diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..2aa028da3 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +manifoldcad.org diff --git a/assets/__vite-browser-external-4ed993c7.js b/assets/__vite-browser-external-4ed993c7.js new file mode 100644 index 000000000..f225f88c7 --- /dev/null +++ b/assets/__vite-browser-external-4ed993c7.js @@ -0,0 +1,2 @@ + +//# sourceMappingURL=__vite-browser-external-4ed993c7.js.map diff --git a/assets/__vite-browser-external-4ed993c7.js.map b/assets/__vite-browser-external-4ed993c7.js.map new file mode 100644 index 000000000..0077b8286 --- /dev/null +++ b/assets/__vite-browser-external-4ed993c7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"__vite-browser-external-4ed993c7.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/__vite-browser-external.js b/assets/__vite-browser-external.js new file mode 100644 index 000000000..5173ed92d --- /dev/null +++ b/assets/__vite-browser-external.js @@ -0,0 +1,2 @@ +const e={};export{e as default}; +//# sourceMappingURL=__vite-browser-external.js.map diff --git a/assets/__vite-browser-external.js.map b/assets/__vite-browser-external.js.map new file mode 100644 index 000000000..28564850a --- /dev/null +++ b/assets/__vite-browser-external.js.map @@ -0,0 +1 @@ +{"version":3,"file":"__vite-browser-external.js","sources":["../../__vite-browser-external"],"sourcesContent":["export default {}"],"names":["__viteBrowserExternal"],"mappings":"AAAA,MAAeA,EAAA,CAAA"} \ No newline at end of file diff --git a/assets/gltf-io.js b/assets/gltf-io.js new file mode 100644 index 000000000..b90f2fef9 --- /dev/null +++ b/assets/gltf-io.js @@ -0,0 +1,21 @@ +class mt{constructor(){this._listeners={}}addEventListener(e,t){const s=this._listeners;return s[e]===void 0&&(s[e]=[]),s[e].indexOf(t)===-1&&s[e].push(t),this}removeEventListener(e,t){if(this._listeners===void 0)return this;const i=this._listeners[e];if(i!==void 0){const n=i.indexOf(t);n!==-1&&i.splice(n,1)}return this}dispatchEvent(e){if(this._listeners===void 0)return this;const s=this._listeners[e.type];if(s!==void 0){const i=s.slice(0);for(let n=0,a=i.length;nt.getParent())}listChildEdges(e){return Array.from(this._parentEdges.get(e)||this._emptySet)}listChildren(e){return this.listChildEdges(e).map(t=>t.getChild())}disconnectParents(e,t){let s=this.listParentEdges(e);return t&&(s=s.filter(i=>t(i.getParent()))),s.forEach(i=>i.dispose()),this}createEdge(e,t,s,i){return this._registerEdge(new fe(e,t,s,i))}_registerEdge(e){this._edges.add(e);const t=e.getParent();this._parentEdges.has(t)||this._parentEdges.set(t,new Set),this._parentEdges.get(t).add(e);const s=e.getChild();return this._childEdges.has(s)||this._childEdges.set(s,new Set),this._childEdges.get(s).add(e),e.addEventListener("dispose",()=>this._removeEdge(e)),e}_removeEdge(e){return this._edges.delete(e),this._parentEdges.get(e.getParent()).delete(e),this._childEdges.get(e.getChild()).delete(e),this}}function we(){return we=Object.assign||function(r){for(var e=1;ei.dispose()),this[le].add(s),t[s]=n}else t[s]=i}return t}isOnGraph(e){return this.graph===e.graph}isDisposed(){return this._disposed}dispose(){this._disposed||(this.graph.listChildEdges(this).forEach(e=>e.dispose()),this.graph.disconnectParents(this),this._disposed=!0,this.dispatchEvent({type:"dispose"}))}detach(){return this.graph.disconnectParents(this),this}swap(e,t){for(const s in this[L]){const i=this[L][s];if(ot(i)){const n=i;n.getChild()===e&&this.setRef(s,t,n.getAttributes())}else if(Te(i)){const a=i.find(c=>c.getChild()===e);if(a){const c=a.getAttributes();this.removeRef(s,e).addRef(s,t,c)}}else if(be(i)){const n=i;for(const a in n){const c=n[a];c.getChild()===e&&this.setRefMap(s,a,t,c.getAttributes())}}}return this}get(e){return this[L][e]}set(e,t){return this[L][e]=t,this.dispatchEvent({type:"change",attribute:e})}getRef(e){const t=this[L][e];return t?t.getChild():null}setRef(e,t,s){if(this[le].has(e))throw new Error(`Cannot overwrite immutable attribute, "${e}".`);const i=this[L][e];if(i&&i.dispose(),!t)return this;const n=this.graph.createEdge(e,this,t,s);return n.addEventListener("dispose",()=>{delete this[L][e],this.dispatchEvent({type:"change",attribute:e})}),this[L][e]=n,this.dispatchEvent({type:"change",attribute:e})}listRefs(e){return this[L][e].map(s=>s.getChild())}addRef(e,t,s){const i=this.graph.createEdge(e,this,t,s),n=this[L][e];return n.push(i),i.addEventListener("dispose",()=>{let a;for(;(a=n.indexOf(i))!==-1;)n.splice(a,1);this.dispatchEvent({type:"change",attribute:e})}),this.dispatchEvent({type:"change",attribute:e})}removeRef(e,t){return this[L][e].filter(n=>n.getChild()===t).forEach(n=>n.dispose()),this}listRefMapKeys(e){return Object.keys(this[L][e])}listRefMapValues(e){return Object.values(this[L][e]).map(t=>t.getChild())}getRefMap(e,t){const s=this[L][e];return s[t]?s[t].getChild():null}setRefMap(e,t,s,i){const n=this[L][e],a=n[t];if(a&&a.dispose(),!s)return this;i=Object.assign(i||{},{key:t});const c=this.graph.createEdge(e,this,s,we({},i,{key:t}));return c.addEventListener("dispose",()=>{delete n[t],this.dispatchEvent({type:"change",attribute:e,key:t})}),n[t]=c,this.dispatchEvent({type:"change",attribute:e,key:t})}dispatchEvent(e){return super.dispatchEvent(we({},e,{target:this})),this.graph.dispatchEvent(we({},e,{target:this,type:`node:${e.type}`})),this}}const $t="v3.8.0",Ge="@glb.bin";var M,ze,$,ct,se;(function(r){r.ACCESSOR="Accessor",r.ANIMATION="Animation",r.ANIMATION_CHANNEL="AnimationChannel",r.ANIMATION_SAMPLER="AnimationSampler",r.BUFFER="Buffer",r.CAMERA="Camera",r.MATERIAL="Material",r.MESH="Mesh",r.PRIMITIVE="Primitive",r.PRIMITIVE_TARGET="PrimitiveTarget",r.NODE="Node",r.ROOT="Root",r.SCENE="Scene",r.SKIN="Skin",r.TEXTURE="Texture",r.TEXTURE_INFO="TextureInfo"})(M||(M={})),function(r){r.INTERLEAVED="interleaved",r.SEPARATE="separate"}(ze||(ze={})),function(r){r.ARRAY_BUFFER="ARRAY_BUFFER",r.ELEMENT_ARRAY_BUFFER="ELEMENT_ARRAY_BUFFER",r.INVERSE_BIND_MATRICES="INVERSE_BIND_MATRICES",r.OTHER="OTHER",r.SPARSE="SPARSE"}($||($={})),function(r){r[r.R=4096]="R",r[r.G=256]="G",r[r.B=16]="B",r[r.A=1]="A"}(ct||(ct={})),function(r){r.GLTF="GLTF",r.GLB="GLB"}(se||(se={}));const $e={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};var Pe,ut=typeof Float32Array<"u"?Float32Array:Array;function rt(r){return Math.hypot(r[0],r[1],r[2])}function wr(r,e,t){var s=e[0],i=e[1],n=e[2],a=t[3]*s+t[7]*i+t[11]*n+t[15];return r[0]=(t[0]*s+t[4]*i+t[8]*n+t[12])/(a=a||1),r[1]=(t[1]*s+t[5]*i+t[9]*n+t[13])/a,r[2]=(t[2]*s+t[6]*i+t[10]*n+t[14])/a,r}function Js(r){const e={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]},t=r.propertyType===M.NODE?[r]:r.listChildren();for(const s of t)s.traverse(i=>{const n=i.getMesh();if(!n)return;const a=Rr(n,i.getWorldMatrix());lt(a.min,e),lt(a.max,e)});return e}Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)}),Pe=new ut(3),ut!=Float32Array&&(Pe[0]=0,Pe[1]=0,Pe[2]=0);function Rr(r,e){const t={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]};for(const s of r.listPrimitives()){const i=s.getAttribute("POSITION");if(!i)continue;let n=[0,0,0],a=[0,0,0];for(let c=0;c"u"){const t=atob(e.split(",")[1]),s=new Uint8Array(t.length);for(let i=0;i=0;return Buffer.from(t,s?"base64":"utf8")}}static encodeText(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):Buffer.from(e)}static decodeText(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Buffer.from(e).toString("utf8")}static concat(e){let t=0;for(const n of e)t+=n.byteLength;const s=new Uint8Array(t);let i=0;for(const n of e)s.set(n,i),i+=n.byteLength;return s}static pad(e,t=0){const s=this.padNumber(e.byteLength);if(s===e.byteLength)return e;const i=new Uint8Array(s);if(i.set(e),t!==0)for(let n=e.byteLength;n>16&255)/255,s[1]=(e>>8&255)/255,s[2]=(255&e)/255,this.convertSRGBToLinear(t,t)}static factorToHex(e){const t=[...e],[s,i,n]=this.convertLinearToSRGB(e,t);return 255*s<<16^255*i<<8^255*n<<0}static convertSRGBToLinear(e,t){const s=e,i=t;for(let n=0;n<3;n++)i[n]=s[n]<.04045?.0773993808*s[n]:Math.pow(.9478672986*s[n]+.0521327014,2.4);return t}static convertLinearToSRGB(e,t){const s=e,i=t;for(let n=0;n<3;n++)i[n]=s[n]<.0031308?12.92*s[n]:1.055*Math.pow(s[n],.41666)-.055;return t}}class Je{match(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10}getSize(e){const t=new DataView(e.buffer,e.byteOffset);return F.decodeText(e.slice(12,16))===Je.PNG_FRIED_CHUNK_NAME?[t.getUint32(32,!1),t.getUint32(36,!1)]:[t.getUint32(16,!1),t.getUint32(20,!1)]}getChannels(e){return 4}}Je.PNG_FRIED_CHUNK_NAME="CgBI";class ne{static registerFormat(e,t){this.impls[e]=t}static getMimeType(e){for(const t in this.impls)if(this.impls[t].match(e))return t;return null}static getSize(e,t){return this.impls[t]?this.impls[t].getSize(e):null}static getChannels(e,t){return this.impls[t]?this.impls[t].getChannels(e):null}static getVRAMByteLength(e,t){if(!this.impls[t])return null;if(this.impls[t].getVRAMByteLength)return this.impls[t].getVRAMByteLength(e);let s=0;const i=this.getSize(e,t);if(!i)return null;for(;i[0]>1||i[1]>1;)s+=i[0]*i[1]*4,i[0]=Math.max(Math.floor(i[0]/2),1),i[1]=Math.max(Math.floor(i[1]/2),1);return s+=4,s}static mimeTypeToExtension(e){return e==="image/jpeg"?"jpg":e.split("/").pop()}static extensionToMimeType(e){return e==="jpg"?"image/jpeg":e?`image/${e}`:""}}function Ir(r,e){if(e>r.byteLength)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(r.getUint8(e)!==255)throw new TypeError("Invalid JPG, marker table corrupted");return r}ne.impls={"image/jpeg":new class{match(r){return r.length>=3&&r[0]===255&&r[1]===216&&r[2]===255}getSize(r){let e,t,s=new DataView(r.buffer,r.byteOffset+4);for(;s.byteLength;){if(e=s.getUint16(0,!1),Ir(s,e),t=s.getUint8(e+1),t===192||t===193||t===194)return[s.getUint16(e+7,!1),s.getUint16(e+5,!1)];s=new DataView(r.buffer,s.byteOffset+e+2)}throw new TypeError("Invalid JPG, no size found")}getChannels(r){return 3}},"image/png":new Je};class ge{static basename(e){const t=e.split(/[\\/]/).pop();return t.substring(0,t.lastIndexOf("."))}static extension(e){if(e.startsWith("data:image/")){const t=e.match(/data:(image\/\w+)/)[1];return ne.mimeTypeToExtension(t)}return e.startsWith("data:model/gltf+json")?"gltf":e.startsWith("data:model/gltf-binary")?"glb":e.startsWith("data:application/")?"bin":e.split(/[\\/]/).pop().split(/[.]/).pop()}}function At(r){return Object.prototype.toString.call(r)==="[object Object]"}function re(r){if(At(r)===!1)return!1;const e=r.constructor;if(e===void 0)return!0;const t=e.prototype;return At(t)!==!1&&Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")!==!1}var st,ht;(function(r){r[r.SILENT=4]="SILENT",r[r.ERROR=3]="ERROR",r[r.WARN=2]="WARN",r[r.INFO=1]="INFO",r[r.DEBUG=0]="DEBUG"})(ht||(ht={}));let ie=class Ae{constructor(e){this.verbosity=void 0,this.verbosity=e}debug(e){this.verbosity<=Ae.Verbosity.DEBUG&&console.debug(e)}info(e){this.verbosity<=Ae.Verbosity.INFO&&console.info(e)}warn(e){this.verbosity<=Ae.Verbosity.WARN&&console.warn(e)}error(e){this.verbosity<=Ae.Verbosity.ERROR&&console.error(e)}};function xr(r,e,t){var s=e[0],i=e[1],n=e[2],a=e[3],c=e[4],o=e[5],g=e[6],m=e[7],T=e[8],p=e[9],y=e[10],A=e[11],I=e[12],l=e[13],b=e[14],u=e[15],h=t[0],f=t[1],d=t[2],E=t[3];return r[0]=h*s+f*c+d*T+E*I,r[1]=h*i+f*o+d*p+E*l,r[2]=h*n+f*g+d*y+E*b,r[3]=h*a+f*m+d*A+E*u,r[4]=(h=t[4])*s+(f=t[5])*c+(d=t[6])*T+(E=t[7])*I,r[5]=h*i+f*o+d*p+E*l,r[6]=h*n+f*g+d*y+E*b,r[7]=h*a+f*m+d*A+E*u,r[8]=(h=t[8])*s+(f=t[9])*c+(d=t[10])*T+(E=t[11])*I,r[9]=h*i+f*o+d*p+E*l,r[10]=h*n+f*g+d*y+E*b,r[11]=h*a+f*m+d*A+E*u,r[12]=(h=t[12])*s+(f=t[13])*c+(d=t[14])*T+(E=t[15])*I,r[13]=h*i+f*o+d*p+E*l,r[14]=h*n+f*g+d*y+E*b,r[15]=h*a+f*m+d*A+E*u,r}st=ie,ie.Verbosity=ht,ie.DEFAULT_INSTANCE=new st(st.Verbosity.INFO);class B{static identity(e){return e}static eq(e,t,s=1e-5){if(e.length!==t.length)return!1;for(let i=0;is)return!1;return!0}static decodeNormalizedInt(e,t){switch(t){case 5126:return e;case 5123:return e/65535;case 5121:return e/255;case 5122:return Math.max(e/32767,-1);case 5120:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}static denormalize(e,t){return B.decodeNormalizedInt(e,t)}static encodeNormalizedInt(e,t){switch(t){case 5126:return e;case 5123:return Math.round(65535*e);case 5121:return Math.round(255*e);case 5122:return Math.round(32767*e);case 5120:return Math.round(127*e);default:throw new Error("Invalid component type.")}}static normalize(e,t){return B.encodeNormalizedInt(e,t)}static decompose(e,t,s,i){let n=rt([e[0],e[1],e[2]]);const a=rt([e[4],e[5],e[6]]),c=rt([e[8],e[9],e[10]]);var o,g,m,T,p,y,A,I,l,b,u,h,f,d,E,x,N;((g=(o=e)[0])*(A=o[5])-(m=o[1])*(y=o[4]))*((h=o[10])*(N=o[15])-(f=o[11])*(x=o[14]))-(g*(I=o[6])-(T=o[2])*y)*((u=o[9])*N-f*(E=o[13]))+(g*(l=o[7])-(p=o[3])*y)*(u*x-h*E)+(m*I-T*A)*((b=o[8])*N-f*(d=o[12]))-(m*l-p*A)*(b*x-h*d)+(T*l-p*I)*(b*E-u*d)<0&&(n=-n),t[0]=e[12],t[1]=e[13],t[2]=e[14];const v=e.slice(),w=1/n,R=1/a,O=1/c;v[0]*=w,v[1]*=w,v[2]*=w,v[4]*=R,v[5]*=R,v[6]*=R,v[8]*=O,v[9]*=O,v[10]*=O,function(S,_){var V=new ut(3);(function(tt,J){var pr=J[4],dr=J[5],mr=J[6],yr=J[8],Er=J[9],Tr=J[10];tt[0]=Math.hypot(J[0],J[1],J[2]),tt[1]=Math.hypot(pr,dr,mr),tt[2]=Math.hypot(yr,Er,Tr)})(V,_);var P=1/V[0],j=1/V[1],D=1/V[2],k=_[0]*P,Z=_[1]*j,ae=_[2]*D,q=_[4]*P,Q=_[5]*j,ee=_[6]*D,Oe=_[8]*P,Ve=_[9]*j,oe=_[10]*D,vt=k+Q+oe,U=0;vt>0?(U=2*Math.sqrt(vt+1),S[3]=.25*U,S[0]=(ee-Ve)/U,S[1]=(Oe-ae)/U,S[2]=(Z-q)/U):k>Q&&k>oe?(U=2*Math.sqrt(1+k-Q-oe),S[3]=(ee-Ve)/U,S[0]=.25*U,S[1]=(Z+q)/U,S[2]=(Oe+ae)/U):Q>oe?(U=2*Math.sqrt(1+Q-k-oe),S[3]=(Oe-ae)/U,S[0]=(Z+q)/U,S[1]=.25*U,S[2]=(ee+Ve)/U):(U=2*Math.sqrt(1+oe-k-Q),S[3]=(Z-q)/U,S[0]=(Oe+ae)/U,S[1]=(ee+Ve)/U,S[2]=.25*U)}(s,v),i[0]=n,i[1]=a,i[2]=c}static compose(e,t,s,i){const n=i,a=t[0],c=t[1],o=t[2],g=t[3],m=a+a,T=c+c,p=o+o,y=a*m,A=a*T,I=a*p,l=c*T,b=c*p,u=o*p,h=g*m,f=g*T,d=g*p,E=s[0],x=s[1],N=s[2];return n[0]=(1-(l+u))*E,n[1]=(A+d)*E,n[2]=(I-f)*E,n[3]=0,n[4]=(A-d)*x,n[5]=(1-(y+u))*x,n[6]=(b+h)*x,n[7]=0,n[8]=(I+f)*N,n[9]=(b-h)*N,n[10]=(1-(y+l))*N,n[11]=0,n[12]=e[0],n[13]=e[1],n[14]=e[2],n[15]=1,n}}function Mr(r,e){if(!!r!=!!e)return!1;const t=r.getChild(),s=e.getChild();return t===s||t.equals(s)}function _r(r,e){if(!!r!=!!e||r.length!==e.length)return!1;for(let t=0;tr,Or=new Set;class Et extends yt{constructor(e,t=""){super(e),this[L].name=t,this.init(),this.dispatchEvent({type:"create"})}getGraph(){return this.graph}getDefaults(){return Object.assign(super.getDefaults(),{name:"",extras:{}})}set(e,t){return Array.isArray(t)&&(t=t.slice()),super.set(e,t)}getName(){return this.get("name")}setName(e){return this.set("name",e)}getExtras(){return this.get("extras")}setExtras(e){return this.set("extras",e)}clone(){return new this.constructor(this.graph).copy(this,K)}copy(e,t=K){for(const s in this[L]){const i=this[L][s];if(i instanceof fe)this[le].has(s)||i.dispose();else if(Te(i))for(const n of i)n.dispose();else if(be(i))for(const n in i)i[n].dispose()}for(const s in e[L]){const i=this[L][s],n=e[L][s];if(n instanceof fe)this[le].has(s)?i.getChild().copy(t(n.getChild()),t):this.setRef(s,t(n.getChild()),n.getAttributes());else if(Te(n))for(const a of n)this.addRef(s,t(a.getChild()),a.getAttributes());else if(be(n))for(const a in n){const c=n[a];this.setRefMap(s,a,t(c.getChild()),c.getAttributes())}else this[L][s]=re(n)?JSON.parse(JSON.stringify(n)):Array.isArray(n)||n instanceof ArrayBuffer||ArrayBuffer.isView(n)?n.slice():n}return this}equals(e,t=Or){if(this===e)return!0;if(this.propertyType!==e.propertyType)return!1;for(const s in this[L]){if(t.has(s))continue;const i=this[L][s],n=e[L][s];if(ot(i)||ot(n)){if(!Mr(i,n))return!1}else if(Te(i)||Te(n)){if(!_r(i,n))return!1}else if(be(i)||be(n)){if(!Nr(i,n))return!1}else if(re(i)||re(n)){if(!Wt(i,n))return!1}else if(qe(i)||qe(n)){if(!qt(i,n))return!1}else if(i!==n)return!1}return!0}detach(){return this.graph.disconnectParents(this,e=>e.propertyType!=="Root"),this}listParents(){return this.graph.listParents(this)}}let z=class extends Et{getDefaults(){return Object.assign(super.getDefaults(),{extensions:{}})}getExtension(e){return this.getRefMap("extensions",e)}setExtension(e,t){return t&&t.t(this),this.setRefMap("extensions",e,t)}listExtensions(){return this.listRefMapValues("extensions")}};class C extends z{constructor(...e){super(...e),this.i=B.identity,this.o=B.identity}init(){this.propertyType=M.ACCESSOR}getDefaults(){return Object.assign(super.getDefaults(),{array:null,type:C.Type.SCALAR,componentType:C.ComponentType.FLOAT,normalized:!1,sparse:!1,buffer:null})}copy(e,t=K){return super.copy(e,t),this.i=e.i,this.o=e.o,this}static getElementSize(e){switch(e){case C.Type.SCALAR:return 1;case C.Type.VEC2:return 2;case C.Type.VEC3:return 3;case C.Type.VEC4:case C.Type.MAT2:return 4;case C.Type.MAT3:return 9;case C.Type.MAT4:return 16;default:throw new Error("Unexpected type: "+e)}}static getComponentSize(e){switch(e){case C.ComponentType.BYTE:case C.ComponentType.UNSIGNED_BYTE:return 1;case C.ComponentType.SHORT:case C.ComponentType.UNSIGNED_SHORT:return 2;case C.ComponentType.UNSIGNED_INT:case C.ComponentType.FLOAT:return 4;default:throw new Error("Unexpected component type: "+e)}}getMinNormalized(e){const t=this.getElementSize();this.getMin(e);for(let s=0;sB.decodeNormalizedInt(t,this.get("componentType")),this.i=t=>B.encodeNormalizedInt(t,this.get("componentType"))):(this.o=B.identity,this.i=B.identity),this}getScalar(e){const t=this.getElementSize();return this.o(this.get("array")[e*t])}setScalar(e,t){return this.get("array")[e*this.getElementSize()]=this.i(t),this}getElement(e,t){const s=this.getElementSize(),i=this.get("array");for(let n=0;ne.u=null),this}removeChild(e){return this.removeRef("children",e)}listChildren(){return this.listRefs("children")}getParent(){return this.u?this.u:this.listParents().find(e=>e.propertyType===M.SCENE)||null}getParentNode(){return this.u}getMesh(){return this.getRef("mesh")}setMesh(e){return this.setRef("mesh",e)}getCamera(){return this.getRef("camera")}setCamera(e){return this.setRef("camera",e)}getSkin(){return this.getRef("skin")}setSkin(e){return this.setRef("skin",e)}getWeights(){return this.get("weights")}setWeights(e){return this.set("weights",e)}traverse(e){e(this);for(const t of this.listChildren())t.traverse(e);return this}},de=class Qt extends z{init(){this.propertyType=M.PRIMITIVE}getDefaults(){return Object.assign(super.getDefaults(),{mode:Qt.Mode.TRIANGLES,material:null,indices:null,attributes:{},targets:[]})}getIndices(){return this.getRef("indices")}setIndices(e){return this.setRef("indices",e,{usage:$.ELEMENT_ARRAY_BUFFER})}getAttribute(e){return this.getRefMap("attributes",e)}setAttribute(e,t){return this.setRefMap("attributes",e,t,{usage:$.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}getMaterial(){return this.getRef("material")}setMaterial(e){return this.setRef("material",e)}getMode(){return this.get("mode")}setMode(e){return this.set("mode",e)}listTargets(){return this.listRefs("targets")}addTarget(e){return this.addRef("targets",e)}removeTarget(e){return this.removeRef("targets",e)}};de.Mode={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};let er=class extends Et{init(){this.propertyType=M.PRIMITIVE_TARGET}getDefaults(){return Object.assign(super.getDefaults(),{attributes:{}})}getAttribute(e){return this.getRefMap("attributes",e)}setAttribute(e,t){return this.setRefMap("attributes",e,t,{usage:$.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}};function G(){return G=Object.assign?Object.assign.bind():function(r){for(var e=1;ee.h.delete(this)),this}removeChild(e){return this.removeRef("children",e)}listChildren(){return this.listRefs("children")}traverse(e){for(const t of this.listChildren())t.traverse(e);return this}};class tr extends z{init(){this.propertyType=M.SKIN}getDefaults(){return Object.assign(super.getDefaults(),{skeleton:null,inverseBindMatrices:null,joints:[]})}getSkeleton(){return this.getRef("skeleton")}setSkeleton(e){return this.setRef("skeleton",e)}getInverseBindMatrices(){return this.getRef("inverseBindMatrices")}setInverseBindMatrices(e){return this.setRef("inverseBindMatrices",e,{usage:$.INVERSE_BIND_MATRICES})}addJoint(e){return this.addRef("joints",e)}removeJoint(e){return this.removeRef("joints",e)}listJoints(){return this.listRefs("joints")}}let _e=class extends z{init(){this.propertyType=M.TEXTURE}getDefaults(){return Object.assign(super.getDefaults(),{image:null,mimeType:"",uri:""})}getMimeType(){return this.get("mimeType")||ne.extensionToMimeType(ge.extension(this.get("uri")))}setMimeType(e){return this.set("mimeType",e)}getURI(){return this.get("uri")}setURI(e){this.set("uri",e);const t=ne.extensionToMimeType(ge.extension(e));return t&&this.set("mimeType",t),this}getImage(){return this.get("image")}setImage(e){return this.set("image",F.assertView(e))}getSize(){const e=this.get("image");return e?ne.getSize(e,this.getMimeType()):null}},rr=class extends z{init(){this.propertyType=M.ROOT}getDefaults(){return Object.assign(super.getDefaults(),{asset:{generator:`glTF-Transform ${$t}`,version:"2.0"},defaultScene:null,accessors:[],animations:[],buffers:[],cameras:[],materials:[],meshes:[],nodes:[],scenes:[],skins:[],textures:[]})}constructor(e){super(e),this.l=new Set,e.addEventListener("node:create",t=>{this.g(t.target)})}clone(){throw new Error("Root cannot be cloned.")}copy(e,t=K){if(t===K)throw new Error("Root cannot be copied.");this.set("asset",G({},e.get("asset"))),this.setName(e.getName()),this.setExtras(G({},e.getExtras())),this.setDefaultScene(e.getDefaultScene()?t(e.getDefaultScene()):null);for(const s of e.listRefMapKeys("extensions")){const i=e.getExtension(s);this.setExtension(s,t(i))}return this}g(e){return e instanceof Ze?this.addRef("scenes",e):e instanceof Zt?this.addRef("nodes",e):e instanceof Se?this.addRef("cameras",e):e instanceof tr?this.addRef("skins",e):e instanceof Kt?this.addRef("meshes",e):e instanceof pe?this.addRef("materials",e):e instanceof _e?this.addRef("textures",e):e instanceof Yt?this.addRef("animations",e):e instanceof C?this.addRef("accessors",e):e instanceof Ht&&this.addRef("buffers",e),this}getAsset(){return this.get("asset")}listExtensionsUsed(){return Array.from(this.l)}listExtensionsRequired(){return this.listExtensionsUsed().filter(e=>e.isRequired())}p(e){return this.l.add(e),this}m(e){return this.l.delete(e),this}listScenes(){return this.listRefs("scenes")}setDefaultScene(e){return this.setRef("defaultScene",e)}getDefaultScene(){return this.getRef("defaultScene")}listNodes(){return this.listRefs("nodes")}listCameras(){return this.listRefs("cameras")}listSkins(){return this.listRefs("skins")}listMeshes(){return this.listRefs("meshes")}listMaterials(){return this.listRefs("materials")}listTextures(){return this.listRefs("textures")}listAnimations(){return this.listRefs("animations")}listAccessors(){return this.listRefs("accessors")}listBuffers(){return this.listRefs("buffers")}},Qe=class ke{static fromGraph(e){return ke.v.get(e)||null}constructor(){this.T=new br,this.S=new rr(this.T),this.M=ie.DEFAULT_INSTANCE,ke.v.set(this.T,this)}getRoot(){return this.S}getGraph(){return this.T}getLogger(){return this.M}setLogger(e){return this.M=e,this}clone(){return new ke().setLogger(this.M).merge(this)}merge(e){for(const n of e.getRoot().listExtensionsUsed()){const a=this.createExtension(n.constructor);n.isRequired()&&a.setRequired(!0)}const t=new Set,s=new Map;t.add(e.S),s.set(e.S,this.S);for(const n of e.T.listEdges())for(const a of[n.getParent(),n.getChild()]){if(t.has(a))continue;let c;c=a.propertyType===M.TEXTURE_INFO?a:new a.constructor(this.T),s.set(a,c),t.add(a)}const i=n=>{const a=s.get(n);if(!a)throw new Error("Could resolve property.");return a};for(const n of t){const a=s.get(n);if(!a)throw new Error("Could resolve property.");a.propertyType!==M.TEXTURE_INFO&&a.copy(n,i)}return this}async transform(...e){const t=e.map(s=>s.name);for(const s of e)await s(this,{stack:t});return this}createExtension(e){const t=e.EXTENSION_NAME;return this.getRoot().listExtensionsUsed().find(s=>s.extensionName===t)||new e(this)}createScene(e=""){return new Ze(this.T,e)}createNode(e=""){return new Zt(this.T,e)}createCamera(e=""){return new Se(this.T,e)}createSkin(e=""){return new tr(this.T,e)}createMesh(e=""){return new Kt(this.T,e)}createPrimitive(){return new de(this.T)}createPrimitiveTarget(e=""){return new er(this.T,e)}createMaterial(e=""){return new pe(this.T,e)}createTexture(e=""){return new _e(this.T,e)}createAnimation(e=""){return new Yt(this.T,e)}createAnimationChannel(e=""){return new Ke(this.T,e)}createAnimationSampler(e=""){return new Ne(this.T,e)}createAccessor(e="",t=null){return t||(t=this.getRoot().listBuffers()[0]),new C(this.T,e).setBuffer(t)}createBuffer(e=""){return new Ht(this.T,e)}};Qe.v=new WeakMap;class sr{constructor(e){this.extensionName="",this.prereadTypes=[],this.prewriteTypes=[],this.readDependencies=[],this.writeDependencies=[],this.document=void 0,this.required=!1,this.properties=new Set,this.I=void 0,this.document=e,e.getRoot().p(this),this.I=s=>{const i=s,n=i.target;n instanceof Ce&&n.extensionName===this.extensionName&&(i.type==="node:create"&&this.N(n),i.type==="node:dispose"&&this.O(n))};const t=e.getGraph();t.addEventListener("node:create",this.I),t.addEventListener("node:dispose",this.I)}dispose(){this.document.getRoot().m(this);const e=this.document.getGraph();e.removeEventListener("node:create",this.I),e.removeEventListener("node:dispose",this.I);for(const t of this.properties)t.dispose()}static register(){}isRequired(){return this.required}setRequired(e){return this.required=e,this}listProperties(){return Array.from(this.properties)}N(e){return this.properties.add(e),this}O(e){return this.properties.delete(e),this}install(e,t){return this}preread(e,t){return this}prewrite(e,t){return this}}sr.EXTENSION_NAME=void 0;let Pr=class{constructor(e){this.jsonDoc=void 0,this.buffers=[],this.bufferViews=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.textureInfos=new Map,this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[],this.jsonDoc=e}setTextureInfo(e,t){this.textureInfos.set(e,t),t.texCoord!==void 0&&e.setTexCoord(t.texCoord),t.extras!==void 0&&e.setExtras(t.extras);const s=this.jsonDoc.json.textures[t.index];if(s.sampler===void 0)return;const i=this.jsonDoc.json.samplers[s.sampler];i.magFilter!==void 0&&e.setMagFilter(i.magFilter),i.minFilter!==void 0&&e.setMinFilter(i.minFilter),i.wrapS!==void 0&&e.setWrapS(i.wrapS),i.wrapT!==void 0&&e.setWrapT(i.wrapT)}};const It={logger:ie.DEFAULT_INSTANCE,extensions:[],dependencies:{}};let Fr=class{static read(e,t=It){const s=G({},It,t),{json:i}=e,n=new Qe().setLogger(s.logger);this.validate(e,s);const a=new Pr(e),c=i.asset,o=n.getRoot().getAsset();c.copyright&&(o.copyright=c.copyright),c.extras&&(o.extras=c.extras),i.extras!==void 0&&n.getRoot().setExtras(G({},i.extras));const g=i.extensionsUsed||[],m=i.extensionsRequired||[];for(const u of s.extensions)if(g.includes(u.EXTENSION_NAME)){const h=n.createExtension(u).setRequired(m.includes(u.EXTENSION_NAME));for(const f of h.readDependencies)h.install(f,s.dependencies[f])}const T=i.buffers||[];n.getRoot().listExtensionsUsed().filter(u=>u.prereadTypes.includes(M.BUFFER)).forEach(u=>u.preread(a,M.BUFFER)),a.buffers=T.map(u=>{const h=n.createBuffer(u.name);return u.extras&&h.setExtras(u.extras),u.uri&&u.uri.indexOf("__")!==0&&h.setURI(u.uri),h}),a.bufferViewBuffers=(i.bufferViews||[]).map((u,h)=>{if(!a.bufferViews[h]){const f=e.json.buffers[u.buffer];a.bufferViews[h]=F.toView(f.uri?e.resources[f.uri]:e.resources[Ge],u.byteOffset||0,u.byteLength)}return a.buffers[u.buffer]});const p=i.accessors||[];a.accessors=p.map(u=>{const h=n.createAccessor(u.name,a.bufferViewBuffers[u.bufferView]).setType(u.type);return u.extras&&h.setExtras(u.extras),u.normalized!==void 0&&h.setNormalized(u.normalized),u.bufferView===void 0||h.setArray(Be(u,a)),h});const y=i.images||[],A=i.textures||[];n.getRoot().listExtensionsUsed().filter(u=>u.prereadTypes.includes(M.TEXTURE)).forEach(u=>u.preread(a,M.TEXTURE)),a.textures=y.map(u=>{const h=n.createTexture(u.name);if(u.extras&&h.setExtras(u.extras),u.bufferView!==void 0){const f=i.bufferViews[u.bufferView],d=e.json.buffers[f.buffer],E=f.byteOffset||0,x=(d.uri?e.resources[d.uri]:e.resources[Ge]).slice(E,E+f.byteLength);h.setImage(x)}else u.uri!==void 0&&(h.setImage(e.resources[u.uri]),u.uri.indexOf("__")!==0&&h.setURI(u.uri));if(u.mimeType!==void 0)h.setMimeType(u.mimeType);else if(u.uri){const f=ge.extension(u.uri);h.setMimeType(ne.extensionToMimeType(f))}return h}),a.materials=(i.materials||[]).map(u=>{const h=n.createMaterial(u.name);u.extras&&h.setExtras(u.extras),u.alphaMode!==void 0&&h.setAlphaMode(u.alphaMode),u.alphaCutoff!==void 0&&h.setAlphaCutoff(u.alphaCutoff),u.doubleSided!==void 0&&h.setDoubleSided(u.doubleSided);const f=u.pbrMetallicRoughness||{};if(f.baseColorFactor!==void 0&&h.setBaseColorFactor(f.baseColorFactor),u.emissiveFactor!==void 0&&h.setEmissiveFactor(u.emissiveFactor),f.metallicFactor!==void 0&&h.setMetallicFactor(f.metallicFactor),f.roughnessFactor!==void 0&&h.setRoughnessFactor(f.roughnessFactor),f.baseColorTexture!==void 0){const d=f.baseColorTexture;h.setBaseColorTexture(a.textures[A[d.index].source]),a.setTextureInfo(h.getBaseColorTextureInfo(),d)}if(u.emissiveTexture!==void 0){const d=u.emissiveTexture;h.setEmissiveTexture(a.textures[A[d.index].source]),a.setTextureInfo(h.getEmissiveTextureInfo(),d)}if(u.normalTexture!==void 0){const d=u.normalTexture;h.setNormalTexture(a.textures[A[d.index].source]),a.setTextureInfo(h.getNormalTextureInfo(),d),u.normalTexture.scale!==void 0&&h.setNormalScale(u.normalTexture.scale)}if(u.occlusionTexture!==void 0){const d=u.occlusionTexture;h.setOcclusionTexture(a.textures[A[d.index].source]),a.setTextureInfo(h.getOcclusionTextureInfo(),d),u.occlusionTexture.strength!==void 0&&h.setOcclusionStrength(u.occlusionTexture.strength)}if(f.metallicRoughnessTexture!==void 0){const d=f.metallicRoughnessTexture;h.setMetallicRoughnessTexture(a.textures[A[d.index].source]),a.setTextureInfo(h.getMetallicRoughnessTextureInfo(),d)}return h});const I=i.meshes||[];n.getRoot().listExtensionsUsed().filter(u=>u.prereadTypes.includes(M.PRIMITIVE)).forEach(u=>u.preread(a,M.PRIMITIVE)),a.meshes=I.map(u=>{const h=n.createMesh(u.name);return u.extras&&h.setExtras(u.extras),u.weights!==void 0&&h.setWeights(u.weights),(u.primitives||[]).forEach(f=>{const d=n.createPrimitive();f.extras&&d.setExtras(f.extras),f.material!==void 0&&d.setMaterial(a.materials[f.material]),f.mode!==void 0&&d.setMode(f.mode);for(const[x,N]of Object.entries(f.attributes||{}))d.setAttribute(x,a.accessors[N]);f.indices!==void 0&&d.setIndices(a.accessors[f.indices]);const E=u.extras&&u.extras.targetNames||[];(f.targets||[]).forEach((x,N)=>{const v=E[N]||N.toString(),w=n.createPrimitiveTarget(v);for(const[R,O]of Object.entries(x))w.setAttribute(R,a.accessors[O]);d.addTarget(w)}),h.addPrimitive(d)}),h}),a.cameras=(i.cameras||[]).map(u=>{const h=n.createCamera(u.name).setType(u.type);if(u.extras&&h.setExtras(u.extras),u.type===Se.Type.PERSPECTIVE){const f=u.perspective;h.setYFov(f.yfov),h.setZNear(f.znear),f.zfar!==void 0&&h.setZFar(f.zfar),f.aspectRatio!==void 0&&h.setAspectRatio(f.aspectRatio)}else{const f=u.orthographic;h.setZNear(f.znear).setZFar(f.zfar).setXMag(f.xmag).setYMag(f.ymag)}return h});const l=i.nodes||[];n.getRoot().listExtensionsUsed().filter(u=>u.prereadTypes.includes(M.NODE)).forEach(u=>u.preread(a,M.NODE)),a.nodes=l.map(u=>{const h=n.createNode(u.name);if(u.extras&&h.setExtras(u.extras),u.translation!==void 0&&h.setTranslation(u.translation),u.rotation!==void 0&&h.setRotation(u.rotation),u.scale!==void 0&&h.setScale(u.scale),u.matrix!==void 0){const f=[0,0,0],d=[0,0,0,1],E=[1,1,1];B.decompose(u.matrix,f,d,E),h.setTranslation(f),h.setRotation(d),h.setScale(E)}return u.weights!==void 0&&h.setWeights(u.weights),h}),a.skins=(i.skins||[]).map(u=>{const h=n.createSkin(u.name);u.extras&&h.setExtras(u.extras),u.inverseBindMatrices!==void 0&&h.setInverseBindMatrices(a.accessors[u.inverseBindMatrices]),u.skeleton!==void 0&&h.setSkeleton(a.nodes[u.skeleton]);for(const f of u.joints)h.addJoint(a.nodes[f]);return h}),l.map((u,h)=>{const f=a.nodes[h];(u.children||[]).forEach(d=>f.addChild(a.nodes[d])),u.mesh!==void 0&&f.setMesh(a.meshes[u.mesh]),u.camera!==void 0&&f.setCamera(a.cameras[u.camera]),u.skin!==void 0&&f.setSkin(a.skins[u.skin])}),a.animations=(i.animations||[]).map(u=>{const h=n.createAnimation(u.name);u.extras&&h.setExtras(u.extras);const f=(u.samplers||[]).map(d=>{const E=n.createAnimationSampler().setInput(a.accessors[d.input]).setOutput(a.accessors[d.output]).setInterpolation(d.interpolation||Ne.Interpolation.LINEAR);return d.extras&&E.setExtras(d.extras),h.addSampler(E),E});return(u.channels||[]).forEach(d=>{const E=n.createAnimationChannel().setSampler(f[d.sampler]).setTargetPath(d.target.path);d.target.node!==void 0&&E.setTargetNode(a.nodes[d.target.node]),d.extras&&E.setExtras(d.extras),h.addChannel(E)}),h});const b=i.scenes||[];return n.getRoot().listExtensionsUsed().filter(u=>u.prereadTypes.includes(M.SCENE)).forEach(u=>u.preread(a,M.SCENE)),a.scenes=b.map(u=>{const h=n.createScene(u.name);return u.extras&&h.setExtras(u.extras),(u.nodes||[]).map(f=>a.nodes[f]).forEach(f=>h.addChild(f)),h}),i.scene!==void 0&&n.getRoot().setDefaultScene(a.scenes[i.scene]),n.getRoot().listExtensionsUsed().forEach(u=>u.read(a)),p.forEach((u,h)=>{const f=a.accessors[h],d=!!u.sparse,E=!u.bufferView&&!f.getArray();(d||E)&&f.setSparse(!0).setArray(function(x,N){const v=$e[x.componentType],w=C.getElementSize(x.type);let R;R=x.bufferView!==void 0?Be(x,N):new v(x.count*w);const O=x.sparse;if(!O)return R;const S=O.count,_=G({},x,O.indices,{count:S,type:"SCALAR"}),V=G({},x,O.values,{count:S}),P=Be(_,N),j=Be(V,N);for(let D=0;D<_.count;D++)for(let k=0;kn.EXTENSION_NAME===i))throw new Error(`Missing required extension, "${i}".`)}if(s.extensionsUsed)for(const i of s.extensionsUsed)t.extensions.find(n=>n.EXTENSION_NAME===i)||t.logger.warn(`Missing optional extension, "${i}".`)}};function Be(r,e){const t=e.bufferViews[r.bufferView],s=e.jsonDoc.json.bufferViews[r.bufferView],i=$e[r.componentType],n=C.getElementSize(r.type),a=i.BYTES_PER_ELEMENT;if(s.byteStride!==void 0&&s.byteStride!==n*a)return function(o,g){const m=g.bufferViews[o.bufferView],T=g.jsonDoc.json.bufferViews[o.bufferView],p=$e[o.componentType],y=C.getElementSize(o.type),A=p.BYTES_PER_ELEMENT,I=o.byteOffset||0,l=new p(o.count*y),b=new DataView(m.buffer,m.byteOffset,m.byteLength),u=T.byteStride;for(let h=0;h1,()=>s.basename||"buffer"),this.imageURIGenerator=new xt(a>1,c=>function(o,g){const m=o.getGraph().listParentEdges(g).find(T=>T.getParent()!==o.getRoot());return m?m.getName().replace(/texture$/i,""):""}(e,c)||s.basename||"texture"),this.logger=e.getLogger()}createTextureInfoDef(e,t){const s={magFilter:t.getMagFilter()||void 0,minFilter:t.getMinFilter()||void 0,wrapS:t.getWrapS(),wrapT:t.getWrapT()},i=JSON.stringify(s);this.samplerDefIndexMap.has(i)||(this.samplerDefIndexMap.set(i,this.jsonDoc.json.samplers.length),this.jsonDoc.json.samplers.push(s));const n={source:this.imageIndexMap.get(e),sampler:this.samplerDefIndexMap.get(i)},a=JSON.stringify(n);this.textureDefIndexMap.has(a)||(this.textureDefIndexMap.set(a,this.jsonDoc.json.textures.length),this.jsonDoc.json.textures.push(n));const c={index:this.textureDefIndexMap.get(a)};return t.getTexCoord()!==0&&(c.texCoord=t.getTexCoord()),Object.keys(t.getExtras()).length>0&&(c.extras=t.getExtras()),this.textureInfoDefMap.set(t,c),c}createPropertyDef(e){const t={};return e.getName()&&(t.name=e.getName()),Object.keys(e.getExtras()).length>0&&(t.extras=e.getExtras()),t}createAccessorDef(e){const t=this.createPropertyDef(e);return t.type=e.getType(),t.componentType=e.getComponentType(),t.count=e.getCount(),this.C.getGraph().listParentEdges(e).some(s=>s.getName()==="attributes"&&s.getAttributes().key==="POSITION"||s.getName()==="input")&&(t.max=e.getMax([]).map(Math.fround),t.min=e.getMin([]).map(Math.fround)),e.getNormalized()&&(t.normalized=e.getNormalized()),t}createImageData(e,t,s){if(this.options.format===se.GLB)this.imageBufferViews.push(t),e.bufferView=this.jsonDoc.json.bufferViews.length,this.jsonDoc.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:t.byteLength});else{const i=ne.mimeTypeToExtension(s.getMimeType());e.uri=this.imageURIGenerator.createURI(s,i),this.jsonDoc.resources[e.uri]=t}}getAccessorUsage(e){const t=this.F.get(e);if(t)return t;if(e.getSparse())return $.SPARSE;for(const s of this.C.getGraph().listParentEdges(e)){const{usage:i}=s.getAttributes();if(i)return i;s.getParent().propertyType!==M.ROOT&&this.logger.warn(`Missing attribute ".usage" on edge, "${s.getName()}".`)}return $.OTHER}addAccessorToUsageGroup(e,t){const s=this.F.get(e);if(s&&s!==t)throw new Error(`Accessor with usage "${s}" cannot be reused as "${t}".`);return this.F.set(e,t),this}listAccessorUsageGroups(){const e={};for(const[t,s]of Array.from(this.F.entries()))e[s]=e[s]||[],e[s].push(t);return e}}te.BufferViewTarget=Ie,te.BufferViewUsage=$,te.USAGE_TO_TARGET={[$.ARRAY_BUFFER]:Ie.ARRAY_BUFFER,[$.ELEMENT_ARRAY_BUFFER]:Ie.ELEMENT_ARRAY_BUFFER};let xt=class{constructor(e,t){this.multiple=void 0,this.basename=void 0,this.counter={},this.multiple=e,this.basename=t}createURI(e,t){if(e.getURI())return e.getURI();if(this.multiple){const s=this.basename(e);return this.counter[s]=this.counter[s]||1,`${s}_${this.counter[s]++}.${t}`}return`${this.basename(e)}.${t}`}};const{BufferViewUsage:Ue}=te,{UNSIGNED_INT:Lr,UNSIGNED_SHORT:jr,UNSIGNED_BYTE:Br}=C.ComponentType;let Ur=class{static write(e,t){const s=e.getRoot(),i={asset:G({generator:`glTF-Transform ${$t}`},s.getAsset()),extras:G({},s.getExtras())},n={json:i,resources:{}},a=new te(e,n,t),c=t.logger||ie.DEFAULT_INSTANCE,o=new Set(t.extensions.map(l=>l.EXTENSION_NAME)),g=e.getRoot().listExtensionsUsed().filter(l=>o.has(l.extensionName)),m=e.getRoot().listExtensionsRequired().filter(l=>o.has(l.extensionName));g.lengthS.getCount()/3){const q=(100*V.length/S.getCount()).toFixed(1);c.warn(`Sparse accessor with many non-zero elements (${q}%) may increase file size.`)}const ae=$e[S.getComponentType()];Z.indices=V,Z.values=new ae(P)}if(!Number.isFinite(E))return{buffers:h,byteLength:f};const x=E<255?Uint8Array:E<65535?Uint16Array:Uint32Array,N=E<255?Br:E<65535?jr:Lr,v={buffer:b,byteOffset:u+f,byteLength:0};for(const S of l){const _=d.get(S);if(_.count===0)continue;_.indicesByteOffset=v.byteLength;const V=F.pad(F.toView(new x(_.indices)));h.push(V),f+=V.byteLength,v.byteLength+=V.byteLength}i.bufferViews.push(v);const w=i.bufferViews.length-1,R={buffer:b,byteOffset:u+f,byteLength:0};for(const S of l){const _=d.get(S);if(_.count===0)continue;_.valuesByteOffset=R.byteLength;const V=F.pad(F.toView(_.values));h.push(V),f+=V.byteLength,R.byteLength+=V.byteLength}i.bufferViews.push(R);const O=i.bufferViews.length-1;for(const S of l){const _=d.get(S);_.count!==0&&(_.accessorDef.sparse={count:_.count,indices:{bufferView:w,byteOffset:_.indicesByteOffset,componentType:N},values:{bufferView:O,byteOffset:_.valuesByteOffset}})}return{buffers:h,byteLength:f}}const A=new Map;for(const l of e.getGraph().listEdges()){if(l.getParent()===s)continue;const b=l.getChild();if(b instanceof C){const u=A.get(b)||[];u.push(l),A.set(b,u)}}if(i.accessors=[],i.bufferViews=[],i.samplers=[],i.textures=[],i.images=s.listTextures().map((l,b)=>{const u=a.createPropertyDef(l);l.getMimeType()&&(u.mimeType=l.getMimeType());const h=l.getImage();return h&&a.createImageData(u,h,l),a.imageIndexMap.set(l,b),u}),g.filter(l=>l.prewriteTypes.includes(M.ACCESSOR)).forEach(l=>l.prewrite(a,M.ACCESSOR)),s.listAccessors().forEach(l=>{const b=a.accessorUsageGroupedByParent,u=a.accessorParents;if(a.accessorIndexMap.has(l))return;const h=A.get(l)||[],f=a.getAccessorUsage(l);if(a.addAccessorToUsageGroup(l,f),b.has(f)){const d=h[0].getParent(),E=u.get(d)||new Set;E.add(l),u.set(d,E)}}),g.filter(l=>l.prewriteTypes.includes(M.BUFFER)).forEach(l=>l.prewrite(a,M.BUFFER)),(s.listAccessors().length>0||s.listTextures().length>0||a.otherBufferViews.size>0)&&s.listBuffers().length===0)throw new Error("Buffer required for Document resources, but none was found.");i.buffers=[],s.listBuffers().forEach((l,b)=>{const u=a.createPropertyDef(l),h=a.accessorUsageGroupedByParent,f=a.accessorParents,d=l.listParents().filter(R=>R instanceof C),E=new Set(d),x=[],N=i.buffers.length;let v=0;const w=a.listAccessorUsageGroups();for(const R in w)if(h.has(R))for(const O of Array.from(f.values())){const S=Array.from(O).filter(_=>E.has(_)).filter(_=>a.getAccessorUsage(_)===R);if(S.length)if(R!==Ue.ARRAY_BUFFER||t.vertexLayout===ze.INTERLEAVED){const _=R===Ue.ARRAY_BUFFER?p(S,N,v):T(S,N,v);v+=_.byteLength,x.push(..._.buffers)}else for(const _ of S){const V=p([_],N,v);v+=V.byteLength,x.push(...V.buffers)}}else{const O=w[R].filter(V=>E.has(V));if(!O.length)continue;const S=R===Ue.ELEMENT_ARRAY_BUFFER?te.BufferViewTarget.ELEMENT_ARRAY_BUFFER:void 0,_=R===Ue.SPARSE?y(O,N,v):T(O,N,v,S);v+=_.byteLength,x.push(..._.buffers)}if(a.imageBufferViews.length&&b===0){for(let R=0;R!l.getBuffer())&&c.warn("Skipped writing one or more Accessors: no Buffer assigned."),i.materials=s.listMaterials().map((l,b)=>{const u=a.createPropertyDef(l);if(l.getAlphaMode()!==pe.AlphaMode.OPAQUE&&(u.alphaMode=l.getAlphaMode()),l.getAlphaMode()===pe.AlphaMode.MASK&&(u.alphaCutoff=l.getAlphaCutoff()),l.getDoubleSided()&&(u.doubleSided=!0),u.pbrMetallicRoughness={},B.eq(l.getBaseColorFactor(),[1,1,1,1])||(u.pbrMetallicRoughness.baseColorFactor=l.getBaseColorFactor()),B.eq(l.getEmissiveFactor(),[0,0,0])||(u.emissiveFactor=l.getEmissiveFactor()),l.getRoughnessFactor()!==1&&(u.pbrMetallicRoughness.roughnessFactor=l.getRoughnessFactor()),l.getMetallicFactor()!==1&&(u.pbrMetallicRoughness.metallicFactor=l.getMetallicFactor()),l.getBaseColorTexture()){const h=l.getBaseColorTexture(),f=l.getBaseColorTextureInfo();u.pbrMetallicRoughness.baseColorTexture=a.createTextureInfoDef(h,f)}if(l.getEmissiveTexture()){const h=l.getEmissiveTexture(),f=l.getEmissiveTextureInfo();u.emissiveTexture=a.createTextureInfoDef(h,f)}if(l.getNormalTexture()){const h=l.getNormalTexture(),f=l.getNormalTextureInfo(),d=a.createTextureInfoDef(h,f);l.getNormalScale()!==1&&(d.scale=l.getNormalScale()),u.normalTexture=d}if(l.getOcclusionTexture()){const h=l.getOcclusionTexture(),f=l.getOcclusionTextureInfo(),d=a.createTextureInfoDef(h,f);l.getOcclusionStrength()!==1&&(d.strength=l.getOcclusionStrength()),u.occlusionTexture=d}if(l.getMetallicRoughnessTexture()){const h=l.getMetallicRoughnessTexture(),f=l.getMetallicRoughnessTextureInfo();u.pbrMetallicRoughness.metallicRoughnessTexture=a.createTextureInfoDef(h,f)}return a.materialIndexMap.set(l,b),u}),i.meshes=s.listMeshes().map((l,b)=>{const u=a.createPropertyDef(l);let h=null;return u.primitives=l.listPrimitives().map(f=>{const d={attributes:{}};d.mode=f.getMode();const E=f.getMaterial();E&&(d.material=a.materialIndexMap.get(E)),Object.keys(f.getExtras()).length&&(d.extras=f.getExtras());const x=f.getIndices();x&&(d.indices=a.accessorIndexMap.get(x));for(const N of f.listSemantics())d.attributes[N]=a.accessorIndexMap.get(f.getAttribute(N));for(const N of f.listTargets()){const v={};for(const w of N.listSemantics())v[w]=a.accessorIndexMap.get(N.getAttribute(w));d.targets=d.targets||[],d.targets.push(v)}return f.listTargets().length&&!h&&(h=f.listTargets().map(N=>N.getName())),d}),l.getWeights().length&&(u.weights=l.getWeights()),h&&(u.extras=u.extras||{},u.extras.targetNames=h),a.meshIndexMap.set(l,b),u}),i.cameras=s.listCameras().map((l,b)=>{const u=a.createPropertyDef(l);if(u.type=l.getType(),u.type===Se.Type.PERSPECTIVE){u.perspective={znear:l.getZNear(),zfar:l.getZFar(),yfov:l.getYFov()};const h=l.getAspectRatio();h!==null&&(u.perspective.aspectRatio=h)}else u.orthographic={znear:l.getZNear(),zfar:l.getZFar(),xmag:l.getXMag(),ymag:l.getYMag()};return a.cameraIndexMap.set(l,b),u}),i.nodes=s.listNodes().map((l,b)=>{const u=a.createPropertyDef(l);return B.eq(l.getTranslation(),[0,0,0])||(u.translation=l.getTranslation()),B.eq(l.getRotation(),[0,0,0,1])||(u.rotation=l.getRotation()),B.eq(l.getScale(),[1,1,1])||(u.scale=l.getScale()),l.getWeights().length&&(u.weights=l.getWeights()),a.nodeIndexMap.set(l,b),u}),i.skins=s.listSkins().map((l,b)=>{const u=a.createPropertyDef(l),h=l.getInverseBindMatrices();h&&(u.inverseBindMatrices=a.accessorIndexMap.get(h));const f=l.getSkeleton();return f&&(u.skeleton=a.nodeIndexMap.get(f)),u.joints=l.listJoints().map(d=>a.nodeIndexMap.get(d)),a.skinIndexMap.set(l,b),u}),s.listNodes().forEach((l,b)=>{const u=i.nodes[b],h=l.getMesh();h&&(u.mesh=a.meshIndexMap.get(h));const f=l.getCamera();f&&(u.camera=a.cameraIndexMap.get(f));const d=l.getSkin();d&&(u.skin=a.skinIndexMap.get(d)),l.listChildren().length>0&&(u.children=l.listChildren().map(E=>a.nodeIndexMap.get(E)))}),i.animations=s.listAnimations().map((l,b)=>{const u=a.createPropertyDef(l),h=new Map;return u.samplers=l.listSamplers().map((f,d)=>{const E=a.createPropertyDef(f);return E.input=a.accessorIndexMap.get(f.getInput()),E.output=a.accessorIndexMap.get(f.getOutput()),E.interpolation=f.getInterpolation(),h.set(f,d),E}),u.channels=l.listChannels().map(f=>{const d=a.createPropertyDef(f);return d.sampler=h.get(f.getSampler()),d.target={node:a.nodeIndexMap.get(f.getTargetNode()),path:f.getTargetPath()},d}),a.animationIndexMap.set(l,b),u}),i.scenes=s.listScenes().map((l,b)=>{const u=a.createPropertyDef(l);return u.nodes=l.listChildren().map(h=>a.nodeIndexMap.get(h)),a.sceneIndexMap.set(l,b),u});const I=s.getDefaultScene();return I&&(i.scene=s.listScenes().indexOf(I)),i.extensionsUsed=g.map(l=>l.extensionName),i.extensionsRequired=m.map(l=>l.extensionName),g.forEach(l=>l.write(a)),function(l){const b=[];for(const u in l){const h=l[u];(Array.isArray(h)&&h.length===0||h===null||h===""||h&&typeof h=="object"&&Object.keys(h).length===0)&&b.push(u)}for(const u of b)delete l[u]}(i),n}};var We;(function(r){r[r.JSON=1313821514]="JSON",r[r.BIN=5130562]="BIN"})(We||(We={}));let Dr=class{constructor(){this.M=ie.DEFAULT_INSTANCE,this.l=new Set,this.U={},this.P=ze.INTERLEAVED,this.lastReadBytes=0,this.lastWriteBytes=0}setLogger(e){return this.M=e,this}registerExtensions(e){for(const t of e)this.l.add(t),t.register();return this}registerDependencies(e){return Object.assign(this.U,e),this}setVertexLayout(e){return this.P=e,this}async read(e){return await this.readJSON(await this.readAsJSON(e))}async readAsJSON(e){const t=await this.readURI(e,"view");this.lastReadBytes=t.byteLength;const s=Mt(t)?this.L(t):{json:JSON.parse(F.decodeText(t)),resources:{}};return await this.j(s,this.dirname(e)),this.D(s),s}async readJSON(e){return e=this._(e),this.D(e),Fr.read(e,{extensions:Array.from(this.l),dependencies:this.U,logger:this.M})}async binaryToJSON(e){const t=this.L(F.assertView(e));this.D(t);const s=t.json;if(s.buffers&&s.buffers.some(i=>function(n,a){return a.uri!==void 0&&!(a.uri in n.resources)}(t,i)))throw new Error("Cannot resolve external buffers with binaryToJSON().");if(s.images&&s.images.some(i=>function(n,a){return a.uri!==void 0&&!(a.uri in n.resources)&&a.bufferView===void 0}(t,i)))throw new Error("Cannot resolve external images with binaryToJSON().");return t}async readBinary(e){return this.readJSON(await this.binaryToJSON(F.assertView(e)))}async writeJSON(e,t={}){if(t.format===se.GLB&&e.getRoot().listBuffers().length>1)throw new Error("GLB must have 0–1 buffers.");return Ur.write(e,{format:t.format||se.GLTF,basename:t.basename||"",logger:this.M,vertexLayout:this.P,dependencies:G({},this.U),extensions:Array.from(this.l)})}async writeBinary(e){const{json:t,resources:s}=await this.writeJSON(e,{format:se.GLB}),i=new Uint32Array([1179937895,2,12]),n=JSON.stringify(t),a=F.pad(F.encodeText(n),32),c=F.toView(new Uint32Array([a.byteLength,1313821514])),o=F.concat([c,a]);i[i.length-1]+=o.byteLength;const g=Object.values(s)[0];if(!g||!g.byteLength)return F.concat([F.toView(i),o]);const m=F.pad(g,0),T=F.toView(new Uint32Array([m.byteLength,5130562])),p=F.concat([T,m]);return i[i.length-1]+=p.byteLength,F.concat([F.toView(i),o,p])}async j(e,t){var s=this;const i=[...e.json.images||[],...e.json.buffers||[]].map(async function(n){const a=n.uri;if(!a||a.match(/data:/))return Promise.resolve();e.resources[a]=await s.readURI(s.resolve(t,a),"view"),s.lastReadBytes+=e.resources[a].byteLength});await Promise.all(i)}D(e){function t(s){if(s.uri){if(s.uri in e.resources)F.assertView(e.resources[s.uri]);else if(s.uri.match(/data:/)){const i=`__${Cr()}.${ge.extension(s.uri)}`;e.resources[i]=F.createBufferFromDataURI(s.uri),s.uri=i}}}(e.json.images||[]).forEach(s=>{if(s.bufferView===void 0&&s.uri===void 0)throw new Error("Missing resource URI or buffer view.");t(s)}),(e.json.buffers||[]).forEach(t)}_(e){const{images:t,buffers:s}=e.json;return e={json:G({},e.json),resources:G({},e.resources)},t&&(e.json.images=t.map(i=>G({},i))),s&&(e.json.buffers=s.map(i=>G({},i))),e}L(e){if(!Mt(e))throw new Error("Invalid glTF 2.0 binary.");const t=new Uint32Array(e.buffer,e.byteOffset+12,2);if(t[1]!==We.JSON)throw new Error("Missing required GLB JSON chunk.");const s=t[0],i=F.decodeText(F.toView(e,20,s)),n=JSON.parse(i),a=20+s;if(e.byteLength<=a)return{json:n,resources:{}};const c=new Uint32Array(e.buffer,e.byteOffset+a,2);if(c[1]!==We.BIN)throw new Error("Expected GLB BIN in second chunk.");const o=F.toView(e,a+8,c[0]);return{json:n,resources:{[Ge]:o}}}};function Mt(r){if(r.byteLength<3*Uint32Array.BYTES_PER_ELEMENT)return!1;const e=new Uint32Array(r.buffer,r.byteOffset,3);return e[0]===1179937895&&e[1]===2}let hn=class extends Dr{constructor(e=Re.DEFAULT_INIT){super(),this.J=void 0,this.J=e}async readURI(e,t){const s=await fetch(e,this.J);switch(t){case"view":return new Uint8Array(await s.arrayBuffer());case"text":return s.text()}}resolve(e,t){return Re.resolve(e,t)}dirname(e){return Re.dirname(e)}};function kr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Gr(r){for(var e=new Array(r),t=0;t + * @license MIT + */var $r=function(r){return r!=null&&(nr(r)||qr(r)||!!r._isBuffer)};function nr(r){return!!r.constructor&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)}function qr(r){return typeof r.readFloatLE=="function"&&typeof r.slice=="function"&&nr(r.slice(0,0))}var Wr=zr,Yr=$r,Hr=typeof Float64Array<"u";function Xr(r,e){return r[0]-e[0]}function Jr(){var r=this.stride,e=new Array(r.length),t;for(t=0;tMath.abs(this.stride[1]))?[1,0]:[0,1]}})"):e===3&&i.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):i.push("ORDER})")),i.push("proto.set=function "+t+"_set("+a.join(",")+",v){"),s?i.push("return this.data.set("+c+",v)}"):i.push("return this.data["+c+"]=v}"),i.push("proto.get=function "+t+"_get("+a.join(",")+"){"),s?i.push("return this.data.get("+c+")}"):i.push("return this.data["+c+"]}"),i.push("proto.index=function "+t+"_index(",a.join(),"){return "+c+"}"),i.push("proto.hi=function "+t+"_hi("+a.join(",")+"){return new "+t+"(this.data,"+n.map(function(l){return["(typeof i",l,"!=='number'||i",l,"<0)?this.shape[",l,"]:i",l,"|0"].join("")}).join(",")+","+n.map(function(l){return"this.stride["+l+"]"}).join(",")+",this.offset)}");var m=n.map(function(l){return"a"+l+"=this.shape["+l+"]"}),T=n.map(function(l){return"c"+l+"=this.stride["+l+"]"});i.push("proto.lo=function "+t+"_lo("+a.join(",")+"){var b=this.offset,d=0,"+m.join(",")+","+T.join(","));for(var p=0;p=0){d=i"+p+"|0;b+=c"+p+"*d;a"+p+"-=d}");i.push("return new "+t+"(this.data,"+n.map(function(l){return"a"+l}).join(",")+","+n.map(function(l){return"c"+l}).join(",")+",b)}"),i.push("proto.step=function "+t+"_step("+a.join(",")+"){var "+n.map(function(l){return"a"+l+"=this.shape["+l+"]"}).join(",")+","+n.map(function(l){return"b"+l+"=this.stride["+l+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var p=0;p=0){c=(c+this.stride["+p+"]*i"+p+")|0}else{a.push(this.shape["+p+"]);b.push(this.stride["+p+"])}");i.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),i.push("return function construct_"+t+"(data,shape,stride,offset){return new "+t+"(data,"+n.map(function(l){return"shape["+l+"]"}).join(",")+","+n.map(function(l){return"stride["+l+"]"}).join(",")+",offset)}");var I=new Function("CTOR_LIST","ORDER",i.join(` +`));return I(Ye[r],Jr)}function Zr(r){if(Yr(r))return"buffer";if(Hr)switch(Object.prototype.toString.call(r)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(r)?"array":"generic"}var Ye={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};function Qr(r,e,t,s){if(r===void 0){var g=Ye.array[0];return g([])}else typeof r=="number"&&(r=[r]);e===void 0&&(e=[r.length]);var i=e.length;if(t===void 0){t=new Array(i);for(var n=i-1,a=1;n>=0;--n)t[n]=a,a*=e[n]}if(s===void 0){s=0;for(var n=0;n0,a=[],c=[],o=0,g=0,m,T;for(m=0;m0&&a.push("var "+c.join(",")),m=s-1;m>=0;--m)o=r[m],a.push(["for(i",m,"=0;i",m,"0&&a.push(["index[",g,"]-=s",g].join("")),a.push(["++index[",o,"]"].join(""))),a.push("}")}return a.join(` +`)}function cs(r,e,t,s){for(var i=e.length,n=t.arrayArgs.length,a=t.blockSize,c=t.indexArgs.length>0,o=[],g=0;g0;){"].join("")),o.push(["if(j",g,"<",a,"){"].join("")),o.push(["s",e[g],"=j",g].join("")),o.push(["j",g,"=0"].join("")),o.push(["}else{s",e[g],"=",a].join("")),o.push(["j",g,"-=",a,"}"].join("")),c&&o.push(["index[",e[g],"]=j",g].join(""));for(var g=0;g0&&(t=t&&e[s]===e[s-1])}return t?e[0]:e.join("")}function hs(r,e){for(var t=e[1].length-Math.abs(r.arrayBlockIndices[0])|0,s=new Array(r.arrayArgs.length),i=new Array(r.arrayArgs.length),n=0;n0&&I.push("shape=SS.slice(0)"),r.indexArgs.length>0){for(var l=new Array(t),n=0;n0&&A.push("var "+I.join(","));for(var n=0;n3&&A.push(nt(r.pre,r,i));var f=nt(r.body,r,i),d=us(m);d3&&A.push(nt(r.post,r,i)),r.debug&&console.log("-----Generated cwise routine for ",e,`: +`+A.join(` +`)+` +----------`);var E=[r.funcName||"unnamed","_cwise_loop_",s[0].join("s"),"m",d,ls(i)].join(""),x=new Function(["function ",E,"(",y.join(","),"){",A.join(` +`),"} return ",E].join(""));return x()}var fs=hs,gs=fs;function ps(r){var e=["'use strict'","var CACHED={}"],t=[],s=r.funcName+"_cwise_thunk";e.push(["return function ",s,"(",r.shimArgs.join(","),"){"].join(""));for(var i=[],n=[],a=[["array",r.arrayArgs[0],".shape.slice(",Math.max(0,r.arrayBlockIndices[0]),r.arrayBlockIndices[0]<0?","+r.arrayBlockIndices[0]+")":")"].join("")],c=[],o=[],g=0;g0&&(c.push("array"+r.arrayArgs[0]+".shape.length===array"+m+".shape.length+"+(Math.abs(r.arrayBlockIndices[0])-Math.abs(r.arrayBlockIndices[g]))),o.push("array"+r.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,r.arrayBlockIndices[0])+"]===array"+m+".shape[shapeIndex+"+Math.max(0,r.arrayBlockIndices[g])+"]"))}r.arrayArgs.length>1&&(e.push("if (!("+c.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),e.push("for(var shapeIndex=array"+r.arrayArgs[0]+".shape.length-"+Math.abs(r.arrayBlockIndices[0])+"; shapeIndex-->0;) {"),e.push("if (!("+o.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),e.push("}"));for(var g=0;g0)throw new Error("cwise: pre() block may not reference array args");if(s0)throw new Error("cwise: post() block may not reference array args")}else if(i==="scalar")e.scalarArgs.push(s),e.shimArgs.push("scalar"+s);else if(i==="index"){if(e.indexArgs.push(s),s0)throw new Error("cwise: pre() block may not reference array index");if(s0)throw new Error("cwise: post() block may not reference array index")}else if(i==="shape"){if(e.shapeArgs.push(s),st.length)throw new Error("cwise: Too many arguments in pre() block");if(e.body.args.length>t.length)throw new Error("cwise: Too many arguments in body() block");if(e.post.args.length>t.length)throw new Error("cwise: Too many arguments in post() block");return e.debug=!!r.printCode||!!r.debug,e.funcName=r.funcName||"cwise",e.blockSize=r.blockSize||64,ms(e)}var Ts=Es;(function(r){var e=Ts,t={body:"",args:[],thisVars:[],localVars:[]};function s(p){if(!p)return t;for(var y=0;y>",rrshift:">>>"};(function(){for(var p in a){var y=a[p];r[p]=n({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+y+"c"},funcName:p}),r[p+"eq"]=n({args:["array","array"],body:{args:["a","b"],body:"a"+y+"=b"},rvalue:!0,funcName:p+"eq"}),r[p+"s"]=n({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+y+"s"},funcName:p+"s"}),r[p+"seq"]=n({args:["array","scalar"],body:{args:["a","s"],body:"a"+y+"=s"},rvalue:!0,funcName:p+"seq"})}})();var c={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var p in c){var y=c[p];r[p]=n({args:["array","array"],body:{args:["a","b"],body:"a="+y+"b"},funcName:p}),r[p+"eq"]=n({args:["array"],body:{args:["a"],body:"a="+y+"a"},rvalue:!0,count:2,funcName:p+"eq"})}})();var o={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var p in o){var y=o[p];r[p]=n({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+y+"c"},funcName:p}),r[p+"s"]=n({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+y+"s"},funcName:p+"s"}),r[p+"eq"]=n({args:["array","array"],body:{args:["a","b"],body:"a=a"+y+"b"},rvalue:!0,count:2,funcName:p+"eq"}),r[p+"seq"]=n({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+y+"s"},rvalue:!0,count:2,funcName:p+"seq"})}})();var g=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var p=0;pthis_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"}),r.norm1=e({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"}),r.sup=e({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),r.inf=e({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),r.random=n({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),r.assign=n({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),r.assigns=n({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),r.equals=e({args:["array","array"],pre:t,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})})(rs);function bs(r,e){if(!(r instanceof Uint8Array))throw new Error("[ndarray-pixels] Input must be Uint8Array or Buffer.");const t=new Blob([r],{type:e}),s=URL.createObjectURL(t);return new Promise((i,n)=>{const a=new Image;a.crossOrigin="anonymous",a.onload=function(){URL.revokeObjectURL(s);const c=document.createElement("canvas");c.width=a.width,c.height=a.height;const o=c.getContext("2d");o.drawImage(a,0,0);const g=o.getImageData(0,0,a.width,a.height);i(ts(new Uint8Array(g.data),[a.width,a.height,4],[4,4*a.width,1],0))},a.onerror=c=>{URL.revokeObjectURL(s),n(c)},a.src=s})}async function vs(r,e){return bs(r,e)}function me(){return me=Object.assign?Object.assign.bind():function(r){for(var e=1;es?"–":"+")+(Math.abs(t-s)/t*100).toFixed(i)+"%"}(r,e)})`}function ws(r){const e=[];for(const t of r.listAttributes())e.push(t);for(const t of r.listTargets())for(const s of t.listAttributes())e.push(s);return Array.from(new Set(e))}function ce(r,e=r){const t=e<=65534?new Uint16Array(r):new Uint32Array(r);for(let s=0;si instanceof Ze)}function Is(r){const e=Rs(r),t=r.getParentNode();if(!t)return r;r.setMatrix(r.getWorldMatrix()),t.removeChild(r);for(const s of e)s.addChild(r);return r}var ye=typeof Float32Array<"u"?Float32Array:Array;function xs(r,e,t){var s=e[0],i=e[1],n=e[2],a=e[3],c=e[4],o=e[5],g=e[6],m=e[7],T=e[8],p=e[9],y=e[10],A=e[11],I=e[12],l=e[13],b=e[14],u=e[15],h=t[0],f=t[1],d=t[2],E=t[3];return r[0]=h*s+f*c+d*T+E*I,r[1]=h*i+f*o+d*p+E*l,r[2]=h*n+f*g+d*y+E*b,r[3]=h*a+f*m+d*A+E*u,r[4]=(h=t[4])*s+(f=t[5])*c+(d=t[6])*T+(E=t[7])*I,r[5]=h*i+f*o+d*p+E*l,r[6]=h*n+f*g+d*y+E*b,r[7]=h*a+f*m+d*A+E*u,r[8]=(h=t[8])*s+(f=t[9])*c+(d=t[10])*T+(E=t[11])*I,r[9]=h*i+f*o+d*p+E*l,r[10]=h*n+f*g+d*y+E*b,r[11]=h*a+f*m+d*A+E*u,r[12]=(h=t[12])*s+(f=t[13])*c+(d=t[14])*T+(E=t[15])*I,r[13]=h*i+f*o+d*p+E*l,r[14]=h*n+f*g+d*y+E*b,r[15]=h*a+f*m+d*A+E*u,r}function et(){var r=new ye(3);return ye!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function or(r,e){var t=e[0],s=e[1],i=e[2],n=t*t+s*s+i*i;return n>0&&(n=1/Math.sqrt(n)),r[0]=e[0]*n,r[1]=e[1]*n,r[2]=e[2]*n,r}function Ms(r,e,t){var s=e[0],i=e[1],n=e[2],a=t[3]*s+t[7]*i+t[11]*n+t[15];return r[0]=(t[0]*s+t[4]*i+t[8]*n+t[12])/(a=a||1),r[1]=(t[1]*s+t[5]*i+t[9]*n+t[13])/a,r[2]=(t[2]*s+t[6]*i+t[10]*n+t[14])/a,r}function _s(r,e,t){var s=e[0],i=e[1],n=e[2];return r[0]=s*t[0]+i*t[3]+n*t[6],r[1]=s*t[1]+i*t[4]+n*t[7],r[2]=s*t[2]+i*t[5]+n*t[8],r}Math.hypot||(Math.hypot=function(){for(var r=0,e=arguments.length;e--;)r+=arguments[e]*arguments[e];return Math.sqrt(r)});var Ns=function(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r};function Tt(){var r=new ye(4);return ye!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0,r[3]=0),r}et();var cr=function(r,e,t){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r[3]=e[3]-t[3],r},Ss=function(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r[3]=e[3]*t[3],r},ur=function(r){return Math.hypot(r[0],r[1],r[2],r[3])};Tt();M.ACCESSOR,M.MESH,M.TEXTURE,M.MATERIAL,M.SKIN;const Cs=/color|emissive|diffuse/i;function Os(r){return r.getGraph().listParentEdges(r).some(e=>e.getAttributes().isColor||Cs.test(e.getName()))?"srgb":null}function Vs(r){const e=r.getGraph(),t=new Set,s=new Set;return function i(n){const a=new Set;for(const c of e.listChildEdges(n))c.getChild()instanceof _e&&a.add(c.getName()+"Info");for(const c of e.listChildEdges(n)){const o=c.getChild();t.has(o)||(t.add(o),o instanceof H&&a.has(c.getName())?s.add(o):o instanceof Ce&&i(o))}}(r),Array.from(s)}function Ps(r){const e=Qe.fromGraph(r.getGraph()).getRoot(),t=r.getGraph().listParentEdges(r).filter(s=>s.getParent()!==e).map(s=>s.getName());return Array.from(new Set(t))}const ue="prune",gt=3/255,Nt={propertyTypes:[M.NODE,M.SKIN,M.MESH,M.CAMERA,M.PRIMITIVE,M.PRIMITIVE_TARGET,M.ANIMATION,M.MATERIAL,M.TEXTURE,M.ACCESSOR,M.BUFFER],keepLeaves:!1,keepAttributes:!0,keepSolidTextures:!0};function Fs(r=Nt){const e=me({},Nt,r),t=new Set(e.propertyTypes);return ar(ue,async s=>{const i=s.getLogger(),n=s.getRoot(),a=s.getGraph(),c=new Ls;if(t.has(M.MESH))for(const o of n.listMeshes())o.listPrimitives().length>0||c.dispose(o);if(t.has(M.NODE)){if(!e.keepLeaves)for(const o of n.listScenes())lr(a,o,c);for(const o of n.listNodes())W(o,c)}if(t.has(M.SKIN))for(const o of n.listSkins())W(o,c);if(t.has(M.MESH))for(const o of n.listMeshes())W(o,c);if(t.has(M.CAMERA))for(const o of n.listCameras())W(o,c);if(t.has(M.PRIMITIVE)&&St(a,M.PRIMITIVE,c),t.has(M.PRIMITIVE_TARGET)&&St(a,M.PRIMITIVE_TARGET,c),!e.keepAttributes&&t.has(M.ACCESSOR)){const o=new Map;for(const g of n.listMeshes())for(const m of g.listPrimitives()){const T=m.getMaterial(),p=js(m,hr(s,T));Ct(m,p),m.listTargets().forEach(y=>Ct(y,p)),T&&(o.has(T)?o.get(T).add(m):o.set(T,new Set([m])))}for(const[g,m]of o)Bs(g,Array.from(m))}if(t.has(M.ANIMATION))for(const o of n.listAnimations()){for(const g of o.listChannels())g.getTargetNode()||c.dispose(g);if(o.listChannels().length)o.listSamplers().forEach(g=>W(g,c));else{const g=o.listSamplers();W(o,c),g.forEach(m=>W(m,c))}}if(t.has(M.MATERIAL)&&n.listMaterials().forEach(o=>W(o,c)),t.has(M.TEXTURE)&&(n.listTextures().forEach(o=>W(o,c)),e.keepSolidTextures||await async function(o,g){const m=o.getRoot(),T=o.getGraph(),p=o.getLogger(),y=m.listTextures().map(async A=>{var I;const l=await async function(f){const d=await async function(_){try{return await vs(_.getImage(),_.getMimeType())}catch{return null}}(f);if(!d)return null;const E=[1/0,1/0,1/0,1/0],x=[-1/0,-1/0,-1/0,-1/0],N=[0,0,0,0],[v,w]=d.shape;for(let _=0;_gt)return null}return function(_,V,P){return _[0]=V[0]*P,_[1]=V[1]*P,_[2]=V[2]*P,_[3]=V[3]*P,_}(N,((R=N)[0]=(O=x)[0]+(S=E)[0],R[1]=O[1]+S[1],R[2]=O[2]+S[2],R[3]=O[3]+S[3],R),.00196078431372549);var R,O,S}(A);if(!l)return;Os(A)==="srgb"&&ve.convertSRGBToLinear(l,l);const b=A.getName()||A.getURI(),u=(I=A.getSize())==null?void 0:I.join("x"),h=Ps(A);for(const f of T.listParentEdges(A)){const d=f.getParent();d!==m&&Us(d,l,f.getName(),p)&&f.dispose()}A.listParents().length===1&&(g.dispose(A),p.debug(`${ue}: Removed solid-color texture "${b}" (${u}px ${h.join(", ")})`))});await Promise.all(y)}(s,c)),t.has(M.ACCESSOR)&&n.listAccessors().forEach(o=>W(o,c)),t.has(M.BUFFER)&&n.listBuffers().forEach(o=>W(o,c)),c.empty())i.info(`${ue}: No unused properties found.`);else{const o=c.entries().map(([g,m])=>`${g} (${m})`).join(", ");i.info(`${ue}: Removed types... ${o}`)}i.debug(`${ue}: Complete.`)})}class Ls{constructor(){this.disposed={}}empty(){for(const e in this.disposed)return!1;return!0}entries(){return Object.entries(this.disposed)}dispose(e){this.disposed[e.propertyType]=this.disposed[e.propertyType]||0,this.disposed[e.propertyType]++,e.dispose()}}function W(r,e){r.listParents().filter(t=>!(t instanceof rr||t instanceof Ke)).length||e.dispose(r)}function St(r,e,t){for(const s of r.listEdges()){const i=s.getParent();i.propertyType===e&&W(i,t)}}function lr(r,e,t){if(e.listChildren().forEach(i=>lr(r,i,t)),e instanceof Ze)return;const s=r.listParentEdges(e).some(i=>{const n=i.getParent().propertyType;return n!==M.ROOT&&n!==M.SCENE&&n!==M.NODE});r.listChildren(e).length===0&&!s&&t.dispose(e)}function Ct(r,e){for(const t of e)r.setAttribute(t,null)}function js(r,e){const t=[];for(const s of r.listSemantics())s!=="TANGENT"||e.has(s)?(s.startsWith("TEXCOORD_")&&!e.has(s)||s.startsWith("COLOR_")&&s!=="COLOR_0")&&t.push(s):t.push(s);return t}function hr(r,e,t=new Set){if(!e)return t;const s=r.getGraph().listChildEdges(e),i=new Set;for(const n of s)n.getChild()instanceof _e&&i.add(n.getName());for(const n of s){const a=n.getName(),c=n.getChild();c instanceof H&&i.has(a.replace(/Info$/,""))&&t.add(`TEXCOORD_${c.getTexCoord()}`),c instanceof _e&&a.match(/normalTexture/i)&&t.add("TANGENT"),c instanceof Ce&&hr(r,c,t)}return t}function Bs(r,e){const t=Vs(r),s=new Set(t.map(o=>o.getTexCoord())),i=Array.from(s).sort(),n=new Map(i.map((o,g)=>[o,g])),a=new Map(i.map((o,g)=>[`TEXCOORD_${o}`,`TEXCOORD_${g}`]));for(const o of t){const g=o.getTexCoord();o.setTexCoord(n.get(g))}for(const o of e){const g=o.listSemantics().filter(m=>m.startsWith("TEXCOORD_")).sort();c(o,g),o.listTargets().forEach(m=>c(m,g))}function c(o,g){for(const m of g){const T=o.getAttribute(m);if(!T)continue;const p=a.get(m);p!==m&&(o.setAttribute(p,T),o.setAttribute(m,null))}}}function Us(r,e,t,s){if(r instanceof pe)switch(t){case"baseColorTexture":return r.setBaseColorFactor(Ss(e,e,r.getBaseColorFactor())),!0;case"emissiveTexture":return r.setEmissiveFactor(Ns([0,0,0],e.slice(0,3),r.getEmissiveFactor())),!0;case"occlusionTexture":return Math.abs(e[0]-1)<=gt;case"metallicRoughnessTexture":return r.setRoughnessFactor(e[1]*r.getRoughnessFactor()),r.setMetallicFactor(e[2]*r.getMetallicFactor()),!0;case"normalTexture":return ur(cr(Tt(),e,[.5,.5,1,1]))<=gt}return s.warn(`${ue}: Detected single-color ${t} texture. Pruning ${t} not yet supported.`),!1}const He="weld",he={DEFAULT:1e-4,TEXCOORD:1e-4,COLOR:.01,NORMAL:.05,JOINTS:0,WEIGHTS:.01},pt={tolerance:he.DEFAULT,toleranceNormal:he.NORMAL,overwrite:!0,exhaustive:!1};function Ds(r,e=pt,t=pt){let s,i,n;if(r instanceof de){const a=r.getGraph();s=Qe.fromGraph(a),i=r,n=Pt(e)}else s=r,i=e,n=Pt(t);i.getIndices()&&!n.overwrite||i.getMode()!==de.Mode.POINTS&&(n.tolerance===0?function(a,c){if(c.getIndices())return;const o=c.listAttributes()[0],g=o.getCount(),m=o.getBuffer(),T=a.createAccessor().setBuffer(m).setType(C.Type.SCALAR).setArray(ce(g));c.setIndices(T)}(s,i):function(a,c,o){const g=a.getLogger(),m=c.getAttribute("POSITION"),T=c.getIndices()||a.createAccessor().setArray(ce(m.getCount())),p=new Uint32Array(new Set(T.getArray())).sort(),y={};for(const v of c.listSemantics()){const w=c.getAttribute(v);y[v]=ks(v,w,o)}var A;g.debug(`${He}: Tolerance thresholds: ${A=y,Object.entries(A).map(([v,w])=>`${v}=${w}`).join(", ")}`);const I=[0,0,0],l=[0,0,0],b={},u=y.POSITION;for(let v=0;vVt(c.getAttribute(j),w,_,y[j])),P=c.listTargets().every(j=>j.listSemantics().every(D=>Vt(j.getAttribute(D),w,_,y[D])));if(V&&P){h[w]=_;break e}}f[w]=h[w]===w?E++:f[h[w]]}g.debug(`${He}: ${As(d,E)} vertices.`);const x=T.getCount(),N=ce(x,p.length);for(let v=0;vn-xe[a]),i=Math.max(...s);return t.tolerance*i}function Vt(r,e,t,s,i){r.getElement(e,xe),r.getElement(t,Me);for(let n=0,a=r.getElementSize();ns)return!1;return!0}const it=[0,-1,1];function Gs(r,e){const t=[],s=[0,0,0];for(const i of it)for(const n of it)for(const a of it)s[0]=r[0]+i*e,s[1]=r[1]+n*e,s[2]=r[2]+a*e,t.push(dt(s,e));return t}function dt(r,e){return Math.round(r[0]/e)+":"+Math.round(r[1]/e)+":"+Math.round(r[2]/e)}function Pt(r){const e=me({},pt,r);if(e.tolerance<0||e.tolerance>.1)throw new Error(`${He}: Requires 0 ≤ tolerance ≤ 0.1`);if(e.toleranceNormal<0||e.toleranceNormal>Math.PI/2)throw new Error(`${He}: Requires 0 ≤ toleranceNormal ≤ ${(Math.PI/2).toFixed(2)}`);return e.tolerance>0&&(e.tolerance=Math.max(e.tolerance,Number.EPSILON),e.toleranceNormal=Math.max(e.toleranceNormal,Number.EPSILON)),e}function zs(r,e,t=new Set){var s;const i=r.getAttribute("POSITION"),n=((s=r.getIndices())==null?void 0:s.getArray())||ce(i.getCount());i&&Ft(e,i,n,new Set(t));const a=r.getAttribute("NORMAL");a&&Lt(e,a,n,new Set(t));const c=r.getAttribute("TANGENT");c&&jt(e,c,n,new Set(t));for(const v of r.listTargets()){const w=v.getAttribute("POSITION");w&&Ft(e,w,n,new Set(t));const R=v.getAttribute("NORMAL");R&&Lt(e,R,n,new Set(t));const O=v.getAttribute("TANGENT");O&&jt(e,O,n,new Set(t))}var o,g,m,T,p,y,A,I,l,b,u,h,f,d,E,x,N;((g=(o=e)[0])*(A=o[5])-(m=o[1])*(y=o[4]))*((h=o[10])*(N=o[15])-(f=o[11])*(x=o[14]))-(g*(I=o[6])-(T=o[2])*y)*((u=o[9])*N-f*(E=o[13]))+(g*(l=o[7])-(p=o[3])*y)*(u*x-h*E)+(m*I-T*A)*((b=o[8])*N-f*(d=o[12]))-(m*l-p*A)*(b*x-h*d)+(T*l-p*I)*(b*E-u*d)<0&&function(v){if(v.getMode()!==de.Mode.TRIANGLES)return;v.getIndices()||Ds(v,{tolerance:0});const w=v.getIndices();for(let R=0,O=w.getCount();Ra.propertyType===M.MESH&&a!==r)){const a=n.clone();r.swap(n,a);for(const c of a.listTargets()){const o=c.clone();a.swap(c,o)}}if(!t){const n=new Set([...r.listPrimitives(),...r.listPrimitives().flatMap(c=>c.listTargets())]),a=new Map;for(const c of r.listPrimitives())for(const o of ws(c))o.listParents().some(g=>(g instanceof de||g instanceof er)&&!n.has(g))&&!a.has(o)&&a.set(o,o.clone());for(const c of n)for(const[o,g]of a)c.swap(o,g)}const i=new Map;for(const n of r.listPrimitives()){const a=n.getAttribute("POSITION");let c;s?c=s:i.has(a)?c=i.get(a):i.set(a,c=new Set),zs(n,e,c)}}const Bt=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function gn(r){const e=r.getMesh(),t=r.getMatrix();e&&!B.eq(t,Bt)&&$s(e,t);for(const s of r.listChildren()){const i=s.getMatrix();xs(i,i,t),s.setMatrix(i)}return r.setMatrix(Bt)}const at="flatten",Ut={};function pn(r=Ut){return me({},Ut,r),ar(at,async e=>{const t=e.getRoot(),s=e.getLogger(),i=new Set;for(const o of t.listSkins())for(const g of o.listJoints())i.add(g);const n=new Set;for(const o of t.listAnimations())for(const g of o.listChannels()){const m=g.getTargetNode();m&&n.add(m)}const a=new Set,c=new Set;for(const o of t.listScenes())o.traverse(g=>{const m=g.getParentNode();m&&((i.has(m)||a.has(m))&&a.add(g),(n.has(m)||c.has(m))&&c.add(g))});for(const o of t.listScenes())o.traverse(g=>{n.has(g)||a.has(g)||c.has(g)||Is(g)});n.size&&s.debug(`${at}: Flattening node hierarchies with TRS animation not yet supported.`),await e.transform(Fs({propertyTypes:[M.NODE],keepLeaves:!1})),s.debug(`${at}: Complete.`)})}Ke.TargetPath;const qs={pattern:/.*/,quantizationVolume:"mesh",quantizePosition:14,quantizeNormal:10,quantizeTexcoord:12,quantizeColor:8,quantizeWeight:8,quantizeGeneric:12,normalizeWeights:!0};me({level:"high"},qs);var Dt;function Ee(r,e,t){for(let s=0,i=t.length;st)return!1;return!0}function Ws(r,e,t){return r*(1-t)+e*t}function Ys(r,e,t,s){for(let i=0;i1e-6?(i=Math.acos(n),a=Math.sin(i),c=Math.sin((1-s)*i)/a,o=Math.sin(s*i)/a):(c=1-s,o=s),r[0]=c*g+o*y,r[1]=c*m+o*A,r[2]=c*T+o*I,r[3]=c*p+o*l,r}function Gt(r,e){const t=function(s,i){return s[0]*i[0]+s[1]*i[1]+s[2]*i[2]+s[3]*i[3]}(r,e);return Math.acos(2*t*t-1)}(function(r){r[r.STEP=0]="STEP",r[r.LERP=1]="LERP",r[r.SLERP=2]="SLERP"})(Dt||(Dt={}));Promise.resolve();var Xe;(function(r){r.LANCZOS3="lanczos3",r.LANCZOS2="lanczos2"})(Xe||(Xe={}));Xe.LANCZOS3;Xe.LANCZOS3;const Y="EXT_mesh_manifold",zt="MERGE";class bt extends Ce{static EXTENSION_NAME=Y;init(){bt.EXTENSION_NAME=Y,this.propertyType="ManifoldPrimitive",this.parentTypes=[M.MESH]}getDefaults(){return Object.assign(super.getDefaults(),{manifoldPrimitive:null,mergeIndices:null,mergeValues:null})}getMergeIndices(){return this.getRef("mergeIndices")}getMergeValues(){return this.getRef("mergeValues")}setMerge(e,t){if(e.getCount()!==t.getCount())throw new Error("merge vectors must be the same length.");return this.setRef("mergeIndices",e),this.setRef("mergeValues",t)}getRunIndex(){return this.get("runIndex")}setRunIndex(e){return this.set("runIndex",e)}setIndices(e){return this.setRef("indices",e)}getIndices(){return this.getRef("indices")}}class fr extends sr{extensionName=Y;prewriteTypes=[M.ACCESSOR];static EXTENSION_NAME=Y;createManifoldPrimitive(){return new bt(this.document.getGraph())}read(e){const{json:t}=e.jsonDoc;return(t.meshes||[]).forEach((i,n)=>{if(!i.extensions||!i.extensions[Y])return;const a=e.meshes[n],c=this.createManifoldPrimitive();a.setExtension(Y,c);const o=i.extensions[Y];if(o.manifoldPrimitive){let g=0;const m=Array();m.push(g);for(const T of a.listPrimitives()){const p=T.getIndices();if(!p){console.log("Skipping non-indexed primitive ",T.getName());continue}g+=p.getCount(),m.push(g)}c.setRunIndex(m),c.setIndices(e.accessors[o.manifoldPrimitive.indices])}o.mergeIndices!=null&&o.mergeValues!=null&&c.setMerge(e.accessors[o.mergeIndices],e.accessors[o.mergeValues])}),this}prewrite(e){return this.document.getRoot().listMeshes().forEach(t=>{const s=t.getExtension(Y);if(!s)return;const i=s.getIndices();e.addAccessorToUsageGroup(i,te.BufferViewUsage.ELEMENT_ARRAY_BUFFER);const n=s.getMergeIndices(),a=s.getMergeValues();!n||!a||(e.addAccessorToUsageGroup(n,zt),e.addAccessorToUsageGroup(a,zt))}),this}write(e){const{json:t}=e.jsonDoc;return this.document.getRoot().listMeshes().forEach(s=>{const i=s.getExtension(Y);if(!i)return;const n=e.meshIndexMap.get(s),a=t.meshes[n],c=i.getRunIndex(),o=c.length-1;if(o!==a.primitives.length)throw new Error("The number of primitives must be exactly one less than the length of runIndex.");const g=e.accessorIndexMap.get(i.getMergeIndices()),m=e.accessorIndexMap.get(i.getMergeValues()),T=t.accessors[g],p=t.accessors[m],y=a.primitives[0],A={indices:e.accessorIndexMap.get(i.getIndices()),mode:y.mode,attributes:{POSITION:y.attributes.POSITION}},I=t.accessors[A.indices];if(I){T&&p&&(I.sparse={count:T.count,indices:{bufferView:T.bufferView,byteOffset:T.byteOffset,componentType:T.componentType},values:{bufferView:p.bufferView,byteOffset:p.byteOffset}});for(let l=0;l{const h=s;return s+=X[u].components,h})),n=r.getExtension("EXT_mesh_manifold");let a=Array(),c=Array();const o=[0],g=Array(),m=Array(),T=Array();if(n!=null){const u=t[0].getAttribute("POSITION").getCount(),h=e.map(x=>X[x].type==null);a=new Array(s*u);for(const x of t){const N=x.getIndices();if(!N){console.log("Skipping non-indexed primitive ",x.getName());continue}const v=x.listSemantics();e.forEach((w,R)=>{if(!h[R]){for(const O of v)if(O===w){h[R]=!0;const S=x.getAttribute(O);gr(a,S,s,i[R])}}}),c=[...c,...N.getArray()],o.push(c.length),T.push({material:x.getMaterial(),attributes:v.filter(w=>e.some(R=>R==w))})}const f=n.getMergeIndices()?.getArray()??[],d=n.getMergeValues()?.getArray()??[],E=new Map;for(const[x,N]of f.entries())E.set(c[N],d[x]);for(const[x,N]of E.entries())g.push(x),m.push(N)}else for(const u of t){const h=u.getIndices();if(!h){console.log("Skipping non-indexed primitive ",u.getName());continue}const f=a.length/s;a=[...a,...Xs(u,s,e)],c=[...c,...h.getArray().map(E=>E+f)],o.push(c.length);const d=u.listSemantics();T.push({material:u.getMaterial(),attributes:d.filter(E=>e.some(x=>x==E))})}const p=new Float32Array(a),y=new Uint32Array(c),A=new Uint32Array(o),I=new Uint32Array(g),l=new Uint32Array(m);return{mesh:{numProp:s,triVerts:y,vertProperties:p,runIndex:A,mergeFromVert:I,mergeToVert:l},runProperties:T}}function yn(r,e,t){r.getRoot().listBuffers().length===0&&r.createBuffer();const s=r.getRoot().listBuffers()[0],i=r.createExtension(fr),n=r.createMesh(),a=Array(),c=Array(),o=new Map,g=e.runIndex.length-1;let m=-1;for(let h=0;h{if(R>=c.length)c.push(w);else{const O=X[w].components,S=X[c[R]].components;if(O!=S)throw new Error("Attribute sizes do not correspond: "+w+" and "+c[R]);X[c[R]].type==null&&(c[R]=w)}})}else o.set(E,["POSITION"]);n.addPrimitive(E)}a.push(e.runIndex[g]);const T=e.numVert,p=e.numProp;let y=0;c.forEach((h,f)=>{const d=X[h];if(d==null)throw new Error(h+" is not a recognized attribute.");if(d.type==null){++y;return}const E=d.components;if(y+E>p)throw new Error("Too many attribute channels.");const x=new Float32Array(E*T);for(let v=0;vf&&X[w[f]].type!=null&&v.setAttribute(h,N)}y+=E});const A=i.createManifoldPrimitive();n.setExtension("EXT_mesh_manifold",A);const I=r.createAccessor("manifold indices").setBuffer(s).setType(C.Type.SCALAR).setArray(e.triVerts);A.setIndices(I),A.setRunIndex(a);const l=[...Array(e.numVert).keys()],b=Array(),u=Array();if(e.mergeFromVert&&e.mergeToVert){for(const[h,f]of e.mergeFromVert.entries())l[f]=e.mergeToVert[h];for(const[h,f]of e.triVerts.entries()){const d=l[f];f!==d&&(b.push(h),u.push(d))}}if(b.length>0){const h=r.createAccessor("merge from").setBuffer(s).setType(C.Type.SCALAR).setArray(new Uint32Array(b)),f=r.createAccessor("merge to").setBuffer(s).setType(C.Type.SCALAR).setArray(new Uint32Array(u));A.setMerge(h,f)}return n}function En(r){if(!r)return;const e=r.listPrimitives();for(const s of e){s.getIndices()?.dispose();for(const i of s.listAttributes())i.dispose()}const t=r.getExtension("EXT_mesh_manifold");t&&(t.getIndices()?.dispose(),t.getMergeIndices()?.dispose(),t.getMergeValues()?.dispose()),r.dispose()}function gr(r,e,t,s){const i=e.getArray(),n=e.getElementSize(),a=e.getCount();for(let c=0;cchild edges on this graph. */\n listEdges() {\n return Array.from(this._edges);\n }\n /** Returns a list of all edges on the graph having the given node as their child. */\n\n\n listParentEdges(node) {\n return Array.from(this._childEdges.get(node) || this._emptySet);\n }\n /** Returns a list of parent nodes for the given child node. */\n\n\n listParents(node) {\n return this.listParentEdges(node).map(edge => edge.getParent());\n }\n /** Returns a list of all edges on the graph having the given node as their parent. */\n\n\n listChildEdges(node) {\n return Array.from(this._parentEdges.get(node) || this._emptySet);\n }\n /** Returns a list of child nodes for the given parent node. */\n\n\n listChildren(node) {\n return this.listChildEdges(node).map(edge => edge.getChild());\n }\n\n disconnectParents(node, filter) {\n let edges = this.listParentEdges(node);\n\n if (filter) {\n edges = edges.filter(edge => filter(edge.getParent()));\n }\n\n edges.forEach(edge => edge.dispose());\n return this;\n }\n /**\n * Creates a {@link GraphEdge} connecting two {@link GraphNode} instances. Edge is returned\n * for the caller to store.\n * @param a Owner\n * @param b Resource\n */\n\n\n createEdge(name, a, b, attributes) {\n return this._registerEdge(new GraphEdge(name, a, b, attributes));\n }\n /**********************************************************************************************\n * Internal.\n */\n\n /** @hidden */\n\n\n _registerEdge(edge) {\n this._edges.add(edge);\n\n const parent = edge.getParent();\n if (!this._parentEdges.has(parent)) this._parentEdges.set(parent, new Set());\n\n this._parentEdges.get(parent).add(edge);\n\n const child = edge.getChild();\n if (!this._childEdges.has(child)) this._childEdges.set(child, new Set());\n\n this._childEdges.get(child).add(edge);\n\n edge.addEventListener('dispose', () => this._removeEdge(edge));\n return edge;\n }\n /**\n * Removes the {@link GraphEdge} from the {@link Graph}. This method should only\n * be invoked by the onDispose() listener created in {@link _registerEdge()}. The\n * public method of removing an edge is {@link GraphEdge.dispose}.\n */\n\n\n _removeEdge(edge) {\n this._edges.delete(edge);\n\n this._parentEdges.get(edge.getParent()).delete(edge);\n\n this._childEdges.get(edge.getChild()).delete(edge);\n\n return this;\n }\n\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction isRef(value) {\n return value instanceof GraphEdge;\n}\nfunction isRefList(value) {\n return Array.isArray(value) && value[0] instanceof GraphEdge;\n}\nfunction isRefMap(value) {\n return !!(isPlainObject(value) && getFirstValue(value) instanceof GraphEdge);\n}\n\nfunction getFirstValue(value) {\n for (const key in value) {\n return value[key];\n }\n}\n\nfunction isPlainObject(value) {\n return Boolean(value) && Object.getPrototypeOf(value) === Object.prototype;\n}\n\nconst $attributes = Symbol('attributes');\nconst $immutableKeys = Symbol('immutableKeys');\n/**\n * Represents a node in a {@link Graph}.\n */\n\nclass GraphNode extends EventDispatcher {\n /**\n * Internal graph used to search and maintain references.\n * @hidden\n */\n\n /**\n * Attributes (literal values and GraphNode references) associated with this instance. For each\n * GraphNode reference, the attributes stores a {@link GraphEdge}. List and Map references are\n * stored as arrays and dictionaries of edges.\n * @internal\n */\n\n /**\n * Attributes included with `getDefaultAttributes` are considered immutable, and cannot be\n * modifed by `.setRef()`, `.copy()`, or other GraphNode methods. Both the edges and the\n * properties will be disposed with the parent GraphNode.\n *\n * Currently, only single-edge references (getRef/setRef) are supported as immutables.\n *\n * @internal\n */\n constructor(graph) {\n super();\n this._disposed = false;\n this.graph = void 0;\n this[$attributes] = void 0;\n this[$immutableKeys] = void 0;\n this.graph = graph;\n this[$immutableKeys] = new Set();\n this[$attributes] = this._createAttributes();\n }\n /**\n * Returns default attributes for the graph node. Subclasses having any attributes (either\n * literal values or references to other graph nodes) must override this method. Literal\n * attributes should be given their default values, if any. References should generally be\n * initialized as empty (Ref → null, RefList → [], RefMap → {}) and then modified by setters.\n *\n * Any single-edge references (setRef) returned by this method will be considered immutable,\n * to be owned by and disposed with the parent node. Multi-edge references (addRef, removeRef,\n * setRefMap) cannot be returned as default attributes.\n */\n\n\n getDefaults() {\n return {};\n }\n /**\n * Constructs and returns an object used to store a graph nodes attributes. Compared to the\n * default Attributes interface, this has two distinctions:\n *\n * 1. Slots for GraphNode objects are replaced with slots for GraphEdge>\n * 2. GraphNode objects provided as defaults are considered immutable\n *\n * @internal\n */\n\n\n _createAttributes() {\n const defaultAttributes = this.getDefaults();\n const attributes = {};\n\n for (const key in defaultAttributes) {\n const value = defaultAttributes[key];\n\n if (value instanceof GraphNode) {\n const ref = this.graph.createEdge(key, this, value);\n ref.addEventListener('dispose', () => value.dispose());\n this[$immutableKeys].add(key);\n attributes[key] = ref;\n } else {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n /** @internal Returns true if two nodes are on the same {@link Graph}. */\n\n\n isOnGraph(other) {\n return this.graph === other.graph;\n }\n /** Returns true if the node has been permanently removed from the graph. */\n\n\n isDisposed() {\n return this._disposed;\n }\n /**\n * Removes both inbound references to and outbound references from this object. At the end\n * of the process the object holds no references, and nothing holds references to it. A\n * disposed object is not reusable.\n */\n\n\n dispose() {\n if (this._disposed) return;\n this.graph.listChildEdges(this).forEach(edge => edge.dispose());\n this.graph.disconnectParents(this);\n this._disposed = true;\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n /**\n * Removes all inbound references to this object. At the end of the process the object is\n * considered 'detached': it may hold references to child resources, but nothing holds\n * references to it. A detached object may be re-attached.\n */\n\n\n detach() {\n this.graph.disconnectParents(this);\n return this;\n }\n /**\n * Transfers this object's references from the old node to the new one. The old node is fully\n * detached from this parent at the end of the process.\n *\n * @hidden\n */\n\n\n swap(old, replacement) {\n for (const attribute in this[$attributes]) {\n const value = this[$attributes][attribute];\n\n if (isRef(value)) {\n const ref = value;\n\n if (ref.getChild() === old) {\n this.setRef(attribute, replacement, ref.getAttributes());\n }\n } else if (isRefList(value)) {\n const refs = value;\n const ref = refs.find(ref => ref.getChild() === old);\n\n if (ref) {\n const refAttributes = ref.getAttributes();\n this.removeRef(attribute, old).addRef(attribute, replacement, refAttributes);\n }\n } else if (isRefMap(value)) {\n const refMap = value;\n\n for (const key in refMap) {\n const ref = refMap[key];\n\n if (ref.getChild() === old) {\n this.setRefMap(attribute, key, replacement, ref.getAttributes());\n }\n }\n }\n }\n\n return this;\n }\n /**********************************************************************************************\n * Literal attributes.\n */\n\n /** @hidden */\n\n\n get(attribute) {\n return this[$attributes][attribute];\n }\n /** @hidden */\n\n\n set(attribute, value) {\n this[$attributes][attribute] = value;\n return this.dispatchEvent({\n type: 'change',\n attribute\n });\n }\n /**********************************************************************************************\n * Ref: 1:1 graph node references.\n */\n\n /** @hidden */\n\n\n getRef(attribute) {\n const ref = this[$attributes][attribute];\n return ref ? ref.getChild() : null;\n }\n /** @hidden */\n\n\n setRef(attribute, value, attributes) {\n if (this[$immutableKeys].has(attribute)) {\n throw new Error(`Cannot overwrite immutable attribute, \"${attribute}\".`);\n }\n\n const prevRef = this[$attributes][attribute];\n if (prevRef) prevRef.dispose(); // TODO(cleanup): Possible duplicate event.\n\n if (!value) return this;\n const ref = this.graph.createEdge(attribute, this, value, attributes);\n ref.addEventListener('dispose', () => {\n delete this[$attributes][attribute];\n this.dispatchEvent({\n type: 'change',\n attribute\n });\n });\n this[$attributes][attribute] = ref;\n return this.dispatchEvent({\n type: 'change',\n attribute\n });\n }\n /**********************************************************************************************\n * RefList: 1:many graph node references.\n */\n\n /** @hidden */\n\n\n listRefs(attribute) {\n const refs = this[$attributes][attribute];\n return refs.map(ref => ref.getChild());\n }\n /** @hidden */\n\n\n addRef(attribute, value, attributes) {\n const ref = this.graph.createEdge(attribute, this, value, attributes);\n const refs = this[$attributes][attribute];\n refs.push(ref);\n ref.addEventListener('dispose', () => {\n let index;\n\n while ((index = refs.indexOf(ref)) !== -1) {\n refs.splice(index, 1);\n }\n\n this.dispatchEvent({\n type: 'change',\n attribute\n });\n });\n return this.dispatchEvent({\n type: 'change',\n attribute\n });\n }\n /** @hidden */\n\n\n removeRef(attribute, value) {\n const refs = this[$attributes][attribute];\n const pruned = refs.filter(ref => ref.getChild() === value);\n pruned.forEach(ref => ref.dispose()); // TODO(cleanup): Possible duplicate event.\n\n return this;\n }\n /**********************************************************************************************\n * RefMap: Named 1:many (map) graph node references.\n */\n\n /** @hidden */\n\n\n listRefMapKeys(key) {\n return Object.keys(this[$attributes][key]);\n }\n /** @hidden */\n\n\n listRefMapValues(key) {\n return Object.values(this[$attributes][key]).map(ref => ref.getChild());\n }\n /** @hidden */\n\n\n getRefMap(attribute, key) {\n const refMap = this[$attributes][attribute];\n return refMap[key] ? refMap[key].getChild() : null;\n }\n /** @hidden */\n\n\n setRefMap(attribute, key, value, metadata) {\n const refMap = this[$attributes][attribute];\n const prevRef = refMap[key];\n if (prevRef) prevRef.dispose(); // TODO(cleanup): Possible duplicate event.\n\n if (!value) return this;\n metadata = Object.assign(metadata || {}, {\n key: key\n });\n const ref = this.graph.createEdge(attribute, this, value, _extends({}, metadata, {\n key\n }));\n ref.addEventListener('dispose', () => {\n delete refMap[key];\n this.dispatchEvent({\n type: 'change',\n attribute,\n key\n });\n });\n refMap[key] = ref;\n return this.dispatchEvent({\n type: 'change',\n attribute,\n key\n });\n }\n /**********************************************************************************************\n * Events.\n */\n\n /**\n * Dispatches an event on the GraphNode, and on the associated\n * Graph. Event types on the graph are prefixed, `\"node:[type]\"`.\n */\n\n\n dispatchEvent(event) {\n super.dispatchEvent(_extends({}, event, {\n target: this\n }));\n this.graph.dispatchEvent(_extends({}, event, {\n target: this,\n type: `node:${event.type}`\n }));\n return this;\n }\n\n}\n\nexport { $attributes, $immutableKeys, EventDispatcher, Graph, GraphEdge, GraphNode, isRef, isRefList, isRefMap };\n//# sourceMappingURL=property-graph.modern.js.map\n","import{GraphNode as t,$attributes as e,GraphEdge as r,$immutableKeys as s,isRefList as n,isRefMap as i,isRef as o,Graph as a}from\"property-graph\";export{Graph,GraphEdge}from\"property-graph\";const u=\"v3.8.0\",c=\"@glb.bin\";var h,f,l,d,g;!function(t){t.ACCESSOR=\"Accessor\",t.ANIMATION=\"Animation\",t.ANIMATION_CHANNEL=\"AnimationChannel\",t.ANIMATION_SAMPLER=\"AnimationSampler\",t.BUFFER=\"Buffer\",t.CAMERA=\"Camera\",t.MATERIAL=\"Material\",t.MESH=\"Mesh\",t.PRIMITIVE=\"Primitive\",t.PRIMITIVE_TARGET=\"PrimitiveTarget\",t.NODE=\"Node\",t.ROOT=\"Root\",t.SCENE=\"Scene\",t.SKIN=\"Skin\",t.TEXTURE=\"Texture\",t.TEXTURE_INFO=\"TextureInfo\"}(h||(h={})),function(t){t.INTERLEAVED=\"interleaved\",t.SEPARATE=\"separate\"}(f||(f={})),function(t){t.ARRAY_BUFFER=\"ARRAY_BUFFER\",t.ELEMENT_ARRAY_BUFFER=\"ELEMENT_ARRAY_BUFFER\",t.INVERSE_BIND_MATRICES=\"INVERSE_BIND_MATRICES\",t.OTHER=\"OTHER\",t.SPARSE=\"SPARSE\"}(l||(l={})),function(t){t[t.R=4096]=\"R\",t[t.G=256]=\"G\",t[t.B=16]=\"B\",t[t.A=1]=\"A\"}(d||(d={})),function(t){t.GLTF=\"GLTF\",t.GLB=\"GLB\"}(g||(g={}));const p={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};var m,w=\"undefined\"!=typeof Float32Array?Float32Array:Array;function y(t){return Math.hypot(t[0],t[1],t[2])}function v(t,e,r){var s=e[0],n=e[1],i=e[2],o=r[3]*s+r[7]*n+r[11]*i+r[15];return t[0]=(r[0]*s+r[4]*n+r[8]*i+r[12])/(o=o||1),t[1]=(r[1]*s+r[5]*n+r[9]*i+r[13])/o,t[2]=(r[2]*s+r[6]*n+r[10]*i+r[14])/o,t}function T(t){const e={min:[Infinity,Infinity,Infinity],max:[-Infinity,-Infinity,-Infinity]},r=t.propertyType===h.NODE?[t]:t.listChildren();for(const t of r)t.traverse(t=>{const r=t.getMesh();if(!r)return;const s=x(r,t.getWorldMatrix());A(s.min,e),A(s.max,e)});return e}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)}),m=new w(3),w!=Float32Array&&(m[0]=0,m[1]=0,m[2]=0);const b=T;function x(t,e){const r={min:[Infinity,Infinity,Infinity],max:[-Infinity,-Infinity,-Infinity]};for(const s of t.listPrimitives()){const t=s.getAttribute(\"POSITION\");if(!t)continue;let n=[0,0,0],i=[0,0,0];for(let s=0;s=0;return Buffer.from(e,r?\"base64\":\"utf8\")}}static encodeText(t){return\"undefined\"!=typeof TextEncoder?(new TextEncoder).encode(t):Buffer.from(t)}static decodeText(t){return\"undefined\"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString(\"utf8\")}static concat(t){let e=0;for(const r of t)e+=r.byteLength;const r=new Uint8Array(e);let s=0;for(const e of t)r.set(e,s),s+=e.byteLength;return r}static pad(t,e=0){const r=this.padNumber(t.byteLength);if(r===t.byteLength)return t;const s=new Uint8Array(r);if(s.set(t),0!==e)for(let n=t.byteLength;n>16&255)/255,r[1]=(t>>8&255)/255,r[2]=(255&t)/255,this.convertSRGBToLinear(e,e)}static factorToHex(t){const e=[...t],[r,s,n]=this.convertLinearToSRGB(t,e);return 255*r<<16^255*s<<8^255*n<<0}static convertSRGBToLinear(t,e){const r=t,s=e;for(let t=0;t<3;t++)s[t]=r[t]<.04045?.0773993808*r[t]:Math.pow(.9478672986*r[t]+.0521327014,2.4);return e}static convertLinearToSRGB(t,e){const r=t,s=e;for(let t=0;t<3;t++)s[t]=r[t]<.0031308?12.92*r[t]:1.055*Math.pow(r[t],.41666)-.055;return e}}class M{match(t){return t.length>=8&&137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]&&13===t[4]&&10===t[5]&&26===t[6]&&10===t[7]}getSize(t){const e=new DataView(t.buffer,t.byteOffset);return E.decodeText(t.slice(12,16))===M.PNG_FRIED_CHUNK_NAME?[e.getUint32(32,!1),e.getUint32(36,!1)]:[e.getUint32(16,!1),e.getUint32(20,!1)]}getChannels(t){return 4}}M.PNG_FRIED_CHUNK_NAME=\"CgBI\";class I{static registerFormat(t,e){this.impls[t]=e}static getMimeType(t){for(const e in this.impls)if(this.impls[e].match(t))return e;return null}static getSize(t,e){return this.impls[e]?this.impls[e].getSize(t):null}static getChannels(t,e){return this.impls[e]?this.impls[e].getChannels(t):null}static getVRAMByteLength(t,e){if(!this.impls[e])return null;if(this.impls[e].getVRAMByteLength)return this.impls[e].getVRAMByteLength(t);let r=0;const s=this.getSize(t,e);if(!s)return null;for(;s[0]>1||s[1]>1;)r+=s[0]*s[1]*4,s[0]=Math.max(Math.floor(s[0]/2),1),s[1]=Math.max(Math.floor(s[1]/2),1);return r+=4,r}static mimeTypeToExtension(t){return\"image/jpeg\"===t?\"jpg\":t.split(\"/\").pop()}static extensionToMimeType(t){return\"jpg\"===t?\"image/jpeg\":t?`image/${t}`:\"\"}}function R(t,e){if(e>t.byteLength)throw new TypeError(\"Corrupt JPG, exceeded buffer limits\");if(255!==t.getUint8(e))throw new TypeError(\"Invalid JPG, marker table corrupted\");return t}I.impls={\"image/jpeg\":new class{match(t){return t.length>=3&&255===t[0]&&216===t[1]&&255===t[2]}getSize(t){let e,r,s=new DataView(t.buffer,t.byteOffset+4);for(;s.byteLength;){if(e=s.getUint16(0,!1),R(s,e),r=s.getUint8(e+1),192===r||193===r||194===r)return[s.getUint16(e+7,!1),s.getUint16(e+5,!1)];s=new DataView(t.buffer,s.byteOffset+e+2)}throw new TypeError(\"Invalid JPG, no size found\")}getChannels(t){return 3}},\"image/png\":new M};class N{static basename(t){const e=t.split(/[\\\\/]/).pop();return e.substring(0,e.lastIndexOf(\".\"))}static extension(t){if(t.startsWith(\"data:image/\")){const e=t.match(/data:(image\\/\\w+)/)[1];return I.mimeTypeToExtension(e)}return t.startsWith(\"data:model/gltf+json\")?\"gltf\":t.startsWith(\"data:model/gltf-binary\")?\"glb\":t.startsWith(\"data:application/\")?\"bin\":t.split(/[\\\\/]/).pop().split(/[.]/).pop()}}function O(t){return\"[object Object]\"===Object.prototype.toString.call(t)}function C(t){if(!1===O(t))return!1;const e=t.constructor;if(void 0===e)return!0;const r=e.prototype;return!1!==O(r)&&!1!==Object.prototype.hasOwnProperty.call(r,\"isPrototypeOf\")}var F,U;!function(t){t[t.SILENT=4]=\"SILENT\",t[t.ERROR=3]=\"ERROR\",t[t.WARN=2]=\"WARN\",t[t.INFO=1]=\"INFO\",t[t.DEBUG=0]=\"DEBUG\"}(U||(U={}));class B{constructor(t){this.verbosity=void 0,this.verbosity=t}debug(t){this.verbosity<=B.Verbosity.DEBUG&&console.debug(t)}info(t){this.verbosity<=B.Verbosity.INFO&&console.info(t)}warn(t){this.verbosity<=B.Verbosity.WARN&&console.warn(t)}error(t){this.verbosity<=B.Verbosity.ERROR&&console.error(t)}}function P(t,e,r){var s=e[0],n=e[1],i=e[2],o=e[3],a=e[4],u=e[5],c=e[6],h=e[7],f=e[8],l=e[9],d=e[10],g=e[11],p=e[12],m=e[13],w=e[14],y=e[15],v=r[0],T=r[1],b=r[2],x=r[3];return t[0]=v*s+T*a+b*f+x*p,t[1]=v*n+T*u+b*l+x*m,t[2]=v*i+T*c+b*d+x*w,t[3]=v*o+T*h+b*g+x*y,t[4]=(v=r[4])*s+(T=r[5])*a+(b=r[6])*f+(x=r[7])*p,t[5]=v*n+T*u+b*l+x*m,t[6]=v*i+T*c+b*d+x*w,t[7]=v*o+T*h+b*g+x*y,t[8]=(v=r[8])*s+(T=r[9])*a+(b=r[10])*f+(x=r[11])*p,t[9]=v*n+T*u+b*l+x*m,t[10]=v*i+T*c+b*d+x*w,t[11]=v*o+T*h+b*g+x*y,t[12]=(v=r[12])*s+(T=r[13])*a+(b=r[14])*f+(x=r[15])*p,t[13]=v*n+T*u+b*l+x*m,t[14]=v*i+T*c+b*d+x*w,t[15]=v*o+T*h+b*g+x*y,t}F=B,B.Verbosity=U,B.DEFAULT_INSTANCE=new F(F.Verbosity.INFO);class L{static identity(t){return t}static eq(t,e,r=1e-5){if(t.length!==e.length)return!1;for(let s=0;sr)return!1;return!0}static decodeNormalizedInt(t,e){switch(e){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1);default:throw new Error(\"Invalid component type.\")}}static denormalize(t,e){return L.decodeNormalizedInt(t,e)}static encodeNormalizedInt(t,e){switch(e){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t);default:throw new Error(\"Invalid component type.\")}}static normalize(t,e){return L.encodeNormalizedInt(t,e)}static decompose(t,e,r,s){let n=y([t[0],t[1],t[2]]);const i=y([t[4],t[5],t[6]]),o=y([t[8],t[9],t[10]]);var a,u,c,h,f,l,d,g,p,m,v,T,b,x,A,E,S;((u=(a=t)[0])*(d=a[5])-(c=a[1])*(l=a[4]))*((T=a[10])*(S=a[15])-(b=a[11])*(E=a[14]))-(u*(g=a[6])-(h=a[2])*l)*((v=a[9])*S-b*(A=a[13]))+(u*(p=a[7])-(f=a[3])*l)*(v*E-T*A)+(c*g-h*d)*((m=a[8])*S-b*(x=a[12]))-(c*p-f*d)*(m*E-T*x)+(h*p-f*g)*(m*A-v*x)<0&&(n=-n),e[0]=t[12],e[1]=t[13],e[2]=t[14];const M=t.slice(),I=1/n,R=1/i,N=1/o;M[0]*=I,M[1]*=I,M[2]*=I,M[4]*=R,M[5]*=R,M[6]*=R,M[8]*=N,M[9]*=N,M[10]*=N,function(t,e){var r=new w(3);!function(t,e){var r=e[4],s=e[5],n=e[6],i=e[8],o=e[9],a=e[10];t[0]=Math.hypot(e[0],e[1],e[2]),t[1]=Math.hypot(r,s,n),t[2]=Math.hypot(i,o,a)}(r,e);var s=1/r[0],n=1/r[1],i=1/r[2],o=e[0]*s,a=e[1]*n,u=e[2]*i,c=e[4]*s,h=e[5]*n,f=e[6]*i,l=e[8]*s,d=e[9]*n,g=e[10]*i,p=o+h+g,m=0;p>0?(m=2*Math.sqrt(p+1),t[3]=.25*m,t[0]=(f-d)/m,t[1]=(l-u)/m,t[2]=(a-c)/m):o>h&&o>g?(m=2*Math.sqrt(1+o-h-g),t[3]=(f-d)/m,t[0]=.25*m,t[1]=(a+c)/m,t[2]=(l+u)/m):h>g?(m=2*Math.sqrt(1+h-o-g),t[3]=(l-u)/m,t[0]=(a+c)/m,t[1]=.25*m,t[2]=(f+d)/m):(m=2*Math.sqrt(1+g-o-h),t[3]=(a-c)/m,t[0]=(l+u)/m,t[1]=(f+d)/m,t[2]=.25*m)}(r,M),s[0]=n,s[1]=i,s[2]=o}static compose(t,e,r,s){const n=s,i=e[0],o=e[1],a=e[2],u=e[3],c=i+i,h=o+o,f=a+a,l=i*c,d=i*h,g=i*f,p=o*h,m=o*f,w=a*f,y=u*c,v=u*h,T=u*f,b=r[0],x=r[1],A=r[2];return n[0]=(1-(p+w))*b,n[1]=(d+T)*b,n[2]=(g-v)*b,n[3]=0,n[4]=(d-T)*x,n[5]=(1-(l+w))*x,n[6]=(m+y)*x,n[7]=0,n[8]=(g+v)*A,n[9]=(m-y)*A,n[10]=(1-(l+p))*A,n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n}}function j(t,e){if(!!t!=!!e)return!1;const r=t.getChild(),s=e.getChild();return r===s||r.equals(s)}function D(t,e){if(!!t!=!!e)return!1;if(t.length!==e.length)return!1;for(let r=0;rt,Y=new Set;class Z extends t{constructor(t,r=\"\"){super(t),this[e].name=r,this.init(),this.dispatchEvent({type:\"create\"})}getGraph(){return this.graph}getDefaults(){return Object.assign(super.getDefaults(),{name:\"\",extras:{}})}set(t,e){return Array.isArray(e)&&(e=e.slice()),super.set(t,e)}getName(){return this.get(\"name\")}setName(t){return this.set(\"name\",t)}getExtras(){return this.get(\"extras\")}setExtras(t){return this.set(\"extras\",t)}clone(){return new(0,this.constructor)(this.graph).copy(this,H)}copy(t,o=H){for(const t in this[e]){const o=this[e][t];if(o instanceof r)this[s].has(t)||o.dispose();else if(n(o))for(const t of o)t.dispose();else if(i(o))for(const t in o)o[t].dispose()}for(const a in t[e]){const u=this[e][a],c=t[e][a];if(c instanceof r)this[s].has(a)?u.getChild().copy(o(c.getChild()),o):this.setRef(a,o(c.getChild()),c.getAttributes());else if(n(c))for(const t of c)this.addRef(a,o(t.getChild()),t.getAttributes());else if(i(c))for(const t in c){const e=c[t];this.setRefMap(a,t,o(e.getChild()),e.getAttributes())}else this[e][a]=C(c)?JSON.parse(JSON.stringify(c)):Array.isArray(c)||c instanceof ArrayBuffer||ArrayBuffer.isView(c)?c.slice():c}return this}equals(t,r=Y){if(this===t)return!0;if(this.propertyType!==t.propertyType)return!1;for(const s in this[e]){if(r.has(s))continue;const a=this[e][s],u=t[e][s];if(o(a)||o(u)){if(!j(a,u))return!1}else if(n(a)||n(u)){if(!D(a,u))return!1}else if(i(a)||i(u)){if(!_(a,u))return!1}else if(C(a)||C(u)){if(!z(a,u))return!1}else if(G(a)||G(u)){if(!k(a,u))return!1}else if(a!==u)return!1}return!0}detach(){return this.graph.disconnectParents(this,t=>\"Root\"!==t.propertyType),this}listParents(){return this.graph.listParents(this)}}class K extends Z{getDefaults(){return Object.assign(super.getDefaults(),{extensions:{}})}getExtension(t){return this.getRefMap(\"extensions\",t)}setExtension(t,e){return e&&e.t(this),this.setRefMap(\"extensions\",t,e)}listExtensions(){return this.listRefMapValues(\"extensions\")}}class Q extends K{constructor(...t){super(...t),this.i=L.identity,this.o=L.identity}init(){this.propertyType=h.ACCESSOR}getDefaults(){return Object.assign(super.getDefaults(),{array:null,type:Q.Type.SCALAR,componentType:Q.ComponentType.FLOAT,normalized:!1,sparse:!1,buffer:null})}copy(t,e=H){return super.copy(t,e),this.i=t.i,this.o=t.o,this}static getElementSize(t){switch(t){case Q.Type.SCALAR:return 1;case Q.Type.VEC2:return 2;case Q.Type.VEC3:return 3;case Q.Type.VEC4:case Q.Type.MAT2:return 4;case Q.Type.MAT3:return 9;case Q.Type.MAT4:return 16;default:throw new Error(\"Unexpected type: \"+t)}}static getComponentSize(t){switch(t){case Q.ComponentType.BYTE:case Q.ComponentType.UNSIGNED_BYTE:return 1;case Q.ComponentType.SHORT:case Q.ComponentType.UNSIGNED_SHORT:return 2;case Q.ComponentType.UNSIGNED_INT:case Q.ComponentType.FLOAT:return 4;default:throw new Error(\"Unexpected component type: \"+t)}}getMinNormalized(t){const e=this.getElementSize();this.getMin(t);for(let r=0;rL.decodeNormalizedInt(t,this.get(\"componentType\")),this.i=t=>L.encodeNormalizedInt(t,this.get(\"componentType\"))):(this.o=L.identity,this.i=L.identity),this}getScalar(t){const e=this.getElementSize();return this.o(this.get(\"array\")[t*e])}setScalar(t,e){return this.get(\"array\")[t*this.getElementSize()]=this.i(e),this}getElement(t,e){const r=this.getElementSize(),s=this.get(\"array\");for(let n=0;nt.u=null),this}removeChild(t){return this.removeRef(\"children\",t)}listChildren(){return this.listRefs(\"children\")}getParent(){return this.u?this.u:this.listParents().find(t=>t.propertyType===h.SCENE)||null}getParentNode(){return this.u}getMesh(){return this.getRef(\"mesh\")}setMesh(t){return this.setRef(\"mesh\",t)}getCamera(){return this.getRef(\"camera\")}setCamera(t){return this.setRef(\"camera\",t)}getSkin(){return this.getRef(\"skin\")}setSkin(t){return this.setRef(\"skin\",t)}getWeights(){return this.get(\"weights\")}setWeights(t){return this.set(\"weights\",t)}traverse(t){t(this);for(const e of this.listChildren())e.traverse(t);return this}}class dt extends K{init(){this.propertyType=h.PRIMITIVE}getDefaults(){return Object.assign(super.getDefaults(),{mode:dt.Mode.TRIANGLES,material:null,indices:null,attributes:{},targets:[]})}getIndices(){return this.getRef(\"indices\")}setIndices(t){return this.setRef(\"indices\",t,{usage:l.ELEMENT_ARRAY_BUFFER})}getAttribute(t){return this.getRefMap(\"attributes\",t)}setAttribute(t,e){return this.setRefMap(\"attributes\",t,e,{usage:l.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues(\"attributes\")}listSemantics(){return this.listRefMapKeys(\"attributes\")}getMaterial(){return this.getRef(\"material\")}setMaterial(t){return this.setRef(\"material\",t)}getMode(){return this.get(\"mode\")}setMode(t){return this.set(\"mode\",t)}listTargets(){return this.listRefs(\"targets\")}addTarget(t){return this.addRef(\"targets\",t)}removeTarget(t){return this.removeRef(\"targets\",t)}}dt.Mode={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class gt extends Z{init(){this.propertyType=h.PRIMITIVE_TARGET}getDefaults(){return Object.assign(super.getDefaults(),{attributes:{}})}getAttribute(t){return this.getRefMap(\"attributes\",t)}setAttribute(t,e){return this.setRefMap(\"attributes\",t,e,{usage:l.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues(\"attributes\")}listSemantics(){return this.listRefMapKeys(\"attributes\")}}function pt(){return pt=Object.assign?Object.assign.bind():function(t){for(var e=1;et.h.delete(this)),this}removeChild(t){return this.removeRef(\"children\",t)}listChildren(){return this.listRefs(\"children\")}traverse(t){for(const e of this.listChildren())e.traverse(t);return this}}class wt extends K{init(){this.propertyType=h.SKIN}getDefaults(){return Object.assign(super.getDefaults(),{skeleton:null,inverseBindMatrices:null,joints:[]})}getSkeleton(){return this.getRef(\"skeleton\")}setSkeleton(t){return this.setRef(\"skeleton\",t)}getInverseBindMatrices(){return this.getRef(\"inverseBindMatrices\")}setInverseBindMatrices(t){return this.setRef(\"inverseBindMatrices\",t,{usage:l.INVERSE_BIND_MATRICES})}addJoint(t){return this.addRef(\"joints\",t)}removeJoint(t){return this.removeRef(\"joints\",t)}listJoints(){return this.listRefs(\"joints\")}}class yt extends K{init(){this.propertyType=h.TEXTURE}getDefaults(){return Object.assign(super.getDefaults(),{image:null,mimeType:\"\",uri:\"\"})}getMimeType(){return this.get(\"mimeType\")||I.extensionToMimeType(N.extension(this.get(\"uri\")))}setMimeType(t){return this.set(\"mimeType\",t)}getURI(){return this.get(\"uri\")}setURI(t){this.set(\"uri\",t);const e=I.extensionToMimeType(N.extension(t));return e&&this.set(\"mimeType\",e),this}getImage(){return this.get(\"image\")}setImage(t){return this.set(\"image\",E.assertView(t))}getSize(){const t=this.get(\"image\");return t?I.getSize(t,this.getMimeType()):null}}class vt extends K{init(){this.propertyType=h.ROOT}getDefaults(){return Object.assign(super.getDefaults(),{asset:{generator:`glTF-Transform ${u}`,version:\"2.0\"},defaultScene:null,accessors:[],animations:[],buffers:[],cameras:[],materials:[],meshes:[],nodes:[],scenes:[],skins:[],textures:[]})}constructor(t){super(t),this.l=new Set,t.addEventListener(\"node:create\",t=>{this.g(t.target)})}clone(){throw new Error(\"Root cannot be cloned.\")}copy(t,e=H){if(e===H)throw new Error(\"Root cannot be copied.\");this.set(\"asset\",pt({},t.get(\"asset\"))),this.setName(t.getName()),this.setExtras(pt({},t.getExtras())),this.setDefaultScene(t.getDefaultScene()?e(t.getDefaultScene()):null);for(const r of t.listRefMapKeys(\"extensions\")){const s=t.getExtension(r);this.setExtension(r,e(s))}return this}g(t){return t instanceof mt?this.addRef(\"scenes\",t):t instanceof lt?this.addRef(\"nodes\",t):t instanceof st?this.addRef(\"cameras\",t):t instanceof wt?this.addRef(\"skins\",t):t instanceof ft?this.addRef(\"meshes\",t):t instanceof ht?this.addRef(\"materials\",t):t instanceof yt?this.addRef(\"textures\",t):t instanceof X?this.addRef(\"animations\",t):t instanceof Q?this.addRef(\"accessors\",t):t instanceof rt&&this.addRef(\"buffers\",t),this}getAsset(){return this.get(\"asset\")}listExtensionsUsed(){return Array.from(this.l)}listExtensionsRequired(){return this.listExtensionsUsed().filter(t=>t.isRequired())}p(t){return this.l.add(t),this}m(t){return this.l.delete(t),this}listScenes(){return this.listRefs(\"scenes\")}setDefaultScene(t){return this.setRef(\"defaultScene\",t)}getDefaultScene(){return this.getRef(\"defaultScene\")}listNodes(){return this.listRefs(\"nodes\")}listCameras(){return this.listRefs(\"cameras\")}listSkins(){return this.listRefs(\"skins\")}listMeshes(){return this.listRefs(\"meshes\")}listMaterials(){return this.listRefs(\"materials\")}listTextures(){return this.listRefs(\"textures\")}listAnimations(){return this.listRefs(\"animations\")}listAccessors(){return this.listRefs(\"accessors\")}listBuffers(){return this.listRefs(\"buffers\")}}class Tt{static fromGraph(t){return Tt.v.get(t)||null}constructor(){this.T=new a,this.S=new vt(this.T),this.M=B.DEFAULT_INSTANCE,Tt.v.set(this.T,this)}getRoot(){return this.S}getGraph(){return this.T}getLogger(){return this.M}setLogger(t){return this.M=t,this}clone(){return(new Tt).setLogger(this.M).merge(this)}merge(t){for(const e of t.getRoot().listExtensionsUsed()){const t=this.createExtension(e.constructor);e.isRequired()&&t.setRequired(!0)}const e=new Set,r=new Map;e.add(t.S),r.set(t.S,this.S);for(const s of t.T.listEdges())for(const t of[s.getParent(),s.getChild()]){if(e.has(t))continue;let s;s=t.propertyType===h.TEXTURE_INFO?t:new(0,t.constructor)(this.T),r.set(t,s),e.add(t)}const s=t=>{const e=r.get(t);if(!e)throw new Error(\"Could resolve property.\");return e};for(const t of e){const e=r.get(t);if(!e)throw new Error(\"Could resolve property.\");e.propertyType!==h.TEXTURE_INFO&&e.copy(t,s)}return this}async transform(...t){const e=t.map(t=>t.name);for(const r of t)await r(this,{stack:e});return this}createExtension(t){const e=t.EXTENSION_NAME;return this.getRoot().listExtensionsUsed().find(t=>t.extensionName===e)||new t(this)}createScene(t=\"\"){return new mt(this.T,t)}createNode(t=\"\"){return new lt(this.T,t)}createCamera(t=\"\"){return new st(this.T,t)}createSkin(t=\"\"){return new wt(this.T,t)}createMesh(t=\"\"){return new ft(this.T,t)}createPrimitive(){return new dt(this.T)}createPrimitiveTarget(t=\"\"){return new gt(this.T,t)}createMaterial(t=\"\"){return new ht(this.T,t)}createTexture(t=\"\"){return new yt(this.T,t)}createAnimation(t=\"\"){return new X(this.T,t)}createAnimationChannel(t=\"\"){return new tt(this.T,t)}createAnimationSampler(t=\"\"){return new et(this.T,t)}createAccessor(t=\"\",e=null){return e||(e=this.getRoot().listBuffers()[0]),new Q(this.T,t).setBuffer(e)}createBuffer(t=\"\"){return new rt(this.T,t)}}Tt.v=new WeakMap;class bt{constructor(t){this.extensionName=\"\",this.prereadTypes=[],this.prewriteTypes=[],this.readDependencies=[],this.writeDependencies=[],this.document=void 0,this.required=!1,this.properties=new Set,this.I=void 0,this.document=t,t.getRoot().p(this),this.I=t=>{const e=t,r=e.target;r instanceof nt&&r.extensionName===this.extensionName&&(\"node:create\"===e.type&&this.N(r),\"node:dispose\"===e.type&&this.O(r))};const e=t.getGraph();e.addEventListener(\"node:create\",this.I),e.addEventListener(\"node:dispose\",this.I)}dispose(){this.document.getRoot().m(this);const t=this.document.getGraph();t.removeEventListener(\"node:create\",this.I),t.removeEventListener(\"node:dispose\",this.I);for(const t of this.properties)t.dispose()}static register(){}isRequired(){return this.required}setRequired(t){return this.required=t,this}listProperties(){return Array.from(this.properties)}N(t){return this.properties.add(t),this}O(t){return this.properties.delete(t),this}install(t,e){return this}preread(t,e){return this}prewrite(t,e){return this}}bt.EXTENSION_NAME=void 0;class xt{constructor(t){this.jsonDoc=void 0,this.buffers=[],this.bufferViews=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.textureInfos=new Map,this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[],this.jsonDoc=t}setTextureInfo(t,e){this.textureInfos.set(t,e),void 0!==e.texCoord&&t.setTexCoord(e.texCoord),void 0!==e.extras&&t.setExtras(e.extras);const r=this.jsonDoc.json.textures[e.index];if(void 0===r.sampler)return;const s=this.jsonDoc.json.samplers[r.sampler];void 0!==s.magFilter&&t.setMagFilter(s.magFilter),void 0!==s.minFilter&&t.setMinFilter(s.minFilter),void 0!==s.wrapS&&t.setWrapS(s.wrapS),void 0!==s.wrapT&&t.setWrapT(s.wrapT)}}const At={logger:B.DEFAULT_INSTANCE,extensions:[],dependencies:{}};class Et{static read(t,e=At){const r=pt({},At,e),{json:s}=t,n=(new Tt).setLogger(r.logger);this.validate(t,r);const i=new xt(t),o=s.asset,a=n.getRoot().getAsset();o.copyright&&(a.copyright=o.copyright),o.extras&&(a.extras=o.extras),void 0!==s.extras&&n.getRoot().setExtras(pt({},s.extras));const u=s.extensionsUsed||[],f=s.extensionsRequired||[];for(const t of r.extensions)if(u.includes(t.EXTENSION_NAME)){const e=n.createExtension(t).setRequired(f.includes(t.EXTENSION_NAME));for(const t of e.readDependencies)e.install(t,r.dependencies[t])}const l=s.buffers||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.BUFFER)).forEach(t=>t.preread(i,h.BUFFER)),i.buffers=l.map(t=>{const e=n.createBuffer(t.name);return t.extras&&e.setExtras(t.extras),t.uri&&0!==t.uri.indexOf(\"__\")&&e.setURI(t.uri),e}),i.bufferViewBuffers=(s.bufferViews||[]).map((e,r)=>{if(!i.bufferViews[r]){const s=t.json.buffers[e.buffer];i.bufferViews[r]=E.toView(s.uri?t.resources[s.uri]:t.resources[c],e.byteOffset||0,e.byteLength)}return i.buffers[e.buffer]});const d=s.accessors||[];i.accessors=d.map(t=>{const e=n.createAccessor(t.name,i.bufferViewBuffers[t.bufferView]).setType(t.type);return t.extras&&e.setExtras(t.extras),void 0!==t.normalized&&e.setNormalized(t.normalized),void 0===t.bufferView||e.setArray(St(t,i)),e});const g=s.images||[],m=s.textures||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.TEXTURE)).forEach(t=>t.preread(i,h.TEXTURE)),i.textures=g.map(e=>{const r=n.createTexture(e.name);if(e.extras&&r.setExtras(e.extras),void 0!==e.bufferView){const n=s.bufferViews[e.bufferView],i=t.json.buffers[n.buffer],o=n.byteOffset||0,a=(i.uri?t.resources[i.uri]:t.resources[c]).slice(o,o+n.byteLength);r.setImage(a)}else void 0!==e.uri&&(r.setImage(t.resources[e.uri]),0!==e.uri.indexOf(\"__\")&&r.setURI(e.uri));if(void 0!==e.mimeType)r.setMimeType(e.mimeType);else if(e.uri){const t=N.extension(e.uri);r.setMimeType(I.extensionToMimeType(t))}return r}),i.materials=(s.materials||[]).map(t=>{const e=n.createMaterial(t.name);t.extras&&e.setExtras(t.extras),void 0!==t.alphaMode&&e.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&e.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&e.setDoubleSided(t.doubleSided);const r=t.pbrMetallicRoughness||{};if(void 0!==r.baseColorFactor&&e.setBaseColorFactor(r.baseColorFactor),void 0!==t.emissiveFactor&&e.setEmissiveFactor(t.emissiveFactor),void 0!==r.metallicFactor&&e.setMetallicFactor(r.metallicFactor),void 0!==r.roughnessFactor&&e.setRoughnessFactor(r.roughnessFactor),void 0!==r.baseColorTexture){const t=r.baseColorTexture;e.setBaseColorTexture(i.textures[m[t.index].source]),i.setTextureInfo(e.getBaseColorTextureInfo(),t)}if(void 0!==t.emissiveTexture){const r=t.emissiveTexture;e.setEmissiveTexture(i.textures[m[r.index].source]),i.setTextureInfo(e.getEmissiveTextureInfo(),r)}if(void 0!==t.normalTexture){const r=t.normalTexture;e.setNormalTexture(i.textures[m[r.index].source]),i.setTextureInfo(e.getNormalTextureInfo(),r),void 0!==t.normalTexture.scale&&e.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){const r=t.occlusionTexture;e.setOcclusionTexture(i.textures[m[r.index].source]),i.setTextureInfo(e.getOcclusionTextureInfo(),r),void 0!==t.occlusionTexture.strength&&e.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==r.metallicRoughnessTexture){const t=r.metallicRoughnessTexture;e.setMetallicRoughnessTexture(i.textures[m[t.index].source]),i.setTextureInfo(e.getMetallicRoughnessTextureInfo(),t)}return e});const w=s.meshes||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.PRIMITIVE)).forEach(t=>t.preread(i,h.PRIMITIVE)),i.meshes=w.map(t=>{const e=n.createMesh(t.name);return t.extras&&e.setExtras(t.extras),void 0!==t.weights&&e.setWeights(t.weights),(t.primitives||[]).forEach(r=>{const s=n.createPrimitive();r.extras&&s.setExtras(r.extras),void 0!==r.material&&s.setMaterial(i.materials[r.material]),void 0!==r.mode&&s.setMode(r.mode);for(const[t,e]of Object.entries(r.attributes||{}))s.setAttribute(t,i.accessors[e]);void 0!==r.indices&&s.setIndices(i.accessors[r.indices]);const o=t.extras&&t.extras.targetNames||[];(r.targets||[]).forEach((t,e)=>{const r=o[e]||e.toString(),a=n.createPrimitiveTarget(r);for(const[e,r]of Object.entries(t))a.setAttribute(e,i.accessors[r]);s.addTarget(a)}),e.addPrimitive(s)}),e}),i.cameras=(s.cameras||[]).map(t=>{const e=n.createCamera(t.name).setType(t.type);if(t.extras&&e.setExtras(t.extras),t.type===st.Type.PERSPECTIVE){const r=t.perspective;e.setYFov(r.yfov),e.setZNear(r.znear),void 0!==r.zfar&&e.setZFar(r.zfar),void 0!==r.aspectRatio&&e.setAspectRatio(r.aspectRatio)}else{const r=t.orthographic;e.setZNear(r.znear).setZFar(r.zfar).setXMag(r.xmag).setYMag(r.ymag)}return e});const y=s.nodes||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.NODE)).forEach(t=>t.preread(i,h.NODE)),i.nodes=y.map(t=>{const e=n.createNode(t.name);if(t.extras&&e.setExtras(t.extras),void 0!==t.translation&&e.setTranslation(t.translation),void 0!==t.rotation&&e.setRotation(t.rotation),void 0!==t.scale&&e.setScale(t.scale),void 0!==t.matrix){const r=[0,0,0],s=[0,0,0,1],n=[1,1,1];L.decompose(t.matrix,r,s,n),e.setTranslation(r),e.setRotation(s),e.setScale(n)}return void 0!==t.weights&&e.setWeights(t.weights),e}),i.skins=(s.skins||[]).map(t=>{const e=n.createSkin(t.name);t.extras&&e.setExtras(t.extras),void 0!==t.inverseBindMatrices&&e.setInverseBindMatrices(i.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&e.setSkeleton(i.nodes[t.skeleton]);for(const r of t.joints)e.addJoint(i.nodes[r]);return e}),y.map((t,e)=>{const r=i.nodes[e];(t.children||[]).forEach(t=>r.addChild(i.nodes[t])),void 0!==t.mesh&&r.setMesh(i.meshes[t.mesh]),void 0!==t.camera&&r.setCamera(i.cameras[t.camera]),void 0!==t.skin&&r.setSkin(i.skins[t.skin])}),i.animations=(s.animations||[]).map(t=>{const e=n.createAnimation(t.name);t.extras&&e.setExtras(t.extras);const r=(t.samplers||[]).map(t=>{const r=n.createAnimationSampler().setInput(i.accessors[t.input]).setOutput(i.accessors[t.output]).setInterpolation(t.interpolation||et.Interpolation.LINEAR);return t.extras&&r.setExtras(t.extras),e.addSampler(r),r});return(t.channels||[]).forEach(t=>{const s=n.createAnimationChannel().setSampler(r[t.sampler]).setTargetPath(t.target.path);void 0!==t.target.node&&s.setTargetNode(i.nodes[t.target.node]),t.extras&&s.setExtras(t.extras),e.addChannel(s)}),e});const v=s.scenes||[];return n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.SCENE)).forEach(t=>t.preread(i,h.SCENE)),i.scenes=v.map(t=>{const e=n.createScene(t.name);return t.extras&&e.setExtras(t.extras),(t.nodes||[]).map(t=>i.nodes[t]).forEach(t=>e.addChild(t)),e}),void 0!==s.scene&&n.getRoot().setDefaultScene(i.scenes[s.scene]),n.getRoot().listExtensionsUsed().forEach(t=>t.read(i)),d.forEach((t,e)=>{const r=i.accessors[e],s=!!t.sparse,n=!t.bufferView&&!r.getArray();(s||n)&&r.setSparse(!0).setArray(function(t,e){const r=p[t.componentType],s=Q.getElementSize(t.type);let n;n=void 0!==t.bufferView?St(t,e):new r(t.count*s);const i=t.sparse;if(!i)return n;const o=i.count,a=pt({},t,i.indices,{count:o,type:\"SCALAR\"}),u=pt({},t,i.values,{count:o}),c=St(a,e),h=St(u,e);for(let t=0;te.EXTENSION_NAME===t))throw new Error(`Missing required extension, \"${t}\".`);if(r.extensionsUsed)for(const t of r.extensionsUsed)e.extensions.find(e=>e.EXTENSION_NAME===t)||e.logger.warn(`Missing optional extension, \"${t}\".`)}}function St(t,e){const r=e.bufferViews[t.bufferView],s=e.jsonDoc.json.bufferViews[t.bufferView],n=p[t.componentType],i=Q.getElementSize(t.type),o=n.BYTES_PER_ELEMENT;if(void 0!==s.byteStride&&s.byteStride!==i*o)return function(t,e){const r=e.bufferViews[t.bufferView],s=e.jsonDoc.json.bufferViews[t.bufferView],n=p[t.componentType],i=Q.getElementSize(t.type),o=n.BYTES_PER_ELEMENT,a=t.byteOffset||0,u=new n(t.count*i),c=new DataView(r.buffer,r.byteOffset,r.byteLength),h=s.byteStride;for(let e=0;e1,()=>r.basename||\"buffer\"),this.imageURIGenerator=new Rt(i>1,e=>function(t,e){const r=t.getGraph().listParentEdges(e).find(e=>e.getParent()!==t.getRoot());return r?r.getName().replace(/texture$/i,\"\"):\"\"}(t,e)||r.basename||\"texture\"),this.logger=t.getLogger()}createTextureInfoDef(t,e){const r={magFilter:e.getMagFilter()||void 0,minFilter:e.getMinFilter()||void 0,wrapS:e.getWrapS(),wrapT:e.getWrapT()},s=JSON.stringify(r);this.samplerDefIndexMap.has(s)||(this.samplerDefIndexMap.set(s,this.jsonDoc.json.samplers.length),this.jsonDoc.json.samplers.push(r));const n={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(s)},i=JSON.stringify(n);this.textureDefIndexMap.has(i)||(this.textureDefIndexMap.set(i,this.jsonDoc.json.textures.length),this.jsonDoc.json.textures.push(n));const o={index:this.textureDefIndexMap.get(i)};return 0!==e.getTexCoord()&&(o.texCoord=e.getTexCoord()),Object.keys(e.getExtras()).length>0&&(o.extras=e.getExtras()),this.textureInfoDefMap.set(e,o),o}createPropertyDef(t){const e={};return t.getName()&&(e.name=t.getName()),Object.keys(t.getExtras()).length>0&&(e.extras=t.getExtras()),e}createAccessorDef(t){const e=this.createPropertyDef(t);return e.type=t.getType(),e.componentType=t.getComponentType(),e.count=t.getCount(),this.C.getGraph().listParentEdges(t).some(t=>\"attributes\"===t.getName()&&\"POSITION\"===t.getAttributes().key||\"input\"===t.getName())&&(e.max=t.getMax([]).map(Math.fround),e.min=t.getMin([]).map(Math.fround)),t.getNormalized()&&(e.normalized=t.getNormalized()),e}createImageData(t,e,r){if(this.options.format===g.GLB)this.imageBufferViews.push(e),t.bufferView=this.jsonDoc.json.bufferViews.length,this.jsonDoc.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:e.byteLength});else{const s=I.mimeTypeToExtension(r.getMimeType());t.uri=this.imageURIGenerator.createURI(r,s),this.jsonDoc.resources[t.uri]=e}}getAccessorUsage(t){const e=this.F.get(t);if(e)return e;if(t.getSparse())return l.SPARSE;for(const e of this.C.getGraph().listParentEdges(t)){const{usage:t}=e.getAttributes();if(t)return t;e.getParent().propertyType!==h.ROOT&&this.logger.warn(`Missing attribute \".usage\" on edge, \"${e.getName()}\".`)}return l.OTHER}addAccessorToUsageGroup(t,e){const r=this.F.get(t);if(r&&r!==e)throw new Error(`Accessor with usage \"${r}\" cannot be reused as \"${e}\".`);return this.F.set(t,e),this}listAccessorUsageGroups(){const t={};for(const[e,r]of Array.from(this.F.entries()))t[r]=t[r]||[],t[r].push(e);return t}}It.BufferViewTarget=Mt,It.BufferViewUsage=l,It.USAGE_TO_TARGET={[l.ARRAY_BUFFER]:Mt.ARRAY_BUFFER,[l.ELEMENT_ARRAY_BUFFER]:Mt.ELEMENT_ARRAY_BUFFER};class Rt{constructor(t,e){this.multiple=void 0,this.basename=void 0,this.counter={},this.multiple=t,this.basename=e}createURI(t,e){if(t.getURI())return t.getURI();if(this.multiple){const r=this.basename(t);return this.counter[r]=this.counter[r]||1,`${r}_${this.counter[r]++}.${e}`}return`${this.basename(t)}.${e}`}}const{BufferViewUsage:Nt}=It,{UNSIGNED_INT:Ot,UNSIGNED_SHORT:Ct,UNSIGNED_BYTE:Ft}=Q.ComponentType;class Ut{static write(t,e){const r=t.getRoot(),s={asset:pt({generator:`glTF-Transform ${u}`},r.getAsset()),extras:pt({},r.getExtras())},n={json:s,resources:{}},i=new It(t,n,e),o=e.logger||B.DEFAULT_INSTANCE,a=new Set(e.extensions.map(t=>t.EXTENSION_NAME)),l=t.getRoot().listExtensionsUsed().filter(t=>a.has(t.extensionName)),d=t.getRoot().listExtensionsRequired().filter(t=>a.has(t.extensionName));l.lengthe.getCount()/3){const t=(100*r.length/e.getCount()).toFixed(1);o.warn(`Sparse accessor with many non-zero elements (${t}%) may increase file size.`)}const d=p[e.getComponentType()];l.indices=r,l.values=new d(n)}if(!Number.isFinite(c))return{buffers:n,byteLength:a};const h=c<255?Uint8Array:c<65535?Uint16Array:Uint32Array,f=c<255?Ft:c<65535?Ct:Ot,l={buffer:e,byteOffset:r+a,byteLength:0};for(const e of t){const t=u.get(e);if(0===t.count)continue;t.indicesByteOffset=l.byteLength;const r=E.pad(E.toView(new h(t.indices)));n.push(r),a+=r.byteLength,l.byteLength+=r.byteLength}s.bufferViews.push(l);const d=s.bufferViews.length-1,g={buffer:e,byteOffset:r+a,byteLength:0};for(const e of t){const t=u.get(e);if(0===t.count)continue;t.valuesByteOffset=g.byteLength;const r=E.pad(E.toView(t.values));n.push(r),a+=r.byteLength,g.byteLength+=r.byteLength}s.bufferViews.push(g);const m=s.bufferViews.length-1;for(const e of t){const t=u.get(e);0!==t.count&&(t.accessorDef.sparse={count:t.count,indices:{bufferView:d,byteOffset:t.indicesByteOffset,componentType:f},values:{bufferView:m,byteOffset:t.valuesByteOffset}})}return{buffers:n,byteLength:a}}const v=new Map;for(const e of t.getGraph().listEdges()){if(e.getParent()===r)continue;const t=e.getChild();if(t instanceof Q){const r=v.get(t)||[];r.push(e),v.set(t,r)}}if(s.accessors=[],s.bufferViews=[],s.samplers=[],s.textures=[],s.images=r.listTextures().map((t,e)=>{const r=i.createPropertyDef(t);t.getMimeType()&&(r.mimeType=t.getMimeType());const s=t.getImage();return s&&i.createImageData(r,s,t),i.imageIndexMap.set(t,e),r}),l.filter(t=>t.prewriteTypes.includes(h.ACCESSOR)).forEach(t=>t.prewrite(i,h.ACCESSOR)),r.listAccessors().forEach(t=>{const e=i.accessorUsageGroupedByParent,r=i.accessorParents;if(i.accessorIndexMap.has(t))return;const s=v.get(t)||[],n=i.getAccessorUsage(t);if(i.addAccessorToUsageGroup(t,n),e.has(n)){const e=s[0].getParent(),n=r.get(e)||new Set;n.add(t),r.set(e,n)}}),l.filter(t=>t.prewriteTypes.includes(h.BUFFER)).forEach(t=>t.prewrite(i,h.BUFFER)),(r.listAccessors().length>0||r.listTextures().length>0||i.otherBufferViews.size>0)&&0===r.listBuffers().length)throw new Error(\"Buffer required for Document resources, but none was found.\");s.buffers=[],r.listBuffers().forEach((t,r)=>{const o=i.createPropertyDef(t),a=i.accessorUsageGroupedByParent,u=i.accessorParents,h=t.listParents().filter(t=>t instanceof Q),l=new Set(h),d=[],p=s.buffers.length;let v=0;const T=i.listAccessorUsageGroups();for(const t in T)if(a.has(t))for(const r of Array.from(u.values())){const s=Array.from(r).filter(t=>l.has(t)).filter(e=>i.getAccessorUsage(e)===t);if(s.length)if(t!==Nt.ARRAY_BUFFER||e.vertexLayout===f.INTERLEAVED){const e=t===Nt.ARRAY_BUFFER?w(s,p,v):m(s,p,v);v+=e.byteLength,d.push(...e.buffers)}else for(const t of s){const e=w([t],p,v);v+=e.byteLength,d.push(...e.buffers)}}else{const e=T[t].filter(t=>l.has(t));if(!e.length)continue;const r=t===Nt.ELEMENT_ARRAY_BUFFER?It.BufferViewTarget.ELEMENT_ARRAY_BUFFER:void 0,s=t===Nt.SPARSE?y(e,p,v):m(e,p,v,r);v+=s.byteLength,d.push(...s.buffers)}if(i.imageBufferViews.length&&0===r)for(let t=0;t!t.getBuffer())&&o.warn(\"Skipped writing one or more Accessors: no Buffer assigned.\"),s.materials=r.listMaterials().map((t,e)=>{const r=i.createPropertyDef(t);if(t.getAlphaMode()!==ht.AlphaMode.OPAQUE&&(r.alphaMode=t.getAlphaMode()),t.getAlphaMode()===ht.AlphaMode.MASK&&(r.alphaCutoff=t.getAlphaCutoff()),t.getDoubleSided()&&(r.doubleSided=!0),r.pbrMetallicRoughness={},L.eq(t.getBaseColorFactor(),[1,1,1,1])||(r.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor()),L.eq(t.getEmissiveFactor(),[0,0,0])||(r.emissiveFactor=t.getEmissiveFactor()),1!==t.getRoughnessFactor()&&(r.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor()),1!==t.getMetallicFactor()&&(r.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor()),t.getBaseColorTexture()){const e=t.getBaseColorTexture(),s=t.getBaseColorTextureInfo();r.pbrMetallicRoughness.baseColorTexture=i.createTextureInfoDef(e,s)}if(t.getEmissiveTexture()){const e=t.getEmissiveTexture(),s=t.getEmissiveTextureInfo();r.emissiveTexture=i.createTextureInfoDef(e,s)}if(t.getNormalTexture()){const e=t.getNormalTexture(),s=t.getNormalTextureInfo(),n=i.createTextureInfoDef(e,s);1!==t.getNormalScale()&&(n.scale=t.getNormalScale()),r.normalTexture=n}if(t.getOcclusionTexture()){const e=t.getOcclusionTexture(),s=t.getOcclusionTextureInfo(),n=i.createTextureInfoDef(e,s);1!==t.getOcclusionStrength()&&(n.strength=t.getOcclusionStrength()),r.occlusionTexture=n}if(t.getMetallicRoughnessTexture()){const e=t.getMetallicRoughnessTexture(),s=t.getMetallicRoughnessTextureInfo();r.pbrMetallicRoughness.metallicRoughnessTexture=i.createTextureInfoDef(e,s)}return i.materialIndexMap.set(t,e),r}),s.meshes=r.listMeshes().map((t,e)=>{const r=i.createPropertyDef(t);let s=null;return r.primitives=t.listPrimitives().map(t=>{const e={attributes:{}};e.mode=t.getMode();const r=t.getMaterial();r&&(e.material=i.materialIndexMap.get(r)),Object.keys(t.getExtras()).length&&(e.extras=t.getExtras());const n=t.getIndices();n&&(e.indices=i.accessorIndexMap.get(n));for(const r of t.listSemantics())e.attributes[r]=i.accessorIndexMap.get(t.getAttribute(r));for(const r of t.listTargets()){const t={};for(const e of r.listSemantics())t[e]=i.accessorIndexMap.get(r.getAttribute(e));e.targets=e.targets||[],e.targets.push(t)}return t.listTargets().length&&!s&&(s=t.listTargets().map(t=>t.getName())),e}),t.getWeights().length&&(r.weights=t.getWeights()),s&&(r.extras=r.extras||{},r.extras.targetNames=s),i.meshIndexMap.set(t,e),r}),s.cameras=r.listCameras().map((t,e)=>{const r=i.createPropertyDef(t);if(r.type=t.getType(),r.type===st.Type.PERSPECTIVE){r.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov()};const e=t.getAspectRatio();null!==e&&(r.perspective.aspectRatio=e)}else r.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()};return i.cameraIndexMap.set(t,e),r}),s.nodes=r.listNodes().map((t,e)=>{const r=i.createPropertyDef(t);return L.eq(t.getTranslation(),[0,0,0])||(r.translation=t.getTranslation()),L.eq(t.getRotation(),[0,0,0,1])||(r.rotation=t.getRotation()),L.eq(t.getScale(),[1,1,1])||(r.scale=t.getScale()),t.getWeights().length&&(r.weights=t.getWeights()),i.nodeIndexMap.set(t,e),r}),s.skins=r.listSkins().map((t,e)=>{const r=i.createPropertyDef(t),s=t.getInverseBindMatrices();s&&(r.inverseBindMatrices=i.accessorIndexMap.get(s));const n=t.getSkeleton();return n&&(r.skeleton=i.nodeIndexMap.get(n)),r.joints=t.listJoints().map(t=>i.nodeIndexMap.get(t)),i.skinIndexMap.set(t,e),r}),r.listNodes().forEach((t,e)=>{const r=s.nodes[e],n=t.getMesh();n&&(r.mesh=i.meshIndexMap.get(n));const o=t.getCamera();o&&(r.camera=i.cameraIndexMap.get(o));const a=t.getSkin();a&&(r.skin=i.skinIndexMap.get(a)),t.listChildren().length>0&&(r.children=t.listChildren().map(t=>i.nodeIndexMap.get(t)))}),s.animations=r.listAnimations().map((t,e)=>{const r=i.createPropertyDef(t),s=new Map;return r.samplers=t.listSamplers().map((t,e)=>{const r=i.createPropertyDef(t);return r.input=i.accessorIndexMap.get(t.getInput()),r.output=i.accessorIndexMap.get(t.getOutput()),r.interpolation=t.getInterpolation(),s.set(t,e),r}),r.channels=t.listChannels().map(t=>{const e=i.createPropertyDef(t);return e.sampler=s.get(t.getSampler()),e.target={node:i.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},e}),i.animationIndexMap.set(t,e),r}),s.scenes=r.listScenes().map((t,e)=>{const r=i.createPropertyDef(t);return r.nodes=t.listChildren().map(t=>i.nodeIndexMap.get(t)),i.sceneIndexMap.set(t,e),r});const T=r.getDefaultScene();return T&&(s.scene=r.listScenes().indexOf(T)),s.extensionsUsed=l.map(t=>t.extensionName),s.extensionsRequired=d.map(t=>t.extensionName),l.forEach(t=>t.write(i)),function(t){const e=[];for(const r in t){const s=t[r];(Array.isArray(s)&&0===s.length||null===s||\"\"===s||s&&\"object\"==typeof s&&0===Object.keys(s).length)&&e.push(r)}for(const r of e)delete t[r]}(s),n}}var Bt;!function(t){t[t.JSON=1313821514]=\"JSON\",t[t.BIN=5130562]=\"BIN\"}(Bt||(Bt={}));class Pt{constructor(){this.M=B.DEFAULT_INSTANCE,this.l=new Set,this.U={},this.P=f.INTERLEAVED,this.lastReadBytes=0,this.lastWriteBytes=0}setLogger(t){return this.M=t,this}registerExtensions(t){for(const e of t)this.l.add(e),e.register();return this}registerDependencies(t){return Object.assign(this.U,t),this}setVertexLayout(t){return this.P=t,this}async read(t){return await this.readJSON(await this.readAsJSON(t))}async readAsJSON(t){const e=await this.readURI(t,\"view\");this.lastReadBytes=e.byteLength;const r=Lt(e)?this.L(e):{json:JSON.parse(E.decodeText(e)),resources:{}};return await this.j(r,this.dirname(t)),this.D(r),r}async readJSON(t){return t=this._(t),this.D(t),Et.read(t,{extensions:Array.from(this.l),dependencies:this.U,logger:this.M})}async binaryToJSON(t){const e=this.L(E.assertView(t));this.D(e);const r=e.json;if(r.buffers&&r.buffers.some(t=>function(t,e){return void 0!==e.uri&&!(e.uri in t.resources)}(e,t)))throw new Error(\"Cannot resolve external buffers with binaryToJSON().\");if(r.images&&r.images.some(t=>function(t,e){return void 0!==e.uri&&!(e.uri in t.resources)&&void 0===e.bufferView}(e,t)))throw new Error(\"Cannot resolve external images with binaryToJSON().\");return e}async readBinary(t){return this.readJSON(await this.binaryToJSON(E.assertView(t)))}async writeJSON(t,e={}){if(e.format===g.GLB&&t.getRoot().listBuffers().length>1)throw new Error(\"GLB must have 0–1 buffers.\");return Ut.write(t,{format:e.format||g.GLTF,basename:e.basename||\"\",logger:this.M,vertexLayout:this.P,dependencies:pt({},this.U),extensions:Array.from(this.l)})}async writeBinary(t){const{json:e,resources:r}=await this.writeJSON(t,{format:g.GLB}),s=new Uint32Array([1179937895,2,12]),n=JSON.stringify(e),i=E.pad(E.encodeText(n),32),o=E.toView(new Uint32Array([i.byteLength,1313821514])),a=E.concat([o,i]);s[s.length-1]+=a.byteLength;const u=Object.values(r)[0];if(!u||!u.byteLength)return E.concat([E.toView(s),a]);const c=E.pad(u,0),h=E.toView(new Uint32Array([c.byteLength,5130562])),f=E.concat([h,c]);return s[s.length-1]+=f.byteLength,E.concat([E.toView(s),a,f])}async j(t,e){var r=this;const s=[...t.json.images||[],...t.json.buffers||[]].map(async function(s){const n=s.uri;if(!n||n.match(/data:/))return Promise.resolve();t.resources[n]=await r.readURI(r.resolve(e,n),\"view\"),r.lastReadBytes+=t.resources[n].byteLength});await Promise.all(s)}D(t){function e(e){if(e.uri)if(e.uri in t.resources)E.assertView(t.resources[e.uri]);else if(e.uri.match(/data:/)){const r=`__${V()}.${N.extension(e.uri)}`;t.resources[r]=E.createBufferFromDataURI(e.uri),e.uri=r}}(t.json.images||[]).forEach(t=>{if(void 0===t.bufferView&&void 0===t.uri)throw new Error(\"Missing resource URI or buffer view.\");e(t)}),(t.json.buffers||[]).forEach(e)}_(t){const{images:e,buffers:r}=t.json;return t={json:pt({},t.json),resources:pt({},t.resources)},e&&(t.json.images=e.map(t=>pt({},t))),r&&(t.json.buffers=r.map(t=>pt({},t))),t}L(t){if(!Lt(t))throw new Error(\"Invalid glTF 2.0 binary.\");const e=new Uint32Array(t.buffer,t.byteOffset+12,2);if(e[1]!==Bt.JSON)throw new Error(\"Missing required GLB JSON chunk.\");const r=e[0],s=E.decodeText(E.toView(t,20,r)),n=JSON.parse(s),i=20+r;if(t.byteLength<=i)return{json:n,resources:{}};const o=new Uint32Array(t.buffer,t.byteOffset+i,2);if(o[1]!==Bt.BIN)throw new Error(\"Expected GLB BIN in second chunk.\");const a=E.toView(t,i+8,o[0]);return{json:n,resources:{[c]:a}}}}function Lt(t){if(t.byteLength<3*Uint32Array.BYTES_PER_ELEMENT)return!1;const e=new Uint32Array(t.buffer,t.byteOffset,3);return 1179937895===e[0]&&2===e[1]}class jt extends Pt{constructor(t=null,e=q.DEFAULT_INIT){super(),this.k=void 0,this.J=void 0,this.$=void 0,this.V=!1,this.k=t,this.J=e,this.$=this.init()}async init(){return this.$?this.$:Promise.all([import(\"fs\"),import(\"path\")]).then(([t,e])=>{this.W=t.promises,this.q=e})}setAllowHTTP(t){if(t&&!this.k)throw new Error(\"NodeIO requires a Fetch API implementation for HTTP requests.\");return this.V=t,this}async readURI(t,e){if(await this.init(),q.isAbsoluteURL(t)){if(!this.V||!this.k)throw new Error(\"Network request blocked. Allow HTTP requests explicitly, if needed.\");const r=await this.k(t,this.J);switch(e){case\"view\":return new Uint8Array(await r.arrayBuffer());case\"text\":return r.text()}}else switch(e){case\"view\":return this.W.readFile(t);case\"text\":return this.W.readFile(t,\"utf8\")}}resolve(t,e){return q.isAbsoluteURL(t)||q.isAbsoluteURL(e)?q.resolve(t,e):this.q.resolve(t,decodeURIComponent(e))}dirname(t){return q.isAbsoluteURL(t)?q.dirname(t):this.q.dirname(t)}async write(t,e){await this.init();const r=!!t.match(/\\.glb$/);await(r?this.H(t,e):this.Y(t,e))}async Y(t,e){var r=this;this.lastWriteBytes=0;const{json:s,resources:n}=await this.writeJSON(e,{format:g.GLTF,basename:N.basename(t)}),{W:i,q:o}=this,a=o.dirname(t),u=JSON.stringify(s,null,2);this.lastWriteBytes+=u.length,await i.writeFile(t,u);const c=Object.keys(n).map(async function(t){if(q.isAbsoluteURL(t)){if(\"bin\"===q.extension(t))throw new Error(`Cannot write buffer to path \"${t}\".`);return}const e=Buffer.from(n[t]),s=o.join(a,decodeURIComponent(t));await i.mkdir(o.dirname(s),{recursive:!0}),await i.writeFile(s,e),r.lastWriteBytes+=e.byteLength});await Promise.all(c)}async H(t,e){const r=Buffer.from(await this.writeBinary(e));await this.W.writeFile(t,r),this.lastWriteBytes=r.byteLength}}class Dt extends Pt{constructor(t){super(),this.q=void 0,this.q=t}async readURI(t,e){switch(e){case\"view\":return Deno.readFile(t);case\"text\":return Deno.readTextFile(t)}}resolve(t,e){return this.q.resolve(t,decodeURIComponent(e))}dirname(t){return this.q.dirname(t)}}class _t extends Pt{constructor(t=q.DEFAULT_INIT){super(),this.J=void 0,this.J=t}async readURI(t,e){const r=await fetch(t,this.J);switch(e){case\"view\":return new Uint8Array(await r.arrayBuffer());case\"text\":return r.text()}}resolve(t,e){return q.resolve(t,e)}dirname(t){return q.dirname(t)}}export{Q as Accessor,X as Animation,tt as AnimationChannel,et as AnimationSampler,rt as Buffer,E as BufferUtils,H as COPY_IDENTITY,st as Camera,S as ColorUtils,p as ComponentTypeToTypedArray,Dt as DenoIO,Tt as Document,K as ExtensibleProperty,bt as Extension,nt as ExtensionProperty,N as FileUtils,g as Format,c as GLB_BUFFER,q as HTTPUtils,I as ImageUtils,B as Logger,ht as Material,L as MathUtils,ft as Mesh,lt as Node,jt as NodeIO,Pt as PlatformIO,dt as Primitive,gt as PrimitiveTarget,Z as Property,h as PropertyType,xt as ReaderContext,vt as Root,mt as Scene,wt as Skin,yt as Texture,d as TextureChannel,it as TextureInfo,u as VERSION,U as Verbosity,f as VertexLayout,_t as WebIO,It as WriterContext,b as bounds,T as getBounds,V as uuid};\n//# sourceMappingURL=core.modern.js.map\n","\"use strict\"\n\nfunction iota(n) {\n var result = new Array(n)\n for(var i=0; i\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","var iota = require(\"iota-array\")\nvar isBuffer = require(\"is-buffer\")\n\nvar hasTypedArrays = ((typeof Float64Array) !== \"undefined\")\n\nfunction compare1st(a, b) {\n return a[0] - b[0]\n}\n\nfunction order() {\n var stride = this.stride\n var terms = new Array(stride.length)\n var i\n for(i=0; iMath.abs(this.stride[1]))?[1,0]:[0,1]}})\")\n } else if(dimension === 3) {\n code.push(\n\"var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);\\\nif(s0>s1){\\\nif(s1>s2){\\\nreturn [2,1,0];\\\n}else if(s0>s2){\\\nreturn [1,2,0];\\\n}else{\\\nreturn [1,0,2];\\\n}\\\n}else if(s0>s2){\\\nreturn [2,0,1];\\\n}else if(s2>s1){\\\nreturn [0,1,2];\\\n}else{\\\nreturn [0,2,1];\\\n}}})\")\n }\n } else {\n code.push(\"ORDER})\")\n }\n }\n\n //view.set(i0, ..., v):\n code.push(\n\"proto.set=function \"+className+\"_set(\"+args.join(\",\")+\",v){\")\n if(useGetters) {\n code.push(\"return this.data.set(\"+index_str+\",v)}\")\n } else {\n code.push(\"return this.data[\"+index_str+\"]=v}\")\n }\n\n //view.get(i0, ...):\n code.push(\"proto.get=function \"+className+\"_get(\"+args.join(\",\")+\"){\")\n if(useGetters) {\n code.push(\"return this.data.get(\"+index_str+\")}\")\n } else {\n code.push(\"return this.data[\"+index_str+\"]}\")\n }\n\n //view.index:\n code.push(\n \"proto.index=function \"+className+\"_index(\", args.join(), \"){return \"+index_str+\"}\")\n\n //view.hi():\n code.push(\"proto.hi=function \"+className+\"_hi(\"+args.join(\",\")+\"){return new \"+className+\"(this.data,\"+\n indices.map(function(i) {\n return [\"(typeof i\",i,\"!=='number'||i\",i,\"<0)?this.shape[\", i, \"]:i\", i,\"|0\"].join(\"\")\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"this.stride[\"+i + \"]\"\n }).join(\",\")+\",this.offset)}\")\n\n //view.lo():\n var a_vars = indices.map(function(i) { return \"a\"+i+\"=this.shape[\"+i+\"]\" })\n var c_vars = indices.map(function(i) { return \"c\"+i+\"=this.stride[\"+i+\"]\" })\n code.push(\"proto.lo=function \"+className+\"_lo(\"+args.join(\",\")+\"){var b=this.offset,d=0,\"+a_vars.join(\",\")+\",\"+c_vars.join(\",\"))\n for(var i=0; i=0){\\\nd=i\"+i+\"|0;\\\nb+=c\"+i+\"*d;\\\na\"+i+\"-=d}\")\n }\n code.push(\"return new \"+className+\"(this.data,\"+\n indices.map(function(i) {\n return \"a\"+i\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"c\"+i\n }).join(\",\")+\",b)}\")\n\n //view.step():\n code.push(\"proto.step=function \"+className+\"_step(\"+args.join(\",\")+\"){var \"+\n indices.map(function(i) {\n return \"a\"+i+\"=this.shape[\"+i+\"]\"\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"b\"+i+\"=this.stride[\"+i+\"]\"\n }).join(\",\")+\",c=this.offset,d=0,ceil=Math.ceil\")\n for(var i=0; i=0){c=(c+this.stride[\"+i+\"]*i\"+i+\")|0}else{a.push(this.shape[\"+i+\"]);b.push(this.stride[\"+i+\"])}\")\n }\n code.push(\"var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}\")\n\n //Add return statement\n code.push(\"return function construct_\"+className+\"(data,shape,stride,offset){return new \"+className+\"(data,\"+\n indices.map(function(i) {\n return \"shape[\"+i+\"]\"\n }).join(\",\")+\",\"+\n indices.map(function(i) {\n return \"stride[\"+i+\"]\"\n }).join(\",\")+\",offset)}\")\n\n //Compile procedure\n var procedure = new Function(\"CTOR_LIST\", \"ORDER\", code.join(\"\\n\"))\n return procedure(CACHED_CONSTRUCTORS[dtype], order)\n}\n\nfunction arrayDType(data) {\n if(isBuffer(data)) {\n return \"buffer\"\n }\n if(hasTypedArrays) {\n switch(Object.prototype.toString.call(data)) {\n case \"[object Float64Array]\":\n return \"float64\"\n case \"[object Float32Array]\":\n return \"float32\"\n case \"[object Int8Array]\":\n return \"int8\"\n case \"[object Int16Array]\":\n return \"int16\"\n case \"[object Int32Array]\":\n return \"int32\"\n case \"[object Uint8Array]\":\n return \"uint8\"\n case \"[object Uint16Array]\":\n return \"uint16\"\n case \"[object Uint32Array]\":\n return \"uint32\"\n case \"[object Uint8ClampedArray]\":\n return \"uint8_clamped\"\n case \"[object BigInt64Array]\":\n return \"bigint64\"\n case \"[object BigUint64Array]\":\n return \"biguint64\"\n }\n }\n if(Array.isArray(data)) {\n return \"array\"\n }\n return \"generic\"\n}\n\nvar CACHED_CONSTRUCTORS = {\n \"float32\":[],\n \"float64\":[],\n \"int8\":[],\n \"int16\":[],\n \"int32\":[],\n \"uint8\":[],\n \"uint16\":[],\n \"uint32\":[],\n \"array\":[],\n \"uint8_clamped\":[],\n \"bigint64\": [],\n \"biguint64\": [],\n \"buffer\":[],\n \"generic\":[]\n}\n\n;(function() {\n for(var id in CACHED_CONSTRUCTORS) {\n CACHED_CONSTRUCTORS[id].push(compileConstructor(id, -1))\n }\n});\n\nfunction wrappedNDArrayCtor(data, shape, stride, offset) {\n if(data === undefined) {\n var ctor = CACHED_CONSTRUCTORS.array[0]\n return ctor([])\n } else if(typeof data === \"number\") {\n data = [data]\n }\n if(shape === undefined) {\n shape = [ data.length ]\n }\n var d = shape.length\n if(stride === undefined) {\n stride = new Array(d)\n for(var i=d-1, sz=1; i>=0; --i) {\n stride[i] = sz\n sz *= shape[i]\n }\n }\n if(offset === undefined) {\n offset = 0\n for(var i=0; i0\n , code = []\n , vars = []\n , idx=0, pidx=0, i, j\n for(i=0; i 0) {\n code.push(\"var \" + vars.join(\",\"))\n } \n //Scan loop\n for(i=dimension-1; i>=0; --i) { // Start at largest stride and work your way inwards\n idx = order[i]\n code.push([\"for(i\",i,\"=0;i\",i,\" 0) {\n code.push([\"index[\",pidx,\"]-=s\",pidx].join(\"\"))\n }\n code.push([\"++index[\",idx,\"]\"].join(\"\"))\n }\n code.push(\"}\")\n }\n return code.join(\"\\n\")\n}\n\n// Generate \"outer\" loops that loop over blocks of data, applying \"inner\" loops to the blocks by manipulating the local variables in such a way that the inner loop only \"sees\" the current block.\n// TODO: If this is used, then the previous declaration (done by generateCwiseOp) of s* is essentially unnecessary.\n// I believe the s* are not used elsewhere (in particular, I don't think they're used in the pre/post parts and \"shape\" is defined independently), so it would be possible to make defining the s* dependent on what loop method is being used.\nfunction outerFill(matched, order, proc, body) {\n var dimension = order.length\n , nargs = proc.arrayArgs.length\n , blockSize = proc.blockSize\n , has_index = proc.indexArgs.length > 0\n , code = []\n for(var i=0; i0;){\"].join(\"\")) // Iterate back to front\n code.push([\"if(j\",i,\"<\",blockSize,\"){\"].join(\"\")) // Either decrease j by blockSize (s = blockSize), or set it to zero (after setting s = j).\n code.push([\"s\",order[i],\"=j\",i].join(\"\"))\n code.push([\"j\",i,\"=0\"].join(\"\"))\n code.push([\"}else{s\",order[i],\"=\",blockSize].join(\"\"))\n code.push([\"j\",i,\"-=\",blockSize,\"}\"].join(\"\"))\n if(has_index) {\n code.push([\"index[\",order[i],\"]=j\",i].join(\"\"))\n }\n }\n for(var i=0; i 0) {\n allEqual = allEqual && summary[i] === summary[i-1]\n }\n }\n if(allEqual) {\n return summary[0]\n }\n return summary.join(\"\")\n}\n\n//Generates a cwise operator\nfunction generateCWiseOp(proc, typesig) {\n\n //Compute dimension\n // Arrays get put first in typesig, and there are two entries per array (dtype and order), so this gets the number of dimensions in the first array arg.\n var dimension = (typesig[1].length - Math.abs(proc.arrayBlockIndices[0]))|0\n var orders = new Array(proc.arrayArgs.length)\n var dtypes = new Array(proc.arrayArgs.length)\n for(var i=0; i 0) {\n vars.push(\"shape=SS.slice(0)\") // Makes the shape over which we iterate available to the user defined functions (so you can use width/height for example)\n }\n if(proc.indexArgs.length > 0) {\n // Prepare an array to keep track of the (logical) indices, initialized to dimension zeroes.\n var zeros = new Array(dimension)\n for(var i=0; i 0) {\n code.push(\"var \" + vars.join(\",\"))\n }\n for(var i=0; i 3) {\n code.push(processBlock(proc.pre, proc, dtypes))\n }\n\n //Process body\n var body = processBlock(proc.body, proc, dtypes)\n var matched = countMatches(loopOrders)\n if(matched < dimension) {\n code.push(outerFill(matched, loopOrders[0], proc, body)) // TODO: Rather than passing loopOrders[0], it might be interesting to look at passing an order that represents the majority of the arguments for example.\n } else {\n code.push(innerFill(loopOrders[0], proc, body))\n }\n\n //Inline epilog\n if(proc.post.body.length > 3) {\n code.push(processBlock(proc.post, proc, dtypes))\n }\n \n if(proc.debug) {\n console.log(\"-----Generated cwise routine for \", typesig, \":\\n\" + code.join(\"\\n\") + \"\\n----------\")\n }\n \n var loopName = [(proc.funcName||\"unnamed\"), \"_cwise_loop_\", orders[0].join(\"s\"),\"m\",matched,typeSummary(dtypes)].join(\"\")\n var f = new Function([\"function \",loopName,\"(\", arglist.join(\",\"),\"){\", code.join(\"\\n\"),\"} return \", loopName].join(\"\"))\n return f()\n}\nmodule.exports = generateCWiseOp\n","\"use strict\"\n\n// The function below is called when constructing a cwise function object, and does the following:\n// A function object is constructed which accepts as argument a compilation function and returns another function.\n// It is this other function that is eventually returned by createThunk, and this function is the one that actually\n// checks whether a certain pattern of arguments has already been used before and compiles new loops as needed.\n// The compilation passed to the first function object is used for compiling new functions.\n// Once this function object is created, it is called with compile as argument, where the first argument of compile\n// is bound to \"proc\" (essentially containing a preprocessed version of the user arguments to cwise).\n// So createThunk roughly works like this:\n// function createThunk(proc) {\n// var thunk = function(compileBound) {\n// var CACHED = {}\n// return function(arrays and scalars) {\n// if (dtype and order of arrays in CACHED) {\n// var func = CACHED[dtype and order of arrays]\n// } else {\n// var func = CACHED[dtype and order of arrays] = compileBound(dtype and order of arrays)\n// }\n// return func(arrays and scalars)\n// }\n// }\n// return thunk(compile.bind1(proc))\n// }\n\nvar compile = require(\"./compile.js\")\n\nfunction createThunk(proc) {\n var code = [\"'use strict'\", \"var CACHED={}\"]\n var vars = []\n var thunkName = proc.funcName + \"_cwise_thunk\"\n \n //Build thunk\n code.push([\"return function \", thunkName, \"(\", proc.shimArgs.join(\",\"), \"){\"].join(\"\"))\n var typesig = []\n var string_typesig = []\n var proc_args = [[\"array\",proc.arrayArgs[0],\".shape.slice(\", // Slice shape so that we only retain the shape over which we iterate (which gets passed to the cwise operator as SS).\n Math.max(0,proc.arrayBlockIndices[0]),proc.arrayBlockIndices[0]<0?(\",\"+proc.arrayBlockIndices[0]+\")\"):\")\"].join(\"\")]\n var shapeLengthConditions = [], shapeConditions = []\n // Process array arguments\n for(var i=0; i0) { // Gather conditions to check for shape equality (ignoring block indices)\n shapeLengthConditions.push(\"array\" + proc.arrayArgs[0] + \".shape.length===array\" + j + \".shape.length+\" + (Math.abs(proc.arrayBlockIndices[0])-Math.abs(proc.arrayBlockIndices[i])))\n shapeConditions.push(\"array\" + proc.arrayArgs[0] + \".shape[shapeIndex+\" + Math.max(0,proc.arrayBlockIndices[0]) + \"]===array\" + j + \".shape[shapeIndex+\" + Math.max(0,proc.arrayBlockIndices[i]) + \"]\")\n }\n }\n // Check for shape equality\n if (proc.arrayArgs.length > 1) {\n code.push(\"if (!(\" + shapeLengthConditions.join(\" && \") + \")) throw new Error('cwise: Arrays do not all have the same dimensionality!')\")\n code.push(\"for(var shapeIndex=array\" + proc.arrayArgs[0] + \".shape.length-\" + Math.abs(proc.arrayBlockIndices[0]) + \"; shapeIndex-->0;) {\")\n code.push(\"if (!(\" + shapeConditions.join(\" && \") + \")) throw new Error('cwise: Arrays do not all have the same shape!')\")\n code.push(\"}\")\n }\n // Process scalar arguments\n for(var i=0; i0) {\n throw new Error(\"cwise: pre() block may not reference array args\")\n }\n if(i < proc.post.args.length && proc.post.args[i].count>0) {\n throw new Error(\"cwise: post() block may not reference array args\")\n }\n } else if(arg_type === \"scalar\") {\n proc.scalarArgs.push(i)\n proc.shimArgs.push(\"scalar\" + i)\n } else if(arg_type === \"index\") {\n proc.indexArgs.push(i)\n if(i < proc.pre.args.length && proc.pre.args[i].count > 0) {\n throw new Error(\"cwise: pre() block may not reference array index\")\n }\n if(i < proc.body.args.length && proc.body.args[i].lvalue) {\n throw new Error(\"cwise: body() block may not write to array index\")\n }\n if(i < proc.post.args.length && proc.post.args[i].count > 0) {\n throw new Error(\"cwise: post() block may not reference array index\")\n }\n } else if(arg_type === \"shape\") {\n proc.shapeArgs.push(i)\n if(i < proc.pre.args.length && proc.pre.args[i].lvalue) {\n throw new Error(\"cwise: pre() block may not write to array shape\")\n }\n if(i < proc.body.args.length && proc.body.args[i].lvalue) {\n throw new Error(\"cwise: body() block may not write to array shape\")\n }\n if(i < proc.post.args.length && proc.post.args[i].lvalue) {\n throw new Error(\"cwise: post() block may not write to array shape\")\n }\n } else if(typeof arg_type === \"object\" && arg_type.offset) {\n proc.argTypes[i] = \"offset\"\n proc.offsetArgs.push({ array: arg_type.array, offset:arg_type.offset })\n proc.offsetArgIndex.push(i)\n } else {\n throw new Error(\"cwise: Unknown argument type \" + proc_args[i])\n }\n }\n \n //Make sure at least one array argument was specified\n if(proc.arrayArgs.length <= 0) {\n throw new Error(\"cwise: No array arguments specified\")\n }\n \n //Make sure arguments are correct\n if(proc.pre.args.length > proc_args.length) {\n throw new Error(\"cwise: Too many arguments in pre() block\")\n }\n if(proc.body.args.length > proc_args.length) {\n throw new Error(\"cwise: Too many arguments in body() block\")\n }\n if(proc.post.args.length > proc_args.length) {\n throw new Error(\"cwise: Too many arguments in post() block\")\n }\n\n //Check debug flag\n proc.debug = !!user_args.printCode || !!user_args.debug\n \n //Retrieve name\n proc.funcName = user_args.funcName || \"cwise\"\n \n //Read in block size\n proc.blockSize = user_args.blockSize || 64\n\n return createThunk(proc)\n}\n\nmodule.exports = compileCwise\n","\"use strict\"\n\nvar compile = require(\"cwise-compiler\")\n\nvar EmptyProc = {\n body: \"\",\n args: [],\n thisVars: [],\n localVars: []\n}\n\nfunction fixup(x) {\n if(!x) {\n return EmptyProc\n }\n for(var i=0; i>\",\n rrshift: \">>>\"\n}\n;(function(){\n for(var id in assign_ops) {\n var op = assign_ops[id]\n exports[id] = makeOp({\n args: [\"array\",\"array\",\"array\"],\n body: {args:[\"a\",\"b\",\"c\"],\n body: \"a=b\"+op+\"c\"},\n funcName: id\n })\n exports[id+\"eq\"] = makeOp({\n args: [\"array\",\"array\"],\n body: {args:[\"a\",\"b\"],\n body:\"a\"+op+\"=b\"},\n rvalue: true,\n funcName: id+\"eq\"\n })\n exports[id+\"s\"] = makeOp({\n args: [\"array\", \"array\", \"scalar\"],\n body: {args:[\"a\",\"b\",\"s\"],\n body:\"a=b\"+op+\"s\"},\n funcName: id+\"s\"\n })\n exports[id+\"seq\"] = makeOp({\n args: [\"array\",\"scalar\"],\n body: {args:[\"a\",\"s\"],\n body:\"a\"+op+\"=s\"},\n rvalue: true,\n funcName: id+\"seq\"\n })\n }\n})();\n\nvar unary_ops = {\n not: \"!\",\n bnot: \"~\",\n neg: \"-\",\n recip: \"1.0/\"\n}\n;(function(){\n for(var id in unary_ops) {\n var op = unary_ops[id]\n exports[id] = makeOp({\n args: [\"array\", \"array\"],\n body: {args:[\"a\",\"b\"],\n body:\"a=\"+op+\"b\"},\n funcName: id\n })\n exports[id+\"eq\"] = makeOp({\n args: [\"array\"],\n body: {args:[\"a\"],\n body:\"a=\"+op+\"a\"},\n rvalue: true,\n count: 2,\n funcName: id+\"eq\"\n })\n }\n})();\n\nvar binary_ops = {\n and: \"&&\",\n or: \"||\",\n eq: \"===\",\n neq: \"!==\",\n lt: \"<\",\n gt: \">\",\n leq: \"<=\",\n geq: \">=\"\n}\n;(function() {\n for(var id in binary_ops) {\n var op = binary_ops[id]\n exports[id] = makeOp({\n args: [\"array\",\"array\",\"array\"],\n body: {args:[\"a\", \"b\", \"c\"],\n body:\"a=b\"+op+\"c\"},\n funcName: id\n })\n exports[id+\"s\"] = makeOp({\n args: [\"array\",\"array\",\"scalar\"],\n body: {args:[\"a\", \"b\", \"s\"],\n body:\"a=b\"+op+\"s\"},\n funcName: id+\"s\"\n })\n exports[id+\"eq\"] = makeOp({\n args: [\"array\", \"array\"],\n body: {args:[\"a\", \"b\"],\n body:\"a=a\"+op+\"b\"},\n rvalue:true,\n count:2,\n funcName: id+\"eq\"\n })\n exports[id+\"seq\"] = makeOp({\n args: [\"array\", \"scalar\"],\n body: {args:[\"a\",\"s\"],\n body:\"a=a\"+op+\"s\"},\n rvalue:true,\n count:2,\n funcName: id+\"seq\"\n })\n }\n})();\n\nvar math_unary = [\n \"abs\",\n \"acos\",\n \"asin\",\n \"atan\",\n \"ceil\",\n \"cos\",\n \"exp\",\n \"floor\",\n \"log\",\n \"round\",\n \"sin\",\n \"sqrt\",\n \"tan\"\n]\n;(function() {\n for(var i=0; ithis_s){this_s=-a}else if(a>this_s){this_s=a}\", localVars: [], thisVars: [\"this_s\"]},\n post: {args:[], localVars:[], thisVars:[\"this_s\"], body:\"return this_s\"},\n funcName: \"norminf\"\n})\n\nexports.norm1 = compile({\n args:[\"array\"],\n pre: {args:[], localVars:[], thisVars:[\"this_s\"], body:\"this_s=0\"},\n body: {args:[{name:\"a\", lvalue:false, rvalue:true, count:3}], body: \"this_s+=a<0?-a:a\", localVars: [], thisVars: [\"this_s\"]},\n post: {args:[], localVars:[], thisVars:[\"this_s\"], body:\"return this_s\"},\n funcName: \"norm1\"\n})\n\nexports.sup = compile({\n args: [ \"array\" ],\n pre:\n { body: \"this_h=-Infinity\",\n args: [],\n thisVars: [ \"this_h\" ],\n localVars: [] },\n body:\n { body: \"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_\",\n args: [{\"name\":\"_inline_1_arg0_\",\"lvalue\":false,\"rvalue\":true,\"count\":2} ],\n thisVars: [ \"this_h\" ],\n localVars: [] },\n post:\n { body: \"return this_h\",\n args: [],\n thisVars: [ \"this_h\" ],\n localVars: [] }\n })\n\nexports.inf = compile({\n args: [ \"array\" ],\n pre:\n { body: \"this_h=Infinity\",\n args: [],\n thisVars: [ \"this_h\" ],\n localVars: [] },\n body:\n { body: \"if(_inline_1_arg0_this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}\",\n args:[\n {name:\"_inline_1_arg0_\",lvalue:false,rvalue:true,count:2},\n {name:\"_inline_1_arg1_\",lvalue:false,rvalue:true,count:2}],\n thisVars:[\"this_i\",\"this_v\"],\n localVars:[\"_inline_1_k\"]},\n post:{\n body:\"{return this_i}\",\n args:[],\n thisVars:[\"this_i\"],\n localVars:[]}\n}) \n\nexports.random = makeOp({\n args: [\"array\"],\n pre: {args:[], body:\"this_f=Math.random\", thisVars:[\"this_f\"]},\n body: {args: [\"a\"], body:\"a=this_f()\", thisVars:[\"this_f\"]},\n funcName: \"random\"\n})\n\nexports.assign = makeOp({\n args:[\"array\", \"array\"],\n body: {args:[\"a\", \"b\"], body:\"a=b\"},\n funcName: \"assign\" })\n\nexports.assigns = makeOp({\n args:[\"array\", \"scalar\"],\n body: {args:[\"a\", \"b\"], body:\"a=b\"},\n funcName: \"assigns\" })\n\n\nexports.equals = compile({\n args:[\"array\", \"array\"],\n pre: EmptyProc,\n body: {args:[{name:\"x\", lvalue:false, rvalue:true, count:1},\n {name:\"y\", lvalue:false, rvalue:true, count:1}], \n body: \"if(x!==y){return false}\", \n localVars: [], \n thisVars: []},\n post: {args:[], localVars:[], thisVars:[], body:\"return true\"},\n funcName: \"equals\"\n})\n\n\n","import ndarray from 'ndarray';\nimport ops from 'ndarray-ops';\n\nfunction getPixelsInternal(buffer, mimeType) {\n // Warn for Data URIs, URLs, and file paths. Support removed in v3.\n if (!(buffer instanceof Uint8Array)) {\n throw new Error('[ndarray-pixels] Input must be Uint8Array or Buffer.');\n }\n\n const blob = new Blob([buffer], {\n type: mimeType\n });\n const path = URL.createObjectURL(blob); // Decode image with Canvas API.\n\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n\n img.onload = function () {\n URL.revokeObjectURL(path);\n const canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n const context = canvas.getContext('2d');\n context.drawImage(img, 0, 0);\n const pixels = context.getImageData(0, 0, img.width, img.height);\n resolve(ndarray(new Uint8Array(pixels.data), [img.width, img.height, 4], [4, 4 * img.width, 1], 0));\n };\n\n img.onerror = err => {\n URL.revokeObjectURL(path);\n reject(err);\n };\n\n img.src = path;\n });\n}\n\nfunction putPixelData(array, data, frame = -1) {\n if (array.shape.length === 4) {\n return putPixelData(array.pick(frame), data, 0);\n } else if (array.shape.length === 3) {\n if (array.shape[2] === 3) {\n ops.assign(ndarray(data, [array.shape[0], array.shape[1], 3], [4, 4 * array.shape[0], 1]), array);\n ops.assigns(ndarray(data, [array.shape[0] * array.shape[1]], [4], 3), 255);\n } else if (array.shape[2] === 4) {\n ops.assign(ndarray(data, [array.shape[0], array.shape[1], 4], [4, array.shape[0] * 4, 1]), array);\n } else if (array.shape[2] === 1) {\n ops.assign(ndarray(data, [array.shape[0], array.shape[1], 3], [4, 4 * array.shape[0], 1]), ndarray(array.data, [array.shape[0], array.shape[1], 3], [array.stride[0], array.stride[1], 0], array.offset));\n ops.assigns(ndarray(data, [array.shape[0] * array.shape[1]], [4], 3), 255);\n } else {\n throw new Error('[ndarray-pixels] Incompatible array shape.');\n }\n } else if (array.shape.length === 2) {\n ops.assign(ndarray(data, [array.shape[0], array.shape[1], 3], [4, 4 * array.shape[0], 1]), ndarray(array.data, [array.shape[0], array.shape[1], 3], [array.stride[0], array.stride[1], 0], array.offset));\n ops.assigns(ndarray(data, [array.shape[0] * array.shape[1]], [4], 3), 255);\n } else {\n throw new Error('[ndarray-pixels] Incompatible array shape.');\n }\n\n return data;\n}\n\nasync function savePixelsInternal(pixels, mimeType, options = {}) {\n // Create HTMLCanvasElement and write pixel data.\n const canvas = document.createElement('canvas');\n canvas.width = pixels.shape[0];\n canvas.height = pixels.shape[1];\n const context = canvas.getContext('2d');\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n putPixelData(pixels, imageData.data);\n context.putImageData(imageData, 0, 0);\n const quality = options.quality ? options.quality / 100 : undefined; // Encode to target format.\n\n switch (mimeType) {\n case 'image/jpeg':\n return streamCanvas(canvas, 'image/jpeg', quality);\n\n default:\n return streamCanvas(canvas, mimeType);\n }\n}\n/** Creates readable stream from given HTMLCanvasElement and options. */\n\nfunction streamCanvas(canvas, mimeType, quality) {\n return new Promise((resolve, reject) => {\n canvas.toBlob(async blob => {\n if (blob) {\n resolve(new Uint8Array(await blob.arrayBuffer()));\n } else {\n reject(new Error('[ndarray-pixels] Failed to canvas.toBlob().'));\n }\n }, mimeType, quality);\n });\n}\n\n/**\n * Decodes image data to an `ndarray`.\n *\n * MIME type is optional when given a path or URL, and required when given a Uint8Array.\n *\n * Accepts `image/png` or `image/jpeg` in Node.js, and additional formats on browsers with\n * the necessary support in Canvas 2D.\n *\n * @param data\n * @param mimeType `image/jpeg`, `image/png`, etc.\n * @returns\n */\n\nasync function getPixels(data, mimeType) {\n return getPixelsInternal(data, mimeType);\n}\n/**\n * Encodes an `ndarray` as image data in the given format.\n *\n * If the source `ndarray` was constructed manually with default stride, use\n * `ndarray.transpose(1, 0)` to reshape it and ensure an identical result from getPixels(). For an\n * ndarray created by getPixels(), this isn't necessary.\n *\n * Accepts `image/png` or `image/jpeg` in Node.js, and additional formats on browsers with\n * the necessary support in Canvas 2D.\n *\n * @param pixels ndarray of shape W x H x 4.\n * @param mimeType `image/jpeg`, `image/png`, etc.\n * @returns\n */\n\n\nasync function savePixels(pixels, mimeType) {\n return savePixelsInternal(pixels, mimeType);\n}\n\nexport { getPixels, savePixels };\n//# sourceMappingURL=ndarray-pixels-browser.modern.js.map\n","import{Primitive as t,PropertyType as e,Document as n,getBounds as o,Scene as r,BufferUtils as s,Root as i,TextureInfo as a,Texture as c,ExtensionProperty as l,AnimationChannel as g,ColorUtils as u,Material as f,Accessor as p,PrimitiveTarget as m,MathUtils as d,ImageUtils as h,ComponentTypeToTypedArray as A,TextureChannel as T,Node as y,AnimationSampler as E,uuid as S}from\"@gltf-transform/core\";import{getPixels as M,savePixels as I}from\"ndarray-pixels\";import{KHRMeshQuantization as w,KHRDracoMeshCompression as N,EXTMeshGPUInstancing as b,EXTMeshoptCompression as R,KHRMaterialsIOR as C,KHRMaterialsSpecular as O,KHRMaterialsPBRSpecularGlossiness as $,EXTTextureWebP as v,EXTTextureAVIF as P,KHRMaterialsUnlit as x}from\"@gltf-transform/extensions\";import{read as L,KHR_DF_MODEL_ETC1S as z,KHR_DF_MODEL_UASTC as F}from\"ktx-parse\";import _ from\"ndarray\";import{lanczos3 as G,lanczos2 as k}from\"ndarray-lanczos\";function q(){return q=Object.assign?Object.assign.bind():function(t){for(var e=1;ee?\"–\":\"+\")+(Math.abs(t-e)/t*100).toFixed(n)+\"%\"}(t,e)})`}function K(t){const e=[];for(const n of t.listAttributes())e.push(n);for(const n of t.listTargets())for(const t of n.listAttributes())e.push(t);return Array.from(new Set(e))}function J(t,e,n){t.swap(e,n);for(const o of t.listTargets())o.swap(e,n)}function Z(t,e){if(null==t&&null==e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(let n=0;n{const n=t.getAttribute(e);return`${e}:${n.getElementSize()}:${n.getComponentType()}`}).join(\"+\")}|${t.listTargets().map(e=>e.listSemantics().sort().map(e=>{const n=t.getAttribute(e);return`${e}:${n.getElementSize()}:${n.getComponentType()}`}).join(\"+\")).join(\"~\")}`}function et(t,e){const[n,o]=e,[r,s]=t;if(r<=n&&s<=o)return t;let i=r,a=s;return i>n&&(a=Math.floor(a*(n/i)),i=n),a>o&&(i=Math.floor(i*(o/a)),a=o),[i,a]}const nt=\"center\",ot={pivot:\"center\"};function rt(t=ot){const e=q({},ot,t);return B(nt,t=>{const n=t.getLogger(),r=t.getRoot(),s=r.listAnimations().length>0||r.listSkins().length>0;t.getRoot().listScenes().forEach((i,a)=>{let c;if(n.debug(`${nt}: Scene ${a+1} / ${r.listScenes().length}.`),\"string\"==typeof e.pivot){const t=o(i);c=[(t.max[0]-t.min[0])/2+t.min[0],(t.max[1]-t.min[1])/2+t.min[1],(t.max[2]-t.min[2])/2+t.min[2]],\"above\"===e.pivot&&(c[1]=t.max[1]),\"below\"===e.pivot&&(c[1]=t.min[1])}else c=e.pivot;n.debug(`${nt}: Pivot \"${c.join(\", \")}\".`);const l=[-1*c[0],-1*c[1],-1*c[2]];if(s){n.debug(`${nt}: Model contains animation or skin. Adding a wrapper node.`);const e=t.createNode(\"Pivot\").setTranslation(l);i.listChildren().forEach(t=>e.addChild(t)),i.addChild(e)}else n.debug(`${nt}: Skipping wrapper, offsetting all root nodes.`),i.listChildren().forEach(t=>{const e=t.getTranslation();t.setTranslation([e[0]+l[0],e[1]+l[1],e[2]+l[2]])})}),n.debug(`${nt}: Complete.`)})}function st(t){const e=new Set;let n,o=t;for(;n=o.getParentNode();){if(e.has(n))throw new Error(\"Circular dependency in scene graph.\");e.add(n),o=n}return o.listParents().filter(t=>t instanceof r)}function it(t){const e=st(t),n=t.getParentNode();if(!n)return t;t.setMatrix(t.getWorldMatrix()),n.removeChild(t);for(const n of e)n.addChild(t);return t}var at=\"undefined\"!=typeof Float32Array?Float32Array:Array;function ct(t,e){var n=e[0],o=e[1],r=e[2],s=e[3],i=e[4],a=e[5],c=e[6],l=e[7],g=e[8],u=e[9],f=e[10],p=e[11],m=e[12],d=e[13],h=e[14],A=e[15],T=n*a-o*i,y=n*c-r*i,E=n*l-s*i,S=o*c-r*a,M=o*l-s*a,I=r*l-s*c,w=g*d-u*m,N=g*h-f*m,b=g*A-p*m,R=u*h-f*d,C=u*A-p*d,O=f*A-p*h,$=T*O-y*C+E*R+S*b-M*N+I*w;return $?(t[0]=(a*O-c*C+l*R)*($=1/$),t[1]=(r*C-o*O-s*R)*$,t[2]=(d*I-h*M+A*S)*$,t[3]=(f*M-u*I-p*S)*$,t[4]=(c*b-i*O-l*N)*$,t[5]=(n*O-r*b+s*N)*$,t[6]=(h*E-m*I-A*y)*$,t[7]=(g*I-f*E+p*y)*$,t[8]=(i*C-a*b+l*w)*$,t[9]=(o*b-n*C-s*w)*$,t[10]=(m*M-d*E+A*T)*$,t[11]=(u*E-g*M-p*T)*$,t[12]=(a*N-i*R-c*w)*$,t[13]=(n*R-o*N+r*w)*$,t[14]=(d*y-m*S-h*T)*$,t[15]=(g*S-u*y+f*T)*$,t):null}function lt(t,e,n){var o=e[0],r=e[1],s=e[2],i=e[3],a=e[4],c=e[5],l=e[6],g=e[7],u=e[8],f=e[9],p=e[10],m=e[11],d=e[12],h=e[13],A=e[14],T=e[15],y=n[0],E=n[1],S=n[2],M=n[3];return t[0]=y*o+E*a+S*u+M*d,t[1]=y*r+E*c+S*f+M*h,t[2]=y*s+E*l+S*p+M*A,t[3]=y*i+E*g+S*m+M*T,t[4]=(y=n[4])*o+(E=n[5])*a+(S=n[6])*u+(M=n[7])*d,t[5]=y*r+E*c+S*f+M*h,t[6]=y*s+E*l+S*p+M*A,t[7]=y*i+E*g+S*m+M*T,t[8]=(y=n[8])*o+(E=n[9])*a+(S=n[10])*u+(M=n[11])*d,t[9]=y*r+E*c+S*f+M*h,t[10]=y*s+E*l+S*p+M*A,t[11]=y*i+E*g+S*m+M*T,t[12]=(y=n[12])*o+(E=n[13])*a+(S=n[14])*u+(M=n[15])*d,t[13]=y*r+E*c+S*f+M*h,t[14]=y*s+E*l+S*p+M*A,t[15]=y*i+E*g+S*m+M*T,t}function gt(){var t=new at(3);return at!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function ut(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}function ft(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}function pt(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function mt(t,e){var n=e[0],o=e[1],r=e[2],s=n*n+o*o+r*r;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function dt(t,e,n){var o=e[0],r=e[1],s=e[2],i=n[3]*o+n[7]*r+n[11]*s+n[15];return t[0]=(n[0]*o+n[4]*r+n[8]*s+n[12])/(i=i||1),t[1]=(n[1]*o+n[5]*r+n[9]*s+n[13])/i,t[2]=(n[2]*o+n[6]*r+n[10]*s+n[14])/i,t}function ht(t,e,n){var o=e[0],r=e[1],s=e[2];return t[0]=o*n[0]+r*n[3]+s*n[6],t[1]=o*n[1]+r*n[4]+s*n[7],t[2]=o*n[2]+r*n[5]+s*n[8],t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var At=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t};function Tt(){var t=new at(4);return at!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}gt();var yt=function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t},Et=function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t[3]=e[3]*n[3],t},St=function(t){return Math.hypot(t[0],t[1],t[2],t[3])};Tt();const Mt=\"dedup\",It={propertyTypes:[e.ACCESSOR,e.MESH,e.TEXTURE,e.MATERIAL,e.SKIN]};function wt(t=It){const n=q({},It,t),o=new Set(n.propertyTypes);for(const t of n.propertyTypes)if(!It.propertyTypes.includes(t))throw new Error(`${Mt}: Unsupported deduplication on type \"${t}\".`);return B(Mt,t=>{const n=t.getLogger();o.has(e.ACCESSOR)&&function(t){const e=t.getLogger(),n=new Map,o=new Map,r=new Map,i=new Map,a=t.getRoot().listMeshes();a.forEach(t=>{t.listPrimitives().forEach(t=>{t.listAttributes().forEach(t=>c(t,o)),c(t.getIndices(),n)})});for(const e of t.getRoot().listAnimations())for(const t of e.listSamplers())c(t.getInput(),r),c(t.getOutput(),i);function c(t,e){if(!t)return;const n=[t.getCount(),t.getType(),t.getComponentType(),t.getNormalized(),t.getSparse()].join(\":\");let o=e.get(n);o||e.set(n,o=new Set),o.add(t)}function l(t,e){for(let n=0;n{t.listPrimitives().forEach(t=>{t.listAttributes().forEach(e=>{u.has(e)&&t.swap(e,u.get(e))});const e=t.getIndices();e&&u.has(e)&&t.swap(e,u.get(e))})});for(const e of t.getRoot().listAnimations())for(const t of e.listSamplers()){const e=t.getInput(),n=t.getOutput();e&&u.has(e)&&t.swap(e,u.get(e)),n&&u.has(n)&&t.swap(n,u.get(n))}Array.from(u.keys()).forEach(t=>t.dispose())}(t),o.has(e.TEXTURE)&&function(t){const e=t.getLogger(),n=t.getRoot(),o=n.listTextures(),r=new Map;for(let t=0;t{t.listParents().forEach(n=>{n instanceof i||n.swap(t,e)}),t.dispose()})}(t),o.has(e.MATERIAL)&&function(t){const e=t.getLogger(),n=t.getRoot().listMaterials(),o=new Map,r=new Set([\"name\"]),s=new Map;for(let t=0;t{t.listParents().forEach(n=>{n instanceof i||n.swap(t,e)}),t.dispose()})}(t),o.has(e.MESH)&&function(t){const n=t.getLogger(),o=t.getRoot(),r=new Map;o.listAccessors().forEach((t,e)=>r.set(t,e)),o.listMaterials().forEach((t,e)=>r.set(t,e));const s=o.listMeshes().length,i=new Map;for(const t of o.listMeshes()){const n=[];for(const e of t.listPrimitives())n.push(Nt(e,r));const o=n.join(\";\");if(i.has(o)){const n=i.get(o);t.listParents().forEach(o=>{o.propertyType!==e.ROOT&&o.swap(t,n)}),t.dispose()}else i.set(o,t)}n.debug(`${Mt}: Merged ${s-i.size} of ${s} meshes.`)}(t),o.has(e.SKIN)&&function(t){const e=t.getLogger(),n=t.getRoot().listSkins(),o=new Map,r=new Set([\"name\",\"joints\"]);for(let t=0;t{t.listParents().forEach(n=>{n instanceof i||n.swap(t,e)}),t.dispose()})}(t),n.debug(`${Mt}: Complete.`)})}function Nt(e,n){const o=[];for(const t of e.listSemantics()){const r=e.getAttribute(t);o.push(t+\":\"+n.get(r))}if(e instanceof t){const t=e.getIndices();t&&o.push(\"indices:\"+n.get(t));const r=e.getMaterial();r&&o.push(\"material:\"+n.get(r)),o.push(\"mode:\"+e.getMode());for(const t of e.listTargets())o.push(\"target:\"+Nt(t,n))}return o.join(\",\")}function bt(t,e){if(e.has(t))return e.get(t);const n=t.getGraph(),o=new Set,r=n.listParentEdges(t);for(;r.length>0;){const s=r.pop();if(!0===s.getAttributes().modifyChild)return e.set(t,!0),!0;const i=s.getChild();if(!o.has(i))for(const t of n.listChildEdges(i))r.push(t)}return e.set(t,!1),!1}const Rt=/color|emissive|diffuse/i;function Ct(t){return t.getGraph().listParentEdges(t).some(t=>t.getAttributes().isColor||Rt.test(t.getName()))?\"srgb\":null}function Ot(t){const e=t.getGraph(),n=new Set;for(const o of e.listParentEdges(t)){const t=o.getParent(),r=o.getName()+\"Info\";for(const o of e.listChildEdges(t)){const t=o.getChild();t instanceof a&&o.getName()===r&&n.add(t)}}return Array.from(n)}function $t(t){const e=t.getGraph(),n=new Set,o=new Set;return function t(r){const s=new Set;for(const t of e.listChildEdges(r))t.getChild()instanceof c&&s.add(t.getName()+\"Info\");for(const i of e.listChildEdges(r)){const e=i.getChild();n.has(e)||(n.add(e),e instanceof a&&s.has(i.getName())?o.add(e):e instanceof l&&t(e))}}(t),Array.from(o)}function vt(t){const e=n.fromGraph(t.getGraph()).getRoot(),o=t.getGraph().listParentEdges(t).filter(t=>t.getParent()!==e).map(t=>t.getName());return Array.from(new Set(o))}const Pt=\"prune\",xt=3/255,Lt={propertyTypes:[e.NODE,e.SKIN,e.MESH,e.CAMERA,e.PRIMITIVE,e.PRIMITIVE_TARGET,e.ANIMATION,e.MATERIAL,e.TEXTURE,e.ACCESSOR,e.BUFFER],keepLeaves:!1,keepAttributes:!0,keepSolidTextures:!0};function zt(t=Lt){const n=q({},Lt,t),o=new Set(n.propertyTypes);return B(Pt,async t=>{const r=t.getLogger(),s=t.getRoot(),i=t.getGraph(),a=new Ft;if(o.has(e.MESH))for(const t of s.listMeshes())t.listPrimitives().length>0||a.dispose(t);if(o.has(e.NODE)){if(!n.keepLeaves)for(const t of s.listScenes())kt(i,t,a);for(const t of s.listNodes())_t(t,a)}if(o.has(e.SKIN))for(const t of s.listSkins())_t(t,a);if(o.has(e.MESH))for(const t of s.listMeshes())_t(t,a);if(o.has(e.CAMERA))for(const t of s.listCameras())_t(t,a);if(o.has(e.PRIMITIVE)&&Gt(i,e.PRIMITIVE,a),o.has(e.PRIMITIVE_TARGET)&&Gt(i,e.PRIMITIVE_TARGET,a),!n.keepAttributes&&o.has(e.ACCESSOR)){const e=new Map;for(const n of s.listMeshes())for(const o of n.listPrimitives()){const n=o.getMaterial(),r=Bt(o,Ut(t,n));qt(o,r),o.listTargets().forEach(t=>qt(t,r)),n&&(e.has(n)?e.get(n).add(o):e.set(n,new Set([o])))}for(const[t,n]of e)Wt(t,Array.from(n))}if(o.has(e.ANIMATION))for(const t of s.listAnimations()){for(const e of t.listChannels())e.getTargetNode()||a.dispose(e);if(t.listChannels().length)t.listSamplers().forEach(t=>_t(t,a));else{const e=t.listSamplers();_t(t,a),e.forEach(t=>_t(t,a))}}if(o.has(e.MATERIAL)&&s.listMaterials().forEach(t=>_t(t,a)),o.has(e.TEXTURE)&&(s.listTextures().forEach(t=>_t(t,a)),n.keepSolidTextures||await async function(t,e){const n=t.getRoot(),o=t.getGraph(),r=t.getLogger(),s=n.listTextures().map(async t=>{var s;const i=await async function(t){const e=await async function(t){try{return await M(t.getImage(),t.getMimeType())}catch(t){return null}}(t);if(!e)return null;const n=[Infinity,Infinity,Infinity,Infinity],o=[-Infinity,-Infinity,-Infinity,-Infinity],r=[0,0,0,0],[s,i]=e.shape;for(let t=0;txt)return null}return function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t}(r,((a=r)[0]=(c=o)[0]+(l=n)[0],a[1]=c[1]+l[1],a[2]=c[2]+l[2],a[3]=c[3]+l[3],a),.5/255);var a,c,l}(t);if(!i)return;\"srgb\"===Ct(t)&&u.convertSRGBToLinear(i,i);const a=t.getName()||t.getURI(),c=null==(s=t.getSize())?void 0:s.join(\"x\"),l=vt(t);for(const e of o.listParentEdges(t)){const t=e.getParent();t!==n&&Dt(t,i,e.getName(),r)&&e.dispose()}1===t.listParents().length&&(e.dispose(t),r.debug(`${Pt}: Removed solid-color texture \"${a}\" (${c}px ${l.join(\", \")})`))});await Promise.all(s)}(t,a)),o.has(e.ACCESSOR)&&s.listAccessors().forEach(t=>_t(t,a)),o.has(e.BUFFER)&&s.listBuffers().forEach(t=>_t(t,a)),a.empty())r.info(`${Pt}: No unused properties found.`);else{const t=a.entries().map(([t,e])=>`${t} (${e})`).join(\", \");r.info(`${Pt}: Removed types... ${t}`)}r.debug(`${Pt}: Complete.`)})}class Ft{constructor(){this.disposed={}}empty(){for(const t in this.disposed)return!1;return!0}entries(){return Object.entries(this.disposed)}dispose(t){this.disposed[t.propertyType]=this.disposed[t.propertyType]||0,this.disposed[t.propertyType]++,t.dispose()}}function _t(t,e){t.listParents().filter(t=>!(t instanceof i||t instanceof g)).length||e.dispose(t)}function Gt(t,e,n){for(const o of t.listEdges()){const t=o.getParent();t.propertyType===e&&_t(t,n)}}function kt(t,n,o){if(n.listChildren().forEach(e=>kt(t,e,o)),n instanceof r)return;const s=t.listParentEdges(n).some(t=>{const n=t.getParent().propertyType;return n!==e.ROOT&&n!==e.SCENE&&n!==e.NODE});0===t.listChildren(n).length&&!s&&o.dispose(n)}function qt(t,e){for(const n of e)t.setAttribute(n,null)}function Bt(t,e){const n=[];for(const o of t.listSemantics())\"TANGENT\"!==o||e.has(o)?(o.startsWith(\"TEXCOORD_\")&&!e.has(o)||o.startsWith(\"COLOR_\")&&\"COLOR_0\"!==o)&&n.push(o):n.push(o);return n}function Ut(t,e,n=new Set){if(!e)return n;const o=t.getGraph().listChildEdges(e),r=new Set;for(const t of o)t.getChild()instanceof c&&r.add(t.getName());for(const e of o){const o=e.getName(),s=e.getChild();s instanceof a&&r.has(o.replace(/Info$/,\"\"))&&n.add(`TEXCOORD_${s.getTexCoord()}`),s instanceof c&&o.match(/normalTexture/i)&&n.add(\"TANGENT\"),s instanceof l&&Ut(t,s,n)}return n}function Wt(t,e){const n=$t(t),o=new Set(n.map(t=>t.getTexCoord())),r=Array.from(o).sort(),s=new Map(r.map((t,e)=>[t,e])),i=new Map(r.map((t,e)=>[`TEXCOORD_${t}`,`TEXCOORD_${e}`]));for(const t of n){const e=t.getTexCoord();t.setTexCoord(s.get(e))}for(const t of e){const e=t.listSemantics().filter(t=>t.startsWith(\"TEXCOORD_\")).sort();a(t,e),t.listTargets().forEach(t=>a(t,e))}function a(t,e){for(const n of e){const e=t.getAttribute(n);if(!e)continue;const o=i.get(n);o!==n&&(t.setAttribute(o,e),t.setAttribute(n,null))}}}function Dt(t,e,n,o){if(t instanceof f)switch(n){case\"baseColorTexture\":return t.setBaseColorFactor(Et(e,e,t.getBaseColorFactor())),!0;case\"emissiveTexture\":return t.setEmissiveFactor(At([0,0,0],e.slice(0,3),t.getEmissiveFactor())),!0;case\"occlusionTexture\":return Math.abs(e[0]-1)<=xt;case\"metallicRoughnessTexture\":return t.setRoughnessFactor(e[1]*t.getRoughnessFactor()),t.setMetallicFactor(e[2]*t.getMetallicFactor()),!0;case\"normalTexture\":return St(yt(Tt(),e,[.5,.5,1,1]))<=xt}return o.warn(`${Pt}: Detected single-color ${n} texture. Pruning ${n} not yet supported.`),!1}const Ht=\"weld\",jt={DEFAULT:1e-4,TEXCOORD:1e-4,COLOR:.01,NORMAL:.05,JOINTS:0,WEIGHTS:.01},Xt={tolerance:jt.DEFAULT,toleranceNormal:jt.NORMAL,overwrite:!0,exhaustive:!1};function Vt(t=Xt){const n=re(t);return B(Ht,async t=>{const o=t.getLogger();for(const e of t.getRoot().listMeshes()){for(const o of e.listPrimitives())Kt(t,o,n),se(o)&&o.dispose();0===e.listPrimitives().length&&e.dispose()}n.tolerance>0&&await t.transform(zt({propertyTypes:[e.ACCESSOR,e.NODE]})),await t.transform(wt({propertyTypes:[e.ACCESSOR]})),o.debug(`${Ht}: Complete.`)})}function Kt(e,o=Xt,r=Xt){let s,i,a;if(e instanceof t){const t=e.getGraph();s=n.fromGraph(t),i=e,a=re(o)}else s=e,i=o,a=re(r);i.getIndices()&&!a.overwrite||i.getMode()!==t.Mode.POINTS&&(0===a.tolerance?function(t,e){if(e.getIndices())return;const n=e.listAttributes()[0],o=n.getCount(),r=n.getBuffer(),s=t.createAccessor().setBuffer(r).setType(p.Type.SCALAR).setArray(Y(o));e.setIndices(s)}(s,i):function(t,e,n){const o=t.getLogger(),r=e.getAttribute(\"POSITION\"),s=e.getIndices()||t.createAccessor().setArray(Y(r.getCount())),i=new Uint32Array(new Set(s.getArray())).sort(),a={};for(const t of e.listSemantics()){const o=e.getAttribute(t);a[t]=Yt(t,o,n)}var c;o.debug(`${Ht}: Tolerance thresholds: ${c=a,Object.entries(c).map(([t,e])=>`${t}=${e}`).join(\", \")}`);const l=[0,0,0],g=[0,0,0],u={},f=a.POSITION;for(let t=0;tte(e.getAttribute(n),o,t,a[n])),i=e.listTargets().every(e=>e.listSemantics().every(n=>te(e.getAttribute(n),o,t,a[n])));if(s&&i){p[o]=t;break t}}m[o]=p[o]===o?h++:m[p[o]]}o.debug(`${Ht}: ${V(d,h)} vertices.`);const A=s.getCount(),T=Y(A,i.length);for(let t=0;tt-Zt[e]),r=Math.max(...o);return n.tolerance*r}function te(t,e,n,o,r){t.getElement(e,Zt),t.getElement(n,Qt);for(let e=0,n=t.getElementSize();eo)return!1;return!0}const ee=[0,-1,1];function ne(t,e){const n=[],o=[0,0,0];for(const r of ee)for(const s of ee)for(const i of ee)o[0]=t[0]+r*e,o[1]=t[1]+s*e,o[2]=t[2]+i*e,n.push(oe(o,e));return n}function oe(t,e){return Math.round(t[0]/e)+\":\"+Math.round(t[1]/e)+\":\"+Math.round(t[2]/e)}function re(t){const e=q({},Xt,t);if(e.tolerance<0||e.tolerance>.1)throw new Error(`${Ht}: Requires 0 ≤ tolerance ≤ 0.1`);if(e.toleranceNormal<0||e.toleranceNormal>Math.PI/2)throw new Error(`${Ht}: Requires 0 ≤ toleranceNormal ≤ ${(Math.PI/2).toFixed(2)}`);return e.tolerance>0&&(e.tolerance=Math.max(e.tolerance,Number.EPSILON),e.toleranceNormal=Math.max(e.toleranceNormal,Number.EPSILON)),e}function se(t){const e=t.getIndices();return!!e&&0===e.getCount()}function ie(e,n,o=new Set){var r;const s=e.getAttribute(\"POSITION\"),i=(null==(r=e.getIndices())?void 0:r.getArray())||Y(s.getCount());s&&ae(n,s,i,new Set(o));const a=e.getAttribute(\"NORMAL\");a&&ce(n,a,i,new Set(o));const c=e.getAttribute(\"TANGENT\");c&&le(n,c,i,new Set(o));for(const t of e.listTargets()){const e=t.getAttribute(\"POSITION\");e&&ae(n,e,i,new Set(o));const r=t.getAttribute(\"NORMAL\");r&&ce(n,r,i,new Set(o));const s=t.getAttribute(\"TANGENT\");s&&le(n,s,i,new Set(o))}var l,g,u,f,p,m,d,h,A,T,y,E,S,M,I,w,N;((g=(l=n)[0])*(d=l[5])-(u=l[1])*(m=l[4]))*((E=l[10])*(N=l[15])-(S=l[11])*(w=l[14]))-(g*(h=l[6])-(f=l[2])*m)*((y=l[9])*N-S*(I=l[13]))+(g*(A=l[7])-(p=l[3])*m)*(y*w-E*I)+(u*h-f*d)*((T=l[8])*N-S*(M=l[12]))-(u*A-p*d)*(T*w-E*M)+(f*A-p*h)*(T*I-y*M)<0&&function(e){if(e.getMode()!==t.Mode.TRIANGLES)return;e.getIndices()||Kt(e,{tolerance:0});const n=e.getIndices();for(let t=0,e=n.getCount();tt.propertyType===e.MESH&&t!==n)){const e=t.clone();n.swap(t,e);for(const t of e.listTargets()){const n=t.clone();e.swap(t,n)}}if(!r){const e=new Set([...n.listPrimitives(),...n.listPrimitives().flatMap(t=>t.listTargets())]),o=new Map;for(const r of n.listPrimitives())for(const n of K(r))n.listParents().some(n=>(n instanceof t||n instanceof m)&&!e.has(n))&&!o.has(n)&&o.set(n,n.clone());for(const t of e)for(const[e,n]of o)t.swap(e,n)}const i=new Map;for(const t of n.listPrimitives()){const e=t.getAttribute(\"POSITION\");let n;s?n=s:i.has(e)?n=i.get(e):i.set(e,n=new Set),ie(t,o,n)}}const ue=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function fe(t){const e=t.getMesh(),n=t.getMatrix();e&&!d.eq(n,ue)&&ge(e,n);for(const e of t.listChildren()){const t=e.getMatrix();lt(t,t,n),e.setMatrix(t)}return t.setMatrix(ue)}const pe=\"dequantize\",me={pattern:/^((?!JOINTS_).)*$/};function de(t=me){const e=q({},me,t);return B(pe,t=>{const n=t.getLogger();for(const n of t.getRoot().listMeshes())for(const t of n.listPrimitives())he(t,e);t.createExtension(w).dispose(),n.debug(`${pe}: Complete.`)})}function he(t,e){for(const n of t.listSemantics())Ae(n,t.getAttribute(n),e);for(const n of t.listTargets())for(const t of n.listSemantics())Ae(t,n.getAttribute(t),e)}function Ae(t,e,n){if(!e.getArray())return;if(!n.pattern.test(t))return;if(e.getComponentSize()>=4)return;const o=e.getArray(),r=new Float32Array(o.length);for(let t=0,n=e.getCount(),s=[];t{await t.transform(Vt({tolerance:0})),t.createExtension(N).setRequired(!0).setEncoderOptions({method:\"edgebreaker\"===e.method?N.EncoderMethod.EDGEBREAKER:N.EncoderMethod.SEQUENTIAL,encodeSpeed:e.encodeSpeed,decodeSpeed:e.decodeSpeed,quantizationBits:{POSITION:e.quantizePosition,NORMAL:e.quantizeNormal,COLOR:e.quantizeColor,TEX_COORD:e.quantizeTexcoord,GENERIC:e.quantizeGeneric},quantizationVolume:e.quantizationVolume})})}const Ee=\"flatten\",Se={};function Me(t=Se){return q({},Se,t),B(Ee,async t=>{const n=t.getRoot(),o=t.getLogger(),r=new Set;for(const t of n.listSkins())for(const e of t.listJoints())r.add(e);const s=new Set;for(const t of n.listAnimations())for(const e of t.listChannels()){const t=e.getTargetNode();t&&s.add(t)}const i=new Set,a=new Set;for(const t of n.listScenes())t.traverse(t=>{const e=t.getParentNode();e&&((r.has(e)||i.has(e))&&i.add(t),(s.has(e)||a.has(e))&&a.add(t))});for(const t of n.listScenes())t.traverse(t=>{s.has(t)||i.has(t)||a.has(t)||it(t)});s.size&&o.debug(`${Ee}: Flattening node hierarchies with TRS animation not yet supported.`),await t.transform(zt({propertyTypes:[e.NODE],keepLeaves:!1})),o.debug(`${Ee}: Complete.`)})}function Ie(t){return st(t)[0]||null}function we(t){return{scenes:Ne(t),meshes:be(t),materials:Re(t),textures:Ce(t),animations:Oe(t)}}function Ne(t){return{properties:t.getRoot().listScenes().map(t=>{const e=t.listChildren()[0],n=o(t);return{name:t.getName(),rootName:e?e.getName():\"\",bboxMin:Pe(n.min),bboxMax:Pe(n.max)}})}}function be(t){return{properties:t.getRoot().listMeshes().map(t=>{const n=t.listParents().filter(t=>t.propertyType!==e.ROOT).length;let o=0,r=0;const s=new Set,i=new Set,a=new Set;t.listPrimitives().forEach(t=>{for(const e of t.listSemantics()){const n=t.getAttribute(e);s.add(e+\":\"+xe(n)),a.add(n)}for(const e of t.listTargets())e.listAttributes().forEach(t=>a.add(t));const e=t.getIndices();e&&(i.add(xe(e)),a.add(e)),r+=t.listAttributes()[0].getCount(),o+=D(t)});let c=0;Array.from(a).forEach(t=>c+=t.getArray().byteLength);const l=t.listPrimitives().map(t=>$e[t.getMode()]);return{name:t.getName(),mode:Array.from(new Set(l)),primitives:t.listPrimitives().length,glPrimitives:o,vertices:r,indices:Array.from(i).sort(),attributes:Array.from(s).sort(),instances:n,size:c}})}}function Re(t){return{properties:t.getRoot().listMaterials().map(n=>{const o=n.listParents().filter(t=>t.propertyType!==e.ROOT).length,r=new Set(n.listExtensions()),s=t.getGraph().listEdges().filter(t=>{const e=t.getChild(),o=t.getParent();return e instanceof c&&o===n||!!(e instanceof c&&o instanceof l&&r.has(o))}).map(t=>t.getName());return{name:n.getName(),instances:o,textures:s,alphaMode:n.getAlphaMode(),doubleSided:n.getDoubleSided()}})}}function Ce(t){return{properties:t.getRoot().listTextures().map(n=>{const o=n.listParents().filter(t=>t.propertyType!==e.ROOT).length,r=t.getGraph().listParentEdges(n).filter(t=>t.getParent().propertyType!==e.ROOT).map(t=>t.getName()),s=h.getSize(n.getImage(),n.getMimeType());let i=\"\";if(\"image/ktx2\"===n.getMimeType()){const t=L(n.getImage()).dataFormatDescriptor[0];t.colorModel===z?i=\"ETC1S\":t.colorModel===F&&(i=\"UASTC\")}return{name:n.getName(),uri:n.getURI(),slots:Array.from(new Set(r)),instances:o,mimeType:n.getMimeType(),compression:i,resolution:s?s.join(\"x\"):\"\",size:n.getImage().byteLength,gpuSize:h.getVRAMByteLength(n.getImage(),n.getMimeType())}})}}function Oe(t){return{properties:t.getRoot().listAnimations().map(t=>{let e=Infinity,n=-Infinity;t.listSamplers().forEach(t=>{const o=t.getInput();o&&(e=Math.min(e,o.getMin([])[0]),n=Math.max(n,o.getMax([])[0]))});let o=0,r=0;const s=new Set;return t.listSamplers().forEach(t=>{const e=t.getInput(),n=t.getOutput();e&&(r+=e.getCount(),s.add(e),n&&s.add(n))}),Array.from(s).forEach(t=>{o+=t.getArray().byteLength}),{name:t.getName(),channels:t.listChannels().length,samplers:t.listSamplers().length,duration:Math.round(1e3*(n-e))/1e3,keyframes:r,size:o}})}}const $e=[\"POINTS\",\"LINES\",\"LINE_LOOP\",\"LINE_STRIP\",\"TRIANGLES\",\"TRIANGLE_STRIP\",\"TRIANGLE_FAN\"],ve={Float32Array:\"f32\",Uint32Array:\"u32\",Uint16Array:\"u16\",Uint8Array:\"u8\",Int32Array:\"i32\",Int16Array:\"i16\",Int8Array:\"i8\"};function Pe(t){for(let e=0;e{const n=t.getLogger(),o=t.getRoot();if(o.listAnimations().length)return n.warn(`${Le}: Instancing is not currently supported for animated models.`),void n.debug(`${Le}: Complete.`);const r=t.createExtension(b);let s=0,i=0;for(const a of o.listScenes()){const o=new Map;a.traverse(t=>{const e=t.getMesh();e&&o.set(e,(o.get(e)||new Set).add(t))});const c=[];for(const l of Array.from(o.keys())){const g=Array.from(o.get(l));if(g.lengtht.getSkin()))continue;if(l.listPrimitives().some(Ge)&&g.some(ke))continue;const u=qe(t,r,l,g.length),f=u.getAttribute(\"TRANSLATION\"),p=u.getAttribute(\"ROTATION\"),m=u.getAttribute(\"SCALE\"),h=t.createNode().setMesh(l).setExtension(\"EXT_mesh_gpu_instancing\",u);a.addChild(h);let A=!1,T=!1,y=!1;for(let t=0;t0?`${Le}: Created ${s} batches, with ${i} total instances.`:`${Le}: No meshes with ≥${e.min} parent nodes were found.`),0===r.listProperties().length&&r.dispose(),n.debug(`${Le}: Complete.`)})}function _e(t,e){let n,o=0;for(;n=t.pop();){if(n.listChildren().length||n.getCamera()||n.getMesh()||n.getSkin()||n.listExtensions().length)continue;const e=n.getParentNode();e&&t.push(e),n.dispose(),o++}e.debug(`${Le}: Removed ${o} unused nodes.`)}function Ge(t){const e=t.getMaterial();return!(!e||!e.getExtension(\"KHR_materials_volume\"))}function ke(t){const e=t.getWorldScale();return!d.eq(e,[1,1,1])}function qe(t,e,n,o){const r=n.listPrimitives()[0].getAttribute(\"POSITION\").getBuffer(),s=t.createAccessor().setType(\"VEC3\").setArray(new Float32Array(3*o)).setBuffer(r),i=t.createAccessor().setType(\"VEC4\").setArray(new Float32Array(4*o)).setBuffer(r),a=t.createAccessor().setType(\"VEC3\").setArray(new Float32Array(3*o)).setBuffer(r);return e.createInstancedMesh().setAttribute(\"TRANSLATION\",s).setAttribute(\"ROTATION\",i).setAttribute(\"SCALE\",a)}const Be={skipValidation:!1};function Ue(t,e={}){e=q({},Be,e);const o=t[0],r=n.fromGraph(o.getGraph());if(!e.skipValidation&&new Set(t.map(tt)).size>1)throw new Error(\"Requires ≥2 Primitives, sharing the same Material and Mode, with compatible vertex attributes and indices.\");const s=[],i=[];let a=0,c=0;for(const e of t){const t=We(e),n=[];for(let e=0;e{const n=t.getRoot(),o=t.getLogger();for(const o of n.listScenes())Ye(t,o,e),o.traverse(n=>Ye(t,n,e));await t.transform(zt({propertyTypes:[je,Xe,Ve,Ke],keepLeaves:!1,keepAttributes:!0})),o.debug(`${De}: Complete.`)})}function Ye(t,n,o){const r=t.getLogger(),s={},i=n.listChildren();for(let t=0;tt instanceof g))continue;const n=e.getMesh();if(n&&!e.getExtension(\"EXT_mesh_gpu_instancing\")&&!e.getSkin())for(const r of n.listPrimitives()){if(r.listTargets().length>0)continue;const i=r.getMaterial();if(i&&i.getExtension(\"KHR_materials_volume\"))continue;nn(r);let a=tt(r);const c=n.getName()||e.getName();(o.keepMeshes||o.keepNamed&&c)&&(a+=`|${t}`),a in s||(s[a]={prims:[],primMeshes:[],primNodes:[],dstNode:e,dstMesh:void 0});const l=s[a];l.prims.push(r),l.primNodes.push(e)}}const a=Object.values(s).filter(({prims:t})=>t.length>1),c=new Set(a.flatMap(t=>t.primNodes));for(const t of c){const e=t.getMesh(),n=e.listParents().some(e=>e.propertyType!==He&&t!==e);n&&t.setMesh(e.clone())}for(const t of a){const{dstNode:e,primNodes:n}=t;t.dstMesh=e.getMesh(),t.primMeshes=n.map(t=>t.getMesh())}for(const t of a){const{prims:n,primNodes:o,primMeshes:s,dstNode:i,dstMesh:a}=t,c=i.getMatrix();for(let t=0;tt.propertyType!==e.ROOT)||en(a))&&(a=n[t]=tn(n[t])),r!==i&&(lt(Je,ct(Je,c),r.getMatrix()),ie(a,Je))}const l=Ue(n),g=l.listAttributes()[0].getCount();a.addPrimitive(l),r.debug(`${De}: Joined Primitives (${n.length}) containing ${X(g)} vertices under Node \"${i.getName()}\".`)}}function tn(t){const e=t.clone();for(const t of e.listSemantics())e.setAttribute(t,e.getAttribute(t).clone());const n=e.getIndices();return n&&e.setIndices(n.clone()),e}function en(t){for(const e of t.listAttributes())for(const n of e.listParents())if(n!==t&&n.propertyType!==He)return!0;return!1}function nn(t){for(const e of[\"POSITION\",\"NORMAL\",\"TANGENT\"]){const n=t.getAttribute(e);n&&n.getComponentSize()<4&&Ae(e,n,{pattern:/.*/})}}function on(t){const e=rn(t),n=[];return e&T.R&&n.push(T.R),e&T.G&&n.push(T.G),e&T.B&&n.push(T.B),e&T.A&&n.push(T.A),n}function rn(t){const o=n.fromGraph(t.getGraph());let r=0;for(const n of o.getGraph().listParentEdges(t)){const t=n.getParent();let{channels:s}=n.getAttributes();s&&\"baseColorTexture\"===n.getName()&&t instanceof f&&t.getAlphaMode()===f.AlphaMode.OPAQUE&&(s&=~T.A),s?r|=s:t.propertyType!==e.ROOT&&o.getLogger().warn(`Missing attribute \".channels\" on edge, \"${n.getName()}\".`)}return r}const sn=\"reorder\",an={target:\"size\"};function cn(n){const o=q({},an,n),r=o.encoder;if(!r)throw new Error(`${sn}: encoder dependency required — install \"meshoptimizer\".`);return B(sn,async n=>{const s=n.getLogger();await r.ready;const i=function(t){const e=new H,n=new Map,o=new H;for(const r of t.getRoot().listMeshes())for(const t of r.listPrimitives()){const r=t.getIndices();if(r){n.set(r,t.getMode());for(const n of K(t))e.add(r,n),o.add(n,t)}}return{indicesToAttributes:e,indicesToMode:n,attributesToPrimitives:o}}(n);for(const e of i.indicesToAttributes.keys()){const n=e.clone();let s=n.getArray().slice();s instanceof Uint32Array||(s=new Uint32Array(s));const[a,c]=r.reorderMesh(s,i.indicesToMode.get(e)===t.Mode.TRIANGLES,\"size\"===o.target);n.setArray(c<=65534?new Uint16Array(s):s);for(const t of i.indicesToAttributes.get(e)){const o=t.clone();Q(o,a,c);for(const r of i.attributesToPrimitives.get(t))if(r.getIndices()===e&&r.swap(e,n),r.getIndices()===n){r.swap(t,o);for(const e of r.listTargets())e.swap(t,o)}}}await n.transform(zt({propertyTypes:[e.ACCESSOR]})),i.indicesToAttributes.size?s.debug(`${sn}: Complete.`):s.warn(`${sn}: No qualifying primitives found; may need to weld first.`)})}function ln(t,e=Infinity){if(Number.isFinite(e)&&e%4||e<=0)throw new Error(\"Limit must be positive multiple of four.\");const n=t.getAttribute(\"POSITION\").getCount(),o=t.listSemantics().filter(t=>t.startsWith(\"WEIGHTS_\")).length,r=new Uint16Array(4*o),s=new Float32Array(4*o),i=new Float32Array(4*o),a=new Uint32Array(4*o),c=new Uint32Array(4*o);for(let e=0;es[t]>s[e]?-1:1);for(let t=0;te;n--){const e=t.getAttribute(\"WEIGHTS_\"+(n-1)),o=t.getAttribute(\"JOINTS_\"+(n-1));t.setAttribute(\"WEIGHTS_\"+(n-1),null),t.setAttribute(\"JOINTS_\"+(n-1),null),1===e.listParents().length&&e.dispose(),1===o.listParents().length&&o.dispose()}!function(t){if(!function(t){const e=t.listSemantics().filter(t=>t.startsWith(\"WEIGHTS_\")).map(e=>t.getAttribute(e)),n=e.map(t=>t.getNormalized()),o=e.map(t=>t.getComponentType());return 1===new Set(n).size&&1===new Set(o).size}(t))return;const e=t.getAttribute(\"POSITION\").getCount(),n=t.listSemantics().filter(t=>t.startsWith(\"WEIGHTS_\")).length,o=t.getAttribute(\"WEIGHTS_0\"),r=o.getArray(),s=o.getComponentType(),i=o.getNormalized(),a=i?s:void 0,c=i?d.decodeNormalizedInt(1,s):Number.EPSILON,l=new Uint32Array(4*n).fill(0),g=r.slice(0,4*n).fill(0);for(let n=0;nc)for(let t=0;t=0;t--)if(g[t]>0){g[t]+=d.encodeNormalizedInt(1-e,s);break}for(let t=g.length-1;t>=0;t--)0===g[t]&&(l[t]=0);un(t,n,\"JOINTS\",l),un(t,n,\"WEIGHTS\",g,a)}}}(t)}function gn(t,e,n,o,r){let s;const i=[0,0,0,0];for(let a=0;s=t.getAttribute(`${n}_${a}`);a++){s.getElement(e,i);for(let t=0;t<4;t++)o[4*a+t]=r?d.encodeNormalizedInt(i[t],r):i[t]}return o}function un(t,e,n,o,r){let s;const i=[0,0,0,0];for(let a=0;s=t.getAttribute(`${n}_${a}`);a++){for(let t=0;t<4;t++)i[t]=r?d.decodeNormalizedInt(o[4*a+t],r):o[4*a+t];s.setElement(e,i)}}function fn(t,e){let n=0;for(let o=0;o{const o=t.getLogger(),r=t.getRoot();let s;t.createExtension(w).setRequired(!0),\"scene\"===n.quantizationVolume&&(s=In(function(t){const e=t[0];for(const n of t)ut(e.min,e.min,n.min),ft(e.max,e.max,n.max);return e}(r.listMeshes().map($n))));for(const e of t.getRoot().listMeshes()){\"mesh\"===n.quantizationVolume&&(s=In($n(e))),s&&n.pattern.test(\"POSITION\")&&(wn(t,e,s),Rn(e,1/s.scale));for(const o of e.listPrimitives()){Mn(t,o,s,n);for(const e of o.listTargets())Mn(t,e,s,n)}}await t.transform(zt({propertyTypes:[e.ACCESSOR,e.SKIN,e.MATERIAL]}),wt({propertyTypes:[e.ACCESSOR,e.MATERIAL,e.SKIN]})),o.debug(`${pn}: Complete.`)})}function Mn(e,n,o,r){const s=n instanceof m,i=e.getLogger();for(const e of n.listSemantics()){if(!s&&!r.pattern.test(e))continue;if(s&&!r.patternTargets.test(e))continue;const l=n.getAttribute(e),{bits:g,ctor:u}=On(e,l,i,r);if(!u)continue;if(g<8||g>16)throw new Error(`${pn}: Requires bits = 8–16.`);if(l.getComponentSize()<=g/8)continue;const f=l.clone();if(\"POSITION\"===e){const e=o.scale,r=[];n instanceof t?ct(r,Pn(o)):((a=r)[0]=(c=[1/e,1/e,1/e])[0],a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=c[1],a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=c[2],a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1);for(let t=0,e=[0,0,0],n=f.getCount();tt instanceof g),i=s.some(t=>yn.includes(t.getTargetPath())),a=r.listChildren().length>0,c=r.getSkin();if(c){r.setSkin(Nn(c,n));continue}const l=r.getExtension(\"EXT_mesh_gpu_instancing\");if(l){r.setExtension(\"EXT_mesh_gpu_instancing\",bn(l,n));continue}let u;a||i?(u=t.createNode(\"\").setMesh(e),r.addChild(u).setMesh(null),s.filter(t=>t.getTargetPath()===Tn).forEach(t=>t.setTargetNode(u))):u=r;const f=u.getMatrix();lt(f,f,o),u.setMatrix(f)}}function Nn(t,e){t=t.clone();const n=Pn(e),o=t.getInverseBindMatrices().clone(),r=[];for(let t=0,e=o.getCount();t0?-1:0,1];for(let e=0,n=0,r=[];e>l,o[n++]=e*Math.sign(r[t])}}t.setArray(o).setNormalized(!0).setSparse(!1)}function On(t,e,n,o){const r=e.getMinNormalized([]),s=e.getMaxNormalized([]);let i,a;if(\"POSITION\"===t)i=o.quantizePosition,a=i<=8?Int8Array:Int16Array;else if(\"NORMAL\"===t||\"TANGENT\"===t)i=o.quantizeNormal,a=i<=8?Int8Array:Int16Array;else if(t.startsWith(\"COLOR_\"))i=o.quantizeColor,a=i<=8?Uint8Array:Uint16Array;else if(t.startsWith(\"TEXCOORD_\")){if(r.some(t=>t<0)||s.some(t=>t>1))return n.warn(`${pn}: Skipping ${t}; out of [0,1] range.`),{bits:-1};i=o.quantizeTexcoord,a=i<=8?Uint8Array:Uint16Array}else{if(t.startsWith(\"JOINTS_\"))return i=Math.max(...e.getMax([]))<=255?8:16,a=i<=8?Uint8Array:Uint16Array,e.getComponentSize()>i/8&&e.setArray(new a(e.getArray())),{bits:-1};if(t.startsWith(\"WEIGHTS_\")){if(r.some(t=>t<0)||s.some(t=>t>1))return n.warn(`${pn}: Skipping ${t}; out of [0,1] range.`),{bits:-1};i=o.quantizeWeight,a=i<=8?Uint8Array:Uint16Array}else{if(!t.startsWith(\"_\"))throw new Error(`${pn}: Unexpected semantic, \"${t}\".`);if(r.some(t=>t<-1)||s.some(t=>t>1))return n.warn(`${pn}: Skipping ${t}; out of [-1,1] range.`),{bits:-1};i=o.quantizeGeneric,a=a=r.some(t=>t<0)?i<=8?Int8Array:Int16Array:i<=8?Uint8Array:Uint16Array}}return{bits:i,ctor:a}}function $n(t){const e=[],n=[];for(const o of t.listPrimitives()){const t=o.getAttribute(\"POSITION\");t&&e.push(t);for(const t of o.listTargets()){const e=t.getAttribute(\"POSITION\");e&&n.push(e)}}if(0===e.length)throw new Error(`${pn}: Missing \"POSITION\" attribute.`);const o=vn(e,3);if(n.length>0){const{min:t,max:e}=vn(n,3);ut(o.min,o.min,ut(t,pt(t,t,2),[0,0,0])),ft(o.max,o.max,ft(e,pt(e,e,2),[0,0,0]))}return o}function vn(t,e){const n=new Array(e).fill(Infinity),o=new Array(e).fill(-Infinity),r=[],s=[];for(const i of t){i.getMinNormalized(r),i.getMaxNormalized(s);for(let t=0;t{let o,r,s=e.quantizeNormal;\"medium\"===e.level?(o=/.*/,r=/.*/):(o=/^(POSITION|TEXCOORD|JOINTS|WEIGHTS)(_\\d+)?$/,r=/^(POSITION|TEXCOORD|JOINTS|WEIGHTS|NORMAL|TANGENT)(_\\d+)?$/,s=Math.min(s,8)),await t.transform(cn({encoder:n,target:\"size\"}),Sn(q({},e,{pattern:o,patternTargets:r,quantizeNormal:s}))),t.createExtension(R).setRequired(!0).setEncoderOptions({method:\"medium\"===e.level?R.EncoderMethod.QUANTIZE:R.EncoderMethod.FILTER})})}const _n=\"metalRough\",Gn={};function kn(t=Gn){return q({},Gn,t),B(_n,async t=>{const e=t.getLogger();if(!t.getRoot().listExtensionsUsed().map(t=>t.extensionName).includes(\"KHR_materials_pbrSpecularGlossiness\"))return void e.warn(`${_n}: KHR_materials_pbrSpecularGlossiness not found on document.`);const n=t.createExtension(C),o=t.createExtension(O),r=t.createExtension($),s=new Set;for(const e of t.getRoot().listMaterials()){const r=e.getExtension(\"KHR_materials_pbrSpecularGlossiness\");if(!r)continue;const i=o.createSpecular().setSpecularFactor(1).setSpecularColorFactor(r.getSpecularFactor());s.add(r.getSpecularGlossinessTexture()),s.add(e.getBaseColorTexture()),s.add(e.getMetallicRoughnessTexture()),e.setBaseColorFactor(r.getDiffuseFactor()).setMetallicFactor(0).setRoughnessFactor(1).setExtension(\"KHR_materials_ior\",n.createIOR().setIOR(1e3)).setExtension(\"KHR_materials_specular\",i);const a=r.getDiffuseTexture();a&&(e.setBaseColorTexture(a),e.getBaseColorTextureInfo().copy(r.getDiffuseTextureInfo()));const c=r.getSpecularGlossinessTexture();if(c){const n=r.getSpecularGlossinessTextureInfo(),o=t.createTexture();await W(c,o,(t,e,n)=>{t.set(e,n,3,255)}),i.setSpecularTexture(o),i.setSpecularColorTexture(o),i.getSpecularTextureInfo().copy(n),i.getSpecularColorTextureInfo().copy(n);const s=r.getGlossinessFactor(),a=t.createTexture();await W(c,a,(t,e,n)=>{const o=255-Math.round(t.get(e,n,3)*s);t.set(e,n,0,0),t.set(e,n,1,o),t.set(e,n,2,0),t.set(e,n,3,255)}),e.setMetallicRoughnessTexture(a),e.getMetallicRoughnessTextureInfo().copy(n)}else i.setSpecularColorFactor(r.getSpecularFactor()),e.setRoughnessFactor(1-r.getGlossinessFactor());e.setExtension(\"KHR_materials_pbrSpecularGlossiness\",null)}r.dispose();for(const t of s)t&&1===t.listParents().length&&t.dispose();e.debug(`${_n}: Complete.`)})}const qn=\"unweld\",Bn={};function Un(t=Bn){return q({},Bn,t),B(qn,t=>{const e=t.getLogger(),n=new Map;for(const o of t.getRoot().listMeshes())for(const t of o.listPrimitives()){const o=t.getIndices();if(!o)continue;const r=t.getAttribute(\"POSITION\").getCount();for(const r of t.listAttributes())t.swap(r,Wn(r,o,e,n)),1===r.listParents().length&&r.dispose();for(const r of t.listTargets())for(const t of r.listAttributes())r.swap(t,Wn(t,o,e,n)),1===t.listParents().length&&t.dispose();const s=t.getAttribute(\"POSITION\").getCount();e.debug(`${qn}: ${V(r,s)} vertices.`),t.setIndices(null),1===o.listParents().length&&o.dispose()}e.debug(`${qn}: Complete.`)})}function Wn(t,e,n,o){if(o.has(t)&&o.get(t).has(e))return n.debug(`${qn}: Cache hit for reused attribute, \"${t.getName()}\".`),o.get(t).get(e);const r=t.clone(),s=t.getArray().constructor;r.setArray(new s(e.getCount()*t.getElementSize()));const i=[];for(let n=0;n{const n=t.getLogger();let o=0;await t.transform(Un());for(const r of t.getRoot().listMeshes())for(const s of r.listPrimitives()){const r=s.getAttribute(\"POSITION\");let i=s.getAttribute(\"NORMAL\");if(e.overwrite&&i)i.dispose();else if(i){n.debug(`${Dn}: Skipping primitive: NORMAL found.`);continue}i=t.createAccessor().setArray(new Float32Array(3*r.getCount())).setType(\"VEC3\");const a=[0,0,0],c=[0,0,0],l=[0,0,0];for(let t=0;t{const n=t.getLogger(),s=t.getRoot();await t.transform(zt({keepAttributes:!1,keepLeaves:!0,propertyTypes:[e.ACCESSOR]}));const i=new Set,c=new Set;for(const t of s.listMeshes())for(const e of t.listPrimitives()){const t=e.getMaterial();t&&!e.getAttribute(\"TEXCOORD_0\")&&(i.add(e),c.add(t))}const l=new Set,g=new Map,f={baseColor:new Set,emissive:new Set,metallicRoughness:new Set};for(const t of c){const e=Qn(t.getBaseColorFactor().slice()),n=Qn([...t.getEmissiveFactor(),1]),o=Zn(t.getRoughnessFactor()),r=Zn(t.getMetallicFactor()),s=`baseColor:${e},emissive:${n},metallicRoughness:${r}${o}`;f.baseColor.add(e),f.emissive.add(n),f.metallicRoughness.add(r+\"+\"+o),l.add(s),g.set(t,s)}const p=l.size;if(pt.forEach(t=>T.add(t));let E=null,S=null,M=null;if(f.baseColor.size>=r){const e=\"PaletteBaseColor\";E=t.createTexture(e).setURI(`${e}.png`),A.baseColor=_(new Uint8Array(m*d*4),[m,d,4]),y(\"baseColorFactor\",\"baseColorTexture\",\"baseColorTextureInfo\")}if(f.emissive.size>=r){const e=\"PaletteEmissive\";S=t.createTexture(e).setURI(`${e}.png`),A.emissive=_(new Uint8Array(m*d*4),[m,d,4]),y(\"emissiveFactor\",\"emissiveTexture\",\"emissiveTextureInfo\")}if(f.metallicRoughness.size>=r){const e=\"PaletteMetallicRoughness\";M=t.createTexture(e).setURI(`${e}.png`),A.metallicRoughness=_(new Uint8Array(m*d*4),[m,d,4]),y(\"metallicFactor\",\"roughnessFactor\",\"metallicRoughnessTexture\",\"metallicRoughnessTextureInfo\")}if(!(E||S||M))return void n.debug(`${Vn}: No material property has ≥${r} unique values. Exiting.`);const w=new Set,N=new Map,b=[];let R=0;for(const t of c){const e=g.get(t);if(w.has(e))continue;const n=R++;if(A.baseColor){const e=A.baseColor,r=[...t.getBaseColorFactor()];u.convertLinearToSRGB(r,r),to(e,n,r,o)}if(A.emissive){const e=A.emissive,r=[...t.getEmissiveFactor(),1];u.convertLinearToSRGB(r,r),to(e,n,r,o)}if(A.metallicRoughness){const e=A.metallicRoughness,r=t.getMetallicFactor();to(e,n,[0,t.getRoughnessFactor(),r,1],o)}w.add(e),N.set(e,n)}const C=\"image/png\";if(E){const t=await I(A.baseColor,C);E.setImage(t).setMimeType(C)}if(S){const t=await I(A.emissive,C);S.setImage(t).setMimeType(C)}if(M){const t=await I(A.metallicRoughness,C);M.setImage(t).setMimeType(C)}let O=1;for(const e of i){const n=e.getMaterial(),o=g.get(n),r=(N.get(o)+.5)/p*(m-h)/m,s=e.getAttribute(\"POSITION\"),i=s.getBuffer(),c=new Float32Array(2*s.getCount()).fill(r),l=t.createAccessor().setType(\"VEC2\").setArray(c).setBuffer(i);let u;for(const t of b)t.equals(n,T)&&(u=t);if(!u){const t=(O++).toString().padStart(3,\"0\");u=n.clone().setName(`PaletteMaterial${t}`),E&&u.setBaseColorFactor([1,1,1,1]).setBaseColorTexture(E).getBaseColorTextureInfo().setMinFilter(a.MinFilter.NEAREST).setMagFilter(a.MagFilter.NEAREST),S&&u.setEmissiveFactor([1,1,1]).setEmissiveTexture(S).getEmissiveTextureInfo().setMinFilter(a.MinFilter.NEAREST).setMagFilter(a.MagFilter.NEAREST),M&&u.setMetallicFactor(1).setRoughnessFactor(1).setMetallicRoughnessTexture(M).getMetallicRoughnessTextureInfo().setMinFilter(a.MinFilter.NEAREST).setMagFilter(a.MagFilter.NEAREST),b.push(u)}e.setMaterial(u).setAttribute(\"TEXCOORD_0\",l)}await t.transform(zt({propertyTypes:[e.MATERIAL]})),n.debug(`${Vn}: Complete.`)})}function Zn(t){const e=Math.round(255*t).toString(16);return 1===e.length?\"0\"+e:e}function Qn(t){return u.convertLinearToSRGB(t,t),t.map(Zn).join(\"\")}function Yn(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function to(t,e,n,o){for(let r=0;r{const o=t.getLogger();!1!==n.meshes&&function(t,e,n){const o=new Set(t.getRoot().listBuffers().map(t=>t.getURI()));t.getRoot().listMeshes().forEach((r,s)=>{if(Array.isArray(n.meshes)&&!n.meshes.includes(r.getName()))return void e.debug(`${eo}: Skipping mesh #${s} with name \"${r.getName()}\".`);e.debug(`${eo}: Creating buffer for mesh \"${r.getName()}\".`);const i=t.createBuffer(r.getName()).setURI(ro(r.getName()||\"mesh\",o));r.listPrimitives().forEach(t=>{const e=t.getIndices();e&&e.setBuffer(i),t.listAttributes().forEach(t=>t.setBuffer(i)),t.listTargets().forEach(t=>{t.listAttributes().forEach(t=>t.setBuffer(i))})})})}(t,o,n),!1!==n.animations&&function(t,e,n){const o=new Set(t.getRoot().listBuffers().map(t=>t.getURI()));t.getRoot().listAnimations().forEach((r,s)=>{if(Array.isArray(n.animations)&&!n.animations.includes(r.getName()))return void e.debug(`${eo}: Skipping animation #${s} with name \"${r.getName()}\".`);e.debug(`${eo}: Creating buffer for animation \"${r.getName()}\".`);const i=t.createBuffer(r.getName()).setURI(ro(r.getName()||\"animation\",o));r.listSamplers().forEach(t=>{const e=t.getInput(),n=t.getOutput();e&&e.setBuffer(i),n&&n.setBuffer(i)})})}(t,o,n),n.meshes||n.animations||o.warn(`${eo}: Select animations or meshes to create a partition.`),await t.transform(zt({propertyTypes:[e.BUFFER]})),o.debug(`${eo}: Complete.`)})}function ro(t,e){let n=`${t}.bin`,o=1;for(;e.has(n);)n=`${t}_${o++}.bin`;return n}var so;function io(t,e,n){for(let o=0,r=n.length;on)return!1;return!0}function lo(t,e,n){return t*(1-n)+e*n}function go(t,e,n,o){for(let r=0;r1e-6?(r=Math.acos(s),i=Math.sin(r),a=Math.sin((1-o)*r)/i,c=Math.sin(o*r)/i):(a=1-o,c=o),t[0]=a*l+c*p,t[1]=a*g+c*m,t[2]=a*u+c*d,t[3]=a*f+c*h,t}function fo(t,e){const n=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}(t,e);return Math.acos(2*n*n-1)}!function(t){t[t.STEP=0]=\"STEP\",t[t.LERP=1]=\"LERP\",t[t.SLERP=2]=\"SLERP\"}(so||(so={}));const po=\"resample\",mo=new Float32Array(0),ho={ready:Promise.resolve(),resample:function(t,e,n,o=1e-4){const r=e.length/t.length,s=new Array(r).fill(0),i=new Array(r).fill(0),a=new Array(r).fill(0),c=new Array(r).fill(0),l=t.length-1;let g=1;for(let r=1;r=Math.PI}else\"lerp\"===n?m=!co(i,go(s,c,a,p),o):\"step\"===n&&(m=!co(i,c)||!co(i,a));m&&(r!==g&&(t[g]=t[r],ao(e,g,io(e,r,s))),g++)}return l>0&&(t[g]=t[l],ao(e,g,io(e,l,s)),g++),g},tolerance:1e-4};function Ao(t=ho){const n=q({},ho,t);return B(po,async(t,o)=>{const r=new Set,s=t.getRoot().listAccessors().length,a=t.getLogger(),c=n.ready,l=n.resample;await c;for(const e of t.getRoot().listAnimations()){const t=new Map;for(const n of e.listChannels())t.set(n.getSampler(),n.getTargetPath());for(const o of e.listSamplers()){const e=o.getInterpolation();if(\"STEP\"===e||\"LINEAR\"===e){const s=o.getInput(),i=o.getOutput();r.add(s),r.add(i);const a=To(s.getArray(),s.getComponentType(),s.getNormalized()),c=To(i.getArray(),i.getComponentType(),i.getNormalized()),g=c.length/a.length,u=a.length;let f;if(f=\"STEP\"===e?l(a,c,\"step\",n.tolerance):\"rotation\"===t.get(o)?l(a,c,\"slerp\",n.tolerance):l(a,c,\"lerp\",n.tolerance),f!(t instanceof i))||t.dispose();t.getRoot().listAccessors().length>s&&!U(o,po,\"dedup\")&&await t.transform(wt({propertyTypes:[e.ACCESSOR]})),a.debug(`${po}: Complete.`)})}function To(t,e,n){if(t instanceof Float32Array)return t.slice();const o=new Float32Array(t);if(!n)return o;for(let t=0;t{const n=t.getLogger(),o=t.getRoot(),r=e.fps,s=o.listNodes().filter(t=>t.getName().match(e.pattern));e.sort&&s.sort((t,e)=>t.getName()>e.getName()?1:-1);const i=t.createAnimation(e.name),a=o.listBuffers()[0];s.forEach((e,n)=>{let o,c;0===n?(o=[n/r,(n+1)/r],c=[1,1,1,0,0,0]):n===s.length-1?(o=[(n-1)/r,n/r],c=[0,0,0,1,1,1]):(o=[(n-1)/r,n/r,(n+1)/r],c=[0,0,0,1,1,1,0,0,0]);const l=t.createAccessor().setArray(new Float32Array(o)).setBuffer(a),u=t.createAccessor().setArray(new Float32Array(c)).setBuffer(a).setType(p.Type.VEC3),f=t.createAnimationSampler().setInterpolation(E.Interpolation.STEP).setInput(l).setOutput(u),m=t.createAnimationChannel().setTargetNode(e).setTargetPath(g.TargetPath.SCALE).setSampler(f);i.addSampler(f).addChannel(m)}),n.debug(`${Eo}: Complete.`)})}const Io=\"simplify\",wo={ratio:0,error:1e-4,lockBorder:!1};function No(n){const o=q({},wo,n),r=o.simplifier;if(!r)throw new Error(`${Io}: simplifier dependency required — install \"meshoptimizer\".`);return B(Io,async(n,s)=>{const i=n.getLogger();await r.ready,await n.transform(Vt({overwrite:!1}));for(const e of n.getRoot().listMeshes()){for(const r of e.listPrimitives())r.getMode()===t.Mode.TRIANGLES?(bo(n,r,o),0===r.getIndices().getCount()&&r.dispose()):i.warn(`${Io}: Skipping primitive of mesh \"${e.getName()}\": Requires TRIANGLES draw mode.`);0===e.listPrimitives().length&&e.dispose()}await n.transform(zt({keepLeaves:!1,propertyTypes:[e.ACCESSOR,e.NODE]})),U(s,Io,\"dedup\")||await n.transform(wt({propertyTypes:[e.ACCESSOR]})),i.debug(`${Io}: Complete.`)})}function bo(t,e,n){const o=q({},wo,n),r=o.simplifier,s=t.getLogger(),i=e.getAttribute(\"POSITION\"),a=e.getIndices(),c=i.getCount();let l=i.getArray(),g=a.getArray();if(i.getComponentType()!==p.ComponentType.FLOAT)if(i.getNormalized()){const t=l,e=new Float32Array(t.length);for(let n=0,o=i.getCount(),r=[];n1)throw new Error(`${Ro}: Ratio must be between 0 and 1.`);return B(Ro,t=>{const n=t.getRoot(),o=t.getLogger();let r=0;for(const t of n.listAccessors()){const n=t.getCount(),o=Array(t.getElementSize()).fill(0),s=Array(t.getElementSize()).fill(0);let i=0;for(let r=0;r=e));r++);const a=i/n{const n=t.getLogger();for(const o of t.getRoot().listTextures()){const t=o.getName(),r=o.getURI();if(e.pattern&&!e.pattern.test(t)&&!e.pattern.test(r)){n.debug(`${$o}: Skipping, excluded by \"pattern\" parameter.`);continue}if(\"image/png\"!==o.getMimeType()&&\"image/jpeg\"!==o.getMimeType()){n.warn(`${$o}: Skipping, unsupported texture type \"${o.getMimeType()}\".`);continue}const s=vt(o);if(e.slots&&!s.some(t=>{var n;return null==(n=e.slots)?void 0:n.test(t)})){n.debug(`${$o}: Skipping, [${s.join(\", \")}] excluded by \"slots\" parameter.`);continue}const i=o.getSize(),a=et(i,e.size);if(d.eq(i,a)){n.debug(`${$o}: Skipping, not within size range.`);continue}const c=o.getImage(),l=await M(c,o.getMimeType()),g=_(new Uint8Array(a[0]*a[1]*4),[...a,4]);n.debug(`${$o}: Resizing \"${r||t}\", ${l.shape} → ${g.shape}...`),n.debug(`${$o}: Slots → [${s.join(\", \")}]`);try{e.filter===vo.LANCZOS3?G(l,g):k(l,g)}catch(e){if(e instanceof Error){n.warn(`${$o}: Failed to resize \"${r||t}\": \"${e.message}\".`);continue}throw e}o.setImage(await I(g,o.getMimeType()))}n.debug(`${$o}: Complete.`)})}const Lo=\"textureCompress\",zo=[\"jpeg\",\"png\",\"webp\",\"avif\"],Fo=[\"image/jpeg\",\"image/png\",\"image/webp\",\"image/avif\"],_o={resizeFilter:vo.LANCZOS3,pattern:void 0,formats:void 0,slots:void 0,quality:void 0,effort:void 0,lossless:!1,nearLossless:!1};function Go(t){const e=q({},_o,t),n=e.targetFormat,o=e.pattern,r=e.formats,s=e.slots;return B(Lo,async t=>{const i=t.getLogger(),a=t.getRoot().listTextures();await Promise.all(a.map(async(a,c)=>{const l=vt(a),g=rn(a),u=a.getURI()||a.getName()||`${c+1}/${t.getRoot().listTextures().length}`,f=`${Lo}(${u})`;if(!Fo.includes(a.getMimeType()))return void i.debug(`${f}: Skipping, unsupported texture type \"${a.getMimeType()}\".`);if(o&&!o.test(a.getName())&&!o.test(a.getURI()))return void i.debug(`${f}: Skipping, excluded by \"pattern\" parameter.`);if(r&&!r.test(a.getMimeType()))return void i.debug(`${f}: Skipping, \"${a.getMimeType()}\" excluded by \"formats\" parameter.`);if(s&&l.length&&!l.some(t=>s.test(t)))return void i.debug(`${f}: Skipping, [${l.join(\", \")}] excluded by \"slots\" parameter.`);if(\"jpeg\"===e.targetFormat&&g&T.A)return void i.warn(`${f}: Skipping, [${l.join(\", \")}] requires alpha channel.`);const p=qo(a);i.debug(`${f}: Format = ${p} → ${n||p}`),i.debug(`${f}: Slots = [${l.join(\", \")}]`);const m=a.getImage(),d=m.byteLength;await ko(a,e);const h=a.getImage(),A=h.byteLength,y=m===h?\" (SKIPPED\":\"\";i.debug(`${f}: Size = ${j(d)} → ${j(A)}${y}`)}));const c=t.createExtension(v);a.some(t=>\"image/webp\"===t.getMimeType())?c.setRequired(!0):c.dispose();const l=t.createExtension(P);a.some(t=>\"image/avif\"===t.getMimeType())?l.setRequired(!0):l.dispose(),i.debug(`${Lo}: Complete.`)})}async function ko(t,e){const n=q({},_o,e),o=n.encoder,r=qo(t),i=n.targetFormat||r,a=t.getMimeType(),c=`image/${i}`,l=t.getImage(),g=o?await async function(t,e,n,o){const r=o.encoder;let i={};const a=Bo(n);switch(a){case\"jpeg\":i={quality:o.quality};break;case\"png\":i={quality:o.quality,effort:Uo(o.effort,100,10)};break;case\"webp\":i={quality:o.quality,effort:Uo(o.effort,100,6),lossless:o.lossless,nearLossless:o.nearLossless};break;case\"avif\":i={quality:o.quality,effort:Uo(o.effort,100,9),lossless:o.lossless}}const c=r(t).toFormat(a,i);return o.resize&&c.resize(o.resize[0],o.resize[1],{fit:\"inside\",kernel:o.resizeFilter,withoutEnlargement:!0}),s.toView(await c.toBuffer())}(l,0,c,n):await async function(t,e,n,o){const r=await M(t,e);if(o.resize){const[t,e]=r.shape,s=et([t,e],o.resize),i=_(new Uint8Array(s[0]*s[1]*4),[...s,4]);return o.resizeFilter===vo.LANCZOS3?G(r,i):k(r,i),I(i,n)}return I(r,n)}(l,a,c,n);if(!(a===c&&g.byteLength>=l.byteLength)||n.resize)if(a===c)t.setImage(g);else{const e=h.mimeTypeToExtension(a),n=h.mimeTypeToExtension(c),o=t.getURI().replace(new RegExp(`\\\\.${e}$`),`.${n}`);t.setImage(g).setMimeType(c).setURI(o)}}function qo(t){return Bo(t.getMimeType())}function Bo(t){const e=t.split(\"/\").pop();if(!e||!zo.includes(e))throw new Error(`Unknown MIME type \"${t}\".`);return e}function Uo(t,e,n){if(null!=t)return Math.round(t/e*n)}const Wo=\"tangents\",Do={overwrite:!1};function Ho(t=Do){if(!t.generateTangents)throw new Error(`${Wo}: generateTangents callback required — install \"mikktspace\".`);const e=q({},Do,t);return B(Wo,t=>{const n=t.getLogger(),o=new Map,r=new Map;let s=0;for(const i of t.getRoot().listMeshes()){const a=i.getName(),c=i.listPrimitives();for(let i=0;i{const e=t.createExtension(x).createUnlit();t.getRoot().listMaterials().forEach(t=>{t.setExtension(\"KHR_materials_unlit\",e)})}}const Ko=\"unpartition\",Jo={};function Zo(t=Jo){return q({},Jo,t),B(Ko,async t=>{const e=t.getLogger(),n=t.getRoot().listBuffers()[0];t.getRoot().listAccessors().forEach(t=>t.setBuffer(n)),t.getRoot().listBuffers().forEach((t,e)=>e>0?t.dispose():null),e.debug(`${Ko}: Complete.`)})}const Qo=\"vertexColorSpace\",Yo=tr;function tr(t){return B(Qo,e=>{const n=e.getLogger(),o=(t.inputColorSpace||t.inputEncoding||\"\").toLowerCase();if(\"srgb-linear\"===o)return void n.info(`${Qo}: Vertex colors already linear. Skipping conversion.`);if(\"srgb\"!==o)return void n.error(`${Qo}: Unknown input color space \"${o}\" – should be \"srgb\" or \"srgb-linear\". Skipping conversion.`);const r=new Set;function s(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function i(t){const e=[0,0,0];let n;for(let o=0;n=t.getAttribute(`COLOR_${o}`);o++)if(!r.has(n)){for(let t=0;tt.listPrimitives().forEach(i)),n.debug(`${Qo}: Complete.`)})}export{Te as DRACO_DEFAULTS,Se as FLATTEN_DEFAULTS,Ze as JOIN_DEFAULTS,Ln as MESHOPT_DEFAULTS,Kn as PALETTE_DEFAULTS,En as QUANTIZE_DEFAULTS,wo as SIMPLIFY_DEFAULTS,_o as TEXTURE_COMPRESS_DEFAULTS,zo as TEXTURE_COMPRESS_SUPPORTED_FORMATS,Po as TEXTURE_RESIZE_DEFAULTS,vo as TextureResizeFilter,Xt as WELD_DEFAULTS,rt as center,it as clearNodeParent,fe as clearNodeTransform,Yo as colorspace,ko as compressTexture,B as createTransform,wt as dedup,de as dequantize,he as dequantizePrimitive,ye as draco,Me as flatten,D as getGLPrimitiveCount,Ie as getNodeScene,rn as getTextureChannelMask,Ct as getTextureColorSpace,we as inspect,Fe as instance,U as isTransformPending,Qe as join,Ue as joinPrimitives,st as listNodeScenes,on as listTextureChannels,Ot as listTextureInfo,$t as listTextureInfoByMaterial,vt as listTextureSlots,Fn as meshopt,kn as metalRough,jn as normals,Jn as palette,oo as partition,zt as prune,Sn as quantize,cn as reorder,Ao as resample,Mo as sequence,No as simplify,bo as simplifyPrimitive,ln as sortPrimitiveWeights,Oo as sparse,Ho as tangents,Go as textureCompress,xo as textureResize,ge as transformMesh,ie as transformPrimitive,Vo as unlit,Zo as unpartition,Un as unweld,tr as vertexColorSpace,Vt as weld,Kt as weldPrimitive};\n//# sourceMappingURL=functions.modern.js.map\n","// Copyright 2023 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Accessor, Extension, ExtensionProperty, GLTF, IProperty, PropertyType, ReaderContext, WriterContext} from '@gltf-transform/core';\n\nconst NAME = 'EXT_mesh_manifold';\nconst MERGE = 'MERGE';\n\ninterface IManifoldPrimitive extends IProperty {\n mergeIndices: Accessor;\n mergeValues: Accessor;\n indices: Accessor;\n runIndex: number[]|Uint32Array;\n}\n\ninterface ManifoldDef {\n manifoldPrimitive: GLTF.IMeshPrimitive;\n mergeIndices: number;\n mergeValues: number;\n}\n\nexport class ManifoldPrimitive extends ExtensionProperty {\n static EXTENSION_NAME = NAME;\n public declare extensionName: typeof NAME;\n public declare propertyType: 'ManifoldPrimitive';\n public declare parentTypes: [PropertyType.MESH];\n\n init() {\n ManifoldPrimitive.EXTENSION_NAME = NAME;\n this.propertyType = 'ManifoldPrimitive';\n this.parentTypes = [PropertyType.MESH];\n }\n\n getDefaults() {\n return Object.assign(\n super.getDefaults(),\n {manifoldPrimitive: null, mergeIndices: null, mergeValues: null});\n }\n\n getMergeIndices() {\n return this.getRef('mergeIndices');\n }\n\n getMergeValues() {\n return this.getRef('mergeValues');\n }\n\n setMerge(indicesAccessor: Accessor, valuesAccessor: Accessor) {\n if (indicesAccessor.getCount() !== valuesAccessor.getCount())\n throw new Error('merge vectors must be the same length.');\n this.setRef('mergeIndices', indicesAccessor);\n return this.setRef('mergeValues', valuesAccessor);\n }\n\n getRunIndex() {\n return this.get('runIndex');\n }\n\n setRunIndex(runIndex: number[]|Uint32Array) {\n return this.set('runIndex', runIndex);\n }\n\n setIndices(indices: Accessor) {\n return this.setRef('indices', indices);\n }\n\n getIndices() {\n return this.getRef('indices')!;\n }\n}\n\nexport class EXTManifold extends Extension {\n extensionName = NAME;\n prewriteTypes = [PropertyType.ACCESSOR];\n static EXTENSION_NAME = NAME;\n\n createManifoldPrimitive() {\n return new ManifoldPrimitive(this.document.getGraph());\n }\n\n read(context: ReaderContext) {\n const {json} = context.jsonDoc;\n const meshDefs = json.meshes || [];\n\n meshDefs.forEach((meshDef, meshIndex) => {\n if (!meshDef.extensions || !meshDef.extensions[NAME]) return;\n\n const mesh = context.meshes[meshIndex];\n const manifoldPrimitive = this.createManifoldPrimitive();\n mesh.setExtension(NAME, manifoldPrimitive);\n\n const manifoldDef = meshDef.extensions[NAME] as ManifoldDef;\n\n if (manifoldDef.manifoldPrimitive) {\n let count = 0;\n const runIndex = Array();\n runIndex.push(count);\n for (const primitive of mesh.listPrimitives()) {\n const indices = primitive.getIndices();\n if (!indices) {\n console.log('Skipping non-indexed primitive ', primitive.getName());\n continue;\n }\n count += indices.getCount();\n runIndex.push(count);\n }\n manifoldPrimitive.setRunIndex(runIndex);\n manifoldPrimitive.setIndices(\n context.accessors[manifoldDef.manifoldPrimitive.indices!]);\n }\n\n if (manifoldDef.mergeIndices != null && manifoldDef.mergeValues != null) {\n manifoldPrimitive.setMerge(\n context.accessors[manifoldDef.mergeIndices],\n context.accessors[manifoldDef.mergeValues]);\n }\n });\n\n return this;\n }\n\n prewrite(context: WriterContext) {\n this.document.getRoot().listMeshes().forEach((mesh) => {\n const manifoldPrimitive = mesh.getExtension(NAME) as ManifoldPrimitive;\n if (!manifoldPrimitive) return;\n\n const indices = manifoldPrimitive.getIndices();\n context.addAccessorToUsageGroup(\n indices, WriterContext.BufferViewUsage.ELEMENT_ARRAY_BUFFER);\n\n const mergeFrom = manifoldPrimitive.getMergeIndices();\n const mergeTo = manifoldPrimitive.getMergeValues();\n if (!mergeFrom || !mergeTo) return;\n\n context.addAccessorToUsageGroup(mergeFrom, MERGE);\n context.addAccessorToUsageGroup(mergeTo, MERGE);\n });\n return this;\n }\n\n write(context: WriterContext) {\n const {json} = context.jsonDoc;\n\n this.document.getRoot().listMeshes().forEach((mesh) => {\n const manifoldPrimitive = mesh.getExtension(NAME) as ManifoldPrimitive;\n if (!manifoldPrimitive) return;\n\n const meshIndex = context.meshIndexMap.get(mesh)!;\n const meshDef = json.meshes![meshIndex];\n\n const runIndex = manifoldPrimitive.getRunIndex();\n const numPrimitive = runIndex.length - 1;\n\n if (numPrimitive !== meshDef.primitives.length) {\n throw new Error(\n 'The number of primitives must be exactly one less than the length of runIndex.');\n }\n\n const mergeIndicesIndex =\n context.accessorIndexMap.get(manifoldPrimitive.getMergeIndices()!)!;\n const mergeValuesIndex =\n context.accessorIndexMap.get(manifoldPrimitive.getMergeValues()!)!;\n const mergeIndices = json.accessors![mergeIndicesIndex];\n const mergeValues = json.accessors![mergeValuesIndex];\n\n const existingPrimitive = meshDef.primitives[0];\n const primitive = {\n indices: context.accessorIndexMap.get(manifoldPrimitive.getIndices())!,\n mode: existingPrimitive.mode,\n attributes: {'POSITION': existingPrimitive.attributes['POSITION']}\n };\n\n const indices = json.accessors![primitive.indices];\n if (!indices) {\n return;\n }\n\n if (mergeIndices && mergeValues) {\n indices.sparse = {\n count: mergeIndices.count,\n indices: {\n bufferView: mergeIndices.bufferView!,\n byteOffset: mergeIndices.byteOffset,\n componentType: mergeIndices.componentType\n },\n values: {\n bufferView: mergeValues.bufferView!,\n byteOffset: mergeValues.byteOffset,\n }\n };\n }\n\n for (let i = 0; i < numPrimitive; ++i) {\n const accessor = json.accessors![meshDef.primitives[i].indices!];\n accessor.bufferView = indices.bufferView;\n accessor.byteOffset = indices.byteOffset! + 4 * runIndex[i];\n accessor.count = runIndex[i + 1] - runIndex[i];\n }\n\n meshDef.extensions = meshDef.extensions || {};\n meshDef.extensions[NAME] = {\n manifoldPrimitive: primitive,\n mergeIndices: mergeIndicesIndex,\n mergeValues: mergeValuesIndex\n };\n\n // Test the manifold primitive by replacing the material primitives\n // meshDef.primitives = [primitive];\n });\n\n return this;\n }\n}","// Copyright 2023 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Accessor, Document, Material, Mesh, Primitive, Texture, WebIO} from '@gltf-transform/core';\n\nimport {EXTManifold, ManifoldPrimitive} from './manifold-gltf';\nimport {Mesh as ManifoldMesh, MeshOptions} from './public/manifold-encapsulated-types';\n\nexport const attributeDefs = {\n 'POSITION': {type: Accessor.Type.VEC3, components: 3},\n 'NORMAL': {type: Accessor.Type.VEC3, components: 3},\n 'TANGENT': {type: Accessor.Type.VEC4, components: 4},\n 'TEXCOORD_0': {type: Accessor.Type.VEC2, components: 2},\n 'TEXCOORD_1': {type: Accessor.Type.VEC2, components: 2},\n 'COLOR_0': {type: Accessor.Type.VEC3, components: 3},\n 'JOINTS_0': {type: Accessor.Type.VEC4, components: 4},\n 'WEIGHTS_0': {type: Accessor.Type.VEC4, components: 4},\n 'SKIP_1': {type: null, components: 1},\n 'SKIP_2': {type: null, components: 2},\n 'SKIP_3': {type: null, components: 3},\n 'SKIP_4': {type: null, components: 4},\n};\n\nexport type Attribute = keyof(typeof attributeDefs);\n\nexport interface Properties {\n material: Material;\n attributes: Attribute[];\n}\n\n/**\n * Call this first to register the manifold extension so that readMesh and\n * writeMesh will work.\n */\nexport function setupIO(io: WebIO) {\n return io.registerExtensions([EXTManifold]);\n}\n\n/**\n * Read an input mesh into Manifold-compatible data structures, whether it\n * contains the EXT_mesh_manifold extension or not.\n *\n * @param mesh The Mesh to read.\n * @param attributes An array of attributes representing the order of desired\n * properties returned in the vertProperties array of the output mesh. If\n * omitted, this will be populated with the union of all attributes defined\n * in the primitives of the input mesh. If present, the first entry must be\n * 'POSITION', and any attributes in the primitives that are not included in\n * this list will be ignored, while those in the list but not defined in a\n * primitive will be populated with zeros.\n * @returns The returned mesh is suitable for initializing a Manifold or Mesh of\n * the Manifold library if desired. See Manifold documentation if you prefer\n * to use these GL arrays in a different library. The runProperties array\n * gives the Material and attributes list associated with each triangle run,\n * which in turn corresponds to a primitive of the input mesh. These\n * attributes are the intersection of the attributes present on the\n * primitive and those requested in the attributes input.\n */\nexport function readMesh(mesh: Mesh, attributes: Attribute[] = []):\n {mesh: MeshOptions, runProperties: Properties[]}|null {\n const primitives = mesh.listPrimitives();\n if (primitives.length === 0) {\n return null;\n }\n\n if (attributes.length === 0) {\n const attributeSet = new Set();\n for (const primitive of primitives) {\n const semantics = primitive.listSemantics() as Attribute[];\n for (const semantic of semantics) {\n attributeSet.add(semantic);\n }\n }\n let semantic: Attribute;\n for (semantic in attributeDefs) {\n if (attributeSet.has(semantic)) {\n attributes.push(semantic);\n attributeSet.delete(semantic);\n }\n }\n for (const semantic of attributeSet.keys()) {\n attributes.push(semantic);\n }\n }\n\n if (attributes.length < 1 || attributes[0] !== 'POSITION')\n throw new Error('First attribute must be \"POSITION\".');\n\n let numProp = 0;\n const attributeOffsets = attributes.map((numProp = 0, def => {\n const last = numProp;\n numProp += attributeDefs[def].components;\n return last;\n }));\n\n const manifoldPrimitive =\n mesh.getExtension('EXT_mesh_manifold') as ManifoldPrimitive;\n\n let vertPropArray = Array();\n let triVertArray = Array();\n const runIndexArray = [0];\n const mergeFromVertArray = Array();\n const mergeToVertArray = Array();\n const runProperties = Array();\n if (manifoldPrimitive != null) {\n const numVert = primitives[0].getAttribute('POSITION')!.getCount();\n const foundAttribute = attributes.map((a) => attributeDefs[a].type == null);\n vertPropArray = new Array(numProp * numVert);\n\n for (const primitive of primitives) {\n const indices = primitive.getIndices();\n if (!indices) {\n console.log('Skipping non-indexed primitive ', primitive.getName());\n continue;\n }\n\n const attributesIn = primitive.listSemantics() as Attribute[];\n\n attributes.forEach((attributeOut, idx) => {\n if (foundAttribute[idx]) {\n return;\n }\n for (const attributeIn of attributesIn) {\n if (attributeIn === attributeOut) {\n foundAttribute[idx] = true;\n const accessor = primitive.getAttribute(attributeIn)!;\n writeProperties(\n vertPropArray, accessor, numProp, attributeOffsets[idx]);\n }\n }\n });\n\n triVertArray = [...triVertArray, ...indices.getArray()!];\n runIndexArray.push(triVertArray.length);\n runProperties.push({\n material: primitive.getMaterial()!,\n attributes: attributesIn.filter(b => attributes.some(a => a == b))\n });\n }\n const mergeTriVert = manifoldPrimitive.getMergeIndices()?.getArray() ?? [];\n const mergeTo = manifoldPrimitive.getMergeValues()?.getArray() ?? [];\n const vert2merge = new Map();\n for (const [i, idx] of mergeTriVert.entries()) {\n vert2merge.set(triVertArray[idx], mergeTo[i]);\n }\n for (const [from, to] of vert2merge.entries()) {\n mergeFromVertArray.push(from);\n mergeToVertArray.push(to);\n }\n } else {\n for (const primitive of primitives) {\n const indices = primitive.getIndices();\n if (!indices) {\n console.log('Skipping non-indexed primitive ', primitive.getName());\n continue;\n }\n const numVert = vertPropArray.length / numProp;\n vertPropArray =\n [...vertPropArray, ...readPrimitive(primitive, numProp, attributes)];\n triVertArray =\n [...triVertArray, ...indices.getArray()!.map((i) => i + numVert)];\n runIndexArray.push(triVertArray.length);\n\n const attributesIn = primitive.listSemantics() as Attribute[];\n runProperties.push({\n material: primitive.getMaterial()!,\n attributes: attributesIn.filter(b => attributes.some(a => a == b))\n });\n }\n }\n const vertProperties = new Float32Array(vertPropArray);\n const triVerts = new Uint32Array(triVertArray);\n const runIndex = new Uint32Array(runIndexArray);\n const mergeFromVert = new Uint32Array(mergeFromVertArray);\n const mergeToVert = new Uint32Array(mergeToVertArray);\n\n const meshOut =\n {numProp, triVerts, vertProperties, runIndex, mergeFromVert, mergeToVert};\n\n return {mesh: meshOut, runProperties};\n}\n\n/**\n * Write a Manifold Mesh into a glTF Mesh object, using the EXT_mesh_manifold\n * extension to allow for lossless roundtrip of the manifold mesh through the\n * glTF file.\n *\n * @param doc The glTF Document to which this Mesh will be added.\n * @param manifoldMesh The Manifold Mesh to convert to glTF.\n * @param id2properties A map from originalID to Properties that include the\n * glTF Material and the set of attributes to output. All triangle runs with\n * the same originalID will be combined into a single output primitive. Any\n * originalIDs not found in the map will have the glTF default material and\n * no attributes beyond 'POSITION'. Each attributes array must correspond to\n * the manifoldMesh vertProperties, thus the first attribute must always be\n * 'POSITION'. Any properties that should not be output for a given\n * primitive must use the 'SKIP_*' attributes.\n * @returns The glTF Mesh to add to the Document.\n */\nexport function writeMesh(\n doc: Document, manifoldMesh: ManifoldMesh,\n id2properties: Map): Mesh {\n if (doc.getRoot().listBuffers().length === 0) {\n doc.createBuffer();\n }\n const buffer = doc.getRoot().listBuffers()[0];\n const manifoldExtension = doc.createExtension(EXTManifold);\n\n const mesh = doc.createMesh();\n const runIndex = Array();\n const attributeUnion = Array();\n const primitive2attributes = new Map();\n const numRun = manifoldMesh.runIndex.length - 1;\n let lastID = -1;\n for (let run = 0; run < numRun; ++run) {\n const id = manifoldMesh.runOriginalID[run];\n if (id == lastID) {\n continue;\n }\n lastID = id;\n runIndex.push(manifoldMesh.runIndex[run]);\n\n const indices = doc.createAccessor('primitive indices of ID ' + id)\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(new Uint32Array(1));\n const primitive = doc.createPrimitive().setIndices(indices);\n\n const properties = id2properties.get(id);\n if (properties) {\n const {material, attributes} = properties;\n if (attributes.length < 1 || attributes[0] !== 'POSITION')\n throw new Error('First attribute must be \"POSITION\".');\n\n primitive.setMaterial(material);\n primitive2attributes.set(primitive, attributes);\n\n properties.attributes.forEach((attribute, i) => {\n if (i >= attributeUnion.length) {\n attributeUnion.push(attribute);\n } else {\n const size = attributeDefs[attribute].components;\n const unionSize = attributeDefs[attributeUnion[i]].components;\n if (size != unionSize) {\n throw new Error(\n 'Attribute sizes do not correspond: ' + attribute + ' and ' +\n attributeUnion[i]);\n }\n if (attributeDefs[attributeUnion[i]].type == null) {\n attributeUnion[i] = attribute;\n }\n }\n });\n } else {\n primitive2attributes.set(primitive, ['POSITION']);\n }\n\n mesh.addPrimitive(primitive);\n }\n runIndex.push(manifoldMesh.runIndex[numRun]);\n\n const numVert = manifoldMesh.numVert;\n const numProp = manifoldMesh.numProp;\n let offset = 0;\n attributeUnion.forEach((attribute, aIdx) => {\n const def = attributeDefs[attribute];\n if (def == null)\n throw new Error(attribute + ' is not a recognized attribute.');\n\n if (def.type == null) {\n ++offset;\n return;\n }\n\n const n = def.components;\n if (offset + n > numProp) throw new Error('Too many attribute channels.');\n\n const array = new Float32Array(n * numVert);\n for (let v = 0; v < numVert; ++v) {\n for (let i = 0; i < n; ++i) {\n let x = manifoldMesh.vertProperties[numProp * v + offset + i];\n if (attribute == 'COLOR_0') {\n x = Math.max(0, Math.min(1, x));\n }\n array[n * v + i] = x;\n }\n }\n\n const accessor = doc.createAccessor(attribute)\n .setBuffer(buffer)\n .setType(def.type)\n .setArray(array);\n\n for (const primitive of mesh.listPrimitives()) {\n const attributes = primitive2attributes.get(primitive)!;\n if (attributes.length > aIdx &&\n attributeDefs[attributes[aIdx]].type != null) {\n primitive.setAttribute(attribute, accessor);\n }\n }\n offset += n;\n });\n\n const manifoldPrimitive = manifoldExtension.createManifoldPrimitive();\n mesh.setExtension('EXT_mesh_manifold', manifoldPrimitive);\n\n const indices = doc.createAccessor('manifold indices')\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(manifoldMesh.triVerts);\n manifoldPrimitive.setIndices(indices);\n manifoldPrimitive.setRunIndex(runIndex);\n\n const vert2merge = [...Array(manifoldMesh.numVert).keys()];\n const ind = Array();\n const val = Array();\n if (manifoldMesh.mergeFromVert && manifoldMesh.mergeToVert) {\n for (const [i, from] of manifoldMesh.mergeFromVert.entries()) {\n vert2merge[from] = manifoldMesh.mergeToVert[i];\n }\n\n for (const [i, vert] of manifoldMesh.triVerts.entries()) {\n const newVert = vert2merge[vert];\n if (vert !== newVert) {\n ind.push(i);\n val.push(newVert);\n }\n }\n }\n if (ind.length > 0) {\n const indicesAccessor = doc.createAccessor('merge from')\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(new Uint32Array(ind));\n const valuesAccessor = doc.createAccessor('merge to')\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(new Uint32Array(val));\n manifoldPrimitive.setMerge(indicesAccessor, valuesAccessor);\n }\n\n return mesh;\n}\n\n/**\n * Helper function to dispose of a Mesh, useful when replacing an existing Mesh\n * with one from writeMesh.\n */\nexport function disposeMesh(mesh: Mesh) {\n if (!mesh) return;\n const primitives = mesh.listPrimitives();\n for (const primitive of primitives) {\n primitive.getIndices()?.dispose();\n for (const accessor of primitive.listAttributes()) {\n accessor.dispose();\n }\n }\n\n const manifoldPrimitive =\n mesh.getExtension('EXT_mesh_manifold') as ManifoldPrimitive;\n if (manifoldPrimitive) {\n manifoldPrimitive.getIndices()?.dispose();\n manifoldPrimitive.getMergeIndices()?.dispose();\n manifoldPrimitive.getMergeValues()?.dispose();\n }\n\n mesh.dispose();\n}\n\n/**\n * Helper function to download an image and apply it to the given texture.\n *\n * @param texture The texture to update\n * @param uri The location of the image to download\n */\nexport async function loadTexture(texture: Texture, uri: string) {\n const response = await fetch(uri);\n const blob = await response.blob();\n texture.setMimeType(blob.type);\n texture.setImage(new Uint8Array(await blob.arrayBuffer()));\n}\n\nfunction writeProperties(\n vertProperties: number[], accessor: Accessor, numProp: number,\n offset: number) {\n const array = accessor.getArray()!;\n const size = accessor.getElementSize();\n const numVert = accessor.getCount();\n for (let i = 0; i < numVert; ++i) {\n for (let j = 0; j < size; ++j) {\n vertProperties[numProp * i + offset + j] = array[i * size + j];\n }\n }\n}\n\nfunction readPrimitive(\n primitive: Primitive, numProp: number, attributes: Attribute[]) {\n const vertProperties: number[] = [];\n let offset = 0;\n for (const attribute of attributes) {\n const size = attributeDefs[attribute].components;\n if (attributeDefs[attribute].type == null) {\n offset += size;\n continue;\n }\n const accessor = primitive.getAttribute(attribute);\n if (accessor) {\n writeProperties(vertProperties, accessor, numProp, offset);\n }\n offset += size;\n }\n return vertProperties;\n}"],"names":["EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","l","key","GraphEdge","_name","_parent","_child","_attributes","child","Graph","args","node","edge","filter","edges","name","a","b","attributes","parent","_extends","target","source","isRef","value","isRefList","isRefMap","isPlainObject","getFirstValue","$attributes","$immutableKeys","GraphNode","graph","defaultAttributes","ref","other","old","replacement","attribute","refAttributes","refMap","prevRef","refs","metadata","u","c","h","f","d","g","t","p","m","w","y","v","r","n","o","T","s","x","A","E","e","S","M","I","R","N","O","C","F","U","B","P","L","j","D","_","k","z","G","J","$","V","W","q$1","q","H","Y","Z","Q","K","X$1","tt","et","rt","st$1","st","nt","it","ot","at","ut","ct","ht$1","ht","ft","dt$1","dt","gt$1","pt","wt","yt$1","vt$1","mt","lt","yt","X","Tt","vt","gt","bt","At","xt","St","Mt","It","Rt","Rt$1","Nt","Ot","Ct","Ft","Ut$1","Bt","Pt$1","Lt","Et","Ut","Pt","iota","result","iota_1","isBuffer_1","obj","isBuffer","isSlowBuffer","require$$0","require$$1","hasTypedArrays","compare1st","order","stride","terms","compileConstructor","dtype","dimension","className","useGetters","code","procedure","CACHED_CONSTRUCTORS","indices","index_str","shapeArg","strideArg","a_vars","c_vars","tShape","tStride","idx","arrayDType","data","wrappedNDArrayCtor","shape","offset","ctor","sz","ctor_list","ndarray","unique_pred","list","compare","ptr","len","unique_eq","unique","sorted","uniq","innerFill","proc","body","nargs","has_index","vars","pidx","outerFill","matched","blockSize","indexStr","countMatches","orders","processBlock","block","dtypes","pre","post","carg","re","ptrStr","arrNum","offArgIndex","offArg","localStr","arrStr","reStrArr","ptrStrArr","typeSummary","summary","allEqual","digits","generateCWiseOp","typesig","blockBegin","blockEnd","loopBegin","loopEnd","loopOrders","newOrder","arglist","zeros","off_arg","init_string","thisVars","loopName","compile","createThunk","thunkName","string_typesig","proc_args","shapeLengthConditions","shapeConditions","thunk","Procedure","compileCwise","user_args","arg_type","compiler","EmptyProc","fixup","pcompile","makeOp","wrapper","assign_ops","id","op","exports","unary_ops","binary_ops","math_unary","math_comm","math_noncomm","getPixelsInternal","buffer","mimeType","blob","path","resolve","reject","img","canvas","context","pixels","err","getPixels","$t","zt","kt","_t","Gt","qt","Wt","Dt","Ht","jt","Xt","Kt","Yt","oe","ne","te","Jt","Zt","Qt","ee","ie","ae","ce","le","ge","ue","fe","Ee","Se","Me","En","so","io","ao","co","lo","go","uo","fo","vo","NAME","MERGE","ManifoldPrimitive","ExtensionProperty","PropertyType","indicesAccessor","valuesAccessor","runIndex","EXTManifold","Extension","json","meshDef","meshIndex","mesh","manifoldPrimitive","manifoldDef","count","primitive","WriterContext","mergeFrom","mergeTo","numPrimitive","mergeIndicesIndex","mergeValuesIndex","mergeIndices","mergeValues","existingPrimitive","accessor","attributeDefs","Accessor","setupIO","readMesh","primitives","attributeSet","semantics","semantic","numProp","attributeOffsets","def","last","vertPropArray","triVertArray","runIndexArray","mergeFromVertArray","mergeToVertArray","runProperties","numVert","foundAttribute","attributesIn","attributeOut","attributeIn","writeProperties","mergeTriVert","vert2merge","from","to","readPrimitive","vertProperties","triVerts","mergeFromVert","mergeToVert","writeMesh","doc","manifoldMesh","id2properties","manifoldExtension","attributeUnion","primitive2attributes","numRun","lastID","run","properties","material","size","unionSize","aIdx","ind","val","vert","newVert","disposeMesh"],"mappings":"AAAA,MAAMA,EAAgB,CACpB,aAAc,CACZ,KAAK,WAAa,EACnB,CAED,iBAAiBC,EAAMC,EAAU,CAC/B,MAAMC,EAAY,KAAK,WAEvB,OAAIA,EAAUF,CAAI,IAAM,SACtBE,EAAUF,CAAI,EAAI,IAGhBE,EAAUF,CAAI,EAAE,QAAQC,CAAQ,IAAM,IACxCC,EAAUF,CAAI,EAAE,KAAKC,CAAQ,EAGxB,IACR,CAED,oBAAoBD,EAAMC,EAAU,CAClC,GAAI,KAAK,aAAe,OAAW,OAAO,KAE1C,MAAME,EADY,KAAK,WACSH,CAAI,EAEpC,GAAIG,IAAkB,OAAW,CAC/B,MAAMC,EAAQD,EAAc,QAAQF,CAAQ,EAExCG,IAAU,IACZD,EAAc,OAAOC,EAAO,CAAC,CAEhC,CAED,OAAO,IACR,CAED,cAAcC,EAAO,CACnB,GAAI,KAAK,aAAe,OAAW,OAAO,KAE1C,MAAMF,EADY,KAAK,WACSE,EAAM,IAAI,EAE1C,GAAIF,IAAkB,OAAW,CAE/B,MAAMG,EAAQH,EAAc,MAAM,CAAC,EAEnC,QAASI,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,IACvCD,EAAMC,CAAC,EAAE,KAAK,KAAMF,CAAK,CAE5B,CAED,OAAO,IACR,CAED,SAAU,CACR,UAAWI,KAAO,KAAK,WACrB,OAAO,KAAK,WAAWA,CAAG,CAE7B,CAEH,CAWA,MAAMC,WAAkBX,EAAgB,CACtC,YAAYY,EAAOC,EAASC,EAAQC,EAAc,CAAA,EAAI,CAYpD,GAXA,QACA,KAAK,MAAQ,OACb,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,YAAc,OACnB,KAAK,UAAY,GACjB,KAAK,MAAQH,EACb,KAAK,QAAUC,EACf,KAAK,OAASC,EACd,KAAK,YAAcC,EAEf,CAACF,EAAQ,UAAUC,CAAM,EAC3B,MAAM,IAAI,MAAM,qCAAqC,CAExD,CAID,SAAU,CACR,OAAO,KAAK,KACb,CAID,WAAY,CACV,OAAO,KAAK,OACb,CAID,UAAW,CACT,OAAO,KAAK,MACb,CASD,SAASE,EAAO,CACd,YAAK,OAASA,EACP,IACR,CAID,eAAgB,CACd,OAAO,KAAK,WACb,CAID,SAAU,CACJ,KAAK,YACT,KAAK,UAAY,GACjB,KAAK,cAAc,CACjB,KAAM,UACN,OAAQ,IACd,CAAK,EACD,MAAM,QAAO,EACd,CAID,YAAa,CACX,OAAO,KAAK,SACb,CAEH,CAOA,MAAMC,WAAcjB,EAAgB,CAClC,eAAekB,EAAM,CACnB,MAAM,GAAGA,CAAI,EACb,KAAK,UAAY,IAAI,IACrB,KAAK,OAAS,IAAI,IAClB,KAAK,aAAe,IAAI,IACxB,KAAK,YAAc,IAAI,GACxB,CAGD,WAAY,CACV,OAAO,MAAM,KAAK,KAAK,MAAM,CAC9B,CAID,gBAAgBC,EAAM,CACpB,OAAO,MAAM,KAAK,KAAK,YAAY,IAAIA,CAAI,GAAK,KAAK,SAAS,CAC/D,CAID,YAAYA,EAAM,CAChB,OAAO,KAAK,gBAAgBA,CAAI,EAAE,IAAIC,GAAQA,EAAK,UAAS,CAAE,CAC/D,CAID,eAAeD,EAAM,CACnB,OAAO,MAAM,KAAK,KAAK,aAAa,IAAIA,CAAI,GAAK,KAAK,SAAS,CAChE,CAID,aAAaA,EAAM,CACjB,OAAO,KAAK,eAAeA,CAAI,EAAE,IAAIC,GAAQA,EAAK,SAAQ,CAAE,CAC7D,CAED,kBAAkBD,EAAME,EAAQ,CAC9B,IAAIC,EAAQ,KAAK,gBAAgBH,CAAI,EAErC,OAAIE,IACFC,EAAQA,EAAM,OAAOF,GAAQC,EAAOD,EAAK,UAAW,CAAA,CAAC,GAGvDE,EAAM,QAAQF,GAAQA,EAAK,QAAS,CAAA,EAC7B,IACR,CASD,WAAWG,EAAMC,EAAGC,EAAGC,EAAY,CACjC,OAAO,KAAK,cAAc,IAAIf,GAAUY,EAAMC,EAAGC,EAAGC,CAAU,CAAC,CAChE,CAQD,cAAcN,EAAM,CAClB,KAAK,OAAO,IAAIA,CAAI,EAEpB,MAAMO,EAASP,EAAK,YACf,KAAK,aAAa,IAAIO,CAAM,GAAG,KAAK,aAAa,IAAIA,EAAQ,IAAI,GAAK,EAE3E,KAAK,aAAa,IAAIA,CAAM,EAAE,IAAIP,CAAI,EAEtC,MAAMJ,EAAQI,EAAK,WACnB,OAAK,KAAK,YAAY,IAAIJ,CAAK,GAAG,KAAK,YAAY,IAAIA,EAAO,IAAI,GAAK,EAEvE,KAAK,YAAY,IAAIA,CAAK,EAAE,IAAII,CAAI,EAEpCA,EAAK,iBAAiB,UAAW,IAAM,KAAK,YAAYA,CAAI,CAAC,EACtDA,CACR,CAQD,YAAYA,EAAM,CAChB,YAAK,OAAO,OAAOA,CAAI,EAEvB,KAAK,aAAa,IAAIA,EAAK,UAAS,CAAE,EAAE,OAAOA,CAAI,EAEnD,KAAK,YAAY,IAAIA,EAAK,SAAQ,CAAE,EAAE,OAAOA,CAAI,EAE1C,IACR,CAEH,CAEA,SAASQ,IAAW,CAClB,OAAAA,GAAW,OAAO,QAAU,SAAUC,EAAQ,CAC5C,QAASrB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIsB,EAAS,UAAUtB,CAAC,EAExB,QAASE,KAAOoB,EACV,OAAO,UAAU,eAAe,KAAKA,EAAQpB,CAAG,IAClDmB,EAAOnB,CAAG,EAAIoB,EAAOpB,CAAG,EAG7B,CAED,OAAOmB,CACX,EAESD,GAAS,MAAM,KAAM,SAAS,CACvC,CAEA,SAASG,GAAMC,EAAO,CACpB,OAAOA,aAAiBrB,EAC1B,CACA,SAASsB,GAAUD,EAAO,CACxB,OAAO,MAAM,QAAQA,CAAK,GAAKA,EAAM,CAAC,YAAarB,EACrD,CACA,SAASuB,GAASF,EAAO,CACvB,MAAO,CAAC,EAAEG,GAAcH,CAAK,GAAKI,GAAcJ,CAAK,YAAarB,GACpE,CAEA,SAASyB,GAAcJ,EAAO,CAC5B,UAAWtB,KAAOsB,EAChB,OAAOA,EAAMtB,CAAG,CAEpB,CAEA,SAASyB,GAAcH,EAAO,CAC5B,MAAO,EAAQA,GAAU,OAAO,eAAeA,CAAK,IAAM,OAAO,SACnE,CAEA,MAAMK,EAAc,OAAO,YAAY,EACjCC,GAAiB,OAAO,eAAe,EAK7C,MAAMC,WAAkBvC,EAAgB,CAsBtC,YAAYwC,EAAO,CACjB,QACA,KAAK,UAAY,GACjB,KAAK,MAAQ,OACb,KAAKH,CAAW,EAAI,OACpB,KAAKC,EAAc,EAAI,OACvB,KAAK,MAAQE,EACb,KAAKF,EAAc,EAAI,IAAI,IAC3B,KAAKD,CAAW,EAAI,KAAK,kBAAiB,CAC3C,CAaD,aAAc,CACZ,MAAO,EACR,CAYD,mBAAoB,CAClB,MAAMI,EAAoB,KAAK,cACzBf,EAAa,CAAA,EAEnB,UAAWhB,KAAO+B,EAAmB,CACnC,MAAMT,EAAQS,EAAkB/B,CAAG,EAEnC,GAAIsB,aAAiBO,GAAW,CAC9B,MAAMG,EAAM,KAAK,MAAM,WAAWhC,EAAK,KAAMsB,CAAK,EAClDU,EAAI,iBAAiB,UAAW,IAAMV,EAAM,QAAS,CAAA,EACrD,KAAKM,EAAc,EAAE,IAAI5B,CAAG,EAC5BgB,EAAWhB,CAAG,EAAIgC,CAC1B,MACQhB,EAAWhB,CAAG,EAAIsB,CAErB,CAED,OAAON,CACR,CAID,UAAUiB,EAAO,CACf,OAAO,KAAK,QAAUA,EAAM,KAC7B,CAID,YAAa,CACX,OAAO,KAAK,SACb,CAQD,SAAU,CACJ,KAAK,YACT,KAAK,MAAM,eAAe,IAAI,EAAE,QAAQvB,GAAQA,EAAK,QAAO,CAAE,EAC9D,KAAK,MAAM,kBAAkB,IAAI,EACjC,KAAK,UAAY,GACjB,KAAK,cAAc,CACjB,KAAM,SACZ,CAAK,EACF,CAQD,QAAS,CACP,YAAK,MAAM,kBAAkB,IAAI,EAC1B,IACR,CASD,KAAKwB,EAAKC,EAAa,CACrB,UAAWC,KAAa,KAAKT,CAAW,EAAG,CACzC,MAAML,EAAQ,KAAKK,CAAW,EAAES,CAAS,EAEzC,GAAIf,GAAMC,CAAK,EAAG,CAChB,MAAMU,EAAMV,EAERU,EAAI,SAAU,IAAKE,GACrB,KAAK,OAAOE,EAAWD,EAAaH,EAAI,cAAa,CAAE,CAEjE,SAAiBT,GAAUD,CAAK,EAAG,CAE3B,MAAMU,EADOV,EACI,KAAKU,GAAOA,EAAI,SAAQ,IAAOE,CAAG,EAEnD,GAAIF,EAAK,CACP,MAAMK,EAAgBL,EAAI,gBAC1B,KAAK,UAAUI,EAAWF,CAAG,EAAE,OAAOE,EAAWD,EAAaE,CAAa,CAC5E,CACT,SAAiBb,GAASF,CAAK,EAAG,CAC1B,MAAMgB,EAAShB,EAEf,UAAWtB,KAAOsC,EAAQ,CACxB,MAAMN,EAAMM,EAAOtC,CAAG,EAElBgC,EAAI,SAAU,IAAKE,GACrB,KAAK,UAAUE,EAAWpC,EAAKmC,EAAaH,EAAI,cAAa,CAAE,CAElE,CACF,CACF,CAED,OAAO,IACR,CAQD,IAAII,EAAW,CACb,OAAO,KAAKT,CAAW,EAAES,CAAS,CACnC,CAID,IAAIA,EAAWd,EAAO,CACpB,YAAKK,CAAW,EAAES,CAAS,EAAId,EACxB,KAAK,cAAc,CACxB,KAAM,SACN,UAAAc,CACN,CAAK,CACF,CAQD,OAAOA,EAAW,CAChB,MAAMJ,EAAM,KAAKL,CAAW,EAAES,CAAS,EACvC,OAAOJ,EAAMA,EAAI,SAAQ,EAAK,IAC/B,CAID,OAAOI,EAAWd,EAAON,EAAY,CACnC,GAAI,KAAKY,EAAc,EAAE,IAAIQ,CAAS,EACpC,MAAM,IAAI,MAAM,0CAA0CA,CAAS,IAAI,EAGzE,MAAMG,EAAU,KAAKZ,CAAW,EAAES,CAAS,EAG3C,GAFIG,GAASA,EAAQ,UAEjB,CAACjB,EAAO,OAAO,KACnB,MAAMU,EAAM,KAAK,MAAM,WAAWI,EAAW,KAAMd,EAAON,CAAU,EACpE,OAAAgB,EAAI,iBAAiB,UAAW,IAAM,CACpC,OAAO,KAAKL,CAAW,EAAES,CAAS,EAClC,KAAK,cAAc,CACjB,KAAM,SACN,UAAAA,CACR,CAAO,CACP,CAAK,EACD,KAAKT,CAAW,EAAES,CAAS,EAAIJ,EACxB,KAAK,cAAc,CACxB,KAAM,SACN,UAAAI,CACN,CAAK,CACF,CAQD,SAASA,EAAW,CAElB,OADa,KAAKT,CAAW,EAAES,CAAS,EAC5B,IAAIJ,GAAOA,EAAI,SAAU,CAAA,CACtC,CAID,OAAOI,EAAWd,EAAON,EAAY,CACnC,MAAMgB,EAAM,KAAK,MAAM,WAAWI,EAAW,KAAMd,EAAON,CAAU,EAC9DwB,EAAO,KAAKb,CAAW,EAAES,CAAS,EACxC,OAAAI,EAAK,KAAKR,CAAG,EACbA,EAAI,iBAAiB,UAAW,IAAM,CACpC,IAAIrC,EAEJ,MAAQA,EAAQ6C,EAAK,QAAQR,CAAG,KAAO,IACrCQ,EAAK,OAAO7C,EAAO,CAAC,EAGtB,KAAK,cAAc,CACjB,KAAM,SACN,UAAAyC,CACR,CAAO,CACP,CAAK,EACM,KAAK,cAAc,CACxB,KAAM,SACN,UAAAA,CACN,CAAK,CACF,CAID,UAAUA,EAAWd,EAAO,CAG1B,OAFa,KAAKK,CAAW,EAAES,CAAS,EACpB,OAAOJ,GAAOA,EAAI,SAAQ,IAAOV,CAAK,EACnD,QAAQU,GAAOA,EAAI,QAAS,CAAA,EAE5B,IACR,CAQD,eAAehC,EAAK,CAClB,OAAO,OAAO,KAAK,KAAK2B,CAAW,EAAE3B,CAAG,CAAC,CAC1C,CAID,iBAAiBA,EAAK,CACpB,OAAO,OAAO,OAAO,KAAK2B,CAAW,EAAE3B,CAAG,CAAC,EAAE,IAAIgC,GAAOA,EAAI,SAAU,CAAA,CACvE,CAID,UAAUI,EAAWpC,EAAK,CACxB,MAAMsC,EAAS,KAAKX,CAAW,EAAES,CAAS,EAC1C,OAAOE,EAAOtC,CAAG,EAAIsC,EAAOtC,CAAG,EAAE,SAAU,EAAG,IAC/C,CAID,UAAUoC,EAAWpC,EAAKsB,EAAOmB,EAAU,CACzC,MAAMH,EAAS,KAAKX,CAAW,EAAES,CAAS,EACpCG,EAAUD,EAAOtC,CAAG,EAG1B,GAFIuC,GAASA,EAAQ,UAEjB,CAACjB,EAAO,OAAO,KACnBmB,EAAW,OAAO,OAAOA,GAAY,CAAA,EAAI,CACvC,IAAKzC,CACX,CAAK,EACD,MAAMgC,EAAM,KAAK,MAAM,WAAWI,EAAW,KAAMd,EAAOJ,GAAS,CAAE,EAAEuB,EAAU,CAC/E,IAAAzC,CACD,CAAA,CAAC,EACF,OAAAgC,EAAI,iBAAiB,UAAW,IAAM,CACpC,OAAOM,EAAOtC,CAAG,EACjB,KAAK,cAAc,CACjB,KAAM,SACN,UAAAoC,EACA,IAAApC,CACR,CAAO,CACP,CAAK,EACDsC,EAAOtC,CAAG,EAAIgC,EACP,KAAK,cAAc,CACxB,KAAM,SACN,UAAAI,EACA,IAAApC,CACN,CAAK,CACF,CAWD,cAAcJ,EAAO,CACnB,aAAM,cAAcsB,GAAS,CAAA,EAAItB,EAAO,CACtC,OAAQ,IACT,CAAA,CAAC,EACF,KAAK,MAAM,cAAcsB,GAAS,CAAA,EAAItB,EAAO,CAC3C,OAAQ,KACR,KAAM,QAAQA,EAAM,IAAI,EACzB,CAAA,CAAC,EACK,IACR,CAEH,CClnBmM,MAAC8C,GAAE,SAASC,GAAE,WAAc,IAACC,EAAEC,GAAE9C,EAAE+C,GAAEC,IAAG,SAASC,EAAE,CAACA,EAAE,SAAS,WAAWA,EAAE,UAAU,YAAYA,EAAE,kBAAkB,mBAAmBA,EAAE,kBAAkB,mBAAmBA,EAAE,OAAO,SAASA,EAAE,OAAO,SAASA,EAAE,SAAS,WAAWA,EAAE,KAAK,OAAOA,EAAE,UAAU,YAAYA,EAAE,iBAAiB,kBAAkBA,EAAE,KAAK,OAAOA,EAAE,KAAK,OAAOA,EAAE,MAAM,QAAQA,EAAE,KAAK,OAAOA,EAAE,QAAQ,UAAUA,EAAE,aAAa,aAAa,GAAEJ,IAAIA,EAAE,CAAA,EAAG,EAAE,SAASI,EAAE,CAACA,EAAE,YAAY,cAAcA,EAAE,SAAS,UAAU,EAAEH,KAAIA,GAAE,CAAE,EAAC,EAAE,SAASG,EAAE,CAACA,EAAE,aAAa,eAAeA,EAAE,qBAAqB,uBAAuBA,EAAE,sBAAsB,wBAAwBA,EAAE,MAAM,QAAQA,EAAE,OAAO,QAAQ,EAAEjD,IAAIA,EAAE,GAAG,EAAE,SAASiD,EAAE,CAACA,EAAEA,EAAE,EAAE,IAAI,EAAE,IAAIA,EAAEA,EAAE,EAAE,GAAG,EAAE,IAAIA,EAAEA,EAAE,EAAE,EAAE,EAAE,IAAIA,EAAEA,EAAE,EAAE,CAAC,EAAE,GAAG,EAAEF,KAAIA,GAAE,CAAE,EAAC,EAAE,SAASE,EAAE,CAACA,EAAE,KAAK,OAAOA,EAAE,IAAI,KAAK,EAAED,KAAIA,GAAE,CAAA,EAAG,EAAE,MAAME,GAAE,CAAC,KAAK,UAAU,KAAK,WAAW,KAAK,WAAW,KAAK,YAAY,KAAK,YAAY,KAAK,YAAY,EAAE,IAAIC,GAAEC,GAAe,OAAO,aAApB,IAAiC,aAAa,MAAM,SAASC,GAAEJ,EAAE,CAAC,OAAO,KAAK,MAAMA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,SAASK,GAAEL,EAAE,EAAEM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEzD,EAAE,EAAE,CAAC,EAAE0D,EAAEF,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEC,EAAED,EAAE,EAAE,EAAExD,EAAEwD,EAAE,EAAE,EAAE,OAAON,EAAE,CAAC,GAAGM,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAExD,EAAEwD,EAAE,EAAE,IAAIE,EAAEA,GAAG,GAAGR,EAAE,CAAC,GAAGM,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAExD,EAAEwD,EAAE,EAAE,GAAGE,EAAER,EAAE,CAAC,GAAGM,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEC,EAAED,EAAE,EAAE,EAAExD,EAAEwD,EAAE,EAAE,GAAGE,EAAER,CAAC,CAAC,SAASS,GAAET,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAS,IAAS,GAAQ,EAAE,IAAI,CAAC,KAAU,KAAU,IAAS,CAAC,EAAEM,EAAEN,EAAE,eAAeJ,EAAE,KAAK,CAACI,CAAC,EAAEA,EAAE,aAAc,EAAC,UAAUA,KAAKM,EAAEN,EAAE,SAASA,GAAG,CAAC,MAAMM,EAAEN,EAAE,QAAS,EAAC,GAAG,CAACM,EAAE,OAAO,MAAMI,EAAEC,GAAEL,EAAEN,EAAE,gBAAgB,EAAEY,GAAEF,EAAE,IAAI,CAAC,EAAEE,GAAEF,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,QAAQ,KAAK,MAAM,UAAU,CAAC,QAAQV,EAAE,EAAE,EAAE,UAAU,OAAO,KAAKA,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,KAAKA,CAAC,CAAC,GAAGE,GAAE,IAAIC,GAAE,CAAC,EAAEA,IAAG,eAAeD,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,GAAa,SAASS,GAAEX,EAAE,EAAE,CAAC,MAAMM,EAAE,CAAC,IAAI,CAAC,IAAS,IAAS,GAAQ,EAAE,IAAI,CAAC,KAAU,KAAU,IAAS,CAAC,EAAE,UAAU,KAAKN,EAAE,eAAgB,EAAC,CAAC,MAAMA,EAAE,EAAE,aAAa,UAAU,EAAE,GAAG,CAACA,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAElD,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ4D,EAAE,EAAEA,EAAEV,EAAE,SAAU,EAACU,IAAI,EAAEV,EAAE,WAAWU,EAAE,CAAC,EAAE5D,EAAEuD,GAAEvD,EAAE,EAAE,CAAC,EAAE8D,GAAE9D,EAAEwD,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,SAASM,GAAEZ,EAAE,EAAE,CAAC,QAAQM,EAAE,EAAEA,EAAE,EAAEA,IAAI,EAAE,IAAIA,CAAC,EAAE,KAAK,IAAIN,EAAEM,CAAC,EAAE,EAAE,IAAIA,CAAC,CAAC,EAAE,EAAE,IAAIA,CAAC,EAAE,KAAK,IAAIN,EAAEM,CAAC,EAAE,EAAE,IAAIA,CAAC,CAAC,CAAC,CAAC,MAAMO,CAAC,CAAC,OAAO,wBAAwBb,EAAE,CAAC,GAAgB,OAAO,OAApB,IAA2B,CAAC,MAAMc,EAAE,KAAKd,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EAAEM,EAAE,IAAI,WAAWQ,EAAE,MAAM,EAAE,QAAQd,EAAE,EAAEA,EAAEc,EAAE,OAAOd,IAAIM,EAAEN,CAAC,EAAEc,EAAE,WAAWd,CAAC,EAAE,OAAOM,CAAC,CAAC,CAAC,MAAMQ,EAAEd,EAAE,MAAM,GAAG,EAAE,CAAC,EAAEM,EAAEN,EAAE,QAAQ,QAAQ,GAAG,EAAE,OAAO,OAAO,KAAKc,EAAER,EAAE,SAAS,MAAM,CAAC,CAAC,CAAC,OAAO,WAAWN,EAAE,CAAC,OAAmB,OAAO,YAApB,IAAiC,IAAI,cAAa,OAAOA,CAAC,EAAE,OAAO,KAAKA,CAAC,CAAC,CAAC,OAAO,WAAWA,EAAE,CAAC,OAAmB,OAAO,YAApB,IAAiC,IAAI,cAAa,OAAOA,CAAC,EAAE,OAAO,KAAKA,CAAC,EAAE,SAAS,MAAM,CAAC,CAAC,OAAO,OAAOA,EAAE,CAAC,IAAIc,EAAE,EAAE,UAAUR,KAAKN,EAAEc,GAAGR,EAAE,WAAW,MAAMA,EAAE,IAAI,WAAWQ,CAAC,EAAE,IAAIJ,EAAE,EAAE,UAAUI,KAAKd,EAAEM,EAAE,IAAIQ,EAAEJ,CAAC,EAAEA,GAAGI,EAAE,WAAW,OAAOR,CAAC,CAAC,OAAO,IAAIN,EAAEc,EAAE,EAAE,CAAC,MAAMR,EAAE,KAAK,UAAUN,EAAE,UAAU,EAAE,GAAGM,IAAIN,EAAE,WAAW,OAAOA,EAAE,MAAMU,EAAE,IAAI,WAAWJ,CAAC,EAAE,GAAGI,EAAE,IAAIV,CAAC,EAAMc,IAAJ,EAAM,QAAQ,EAAEd,EAAE,WAAW,EAAEM,EAAE,IAAII,EAAE,CAAC,EAAEI,EAAE,OAAOJ,CAAC,CAAC,OAAO,UAAUV,EAAE,CAAC,MAAO,GAAE,KAAK,KAAKA,EAAE,CAAC,CAAC,CAAC,OAAO,OAAOA,EAAEc,EAAE,CAAC,GAAGd,IAAIc,EAAE,MAAM,GAAG,GAAGd,EAAE,aAAac,EAAE,WAAW,MAAM,GAAG,IAAIR,EAAEN,EAAE,WAAW,KAAKM,KAAK,GAAGN,EAAEM,CAAC,IAAIQ,EAAER,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,OAAON,EAAEc,EAAE,EAAER,EAAE,IAAS,CAAC,OAAO,IAAI,WAAWN,EAAE,OAAOA,EAAE,WAAWc,EAAE,KAAK,IAAId,EAAE,WAAWM,CAAC,CAAC,CAAC,CAAC,OAAO,WAAWN,EAAE,CAAC,GAAGA,GAAG,CAAC,YAAY,OAAOA,CAAC,EAAE,MAAM,IAAI,MAAM,mDAAmD,OAAOA,CAAC,IAAI,EAAE,OAAOA,CAAC,CAAC,CAAC,MAAMe,EAAC,CAAC,OAAO,YAAYf,EAAEc,EAAE,CAACd,EAAE,KAAK,MAAMA,CAAC,EAAE,MAAMM,EAAEQ,EAAE,OAAOR,EAAE,CAAC,GAAGN,GAAG,GAAG,KAAK,IAAIM,EAAE,CAAC,GAAGN,GAAG,EAAE,KAAK,IAAIM,EAAE,CAAC,GAAG,IAAIN,GAAG,IAAI,KAAK,oBAAoBc,EAAEA,CAAC,CAAC,CAAC,OAAO,YAAYd,EAAE,CAAC,MAAMc,EAAE,CAAC,GAAGd,CAAC,EAAE,CAACM,EAAEI,EAAE,CAAC,EAAE,KAAK,oBAAoBV,EAAEc,CAAC,EAAE,MAAO,KAAIR,GAAG,GAAG,IAAII,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,oBAAoBV,EAAEc,EAAE,CAAC,MAAMR,EAAEN,EAAEU,EAAEI,EAAE,QAAQd,EAAE,EAAEA,EAAE,EAAEA,IAAIU,EAAEV,CAAC,EAAEM,EAAEN,CAAC,EAAE,OAAO,YAAYM,EAAEN,CAAC,EAAE,KAAK,IAAI,YAAYM,EAAEN,CAAC,EAAE,YAAY,GAAG,EAAE,OAAOc,CAAC,CAAC,OAAO,oBAAoBd,EAAEc,EAAE,CAAC,MAAMR,EAAEN,EAAEU,EAAEI,EAAE,QAAQd,EAAE,EAAEA,EAAE,EAAEA,IAAIU,EAAEV,CAAC,EAAEM,EAAEN,CAAC,EAAE,SAAS,MAAMM,EAAEN,CAAC,EAAE,MAAM,KAAK,IAAIM,EAAEN,CAAC,EAAE,MAAM,EAAE,KAAK,OAAOc,CAAC,CAAC,CAAC,MAAME,EAAC,CAAC,MAAMhB,EAAE,CAAC,OAAOA,EAAE,QAAQ,GAASA,EAAE,CAAC,IAAT,KAAiBA,EAAE,CAAC,IAAR,IAAgBA,EAAE,CAAC,IAAR,IAAgBA,EAAE,CAAC,IAAR,IAAgBA,EAAE,CAAC,IAAR,IAAgBA,EAAE,CAAC,IAAR,IAAgBA,EAAE,CAAC,IAAR,IAAgBA,EAAE,CAAC,IAAR,EAAS,CAAC,QAAQA,EAAE,CAAC,MAAMc,EAAE,IAAI,SAASd,EAAE,OAAOA,EAAE,UAAU,EAAE,OAAOa,EAAE,WAAWb,EAAE,MAAM,GAAG,EAAE,CAAC,IAAIgB,GAAE,qBAAqB,CAACF,EAAE,UAAU,GAAG,EAAE,EAAEA,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,CAACA,EAAE,UAAU,GAAG,EAAE,EAAEA,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,YAAYd,EAAE,CAAC,MAAO,EAAC,CAAC,CAACgB,GAAE,qBAAqB,OAAO,MAAMC,EAAC,CAAC,OAAO,eAAejB,EAAEc,EAAE,CAAC,KAAK,MAAMd,CAAC,EAAEc,CAAC,CAAC,OAAO,YAAYd,EAAE,CAAC,UAAUc,KAAK,KAAK,MAAM,GAAG,KAAK,MAAMA,CAAC,EAAE,MAAMd,CAAC,EAAE,OAAOc,EAAE,OAAO,IAAI,CAAC,OAAO,QAAQd,EAAEc,EAAE,CAAC,OAAO,KAAK,MAAMA,CAAC,EAAE,KAAK,MAAMA,CAAC,EAAE,QAAQd,CAAC,EAAE,IAAI,CAAC,OAAO,YAAYA,EAAEc,EAAE,CAAC,OAAO,KAAK,MAAMA,CAAC,EAAE,KAAK,MAAMA,CAAC,EAAE,YAAYd,CAAC,EAAE,IAAI,CAAC,OAAO,kBAAkBA,EAAEc,EAAE,CAAC,GAAG,CAAC,KAAK,MAAMA,CAAC,EAAE,OAAO,KAAK,GAAG,KAAK,MAAMA,CAAC,EAAE,kBAAkB,OAAO,KAAK,MAAMA,CAAC,EAAE,kBAAkBd,CAAC,EAAE,IAAIM,EAAE,EAAE,MAAMI,EAAE,KAAK,QAAQV,EAAEc,CAAC,EAAE,GAAG,CAACJ,EAAE,OAAO,KAAK,KAAKA,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,EAAE,GAAGJ,GAAGI,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,MAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,MAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAOJ,GAAG,EAAEA,CAAC,CAAC,OAAO,oBAAoBN,EAAE,CAAC,OAAqBA,IAAf,aAAiB,MAAMA,EAAE,MAAM,GAAG,EAAE,KAAK,CAAC,OAAO,oBAAoBA,EAAE,CAAC,OAAcA,IAAR,MAAU,aAAaA,EAAE,SAASA,CAAC,GAAG,EAAE,CAAC,CAAC,SAASkB,GAAElB,EAAE,EAAE,CAAC,GAAG,EAAEA,EAAE,WAAW,MAAM,IAAI,UAAU,qCAAqC,EAAE,GAASA,EAAE,SAAS,CAAC,IAAlB,IAAoB,MAAM,IAAI,UAAU,qCAAqC,EAAE,OAAOA,CAAC,CAACiB,GAAE,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,MAAMjB,EAAE,CAAC,OAAOA,EAAE,QAAQ,GAASA,EAAE,CAAC,IAAT,KAAkBA,EAAE,CAAC,IAAT,KAAkBA,EAAE,CAAC,IAAT,GAAU,CAAC,QAAQA,EAAE,CAAC,IAAI,EAAEM,EAAE,EAAE,IAAI,SAASN,EAAE,OAAOA,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAEkB,GAAE,EAAE,CAAC,EAAEZ,EAAE,EAAE,SAAS,EAAE,CAAC,EAAQA,IAAN,KAAeA,IAAN,KAAeA,IAAN,IAAQ,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,SAASN,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,4BAA4B,CAAC,CAAC,YAAYA,EAAE,CAAC,MAAO,EAAC,CAAC,EAAE,YAAY,IAAIgB,EAAC,EAAE,MAAMG,EAAC,CAAC,OAAO,SAASnB,EAAE,CAAC,MAAMc,EAAEd,EAAE,MAAM,OAAO,EAAE,IAAK,EAAC,OAAOc,EAAE,UAAU,EAAEA,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO,UAAUd,EAAE,CAAC,GAAGA,EAAE,WAAW,aAAa,EAAE,CAAC,MAAMc,EAAEd,EAAE,MAAM,mBAAmB,EAAE,CAAC,EAAE,OAAOiB,GAAE,oBAAoBH,CAAC,CAAC,CAAC,OAAOd,EAAE,WAAW,sBAAsB,EAAE,OAAOA,EAAE,WAAW,wBAAwB,EAAE,MAAMA,EAAE,WAAW,mBAAmB,EAAE,MAAMA,EAAE,MAAM,OAAO,EAAE,IAAG,EAAG,MAAM,KAAK,EAAE,IAAK,CAAA,CAAC,CAAC,SAASoB,GAAEpB,EAAE,CAAC,OAA0B,OAAO,UAAU,SAAS,KAAKA,CAAC,IAApD,iBAAqD,CAAC,SAASqB,GAAErB,EAAE,CAAC,GAAQoB,GAAEpB,CAAC,IAAR,GAAU,MAAM,GAAG,MAAM,EAAEA,EAAE,YAAY,GAAY,IAAT,OAAW,MAAM,GAAG,MAAMM,EAAE,EAAE,UAAU,OAAWc,GAAEd,CAAC,IAAR,IAAgB,OAAO,UAAU,eAAe,KAAKA,EAAE,eAAe,IAA3D,EAA4D,CAAC,IAAIgB,GAAEC,IAAG,SAASvB,EAAE,CAACA,EAAEA,EAAE,OAAO,CAAC,EAAE,SAASA,EAAEA,EAAE,MAAM,CAAC,EAAE,QAAQA,EAAEA,EAAE,KAAK,CAAC,EAAE,OAAOA,EAAEA,EAAE,KAAK,CAAC,EAAE,OAAOA,EAAEA,EAAE,MAAM,CAAC,EAAE,OAAO,GAAEuB,KAAIA,GAAE,GAAG,SAAE,MAAMC,EAAC,CAAC,YAAYxB,EAAE,CAAC,KAAK,UAAU,OAAO,KAAK,UAAUA,CAAC,CAAC,MAAMA,EAAE,CAAC,KAAK,WAAWwB,GAAE,UAAU,OAAO,QAAQ,MAAMxB,CAAC,CAAC,CAAC,KAAKA,EAAE,CAAC,KAAK,WAAWwB,GAAE,UAAU,MAAM,QAAQ,KAAKxB,CAAC,CAAC,CAAC,KAAKA,EAAE,CAAC,KAAK,WAAWwB,GAAE,UAAU,MAAM,QAAQ,KAAKxB,CAAC,CAAC,CAAC,MAAMA,EAAE,CAAC,KAAK,WAAWwB,GAAE,UAAU,OAAO,QAAQ,MAAMxB,CAAC,CAAC,CAAC,EAAC,SAASyB,GAAEzB,EAAE,EAAEM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEzD,EAAE,EAAE,CAAC,EAAE0D,EAAE,EAAE,CAAC,EAAE1C,EAAE,EAAE,CAAC,EAAE4B,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAE9C,EAAE,EAAE,CAAC,EAAE+C,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEE,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEC,EAAEC,EAAE,CAAC,EAAEG,EAAEH,EAAE,CAAC,EAAEvC,EAAEuC,EAAE,CAAC,EAAEK,EAAEL,EAAE,CAAC,EAAE,OAAON,EAAE,CAAC,EAAEK,EAAE,EAAEI,EAAE3C,EAAEC,EAAE8B,EAAEc,EAAEV,EAAED,EAAE,CAAC,EAAEK,EAAEE,EAAEE,EAAEf,EAAE3B,EAAEhB,EAAE4D,EAAET,EAAEF,EAAE,CAAC,EAAEK,EAAEvD,EAAE2D,EAAEd,EAAE5B,EAAE+B,EAAEa,EAAER,EAAEH,EAAE,CAAC,EAAEK,EAAEG,EAAEC,EAAEb,EAAE7B,EAAEgC,EAAEY,EAAEP,EAAEJ,EAAE,CAAC,GAAGK,EAAEC,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,CAAC,GAAGxC,GAAGC,EAAEuC,EAAE,CAAC,GAAGT,GAAGc,EAAEL,EAAE,CAAC,GAAGL,EAAED,EAAE,CAAC,EAAEK,EAAEE,EAAEE,EAAEf,EAAE3B,EAAEhB,EAAE4D,EAAET,EAAEF,EAAE,CAAC,EAAEK,EAAEvD,EAAE2D,EAAEd,EAAE5B,EAAE+B,EAAEa,EAAER,EAAEH,EAAE,CAAC,EAAEK,EAAEG,EAAEC,EAAEb,EAAE7B,EAAEgC,EAAEY,EAAEP,EAAEJ,EAAE,CAAC,GAAGK,EAAEC,EAAE,CAAC,GAAG,GAAGG,EAAEH,EAAE,CAAC,GAAGxC,GAAGC,EAAEuC,EAAE,EAAE,GAAGT,GAAGc,EAAEL,EAAE,EAAE,GAAGL,EAAED,EAAE,CAAC,EAAEK,EAAEE,EAAEE,EAAEf,EAAE3B,EAAEhB,EAAE4D,EAAET,EAAEF,EAAE,EAAE,EAAEK,EAAEvD,EAAE2D,EAAEd,EAAE5B,EAAE+B,EAAEa,EAAER,EAAEH,EAAE,EAAE,EAAEK,EAAEG,EAAEC,EAAEb,EAAE7B,EAAEgC,EAAEY,EAAEP,EAAEJ,EAAE,EAAE,GAAGK,EAAEC,EAAE,EAAE,GAAG,GAAGG,EAAEH,EAAE,EAAE,GAAGxC,GAAGC,EAAEuC,EAAE,EAAE,GAAGT,GAAGc,EAAEL,EAAE,EAAE,GAAGL,EAAED,EAAE,EAAE,EAAEK,EAAEE,EAAEE,EAAEf,EAAE3B,EAAEhB,EAAE4D,EAAET,EAAEF,EAAE,EAAE,EAAEK,EAAEvD,EAAE2D,EAAEd,EAAE5B,EAAE+B,EAAEa,EAAER,EAAEH,EAAE,EAAE,EAAEK,EAAEG,EAAEC,EAAEb,EAAE7B,EAAEgC,EAAEY,EAAEP,EAAEJ,CAAC,CAACsB,GAAEE,GAAEA,GAAE,UAAUD,GAAEC,GAAE,iBAAiB,IAAIF,GAAEA,GAAE,UAAU,IAAI,EAAE,MAAMI,CAAC,CAAC,OAAO,SAAS1B,EAAE,CAAC,OAAOA,CAAC,CAAC,OAAO,GAAGA,EAAEc,EAAER,EAAE,KAAK,CAAC,GAAGN,EAAE,SAASc,EAAE,OAAO,MAAM,GAAG,QAAQJ,EAAE,EAAEA,EAAEV,EAAE,OAAOU,IAAI,GAAG,KAAK,IAAIV,EAAEU,CAAC,EAAEI,EAAEJ,CAAC,CAAC,EAAEJ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,oBAAoBN,EAAEc,EAAE,CAAC,OAAOA,GAAG,IAAK,MAAK,OAAOd,EAAE,IAAK,MAAK,OAAOA,EAAE,MAAM,IAAK,MAAK,OAAOA,EAAE,IAAI,IAAK,MAAK,OAAO,KAAK,IAAIA,EAAE,MAAM,EAAE,EAAE,IAAK,MAAK,OAAO,KAAK,IAAIA,EAAE,IAAI,EAAE,EAAE,QAAQ,MAAM,IAAI,MAAM,yBAAyB,CAAC,CAAC,CAAC,OAAO,YAAYA,EAAEc,EAAE,CAAC,OAAOY,EAAE,oBAAoB1B,EAAEc,CAAC,CAAC,CAAC,OAAO,oBAAoBd,EAAEc,EAAE,CAAC,OAAOA,EAAG,CAAA,IAAK,MAAK,OAAOd,EAAE,IAAK,MAAK,OAAO,KAAK,MAAM,MAAMA,CAAC,EAAE,IAAK,MAAK,OAAO,KAAK,MAAM,IAAIA,CAAC,EAAE,IAAK,MAAK,OAAO,KAAK,MAAM,MAAMA,CAAC,EAAE,IAAK,MAAK,OAAO,KAAK,MAAM,IAAIA,CAAC,EAAE,QAAQ,MAAM,IAAI,MAAM,yBAAyB,CAAC,CAAC,CAAC,OAAO,UAAUA,EAAEc,EAAE,CAAC,OAAOY,EAAE,oBAAoB1B,EAAEc,CAAC,CAAC,CAAC,OAAO,UAAUd,EAAEc,EAAER,EAAEI,EAAE,CAAC,IAAI,EAAEN,GAAE,CAACJ,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,MAAMlD,EAAEsD,GAAE,CAACJ,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAEQ,EAAEJ,GAAE,CAACJ,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,IAAIlC,EAAE4B,EAAEC,EAAEC,EAAEC,EAAE9C,EAAE+C,EAAEC,EAAEE,EAAEC,EAAEG,EAAEI,EAAE1C,EAAE4C,EAAEC,EAAEC,EAAEE,IAAIrB,GAAG5B,EAAEkC,GAAG,CAAC,IAAIF,EAAEhC,EAAE,CAAC,IAAI6B,EAAE7B,EAAE,CAAC,IAAIf,EAAEe,EAAE,CAAC,MAAM2C,EAAE3C,EAAE,EAAE,IAAIiD,EAAEjD,EAAE,EAAE,IAAIC,EAAED,EAAE,EAAE,IAAI+C,EAAE/C,EAAE,EAAE,KAAK4B,GAAGK,EAAEjC,EAAE,CAAC,IAAI8B,EAAE9B,EAAE,CAAC,GAAGf,KAAKsD,EAAEvC,EAAE,CAAC,GAAGiD,EAAEhD,GAAG6C,EAAE9C,EAAE,EAAE,KAAK4B,GAAGO,EAAEnC,EAAE,CAAC,IAAI+B,EAAE/B,EAAE,CAAC,GAAGf,IAAIsD,EAAEQ,EAAEJ,EAAEG,IAAIjB,EAAEI,EAAEH,EAAEE,KAAKI,EAAEpC,EAAE,CAAC,GAAGiD,EAAEhD,GAAG4C,EAAE7C,EAAE,EAAE,KAAK6B,EAAEM,EAAEJ,EAAEC,IAAII,EAAEW,EAAEJ,EAAEE,IAAIf,EAAEK,EAAEJ,EAAEE,IAAIG,EAAEU,EAAEP,EAAEM,GAAG,IAAI,EAAE,CAAC,GAAGG,EAAE,CAAC,EAAEd,EAAE,EAAE,EAAEc,EAAE,CAAC,EAAEd,EAAE,EAAE,EAAEc,EAAE,CAAC,EAAEd,EAAE,EAAE,EAAE,MAAMgB,EAAEhB,EAAE,QAAQiB,EAAE,EAAE,EAAE,EAAE,EAAEnE,EAAEqE,EAAE,EAAEX,EAAEQ,EAAE,CAAC,GAAGC,EAAED,EAAE,CAAC,GAAGC,EAAED,EAAE,CAAC,GAAGC,EAAED,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAGG,EAAEH,EAAE,CAAC,GAAGG,EAAEH,EAAE,EAAE,GAAGG,EAAE,SAASnB,EAAEc,EAAE,CAAC,IAAIR,EAAE,IAAIH,GAAE,CAAC,GAAG,SAASH,GAAEc,EAAE,CAAC,IAAIR,GAAEQ,EAAE,CAAC,EAAEJ,GAAEI,EAAE,CAAC,EAAEP,GAAEO,EAAE,CAAC,EAAEhE,GAAEgE,EAAE,CAAC,EAAEN,GAAEM,EAAE,CAAC,EAAEhD,GAAEgD,EAAE,EAAE,EAAEd,GAAE,CAAC,EAAE,KAAK,MAAMc,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEd,GAAE,CAAC,EAAE,KAAK,MAAMM,GAAEI,GAAEH,EAAC,EAAEP,GAAE,CAAC,EAAE,KAAK,MAAMlD,GAAE0D,GAAE1C,EAAC,CAAC,GAAEwC,EAAEQ,CAAC,EAAE,IAAIJ,EAAE,EAAEJ,EAAE,CAAC,EAAEC,EAAE,EAAED,EAAE,CAAC,EAAExD,EAAE,EAAEwD,EAAE,CAAC,EAAEE,EAAEM,EAAE,CAAC,EAAEJ,EAAE5C,EAAEgD,EAAE,CAAC,EAAEP,EAAEb,GAAEoB,EAAE,CAAC,EAAEhE,EAAE6C,EAAEmB,EAAE,CAAC,EAAEJ,EAAEd,EAAEkB,EAAE,CAAC,EAAEP,EAAEV,GAAEiB,EAAE,CAAC,EAAEhE,EAAEC,GAAE+D,EAAE,CAAC,EAAEJ,EAAEZ,GAAEgB,EAAE,CAAC,EAAEP,EAAER,GAAEe,EAAE,EAAE,EAAEhE,EAAEmD,GAAEO,EAAEZ,EAAEG,GAAEG,EAAE,EAAED,GAAE,GAAGC,EAAE,EAAE,KAAK,KAAKD,GAAE,CAAC,EAAED,EAAE,CAAC,EAAE,IAAIE,EAAEF,EAAE,CAAC,GAAGH,GAAEC,IAAGI,EAAEF,EAAE,CAAC,GAAGjD,GAAE2C,IAAGQ,EAAEF,EAAE,CAAC,GAAGlC,EAAE6B,GAAGO,GAAGM,EAAEZ,GAAGY,EAAET,IAAGG,EAAE,EAAE,KAAK,KAAK,EAAEM,EAAEZ,EAAEG,EAAC,EAAEC,EAAE,CAAC,GAAGH,GAAEC,IAAGI,EAAEF,EAAE,CAAC,EAAE,IAAIE,EAAEF,EAAE,CAAC,GAAGlC,EAAE6B,GAAGO,EAAEF,EAAE,CAAC,GAAGjD,GAAE2C,IAAGQ,GAAGN,EAAEG,IAAGG,EAAE,EAAE,KAAK,KAAK,EAAEN,EAAEY,EAAET,EAAC,EAAEC,EAAE,CAAC,GAAGjD,GAAE2C,IAAGQ,EAAEF,EAAE,CAAC,GAAGlC,EAAE6B,GAAGO,EAAEF,EAAE,CAAC,EAAE,IAAIE,EAAEF,EAAE,CAAC,GAAGH,GAAEC,IAAGI,IAAIA,EAAE,EAAE,KAAK,KAAK,EAAEH,GAAES,EAAEZ,CAAC,EAAEI,EAAE,CAAC,GAAGlC,EAAE6B,GAAGO,EAAEF,EAAE,CAAC,GAAGjD,GAAE2C,IAAGQ,EAAEF,EAAE,CAAC,GAAGH,GAAEC,IAAGI,EAAEF,EAAE,CAAC,EAAE,IAAIE,EAAE,EAAEI,EAAEU,CAAC,EAAEN,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE5D,EAAE4D,EAAE,CAAC,EAAEF,CAAC,CAAC,OAAO,QAAQR,EAAEc,EAAER,EAAEI,EAAE,CAAC,MAAM,EAAEA,EAAE5D,EAAEgE,EAAE,CAAC,EAAEN,EAAEM,EAAE,CAAC,EAAEhD,EAAEgD,EAAE,CAAC,EAAEpB,EAAEoB,EAAE,CAAC,EAAEnB,EAAE7C,EAAEA,EAAE8C,EAAEY,EAAEA,EAAEX,EAAE/B,EAAEA,EAAEf,EAAED,EAAE6C,EAAEG,EAAEhD,EAAE8C,EAAEG,EAAEjD,EAAE+C,EAAEI,EAAEO,EAAEZ,EAAEM,EAAEM,EAAEX,EAAEM,EAAErC,EAAE+B,EAAEO,EAAEV,EAAEC,EAAEU,EAAEX,EAAEE,EAAEa,EAAEf,EAAEG,EAAE9B,EAAEuC,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEM,EAAEN,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,GAAGL,EAAEE,IAAIpC,EAAE,EAAE,CAAC,GAAG+B,EAAEW,GAAG1C,EAAE,EAAE,CAAC,GAAGgC,EAAEM,GAAGtC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG+B,EAAEW,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG1D,EAAEoD,IAAI,EAAE,EAAE,CAAC,GAAGD,EAAEE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAGL,EAAEM,GAAGO,EAAE,EAAE,CAAC,GAAGV,EAAEE,GAAGQ,EAAE,EAAE,EAAE,GAAG,GAAG7D,EAAEkD,IAAIW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEZ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS2B,GAAE3B,EAAE,EAAE,CAAC,GAAG,CAAC,CAACA,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAMM,EAAEN,EAAE,SAAQ,EAAG,EAAE,EAAE,WAAW,OAAOM,IAAI,GAAGA,EAAE,OAAO,CAAC,CAAC,CAAC,SAASsB,GAAE5B,EAAE,EAAE,CAAsB,GAAlB,CAAC,CAACA,GAAG,CAAC,CAAC,GAAcA,EAAE,SAAS,EAAE,OAAO,MAAM,GAAG,QAAQM,EAAE,EAAEA,EAAEN,EAAE,OAAOM,IAAI,CAAC,MAAM,EAAEN,EAAEM,CAAC,EAAEC,EAAE,EAAED,CAAC,EAAE,GAAG,EAAE,SAAU,IAAGC,EAAE,YAAY,CAAC,EAAE,WAAW,OAAOA,EAAE,SAAU,CAAA,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,SAASsB,GAAE7B,EAAE,EAAE,CAAC,GAAG,CAAC,CAACA,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAMM,EAAE,OAAO,KAAKN,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,GAAGM,EAAE,SAAS,EAAE,OAAO,MAAM,GAAG,UAAUA,KAAKN,EAAE,CAAC,MAAMU,EAAEV,EAAEM,CAAC,EAAEC,EAAE,EAAED,CAAC,EAAE,GAAG,CAAC,CAACI,GAAG,CAAC,CAACH,EAAE,MAAM,GAAG,MAAMzD,EAAE4D,EAAE,SAAU,EAAC,EAAEH,EAAE,SAAQ,EAAG,GAAGzD,IAAI,GAAG,CAACA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,SAASgF,GAAE9B,EAAE,EAAE,CAAC,GAAGA,IAAI,EAAE,MAAM,GAAgC,GAA1B,CAAC,CAACA,GAAG,CAAC,CAAC,GAAG,CAACA,GAAG,CAAC,GAAcA,EAAE,SAAS,EAAE,OAAO,MAAM,GAAG,QAAQM,EAAE,EAAEA,EAAEN,EAAE,OAAOM,IAAI,GAAGN,EAAEM,CAAC,IAAI,EAAEA,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,SAASyB,GAAE/B,EAAE,EAAE,CAAC,GAAGA,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,CAACA,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAACqB,GAAErB,CAAC,GAAG,CAACqB,GAAE,CAAC,EAAE,OAAOrB,IAAI,EAAE,MAAMM,EAAEN,EAAE,EAAE,EAAE,IAAIO,EAAEzD,EAAE,EAAE0D,EAAE,EAAE,IAAID,KAAKD,EAAExD,IAAI,IAAIyD,KAAK,EAAEC,IAAI,GAAG1D,IAAI0D,EAAE,MAAM,GAAG,IAAID,KAAKD,EAAE,CAAC,MAAMN,EAAEM,EAAEC,CAAC,EAAEO,EAAE,EAAEP,CAAC,EAAE,GAAGyB,GAAEhC,CAAC,GAAGgC,GAAElB,CAAC,GAAG,GAAG,CAACgB,GAAE9B,EAAEc,CAAC,EAAE,MAAM,WAAWO,GAAErB,CAAC,GAAGqB,GAAEP,CAAC,GAAG,GAAG,CAACiB,GAAE/B,EAAEc,CAAC,EAAE,MAAM,WAAWd,IAAIc,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,SAASkB,GAAEhC,EAAE,CAAC,OAAO,MAAM,QAAQA,CAAC,GAAG,YAAY,OAAOA,CAAC,CAAC,CAAC,MAAMiC,GAAE,IAAI,IAAIC,GAAE,UAAU,CAAC,IAAIlC,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAIA,GAAG,6CAA6C,OAAO,KAAK,MAAM,GAAG,KAAK,QAAQ,CAAC,EAAE,OAAOA,CAAC,EAAEmC,GAAE,UAAU,CAAC,QAAQnC,EAAE,EAAEA,EAAE,IAAIA,IAAI,CAAC,MAAMA,EAAEkC,GAAG,EAAC,GAAG,CAACD,GAAE,IAAIjC,CAAC,EAAE,OAAOiC,GAAE,IAAIjC,CAAC,EAAEA,CAAC,CAAC,MAAM,EAAE,EAAEoC,GAAE,uBAAsB,IAAAC,GAAC,KAAO,CAAC,OAAO,QAAQrC,EAAE,CAAC,MAAMc,EAAEd,EAAE,YAAY,GAAG,EAAE,OAAWc,IAAL,GAAO,KAAKd,EAAE,UAAU,EAAEc,EAAE,CAAC,CAAC,CAAC,OAAO,SAASd,EAAE,CAAC,OAAOmB,GAAE,SAAS,IAAI,IAAInB,EAAEoC,EAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,UAAUpC,EAAE,CAAC,OAAOmB,GAAE,UAAU,IAAI,IAAInB,EAAEoC,EAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQpC,EAAEc,EAAE,CAAC,GAAG,CAAC,KAAK,eAAeA,CAAC,EAAE,OAAOA,EAAE,MAAMR,EAAEN,EAAE,MAAM,GAAG,EAAEU,EAAEI,EAAE,MAAM,GAAG,EAAER,EAAE,IAAK,EAAC,QAAQN,EAAE,EAAEA,EAAEU,EAAE,OAAOV,IAAUU,EAAEV,CAAC,IAAT,MAAoBU,EAAEV,CAAC,IAAV,KAAYM,EAAE,MAAMA,EAAE,KAAKI,EAAEV,CAAC,CAAC,GAAG,OAAOM,EAAE,KAAK,GAAG,CAAC,CAAC,OAAO,cAAcN,EAAE,CAAC,OAAO,KAAK,gBAAgB,KAAKA,CAAC,CAAC,CAAC,OAAO,eAAeA,EAAE,CAAC,MAAM,CAAC,qBAAqB,KAAKA,CAAC,CAAC,CAAC,EAACsC,GAAE,aAAa,CAAE,EAACA,GAAE,gBAAgB,kBAAkB,MAAMC,EAAEvC,GAAGA,EAAEwC,GAAE,IAAI,IAAI,MAAMC,WAAUzC,EAAC,CAAC,YAAYA,EAAEM,EAAE,GAAG,CAAC,MAAMN,CAAC,EAAE,KAAKc,CAAC,EAAE,KAAKR,EAAE,KAAK,KAAI,EAAG,KAAK,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,KAAK,GAAG,OAAO,CAAA,CAAE,CAAC,CAAC,CAAC,IAAIN,EAAEc,EAAE,CAAC,OAAO,MAAM,QAAQA,CAAC,IAAIA,EAAEA,EAAE,SAAS,MAAM,IAAId,EAAEc,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQd,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,IAAI,SAASA,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAM,KAAK,YAAa,KAAK,KAAK,EAAE,KAAK,KAAKuC,CAAC,CAAC,CAAC,KAAKvC,EAAEQ,EAAE+B,EAAE,CAAC,UAAUvC,KAAK,KAAKc,CAAC,EAAE,CAAC,MAAMN,EAAE,KAAKM,CAAC,EAAEd,CAAC,EAAE,GAAGQ,aAAaF,GAAE,KAAKI,EAAC,EAAE,IAAIV,CAAC,GAAGQ,EAAE,QAAO,UAAWD,GAAEC,CAAC,EAAE,UAAUR,KAAKQ,EAAER,EAAE,kBAAkBlD,GAAE0D,CAAC,EAAE,UAAUR,KAAKQ,EAAEA,EAAER,CAAC,EAAE,SAAS,CAAC,UAAUlC,KAAKkC,EAAEc,CAAC,EAAE,CAAC,MAAMpB,EAAE,KAAKoB,CAAC,EAAEhD,CAAC,EAAE6B,EAAEK,EAAEc,CAAC,EAAEhD,CAAC,EAAE,GAAG6B,aAAaW,GAAE,KAAKI,EAAC,EAAE,IAAI5C,CAAC,EAAE4B,EAAE,SAAU,EAAC,KAAKc,EAAEb,EAAE,SAAU,CAAA,EAAEa,CAAC,EAAE,KAAK,OAAO1C,EAAE0C,EAAEb,EAAE,SAAU,CAAA,EAAEA,EAAE,cAAe,CAAA,UAAUY,GAAEZ,CAAC,EAAE,UAAUK,KAAKL,EAAE,KAAK,OAAO7B,EAAE0C,EAAER,EAAE,SAAQ,CAAE,EAAEA,EAAE,cAAa,CAAE,UAAUlD,GAAE6C,CAAC,EAAE,UAAUK,KAAKL,EAAE,CAAC,MAAMmB,EAAEnB,EAAEK,CAAC,EAAE,KAAK,UAAUlC,EAAEkC,EAAEQ,EAAEM,EAAE,SAAU,CAAA,EAAEA,EAAE,cAAa,CAAE,CAAC,MAAM,KAAKA,CAAC,EAAEhD,CAAC,EAAEuD,GAAE1B,CAAC,EAAE,KAAK,MAAM,KAAK,UAAUA,CAAC,CAAC,EAAE,MAAM,QAAQA,CAAC,GAAGA,aAAa,aAAa,YAAY,OAAOA,CAAC,EAAEA,EAAE,MAAK,EAAGA,CAAC,CAAC,OAAO,IAAI,CAAC,OAAOK,EAAEM,EAAEkC,GAAE,CAAC,GAAG,OAAOxC,EAAE,MAAM,GAAG,GAAG,KAAK,eAAeA,EAAE,aAAa,MAAM,GAAG,UAAU,KAAK,KAAKc,CAAC,EAAE,CAAC,GAAGR,EAAE,IAAI,CAAC,EAAE,SAAS,MAAMxC,EAAE,KAAKgD,CAAC,EAAE,CAAC,EAAEpB,EAAEM,EAAEc,CAAC,EAAE,CAAC,EAAE,GAAGN,GAAE1C,CAAC,GAAG0C,GAAEd,CAAC,GAAG,GAAG,CAACiC,GAAE7D,EAAE4B,CAAC,EAAE,MAAM,WAAWa,GAAEzC,CAAC,GAAGyC,GAAEb,CAAC,GAAG,GAAG,CAACkC,GAAE9D,EAAE4B,CAAC,EAAE,MAAM,WAAW5C,GAAEgB,CAAC,GAAGhB,GAAE4C,CAAC,GAAG,GAAG,CAACmC,GAAE/D,EAAE4B,CAAC,EAAE,MAAM,WAAW2B,GAAEvD,CAAC,GAAGuD,GAAE3B,CAAC,GAAG,GAAG,CAACqC,GAAEjE,EAAE4B,CAAC,EAAE,MAAM,WAAWsC,GAAElE,CAAC,GAAGkE,GAAEtC,CAAC,GAAG,GAAG,CAACoC,GAAEhE,EAAE4B,CAAC,EAAE,MAAM,WAAW5B,IAAI4B,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,MAAM,kBAAkB,KAAKM,GAAYA,EAAE,eAAX,MAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,MAAM,YAAY,IAAI,CAAC,CAAC,OAAC,cAAgByC,EAAC,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,WAAW,CAAA,CAAE,CAAC,CAAC,CAAC,aAAazC,EAAE,CAAC,OAAO,KAAK,UAAU,aAAaA,CAAC,CAAC,CAAC,aAAaA,EAAEc,EAAE,CAAC,OAAOA,GAAGA,EAAE,EAAE,IAAI,EAAE,KAAK,UAAU,aAAad,EAAEc,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,iBAAiB,YAAY,CAAC,CAAC,EAAC,MAAM4B,UAAUC,CAAC,CAAC,eAAe3C,EAAE,CAAC,MAAM,GAAGA,CAAC,EAAE,KAAK,EAAE0B,EAAE,SAAS,KAAK,EAAEA,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,aAAa9B,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAa,EAAC,CAAC,MAAM,KAAK,KAAK8C,EAAE,KAAK,OAAO,cAAcA,EAAE,cAAc,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK1C,EAAEc,EAAEyB,EAAE,CAAC,OAAO,MAAM,KAAKvC,EAAEc,CAAC,EAAE,KAAK,EAAEd,EAAE,EAAE,KAAK,EAAEA,EAAE,EAAE,IAAI,CAAC,OAAO,eAAeA,EAAE,CAAC,OAAOA,EAAC,CAAE,KAAK0C,EAAE,KAAK,OAAO,MAAO,GAAE,KAAKA,EAAE,KAAK,KAAK,MAAO,GAAE,KAAKA,EAAE,KAAK,KAAK,MAAO,GAAE,KAAKA,EAAE,KAAK,KAAK,KAAKA,EAAE,KAAK,KAAK,MAAO,GAAE,KAAKA,EAAE,KAAK,KAAK,MAAO,GAAE,KAAKA,EAAE,KAAK,KAAK,MAAO,IAAG,QAAQ,MAAM,IAAI,MAAM,oBAAoB1C,CAAC,CAAC,CAAC,CAAC,OAAO,iBAAiBA,EAAE,CAAC,OAAOA,EAAG,CAAA,KAAK0C,EAAE,cAAc,KAAK,KAAKA,EAAE,cAAc,cAAc,MAAO,GAAE,KAAKA,EAAE,cAAc,MAAM,KAAKA,EAAE,cAAc,eAAe,MAAO,GAAE,KAAKA,EAAE,cAAc,aAAa,KAAKA,EAAE,cAAc,MAAM,MAAO,GAAE,QAAQ,MAAM,IAAI,MAAM,8BAA8B1C,CAAC,CAAC,CAAC,CAAC,iBAAiBA,EAAE,CAAC,MAAMc,EAAE,KAAK,eAAgB,EAAC,KAAK,OAAOd,CAAC,EAAE,QAAQM,EAAE,EAAEA,EAAEQ,EAAER,IAAIN,EAAEM,CAAC,EAAE,KAAK,EAAEN,EAAEM,CAAC,CAAC,EAAE,OAAON,CAAC,CAAC,OAAOA,EAAE,CAAC,MAAMc,EAAE,KAAK,IAAI,OAAO,EAAER,EAAE,KAAK,SAAQ,EAAGI,EAAE,KAAK,eAAgB,EAAC,QAAQI,EAAE,EAAEA,EAAEJ,EAAEI,IAAId,EAAEc,CAAC,EAAE,IAAS,QAAQ,EAAE,EAAE,EAAER,EAAEI,EAAE,GAAGA,EAAE,QAAQJ,EAAE,EAAEA,EAAEI,EAAEJ,IAAI,CAAC,MAAMI,EAAEI,EAAE,EAAER,CAAC,EAAE,OAAO,SAASI,CAAC,IAAIV,EAAEM,CAAC,EAAE,KAAK,IAAIN,EAAEM,CAAC,EAAEI,CAAC,EAAE,CAAC,OAAOV,CAAC,CAAC,iBAAiBA,EAAE,CAAC,MAAMc,EAAE,KAAK,eAAc,EAAG,KAAK,OAAOd,CAAC,EAAE,QAAQM,EAAE,EAAEA,EAAEQ,EAAER,IAAIN,EAAEM,CAAC,EAAE,KAAK,EAAEN,EAAEM,CAAC,CAAC,EAAE,OAAON,CAAC,CAAC,OAAOA,EAAE,CAAC,MAAMc,EAAE,KAAK,IAAI,OAAO,EAAER,EAAE,KAAK,WAAWI,EAAE,KAAK,eAAgB,EAAC,QAAQI,EAAE,EAAEA,EAAEJ,EAAEI,IAAId,EAAEc,CAAC,EAAE,KAAU,QAAQ,EAAE,EAAE,EAAER,EAAEI,EAAE,GAAGA,EAAE,QAAQJ,EAAE,EAAEA,EAAEI,EAAEJ,IAAI,CAAC,MAAMI,EAAEI,EAAE,EAAER,CAAC,EAAE,OAAO,SAASI,CAAC,IAAIV,EAAEM,CAAC,EAAE,KAAK,IAAIN,EAAEM,CAAC,EAAEI,CAAC,EAAE,CAAC,OAAOV,CAAC,CAAC,UAAU,CAAC,MAAMA,EAAE,KAAK,IAAI,OAAO,EAAE,OAAOA,EAAEA,EAAE,OAAO,KAAK,eAAgB,EAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO0C,EAAE,eAAe,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,KAAK,IAAI,eAAe,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC,cAAc1C,EAAE,CAAC,OAAO,KAAK,IAAI,aAAaA,CAAC,EAAEA,GAAG,KAAK,EAAE,GAAG0B,EAAE,oBAAoB,EAAE,KAAK,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,GAAGA,EAAE,oBAAoB,EAAE,KAAK,IAAI,eAAe,CAAC,IAAI,KAAK,EAAEA,EAAE,SAAS,KAAK,EAAEA,EAAE,UAAU,IAAI,CAAC,UAAU1B,EAAE,CAAC,MAAMc,EAAE,KAAK,eAAgB,EAAC,OAAO,KAAK,EAAE,KAAK,IAAI,OAAO,EAAEd,EAAEc,CAAC,CAAC,CAAC,CAAC,UAAUd,EAAEc,EAAE,CAAC,OAAO,KAAK,IAAI,OAAO,EAAEd,EAAE,KAAK,gBAAgB,EAAE,KAAK,EAAEc,CAAC,EAAE,IAAI,CAAC,WAAWd,EAAEc,EAAE,CAAC,MAAMR,EAAE,KAAK,eAAgB,EAACI,EAAE,KAAK,IAAI,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAEJ,EAAE,IAAIQ,EAAE,CAAC,EAAE,KAAK,EAAEJ,EAAEV,EAAEM,EAAE,CAAC,CAAC,EAAE,OAAOQ,CAAC,CAAC,WAAWd,EAAEc,EAAE,CAAC,MAAMR,EAAE,KAAK,eAAgB,EAACI,EAAE,KAAK,IAAI,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAEJ,EAAE,IAAII,EAAEV,EAAEM,EAAE,CAAC,EAAE,KAAK,EAAEQ,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,UAAUd,EAAE,CAAC,OAAO,KAAK,IAAI,SAASA,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,OAAO,QAAQ,CAAC,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,OAAO,SAASA,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,SAASA,EAAE,CAAC,OAAO,KAAK,IAAI,gBAAgBA,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,OAAO0C,EAAE,cAAc,MAAM,KAAK,YAAY,OAAOA,EAAE,cAAc,aAAa,KAAK,YAAY,OAAOA,EAAE,cAAc,eAAe,KAAK,WAAW,OAAOA,EAAE,cAAc,cAAc,KAAK,WAAW,OAAOA,EAAE,cAAc,MAAM,KAAK,UAAU,OAAOA,EAAE,cAAc,KAAK,QAAQ,MAAM,IAAI,MAAM,iCAAiC,CAAC,CAAC,EAAE1C,CAAC,EAAE0C,EAAE,cAAc,KAAK,EAAE,KAAK,IAAI,QAAQ1C,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAMA,EAAE,KAAK,IAAI,OAAO,EAAE,OAAOA,EAAEA,EAAE,WAAW,CAAC,CAAC,CAAC0C,EAAE,KAAK,CAAC,OAAO,SAAS,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM,EAAEA,EAAE,cAAc,CAAC,KAAK,KAAK,cAAc,KAAK,MAAM,KAAK,eAAe,KAAK,aAAa,KAAK,MAAM,IAAI,EAAE,IAAAE,GAAA,cAAgBD,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,cAAc,CAAC,SAAS,CAAA,EAAG,SAAS,EAAE,CAAC,CAAC,CAAC,WAAWI,EAAE,CAAC,OAAO,KAAK,OAAO,WAAWA,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAO,KAAK,UAAU,WAAWA,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,UAAU,CAAC,CAAC,WAAWA,EAAE,CAAC,OAAO,KAAK,OAAO,WAAWA,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAO,KAAK,UAAU,WAAWA,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,UAAU,CAAC,CAAC,EAAC,MAAM6C,WAAWF,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,iBAAiB,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,cAAc,CAAC,WAAW,KAAK,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC,cAAcI,EAAE,CAAC,OAAO,KAAK,IAAI,aAAaA,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,OAAO,YAAY,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAO,KAAK,OAAO,aAAaA,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,KAAK,OAAO,SAAS,CAAC,CAAC,WAAWA,EAAE,CAAC,OAAO,KAAK,OAAO,UAAUA,CAAC,CAAC,CAAC,CAAC6C,GAAG,WAAW,CAAC,YAAY,cAAc,SAAS,WAAW,MAAM,QAAQ,QAAQ,SAAS,EAAE,MAAMC,WAAWH,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,iBAAiB,CAAC,sBAAsB,CAAC,OAAO,OAAO,OAAO,MAAM,YAAa,EAAC,CAAC,cAAckD,GAAG,cAAc,OAAO,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,KAAK,IAAI,eAAe,CAAC,CAAC,iBAAiB9C,EAAE,CAAC,OAAO,KAAK,IAAI,gBAAgBA,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,OAAO,CAAC,CAAC,SAASA,EAAE,CAAC,OAAO,KAAK,OAAO,QAAQA,EAAE,CAAC,MAAMjD,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,OAAO,QAAQ,CAAC,CAAC,UAAUiD,EAAE,CAAC,OAAO,KAAK,OAAO,SAASA,EAAE,CAAC,MAAMjD,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC+F,GAAG,cAAc,CAAC,OAAO,SAAS,KAAK,OAAO,YAAY,aAAa,EAAE,MAAMC,WAAWJ,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,OAAOI,EAAE,CAAC,OAAO,KAAK,IAAI,MAAMA,CAAC,CAAC,CAAC,CAAA,IAAAgD,GAAC,MAAMC,WAAWN,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,cAAc,CAAC,KAAKqD,GAAG,KAAK,YAAY,MAAM,GAAG,KAAK,IAAI,YAAY,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQjD,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,SAASA,EAAE,CAAC,OAAO,KAAK,IAAI,QAAQA,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,eAAeA,EAAE,CAAC,OAAO,KAAK,IAAI,cAAcA,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,EAACiD,GAAG,KAAK,CAAC,YAAY,cAAc,aAAa,cAAc,EAAE,MAAMC,WAAWT,EAAC,CAAC,EAAEzC,EAAE,CAAC,GAAG,CAAC,KAAK,YAAY,SAASA,EAAE,YAAY,EAAE,MAAM,IAAI,MAAM,WAAWA,EAAE,YAAY,wBAAwB,KAAK,YAAY,IAAI,CAAC,CAAC,CAACkD,GAAG,eAAe,aAAO,MAAMC,WAAWR,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,YAAY,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAa,EAAC,CAAC,SAAS,EAAE,UAAU,KAAK,UAAU,KAAK,MAAMuD,GAAG,SAAS,OAAO,MAAMA,GAAG,SAAS,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,IAAI,UAAU,CAAC,CAAC,YAAYnD,EAAE,CAAC,OAAO,KAAK,IAAI,WAAWA,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,aAAaA,EAAE,CAAC,OAAO,KAAK,IAAI,YAAYA,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,aAAaA,EAAE,CAAC,OAAO,KAAK,IAAI,YAAYA,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,SAASA,EAAE,CAAC,OAAO,KAAK,IAAI,QAAQA,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,SAASA,EAAE,CAAC,OAAO,KAAK,IAAI,QAAQA,CAAC,CAAC,CAAC,EAACmD,EAAG,SAAS,CAAC,cAAc,MAAM,gBAAgB,MAAM,OAAO,KAAK,EAAEA,EAAG,UAAU,CAAC,QAAQ,KAAK,OAAO,IAAI,EAAEA,EAAG,UAAU,CAAC,QAAQ,KAAK,OAAO,KAAK,uBAAuB,KAAK,sBAAsB,KAAK,sBAAsB,KAAK,qBAAqB,IAAI,EAAE,KAAK,CAAC,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEzD,GAAE,IAAA0D,GAAA,MAAMC,WAAWd,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,UAAU6D,GAAG,UAAU,OAAO,YAAY,GAAG,YAAY,GAAG,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,iBAAiB,KAAK,qBAAqB,IAAIN,EAAG,KAAK,MAAM,sBAAsB,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,gBAAgB,KAAK,oBAAoB,IAAIA,EAAG,KAAK,MAAM,qBAAqB,EAAE,YAAY,EAAE,cAAc,KAAK,kBAAkB,IAAIA,EAAG,KAAK,MAAM,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,KAAK,qBAAqB,IAAIA,EAAG,KAAK,MAAM,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,EAAE,yBAAyB,KAAK,6BAA6B,IAAIA,EAAG,KAAK,MAAM,8BAA8B,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,eAAenD,EAAE,CAAC,OAAO,KAAK,IAAI,cAAcA,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAASA,EAAE,CAAC,MAAMc,EAAE,KAAK,IAAI,iBAAiB,EAAE,QAAQ,OAAOA,EAAE,CAAC,EAAEd,EAAE,KAAK,IAAI,kBAAkBc,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,aAAad,EAAE,CAAC,OAAO,KAAK,IAAI,YAAYA,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,eAAeA,EAAE,CAAC,OAAO,KAAK,IAAI,cAAcA,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,KAAK,IAAI,iBAAiB,CAAC,CAAC,mBAAmBA,EAAE,CAAC,OAAO,KAAK,IAAI,kBAAkBA,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAOe,GAAE,YAAY,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,gBAAgBf,EAAE,CAAC,MAAMc,EAAE,KAAK,IAAI,iBAAiB,EAAE,QAAQ,OAAO,KAAK,IAAI,kBAAkBC,GAAE,YAAYf,EAAEc,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,OAAO,kBAAkB,CAAC,CAAC,yBAAyB,CAAC,OAAO,KAAK,OAAO,kBAAkB,EAAE,KAAK,OAAO,sBAAsB,EAAE,IAAI,CAAC,oBAAoBd,EAAE,CAAC,OAAO,KAAK,OAAO,mBAAmBA,EAAE,CAAC,SAASoD,GAAGC,GAAGC,GAAGC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,KAAK,IAAI,gBAAgB,CAAC,CAAC,kBAAkBvD,EAAE,CAAC,OAAO,KAAK,IAAI,iBAAiBA,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAOe,GAAE,YAAY,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,eAAef,EAAE,CAAC,MAAMc,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAK,EAAG,OAAO,KAAK,IAAI,iBAAiBC,GAAE,YAAYf,EAAEc,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAC,wBAAwB,CAAC,OAAO,KAAK,OAAO,iBAAiB,EAAE,KAAK,OAAO,qBAAqB,EAAE,IAAI,CAAC,mBAAmBd,EAAE,CAAC,OAAO,KAAK,OAAO,kBAAkBA,EAAE,CAAC,SAASoD,GAAGC,GAAGC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,eAAetD,EAAE,CAAC,OAAO,KAAK,IAAI,cAAcA,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,KAAK,OAAO,eAAe,CAAC,CAAC,sBAAsB,CAAC,OAAO,KAAK,OAAO,eAAe,EAAE,KAAK,OAAO,mBAAmB,EAAE,IAAI,CAAC,iBAAiBA,EAAE,CAAC,OAAO,KAAK,OAAO,gBAAgBA,EAAE,CAAC,SAASoD,GAAGC,GAAGC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,KAAK,IAAI,mBAAmB,CAAC,CAAC,qBAAqBtD,EAAE,CAAC,OAAO,KAAK,IAAI,oBAAoBA,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,OAAO,kBAAkB,CAAC,CAAC,yBAAyB,CAAC,OAAO,KAAK,OAAO,kBAAkB,EAAE,KAAK,OAAO,sBAAsB,EAAE,IAAI,CAAC,oBAAoBA,EAAE,CAAC,OAAO,KAAK,OAAO,mBAAmBA,EAAE,CAAC,SAASoD,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,KAAK,IAAI,iBAAiB,CAAC,CAAC,mBAAmBpD,EAAE,CAAC,OAAO,KAAK,IAAI,kBAAkBA,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,KAAK,IAAI,gBAAgB,CAAC,CAAC,kBAAkBA,EAAE,CAAC,OAAO,KAAK,IAAI,iBAAiBA,CAAC,CAAC,CAAC,6BAA6B,CAAC,OAAO,KAAK,OAAO,0BAA0B,CAAC,CAAC,iCAAiC,CAAC,OAAO,KAAK,OAAO,0BAA0B,EAAE,KAAK,OAAO,8BAA8B,EAAE,IAAI,CAAC,4BAA4BA,EAAE,CAAC,OAAO,KAAK,OAAO,2BAA2BA,EAAE,CAAC,SAASqD,GAAGC,EAAE,CAAC,CAAC,CAAC,EAACG,GAAG,UAAU,CAAC,OAAO,SAAS,KAAK,OAAO,MAAM,OAAO,EAAE,MAAMC,WAAWf,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,QAAQ,CAAE,EAAC,WAAW,CAAA,CAAE,CAAC,CAAC,CAAC,aAAaI,EAAE,CAAC,OAAO,KAAK,OAAO,aAAaA,CAAC,CAAC,CAAC,gBAAgBA,EAAE,CAAC,OAAO,KAAK,UAAU,aAAaA,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,SAAS,YAAY,CAAC,CAAC,YAAY,CAAC,OAAO,KAAK,IAAI,SAAS,CAAC,CAAC,WAAWA,EAAE,CAAC,OAAO,KAAK,IAAI,UAAUA,CAAC,CAAC,CAAC,QAAC,cAAiB2C,CAAC,CAAC,eAAe3C,EAAE,CAAC,MAAM,GAAGA,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,aAAaJ,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,cAAc,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAA,EAAG,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,KAAKI,EAAEc,EAAEyB,EAAE,CAAC,GAAGzB,IAAIyB,EAAE,MAAM,IAAI,MAAM,wBAAwB,EAAE,OAAO,MAAM,KAAKvC,EAAEc,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,IAAI,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,eAAed,EAAE,CAAC,OAAO,KAAK,IAAI,cAAcA,CAAC,CAAC,CAAC,YAAYA,EAAE,CAAC,OAAO,KAAK,IAAI,WAAWA,CAAC,CAAC,CAAC,SAASA,EAAE,CAAC,OAAO,KAAK,IAAI,QAAQA,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO0B,EAAE,QAAQ,KAAK,IAAI,aAAa,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,OAAO,EAAE,CAAE,CAAA,CAAC,CAAC,UAAU1B,EAAE,CAAC,MAAMc,EAAE,KAAK,IAAI,aAAa,EAAE,QAAQR,EAAE,KAAK,IAAI,UAAU,EAAE,QAAQI,EAAE,KAAK,IAAI,OAAO,EAAE,QAAQ,OAAOgB,EAAE,UAAU1B,EAAEc,EAAER,EAAEI,CAAC,EAAE,KAAK,IAAI,cAAcI,CAAC,EAAE,IAAI,WAAWR,CAAC,EAAE,IAAI,QAAQI,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAMV,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO0B,EAAE,UAAU,KAAK,eAAc,EAAG1B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEA,CAAC,CAAC,kBAAkB,CAAC,MAAMA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO0B,EAAE,UAAU,KAAK,eAAc,EAAG,CAAC,EAAE,EAAE,CAAC,EAAE1B,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEA,CAAC,CAAC,eAAe,CAAC,MAAMA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO0B,EAAE,UAAU,KAAK,eAAc,EAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE1B,CAAC,EAAEA,CAAC,CAAC,gBAAgB,CAAC,MAAMA,EAAE,CAAE,EAAC,QAAQc,EAAE,KAAWA,GAAN,KAAQA,EAAEA,EAAE,EAAEd,EAAE,KAAKc,CAAC,EAAE,IAAIA,EAAE,MAAMR,EAAEN,EAAE,MAAM,YAAY,KAAKc,EAAEd,EAAE,IAAG,GAAIyB,GAAEnB,EAAEA,EAAEQ,EAAE,UAAW,CAAA,EAAE,OAAOR,CAAC,CAAC,SAASN,EAAE,CAAC,GAAGA,EAAE,GAAGA,EAAE,EAAE,YAAYA,CAAC,EAAEA,EAAE,EAAE,KAAK,UAAUc,KAAKd,EAAE,EAAEc,EAAE,YAAYd,CAAC,EAAE,KAAK,OAAO,WAAWA,CAAC,EAAEA,EAAE,EAAE,KAAK,MAAMM,EAAE,KAAKQ,CAAC,EAAE,SAAS,OAAOR,EAAEA,EAAE,OAAO,CAAC,EAAE,iBAAiB,UAAU,IAAIN,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAYA,EAAE,CAAC,OAAO,KAAK,UAAU,WAAWA,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,UAAU,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,YAAa,EAAC,KAAKA,GAAGA,EAAE,eAAeJ,EAAE,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,MAAM,CAAC,CAAC,QAAQI,EAAE,CAAC,OAAO,KAAK,OAAO,OAAOA,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,OAAO,QAAQ,CAAC,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,OAAO,SAASA,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,OAAO,OAAOA,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,KAAK,IAAI,SAAS,CAAC,CAAC,WAAWA,EAAE,CAAC,OAAO,KAAK,IAAI,UAAUA,CAAC,CAAC,CAAC,SAASA,EAAE,CAACA,EAAE,IAAI,EAAE,UAAUc,KAAK,KAAK,eAAeA,EAAE,SAASd,CAAC,EAAE,OAAO,IAAI,CAAC,EAAC2D,GAAA,MAAMC,WAAWjB,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,KAAKgE,GAAG,KAAK,UAAU,SAAS,KAAK,QAAQ,KAAK,WAAW,GAAG,QAAQ,CAAE,CAAA,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,KAAK,OAAO,SAAS,CAAC,CAAC,WAAW5D,EAAE,CAAC,OAAO,KAAK,OAAO,UAAUA,EAAE,CAAC,MAAMjD,EAAE,oBAAoB,CAAC,CAAC,CAAC,aAAaiD,EAAE,CAAC,OAAO,KAAK,UAAU,aAAaA,CAAC,CAAC,CAAC,aAAaA,EAAEc,EAAE,CAAC,OAAO,KAAK,UAAU,aAAad,EAAEc,EAAE,CAAC,MAAM/D,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,iBAAiB,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,eAAe,YAAY,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,YAAYiD,EAAE,CAAC,OAAO,KAAK,OAAO,WAAWA,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQA,EAAE,CAAC,OAAO,KAAK,IAAI,OAAOA,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,SAAS,CAAC,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,OAAO,UAAUA,CAAC,CAAC,CAAC,aAAaA,EAAE,CAAC,OAAO,KAAK,UAAU,UAAUA,CAAC,CAAC,CAAC,EAAC4D,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE,IAAAC,GAAA,cAAiBpB,EAAC,CAAC,MAAM,CAAC,KAAK,aAAa7C,EAAE,gBAAgB,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,WAAW,CAAE,CAAA,CAAC,CAAC,CAAC,aAAaI,EAAE,CAAC,OAAO,KAAK,UAAU,aAAaA,CAAC,CAAC,CAAC,aAAaA,EAAEc,EAAE,CAAC,OAAO,KAAK,UAAU,aAAad,EAAEc,EAAE,CAAC,MAAM/D,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,iBAAiB,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,eAAe,YAAY,CAAC,CAAC,EAAC,SAAS+G,GAAI,CAAC,OAAOA,EAAG,OAAO,OAAO,OAAO,OAAO,KAAM,EAAC,SAAS9D,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,OAAO,IAAI,CAAC,IAAIM,EAAE,UAAU,CAAC,EAAE,QAAQ,KAAKA,EAAE,OAAO,UAAU,eAAe,KAAKA,EAAE,CAAC,IAAIN,EAAE,CAAC,EAAEM,EAAE,CAAC,EAAE,CAAC,OAAON,CAAC,EAAE8D,EAAG,MAAM,KAAK,SAAS,CAAC,QAAC,cAAiBnB,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAa,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAKI,EAAEc,EAAEyB,EAAE,CAAC,GAAGzB,IAAIyB,EAAE,MAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,MAAM,KAAKvC,EAAEc,CAAC,CAAC,CAAC,SAASd,EAAE,CAACA,EAAE,GAAGA,EAAE,EAAE,YAAYA,CAAC,EAAE,KAAK,OAAO,WAAWA,CAAC,EAAEA,EAAE,EAAE,IAAI,IAAI,EAAE,MAAMM,EAAE,KAAKQ,CAAC,EAAE,SAAS,OAAOR,EAAEA,EAAE,OAAO,CAAC,EAAE,iBAAiB,UAAU,IAAIN,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,YAAYA,EAAE,CAAC,OAAO,KAAK,UAAU,WAAWA,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,UAAU,CAAC,CAAC,SAASA,EAAE,CAAC,UAAUc,KAAK,KAAK,aAAc,EAACA,EAAE,SAASd,CAAC,EAAE,OAAO,IAAI,CAAC,EAAC,MAAM+D,WAAWpB,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,cAAc,CAAC,SAAS,KAAK,oBAAoB,KAAK,OAAO,CAAA,CAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,YAAYI,EAAE,CAAC,OAAO,KAAK,OAAO,WAAWA,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,KAAK,OAAO,qBAAqB,CAAC,CAAC,uBAAuBA,EAAE,CAAC,OAAO,KAAK,OAAO,sBAAsBA,EAAE,CAAC,MAAMjD,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAASiD,EAAE,CAAC,OAAO,KAAK,OAAO,SAASA,CAAC,CAAC,CAAC,YAAYA,EAAE,CAAC,OAAO,KAAK,UAAU,SAASA,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC,IAAAgE,GAAA,cAAiBrB,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,YAAW,EAAG,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,IAAI,UAAU,GAAGqB,GAAE,oBAAoBE,GAAE,UAAU,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,YAAYnB,EAAE,CAAC,OAAO,KAAK,IAAI,WAAWA,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,OAAOA,EAAE,CAAC,KAAK,IAAI,MAAMA,CAAC,EAAE,MAAMc,EAAEG,GAAE,oBAAoBE,GAAE,UAAUnB,CAAC,CAAC,EAAE,OAAOc,GAAG,KAAK,IAAI,WAAWA,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,SAASd,EAAE,CAAC,OAAO,KAAK,IAAI,QAAQa,EAAE,WAAWb,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAMA,EAAE,KAAK,IAAI,OAAO,EAAE,OAAOA,EAAEiB,GAAE,QAAQjB,EAAE,KAAK,YAAW,CAAE,EAAE,IAAI,CAAC,EAACiE,GAAA,cAAiBtB,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa/C,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,cAAc,CAAC,MAAM,CAAC,UAAU,kBAAkBF,EAAC,GAAG,QAAQ,KAAK,EAAE,aAAa,KAAK,UAAU,CAAA,EAAG,WAAW,GAAG,QAAQ,CAAE,EAAC,QAAQ,CAAA,EAAG,UAAU,CAAE,EAAC,OAAO,CAAA,EAAG,MAAM,GAAG,OAAO,CAAE,EAAC,MAAM,CAAA,EAAG,SAAS,EAAE,CAAC,CAAC,CAAC,YAAYM,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,EAAE,IAAI,IAAIA,EAAE,iBAAiB,cAAc,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,wBAAwB,CAAC,CAAC,KAAKA,EAAEc,EAAEyB,EAAE,CAAC,GAAGzB,IAAIyB,EAAE,MAAM,IAAI,MAAM,wBAAwB,EAAE,KAAK,IAAI,QAAQuB,EAAG,CAAE,EAAC9D,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQA,EAAE,QAAS,CAAA,EAAE,KAAK,UAAU8D,EAAG,CAAE,EAAC9D,EAAE,WAAW,CAAC,EAAE,KAAK,gBAAgBA,EAAE,kBAAkBc,EAAEd,EAAE,gBAAiB,CAAA,EAAE,IAAI,EAAE,UAAUM,KAAKN,EAAE,eAAe,YAAY,EAAE,CAAC,MAAMU,EAAEV,EAAE,aAAaM,CAAC,EAAE,KAAK,aAAaA,EAAEQ,EAAEJ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAEV,EAAE,CAAC,OAAOA,aAAakE,GAAG,KAAK,OAAO,SAASlE,CAAC,EAAEA,aAAamE,GAAG,KAAK,OAAO,QAAQnE,CAAC,EAAEA,aAAaiD,GAAG,KAAK,OAAO,UAAUjD,CAAC,EAAEA,aAAa+D,GAAG,KAAK,OAAO,QAAQ/D,CAAC,EAAEA,aAAa0D,GAAG,KAAK,OAAO,SAAS1D,CAAC,EAAEA,aAAayD,GAAG,KAAK,OAAO,YAAYzD,CAAC,EAAEA,aAAaoE,GAAG,KAAK,OAAO,WAAWpE,CAAC,EAAEA,aAAaqE,GAAE,KAAK,OAAO,aAAarE,CAAC,EAAEA,aAAa0C,EAAE,KAAK,OAAO,YAAY1C,CAAC,EAAEA,aAAa+C,IAAI,KAAK,OAAO,UAAU/C,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,KAAK,qBAAqB,OAAOA,GAAGA,EAAE,YAAY,CAAC,CAAC,EAAEA,EAAE,CAAC,OAAO,KAAK,EAAE,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAEA,EAAE,CAAC,OAAO,KAAK,EAAE,OAAOA,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC,gBAAgBA,EAAE,CAAC,OAAO,KAAK,OAAO,eAAeA,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,KAAK,OAAO,cAAc,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,SAAS,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,OAAO,CAAC,CAAC,YAAY,CAAC,OAAO,KAAK,SAAS,QAAQ,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,SAAS,WAAW,CAAC,CAAC,cAAc,CAAC,OAAO,KAAK,SAAS,UAAU,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,SAAS,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,SAAS,WAAW,CAAC,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,SAAS,CAAC,CAAC,KAAC,MAAMsE,EAAE,CAAC,OAAO,UAAUtE,EAAE,CAAC,OAAOsE,GAAG,EAAE,IAAItE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAIlC,GAAE,KAAK,EAAE,IAAIyG,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE/C,GAAE,iBAAiB8C,GAAG,EAAE,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,CAAC,CAAC,UAAUtE,EAAE,CAAC,OAAO,KAAK,EAAEA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAIsE,KAAI,UAAU,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAMtE,EAAE,CAAC,UAAUc,KAAKd,EAAE,UAAU,qBAAqB,CAAC,MAAMA,EAAE,KAAK,gBAAgBc,EAAE,WAAW,EAAEA,EAAE,cAAcd,EAAE,YAAY,EAAE,CAAC,CAAC,MAAMc,EAAE,IAAI,IAAIR,EAAE,IAAI,IAAIQ,EAAE,IAAId,EAAE,CAAC,EAAEM,EAAE,IAAIN,EAAE,EAAE,KAAK,CAAC,EAAE,UAAUU,KAAKV,EAAE,EAAE,YAAY,UAAUA,IAAI,CAACU,EAAE,UAAW,EAACA,EAAE,UAAU,EAAE,CAAC,GAAGI,EAAE,IAAId,CAAC,EAAE,SAAS,IAAIU,EAAEA,EAAEV,EAAE,eAAeJ,EAAE,aAAaI,EAAE,IAAMA,EAAE,YAAa,KAAK,CAAC,EAAEM,EAAE,IAAIN,EAAEU,CAAC,EAAEI,EAAE,IAAId,CAAC,CAAC,CAAC,MAAMU,EAAEV,GAAG,CAAC,MAAMc,EAAER,EAAE,IAAIN,CAAC,EAAE,GAAG,CAACc,EAAE,MAAM,IAAI,MAAM,yBAAyB,EAAE,OAAOA,CAAC,EAAE,UAAUd,KAAKc,EAAE,CAAC,MAAMA,EAAER,EAAE,IAAIN,CAAC,EAAE,GAAG,CAACc,EAAE,MAAM,IAAI,MAAM,yBAAyB,EAAEA,EAAE,eAAelB,EAAE,cAAckB,EAAE,KAAKd,EAAEU,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,aAAaV,EAAE,CAAC,MAAMc,EAAEd,EAAE,IAAIA,GAAGA,EAAE,IAAI,EAAE,UAAUM,KAAKN,EAAE,MAAMM,EAAE,KAAK,CAAC,MAAMQ,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,gBAAgBd,EAAE,CAAC,MAAMc,EAAEd,EAAE,eAAe,OAAO,KAAK,QAAO,EAAG,mBAAkB,EAAG,KAAKA,GAAGA,EAAE,gBAAgBc,CAAC,GAAG,IAAId,EAAE,IAAI,CAAC,CAAC,YAAYA,EAAE,GAAG,CAAC,OAAO,IAAIkE,GAAG,KAAK,EAAElE,CAAC,CAAC,CAAC,WAAWA,EAAE,GAAG,CAAC,OAAO,IAAImE,GAAG,KAAK,EAAEnE,CAAC,CAAC,CAAC,aAAaA,EAAE,GAAG,CAAC,OAAO,IAAIiD,GAAG,KAAK,EAAEjD,CAAC,CAAC,CAAC,WAAWA,EAAE,GAAG,CAAC,OAAO,IAAI+D,GAAG,KAAK,EAAE/D,CAAC,CAAC,CAAC,WAAWA,EAAE,GAAG,CAAC,OAAO,IAAI0D,GAAG,KAAK,EAAE1D,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,IAAI4D,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB5D,EAAE,GAAG,CAAC,OAAO,IAAIwE,GAAG,KAAK,EAAExE,CAAC,CAAC,CAAC,eAAeA,EAAE,GAAG,CAAC,OAAO,IAAIyD,GAAG,KAAK,EAAEzD,CAAC,CAAC,CAAC,cAAcA,EAAE,GAAG,CAAC,OAAO,IAAIoE,GAAG,KAAK,EAAEpE,CAAC,CAAC,CAAC,gBAAgBA,EAAE,GAAG,CAAC,OAAO,IAAIqE,GAAE,KAAK,EAAErE,CAAC,CAAC,CAAC,uBAAuBA,EAAE,GAAG,CAAC,OAAO,IAAI6C,GAAG,KAAK,EAAE7C,CAAC,CAAC,CAAC,uBAAuBA,EAAE,GAAG,CAAC,OAAO,IAAI8C,GAAG,KAAK,EAAE9C,CAAC,CAAC,CAAC,eAAeA,EAAE,GAAGc,EAAE,KAAK,CAAC,OAAOA,IAAIA,EAAE,KAAK,UAAU,cAAc,CAAC,GAAG,IAAI4B,EAAE,KAAK,EAAE1C,CAAC,EAAE,UAAUc,CAAC,CAAC,CAAC,aAAad,EAAE,GAAG,CAAC,OAAO,IAAI+C,GAAG,KAAK,EAAE/C,CAAC,CAAC,CAAC,EAACsE,GAAG,EAAE,IAAI,QAAQ,MAAMG,EAAE,CAAC,YAAYzE,EAAE,CAAC,KAAK,cAAc,GAAG,KAAK,aAAa,CAAE,EAAC,KAAK,cAAc,CAAE,EAAC,KAAK,iBAAiB,CAAE,EAAC,KAAK,kBAAkB,CAAE,EAAC,KAAK,SAAS,OAAO,KAAK,SAAS,GAAG,KAAK,WAAW,IAAI,IAAI,KAAK,EAAE,OAAO,KAAK,SAASA,EAAEA,EAAE,QAAO,EAAG,EAAE,IAAI,EAAE,KAAK,EAAEA,GAAG,CAAC,MAAMc,EAAEd,EAAEM,EAAEQ,EAAE,OAAOR,aAAa4C,IAAI5C,EAAE,gBAAgB,KAAK,gBAAgCQ,EAAE,OAAlB,eAAwB,KAAK,EAAER,CAAC,EAAmBQ,EAAE,OAAnB,gBAAyB,KAAK,EAAER,CAAC,EAAE,EAAE,MAAMQ,EAAEd,EAAE,SAAQ,EAAGc,EAAE,iBAAiB,cAAc,KAAK,CAAC,EAAEA,EAAE,iBAAiB,eAAe,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,QAAO,EAAG,EAAE,IAAI,EAAE,MAAMd,EAAE,KAAK,SAAS,SAAQ,EAAGA,EAAE,oBAAoB,cAAc,KAAK,CAAC,EAAEA,EAAE,oBAAoB,eAAe,KAAK,CAAC,EAAE,UAAU,KAAK,KAAK,WAAW,EAAE,QAAO,CAAE,CAAC,OAAO,UAAU,CAAE,CAAA,YAAY,CAAC,OAAO,KAAK,QAAQ,CAAC,YAAYA,EAAE,CAAC,OAAO,KAAK,SAASA,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,MAAM,KAAK,KAAK,UAAU,CAAC,CAAC,EAAEA,EAAE,CAAC,OAAO,KAAK,WAAW,IAAIA,CAAC,EAAE,IAAI,CAAC,EAAEA,EAAE,CAAC,OAAO,KAAK,WAAW,OAAOA,CAAC,EAAE,IAAI,CAAC,QAAQA,EAAEc,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQd,EAAEc,EAAE,CAAC,OAAO,IAAI,CAAC,SAASd,EAAEc,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC2D,GAAG,eAAe,cAAO,KAAQ,CAAC,YAAYzE,EAAE,CAAC,KAAK,QAAQ,OAAO,KAAK,QAAQ,CAAA,EAAG,KAAK,YAAY,CAAA,EAAG,KAAK,kBAAkB,CAAA,EAAG,KAAK,UAAU,CAAA,EAAG,KAAK,SAAS,CAAA,EAAG,KAAK,aAAa,IAAI,IAAI,KAAK,UAAU,CAAE,EAAC,KAAK,OAAO,CAAE,EAAC,KAAK,QAAQ,CAAE,EAAC,KAAK,MAAM,CAAE,EAAC,KAAK,MAAM,CAAE,EAAC,KAAK,WAAW,CAAE,EAAC,KAAK,OAAO,CAAE,EAAC,KAAK,QAAQA,CAAC,CAAC,eAAeA,EAAEc,EAAE,CAAC,KAAK,aAAa,IAAId,EAAEc,CAAC,EAAWA,EAAE,WAAX,QAAqBd,EAAE,YAAYc,EAAE,QAAQ,EAAWA,EAAE,SAAX,QAAmBd,EAAE,UAAUc,EAAE,MAAM,EAAE,MAAMR,EAAE,KAAK,QAAQ,KAAK,SAASQ,EAAE,KAAK,EAAE,GAAYR,EAAE,UAAX,OAAmB,OAAO,MAAMI,EAAE,KAAK,QAAQ,KAAK,SAASJ,EAAE,OAAO,EAAWI,EAAE,YAAX,QAAsBV,EAAE,aAAaU,EAAE,SAAS,EAAWA,EAAE,YAAX,QAAsBV,EAAE,aAAaU,EAAE,SAAS,EAAWA,EAAE,QAAX,QAAkBV,EAAE,SAASU,EAAE,KAAK,EAAWA,EAAE,QAAX,QAAkBV,EAAE,SAASU,EAAE,KAAK,CAAC,CAAC,EAAC,MAAMgE,GAAG,CAAC,OAAOlD,GAAE,iBAAiB,WAAW,GAAG,aAAa,CAAE,CAAA,SAAE,KAAQ,CAAC,OAAO,KAAKxB,EAAEc,EAAE4D,GAAG,CAAC,MAAMpE,EAAEwD,EAAG,CAAA,EAAGY,GAAG5D,CAAC,EAAE,CAAC,KAAKJ,CAAC,EAAEV,EAAE,EAAG,IAAIsE,KAAI,UAAUhE,EAAE,MAAM,EAAE,KAAK,SAASN,EAAEM,CAAC,EAAE,MAAMxD,EAAE,IAAI6H,GAAG3E,CAAC,EAAEQ,EAAEE,EAAE,MAAM5C,EAAE,EAAE,UAAU,WAAW0C,EAAE,YAAY1C,EAAE,UAAU0C,EAAE,WAAWA,EAAE,SAAS1C,EAAE,OAAO0C,EAAE,QAAiBE,EAAE,SAAX,QAAmB,EAAE,UAAU,UAAUoD,EAAG,GAAGpD,EAAE,MAAM,CAAC,EAAE,MAAMhB,EAAEgB,EAAE,gBAAgB,GAAGb,EAAEa,EAAE,oBAAoB,CAAA,EAAG,UAAUV,KAAKM,EAAE,WAAW,GAAGZ,EAAE,SAASM,EAAE,cAAc,EAAE,CAAC,MAAMc,EAAE,EAAE,gBAAgBd,CAAC,EAAE,YAAYH,EAAE,SAASG,EAAE,cAAc,CAAC,EAAE,UAAUA,KAAKc,EAAE,iBAAiBA,EAAE,QAAQd,EAAEM,EAAE,aAAaN,CAAC,CAAC,CAAC,CAAC,MAAMjD,EAAE2D,EAAE,SAAS,CAAE,EAAC,EAAE,UAAU,qBAAqB,OAAOV,GAAGA,EAAE,aAAa,SAASJ,EAAE,MAAM,CAAC,EAAE,QAAQI,GAAGA,EAAE,QAAQlD,EAAE8C,EAAE,MAAM,CAAC,EAAE9C,EAAE,QAAQC,EAAE,IAAIiD,GAAG,CAAC,MAAMc,EAAE,EAAE,aAAad,EAAE,IAAI,EAAE,OAAOA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAEA,EAAE,KAASA,EAAE,IAAI,QAAQ,IAAI,IAAtB,GAAyBc,EAAE,OAAOd,EAAE,GAAG,EAAEc,CAAC,CAAC,EAAEhE,EAAE,mBAAmB4D,EAAE,aAAa,CAAA,GAAI,IAAI,CAACI,EAAER,IAAI,CAAC,GAAG,CAACxD,EAAE,YAAYwD,CAAC,EAAE,CAAC,MAAMI,EAAEV,EAAE,KAAK,QAAQc,EAAE,MAAM,EAAEhE,EAAE,YAAYwD,CAAC,EAAEO,EAAE,OAAOH,EAAE,IAAIV,EAAE,UAAUU,EAAE,GAAG,EAAEV,EAAE,UAAUL,EAAC,EAAEmB,EAAE,YAAY,EAAEA,EAAE,UAAU,CAAC,CAAC,OAAOhE,EAAE,QAAQgE,EAAE,MAAM,CAAC,CAAC,EAAE,MAAMhB,EAAEY,EAAE,WAAW,CAAE,EAAC5D,EAAE,UAAUgD,EAAE,IAAIE,GAAG,CAAC,MAAMc,EAAE,EAAE,eAAed,EAAE,KAAKlD,EAAE,kBAAkBkD,EAAE,UAAU,CAAC,EAAE,QAAQA,EAAE,IAAI,EAAE,OAAOA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAWA,EAAE,aAAX,QAAuBc,EAAE,cAAcd,EAAE,UAAU,EAAWA,EAAE,aAAX,QAAuBc,EAAE,SAAS8D,GAAG5E,EAAElD,CAAC,CAAC,EAAEgE,CAAC,CAAC,EAAE,MAAMf,EAAEW,EAAE,QAAQ,CAAA,EAAGR,EAAEQ,EAAE,UAAU,CAAE,EAAC,EAAE,UAAU,qBAAqB,OAAOV,GAAGA,EAAE,aAAa,SAASJ,EAAE,OAAO,CAAC,EAAE,QAAQI,GAAGA,EAAE,QAAQlD,EAAE8C,EAAE,OAAO,CAAC,EAAE9C,EAAE,SAASiD,EAAE,IAAIe,GAAG,CAAC,MAAMR,EAAE,EAAE,cAAcQ,EAAE,IAAI,EAAE,GAAGA,EAAE,QAAQR,EAAE,UAAUQ,EAAE,MAAM,EAAWA,EAAE,aAAX,OAAsB,CAAC,MAAMP,EAAEG,EAAE,YAAYI,EAAE,UAAU,EAAEhE,EAAEkD,EAAE,KAAK,QAAQO,EAAE,MAAM,EAAEC,EAAED,EAAE,YAAY,EAAEzC,GAAGhB,EAAE,IAAIkD,EAAE,UAAUlD,EAAE,GAAG,EAAEkD,EAAE,UAAUL,EAAC,GAAG,MAAMa,EAAEA,EAAED,EAAE,UAAU,EAAED,EAAE,SAASxC,CAAC,CAAC,MAAegD,EAAE,MAAX,SAAiBR,EAAE,SAASN,EAAE,UAAUc,EAAE,GAAG,CAAC,EAAMA,EAAE,IAAI,QAAQ,IAAI,IAAtB,GAAyBR,EAAE,OAAOQ,EAAE,GAAG,GAAG,GAAYA,EAAE,WAAX,OAAoBR,EAAE,YAAYQ,EAAE,QAAQ,UAAUA,EAAE,IAAI,CAAC,MAAMd,EAAEmB,GAAE,UAAUL,EAAE,GAAG,EAAER,EAAE,YAAYW,GAAE,oBAAoBjB,CAAC,CAAC,CAAC,CAAC,OAAOM,CAAC,CAAC,EAAExD,EAAE,WAAW4D,EAAE,WAAW,CAAE,GAAE,IAAIV,GAAG,CAAC,MAAMc,EAAE,EAAE,eAAed,EAAE,IAAI,EAAEA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAWA,EAAE,YAAX,QAAsBc,EAAE,aAAad,EAAE,SAAS,EAAWA,EAAE,cAAX,QAAwBc,EAAE,eAAed,EAAE,WAAW,EAAWA,EAAE,cAAX,QAAwBc,EAAE,eAAed,EAAE,WAAW,EAAE,MAAMM,EAAEN,EAAE,sBAAsB,GAAG,GAAYM,EAAE,kBAAX,QAA4BQ,EAAE,mBAAmBR,EAAE,eAAe,EAAWN,EAAE,iBAAX,QAA2Bc,EAAE,kBAAkBd,EAAE,cAAc,EAAWM,EAAE,iBAAX,QAA2BQ,EAAE,kBAAkBR,EAAE,cAAc,EAAWA,EAAE,kBAAX,QAA4BQ,EAAE,mBAAmBR,EAAE,eAAe,EAAWA,EAAE,mBAAX,OAA4B,CAAC,MAAMN,EAAEM,EAAE,iBAAiBQ,EAAE,oBAAoBhE,EAAE,SAASoD,EAAEF,EAAE,KAAK,EAAE,MAAM,CAAC,EAAElD,EAAE,eAAegE,EAAE,0BAA0Bd,CAAC,CAAC,CAAC,GAAYA,EAAE,kBAAX,OAA2B,CAAC,MAAMM,EAAEN,EAAE,gBAAgBc,EAAE,mBAAmBhE,EAAE,SAASoD,EAAEI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAExD,EAAE,eAAegE,EAAE,yBAAyBR,CAAC,CAAC,CAAC,GAAYN,EAAE,gBAAX,OAAyB,CAAC,MAAMM,EAAEN,EAAE,cAAcc,EAAE,iBAAiBhE,EAAE,SAASoD,EAAEI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAExD,EAAE,eAAegE,EAAE,uBAAuBR,CAAC,EAAWN,EAAE,cAAc,QAAzB,QAAgCc,EAAE,eAAed,EAAE,cAAc,KAAK,CAAC,CAAC,GAAYA,EAAE,mBAAX,OAA4B,CAAC,MAAMM,EAAEN,EAAE,iBAAiBc,EAAE,oBAAoBhE,EAAE,SAASoD,EAAEI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAExD,EAAE,eAAegE,EAAE,wBAAuB,EAAGR,CAAC,EAAWN,EAAE,iBAAiB,WAA5B,QAAsCc,EAAE,qBAAqBd,EAAE,iBAAiB,QAAQ,CAAC,CAAC,GAAYM,EAAE,2BAAX,OAAoC,CAAC,MAAMN,EAAEM,EAAE,yBAAyBQ,EAAE,4BAA4BhE,EAAE,SAASoD,EAAEF,EAAE,KAAK,EAAE,MAAM,CAAC,EAAElD,EAAE,eAAegE,EAAE,gCAAiC,EAACd,CAAC,CAAC,CAAC,OAAOc,CAAC,CAAC,EAAE,MAAMX,EAAEO,EAAE,QAAQ,CAAE,EAAC,EAAE,UAAU,qBAAqB,OAAOV,GAAGA,EAAE,aAAa,SAASJ,EAAE,SAAS,CAAC,EAAE,QAAQI,GAAGA,EAAE,QAAQlD,EAAE8C,EAAE,SAAS,CAAC,EAAE9C,EAAE,OAAOqD,EAAE,IAAIH,GAAG,CAAC,MAAMc,EAAE,EAAE,WAAWd,EAAE,IAAI,EAAE,OAAOA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAWA,EAAE,UAAX,QAAoBc,EAAE,WAAWd,EAAE,OAAO,GAAGA,EAAE,YAAY,IAAI,QAAQM,GAAG,CAAC,MAAMI,EAAE,EAAE,gBAAiB,EAACJ,EAAE,QAAQI,EAAE,UAAUJ,EAAE,MAAM,EAAWA,EAAE,WAAX,QAAqBI,EAAE,YAAY5D,EAAE,UAAUwD,EAAE,QAAQ,CAAC,EAAWA,EAAE,OAAX,QAAiBI,EAAE,QAAQJ,EAAE,IAAI,EAAE,SAAS,CAACN,EAAEc,CAAC,IAAI,OAAO,QAAQR,EAAE,YAAY,CAAA,CAAE,EAAEI,EAAE,aAAaV,EAAElD,EAAE,UAAUgE,CAAC,CAAC,EAAWR,EAAE,UAAX,QAAoBI,EAAE,WAAW5D,EAAE,UAAUwD,EAAE,OAAO,CAAC,EAAE,MAAME,EAAER,EAAE,QAAQA,EAAE,OAAO,aAAa,IAAIM,EAAE,SAAS,CAAE,GAAE,QAAQ,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAEE,EAAEM,CAAC,GAAGA,EAAE,SAAU,EAAChD,EAAE,EAAE,sBAAsBwC,CAAC,EAAE,SAAS,CAACQ,EAAER,CAAC,IAAI,OAAO,QAAQN,CAAC,EAAElC,EAAE,aAAagD,EAAEhE,EAAE,UAAUwD,CAAC,CAAC,EAAEI,EAAE,UAAU5C,CAAC,CAAC,CAAC,EAAEgD,EAAE,aAAaJ,CAAC,CAAC,CAAC,EAAEI,CAAC,CAAC,EAAEhE,EAAE,SAAS4D,EAAE,SAAS,CAAA,GAAI,IAAIV,GAAG,CAAC,MAAMc,EAAE,EAAE,aAAad,EAAE,IAAI,EAAE,QAAQA,EAAE,IAAI,EAAE,GAAGA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAEA,EAAE,OAAOiD,GAAG,KAAK,YAAY,CAAC,MAAM3C,EAAEN,EAAE,YAAYc,EAAE,QAAQR,EAAE,IAAI,EAAEQ,EAAE,SAASR,EAAE,KAAK,EAAWA,EAAE,OAAX,QAAiBQ,EAAE,QAAQR,EAAE,IAAI,EAAWA,EAAE,cAAX,QAAwBQ,EAAE,eAAeR,EAAE,WAAW,CAAC,KAAK,CAAC,MAAMA,EAAEN,EAAE,aAAac,EAAE,SAASR,EAAE,KAAK,EAAE,QAAQA,EAAE,IAAI,EAAE,QAAQA,EAAE,IAAI,EAAE,QAAQA,EAAE,IAAI,CAAC,CAAC,OAAOQ,CAAC,CAAC,EAAE,MAAMV,EAAEM,EAAE,OAAO,CAAA,EAAG,EAAE,QAAS,EAAC,mBAAoB,EAAC,OAAOV,GAAGA,EAAE,aAAa,SAASJ,EAAE,IAAI,CAAC,EAAE,QAAQI,GAAGA,EAAE,QAAQlD,EAAE8C,EAAE,IAAI,CAAC,EAAE9C,EAAE,MAAMsD,EAAE,IAAIJ,GAAG,CAAC,MAAMc,EAAE,EAAE,WAAWd,EAAE,IAAI,EAAE,GAAGA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAWA,EAAE,cAAX,QAAwBc,EAAE,eAAed,EAAE,WAAW,EAAWA,EAAE,WAAX,QAAqBc,EAAE,YAAYd,EAAE,QAAQ,EAAWA,EAAE,QAAX,QAAkBc,EAAE,SAASd,EAAE,KAAK,EAAWA,EAAE,SAAX,OAAkB,CAAC,MAAMM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEH,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEmB,EAAE,UAAU1B,EAAE,OAAOM,EAAEI,EAAEH,CAAC,EAAEO,EAAE,eAAeR,CAAC,EAAEQ,EAAE,YAAYJ,CAAC,EAAEI,EAAE,SAASP,CAAC,CAAC,CAAC,OAAgBP,EAAE,UAAX,QAAoBc,EAAE,WAAWd,EAAE,OAAO,EAAEc,CAAC,CAAC,EAAEhE,EAAE,OAAO4D,EAAE,OAAO,CAAE,GAAE,IAAIV,GAAG,CAAC,MAAMc,EAAE,EAAE,WAAWd,EAAE,IAAI,EAAEA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAWA,EAAE,sBAAX,QAAgCc,EAAE,uBAAuBhE,EAAE,UAAUkD,EAAE,mBAAmB,CAAC,EAAWA,EAAE,WAAX,QAAqBc,EAAE,YAAYhE,EAAE,MAAMkD,EAAE,QAAQ,CAAC,EAAE,UAAUM,KAAKN,EAAE,OAAOc,EAAE,SAAShE,EAAE,MAAMwD,CAAC,CAAC,EAAE,OAAOQ,CAAC,CAAC,EAAEV,EAAE,IAAI,CAACJ,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,MAAMgE,CAAC,GAAGd,EAAE,UAAU,CAAE,GAAE,QAAQA,GAAGM,EAAE,SAASxD,EAAE,MAAMkD,CAAC,CAAC,CAAC,EAAWA,EAAE,OAAX,QAAiBM,EAAE,QAAQxD,EAAE,OAAOkD,EAAE,IAAI,CAAC,EAAWA,EAAE,SAAX,QAAmBM,EAAE,UAAUxD,EAAE,QAAQkD,EAAE,MAAM,CAAC,EAAWA,EAAE,OAAX,QAAiBM,EAAE,QAAQxD,EAAE,MAAMkD,EAAE,IAAI,CAAC,CAAC,CAAC,EAAElD,EAAE,YAAY4D,EAAE,YAAY,IAAI,IAAIV,GAAG,CAAC,MAAMc,EAAE,EAAE,gBAAgBd,EAAE,IAAI,EAAEA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,EAAE,MAAMM,GAAGN,EAAE,UAAU,CAAA,GAAI,IAAIA,GAAG,CAAC,MAAMM,EAAE,EAAE,yBAAyB,SAASxD,EAAE,UAAUkD,EAAE,KAAK,CAAC,EAAE,UAAUlD,EAAE,UAAUkD,EAAE,MAAM,CAAC,EAAE,iBAAiBA,EAAE,eAAe8C,GAAG,cAAc,MAAM,EAAE,OAAO9C,EAAE,QAAQM,EAAE,UAAUN,EAAE,MAAM,EAAEc,EAAE,WAAWR,CAAC,EAAEA,CAAC,CAAC,EAAE,OAAON,EAAE,UAAU,CAAA,GAAI,QAAQA,GAAG,CAAC,MAAMU,EAAE,EAAE,uBAAwB,EAAC,WAAWJ,EAAEN,EAAE,OAAO,CAAC,EAAE,cAAcA,EAAE,OAAO,IAAI,EAAWA,EAAE,OAAO,OAAlB,QAAwBU,EAAE,cAAc5D,EAAE,MAAMkD,EAAE,OAAO,IAAI,CAAC,EAAEA,EAAE,QAAQU,EAAE,UAAUV,EAAE,MAAM,EAAEc,EAAE,WAAWJ,CAAC,CAAC,CAAC,EAAEI,CAAC,CAAC,EAAE,MAAMT,EAAEK,EAAE,QAAQ,GAAG,OAAO,EAAE,QAAS,EAAC,mBAAoB,EAAC,OAAOV,GAAGA,EAAE,aAAa,SAASJ,EAAE,KAAK,CAAC,EAAE,QAAQI,GAAGA,EAAE,QAAQlD,EAAE8C,EAAE,KAAK,CAAC,EAAE9C,EAAE,OAAOuD,EAAE,IAAIL,GAAG,CAAC,MAAMc,EAAE,EAAE,YAAYd,EAAE,IAAI,EAAE,OAAOA,EAAE,QAAQc,EAAE,UAAUd,EAAE,MAAM,GAAGA,EAAE,OAAO,IAAI,IAAIA,GAAGlD,EAAE,MAAMkD,CAAC,CAAC,EAAE,QAAQA,GAAGc,EAAE,SAASd,CAAC,CAAC,EAAEc,CAAC,CAAC,EAAWJ,EAAE,QAAX,QAAkB,EAAE,QAAO,EAAG,gBAAgB5D,EAAE,OAAO4D,EAAE,KAAK,CAAC,EAAE,EAAE,QAAS,EAAC,mBAAoB,EAAC,QAAQV,GAAGA,EAAE,KAAKlD,CAAC,CAAC,EAAEgD,EAAE,QAAQ,CAACE,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,UAAUgE,CAAC,EAAEJ,EAAE,CAAC,CAACV,EAAE,OAAOO,EAAE,CAACP,EAAE,YAAY,CAACM,EAAE,SAAQ,GAAII,GAAGH,IAAID,EAAE,UAAU,EAAE,EAAE,SAAS,SAASN,EAAEc,EAAE,CAAC,MAAMR,EAAEL,GAAED,EAAE,aAAa,EAAEU,EAAEgC,EAAE,eAAe1C,EAAE,IAAI,EAAE,IAAIO,EAAEA,EAAWP,EAAE,aAAX,OAAsB4E,GAAG5E,EAAEc,CAAC,EAAE,IAAIR,EAAEN,EAAE,MAAMU,CAAC,EAAE,MAAM5D,EAAEkD,EAAE,OAAO,GAAG,CAAClD,EAAE,OAAOyD,EAAE,MAAMC,EAAE1D,EAAE,MAAMgB,EAAEgG,EAAG,GAAG9D,EAAElD,EAAE,QAAQ,CAAC,MAAM0D,EAAE,KAAK,QAAQ,CAAC,EAAEd,EAAEoE,EAAG,CAAA,EAAG9D,EAAElD,EAAE,OAAO,CAAC,MAAM0D,CAAC,CAAC,EAAEb,EAAEiF,GAAG9G,EAAEgD,CAAC,EAAElB,EAAEgF,GAAGlF,EAAEoB,CAAC,EAAE,QAAQd,EAAE,EAAEA,EAAElC,EAAE,MAAMkC,IAAI,QAAQc,EAAE,EAAEA,EAAEJ,EAAEI,IAAIP,EAAEZ,EAAEK,CAAC,EAAEU,EAAEI,CAAC,EAAElB,EAAEI,EAAEU,EAAEI,CAAC,EAAE,OAAOP,CAAC,EAAEP,EAAElD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,SAASkD,EAAEc,EAAE,CAAC,MAAMR,EAAEN,EAAE,KAAK,GAAWM,EAAE,MAAM,UAAhB,MAAwB,MAAM,IAAI,MAAM,8BAA8BA,EAAE,MAAM,OAAO,IAAI,EAAE,GAAGA,EAAE,oBAAmB,UAAUN,KAAKM,EAAE,mBAAmB,GAAG,CAACQ,EAAE,WAAW,KAAKA,GAAGA,EAAE,iBAAiBd,CAAC,EAAE,MAAM,IAAI,MAAM,gCAAgCA,CAAC,IAAI,EAAE,GAAGM,EAAE,eAAe,UAAUN,KAAKM,EAAE,eAAeQ,EAAE,WAAW,KAAKA,GAAGA,EAAE,iBAAiBd,CAAC,GAAGc,EAAE,OAAO,KAAK,gCAAgCd,CAAC,IAAI,CAAC,CAAC,EAAC,SAAS4E,GAAG5E,EAAE,EAAE,CAAC,MAAMM,EAAE,EAAE,YAAYN,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,KAAK,YAAYA,EAAE,UAAU,EAAEO,EAAEN,GAAED,EAAE,aAAa,EAAElD,EAAE4F,EAAE,eAAe1C,EAAE,IAAI,EAAEQ,EAAED,EAAE,kBAAkB,GAAY,EAAE,aAAX,QAAuB,EAAE,aAAazD,EAAE0D,EAAE,OAAO,SAASR,EAAEc,EAAE,CAAC,MAAMR,EAAEQ,EAAE,YAAYd,EAAE,UAAU,EAAEU,EAAEI,EAAE,QAAQ,KAAK,YAAYd,EAAE,UAAU,EAAEO,EAAEN,GAAED,EAAE,aAAa,EAAElD,EAAE4F,EAAE,eAAe1C,EAAE,IAAI,EAAEQ,EAAED,EAAE,kBAAkBzC,EAAEkC,EAAE,YAAY,EAAEN,EAAE,IAAIa,EAAEP,EAAE,MAAMlD,CAAC,EAAE6C,EAAE,IAAI,SAASW,EAAE,OAAOA,EAAE,WAAWA,EAAE,UAAU,EAAEV,EAAEc,EAAE,WAAW,QAAQI,EAAE,EAAEA,EAAEd,EAAE,MAAMc,IAAI,QAAQR,EAAE,EAAEA,EAAExD,EAAEwD,IAAI,CAAC,MAAMI,EAAE5C,EAAEgD,EAAElB,EAAEU,EAAEE,EAAE,IAAID,EAAE,OAAOP,EAAE,eAAe,KAAK0C,EAAE,cAAc,MAAMnC,EAAEZ,EAAE,WAAWe,EAAE,EAAE,EAAE,MAAM,KAAKgC,EAAE,cAAc,aAAanC,EAAEZ,EAAE,UAAUe,EAAE,EAAE,EAAE,MAAM,KAAKgC,EAAE,cAAc,eAAenC,EAAEZ,EAAE,UAAUe,EAAE,EAAE,EAAE,MAAM,KAAKgC,EAAE,cAAc,cAAcnC,EAAEZ,EAAE,SAASe,CAAC,EAAE,MAAM,KAAKgC,EAAE,cAAc,MAAMnC,EAAEZ,EAAE,SAASe,EAAE,EAAE,EAAE,MAAM,KAAKgC,EAAE,cAAc,KAAKnC,EAAEZ,EAAE,QAAQe,CAAC,EAAE,MAAM,QAAQ,MAAM,IAAI,MAAM,6BAA6BV,EAAE,aAAa,IAAI,CAAC,CAACN,EAAEoB,EAAEhE,EAAEwD,CAAC,EAAEC,CAAC,CAAC,OAAOb,CAAC,EAAEM,EAAE,CAAC,EAAE,MAAMlC,EAAEwC,EAAE,YAAYN,EAAE,YAAY,GAAG,OAAO,IAAIO,EAAED,EAAE,OAAO,MAAMxC,EAAEA,EAAEkC,EAAE,MAAMlD,EAAE0D,CAAC,CAAC,CAAC,CAAC,IAAIqE,IAAI,SAAS7E,EAAE,CAACA,EAAEA,EAAE,aAAa,KAAK,EAAE,eAAeA,EAAEA,EAAE,qBAAqB,KAAK,EAAE,sBAAsB,GAAE6E,KAAKA,GAAG,CAAE,EAAC,EAAE,MAAMC,EAAE,CAAC,YAAY9E,EAAEc,EAAER,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,OAAO,KAAK,QAAQ,OAAO,KAAK,iBAAiB,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,iBAAiB,GAAG,KAAK,iBAAiB,IAAI,IAAI,KAAK,yBAAyB,IAAI,IAAI,KAAK,cAAc,GAAG,KAAK,mBAAmB,OAAO,KAAK,kBAAkB,OAAO,KAAK,OAAO,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK,6BAA6B,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,gBAAgB,IAAI,IAAI,KAAK,EAAEN,EAAE,KAAK,QAAQc,EAAE,KAAK,QAAQR,EAAE,MAAMI,EAAEV,EAAE,QAAS,EAAC,EAAEU,EAAE,YAAW,EAAG,OAAO5D,EAAE4D,EAAE,eAAe,OAAO,KAAK,mBAAmB,IAAIqE,GAAG,EAAE,EAAE,IAAIzE,EAAE,UAAU,QAAQ,EAAE,KAAK,kBAAkB,IAAIyE,GAAGjI,EAAE,EAAEgE,GAAG,SAASd,EAAEc,EAAE,CAAC,MAAMR,EAAEN,EAAE,SAAU,EAAC,gBAAgBc,CAAC,EAAE,KAAKA,GAAGA,EAAE,cAAcd,EAAE,QAAO,CAAE,EAAE,OAAOM,EAAEA,EAAE,QAAO,EAAG,QAAQ,YAAY,EAAE,EAAE,EAAE,EAAEN,EAAEc,CAAC,GAAGR,EAAE,UAAU,SAAS,EAAE,KAAK,OAAON,EAAE,UAAW,CAAA,CAAC,qBAAqBA,EAAEc,EAAE,CAAC,MAAMR,EAAE,CAAC,UAAUQ,EAAE,aAAc,GAAE,OAAO,UAAUA,EAAE,gBAAgB,OAAO,MAAMA,EAAE,SAAU,EAAC,MAAMA,EAAE,SAAQ,CAAE,EAAEJ,EAAE,KAAK,UAAUJ,CAAC,EAAE,KAAK,mBAAmB,IAAII,CAAC,IAAI,KAAK,mBAAmB,IAAIA,EAAE,KAAK,QAAQ,KAAK,SAAS,MAAM,EAAE,KAAK,QAAQ,KAAK,SAAS,KAAKJ,CAAC,GAAG,MAAM,EAAE,CAAC,OAAO,KAAK,cAAc,IAAIN,CAAC,EAAE,QAAQ,KAAK,mBAAmB,IAAIU,CAAC,CAAC,EAAE5D,EAAE,KAAK,UAAU,CAAC,EAAE,KAAK,mBAAmB,IAAIA,CAAC,IAAI,KAAK,mBAAmB,IAAIA,EAAE,KAAK,QAAQ,KAAK,SAAS,MAAM,EAAE,KAAK,QAAQ,KAAK,SAAS,KAAK,CAAC,GAAG,MAAM0D,EAAE,CAAC,MAAM,KAAK,mBAAmB,IAAI1D,CAAC,CAAC,EAAE,OAAWgE,EAAE,gBAAN,IAAsBN,EAAE,SAASM,EAAE,eAAe,OAAO,KAAKA,EAAE,UAAS,CAAE,EAAE,OAAO,IAAIN,EAAE,OAAOM,EAAE,UAAW,GAAE,KAAK,kBAAkB,IAAIA,EAAEN,CAAC,EAAEA,CAAC,CAAC,kBAAkBR,EAAE,CAAC,MAAMc,EAAE,CAAE,EAAC,OAAOd,EAAE,QAAO,IAAKc,EAAE,KAAKd,EAAE,QAAO,GAAI,OAAO,KAAKA,EAAE,WAAW,EAAE,OAAO,IAAIc,EAAE,OAAOd,EAAE,UAAS,GAAIc,CAAC,CAAC,kBAAkBd,EAAE,CAAC,MAAMc,EAAE,KAAK,kBAAkBd,CAAC,EAAE,OAAOc,EAAE,KAAKd,EAAE,QAAS,EAACc,EAAE,cAAcd,EAAE,iBAAkB,EAACc,EAAE,MAAMd,EAAE,SAAU,EAAC,KAAK,EAAE,SAAQ,EAAG,gBAAgBA,CAAC,EAAE,KAAKA,GAAkBA,EAAE,QAAS,IAA1B,cAAyCA,EAAE,cAAa,EAAG,MAA/B,YAA8CA,EAAE,QAAO,IAAnB,OAAqB,IAAIc,EAAE,IAAId,EAAE,OAAO,CAAE,CAAA,EAAE,IAAI,KAAK,MAAM,EAAEc,EAAE,IAAId,EAAE,OAAO,CAAA,CAAE,EAAE,IAAI,KAAK,MAAM,GAAGA,EAAE,cAAe,IAAGc,EAAE,WAAWd,EAAE,cAAe,GAAEc,CAAC,CAAC,gBAAgBd,EAAEc,EAAER,EAAE,CAAC,GAAG,KAAK,QAAQ,SAASP,GAAE,IAAI,KAAK,iBAAiB,KAAKe,CAAC,EAAEd,EAAE,WAAW,KAAK,QAAQ,KAAK,YAAY,OAAO,KAAK,QAAQ,KAAK,YAAY,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,WAAWc,EAAE,UAAU,CAAC,MAAM,CAAC,MAAMJ,EAAEO,GAAE,oBAAoBX,EAAE,YAAa,CAAA,EAAEN,EAAE,IAAI,KAAK,kBAAkB,UAAUM,EAAEI,CAAC,EAAE,KAAK,QAAQ,UAAUV,EAAE,GAAG,EAAEc,CAAC,CAAC,CAAC,iBAAiBd,EAAE,CAAC,MAAMc,EAAE,KAAK,EAAE,IAAId,CAAC,EAAE,GAAGc,EAAE,OAAOA,EAAE,GAAGd,EAAE,UAAW,EAAC,OAAOjD,EAAE,OAAO,UAAU+D,KAAK,KAAK,EAAE,SAAQ,EAAG,gBAAgBd,CAAC,EAAE,CAAC,KAAK,CAAC,MAAMA,CAAC,EAAEc,EAAE,cAAa,EAAG,GAAGd,EAAE,OAAOA,EAAEc,EAAE,UAAW,EAAC,eAAelB,EAAE,MAAM,KAAK,OAAO,KAAK,wCAAwCkB,EAAE,QAAS,CAAA,IAAI,CAAC,CAAC,OAAO/D,EAAE,KAAK,CAAC,wBAAwBiD,EAAEc,EAAE,CAAC,MAAMR,EAAE,KAAK,EAAE,IAAIN,CAAC,EAAE,GAAGM,GAAGA,IAAIQ,EAAE,MAAM,IAAI,MAAM,wBAAwBR,CAAC,0BAA0BQ,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,IAAId,EAAEc,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAMd,EAAE,CAAE,EAAC,SAAS,CAACc,EAAER,CAAC,IAAI,MAAM,KAAK,KAAK,EAAE,SAAS,EAAEN,EAAEM,CAAC,EAAEN,EAAEM,CAAC,GAAG,CAAE,EAACN,EAAEM,CAAC,EAAE,KAAKQ,CAAC,EAAE,OAAOd,CAAC,CAAC,CAAC8E,GAAG,iBAAiBD,GAAGC,GAAG,gBAAgB/H,EAAE+H,GAAG,gBAAgB,CAAC,CAAC/H,EAAE,YAAY,EAAE8H,GAAG,aAAa,CAAC9H,EAAE,oBAAoB,EAAE8H,GAAG,oBAAoB,EAAC,IAAAG,GAAC,KAAQ,CAAC,YAAYhF,EAAEc,EAAE,CAAC,KAAK,SAAS,OAAO,KAAK,SAAS,OAAO,KAAK,QAAQ,CAAA,EAAG,KAAK,SAASd,EAAE,KAAK,SAASc,CAAC,CAAC,UAAUd,EAAEc,EAAE,CAAC,GAAGd,EAAE,SAAS,OAAOA,EAAE,SAAS,GAAG,KAAK,SAAS,CAAC,MAAMM,EAAE,KAAK,SAASN,CAAC,EAAE,OAAO,KAAK,QAAQM,CAAC,EAAE,KAAK,QAAQA,CAAC,GAAG,EAAE,GAAGA,CAAC,IAAI,KAAK,QAAQA,CAAC,GAAG,IAAIQ,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,SAASd,CAAC,CAAC,IAAIc,CAAC,EAAE,CAAC,EAAC,KAAK,CAAC,gBAAgBmE,EAAE,EAAEH,GAAG,CAAC,aAAaI,GAAG,eAAeC,GAAG,cAAcC,EAAE,EAAE1C,EAAE,cAAc,IAAA2C,GAAA,KAAQ,CAAC,OAAO,MAAMrF,EAAEc,EAAE,CAAC,MAAMR,EAAEN,EAAE,QAAO,EAAGU,EAAE,CAAC,MAAMoD,EAAG,CAAC,UAAU,kBAAkBpE,EAAC,EAAE,EAAEY,EAAE,SAAU,CAAA,EAAE,OAAOwD,EAAG,CAAA,EAAGxD,EAAE,UAAW,CAAA,CAAC,EAAE,EAAE,CAAC,KAAKI,EAAE,UAAU,EAAE,EAAE5D,EAAE,IAAIgI,GAAG9E,EAAE,EAAEc,CAAC,EAAEN,EAAEM,EAAE,QAAQU,GAAE,iBAAiB1D,EAAE,IAAI,IAAIgD,EAAE,WAAW,IAAId,GAAGA,EAAE,cAAc,CAAC,EAAEjD,EAAEiD,EAAE,QAAO,EAAG,mBAAkB,EAAG,OAAOA,GAAGlC,EAAE,IAAIkC,EAAE,aAAa,CAAC,EAAEF,EAAEE,EAAE,QAAO,EAAG,uBAAsB,EAAG,OAAOA,GAAGlC,EAAE,IAAIkC,EAAE,aAAa,CAAC,EAAEjD,EAAE,OAAOiD,EAAE,QAAO,EAAG,mBAAkB,EAAG,QAAQQ,EAAE,KAAK,uEAAuE,EAAE,UAAUR,KAAKjD,EAAE,UAAUuD,KAAKN,EAAE,kBAAkBA,EAAE,QAAQM,EAAEQ,EAAE,aAAaR,CAAC,CAAC,EAAE,SAASJ,EAAEF,EAAEc,EAAER,EAAEC,EAAE,CAAC,MAAMC,EAAE,GAAG,IAAI1C,EAAE,EAAE,UAAUgD,KAAKd,EAAE,CAAC,MAAMA,EAAElD,EAAE,kBAAkBgE,CAAC,EAAEd,EAAE,WAAWU,EAAE,YAAY,OAAO,MAAMJ,EAAEQ,EAAE,SAAQ,EAAGP,EAAEM,EAAE,IAAIA,EAAE,OAAOP,CAAC,CAAC,EAAEN,EAAE,WAAWlC,EAAEA,GAAGyC,EAAE,WAAWC,EAAE,KAAKD,CAAC,EAAEzD,EAAE,iBAAiB,IAAIgE,EAAEJ,EAAE,UAAU,MAAM,EAAEA,EAAE,UAAU,KAAKV,CAAC,CAAC,CAAC,MAAMN,EAAE,CAAC,OAAOoB,EAAE,WAAWR,EAAE,WAAWO,EAAE,OAAOL,CAAC,EAAE,UAAU,EAAE,OAAOD,IAAIb,EAAE,OAAOa,GAAGG,EAAE,YAAY,KAAKhB,CAAC,EAAE,CAAC,QAAQc,EAAE,WAAW1C,CAAC,CAAC,CAAC,SAASqC,EAAEH,EAAEc,EAAER,EAAE,CAAC,MAAMC,EAAEP,EAAE,CAAC,EAAE,WAAW,IAAIQ,EAAE,EAAE,UAAUM,KAAKd,EAAE,CAAC,MAAMA,EAAElD,EAAE,kBAAkBgE,CAAC,EAAEd,EAAE,WAAWU,EAAE,YAAY,OAAOV,EAAE,WAAWQ,EAAE,MAAMF,EAAEQ,EAAE,eAAc,EAAGP,EAAEO,EAAE,mBAAmBN,GAAGK,EAAE,UAAUP,EAAEC,CAAC,EAAEzD,EAAE,iBAAiB,IAAIgE,EAAEJ,EAAE,UAAU,MAAM,EAAEA,EAAE,UAAU,KAAKV,CAAC,CAAC,CAAC,MAAMlC,EAAEyC,EAAEC,EAAEd,EAAE,IAAI,YAAY5B,CAAC,EAAE6B,EAAE,IAAI,SAASD,CAAC,EAAE,QAAQoB,EAAE,EAAEA,EAAEP,EAAEO,IAAI,CAAC,IAAIR,EAAE,EAAE,UAAUI,KAAKV,EAAE,CAAC,MAAMA,EAAEU,EAAE,eAAgB,EAACH,EAAEG,EAAE,iBAAgB,EAAG5D,EAAE4D,EAAE,mBAAmB5C,EAAE4C,EAAE,SAAU,EAAC,QAAQA,EAAE,EAAEA,EAAEV,EAAEU,IAAI,CAAC,MAAMhB,EAAEoB,EAAEN,EAAEF,EAAEI,EAAEH,EAAEX,EAAE9B,EAAEgD,EAAEd,EAAEU,CAAC,EAAE,OAAO5D,EAAC,CAAE,KAAK4F,EAAE,cAAc,MAAM/C,EAAE,WAAWD,EAAEE,EAAE,EAAE,EAAE,MAAM,KAAK8C,EAAE,cAAc,KAAK/C,EAAE,QAAQD,EAAEE,CAAC,EAAE,MAAM,KAAK8C,EAAE,cAAc,MAAM/C,EAAE,SAASD,EAAEE,EAAE,EAAE,EAAE,MAAM,KAAK8C,EAAE,cAAc,cAAc/C,EAAE,SAASD,EAAEE,CAAC,EAAE,MAAM,KAAK8C,EAAE,cAAc,eAAe/C,EAAE,UAAUD,EAAEE,EAAE,EAAE,EAAE,MAAM,KAAK8C,EAAE,cAAc,aAAa/C,EAAE,UAAUD,EAAEE,EAAE,EAAE,EAAE,MAAM,QAAQ,MAAM,IAAI,MAAM,8BAA8B9C,CAAC,CAAC,CAAC,CAACwD,GAAGO,EAAE,UAAUb,EAAEO,CAAC,CAAC,CAAC,CAAC,OAAOG,EAAE,YAAY,KAAK,CAAC,OAAOI,EAAE,WAAWR,EAAE,WAAWxC,EAAE,WAAW0C,EAAE,OAAOsE,GAAG,iBAAiB,YAAY,CAAC,EAAE,CAAC,WAAWhH,EAAE,QAAQ,CAAC,IAAI,WAAW4B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAEM,EAAEc,EAAER,EAAE,CAAC,MAAMC,EAAE,GAAG,IAAIzC,EAAE,EAAE,MAAM4B,EAAE,IAAI,IAAI,IAAIC,EAAE,KAAU,UAAUmB,KAAKd,EAAE,CAAC,MAAMA,EAAElD,EAAE,kBAAkBgE,CAAC,EAAEJ,EAAE,UAAU,KAAKV,CAAC,EAAElD,EAAE,iBAAiB,IAAIgE,EAAEJ,EAAE,UAAU,OAAO,CAAC,EAAE,MAAMJ,EAAE,CAAE,EAACC,EAAE,CAAA,EAAGzC,EAAE,GAAG8B,EAAE,IAAI,MAAMkB,EAAE,eAAgB,CAAA,EAAE,KAAK,CAAC,EAAE,QAAQd,EAAE,EAAEU,EAAEI,EAAE,WAAWd,EAAEU,EAAEV,IAAI,GAAGc,EAAE,WAAWd,EAAElC,CAAC,EAAE,CAAC4D,EAAE,GAAG5D,EAAE8B,EAAE,CAAC,EAAE,CAACD,EAAE,KAAK,IAAIK,EAAEL,CAAC,EAAEW,EAAE,KAAKN,CAAC,EAAE,QAAQA,GAAE,EAAEA,GAAElC,EAAE,OAAOkC,KAAIO,EAAE,KAAKzC,EAAEkC,EAAC,CAAC,CAAC,CAAC,MAAMH,EAAES,EAAE,OAAOvD,EAAE,CAAC,YAAYiD,EAAE,MAAMH,CAAC,EAAE,GAAGH,EAAE,IAAIoB,EAAE/D,CAAC,EAAM8C,IAAJ,EAAM,SAAS,GAAGA,EAAEiB,EAAE,WAAW,EAAE,CAAC,MAAMd,GAAG,IAAIM,EAAE,OAAOQ,EAAE,YAAY,QAAQ,CAAC,EAAEN,EAAE,KAAK,gDAAgDR,CAAC,4BAA4B,CAAC,CAAC,MAAMF,GAAEG,GAAEa,EAAE,iBAAgB,CAAE,EAAE/D,EAAE,QAAQuD,EAAEvD,EAAE,OAAO,IAAI+C,GAAES,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,SAASZ,CAAC,EAAE,MAAM,CAAC,QAAQY,EAAE,WAAWzC,CAAC,EAAE,MAAM8B,EAAED,EAAE,IAAI,WAAWA,EAAE,MAAM,YAAY,YAAYE,EAAEF,EAAE,IAAIyF,GAAGzF,EAAE,MAAMwF,GAAGD,GAAGnI,EAAE,CAAC,OAAO+D,EAAE,WAAWR,EAAExC,EAAE,WAAW,CAAC,EAAE,UAAUgD,KAAKd,EAAE,CAAC,MAAMA,EAAEN,EAAE,IAAIoB,CAAC,EAAE,GAAOd,EAAE,QAAN,EAAY,SAASA,EAAE,kBAAkBjD,EAAE,WAAW,MAAMuD,EAAEO,EAAE,IAAIA,EAAE,OAAO,IAAIjB,EAAEI,EAAE,OAAO,CAAC,CAAC,EAAEO,EAAE,KAAKD,CAAC,EAAExC,GAAGwC,EAAE,WAAWvD,EAAE,YAAYuD,EAAE,UAAU,CAACI,EAAE,YAAY,KAAK3D,CAAC,EAAE,MAAM+C,EAAEY,EAAE,YAAY,OAAO,EAAEX,EAAE,CAAC,OAAOe,EAAE,WAAWR,EAAExC,EAAE,WAAW,CAAC,EAAE,UAAUgD,KAAKd,EAAE,CAAC,MAAMA,EAAEN,EAAE,IAAIoB,CAAC,EAAE,GAAOd,EAAE,QAAN,EAAY,SAASA,EAAE,iBAAiBD,EAAE,WAAW,MAAMO,EAAEO,EAAE,IAAIA,EAAE,OAAOb,EAAE,MAAM,CAAC,EAAEO,EAAE,KAAKD,CAAC,EAAExC,GAAGwC,EAAE,WAAWP,EAAE,YAAYO,EAAE,UAAU,CAACI,EAAE,YAAY,KAAKX,CAAC,EAAE,MAAMG,EAAEQ,EAAE,YAAY,OAAO,EAAE,UAAUI,KAAKd,EAAE,CAAC,MAAMA,EAAEN,EAAE,IAAIoB,CAAC,EAAMd,EAAE,QAAN,IAAcA,EAAE,YAAY,OAAO,CAAC,MAAMA,EAAE,MAAM,QAAQ,CAAC,WAAWF,EAAE,WAAWE,EAAE,kBAAkB,cAAcH,CAAC,EAAE,OAAO,CAAC,WAAWK,EAAE,WAAWF,EAAE,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQO,EAAE,WAAWzC,CAAC,CAAC,CAAC,MAAMuC,EAAE,IAAI,IAAI,UAAUS,KAAKd,EAAE,SAAU,EAAC,UAAW,EAAC,CAAC,GAAGc,EAAE,UAAS,IAAKR,EAAE,SAAS,MAAMN,EAAEc,EAAE,SAAQ,EAAG,GAAGd,aAAa0C,EAAE,CAAC,MAAMpC,EAAED,EAAE,IAAIL,CAAC,GAAG,CAAA,EAAGM,EAAE,KAAKQ,CAAC,EAAET,EAAE,IAAIL,EAAEM,CAAC,CAAC,CAAC,CAAC,GAAGI,EAAE,UAAU,GAAGA,EAAE,YAAY,GAAGA,EAAE,SAAS,GAAGA,EAAE,SAAS,GAAGA,EAAE,OAAOJ,EAAE,eAAe,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAEA,EAAE,gBAAgBM,EAAE,SAASN,EAAE,eAAe,MAAMU,EAAEV,EAAE,WAAW,OAAOU,GAAG5D,EAAE,gBAAgBwD,EAAEI,EAAEV,CAAC,EAAElD,EAAE,cAAc,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEvD,EAAE,OAAOiD,GAAGA,EAAE,cAAc,SAASJ,EAAE,QAAQ,CAAC,EAAE,QAAQI,GAAGA,EAAE,SAASlD,EAAE8C,EAAE,QAAQ,CAAC,EAAEU,EAAE,gBAAgB,QAAQN,GAAG,CAAC,MAAMc,EAAEhE,EAAE,6BAA6BwD,EAAExD,EAAE,gBAAgB,GAAGA,EAAE,iBAAiB,IAAIkD,CAAC,EAAE,OAAO,MAAMU,EAAEL,EAAE,IAAIL,CAAC,GAAG,GAAGO,EAAEzD,EAAE,iBAAiBkD,CAAC,EAAE,GAAGlD,EAAE,wBAAwBkD,EAAEO,CAAC,EAAEO,EAAE,IAAIP,CAAC,EAAE,CAAC,MAAMO,EAAEJ,EAAE,CAAC,EAAE,YAAYH,EAAED,EAAE,IAAIQ,CAAC,GAAG,IAAI,IAAIP,EAAE,IAAIP,CAAC,EAAEM,EAAE,IAAIQ,EAAEP,CAAC,CAAC,CAAC,CAAC,EAAExD,EAAE,OAAOiD,GAAGA,EAAE,cAAc,SAASJ,EAAE,MAAM,CAAC,EAAE,QAAQI,GAAGA,EAAE,SAASlD,EAAE8C,EAAE,MAAM,CAAC,GAAGU,EAAE,cAAe,EAAC,OAAO,GAAGA,EAAE,aAAc,EAAC,OAAO,GAAGxD,EAAE,iBAAiB,KAAK,IAAQwD,EAAE,YAAW,EAAG,SAApB,EAA2B,MAAM,IAAI,MAAM,6DAA6D,EAAEI,EAAE,QAAQ,GAAGJ,EAAE,YAAW,EAAG,QAAQ,CAACN,EAAEM,IAAI,CAAC,MAAME,EAAE1D,EAAE,kBAAkBkD,CAAC,EAAElC,EAAEhB,EAAE,6BAA6B4C,EAAE5C,EAAE,gBAAgB8C,EAAEI,EAAE,cAAc,OAAOA,GAAGA,aAAa0C,CAAC,EAAE3F,EAAE,IAAI,IAAI6C,CAAC,EAAEE,EAAE,GAAGG,EAAES,EAAE,QAAQ,OAAO,IAAI,EAAE,EAAE,MAAMD,EAAE3D,EAAE,0BAA0B,UAAUkD,KAAKS,EAAE,GAAG3C,EAAE,IAAIkC,CAAC,EAAE,UAAUM,KAAK,MAAM,KAAKZ,EAAE,OAAQ,CAAA,EAAE,CAAC,MAAMgB,EAAE,MAAM,KAAKJ,CAAC,EAAE,OAAON,GAAGjD,EAAE,IAAIiD,CAAC,CAAC,EAAE,OAAOc,GAAGhE,EAAE,iBAAiBgE,CAAC,IAAId,CAAC,EAAE,GAAGU,EAAE,OAAO,GAAGV,IAAIiF,GAAG,cAAcnE,EAAE,eAAejB,GAAE,YAAY,CAAC,MAAMiB,EAAEd,IAAIiF,GAAG,aAAa9E,EAAEO,EAAET,EAAE,CAAC,EAAEC,EAAEQ,EAAET,EAAE,CAAC,EAAE,GAAGa,EAAE,WAAWhB,EAAE,KAAK,GAAGgB,EAAE,OAAO,CAAC,KAAM,WAAUd,KAAKU,EAAE,CAAC,MAAMI,EAAEX,EAAE,CAACH,CAAC,EAAEC,EAAE,CAAC,EAAE,GAAGa,EAAE,WAAWhB,EAAE,KAAK,GAAGgB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAMA,EAAEL,EAAET,CAAC,EAAE,OAAOA,GAAGjD,EAAE,IAAIiD,CAAC,CAAC,EAAE,GAAG,CAACc,EAAE,OAAO,SAAS,MAAMR,EAAEN,IAAIiF,GAAG,qBAAqBH,GAAG,iBAAiB,qBAAqB,OAAOpE,EAAEV,IAAIiF,GAAG,OAAO,EAAEnE,EAAEb,EAAE,CAAC,EAAEC,EAAEY,EAAEb,EAAE,EAAEK,CAAC,EAAE,GAAGI,EAAE,WAAWZ,EAAE,KAAK,GAAGY,EAAE,OAAO,CAAC,CAAC,GAAG5D,EAAE,iBAAiB,QAAYwD,IAAJ,GAAM,QAAQN,EAAE,EAAEA,EAAElD,EAAE,iBAAiB,OAAOkD,IAAI,GAAGU,EAAE,YAAYA,EAAE,OAAOV,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,GAAGlD,EAAE,iBAAiBkD,CAAC,EAAE,WAAWF,EAAE,KAAKhD,EAAE,iBAAiBkD,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAMA,EAAE,EAAE,EAAE,EAAE,GAAGA,EAAEF,EAAE,KAAK,IAAI,WAAWE,CAAC,CAAC,CAAC,EAAC,GAAGlD,EAAE,iBAAiB,IAAIkD,CAAC,EAAE,UAAUc,KAAKhE,EAAE,iBAAiB,IAAIkD,CAAC,EAAEU,EAAE,YAAY,KAAK,CAAC,OAAOT,EAAE,WAAW,EAAE,WAAWa,EAAE,UAAU,CAAC,EAAEhE,EAAE,yBAAyB,IAAIgE,EAAEJ,EAAE,YAAY,OAAO,CAAC,EAAE,GAAGI,EAAE,WAAWhB,EAAE,KAAKgB,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIR,EAAEQ,EAAE,SAASf,GAAE,IAAIO,EAAEX,IAAGW,EAAExD,EAAE,mBAAmB,UAAUkD,EAAE,KAAK,EAAEQ,EAAE,IAAIF,GAAGE,EAAE,WAAW,EAAE,EAAE,UAAUF,CAAC,EAAEO,EAAE,OAAOf,CAAC,CAAC,CAACY,EAAE,QAAQ,KAAKF,CAAC,EAAE1D,EAAE,eAAe,IAAIkD,EAAEM,CAAC,CAAC,CAAC,EAAEA,EAAE,gBAAgB,KAAKN,GAAG,CAACA,EAAE,UAAS,CAAE,GAAGQ,EAAE,KAAK,4DAA4D,EAAEE,EAAE,UAAUJ,EAAE,cAAe,EAAC,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAE,GAAGA,EAAE,aAAc,IAAGyD,GAAG,UAAU,SAASnD,EAAE,UAAUN,EAAE,aAAY,GAAIA,EAAE,aAAY,IAAKyD,GAAG,UAAU,OAAOnD,EAAE,YAAYN,EAAE,eAAc,GAAIA,EAAE,eAAc,IAAKM,EAAE,YAAY,IAAIA,EAAE,qBAAqB,CAAA,EAAGoB,EAAE,GAAG1B,EAAE,mBAAkB,EAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAIM,EAAE,qBAAqB,gBAAgBN,EAAE,sBAAsB0B,EAAE,GAAG1B,EAAE,kBAAiB,EAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAIM,EAAE,eAAeN,EAAE,kBAAiB,GAAQA,EAAE,mBAAoB,IAA1B,IAA6BM,EAAE,qBAAqB,gBAAgBN,EAAE,sBAA0BA,EAAE,kBAAiB,IAAvB,IAA4BM,EAAE,qBAAqB,eAAeN,EAAE,kBAAmB,GAAEA,EAAE,oBAAqB,EAAC,CAAC,MAAMc,EAAEd,EAAE,oBAAqB,EAACU,EAAEV,EAAE,wBAAuB,EAAGM,EAAE,qBAAqB,iBAAiBxD,EAAE,qBAAqBgE,EAAEJ,CAAC,CAAC,CAAC,GAAGV,EAAE,qBAAqB,CAAC,MAAMc,EAAEd,EAAE,qBAAqBU,EAAEV,EAAE,uBAAwB,EAACM,EAAE,gBAAgBxD,EAAE,qBAAqBgE,EAAEJ,CAAC,CAAC,CAAC,GAAGV,EAAE,iBAAgB,EAAG,CAAC,MAAMc,EAAEd,EAAE,mBAAmBU,EAAEV,EAAE,qBAAsB,EAACO,EAAEzD,EAAE,qBAAqBgE,EAAEJ,CAAC,EAAMV,EAAE,eAAgB,IAAtB,IAAyBO,EAAE,MAAMP,EAAE,eAAgB,GAAEM,EAAE,cAAcC,CAAC,CAAC,GAAGP,EAAE,sBAAsB,CAAC,MAAMc,EAAEd,EAAE,sBAAsBU,EAAEV,EAAE,wBAAyB,EAACO,EAAEzD,EAAE,qBAAqBgE,EAAEJ,CAAC,EAAMV,EAAE,qBAAsB,IAA5B,IAA+BO,EAAE,SAASP,EAAE,qBAAsB,GAAEM,EAAE,iBAAiBC,CAAC,CAAC,GAAGP,EAAE,8BAA8B,CAAC,MAAMc,EAAEd,EAAE,8BAA8BU,EAAEV,EAAE,gCAAiC,EAACM,EAAE,qBAAqB,yBAAyBxD,EAAE,qBAAqBgE,EAAEJ,CAAC,CAAC,CAAC,OAAO5D,EAAE,iBAAiB,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEI,EAAE,OAAOJ,EAAE,aAAa,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAE,IAAIU,EAAE,KAAK,OAAOJ,EAAE,WAAWN,EAAE,eAAgB,EAAC,IAAIA,GAAG,CAAC,MAAMc,EAAE,CAAC,WAAW,CAAA,CAAE,EAAEA,EAAE,KAAKd,EAAE,UAAU,MAAMM,EAAEN,EAAE,YAAW,EAAGM,IAAIQ,EAAE,SAAShE,EAAE,iBAAiB,IAAIwD,CAAC,GAAG,OAAO,KAAKN,EAAE,UAAW,CAAA,EAAE,SAASc,EAAE,OAAOd,EAAE,UAAW,GAAE,MAAMO,EAAEP,EAAE,WAAY,EAACO,IAAIO,EAAE,QAAQhE,EAAE,iBAAiB,IAAIyD,CAAC,GAAG,UAAUD,KAAKN,EAAE,gBAAgBc,EAAE,WAAWR,CAAC,EAAExD,EAAE,iBAAiB,IAAIkD,EAAE,aAAaM,CAAC,CAAC,EAAE,UAAUA,KAAKN,EAAE,cAAc,CAAC,MAAMA,EAAE,CAAE,EAAC,UAAUc,KAAKR,EAAE,cAAe,EAACN,EAAEc,CAAC,EAAEhE,EAAE,iBAAiB,IAAIwD,EAAE,aAAaQ,CAAC,CAAC,EAAEA,EAAE,QAAQA,EAAE,SAAS,GAAGA,EAAE,QAAQ,KAAKd,CAAC,CAAC,CAAC,OAAOA,EAAE,YAAa,EAAC,QAAQ,CAACU,IAAIA,EAAEV,EAAE,YAAa,EAAC,IAAIA,GAAGA,EAAE,QAAS,CAAA,GAAGc,CAAC,CAAC,EAAEd,EAAE,aAAa,SAASM,EAAE,QAAQN,EAAE,cAAcU,IAAIJ,EAAE,OAAOA,EAAE,QAAQ,CAAE,EAACA,EAAE,OAAO,YAAYI,GAAG5D,EAAE,aAAa,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEI,EAAE,QAAQJ,EAAE,YAAW,EAAG,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAE,GAAGM,EAAE,KAAKN,EAAE,UAAUM,EAAE,OAAO2C,GAAG,KAAK,YAAY,CAAC3C,EAAE,YAAY,CAAC,MAAMN,EAAE,WAAW,KAAKA,EAAE,QAAS,EAAC,KAAKA,EAAE,QAAO,CAAE,EAAE,MAAMc,EAAEd,EAAE,eAAc,EAAUc,IAAP,OAAWR,EAAE,YAAY,YAAYQ,EAAE,MAAMR,EAAE,aAAa,CAAC,MAAMN,EAAE,SAAQ,EAAG,KAAKA,EAAE,UAAU,KAAKA,EAAE,QAAS,EAAC,KAAKA,EAAE,QAAO,CAAE,EAAE,OAAOlD,EAAE,eAAe,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEI,EAAE,MAAMJ,EAAE,UAAS,EAAG,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAE,OAAO0B,EAAE,GAAG1B,EAAE,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAIM,EAAE,YAAYN,EAAE,kBAAkB0B,EAAE,GAAG1B,EAAE,YAAa,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAIM,EAAE,SAASN,EAAE,eAAe0B,EAAE,GAAG1B,EAAE,SAAQ,EAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAIM,EAAE,MAAMN,EAAE,SAAQ,GAAIA,EAAE,WAAU,EAAG,SAASM,EAAE,QAAQN,EAAE,WAAY,GAAElD,EAAE,aAAa,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEI,EAAE,MAAMJ,EAAE,YAAY,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAEU,EAAEV,EAAE,uBAAwB,EAACU,IAAIJ,EAAE,oBAAoBxD,EAAE,iBAAiB,IAAI4D,CAAC,GAAG,MAAMH,EAAEP,EAAE,YAAW,EAAG,OAAOO,IAAID,EAAE,SAASxD,EAAE,aAAa,IAAIyD,CAAC,GAAGD,EAAE,OAAON,EAAE,WAAY,EAAC,IAAIA,GAAGlD,EAAE,aAAa,IAAIkD,CAAC,CAAC,EAAElD,EAAE,aAAa,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEA,EAAE,YAAY,QAAQ,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAEI,EAAE,MAAMI,CAAC,EAAEP,EAAEP,EAAE,QAAO,EAAGO,IAAID,EAAE,KAAKxD,EAAE,aAAa,IAAIyD,CAAC,GAAG,MAAMC,EAAER,EAAE,UAAS,EAAGQ,IAAIF,EAAE,OAAOxD,EAAE,eAAe,IAAI0D,CAAC,GAAG,MAAM1C,EAAEkC,EAAE,UAAUlC,IAAIwC,EAAE,KAAKxD,EAAE,aAAa,IAAIgB,CAAC,GAAGkC,EAAE,eAAe,OAAO,IAAIM,EAAE,SAASN,EAAE,aAAc,EAAC,IAAIA,GAAGlD,EAAE,aAAa,IAAIkD,CAAC,CAAC,EAAE,CAAC,EAAEU,EAAE,WAAWJ,EAAE,eAAgB,EAAC,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAEU,EAAE,IAAI,IAAI,OAAOJ,EAAE,SAASN,EAAE,aAAY,EAAG,IAAI,CAACA,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAE,OAAOM,EAAE,MAAMxD,EAAE,iBAAiB,IAAIkD,EAAE,UAAU,EAAEM,EAAE,OAAOxD,EAAE,iBAAiB,IAAIkD,EAAE,UAAS,CAAE,EAAEM,EAAE,cAAcN,EAAE,mBAAmBU,EAAE,IAAIV,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEA,EAAE,SAASN,EAAE,aAAc,EAAC,IAAIA,GAAG,CAAC,MAAMc,EAAEhE,EAAE,kBAAkBkD,CAAC,EAAE,OAAOc,EAAE,QAAQJ,EAAE,IAAIV,EAAE,WAAY,CAAA,EAAEc,EAAE,OAAO,CAAC,KAAKhE,EAAE,aAAa,IAAIkD,EAAE,cAAa,CAAE,EAAE,KAAKA,EAAE,cAAa,CAAE,EAAEc,CAAC,CAAC,EAAEhE,EAAE,kBAAkB,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAEI,EAAE,OAAOJ,EAAE,WAAY,EAAC,IAAI,CAACN,EAAEc,IAAI,CAAC,MAAMR,EAAExD,EAAE,kBAAkBkD,CAAC,EAAE,OAAOM,EAAE,MAAMN,EAAE,eAAe,IAAIA,GAAGlD,EAAE,aAAa,IAAIkD,CAAC,CAAC,EAAElD,EAAE,cAAc,IAAIkD,EAAEc,CAAC,EAAER,CAAC,CAAC,EAAE,MAAMG,EAAEH,EAAE,gBAAe,EAAG,OAAOG,IAAIC,EAAE,MAAMJ,EAAE,WAAU,EAAG,QAAQG,CAAC,GAAGC,EAAE,eAAe3D,EAAE,IAAIiD,GAAGA,EAAE,aAAa,EAAEU,EAAE,mBAAmBZ,EAAE,IAAIE,GAAGA,EAAE,aAAa,EAAEjD,EAAE,QAAQiD,GAAGA,EAAE,MAAMlD,CAAC,CAAC,EAAE,SAASkD,EAAE,CAAC,MAAMc,EAAE,CAAA,EAAG,UAAUR,KAAKN,EAAE,CAAC,MAAMU,EAAEV,EAAEM,CAAC,GAAG,MAAM,QAAQI,CAAC,GAAOA,EAAE,SAAN,GAAqBA,IAAP,MAAeA,IAAL,IAAQA,GAAa,OAAOA,GAAjB,UAAwB,OAAO,KAAKA,CAAC,EAAE,SAAnB,IAA4BI,EAAE,KAAKR,CAAC,CAAC,CAAC,UAAUA,KAAKQ,EAAE,OAAOd,EAAEM,CAAC,CAAC,EAAEI,CAAC,EAAE,CAAC,CAAC,EAAC,IAAI4E,IAAI,SAAStF,EAAE,CAACA,EAAEA,EAAE,KAAK,UAAU,EAAE,OAAOA,EAAEA,EAAE,IAAI,OAAO,EAAE,KAAK,GAAEsF,KAAKA,GAAG,CAAA,EAAG,EAAC,IAAAC,GAAC,KAAQ,CAAC,aAAa,CAAC,KAAK,EAAE/D,GAAE,iBAAiB,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAE,EAAC,KAAK,EAAE3B,GAAE,YAAY,KAAK,cAAc,EAAE,KAAK,eAAe,CAAC,CAAC,UAAUG,EAAE,CAAC,OAAO,KAAK,EAAEA,EAAE,IAAI,CAAC,mBAAmBA,EAAE,CAAC,UAAUc,KAAKd,EAAE,KAAK,EAAE,IAAIc,CAAC,EAAEA,EAAE,SAAU,EAAC,OAAO,IAAI,CAAC,qBAAqBd,EAAE,CAAC,OAAO,OAAO,OAAO,KAAK,EAAEA,CAAC,EAAE,IAAI,CAAC,gBAAgBA,EAAE,CAAC,OAAO,KAAK,EAAEA,EAAE,IAAI,CAAC,MAAM,KAAKA,EAAE,CAAC,OAAO,MAAM,KAAK,SAAS,MAAM,KAAK,WAAWA,CAAC,CAAC,CAAC,CAAC,MAAM,WAAWA,EAAE,CAAC,MAAMc,EAAE,MAAM,KAAK,QAAQd,EAAE,MAAM,EAAE,KAAK,cAAcc,EAAE,WAAW,MAAMR,EAAEkF,GAAG1E,CAAC,EAAE,KAAK,EAAEA,CAAC,EAAE,CAAC,KAAK,KAAK,MAAMD,EAAE,WAAWC,CAAC,CAAC,EAAE,UAAU,CAAA,CAAE,EAAE,OAAO,MAAM,KAAK,EAAER,EAAE,KAAK,QAAQN,CAAC,CAAC,EAAE,KAAK,EAAEM,CAAC,EAAEA,CAAC,CAAC,MAAM,SAASN,EAAE,CAAC,OAAOA,EAAE,KAAK,EAAEA,CAAC,EAAE,KAAK,EAAEA,CAAC,EAAEyF,GAAG,KAAKzF,EAAE,CAAC,WAAW,MAAM,KAAK,KAAK,CAAC,EAAE,aAAa,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,aAAaA,EAAE,CAAC,MAAMc,EAAE,KAAK,EAAED,EAAE,WAAWb,CAAC,CAAC,EAAE,KAAK,EAAEc,CAAC,EAAE,MAAMR,EAAEQ,EAAE,KAAK,GAAGR,EAAE,SAASA,EAAE,QAAQ,KAAKN,GAAG,SAASA,EAAEc,EAAE,CAAC,OAAgBA,EAAE,MAAX,QAAgB,EAAEA,EAAE,OAAOd,EAAE,UAAU,EAAEc,EAAEd,CAAC,CAAC,EAAE,MAAM,IAAI,MAAM,sDAAsD,EAAE,GAAGM,EAAE,QAAQA,EAAE,OAAO,KAAKN,GAAG,SAASA,EAAEc,EAAE,CAAC,OAAgBA,EAAE,MAAX,QAAgB,EAAEA,EAAE,OAAOd,EAAE,YAAqBc,EAAE,aAAX,MAAqB,EAAEA,EAAEd,CAAC,CAAC,EAAE,MAAM,IAAI,MAAM,qDAAqD,EAAE,OAAOc,CAAC,CAAC,MAAM,WAAWd,EAAE,CAAC,OAAO,KAAK,SAAS,MAAM,KAAK,aAAaa,EAAE,WAAWb,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,UAAUA,EAAEc,EAAE,GAAG,CAAC,GAAGA,EAAE,SAASf,GAAE,KAAKC,EAAE,UAAU,cAAc,OAAO,EAAE,MAAM,IAAI,MAAM,4BAA4B,EAAE,OAAO0F,GAAG,MAAM1F,EAAE,CAAC,OAAOc,EAAE,QAAQf,GAAE,KAAK,SAASe,EAAE,UAAU,GAAG,OAAO,KAAK,EAAE,aAAa,KAAK,EAAE,aAAagD,EAAG,CAAA,EAAG,KAAK,CAAC,EAAE,WAAW,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY9D,EAAE,CAAC,KAAK,CAAC,KAAKc,EAAE,UAAUR,CAAC,EAAE,MAAM,KAAK,UAAUN,EAAE,CAAC,OAAOD,GAAE,GAAG,CAAC,EAAEW,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,UAAUI,CAAC,EAAEhE,EAAE+D,EAAE,IAAIA,EAAE,WAAW,CAAC,EAAE,EAAE,EAAEL,EAAEK,EAAE,OAAO,IAAI,YAAY,CAAC/D,EAAE,WAAW,UAAU,CAAC,CAAC,EAAEgB,EAAE+C,EAAE,OAAO,CAACL,EAAE1D,CAAC,CAAC,EAAE4D,EAAEA,EAAE,OAAO,CAAC,GAAG5C,EAAE,WAAW,MAAM4B,EAAE,OAAO,OAAOY,CAAC,EAAE,CAAC,EAAE,GAAG,CAACZ,GAAG,CAACA,EAAE,WAAW,OAAOmB,EAAE,OAAO,CAACA,EAAE,OAAOH,CAAC,EAAE5C,CAAC,CAAC,EAAE,MAAM6B,EAAEkB,EAAE,IAAInB,EAAE,CAAC,EAAEE,EAAEiB,EAAE,OAAO,IAAI,YAAY,CAAClB,EAAE,WAAW,OAAO,CAAC,CAAC,EAAEE,EAAEgB,EAAE,OAAO,CAACjB,EAAED,CAAC,CAAC,EAAE,OAAOe,EAAEA,EAAE,OAAO,CAAC,GAAGb,EAAE,WAAWgB,EAAE,OAAO,CAACA,EAAE,OAAOH,CAAC,EAAE5C,EAAE+B,CAAC,CAAC,CAAC,CAAC,MAAM,EAAEG,EAAEc,EAAE,CAAC,IAAIR,EAAE,KAAK,MAAMI,EAAE,CAAC,GAAGV,EAAE,KAAK,QAAQ,CAAE,EAAC,GAAGA,EAAE,KAAK,SAAS,CAAE,CAAA,EAAE,IAAI,eAAeU,EAAE,CAAC,MAAMH,EAAEG,EAAE,IAAI,GAAG,CAACH,GAAGA,EAAE,MAAM,OAAO,EAAE,OAAO,QAAQ,UAAUP,EAAE,UAAUO,CAAC,EAAE,MAAMD,EAAE,QAAQA,EAAE,QAAQQ,EAAEP,CAAC,EAAE,MAAM,EAAED,EAAE,eAAeN,EAAE,UAAUO,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,IAAIG,CAAC,CAAC,CAAC,EAAEV,EAAE,CAAC,SAASc,EAAEA,EAAE,CAAC,GAAGA,EAAE,KAAI,GAAGA,EAAE,OAAOd,EAAE,UAAUa,EAAE,WAAWb,EAAE,UAAUc,EAAE,GAAG,CAAC,UAAUA,EAAE,IAAI,MAAM,OAAO,EAAE,CAAC,MAAMR,EAAE,KAAK6B,GAAG,CAAA,IAAIhB,GAAE,UAAUL,EAAE,GAAG,CAAC,GAAGd,EAAE,UAAUM,CAAC,EAAEO,EAAE,wBAAwBC,EAAE,GAAG,EAAEA,EAAE,IAAIR,CAAC,EAAC,EAAEN,EAAE,KAAK,QAAQ,CAAA,GAAI,QAAQA,GAAG,CAAC,GAAYA,EAAE,aAAX,QAAgCA,EAAE,MAAX,OAAe,MAAM,IAAI,MAAM,sCAAsC,EAAEc,EAAEd,CAAC,CAAC,CAAC,GAAGA,EAAE,KAAK,SAAS,CAAE,GAAE,QAAQc,CAAC,CAAC,CAAC,EAAEd,EAAE,CAAC,KAAK,CAAC,OAAOc,EAAE,QAAQR,CAAC,EAAEN,EAAE,KAAK,OAAOA,EAAE,CAAC,KAAK8D,EAAG,CAAE,EAAC9D,EAAE,IAAI,EAAE,UAAU8D,EAAG,GAAG9D,EAAE,SAAS,CAAC,EAAEc,IAAId,EAAE,KAAK,OAAOc,EAAE,IAAId,GAAG8D,EAAG,GAAG9D,CAAC,CAAC,GAAGM,IAAIN,EAAE,KAAK,QAAQM,EAAE,IAAIN,GAAG8D,EAAG,GAAG9D,CAAC,CAAC,GAAGA,CAAC,CAAC,EAAEA,EAAE,CAAC,GAAG,CAACwF,GAAGxF,CAAC,EAAE,MAAM,IAAI,MAAM,0BAA0B,EAAE,MAAMc,EAAE,IAAI,YAAYd,EAAE,OAAOA,EAAE,WAAW,GAAG,CAAC,EAAE,GAAGc,EAAE,CAAC,IAAIwE,GAAG,KAAK,MAAM,IAAI,MAAM,kCAAkC,EAAE,MAAMhF,EAAEQ,EAAE,CAAC,EAAEJ,EAAEG,EAAE,WAAWA,EAAE,OAAOb,EAAE,GAAGM,CAAC,CAAC,EAAE,EAAE,KAAK,MAAMI,CAAC,EAAE5D,EAAE,GAAGwD,EAAE,GAAGN,EAAE,YAAYlD,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAA,CAAE,EAAE,MAAM0D,EAAE,IAAI,YAAYR,EAAE,OAAOA,EAAE,WAAWlD,EAAE,CAAC,EAAE,GAAG0D,EAAE,CAAC,IAAI8E,GAAG,IAAI,MAAM,IAAI,MAAM,mCAAmC,EAAE,MAAMxH,EAAE+C,EAAE,OAAOb,EAAElD,EAAE,EAAE0D,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAACb,EAAC,EAAE7B,CAAC,CAAC,CAAC,CAAC,EAAC,SAAS0H,GAAGxF,EAAE,CAAC,GAAGA,EAAE,WAAW,EAAE,YAAY,kBAAkB,MAAM,GAAG,MAAM,EAAE,IAAI,YAAYA,EAAE,OAAOA,EAAE,WAAW,CAAC,EAAE,OAAoB,EAAE,CAAC,IAAhB,YAAuB,EAAE,CAAC,IAAP,CAAQ,QAA6/D,cAAiB2F,EAAE,CAAC,YAAY3F,EAAEsC,GAAE,aAAa,CAAC,MAAK,EAAG,KAAK,EAAE,OAAO,KAAK,EAAEtC,CAAC,CAAC,MAAM,QAAQA,EAAEc,EAAE,CAAC,MAAMR,EAAE,MAAM,MAAMN,EAAE,KAAK,CAAC,EAAE,OAAOc,EAAG,CAAA,IAAI,OAAO,OAAO,IAAI,WAAW,MAAMR,EAAE,YAAa,CAAA,EAAE,IAAI,OAAO,OAAOA,EAAE,KAAI,CAAE,CAAC,CAAC,QAAQN,EAAEc,EAAE,CAAC,OAAOwB,GAAE,QAAQtC,EAAEc,CAAC,CAAC,CAAC,QAAQd,EAAE,CAAC,OAAOsC,GAAE,QAAQtC,CAAC,CAAC,CAAC,uGCE/mhE,SAAS4F,GAAKrF,EAAG,CAEf,QADIsF,EAAS,IAAI,MAAMtF,CAAC,EAChBzD,EAAE,EAAGA,EAAEyD,EAAG,EAAEzD,EAClB+I,EAAO/I,CAAC,EAAIA,EAEd,OAAO+I,CACT,CAEA,IAAAC,GAAiBF;;;;;OCDjBG,GAAiB,SAAUC,EAAK,CAC9B,OAAOA,GAAO,OAASC,GAASD,CAAG,GAAKE,GAAaF,CAAG,GAAK,CAAC,CAACA,EAAI,UACrE,EAEA,SAASC,GAAUD,EAAK,CACtB,MAAO,CAAC,CAACA,EAAI,aAAe,OAAOA,EAAI,YAAY,UAAa,YAAcA,EAAI,YAAY,SAASA,CAAG,CAC5G,CAGA,SAASE,GAAcF,EAAK,CAC1B,OAAO,OAAOA,EAAI,aAAgB,YAAc,OAAOA,EAAI,OAAU,YAAcC,GAASD,EAAI,MAAM,EAAG,CAAC,CAAC,CAC7G,CCpBA,IAAIJ,GAAOO,GACPF,GAAWG,GAEXC,GAAoB,OAAO,aAAkB,IAEjD,SAASC,GAAWxI,EAAGC,EAAG,CACxB,OAAOD,EAAE,CAAC,EAAIC,EAAE,CAAC,CACnB,CAEA,SAASwI,IAAQ,CACf,IAAIC,EAAS,KAAK,OACdC,EAAQ,IAAI,MAAMD,EAAO,MAAM,EAC/B1J,EACJ,IAAIA,EAAE,EAAGA,EAAE2J,EAAM,OAAQ,EAAE3J,EACzB2J,EAAM3J,CAAC,EAAI,CAAC,KAAK,IAAI0J,EAAO1J,CAAC,CAAC,EAAGA,CAAC,EAEpC2J,EAAM,KAAKH,EAAU,EACrB,IAAIT,EAAS,IAAI,MAAMY,EAAM,MAAM,EACnC,IAAI3J,EAAE,EAAGA,EAAE+I,EAAO,OAAQ,EAAE/I,EAC1B+I,EAAO/I,CAAC,EAAI2J,EAAM3J,CAAC,EAAE,CAAC,EAExB,OAAO+I,CACT,CAEA,SAASa,GAAmBC,EAAOC,EAAW,CAC5C,IAAIC,EAAY,CAAC,OAAQD,EAAW,IAAKD,CAAK,EAAE,KAAK,EAAE,EACpDC,EAAY,IACbC,EAAY,WAAaF,GAE3B,IAAIG,EAAcH,IAAU,UAE5B,GAAGC,IAAc,GAAI,CAEnB,IAAIG,EACF,YAAYF,EAAU,+BAChBA,EAAU,2BACPF,EAAM,kLAMGE,EAAU,+GAGNA,EAAU,kBAAkBA,EAAU,QAC1DG,EAAY,IAAI,SAASD,CAAI,EACjC,OAAOC,EAAW,CACtB,SAAYJ,IAAc,EAAG,CAEzB,IAAIG,EACF,YAAYF,EAAU,mDAIhBA,EAAU,2BACPF,EAAM,6KAUCE,EAAU,uBACnBA,EAAU,gDAEDA,EAAU,6EAGGA,EAAU,kBACnCC,EAAa,6BAA+B,0BACtD,wBACqBD,EAAU,mBACrBC,EAAa,+BAAiC,4BAA4B,+BAExDD,EAAU,wBAAwBA,EAAU,SAChEG,EAAY,IAAI,SAAS,eAAgBD,CAAI,EACjD,OAAOC,EAAUC,GAAoBN,CAAK,EAAE,CAAC,CAAC,CAC/C,CAED,IAAII,EAAO,CAAC,cAAc,EAGtBG,EAAUtB,GAAKgB,CAAS,EACxBpJ,EAAO0J,EAAQ,IAAI,SAASpK,EAAG,CAAE,MAAO,IAAIA,EAAG,EAC/CqK,EAAY,eAAiBD,EAAQ,IAAI,SAASpK,EAAG,CACnD,MAAO,eAAiBA,EAAI,MAAQA,CAC5C,CAAO,EAAE,KAAK,GAAG,EACXsK,EAAWF,EAAQ,IAAI,SAASpK,EAAG,CACnC,MAAO,IAAIA,CACjB,CAAK,EAAE,KAAK,GAAG,EACTuK,EAAYH,EAAQ,IAAI,SAASpK,EAAG,CACpC,MAAO,IAAIA,CACjB,CAAK,EAAE,KAAK,GAAG,EACbiK,EAAK,KACH,YAAYF,EAAU,MAAQO,EAAW,IAAMC,EAAY,kBACzD,eAAiBD,EAAW,IAC5B,gBAAkBC,EAAY,IAC9B,mBACF,aAAaR,EAAU,aACvB,gBAAgBF,EAAM,IACtB,mBAAmBC,CAAS,EAG9BG,EAAK,KAAK,oDAAoDF,EAAU,kBACjEK,EAAQ,IAAI,SAASpK,EAAG,CAAE,MAAO,cAAcA,EAAE,GAAG,CAAE,EAAE,KAAK,GAAG,EACzE,KAAK,EAGA8J,IAAc,EACfG,EAAK,KAAK,iBAAiB,GAE3BA,EAAK,KAAK,2CAA2C,EAClDH,EAAY,GACbG,EAAK,KAAK,YAAYF,EAAU,WAAW,EACxCD,IAAc,EACfG,EAAK,KAAK,2EAA2E,EAC7EH,IAAc,GACtBG,EAAK,KACb,yQAeK,GAGCA,EAAK,KAAK,SAAS,GAKvBA,EAAK,KACP,sBAAsBF,EAAU,QAAQrJ,EAAK,KAAK,GAAG,EAAE,MAAM,EACxDsJ,EACDC,EAAK,KAAK,wBAAwBI,EAAU,MAAM,EAElDJ,EAAK,KAAK,oBAAoBI,EAAU,MAAM,EAIhDJ,EAAK,KAAK,sBAAsBF,EAAU,QAAQrJ,EAAK,KAAK,GAAG,EAAE,IAAI,EAClEsJ,EACDC,EAAK,KAAK,wBAAwBI,EAAU,IAAI,EAEhDJ,EAAK,KAAK,oBAAoBI,EAAU,IAAI,EAI9CJ,EAAK,KACH,wBAAwBF,EAAU,UAAWrJ,EAAK,KAAI,EAAI,YAAY2J,EAAU,GAAG,EAGrFJ,EAAK,KAAK,qBAAqBF,EAAU,OAAOrJ,EAAK,KAAK,GAAG,EAAE,gBAAgBqJ,EAAU,cACvFK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,CAAC,YAAYA,EAAE,iBAAiBA,EAAE,kBAAmBA,EAAG,MAAOA,EAAE,IAAI,EAAE,KAAK,EAAE,CAC3F,CAAK,EAAE,KAAK,GAAG,EAAE,IACboK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,eAAeA,EAAI,GAC3B,CAAA,EAAE,KAAK,GAAG,EAAE,gBAAgB,EAG/B,IAAIwK,EAASJ,EAAQ,IAAI,SAASpK,EAAG,CAAE,MAAO,IAAIA,EAAE,eAAeA,EAAE,GAAG,CAAE,EACtEyK,EAASL,EAAQ,IAAI,SAASpK,EAAG,CAAE,MAAO,IAAIA,EAAE,gBAAgBA,EAAE,GAAG,CAAE,EAC3EiK,EAAK,KAAK,qBAAqBF,EAAU,OAAOrJ,EAAK,KAAK,GAAG,EAAE,2BAA2B8J,EAAO,KAAK,GAAG,EAAE,IAAIC,EAAO,KAAK,GAAG,CAAC,EAC/H,QAAQzK,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EAC1BiK,EAAK,KACT,cAAcjK,EAAE,iBAAiBA,EAAE,WAC9BA,EAAE,UACDA,EAAE,OACLA,EAAE,MAAM,EAETiK,EAAK,KAAK,cAAcF,EAAU,cAChCK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,IAAIA,CACjB,CAAK,EAAE,KAAK,GAAG,EAAE,IACboK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,IAAIA,CACZ,CAAA,EAAE,KAAK,GAAG,EAAE,MAAM,EAGrBiK,EAAK,KAAK,uBAAuBF,EAAU,SAASrJ,EAAK,KAAK,GAAG,EAAE,SACjE0J,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,IAAIA,EAAE,eAAeA,EAAE,GACpC,CAAK,EAAE,KAAK,GAAG,EAAE,IACboK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,IAAIA,EAAE,gBAAgBA,EAAE,GAChC,CAAA,EAAE,KAAK,GAAG,EAAE,mCAAmC,EAClD,QAAQA,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EAC1BiK,EAAK,KACT,cAAcjK,EAAE,mBACXA,EAAE,kBAEDA,EAAE,MAAMA,EAAE,QACbA,EAAE,WAAWA,EAAE,aAEfA,EAAE,UAAUA,EAAE,QAEdA,EAAE,MACH,EAEAiK,EAAK,KAAK,cAAcF,EAAU,cAChCK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,IAAMA,CACnB,CAAK,EAAE,KAAK,GAAG,EAAE,IACboK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,IAAMA,CACd,CAAA,EAAE,KAAK,GAAG,EAAE,MAAM,EAKrB,QAFI0K,EAAS,IAAI,MAAMZ,CAAS,EAC5Ba,EAAU,IAAI,MAAMb,CAAS,EACzB9J,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EAC1B0K,EAAO1K,CAAC,EAAI,MAAMA,EAAE,IACpB2K,EAAQ3K,CAAC,EAAI,MAAMA,EAAE,IAEvBiK,EAAK,KAAK,4BAA4BF,EAAU,cAAcrJ,EAAK,KACjEA,EAAK,IAAI,SAAS+C,EAAEmH,EAAK,CAAE,OAAOnH,EAAI,KAAOA,EAAI,gBAAkBmH,EAAM,IAAMnH,EAAI,KAAK,CAAC,EAAE,KAAK,GAAG,EACnG,6CAA6CsG,EAAU,cAAcW,EAAO,KAAK,GAAG,EAAE,IAAIC,EAAQ,KAAK,GAAG,EAAE,gBAAgB,EAG9HV,EAAK,KAAK,uBAAuBF,EAAU,SAASrJ,EAAK,+BAA+B,EACxF,QAAQV,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EAC1BiK,EAAK,KAAK,cAAcjK,EAAE,iBAAiBA,EAAE,yBAAyBA,EAAE,MAAMA,EAAE,8BAA8BA,EAAE,yBAAyBA,EAAE,KAAK,EAElJiK,EAAK,KAAK,8DAA8D,EAGxEA,EAAK,KAAK,6BAA6BF,EAAU,yCAAyCA,EAAU,SAClGK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,SAASA,EAAE,GACxB,CAAK,EAAE,KAAK,GAAG,EAAE,IACboK,EAAQ,IAAI,SAASpK,EAAG,CACtB,MAAO,UAAUA,EAAE,GACpB,CAAA,EAAE,KAAK,GAAG,EAAE,WAAW,EAG1B,IAAIkK,EAAY,IAAI,SAAS,YAAa,QAASD,EAAK,KAAK;AAAA,CAAI,CAAC,EAClE,OAAOC,EAAUC,GAAoBN,CAAK,EAAGJ,EAAK,CACpD,CAEA,SAASoB,GAAWC,EAAM,CACxB,GAAG3B,GAAS2B,CAAI,EACd,MAAO,SAET,GAAGvB,GACD,OAAO,OAAO,UAAU,SAAS,KAAKuB,CAAI,EAAC,CACzC,IAAK,wBACH,MAAO,UACT,IAAK,wBACH,MAAO,UACT,IAAK,qBACH,MAAO,OACT,IAAK,sBACH,MAAO,QACT,IAAK,sBACH,MAAO,QACT,IAAK,sBACH,MAAO,QACT,IAAK,uBACH,MAAO,SACT,IAAK,uBACH,MAAO,SACT,IAAK,6BACH,MAAO,gBACT,IAAK,yBACH,MAAO,WACT,IAAK,0BACH,MAAO,WACV,CAEH,OAAG,MAAM,QAAQA,CAAI,EACZ,QAEF,SACT,CAEA,IAAIX,GAAsB,CACxB,QAAU,CAAE,EACZ,QAAU,CAAE,EACZ,KAAO,CAAE,EACT,MAAQ,CAAE,EACV,MAAQ,CAAE,EACV,MAAQ,CAAE,EACV,OAAS,CAAE,EACX,OAAS,CAAE,EACX,MAAQ,CAAE,EACV,cAAgB,CAAE,EAClB,SAAY,CAAE,EACd,UAAa,CAAE,EACf,OAAS,CAAE,EACX,QAAU,CAAE,CACd,EAQA,SAASY,GAAmBD,EAAME,EAAOtB,EAAQuB,EAAQ,CACvD,GAAGH,IAAS,OAAW,CACrB,IAAII,EAAOf,GAAoB,MAAM,CAAC,EACtC,OAAOe,EAAK,CAAA,CAAE,CAClB,MAAY,OAAOJ,GAAS,WACxBA,EAAO,CAACA,CAAI,GAEXE,IAAU,SACXA,EAAQ,CAAEF,EAAK,MAAQ,GAEzB,IAAI9H,EAAIgI,EAAM,OACd,GAAGtB,IAAW,OAAW,CACvBA,EAAS,IAAI,MAAM1G,CAAC,EACpB,QAAQhD,EAAEgD,EAAE,EAAGmI,EAAG,EAAGnL,GAAG,EAAG,EAAEA,EAC3B0J,EAAO1J,CAAC,EAAImL,EACZA,GAAMH,EAAMhL,CAAC,CAEhB,CACD,GAAGiL,IAAW,OAAW,CACvBA,EAAS,EACT,QAAQjL,EAAE,EAAGA,EAAEgD,EAAG,EAAEhD,EACf0J,EAAO1J,CAAC,EAAI,IACbiL,IAAWD,EAAMhL,CAAC,EAAE,GAAG0J,EAAO1J,CAAC,EAGpC,CAGD,QAFI6J,EAAQgB,GAAWC,CAAI,EACvBM,EAAYjB,GAAoBN,CAAK,EACnCuB,EAAU,QAAUpI,EAAE,GAC1BoI,EAAU,KAAKxB,GAAmBC,EAAOuB,EAAU,OAAO,CAAC,CAAC,EAE9D,IAAIF,EAAOE,EAAUpI,EAAE,CAAC,EACxB,OAAOkI,EAAKJ,EAAME,EAAOtB,EAAQuB,CAAM,CACzC,CAEA,IAAAI,GAAiBN,6BC1VjB,SAASO,GAAYC,EAAMC,EAAS,CAIlC,QAHIC,EAAM,EACNC,EAAMH,EAAK,OACXvK,EAAEuK,EAAK,CAAC,EAAGtK,EAAEsK,EAAK,CAAC,EACfvL,EAAE,EAAGA,EAAE0L,EAAK,EAAE1L,EAGpB,GAFAiB,EAAID,EACJA,EAAIuK,EAAKvL,CAAC,EACPwL,EAAQxK,EAAGC,CAAC,EAAG,CAChB,GAAGjB,IAAMyL,EAAK,CACZA,IACA,QACD,CACDF,EAAKE,GAAK,EAAIzK,CACf,CAEH,OAAAuK,EAAK,OAASE,EACPF,CACT,CAEA,SAASI,GAAUJ,EAAM,CAIvB,QAHIE,EAAM,EACNC,EAAMH,EAAK,OACXvK,EAAEuK,EAAK,CAAC,EAAGtK,EAAIsK,EAAK,CAAC,EACjBvL,EAAE,EAAGA,EAAE0L,EAAK,EAAE1L,EAAGiB,EAAED,EAGzB,GAFAC,EAAID,EACJA,EAAIuK,EAAKvL,CAAC,EACPgB,IAAMC,EAAG,CACV,GAAGjB,IAAMyL,EAAK,CACZA,IACA,QACD,CACDF,EAAKE,GAAK,EAAIzK,CACf,CAEH,OAAAuK,EAAK,OAASE,EACPF,CACT,CAEA,SAASK,GAAOL,EAAMC,EAASK,EAAQ,CACrC,OAAGN,EAAK,SAAW,EACVA,EAENC,GACGK,GACFN,EAAK,KAAKC,CAAO,EAEZF,GAAYC,EAAMC,CAAO,IAE9BK,GACFN,EAAK,KAAM,EAENI,GAAUJ,CAAI,EACvB,CAEA,IAAAO,GAAiBF,GCtDbE,GAAOzC,GAIX,SAAS0C,GAAUtC,EAAOuC,EAAMC,EAAM,CACpC,IAAInC,EAAYL,EAAM,OAClByC,EAAQF,EAAK,UAAU,OACvBG,EAAYH,EAAK,UAAU,OAAO,EAClC/B,EAAO,CAAE,EACTmC,EAAO,CAAE,EACTxB,EAAI,EAAGyB,EAAK,EAAGrM,EAAG6E,EACtB,IAAI7E,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EACtBoM,EAAK,KAAK,CAAC,IAAIpM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAGjC,IAAI6E,EAAE,EAAGA,EAAEqH,EAAO,EAAErH,EAClB,IAAI7E,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EACtBqM,EAAOzB,EACPA,EAAMnB,EAAMzJ,CAAC,EACVA,IAAM,EACPoM,EAAK,KAAK,CAAC,IAAIvH,EAAE,IAAI7E,EAAE,KAAK6E,EAAE,IAAI+F,CAAG,EAAE,KAAK,EAAE,CAAC,EAE/CwB,EAAK,KAAK,CAAC,IAAIvH,EAAE,IAAI7E,EAAE,MAAM6E,EAAE,IAAI+F,EAAI,KAAKyB,EAAK,KAAKxH,EAAE,IAAIwH,EAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAQpF,IAJID,EAAK,OAAS,GAChBnC,EAAK,KAAK,OAASmC,EAAK,KAAK,GAAG,CAAC,EAG/BpM,EAAE8J,EAAU,EAAG9J,GAAG,EAAG,EAAEA,EACzB4K,EAAMnB,EAAMzJ,CAAC,EACbiK,EAAK,KAAK,CAAC,QAAQjK,EAAE,OAAOA,EAAE,KAAK4K,EAAI,OAAO5K,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAKhE,IAFAiK,EAAK,KAAKgC,CAAI,EAEVjM,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EAAG,CAGzB,IAFAqM,EAAOzB,EACPA,EAAMnB,EAAMzJ,CAAC,EACT6E,EAAE,EAAGA,EAAEqH,EAAO,EAAErH,EAClBoF,EAAK,KAAK,CAAC,IAAIpF,EAAE,MAAMA,EAAE,IAAI7E,CAAC,EAAE,KAAK,EAAE,CAAC,EAEvCmM,IACEnM,EAAI,GACLiK,EAAK,KAAK,CAAC,SAASoC,EAAK,OAAOA,CAAI,EAAE,KAAK,EAAE,CAAC,EAEhDpC,EAAK,KAAK,CAAC,WAAWW,EAAI,GAAG,EAAE,KAAK,EAAE,CAAC,GAEzCX,EAAK,KAAK,GAAG,CACd,CACD,OAAOA,EAAK,KAAK;AAAA,CAAI,CACvB,CAKA,SAASqC,GAAUC,EAAS9C,EAAOuC,EAAMC,EAAM,CAM7C,QALInC,EAAYL,EAAM,OAClByC,EAAQF,EAAK,UAAU,OACvBQ,EAAYR,EAAK,UACjBG,EAAYH,EAAK,UAAU,OAAS,EACpC/B,EAAO,CAAE,EACLjK,EAAE,EAAGA,EAAEkM,EAAO,EAAElM,EACtBiK,EAAK,KAAK,CAAC,aAAajK,EAAE,KAAKA,CAAC,EAAE,KAAK,EAAE,CAAC,EAK5C,QAAQA,EAAEuM,EAASvM,EAAE8J,EAAW,EAAE9J,EAChCiK,EAAK,KAAK,CAAC,YAAYjK,EAAE,OAAQyJ,EAAMzJ,CAAC,EAAG,QAASA,EAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EACxEiK,EAAK,KAAK,CAAC,OAAOjK,EAAE,IAAIwM,EAAU,IAAI,EAAE,KAAK,EAAE,CAAC,EAChDvC,EAAK,KAAK,CAAC,IAAIR,EAAMzJ,CAAC,EAAE,KAAKA,CAAC,EAAE,KAAK,EAAE,CAAC,EACxCiK,EAAK,KAAK,CAAC,IAAIjK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAC/BiK,EAAK,KAAK,CAAC,UAAUR,EAAMzJ,CAAC,EAAE,IAAIwM,CAAS,EAAE,KAAK,EAAE,CAAC,EACrDvC,EAAK,KAAK,CAAC,IAAIjK,EAAE,KAAKwM,EAAU,GAAG,EAAE,KAAK,EAAE,CAAC,EAC1CL,GACDlC,EAAK,KAAK,CAAC,SAASR,EAAMzJ,CAAC,EAAE,MAAMA,CAAC,EAAE,KAAK,EAAE,CAAC,EAGlD,QAAQA,EAAE,EAAGA,EAAEkM,EAAO,EAAElM,EAAG,CAEzB,QADIyM,EAAW,CAAC,SAASzM,CAAC,EAClB6E,EAAE0H,EAAS1H,EAAEiF,EAAW,EAAEjF,EAChC4H,EAAS,KAAK,CAAC,IAAI5H,EAAE,KAAK7E,EAAE,IAAIyJ,EAAM5E,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAEpDoF,EAAK,KAAK,CAAC,IAAIjK,EAAE,KAAKyM,EAAS,KAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CACvD,CACDxC,EAAK,KAAK8B,GAAUtC,EAAOuC,EAAMC,CAAI,CAAC,EACtC,QAAQjM,EAAEuM,EAASvM,EAAE8J,EAAW,EAAE9J,EAChCiK,EAAK,KAAK,GAAG,EAEf,OAAOA,EAAK,KAAK;AAAA,CAAI,CACvB,CAMA,SAASyC,GAAaC,EAAQ,CAE5B,QADIJ,EAAU,EAAGzC,EAAY6C,EAAO,CAAC,EAAE,OACjCJ,EAAUzC,GAAW,CACzB,QAAQjF,EAAE,EAAGA,EAAE8H,EAAO,OAAQ,EAAE9H,EAC9B,GAAG8H,EAAO9H,CAAC,EAAE0H,CAAO,IAAMI,EAAO,CAAC,EAAEJ,CAAO,EACzC,OAAOA,EAGX,EAAEA,CACH,CACD,OAAOA,CACT,CAIA,SAASK,GAAaC,EAAOb,EAAMc,EAAQ,CAIzC,QAHI7C,EAAO4C,EAAM,KACbE,EAAM,CAAE,EACRC,EAAO,CAAE,EACLhN,EAAE,EAAGA,EAAE6M,EAAM,KAAK,OAAQ,EAAE7M,EAAG,CACrC,IAAIiN,EAAOJ,EAAM,KAAK7M,CAAC,EACvB,GAAG,EAAAiN,EAAK,OAAS,GAGjB,KAAIC,EAAK,IAAI,OAAOD,EAAK,KAAM,GAAG,EAC9BE,EAAS,GACTC,EAASpB,EAAK,UAAU,QAAQhM,CAAC,EACrC,OAAOgM,EAAK,SAAShM,CAAC,EAAC,CACrB,IAAK,SACH,IAAIqN,EAAcrB,EAAK,eAAe,QAAQhM,CAAC,EAC3CsN,EAAStB,EAAK,WAAWqB,CAAW,EACxCD,EAASE,EAAO,MAChBH,EAAS,KAAOE,EAClB,IAAK,QACHF,EAAS,IAAMC,EAASD,EACxB,IAAII,EAAW,IAAMvN,EACjBwN,EAAS,IAAMJ,EACnB,GAAIpB,EAAK,kBAAkBoB,CAAM,IAAM,EAClCH,EAAK,QAAU,EACbH,EAAOM,CAAM,IAAM,UACjBH,EAAK,QACNF,EAAI,KAAK,CAAC,OAAQQ,EAAU,IAAKC,EAAQ,QAASL,EAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EACvElD,EAAOA,EAAK,QAAQiD,EAAIK,CAAQ,EAChCP,EAAK,KAAK,CAACQ,EAAQ,QAASL,EAAQ,IAAKI,EAAS,GAAG,EAAE,KAAK,EAAE,CAAC,GAE/DtD,EAAOA,EAAK,QAAQiD,EAAI,CAACM,EAAQ,QAASL,EAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAGjElD,EAAOA,EAAK,QAAQiD,EAAI,CAACM,EAAQ,IAAKL,EAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAErDL,EAAOM,CAAM,IAAM,WAC3BL,EAAI,KAAK,CAAC,OAAQQ,EAAU,IAAKC,EAAQ,QAASL,EAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EACvElD,EAAOA,EAAK,QAAQiD,EAAIK,CAAQ,EAC7BN,EAAK,QACND,EAAK,KAAK,CAACQ,EAAQ,QAASL,EAAQ,IAAKI,EAAS,GAAG,EAAE,KAAK,EAAE,CAAC,IAGjER,EAAI,KAAK,CAAC,OAAQQ,EAAU,IAAKC,EAAQ,IAAKL,EAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EACnElD,EAAOA,EAAK,QAAQiD,EAAIK,CAAQ,EAC7BN,EAAK,QACND,EAAK,KAAK,CAACQ,EAAQ,IAAKL,EAAQ,KAAMI,CAAQ,EAAE,KAAK,EAAE,CAAC,OAGvD,CAEL,QADIE,EAAW,CAACR,EAAK,IAAI,EAAGS,EAAY,CAACP,CAAM,EACvCtI,EAAE,EAAGA,EAAE,KAAK,IAAImH,EAAK,kBAAkBoB,CAAM,CAAC,EAAGvI,IACvD4I,EAAS,KAAK,qBAAqB,EACnCC,EAAU,KAAK,KAAO7I,EAAE,GAAK,KAAOuI,EAAS,IAAMvI,CAAC,EAItD,GAFAqI,EAAK,IAAI,OAAOO,EAAS,KAAK,EAAE,EAAG,GAAG,EACtCN,EAASO,EAAU,KAAK,GAAG,EACxBZ,EAAOM,CAAM,IAAM,UAQpB,MAAM,IAAI,MAAM,iEAAiE,EAGjFnD,EAAOA,EAAK,QAAQiD,EAAI,CAACM,EAAQ,IAAKL,EAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,CAE9D,CACH,MACA,IAAK,SACHlD,EAAOA,EAAK,QAAQiD,EAAI,IAAMlB,EAAK,WAAW,QAAQhM,CAAC,CAAC,EAC1D,MACA,IAAK,QACHiK,EAAOA,EAAK,QAAQiD,EAAI,OAAO,EACjC,MACA,IAAK,QACHjD,EAAOA,EAAK,QAAQiD,EAAI,OAAO,EACjC,KACD,EACF,CACD,MAAO,CAACH,EAAI,KAAK;AAAA,CAAI,EAAG9C,EAAM+C,EAAK,KAAK;AAAA,CAAI,CAAC,EAAE,KAAK;AAAA,CAAI,EAAE,KAAM,CAClE,CAEA,SAASW,GAAYb,EAAQ,CAG3B,QAFIc,EAAU,IAAI,MAAMd,EAAO,MAAM,EACjCe,EAAW,GACP7N,EAAE,EAAGA,EAAE8M,EAAO,OAAQ,EAAE9M,EAAG,CACjC,IAAIkD,EAAI4J,EAAO9M,CAAC,EACZ8N,EAAS5K,EAAE,MAAM,KAAK,EACtB4K,EAGFA,EAASA,EAAO,CAAC,EAFjBA,EAAS,GAIR5K,EAAE,OAAO,CAAC,IAAM,EACjB0K,EAAQ5N,CAAC,EAAI,IAAMkD,EAAE,OAAO,CAAC,EAAI4K,EAEjCF,EAAQ5N,CAAC,EAAIkD,EAAE,OAAO,CAAC,EAAI4K,EAE1B9N,EAAI,IACL6N,EAAWA,GAAYD,EAAQ5N,CAAC,IAAM4N,EAAQ5N,EAAE,CAAC,EAEpD,CACD,OAAG6N,EACMD,EAAQ,CAAC,EAEXA,EAAQ,KAAK,EAAE,CACxB,CAGA,SAASG,GAAgB/B,EAAMgC,EAAS,CAOtC,QAHIlE,EAAakE,EAAQ,CAAC,EAAE,OAAS,KAAK,IAAIhC,EAAK,kBAAkB,CAAC,CAAC,EAAG,EACtEW,EAAS,IAAI,MAAMX,EAAK,UAAU,MAAM,EACxCc,EAAS,IAAI,MAAMd,EAAK,UAAU,MAAM,EACpChM,EAAE,EAAGA,EAAEgM,EAAK,UAAU,OAAQ,EAAEhM,EACtC8M,EAAO9M,CAAC,EAAIgO,EAAQ,EAAEhO,CAAC,EACvB2M,EAAO3M,CAAC,EAAIgO,EAAQ,EAAEhO,EAAE,CAAC,EAO3B,QAHIiO,EAAa,GAAIC,EAAW,CAAE,EAC9BC,EAAY,GAAIC,EAAU,CAAE,EAC5BC,EAAa,CAAE,EACXrO,EAAE,EAAGA,EAAEgM,EAAK,UAAU,OAAQ,EAAEhM,EAAG,CACrCgM,EAAK,kBAAkBhM,CAAC,EAAE,GAC5BmO,EAAU,KAAK,CAAC,EAChBC,EAAQ,KAAKtE,CAAS,EACtBmE,EAAW,KAAKnE,CAAS,EACzBoE,EAAS,KAAKpE,EAAUkC,EAAK,kBAAkBhM,CAAC,CAAC,IAEjDmO,EAAU,KAAKnC,EAAK,kBAAkBhM,CAAC,CAAC,EACxCoO,EAAQ,KAAKpC,EAAK,kBAAkBhM,CAAC,EAAE8J,CAAS,EAChDmE,EAAW,KAAK,CAAC,EACjBC,EAAS,KAAKlC,EAAK,kBAAkBhM,CAAC,CAAC,GAGzC,QADIsO,EAAW,CAAE,EACTzJ,EAAE,EAAGA,EAAE8H,EAAO3M,CAAC,EAAE,OAAQ6E,IAC3BsJ,EAAUnO,CAAC,GAAG2M,EAAO3M,CAAC,EAAE6E,CAAC,GAAK8H,EAAO3M,CAAC,EAAE6E,CAAC,EAAEuJ,EAAQpO,CAAC,GACtDsO,EAAS,KAAK3B,EAAO3M,CAAC,EAAE6E,CAAC,EAAEsJ,EAAUnO,CAAC,CAAC,EAG3CqO,EAAW,KAAKC,CAAQ,CACzB,CAOD,QAJIC,EAAU,CAAC,IAAI,EACftE,EAAO,CAAC,cAAc,EACtBmC,EAAO,CAAE,EAELvH,EAAE,EAAGA,EAAEiF,EAAW,EAAEjF,EAC1BuH,EAAK,KAAK,CAAC,IAAKvH,EAAG,OAAQA,EAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAE7C,QAAQ7E,EAAE,EAAGA,EAAEgM,EAAK,UAAU,OAAQ,EAAEhM,EAAG,CACzCuO,EAAQ,KAAK,IAAIvO,CAAC,EAClBuO,EAAQ,KAAK,IAAIvO,CAAC,EAClBuO,EAAQ,KAAK,IAAIvO,CAAC,EAElB,QAAQ6E,EAAE,EAAGA,EAAEiF,EAAW,EAAEjF,EAC1BuH,EAAK,KAAK,CAAC,IAAIpM,EAAE,IAAI6E,EAAE,KAAK7E,EAAE,IAAImO,EAAUnO,CAAC,EAAE6E,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAGhE,QAAQA,EAAE,EAAGA,EAAE,KAAK,IAAImH,EAAK,kBAAkBhM,CAAC,CAAC,EAAG,EAAE6E,EACpDuH,EAAK,KAAK,CAAC,IAAIpM,EAAE,IAAI6E,EAAE,KAAK7E,EAAE,IAAIiO,EAAWjO,CAAC,EAAE6E,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAElE,CACD,QAAQ7E,EAAE,EAAGA,EAAEgM,EAAK,WAAW,OAAQ,EAAEhM,EACvCuO,EAAQ,KAAK,IAAMvO,CAAC,EAKtB,GAHGgM,EAAK,UAAU,OAAS,GACzBI,EAAK,KAAK,mBAAmB,EAE5BJ,EAAK,UAAU,OAAS,EAAG,CAG5B,QADIwC,EAAQ,IAAI,MAAM1E,CAAS,EACvB9J,EAAE,EAAGA,EAAE8J,EAAW,EAAE9J,EAC1BwO,EAAMxO,CAAC,EAAI,IAEboM,EAAK,KAAK,CAAC,UAAWoC,EAAM,KAAK,GAAG,EAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CACrD,CACD,QAAQxO,EAAE,EAAGA,EAAEgM,EAAK,WAAW,OAAQ,EAAEhM,EAAG,CAG1C,QAFIyO,EAAUzC,EAAK,WAAWhM,CAAC,EAC3B0O,EAAc,CAAE,EACZ7J,EAAE,EAAGA,EAAE4J,EAAQ,OAAO,OAAQ,EAAE5J,EACnC4J,EAAQ,OAAO5J,CAAC,IAAM,IAEf4J,EAAQ,OAAO5J,CAAC,IAAM,EAC9B6J,EAAY,KAAK,CAAC,IAAKD,EAAQ,MAAO,IAAK5J,CAAC,EAAE,KAAK,EAAE,CAAC,EAEtD6J,EAAY,KAAK,CAACD,EAAQ,OAAO5J,CAAC,EAAG,KAAM4J,EAAQ,MAAO,IAAK5J,CAAC,EAAE,KAAK,EAAE,CAAC,GAG3E6J,EAAY,SAAW,EACxBtC,EAAK,KAAK,IAAMpM,EAAI,IAAI,EAExBoM,EAAK,KAAK,CAAC,IAAKpM,EAAG,IAAK0O,EAAY,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAE1D,CAGD,IAAIC,EAAW7C,GAAK,CAAE,EAAC,OAAOE,EAAK,IAAI,QAAQ,EAC1B,OAAOA,EAAK,KAAK,QAAQ,EACzB,OAAOA,EAAK,KAAK,QAAQ,CAAC,EAC/CI,EAAOA,EAAK,OAAOuC,CAAQ,EACvBvC,EAAK,OAAS,GAChBnC,EAAK,KAAK,OAASmC,EAAK,KAAK,GAAG,CAAC,EAEnC,QAAQpM,EAAE,EAAGA,EAAEgM,EAAK,UAAU,OAAQ,EAAEhM,EACtCiK,EAAK,KAAK,IAAIjK,EAAE,KAAK,EAIpBgM,EAAK,IAAI,KAAK,OAAS,GACxB/B,EAAK,KAAK2C,GAAaZ,EAAK,IAAKA,EAAMc,CAAM,CAAC,EAIhD,IAAIb,EAAOW,GAAaZ,EAAK,KAAMA,EAAMc,CAAM,EAC3CP,EAAUG,GAAa2B,CAAU,EAClC9B,EAAUzC,EACXG,EAAK,KAAKqC,GAAUC,EAAS8B,EAAW,CAAC,EAAGrC,EAAMC,CAAI,CAAC,EAEvDhC,EAAK,KAAK8B,GAAUsC,EAAW,CAAC,EAAGrC,EAAMC,CAAI,CAAC,EAI7CD,EAAK,KAAK,KAAK,OAAS,GACzB/B,EAAK,KAAK2C,GAAaZ,EAAK,KAAMA,EAAMc,CAAM,CAAC,EAG9Cd,EAAK,OACN,QAAQ,IAAI,oCAAqCgC,EAAS;AAAA,EAAQ/D,EAAK,KAAK;AAAA,CAAI,EAAI;AAAA,WAAc,EAGpG,IAAI2E,EAAW,CAAE5C,EAAK,UAAU,UAAY,eAAgBW,EAAO,CAAC,EAAE,KAAK,GAAG,EAAE,IAAIJ,EAAQoB,GAAYb,CAAM,CAAC,EAAE,KAAK,EAAE,EACpH/J,EAAI,IAAI,SAAS,CAAC,YAAY6L,EAAS,IAAKL,EAAQ,KAAK,GAAG,EAAE,KAAMtE,EAAK,KAAK;AAAA,CAAI,EAAE,YAAa2E,CAAQ,EAAE,KAAK,EAAE,CAAC,EACvH,OAAO7L,EAAG,CACZ,CACA,IAAA8L,GAAiBd,GC5Ubc,GAAUxF,GAEd,SAASyF,GAAY9C,EAAM,CACzB,IAAI/B,EAAO,CAAC,eAAgB,eAAe,EACvCmC,EAAO,CAAE,EACT2C,EAAY/C,EAAK,SAAW,eAGhC/B,EAAK,KAAK,CAAC,mBAAoB8E,EAAW,IAAK/C,EAAK,SAAS,KAAK,GAAG,EAAG,IAAI,EAAE,KAAK,EAAE,CAAC,EAOtF,QANIgC,EAAU,CAAE,EACZgB,EAAiB,CAAE,EACnBC,EAAY,CAAC,CAAC,QAAQjD,EAAK,UAAU,CAAC,EAAE,gBAC1B,KAAK,IAAI,EAAEA,EAAK,kBAAkB,CAAC,CAAC,EAAEA,EAAK,kBAAkB,CAAC,EAAE,EAAG,IAAIA,EAAK,kBAAkB,CAAC,EAAE,IAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EACjIkD,EAAwB,GAAIC,EAAkB,CAAE,EAE5CnP,EAAE,EAAGA,EAAEgM,EAAK,UAAU,OAAQ,EAAEhM,EAAG,CACzC,IAAI6E,EAAImH,EAAK,UAAUhM,CAAC,EACxBoM,EAAK,KAAK,CAAC,IAAKvH,EAAG,SAAUA,EAAG,UACrB,IAAKA,EAAG,SAAUA,EAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,EAClDmJ,EAAQ,KAAK,IAAMnJ,CAAC,EACpBmJ,EAAQ,KAAK,IAAMnJ,CAAC,EACpBmK,EAAe,KAAK,IAAInK,CAAC,EACzBmK,EAAe,KAAK,IAAInK,EAAE,SAAS,EACnCoK,EAAU,KAAK,QAAUpK,EAAI,OAAO,EACpCoK,EAAU,KAAK,QAAUpK,EAAI,SAAS,EACtCoK,EAAU,KAAK,QAAUpK,EAAI,WAAW,EACpC7E,EAAE,IACJkP,EAAsB,KAAK,QAAUlD,EAAK,UAAU,CAAC,EAAI,wBAA0BnH,EAAI,kBAAoB,KAAK,IAAImH,EAAK,kBAAkB,CAAC,CAAC,EAAE,KAAK,IAAIA,EAAK,kBAAkBhM,CAAC,CAAC,EAAE,EACnLmP,EAAgB,KAAK,QAAUnD,EAAK,UAAU,CAAC,EAAI,qBAAuB,KAAK,IAAI,EAAEA,EAAK,kBAAkB,CAAC,CAAC,EAAI,YAAcnH,EAAI,qBAAuB,KAAK,IAAI,EAAEmH,EAAK,kBAAkBhM,CAAC,CAAC,EAAI,GAAG,EAEzM,CAEGgM,EAAK,UAAU,OAAS,IAC1B/B,EAAK,KAAK,SAAWiF,EAAsB,KAAK,MAAM,EAAI,8EAA8E,EACxIjF,EAAK,KAAK,2BAA6B+B,EAAK,UAAU,CAAC,EAAI,iBAAmB,KAAK,IAAIA,EAAK,kBAAkB,CAAC,CAAC,EAAI,sBAAsB,EAC1I/B,EAAK,KAAK,SAAWkF,EAAgB,KAAK,MAAM,EAAI,qEAAqE,EACzHlF,EAAK,KAAK,GAAG,GAGf,QAAQjK,EAAE,EAAGA,EAAEgM,EAAK,WAAW,OAAQ,EAAEhM,EACvCiP,EAAU,KAAK,SAAWjD,EAAK,WAAWhM,CAAC,CAAC,EAG9CoM,EAAK,KAAK,CAAC,SAAU4C,EAAe,KAAK,GAAG,EAAG,UAAU,EAAE,KAAK,EAAE,CAAC,EACnE5C,EAAK,KAAK,mBAAmB,EAC7BnC,EAAK,KAAK,OAASmC,EAAK,KAAK,GAAG,CAAC,EAEjCnC,EAAK,KAAK,CAAC,aACA,8BAA+B+D,EAAQ,KAAK,GAAG,EAAG,MAClD,eAAgBiB,EAAU,KAAK,GAAG,EAAG,IAAI,EAAE,KAAK,EAAE,CAAC,EAE3DjD,EAAK,OACN,QAAQ,IAAI;AAAA,EAA4B/B,EAAK,KAAK;AAAA,CAAI,EAAI;AAAA,WAAc,EAI1E,IAAImF,EAAQ,IAAI,SAAS,UAAWnF,EAAK,KAAK;AAAA,CAAI,CAAC,EACnD,OAAOmF,EAAMP,GAAQ,KAAK,OAAW7C,CAAI,CAAC,CAC5C,CAEA,IAAAoD,GAAiBN,GCnFbA,GAAczF,GAElB,SAASgG,IAAY,CACnB,KAAK,SAAW,CAAE,EAClB,KAAK,SAAW,CAAE,EAClB,KAAK,UAAY,CAAE,EACnB,KAAK,kBAAoB,CAAE,EAC3B,KAAK,WAAa,CAAE,EACpB,KAAK,WAAa,CAAE,EACpB,KAAK,eAAiB,CAAE,EACxB,KAAK,UAAY,CAAE,EACnB,KAAK,UAAY,CAAE,EACnB,KAAK,SAAW,GAChB,KAAK,IAAM,KACX,KAAK,KAAO,KACZ,KAAK,KAAO,KACZ,KAAK,MAAQ,EACf,CAEA,SAASC,GAAaC,EAAW,CAE/B,IAAIvD,EAAO,IAAIqD,GAGfrD,EAAK,IAASuD,EAAU,IACxBvD,EAAK,KAASuD,EAAU,KACxBvD,EAAK,KAASuD,EAAU,KAGxB,IAAIN,EAAYM,EAAU,KAAK,MAAM,CAAC,EACtCvD,EAAK,SAAWiD,EAChB,QAAQjP,EAAE,EAAGA,EAAEiP,EAAU,OAAQ,EAAEjP,EAAG,CACpC,IAAIwP,EAAWP,EAAUjP,CAAC,EAC1B,GAAGwP,IAAa,SAAY,OAAOA,GAAa,UAAYA,EAAS,aAAe,CAKlF,GAJAxD,EAAK,SAAShM,CAAC,EAAI,QACnBgM,EAAK,UAAU,KAAKhM,CAAC,EACrBgM,EAAK,kBAAkB,KAAKwD,EAAS,aAAeA,EAAS,aAAe,CAAC,EAC7ExD,EAAK,SAAS,KAAK,QAAUhM,CAAC,EAC3BA,EAAIgM,EAAK,IAAI,KAAK,QAAUA,EAAK,IAAI,KAAKhM,CAAC,EAAE,MAAM,EACpD,MAAM,IAAI,MAAM,iDAAiD,EAEnE,GAAGA,EAAIgM,EAAK,KAAK,KAAK,QAAUA,EAAK,KAAK,KAAKhM,CAAC,EAAE,MAAM,EACtD,MAAM,IAAI,MAAM,kDAAkD,CAE1E,SAAcwP,IAAa,SACrBxD,EAAK,WAAW,KAAKhM,CAAC,EACtBgM,EAAK,SAAS,KAAK,SAAWhM,CAAC,UACvBwP,IAAa,QAAS,CAE9B,GADAxD,EAAK,UAAU,KAAKhM,CAAC,EAClBA,EAAIgM,EAAK,IAAI,KAAK,QAAUA,EAAK,IAAI,KAAKhM,CAAC,EAAE,MAAQ,EACtD,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAGA,EAAIgM,EAAK,KAAK,KAAK,QAAUA,EAAK,KAAK,KAAKhM,CAAC,EAAE,OAChD,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAGA,EAAIgM,EAAK,KAAK,KAAK,QAAUA,EAAK,KAAK,KAAKhM,CAAC,EAAE,MAAQ,EACxD,MAAM,IAAI,MAAM,mDAAmD,CAE3E,SAAcwP,IAAa,QAAS,CAE9B,GADAxD,EAAK,UAAU,KAAKhM,CAAC,EAClBA,EAAIgM,EAAK,IAAI,KAAK,QAAUA,EAAK,IAAI,KAAKhM,CAAC,EAAE,OAC9C,MAAM,IAAI,MAAM,iDAAiD,EAEnE,GAAGA,EAAIgM,EAAK,KAAK,KAAK,QAAUA,EAAK,KAAK,KAAKhM,CAAC,EAAE,OAChD,MAAM,IAAI,MAAM,kDAAkD,EAEpE,GAAGA,EAAIgM,EAAK,KAAK,KAAK,QAAUA,EAAK,KAAK,KAAKhM,CAAC,EAAE,OAChD,MAAM,IAAI,MAAM,kDAAkD,CAErE,SAAS,OAAOwP,GAAa,UAAYA,EAAS,OACjDxD,EAAK,SAAShM,CAAC,EAAI,SACnBgM,EAAK,WAAW,KAAK,CAAE,MAAOwD,EAAS,MAAO,OAAOA,EAAS,OAAQ,EACtExD,EAAK,eAAe,KAAKhM,CAAC,MAE1B,OAAM,IAAI,MAAM,gCAAkCiP,EAAUjP,CAAC,CAAC,CAEjE,CAGD,GAAGgM,EAAK,UAAU,QAAU,EAC1B,MAAM,IAAI,MAAM,qCAAqC,EAIvD,GAAGA,EAAK,IAAI,KAAK,OAASiD,EAAU,OAClC,MAAM,IAAI,MAAM,0CAA0C,EAE5D,GAAGjD,EAAK,KAAK,KAAK,OAASiD,EAAU,OACnC,MAAM,IAAI,MAAM,2CAA2C,EAE7D,GAAGjD,EAAK,KAAK,KAAK,OAASiD,EAAU,OACnC,MAAM,IAAI,MAAM,2CAA2C,EAI7D,OAAAjD,EAAK,MAAQ,CAAC,CAACuD,EAAU,WAAa,CAAC,CAACA,EAAU,MAGlDvD,EAAK,SAAWuD,EAAU,UAAY,QAGtCvD,EAAK,UAAYuD,EAAU,WAAa,GAEjCT,GAAY9C,CAAI,CACzB,CAEA,IAAAyD,GAAiBH,gBC1GjB,IAAIT,EAAUxF,GAEVqG,EAAY,CACd,KAAM,GACN,KAAM,CAAE,EACR,SAAU,CAAE,EACZ,UAAW,CAAE,CACd,EAED,SAASC,EAAM9L,EAAG,CAChB,GAAG,CAACA,EACF,OAAO6L,EAET,QAAQ1P,EAAE,EAAGA,EAAE6D,EAAE,KAAK,OAAQ,EAAE7D,EAAG,CACjC,IAAIgB,EAAI6C,EAAE,KAAK7D,CAAC,EACbA,IAAM,EACP6D,EAAE,KAAK7D,CAAC,EAAI,CAAC,KAAMgB,EAAG,OAAO,GAAM,OAAQ,CAAC,CAAC6C,EAAE,OAAQ,MAAMA,EAAE,OAAO,CAAG,EAEzEA,EAAE,KAAK7D,CAAC,EAAI,CAAC,KAAMgB,EAAG,OAAO,GAAO,OAAO,GAAM,MAAO,CAAC,CAE5D,CACD,OAAI6C,EAAE,WACJA,EAAE,SAAW,CAAE,GAEbA,EAAE,YACJA,EAAE,UAAY,CAAE,GAEXA,CACR,CAED,SAAS+L,EAASL,EAAW,CAC3B,OAAOV,EAAQ,CACb,KAAUU,EAAU,KACpB,IAAUI,EAAMJ,EAAU,GAAG,EAC7B,KAAUI,EAAMJ,EAAU,IAAI,EAC9B,KAAUI,EAAMJ,EAAU,IAAI,EAC9B,SAAUA,EAAU,QACxB,CAAG,CACF,CAED,SAASM,EAAON,EAAW,CAEzB,QADI7O,EAAO,CAAE,EACLV,EAAE,EAAGA,EAAEuP,EAAU,KAAK,OAAQ,EAAEvP,EACtCU,EAAK,KAAK,IAAIV,CAAC,EAEjB,IAAI8P,EAAU,IAAI,SAAS,IAAK,CAC9B,mBAAoBP,EAAU,SAAU,eAAgB7O,EAAK,KAAK,GAAG,EAAG,QAASA,EAAK,KAAK,GAAG,EAAG,cACrG,EAAI,KAAK,EAAE,CAAC,EACV,OAAOoP,EAAQF,EAASL,CAAS,CAAC,CACnC,CAED,IAAIQ,EAAa,CACf,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,KAAM,IACN,IAAM,IACN,KAAM,IACN,OAAQ,KACR,OAAQ,KACR,QAAS,KACV,GACC,UAAU,CACV,QAAQC,KAAMD,EAAY,CACxB,IAAIE,EAAKF,EAAWC,CAAE,EACtBE,EAAQF,CAAE,EAAIH,EAAO,CACnB,KAAM,CAAC,QAAQ,QAAQ,OAAO,EAC9B,KAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EACjB,KAAM,MAAMI,EAAG,GAAG,EACzB,SAAUD,CAChB,CAAK,EACDE,EAAQF,EAAG,IAAI,EAAIH,EAAO,CACxB,KAAM,CAAC,QAAQ,OAAO,EACtB,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EACb,KAAK,IAAII,EAAG,IAAI,EACvB,OAAQ,GACR,SAAUD,EAAG,IACnB,CAAK,EACDE,EAAQF,EAAG,GAAG,EAAIH,EAAO,CACvB,KAAM,CAAC,QAAS,QAAS,QAAQ,EACjC,KAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EACjB,KAAK,MAAMI,EAAG,GAAG,EACxB,SAAUD,EAAG,GACnB,CAAK,EACDE,EAAQF,EAAG,KAAK,EAAIH,EAAO,CACzB,KAAM,CAAC,QAAQ,QAAQ,EACvB,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EACb,KAAK,IAAII,EAAG,IAAI,EACvB,OAAQ,GACR,SAAUD,EAAG,KACnB,CAAK,CACF,CACH,KAEA,IAAIG,EAAY,CACd,IAAK,IACL,KAAM,IACN,IAAK,IACL,MAAO,MACR,GACC,UAAU,CACV,QAAQH,KAAMG,EAAW,CACvB,IAAIF,EAAKE,EAAUH,CAAE,EACrBE,EAAQF,CAAE,EAAIH,EAAO,CACnB,KAAM,CAAC,QAAS,OAAO,EACvB,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EACb,KAAK,KAAKI,EAAG,GAAG,EACvB,SAAUD,CAChB,CAAK,EACDE,EAAQF,EAAG,IAAI,EAAIH,EAAO,CACxB,KAAM,CAAC,OAAO,EACd,KAAM,CAAC,KAAK,CAAC,GAAG,EACT,KAAK,KAAKI,EAAG,GAAG,EACvB,OAAQ,GACR,MAAO,EACP,SAAUD,EAAG,IACnB,CAAK,CACF,CACH,KAEA,IAAII,EAAa,CACf,IAAK,KACL,GAAI,KACJ,GAAI,MACJ,IAAK,MACL,GAAI,IACJ,GAAI,IACJ,IAAK,KACL,IAAK,IACN,GACC,UAAW,CACX,QAAQJ,KAAMI,EAAY,CACxB,IAAIH,EAAKG,EAAWJ,CAAE,EACtBE,EAAQF,CAAE,EAAIH,EAAO,CACnB,KAAM,CAAC,QAAQ,QAAQ,OAAO,EAC9B,KAAM,CAAC,KAAK,CAAC,IAAK,IAAK,GAAG,EACnB,KAAK,MAAMI,EAAG,GAAG,EACxB,SAAUD,CAChB,CAAK,EACDE,EAAQF,EAAG,GAAG,EAAIH,EAAO,CACvB,KAAM,CAAC,QAAQ,QAAQ,QAAQ,EAC/B,KAAM,CAAC,KAAK,CAAC,IAAK,IAAK,GAAG,EACnB,KAAK,MAAMI,EAAG,GAAG,EACxB,SAAUD,EAAG,GACnB,CAAK,EACDE,EAAQF,EAAG,IAAI,EAAIH,EAAO,CACxB,KAAM,CAAC,QAAS,OAAO,EACvB,KAAM,CAAC,KAAK,CAAC,IAAK,GAAG,EACd,KAAK,MAAMI,EAAG,GAAG,EACxB,OAAO,GACP,MAAM,EACN,SAAUD,EAAG,IACnB,CAAK,EACDE,EAAQF,EAAG,KAAK,EAAIH,EAAO,CACzB,KAAM,CAAC,QAAS,QAAQ,EACxB,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EACb,KAAK,MAAMI,EAAG,GAAG,EACxB,OAAO,GACP,MAAM,EACN,SAAUD,EAAG,KACnB,CAAK,CACF,CACH,KAEA,IAAIK,EAAa,CACf,MACA,OACA,OACA,OACA,OACA,MACA,MACA,QACA,MACA,QACA,MACA,OACA,KACD,GACC,UAAW,CACX,QAAQrQ,EAAE,EAAGA,EAAEqQ,EAAW,OAAQ,EAAErQ,EAAG,CACrC,IAAI+C,EAAIsN,EAAWrQ,CAAC,EACpBkQ,EAAQnN,CAAC,EAAI8M,EAAO,CACJ,KAAM,CAAC,QAAS,OAAO,EACvB,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAG,KAAK,cAAe,SAAS,CAAC,QAAQ,CAAC,EAC9D,SAAUA,CAC9B,CAAmB,EACfmN,EAAQnN,EAAE,IAAI,EAAI8M,EAAO,CACP,KAAM,CAAC,OAAO,EACd,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAM,CAAC,GAAG,EAAG,KAAK,cAAe,SAAS,CAAC,QAAQ,CAAC,EAC3D,OAAQ,GACR,MAAO,EACP,SAAUA,EAAE,IAClC,CAAqB,CAClB,CACH,KAEA,IAAIuN,EAAY,CACd,MACA,MACA,QACA,KACD,GACC,UAAU,CACV,QAAQtQ,EAAE,EAAGA,EAAEsQ,EAAU,OAAQ,EAAEtQ,EAAG,CACpC,IAAI+C,EAAGuN,EAAUtQ,CAAC,EAClBkQ,EAAQnN,CAAC,EAAI8M,EAAO,CACN,KAAK,CAAC,QAAS,QAAS,OAAO,EAC/B,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EACpE,SAAUA,CAC5B,CAAiB,EACbmN,EAAQnN,EAAE,GAAG,EAAI8M,EAAO,CACV,KAAK,CAAC,QAAS,QAAS,QAAQ,EAChC,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EACpE,SAAUA,EAAE,GAC9B,CAAmB,EACfmN,EAAQnN,EAAE,IAAI,EAAI8M,EAAO,CAAE,KAAK,CAAC,QAAS,OAAO,EACnC,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EAChE,OAAQ,GACR,MAAO,EACP,SAAUA,EAAE,IAC9B,CAAmB,EACfmN,EAAQnN,EAAE,KAAK,EAAI8M,EAAO,CAAE,KAAK,CAAC,QAAS,QAAQ,EACrC,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EAChE,OAAO,GACP,MAAM,EACN,SAAUA,EAAE,KAC9B,CAAmB,CAChB,CACH,KAEA,IAAIwN,EAAe,CACjB,QACA,KACD,GACC,UAAU,CACV,QAAQvQ,EAAE,EAAGA,EAAEuQ,EAAa,OAAQ,EAAEvQ,EAAG,CACvC,IAAI+C,EAAGwN,EAAavQ,CAAC,EACrBkQ,EAAQnN,EAAE,IAAI,EAAI8M,EAAO,CACX,KAAK,CAAC,QAAS,QAAS,OAAO,EAC/B,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EACpE,SAAUA,EAAE,IAC9B,CAAiB,EACbmN,EAAQnN,EAAE,KAAK,EAAI8M,EAAO,CACZ,KAAK,CAAC,QAAS,QAAS,QAAQ,EAChC,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EACpE,SAAUA,EAAE,KAC9B,CAAmB,EACfmN,EAAQnN,EAAE,MAAM,EAAI8M,EAAO,CAAE,KAAK,CAAC,QAAS,OAAO,EACrC,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EAChE,OAAQ,GACR,MAAO,EACP,SAAUA,EAAE,MAC9B,CAAmB,EACfmN,EAAQnN,EAAE,OAAO,EAAI8M,EAAO,CAAE,KAAK,CAAC,QAAS,QAAQ,EACvC,IAAK,CAAC,KAAK,CAAA,EAAI,KAAK,eAAe9M,EAAG,SAAS,CAAC,QAAQ,CAAC,EACzD,KAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAG,KAAK,gBAAiB,SAAS,CAAC,QAAQ,CAAC,EAChE,OAAO,GACP,MAAM,EACN,SAAUA,EAAE,OAC9B,CAAmB,CAChB,CACH,KAEAmN,EAAA,IAAcrB,EAAQ,CACpB,KAAK,CAAC,OAAO,EACb,IAAKa,EACL,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,qBAAsB,UAAW,CAAE,EAAE,SAAU,EAAE,EACrH,KAAM,CAAC,KAAK,CAAA,EAAI,UAAU,CAAE,EAAE,SAAS,CAAA,EAAI,KAAK,cAAc,EAC9D,SAAU,KACZ,CAAC,EAEDQ,EAAA,IAAcrB,EAAQ,CACpB,KAAK,CAAC,OAAO,EACb,IAAKa,EACL,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,uBAAwB,UAAW,CAAE,EAAE,SAAU,EAAE,EACvH,KAAM,CAAC,KAAK,CAAA,EAAI,UAAU,CAAE,EAAE,SAAS,CAAA,EAAI,KAAK,aAAa,EAC7D,SAAU,KACZ,CAAC,EAEDQ,EAAA,IAAcrB,EAAQ,CACpB,KAAK,CAAC,OAAO,EACb,IAAK,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,UAAU,EACjE,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,YAAa,UAAW,GAAI,SAAU,CAAC,QAAQ,CAAC,EACpH,KAAM,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,eAAe,EACvE,SAAU,KACZ,CAAC,EAEDqB,EAAA,KAAerB,EAAQ,CACrB,KAAK,CAAC,OAAO,EACb,IAAK,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,UAAU,EACjE,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,YAAa,UAAW,GAAI,SAAU,CAAC,QAAQ,CAAC,EACpH,KAAM,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,eAAe,EACvE,SAAU,MACZ,CAAC,EAEDqB,EAAA,aAAuBrB,EAAQ,CAC7B,KAAK,CAAC,OAAO,EACb,IAAK,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,UAAU,EACjE,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,cAAe,UAAW,GAAI,SAAU,CAAC,QAAQ,CAAC,EACtH,KAAM,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,eAAe,EACvE,SAAU,cACZ,CAAC,EAEDqB,EAAA,MAAgBrB,EAAQ,CACtB,KAAK,CAAC,OAAO,EACb,IAAK,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,UAAU,EACjE,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,cAAe,UAAW,GAAI,SAAU,CAAC,QAAQ,CAAC,EACtH,KAAM,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,0BAA0B,EAClF,SAAU,OACZ,CAAC,EAGDqB,EAAA,QAAkBrB,EAAQ,CACxB,KAAK,CAAC,OAAO,EACb,IAAK,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,UAAU,EACjE,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAK,sDAAuD,UAAW,GAAI,SAAU,CAAC,QAAQ,CAAC,EAC7J,KAAM,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,eAAe,EACvE,SAAU,SACZ,CAAC,EAEDqB,EAAA,MAAgBrB,EAAQ,CACtB,KAAK,CAAC,OAAO,EACb,IAAK,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,UAAU,EACjE,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EAAG,KAAM,mBAAoB,UAAW,GAAI,SAAU,CAAC,QAAQ,CAAC,EAC3H,KAAM,CAAC,KAAK,CAAE,EAAE,UAAU,CAAA,EAAI,SAAS,CAAC,QAAQ,EAAG,KAAK,eAAe,EACvE,SAAU,OACZ,CAAC,EAEDqB,EAAA,IAAcrB,EAAQ,CACpB,KAAM,CAAE,OAAS,EACjB,IACC,CAAE,KAAM,mBACN,KAAM,CAAE,EACR,SAAU,CAAE,QAAU,EACtB,UAAW,CAAA,CAAI,EAClB,KACC,CAAE,KAAM,mDACN,KAAM,CAAC,CAAC,KAAO,kBAAkB,OAAS,GAAM,OAAS,GAAK,MAAQ,CAAC,CAAG,EAC1E,SAAU,CAAE,QAAU,EACtB,UAAW,CAAA,CAAI,EAClB,KACC,CAAE,KAAM,gBACN,KAAM,CAAE,EACR,SAAU,CAAE,QAAU,EACtB,UAAW,CAAA,CAAI,CACpB,CAAE,EAEFqB,EAAA,IAAcrB,EAAQ,CACpB,KAAM,CAAE,OAAS,EACjB,IACC,CAAE,KAAM,kBACN,KAAM,CAAE,EACR,SAAU,CAAE,QAAU,EACtB,UAAW,CAAA,CAAI,EAClB,KACC,CAAE,KAAM,mDACN,KAAM,CAAC,CAAC,KAAO,kBAAkB,OAAS,GAAM,OAAS,GAAK,MAAQ,CAAC,CAAG,EAC1E,SAAU,CAAE,QAAU,EACtB,UAAW,CAAA,CAAI,EAClB,KACC,CAAE,KAAM,gBACN,KAAM,CAAE,EACR,SAAU,CAAE,QAAU,EACtB,UAAW,CAAA,CAAI,CACpB,CAAE,EAEFqB,EAAA,OAAiBrB,EAAQ,CACvB,KAAK,CAAC,QAAQ,QAAQ,OAAO,EAC7B,IAAI,CACF,KAAK,oDACL,KAAK,CACH,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAM,MAAM,CAAC,EACzD,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAM,MAAM,CAAC,EACzD,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAK,MAAM,CAAC,CACvD,EACH,SAAS,CAAC,SAAS,QAAQ,EAC3B,UAAU,CAAA,CAAE,EACd,KAAK,CACH,KAAK,iLACL,KAAK,CACH,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAK,MAAM,CAAC,EACxD,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAK,MAAM,CAAC,CAAC,EAC3D,SAAS,CAAC,SAAS,QAAQ,EAC3B,UAAU,CAAC,aAAa,CAAC,EAC3B,KAAK,CACH,KAAK,kBACL,KAAK,CAAE,EACP,SAAS,CAAC,QAAQ,EAClB,UAAU,CAAA,CAAE,CAChB,CAAC,EAEDqB,EAAA,OAAiBrB,EAAQ,CACvB,KAAK,CAAC,QAAQ,QAAQ,OAAO,EAC7B,IAAI,CACF,KAAK,qDACL,KAAK,CACH,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAM,MAAM,CAAC,EACzD,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAM,MAAM,CAAC,EACzD,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAK,MAAM,CAAC,CACvD,EACH,SAAS,CAAC,SAAS,QAAQ,EAC3B,UAAU,CAAA,CAAE,EACd,KAAK,CACH,KAAK,iLACL,KAAK,CACH,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAK,MAAM,CAAC,EACxD,CAAC,KAAK,kBAAkB,OAAO,GAAM,OAAO,GAAK,MAAM,CAAC,CAAC,EAC3D,SAAS,CAAC,SAAS,QAAQ,EAC3B,UAAU,CAAC,aAAa,CAAC,EAC3B,KAAK,CACH,KAAK,kBACL,KAAK,CAAE,EACP,SAAS,CAAC,QAAQ,EAClB,UAAU,CAAA,CAAE,CAChB,CAAC,EAEDqB,EAAA,OAAiBL,EAAO,CACtB,KAAM,CAAC,OAAO,EACd,IAAK,CAAC,KAAK,GAAI,KAAK,qBAAsB,SAAS,CAAC,QAAQ,CAAC,EAC7D,KAAM,CAAC,KAAM,CAAC,GAAG,EAAG,KAAK,aAAc,SAAS,CAAC,QAAQ,CAAC,EAC1D,SAAU,QACZ,CAAC,EAEDK,EAAA,OAAiBL,EAAO,CACtB,KAAK,CAAC,QAAS,OAAO,EACtB,KAAM,CAAC,KAAK,CAAC,IAAK,GAAG,EAAG,KAAK,KAAK,EAClC,SAAU,QAAQ,CAAE,EAEtBK,EAAA,QAAkBL,EAAO,CACvB,KAAK,CAAC,QAAS,QAAQ,EACvB,KAAM,CAAC,KAAK,CAAC,IAAK,GAAG,EAAG,KAAK,KAAK,EAClC,SAAU,SAAS,CAAE,EAGvBK,EAAA,OAAiBrB,EAAQ,CACvB,KAAK,CAAC,QAAS,OAAO,EACtB,IAAKa,EACL,KAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,EAC7C,CAAC,KAAK,IAAK,OAAO,GAAO,OAAO,GAAM,MAAM,CAAC,CAAC,EACrD,KAAM,0BACN,UAAW,CAAE,EACb,SAAU,CAAA,CAAE,EAClB,KAAM,CAAC,KAAK,CAAA,EAAI,UAAU,CAAE,EAAE,SAAS,CAAA,EAAI,KAAK,aAAa,EAC7D,SAAU,SACX,QCvcD,SAASc,GAAkBC,EAAQC,EAAU,CAE3C,GAAI,EAAED,aAAkB,YACtB,MAAM,IAAI,MAAM,sDAAsD,EAGxE,MAAME,EAAO,IAAI,KAAK,CAACF,CAAM,EAAG,CAC9B,KAAMC,CACV,CAAG,EACKE,EAAO,IAAI,gBAAgBD,CAAI,EAErC,OAAO,IAAI,QAAQ,CAACE,EAASC,IAAW,CACtC,MAAMC,EAAM,IAAI,MAChBA,EAAI,YAAc,YAElBA,EAAI,OAAS,UAAY,CACvB,IAAI,gBAAgBH,CAAI,EACxB,MAAMI,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,MAAQD,EAAI,MACnBC,EAAO,OAASD,EAAI,OACpB,MAAME,EAAUD,EAAO,WAAW,IAAI,EACtCC,EAAQ,UAAUF,EAAK,EAAG,CAAC,EAC3B,MAAMG,EAASD,EAAQ,aAAa,EAAG,EAAGF,EAAI,MAAOA,EAAI,MAAM,EAC/DF,EAAQxF,GAAQ,IAAI,WAAW6F,EAAO,IAAI,EAAG,CAACH,EAAI,MAAOA,EAAI,OAAQ,CAAC,EAAG,CAAC,EAAG,EAAIA,EAAI,MAAO,CAAC,EAAG,CAAC,CAAC,CACxG,EAEIA,EAAI,QAAUI,GAAO,CACnB,IAAI,gBAAgBP,CAAI,EACxBE,EAAOK,CAAG,CAChB,EAEIJ,EAAI,IAAMH,CACd,CAAG,CACH,CAyEA,eAAeQ,GAAUtG,EAAM4F,EAAU,CACvC,OAAOF,GAAkB1F,EAAM4F,CAAQ,CACzC,CC/Gk5B,SAASlL,IAAG,CAAC,OAAOA,GAAE,OAAO,OAAO,OAAO,OAAO,KAAI,EAAG,SAAStC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,OAAO,IAAI,CAAC,IAAIO,EAAE,UAAU,CAAC,EAAE,QAAQC,KAAKD,EAAE,OAAO,UAAU,eAAe,KAAKA,EAAEC,CAAC,IAAIR,EAAEQ,CAAC,EAAED,EAAEC,CAAC,EAAE,CAAC,OAAOR,CAAC,EAAEsC,GAAE,MAAM,KAAK,SAAS,CAAC,CAAC,SAASd,GAAExB,EAAE,EAAE,CAAC,OAAO,OAAO,eAAe,EAAE,OAAO,CAAC,MAAMA,CAAC,CAAC,EAAE,CAAC,CAAmvC,SAASqE,GAAErE,EAAE,CAAC,OAAOA,EAAE,SAAU,EAAC,QAAQ,wBAAwB,GAAG,CAAC,CAAC,SAASmC,GAAEnC,EAAE,EAAE,CAAC,MAAM,GAAGqE,GAAErE,CAAC,CAAC,MAAMqE,GAAE,CAAC,CAAC,KAAK,SAAS,EAAEvD,EAAEP,EAAE,EAAE,CAAC,OAAO,EAAEO,EAAE,IAAI,MAAM,KAAK,IAAI,EAAEA,CAAC,EAAE,EAAE,KAAK,QAAQP,CAAC,EAAE,GAAG,EAAEP,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS2C,GAAE3C,EAAE,CAAC,MAAM,EAAE,CAAA,EAAG,UAAUO,KAAKP,EAAE,eAAc,EAAG,EAAE,KAAKO,CAAC,EAAE,UAAUA,KAAKP,EAAE,YAAa,EAAC,UAAUA,KAAKO,EAAE,eAAgB,EAAC,EAAE,KAAKP,CAAC,EAAE,OAAO,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAuZ,SAASwC,GAAExC,EAAE,EAAEA,EAAE,CAAC,MAAMO,EAAE,GAAG,MAAM,IAAI,YAAYP,CAAC,EAAE,IAAI,YAAYA,CAAC,EAAE,QAAQA,EAAE,EAAEA,EAAEO,EAAE,OAAOP,IAAIO,EAAEP,CAAC,EAAEA,EAAE,OAAOO,CAAC,CAAmjD,SAAS0C,GAAGjD,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,IAAIO,EAAEC,EAAER,EAAE,KAAKO,EAAEC,EAAE,cAAa,GAAI,CAAC,GAAG,EAAE,IAAID,CAAC,EAAE,MAAM,IAAI,MAAM,qCAAqC,EAAE,EAAE,IAAIA,CAAC,EAAEC,EAAED,CAAC,CAAC,OAAOC,EAAE,YAAW,EAAG,OAAOR,GAAGA,aAAaM,EAAC,CAAC,CAAC,SAAS6C,GAAGnD,EAAE,CAAC,MAAM,EAAEiD,GAAGjD,CAAC,EAAEO,EAAEP,EAAE,cAAe,EAAC,GAAG,CAACO,EAAE,OAAOP,EAAEA,EAAE,UAAUA,EAAE,eAAc,CAAE,EAAEO,EAAE,YAAYP,CAAC,EAAE,UAAUO,KAAK,EAAEA,EAAE,SAASP,CAAC,EAAE,OAAOA,CAAC,CAAC,IAAIqD,GAAgB,OAAO,aAApB,IAAiC,aAAa,MAAipB,SAASc,GAAGnE,EAAE,EAAEO,EAAE,CAAC,IAAIC,EAAE,EAAE,CAAC,EAAEF,EAAE,EAAE,CAAC,EAAEI,EAAE,EAAE,CAAC,EAAE5D,EAAE,EAAE,CAAC,EAAEgB,EAAE,EAAE,CAAC,EAAE6B,EAAE,EAAE,CAAC,EAAE5C,EAAE,EAAE,CAAC,EAAEgD,EAAE,EAAE,CAAC,EAAEL,EAAE,EAAE,CAAC,EAAEG,EAAE,EAAE,CAAC,EAAEI,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEJ,EAAE,EAAE,EAAE,EAAEF,EAAE,EAAE,EAAE,EAAEgB,EAAE,EAAE,EAAE,EAAEH,EAAE,EAAE,EAAE,EAAEL,EAAEG,EAAE,CAAC,EAAEM,EAAEN,EAAE,CAAC,EAAEQ,EAAER,EAAE,CAAC,EAAES,EAAET,EAAE,CAAC,EAAE,OAAOP,EAAE,CAAC,EAAEI,EAAEI,EAAEK,EAAE/C,EAAEiD,EAAErB,EAAEsB,EAAElB,EAAEE,EAAE,CAAC,EAAEI,EAAEE,EAAEO,EAAElB,EAAEoB,EAAElB,EAAEmB,EAAEpB,EAAEI,EAAE,CAAC,EAAEI,EAAEM,EAAEG,EAAE9D,EAAEgE,EAAEd,EAAEe,EAAEJ,EAAEZ,EAAE,CAAC,EAAEI,EAAEtD,EAAE+D,EAAEd,EAAEgB,EAAEb,EAAEc,EAAEP,EAAET,EAAE,CAAC,GAAGI,EAAEG,EAAE,CAAC,GAAGC,GAAGK,EAAEN,EAAE,CAAC,GAAGzC,GAAGiD,EAAER,EAAE,CAAC,GAAGb,GAAGsB,EAAET,EAAE,CAAC,GAAGT,EAAEE,EAAE,CAAC,EAAEI,EAAEE,EAAEO,EAAElB,EAAEoB,EAAElB,EAAEmB,EAAEpB,EAAEI,EAAE,CAAC,EAAEI,EAAEM,EAAEG,EAAE9D,EAAEgE,EAAEd,EAAEe,EAAEJ,EAAEZ,EAAE,CAAC,EAAEI,EAAEtD,EAAE+D,EAAEd,EAAEgB,EAAEb,EAAEc,EAAEP,EAAET,EAAE,CAAC,GAAGI,EAAEG,EAAE,CAAC,GAAGC,GAAGK,EAAEN,EAAE,CAAC,GAAGzC,GAAGiD,EAAER,EAAE,EAAE,GAAGb,GAAGsB,EAAET,EAAE,EAAE,GAAGT,EAAEE,EAAE,CAAC,EAAEI,EAAEE,EAAEO,EAAElB,EAAEoB,EAAElB,EAAEmB,EAAEpB,EAAEI,EAAE,EAAE,EAAEI,EAAEM,EAAEG,EAAE9D,EAAEgE,EAAEd,EAAEe,EAAEJ,EAAEZ,EAAE,EAAE,EAAEI,EAAEtD,EAAE+D,EAAEd,EAAEgB,EAAEb,EAAEc,EAAEP,EAAET,EAAE,EAAE,GAAGI,EAAEG,EAAE,EAAE,GAAGC,GAAGK,EAAEN,EAAE,EAAE,GAAGzC,GAAGiD,EAAER,EAAE,EAAE,GAAGb,GAAGsB,EAAET,EAAE,EAAE,GAAGT,EAAEE,EAAE,EAAE,EAAEI,EAAEE,EAAEO,EAAElB,EAAEoB,EAAElB,EAAEmB,EAAEpB,EAAEI,EAAE,EAAE,EAAEI,EAAEM,EAAEG,EAAE9D,EAAEgE,EAAEd,EAAEe,EAAEJ,EAAEZ,EAAE,EAAE,EAAEI,EAAEtD,EAAE+D,EAAEd,EAAEgB,EAAEb,EAAEc,EAAEP,EAAET,CAAC,CAAC,SAASwE,IAAI,CAAC,IAAIxE,EAAE,IAAIqD,GAAG,CAAC,EAAE,OAAOA,IAAI,eAAerD,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,GAAGA,CAAC,CAA+Q,SAASkE,GAAGlE,EAAE,EAAE,CAAC,IAAIO,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEF,EAAE,EAAE,CAAC,EAAEI,EAAEH,EAAEA,EAAEC,EAAEA,EAAEF,EAAEA,EAAE,OAAOI,EAAE,IAAIA,EAAE,EAAE,KAAK,KAAKA,CAAC,GAAGV,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEU,EAAEV,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEU,EAAEV,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEU,EAAEV,CAAC,CAAC,SAAS4D,GAAG5D,EAAE,EAAEO,EAAE,CAAC,IAAIC,EAAE,EAAE,CAAC,EAAEF,EAAE,EAAE,CAAC,EAAEI,EAAE,EAAE,CAAC,EAAE5D,EAAEyD,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,EAAE,EAAEG,EAAEH,EAAE,EAAE,EAAE,OAAOP,EAAE,CAAC,GAAGO,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAEG,EAAEH,EAAE,EAAE,IAAIzD,EAAEA,GAAG,GAAGkD,EAAE,CAAC,GAAGO,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAEG,EAAEH,EAAE,EAAE,GAAGzD,EAAEkD,EAAE,CAAC,GAAGO,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,EAAE,EAAEG,EAAEH,EAAE,EAAE,GAAGzD,EAAEkD,CAAC,CAAC,SAASyD,GAAGzD,EAAE,EAAEO,EAAE,CAAC,IAAIC,EAAE,EAAE,CAAC,EAAEF,EAAE,EAAE,CAAC,EAAEI,EAAE,EAAE,CAAC,EAAE,OAAOV,EAAE,CAAC,EAAEQ,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAEG,EAAEH,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAEQ,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAEG,EAAEH,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAEQ,EAAED,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAEG,EAAEH,EAAE,CAAC,EAAEP,CAAC,CAAC,KAAK,QAAQ,KAAK,MAAM,UAAU,CAAC,QAAQA,EAAE,EAAE,EAAE,UAAU,OAAO,KAAKA,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,KAAK,KAAKA,CAAC,CAAC,GAAG,IAAI0E,GAAG,SAAS1E,EAAE,EAAEO,EAAE,CAAC,OAAOP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,CAAC,EAAE,SAAS,IAAI,CAAC,IAAIA,EAAE,IAAIqD,GAAG,CAAC,EAAE,OAAOA,IAAI,eAAerD,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,GAAGA,CAAC,CAACwE,GAAI,EAAC,IAAIJ,GAAG,SAASpE,EAAE,EAAEO,EAAE,CAAC,OAAOP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,CAAC,EAAEyF,GAAG,SAASzF,EAAE,EAAEO,EAAE,CAAC,OAAOP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEO,EAAE,CAAC,EAAEP,CAAC,EAAE4E,GAAG,SAAS5E,EAAE,CAAC,OAAO,KAAK,MAAMA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,GAAE,EAAuCc,EAAE,SAASA,EAAE,KAAKA,EAAE,QAAQA,EAAE,SAASA,EAAE,KAA+jI,MAAMiE,GAAG,0BAA0B,SAASI,GAAGnF,EAAE,CAAC,OAAOA,EAAE,SAAQ,EAAG,gBAAgBA,CAAC,EAAE,KAAKA,GAAGA,EAAE,cAAa,EAAG,SAAS+E,GAAG,KAAK/E,EAAE,QAAS,CAAA,CAAC,EAAE,OAAO,IAAI,CAAwP,SAASmO,GAAGnO,EAAE,CAAC,MAAM,EAAEA,EAAE,SAAQ,EAAGO,EAAE,IAAI,IAAIC,EAAE,IAAI,IAAI,OAAO,SAASR,EAAEM,EAAE,CAAC,MAAMI,EAAE,IAAI,IAAI,UAAUV,KAAK,EAAE,eAAeM,CAAC,EAAEN,EAAE,SAAU,YAAWL,IAAGe,EAAE,IAAIV,EAAE,QAAO,EAAG,MAAM,EAAE,UAAUlD,KAAK,EAAE,eAAewD,CAAC,EAAE,CAAC,MAAMQ,EAAEhE,EAAE,SAAU,EAACyD,EAAE,IAAIO,CAAC,IAAIP,EAAE,IAAIO,CAAC,EAAEA,aAAahD,GAAG4C,EAAE,IAAI5D,EAAE,QAAS,CAAA,EAAE0D,EAAE,IAAIM,CAAC,EAAEA,aAAa/D,IAAGiD,EAAEc,CAAC,EAAE,CAAC,EAAEd,CAAC,EAAE,MAAM,KAAKQ,CAAC,CAAC,CAAC,SAAS+D,GAAGvE,EAAE,CAAC,MAAM,EAAEO,GAAE,UAAUP,EAAE,SAAU,CAAA,EAAE,QAAS,EAACQ,EAAER,EAAE,SAAU,EAAC,gBAAgBA,CAAC,EAAE,OAAOA,GAAGA,EAAE,UAAW,IAAG,CAAC,EAAE,IAAIA,GAAGA,EAAE,SAAS,EAAE,OAAO,MAAM,KAAK,IAAI,IAAIQ,CAAC,CAAC,CAAC,CAAC,MAAMmF,GAAG,QAAQhB,GAAG,EAAE,IAAIa,GAAG,CAAC,cAAc,CAAC1E,EAAE,KAAKA,EAAE,KAAKA,EAAE,KAAKA,EAAE,OAAOA,EAAE,UAAUA,EAAE,iBAAiBA,EAAE,UAAUA,EAAE,SAASA,EAAE,QAAQA,EAAE,SAASA,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,kBAAkB,EAAE,EAAE,SAASsN,GAAGpO,EAAEwF,GAAG,CAAC,MAAMjF,EAAE+B,GAAE,CAAE,EAACkD,GAAGxF,CAAC,EAAEQ,EAAE,IAAI,IAAID,EAAE,aAAa,EAAE,OAAOiB,GAAEmE,GAAG,MAAM3F,GAAG,CAAC,MAAMM,EAAEN,EAAE,UAAS,EAAGU,EAAEV,EAAE,QAAO,EAAGlD,EAAEkD,EAAE,SAAU,EAAClC,EAAE,IAAIsH,GAAG,GAAG5E,EAAE,IAAIM,EAAE,IAAI,EAAE,UAAUd,KAAKU,EAAE,WAAU,EAAGV,EAAE,eAAc,EAAG,OAAO,GAAGlC,EAAE,QAAQkC,CAAC,EAAE,GAAGQ,EAAE,IAAIM,EAAE,IAAI,EAAE,CAAC,GAAG,CAACP,EAAE,WAAW,UAAUP,KAAKU,EAAE,WAAU,EAAG2N,GAAGvR,EAAEkD,EAAElC,CAAC,EAAE,UAAUkC,KAAKU,EAAE,UAAW,EAAC4N,EAAGtO,EAAElC,CAAC,CAAC,CAAC,GAAG0C,EAAE,IAAIM,EAAE,IAAI,EAAE,UAAUd,KAAKU,EAAE,UAAW,EAAC4N,EAAGtO,EAAElC,CAAC,EAAE,GAAG0C,EAAE,IAAIM,EAAE,IAAI,EAAE,UAAUd,KAAKU,EAAE,WAAY,EAAC4N,EAAGtO,EAAElC,CAAC,EAAE,GAAG0C,EAAE,IAAIM,EAAE,MAAM,EAAE,UAAUd,KAAKU,EAAE,YAAa,EAAC4N,EAAGtO,EAAElC,CAAC,EAAE,GAAG0C,EAAE,IAAIM,EAAE,SAAS,GAAGyN,GAAGzR,EAAEgE,EAAE,UAAUhD,CAAC,EAAE0C,EAAE,IAAIM,EAAE,gBAAgB,GAAGyN,GAAGzR,EAAEgE,EAAE,iBAAiBhD,CAAC,EAAE,CAACyC,EAAE,gBAAgBC,EAAE,IAAIM,EAAE,QAAQ,EAAE,CAAC,MAAMA,EAAE,IAAI,IAAI,UAAUP,KAAKG,EAAE,WAAY,EAAC,UAAUF,KAAKD,EAAE,eAAgB,EAAC,CAAC,MAAMA,EAAEC,EAAE,cAAcF,EAAEgF,GAAG9E,EAAEkF,GAAG1F,EAAEO,CAAC,CAAC,EAAEiO,GAAGhO,EAAEF,CAAC,EAAEE,EAAE,YAAa,EAAC,QAAQR,GAAGwO,GAAGxO,EAAEM,CAAC,CAAC,EAAEC,IAAIO,EAAE,IAAIP,CAAC,EAAEO,EAAE,IAAIP,CAAC,EAAE,IAAIC,CAAC,EAAEM,EAAE,IAAIP,EAAE,IAAI,IAAI,CAACC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAACR,EAAEO,CAAC,IAAIO,EAAE2N,GAAGzO,EAAE,MAAM,KAAKO,CAAC,CAAC,CAAC,CAAC,GAAGC,EAAE,IAAIM,EAAE,SAAS,EAAE,UAAUd,KAAKU,EAAE,eAAc,EAAG,CAAC,UAAUI,KAAKd,EAAE,eAAec,EAAE,iBAAiBhD,EAAE,QAAQgD,CAAC,EAAE,GAAGd,EAAE,aAAY,EAAG,OAAOA,EAAE,aAAc,EAAC,QAAQA,GAAGsO,EAAGtO,EAAElC,CAAC,CAAC,MAAM,CAAC,MAAMgD,EAAEd,EAAE,aAAY,EAAGsO,EAAGtO,EAAElC,CAAC,EAAEgD,EAAE,QAAQd,GAAGsO,EAAGtO,EAAElC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG0C,EAAE,IAAIM,EAAE,QAAQ,GAAGJ,EAAE,cAAe,EAAC,QAAQV,GAAGsO,EAAGtO,EAAElC,CAAC,CAAC,EAAE0C,EAAE,IAAIM,EAAE,OAAO,IAAIJ,EAAE,aAAc,EAAC,QAAQV,GAAGsO,EAAGtO,EAAElC,CAAC,CAAC,EAAEyC,EAAE,mBAAmB,MAAM,eAAeP,EAAEc,EAAE,CAAC,MAAMP,EAAEP,EAAE,QAAO,EAAGQ,EAAER,EAAE,SAAQ,EAAGM,EAAEN,EAAE,UAAS,EAAGU,EAAEH,EAAE,aAAc,EAAC,IAAI,MAAMP,GAAG,CAAC,IAAIU,EAAE,MAAM5D,EAAE,MAAM,eAAekD,EAAE,CAAC,MAAMc,EAAE,MAAM,eAAed,EAAE,CAAC,GAAG,CAAC,OAAO,MAAMgB,GAAEhB,EAAE,SAAQ,EAAGA,EAAE,YAAW,CAAE,CAAC,MAAS,CAAC,OAAO,IAAI,CAAC,EAAEA,CAAC,EAAE,GAAG,CAACc,EAAE,OAAO,KAAK,MAAMP,EAAE,CAAC,IAAS,IAAS,IAAS,GAAQ,EAAEC,EAAE,CAAC,KAAU,KAAU,KAAU,IAAS,EAAEF,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAACI,EAAE5D,CAAC,EAAEgE,EAAE,MAAM,QAAQd,EAAE,EAAEA,EAAEU,EAAEV,IAAI,CAAC,QAAQM,EAAE,EAAEA,EAAExD,EAAEwD,IAAI,QAAQI,EAAE,EAAEA,EAAE,EAAEA,IAAIH,EAAEG,CAAC,EAAE,KAAK,IAAIH,EAAEG,CAAC,EAAEI,EAAE,IAAId,EAAEM,EAAEI,CAAC,CAAC,EAAEF,EAAEE,CAAC,EAAE,KAAK,IAAIF,EAAEE,CAAC,EAAEI,EAAE,IAAId,EAAEM,EAAEI,CAAC,CAAC,EAAE,GAAGkE,GAAGR,GAAG9D,EAAEE,EAAED,CAAC,CAAC,EAAE,IAAIoE,GAAG,OAAO,IAAI,CAAC,OAAO,SAAS3E,EAAEc,EAAEP,EAAE,CAAC,OAAOP,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEP,EAAEP,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEP,EAAEP,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEP,EAAEP,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEP,EAAEP,CAAC,EAAEM,IAAIxC,EAAEwC,GAAG,CAAC,GAAGX,EAAEa,GAAG,CAAC,GAAGzD,EAAEwD,GAAG,CAAC,EAAEzC,EAAE,CAAC,EAAE6B,EAAE,CAAC,EAAE5C,EAAE,CAAC,EAAEe,EAAE,CAAC,EAAE6B,EAAE,CAAC,EAAE5C,EAAE,CAAC,EAAEe,EAAE,CAAC,EAAE6B,EAAE,CAAC,EAAE5C,EAAE,CAAC,EAAEe,GAAG,kBAAM,EAAE,IAAIA,EAAE6B,EAAE5C,CAAC,EAAEiD,CAAC,EAAE,GAAG,CAAClD,EAAE,OAAgBqI,GAAGnF,CAAC,IAAb,QAAgBN,GAAE,oBAAoB5C,EAAEA,CAAC,EAAE,MAAMgB,EAAEkC,EAAE,QAAS,GAAEA,EAAE,OAAQ,EAACL,GAASe,EAAEV,EAAE,QAAS,IAApB,KAAsB,OAAOU,EAAE,KAAK,GAAG,EAAE3D,EAAEwH,GAAGvE,CAAC,EAAE,UAAUc,KAAKN,EAAE,gBAAgBR,CAAC,EAAE,CAAC,MAAMA,EAAEc,EAAE,UAAW,EAACd,IAAIO,GAAGmO,GAAG1O,EAAElD,EAAEgE,EAAE,QAAS,EAACR,CAAC,GAAGQ,EAAE,SAAS,CAAKd,EAAE,YAAW,EAAG,SAApB,IAA6Bc,EAAE,QAAQd,CAAC,EAAEM,EAAE,MAAM,GAAGqF,EAAE,kCAAkC7H,CAAC,MAAM6B,CAAC,MAAM5C,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,QAAQ,IAAI2D,CAAC,CAAC,EAAEV,EAAElC,CAAC,GAAG0C,EAAE,IAAIM,EAAE,QAAQ,GAAGJ,EAAE,cAAe,EAAC,QAAQV,GAAGsO,EAAGtO,EAAElC,CAAC,CAAC,EAAE0C,EAAE,IAAIM,EAAE,MAAM,GAAGJ,EAAE,YAAW,EAAG,QAAQV,GAAGsO,EAAGtO,EAAElC,CAAC,CAAC,EAAEA,EAAE,MAAK,EAAGwC,EAAE,KAAK,GAAGqF,EAAE,+BAA+B,MAAM,CAAC,MAAM3F,EAAElC,EAAE,UAAU,IAAI,CAAC,CAACkC,EAAEc,CAAC,IAAI,GAAGd,CAAC,KAAKc,CAAC,GAAG,EAAE,KAAK,IAAI,EAAER,EAAE,KAAK,GAAGqF,EAAE,sBAAsB3F,CAAC,EAAE,CAAC,CAACM,EAAE,MAAM,GAAGqF,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAMP,EAAE,CAAC,aAAa,CAAC,KAAK,SAAS,CAAE,CAAA,CAAC,OAAO,CAAC,UAAUpF,KAAK,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,QAAQA,EAAE,CAAC,KAAK,SAASA,EAAE,YAAY,EAAE,KAAK,SAASA,EAAE,YAAY,GAAG,EAAE,KAAK,SAASA,EAAE,YAAY,IAAIA,EAAE,QAAS,CAAA,CAAC,CAAC,SAASsO,EAAGtO,EAAE,EAAE,CAACA,EAAE,YAAW,EAAG,OAAO,GAAG,EAAE,aAAalD,IAAG,aAAaiD,GAAE,EAAE,QAAQ,EAAE,QAAQC,CAAC,CAAC,CAAC,SAASuO,GAAGvO,EAAE,EAAEO,EAAE,CAAC,UAAUC,KAAKR,EAAE,UAAW,EAAC,CAAC,MAAMA,EAAEQ,EAAE,UAAS,EAAGR,EAAE,eAAe,GAAGsO,EAAGtO,EAAEO,CAAC,CAAC,CAAC,CAAC,SAAS8N,GAAGrO,EAAEO,EAAEC,EAAE,CAAC,GAAGD,EAAE,aAAY,EAAG,QAAQO,GAAGuN,GAAGrO,EAAEc,EAAEN,CAAC,CAAC,EAAED,aAAaD,GAAE,OAAO,MAAM,EAAEN,EAAE,gBAAgBO,CAAC,EAAE,KAAKP,GAAG,CAAC,MAAM,EAAEA,EAAE,UAAS,EAAG,aAAa,OAAO,IAAIc,EAAE,MAAM,IAAIA,EAAE,OAAO,IAAIA,EAAE,IAAI,CAAC,EAAMd,EAAE,aAAaO,CAAC,EAAE,SAAtB,GAA8B,CAAC,GAAGC,EAAE,QAAQD,CAAC,CAAC,CAAC,SAASiO,GAAGxO,EAAE,EAAE,CAAC,UAAUO,KAAK,EAAEP,EAAE,aAAaO,EAAE,IAAI,CAAC,CAAC,SAAS+E,GAAGtF,EAAE,EAAE,CAAC,MAAMO,EAAE,CAAA,EAAG,UAAUC,KAAKR,EAAE,cAAa,EAAeQ,IAAZ,WAAe,EAAE,IAAIA,CAAC,GAAGA,EAAE,WAAW,WAAW,GAAG,CAAC,EAAE,IAAIA,CAAC,GAAGA,EAAE,WAAW,QAAQ,GAAeA,IAAZ,YAAgBD,EAAE,KAAKC,CAAC,EAAED,EAAE,KAAKC,CAAC,EAAE,OAAOD,CAAC,CAAC,SAASmF,GAAG1F,EAAE,EAAEO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,OAAOA,EAAE,MAAMC,EAAER,EAAE,SAAQ,EAAG,eAAe,CAAC,EAAEM,EAAE,IAAI,IAAI,UAAUN,KAAKQ,EAAER,EAAE,SAAQ,YAAaL,IAAGW,EAAE,IAAIN,EAAE,QAAS,CAAA,EAAE,UAAUc,KAAKN,EAAE,CAAC,MAAMA,EAAEM,EAAE,QAAS,EAACJ,EAAEI,EAAE,WAAWJ,aAAa5C,GAAGwC,EAAE,IAAIE,EAAE,QAAQ,QAAQ,EAAE,CAAC,GAAGD,EAAE,IAAI,YAAYG,EAAE,YAAW,CAAE,EAAE,EAAEA,aAAaf,IAAGa,EAAE,MAAM,gBAAgB,GAAGD,EAAE,IAAI,SAAS,EAAEG,aAAa3D,IAAG2I,GAAG1F,EAAEU,EAAEH,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,SAASkO,GAAGzO,EAAE,EAAE,CAAC,MAAMO,EAAE4N,GAAGnO,CAAC,EAAEQ,EAAE,IAAI,IAAID,EAAE,IAAIP,GAAGA,EAAE,aAAa,CAAC,EAAEM,EAAE,MAAM,KAAKE,CAAC,EAAE,OAAOE,EAAE,IAAI,IAAIJ,EAAE,IAAI,CAACN,EAAEc,IAAI,CAACd,EAAEc,CAAC,CAAC,CAAC,EAAEhE,EAAE,IAAI,IAAIwD,EAAE,IAAI,CAACN,EAAEc,IAAI,CAAC,YAAYd,CAAC,GAAG,YAAYc,CAAC,EAAE,CAAC,CAAC,EAAE,UAAUd,KAAKO,EAAE,CAAC,MAAMO,EAAEd,EAAE,YAAa,EAACA,EAAE,YAAYU,EAAE,IAAII,CAAC,CAAC,CAAC,CAAC,UAAUd,KAAK,EAAE,CAAC,MAAMc,EAAEd,EAAE,cAAa,EAAG,OAAOA,GAAGA,EAAE,WAAW,WAAW,CAAC,EAAE,KAAM,EAAClC,EAAEkC,EAAEc,CAAC,EAAEd,EAAE,YAAa,EAAC,QAAQA,GAAGlC,EAAEkC,EAAEc,CAAC,CAAC,CAAC,CAAC,SAAShD,EAAEkC,EAAEc,EAAE,CAAC,UAAUP,KAAKO,EAAE,CAAC,MAAMA,EAAEd,EAAE,aAAaO,CAAC,EAAE,GAAG,CAACO,EAAE,SAAS,MAAMN,EAAE1D,EAAE,IAAIyD,CAAC,EAAEC,IAAID,IAAIP,EAAE,aAAaQ,EAAEM,CAAC,EAAEd,EAAE,aAAaO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAASmO,GAAG1O,EAAE,EAAEO,EAAEC,EAAE,CAAC,GAAGR,aAAaH,GAAE,OAAOU,EAAC,CAAE,IAAI,mBAAmB,OAAOP,EAAE,mBAAmByF,GAAG,EAAE,EAAEzF,EAAE,mBAAkB,CAAE,CAAC,EAAE,GAAG,IAAI,kBAAkB,OAAOA,EAAE,kBAAkB0E,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE1E,EAAE,kBAAmB,CAAA,CAAC,EAAE,GAAG,IAAI,mBAAmB,OAAO,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG2E,GAAG,IAAI,2BAA2B,OAAO3E,EAAE,mBAAmB,EAAE,CAAC,EAAEA,EAAE,mBAAoB,CAAA,EAAEA,EAAE,kBAAkB,EAAE,CAAC,EAAEA,EAAE,kBAAiB,CAAE,EAAE,GAAG,IAAI,gBAAgB,OAAO4E,GAAGR,GAAG,GAAE,EAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAGO,EAAE,CAAC,OAAOnE,EAAE,KAAK,GAAGmF,EAAE,2BAA2BpF,CAAC,qBAAqBA,CAAC,qBAAqB,EAAE,EAAE,CAAC,MAAMoO,GAAG,OAAOC,GAAG,CAAC,QAAQ,KAAK,SAAS,KAAK,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE,QAAQ,GAAG,EAAEC,GAAG,CAAC,UAAUD,GAAG,QAAQ,gBAAgBA,GAAG,OAAO,UAAU,GAAG,WAAW,EAAE,EAA6X,SAASE,GAAGhO,EAAEN,EAAEqO,GAAGvO,EAAEuO,GAAG,CAAC,IAAI,EAAE,EAAE/Q,EAAE,GAAGgD,aAAad,GAAE,CAAC,MAAMA,EAAEc,EAAE,SAAQ,EAAG,EAAEP,GAAE,UAAUP,CAAC,EAAE,EAAEc,EAAEhD,EAAEkM,GAAGxJ,CAAC,CAAC,MAAM,EAAEM,EAAE,EAAEN,EAAE1C,EAAEkM,GAAG1J,CAAC,EAAE,EAAE,WAAY,GAAE,CAACxC,EAAE,WAAW,EAAE,QAAO,IAAKkC,GAAE,KAAK,SAAalC,EAAE,YAAN,EAAgB,SAASkC,EAAEc,EAAE,CAAC,GAAGA,EAAE,WAAU,EAAG,OAAO,MAAMP,EAAEO,EAAE,eAAc,EAAG,CAAC,EAAEN,EAAED,EAAE,SAAQ,EAAGD,EAAEC,EAAE,UAAS,EAAGG,EAAEV,EAAE,eAAc,EAAG,UAAUM,CAAC,EAAE,QAAQL,EAAE,KAAK,MAAM,EAAE,SAASuC,GAAEhC,CAAC,CAAC,EAAEM,EAAE,WAAWJ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAASV,EAAEc,EAAEP,EAAE,CAAC,MAAMC,EAAER,EAAE,UAAW,EAACM,EAAEQ,EAAE,aAAa,UAAU,EAAEJ,EAAEI,EAAE,cAAcd,EAAE,iBAAiB,SAASwC,GAAElC,EAAE,SAAQ,CAAE,CAAC,EAAExD,EAAE,IAAI,YAAY,IAAI,IAAI4D,EAAE,SAAU,CAAA,CAAC,EAAE,KAAI,EAAG5C,EAAE,CAAE,EAAC,UAAUkC,KAAKc,EAAE,gBAAgB,CAAC,MAAMN,EAAEM,EAAE,aAAad,CAAC,EAAElC,EAAEkC,CAAC,EAAE+O,GAAG/O,EAAEQ,EAAED,CAAC,CAAC,CAAC,IAAIZ,EAAEa,EAAE,MAAM,GAAGmO,EAAE,2BAA2BhP,EAAE7B,EAAE,OAAO,QAAQ6B,CAAC,EAAE,IAAI,CAAC,CAACK,EAAEc,CAAC,IAAI,GAAGd,CAAC,IAAIc,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM/D,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEgD,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEL,EAAE,CAAE,EAACG,EAAE/B,EAAE,SAAS,QAAQkC,EAAE,EAAEA,EAAElD,EAAE,OAAOkD,IAAI,CAACM,EAAE,WAAWxD,EAAEkD,CAAC,EAAEjD,CAAC,EAAE,MAAM+D,EAAEkO,GAAGjS,EAAE8C,CAAC,EAAEH,EAAEoB,CAAC,EAAEpB,EAAEoB,CAAC,GAAG,CAAE,EAACpB,EAAEoB,CAAC,EAAE,KAAKhE,EAAEkD,CAAC,CAAC,CAAC,CAAC,MAAMC,EAAEuC,GAAE1F,EAAEA,EAAE,OAAO,CAAC,EAAE,CAAC,EAAEoD,EAAE,IAAI,MAAMpD,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAEwD,EAAE,SAAQ,EAAG,IAAIV,EAAE,EAAE,QAAQI,EAAE,EAAEA,EAAElD,EAAE,OAAOkD,IAAI,CAAC,MAAMQ,EAAE1D,EAAEkD,CAAC,EAAEM,EAAE,WAAWE,EAAEzD,CAAC,EAAE,MAAM2D,EAAEH,EAAE,WAAW0O,GAAGlS,EAAE8C,CAAC,EAAE,CAACmP,GAAGjS,EAAE8C,CAAC,CAAC,EAAEG,EAAE,UAAUA,KAAKU,EAAE,GAAGhB,EAAEM,CAAC,EAAEc,EAAE,UAAUP,KAAKb,EAAEM,CAAC,EAAE,CAAC,MAAMA,EAAEC,EAAEM,CAAC,EAAE,GAAGC,GAAGR,EAAE,SAASc,EAAER,EAAE,WAAWN,EAAED,CAAC,EAAE,MAAMW,EAAEI,EAAE,cAAa,EAAG,MAAMP,GAAG2O,GAAGpO,EAAE,aAAaP,CAAC,EAAEC,EAAER,EAAElC,EAAEyC,CAAC,CAAC,CAAC,EAAEzD,EAAEgE,EAAE,YAAW,EAAG,MAAMA,GAAGA,EAAE,cAAa,EAAG,MAAMP,GAAG2O,GAAGpO,EAAE,aAAaP,CAAC,EAAEC,EAAER,EAAElC,EAAEyC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAGG,GAAG5D,EAAE,CAACmD,EAAEO,CAAC,EAAER,EAAE,MAAMA,CAAC,CAAC,CAACE,EAAEM,CAAC,EAAEP,EAAEO,CAAC,IAAIA,EAAEZ,IAAIM,EAAED,EAAEO,CAAC,CAAC,CAAC,CAACA,EAAE,MAAM,GAAGmO,EAAE,KAAKxM,GAAE,EAAEvC,CAAC,CAAC,YAAY,EAAE,MAAMgB,EAAEF,EAAE,SAAQ,EAAGD,EAAE+B,GAAE5B,EAAE9D,EAAE,MAAM,EAAE,QAAQkD,EAAE,EAAEA,EAAEY,EAAEZ,IAAIS,EAAET,CAAC,EAAEE,EAAEQ,EAAE,UAAUV,CAAC,CAAC,EAAEc,EAAE,WAAWJ,EAAE,MAAK,EAAG,SAASD,CAAC,CAAC,EAAMC,EAAE,YAAa,EAAC,SAApB,GAA4BA,EAAE,QAAS,EAAC,UAAUV,KAAKc,EAAE,iBAAiBqO,GAAGrO,EAAEd,EAAEE,EAAEN,CAAC,EAAE,UAAUI,KAAKc,EAAE,YAAa,EAAC,UAAUA,KAAKd,EAAE,eAAgB,EAACmP,GAAGnP,EAAEc,EAAEZ,EAAEN,CAAC,GAAG,SAASI,EAAE,CAAC,MAAMc,EAAEd,EAAE,WAAU,EAAG,GAAG,CAACc,EAAE,OAAO,MAAMP,EAAE,CAAA,EAAG,IAAIC,EAAE,KAAU,QAAQR,EAAE,EAAEM,EAAEQ,EAAE,SAAQ,EAAGd,EAAEM,EAAEN,GAAG,EAAE,CAAC,MAAMM,EAAEQ,EAAE,UAAUd,CAAC,EAAEU,EAAEI,EAAE,UAAUd,EAAE,CAAC,EAAElD,EAAEgE,EAAE,UAAUd,EAAE,CAAC,EAAEM,IAAII,GAAGJ,IAAIxD,GAAG4D,IAAI5D,IAAIyD,EAAE,KAAKD,EAAEI,EAAE5D,CAAC,EAAE0D,EAAE,KAAK,IAAIA,EAAEF,EAAEI,EAAE5D,CAAC,EAAE,CAAC,MAAMwD,EAAEkC,GAAEjC,EAAE,OAAOC,CAAC,EAAEF,EAAE,IAAIC,CAAC,EAAEO,EAAE,SAASR,CAAC,CAAC,GAAEQ,CAAC,CAAC,EAAE,EAAE,EAAEhD,CAAC,EAAE,CAAC,SAASqR,GAAGnP,EAAE,EAAEO,EAAEC,EAAE,CAAC,MAAMF,GAAGxC,EAAE,EAAE,SAAQ,EAAG6B,EAAEa,EAAE,EAAE,eAAgB,EAAC,IAAM1C,EAAE,YAAa6B,CAAC,GAAGe,EAAE,EAAE,MAAO,EAAC,SAASJ,CAAC,EAAExD,EAAE,IAAI,WAAW0D,CAAC,EAAE,IAAI1C,EAAE6B,EAAE,QAAQK,EAAE,EAAEQ,EAAE,CAAA,EAAGR,EAAEO,EAAE,OAAOP,IAAIlD,EAAEyD,EAAEP,CAAC,CAAC,IAAIU,EAAE,WAAWH,EAAEP,CAAC,EAAE,EAAE,WAAWA,EAAEQ,CAAC,CAAC,EAAE1D,EAAEyD,EAAEP,CAAC,CAAC,EAAE,GAAGA,EAAE,KAAK,EAAEU,CAAC,EAAM,EAAE,YAAa,EAAC,SAApB,GAA4B,EAAE,QAAS,CAAA,CAAC,MAAM0O,GAAG,CAAA,EAAGC,GAAG,CAAE,EAAC,SAASN,GAAG/O,EAAE,EAAEO,EAAE,CAAC,GAAcP,IAAX,UAA0BA,IAAZ,UAAc,OAAOO,EAAE,gBAAgB,GAAGP,EAAE,WAAW,QAAQ,EAAE,OAAO4O,GAAG,MAAM,GAAG5O,EAAE,WAAW,WAAW,EAAE,OAAO4O,GAAG,SAAS,GAAG5O,EAAE,WAAW,SAAS,EAAE,OAAO4O,GAAG,OAAO,GAAG5O,EAAE,WAAW,UAAU,EAAE,OAAO4O,GAAG,QAAQQ,GAAG,OAAOC,GAAG,OAAO,EAAE,EAAE,iBAAiBD,EAAE,EAAE,EAAE,iBAAiBC,EAAE,EAAE,MAAM7O,EAAE6O,GAAG,IAAI,CAACrP,EAAEc,IAAId,EAAEoP,GAAGtO,CAAC,CAAC,EAAER,EAAE,KAAK,IAAI,GAAGE,CAAC,EAAE,OAAOD,EAAE,UAAUD,CAAC,CAAC,SAAS4O,GAAGlP,EAAE,EAAEO,EAAEC,EAAEF,EAAE,CAACN,EAAE,WAAW,EAAEoP,EAAE,EAAEpP,EAAE,WAAWO,EAAE8O,EAAE,EAAE,QAAQvO,EAAE,EAAEP,EAAEP,EAAE,eAAgB,EAACc,EAAEP,EAAEO,IAAI,GAAG,KAAK,IAAIsO,GAAGtO,CAAC,EAAEuO,GAAGvO,CAAC,CAAC,EAAEN,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM8O,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,SAASL,GAAGjP,EAAE,EAAE,CAAC,MAAMO,EAAE,CAAA,EAAGC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,UAAUF,KAAKgP,GAAG,UAAU5O,KAAK4O,GAAG,UAAUxS,KAAKwS,GAAG9O,EAAE,CAAC,EAAER,EAAE,CAAC,EAAEM,EAAE,EAAEE,EAAE,CAAC,EAAER,EAAE,CAAC,EAAEU,EAAE,EAAEF,EAAE,CAAC,EAAER,EAAE,CAAC,EAAElD,EAAE,EAAEyD,EAAE,KAAKyO,GAAGxO,EAAE,CAAC,CAAC,EAAE,OAAOD,CAAC,CAAC,SAASyO,GAAGhP,EAAE,EAAE,CAAC,OAAO,KAAK,MAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,MAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,MAAMA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAASgK,GAAGhK,EAAE,CAAC,MAAM,EAAEsC,GAAE,CAAA,EAAGuM,GAAG7O,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,EAAE,UAAU,GAAG,MAAM,IAAI,MAAM,GAAG2O,EAAE,gCAAgC,EAAE,GAAG,EAAE,gBAAgB,GAAG,EAAE,gBAAgB,KAAK,GAAG,EAAE,MAAM,IAAI,MAAM,GAAGA,EAAE,qCAAqC,KAAK,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,UAAU,KAAK,IAAI,EAAE,UAAU,OAAO,OAAO,EAAE,EAAE,gBAAgB,KAAK,IAAI,EAAE,gBAAgB,OAAO,OAAO,GAAG,CAAC,CAAmE,SAASY,GAAGzO,EAAEP,EAAEC,EAAE,IAAI,IAAI,CAAC,IAAIF,EAAE,MAAMI,EAAEI,EAAE,aAAa,UAAU,EAAEhE,IAAUwD,EAAEQ,EAAE,WAAU,IAArB,KAAyB,OAAOR,EAAE,SAAU,IAAGkC,GAAE9B,EAAE,SAAU,CAAA,EAAEA,GAAG8O,GAAGjP,EAAEG,EAAE5D,EAAE,IAAI,IAAI0D,CAAC,CAAC,EAAE,MAAM,EAAEM,EAAE,aAAa,QAAQ,EAAE,GAAG2O,GAAGlP,EAAE,EAAEzD,EAAE,IAAI,IAAI0D,CAAC,CAAC,EAAE,MAAM,EAAEM,EAAE,aAAa,SAAS,EAAE,GAAG4O,GAAGnP,EAAE,EAAEzD,EAAE,IAAI,IAAI0D,CAAC,CAAC,EAAE,UAAUR,KAAKc,EAAE,cAAc,CAAC,MAAMA,EAAEd,EAAE,aAAa,UAAU,EAAEc,GAAG0O,GAAGjP,EAAEO,EAAEhE,EAAE,IAAI,IAAI0D,CAAC,CAAC,EAAE,MAAMF,EAAEN,EAAE,aAAa,QAAQ,EAAEM,GAAGmP,GAAGlP,EAAED,EAAExD,EAAE,IAAI,IAAI0D,CAAC,CAAC,EAAE,MAAME,EAAEV,EAAE,aAAa,SAAS,EAAEU,GAAGgP,GAAGnP,EAAEG,EAAE5D,EAAE,IAAI,IAAI0D,CAAC,CAAC,CAAC,CAAC,IAAIzD,EAAE,EAAE2C,EAAEG,EAAE,EAAEK,EAAEJ,EAAEF,EAAEgB,EAAEH,EAAEL,EAAES,EAAEE,EAAEC,EAAEC,EAAEd,EAAE,IAAI,GAAGpD,EAAEwD,GAAG,CAAC,IAAIT,EAAE/C,EAAE,CAAC,IAAI2C,EAAE3C,EAAE,CAAC,IAAImD,EAAEnD,EAAE,CAAC,MAAM8D,EAAE9D,EAAE,EAAE,IAAI,EAAEA,EAAE,EAAE,IAAIgE,EAAEhE,EAAE,EAAE,IAAIoD,EAAEpD,EAAE,EAAE,KAAK,GAAG6C,EAAE7C,EAAE,CAAC,IAAI8C,EAAE9C,EAAE,CAAC,GAAGmD,KAAKE,EAAErD,EAAE,CAAC,GAAG,EAAEgE,GAAGE,EAAElE,EAAE,EAAE,KAAK,GAAG6D,EAAE7D,EAAE,CAAC,IAAI,EAAEA,EAAE,CAAC,GAAGmD,IAAIE,EAAED,EAAEU,EAAEI,IAAIvB,EAAEE,EAAEC,EAAEC,KAAKW,EAAE1D,EAAE,CAAC,GAAG,EAAEgE,GAAGC,EAAEjE,EAAE,EAAE,KAAK2C,EAAEkB,EAAE,EAAEd,IAAIW,EAAEN,EAAEU,EAAEG,IAAInB,EAAEe,EAAE,EAAEhB,IAAIa,EAAEQ,EAAEb,EAAEY,GAAG,GAAG,SAASF,EAAE,CAAC,GAAGA,EAAE,QAAS,IAAGd,GAAE,KAAK,UAAU,OAAOc,EAAE,WAAY,GAAEgO,GAAGhO,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAMP,EAAEO,EAAE,WAAY,EAAC,QAAQd,EAAE,EAAEc,EAAEP,EAAE,SAAQ,EAAGP,EAAEc,EAAEd,GAAG,EAAE,CAAC,MAAMc,EAAEP,EAAE,UAAUP,CAAC,EAAEQ,EAAED,EAAE,UAAUP,EAAE,CAAC,EAAEO,EAAE,UAAUP,EAAEQ,CAAC,EAAED,EAAE,UAAUP,EAAE,EAAEc,CAAC,CAAC,CAAC,EAAEA,CAAC,EAAE,QAAQd,EAAE,EAAEA,EAAElD,EAAE,OAAOkD,IAAIQ,EAAE,IAAI1D,EAAEkD,CAAC,CAAC,CAAC,CAAC,SAASwP,GAAGxP,EAAE,EAAEO,EAAEC,EAAE,CAAC,MAAMF,EAAE,IAAI,aAAa,EAAE,EAAE,SAAU,CAAA,EAAEI,EAAE,EAAE,eAAc,EAAG,QAAQV,EAAE,EAAEO,EAAE,CAAA,EAAGC,EAAE,EAAE,WAAWR,EAAEQ,EAAER,IAAIM,EAAE,IAAI,EAAE,WAAWN,EAAEO,CAAC,EAAEP,EAAEU,CAAC,EAAE,MAAM5D,EAAE0H,GAAE,EAAG,QAAQ9D,EAAE,EAAEA,EAAEH,EAAE,OAAOG,IAAI,CAAC,MAAM5C,EAAEyC,EAAEG,CAAC,EAAEF,EAAE,IAAI1C,CAAC,IAAI,EAAE,WAAWA,EAAEhB,CAAC,EAAE8G,GAAG9G,EAAEA,EAAEkD,CAAC,EAAEM,EAAE,IAAIxD,EAAE,EAAEgB,CAAC,EAAE0C,EAAE,IAAI1C,CAAC,EAAE,CAAC,EAAE,SAASwC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,SAASmP,GAAGzP,EAAE,EAAEO,EAAEC,EAAE,CAAC,MAAMF,GAAGI,EAAE,IAAI2C,GAAG,CAAC,EAAEA,IAAI,eAAe3C,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,GAAG,IAAIA,GAAG,SAASV,EAAEc,EAAE,CAACd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,EAAE,CAAC,GAAER,EAAEN,CAAC,EAAE,SAASA,EAAEc,EAAE,CAAC,IAAIP,EAAEO,EAAE,CAAC,EAAEN,EAAEM,EAAE,CAAC,EAAER,EAAEQ,EAAE,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAEhE,EAAEgE,EAAE,CAAC,EAAEhD,EAAEgD,EAAE,CAAC,EAAEnB,EAAEmB,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEf,EAAEe,EAAE,CAAC,EAAE,EAAEf,EAAEjD,EAAEgB,EAAE,EAAE+B,EAAE,CAACE,EAAEW,EAAE5C,EAAE6B,EAAEM,EAAE,EAAES,EAAE5D,EAAE6C,EAAEO,EAAEK,EAAE,EAAEC,EAAEX,EAAES,EAAEL,EAAEC,IAAIF,EAAE,CAAC,EAAE,GAAGE,EAAE,EAAEA,GAAGF,EAAE,CAAC,GAAG,CAACD,EAAES,EAAEF,EAAE,GAAGJ,EAAEF,EAAE,CAAC,GAAGlC,EAAE0C,EAAEF,EAAExD,GAAGoD,EAAEF,EAAE,CAAC,EAAEH,EAAEK,EAAEF,EAAE,CAAC,GAAGD,EAAEQ,EAAED,EAAEX,GAAGO,EAAEF,EAAE,CAAC,GAAG,CAAClC,EAAEyC,EAAED,EAAEI,GAAGR,EAAEF,EAAE,CAAC,EAAEC,EAAEC,EAAEF,EAAE,CAAC,GAAG,CAAC,EAAEO,EAAEC,EAAEb,GAAGO,EAAEF,EAAE,CAAC,GAAGlD,EAAEyD,EAAEC,EAAEE,GAAGR,EAAE,EAAEI,EAAEA,CAAC,EAAE,SAASN,EAAEc,EAAE,CAAC,GAAGd,IAAIc,EAAE,CAAC,IAAIP,EAAEO,EAAE,CAAC,EAAEN,EAAEM,EAAE,CAAC,EAAER,EAAEQ,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEO,EAAEP,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEQ,EAAER,EAAE,CAAC,EAAEM,CAAC,MAAMN,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,CAAC,EAAER,EAAEA,CAAC,EAAE,MAAMxD,EAAE0H,GAAI,EAAC,QAAQxE,EAAE,EAAEA,EAAEO,EAAE,OAAOP,IAAI,CAAC,MAAMU,EAAEH,EAAEP,CAAC,EAAEQ,EAAE,IAAIE,CAAC,IAAI,EAAE,WAAWA,EAAE5D,CAAC,EAAE2G,GAAG3G,EAAEA,EAAEwD,CAAC,EAAE4D,GAAGpH,EAAEA,CAAC,EAAE,EAAE,WAAW4D,EAAE5D,CAAC,EAAE0D,EAAE,IAAIE,CAAC,EAAE,CAAC,CAAC,SAASgP,GAAG1P,EAAE,EAAEO,EAAEC,EAAE,CAAC,MAAMF,EAAEkE,GAAE,EAAG9D,EAAE,GAAE,EAAG,QAAQ5D,EAAE,EAAEA,EAAEyD,EAAE,OAAOzD,IAAI,CAAC,MAAMgB,EAAEyC,EAAEzD,CAAC,EAAE,GAAG0D,EAAE,IAAI1C,CAAC,EAAE,SAAS,EAAE,WAAWA,EAAE4C,CAAC,EAAE,KAAK,CAACf,EAAE5C,EAAEgD,CAAC,EAAEW,EAAEJ,EAAE,CAAC,EAAEN,EAAE,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEjD,EAAEiD,EAAE,CAAC,EAAED,EAAEO,EAAE,CAAC,EAAEN,EAAE,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEjD,EAAEiD,EAAE,CAAC,EAAED,EAAEO,EAAE,CAAC,EAAEN,EAAE,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEjD,EAAEiD,EAAE,EAAE,EAAED,EAAEmE,GAAG5D,EAAEA,CAAC,EAAEI,EAAE,CAAC,EAAEJ,EAAE,CAAC,EAAEI,EAAE,CAAC,EAAEJ,EAAE,CAAC,EAAEI,EAAE,CAAC,EAAEJ,EAAE,CAAC,EAAE,EAAE,WAAWxC,EAAE4C,CAAC,EAAEF,EAAE,IAAI1C,CAAC,CAAC,CAAC,CAAC,SAAS6R,GAAGpP,EAAEC,EAAEF,EAAE,GAAG,EAAE,CAAC,UAAUN,KAAKO,EAAE,iBAAiB,GAAGP,EAAE,YAAa,EAAC,KAAKA,GAAGA,EAAE,eAAec,EAAE,MAAMd,IAAIO,CAAC,EAAE,CAAC,MAAMO,EAAEd,EAAE,MAAK,EAAGO,EAAE,KAAKP,EAAEc,CAAC,EAAE,UAAUd,KAAKc,EAAE,YAAW,EAAG,CAAC,MAAMP,EAAEP,EAAE,MAAO,EAACc,EAAE,KAAKd,EAAEO,CAAC,CAAC,CAAC,CAAC,GAAG,CAACD,EAAE,CAAC,MAAMQ,EAAE,IAAI,IAAI,CAAC,GAAGP,EAAE,eAAgB,EAAC,GAAGA,EAAE,eAAc,EAAG,QAAQP,GAAGA,EAAE,YAAa,CAAA,CAAC,CAAC,EAAEQ,EAAE,IAAI,IAAI,UAAUF,KAAKC,EAAE,eAAgB,EAAC,UAAUA,KAAKoC,GAAErC,CAAC,EAAEC,EAAE,YAAa,EAAC,KAAKA,IAAIA,aAAaP,IAAGO,aAAaL,KAAI,CAACY,EAAE,IAAIP,CAAC,CAAC,GAAG,CAACC,EAAE,IAAID,CAAC,GAAGC,EAAE,IAAID,EAAEA,EAAE,MAAK,CAAE,EAAE,UAAUP,KAAKc,EAAE,SAAS,CAACA,EAAEP,CAAC,IAAIC,EAAER,EAAE,KAAKc,EAAEP,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,UAAUP,KAAKO,EAAE,eAAgB,EAAC,CAAC,MAAMO,EAAEd,EAAE,aAAa,UAAU,EAAE,IAAIO,EAAE,EAAEA,EAAE,EAAE,EAAE,IAAIO,CAAC,EAAEP,EAAE,EAAE,IAAIO,CAAC,EAAE,EAAE,IAAIA,EAAEP,EAAE,IAAI,GAAG,EAAEgP,GAAGvP,EAAEQ,EAAED,CAAC,CAAC,CAAC,CAAC,MAAMqP,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,SAASC,GAAG7P,EAAE,CAAC,MAAM,EAAEA,EAAE,QAAS,EAACO,EAAEP,EAAE,UAAW,EAAC,GAAG,CAACF,EAAE,GAAGS,EAAEqP,EAAE,GAAGD,GAAG,EAAEpP,CAAC,EAAE,UAAUO,KAAKd,EAAE,aAAc,EAAC,CAAC,MAAMA,EAAEc,EAAE,UAAW,EAACqD,GAAGnE,EAAEA,EAAEO,CAAC,EAAEO,EAAE,UAAUd,CAAC,CAAC,CAAC,OAAOA,EAAE,UAAU4P,EAAE,CAAC,CAAq3C,MAAME,GAAG,UAAUC,GAAG,GAAG,SAASC,GAAGhQ,EAAE+P,GAAG,CAAC,OAAOzN,GAAE,CAAA,EAAGyN,GAAG/P,CAAC,EAAEwB,GAAEsO,GAAG,MAAM9P,GAAG,CAAC,MAAMO,EAAEP,EAAE,QAAS,EAACQ,EAAER,EAAE,UAAW,EAACM,EAAE,IAAI,IAAI,UAAUN,KAAKO,EAAE,UAAW,EAAC,UAAUO,KAAKd,EAAE,WAAY,EAACM,EAAE,IAAIQ,CAAC,EAAE,MAAMJ,EAAE,IAAI,IAAI,UAAUV,KAAKO,EAAE,eAAgB,EAAC,UAAUO,KAAKd,EAAE,aAAc,EAAC,CAAC,MAAMA,EAAEc,EAAE,cAAe,EAACd,GAAGU,EAAE,IAAIV,CAAC,CAAC,CAAC,MAAMlD,EAAE,IAAI,IAAIgB,EAAE,IAAI,IAAI,UAAUkC,KAAKO,EAAE,WAAY,EAACP,EAAE,SAASA,GAAG,CAAC,MAAMc,EAAEd,EAAE,cAAa,EAAGc,KAAKR,EAAE,IAAIQ,CAAC,GAAGhE,EAAE,IAAIgE,CAAC,IAAIhE,EAAE,IAAIkD,CAAC,GAAGU,EAAE,IAAII,CAAC,GAAGhD,EAAE,IAAIgD,CAAC,IAAIhD,EAAE,IAAIkC,CAAC,EAAE,CAAC,EAAE,UAAUA,KAAKO,EAAE,WAAY,EAACP,EAAE,SAASA,GAAG,CAACU,EAAE,IAAIV,CAAC,GAAGlD,EAAE,IAAIkD,CAAC,GAAGlC,EAAE,IAAIkC,CAAC,GAAGmD,GAAGnD,CAAC,CAAC,CAAC,EAAEU,EAAE,MAAMF,EAAE,MAAM,GAAGsP,EAAE,qEAAqE,EAAE,MAAM9P,EAAE,UAAUoO,GAAG,CAAC,cAAc,CAACtN,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAEN,EAAE,MAAM,GAAGsP,EAAE,aAAa,CAAC,CAAC,CAAC,CAA2tZ/P,GAAE,WAAyB,MAAAkQ,GAAG,CAAC,QAAQ,KAAK,mBAAmB,OAAO,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,GAAG,cAAc,EAAE,eAAe,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,EAA8rM3N,GAAE,CAAC,MAAM,MAAM,EAAE2N,EAAE,EAAspT,IAAIC,GAAG,SAASC,GAAGnQ,EAAE,EAAEO,EAAE,CAAC,QAAQC,EAAE,EAAEF,EAAEC,EAAE,OAAOC,EAAEF,EAAEE,IAAID,EAAEC,CAAC,EAAER,EAAE,EAAEM,EAAEE,CAAC,EAAE,OAAOD,CAAC,CAAC,SAAS6P,GAAGpQ,EAAE,EAAEO,EAAE,CAAC,QAAQC,EAAE,EAAEF,EAAEC,EAAE,OAAOC,EAAEF,EAAEE,IAAIR,EAAE,EAAEM,EAAEE,CAAC,EAAED,EAAEC,CAAC,CAAC,CAAC,SAAS6P,GAAGrQ,EAAE,EAAEO,EAAE,EAAE,CAAC,GAAGP,EAAE,SAAS,EAAE,OAAO,MAAM,GAAG,QAAQQ,EAAE,EAAEA,EAAER,EAAE,OAAOQ,IAAI,GAAG,KAAK,IAAIR,EAAEQ,CAAC,EAAE,EAAEA,CAAC,CAAC,EAAED,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS+P,GAAGtQ,EAAE,EAAEO,EAAE,CAAC,OAAOP,GAAG,EAAEO,GAAG,EAAEA,CAAC,CAAC,SAASgQ,GAAGvQ,EAAE,EAAEO,EAAEC,EAAE,CAAC,QAAQF,EAAE,EAAEA,EAAE,EAAE,OAAOA,IAAIN,EAAEM,CAAC,EAAEgQ,GAAG,EAAEhQ,CAAC,EAAEC,EAAED,CAAC,EAAEE,CAAC,EAAE,OAAOR,CAAC,CAAC,SAASwQ,GAAGxQ,EAAE,EAAEO,EAAEC,EAAE,CAAC,IAAIF,EAAEI,EAAE5D,EAAEgB,EAAE6B,EAAE5C,EAAE,EAAE,CAAC,EAAEgD,EAAE,EAAE,CAAC,EAAEL,EAAE,EAAE,CAAC,EAAEG,EAAE,EAAE,CAAC,EAAEI,EAAEM,EAAE,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAET,EAAES,EAAE,CAAC,EAAEX,EAAEW,EAAE,CAAC,EAAE,OAAOG,EAAE3D,EAAEkD,EAAEF,EAAEG,EAAER,EAAEI,EAAED,EAAED,EAAEc,EAAE,IAAIA,EAAE,CAACA,EAAET,EAAE,CAACA,EAAEC,EAAE,CAACA,EAAEJ,EAAE,CAACA,EAAEF,EAAE,CAACA,GAAG,EAAEc,EAAE,MAAMJ,EAAE,KAAK,KAAKI,CAAC,EAAE5D,EAAE,KAAK,IAAIwD,CAAC,EAAExC,EAAE,KAAK,KAAK,EAAE0C,GAAGF,CAAC,EAAExD,EAAE6C,EAAE,KAAK,IAAIa,EAAEF,CAAC,EAAExD,IAAIgB,EAAE,EAAE0C,EAAEb,EAAEa,GAAGR,EAAE,CAAC,EAAElC,EAAEf,EAAE4C,EAAEM,EAAED,EAAE,CAAC,EAAElC,EAAEiC,EAAEJ,EAAEO,EAAEF,EAAE,CAAC,EAAElC,EAAE4B,EAAEC,EAAEG,EAAEE,EAAE,CAAC,EAAElC,EAAE+B,EAAEF,EAAEC,EAAEI,CAAC,CAAC,SAASyQ,GAAGzQ,EAAE,EAAE,CAAC,MAAMO,EAAE,SAASP,EAAEc,EAAE,CAAC,OAAOd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,EAAEd,EAAE,CAAC,EAAEc,EAAE,CAAC,CAAC,EAAEd,EAAE,CAAC,EAAE,OAAO,KAAK,KAAK,EAAEO,EAAEA,EAAE,CAAC,CAAC,EAAE,SAASP,EAAE,CAACA,EAAEA,EAAE,KAAK,CAAC,EAAE,OAAOA,EAAEA,EAAE,KAAK,CAAC,EAAE,OAAOA,EAAEA,EAAE,MAAM,CAAC,EAAE,OAAO,GAAEkQ,KAAKA,GAAG,CAAA,EAAG,EAAuD,QAAQ,QAAO,EAAouK,IAAIQ,IAAI,SAAS1Q,EAAE,CAACA,EAAE,SAAS,WAAWA,EAAE,SAAS,UAAU,GAAE0Q,KAAKA,GAAG,CAAE,EAAC,EAAoCA,GAAG,SAAqxCA,GAAG,SCgBtu/D,MAAMC,EAAO,oBACPC,GAAQ,QAeP,MAAMC,WAA0BC,EAAsC,CAC3E,OAAO,eAAiBH,EAKxB,MAAO,CACLE,GAAkB,eAAiBF,EACnC,KAAK,aAAe,oBACf,KAAA,YAAc,CAACI,EAAa,IAAI,CACvC,CAEA,aAAc,CACZ,OAAO,OAAO,OACV,MAAM,YAAY,EAClB,CAAC,kBAAmB,KAAM,aAAc,KAAM,YAAa,IAAI,CAAA,CACrE,CAEA,iBAAkB,CACT,OAAA,KAAK,OAAO,cAAc,CACnC,CAEA,gBAAiB,CACR,OAAA,KAAK,OAAO,aAAa,CAClC,CAEA,SAASC,EAA2BC,EAA0B,CAC5D,GAAID,EAAgB,aAAeC,EAAe,SAAS,EACnD,MAAA,IAAI,MAAM,wCAAwC,EACrD,YAAA,OAAO,eAAgBD,CAAe,EACpC,KAAK,OAAO,cAAeC,CAAc,CAClD,CAEA,aAAc,CACL,OAAA,KAAK,IAAI,UAAU,CAC5B,CAEA,YAAYC,EAAgC,CACnC,OAAA,KAAK,IAAI,WAAYA,CAAQ,CACtC,CAEA,WAAWhK,EAAmB,CACrB,OAAA,KAAK,OAAO,UAAWA,CAAO,CACvC,CAEA,YAAa,CACJ,OAAA,KAAK,OAAO,SAAS,CAC9B,CACF,CAEO,MAAMiK,WAAoBC,EAAU,CACzC,cAAgBT,EAChB,cAAgB,CAACI,EAAa,QAAQ,EACtC,OAAO,eAAiBJ,EAExB,yBAA0B,CACxB,OAAO,IAAIE,GAAkB,KAAK,SAAS,SAAU,CAAA,CACvD,CAEA,KAAK9C,EAAwB,CACrB,KAAA,CAAC,KAAAsD,CAAI,EAAItD,EAAQ,QAGd,OAFQsD,EAAK,QAAU,IAEvB,QAAQ,CAACC,EAASC,IAAc,CACvC,GAAI,CAACD,EAAQ,YAAc,CAACA,EAAQ,WAAWX,CAAI,EAAG,OAEhD,MAAAa,EAAOzD,EAAQ,OAAOwD,CAAS,EAC/BE,EAAoB,KAAK,0BAC1BD,EAAA,aAAab,EAAMc,CAAiB,EAEnC,MAAAC,EAAcJ,EAAQ,WAAWX,CAAI,EAE3C,GAAIe,EAAY,kBAAmB,CACjC,IAAIC,EAAQ,EACZ,MAAMT,EAAW,QACjBA,EAAS,KAAKS,CAAK,EACR,UAAAC,KAAaJ,EAAK,iBAAkB,CACvC,MAAAtK,EAAU0K,EAAU,aAC1B,GAAI,CAAC1K,EAAS,CACZ,QAAQ,IAAI,kCAAmC0K,EAAU,QAAS,CAAA,EAClE,QACF,CACAD,GAASzK,EAAQ,WACjBgK,EAAS,KAAKS,CAAK,CACrB,CACAF,EAAkB,YAAYP,CAAQ,EACpBO,EAAA,WACd1D,EAAQ,UAAU2D,EAAY,kBAAkB,OAAQ,CAAA,CAC9D,CAEIA,EAAY,cAAgB,MAAQA,EAAY,aAAe,MAC/CD,EAAA,SACd1D,EAAQ,UAAU2D,EAAY,YAAY,EAC1C3D,EAAQ,UAAU2D,EAAY,WAAW,CAAA,CAC/C,CACD,EAEM,IACT,CAEA,SAAS3D,EAAwB,CAC/B,YAAK,SAAS,QAAQ,EAAE,aAAa,QAASyD,GAAS,CAC/C,MAAAC,EAAoBD,EAAK,aAAab,CAAI,EAChD,GAAI,CAACc,EAAmB,OAElB,MAAAvK,EAAUuK,EAAkB,aAC1B1D,EAAA,wBACJ7G,EAAS2K,GAAc,gBAAgB,oBAAA,EAErC,MAAAC,EAAYL,EAAkB,kBAC9BM,EAAUN,EAAkB,iBAC9B,CAACK,GAAa,CAACC,IAEXhE,EAAA,wBAAwB+D,EAAWlB,EAAK,EACxC7C,EAAA,wBAAwBgE,EAASnB,EAAK,EAAA,CAC/C,EACM,IACT,CAEA,MAAM7C,EAAwB,CACtB,KAAA,CAAC,KAAAsD,CAAI,EAAItD,EAAQ,QAEvB,YAAK,SAAS,QAAQ,EAAE,aAAa,QAASyD,GAAS,CAC/C,MAAAC,EAAoBD,EAAK,aAAab,CAAI,EAChD,GAAI,CAACc,EAAmB,OAExB,MAAMF,EAAYxD,EAAQ,aAAa,IAAIyD,CAAI,EACzCF,EAAUD,EAAK,OAAQE,CAAS,EAEhCL,EAAWO,EAAkB,cAC7BO,EAAed,EAAS,OAAS,EAEnC,GAAAc,IAAiBV,EAAQ,WAAW,OACtC,MAAM,IAAI,MACN,gFAAA,EAGN,MAAMW,EACFlE,EAAQ,iBAAiB,IAAI0D,EAAkB,iBAAkB,EAC/DS,EACFnE,EAAQ,iBAAiB,IAAI0D,EAAkB,gBAAiB,EAC9DU,EAAed,EAAK,UAAWY,CAAiB,EAChDG,EAAcf,EAAK,UAAWa,CAAgB,EAE9CG,EAAoBf,EAAQ,WAAW,CAAC,EACxCM,EAAY,CAChB,QAAS7D,EAAQ,iBAAiB,IAAI0D,EAAkB,YAAY,EACpE,KAAMY,EAAkB,KACxB,WAAY,CAAC,SAAYA,EAAkB,WAAW,QAAW,CAAA,EAG7DnL,EAAUmK,EAAK,UAAWO,EAAU,OAAO,EACjD,GAAK1K,EAIL,CAAIiL,GAAgBC,IAClBlL,EAAQ,OAAS,CACf,MAAOiL,EAAa,MACpB,QAAS,CACP,WAAYA,EAAa,WACzB,WAAYA,EAAa,WACzB,cAAeA,EAAa,aAC9B,EACA,OAAQ,CACN,WAAYC,EAAY,WACxB,WAAYA,EAAY,UAC1B,CAAA,GAIJ,QAAStV,EAAI,EAAGA,EAAIkV,EAAc,EAAElV,EAAG,CACrC,MAAMwV,EAAWjB,EAAK,UAAWC,EAAQ,WAAWxU,CAAC,EAAE,OAAQ,EAC/DwV,EAAS,WAAapL,EAAQ,WAC9BoL,EAAS,WAAapL,EAAQ,WAAc,EAAIgK,EAASpU,CAAC,EAC1DwV,EAAS,MAAQpB,EAASpU,EAAI,CAAC,EAAIoU,EAASpU,CAAC,CAC/C,CAEQwU,EAAA,WAAaA,EAAQ,YAAc,CAAA,EACnCA,EAAA,WAAWX,CAAI,EAAI,CACzB,kBAAmBiB,EACnB,aAAcK,EACd,YAAaC,CAAA,EACf,CAID,EAEM,IACT,CACF,CC5MO,MAAMK,EAAgB,CAC3B,SAAY,CAAC,KAAMC,EAAS,KAAK,KAAM,WAAY,CAAC,EACpD,OAAU,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EAClD,QAAW,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EACnD,WAAc,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EACtD,WAAc,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EACtD,QAAW,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EACnD,SAAY,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EACpD,UAAa,CAAC,KAAMA,EAAS,KAAK,KAAM,WAAY,CAAC,EACrD,OAAU,CAAC,KAAM,KAAM,WAAY,CAAC,EACpC,OAAU,CAAC,KAAM,KAAM,WAAY,CAAC,EACpC,OAAU,CAAC,KAAM,KAAM,WAAY,CAAC,EACpC,OAAU,CAAC,KAAM,KAAM,WAAY,CAAC,CACtC,EAaO,SAASC,GAAQtC,EAAW,CACjC,OAAOA,EAAG,mBAAmB,CAACgB,EAAW,CAAC,CAC5C,CAsBO,SAASuB,GAASlB,EAAYxT,EAA0B,GACL,CAClD,MAAA2U,EAAanB,EAAK,iBACpB,GAAAmB,EAAW,SAAW,EACjB,OAAA,KAGL,GAAA3U,EAAW,SAAW,EAAG,CACrB,MAAA4U,MAAmB,IACzB,UAAWhB,KAAae,EAAY,CAC5B,MAAAE,EAAYjB,EAAU,gBAC5B,UAAWkB,KAAYD,EACrBD,EAAa,IAAIE,CAAQ,CAE7B,CACI,IAAAA,EACJ,IAAKA,KAAYP,EACXK,EAAa,IAAIE,CAAQ,IAC3B9U,EAAW,KAAK8U,CAAQ,EACxBF,EAAa,OAAOE,CAAQ,GAGrBA,UAAAA,KAAYF,EAAa,OAClC5U,EAAW,KAAK8U,CAAQ,CAE5B,CAEA,GAAI9U,EAAW,OAAS,GAAKA,EAAW,CAAC,IAAM,WACvC,MAAA,IAAI,MAAM,qCAAqC,EAEvD,IAAI+U,EAAU,EACd,MAAMC,EAAmBhV,EAAW,KAAK+U,EAAU,EAAUE,GAAA,CAC3D,MAAMC,EAAOH,EACF,OAAAA,GAAAR,EAAcU,CAAG,EAAE,WACvBC,CAAA,IAGHzB,EACFD,EAAK,aAAa,mBAAmB,EAEzC,IAAI2B,EAAgB,QAChBC,EAAe,QACb,MAAAC,EAAgB,CAAC,CAAC,EAClBC,EAAqB,QACrBC,EAAmB,QACnBC,EAAgB,QACtB,GAAI/B,GAAqB,KAAM,CAC7B,MAAMgC,EAAUd,EAAW,CAAC,EAAE,aAAa,UAAU,EAAG,WAClDe,EAAiB1V,EAAW,IAAKF,GAAMyU,EAAczU,CAAC,EAAE,MAAQ,IAAI,EAC1DqV,EAAA,IAAI,MAAcJ,EAAUU,CAAO,EAEnD,UAAW7B,KAAae,EAAY,CAC5B,MAAAzL,EAAU0K,EAAU,aAC1B,GAAI,CAAC1K,EAAS,CACZ,QAAQ,IAAI,kCAAmC0K,EAAU,QAAS,CAAA,EAClE,QACF,CAEM,MAAA+B,EAAe/B,EAAU,gBAEpB5T,EAAA,QAAQ,CAAC4V,EAAclM,IAAQ,CACpC,GAAA,CAAAgM,EAAehM,CAAG,GAGtB,UAAWmM,KAAeF,EACxB,GAAIE,IAAgBD,EAAc,CAChCF,EAAehM,CAAG,EAAI,GAChB,MAAA4K,EAAWV,EAAU,aAAaiC,CAAW,EACnDC,GACIX,EAAeb,EAAUS,EAASC,EAAiBtL,CAAG,CAAA,CAC5D,EACF,CACD,EAED0L,EAAe,CAAC,GAAGA,EAAc,GAAGlM,EAAQ,SAAW,CAAA,EACzCmM,EAAA,KAAKD,EAAa,MAAM,EACtCI,EAAc,KAAK,CACjB,SAAU5B,EAAU,YAAY,EAChC,WAAY+B,EAAa,OAAO5V,GAAKC,EAAW,KAAKF,GAAKA,GAAKC,CAAC,CAAC,CAAA,CAClE,CACH,CACA,MAAMgW,EAAetC,EAAkB,gBAAmB,GAAA,SAAA,GAAc,CAAA,EAClEM,EAAUN,EAAkB,eAAkB,GAAA,SAAA,GAAc,CAAA,EAC5DuC,MAAiB,IACvB,SAAW,CAAClX,EAAG4K,CAAG,IAAKqM,EAAa,UAClCC,EAAW,IAAIZ,EAAa1L,CAAG,EAAGqK,EAAQjV,CAAC,CAAC,EAE9C,SAAW,CAACmX,EAAMC,CAAE,IAAKF,EAAW,UAClCV,EAAmB,KAAKW,CAAI,EAC5BV,EAAiB,KAAKW,CAAE,CAC1B,KAEA,WAAWtC,KAAae,EAAY,CAC5B,MAAAzL,EAAU0K,EAAU,aAC1B,GAAI,CAAC1K,EAAS,CACZ,QAAQ,IAAI,kCAAmC0K,EAAU,QAAS,CAAA,EAClE,QACF,CACM,MAAA6B,EAAUN,EAAc,OAASJ,EAEnCI,EAAA,CAAC,GAAGA,EAAe,GAAGgB,GAAcvC,EAAWmB,EAAS/U,CAAU,CAAC,EACvEoV,EACI,CAAC,GAAGA,EAAc,GAAGlM,EAAQ,SAAA,EAAY,IAAKpK,GAAMA,EAAI2W,CAAO,CAAC,EACtDJ,EAAA,KAAKD,EAAa,MAAM,EAEhC,MAAAO,EAAe/B,EAAU,gBAC/B4B,EAAc,KAAK,CACjB,SAAU5B,EAAU,YAAY,EAChC,WAAY+B,EAAa,OAAO5V,GAAKC,EAAW,KAAKF,GAAKA,GAAKC,CAAC,CAAC,CAAA,CAClE,CACH,CAEI,MAAAqW,EAAiB,IAAI,aAAajB,CAAa,EAC/CkB,EAAW,IAAI,YAAYjB,CAAY,EACvClC,EAAW,IAAI,YAAYmC,CAAa,EACxCiB,EAAgB,IAAI,YAAYhB,CAAkB,EAClDiB,EAAc,IAAI,YAAYhB,CAAgB,EAK7C,MAAA,CAAC,KAFJ,CAAC,QAAAR,EAAS,SAAAsB,EAAU,eAAAD,EAAgB,SAAAlD,EAAU,cAAAoD,EAAe,YAAAC,GAE1C,cAAAf,EACzB,CAmBgB,SAAAgB,GACZC,EAAeC,EACfC,EAA8C,CAC5CF,EAAI,QAAQ,EAAE,YAAY,EAAE,SAAW,GACzCA,EAAI,aAAa,EAEnB,MAAMlH,EAASkH,EAAI,QAAU,EAAA,YAAA,EAAc,CAAC,EACtCG,EAAoBH,EAAI,gBAAgBtD,EAAW,EAEnDK,EAAOiD,EAAI,aACXvD,EAAW,QACX2D,EAAiB,QACjBC,MAA2B,IAC3BC,EAASL,EAAa,SAAS,OAAS,EAC9C,IAAIM,EAAS,GACb,QAASC,EAAM,EAAGA,EAAMF,EAAQ,EAAEE,EAAK,CAC/B,MAAAnI,EAAK4H,EAAa,cAAcO,CAAG,EACzC,GAAInI,GAAMkI,EACR,SAEOA,EAAAlI,EACToE,EAAS,KAAKwD,EAAa,SAASO,CAAG,CAAC,EAExC,MAAM/N,EAAUuN,EAAI,eAAe,2BAA6B3H,CAAE,EAC7C,UAAUS,CAAM,EAChB,QAAQiF,EAAS,KAAK,MAAM,EAC5B,SAAS,IAAI,YAAY,CAAC,CAAC,EAC1CZ,EAAY6C,EAAI,gBAAgB,EAAE,WAAWvN,CAAO,EAEpDgO,EAAaP,EAAc,IAAI7H,CAAE,EACvC,GAAIoI,EAAY,CACR,KAAA,CAAC,SAAAC,EAAU,WAAAnX,CAAc,EAAAkX,EAC/B,GAAIlX,EAAW,OAAS,GAAKA,EAAW,CAAC,IAAM,WACvC,MAAA,IAAI,MAAM,qCAAqC,EAEvD4T,EAAU,YAAYuD,CAAQ,EACTL,EAAA,IAAIlD,EAAW5T,CAAU,EAE9CkX,EAAW,WAAW,QAAQ,CAAC9V,EAAWtC,IAAM,CAC1C,GAAAA,GAAK+X,EAAe,OACtBA,EAAe,KAAKzV,CAAS,MACxB,CACC,MAAAgW,EAAO7C,EAAcnT,CAAS,EAAE,WAChCiW,EAAY9C,EAAcsC,EAAe/X,CAAC,CAAC,EAAE,WACnD,GAAIsY,GAAQC,EACV,MAAM,IAAI,MACN,sCAAwCjW,EAAY,QACpDyV,EAAe/X,CAAC,CAAA,EAElByV,EAAcsC,EAAe/X,CAAC,CAAC,EAAE,MAAQ,OAC3C+X,EAAe/X,CAAC,EAAIsC,EAExB,CAAA,CACD,CAAA,MAED0V,EAAqB,IAAIlD,EAAW,CAAC,UAAU,CAAC,EAGlDJ,EAAK,aAAaI,CAAS,CAC7B,CACAV,EAAS,KAAKwD,EAAa,SAASK,CAAM,CAAC,EAE3C,MAAMtB,EAAUiB,EAAa,QACvB3B,EAAU2B,EAAa,QAC7B,IAAI3M,EAAS,EACE8M,EAAA,QAAQ,CAACzV,EAAWkW,IAAS,CACpC,MAAArC,EAAMV,EAAcnT,CAAS,EACnC,GAAI6T,GAAO,KACH,MAAA,IAAI,MAAM7T,EAAY,iCAAiC,EAE3D,GAAA6T,EAAI,MAAQ,KAAM,CAClB,EAAAlL,EACF,MACF,CAEA,MAAMxH,EAAI0S,EAAI,WACd,GAAIlL,EAASxH,EAAIwS,EAAe,MAAA,IAAI,MAAM,8BAA8B,EAExE,MAAMlW,EAAQ,IAAI,aAAa0D,EAAIkT,CAAO,EAC1C,QAAS,EAAI,EAAG,EAAIA,EAAS,EAAE,EAC7B,QAAS3W,EAAI,EAAGA,EAAIyD,EAAG,EAAEzD,EAAG,CAC1B,IAAI6D,EAAI+T,EAAa,eAAe3B,EAAU,EAAIhL,EAASjL,CAAC,EACxDsC,GAAa,YACfuB,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAC,CAAC,GAE1B9D,EAAA0D,EAAI,EAAIzD,CAAC,EAAI6D,CACrB,CAGF,MAAM2R,EAAWmC,EAAI,eAAerV,CAAS,EACvB,UAAUmO,CAAM,EAChB,QAAQ0F,EAAI,IAAI,EAChB,SAASpW,CAAK,EAEzB,UAAA+U,KAAaJ,EAAK,iBAAkB,CACvC,MAAAxT,EAAa8W,EAAqB,IAAIlD,CAAS,EACjD5T,EAAW,OAASsX,GACpB/C,EAAcvU,EAAWsX,CAAI,CAAC,EAAE,MAAQ,MAChC1D,EAAA,aAAaxS,EAAWkT,CAAQ,CAE9C,CACUvK,GAAAxH,CAAA,CACX,EAEK,MAAAkR,EAAoBmD,EAAkB,0BACvCpD,EAAA,aAAa,oBAAqBC,CAAiB,EAExD,MAAMvK,EAAUuN,EAAI,eAAe,kBAAkB,EAChC,UAAUlH,CAAM,EAChB,QAAQiF,EAAS,KAAK,MAAM,EAC5B,SAASkC,EAAa,QAAQ,EACnDjD,EAAkB,WAAWvK,CAAO,EACpCuK,EAAkB,YAAYP,CAAQ,EAEhC,MAAA8C,EAAa,CAAC,GAAG,MAAMU,EAAa,OAAO,EAAE,MAAM,EACnDa,EAAM,QACNC,EAAM,QACR,GAAAd,EAAa,eAAiBA,EAAa,YAAa,CAC1D,SAAW,CAAC5X,EAAGmX,CAAI,IAAKS,EAAa,cAAc,UACjDV,EAAWC,CAAI,EAAIS,EAAa,YAAY5X,CAAC,EAG/C,SAAW,CAACA,EAAG2Y,CAAI,IAAKf,EAAa,SAAS,UAAW,CACjD,MAAAgB,EAAU1B,EAAWyB,CAAI,EAC3BA,IAASC,IACXH,EAAI,KAAKzY,CAAC,EACV0Y,EAAI,KAAKE,CAAO,EAEpB,CACF,CACI,GAAAH,EAAI,OAAS,EAAG,CAClB,MAAMvE,EAAkByD,EAAI,eAAe,YAAY,EAC1B,UAAUlH,CAAM,EAChB,QAAQiF,EAAS,KAAK,MAAM,EAC5B,SAAS,IAAI,YAAY+C,CAAG,CAAC,EACpDtE,EAAiBwD,EAAI,eAAe,UAAU,EACxB,UAAUlH,CAAM,EAChB,QAAQiF,EAAS,KAAK,MAAM,EAC5B,SAAS,IAAI,YAAYgD,CAAG,CAAC,EACvC/D,EAAA,SAAST,EAAiBC,CAAc,CAC5D,CAEO,OAAAO,CACT,CAMO,SAASmE,GAAYnE,EAAY,CACtC,GAAI,CAACA,EAAM,OACL,MAAAmB,EAAanB,EAAK,iBACxB,UAAWI,KAAae,EAAY,CACxBf,EAAA,cAAc,UACb,UAAAU,KAAYV,EAAU,iBAC/BU,EAAS,QAAQ,CAErB,CAEM,MAAAb,EACFD,EAAK,aAAa,mBAAmB,EACrCC,IACgBA,EAAA,cAAc,UACdA,EAAA,mBAAmB,UACnBA,EAAA,kBAAkB,WAGtCD,EAAK,QAAQ,CACf,CAeA,SAASsC,GACLM,EAA0B9B,EAAoBS,EAC9ChL,EAAgB,CACZ,MAAAlL,EAAQyV,EAAS,WACjB8C,EAAO9C,EAAS,iBAChBmB,EAAUnB,EAAS,WACzB,QAASxV,EAAI,EAAGA,EAAI2W,EAAS,EAAE3W,EAC7B,QAAS6E,EAAI,EAAGA,EAAIyT,EAAM,EAAEzT,EACXyS,EAAArB,EAAUjW,EAAIiL,EAASpG,CAAC,EAAI9E,EAAMC,EAAIsY,EAAOzT,CAAC,CAGnE,CAEA,SAASwS,GACLvC,EAAsBmB,EAAiB/U,EAAyB,CAClE,MAAMoW,EAA2B,CAAA,EACjC,IAAIrM,EAAS,EACb,UAAW3I,KAAapB,EAAY,CAC5B,MAAAoX,EAAO7C,EAAcnT,CAAS,EAAE,WACtC,GAAImT,EAAcnT,CAAS,EAAE,MAAQ,KAAM,CAC/B2I,GAAAqN,EACV,QACF,CACM,MAAA9C,EAAWV,EAAU,aAAaxS,CAAS,EAC7CkT,GACcwB,GAAAM,EAAgB9B,EAAUS,EAAShL,CAAM,EAEjDA,GAAAqN,CACZ,CACO,OAAAhB,CACT","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]} \ No newline at end of file diff --git a/assets/index.css b/assets/index.css new file mode 100644 index 000000000..315e368c5 --- /dev/null +++ b/assets/index.css @@ -0,0 +1 @@ +html{height:100%}body{margin:0;height:100%;font-family:Rubik,sans-serif;font-size:24px;line-height:24px;font-weight:800;-webkit-font-smoothing:antialiased}button{display:block;padding:0 1em;cursor:pointer;height:36px;border:none;border-radius:18px;font-family:Rubik,sans-serif;font-size:16px;line-height:24px;font-weight:800;text-align:left;-webkit-font-smoothing:antialiased}a:link,a:visited{color:#000;text-decoration:underline}a:hover,a:active{color:#000;text-decoration:none}button:disabled{color:#000;background-color:#eee!important;cursor:auto}button:hover{filter:brightness(.9)}.name{border:none;height:36px;background-color:transparent;font-family:Rubik,sans-serif;font-size:16px;line-height:24px;font-weight:800;text-align:left;-webkit-font-smoothing:antialiased}.name:focus{outline:none}p{margin:18px;text-align:left}model-viewer{position:relative;flex:3;width:100%;background-color:#ddd}#console{flex:1;min-height:0;max-height:25vh;overflow-y:scroll;background-color:#eee;white-space:pre-wrap;font-size:14px;font-weight:100;line-height:20px;padding:8px}.page{height:100vh;display:flex;flex-direction:column}.container{display:flex}.col{position:relative;width:50vw}.center{position:absolute;left:50%;top:50%;transform:translate3d(-50%,-50%,0)}.header .margin{font-size:16px;margin:18px 8px}.dropdown{display:none;position:absolute;z-index:1;width:100%;max-height:80vh;overflow-y:auto}.show{display:block}.hide{display:none}.uparrow{display:inline-block;position:relative;border:solid black;border-width:0 3px 3px 0;padding:3px;transform:rotate(-135deg)}.down{transform:rotate(45deg)}.item{width:100%;position:relative}.top-edit{display:inline-block;vertical-align:middle;height:36px;top:18px;border:none;border-radius:18px}.top-icon{display:inline-block;vertical-align:middle;width:36px;background-size:24px;background-repeat:no-repeat;background-position:center;background-color:transparent}.squish{margin-right:-12px}.icon{display:inline-block;background-color:transparent;position:absolute;width:36px;top:0;right:0;background-size:20px;background-repeat:no-repeat;background-position:center}.undo{background-image:url(/icons/undo.png)}.redo{background-image:url(/icons/redo.png)}.star{background-image:url(/icons/star.png)}.share{background-image:url(/icons/share.png)}.cancel{background-image:url(/icons/close.png);background-size:20px;background-repeat:no-repeat;background-position:center}.edit{background-image:url(/icons/pencil.png);right:30px}.trash{background-image:url(/icons/trash.png)}.play{background-image:url(/icons/play.png)}.pause{background-image:url(/icons/pause.png)}.icon:hover,.top-icon:hover{background-color:#0003}.blue{background-color:#94ddff}.green{background-color:#83ff83}.red{background-color:#ffb1b1}#file-margin{position:relative;width:250px}#save{width:125px}#animation{display:none;align-items:center;position:absolute;width:100%;bottom:0;margin:2px}#play{position:relative;background-color:#ccc;margin:8px}.slider{position:relative;-webkit-appearance:none;appearance:none;width:100%;height:10px;border-radius:5px;margin-right:16px;background:#ffffff55;outline:none}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:25px;height:25px;border-radius:50%;background:#ccc;cursor:pointer}.slider::-moz-range-thumb{width:25px;height:25px;border-radius:50%;background:#ccc;cursor:pointer}@media only screen and (max-width: 820px){.container{flex-direction:column;width:100%}.col{width:100%;height:50%}#file-margin{width:calc(100% - 32px)}p{margin:.2em 1em;text-align:center}.header .margin{margin:.2em 16px}#button-container{flex-direction:row;margin-left:8px;margin-right:8px;width:calc(100% - 16px)}#button-container .margin{width:calc(50% - 16px);margin:8px}} diff --git a/assets/makeManifold.js b/assets/makeManifold.js new file mode 100644 index 000000000..241aefbc1 --- /dev/null +++ b/assets/makeManifold.js @@ -0,0 +1,2 @@ +import"./modulepreload-polyfill.js";import{Q as te,h as j,n as ae,b as Z,E as Te,c as er,I as Mt,a as Zt,d as kt,T as ti,S as Ee,L as ut,i as he,v as ni,e as ri,t as ii,f as De,s as si,_ as oi,r as ai,g as ci,w as ui,z as li}from"./gltf-io.js";import{M as fi}from"./manifold.js";const di=0,hi=0,pi=0,xi=2,gi=0,_i=163,mi=166,Ti=0,yi=2,wi=1,bi=64,Ei=0;class Ii{constructor(){this.vkFormat=Ei,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=di,this.levels=[],this.dataFormatDescriptor=[{vendorId:pi,descriptorType:hi,descriptorBlockSize:0,versionNumber:xi,colorModel:gi,colorPrimaries:wi,transferFunction:yi,flags:Ti,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class tt{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian),t=this._dataView.getUint32(this._offset+4,this._littleEndian),n=e+2**32*t;return this._offset+=8,n}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){const n=this._offset;let r=0;for(;this._dataView.getUint8(this._offset)!==t&&r{if(!t.extensions||!t.extensions[Me])return;const r=t.extensions[Me],s=this.createInstancedMesh();for(const o in r.attributes)s.setAttribute(o,e.accessors[r.attributes[o]]);e.nodes[n].setExtension(Me,s)}),this}prewrite(e){e.accessorUsageGroupedByParent.add(Ut);for(const t of this.properties)for(const n of t.listAttributes())e.addAccessorToUsageGroup(n,Ut);return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listNodes().forEach(n=>{const r=n.getExtension(Me);if(r){const s=e.nodeIndexMap.get(n),o=t.json.nodes[s],a={attributes:{}};r.listSemantics().forEach(f=>{const d=r.getAttribute(f);a.attributes[f]=e.accessorIndexMap.get(d)}),o.extensions=o.extensions||{},o.extensions[Me]=a}}),this}};function Re(){return Re=Object.assign?Object.assign.bind():function(i){for(var e=1;e8?8:4,o.componentType=s>8?En:vi,o.normalized=!0,a=i.getElementSize()===3?function(f){const d=new Float32Array(4*f.length/3);for(let p=0,m=f.length/3;pAt(f,i.getComponentType())),o.max=o.max.map(f=>At(f,i.getComponentType()))),o.normalized&&(o.min=o.min.map(f=>In(f,o.componentType)),o.max=o.max.map(f=>In(f,o.componentType)))}else o.byteStride%4&&(o.array=function(a,f){const d=Te.padNumber(a.BYTES_PER_ELEMENT*f)/a.BYTES_PER_ELEMENT,p=new a.constructor(a.length/f*d);for(let m=0;m*ft instanceof kt&&t.getMode()===kt.Mode.TRIANGLES)?qe.TRIANGLES:qe.INDICES:qe.ATTRIBUTES}function Si(i,e){const t=e.getGraph().listParentEdges(i).filter(n=>!(n.getParent()instanceof ni));for(const n of t){const r=n.getName(),s=n.getAttributes().key||"",o=n.getParent().propertyType===j.PRIMITIVE_TARGET;if(r==="indices")return{filter:Q.NONE};if(r==="attributes"){if(s==="POSITION")return{filter:Q.NONE};if(s==="TEXCOORD_0")return{filter:Q.NONE};if(s.startsWith("JOINTS_"))return{filter:Q.NONE};if(s.startsWith("WEIGHTS_"))return{filter:Q.NONE};if(s==="NORMAL"||s==="TANGENT")return o?{filter:Q.NONE}:{filter:Q.OCTAHEDRAL,bits:8}}if(r==="output"){const a=ir(i);return a==="rotation"?{filter:Q.QUATERNION,bits:16}:a==="translation"||a==="scale"?{filter:Q.EXPONENTIAL,bits:12}:{filter:Q.NONE}}if(r==="input")return{filter:Q.NONE};if(r==="inverseBindMatrices")return{filter:Q.NONE}}return{filter:Q.NONE}}function ir(i){for(const e of i.listParents())if(e instanceof ri){for(const t of e.listParents())if(t instanceof ii)return t.getTargetPath()}return null}const fe=Ct,vn={method:at.QUANTIZE};let Ot=class extends Z{constructor(...e){super(...e),this.extensionName=fe,this.prereadTypes=[j.BUFFER,j.PRIMITIVE],this.prewriteTypes=[j.BUFFER,j.ACCESSOR],this.readDependencies=["meshopt.decoder"],this.writeDependencies=["meshopt.encoder"],this._decoder=null,this._decoderFallbackBufferMap=new Map,this._encoder=null,this._encoderOptions=vn,this._encoderFallbackBuffer=null,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={}}install(e,t){return e==="meshopt.decoder"&&(this._decoder=t),e==="meshopt.encoder"&&(this._encoder=t),this}setEncoderOptions(e){return this._encoderOptions=Re({},vn,e),this}preread(e,t){if(!this._decoder){if(!this.isRequired())return this;throw new Error(`[${fe}] Please install extension dependency, "meshopt.decoder".`)}if(!this._decoder.supported){if(!this.isRequired())return this;throw new Error(`[${fe}]: Missing WASM support.`)}return t===j.BUFFER?this._prereadBuffers(e):t===j.PRIMITIVE&&this._prereadPrimitives(e),this}_prereadBuffers(e){const t=e.jsonDoc;(t.json.bufferViews||[]).forEach((n,r)=>{if(!n.extensions||!n.extensions[fe])return;const s=n.extensions[fe],o=s.byteOffset||0,a=s.byteLength||0,f=s.count,d=s.byteStride,p=new Uint8Array(f*d),m=t.json.buffers[s.buffer],w=Te.toView(m.uri?t.resources[m.uri]:t.resources[er],o,a);this._decoder.decodeGltfBuffer(p,f,d,w,s.mode,s.filter),e.bufferViews[r]=p})}_prereadPrimitives(e){const t=e.jsonDoc;(t.json.bufferViews||[]).forEach(n=>{var r;n.extensions&&n.extensions[fe]&&(r=t.json.buffers[n.buffer]).extensions&&r.extensions[Ct]&&r.extensions[Ct].fallback&&this._decoderFallbackBufferMap.set(e.buffers[n.buffer],e.buffers[n.extensions[fe].buffer])})}read(e){if(!this.isRequired())return this;for(const[t,n]of this._decoderFallbackBufferMap){for(const r of t.listParents())r instanceof te&&r.swap(t,n);t.dispose()}return this}prewrite(e,t){return t===j.ACCESSOR?this._prewriteAccessors(e):t===j.BUFFER&&this._prewriteBuffers(e),this}_prewriteAccessors(e){const t=e.jsonDoc.json,n=this._encoder,r=this._encoderOptions,s=this.document.createBuffer(),o=this.document.getRoot().listBuffers().indexOf(s);this._encoderFallbackBuffer=s,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={};for(const a of this.document.getRoot().listAccessors()){if(ir(a)==="weights"||a.getSparse())continue;const f=e.getAccessorUsage(a),d=Ni(a,f),p=r.method===at.FILTER?Si(a,this.document):{filter:Q.NONE},m=Ai(a,n,d,p),{array:w,byteStride:b}=m,l=a.getBuffer();if(!l)throw new Error(`${fe}: Missing buffer for accessor.`);const _=this.document.getRoot().listBuffers().indexOf(l),c=[f,d,p.filter,b,_].join(":");let u=this._encoderBufferViews[c],x=this._encoderBufferViewData[c],g=this._encoderBufferViewAccessors[c];u&&x||(g=this._encoderBufferViewAccessors[c]=[],x=this._encoderBufferViewData[c]=[],u=this._encoderBufferViews[c]={buffer:o,target:Mt.USAGE_TO_TARGET[f],byteOffset:0,byteLength:0,byteStride:f===Mt.BufferViewUsage.ARRAY_BUFFER?b:void 0,extensions:{[fe]:{buffer:_,byteOffset:0,byteLength:0,mode:d,filter:p.filter!==Q.NONE?p.filter:void 0,byteStride:b,count:0}}});const h=e.createAccessorDef(a);h.componentType=m.componentType,h.normalized=m.normalized,h.byteOffset=u.byteLength,h.min&&m.min&&(h.min=m.min),h.max&&m.max&&(h.max=m.max),e.accessorIndexMap.set(a,t.accessors.length),t.accessors.push(h),g.push(h),x.push(new Uint8Array(w.buffer,w.byteOffset,w.byteLength)),u.byteLength+=w.byteLength,u.extensions.EXT_meshopt_compression.count+=a.getCount()}}_prewriteBuffers(e){const t=this._encoder;for(const n in this._encoderBufferViews){const r=this._encoderBufferViews[n],s=this._encoderBufferViewData[n],o=this.document.getRoot().listBuffers()[r.extensions[fe].buffer],a=e.otherBufferViews.get(o)||[],{count:f,byteStride:d,mode:p}=r.extensions[fe],m=Te.concat(s),w=t.encodeGltfBuffer(m,f,d,p),b=Te.pad(w);r.extensions[fe].byteLength=w.byteLength,s.length=0,s.push(b),a.push(b),e.otherBufferViews.set(o,a)}}write(e){let t=0;for(const o in this._encoderBufferViews){const a=this._encoderBufferViews[o],f=e.otherBufferViewsIndexMap.get(this._encoderBufferViewData[o][0]),d=this._encoderBufferViewAccessors[o];for(const w of d)w.bufferView=f;const p=e.jsonDoc.json.bufferViews[f],m=p.byteOffset||0;Object.assign(p,a),p.byteOffset=t,p.extensions[fe].byteOffset=m,t+=Te.padNumber(a.byteLength)}const n=this._encoderFallbackBuffer,r=e.bufferIndexMap.get(n),s=e.jsonDoc.json.buffers[r];return s.byteLength=t,s.extensions={[fe]:{fallback:!0}},n.dispose(),this}};Ot.EXTENSION_NAME=fe,Ot.EncoderMethod=at;const rt="EXT_texture_avif";let Di=class{match(e){return e.length>=12&&Te.decodeText(e.slice(4,12))==="ftypavif"}getSize(e){if(!this.match(e))return null;const t=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=Rn(t,0);if(!n)return null;let r=n.end;for(;n=Rn(t,r);)if(n.type==="meta")r=n.start+4;else if(n.type==="iprp"||n.type==="ipco")r=n.start;else{if(n.type==="ispe")return[t.getUint32(n.start+4),t.getUint32(n.start+8)];if(n.type==="mdat")break;r=n.end}return null}getChannels(e){return 4}},sr=class extends Z{constructor(...e){super(...e),this.extensionName=rt,this.prereadTypes=[j.TEXTURE]}static register(){Zt.registerFormat("image/avif",new Di)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(t=>{t.extensions&&t.extensions[rt]&&(t.source=t.extensions[rt].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(n=>{if(n.getMimeType()==="image/avif"){const r=e.imageIndexMap.get(n);(t.json.textures||[]).forEach(s=>{s.source===r&&(s.extensions=s.extensions||{},s.extensions[rt]={source:s.source},delete s.source)})}}),this}};function Rn(i,e){if(i.byteLength<4+e)return null;const t=i.getUint32(e);return i.byteLength=12&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80}getSize(e){const t=Te.decodeText(e.slice(0,4)),n=Te.decodeText(e.slice(8,12));if(t!=="RIFF"||n!=="WEBP")return null;const r=new DataView(e.buffer,e.byteOffset);let s=12;for(;s>6)]}s+=8+a+a%2}return null}getChannels(e){return 4}},or=class extends Z{constructor(...e){super(...e),this.extensionName=it,this.prereadTypes=[j.TEXTURE]}static register(){Zt.registerFormat("image/webp",new Mi)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(t=>{t.extensions&&t.extensions[it]&&(t.source=t.extensions[it].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(n=>{if(n.getMimeType()==="image/webp"){const r=e.imageIndexMap.get(n);(t.json.textures||[]).forEach(s=>{s.source===r&&(s.extensions=s.extensions||{},s.extensions[it]={source:s.source},delete s.source)})}}),this}};or.EXTENSION_NAME=it;const An=tr;let re,ar,cr,xe;function ki(i,e){const t=new re.DecoderBuffer;try{if(t.Init(e,e.length),i.GetEncodedGeometryType(t)!==re.TRIANGULAR_MESH)throw new Error(`[${An}] Unknown geometry type.`);const n=new re.Mesh;if(!i.DecodeBufferToMesh(t,n).ok()||n.ptr===0)throw new Error(`[${An}] Decoding failure.`);return n}finally{re.destroy(t)}}function Ci(i,e){const t=3*e.num_faces();let n,r;if(e.num_points()<=65534){const s=t*Uint16Array.BYTES_PER_ELEMENT;n=re._malloc(s),i.GetTrianglesUInt16Array(e,s,n),r=new Uint16Array(re.HEAPU16.buffer,n,t).slice()}else{const s=t*Uint32Array.BYTES_PER_ELEMENT;n=re._malloc(s),i.GetTrianglesUInt32Array(e,s,n),r=new Uint32Array(re.HEAPU32.buffer,n,t).slice()}return re._free(n),r}function Ui(i,e,t,n){const r=cr[n.componentType],s=ar[n.componentType],o=t.num_components(),a=e.num_points()*o,f=a*s.BYTES_PER_ELEMENT,d=re._malloc(f);i.GetAttributeDataArrayForAllPoints(e,t,r,f,d);const p=new s(re.HEAPF32.buffer,d,a).slice();return re._free(d),p}var ct,ge;(function(i){i[i.EDGEBREAKER=1]="EDGEBREAKER",i[i.SEQUENTIAL=0]="SEQUENTIAL"})(ct||(ct={})),function(i){i.POSITION="POSITION",i.NORMAL="NORMAL",i.COLOR="COLOR",i.TEX_COORD="TEX_COORD",i.GENERIC="GENERIC"}(ge||(ge={}));const ur={[ge.POSITION]:14,[ge.NORMAL]:10,[ge.COLOR]:8,[ge.TEX_COORD]:12,[ge.GENERIC]:12},Nn={decodeSpeed:5,encodeSpeed:5,method:ct.EDGEBREAKER,quantizationBits:ur,quantizationVolume:"mesh"};function Oi(i,e=Nn){const t=Re({},Nn,e);t.quantizationBits=Re({},ur,e.quantizationBits);const n=new xe.MeshBuilder,r=new xe.Mesh,s=new xe.ExpertEncoder(r),o={},a=new xe.DracoInt8Array,f=i.listTargets().length>0;let d=!1;for(const _ of i.listSemantics()){const c=i.getAttribute(_);if(c.getSparse()){d=!0;continue}const u=Fi(_),x=Bi(n,c.getComponentType(),r,xe[u],c.getCount(),c.getElementSize(),c.getArray());if(x===-1)throw new Error(`Error compressing "${_}" attribute.`);if(o[_]=x,t.quantizationVolume==="mesh"||_!=="POSITION")s.SetAttributeQuantization(x,t.quantizationBits[u]);else{if(typeof t.quantizationVolume!="object")throw new Error("Invalid quantization volume state.");{const{quantizationVolume:g}=t,h=Math.max(g.max[0]-g.min[0],g.max[1]-g.min[1],g.max[2]-g.min[2]);s.SetAttributeExplicitQuantization(x,t.quantizationBits[u],c.getElementSize(),g.min,h)}}}const p=i.getIndices();if(!p)throw new Ft("Primitive must have indices.");n.AddFacesToMesh(r,p.getCount()/3,p.getArray()),s.SetSpeedOptions(t.encodeSpeed,t.decodeSpeed),s.SetTrackEncodedProperties(!0),s.SetEncodingMethod(t.method===ct.SEQUENTIAL||f||d?xe.MESH_SEQUENTIAL_ENCODING:xe.MESH_EDGEBREAKER_ENCODING);const m=s.EncodeToDracoBuffer(!(f||d),a);if(m<=0)throw new Ft("Error applying Draco compression.");const w=new Uint8Array(m);for(let _=0;_x.propertyType));if(u.size!==2||!u.has(j.PRIMITIVE)||!u.has(j.ROOT))throw new Error(`[${Y}] Compressed accessors must only be used as indices or vertex attributes.`)}for(const c of Array.from(d)){const u=_.get(c),x=c.getIndices();if(b.get(x)!==u||c.listAttributes().some(g=>b.get(g)!==u))throw new Error(`[${Y}] Draco primitives must share all, or no, accessors.`)}for(const c of Array.from(p)){const u=c.getIndices();if(b.has(u)||c.listAttributes().some(x=>b.has(x)))throw new Error(`[${Y}] Accessor cannot be shared by compressed and uncompressed primitives.`)}return _}(this.document),s=new Map;let o="mesh";this._encoderOptions.quantizationVolume==="scene"&&(this.document.getRoot().listScenes().length!==1?n.warn(`[${Y}]: quantizationVolume=scene requires exactly 1 scene.`):o=ti(this.document.getRoot().listScenes().pop()));for(const a of Array.from(r.keys())){const f=r.get(a);if(!f)throw new Error("Unexpected primitive.");if(s.has(f)){s.set(f,s.get(f));continue}const d=a.getIndices(),p=e.jsonDoc.json.accessors;let m;try{m=Oi(a,Re({},this._encoderOptions,{quantizationVolume:o}))}catch(l){if(l instanceof Ft){n.warn(`[${Y}]: ${l.message} Skipping primitive compression.`);continue}throw l}s.set(f,m);const w=e.createAccessorDef(d);w.count=m.numIndices,e.accessorIndexMap.set(d,p.length),p.push(w);for(const l of a.listSemantics()){const _=a.getAttribute(l);if(m.attributeIDs[l]===void 0)continue;const c=e.createAccessorDef(_);c.count=m.numVertices,e.accessorIndexMap.set(_,p.length),p.push(c)}const b=a.getAttribute("POSITION").getBuffer()||this.document.getRoot().listBuffers()[0];e.otherBufferViews.has(b)||e.otherBufferViews.set(b,[]),e.otherBufferViews.get(b).push(m.data)}return n.debug(`[${Y}] Compressed ${r.size} primitives.`),e.extensionData[Y]={primitiveHashMap:r,primitiveEncodingMap:s},this}write(e){const t=e.extensionData[Y];for(const n of this.document.getRoot().listMeshes()){const r=e.jsonDoc.json.meshes[e.meshIndexMap.get(n)];for(let s=0;sr!==Y),n.extensionsRequired=(n.extensionsRequired||[]).filter(r=>r!==Y)}return this}}function Sn(i,e){const t=[],n=i.getIndices();t.push(e.get(n));for(const r of i.listAttributes())t.push(e.get(r));return t.sort().join("|")}Bt.EXTENSION_NAME=Y,Bt.EncoderMethod=ct;let Tt=class lr extends ae{init(){this.extensionName=Qt,this.propertyType="Light",this.parentTypes=[j.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{color:[1,1,1],intensity:1,type:lr.Type.POINT,range:null,innerConeAngle:0,outerConeAngle:Math.PI/4})}getColor(){return this.get("color")}setColor(e){return this.set("color",e)}getColorHex(){return Ee.factorToHex(this.getColor())}setColorHex(e){const t=this.getColor().slice();return Ee.hexToFactor(e,t),this.setColor(t)}getIntensity(){return this.get("intensity")}setIntensity(e){return this.set("intensity",e)}getType(){return this.get("type")}setType(e){return this.set("type",e)}getRange(){return this.get("range")}setRange(e){return this.set("range",e)}getInnerConeAngle(){return this.get("innerConeAngle")}setInnerConeAngle(e){return this.set("innerConeAngle",e)}getOuterConeAngle(){return this.get("outerConeAngle")}setOuterConeAngle(e){return this.set("outerConeAngle",e)}};Tt.EXTENSION_NAME=Qt,Tt.Type={POINT:"point",SPOT:"spot",DIRECTIONAL:"directional"};const we=Qt;let fr=class extends Z{constructor(...e){super(...e),this.extensionName=we}createLight(e=""){return new Tt(this.document.getGraph(),e)}read(e){const t=e.jsonDoc;if(!t.json.extensions||!t.json.extensions[we])return this;const n=(t.json.extensions[we].lights||[]).map(r=>{var s,o;const a=this.createLight().setName(r.name||"").setType(r.type);return r.color!==void 0&&a.setColor(r.color),r.intensity!==void 0&&a.setIntensity(r.intensity),r.range!==void 0&&a.setRange(r.range),((s=r.spot)==null?void 0:s.innerConeAngle)!==void 0&&a.setInnerConeAngle(r.spot.innerConeAngle),((o=r.spot)==null?void 0:o.outerConeAngle)!==void 0&&a.setOuterConeAngle(r.spot.outerConeAngle),a});return t.json.nodes.forEach((r,s)=>{r.extensions&&r.extensions[we]&&e.nodes[s].setExtension(we,n[r.extensions[we].light])}),this}write(e){const t=e.jsonDoc;if(this.properties.size===0)return this;const n=[],r=new Map;for(const s of this.properties){const o=s,a={type:o.getType()};ut.eq(o.getColor(),[1,1,1])||(a.color=o.getColor()),o.getIntensity()!==1&&(a.intensity=o.getIntensity()),o.getRange()!=null&&(a.range=o.getRange()),o.getName()&&(a.name=o.getName()),o.getType()===Tt.Type.SPOT&&(a.spot={innerConeAngle:o.getInnerConeAngle(),outerConeAngle:o.getOuterConeAngle()}),n.push(a),r.set(o,n.length-1)}return this.document.getRoot().listNodes().forEach(s=>{const o=s.getExtension(we);if(o){const a=e.nodeIndexMap.get(s),f=t.json.nodes[a];f.extensions=f.extensions||{},f.extensions[we]={light:r.get(o)}}}),t.json.extensions=t.json.extensions||{},t.json.extensions[we]={lights:n},this}};fr.EXTENSION_NAME=we;const{R:Li,G:ji,B:zi}=De;class dr extends ae{init(){this.extensionName=Jt,this.propertyType="Anisotropy",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{anisotropyStrength:0,anisotropyRotation:0,anisotropyTexture:null,anisotropyTextureInfo:new he(this.graph,"anisotropyTextureInfo")})}getAnisotropyStrength(){return this.get("anisotropyStrength")}setAnisotropyStrength(e){return this.set("anisotropyStrength",e)}getAnisotropyRotation(){return this.get("anisotropyRotation")}setAnisotropyRotation(e){return this.set("anisotropyRotation",e)}getAnisotropyTexture(){return this.getRef("anisotropyTexture")}getAnisotropyTextureInfo(){return this.getRef("anisotropyTexture")?this.getRef("anisotropyTextureInfo"):null}setAnisotropyTexture(e){return this.setRef("anisotropyTexture",e,{channels:Li|ji|zi})}}dr.EXTENSION_NAME=Jt;const ke=Jt;class hr extends Z{constructor(...e){super(...e),this.extensionName=ke}createAnisotropy(){return new dr(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[ke]){const o=this.createAnisotropy();e.materials[s].setExtension(ke,o);const a=r.extensions[ke];if(a.anisotropyStrength!==void 0&&o.setAnisotropyStrength(a.anisotropyStrength),a.anisotropyRotation!==void 0&&o.setAnisotropyRotation(a.anisotropyRotation),a.anisotropyTexture!==void 0){const f=a.anisotropyTexture;o.setAnisotropyTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getAnisotropyTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(ke);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[ke]={};if(r.getAnisotropyStrength()>0&&(a.anisotropyStrength=r.getAnisotropyStrength()),r.getAnisotropyRotation()!==0&&(a.anisotropyRotation=r.getAnisotropyRotation()),r.getAnisotropyTexture()){const f=r.getAnisotropyTexture(),d=r.getAnisotropyTextureInfo();a.anisotropyTexture=e.createTextureInfoDef(f,d)}}}),this}}hr.EXTENSION_NAME=ke;const{R:Dn,G:Mn,B:Pi}=De;class pr extends ae{init(){this.extensionName=en,this.propertyType="Clearcoat",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{clearcoatFactor:0,clearcoatTexture:null,clearcoatTextureInfo:new he(this.graph,"clearcoatTextureInfo"),clearcoatRoughnessFactor:0,clearcoatRoughnessTexture:null,clearcoatRoughnessTextureInfo:new he(this.graph,"clearcoatRoughnessTextureInfo"),clearcoatNormalScale:1,clearcoatNormalTexture:null,clearcoatNormalTextureInfo:new he(this.graph,"clearcoatNormalTextureInfo")})}getClearcoatFactor(){return this.get("clearcoatFactor")}setClearcoatFactor(e){return this.set("clearcoatFactor",e)}getClearcoatTexture(){return this.getRef("clearcoatTexture")}getClearcoatTextureInfo(){return this.getRef("clearcoatTexture")?this.getRef("clearcoatTextureInfo"):null}setClearcoatTexture(e){return this.setRef("clearcoatTexture",e,{channels:Dn})}getClearcoatRoughnessFactor(){return this.get("clearcoatRoughnessFactor")}setClearcoatRoughnessFactor(e){return this.set("clearcoatRoughnessFactor",e)}getClearcoatRoughnessTexture(){return this.getRef("clearcoatRoughnessTexture")}getClearcoatRoughnessTextureInfo(){return this.getRef("clearcoatRoughnessTexture")?this.getRef("clearcoatRoughnessTextureInfo"):null}setClearcoatRoughnessTexture(e){return this.setRef("clearcoatRoughnessTexture",e,{channels:Mn})}getClearcoatNormalScale(){return this.get("clearcoatNormalScale")}setClearcoatNormalScale(e){return this.set("clearcoatNormalScale",e)}getClearcoatNormalTexture(){return this.getRef("clearcoatNormalTexture")}getClearcoatNormalTextureInfo(){return this.getRef("clearcoatNormalTexture")?this.getRef("clearcoatNormalTextureInfo"):null}setClearcoatNormalTexture(e){return this.setRef("clearcoatNormalTexture",e,{channels:Dn|Mn|Pi})}}pr.EXTENSION_NAME=en;const Ce=en;class xr extends Z{constructor(...e){super(...e),this.extensionName=Ce}createClearcoat(){return new pr(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[Ce]){const o=this.createClearcoat();e.materials[s].setExtension(Ce,o);const a=r.extensions[Ce];if(a.clearcoatFactor!==void 0&&o.setClearcoatFactor(a.clearcoatFactor),a.clearcoatRoughnessFactor!==void 0&&o.setClearcoatRoughnessFactor(a.clearcoatRoughnessFactor),a.clearcoatTexture!==void 0){const f=a.clearcoatTexture;o.setClearcoatTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getClearcoatTextureInfo(),f)}if(a.clearcoatRoughnessTexture!==void 0){const f=a.clearcoatRoughnessTexture;o.setClearcoatRoughnessTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getClearcoatRoughnessTextureInfo(),f)}if(a.clearcoatNormalTexture!==void 0){const f=a.clearcoatNormalTexture;o.setClearcoatNormalTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getClearcoatNormalTextureInfo(),f),f.scale!==void 0&&o.setClearcoatNormalScale(f.scale)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Ce);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[Ce]={clearcoatFactor:r.getClearcoatFactor(),clearcoatRoughnessFactor:r.getClearcoatRoughnessFactor()};if(r.getClearcoatTexture()){const f=r.getClearcoatTexture(),d=r.getClearcoatTextureInfo();a.clearcoatTexture=e.createTextureInfoDef(f,d)}if(r.getClearcoatRoughnessTexture()){const f=r.getClearcoatRoughnessTexture(),d=r.getClearcoatRoughnessTextureInfo();a.clearcoatRoughnessTexture=e.createTextureInfoDef(f,d)}if(r.getClearcoatNormalTexture()){const f=r.getClearcoatNormalTexture(),d=r.getClearcoatNormalTextureInfo();a.clearcoatNormalTexture=e.createTextureInfoDef(f,d),r.getClearcoatNormalScale()!==1&&(a.clearcoatNormalTexture.scale=r.getClearcoatNormalScale())}}}),this}}xr.EXTENSION_NAME=Ce;class gr extends ae{init(){this.extensionName=tn,this.propertyType="EmissiveStrength",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{emissiveStrength:1})}getEmissiveStrength(){return this.get("emissiveStrength")}setEmissiveStrength(e){return this.set("emissiveStrength",e)}}gr.EXTENSION_NAME=tn;const Ue=tn;class _r extends Z{constructor(...e){super(...e),this.extensionName=Ue}createEmissiveStrength(){return new gr(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Ue]){const r=this.createEmissiveStrength();e.materials[n].setExtension(Ue,r);const s=t.extensions[Ue];s.emissiveStrength!==void 0&&r.setEmissiveStrength(s.emissiveStrength)}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Ue);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{},o.extensions[Ue]={emissiveStrength:r.getEmissiveStrength()}}}),this}}_r.EXTENSION_NAME=Ue;class mr extends ae{init(){this.extensionName=nn,this.propertyType="IOR",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{ior:1.5})}getIOR(){return this.get("ior")}setIOR(e){return this.set("ior",e)}}mr.EXTENSION_NAME=nn;const Oe=nn;class Tr extends Z{constructor(...e){super(...e),this.extensionName=Oe}createIOR(){return new mr(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Oe]){const r=this.createIOR();e.materials[n].setExtension(Oe,r);const s=t.extensions[Oe];s.ior!==void 0&&r.setIOR(s.ior)}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Oe);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{},o.extensions[Oe]={ior:r.getIOR()}}}),this}}Tr.EXTENSION_NAME=Oe;const{R:Gi,G:$i}=De;class yr extends ae{init(){this.extensionName=rn,this.propertyType="Iridescence",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{iridescenceFactor:0,iridescenceTexture:null,iridescenceTextureInfo:new he(this.graph,"iridescenceTextureInfo"),iridescenceIOR:1.3,iridescenceThicknessMinimum:100,iridescenceThicknessMaximum:400,iridescenceThicknessTexture:null,iridescenceThicknessTextureInfo:new he(this.graph,"iridescenceThicknessTextureInfo")})}getIridescenceFactor(){return this.get("iridescenceFactor")}setIridescenceFactor(e){return this.set("iridescenceFactor",e)}getIridescenceTexture(){return this.getRef("iridescenceTexture")}getIridescenceTextureInfo(){return this.getRef("iridescenceTexture")?this.getRef("iridescenceTextureInfo"):null}setIridescenceTexture(e){return this.setRef("iridescenceTexture",e,{channels:Gi})}getIridescenceIOR(){return this.get("iridescenceIOR")}setIridescenceIOR(e){return this.set("iridescenceIOR",e)}getIridescenceThicknessMinimum(){return this.get("iridescenceThicknessMinimum")}setIridescenceThicknessMinimum(e){return this.set("iridescenceThicknessMinimum",e)}getIridescenceThicknessMaximum(){return this.get("iridescenceThicknessMaximum")}setIridescenceThicknessMaximum(e){return this.set("iridescenceThicknessMaximum",e)}getIridescenceThicknessTexture(){return this.getRef("iridescenceThicknessTexture")}getIridescenceThicknessTextureInfo(){return this.getRef("iridescenceThicknessTexture")?this.getRef("iridescenceThicknessTextureInfo"):null}setIridescenceThicknessTexture(e){return this.setRef("iridescenceThicknessTexture",e,{channels:$i})}}yr.EXTENSION_NAME=rn;const Fe=rn;class wr extends Z{constructor(...e){super(...e),this.extensionName=Fe}createIridescence(){return new yr(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[Fe]){const o=this.createIridescence();e.materials[s].setExtension(Fe,o);const a=r.extensions[Fe];if(a.iridescenceFactor!==void 0&&o.setIridescenceFactor(a.iridescenceFactor),a.iridescenceIor!==void 0&&o.setIridescenceIOR(a.iridescenceIor),a.iridescenceThicknessMinimum!==void 0&&o.setIridescenceThicknessMinimum(a.iridescenceThicknessMinimum),a.iridescenceThicknessMaximum!==void 0&&o.setIridescenceThicknessMaximum(a.iridescenceThicknessMaximum),a.iridescenceTexture!==void 0){const f=a.iridescenceTexture;o.setIridescenceTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getIridescenceTextureInfo(),f)}if(a.iridescenceThicknessTexture!==void 0){const f=a.iridescenceThicknessTexture;o.setIridescenceThicknessTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getIridescenceThicknessTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Fe);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[Fe]={};if(r.getIridescenceFactor()>0&&(a.iridescenceFactor=r.getIridescenceFactor()),r.getIridescenceIOR()!==1.3&&(a.iridescenceIor=r.getIridescenceIOR()),r.getIridescenceThicknessMinimum()!==100&&(a.iridescenceThicknessMinimum=r.getIridescenceThicknessMinimum()),r.getIridescenceThicknessMaximum()!==400&&(a.iridescenceThicknessMaximum=r.getIridescenceThicknessMaximum()),r.getIridescenceTexture()){const f=r.getIridescenceTexture(),d=r.getIridescenceTextureInfo();a.iridescenceTexture=e.createTextureInfoDef(f,d)}if(r.getIridescenceThicknessTexture()){const f=r.getIridescenceThicknessTexture(),d=r.getIridescenceThicknessTextureInfo();a.iridescenceThicknessTexture=e.createTextureInfoDef(f,d)}}}),this}}wr.EXTENSION_NAME=Fe;const{R:kn,G:Cn,B:Un,A:On}=De;class br extends ae{init(){this.extensionName=sn,this.propertyType="PBRSpecularGlossiness",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{diffuseFactor:[1,1,1,1],diffuseTexture:null,diffuseTextureInfo:new he(this.graph,"diffuseTextureInfo"),specularFactor:[1,1,1],glossinessFactor:1,specularGlossinessTexture:null,specularGlossinessTextureInfo:new he(this.graph,"specularGlossinessTextureInfo")})}getDiffuseFactor(){return this.get("diffuseFactor")}setDiffuseFactor(e){return this.set("diffuseFactor",e)}getDiffuseHex(){return Ee.factorToHex(this.getDiffuseFactor())}setDiffuseHex(e){const t=this.getDiffuseFactor().slice();return this.setDiffuseFactor(Ee.hexToFactor(e,t))}getDiffuseTexture(){return this.getRef("diffuseTexture")}getDiffuseTextureInfo(){return this.getRef("diffuseTexture")?this.getRef("diffuseTextureInfo"):null}setDiffuseTexture(e){return this.setRef("diffuseTexture",e,{channels:kn|Cn|Un|On,isColor:!0})}getSpecularFactor(){return this.get("specularFactor")}setSpecularFactor(e){return this.set("specularFactor",e)}getGlossinessFactor(){return this.get("glossinessFactor")}setGlossinessFactor(e){return this.set("glossinessFactor",e)}getSpecularGlossinessTexture(){return this.getRef("specularGlossinessTexture")}getSpecularGlossinessTextureInfo(){return this.getRef("specularGlossinessTexture")?this.getRef("specularGlossinessTextureInfo"):null}setSpecularGlossinessTexture(e){return this.setRef("specularGlossinessTexture",e,{channels:kn|Cn|Un|On})}}br.EXTENSION_NAME=sn;const Be=sn;class Er extends Z{constructor(...e){super(...e),this.extensionName=Be}createPBRSpecularGlossiness(){return new br(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[Be]){const o=this.createPBRSpecularGlossiness();e.materials[s].setExtension(Be,o);const a=r.extensions[Be];if(a.diffuseFactor!==void 0&&o.setDiffuseFactor(a.diffuseFactor),a.specularFactor!==void 0&&o.setSpecularFactor(a.specularFactor),a.glossinessFactor!==void 0&&o.setGlossinessFactor(a.glossinessFactor),a.diffuseTexture!==void 0){const f=a.diffuseTexture;o.setDiffuseTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getDiffuseTextureInfo(),f)}if(a.specularGlossinessTexture!==void 0){const f=a.specularGlossinessTexture;o.setSpecularGlossinessTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getSpecularGlossinessTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Be);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[Be]={diffuseFactor:r.getDiffuseFactor(),specularFactor:r.getSpecularFactor(),glossinessFactor:r.getGlossinessFactor()};if(r.getDiffuseTexture()){const f=r.getDiffuseTexture(),d=r.getDiffuseTextureInfo();a.diffuseTexture=e.createTextureInfoDef(f,d)}if(r.getSpecularGlossinessTexture()){const f=r.getSpecularGlossinessTexture(),d=r.getSpecularGlossinessTextureInfo();a.specularGlossinessTexture=e.createTextureInfoDef(f,d)}}}),this}}Er.EXTENSION_NAME=Be;const{R:Vi,G:Hi,B:Xi,A:Wi}=De;class Ir extends ae{init(){this.extensionName=on,this.propertyType="Sheen",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{sheenColorFactor:[0,0,0],sheenColorTexture:null,sheenColorTextureInfo:new he(this.graph,"sheenColorTextureInfo"),sheenRoughnessFactor:0,sheenRoughnessTexture:null,sheenRoughnessTextureInfo:new he(this.graph,"sheenRoughnessTextureInfo")})}getSheenColorFactor(){return this.get("sheenColorFactor")}getSheenColorHex(){return Ee.factorToHex(this.getSheenColorFactor())}setSheenColorFactor(e){return this.set("sheenColorFactor",e)}setSheenColorHex(e){const t=this.getSheenColorFactor().slice();return this.set("sheenColorFactor",Ee.hexToFactor(e,t))}getSheenColorTexture(){return this.getRef("sheenColorTexture")}getSheenColorTextureInfo(){return this.getRef("sheenColorTexture")?this.getRef("sheenColorTextureInfo"):null}setSheenColorTexture(e){return this.setRef("sheenColorTexture",e,{channels:Vi|Hi|Xi,isColor:!0})}getSheenRoughnessFactor(){return this.get("sheenRoughnessFactor")}setSheenRoughnessFactor(e){return this.set("sheenRoughnessFactor",e)}getSheenRoughnessTexture(){return this.getRef("sheenRoughnessTexture")}getSheenRoughnessTextureInfo(){return this.getRef("sheenRoughnessTexture")?this.getRef("sheenRoughnessTextureInfo"):null}setSheenRoughnessTexture(e){return this.setRef("sheenRoughnessTexture",e,{channels:Wi})}}Ir.EXTENSION_NAME=on;const Le=on;class vr extends Z{constructor(...e){super(...e),this.extensionName=Le}createSheen(){return new Ir(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[Le]){const o=this.createSheen();e.materials[s].setExtension(Le,o);const a=r.extensions[Le];if(a.sheenColorFactor!==void 0&&o.setSheenColorFactor(a.sheenColorFactor),a.sheenRoughnessFactor!==void 0&&o.setSheenRoughnessFactor(a.sheenRoughnessFactor),a.sheenColorTexture!==void 0){const f=a.sheenColorTexture;o.setSheenColorTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getSheenColorTextureInfo(),f)}if(a.sheenRoughnessTexture!==void 0){const f=a.sheenRoughnessTexture;o.setSheenRoughnessTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getSheenRoughnessTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Le);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[Le]={sheenColorFactor:r.getSheenColorFactor(),sheenRoughnessFactor:r.getSheenRoughnessFactor()};if(r.getSheenColorTexture()){const f=r.getSheenColorTexture(),d=r.getSheenColorTextureInfo();a.sheenColorTexture=e.createTextureInfoDef(f,d)}if(r.getSheenRoughnessTexture()){const f=r.getSheenRoughnessTexture(),d=r.getSheenRoughnessTextureInfo();a.sheenRoughnessTexture=e.createTextureInfoDef(f,d)}}}),this}}vr.EXTENSION_NAME=Le;const{R:Ki,G:qi,B:Zi,A:Yi}=De;class Rr extends ae{init(){this.extensionName=an,this.propertyType="Specular",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{specularFactor:1,specularTexture:null,specularTextureInfo:new he(this.graph,"specularTextureInfo"),specularColorFactor:[1,1,1],specularColorTexture:null,specularColorTextureInfo:new he(this.graph,"specularColorTextureInfo")})}getSpecularFactor(){return this.get("specularFactor")}setSpecularFactor(e){return this.set("specularFactor",e)}getSpecularColorFactor(){return this.get("specularColorFactor")}setSpecularColorFactor(e){return this.set("specularColorFactor",e)}getSpecularColorHex(){return Ee.factorToHex(this.getSpecularColorFactor())}setSpecularColorHex(e){const t=this.getSpecularColorFactor().slice();return this.set("specularColorFactor",Ee.hexToFactor(e,t))}getSpecularTexture(){return this.getRef("specularTexture")}getSpecularTextureInfo(){return this.getRef("specularTexture")?this.getRef("specularTextureInfo"):null}setSpecularTexture(e){return this.setRef("specularTexture",e,{channels:Yi})}getSpecularColorTexture(){return this.getRef("specularColorTexture")}getSpecularColorTextureInfo(){return this.getRef("specularColorTexture")?this.getRef("specularColorTextureInfo"):null}setSpecularColorTexture(e){return this.setRef("specularColorTexture",e,{channels:Ki|qi|Zi,isColor:!0})}}Rr.EXTENSION_NAME=an;const je=an;class Ar extends Z{constructor(...e){super(...e),this.extensionName=je}createSpecular(){return new Rr(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[je]){const o=this.createSpecular();e.materials[s].setExtension(je,o);const a=r.extensions[je];if(a.specularFactor!==void 0&&o.setSpecularFactor(a.specularFactor),a.specularColorFactor!==void 0&&o.setSpecularColorFactor(a.specularColorFactor),a.specularTexture!==void 0){const f=a.specularTexture;o.setSpecularTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getSpecularTextureInfo(),f)}if(a.specularColorTexture!==void 0){const f=a.specularColorTexture;o.setSpecularColorTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getSpecularColorTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(je);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[je]={};if(r.getSpecularFactor()!==1&&(a.specularFactor=r.getSpecularFactor()),ut.eq(r.getSpecularColorFactor(),[1,1,1])||(a.specularColorFactor=r.getSpecularColorFactor()),r.getSpecularTexture()){const f=r.getSpecularTexture(),d=r.getSpecularTextureInfo();a.specularTexture=e.createTextureInfoDef(f,d)}if(r.getSpecularColorTexture()){const f=r.getSpecularColorTexture(),d=r.getSpecularColorTextureInfo();a.specularColorTexture=e.createTextureInfoDef(f,d)}}}),this}}Ar.EXTENSION_NAME=je;const{R:Qi}=De;class Nr extends ae{init(){this.extensionName=cn,this.propertyType="Transmission",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{transmissionFactor:0,transmissionTexture:null,transmissionTextureInfo:new he(this.graph,"transmissionTextureInfo")})}getTransmissionFactor(){return this.get("transmissionFactor")}setTransmissionFactor(e){return this.set("transmissionFactor",e)}getTransmissionTexture(){return this.getRef("transmissionTexture")}getTransmissionTextureInfo(){return this.getRef("transmissionTexture")?this.getRef("transmissionTextureInfo"):null}setTransmissionTexture(e){return this.setRef("transmissionTexture",e,{channels:Qi})}}Nr.EXTENSION_NAME=cn;const ze=cn;class Sr extends Z{constructor(...e){super(...e),this.extensionName=ze}createTransmission(){return new Nr(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[ze]){const o=this.createTransmission();e.materials[s].setExtension(ze,o);const a=r.extensions[ze];if(a.transmissionFactor!==void 0&&o.setTransmissionFactor(a.transmissionFactor),a.transmissionTexture!==void 0){const f=a.transmissionTexture;o.setTransmissionTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getTransmissionTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(ze);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[ze]={transmissionFactor:r.getTransmissionFactor()};if(r.getTransmissionTexture()){const f=r.getTransmissionTexture(),d=r.getTransmissionTextureInfo();a.transmissionTexture=e.createTextureInfoDef(f,d)}}}),this}}Sr.EXTENSION_NAME=ze;class Dr extends ae{init(){this.extensionName=un,this.propertyType="Unlit",this.parentTypes=[j.MATERIAL]}}Dr.EXTENSION_NAME=un;const We=un;class Mr extends Z{constructor(...e){super(...e),this.extensionName=We}createUnlit(){return new Dr(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,n)=>{t.extensions&&t.extensions[We]&&e.materials[n].setExtension(We,this.createUnlit())}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{if(n.getExtension(We)){const r=e.materialIndexMap.get(n),s=t.json.materials[r];s.extensions=s.extensions||{},s.extensions[We]={}}}),this}}Mr.EXTENSION_NAME=We;class kr extends ae{init(){this.extensionName=$e,this.propertyType="Mapping",this.parentTypes=["MappingList"]}getDefaults(){return Object.assign(super.getDefaults(),{material:null,variants:[]})}getMaterial(){return this.getRef("material")}setMaterial(e){return this.setRef("material",e)}addVariant(e){return this.addRef("variants",e)}removeVariant(e){return this.removeRef("variants",e)}listVariants(){return this.listRefs("variants")}}kr.EXTENSION_NAME=$e;class Cr extends ae{init(){this.extensionName=$e,this.propertyType="MappingList",this.parentTypes=[j.PRIMITIVE]}getDefaults(){return Object.assign(super.getDefaults(),{mappings:[]})}addMapping(e){return this.addRef("mappings",e)}removeMapping(e){return this.removeRef("mappings",e)}listMappings(){return this.listRefs("mappings")}}Cr.EXTENSION_NAME=$e;class Lt extends ae{init(){this.extensionName=$e,this.propertyType="Variant",this.parentTypes=["MappingList"]}}Lt.EXTENSION_NAME=$e;const be=$e;class Ur extends Z{constructor(...e){super(...e),this.extensionName=be}createMappingList(){return new Cr(this.document.getGraph())}createVariant(e=""){return new Lt(this.document.getGraph(),e)}createMapping(){return new kr(this.document.getGraph())}listVariants(){return Array.from(this.properties).filter(e=>e instanceof Lt)}read(e){const t=e.jsonDoc;if(!t.json.extensions||!t.json.extensions[be])return this;const n=(t.json.extensions[be].variants||[]).map(r=>this.createVariant().setName(r.name||""));return(t.json.meshes||[]).forEach((r,s)=>{const o=e.meshes[s];(r.primitives||[]).forEach((a,f)=>{if(!a.extensions||!a.extensions[be])return;const d=this.createMappingList(),p=a.extensions[be];for(const m of p.mappings){const w=this.createMapping();m.material!==void 0&&w.setMaterial(e.materials[m.material]);for(const b of m.variants||[])w.addVariant(n[b]);d.addMapping(w)}o.listPrimitives()[f].setExtension(be,d)})}),this}write(e){const t=e.jsonDoc,n=this.listVariants();if(!n.length)return this;const r=[],s=new Map;for(const o of n)s.set(o,r.length),r.push(e.createPropertyDef(o));for(const o of this.document.getRoot().listMeshes()){const a=e.meshIndexMap.get(o);o.listPrimitives().forEach((f,d)=>{const p=f.getExtension(be);if(!p)return;const m=e.jsonDoc.json.meshes[a].primitives[d],w=p.listMappings().map(b=>{const l=e.createPropertyDef(b),_=b.getMaterial();return _&&(l.material=e.materialIndexMap.get(_)),l.variants=b.listVariants().map(c=>s.get(c)),l});m.extensions=m.extensions||{},m.extensions[be]={mappings:w}})}return t.json.extensions=t.json.extensions||{},t.json.extensions[be]={variants:r},this}}Ur.EXTENSION_NAME=be;const{G:Ji}=De;class Or extends ae{init(){this.extensionName=ln,this.propertyType="Volume",this.parentTypes=[j.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{thicknessFactor:0,thicknessTexture:null,thicknessTextureInfo:new he(this.graph,"thicknessTexture"),attenuationDistance:1/0,attenuationColor:[1,1,1]})}getThicknessFactor(){return this.get("thicknessFactor")}setThicknessFactor(e){return this.set("thicknessFactor",e)}getThicknessTexture(){return this.getRef("thicknessTexture")}getThicknessTextureInfo(){return this.getRef("thicknessTexture")?this.getRef("thicknessTextureInfo"):null}setThicknessTexture(e){return this.setRef("thicknessTexture",e,{channels:Ji})}getAttenuationDistance(){return this.get("attenuationDistance")}setAttenuationDistance(e){return this.set("attenuationDistance",e)}getAttenuationColor(){return this.get("attenuationColor")}setAttenuationColor(e){return this.set("attenuationColor",e)}getAttenuationColorHex(){return Ee.factorToHex(this.getAttenuationColor())}setAttenuationColorHex(e){const t=this.getAttenuationColor().slice();return this.set("attenuationColor",Ee.hexToFactor(e,t))}}Or.EXTENSION_NAME=ln;const Pe=ln;class Fr extends Z{constructor(...e){super(...e),this.extensionName=Pe}createVolume(){return new Or(this.document.getGraph())}read(e){const t=e.jsonDoc,n=t.json.textures||[];return(t.json.materials||[]).forEach((r,s)=>{if(r.extensions&&r.extensions[Pe]){const o=this.createVolume();e.materials[s].setExtension(Pe,o);const a=r.extensions[Pe];if(a.thicknessFactor!==void 0&&o.setThicknessFactor(a.thicknessFactor),a.attenuationDistance!==void 0&&o.setAttenuationDistance(a.attenuationDistance),a.attenuationColor!==void 0&&o.setAttenuationColor(a.attenuationColor),a.thicknessTexture!==void 0){const f=a.thicknessTexture;o.setThicknessTexture(e.textures[n[f.index].source]),e.setTextureInfo(o.getThicknessTextureInfo(),f)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const r=n.getExtension(Pe);if(r){const s=e.materialIndexMap.get(n),o=t.json.materials[s];o.extensions=o.extensions||{};const a=o.extensions[Pe]={};if(r.getThicknessFactor()>0&&(a.thicknessFactor=r.getThicknessFactor()),Number.isFinite(r.getAttenuationDistance())&&(a.attenuationDistance=r.getAttenuationDistance()),ut.eq(r.getAttenuationColor(),[1,1,1])||(a.attenuationColor=r.getAttenuationColor()),r.getThicknessTexture()){const f=r.getThicknessTexture(),d=r.getThicknessTextureInfo();a.thicknessTexture=e.createTextureInfoDef(f,d)}}}),this}}Fr.EXTENSION_NAME=Pe;const Br="KHR_mesh_quantization";class Lr extends Z{constructor(...e){super(...e),this.extensionName=Br}read(e){return this}write(e){return this}}Lr.EXTENSION_NAME=Br;const st="KHR_texture_basisu";class es{match(e){return e[0]===171&&e[1]===75&&e[2]===84&&e[3]===88&&e[4]===32&&e[5]===50&&e[6]===48&&e[7]===187&&e[8]===13&&e[9]===10&&e[10]===26&&e[11]===10}getSize(e){const t=Rt(e);return[t.pixelWidth,t.pixelHeight]}getChannels(e){const t=Rt(e).dataFormatDescriptor[0];if(t.colorModel===_i)return t.samples.length===2&&(15&t.samples[1].channelType)==15?4:3;if(t.colorModel===mi)return(15&t.samples[0].channelType)==3?4:3;throw new Error(`Unexpected KTX2 colorModel, "${t.colorModel}".`)}getVRAMByteLength(e){const t=Rt(e),n=this.getChannels(e)>3;let r=0;for(let s=0;s{t.extensions&&t.extensions[st]&&(t.source=t.extensions[st].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(n=>{if(n.getMimeType()==="image/ktx2"){const r=e.imageIndexMap.get(n);t.json.textures.forEach(s=>{s.source===r&&(s.extensions=s.extensions||{},s.extensions[st]={source:s.source},delete s.source)})}}),this}}jr.EXTENSION_NAME=st;class zr extends ae{init(){this.extensionName=fn,this.propertyType="Transform",this.parentTypes=[j.TEXTURE_INFO]}getDefaults(){return Object.assign(super.getDefaults(),{offset:[0,0],rotation:0,scale:[1,1],texCoord:null})}getOffset(){return this.get("offset")}setOffset(e){return this.set("offset",e)}getRotation(){return this.get("rotation")}setRotation(e){return this.set("rotation",e)}getScale(){return this.get("scale")}setScale(e){return this.set("scale",e)}getTexCoord(){return this.get("texCoord")}setTexCoord(e){return this.set("texCoord",e)}}zr.EXTENSION_NAME=fn;const Ge=fn;class Pr extends Z{constructor(...e){super(...e),this.extensionName=Ge}createTransform(){return new zr(this.document.getGraph())}read(e){for(const[t,n]of Array.from(e.textureInfos.entries())){if(!n.extensions||!n.extensions[Ge])continue;const r=this.createTransform(),s=n.extensions[Ge];s.offset!==void 0&&r.setOffset(s.offset),s.rotation!==void 0&&r.setRotation(s.rotation),s.scale!==void 0&&r.setScale(s.scale),s.texCoord!==void 0&&r.setTexCoord(s.texCoord),t.setExtension(Ge,r)}return this}write(e){const t=Array.from(e.textureInfoDefMap.entries());for(const[n,r]of t){const s=n.getExtension(Ge);if(!s)continue;r.extensions=r.extensions||{};const o={},a=ut.eq;a(s.getOffset(),[0,0])||(o.offset=s.getOffset()),s.getRotation()!==0&&(o.rotation=s.getRotation()),a(s.getScale(),[1,1])||(o.scale=s.getScale()),s.getTexCoord()!=null&&(o.texCoord=s.getTexCoord()),r.extensions[Ge]=o}return this}}Pr.EXTENSION_NAME=Ge;const ts=[j.ROOT,j.SCENE,j.NODE,j.MESH,j.MATERIAL,j.TEXTURE,j.ANIMATION];class Gr extends ae{init(){this.extensionName=mt,this.propertyType="Packet",this.parentTypes=ts}getDefaults(){return Object.assign(super.getDefaults(),{context:{},properties:{}})}getContext(){return this.get("context")}setContext(e){return this.set("context",Re({},e))}listProperties(){return Object.keys(this.get("properties"))}getProperty(e){const t=this.get("properties");return e in t?t[e]:null}setProperty(e,t){this._assertContext(e);const n=Re({},this.get("properties"));return t?n[e]=t:delete n[e],this.set("properties",n)}toJSONLD(){return Re({"@context":Nt(this.get("context"))},Nt(this.get("properties")))}fromJSONLD(e){const t=(e=Nt(e))["@context"];return t&&this.set("context",t),delete e["@context"],this.set("properties",e)}_assertContext(e){if(!(e.split(":")[0]in this.get("context")))throw new Error(`${mt}: Missing context for term, "${e}".`)}}function Nt(i){return JSON.parse(JSON.stringify(i))}Gr.EXTENSION_NAME=mt;const Ie=mt;class $r extends Z{constructor(...e){super(...e),this.extensionName=Ie}createPacket(){return new Gr(this.document.getGraph())}listPackets(){return Array.from(this.properties)}read(e){var t;const n=(t=e.jsonDoc.json.extensions)==null?void 0:t[Ie];if(!n||!n.packets)return this;const r=e.jsonDoc.json,s=this.document.getRoot(),o=n.packets.map(d=>this.createPacket().fromJSONLD(d)),a=[[r.asset],r.scenes,r.nodes,r.meshes,r.materials,r.images,r.animations],f=[[s],s.listScenes(),s.listNodes(),s.listMeshes(),s.listMaterials(),s.listTextures(),s.listAnimations()];for(let d=0;d0&&(t.extensions=t.extensions||{},t.extensions[Ie]={packets:n}),this}}$r.EXTENSION_NAME=Ie;const Vr=[Bt,fr,hr,xr,_r,Tr,wr,Er,Ar,vr,Sr,Mr,Ur,Fr,Lr,jr,Pr,$r];[...Vr];var Fn=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];function q(){var i=this;function e(t,n){var r=0;do r|=1&t,t>>>=1,r<<=1;while(--n>0);return r>>>1}i.build_tree=function(t){var n,r,s,o=i.dyn_tree,a=i.stat_desc.static_tree,f=i.stat_desc.elems,d=-1;for(t.heap_len=0,t.heap_max=573,n=0;n=1;n--)t.pqdownheap(o,n);s=f;do n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],t.pqdownheap(o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*s]=o[2*n]+o[2*r],t.depth[s]=Math.max(t.depth[n],t.depth[r])+1,o[2*n+1]=o[2*r+1]=s,t.heap[1]=s++,t.pqdownheap(o,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(p){var m,w,b,l,_,c,u=i.dyn_tree,x=i.stat_desc.static_tree,g=i.stat_desc.extra_bits,h=i.stat_desc.extra_base,E=i.stat_desc.max_length,y=0;for(l=0;l<=15;l++)p.bl_count[l]=0;for(u[2*p.heap[p.heap_max]+1]=0,m=p.heap_max+1;m<573;m++)(l=u[2*u[2*(w=p.heap[m])+1]+1]+1)>E&&(l=E,y++),u[2*w+1]=l,w>i.max_code||(p.bl_count[l]++,_=0,w>=h&&(_=g[w-h]),p.opt_len+=(c=u[2*w])*(l+_),x&&(p.static_len+=c*(x[2*w+1]+_)));if(y!==0){do{for(l=E-1;p.bl_count[l]===0;)l--;p.bl_count[l]--,p.bl_count[l+1]+=2,p.bl_count[E]--,y-=2}while(y>0);for(l=E;l!==0;l--)for(w=p.bl_count[l];w!==0;)(b=p.heap[--m])>i.max_code||(u[2*b+1]!=l&&(p.opt_len+=(l-u[2*b+1])*u[2*b],u[2*b+1]=l),w--)}}(t),function(p,m,w){var b,l,_,c=[],u=0;for(b=1;b<=15;b++)c[b]=u=u+w[b-1]<<1;for(l=0;l<=m;l++)(_=p[2*l+1])!==0&&(p[2*l]=e(c[_]++,_))}(o,i.max_code,t.bl_count)}}function ce(i,e,t,n,r){var s=this;s.static_tree=i,s.extra_bits=e,s.extra_base=t,s.elems=n,s.max_length=r}function ye(i,e,t,n,r){var s=this;s.good_length=i,s.max_lazy=e,s.nice_length=t,s.max_chain=n,s.func=r}q._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28],q.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],q.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],q.d_code=function(i){return i<256?Fn[i]:Fn[256+(i>>>7)]},q.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],q.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],q.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],q.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ce.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],ce.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],ce.static_l_desc=new ce(ce.static_ltree,q.extra_lbits,257,286,15),ce.static_d_desc=new ce(ce.static_dtree,q.extra_dbits,0,30,15),ce.static_bl_desc=new ce(null,q.extra_blbits,0,19,7);var me=[new ye(0,0,0,0,0),new ye(4,4,8,4,1),new ye(4,5,16,8,1),new ye(4,6,32,32,1),new ye(4,4,16,16,2),new ye(8,16,32,32,2),new ye(8,16,128,128,2),new ye(8,32,128,256,2),new ye(32,128,258,1024,2),new ye(32,258,258,4096,2)],lt=["need dictionary","stream end","","","stream error","data error","","buffer error","",""];function Bn(i,e,t,n){var r=i[2*e],s=i[2*t];return r>>8&255)}function ue(D,N){var k,M=N;se>16-M?(Je(H|=(k=D)<>>16-se,se+=M-16):(H|=D<=8&&(Ve(255&H),H>>>=8,se-=8)}function et(D,N){var k,M,S;if(P.pending_buf[F+2*ne]=D>>>8&255,P.pending_buf[F+2*ne+1]=255&D,P.pending_buf[W+ne]=255&N,ne++,D===0?B[2*N]++:(ie++,D--,B[2*(q._length_code[N]+256+1)]++,z[2*q.d_code(D)]++),(8191&ne)==0&&R>2){for(k=8*ne,M=h-c,S=0;S<30;S++)k+=z[2*S]*(5+q.extra_dbits[S]);if(k>>>=3,ie8?Je(H):se>0&&Ve(255&H),H=0,se=0}function yn(D,N,k){ue(0+(k?1:0),3),function(M,S,L){Tn(),$=8,Je(S),Je(~S),P.pending_buf.set(a.subarray(M,M+S),P.pending),P.pending+=S}(D,N)}function Ae(D){(function(N,k,M){var S,L,G=0;R>0?(Ye.build_tree(P),Qe.build_tree(P),G=function(){var V;for(xn(B,Ye.max_code),xn(z,Qe.max_code),It.build_tree(P),V=18;V>=3&&U[2*q.bl_order[V]+1]===0;V--);return P.opt_len+=3*(V+1)+5+5+4,V}(),(L=P.static_len+3+7>>>3)<=(S=P.opt_len+3+7>>>3)&&(S=L)):S=L=k+5,k+4<=S&&N!=-1?yn(N,k,M):L==S?(ue(2+(M?1:0),3),mn(ce.static_ltree,ce.static_dtree)):(ue(4+(M?1:0),3),function(V,X,J){var ee;for(ue(V-257,5),ue(X-1,5),ue(J-4,4),ee=0;ee=0?c:-1,h-c,D),c=h,i.flush_pending()}function vt(){var D,N,k,M;do{if((M=f-y-h)==0&&h===0&&y===0)M=r;else if(M==-1)M--;else if(h>=r+r-262){a.set(a.subarray(r,r+r),0),E-=r,h-=r,c-=r,k=D=w;do N=65535&p[--k],p[k]=N>=r?N-r:0;while(--D!=0);k=D=r;do N=65535&d[--k],d[k]=N>=r?N-r:0;while(--D!=0);M+=r}if(i.avail_in===0)return;D=i.read_buf(a,h+y,M),(y+=D)>=3&&(m=((m=255&a[h])<<_^255&a[h+1])&l)}while(y<262&&i.avail_in!==0)}function wn(D){var N,k,M=A,S=h,L=T,G=h>r-262?h-(r-262):0,V=C,X=o,J=h+258,ee=a[S+L-1],Ne=a[S+L];T>=I&&(M>>=2),V>y&&(V=y);do if(a[(N=D)+L]==Ne&&a[N+L-1]==ee&&a[N]==a[S]&&a[++N]==a[S+1]){S+=2,N++;do;while(a[++S]==a[++N]&&a[++S]==a[++N]&&a[++S]==a[++N]&&a[++S]==a[++N]&&a[++S]==a[++N]&&a[++S]==a[++N]&&a[++S]==a[++N]&&a[++S]==a[++N]&&SL){if(E=D,L=k,k>=V)break;ee=a[S+L-1],Ne=a[S+L]}}while((D=65535&d[D&X])>G&&--M!=0);return L<=y?L:y}P.depth=[],P.bl_count=[],P.heap=[],B=[],z=[],U=[],P.pqdownheap=function(D,N){for(var k=P.heap,M=k[N],S=N<<1;S<=P.heap_len&&(S9||M!=8||k<9||k>15||N<0||N>9||L<0||L>2?-2:(D.dstate=P,o=(r=1<<(s=k))-1,l=(w=1<<(b=S+7))-1,_=Math.floor((b+3-1)/3),a=new Uint8Array(2*r),d=[],p=[],de=1<9||k<0||k>2?-2:(me[R].func!=me[N].func&&D.total_in!==0&&(M=D.deflate(1)),R!=N&&(O=me[R=N].max_lazy,I=me[R].good_length,C=me[R].nice_length,A=me[R].max_chain),v=k,M)},P.deflateSetDictionary=function(D,N,k){var M,S=k,L=0;if(!N||e!=42)return-2;if(S<3)return 0;for(S>r-262&&(L=k-(S=r-262)),a.set(N.subarray(L,L+S),0),h=S,c=S,m=((m=255&a[0])<<_^255&a[1])&l,M=0;M<=S-3;M++)d[M&o]=p[m=(m<<_^255&a[M+2])&l],p[m]=M;return 0},P.deflate=function(D,N){var k,M,S,L,G,V;if(N>4||N<0)return-2;if(!D.next_out||!D.next_in&&D.avail_in!==0||e==666&&N!=4)return D.msg=lt[4],-2;if(D.avail_out===0)return D.msg=lt[7],-5;if(i=D,L=n,n=N,e==42&&(M=8+(s-8<<4)<<8,(S=(R-1&255)>>1)>3&&(S=3),M|=S<<6,h!==0&&(M|=32),e=113,Ve((V=M+=31-M%31)>>8&255),Ve(255&V)),P.pending!==0){if(i.flush_pending(),i.avail_out===0)return n=-1,0}else if(i.avail_in===0&&N<=L&&N!=4)return i.msg=lt[7],-5;if(e==666&&i.avail_in!==0)return D.msg=lt[7],-5;if(i.avail_in!==0||y!==0||N!=0&&e!=666){switch(G=-1,me[R].func){case 0:G=function(X){var J,ee=65535;for(ee>t-5&&(ee=t-5);;){if(y<=1){if(vt(),y===0&&X==0)return 0;if(y===0)break}if(h+=y,y=0,J=c+ee,(h===0||h>=J)&&(y=h-J,h=J,Ae(!1),i.avail_out===0)||h-c>=r-262&&(Ae(!1),i.avail_out===0))return 0}return Ae(X==4),i.avail_out===0?X==4?2:0:X==4?3:1}(N);break;case 1:G=function(X){for(var J,ee=0;;){if(y<262){if(vt(),y<262&&X==0)return 0;if(y===0)break}if(y>=3&&(ee=65535&p[m=(m<<_^255&a[h+2])&l],d[h&o]=p[m],p[m]=h),ee!==0&&(h-ee&65535)<=r-262&&v!=2&&(u=wn(ee)),u>=3)if(J=et(h-E,u-3),y-=u,u<=O&&y>=3){u--;do h++,ee=65535&p[m=(m<<_^255&a[h+2])&l],d[h&o]=p[m],p[m]=h;while(--u!=0);h++}else h+=u,u=0,m=((m=255&a[h])<<_^255&a[h+1])&l;else J=et(0,255&a[h]),y--,h++;if(J&&(Ae(!1),i.avail_out===0))return 0}return Ae(X==4),i.avail_out===0?X==4?2:0:X==4?3:1}(N);break;case 2:G=function(X){for(var J,ee,Ne=0;;){if(y<262){if(vt(),y<262&&X==0)return 0;if(y===0)break}if(y>=3&&(Ne=65535&p[m=(m<<_^255&a[h+2])&l],d[h&o]=p[m],p[m]=h),T=u,x=E,u=2,Ne!==0&&T4096)&&(u=2)),T>=3&&u<=T){ee=h+y-3,J=et(h-1-x,T-3),y-=T-1,T-=2;do++h<=ee&&(Ne=65535&p[m=(m<<_^255&a[h+2])&l],d[h&o]=p[m],p[m]=h);while(--T!=0);if(g=0,u=2,h++,J&&(Ae(!1),i.avail_out===0))return 0}else if(g!==0){if((J=et(0,255&a[h-1]))&&Ae(!1),h++,y--,i.avail_out===0)return 0}else g=1,h++,y--}return g!==0&&(J=et(0,255&a[h-1]),g=0),Ae(X==4),i.avail_out===0?X==4?2:0:X==4?3:1}(N)}if(G!=2&&G!=3||(e=666),G==0||G==2)return i.avail_out===0&&(n=-1),0;if(G==1){if(N==1)ue(2,3),_e(256,ce.static_ltree),_n(),1+$+10-se<9&&(ue(2,3),_e(256,ce.static_ltree),_n()),$=7;else if(yn(0,0,!1),N==3)for(k=0;k0&&e.next_in_index!=d&&(o(e.next_in_index),d=e.next_in_index)}while(e.avail_in>0||e.avail_out===0);return a=new Uint8Array(m),f.forEach(function(w){a.set(w,p),p+=w.length}),a}},this.flush=function(){var s,o,a=[],f=0,d=0;do{if(e.next_out_index=0,e.avail_out=t,(s=e.deflate(4))!=1&&s!=0)throw new Error("deflating: "+e.msg);t-e.avail_out>0&&a.push(new Uint8Array(n.subarray(0,e.next_out_index))),d+=e.next_out_index}while(e.avail_in>0||e.avail_out===0);return e.deflateEnd(),o=new Uint8Array(d),a.forEach(function(p){o.set(p,f),f+=p.length}),o}}Hr.prototype={deflateInit:function(i,e){var t=this;return t.dstate=new ns,e||(e=15),t.dstate.deflateInit(t,i,e)},deflate:function(i){var e=this;return e.dstate?e.dstate.deflate(e,i):-2},deflateEnd:function(){var i=this;if(!i.dstate)return-2;var e=i.dstate.deflateEnd();return i.dstate=null,e},deflateParams:function(i,e){var t=this;return t.dstate?t.dstate.deflateParams(t,i,e):-2},deflateSetDictionary:function(i,e){var t=this;return t.dstate?t.dstate.deflateSetDictionary(t,i,e):-2},read_buf:function(i,e,t){var n=this,r=n.avail_in;return r>t&&(r=t),r===0?0:(n.avail_in-=r,i.set(n.next_in.subarray(n.next_in_index,n.next_in_index+r),e),n.next_in_index+=r,n.total_in+=r,r)},flush_pending:function(){var i=this,e=i.dstate.pending;e>i.avail_out&&(e=i.avail_out),e!==0&&(i.next_out.set(i.dstate.pending_buf.subarray(i.dstate.pending_out,i.dstate.pending_out+e),i.next_out_index),i.next_out_index+=e,i.dstate.pending_out+=e,i.total_out+=e,i.avail_out-=e,i.dstate.pending-=e,i.dstate.pending===0&&(i.dstate.pending_out=0))}},self._zipjs_Deflater=Xr;var pe=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],rs=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],is=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],ss=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],os=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],as=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],cs=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function jt(){var i,e,t,n,r,s;function o(f,d,p,m,w,b,l,_,c,u,x){var g,h,E,y,T,A,O,R,v,I,C,B,z,U,W;I=0,T=p;do t[f[d+I]]++,I++,T--;while(T!==0);if(t[0]==p)return l[0]=-1,_[0]=0,0;for(R=_[0],A=1;A<=15&&t[A]===0;A++);for(O=A,RT&&(R=T),_[0]=R,U=1<B+R;){if(y++,W=(W=E-(B+=R))>R?R:W,(h=1<<(A=O-B))>g+1&&(h-=g+1,z=O,A1440)return-3;r[y]=C=u[0],u[0]+=W,y!==0?(s[y]=T,n[0]=A,n[1]=R,n[2]=C-r[y-1]-(A=T>>>B-R),c.set(n,3*(r[y-1]+A))):l[0]=C}for(n[1]=O-B,I>=p?n[0]=192:x[I]>>B;A>>=1)T^=A;for(T^=A,v=(1<257?(u==-3?c.msg="oversubscribed distance tree":u==-5?(c.msg="incomplete distance tree",u=-3):u!=-4&&(c.msg="empty distance tree with lengths",u=-3),u):0)}}function us(){var i,e,t,n,r=this,s=0,o=0,a=0,f=0,d=0,p=0,m=0,w=0,b=0,l=0;function _(c,u,x,g,h,E,y,T){var A,O,R,v,I,C,B,z,U,W,de,ne,F,ie,$,H;B=T.next_in_index,z=T.avail_in,I=y.bitb,C=y.bitk,W=(U=y.write)>=O[H+1],C-=O[H+1],(16&v)!=0){for(F=O[H+2]+(I&pe[v&=15]),I>>=v,C-=v;C<15;)z--,I|=(255&T.read_byte(B++))<>=O[H+1],C-=O[H+1],(16&v)!=0){for(v&=15;C>=v,C-=v,W-=F,U>=ie)U-($=U-ie)>0&&2>U-$?(y.window[U++]=y.window[$++],y.window[U++]=y.window[$++],F-=2):(y.window.set(y.window.subarray($,$+2),U),U+=2,$+=2,F-=2);else{$=U-ie;do $+=y.end;while($<0);if(F>(v=y.end-$)){if(F-=v,U-$>0&&v>U-$)do y.window[U++]=y.window[$++];while(--v!=0);else y.window.set(y.window.subarray($,$+v),U),U+=v,$+=v,v=0;$=0}}if(U-$>0&&F>U-$)do y.window[U++]=y.window[$++];while(--F!=0);else y.window.set(y.window.subarray($,$+F),U),U+=F,$+=F,F=0;break}if(64&v)return T.msg="invalid distance code",z+=F=C>>3<(F=T.avail_in-z)?C>>3:F,B-=F,C-=F<<3,y.bitb=I,y.bitk=C,T.avail_in=z,T.total_in+=B-T.next_in_index,T.next_in_index=B,y.write=U,-3;A+=O[H+2],v=O[H=3*(R+(A+=I&pe[v]))]}break}if(64&v)return 32&v?(z+=F=C>>3<(F=T.avail_in-z)?C>>3:F,B-=F,C-=F<<3,y.bitb=I,y.bitk=C,T.avail_in=z,T.total_in+=B-T.next_in_index,T.next_in_index=B,y.write=U,1):(T.msg="invalid literal/length code",z+=F=C>>3<(F=T.avail_in-z)?C>>3:F,B-=F,C-=F<<3,y.bitb=I,y.bitk=C,T.avail_in=z,T.total_in+=B-T.next_in_index,T.next_in_index=B,y.write=U,-3);if(A+=O[H+2],(v=O[H=3*(R+(A+=I&pe[v]))])===0){I>>=O[H+1],C-=O[H+1],y.window[U++]=O[H+2],W--;break}}else I>>=O[H+1],C-=O[H+1],y.window[U++]=O[H+2],W--}while(W>=258&&z>=10);return z+=F=C>>3<(F=T.avail_in-z)?C>>3:F,B-=F,C-=F<<3,y.bitb=I,y.bitk=C,T.avail_in=z,T.total_in+=B-T.next_in_index,T.next_in_index=B,y.write=U,0}r.init=function(c,u,x,g,h,E){i=0,m=c,w=u,t=x,b=g,n=h,l=E,e=null},r.proc=function(c,u,x){var g,h,E,y,T,A,O,R=0,v=0,I=0;for(I=u.next_in_index,y=u.avail_in,R=c.bitb,v=c.bitk,A=(T=c.write)=258&&y>=10&&(c.bitb=R,c.bitk=v,u.avail_in=y,u.total_in+=I-u.next_in_index,u.next_in_index=I,c.write=T,x=_(m,w,t,b,n,l,c,u),I=u.next_in_index,y=u.avail_in,R=c.bitb,v=c.bitk,A=(T=c.write)>>=e[1+(h=3*(o+(R&pe[g])))],v-=e[h+1],(E=e[h])===0){f=e[h+2],i=6;break}if(16&E){d=15&E,s=e[h+2],i=2;break}if(!(64&E)){a=E,o=h/3+e[h+2];break}if(32&E){i=7;break}return i=9,u.msg="invalid literal/length code",x=-3,c.bitb=R,c.bitk=v,u.avail_in=y,u.total_in+=I-u.next_in_index,u.next_in_index=I,c.write=T,c.inflate_flush(u,x);case 2:for(g=d;v>=g,v-=g,a=w,e=n,o=l,i=3;case 3:for(g=a;v>=e[1+(h=3*(o+(R&pe[g])))],v-=e[h+1],(16&(E=e[h]))!=0){d=15&E,p=e[h+2],i=4;break}if(!(64&E)){a=E,o=h/3+e[h+2];break}return i=9,u.msg="invalid distance code",x=-3,c.bitb=R,c.bitk=v,u.avail_in=y,u.total_in+=I-u.next_in_index,u.next_in_index=I,c.write=T,c.inflate_flush(u,x);case 4:for(g=d;v>=g,v-=g,i=5;case 5:for(O=T-p;O<0;)O+=c.end;for(;s!==0;){if(A===0&&(T==c.end&&c.read!==0&&(A=(T=0)7&&(v-=8,y++,I--),c.write=T,x=c.inflate_flush(u,x),A=(T=c.write)l.avail_out&&(c=l.avail_out),c!==0&&_==-5&&(_=0),l.avail_out-=c,l.total_out+=c,l.next_out.set(n.window.subarray(x,x+c),u),u+=c,(x+=c)==n.end&&(x=0,n.write==n.end&&(n.write=0),(c=n.write-x)>l.avail_out&&(c=l.avail_out),c!==0&&_==-5&&(_=0),l.avail_out-=c,l.total_out+=c,l.next_out.set(n.window.subarray(x,x+c),u),u+=c,x+=c),l.next_out_index=u,n.read=x,_},n.proc=function(l,_){var c,u,x,g,h,E,y,T;for(g=l.next_in_index,h=l.avail_in,u=n.bitb,x=n.bitk,y=(E=n.write)>>1){case 0:u>>>=3,u>>>=c=7&(x-=3),x-=c,r=1;break;case 1:var A=[],O=[],R=[[]],v=[[]];jt.inflate_trees_fixed(A,O,R,v),p.init(A[0],O[0],R[0],0,v[0],0),u>>>=3,x-=3,r=6;break;case 2:u>>>=3,x-=3,r=3;break;case 3:return u>>>=3,x-=3,r=9,l.msg="invalid block type",_=-3,n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_)}break;case 1:for(;x<32;){if(h===0)return n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);_=0,h--,u|=(255&l.read_byte(g++))<>>16&65535)!=(65535&u))return r=9,l.msg="invalid stored block lengths",_=-3,n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);s=65535&u,u=x=0,r=s!==0?2:m!==0?7:0;break;case 2:if(h===0||y===0&&(E==n.end&&n.read!==0&&(y=(E=0)h&&(c=h),c>y&&(c=y),n.window.set(l.read_buf(g,c),E),g+=c,h-=c,E+=c,y-=c,(s-=c)!=0)break;r=m!==0?7:0;break;case 3:for(;x<14;){if(h===0)return n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);_=0,h--,u|=(255&l.read_byte(g++))<29||(c>>5&31)>29)return r=9,l.msg="too many length or distance symbols",_=-3,n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);if(c=258+(31&c)+(c>>5&31),!t||t.length>>=14,x-=14,a=0,r=4;case 4:for(;a<4+(o>>>10);){for(;x<3;){if(h===0)return n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);_=0,h--,u|=(255&l.read_byte(g++))<>>=3,x-=3}for(;a<19;)t[Ln[a++]]=0;if(f[0]=7,(c=b.inflate_trees_bits(t,f,d,w,l))!=0)return(_=c)==-3&&(t=null,r=9),n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);a=0,r=5;case 5:for(;!(a>=258+(31&(c=o))+(c>>5&31));){var I,C;for(c=f[0];x>>=c,x-=c,t[a++]=C;else{for(T=C==18?7:C-14,I=C==18?11:3;x>>=c)&pe[T],u>>>=T,x-=T,(T=a)+I>258+(31&(c=o))+(c>>5&31)||C==16&&T<1)return t=null,r=9,l.msg="invalid bit length repeat",_=-3,n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);C=C==16?t[T-1]:0;do t[T++]=C;while(--I!=0);a=T}}d[0]=-1;var B=[],z=[],U=[],W=[];if(B[0]=9,z[0]=6,(c=b.inflate_trees_dynamic(257+(31&(c=o)),1+(c>>5&31),t,B,z,U,W,w,l))!=0)return c==-3&&(t=null,r=9),_=c,n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,n.inflate_flush(l,_);p.init(B[0],z[0],w,U[0],w,W[0]),r=6;case 6:if(n.bitb=u,n.bitk=x,l.avail_in=h,l.total_in+=g-l.next_in_index,l.next_in_index=g,n.write=E,(_=p.proc(n,l,_))!=1)return n.inflate_flush(l,_);if(_=0,p.free(l),g=l.next_in_index,h=l.avail_in,u=n.bitb,x=n.bitk,y=(E=n.write)15?(i.inflateEnd(t),-2):(i.wbits=n,t.istate.blocks=new ls(t,1<>4)>t.istate.wbits){t.istate.mode=13,t.msg="invalid window size",t.istate.marker=5;break}t.istate.mode=1;case 1:if(t.avail_in===0)return r;if(r=n,t.avail_in--,t.total_in++,s=255&t.read_byte(t.next_in_index++),((t.istate.method<<8)+s)%31!=0){t.istate.mode=13,t.msg="incorrect header check",t.istate.marker=5;break}if(!(32&s)){t.istate.mode=7;break}t.istate.mode=2;case 2:if(t.avail_in===0)return r;r=n,t.avail_in--,t.total_in++,t.istate.need=(255&t.read_byte(t.next_in_index++))<<24&4278190080,t.istate.mode=3;case 3:if(t.avail_in===0)return r;r=n,t.avail_in--,t.total_in++,t.istate.need+=(255&t.read_byte(t.next_in_index++))<<16&16711680,t.istate.mode=4;case 4:if(t.avail_in===0)return r;r=n,t.avail_in--,t.total_in++,t.istate.need+=(255&t.read_byte(t.next_in_index++))<<8&65280,t.istate.mode=5;case 5:return t.avail_in===0?r:(r=n,t.avail_in--,t.total_in++,t.istate.need+=255&t.read_byte(t.next_in_index++),t.istate.mode=6,2);case 6:return t.istate.mode=13,t.msg="need dictionary",t.istate.marker=0,-2;case 7:if((r=t.istate.blocks.proc(t,r))==-3){t.istate.mode=13,t.istate.marker=0;break}if(r==0&&(r=n),r!=1)return r;r=n,t.istate.blocks.reset(t,t.istate.was),t.istate.mode=12;case 12:return 1;case 13:return-3;default:return-2}},i.inflateSetDictionary=function(t,n,r){var s=0,o=r;return t&&t.istate&&t.istate.mode==6?(o>=1<0&&i.next_in_index!=f&&(r(i.next_in_index),f=i.next_in_index)}while(i.avail_in>0||i.avail_out===0);return o=new Uint8Array(p),a.forEach(function(m){o.set(m,d),d+=m.length}),o}},this.flush=function(){i.inflateEnd()}}Wr.prototype={inflateInit:function(i){var e=this;return e.istate=new ds,i||(i=15),e.istate.inflateInit(e,i)},inflate:function(i){var e=this;return e.istate?e.istate.inflate(e,i):-2},inflateEnd:function(){var i=this;if(!i.istate)return-2;var e=i.istate.inflateEnd(i);return i.istate=null,e},inflateSync:function(){var i=this;return i.istate?i.istate.inflateSync(i):-2},inflateSetDictionary:function(i,e){var t=this;return t.istate?t.istate.inflateSetDictionary(t,i,e):-2},read_byte:function(i){return this.next_in.subarray(i,i+1)[0]},read_buf:function(i,e){return this.next_in.subarray(i,i+e)}},self._zipjs_Inflater=Kr;var dn,nt="File format is not recognized.",jn="Error while reading zip file.";try{dn=new Blob([new DataView(new ArrayBuffer(0))]).size===0}catch{}function dt(){this.crc=-1}function zt(){}function Se(i,e){var t,n;return t=new ArrayBuffer(i),n=new Uint8Array(t),e&&n.set(e,0),{buffer:t,array:n,view:new DataView(t)}}function ht(){}function Pt(i){var e,t=this;t.size=0,t.init=function(n,r){var s=new Blob([i],{type:"text/plain"});(e=new yt(s)).init(function(){t.size=e.size,n()},r)},t.readUint8Array=function(n,r,s,o){e.readUint8Array(n,r,s,o)}}function Gt(i){var e,t=this;t.size=0,t.init=function(n){for(var r=i.length;i.charAt(r-1)=="=";)r--;e=i.indexOf(",")+1,t.size=Math.floor(.75*(r-e)),n()},t.readUint8Array=function(n,r,s){var o,a=Se(r),f=4*Math.floor(n/3),d=4*Math.ceil((n+r)/3),p=self.atob(i.substring(f+e,d+e)),m=n-3*Math.floor(f/4);for(o=m;oa.size)throw new RangeError("offset:"+f+", length:"+d+", size:"+a.size);return a.slice?a.slice(f,f+d):a.webkitSlice?a.webkitSlice(f,f+d):a.mozSlice?a.mozSlice(f,f+d):a.msSlice?a.msSlice(f,f+d):void 0}(i,t,n))}catch(a){s(a)}}}function ot(){}function $t(i){var e,t=this;t.init=function(n){e=new Blob([],{type:"text/plain"}),n()},t.writeUint8Array=function(n,r){e=new Blob([e,dn?n:n.buffer],{type:"text/plain"}),r()},t.getData=function(n,r){var s=new FileReader;s.onload=function(o){n(o.target.result)},s.onerror=r,s.readAsText(e,i)}}function Vt(i){var e=this,t="",n="";e.init=function(r){t+="data:"+(i||"")+";base64,",r()},e.writeUint8Array=function(r,s){var o,a=n.length,f=n;for(n="",o=0;o<3*Math.floor((a+r.length)/3)-a;o++)f+=String.fromCharCode(r[o]);for(;o2?t+=self.btoa(f):n=f,s()},e.getData=function(r){r(t+self.btoa(n))}}function Ht(i){var e,t=this;t.init=function(n){e=new Blob([],{type:i}),n()},t.writeUint8Array=function(n,r){e=new Blob([e,dn?n:n.buffer],{type:i}),r()},t.getData=function(n){n(e)}}function Xt(i,e,t,n,r,s,o,a,f,d){var p,m,w,b=0,l=e.sn;function _(){i.removeEventListener("message",c,!1),a(m,w)}function c(x){var g=x.data,h=g.data,E=g.error;if(E)return E.toString=function(){return"Error: "+this.message},void f(E);if(g.sn===l)switch(typeof g.codecTime=="number"&&(i.codecTime+=g.codecTime),typeof g.crcTime=="number"&&(i.crcTime+=g.crcTime),g.type){case"append":h?(m+=h.length,n.writeUint8Array(h,function(){u()},d)):u();break;case"flush":w=g.crc,h?(m+=h.length,n.writeUint8Array(h,function(){_()},d)):_();break;case"progress":o&&o(p+g.loaded,s);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",g)}}function u(){(p=524288*b)<=s?t.readUint8Array(r+p,Math.min(524288,s-p),function(x){o&&o(p,s);var g=p===0?e:{sn:l};g.type="append",g.data=x;try{i.postMessage(g,[x.buffer])}catch{i.postMessage(g)}b++},f):i.postMessage({sn:l,type:"flush"})}m=0,i.addEventListener("message",c,!1),u()}function Wt(i,e,t,n,r,s,o,a,f,d){var p,m=0,w=0,b=s==="input",l=s==="output",_=new dt;(function c(){var u;if((p=524288*m)127?r[t-128]:String.fromCharCode(t);return n}function Gn(i){return decodeURIComponent(escape(i))}function $n(i){var e,t="";for(e=0;e>16,a=65535&s;try{return new Date(1980+((65024&o)>>9),((480&o)>>5)-1,31&o,(63488&a)>>11,(2016&a)>>5,2*(31&a),0)}catch{}}(i.lastModDateRaw),(1&i.bitFlag)!=1?((n||(8&i.bitFlag)!=8)&&(i.crc32=e.view.getUint32(t+10,!0),i.compressedSize=e.view.getUint32(t+14,!0),i.uncompressedSize=e.view.getUint32(t+18,!0)),i.compressedSize!==4294967295&&i.uncompressedSize!==4294967295?(i.filenameLength=e.view.getUint16(t+22,!0),i.extraFieldLength=e.view.getUint16(t+24,!0)):r("File is using Zip64 (4gb+ file size).")):r("File contains encrypted entry.")}function Hn(i){return unescape(encodeURIComponent(i))}function Xn(i){var e,t=[];for(e=0;e>>8^t[255&(e^i[n])];this.crc=e},dt.prototype.get=function(){return~this.crc},dt.prototype.table=function(){var i,e,t,n=[];for(i=0;i<256;i++){for(t=i,e=0;e<8;e++)1&t?t=t>>>1^3988292384:t>>>=1;n[i]=t}return n}(),zt.prototype.append=function(i,e){return i},zt.prototype.flush=function(){},(Pt.prototype=new ht).constructor=Pt,(Gt.prototype=new ht).constructor=Gt,(yt.prototype=new ht).constructor=yt,ot.prototype.getData=function(i){i(this.data)},($t.prototype=new ot).constructor=$t,(Vt.prototype=new ot).constructor=Vt,(Ht.prototype=new ot).constructor=Ht;var hs={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function Wn(i,e,t){if(K.workerScripts===null||K.workerScriptsPath===null){var n,r,s;if(K.workerScripts){if(n=K.workerScripts[i],!Array.isArray(n))return void t(new Error("zip.workerScripts."+i+" is not an array!"));r=n,s=document.createElement("a"),n=r.map(function(f){return s.href=f,s.href})}else(n=hs[i].slice(0))[0]=(K.workerScriptsPath||"")+n[0];var o=new Worker(n[0]);o.codecTime=o.crcTime=0,o.postMessage({type:"importScripts",scripts:n.slice(1)}),o.addEventListener("message",function f(d){var p=d.data;if(p.error)return o.terminate(),void t(p.error);p.type==="importScripts"&&(o.removeEventListener("message",f),o.removeEventListener("error",a),e(o))}),o.addEventListener("error",a)}else t(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function a(f){o.terminate(),t(f)}}function Kn(i){console.error(i)}const K={Reader:ht,Writer:ot,BlobReader:yt,Data64URIReader:Gt,TextReader:Pt,BlobWriter:Ht,Data64URIWriter:Vt,TextWriter:$t,createReader:function(i,e,t){i.init(function(){(function(n,r,s){var o=0;function a(){}a.prototype.getData=function(d,p,m,w){var b=this;function l(u,x){w&&!function(g){var h=Se(4);return h.view.setUint32(0,g),b.crc32==h.view.getUint32(0)}(x)?s("CRC failed."):d.getData(function(g){p(g)})}function _(u){s(u||"Error while reading file data.")}function c(u){s(u||"Error while writing file data.")}n.readUint8Array(b.offset,30,function(u){var x,g=Se(u.length,u);g.view.getUint32(0)==1347093252?(Vn(b,g,4,!1,s),x=b.offset+30+b.filenameLength+b.extraFieldLength,d.init(function(){b.compressionMethod===0?zn(b._worker,o++,n,d,x,b.compressedSize,w,l,m,_,c):function(h,E,y,T,A,O,R,v,I,C,B){var z=R?"output":"none";K.useWebWorkers?Xt(h,{sn:E,codecClass:"_zipjs_Inflater",crcType:z},y,T,A,O,I,v,C,B):Wt(new Kr,y,T,A,O,z,I,v,C,B)}(b._worker,o++,n,d,x,b.compressedSize,w,l,m,_,c)},c)):s(nt)},_)};var f={getEntries:function(d){var p=this._worker;(function(m){function w(b,l){n.readUint8Array(n.size-b,b,function(_){for(var c=_.length-22;c>=0;c--)if(_[c]===80&&_[c+1]===75&&_[c+2]===5&&_[c+3]===6)return void m(new DataView(_.buffer,c,22));l()},function(){s(jn)})}n.size<22?s(nt):w(22,function(){w(Math.min(65558,n.size),function(){s(nt)})})})(function(m){var w,b;w=m.getUint32(16,!0),b=m.getUint16(8,!0),w<0||w>=n.size?s(nt):n.readUint8Array(w,n.size-w,function(l){var _,c,u,x,g=0,h=[],E=Se(l.length,l);for(_=0;_0){var s=r.map(function(o){return o.webkitGetAsEntry()}).filter(function(o){return o!==null});s.length>0&&(s[0].name.match(/\.zip$/)?this._loadZip(r[0].getAsFile()):this._loadNextEntry(new Map,s))}else n.length===1&&n[0].name.match(/\.zip$/)&&this._loadZip(n[0]),this._emit("drop",{files:new Map(n.map(function(o){return[o.name,o]}))});else this._fail("Required drag-and-drop APIs are not supported in this browser.")},e._onDragover=function(t){t.stopPropagation(),t.preventDefault(),t.dataTransfer.dropEffect="copy"},e._onSelect=function(t){this._emit("dropstart");var n=[].slice.call(this.inputEl.files);if(n.length===1&&this._isZip(n[0]))this._loadZip(n[0]);else{var r=new Map;n.forEach(function(s){return r.set(s.webkitRelativePath||s.name,s)}),this._emit("drop",{files:r})}},e._loadNextEntry=function(t,n){var r=this,s=n.pop();if(s)if(s.isFile)s.file(function(a){t.set(s.fullPath,a),r._loadNextEntry(t,n)},function(){return console.error("Could not load file: %s",s.fullPath)});else if(s.isDirectory){var o=s.createReader();o.readEntries(function a(f){f.length?(n=n.concat(f),o.readEntries(a)):r._loadNextEntry(t,n)})}else console.warn("Unknown asset type: "+s.fullPath),this._loadNextEntry(t,n);else this._emit("drop",{files:t})},e._loadZip=function(t){var n=this,r=[],s=new Map,o=new gs.FS,a=function f(d){d.directory?d.children.forEach(f):d.name[0]!=="."&&r.push(new Promise(function(p){d.getData(new K.BlobWriter,function(m){m.name=d.name,s.set(d.getFullname(),m),p()})}))};o.importBlob(t,function(){a(o.root),Promise.all(r).then(function(){n._emit("drop",{files:s,archive:t})})})},e._isZip=function(t){return t.type==="application/zip"||t.name.match(/\.zip$/)},e._fail=function(t){this._emit("droperror",{message:t})},i}();const hn=si(new oi);hn.registerExtensions(Vr);const Zr=await fi();Zr.setup();const{Manifold:Jn,Mesh:ms}=Zr,Yr=document.querySelector("model-viewer"),Ts=document.querySelector("#input"),Qr=document.querySelector("#download"),ve=document.querySelector("#viewFinal"),ys=new _s(Yr,Ts);let gt="",bt="",_t=!0,Et=!1;ys.on("drop",async({files:i})=>{for(const[e,t]of i)if(t.name.toLowerCase().match(/\.(gltf|glb)$/)){URL.revokeObjectURL(gt),gt=URL.createObjectURL(t),await ws(await bs(gt)),Jr();break}});function Jr(){_t?(ve.checked=!0,ve.disabled=!0):Et?(ve.checked=!1,ve.disabled=!1):(ve.checked=!1,ve.disabled=!0),ei()}ve.onclick=ei;function ei(){Yr.src=ve.checked?bt:gt,Qr.disabled=!ve.checked}Qr.onclick=()=>{const i=document.createElement("a");i.download="manifold.glb",i.href=bt,i.click()};async function ws(i){if(URL.revokeObjectURL(bt),!Et)return;const e=await hn.writeBinary(i),t=new Blob([e],{type:"application/octet-stream"});bt=URL.createObjectURL(t)}async function bs(i){_t=!1,Et=!1,Jr(),_t=!0;const e=await hn.read(i),t=e.getRoot().listNodes();for(const n of t){const r=n.getMesh();if(!r)continue;const s=ai(r);if(!s)continue;const o=new Map,a=s.runProperties.length,f=Jn.reserveIDs(a);s.mesh.runOriginalID=new Uint32Array(a);for(let p=0;p 0 ? kvdByteOffset + kvdBuffer.byteLength : 0;\n if (sgdByteOffset % 8) sgdByteOffset += 8 - sgdByteOffset % 8; // align(8)\n ///////////////////////////////////////////////////\n // Level Index.\n ///////////////////////////////////////////////////\n\n const levelData = [];\n const levelIndex = new DataView(new ArrayBuffer(container.levels.length * 3 * 8));\n let levelDataByteOffset = (sgdByteOffset || kvdByteOffset + kvdBuffer.byteLength) + sgdBuffer.byteLength;\n\n for (let i = 0; i < container.levels.length; i++) {\n const level = container.levels[i];\n levelData.push(level.levelData);\n levelIndex.setBigUint64(i * 24 + 0, BigInt(levelDataByteOffset), true);\n levelIndex.setBigUint64(i * 24 + 8, BigInt(level.levelData.byteLength), true);\n levelIndex.setBigUint64(i * 24 + 16, BigInt(level.uncompressedByteLength), true);\n levelDataByteOffset += level.levelData.byteLength;\n } ///////////////////////////////////////////////////\n // Header.\n ///////////////////////////////////////////////////\n\n\n const headerBuffer = new ArrayBuffer(HEADER_BYTE_LENGTH);\n const headerView = new DataView(headerBuffer);\n headerView.setUint32(0, container.vkFormat, true);\n headerView.setUint32(4, container.typeSize, true);\n headerView.setUint32(8, container.pixelWidth, true);\n headerView.setUint32(12, container.pixelHeight, true);\n headerView.setUint32(16, container.pixelDepth, true);\n headerView.setUint32(20, container.layerCount, true);\n headerView.setUint32(24, container.faceCount, true);\n headerView.setUint32(28, container.levels.length, true);\n headerView.setUint32(32, container.supercompressionScheme, true);\n headerView.setUint32(36, dfdByteOffset, true);\n headerView.setUint32(40, dfdBuffer.byteLength, true);\n headerView.setUint32(44, kvdByteOffset, true);\n headerView.setUint32(48, kvdBuffer.byteLength, true);\n headerView.setBigUint64(52, BigInt(sgdBuffer.byteLength > 0 ? sgdByteOffset : 0), true);\n headerView.setBigUint64(60, BigInt(sgdBuffer.byteLength), true); ///////////////////////////////////////////////////\n // Compose.\n ///////////////////////////////////////////////////\n\n return new Uint8Array(concat([new Uint8Array(KTX2_ID).buffer, headerBuffer, levelIndex.buffer, dfdBuffer, kvdBuffer, sgdByteOffset > 0 ? new ArrayBuffer(sgdByteOffset - (kvdByteOffset + kvdBuffer.byteLength)) // align(8)\n : new ArrayBuffer(0), sgdBuffer, ...levelData]));\n}\n\nexport { KHR_DF_CHANNEL_RGBSDA_ALPHA, KHR_DF_CHANNEL_RGBSDA_BLUE, KHR_DF_CHANNEL_RGBSDA_DEPTH, KHR_DF_CHANNEL_RGBSDA_GREEN, KHR_DF_CHANNEL_RGBSDA_RED, KHR_DF_CHANNEL_RGBSDA_STENCIL, KHR_DF_FLAG_ALPHA_PREMULTIPLIED, KHR_DF_FLAG_ALPHA_STRAIGHT, KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT, KHR_DF_MODEL_ASTC, KHR_DF_MODEL_ETC1, KHR_DF_MODEL_ETC1S, KHR_DF_MODEL_ETC2, KHR_DF_MODEL_RGBSDA, KHR_DF_MODEL_UASTC, KHR_DF_MODEL_UNSPECIFIED, KHR_DF_PRIMARIES_ACES, KHR_DF_PRIMARIES_ACESCC, KHR_DF_PRIMARIES_ADOBERGB, KHR_DF_PRIMARIES_BT2020, KHR_DF_PRIMARIES_BT601_EBU, KHR_DF_PRIMARIES_BT601_SMPTE, KHR_DF_PRIMARIES_BT709, KHR_DF_PRIMARIES_CIEXYZ, KHR_DF_PRIMARIES_DISPLAYP3, KHR_DF_PRIMARIES_NTSC1953, KHR_DF_PRIMARIES_PAL525, KHR_DF_PRIMARIES_UNSPECIFIED, KHR_DF_SAMPLE_DATATYPE_EXPONENT, KHR_DF_SAMPLE_DATATYPE_FLOAT, KHR_DF_SAMPLE_DATATYPE_LINEAR, KHR_DF_SAMPLE_DATATYPE_SIGNED, KHR_DF_TRANSFER_ACESCC, KHR_DF_TRANSFER_ACESCCT, KHR_DF_TRANSFER_ADOBERGB, KHR_DF_TRANSFER_BT1886, KHR_DF_TRANSFER_DCIP3, KHR_DF_TRANSFER_HLG_EOTF, KHR_DF_TRANSFER_HLG_OETF, KHR_DF_TRANSFER_ITU, KHR_DF_TRANSFER_LINEAR, KHR_DF_TRANSFER_NTSC, KHR_DF_TRANSFER_PAL625_EOTF, KHR_DF_TRANSFER_PAL_OETF, KHR_DF_TRANSFER_PQ_EOTF, KHR_DF_TRANSFER_PQ_OETF, KHR_DF_TRANSFER_SLOG, KHR_DF_TRANSFER_SLOG2, KHR_DF_TRANSFER_SRGB, KHR_DF_TRANSFER_ST240, KHR_DF_TRANSFER_UNSPECIFIED, KHR_DF_VENDORID_KHRONOS, KHR_DF_VERSION, KHR_SUPERCOMPRESSION_BASISLZ, KHR_SUPERCOMPRESSION_NONE, KHR_SUPERCOMPRESSION_ZLIB, KHR_SUPERCOMPRESSION_ZSTD, KTX2Container, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_A2B10G10R10_SNORM_PACK32, VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2R10G10B10_SINT_PACK32, VK_FORMAT_A2R10G10B10_SNORM_PACK32, VK_FORMAT_A2R10G10B10_UINT_PACK32, VK_FORMAT_A2R10G10B10_UNORM_PACK32, VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x12_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, VK_FORMAT_B4G4R4A4_UNORM_PACK16, VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SNORM, VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SNORM, VK_FORMAT_B8G8R8_SRGB, VK_FORMAT_B8G8R8_UINT, VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, VK_FORMAT_R10X6G10X6_UNORM_2PACK16, VK_FORMAT_R10X6_UNORM_PACK16, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, VK_FORMAT_R12X4G12X4_UNORM_2PACK16, VK_FORMAT_R12X4_UNORM_PACK16, VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16_SFLOAT, VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SNORM, VK_FORMAT_R16G16B16_UINT, VK_FORMAT_R16G16B16_UNORM, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SNORM, VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_UINT, VK_FORMAT_R16_UNORM, VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_UINT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SINT, VK_FORMAT_R32_UINT, VK_FORMAT_R4G4B4A4_UNORM_PACK16, VK_FORMAT_R4G4_UNORM_PACK8, VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_R5G6B5_UNORM_PACK16, VK_FORMAT_R64G64B64A64_SFLOAT, VK_FORMAT_R64G64B64A64_SINT, VK_FORMAT_R64G64B64A64_UINT, VK_FORMAT_R64G64B64_SFLOAT, VK_FORMAT_R64G64B64_SINT, VK_FORMAT_R64G64B64_UINT, VK_FORMAT_R64G64_SFLOAT, VK_FORMAT_R64G64_SINT, VK_FORMAT_R64G64_UINT, VK_FORMAT_R64_SFLOAT, VK_FORMAT_R64_SINT, VK_FORMAT_R64_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8_SINT, VK_FORMAT_R8G8B8_SNORM, VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_SRGB, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8_SINT, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_SRGB, VK_FORMAT_R8_UINT, VK_FORMAT_R8_UNORM, VK_FORMAT_S8_UINT, VK_FORMAT_UNDEFINED, VK_FORMAT_X8_D24_UNORM_PACK32, read, write };\n//# sourceMappingURL=ktx-parse.modern.js.map\n","import{ExtensionProperty as e,PropertyType as t,Extension as s,BufferUtils as n,WriterContext as r,Primitive as o,Root as i,AnimationSampler as a,AnimationChannel as c,Accessor as u,MathUtils as l,GLB_BUFFER as h,ImageUtils as f,getBounds as g,ColorUtils as p,TextureInfo as x,TextureChannel as d}from\"@gltf-transform/core\";import{read as T,KHR_DF_MODEL_ETC1S as m,KHR_DF_MODEL_UASTC as E}from\"ktx-parse\";const I=\"EXT_mesh_gpu_instancing\",N=\"EXT_meshopt_compression\",R=\"KHR_draco_mesh_compression\",y=\"KHR_lights_punctual\",A=\"KHR_materials_anisotropy\",S=\"KHR_materials_clearcoat\",C=\"KHR_materials_emissive_strength\",M=\"KHR_materials_ior\",O=\"KHR_materials_iridescence\",_=\"KHR_materials_pbrSpecularGlossiness\",w=\"KHR_materials_sheen\",D=\"KHR_materials_specular\",b=\"KHR_materials_transmission\",F=\"KHR_materials_unlit\",j=\"KHR_materials_volume\",v=\"KHR_materials_variants\",k=\"KHR_texture_transform\",B=\"KHR_xmp_json_ld\",G=\"INSTANCE_ATTRIBUTE\";class L extends e{init(){this.extensionName=I,this.propertyType=\"InstancedMesh\",this.parentTypes=[t.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{attributes:{}})}getAttribute(e){return this.getRefMap(\"attributes\",e)}setAttribute(e,t){return this.setRefMap(\"attributes\",e,t,{usage:G})}listAttributes(){return this.listRefMapValues(\"attributes\")}listSemantics(){return this.listRefMapKeys(\"attributes\")}}L.EXTENSION_NAME=I;const U=I;class V extends s{constructor(...e){super(...e),this.extensionName=U,this.provideTypes=[t.NODE],this.prewriteTypes=[t.ACCESSOR]}createInstancedMesh(){return new L(this.document.getGraph())}read(e){return(e.jsonDoc.json.nodes||[]).forEach((t,s)=>{if(!t.extensions||!t.extensions[U])return;const n=t.extensions[U],r=this.createInstancedMesh();for(const t in n.attributes)r.setAttribute(t,e.accessors[n.attributes[t]]);e.nodes[s].setExtension(U,r)}),this}prewrite(e){e.accessorUsageGroupedByParent.add(G);for(const t of this.properties)for(const s of t.listAttributes())e.addAccessorToUsageGroup(s,G);return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listNodes().forEach(s=>{const n=s.getExtension(U);if(n){const r=e.nodeIndexMap.get(s),o=t.json.nodes[r],i={attributes:{}};n.listSemantics().forEach(t=>{const s=n.getAttribute(t);i.attributes[t]=e.accessorIndexMap.get(s)}),o.extensions=o.extensions||{},o.extensions[U]=i}}),this}}function P(){return P=Object.assign?Object.assign.bind():function(e){for(var t=1;t8?8:4,a.componentType=i>8?q:$,a.normalized=!0,s=3===e.getElementSize()?function(e){const t=new Float32Array(4*e.length/3);for(let s=0,n=e.length/3;sQ(t,e.getComponentType())),a.max=a.max.map(t=>Q(t,e.getComponentType()))),a.normalized&&(a.min=a.min.map(e=>Y(e,a.componentType)),a.max=a.max.map(e=>Y(e,a.componentType)))}else a.byteStride%4&&(a.array=function(e,t){const s=n.padNumber(e.BYTES_PER_ELEMENT*t)/e.BYTES_PER_ELEMENT,r=new e.constructor(e.length/t*s);for(let n=0;n*te instanceof o&&e.getMode()===o.Mode.TRIANGLES)?H.TRIANGLES:H.INDICES:H.ATTRIBUTES}function Z(e,s){const n=s.getGraph().listParentEdges(e).filter(e=>!(e.getParent()instanceof i));for(const s of n){const n=s.getName(),r=s.getAttributes().key||\"\",o=s.getParent().propertyType===t.PRIMITIVE_TARGET;if(\"indices\"===n)return{filter:z.NONE};if(\"attributes\"===n){if(\"POSITION\"===r)return{filter:z.NONE};if(\"TEXCOORD_0\"===r)return{filter:z.NONE};if(r.startsWith(\"JOINTS_\"))return{filter:z.NONE};if(r.startsWith(\"WEIGHTS_\"))return{filter:z.NONE};if(\"NORMAL\"===r||\"TANGENT\"===r)return o?{filter:z.NONE}:{filter:z.OCTAHEDRAL,bits:8}}if(\"output\"===n){const t=ee(e);return\"rotation\"===t?{filter:z.QUATERNION,bits:16}:\"translation\"===t||\"scale\"===t?{filter:z.EXPONENTIAL,bits:12}:{filter:z.NONE}}if(\"input\"===n)return{filter:z.NONE};if(\"inverseBindMatrices\"===n)return{filter:z.NONE}}return{filter:z.NONE}}function ee(e){for(const t of e.listParents())if(t instanceof a)for(const e of t.listParents())if(e instanceof c)return e.getTargetPath();return null}const te=N,se={method:X.QUANTIZE};class ne extends s{constructor(...e){super(...e),this.extensionName=te,this.prereadTypes=[t.BUFFER,t.PRIMITIVE],this.prewriteTypes=[t.BUFFER,t.ACCESSOR],this.readDependencies=[\"meshopt.decoder\"],this.writeDependencies=[\"meshopt.encoder\"],this._decoder=null,this._decoderFallbackBufferMap=new Map,this._encoder=null,this._encoderOptions=se,this._encoderFallbackBuffer=null,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={}}install(e,t){return\"meshopt.decoder\"===e&&(this._decoder=t),\"meshopt.encoder\"===e&&(this._encoder=t),this}setEncoderOptions(e){return this._encoderOptions=P({},se,e),this}preread(e,s){if(!this._decoder){if(!this.isRequired())return this;throw new Error(`[${te}] Please install extension dependency, \"meshopt.decoder\".`)}if(!this._decoder.supported){if(!this.isRequired())return this;throw new Error(`[${te}]: Missing WASM support.`)}return s===t.BUFFER?this._prereadBuffers(e):s===t.PRIMITIVE&&this._prereadPrimitives(e),this}_prereadBuffers(e){const t=e.jsonDoc;(t.json.bufferViews||[]).forEach((s,r)=>{if(!s.extensions||!s.extensions[te])return;const o=s.extensions[te],i=o.byteOffset||0,a=o.byteLength||0,c=o.count,u=o.byteStride,l=new Uint8Array(c*u),f=t.json.buffers[o.buffer],g=n.toView(f.uri?t.resources[f.uri]:t.resources[h],i,a);this._decoder.decodeGltfBuffer(l,c,u,g,o.mode,o.filter),e.bufferViews[r]=l})}_prereadPrimitives(e){const t=e.jsonDoc;(t.json.bufferViews||[]).forEach(s=>{var n;s.extensions&&s.extensions[te]&&(n=t.json.buffers[s.buffer]).extensions&&n.extensions[N]&&n.extensions[N].fallback&&this._decoderFallbackBufferMap.set(e.buffers[s.buffer],e.buffers[s.extensions[te].buffer])})}read(e){if(!this.isRequired())return this;for(const[e,t]of this._decoderFallbackBufferMap){for(const s of e.listParents())s instanceof u&&s.swap(e,t);e.dispose()}return this}prewrite(e,s){return s===t.ACCESSOR?this._prewriteAccessors(e):s===t.BUFFER&&this._prewriteBuffers(e),this}_prewriteAccessors(e){const t=e.jsonDoc.json,s=this._encoder,n=this._encoderOptions,o=this.document.createBuffer(),i=this.document.getRoot().listBuffers().indexOf(o);this._encoderFallbackBuffer=o,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={};for(const o of this.document.getRoot().listAccessors()){if(\"weights\"===ee(o))continue;if(o.getSparse())continue;const a=e.getAccessorUsage(o),c=J(o,a),u=n.method===X.FILTER?Z(o,this.document):{filter:z.NONE},l=W(o,s,c,u),{array:h,byteStride:f}=l,g=o.getBuffer();if(!g)throw new Error(`${te}: Missing buffer for accessor.`);const p=this.document.getRoot().listBuffers().indexOf(g),x=[a,c,u.filter,f,p].join(\":\");let d=this._encoderBufferViews[x],T=this._encoderBufferViewData[x],m=this._encoderBufferViewAccessors[x];d&&T||(m=this._encoderBufferViewAccessors[x]=[],T=this._encoderBufferViewData[x]=[],d=this._encoderBufferViews[x]={buffer:i,target:r.USAGE_TO_TARGET[a],byteOffset:0,byteLength:0,byteStride:a===r.BufferViewUsage.ARRAY_BUFFER?f:void 0,extensions:{[te]:{buffer:p,byteOffset:0,byteLength:0,mode:c,filter:u.filter!==z.NONE?u.filter:void 0,byteStride:f,count:0}}});const E=e.createAccessorDef(o);E.componentType=l.componentType,E.normalized=l.normalized,E.byteOffset=d.byteLength,E.min&&l.min&&(E.min=l.min),E.max&&l.max&&(E.max=l.max),e.accessorIndexMap.set(o,t.accessors.length),t.accessors.push(E),m.push(E),T.push(new Uint8Array(h.buffer,h.byteOffset,h.byteLength)),d.byteLength+=h.byteLength,d.extensions.EXT_meshopt_compression.count+=o.getCount()}}_prewriteBuffers(e){const t=this._encoder;for(const s in this._encoderBufferViews){const r=this._encoderBufferViews[s],o=this._encoderBufferViewData[s],i=this.document.getRoot().listBuffers()[r.extensions[te].buffer],a=e.otherBufferViews.get(i)||[],{count:c,byteStride:u,mode:l}=r.extensions[te],h=n.concat(o),f=t.encodeGltfBuffer(h,c,u,l),g=n.pad(f);r.extensions[te].byteLength=f.byteLength,o.length=0,o.push(g),a.push(g),e.otherBufferViews.set(i,a)}}write(e){let t=0;for(const s in this._encoderBufferViews){const r=this._encoderBufferViews[s],o=e.otherBufferViewsIndexMap.get(this._encoderBufferViewData[s][0]),i=this._encoderBufferViewAccessors[s];for(const e of i)e.bufferView=o;const a=e.jsonDoc.json.bufferViews[o],c=a.byteOffset||0;Object.assign(a,r),a.byteOffset=t,a.extensions[te].byteOffset=c,t+=n.padNumber(r.byteLength)}const s=this._encoderFallbackBuffer,r=e.bufferIndexMap.get(s),o=e.jsonDoc.json.buffers[r];return o.byteLength=t,o.extensions={[te]:{fallback:!0}},s.dispose(),this}}ne.EXTENSION_NAME=te,ne.EncoderMethod=X;const re=\"EXT_texture_avif\";class oe{match(e){return e.length>=12&&\"ftypavif\"===n.decodeText(e.slice(4,12))}getSize(e){if(!this.match(e))return null;const t=new DataView(e.buffer,e.byteOffset,e.byteLength);let s=ae(t,0);if(!s)return null;let n=s.end;for(;s=ae(t,n);)if(\"meta\"===s.type)n=s.start+4;else if(\"iprp\"===s.type||\"ipco\"===s.type)n=s.start;else{if(\"ispe\"===s.type)return[t.getUint32(s.start+4),t.getUint32(s.start+8)];if(\"mdat\"===s.type)break;n=s.end}return null}getChannels(e){return 4}}class ie extends s{constructor(...e){super(...e),this.extensionName=re,this.prereadTypes=[t.TEXTURE]}static register(){f.registerFormat(\"image/avif\",new oe)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(e=>{e.extensions&&e.extensions[re]&&(e.source=e.extensions[re].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(s=>{if(\"image/avif\"===s.getMimeType()){const n=e.imageIndexMap.get(s);(t.json.textures||[]).forEach(e=>{e.source===n&&(e.extensions=e.extensions||{},e.extensions[re]={source:e.source},delete e.source)})}}),this}}function ae(e,t){if(e.byteLength<4+t)return null;const s=e.getUint32(t);return e.byteLength=12&&87===e[8]&&69===e[9]&&66===e[10]&&80===e[11]}getSize(e){const t=n.decodeText(e.slice(0,4)),s=n.decodeText(e.slice(8,12));if(\"RIFF\"!==t||\"WEBP\"!==s)return null;const r=new DataView(e.buffer,e.byteOffset);let o=12;for(;o>6)]}o+=8+t+t%2}return null}getChannels(e){return 4}}class le extends s{constructor(...e){super(...e),this.extensionName=ce,this.prereadTypes=[t.TEXTURE]}static register(){f.registerFormat(\"image/webp\",new ue)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(e=>{e.extensions&&e.extensions[ce]&&(e.source=e.extensions[ce].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(s=>{if(\"image/webp\"===s.getMimeType()){const n=e.imageIndexMap.get(s);(t.json.textures||[]).forEach(e=>{e.source===n&&(e.extensions=e.extensions||{},e.extensions[ce]={source:e.source},delete e.source)})}}),this}}le.EXTENSION_NAME=ce;const he=R;let fe,ge,pe,xe;function de(e,t){const s=new fe.DecoderBuffer;try{if(s.Init(t,t.length),e.GetEncodedGeometryType(s)!==fe.TRIANGULAR_MESH)throw new Error(`[${he}] Unknown geometry type.`);const n=new fe.Mesh;if(!e.DecodeBufferToMesh(s,n).ok()||0===n.ptr)throw new Error(`[${he}] Decoding failure.`);return n}finally{fe.destroy(s)}}function Te(e,t){const s=3*t.num_faces();let n,r;if(t.num_points()<=65534){const o=s*Uint16Array.BYTES_PER_ELEMENT;n=fe._malloc(o),e.GetTrianglesUInt16Array(t,o,n),r=new Uint16Array(fe.HEAPU16.buffer,n,s).slice()}else{const o=s*Uint32Array.BYTES_PER_ELEMENT;n=fe._malloc(o),e.GetTrianglesUInt32Array(t,o,n),r=new Uint32Array(fe.HEAPU32.buffer,n,s).slice()}return fe._free(n),r}function me(e,t,s,n){const r=pe[n.componentType],o=ge[n.componentType],i=s.num_components(),a=t.num_points()*i,c=a*o.BYTES_PER_ELEMENT,u=fe._malloc(c);e.GetAttributeDataArrayForAllPoints(t,s,r,c,u);const l=new o(fe.HEAPF32.buffer,u,a).slice();return fe._free(u),l}var Ee,Ie;!function(e){e[e.EDGEBREAKER=1]=\"EDGEBREAKER\",e[e.SEQUENTIAL=0]=\"SEQUENTIAL\"}(Ee||(Ee={})),function(e){e.POSITION=\"POSITION\",e.NORMAL=\"NORMAL\",e.COLOR=\"COLOR\",e.TEX_COORD=\"TEX_COORD\",e.GENERIC=\"GENERIC\"}(Ie||(Ie={}));const Ne={[Ie.POSITION]:14,[Ie.NORMAL]:10,[Ie.COLOR]:8,[Ie.TEX_COORD]:12,[Ie.GENERIC]:12},Re={decodeSpeed:5,encodeSpeed:5,method:Ee.EDGEBREAKER,quantizationBits:Ne,quantizationVolume:\"mesh\"};function ye(e,t=Re){const s=P({},Re,t);s.quantizationBits=P({},Ne,t.quantizationBits);const n=new xe.MeshBuilder,r=new xe.Mesh,o=new xe.ExpertEncoder(r),i={},a=new xe.DracoInt8Array,c=e.listTargets().length>0;let u=!1;for(const t of e.listSemantics()){const a=e.getAttribute(t);if(a.getSparse()){u=!0;continue}const c=Ae(t),l=Se(n,a.getComponentType(),r,xe[c],a.getCount(),a.getElementSize(),a.getArray());if(-1===l)throw new Error(`Error compressing \"${t}\" attribute.`);if(i[t]=l,\"mesh\"===s.quantizationVolume||\"POSITION\"!==t)o.SetAttributeQuantization(l,s.quantizationBits[c]);else{if(\"object\"!=typeof s.quantizationVolume)throw new Error(\"Invalid quantization volume state.\");{const{quantizationVolume:e}=s,t=Math.max(e.max[0]-e.min[0],e.max[1]-e.min[1],e.max[2]-e.min[2]);o.SetAttributeExplicitQuantization(l,s.quantizationBits[c],a.getElementSize(),e.min,t)}}}const l=e.getIndices();if(!l)throw new Ce(\"Primitive must have indices.\");n.AddFacesToMesh(r,l.getCount()/3,l.getArray()),o.SetSpeedOptions(s.encodeSpeed,s.decodeSpeed),o.SetTrackEncodedProperties(!0),o.SetEncodingMethod(s.method===Ee.SEQUENTIAL||c||u?xe.MESH_SEQUENTIAL_ENCODING:xe.MESH_EDGEBREAKER_ENCODING);const h=o.EncodeToDracoBuffer(!(c||u),a);if(h<=0)throw new Ce(\"Error applying Draco compression.\");const f=new Uint8Array(h);for(let e=0;ee.propertyType));if(2!==s.size||!s.has(t.PRIMITIVE)||!s.has(t.ROOT))throw new Error(`[${Me}] Compressed accessors must only be used as indices or vertex attributes.`)}for(const e of Array.from(n)){const t=l.get(e),s=e.getIndices();if(c.get(s)!==t||e.listAttributes().some(e=>c.get(e)!==t))throw new Error(`[${Me}] Draco primitives must share all, or no, accessors.`)}for(const e of Array.from(r)){const t=e.getIndices();if(c.has(t)||e.listAttributes().some(e=>c.has(e)))throw new Error(`[${Me}] Accessor cannot be shared by compressed and uncompressed primitives.`)}return l}(this.document),i=new Map;let a=\"mesh\";\"scene\"===this._encoderOptions.quantizationVolume&&(1!==this.document.getRoot().listScenes().length?n.warn(`[${Me}]: quantizationVolume=scene requires exactly 1 scene.`):a=g(this.document.getRoot().listScenes().pop()));for(const t of Array.from(r.keys())){const s=r.get(t);if(!s)throw new Error(\"Unexpected primitive.\");if(i.has(s)){i.set(s,i.get(s));continue}const o=t.getIndices(),c=e.jsonDoc.json.accessors;let u;try{u=ye(t,P({},this._encoderOptions,{quantizationVolume:a}))}catch(e){if(e instanceof Ce){n.warn(`[${Me}]: ${e.message} Skipping primitive compression.`);continue}throw e}i.set(s,u);const l=e.createAccessorDef(o);l.count=u.numIndices,e.accessorIndexMap.set(o,c.length),c.push(l);for(const s of t.listSemantics()){const n=t.getAttribute(s);if(void 0===u.attributeIDs[s])continue;const r=e.createAccessorDef(n);r.count=u.numVertices,e.accessorIndexMap.set(n,c.length),c.push(r)}const h=t.getAttribute(\"POSITION\").getBuffer()||this.document.getRoot().listBuffers()[0];e.otherBufferViews.has(h)||e.otherBufferViews.set(h,[]),e.otherBufferViews.get(h).push(u.data)}return n.debug(`[${Me}] Compressed ${r.size} primitives.`),e.extensionData[Me]={primitiveHashMap:r,primitiveEncodingMap:i},this}write(e){const t=e.extensionData[Me];for(const s of this.document.getRoot().listMeshes()){const n=e.jsonDoc.json.meshes[e.meshIndexMap.get(s)];for(let r=0;re!==Me),t.extensionsRequired=(t.extensionsRequired||[]).filter(e=>e!==Me)}return this}}function _e(e,t){const s=[],n=e.getIndices();s.push(t.get(n));for(const n of e.listAttributes())s.push(t.get(n));return s.sort().join(\"|\")}Oe.EXTENSION_NAME=Me,Oe.EncoderMethod=Ee;class we extends e{init(){this.extensionName=y,this.propertyType=\"Light\",this.parentTypes=[t.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{color:[1,1,1],intensity:1,type:we.Type.POINT,range:null,innerConeAngle:0,outerConeAngle:Math.PI/4})}getColor(){return this.get(\"color\")}setColor(e){return this.set(\"color\",e)}getColorHex(){return p.factorToHex(this.getColor())}setColorHex(e){const t=this.getColor().slice();return p.hexToFactor(e,t),this.setColor(t)}getIntensity(){return this.get(\"intensity\")}setIntensity(e){return this.set(\"intensity\",e)}getType(){return this.get(\"type\")}setType(e){return this.set(\"type\",e)}getRange(){return this.get(\"range\")}setRange(e){return this.set(\"range\",e)}getInnerConeAngle(){return this.get(\"innerConeAngle\")}setInnerConeAngle(e){return this.set(\"innerConeAngle\",e)}getOuterConeAngle(){return this.get(\"outerConeAngle\")}setOuterConeAngle(e){return this.set(\"outerConeAngle\",e)}}we.EXTENSION_NAME=y,we.Type={POINT:\"point\",SPOT:\"spot\",DIRECTIONAL:\"directional\"};const De=y;class be extends s{constructor(...e){super(...e),this.extensionName=De}createLight(e=\"\"){return new we(this.document.getGraph(),e)}read(e){const t=e.jsonDoc;if(!t.json.extensions||!t.json.extensions[De])return this;const s=(t.json.extensions[De].lights||[]).map(e=>{var t,s;const n=this.createLight().setName(e.name||\"\").setType(e.type);return void 0!==e.color&&n.setColor(e.color),void 0!==e.intensity&&n.setIntensity(e.intensity),void 0!==e.range&&n.setRange(e.range),void 0!==(null==(t=e.spot)?void 0:t.innerConeAngle)&&n.setInnerConeAngle(e.spot.innerConeAngle),void 0!==(null==(s=e.spot)?void 0:s.outerConeAngle)&&n.setOuterConeAngle(e.spot.outerConeAngle),n});return t.json.nodes.forEach((t,n)=>{t.extensions&&t.extensions[De]&&e.nodes[n].setExtension(De,s[t.extensions[De].light])}),this}write(e){const t=e.jsonDoc;if(0===this.properties.size)return this;const s=[],n=new Map;for(const e of this.properties){const t=e,r={type:t.getType()};l.eq(t.getColor(),[1,1,1])||(r.color=t.getColor()),1!==t.getIntensity()&&(r.intensity=t.getIntensity()),null!=t.getRange()&&(r.range=t.getRange()),t.getName()&&(r.name=t.getName()),t.getType()===we.Type.SPOT&&(r.spot={innerConeAngle:t.getInnerConeAngle(),outerConeAngle:t.getOuterConeAngle()}),s.push(r),n.set(t,s.length-1)}return this.document.getRoot().listNodes().forEach(s=>{const r=s.getExtension(De);if(r){const o=e.nodeIndexMap.get(s),i=t.json.nodes[o];i.extensions=i.extensions||{},i.extensions[De]={light:n.get(r)}}}),t.json.extensions=t.json.extensions||{},t.json.extensions[De]={lights:s},this}}be.EXTENSION_NAME=De;const{R:Fe,G:je,B:ve}=d;class ke extends e{init(){this.extensionName=A,this.propertyType=\"Anisotropy\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{anisotropyStrength:0,anisotropyRotation:0,anisotropyTexture:null,anisotropyTextureInfo:new x(this.graph,\"anisotropyTextureInfo\")})}getAnisotropyStrength(){return this.get(\"anisotropyStrength\")}setAnisotropyStrength(e){return this.set(\"anisotropyStrength\",e)}getAnisotropyRotation(){return this.get(\"anisotropyRotation\")}setAnisotropyRotation(e){return this.set(\"anisotropyRotation\",e)}getAnisotropyTexture(){return this.getRef(\"anisotropyTexture\")}getAnisotropyTextureInfo(){return this.getRef(\"anisotropyTexture\")?this.getRef(\"anisotropyTextureInfo\"):null}setAnisotropyTexture(e){return this.setRef(\"anisotropyTexture\",e,{channels:Fe|je|ve})}}ke.EXTENSION_NAME=A;const Be=A;class Ge extends s{constructor(...e){super(...e),this.extensionName=Be}createAnisotropy(){return new ke(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Be]){const r=this.createAnisotropy();e.materials[n].setExtension(Be,r);const o=t.extensions[Be];if(void 0!==o.anisotropyStrength&&r.setAnisotropyStrength(o.anisotropyStrength),void 0!==o.anisotropyRotation&&r.setAnisotropyRotation(o.anisotropyRotation),void 0!==o.anisotropyTexture){const t=o.anisotropyTexture;r.setAnisotropyTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getAnisotropyTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Be);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Be]={};if(n.getAnisotropyStrength()>0&&(i.anisotropyStrength=n.getAnisotropyStrength()),0!==n.getAnisotropyRotation()&&(i.anisotropyRotation=n.getAnisotropyRotation()),n.getAnisotropyTexture()){const t=n.getAnisotropyTexture(),s=n.getAnisotropyTextureInfo();i.anisotropyTexture=e.createTextureInfoDef(t,s)}}}),this}}Ge.EXTENSION_NAME=Be;const{R:Le,G:Ue,B:Ve}=d;class Pe extends e{init(){this.extensionName=S,this.propertyType=\"Clearcoat\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{clearcoatFactor:0,clearcoatTexture:null,clearcoatTextureInfo:new x(this.graph,\"clearcoatTextureInfo\"),clearcoatRoughnessFactor:0,clearcoatRoughnessTexture:null,clearcoatRoughnessTextureInfo:new x(this.graph,\"clearcoatRoughnessTextureInfo\"),clearcoatNormalScale:1,clearcoatNormalTexture:null,clearcoatNormalTextureInfo:new x(this.graph,\"clearcoatNormalTextureInfo\")})}getClearcoatFactor(){return this.get(\"clearcoatFactor\")}setClearcoatFactor(e){return this.set(\"clearcoatFactor\",e)}getClearcoatTexture(){return this.getRef(\"clearcoatTexture\")}getClearcoatTextureInfo(){return this.getRef(\"clearcoatTexture\")?this.getRef(\"clearcoatTextureInfo\"):null}setClearcoatTexture(e){return this.setRef(\"clearcoatTexture\",e,{channels:Le})}getClearcoatRoughnessFactor(){return this.get(\"clearcoatRoughnessFactor\")}setClearcoatRoughnessFactor(e){return this.set(\"clearcoatRoughnessFactor\",e)}getClearcoatRoughnessTexture(){return this.getRef(\"clearcoatRoughnessTexture\")}getClearcoatRoughnessTextureInfo(){return this.getRef(\"clearcoatRoughnessTexture\")?this.getRef(\"clearcoatRoughnessTextureInfo\"):null}setClearcoatRoughnessTexture(e){return this.setRef(\"clearcoatRoughnessTexture\",e,{channels:Ue})}getClearcoatNormalScale(){return this.get(\"clearcoatNormalScale\")}setClearcoatNormalScale(e){return this.set(\"clearcoatNormalScale\",e)}getClearcoatNormalTexture(){return this.getRef(\"clearcoatNormalTexture\")}getClearcoatNormalTextureInfo(){return this.getRef(\"clearcoatNormalTexture\")?this.getRef(\"clearcoatNormalTextureInfo\"):null}setClearcoatNormalTexture(e){return this.setRef(\"clearcoatNormalTexture\",e,{channels:Le|Ue|Ve})}}Pe.EXTENSION_NAME=S;const Xe=S;class He extends s{constructor(...e){super(...e),this.extensionName=Xe}createClearcoat(){return new Pe(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Xe]){const r=this.createClearcoat();e.materials[n].setExtension(Xe,r);const o=t.extensions[Xe];if(void 0!==o.clearcoatFactor&&r.setClearcoatFactor(o.clearcoatFactor),void 0!==o.clearcoatRoughnessFactor&&r.setClearcoatRoughnessFactor(o.clearcoatRoughnessFactor),void 0!==o.clearcoatTexture){const t=o.clearcoatTexture;r.setClearcoatTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getClearcoatTextureInfo(),t)}if(void 0!==o.clearcoatRoughnessTexture){const t=o.clearcoatRoughnessTexture;r.setClearcoatRoughnessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getClearcoatRoughnessTextureInfo(),t)}if(void 0!==o.clearcoatNormalTexture){const t=o.clearcoatNormalTexture;r.setClearcoatNormalTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getClearcoatNormalTextureInfo(),t),void 0!==t.scale&&r.setClearcoatNormalScale(t.scale)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Xe);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Xe]={clearcoatFactor:n.getClearcoatFactor(),clearcoatRoughnessFactor:n.getClearcoatRoughnessFactor()};if(n.getClearcoatTexture()){const t=n.getClearcoatTexture(),s=n.getClearcoatTextureInfo();i.clearcoatTexture=e.createTextureInfoDef(t,s)}if(n.getClearcoatRoughnessTexture()){const t=n.getClearcoatRoughnessTexture(),s=n.getClearcoatRoughnessTextureInfo();i.clearcoatRoughnessTexture=e.createTextureInfoDef(t,s)}if(n.getClearcoatNormalTexture()){const t=n.getClearcoatNormalTexture(),s=n.getClearcoatNormalTextureInfo();i.clearcoatNormalTexture=e.createTextureInfoDef(t,s),1!==n.getClearcoatNormalScale()&&(i.clearcoatNormalTexture.scale=n.getClearcoatNormalScale())}}}),this}}He.EXTENSION_NAME=Xe;class ze extends e{init(){this.extensionName=C,this.propertyType=\"EmissiveStrength\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{emissiveStrength:1})}getEmissiveStrength(){return this.get(\"emissiveStrength\")}setEmissiveStrength(e){return this.set(\"emissiveStrength\",e)}}ze.EXTENSION_NAME=C;const $e=C;class qe extends s{constructor(...e){super(...e),this.extensionName=$e}createEmissiveStrength(){return new ze(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,s)=>{if(t.extensions&&t.extensions[$e]){const n=this.createEmissiveStrength();e.materials[s].setExtension($e,n);const r=t.extensions[$e];void 0!==r.emissiveStrength&&n.setEmissiveStrength(r.emissiveStrength)}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension($e);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{},o.extensions[$e]={emissiveStrength:n.getEmissiveStrength()}}}),this}}qe.EXTENSION_NAME=$e;class Ke extends e{init(){this.extensionName=M,this.propertyType=\"IOR\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{ior:1.5})}getIOR(){return this.get(\"ior\")}setIOR(e){return this.set(\"ior\",e)}}Ke.EXTENSION_NAME=M;const Ye=M;class Qe extends s{constructor(...e){super(...e),this.extensionName=Ye}createIOR(){return new Ke(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,s)=>{if(t.extensions&&t.extensions[Ye]){const n=this.createIOR();e.materials[s].setExtension(Ye,n);const r=t.extensions[Ye];void 0!==r.ior&&n.setIOR(r.ior)}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Ye);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{},o.extensions[Ye]={ior:n.getIOR()}}}),this}}Qe.EXTENSION_NAME=Ye;const{R:We,G:Je}=d;class Ze extends e{init(){this.extensionName=O,this.propertyType=\"Iridescence\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{iridescenceFactor:0,iridescenceTexture:null,iridescenceTextureInfo:new x(this.graph,\"iridescenceTextureInfo\"),iridescenceIOR:1.3,iridescenceThicknessMinimum:100,iridescenceThicknessMaximum:400,iridescenceThicknessTexture:null,iridescenceThicknessTextureInfo:new x(this.graph,\"iridescenceThicknessTextureInfo\")})}getIridescenceFactor(){return this.get(\"iridescenceFactor\")}setIridescenceFactor(e){return this.set(\"iridescenceFactor\",e)}getIridescenceTexture(){return this.getRef(\"iridescenceTexture\")}getIridescenceTextureInfo(){return this.getRef(\"iridescenceTexture\")?this.getRef(\"iridescenceTextureInfo\"):null}setIridescenceTexture(e){return this.setRef(\"iridescenceTexture\",e,{channels:We})}getIridescenceIOR(){return this.get(\"iridescenceIOR\")}setIridescenceIOR(e){return this.set(\"iridescenceIOR\",e)}getIridescenceThicknessMinimum(){return this.get(\"iridescenceThicknessMinimum\")}setIridescenceThicknessMinimum(e){return this.set(\"iridescenceThicknessMinimum\",e)}getIridescenceThicknessMaximum(){return this.get(\"iridescenceThicknessMaximum\")}setIridescenceThicknessMaximum(e){return this.set(\"iridescenceThicknessMaximum\",e)}getIridescenceThicknessTexture(){return this.getRef(\"iridescenceThicknessTexture\")}getIridescenceThicknessTextureInfo(){return this.getRef(\"iridescenceThicknessTexture\")?this.getRef(\"iridescenceThicknessTextureInfo\"):null}setIridescenceThicknessTexture(e){return this.setRef(\"iridescenceThicknessTexture\",e,{channels:Je})}}Ze.EXTENSION_NAME=O;const et=O;class tt extends s{constructor(...e){super(...e),this.extensionName=et}createIridescence(){return new Ze(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[et]){const r=this.createIridescence();e.materials[n].setExtension(et,r);const o=t.extensions[et];if(void 0!==o.iridescenceFactor&&r.setIridescenceFactor(o.iridescenceFactor),void 0!==o.iridescenceIor&&r.setIridescenceIOR(o.iridescenceIor),void 0!==o.iridescenceThicknessMinimum&&r.setIridescenceThicknessMinimum(o.iridescenceThicknessMinimum),void 0!==o.iridescenceThicknessMaximum&&r.setIridescenceThicknessMaximum(o.iridescenceThicknessMaximum),void 0!==o.iridescenceTexture){const t=o.iridescenceTexture;r.setIridescenceTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getIridescenceTextureInfo(),t)}if(void 0!==o.iridescenceThicknessTexture){const t=o.iridescenceThicknessTexture;r.setIridescenceThicknessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getIridescenceThicknessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(et);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[et]={};if(n.getIridescenceFactor()>0&&(i.iridescenceFactor=n.getIridescenceFactor()),1.3!==n.getIridescenceIOR()&&(i.iridescenceIor=n.getIridescenceIOR()),100!==n.getIridescenceThicknessMinimum()&&(i.iridescenceThicknessMinimum=n.getIridescenceThicknessMinimum()),400!==n.getIridescenceThicknessMaximum()&&(i.iridescenceThicknessMaximum=n.getIridescenceThicknessMaximum()),n.getIridescenceTexture()){const t=n.getIridescenceTexture(),s=n.getIridescenceTextureInfo();i.iridescenceTexture=e.createTextureInfoDef(t,s)}if(n.getIridescenceThicknessTexture()){const t=n.getIridescenceThicknessTexture(),s=n.getIridescenceThicknessTextureInfo();i.iridescenceThicknessTexture=e.createTextureInfoDef(t,s)}}}),this}}tt.EXTENSION_NAME=et;const{R:st,G:nt,B:rt,A:ot}=d;class it extends e{init(){this.extensionName=_,this.propertyType=\"PBRSpecularGlossiness\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{diffuseFactor:[1,1,1,1],diffuseTexture:null,diffuseTextureInfo:new x(this.graph,\"diffuseTextureInfo\"),specularFactor:[1,1,1],glossinessFactor:1,specularGlossinessTexture:null,specularGlossinessTextureInfo:new x(this.graph,\"specularGlossinessTextureInfo\")})}getDiffuseFactor(){return this.get(\"diffuseFactor\")}setDiffuseFactor(e){return this.set(\"diffuseFactor\",e)}getDiffuseHex(){return p.factorToHex(this.getDiffuseFactor())}setDiffuseHex(e){const t=this.getDiffuseFactor().slice();return this.setDiffuseFactor(p.hexToFactor(e,t))}getDiffuseTexture(){return this.getRef(\"diffuseTexture\")}getDiffuseTextureInfo(){return this.getRef(\"diffuseTexture\")?this.getRef(\"diffuseTextureInfo\"):null}setDiffuseTexture(e){return this.setRef(\"diffuseTexture\",e,{channels:st|nt|rt|ot,isColor:!0})}getSpecularFactor(){return this.get(\"specularFactor\")}setSpecularFactor(e){return this.set(\"specularFactor\",e)}getGlossinessFactor(){return this.get(\"glossinessFactor\")}setGlossinessFactor(e){return this.set(\"glossinessFactor\",e)}getSpecularGlossinessTexture(){return this.getRef(\"specularGlossinessTexture\")}getSpecularGlossinessTextureInfo(){return this.getRef(\"specularGlossinessTexture\")?this.getRef(\"specularGlossinessTextureInfo\"):null}setSpecularGlossinessTexture(e){return this.setRef(\"specularGlossinessTexture\",e,{channels:st|nt|rt|ot})}}it.EXTENSION_NAME=_;const at=_;class ct extends s{constructor(...e){super(...e),this.extensionName=at}createPBRSpecularGlossiness(){return new it(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[at]){const r=this.createPBRSpecularGlossiness();e.materials[n].setExtension(at,r);const o=t.extensions[at];if(void 0!==o.diffuseFactor&&r.setDiffuseFactor(o.diffuseFactor),void 0!==o.specularFactor&&r.setSpecularFactor(o.specularFactor),void 0!==o.glossinessFactor&&r.setGlossinessFactor(o.glossinessFactor),void 0!==o.diffuseTexture){const t=o.diffuseTexture;r.setDiffuseTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getDiffuseTextureInfo(),t)}if(void 0!==o.specularGlossinessTexture){const t=o.specularGlossinessTexture;r.setSpecularGlossinessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSpecularGlossinessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(at);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[at]={diffuseFactor:n.getDiffuseFactor(),specularFactor:n.getSpecularFactor(),glossinessFactor:n.getGlossinessFactor()};if(n.getDiffuseTexture()){const t=n.getDiffuseTexture(),s=n.getDiffuseTextureInfo();i.diffuseTexture=e.createTextureInfoDef(t,s)}if(n.getSpecularGlossinessTexture()){const t=n.getSpecularGlossinessTexture(),s=n.getSpecularGlossinessTextureInfo();i.specularGlossinessTexture=e.createTextureInfoDef(t,s)}}}),this}}ct.EXTENSION_NAME=at;const{R:ut,G:lt,B:ht,A:ft}=d;class gt extends e{init(){this.extensionName=w,this.propertyType=\"Sheen\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{sheenColorFactor:[0,0,0],sheenColorTexture:null,sheenColorTextureInfo:new x(this.graph,\"sheenColorTextureInfo\"),sheenRoughnessFactor:0,sheenRoughnessTexture:null,sheenRoughnessTextureInfo:new x(this.graph,\"sheenRoughnessTextureInfo\")})}getSheenColorFactor(){return this.get(\"sheenColorFactor\")}getSheenColorHex(){return p.factorToHex(this.getSheenColorFactor())}setSheenColorFactor(e){return this.set(\"sheenColorFactor\",e)}setSheenColorHex(e){const t=this.getSheenColorFactor().slice();return this.set(\"sheenColorFactor\",p.hexToFactor(e,t))}getSheenColorTexture(){return this.getRef(\"sheenColorTexture\")}getSheenColorTextureInfo(){return this.getRef(\"sheenColorTexture\")?this.getRef(\"sheenColorTextureInfo\"):null}setSheenColorTexture(e){return this.setRef(\"sheenColorTexture\",e,{channels:ut|lt|ht,isColor:!0})}getSheenRoughnessFactor(){return this.get(\"sheenRoughnessFactor\")}setSheenRoughnessFactor(e){return this.set(\"sheenRoughnessFactor\",e)}getSheenRoughnessTexture(){return this.getRef(\"sheenRoughnessTexture\")}getSheenRoughnessTextureInfo(){return this.getRef(\"sheenRoughnessTexture\")?this.getRef(\"sheenRoughnessTextureInfo\"):null}setSheenRoughnessTexture(e){return this.setRef(\"sheenRoughnessTexture\",e,{channels:ft})}}gt.EXTENSION_NAME=w;const pt=w;class xt extends s{constructor(...e){super(...e),this.extensionName=pt}createSheen(){return new gt(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[pt]){const r=this.createSheen();e.materials[n].setExtension(pt,r);const o=t.extensions[pt];if(void 0!==o.sheenColorFactor&&r.setSheenColorFactor(o.sheenColorFactor),void 0!==o.sheenRoughnessFactor&&r.setSheenRoughnessFactor(o.sheenRoughnessFactor),void 0!==o.sheenColorTexture){const t=o.sheenColorTexture;r.setSheenColorTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSheenColorTextureInfo(),t)}if(void 0!==o.sheenRoughnessTexture){const t=o.sheenRoughnessTexture;r.setSheenRoughnessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSheenRoughnessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(pt);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[pt]={sheenColorFactor:n.getSheenColorFactor(),sheenRoughnessFactor:n.getSheenRoughnessFactor()};if(n.getSheenColorTexture()){const t=n.getSheenColorTexture(),s=n.getSheenColorTextureInfo();i.sheenColorTexture=e.createTextureInfoDef(t,s)}if(n.getSheenRoughnessTexture()){const t=n.getSheenRoughnessTexture(),s=n.getSheenRoughnessTextureInfo();i.sheenRoughnessTexture=e.createTextureInfoDef(t,s)}}}),this}}xt.EXTENSION_NAME=pt;const{R:dt,G:Tt,B:mt,A:Et}=d;class It extends e{init(){this.extensionName=D,this.propertyType=\"Specular\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{specularFactor:1,specularTexture:null,specularTextureInfo:new x(this.graph,\"specularTextureInfo\"),specularColorFactor:[1,1,1],specularColorTexture:null,specularColorTextureInfo:new x(this.graph,\"specularColorTextureInfo\")})}getSpecularFactor(){return this.get(\"specularFactor\")}setSpecularFactor(e){return this.set(\"specularFactor\",e)}getSpecularColorFactor(){return this.get(\"specularColorFactor\")}setSpecularColorFactor(e){return this.set(\"specularColorFactor\",e)}getSpecularColorHex(){return p.factorToHex(this.getSpecularColorFactor())}setSpecularColorHex(e){const t=this.getSpecularColorFactor().slice();return this.set(\"specularColorFactor\",p.hexToFactor(e,t))}getSpecularTexture(){return this.getRef(\"specularTexture\")}getSpecularTextureInfo(){return this.getRef(\"specularTexture\")?this.getRef(\"specularTextureInfo\"):null}setSpecularTexture(e){return this.setRef(\"specularTexture\",e,{channels:Et})}getSpecularColorTexture(){return this.getRef(\"specularColorTexture\")}getSpecularColorTextureInfo(){return this.getRef(\"specularColorTexture\")?this.getRef(\"specularColorTextureInfo\"):null}setSpecularColorTexture(e){return this.setRef(\"specularColorTexture\",e,{channels:dt|Tt|mt,isColor:!0})}}It.EXTENSION_NAME=D;const Nt=D;class Rt extends s{constructor(...e){super(...e),this.extensionName=Nt}createSpecular(){return new It(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Nt]){const r=this.createSpecular();e.materials[n].setExtension(Nt,r);const o=t.extensions[Nt];if(void 0!==o.specularFactor&&r.setSpecularFactor(o.specularFactor),void 0!==o.specularColorFactor&&r.setSpecularColorFactor(o.specularColorFactor),void 0!==o.specularTexture){const t=o.specularTexture;r.setSpecularTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSpecularTextureInfo(),t)}if(void 0!==o.specularColorTexture){const t=o.specularColorTexture;r.setSpecularColorTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSpecularColorTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Nt);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Nt]={};if(1!==n.getSpecularFactor()&&(i.specularFactor=n.getSpecularFactor()),l.eq(n.getSpecularColorFactor(),[1,1,1])||(i.specularColorFactor=n.getSpecularColorFactor()),n.getSpecularTexture()){const t=n.getSpecularTexture(),s=n.getSpecularTextureInfo();i.specularTexture=e.createTextureInfoDef(t,s)}if(n.getSpecularColorTexture()){const t=n.getSpecularColorTexture(),s=n.getSpecularColorTextureInfo();i.specularColorTexture=e.createTextureInfoDef(t,s)}}}),this}}Rt.EXTENSION_NAME=Nt;const{R:yt}=d;class At extends e{init(){this.extensionName=b,this.propertyType=\"Transmission\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{transmissionFactor:0,transmissionTexture:null,transmissionTextureInfo:new x(this.graph,\"transmissionTextureInfo\")})}getTransmissionFactor(){return this.get(\"transmissionFactor\")}setTransmissionFactor(e){return this.set(\"transmissionFactor\",e)}getTransmissionTexture(){return this.getRef(\"transmissionTexture\")}getTransmissionTextureInfo(){return this.getRef(\"transmissionTexture\")?this.getRef(\"transmissionTextureInfo\"):null}setTransmissionTexture(e){return this.setRef(\"transmissionTexture\",e,{channels:yt})}}At.EXTENSION_NAME=b;const St=b;class Ct extends s{constructor(...e){super(...e),this.extensionName=St}createTransmission(){return new At(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[St]){const r=this.createTransmission();e.materials[n].setExtension(St,r);const o=t.extensions[St];if(void 0!==o.transmissionFactor&&r.setTransmissionFactor(o.transmissionFactor),void 0!==o.transmissionTexture){const t=o.transmissionTexture;r.setTransmissionTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getTransmissionTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(St);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[St]={transmissionFactor:n.getTransmissionFactor()};if(n.getTransmissionTexture()){const t=n.getTransmissionTexture(),s=n.getTransmissionTextureInfo();i.transmissionTexture=e.createTextureInfoDef(t,s)}}}),this}}Ct.EXTENSION_NAME=St;class Mt extends e{init(){this.extensionName=F,this.propertyType=\"Unlit\",this.parentTypes=[t.MATERIAL]}}Mt.EXTENSION_NAME=F;const Ot=F;class _t extends s{constructor(...e){super(...e),this.extensionName=Ot}createUnlit(){return new Mt(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,s)=>{t.extensions&&t.extensions[Ot]&&e.materials[s].setExtension(Ot,this.createUnlit())}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{if(s.getExtension(Ot)){const n=e.materialIndexMap.get(s),r=t.json.materials[n];r.extensions=r.extensions||{},r.extensions[Ot]={}}}),this}}_t.EXTENSION_NAME=Ot;class wt extends e{init(){this.extensionName=v,this.propertyType=\"Mapping\",this.parentTypes=[\"MappingList\"]}getDefaults(){return Object.assign(super.getDefaults(),{material:null,variants:[]})}getMaterial(){return this.getRef(\"material\")}setMaterial(e){return this.setRef(\"material\",e)}addVariant(e){return this.addRef(\"variants\",e)}removeVariant(e){return this.removeRef(\"variants\",e)}listVariants(){return this.listRefs(\"variants\")}}wt.EXTENSION_NAME=v;class Dt extends e{init(){this.extensionName=v,this.propertyType=\"MappingList\",this.parentTypes=[t.PRIMITIVE]}getDefaults(){return Object.assign(super.getDefaults(),{mappings:[]})}addMapping(e){return this.addRef(\"mappings\",e)}removeMapping(e){return this.removeRef(\"mappings\",e)}listMappings(){return this.listRefs(\"mappings\")}}Dt.EXTENSION_NAME=v;class bt extends e{init(){this.extensionName=v,this.propertyType=\"Variant\",this.parentTypes=[\"MappingList\"]}}bt.EXTENSION_NAME=v;const Ft=v;class jt extends s{constructor(...e){super(...e),this.extensionName=Ft}createMappingList(){return new Dt(this.document.getGraph())}createVariant(e=\"\"){return new bt(this.document.getGraph(),e)}createMapping(){return new wt(this.document.getGraph())}listVariants(){return Array.from(this.properties).filter(e=>e instanceof bt)}read(e){const t=e.jsonDoc;if(!t.json.extensions||!t.json.extensions[Ft])return this;const s=(t.json.extensions[Ft].variants||[]).map(e=>this.createVariant().setName(e.name||\"\"));return(t.json.meshes||[]).forEach((t,n)=>{const r=e.meshes[n];(t.primitives||[]).forEach((t,n)=>{if(!t.extensions||!t.extensions[Ft])return;const o=this.createMappingList(),i=t.extensions[Ft];for(const t of i.mappings){const n=this.createMapping();void 0!==t.material&&n.setMaterial(e.materials[t.material]);for(const e of t.variants||[])n.addVariant(s[e]);o.addMapping(n)}r.listPrimitives()[n].setExtension(Ft,o)})}),this}write(e){const t=e.jsonDoc,s=this.listVariants();if(!s.length)return this;const n=[],r=new Map;for(const t of s)r.set(t,n.length),n.push(e.createPropertyDef(t));for(const t of this.document.getRoot().listMeshes()){const s=e.meshIndexMap.get(t);t.listPrimitives().forEach((t,n)=>{const o=t.getExtension(Ft);if(!o)return;const i=e.jsonDoc.json.meshes[s].primitives[n],a=o.listMappings().map(t=>{const s=e.createPropertyDef(t),n=t.getMaterial();return n&&(s.material=e.materialIndexMap.get(n)),s.variants=t.listVariants().map(e=>r.get(e)),s});i.extensions=i.extensions||{},i.extensions[Ft]={mappings:a}})}return t.json.extensions=t.json.extensions||{},t.json.extensions[Ft]={variants:n},this}}jt.EXTENSION_NAME=Ft;const{G:vt}=d;class kt extends e{init(){this.extensionName=j,this.propertyType=\"Volume\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{thicknessFactor:0,thicknessTexture:null,thicknessTextureInfo:new x(this.graph,\"thicknessTexture\"),attenuationDistance:Infinity,attenuationColor:[1,1,1]})}getThicknessFactor(){return this.get(\"thicknessFactor\")}setThicknessFactor(e){return this.set(\"thicknessFactor\",e)}getThicknessTexture(){return this.getRef(\"thicknessTexture\")}getThicknessTextureInfo(){return this.getRef(\"thicknessTexture\")?this.getRef(\"thicknessTextureInfo\"):null}setThicknessTexture(e){return this.setRef(\"thicknessTexture\",e,{channels:vt})}getAttenuationDistance(){return this.get(\"attenuationDistance\")}setAttenuationDistance(e){return this.set(\"attenuationDistance\",e)}getAttenuationColor(){return this.get(\"attenuationColor\")}setAttenuationColor(e){return this.set(\"attenuationColor\",e)}getAttenuationColorHex(){return p.factorToHex(this.getAttenuationColor())}setAttenuationColorHex(e){const t=this.getAttenuationColor().slice();return this.set(\"attenuationColor\",p.hexToFactor(e,t))}}kt.EXTENSION_NAME=j;const Bt=j;class Gt extends s{constructor(...e){super(...e),this.extensionName=Bt}createVolume(){return new kt(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Bt]){const r=this.createVolume();e.materials[n].setExtension(Bt,r);const o=t.extensions[Bt];if(void 0!==o.thicknessFactor&&r.setThicknessFactor(o.thicknessFactor),void 0!==o.attenuationDistance&&r.setAttenuationDistance(o.attenuationDistance),void 0!==o.attenuationColor&&r.setAttenuationColor(o.attenuationColor),void 0!==o.thicknessTexture){const t=o.thicknessTexture;r.setThicknessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getThicknessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Bt);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Bt]={};if(n.getThicknessFactor()>0&&(i.thicknessFactor=n.getThicknessFactor()),Number.isFinite(n.getAttenuationDistance())&&(i.attenuationDistance=n.getAttenuationDistance()),l.eq(n.getAttenuationColor(),[1,1,1])||(i.attenuationColor=n.getAttenuationColor()),n.getThicknessTexture()){const t=n.getThicknessTexture(),s=n.getThicknessTextureInfo();i.thicknessTexture=e.createTextureInfoDef(t,s)}}}),this}}Gt.EXTENSION_NAME=Bt;const Lt=\"KHR_mesh_quantization\";class Ut extends s{constructor(...e){super(...e),this.extensionName=Lt}read(e){return this}write(e){return this}}Ut.EXTENSION_NAME=Lt;const Vt=\"KHR_texture_basisu\";class Pt{match(e){return 171===e[0]&&75===e[1]&&84===e[2]&&88===e[3]&&32===e[4]&&50===e[5]&&48===e[6]&&187===e[7]&&13===e[8]&&10===e[9]&&26===e[10]&&10===e[11]}getSize(e){const t=T(e);return[t.pixelWidth,t.pixelHeight]}getChannels(e){const t=T(e).dataFormatDescriptor[0];if(t.colorModel===m)return 2===t.samples.length&&15==(15&t.samples[1].channelType)?4:3;if(t.colorModel===E)return 3==(15&t.samples[0].channelType)?4:3;throw new Error(`Unexpected KTX2 colorModel, \"${t.colorModel}\".`)}getVRAMByteLength(e){const t=T(e),s=this.getChannels(e)>3;let n=0;for(let e=0;e{e.extensions&&e.extensions[Vt]&&(e.source=e.extensions[Vt].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(s=>{if(\"image/ktx2\"===s.getMimeType()){const n=e.imageIndexMap.get(s);t.json.textures.forEach(e=>{e.source===n&&(e.extensions=e.extensions||{},e.extensions[Vt]={source:e.source},delete e.source)})}}),this}}Xt.EXTENSION_NAME=Vt;class Ht extends e{init(){this.extensionName=k,this.propertyType=\"Transform\",this.parentTypes=[t.TEXTURE_INFO]}getDefaults(){return Object.assign(super.getDefaults(),{offset:[0,0],rotation:0,scale:[1,1],texCoord:null})}getOffset(){return this.get(\"offset\")}setOffset(e){return this.set(\"offset\",e)}getRotation(){return this.get(\"rotation\")}setRotation(e){return this.set(\"rotation\",e)}getScale(){return this.get(\"scale\")}setScale(e){return this.set(\"scale\",e)}getTexCoord(){return this.get(\"texCoord\")}setTexCoord(e){return this.set(\"texCoord\",e)}}Ht.EXTENSION_NAME=k;const zt=k;class $t extends s{constructor(...e){super(...e),this.extensionName=zt}createTransform(){return new Ht(this.document.getGraph())}read(e){for(const[t,s]of Array.from(e.textureInfos.entries())){if(!s.extensions||!s.extensions[zt])continue;const e=this.createTransform(),n=s.extensions[zt];void 0!==n.offset&&e.setOffset(n.offset),void 0!==n.rotation&&e.setRotation(n.rotation),void 0!==n.scale&&e.setScale(n.scale),void 0!==n.texCoord&&e.setTexCoord(n.texCoord),t.setExtension(zt,e)}return this}write(e){const t=Array.from(e.textureInfoDefMap.entries());for(const[e,s]of t){const t=e.getExtension(zt);if(!t)continue;s.extensions=s.extensions||{};const n={},r=l.eq;r(t.getOffset(),[0,0])||(n.offset=t.getOffset()),0!==t.getRotation()&&(n.rotation=t.getRotation()),r(t.getScale(),[1,1])||(n.scale=t.getScale()),null!=t.getTexCoord()&&(n.texCoord=t.getTexCoord()),s.extensions[zt]=n}return this}}$t.EXTENSION_NAME=zt;const qt=[t.ROOT,t.SCENE,t.NODE,t.MESH,t.MATERIAL,t.TEXTURE,t.ANIMATION];class Kt extends e{init(){this.extensionName=B,this.propertyType=\"Packet\",this.parentTypes=qt}getDefaults(){return Object.assign(super.getDefaults(),{context:{},properties:{}})}getContext(){return this.get(\"context\")}setContext(e){return this.set(\"context\",P({},e))}listProperties(){return Object.keys(this.get(\"properties\"))}getProperty(e){const t=this.get(\"properties\");return e in t?t[e]:null}setProperty(e,t){this._assertContext(e);const s=P({},this.get(\"properties\"));return t?s[e]=t:delete s[e],this.set(\"properties\",s)}toJSONLD(){return P({\"@context\":Yt(this.get(\"context\"))},Yt(this.get(\"properties\")))}fromJSONLD(e){const t=(e=Yt(e))[\"@context\"];return t&&this.set(\"context\",t),delete e[\"@context\"],this.set(\"properties\",e)}_assertContext(e){if(!(e.split(\":\")[0]in this.get(\"context\")))throw new Error(`${B}: Missing context for term, \"${e}\".`)}}function Yt(e){return JSON.parse(JSON.stringify(e))}Kt.EXTENSION_NAME=B;const Qt=B;class Wt extends s{constructor(...e){super(...e),this.extensionName=Qt}createPacket(){return new Kt(this.document.getGraph())}listPackets(){return Array.from(this.properties)}read(e){var t;const s=null==(t=e.jsonDoc.json.extensions)?void 0:t[Qt];if(!s||!s.packets)return this;const n=e.jsonDoc.json,r=this.document.getRoot(),o=s.packets.map(e=>this.createPacket().fromJSONLD(e)),i=[[n.asset],n.scenes,n.nodes,n.meshes,n.materials,n.images,n.animations],a=[[r],r.listScenes(),r.listNodes(),r.listMeshes(),r.listMaterials(),r.listTextures(),r.listAnimations()];for(let e=0;e0&&(s.extensions=s.extensions||{},s.extensions[Qt]={packets:n}),this}}Wt.EXTENSION_NAME=Qt;const Jt=[Oe,be,Ge,He,qe,Qe,tt,ct,Rt,xt,Ct,_t,jt,Gt,Ut,Xt,$t,Wt],Zt=[V,ne,ie,le,...Jt];export{Zt as ALL_EXTENSIONS,ke as Anisotropy,Pe as Clearcoat,V as EXTMeshGPUInstancing,ne as EXTMeshoptCompression,ie as EXTTextureAVIF,le as EXTTextureWebP,ze as EmissiveStrength,G as INSTANCE_ATTRIBUTE,Ke as IOR,L as InstancedMesh,Ze as Iridescence,Oe as KHRDracoMeshCompression,be as KHRLightsPunctual,Ge as KHRMaterialsAnisotropy,He as KHRMaterialsClearcoat,qe as KHRMaterialsEmissiveStrength,Qe as KHRMaterialsIOR,tt as KHRMaterialsIridescence,ct as KHRMaterialsPBRSpecularGlossiness,xt as KHRMaterialsSheen,Rt as KHRMaterialsSpecular,Ct as KHRMaterialsTransmission,_t as KHRMaterialsUnlit,jt as KHRMaterialsVariants,Gt as KHRMaterialsVolume,Ut as KHRMeshQuantization,Jt as KHRONOS_EXTENSIONS,Xt as KHRTextureBasisu,$t as KHRTextureTransform,Wt as KHRXMP,we as Light,wt as Mapping,Dt as MappingList,it as PBRSpecularGlossiness,Kt as Packet,gt as Sheen,It as Specular,Ht as Transform,At as Transmission,Mt as Unlit,bt as Variant,kt as Volume};\n//# sourceMappingURL=extensions.modern.js.map\n","var e=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];function t(){var e=this;function t(e,t){var n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.build_tree=function(n){var i,r,a,o=e.dyn_tree,s=e.stat_desc.static_tree,l=e.stat_desc.elems,f=-1;for(n.heap_len=0,n.heap_max=573,i=0;i=1;i--)n.pqdownheap(o,i);a=l;do{i=n.heap[1],n.heap[1]=n.heap[n.heap_len--],n.pqdownheap(o,1),r=n.heap[1],n.heap[--n.heap_max]=i,n.heap[--n.heap_max]=r,o[2*a]=o[2*i]+o[2*r],n.depth[a]=Math.max(n.depth[i],n.depth[r])+1,o[2*i+1]=o[2*r+1]=a,n.heap[1]=a++,n.pqdownheap(o,1)}while(n.heap_len>=2);n.heap[--n.heap_max]=n.heap[1],function(t){var n,i,r,a,o,s,l=e.dyn_tree,f=e.stat_desc.static_tree,u=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,c=e.stat_desc.max_length,_=0;for(a=0;a<=15;a++)t.bl_count[a]=0;for(l[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<573;n++)(a=l[2*l[2*(i=t.heap[n])+1]+1]+1)>c&&(a=c,_++),l[2*i+1]=a,i>e.max_code||(t.bl_count[a]++,o=0,i>=d&&(o=u[i-d]),t.opt_len+=(s=l[2*i])*(a+o),f&&(t.static_len+=s*(f[2*i+1]+o)));if(0!==_){do{for(a=c-1;0===t.bl_count[a];)a--;t.bl_count[a]--,t.bl_count[a+1]+=2,t.bl_count[c]--,_-=2}while(_>0);for(a=c;0!==a;a--)for(i=t.bl_count[a];0!==i;)(r=t.heap[--n])>e.max_code||(l[2*r+1]!=a&&(t.opt_len+=(a-l[2*r+1])*l[2*r],l[2*r+1]=a),i--)}}(n),function(e,n,i){var r,a,o,s=[],l=0;for(r=1;r<=15;r++)s[r]=l=l+i[r-1]<<1;for(a=0;a<=n;a++)0!==(o=e[2*a+1])&&(e[2*a]=t(s[o]++,o))}(o,e.max_code,n.bl_count)}}function n(e,t,n,i,r){var a=this;a.static_tree=e,a.extra_bits=t,a.extra_base=n,a.elems=i,a.max_length=r}function i(e,t,n,i,r){var a=this;a.good_length=e,a.max_lazy=t,a.nice_length=n,a.max_chain=i,a.func=r}t._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28],t.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],t.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],t.d_code=function(t){return t<256?e[t]:e[256+(t>>>7)]},t.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],t.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],t.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],n.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],n.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],n.static_l_desc=new n(n.static_ltree,t.extra_lbits,257,286,15),n.static_d_desc=new n(n.static_dtree,t.extra_dbits,0,30,15),n.static_bl_desc=new n(null,t.extra_blbits,0,19,7);var r=[new i(0,0,0,0,0),new i(4,4,8,4,1),new i(4,5,16,8,1),new i(4,6,32,32,1),new i(4,4,16,16,2),new i(8,16,32,32,2),new i(8,16,128,128,2),new i(8,32,128,256,2),new i(32,128,258,1024,2),new i(32,258,258,4096,2)],a=[\"need dictionary\",\"stream end\",\"\",\"\",\"stream error\",\"data error\",\"\",\"buffer error\",\"\",\"\"];function o(e,t,n,i){var r=e[2*t],a=e[2*n];return r>>8&255)}function ee(e,t){var n,i=t;q>16-i?(X(V|=(n=e)<>>16-q,q+=i-16):(V|=e<=8&&(Q(255&V),V>>>=8,q-=8)}function re(e,n){var i,r,a;if($.pending_buf[N+2*Z]=e>>>8&255,$.pending_buf[N+2*Z+1]=255&e,$.pending_buf[L+Z]=255&n,Z++,0===e?B[2*n]++:(j++,e--,B[2*(t._length_code[n]+256+1)]++,I[2*t.d_code(e)]++),0==(8191&Z)&&F>2){for(i=8*Z,r=z-g,a=0;a<30;a++)i+=I[2*a]*(5+t.extra_dbits[a]);if(i>>>=3,j8?X(V):q>0&&Q(255&V),V=0,q=0}function se(e,t,n){ee(0+(n?1:0),3),function(e,t,n){oe(),O=8,X(t),X(~t),$.pending_buf.set(c.subarray(e,e+t),$.pending),$.pending+=t}(e,t)}function le(i){(function(e,i,r){var a,o,s=0;F>0?(G.build_tree($),H.build_tree($),s=function(){var e;for(K(B,G.max_code),K(I,H.max_code),Y.build_tree($),e=18;e>=3&&0===C[2*t.bl_order[e]+1];e--);return $.opt_len+=3*(e+1)+5+5+4,e}(),(o=$.static_len+3+7>>>3)<=(a=$.opt_len+3+7>>>3)&&(a=o)):a=o=i+5,i+4<=a&&-1!=e?se(e,i,r):o==a?(ee(2+(r?1:0),3),ae(n.static_ltree,n.static_dtree)):(ee(4+(r?1:0),3),function(e,n,i){var r;for(ee(e-257,5),ee(n-1,5),ee(i-4,4),r=0;r=0?g:-1,z-g,i),g=z,e.flush_pending()}function fe(){var t,n,i,r;do{if(0==(r=_-D-z)&&0===z&&0===D)r=f;else if(-1==r)r--;else if(z>=f+f-262){c.set(c.subarray(f,f+f),0),E-=f,z-=f,g-=f,i=t=v;do{n=65535&p[--i],p[i]=n>=f?n-f:0}while(0!=--t);i=t=f;do{n=65535&h[--i],h[i]=n>=f?n-f:0}while(0!=--t);r+=f}if(0===e.avail_in)return;t=e.read_buf(c,z+D,r),(D+=t)>=3&&(w=((w=255&c[z])<f-262?z-(f-262):0,s=M,l=d,u=z+258,_=c[r+a-1],p=c[r+a];A>=W&&(i>>=2),s>D&&(s=D);do{if(c[(t=e)+a]==p&&c[t+a-1]==_&&c[t]==c[r]&&c[++t]==c[r+1]){r+=2,t++;do{}while(c[++r]==c[++t]&&c[++r]==c[++t]&&c[++r]==c[++t]&&c[++r]==c[++t]&&c[++r]==c[++t]&&c[++r]==c[++t]&&c[++r]==c[++t]&&c[++r]==c[++t]&&ra){if(E=e,a=n,n>=s)break;_=c[r+a-1],p=c[r+a]}}}while((e=65535&h[e&l])>o&&0!=--i);return a<=D?a:D}$.depth=[],$.bl_count=[],$.heap=[],B=[],I=[],C=[],$.pqdownheap=function(e,t){for(var n=$.heap,i=n[t],r=t<<1;r<=$.heap_len&&(r<$.heap_len&&o(e,n[r+1],n[r],$.depth)&&r++,!o(e,i,n[r],$.depth));)n[t]=n[r],t=r,r<<=1;n[t]=i},$.deflateInit=function(e,t,a,o,k,E){return o||(o=8),k||(k=8),E||(E=0),e.msg=null,-1==t&&(t=6),k<1||k>9||8!=o||a<9||a>15||t<0||t>9||E<0||E>2?-2:(e.dstate=$,d=(f=1<<(u=a))-1,x=(v=1<<(b=k+7))-1,m=Math.floor((b+3-1)/3),c=new Uint8Array(2*f),h=[],p=[],P=1<9||n<0||n>2?-2:(r[F].func!=r[t].func&&0!==e.total_in&&(i=e.deflate(1)),F!=t&&(R=r[F=t].max_lazy,W=r[F].good_length,M=r[F].nice_length,S=r[F].max_chain),T=n,i)},$.deflateSetDictionary=function(e,t,n){var r,a=n,o=0;if(!t||42!=i)return-2;if(a<3)return 0;for(a>f-262&&(o=n-(a=f-262)),c.set(t.subarray(o,o+a),0),z=a,g=a,w=((w=255&c[0])<4||o<0)return-2;if(!t.next_out||!t.next_in&&0!==t.avail_in||666==i&&4!=o)return t.msg=a[4],-2;if(0===t.avail_out)return t.msg=a[7],-5;if(e=t,W=l,l=o,42==i&&(b=8+(u-8<<4)<<8,(S=(F-1&255)>>1)>3&&(S=3),b|=S<<6,0!==z&&(b|=32),i=113,Q((B=b+=31-b%31)>>8&255),Q(255&B)),0!==$.pending){if(e.flush_pending(),0===e.avail_out)return l=-1,0}else if(0===e.avail_in&&o<=W&&4!=o)return e.msg=a[7],-5;if(666==i&&0!==e.avail_in)return t.msg=a[7],-5;if(0!==e.avail_in||0!==D||0!=o&&666!=i){switch(M=-1,r[F].func){case 0:M=function(t){var n,i=65535;for(i>s-5&&(i=s-5);;){if(D<=1){if(fe(),0===D&&0==t)return 0;if(0===D)break}if(z+=D,D=0,n=g+i,(0===z||z>=n)&&(D=z-n,z=n,le(!1),0===e.avail_out))return 0;if(z-g>=f-262&&(le(!1),0===e.avail_out))return 0}return le(4==t),0===e.avail_out?4==t?2:0:4==t?3:1}(o);break;case 1:M=function(t){for(var n,i=0;;){if(D<262){if(fe(),D<262&&0==t)return 0;if(0===D)break}if(D>=3&&(i=65535&p[w=(w<=3)if(n=re(z-E,y-3),D-=y,y<=R&&D>=3){y--;do{z++,i=65535&p[w=(w<=3&&(r=65535&p[w=(w<4096)&&(y=2)),A>=3&&y<=A){i=z+D-3,n=re(z-1-k,A-3),D-=A-1,A-=2;do{++z<=i&&(r=65535&p[w=(w<0&&t.next_in_index!=s&&(r(t.next_in_index),s=t.next_in_index)}while(t.avail_in>0||0===t.avail_out);return a=new Uint8Array(f),o.forEach(function(e){a.set(e,l),l+=e.length}),a}},this.flush=function(){var e,r,a=[],o=0,s=0;do{if(t.next_out_index=0,t.avail_out=n,1!=(e=t.deflate(4))&&0!=e)throw new Error(\"deflating: \"+t.msg);n-t.avail_out>0&&a.push(new Uint8Array(i.subarray(0,t.next_out_index))),s+=t.next_out_index}while(t.avail_in>0||0===t.avail_out);return t.deflateEnd(),r=new Uint8Array(s),a.forEach(function(e){r.set(e,o),o+=e.length}),r}}l.prototype={deflateInit:function(e,t){var n=this;return n.dstate=new s,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate:function(e){var t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd:function(){var e=this;if(!e.dstate)return-2;var t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams:function(e,t){var n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary:function(e,t){var n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf:function(e,t,n){var i=this,r=i.avail_in;return r>n&&(r=n),0===r?0:(i.avail_in-=r,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+r),t),i.next_in_index+=r,i.total_in+=r,r)},flush_pending:function(){var e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),0!==t&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,0===e.dstate.pending&&(e.dstate.pending_out=0))}},self._zipjs_Deflater=f;var u=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],d=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],c=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],_=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],h=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],p=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],w=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function v(){var e,t,n,i,r,a;function o(e,t,o,s,l,f,u,d,c,_,h){var p,w,v,b,x,m,g,y,k,U,z,E,D,A,S;U=0,x=o;do{n[e[t+U]]++,U++,x--}while(0!==x);if(n[0]==o)return u[0]=-1,d[0]=0,0;for(y=d[0],m=1;m<=15&&0===n[m];m++);for(g=m,yx&&(y=x),d[0]=y,A=1<E+y;){if(b++,S=(S=v-(E+=y))>y?y:S,(w=1<<(m=g-E))>p+1&&(w-=p+1,D=g,m1440)return-3;r[b]=z=_[0],_[0]+=S,0!==b?(a[b]=x,i[0]=m,i[1]=y,i[2]=z-r[b-1]-(m=x>>>E-y),c.set(i,3*(r[b-1]+m))):u[0]=z}for(i[1]=g-E,U>=o?i[0]=192:h[U]>>E;m>>=1)x^=m;for(x^=m,k=(1<257?(-3==v?c.msg=\"oversubscribed distance tree\":-5==v?(c.msg=\"incomplete distance tree\",v=-3):-4!=v&&(c.msg=\"empty distance tree with lengths\",v=-3),v):0)}}function b(){var e,t,n,i,r=this,a=0,o=0,s=0,l=0,f=0,d=0,c=0,_=0,h=0,p=0;function w(e,t,n,i,r,a,o,s){var l,f,d,c,_,h,p,w,v,b,x,m,g,y,k,U;p=s.next_in_index,w=s.avail_in,_=o.bitb,h=o.bitk,b=(v=o.write)>=f[U+1],h-=f[U+1],0!=(16&c)){for(g=f[U+2]+(_&u[c&=15]),_>>=c,h-=c;h<15;)w--,_|=(255&s.read_byte(p++))<>=f[U+1],h-=f[U+1],0!=(16&c)){for(c&=15;h>=c,h-=c,b-=g,v>=y)v-(k=v-y)>0&&2>v-k?(o.window[v++]=o.window[k++],o.window[v++]=o.window[k++],g-=2):(o.window.set(o.window.subarray(k,k+2),v),v+=2,k+=2,g-=2);else{k=v-y;do{k+=o.end}while(k<0);if(g>(c=o.end-k)){if(g-=c,v-k>0&&c>v-k)do{o.window[v++]=o.window[k++]}while(0!=--c);else o.window.set(o.window.subarray(k,k+c),v),v+=c,k+=c,c=0;k=0}}if(v-k>0&&g>v-k)do{o.window[v++]=o.window[k++]}while(0!=--g);else o.window.set(o.window.subarray(k,k+g),v),v+=g,k+=g,g=0;break}if(0!=(64&c))return s.msg=\"invalid distance code\",w+=g=h>>3<(g=s.avail_in-w)?h>>3:g,p-=g,h-=g<<3,o.bitb=_,o.bitk=h,s.avail_in=w,s.total_in+=p-s.next_in_index,s.next_in_index=p,o.write=v,-3;l+=f[U+2],c=f[U=3*(d+(l+=_&u[c]))]}break}if(0!=(64&c))return 0!=(32&c)?(w+=g=h>>3<(g=s.avail_in-w)?h>>3:g,p-=g,h-=g<<3,o.bitb=_,o.bitk=h,s.avail_in=w,s.total_in+=p-s.next_in_index,s.next_in_index=p,o.write=v,1):(s.msg=\"invalid literal/length code\",w+=g=h>>3<(g=s.avail_in-w)?h>>3:g,p-=g,h-=g<<3,o.bitb=_,o.bitk=h,s.avail_in=w,s.total_in+=p-s.next_in_index,s.next_in_index=p,o.write=v,-3);if(l+=f[U+2],0===(c=f[U=3*(d+(l+=_&u[c]))])){_>>=f[U+1],h-=f[U+1],o.window[v++]=f[U+2],b--;break}}else _>>=f[U+1],h-=f[U+1],o.window[v++]=f[U+2],b--}while(b>=258&&w>=10);return w+=g=h>>3<(g=s.avail_in-w)?h>>3:g,p-=g,h-=g<<3,o.bitb=_,o.bitk=h,s.avail_in=w,s.total_in+=p-s.next_in_index,s.next_in_index=p,o.write=v,0}r.init=function(r,a,o,s,l,f){e=0,c=r,_=a,n=o,h=s,i=l,p=f,t=null},r.proc=function(r,v,b){var x,m,g,y,k,U,z,E=0,D=0,A=0;for(A=v.next_in_index,y=v.avail_in,E=r.bitb,D=r.bitk,U=(k=r.write)=258&&y>=10&&(r.bitb=E,r.bitk=D,v.avail_in=y,v.total_in+=A-v.next_in_index,v.next_in_index=A,r.write=k,b=w(c,_,n,h,i,p,r,v),A=v.next_in_index,y=v.avail_in,E=r.bitb,D=r.bitk,U=(k=r.write)>>=t[1+(m=3*(o+(E&u[x])))],D-=t[m+1],0===(g=t[m])){l=t[m+2],e=6;break}if(0!=(16&g)){f=15&g,a=t[m+2],e=2;break}if(0==(64&g)){s=g,o=m/3+t[m+2];break}if(0!=(32&g)){e=7;break}return e=9,v.msg=\"invalid literal/length code\",b=-3,r.bitb=E,r.bitk=D,v.avail_in=y,v.total_in+=A-v.next_in_index,v.next_in_index=A,r.write=k,r.inflate_flush(v,b);case 2:for(x=f;D>=x,D-=x,s=_,t=i,o=p,e=3;case 3:for(x=s;D>=t[1+(m=3*(o+(E&u[x])))],D-=t[m+1],0!=(16&(g=t[m]))){f=15&g,d=t[m+2],e=4;break}if(0==(64&g)){s=g,o=m/3+t[m+2];break}return e=9,v.msg=\"invalid distance code\",b=-3,r.bitb=E,r.bitk=D,v.avail_in=y,v.total_in+=A-v.next_in_index,v.next_in_index=A,r.write=k,r.inflate_flush(v,b);case 4:for(x=f;D>=x,D-=x,e=5;case 5:for(z=k-d;z<0;)z+=r.end;for(;0!==a;){if(0===U&&(k==r.end&&0!==r.read&&(U=(k=0)7&&(D-=8,y++,A--),r.write=k,b=r.inflate_flush(v,b),U=(k=r.write)e.avail_out&&(n=e.avail_out),0!==n&&-5==t&&(t=0),e.avail_out-=n,e.total_out+=n,e.next_out.set(i.window.subarray(a,a+n),r),r+=n,(a+=n)==i.end&&(a=0,i.write==i.end&&(i.write=0),(n=i.write-a)>e.avail_out&&(n=e.avail_out),0!==n&&-5==t&&(t=0),e.avail_out-=n,e.total_out+=n,e.next_out.set(i.window.subarray(a,a+n),r),r+=n,a+=n),e.next_out_index=r,i.read=a,t},i.proc=function(e,t){var p,w,b,m,g,y,k,U;for(m=e.next_in_index,g=e.avail_in,w=i.bitb,b=i.bitk,k=(y=i.write)>>1){case 0:w>>>=3,w>>>=p=7&(b-=3),b-=p,r=1;break;case 1:var z=[],E=[],D=[[]],A=[[]];v.inflate_trees_fixed(z,E,D,A),d.init(z[0],E[0],D[0],0,A[0],0),w>>>=3,b-=3,r=6;break;case 2:w>>>=3,b-=3,r=3;break;case 3:return w>>>=3,b-=3,r=9,e.msg=\"invalid block type\",t=-3,i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t)}break;case 1:for(;b<32;){if(0===g)return i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);t=0,g--,w|=(255&e.read_byte(m++))<>>16&65535)!=(65535&w))return r=9,e.msg=\"invalid stored block lengths\",t=-3,i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);a=65535&w,w=b=0,r=0!==a?2:0!==c?7:0;break;case 2:if(0===g)return i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);if(0===k&&(y==i.end&&0!==i.read&&(k=(y=0)g&&(p=g),p>k&&(p=k),i.window.set(e.read_buf(m,p),y),m+=p,g-=p,y+=p,k-=p,0!=(a-=p))break;r=0!==c?7:0;break;case 3:for(;b<14;){if(0===g)return i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);t=0,g--,w|=(255&e.read_byte(m++))<29||(p>>5&31)>29)return r=9,e.msg=\"too many length or distance symbols\",t=-3,i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);if(p=258+(31&p)+(p>>5&31),!n||n.length>>=14,b-=14,s=0,r=4;case 4:for(;s<4+(o>>>10);){for(;b<3;){if(0===g)return i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);t=0,g--,w|=(255&e.read_byte(m++))<>>=3,b-=3}for(;s<19;)n[x[s++]]=0;if(l[0]=7,0!=(p=h.inflate_trees_bits(n,l,f,_,e)))return-3==(t=p)&&(n=null,r=9),i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);s=0,r=5;case 5:for(;!(s>=258+(31&(p=o))+(p>>5&31));){var S,R;for(p=l[0];b>>=p,b-=p,n[s++]=R;else{for(U=18==R?7:R-14,S=18==R?11:3;b>>=p)&u[U],w>>>=U,b-=U,(U=s)+S>258+(31&(p=o))+(p>>5&31)||16==R&&U<1)return n=null,r=9,e.msg=\"invalid bit length repeat\",t=-3,i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);R=16==R?n[U-1]:0;do{n[U++]=R}while(0!=--S);s=U}}f[0]=-1;var F=[],T=[],W=[],M=[];if(F[0]=9,T[0]=6,0!=(p=h.inflate_trees_dynamic(257+(31&(p=o)),1+(p>>5&31),n,F,T,W,M,_,e)))return-3==p&&(n=null,r=9),t=p,i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,i.inflate_flush(e,t);d.init(F[0],T[0],_,W[0],_,M[0]),r=6;case 6:if(i.bitb=w,i.bitk=b,e.avail_in=g,e.total_in+=m-e.next_in_index,e.next_in_index=m,i.write=y,1!=(t=d.proc(i,e,t)))return i.inflate_flush(e,t);if(t=0,d.free(e),m=e.next_in_index,g=e.avail_in,w=i.bitb,b=i.bitk,k=(y=i.write)15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new m(n,1<>4)>e.istate.wbits){e.istate.mode=13,e.msg=\"invalid window size\",e.istate.marker=5;break}e.istate.mode=1;case 1:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,i=255&e.read_byte(e.next_in_index++),((e.istate.method<<8)+i)%31!=0){e.istate.mode=13,e.msg=\"incorrect header check\",e.istate.marker=5;break}if(0==(32&i)){e.istate.mode=7;break}e.istate.mode=2;case 2:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,e.istate.need=(255&e.read_byte(e.next_in_index++))<<24&4278190080,e.istate.mode=3;case 3:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,e.istate.need+=(255&e.read_byte(e.next_in_index++))<<16&16711680,e.istate.mode=4;case 4:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,e.istate.need+=(255&e.read_byte(e.next_in_index++))<<8&65280,e.istate.mode=5;case 5:return 0===e.avail_in?n:(n=t,e.avail_in--,e.total_in++,e.istate.need+=255&e.read_byte(e.next_in_index++),e.istate.mode=6,2);case 6:return e.istate.mode=13,e.msg=\"need dictionary\",e.istate.marker=0,-2;case 7:if(-3==(n=e.istate.blocks.proc(e,n))){e.istate.mode=13,e.istate.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,e.istate.blocks.reset(e,e.istate.was),e.istate.mode=12;case 12:return 1;case 13:return-3;default:return-2}},e.inflateSetDictionary=function(e,t,n){var i=0,r=n;return e&&e.istate&&6==e.istate.mode?(r>=1<0&&e.next_in_index!=l&&(r(e.next_in_index),l=e.next_in_index)}while(e.avail_in>0||0===e.avail_out);return o=new Uint8Array(u),s.forEach(function(e){o.set(e,f),f+=e.length}),o}},this.flush=function(){e.inflateEnd()}}k.prototype={inflateInit:function(e){var t=this;return t.istate=new y,e||(e=15),t.istate.inflateInit(t,e)},inflate:function(e){var t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd:function(){var e=this;if(!e.istate)return-2;var t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync:function(){var e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary:function(e,t){var n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte:function(e){return this.next_in.subarray(e,e+1)[0]},read_buf:function(e,t){return this.next_in.subarray(e,e+t)}},self._zipjs_Inflater=U;var z,E=\"File format is not recognized.\",D=\"Error while reading zip file.\";try{z=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function A(){this.crc=-1}function S(){}function R(e,t){var n,i;return n=new ArrayBuffer(e),i=new Uint8Array(n),t&&i.set(t,0),{buffer:n,array:i,view:new DataView(n)}}function F(){}function T(e){var t,n=this;n.size=0,n.init=function(i,r){var a=new Blob([e],{type:\"text/plain\"});(t=new M(a)).init(function(){n.size=t.size,i()},r)},n.readUint8Array=function(e,n,i,r){t.readUint8Array(e,n,i,r)}}function W(e){var t,n=this;n.size=0,n.init=function(i){for(var r=e.length;\"=\"==e.charAt(r-1);)r--;t=e.indexOf(\",\")+1,n.size=Math.floor(.75*(r-t)),i()},n.readUint8Array=function(n,i,r){var a,o=R(i),s=4*Math.floor(n/3),l=4*Math.ceil((n+i)/3),f=self.atob(e.substring(s+t,l+t)),u=n-3*Math.floor(s/4);for(a=u;ae.size)throw new RangeError(\"offset:\"+t+\", length:\"+n+\", size:\"+e.size);return e.slice?e.slice(t,t+n):e.webkitSlice?e.webkitSlice(t,t+n):e.mozSlice?e.mozSlice(t,t+n):e.msSlice?e.msSlice(t,t+n):void 0}(e,t,n))}catch(e){r(e)}}}function B(){}function I(e){var t,n=this;n.init=function(e){t=new Blob([],{type:\"text/plain\"}),e()},n.writeUint8Array=function(e,n){t=new Blob([t,z?e:e.buffer],{type:\"text/plain\"}),n()},n.getData=function(n,i){var r=new FileReader;r.onload=function(e){n(e.target.result)},r.onerror=i,r.readAsText(t,e)}}function C(e){var t=this,n=\"\",i=\"\";t.init=function(t){n+=\"data:\"+(e||\"\")+\";base64,\",t()},t.writeUint8Array=function(e,t){var r,a=i.length,o=i;for(i=\"\",r=0;r<3*Math.floor((a+e.length)/3)-a;r++)o+=String.fromCharCode(e[r]);for(;r2?n+=self.btoa(o):i=o,t()},t.getData=function(e){e(n+self.btoa(i))}}function L(e){var t,n=this;n.init=function(n){t=new Blob([],{type:e}),n()},n.writeUint8Array=function(n,i){t=new Blob([t,z?n:n.buffer],{type:e}),i()},n.getData=function(e){e(t)}}function P(e,t,n,i,r,a,o,s,l,f){var u,d,c,_=0,h=t.sn;function p(){e.removeEventListener(\"message\",w,!1),s(d,c)}function w(t){var n=t.data,r=n.data,s=n.error;if(s)return s.toString=function(){return\"Error: \"+this.message},void l(s);if(n.sn===h)switch(\"number\"==typeof n.codecTime&&(e.codecTime+=n.codecTime),\"number\"==typeof n.crcTime&&(e.crcTime+=n.crcTime),n.type){case\"append\":r?(d+=r.length,i.writeUint8Array(r,function(){v()},f)):v();break;case\"flush\":c=n.crc,r?(d+=r.length,i.writeUint8Array(r,function(){p()},f)):p();break;case\"progress\":o&&o(u+n.loaded,a);break;case\"importScripts\":case\"newTask\":case\"echo\":break;default:console.warn(\"zip.js:launchWorkerProcess: unknown message: \",n)}}function v(){(u=524288*_)<=a?n.readUint8Array(r+u,Math.min(524288,a-u),function(n){o&&o(u,a);var i=0===u?t:{sn:h};i.type=\"append\",i.data=n;try{e.postMessage(i,[n.buffer])}catch(t){e.postMessage(i)}_++},l):e.postMessage({sn:h,type:\"flush\"})}d=0,e.addEventListener(\"message\",w,!1),v()}function Z(e,t,n,i,r,a,o,s,l,f){var u,d=0,c=0,_=\"input\"===a,h=\"output\"===a,p=new A;!function a(){var w;if((u=524288*d)127?r[n-128]:String.fromCharCode(n);return i}function O(e){return decodeURIComponent(escape(e))}function V(e){var t,n=\"\";for(t=0;t>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((i||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(n+10,!0),e.compressedSize=t.view.getUint32(n+14,!0),e.uncompressedSize=t.view.getUint32(n+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(n+22,!0),e.extraFieldLength=t.view.getUint16(n+24,!0)):r(\"File is using Zip64 (4gb+ file size).\")):r(\"File contains encrypted entry.\")}function $(e){return unescape(encodeURIComponent(e))}function G(e){var t,n=[];for(t=0;t>>8^n[255&(t^e[i])];this.crc=t},A.prototype.get=function(){return~this.crc},A.prototype.table=function(){var e,t,n,i=[];for(e=0;e<256;e++){for(n=e,t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;i[e]=n}return i}(),S.prototype.append=function(e,t){return e},S.prototype.flush=function(){},(T.prototype=new F).constructor=T,(W.prototype=new F).constructor=W,(M.prototype=new F).constructor=M,B.prototype.getData=function(e){e(this.data)},(I.prototype=new B).constructor=I,(C.prototype=new B).constructor=C,(L.prototype=new B).constructor=L;var H={deflater:[\"z-worker.js\",\"deflate.js\"],inflater:[\"z-worker.js\",\"inflate.js\"]};function Y(e,t,n){if(null===K.workerScripts||null===K.workerScriptsPath){var i,r,a;if(K.workerScripts){if(i=K.workerScripts[e],!Array.isArray(i))return void n(new Error(\"zip.workerScripts.\"+e+\" is not an array!\"));r=i,a=document.createElement(\"a\"),i=r.map(function(e){return a.href=e,a.href})}else(i=H[e].slice(0))[0]=(K.workerScriptsPath||\"\")+i[0];var o=new Worker(i[0]);o.codecTime=o.crcTime=0,o.postMessage({type:\"importScripts\",scripts:i.slice(1)}),o.addEventListener(\"message\",function e(i){var r=i.data;if(r.error)return o.terminate(),void n(r.error);\"importScripts\"===r.type&&(o.removeEventListener(\"message\",e),o.removeEventListener(\"error\",s),t(o))}),o.addEventListener(\"error\",s)}else n(new Error(\"Either zip.workerScripts or zip.workerScriptsPath may be set, not both.\"));function s(e){o.terminate(),n(e)}}function J(e){console.error(e)}const K={Reader:F,Writer:B,BlobReader:M,Data64URIReader:W,TextReader:T,BlobWriter:L,Data64URIWriter:C,TextWriter:I,createReader:function(e,t,n){e.init(function(){!function(e,t,n){var i=0;function r(){}r.prototype.getData=function(t,r,a,o){var s=this;function l(e,i){o&&!function(e){var t=R(4);return t.view.setUint32(0,e),s.crc32==t.view.getUint32(0)}(i)?n(\"CRC failed.\"):t.getData(function(e){r(e)})}function f(e){n(e||\"Error while reading file data.\")}function u(e){n(e||\"Error while writing file data.\")}e.readUint8Array(s.offset,30,function(r){var d,c=R(r.length,r);1347093252==c.view.getUint32(0)?(q(s,c,4,!1,n),d=s.offset+30+s.filenameLength+s.extraFieldLength,t.init(function(){0===s.compressionMethod?N(s._worker,i++,e,t,d,s.compressedSize,o,l,a,f,u):function(e,t,n,i,r,a,o,s,l,f,u){var d=o?\"output\":\"none\";K.useWebWorkers?P(e,{sn:t,codecClass:\"_zipjs_Inflater\",crcType:d},n,i,r,a,l,s,f,u):Z(new U,n,i,r,a,d,l,s,f,u)}(s._worker,i++,e,t,d,s.compressedSize,o,l,a,f,u)},u)):n(E)},f)};var a={getEntries:function(t){var i=this._worker;!function(t){function i(i,r){e.readUint8Array(e.size-i,i,function(e){for(var n=e.length-22;n>=0;n--)if(80===e[n]&&75===e[n+1]&&5===e[n+2]&&6===e[n+3])return void t(new DataView(e.buffer,n,22));r()},function(){n(D)})}e.size<22?n(E):i(22,function(){i(Math.min(65558,e.size),function(){n(E)})})}(function(a){var o,s;o=a.getUint32(16,!0),s=a.getUint16(8,!0),o<0||o>=e.size?n(E):e.readUint8Array(o,e.size-o,function(e){var a,o,l,f,u=0,d=[],c=R(e.length,e);for(a=0;a0){var i=n.map(function(e){return e.webkitGetAsEntry()}).filter(function(e){return null!==e});i.length>0&&(i[0].name.match(/\\.zip$/)?this._loadZip(n[0].getAsFile()):this._loadNextEntry(new Map,i))}else 1===t.length&&t[0].name.match(/\\.zip$/)&&this._loadZip(t[0]),this._emit(\"drop\",{files:new Map(t.map(function(e){return[e.name,e]}))});else this._fail(\"Required drag-and-drop APIs are not supported in this browser.\")},t._onDragover=function(e){e.stopPropagation(),e.preventDefault(),e.dataTransfer.dropEffect=\"copy\"},t._onSelect=function(e){this._emit(\"dropstart\");var t=[].slice.call(this.inputEl.files);if(1===t.length&&this._isZip(t[0]))this._loadZip(t[0]);else{var n=new Map;t.forEach(function(e){return n.set(e.webkitRelativePath||e.name,e)}),this._emit(\"drop\",{files:n})}},t._loadNextEntry=function(e,t){var n=this,i=t.pop();if(i)if(i.isFile)i.file(function(r){e.set(i.fullPath,r),n._loadNextEntry(e,t)},function(){return console.error(\"Could not load file: %s\",i.fullPath)});else if(i.isDirectory){var r=i.createReader();r.readEntries(function i(a){a.length?(t=t.concat(a),r.readEntries(i)):n._loadNextEntry(e,t)})}else console.warn(\"Unknown asset type: \"+i.fullPath),this._loadNextEntry(e,t);else this._emit(\"drop\",{files:e})},t._loadZip=function(e){var t=this,n=[],i=new Map,r=new be.FS,a=function e(t){t.directory?t.children.forEach(e):\".\"!==t.name[0]&&n.push(new Promise(function(e){t.getData(new K.BlobWriter,function(n){n.name=t.name,i.set(t.getFullname(),n),e()})}))};r.importBlob(e,function(){a(r.root),Promise.all(n).then(function(){t._emit(\"drop\",{files:i,archive:e})})})},t._isZip=function(e){return\"application/zip\"===e.type||e.name.match(/\\.zip$/)},t._fail=function(e){this._emit(\"droperror\",{message:e})},e}();export{xe as SimpleDropzone};\n//# sourceMappingURL=simple-dropzone.module.js.map\n","// Copyright 2024 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Document, WebIO} from '@gltf-transform/core';\nimport {KHRONOS_EXTENSIONS} from '@gltf-transform/extensions';\nimport {prune} from '@gltf-transform/functions';\nimport {SimpleDropzone} from 'simple-dropzone';\n\nimport Module from './built/manifold.js';\nimport {disposeMesh, Properties, readMesh, setupIO, writeMesh} from './gltf-io';\n\n// Set up gltf-transform\nconst io = setupIO(new WebIO());\nio.registerExtensions(KHRONOS_EXTENSIONS);\n\n// Set up Manifold WASM library\nconst wasm = await Module();\nwasm.setup();\nconst {Manifold, Mesh} = wasm;\n\n// UX elements\nconst mv = document.querySelector('model-viewer');\nconst inputEl = document.querySelector('#input') as HTMLInputElement;\nconst downloadButton = document.querySelector('#download') as HTMLButtonElement;\nconst checkbox = document.querySelector('#viewFinal') as HTMLInputElement;\nconst dropCtrl = new SimpleDropzone(mv, inputEl) as any;\n\n// glTF objects in memory\nlet inputGLBurl = '';\nlet outputGLBurl = '';\n// Status of manifoldness of all meshes\nlet allManifold = true;\nlet anyManifold = false;\n\n// The processing is run when a glTF is drag-and-dropped onto this element.\ndropCtrl.on('drop', async ({files}: {files: Map}) => {\n for (const [_path, file] of files) {\n const filename = file.name.toLowerCase();\n if (filename.match(/\\.(gltf|glb)$/)) {\n URL.revokeObjectURL(inputGLBurl);\n inputGLBurl = URL.createObjectURL(file);\n await writeGLB(await readGLB(inputGLBurl));\n updateUI();\n break;\n }\n }\n});\n\n// UI functions\n\nfunction updateUI() {\n if (allManifold) {\n checkbox.checked = true;\n checkbox.disabled = true;\n } else if (anyManifold) {\n checkbox.checked = false;\n checkbox.disabled = false;\n } else {\n checkbox.checked = false;\n checkbox.disabled = true;\n }\n onClick();\n}\n\ncheckbox.onclick = onClick;\n\nfunction onClick() {\n (mv as any).src = checkbox.checked ? outputGLBurl : inputGLBurl;\n downloadButton.disabled = !checkbox.checked;\n};\n\ndownloadButton.onclick = () => {\n const link = document.createElement('a');\n link.download = 'manifold.glb';\n link.href = outputGLBurl;\n link.click();\n};\n\n// Write output glTF using gltf-transform, which contains only the meshes that\n// are manifold, and using the EXT_mesh_manifold extension.\nasync function writeGLB(doc: Document): Promise {\n URL.revokeObjectURL(outputGLBurl);\n if (!anyManifold) {\n return;\n }\n const glb = await io.writeBinary(doc);\n\n const blob = new Blob([glb], {type: 'application/octet-stream'});\n outputGLBurl = URL.createObjectURL(blob);\n}\n\n// Read the glTF ObjectURL and return a gltf-transform document with all the\n// non-manifold meshes stripped out.\nasync function readGLB(url: string): Promise {\n allManifold = false;\n anyManifold = false;\n updateUI();\n allManifold = true;\n const docIn = await io.read(url);\n const nodes = docIn.getRoot().listNodes();\n for (const node of nodes) {\n const mesh = node.getMesh();\n if (!mesh) continue;\n\n const tmp = readMesh(mesh);\n if (!tmp) continue;\n\n const id2properties = new Map();\n const numID = tmp.runProperties.length;\n const firstID = Manifold.reserveIDs(numID);\n tmp.mesh.runOriginalID = new Uint32Array(numID);\n for (let i = 0; i < numID; ++i) {\n tmp.mesh.runOriginalID[i] = firstID + i;\n id2properties.set(firstID + i, tmp.runProperties[i]);\n }\n const manifoldMesh = new Mesh(tmp.mesh);\n disposeMesh(mesh);\n // Make the mesh manifold if it's close.\n manifoldMesh.merge();\n\n try {\n // Test manifoldness - will throw if not.\n const manifold = new Manifold(manifoldMesh);\n // Replace the mesh with a manifold version\n node.setMesh(writeMesh(docIn, manifold.getMesh(), id2properties));\n manifold.delete();\n anyManifold = true;\n } catch (e) {\n console.log(mesh.getName(), e);\n allManifold = false;\n }\n }\n\n // Prune the leftovers after non-manifold mesh removal.\n await docIn.transform(prune());\n\n return docIn;\n}"],"names":["KHR_SUPERCOMPRESSION_NONE","KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT","KHR_DF_VENDORID_KHRONOS","KHR_DF_VERSION","KHR_DF_MODEL_UNSPECIFIED","KHR_DF_MODEL_ETC1S","KHR_DF_MODEL_UASTC","KHR_DF_FLAG_ALPHA_STRAIGHT","KHR_DF_TRANSFER_SRGB","KHR_DF_PRIMARIES_BT709","KHR_DF_SAMPLE_DATATYPE_SIGNED","VK_FORMAT_UNDEFINED","KTX2Container","BufferReader","data","byteOffset","byteLength","littleEndian","value","left","right","len","bytes","maxByteLength","term","KTX2_ID","decodeText","buffer","read","id","container","headerByteLength","headerReader","levelCount","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","levelByteLength","levelReader","i","dfdReader","dfd","sampleStart","sampleWords","numSamples","sample","kvdReader","keyValueByteLength","keyData","key","text","kvPadding","sgdReader","endpointCount","selectorCount","endpointsByteLength","selectorsByteLength","tablesByteLength","extendedByteLength","imageDescs","endpointsByteOffset","selectorsByteOffset","tablesByteOffset","extendedByteOffset","endpointsData","selectorsData","tablesData","extendedData","I","N","R","y","A","S","C","M","O","_","w","D","b","F","j","v","k","B","G","L$1","e","t","L","U","V$1","s","n","r","P","X","H","z","V","$","q","K","u","Y","Q","l","W","o","a","J","Z","ee","c","te","se","ne$1","f","g","h","p","x","d","T","m","E","ne","re","oe$1","ae","ie$1","oe","ie","ce","ue$1","le$1","ue","le","he","fe","ge","pe","xe","de","Te","me","Ee","Ie","Ne","Re","ye","Ae","Se","Ce","Me","Oe","_e","we$1","we","De","be$1","be","Fe","je","ve","ke","Be","Ge","Le","Ue","Ve","Pe","Xe","He","ze","$e","qe","Ke","Ye","Qe","We","Je","Ze","et","tt","st","nt","rt","ot","it","at","ct","ut","lt","ht","ft","gt","pt","xt","dt","Tt","mt","Et","It","Nt","Rt","yt","At","St","Ct","Mt","Ot","_t","wt","Dt","bt","Ft","jt","vt","kt","Bt","Gt","Lt","Ut","Vt","Pt","Xt","Ht","zt","$t","qt","Kt","Yt","Qt","Wt","Jt","io","setupIO","WebIO","KHRONOS_EXTENSIONS","wasm","Module","Manifold","Mesh","mv","inputEl","downloadButton","checkbox","dropCtrl","SimpleDropzone","inputGLBurl","outputGLBurl","allManifold","anyManifold","files","_path","file","writeGLB","readGLB","updateUI","onClick","link","doc","glb","blob","url","docIn","nodes","node","mesh","tmp","readMesh","id2properties","numID","firstID","manifoldMesh","disposeMesh","manifold","writeMesh","prune"],"mappings":"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AG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,SAASC,GAAG,CAAC,I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,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEA,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAEA,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,EAAEA,EAAE,OAAO,SAASA,EAAE,CAAC,OAAOA,EAAE,IAAID,GAAEC,CAAC,EAAED,GAAE,KAAKC,IAAI,EAAE,CAAC,EAAEA,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEA,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAEK,GAAE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,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AAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAET,GAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,EAAE,KAAK,EAAErC,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/assets/manifold-0d01590b.wasm b/assets/manifold-0d01590b.wasm new file mode 100644 index 000000000..eaebbe6ca Binary files /dev/null and b/assets/manifold-0d01590b.wasm differ diff --git a/assets/manifold.js b/assets/manifold.js new file mode 100644 index 000000000..7d0735dbd --- /dev/null +++ b/assets/manifold.js @@ -0,0 +1,23 @@ +const Ii="modulepreload",Vi=function(be){return"/"+be},Tt={},zi=function(Ve,he,c){if(!he||he.length===0)return Ve();const ke=document.getElementsByTagName("link");return Promise.all(he.map(L=>{if(L=Vi(L),L in Tt)return;Tt[L]=!0;const q=L.endsWith(".css"),lr=q?'[rel="stylesheet"]':"";if(!!c)for(let J=ke.length-1;J>=0;J--){const se=ke[J];if(se.href===L&&(!q||se.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${L}"]${lr}`))return;const H=document.createElement("link");if(H.rel=q?"stylesheet":Ii,q||(H.as="script",H.crossOrigin=""),H.href=L,document.head.appendChild(H),q)return new Promise((J,se)=>{H.addEventListener("load",J),H.addEventListener("error",()=>se(new Error(`Unable to preload CSS for ${L}`)))})})).then(()=>Ve()).catch(L=>{const q=new Event("vite:preloadError",{cancelable:!0});if(q.payload=L,window.dispatchEvent(q),!q.defaultPrevented)throw L})};var Bi=(()=>{var be=import.meta.url;return async function(Ve={}){var he,c=Ve,ke,L,q=new Promise((e,r)=>{ke=e,L=r}),lr=typeof window=="object",Pe=typeof importScripts=="function",H=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(H){const{createRequire:e}=await zi(()=>import("./__vite-browser-external.js"),[]);var J=e(import.meta.url)}var se=!1;c.setup=function(){if(se)return;se=!0;function e(f,l,v=m=>m){if(l)for(let m of l)f.push_back(v(m));return f}function r(f,l=v=>v){const v=[],m=f.size();for(let g=0;gv){const v=[],m=f.size();for(let g=0;ge(new c.Vector_vec2,l,v=>v instanceof Array?{x:v[0],y:v[1]}:v))}function o(f){for(let l=0;lf.min[l]),max:["x","y"].map(l=>f.max[l])}},c.CrossSection.prototype.offset=function(f,l="Square",v=2,m=0){return this._Offset(f,d(l),v,m)},c.CrossSection.prototype.extrude=function(f,l=0,v=0,m=[1,1],g=!1){m=i([m]);const D=c._Extrude(this._ToPolygons(),f,l,v,m);return g?D.translate([0,0,-f/2]):D},c.CrossSection.prototype.revolve=function(f=0,l=360){return c._Revolve(this._ToPolygons(),f,l)},c.CrossSection.prototype.add=function(f){return this._add(p(f))},c.CrossSection.prototype.subtract=function(f){return this._subtract(p(f))},c.CrossSection.prototype.intersect=function(f){return this._intersect(p(f))},c.CrossSection.prototype.toPolygons=function(){const f=this._ToPolygons(),l=t(f);return f.delete(),l},c.Manifold.prototype.smoothOut=function(f=60,l=0){return this._SmoothOut(f,l)},c.Manifold.prototype.warp=function(f){const l=We(function(g){const D=X(g,"float"),T=X(g+4,"float"),Y=X(g+8,"float"),U=[D,T,Y];f(U),pe(g,U[0],"float"),pe(g+4,U[1],"float"),pe(g+8,U[2],"float")},"vi"),v=this._Warp(l);Ie(l);const m=v.status();if(m.value!==0)throw new c.ManifoldError(m.value);return v},c.Manifold.prototype.calculateNormals=function(f,l=60){return this._CalculateNormals(f,l)},c.Manifold.prototype.setProperties=function(f,l){const v=this.numProp(),m=We(function(D,T,Y){const U=[];for(let I=0;If.min[l]),max:["x","y","z"].map(l=>f.max[l])}};class y{constructor({numProp:l=3,triVerts:v=new Uint32Array,vertProperties:m=new Float32Array,mergeFromVert:g,mergeToVert:D,runIndex:T,runOriginalID:Y,faceID:U,halfedgeTangent:ge,runTransform:Ee}={}){this.numProp=l,this.triVerts=v,this.vertProperties=m,this.mergeFromVert=g,this.mergeToVert=D,this.runIndex=T,this.runOriginalID=Y,this.faceID=U,this.halfedgeTangent=ge,this.runTransform=Ee}get numTri(){return this.triVerts.length/3}get numVert(){return this.vertProperties.length/this.numProp}get numRun(){return this.runOriginalID.length}merge(){const{changed:l,mesh:v}=c._Merge(this);return Object.assign(this,{...v}),l}verts(l){return this.triVerts.subarray(3*l,3*(l+1))}position(l){return this.vertProperties.subarray(numProp*l,numProp*l+3)}extras(l){return this.vertProperties.subarray(numProp*l+3,numProp*(l+1))}tangent(l){return this.halfedgeTangent.subarray(4*l,4*(l+1))}transform(l){const v=new Array(16);for(const m of[0,1,2,3])for(const g of[0,1,2])v[4*m+g]=this.runTransform[12*l+3*m+g];return v[15]=1,v}}c.Mesh=y,c.Manifold.prototype.getMesh=function(f=[0,0,0]){return f instanceof Array&&(f={0:f[0],1:f[1],2:f[2]}),new y(this._GetMeshJS(f))},c.ManifoldError=function(l,...v){let m="Unknown error";switch(l){case c.status.NonFiniteVertex.value:m="Non-finite vertex";break;case c.status.NotManifold.value:m="Not manifold";break;case c.status.VertexOutOfBounds.value:m="Vertex index out of bounds";break;case c.status.PropertiesWrongLength.value:m="Properties have wrong length";break;case c.status.MissingPositionProperties.value:m="Less than three properties";break;case c.status.MergeVectorsDifferentLengths.value:m="Merge vectors have different lengths";break;case c.status.MergeIndexOutOfBounds.value:m="Merge index out of bounds";break;case c.status.TransformWrongLength.value:m="Transform vector has wrong length";break;case c.status.RunIndexWrongLength.value:m="Run index vector has wrong length";break;case c.status.FaceIDWrongLength.value:m="Face ID vector has wrong length";case c.status.InvalidConstruction.value:m="Manifold constructed with invalid parameters"}const g=Error.apply(this,[m,...v]);g.name=this.name="ManifoldError",this.message=g.message,this.stack=g.stack,this.code=l},c.ManifoldError.prototype=Object.create(Error.prototype,{constructor:{value:c.ManifoldError,writable:!0,configurable:!0}}),c.CrossSection=function(f,l="Positive"){const v=n(f),m=new h(v,u(l));return o(v),m},c.CrossSection.ofPolygons=function(f,l="Positive"){return new c.CrossSection(f,l)},c.CrossSection.square=function(...f){let l;f.length==0?l={x:1,y:1}:typeof f[0]=="number"?l={x:f[0],y:f[0]}:l=i(f);const v=f[1]||!1;return c._Square(l,v)},c.CrossSection.circle=function(f,l=0){return c._Circle(f,l)};function _(f){return function(...l){l.length==1&&(l=l[0]);const v=new c.Vector_crossSection;for(const g of l)v.push_back(p(g));const m=c["_crossSection"+f](v);return v.delete(),m}}c.CrossSection.compose=_("Compose"),c.CrossSection.union=_("UnionN"),c.CrossSection.difference=_("DifferenceN"),c.CrossSection.intersection=_("IntersectionN");function w(f,l){e(f,l,v=>v instanceof Array?{x:v[0],y:v[1]}:v)}c.CrossSection.hull=function(...f){f.length==1&&(f=f[0]);let l=new c.Vector_vec2;for(const m of f)if(m instanceof h)c._crossSectionCollectVertices(l,m);else if(m instanceof Array&&m.length==2&&typeof m[0]=="number")l.push_back({x:m[0],y:m[1]});else if(m.x)l.push_back(m);else{const D=m[0].length==2&&typeof m[0][0]=="number"||m[0].x?[m]:m;for(const T of D)w(l,T)}const v=c._crossSectionHullPoints(l);return l.delete(),v},c.CrossSection.prototype=Object.create(h.prototype),Object.defineProperty(c.CrossSection,Symbol.hasInstance,{get:()=>f=>f instanceof h});const E=c.Manifold;c.Manifold=function(f){const l=new E(f),v=l.status();if(v.value!==0)throw new c.ManifoldError(v.value);return l},c.Manifold.ofMesh=function(f){return new c.Manifold(f)},c.Manifold.tetrahedron=function(){return c._Tetrahedron()},c.Manifold.cube=function(...f){let l;f.length==0?l={x:1,y:1,z:1}:typeof f[0]=="number"?l={x:f[0],y:f[0],z:f[0]}:l=s(f);const v=f[1]||!1;return c._Cube(l,v)},c.Manifold.cylinder=function(f,l,v=-1,m=0,g=!1){return c._Cylinder(f,l,v,m,g)},c.Manifold.sphere=function(f,l=0){return c._Sphere(f,l)},c.Manifold.smooth=function(f,l=[]){const v=new c.Vector_smoothness;e(v,l);const m=c._Smooth(f,v);return v.delete(),m},c.Manifold.extrude=function(f,l,v=0,m=0,g=[1,1],D=!1){return(f instanceof h?f:c.CrossSection(f,"Positive")).extrude(l,v,m,g,D)},c.Manifold.revolve=function(f,l=0,v=360){return(f instanceof h?f:c.CrossSection(f,"Positive")).revolve(l,v)},c.Manifold.reserveIDs=function(f){return c._ReserveIDs(f)},c.Manifold.compose=function(f){const l=new c.Vector_manifold;e(l,f);const v=c._manifoldCompose(l);return l.delete(),v};function A(f){return function(...l){l.length==1&&(l=l[0]);const v=new c.Vector_manifold;for(const g of l)v.push_back(g);const m=c["_manifold"+f+"N"](v);return v.delete(),m}}c.Manifold.union=A("Union"),c.Manifold.difference=A("Difference"),c.Manifold.intersection=A("Intersection"),c.Manifold.levelSet=function(f,l,v,m=0,g=-1){const D={min:{x:l.min[0],y:l.min[1],z:l.min[2]},max:{x:l.max[0],y:l.max[1],z:l.max[2]}},T=We(function(U){const ge=X(U,"float"),Ee=X(U+4,"float"),I=X(U+8,"float");return f([ge,Ee,I])},"fi"),Y=c._LevelSet(T,D,v,m,g);return Ie(T),Y};function x(f,l){e(f,l,v=>v instanceof Array?{x:v[0],y:v[1],z:v[2]}:v)}c.Manifold.hull=function(...f){f.length==1&&(f=f[0]);let l=new c.Vector_vec3;for(const m of f)m instanceof E?c._manifoldCollectVertices(l,m):m instanceof Array&&m.length==3&&typeof m[0]=="number"?l.push_back({x:m[0],y:m[1],z:m[2]}):m.x?l.push_back(m):x(l,m);const v=c._manifoldHullPoints(l);return l.delete(),v},c.Manifold.prototype=Object.create(E.prototype),Object.defineProperty(c.Manifold,Symbol.hasInstance,{get:()=>f=>f instanceof E}),c.triangulate=function(f,l=-1){const v=n(f),m=r(c._Triangulate(v,l),g=>[g[0],g[1],g[2]]);return o(v),m}};var jr=Object.assign({},c),fr="./this.program",G="";function $t(e){return c.locateFile?c.locateFile(e,G):G+e}var Ce,ze,Ue;if(H){var cr=J("fs"),Wr=J("path");G=J("url").fileURLToPath(new URL("./",self.location)),Ce=(e,r)=>(e=Ye(e)?new URL(e):Wr.normalize(e),cr.readFileSync(e,r?void 0:"utf8")),Ue=e=>{var r=Ce(e,!0);return r.buffer||(r=new Uint8Array(r)),r},ze=(e,r,t,n=!0)=>{e=Ye(e)?new URL(e):Wr.normalize(e),cr.readFile(e,n?void 0:"utf8",(o,i)=>{o?t(o):r(n?i.buffer:i)})},!c.thisProgram&&process.argv.length>1&&(fr=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else(lr||Pe)&&(Pe?G=self.location.href:typeof document<"u"&&document.currentScript&&(G=document.currentScript.src),be&&(G=be),G.startsWith("blob:")?G="":G=G.substr(0,G.replace(/[?#].*/,"").lastIndexOf("/")+1),Ce=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},Pe&&(Ue=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),ze=(e,r,t)=>{if(Ye(e)){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{if(n.status==200||n.status==0&&n.response){r(n.response);return}t()},n.onerror=t,n.send(null);return}fetch(e,{credentials:"same-origin"}).then(o=>o.ok?o.arrayBuffer():Promise.reject(new Error(o.status+" : "+o.url))).then(r,t)});var dr=c.print||console.log.bind(console),ie=c.printErr||console.error.bind(console);Object.assign(c,jr),jr=null,c.arguments&&c.arguments,c.thisProgram&&(fr=c.thisProgram),c.quit&&c.quit;var Se;c.wasmBinary&&(Se=c.wasmBinary);var Le,Ir=!1,W,N,ae,Te,$,F,Be,Ne;function Vr(){var e=Le.buffer;c.HEAP8=W=new Int8Array(e),c.HEAP16=ae=new Int16Array(e),c.HEAPU8=N=new Uint8Array(e),c.HEAPU16=Te=new Uint16Array(e),c.HEAP32=$=new Int32Array(e),c.HEAPU32=F=new Uint32Array(e),c.HEAPF32=Be=new Float32Array(e),c.HEAPF64=Ne=new Float64Array(e)}var zr=[],Ur=[],Lr=[];function Ft(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Dt(c.preRun.shift());hr(zr)}function Mt(){!c.noFSInit&&!a.init.initialized&&a.init(),a.ignorePermissions=!1,hr(Ur)}function At(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)xt(c.postRun.shift());hr(Lr)}function Dt(e){zr.unshift(e)}function Rt(e){Ur.unshift(e)}function xt(e){Lr.unshift(e)}var ue=0,$e=null;function Ui(e){return e}function vr(e){ue++,c.monitorRunDependencies?.(ue)}function He(e){if(ue--,c.monitorRunDependencies?.(ue),ue==0&&$e){var r=$e;$e=null,r()}}function ee(e){c.onAbort?.(e),e="Aborted("+e+")",ie(e),Ir=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw L(r),r}var Ot="data:application/octet-stream;base64,",Br=e=>e.startsWith(Ot),Ye=e=>e.startsWith("file://");function jt(){if(c.locateFile){var e="manifold.wasm";return Br(e)?e:$t(e)}return new URL("/assets/manifold.wasm",self.location).href}var qe;function Nr(e){if(e==qe&&Se)return new Uint8Array(Se);if(Ue)return Ue(e);throw"both async and sync fetching of the wasm failed"}function Wt(e){return Se?Promise.resolve().then(()=>Nr(e)):new Promise((r,t)=>{ze(e,n=>r(new Uint8Array(n)),n=>{try{r(Nr(e))}catch(o){t(o)}})})}function Hr(e,r,t){return Wt(e).then(n=>WebAssembly.instantiate(n,r)).then(t,n=>{ie(`failed to asynchronously prepare wasm: ${n}`),ee(n)})}function It(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Br(r)&&!Ye(r)&&!H&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(o=>{var i=WebAssembly.instantiateStreaming(o,t);return i.then(n,function(s){return ie(`wasm streaming compile failed: ${s}`),ie("falling back to ArrayBuffer instantiation"),Hr(r,t,n)})}):Hr(r,t,n)}function Vt(){return{a:Go}}function zt(){var e=Vt();function r(n,o){return j=n.exports,Le=j.Ma,Vr(),ce=j.Pa,Rt(j.Na),He(),j}vr();function t(n){r(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(e,r)}catch(n){ie(`Module.instantiateWasm callback failed with error: ${n}`),L(n)}return qe||(qe=jt()),It(Se,qe,e,t).catch(L),{}}var M,V,hr=e=>{for(;e.length>0;)e.shift()(c)};function X(e,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":return W[e];case"i8":return W[e];case"i16":return ae[e>>1];case"i32":return $[e>>2];case"i64":ee("to do getValue(i64) use WASM_BIGINT");case"float":return Be[e>>2];case"double":return Ne[e>>3];case"*":return F[e>>2];default:ee(`invalid type for getValue: ${r}`)}}c.noExitRuntime;function pe(e,r,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":W[e]=r;break;case"i8":W[e]=r;break;case"i16":ae[e>>1]=r;break;case"i32":$[e>>2]=r;break;case"i64":ee("to do setValue(i64) use WASM_BIGINT");case"float":Be[e>>2]=r;break;case"double":Ne[e>>3]=r;break;case"*":F[e>>2]=r;break;default:ee(`invalid type for setValue: ${t}`)}}var P=e=>_t(e),C=()=>wt(),Ge=[],Xe=0,Ut=e=>{var r=new pr(e);return r.get_caught()||(r.set_caught(!0),Xe--),r.set_rethrown(!1),Ge.push(r),Et(r.excPtr),r.get_exception_ptr()},re=0,Lt=()=>{k(0,0);var e=Ge.pop();gt(e.excPtr),re=0};class pr{constructor(r){this.excPtr=r,this.ptr=r-24}set_type(r){F[this.ptr+4>>2]=r}get_type(){return F[this.ptr+4>>2]}set_destructor(r){F[this.ptr+8>>2]=r}get_destructor(){return F[this.ptr+8>>2]}set_caught(r){r=r?1:0,W[this.ptr+12]=r}get_caught(){return W[this.ptr+12]!=0}set_rethrown(r){r=r?1:0,W[this.ptr+13]=r}get_rethrown(){return W[this.ptr+13]!=0}init(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)}set_adjusted_ptr(r){F[this.ptr+16>>2]=r}get_adjusted_ptr(){return F[this.ptr+16>>2]}get_exception_ptr(){var r=kt(this.get_type());if(r)return F[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Bt=e=>{throw re||(re=e),re},Ke=e=>yt(e),Yr=e=>{var r=re;if(!r)return Ke(0),0;var t=new pr(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return Ke(0),r;for(var o of e){if(o===0||o===n)break;var i=t.ptr+16;if(bt(o,n,i))return Ke(o),r}return Ke(n),r},Nt=()=>Yr([]),Ht=e=>Yr([e]),Yt=()=>{var e=Ge.pop();e||ee("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(Ge.push(e),e.set_rethrown(!0),e.set_caught(!1),Xe++),re=r,re},qt=(e,r,t)=>{var n=new pr(e);throw n.init(r,t),re=e,Xe++,re},Gt=()=>Xe,Xt=()=>{ee("")},Je={},mr=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function Fe(e){return this.fromWireType(F[e>>2])}var me={},le={},Ze={},qr,Qe=e=>{throw new qr(e)},fe=(e,r,t)=>{e.forEach(function(u){Ze[u]=r});function n(u){var d=t(u);d.length!==e.length&&Qe("Mismatched type converter count");for(var h=0;h{le.hasOwnProperty(u)?o[d]=le[u]:(i.push(u),me.hasOwnProperty(u)||(me[u]=[]),me[u].push(()=>{o[d]=le[u],++s,s===i.length&&n(o)}))}),i.length===0&&n(o)},Kt=e=>{var r=Je[e];delete Je[e];var t=r.rawConstructor,n=r.rawDestructor,o=r.fields,i=o.map(s=>s.getterReturnType).concat(o.map(s=>s.setterArgumentType));fe([e],i,s=>{var u={};return o.forEach((d,h)=>{var p=d.fieldName,y=s[h],_=d.getter,w=d.getterContext,E=s[h+o.length],A=d.setter,x=d.setterContext;u[p]={read:f=>y.fromWireType(_(w,f)),write:(f,l)=>{var v=[];A(x,f,E.toWireType(v,l)),mr(v)}}}),[{name:r.name,fromWireType:d=>{var h={};for(var p in u)h[p]=u[p].read(d);return n(d),h},toWireType:(d,h)=>{for(var p in u)if(!(p in h))throw new TypeError(`Missing field: "${p}"`);var y=t();for(p in u)u[p].write(y,h[p]);return d!==null&&d.push(n,y),y},argPackAdvance:Q,readValueFromPointer:Fe,destructorFunction:n}]})},Jt=(e,r,t,n,o)=>{},Zt=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);Gr=e},Gr,B=e=>{for(var r="",t=e;N[t];)r+=Gr[N[t++]];return r},ye,R=e=>{throw new ye(e)};function Qt(e,r,t={}){var n=r.name;if(e||R(`type "${n}" must have a positive integer typeid pointer`),le.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;R(`Cannot register type '${n}' twice`)}if(le[e]=r,delete Ze[e],me.hasOwnProperty(e)){var o=me[e];delete me[e],o.forEach(i=>i())}}function Z(e,r,t={}){if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Qt(e,r,t)}var Q=8,en=(e,r,t,n)=>{r=B(r),Z(e,{name:r,fromWireType:function(o){return!!o},toWireType:function(o,i){return i?t:n},argPackAdvance:Q,readValueFromPointer:function(o){return this.fromWireType(N[o])},destructorFunction:null})},rn=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),yr=e=>{function r(t){return t.$$.ptrType.registeredClass.name}R(r(e)+" instance already deleted")},_r=!1,Xr=e=>{},tn=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Kr=e=>{e.count.value-=1;var r=e.count.value===0;r&&tn(e)},Jr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=Jr(e,r,t.baseClass);return n===null?null:t.downcast(n)},Zr={},nn=()=>Object.keys(De).length,on=()=>{var e=[];for(var r in De)De.hasOwnProperty(r)&&e.push(De[r]);return e},Me=[],wr=()=>{for(;Me.length;){var e=Me.pop();e.$$.deleteScheduled=!1,e.delete()}},Ae,an=e=>{Ae=e,Me.length&&Ae&&Ae(wr)},sn=()=>{c.getInheritedInstanceCount=nn,c.getLiveInheritedInstances=on,c.flushPendingDeletes=wr,c.setDelayFunction=an},De={},un=(e,r)=>{for(r===void 0&&R("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},ln=(e,r)=>(r=un(e,r),De[r]),er=(e,r)=>{(!r.ptrType||!r.ptr)&&Qe("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&Qe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},Re(Object.create(e,{$$:{value:r,writable:!0}}))};function fn(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=ln(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?er(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):er(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i=this.registeredClass.getActualType(r),s=Zr[i];if(!s)return o.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var d=Jr(r,this.registeredClass,u.registeredClass);return d===null?o.call(this):this.isSmartPointer?er(u.registeredClass.instancePrototype,{ptrType:u,ptr:d,smartPtrType:this,smartPtr:e}):er(u.registeredClass.instancePrototype,{ptrType:u,ptr:d})}var Re=e=>typeof FinalizationRegistry>"u"?(Re=r=>r,e):(_r=new FinalizationRegistry(r=>{Kr(r.$$)}),Re=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var o={$$:t};_r.register(r,o,r)}return r},Xr=r=>_r.unregister(r),Re(e)),cn=()=>{Object.assign(rr.prototype,{isAliasOf(e){if(!(this instanceof rr)||!(e instanceof rr))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o},clone(){if(this.$$.ptr||yr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Re(Object.create(Object.getPrototypeOf(this),{$$:{value:rn(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||yr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&R("Object already scheduled for deletion"),Xr(this),Kr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||yr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&R("Object already scheduled for deletion"),Me.push(this),Me.length===1&&Ae&&Ae(wr),this.$$.deleteScheduled=!0,this}})};function rr(){}var _e=(e,r)=>Object.defineProperty(r,"name",{value:e}),Qr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(...o){return e[r].overloadTable.hasOwnProperty(o.length)||R(`Function '${t}' called with an invalid number of arguments (${o.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[o.length].apply(this,o)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},gr=(e,r,t)=>{c.hasOwnProperty(e)?((t===void 0||c[e].overloadTable!==void 0&&c[e].overloadTable[t]!==void 0)&&R(`Cannot register public name '${e}' twice`),Qr(c,e,e),c.hasOwnProperty(t)&&R(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),c[e].overloadTable[t]=r):(c[e]=r,t!==void 0&&(c[e].numArguments=t))},dn=48,vn=57,hn=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=dn&&r<=vn?`_${e}`:e};function pn(e,r,t,n,o,i,s,u){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=i,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Er=(e,r,t)=>{for(;r!==t;)r.upcast||R(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function mn(e,r){if(r===null)return this.isReference&&R(`null is not a valid ${this.name}`),0;r.$$||R(`Cannot pass "${Sr(r)}" as a ${this.name}`),r.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Er(r.$$.ptr,t,this.registeredClass);return n}function yn(e,r){var t;if(r===null)return this.isReference&&R(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&R(`Cannot pass "${Sr(r)}" as a ${this.name}`),r.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&R(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=Er(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&R("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:R(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,z.toHandle(()=>o.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:R("Unsupporting sharing policy")}return t}function _n(e,r){if(r===null)return this.isReference&&R(`null is not a valid ${this.name}`),0;r.$$||R(`Cannot pass "${Sr(r)}" as a ${this.name}`),r.$$.ptr||R(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&R(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Er(r.$$.ptr,t,this.registeredClass);return n}var wn=()=>{Object.assign(tr.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor?.(e)},argPackAdvance:Q,readValueFromPointer:Fe,fromWireType:fn})};function tr(e,r,t,n,o,i,s,u,d,h,p){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=i,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=d,this.rawShare=h,this.rawDestructor=p,!o&&r.baseClass===void 0?n?(this.toWireType=mn,this.destructorFunction=null):(this.toWireType=_n,this.destructorFunction=null):this.toWireType=yn}var et=(e,r,t)=>{c.hasOwnProperty(e)||Qe("Replacing nonexistent public symbol"),c[e].overloadTable!==void 0&&t!==void 0?c[e].overloadTable[t]=r:(c[e]=r,c[e].argCount=t)},gn=(e,r,t)=>{e=e.replace(/p/g,"i");var n=c["dynCall_"+e];return n(r,...t)},xe=[],ce,b=e=>{var r=xe[e];return r||(e>=xe.length&&(xe.length=e+1),xe[e]=r=ce.get(e)),r},En=(e,r,t=[])=>{if(e.includes("j"))return gn(e,r,t);var n=b(r)(...t);return n},bn=(e,r)=>(...t)=>En(e,r,t),K=(e,r)=>{e=B(e);function t(){return e.includes("j")?bn(e,r):b(r)}var n=t();return typeof n!="function"&&R(`unknown function pointer with signature ${e}: ${r}`),n},kn=(e,r)=>{var t=_e(r,function(n){this.name=r,this.message=n;var o=new Error(n).stack;o!==void 0&&(this.stack=this.toString()+` +`+o.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},rt,tt=e=>{var r=mt(e),t=B(r);return oe(r),t},nr=(e,r)=>{var t=[],n={};function o(i){if(!n[i]&&!le[i]){if(Ze[i]){Ze[i].forEach(o);return}t.push(i),n[i]=!0}}throw r.forEach(o),new rt(`${e}: `+t.map(tt).join([", "]))},Pn=(e,r,t,n,o,i,s,u,d,h,p,y,_)=>{p=B(p),i=K(o,i),u&&=K(s,u),h&&=K(d,h),_=K(y,_);var w=hn(p);gr(w,function(){nr(`Cannot construct ${p} due to unbound types`,[n])}),fe([e,r,t],n?[n]:[],E=>{E=E[0];var A,x;n?(A=E.registeredClass,x=A.instancePrototype):x=rr.prototype;var f=_e(p,function(...T){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+p);if(v.constructor_body===void 0)throw new ye(p+" has no accessible constructor");var Y=v.constructor_body[T.length];if(Y===void 0)throw new ye(`Tried to invoke ctor of ${p} with invalid number of parameters (${T.length}) - expected (${Object.keys(v.constructor_body).toString()}) parameters instead!`);return Y.apply(this,T)}),l=Object.create(x,{constructor:{value:f}});f.prototype=l;var v=new pn(p,f,l,_,A,i,u,h);v.baseClass&&(v.baseClass.__derivedClasses??=[],v.baseClass.__derivedClasses.push(v));var m=new tr(p,v,!0,!1,!1),g=new tr(p+"*",v,!1,!1,!1),D=new tr(p+" const*",v,!1,!0,!1);return Zr[e]={pointerType:g,constPointerType:D},et(w,f),[m,g,D]})},br=(e,r)=>{for(var t=[],n=0;n>2]);return t};function nt(e){for(var r=1;r0?", ":"")+u),h+=(t||n?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+`); +`,o)h+=`runDestructors(destructors); +`;else for(var d=r?1:2;d{var s=br(r,t);o=K(n,o),fe([],[e],u=>{u=u[0];var d=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[r-1]!==void 0)throw new ye(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[r-1]=()=>{nr(`Cannot construct ${u.name} due to unbound types`,s)},fe([],s,h=>(h.splice(1,0,null),u.registeredClass.constructor_body[r-1]=kr(d,h,null,o,i),[])),[]})},it=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},Tn=(e,r,t,n,o,i,s,u,d)=>{var h=br(t,n);r=B(r),r=it(r),i=K(o,i),fe([],[e],p=>{p=p[0];var y=`${p.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),u&&p.registeredClass.pureVirtualFunctions.push(r);function _(){nr(`Cannot call ${y} due to unbound types`,h)}var w=p.registeredClass.instancePrototype,E=w[r];return E===void 0||E.overloadTable===void 0&&E.className!==p.name&&E.argCount===t-2?(_.argCount=t-2,_.className=p.name,w[r]=_):(Qr(w,r,y),w[r].overloadTable[t-2]=_),fe([],h,A=>{var x=kr(y,A,p,i,s,d);return w[r].overloadTable===void 0?(x.argCount=t-2,w[r]=x):w[r].overloadTable[t-2]=x,[]}),[]})},Pr=[],te=[],Cr=e=>{e>9&&--te[e+1]===0&&(te[e]=void 0,Pr.push(e))},$n=()=>te.length/2-5-Pr.length,Fn=()=>{te.push(0,1,void 0,1,null,1,!0,1,!1,1),c.count_emval_handles=$n},z={toValue:e=>(e||R("Cannot use deleted val. handle = "+e),te[e]),toHandle:e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{const r=Pr.pop()||te.length;return te[r]=e,te[r+1]=1,r}}}},Mn={name:"emscripten::val",fromWireType:e=>{var r=z.toValue(e);return Cr(e),r},toWireType:(e,r)=>z.toHandle(r),argPackAdvance:Q,readValueFromPointer:Fe,destructorFunction:null},at=e=>Z(e,Mn),An=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(W[n])}:function(n){return this.fromWireType(N[n])};case 2:return t?function(n){return this.fromWireType(ae[n>>1])}:function(n){return this.fromWireType(Te[n>>1])};case 4:return t?function(n){return this.fromWireType($[n>>2])}:function(n){return this.fromWireType(F[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Dn=(e,r,t,n)=>{r=B(r);function o(){}o.values={},Z(e,{name:r,constructor:o,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,s)=>s.value,argPackAdvance:Q,readValueFromPointer:An(r,t,n),destructorFunction:null}),gr(r,o)},or=(e,r)=>{var t=le[e];return t===void 0&&R(`${r} has unknown type ${tt(e)}`),t},Rn=(e,r,t)=>{var n=or(e,"enum");r=B(r);var o=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:_e(`${n.name}_${r}`,function(){})}});o.values[t]=i,o[r]=i},Sr=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},xn=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(Be[t>>2])};case 8:return function(t){return this.fromWireType(Ne[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},On=(e,r,t)=>{r=B(r),Z(e,{name:r,fromWireType:n=>n,toWireType:(n,o)=>o,argPackAdvance:Q,readValueFromPointer:xn(r,t),destructorFunction:null})},jn=(e,r,t,n,o,i,s)=>{var u=br(r,t);e=B(e),e=it(e),o=K(n,o),gr(e,function(){nr(`Cannot call ${e} due to unbound types`,u)},r-1),fe([],u,d=>{var h=[d[0],null].concat(d.slice(1));return et(e,kr(e,h,null,o,i,s),r-1),[]})},Wn=(e,r,t)=>{switch(r){case 1:return t?n=>W[n]:n=>N[n];case 2:return t?n=>ae[n>>1]:n=>Te[n>>1];case 4:return t?n=>$[n>>2]:n=>F[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},In=(e,r,t,n,o)=>{r=B(r);var i=p=>p;if(n===0){var s=32-8*t;i=p=>p<>>s}var u=r.includes("unsigned"),d=(p,y)=>{},h;u?h=function(p,y){return d(y,this.name),y>>>0}:h=function(p,y){return d(y,this.name),y},Z(e,{name:r,fromWireType:i,toWireType:h,argPackAdvance:Q,readValueFromPointer:Wn(r,t,n!==0),destructorFunction:null})},Vn=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],o=n[r];function i(s){var u=F[s>>2],d=F[s+4>>2];return new o(W.buffer,d,u)}t=B(t),Z(e,{name:t,fromWireType:i,argPackAdvance:Q,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},zn=(e,r)=>{at(e)},Tr=(e,r,t,n)=>{if(!(n>0))return 0;for(var o=t,i=t+n-1,s=0;s=55296&&u<=57343){var d=e.charCodeAt(++s);u=65536+((u&1023)<<10)|d&1023}if(u<=127){if(t>=i)break;r[t++]=u}else if(u<=2047){if(t+1>=i)break;r[t++]=192|u>>6,r[t++]=128|u&63}else if(u<=65535){if(t+2>=i)break;r[t++]=224|u>>12,r[t++]=128|u>>6&63,r[t++]=128|u&63}else{if(t+3>=i)break;r[t++]=240|u>>18,r[t++]=128|u>>12&63,r[t++]=128|u>>6&63,r[t++]=128|u&63}}return r[t]=0,t-o},Un=(e,r,t)=>Tr(e,N,r,t),$r=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},st=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,we=(e,r,t)=>{for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&st)return st.decode(e.subarray(r,o));for(var i="";r>10,56320|h&1023)}}return i},ir=(e,r)=>e?we(N,e,r):"",Ln=(e,r)=>{r=B(r);var t=r==="std::string";Z(e,{name:r,fromWireType(n){var o=F[n>>2],i=n+4,s;if(t)for(var u=i,d=0;d<=o;++d){var h=i+d;if(d==o||N[h]==0){var p=h-u,y=ir(u,p);s===void 0?s=y:(s+=String.fromCharCode(0),s+=y),u=h+1}}else{for(var _=new Array(o),d=0;d>2]=i,t&&s)Un(o,d,i+1);else if(s)for(var h=0;h255&&(oe(d),R("String has UTF-16 code units that do not fit in 8 bits")),N[d+h]=p}else for(var h=0;h{for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&Te[n];)++n;if(t=n<<1,t-e>32&&ut)return ut.decode(N.subarray(e,t));for(var i="",s=0;!(s>=r/2);++s){var u=ae[e+s*2>>1];if(u==0)break;i+=String.fromCharCode(u)}return i},Nn=(e,r,t)=>{if(t??=2147483647,t<2)return 0;t-=2;for(var n=r,o=t>1]=s,r+=2}return ae[r>>1]=0,r-n},Hn=e=>e.length*2,Yn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var o=$[e+t*4>>2];if(o==0)break;if(++t,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(o)}return n},qn=(e,r,t)=>{if(t??=2147483647,t<4)return 0;for(var n=r,o=n+t-4,i=0;i=55296&&s<=57343){var u=e.charCodeAt(++i);s=65536+((s&1023)<<10)|u&1023}if($[r>>2]=s,r+=4,r+4>o)break}return $[r>>2]=0,r-n},Gn=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},Xn=(e,r,t)=>{t=B(t);var n,o,i,s;r===2?(n=Bn,o=Nn,s=Hn,i=u=>Te[u>>1]):r===4&&(n=Yn,o=qn,s=Gn,i=u=>F[u>>2]),Z(e,{name:t,fromWireType:u=>{for(var d=F[u>>2],h,p=u+4,y=0;y<=d;++y){var _=u+4+y*r;if(y==d||i(_)==0){var w=_-p,E=n(p,w);h===void 0?h=E:(h+=String.fromCharCode(0),h+=E),p=_+r}}return oe(u),h},toWireType:(u,d)=>{typeof d!="string"&&R(`Cannot pass non-string to C++ string type ${t}`);var h=s(d),p=Or(4+h+r);return F[p>>2]=h/r,o(d,p+4,h+r),u!==null&&u.push(oe,p),p},argPackAdvance:Q,readValueFromPointer:Fe,destructorFunction(u){oe(u)}})},Kn=(e,r,t,n,o,i)=>{Je[e]={name:B(r),rawConstructor:K(t,n),rawDestructor:K(o,i),fields:[]}},Jn=(e,r,t,n,o,i,s,u,d,h)=>{Je[e].fields.push({fieldName:B(r),getterReturnType:t,getter:K(n,o),getterContext:i,setterArgumentType:s,setter:K(u,d),setterContext:h})},Zn=(e,r)=>{r=B(r),Z(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},Qn=(e,r,t)=>N.copyWithin(e,r,r+t),lt=(e,r,t)=>{var n=[],o=e.toWireType(n,t);return n.length&&(F[r>>2]=z.toHandle(n)),o},eo=(e,r,t)=>(e=z.toValue(e),r=or(r,"emval::as"),lt(r,t,e)),ro={},ft=e=>{var r=ro[e];return r===void 0?B(e):r},Fr=[],to=(e,r,t,n,o)=>(e=Fr[e],r=z.toValue(r),t=ft(t),e(r,r[t],n,o)),no=(e,r)=>(e=z.toValue(e),r=z.toValue(r),e==r),oo=e=>{var r=Fr.length;return Fr.push(e),r},io=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},ao=(e,r,t)=>{var n=io(e,r),o=n.shift();e--;var i=`return function (obj, func, destructorsRef, args) { +`,s=0,u=[];t===0&&u.push("obj");for(var d=["retType"],h=[o],p=0;pE.name).join(", ")}) => ${o.name}>`;return oo(_e(w,_))},so=(e,r)=>(e=z.toValue(e),r=z.toValue(r),z.toHandle(e[r])),uo=e=>{e>9&&(te[e+1]+=1)},lo=e=>z.toHandle(ft(e)),fo=()=>z.toHandle({}),co=e=>{var r=z.toValue(e);mr(r),Cr(e)},vo=(e,r,t)=>{e=z.toValue(e),r=z.toValue(r),t=z.toValue(t),e[r]=t},ho=(e,r)=>{e=or(e,"_emval_take_value");var t=e.readValueFromPointer(r);return z.toHandle(t)},po=()=>2147483648,mo=e=>{var r=Le.buffer,t=(e-r.byteLength+65535)/65536;try{return Le.grow(t),Vr(),1}catch{}},yo=e=>{var r=N.length;e>>>=0;var t=po();if(e>t)return!1;for(var n=(d,h)=>d+(h-d%h)%h,o=1;o<=4;o*=2){var i=r*(1+.2/o);i=Math.min(i,e+100663296);var s=Math.min(t,n(Math.max(e,i),65536)),u=mo(s);if(u)return!0}return!1},Mr={},_o=()=>fr||"./this.program",Oe=()=>{if(!Oe.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:_o()};for(var t in Mr)Mr[t]===void 0?delete r[t]:r[t]=Mr[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);Oe.strings=n}return Oe.strings},wo=(e,r)=>{for(var t=0;t{var t=0;return Oe().forEach((n,o)=>{var i=r+t;F[e+o*4>>2]=i,wo(n,i),t+=n.length+1}),0},Eo=(e,r)=>{var t=Oe();F[e>>2]=t.length;var n=0;return t.forEach(o=>n+=o.length+1),F[r>>2]=n,0},O={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return r.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];o==="."?e.splice(n,1):o===".."?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=O.isAbs(e),t=e.substr(-1)==="/";return e=O.normalizeArray(e.split("/").filter(n=>!!n),!r).join("/"),!e&&!r&&(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=O.splitPath(e),t=r[0],n=r[1];return!t&&!n?".":(n&&(n=n.substr(0,n.length-1)),t+n)},basename:e=>{if(e==="/")return"/";e=O.normalize(e),e=e.replace(/\/$/,"");var r=e.lastIndexOf("/");return r===-1?e:e.substr(r+1)},join:(...e)=>O.normalize(e.join("/")),join2:(e,r)=>O.normalize(e+"/"+r)},bo=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return n=>crypto.getRandomValues(n);if(H)try{var e=J("crypto"),r=e.randomFillSync;if(r)return n=>e.randomFillSync(n);var t=e.randomBytes;return n=>(n.set(t(n.byteLength)),n)}catch{}ee("initRandomDevice")},ct=e=>(ct=bo())(e),ne={resolve:(...e)=>{for(var r="",t=!1,n=e.length-1;n>=-1&&!t;n--){var o=n>=0?e[n]:a.cwd();if(typeof o!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!o)return"";r=o+"/"+r,t=O.isAbs(o)}return r=O.normalizeArray(r.split("/").filter(i=>!!i),!t).join("/"),(t?"/":"")+r||"."},relative:(e,r)=>{e=ne.resolve(e).substr(1),r=ne.resolve(r).substr(1);function t(h){for(var p=0;p=0&&h[y]==="";y--);return p>y?[]:h.slice(p,y-p+1)}for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),s=i,u=0;u0?t:$r(e)+1,o=new Array(n),i=Tr(e,o,0,o.length);return r&&(o.length=i),o}var ko=()=>{if(!Ar.length){var e=null;if(H){var r=256,t=Buffer.alloc(r),n=0,o=process.stdin.fd;try{n=cr.readSync(o,t,0,r)}catch(i){if(i.toString().includes("EOF"))n=0;else throw i}n>0&&(e=t.slice(0,n).toString("utf-8"))}else typeof window<"u"&&typeof window.prompt=="function"&&(e=window.prompt("Input: "),e!==null&&(e+=` +`));if(!e)return null;Ar=ar(e,!0)}return Ar.shift()},de={ttys:[],init(){},shutdown(){},register(e,r){de.ttys[e]={input:[],output:[],ops:r},a.registerDevice(e,de.stream_ops)},stream_ops:{open(e){var r=de.ttys[e.node.rdev];if(!r)throw new a.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new a.ErrnoError(60);for(var i=0,s=0;s0&&(dr(we(e.output,0)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){r===null||r===10?(ie(we(e.output,0)),e.output=[]):r!=0&&e.output.push(r)},fsync(e){e.output&&e.output.length>0&&(ie(we(e.output,0)),e.output=[])}}},dt=e=>{ee()},S={ops_table:null,mount(e){return S.createNode(null,"/",16895,0)},createNode(e,r,t,n){if(a.isBlkdev(t)||a.isFIFO(t))throw new a.ErrnoError(63);S.ops_table||={dir:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr,lookup:S.node_ops.lookup,mknod:S.node_ops.mknod,rename:S.node_ops.rename,unlink:S.node_ops.unlink,rmdir:S.node_ops.rmdir,readdir:S.node_ops.readdir,symlink:S.node_ops.symlink},stream:{llseek:S.stream_ops.llseek}},file:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr},stream:{llseek:S.stream_ops.llseek,read:S.stream_ops.read,write:S.stream_ops.write,allocate:S.stream_ops.allocate,mmap:S.stream_ops.mmap,msync:S.stream_ops.msync}},link:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr,readlink:S.node_ops.readlink},stream:{}},chrdev:{node:{getattr:S.node_ops.getattr,setattr:S.node_ops.setattr},stream:a.chrdev_stream_ops}};var o=a.createNode(e,r,t,n);return a.isDir(o.mode)?(o.node_ops=S.ops_table.dir.node,o.stream_ops=S.ops_table.dir.stream,o.contents={}):a.isFile(o.mode)?(o.node_ops=S.ops_table.file.node,o.stream_ops=S.ops_table.file.stream,o.usedBytes=0,o.contents=null):a.isLink(o.mode)?(o.node_ops=S.ops_table.link.node,o.stream_ops=S.ops_table.link.stream):a.isChrdev(o.mode)&&(o.node_ops=S.ops_table.chrdev.node,o.stream_ops=S.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){var n=1024*1024;r=Math.max(r,t*(t>>0),t!=0&&(r=Math.max(r,256));var o=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(o.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,r){if(e.usedBytes!=r)if(r==0)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=a.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,a.isDir(e.mode)?r.size=4096:a.isFile(e.mode)?r.size=e.usedBytes:a.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){r.mode!==void 0&&(e.mode=r.mode),r.timestamp!==void 0&&(e.timestamp=r.timestamp),r.size!==void 0&&S.resizeFileStorage(e,r.size)},lookup(e,r){throw a.genericErrors[44]},mknod(e,r,t,n){return S.createNode(e,r,t,n)},rename(e,r,t){if(a.isDir(e.mode)){var n;try{n=a.lookupNode(r,t)}catch{}if(n)for(var o in n.contents)throw new a.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp},unlink(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir(e,r){var t=a.lookupNode(e,r);for(var n in t.contents)throw new a.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir(e){var r=[".",".."];for(var t of Object.keys(e.contents))r.push(t);return r},symlink(e,r,t){var n=S.createNode(e,r,41471,0);return n.link=t,n},readlink(e){if(!a.isLink(e.mode))throw new a.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-o,n);if(s>8&&i.subarray)r.set(i.subarray(o,o+s),t);else for(var u=0;u0||t+r{var o=n?"":`al ${e}`;ze(e,i=>{r(new Uint8Array(i)),o&&He()},i=>{if(t)t();else throw`Loading data file "${e}" failed.`}),o&&vr()},Co=(e,r,t,n,o,i)=>{a.createDataFile(e,r,t,n,o,i)},So=c.preloadPlugins||[],To=(e,r,t,n)=>{typeof Browser<"u"&&Browser.init();var o=!1;return So.forEach(i=>{o||i.canHandle(r)&&(i.handle(e,r,t,n),o=!0)}),o},$o=(e,r,t,n,o,i,s,u,d,h)=>{var p=r?ne.resolve(O.join2(e,r)):e;function y(_){function w(E){h?.(),u||Co(e,r,E,n,o,d),i?.(),He()}To(_,p,w,()=>{s?.(),He()})||w(_)}vr(),typeof t=="string"?Po(t,y,s):y(t)},Fo=e=>{var r={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},t=r[e];if(typeof t>"u")throw new Error(`Unknown file open mode: ${e}`);return t},Dr=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(e){this.name="ErrnoError",this.errno=e}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{constructor(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=a.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(e,r={}){if(e=ne.resolve(e),!e)return{path:"",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new a.ErrnoError(32);for(var n=e.split("/").filter(y=>!!y),o=a.root,i="/",s=0;s40)throw new a.ErrnoError(32)}}return{path:i,node:o}},getPath(e){for(var r;;){if(a.isRoot(e)){var t=e.mount.mountpoint;return r?t[t.length-1]!=="/"?`${t}/${r}`:t+r:t}r=r?`${e.name}/${r}`:e.name,e=e.parent}},hashName(e,r){for(var t=0,n=0;n>>0)%a.nameTable.length},hashAddNode(e){var r=a.hashName(e.parent.id,e.name);e.name_next=a.nameTable[r],a.nameTable[r]=e},hashRemoveNode(e){var r=a.hashName(e.parent.id,e.name);if(a.nameTable[r]===e)a.nameTable[r]=e.name_next;else for(var t=a.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=a.mayLookup(e);if(t)throw new a.ErrnoError(t);for(var n=a.hashName(e.id,r),o=a.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return a.lookup(e,r)},createNode(e,r,t,n){var o=new a.FSNode(e,r,t,n);return a.hashAddNode(o),o},destroyNode(e){a.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var r=["r","w","rw"][e&3];return e&512&&(r+="w"),r},nodePermissions(e,r){return a.ignorePermissions?0:r.includes("r")&&!(e.mode&292)||r.includes("w")&&!(e.mode&146)||r.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){if(!a.isDir(e.mode))return 54;var r=a.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){try{var t=a.lookupNode(e,r);return 20}catch{}return a.nodePermissions(e,"wx")},mayDelete(e,r,t){var n;try{n=a.lookupNode(e,r)}catch(i){return i.errno}var o=a.nodePermissions(e,"wx");if(o)return o;if(t){if(!a.isDir(n.mode))return 54;if(a.isRoot(n)||a.getPath(n)===a.cwd())return 10}else if(a.isDir(n.mode))return 31;return 0},mayOpen(e,r){return e?a.isLink(e.mode)?32:a.isDir(e.mode)&&(a.flagsToPermissionString(r)!=="r"||r&512)?31:a.nodePermissions(e,a.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=a.MAX_OPEN_FDS;e++)if(!a.streams[e])return e;throw new a.ErrnoError(33)},getStreamChecked(e){var r=a.getStream(e);if(!r)throw new a.ErrnoError(8);return r},getStream:e=>a.streams[e],createStream(e,r=-1){return e=Object.assign(new a.FSStream,e),r==-1&&(r=a.nextfd()),e.fd=r,a.streams[r]=e,e},closeStream(e){a.streams[e]=null},dupStream(e,r=-1){var t=a.createStream(e,r);return t.stream_ops?.dup?.(t),t},chrdev_stream_ops:{open(e){var r=a.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new a.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,r)=>e<<8|r,registerDevice(e,r){a.devices[e]={stream_ops:r}},getDevice:e=>a.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push(...n.mounts)}return r},syncfs(e,r){typeof e=="function"&&(r=e,e=!1),a.syncFSRequests++,a.syncFSRequests>1&&ie(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=a.getMounts(a.root.mount),n=0;function o(s){return a.syncFSRequests--,r(s)}function i(s){if(s)return i.errored?void 0:(i.errored=!0,o(s));++n>=t.length&&o(null)}t.forEach(s=>{if(!s.type.syncfs)return i(null);s.type.syncfs(s,e,i)})},mount(e,r,t){var n=t==="/",o=!t,i;if(n&&a.root)throw new a.ErrnoError(10);if(!n&&!o){var s=a.lookupPath(t,{follow_mount:!1});if(t=s.path,i=s.node,a.isMountpoint(i))throw new a.ErrnoError(10);if(!a.isDir(i.mode))throw new a.ErrnoError(54)}var u={type:e,opts:r,mountpoint:t,mounts:[]},d=e.mount(u);return d.mount=u,u.root=d,n?a.root=d:i&&(i.mounted=u,i.mount&&i.mount.mounts.push(u)),d},unmount(e){var r=a.lookupPath(e,{follow_mount:!1});if(!a.isMountpoint(r.node))throw new a.ErrnoError(28);var t=r.node,n=t.mounted,o=a.getMounts(n);Object.keys(a.nameTable).forEach(s=>{for(var u=a.nameTable[s];u;){var d=u.name_next;o.includes(u.mount)&&a.destroyNode(u),u=d}}),t.mounted=null;var i=t.mount.mounts.indexOf(n);t.mount.mounts.splice(i,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var n=a.lookupPath(e,{parent:!0}),o=n.node,i=O.basename(e);if(!i||i==="."||i==="..")throw new a.ErrnoError(28);var s=a.mayCreate(o,i);if(s)throw new a.ErrnoError(s);if(!o.node_ops.mknod)throw new a.ErrnoError(63);return o.node_ops.mknod(o,i,r,t)},create(e,r){return r=r!==void 0?r:438,r&=4095,r|=32768,a.mknod(e,r,0)},mkdir(e,r){return r=r!==void 0?r:511,r&=1023,r|=16384,a.mknod(e,r,0)},mkdirTree(e,r){for(var t=e.split("/"),n="",o=0;o"u"&&(t=r,r=438),r|=8192,a.mknod(e,r,t)},symlink(e,r){if(!ne.resolve(e))throw new a.ErrnoError(44);var t=a.lookupPath(r,{parent:!0}),n=t.node;if(!n)throw new a.ErrnoError(44);var o=O.basename(r),i=a.mayCreate(n,o);if(i)throw new a.ErrnoError(i);if(!n.node_ops.symlink)throw new a.ErrnoError(63);return n.node_ops.symlink(n,o,e)},rename(e,r){var t=O.dirname(e),n=O.dirname(r),o=O.basename(e),i=O.basename(r),s,u,d;if(s=a.lookupPath(e,{parent:!0}),u=s.node,s=a.lookupPath(r,{parent:!0}),d=s.node,!u||!d)throw new a.ErrnoError(44);if(u.mount!==d.mount)throw new a.ErrnoError(75);var h=a.lookupNode(u,o),p=ne.relative(e,n);if(p.charAt(0)!==".")throw new a.ErrnoError(28);if(p=ne.relative(r,t),p.charAt(0)!==".")throw new a.ErrnoError(55);var y;try{y=a.lookupNode(d,i)}catch{}if(h!==y){var _=a.isDir(h.mode),w=a.mayDelete(u,o,_);if(w)throw new a.ErrnoError(w);if(w=y?a.mayDelete(d,i,_):a.mayCreate(d,i),w)throw new a.ErrnoError(w);if(!u.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(h)||y&&a.isMountpoint(y))throw new a.ErrnoError(10);if(d!==u&&(w=a.nodePermissions(u,"w"),w))throw new a.ErrnoError(w);a.hashRemoveNode(h);try{u.node_ops.rename(h,d,i),h.parent=d}catch(E){throw E}finally{a.hashAddNode(h)}}},rmdir(e){var r=a.lookupPath(e,{parent:!0}),t=r.node,n=O.basename(e),o=a.lookupNode(t,n),i=a.mayDelete(t,n,!0);if(i)throw new a.ErrnoError(i);if(!t.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(o))throw new a.ErrnoError(10);t.node_ops.rmdir(t,n),a.destroyNode(o)},readdir(e){var r=a.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new a.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var r=a.lookupPath(e,{parent:!0}),t=r.node;if(!t)throw new a.ErrnoError(44);var n=O.basename(e),o=a.lookupNode(t,n),i=a.mayDelete(t,n,!1);if(i)throw new a.ErrnoError(i);if(!t.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(o))throw new a.ErrnoError(10);t.node_ops.unlink(t,n),a.destroyNode(o)},readlink(e){var r=a.lookupPath(e),t=r.node;if(!t)throw new a.ErrnoError(44);if(!t.node_ops.readlink)throw new a.ErrnoError(28);return ne.resolve(a.getPath(t.parent),t.node_ops.readlink(t))},stat(e,r){var t=a.lookupPath(e,{follow:!r}),n=t.node;if(!n)throw new a.ErrnoError(44);if(!n.node_ops.getattr)throw new a.ErrnoError(63);return n.node_ops.getattr(n)},lstat(e){return a.stat(e,!0)},chmod(e,r,t){var n;if(typeof e=="string"){var o=a.lookupPath(e,{follow:!t});n=o.node}else n=e;if(!n.node_ops.setattr)throw new a.ErrnoError(63);n.node_ops.setattr(n,{mode:r&4095|n.mode&-4096,timestamp:Date.now()})},lchmod(e,r){a.chmod(e,r,!0)},fchmod(e,r){var t=a.getStreamChecked(e);a.chmod(t.node,r)},chown(e,r,t,n){var o;if(typeof e=="string"){var i=a.lookupPath(e,{follow:!n});o=i.node}else o=e;if(!o.node_ops.setattr)throw new a.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown(e,r,t){a.chown(e,r,t,!0)},fchown(e,r,t){var n=a.getStreamChecked(e);a.chown(n.node,r,t)},truncate(e,r){if(r<0)throw new a.ErrnoError(28);var t;if(typeof e=="string"){var n=a.lookupPath(e,{follow:!0});t=n.node}else t=e;if(!t.node_ops.setattr)throw new a.ErrnoError(63);if(a.isDir(t.mode))throw new a.ErrnoError(31);if(!a.isFile(t.mode))throw new a.ErrnoError(28);var o=a.nodePermissions(t,"w");if(o)throw new a.ErrnoError(o);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate(e,r){var t=a.getStreamChecked(e);if(!(t.flags&2097155))throw new a.ErrnoError(28);a.truncate(t.node,r)},utime(e,r,t){var n=a.lookupPath(e,{follow:!0}),o=n.node;o.node_ops.setattr(o,{timestamp:Math.max(r,t)})},open(e,r,t){if(e==="")throw new a.ErrnoError(44);r=typeof r=="string"?Fo(r):r,r&64?(t=typeof t>"u"?438:t,t=t&4095|32768):t=0;var n;if(typeof e=="object")n=e;else{e=O.normalize(e);try{var o=a.lookupPath(e,{follow:!(r&131072)});n=o.node}catch{}}var i=!1;if(r&64)if(n){if(r&128)throw new a.ErrnoError(20)}else n=a.mknod(e,t,0),i=!0;if(!n)throw new a.ErrnoError(44);if(a.isChrdev(n.mode)&&(r&=-513),r&65536&&!a.isDir(n.mode))throw new a.ErrnoError(54);if(!i){var s=a.mayOpen(n,r);if(s)throw new a.ErrnoError(s)}r&512&&!i&&a.truncate(n,0),r&=-131713;var u=a.createStream({node:n,path:a.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return u.stream_ops.open&&u.stream_ops.open(u),c.logReadFiles&&!(r&1)&&(a.readFiles||(a.readFiles={}),e in a.readFiles||(a.readFiles[e]=1)),u},close(e){if(a.isClosed(e))throw new a.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(r){throw r}finally{a.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,r,t){if(a.isClosed(e))throw new a.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new a.ErrnoError(70);if(t!=0&&t!=1&&t!=2)throw new a.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,n,o){if(n<0||o<0)throw new a.ErrnoError(28);if(a.isClosed(e))throw new a.ErrnoError(8);if((e.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(e.node.mode))throw new a.ErrnoError(31);if(!e.stream_ops.read)throw new a.ErrnoError(28);var i=typeof o<"u";if(!i)o=e.position;else if(!e.seekable)throw new a.ErrnoError(70);var s=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=s),s},write(e,r,t,n,o,i){if(n<0||o<0)throw new a.ErrnoError(28);if(a.isClosed(e))throw new a.ErrnoError(8);if(!(e.flags&2097155))throw new a.ErrnoError(8);if(a.isDir(e.node.mode))throw new a.ErrnoError(31);if(!e.stream_ops.write)throw new a.ErrnoError(28);e.seekable&&e.flags&1024&&a.llseek(e,0,2);var s=typeof o<"u";if(!s)o=e.position;else if(!e.seekable)throw new a.ErrnoError(70);var u=e.stream_ops.write(e,r,t,n,o,i);return s||(e.position+=u),u},allocate(e,r,t){if(a.isClosed(e))throw new a.ErrnoError(8);if(r<0||t<=0)throw new a.ErrnoError(28);if(!(e.flags&2097155))throw new a.ErrnoError(8);if(!a.isFile(e.node.mode)&&!a.isDir(e.node.mode))throw new a.ErrnoError(43);if(!e.stream_ops.allocate)throw new a.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap(e,r,t,n,o){if(n&2&&!(o&2)&&(e.flags&2097155)!==2)throw new a.ErrnoError(2);if((e.flags&2097155)===1)throw new a.ErrnoError(2);if(!e.stream_ops.mmap)throw new a.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o)},msync(e,r,t,n,o){return e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new a.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||"binary",r.encoding!=="utf8"&&r.encoding!=="binary")throw new Error(`Invalid encoding type "${r.encoding}"`);var t,n=a.open(e,r.flags),o=a.stat(e),i=o.size,s=new Uint8Array(i);return a.read(n,s,0,i,0),r.encoding==="utf8"?t=we(s,0):r.encoding==="binary"&&(t=s),a.close(n),t},writeFile(e,r,t={}){t.flags=t.flags||577;var n=a.open(e,t.flags,t.mode);if(typeof r=="string"){var o=new Uint8Array($r(r)+1),i=Tr(r,o,0,o.length);a.write(n,o,0,i,void 0,t.canOwn)}else if(ArrayBuffer.isView(r))a.write(n,r,0,r.byteLength,void 0,t.canOwn);else throw new Error("Unsupported data type");a.close(n)},cwd:()=>a.currentPath,chdir(e){var r=a.lookupPath(e,{follow:!0});if(r.node===null)throw new a.ErrnoError(44);if(!a.isDir(r.node.mode))throw new a.ErrnoError(54);var t=a.nodePermissions(r.node,"x");if(t)throw new a.ErrnoError(t);a.currentPath=r.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(n,o,i,s,u)=>s}),a.mkdev("/dev/null",a.makedev(1,3)),de.register(a.makedev(5,0),de.default_tty_ops),de.register(a.makedev(6,0),de.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(r===0&&(r=ct(e).byteLength),e[--r]);a.createDevice("/dev","random",t),a.createDevice("/dev","urandom",t),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var e=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var r=a.createNode(e,"fd",16895,73);return r.node_ops={lookup(t,n){var o=+n,i=a.getStreamChecked(o),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},r}},{},"/proc/self/fd")},createStandardStreams(){c.stdin?a.createDevice("/dev","stdin",c.stdin):a.symlink("/dev/tty","/dev/stdin"),c.stdout?a.createDevice("/dev","stdout",null,c.stdout):a.symlink("/dev/tty","/dev/stdout"),c.stderr?a.createDevice("/dev","stderr",null,c.stderr):a.symlink("/dev/tty1","/dev/stderr"),a.open("/dev/stdin",0),a.open("/dev/stdout",1),a.open("/dev/stderr",1)},staticInit(){[44].forEach(e=>{a.genericErrors[e]=new a.ErrnoError(e),a.genericErrors[e].stack=""}),a.nameTable=new Array(4096),a.mount(S,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:S}},init(e,r,t){a.init.initialized=!0,c.stdin=e||c.stdin,c.stdout=r||c.stdout,c.stderr=t||c.stderr,a.createStandardStreams()},quit(){a.init.initialized=!1;for(var e=0;ethis.length-1||w<0)){var E=w%this.chunkSize,A=w/this.chunkSize|0;return this.getter(A)[E]}}setDataGetter(w){this.getter=w}cacheLength(){var w=new XMLHttpRequest;if(w.open("HEAD",t,!1),w.send(null),!(w.status>=200&&w.status<300||w.status===304))throw new Error("Couldn't load "+t+". Status: "+w.status);var E=Number(w.getResponseHeader("Content-length")),A,x=(A=w.getResponseHeader("Accept-Ranges"))&&A==="bytes",f=(A=w.getResponseHeader("Content-Encoding"))&&A==="gzip",l=1024*1024;x||(l=E);var v=(g,D)=>{if(g>D)throw new Error("invalid range ("+g+", "+D+") or no bytes requested!");if(D>E-1)throw new Error("only "+E+" bytes available! programmer error!");var T=new XMLHttpRequest;if(T.open("GET",t,!1),E!==l&&T.setRequestHeader("Range","bytes="+g+"-"+D),T.responseType="arraybuffer",T.overrideMimeType&&T.overrideMimeType("text/plain; charset=x-user-defined"),T.send(null),!(T.status>=200&&T.status<300||T.status===304))throw new Error("Couldn't load "+t+". Status: "+T.status);return T.response!==void 0?new Uint8Array(T.response||[]):ar(T.responseText||"",!0)},m=this;m.setDataGetter(g=>{var D=g*l,T=(g+1)*l-1;if(T=Math.min(T,E-1),typeof m.chunks[g]>"u"&&(m.chunks[g]=v(D,T)),typeof m.chunks[g]>"u")throw new Error("doXHR failed!");return m.chunks[g]}),(f||!E)&&(l=E=1,E=this.getter(0).length,l=E,dr("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=E,this._chunkSize=l,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!Pe)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new i,u={isDevice:!1,contents:s}}else var u={isDevice:!1,url:t};var d=a.createFile(e,r,u,n,o);u.contents?d.contents=u.contents:u.url&&(d.contents=null,d.url=u.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var h={},p=Object.keys(d.stream_ops);p.forEach(_=>{var w=d.stream_ops[_];h[_]=(...E)=>(a.forceLoadFile(d),w(...E))});function y(_,w,E,A,x){var f=_.node.contents;if(x>=f.length)return 0;var l=Math.min(f.length-x,A);if(f.slice)for(var v=0;v(a.forceLoadFile(d),y(_,w,E,A,x)),h.mmap=(_,w,E,A,x)=>{a.forceLoadFile(d);var f=dt();if(!f)throw new a.ErrnoError(48);return y(_,W,f,w,E),{ptr:f,allocated:!0}},d.stream_ops=h,d}},je={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(O.isAbs(r))return r;var n;if(e===-100)n=a.cwd();else{var o=je.getStreamFromFD(e);n=o.path}if(r.length==0){if(!t)throw new a.ErrnoError(44);return n}return O.join2(n,r)},doStat(e,r,t){var n=e(r);$[t>>2]=n.dev,$[t+4>>2]=n.mode,F[t+8>>2]=n.nlink,$[t+12>>2]=n.uid,$[t+16>>2]=n.gid,$[t+20>>2]=n.rdev,V=[n.size>>>0,(M=n.size,+Math.abs(M)>=1?M>0?+Math.floor(M/4294967296)>>>0:~~+Math.ceil((M-+(~~M>>>0))/4294967296)>>>0:0)],$[t+24>>2]=V[0],$[t+28>>2]=V[1],$[t+32>>2]=4096,$[t+36>>2]=n.blocks;var o=n.atime.getTime(),i=n.mtime.getTime(),s=n.ctime.getTime();return V=[Math.floor(o/1e3)>>>0,(M=Math.floor(o/1e3),+Math.abs(M)>=1?M>0?+Math.floor(M/4294967296)>>>0:~~+Math.ceil((M-+(~~M>>>0))/4294967296)>>>0:0)],$[t+40>>2]=V[0],$[t+44>>2]=V[1],F[t+48>>2]=o%1e3*1e3,V=[Math.floor(i/1e3)>>>0,(M=Math.floor(i/1e3),+Math.abs(M)>=1?M>0?+Math.floor(M/4294967296)>>>0:~~+Math.ceil((M-+(~~M>>>0))/4294967296)>>>0:0)],$[t+56>>2]=V[0],$[t+60>>2]=V[1],F[t+64>>2]=i%1e3*1e3,V=[Math.floor(s/1e3)>>>0,(M=Math.floor(s/1e3),+Math.abs(M)>=1?M>0?+Math.floor(M/4294967296)>>>0:~~+Math.ceil((M-+(~~M>>>0))/4294967296)>>>0:0)],$[t+72>>2]=V[0],$[t+76>>2]=V[1],F[t+80>>2]=s%1e3*1e3,V=[n.ino>>>0,(M=n.ino,+Math.abs(M)>=1?M>0?+Math.floor(M/4294967296)>>>0:~~+Math.ceil((M-+(~~M>>>0))/4294967296)>>>0:0)],$[t+88>>2]=V[0],$[t+92>>2]=V[1],0},doMsync(e,r,t,n,o){if(!a.isFile(r.node.mode))throw new a.ErrnoError(43);if(n&2)return 0;var i=N.slice(e,e+t);a.msync(r,i,o,t,n)},getStreamFromFD(e){var r=a.getStreamChecked(e);return r},varargs:void 0,getStr(e){var r=ir(e);return r}};function Mo(e){try{var r=je.getStreamFromFD(e);return a.close(r),0}catch(t){if(typeof a>"u"||t.name!=="ErrnoError")throw t;return t.errno}}var Ao=(e,r,t,n)=>{for(var o=0,i=0;i>2],u=F[r+4>>2];r+=8;var d=a.read(e,W,s,u,n);if(d<0)return-1;if(o+=d,d>2]=i,0}catch(s){if(typeof a>"u"||s.name!=="ErrnoError")throw s;return s.errno}}var Ro=(e,r)=>r+2097152>>>0<4194305-!!e?(e>>>0)+r*4294967296:NaN;function xo(e,r,t,n,o){var i=Ro(r,t);try{if(isNaN(i))return 61;var s=je.getStreamFromFD(e);return a.llseek(s,i,n),V=[s.position>>>0,(M=s.position,+Math.abs(M)>=1?M>0?+Math.floor(M/4294967296)>>>0:~~+Math.ceil((M-+(~~M>>>0))/4294967296)>>>0:0)],$[o>>2]=V[0],$[o+4>>2]=V[1],s.getdents&&i===0&&n===0&&(s.getdents=null),0}catch(u){if(typeof a>"u"||u.name!=="ErrnoError")throw u;return u.errno}}var Oo=(e,r,t,n)=>{for(var o=0,i=0;i>2],u=F[r+4>>2];r+=8;var d=a.write(e,W,s,u,n);if(d<0)return-1;o+=d,typeof n<"u"&&(n+=d)}return o};function jo(e,r,t,n){try{var o=je.getStreamFromFD(e),i=Oo(o,r,t);return F[n>>2]=i,0}catch(s){if(typeof a>"u"||s.name!=="ErrnoError")throw s;return s.errno}}var sr=e=>e%4===0&&(e%100!==0||e%400===0),Wo=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},vt=[31,29,31,30,31,30,31,31,30,31,30,31],ht=[31,28,31,30,31,30,31,31,30,31,30,31],Io=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=sr(t.getFullYear()),o=t.getMonth(),i=(n?vt:ht)[o];if(r>i-t.getDate())r-=i-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t},Vo=(e,r)=>{W.set(e,r)},zo=(e,r,t,n)=>{var o=F[n+40>>2],i={tm_sec:$[n>>2],tm_min:$[n+4>>2],tm_hour:$[n+8>>2],tm_mday:$[n+12>>2],tm_mon:$[n+16>>2],tm_year:$[n+20>>2],tm_wday:$[n+24>>2],tm_yday:$[n+28>>2],tm_isdst:$[n+32>>2],tm_gmtoff:$[n+36>>2],tm_zone:o?ir(o):""},s=ir(t),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var d in u)s=s.replace(new RegExp(d,"g"),u[d]);var h=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],p=["January","February","March","April","May","June","July","August","September","October","November","December"];function y(l,v,m){for(var g=typeof l=="number"?l.toString():l||"";g.length0?1:0}var g;return(g=m(l.getFullYear()-v.getFullYear()))===0&&(g=m(l.getMonth()-v.getMonth()))===0&&(g=m(l.getDate()-v.getDate())),g}function E(l){switch(l.getDay()){case 0:return new Date(l.getFullYear()-1,11,29);case 1:return l;case 2:return new Date(l.getFullYear(),0,3);case 3:return new Date(l.getFullYear(),0,2);case 4:return new Date(l.getFullYear(),0,1);case 5:return new Date(l.getFullYear()-1,11,31);case 6:return new Date(l.getFullYear()-1,11,30)}}function A(l){var v=Io(new Date(l.tm_year+1900,0,1),l.tm_yday),m=new Date(v.getFullYear(),0,4),g=new Date(v.getFullYear()+1,0,4),D=E(m),T=E(g);return w(D,v)<=0?w(T,v)<=0?v.getFullYear()+1:v.getFullYear():v.getFullYear()-1}var x={"%a":l=>h[l.tm_wday].substring(0,3),"%A":l=>h[l.tm_wday],"%b":l=>p[l.tm_mon].substring(0,3),"%B":l=>p[l.tm_mon],"%C":l=>{var v=l.tm_year+1900;return _(v/100|0,2)},"%d":l=>_(l.tm_mday,2),"%e":l=>y(l.tm_mday,2," "),"%g":l=>A(l).toString().substring(2),"%G":A,"%H":l=>_(l.tm_hour,2),"%I":l=>{var v=l.tm_hour;return v==0?v=12:v>12&&(v-=12),_(v,2)},"%j":l=>_(l.tm_mday+Wo(sr(l.tm_year+1900)?vt:ht,l.tm_mon-1),3),"%m":l=>_(l.tm_mon+1,2),"%M":l=>_(l.tm_min,2),"%n":()=>` +`,"%p":l=>l.tm_hour>=0&&l.tm_hour<12?"AM":"PM","%S":l=>_(l.tm_sec,2),"%t":()=>" ","%u":l=>l.tm_wday||7,"%U":l=>{var v=l.tm_yday+7-l.tm_wday;return _(Math.floor(v/7),2)},"%V":l=>{var v=Math.floor((l.tm_yday+7-(l.tm_wday+6)%7)/7);if((l.tm_wday+371-l.tm_yday-2)%7<=2&&v++,v){if(v==53){var g=(l.tm_wday+371-l.tm_yday)%7;g!=4&&(g!=3||!sr(l.tm_year))&&(v=1)}}else{v=52;var m=(l.tm_wday+7-l.tm_yday-1)%7;(m==4||m==5&&sr(l.tm_year%400-1))&&v++}return _(v,2)},"%w":l=>l.tm_wday,"%W":l=>{var v=l.tm_yday+7-(l.tm_wday+6)%7;return _(Math.floor(v/7),2)},"%y":l=>(l.tm_year+1900).toString().substring(2),"%Y":l=>l.tm_year+1900,"%z":l=>{var v=l.tm_gmtoff,m=v>=0;return v=Math.abs(v)/60,v=v/60*100+v%60,(m?"+":"-")+("0000"+v).slice(-4)},"%Z":l=>l.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var d in x)s.includes(d)&&(s=s.replace(new RegExp(d,"g"),x[d](i)));s=s.replace(/\0\0/g,"%");var f=ar(s,!1);return f.length>r?0:(Vo(f,e),f.length-1)},Uo=(e,r,t,n,o)=>zo(e,r,t,n),pt=(e,r)=>{e<128?r.push(e):r.push(e%128|128,e>>7)},Lo=e=>{for(var r={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},t={parameters:[],results:e[0]=="v"?[]:[r[e[0]]]},n=1;n{var t=e.slice(0,1),n=e.slice(1),o={i:127,p:127,j:126,f:125,d:124,e:111};r.push(96),pt(n.length,r);for(var i=0;i{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(Lo(r),e);var t=[1];Bo(r,t);var n=[0,97,115,109,1,0,0,0,1];pt(t.length,n),n.push(...t),n.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var o=new WebAssembly.Module(new Uint8Array(n)),i=new WebAssembly.Instance(o,{e:{f:e}}),s=i.exports.f;return s},Ho=(e,r)=>{if(ve)for(var t=e;t(ve||(ve=new WeakMap,Ho(0,ce.length)),ve.get(e)||0),Rr=[],qo=()=>{if(Rr.length)return Rr.pop();try{ce.grow(1)}catch(e){throw e instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":e}return ce.length-1},xr=(e,r)=>{ce.set(e,r),xe[e]=ce.get(e)},We=(e,r)=>{var t=Yo(e);if(t)return t;var n=qo();try{xr(n,e)}catch(i){if(!(i instanceof TypeError))throw i;var o=No(e,r);xr(n,o)}return ve.set(e,n),n},Ie=e=>{ve.delete(b(e)),xr(e,null),Rr.push(e)};qr=c.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},Zt(),ye=c.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},cn(),sn(),wn(),rt=c.UnboundTypeError=kn(Error,"UnboundTypeError"),Fn(),a.createPreloadedFile=$o,a.staticInit();var Go={F:Ut,J:Lt,a:Nt,k:Ht,na:Yt,h:qt,ma:Gt,e:Bt,fa:Xt,Da:Kt,ea:Jt,Aa:en,z:Pn,y:Sn,j:Tn,za:at,S:Dn,u:Rn,$:On,o:jn,C:In,t:Vn,D:zn,_:Ln,R:Xn,G:Kn,Ea:Jn,Ca:Zn,pa:Qn,Ia:eo,va:to,Ka:Cr,Ha:no,Ba:ao,Ja:so,Ga:uo,M:lo,aa:fo,ja:co,La:vo,I:ho,oa:yo,ha:go,ia:Eo,ka:Mo,la:Do,ca:xo,V:jo,sa:Ti,L:ri,w:Zo,A:li,P:Mi,qa:Fi,T:Ri,q:ki,c:ei,b:Ko,m:Jo,l:si,E:ni,B:Ai,U:Di,O:xi,da:ji,ba:Wi,i:ui,g:Qo,xa:hi,f:ti,K:vi,Z:ci,ya:di,s:mi,ua:Ci,ta:Si,wa:pi,d:Xo,Q:Pi,Fa:ii,n:oi,x:fi,ra:$i,Y:wi,r:yi,v:Ei,W:bi,H:_i,p:ai,N:Oi,X:gi,ga:Uo},j=zt(),mt=e=>(mt=j.Oa)(e),oe=e=>(oe=j.Qa)(e),Or=e=>(Or=j.Ra)(e),k=(e,r)=>(k=j.Sa)(e,r),yt=e=>(yt=j.Ta)(e),_t=e=>(_t=j.Ua)(e),wt=()=>(wt=j.Va)(),gt=e=>(gt=j.Wa)(e),Et=e=>(Et=j.Xa)(e),bt=(e,r,t)=>(bt=j.Ya)(e,r,t),kt=e=>(kt=j.Za)(e),Pt=c.dynCall_iiij=(e,r,t,n,o)=>(Pt=c.dynCall_iiij=j._a)(e,r,t,n,o);c.dynCall_viijii=(e,r,t,n,o,i,s)=>(c.dynCall_viijii=j.$a)(e,r,t,n,o,i,s),c.dynCall_jiji=(e,r,t,n,o)=>(c.dynCall_jiji=j.ab)(e,r,t,n,o);var Ct=c.dynCall_jiiii=(e,r,t,n,o)=>(Ct=c.dynCall_jiiii=j.bb)(e,r,t,n,o);c.dynCall_iiiiij=(e,r,t,n,o,i,s)=>(c.dynCall_iiiiij=j.cb)(e,r,t,n,o,i,s),c.dynCall_iiiiijj=(e,r,t,n,o,i,s,u,d)=>(c.dynCall_iiiiijj=j.db)(e,r,t,n,o,i,s,u,d),c.dynCall_iiiiiijj=(e,r,t,n,o,i,s,u,d,h)=>(c.dynCall_iiiiiijj=j.eb)(e,r,t,n,o,i,s,u,d,h);function Xo(e,r,t,n){var o=C();try{b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function Ko(e,r,t){var n=C();try{return b(e)(r,t)}catch(o){if(P(n),o!==o+0)throw o;k(1,0)}}function Jo(e,r,t,n){var o=C();try{return b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function Zo(e,r,t,n,o,i){var s=C();try{return b(e)(r,t,n,o,i)}catch(u){if(P(s),u!==u+0)throw u;k(1,0)}}function Qo(e,r){var t=C();try{b(e)(r)}catch(n){if(P(t),n!==n+0)throw n;k(1,0)}}function ei(e,r){var t=C();try{return b(e)(r)}catch(n){if(P(t),n!==n+0)throw n;k(1,0)}}function ri(e,r,t,n){var o=C();try{return b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function ti(e,r,t){var n=C();try{b(e)(r,t)}catch(o){if(P(n),o!==o+0)throw o;k(1,0)}}function ni(e,r,t,n,o,i){var s=C();try{return b(e)(r,t,n,o,i)}catch(u){if(P(s),u!==u+0)throw u;k(1,0)}}function oi(e,r,t,n,o){var i=C();try{b(e)(r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}function ii(e,r,t,n,o,i,s,u){var d=C();try{b(e)(r,t,n,o,i,s,u)}catch(h){if(P(d),h!==h+0)throw h;k(1,0)}}function ai(e,r,t,n,o,i,s,u,d,h,p){var y=C();try{b(e)(r,t,n,o,i,s,u,d,h,p)}catch(_){if(P(y),_!==_+0)throw _;k(1,0)}}function si(e,r,t,n,o){var i=C();try{return b(e)(r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}function ui(e){var r=C();try{b(e)()}catch(t){if(P(r),t!==t+0)throw t;k(1,0)}}function li(e,r){var t=C();try{return b(e)(r)}catch(n){if(P(t),n!==n+0)throw n;k(1,0)}}function fi(e,r,t,n,o,i){var s=C();try{b(e)(r,t,n,o,i)}catch(u){if(P(s),u!==u+0)throw u;k(1,0)}}function ci(e,r,t,n,o){var i=C();try{b(e)(r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}function di(e,r,t,n,o,i,s,u,d){var h=C();try{b(e)(r,t,n,o,i,s,u,d)}catch(p){if(P(h),p!==p+0)throw p;k(1,0)}}function vi(e,r,t,n,o,i){var s=C();try{b(e)(r,t,n,o,i)}catch(u){if(P(s),u!==u+0)throw u;k(1,0)}}function hi(e,r,t,n){var o=C();try{b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function pi(e,r,t,n,o,i,s){var u=C();try{b(e)(r,t,n,o,i,s)}catch(d){if(P(u),d!==d+0)throw d;k(1,0)}}function mi(e,r,t,n){var o=C();try{b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function yi(e,r,t,n,o,i,s){var u=C();try{b(e)(r,t,n,o,i,s)}catch(d){if(P(u),d!==d+0)throw d;k(1,0)}}function _i(e,r,t,n,o,i,s,u,d,h,p,y,_,w){var E=C();try{b(e)(r,t,n,o,i,s,u,d,h,p,y,_,w)}catch(A){if(P(E),A!==A+0)throw A;k(1,0)}}function wi(e,r,t,n,o,i,s){var u=C();try{b(e)(r,t,n,o,i,s)}catch(d){if(P(u),d!==d+0)throw d;k(1,0)}}function gi(e,r,t,n,o,i,s,u,d,h,p,y,_,w,E,A,x,f,l){var v=C();try{b(e)(r,t,n,o,i,s,u,d,h,p,y,_,w,E,A,x,f,l)}catch(m){if(P(v),m!==m+0)throw m;k(1,0)}}function Ei(e,r,t,n,o,i,s,u){var d=C();try{b(e)(r,t,n,o,i,s,u)}catch(h){if(P(d),h!==h+0)throw h;k(1,0)}}function bi(e,r,t,n,o,i,s,u,d,h){var p=C();try{b(e)(r,t,n,o,i,s,u,d,h)}catch(y){if(P(p),y!==y+0)throw y;k(1,0)}}function ki(e){var r=C();try{return b(e)()}catch(t){if(P(r),t!==t+0)throw t;k(1,0)}}function Pi(e,r,t,n,o){var i=C();try{b(e)(r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}function Ci(e,r,t,n,o){var i=C();try{b(e)(r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}function Si(e,r,t,n,o,i){var s=C();try{b(e)(r,t,n,o,i)}catch(u){if(P(s),u!==u+0)throw u;k(1,0)}}function Ti(e){var r=C();try{return b(e)()}catch(t){if(P(r),t!==t+0)throw t;k(1,0)}}function $i(e,r,t,n,o,i,s){var u=C();try{b(e)(r,t,n,o,i,s)}catch(d){if(P(u),d!==d+0)throw d;k(1,0)}}function Fi(e,r,t,n){var o=C();try{return b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function Mi(e,r,t){var n=C();try{return b(e)(r,t)}catch(o){if(P(n),o!==o+0)throw o;k(1,0)}}function Ai(e,r,t,n,o,i,s){var u=C();try{return b(e)(r,t,n,o,i,s)}catch(d){if(P(u),d!==d+0)throw d;k(1,0)}}function Di(e,r,t,n,o,i,s,u){var d=C();try{return b(e)(r,t,n,o,i,s,u)}catch(h){if(P(d),h!==h+0)throw h;k(1,0)}}function Ri(e,r,t,n){var o=C();try{return b(e)(r,t,n)}catch(i){if(P(o),i!==i+0)throw i;k(1,0)}}function xi(e,r,t,n,o,i,s,u,d,h,p,y){var _=C();try{return b(e)(r,t,n,o,i,s,u,d,h,p,y)}catch(w){if(P(_),w!==w+0)throw w;k(1,0)}}function Oi(e,r,t,n,o,i,s,u,d,h,p,y,_,w,E,A){var x=C();try{b(e)(r,t,n,o,i,s,u,d,h,p,y,_,w,E,A)}catch(f){if(P(x),f!==f+0)throw f;k(1,0)}}function ji(e,r,t,n,o){var i=C();try{return Pt(e,r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}function Wi(e,r,t,n,o){var i=C();try{return Ct(e,r,t,n,o)}catch(s){if(P(i),s!==s+0)throw s;k(1,0)}}c.addFunction=We,c.removeFunction=Ie;var ur;$e=function e(){ur||St(),ur||($e=e)};function St(){if(ue>0||(Ft(),ue>0))return;function e(){ur||(ur=!0,c.calledRun=!0,!Ir&&(Mt(),ke(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),At()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),e()},1)):e()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return St(),he=q,he}})();export{Bi as M}; +//# sourceMappingURL=manifold.js.map diff --git a/assets/manifold.js.map b/assets/manifold.js.map new file mode 100644 index 000000000..5d3c1ea61 --- /dev/null +++ b/assets/manifold.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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","names":["Module","_scriptName","moduleArg","moduleRtn","readyPromiseResolve","readyPromiseReject","readyPromise","resolve","reject","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","createRequire","__vitePreload","require","_ManifoldInitialized","toVec","vec","list","f","x","fromVec","result","size","i","vec2polygons","nPoly","v","nPts","poly","j","polygons2vec","polygons","p","disposePolygons","polygonsVec","vararg2vec2","vararg2vec3","fillRuleToInt","fillRule","joinTypeToInt","joinType","CrossSectionCtor","cross","cs","func","wasmFuncPtr","addFunction","vec2Ptr","getValue","y","vert","setValue","out","removeFunction","delta","miterLimit","circularSegments","height","nDivisions","twistDegrees","scaleTop","center","man","revolveDegrees","other","minSharpAngle","minSmoothness","vec3Ptr","z","status","normalIdx","numProp","oldNumProp","newPtr","oldPtr","newProp","pos","oldProp","xOrVec","normal","offset","manifold","Mesh","triVerts","vertProperties","mergeFromVert","mergeToVert","runIndex","runOriginalID","faceID","halfedgeTangent","runTransform","changed","mesh","tri","halfedge","run","mat4","col","row","code","args","message","base","radius","crossSectionBatchbool","name","pushVec2","ps","pts","polys","t","ManifoldCtor","radiusLow","radiusHigh","sharpenedEdges","sharp","n","manifolds","manifoldBatchbool","m","sdf","bounds","edgeLength","level","precision","bounds2","pushVec3","moduleOverrides","thisProgram","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","filename","binary","isFileURI","ret","onload","onerror","err","data","url","xhr","response","wasmBinary","wasmMemory","ABORT","HEAP8","HEAPU8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","updateMemoryViews","b","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","preRun","addOnPreRun","callRuntimeCallbacks","initRuntime","FS","postRun","addOnPostRun","cb","addOnInit","runDependencies","dependenciesFulfilled","getUniqueRunDependency","id","addRunDependency","removeRunDependency","callback","abort","what","e","dataURIPrefix","isDataURI","findWasmBinary","wasmBinaryFile","getBinarySync","file","getBinaryPromise","binaryFile","error","instantiateArrayBuffer","imports","receiver","reason","instantiateAsync","getWasmImports","wasmImports","createWasm","info","receiveInstance","instance","module","wasmExports","wasmTable","receiveInstantiationResult","tempDouble","tempI64","callbacks","ptr","type","value","stackRestore","val","__emscripten_stack_restore","stackSave","_emscripten_stack_get_current","exceptionCaught","uncaughtExceptionCount","___cxa_begin_catch","ExceptionInfo","___cxa_increment_exception_refcount","exceptionLast","___cxa_end_catch","_setThrew","___cxa_decrement_exception_refcount","excPtr","destructor","caught","rethrown","adjustedPtr","isPointer","___cxa_is_pointer_type","adjusted","___resumeException","setTempRet0","__emscripten_tempret_set","findMatchingCatch","thrown","thrownType","caughtType","adjusted_ptr_addr","___cxa_can_catch","___cxa_find_matching_catch_2","___cxa_find_matching_catch_3","arg0","___cxa_rethrow","___cxa_throw","___cxa_uncaught_exceptions","__abort_js","structRegistrations","runDestructors","destructors","del","readPointer","pointer","awaitingDependencies","registeredTypes","typeDependencies","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","__embind_finalize_value_object","structType","reg","rawConstructor","rawDestructor","fieldRecords","fieldTypes","field","fields","fieldName","getterReturnType","getter","getterContext","setterArgumentType","setter","setterContext","o","rv","GenericWireTypeSize","__embind_register_bigint","primitiveType","minRange","maxRange","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","BindingError","throwBindingError","sharedRegisterType","rawType","registeredInstance","options","__embind_register_bool","trueValue","falseValue","wt","shallowCopyInternalPointer","throwInstanceAlreadyDeleted","obj","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","$$","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","fn","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","prototype","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","makeDefaultHandle","actualType","registeredPointerRecord","toType","dp","init_ClassHandle","ClassHandle","leftClass","left","rightClass","right","clone","createNamedFunction","body","ensureOverloadTable","proto","methodName","humanName","prevFunc","exposePublicSymbol","numArguments","char_0","char_9","makeLegalFunctionName","RegisteredClass","constructor","instancePrototype","baseClass","getActualType","upcast","downcast","upcastPointer","constNoSmartPtrRawPointerToWireType","embindRepr","handleClass","genericPointerToWireType","clonedHandle","Emval","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","registeredClass","isReference","isConst","isSmartPointer","pointeeType","sharingPolicy","rawGetPointee","rawShare","replacePublicSymbol","dynCallLegacy","sig","wasmTableMirror","getWasmTableEntry","funcPtr","dynCall","rtn","getDynCaller","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","extendError","baseErrorType","errorName","errorClass","stack","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","basePrototype","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","count","firstElement","array","usesDestructorStack","argTypes","newFunc","argumentList","dummy","r","createJsInvoker","isClassMethodFunc","returns","isAsync","needsDestructorStack","argCount","argsList","argsListWired","invokerFnBody","dtorStack","args1","paramName","craftInvokerFunction","classType","cppInvokerFunc","cppTargetFunc","closureArgs","invokerFn","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","getFunctionName","argsIndex","__embind_register_class_function","rawInvoker","context","isPureVirtual","unboundTypesHandler","method","memberFunction","emval_freelist","emval_handles","__emval_decref","count_emval_handles","init_emval","EmValType","__embind_register_emval","enumReadValueFromPointer","width","signed","__embind_register_enum","isSigned","ctor","requireRegisteredType","impl","__embind_register_enum_value","rawEnumType","enumValue","enumType","Enum","Value","floatReadValueFromPointer","__embind_register_float","__embind_register_function","invokerArgsArray","integerReadValueFromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_optional","rawOptionalType","stringToUTF8Array","str","heap","outIdx","maxBytesToWrite","startIdx","endIdx","u1","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF8Decoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endPtr","u0","u2","ch","UTF8ToString","__embind_register_std_string","stdStringIsUTF8","length","payload","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","valueIsOfTypeString","_malloc","charCode","UTF16Decoder","UTF16ToString","maxIdx","codeUnit","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","stringToUTF32","trailSurrogate","lengthBytesUTF32","__embind_register_std_wstring","charSize","decodeString","encodeString","readCharAt","lengthBytesUTF","maxReadBytes","__embind_register_value_object","constructorSignature","__embind_register_value_object_field","getterSignature","setterSignature","__embind_register_void","__emscripten_memcpy_js","dest","src","num","emval_returnValue","returnType","destructorsRef","__emval_as","emval_symbols","getStringOrSymbol","address","symbol","emval_methodCallers","__emval_call_method","caller","objHandle","__emval_equals","first","second","emval_addMethodCaller","emval_lookupTypes","__emval_get_method_caller","kind","retType","functionBody","params","invokerFunction","functionName","__emval_get_property","key","__emval_incref","__emval_new_cstring","__emval_new_object","__emval_run_destructors","__emval_set_property","__emval_take_value","arg","getHeapMax","growMemory","pages","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","newSize","replacement","ENV","getExecutableName","getEnvStrings","lang","env","strings","stringToAscii","buffer","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","PATH","splitPathRe","parts","allowAboveRoot","up","last","isAbsolute","trailingSlash","root","dir","lastSlash","paths","l","initRandomFill","view","crypto_module","randomFillSync","randomBytes","randomFill","PATH_FS","resolvedPath","resolvedAbsolute","from","to","trim","arr","start","end","fromParts","toParts","samePartsLength","outputParts","FS_stdin_getChar_buffer","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","FS_stdin_getChar","BUFSIZE","buf","bytesRead","fd","TTY","dev","ops","stream","tty","optional_actions","mmapAlloc","MEMFS","mount","parent","mode","node","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","attr","old_node","new_dir","new_name","new_node","entries","newname","oldpath","position","contents","canOwn","whence","prot","flags","allocated","mmapFlags","asyncLoad","noRunDep","dep","arrayBuffer","event","FS_createDataFile","fileData","canRead","canWrite","preloadPlugins","FS_handledByPreloadPlugin","byteArray","fullname","finish","handled","plugin","FS_createPreloadedFile","dontCreateFile","preFinish","processData","FS_modeStringToFlags","flagModes","FS_getMode","errno","rdev","opts","defaults","current","current_path","islast","link","lookup","parentid","hash","errCode","nodeName","flag","perms","isdir","origStream","device","ma","mi","mounts","check","populate","completed","doCallback","done","mountpoint","pseudo","mountRoot","next","dirs","d","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","relative","dontFollow","uid","gid","atime","mtime","created","seeking","bytesWritten","cmd","stat","actualNumBytes","randomBuffer","randomLeft","randomByte","proc_self","input","output","dontResolveLastLink","part","properties","LazyUint8Array","chunkOffset","chunkNum","datalength","header","hasByteServing","usesGzip","chunkSize","doXHR","lazyArray","stream_ops","keys","writeChunks","SYSCALLS","dirfd","allowEmpty","dirstream","ctime","addr","_fd_close","doReadv","iov","iovcnt","curr","_fd_read","pnum","convertI32PairToI53Checked","lo","hi","_fd_seek","offset_low","offset_high","newOffset","doWritev","_fd_write","isLeapYear","year","arraySum","index","sum","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR","addDays","date","days","newDate","leap","currentMonth","daysInCurrentMonth","writeArrayToMemory","_strftime","s","maxsize","format","tm","tm_zone","pattern","EXPANSION_RULES_1","rule","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","compare","getFirstWeekStartDate","janFourth","getWeekBasedYear","thisDate","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","twelveHour","jan1","dec31","off","ahead","bytes","_strftime_l","loc","uleb128Encode","target","sigToWasmTypes","typeNames","generateFuncType","sigRet","sigParam","typeCodes","convertJsFunctionToWasm","typeSectionBody","wrappedFunc","updateTableMap","functionsInTableMap","item","getFunctionAddress","freeTableIndexes","getEmptyTableSlot","setWasmTableEntry","wrapped","invoke_d","invoke_diii","invoke_diiiii","invoke_ff","invoke_fii","invoke_fiif","invoke_fiii","invoke_i","invoke_ii","invoke_iii","invoke_iiii","invoke_iiiii","invoke_iiiiii","invoke_iiiiiii","invoke_iiiiiiii","invoke_iiiiiiiiiiii","invoke_iiij","invoke_jiiii","invoke_v","invoke_vi","invoke_vidi","invoke_vii","invoke_viiddi","invoke_viidi","invoke_viidiidid","invoke_viif","invoke_viiff","invoke_viifff","invoke_viififi","invoke_viii","invoke_viiif","invoke_viiifffi","invoke_viiii","invoke_viiiii","invoke_viiiiid","invoke_viiiiif","invoke_viiiiii","invoke_viiiiiii","invoke_viiiiiiiii","invoke_viiiiiiiiifiii","invoke_viiiiiiiiii","invoke_viiiiiiiiiiiiiii","invoke_viiiiiiiiiiiiiiiiii","a0","a1","a2","dynCall_iiij","a3","a4","a5","a6","dynCall_jiiii","a7","a8","a9","sp","a10","a11","a12","a13","a14","a15","a16","a17","a18","calledRun","runCaller","doRun"],"sources":["../../built/manifold.js"],"sourcesContent":["\nvar Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nasync function(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import(\"module\");var require=createRequire(import.meta.url)}var _ManifoldInitialized=false;Module.setup=function(){if(_ManifoldInitialized)return;_ManifoldInitialized=true;function toVec(vec,list,f=(x=>x)){if(list){for(let x of list){vec.push_back(f(x))}}return vec}function fromVec(vec,f=(x=>x)){const result=[];const size=vec.size();for(let i=0;ix)){const result=[];const nPoly=vec.size();for(let i=0;itoVec(new Module.Vector_vec2,poly,p=>{if(p instanceof Array)return{x:p[0],y:p[1]};return p}))}function disposePolygons(polygonsVec){for(let i=0;iresult.min[f]),max:[\"x\",\"y\"].map(f=>result.max[f])}};Module.CrossSection.prototype.offset=function(delta,joinType=\"Square\",miterLimit=2,circularSegments=0){return this._Offset(delta,joinTypeToInt(joinType),miterLimit,circularSegments)};Module.CrossSection.prototype.extrude=function(height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){scaleTop=vararg2vec2([scaleTop]);const man=Module._Extrude(this._ToPolygons(),height,nDivisions,twistDegrees,scaleTop);return center?man.translate([0,0,-height/2]):man};Module.CrossSection.prototype.revolve=function(circularSegments=0,revolveDegrees=360){return Module._Revolve(this._ToPolygons(),circularSegments,revolveDegrees)};Module.CrossSection.prototype.add=function(other){return this._add(cross(other))};Module.CrossSection.prototype.subtract=function(other){return this._subtract(cross(other))};Module.CrossSection.prototype.intersect=function(other){return this._intersect(cross(other))};Module.CrossSection.prototype.toPolygons=function(){const vec=this._ToPolygons();const result=vec2polygons(vec);vec.delete();return result};Module.Manifold.prototype.smoothOut=function(minSharpAngle=60,minSmoothness=0){return this._SmoothOut(minSharpAngle,minSmoothness)};Module.Manifold.prototype.warp=function(func){const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,\"float\");const y=getValue(vec3Ptr+4,\"float\");const z=getValue(vec3Ptr+8,\"float\");const vert=[x,y,z];func(vert);setValue(vec3Ptr,vert[0],\"float\");setValue(vec3Ptr+4,vert[1],\"float\");setValue(vec3Ptr+8,vert[2],\"float\")},\"vi\");const out=this._Warp(wasmFuncPtr);removeFunction(wasmFuncPtr);const status=out.status();if(status.value!==0){throw new Module.ManifoldError(status.value)}return out};Module.Manifold.prototype.calculateNormals=function(normalIdx,minSharpAngle=60){return this._CalculateNormals(normalIdx,minSharpAngle)};Module.Manifold.prototype.setProperties=function(numProp,func){const oldNumProp=this.numProp();const wasmFuncPtr=addFunction(function(newPtr,vec3Ptr,oldPtr){const newProp=[];for(let i=0;iresult.min[f]),max:[\"x\",\"y\",\"z\"].map(f=>result.max[f])}};class Mesh{constructor({numProp:numProp=3,triVerts:triVerts=new Uint32Array,vertProperties:vertProperties=new Float32Array,mergeFromVert:mergeFromVert,mergeToVert:mergeToVert,runIndex:runIndex,runOriginalID:runOriginalID,faceID:faceID,halfedgeTangent:halfedgeTangent,runTransform:runTransform}={}){this.numProp=numProp;this.triVerts=triVerts;this.vertProperties=vertProperties;this.mergeFromVert=mergeFromVert;this.mergeToVert=mergeToVert;this.runIndex=runIndex;this.runOriginalID=runOriginalID;this.faceID=faceID;this.halfedgeTangent=halfedgeTangent;this.runTransform=runTransform}get numTri(){return this.triVerts.length/3}get numVert(){return this.vertProperties.length/this.numProp}get numRun(){return this.runOriginalID.length}merge(){const{changed:changed,mesh:mesh}=Module._Merge(this);Object.assign(this,{...mesh});return changed}verts(tri){return this.triVerts.subarray(3*tri,3*(tri+1))}position(vert){return this.vertProperties.subarray(numProp*vert,numProp*vert+3)}extras(vert){return this.vertProperties.subarray(numProp*vert+3,numProp*(vert+1))}tangent(halfedge){return this.halfedgeTangent.subarray(4*halfedge,4*(halfedge+1))}transform(run){const mat4=new Array(16);for(const col of[0,1,2,3]){for(const row of[0,1,2]){mat4[4*col+row]=this.runTransform[12*run+3*col+row]}}mat4[15]=1;return mat4}}Module.Mesh=Mesh;Module.Manifold.prototype.getMesh=function(normalIdx=[0,0,0]){if(normalIdx instanceof Array)normalIdx={0:normalIdx[0],1:normalIdx[1],2:normalIdx[2]};return new Mesh(this._GetMeshJS(normalIdx))};Module.ManifoldError=function ManifoldError(code,...args){let message=\"Unknown error\";switch(code){case Module.status.NonFiniteVertex.value:message=\"Non-finite vertex\";break;case Module.status.NotManifold.value:message=\"Not manifold\";break;case Module.status.VertexOutOfBounds.value:message=\"Vertex index out of bounds\";break;case Module.status.PropertiesWrongLength.value:message=\"Properties have wrong length\";break;case Module.status.MissingPositionProperties.value:message=\"Less than three properties\";break;case Module.status.MergeVectorsDifferentLengths.value:message=\"Merge vectors have different lengths\";break;case Module.status.MergeIndexOutOfBounds.value:message=\"Merge index out of bounds\";break;case Module.status.TransformWrongLength.value:message=\"Transform vector has wrong length\";break;case Module.status.RunIndexWrongLength.value:message=\"Run index vector has wrong length\";break;case Module.status.FaceIDWrongLength.value:message=\"Face ID vector has wrong length\";case Module.status.InvalidConstruction.value:message=\"Manifold constructed with invalid parameters\"}const base=Error.apply(this,[message,...args]);base.name=this.name=\"ManifoldError\";this.message=base.message;this.stack=base.stack;this.code=code};Module.ManifoldError.prototype=Object.create(Error.prototype,{constructor:{value:Module.ManifoldError,writable:true,configurable:true}});Module.CrossSection=function(polygons,fillRule=\"Positive\"){const polygonsVec=polygons2vec(polygons);const cs=new CrossSectionCtor(polygonsVec,fillRuleToInt(fillRule));disposePolygons(polygonsVec);return cs};Module.CrossSection.ofPolygons=function(polygons,fillRule=\"Positive\"){return new Module.CrossSection(polygons,fillRule)};Module.CrossSection.square=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1};else if(typeof args[0]==\"number\")size={x:args[0],y:args[0]};else size=vararg2vec2(args);const center=args[1]||false;return Module._Square(size,center)};Module.CrossSection.circle=function(radius,circularSegments=0){return Module._Circle(radius,circularSegments)};function crossSectionBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_crossSection;for(const cs of args)v.push_back(cross(cs));const result=Module[\"_crossSection\"+name](v);v.delete();return result}}Module.CrossSection.compose=crossSectionBatchbool(\"Compose\");Module.CrossSection.union=crossSectionBatchbool(\"UnionN\");Module.CrossSection.difference=crossSectionBatchbool(\"DifferenceN\");Module.CrossSection.intersection=crossSectionBatchbool(\"IntersectionN\");function pushVec2(vec,ps){toVec(vec,ps,p=>{if(p instanceof Array)return{x:p[0],y:p[1]};return p})}Module.CrossSection.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec2;for(const cs of args){if(cs instanceof CrossSectionCtor){Module._crossSectionCollectVertices(pts,cs)}else if(cs instanceof Array&&cs.length==2&&typeof cs[0]==\"number\"){pts.push_back({x:cs[0],y:cs[1]})}else if(cs.x){pts.push_back(cs)}else{const wrap=cs[0].length==2&&typeof cs[0][0]==\"number\"||cs[0].x;const polys=wrap?[cs]:cs;for(const poly of polys)pushVec2(pts,poly)}}const result=Module._crossSectionHullPoints(pts);pts.delete();return result};Module.CrossSection.prototype=Object.create(CrossSectionCtor.prototype);Object.defineProperty(Module.CrossSection,Symbol.hasInstance,{get:()=>t=>t instanceof CrossSectionCtor});const ManifoldCtor=Module.Manifold;Module.Manifold=function(mesh){const manifold=new ManifoldCtor(mesh);const status=manifold.status();if(status.value!==0){throw new Module.ManifoldError(status.value)}return manifold};Module.Manifold.ofMesh=function(mesh){return new Module.Manifold(mesh)};Module.Manifold.tetrahedron=function(){return Module._Tetrahedron()};Module.Manifold.cube=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1,z:1};else if(typeof args[0]==\"number\")size={x:args[0],y:args[0],z:args[0]};else size=vararg2vec3(args);const center=args[1]||false;return Module._Cube(size,center)};Module.Manifold.cylinder=function(height,radiusLow,radiusHigh=-1,circularSegments=0,center=false){return Module._Cylinder(height,radiusLow,radiusHigh,circularSegments,center)};Module.Manifold.sphere=function(radius,circularSegments=0){return Module._Sphere(radius,circularSegments)};Module.Manifold.smooth=function(mesh,sharpenedEdges=[]){const sharp=new Module.Vector_smoothness;toVec(sharp,sharpenedEdges);const result=Module._Smooth(mesh,sharp);sharp.delete();return result};Module.Manifold.extrude=function(polygons,height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,\"Positive\");return cs.extrude(height,nDivisions,twistDegrees,scaleTop,center)};Module.Manifold.revolve=function(polygons,circularSegments=0,revolveDegrees=360){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,\"Positive\");return cs.revolve(circularSegments,revolveDegrees)};Module.Manifold.reserveIDs=function(n){return Module._ReserveIDs(n)};Module.Manifold.compose=function(manifolds){const vec=new Module.Vector_manifold;toVec(vec,manifolds);const result=Module._manifoldCompose(vec);vec.delete();return result};function manifoldBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_manifold;for(const m of args)v.push_back(m);const result=Module[\"_manifold\"+name+\"N\"](v);v.delete();return result}}Module.Manifold.union=manifoldBatchbool(\"Union\");Module.Manifold.difference=manifoldBatchbool(\"Difference\");Module.Manifold.intersection=manifoldBatchbool(\"Intersection\");Module.Manifold.levelSet=function(sdf,bounds,edgeLength,level=0,precision=-1){const bounds2={min:{x:bounds.min[0],y:bounds.min[1],z:bounds.min[2]},max:{x:bounds.max[0],y:bounds.max[1],z:bounds.max[2]}};const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,\"float\");const y=getValue(vec3Ptr+4,\"float\");const z=getValue(vec3Ptr+8,\"float\");const vert=[x,y,z];return sdf(vert)},\"fi\");const out=Module._LevelSet(wasmFuncPtr,bounds2,edgeLength,level,precision);removeFunction(wasmFuncPtr);return out};function pushVec3(vec,ps){toVec(vec,ps,p=>{if(p instanceof Array)return{x:p[0],y:p[1],z:p[2]};return p})}Module.Manifold.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec3;for(const m of args){if(m instanceof ManifoldCtor){Module._manifoldCollectVertices(pts,m)}else if(m instanceof Array&&m.length==3&&typeof m[0]==\"number\"){pts.push_back({x:m[0],y:m[1],z:m[2]})}else if(m.x){pts.push_back(m)}else{pushVec3(pts,m)}}const result=Module._manifoldHullPoints(pts);pts.delete();return result};Module.Manifold.prototype=Object.create(ManifoldCtor.prototype);Object.defineProperty(Module.Manifold,Symbol.hasInstance,{get:()=>t=>t instanceof ManifoldCtor});Module.triangulate=function(polygons,precision=-1){const polygonsVec=polygons2vec(polygons);const result=fromVec(Module._Triangulate(polygonsVec,precision),x=>[x[0],x[1],x[2]]);disposePolygons(polygonsVec);return result}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var nodePath=require(\"path\");scriptDirectory=require(\"url\").fileURLToPath(new URL(\"./\",import.meta.url));read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:\"utf8\",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module[\"thisProgram\"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\\\/g,\"/\")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{if(isFileURI(url)){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null);return}fetch(url,{credentials:\"same-origin\"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+\" : \"+response.url))}).then(onload,onerror)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith(\"file://\");function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"manifold.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"manifold.wasm\",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch==\"function\"){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\"Ma\"];updateMemoryViews();wasmTable=wasmExports[\"Pa\"];addOnInit(wasmExports[\"Na\"]);removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":return HEAP8[ptr];case\"i8\":return HEAP8[ptr];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":abort(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];case\"*\":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module[\"noExitRuntime\"]||true;function setValue(ptr,value,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":HEAP8[ptr]=value;break;case\"i8\":HEAP8[ptr]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":abort(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;case\"*\":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort(\"no exception to throw\")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var __abort_js=()=>{abort(\"\")};var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function readPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType[\"fromWireType\"](getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,fromWireType:ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError(`Missing field: \"${fieldName}\"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this[\"fromWireType\"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,\"name\",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle[\"delete\"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistent public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,\"i\");var f=Module[\"dynCall_\"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([\", \"]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};function usesDestructorStack(argTypes){for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns||isAsync?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf(\"(\");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module[\"count_emval_handles\"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:\"emscripten::val\",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this[\"fromWireType\"](HEAP8[pointer])}:function(pointer){return this[\"fromWireType\"](HEAPU8[pointer])};case 2:return signed?function(pointer){return this[\"fromWireType\"](HEAP16[pointer>>1])}:function(pointer){return this[\"fromWireType\"](HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this[\"fromWireType\"](HEAP32[pointer>>2])}:function(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,\"enum\");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var embindRepr=v=>{if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var __embind_register_optional=(rawOptionalType,rawType)=>{__embind_register_emval(rawOptionalType)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value==\"string\")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType[\"toWireType\"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");return emval_returnValue(returnType,destructorsRef,handle)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var __emval_equals=(first,second)=>{first=Emval.toValue(first);second=Emval.toValue(second);return first==second};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],\"parameter \"+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\\n`;var offset=0;var argsList=[];if(kind===0){argsList.push(\"obj\")}var params=[\"retType\"];var args=[retType];for(var i=0;it.name).join(\", \")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](arg);return Emval.toHandle(v)};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");var randomFillSync=crypto_module[\"randomFillSync\"];if(randomFillSync){return view=>crypto_module[\"randomFillSync\"](view)}var randomBytes=crypto_module[\"randomBytes\"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort(\"initRandomDevice\")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes(\"EOF\"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[\".\",\"..\"];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\"\";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file \"${url}\" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\"ErrnoError\";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={\"%a\":date=>WEEKDAYS[date.tm_wday].substring(0,3),\"%A\":date=>WEEKDAYS[date.tm_wday],\"%b\":date=>MONTHS[date.tm_mon].substring(0,3),\"%B\":date=>MONTHS[date.tm_mon],\"%C\":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":date=>leadingNulls(date.tm_mday,2),\"%e\":date=>leadingSomething(date.tm_mday,2,\" \"),\"%g\":date=>getWeekBasedYear(date).toString().substring(2),\"%G\":getWeekBasedYear,\"%H\":date=>leadingNulls(date.tm_hour,2),\"%I\":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),\"%m\":date=>leadingNulls(date.tm_mon+1,2),\"%M\":date=>leadingNulls(date.tm_min,2),\"%n\":()=>\"\\n\",\"%p\":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}return\"PM\"},\"%S\":date=>leadingNulls(date.tm_sec,2),\"%t\":()=>\"\\t\",\"%u\":date=>date.tm_wday||7,\"%U\":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},\"%w\":date=>date.tm_wday,\"%W\":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":date=>(date.tm_year+1900).toString().substring(2),\"%Y\":date=>date.tm_year+1900,\"%z\":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":date=>date.tm_zone,\"%%\":()=>\"%\"};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var sigToWasmTypes=sig=>{var typeNames={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i{if(typeof WebAssembly.Function==\"function\"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports[\"f\"];return wrappedFunc};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var removeFunction=index=>{functionsInTableMap.delete(getWasmTableEntry(index));setWasmTableEntry(index,null);freeTableIndexes.push(index)};InternalError=Module[\"InternalError\"]=class InternalError extends Error{constructor(message){super(message);this.name=\"InternalError\"}};embind_init_charCodes();BindingError=Module[\"BindingError\"]=class BindingError extends Error{constructor(message){super(message);this.name=\"BindingError\"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={F:___cxa_begin_catch,J:___cxa_end_catch,a:___cxa_find_matching_catch_2,k:___cxa_find_matching_catch_3,na:___cxa_rethrow,h:___cxa_throw,ma:___cxa_uncaught_exceptions,e:___resumeException,fa:__abort_js,Da:__embind_finalize_value_object,ea:__embind_register_bigint,Aa:__embind_register_bool,z:__embind_register_class,y:__embind_register_class_constructor,j:__embind_register_class_function,za:__embind_register_emval,S:__embind_register_enum,u:__embind_register_enum_value,$:__embind_register_float,o:__embind_register_function,C:__embind_register_integer,t:__embind_register_memory_view,D:__embind_register_optional,_:__embind_register_std_string,R:__embind_register_std_wstring,G:__embind_register_value_object,Ea:__embind_register_value_object_field,Ca:__embind_register_void,pa:__emscripten_memcpy_js,Ia:__emval_as,va:__emval_call_method,Ka:__emval_decref,Ha:__emval_equals,Ba:__emval_get_method_caller,Ja:__emval_get_property,Ga:__emval_incref,M:__emval_new_cstring,aa:__emval_new_object,ja:__emval_run_destructors,La:__emval_set_property,I:__emval_take_value,oa:_emscripten_resize_heap,ha:_environ_get,ia:_environ_sizes_get,ka:_fd_close,la:_fd_read,ca:_fd_seek,V:_fd_write,sa:invoke_d,L:invoke_diii,w:invoke_diiiii,A:invoke_ff,P:invoke_fii,qa:invoke_fiif,T:invoke_fiii,q:invoke_i,c:invoke_ii,b:invoke_iii,m:invoke_iiii,l:invoke_iiiii,E:invoke_iiiiii,B:invoke_iiiiiii,U:invoke_iiiiiiii,O:invoke_iiiiiiiiiiii,da:invoke_iiij,ba:invoke_jiiii,i:invoke_v,g:invoke_vi,xa:invoke_vidi,f:invoke_vii,K:invoke_viiddi,Z:invoke_viidi,ya:invoke_viidiidid,s:invoke_viif,ua:invoke_viiff,ta:invoke_viifff,wa:invoke_viififi,d:invoke_viii,Q:invoke_viiif,Fa:invoke_viiifffi,n:invoke_viiii,x:invoke_viiiii,ra:invoke_viiiiid,Y:invoke_viiiiif,r:invoke_viiiiii,v:invoke_viiiiiii,W:invoke_viiiiiiiii,H:invoke_viiiiiiiiifiii,p:invoke_viiiiiiiiii,N:invoke_viiiiiiiiiiiiiii,X:invoke_viiiiiiiiiiiiiiiiii,ga:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"Na\"])();var ___getTypeName=a0=>(___getTypeName=wasmExports[\"Oa\"])(a0);var _free=a0=>(_free=wasmExports[\"Qa\"])(a0);var _malloc=a0=>(_malloc=wasmExports[\"Ra\"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports[\"Sa\"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports[\"Ta\"])(a0);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"Ua\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"Va\"])();var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports[\"Wa\"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports[\"Xa\"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports[\"Ya\"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports[\"Za\"])(a0);var dynCall_iiij=Module[\"dynCall_iiij\"]=(a0,a1,a2,a3,a4)=>(dynCall_iiij=Module[\"dynCall_iiij\"]=wasmExports[\"_a\"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module[\"dynCall_viijii\"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module[\"dynCall_viijii\"]=wasmExports[\"$a\"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module[\"dynCall_jiji\"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module[\"dynCall_jiji\"]=wasmExports[\"ab\"])(a0,a1,a2,a3,a4);var dynCall_jiiii=Module[\"dynCall_jiiii\"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module[\"dynCall_jiiii\"]=wasmExports[\"bb\"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=wasmExports[\"cb\"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=wasmExports[\"db\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=wasmExports[\"eb\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiifffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ff(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidi(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidiidid(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiddi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vidi(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viififi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viif(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiif(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiif(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiff(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viifff(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_d(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiid(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiif(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module[\"addFunction\"]=addFunction;Module[\"removeFunction\"]=removeFunction;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\n"],"file":"assets/manifold.js"} \ No newline at end of file diff --git a/assets/manifold.wasm b/assets/manifold.wasm new file mode 100644 index 000000000..eaebbe6ca Binary files /dev/null and b/assets/manifold.wasm differ diff --git a/assets/manifoldCAD.js b/assets/manifoldCAD.js new file mode 100644 index 000000000..8707551a3 --- /dev/null +++ b/assets/manifoldCAD.js @@ -0,0 +1,21 @@ +import"./modulepreload-polyfill.js";function ne(){return new Worker("/assets/worker-wrapper-c2317b92.js",{type:"module"})}const T="",y=self.examples.functionBodies;navigator.serviceWorker&&navigator.serviceWorker.register("/service-worker.js",{scope:"./index.html"});let l;const oe=document.querySelector("#undo"),le=document.querySelector("#redo"),ce=document.querySelector("#format"),ie=document.querySelector("#share");oe.onclick=()=>l.trigger("ignored","undo");le.onclick=()=>l.trigger("ignored","redo");ce.onclick=()=>l.trigger("ignored","editor.action.formatDocument");ie.onclick=()=>{const e=new URL(window.location.toString());e.hash="#"+encodeURIComponent(m.textContent+T+l.getValue()),navigator.clipboard.writeText(e.toString()),console.log("Shareable link copied to clipboard!"),console.log("Consider shortening this URL using tinyURL.com")};const re=document.querySelector("#file"),m=document.querySelector("#current"),H=document.querySelector("#file .uparrow"),I=document.querySelector("#fileDropdown"),$=document.querySelector("#save"),h=document.querySelector("#saveDropdown"),E=document.querySelector("#save .uparrow"),se=function(){I.classList.remove("show"),h.classList.remove("show"),H.classList.remove("down"),E.classList.remove("down")},ae=function(e){e.stopPropagation(),I.classList.toggle("show"),H.classList.toggle("down")},ue=function(e){e.stopPropagation(),h.classList.toggle("show"),E.classList.toggle("down")};re.onclick=ae;E.parentElement.onclick=ue;document.body.onclick=se;const C="ManifoldCAD";function L(e){return window.localStorage.getItem(C+e)}function g(e,n){window.localStorage.setItem(C+e,n)}function z(e){window.localStorage.removeItem(C+e)}function de(e){if(e>=window.localStorage.length)return;const n=window.localStorage.key(e);if(n.startsWith(C))return n.slice(C.length)}function R(){if(l){const e=m.textContent;y.get(e)||g(e,l.getValue())}}window.onpagehide=R;window.beforeunload=R;let q=!1,U=!0;function w(e){if(l){q=!0,m.textContent=e,g("currentName",e),U=y.get(e)!=null;const n=U?y.get(e).substring(1):L(e)??"";window.location.hash="#"+e,l.setValue(n)}}function D(e){const n=document.createElement("div");n.classList.add("item");const t=document.createElement("button");n.appendChild(t),t.type="button",t.classList.add("blue","item");const o=document.createElement("span");return t.appendChild(o),o.textContent=e,t.onclick=function(){R(),w(o.textContent)},t.onkeyup=function(c){c.preventDefault()},t}function N(e){const n=document.createElement("button");return n.classList.add("icon"),e.parentElement.appendChild(n),n}function K(e){let n=1,t=e;for(;L(t)!=null||y.get(t)!=null;)t=e+" "+n++;return t}function _(e){const n=e.firstChild,t=N(e);t.classList.add("edit"),t.onclick=function(f){f.stopPropagation();const s=n.textContent,ee=L(s),v=document.createElement("form"),a=document.createElement("input");a.classList.add("name"),a.value=s,n.textContent="",e.appendChild(v),v.appendChild(a),a.focus(),a.setSelectionRange(0,s.length);function te(){const S=a.value;if(a.blur(),!S)return;const M=K(S);n.textContent=M,m.textContent==s&&(m.textContent=M),z(s),g(M,ee)}v.onsubmit=te,a.onclick=function(S){S.stopPropagation()},a.onblur=function(){e.removeChild(v),n.textContent=s}};const o=N(e);o.classList.add("trash");let c=0;o.onclick=function(f){if(f.stopPropagation(),e.classList.contains("blue"))c=performance.now(),e.classList.remove("blue"),e.classList.add("red"),document.body.addEventListener("click",function(){e.classList.add("blue"),e.classList.remove("red")},{once:!0});else if(performance.now()-c>500){z(n.textContent),m.textContent==n.textContent&&w("Intro");const s=e.parentElement;s.parentElement.removeChild(s)}}}const W=document.querySelector("#new");function B(e,n=void 0){const t=K(n??"New Script");g(t,e);const o=D(t);return W.insertAdjacentElement("afterend",o.parentElement),_(o),{button:o,name:t}}W.onclick=function(){B("").button.click()};const r=document.querySelector("#compile"),G=document.querySelector("#poster");let A=!1,x=!0;function J(){r.disabled=!1,x?r.click():G.textContent="Auto-run disabled"}let j;async function fe(){const e=await fetch("/manifold-global-types.d.ts").then(t=>t.text()),n=await fetch("/manifold-encapsulated-types.d.ts").then(t=>t.text());return` +${e.replaceAll("export","")} +${n.replace(/^import.*$/gm,"").replaceAll("export","declare")} +declare interface ManifoldToplevel { + CrossSection: typeof T.CrossSection; + Manifold: typeof T.Manifold; + Mesh: typeof T.Mesh; + triangulate: typeof T.triangulate; + setMinCircularAngle: typeof T.setMinCircularAngle; + setMinCircularEdgeLength: typeof T.setMinCircularEdgeLength; + setCircularSegments: typeof T.setCircularSegments; + getCircularSegments: typeof T.getCircularSegments; + resetToCircularDefaults: typeof T.resetToCircularDefaults; + setup: () => void; +} +declare const module: ManifoldToplevel; +`}async function me(){return`${(await fetch("/editor.d.ts").then(n=>n.text())).replace(/^import.*$/gm,"")}`}require.config({paths:{vs:"https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.34.0/min/vs"}});require(["vs/editor/editor.main"],async function(){monaco.languages.typescript.typescriptDefaults.addExtraLib(await fe()),monaco.languages.typescript.typescriptDefaults.addExtraLib(await me()),l=monaco.editor.create(document.getElementById("editor"),{language:"typescript",automaticLayout:!0}),j=await(await monaco.languages.typescript.getTypeScriptWorker())(l.getModel().uri),l.getModel().updateOptions({tabSize:2});for(const[t]of y){const o=D(t);I.appendChild(o.parentElement)}let n=m.textContent;for(let t=0;t0){const t=decodeURIComponent(window.location.hash.substring(1)),o=t.indexOf(T);if(o!=-1){x=!0;const c=t.substring(0,o);w(B(t.substring(o+T.length),c).name)}else t!=n&&(x=!0),w(t)}else w(n);A&&J(),l.onDidChangeModelContent(t=>{if(r.disabled=!1,q){q=!1,l.setScrollTop(0);return}if(U){const o=l.getPosition();B(l.getValue()).button.click(),l.setPosition(o)}}),window.onresize=()=>{l.layout({})}});const u=document.querySelector("model-viewer"),pe=document.querySelector("#animation"),b=document.querySelector("#play"),p=document.querySelector("#scrubber");let P=!1;u.addEventListener("load",()=>{const e=u.availableAnimations.length>0;pe.style.display=e?"flex":"none",e&&Q()});function Q(){u.play(),b.classList.remove("play"),b.classList.add("pause"),P=!1,p.classList.add("hide")}function ge(){u.pause(),b.classList.remove("pause"),b.classList.add("play"),P=!0,p.max=u.duration,p.value=u.currentTime,p.classList.remove("hide")}b.onclick=function(){P?Q():ge()};p.oninput=function(){u.currentTime=p.value};const d=document.querySelector("#console"),he=console.log;console.log=function(e){d.textContent+=e+`\r +`,d.scrollTop=d.scrollHeight,he(e)};function we(){d.textContent=""}function ye(){r.firstChild.style.visibility="hidden",r.classList.add("red","cancel")}function Ce(){r.firstChild.style.visibility="visible",r.classList.remove("red","cancel")}let X=performance.now();function Y(){Ce();const e=performance.now(),n=d.textContent;d.textContent=n.substring(n.indexOf(` +`)+1),console.log(`Took ${(Math.round((e-X)/10)/100).toLocaleString()} seconds`)}const i={glbURL:null,threeMFURL:null};let k=null;function O(){k=new ne,k.onmessage=function(e){if(e.data==null){j!=null&&!A&&J(),A=!0;return}if(e.data.log!=null){d.textContent+=e.data.log+`\r +`,d.scrollTop=d.scrollHeight;return}Y(),r.disabled=!0,i.threeMFURL!=null&&(URL.revokeObjectURL(i.threeMFURL),i.threeMFURL=null),URL.revokeObjectURL(i.glbURL),i.glbURL=e.data.glbURL,i.threeMFURL=e.data.threeMFURL,F.disabled=i.threeMFURL==null,u.src=i.glbURL,i.glbURL==null?(u.showPoster(),G.textContent="Error",O()):g("safe","true")}}O();async function Le(){R(),g("safe","false"),ye(),we(),console.log("Running...");const e=await j.getEmitOutput(l.getModel().uri.toString());k.postMessage(e.outputFiles[0].text),X=performance.now()}function be(){k.terminate(),O(),Y(),console.log("Run canceled")}r.onclick=function(){r.classList.contains("cancel")?be():Le()};function Z(e,n,t){const o=e.parentElement;return()=>{const c=$.firstElementChild;c!==o&&(h.insertBefore(c,h.firstElementChild),$.insertBefore(o,h),o.appendChild(E.parentElement));const f=document.createElement("a");f.download=n,f.href=i[t],f.click()}}const V=document.querySelector("#glb");V.onclick=Z(V,"manifold.glb","glbURL");const F=document.querySelector("#threemf");F.onclick=Z(F,"manifold.3mf","threeMFURL"); +//# sourceMappingURL=manifoldCAD.js.map diff --git a/assets/manifoldCAD.js.map b/assets/manifoldCAD.js.map new file mode 100644 index 000000000..60b2d687d --- /dev/null +++ b/assets/manifoldCAD.js.map @@ -0,0 +1 @@ +{"version":3,"file":"manifoldCAD.js","sources":["../../editor.js"],"sourcesContent":["// Copyright 2022 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport ManifoldWorker from './worker-wrapper?worker';\n\nconst CODE_START = '';\n// Loaded globally by examples.js\nconst exampleFunctions = self.examples.functionBodies;\n\nif (navigator.serviceWorker) {\n navigator.serviceWorker.register(\n '/service-worker.js', {scope: './index.html'});\n}\n\nlet editor = undefined;\n\n// Edit UI ------------------------------------------------------------\n\nconst undoButton = document.querySelector('#undo');\nconst redoButton = document.querySelector('#redo');\nconst formatButton = document.querySelector('#format');\nconst shareButton = document.querySelector('#share');\n\nundoButton.onclick = () => editor.trigger('ignored', 'undo');\nredoButton.onclick = () => editor.trigger('ignored', 'redo');\nformatButton.onclick = () =>\n editor.trigger('ignored', 'editor.action.formatDocument');\nshareButton.onclick = () => {\n const url = new URL(window.location.toString());\n url.hash =\n '#' +\n encodeURIComponent(\n currentFileElement.textContent + CODE_START + editor.getValue());\n navigator.clipboard.writeText(url.toString());\n console.log('Shareable link copied to clipboard!');\n console.log('Consider shortening this URL using tinyURL.com');\n};\n\n// File UI ------------------------------------------------------------\nconst fileButton = document.querySelector('#file');\nconst currentFileElement = document.querySelector('#current');\nconst fileArrow = document.querySelector('#file .uparrow');\nconst fileDropdown = document.querySelector('#fileDropdown');\nconst saveContainer = document.querySelector('#save');\nconst saveDropdown = document.querySelector('#saveDropdown');\nconst saveArrow = document.querySelector('#save .uparrow');\n\nconst hideDropdown = function() {\n fileDropdown.classList.remove('show');\n saveDropdown.classList.remove('show');\n fileArrow.classList.remove('down');\n saveArrow.classList.remove('down');\n};\nconst toggleFileDropdown = function(event) {\n event.stopPropagation();\n fileDropdown.classList.toggle('show');\n fileArrow.classList.toggle('down');\n};\nconst toggleSaveDropdown = function(event) {\n event.stopPropagation();\n saveDropdown.classList.toggle('show');\n saveArrow.classList.toggle('down');\n};\nfileButton.onclick = toggleFileDropdown;\nsaveArrow.parentElement.onclick = toggleSaveDropdown;\ndocument.body.onclick = hideDropdown;\n\nconst prefix = 'ManifoldCAD';\nfunction getScript(name) {\n return window.localStorage.getItem(prefix + name);\n}\nfunction setScript(name, code) {\n window.localStorage.setItem(prefix + name, code);\n}\nfunction removeScript(name) {\n window.localStorage.removeItem(prefix + name);\n}\nfunction nthKey(n) {\n if (n >= window.localStorage.length) return;\n const key = window.localStorage.key(n);\n if (key.startsWith(prefix)) {\n return key.slice(prefix.length);\n }\n}\n\nfunction saveCurrent() {\n if (editor) {\n const currentName = currentFileElement.textContent;\n if (!exampleFunctions.get(currentName)) {\n setScript(currentName, editor.getValue());\n }\n }\n};\n\nwindow.onpagehide = saveCurrent;\nwindow.beforeunload = saveCurrent;\n\nlet switching = false;\nlet isExample = true;\nfunction switchTo(scriptName) {\n if (editor) {\n switching = true;\n currentFileElement.textContent = scriptName;\n setScript('currentName', scriptName);\n isExample = exampleFunctions.get(scriptName) != null;\n const code = isExample ? exampleFunctions.get(scriptName).substring(1) :\n getScript(scriptName) ?? '';\n window.location.hash = '#' + scriptName;\n editor.setValue(code);\n }\n}\n\nfunction createDropdownItem(name) {\n const container = document.createElement('div');\n container.classList.add('item');\n const button = document.createElement('button');\n container.appendChild(button);\n button.type = 'button';\n button.classList.add('blue', 'item');\n const label = document.createElement('span');\n button.appendChild(label);\n label.textContent = name;\n\n button.onclick = function() {\n saveCurrent();\n switchTo(label.textContent);\n };\n // Stop text input spaces from triggering the button\n button.onkeyup = function(event) {\n event.preventDefault();\n };\n return button;\n}\n\nfunction addIcon(button) {\n const icon = document.createElement('button');\n icon.classList.add('icon');\n button.parentElement.appendChild(icon);\n return icon;\n}\n\nfunction uniqueName(name) {\n let num = 1;\n let newName = name;\n while (getScript(newName) != null || exampleFunctions.get(newName) != null) {\n newName = name + ' ' + num++;\n }\n return newName;\n}\n\nfunction addEdit(button) {\n const label = button.firstChild;\n const edit = addIcon(button);\n edit.classList.add('edit');\n\n edit.onclick = function(event) {\n event.stopPropagation();\n const oldName = label.textContent;\n const code = getScript(oldName);\n const form = document.createElement('form');\n const inputElement = document.createElement('input');\n inputElement.classList.add('name');\n inputElement.value = oldName;\n label.textContent = '';\n button.appendChild(form);\n form.appendChild(inputElement);\n inputElement.focus();\n inputElement.setSelectionRange(0, oldName.length);\n\n function rename() {\n const input = inputElement.value;\n inputElement.blur();\n if (!input) return;\n const newName = uniqueName(input);\n label.textContent = newName;\n if (currentFileElement.textContent == oldName) {\n currentFileElement.textContent = newName;\n }\n removeScript(oldName);\n setScript(newName, code);\n }\n\n form.onsubmit = rename;\n inputElement.onclick = function(event) {\n event.stopPropagation();\n };\n\n inputElement.onblur = function() {\n button.removeChild(form);\n label.textContent = oldName;\n };\n };\n\n const trash = addIcon(button);\n trash.classList.add('trash');\n let lastClick = 0;\n\n trash.onclick = function(event) {\n event.stopPropagation();\n if (button.classList.contains('blue')) {\n lastClick = performance.now();\n button.classList.remove('blue');\n button.classList.add('red');\n document.body.addEventListener('click', function() {\n button.classList.add('blue');\n button.classList.remove('red');\n }, {once: true});\n } else if (performance.now() - lastClick > 500) {\n removeScript(label.textContent);\n if (currentFileElement.textContent == label.textContent) {\n switchTo('Intro');\n }\n const container = button.parentElement;\n container.parentElement.removeChild(container);\n }\n };\n}\n\nconst newButton = document.querySelector('#new');\nfunction newItem(code, scriptName = undefined) {\n const name = uniqueName(scriptName ?? 'New Script');\n setScript(name, code);\n const nextButton = createDropdownItem(name);\n newButton.insertAdjacentElement('afterend', nextButton.parentElement);\n addEdit(nextButton);\n return {button: nextButton, name};\n};\nnewButton.onclick = function() {\n newItem('').button.click();\n};\n\nconst runButton = document.querySelector('#compile');\nconst poster = document.querySelector('#poster');\nlet manifoldInitialized = false;\nlet autoExecute = true;\n\nfunction initializeRun() {\n runButton.disabled = false;\n if (autoExecute) {\n runButton.click();\n } else {\n poster.textContent = 'Auto-run disabled';\n }\n}\n\n// Editor ------------------------------------------------------------\nlet tsWorker = undefined;\n\nasync function getManifoldDTS() {\n const global = await fetch('/manifold-global-types.d.ts')\n .then(response => response.text());\n\n const encapsulated = await fetch('/manifold-encapsulated-types.d.ts')\n .then(response => response.text());\n\n return `\n${global.replaceAll('export', '')}\n${encapsulated.replace(/^import.*$/gm, '').replaceAll('export', 'declare')}\ndeclare interface ManifoldToplevel {\n CrossSection: typeof T.CrossSection;\n Manifold: typeof T.Manifold;\n Mesh: typeof T.Mesh;\n triangulate: typeof T.triangulate;\n setMinCircularAngle: typeof T.setMinCircularAngle;\n setMinCircularEdgeLength: typeof T.setMinCircularEdgeLength;\n setCircularSegments: typeof T.setCircularSegments;\n getCircularSegments: typeof T.getCircularSegments;\n resetToCircularDefaults: typeof T.resetToCircularDefaults;\n setup: () => void;\n}\ndeclare const module: ManifoldToplevel;\n`;\n}\n\nasync function getEditorDTS() {\n const global = await fetch('/editor.d.ts').then(response => response.text());\n return `${global.replace(/^import.*$/gm, '')}`;\n}\n\nrequire.config({\n paths:\n {vs: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.34.0/min/vs'}\n});\nrequire(['vs/editor/editor.main'], async function() {\n monaco.languages.typescript.typescriptDefaults.addExtraLib(\n await getManifoldDTS());\n monaco.languages.typescript.typescriptDefaults.addExtraLib(\n await getEditorDTS());\n editor = monaco.editor.create(\n document.getElementById('editor'),\n {language: 'typescript', automaticLayout: true});\n const w = await monaco.languages.typescript.getTypeScriptWorker();\n tsWorker = await w(editor.getModel().uri);\n editor.getModel().updateOptions({tabSize: 2});\n\n for (const [name] of exampleFunctions) {\n const button = createDropdownItem(name);\n fileDropdown.appendChild(button.parentElement);\n }\n\n let currentName = currentFileElement.textContent;\n\n for (let i = 0; i < window.localStorage.length; i++) {\n const key = nthKey(i);\n if (!key) continue;\n if (key === 'currentName') {\n currentName = getScript(key);\n } else if (key === 'safe') {\n autoExecute = getScript(key) !== 'false';\n } else {\n const button = createDropdownItem(key);\n newButton.insertAdjacentElement('afterend', button.parentElement);\n addEdit(button);\n }\n }\n\n if (window.location.hash.length > 0) {\n const fragment = decodeURIComponent(window.location.hash.substring(1));\n const codeIdx = fragment.indexOf(CODE_START);\n if (codeIdx != -1) {\n autoExecute = true;\n const name = fragment.substring(0, codeIdx);\n switchTo(\n newItem(fragment.substring(codeIdx + CODE_START.length), name).name);\n } else {\n if (fragment != currentName) {\n autoExecute = true;\n }\n switchTo(fragment);\n }\n } else {\n switchTo(currentName);\n }\n\n if (manifoldInitialized) {\n initializeRun();\n }\n\n editor.onDidChangeModelContent(e => {\n runButton.disabled = false;\n if (switching) {\n switching = false;\n editor.setScrollTop(0);\n return;\n }\n if (isExample) {\n const cursor = editor.getPosition();\n newItem(editor.getValue()).button.click();\n editor.setPosition(cursor);\n }\n });\n\n window.onresize = () => {\n editor.layout({});\n };\n});\n\n// Animation ------------------------------------------------------------\nconst mv = document.querySelector('model-viewer');\nconst animationContainer = document.querySelector('#animation');\nconst playButton = document.querySelector('#play');\nconst scrubber = document.querySelector('#scrubber');\nlet paused = false;\n\nmv.addEventListener('load', () => {\n const hasAnimation = mv.availableAnimations.length > 0;\n animationContainer.style.display = hasAnimation ? 'flex' : 'none';\n if (hasAnimation) {\n play();\n }\n});\n\nfunction play() {\n mv.play();\n playButton.classList.remove('play');\n playButton.classList.add('pause');\n paused = false;\n scrubber.classList.add('hide');\n}\n\nfunction pause() {\n mv.pause();\n playButton.classList.remove('pause');\n playButton.classList.add('play');\n paused = true;\n scrubber.max = mv.duration;\n scrubber.value = mv.currentTime;\n scrubber.classList.remove('hide');\n}\n\nplayButton.onclick = function() {\n if (paused) {\n play();\n } else {\n pause();\n }\n};\n\nscrubber.oninput = function() {\n mv.currentTime = scrubber.value;\n};\n\n// Execution ------------------------------------------------------------\nconst consoleElement = document.querySelector('#console');\nconst oldLog = console.log;\nconsole.log = function(message) {\n consoleElement.textContent += message + '\\r\\n';\n consoleElement.scrollTop = consoleElement.scrollHeight;\n oldLog(message);\n};\n\nfunction clearConsole() {\n consoleElement.textContent = '';\n}\n\nfunction enableCancel() {\n runButton.firstChild.style.visibility = 'hidden';\n runButton.classList.add('red', 'cancel');\n}\n\nfunction disableCancel() {\n runButton.firstChild.style.visibility = 'visible';\n runButton.classList.remove('red', 'cancel');\n}\n\nlet t0 = performance.now();\n\nfunction finishRun() {\n disableCancel();\n const t1 = performance.now();\n const log = consoleElement.textContent;\n // Remove \"Running...\"\n consoleElement.textContent = log.substring(log.indexOf('\\n') + 1);\n console.log(\n `Took ${(Math.round((t1 - t0) / 10) / 100).toLocaleString()} seconds`);\n}\n\nconst output = {\n glbURL: null,\n threeMFURL: null\n};\nlet manifoldWorker = null;\n\nfunction createWorker() {\n manifoldWorker = new ManifoldWorker();\n manifoldWorker.onmessage = function(e) {\n if (e.data == null) {\n if (tsWorker != null && !manifoldInitialized) {\n initializeRun();\n }\n manifoldInitialized = true;\n return;\n }\n\n if (e.data.log != null) {\n consoleElement.textContent += e.data.log + '\\r\\n';\n consoleElement.scrollTop = consoleElement.scrollHeight;\n return;\n }\n\n finishRun();\n runButton.disabled = true;\n\n if (output.threeMFURL != null) {\n URL.revokeObjectURL(output.threeMFURL);\n output.threeMFURL = null;\n }\n URL.revokeObjectURL(output.glbURL);\n output.glbURL = e.data.glbURL;\n output.threeMFURL = e.data.threeMFURL;\n threemfButton.disabled = output.threeMFURL == null;\n mv.src = output.glbURL;\n if (output.glbURL == null) {\n mv.showPoster();\n poster.textContent = 'Error';\n createWorker();\n } else {\n setScript('safe', 'true');\n }\n }\n}\n\ncreateWorker();\n\nasync function run() {\n saveCurrent();\n setScript('safe', 'false');\n enableCancel();\n clearConsole();\n console.log('Running...');\n const output = await tsWorker.getEmitOutput(editor.getModel().uri.toString());\n manifoldWorker.postMessage(output.outputFiles[0].text);\n t0 = performance.now();\n}\n\nfunction cancel() {\n manifoldWorker.terminate();\n createWorker();\n finishRun();\n console.log('Run canceled');\n}\n\nrunButton.onclick = function() {\n if (runButton.classList.contains('cancel')) {\n cancel();\n } else {\n run();\n }\n};\n\nfunction clickSave(saveButton, filename, outputName) {\n const container = saveButton.parentElement;\n return () => {\n const oldSave = saveContainer.firstElementChild;\n if (oldSave !== container) {\n saveDropdown.insertBefore(oldSave, saveDropdown.firstElementChild);\n saveContainer.insertBefore(container, saveDropdown);\n container.appendChild(saveArrow.parentElement);\n }\n const link = document.createElement('a');\n link.download = filename;\n link.href = output[outputName];\n link.click();\n };\n}\n\nconst glbButton = document.querySelector('#glb');\nglbButton.onclick = clickSave(glbButton, 'manifold.glb', 'glbURL');\n\nconst threemfButton = document.querySelector('#threemf');\nthreemfButton.onclick = clickSave(threemfButton, 'manifold.3mf', 'threeMFURL');\n"],"names":["CODE_START","exampleFunctions","editor","undoButton","redoButton","formatButton","shareButton","url","currentFileElement","fileButton","fileArrow","fileDropdown","saveContainer","saveDropdown","saveArrow","hideDropdown","toggleFileDropdown","event","toggleSaveDropdown","prefix","getScript","name","setScript","code","removeScript","nthKey","n","key","saveCurrent","currentName","switching","isExample","switchTo","scriptName","createDropdownItem","container","button","label","addIcon","icon","uniqueName","num","newName","addEdit","edit","oldName","form","inputElement","rename","input","trash","lastClick","newButton","newItem","nextButton","runButton","poster","manifoldInitialized","autoExecute","initializeRun","tsWorker","getManifoldDTS","global","response","encapsulated","getEditorDTS","i","fragment","codeIdx","e","cursor","mv","animationContainer","playButton","scrubber","paused","hasAnimation","play","pause","consoleElement","oldLog","message","clearConsole","enableCancel","disableCancel","t0","finishRun","t1","log","output","manifoldWorker","createWorker","ManifoldWorker","threemfButton","run","cancel","clickSave","saveButton","filename","outputName","oldSave","link","glbButton"],"mappings":"0HAgBA,MAAMA,EAAa,SAEbC,EAAmB,KAAK,SAAS,eAEnC,UAAU,eACZ,UAAU,cAAc,SACpB,qBAAsB,CAAC,MAAO,cAAc,CAAC,EAGnD,IAAIC,EAIJ,MAAMC,GAAa,SAAS,cAAc,OAAO,EAC3CC,GAAa,SAAS,cAAc,OAAO,EAC3CC,GAAe,SAAS,cAAc,SAAS,EAC/CC,GAAc,SAAS,cAAc,QAAQ,EAEnDH,GAAW,QAAU,IAAMD,EAAO,QAAQ,UAAW,MAAM,EAC3DE,GAAW,QAAU,IAAMF,EAAO,QAAQ,UAAW,MAAM,EAC3DG,GAAa,QAAU,IACnBH,EAAO,QAAQ,UAAW,8BAA8B,EAC5DI,GAAY,QAAU,IAAM,CAC1B,MAAMC,EAAM,IAAI,IAAI,OAAO,SAAS,SAAQ,CAAE,EAC9CA,EAAI,KACA,IACA,mBACIC,EAAmB,YAAcR,EAAaE,EAAO,SAAU,CAAA,EACvE,UAAU,UAAU,UAAUK,EAAI,SAAU,CAAA,EAC5C,QAAQ,IAAI,qCAAqC,EACjD,QAAQ,IAAI,gDAAgD,CAC9D,EAGA,MAAME,GAAa,SAAS,cAAc,OAAO,EAC3CD,EAAqB,SAAS,cAAc,UAAU,EACtDE,EAAY,SAAS,cAAc,gBAAgB,EACnDC,EAAe,SAAS,cAAc,eAAe,EACrDC,EAAgB,SAAS,cAAc,OAAO,EAC9CC,EAAe,SAAS,cAAc,eAAe,EACrDC,EAAY,SAAS,cAAc,gBAAgB,EAEnDC,GAAe,UAAW,CAC9BJ,EAAa,UAAU,OAAO,MAAM,EACpCE,EAAa,UAAU,OAAO,MAAM,EACpCH,EAAU,UAAU,OAAO,MAAM,EACjCI,EAAU,UAAU,OAAO,MAAM,CACnC,EACME,GAAqB,SAASC,EAAO,CACzCA,EAAM,gBAAe,EACrBN,EAAa,UAAU,OAAO,MAAM,EACpCD,EAAU,UAAU,OAAO,MAAM,CACnC,EACMQ,GAAqB,SAASD,EAAO,CACzCA,EAAM,gBAAe,EACrBJ,EAAa,UAAU,OAAO,MAAM,EACpCC,EAAU,UAAU,OAAO,MAAM,CACnC,EACAL,GAAW,QAAUO,GACrBF,EAAU,cAAc,QAAUI,GAClC,SAAS,KAAK,QAAUH,GAExB,MAAMI,EAAS,cACf,SAASC,EAAUC,EAAM,CACvB,OAAO,OAAO,aAAa,QAAQF,EAASE,CAAI,CAClD,CACA,SAASC,EAAUD,EAAME,EAAM,CAC7B,OAAO,aAAa,QAAQJ,EAASE,EAAME,CAAI,CACjD,CACA,SAASC,EAAaH,EAAM,CAC1B,OAAO,aAAa,WAAWF,EAASE,CAAI,CAC9C,CACA,SAASI,GAAOC,EAAG,CACjB,GAAIA,GAAK,OAAO,aAAa,OAAQ,OACrC,MAAMC,EAAM,OAAO,aAAa,IAAID,CAAC,EACrC,GAAIC,EAAI,WAAWR,CAAM,EACvB,OAAOQ,EAAI,MAAMR,EAAO,MAAM,CAElC,CAEA,SAASS,GAAc,CACrB,GAAI1B,EAAQ,CACV,MAAM2B,EAAcrB,EAAmB,YAClCP,EAAiB,IAAI4B,CAAW,GACnCP,EAAUO,EAAa3B,EAAO,SAAU,CAAA,CAE3C,CACH,CAEA,OAAO,WAAa0B,EACpB,OAAO,aAAeA,EAEtB,IAAIE,EAAY,GACZC,EAAY,GAChB,SAASC,EAASC,EAAY,CAC5B,GAAI/B,EAAQ,CACV4B,EAAY,GACZtB,EAAmB,YAAcyB,EACjCX,EAAU,cAAeW,CAAU,EACnCF,EAAY9B,EAAiB,IAAIgC,CAAU,GAAK,KAChD,MAAMV,EAAOQ,EAAY9B,EAAiB,IAAIgC,CAAU,EAAE,UAAU,CAAC,EAC5Cb,EAAUa,CAAU,GAAK,GAClD,OAAO,SAAS,KAAO,IAAMA,EAC7B/B,EAAO,SAASqB,CAAI,CACrB,CACH,CAEA,SAASW,EAAmBb,EAAM,CAChC,MAAMc,EAAY,SAAS,cAAc,KAAK,EAC9CA,EAAU,UAAU,IAAI,MAAM,EAC9B,MAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CD,EAAU,YAAYC,CAAM,EAC5BA,EAAO,KAAO,SACdA,EAAO,UAAU,IAAI,OAAQ,MAAM,EACnC,MAAMC,EAAQ,SAAS,cAAc,MAAM,EAC3C,OAAAD,EAAO,YAAYC,CAAK,EACxBA,EAAM,YAAchB,EAEpBe,EAAO,QAAU,UAAW,CAC1BR,IACAI,EAASK,EAAM,WAAW,CAC9B,EAEED,EAAO,QAAU,SAASnB,EAAO,CAC/BA,EAAM,eAAc,CACxB,EACSmB,CACT,CAEA,SAASE,EAAQF,EAAQ,CACvB,MAAMG,EAAO,SAAS,cAAc,QAAQ,EAC5C,OAAAA,EAAK,UAAU,IAAI,MAAM,EACzBH,EAAO,cAAc,YAAYG,CAAI,EAC9BA,CACT,CAEA,SAASC,EAAWnB,EAAM,CACxB,IAAIoB,EAAM,EACNC,EAAUrB,EACd,KAAOD,EAAUsB,CAAO,GAAK,MAAQzC,EAAiB,IAAIyC,CAAO,GAAK,MACpEA,EAAUrB,EAAO,IAAMoB,IAEzB,OAAOC,CACT,CAEA,SAASC,EAAQP,EAAQ,CACvB,MAAMC,EAAQD,EAAO,WACfQ,EAAON,EAAQF,CAAM,EAC3BQ,EAAK,UAAU,IAAI,MAAM,EAEzBA,EAAK,QAAU,SAAS3B,EAAO,CAC7BA,EAAM,gBAAe,EACrB,MAAM4B,EAAUR,EAAM,YAChBd,GAAOH,EAAUyB,CAAO,EACxBC,EAAO,SAAS,cAAc,MAAM,EACpCC,EAAe,SAAS,cAAc,OAAO,EACnDA,EAAa,UAAU,IAAI,MAAM,EACjCA,EAAa,MAAQF,EACrBR,EAAM,YAAc,GACpBD,EAAO,YAAYU,CAAI,EACvBA,EAAK,YAAYC,CAAY,EAC7BA,EAAa,MAAK,EAClBA,EAAa,kBAAkB,EAAGF,EAAQ,MAAM,EAEhD,SAASG,IAAS,CAChB,MAAMC,EAAQF,EAAa,MAE3B,GADAA,EAAa,KAAI,EACb,CAACE,EAAO,OACZ,MAAMP,EAAUF,EAAWS,CAAK,EAChCZ,EAAM,YAAcK,EAChBlC,EAAmB,aAAeqC,IACpCrC,EAAmB,YAAckC,GAEnClB,EAAaqB,CAAO,EACpBvB,EAAUoB,EAASnB,EAAI,CACxB,CAEDuB,EAAK,SAAWE,GAChBD,EAAa,QAAU,SAAS9B,EAAO,CACrCA,EAAM,gBAAe,CAC3B,EAEI8B,EAAa,OAAS,UAAW,CAC/BX,EAAO,YAAYU,CAAI,EACvBT,EAAM,YAAcQ,CAC1B,CACA,EAEE,MAAMK,EAAQZ,EAAQF,CAAM,EAC5Bc,EAAM,UAAU,IAAI,OAAO,EAC3B,IAAIC,EAAY,EAEhBD,EAAM,QAAU,SAASjC,EAAO,CAE9B,GADAA,EAAM,gBAAe,EACjBmB,EAAO,UAAU,SAAS,MAAM,EAClCe,EAAY,YAAY,MACxBf,EAAO,UAAU,OAAO,MAAM,EAC9BA,EAAO,UAAU,IAAI,KAAK,EAC1B,SAAS,KAAK,iBAAiB,QAAS,UAAW,CACjDA,EAAO,UAAU,IAAI,MAAM,EAC3BA,EAAO,UAAU,OAAO,KAAK,CACrC,EAAS,CAAC,KAAM,EAAI,CAAC,UACN,YAAY,MAAQe,EAAY,IAAK,CAC9C3B,EAAaa,EAAM,WAAW,EAC1B7B,EAAmB,aAAe6B,EAAM,aAC1CL,EAAS,OAAO,EAElB,MAAMG,EAAYC,EAAO,cACzBD,EAAU,cAAc,YAAYA,CAAS,CAC9C,CACL,CACA,CAEA,MAAMiB,EAAY,SAAS,cAAc,MAAM,EAC/C,SAASC,EAAQ9B,EAAMU,EAAa,OAAW,CAC7C,MAAMZ,EAAOmB,EAAWP,GAAc,YAAY,EAClDX,EAAUD,EAAME,CAAI,EACpB,MAAM+B,EAAapB,EAAmBb,CAAI,EAC1C,OAAA+B,EAAU,sBAAsB,WAAYE,EAAW,aAAa,EACpEX,EAAQW,CAAU,EACX,CAAC,OAAQA,EAAY,KAAAjC,CAAI,CAClC,CACA+B,EAAU,QAAU,UAAW,CAC7BC,EAAQ,EAAE,EAAE,OAAO,MAAK,CAC1B,EAEA,MAAME,EAAY,SAAS,cAAc,UAAU,EAC7CC,EAAS,SAAS,cAAc,SAAS,EAC/C,IAAIC,EAAsB,GACtBC,EAAc,GAElB,SAASC,GAAgB,CACvBJ,EAAU,SAAW,GACjBG,EACFH,EAAU,MAAK,EAEfC,EAAO,YAAc,mBAEzB,CAGA,IAAII,EAEJ,eAAeC,IAAiB,CAC9B,MAAMC,EAAS,MAAM,MAAM,6BAA6B,EACpC,KAAKC,GAAYA,EAAS,KAAM,CAAA,EAE9CC,EAAe,MAAM,MAAM,mCAAmC,EAC1C,KAAKD,GAAYA,EAAS,KAAM,CAAA,EAE1D,MAAO;AAAA,EACPD,EAAO,WAAW,SAAU,EAAE,CAAC;AAAA,EAC/BE,EAAa,QAAQ,eAAgB,EAAE,EAAE,WAAW,SAAU,SAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAe1E,CAEA,eAAeC,IAAe,CAE5B,MAAO,IADQ,MAAM,MAAM,cAAc,EAAE,KAAKF,GAAYA,EAAS,KAAI,CAAE,GAC1D,QAAQ,eAAgB,EAAE,CAAC,EAC9C,CAEA,QAAQ,OAAO,CACb,MACI,CAAC,GAAI,oEAAoE,CAC/E,CAAC,EACD,QAAQ,CAAC,uBAAuB,EAAG,gBAAiB,CAClD,OAAO,UAAU,WAAW,mBAAmB,YAC3C,MAAMF,GAAgB,CAAA,EAC1B,OAAO,UAAU,WAAW,mBAAmB,YAC3C,MAAMI,GAAc,CAAA,EACxB/D,EAAS,OAAO,OAAO,OACnB,SAAS,eAAe,QAAQ,EAChC,CAAC,SAAU,aAAc,gBAAiB,EAAI,CAAC,EAEnD0D,EAAW,MADD,MAAM,OAAO,UAAU,WAAW,oBAAmB,GAC5C1D,EAAO,SAAU,EAAC,GAAG,EACxCA,EAAO,SAAQ,EAAG,cAAc,CAAC,QAAS,CAAC,CAAC,EAE5C,SAAW,CAACmB,CAAI,IAAKpB,EAAkB,CACrC,MAAMmC,EAASF,EAAmBb,CAAI,EACtCV,EAAa,YAAYyB,EAAO,aAAa,CAC9C,CAED,IAAIP,EAAcrB,EAAmB,YAErC,QAAS0D,EAAI,EAAGA,EAAI,OAAO,aAAa,OAAQA,IAAK,CACnD,MAAMvC,EAAMF,GAAOyC,CAAC,EACpB,GAAKvC,EACL,GAAIA,IAAQ,cACVE,EAAcT,EAAUO,CAAG,UAClBA,IAAQ,OACjB+B,EAActC,EAAUO,CAAG,IAAM,YAC5B,CACL,MAAMS,EAASF,EAAmBP,CAAG,EACrCyB,EAAU,sBAAsB,WAAYhB,EAAO,aAAa,EAChEO,EAAQP,CAAM,CACf,CACF,CAED,GAAI,OAAO,SAAS,KAAK,OAAS,EAAG,CACnC,MAAM+B,EAAW,mBAAmB,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,EAC/DC,EAAUD,EAAS,QAAQnE,CAAU,EAC3C,GAAIoE,GAAW,GAAI,CACjBV,EAAc,GACd,MAAMrC,EAAO8C,EAAS,UAAU,EAAGC,CAAO,EAC1CpC,EACIqB,EAAQc,EAAS,UAAUC,EAAUpE,EAAW,MAAM,EAAGqB,CAAI,EAAE,IAAI,CAC7E,MACU8C,GAAYtC,IACd6B,EAAc,IAEhB1B,EAASmC,CAAQ,CAEvB,MACInC,EAASH,CAAW,EAGlB4B,GACFE,IAGFzD,EAAO,wBAAwBmE,GAAK,CAElC,GADAd,EAAU,SAAW,GACjBzB,EAAW,CACbA,EAAY,GACZ5B,EAAO,aAAa,CAAC,EACrB,MACD,CACD,GAAI6B,EAAW,CACb,MAAMuC,EAASpE,EAAO,cACtBmD,EAAQnD,EAAO,SAAQ,CAAE,EAAE,OAAO,MAAK,EACvCA,EAAO,YAAYoE,CAAM,CAC1B,CACL,CAAG,EAED,OAAO,SAAW,IAAM,CACtBpE,EAAO,OAAO,CAAA,CAAE,CACpB,CACA,CAAC,EAGD,MAAMqE,EAAK,SAAS,cAAc,cAAc,EAC1CC,GAAqB,SAAS,cAAc,YAAY,EACxDC,EAAa,SAAS,cAAc,OAAO,EAC3CC,EAAW,SAAS,cAAc,WAAW,EACnD,IAAIC,EAAS,GAEbJ,EAAG,iBAAiB,OAAQ,IAAM,CAChC,MAAMK,EAAeL,EAAG,oBAAoB,OAAS,EACrDC,GAAmB,MAAM,QAAUI,EAAe,OAAS,OACvDA,GACFC,GAEJ,CAAC,EAED,SAASA,GAAO,CACdN,EAAG,KAAI,EACPE,EAAW,UAAU,OAAO,MAAM,EAClCA,EAAW,UAAU,IAAI,OAAO,EAChCE,EAAS,GACTD,EAAS,UAAU,IAAI,MAAM,CAC/B,CAEA,SAASI,IAAQ,CACfP,EAAG,MAAK,EACRE,EAAW,UAAU,OAAO,OAAO,EACnCA,EAAW,UAAU,IAAI,MAAM,EAC/BE,EAAS,GACTD,EAAS,IAAMH,EAAG,SAClBG,EAAS,MAAQH,EAAG,YACpBG,EAAS,UAAU,OAAO,MAAM,CAClC,CAEAD,EAAW,QAAU,UAAW,CAC1BE,EACFE,IAEAC,IAEJ,EAEAJ,EAAS,QAAU,UAAW,CAC5BH,EAAG,YAAcG,EAAS,KAC5B,EAGA,MAAMK,EAAiB,SAAS,cAAc,UAAU,EAClDC,GAAS,QAAQ,IACvB,QAAQ,IAAM,SAASC,EAAS,CAC9BF,EAAe,aAAeE,EAAU;AAAA,EACxCF,EAAe,UAAYA,EAAe,aAC1CC,GAAOC,CAAO,CAChB,EAEA,SAASC,IAAe,CACtBH,EAAe,YAAc,EAC/B,CAEA,SAASI,IAAe,CACtB5B,EAAU,WAAW,MAAM,WAAa,SACxCA,EAAU,UAAU,IAAI,MAAO,QAAQ,CACzC,CAEA,SAAS6B,IAAgB,CACvB7B,EAAU,WAAW,MAAM,WAAa,UACxCA,EAAU,UAAU,OAAO,MAAO,QAAQ,CAC5C,CAEA,IAAI8B,EAAK,YAAY,MAErB,SAASC,GAAY,CACnBF,KACA,MAAMG,EAAK,YAAY,MACjBC,EAAMT,EAAe,YAE3BA,EAAe,YAAcS,EAAI,UAAUA,EAAI,QAAQ;AAAA,CAAI,EAAI,CAAC,EAChE,QAAQ,IACJ,SAAS,KAAK,OAAOD,EAAKF,GAAM,EAAE,EAAI,KAAK,gBAAgB,UAAU,CAC3E,CAEA,MAAMI,EAAS,CACb,OAAQ,KACR,WAAY,IACd,EACA,IAAIC,EAAiB,KAErB,SAASC,GAAe,CACtBD,EAAiB,IAAIE,GACrBF,EAAe,UAAY,SAAS,EAAG,CACrC,GAAI,EAAE,MAAQ,KAAM,CACd9B,GAAY,MAAQ,CAACH,GACvBE,IAEFF,EAAsB,GACtB,MACD,CAED,GAAI,EAAE,KAAK,KAAO,KAAM,CACtBsB,EAAe,aAAe,EAAE,KAAK,IAAM;AAAA,EAC3CA,EAAe,UAAYA,EAAe,aAC1C,MACD,CAEDO,IACA/B,EAAU,SAAW,GAEjBkC,EAAO,YAAc,OACvB,IAAI,gBAAgBA,EAAO,UAAU,EACrCA,EAAO,WAAa,MAEtB,IAAI,gBAAgBA,EAAO,MAAM,EACjCA,EAAO,OAAS,EAAE,KAAK,OACvBA,EAAO,WAAa,EAAE,KAAK,WAC3BI,EAAc,SAAWJ,EAAO,YAAc,KAC9ClB,EAAG,IAAMkB,EAAO,OACZA,EAAO,QAAU,MACnBlB,EAAG,WAAU,EACbf,EAAO,YAAc,QACrBmC,KAEArE,EAAU,OAAQ,MAAM,CAE3B,CACH,CAEAqE,IAEA,eAAeG,IAAM,CACnBlE,IACAN,EAAU,OAAQ,OAAO,EACzB6D,KACAD,KACA,QAAQ,IAAI,YAAY,EACxB,MAAMO,EAAS,MAAM7B,EAAS,cAAc1D,EAAO,WAAW,IAAI,SAAQ,CAAE,EAC5EwF,EAAe,YAAYD,EAAO,YAAY,CAAC,EAAE,IAAI,EACrDJ,EAAK,YAAY,KACnB,CAEA,SAASU,IAAS,CAChBL,EAAe,UAAS,EACxBC,IACAL,IACA,QAAQ,IAAI,cAAc,CAC5B,CAEA/B,EAAU,QAAU,UAAW,CACzBA,EAAU,UAAU,SAAS,QAAQ,EACvCwC,KAEAD,IAEJ,EAEA,SAASE,EAAUC,EAAYC,EAAUC,EAAY,CACnD,MAAMhE,EAAY8D,EAAW,cAC7B,MAAO,IAAM,CACX,MAAMG,EAAUxF,EAAc,kBAC1BwF,IAAYjE,IACdtB,EAAa,aAAauF,EAASvF,EAAa,iBAAiB,EACjED,EAAc,aAAauB,EAAWtB,CAAY,EAClDsB,EAAU,YAAYrB,EAAU,aAAa,GAE/C,MAAMuF,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,SAAWH,EAChBG,EAAK,KAAOZ,EAAOU,CAAU,EAC7BE,EAAK,MAAK,CACd,CACA,CAEA,MAAMC,EAAY,SAAS,cAAc,MAAM,EAC/CA,EAAU,QAAUN,EAAUM,EAAW,eAAgB,QAAQ,EAEjE,MAAMT,EAAgB,SAAS,cAAc,UAAU,EACvDA,EAAc,QAAUG,EAAUH,EAAe,eAAgB,YAAY"} \ No newline at end of file diff --git a/assets/modelViewer.js b/assets/modelViewer.js new file mode 100644 index 000000000..af27724f0 --- /dev/null +++ b/assets/modelViewer.js @@ -0,0 +1,2 @@ +import"./modulepreload-polyfill.js";import{s as I,_ as L,j as U,M as k,k as v,r as B,g as D,w as E,z as O}from"./gltf-io.js";import{M as S}from"./manifold.js";const w=I(new L),e=new U,M=await S();M.setup();const{Manifold:i,Mesh:j}=M,f=new Map;async function R(o){const a=Array(),c=await w.read(o);await c.transform(k());const d=c.getRoot().listNodes(),g=Array();for(const t of d){v(t);const r=t.getMesh();if(r==null)continue;const s=B(r);if(s==null)continue;const m=s.runProperties.length,u=i.reserveIDs(m);s.mesh.runOriginalID=new Uint32Array(m);for(let n=0;nt.dispose()),e.getRoot().listBuffers().forEach(t=>t.dispose()),e.getRoot().listAccessors().forEach(t=>t.dispose());for(const[t,r]of g.entries()){const s=e.getRoot().listMaterials()[y+t];f.get(r).material=s}return i.union(a)}const A=await R("/models/space.glb"),q=await R("/models/moon.glb"),h=e.createNode();e.createScene().addChild(h);function b(o){P(i[o](A,q))}b("difference");const p=document.querySelector("select");p.onchange=function(){b(p.value)};let l="";const z=document.querySelector("#download");z.onclick=function(){const o=document.createElement("a");o.download="manifold.glb",o.href=l,o.click()};const N=document.querySelector("model-viewer");async function P(o){D(h.getMesh());const a=E(e,o.getMesh(),f);h.setMesh(a),await e.transform(O());const c=await w.writeBinary(e),d=new Blob([c],{type:"application/octet-stream"});URL.revokeObjectURL(l),l=URL.createObjectURL(d),N.src=l} +//# sourceMappingURL=modelViewer.js.map diff --git a/assets/modelViewer.js.map b/assets/modelViewer.js.map new file mode 100644 index 000000000..da1e9ea19 --- /dev/null +++ b/assets/modelViewer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"modelViewer.js","sources":["../../model-viewer-script.ts"],"sourcesContent":["// Copyright 2024 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Document, WebIO} from '@gltf-transform/core';\nimport {clearNodeTransform, flatten, prune} from '@gltf-transform/functions';\n\nimport Module, {Manifold, Mesh} from './built/manifold';\nimport {disposeMesh, Properties, readMesh, setupIO, writeMesh} from './gltf-io';\n\n// Set up gltf-transform\nconst io = setupIO(new WebIO());\nconst doc = new Document();\n\n\n// Set up Manifold WASM library\nconst wasm = await Module();\nwasm.setup();\nconst {Manifold, Mesh} = wasm;\n\n// Map of OriginalID to glTF material and attributes\nconst id2properties = new Map();\n\n// Wrapper for gltf-io readMesh() that processes a whole glTF and stores the\n// properties in the above map. This function is simplified and intended only\n// for reading single-object glTFs, as it simply unions any extra meshes\n// together rather than returning a scene hierarchy.\nasync function readGLB(url: string) {\n const manifolds = Array();\n const docIn = await io.read(url);\n await docIn.transform(flatten());\n const nodes = docIn.getRoot().listNodes();\n const ids = Array();\n for (const node of nodes) {\n clearNodeTransform(node);\n const gltfMesh = node.getMesh();\n if (gltfMesh == null) continue;\n const tmp = readMesh(gltfMesh);\n if (tmp == null) continue;\n\n const numID = tmp.runProperties.length;\n const firstID = Manifold.reserveIDs(numID);\n tmp.mesh.runOriginalID = new Uint32Array(numID);\n for (let i = 0; i < numID; ++i) {\n tmp.mesh.runOriginalID[i] = firstID + i;\n ids.push(firstID + i);\n id2properties.set(firstID + i, tmp.runProperties[i]);\n }\n manifolds.push(new Manifold(new Mesh(tmp.mesh)));\n }\n // pull in materials, TODO: replace with transfer() when available\n const startIdx = doc.getRoot().listMaterials().length;\n doc.merge(docIn);\n doc.getRoot().listScenes().forEach((s) => s.dispose());\n doc.getRoot().listBuffers().forEach((s) => s.dispose());\n doc.getRoot().listAccessors().forEach((s) => s.dispose());\n for (const [i, id] of ids.entries()) {\n const material = doc.getRoot().listMaterials()[startIdx + i];\n id2properties.get(id)!.material = material;\n }\n\n return Manifold.union(manifolds);\n}\n\n// Read static input glTFs\nconst space = await readGLB('/models/space.glb');\nconst moon = await readGLB('/models/moon.glb');\n\nconst node = doc.createNode();\ndoc.createScene().addChild(node);\n\n// Set up UI for operations\ntype BooleanOp = 'union'|'difference'|'intersection';\n\nfunction csg(operation: BooleanOp) {\n push2MV(Manifold[operation](space, moon));\n}\n\ncsg('difference');\nconst selectElement = document.querySelector('select')!;\nselectElement.onchange = function() {\n csg(selectElement.value as BooleanOp);\n};\n\n// The resulting glTF\nlet objectURL = '';\n\n// Set up download UI\nconst downloadButton = document.querySelector('#download') as HTMLButtonElement;\ndownloadButton.onclick = function() {\n const link = document.createElement('a');\n link.download = 'manifold.glb';\n link.href = objectURL;\n link.click();\n};\n\n// element for rendering resulting glTF.\nconst mv = document.querySelector('model-viewer');\n\n// Use gltf-io and gltf-transform to convert the resulting Manifold to a glTF\n// and display it with .\nasync function push2MV(manifold: Manifold) {\n disposeMesh(node.getMesh()!);\n const mesh = writeMesh(doc, manifold.getMesh(), id2properties);\n node.setMesh(mesh);\n await doc.transform(prune());\n\n const glb = await io.writeBinary(doc);\n\n const blob = new Blob([glb], {type: 'application/octet-stream'});\n URL.revokeObjectURL(objectURL);\n objectURL = URL.createObjectURL(blob);\n (mv as any).src = objectURL;\n}"],"names":["io","setupIO","WebIO","doc","Document","wasm","Module","Manifold","Mesh","id2properties","readGLB","url","manifolds","docIn","flatten","nodes","ids","node","clearNodeTransform","gltfMesh","tmp","readMesh","numID","firstID","i","startIdx","s","id","material","space","moon","csg","operation","push2MV","selectElement","objectURL","downloadButton","link","mv","manifold","disposeMesh","mesh","writeMesh","prune","glb","blob"],"mappings":"+JAqBA,MAAMA,EAAKC,EAAQ,IAAIC,CAAO,EACxBC,EAAM,IAAIC,EAIVC,EAAO,MAAMC,IACnBD,EAAK,MAAM,EACX,KAAM,CAAC,SAAAE,EAAU,KAAAC,CAAQ,EAAAH,EAGnBI,MAAoB,IAM1B,eAAeC,EAAQC,EAAa,CAClC,MAAMC,EAAY,QACZC,EAAQ,MAAMb,EAAG,KAAKW,CAAG,EACzB,MAAAE,EAAM,UAAUC,EAAA,CAAS,EAC/B,MAAMC,EAAQF,EAAM,QAAQ,EAAE,UAAU,EAClCG,EAAM,QACZ,UAAWC,KAAQF,EAAO,CACxBG,EAAmBD,CAAI,EACjB,MAAAE,EAAWF,EAAK,UACtB,GAAIE,GAAY,KAAM,SAChB,MAAAC,EAAMC,EAASF,CAAQ,EAC7B,GAAIC,GAAO,KAAM,SAEX,MAAAE,EAAQF,EAAI,cAAc,OAC1BG,EAAUhB,EAAS,WAAWe,CAAK,EACzCF,EAAI,KAAK,cAAgB,IAAI,YAAYE,CAAK,EAC9C,QAASE,EAAI,EAAGA,EAAIF,EAAO,EAAEE,EAC3BJ,EAAI,KAAK,cAAcI,CAAC,EAAID,EAAUC,EAClCR,EAAA,KAAKO,EAAUC,CAAC,EACpBf,EAAc,IAAIc,EAAUC,EAAGJ,EAAI,cAAcI,CAAC,CAAC,EAE3CZ,EAAA,KAAK,IAAIL,EAAS,IAAIC,EAAKY,EAAI,IAAI,CAAC,CAAC,CACjD,CAEA,MAAMK,EAAWtB,EAAI,QAAQ,EAAE,gBAAgB,OAC/CA,EAAI,MAAMU,CAAK,EACXV,EAAA,UAAU,aAAa,QAASuB,GAAMA,EAAE,QAAA,CAAS,EACjDvB,EAAA,UAAU,cAAc,QAASuB,GAAMA,EAAE,QAAA,CAAS,EAClDvB,EAAA,UAAU,gBAAgB,QAASuB,GAAMA,EAAE,QAAA,CAAS,EACxD,SAAW,CAACF,EAAGG,CAAE,IAAKX,EAAI,UAAW,CACnC,MAAMY,EAAWzB,EAAI,QAAA,EAAU,gBAAgBsB,EAAWD,CAAC,EAC7Cf,EAAA,IAAIkB,CAAE,EAAG,SAAWC,CACpC,CAEO,OAAArB,EAAS,MAAMK,CAAS,CACjC,CAGA,MAAMiB,EAAQ,MAAMnB,EAAQ,mBAAmB,EACzCoB,EAAO,MAAMpB,EAAQ,kBAAkB,EAEvCO,EAAOd,EAAI,aACjBA,EAAI,YAAc,EAAA,SAASc,CAAI,EAK/B,SAASc,EAAIC,EAAsB,CACjCC,EAAQ1B,EAASyB,CAAS,EAAEH,EAAOC,CAAI,CAAC,CAC1C,CAEAC,EAAI,YAAY,EAChB,MAAMG,EAAgB,SAAS,cAAc,QAAQ,EACrDA,EAAc,SAAW,UAAW,CAClCH,EAAIG,EAAc,KAAkB,CACtC,EAGA,IAAIC,EAAY,GAGhB,MAAMC,EAAiB,SAAS,cAAc,WAAW,EACzDA,EAAe,QAAU,UAAW,CAC5B,MAAAC,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,SAAW,eAChBA,EAAK,KAAOF,EACZE,EAAK,MAAM,CACb,EAGA,MAAMC,EAAK,SAAS,cAAc,cAAc,EAIhD,eAAeL,EAAQM,EAAoB,CAC7BC,EAAAvB,EAAK,SAAU,EAC3B,MAAMwB,EAAOC,EAAUvC,EAAKoC,EAAS,QAAA,EAAW9B,CAAa,EAC7DQ,EAAK,QAAQwB,CAAI,EACX,MAAAtC,EAAI,UAAUwC,EAAA,CAAO,EAE3B,MAAMC,EAAM,MAAM5C,EAAG,YAAYG,CAAG,EAE9B0C,EAAO,IAAI,KAAK,CAACD,CAAG,EAAG,CAAC,KAAM,0BAAA,CAA2B,EAC/D,IAAI,gBAAgBT,CAAS,EACjBA,EAAA,IAAI,gBAAgBU,CAAI,EACnCP,EAAW,IAAMH,CACpB"} \ No newline at end of file diff --git a/assets/modulepreload-polyfill.js b/assets/modulepreload-polyfill.js new file mode 100644 index 000000000..c1e44badf --- /dev/null +++ b/assets/modulepreload-polyfill.js @@ -0,0 +1,2 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})(); +//# sourceMappingURL=modulepreload-polyfill.js.map diff --git a/assets/modulepreload-polyfill.js.map b/assets/modulepreload-polyfill.js.map new file mode 100644 index 000000000..42742f7a3 --- /dev/null +++ b/assets/modulepreload-polyfill.js.map @@ -0,0 +1 @@ +{"version":3,"file":"modulepreload-polyfill.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/three.js b/assets/three.js new file mode 100644 index 000000000..86bc75aab --- /dev/null +++ b/assets/three.js @@ -0,0 +1,3826 @@ +import"./modulepreload-polyfill.js";import{M as yo}from"./manifold.js";/** + * @license + * Copyright 2010-2024 Three.js Authors + * SPDX-License-Identifier: MIT + */const Yr="164",To=0,ds=1,Ao=2,Ba=1,bo=2,ke=3,sn=0,pe=1,We=2,nn=0,Vn=1,fs=2,ps=3,ms=4,wo=5,vn=100,Ro=101,Co=102,Po=103,Lo=104,Do=200,Uo=201,Io=202,No=203,Br=204,zr=205,Fo=206,Oo=207,Bo=208,zo=209,Ho=210,Vo=211,Go=212,ko=213,Wo=214,Xo=0,qo=1,Yo=2,zi=3,Ko=4,$o=5,jo=6,Zo=7,Kr=0,Jo=1,Qo=2,rn=0,tl=1,el=2,nl=3,il=4,rl=5,sl=6,al=7,za=300,Wn=301,Xn=302,Hr=303,Vr=304,Xi=306,Gr=1e3,Mn=1001,kr=1002,ye=1003,ol=1004,mi=1005,Re=1006,ir=1007,Sn=1008,an=1009,ll=1010,cl=1011,Ha=1012,Va=1013,qn=1014,en=1015,qi=1016,Ga=1017,ka=1018,ci=1020,hl=35902,ul=1021,dl=1022,Ue=1023,fl=1024,pl=1025,Gn=1026,oi=1027,ml=1028,Wa=1029,_l=1030,Xa=1031,qa=1033,rr=33776,sr=33777,ar=33778,or=33779,_s=35840,gs=35841,vs=35842,xs=35843,Ms=36196,Ss=37492,Es=37496,ys=37808,Ts=37809,As=37810,bs=37811,ws=37812,Rs=37813,Cs=37814,Ps=37815,Ls=37816,Ds=37817,Us=37818,Is=37819,Ns=37820,Fs=37821,lr=36492,Os=36494,Bs=36495,gl=36283,zs=36284,Hs=36285,Vs=36286,vl=3200,xl=3201,$r=0,Ml=1,tn="",Pe="srgb",ln="srgb-linear",jr="display-p3",Yi="display-p3-linear",Hi="linear",Yt="srgb",Vi="rec709",Gi="p3",yn=7680,Gs=519,Sl=512,El=513,yl=514,Ya=515,Tl=516,Al=517,bl=518,wl=519,ks=35044,Ws="300 es",Xe=2e3,ki=2001;class Kn{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;const n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;const r=this._listeners[t];if(r!==void 0){const s=r.indexOf(e);s!==-1&&r.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;const n=this._listeners[t.type];if(n!==void 0){t.target=this;const r=n.slice(0);for(let s=0,a=r.length;s>8&255]+le[i>>16&255]+le[i>>24&255]+"-"+le[t&255]+le[t>>8&255]+"-"+le[t>>16&15|64]+le[t>>24&255]+"-"+le[e&63|128]+le[e>>8&255]+"-"+le[e>>16&255]+le[e>>24&255]+le[n&255]+le[n>>8&255]+le[n>>16&255]+le[n>>24&255]).toLowerCase()}function fe(i,t,e){return Math.max(t,Math.min(e,i))}function Rl(i,t){return(i%t+t)%t}function hr(i,t,e){return(1-e)*i+e*t}function ti(i,t){switch(t.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function de(i,t){switch(t.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}class Pt{constructor(t=0,e=0){Pt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6],this.y=r[1]*e+r[4]*n+r[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}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(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(fe(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),r=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*n-a*r+t.x,this.y=s*r+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Tt{constructor(t,e,n,r,s,a,o,l,c){Tt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,n,r,s,a,o,l,c)}set(t,e,n,r,s,a,o,l,c){const h=this.elements;return h[0]=t,h[1]=r,h[2]=o,h[3]=e,h[4]=s,h[5]=l,h[6]=n,h[7]=a,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,r=e.elements,s=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],h=n[4],p=n[7],f=n[2],m=n[5],v=n[8],S=r[0],d=r[3],u=r[6],y=r[1],M=r[4],T=r[7],U=r[2],b=r[5],w=r[8];return s[0]=a*S+o*y+l*U,s[3]=a*d+o*M+l*b,s[6]=a*u+o*T+l*w,s[1]=c*S+h*y+p*U,s[4]=c*d+h*M+p*b,s[7]=c*u+h*T+p*w,s[2]=f*S+m*y+v*U,s[5]=f*d+m*M+v*b,s[8]=f*u+m*T+v*w,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],l=t[6],c=t[7],h=t[8];return e*a*h-e*o*c-n*s*h+n*o*l+r*s*c-r*a*l}invert(){const t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],l=t[6],c=t[7],h=t[8],p=h*a-o*c,f=o*l-h*s,m=c*s-a*l,v=e*p+n*f+r*m;if(v===0)return this.set(0,0,0,0,0,0,0,0,0);const S=1/v;return t[0]=p*S,t[1]=(r*c-h*n)*S,t[2]=(o*n-r*a)*S,t[3]=f*S,t[4]=(h*e-r*l)*S,t[5]=(r*s-o*e)*S,t[6]=m*S,t[7]=(n*l-c*e)*S,t[8]=(a*e-n*s)*S,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,r,s,a,o){const l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*a+c*o)+a+t,-r*c,r*l,-r*(-c*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(ur.makeScale(t,e)),this}rotate(t){return this.premultiply(ur.makeRotation(-t)),this}translate(t,e){return this.premultiply(ur.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let r=0;r<9;r++)if(e[r]!==n[r])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const ur=new Tt;function Ka(i){for(let t=i.length-1;t>=0;--t)if(i[t]>=65535)return!0;return!1}function Wi(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function Cl(){const i=Wi("canvas");return i.style.display="block",i}const Xs={};function Pl(i){i in Xs||(Xs[i]=!0,console.warn(i))}const qs=new Tt().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Ys=new Tt().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),_i={[ln]:{transfer:Hi,primaries:Vi,toReference:i=>i,fromReference:i=>i},[Pe]:{transfer:Yt,primaries:Vi,toReference:i=>i.convertSRGBToLinear(),fromReference:i=>i.convertLinearToSRGB()},[Yi]:{transfer:Hi,primaries:Gi,toReference:i=>i.applyMatrix3(Ys),fromReference:i=>i.applyMatrix3(qs)},[jr]:{transfer:Yt,primaries:Gi,toReference:i=>i.convertSRGBToLinear().applyMatrix3(Ys),fromReference:i=>i.applyMatrix3(qs).convertLinearToSRGB()}},Ll=new Set([ln,Yi]),Gt={enabled:!0,_workingColorSpace:ln,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(i){if(!Ll.has(i))throw new Error(`Unsupported working color space, "${i}".`);this._workingColorSpace=i},convert:function(i,t,e){if(this.enabled===!1||t===e||!t||!e)return i;const n=_i[t].toReference,r=_i[e].fromReference;return r(n(i))},fromWorkingColorSpace:function(i,t){return this.convert(i,this._workingColorSpace,t)},toWorkingColorSpace:function(i,t){return this.convert(i,t,this._workingColorSpace)},getPrimaries:function(i){return _i[i].primaries},getTransfer:function(i){return i===tn?Hi:_i[i].transfer}};function kn(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function dr(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let Tn;class Dl{static getDataURL(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{Tn===void 0&&(Tn=Wi("canvas")),Tn.width=t.width,Tn.height=t.height;const n=Tn.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Tn}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=Wi("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const r=n.getImageData(0,0,t.width,t.height),s=r.data;for(let a=0;a0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==za)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Gr:t.x=t.x-Math.floor(t.x);break;case Mn:t.x=t.x<0?0:1;break;case kr:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Gr:t.y=t.y-Math.floor(t.y);break;case Mn:t.y=t.y<0?0:1;break;case kr:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}me.DEFAULT_IMAGE=null;me.DEFAULT_MAPPING=za;me.DEFAULT_ANISOTROPY=1;class $t{constructor(t=0,e=0,n=0,r=1){$t.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=r}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,r){return this.x=t,this.y=e,this.z=n,this.w=r,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,r=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*r+a[12]*s,this.y=a[1]*e+a[5]*n+a[9]*r+a[13]*s,this.z=a[2]*e+a[6]*n+a[10]*r+a[14]*s,this.w=a[3]*e+a[7]*n+a[11]*r+a[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,r,s;const l=t.elements,c=l[0],h=l[4],p=l[8],f=l[1],m=l[5],v=l[9],S=l[2],d=l[6],u=l[10];if(Math.abs(h-f)<.01&&Math.abs(p-S)<.01&&Math.abs(v-d)<.01){if(Math.abs(h+f)<.1&&Math.abs(p+S)<.1&&Math.abs(v+d)<.1&&Math.abs(c+m+u-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const M=(c+1)/2,T=(m+1)/2,U=(u+1)/2,b=(h+f)/4,w=(p+S)/4,O=(v+d)/4;return M>T&&M>U?M<.01?(n=0,r=.707106781,s=.707106781):(n=Math.sqrt(M),r=b/n,s=w/n):T>U?T<.01?(n=.707106781,r=0,s=.707106781):(r=Math.sqrt(T),n=b/r,s=O/r):U<.01?(n=.707106781,r=.707106781,s=0):(s=Math.sqrt(U),n=w/s,r=O/s),this.set(n,r,s,e),this}let y=Math.sqrt((d-v)*(d-v)+(p-S)*(p-S)+(f-h)*(f-h));return Math.abs(y)<.001&&(y=1),this.x=(d-v)/y,this.y=(p-S)/y,this.z=(f-h)/y,this.w=Math.acos((c+m+u-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Nl extends Kn{constructor(t=1,e=1,n={}){super(),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new $t(0,0,t,e),this.scissorTest=!1,this.viewport=new $t(0,0,t,e);const r={width:t,height:e,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Re,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const s=new me(r,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);s.flipY=!1,s.generateMipmaps=n.generateMipmaps,s.internalFormat=n.internalFormat,this.textures=[];const a=n.count;for(let o=0;o=0?1:-1,M=1-u*u;if(M>Number.EPSILON){const U=Math.sqrt(M),b=Math.atan2(U,u*y);d=Math.sin(d*b)/U,o=Math.sin(o*b)/U}const T=o*y;if(l=l*d+f*T,c=c*d+m*T,h=h*d+v*T,p=p*d+S*T,d===1-o){const U=1/Math.sqrt(l*l+c*c+h*h+p*p);l*=U,c*=U,h*=U,p*=U}}t[e]=l,t[e+1]=c,t[e+2]=h,t[e+3]=p}static multiplyQuaternionsFlat(t,e,n,r,s,a){const o=n[r],l=n[r+1],c=n[r+2],h=n[r+3],p=s[a],f=s[a+1],m=s[a+2],v=s[a+3];return t[e]=o*v+h*p+l*m-c*f,t[e+1]=l*v+h*f+c*p-o*m,t[e+2]=c*v+h*m+o*f-l*p,t[e+3]=h*v-o*p-l*f-c*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,r){return this._x=t,this._y=e,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const n=t._x,r=t._y,s=t._z,a=t._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(r/2),p=o(s/2),f=l(n/2),m=l(r/2),v=l(s/2);switch(a){case"XYZ":this._x=f*h*p+c*m*v,this._y=c*m*p-f*h*v,this._z=c*h*v+f*m*p,this._w=c*h*p-f*m*v;break;case"YXZ":this._x=f*h*p+c*m*v,this._y=c*m*p-f*h*v,this._z=c*h*v-f*m*p,this._w=c*h*p+f*m*v;break;case"ZXY":this._x=f*h*p-c*m*v,this._y=c*m*p+f*h*v,this._z=c*h*v+f*m*p,this._w=c*h*p-f*m*v;break;case"ZYX":this._x=f*h*p-c*m*v,this._y=c*m*p+f*h*v,this._z=c*h*v-f*m*p,this._w=c*h*p+f*m*v;break;case"YZX":this._x=f*h*p+c*m*v,this._y=c*m*p+f*h*v,this._z=c*h*v-f*m*p,this._w=c*h*p-f*m*v;break;case"XZY":this._x=f*h*p-c*m*v,this._y=c*m*p-f*h*v,this._z=c*h*v+f*m*p,this._w=c*h*p+f*m*v;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,r=Math.sin(n);return this._x=t.x*r,this._y=t.y*r,this._z=t.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],r=e[4],s=e[8],a=e[1],o=e[5],l=e[9],c=e[2],h=e[6],p=e[10],f=n+o+p;if(f>0){const m=.5/Math.sqrt(f+1);this._w=.25/m,this._x=(h-l)*m,this._y=(s-c)*m,this._z=(a-r)*m}else if(n>o&&n>p){const m=2*Math.sqrt(1+n-o-p);this._w=(h-l)/m,this._x=.25*m,this._y=(r+a)/m,this._z=(s+c)/m}else if(o>p){const m=2*Math.sqrt(1+o-n-p);this._w=(s-c)/m,this._x=(r+a)/m,this._y=.25*m,this._z=(l+h)/m}else{const m=2*Math.sqrt(1+p-n-o);this._w=(a-r)/m,this._x=(s+c)/m,this._y=(l+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(fe(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(n===0)return this;const r=Math.min(1,e/n);return this.slerp(t,r),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,r=t._y,s=t._z,a=t._w,o=e._x,l=e._y,c=e._z,h=e._w;return this._x=n*h+a*o+r*c-s*l,this._y=r*h+a*l+s*o-n*c,this._z=s*h+a*c+n*l-r*o,this._w=a*h-n*o-r*l-s*c,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const n=this._x,r=this._y,s=this._z,a=this._w;let o=a*t._w+n*t._x+r*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const m=1-e;return this._w=m*a+e*this._w,this._x=m*n+e*this._x,this._y=m*r+e*this._y,this._z=m*s+e*this._z,this.normalize(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),p=Math.sin((1-e)*h)/c,f=Math.sin(e*h)/c;return this._w=a*p+this._w*f,this._x=n*p+this._x*f,this._y=r*p+this._y*f,this._z=s*p+this._z*f,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(t),r*Math.cos(t),s*Math.sin(e),s*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class L{constructor(t=0,e=0,n=0){L.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Ks.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Ks.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,r=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*r,this.y=s[1]*e+s[4]*n+s[7]*r,this.z=s[2]*e+s[5]*n+s[8]*r,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,r=this.z,s=t.elements,a=1/(s[3]*e+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*e+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*e+s[6]*n+s[10]*r+s[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,r=this.z,s=t.x,a=t.y,o=t.z,l=t.w,c=2*(a*r-o*n),h=2*(o*e-s*r),p=2*(s*n-a*e);return this.x=e+l*c+a*p-o*h,this.y=n+l*h+o*c-s*p,this.z=r+l*p+s*h-a*c,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,r=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*r,this.y=s[1]*e+s[5]*n+s[9]*r,this.z=s[2]*e+s[6]*n+s[10]*r,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}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(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,r=t.y,s=t.z,a=e.x,o=e.y,l=e.z;return this.x=r*l-s*o,this.y=s*a-n*l,this.z=n*o-r*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return pr.copy(this).projectOnVector(t),this.sub(pr)}reflect(t){return this.sub(pr.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(fe(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,r=this.z-t.z;return e*e+n*n+r*r}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const r=Math.sin(e)*t;return this.x=r*Math.sin(n),this.y=Math.cos(e)*t,this.z=r*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),r=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=r,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,n=Math.sqrt(1-e*e);return this.x=n*Math.cos(t),this.y=e,this.z=n*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const pr=new L,Ks=new ui;class di{constructor(t=new L(1/0,1/0,1/0),e=new L(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,Ae),Ae.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(ei),vi.subVectors(this.max,ei),An.subVectors(t.a,ei),bn.subVectors(t.b,ei),wn.subVectors(t.c,ei),Ke.subVectors(bn,An),$e.subVectors(wn,bn),hn.subVectors(An,wn);let e=[0,-Ke.z,Ke.y,0,-$e.z,$e.y,0,-hn.z,hn.y,Ke.z,0,-Ke.x,$e.z,0,-$e.x,hn.z,0,-hn.x,-Ke.y,Ke.x,0,-$e.y,$e.x,0,-hn.y,hn.x,0];return!mr(e,An,bn,wn,vi)||(e=[1,0,0,0,1,0,0,0,1],!mr(e,An,bn,wn,vi))?!1:(xi.crossVectors(Ke,$e),e=[xi.x,xi.y,xi.z],mr(e,An,bn,wn,vi))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Ae).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(Ae).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Be[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Be[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Be[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Be[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Be[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Be[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Be[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Be[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Be),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const Be=[new L,new L,new L,new L,new L,new L,new L,new L],Ae=new L,gi=new di,An=new L,bn=new L,wn=new L,Ke=new L,$e=new L,hn=new L,ei=new L,vi=new L,xi=new L,un=new L;function mr(i,t,e,n,r){for(let s=0,a=i.length-3;s<=a;s+=3){un.fromArray(i,s);const o=r.x*Math.abs(un.x)+r.y*Math.abs(un.y)+r.z*Math.abs(un.z),l=t.dot(un),c=e.dot(un),h=n.dot(un);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const Ol=new di,ni=new L,_r=new L;class Zr{constructor(t=new L,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;e!==void 0?n.copy(e):Ol.setFromPoints(t).getCenter(n);let r=0;for(let s=0,a=t.length;sthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;ni.subVectors(t,this.center);const e=ni.lengthSq();if(e>this.radius*this.radius){const n=Math.sqrt(e),r=(n-this.radius)*.5;this.center.addScaledVector(ni,r/n),this.radius+=r}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(_r.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(ni.copy(t.center).add(_r)),this.expandByPoint(ni.copy(t.center).sub(_r))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}}const ze=new L,gr=new L,Mi=new L,je=new L,vr=new L,Si=new L,xr=new L;class Bl{constructor(t=new L,e=new L(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,ze)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=ze.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(ze.copy(this.origin).addScaledVector(this.direction,e),ze.distanceToSquared(t))}distanceSqToSegment(t,e,n,r){gr.copy(t).add(e).multiplyScalar(.5),Mi.copy(e).sub(t).normalize(),je.copy(this.origin).sub(gr);const s=t.distanceTo(e)*.5,a=-this.direction.dot(Mi),o=je.dot(this.direction),l=-je.dot(Mi),c=je.lengthSq(),h=Math.abs(1-a*a);let p,f,m,v;if(h>0)if(p=a*l-o,f=a*o-l,v=s*h,p>=0)if(f>=-v)if(f<=v){const S=1/h;p*=S,f*=S,m=p*(p+a*f+2*o)+f*(a*p+f+2*l)+c}else f=s,p=Math.max(0,-(a*f+o)),m=-p*p+f*(f+2*l)+c;else f=-s,p=Math.max(0,-(a*f+o)),m=-p*p+f*(f+2*l)+c;else f<=-v?(p=Math.max(0,-(-a*s+o)),f=p>0?-s:Math.min(Math.max(-s,-l),s),m=-p*p+f*(f+2*l)+c):f<=v?(p=0,f=Math.min(Math.max(-s,-l),s),m=f*(f+2*l)+c):(p=Math.max(0,-(a*s+o)),f=p>0?s:Math.min(Math.max(-s,-l),s),m=-p*p+f*(f+2*l)+c);else f=a>0?-s:s,p=Math.max(0,-(a*f+o)),m=-p*p+f*(f+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,p),r&&r.copy(gr).addScaledVector(Mi,f),m}intersectSphere(t,e){ze.subVectors(t.center,this.origin);const n=ze.dot(this.direction),r=ze.dot(ze)-n*n,s=t.radius*t.radius;if(r>s)return null;const a=Math.sqrt(s-r),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,r,s,a,o,l;const c=1/this.direction.x,h=1/this.direction.y,p=1/this.direction.z,f=this.origin;return c>=0?(n=(t.min.x-f.x)*c,r=(t.max.x-f.x)*c):(n=(t.max.x-f.x)*c,r=(t.min.x-f.x)*c),h>=0?(s=(t.min.y-f.y)*h,a=(t.max.y-f.y)*h):(s=(t.max.y-f.y)*h,a=(t.min.y-f.y)*h),n>a||s>r||((s>n||isNaN(n))&&(n=s),(a=0?(o=(t.min.z-f.z)*p,l=(t.max.z-f.z)*p):(o=(t.max.z-f.z)*p,l=(t.min.z-f.z)*p),n>l||o>r)||((o>n||n!==n)&&(n=o),(l=0?n:r,e)}intersectsBox(t){return this.intersectBox(t,ze)!==null}intersectTriangle(t,e,n,r,s){vr.subVectors(e,t),Si.subVectors(n,t),xr.crossVectors(vr,Si);let a=this.direction.dot(xr),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;je.subVectors(this.origin,t);const l=o*this.direction.dot(Si.crossVectors(je,Si));if(l<0)return null;const c=o*this.direction.dot(vr.cross(je));if(c<0||l+c>a)return null;const h=-o*je.dot(xr);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Jt{constructor(t,e,n,r,s,a,o,l,c,h,p,f,m,v,S,d){Jt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,n,r,s,a,o,l,c,h,p,f,m,v,S,d)}set(t,e,n,r,s,a,o,l,c,h,p,f,m,v,S,d){const u=this.elements;return u[0]=t,u[4]=e,u[8]=n,u[12]=r,u[1]=s,u[5]=a,u[9]=o,u[13]=l,u[2]=c,u[6]=h,u[10]=p,u[14]=f,u[3]=m,u[7]=v,u[11]=S,u[15]=d,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 Jt().fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,r=1/Rn.setFromMatrixColumn(t,0).length(),s=1/Rn.setFromMatrixColumn(t,1).length(),a=1/Rn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*r,e[1]=n[1]*r,e[2]=n[2]*r,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,r=t.y,s=t.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(r),c=Math.sin(r),h=Math.cos(s),p=Math.sin(s);if(t.order==="XYZ"){const f=a*h,m=a*p,v=o*h,S=o*p;e[0]=l*h,e[4]=-l*p,e[8]=c,e[1]=m+v*c,e[5]=f-S*c,e[9]=-o*l,e[2]=S-f*c,e[6]=v+m*c,e[10]=a*l}else if(t.order==="YXZ"){const f=l*h,m=l*p,v=c*h,S=c*p;e[0]=f+S*o,e[4]=v*o-m,e[8]=a*c,e[1]=a*p,e[5]=a*h,e[9]=-o,e[2]=m*o-v,e[6]=S+f*o,e[10]=a*l}else if(t.order==="ZXY"){const f=l*h,m=l*p,v=c*h,S=c*p;e[0]=f-S*o,e[4]=-a*p,e[8]=v+m*o,e[1]=m+v*o,e[5]=a*h,e[9]=S-f*o,e[2]=-a*c,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const f=a*h,m=a*p,v=o*h,S=o*p;e[0]=l*h,e[4]=v*c-m,e[8]=f*c+S,e[1]=l*p,e[5]=S*c+f,e[9]=m*c-v,e[2]=-c,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const f=a*l,m=a*c,v=o*l,S=o*c;e[0]=l*h,e[4]=S-f*p,e[8]=v*p+m,e[1]=p,e[5]=a*h,e[9]=-o*h,e[2]=-c*h,e[6]=m*p+v,e[10]=f-S*p}else if(t.order==="XZY"){const f=a*l,m=a*c,v=o*l,S=o*c;e[0]=l*h,e[4]=-p,e[8]=c*h,e[1]=f*p+S,e[5]=a*h,e[9]=m*p-v,e[2]=v*p-m,e[6]=o*h,e[10]=S*p+f}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(zl,t,Hl)}lookAt(t,e,n){const r=this.elements;return ve.subVectors(t,e),ve.lengthSq()===0&&(ve.z=1),ve.normalize(),Ze.crossVectors(n,ve),Ze.lengthSq()===0&&(Math.abs(n.z)===1?ve.x+=1e-4:ve.z+=1e-4,ve.normalize(),Ze.crossVectors(n,ve)),Ze.normalize(),Ei.crossVectors(ve,Ze),r[0]=Ze.x,r[4]=Ei.x,r[8]=ve.x,r[1]=Ze.y,r[5]=Ei.y,r[9]=ve.y,r[2]=Ze.z,r[6]=Ei.z,r[10]=ve.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,r=e.elements,s=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],h=n[1],p=n[5],f=n[9],m=n[13],v=n[2],S=n[6],d=n[10],u=n[14],y=n[3],M=n[7],T=n[11],U=n[15],b=r[0],w=r[4],O=r[8],E=r[12],_=r[1],F=r[5],k=r[9],C=r[13],G=r[2],q=r[6],j=r[10],st=r[14],H=r[3],J=r[7],Z=r[11],ft=r[15];return s[0]=a*b+o*_+l*G+c*H,s[4]=a*w+o*F+l*q+c*J,s[8]=a*O+o*k+l*j+c*Z,s[12]=a*E+o*C+l*st+c*ft,s[1]=h*b+p*_+f*G+m*H,s[5]=h*w+p*F+f*q+m*J,s[9]=h*O+p*k+f*j+m*Z,s[13]=h*E+p*C+f*st+m*ft,s[2]=v*b+S*_+d*G+u*H,s[6]=v*w+S*F+d*q+u*J,s[10]=v*O+S*k+d*j+u*Z,s[14]=v*E+S*C+d*st+u*ft,s[3]=y*b+M*_+T*G+U*H,s[7]=y*w+M*F+T*q+U*J,s[11]=y*O+M*k+T*j+U*Z,s[15]=y*E+M*C+T*st+U*ft,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],r=t[8],s=t[12],a=t[1],o=t[5],l=t[9],c=t[13],h=t[2],p=t[6],f=t[10],m=t[14],v=t[3],S=t[7],d=t[11],u=t[15];return v*(+s*l*p-r*c*p-s*o*f+n*c*f+r*o*m-n*l*m)+S*(+e*l*m-e*c*f+s*a*f-r*a*m+r*c*h-s*l*h)+d*(+e*c*p-e*o*m-s*a*p+n*a*m+s*o*h-n*c*h)+u*(-r*o*h-e*l*p+e*o*f+r*a*p-n*a*f+n*l*h)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const r=this.elements;return t.isVector3?(r[12]=t.x,r[13]=t.y,r[14]=t.z):(r[12]=t,r[13]=e,r[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],r=t[2],s=t[3],a=t[4],o=t[5],l=t[6],c=t[7],h=t[8],p=t[9],f=t[10],m=t[11],v=t[12],S=t[13],d=t[14],u=t[15],y=p*d*c-S*f*c+S*l*m-o*d*m-p*l*u+o*f*u,M=v*f*c-h*d*c-v*l*m+a*d*m+h*l*u-a*f*u,T=h*S*c-v*p*c+v*o*m-a*S*m-h*o*u+a*p*u,U=v*p*l-h*S*l-v*o*f+a*S*f+h*o*d-a*p*d,b=e*y+n*M+r*T+s*U;if(b===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const w=1/b;return t[0]=y*w,t[1]=(S*f*s-p*d*s-S*r*m+n*d*m+p*r*u-n*f*u)*w,t[2]=(o*d*s-S*l*s+S*r*c-n*d*c-o*r*u+n*l*u)*w,t[3]=(p*l*s-o*f*s-p*r*c+n*f*c+o*r*m-n*l*m)*w,t[4]=M*w,t[5]=(h*d*s-v*f*s+v*r*m-e*d*m-h*r*u+e*f*u)*w,t[6]=(v*l*s-a*d*s-v*r*c+e*d*c+a*r*u-e*l*u)*w,t[7]=(a*f*s-h*l*s+h*r*c-e*f*c-a*r*m+e*l*m)*w,t[8]=T*w,t[9]=(v*p*s-h*S*s-v*n*m+e*S*m+h*n*u-e*p*u)*w,t[10]=(a*S*s-v*o*s+v*n*c-e*S*c-a*n*u+e*o*u)*w,t[11]=(h*o*s-a*p*s-h*n*c+e*p*c+a*n*m-e*o*m)*w,t[12]=U*w,t[13]=(h*S*r-v*p*r+v*n*f-e*S*f-h*n*d+e*p*d)*w,t[14]=(v*o*r-a*S*r-v*n*l+e*S*l+a*n*d-e*o*d)*w,t[15]=(a*p*r-h*o*r+h*n*l-e*p*l-a*n*f+e*o*f)*w,this}scale(t){const e=this.elements,n=t.x,r=t.y,s=t.z;return e[0]*=n,e[4]*=r,e[8]*=s,e[1]*=n,e[5]*=r,e[9]*=s,e[2]*=n,e[6]*=r,e[10]*=s,e[3]*=n,e[7]*=r,e[11]*=s,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],r=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,r))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),r=Math.sin(e),s=1-n,a=t.x,o=t.y,l=t.z,c=s*a,h=s*o;return this.set(c*a+n,c*o-r*l,c*l+r*o,0,c*o+r*l,h*o+n,h*l-r*a,0,c*l-r*o,h*l+r*a,s*l*l+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,r,s,a){return this.set(1,n,s,0,t,1,a,0,e,r,1,0,0,0,0,1),this}compose(t,e,n){const r=this.elements,s=e._x,a=e._y,o=e._z,l=e._w,c=s+s,h=a+a,p=o+o,f=s*c,m=s*h,v=s*p,S=a*h,d=a*p,u=o*p,y=l*c,M=l*h,T=l*p,U=n.x,b=n.y,w=n.z;return r[0]=(1-(S+u))*U,r[1]=(m+T)*U,r[2]=(v-M)*U,r[3]=0,r[4]=(m-T)*b,r[5]=(1-(f+u))*b,r[6]=(d+y)*b,r[7]=0,r[8]=(v+M)*w,r[9]=(d-y)*w,r[10]=(1-(f+S))*w,r[11]=0,r[12]=t.x,r[13]=t.y,r[14]=t.z,r[15]=1,this}decompose(t,e,n){const r=this.elements;let s=Rn.set(r[0],r[1],r[2]).length();const a=Rn.set(r[4],r[5],r[6]).length(),o=Rn.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),t.x=r[12],t.y=r[13],t.z=r[14],be.copy(this);const c=1/s,h=1/a,p=1/o;return be.elements[0]*=c,be.elements[1]*=c,be.elements[2]*=c,be.elements[4]*=h,be.elements[5]*=h,be.elements[6]*=h,be.elements[8]*=p,be.elements[9]*=p,be.elements[10]*=p,e.setFromRotationMatrix(be),n.x=s,n.y=a,n.z=o,this}makePerspective(t,e,n,r,s,a,o=Xe){const l=this.elements,c=2*s/(e-t),h=2*s/(n-r),p=(e+t)/(e-t),f=(n+r)/(n-r);let m,v;if(o===Xe)m=-(a+s)/(a-s),v=-2*a*s/(a-s);else if(o===ki)m=-a/(a-s),v=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=p,l[12]=0,l[1]=0,l[5]=h,l[9]=f,l[13]=0,l[2]=0,l[6]=0,l[10]=m,l[14]=v,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(t,e,n,r,s,a,o=Xe){const l=this.elements,c=1/(e-t),h=1/(n-r),p=1/(a-s),f=(e+t)*c,m=(n+r)*h;let v,S;if(o===Xe)v=(a+s)*p,S=-2*p;else if(o===ki)v=s*p,S=-1*p;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-f,l[1]=0,l[5]=2*h,l[9]=0,l[13]=-m,l[2]=0,l[6]=0,l[10]=S,l[14]=-v,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let r=0;r<16;r++)if(e[r]!==n[r])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const Rn=new L,be=new Jt,zl=new L(0,0,0),Hl=new L(1,1,1),Ze=new L,Ei=new L,ve=new L,$s=new Jt,js=new ui;class Fe{constructor(t=0,e=0,n=0,r=Fe.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=r}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,r=this._order){return this._x=t,this._y=e,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const r=t.elements,s=r[0],a=r[4],o=r[8],l=r[1],c=r[5],h=r[9],p=r[2],f=r[6],m=r[10];switch(e){case"XYZ":this._y=Math.asin(fe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-fe(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-p,s),this._z=0);break;case"ZXY":this._x=Math.asin(fe(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-p,m),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-fe(p,-1,1)),Math.abs(p)<.9999999?(this._x=Math.atan2(f,m),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(fe(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-p,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-fe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return $s.makeRotationFromQuaternion(t),this.setFromRotationMatrix($s,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return js.setFromEuler(this),this.setFromQuaternion(js,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Fe.DEFAULT_ORDER="XYZ";class Za{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),r.maxGeometryCount=this._maxGeometryCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(t),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(t.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),p.length>0&&(n.shapes=p),f.length>0&&(n.skeletons=f),m.length>0&&(n.animations=m),v.length>0&&(n.nodes=v)}return n.object=r,n;function a(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(t,e,n,r,s){we.subVectors(r,e),Ve.subVectors(n,e),Sr.subVectors(t,e);const a=we.dot(we),o=we.dot(Ve),l=we.dot(Sr),c=Ve.dot(Ve),h=Ve.dot(Sr),p=a*c-o*o;if(p===0)return s.set(0,0,0),null;const f=1/p,m=(c*l-o*h)*f,v=(a*h-o*l)*f;return s.set(1-m-v,v,m)}static containsPoint(t,e,n,r){return this.getBarycoord(t,e,n,r,Ge)===null?!1:Ge.x>=0&&Ge.y>=0&&Ge.x+Ge.y<=1}static getInterpolation(t,e,n,r,s,a,o,l){return this.getBarycoord(t,e,n,r,Ge)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Ge.x),l.addScaledVector(a,Ge.y),l.addScaledVector(o,Ge.z),l)}static isFrontFacing(t,e,n,r){return we.subVectors(n,e),Ve.subVectors(t,e),we.cross(Ve).dot(r)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,r){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[r]),this}setFromAttributeAndIndices(t,e,n,r){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,r),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return we.subVectors(this.c,this.b),Ve.subVectors(this.a,this.b),we.cross(Ve).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return De.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return De.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,n,r,s){return De.getInterpolation(t,this.a,this.b,this.c,e,n,r,s)}containsPoint(t){return De.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return De.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,r=this.b,s=this.c;let a,o;Ln.subVectors(r,n),Dn.subVectors(s,n),Er.subVectors(t,n);const l=Ln.dot(Er),c=Dn.dot(Er);if(l<=0&&c<=0)return e.copy(n);yr.subVectors(t,r);const h=Ln.dot(yr),p=Dn.dot(yr);if(h>=0&&p<=h)return e.copy(r);const f=l*p-h*c;if(f<=0&&l>=0&&h<=0)return a=l/(l-h),e.copy(n).addScaledVector(Ln,a);Tr.subVectors(t,s);const m=Ln.dot(Tr),v=Dn.dot(Tr);if(v>=0&&m<=v)return e.copy(s);const S=m*c-l*v;if(S<=0&&c>=0&&v<=0)return o=c/(c-v),e.copy(n).addScaledVector(Dn,o);const d=h*v-m*p;if(d<=0&&p-h>=0&&m-v>=0)return na.subVectors(s,r),o=(p-h)/(p-h+(m-v)),e.copy(r).addScaledVector(na,o);const u=1/(d+S+f);return a=S*u,o=f*u,e.copy(n).addScaledVector(Ln,a).addScaledVector(Dn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const Ja={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Je={h:0,s:0,l:0},Ti={h:0,s:0,l:0};function Ar(i,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?i+(t-i)*6*e:e<1/2?t:e<2/3?i+(t-i)*6*(2/3-e):i}class zt{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(e===void 0&&n===void 0){const r=t;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Pe){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,Gt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,r=Gt.workingColorSpace){return this.r=t,this.g=e,this.b=n,Gt.toWorkingColorSpace(this,r),this}setHSL(t,e,n,r=Gt.workingColorSpace){if(t=Rl(t,1),e=fe(e,0,1),n=fe(n,0,1),e===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+e):n+e-n*e,a=2*n-s;this.r=Ar(a,s,t+1/3),this.g=Ar(a,s,t),this.b=Ar(a,s,t-1/3)}return Gt.toWorkingColorSpace(this,r),this}setStyle(t,e=Pe){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(t)){let s;const a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,e);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,e);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(t)){const s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,e);if(a===6)return this.setHex(parseInt(s,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=Pe){const n=Ja[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=kn(t.r),this.g=kn(t.g),this.b=kn(t.b),this}copyLinearToSRGB(t){return this.r=dr(t.r),this.g=dr(t.g),this.b=dr(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Pe){return Gt.fromWorkingColorSpace(ce.copy(this),t),Math.round(fe(ce.r*255,0,255))*65536+Math.round(fe(ce.g*255,0,255))*256+Math.round(fe(ce.b*255,0,255))}getHexString(t=Pe){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Gt.workingColorSpace){Gt.fromWorkingColorSpace(ce.copy(this),e);const n=ce.r,r=ce.g,s=ce.b,a=Math.max(n,r,s),o=Math.min(n,r,s);let l,c;const h=(o+a)/2;if(o===a)l=0,c=0;else{const p=a-o;switch(c=h<=.5?p/(a+o):p/(2-a-o),a){case n:l=(r-s)/p+(r0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const n=t[e];if(n===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const r=this[e];if(r===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[e]=n}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Vn&&(n.blending=this.blending),this.side!==sn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Br&&(n.blendSrc=this.blendSrc),this.blendDst!==zr&&(n.blendDst=this.blendDst),this.blendEquation!==vn&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==zi&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Gs&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==yn&&(n.stencilFail=this.stencilFail),this.stencilZFail!==yn&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==yn&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function r(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(e){const s=r(t.textures),a=r(t.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(e!==null){const r=e.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}}class Qa extends $n{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new zt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Fe,this.combine=Kr,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const ee=new L,Ai=new Pt;class Te{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=ks,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=en,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}get updateRange(){return Pl("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let r=0,s=this.itemSize;r0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(t[c]=l[c]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const l in n){const c=n[l];t.data.attributes[l]=c.toJSON(t.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let p=0,f=c.length;p0&&(r[l]=h,s=!0)}s&&(t.data.morphAttributes=r,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;n!==null&&this.setIndex(n.clone(e));const r=t.attributes;for(const c in r){const h=r[c];this.setAttribute(c,h.clone(e))}const s=t.morphAttributes;for(const c in s){const h=[],p=s[c];for(let f=0,m=p.length;f0){const r=e[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(t.far-t.near)**2))&&(ia.copy(s).invert(),dn.copy(t.ray).applyMatrix4(ia),!(n.boundingBox!==null&&dn.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(t,e,dn)))}_computeIntersections(t,e,n){let r;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,h=s.attributes.uv1,p=s.attributes.normal,f=s.groups,m=s.drawRange;if(o!==null)if(Array.isArray(a))for(let v=0,S=f.length;ve.far?null:{distance:c,point:Di.clone(),object:i}}function Ui(i,t,e,n,r,s,a,o,l,c){i.getVertexPosition(o,In),i.getVertexPosition(l,Nn),i.getVertexPosition(c,Fn);const h=Yl(i,t,e,n,In,Nn,Fn,Li);if(h){r&&(Ri.fromBufferAttribute(r,o),Ci.fromBufferAttribute(r,l),Pi.fromBufferAttribute(r,c),h.uv=De.getInterpolation(Li,In,Nn,Fn,Ri,Ci,Pi,new Pt)),s&&(Ri.fromBufferAttribute(s,o),Ci.fromBufferAttribute(s,l),Pi.fromBufferAttribute(s,c),h.uv1=De.getInterpolation(Li,In,Nn,Fn,Ri,Ci,Pi,new Pt)),a&&(sa.fromBufferAttribute(a,o),aa.fromBufferAttribute(a,l),oa.fromBufferAttribute(a,c),h.normal=De.getInterpolation(Li,In,Nn,Fn,sa,aa,oa,new L),h.normal.dot(n.direction)>0&&h.normal.multiplyScalar(-1));const p={a:o,b:l,c,normal:new L,materialIndex:0};De.getNormal(In,Nn,Fn,p.normal),h.face=p}return h}class jn extends qe{constructor(t=1,e=1,n=1,r=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:r,heightSegments:s,depthSegments:a};const o=this;r=Math.floor(r),s=Math.floor(s),a=Math.floor(a);const l=[],c=[],h=[],p=[];let f=0,m=0;v("z","y","x",-1,-1,n,e,t,a,s,0),v("z","y","x",1,-1,n,e,-t,a,s,1),v("x","z","y",1,1,t,n,e,r,a,2),v("x","z","y",1,-1,t,n,-e,r,a,3),v("x","y","z",1,-1,t,e,n,r,s,4),v("x","y","z",-1,-1,t,e,-n,r,s,5),this.setIndex(l),this.setAttribute("position",new Ne(c,3)),this.setAttribute("normal",new Ne(h,3)),this.setAttribute("uv",new Ne(p,2));function v(S,d,u,y,M,T,U,b,w,O,E){const _=T/w,F=U/O,k=T/2,C=U/2,G=b/2,q=w+1,j=O+1;let st=0,H=0;const J=new L;for(let Z=0;Z0?1:-1,h.push(J.x,J.y,J.z),p.push(Lt/w),p.push(1-Z/O),st+=1}}for(let Z=0;Z0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class io extends _e{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Jt,this.projectionMatrix=new Jt,this.projectionMatrixInverse=new Jt,this.coordinateSystem=Xe}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Qe=new L,la=new Pt,ca=new Pt;class Me extends io{constructor(t=50,e=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=Wr*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(cr*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Wr*2*Math.atan(Math.tan(cr*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,n){Qe.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(Qe.x,Qe.y).multiplyScalar(-t/Qe.z),Qe.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Qe.x,Qe.y).multiplyScalar(-t/Qe.z)}getViewSize(t,e){return this.getViewBounds(t,la,ca),e.subVectors(ca,la)}setViewOffset(t,e,n,r,s,a){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(cr*.5*this.fov)/this.zoom,n=2*e,r=this.aspect*n,s=-.5*r;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;s+=a.offsetX*r/l,e-=a.offsetY*n/c,r*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(s+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const On=-90,Bn=1;class Jl extends _e{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Me(On,Bn,t,e);r.layers=this.layers,this.add(r);const s=new Me(On,Bn,t,e);s.layers=this.layers,this.add(s);const a=new Me(On,Bn,t,e);a.layers=this.layers,this.add(a);const o=new Me(On,Bn,t,e);o.layers=this.layers,this.add(o);const l=new Me(On,Bn,t,e);l.layers=this.layers,this.add(l);const c=new Me(On,Bn,t,e);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,r,s,a,o,l]=e;for(const c of e)this.remove(c);if(t===Xe)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(t===ki)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);for(const c of e)this.add(c),c.updateMatrixWorld()}update(t,e){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[s,a,o,l,c,h]=this.children,p=t.getRenderTarget(),f=t.getActiveCubeFace(),m=t.getActiveMipmapLevel(),v=t.xr.enabled;t.xr.enabled=!1;const S=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,r),t.render(e,s),t.setRenderTarget(n,1,r),t.render(e,a),t.setRenderTarget(n,2,r),t.render(e,o),t.setRenderTarget(n,3,r),t.render(e,l),t.setRenderTarget(n,4,r),t.render(e,c),n.texture.generateMipmaps=S,t.setRenderTarget(n,5,r),t.render(e,h),t.setRenderTarget(p,f,m),t.xr.enabled=v,n.texture.needsPMREMUpdate=!0}}class ro extends me{constructor(t,e,n,r,s,a,o,l,c,h){t=t!==void 0?t:[],e=e!==void 0?e:Wn,super(t,e,n,r,s,a,o,l,c,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class Ql extends En{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},r=[n,n,n,n,n,n];this.texture=new ro(r,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Re}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},r=new jn(5,5,5),s=new on({name:"CubemapFromEquirect",uniforms:Yn(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:pe,blending:nn});s.uniforms.tEquirect.value=e;const a=new Ie(r,s),o=e.minFilter;return e.minFilter===Sn&&(e.minFilter=Re),new Jl(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,r){const s=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,n,r);t.setRenderTarget(s)}}const Rr=new L,tc=new L,ec=new Tt;class _n{constructor(t=new L(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,r){return this.normal.set(t,e,n),this.constant=r,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const r=Rr.subVectors(n,e).cross(tc.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(r,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(Rr),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;const s=-(t.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:e.copy(t.start).addScaledVector(n,s)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||ec.getNormalMatrix(t),r=this.coplanarPoint(Rr).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}}const fn=new Zr,Ii=new L;class Jr{constructor(t=new _n,e=new _n,n=new _n,r=new _n,s=new _n,a=new _n){this.planes=[t,e,n,r,s,a]}set(t,e,n,r,s,a){const o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=Xe){const n=this.planes,r=t.elements,s=r[0],a=r[1],o=r[2],l=r[3],c=r[4],h=r[5],p=r[6],f=r[7],m=r[8],v=r[9],S=r[10],d=r[11],u=r[12],y=r[13],M=r[14],T=r[15];if(n[0].setComponents(l-s,f-c,d-m,T-u).normalize(),n[1].setComponents(l+s,f+c,d+m,T+u).normalize(),n[2].setComponents(l+a,f+h,d+v,T+y).normalize(),n[3].setComponents(l-a,f-h,d-v,T-y).normalize(),n[4].setComponents(l-o,f-p,d-S,T-M).normalize(),e===Xe)n[5].setComponents(l+o,f+p,d+S,T+M).normalize();else if(e===ki)n[5].setComponents(o,p,S,M).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(t.boundingSphere!==void 0)t.boundingSphere===null&&t.computeBoundingSphere(),fn.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),fn.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(fn)}intersectsSprite(t){return fn.center.set(0,0,0),fn.radius=.7071067811865476,fn.applyMatrix4(t.matrixWorld),this.intersectsSphere(fn)}intersectsSphere(t){const e=this.planes,n=t.center,r=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)0?t.max.x:t.min.x,Ii.y=r.normal.y>0?t.max.y:t.min.y,Ii.z=r.normal.z>0?t.max.z:t.min.z,r.distanceToPoint(Ii)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function so(){let i=null,t=!1,e=null,n=null;function r(s,a){e(s,a),n=i.requestAnimationFrame(r)}return{start:function(){t!==!0&&e!==null&&(n=i.requestAnimationFrame(r),t=!0)},stop:function(){i.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){i=s}}}function nc(i){const t=new WeakMap;function e(o,l){const c=o.array,h=o.usage,p=c.byteLength,f=i.createBuffer();i.bindBuffer(l,f),i.bufferData(l,c,h),o.onUploadCallback();let m;if(c instanceof Float32Array)m=i.FLOAT;else if(c instanceof Uint16Array)o.isFloat16BufferAttribute?m=i.HALF_FLOAT:m=i.UNSIGNED_SHORT;else if(c instanceof Int16Array)m=i.SHORT;else if(c instanceof Uint32Array)m=i.UNSIGNED_INT;else if(c instanceof Int32Array)m=i.INT;else if(c instanceof Int8Array)m=i.BYTE;else if(c instanceof Uint8Array)m=i.UNSIGNED_BYTE;else if(c instanceof Uint8ClampedArray)m=i.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+c);return{buffer:f,type:m,bytesPerElement:c.BYTES_PER_ELEMENT,version:o.version,size:p}}function n(o,l,c){const h=l.array,p=l._updateRange,f=l.updateRanges;if(i.bindBuffer(c,o),p.count===-1&&f.length===0&&i.bufferSubData(c,0,h),f.length!==0){for(let m=0,v=f.length;m 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,xc=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,Mc=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,Sc=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,Ec=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,yc=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,Tc=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`,Ac=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`,bc=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); + return dot( weights, rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,wc=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,Rc=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,Cc=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,Pc=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,Lc=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,Dc=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,Uc="gl_FragColor = linearToOutputTexel( gl_FragColor );",Ic=` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +} +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( in vec4 value ) { + return sRGBTransferOETF( value ); +}`,Nc=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,Fc=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,Oc=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,Bc=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,zc=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,Hc=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,Vc=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,Gc=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,kc=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,Wc=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,Xc=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,qc=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,Yc=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Kc=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( LEGACY_LIGHTS ) + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #else + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,$c=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,jc=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,Zc=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,Jc=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,Qc=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,th=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,eh=`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,nh=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,ih=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,rh=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,sh=`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,ah=`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,oh=`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,lh=`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,ch=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,hh=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,uh=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,dh=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,fh=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,ph=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,mh=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[MORPHTARGETS_COUNT]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,_h=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,gh=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } + #else + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; + #endif +#endif`,vh=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + #endif + #ifdef MORPHTARGETS_TEXTURE + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } + #else + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif + #endif +#endif`,xh=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } + #else + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif + #endif +#endif`,Mh=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,Sh=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,Eh=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,yh=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,Th=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,Ah=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,bh=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,wh=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,Rh=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,Ch=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,Ph=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Lh=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec2 packDepthToRG( in highp float v ) { + return packDepthToRGBA( v ).yx; +} +float unpackRGToDepth( const in highp vec2 v ) { + return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,Dh=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,Uh=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,Ih=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,Nh=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,Fh=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,Oh=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,Bh=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return shadow; + } +#endif`,zh=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,Hh=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,Vh=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,Gh=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,kh=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,Wh=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,Xh=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,qh=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,Yh=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,Kh=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,$h=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,jh=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,Zh=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,Jh=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,Qh=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,tu=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,eu=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const nu=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,iu=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,ru=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,su=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,au=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,ou=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,lu=`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,cu=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`,hu=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,uu=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,du=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,fu=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,pu=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,mu=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,_u=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,gu=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,vu=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,xu=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,Mu=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,Su=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,Eu=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,yu=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,Tu=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,Au=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,bu=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,wu=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,Ru=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,Cu=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,Pu=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,Lu=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,Du=`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,Uu=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,Iu=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,Nu=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,yt={alphahash_fragment:ic,alphahash_pars_fragment:rc,alphamap_fragment:sc,alphamap_pars_fragment:ac,alphatest_fragment:oc,alphatest_pars_fragment:lc,aomap_fragment:cc,aomap_pars_fragment:hc,batching_pars_vertex:uc,batching_vertex:dc,begin_vertex:fc,beginnormal_vertex:pc,bsdfs:mc,iridescence_fragment:_c,bumpmap_pars_fragment:gc,clipping_planes_fragment:vc,clipping_planes_pars_fragment:xc,clipping_planes_pars_vertex:Mc,clipping_planes_vertex:Sc,color_fragment:Ec,color_pars_fragment:yc,color_pars_vertex:Tc,color_vertex:Ac,common:bc,cube_uv_reflection_fragment:wc,defaultnormal_vertex:Rc,displacementmap_pars_vertex:Cc,displacementmap_vertex:Pc,emissivemap_fragment:Lc,emissivemap_pars_fragment:Dc,colorspace_fragment:Uc,colorspace_pars_fragment:Ic,envmap_fragment:Nc,envmap_common_pars_fragment:Fc,envmap_pars_fragment:Oc,envmap_pars_vertex:Bc,envmap_physical_pars_fragment:$c,envmap_vertex:zc,fog_vertex:Hc,fog_pars_vertex:Vc,fog_fragment:Gc,fog_pars_fragment:kc,gradientmap_pars_fragment:Wc,lightmap_pars_fragment:Xc,lights_lambert_fragment:qc,lights_lambert_pars_fragment:Yc,lights_pars_begin:Kc,lights_toon_fragment:jc,lights_toon_pars_fragment:Zc,lights_phong_fragment:Jc,lights_phong_pars_fragment:Qc,lights_physical_fragment:th,lights_physical_pars_fragment:eh,lights_fragment_begin:nh,lights_fragment_maps:ih,lights_fragment_end:rh,logdepthbuf_fragment:sh,logdepthbuf_pars_fragment:ah,logdepthbuf_pars_vertex:oh,logdepthbuf_vertex:lh,map_fragment:ch,map_pars_fragment:hh,map_particle_fragment:uh,map_particle_pars_fragment:dh,metalnessmap_fragment:fh,metalnessmap_pars_fragment:ph,morphinstance_vertex:mh,morphcolor_vertex:_h,morphnormal_vertex:gh,morphtarget_pars_vertex:vh,morphtarget_vertex:xh,normal_fragment_begin:Mh,normal_fragment_maps:Sh,normal_pars_fragment:Eh,normal_pars_vertex:yh,normal_vertex:Th,normalmap_pars_fragment:Ah,clearcoat_normal_fragment_begin:bh,clearcoat_normal_fragment_maps:wh,clearcoat_pars_fragment:Rh,iridescence_pars_fragment:Ch,opaque_fragment:Ph,packing:Lh,premultiplied_alpha_fragment:Dh,project_vertex:Uh,dithering_fragment:Ih,dithering_pars_fragment:Nh,roughnessmap_fragment:Fh,roughnessmap_pars_fragment:Oh,shadowmap_pars_fragment:Bh,shadowmap_pars_vertex:zh,shadowmap_vertex:Hh,shadowmask_pars_fragment:Vh,skinbase_vertex:Gh,skinning_pars_vertex:kh,skinning_vertex:Wh,skinnormal_vertex:Xh,specularmap_fragment:qh,specularmap_pars_fragment:Yh,tonemapping_fragment:Kh,tonemapping_pars_fragment:$h,transmission_fragment:jh,transmission_pars_fragment:Zh,uv_pars_fragment:Jh,uv_pars_vertex:Qh,uv_vertex:tu,worldpos_vertex:eu,background_vert:nu,background_frag:iu,backgroundCube_vert:ru,backgroundCube_frag:su,cube_vert:au,cube_frag:ou,depth_vert:lu,depth_frag:cu,distanceRGBA_vert:hu,distanceRGBA_frag:uu,equirect_vert:du,equirect_frag:fu,linedashed_vert:pu,linedashed_frag:mu,meshbasic_vert:_u,meshbasic_frag:gu,meshlambert_vert:vu,meshlambert_frag:xu,meshmatcap_vert:Mu,meshmatcap_frag:Su,meshnormal_vert:Eu,meshnormal_frag:yu,meshphong_vert:Tu,meshphong_frag:Au,meshphysical_vert:bu,meshphysical_frag:wu,meshtoon_vert:Ru,meshtoon_frag:Cu,points_vert:Pu,points_frag:Lu,shadow_vert:Du,shadow_frag:Uu,sprite_vert:Iu,sprite_frag:Nu},et={common:{diffuse:{value:new zt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Tt},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Tt}},envmap:{envMap:{value:null},envMapRotation:{value:new Tt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Tt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Tt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Tt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Tt},normalScale:{value:new Pt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Tt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Tt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Tt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Tt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new zt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new zt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0},uvTransform:{value:new Tt}},sprite:{diffuse:{value:new zt(16777215)},opacity:{value:1},center:{value:new Pt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Tt},alphaMap:{value:null},alphaMapTransform:{value:new Tt},alphaTest:{value:0}}},Le={basic:{uniforms:ue([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:yt.meshbasic_vert,fragmentShader:yt.meshbasic_frag},lambert:{uniforms:ue([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new zt(0)}}]),vertexShader:yt.meshlambert_vert,fragmentShader:yt.meshlambert_frag},phong:{uniforms:ue([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new zt(0)},specular:{value:new zt(1118481)},shininess:{value:30}}]),vertexShader:yt.meshphong_vert,fragmentShader:yt.meshphong_frag},standard:{uniforms:ue([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new zt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:yt.meshphysical_vert,fragmentShader:yt.meshphysical_frag},toon:{uniforms:ue([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new zt(0)}}]),vertexShader:yt.meshtoon_vert,fragmentShader:yt.meshtoon_frag},matcap:{uniforms:ue([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:yt.meshmatcap_vert,fragmentShader:yt.meshmatcap_frag},points:{uniforms:ue([et.points,et.fog]),vertexShader:yt.points_vert,fragmentShader:yt.points_frag},dashed:{uniforms:ue([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:yt.linedashed_vert,fragmentShader:yt.linedashed_frag},depth:{uniforms:ue([et.common,et.displacementmap]),vertexShader:yt.depth_vert,fragmentShader:yt.depth_frag},normal:{uniforms:ue([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:yt.meshnormal_vert,fragmentShader:yt.meshnormal_frag},sprite:{uniforms:ue([et.sprite,et.fog]),vertexShader:yt.sprite_vert,fragmentShader:yt.sprite_frag},background:{uniforms:{uvTransform:{value:new Tt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:yt.background_vert,fragmentShader:yt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Tt}},vertexShader:yt.backgroundCube_vert,fragmentShader:yt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:yt.cube_vert,fragmentShader:yt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:yt.equirect_vert,fragmentShader:yt.equirect_frag},distanceRGBA:{uniforms:ue([et.common,et.displacementmap,{referencePosition:{value:new L},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:yt.distanceRGBA_vert,fragmentShader:yt.distanceRGBA_frag},shadow:{uniforms:ue([et.lights,et.fog,{color:{value:new zt(0)},opacity:{value:1}}]),vertexShader:yt.shadow_vert,fragmentShader:yt.shadow_frag}};Le.physical={uniforms:ue([Le.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Tt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Tt},clearcoatNormalScale:{value:new Pt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Tt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Tt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Tt},sheen:{value:0},sheenColor:{value:new zt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Tt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Tt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Tt},transmissionSamplerSize:{value:new Pt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Tt},attenuationDistance:{value:0},attenuationColor:{value:new zt(0)},specularColor:{value:new zt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Tt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Tt},anisotropyVector:{value:new Pt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Tt}}]),vertexShader:yt.meshphysical_vert,fragmentShader:yt.meshphysical_frag};const Ni={r:0,b:0,g:0},pn=new Fe,Fu=new Jt;function Ou(i,t,e,n,r,s,a){const o=new zt(0);let l=s===!0?0:1,c,h,p=null,f=0,m=null;function v(y){let M=y.isScene===!0?y.background:null;return M&&M.isTexture&&(M=(y.backgroundBlurriness>0?e:t).get(M)),M}function S(y){let M=!1;const T=v(y);T===null?u(o,l):T&&T.isColor&&(u(T,1),M=!0);const U=i.xr.getEnvironmentBlendMode();U==="additive"?n.buffers.color.setClear(0,0,0,1,a):U==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||M)&&i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil)}function d(y,M){const T=v(M);T&&(T.isCubeTexture||T.mapping===Xi)?(h===void 0&&(h=new Ie(new jn(1,1,1),new on({name:"BackgroundCubeMaterial",uniforms:Yn(Le.backgroundCube.uniforms),vertexShader:Le.backgroundCube.vertexShader,fragmentShader:Le.backgroundCube.fragmentShader,side:pe,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(U,b,w){this.matrixWorld.copyPosition(w.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(h)),pn.copy(M.backgroundRotation),pn.x*=-1,pn.y*=-1,pn.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(pn.y*=-1,pn.z*=-1),h.material.uniforms.envMap.value=T,h.material.uniforms.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=M.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(Fu.makeRotationFromEuler(pn)),h.material.toneMapped=Gt.getTransfer(T.colorSpace)!==Yt,(p!==T||f!==T.version||m!==i.toneMapping)&&(h.material.needsUpdate=!0,p=T,f=T.version,m=i.toneMapping),h.layers.enableAll(),y.unshift(h,h.geometry,h.material,0,0,null)):T&&T.isTexture&&(c===void 0&&(c=new Ie(new Ki(2,2),new on({name:"BackgroundMaterial",uniforms:Yn(Le.background.uniforms),vertexShader:Le.background.vertexShader,fragmentShader:Le.background.fragmentShader,side:sn,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=T,c.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,c.material.toneMapped=Gt.getTransfer(T.colorSpace)!==Yt,T.matrixAutoUpdate===!0&&T.updateMatrix(),c.material.uniforms.uvTransform.value.copy(T.matrix),(p!==T||f!==T.version||m!==i.toneMapping)&&(c.material.needsUpdate=!0,p=T,f=T.version,m=i.toneMapping),c.layers.enableAll(),y.unshift(c,c.geometry,c.material,0,0,null))}function u(y,M){y.getRGB(Ni,no(i)),n.buffers.color.setClear(Ni.r,Ni.g,Ni.b,M,a)}return{getClearColor:function(){return o},setClearColor:function(y,M=1){o.set(y),l=M,u(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(y){l=y,u(o,l)},render:S,addToRenderList:d}}function Bu(i,t){const e=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},r=f(null);let s=r,a=!1;function o(_,F,k,C,G){let q=!1;const j=p(C,k,F);s!==j&&(s=j,c(s.object)),q=m(_,C,k,G),q&&v(_,C,k,G),G!==null&&t.update(G,i.ELEMENT_ARRAY_BUFFER),(q||a)&&(a=!1,T(_,F,k,C),G!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t.get(G).buffer))}function l(){return i.createVertexArray()}function c(_){return i.bindVertexArray(_)}function h(_){return i.deleteVertexArray(_)}function p(_,F,k){const C=k.wireframe===!0;let G=n[_.id];G===void 0&&(G={},n[_.id]=G);let q=G[F.id];q===void 0&&(q={},G[F.id]=q);let j=q[C];return j===void 0&&(j=f(l()),q[C]=j),j}function f(_){const F=[],k=[],C=[];for(let G=0;G=0){const Z=G[H];let ft=q[H];if(ft===void 0&&(H==="instanceMatrix"&&_.instanceMatrix&&(ft=_.instanceMatrix),H==="instanceColor"&&_.instanceColor&&(ft=_.instanceColor)),Z===void 0||Z.attribute!==ft||ft&&Z.data!==ft.data)return!0;j++}return s.attributesNum!==j||s.index!==C}function v(_,F,k,C){const G={},q=F.attributes;let j=0;const st=k.getAttributes();for(const H in st)if(st[H].location>=0){let Z=q[H];Z===void 0&&(H==="instanceMatrix"&&_.instanceMatrix&&(Z=_.instanceMatrix),H==="instanceColor"&&_.instanceColor&&(Z=_.instanceColor));const ft={};ft.attribute=Z,Z&&Z.data&&(ft.data=Z.data),G[H]=ft,j++}s.attributes=G,s.attributesNum=j,s.index=C}function S(){const _=s.newAttributes;for(let F=0,k=_.length;F=0){let J=G[st];if(J===void 0&&(st==="instanceMatrix"&&_.instanceMatrix&&(J=_.instanceMatrix),st==="instanceColor"&&_.instanceColor&&(J=_.instanceColor)),J!==void 0){const Z=J.normalized,ft=J.itemSize,Lt=t.get(J);if(Lt===void 0)continue;const kt=Lt.buffer,V=Lt.type,Q=Lt.bytesPerElement,ht=V===i.INT||V===i.UNSIGNED_INT||J.gpuType===Va;if(J.isInterleavedBufferAttribute){const nt=J.data,Dt=nt.stride,Ut=J.offset;if(nt.isInstancedInterleavedBuffer){for(let D=0;D0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";b="mediump"}return b==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=e.precision!==void 0?e.precision:"highp";const h=l(c);h!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",h,"instead."),c=h);const p=e.logarithmicDepthBuffer===!0,f=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),m=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),v=i.getParameter(i.MAX_TEXTURE_SIZE),S=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),d=i.getParameter(i.MAX_VERTEX_ATTRIBS),u=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),y=i.getParameter(i.MAX_VARYING_VECTORS),M=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),T=m>0,U=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:p,maxTextures:f,maxVertexTextures:m,maxTextureSize:v,maxCubemapSize:S,maxAttributes:d,maxVertexUniforms:u,maxVaryings:y,maxFragmentUniforms:M,vertexTextures:T,maxSamples:U}}function Vu(i){const t=this;let e=null,n=0,r=!1,s=!1;const a=new _n,o=new Tt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(p,f){const m=p.length!==0||f||n!==0||r;return r=f,n=p.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(p,f){e=h(p,f,0)},this.setState=function(p,f,m){const v=p.clippingPlanes,S=p.clipIntersection,d=p.clipShadows,u=i.get(p);if(!r||v===null||v.length===0||s&&!d)s?h(null):c();else{const y=s?0:n,M=y*4;let T=u.clippingState||null;l.value=T,T=h(v,f,M,m);for(let U=0;U!==M;++U)T[U]=e[U];u.clippingState=T,this.numIntersection=S?this.numPlanes:0,this.numPlanes+=y}};function c(){l.value!==e&&(l.value=e,l.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(p,f,m,v){const S=p!==null?p.length:0;let d=null;if(S!==0){if(d=l.value,v!==!0||d===null){const u=m+S*4,y=f.matrixWorldInverse;o.getNormalMatrix(y),(d===null||d.length0){const c=new Ql(l.height);return c.fromEquirectangularTexture(i,a),t.set(a,c),a.addEventListener("dispose",r),e(c.texture,a.mapping)}else return null}}return a}function r(a){const o=a.target;o.removeEventListener("dispose",r);const l=t.get(o);l!==void 0&&(t.delete(o),l.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}class ku extends io{constructor(t=-1,e=1,n=1,r=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=r,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,r,s,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=n-t,a=n+t,o=r+e,l=r-e;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,a=s+c*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}}const Hn=4,ha=[.125,.215,.35,.446,.526,.582],xn=20,Cr=new ku,ua=new zt;let Pr=null,Lr=0,Dr=0,Ur=!1;const gn=(1+Math.sqrt(5))/2,zn=1/gn,da=[new L(-gn,zn,0),new L(gn,zn,0),new L(-zn,0,gn),new L(zn,0,gn),new L(0,gn,-zn),new L(0,gn,zn),new L(-1,1,-1),new L(1,1,-1),new L(-1,1,1),new L(1,1,1)];class fa{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,r=100){Pr=this._renderer.getRenderTarget(),Lr=this._renderer.getActiveCubeFace(),Dr=this._renderer.getActiveMipmapLevel(),Ur=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,r,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=_a(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=ma(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?M:0,M,M),h.setRenderTarget(r),S&&h.render(v,o),h.render(t,o)}v.geometry.dispose(),v.material.dispose(),h.toneMapping=f,h.autoClear=p,t.background=d}_textureToCubeUV(t,e){const n=this._renderer,r=t.mapping===Wn||t.mapping===Xn;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=_a()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=ma());const s=r?this._cubemapMaterial:this._equirectMaterial,a=new Ie(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=t;const l=this._cubeSize;Fi(e,0,0,3*l,2*l),n.setRenderTarget(e),n.render(a,Cr)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;sxn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${xn}`);const u=[];let y=0;for(let w=0;wM-Hn?r-M+Hn:0),b=4*(this._cubeSize-T);Fi(e,U,b,3*T,2*T),l.setRenderTarget(e),l.render(p,Cr)}}function Wu(i){const t=[],e=[],n=[];let r=i;const s=i-Hn+1+ha.length;for(let a=0;ai-Hn?l=ha[a-i+Hn-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),h=-c,p=1+c,f=[h,h,p,h,p,p,h,h,p,p,h,p],m=6,v=6,S=3,d=2,u=1,y=new Float32Array(S*v*m),M=new Float32Array(d*v*m),T=new Float32Array(u*v*m);for(let b=0;b2?0:-1,E=[w,O,0,w+2/3,O,0,w+2/3,O+1,0,w,O,0,w+2/3,O+1,0,w,O+1,0];y.set(E,S*v*b),M.set(f,d*v*b);const _=[b,b,b,b,b,b];T.set(_,u*v*b)}const U=new qe;U.setAttribute("position",new Te(y,S)),U.setAttribute("uv",new Te(M,d)),U.setAttribute("faceIndex",new Te(T,u)),t.push(U),r>Hn&&r--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function pa(i,t,e){const n=new En(i,t,e);return n.texture.mapping=Xi,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Fi(i,t,e,n,r){i.viewport.set(t,e,n,r),i.scissor.set(t,e,n,r)}function Xu(i,t,e){const n=new Float32Array(xn),r=new L(0,1,0);return new on({name:"SphericalGaussianBlur",defines:{n:xn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:Qr(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:nn,depthTest:!1,depthWrite:!1})}function ma(){return new on({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Qr(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:nn,depthTest:!1,depthWrite:!1})}function _a(){return new on({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Qr(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:nn,depthTest:!1,depthWrite:!1})}function Qr(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function qu(i){let t=new WeakMap,e=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===Hr||l===Vr,h=l===Wn||l===Xn;if(c||h){let p=t.get(o);const f=p!==void 0?p.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==f)return e===null&&(e=new fa(i)),p=c?e.fromEquirectangular(o,p):e.fromCubemap(o,p),p.texture.pmremVersion=o.pmremVersion,t.set(o,p),p.texture;if(p!==void 0)return p.texture;{const m=o.image;return c&&m&&m.height>0||h&&m&&r(m)?(e===null&&(e=new fa(i)),p=c?e.fromEquirectangular(o):e.fromCubemap(o),p.texture.pmremVersion=o.pmremVersion,t.set(o,p),o.addEventListener("dispose",s),p.texture):null}}}return o}function r(o){let l=0;const c=6;for(let h=0;ht.maxTextureSize&&(U=Math.ceil(T/t.maxTextureSize),T=t.maxTextureSize);const b=new Float32Array(T*U*4*p),w=new ja(b,T,U,p);w.type=en,w.needsUpdate=!0;const O=M*4;for(let _=0;_0)return i;const r=t*e;let s=ga[r];if(s===void 0&&(s=new Float32Array(r),ga[r]=s),t!==0){n.toArray(s,0);for(let a=1,o=0;a!==t;++a)o+=e,i[a].toArray(s,o)}return s}function ne(i,t){if(i.length!==t.length)return!1;for(let e=0,n=i.length;e":" "} ${o}: ${e[a]}`)}return n.join(` +`)}function qd(i){const t=Gt.getPrimaries(Gt.workingColorSpace),e=Gt.getPrimaries(i);let n;switch(t===e?n="":t===Gi&&e===Vi?n="LinearDisplayP3ToLinearSRGB":t===Vi&&e===Gi&&(n="LinearSRGBToLinearDisplayP3"),i){case ln:case Yi:return[n,"LinearTransferOETF"];case Pe:case jr:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",i),[n,"LinearTransferOETF"]}}function Ta(i,t,e){const n=i.getShaderParameter(t,i.COMPILE_STATUS),r=i.getShaderInfoLog(t).trim();if(n&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const a=parseInt(s[1]);return e.toUpperCase()+` + +`+r+` + +`+Xd(i.getShaderSource(t),a)}else return r}function Yd(i,t){const e=qd(t);return`vec4 ${i}( vec4 value ) { return ${e[0]}( ${e[1]}( value ) ); }`}function Kd(i,t){let e;switch(t){case tl:e="Linear";break;case el:e="Reinhard";break;case nl:e="OptimizedCineon";break;case il:e="ACESFilmic";break;case sl:e="AgX";break;case al:e="Neutral";break;case rl:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+i+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function $d(i){return[i.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",i.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(ai).join(` +`)}function jd(i){const t=[];for(const e in i){const n=i[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(` +`)}function Zd(i,t){const e={},n=i.getProgramParameter(t,i.ACTIVE_ATTRIBUTES);for(let r=0;r/gm;function Xr(i){return i.replace(Jd,tf)}const Qd=new Map;function tf(i,t){let e=yt[t];if(e===void 0){const n=Qd.get(t);if(n!==void 0)e=yt[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,n);else throw new Error("Can not resolve #include <"+t+">")}return Xr(e)}const ef=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function wa(i){return i.replace(ef,nf)}function nf(i,t,e,n){let r="";for(let s=parseInt(t);s0&&(d+=` +`),u=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,v].filter(ai).join(` +`),u.length>0&&(u+=` +`)):(d=[Ra(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,v,e.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",e.batching?"#define USE_BATCHING":"",e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.instancingMorph?"#define USE_INSTANCING_MORPH":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.displacementMap?"#define USE_DISPLACEMENTMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.mapUv?"#define MAP_UV "+e.mapUv:"",e.alphaMapUv?"#define ALPHAMAP_UV "+e.alphaMapUv:"",e.lightMapUv?"#define LIGHTMAP_UV "+e.lightMapUv:"",e.aoMapUv?"#define AOMAP_UV "+e.aoMapUv:"",e.emissiveMapUv?"#define EMISSIVEMAP_UV "+e.emissiveMapUv:"",e.bumpMapUv?"#define BUMPMAP_UV "+e.bumpMapUv:"",e.normalMapUv?"#define NORMALMAP_UV "+e.normalMapUv:"",e.displacementMapUv?"#define DISPLACEMENTMAP_UV "+e.displacementMapUv:"",e.metalnessMapUv?"#define METALNESSMAP_UV "+e.metalnessMapUv:"",e.roughnessMapUv?"#define ROUGHNESSMAP_UV "+e.roughnessMapUv:"",e.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+e.anisotropyMapUv:"",e.clearcoatMapUv?"#define CLEARCOATMAP_UV "+e.clearcoatMapUv:"",e.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+e.clearcoatNormalMapUv:"",e.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+e.clearcoatRoughnessMapUv:"",e.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+e.iridescenceMapUv:"",e.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+e.iridescenceThicknessMapUv:"",e.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+e.sheenColorMapUv:"",e.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+e.sheenRoughnessMapUv:"",e.specularMapUv?"#define SPECULARMAP_UV "+e.specularMapUv:"",e.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+e.specularColorMapUv:"",e.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+e.specularIntensityMapUv:"",e.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+e.transmissionMapUv:"",e.thicknessMapUv?"#define THICKNESSMAP_UV "+e.thicknessMapUv:"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.useLegacyLights?"#define LEGACY_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(ai).join(` +`),u=[Ra(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,v,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+c:"",e.envMap?"#define "+h:"",e.envMap?"#define "+p:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.dispersion?"#define USE_DISPERSION":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.useLegacyLights?"#define LEGACY_LIGHTS":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==rn?"#define TONE_MAPPING":"",e.toneMapping!==rn?yt.tonemapping_pars_fragment:"",e.toneMapping!==rn?Kd("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",yt.colorspace_pars_fragment,Yd("linearToOutputTexel",e.outputColorSpace),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",` +`].filter(ai).join(` +`)),a=Xr(a),a=Aa(a,e),a=ba(a,e),o=Xr(o),o=Aa(o,e),o=ba(o,e),a=wa(a),o=wa(o),e.isRawShaderMaterial!==!0&&(y=`#version 300 es +`,d=[m,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+d,u=["#define varying in",e.glslVersion===Ws?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===Ws?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+u);const M=y+d+a,T=y+u+o,U=ya(r,r.VERTEX_SHADER,M),b=ya(r,r.FRAGMENT_SHADER,T);r.attachShader(S,U),r.attachShader(S,b),e.index0AttributeName!==void 0?r.bindAttribLocation(S,0,e.index0AttributeName):e.morphTargets===!0&&r.bindAttribLocation(S,0,"position"),r.linkProgram(S);function w(F){if(i.debug.checkShaderErrors){const k=r.getProgramInfoLog(S).trim(),C=r.getShaderInfoLog(U).trim(),G=r.getShaderInfoLog(b).trim();let q=!0,j=!0;if(r.getProgramParameter(S,r.LINK_STATUS)===!1)if(q=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(r,S,U,b);else{const st=Ta(r,U,"vertex"),H=Ta(r,b,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(S,r.VALIDATE_STATUS)+` + +Material Name: `+F.name+` +Material Type: `+F.type+` + +Program Info Log: `+k+` +`+st+` +`+H)}else k!==""?console.warn("THREE.WebGLProgram: Program Info Log:",k):(C===""||G==="")&&(j=!1);j&&(F.diagnostics={runnable:q,programLog:k,vertexShader:{log:C,prefix:d},fragmentShader:{log:G,prefix:u}})}r.deleteShader(U),r.deleteShader(b),O=new Bi(r,S),E=Zd(r,S)}let O;this.getUniforms=function(){return O===void 0&&w(this),O};let E;this.getAttributes=function(){return E===void 0&&w(this),E};let _=e.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return _===!1&&(_=r.getProgramParameter(S,kd)),_},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(S),this.program=void 0},this.type=e.shaderType,this.name=e.shaderName,this.id=Wd++,this.cacheKey=t,this.usedTimes=1,this.program=S,this.vertexShader=U,this.fragmentShader=b,this}let hf=0;class uf{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){const e=t.vertexShader,n=t.fragmentShader,r=this._getShaderStage(e),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(t);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(t){const e=this.materialCache.get(t);for(const n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){const e=this.materialCache;let n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){const e=this.shaderCache;let n=e.get(t);return n===void 0&&(n=new df(t),e.set(t,n)),n}}class df{constructor(t){this.id=hf++,this.code=t,this.usedTimes=0}}function ff(i,t,e,n,r,s,a){const o=new Za,l=new uf,c=new Set,h=[],p=r.logarithmicDepthBuffer,f=r.vertexTextures;let m=r.precision;const v={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function S(E){return c.add(E),E===0?"uv":`uv${E}`}function d(E,_,F,k,C){const G=k.fog,q=C.geometry,j=E.isMeshStandardMaterial?k.environment:null,st=(E.isMeshStandardMaterial?e:t).get(E.envMap||j),H=st&&st.mapping===Xi?st.image.height:null,J=v[E.type];E.precision!==null&&(m=r.getMaxPrecision(E.precision),m!==E.precision&&console.warn("THREE.WebGLProgram.getParameters:",E.precision,"not supported, using",m,"instead."));const Z=q.morphAttributes.position||q.morphAttributes.normal||q.morphAttributes.color,ft=Z!==void 0?Z.length:0;let Lt=0;q.morphAttributes.position!==void 0&&(Lt=1),q.morphAttributes.normal!==void 0&&(Lt=2),q.morphAttributes.color!==void 0&&(Lt=3);let kt,V,Q,ht;if(J){const Vt=Le[J];kt=Vt.vertexShader,V=Vt.fragmentShader}else kt=E.vertexShader,V=E.fragmentShader,l.update(E),Q=l.getVertexShaderID(E),ht=l.getFragmentShaderID(E);const nt=i.getRenderTarget(),Dt=C.isInstancedMesh===!0,Ut=C.isBatchedMesh===!0,D=!!E.map,Xt=!!E.matcap,_t=!!st,Wt=!!E.aoMap,xt=!!E.lightMap,Nt=!!E.bumpMap,Rt=!!E.normalMap,Ft=!!E.displacementMap,jt=!!E.emissiveMap,A=!!E.metalnessMap,g=!!E.roughnessMap,z=E.anisotropy>0,X=E.clearcoat>0,K=E.dispersion>0,$=E.iridescence>0,mt=E.sheen>0,ot=E.transmission>0,at=z&&!!E.anisotropyMap,At=X&&!!E.clearcoatMap,tt=X&&!!E.clearcoatNormalMap,pt=X&&!!E.clearcoatRoughnessMap,Ot=$&&!!E.iridescenceMap,gt=$&&!!E.iridescenceThicknessMap,ct=mt&&!!E.sheenColorMap,bt=mt&&!!E.sheenRoughnessMap,It=!!E.specularMap,Qt=!!E.specularColorMap,wt=!!E.specularIntensityMap,R=ot&&!!E.transmissionMap,Y=ot&&!!E.thicknessMap,W=!!E.gradientMap,it=!!E.alphaMap,lt=E.alphaTest>0,Bt=!!E.alphaHash,qt=!!E.extensions;let Zt=rn;E.toneMapped&&(nt===null||nt.isXRRenderTarget===!0)&&(Zt=i.toneMapping);const se={shaderID:J,shaderType:E.type,shaderName:E.name,vertexShader:kt,fragmentShader:V,defines:E.defines,customVertexShaderID:Q,customFragmentShaderID:ht,isRawShaderMaterial:E.isRawShaderMaterial===!0,glslVersion:E.glslVersion,precision:m,batching:Ut,instancing:Dt,instancingColor:Dt&&C.instanceColor!==null,instancingMorph:Dt&&C.morphTexture!==null,supportsVertexTextures:f,outputColorSpace:nt===null?i.outputColorSpace:nt.isXRRenderTarget===!0?nt.texture.colorSpace:ln,alphaToCoverage:!!E.alphaToCoverage,map:D,matcap:Xt,envMap:_t,envMapMode:_t&&st.mapping,envMapCubeUVHeight:H,aoMap:Wt,lightMap:xt,bumpMap:Nt,normalMap:Rt,displacementMap:f&&Ft,emissiveMap:jt,normalMapObjectSpace:Rt&&E.normalMapType===Ml,normalMapTangentSpace:Rt&&E.normalMapType===$r,metalnessMap:A,roughnessMap:g,anisotropy:z,anisotropyMap:at,clearcoat:X,clearcoatMap:At,clearcoatNormalMap:tt,clearcoatRoughnessMap:pt,dispersion:K,iridescence:$,iridescenceMap:Ot,iridescenceThicknessMap:gt,sheen:mt,sheenColorMap:ct,sheenRoughnessMap:bt,specularMap:It,specularColorMap:Qt,specularIntensityMap:wt,transmission:ot,transmissionMap:R,thicknessMap:Y,gradientMap:W,opaque:E.transparent===!1&&E.blending===Vn&&E.alphaToCoverage===!1,alphaMap:it,alphaTest:lt,alphaHash:Bt,combine:E.combine,mapUv:D&&S(E.map.channel),aoMapUv:Wt&&S(E.aoMap.channel),lightMapUv:xt&&S(E.lightMap.channel),bumpMapUv:Nt&&S(E.bumpMap.channel),normalMapUv:Rt&&S(E.normalMap.channel),displacementMapUv:Ft&&S(E.displacementMap.channel),emissiveMapUv:jt&&S(E.emissiveMap.channel),metalnessMapUv:A&&S(E.metalnessMap.channel),roughnessMapUv:g&&S(E.roughnessMap.channel),anisotropyMapUv:at&&S(E.anisotropyMap.channel),clearcoatMapUv:At&&S(E.clearcoatMap.channel),clearcoatNormalMapUv:tt&&S(E.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:pt&&S(E.clearcoatRoughnessMap.channel),iridescenceMapUv:Ot&&S(E.iridescenceMap.channel),iridescenceThicknessMapUv:gt&&S(E.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&S(E.sheenColorMap.channel),sheenRoughnessMapUv:bt&&S(E.sheenRoughnessMap.channel),specularMapUv:It&&S(E.specularMap.channel),specularColorMapUv:Qt&&S(E.specularColorMap.channel),specularIntensityMapUv:wt&&S(E.specularIntensityMap.channel),transmissionMapUv:R&&S(E.transmissionMap.channel),thicknessMapUv:Y&&S(E.thicknessMap.channel),alphaMapUv:it&&S(E.alphaMap.channel),vertexTangents:!!q.attributes.tangent&&(Rt||z),vertexColors:E.vertexColors,vertexAlphas:E.vertexColors===!0&&!!q.attributes.color&&q.attributes.color.itemSize===4,pointsUvs:C.isPoints===!0&&!!q.attributes.uv&&(D||it),fog:!!G,useFog:E.fog===!0,fogExp2:!!G&&G.isFogExp2,flatShading:E.flatShading===!0,sizeAttenuation:E.sizeAttenuation===!0,logarithmicDepthBuffer:p,skinning:C.isSkinnedMesh===!0,morphTargets:q.morphAttributes.position!==void 0,morphNormals:q.morphAttributes.normal!==void 0,morphColors:q.morphAttributes.color!==void 0,morphTargetsCount:ft,morphTextureStride:Lt,numDirLights:_.directional.length,numPointLights:_.point.length,numSpotLights:_.spot.length,numSpotLightMaps:_.spotLightMap.length,numRectAreaLights:_.rectArea.length,numHemiLights:_.hemi.length,numDirLightShadows:_.directionalShadowMap.length,numPointLightShadows:_.pointShadowMap.length,numSpotLightShadows:_.spotShadowMap.length,numSpotLightShadowsWithMaps:_.numSpotLightShadowsWithMaps,numLightProbes:_.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:E.dithering,shadowMapEnabled:i.shadowMap.enabled&&F.length>0,shadowMapType:i.shadowMap.type,toneMapping:Zt,useLegacyLights:i._useLegacyLights,decodeVideoTexture:D&&E.map.isVideoTexture===!0&&Gt.getTransfer(E.map.colorSpace)===Yt,premultipliedAlpha:E.premultipliedAlpha,doubleSided:E.side===We,flipSided:E.side===pe,useDepthPacking:E.depthPacking>=0,depthPacking:E.depthPacking||0,index0AttributeName:E.index0AttributeName,extensionClipCullDistance:qt&&E.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:qt&&E.extensions.multiDraw===!0&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:E.customProgramCacheKey()};return se.vertexUv1s=c.has(1),se.vertexUv2s=c.has(2),se.vertexUv3s=c.has(3),c.clear(),se}function u(E){const _=[];if(E.shaderID?_.push(E.shaderID):(_.push(E.customVertexShaderID),_.push(E.customFragmentShaderID)),E.defines!==void 0)for(const F in E.defines)_.push(F),_.push(E.defines[F]);return E.isRawShaderMaterial===!1&&(y(_,E),M(_,E),_.push(i.outputColorSpace)),_.push(E.customProgramCacheKey),_.join()}function y(E,_){E.push(_.precision),E.push(_.outputColorSpace),E.push(_.envMapMode),E.push(_.envMapCubeUVHeight),E.push(_.mapUv),E.push(_.alphaMapUv),E.push(_.lightMapUv),E.push(_.aoMapUv),E.push(_.bumpMapUv),E.push(_.normalMapUv),E.push(_.displacementMapUv),E.push(_.emissiveMapUv),E.push(_.metalnessMapUv),E.push(_.roughnessMapUv),E.push(_.anisotropyMapUv),E.push(_.clearcoatMapUv),E.push(_.clearcoatNormalMapUv),E.push(_.clearcoatRoughnessMapUv),E.push(_.iridescenceMapUv),E.push(_.iridescenceThicknessMapUv),E.push(_.sheenColorMapUv),E.push(_.sheenRoughnessMapUv),E.push(_.specularMapUv),E.push(_.specularColorMapUv),E.push(_.specularIntensityMapUv),E.push(_.transmissionMapUv),E.push(_.thicknessMapUv),E.push(_.combine),E.push(_.fogExp2),E.push(_.sizeAttenuation),E.push(_.morphTargetsCount),E.push(_.morphAttributeCount),E.push(_.numDirLights),E.push(_.numPointLights),E.push(_.numSpotLights),E.push(_.numSpotLightMaps),E.push(_.numHemiLights),E.push(_.numRectAreaLights),E.push(_.numDirLightShadows),E.push(_.numPointLightShadows),E.push(_.numSpotLightShadows),E.push(_.numSpotLightShadowsWithMaps),E.push(_.numLightProbes),E.push(_.shadowMapType),E.push(_.toneMapping),E.push(_.numClippingPlanes),E.push(_.numClipIntersection),E.push(_.depthPacking)}function M(E,_){o.disableAll(),_.supportsVertexTextures&&o.enable(0),_.instancing&&o.enable(1),_.instancingColor&&o.enable(2),_.instancingMorph&&o.enable(3),_.matcap&&o.enable(4),_.envMap&&o.enable(5),_.normalMapObjectSpace&&o.enable(6),_.normalMapTangentSpace&&o.enable(7),_.clearcoat&&o.enable(8),_.iridescence&&o.enable(9),_.alphaTest&&o.enable(10),_.vertexColors&&o.enable(11),_.vertexAlphas&&o.enable(12),_.vertexUv1s&&o.enable(13),_.vertexUv2s&&o.enable(14),_.vertexUv3s&&o.enable(15),_.vertexTangents&&o.enable(16),_.anisotropy&&o.enable(17),_.alphaHash&&o.enable(18),_.batching&&o.enable(19),_.dispersion&&o.enable(20),E.push(o.mask),o.disableAll(),_.fog&&o.enable(0),_.useFog&&o.enable(1),_.flatShading&&o.enable(2),_.logarithmicDepthBuffer&&o.enable(3),_.skinning&&o.enable(4),_.morphTargets&&o.enable(5),_.morphNormals&&o.enable(6),_.morphColors&&o.enable(7),_.premultipliedAlpha&&o.enable(8),_.shadowMapEnabled&&o.enable(9),_.useLegacyLights&&o.enable(10),_.doubleSided&&o.enable(11),_.flipSided&&o.enable(12),_.useDepthPacking&&o.enable(13),_.dithering&&o.enable(14),_.transmission&&o.enable(15),_.sheen&&o.enable(16),_.opaque&&o.enable(17),_.pointsUvs&&o.enable(18),_.decodeVideoTexture&&o.enable(19),_.alphaToCoverage&&o.enable(20),E.push(o.mask)}function T(E){const _=v[E.type];let F;if(_){const k=Le[_];F=$l.clone(k.uniforms)}else F=E.uniforms;return F}function U(E,_){let F;for(let k=0,C=h.length;k0?n.push(u):m.transparent===!0?r.push(u):e.push(u)}function l(p,f,m,v,S,d){const u=a(p,f,m,v,S,d);m.transmission>0?n.unshift(u):m.transparent===!0?r.unshift(u):e.unshift(u)}function c(p,f){e.length>1&&e.sort(p||mf),n.length>1&&n.sort(f||Ca),r.length>1&&r.sort(f||Ca)}function h(){for(let p=t,f=i.length;p=s.length?(a=new Pa,s.push(a)):a=s[r],a}function e(){i=new WeakMap}return{get:t,dispose:e}}function gf(){const i={};return{get:function(t){if(i[t.id]!==void 0)return i[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new L,color:new zt};break;case"SpotLight":e={position:new L,direction:new L,color:new zt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new L,color:new zt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new L,skyColor:new zt,groundColor:new zt};break;case"RectAreaLight":e={color:new zt,position:new L,halfWidth:new L,halfHeight:new L};break}return i[t.id]=e,e}}}function vf(){const i={};return{get:function(t){if(i[t.id]!==void 0)return i[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Pt};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Pt};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Pt,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[t.id]=e,e}}}let xf=0;function Mf(i,t){return(t.castShadow?2:0)-(i.castShadow?2:0)+(t.map?1:0)-(i.map?1:0)}function Sf(i){const t=new gf,e=vf(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new L);const r=new L,s=new Jt,a=new Jt;function o(c,h){let p=0,f=0,m=0;for(let F=0;F<9;F++)n.probe[F].set(0,0,0);let v=0,S=0,d=0,u=0,y=0,M=0,T=0,U=0,b=0,w=0,O=0;c.sort(Mf);const E=h===!0?Math.PI:1;for(let F=0,k=c.length;F0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=et.LTC_FLOAT_1,n.rectAreaLTC2=et.LTC_FLOAT_2):(n.rectAreaLTC1=et.LTC_HALF_1,n.rectAreaLTC2=et.LTC_HALF_2)),n.ambient[0]=p,n.ambient[1]=f,n.ambient[2]=m;const _=n.hash;(_.directionalLength!==v||_.pointLength!==S||_.spotLength!==d||_.rectAreaLength!==u||_.hemiLength!==y||_.numDirectionalShadows!==M||_.numPointShadows!==T||_.numSpotShadows!==U||_.numSpotMaps!==b||_.numLightProbes!==O)&&(n.directional.length=v,n.spot.length=d,n.rectArea.length=u,n.point.length=S,n.hemi.length=y,n.directionalShadow.length=M,n.directionalShadowMap.length=M,n.pointShadow.length=T,n.pointShadowMap.length=T,n.spotShadow.length=U,n.spotShadowMap.length=U,n.directionalShadowMatrix.length=M,n.pointShadowMatrix.length=T,n.spotLightMatrix.length=U+b-w,n.spotLightMap.length=b,n.numSpotLightShadowsWithMaps=w,n.numLightProbes=O,_.directionalLength=v,_.pointLength=S,_.spotLength=d,_.rectAreaLength=u,_.hemiLength=y,_.numDirectionalShadows=M,_.numPointShadows=T,_.numSpotShadows=U,_.numSpotMaps=b,_.numLightProbes=O,n.version=xf++)}function l(c,h){let p=0,f=0,m=0,v=0,S=0;const d=h.matrixWorldInverse;for(let u=0,y=c.length;u=a.length?(o=new La(i),a.push(o)):o=a[s],o}function n(){t=new WeakMap}return{get:e,dispose:n}}class yf extends $n{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=vl,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Tf extends $n{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}const Af=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,bf=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function wf(i,t,e){let n=new Jr;const r=new Pt,s=new Pt,a=new $t,o=new yf({depthPacking:xl}),l=new Tf,c={},h=e.maxTextureSize,p={[sn]:pe,[pe]:sn,[We]:We},f=new on({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Pt},radius:{value:4}},vertexShader:Af,fragmentShader:bf}),m=f.clone();m.defines.HORIZONTAL_PASS=1;const v=new qe;v.setAttribute("position",new Te(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const S=new Ie(v,f),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Ba;let u=this.type;this.render=function(b,w,O){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||b.length===0)return;const E=i.getRenderTarget(),_=i.getActiveCubeFace(),F=i.getActiveMipmapLevel(),k=i.state;k.setBlending(nn),k.buffers.color.setClear(1,1,1,1),k.buffers.depth.setTest(!0),k.setScissorTest(!1);const C=u!==ke&&this.type===ke,G=u===ke&&this.type!==ke;for(let q=0,j=b.length;qh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/J.x),r.x=s.x*J.x,H.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/J.y),r.y=s.y*J.y,H.mapSize.y=s.y)),H.map===null||C===!0||G===!0){const ft=this.type!==ke?{minFilter:ye,magFilter:ye}:{};H.map!==null&&H.map.dispose(),H.map=new En(r.x,r.y,ft),H.map.texture.name=st.name+".shadowMap",H.camera.updateProjectionMatrix()}i.setRenderTarget(H.map),i.clear();const Z=H.getViewportCount();for(let ft=0;ft0||w.map&&w.alphaTest>0){const k=_.uuid,C=w.uuid;let G=c[k];G===void 0&&(G={},c[k]=G);let q=G[C];q===void 0&&(q=_.clone(),G[C]=q,w.addEventListener("dispose",U)),_=q}if(_.visible=w.visible,_.wireframe=w.wireframe,E===ke?_.side=w.shadowSide!==null?w.shadowSide:w.side:_.side=w.shadowSide!==null?w.shadowSide:p[w.side],_.alphaMap=w.alphaMap,_.alphaTest=w.alphaTest,_.map=w.map,_.clipShadows=w.clipShadows,_.clippingPlanes=w.clippingPlanes,_.clipIntersection=w.clipIntersection,_.displacementMap=w.displacementMap,_.displacementScale=w.displacementScale,_.displacementBias=w.displacementBias,_.wireframeLinewidth=w.wireframeLinewidth,_.linewidth=w.linewidth,O.isPointLight===!0&&_.isMeshDistanceMaterial===!0){const k=i.properties.get(_);k.light=O}return _}function T(b,w,O,E,_){if(b.visible===!1)return;if(b.layers.test(w.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&_===ke)&&(!b.frustumCulled||n.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(O.matrixWorldInverse,b.matrixWorld);const C=t.update(b),G=b.material;if(Array.isArray(G)){const q=C.groups;for(let j=0,st=q.length;j=1):st.indexOf("OpenGL ES")!==-1&&(j=parseFloat(/^OpenGL ES (\d)/.exec(st)[1]),q=j>=2);let H=null,J={};const Z=i.getParameter(i.SCISSOR_BOX),ft=i.getParameter(i.VIEWPORT),Lt=new $t().fromArray(Z),kt=new $t().fromArray(ft);function V(R,Y,W,it){const lt=new Uint8Array(4),Bt=i.createTexture();i.bindTexture(R,Bt),i.texParameteri(R,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(R,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let qt=0;qt"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Pt,h=new WeakMap;let p;const f=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function v(A,g){return m?new OffscreenCanvas(A,g):Wi("canvas")}function S(A,g,z){let X=1;const K=jt(A);if((K.width>z||K.height>z)&&(X=z/Math.max(K.width,K.height)),X<1)if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap||typeof VideoFrame<"u"&&A instanceof VideoFrame){const $=Math.floor(X*K.width),mt=Math.floor(X*K.height);p===void 0&&(p=v($,mt));const ot=g?v($,mt):p;return ot.width=$,ot.height=mt,ot.getContext("2d").drawImage(A,0,0,$,mt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+K.width+"x"+K.height+") to ("+$+"x"+mt+")."),ot}else return"data"in A&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+K.width+"x"+K.height+")."),A;return A}function d(A){return A.generateMipmaps&&A.minFilter!==ye&&A.minFilter!==Re}function u(A){i.generateMipmap(A)}function y(A,g,z,X,K=!1){if(A!==null){if(i[A]!==void 0)return i[A];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+A+"'")}let $=g;if(g===i.RED&&(z===i.FLOAT&&($=i.R32F),z===i.HALF_FLOAT&&($=i.R16F),z===i.UNSIGNED_BYTE&&($=i.R8)),g===i.RED_INTEGER&&(z===i.UNSIGNED_BYTE&&($=i.R8UI),z===i.UNSIGNED_SHORT&&($=i.R16UI),z===i.UNSIGNED_INT&&($=i.R32UI),z===i.BYTE&&($=i.R8I),z===i.SHORT&&($=i.R16I),z===i.INT&&($=i.R32I)),g===i.RG&&(z===i.FLOAT&&($=i.RG32F),z===i.HALF_FLOAT&&($=i.RG16F),z===i.UNSIGNED_BYTE&&($=i.RG8)),g===i.RG_INTEGER&&(z===i.UNSIGNED_BYTE&&($=i.RG8UI),z===i.UNSIGNED_SHORT&&($=i.RG16UI),z===i.UNSIGNED_INT&&($=i.RG32UI),z===i.BYTE&&($=i.RG8I),z===i.SHORT&&($=i.RG16I),z===i.INT&&($=i.RG32I)),g===i.RGB&&z===i.UNSIGNED_INT_5_9_9_9_REV&&($=i.RGB9_E5),g===i.RGBA){const mt=K?Hi:Gt.getTransfer(X);z===i.FLOAT&&($=i.RGBA32F),z===i.HALF_FLOAT&&($=i.RGBA16F),z===i.UNSIGNED_BYTE&&($=mt===Yt?i.SRGB8_ALPHA8:i.RGBA8),z===i.UNSIGNED_SHORT_4_4_4_4&&($=i.RGBA4),z===i.UNSIGNED_SHORT_5_5_5_1&&($=i.RGB5_A1)}return($===i.R16F||$===i.R32F||$===i.RG16F||$===i.RG32F||$===i.RGBA16F||$===i.RGBA32F)&&t.get("EXT_color_buffer_float"),$}function M(A,g){return d(A)===!0||A.isFramebufferTexture&&A.minFilter!==ye&&A.minFilter!==Re?Math.log2(Math.max(g.width,g.height))+1:A.mipmaps!==void 0&&A.mipmaps.length>0?A.mipmaps.length:A.isCompressedTexture&&Array.isArray(A.image)?g.mipmaps.length:1}function T(A){const g=A.target;g.removeEventListener("dispose",T),b(g),g.isVideoTexture&&h.delete(g)}function U(A){const g=A.target;g.removeEventListener("dispose",U),O(g)}function b(A){const g=n.get(A);if(g.__webglInit===void 0)return;const z=A.source,X=f.get(z);if(X){const K=X[g.__cacheKey];K.usedTimes--,K.usedTimes===0&&w(A),Object.keys(X).length===0&&f.delete(z)}n.remove(A)}function w(A){const g=n.get(A);i.deleteTexture(g.__webglTexture);const z=A.source,X=f.get(z);delete X[g.__cacheKey],a.memory.textures--}function O(A){const g=n.get(A);if(A.depthTexture&&A.depthTexture.dispose(),A.isWebGLCubeRenderTarget)for(let X=0;X<6;X++){if(Array.isArray(g.__webglFramebuffer[X]))for(let K=0;K=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+A+" texture units while this GPU supports only "+r.maxTextures),E+=1,A}function k(A){const g=[];return g.push(A.wrapS),g.push(A.wrapT),g.push(A.wrapR||0),g.push(A.magFilter),g.push(A.minFilter),g.push(A.anisotropy),g.push(A.internalFormat),g.push(A.format),g.push(A.type),g.push(A.generateMipmaps),g.push(A.premultiplyAlpha),g.push(A.flipY),g.push(A.unpackAlignment),g.push(A.colorSpace),g.join()}function C(A,g){const z=n.get(A);if(A.isVideoTexture&&Rt(A),A.isRenderTargetTexture===!1&&A.version>0&&z.__version!==A.version){const X=A.image;if(X===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(X.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Lt(z,A,g);return}}e.bindTexture(i.TEXTURE_2D,z.__webglTexture,i.TEXTURE0+g)}function G(A,g){const z=n.get(A);if(A.version>0&&z.__version!==A.version){Lt(z,A,g);return}e.bindTexture(i.TEXTURE_2D_ARRAY,z.__webglTexture,i.TEXTURE0+g)}function q(A,g){const z=n.get(A);if(A.version>0&&z.__version!==A.version){Lt(z,A,g);return}e.bindTexture(i.TEXTURE_3D,z.__webglTexture,i.TEXTURE0+g)}function j(A,g){const z=n.get(A);if(A.version>0&&z.__version!==A.version){kt(z,A,g);return}e.bindTexture(i.TEXTURE_CUBE_MAP,z.__webglTexture,i.TEXTURE0+g)}const st={[Gr]:i.REPEAT,[Mn]:i.CLAMP_TO_EDGE,[kr]:i.MIRRORED_REPEAT},H={[ye]:i.NEAREST,[ol]:i.NEAREST_MIPMAP_NEAREST,[mi]:i.NEAREST_MIPMAP_LINEAR,[Re]:i.LINEAR,[ir]:i.LINEAR_MIPMAP_NEAREST,[Sn]:i.LINEAR_MIPMAP_LINEAR},J={[Sl]:i.NEVER,[wl]:i.ALWAYS,[El]:i.LESS,[Ya]:i.LEQUAL,[yl]:i.EQUAL,[bl]:i.GEQUAL,[Tl]:i.GREATER,[Al]:i.NOTEQUAL};function Z(A,g){if(g.type===en&&t.has("OES_texture_float_linear")===!1&&(g.magFilter===Re||g.magFilter===ir||g.magFilter===mi||g.magFilter===Sn||g.minFilter===Re||g.minFilter===ir||g.minFilter===mi||g.minFilter===Sn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(A,i.TEXTURE_WRAP_S,st[g.wrapS]),i.texParameteri(A,i.TEXTURE_WRAP_T,st[g.wrapT]),(A===i.TEXTURE_3D||A===i.TEXTURE_2D_ARRAY)&&i.texParameteri(A,i.TEXTURE_WRAP_R,st[g.wrapR]),i.texParameteri(A,i.TEXTURE_MAG_FILTER,H[g.magFilter]),i.texParameteri(A,i.TEXTURE_MIN_FILTER,H[g.minFilter]),g.compareFunction&&(i.texParameteri(A,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(A,i.TEXTURE_COMPARE_FUNC,J[g.compareFunction])),t.has("EXT_texture_filter_anisotropic")===!0){if(g.magFilter===ye||g.minFilter!==mi&&g.minFilter!==Sn||g.type===en&&t.has("OES_texture_float_linear")===!1)return;if(g.anisotropy>1||n.get(g).__currentAnisotropy){const z=t.get("EXT_texture_filter_anisotropic");i.texParameterf(A,z.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,r.getMaxAnisotropy())),n.get(g).__currentAnisotropy=g.anisotropy}}}function ft(A,g){let z=!1;A.__webglInit===void 0&&(A.__webglInit=!0,g.addEventListener("dispose",T));const X=g.source;let K=f.get(X);K===void 0&&(K={},f.set(X,K));const $=k(g);if($!==A.__cacheKey){K[$]===void 0&&(K[$]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,z=!0),K[$].usedTimes++;const mt=K[A.__cacheKey];mt!==void 0&&(K[A.__cacheKey].usedTimes--,mt.usedTimes===0&&w(g)),A.__cacheKey=$,A.__webglTexture=K[$].texture}return z}function Lt(A,g,z){let X=i.TEXTURE_2D;(g.isDataArrayTexture||g.isCompressedArrayTexture)&&(X=i.TEXTURE_2D_ARRAY),g.isData3DTexture&&(X=i.TEXTURE_3D);const K=ft(A,g),$=g.source;e.bindTexture(X,A.__webglTexture,i.TEXTURE0+z);const mt=n.get($);if($.version!==mt.__version||K===!0){e.activeTexture(i.TEXTURE0+z);const ot=Gt.getPrimaries(Gt.workingColorSpace),at=g.colorSpace===tn?null:Gt.getPrimaries(g.colorSpace),At=g.colorSpace===tn||ot===at?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,g.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,g.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,g.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,At);let tt=S(g.image,!1,r.maxTextureSize);tt=Ft(g,tt);const pt=s.convert(g.format,g.colorSpace),Ot=s.convert(g.type);let gt=y(g.internalFormat,pt,Ot,g.colorSpace,g.isVideoTexture);Z(X,g);let ct;const bt=g.mipmaps,It=g.isVideoTexture!==!0,Qt=mt.__version===void 0||K===!0,wt=$.dataReady,R=M(g,tt);if(g.isDepthTexture)gt=i.DEPTH_COMPONENT16,g.type===en?gt=i.DEPTH_COMPONENT32F:g.type===qn?gt=i.DEPTH_COMPONENT24:g.type===ci&&(gt=i.DEPTH24_STENCIL8),Qt&&(It?e.texStorage2D(i.TEXTURE_2D,1,gt,tt.width,tt.height):e.texImage2D(i.TEXTURE_2D,0,gt,tt.width,tt.height,0,pt,Ot,null));else if(g.isDataTexture)if(bt.length>0){It&&Qt&&e.texStorage2D(i.TEXTURE_2D,R,gt,bt[0].width,bt[0].height);for(let Y=0,W=bt.length;Y>=1,W>>=1}}else if(bt.length>0){if(It&&Qt){const Y=jt(bt[0]);e.texStorage2D(i.TEXTURE_2D,R,gt,Y.width,Y.height)}for(let Y=0,W=bt.length;Y0&&R++;const W=jt(pt[0]);e.texStorage2D(i.TEXTURE_CUBE_MAP,R,bt,W.width,W.height)}for(let W=0;W<6;W++)if(tt){It?wt&&e.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+W,0,0,0,pt[W].width,pt[W].height,gt,ct,pt[W].data):e.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+W,0,bt,pt[W].width,pt[W].height,0,gt,ct,pt[W].data);for(let it=0;it>$),pt=Math.max(1,g.height>>$);K===i.TEXTURE_3D||K===i.TEXTURE_2D_ARRAY?e.texImage3D(K,$,at,tt,pt,g.depth,0,mt,ot,null):e.texImage2D(K,$,at,tt,pt,0,mt,ot,null)}e.bindFramebuffer(i.FRAMEBUFFER,A),Nt(g)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,X,K,n.get(z).__webglTexture,0,xt(g)):(K===i.TEXTURE_2D||K>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&K<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,X,K,n.get(z).__webglTexture,$),e.bindFramebuffer(i.FRAMEBUFFER,null)}function Q(A,g,z){if(i.bindRenderbuffer(i.RENDERBUFFER,A),g.depthBuffer&&!g.stencilBuffer){let X=i.DEPTH_COMPONENT24;if(z||Nt(g)){const K=g.depthTexture;K&&K.isDepthTexture&&(K.type===en?X=i.DEPTH_COMPONENT32F:K.type===qn&&(X=i.DEPTH_COMPONENT24));const $=xt(g);Nt(g)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,$,X,g.width,g.height):i.renderbufferStorageMultisample(i.RENDERBUFFER,$,X,g.width,g.height)}else i.renderbufferStorage(i.RENDERBUFFER,X,g.width,g.height);i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.RENDERBUFFER,A)}else if(g.depthBuffer&&g.stencilBuffer){const X=xt(g);z&&Nt(g)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,X,i.DEPTH24_STENCIL8,g.width,g.height):Nt(g)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,X,i.DEPTH24_STENCIL8,g.width,g.height):i.renderbufferStorage(i.RENDERBUFFER,i.DEPTH_STENCIL,g.width,g.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.RENDERBUFFER,A)}else{const X=g.textures;for(let K=0;K1;if(mt||(X.__webglTexture===void 0&&(X.__webglTexture=i.createTexture()),X.__version=g.version,a.memory.textures++),$){z.__webglFramebuffer=[];for(let ot=0;ot<6;ot++)if(g.mipmaps&&g.mipmaps.length>0){z.__webglFramebuffer[ot]=[];for(let at=0;at0){z.__webglFramebuffer=[];for(let ot=0;ot0&&Nt(A)===!1){z.__webglMultisampledFramebuffer=i.createFramebuffer(),z.__webglColorRenderbuffer=[],e.bindFramebuffer(i.FRAMEBUFFER,z.__webglMultisampledFramebuffer);for(let ot=0;ot0)for(let at=0;at0)for(let at=0;at0){if(Nt(A)===!1){const g=A.textures,z=A.width,X=A.height;let K=i.COLOR_BUFFER_BIT;const $=A.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,mt=n.get(A),ot=g.length>1;if(ot)for(let at=0;at0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&g.__useRenderToTexture!==!1}function Rt(A){const g=a.render.frame;h.get(A)!==g&&(h.set(A,g),A.update())}function Ft(A,g){const z=A.colorSpace,X=A.format,K=A.type;return A.isCompressedTexture===!0||A.isVideoTexture===!0||z!==ln&&z!==tn&&(Gt.getTransfer(z)===Yt?(X!==Ue||K!==an)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",z)),g}function jt(A){return typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement?(c.width=A.naturalWidth||A.width,c.height=A.naturalHeight||A.height):typeof VideoFrame<"u"&&A instanceof VideoFrame?(c.width=A.displayWidth,c.height=A.displayHeight):(c.width=A.width,c.height=A.height),c}this.allocateTextureUnit=F,this.resetTextureUnits=_,this.setTexture2D=C,this.setTexture2DArray=G,this.setTexture3D=q,this.setTextureCube=j,this.rebindTextures=Dt,this.setupRenderTarget=Ut,this.updateRenderTargetMipmap=D,this.updateMultisampleRenderTarget=Wt,this.setupDepthRenderbuffer=nt,this.setupFrameBufferTexture=V,this.useMultisampledRTT=Nt}function Pf(i,t){function e(n,r=tn){let s;const a=Gt.getTransfer(r);if(n===an)return i.UNSIGNED_BYTE;if(n===Ga)return i.UNSIGNED_SHORT_4_4_4_4;if(n===ka)return i.UNSIGNED_SHORT_5_5_5_1;if(n===hl)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===ll)return i.BYTE;if(n===cl)return i.SHORT;if(n===Ha)return i.UNSIGNED_SHORT;if(n===Va)return i.INT;if(n===qn)return i.UNSIGNED_INT;if(n===en)return i.FLOAT;if(n===qi)return i.HALF_FLOAT;if(n===ul)return i.ALPHA;if(n===dl)return i.RGB;if(n===Ue)return i.RGBA;if(n===fl)return i.LUMINANCE;if(n===pl)return i.LUMINANCE_ALPHA;if(n===Gn)return i.DEPTH_COMPONENT;if(n===oi)return i.DEPTH_STENCIL;if(n===ml)return i.RED;if(n===Wa)return i.RED_INTEGER;if(n===_l)return i.RG;if(n===Xa)return i.RG_INTEGER;if(n===qa)return i.RGBA_INTEGER;if(n===rr||n===sr||n===ar||n===or)if(a===Yt)if(s=t.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===rr)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===sr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===ar)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===or)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=t.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===rr)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===sr)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===ar)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===or)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===_s||n===gs||n===vs||n===xs)if(s=t.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===_s)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===gs)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===vs)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===xs)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Ms||n===Ss||n===Es)if(s=t.get("WEBGL_compressed_texture_etc"),s!==null){if(n===Ms||n===Ss)return a===Yt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===Es)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===ys||n===Ts||n===As||n===bs||n===ws||n===Rs||n===Cs||n===Ps||n===Ls||n===Ds||n===Us||n===Is||n===Ns||n===Fs)if(s=t.get("WEBGL_compressed_texture_astc"),s!==null){if(n===ys)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Ts)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===As)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===bs)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===ws)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Rs)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Cs)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Ps)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Ls)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Ds)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Us)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Is)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Ns)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Fs)return a===Yt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===lr||n===Os||n===Bs)if(s=t.get("EXT_texture_compression_bptc"),s!==null){if(n===lr)return a===Yt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Os)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Bs)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===gl||n===zs||n===Hs||n===Vs)if(s=t.get("EXT_texture_compression_rgtc"),s!==null){if(n===lr)return s.COMPRESSED_RED_RGTC1_EXT;if(n===zs)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Hs)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Vs)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===ci?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:e}}class Lf extends Me{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}}class Oi extends _e{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Df={type:"move"};class Nr{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Oi,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Oi,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new L,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new L),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Oi,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new L,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new L),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){const e=this._hand;if(e)for(const n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let r=null,s=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(c&&t.hand){a=!0;for(const S of t.hand.values()){const d=e.getJointPose(S,n),u=this._getHandJoint(c,S);d!==null&&(u.matrix.fromArray(d.transform.matrix),u.matrix.decompose(u.position,u.rotation,u.scale),u.matrixWorldNeedsUpdate=!0,u.jointRadius=d.radius),u.visible=d!==null}const h=c.joints["index-finger-tip"],p=c.joints["thumb-tip"],f=h.position.distanceTo(p.position),m=.02,v=.005;c.inputState.pinching&&f>m+v?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!c.inputState.pinching&&f<=m-v&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else l!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=e.getPose(t.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Df)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){const n=new Oi;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}const Uf=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,If=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class Nf{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,e,n){if(this.texture===null){const r=new me,s=t.properties.get(r);s.__webglTexture=e.texture,(e.depthNear!=n.depthNear||e.depthFar!=n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=r}}render(t,e){if(this.texture!==null){if(this.mesh===null){const n=e.cameras[0].viewport,r=new on({vertexShader:Uf,fragmentShader:If,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new Ie(new Ki(20,20),r)}t.render(this.mesh,e)}}reset(){this.texture=null,this.mesh=null}}class Ff extends Kn{constructor(t,e){super();const n=this;let r=null,s=1,a=null,o="local-floor",l=1,c=null,h=null,p=null,f=null,m=null,v=null;const S=new Nf,d=e.getContextAttributes();let u=null,y=null;const M=[],T=[],U=new Pt;let b=null;const w=new Me;w.layers.enable(1),w.viewport=new $t;const O=new Me;O.layers.enable(2),O.viewport=new $t;const E=[w,O],_=new Lf;_.layers.enable(1),_.layers.enable(2);let F=null,k=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(V){let Q=M[V];return Q===void 0&&(Q=new Nr,M[V]=Q),Q.getTargetRaySpace()},this.getControllerGrip=function(V){let Q=M[V];return Q===void 0&&(Q=new Nr,M[V]=Q),Q.getGripSpace()},this.getHand=function(V){let Q=M[V];return Q===void 0&&(Q=new Nr,M[V]=Q),Q.getHandSpace()};function C(V){const Q=T.indexOf(V.inputSource);if(Q===-1)return;const ht=M[Q];ht!==void 0&&(ht.update(V.inputSource,V.frame,c||a),ht.dispatchEvent({type:V.type,data:V.inputSource}))}function G(){r.removeEventListener("select",C),r.removeEventListener("selectstart",C),r.removeEventListener("selectend",C),r.removeEventListener("squeeze",C),r.removeEventListener("squeezestart",C),r.removeEventListener("squeezeend",C),r.removeEventListener("end",G),r.removeEventListener("inputsourceschange",q);for(let V=0;V=0&&(T[nt]=null,M[nt].disconnect(ht))}for(let Q=0;Q=T.length){T.push(ht),nt=Ut;break}else if(T[Ut]===null){T[Ut]=ht,nt=Ut;break}if(nt===-1)break}const Dt=M[nt];Dt&&Dt.connect(ht)}}const j=new L,st=new L;function H(V,Q,ht){j.setFromMatrixPosition(Q.matrixWorld),st.setFromMatrixPosition(ht.matrixWorld);const nt=j.distanceTo(st),Dt=Q.projectionMatrix.elements,Ut=ht.projectionMatrix.elements,D=Dt[14]/(Dt[10]-1),Xt=Dt[14]/(Dt[10]+1),_t=(Dt[9]+1)/Dt[5],Wt=(Dt[9]-1)/Dt[5],xt=(Dt[8]-1)/Dt[0],Nt=(Ut[8]+1)/Ut[0],Rt=D*xt,Ft=D*Nt,jt=nt/(-xt+Nt),A=jt*-xt;Q.matrixWorld.decompose(V.position,V.quaternion,V.scale),V.translateX(A),V.translateZ(jt),V.matrixWorld.compose(V.position,V.quaternion,V.scale),V.matrixWorldInverse.copy(V.matrixWorld).invert();const g=D+jt,z=Xt+jt,X=Rt-A,K=Ft+(nt-A),$=_t*Xt/z*g,mt=Wt*Xt/z*g;V.projectionMatrix.makePerspective(X,K,$,mt,g,z),V.projectionMatrixInverse.copy(V.projectionMatrix).invert()}function J(V,Q){Q===null?V.matrixWorld.copy(V.matrix):V.matrixWorld.multiplyMatrices(Q.matrixWorld,V.matrix),V.matrixWorldInverse.copy(V.matrixWorld).invert()}this.updateCamera=function(V){if(r===null)return;S.texture!==null&&(V.near=S.depthNear,V.far=S.depthFar),_.near=O.near=w.near=V.near,_.far=O.far=w.far=V.far,(F!==_.near||k!==_.far)&&(r.updateRenderState({depthNear:_.near,depthFar:_.far}),F=_.near,k=_.far,w.near=F,w.far=k,O.near=F,O.far=k,w.updateProjectionMatrix(),O.updateProjectionMatrix(),V.updateProjectionMatrix());const Q=V.parent,ht=_.cameras;J(_,Q);for(let nt=0;nt0&&(d.alphaTest.value=u.alphaTest);const y=t.get(u),M=y.envMap,T=y.envMapRotation;if(M&&(d.envMap.value=M,mn.copy(T),mn.x*=-1,mn.y*=-1,mn.z*=-1,M.isCubeTexture&&M.isRenderTargetTexture===!1&&(mn.y*=-1,mn.z*=-1),d.envMapRotation.value.setFromMatrix4(Of.makeRotationFromEuler(mn)),d.flipEnvMap.value=M.isCubeTexture&&M.isRenderTargetTexture===!1?-1:1,d.reflectivity.value=u.reflectivity,d.ior.value=u.ior,d.refractionRatio.value=u.refractionRatio),u.lightMap){d.lightMap.value=u.lightMap;const U=i._useLegacyLights===!0?Math.PI:1;d.lightMapIntensity.value=u.lightMapIntensity*U,e(u.lightMap,d.lightMapTransform)}u.aoMap&&(d.aoMap.value=u.aoMap,d.aoMapIntensity.value=u.aoMapIntensity,e(u.aoMap,d.aoMapTransform))}function a(d,u){d.diffuse.value.copy(u.color),d.opacity.value=u.opacity,u.map&&(d.map.value=u.map,e(u.map,d.mapTransform))}function o(d,u){d.dashSize.value=u.dashSize,d.totalSize.value=u.dashSize+u.gapSize,d.scale.value=u.scale}function l(d,u,y,M){d.diffuse.value.copy(u.color),d.opacity.value=u.opacity,d.size.value=u.size*y,d.scale.value=M*.5,u.map&&(d.map.value=u.map,e(u.map,d.uvTransform)),u.alphaMap&&(d.alphaMap.value=u.alphaMap,e(u.alphaMap,d.alphaMapTransform)),u.alphaTest>0&&(d.alphaTest.value=u.alphaTest)}function c(d,u){d.diffuse.value.copy(u.color),d.opacity.value=u.opacity,d.rotation.value=u.rotation,u.map&&(d.map.value=u.map,e(u.map,d.mapTransform)),u.alphaMap&&(d.alphaMap.value=u.alphaMap,e(u.alphaMap,d.alphaMapTransform)),u.alphaTest>0&&(d.alphaTest.value=u.alphaTest)}function h(d,u){d.specular.value.copy(u.specular),d.shininess.value=Math.max(u.shininess,1e-4)}function p(d,u){u.gradientMap&&(d.gradientMap.value=u.gradientMap)}function f(d,u){d.metalness.value=u.metalness,u.metalnessMap&&(d.metalnessMap.value=u.metalnessMap,e(u.metalnessMap,d.metalnessMapTransform)),d.roughness.value=u.roughness,u.roughnessMap&&(d.roughnessMap.value=u.roughnessMap,e(u.roughnessMap,d.roughnessMapTransform)),u.envMap&&(d.envMapIntensity.value=u.envMapIntensity)}function m(d,u,y){d.ior.value=u.ior,u.sheen>0&&(d.sheenColor.value.copy(u.sheenColor).multiplyScalar(u.sheen),d.sheenRoughness.value=u.sheenRoughness,u.sheenColorMap&&(d.sheenColorMap.value=u.sheenColorMap,e(u.sheenColorMap,d.sheenColorMapTransform)),u.sheenRoughnessMap&&(d.sheenRoughnessMap.value=u.sheenRoughnessMap,e(u.sheenRoughnessMap,d.sheenRoughnessMapTransform))),u.clearcoat>0&&(d.clearcoat.value=u.clearcoat,d.clearcoatRoughness.value=u.clearcoatRoughness,u.clearcoatMap&&(d.clearcoatMap.value=u.clearcoatMap,e(u.clearcoatMap,d.clearcoatMapTransform)),u.clearcoatRoughnessMap&&(d.clearcoatRoughnessMap.value=u.clearcoatRoughnessMap,e(u.clearcoatRoughnessMap,d.clearcoatRoughnessMapTransform)),u.clearcoatNormalMap&&(d.clearcoatNormalMap.value=u.clearcoatNormalMap,e(u.clearcoatNormalMap,d.clearcoatNormalMapTransform),d.clearcoatNormalScale.value.copy(u.clearcoatNormalScale),u.side===pe&&d.clearcoatNormalScale.value.negate())),u.dispersion>0&&(d.dispersion.value=u.dispersion),u.iridescence>0&&(d.iridescence.value=u.iridescence,d.iridescenceIOR.value=u.iridescenceIOR,d.iridescenceThicknessMinimum.value=u.iridescenceThicknessRange[0],d.iridescenceThicknessMaximum.value=u.iridescenceThicknessRange[1],u.iridescenceMap&&(d.iridescenceMap.value=u.iridescenceMap,e(u.iridescenceMap,d.iridescenceMapTransform)),u.iridescenceThicknessMap&&(d.iridescenceThicknessMap.value=u.iridescenceThicknessMap,e(u.iridescenceThicknessMap,d.iridescenceThicknessMapTransform))),u.transmission>0&&(d.transmission.value=u.transmission,d.transmissionSamplerMap.value=y.texture,d.transmissionSamplerSize.value.set(y.width,y.height),u.transmissionMap&&(d.transmissionMap.value=u.transmissionMap,e(u.transmissionMap,d.transmissionMapTransform)),d.thickness.value=u.thickness,u.thicknessMap&&(d.thicknessMap.value=u.thicknessMap,e(u.thicknessMap,d.thicknessMapTransform)),d.attenuationDistance.value=u.attenuationDistance,d.attenuationColor.value.copy(u.attenuationColor)),u.anisotropy>0&&(d.anisotropyVector.value.set(u.anisotropy*Math.cos(u.anisotropyRotation),u.anisotropy*Math.sin(u.anisotropyRotation)),u.anisotropyMap&&(d.anisotropyMap.value=u.anisotropyMap,e(u.anisotropyMap,d.anisotropyMapTransform))),d.specularIntensity.value=u.specularIntensity,d.specularColor.value.copy(u.specularColor),u.specularColorMap&&(d.specularColorMap.value=u.specularColorMap,e(u.specularColorMap,d.specularColorMapTransform)),u.specularIntensityMap&&(d.specularIntensityMap.value=u.specularIntensityMap,e(u.specularIntensityMap,d.specularIntensityMapTransform))}function v(d,u){u.matcap&&(d.matcap.value=u.matcap)}function S(d,u){const y=t.get(u).light;d.referencePosition.value.setFromMatrixPosition(y.matrixWorld),d.nearDistance.value=y.shadow.camera.near,d.farDistance.value=y.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function zf(i,t,e,n){let r={},s={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(y,M){const T=M.program;n.uniformBlockBinding(y,T)}function c(y,M){let T=r[y.id];T===void 0&&(v(y),T=h(y),r[y.id]=T,y.addEventListener("dispose",d));const U=M.program;n.updateUBOMapping(y,U);const b=t.render.frame;s[y.id]!==b&&(f(y),s[y.id]=b)}function h(y){const M=p();y.__bindingPointIndex=M;const T=i.createBuffer(),U=y.__size,b=y.usage;return i.bindBuffer(i.UNIFORM_BUFFER,T),i.bufferData(i.UNIFORM_BUFFER,U,b),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,M,T),T}function p(){for(let y=0;y0&&(T+=U-b),y.__size=T,y.__cache={},this}function S(y){const M={boundary:0,storage:0};return typeof y=="number"||typeof y=="boolean"?(M.boundary=4,M.storage=4):y.isVector2?(M.boundary=8,M.storage=8):y.isVector3||y.isColor?(M.boundary=16,M.storage=12):y.isVector4?(M.boundary=16,M.storage=16):y.isMatrix3?(M.boundary=48,M.storage=48):y.isMatrix4?(M.boundary=64,M.storage=64):y.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",y),M}function d(y){const M=y.target;M.removeEventListener("dispose",d);const T=a.indexOf(M.__bindingPointIndex);a.splice(T,1),i.deleteBuffer(r[M.id]),delete r[M.id],delete s[M.id]}function u(){for(const y in r)i.deleteBuffer(r[y]);a=[],r={},s={}}return{bind:l,update:c,dispose:u}}class Hf{constructor(t={}){const{canvas:e=Cl(),context:n=null,depth:r=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:p=!1}=t;this.isWebGLRenderer=!0;let f;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");f=n.getContextAttributes().alpha}else f=a;const m=new Uint32Array(4),v=new Int32Array(4);let S=null,d=null;const u=[],y=[];this.domElement=e,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Pe,this._useLegacyLights=!1,this.toneMapping=rn,this.toneMappingExposure=1;const M=this;let T=!1,U=0,b=0,w=null,O=-1,E=null;const _=new $t,F=new $t;let k=null;const C=new zt(0);let G=0,q=e.width,j=e.height,st=1,H=null,J=null;const Z=new $t(0,0,q,j),ft=new $t(0,0,q,j);let Lt=!1;const kt=new Jr;let V=!1,Q=!1;const ht=new Jt,nt=new L,Dt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Ut(){return w===null?st:1}let D=n;function Xt(x,P){return e.getContext(x,P)}try{const x={alpha:!0,depth:r,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:h,failIfMajorPerformanceCaveat:p};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${Yr}`),e.addEventListener("webglcontextlost",R,!1),e.addEventListener("webglcontextrestored",Y,!1),e.addEventListener("webglcontextcreationerror",W,!1),D===null){const P="webgl2";if(D=Xt(P,x),D===null)throw Xt(P)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(x){throw console.error("THREE.WebGLRenderer: "+x.message),x}let _t,Wt,xt,Nt,Rt,Ft,jt,A,g,z,X,K,$,mt,ot,at,At,tt,pt,Ot,gt,ct,bt,It;function Qt(){_t=new Yu(D),_t.init(),ct=new Pf(D,_t),Wt=new Hu(D,_t,t,ct),xt=new Rf(D),Nt=new ju(D),Rt=new pf,Ft=new Cf(D,_t,xt,Rt,Wt,ct,Nt),jt=new Gu(M),A=new qu(M),g=new nc(D),bt=new Bu(D,g),z=new Ku(D,g,Nt,bt),X=new Ju(D,z,g,Nt),pt=new Zu(D,Wt,Ft),at=new Vu(Rt),K=new ff(M,jt,A,_t,Wt,bt,at),$=new Bf(M,Rt),mt=new _f,ot=new Ef(_t),tt=new Ou(M,jt,A,xt,X,f,l),At=new wf(M,X,Wt),It=new zf(D,Nt,Wt,xt),Ot=new zu(D,_t,Nt),gt=new $u(D,_t,Nt),Nt.programs=K.programs,M.capabilities=Wt,M.extensions=_t,M.properties=Rt,M.renderLists=mt,M.shadowMap=At,M.state=xt,M.info=Nt}Qt();const wt=new Ff(M,D);this.xr=wt,this.getContext=function(){return D},this.getContextAttributes=function(){return D.getContextAttributes()},this.forceContextLoss=function(){const x=_t.get("WEBGL_lose_context");x&&x.loseContext()},this.forceContextRestore=function(){const x=_t.get("WEBGL_lose_context");x&&x.restoreContext()},this.getPixelRatio=function(){return st},this.setPixelRatio=function(x){x!==void 0&&(st=x,this.setSize(q,j,!1))},this.getSize=function(x){return x.set(q,j)},this.setSize=function(x,P,B=!0){if(wt.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}q=x,j=P,e.width=Math.floor(x*st),e.height=Math.floor(P*st),B===!0&&(e.style.width=x+"px",e.style.height=P+"px"),this.setViewport(0,0,x,P)},this.getDrawingBufferSize=function(x){return x.set(q*st,j*st).floor()},this.setDrawingBufferSize=function(x,P,B){q=x,j=P,st=B,e.width=Math.floor(x*B),e.height=Math.floor(P*B),this.setViewport(0,0,x,P)},this.getCurrentViewport=function(x){return x.copy(_)},this.getViewport=function(x){return x.copy(Z)},this.setViewport=function(x,P,B,I){x.isVector4?Z.set(x.x,x.y,x.z,x.w):Z.set(x,P,B,I),xt.viewport(_.copy(Z).multiplyScalar(st).round())},this.getScissor=function(x){return x.copy(ft)},this.setScissor=function(x,P,B,I){x.isVector4?ft.set(x.x,x.y,x.z,x.w):ft.set(x,P,B,I),xt.scissor(F.copy(ft).multiplyScalar(st).round())},this.getScissorTest=function(){return Lt},this.setScissorTest=function(x){xt.setScissorTest(Lt=x)},this.setOpaqueSort=function(x){H=x},this.setTransparentSort=function(x){J=x},this.getClearColor=function(x){return x.copy(tt.getClearColor())},this.setClearColor=function(){tt.setClearColor.apply(tt,arguments)},this.getClearAlpha=function(){return tt.getClearAlpha()},this.setClearAlpha=function(){tt.setClearAlpha.apply(tt,arguments)},this.clear=function(x=!0,P=!0,B=!0){let I=0;if(x){let N=!1;if(w!==null){const rt=w.texture.format;N=rt===qa||rt===Xa||rt===Wa}if(N){const rt=w.texture.type,ut=rt===an||rt===qn||rt===Ha||rt===ci||rt===Ga||rt===ka,dt=tt.getClearColor(),vt=tt.getClearAlpha(),Mt=dt.r,Et=dt.g,Ct=dt.b;ut?(m[0]=Mt,m[1]=Et,m[2]=Ct,m[3]=vt,D.clearBufferuiv(D.COLOR,0,m)):(v[0]=Mt,v[1]=Et,v[2]=Ct,v[3]=vt,D.clearBufferiv(D.COLOR,0,v))}else I|=D.COLOR_BUFFER_BIT}P&&(I|=D.DEPTH_BUFFER_BIT),B&&(I|=D.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),D.clear(I)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",R,!1),e.removeEventListener("webglcontextrestored",Y,!1),e.removeEventListener("webglcontextcreationerror",W,!1),mt.dispose(),ot.dispose(),Rt.dispose(),jt.dispose(),A.dispose(),X.dispose(),bt.dispose(),It.dispose(),K.dispose(),wt.dispose(),wt.removeEventListener("sessionstart",Vt),wt.removeEventListener("sessionend",Ce),he.stop()};function R(x){x.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),T=!0}function Y(){console.log("THREE.WebGLRenderer: Context Restored."),T=!1;const x=Nt.autoReset,P=At.enabled,B=At.autoUpdate,I=At.needsUpdate,N=At.type;Qt(),Nt.autoReset=x,At.enabled=P,At.autoUpdate=B,At.needsUpdate=I,At.type=N}function W(x){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",x.statusMessage)}function it(x){const P=x.target;P.removeEventListener("dispose",it),lt(P)}function lt(x){Bt(x),Rt.remove(x)}function Bt(x){const P=Rt.get(x).programs;P!==void 0&&(P.forEach(function(B){K.releaseProgram(B)}),x.isShaderMaterial&&K.releaseShaderCache(x))}this.renderBufferDirect=function(x,P,B,I,N,rt){P===null&&(P=Dt);const ut=N.isMesh&&N.matrixWorld.determinant()<0,dt=xo(x,P,B,I,N);xt.setMaterial(I,ut);let vt=B.index,Mt=1;if(I.wireframe===!0){if(vt=z.getWireframeAttribute(B),vt===void 0)return;Mt=2}const Et=B.drawRange,Ct=B.attributes.position;let te=Et.start*Mt,ae=(Et.start+Et.count)*Mt;rt!==null&&(te=Math.max(te,rt.start*Mt),ae=Math.min(ae,(rt.start+rt.count)*Mt)),vt!==null?(te=Math.max(te,0),ae=Math.min(ae,vt.count)):Ct!=null&&(te=Math.max(te,0),ae=Math.min(ae,Ct.count));const ge=ae-te;if(ge<0||ge===1/0)return;bt.setup(N,I,dt,B,vt);let Oe,Ht=Ot;if(vt!==null&&(Oe=g.get(vt),Ht=gt,Ht.setIndex(Oe)),N.isMesh)I.wireframe===!0?(xt.setLineWidth(I.wireframeLinewidth*Ut()),Ht.setMode(D.LINES)):Ht.setMode(D.TRIANGLES);else if(N.isLine){let St=I.linewidth;St===void 0&&(St=1),xt.setLineWidth(St*Ut()),N.isLineSegments?Ht.setMode(D.LINES):N.isLineLoop?Ht.setMode(D.LINE_LOOP):Ht.setMode(D.LINE_STRIP)}else N.isPoints?Ht.setMode(D.POINTS):N.isSprite&&Ht.setMode(D.TRIANGLES);if(N.isBatchedMesh)N._multiDrawInstances!==null?Ht.renderMultiDrawInstances(N._multiDrawStarts,N._multiDrawCounts,N._multiDrawCount,N._multiDrawInstances):Ht.renderMultiDraw(N._multiDrawStarts,N._multiDrawCounts,N._multiDrawCount);else if(N.isInstancedMesh)Ht.renderInstances(te,ge,N.count);else if(B.isInstancedBufferGeometry){const St=B._maxInstanceCount!==void 0?B._maxInstanceCount:1/0,Jn=Math.min(B.instanceCount,St);Ht.renderInstances(te,ge,Jn)}else Ht.render(te,ge)};function qt(x,P,B){x.transparent===!0&&x.side===We&&x.forceSinglePass===!1?(x.side=pe,x.needsUpdate=!0,pi(x,P,B),x.side=sn,x.needsUpdate=!0,pi(x,P,B),x.side=We):pi(x,P,B)}this.compile=function(x,P,B=null){B===null&&(B=x),d=ot.get(B),d.init(P),y.push(d),B.traverseVisible(function(N){N.isLight&&N.layers.test(P.layers)&&(d.pushLight(N),N.castShadow&&d.pushShadow(N))}),x!==B&&x.traverseVisible(function(N){N.isLight&&N.layers.test(P.layers)&&(d.pushLight(N),N.castShadow&&d.pushShadow(N))}),d.setupLights(M._useLegacyLights);const I=new Set;return x.traverse(function(N){const rt=N.material;if(rt)if(Array.isArray(rt))for(let ut=0;ut{function rt(){if(I.forEach(function(ut){Rt.get(ut).currentProgram.isReady()&&I.delete(ut)}),I.size===0){N(x);return}setTimeout(rt,10)}_t.get("KHR_parallel_shader_compile")!==null?rt():setTimeout(rt,10)})};let Zt=null;function se(x){Zt&&Zt(x)}function Vt(){he.stop()}function Ce(){he.start()}const he=new so;he.setAnimationLoop(se),typeof self<"u"&&he.setContext(self),this.setAnimationLoop=function(x){Zt=x,wt.setAnimationLoop(x),x===null?he.stop():he.start()},wt.addEventListener("sessionstart",Vt),wt.addEventListener("sessionend",Ce),this.render=function(x,P){if(P!==void 0&&P.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(T===!0)return;x.matrixWorldAutoUpdate===!0&&x.updateMatrixWorld(),P.parent===null&&P.matrixWorldAutoUpdate===!0&&P.updateMatrixWorld(),wt.enabled===!0&&wt.isPresenting===!0&&(wt.cameraAutoUpdate===!0&&wt.updateCamera(P),P=wt.getCamera()),x.isScene===!0&&x.onBeforeRender(M,x,P,w),d=ot.get(x,y.length),d.init(P),y.push(d),ht.multiplyMatrices(P.projectionMatrix,P.matrixWorldInverse),kt.setFromProjectionMatrix(ht),Q=this.localClippingEnabled,V=at.init(this.clippingPlanes,Q),S=mt.get(x,u.length),S.init(),u.push(S),rs(x,P,0,M.sortObjects),S.finish(),M.sortObjects===!0&&S.sort(H,J);const B=wt.enabled===!1||wt.isPresenting===!1||wt.hasDepthSensing()===!1;B&&tt.addToRenderList(S,x),this.info.render.frame++,V===!0&&at.beginShadows();const I=d.state.shadowsArray;At.render(I,x,P),V===!0&&at.endShadows(),this.info.autoReset===!0&&this.info.reset();const N=S.opaque,rt=S.transmissive;if(d.setupLights(M._useLegacyLights),P.isArrayCamera){const ut=P.cameras;if(rt.length>0)for(let dt=0,vt=ut.length;dt0&&as(N,rt,x,P),B&&tt.render(x),ss(S,x,P);w!==null&&(Ft.updateMultisampleRenderTarget(w),Ft.updateRenderTargetMipmap(w)),x.isScene===!0&&x.onAfterRender(M,x,P),bt.resetDefaultState(),O=-1,E=null,y.pop(),y.length>0?(d=y[y.length-1],V===!0&&at.setGlobalState(M.clippingPlanes,d.state.camera)):d=null,u.pop(),u.length>0?S=u[u.length-1]:S=null};function rs(x,P,B,I){if(x.visible===!1)return;if(x.layers.test(P.layers)){if(x.isGroup)B=x.renderOrder;else if(x.isLOD)x.autoUpdate===!0&&x.update(P);else if(x.isLight)d.pushLight(x),x.castShadow&&d.pushShadow(x);else if(x.isSprite){if(!x.frustumCulled||kt.intersectsSprite(x)){I&&nt.setFromMatrixPosition(x.matrixWorld).applyMatrix4(ht);const ut=X.update(x),dt=x.material;dt.visible&&S.push(x,ut,dt,B,nt.z,null)}}else if((x.isMesh||x.isLine||x.isPoints)&&(!x.frustumCulled||kt.intersectsObject(x))){const ut=X.update(x),dt=x.material;if(I&&(x.boundingSphere!==void 0?(x.boundingSphere===null&&x.computeBoundingSphere(),nt.copy(x.boundingSphere.center)):(ut.boundingSphere===null&&ut.computeBoundingSphere(),nt.copy(ut.boundingSphere.center)),nt.applyMatrix4(x.matrixWorld).applyMatrix4(ht)),Array.isArray(dt)){const vt=ut.groups;for(let Mt=0,Et=vt.length;Mt0&&fi(N,P,B),rt.length>0&&fi(rt,P,B),ut.length>0&&fi(ut,P,B),xt.buffers.depth.setTest(!0),xt.buffers.depth.setMask(!0),xt.buffers.color.setMask(!0),xt.setPolygonOffset(!1)}function as(x,P,B,I){if((B.isScene===!0?B.overrideMaterial:null)!==null)return;d.state.transmissionRenderTarget[I.id]===void 0&&(d.state.transmissionRenderTarget[I.id]=new En(1,1,{generateMipmaps:!0,type:_t.has("EXT_color_buffer_half_float")||_t.has("EXT_color_buffer_float")?qi:an,minFilter:Sn,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1}));const rt=d.state.transmissionRenderTarget[I.id],ut=I.viewport||_;rt.setSize(ut.z,ut.w);const dt=M.getRenderTarget();M.setRenderTarget(rt),M.getClearColor(C),G=M.getClearAlpha(),G<1&&M.setClearColor(16777215,.5),M.clear();const vt=M.toneMapping;M.toneMapping=rn;const Mt=I.viewport;if(I.viewport!==void 0&&(I.viewport=void 0),d.setupLightsView(I),V===!0&&at.setGlobalState(M.clippingPlanes,I),fi(x,B,I),Ft.updateMultisampleRenderTarget(rt),Ft.updateRenderTargetMipmap(rt),_t.has("WEBGL_multisampled_render_to_texture")===!1){let Et=!1;for(let Ct=0,te=P.length;Ct0),Ct=!!B.morphAttributes.position,te=!!B.morphAttributes.normal,ae=!!B.morphAttributes.color;let ge=rn;I.toneMapped&&(w===null||w.isXRRenderTarget===!0)&&(ge=M.toneMapping);const Oe=B.morphAttributes.position||B.morphAttributes.normal||B.morphAttributes.color,Ht=Oe!==void 0?Oe.length:0,St=Rt.get(I),Jn=d.state.lights;if(V===!0&&(Q===!0||x!==E)){const Se=x===E&&I.id===O;at.setState(I,x,Se)}let Kt=!1;I.version===St.__version?(St.needsLights&&St.lightsStateVersion!==Jn.state.version||St.outputColorSpace!==dt||N.isBatchedMesh&&St.batching===!1||!N.isBatchedMesh&&St.batching===!0||N.isInstancedMesh&&St.instancing===!1||!N.isInstancedMesh&&St.instancing===!0||N.isSkinnedMesh&&St.skinning===!1||!N.isSkinnedMesh&&St.skinning===!0||N.isInstancedMesh&&St.instancingColor===!0&&N.instanceColor===null||N.isInstancedMesh&&St.instancingColor===!1&&N.instanceColor!==null||N.isInstancedMesh&&St.instancingMorph===!0&&N.morphTexture===null||N.isInstancedMesh&&St.instancingMorph===!1&&N.morphTexture!==null||St.envMap!==vt||I.fog===!0&&St.fog!==rt||St.numClippingPlanes!==void 0&&(St.numClippingPlanes!==at.numPlanes||St.numIntersection!==at.numIntersection)||St.vertexAlphas!==Mt||St.vertexTangents!==Et||St.morphTargets!==Ct||St.morphNormals!==te||St.morphColors!==ae||St.toneMapping!==ge||St.morphTargetsCount!==Ht)&&(Kt=!0):(Kt=!0,St.__version=I.version);let cn=St.currentProgram;Kt===!0&&(cn=pi(I,P,N));let hs=!1,Qn=!1,tr=!1;const oe=cn.getUniforms(),Ye=St.uniforms;if(xt.useProgram(cn.program)&&(hs=!0,Qn=!0,tr=!0),I.id!==O&&(O=I.id,Qn=!0),hs||E!==x){oe.setValue(D,"projectionMatrix",x.projectionMatrix),oe.setValue(D,"viewMatrix",x.matrixWorldInverse);const Se=oe.map.cameraPosition;Se!==void 0&&Se.setValue(D,nt.setFromMatrixPosition(x.matrixWorld)),Wt.logarithmicDepthBuffer&&oe.setValue(D,"logDepthBufFC",2/(Math.log(x.far+1)/Math.LN2)),(I.isMeshPhongMaterial||I.isMeshToonMaterial||I.isMeshLambertMaterial||I.isMeshBasicMaterial||I.isMeshStandardMaterial||I.isShaderMaterial)&&oe.setValue(D,"isOrthographic",x.isOrthographicCamera===!0),E!==x&&(E=x,Qn=!0,tr=!0)}if(N.isSkinnedMesh){oe.setOptional(D,N,"bindMatrix"),oe.setOptional(D,N,"bindMatrixInverse");const Se=N.skeleton;Se&&(Se.boneTexture===null&&Se.computeBoneTexture(),oe.setValue(D,"boneTexture",Se.boneTexture,Ft))}N.isBatchedMesh&&(oe.setOptional(D,N,"batchingTexture"),oe.setValue(D,"batchingTexture",N._matricesTexture,Ft));const er=B.morphAttributes;if((er.position!==void 0||er.normal!==void 0||er.color!==void 0)&&pt.update(N,B,cn),(Qn||St.receiveShadow!==N.receiveShadow)&&(St.receiveShadow=N.receiveShadow,oe.setValue(D,"receiveShadow",N.receiveShadow)),I.isMeshGouraudMaterial&&I.envMap!==null&&(Ye.envMap.value=vt,Ye.flipEnvMap.value=vt.isCubeTexture&&vt.isRenderTargetTexture===!1?-1:1),I.isMeshStandardMaterial&&I.envMap===null&&P.environment!==null&&(Ye.envMapIntensity.value=P.environmentIntensity),Qn&&(oe.setValue(D,"toneMappingExposure",M.toneMappingExposure),St.needsLights&&Mo(Ye,tr),rt&&I.fog===!0&&$.refreshFogUniforms(Ye,rt),$.refreshMaterialUniforms(Ye,I,st,j,d.state.transmissionRenderTarget[x.id]),Bi.upload(D,ls(St),Ye,Ft)),I.isShaderMaterial&&I.uniformsNeedUpdate===!0&&(Bi.upload(D,ls(St),Ye,Ft),I.uniformsNeedUpdate=!1),I.isSpriteMaterial&&oe.setValue(D,"center",N.center),oe.setValue(D,"modelViewMatrix",N.modelViewMatrix),oe.setValue(D,"normalMatrix",N.normalMatrix),oe.setValue(D,"modelMatrix",N.matrixWorld),I.isShaderMaterial||I.isRawShaderMaterial){const Se=I.uniformsGroups;for(let nr=0,Eo=Se.length;nr0&&Ft.useMultisampledRTT(x)===!1?N=Rt.get(x).__webglMultisampledFramebuffer:Array.isArray(Et)?N=Et[B]:N=Et,_.copy(x.viewport),F.copy(x.scissor),k=x.scissorTest}else _.copy(Z).multiplyScalar(st).floor(),F.copy(ft).multiplyScalar(st).floor(),k=Lt;if(xt.bindFramebuffer(D.FRAMEBUFFER,N)&&I&&xt.drawBuffers(x,N),xt.viewport(_),xt.scissor(F),xt.setScissorTest(k),rt){const vt=Rt.get(x.texture);D.framebufferTexture2D(D.FRAMEBUFFER,D.COLOR_ATTACHMENT0,D.TEXTURE_CUBE_MAP_POSITIVE_X+P,vt.__webglTexture,B)}else if(ut){const vt=Rt.get(x.texture),Mt=P||0;D.framebufferTextureLayer(D.FRAMEBUFFER,D.COLOR_ATTACHMENT0,vt.__webglTexture,B||0,Mt)}O=-1},this.readRenderTargetPixels=function(x,P,B,I,N,rt,ut){if(!(x&&x.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let dt=Rt.get(x).__webglFramebuffer;if(x.isWebGLCubeRenderTarget&&ut!==void 0&&(dt=dt[ut]),dt){xt.bindFramebuffer(D.FRAMEBUFFER,dt);try{const vt=x.texture,Mt=vt.format,Et=vt.type;if(!Wt.textureFormatReadable(Mt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Wt.textureTypeReadable(Et)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}P>=0&&P<=x.width-I&&B>=0&&B<=x.height-N&&D.readPixels(P,B,I,N,ct.convert(Mt),ct.convert(Et),rt)}finally{const vt=w!==null?Rt.get(w).__webglFramebuffer:null;xt.bindFramebuffer(D.FRAMEBUFFER,vt)}}},this.copyFramebufferToTexture=function(x,P,B=0){const I=Math.pow(2,-B),N=Math.floor(P.image.width*I),rt=Math.floor(P.image.height*I);Ft.setTexture2D(P,0),D.copyTexSubImage2D(D.TEXTURE_2D,B,0,0,x.x,x.y,N,rt),xt.unbindTexture()},this.copyTextureToTexture=function(x,P,B,I=0){const N=P.image.width,rt=P.image.height,ut=ct.convert(B.format),dt=ct.convert(B.type);Ft.setTexture2D(B,0),D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL,B.flipY),D.pixelStorei(D.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B.premultiplyAlpha),D.pixelStorei(D.UNPACK_ALIGNMENT,B.unpackAlignment),P.isDataTexture?D.texSubImage2D(D.TEXTURE_2D,I,x.x,x.y,N,rt,ut,dt,P.image.data):P.isCompressedTexture?D.compressedTexSubImage2D(D.TEXTURE_2D,I,x.x,x.y,P.mipmaps[0].width,P.mipmaps[0].height,ut,P.mipmaps[0].data):D.texSubImage2D(D.TEXTURE_2D,I,x.x,x.y,ut,dt,P.image),I===0&&B.generateMipmaps&&D.generateMipmap(D.TEXTURE_2D),xt.unbindTexture()},this.copyTextureToTexture3D=function(x,P,B,I,N=0){const rt=x.max.x-x.min.x,ut=x.max.y-x.min.y,dt=x.max.z-x.min.z,vt=ct.convert(I.format),Mt=ct.convert(I.type);let Et;if(I.isData3DTexture)Ft.setTexture3D(I,0),Et=D.TEXTURE_3D;else if(I.isDataArrayTexture||I.isCompressedArrayTexture)Ft.setTexture2DArray(I,0),Et=D.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL,I.flipY),D.pixelStorei(D.UNPACK_PREMULTIPLY_ALPHA_WEBGL,I.premultiplyAlpha),D.pixelStorei(D.UNPACK_ALIGNMENT,I.unpackAlignment);const Ct=D.getParameter(D.UNPACK_ROW_LENGTH),te=D.getParameter(D.UNPACK_IMAGE_HEIGHT),ae=D.getParameter(D.UNPACK_SKIP_PIXELS),ge=D.getParameter(D.UNPACK_SKIP_ROWS),Oe=D.getParameter(D.UNPACK_SKIP_IMAGES),Ht=B.isCompressedTexture?B.mipmaps[N]:B.image;D.pixelStorei(D.UNPACK_ROW_LENGTH,Ht.width),D.pixelStorei(D.UNPACK_IMAGE_HEIGHT,Ht.height),D.pixelStorei(D.UNPACK_SKIP_PIXELS,x.min.x),D.pixelStorei(D.UNPACK_SKIP_ROWS,x.min.y),D.pixelStorei(D.UNPACK_SKIP_IMAGES,x.min.z),B.isDataTexture||B.isData3DTexture?D.texSubImage3D(Et,N,P.x,P.y,P.z,rt,ut,dt,vt,Mt,Ht.data):I.isCompressedArrayTexture?D.compressedTexSubImage3D(Et,N,P.x,P.y,P.z,rt,ut,dt,vt,Ht.data):D.texSubImage3D(Et,N,P.x,P.y,P.z,rt,ut,dt,vt,Mt,Ht),D.pixelStorei(D.UNPACK_ROW_LENGTH,Ct),D.pixelStorei(D.UNPACK_IMAGE_HEIGHT,te),D.pixelStorei(D.UNPACK_SKIP_PIXELS,ae),D.pixelStorei(D.UNPACK_SKIP_ROWS,ge),D.pixelStorei(D.UNPACK_SKIP_IMAGES,Oe),N===0&&I.generateMipmaps&&D.generateMipmap(Et),xt.unbindTexture()},this.initTexture=function(x){x.isCubeTexture?Ft.setTextureCube(x,0):x.isData3DTexture?Ft.setTexture3D(x,0):x.isDataArrayTexture||x.isCompressedArrayTexture?Ft.setTexture2DArray(x,0):Ft.setTexture2D(x,0),xt.unbindTexture()},this.resetState=function(){U=0,b=0,w=null,xt.reset(),bt.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Xe}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=t===jr?"display-p3":"srgb",e.unpackColorSpace=Gt.workingColorSpace===Yi?"display-p3":"srgb"}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(t){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=t}}class Vf extends _e{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Fe,this.environmentIntensity=1,this.environmentRotation=new Fe,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),t.background!==null&&(this.background=t.background.clone()),t.environment!==null&&(this.environment=t.environment.clone()),t.fog!==null&&(this.fog=t.fog.clone()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),t.overrideMaterial!==null&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}class ts extends qe{constructor(t=[],e=[],n=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:t,indices:e,radius:n,detail:r};const s=[],a=[];o(r),c(n),h(),this.setAttribute("position",new Ne(s,3)),this.setAttribute("normal",new Ne(s.slice(),3)),this.setAttribute("uv",new Ne(a,2)),r===0?this.computeVertexNormals():this.normalizeNormals();function o(y){const M=new L,T=new L,U=new L;for(let b=0;b.9&&w<.1&&(M<.2&&(a[y+0]+=1),T<.2&&(a[y+2]+=1),U<.2&&(a[y+4]+=1))}}function f(y){s.push(y.x,y.y,y.z)}function m(y,M){const T=y*3;M.x=t[T+0],M.y=t[T+1],M.z=t[T+2]}function v(){const y=new L,M=new L,T=new L,U=new L,b=new Pt,w=new Pt,O=new Pt;for(let E=0,_=0;EKf+t),mo=new Map;po.forEach((i,t)=>mo.set(i,t));const is=new Vf,Zi=new Me(30,1,.01,10);Zi.position.z=1;Zi.add(new qf(16777215,1));is.add(Zi);is.add(li);const _o=document.querySelector("#output"),qr=new Hf({canvas:_o,antialias:!0}),Fa=_o.getBoundingClientRect();qr.setSize(Fa.width,Fa.height);qr.setAnimationLoop(function(i){li.rotation.x=i/2e3,li.rotation.y=i/1e3,qr.render(is,Zi)});const Ji=new jn(.2,.2,.2);Ji.clearGroups();Ji.addGroup(0,18,0);Ji.addGroup(18,1/0,1);const Qi=new es(.16);Qi.clearGroups();Qi.addGroup(30,1/0,2);Qi.addGroup(0,30,0);const $f=new ji(vo(Ji)),jf=new ji(vo(Qi));function go(i){li.geometry?.dispose(),li.geometry=Zf(ji[i]($f,jf).getMesh())}go("union");const Oa=document.querySelector("select");Oa.onchange=function(){go(Oa.value)};function vo(i){const t=i.attributes.position.array,e=i.index!=null?i.index.array:new Uint32Array(t.length/3).map((c,h)=>h),n=[...Array(i.groups.length)].map((c,h)=>i.groups[h].start),r=[...Array(i.groups.length)].map((c,h)=>po[i.groups[h].materialIndex]),s=Array.from(n.keys());s.sort((c,h)=>n[c]-n[h]);const a=new Uint32Array(s.map(c=>n[c])),o=new Uint32Array(s.map(c=>r[c])),l=new Yf({numProp:3,vertProperties:t,triVerts:e,runIndex:a,runOriginalID:o});return l.merge(),l}function Zf(i){const t=new qe;t.setAttribute("position",new Te(i.vertProperties,3)),t.setIndex(new Te(i.triVerts,1));let e=i.runOriginalID[0],n=i.runIndex[0];for(let r=0;r> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\n/**\n * Matrices converting P3 <-> Rec. 709 primaries, without gamut mapping\n * or clipping. Based on W3C specifications for sRGB and Display P3,\n * and ICC specifications for the D50 connection space. Values in/out\n * are _linear_ sRGB and _linear_ Display P3.\n *\n * Note that both sRGB and Display P3 use the sRGB transfer functions.\n *\n * Reference:\n * - http://www.russellcottrell.com/photo/matrixCalculator.htm\n */\n\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /*@__PURE__*/ new Matrix3().set(\n\t0.8224621, 0.177538, 0.0,\n\t0.0331941, 0.9668058, 0.0,\n\t0.0170827, 0.0723974, 0.9105199,\n);\n\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /*@__PURE__*/ new Matrix3().set(\n\t1.2249401, - 0.2249404, 0.0,\n\t- 0.0420569, 1.0420571, 0.0,\n\t- 0.0196376, - 0.0786361, 1.0982735\n);\n\n/**\n * Defines supported color spaces by transfer function and primaries,\n * and provides conversions to/from the Linear-sRGB reference space.\n */\nconst COLOR_SPACES = {\n\t[ LinearSRGBColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color,\n\t\tfromReference: ( color ) => color,\n\t},\n\t[ SRGBColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: Rec709Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear(),\n\t\tfromReference: ( color ) => color.convertLinearToSRGB(),\n\t},\n\t[ LinearDisplayP3ColorSpace ]: {\n\t\ttransfer: LinearTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ),\n\t},\n\t[ DisplayP3ColorSpace ]: {\n\t\ttransfer: SRGBTransfer,\n\t\tprimaries: P3Primaries,\n\t\ttoReference: ( color ) => color.convertSRGBToLinear().applyMatrix3( LINEAR_DISPLAY_P3_TO_LINEAR_SRGB ),\n\t\tfromReference: ( color ) => color.applyMatrix3( LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 ).convertLinearToSRGB(),\n\t},\n};\n\nconst SUPPORTED_WORKING_COLOR_SPACES = new Set( [ LinearSRGBColorSpace, LinearDisplayP3ColorSpace ] );\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\t_workingColorSpace: LinearSRGBColorSpace,\n\n\tget workingColorSpace() {\n\n\t\treturn this._workingColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tif ( ! SUPPORTED_WORKING_COLOR_SPACES.has( colorSpace ) ) {\n\n\t\t\tthrow new Error( `Unsupported working color space, \"${ colorSpace }\".` );\n\n\t\t}\n\n\t\tthis._workingColorSpace = colorSpace;\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tconst sourceToReference = COLOR_SPACES[ sourceColorSpace ].toReference;\n\t\tconst targetFromReference = COLOR_SPACES[ targetColorSpace ].fromReference;\n\n\t\treturn targetFromReference( sourceToReference( color ) );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this._workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this._workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn COLOR_SPACES[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn COLOR_SPACES[ colorSpace ].transfer;\n\n\t},\n\n};\n\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\t\tthis.dataReady = true;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tthis.colorSpace = colorSpace;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.pmremVersion = 0; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tresolveDepthBuffer: true,\n\t\t\tresolveStencilBuffer: true,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1\n\t\t}, options );\n\n\t\tconst texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\ttexture.flipY = false;\n\t\ttexture.generateMipmaps = options.generateMipmaps;\n\t\ttexture.internalFormat = options.internalFormat;\n\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = options.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = options.resolveStencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = source.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = source.resolveStencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// sets this quaternion to a uniform random unit quaternnion\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$4.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$4.elements[ 0 ] *= invSX;\n\t\t_m1$4.elements[ 1 ] *= invSX;\n\t\t_m1$4.elements[ 2 ] *= invSX;\n\n\t\t_m1$4.elements[ 4 ] *= invSY;\n\t\t_m1$4.elements[ 5 ] *= invSY;\n\t\t_m1$4.elements[ 6 ] *= invSY;\n\n\t\t_m1$4.elements[ 8 ] *= invSZ;\n\t\t_m1$4.elements[ 9 ] *= invSZ;\n\t\t_m1$4.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$4 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$4 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$3 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nconst _childaddedEvent = { type: 'childadded', child: null };\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$3.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$3.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$3.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$3 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$3.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$3 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$3.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$3.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$3 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tif ( child.matrixWorldAutoUpdate === true || force === true ) {\n\n\t\t\t\tchild.updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tif ( child.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxGeometryCount = this._maxGeometryCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\twarnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1$2.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _normalA = /*@__PURE__*/ new Vector3();\nconst _normalB = /*@__PURE__*/ new Vector3();\nconst _normalC = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection$1( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection$1( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv1, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv1, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv1, c );\n\n\t\t\tintersection.uv1 = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\t_normalA.fromBufferAttribute( normal, a );\n\t\t\t_normalB.fromBufferAttribute( normal, b );\n\t\t\t_normalC.fromBufferAttribute( normal, c );\n\n\t\t\tintersection.normal = Triangle.getInterpolation( _intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Copies the result into the target Vector2, where x is width and y is height.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl ) {\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute._updateRange; // @deprecated, r159\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 && updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t}\n\n\t\tif ( updateRanges.length !== 0 ) {\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\t// @deprecated, r159\n\t\tif ( updateRange.count !== - 1 ) {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n\\t#endif\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\tattribute float batchId;\\n\\tuniform highp sampler2D batchingTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\t\\tfloat distanceToPlane, distanceGradient;\\n\\t\\tfloat clipOpacity = 1.0;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\tif ( clipOpacity == 0.0 ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tfloat unionClipOpacity = 1.0;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\t\\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tclipOpacity *= 1.0 - unionClipOpacity;\\n\\t\\t#endif\\n\\t\\tdiffuseColor.a *= clipOpacity;\\n\\t\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tbool clipped = true;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tif ( clipped ) discard;\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn sRGBTransferOETF( value );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform mat3 envMapRotation;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( LEGACY_LIGHTS )\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#else\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_DISPERSION\\n\\tmaterial.dispersion = dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\tfloat dispersion;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvFragDepth = 1.0 + gl_Position.w;\\n\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphinstance_vertex = \"#ifdef USE_INSTANCING_MORPH\\n\\tfloat morphTargetInfluences[MORPHTARGETS_COUNT];\\n\\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\\n\\t}\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\tuniform float morphTargetBaseInfluence;\\n\\t#endif\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\t#endif\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\t\\n\\t\\tfloat lightToPositionLength = length( lightToPosition );\\n\\t\\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\\n\\t\\t\\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\t\\tdp += shadowBias;\\n\\t\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\t\\tshadow = (\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\treturn color;\\n}\\nvec3 NeutralToneMapping( vec3 color ) {\\n\\tconst float StartCompression = 0.8 - 0.04;\\n\\tconst float Desaturation = 0.15;\\n\\tcolor *= toneMappingExposure;\\n\\tfloat x = min( color.r, min( color.g, color.b ) );\\n\\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\\n\\tcolor -= offset;\\n\\tfloat peak = max( color.r, max( color.g, color.b ) );\\n\\tif ( peak < StartCompression ) return color;\\n\\tfloat d = 1. - StartCompression;\\n\\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\\n\\tcolor *= newPeak / peak;\\n\\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\\n\\treturn mix( color, vec3( newPeak ), g );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec4 transmittedLight;\\n\\t\\tvec3 transmittance;\\n\\t\\t#ifdef USE_DISPERSION\\n\\t\\t\\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\\n\\t\\t\\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\\n\\t\\t\\tfor ( int i = 0; i < 3; i ++ ) {\\n\\t\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\\n\\t\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\n\\t\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\n\\t\\t\\t\\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\\n\\t\\t\\t\\ttransmittedLight[ i ] = transmissionSample[ i ];\\n\\t\\t\\t\\ttransmittedLight.a += transmissionSample.a;\\n\\t\\t\\t\\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\\n\\t\\t\\t}\\n\\t\\t\\ttransmittedLight.a /= 3.0;\\n\\t\\t\\n\\t\\t#else\\n\\t\\t\\n\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\t\\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\t\\n\\t\\t#endif\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nuniform mat3 backgroundRotation;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_DISPERSION\\n\\tuniform float dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphinstance_vertex: morphinstance_vertex,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tenvMapRotation: { value: /*@__PURE__*/ new Matrix3() },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 },\n\t\t\tbackgroundRotation: { value: /*@__PURE__*/ new Matrix3() }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tdispersion: { value: 0 },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\nconst _e1$1 = /*@__PURE__*/ new Euler();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction getBackground( scene ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\treturn background;\n\n\t}\n\n\tfunction render( scene ) {\n\n\t\tlet forceClear = false;\n\t\tconst background = getBackground( scene );\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction addToRenderList( renderList, scene ) {\n\n\t\tconst background = getBackground( scene );\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\t_e1$1.copy( scene.backgroundRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1$1.x *= - 1; _e1$1.y *= - 1; _e1$1.z *= - 1;\n\n\t\t\tif ( background.isCubeTexture && background.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1$1.y *= - 1;\n\t\t\t\t_e1$1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) );\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render,\n\t\taddToRenderList: addToRenderList\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, attributes ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tconst state = getBindingState( geometry, program, material );\n\n\t\tif ( currentState !== state ) {\n\n\t\t\tcurrentState = state;\n\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t}\n\n\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\treturn gl.createVertexArray();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\treturn gl.bindVertexArray( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\treturn gl.deleteVertexArray( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tgl.vertexAttribDivisor( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes\n\n\t\t\t\t\tconst integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawArraysInstanced( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ], counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ], counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < primcount.length; i ++ ) {\n\n\t\t\t\tinfo.update( elementCount, mode, primcount[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters, utils ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction textureFormatReadable( textureFormat ) {\n\n\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction textureTypeReadable( textureType ) {\n\n\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) );\n\n\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\ttextureType !== FloatType && ! halfFloatSupportedByExt ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\n\tconst maxSamples = gl.getParameter( gl.MAX_SAMPLES );\n\n\treturn {\n\n\t\tisWebGL2: true, // keeping this for backwards compatibility\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\ttextureFormatReadable: textureFormatReadable,\n\t\ttextureTypeReadable: textureTypeReadable,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\nlet _oldXrEnabled = false;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported equirectangular image size is 64 x 32.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported cube size is 16 x 16.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\tthis._renderer.xr.enabled = _oldXrEnabled;\n\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\t\tconst n = this._lodPlanes.length;\n\n\t\tfor ( let i = 1; i < n; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( n - i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\tconst currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( renderTarget !== undefined ) {\n\n\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function () {\n\n\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\t\t\tgetExtension( 'WEBGL_render_shared_exponent' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\tthis.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ] / bytesPerElement, counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsInstancedWEBGL( mode, counts, 0, type, starts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ];\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < primcount.length; i ++ ) {\n\n\t\t\t\tinfo.update( elementCount, mode, primcount[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet entry = morphTextures.get( geometry );\n\n\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\tlet vertexDataCount = 0;\n\n\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\tlet height = 1;\n\n\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t}\n\n\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\ttexture.type = FloatType;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\t// fill buffer\n\n\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tentry = {\n\t\t\t\tcount: morphTargetsCount,\n\t\t\t\ttexture: texture,\n\t\t\t\tsize: new Vector2( width, height )\n\t\t\t};\n\n\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\tfunction disposeTexture() {\n\n\t\t\t\ttexture.dispose();\n\n\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t}\n\n\t\t//\n\t\tif ( object.isInstancedMesh === true && object.morphTexture !== null ) {\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );\n\n\t\t} else {\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\nemptyShadowTexture.compareFunction = LessEqualCompare;\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tconst emptyTexture2D = ( this.type === gl.SAMPLER_2D_SHADOW ) ? emptyShadowTexture : emptyTexture;\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\tconst encodingPrimaries = ColorManagement.getPrimaries( colorSpace );\n\n\tlet gamutMapping;\n\n\tif ( workingPrimaries === encodingPrimaries ) {\n\n\t\tgamutMapping = '';\n\n\t} else if ( workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries ) {\n\n\t\tgamutMapping = 'LinearDisplayP3ToLinearSRGB';\n\n\t} else if ( workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries ) {\n\n\t\tgamutMapping = 'LinearSRGBToLinearDisplayP3';\n\n\t}\n\n\tswitch ( colorSpace ) {\n\n\t\tcase LinearSRGBColorSpace:\n\t\tcase LinearDisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t\tcase SRGBColorSpace:\n\t\tcase DisplayP3ColorSpace:\n\t\t\treturn [ gamutMapping, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space:', colorSpace );\n\t\t\treturn [ gamutMapping, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\treturn `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}( ${components[ 1 ]}( value ) ); }`;\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase NeutralToneMapping:\n\t\t\ttoneMappingName = 'Neutral';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',\n\t\tparameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map();\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\tprecision ${parameters.precision} sampler3D;\n\tprecision ${parameters.precision} sampler2DArray;\n\tprecision ${parameters.precision} sampler2DShadow;\n\tprecision ${parameters.precision} samplerCubeShadow;\n\tprecision ${parameters.precision} sampler2DArrayShadow;\n\tprecision ${parameters.precision} isampler2D;\n\tprecision ${parameters.precision} isampler3D;\n\tprecision ${parameters.precision} isamplerCube;\n\tprecision ${parameters.precision} isampler2DArray;\n\tprecision ${parameters.precision} usampler2D;\n\tprecision ${parameters.precision} usampler3D;\n\tprecision ${parameters.precision} usamplerCube;\n\tprecision ${parameters.precision} usampler2DArray;\n\t`;\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\t\t\tparameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_MORPH',\n\n\t\t\t'\tuniform sampler2D morphTexture;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.dispersion ? '#define USE_DISPERSION' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Material Name: ' + self.name + '\\n' +\n\t\t\t\t\t\t'Material Type: ' + self.type + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst _activeChannels = new Set();\n\tconst programs = [];\n\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\t_activeChannels.add( value );\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_DISPERSION = material.dispersion > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\t\t\tinstancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\t\t\talphaToCoverage: !! material.alphaToCoverage,\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tdispersion: HAS_DISPERSION,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( !! fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\t\t\tuseLegacyLights: renderer._useLegacyLights,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),\n\t\t\textensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),\n\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\t// the usage of getChannel() determines the active texture channels for this shader\n\n\t\tparameters.vertexUv1s = _activeChannels.has( 1 );\n\t\tparameters.vertexUv2s = _activeChannels.has( 2 );\n\t\tparameters.vertexUv3s = _activeChannels.has( 3 );\n\n\t\t_activeChannels.clear();\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingMorph )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.dispersion )\n\t\t\t_programLayers.enable( 20 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.useLegacyLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.alphaToCoverage )\n\t\t\t_programLayers.enable( 20 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, useLegacyLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( useLegacyLights === true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions ) {\n\n\tconst lights = new WebGLLights( extensions );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init( camera ) {\n\n\t\tstate.camera = camera;\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( useLegacyLights ) {\n\n\t\tlights.setup( lightsArray, useLegacyLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tcamera: null,\n\n\t\tlights: lights,\n\n\t\ttransmissionRenderTarget: {}\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( renderer, objects, capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst activeCubeFace = renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst _state = renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\trenderer.setRenderTarget( shadow.map );\n\t\t\trenderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\trenderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\trenderer.setRenderTarget( shadow.mapPass );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\trenderer.setRenderTarget( shadow.map );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl ) {\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t}\n\n\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tequationToGL[ MinEquation ] = gl.MIN;\n\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _imageDimensions = new Vector2();\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\tconst dimensions = getDimensions( image );\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( dimensions.width > maxSize || dimensions.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( dimensions.width, dimensions.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||\n\t\t\t\t( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) {\n\n\t\t\t\tconst width = Math.floor( scale * dimensions.width );\n\t\t\t\tconst height = Math.floor( scale * dimensions.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture ) {\n\n\t\treturn texture.generateMipmaps && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RG8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RG16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RG32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\tinfo.memory.textures --;\n\n\t\t\t}\n\n\t\t\tproperties.remove( textures[ i ] );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture ) {\n\n\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&\n\t\t\t( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||\n\t\t\ttexture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tlet image = resizeImage( texture.image, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tlet glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tconst levels = getMipLevels( texture, image );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tconst dimensions = getDimensions( mipmaps[ 0 ] );\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tconst dimensions = getDimensions( image );\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tlet levels = getMipLevels( texture, image );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tconst dimensions = getDimensions( cubeImage[ 0 ] );\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\tif ( ! isMultipleRenderTargets ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture );\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst invalidationArrayRead = [];\n\tconst invalidationArrayDraw = [];\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.samples > 0 ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = renderTarget.textures;\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\t\t\t// If MRT we need to remove FBO attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTarget.resolveDepthBuffer ) {\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t\t\t\t// resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799)\n\n\t\t\t\t\t\tif ( renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\t\tif ( supportsInvalidateFramebuffer === true ) {\n\n\t\t\t\t\t\tinvalidationArrayRead.length = 0;\n\t\t\t\t\t\tinvalidationArrayDraw.length = 0;\n\n\t\t\t\t\t\tinvalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false ) {\n\n\t\t\t\t\t\t\tinvalidationArrayRead.push( depthStyle );\n\t\t\t\t\t\t\tinvalidationArrayDraw.push( depthStyle );\n\n\t\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArrayRead );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t} else {\n\n\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction getDimensions( image ) {\n\n\t\tif ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) {\n\n\t\t\t// if intrinsic data are not available, fallback to width/height\n\n\t\t\t_imageDimensions.width = image.naturalWidth || image.width;\n\t\t\t_imageDimensions.height = image.naturalHeight || image.height;\n\n\t\t} else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) {\n\n\t\t\t_imageDimensions.width = image.displayWidth;\n\t\t\t_imageDimensions.height = image.displayHeight;\n\n\t\t} else {\n\n\t\t\t_imageDimensions.width = image.width;\n\t\t\t_imageDimensions.height = image.height;\n\n\t\t}\n\n\t\treturn _imageDimensions;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions ) {\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedInt5999Type ) return gl.UNSIGNED_INT_5_9_9_9_REV;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\t\tif ( p === HalfFloatType ) return gl.HALF_FLOAT;\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC\n\n\t\tif ( p === RGB_ETC1_Format || p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC1_Format || p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) return gl.UNSIGNED_INT_24_8;\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n\nclass WebXRDepthSensing {\n\n\tconstructor() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t\tthis.depthNear = 0;\n\t\tthis.depthFar = 0;\n\n\t}\n\n\tinit( renderer, depthData, renderState ) {\n\n\t\tif ( this.texture === null ) {\n\n\t\t\tconst texture = new Texture();\n\n\t\t\tconst texProps = renderer.properties.get( texture );\n\t\t\ttexProps.__webglTexture = depthData.texture;\n\n\t\t\tif ( ( depthData.depthNear != renderState.depthNear ) || ( depthData.depthFar != renderState.depthFar ) ) {\n\n\t\t\t\tthis.depthNear = depthData.depthNear;\n\t\t\t\tthis.depthFar = depthData.depthFar;\n\n\t\t\t}\n\n\t\t\tthis.texture = texture;\n\n\t\t}\n\n\t}\n\n\trender( renderer, cameraXR ) {\n\n\t\tif ( this.texture !== null ) {\n\n\t\t\tif ( this.mesh === null ) {\n\n\t\t\t\tconst viewport = cameraXR.cameras[ 0 ].viewport;\n\t\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\t\tvertexShader: _occlusion_vertex,\n\t\t\t\t\tfragmentShader: _occlusion_fragment,\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\tdepthColor: { value: this.texture },\n\t\t\t\t\t\tdepthWidth: { value: viewport.z },\n\t\t\t\t\t\tdepthHeight: { value: viewport.w }\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthis.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );\n\n\t\t\t}\n\n\t\t\trenderer.render( this.mesh, cameraXR );\n\n\t\t}\n\n\t}\n\n\treset() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\n\t\tconst depthSensing = new WebXRDepthSensing();\n\t\tconst attributes = gl.getContextAttributes();\n\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\t\tcameraXR.layers.enable( 1 );\n\t\tcameraXR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\tdepthSensing.reset();\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( session.renderState.layers === undefined ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0,\n\t\t\t\t\t\t\tresolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false )\n\t\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tif ( depthSensing.texture !== null ) {\n\n\t\t\t\tcamera.near = depthSensing.depthNear;\n\t\t\t\tcamera.far = depthSensing.depthFar;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t\tcameraL.near = _currentDepthNear;\n\t\t\t\tcameraL.far = _currentDepthFar;\n\t\t\t\tcameraR.near = _currentDepthNear;\n\t\t\t\tcameraR.far = _currentDepthFar;\n\n\t\t\t\tcameraL.updateProjectionMatrix();\n\t\t\t\tcameraR.updateProjectionMatrix();\n\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.hasDepthSensing = function () {\n\n\t\t\treturn depthSensing.texture !== null;\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tconst enabledFeatures = session.enabledFeatures;\n\n\t\t\t\tif ( enabledFeatures && enabledFeatures.includes( 'depth-sensing' ) ) {\n\n\t\t\t\t\tconst depthData = glBinding.getDepthInformation( views[ 0 ] );\n\n\t\t\t\t\tif ( depthData && depthData.isValid && depthData.texture ) {\n\n\t\t\t\t\t\tdepthSensing.init( renderer, depthData, session.renderState );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdepthSensing.render( renderer, cameraXR );\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nconst _e1 = /*@__PURE__*/ new Euler();\nconst _m1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst envMap = materialProperties.envMap;\n\t\tconst envMapRotation = materialProperties.envMapRotation;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\t_e1.copy( envMapRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;\n\n\t\t\tif ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1.y *= - 1;\n\t\t\t\t_e1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tuniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer._useLegacyLights === true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.dispersion > 0 ) {\n\n\t\t\tuniforms.dispersion.value = material.dispersion;\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ); // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t// Calculate the chunk offset\n\t\t\t\t\tconst chunkOffsetUniform = offset % chunkSize;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkOffsetUniform !== 0 && ( chunkSize - chunkOffsetUniform ) < info.boundary ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkOffsetUniform );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = false,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );\n\n\t\t\t}\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// physical lights\n\n\t\tthis._useLegacyLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// camera matrices cache\n\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextName, contextAttributes ) {\n\n\t\t\treturn canvas.getContext( contextName, contextAttributes );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextName = 'webgl2';\n\n\t\t\t\t_gl = getContext( contextName, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextName ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\t\t\textensions.init();\n\n\t\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );\n\n\t\t\tstate = new WebGLState( _gl );\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, attributes );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tif ( object._multiDrawInstances !== null ) {\n\n\t\t\t\t\trenderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\tconst renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;\n\t\t\tif ( renderBackground ) {\n\n\t\t\t\tbackground.addToRenderList( currentRenderList, scene );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t\t// render scene\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\n\t\t\tcurrentRenderState.setupLights( _this._useLegacyLights );\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) {\n\n\t\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\t\trenderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderBackground ) background.render( scene );\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\t\tif ( renderBackground ) background.render( scene );\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector3.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector3\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {\n\n\t\t\t\tcurrentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: 4,\n\t\t\t\t\tstencilBuffer: stencil,\n\t\t\t\t\tresolveDepthBuffer: false,\n\t\t\t\t\tresolveStencilBuffer: false\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\tconst transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];\n\n\t\t\tconst activeViewport = camera.viewport || _currentViewport;\n\t\t\ttransmissionRenderTarget.setSize( activeViewport.z, activeViewport.w );\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\t// Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).\n\t\t\t// Transmission render pass requires viewport to match the transmissionRenderTarget.\n\t\t\tconst currentCameraViewport = camera.viewport;\n\t\t\tif ( camera.viewport !== undefined ) camera.viewport = undefined;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131\n\n\t\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\t\tconst object = renderItem.object;\n\t\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\t\tconst material = renderItem.material;\n\t\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\tif ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\t\t\tmaterialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.instancingMorph = parameters.instancingMorph;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {\n\n\t\t\t\tm_uniforms.envMapIntensity.value = scene.environmentIntensity;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = srcTexture.image.width;\n\t\t\tconst height = srcTexture.image.height;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t\t// As another texture upload may have changed pixelStorei\n\t\t\t// parameters, make sure they are correct for the dstTexture\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\t\tconst width = sourceBox.max.x - sourceBox.min.x;\n\t\t\tconst height = sourceBox.max.y - sourceBox.min.y;\n\t\t\tconst depth = sourceBox.max.z - sourceBox.min.z;\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\tconst unpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst unpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst unpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst unpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst unpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, sourceBox.min.x );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );\n\n\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t} else {\n\n\t\t\t\tif ( dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, unpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, unpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, unpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, unpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\t\tgl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? 'display-p3' : 'srgb';\n\n\t}\n\n\tget useLegacyLights() { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\treturn this._useLegacyLights;\n\n\t}\n\n\tset useLegacyLights( value ) { // @deprecated, r155\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );\n\t\tthis._useLegacyLights = value;\n\n\t}\n\n}\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\t\tthis.backgroundRotation = new Euler();\n\n\t\tthis.environmentIntensity = 1;\n\t\tthis.environmentRotation = new Euler();\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis._updateRange = { offset: 0, count: - 1 };\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tget updateRange() {\n\n\t\twarnOnce( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159\n\t\treturn this._updateRange;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix$1 = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix$1;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\t\tthis.morphTexture = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( drawRange, z ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = drawRange.start;\n\t\titem.count = drawRange.count;\n\t\titem.z = z;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst ID_ATTR_NAME = 'batchId';\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _invMatrixWorld = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\nconst _projScreenMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// @TODO: SkinnedMesh support?\n// @TODO: geometry.groups support?\n// @TODO: geometry.drawRange support?\n// @TODO: geometry.morphAttributes support?\n// @TODO: Support uniform parameter per geometry\n// @TODO: Add an \"optimize\" function to pack geometry and remove data gaps\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxGeometryCount() {\n\n\t\treturn this._maxGeometryCount;\n\n\t}\n\n\tconstructor( maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\tthis._drawRanges = [];\n\t\tthis._reservedRanges = [];\n\n\t\tthis._visibility = [];\n\t\tthis._active = [];\n\t\tthis._bounds = [];\n\n\t\tthis._maxGeometryCount = maxGeometryCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tthis._geometryInitialized = false;\n\t\tthis._geometryCount = 0;\n\t\tthis._multiDrawCounts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxGeometryCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._multiDrawInstances = null;\n\t\tthis._visibilityChanged = true;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\n\t\tthis._initMatricesTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxGeometryCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxGeometryCount = this._maxGeometryCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\tconst indexArray = maxVertexCount > 65536\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tconst idArray = maxGeometryCount > 65536\n\t\t\t\t? new Uint32Array( maxVertexCount )\n\t\t\t\t: new Uint16Array( maxVertexCount );\n\t\t\tgeometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check that the geometry doesn't have a version of our reserved id attribute\n\t\tif ( geometry.getAttribute( ID_ATTR_NAME ) ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry cannot use attribute \"${ ID_ATTR_NAME }\"` );\n\n\t\t}\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst active = this._active;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( i, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst active = this._active;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( active[ i ] === false ) continue;\n\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddGeometry( geometry, vertexCount = - 1, indexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\t// ensure we're not over geometry\n\t\tif ( this._geometryCount >= this._maxGeometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\t// get the necessary range fo the geometry\n\t\tconst reservedRange = {\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t};\n\n\t\tlet lastRange = null;\n\t\tconst reservedRanges = this._reservedRanges;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst bounds = this._bounds;\n\t\tif ( this._geometryCount !== 0 ) {\n\n\t\t\tlastRange = reservedRanges[ reservedRanges.length - 1 ];\n\n\t\t}\n\n\t\tif ( vertexCount === - 1 ) {\n\n\t\t\treservedRange.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexCount = vertexCount;\n\n\t\t}\n\n\t\tif ( lastRange === null ) {\n\n\t\t\treservedRange.vertexStart = 0;\n\n\t\t} else {\n\n\t\t\treservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n\n\t\t}\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tif ( indexCount\t=== - 1 ) {\n\n\t\t\t\treservedRange.indexCount = index.count;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexCount = indexCount;\n\n\t\t\t}\n\n\t\t\tif ( lastRange === null ) {\n\n\t\t\t\treservedRange.indexStart = 0;\n\n\t\t\t} else {\n\n\t\t\t\treservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (\n\t\t\treservedRange.indexStart !== - 1 &&\n\t\t\treservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount ||\n\t\t\treservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\n\t\t// push new visibility states\n\t\tvisibility.push( true );\n\t\tactive.push( true );\n\n\t\t// update id\n\t\tconst geometryId = this._geometryCount;\n\t\tthis._geometryCount ++;\n\n\t\t// initialize matrix information\n\t\t_identityMatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\t// add the reserved range and draw range objects\n\t\treservedRanges.push( reservedRange );\n\t\tdrawRanges.push( {\n\t\t\tstart: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n\t\t\tcount: - 1\n\t\t} );\n\t\tbounds.push( {\n\t\t\tboxInitialized: false,\n\t\t\tbox: new Box3(),\n\n\t\t\tsphereInitialized: false,\n\t\t\tsphere: new Sphere()\n\t\t} );\n\n\t\t// set the id for the geometry\n\t\tconst idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );\n\t\tfor ( let i = 0; i < reservedRange.vertexCount; i ++ ) {\n\n\t\t\tidAttribute.setX( reservedRange.vertexStart + i, geometryId );\n\n\t\t}\n\n\t\tidAttribute.needsUpdate = true;\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( id, geometry ) {\n\n\t\tif ( id >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst reservedRange = this._reservedRanges[ id ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > reservedRange.indexCount ||\n\t\t\tgeometry.attributes.position.count > reservedRange.vertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry over\n\t\tconst vertexStart = reservedRange.vertexStart;\n\t\tconst vertexCount = reservedRange.vertexCount;\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( attributeName === ID_ATTR_NAME ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = vertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, vertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = reservedRange.indexStart;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedRange.indexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, reservedRange.indexCount );\n\n\t\t}\n\n\t\t// store the bounding boxes\n\t\tconst bound = this._bounds[ id ];\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tbound.box.copy( geometry.boundingBox );\n\t\t\tbound.boxInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.boxInitialized = false;\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tbound.sphere.copy( geometry.boundingSphere );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t} else {\n\n\t\t\tbound.sphereInitialized = false;\n\n\t\t}\n\n\t\t// set drawRange count\n\t\tconst drawRange = this._drawRanges[ id ];\n\t\tconst posAttr = geometry.getAttribute( 'position' );\n\t\tdrawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn id;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\t// Note: User needs to call optimize() afterward to pack the data.\n\n\t\tconst active = this._active;\n\t\tif ( geometryId >= active.length || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tactive[ geometryId ] = false;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetInstanceCountAt( id ) {\n\n\t\tif ( this._multiDrawInstances === null ) return null;\n\n\t\treturn this._multiDrawInstances[ id ];\n\n\t}\n\n\tsetInstanceCountAt( id, instanceCount ) {\n\n\t\tif ( this._multiDrawInstances === null ) {\n\n\t\t\tthis._multiDrawInstances = new Int32Array( this._maxGeometryCount ).fill( 1 );\n\n\t\t}\n\n\t\tthis._multiDrawInstances[ id ] = instanceCount;\n\n\t\treturn id;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst bound = this._bounds[ id ];\n\t\tconst box = bound.box;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.boxInitialized === false ) {\n\n\t\t\tbox.makeEmpty();\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tbound.boxInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( box );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( id, target ) {\n\n\t\tconst active = this._active;\n\t\tif ( active[ id ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst bound = this._bounds[ id ];\n\t\tconst sphere = bound.sphere;\n\t\tconst geometry = this.geometry;\n\t\tif ( bound.sphereInitialized === false ) {\n\n\t\t\tsphere.makeEmpty();\n\n\t\t\tthis.getBoundingBoxAt( id, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst drawRange = this._drawRanges[ id ];\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tbound.sphereInitialized = true;\n\n\t\t}\n\n\t\ttarget.copy( sphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( geometryId, matrix ) {\n\n\t\t// @TODO: Map geometryId to index of the arrays because\n\t\t// optimize() can make geometryId mismatch the index\n\n\t\tconst active = this._active;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, geometryId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( geometryId, matrix ) {\n\n\t\tconst active = this._active;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tconst geometryCount = this._geometryCount;\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, geometryId * 16 );\n\n\t}\n\n\tsetVisibleAt( geometryId, value ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tif (\n\t\t\tgeometryId >= geometryCount ||\n\t\t\tactive[ geometryId ] === false ||\n\t\t\tvisibility[ geometryId ] === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvisibility[ geometryId ] = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( geometryId ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst geometryCount = this._geometryCount;\n\n\t\t// return early if the geometry is out of range or not active\n\t\tif ( geometryId >= geometryCount || active[ geometryId ] === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn visibility[ geometryId ];\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst visibility = this._visibility;\n\t\tconst active = this._active;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst geometryCount = this._geometryCount;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryCount; i ++ ) {\n\n\t\t\tif ( ! visibility[ i ] || ! active[ i ] ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst drawRange = drawRanges[ i ];\n\t\t\t_mesh.geometry.setDrawRange( drawRange.start, drawRange.count );\n\n\t\t\t// ge the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( i, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( i, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._drawRanges = source._drawRanges.map( range => ( { ...range } ) );\n\t\tthis._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );\n\n\t\tthis._visibility = source._visibility.slice();\n\t\tthis._active = source._active.slice();\n\t\tthis._bounds = source._bounds.map( bound => ( {\n\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\tbox: bound.box.clone(),\n\n\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\tsphere: bound.sphere.clone()\n\t\t} ) );\n\n\t\tthis._maxGeometryCount = source._maxGeometryCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.slice();\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst active = this._active;\n\t\tconst visibility = this._visibility;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst drawRanges = this._drawRanges;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_projScreenMatrix$2\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_projScreenMatrix$2,\n\t\t\t\trenderer.coordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet count = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_invMatrixWorld.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _invMatrixWorld );\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] && active[ i ] ) {\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst z = _vector$5.distanceTo( _sphere$2.center );\n\t\t\t\t\t\t_renderList.push( drawRanges[ i ], z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ count ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ count ] = item.count;\n\t\t\t\tcount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = visibility.length; i < l; i ++ ) {\n\n\t\t\t\tif ( visibility[ i ] && active[ i ] ) {\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( i, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst range = drawRanges[ i ];\n\t\t\t\t\t\tmultiDrawStarts[ count ] = range.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ count ] = range.count;\n\t\t\t\t\t\tcount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._multiDrawCount = count;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: a,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tobject: object\n\n\t};\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._dispersion = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget dispersion() {\n\n\t\treturn this._dispersion;\n\n\t}\n\n\tset dispersion( value ) {\n\n\t\tif ( this._dispersion > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._dispersion = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.dispersion = source.dispersion;\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name = '', duration = - 1, tracks = [], blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'X-File-Size' ) || response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.dispersion !== undefined ) material.dispersion = json.dispersion;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxGeometryCount = data.maxGeometryCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, - 1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersect( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersect( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersect( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * phi (the polar angle) is measured from the positive y-axis. The positive y-axis is up.\n * theta (the azimuthal angle) is measured from the positive z-axis.\n */\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget { // @deprecated, r162\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tconsole.warn( 'THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the \"count\" parameter to enable MRT.' );\n\n\t\tsuper( width, height, { ...options, count } );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DisplayP3ColorSpace, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearDisplayP3ColorSpace, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, P3Primaries, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, Rec709Primaries, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, createCanvasElement };\n","// Copyright 2024 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {BoxGeometry, BufferAttribute, BufferGeometry, IcosahedronGeometry, Mesh as ThreeMesh, MeshLambertMaterial, MeshNormalMaterial, PerspectiveCamera, PointLight, Scene, WebGLRenderer} from 'three';\n\nimport Module, {Mesh} from './built/manifold';\n\n// Load Manifold WASM library\nconst wasm = await Module();\nwasm.setup();\nconst {Manifold, Mesh} = wasm;\n\n// Define our set of materials\nconst materials = [\n new MeshNormalMaterial({flatShading: true}),\n new MeshLambertMaterial({color: 'red', flatShading: true}),\n new MeshLambertMaterial({color: 'blue', flatShading: true})\n];\nconst result = new ThreeMesh(undefined, materials);\n\n// Set up Manifold IDs corresponding to materials\nconst firstID = Manifold.reserveIDs(materials.length);\n// ids vector is parallel to materials vector - same indexing\nconst ids = [...Array(materials.length)].map((_, idx) => firstID + idx);\n// Build a mapping to get back from ID to material index\nconst id2matIndex = new Map();\nids.forEach((id, idx) => id2matIndex.set(id, idx));\n\n// Set up Three.js scene\nconst scene = new Scene();\nconst camera = new PerspectiveCamera(30, 1, 0.01, 10);\ncamera.position.z = 1;\ncamera.add(new PointLight(0xffffff, 1));\nscene.add(camera);\nscene.add(result);\n\n// Set up Three.js renderer\nconst output = document.querySelector('#output')!;\nconst renderer = new WebGLRenderer({canvas: output, antialias: true});\nconst dim = output.getBoundingClientRect();\nrenderer.setSize(dim.width, dim.height);\nrenderer.setAnimationLoop(function(time: number) {\n result.rotation.x = time / 2000;\n result.rotation.y = time / 1000;\n renderer.render(scene, camera);\n});\n\n// Create input meshes in Three.js\nconst cube = new BoxGeometry(0.2, 0.2, 0.2);\ncube.clearGroups();\ncube.addGroup(0, 18, 0); // First 6 faces colored by normal\ncube.addGroup(18, Infinity, 1); // Rest of faces are red\n\nconst icosahedron = new IcosahedronGeometry(0.16);\nicosahedron.clearGroups();\nicosahedron.addGroup(30, Infinity, 2); // Last faces are blue\nicosahedron.addGroup(0, 30, 0); // First 10 faces colored by normal\n// The above groups are in reversed order to demonstrate the need for sorting.\n\n// Convert Three.js input meshes to Manifolds\nconst manifoldCube = new Manifold(geometry2mesh(cube));\nconst manifoldIcosahedron = new Manifold(geometry2mesh(icosahedron));\n\n// Set up UI for operations\ntype BooleanOp = 'union'|'difference'|'intersection';\n\nfunction csg(operation: BooleanOp) {\n result.geometry?.dispose();\n result.geometry = mesh2geometry(\n Manifold[operation](manifoldCube, manifoldIcosahedron).getMesh());\n}\n\ncsg('union');\nconst selectElement = document.querySelector('select')!;\nselectElement.onchange = function() {\n csg(selectElement.value as BooleanOp);\n};\n\n// Convert Three.js BufferGeometry to Manifold Mesh\nfunction geometry2mesh(geometry: BufferGeometry) {\n // Only using position in this sample for simplicity. Can interleave any other\n // desired attributes here such as UV, normal, etc.\n const vertProperties = geometry.attributes.position.array as Float32Array;\n // Manifold only uses indexed geometry, so generate an index if necessary.\n const triVerts = geometry.index != null ?\n geometry.index.array as Uint32Array :\n new Uint32Array(vertProperties.length / 3).map((_, idx) => idx);\n // Create a triangle run for each group (material) - akin to a draw call.\n const starts = [...Array(geometry.groups.length)].map(\n (_, idx) => geometry.groups[idx].start);\n // Map the materials to ID.\n const originalIDs = [...Array(geometry.groups.length)].map(\n (_, idx) => ids[geometry.groups[idx].materialIndex!]);\n // List the runs in sequence.\n const indices = Array.from(starts.keys())\n indices.sort((a, b) => starts[a] - starts[b])\n const runIndex = new Uint32Array(indices.map(i => starts[i]));\n const runOriginalID = new Uint32Array(indices.map(i => originalIDs[i]));\n // Create the MeshGL for I/O with Manifold library.\n const mesh =\n new Mesh({numProp: 3, vertProperties, triVerts, runIndex, runOriginalID});\n // Automatically merge vertices with nearly identical positions to create a\n // Manifold. This only fills in the mergeFromVert and mergeToVert vectors -\n // these are automatically filled in for any mesh returned by Manifold. These\n // are necessary because GL drivers require duplicate verts when any\n // properties change, e.g. a UV boundary or sharp corner.\n mesh.merge();\n return mesh;\n}\n\n// Convert Manifold Mesh to Three.js BufferGeometry\nfunction mesh2geometry(mesh: Mesh) {\n const geometry = new BufferGeometry();\n // Assign buffers\n geometry.setAttribute(\n 'position', new BufferAttribute(mesh.vertProperties, 3));\n geometry.setIndex(new BufferAttribute(mesh.triVerts, 1));\n // Create a group (material) for each ID. Note that there may be multiple\n // triangle runs returned with the same ID, though these will always be\n // sequential since they are sorted by ID. In this example there are two runs\n // for the MeshNormalMaterial, one corresponding to each input mesh that had\n // this ID. This allows runTransform to return the total transformation matrix\n // applied to each triangle run from its input mesh - even after many\n // consecutive operations.\n let id = mesh.runOriginalID[0];\n let start = mesh.runIndex[0];\n for (let run = 0; run < mesh.numRun; ++run) {\n const nextID = mesh.runOriginalID[run + 1];\n if (nextID !== id) {\n const end = mesh.runIndex[run + 1];\n geometry.addGroup(start, end - start, id2matIndex.get(id));\n id = nextID;\n start = end;\n }\n }\n return geometry;\n}\n"],"names":["REVISION","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","ConstantColorFactor","OneMinusConstantColorFactor","ConstantAlphaFactor","OneMinusConstantAlphaFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","AgXToneMapping","NeutralToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","UnsignedInt5999Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RGB_BPTC_SIGNED_Format","RGB_BPTC_UNSIGNED_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","LinearTransfer","SRGBTransfer","Rec709Primaries","P3Primaries","KeepStencilOp","AlwaysStencilFunc","NeverCompare","LessCompare","EqualCompare","LessEqualCompare","GreaterCompare","NotEqualCompare","GreaterEqualCompare","AlwaysCompare","StaticDrawUsage","GLSL3","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","l","_lut","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","value","min","max","euclideanModulo","n","m","lerp","x","y","t","denormalize","normalize","Vector2","scalar","v","s","a","b","e","minVal","maxVal","length","denominator","theta","dx","dy","alpha","v1","v2","offset","attribute","center","angle","c","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","_m3","matrix","arrayNeedsUint32","createElementNS","name","createCanvasElement","canvas","_cache","warnOnce","message","LINEAR_SRGB_TO_LINEAR_DISPLAY_P3","LINEAR_DISPLAY_P3_TO_LINEAR_SRGB","COLOR_SPACES","color","SUPPORTED_WORKING_COLOR_SPACES","ColorManagement","colorSpace","sourceColorSpace","targetColorSpace","sourceToReference","targetFromReference","SRGBToLinear","LinearToSRGB","_canvas","ImageUtils","image","context","imageData","data","_sourceId","Source","meta","isRootObject","output","url","serializeImage","_textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","source","uv","Vector4","z","w","q","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","RenderTarget","width","height","options","texture","count","depth","il","WebGLRenderTarget","DataArrayTexture","Data3DTexture","Quaternion","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","cos","dir","sqrSin","sin","len","tDir","quaternion","euler","update","order","c1","c2","c3","s1","s2","s3","axis","halfAngle","trace","vFrom","vTo","step","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","theta1","theta2","r1","r2","callback","Vector3","_quaternion$4","vx","vy","vz","qx","qy","qz","qw","tz","camera","ax","ay","az","bx","by","bz","planeNormal","_vector$c","normal","dz","radius","phi","sinPhiRadius","sz","u","Box3","_vector$b","points","size","halfSize","object","precise","box","target","point","vector","geometry","positionAttribute","_box$4","children","sphere","plane","triangle","_center","_extents","_v0$2","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","_testAxis","v0","extents","j","p0","p1","p2","_box$3","_v1$6","_v2$3","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","lengthSq","delta","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","b1","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","_zero","_one","eye","up","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","position","scale","x2","y2","z2","wx","wy","wz","_m1$4","invSX","invSY","invSZ","left","right","top","bottom","near","far","coordinateSystem","zInv","_matrix$2","_quaternion$3","Euler","newOrder","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$3","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","_childaddedEvent","_childremovedEvent","Object3D","onRotationChange","onQuaternionChange","distance","parent","id","result","force","child","updateParents","updateChildren","bound","serialize","library","element","parameters","shapes","shape","uuids","animation","geometries","extractFromCache","materials","textures","images","skeletons","animations","nodes","cache","values","key","recursive","_v0$1","_v1$3","_v2$2","_v3$2","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","p3","v3","i0","i1","i2","p","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","hue2rgb","Color","hex","style","handleAlpha","string","components","_color","hue","saturation","lightness","color1","color2","_materialId","Material","newValue","currentValue","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","normalized","start","index1","index2","component","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$2","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$8","BufferGeometry","materialIndex","normalMatrix","tangent","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","attributes","normalAttribute","uvAttribute","tangentAttribute","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","groups","group","tmp2","n2","handleVertex","pA","pB","pC","nA","nB","nC","cb","ab","normals","convertBufferAttribute","indices","array2","geometry2","newAttribute","morphAttributes","morphArray","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_vA$1","_vB$1","_vC$1","_tempA","_morphA","_uvA$1","_uvB$1","_uvC$1","_normalA","_normalB","_normalC","_intersectionPoint","_intersectionPointWorld","material","keys","ml","morphPosition","morphInfluences","influence","raycaster","intersects","matrixWorld","rayLocalSpace","intersection","uv1","drawRange","groupMaterial","end","checkGeometryIntersection","checkIntersection$1","intersect","face","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","uvs","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","iy","ix","cloneUniforms","src","property","mergeUniforms","uniforms","merged","cloneUniformsGroups","getUnlitUniformColorSpace","renderer","currentRenderTarget","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","_v3$1","_minTarget","_maxTarget","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","minTarget","maxTarget","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","cameras","scene","activeMipmapLevel","currentActiveCubeFace","currentActiveMipmapLevel","currentXrEnabled","generateMipmaps","CubeTexture","WebGLCubeRenderTarget","shader","mesh","Mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","referencePoint","_sphere$5","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","gl","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","updateRanges","range","get","remove","cached","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphahash_fragment","alphahash_pars_fragment","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","batching_pars_vertex","batching_vertex","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","colorspace_fragment","colorspace_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphinstance_vertex","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","opaque_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","worldpos_vertex","vertex$h","fragment$h","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","UniformsLib","ShaderLib","_rgb","_e1$1","_m1$1","WebGLBackground","cubemaps","cubeuvmaps","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","getBackground","background","render","forceClear","setClear","environmentBlendMode","addToRenderList","renderList","WebGLBindingStates","maxVertexAttributes","bindingStates","defaultState","createBindingState","currentState","forceUpdate","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","wireframe","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","integer","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","renderMultiDraw","starts","counts","drawCount","extension","elementCount","renderMultiDrawInstances","WebGLCapabilities","utils","maxAnisotropy","getMaxAnisotropy","textureFormatReadable","textureFormat","textureTypeReadable","textureType","halfFloatSupportedByExt","getMaxPrecision","precision","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","maxSamples","WebGLClipping","properties","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","enabled","projectPlanes","useCache","clipIntersection","clipShadows","materialProperties","resetGlobalState","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLCubeMaps","mapTextureMapping","cubemap","onTextureDispose","OrthographicCamera","scaleW","scaleH","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","_oldActiveCubeFace","_oldActiveMipmapLevel","_oldXrEnabled","PHI","INV_PHI","_axisDirections","PMREMGenerator","sigma","cubeUVRenderTarget","equirectangular","_getCubemapMaterial","_getEquirectMaterial","cubeSize","outputTarget","_setViewport","params","_createRenderTarget","_lodMax","_createPlanes","_getBlurShader","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","toneMapping","backgroundMaterial","backgroundBox","useSolidColor","col","isCubeTexture","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","samples","weights","sum","weight","outputSize","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","currentPMREMVersion","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","WebGLMorphtargets","capabilities","morphTextures","morph","objectInfluences","morphTargetsCount","entry","disposeTexture","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","morphInfluencesSum","morphBaseInfluence","WebGLObjects","updateMap","buffergeometry","onInstancedMeshDispose","skeleton","instancedMesh","DepthTexture","emptyTexture","emptyShadowTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","unit","emptyTexture2D","setValueT3D1","setValueT6","setValueT2DArray1","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","COMPLETION_STATUS_KHR","programIdCount","handleSource","errorLine","lines","lines2","from","to","getEncodingComponents","workingPrimaries","encodingPrimaries","gamutMapping","getShaderErrors","status","errors","errorMatches","getTexelEncodingFunction","functionName","getToneMappingFunction","toneMappingName","generateVertexExtensions","filterEmptyLine","generateDefines","defines","chunks","fetchAttributeLocations","locationSize","replaceLightNums","numSpotLightCoords","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","shaderChunkMap","include","newInclude","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","WebGLProgram","cacheKey","vertexShader","fragmentShader","envMapCubeUVSize","customVertexExtensions","customDefines","prefixVertex","prefixFragment","versionString","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","onFirstUse","self","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","programReady","_id$1","WebGLShaderCache","vertexShaderStage","fragmentShaderStage","materialShaders","shaderStage","set","code","stage","WebGLShaderStage","WebGLPrograms","clipping","_programLayers","_customShaders","_activeChannels","programs","SUPPORTS_VERTEX_TEXTURES","shaderIDs","getChannel","getParameters","lights","shadows","fog","environment","envMap","envMapCubeUVHeight","shaderID","morphTextureStride","customVertexShaderID","customFragmentShaderID","IS_INSTANCEDMESH","IS_BATCHEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_DISPERSION","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_ALPHAHASH","HAS_EXTENSIONS","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","getUniforms","acquireProgram","pl","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","map","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","transparent","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","useLegacyLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","numSpotShadowsWithMaps","numLightProbes","scaleFactor","intensity","shadowMap","shadow","shadowUniforms","hash","setupView","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","MeshDepthMaterial","MeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowSide","shadowMaterialVertical","shadowMaterialHorizontal","fullScreenTri","fullScreenMesh","_previousType","activeCubeFace","_state","toVSM","fromVSM","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterial","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","onMaterialDispose","shadowCamera","k","kl","depthMaterial","uuid","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","uboBindings","uboProgramMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentBlendColor","currentBlendAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","dimensions","emptyTextures","setFlipSided","setCullFace","setBlending","bindFramebuffer","framebuffer","drawBuffers","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","blendColor","blendAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","compressedTexImage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","compressedTexSubImage3D","texStorage2D","texStorage3D","texImage2D","texImage3D","scissor","updateUBOMapping","uniformsGroup","blockIndex","uniformBlockBinding","WebGLTextures","_gl","multisampledRTTExt","supportsInvalidateFramebuffer","_imageDimensions","_videoTextures","_sources","useOffscreenCanvas","createCanvas","resizeImage","needsNewCanvas","maxSize","getDimensions","textureNeedsGenerateMipmaps","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","forceLinearTransfer","internalFormat","transfer","getMipLevels","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","webglTextures","deleteTexture","renderTargetProperties","level","attachmentProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","getTextureCacheKey","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","compareToGL","setTextureParameters","initTexture","forceUpload","textureCacheKey","sourceProperties","texturePrimaries","unpackConversion","verifyColorSpace","glInternalFormat","mipmap","mipmaps","useTexStorage","allocateMemory","dataReady","levels","isCompressed","isDataTexture","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","useMultisampledRTT","getRenderTargetSamples","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","glTextureType","updateRenderTargetMipmap","invalidationArrayRead","invalidationArrayDraw","updateMultisampleRenderTarget","mask","depthStyle","WebGLUtils","convert","ArrayCamera","Group","_moveEvent","WebXRController","inputSource","hand","inputjoint","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","jointPose","joint","indexTip","thumbTip","distanceToPinch","threshold","_occlusion_vertex","_occlusion_fragment","WebXRDepthSensing","depthData","texProps","cameraXR","WebXRManager","session","framebufferScaleFactor","referenceSpaceType","foveation","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","depthSensing","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","currentSize","currentPixelRatio","cameraL","cameraR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","controllerIndex","onSessionEnd","onInputSourcesChange","space","layerInit","depthFormat","depthType","glDepthFormat","projectionlayerInit","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","updateUserCamera","onAnimationFrameCallback","views","cameraXRNeedsUpdate","glSubImage","enabledFeatures","_e1","_m1","WebGLMaterials","refreshTransformUniform","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","refreshUniformsToon","refreshUniformsPhong","refreshUniformsStandard","refreshUniformsPhysical","refreshUniformsMatcap","refreshUniformsDistance","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","envMapRotation","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","bind","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","uniformArray","hasUniformChanged","arrayOffset","getUniformSize","indexArray","indexString","cachedObject","chunkSize","chunkOffsetUniform","chunkOffset","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","_alpha","uintClearColor","intClearColor","currentRenderList","currentRenderState","renderListStack","renderStateStack","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_currentClearColor","_currentClearAlpha","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextName","contextAttributes","onContextLost","onContextRestore","onContextCreationError","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","uniformsGroups","initGLContext","xr","updateStyle","boolean","method","bits","isIntegerFormat","targetFormat","targetType","isUnsignedType","onXRSessionStart","onXRSessionEnd","infoAutoReset","shadowMapEnabled","shadowMapAutoUpdate","shadowMapNeedsUpdate","shadowMapType","deallocateMaterial","releaseMaterialProgramReferences","setProgram","rangeFactor","drawStart","drawEnd","lineWidth","maxInstanceCount","prepareMaterial","getProgram","targetScene","material2","resolve","checkMaterialsReady","projectObject","renderBackground","opaqueObjects","transmissiveObjects","camera2","renderTransmissionPass","renderScene","sortObjects","transparentObjects","renderObjects","activeViewport","currentToneMapping","currentCameraViewport","renderTargetNeedsUpdate","currentSide","overrideMaterial","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","materialNeedsLights","getUniformList","progUniforms","vertexAlphas","vertexTangents","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","markUniformsLightsNeedsUpdate","defaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","__webglFramebuffer","layer","activeCubeFaceIndex","levelScale","srcTexture","dstTexture","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","Scene","PolyhedronGeometry","detail","vertexBuffer","uvBuffer","subdivide","applyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","IcosahedronGeometry","MeshNormalMaterial","MeshLambertMaterial","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","shadowMatrix","viewportIndex","_lightPositionWorld","_lookTarget","PointLightShadow","PointLight","decay","power","wasm","Module","Manifold","ThreeMesh","firstID","ids","_","idx","id2matIndex","dim","cube","icosahedron","manifoldCube","geometry2mesh","manifoldIcosahedron","csg","operation","mesh2geometry","selectElement","vertProperties","triVerts","originalIDs","runIndex","runOriginalID","run","nextID"],"mappings":"uEAAA;AAAA;AAAA;AAAA;AAAA,GAKA,MAAMA,GAAW,MAIXC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAGhBC,GAAe,EACfC,GAAmB,EACnBC,GAAe,EACfC,GAAY,EACZC,GAAW,EACXC,GAAa,EACbC,GAAa,EACbC,GAAiB,EACjBC,GAAmB,EACnBC,GAAsB,EACtBC,GAAmB,EACnBC,GAAiB,EACjBC,GAAc,IACdC,GAAmB,IACnBC,GAA0B,IAC1BC,GAAc,IACdC,GAAc,IACdC,GAAa,IACbC,GAAY,IACZC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAiB,IACjBC,GAAyB,IACzBC,GAAyB,IACzBC,GAAsB,IACtBC,GAA8B,IAC9BC,GAAsB,IACtBC,GAA8B,IAC9BC,GAAa,EACbC,GAAc,EACdC,GAAY,EACZC,GAAiB,EACjBC,GAAa,EACbC,GAAoB,EACpBC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAe,EACfC,GAAe,EACfC,GAAgB,EAChBC,GAAoB,EACpBC,GAAsB,EACtBC,GAAoB,EACpBC,GAAwB,EACxBC,GAAoB,EACpBC,GAAiB,EACjBC,GAAqB,EAIrBC,GAAY,IACZC,GAAwB,IACxBC,GAAwB,IACxBC,GAAmC,IACnCC,GAAmC,IACnCC,GAA0B,IAC1BC,GAAiB,IACjBC,GAAsB,KACtBC,GAAyB,KACzBC,GAAgB,KAChBC,GAA6B,KAE7BC,GAA4B,KAE5BC,GAAe,KACfC,GAA4B,KAE5BC,GAA2B,KAE3BC,GAAmB,KACnBC,GAAW,KACXC,GAAY,KACZC,GAAoB,KACpBC,GAAU,KACVC,GAAkB,KAClBC,GAAY,KACZC,GAAgB,KAChBC,GAAwB,KACxBC,GAAwB,KACxBC,GAAqB,KACrBC,GAAsB,MACtBC,GAAc,KACdC,GAAY,KACZC,GAAa,KACbC,GAAkB,KAClBC,GAAuB,KACvBC,GAAc,KACdC,GAAqB,KACrBC,GAAY,KACZC,GAAmB,KACnBC,GAAW,KACXC,GAAkB,KAClBC,GAAoB,KAEpBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAA0B,MAC1BC,GAA0B,MAC1BC,GAA2B,MAC3BC,GAA2B,MAC3BC,GAAkB,MAClBC,GAAkB,MAClBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAuB,MACvBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAwB,MACxBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAyB,MACzBC,GAAmB,MACnBC,GAAyB,MACzBC,GAA2B,MAC3BC,GAAmB,MACnBC,GAA0B,MAC1BC,GAAyB,MACzBC,GAAgC,MAehCC,GAAoB,KACpBC,GAAmB,KACnBC,GAAwB,EACxBC,GAAuB,EAGvBC,GAAe,GACfC,GAAiB,OACjBC,GAAuB,cACvBC,GAAsB,aACtBC,GAA4B,oBAE5BC,GAAiB,SACjBC,GAAe,OAEfC,GAAkB,SAClBC,GAAc,KAGdC,GAAgB,KAehBC,GAAoB,IAEpBC,GAAe,IACfC,GAAc,IACdC,GAAe,IACfC,GAAmB,IACnBC,GAAiB,IACjBC,GAAkB,IAClBC,GAAsB,IACtBC,GAAgB,IAEhBC,GAAkB,MAWlBC,GAAQ,SAERC,GAAwB,IACxBC,GAAyB,KAM/B,MAAMC,EAAgB,CAErB,iBAAkBC,EAAMC,EAAW,CAE7B,KAAK,aAAe,SAAY,KAAK,WAAa,CAAA,GAEvD,MAAMC,EAAY,KAAK,WAElBA,EAAWF,CAAM,IAAK,SAE1BE,EAAWF,CAAM,EAAG,IAIhBE,EAAWF,CAAM,EAAC,QAASC,CAAQ,IAAO,IAE9CC,EAAWF,CAAI,EAAG,KAAMC,CAAQ,CAIjC,CAED,iBAAkBD,EAAMC,EAAW,CAElC,GAAK,KAAK,aAAe,OAAY,MAAO,GAE5C,MAAMC,EAAY,KAAK,WAEvB,OAAOA,EAAWF,KAAW,QAAaE,EAAWF,CAAM,EAAC,QAASC,KAAe,EAEpF,CAED,oBAAqBD,EAAMC,EAAW,CAErC,GAAK,KAAK,aAAe,OAAY,OAGrC,MAAME,EADY,KAAK,WACUH,GAEjC,GAAKG,IAAkB,OAAY,CAElC,MAAMC,EAAQD,EAAc,QAASF,CAAQ,EAExCG,IAAU,IAEdD,EAAc,OAAQC,EAAO,EAI9B,CAED,CAED,cAAeC,EAAQ,CAEtB,GAAK,KAAK,aAAe,OAAY,OAGrC,MAAMF,EADY,KAAK,WACUE,EAAM,IAAI,EAE3C,GAAKF,IAAkB,OAAY,CAElCE,EAAM,OAAS,KAGf,MAAMC,EAAQH,EAAc,MAAO,CAAC,EAEpC,QAAUI,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,IAEzCD,EAAOC,CAAG,EAAC,KAAM,KAAMF,CAAK,EAI7BA,EAAM,OAAS,IAEf,CAED,CAEF,CAEA,MAAMI,GAAO,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAKngDC,GAAU,KAAK,GAAK,IACpBC,GAAU,IAAM,KAAK,GAG3B,SAASC,IAAe,CAEvB,MAAMC,EAAK,KAAK,OAAM,EAAK,WAAa,EAClCC,EAAK,KAAK,OAAM,EAAK,WAAa,EAClCC,EAAK,KAAK,OAAM,EAAK,WAAa,EAClCC,EAAK,KAAK,OAAM,EAAK,WAAa,EAOxC,OANaP,GAAMI,EAAK,GAAM,EAAGJ,GAAMI,GAAM,EAAI,GAAI,EAAKJ,GAAMI,GAAM,GAAK,GAAM,EAAGJ,GAAMI,GAAM,GAAK,GAAI,EAAK,IAC5GJ,GAAMK,EAAK,KAASL,GAAMK,GAAM,EAAI,GAAM,EAAG,IAAML,GAAMK,GAAM,GAAK,GAAO,EAAM,EAAGL,GAAMK,GAAM,GAAK,GAAI,EAAK,IAC9GL,GAAMM,EAAK,GAAO,GAAI,EAAKN,GAAMM,GAAM,EAAI,GAAM,EAAG,IAAMN,GAAMM,GAAM,GAAK,GAAI,EAAKN,GAAMM,GAAM,GAAK,GAAM,EAC3GN,GAAMO,EAAK,GAAM,EAAGP,GAAMO,GAAM,EAAI,GAAM,EAAGP,GAAMO,GAAM,GAAK,GAAM,EAAGP,GAAMO,GAAM,GAAK,MAG9E,aAEb,CAEA,SAASC,GAAOC,EAAOC,EAAKC,EAAM,CAEjC,OAAO,KAAK,IAAKD,EAAK,KAAK,IAAKC,EAAKF,CAAK,EAE3C,CAIA,SAASG,GAAiBC,EAAGC,EAAI,CAEhC,OAAWD,EAAIC,EAAMA,GAAMA,CAE5B,CAyBA,SAASC,GAAMC,EAAGC,EAAGC,EAAI,CAExB,OAAS,EAAIA,GAAMF,EAAIE,EAAID,CAE5B,CAmKA,SAASE,GAAaV,EAAOZ,EAAQ,CAEpC,OAASA,EAAM,YAAW,CAEzB,KAAK,aAEJ,OAAOY,EAER,KAAK,YAEJ,OAAOA,EAAQ,WAEhB,KAAK,YAEJ,OAAOA,EAAQ,MAEhB,KAAK,WAEJ,OAAOA,EAAQ,IAEhB,KAAK,WAEJ,OAAO,KAAK,IAAKA,EAAQ,WAAc,EAAK,EAE7C,KAAK,WAEJ,OAAO,KAAK,IAAKA,EAAQ,MAAS,EAAK,EAExC,KAAK,UAEJ,OAAO,KAAK,IAAKA,EAAQ,IAAO,EAAK,EAEtC,QAEC,MAAM,IAAI,MAAO,0BAElB,CAEF,CAEA,SAASW,GAAWX,EAAOZ,EAAQ,CAElC,OAASA,EAAM,YAAW,CAEzB,KAAK,aAEJ,OAAOY,EAER,KAAK,YAEJ,OAAO,KAAK,MAAOA,EAAQ,UAAY,EAExC,KAAK,YAEJ,OAAO,KAAK,MAAOA,EAAQ,KAAO,EAEnC,KAAK,WAEJ,OAAO,KAAK,MAAOA,EAAQ,GAAK,EAEjC,KAAK,WAEJ,OAAO,KAAK,MAAOA,EAAQ,UAAY,EAExC,KAAK,WAEJ,OAAO,KAAK,MAAOA,EAAQ,KAAO,EAEnC,KAAK,UAEJ,OAAO,KAAK,MAAOA,EAAQ,GAAK,EAEjC,QAEC,MAAM,IAAI,MAAO,0BAElB,CAEF,CA6BA,MAAMY,EAAQ,CAEb,YAAaL,EAAI,EAAGC,EAAI,EAAI,CAE3BI,GAAQ,UAAU,UAAY,GAE9B,KAAK,EAAIL,EACT,KAAK,EAAIC,CAET,CAED,IAAI,OAAQ,CAEX,OAAO,KAAK,CAEZ,CAED,IAAI,MAAOR,EAAQ,CAElB,KAAK,EAAIA,CAET,CAED,IAAI,QAAS,CAEZ,OAAO,KAAK,CAEZ,CAED,IAAI,OAAQA,EAAQ,CAEnB,KAAK,EAAIA,CAET,CAED,IAAKO,EAAGC,EAAI,CAEX,YAAK,EAAID,EACT,KAAK,EAAIC,EAEF,IAEP,CAED,UAAWK,EAAS,CAEnB,YAAK,EAAIA,EACT,KAAK,EAAIA,EAEF,IAEP,CAED,KAAMN,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,KAAMC,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,aAActB,EAAOc,EAAQ,CAE5B,OAASd,EAAK,CAEb,IAAK,GAAG,KAAK,EAAIc,EAAO,MACxB,IAAK,GAAG,KAAK,EAAIA,EAAO,MACxB,QAAS,MAAM,IAAI,MAAO,0BAA4Bd,CAAK,CAE3D,CAED,OAAO,IAEP,CAED,aAAcA,EAAQ,CAErB,OAASA,EAAK,CAEb,IAAK,GAAG,OAAO,KAAK,EACpB,IAAK,GAAG,OAAO,KAAK,EACpB,QAAS,MAAM,IAAI,MAAO,0BAA4BA,CAAK,CAE3D,CAED,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,EAAG,KAAK,EAE1C,CAED,KAAM4B,EAAI,CAET,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EAEJ,IAEP,CAED,IAAKA,EAAI,CAER,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,UAAWC,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,WAAYC,EAAGC,EAAI,CAElB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,gBAAiBH,EAAGC,EAAI,CAEvB,YAAK,GAAKD,EAAE,EAAIC,EAChB,KAAK,GAAKD,EAAE,EAAIC,EAET,IAEP,CAED,IAAKD,EAAI,CAER,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,UAAWC,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,WAAYC,EAAGC,EAAI,CAElB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,SAAUH,EAAI,CAEb,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,eAAgBD,EAAS,CAExB,YAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,OAAQC,EAAI,CAEX,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,aAAcD,EAAS,CAEtB,OAAO,KAAK,eAAgB,EAAIA,CAAM,CAEtC,CAED,aAAcR,EAAI,CAEjB,MAAME,EAAI,KAAK,EAAGC,EAAI,KAAK,EACrBU,EAAIb,EAAE,SAEZ,YAAK,EAAIa,EAAG,CAAG,EAAGX,EAAIW,EAAG,GAAMV,EAAIU,EAAG,CAAC,EACvC,KAAK,EAAIA,EAAG,CAAG,EAAGX,EAAIW,EAAG,GAAMV,EAAIU,EAAG,CAAC,EAEhC,IAEP,CAED,IAAKJ,EAAI,CAER,YAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAEtB,IAEP,CAED,IAAKA,EAAI,CAER,YAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAEtB,IAEP,CAED,MAAOb,EAAKC,EAAM,CAIjB,YAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EACnD,KAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EAE5C,IAEP,CAED,YAAaiB,EAAQC,EAAS,CAE7B,YAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EACrD,KAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EAE9C,IAEP,CAED,YAAanB,EAAKC,EAAM,CAEvB,MAAMmB,EAAS,KAAK,SAEpB,OAAO,KAAK,aAAcA,GAAU,CAAG,EAAC,eAAgB,KAAK,IAAKpB,EAAK,KAAK,IAAKC,EAAKmB,CAAM,CAAI,CAAA,CAEhG,CAED,OAAQ,CAEP,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,MAAO,CAEN,YAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAEnB,IAEP,CAED,OAAQ,CAEP,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,aAAc,CAEb,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,QAAS,CAER,YAAK,EAAI,CAAE,KAAK,EAChB,KAAK,EAAI,CAAE,KAAK,EAET,IAEP,CAED,IAAKP,EAAI,CAER,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CAEjC,CAED,MAAOA,EAAI,CAEV,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CAEjC,CAED,UAAW,CAEV,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAEvC,CAED,QAAS,CAER,OAAO,KAAK,KAAM,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAC,CAEnD,CAED,iBAAkB,CAEjB,OAAO,KAAK,IAAK,KAAK,CAAC,EAAK,KAAK,IAAK,KAAK,EAE3C,CAED,WAAY,CAEX,OAAO,KAAK,aAAc,KAAK,OAAQ,GAAI,CAAC,CAE5C,CAED,OAAQ,CAMP,OAFc,KAAK,MAAO,CAAE,KAAK,EAAG,CAAE,KAAK,GAAM,KAAK,EAItD,CAED,QAASA,EAAI,CAEZ,MAAMQ,EAAc,KAAK,KAAM,KAAK,WAAaR,EAAE,SAAQ,GAE3D,GAAKQ,IAAgB,EAAI,OAAO,KAAK,GAAK,EAE1C,MAAMC,EAAQ,KAAK,IAAKT,CAAC,EAAKQ,EAI9B,OAAO,KAAK,KAAMvB,GAAOwB,EAAO,GAAK,CAAC,EAEtC,CAED,WAAYT,EAAI,CAEf,OAAO,KAAK,KAAM,KAAK,kBAAmBA,CAAG,CAAA,CAE7C,CAED,kBAAmBA,EAAI,CAEtB,MAAMU,EAAK,KAAK,EAAIV,EAAE,EAAGW,EAAK,KAAK,EAAIX,EAAE,EACzC,OAAOU,EAAKA,EAAKC,EAAKA,CAEtB,CAED,oBAAqBX,EAAI,CAExB,OAAO,KAAK,IAAK,KAAK,EAAIA,EAAE,CAAC,EAAK,KAAK,IAAK,KAAK,EAAIA,EAAE,CAAC,CAExD,CAED,UAAWO,EAAS,CAEnB,OAAO,KAAK,UAAS,EAAG,eAAgBA,CAAM,CAE9C,CAED,KAAMP,EAAGY,EAAQ,CAEhB,YAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAC7B,KAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAEtB,IAEP,CAED,YAAaC,EAAIC,EAAIF,EAAQ,CAE5B,YAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAClC,KAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAE3B,IAEP,CAED,OAAQZ,EAAI,CAEX,OAAWA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,CAE9C,CAED,UAAW1B,EAAOyC,EAAS,EAAI,CAE9B,YAAK,EAAIzC,EAAOyC,GAChB,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAEnB,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,OAAAzC,EAAOyC,CAAM,EAAK,KAAK,EACvBzC,EAAOyC,EAAS,GAAM,KAAK,EAEpBzC,CAEP,CAED,oBAAqB0C,EAAW5C,EAAQ,CAEvC,YAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAEvB,IAEP,CAED,aAAc6C,EAAQC,EAAQ,CAE7B,MAAMC,EAAI,KAAK,IAAKD,CAAK,EAAIjB,EAAI,KAAK,IAAKiB,GAErCzB,EAAI,KAAK,EAAIwB,EAAO,EACpBvB,EAAI,KAAK,EAAIuB,EAAO,EAE1B,YAAK,EAAIxB,EAAI0B,EAAIzB,EAAIO,EAAIgB,EAAO,EAChC,KAAK,EAAIxB,EAAIQ,EAAIP,EAAIyB,EAAIF,EAAO,EAEzB,IAEP,CAED,QAAS,CAER,YAAK,EAAI,KAAK,SACd,KAAK,EAAI,KAAK,SAEP,IAEP,CAED,EAAG,OAAO,WAAa,CAEtB,MAAM,KAAK,EACX,MAAM,KAAK,CAEX,CAEF,CAEA,MAAMG,EAAQ,CAEb,YAAaC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAM,CAE1DT,GAAQ,UAAU,UAAY,GAE9B,KAAK,SAAW,CAEf,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,CAET,EAEOC,IAAQ,QAEZ,KAAK,IAAKA,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,CAAG,CAItD,CAED,IAAKR,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAM,CAElD,MAAMC,EAAK,KAAK,SAEhB,OAAAA,EAAI,CAAC,EAAKT,EAAKS,EAAI,GAAMN,EAAKM,EAAI,CAAC,EAAKH,EACxCG,EAAI,CAAC,EAAKR,EAAKQ,EAAI,GAAML,EAAKK,EAAI,CAAC,EAAKF,EACxCE,EAAI,CAAC,EAAKP,EAAKO,EAAI,GAAMJ,EAAKI,EAAI,CAAC,EAAKD,EAEjC,IAEP,CAED,UAAW,CAEV,YAAK,IAEJ,EAAG,EAAG,EACN,EAAG,EAAG,EACN,EAAG,EAAG,CAET,EAES,IAEP,CAED,KAAMtC,EAAI,CAET,MAAMuC,EAAK,KAAK,SACVC,EAAKxC,EAAE,SAEb,OAAAuC,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,GACpDD,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,GACpDD,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,GAE7C,IAEP,CAED,aAAcC,EAAOC,EAAOC,EAAQ,CAEnC,OAAAF,EAAM,qBAAsB,KAAM,GAClCC,EAAM,qBAAsB,KAAM,GAClCC,EAAM,qBAAsB,KAAM,GAE3B,IAEP,CAED,eAAgB3C,EAAI,CAEnB,MAAMwC,EAAKxC,EAAE,SAEb,YAAK,IAEJwC,EAAI,CAAC,EAAIA,EAAI,CAAG,EAAEA,EAAI,CAAG,EACzBA,EAAI,CAAC,EAAIA,EAAI,CAAG,EAAEA,EAAI,CAAG,EACzBA,EAAI,CAAC,EAAIA,EAAI,CAAG,EAAEA,EAAI,EAAI,CAE7B,EAES,IAEP,CAED,SAAUxC,EAAI,CAEb,OAAO,KAAK,iBAAkB,KAAMA,CAAC,CAErC,CAED,YAAaA,EAAI,CAEhB,OAAO,KAAK,iBAAkBA,EAAG,IAAI,CAErC,CAED,iBAAkBW,EAAGC,EAAI,CAExB,MAAMgC,EAAKjC,EAAE,SACPkC,EAAKjC,EAAE,SACP2B,EAAK,KAAK,SAEVO,EAAMF,EAAI,CAAC,EAAIG,EAAMH,EAAI,GAAKI,EAAMJ,EAAI,CAAC,EACzCK,EAAML,EAAI,CAAC,EAAIM,EAAMN,EAAI,GAAKO,EAAMP,EAAI,CAAC,EACzCQ,EAAMR,EAAI,CAAC,EAAIS,EAAMT,EAAI,GAAKU,EAAMV,EAAI,CAAC,EAEzCW,EAAMV,EAAI,CAAC,EAAIW,EAAMX,EAAI,GAAKY,EAAMZ,EAAI,CAAC,EACzCa,EAAMb,EAAI,CAAC,EAAIc,EAAMd,EAAI,GAAKe,EAAMf,EAAI,CAAC,EACzCgB,EAAMhB,EAAI,CAAC,EAAIiB,EAAMjB,EAAI,GAAKkB,EAAMlB,EAAI,CAAC,EAE/C,OAAAN,EAAI,CAAG,EAAGO,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EACxCtB,EAAI,CAAG,EAAGO,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EACxCvB,EAAI,CAAG,EAAGO,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAExCxB,EAAI,CAAG,EAAGU,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EACxCtB,EAAI,CAAG,EAAGU,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EACxCvB,EAAI,CAAG,EAAGU,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAExCxB,EAAI,CAAG,EAAGa,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EACxCtB,EAAI,CAAG,EAAGa,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EACxCvB,EAAI,CAAG,EAAGa,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAEjC,IAEP,CAED,eAAgBrD,EAAI,CAEnB,MAAM6B,EAAK,KAAK,SAEhB,OAAAA,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,IAAO7B,EAAG6B,EAAI,CAAC,GAAM7B,EACvC6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,IAAO7B,EAAG6B,EAAI,CAAC,GAAM7B,EACvC6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,IAAO7B,EAAG6B,EAAI,CAAC,GAAM7B,EAEhC,IAEP,CAED,aAAc,CAEb,MAAM6B,EAAK,KAAK,SAEV5B,EAAI4B,EAAI,CAAC,EAAI3B,EAAI2B,EAAI,GAAKX,EAAIW,EAAI,CAAG,EAC1CyB,EAAIzB,EAAI,CAAC,EAAI1B,EAAI0B,EAAI,GAAK0B,EAAI1B,EAAI,CAAG,EACrC2B,EAAI3B,EAAI,CAAG,EAAE4B,EAAI5B,EAAI,CAAC,EAAIvD,EAAIuD,EAAI,GAEnC,OAAO5B,EAAIE,EAAI7B,EAAI2B,EAAIsD,EAAIE,EAAIvD,EAAIoD,EAAIhF,EAAI4B,EAAIqD,EAAIC,EAAItC,EAAIoC,EAAIG,EAAIvC,EAAIf,EAAIqD,CAE3E,CAED,QAAS,CAER,MAAM3B,EAAK,KAAK,SAEfT,EAAMS,EAAI,CAAC,EAAIN,EAAMM,EAAI,GAAKH,EAAMG,EAAI,CAAG,EAC3CR,EAAMQ,EAAI,CAAC,EAAIL,EAAMK,EAAI,GAAKF,EAAME,EAAI,CAAG,EAC3CP,EAAMO,EAAI,CAAC,EAAIJ,EAAMI,EAAI,GAAKD,EAAMC,EAAI,CAAG,EAE3C6B,EAAM9B,EAAMJ,EAAMG,EAAMF,EACxBkC,EAAMhC,EAAML,EAAMM,EAAMP,EACxBuC,EAAMnC,EAAMJ,EAAMG,EAAMF,EAExBuC,EAAMzC,EAAMsC,EAAMnC,EAAMoC,EAAMjC,EAAMkC,EAErC,GAAKC,IAAQ,EAAI,OAAO,KAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAE3D,MAAMC,EAAS,EAAID,EAEnB,OAAAhC,EAAI,CAAC,EAAK6B,EAAMI,EAChBjC,EAAI,CAAC,GAAOH,EAAMD,EAAMG,EAAML,GAAQuC,EACtCjC,EAAI,CAAC,GAAOF,EAAMJ,EAAMG,EAAMF,GAAQsC,EAEtCjC,EAAI,CAAC,EAAK8B,EAAMG,EAChBjC,EAAI,CAAC,GAAOD,EAAMR,EAAMM,EAAMJ,GAAQwC,EACtCjC,EAAI,CAAC,GAAOH,EAAML,EAAMM,EAAMP,GAAQ0C,EAEtCjC,EAAI,CAAC,EAAK+B,EAAME,EAChBjC,EAAI,CAAC,GAAON,EAAMD,EAAMG,EAAML,GAAQ0C,EACtCjC,EAAI,CAAC,GAAOL,EAAMJ,EAAMG,EAAMF,GAAQyC,EAE/B,IAEP,CAED,WAAY,CAEX,IAAIC,EACJ,MAAMzE,EAAI,KAAK,SAEf,OAAAyE,EAAMzE,EAAG,GAAKA,EAAG,CAAC,EAAKA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAKyE,EACxCA,EAAMzE,EAAG,GAAKA,EAAG,CAAC,EAAKA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAKyE,EACxCA,EAAMzE,EAAG,GAAKA,EAAG,CAAC,EAAKA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAKyE,EAEjC,IAEP,CAED,gBAAiBC,EAAU,CAE1B,OAAO,KAAK,eAAgBA,CAAS,EAAC,OAAM,EAAG,WAE/C,CAED,mBAAoBC,EAAI,CAEvB,MAAM3E,EAAI,KAAK,SAEf,OAAA2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EACb2E,EAAG,CAAC,EAAK3E,EAAG,CAAC,EAEN,IAEP,CAED,eAAgB4E,EAAIC,EAAIC,EAAIC,EAAIC,EAAUC,EAAIC,EAAK,CAElD,MAAMtD,EAAI,KAAK,IAAKoD,CAAQ,EACtBtE,EAAI,KAAK,IAAKsE,CAAQ,EAE5B,YAAK,IACJF,EAAKlD,EAAGkD,EAAKpE,EAAG,CAAEoE,GAAOlD,EAAIqD,EAAKvE,EAAIwE,GAAOD,EAAKL,EAClD,CAAEG,EAAKrE,EAAGqE,EAAKnD,EAAG,CAAEmD,GAAO,CAAErE,EAAIuE,EAAKrD,EAAIsD,GAAOA,EAAKL,EACtD,EAAG,EAAG,CACT,EAES,IAEP,CAID,MAAOC,EAAIC,EAAK,CAEf,YAAK,YAAaI,GAAI,UAAWL,EAAIC,CAAE,GAEhC,IAEP,CAED,OAAQ7D,EAAQ,CAEf,YAAK,YAAaiE,GAAI,aAAc,CAAEjE,CAAO,CAAA,EAEtC,IAEP,CAED,UAAW0D,EAAIC,EAAK,CAEnB,YAAK,YAAaM,GAAI,gBAAiBP,EAAIC,CAAE,GAEtC,IAEP,CAID,gBAAiB3E,EAAGC,EAAI,CAEvB,OAAKD,EAAE,UAEN,KAAK,IAEJ,EAAG,EAAGA,EAAE,EACR,EAAG,EAAGA,EAAE,EACR,EAAG,EAAG,CAEV,EAIG,KAAK,IAEJ,EAAG,EAAGA,EACN,EAAG,EAAGC,EACN,EAAG,EAAG,CAEV,EAIS,IAEP,CAED,aAAce,EAAQ,CAIrB,MAAMU,EAAI,KAAK,IAAKV,CAAK,EACnBR,EAAI,KAAK,IAAKQ,CAAK,EAEzB,YAAK,IAEJU,EAAG,CAAElB,EAAG,EACRA,EAAGkB,EAAG,EACN,EAAG,EAAG,CAET,EAES,IAEP,CAED,UAAW1B,EAAGC,EAAI,CAEjB,YAAK,IAEJD,EAAG,EAAG,EACN,EAAGC,EAAG,EACN,EAAG,EAAG,CAET,EAES,IAEP,CAID,OAAQiF,EAAS,CAEhB,MAAM7C,EAAK,KAAK,SACVC,EAAK4C,EAAO,SAElB,QAAUpG,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKuD,EAAIvD,CAAG,IAAKwD,EAAIxD,CAAC,EAAK,MAAO,GAInC,MAAO,EAEP,CAED,UAAWD,EAAOyC,EAAS,EAAI,CAE9B,QAAUxC,EAAI,EAAGA,EAAI,EAAGA,IAEvB,KAAK,SAAUA,CAAC,EAAKD,EAAOC,EAAIwC,GAIjC,OAAO,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,MAAMe,EAAK,KAAK,SAEhB,OAAAxD,EAAOyC,CAAM,EAAKe,EAAI,CAAC,EACvBxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAE3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAE3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAEpBxD,CAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAW,EAAG,UAAW,KAAK,SAE9C,CAEF,CAEA,MAAMoG,GAAoB,IAAItD,GAE9B,SAASwD,GAAkBtG,EAAQ,CAIlC,QAAUC,EAAID,EAAM,OAAS,EAAGC,GAAK,EAAG,EAAGA,EAE1C,GAAKD,EAAOC,CAAC,GAAM,MAAQ,MAAO,GAInC,MAAO,EAER,CAoBA,SAASsG,GAAiBC,EAAO,CAEhC,OAAO,SAAS,gBAAiB,+BAAgCA,CAAI,CAEtE,CAEA,SAASC,IAAsB,CAE9B,MAAMC,EAASH,GAAiB,UAChC,OAAAG,EAAO,MAAM,QAAU,QAChBA,CAER,CAEA,MAAMC,GAAS,CAAA,EAEf,SAASC,GAAUC,EAAU,CAEvBA,KAAWF,KAEhBA,GAAQE,CAAS,EAAG,GAEpB,QAAQ,KAAMA,GAEf,CAcA,MAAMC,GAAiD,IAAIhE,GAAO,EAAG,IACpE,SAAW,QAAU,EACrB,SAAW,SAAW,EACtB,SAAW,SAAW,QACvB,EAEMiE,GAAiD,IAAIjE,GAAO,EAAG,IACpE,UAAW,UAAa,EACxB,UAAa,UAAW,EACxB,UAAa,UAAa,SAC3B,EAMMkE,GAAe,CACpB,CAAE5I,EAAwB,EAAA,CACzB,SAAUG,GACV,UAAWE,GACX,YAAewI,GAAWA,EAC1B,cAAiBA,GAAWA,CAC5B,EACD,CAAE9I,EAAkB,EAAA,CACnB,SAAUK,GACV,UAAWC,GACX,YAAewI,GAAWA,EAAM,oBAAqB,EACrD,cAAiBA,GAAWA,EAAM,oBAAqB,CACvD,EACD,CAAE3I,EAA6B,EAAA,CAC9B,SAAUC,GACV,UAAWG,GACX,YAAeuI,GAAWA,EAAM,aAAcF,EAAkC,EAChF,cAAiBE,GAAWA,EAAM,aAAcH,EAAkC,CAClF,EACD,CAAEzI,EAAuB,EAAA,CACxB,SAAUG,GACV,UAAWE,GACX,YAAeuI,GAAWA,EAAM,oBAAqB,EAAC,aAAcF,EAAkC,EACtG,cAAiBE,GAAWA,EAAM,aAAcH,EAAkC,EAAC,oBAAqB,CACxG,CACF,EAEMI,GAAiC,IAAI,IAAK,CAAE9I,GAAsBE,EAA2B,CAAA,EAE7F6I,GAAkB,CAEvB,QAAS,GAET,mBAAoB/I,GAEpB,IAAI,mBAAoB,CAEvB,OAAO,KAAK,kBAEZ,EAED,IAAI,kBAAmBgJ,EAAa,CAEnC,GAAK,CAAEF,GAA+B,IAAKE,GAE1C,MAAM,IAAI,MAAO,qCAAsCA,CAAY,IAAG,EAIvE,KAAK,mBAAqBA,CAE1B,EAED,QAAS,SAAWH,EAAOI,EAAkBC,EAAmB,CAE/D,GAAK,KAAK,UAAY,IAASD,IAAqBC,GAAoB,CAAED,GAAoB,CAAEC,EAE/F,OAAOL,EAIR,MAAMM,EAAoBP,GAAcK,CAAgB,EAAG,YACrDG,EAAsBR,GAAcM,CAAgB,EAAG,cAE7D,OAAOE,EAAqBD,EAAmBN,CAAK,EAEpD,EAED,sBAAuB,SAAWA,EAAOK,EAAmB,CAE3D,OAAO,KAAK,QAASL,EAAO,KAAK,mBAAoBK,EAErD,EAED,oBAAqB,SAAWL,EAAOI,EAAmB,CAEzD,OAAO,KAAK,QAASJ,EAAOI,EAAkB,KAAK,mBAEnD,EAED,aAAc,SAAWD,EAAa,CAErC,OAAOJ,GAAcI,CAAY,EAAC,SAElC,EAED,YAAa,SAAWA,EAAa,CAEpC,OAAKA,IAAelJ,GAAsBK,GAEnCyI,GAAcI,CAAY,EAAC,QAElC,CAEF,EAGA,SAASK,GAAc5E,EAAI,CAE1B,OAASA,EAAI,OAAYA,EAAI,YAAe,KAAK,IAAKA,EAAI,YAAe,YAAc,GAAG,CAE3F,CAEA,SAAS6E,GAAc7E,EAAI,CAE1B,OAASA,EAAI,SAAcA,EAAI,MAAQ,MAAU,KAAK,IAAKA,EAAG,MAAS,EAAK,IAE7E,CAEA,IAAI8E,GAEJ,MAAMC,EAAW,CAEhB,OAAO,WAAYC,EAAQ,CAQ1B,GANK,UAAU,KAAMA,EAAM,GAAG,GAMzB,OAAO,kBAAsB,IAEjC,OAAOA,EAAM,IAId,IAAInB,EAEJ,GAAKmB,aAAiB,kBAErBnB,EAASmB,MAEH,CAEDF,KAAY,SAAYA,GAAUpB,GAAiB,QAAQ,GAEhEoB,GAAQ,MAAQE,EAAM,MACtBF,GAAQ,OAASE,EAAM,OAEvB,MAAMC,EAAUH,GAAQ,WAAY,IAAI,EAEnCE,aAAiB,UAErBC,EAAQ,aAAcD,EAAO,EAAG,CAAC,EAIjCC,EAAQ,UAAWD,EAAO,EAAG,EAAGA,EAAM,MAAOA,EAAM,QAIpDnB,EAASiB,EAET,CAED,OAAKjB,EAAO,MAAQ,MAAQA,EAAO,OAAS,MAE3C,QAAQ,KAAM,8EAA+EmB,GAEtFnB,EAAO,UAAW,aAAc,EAAG,GAInCA,EAAO,UAAW,YAI1B,CAED,OAAO,aAAcmB,EAAQ,CAE5B,GAAO,OAAO,iBAAqB,KAAeA,aAAiB,kBAChE,OAAO,kBAAsB,KAAeA,aAAiB,mBAC7D,OAAO,YAAgB,KAAeA,aAAiB,YAAgB,CAEzE,MAAMnB,EAASH,GAAiB,UAEhCG,EAAO,MAAQmB,EAAM,MACrBnB,EAAO,OAASmB,EAAM,OAEtB,MAAMC,EAAUpB,EAAO,WAAY,IAAI,EACvCoB,EAAQ,UAAWD,EAAO,EAAG,EAAGA,EAAM,MAAOA,EAAM,QAEnD,MAAME,EAAYD,EAAQ,aAAc,EAAG,EAAGD,EAAM,MAAOA,EAAM,QAC3DG,EAAOD,EAAU,KAEvB,QAAU9H,EAAI,EAAGA,EAAI+H,EAAK,OAAQ/H,IAEjC+H,EAAM/H,CAAG,EAAGwH,GAAcO,EAAM/H,GAAM,GAAK,EAAG,IAI/C,OAAA6H,EAAQ,aAAcC,EAAW,EAAG,CAAC,EAE9BrB,CAEV,SAAcmB,EAAM,KAAO,CAExB,MAAMG,EAAOH,EAAM,KAAK,MAAO,CAAC,EAEhC,QAAU5H,EAAI,EAAGA,EAAI+H,EAAK,OAAQ/H,IAE5B+H,aAAgB,YAAcA,aAAgB,kBAElDA,EAAM/H,CAAC,EAAK,KAAK,MAAOwH,GAAcO,EAAM/H,CAAG,EAAG,GAAK,EAAG,GAAG,EAM7D+H,EAAM/H,CAAC,EAAKwH,GAAcO,EAAM/H,CAAG,CAAA,EAMrC,MAAO,CACN,KAAM+H,EACN,MAAOH,EAAM,MACb,OAAQA,EAAM,MAClB,CAEA,KAEG,gBAAQ,KAAM,+FACPA,CAIR,CAEF,CAEA,IAAII,GAAY,EAEhB,MAAMC,EAAO,CAEZ,YAAaF,EAAO,KAAO,CAE1B,KAAK,SAAW,GAEhB,OAAO,eAAgB,KAAM,KAAM,CAAE,MAAOC,IAAY,GAExD,KAAK,KAAO3H,KAEZ,KAAK,KAAO0H,EACZ,KAAK,UAAY,GAEjB,KAAK,QAAU,CAEf,CAED,IAAI,YAAapH,EAAQ,CAEnBA,IAAU,IAAO,KAAK,SAE3B,CAED,OAAQuH,EAAO,CAEd,MAAMC,EAAiBD,IAAS,QAAa,OAAOA,GAAS,SAE7D,GAAK,CAAEC,GAAgBD,EAAK,OAAQ,KAAK,IAAM,IAAK,OAEnD,OAAOA,EAAK,OAAQ,KAAK,IAAI,EAI9B,MAAME,EAAS,CACd,KAAM,KAAK,KACX,IAAK,EACR,EAEQL,EAAO,KAAK,KAElB,GAAKA,IAAS,KAAO,CAEpB,IAAIM,EAEJ,GAAK,MAAM,QAASN,GAAS,CAI5BM,EAAM,CAAA,EAEN,QAAUrI,EAAI,EAAGC,EAAI8H,EAAK,OAAQ/H,EAAIC,EAAGD,IAEnC+H,EAAM/H,CAAG,EAAC,cAEdqI,EAAI,KAAMC,GAAgBP,EAAM/H,CAAG,EAAC,KAAK,GAIzCqI,EAAI,KAAMC,GAAgBP,EAAM/H,CAAC,CAAI,CAAA,CAM3C,MAIIqI,EAAMC,GAAgBP,GAIvBK,EAAO,IAAMC,CAEb,CAED,OAAOF,IAEND,EAAK,OAAQ,KAAK,IAAI,EAAKE,GAIrBA,CAEP,CAEF,CAEA,SAASE,GAAgBV,EAAQ,CAEhC,OAAO,OAAO,iBAAqB,KAAeA,aAAiB,kBAChE,OAAO,kBAAsB,KAAeA,aAAiB,mBAC7D,OAAO,YAAgB,KAAeA,aAAiB,YAIlDD,GAAW,WAAYC,GAIzBA,EAAM,KAIH,CACN,KAAM,MAAM,KAAMA,EAAM,IAAM,EAC9B,MAAOA,EAAM,MACb,OAAQA,EAAM,OACd,KAAMA,EAAM,KAAK,YAAY,IACjC,GAIG,QAAQ,KAAM,+CACP,GAMV,CAEA,IAAIW,GAAa,EAEjB,MAAMC,WAAgBhJ,EAAgB,CAErC,YAAaoI,EAAQY,GAAQ,cAAeC,EAAUD,GAAQ,gBAAiBE,EAAQ7O,GAAqB8O,EAAQ9O,GAAqB+O,EAAY1O,GAAc2O,EAAYzO,GAA0B0O,EAAS3N,GAAYsE,EAAOpF,GAAkB0O,EAAaP,GAAQ,mBAAoBrB,EAAalJ,GAAe,CAE3T,QAEA,KAAK,UAAY,GAEjB,OAAO,eAAgB,KAAM,KAAM,CAAE,MAAOsK,IAAa,GAEzD,KAAK,KAAOlI,KAEZ,KAAK,KAAO,GAEZ,KAAK,OAAS,IAAI4H,GAAQL,CAAK,EAC/B,KAAK,QAAU,GAEf,KAAK,QAAUa,EACf,KAAK,QAAU,EAEf,KAAK,MAAQC,EACb,KAAK,MAAQC,EAEb,KAAK,UAAYC,EACjB,KAAK,UAAYC,EAEjB,KAAK,WAAaE,EAElB,KAAK,OAASD,EACd,KAAK,eAAiB,KACtB,KAAK,KAAOrJ,EAEZ,KAAK,OAAS,IAAI8B,GAAS,EAAG,CAAC,EAC/B,KAAK,OAAS,IAAIA,GAAS,EAAG,CAAC,EAC/B,KAAK,OAAS,IAAIA,GAAS,EAAG,CAAC,EAC/B,KAAK,SAAW,EAEhB,KAAK,iBAAmB,GACxB,KAAK,OAAS,IAAIsB,GAElB,KAAK,gBAAkB,GACvB,KAAK,iBAAmB,GACxB,KAAK,MAAQ,GACb,KAAK,gBAAkB,EAEvB,KAAK,WAAasE,EAElB,KAAK,SAAW,GAEhB,KAAK,QAAU,EACf,KAAK,SAAW,KAEhB,KAAK,sBAAwB,GAC7B,KAAK,aAAe,CAEpB,CAED,IAAI,OAAQ,CAEX,OAAO,KAAK,OAAO,IAEnB,CAED,IAAI,MAAOxG,EAAQ,KAAO,CAEzB,KAAK,OAAO,KAAOA,CAEnB,CAED,cAAe,CAEd,KAAK,OAAO,eAAgB,KAAK,OAAO,EAAG,KAAK,OAAO,EAAG,KAAK,OAAO,EAAG,KAAK,OAAO,EAAG,KAAK,SAAU,KAAK,OAAO,EAAG,KAAK,OAAO,CAAC,CAEnI,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAED,KAAMqI,EAAS,CAEd,YAAK,KAAOA,EAAO,KAEnB,KAAK,OAASA,EAAO,OACrB,KAAK,QAAUA,EAAO,QAAQ,MAAO,CAAC,EAEtC,KAAK,QAAUA,EAAO,QACtB,KAAK,QAAUA,EAAO,QAEtB,KAAK,MAAQA,EAAO,MACpB,KAAK,MAAQA,EAAO,MAEpB,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UAExB,KAAK,WAAaA,EAAO,WAEzB,KAAK,OAASA,EAAO,OACrB,KAAK,eAAiBA,EAAO,eAC7B,KAAK,KAAOA,EAAO,KAEnB,KAAK,OAAO,KAAMA,EAAO,MAAM,EAC/B,KAAK,OAAO,KAAMA,EAAO,MAAM,EAC/B,KAAK,OAAO,KAAMA,EAAO,MAAM,EAC/B,KAAK,SAAWA,EAAO,SAEvB,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,OAAO,KAAMA,EAAO,MAAM,EAE/B,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,MAAQA,EAAO,MACpB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,WAAaA,EAAO,WAEzB,KAAK,SAAW,KAAK,MAAO,KAAK,UAAWA,EAAO,QAAQ,GAE3D,KAAK,YAAc,GAEZ,IAEP,CAED,OAAQd,EAAO,CAEd,MAAMC,EAAiBD,IAAS,QAAa,OAAOA,GAAS,SAE7D,GAAK,CAAEC,GAAgBD,EAAK,SAAU,KAAK,IAAM,IAAK,OAErD,OAAOA,EAAK,SAAU,KAAK,IAAI,EAIhC,MAAME,EAAS,CAEd,SAAU,CACT,QAAS,IACT,KAAM,UACN,UAAW,gBACX,EAED,KAAM,KAAK,KACX,KAAM,KAAK,KAEX,MAAO,KAAK,OAAO,OAAQF,CAAM,EAAC,KAElC,QAAS,KAAK,QACd,QAAS,KAAK,QAEd,OAAQ,CAAE,KAAK,OAAO,EAAG,KAAK,OAAO,CAAG,EACxC,OAAQ,CAAE,KAAK,OAAO,EAAG,KAAK,OAAO,CAAG,EACxC,OAAQ,CAAE,KAAK,OAAO,EAAG,KAAK,OAAO,CAAG,EACxC,SAAU,KAAK,SAEf,KAAM,CAAE,KAAK,MAAO,KAAK,KAAO,EAEhC,OAAQ,KAAK,OACb,eAAgB,KAAK,eACrB,KAAM,KAAK,KACX,WAAY,KAAK,WAEjB,UAAW,KAAK,UAChB,UAAW,KAAK,UAChB,WAAY,KAAK,WAEjB,MAAO,KAAK,MAEZ,gBAAiB,KAAK,gBACtB,iBAAkB,KAAK,iBACvB,gBAAiB,KAAK,eAEzB,EAEE,OAAK,OAAO,KAAM,KAAK,QAAU,EAAC,OAAS,IAAIE,EAAO,SAAW,KAAK,UAE/DD,IAEND,EAAK,SAAU,KAAK,IAAI,EAAKE,GAIvBA,CAEP,CAED,SAAU,CAET,KAAK,cAAe,CAAE,KAAM,SAAW,CAAA,CAEvC,CAED,YAAaa,EAAK,CAEjB,GAAK,KAAK,UAAY3P,GAAY,OAAO2P,EAIzC,GAFAA,EAAG,aAAc,KAAK,QAEjBA,EAAG,EAAI,GAAKA,EAAG,EAAI,EAEvB,OAAS,KAAK,MAAK,CAElB,KAAKrP,GAEJqP,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAOA,EAAG,GAC7B,MAED,KAAKpP,GAEJoP,EAAG,EAAIA,EAAG,EAAI,EAAI,EAAI,EACtB,MAED,KAAKnP,GAEC,KAAK,IAAK,KAAK,MAAOmP,EAAG,CAAG,EAAG,CAAG,IAAK,EAE3CA,EAAG,EAAI,KAAK,KAAMA,EAAG,CAAG,EAAGA,EAAG,EAI9BA,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAOA,EAAG,GAI9B,KAED,CAIF,GAAKA,EAAG,EAAI,GAAKA,EAAG,EAAI,EAEvB,OAAS,KAAK,MAAK,CAElB,KAAKrP,GAEJqP,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAOA,EAAG,GAC7B,MAED,KAAKpP,GAEJoP,EAAG,EAAIA,EAAG,EAAI,EAAI,EAAI,EACtB,MAED,KAAKnP,GAEC,KAAK,IAAK,KAAK,MAAOmP,EAAG,CAAG,EAAG,CAAG,IAAK,EAE3CA,EAAG,EAAI,KAAK,KAAMA,EAAG,CAAG,EAAGA,EAAG,EAI9BA,EAAG,EAAIA,EAAG,EAAI,KAAK,MAAOA,EAAG,GAI9B,KAED,CAIF,OAAK,KAAK,QAETA,EAAG,EAAI,EAAIA,EAAG,GAIRA,CAEP,CAED,IAAI,YAAatI,EAAQ,CAEnBA,IAAU,KAEd,KAAK,UACL,KAAK,OAAO,YAAc,GAI3B,CAED,IAAI,iBAAkBA,EAAQ,CAExBA,IAAU,IAEd,KAAK,cAIN,CAEF,CAEA6H,GAAQ,cAAgB,KACxBA,GAAQ,gBAAkBlP,GAC1BkP,GAAQ,mBAAqB,EAE7B,MAAMU,EAAQ,CAEb,YAAahI,EAAI,EAAGC,EAAI,EAAGgI,EAAI,EAAGC,EAAI,EAAI,CAEzCF,GAAQ,UAAU,UAAY,GAE9B,KAAK,EAAIhI,EACT,KAAK,EAAIC,EACT,KAAK,EAAIgI,EACT,KAAK,EAAIC,CAET,CAED,IAAI,OAAQ,CAEX,OAAO,KAAK,CAEZ,CAED,IAAI,MAAOzI,EAAQ,CAElB,KAAK,EAAIA,CAET,CAED,IAAI,QAAS,CAEZ,OAAO,KAAK,CAEZ,CAED,IAAI,OAAQA,EAAQ,CAEnB,KAAK,EAAIA,CAET,CAED,IAAKO,EAAGC,EAAGgI,EAAGC,EAAI,CAEjB,YAAK,EAAIlI,EACT,KAAK,EAAIC,EACT,KAAK,EAAIgI,EACT,KAAK,EAAIC,EAEF,IAEP,CAED,UAAW5H,EAAS,CAEnB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EAEF,IAEP,CAED,KAAMN,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,KAAMC,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,KAAMgI,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,KAAMC,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,aAAcvJ,EAAOc,EAAQ,CAE5B,OAASd,EAAK,CAEb,IAAK,GAAG,KAAK,EAAIc,EAAO,MACxB,IAAK,GAAG,KAAK,EAAIA,EAAO,MACxB,IAAK,GAAG,KAAK,EAAIA,EAAO,MACxB,IAAK,GAAG,KAAK,EAAIA,EAAO,MACxB,QAAS,MAAM,IAAI,MAAO,0BAA4Bd,CAAK,CAE3D,CAED,OAAO,IAEP,CAED,aAAcA,EAAQ,CAErB,OAASA,EAAK,CAEb,IAAK,GAAG,OAAO,KAAK,EACpB,IAAK,GAAG,OAAO,KAAK,EACpB,IAAK,GAAG,OAAO,KAAK,EACpB,IAAK,GAAG,OAAO,KAAK,EACpB,QAAS,MAAM,IAAI,MAAO,0BAA4BA,CAAK,CAE3D,CAED,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,EAAG,KAAK,EAAG,KAAK,EAAG,KAAK,CAAC,CAE3D,CAED,KAAM4B,EAAI,CAET,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAMA,EAAE,IAAM,OAAcA,EAAE,EAAI,EAEhC,IAEP,CAED,IAAKA,EAAI,CAER,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,UAAWC,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,WAAYC,EAAGC,EAAI,CAElB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,gBAAiBH,EAAGC,EAAI,CAEvB,YAAK,GAAKD,EAAE,EAAIC,EAChB,KAAK,GAAKD,EAAE,EAAIC,EAChB,KAAK,GAAKD,EAAE,EAAIC,EAChB,KAAK,GAAKD,EAAE,EAAIC,EAET,IAEP,CAED,IAAKD,EAAI,CAER,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,UAAWC,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,WAAYC,EAAGC,EAAI,CAElB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,SAAUH,EAAI,CAEb,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,eAAgBD,EAAS,CAExB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,aAAcR,EAAI,CAEjB,MAAME,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGgI,EAAI,KAAK,EAAGC,EAAI,KAAK,EAC7CvH,EAAIb,EAAE,SAEZ,YAAK,EAAIa,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,GAAMsH,EAAItH,EAAG,EAAI,EAAGuH,EAC1D,KAAK,EAAIvH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,GAAMsH,EAAItH,EAAG,EAAI,EAAGuH,EAC1D,KAAK,EAAIvH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,IAAOsH,EAAItH,EAAG,EAAI,EAAGuH,EAC3D,KAAK,EAAIvH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,IAAOsH,EAAItH,EAAG,EAAI,EAAGuH,EAEpD,IAEP,CAED,aAAc5H,EAAS,CAEtB,OAAO,KAAK,eAAgB,EAAIA,CAAM,CAEtC,CAED,2BAA4B6H,EAAI,CAM/B,KAAK,EAAI,EAAI,KAAK,KAAMA,EAAE,GAE1B,MAAM3H,EAAI,KAAK,KAAM,EAAI2H,EAAE,EAAIA,EAAE,GAEjC,OAAK3H,EAAI,MAER,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,IAIT,KAAK,EAAI2H,EAAE,EAAI3H,EACf,KAAK,EAAI2H,EAAE,EAAI3H,EACf,KAAK,EAAI2H,EAAE,EAAI3H,GAIT,IAEP,CAED,+BAAgCV,EAAI,CAMnC,IAAI2B,EAAOzB,EAAGC,EAAGgI,EACjB,MAGC5F,EAAKvC,EAAE,SAEPsI,EAAM/F,EAAI,CAAC,EAAIgG,EAAMhG,EAAI,GAAKiG,EAAMjG,EAAI,CAAG,EAC3CkG,EAAMlG,EAAI,CAAC,EAAImG,EAAMnG,EAAI,GAAKoG,EAAMpG,EAAI,CAAG,EAC3CqG,EAAMrG,EAAI,CAAG,EAAEsG,EAAMtG,EAAI,CAAC,EAAIuG,EAAMvG,EAAI,IAEzC,GAAO,KAAK,IAAKgG,EAAME,CAAK,EAAG,KACxB,KAAK,IAAKD,EAAMI,CAAG,EAAK,KACxB,KAAK,IAAKD,EAAME,CAAK,EAAG,IAAY,CAM1C,GAAO,KAAK,IAAKN,EAAME,CAAK,EAAG,IACxB,KAAK,IAAKD,EAAMI,CAAG,EAAK,IACxB,KAAK,IAAKD,EAAME,CAAG,EAAK,IACxB,KAAK,IAAKP,EAAMI,EAAMI,EAAM,CAAC,EAAK,GAIxC,YAAK,IAAK,EAAG,EAAG,EAAG,CAAC,EAEb,KAMRnH,EAAQ,KAAK,GAEb,MAAMoH,GAAOT,EAAM,GAAM,EACnBU,GAAON,EAAM,GAAM,EACnBO,GAAOH,EAAM,GAAM,EACnBI,GAAOX,EAAME,GAAQ,EACrBU,GAAOX,EAAMI,GAAQ,EACrBQ,GAAOT,EAAME,GAAQ,EAE3B,OAAOE,EAAKC,GAAUD,EAAKE,EAIrBF,EAAK,KAET7I,EAAI,EACJC,EAAI,WACJgI,EAAI,aAIJjI,EAAI,KAAK,KAAM6I,GACf5I,EAAI+I,EAAKhJ,EACTiI,EAAIgB,EAAKjJ,GAIC8I,EAAKC,EAIXD,EAAK,KAET9I,EAAI,WACJC,EAAI,EACJgI,EAAI,aAIJhI,EAAI,KAAK,KAAM6I,GACf9I,EAAIgJ,EAAK/I,EACTgI,EAAIiB,EAAKjJ,GAQL8I,EAAK,KAET/I,EAAI,WACJC,EAAI,WACJgI,EAAI,IAIJA,EAAI,KAAK,KAAMc,GACf/I,EAAIiJ,EAAKhB,EACThI,EAAIiJ,EAAKjB,GAMX,KAAK,IAAKjI,EAAGC,EAAGgI,EAAGxG,CAAK,EAEjB,IAEP,CAID,IAAIjB,EAAI,KAAK,MAAQmI,EAAMF,IAAUE,EAAMF,IACxCH,EAAMI,IAAUJ,EAAMI,IACtBH,EAAMF,IAAUE,EAAMF,EAAK,EAE9B,OAAK,KAAK,IAAK7H,CAAG,EAAG,OAAQA,EAAI,GAKjC,KAAK,GAAMmI,EAAMF,GAAQjI,EACzB,KAAK,GAAM8H,EAAMI,GAAQlI,EACzB,KAAK,GAAM+H,EAAMF,GAAQ7H,EACzB,KAAK,EAAI,KAAK,MAAQ4H,EAAMI,EAAMI,EAAM,GAAM,GAEvC,IAEP,CAED,IAAKrI,EAAI,CAER,YAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAEtB,IAEP,CAED,IAAKA,EAAI,CAER,YAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAEtB,IAEP,CAED,MAAOb,EAAKC,EAAM,CAIjB,YAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EACnD,KAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EACnD,KAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EACnD,KAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EAE5C,IAEP,CAED,YAAaiB,EAAQC,EAAS,CAE7B,YAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EACrD,KAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EACrD,KAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EACrD,KAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EAE9C,IAEP,CAED,YAAanB,EAAKC,EAAM,CAEvB,MAAMmB,EAAS,KAAK,SAEpB,OAAO,KAAK,aAAcA,GAAU,CAAG,EAAC,eAAgB,KAAK,IAAKpB,EAAK,KAAK,IAAKC,EAAKmB,CAAM,CAAI,CAAA,CAEhG,CAED,OAAQ,CAEP,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,MAAO,CAEN,YAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAEnB,IAEP,CAED,OAAQ,CAEP,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,aAAc,CAEb,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,QAAS,CAER,YAAK,EAAI,CAAE,KAAK,EAChB,KAAK,EAAI,CAAE,KAAK,EAChB,KAAK,EAAI,CAAE,KAAK,EAChB,KAAK,EAAI,CAAE,KAAK,EAET,IAEP,CAED,IAAKP,EAAI,CAER,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CAE/D,CAED,UAAW,CAEV,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAE3E,CAED,QAAS,CAER,OAAO,KAAK,KAAM,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAEtF,CAED,iBAAkB,CAEjB,OAAO,KAAK,IAAK,KAAK,CAAG,EAAG,KAAK,IAAK,KAAK,CAAC,EAAK,KAAK,IAAK,KAAK,CAAG,EAAG,KAAK,IAAK,KAAK,EAErF,CAED,WAAY,CAEX,OAAO,KAAK,aAAc,KAAK,OAAQ,GAAI,CAAC,CAE5C,CAED,UAAWO,EAAS,CAEnB,OAAO,KAAK,UAAS,EAAG,eAAgBA,CAAM,CAE9C,CAED,KAAMP,EAAGY,EAAQ,CAEhB,YAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAC7B,KAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAC7B,KAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAC7B,KAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAEtB,IAEP,CAED,YAAaC,EAAIC,EAAIF,EAAQ,CAE5B,YAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAClC,KAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAClC,KAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAClC,KAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAE3B,IAEP,CAED,OAAQZ,EAAI,CAEX,OAAWA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,CAE1F,CAED,UAAW1B,EAAOyC,EAAS,EAAI,CAE9B,YAAK,EAAIzC,EAAOyC,GAChB,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAC1B,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAC1B,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAEnB,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,OAAAzC,EAAOyC,CAAM,EAAK,KAAK,EACvBzC,EAAOyC,EAAS,GAAM,KAAK,EAC3BzC,EAAOyC,EAAS,GAAM,KAAK,EAC3BzC,EAAOyC,EAAS,GAAM,KAAK,EAEpBzC,CAEP,CAED,oBAAqB0C,EAAW5C,EAAQ,CAEvC,YAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAEvB,IAEP,CAED,QAAS,CAER,YAAK,EAAI,KAAK,SACd,KAAK,EAAI,KAAK,SACd,KAAK,EAAI,KAAK,SACd,KAAK,EAAI,KAAK,SAEP,IAEP,CAED,EAAG,OAAO,WAAa,CAEtB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CAEX,CAEF,CAOA,MAAMwK,WAAqB7K,EAAgB,CAE1C,YAAa8K,EAAQ,EAAGC,EAAS,EAAGC,EAAU,GAAK,CAElD,QAEA,KAAK,eAAiB,GAEtB,KAAK,MAAQF,EACb,KAAK,OAASC,EACd,KAAK,MAAQ,EAEb,KAAK,QAAU,IAAIrB,GAAS,EAAG,EAAGoB,EAAOC,GACzC,KAAK,YAAc,GAEnB,KAAK,SAAW,IAAIrB,GAAS,EAAG,EAAGoB,EAAOC,GAE1C,MAAM3C,EAAQ,CAAE,MAAO0C,EAAO,OAAQC,EAAQ,MAAO,GAErDC,EAAU,OAAO,OAAQ,CACxB,gBAAiB,GACjB,eAAgB,KAChB,UAAWtQ,GACX,YAAa,GACb,cAAe,GACf,mBAAoB,GACpB,qBAAsB,GACtB,aAAc,KACd,QAAS,EACT,MAAO,CACP,EAAEsQ,CAAO,EAEV,MAAMC,EAAU,IAAIjC,GAASZ,EAAO4C,EAAQ,QAASA,EAAQ,MAAOA,EAAQ,MAAOA,EAAQ,UAAWA,EAAQ,UAAWA,EAAQ,OAAQA,EAAQ,KAAMA,EAAQ,WAAYA,EAAQ,YAEnLC,EAAQ,MAAQ,GAChBA,EAAQ,gBAAkBD,EAAQ,gBAClCC,EAAQ,eAAiBD,EAAQ,eAEjC,KAAK,SAAW,GAEhB,MAAME,EAAQF,EAAQ,MACtB,QAAUxK,EAAI,EAAGA,EAAI0K,EAAO1K,IAE3B,KAAK,SAAUA,CAAG,EAAGyK,EAAQ,MAAK,EAClC,KAAK,SAAUzK,GAAI,sBAAwB,GAI5C,KAAK,YAAcwK,EAAQ,YAC3B,KAAK,cAAgBA,EAAQ,cAE7B,KAAK,mBAAqBA,EAAQ,mBAClC,KAAK,qBAAuBA,EAAQ,qBAEpC,KAAK,aAAeA,EAAQ,aAE5B,KAAK,QAAUA,EAAQ,OAEvB,CAED,IAAI,SAAU,CAEb,OAAO,KAAK,SAAU,EAEtB,CAED,IAAI,QAAS7J,EAAQ,CAEpB,KAAK,SAAU,CAAG,EAAGA,CAErB,CAED,QAAS2J,EAAOC,EAAQI,EAAQ,EAAI,CAEnC,GAAK,KAAK,QAAUL,GAAS,KAAK,SAAWC,GAAU,KAAK,QAAUI,EAAQ,CAE7E,KAAK,MAAQL,EACb,KAAK,OAASC,EACd,KAAK,MAAQI,EAEb,QAAU3K,EAAI,EAAG4K,EAAK,KAAK,SAAS,OAAQ5K,EAAI4K,EAAI5K,IAEnD,KAAK,SAAUA,CAAC,EAAG,MAAM,MAAQsK,EACjC,KAAK,SAAUtK,CAAC,EAAG,MAAM,OAASuK,EAClC,KAAK,SAAUvK,CAAC,EAAG,MAAM,MAAQ2K,EAIlC,KAAK,QAAO,CAEZ,CAED,KAAK,SAAS,IAAK,EAAG,EAAGL,EAAOC,GAChC,KAAK,QAAQ,IAAK,EAAG,EAAGD,EAAOC,EAE/B,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAED,KAAMvB,EAAS,CAEd,KAAK,MAAQA,EAAO,MACpB,KAAK,OAASA,EAAO,OACrB,KAAK,MAAQA,EAAO,MAEpB,KAAK,QAAQ,KAAMA,EAAO,OAAO,EACjC,KAAK,YAAcA,EAAO,YAE1B,KAAK,SAAS,KAAMA,EAAO,QAAQ,EAEnC,KAAK,SAAS,OAAS,EAEvB,QAAUhJ,EAAI,EAAG4K,EAAK5B,EAAO,SAAS,OAAQhJ,EAAI4K,EAAI5K,IAErD,KAAK,SAAUA,GAAMgJ,EAAO,SAAUhJ,CAAC,EAAG,QAC1C,KAAK,SAAUA,GAAI,sBAAwB,GAM5C,MAAM4H,EAAQ,OAAO,OAAQ,CAAE,EAAEoB,EAAO,QAAQ,OAChD,YAAK,QAAQ,OAAS,IAAIf,GAAQL,CAAK,EAEvC,KAAK,YAAcoB,EAAO,YAC1B,KAAK,cAAgBA,EAAO,cAE5B,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,qBAAuBA,EAAO,qBAE9BA,EAAO,eAAiB,OAAO,KAAK,aAAeA,EAAO,aAAa,SAE5E,KAAK,QAAUA,EAAO,QAEf,IAEP,CAED,SAAU,CAET,KAAK,cAAe,CAAE,KAAM,SAAW,CAAA,CAEvC,CAEF,CAEA,MAAM6B,WAA0BR,EAAa,CAE5C,YAAaC,EAAQ,EAAGC,EAAS,EAAGC,EAAU,GAAK,CAElD,MAAOF,EAAOC,EAAQC,GAEtB,KAAK,oBAAsB,EAE3B,CAEF,CAEA,MAAMM,WAAyBtC,EAAQ,CAEtC,YAAaT,EAAO,KAAMuC,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAI,CAE5D,MAAO,IAAI,EAEX,KAAK,mBAAqB,GAE1B,KAAK,MAAQ,CAAE,KAAA5C,EAAM,MAAAuC,EAAO,OAAAC,EAAQ,MAAAI,GAEpC,KAAK,UAAY5Q,GACjB,KAAK,UAAYA,GAEjB,KAAK,MAAQF,GAEb,KAAK,gBAAkB,GACvB,KAAK,MAAQ,GACb,KAAK,gBAAkB,CAEvB,CAEF,CAoBA,MAAMkR,WAAsBvC,EAAQ,CAEnC,YAAaT,EAAO,KAAMuC,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAI,CAU5D,MAAO,IAAI,EAEX,KAAK,gBAAkB,GAEvB,KAAK,MAAQ,CAAE,KAAA5C,EAAM,MAAAuC,EAAO,OAAAC,EAAQ,MAAAI,GAEpC,KAAK,UAAY5Q,GACjB,KAAK,UAAYA,GAEjB,KAAK,MAAQF,GAEb,KAAK,gBAAkB,GACvB,KAAK,MAAQ,GACb,KAAK,gBAAkB,CAEvB,CAEF,CAoBA,MAAMmR,EAAW,CAEhB,YAAa9J,EAAI,EAAGC,EAAI,EAAGgI,EAAI,EAAGC,EAAI,EAAI,CAEzC,KAAK,aAAe,GAEpB,KAAK,GAAKlI,EACV,KAAK,GAAKC,EACV,KAAK,GAAKgI,EACV,KAAK,GAAKC,CAEV,CAED,OAAO,UAAW6B,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAYlK,EAAI,CAIzE,IAAImK,EAAKJ,EAAMC,EAAa,CAAG,EAC9BI,EAAKL,EAAMC,EAAa,CAAG,EAC3BK,EAAKN,EAAMC,EAAa,CAAG,EAC3BM,EAAKP,EAAMC,EAAa,GAEzB,MAAMO,EAAKN,EAAMC,EAAa,CAAG,EAChCM,EAAKP,EAAMC,EAAa,CAAG,EAC3BO,EAAKR,EAAMC,EAAa,CAAG,EAC3BQ,EAAKT,EAAMC,EAAa,GAEzB,GAAKlK,IAAM,EAAI,CAEd6J,EAAKC,EAAY,CAAG,EAAGK,EACvBN,EAAKC,EAAY,CAAG,EAAGM,EACvBP,EAAKC,EAAY,CAAG,EAAGO,EACvBR,EAAKC,EAAY,CAAG,EAAGQ,EACvB,MAEA,CAED,GAAKtK,IAAM,EAAI,CAEd6J,EAAKC,EAAY,CAAG,EAAGS,EACvBV,EAAKC,EAAY,CAAG,EAAGU,EACvBX,EAAKC,EAAY,CAAG,EAAGW,EACvBZ,EAAKC,EAAY,CAAG,EAAGY,EACvB,MAEA,CAED,GAAKJ,IAAOI,GAAMP,IAAOI,GAAMH,IAAOI,GAAMH,IAAOI,EAAK,CAEvD,IAAInK,EAAI,EAAIN,EACZ,MAAM2K,EAAMR,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAC9CE,EAAQD,GAAO,EAAI,EAAI,GACvBE,EAAS,EAAIF,EAAMA,EAGpB,GAAKE,EAAS,OAAO,QAAU,CAE9B,MAAMC,EAAM,KAAK,KAAMD,CAAQ,EAC9BE,EAAM,KAAK,MAAOD,EAAKH,EAAMC,CAAG,EAEjCtK,EAAI,KAAK,IAAKA,EAAIyK,CAAG,EAAKD,EAC1B9K,EAAI,KAAK,IAAKA,EAAI+K,CAAG,EAAKD,CAE1B,CAED,MAAME,EAAOhL,EAAI4K,EAQjB,GANAT,EAAKA,EAAK7J,EAAIiK,EAAKS,EACnBZ,EAAKA,EAAK9J,EAAIkK,EAAKQ,EACnBX,EAAKA,EAAK/J,EAAImK,EAAKO,EACnBV,EAAKA,EAAKhK,EAAIoK,EAAKM,EAGd1K,IAAM,EAAIN,EAAI,CAElB,MAAM6D,EAAI,EAAI,KAAK,KAAMsG,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,CAAE,EAE9DH,GAAMtG,EACNuG,GAAMvG,EACNwG,GAAMxG,EACNyG,GAAMzG,CAEN,CAED,CAEDgG,EAAKC,CAAW,EAAGK,EACnBN,EAAKC,EAAY,CAAG,EAAGM,EACvBP,EAAKC,EAAY,CAAG,EAAGO,EACvBR,EAAKC,EAAY,CAAG,EAAGQ,CAEvB,CAED,OAAO,wBAAyBT,EAAKC,EAAWC,EAAMC,EAAYC,EAAMC,EAAa,CAEpF,MAAMC,EAAKJ,EAAMC,GACXI,EAAKL,EAAMC,EAAa,CAAC,EACzBK,EAAKN,EAAMC,EAAa,CAAC,EACzBM,EAAKP,EAAMC,EAAa,CAAC,EAEzBO,EAAKN,EAAMC,GACXM,EAAKP,EAAMC,EAAa,CAAC,EACzBO,EAAKR,EAAMC,EAAa,CAAC,EACzBQ,EAAKT,EAAMC,EAAa,CAAC,EAE/B,OAAAL,EAAKC,CAAS,EAAKK,EAAKO,EAAKJ,EAAKC,EAAKH,EAAKK,EAAKJ,EAAKG,EACtDX,EAAKC,EAAY,CAAG,EAAGM,EAAKM,EAAKJ,EAAKE,EAAKH,EAAKE,EAAKJ,EAAKM,EAC1DZ,EAAKC,EAAY,CAAG,EAAGO,EAAKK,EAAKJ,EAAKG,EAAKN,EAAKK,EAAKJ,EAAKG,EAC1DV,EAAKC,EAAY,CAAG,EAAGQ,EAAKI,EAAKP,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAEnDZ,CAEP,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAGtK,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAGA,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAGA,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAGA,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAKO,EAAGC,EAAGgI,EAAGC,EAAI,CAEjB,YAAK,GAAKlI,EACV,KAAK,GAAKC,EACV,KAAK,GAAKgI,EACV,KAAK,GAAKC,EAEV,KAAK,kBAAiB,EAEf,IAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,EAAE,CAE/D,CAED,KAAMiD,EAAa,CAElB,YAAK,GAAKA,EAAW,EACrB,KAAK,GAAKA,EAAW,EACrB,KAAK,GAAKA,EAAW,EACrB,KAAK,GAAKA,EAAW,EAErB,KAAK,kBAAiB,EAEf,IAEP,CAED,aAAcC,EAAOC,EAAS,GAAO,CAEpC,MAAMrL,EAAIoL,EAAM,GAAInL,EAAImL,EAAM,GAAInD,EAAImD,EAAM,GAAIE,EAAQF,EAAM,OAMxDP,EAAM,KAAK,IACXG,EAAM,KAAK,IAEXO,EAAKV,EAAK7K,EAAI,CAAC,EACfwL,EAAKX,EAAK5K,EAAI,CAAC,EACfwL,EAAKZ,EAAK5C,EAAI,CAAC,EAEfyD,EAAKV,EAAKhL,EAAI,CAAC,EACf2L,EAAKX,EAAK/K,EAAI,CAAC,EACf2L,EAAKZ,EAAK/C,EAAI,CAAC,EAErB,OAASqD,EAAK,CAEb,IAAK,MACJ,KAAK,GAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EAAKC,EACnC,KAAK,GAAKL,EAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EACnC,KAAK,GAAKL,EAAKC,EAAKI,EAAKF,EAAKC,EAAKF,EACnC,KAAK,GAAKF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC,MAED,IAAK,MACJ,KAAK,GAAKF,EAAKF,EAAKC,EAAKF,EAAKI,EAAKC,EACnC,KAAK,GAAKL,EAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EACnC,KAAK,GAAKL,EAAKC,EAAKI,EAAKF,EAAKC,EAAKF,EACnC,KAAK,GAAKF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC,MAED,IAAK,MACJ,KAAK,GAAKF,EAAKF,EAAKC,EAAKF,EAAKI,EAAKC,EACnC,KAAK,GAAKL,EAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EACnC,KAAK,GAAKL,EAAKC,EAAKI,EAAKF,EAAKC,EAAKF,EACnC,KAAK,GAAKF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC,MAED,IAAK,MACJ,KAAK,GAAKF,EAAKF,EAAKC,EAAKF,EAAKI,EAAKC,EACnC,KAAK,GAAKL,EAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EACnC,KAAK,GAAKL,EAAKC,EAAKI,EAAKF,EAAKC,EAAKF,EACnC,KAAK,GAAKF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC,MAED,IAAK,MACJ,KAAK,GAAKF,EAAKF,EAAKC,EAAKF,EAAKI,EAAKC,EACnC,KAAK,GAAKL,EAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EACnC,KAAK,GAAKL,EAAKC,EAAKI,EAAKF,EAAKC,EAAKF,EACnC,KAAK,GAAKF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC,MAED,IAAK,MACJ,KAAK,GAAKF,EAAKF,EAAKC,EAAKF,EAAKI,EAAKC,EACnC,KAAK,GAAKL,EAAKI,EAAKF,EAAKC,EAAKF,EAAKI,EACnC,KAAK,GAAKL,EAAKC,EAAKI,EAAKF,EAAKC,EAAKF,EACnC,KAAK,GAAKF,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC,MAED,QACC,QAAQ,KAAM,mEAAqEN,EAEpF,CAED,OAAKD,IAAW,IAAO,KAAK,kBAAiB,EAEtC,IAEP,CAED,iBAAkBQ,EAAMpK,EAAQ,CAM/B,MAAMqK,EAAYrK,EAAQ,EAAGjB,EAAI,KAAK,IAAKsL,GAE3C,YAAK,GAAKD,EAAK,EAAIrL,EACnB,KAAK,GAAKqL,EAAK,EAAIrL,EACnB,KAAK,GAAKqL,EAAK,EAAIrL,EACnB,KAAK,GAAK,KAAK,IAAKsL,CAAS,EAE7B,KAAK,kBAAiB,EAEf,IAEP,CAED,sBAAuBhM,EAAI,CAM1B,MAAMuC,EAAKvC,EAAE,SAEZsI,EAAM/F,EAAI,CAAC,EAAIgG,EAAMhG,EAAI,GAAKiG,EAAMjG,EAAI,CAAG,EAC3CkG,EAAMlG,EAAI,CAAC,EAAImG,EAAMnG,EAAI,GAAKoG,EAAMpG,EAAI,CAAG,EAC3CqG,EAAMrG,EAAI,CAAC,EAAIsG,EAAMtG,EAAI,GAAKuG,EAAMvG,EAAI,EAAI,EAE5C0J,EAAQ3D,EAAMI,EAAMI,EAErB,GAAKmD,EAAQ,EAAI,CAEhB,MAAMvL,EAAI,GAAM,KAAK,KAAMuL,EAAQ,GAEnC,KAAK,GAAK,IAAOvL,EACjB,KAAK,IAAOmI,EAAMF,GAAQjI,EAC1B,KAAK,IAAO8H,EAAMI,GAAQlI,EAC1B,KAAK,IAAO+H,EAAMF,GAAQ7H,CAE1B,SAAW4H,EAAMI,GAAOJ,EAAMQ,EAAM,CAEpC,MAAMpI,EAAI,EAAM,KAAK,KAAM,EAAM4H,EAAMI,EAAMI,GAE7C,KAAK,IAAOD,EAAMF,GAAQjI,EAC1B,KAAK,GAAK,IAAOA,EACjB,KAAK,IAAO6H,EAAME,GAAQ/H,EAC1B,KAAK,IAAO8H,EAAMI,GAAQlI,CAE7B,SAAcgI,EAAMI,EAAM,CAEvB,MAAMpI,EAAI,EAAM,KAAK,KAAM,EAAMgI,EAAMJ,EAAMQ,GAE7C,KAAK,IAAON,EAAMI,GAAQlI,EAC1B,KAAK,IAAO6H,EAAME,GAAQ/H,EAC1B,KAAK,GAAK,IAAOA,EACjB,KAAK,IAAOiI,EAAME,GAAQnI,CAE7B,KAAS,CAEN,MAAMA,EAAI,EAAM,KAAK,KAAM,EAAMoI,EAAMR,EAAMI,GAE7C,KAAK,IAAOD,EAAMF,GAAQ7H,EAC1B,KAAK,IAAO8H,EAAMI,GAAQlI,EAC1B,KAAK,IAAOiI,EAAME,GAAQnI,EAC1B,KAAK,GAAK,IAAOA,CAEjB,CAED,YAAK,kBAAiB,EAEf,IAEP,CAED,mBAAoBwL,EAAOC,EAAM,CAIhC,IAAIxH,EAAIuH,EAAM,IAAKC,CAAG,EAAK,EAE3B,OAAKxH,EAAI,OAAO,SAIfA,EAAI,EAEC,KAAK,IAAKuH,EAAM,CAAC,EAAK,KAAK,IAAKA,EAAM,IAE1C,KAAK,GAAK,CAAEA,EAAM,EAClB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAK,EACV,KAAK,GAAKvH,IAIV,KAAK,GAAK,EACV,KAAK,GAAK,CAAEuH,EAAM,EAClB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAKvH,KAQX,KAAK,GAAKuH,EAAM,EAAIC,EAAI,EAAID,EAAM,EAAIC,EAAI,EAC1C,KAAK,GAAKD,EAAM,EAAIC,EAAI,EAAID,EAAM,EAAIC,EAAI,EAC1C,KAAK,GAAKD,EAAM,EAAIC,EAAI,EAAID,EAAM,EAAIC,EAAI,EAC1C,KAAK,GAAKxH,GAIJ,KAAK,WAEZ,CAED,QAAS0D,EAAI,CAEZ,MAAO,GAAI,KAAK,KAAM,KAAK,IAAK3I,GAAO,KAAK,IAAK2I,CAAC,EAAI,GAAK,CAAC,CAAI,CAAA,CAEhE,CAED,cAAeA,EAAG+D,EAAO,CAExB,MAAMzK,EAAQ,KAAK,QAAS0G,CAAC,EAE7B,GAAK1G,IAAU,EAAI,OAAO,KAE1B,MAAMvB,EAAI,KAAK,IAAK,EAAGgM,EAAOzK,GAE9B,YAAK,MAAO0G,EAAGjI,GAER,IAEP,CAED,UAAW,CAEV,OAAO,KAAK,IAAK,EAAG,EAAG,EAAG,EAE1B,CAED,QAAS,CAIR,OAAO,KAAK,WAEZ,CAED,WAAY,CAEX,YAAK,IAAM,GACX,KAAK,IAAM,GACX,KAAK,IAAM,GAEX,KAAK,kBAAiB,EAEf,IAEP,CAED,IAAKK,EAAI,CAER,OAAO,KAAK,GAAKA,EAAE,GAAK,KAAK,GAAKA,EAAE,GAAK,KAAK,GAAKA,EAAE,GAAK,KAAK,GAAKA,EAAE,EAEtE,CAED,UAAW,CAEV,OAAO,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,EAElF,CAED,QAAS,CAER,OAAO,KAAK,KAAM,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAAK,KAAK,GAE7F,CAED,WAAY,CAEX,IAAIxB,EAAI,KAAK,SAEb,OAAKA,IAAM,GAEV,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,EACV,KAAK,GAAK,IAIVA,EAAI,EAAIA,EAER,KAAK,GAAK,KAAK,GAAKA,EACpB,KAAK,GAAK,KAAK,GAAKA,EACpB,KAAK,GAAK,KAAK,GAAKA,EACpB,KAAK,GAAK,KAAK,GAAKA,GAIrB,KAAK,kBAAiB,EAEf,IAEP,CAED,SAAUoJ,EAAI,CAEb,OAAO,KAAK,oBAAqB,KAAMA,CAAC,CAExC,CAED,YAAaA,EAAI,CAEhB,OAAO,KAAK,oBAAqBA,EAAG,IAAI,CAExC,CAED,oBAAqB1H,EAAGC,EAAI,CAI3B,MAAMyL,EAAM1L,EAAE,GAAI2L,EAAM3L,EAAE,GAAI4L,EAAM5L,EAAE,GAAI6L,EAAM7L,EAAE,GAC5C8L,EAAM7L,EAAE,GAAI8L,EAAM9L,EAAE,GAAI+L,EAAM/L,EAAE,GAAIgM,EAAMhM,EAAE,GAElD,YAAK,GAAKyL,EAAMO,EAAMJ,EAAMC,EAAMH,EAAMK,EAAMJ,EAAMG,EACpD,KAAK,GAAKJ,EAAMM,EAAMJ,EAAME,EAAMH,EAAME,EAAMJ,EAAMM,EACpD,KAAK,GAAKJ,EAAMK,EAAMJ,EAAMG,EAAMN,EAAMK,EAAMJ,EAAMG,EACpD,KAAK,GAAKD,EAAMI,EAAMP,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,EAEpD,KAAK,kBAAiB,EAEf,IAEP,CAED,MAAOE,EAAIzM,EAAI,CAEd,GAAKA,IAAM,EAAI,OAAO,KACtB,GAAKA,IAAM,EAAI,OAAO,KAAK,KAAMyM,CAAE,EAEnC,MAAM3M,EAAI,KAAK,GAAIC,EAAI,KAAK,GAAIgI,EAAI,KAAK,GAAIC,EAAI,KAAK,GAItD,IAAI0E,EAAe1E,EAAIyE,EAAG,GAAK3M,EAAI2M,EAAG,GAAK1M,EAAI0M,EAAG,GAAK1E,EAAI0E,EAAG,GAiB9D,GAfKC,EAAe,GAEnB,KAAK,GAAK,CAAED,EAAG,GACf,KAAK,GAAK,CAAEA,EAAG,GACf,KAAK,GAAK,CAAEA,EAAG,GACf,KAAK,GAAK,CAAEA,EAAG,GAEfC,EAAe,CAAEA,GAIjB,KAAK,KAAMD,GAIPC,GAAgB,EAEpB,YAAK,GAAK1E,EACV,KAAK,GAAKlI,EACV,KAAK,GAAKC,EACV,KAAK,GAAKgI,EAEH,KAIR,MAAM4E,EAAkB,EAAMD,EAAeA,EAE7C,GAAKC,GAAmB,OAAO,QAAU,CAExC,MAAMrM,EAAI,EAAIN,EACd,YAAK,GAAKM,EAAI0H,EAAIhI,EAAI,KAAK,GAC3B,KAAK,GAAKM,EAAIR,EAAIE,EAAI,KAAK,GAC3B,KAAK,GAAKM,EAAIP,EAAIC,EAAI,KAAK,GAC3B,KAAK,GAAKM,EAAIyH,EAAI/H,EAAI,KAAK,GAE3B,KAAK,UAAS,EAEP,IAEP,CAED,MAAM4M,EAAe,KAAK,KAAMD,CAAe,EACzCE,EAAY,KAAK,MAAOD,EAAcF,CAAY,EAClDI,EAAS,KAAK,KAAO,EAAI9M,GAAM6M,CAAS,EAAKD,EAClDG,EAAS,KAAK,IAAK/M,EAAI6M,CAAS,EAAKD,EAEtC,YAAK,GAAO5E,EAAI8E,EAAS,KAAK,GAAKC,EACnC,KAAK,GAAOjN,EAAIgN,EAAS,KAAK,GAAKC,EACnC,KAAK,GAAOhN,EAAI+M,EAAS,KAAK,GAAKC,EACnC,KAAK,GAAOhF,EAAI+E,EAAS,KAAK,GAAKC,EAEnC,KAAK,kBAAiB,EAEf,IAEP,CAED,iBAAkBC,EAAIP,EAAIzM,EAAI,CAE7B,OAAO,KAAK,KAAMgN,CAAE,EAAG,MAAOP,EAAIzM,EAElC,CAED,QAAS,CAQR,MAAMiN,EAAS,EAAI,KAAK,GAAK,KAAK,SAC5BC,EAAS,EAAI,KAAK,GAAK,KAAK,SAE5B/C,EAAK,KAAK,SACVgD,EAAK,KAAK,KAAM,EAAIhD,CAAE,EACtBiD,EAAK,KAAK,KAAMjD,CAAE,EAExB,OAAO,KAAK,IACXgD,EAAK,KAAK,IAAKF,CAAQ,EACvBE,EAAK,KAAK,IAAKF,CAAQ,EACvBG,EAAK,KAAK,IAAKF,CAAQ,EACvBE,EAAK,KAAK,IAAKF,CAAQ,CAC1B,CAEE,CAED,OAAQjC,EAAa,CAEpB,OAASA,EAAW,KAAO,KAAK,IAAUA,EAAW,KAAO,KAAK,IAAUA,EAAW,KAAO,KAAK,IAAUA,EAAW,KAAO,KAAK,EAEnI,CAED,UAAWtM,EAAOyC,EAAS,EAAI,CAE9B,YAAK,GAAKzC,EAAOyC,GACjB,KAAK,GAAKzC,EAAOyC,EAAS,CAAC,EAC3B,KAAK,GAAKzC,EAAOyC,EAAS,CAAC,EAC3B,KAAK,GAAKzC,EAAOyC,EAAS,CAAC,EAE3B,KAAK,kBAAiB,EAEf,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,OAAAzC,EAAOyC,CAAM,EAAK,KAAK,GACvBzC,EAAOyC,EAAS,GAAM,KAAK,GAC3BzC,EAAOyC,EAAS,GAAM,KAAK,GAC3BzC,EAAOyC,EAAS,GAAM,KAAK,GAEpBzC,CAEP,CAED,oBAAqB0C,EAAW5C,EAAQ,CAEvC,YAAK,GAAK4C,EAAU,KAAM5C,CAAK,EAC/B,KAAK,GAAK4C,EAAU,KAAM5C,CAAK,EAC/B,KAAK,GAAK4C,EAAU,KAAM5C,CAAK,EAC/B,KAAK,GAAK4C,EAAU,KAAM5C,CAAK,EAE/B,KAAK,kBAAiB,EAEf,IAEP,CAED,QAAS,CAER,OAAO,KAAK,SAEZ,CAED,UAAW4O,EAAW,CAErB,YAAK,kBAAoBA,EAElB,IAEP,CAED,mBAAoB,CAAE,CAEtB,EAAG,OAAO,WAAa,CAEtB,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,EAEX,CAEF,CAEA,MAAMC,CAAQ,CAEb,YAAaxN,EAAI,EAAGC,EAAI,EAAGgI,EAAI,EAAI,CAElCuF,EAAQ,UAAU,UAAY,GAE9B,KAAK,EAAIxN,EACT,KAAK,EAAIC,EACT,KAAK,EAAIgI,CAET,CAED,IAAKjI,EAAGC,EAAGgI,EAAI,CAEd,OAAKA,IAAM,SAAYA,EAAI,KAAK,GAEhC,KAAK,EAAIjI,EACT,KAAK,EAAIC,EACT,KAAK,EAAIgI,EAEF,IAEP,CAED,UAAW3H,EAAS,CAEnB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EAEF,IAEP,CAED,KAAMN,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,KAAMC,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,KAAMgI,EAAI,CAET,YAAK,EAAIA,EAEF,IAEP,CAED,aAActJ,EAAOc,EAAQ,CAE5B,OAASd,EAAK,CAEb,IAAK,GAAG,KAAK,EAAIc,EAAO,MACxB,IAAK,GAAG,KAAK,EAAIA,EAAO,MACxB,IAAK,GAAG,KAAK,EAAIA,EAAO,MACxB,QAAS,MAAM,IAAI,MAAO,0BAA4Bd,CAAK,CAE3D,CAED,OAAO,IAEP,CAED,aAAcA,EAAQ,CAErB,OAASA,EAAK,CAEb,IAAK,GAAG,OAAO,KAAK,EACpB,IAAK,GAAG,OAAO,KAAK,EACpB,IAAK,GAAG,OAAO,KAAK,EACpB,QAAS,MAAM,IAAI,MAAO,0BAA4BA,CAAK,CAE3D,CAED,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,EAAG,KAAK,EAAG,KAAK,EAElD,CAED,KAAM4B,EAAI,CAET,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EAEJ,IAEP,CAED,IAAKA,EAAI,CAER,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,UAAWC,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,WAAYC,EAAGC,EAAI,CAElB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,gBAAiBH,EAAGC,EAAI,CAEvB,YAAK,GAAKD,EAAE,EAAIC,EAChB,KAAK,GAAKD,EAAE,EAAIC,EAChB,KAAK,GAAKD,EAAE,EAAIC,EAET,IAEP,CAED,IAAKD,EAAI,CAER,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,UAAWC,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,WAAYC,EAAGC,EAAI,CAElB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,SAAUH,EAAI,CAEb,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,eAAgBD,EAAS,CAExB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,gBAAiBG,EAAGC,EAAI,CAEvB,YAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EACjB,KAAK,EAAID,EAAE,EAAIC,EAAE,EAEV,IAEP,CAED,WAAY0K,EAAQ,CAEnB,OAAO,KAAK,gBAAiBqC,GAAc,aAAcrC,CAAO,CAAA,CAEhE,CAED,eAAgBS,EAAMpK,EAAQ,CAE7B,OAAO,KAAK,gBAAiBgM,GAAc,iBAAkB5B,EAAMpK,CAAK,EAExE,CAED,aAAc3B,EAAI,CAEjB,MAAME,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGgI,EAAI,KAAK,EACjCtH,EAAIb,EAAE,SAEZ,YAAK,EAAIa,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,CAAC,EAAKsH,EAC5C,KAAK,EAAItH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,CAAC,EAAKsH,EAC5C,KAAK,EAAItH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,CAAC,EAAKsH,EAErC,IAEP,CAED,kBAAmBnI,EAAI,CAEtB,OAAO,KAAK,aAAcA,CAAG,EAAC,UAAS,CAEvC,CAED,aAAcA,EAAI,CAEjB,MAAME,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGgI,EAAI,KAAK,EACjCtH,EAAIb,EAAE,SAENoI,EAAI,GAAMvH,EAAG,CAAG,EAAGX,EAAIW,EAAG,CAAG,EAAGV,EAAIU,EAAG,EAAI,EAAGsH,EAAItH,EAAG,EAAE,GAE7D,YAAK,GAAMA,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,GAAMsH,EAAItH,EAAG,EAAI,GAAKuH,EAC9D,KAAK,GAAMvH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,GAAMsH,EAAItH,EAAG,EAAI,GAAKuH,EAC9D,KAAK,GAAMvH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,IAAOsH,EAAItH,EAAG,EAAI,GAAKuH,EAExD,IAEP,CAED,gBAAiBC,EAAI,CAIpB,MAAMuF,EAAK,KAAK,EAAGC,EAAK,KAAK,EAAGC,EAAK,KAAK,EACpCC,EAAK1F,EAAE,EAAG2F,EAAK3F,EAAE,EAAG4F,EAAK5F,EAAE,EAAG6F,EAAK7F,EAAE,EAGrCzD,EAAK,GAAMoJ,EAAKF,EAAKG,EAAKJ,GAC1BhJ,EAAK,GAAMoJ,EAAKL,EAAKG,EAAKD,GAC1BK,EAAK,GAAMJ,EAAKF,EAAKG,EAAKJ,GAGhC,YAAK,EAAIA,EAAKM,EAAKtJ,EAAKoJ,EAAKG,EAAKF,EAAKpJ,EACvC,KAAK,EAAIgJ,EAAKK,EAAKrJ,EAAKoJ,EAAKrJ,EAAKmJ,EAAKI,EACvC,KAAK,EAAIL,EAAKI,EAAKC,EAAKJ,EAAKlJ,EAAKmJ,EAAKpJ,EAEhC,IAEP,CAED,QAASwJ,EAAS,CAEjB,OAAO,KAAK,aAAcA,EAAO,kBAAoB,EAAC,aAAcA,EAAO,iBAE3E,CAED,UAAWA,EAAS,CAEnB,OAAO,KAAK,aAAcA,EAAO,uBAAyB,EAAC,aAAcA,EAAO,YAEhF,CAED,mBAAoBpO,EAAI,CAKvB,MAAME,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGgI,EAAI,KAAK,EACjCtH,EAAIb,EAAE,SAEZ,YAAK,EAAIa,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,CAAC,EAAKsH,EAC5C,KAAK,EAAItH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,CAAC,EAAKsH,EAC5C,KAAK,EAAItH,EAAG,CAAC,EAAKX,EAAIW,EAAG,CAAC,EAAKV,EAAIU,EAAG,EAAE,EAAKsH,EAEtC,KAAK,WAEZ,CAED,OAAQ1H,EAAI,CAEX,YAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EACZ,KAAK,GAAKA,EAAE,EAEL,IAEP,CAED,aAAcD,EAAS,CAEtB,OAAO,KAAK,eAAgB,EAAIA,CAAM,CAEtC,CAED,IAAKC,EAAI,CAER,YAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAEtB,IAEP,CAED,IAAKA,EAAI,CAER,YAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAC7B,KAAK,EAAI,KAAK,IAAK,KAAK,EAAGA,EAAE,GAEtB,IAEP,CAED,MAAOb,EAAKC,EAAM,CAIjB,YAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EACnD,KAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EACnD,KAAK,EAAI,KAAK,IAAKD,EAAI,EAAG,KAAK,IAAKC,EAAI,EAAG,KAAK,CAAG,CAAA,EAE5C,IAEP,CAED,YAAaiB,EAAQC,EAAS,CAE7B,YAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EACrD,KAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EACrD,KAAK,EAAI,KAAK,IAAKD,EAAQ,KAAK,IAAKC,EAAQ,KAAK,CAAG,CAAA,EAE9C,IAEP,CAED,YAAanB,EAAKC,EAAM,CAEvB,MAAMmB,EAAS,KAAK,SAEpB,OAAO,KAAK,aAAcA,GAAU,CAAG,EAAC,eAAgB,KAAK,IAAKpB,EAAK,KAAK,IAAKC,EAAKmB,CAAM,CAAI,CAAA,CAEhG,CAED,OAAQ,CAEP,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,MAAO,CAEN,YAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAC1B,KAAK,EAAI,KAAK,KAAM,KAAK,CAAC,EAEnB,IAEP,CAED,OAAQ,CAEP,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,aAAc,CAEb,YAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAC3B,KAAK,EAAI,KAAK,MAAO,KAAK,CAAC,EAEpB,IAEP,CAED,QAAS,CAER,YAAK,EAAI,CAAE,KAAK,EAChB,KAAK,EAAI,CAAE,KAAK,EAChB,KAAK,EAAI,CAAE,KAAK,EAET,IAEP,CAED,IAAKP,EAAI,CAER,OAAO,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,EAAI,KAAK,EAAIA,EAAE,CAEhD,CAID,UAAW,CAEV,OAAO,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAEzD,CAED,QAAS,CAER,OAAO,KAAK,KAAM,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAEpE,CAED,iBAAkB,CAEjB,OAAO,KAAK,IAAK,KAAK,CAAC,EAAK,KAAK,IAAK,KAAK,CAAG,EAAG,KAAK,IAAK,KAAK,CAAC,CAEjE,CAED,WAAY,CAEX,OAAO,KAAK,aAAc,KAAK,OAAQ,GAAI,CAAC,CAE5C,CAED,UAAWO,EAAS,CAEnB,OAAO,KAAK,UAAS,EAAG,eAAgBA,CAAM,CAE9C,CAED,KAAMP,EAAGY,EAAQ,CAEhB,YAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAC7B,KAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAC7B,KAAK,IAAOZ,EAAE,EAAI,KAAK,GAAMY,EAEtB,IAEP,CAED,YAAaC,EAAIC,EAAIF,EAAQ,CAE5B,YAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAClC,KAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAClC,KAAK,EAAIC,EAAG,GAAMC,EAAG,EAAID,EAAG,GAAMD,EAE3B,IAEP,CAED,MAAOZ,EAAI,CAEV,OAAO,KAAK,aAAc,KAAMA,CAAC,CAEjC,CAED,aAAcE,EAAGC,EAAI,CAEpB,MAAMyN,EAAK1N,EAAE,EAAG2N,EAAK3N,EAAE,EAAG4N,EAAK5N,EAAE,EAC3B6N,EAAK5N,EAAE,EAAG6N,EAAK7N,EAAE,EAAG8N,EAAK9N,EAAE,EAEjC,YAAK,EAAI0N,EAAKI,EAAKH,EAAKE,EACxB,KAAK,EAAIF,EAAKC,EAAKH,EAAKK,EACxB,KAAK,EAAIL,EAAKI,EAAKH,EAAKE,EAEjB,IAEP,CAED,gBAAiB/N,EAAI,CAEpB,MAAMQ,EAAcR,EAAE,WAEtB,GAAKQ,IAAgB,EAAI,OAAO,KAAK,IAAK,EAAG,EAAG,GAEhD,MAAMT,EAASC,EAAE,IAAK,IAAI,EAAKQ,EAE/B,OAAO,KAAK,KAAMR,CAAG,EAAC,eAAgBD,CAAM,CAE5C,CAED,eAAgBmO,EAAc,CAE7B,OAAAC,GAAU,KAAM,IAAM,EAAC,gBAAiBD,CAAW,EAE5C,KAAK,IAAKC,GAEjB,CAED,QAASC,EAAS,CAKjB,OAAO,KAAK,IAAKD,GAAU,KAAMC,CAAQ,EAAC,eAAgB,EAAI,KAAK,IAAKA,CAAM,CAAI,CAAA,CAElF,CAED,QAASpO,EAAI,CAEZ,MAAMQ,EAAc,KAAK,KAAM,KAAK,WAAaR,EAAE,SAAQ,GAE3D,GAAKQ,IAAgB,EAAI,OAAO,KAAK,GAAK,EAE1C,MAAMC,EAAQ,KAAK,IAAKT,CAAC,EAAKQ,EAI9B,OAAO,KAAK,KAAMvB,GAAOwB,EAAO,GAAK,CAAC,EAEtC,CAED,WAAYT,EAAI,CAEf,OAAO,KAAK,KAAM,KAAK,kBAAmBA,CAAG,CAAA,CAE7C,CAED,kBAAmBA,EAAI,CAEtB,MAAMU,EAAK,KAAK,EAAIV,EAAE,EAAGW,EAAK,KAAK,EAAIX,EAAE,EAAGqO,EAAK,KAAK,EAAIrO,EAAE,EAE5D,OAAOU,EAAKA,EAAKC,EAAKA,EAAK0N,EAAKA,CAEhC,CAED,oBAAqBrO,EAAI,CAExB,OAAO,KAAK,IAAK,KAAK,EAAIA,EAAE,CAAC,EAAK,KAAK,IAAK,KAAK,EAAIA,EAAE,CAAG,EAAG,KAAK,IAAK,KAAK,EAAIA,EAAE,EAElF,CAED,iBAAkBC,EAAI,CAErB,OAAO,KAAK,uBAAwBA,EAAE,OAAQA,EAAE,IAAKA,EAAE,MAEvD,CAED,uBAAwBqO,EAAQC,EAAK9N,EAAQ,CAE5C,MAAM+N,EAAe,KAAK,IAAKD,CAAG,EAAKD,EAEvC,YAAK,EAAIE,EAAe,KAAK,IAAK/N,CAAK,EACvC,KAAK,EAAI,KAAK,IAAK8N,CAAG,EAAKD,EAC3B,KAAK,EAAIE,EAAe,KAAK,IAAK/N,CAAK,EAEhC,IAEP,CAED,mBAAoBU,EAAI,CAEvB,OAAO,KAAK,yBAA0BA,EAAE,OAAQA,EAAE,MAAOA,EAAE,EAE3D,CAED,yBAA0BmN,EAAQ7N,EAAOf,EAAI,CAE5C,YAAK,EAAI4O,EAAS,KAAK,IAAK7N,CAAK,EACjC,KAAK,EAAIf,EACT,KAAK,EAAI4O,EAAS,KAAK,IAAK7N,CAAK,EAE1B,IAEP,CAED,sBAAuBlB,EAAI,CAE1B,MAAM,EAAIA,EAAE,SAEZ,YAAK,EAAI,EAAG,IACZ,KAAK,EAAI,EAAG,IACZ,KAAK,EAAI,EAAG,IAEL,IAEP,CAED,mBAAoBA,EAAI,CAEvB,MAAM8E,EAAK,KAAK,oBAAqB9E,EAAG,CAAC,EAAG,SACtC+E,EAAK,KAAK,oBAAqB/E,EAAG,CAAC,EAAG,SACtCkP,EAAK,KAAK,oBAAqBlP,EAAG,CAAC,EAAG,SAE5C,YAAK,EAAI8E,EACT,KAAK,EAAIC,EACT,KAAK,EAAImK,EAEF,IAEP,CAED,oBAAqBlP,EAAGnB,EAAQ,CAE/B,OAAO,KAAK,UAAWmB,EAAE,SAAUnB,EAAQ,EAE3C,CAED,qBAAsBmB,EAAGnB,EAAQ,CAEhC,OAAO,KAAK,UAAWmB,EAAE,SAAUnB,EAAQ,EAE3C,CAED,aAAcgC,EAAI,CAEjB,YAAK,EAAIA,EAAE,GACX,KAAK,EAAIA,EAAE,GACX,KAAK,EAAIA,EAAE,GAEJ,IAEP,CAED,aAAce,EAAI,CAEjB,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EAEJ,IAEP,CAED,OAAQnB,EAAI,CAEX,OAAWA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,CAEpE,CAED,UAAW1B,EAAOyC,EAAS,EAAI,CAE9B,YAAK,EAAIzC,EAAOyC,GAChB,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAC1B,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAEnB,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,OAAAzC,EAAOyC,CAAM,EAAK,KAAK,EACvBzC,EAAOyC,EAAS,GAAM,KAAK,EAC3BzC,EAAOyC,EAAS,GAAM,KAAK,EAEpBzC,CAEP,CAED,oBAAqB0C,EAAW5C,EAAQ,CAEvC,YAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAEvB,IAEP,CAED,QAAS,CAER,YAAK,EAAI,KAAK,SACd,KAAK,EAAI,KAAK,SACd,KAAK,EAAI,KAAK,SAEP,IAEP,CAED,iBAAkB,CAIjB,MAAMqC,EAAQ,KAAK,OAAQ,EAAG,KAAK,GAAK,EAClCiO,EAAI,KAAK,OAAM,EAAK,EAAI,EACxBvN,EAAI,KAAK,KAAM,EAAIuN,EAAIA,GAE7B,YAAK,EAAIvN,EAAI,KAAK,IAAKV,CAAK,EAC5B,KAAK,EAAIiO,EACT,KAAK,EAAIvN,EAAI,KAAK,IAAKV,CAAK,EAErB,IAEP,CAED,EAAG,OAAO,WAAa,CAEtB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CAEX,CAEF,CAEA,MAAM0N,GAA0B,IAAIlB,EAC9BC,GAA8B,IAAI3D,GAExC,MAAMoF,EAAK,CAEV,YAAaxP,EAAM,IAAI8N,EAAS,IAAY,IAAY,GAAY,EAAE7N,EAAM,IAAI6N,EAAS,KAAY,KAAY,MAAe,CAE/H,KAAK,OAAS,GAEd,KAAK,IAAM9N,EACX,KAAK,IAAMC,CAEX,CAED,IAAKD,EAAKC,EAAM,CAEf,YAAK,IAAI,KAAMD,GACf,KAAK,IAAI,KAAMC,GAER,IAEP,CAED,aAAcd,EAAQ,CAErB,KAAK,UAAS,EAEd,QAAUC,EAAI,EAAG4K,EAAK7K,EAAM,OAAQC,EAAI4K,EAAI5K,GAAK,EAEhD,KAAK,cAAeqQ,GAAU,UAAWtQ,EAAOC,CAAC,GAIlD,OAAO,IAEP,CAED,uBAAwByC,EAAY,CAEnC,KAAK,UAAS,EAEd,QAAUzC,EAAI,EAAG4K,EAAKnI,EAAU,MAAOzC,EAAI4K,EAAI5K,IAE9C,KAAK,cAAeqQ,GAAU,oBAAqB5N,EAAWzC,CAAC,GAIhE,OAAO,IAEP,CAED,cAAesQ,EAAS,CAEvB,KAAK,UAAS,EAEd,QAAUtQ,EAAI,EAAG4K,EAAK0F,EAAO,OAAQtQ,EAAI4K,EAAI5K,IAE5C,KAAK,cAAesQ,EAAQtQ,CAAG,CAAA,EAIhC,OAAO,IAEP,CAED,qBAAsB0C,EAAQ6N,EAAO,CAEpC,MAAMC,EAAWH,GAAU,KAAME,CAAI,EAAG,eAAgB,IAExD,YAAK,IAAI,KAAM7N,CAAM,EAAG,IAAK8N,GAC7B,KAAK,IAAI,KAAM9N,CAAM,EAAG,IAAK8N,GAEtB,IAEP,CAED,cAAeC,EAAQC,EAAU,GAAQ,CAExC,YAAK,UAAS,EAEP,KAAK,eAAgBD,EAAQC,CAAO,CAE3C,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAED,KAAMC,EAAM,CAEX,YAAK,IAAI,KAAMA,EAAI,GAAG,EACtB,KAAK,IAAI,KAAMA,EAAI,GAAG,EAEf,IAEP,CAED,WAAY,CAEX,YAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,IACvC,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KAEhC,IAEP,CAED,SAAU,CAIT,OAAS,KAAK,IAAI,EAAI,KAAK,IAAI,GAAS,KAAK,IAAI,EAAI,KAAK,IAAI,GAAS,KAAK,IAAI,EAAI,KAAK,IAAI,CAE7F,CAED,UAAWC,EAAS,CAEnB,OAAO,KAAK,UAAYA,EAAO,IAAK,EAAG,EAAG,CAAG,EAAGA,EAAO,WAAY,KAAK,IAAK,KAAK,KAAM,eAAgB,GAExG,CAED,QAASA,EAAS,CAEjB,OAAO,KAAK,QAAS,EAAGA,EAAO,IAAK,EAAG,EAAG,CAAC,EAAKA,EAAO,WAAY,KAAK,IAAK,KAAK,IAElF,CAED,cAAeC,EAAQ,CAEtB,YAAK,IAAI,IAAKA,GACd,KAAK,IAAI,IAAKA,GAEP,IAEP,CAED,eAAgBC,EAAS,CAExB,YAAK,IAAI,IAAKA,GACd,KAAK,IAAI,IAAKA,GAEP,IAEP,CAED,eAAgBtP,EAAS,CAExB,YAAK,IAAI,UAAW,CAAEA,CAAM,EAC5B,KAAK,IAAI,UAAWA,GAEb,IAEP,CAED,eAAgBiP,EAAQC,EAAU,GAAQ,CAKzCD,EAAO,kBAAmB,GAAO,IAEjC,MAAMM,EAAWN,EAAO,SAExB,GAAKM,IAAa,OAAY,CAE7B,MAAMC,EAAoBD,EAAS,aAAc,UAAU,EAK3D,GAAKL,IAAY,IAAQM,IAAsB,QAAaP,EAAO,kBAAoB,GAEtF,QAAUzQ,EAAI,EAAGC,EAAI+Q,EAAkB,MAAOhR,EAAIC,EAAGD,IAE/CyQ,EAAO,SAAW,GAEtBA,EAAO,kBAAmBzQ,EAAGqQ,IAI7BA,GAAU,oBAAqBW,EAAmBhR,GAInDqQ,GAAU,aAAcI,EAAO,aAC/B,KAAK,cAAeJ,SAMhBI,EAAO,cAAgB,QAItBA,EAAO,cAAgB,MAE3BA,EAAO,mBAAkB,EAI1BQ,GAAO,KAAMR,EAAO,eAOfM,EAAS,cAAgB,MAE7BA,EAAS,mBAAkB,EAI5BE,GAAO,KAAMF,EAAS,cAIvBE,GAAO,aAAcR,EAAO,aAE5B,KAAK,MAAOQ,GAIb,CAED,MAAMC,EAAWT,EAAO,SAExB,QAAUzQ,EAAI,EAAGC,EAAIiR,EAAS,OAAQlR,EAAIC,EAAGD,IAE5C,KAAK,eAAgBkR,EAAUlR,CAAG,EAAE0Q,CAAO,EAI5C,OAAO,IAEP,CAED,cAAeG,EAAQ,CAEtB,MAAO,EAAAA,EAAM,EAAI,KAAK,IAAI,GAAKA,EAAM,EAAI,KAAK,IAAI,GACjDA,EAAM,EAAI,KAAK,IAAI,GAAKA,EAAM,EAAI,KAAK,IAAI,GAC3CA,EAAM,EAAI,KAAK,IAAI,GAAKA,EAAM,EAAI,KAAK,IAAI,EAE5C,CAED,YAAaF,EAAM,CAElB,OAAO,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GACvD,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,GACjD,KAAK,IAAI,GAAKA,EAAI,IAAI,GAAKA,EAAI,IAAI,GAAK,KAAK,IAAI,CAElD,CAED,aAAcE,EAAOD,EAAS,CAK7B,OAAOA,EAAO,KACXC,EAAM,EAAI,KAAK,IAAI,IAAQ,KAAK,IAAI,EAAI,KAAK,IAAI,IACjDA,EAAM,EAAI,KAAK,IAAI,IAAQ,KAAK,IAAI,EAAI,KAAK,IAAI,IACjDA,EAAM,EAAI,KAAK,IAAI,IAAQ,KAAK,IAAI,EAAI,KAAK,IAAI,EACtD,CAEE,CAED,cAAeF,EAAM,CAGpB,MAAO,EAAAA,EAAI,IAAI,EAAI,KAAK,IAAI,GAAKA,EAAI,IAAI,EAAI,KAAK,IAAI,GACrDA,EAAI,IAAI,EAAI,KAAK,IAAI,GAAKA,EAAI,IAAI,EAAI,KAAK,IAAI,GAC/CA,EAAI,IAAI,EAAI,KAAK,IAAI,GAAKA,EAAI,IAAI,EAAI,KAAK,IAAI,EAEhD,CAED,iBAAkBQ,EAAS,CAG1B,YAAK,WAAYA,EAAO,OAAQd,EAAS,EAGlCA,GAAU,kBAAmBc,EAAO,MAAM,GAAQA,EAAO,OAASA,EAAO,MAEhF,CAED,gBAAiBC,EAAQ,CAKxB,IAAIxQ,EAAKC,EAET,OAAKuQ,EAAM,OAAO,EAAI,GAErBxQ,EAAMwQ,EAAM,OAAO,EAAI,KAAK,IAAI,EAChCvQ,EAAMuQ,EAAM,OAAO,EAAI,KAAK,IAAI,IAIhCxQ,EAAMwQ,EAAM,OAAO,EAAI,KAAK,IAAI,EAChCvQ,EAAMuQ,EAAM,OAAO,EAAI,KAAK,IAAI,GAI5BA,EAAM,OAAO,EAAI,GAErBxQ,GAAOwQ,EAAM,OAAO,EAAI,KAAK,IAAI,EACjCvQ,GAAOuQ,EAAM,OAAO,EAAI,KAAK,IAAI,IAIjCxQ,GAAOwQ,EAAM,OAAO,EAAI,KAAK,IAAI,EACjCvQ,GAAOuQ,EAAM,OAAO,EAAI,KAAK,IAAI,GAI7BA,EAAM,OAAO,EAAI,GAErBxQ,GAAOwQ,EAAM,OAAO,EAAI,KAAK,IAAI,EACjCvQ,GAAOuQ,EAAM,OAAO,EAAI,KAAK,IAAI,IAIjCxQ,GAAOwQ,EAAM,OAAO,EAAI,KAAK,IAAI,EACjCvQ,GAAOuQ,EAAM,OAAO,EAAI,KAAK,IAAI,GAIzBxQ,GAAO,CAAEwQ,EAAM,UAAYvQ,GAAO,CAAEuQ,EAAM,QAEnD,CAED,mBAAoBC,EAAW,CAE9B,GAAK,KAAK,UAET,MAAO,GAKR,KAAK,UAAWC,IAChBC,GAAS,WAAY,KAAK,IAAKD,EAAO,EAGtCE,GAAM,WAAYH,EAAS,EAAGC,EAAO,EACrCG,GAAM,WAAYJ,EAAS,EAAGC,EAAO,EACrCI,GAAM,WAAYL,EAAS,EAAGC,EAAO,EAGrCK,GAAI,WAAYF,GAAOD,IACvBI,GAAI,WAAYF,GAAOD,IACvBI,GAAI,WAAYL,GAAOE,IAKvB,IAAII,EAAO,CACV,EAAG,CAAEH,GAAI,EAAGA,GAAI,EAAG,EAAG,CAAEC,GAAI,EAAGA,GAAI,EAAG,EAAG,CAAEC,GAAI,EAAGA,GAAI,EACtDF,GAAI,EAAG,EAAG,CAAEA,GAAI,EAAGC,GAAI,EAAG,EAAG,CAAEA,GAAI,EAAGC,GAAI,EAAG,EAAG,CAAEA,GAAI,EACtD,CAAEF,GAAI,EAAGA,GAAI,EAAG,EAAG,CAAEC,GAAI,EAAGA,GAAI,EAAG,EAAG,CAAEC,GAAI,EAAGA,GAAI,EAAG,CACzD,EASE,MARK,CAAEE,GAAYD,EAAMN,GAAOC,GAAOC,GAAOH,MAO9CO,EAAO,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC7B,CAAEC,GAAYD,EAAMN,GAAOC,GAAOC,GAAOH,KAEtC,IAMRS,GAAgB,aAAcL,GAAKC,IACnCE,EAAO,CAAEE,GAAgB,EAAGA,GAAgB,EAAGA,GAAgB,GAExDD,GAAYD,EAAMN,GAAOC,GAAOC,GAAOH,IAE9C,CAED,WAAYV,EAAOD,EAAS,CAE3B,OAAOA,EAAO,KAAMC,GAAQ,MAAO,KAAK,IAAK,KAAK,IAElD,CAED,gBAAiBA,EAAQ,CAExB,OAAO,KAAK,WAAYA,EAAOR,EAAS,EAAG,WAAYQ,EAEvD,CAED,kBAAmBD,EAAS,CAE3B,OAAK,KAAK,UAETA,EAAO,UAAS,GAIhB,KAAK,UAAWA,EAAO,QAEvBA,EAAO,OAAS,KAAK,QAASP,IAAY,OAAQ,EAAG,IAI/CO,CAEP,CAED,UAAWD,EAAM,CAEhB,YAAK,IAAI,IAAKA,EAAI,GAAG,EACrB,KAAK,IAAI,IAAKA,EAAI,GAAG,EAGhB,KAAK,QAAO,GAAK,KAAK,UAAS,EAE7B,IAEP,CAED,MAAOA,EAAM,CAEZ,YAAK,IAAI,IAAKA,EAAI,GAAG,EACrB,KAAK,IAAI,IAAKA,EAAI,GAAG,EAEd,IAEP,CAED,aAAcvK,EAAS,CAGtB,OAAK,KAAK,UAAmB,MAG7B6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GACrE6L,GAAS,CAAC,EAAG,IAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,EAAG,aAAc7L,GAErE,KAAK,cAAe6L,IAEb,KAEP,CAED,UAAWzP,EAAS,CAEnB,YAAK,IAAI,IAAKA,GACd,KAAK,IAAI,IAAKA,GAEP,IAEP,CAED,OAAQmO,EAAM,CAEb,OAAOA,EAAI,IAAI,OAAQ,KAAK,GAAG,GAAMA,EAAI,IAAI,OAAQ,KAAK,GAAG,CAE7D,CAEF,CAEA,MAAMsB,GAAU,CACD,IAAIvD,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,EACJ,IAAIA,CACnB,EAEM2B,GAA0B,IAAI3B,EAE9BuC,GAAuB,IAAIb,GAI3BoB,GAAsB,IAAI9C,EAC1B+C,GAAsB,IAAI/C,EAC1BgD,GAAsB,IAAIhD,EAI1BiD,GAAoB,IAAIjD,EACxBkD,GAAoB,IAAIlD,EACxBmD,GAAoB,IAAInD,EAExB4C,GAAwB,IAAI5C,EAC5B6C,GAAyB,IAAI7C,EAC7BsD,GAAgC,IAAItD,EACpCwD,GAA0B,IAAIxD,EAEpC,SAASqD,GAAYD,EAAMK,EAAI7P,EAAIC,EAAI6P,EAAU,CAEhD,QAAUpS,EAAI,EAAGqS,EAAIP,EAAK,OAAS,EAAG9R,GAAKqS,EAAGrS,GAAK,EAAI,CAEtDkS,GAAU,UAAWJ,EAAM9R,GAE3B,MAAM2F,EAAIyM,EAAQ,EAAI,KAAK,IAAKF,GAAU,GAAME,EAAQ,EAAI,KAAK,IAAKF,GAAU,CAAC,EAAKE,EAAQ,EAAI,KAAK,IAAKF,GAAU,GAEhHI,EAAKH,EAAG,IAAKD,EAAS,EACtBK,EAAKjQ,EAAG,IAAK4P,EAAS,EACtBM,EAAKjQ,EAAG,IAAK2P,EAAS,EAE5B,GAAK,KAAK,IAAK,CAAE,KAAK,IAAKI,EAAIC,EAAIC,CAAI,EAAE,KAAK,IAAKF,EAAIC,EAAIC,CAAE,CAAI,EAAG7M,EAInE,MAAO,EAIR,CAED,MAAO,EAER,CAEA,MAAM8M,GAAuB,IAAIrC,GAC3BsC,GAAsB,IAAIhE,EAC1BiE,GAAsB,IAAIjE,EAEhC,MAAMkE,EAAO,CAEZ,YAAalQ,EAAS,IAAIgM,EAAWqB,EAAS,GAAM,CAEnD,KAAK,SAAW,GAEhB,KAAK,OAASrN,EACd,KAAK,OAASqN,CAEd,CAED,IAAKrN,EAAQqN,EAAS,CAErB,YAAK,OAAO,KAAMrN,GAClB,KAAK,OAASqN,EAEP,IAEP,CAED,cAAeO,EAAQuC,EAAiB,CAEvC,MAAMnQ,EAAS,KAAK,OAEfmQ,IAAmB,OAEvBnQ,EAAO,KAAMmQ,GAIbJ,GAAO,cAAenC,CAAQ,EAAC,UAAW5N,CAAM,EAIjD,IAAIoQ,EAAc,EAElB,QAAU9S,EAAI,EAAG4K,EAAK0F,EAAO,OAAQtQ,EAAI4K,EAAI5K,IAE5C8S,EAAc,KAAK,IAAKA,EAAapQ,EAAO,kBAAmB4N,EAAQtQ,CAAG,CAAA,GAI3E,YAAK,OAAS,KAAK,KAAM8S,CAAW,EAE7B,IAEP,CAED,KAAM3B,EAAS,CAEd,YAAK,OAAO,KAAMA,EAAO,MAAM,EAC/B,KAAK,OAASA,EAAO,OAEd,IAEP,CAED,SAAU,CAET,OAAS,KAAK,OAAS,CAEvB,CAED,WAAY,CAEX,YAAK,OAAO,IAAK,EAAG,EAAG,CAAC,EACxB,KAAK,OAAS,GAEP,IAEP,CAED,cAAeN,EAAQ,CAEtB,OAASA,EAAM,kBAAmB,KAAK,MAAM,GAAQ,KAAK,OAAS,KAAK,MAExE,CAED,gBAAiBA,EAAQ,CAExB,OAASA,EAAM,WAAY,KAAK,MAAQ,EAAG,KAAK,MAEhD,CAED,iBAAkBM,EAAS,CAE1B,MAAM4B,EAAY,KAAK,OAAS5B,EAAO,OAEvC,OAAOA,EAAO,OAAO,kBAAmB,KAAK,SAAc4B,EAAYA,CAEvE,CAED,cAAepC,EAAM,CAEpB,OAAOA,EAAI,iBAAkB,KAE7B,CAED,gBAAiBS,EAAQ,CAExB,OAAO,KAAK,IAAKA,EAAM,gBAAiB,KAAK,MAAQ,CAAA,GAAM,KAAK,MAEhE,CAED,WAAYP,EAAOD,EAAS,CAE3B,MAAMoC,EAAgB,KAAK,OAAO,kBAAmBnC,CAAK,EAE1D,OAAAD,EAAO,KAAMC,GAERmC,EAAkB,KAAK,OAAS,KAAK,SAEzCpC,EAAO,IAAK,KAAK,MAAQ,EAAC,UAAS,EACnCA,EAAO,eAAgB,KAAK,MAAQ,EAAC,IAAK,KAAK,SAIzCA,CAEP,CAED,eAAgBA,EAAS,CAExB,OAAK,KAAK,WAGTA,EAAO,UAAS,EACTA,IAIRA,EAAO,IAAK,KAAK,OAAQ,KAAK,MAAM,EACpCA,EAAO,eAAgB,KAAK,QAErBA,EAEP,CAED,aAAcxK,EAAS,CAEtB,YAAK,OAAO,aAAcA,GAC1B,KAAK,OAAS,KAAK,OAASA,EAAO,kBAAiB,EAE7C,IAEP,CAED,UAAW5D,EAAS,CAEnB,YAAK,OAAO,IAAKA,GAEV,IAEP,CAED,cAAeqO,EAAQ,CAEtB,GAAK,KAAK,UAET,YAAK,OAAO,KAAMA,GAElB,KAAK,OAAS,EAEP,KAIR6B,GAAM,WAAY7B,EAAO,KAAK,MAAM,EAEpC,MAAMoC,EAAWP,GAAM,WAEvB,GAAKO,EAAa,KAAK,OAAS,KAAK,OAAW,CAI/C,MAAMjR,EAAS,KAAK,KAAMiR,CAAQ,EAE5BC,GAAUlR,EAAS,KAAK,QAAW,GAEzC,KAAK,OAAO,gBAAiB0Q,GAAOQ,EAAQlR,CAAM,EAElD,KAAK,QAAUkR,CAEf,CAED,OAAO,IAEP,CAED,MAAO/B,EAAS,CAEf,OAAKA,EAAO,UAEJ,KAIH,KAAK,WAET,KAAK,KAAMA,GAEJ,OAIH,KAAK,OAAO,OAAQA,EAAO,MAAQ,IAAK,GAE3C,KAAK,OAAS,KAAK,IAAK,KAAK,OAAQA,EAAO,SAI7CwB,GAAM,WAAYxB,EAAO,OAAQ,KAAK,MAAM,EAAG,UAAWA,EAAO,QAEjE,KAAK,cAAeuB,GAAM,KAAMvB,EAAO,QAAS,IAAKwB,EAAK,GAE1D,KAAK,cAAeD,GAAM,KAAMvB,EAAO,QAAS,IAAKwB,EAAK,IAIpD,KAEP,CAED,OAAQxB,EAAS,CAEhB,OAAOA,EAAO,OAAO,OAAQ,KAAK,SAAcA,EAAO,SAAW,KAAK,MAEvE,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAEF,CAEA,MAAMgC,GAA0B,IAAIzE,EAC9B0E,GAA2B,IAAI1E,EAC/B2E,GAAwB,IAAI3E,EAC5B4E,GAAsB,IAAI5E,EAE1B6E,GAAuB,IAAI7E,EAC3B8E,GAAuB,IAAI9E,EAC3B+E,GAA0B,IAAI/E,EAEpC,MAAMgF,EAAI,CAET,YAAaC,EAAS,IAAIjF,EAAWkF,EAAY,IAAIlF,EAAS,EAAG,EAAG,IAAQ,CAE3E,KAAK,OAASiF,EACd,KAAK,UAAYC,CAEjB,CAED,IAAKD,EAAQC,EAAY,CAExB,YAAK,OAAO,KAAMD,GAClB,KAAK,UAAU,KAAMC,GAEd,IAEP,CAED,KAAMC,EAAM,CAEX,YAAK,OAAO,KAAMA,EAAI,MAAM,EAC5B,KAAK,UAAU,KAAMA,EAAI,SAAS,EAE3B,IAEP,CAED,GAAI,EAAGjD,EAAS,CAEf,OAAOA,EAAO,KAAM,KAAK,MAAM,EAAG,gBAAiB,KAAK,UAAW,EAEnE,CAED,OAAQnP,EAAI,CAEX,YAAK,UAAU,KAAMA,CAAG,EAAC,IAAK,KAAK,QAAS,YAErC,IAEP,CAED,OAAQ,EAAI,CAEX,YAAK,OAAO,KAAM,KAAK,GAAI,EAAG0R,EAAS,GAEhC,IAEP,CAED,oBAAqBtC,EAAOD,EAAS,CAEpCA,EAAO,WAAYC,EAAO,KAAK,MAAM,EAErC,MAAMiD,EAAoBlD,EAAO,IAAK,KAAK,SAAS,EAEpD,OAAKkD,EAAoB,EAEjBlD,EAAO,KAAM,KAAK,MAAM,EAIzBA,EAAO,KAAM,KAAK,MAAM,EAAG,gBAAiB,KAAK,UAAWkD,EAEnE,CAED,gBAAiBjD,EAAQ,CAExB,OAAO,KAAK,KAAM,KAAK,kBAAmBA,CAAO,CAAA,CAEjD,CAED,kBAAmBA,EAAQ,CAE1B,MAAMiD,EAAoBX,GAAU,WAAYtC,EAAO,KAAK,MAAM,EAAG,IAAK,KAAK,WAI/E,OAAKiD,EAAoB,EAEjB,KAAK,OAAO,kBAAmBjD,CAAK,GAI5CsC,GAAU,KAAM,KAAK,MAAM,EAAG,gBAAiB,KAAK,UAAWW,GAExDX,GAAU,kBAAmBtC,GAEpC,CAED,oBAAqBsB,EAAI7P,EAAIyR,EAAoBC,EAAyB,CASzEZ,GAAW,KAAMjB,GAAK,IAAK7P,GAAK,eAAgB,IAChD+Q,GAAQ,KAAM/Q,CAAI,EAAC,IAAK6P,CAAE,EAAG,YAC7BmB,GAAM,KAAM,KAAK,MAAM,EAAG,IAAKF,IAE/B,MAAMa,EAAY9B,EAAG,WAAY7P,CAAE,EAAK,GAClC4R,EAAM,CAAE,KAAK,UAAU,IAAKb,EAAO,EACnCc,EAAKb,GAAM,IAAK,KAAK,SAAS,EAC9Bc,EAAK,CAAEd,GAAM,IAAKD,EAAO,EACzB,EAAIC,GAAM,WACV/N,EAAM,KAAK,IAAK,EAAI2O,EAAMA,GAChC,IAAIG,EAAIzH,EAAI0H,EAASC,EAErB,GAAKhP,EAAM,EAQV,GAJA8O,EAAKH,EAAME,EAAKD,EAChBvH,EAAKsH,EAAMC,EAAKC,EAChBG,EAASN,EAAY1O,EAEhB8O,GAAM,EAEV,GAAKzH,GAAM,CAAE2H,EAEZ,GAAK3H,GAAM2H,EAAS,CAKnB,MAAMC,EAAS,EAAIjP,EACnB8O,GAAMG,EACN5H,GAAM4H,EACNF,EAAUD,GAAOA,EAAKH,EAAMtH,EAAK,EAAIuH,GAAOvH,GAAOsH,EAAMG,EAAKzH,EAAK,EAAIwH,GAAO,CAEpF,MAIMxH,EAAKqH,EACLI,EAAK,KAAK,IAAK,EAAG,EAAIH,EAAMtH,EAAKuH,IACjCG,EAAU,CAAED,EAAKA,EAAKzH,GAAOA,EAAK,EAAIwH,GAAO,OAQ9CxH,EAAK,CAAEqH,EACPI,EAAK,KAAK,IAAK,EAAG,EAAIH,EAAMtH,EAAKuH,IACjCG,EAAU,CAAED,EAAKA,EAAKzH,GAAOA,EAAK,EAAIwH,GAAO,OAMzCxH,GAAM,CAAE2H,GAIZF,EAAK,KAAK,IAAK,EAAG,EAAI,CAAEH,EAAMD,EAAYE,IAC1CvH,EAAOyH,EAAK,EAAM,CAAEJ,EAAY,KAAK,IAAK,KAAK,IAAK,CAAEA,EAAW,CAAEG,CAAI,EAAEH,CAAS,EAClFK,EAAU,CAAED,EAAKA,EAAKzH,GAAOA,EAAK,EAAIwH,GAAO,GAElCxH,GAAM2H,GAIjBF,EAAK,EACLzH,EAAK,KAAK,IAAK,KAAK,IAAK,CAAEqH,EAAW,CAAEG,GAAMH,GAC9CK,EAAU1H,GAAOA,EAAK,EAAIwH,GAAO,IAMjCC,EAAK,KAAK,IAAK,EAAG,EAAIH,EAAMD,EAAYE,IACxCvH,EAAOyH,EAAK,EAAMJ,EAAY,KAAK,IAAK,KAAK,IAAK,CAAEA,EAAW,CAAEG,CAAI,EAAEH,CAAS,EAChFK,EAAU,CAAED,EAAKA,EAAKzH,GAAOA,EAAK,EAAIwH,GAAO,QAU/CxH,EAAOsH,EAAM,EAAM,CAAED,EAAYA,EACjCI,EAAK,KAAK,IAAK,EAAG,EAAIH,EAAMtH,EAAKuH,IACjCG,EAAU,CAAED,EAAKA,EAAKzH,GAAOA,EAAK,EAAIwH,GAAO,EAI9C,OAAKL,GAEJA,EAAmB,KAAM,KAAK,MAAM,EAAG,gBAAiB,KAAK,UAAWM,GAIpEL,GAEJA,EAAuB,KAAMZ,EAAU,EAAG,gBAAiBC,GAASzG,GAI9D0H,CAEP,CAED,gBAAiBnD,EAAQP,EAAS,CAEjCuC,GAAU,WAAYhC,EAAO,OAAQ,KAAK,MAAM,EAChD,MAAMsD,EAAMtB,GAAU,IAAK,KAAK,SAAS,EACnC3S,EAAK2S,GAAU,IAAKA,EAAW,EAAGsB,EAAMA,EACxCC,EAAUvD,EAAO,OAASA,EAAO,OAEvC,GAAK3Q,EAAKkU,EAAU,OAAO,KAE3B,MAAMC,EAAM,KAAK,KAAMD,EAAUlU,CAAE,EAG7BoU,EAAKH,EAAME,EAGXE,EAAKJ,EAAME,EAGjB,OAAKE,EAAK,EAAW,KAKhBD,EAAK,EAAW,KAAK,GAAIC,EAAIjE,GAG3B,KAAK,GAAIgE,EAAIhE,CAAM,CAE1B,CAED,iBAAkBO,EAAS,CAE1B,OAAO,KAAK,kBAAmBA,EAAO,MAAM,GAAQA,EAAO,OAASA,EAAO,MAE3E,CAED,gBAAiBC,EAAQ,CAExB,MAAMnP,EAAcmP,EAAM,OAAO,IAAK,KAAK,WAE3C,GAAKnP,IAAgB,EAGpB,OAAKmP,EAAM,gBAAiB,KAAK,MAAM,IAAO,EAEtC,EAMD,KAIR,MAAMhQ,EAAI,EAAI,KAAK,OAAO,IAAKgQ,EAAM,QAAWA,EAAM,UAAanP,EAInE,OAAOb,GAAK,EAAIA,EAAI,IAEpB,CAED,eAAgBgQ,EAAOR,EAAS,CAE/B,MAAMxP,EAAI,KAAK,gBAAiBgQ,CAAK,EAErC,OAAKhQ,IAAM,KAEH,KAID,KAAK,GAAIA,EAAGwP,CAAM,CAEzB,CAED,gBAAiBQ,EAAQ,CAIxB,MAAM0D,EAAc1D,EAAM,gBAAiB,KAAK,MAAM,EAUtD,OARK0D,IAAgB,GAMD1D,EAAM,OAAO,IAAK,KAAK,WAExB0D,EAAc,CAUjC,CAED,aAAcnE,EAAKC,EAAS,CAE3B,IAAImE,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,EAErC,MAAMC,EAAU,EAAI,KAAK,UAAU,EAClCC,EAAU,EAAI,KAAK,UAAU,EAC7BC,EAAU,EAAI,KAAK,UAAU,EAExB5B,EAAS,KAAK,OAoDpB,OAlDK0B,GAAW,GAEfN,GAASpE,EAAI,IAAI,EAAIgD,EAAO,GAAM0B,EAClCL,GAASrE,EAAI,IAAI,EAAIgD,EAAO,GAAM0B,IAIlCN,GAASpE,EAAI,IAAI,EAAIgD,EAAO,GAAM0B,EAClCL,GAASrE,EAAI,IAAI,EAAIgD,EAAO,GAAM0B,GAI9BC,GAAW,GAEfL,GAAUtE,EAAI,IAAI,EAAIgD,EAAO,GAAM2B,EACnCJ,GAAUvE,EAAI,IAAI,EAAIgD,EAAO,GAAM2B,IAInCL,GAAUtE,EAAI,IAAI,EAAIgD,EAAO,GAAM2B,EACnCJ,GAAUvE,EAAI,IAAI,EAAIgD,EAAO,GAAM2B,GAI7BP,EAAOG,GAAaD,EAAQD,KAE9BC,EAAQF,GAAQ,MAAOA,CAAM,KAAGA,EAAOE,IAEvCC,EAAQF,GAAQ,MAAOA,CAAM,KAAGA,EAAOE,GAEvCK,GAAW,GAEfJ,GAAUxE,EAAI,IAAI,EAAIgD,EAAO,GAAM4B,EACnCH,GAAUzE,EAAI,IAAI,EAAIgD,EAAO,GAAM4B,IAInCJ,GAAUxE,EAAI,IAAI,EAAIgD,EAAO,GAAM4B,EACnCH,GAAUzE,EAAI,IAAI,EAAIgD,EAAO,GAAM4B,GAI7BR,EAAOK,GAAaD,EAAQH,MAE9BG,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,IAEvCC,EAAQJ,GAAQA,IAASA,KAAOA,EAAOI,GAIvCJ,EAAO,GAAW,KAEhB,KAAK,GAAID,GAAQ,EAAIA,EAAOC,EAAMpE,EAEzC,CAED,cAAeD,EAAM,CAEpB,OAAO,KAAK,aAAcA,EAAKwC,EAAS,IAAO,IAE/C,CAED,kBAAmBxR,EAAGC,EAAGgB,EAAG4S,EAAiB5E,EAAS,CAMrD2C,GAAO,WAAY3R,EAAGD,GACtB6R,GAAO,WAAY5Q,EAAGjB,GACtB8R,GAAU,aAAcF,GAAQC,IAOhC,IAAIiC,EAAM,KAAK,UAAU,IAAKhC,EAAS,EACnCiC,EAEJ,GAAKD,EAAM,EAAI,CAEd,GAAKD,EAAkB,OAAO,KAC9BE,EAAO,CAEV,SAAcD,EAAM,EAEjBC,EAAO,GACPD,EAAM,CAAEA,MAIR,QAAO,KAIRnC,GAAM,WAAY,KAAK,OAAQ3R,CAAC,EAChC,MAAMgU,EAASD,EAAO,KAAK,UAAU,IAAKlC,GAAO,aAAcF,GAAOE,EAAM,GAG5E,GAAKmC,EAAS,EAEb,OAAO,KAIR,MAAMC,EAASF,EAAO,KAAK,UAAU,IAAKnC,GAAO,MAAOD,EAAK,GAU7D,GAPKsC,EAAS,GAOTD,EAASC,EAASH,EAEtB,OAAO,KAKR,MAAMI,EAAM,CAAEH,EAAOpC,GAAM,IAAKG,EAAS,EAGzC,OAAKoC,EAAM,EAEH,KAKD,KAAK,GAAIA,EAAMJ,EAAK7E,CAAM,CAEjC,CAED,aAAclL,EAAU,CAEvB,YAAK,OAAO,aAAcA,GAC1B,KAAK,UAAU,mBAAoBA,GAE5B,IAEP,CAED,OAAQmO,EAAM,CAEb,OAAOA,EAAI,OAAO,OAAQ,KAAK,MAAM,GAAMA,EAAI,UAAU,OAAQ,KAAK,SAAS,CAE/E,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAEF,CAEA,MAAMiC,EAAQ,CAEb,YAAahT,EAAKC,EAAKC,EAAK+S,EAAK9S,EAAKC,EAAKC,EAAK6S,EAAK5S,EAAKC,EAAKC,EAAK2S,EAAKC,EAAKC,EAAKC,EAAKC,EAAM,CAE7FP,GAAQ,UAAU,UAAY,GAE9B,KAAK,SAAW,CAEf,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,CAEZ,EAEOhT,IAAQ,QAEZ,KAAK,IAAKA,EAAKC,EAAKC,EAAK+S,EAAK9S,EAAKC,EAAKC,EAAK6S,EAAK5S,EAAKC,EAAKC,EAAK2S,EAAKC,EAAKC,EAAKC,EAAKC,EAItF,CAED,IAAKvT,EAAKC,EAAKC,EAAK+S,EAAK9S,EAAKC,EAAKC,EAAK6S,EAAK5S,EAAKC,EAAKC,EAAK2S,EAAKC,EAAKC,EAAKC,EAAKC,EAAM,CAErF,MAAM9S,EAAK,KAAK,SAEhB,OAAAA,EAAI,CAAC,EAAKT,EAAKS,EAAI,CAAC,EAAKR,EAAKQ,EAAI,CAAG,EAAGP,EAAKO,EAAI,EAAI,EAAGwS,EACxDxS,EAAI,CAAC,EAAKN,EAAKM,EAAI,CAAC,EAAKL,EAAKK,EAAI,CAAG,EAAGJ,EAAKI,EAAI,EAAI,EAAGyS,EACxDzS,EAAI,CAAC,EAAKH,EAAKG,EAAI,CAAC,EAAKF,EAAKE,EAAI,EAAI,EAAGD,EAAKC,EAAI,EAAI,EAAG0S,EACzD1S,EAAI,CAAC,EAAK2S,EAAK3S,EAAI,CAAC,EAAK4S,EAAK5S,EAAI,EAAI,EAAG6S,EAAK7S,EAAI,EAAI,EAAG8S,EAElD,IAEP,CAED,UAAW,CAEV,YAAK,IAEJ,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,OAAQ,CAEP,OAAO,IAAIP,GAAS,EAAC,UAAW,KAAK,QAAQ,CAE7C,CAED,KAAM9U,EAAI,CAET,MAAMuC,EAAK,KAAK,SACVC,EAAKxC,EAAE,SAEb,OAAAuC,EAAI,GAAMC,EAAI,CAAC,EAAID,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAG,EAAGC,EAAI,GACvED,EAAI,GAAMC,EAAI,CAAC,EAAID,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,CAAG,EAAGC,EAAI,GACvED,EAAI,GAAMC,EAAI,CAAC,EAAID,EAAI,CAAC,EAAKC,EAAI,CAAG,EAAED,EAAI,EAAE,EAAKC,EAAI,EAAI,EAAED,EAAI,EAAI,EAAGC,EAAI,IAC1ED,EAAI,IAAOC,EAAI,EAAE,EAAID,EAAI,EAAE,EAAKC,EAAI,EAAI,EAAED,EAAI,EAAE,EAAKC,EAAI,EAAI,EAAED,EAAI,EAAI,EAAGC,EAAI,IAEvE,IAEP,CAED,aAAcxC,EAAI,CAEjB,MAAMuC,EAAK,KAAK,SAAUC,EAAKxC,EAAE,SAEjC,OAAAuC,EAAI,EAAE,EAAKC,EAAI,EAAE,EACjBD,EAAI,EAAE,EAAKC,EAAI,EAAE,EACjBD,EAAI,EAAE,EAAKC,EAAI,EAAE,EAEV,IAEP,CAED,eAAgBxC,EAAI,CAEnB,MAAMwC,EAAKxC,EAAE,SAEb,YAAK,IAEJwC,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAI,EAC3BA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAI,EAC3BA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAI,EAC3B,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,aAAcC,EAAOC,EAAOC,EAAQ,CAEnC,OAAAF,EAAM,oBAAqB,KAAM,GACjCC,EAAM,oBAAqB,KAAM,GACjCC,EAAM,oBAAqB,KAAM,GAE1B,IAEP,CAED,UAAWF,EAAOC,EAAOC,EAAQ,CAEhC,YAAK,IACJF,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAG,EAC3BF,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAG,EAC3BF,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAG,EAC3B,EAAG,EAAG,EAAG,CACZ,EAES,IAEP,CAED,gBAAiB3C,EAAI,CAIpB,MAAMuC,EAAK,KAAK,SACVC,EAAKxC,EAAE,SAEPsV,EAAS,EAAIC,GAAM,oBAAqBvV,EAAG,CAAC,EAAG,SAC/CwV,EAAS,EAAID,GAAM,oBAAqBvV,EAAG,CAAC,EAAG,SAC/CyV,EAAS,EAAIF,GAAM,oBAAqBvV,EAAG,CAAC,EAAG,SAErD,OAAAuC,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAK8S,EACpB/S,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAK8S,EACpB/S,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAK8S,EACpB/S,EAAI,CAAG,EAAG,EAEVA,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAKgT,EACpBjT,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAKgT,EACpBjT,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAKgT,EACpBjT,EAAI,CAAG,EAAG,EAEVA,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAKiT,EACpBlT,EAAI,CAAG,EAAGC,EAAI,CAAC,EAAKiT,EACpBlT,EAAI,EAAI,EAAGC,EAAI,EAAE,EAAKiT,EACtBlT,EAAI,EAAI,EAAG,EAEXA,EAAI,EAAI,EAAG,EACXA,EAAI,EAAI,EAAG,EACXA,EAAI,EAAI,EAAG,EACXA,EAAI,EAAI,EAAG,EAEJ,IAEP,CAED,sBAAuB+I,EAAQ,CAE9B,MAAM/I,EAAK,KAAK,SAEVrC,EAAIoL,EAAM,EAAGnL,EAAImL,EAAM,EAAGnD,EAAImD,EAAM,EACpC,EAAI,KAAK,IAAKpL,CAAC,EAAIU,EAAI,KAAK,IAAKV,GACjC0B,EAAI,KAAK,IAAKzB,CAAC,EAAI6D,EAAI,KAAK,IAAK7D,GACjCU,EAAI,KAAK,IAAKsH,CAAC,EAAIlE,EAAI,KAAK,IAAKkE,GAEvC,GAAKmD,EAAM,QAAU,MAAQ,CAE5B,MAAM1I,EAAK,EAAI/B,EAAG6U,EAAK,EAAIzR,EAAGpB,EAAKjC,EAAIC,EAAG8U,EAAK/U,EAAIqD,EAEnD1B,EAAI,CAAC,EAAKX,EAAIf,EACd0B,EAAI,CAAC,EAAK,CAAEX,EAAIqC,EAChB1B,EAAI,CAAG,EAAGyB,EAEVzB,EAAI,CAAG,EAAGmT,EAAK7S,EAAKmB,EACpBzB,EAAI,CAAG,EAAGK,EAAK+S,EAAK3R,EACpBzB,EAAI,CAAC,EAAK,CAAE3B,EAAIgB,EAEhBW,EAAI,CAAG,EAAGoT,EAAK/S,EAAKoB,EACpBzB,EAAI,CAAG,EAAGM,EAAK6S,EAAK1R,EACpBzB,EAAI,EAAE,EAAK,EAAIX,CAElB,SAAc0J,EAAM,QAAU,MAAQ,CAEnC,MAAMsK,EAAKhU,EAAIf,EAAGgV,EAAKjU,EAAIqC,EAAG6R,EAAK9R,EAAInD,EAAGkV,EAAK/R,EAAIC,EAEnD1B,EAAI,CAAG,EAAGqT,EAAKG,EAAKnV,EACpB2B,EAAI,CAAG,EAAGuT,EAAKlV,EAAIiV,EACnBtT,EAAI,CAAC,EAAK,EAAIyB,EAEdzB,EAAI,CAAC,EAAK,EAAI0B,EACd1B,EAAI,CAAC,EAAK,EAAI1B,EACd0B,EAAI,GAAM,CAAE3B,EAEZ2B,EAAI,CAAG,EAAGsT,EAAKjV,EAAIkV,EACnBvT,EAAI,CAAG,EAAGwT,EAAKH,EAAKhV,EACpB2B,EAAI,EAAE,EAAK,EAAIX,CAElB,SAAc0J,EAAM,QAAU,MAAQ,CAEnC,MAAMsK,EAAKhU,EAAIf,EAAGgV,EAAKjU,EAAIqC,EAAG6R,EAAK9R,EAAInD,EAAGkV,EAAK/R,EAAIC,EAEnD1B,EAAI,CAAG,EAAGqT,EAAKG,EAAKnV,EACpB2B,EAAI,CAAC,EAAK,CAAE,EAAI0B,EAChB1B,EAAI,CAAG,EAAGuT,EAAKD,EAAKjV,EAEpB2B,EAAI,CAAG,EAAGsT,EAAKC,EAAKlV,EACpB2B,EAAI,CAAC,EAAK,EAAI1B,EACd0B,EAAI,CAAG,EAAGwT,EAAKH,EAAKhV,EAEpB2B,EAAI,CAAC,EAAK,CAAE,EAAIyB,EAChBzB,EAAI,CAAG,EAAG3B,EACV2B,EAAI,EAAE,EAAK,EAAIX,CAElB,SAAc0J,EAAM,QAAU,MAAQ,CAEnC,MAAM1I,EAAK,EAAI/B,EAAG6U,EAAK,EAAIzR,EAAGpB,EAAKjC,EAAIC,EAAG8U,EAAK/U,EAAIqD,EAEnD1B,EAAI,CAAC,EAAKX,EAAIf,EACd0B,EAAI,CAAG,EAAGM,EAAKmB,EAAI0R,EACnBnT,EAAI,CAAG,EAAGK,EAAKoB,EAAI2R,EAEnBpT,EAAI,CAAC,EAAKX,EAAIqC,EACd1B,EAAI,CAAG,EAAGoT,EAAK3R,EAAIpB,EACnBL,EAAI,CAAG,EAAGmT,EAAK1R,EAAInB,EAEnBN,EAAI,GAAM,CAAEyB,EACZzB,EAAI,CAAC,EAAK3B,EAAIgB,EACdW,EAAI,EAAE,EAAK,EAAIX,CAElB,SAAc0J,EAAM,QAAU,MAAQ,CAEnC,MAAM0K,EAAK,EAAIpU,EAAGqU,EAAK,EAAIjS,EAAGkS,EAAKtV,EAAIgB,EAAGuU,EAAKvV,EAAIoD,EAEnDzB,EAAI,CAAC,EAAKX,EAAIf,EACd0B,EAAI,CAAG,EAAG4T,EAAKH,EAAK/R,EACpB1B,EAAI,CAAG,EAAG2T,EAAKjS,EAAIgS,EAEnB1T,EAAI,CAAG,EAAG0B,EACV1B,EAAI,CAAC,EAAK,EAAI1B,EACd0B,EAAI,CAAC,EAAK,CAAE3B,EAAIC,EAEhB0B,EAAI,CAAC,EAAK,CAAEyB,EAAInD,EAChB0B,EAAI,CAAG,EAAG0T,EAAKhS,EAAIiS,EACnB3T,EAAI,EAAI,EAAGyT,EAAKG,EAAKlS,CAExB,SAAcqH,EAAM,QAAU,MAAQ,CAEnC,MAAM0K,EAAK,EAAIpU,EAAGqU,EAAK,EAAIjS,EAAGkS,EAAKtV,EAAIgB,EAAGuU,EAAKvV,EAAIoD,EAEnDzB,EAAI,CAAC,EAAKX,EAAIf,EACd0B,EAAI,GAAM,CAAE0B,EACZ1B,EAAI,CAAC,EAAKyB,EAAInD,EAEd0B,EAAI,CAAG,EAAGyT,EAAK/R,EAAIkS,EACnB5T,EAAI,CAAC,EAAK,EAAI1B,EACd0B,EAAI,CAAG,EAAG0T,EAAKhS,EAAIiS,EAEnB3T,EAAI,CAAG,EAAG2T,EAAKjS,EAAIgS,EACnB1T,EAAI,CAAC,EAAK3B,EAAIC,EACd0B,EAAI,EAAI,EAAG4T,EAAKlS,EAAI+R,CAEpB,CAGD,OAAAzT,EAAI,CAAG,EAAG,EACVA,EAAI,CAAG,EAAG,EACVA,EAAI,EAAI,EAAG,EAGXA,EAAI,EAAI,EAAG,EACXA,EAAI,EAAI,EAAG,EACXA,EAAI,EAAI,EAAG,EACXA,EAAI,EAAI,EAAG,EAEJ,IAEP,CAED,2BAA4B8F,EAAI,CAE/B,OAAO,KAAK,QAAS+N,GAAO/N,EAAGgO,EAAI,CAEnC,CAED,OAAQC,EAAK1G,EAAQ2G,EAAK,CAEzB,MAAMhU,EAAK,KAAK,SAEhB,OAAAiU,GAAG,WAAYF,EAAK1G,GAEf4G,GAAG,SAAU,IAAK,IAItBA,GAAG,EAAI,GAIRA,GAAG,UAAS,EACZC,GAAG,aAAcF,EAAIC,IAEhBC,GAAG,SAAU,IAAK,IAIjB,KAAK,IAAKF,EAAG,CAAC,IAAO,EAEzBC,GAAG,GAAK,KAIRA,GAAG,GAAK,KAITA,GAAG,UAAS,EACZC,GAAG,aAAcF,EAAIC,KAItBC,GAAG,UAAS,EACZC,GAAG,aAAcF,GAAIC,IAErBlU,EAAI,CAAC,EAAKkU,GAAG,EAAGlU,EAAI,CAAC,EAAKmU,GAAG,EAAGnU,EAAI,CAAC,EAAKiU,GAAG,EAC7CjU,EAAI,CAAC,EAAKkU,GAAG,EAAGlU,EAAI,CAAC,EAAKmU,GAAG,EAAGnU,EAAI,CAAC,EAAKiU,GAAG,EAC7CjU,EAAI,CAAC,EAAKkU,GAAG,EAAGlU,EAAI,CAAC,EAAKmU,GAAG,EAAGnU,EAAI,EAAE,EAAKiU,GAAG,EAEvC,IAEP,CAED,SAAUxW,EAAI,CAEb,OAAO,KAAK,iBAAkB,KAAMA,CAAC,CAErC,CAED,YAAaA,EAAI,CAEhB,OAAO,KAAK,iBAAkBA,EAAG,IAAI,CAErC,CAED,iBAAkBW,EAAGC,EAAI,CAExB,MAAMgC,EAAKjC,EAAE,SACPkC,EAAKjC,EAAE,SACP2B,EAAK,KAAK,SAEVO,EAAMF,EAAI,CAAG,EAAEG,EAAMH,EAAI,CAAC,EAAII,EAAMJ,EAAI,CAAG,EAAE+T,EAAM/T,EAAI,EAAE,EACzDK,EAAML,EAAI,CAAG,EAAEM,EAAMN,EAAI,CAAC,EAAIO,EAAMP,EAAI,CAAG,EAAEgU,EAAMhU,EAAI,EAAE,EACzDQ,EAAMR,EAAI,CAAG,EAAES,EAAMT,EAAI,CAAC,EAAIU,EAAMV,EAAI,EAAI,EAAEiU,EAAMjU,EAAI,EAAE,EAC1DkU,EAAMlU,EAAI,CAAG,EAAEmU,EAAMnU,EAAI,CAAC,EAAIoU,EAAMpU,EAAI,EAAI,EAAEqU,EAAMrU,EAAI,EAAE,EAE1DW,EAAMV,EAAI,CAAG,EAAEW,EAAMX,EAAI,CAAC,EAAIY,EAAMZ,EAAI,CAAG,EAAEqU,EAAMrU,EAAI,EAAE,EACzDa,EAAMb,EAAI,CAAG,EAAEc,EAAMd,EAAI,CAAC,EAAIe,EAAMf,EAAI,CAAG,EAAEsU,EAAMtU,EAAI,EAAE,EACzDgB,EAAMhB,EAAI,CAAG,EAAEiB,EAAMjB,EAAI,CAAC,EAAIkB,EAAMlB,EAAI,EAAI,EAAEuU,GAAMvU,EAAI,EAAE,EAC1DwU,EAAMxU,EAAI,CAAG,EAAEyU,EAAMzU,EAAI,CAAC,EAAI0U,EAAM1U,EAAI,EAAI,EAAE2U,GAAM3U,EAAI,EAAE,EAEhE,OAAAN,EAAI,CAAC,EAAKO,EAAMS,EAAMR,EAAMW,EAAMV,EAAMa,EAAM8S,EAAMU,EACpD9U,EAAI,CAAC,EAAKO,EAAMU,EAAMT,EAAMY,EAAMX,EAAMc,EAAM6S,EAAMW,EACpD/U,EAAI,CAAC,EAAKO,EAAMW,EAAMV,EAAMa,EAAMZ,EAAMe,EAAM4S,EAAMY,EACpDhV,EAAI,EAAE,EAAKO,EAAMoU,EAAMnU,EAAMoU,EAAMnU,EAAMoU,GAAMT,EAAMa,GAErDjV,EAAI,CAAC,EAAKU,EAAMM,EAAML,EAAMQ,EAAMP,EAAMU,EAAM+S,EAAMS,EACpD9U,EAAI,CAAC,EAAKU,EAAMO,EAAMN,EAAMS,EAAMR,EAAMW,EAAM8S,EAAMU,EACpD/U,EAAI,CAAC,EAAKU,EAAMQ,EAAMP,EAAMU,EAAMT,EAAMY,EAAM6S,EAAMW,EACpDhV,EAAI,EAAE,EAAKU,EAAMiU,EAAMhU,EAAMiU,EAAMhU,EAAMiU,GAAMR,EAAMY,GAErDjV,EAAI,CAAC,EAAKa,EAAMG,EAAMF,EAAMK,EAAMJ,EAAMO,EAAMgT,EAAMQ,EACpD9U,EAAI,CAAC,EAAKa,EAAMI,EAAMH,EAAMM,EAAML,EAAMQ,EAAM+S,EAAMS,EACpD/U,EAAI,EAAE,EAAKa,EAAMK,EAAMJ,EAAMO,EAAMN,EAAMS,EAAM8S,EAAMU,EACrDhV,EAAI,EAAE,EAAKa,EAAM8T,EAAM7T,EAAM8T,EAAM7T,EAAM8T,GAAMP,EAAMW,GAErDjV,EAAI,CAAC,EAAKuU,EAAMvT,EAAMwT,EAAMrT,EAAMsT,EAAMnT,EAAMoT,EAAMI,EACpD9U,EAAI,CAAC,EAAKuU,EAAMtT,EAAMuT,EAAMpT,EAAMqT,EAAMlT,EAAMmT,EAAMK,EACpD/U,EAAI,EAAE,EAAKuU,EAAMrT,EAAMsT,EAAMnT,EAAMoT,EAAMjT,EAAMkT,EAAMM,EACrDhV,EAAI,EAAE,EAAKuU,EAAMI,EAAMH,EAAMI,EAAMH,EAAMI,GAAMH,EAAMO,GAE9C,IAEP,CAED,eAAgB9W,EAAI,CAEnB,MAAM6B,EAAK,KAAK,SAEhB,OAAAA,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,CAAG,GAAI7B,EAAG6B,EAAI,EAAI,GAAI7B,EACtD6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,CAAG,GAAI7B,EAAG6B,EAAI,EAAI,GAAI7B,EACtD6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,EAAI,GAAI7B,EAAG6B,EAAI,EAAI,GAAI7B,EACvD6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,CAAC,GAAM7B,EAAG6B,EAAI,EAAI,GAAI7B,EAAG6B,EAAI,EAAI,GAAI7B,EAEhD,IAEP,CAED,aAAc,CAEb,MAAM6B,EAAK,KAAK,SAEVT,EAAMS,EAAI,CAAG,EAAER,EAAMQ,EAAI,CAAC,EAAIP,EAAMO,EAAI,CAAG,EAAEwS,EAAMxS,EAAI,EAAE,EACzDN,EAAMM,EAAI,CAAG,EAAEL,EAAMK,EAAI,CAAC,EAAIJ,EAAMI,EAAI,CAAG,EAAEyS,EAAMzS,EAAI,EAAE,EACzDH,EAAMG,EAAI,CAAG,EAAEF,EAAME,EAAI,CAAC,EAAID,EAAMC,EAAI,EAAI,EAAE0S,EAAM1S,EAAI,EAAE,EAC1D2S,EAAM3S,EAAI,CAAG,EAAE4S,EAAM5S,EAAI,CAAC,EAAI6S,EAAM7S,EAAI,EAAI,EAAE8S,EAAM9S,EAAI,EAAE,EAKhE,OACC2S,GACC,CAAEH,EAAM5S,EAAME,EACXL,EAAMgT,EAAM3S,EACZ0S,EAAM7S,EAAMI,EACZP,EAAMiT,EAAM1S,EACZN,EAAME,EAAM+S,EACZlT,EAAMI,EAAM8S,GAEhBE,GACC,CAAErT,EAAMK,EAAM8S,EACXnT,EAAMkT,EAAM1S,EACZyS,EAAM9S,EAAMK,EACZN,EAAMC,EAAMgT,EACZjT,EAAMgT,EAAM5S,EACZ2S,EAAM5S,EAAMC,GAEhBgT,GACC,CAAEtT,EAAMkT,EAAM3S,EACXP,EAAMI,EAAM+S,EACZF,EAAM9S,EAAMI,EACZN,EAAME,EAAMgT,EACZF,EAAM7S,EAAME,EACZL,EAAMiT,EAAM5S,GAEhBiT,GACC,CAAErT,EAAME,EAAME,EACXN,EAAMK,EAAME,EACZP,EAAMI,EAAMI,EACZN,EAAMC,EAAMI,EACZN,EAAME,EAAMK,EACZP,EAAMI,EAAMC,EAKjB,CAED,WAAY,CAEX,MAAMG,EAAK,KAAK,SAChB,IAAIkC,EAEJ,OAAAA,EAAMlC,EAAI,GAAKA,EAAI,CAAC,EAAKA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAKkC,EAC5CA,EAAMlC,EAAI,GAAKA,EAAI,CAAC,EAAKA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAKkC,EAC5CA,EAAMlC,EAAI,GAAKA,EAAI,CAAC,EAAKA,EAAI,CAAC,EAAIA,EAAI,CAAC,EAAKkC,EAE5CA,EAAMlC,EAAI,GAAKA,EAAI,CAAC,EAAKA,EAAI,EAAE,EAAIA,EAAI,EAAE,EAAKkC,EAC9CA,EAAMlC,EAAI,GAAKA,EAAI,CAAC,EAAKA,EAAI,EAAE,EAAIA,EAAI,EAAE,EAAKkC,EAC9CA,EAAMlC,EAAI,IAAMA,EAAI,EAAE,EAAKA,EAAI,EAAE,EAAIA,EAAI,EAAE,EAAKkC,EAEzC,IAEP,CAED,YAAavE,EAAGC,EAAGgI,EAAI,CAEtB,MAAM5F,EAAK,KAAK,SAEhB,OAAKrC,EAAE,WAENqC,EAAI,EAAE,EAAKrC,EAAE,EACbqC,EAAI,EAAE,EAAKrC,EAAE,EACbqC,EAAI,EAAE,EAAKrC,EAAE,IAIbqC,EAAI,EAAI,EAAGrC,EACXqC,EAAI,EAAI,EAAGpC,EACXoC,EAAI,EAAI,EAAG4F,GAIL,IAEP,CAED,QAAS,CAGR,MAAM5F,EAAK,KAAK,SAEfT,EAAMS,EAAI,CAAG,EAAEN,EAAMM,EAAI,CAAC,EAAIH,EAAMG,EAAI,CAAC,EAAI2S,EAAM3S,EAAI,CAAG,EAC1DR,EAAMQ,EAAI,CAAG,EAAEL,EAAMK,EAAI,CAAC,EAAIF,EAAME,EAAI,CAAC,EAAI4S,EAAM5S,EAAI,CAAG,EAC1DP,EAAMO,EAAI,CAAG,EAAEJ,EAAMI,EAAI,CAAC,EAAID,EAAMC,EAAI,EAAE,EAAI6S,EAAM7S,EAAI,EAAI,EAC5DwS,EAAMxS,EAAI,EAAI,EAAEyS,EAAMzS,EAAI,EAAE,EAAI0S,EAAM1S,EAAI,EAAE,EAAI8S,EAAM9S,EAAI,EAAI,EAE9D6B,EAAMjC,EAAM8S,EAAME,EAAMH,EAAM1S,EAAM6S,EAAMH,EAAM3S,EAAM+S,EAAMlT,EAAM+S,EAAMG,EAAMjT,EAAME,EAAMgT,EAAMnT,EAAMI,EAAM+S,EAC5GhR,EAAM0Q,EAAMzS,EAAM6S,EAAMnT,EAAMiT,EAAME,EAAMJ,EAAM1S,EAAM+S,EAAMrT,EAAMkT,EAAMG,EAAMpT,EAAMK,EAAMgT,EAAMtT,EAAMO,EAAM+S,EAC5G/Q,EAAMtC,EAAMgT,EAAMG,EAAMJ,EAAM5S,EAAMgT,EAAMJ,EAAM7S,EAAMkT,EAAMrT,EAAMiT,EAAMI,EAAMpT,EAAME,EAAMmT,EAAMtT,EAAMI,EAAMkT,EAC5GoC,EAAM1C,EAAM5S,EAAME,EAAML,EAAMgT,EAAM3S,EAAM0S,EAAM7S,EAAMI,EAAMP,EAAMiT,EAAM1S,EAAMN,EAAME,EAAM+S,EAAMlT,EAAMI,EAAM8S,EAEvG1Q,EAAMzC,EAAMsC,EAAMnC,EAAMoC,EAAMjC,EAAMkC,EAAM4Q,EAAMuC,EAEtD,GAAKlT,IAAQ,EAAI,OAAO,KAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/E,MAAMC,EAAS,EAAID,EAEnB,OAAAhC,EAAI,CAAC,EAAK6B,EAAMI,EAChBjC,EAAI,IAAQyS,EAAM1S,EAAM4S,EAAM/S,EAAM8S,EAAMC,EAAMF,EAAM5S,EAAMgT,EAAMnT,EAAMgT,EAAMG,EAAMjT,EAAMC,EAAMiT,EAAMpT,EAAMK,EAAM+S,GAAQ7Q,EAC1HjC,EAAI,IAAQL,EAAM+S,EAAMC,EAAMF,EAAM3S,EAAM6S,EAAMF,EAAM5S,EAAM+S,EAAMlT,EAAMgT,EAAME,EAAMjT,EAAME,EAAMiT,EAAMpT,EAAMI,EAAMgT,GAAQ7Q,EAC1HjC,EAAI,IAAQJ,EAAME,EAAM6S,EAAMhT,EAAMI,EAAM4S,EAAM/S,EAAMC,EAAM+S,EAAMlT,EAAMK,EAAM6S,EAAMjT,EAAME,EAAMgT,EAAMnT,EAAMI,EAAM+S,GAAQ5Q,EAE1HjC,EAAI,CAAC,EAAK8B,EAAMG,EAChBjC,EAAI,IAAQP,EAAMiT,EAAMC,EAAMH,EAAMzS,EAAM4S,EAAMH,EAAM3S,EAAMgT,EAAMtT,EAAMmT,EAAMG,EAAMpT,EAAMI,EAAMiT,EAAMvT,EAAMQ,EAAM+S,GAAQ7Q,EAC1HjC,EAAI,IAAQwS,EAAM1S,EAAM6S,EAAMnT,EAAMkT,EAAMC,EAAMH,EAAM3S,EAAM+S,EAAMrT,EAAMmT,EAAME,EAAMpT,EAAMK,EAAMiT,EAAMvT,EAAMO,EAAMgT,GAAQ7Q,EAC1HjC,EAAI,IAAQR,EAAMO,EAAM4S,EAAMlT,EAAMK,EAAM6S,EAAMlT,EAAMI,EAAM+S,EAAMrT,EAAMQ,EAAM6S,EAAMpT,EAAMK,EAAMgT,EAAMtT,EAAMO,EAAM+S,GAAQ5Q,EAE1HjC,EAAI,CAAC,EAAK+B,EAAME,EAChBjC,EAAI,IAAQwS,EAAM5S,EAAM+S,EAAMlT,EAAMgT,EAAME,EAAMH,EAAM9S,EAAMmT,EAAMtT,EAAMkT,EAAMI,EAAMpT,EAAMC,EAAMoT,EAAMvT,EAAMK,EAAMkT,GAAQ7Q,EAC1HjC,EAAI,KAASR,EAAMiT,EAAME,EAAMH,EAAM7S,EAAMgT,EAAMH,EAAM9S,EAAMkT,EAAMrT,EAAMkT,EAAMG,EAAMpT,EAAME,EAAMoT,EAAMvT,EAAMI,EAAMmT,GAAQ7Q,EAC3HjC,EAAI,KAASP,EAAME,EAAMgT,EAAMnT,EAAMI,EAAM+S,EAAMlT,EAAMC,EAAMkT,EAAMrT,EAAMK,EAAMgT,EAAMpT,EAAME,EAAMmT,EAAMtT,EAAMI,EAAMkT,GAAQ5Q,EAE3HjC,EAAI,EAAE,EAAKkV,EAAMjT,EACjBjC,EAAI,KAASP,EAAMgT,EAAM5S,EAAM2S,EAAM5S,EAAMC,EAAM2S,EAAM9S,EAAMK,EAAMR,EAAMkT,EAAM1S,EAAMN,EAAMC,EAAMgT,EAAMnT,EAAMK,EAAM8S,GAAQzQ,EAC3HjC,EAAI,KAASwS,EAAM7S,EAAME,EAAML,EAAMiT,EAAM5S,EAAM2S,EAAM9S,EAAMI,EAAMP,EAAMkT,EAAM3S,EAAMN,EAAME,EAAMgT,EAAMnT,EAAMI,EAAM+S,GAAQzQ,EAC3HjC,EAAI,KAASR,EAAMI,EAAMC,EAAMJ,EAAME,EAAME,EAAMJ,EAAMC,EAAMI,EAAMP,EAAMK,EAAME,EAAMN,EAAME,EAAMK,EAAMR,EAAMI,EAAMI,GAAQkC,EAEpH,IAEP,CAED,MAAO/D,EAAI,CAEV,MAAM8B,EAAK,KAAK,SACVrC,EAAIO,EAAE,EAAGN,EAAIM,EAAE,EAAG0H,EAAI1H,EAAE,EAE9B,OAAA8B,EAAI,CAAC,GAAMrC,EAAGqC,EAAI,IAAOpC,EAAGoC,EAAI,CAAC,GAAM4F,EACvC5F,EAAI,CAAC,GAAMrC,EAAGqC,EAAI,IAAOpC,EAAGoC,EAAI,CAAC,GAAM4F,EACvC5F,EAAI,CAAC,GAAMrC,EAAGqC,EAAI,IAAOpC,EAAGoC,EAAI,EAAE,GAAM4F,EACxC5F,EAAI,CAAC,GAAMrC,EAAGqC,EAAI,IAAOpC,EAAGoC,EAAI,EAAE,GAAM4F,EAEjC,IAEP,CAED,mBAAoB,CAEnB,MAAM5F,EAAK,KAAK,SAEVmV,EAAWnV,EAAI,CAAC,EAAKA,EAAI,CAAG,EAAGA,EAAI,CAAG,EAAGA,EAAI,CAAC,EAAKA,EAAI,CAAC,EAAKA,EAAI,GACjEoV,EAAWpV,EAAI,CAAC,EAAKA,EAAI,CAAG,EAAGA,EAAI,CAAG,EAAGA,EAAI,CAAC,EAAKA,EAAI,CAAC,EAAKA,EAAI,GACjEqV,EAAWrV,EAAI,CAAC,EAAKA,EAAI,CAAG,EAAGA,EAAI,CAAG,EAAGA,EAAI,CAAC,EAAKA,EAAI,EAAE,EAAKA,EAAI,IAExE,OAAO,KAAK,KAAM,KAAK,IAAKmV,EAAUC,EAAUC,CAAQ,EAExD,CAED,gBAAiB1X,EAAGC,EAAGgI,EAAI,CAE1B,OAAKjI,EAAE,UAEN,KAAK,IAEJ,EAAG,EAAG,EAAGA,EAAE,EACX,EAAG,EAAG,EAAGA,EAAE,EACX,EAAG,EAAG,EAAGA,EAAE,EACX,EAAG,EAAG,EAAG,CAEb,EAIG,KAAK,IAEJ,EAAG,EAAG,EAAGA,EACT,EAAG,EAAG,EAAGC,EACT,EAAG,EAAG,EAAGgI,EACT,EAAG,EAAG,EAAG,CAEb,EAIS,IAEP,CAED,cAAejH,EAAQ,CAEtB,MAAMU,EAAI,KAAK,IAAKV,CAAK,EAAIR,EAAI,KAAK,IAAKQ,GAE3C,YAAK,IAEJ,EAAG,EAAG,EAAG,EACT,EAAGU,EAAG,CAAElB,EAAG,EACX,EAAGA,EAAGkB,EAAG,EACT,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,cAAeV,EAAQ,CAEtB,MAAMU,EAAI,KAAK,IAAKV,CAAK,EAAIR,EAAI,KAAK,IAAKQ,GAE3C,YAAK,IAEHU,EAAG,EAAGlB,EAAG,EACT,EAAG,EAAG,EAAG,EACV,CAAEA,EAAG,EAAGkB,EAAG,EACV,EAAG,EAAG,EAAG,CAEb,EAES,IAEP,CAED,cAAeV,EAAQ,CAEtB,MAAMU,EAAI,KAAK,IAAKV,CAAK,EAAIR,EAAI,KAAK,IAAKQ,GAE3C,YAAK,IAEJU,EAAG,CAAElB,EAAG,EAAG,EACXA,EAAGkB,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,iBAAkBmK,EAAMpK,EAAQ,CAI/B,MAAMC,EAAI,KAAK,IAAKD,CAAK,EACnBjB,EAAI,KAAK,IAAKiB,CAAK,EACnBvB,EAAI,EAAIwB,EACR1B,EAAI6L,EAAK,EAAG5L,EAAI4L,EAAK,EAAG5D,EAAI4D,EAAK,EACjCnH,EAAKxE,EAAIF,EAAG2E,EAAKzE,EAAID,EAE3B,YAAK,IAEJyE,EAAK1E,EAAI0B,EAAGgD,EAAKzE,EAAIO,EAAIyH,EAAGvD,EAAKuD,EAAIzH,EAAIP,EAAG,EAC5CyE,EAAKzE,EAAIO,EAAIyH,EAAGtD,EAAK1E,EAAIyB,EAAGiD,EAAKsD,EAAIzH,EAAIR,EAAG,EAC5C0E,EAAKuD,EAAIzH,EAAIP,EAAG0E,EAAKsD,EAAIzH,EAAIR,EAAGE,EAAI+H,EAAIA,EAAIvG,EAAG,EAC/C,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,UAAW1B,EAAGC,EAAGgI,EAAI,CAEpB,YAAK,IAEJjI,EAAG,EAAG,EAAG,EACT,EAAGC,EAAG,EAAG,EACT,EAAG,EAAGgI,EAAG,EACT,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,UAAWe,EAAIC,EAAI0O,EAAIzO,EAAI0O,EAAIC,EAAK,CAEnC,YAAK,IAEJ,EAAGF,EAAIC,EAAI,EACX5O,EAAI,EAAG6O,EAAI,EACX5O,EAAIC,EAAI,EAAG,EACX,EAAG,EAAG,EAAG,CAEZ,EAES,IAEP,CAED,QAAS4O,EAAU3M,EAAY4M,EAAQ,CAEtC,MAAM1V,EAAK,KAAK,SAEVrC,EAAImL,EAAW,GAAIlL,EAAIkL,EAAW,GAAIlD,EAAIkD,EAAW,GAAIjD,EAAIiD,EAAW,GACxE6M,EAAKhY,EAAIA,EAAGiY,EAAKhY,EAAIA,EAAGiY,EAAKjQ,EAAIA,EACjCY,EAAK7I,EAAIgY,EAAIhP,EAAKhJ,EAAIiY,EAAIhP,EAAKjJ,EAAIkY,EACnCpP,EAAK7I,EAAIgY,EAAI/O,EAAKjJ,EAAIiY,EAAInP,EAAKd,EAAIiQ,EACnCC,EAAKjQ,EAAI8P,EAAII,EAAKlQ,EAAI+P,EAAII,EAAKnQ,EAAIgQ,EAEnCtT,EAAKmT,EAAM,EAAGlT,EAAKkT,EAAM,EAAG/I,EAAK+I,EAAM,EAE7C,OAAA1V,EAAI,CAAC,GAAO,GAAMyG,EAAKC,IAASnE,EAChCvC,EAAI,CAAG,GAAK2G,EAAKqP,GAAOzT,EACxBvC,EAAI,CAAG,GAAK4G,EAAKmP,GAAOxT,EACxBvC,EAAI,CAAG,EAAG,EAEVA,EAAI,CAAG,GAAK2G,EAAKqP,GAAOxT,EACxBxC,EAAI,CAAC,GAAO,GAAMwG,EAAKE,IAASlE,EAChCxC,EAAI,CAAG,GAAK6G,EAAKiP,GAAOtT,EACxBxC,EAAI,CAAG,EAAG,EAEVA,EAAI,CAAG,GAAK4G,EAAKmP,GAAOpJ,EACxB3M,EAAI,CAAG,GAAK6G,EAAKiP,GAAOnJ,EACxB3M,EAAI,EAAE,GAAO,GAAMwG,EAAKC,IAASkG,EACjC3M,EAAI,EAAI,EAAG,EAEXA,EAAI,EAAE,EAAKyV,EAAS,EACpBzV,EAAI,EAAE,EAAKyV,EAAS,EACpBzV,EAAI,EAAE,EAAKyV,EAAS,EACpBzV,EAAI,EAAI,EAAG,EAEJ,IAEP,CAED,UAAWyV,EAAU3M,EAAY4M,EAAQ,CAExC,MAAM1V,EAAK,KAAK,SAEhB,IAAIuC,EAAKyQ,GAAM,IAAKhT,EAAI,CAAG,EAAEA,EAAI,CAAG,EAAEA,EAAI,CAAC,CAAI,EAAC,OAAM,EACtD,MAAMwC,EAAKwQ,GAAM,IAAKhT,EAAI,CAAG,EAAEA,EAAI,CAAG,EAAEA,EAAI,CAAC,CAAI,EAAC,OAAM,EAClD2M,EAAKqG,GAAM,IAAKhT,EAAI,CAAG,EAAEA,EAAI,CAAG,EAAEA,EAAI,EAAE,CAAI,EAAC,OAAM,EAG7C,KAAK,cACN,IAAIuC,EAAK,CAAEA,GAEtBkT,EAAS,EAAIzV,EAAI,IACjByV,EAAS,EAAIzV,EAAI,IACjByV,EAAS,EAAIzV,EAAI,IAGjBiW,GAAM,KAAM,MAEZ,MAAMC,EAAQ,EAAI3T,EACZ4T,EAAQ,EAAI3T,EACZ4T,EAAQ,EAAIzJ,EAElB,OAAAsJ,GAAM,SAAU,CAAG,GAAIC,EACvBD,GAAM,SAAU,CAAG,GAAIC,EACvBD,GAAM,SAAU,CAAG,GAAIC,EAEvBD,GAAM,SAAU,CAAG,GAAIE,EACvBF,GAAM,SAAU,CAAG,GAAIE,EACvBF,GAAM,SAAU,CAAG,GAAIE,EAEvBF,GAAM,SAAU,CAAG,GAAIG,EACvBH,GAAM,SAAU,CAAG,GAAIG,EACvBH,GAAM,SAAU,EAAI,GAAIG,EAExBtN,EAAW,sBAAuBmN,IAElCP,EAAM,EAAInT,EACVmT,EAAM,EAAIlT,EACVkT,EAAM,EAAI/I,EAEH,IAEP,CAED,gBAAiB0J,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,EAAKC,EAAmB5a,GAAwB,CAEhG,MAAMiE,EAAK,KAAK,SACVrC,EAAI,EAAI8Y,GAASH,EAAQD,GACzBzY,EAAI,EAAI6Y,GAASF,EAAMC,GAEvBpY,GAAMkY,EAAQD,IAAWC,EAAQD,GACjChY,GAAMkY,EAAMC,IAAaD,EAAMC,GAErC,IAAInX,EAAGoC,EAEP,GAAKkV,IAAqB5a,GAEzBsD,EAAI,EAAIqX,EAAMD,IAAWC,EAAMD,GAC/BhV,EAAM,GAAMiV,EAAMD,GAAWC,EAAMD,WAExBE,IAAqB3a,GAEhCqD,EAAI,CAAEqX,GAAQA,EAAMD,GACpBhV,EAAM,CAAEiV,EAAMD,GAAWC,EAAMD,OAI/B,OAAM,IAAI,MAAO,+DAAiEE,GAInF,OAAA3W,EAAI,CAAC,EAAKrC,EAAGqC,EAAI,CAAC,EAAK,EAAGA,EAAI,CAAG,EAAG5B,EAAI4B,EAAI,EAAI,EAAG,EACnDA,EAAI,CAAC,EAAK,EAAGA,EAAI,CAAC,EAAKpC,EAAGoC,EAAI,CAAG,EAAG3B,EAAI2B,EAAI,EAAI,EAAG,EACnDA,EAAI,CAAC,EAAK,EAAGA,EAAI,CAAC,EAAK,EAAGA,EAAI,EAAI,EAAGX,EAAIW,EAAI,EAAI,EAAGyB,EACpDzB,EAAI,CAAC,EAAK,EAAGA,EAAI,CAAC,EAAK,EAAGA,EAAI,EAAI,EAAG,GAAKA,EAAI,EAAI,EAAG,EAE9C,IAEP,CAED,iBAAkBqW,EAAMC,EAAOC,EAAKC,EAAQC,EAAMC,EAAKC,EAAmB5a,GAAwB,CAEjG,MAAMiE,EAAK,KAAK,SACV6F,EAAI,GAAQyQ,EAAQD,GACpB,EAAI,GAAQE,EAAMC,GAClB,EAAI,GAAQE,EAAMD,GAElB9Y,GAAM2Y,EAAQD,GAASxQ,EACvBjI,GAAM2Y,EAAMC,GAAW,EAE7B,IAAI5Q,EAAGgR,EAEP,GAAKD,IAAqB5a,GAEzB6J,GAAM8Q,EAAMD,GAAS,EACrBG,EAAO,GAAM,UAEFD,IAAqB3a,GAEhC4J,EAAI6Q,EAAO,EACXG,EAAO,GAAM,MAIb,OAAM,IAAI,MAAO,gEAAkED,GAIpF,OAAA3W,EAAI,CAAC,EAAK,EAAI6F,EAAG7F,EAAI,GAAM,EAAIA,EAAI,CAAC,EAAK,EAAKA,EAAI,EAAE,EAAK,CAAErC,EAC3DqC,EAAI,CAAC,EAAK,EAAKA,EAAI,CAAG,EAAG,EAAI,EAAGA,EAAI,CAAC,EAAK,EAAKA,EAAI,EAAE,EAAK,CAAEpC,EAC5DoC,EAAI,CAAC,EAAK,EAAKA,EAAI,CAAC,EAAK,EAAIA,EAAI,EAAI,EAAG4W,EAAM5W,EAAI,EAAE,EAAK,CAAE4F,EAC3D5F,EAAI,CAAC,EAAK,EAAKA,EAAI,CAAC,EAAK,EAAIA,EAAI,EAAI,EAAG,EAAIA,EAAI,EAAI,EAAG,EAEhD,IAEP,CAED,OAAQ6C,EAAS,CAEhB,MAAM7C,EAAK,KAAK,SACVC,EAAK4C,EAAO,SAElB,QAAUpG,EAAI,EAAGA,EAAI,GAAIA,IAExB,GAAKuD,EAAIvD,CAAG,IAAKwD,EAAIxD,CAAC,EAAK,MAAO,GAInC,MAAO,EAEP,CAED,UAAWD,EAAOyC,EAAS,EAAI,CAE9B,QAAUxC,EAAI,EAAGA,EAAI,GAAIA,IAExB,KAAK,SAAUA,CAAC,EAAKD,EAAOC,EAAIwC,GAIjC,OAAO,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,MAAMe,EAAK,KAAK,SAEhB,OAAAxD,EAAOyC,CAAM,EAAKe,EAAI,CAAC,EACvBxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAE3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAE3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,CAAG,EAAGe,EAAI,CAAC,EAC3BxD,EAAOyC,EAAS,EAAI,EAAGe,EAAI,EAAE,EAC7BxD,EAAOyC,EAAS,EAAI,EAAGe,EAAI,EAAE,EAE7BxD,EAAOyC,EAAS,EAAI,EAAGe,EAAI,EAAE,EAC7BxD,EAAOyC,EAAS,EAAI,EAAGe,EAAI,EAAE,EAC7BxD,EAAOyC,EAAS,EAAI,EAAGe,EAAI,EAAE,EAC7BxD,EAAOyC,EAAS,EAAI,EAAGe,EAAI,EAAE,EAEtBxD,CAEP,CAEF,CAEA,MAAMwW,GAAsB,IAAI7H,EAC1B8K,GAAsB,IAAI1D,GAC1BsB,GAAsB,IAAI1I,EAAS,EAAG,EAAG,CAAC,EAC1C2I,GAAqB,IAAI3I,EAAS,EAAG,EAAG,CAAC,EACzC+I,GAAmB,IAAI/I,EACvBgJ,GAAmB,IAAIhJ,EACvB8I,GAAmB,IAAI9I,EAEvB0L,GAA0B,IAAItE,GAC9BuE,GAA8B,IAAIrP,GAExC,MAAMsP,EAAM,CAEX,YAAapZ,EAAI,EAAGC,EAAI,EAAGgI,EAAI,EAAGqD,EAAQ8N,GAAM,cAAgB,CAE/D,KAAK,QAAU,GAEf,KAAK,GAAKpZ,EACV,KAAK,GAAKC,EACV,KAAK,GAAKgI,EACV,KAAK,OAASqD,CAEd,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAG7L,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAGA,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAI,GAAI,CAEP,OAAO,KAAK,EAEZ,CAED,IAAI,EAAGA,EAAQ,CAEd,KAAK,GAAKA,EACV,KAAK,kBAAiB,CAEtB,CAED,IAAI,OAAQ,CAEX,OAAO,KAAK,MAEZ,CAED,IAAI,MAAOA,EAAQ,CAElB,KAAK,OAASA,EACd,KAAK,kBAAiB,CAEtB,CAED,IAAKO,EAAGC,EAAGgI,EAAGqD,EAAQ,KAAK,OAAS,CAEnC,YAAK,GAAKtL,EACV,KAAK,GAAKC,EACV,KAAK,GAAKgI,EACV,KAAK,OAASqD,EAEd,KAAK,kBAAiB,EAEf,IAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,MAAM,CAEnE,CAED,KAAMF,EAAQ,CAEb,YAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,GAAKA,EAAM,GAChB,KAAK,OAASA,EAAM,OAEpB,KAAK,kBAAiB,EAEf,IAEP,CAED,sBAAuBtL,EAAGwL,EAAQ,KAAK,OAAQD,EAAS,GAAO,CAI9D,MAAMhJ,EAAKvC,EAAE,SACPsI,EAAM/F,EAAI,CAAC,EAAIgG,EAAMhG,EAAI,GAAKiG,EAAMjG,EAAI,CAAC,EACzCkG,EAAMlG,EAAI,CAAC,EAAImG,EAAMnG,EAAI,GAAKoG,EAAMpG,EAAI,CAAC,EACzCqG,EAAMrG,EAAI,CAAC,EAAIsG,EAAMtG,EAAI,GAAKuG,EAAMvG,EAAI,EAAE,EAEhD,OAASiJ,EAAK,CAEb,IAAK,MAEJ,KAAK,GAAK,KAAK,KAAM9L,GAAO8I,EAAK,GAAK,CAAC,GAElC,KAAK,IAAKA,CAAG,EAAK,UAEtB,KAAK,GAAK,KAAK,MAAO,CAAEG,EAAKG,GAC7B,KAAK,GAAK,KAAK,MAAO,CAAEP,EAAKD,KAI7B,KAAK,GAAK,KAAK,MAAOO,EAAKH,CAAG,EAC9B,KAAK,GAAK,GAIX,MAED,IAAK,MAEJ,KAAK,GAAK,KAAK,KAAM,CAAEhJ,GAAOiJ,EAAK,GAAK,CAAC,GAEpC,KAAK,IAAKA,CAAG,EAAK,UAEtB,KAAK,GAAK,KAAK,MAAOH,EAAKM,CAAG,EAC9B,KAAK,GAAK,KAAK,MAAOL,EAAKC,CAAG,IAI9B,KAAK,GAAK,KAAK,MAAO,CAAEE,EAAKN,GAC7B,KAAK,GAAK,GAIX,MAED,IAAK,MAEJ,KAAK,GAAK,KAAK,KAAM5I,GAAOmJ,EAAK,GAAK,CAAC,GAElC,KAAK,IAAKA,CAAG,EAAK,UAEtB,KAAK,GAAK,KAAK,MAAO,CAAED,EAAKE,GAC7B,KAAK,GAAK,KAAK,MAAO,CAAEP,EAAKG,KAI7B,KAAK,GAAK,EACV,KAAK,GAAK,KAAK,MAAOD,EAAKH,CAAG,GAI/B,MAED,IAAK,MAEJ,KAAK,GAAK,KAAK,KAAM,CAAE5I,GAAOkJ,EAAK,GAAK,CAAC,GAEpC,KAAK,IAAKA,CAAG,EAAK,UAEtB,KAAK,GAAK,KAAK,MAAOC,EAAKC,CAAG,EAC9B,KAAK,GAAK,KAAK,MAAOL,EAAKH,CAAG,IAI9B,KAAK,GAAK,EACV,KAAK,GAAK,KAAK,MAAO,CAAEC,EAAKG,IAI9B,MAED,IAAK,MAEJ,KAAK,GAAK,KAAK,KAAMhJ,GAAO+I,EAAK,GAAK,CAAC,GAElC,KAAK,IAAKA,CAAG,EAAK,UAEtB,KAAK,GAAK,KAAK,MAAO,CAAEE,EAAKD,GAC7B,KAAK,GAAK,KAAK,MAAO,CAAEE,EAAKN,KAI7B,KAAK,GAAK,EACV,KAAK,GAAK,KAAK,MAAOE,EAAKM,CAAG,GAI/B,MAED,IAAK,MAEJ,KAAK,GAAK,KAAK,KAAM,CAAEpJ,GAAO6I,EAAK,GAAK,CAAC,GAEpC,KAAK,IAAKA,CAAG,EAAK,UAEtB,KAAK,GAAK,KAAK,MAAOM,EAAKH,CAAG,EAC9B,KAAK,GAAK,KAAK,MAAOF,EAAKF,CAAG,IAI9B,KAAK,GAAK,KAAK,MAAO,CAAEK,EAAKG,GAC7B,KAAK,GAAK,GAIX,MAED,QAEC,QAAQ,KAAM,uEAAyE0C,EAExF,CAED,YAAK,OAASA,EAETD,IAAW,IAAO,KAAK,kBAAiB,EAEtC,IAEP,CAED,kBAAmBlD,EAAGmD,EAAOD,EAAS,CAErC,OAAA6N,GAAU,2BAA4B/Q,GAE/B,KAAK,sBAAuB+Q,GAAW5N,EAAOD,CAAM,CAE3D,CAED,eAAgB9K,EAAG+K,EAAQ,KAAK,OAAS,CAExC,OAAO,KAAK,IAAK/K,EAAE,EAAGA,EAAE,EAAGA,EAAE,EAAG+K,EAEhC,CAED,QAAS+N,EAAW,CAInB,OAAAF,GAAc,aAAc,MAErB,KAAK,kBAAmBA,GAAeE,CAAQ,CAEtD,CAED,OAAQjO,EAAQ,CAEf,OAASA,EAAM,KAAO,KAAK,IAAUA,EAAM,KAAO,KAAK,IAAUA,EAAM,KAAO,KAAK,IAAUA,EAAM,SAAW,KAAK,MAEnH,CAED,UAAWvM,EAAQ,CAElB,YAAK,GAAKA,EAAO,GACjB,KAAK,GAAKA,EAAO,GACjB,KAAK,GAAKA,EAAO,GACZA,EAAO,CAAC,IAAO,SAAY,KAAK,OAASA,EAAO,IAErD,KAAK,kBAAiB,EAEf,IAEP,CAED,QAASA,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,OAAAzC,EAAOyC,CAAM,EAAK,KAAK,GACvBzC,EAAOyC,EAAS,GAAM,KAAK,GAC3BzC,EAAOyC,EAAS,GAAM,KAAK,GAC3BzC,EAAOyC,EAAS,GAAM,KAAK,OAEpBzC,CAEP,CAED,UAAW0O,EAAW,CAErB,YAAK,kBAAoBA,EAElB,IAEP,CAED,mBAAoB,CAAE,CAEtB,EAAG,OAAO,WAAa,CAEtB,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,GACX,MAAM,KAAK,MAEX,CAEF,CAEA6L,GAAM,cAAgB,MAEtB,MAAME,EAAO,CAEZ,aAAc,CAEb,KAAK,KAAO,CAEZ,CAED,IAAKC,EAAU,CAEd,KAAK,MAAS,GAAKA,EAAU,KAAQ,CAErC,CAED,OAAQA,EAAU,CAEjB,KAAK,MAAQ,GAAKA,EAAU,CAE5B,CAED,WAAY,CAEX,KAAK,KAAO,EAEZ,CAED,OAAQA,EAAU,CAEjB,KAAK,MAAQ,GAAKA,EAAU,CAE5B,CAED,QAASA,EAAU,CAElB,KAAK,MAAQ,EAAI,GAAKA,EAAU,EAEhC,CAED,YAAa,CAEZ,KAAK,KAAO,CAEZ,CAED,KAAMC,EAAS,CAEd,OAAS,KAAK,KAAOA,EAAO,QAAW,CAEvC,CAED,UAAWD,EAAU,CAEpB,OAAS,KAAK,MAAS,GAAKA,EAAU,MAAU,CAEhD,CAEF,CAEA,IAAIE,GAAc,EAElB,MAAMC,GAAsB,IAAIlM,EAC1BmM,GAAoB,IAAI7P,GACxB8P,GAAsB,IAAIhF,GAC1BiF,GAAwB,IAAIrM,EAE5BsM,GAA4B,IAAItM,EAChCuM,GAAyB,IAAIvM,EAC7BwM,GAA8B,IAAIlQ,GAElCmQ,GAAuB,IAAIzM,EAAS,EAAG,EAAG,CAAC,EAC3C0M,GAAuB,IAAI1M,EAAS,EAAG,EAAG,CAAC,EAC3C2M,GAAuB,IAAI3M,EAAS,EAAG,EAAG,CAAC,EAE3C4M,GAAc,CAAE,KAAM,SACtBC,GAAgB,CAAE,KAAM,WAExBC,GAAmB,CAAE,KAAM,aAAc,MAAO,IAAI,EACpDC,GAAqB,CAAE,KAAM,eAAgB,MAAO,IAAI,EAE9D,MAAMC,WAAiBlc,EAAgB,CAEtC,aAAc,CAEb,QAEA,KAAK,WAAa,GAElB,OAAO,eAAgB,KAAM,KAAM,CAAE,MAAOmb,IAAc,GAE1D,KAAK,KAAOta,KAEZ,KAAK,KAAO,GACZ,KAAK,KAAO,WAEZ,KAAK,OAAS,KACd,KAAK,SAAW,GAEhB,KAAK,GAAKqb,GAAS,WAAW,MAAK,EAEnC,MAAM1C,EAAW,IAAItK,EACf1I,EAAW,IAAIsU,GACfjO,EAAa,IAAIrB,GACjBiO,EAAQ,IAAIvK,EAAS,EAAG,EAAG,CAAC,EAElC,SAASiN,GAAmB,CAE3BtP,EAAW,aAAcrG,EAAU,GAEnC,CAED,SAAS4V,GAAqB,CAE7B5V,EAAS,kBAAmBqG,EAAY,OAAW,EAAK,CAExD,CAEDrG,EAAS,UAAW2V,GACpBtP,EAAW,UAAWuP,GAEtB,OAAO,iBAAkB,KAAM,CAC9B,SAAU,CACT,aAAc,GACd,WAAY,GACZ,MAAO5C,CACP,EACD,SAAU,CACT,aAAc,GACd,WAAY,GACZ,MAAOhT,CACP,EACD,WAAY,CACX,aAAc,GACd,WAAY,GACZ,MAAOqG,CACP,EACD,MAAO,CACN,aAAc,GACd,WAAY,GACZ,MAAO4M,CACP,EACD,gBAAiB,CAChB,MAAO,IAAInD,EACX,EACD,aAAc,CACb,MAAO,IAAIjT,EACX,CACJ,GAEE,KAAK,OAAS,IAAIiT,GAClB,KAAK,YAAc,IAAIA,GAEvB,KAAK,iBAAmB4F,GAAS,2BAEjC,KAAK,sBAAwBA,GAAS,iCACtC,KAAK,uBAAyB,GAE9B,KAAK,OAAS,IAAIlB,GAClB,KAAK,QAAU,GAEf,KAAK,WAAa,GAClB,KAAK,cAAgB,GAErB,KAAK,cAAgB,GACrB,KAAK,YAAc,EAEnB,KAAK,WAAa,GAElB,KAAK,SAAW,EAEhB,CAED,gBAA+F,CAAE,CAEjG,eAA8F,CAAE,CAEhG,gBAA2E,CAAE,CAE7E,eAA0E,CAAE,CAE5E,aAAcpU,EAAS,CAEjB,KAAK,kBAAmB,KAAK,aAAY,EAE9C,KAAK,OAAO,YAAaA,GAEzB,KAAK,OAAO,UAAW,KAAK,SAAU,KAAK,WAAY,KAAK,MAE5D,CAED,gBAAiBiD,EAAI,CAEpB,YAAK,WAAW,YAAaA,GAEtB,IAEP,CAED,yBAA0B0D,EAAMpK,EAAQ,CAIvC,KAAK,WAAW,iBAAkBoK,EAAMpK,CAAK,CAE7C,CAED,qBAAsB2J,EAAQ,CAE7B,KAAK,WAAW,aAAcA,EAAO,EAAI,CAEzC,CAED,sBAAuBtL,EAAI,CAI1B,KAAK,WAAW,sBAAuBA,EAEvC,CAED,0BAA2BqI,EAAI,CAI9B,KAAK,WAAW,KAAMA,EAEtB,CAED,aAAc0D,EAAMpK,EAAQ,CAK3B,OAAAkY,GAAI,iBAAkB9N,EAAMpK,GAE5B,KAAK,WAAW,SAAUkY,IAEnB,IAEP,CAED,kBAAmB9N,EAAMpK,EAAQ,CAMhC,OAAAkY,GAAI,iBAAkB9N,EAAMpK,GAE5B,KAAK,WAAW,YAAakY,IAEtB,IAEP,CAED,QAASlY,EAAQ,CAEhB,OAAO,KAAK,aAAcwY,GAAQxY,CAAK,CAEvC,CAED,QAASA,EAAQ,CAEhB,OAAO,KAAK,aAAcyY,GAAQzY,CAAK,CAEvC,CAED,QAASA,EAAQ,CAEhB,OAAO,KAAK,aAAc0Y,GAAQ1Y,CAAK,CAEvC,CAED,gBAAiBoK,EAAM8O,EAAW,CAKjC,OAAAjB,GAAM,KAAM7N,CAAI,EAAG,gBAAiB,KAAK,YAEzC,KAAK,SAAS,IAAK6N,GAAM,eAAgBiB,CAAQ,GAE1C,IAEP,CAED,WAAYA,EAAW,CAEtB,OAAO,KAAK,gBAAiBV,GAAQU,CAAQ,CAE7C,CAED,WAAYA,EAAW,CAEtB,OAAO,KAAK,gBAAiBT,GAAQS,CAAQ,CAE7C,CAED,WAAYA,EAAW,CAEtB,OAAO,KAAK,gBAAiBR,GAAQQ,CAAQ,CAE7C,CAED,aAAc/K,EAAS,CAEtB,YAAK,kBAAmB,GAAM,IAEvBA,EAAO,aAAc,KAAK,WAAW,CAE5C,CAED,aAAcA,EAAS,CAEtB,YAAK,kBAAmB,GAAM,IAEvBA,EAAO,aAAcgK,GAAM,KAAM,KAAK,WAAW,EAAG,OAAM,EAEjE,CAED,OAAQ5Z,EAAGC,EAAGgI,EAAI,CAIZjI,EAAE,UAEN6Z,GAAQ,KAAM7Z,GAId6Z,GAAQ,IAAK7Z,EAAGC,EAAGgI,CAAC,EAIrB,MAAM2S,EAAS,KAAK,OAEpB,KAAK,kBAAmB,GAAM,IAE9Bd,GAAY,sBAAuB,KAAK,aAEnC,KAAK,UAAY,KAAK,QAE1BF,GAAM,OAAQE,GAAaD,GAAS,KAAK,EAAE,EAI3CD,GAAM,OAAQC,GAASC,GAAa,KAAK,EAAE,EAI5C,KAAK,WAAW,sBAAuBF,IAElCgB,IAEJhB,GAAM,gBAAiBgB,EAAO,aAC9BjB,GAAI,sBAAuBC,IAC3B,KAAK,WAAW,YAAaD,GAAI,OAAQ,CAAA,EAI1C,CAED,IAAKpK,EAAS,CAEb,GAAK,UAAU,OAAS,EAAI,CAE3B,QAAUzQ,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAEtC,KAAK,IAAK,UAAWA,CAAG,CAAA,EAIzB,OAAO,IAEP,CAED,OAAKyQ,IAAW,MAEf,QAAQ,MAAO,kEAAoEA,GAC5E,OAIHA,GAAUA,EAAO,YAErBA,EAAO,iBAAgB,EACvBA,EAAO,OAAS,KAChB,KAAK,SAAS,KAAMA,GAEpBA,EAAO,cAAe6K,IAEtBE,GAAiB,MAAQ/K,EACzB,KAAK,cAAe+K,IACpBA,GAAiB,MAAQ,MAIzB,QAAQ,MAAO,gEAAiE/K,GAI1E,KAEP,CAED,OAAQA,EAAS,CAEhB,GAAK,UAAU,OAAS,EAAI,CAE3B,QAAUzQ,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAEtC,KAAK,OAAQ,UAAWA,CAAG,CAAA,EAI5B,OAAO,IAEP,CAED,MAAMH,EAAQ,KAAK,SAAS,QAAS4Q,CAAM,EAE3C,OAAK5Q,IAAU,KAEd4Q,EAAO,OAAS,KAChB,KAAK,SAAS,OAAQ5Q,EAAO,CAAC,EAE9B4Q,EAAO,cAAe8K,IAEtBE,GAAmB,MAAQhL,EAC3B,KAAK,cAAegL,IACpBA,GAAmB,MAAQ,MAIrB,IAEP,CAED,kBAAmB,CAElB,MAAMK,EAAS,KAAK,OAEpB,OAAKA,IAAW,MAEfA,EAAO,OAAQ,MAIT,IAEP,CAED,OAAQ,CAEP,OAAO,KAAK,OAAQ,GAAI,KAAK,QAAQ,CAErC,CAED,OAAQrL,EAAS,CAMhB,YAAK,kBAAmB,GAAM,IAE9BqK,GAAM,KAAM,KAAK,WAAa,EAAC,OAAM,EAEhCrK,EAAO,SAAW,OAEtBA,EAAO,OAAO,kBAAmB,GAAM,EAAK,EAE5CqK,GAAM,SAAUrK,EAAO,OAAO,WAAW,GAI1CA,EAAO,aAAcqK,IAErBrK,EAAO,iBAAgB,EACvBA,EAAO,OAAS,KAChB,KAAK,SAAS,KAAMA,GAEpBA,EAAO,kBAAmB,GAAO,IAEjCA,EAAO,cAAe6K,IAEtBE,GAAiB,MAAQ/K,EACzB,KAAK,cAAe+K,IACpBA,GAAiB,MAAQ,KAElB,IAEP,CAED,cAAeO,EAAK,CAEnB,OAAO,KAAK,oBAAqB,KAAMA,CAAE,CAEzC,CAED,gBAAiBxV,EAAO,CAEvB,OAAO,KAAK,oBAAqB,OAAQA,CAAI,CAE7C,CAED,oBAAqBA,EAAM5F,EAAQ,CAElC,GAAK,KAAM4F,CAAI,IAAO5F,EAAQ,OAAO,KAErC,QAAUX,EAAI,EAAGC,EAAI,KAAK,SAAS,OAAQD,EAAIC,EAAGD,IAAO,CAGxD,MAAMyQ,EADQ,KAAK,SAAUzQ,CAAC,EACT,oBAAqBuG,EAAM5F,CAAK,EAErD,GAAK8P,IAAW,OAEf,OAAOA,CAIR,CAID,CAED,qBAAsBlK,EAAM5F,EAAOqb,EAAS,CAAA,EAAK,CAE3C,KAAMzV,KAAW5F,GAAQqb,EAAO,KAAM,MAE3C,MAAM9K,EAAW,KAAK,SAEtB,QAAUlR,EAAI,EAAGC,EAAIiR,EAAS,OAAQlR,EAAIC,EAAGD,IAE5CkR,EAAUlR,CAAC,EAAG,qBAAsBuG,EAAM5F,EAAOqb,GAIlD,OAAOA,CAEP,CAED,iBAAkBpL,EAAS,CAE1B,YAAK,kBAAmB,GAAM,IAEvBA,EAAO,sBAAuB,KAAK,WAAW,CAErD,CAED,mBAAoBA,EAAS,CAE5B,YAAK,kBAAmB,GAAM,IAE9B,KAAK,YAAY,UAAWoK,GAAapK,EAAQqK,EAAQ,EAElDrK,CAEP,CAED,cAAeA,EAAS,CAEvB,YAAK,kBAAmB,GAAM,IAE9B,KAAK,YAAY,UAAWoK,GAAaE,GAAetK,CAAM,EAEvDA,CAEP,CAED,kBAAmBA,EAAS,CAE3B,KAAK,kBAAmB,GAAM,IAE9B,MAAM,EAAI,KAAK,YAAY,SAE3B,OAAOA,EAAO,IAAK,EAAG,CAAC,EAAI,EAAG,CAAC,EAAI,EAAG,GAAM,EAAC,UAAS,CAEtD,CAED,SAAuC,CAAE,CAEzC,SAAUnC,EAAW,CAEpBA,EAAU,IAAI,EAEd,MAAMyC,EAAW,KAAK,SAEtB,QAAUlR,EAAI,EAAGC,EAAIiR,EAAS,OAAQlR,EAAIC,EAAGD,IAE5CkR,EAAUlR,CAAC,EAAG,SAAUyO,CAAQ,CAIjC,CAED,gBAAiBA,EAAW,CAE3B,GAAK,KAAK,UAAY,GAAQ,OAE9BA,EAAU,IAAI,EAEd,MAAMyC,EAAW,KAAK,SAEtB,QAAUlR,EAAI,EAAGC,EAAIiR,EAAS,OAAQlR,EAAIC,EAAGD,IAE5CkR,EAAUlR,CAAC,EAAG,gBAAiByO,CAAQ,CAIxC,CAED,kBAAmBA,EAAW,CAE7B,MAAMqN,EAAS,KAAK,OAEfA,IAAW,OAEfrN,EAAUqN,CAAM,EAEhBA,EAAO,kBAAmBrN,GAI3B,CAED,cAAe,CAEd,KAAK,OAAO,QAAS,KAAK,SAAU,KAAK,WAAY,KAAK,OAE1D,KAAK,uBAAyB,EAE9B,CAED,kBAAmBwN,EAAQ,CAErB,KAAK,kBAAmB,KAAK,aAAY,GAEzC,KAAK,wBAA0BA,KAE9B,KAAK,SAAW,KAEpB,KAAK,YAAY,KAAM,KAAK,MAAM,EAIlC,KAAK,YAAY,iBAAkB,KAAK,OAAO,YAAa,KAAK,QAIlE,KAAK,uBAAyB,GAE9BA,EAAQ,IAMT,MAAM/K,EAAW,KAAK,SAEtB,QAAUlR,EAAI,EAAGC,EAAIiR,EAAS,OAAQlR,EAAIC,EAAGD,IAAO,CAEnD,MAAMkc,EAAQhL,EAAUlR,IAEnBkc,EAAM,wBAA0B,IAAQD,IAAU,KAEtDC,EAAM,kBAAmBD,EAI1B,CAED,CAED,kBAAmBE,EAAeC,EAAiB,CAElD,MAAMN,EAAS,KAAK,OAsBpB,GApBKK,IAAkB,IAAQL,IAAW,MAAQA,EAAO,wBAA0B,IAElFA,EAAO,kBAAmB,GAAM,IAI5B,KAAK,kBAAmB,KAAK,aAAY,EAEzC,KAAK,SAAW,KAEpB,KAAK,YAAY,KAAM,KAAK,MAAM,EAIlC,KAAK,YAAY,iBAAkB,KAAK,OAAO,YAAa,KAAK,QAM7DM,IAAmB,GAAO,CAE9B,MAAMlL,EAAW,KAAK,SAEtB,QAAUlR,EAAI,EAAGC,EAAIiR,EAAS,OAAQlR,EAAIC,EAAGD,IAAO,CAEnD,MAAMkc,EAAQhL,EAAUlR,GAEnBkc,EAAM,wBAA0B,IAEpCA,EAAM,kBAAmB,GAAO,GAIjC,CAED,CAED,CAED,OAAQhU,EAAO,CAGd,MAAMC,EAAiBD,IAAS,QAAa,OAAOA,GAAS,SAEvDE,EAAS,CAAA,EAKVD,IAGJD,EAAO,CACN,WAAY,CAAE,EACd,UAAW,CAAE,EACb,SAAU,CAAE,EACZ,OAAQ,CAAE,EACV,OAAQ,CAAE,EACV,UAAW,CAAE,EACb,WAAY,CAAE,EACd,MAAO,CAAE,CACb,EAEGE,EAAO,SAAW,CACjB,QAAS,IACT,KAAM,SACN,UAAW,iBACf,GAME,MAAMqI,EAAS,CAAA,EAEfA,EAAO,KAAO,KAAK,KACnBA,EAAO,KAAO,KAAK,KAEd,KAAK,OAAS,KAAKA,EAAO,KAAO,KAAK,MACtC,KAAK,aAAe,KAAOA,EAAO,WAAa,IAC/C,KAAK,gBAAkB,KAAOA,EAAO,cAAgB,IACrD,KAAK,UAAY,KAAQA,EAAO,QAAU,IAC1C,KAAK,gBAAkB,KAAQA,EAAO,cAAgB,IACtD,KAAK,cAAgB,IAAIA,EAAO,YAAc,KAAK,aACnD,OAAO,KAAM,KAAK,QAAU,EAAC,OAAS,IAAIA,EAAO,SAAW,KAAK,UAEtEA,EAAO,OAAS,KAAK,OAAO,KAC5BA,EAAO,OAAS,KAAK,OAAO,QAAO,EACnCA,EAAO,GAAK,KAAK,GAAG,QAAO,EAEtB,KAAK,mBAAqB,KAAQA,EAAO,iBAAmB,IAI5D,KAAK,kBAETA,EAAO,KAAO,gBACdA,EAAO,MAAQ,KAAK,MACpBA,EAAO,eAAiB,KAAK,eAAe,OAAM,EAC7C,KAAK,gBAAkB,OAAOA,EAAO,cAAgB,KAAK,cAAc,WAIzE,KAAK,gBAETA,EAAO,KAAO,cACdA,EAAO,uBAAyB,KAAK,uBACrCA,EAAO,YAAc,KAAK,YAE1BA,EAAO,WAAa,KAAK,YACzBA,EAAO,eAAiB,KAAK,gBAE7BA,EAAO,WAAa,KAAK,YACzBA,EAAO,OAAS,KAAK,QACrBA,EAAO,OAAS,KAAK,QAAQ,IAAK4L,IAAW,CAC5C,eAAgBA,EAAM,eACtB,OAAQA,EAAM,IAAI,IAAI,QAAS,EAC/B,OAAQA,EAAM,IAAI,IAAI,QAAS,EAE/B,kBAAmBA,EAAM,kBACzB,aAAcA,EAAM,OAAO,OAC3B,aAAcA,EAAM,OAAO,OAAO,QAAS,CAC3C,IAED5L,EAAO,iBAAmB,KAAK,kBAC/BA,EAAO,eAAiB,KAAK,gBAC7BA,EAAO,cAAgB,KAAK,eAE5BA,EAAO,oBAAsB,KAAK,qBAClCA,EAAO,cAAgB,KAAK,eAE5BA,EAAO,gBAAkB,KAAK,iBAAiB,OAAQvI,CAAI,EAEtD,KAAK,iBAAmB,OAE5BuI,EAAO,eAAiB,CACvB,OAAQA,EAAO,eAAe,OAAO,QAAS,EAC9C,OAAQA,EAAO,eAAe,MACnC,GAIQ,KAAK,cAAgB,OAEzBA,EAAO,YAAc,CACpB,IAAKA,EAAO,YAAY,IAAI,QAAS,EACrC,IAAKA,EAAO,YAAY,IAAI,QAAS,CAC1C,IAQE,SAAS6L,EAAWC,EAASC,EAAU,CAEtC,OAAKD,EAASC,EAAQ,IAAI,IAAO,SAEhCD,EAASC,EAAQ,IAAI,EAAKA,EAAQ,OAAQtU,IAIpCsU,EAAQ,IAEf,CAED,GAAK,KAAK,QAEJ,KAAK,aAEJ,KAAK,WAAW,QAEpB/L,EAAO,WAAa,KAAK,WAAW,OAAM,EAE/B,KAAK,WAAW,YAE3BA,EAAO,WAAa,KAAK,WAAW,OAAQvI,CAAM,EAAC,OAMhD,KAAK,aAAe,KAAK,YAAY,WAAa,KAAK,YAAY,wBAA0B,KAEjGuI,EAAO,YAAc,KAAK,YAAY,OAAQvI,CAAM,EAAC,cAI3C,KAAK,QAAU,KAAK,QAAU,KAAK,SAAW,CAEzDuI,EAAO,SAAW6L,EAAWpU,EAAK,WAAY,KAAK,UAEnD,MAAMuU,EAAa,KAAK,SAAS,WAEjC,GAAKA,IAAe,QAAaA,EAAW,SAAW,OAAY,CAElE,MAAMC,EAASD,EAAW,OAE1B,GAAK,MAAM,QAASC,GAEnB,QAAU1c,EAAI,EAAGC,EAAIyc,EAAO,OAAQ1c,EAAIC,EAAGD,IAAO,CAEjD,MAAM2c,EAAQD,EAAQ1c,GAEtBsc,EAAWpU,EAAK,OAAQyU,EAExB,MAIDL,EAAWpU,EAAK,OAAQwU,EAIzB,CAED,CAiBD,GAfK,KAAK,gBAETjM,EAAO,SAAW,KAAK,SACvBA,EAAO,WAAa,KAAK,WAAW,QAAO,EAEtC,KAAK,WAAa,SAEtB6L,EAAWpU,EAAK,UAAW,KAAK,QAAQ,EAExCuI,EAAO,SAAW,KAAK,SAAS,OAM7B,KAAK,WAAa,OAEtB,GAAK,MAAM,QAAS,KAAK,QAAQ,EAAK,CAErC,MAAMmM,EAAQ,CAAA,EAEd,QAAU5c,EAAI,EAAGC,EAAI,KAAK,SAAS,OAAQD,EAAIC,EAAGD,IAEjD4c,EAAM,KAAMN,EAAWpU,EAAK,UAAW,KAAK,SAAUlI,CAAG,CAAA,GAI1DyQ,EAAO,SAAWmM,CAEtB,MAEInM,EAAO,SAAW6L,EAAWpU,EAAK,UAAW,KAAK,UAQpD,GAAK,KAAK,SAAS,OAAS,EAAI,CAE/BuI,EAAO,SAAW,GAElB,QAAUzQ,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IAE1CyQ,EAAO,SAAS,KAAM,KAAK,SAAUzQ,CAAG,EAAC,OAAQkI,GAAO,OAIzD,CAID,GAAK,KAAK,WAAW,OAAS,EAAI,CAEjCuI,EAAO,WAAa,GAEpB,QAAUzQ,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAAO,CAEnD,MAAM6c,EAAY,KAAK,WAAY7c,CAAC,EAEpCyQ,EAAO,WAAW,KAAM6L,EAAWpU,EAAK,WAAY2U,CAAS,EAE7D,CAED,CAED,GAAK1U,EAAe,CAEnB,MAAM2U,EAAaC,EAAkB7U,EAAK,UAAU,EAC9C8U,EAAYD,EAAkB7U,EAAK,SAAS,EAC5C+U,EAAWF,EAAkB7U,EAAK,QAAQ,EAC1CgV,EAASH,EAAkB7U,EAAK,MAAM,EACtCwU,EAASK,EAAkB7U,EAAK,MAAM,EACtCiV,EAAYJ,EAAkB7U,EAAK,SAAS,EAC5CkV,EAAaL,EAAkB7U,EAAK,UAAU,EAC9CmV,EAAQN,EAAkB7U,EAAK,KAAK,EAErC4U,EAAW,OAAS,IAAI1U,EAAO,WAAa0U,GAC5CE,EAAU,OAAS,IAAI5U,EAAO,UAAY4U,GAC1CC,EAAS,OAAS,IAAI7U,EAAO,SAAW6U,GACxCC,EAAO,OAAS,IAAI9U,EAAO,OAAS8U,GACpCR,EAAO,OAAS,IAAItU,EAAO,OAASsU,GACpCS,EAAU,OAAS,IAAI/U,EAAO,UAAY+U,GAC1CC,EAAW,OAAS,IAAIhV,EAAO,WAAagV,GAC5CC,EAAM,OAAS,IAAIjV,EAAO,MAAQiV,EAEvC,CAED,OAAAjV,EAAO,OAASqI,EAETrI,EAKP,SAAS2U,EAAkBO,EAAQ,CAElC,MAAMC,EAAS,CAAA,EACf,UAAYC,KAAOF,EAAQ,CAE1B,MAAMvV,EAAOuV,EAAOE,GACpB,OAAOzV,EAAK,SACZwV,EAAO,KAAMxV,EAEb,CAED,OAAOwV,CAEP,CAED,CAED,MAAOE,EAAY,CAElB,OAAO,IAAI,KAAK,YAAW,EAAG,KAAM,KAAMA,EAE1C,CAED,KAAMzU,EAAQyU,EAAY,GAAO,CAgChC,GA9BA,KAAK,KAAOzU,EAAO,KAEnB,KAAK,GAAG,KAAMA,EAAO,EAAE,EAEvB,KAAK,SAAS,KAAMA,EAAO,QAAQ,EACnC,KAAK,SAAS,MAAQA,EAAO,SAAS,MACtC,KAAK,WAAW,KAAMA,EAAO,UAAU,EACvC,KAAK,MAAM,KAAMA,EAAO,KAAK,EAE7B,KAAK,OAAO,KAAMA,EAAO,MAAM,EAC/B,KAAK,YAAY,KAAMA,EAAO,WAAW,EAEzC,KAAK,iBAAmBA,EAAO,iBAE/B,KAAK,sBAAwBA,EAAO,sBACpC,KAAK,uBAAyBA,EAAO,uBAErC,KAAK,OAAO,KAAOA,EAAO,OAAO,KACjC,KAAK,QAAUA,EAAO,QAEtB,KAAK,WAAaA,EAAO,WACzB,KAAK,cAAgBA,EAAO,cAE5B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,YAAcA,EAAO,YAE1B,KAAK,WAAaA,EAAO,WAAW,MAAK,EAEzC,KAAK,SAAW,KAAK,MAAO,KAAK,UAAWA,EAAO,QAAQ,GAEtDyU,IAAc,GAElB,QAAUzd,EAAI,EAAGA,EAAIgJ,EAAO,SAAS,OAAQhJ,IAAO,CAEnD,MAAMkc,EAAQlT,EAAO,SAAUhJ,CAAC,EAChC,KAAK,IAAKkc,EAAM,MAAO,CAAA,CAEvB,CAIF,OAAO,IAEP,CAEF,CAEAR,GAAS,WAA2B,IAAIhN,EAAS,EAAG,EAAG,CAAC,EACxDgN,GAAS,2BAA6B,GACtCA,GAAS,iCAAmC,GAE5C,MAAMgC,GAAsB,IAAIhP,EAC1BiP,GAAsB,IAAIjP,EAC1BkP,GAAsB,IAAIlP,EAC1BmP,GAAsB,IAAInP,EAE1BoP,GAAqB,IAAIpP,EACzBqP,GAAqB,IAAIrP,EACzBsP,GAAqB,IAAItP,EACzBuP,GAAqB,IAAIvP,EACzBwP,GAAqB,IAAIxP,EACzByP,GAAqB,IAAIzP,EAE/B,MAAM0P,EAAS,CAEd,YAAazc,EAAI,IAAI+M,EAAW9M,EAAI,IAAI8M,EAAW9L,EAAI,IAAI8L,EAAY,CAEtE,KAAK,EAAI/M,EACT,KAAK,EAAIC,EACT,KAAK,EAAIgB,CAET,CAED,OAAO,UAAWjB,EAAGC,EAAGgB,EAAGgO,EAAS,CAEnCA,EAAO,WAAYhO,EAAGhB,GACtB8b,GAAM,WAAY/b,EAAGC,GACrBgP,EAAO,MAAO8M,IAEd,MAAMW,EAAiBzN,EAAO,WAC9B,OAAKyN,EAAiB,EAEdzN,EAAO,eAAgB,EAAI,KAAK,KAAMyN,CAAc,GAIrDzN,EAAO,IAAK,EAAG,EAAG,CAAC,CAE1B,CAID,OAAO,aAAcC,EAAOlP,EAAGC,EAAGgB,EAAGgO,EAAS,CAE7C8M,GAAM,WAAY9a,EAAGjB,GACrBgc,GAAM,WAAY/b,EAAGD,GACrBic,GAAM,WAAY/M,EAAOlP,GAEzB,MAAM2c,EAAQZ,GAAM,IAAKA,EAAK,EACxBa,EAAQb,GAAM,IAAKC,EAAK,EACxBa,EAAQd,GAAM,IAAKE,EAAK,EACxBa,EAAQd,GAAM,IAAKA,EAAK,EACxBe,EAAQf,GAAM,IAAKC,EAAK,EAExBe,EAAUL,EAAQG,EAAQF,EAAQA,EAGxC,GAAKI,IAAU,EAEd,OAAA/N,EAAO,IAAK,EAAG,EAAG,CAAC,EACZ,KAIR,MAAMgO,EAAW,EAAID,EACfxO,GAAMsO,EAAQD,EAAQD,EAAQG,GAAUE,EACxC,GAAMN,EAAQI,EAAQH,EAAQC,GAAUI,EAG9C,OAAOhO,EAAO,IAAK,EAAIT,EAAI,EAAG,EAAGA,EAEjC,CAED,OAAO,cAAeU,EAAOlP,EAAGC,EAAGgB,EAAI,CAGtC,OAAK,KAAK,aAAciO,EAAOlP,EAAGC,EAAGgB,EAAGib,EAAO,IAAK,KAE5C,GAICA,GAAM,GAAK,GAASA,GAAM,GAAK,GAAWA,GAAM,EAAIA,GAAM,GAAO,CAE1E,CAED,OAAO,iBAAkBhN,EAAO0B,EAAIC,EAAIqM,EAAIvc,EAAIC,EAAIuc,EAAIlO,EAAS,CAEhE,OAAK,KAAK,aAAcC,EAAO0B,EAAIC,EAAIqM,EAAIhB,EAAO,IAAK,MAEtDjN,EAAO,EAAI,EACXA,EAAO,EAAI,EACN,MAAOA,IAASA,EAAO,EAAI,GAC3B,MAAOA,IAASA,EAAO,EAAI,GACzB,OAIRA,EAAO,UAAW,GAClBA,EAAO,gBAAiBtO,EAAIub,GAAM,CAAC,EACnCjN,EAAO,gBAAiBrO,EAAIsb,GAAM,CAAC,EACnCjN,EAAO,gBAAiBkO,EAAIjB,GAAM,CAAC,EAE5BjN,EAEP,CAED,OAAO,cAAejP,EAAGC,EAAGgB,EAAGgR,EAAY,CAE1C,OAAA8J,GAAM,WAAY9a,EAAGhB,GACrB+b,GAAM,WAAYhc,EAAGC,GAGZ8b,GAAM,MAAOC,EAAO,EAAC,IAAK/J,GAAc,CAEjD,CAED,IAAKjS,EAAGC,EAAGgB,EAAI,CAEd,YAAK,EAAE,KAAMjB,GACb,KAAK,EAAE,KAAMC,GACb,KAAK,EAAE,KAAMgB,GAEN,IAEP,CAED,wBAAyB0N,EAAQyO,EAAIC,EAAIC,EAAK,CAE7C,YAAK,EAAE,KAAM3O,EAAQyO,CAAI,CAAA,EACzB,KAAK,EAAE,KAAMzO,EAAQ0O,CAAI,CAAA,EACzB,KAAK,EAAE,KAAM1O,EAAQ2O,CAAI,CAAA,EAElB,IAEP,CAED,2BAA4Bxc,EAAWsc,EAAIC,EAAIC,EAAK,CAEnD,YAAK,EAAE,oBAAqBxc,EAAWsc,CAAE,EACzC,KAAK,EAAE,oBAAqBtc,EAAWuc,CAAE,EACzC,KAAK,EAAE,oBAAqBvc,EAAWwc,CAAE,EAElC,IAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAED,KAAM5N,EAAW,CAEhB,YAAK,EAAE,KAAMA,EAAS,CAAC,EACvB,KAAK,EAAE,KAAMA,EAAS,CAAC,EACvB,KAAK,EAAE,KAAMA,EAAS,CAAC,EAEhB,IAEP,CAED,SAAU,CAET,OAAAqM,GAAM,WAAY,KAAK,EAAG,KAAK,CAAC,EAChCC,GAAM,WAAY,KAAK,EAAG,KAAK,CAAC,EAEzBD,GAAM,MAAOC,EAAO,EAAC,OAAM,EAAK,EAEvC,CAED,YAAa/M,EAAS,CAErB,OAAOA,EAAO,WAAY,KAAK,EAAG,KAAK,CAAC,EAAG,IAAK,KAAK,CAAG,EAAC,eAAgB,EAAI,CAAC,CAE9E,CAED,UAAWA,EAAS,CAEnB,OAAOwN,GAAS,UAAW,KAAK,EAAG,KAAK,EAAG,KAAK,EAAGxN,EAEnD,CAED,SAAUA,EAAS,CAElB,OAAOA,EAAO,sBAAuB,KAAK,EAAG,KAAK,EAAG,KAAK,EAE1D,CAED,aAAcC,EAAOD,EAAS,CAE7B,OAAOwN,GAAS,aAAcvN,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,EAAGD,CAAM,CAEnE,CAED,iBAAkBC,EAAOvO,EAAIC,EAAIuc,EAAIlO,EAAS,CAE7C,OAAOwN,GAAS,iBAAkBvN,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,EAAGvO,EAAIC,EAAIuc,EAAIlO,CAAM,CAEnF,CAED,cAAeC,EAAQ,CAEtB,OAAOuN,GAAS,cAAevN,EAAO,KAAK,EAAG,KAAK,EAAG,KAAK,EAE3D,CAED,cAAe+C,EAAY,CAE1B,OAAOwK,GAAS,cAAe,KAAK,EAAG,KAAK,EAAG,KAAK,EAAGxK,EAEvD,CAED,cAAejD,EAAM,CAEpB,OAAOA,EAAI,mBAAoB,KAE/B,CAED,oBAAqBuO,EAAGtO,EAAS,CAEhC,MAAMjP,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGgB,EAAI,KAAK,EACvC,IAAInB,EAAG2H,EAQP0U,GAAK,WAAYlc,EAAGD,GACpBoc,GAAK,WAAYnb,EAAGjB,GACpBsc,GAAK,WAAYiB,EAAGvd,GACpB,MAAMpB,EAAKud,GAAK,IAAKG,EAAI,EACnBzd,EAAKud,GAAK,IAAKE,EAAI,EACzB,GAAK1d,GAAM,GAAKC,GAAM,EAGrB,OAAOoQ,EAAO,KAAMjP,GAIrBuc,GAAK,WAAYgB,EAAGtd,GACpB,MAAMnB,EAAKqd,GAAK,IAAKI,EAAI,EACnBiB,EAAKpB,GAAK,IAAKG,EAAI,EACzB,GAAKzd,GAAM,GAAK0e,GAAM1e,EAGrB,OAAOmQ,EAAO,KAAMhP,GAIrB,MAAMwd,EAAK7e,EAAK4e,EAAK1e,EAAKD,EAC1B,GAAK4e,GAAM,GAAK7e,GAAM,GAAKE,GAAM,EAEhC,OAAAgB,EAAIlB,GAAOA,EAAKE,GAETmQ,EAAO,KAAMjP,CAAC,EAAG,gBAAiBmc,GAAMrc,GAIhD0c,GAAK,WAAYe,EAAGtc,GACpB,MAAMyc,EAAKvB,GAAK,IAAKK,EAAI,EACnBmB,EAAKvB,GAAK,IAAKI,EAAI,EACzB,GAAKmB,GAAM,GAAKD,GAAMC,EAGrB,OAAO1O,EAAO,KAAMhO,GAIrB,MAAM2c,EAAKF,EAAK7e,EAAKD,EAAK+e,EAC1B,GAAKC,GAAM,GAAK/e,GAAM,GAAK8e,GAAM,EAEhC,OAAAlW,EAAI5I,GAAOA,EAAK8e,GAET1O,EAAO,KAAMjP,CAAC,EAAG,gBAAiBoc,GAAM3U,GAIhD,MAAMoW,EAAK/e,EAAK6e,EAAKD,EAAKF,EAC1B,GAAKK,GAAM,GAAOL,EAAK1e,GAAQ,GAAO4e,EAAKC,GAAQ,EAElD,OAAAtB,GAAK,WAAYpb,EAAGhB,GACpBwH,GAAM+V,EAAK1e,IAAW0e,EAAK1e,GAAS4e,EAAKC,IAElC1O,EAAO,KAAMhP,CAAC,EAAG,gBAAiBoc,GAAM5U,GAKhD,MAAMuV,EAAQ,GAAMa,EAAKD,EAAKH,GAE9B,OAAA3d,EAAI8d,EAAKZ,EACTvV,EAAIgW,EAAKT,EAEF/N,EAAO,KAAMjP,CAAC,EAAG,gBAAiBmc,GAAMrc,GAAI,gBAAiBsc,GAAM3U,CAAC,CAE3E,CAED,OAAQiI,EAAW,CAElB,OAAOA,EAAS,EAAE,OAAQ,KAAK,CAAC,GAAMA,EAAS,EAAE,OAAQ,KAAK,CAAC,GAAMA,EAAS,EAAE,OAAQ,KAAK,EAE7F,CAEF,CAEA,MAAMoO,GAAiB,CAAE,UAAa,SAAU,aAAgB,SAAU,KAAQ,MAAU,WAAc,QAAU,MAAS,SAC5H,MAAS,SAAU,OAAU,SAAU,MAAS,EAAU,eAAkB,SAAU,KAAQ,IAAU,WAAc,QACtH,MAAS,SAAU,UAAa,SAAU,UAAa,QAAU,WAAc,QAAU,UAAa,SAAU,MAAS,SACzH,eAAkB,QAAU,SAAY,SAAU,QAAW,SAAU,KAAQ,MAAU,SAAY,IAAU,SAAY,MAC3H,cAAiB,SAAU,SAAY,SAAU,UAAa,MAAU,SAAY,SAAU,UAAa,SAAU,YAAe,QACpI,eAAkB,QAAU,WAAc,SAAU,WAAc,SAAU,QAAW,QAAU,WAAc,SAAU,aAAgB,QACzI,cAAiB,QAAU,cAAiB,QAAU,cAAiB,QAAU,cAAiB,MAAU,WAAc,QAC1H,SAAY,SAAU,YAAe,MAAU,QAAW,QAAU,QAAW,QAAU,WAAc,QAAU,UAAa,SAC9H,YAAe,SAAU,YAAe,QAAU,QAAW,SAAU,UAAa,SAAU,WAAc,SAAU,KAAQ,SAC9H,UAAa,SAAU,KAAQ,QAAU,MAAS,MAAU,YAAe,SAAU,KAAQ,QAAU,SAAY,SAAU,QAAW,SACxI,UAAa,SAAU,OAAU,QAAU,MAAS,SAAU,MAAS,SAAU,SAAY,SAAU,cAAiB,SAAU,UAAa,QAC/I,aAAgB,SAAU,UAAa,SAAU,WAAc,SAAU,UAAa,SAAU,qBAAwB,SAAU,UAAa,SAC/I,WAAc,QAAU,UAAa,SAAU,UAAa,SAAU,YAAe,SAAU,cAAiB,QAAU,aAAgB,QAC1I,eAAkB,QAAU,eAAkB,QAAU,eAAkB,SAAU,YAAe,SAAU,KAAQ,MAAU,UAAa,QAC5I,MAAS,SAAU,QAAW,SAAU,OAAU,QAAU,iBAAoB,QAAU,WAAc,IAAU,aAAgB,SAClI,aAAgB,QAAU,eAAkB,QAAU,gBAAmB,QAAU,kBAAqB,MAAU,gBAAmB,QACrI,gBAAmB,SAAU,aAAgB,QAAU,UAAa,SAAU,UAAa,SAAU,SAAY,SAAU,YAAe,SAC1I,KAAQ,IAAU,QAAW,SAAU,MAAS,QAAU,UAAa,QAAU,OAAU,SAAU,UAAa,SAAU,OAAU,SACtI,cAAiB,SAAU,UAAa,SAAU,cAAiB,SAAU,cAAiB,SAAU,WAAc,SAAU,UAAa,SAC7I,KAAQ,SAAU,KAAQ,SAAU,KAAQ,SAAU,WAAc,SAAU,OAAU,QAAU,cAAiB,QAAU,IAAO,SAAU,UAAa,SAC3J,UAAa,QAAU,YAAe,QAAU,OAAU,SAAU,WAAc,SAAU,SAAY,QAAU,SAAY,SAC9H,OAAU,SAAU,OAAU,SAAU,QAAW,QAAU,UAAa,QAAU,UAAa,QAAU,UAAa,QAAU,KAAQ,SAC1I,YAAe,MAAU,UAAa,QAAU,IAAO,SAAU,KAAQ,MAAU,QAAW,SAAU,OAAU,SAAU,UAAa,QACzI,OAAU,SAAU,MAAS,SAAU,MAAS,SAAU,WAAc,SAAU,OAAU,SAAU,YAAe,QAAQ,EAExHC,GAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GACzBC,GAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAE/B,SAASC,GAASV,EAAG7V,EAAGjI,EAAI,CAI3B,OAFKA,EAAI,IAAIA,GAAK,GACbA,EAAI,IAAIA,GAAK,GACbA,EAAI,EAAI,EAAW8d,GAAM7V,EAAI6V,GAAM,EAAI9d,EACvCA,EAAI,EAAI,EAAWiI,EACnBjI,EAAI,EAAI,EAAW8d,GAAM7V,EAAI6V,GAAM,GAAM,EAAI,EAAI9d,GAC/C8d,CAER,CAEA,MAAMW,EAAM,CAEX,YAAala,EAAGT,EAAGtD,EAAI,CAEtB,YAAK,QAAU,GAEf,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,EAEF,KAAK,IAAK+D,EAAGT,EAAGtD,CAAC,CAExB,CAED,IAAK+D,EAAGT,EAAGtD,EAAI,CAEd,GAAKsD,IAAM,QAAatD,IAAM,OAAY,CAIzC,MAAMjB,EAAQgF,EAEThF,GAASA,EAAM,QAEnB,KAAK,KAAMA,GAEA,OAAOA,GAAU,SAE5B,KAAK,OAAQA,GAEF,OAAOA,GAAU,UAE5B,KAAK,SAAUA,EAInB,MAEG,KAAK,OAAQgF,EAAGT,EAAGtD,CAAC,EAIrB,OAAO,IAEP,CAED,UAAWJ,EAAS,CAEnB,YAAK,EAAIA,EACT,KAAK,EAAIA,EACT,KAAK,EAAIA,EAEF,IAEP,CAED,OAAQse,EAAK3Y,EAAajJ,GAAiB,CAE1C,OAAA4hB,EAAM,KAAK,MAAOA,GAElB,KAAK,GAAMA,GAAO,GAAK,KAAQ,IAC/B,KAAK,GAAMA,GAAO,EAAI,KAAQ,IAC9B,KAAK,GAAMA,EAAM,KAAQ,IAEzB5Y,GAAgB,oBAAqB,KAAMC,GAEpC,IAEP,CAED,OAAQxB,EAAGT,EAAGtD,EAAGuF,EAAaD,GAAgB,kBAAoB,CAEjE,YAAK,EAAIvB,EACT,KAAK,EAAIT,EACT,KAAK,EAAItD,EAETsF,GAAgB,oBAAqB,KAAMC,GAEpC,IAEP,CAED,OAAQhC,EAAGzD,EAAGzB,EAAGkH,EAAaD,GAAgB,kBAAoB,CAOjE,GAJA/B,EAAIrE,GAAiBqE,EAAG,GACxBzD,EAAIhB,GAAOgB,EAAG,EAAG,CAAC,EAClBzB,EAAIS,GAAOT,EAAG,EAAG,CAAC,EAEbyB,IAAM,EAEV,KAAK,EAAI,KAAK,EAAI,KAAK,EAAIzB,MAErB,CAEN,MAAMif,EAAIjf,GAAK,GAAMA,GAAM,EAAIyB,GAAMzB,EAAIyB,EAAMzB,EAAIyB,EAC7C2H,EAAM,EAAIpJ,EAAMif,EAEtB,KAAK,EAAIU,GAASvW,EAAG6V,EAAG/Z,EAAI,EAAI,GAChC,KAAK,EAAIya,GAASvW,EAAG6V,EAAG/Z,CAAC,EACzB,KAAK,EAAIya,GAASvW,EAAG6V,EAAG/Z,EAAI,EAAI,EAEhC,CAED,OAAA+B,GAAgB,oBAAqB,KAAMC,GAEpC,IAEP,CAED,SAAU4Y,EAAO5Y,EAAajJ,GAAiB,CAE9C,SAAS8hB,EAAaC,EAAS,CAEzBA,IAAW,QAEX,WAAYA,CAAQ,EAAG,GAE3B,QAAQ,KAAM,mCAAqCF,EAAQ,mBAAmB,CAI/E,CAGD,IAAI/e,EAEJ,GAAKA,EAAI,qBAAqB,KAAM+e,CAAK,EAAK,CAI7C,IAAI/Y,EACJ,MAAMT,EAAOvF,EAAG,GACVkf,EAAalf,EAAG,GAEtB,OAASuF,EAAI,CAEZ,IAAK,MACL,IAAK,OAEJ,GAAKS,EAAQ,+DAA+D,KAAMkZ,CAAU,EAI3F,OAAAF,EAAahZ,EAAO,CAAC,GAEd,KAAK,OACX,KAAK,IAAK,IAAK,SAAUA,EAAO,CAAG,EAAE,EAAI,CAAA,EAAK,IAC9C,KAAK,IAAK,IAAK,SAAUA,EAAO,CAAG,EAAE,EAAI,CAAA,EAAK,IAC9C,KAAK,IAAK,IAAK,SAAUA,EAAO,CAAG,EAAE,EAAI,CAAA,EAAK,IAC9CG,CACP,EAIK,GAAKH,EAAQ,qEAAqE,KAAMkZ,CAAU,EAIjG,OAAAF,EAAahZ,EAAO,CAAC,GAEd,KAAK,OACX,KAAK,IAAK,IAAK,SAAUA,EAAO,CAAG,EAAE,EAAI,CAAA,EAAK,IAC9C,KAAK,IAAK,IAAK,SAAUA,EAAO,CAAG,EAAE,EAAI,CAAA,EAAK,IAC9C,KAAK,IAAK,IAAK,SAAUA,EAAO,CAAG,EAAE,EAAI,CAAA,EAAK,IAC9CG,CACP,EAIK,MAED,IAAK,MACL,IAAK,OAEJ,GAAKH,EAAQ,qFAAqF,KAAMkZ,CAAU,EAIjH,OAAAF,EAAahZ,EAAO,CAAC,GAEd,KAAK,OACX,WAAYA,EAAO,CAAG,CAAA,EAAK,IAC3B,WAAYA,EAAO,CAAG,CAAA,EAAK,IAC3B,WAAYA,EAAO,CAAG,CAAA,EAAK,IAC3BG,CACP,EAIK,MAED,QAEC,QAAQ,KAAM,oCAAsC4Y,EAErD,CAED,SAAW/e,EAAI,oBAAoB,KAAM+e,CAAK,EAAK,CAInD,MAAMD,EAAM9e,EAAG,GACTuP,EAAOuP,EAAI,OAEjB,GAAKvP,IAAS,EAGb,OAAO,KAAK,OACX,SAAUuP,EAAI,OAAQ,CAAC,EAAI,EAAI,EAAG,GAClC,SAAUA,EAAI,OAAQ,CAAC,EAAI,EAAI,EAAG,GAClC,SAAUA,EAAI,OAAQ,CAAC,EAAI,EAAI,EAAG,GAClC3Y,CACL,EAEU,GAAKoJ,IAAS,EAGpB,OAAO,KAAK,OAAQ,SAAUuP,EAAK,EAAE,EAAI3Y,GAIzC,QAAQ,KAAM,kCAAoC4Y,EAInD,SAAWA,GAASA,EAAM,OAAS,EAEnC,OAAO,KAAK,aAAcA,EAAO5Y,CAAU,EAI5C,OAAO,IAEP,CAED,aAAc4Y,EAAO5Y,EAAajJ,GAAiB,CAGlD,MAAM4hB,EAAML,GAAgBM,EAAM,YAAa,CAAA,EAE/C,OAAKD,IAAQ,OAGZ,KAAK,OAAQA,EAAK3Y,GAKlB,QAAQ,KAAM,8BAAgC4Y,GAIxC,IAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,EAAG,KAAK,EAAG,KAAK,EAElD,CAED,KAAM/Y,EAAQ,CAEb,YAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EACf,KAAK,EAAIA,EAAM,EAER,IAEP,CAED,iBAAkBA,EAAQ,CAEzB,YAAK,EAAIQ,GAAcR,EAAM,CAAC,EAC9B,KAAK,EAAIQ,GAAcR,EAAM,CAAC,EAC9B,KAAK,EAAIQ,GAAcR,EAAM,CAAC,EAEvB,IAEP,CAED,iBAAkBA,EAAQ,CAEzB,YAAK,EAAIS,GAAcT,EAAM,CAAC,EAC9B,KAAK,EAAIS,GAAcT,EAAM,CAAC,EAC9B,KAAK,EAAIS,GAAcT,EAAM,CAAC,EAEvB,IAEP,CAED,qBAAsB,CAErB,YAAK,iBAAkB,MAEhB,IAEP,CAED,qBAAsB,CAErB,YAAK,iBAAkB,MAEhB,IAEP,CAED,OAAQG,EAAajJ,GAAiB,CAErC,OAAAgJ,GAAgB,sBAAuBiZ,GAAO,KAAM,IAAI,EAAIhZ,GAErD,KAAK,MAAOzG,GAAOyf,GAAO,EAAI,IAAK,EAAG,GAAG,CAAI,EAAG,MAAQ,KAAK,MAAOzf,GAAOyf,GAAO,EAAI,IAAK,EAAG,GAAK,CAAA,EAAK,IAAM,KAAK,MAAOzf,GAAOyf,GAAO,EAAI,IAAK,EAAG,GAAK,CAAA,CAEhK,CAED,aAAchZ,EAAajJ,GAAiB,CAE3C,OAAS,SAAW,KAAK,OAAQiJ,CAAU,EAAG,SAAU,EAAI,GAAG,MAAO,EAAG,CAEzE,CAED,OAAQyJ,EAAQzJ,EAAaD,GAAgB,kBAAoB,CAIhEA,GAAgB,sBAAuBiZ,GAAO,KAAM,IAAI,EAAIhZ,GAE5D,MAAMxB,EAAIwa,GAAO,EAAGjb,EAAIib,GAAO,EAAGve,EAAIue,GAAO,EAEvCtf,EAAM,KAAK,IAAK8E,EAAGT,EAAGtD,GACtBhB,EAAM,KAAK,IAAK+E,EAAGT,EAAGtD,GAE5B,IAAIwe,EAAKC,EACT,MAAMC,GAAc1f,EAAMC,GAAQ,EAElC,GAAKD,IAAQC,EAEZuf,EAAM,EACNC,EAAa,MAEP,CAEN,MAAMnN,EAAQrS,EAAMD,EAIpB,OAFAyf,EAAaC,GAAa,GAAMpN,GAAUrS,EAAMD,GAAQsS,GAAU,EAAIrS,EAAMD,GAEnEC,EAAG,CAEX,KAAK8E,EAAGya,GAAQlb,EAAItD,GAAMsR,GAAUhO,EAAItD,EAAI,EAAI,GAAK,MACrD,KAAKsD,EAAGkb,GAAQxe,EAAI+D,GAAMuN,EAAQ,EAAG,MACrC,KAAKtR,EAAGwe,GAAQza,EAAIT,GAAMgO,EAAQ,EAAG,KAErC,CAEDkN,GAAO,CAEP,CAED,OAAAxP,EAAO,EAAIwP,EACXxP,EAAO,EAAIyP,EACXzP,EAAO,EAAI0P,EAEJ1P,CAEP,CAED,OAAQA,EAAQzJ,EAAaD,GAAgB,kBAAoB,CAEhE,OAAAA,GAAgB,sBAAuBiZ,GAAO,KAAM,IAAI,EAAIhZ,GAE5DyJ,EAAO,EAAIuP,GAAO,EAClBvP,EAAO,EAAIuP,GAAO,EAClBvP,EAAO,EAAIuP,GAAO,EAEXvP,CAEP,CAED,SAAUzJ,EAAajJ,GAAiB,CAEvCgJ,GAAgB,sBAAuBiZ,GAAO,KAAM,IAAI,EAAIhZ,GAE5D,MAAMxB,EAAIwa,GAAO,EAAGjb,EAAIib,GAAO,EAAGve,EAAIue,GAAO,EAE7C,OAAKhZ,IAAejJ,GAGZ,SAAUiJ,CAAY,IAAIxB,EAAE,QAAS,CAAC,KAAQT,EAAE,QAAS,CAAG,CAAA,IAAMtD,EAAE,QAAS,CAAC,CAAI,IAInF,OAAQ,KAAK,MAAO+D,EAAI,GAAK,CAAA,IAAM,KAAK,MAAOT,EAAI,GAAG,CAAI,IAAI,KAAK,MAAOtD,EAAI,IAAO,GAE5F,CAED,UAAWuD,EAAGzD,EAAGzB,EAAI,CAEpB,YAAK,OAAQyf,IAEN,KAAK,OAAQA,GAAM,EAAIva,EAAGua,GAAM,EAAIhe,EAAGge,GAAM,EAAIzf,CAAC,CAEzD,CAED,IAAK+G,EAAQ,CAEZ,YAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EAET,IAEP,CAED,UAAWuZ,EAAQC,EAAS,CAE3B,YAAK,EAAID,EAAO,EAAIC,EAAO,EAC3B,KAAK,EAAID,EAAO,EAAIC,EAAO,EAC3B,KAAK,EAAID,EAAO,EAAIC,EAAO,EAEpB,IAEP,CAED,UAAW9e,EAAI,CAEd,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,IAAKsF,EAAQ,CAEZ,YAAK,EAAI,KAAK,IAAK,EAAG,KAAK,EAAIA,EAAM,GACrC,KAAK,EAAI,KAAK,IAAK,EAAG,KAAK,EAAIA,EAAM,GACrC,KAAK,EAAI,KAAK,IAAK,EAAG,KAAK,EAAIA,EAAM,GAE9B,IAEP,CAED,SAAUA,EAAQ,CAEjB,YAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EAChB,KAAK,GAAKA,EAAM,EAET,IAEP,CAED,eAAgBtF,EAAI,CAEnB,YAAK,GAAKA,EACV,KAAK,GAAKA,EACV,KAAK,GAAKA,EAEH,IAEP,CAED,KAAMsF,EAAO3E,EAAQ,CAEpB,YAAK,IAAO2E,EAAM,EAAI,KAAK,GAAM3E,EACjC,KAAK,IAAO2E,EAAM,EAAI,KAAK,GAAM3E,EACjC,KAAK,IAAO2E,EAAM,EAAI,KAAK,GAAM3E,EAE1B,IAEP,CAED,WAAYke,EAAQC,EAAQne,EAAQ,CAEnC,YAAK,EAAIke,EAAO,GAAMC,EAAO,EAAID,EAAO,GAAMle,EAC9C,KAAK,EAAIke,EAAO,GAAMC,EAAO,EAAID,EAAO,GAAMle,EAC9C,KAAK,EAAIke,EAAO,GAAMC,EAAO,EAAID,EAAO,GAAMle,EAEvC,IAEP,CAED,QAAS2E,EAAO3E,EAAQ,CAEvB,KAAK,OAAQqd,IACb1Y,EAAM,OAAQ2Y,IAEd,MAAMxa,EAAIlE,GAAMye,GAAM,EAAGC,GAAM,EAAGtd,GAC5BX,EAAIT,GAAMye,GAAM,EAAGC,GAAM,EAAGtd,GAC5BpC,EAAIgB,GAAMye,GAAM,EAAGC,GAAM,EAAGtd,GAElC,YAAK,OAAQ8C,EAAGzD,EAAGzB,CAAC,EAEb,IAEP,CAED,eAAgBwB,EAAI,CAEnB,YAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EACX,KAAK,EAAIA,EAAE,EAEJ,IAEP,CAED,aAAcT,EAAI,CAEjB,MAAM2E,EAAI,KAAK,EAAGT,EAAI,KAAK,EAAGtD,EAAI,KAAK,EACjCC,EAAIb,EAAE,SAEZ,YAAK,EAAIa,EAAG,CAAC,EAAK8D,EAAI9D,EAAG,CAAC,EAAKqD,EAAIrD,EAAG,CAAC,EAAKD,EAC5C,KAAK,EAAIC,EAAG,CAAC,EAAK8D,EAAI9D,EAAG,CAAC,EAAKqD,EAAIrD,EAAG,CAAC,EAAKD,EAC5C,KAAK,EAAIC,EAAG,CAAC,EAAK8D,EAAI9D,EAAG,CAAC,EAAKqD,EAAIrD,EAAG,CAAC,EAAKD,EAErC,IAEP,CAED,OAAQgB,EAAI,CAEX,OAASA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,GAASA,EAAE,IAAM,KAAK,CAElE,CAED,UAAW7C,EAAOyC,EAAS,EAAI,CAE9B,YAAK,EAAIzC,EAAOyC,GAChB,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAC1B,KAAK,EAAIzC,EAAOyC,EAAS,CAAC,EAEnB,IAEP,CAED,QAASzC,EAAQ,GAAIyC,EAAS,EAAI,CAEjC,OAAAzC,EAAOyC,CAAM,EAAK,KAAK,EACvBzC,EAAOyC,EAAS,GAAM,KAAK,EAC3BzC,EAAOyC,EAAS,GAAM,KAAK,EAEpBzC,CAEP,CAED,oBAAqB0C,EAAW5C,EAAQ,CAEvC,YAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAC9B,KAAK,EAAI4C,EAAU,KAAM5C,CAAK,EAEvB,IAEP,CAED,QAAS,CAER,OAAO,KAAK,QAEZ,CAED,EAAG,OAAO,WAAa,CAEtB,MAAM,KAAK,EACX,MAAM,KAAK,EACX,MAAM,KAAK,CAEX,CAEF,CAEA,MAAMsgB,GAAuB,IAAIN,GAEjCA,GAAM,MAAQJ,GAEd,IAAIgB,GAAc,EAElB,MAAMC,WAAiBlhB,EAAgB,CAEtC,aAAc,CAEb,QAEA,KAAK,WAAa,GAElB,OAAO,eAAgB,KAAM,KAAM,CAAE,MAAOihB,IAAc,GAE1D,KAAK,KAAOpgB,KAEZ,KAAK,KAAO,GACZ,KAAK,KAAO,WAEZ,KAAK,SAAW3J,GAChB,KAAK,KAAOJ,GACZ,KAAK,aAAe,GAEpB,KAAK,QAAU,EACf,KAAK,YAAc,GACnB,KAAK,UAAY,GAEjB,KAAK,SAAWkB,GAChB,KAAK,SAAWC,GAChB,KAAK,cAAgBV,GACrB,KAAK,cAAgB,KACrB,KAAK,cAAgB,KACrB,KAAK,mBAAqB,KAC1B,KAAK,WAAa,IAAI8oB,GAAO,EAAG,EAAG,GACnC,KAAK,WAAa,EAElB,KAAK,UAAYvnB,GACjB,KAAK,UAAY,GACjB,KAAK,WAAa,GAElB,KAAK,iBAAmB,IACxB,KAAK,YAAcqG,GACnB,KAAK,WAAa,EAClB,KAAK,gBAAkB,IACvB,KAAK,YAAcD,GACnB,KAAK,aAAeA,GACpB,KAAK,aAAeA,GACpB,KAAK,aAAe,GAEpB,KAAK,eAAiB,KACtB,KAAK,iBAAmB,GACxB,KAAK,YAAc,GAEnB,KAAK,WAAa,KAElB,KAAK,WAAa,GAElB,KAAK,UAAY,KAEjB,KAAK,cAAgB,GACrB,KAAK,oBAAsB,EAC3B,KAAK,mBAAqB,EAE1B,KAAK,UAAY,GAEjB,KAAK,gBAAkB,GACvB,KAAK,mBAAqB,GAC1B,KAAK,gBAAkB,GAEvB,KAAK,QAAU,GAEf,KAAK,WAAa,GAElB,KAAK,SAAW,GAEhB,KAAK,QAAU,EAEf,KAAK,WAAa,CAElB,CAED,IAAI,WAAY,CAEf,OAAO,KAAK,UAEZ,CAED,IAAI,UAAWiC,EAAQ,CAEjB,KAAK,WAAa,GAAMA,EAAQ,GAEpC,KAAK,UAIN,KAAK,WAAaA,CAElB,CAED,SAAwC,CAAE,CAE1C,gBAAyE,CAAE,CAE3E,iBAAgD,CAAE,CAElD,uBAAwB,CAEvB,OAAO,KAAK,gBAAgB,UAE5B,CAED,UAAW4c,EAAS,CAEnB,GAAKA,IAAW,OAEhB,UAAYC,KAAOD,EAAS,CAE3B,MAAMoD,EAAWpD,EAAQC,GAEzB,GAAKmD,IAAa,OAAY,CAE7B,QAAQ,KAAM,8BAA+BnD,CAAK,2BAA0B,EAC5E,QAEA,CAED,MAAMoD,EAAe,KAAMpD,GAE3B,GAAKoD,IAAiB,OAAY,CAEjC,QAAQ,KAAM,oBAAqBpD,CAAG,gCAAkC,KAAK,SAC7E,QAEA,CAEIoD,GAAgBA,EAAa,QAEjCA,EAAa,IAAKD,GAELC,GAAgBA,EAAa,WAAiBD,GAAYA,EAAS,UAEhFC,EAAa,KAAMD,GAInB,KAAMnD,CAAK,EAAGmD,CAIf,CAED,CAED,OAAQzY,EAAO,CAEd,MAAMC,EAAiBD,IAAS,QAAa,OAAOA,GAAS,SAExDC,IAEJD,EAAO,CACN,SAAU,CAAE,EACZ,OAAQ,CAAE,CACd,GAIE,MAAMH,EAAO,CACZ,SAAU,CACT,QAAS,IACT,KAAM,WACN,UAAW,iBACX,CACJ,EAGEA,EAAK,KAAO,KAAK,KACjBA,EAAK,KAAO,KAAK,KAEZ,KAAK,OAAS,KAAKA,EAAK,KAAO,KAAK,MAEpC,KAAK,OAAS,KAAK,MAAM,UAAUA,EAAK,MAAQ,KAAK,MAAM,OAAM,GAEjE,KAAK,YAAc,SAAYA,EAAK,UAAY,KAAK,WACrD,KAAK,YAAc,SAAYA,EAAK,UAAY,KAAK,WAErD,KAAK,QAAU,SAAYA,EAAK,MAAQ,KAAK,OAC7C,KAAK,YAAc,KAAK,WAAW,UAAUA,EAAK,WAAa,KAAK,WAAW,OAAM,GACrF,KAAK,iBAAmB,SAAYA,EAAK,eAAiB,KAAK,gBAC/D,KAAK,UAAY,KAAK,SAAS,UAAUA,EAAK,SAAW,KAAK,SAAS,OAAM,GAC7E,KAAK,oBAAsB,QAAa,KAAK,oBAAsB,IAAIA,EAAK,kBAAoB,KAAK,mBAErG,KAAK,UAAY,KAAK,SAAS,UAAUA,EAAK,SAAW,KAAK,SAAS,OAAM,GAC7E,KAAK,oBAAsB,SAAYA,EAAK,kBAAoB,KAAK,mBACrE,KAAK,eAAiB,KAAK,cAAc,UAAUA,EAAK,cAAgB,KAAK,cAAc,OAAM,GACjG,KAAK,YAAc,SAAYA,EAAK,UAAY,KAAK,WACrD,KAAK,YAAc,SAAYA,EAAK,UAAY,KAAK,WACrD,KAAK,qBAAuB,SAAYA,EAAK,mBAAqB,KAAK,oBAEvE,KAAK,cAAgB,KAAK,aAAa,YAE3CA,EAAK,aAAe,KAAK,aAAa,OAAQG,CAAM,EAAC,MAIjD,KAAK,uBAAyB,KAAK,sBAAsB,YAE7DH,EAAK,sBAAwB,KAAK,sBAAsB,OAAQG,CAAM,EAAC,MAInE,KAAK,oBAAsB,KAAK,mBAAmB,YAEvDH,EAAK,mBAAqB,KAAK,mBAAmB,OAAQG,CAAM,EAAC,KACjEH,EAAK,qBAAuB,KAAK,qBAAqB,QAAO,GAIzD,KAAK,aAAe,SAAYA,EAAK,WAAa,KAAK,YAEvD,KAAK,cAAgB,SAAYA,EAAK,YAAc,KAAK,aACzD,KAAK,iBAAmB,SAAYA,EAAK,eAAiB,KAAK,gBAC/D,KAAK,4BAA8B,SAAYA,EAAK,0BAA4B,KAAK,2BAErF,KAAK,gBAAkB,KAAK,eAAe,YAE/CA,EAAK,eAAiB,KAAK,eAAe,OAAQG,CAAM,EAAC,MAIrD,KAAK,yBAA2B,KAAK,wBAAwB,YAEjEH,EAAK,wBAA0B,KAAK,wBAAwB,OAAQG,CAAM,EAAC,MAIvE,KAAK,aAAe,SAAYH,EAAK,WAAa,KAAK,YACvD,KAAK,qBAAuB,SAAYA,EAAK,mBAAqB,KAAK,oBAEvE,KAAK,eAAiB,KAAK,cAAc,YAE7CA,EAAK,cAAgB,KAAK,cAAc,OAAQG,CAAM,EAAC,MAInD,KAAK,KAAO,KAAK,IAAI,YAAYH,EAAK,IAAM,KAAK,IAAI,OAAQG,CAAI,EAAG,MACpE,KAAK,QAAU,KAAK,OAAO,YAAYH,EAAK,OAAS,KAAK,OAAO,OAAQG,CAAI,EAAG,MAChF,KAAK,UAAY,KAAK,SAAS,YAAYH,EAAK,SAAW,KAAK,SAAS,OAAQG,CAAI,EAAG,MAExF,KAAK,UAAY,KAAK,SAAS,YAEnCH,EAAK,SAAW,KAAK,SAAS,OAAQG,CAAM,EAAC,KAC7CH,EAAK,kBAAoB,KAAK,mBAI1B,KAAK,OAAS,KAAK,MAAM,YAE7BA,EAAK,MAAQ,KAAK,MAAM,OAAQG,CAAM,EAAC,KACvCH,EAAK,eAAiB,KAAK,gBAIvB,KAAK,SAAW,KAAK,QAAQ,YAEjCA,EAAK,QAAU,KAAK,QAAQ,OAAQG,CAAM,EAAC,KAC3CH,EAAK,UAAY,KAAK,WAIlB,KAAK,WAAa,KAAK,UAAU,YAErCA,EAAK,UAAY,KAAK,UAAU,OAAQG,CAAM,EAAC,KAC/CH,EAAK,cAAgB,KAAK,cAC1BA,EAAK,YAAc,KAAK,YAAY,QAAO,GAIvC,KAAK,iBAAmB,KAAK,gBAAgB,YAEjDA,EAAK,gBAAkB,KAAK,gBAAgB,OAAQG,CAAM,EAAC,KAC3DH,EAAK,kBAAoB,KAAK,kBAC9BA,EAAK,iBAAmB,KAAK,kBAIzB,KAAK,cAAgB,KAAK,aAAa,YAAYA,EAAK,aAAe,KAAK,aAAa,OAAQG,CAAI,EAAG,MACxG,KAAK,cAAgB,KAAK,aAAa,YAAYH,EAAK,aAAe,KAAK,aAAa,OAAQG,CAAI,EAAG,MAExG,KAAK,aAAe,KAAK,YAAY,YAAYH,EAAK,YAAc,KAAK,YAAY,OAAQG,CAAI,EAAG,MACpG,KAAK,aAAe,KAAK,YAAY,YAAYH,EAAK,YAAc,KAAK,YAAY,OAAQG,CAAI,EAAG,MACpG,KAAK,sBAAwB,KAAK,qBAAqB,YAAYH,EAAK,qBAAuB,KAAK,qBAAqB,OAAQG,CAAI,EAAG,MACxI,KAAK,kBAAoB,KAAK,iBAAiB,YAAYH,EAAK,iBAAmB,KAAK,iBAAiB,OAAQG,CAAI,EAAG,MAExH,KAAK,QAAU,KAAK,OAAO,YAE/BH,EAAK,OAAS,KAAK,OAAO,OAAQG,CAAM,EAAC,KAEpC,KAAK,UAAY,SAAYH,EAAK,QAAU,KAAK,UAIlD,KAAK,iBAAmB,SAAYA,EAAK,eAAiB,KAAK,eAAe,WAC9E,KAAK,kBAAoB,SAAYA,EAAK,gBAAkB,KAAK,iBACjE,KAAK,eAAiB,SAAYA,EAAK,aAAe,KAAK,cAC3D,KAAK,kBAAoB,SAAYA,EAAK,gBAAkB,KAAK,iBAEjE,KAAK,aAAe,KAAK,YAAY,YAEzCA,EAAK,YAAc,KAAK,YAAY,OAAQG,CAAM,EAAC,MAI/C,KAAK,eAAiB,SAAYH,EAAK,aAAe,KAAK,cAC3D,KAAK,iBAAmB,KAAK,gBAAgB,YAAYA,EAAK,gBAAkB,KAAK,gBAAgB,OAAQG,CAAI,EAAG,MACpH,KAAK,YAAc,SAAYH,EAAK,UAAY,KAAK,WACrD,KAAK,cAAgB,KAAK,aAAa,YAAYA,EAAK,aAAe,KAAK,aAAa,OAAQG,CAAI,EAAG,MACxG,KAAK,sBAAwB,QAAa,KAAK,sBAAwB,MAAWH,EAAK,oBAAsB,KAAK,qBAClH,KAAK,mBAAqB,SAAYA,EAAK,iBAAmB,KAAK,iBAAiB,UAEpF,KAAK,OAAS,SAAYA,EAAK,KAAO,KAAK,MAC3C,KAAK,aAAe,OAAOA,EAAK,WAAa,KAAK,YAClD,KAAK,kBAAoB,SAAYA,EAAK,gBAAkB,KAAK,iBAEjE,KAAK,WAAarR,KAAiBqR,EAAK,SAAW,KAAK,UACxD,KAAK,OAASzR,KAAYyR,EAAK,KAAO,KAAK,MAC3C,KAAK,eAAiB,KAAOA,EAAK,aAAe,IAEjD,KAAK,QAAU,IAAIA,EAAK,QAAU,KAAK,SACvC,KAAK,cAAgB,KAAOA,EAAK,YAAc,IAE/C,KAAK,WAAavQ,KAAiBuQ,EAAK,SAAW,KAAK,UACxD,KAAK,WAAatQ,KAAyBsQ,EAAK,SAAW,KAAK,UAChE,KAAK,gBAAkBhR,KAAcgR,EAAK,cAAgB,KAAK,eAC/D,KAAK,gBAAkB,OAAOA,EAAK,cAAgB,KAAK,eACxD,KAAK,gBAAkB,OAAOA,EAAK,cAAgB,KAAK,eACxD,KAAK,qBAAuB,OAAOA,EAAK,mBAAqB,KAAK,oBAClE,KAAK,YAAc,KAAK,WAAW,UAAUA,EAAK,WAAa,KAAK,WAAW,OAAM,GACrF,KAAK,aAAe,IAAIA,EAAK,WAAa,KAAK,YAE/C,KAAK,YAAczP,KAAiByP,EAAK,UAAY,KAAK,WAC1D,KAAK,YAAc,KAAQA,EAAK,UAAY,KAAK,WACjD,KAAK,aAAe,KAAQA,EAAK,WAAa,KAAK,YACnD,KAAK,aAAe,KAAQA,EAAK,WAAa,KAAK,YAEnD,KAAK,mBAAqB,MAAOA,EAAK,iBAAmB,KAAK,kBAC9D,KAAK,cAAgBpJ,KAAoBoJ,EAAK,YAAc,KAAK,aACjE,KAAK,aAAe,IAAIA,EAAK,WAAa,KAAK,YAC/C,KAAK,kBAAoB,MAAOA,EAAK,gBAAkB,KAAK,iBAC5D,KAAK,cAAgBrJ,KAAgBqJ,EAAK,YAAc,KAAK,aAC7D,KAAK,eAAiBrJ,KAAgBqJ,EAAK,aAAe,KAAK,cAC/D,KAAK,eAAiBrJ,KAAgBqJ,EAAK,aAAe,KAAK,cAC/D,KAAK,eAAiB,KAAOA,EAAK,aAAe,KAAK,cAGtD,KAAK,WAAa,QAAa,KAAK,WAAa,IAAIA,EAAK,SAAW,KAAK,UAE1E,KAAK,gBAAkB,KAAOA,EAAK,cAAgB,IACnD,KAAK,sBAAwB,IAAIA,EAAK,oBAAsB,KAAK,qBACjE,KAAK,qBAAuB,IAAIA,EAAK,mBAAqB,KAAK,oBAE/D,KAAK,YAAc,QAAa,KAAK,YAAc,IAAIA,EAAK,UAAY,KAAK,WAC7E,KAAK,WAAa,SAAYA,EAAK,SAAW,KAAK,UACnD,KAAK,UAAY,SAAYA,EAAK,QAAU,KAAK,SACjD,KAAK,QAAU,SAAYA,EAAK,MAAQ,KAAK,OAE7C,KAAK,YAAc,KAAOA,EAAK,UAAY,IAE3C,KAAK,UAAY,IAAIA,EAAK,UAAY,KAAK,WAC3C,KAAK,YAAc,KAAOA,EAAK,UAAY,IAC3C,KAAK,kBAAoB,KAAOA,EAAK,gBAAkB,IACvD,KAAK,qBAAuB,KAAOA,EAAK,mBAAqB,IAC7D,KAAK,kBAAoB,KAAOA,EAAK,gBAAkB,IAEvD,KAAK,YAAc,KAAOA,EAAK,UAAY,IAC3C,KAAK,mBAAqB,IAAIA,EAAK,mBAAqB,KAAK,oBAC7D,KAAK,mBAAqB,UAAUA,EAAK,iBAAmB,KAAK,kBACjE,KAAK,oBAAsB,UAAUA,EAAK,kBAAoB,KAAK,mBAEnE,KAAK,cAAgB,KAAOA,EAAK,YAAc,IAE/C,KAAK,UAAY,KAAQA,EAAK,QAAU,IAExC,KAAK,aAAe,KAAQA,EAAK,WAAa,IAE9C,KAAK,MAAQ,KAAQA,EAAK,IAAM,IAEhC,OAAO,KAAM,KAAK,QAAU,EAAC,OAAS,IAAIA,EAAK,SAAW,KAAK,UAIpE,SAASgV,EAAkBO,EAAQ,CAElC,MAAMC,EAAS,CAAA,EAEf,UAAYC,KAAOF,EAAQ,CAE1B,MAAMvV,EAAOuV,EAAOE,GACpB,OAAOzV,EAAK,SACZwV,EAAO,KAAMxV,EAEb,CAED,OAAOwV,CAEP,CAED,GAAKpV,EAAe,CAEnB,MAAM8U,EAAWF,EAAkB7U,EAAK,QAAQ,EAC1CgV,EAASH,EAAkB7U,EAAK,MAAM,EAEvC+U,EAAS,OAAS,IAAIlV,EAAK,SAAWkV,GACtCC,EAAO,OAAS,IAAInV,EAAK,OAASmV,EAEvC,CAED,OAAOnV,CAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAED,KAAMiB,EAAS,CAEd,KAAK,KAAOA,EAAO,KAEnB,KAAK,SAAWA,EAAO,SACvB,KAAK,KAAOA,EAAO,KACnB,KAAK,aAAeA,EAAO,aAE3B,KAAK,QAAUA,EAAO,QACtB,KAAK,YAAcA,EAAO,YAE1B,KAAK,SAAWA,EAAO,SACvB,KAAK,SAAWA,EAAO,SACvB,KAAK,cAAgBA,EAAO,cAC5B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,cAAgBA,EAAO,cAC5B,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,WAAW,KAAMA,EAAO,UAAU,EACvC,KAAK,WAAaA,EAAO,WAEzB,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UACxB,KAAK,WAAaA,EAAO,WAEzB,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,YAAcA,EAAO,YAC1B,KAAK,WAAaA,EAAO,WACzB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,YAAcA,EAAO,YAC1B,KAAK,aAAeA,EAAO,aAC3B,KAAK,aAAeA,EAAO,aAC3B,KAAK,aAAeA,EAAO,aAE3B,MAAM6X,EAAY7X,EAAO,eACzB,IAAI8X,EAAY,KAEhB,GAAKD,IAAc,KAAO,CAEzB,MAAM9f,EAAI8f,EAAU,OACpBC,EAAY,IAAI,MAAO/f,GAEvB,QAAUf,EAAI,EAAGA,IAAMe,EAAG,EAAGf,EAE5B8gB,EAAW9gB,CAAC,EAAK6gB,EAAW7gB,CAAG,EAAC,MAAK,CAItC,CAED,YAAK,eAAiB8gB,EACtB,KAAK,iBAAmB9X,EAAO,iBAC/B,KAAK,YAAcA,EAAO,YAE1B,KAAK,WAAaA,EAAO,WAEzB,KAAK,WAAaA,EAAO,WAEzB,KAAK,UAAYA,EAAO,UAExB,KAAK,cAAgBA,EAAO,cAC5B,KAAK,oBAAsBA,EAAO,oBAClC,KAAK,mBAAqBA,EAAO,mBAEjC,KAAK,UAAYA,EAAO,UAExB,KAAK,UAAYA,EAAO,UACxB,KAAK,UAAYA,EAAO,UACxB,KAAK,gBAAkBA,EAAO,gBAC9B,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,gBAAkBA,EAAO,gBAE9B,KAAK,QAAUA,EAAO,QAEtB,KAAK,WAAaA,EAAO,WAEzB,KAAK,SAAW,KAAK,MAAO,KAAK,UAAWA,EAAO,QAAQ,GAEpD,IAEP,CAED,SAAU,CAET,KAAK,cAAe,CAAE,KAAM,SAAW,CAAA,CAEvC,CAED,IAAI,YAAarI,EAAQ,CAEnBA,IAAU,IAAO,KAAK,SAE3B,CAEF,CAEA,MAAMogB,WAA0BL,EAAS,CAExC,YAAajE,EAAa,CAEzB,QAEA,KAAK,oBAAsB,GAE3B,KAAK,KAAO,oBAEZ,KAAK,MAAQ,IAAIoD,GAAO,QAAQ,EAEhC,KAAK,IAAM,KAEX,KAAK,SAAW,KAChB,KAAK,kBAAoB,EAEzB,KAAK,MAAQ,KACb,KAAK,eAAiB,EAEtB,KAAK,YAAc,KAEnB,KAAK,SAAW,KAEhB,KAAK,OAAS,KACd,KAAK,eAAiB,IAAIvF,GAC1B,KAAK,QAAU3hB,GACf,KAAK,aAAe,EACpB,KAAK,gBAAkB,IAEvB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,QACxB,KAAK,kBAAoB,QAEzB,KAAK,IAAM,GAEX,KAAK,UAAW8jB,EAEhB,CAED,KAAMzT,EAAS,CAEd,aAAM,KAAMA,GAEZ,KAAK,MAAM,KAAMA,EAAO,KAAK,EAE7B,KAAK,IAAMA,EAAO,IAElB,KAAK,SAAWA,EAAO,SACvB,KAAK,kBAAoBA,EAAO,kBAEhC,KAAK,MAAQA,EAAO,MACpB,KAAK,eAAiBA,EAAO,eAE7B,KAAK,YAAcA,EAAO,YAE1B,KAAK,SAAWA,EAAO,SAEvB,KAAK,OAASA,EAAO,OACrB,KAAK,eAAe,KAAMA,EAAO,cAAc,EAC/C,KAAK,QAAUA,EAAO,QACtB,KAAK,aAAeA,EAAO,aAC3B,KAAK,gBAAkBA,EAAO,gBAE9B,KAAK,UAAYA,EAAO,UACxB,KAAK,mBAAqBA,EAAO,mBACjC,KAAK,iBAAmBA,EAAO,iBAC/B,KAAK,kBAAoBA,EAAO,kBAEhC,KAAK,IAAMA,EAAO,IAEX,IAEP,CAEF,CA2KA,MAAMgY,GAA0B,IAAItS,EAC9BuS,GAA2B,IAAI1f,GAErC,MAAM2f,EAAgB,CAErB,YAAanhB,EAAOohB,EAAUC,EAAa,GAAQ,CAElD,GAAK,MAAM,QAASrhB,GAEnB,MAAM,IAAI,UAAW,yDAItB,KAAK,kBAAoB,GAEzB,KAAK,KAAO,GAEZ,KAAK,MAAQA,EACb,KAAK,SAAWohB,EAChB,KAAK,MAAQphB,IAAU,OAAYA,EAAM,OAASohB,EAAW,EAC7D,KAAK,WAAaC,EAElB,KAAK,MAAQhiB,GACb,KAAK,aAAe,CAAE,OAAQ,EAAG,MAAO,IACxC,KAAK,aAAe,GACpB,KAAK,QAAUzE,GAEf,KAAK,QAAU,CAEf,CAED,kBAAmB,CAAE,CAErB,IAAI,YAAagG,EAAQ,CAEnBA,IAAU,IAAO,KAAK,SAE3B,CAED,IAAI,aAAc,CAEjB,OAAAgG,GAAU,+GAA+G,EAClH,KAAK,YAEZ,CAED,SAAUhG,EAAQ,CAEjB,YAAK,MAAQA,EAEN,IAEP,CAED,eAAgB0gB,EAAO3W,EAAQ,CAE9B,KAAK,aAAa,KAAM,CAAE,MAAA2W,EAAO,MAAA3W,CAAO,CAAA,CAExC,CAED,mBAAoB,CAEnB,KAAK,aAAa,OAAS,CAE3B,CAED,KAAM1B,EAAS,CAEd,YAAK,KAAOA,EAAO,KACnB,KAAK,MAAQ,IAAIA,EAAO,MAAM,YAAaA,EAAO,OAClD,KAAK,SAAWA,EAAO,SACvB,KAAK,MAAQA,EAAO,MACpB,KAAK,WAAaA,EAAO,WAEzB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QAEf,IAEP,CAED,OAAQsY,EAAQ7e,EAAW8e,EAAS,CAEnCD,GAAU,KAAK,SACfC,GAAU9e,EAAU,SAEpB,QAAUzC,EAAI,EAAGC,EAAI,KAAK,SAAUD,EAAIC,EAAGD,IAE1C,KAAK,MAAOshB,EAASthB,CAAC,EAAKyC,EAAU,MAAO8e,EAASvhB,GAItD,OAAO,IAEP,CAED,UAAWD,EAAQ,CAElB,YAAK,MAAM,IAAKA,GAET,IAEP,CAED,aAAciB,EAAI,CAEjB,GAAK,KAAK,WAAa,EAEtB,QAAUhB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IAEvCihB,GAAW,oBAAqB,KAAMjhB,GACtCihB,GAAW,aAAcjgB,GAEzB,KAAK,MAAOhB,EAAGihB,GAAW,EAAGA,GAAW,WAI9B,KAAK,WAAa,EAE7B,QAAUjhB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IAEvCghB,GAAU,oBAAqB,KAAMhhB,GACrCghB,GAAU,aAAchgB,GAExB,KAAK,OAAQhB,EAAGghB,GAAU,EAAGA,GAAU,EAAGA,GAAU,GAMtD,OAAO,IAEP,CAED,aAAchgB,EAAI,CAEjB,QAAUhB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IAEvCghB,GAAU,oBAAqB,KAAMhhB,GAErCghB,GAAU,aAAchgB,GAExB,KAAK,OAAQhB,EAAGghB,GAAU,EAAGA,GAAU,EAAGA,GAAU,GAIrD,OAAO,IAEP,CAED,kBAAmBhgB,EAAI,CAEtB,QAAUhB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IAEvCghB,GAAU,oBAAqB,KAAMhhB,GAErCghB,GAAU,kBAAmBhgB,GAE7B,KAAK,OAAQhB,EAAGghB,GAAU,EAAGA,GAAU,EAAGA,GAAU,GAIrD,OAAO,IAEP,CAED,mBAAoBhgB,EAAI,CAEvB,QAAUhB,EAAI,EAAGC,EAAI,KAAK,MAAOD,EAAIC,EAAGD,IAEvCghB,GAAU,oBAAqB,KAAMhhB,GAErCghB,GAAU,mBAAoBhgB,GAE9B,KAAK,OAAQhB,EAAGghB,GAAU,EAAGA,GAAU,EAAGA,GAAU,GAIrD,OAAO,IAEP,CAED,IAAKrgB,EAAO6B,EAAS,EAAI,CAGxB,YAAK,MAAM,IAAK7B,EAAO6B,CAAM,EAEtB,IAEP,CAED,aAAc3C,EAAO2hB,EAAY,CAEhC,IAAI7gB,EAAQ,KAAK,MAAOd,EAAQ,KAAK,SAAW2hB,GAEhD,OAAK,KAAK,aAAa7gB,EAAQU,GAAaV,EAAO,KAAK,QAEjDA,CAEP,CAED,aAAcd,EAAO2hB,EAAW7gB,EAAQ,CAEvC,OAAK,KAAK,aAAaA,EAAQW,GAAWX,EAAO,KAAK,QAEtD,KAAK,MAAOd,EAAQ,KAAK,SAAW2hB,CAAW,EAAG7gB,EAE3C,IAEP,CAED,KAAMd,EAAQ,CAEb,IAAIqB,EAAI,KAAK,MAAOrB,EAAQ,KAAK,UAEjC,OAAK,KAAK,aAAaqB,EAAIG,GAAaH,EAAG,KAAK,QAEzCA,CAEP,CAED,KAAMrB,EAAOqB,EAAI,CAEhB,OAAK,KAAK,aAAaA,EAAII,GAAWJ,EAAG,KAAK,QAE9C,KAAK,MAAOrB,EAAQ,KAAK,QAAQ,EAAKqB,EAE/B,IAEP,CAED,KAAMrB,EAAQ,CAEb,IAAIsB,EAAI,KAAK,MAAOtB,EAAQ,KAAK,SAAW,GAE5C,OAAK,KAAK,aAAasB,EAAIE,GAAaF,EAAG,KAAK,QAEzCA,CAEP,CAED,KAAMtB,EAAOsB,EAAI,CAEhB,OAAK,KAAK,aAAaA,EAAIG,GAAWH,EAAG,KAAK,QAE9C,KAAK,MAAOtB,EAAQ,KAAK,SAAW,CAAG,EAAGsB,EAEnC,IAEP,CAED,KAAMtB,EAAQ,CAEb,IAAIsJ,EAAI,KAAK,MAAOtJ,EAAQ,KAAK,SAAW,GAE5C,OAAK,KAAK,aAAasJ,EAAI9H,GAAa8H,EAAG,KAAK,QAEzCA,CAEP,CAED,KAAMtJ,EAAOsJ,EAAI,CAEhB,OAAK,KAAK,aAAaA,EAAI7H,GAAW6H,EAAG,KAAK,QAE9C,KAAK,MAAOtJ,EAAQ,KAAK,SAAW,CAAG,EAAGsJ,EAEnC,IAEP,CAED,KAAMtJ,EAAQ,CAEb,IAAIuJ,EAAI,KAAK,MAAOvJ,EAAQ,KAAK,SAAW,GAE5C,OAAK,KAAK,aAAauJ,EAAI/H,GAAa+H,EAAG,KAAK,QAEzCA,CAEP,CAED,KAAMvJ,EAAOuJ,EAAI,CAEhB,OAAK,KAAK,aAAaA,EAAI9H,GAAW8H,EAAG,KAAK,QAE9C,KAAK,MAAOvJ,EAAQ,KAAK,SAAW,CAAG,EAAGuJ,EAEnC,IAEP,CAED,MAAOvJ,EAAOqB,EAAGC,EAAI,CAEpB,OAAAtB,GAAS,KAAK,SAET,KAAK,aAETqB,EAAII,GAAWJ,EAAG,KAAK,KAAK,EAC5BC,EAAIG,GAAWH,EAAG,KAAK,KAAK,GAI7B,KAAK,MAAOtB,EAAQ,CAAC,EAAKqB,EAC1B,KAAK,MAAOrB,EAAQ,CAAC,EAAKsB,EAEnB,IAEP,CAED,OAAQtB,EAAOqB,EAAGC,EAAGgI,EAAI,CAExB,OAAAtJ,GAAS,KAAK,SAET,KAAK,aAETqB,EAAII,GAAWJ,EAAG,KAAK,KAAK,EAC5BC,EAAIG,GAAWH,EAAG,KAAK,KAAK,EAC5BgI,EAAI7H,GAAW6H,EAAG,KAAK,KAAK,GAI7B,KAAK,MAAOtJ,EAAQ,CAAC,EAAKqB,EAC1B,KAAK,MAAOrB,EAAQ,CAAC,EAAKsB,EAC1B,KAAK,MAAOtB,EAAQ,CAAC,EAAKsJ,EAEnB,IAEP,CAED,QAAStJ,EAAOqB,EAAGC,EAAGgI,EAAGC,EAAI,CAE5B,OAAAvJ,GAAS,KAAK,SAET,KAAK,aAETqB,EAAII,GAAWJ,EAAG,KAAK,KAAK,EAC5BC,EAAIG,GAAWH,EAAG,KAAK,KAAK,EAC5BgI,EAAI7H,GAAW6H,EAAG,KAAK,KAAK,EAC5BC,EAAI9H,GAAW8H,EAAG,KAAK,KAAK,GAI7B,KAAK,MAAOvJ,EAAQ,CAAC,EAAKqB,EAC1B,KAAK,MAAOrB,EAAQ,CAAC,EAAKsB,EAC1B,KAAK,MAAOtB,EAAQ,CAAC,EAAKsJ,EAC1B,KAAK,MAAOtJ,EAAQ,CAAC,EAAKuJ,EAEnB,IAEP,CAED,SAAUqF,EAAW,CAEpB,YAAK,iBAAmBA,EAEjB,IAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,KAAK,MAAO,KAAK,QAAU,EAAC,KAAM,KAE/D,CAED,QAAS,CAER,MAAM1G,EAAO,CACZ,SAAU,KAAK,SACf,KAAM,KAAK,MAAM,YAAY,KAC7B,MAAO,MAAM,KAAM,KAAK,KAAO,EAC/B,WAAY,KAAK,UACpB,EAEE,OAAK,KAAK,OAAS,KAAKA,EAAK,KAAO,KAAK,MACpC,KAAK,QAAU3I,KAAkB2I,EAAK,MAAQ,KAAK,OAEjDA,CAEP,CAEF,CA4CA,MAAM0Z,WAA8BP,EAAgB,CAEnD,YAAanhB,EAAOohB,EAAUC,EAAa,CAE1C,MAAO,IAAI,YAAarhB,CAAO,EAAEohB,EAAUC,CAAU,CAErD,CAEF,CAYA,MAAMM,WAA8BR,EAAgB,CAEnD,YAAanhB,EAAOohB,EAAUC,EAAa,CAE1C,MAAO,IAAI,YAAarhB,CAAO,EAAEohB,EAAUC,CAAU,CAErD,CAEF,CA2JA,MAAMO,WAA+BT,EAAgB,CAEpD,YAAanhB,EAAOohB,EAAUC,EAAa,CAE1C,MAAO,IAAI,aAAcrhB,CAAO,EAAEohB,EAAUC,CAAU,CAEtD,CAEF,CAEA,IAAIQ,GAAQ,EAEZ,MAAMC,GAAsB,IAAI/L,GAC1BgM,GAAqB,IAAIpG,GACzBqG,GAAwB,IAAIrT,EAC5BsT,GAAuB,IAAI5R,GAC3B6R,GAAiC,IAAI7R,GACrC8R,GAA0B,IAAIxT,EAEpC,MAAMyT,WAAuB3iB,EAAgB,CAE5C,aAAc,CAEb,QAEA,KAAK,iBAAmB,GAExB,OAAO,eAAgB,KAAM,KAAM,CAAE,MAAOoiB,IAAQ,GAEpD,KAAK,KAAOvhB,KAEZ,KAAK,KAAO,GACZ,KAAK,KAAO,iBAEZ,KAAK,MAAQ,KACb,KAAK,WAAa,GAElB,KAAK,gBAAkB,GACvB,KAAK,qBAAuB,GAE5B,KAAK,OAAS,GAEd,KAAK,YAAc,KACnB,KAAK,eAAiB,KAEtB,KAAK,UAAY,CAAE,MAAO,EAAG,MAAO,KAEpC,KAAK,SAAW,EAEhB,CAED,UAAW,CAEV,OAAO,KAAK,KAEZ,CAED,SAAUR,EAAQ,CAEjB,OAAK,MAAM,QAASA,GAEnB,KAAK,MAAQ,IAAMwG,GAAkBxG,CAAK,EAAK6hB,GAAwBD,IAAyB5hB,EAAO,GAIvG,KAAK,MAAQA,EAIP,IAEP,CAED,aAAc0G,EAAO,CAEpB,OAAO,KAAK,WAAYA,EAExB,CAED,aAAcA,EAAM9D,EAAY,CAE/B,YAAK,WAAY8D,CAAM,EAAG9D,EAEnB,IAEP,CAED,gBAAiB8D,EAAO,CAEvB,cAAO,KAAK,WAAYA,GAEjB,IAEP,CAED,aAAcA,EAAO,CAEpB,OAAO,KAAK,WAAYA,CAAI,IAAO,MAEnC,CAED,SAAU8a,EAAO3W,EAAO0X,EAAgB,EAAI,CAE3C,KAAK,OAAO,KAAM,CAEjB,MAAOf,EACP,MAAO3W,EACP,cAAe0X,CAElB,EAEE,CAED,aAAc,CAEb,KAAK,OAAS,EAEd,CAED,aAAcf,EAAO3W,EAAQ,CAE5B,KAAK,UAAU,MAAQ2W,EACvB,KAAK,UAAU,MAAQ3W,CAEvB,CAED,aAActE,EAAS,CAEtB,MAAM4S,EAAW,KAAK,WAAW,SAE5BA,IAAa,SAEjBA,EAAS,aAAc5S,GAEvB4S,EAAS,YAAc,IAIxB,MAAMnJ,EAAS,KAAK,WAAW,OAE/B,GAAKA,IAAW,OAAY,CAE3B,MAAMwS,EAAe,IAAIxf,GAAS,EAAC,gBAAiBuD,CAAM,EAE1DyJ,EAAO,kBAAmBwS,GAE1BxS,EAAO,YAAc,EAErB,CAED,MAAMyS,EAAU,KAAK,WAAW,QAEhC,OAAKA,IAAY,SAEhBA,EAAQ,mBAAoBlc,GAE5Bkc,EAAQ,YAAc,IAIlB,KAAK,cAAgB,MAEzB,KAAK,mBAAkB,EAInB,KAAK,iBAAmB,MAE5B,KAAK,sBAAqB,EAIpB,IAEP,CAED,gBAAiBjZ,EAAI,CAEpB,OAAAwY,GAAM,2BAA4BxY,GAElC,KAAK,aAAcwY,IAEZ,IAEP,CAED,QAASlf,EAAQ,CAIhB,OAAAkf,GAAM,cAAelf,GAErB,KAAK,aAAckf,IAEZ,IAEP,CAED,QAASlf,EAAQ,CAIhB,OAAAkf,GAAM,cAAelf,GAErB,KAAK,aAAckf,IAEZ,IAEP,CAED,QAASlf,EAAQ,CAIhB,OAAAkf,GAAM,cAAelf,GAErB,KAAK,aAAckf,IAEZ,IAEP,CAED,UAAW3gB,EAAGC,EAAGgI,EAAI,CAIpB,OAAA0Y,GAAM,gBAAiB3gB,EAAGC,EAAGgI,CAAC,EAE9B,KAAK,aAAc0Y,IAEZ,IAEP,CAED,MAAO3gB,EAAGC,EAAGgI,EAAI,CAIhB,OAAA0Y,GAAM,UAAW3gB,EAAGC,EAAGgI,CAAC,EAExB,KAAK,aAAc0Y,IAEZ,IAEP,CAED,OAAQ/Q,EAAS,CAEhB,OAAAgR,GAAK,OAAQhR,GAEbgR,GAAK,aAAY,EAEjB,KAAK,aAAcA,GAAK,QAEjB,IAEP,CAED,QAAS,CAER,YAAK,mBAAkB,EAEvB,KAAK,YAAY,UAAWC,EAAS,EAAC,OAAM,EAE5C,KAAK,UAAWA,GAAQ,EAAGA,GAAQ,EAAGA,GAAQ,GAEvC,IAEP,CAED,cAAezR,EAAS,CAEvB,MAAM0I,EAAW,CAAA,EAEjB,QAAUhZ,EAAI,EAAGC,EAAIqQ,EAAO,OAAQtQ,EAAIC,EAAGD,IAAO,CAEjD,MAAM6Q,EAAQP,EAAQtQ,GACtBgZ,EAAS,KAAMnI,EAAM,EAAGA,EAAM,EAAGA,EAAM,GAAK,EAE5C,CAED,YAAK,aAAc,WAAY,IAAI8Q,GAAwB3I,EAAU,CAAC,GAE/D,IAEP,CAED,oBAAqB,CAEf,KAAK,cAAgB,OAEzB,KAAK,YAAc,IAAI5I,IAIxB,MAAM4I,EAAW,KAAK,WAAW,SAC3BuJ,EAA0B,KAAK,gBAAgB,SAErD,GAAKvJ,GAAYA,EAAS,oBAAsB,CAE/C,QAAQ,MAAO,+FAAgG,MAE/G,KAAK,YAAY,IAChB,IAAItK,EAAS,KAAY,KAAY,IAAY,EACjD,IAAIA,EAAS,IAAY,IAAY,GAAY,CACrD,EAEG,MAEA,CAED,GAAKsK,IAAa,QAMjB,GAJA,KAAK,YAAY,uBAAwBA,GAIpCuJ,EAEJ,QAAUviB,EAAI,EAAG4K,EAAK2X,EAAwB,OAAQviB,EAAI4K,EAAI5K,IAAO,CAEpE,MAAMwiB,EAAiBD,EAAyBviB,GAChDgiB,GAAO,uBAAwBQ,GAE1B,KAAK,sBAETN,GAAU,WAAY,KAAK,YAAY,IAAKF,GAAO,KACnD,KAAK,YAAY,cAAeE,IAEhCA,GAAU,WAAY,KAAK,YAAY,IAAKF,GAAO,KACnD,KAAK,YAAY,cAAeE,MAIhC,KAAK,YAAY,cAAeF,GAAO,GAAG,EAC1C,KAAK,YAAY,cAAeA,GAAO,GAAG,EAI3C,OAMF,KAAK,YAAY,aAIb,MAAO,KAAK,YAAY,IAAI,CAAC,GAAM,MAAO,KAAK,YAAY,IAAI,CAAC,GAAM,MAAO,KAAK,YAAY,IAAI,KAEtG,QAAQ,MAAO,sIAAuI,KAIvJ,CAED,uBAAwB,CAElB,KAAK,iBAAmB,OAE5B,KAAK,eAAiB,IAAIpP,IAI3B,MAAMoG,EAAW,KAAK,WAAW,SAC3BuJ,EAA0B,KAAK,gBAAgB,SAErD,GAAKvJ,GAAYA,EAAS,oBAAsB,CAE/C,QAAQ,MAAO,qGAAsG,MAErH,KAAK,eAAe,IAAK,IAAItK,EAAW,GAAQ,EAEhD,MAEA,CAED,GAAKsK,EAAW,CAIf,MAAMtW,EAAS,KAAK,eAAe,OAMnC,GAJAsf,GAAO,uBAAwBhJ,GAI1BuJ,EAEJ,QAAUviB,EAAI,EAAG4K,EAAK2X,EAAwB,OAAQviB,EAAI4K,EAAI5K,IAAO,CAEpE,MAAMwiB,EAAiBD,EAAyBviB,GAChDiiB,GAAiB,uBAAwBO,GAEpC,KAAK,sBAETN,GAAU,WAAYF,GAAO,IAAKC,GAAiB,GAAG,EACtDD,GAAO,cAAeE,IAEtBA,GAAU,WAAYF,GAAO,IAAKC,GAAiB,GAAG,EACtDD,GAAO,cAAeE,MAItBF,GAAO,cAAeC,GAAiB,KACvCD,GAAO,cAAeC,GAAiB,KAIxC,CAIFD,GAAO,UAAWtf,GAKlB,IAAIoQ,EAAc,EAElB,QAAU9S,EAAI,EAAG4K,EAAKoO,EAAS,MAAOhZ,EAAI4K,EAAI5K,IAE7CkiB,GAAU,oBAAqBlJ,EAAUhZ,GAEzC8S,EAAc,KAAK,IAAKA,EAAapQ,EAAO,kBAAmBwf,EAAS,GAMzE,GAAKK,EAEJ,QAAUviB,EAAI,EAAG4K,EAAK2X,EAAwB,OAAQviB,EAAI4K,EAAI5K,IAAO,CAEpE,MAAMwiB,EAAiBD,EAAyBviB,GAC1CyiB,EAAuB,KAAK,qBAElC,QAAUpQ,EAAI,EAAGqQ,EAAKF,EAAe,MAAOnQ,EAAIqQ,EAAIrQ,IAEnD6P,GAAU,oBAAqBM,EAAgBnQ,GAE1CoQ,IAEJV,GAAQ,oBAAqB/I,EAAU3G,GACvC6P,GAAU,IAAKH,KAIhBjP,EAAc,KAAK,IAAKA,EAAapQ,EAAO,kBAAmBwf,EAAS,EAIzE,CAIF,KAAK,eAAe,OAAS,KAAK,KAAMpP,CAAW,EAE9C,MAAO,KAAK,eAAe,MAAM,GAErC,QAAQ,MAAO,+HAAgI,KAIhJ,CAED,CAED,iBAAkB,CAEjB,MAAMjT,EAAQ,KAAK,MACb8iB,EAAa,KAAK,WAKxB,GAAK9iB,IAAU,MACb8iB,EAAW,WAAa,QACxBA,EAAW,SAAW,QACtBA,EAAW,KAAO,OAAY,CAE/B,QAAQ,MAAO,gHACf,MAEA,CAED,MAAM3R,EAAoB2R,EAAW,SAC/BC,EAAkBD,EAAW,OAC7BE,EAAcF,EAAW,GAE1B,KAAK,aAAc,SAAS,IAAO,IAEvC,KAAK,aAAc,UAAW,IAAIzB,GAAiB,IAAI,aAAc,EAAIlQ,EAAkB,OAAS,CAAG,CAAA,EAIxG,MAAM8R,EAAmB,KAAK,aAAc,SAAS,EAE/CC,EAAO,CAAA,EAAIC,EAAO,GAExB,QAAUhjB,EAAI,EAAGA,EAAIgR,EAAkB,MAAOhR,IAE7C+iB,EAAM/iB,CAAC,EAAK,IAAI0O,EAChBsU,EAAMhjB,CAAC,EAAK,IAAI0O,EAIjB,MAAMuU,EAAK,IAAIvU,EACdwU,EAAK,IAAIxU,EACTyU,EAAK,IAAIzU,EAET0U,EAAM,IAAI7hB,GACV8hB,EAAM,IAAI9hB,GACV+hB,EAAM,IAAI/hB,GAEVgiB,EAAO,IAAI7U,EACX8U,EAAO,IAAI9U,EAEZ,SAAS+U,EAAgB9hB,EAAGC,EAAGgB,EAAI,CAElCqgB,EAAG,oBAAqBjS,EAAmBrP,GAC3CuhB,EAAG,oBAAqBlS,EAAmBpP,GAC3CuhB,EAAG,oBAAqBnS,EAAmBpO,GAE3CwgB,EAAI,oBAAqBP,EAAalhB,GACtC0hB,EAAI,oBAAqBR,EAAajhB,GACtC0hB,EAAI,oBAAqBT,EAAajgB,GAEtCsgB,EAAG,IAAKD,GACRE,EAAG,IAAKF,GAERI,EAAI,IAAKD,GACTE,EAAI,IAAKF,GAET,MAAMzd,EAAI,GAAQ0d,EAAI,EAAIC,EAAI,EAAIA,EAAI,EAAID,EAAI,GAIvC,SAAU1d,CAAC,IAElB4d,EAAK,KAAML,CAAE,EAAG,eAAgBI,EAAI,CAAG,EAAC,gBAAiBH,EAAI,CAAEE,EAAI,CAAG,EAAC,eAAgB1d,CAAC,EACxF6d,EAAK,KAAML,CAAE,EAAG,eAAgBE,EAAI,CAAG,EAAC,gBAAiBH,EAAI,CAAEI,EAAI,CAAG,EAAC,eAAgB3d,CAAC,EAExFod,EAAMphB,CAAC,EAAG,IAAK4hB,CAAI,EACnBR,EAAMnhB,CAAC,EAAG,IAAK2hB,CAAI,EACnBR,EAAMngB,CAAC,EAAG,IAAK2gB,CAAI,EAEnBP,EAAMrhB,CAAC,EAAG,IAAK6hB,CAAI,EACnBR,EAAMphB,CAAC,EAAG,IAAK4hB,CAAI,EACnBR,EAAMpgB,CAAC,EAAG,IAAK4gB,CAAI,EAEnB,CAED,IAAIE,EAAS,KAAK,OAEbA,EAAO,SAAW,IAEtBA,EAAS,CAAE,CACV,MAAO,EACP,MAAO7jB,EAAM,KACjB,IAIE,QAAUG,EAAI,EAAG4K,EAAK8Y,EAAO,OAAQ1jB,EAAI4K,EAAI,EAAG5K,EAAI,CAEnD,MAAM2jB,EAAQD,EAAQ1jB,GAEhBqhB,EAAQsC,EAAM,MACdjZ,EAAQiZ,EAAM,MAEpB,QAAUtR,EAAIgP,EAAOqB,EAAKrB,EAAQ3W,EAAO2H,EAAIqQ,EAAIrQ,GAAK,EAErDoR,EACC5jB,EAAM,KAAMwS,EAAI,CAAG,EACnBxS,EAAM,KAAMwS,EAAI,CAAG,EACnBxS,EAAM,KAAMwS,EAAI,CAAG,CACxB,CAIG,CAED,MAAM5M,EAAM,IAAIiJ,EAAWkV,EAAO,IAAIlV,EAChC3N,EAAI,IAAI2N,EAAWmV,EAAK,IAAInV,EAElC,SAASoV,EAAcriB,EAAI,CAE1BV,EAAE,oBAAqB6hB,EAAiBnhB,GACxCoiB,EAAG,KAAM9iB,GAET,MAAMK,EAAI2hB,EAAMthB,GAIhBgE,EAAI,KAAMrE,GACVqE,EAAI,IAAK1E,EAAE,eAAgBA,EAAE,IAAKK,CAAG,CAAA,GAAK,YAI1CwiB,EAAK,aAAcC,EAAIziB,GAEvB,MAAMgI,EADOwa,EAAK,IAAKZ,EAAMvhB,CAAG,CAAA,EACb,EAAQ,GAAQ,EAEnCqhB,EAAiB,QAASrhB,EAAGgE,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAG2D,EAElD,CAED,QAAUpJ,EAAI,EAAG4K,EAAK8Y,EAAO,OAAQ1jB,EAAI4K,EAAI,EAAG5K,EAAI,CAEnD,MAAM2jB,EAAQD,EAAQ1jB,GAEhBqhB,EAAQsC,EAAM,MACdjZ,EAAQiZ,EAAM,MAEpB,QAAUtR,EAAIgP,EAAOqB,EAAKrB,EAAQ3W,EAAO2H,EAAIqQ,EAAIrQ,GAAK,EAErDyR,EAAcjkB,EAAM,KAAMwS,EAAI,CAAG,CAAA,EACjCyR,EAAcjkB,EAAM,KAAMwS,EAAI,CAAG,CAAA,EACjCyR,EAAcjkB,EAAM,KAAMwS,EAAI,CAAG,CAAA,CAIlC,CAED,CAED,sBAAuB,CAEtB,MAAMxS,EAAQ,KAAK,MACbmR,EAAoB,KAAK,aAAc,UAAU,EAEvD,GAAKA,IAAsB,OAAY,CAEtC,IAAI4R,EAAkB,KAAK,aAAc,QAAQ,EAEjD,GAAKA,IAAoB,OAExBA,EAAkB,IAAI1B,GAAiB,IAAI,aAAclQ,EAAkB,MAAQ,GAAK,GACxF,KAAK,aAAc,SAAU4R,OAM7B,SAAU5iB,EAAI,EAAG4K,EAAKgY,EAAgB,MAAO5iB,EAAI4K,EAAI5K,IAEpD4iB,EAAgB,OAAQ5iB,EAAG,EAAG,EAAG,CAAC,EAMpC,MAAM+jB,EAAK,IAAIrV,EAAWsV,EAAK,IAAItV,EAAWuV,EAAK,IAAIvV,EACjDwV,EAAK,IAAIxV,EAAWyV,EAAK,IAAIzV,EAAW0V,EAAK,IAAI1V,EACjD2V,EAAK,IAAI3V,EAAW4V,EAAK,IAAI5V,EAInC,GAAK7O,EAEJ,QAAUG,EAAI,EAAG4K,EAAK/K,EAAM,MAAOG,EAAI4K,EAAI5K,GAAK,EAAI,CAEnD,MAAMijB,EAAKpjB,EAAM,KAAMG,EAAI,CAAC,EACtBkjB,EAAKrjB,EAAM,KAAMG,EAAI,CAAC,EACtBmjB,EAAKtjB,EAAM,KAAMG,EAAI,CAAC,EAE5B+jB,EAAG,oBAAqB/S,EAAmBiS,GAC3Ce,EAAG,oBAAqBhT,EAAmBkS,GAC3Ce,EAAG,oBAAqBjT,EAAmBmS,GAE3CkB,EAAG,WAAYJ,EAAID,GACnBM,EAAG,WAAYP,EAAIC,GACnBK,EAAG,MAAOC,GAEVJ,EAAG,oBAAqBtB,EAAiBK,GACzCkB,EAAG,oBAAqBvB,EAAiBM,GACzCkB,EAAG,oBAAqBxB,EAAiBO,GAEzCe,EAAG,IAAKG,GACRF,EAAG,IAAKE,GACRD,EAAG,IAAKC,GAERzB,EAAgB,OAAQK,EAAIiB,EAAG,EAAGA,EAAG,EAAGA,EAAG,GAC3CtB,EAAgB,OAAQM,EAAIiB,EAAG,EAAGA,EAAG,EAAGA,EAAG,GAC3CvB,EAAgB,OAAQO,EAAIiB,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAE3C,KAMD,SAAUpkB,EAAI,EAAG4K,EAAKoG,EAAkB,MAAOhR,EAAI4K,EAAI5K,GAAK,EAE3D+jB,EAAG,oBAAqB/S,EAAmBhR,EAAI,CAAC,EAChDgkB,EAAG,oBAAqBhT,EAAmBhR,EAAI,CAAC,EAChDikB,EAAG,oBAAqBjT,EAAmBhR,EAAI,CAAC,EAEhDqkB,EAAG,WAAYJ,EAAID,GACnBM,EAAG,WAAYP,EAAIC,GACnBK,EAAG,MAAOC,GAEV1B,EAAgB,OAAQ5iB,EAAI,EAAGqkB,EAAG,EAAGA,EAAG,EAAGA,EAAG,GAC9CzB,EAAgB,OAAQ5iB,EAAI,EAAGqkB,EAAG,EAAGA,EAAG,EAAGA,EAAG,GAC9CzB,EAAgB,OAAQ5iB,EAAI,EAAGqkB,EAAG,EAAGA,EAAG,EAAGA,EAAG,GAMhD,KAAK,iBAAgB,EAErBzB,EAAgB,YAAc,EAE9B,CAED,CAED,kBAAmB,CAElB,MAAM2B,EAAU,KAAK,WAAW,OAEhC,QAAUvkB,EAAI,EAAG4K,EAAK2Z,EAAQ,MAAOvkB,EAAI4K,EAAI5K,IAE5CkiB,GAAU,oBAAqBqC,EAASvkB,GAExCkiB,GAAU,UAAS,EAEnBqC,EAAQ,OAAQvkB,EAAGkiB,GAAU,EAAGA,GAAU,EAAGA,GAAU,EAIxD,CAED,cAAe,CAEd,SAASsC,EAAwB/hB,EAAWgiB,EAAU,CAErD,MAAM1kB,EAAQ0C,EAAU,MAClB0e,EAAW1e,EAAU,SACrB2e,EAAa3e,EAAU,WAEvBiiB,EAAS,IAAI3kB,EAAM,YAAa0kB,EAAQ,OAAStD,GAEvD,IAAIthB,EAAQ,EAAG0hB,EAAS,EAExB,QAAUvhB,EAAI,EAAGC,EAAIwkB,EAAQ,OAAQzkB,EAAIC,EAAGD,IAAO,CAE7CyC,EAAU,6BAEd5C,EAAQ4kB,EAASzkB,GAAMyC,EAAU,KAAK,OAASA,EAAU,OAIzD5C,EAAQ4kB,EAASzkB,CAAG,EAAGmhB,EAIxB,QAAU9O,EAAI,EAAGA,EAAI8O,EAAU9O,IAE9BqS,EAAQnD,GAAS,EAAKxhB,EAAOF,GAAQ,CAItC,CAED,OAAO,IAAIqhB,GAAiBwD,EAAQvD,EAAUC,CAAU,CAExD,CAID,GAAK,KAAK,QAAU,KAEnB,eAAQ,KAAM,+EACP,KAIR,MAAMuD,EAAY,IAAIxC,GAEhBsC,EAAU,KAAK,MAAM,MACrB9B,EAAa,KAAK,WAIxB,UAAYpc,KAAQoc,EAAa,CAEhC,MAAMlgB,EAAYkgB,EAAYpc,GAExBqe,EAAeJ,EAAwB/hB,EAAWgiB,CAAO,EAE/DE,EAAU,aAAcpe,EAAMqe,EAE9B,CAID,MAAMC,EAAkB,KAAK,gBAE7B,UAAYte,KAAQse,EAAkB,CAErC,MAAMC,EAAa,CAAA,EACbtC,EAAiBqC,EAAiBte,GAExC,QAAUvG,EAAI,EAAG4K,EAAK4X,EAAe,OAAQxiB,EAAI4K,EAAI5K,IAAO,CAE3D,MAAMyC,EAAY+f,EAAgBxiB,GAE5B4kB,EAAeJ,EAAwB/hB,EAAWgiB,CAAO,EAE/DK,EAAW,KAAMF,EAEjB,CAEDD,EAAU,gBAAiBpe,CAAM,EAAGue,CAEpC,CAEDH,EAAU,qBAAuB,KAAK,qBAItC,MAAMjB,EAAS,KAAK,OAEpB,QAAU1jB,EAAI,EAAG,EAAI0jB,EAAO,OAAQ1jB,EAAI,EAAGA,IAAO,CAEjD,MAAM2jB,EAAQD,EAAQ1jB,GACtB2kB,EAAU,SAAUhB,EAAM,MAAOA,EAAM,MAAOA,EAAM,cAEpD,CAED,OAAOgB,CAEP,CAED,QAAS,CAER,MAAM5c,EAAO,CACZ,SAAU,CACT,QAAS,IACT,KAAM,iBACN,UAAW,uBACX,CACJ,EASE,GALAA,EAAK,KAAO,KAAK,KACjBA,EAAK,KAAO,KAAK,KACZ,KAAK,OAAS,KAAKA,EAAK,KAAO,KAAK,MACpC,OAAO,KAAM,KAAK,QAAU,EAAC,OAAS,IAAIA,EAAK,SAAW,KAAK,UAE/D,KAAK,aAAe,OAAY,CAEpC,MAAM0U,EAAa,KAAK,WAExB,UAAYe,KAAOf,EAEbA,EAAYe,CAAG,IAAO,SAAYzV,EAAMyV,CAAK,EAAGf,EAAYe,IAIlE,OAAOzV,CAEP,CAIDA,EAAK,KAAO,CAAE,WAAY,CAAE,CAAA,EAE5B,MAAMlI,EAAQ,KAAK,MAEdA,IAAU,OAEdkI,EAAK,KAAK,MAAQ,CACjB,KAAMlI,EAAM,MAAM,YAAY,KAC9B,MAAO,MAAM,UAAU,MAAM,KAAMA,EAAM,KAAO,CACpD,GAIE,MAAM8iB,EAAa,KAAK,WAExB,UAAYnF,KAAOmF,EAAa,CAE/B,MAAMlgB,EAAYkgB,EAAYnF,GAE9BzV,EAAK,KAAK,WAAYyV,CAAG,EAAK/a,EAAU,OAAQsF,EAAK,KAErD,CAED,MAAM8c,EAAkB,CAAA,EACxB,IAAIE,EAAqB,GAEzB,UAAYvH,KAAO,KAAK,gBAAkB,CAEzC,MAAMwH,EAAiB,KAAK,gBAAiBxH,CAAG,EAE1Czd,EAAQ,CAAA,EAEd,QAAUC,EAAI,EAAG4K,EAAKoa,EAAe,OAAQhlB,EAAI4K,EAAI5K,IAAO,CAE3D,MAAMyC,EAAYuiB,EAAgBhlB,GAElCD,EAAM,KAAM0C,EAAU,OAAQsF,EAAK,IAAI,EAEvC,CAEIhI,EAAM,OAAS,IAEnB8kB,EAAiBrH,CAAK,EAAGzd,EAEzBglB,EAAqB,GAItB,CAEIA,IAEJhd,EAAK,KAAK,gBAAkB8c,EAC5B9c,EAAK,KAAK,qBAAuB,KAAK,sBAIvC,MAAM2b,EAAS,KAAK,OAEfA,EAAO,OAAS,IAEpB3b,EAAK,KAAK,OAAS,KAAK,MAAO,KAAK,UAAW2b,CAAM,IAItD,MAAMuB,EAAiB,KAAK,eAE5B,OAAKA,IAAmB,OAEvBld,EAAK,KAAK,eAAiB,CAC1B,OAAQkd,EAAe,OAAO,QAAS,EACvC,OAAQA,EAAe,MAC3B,GAISld,CAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAED,KAAMiB,EAAS,CAId,KAAK,MAAQ,KACb,KAAK,WAAa,GAClB,KAAK,gBAAkB,GACvB,KAAK,OAAS,GACd,KAAK,YAAc,KACnB,KAAK,eAAiB,KAItB,MAAMjB,EAAO,CAAA,EAIb,KAAK,KAAOiB,EAAO,KAInB,MAAMnJ,EAAQmJ,EAAO,MAEhBnJ,IAAU,MAEd,KAAK,SAAUA,EAAM,MAAOkI,CAAM,CAAA,EAMnC,MAAM4a,EAAa3Z,EAAO,WAE1B,UAAYzC,KAAQoc,EAAa,CAEhC,MAAMlgB,EAAYkgB,EAAYpc,GAC9B,KAAK,aAAcA,EAAM9D,EAAU,MAAOsF,CAAI,EAE9C,CAID,MAAM8c,EAAkB7b,EAAO,gBAE/B,UAAYzC,KAAQse,EAAkB,CAErC,MAAM9kB,EAAQ,CAAA,EACRyiB,EAAiBqC,EAAiBte,GAExC,QAAUvG,EAAI,EAAGC,EAAIuiB,EAAe,OAAQxiB,EAAIC,EAAGD,IAElDD,EAAM,KAAMyiB,EAAgBxiB,CAAG,EAAC,MAAO+H,CAAI,GAI5C,KAAK,gBAAiBxB,CAAM,EAAGxG,CAE/B,CAED,KAAK,qBAAuBiJ,EAAO,qBAInC,MAAM0a,EAAS1a,EAAO,OAEtB,QAAUhJ,EAAI,EAAGC,EAAIyjB,EAAO,OAAQ1jB,EAAIC,EAAGD,IAAO,CAEjD,MAAM2jB,EAAQD,EAAQ1jB,GACtB,KAAK,SAAU2jB,EAAM,MAAOA,EAAM,MAAOA,EAAM,cAE/C,CAID,MAAMuB,EAAclc,EAAO,YAEtBkc,IAAgB,OAEpB,KAAK,YAAcA,EAAY,SAMhC,MAAMD,EAAiBjc,EAAO,eAE9B,OAAKic,IAAmB,OAEvB,KAAK,eAAiBA,EAAe,SAMtC,KAAK,UAAU,MAAQjc,EAAO,UAAU,MACxC,KAAK,UAAU,MAAQA,EAAO,UAAU,MAIxC,KAAK,SAAWA,EAAO,SAEhB,IAEP,CAED,SAAU,CAET,KAAK,cAAe,CAAE,KAAM,SAAW,CAAA,CAEvC,CAEF,CAEA,MAAMmc,GAAiC,IAAIrP,GACrCsP,GAAuB,IAAI1R,GAC3B2R,GAA0B,IAAIzS,GAC9B0S,GAA6B,IAAI5W,EAEjC6W,GAAsB,IAAI7W,EAC1B8W,GAAsB,IAAI9W,EAC1B+W,GAAsB,IAAI/W,EAE1BgX,GAAuB,IAAIhX,EAC3BiX,GAAwB,IAAIjX,EAE5BkX,GAAuB,IAAIrkB,GAC3BskB,GAAuB,IAAItkB,GAC3BukB,GAAuB,IAAIvkB,GAE3BwkB,GAAyB,IAAIrX,EAC7BsX,GAAyB,IAAItX,EAC7BuX,GAAyB,IAAIvX,EAE7BwX,GAAmC,IAAIxX,EACvCyX,GAAwC,IAAIzX,SAElD,cAAmBgN,EAAS,CAE3B,YAAa3K,EAAW,IAAIoR,GAAkBiE,EAAW,IAAIrF,GAAsB,CAElF,QAEA,KAAK,OAAS,GAEd,KAAK,KAAO,OAEZ,KAAK,SAAWhQ,EAChB,KAAK,SAAWqV,EAEhB,KAAK,mBAAkB,CAEvB,CAED,KAAMpd,EAAQyU,EAAY,CAEzB,aAAM,KAAMzU,EAAQyU,GAEfzU,EAAO,wBAA0B,SAErC,KAAK,sBAAwBA,EAAO,sBAAsB,MAAK,GAI3DA,EAAO,wBAA0B,SAErC,KAAK,sBAAwB,OAAO,OAAQ,CAAA,EAAIA,EAAO,wBAIxD,KAAK,SAAW,MAAM,QAASA,EAAO,UAAaA,EAAO,SAAS,QAAUA,EAAO,SACpF,KAAK,SAAWA,EAAO,SAEhB,IAEP,CAED,oBAAqB,CAIpB,MAAM6b,EAFW,KAAK,SAEW,gBAC3BwB,EAAO,OAAO,KAAMxB,CAAe,EAEzC,GAAKwB,EAAK,OAAS,EAAI,CAEtB,MAAM7D,EAAiBqC,EAAiBwB,EAAM,CAAG,CAAA,EAEjD,GAAK7D,IAAmB,OAAY,CAEnC,KAAK,sBAAwB,GAC7B,KAAK,sBAAwB,GAE7B,QAAUxhB,EAAI,EAAGslB,EAAK9D,EAAe,OAAQxhB,EAAIslB,EAAItlB,IAAO,CAE3D,MAAMuF,EAAOic,EAAgBxhB,CAAC,EAAG,MAAQ,OAAQA,GAEjD,KAAK,sBAAsB,KAAM,GACjC,KAAK,sBAAuBuF,CAAM,EAAGvF,CAErC,CAED,CAED,CAED,CAED,kBAAmBnB,EAAO+Q,EAAS,CAElC,MAAMG,EAAW,KAAK,SAChBiI,EAAWjI,EAAS,WAAW,SAC/BwV,EAAgBxV,EAAS,gBAAgB,SACzC0R,EAAuB1R,EAAS,qBAEtCH,EAAO,oBAAqBoI,EAAUnZ,GAEtC,MAAM2mB,EAAkB,KAAK,sBAE7B,GAAKD,GAAiBC,EAAkB,CAEvCb,GAAQ,IAAK,EAAG,EAAG,CAAC,EAEpB,QAAU3lB,EAAI,EAAG4K,EAAK2b,EAAc,OAAQvmB,EAAI4K,EAAI5K,IAAO,CAE1D,MAAMymB,EAAYD,EAAiBxmB,GAC7BwiB,EAAiB+D,EAAevmB,GAEjCymB,IAAc,IAEnBf,GAAO,oBAAqBlD,EAAgB3iB,GAEvC4iB,EAEJkD,GAAQ,gBAAiBD,GAAQe,GAIjCd,GAAQ,gBAAiBD,GAAO,IAAK9U,CAAM,EAAI6V,GAIhD,CAED7V,EAAO,IAAK+U,GAEZ,CAED,OAAO/U,CAEP,CAED,QAAS8V,EAAWC,EAAa,CAEhC,MAAM5V,EAAW,KAAK,SAChBqV,EAAW,KAAK,SAChBQ,EAAc,KAAK,YAEpBR,IAAa,SAIbrV,EAAS,iBAAmB,MAAOA,EAAS,sBAAqB,EAEtEsU,GAAU,KAAMtU,EAAS,gBACzBsU,GAAU,aAAcuB,GAIxBxB,GAAO,KAAMsB,EAAU,GAAK,EAAC,OAAQA,EAAU,MAE1C,EAAArB,GAAU,cAAeD,GAAO,MAAM,IAAO,KAE5CA,GAAO,gBAAiBC,GAAWC,EAAc,IAAK,MAEtDF,GAAO,OAAO,kBAAmBE,EAAc,GAAKoB,EAAU,IAAMA,EAAU,OAAU,MAM9FvB,GAAiB,KAAMyB,CAAa,EAAC,OAAM,EAC3CxB,GAAO,KAAMsB,EAAU,GAAG,EAAG,aAAcvB,IAItC,EAAApU,EAAS,cAAgB,MAExBqU,GAAO,cAAerU,EAAS,WAAa,IAAK,KAMvD,KAAK,sBAAuB2V,EAAWC,EAAYvB,EAAM,GAEzD,CAED,sBAAuBsB,EAAWC,EAAYE,EAAgB,CAE7D,IAAIC,EAEJ,MAAM/V,EAAW,KAAK,SAChBqV,EAAW,KAAK,SAEhBvmB,EAAQkR,EAAS,MACjBiI,EAAWjI,EAAS,WAAW,SAC/B9H,EAAK8H,EAAS,WAAW,GACzBgW,EAAMhW,EAAS,WAAW,IAC1BlB,EAASkB,EAAS,WAAW,OAC7B2S,EAAS3S,EAAS,OAClBiW,EAAYjW,EAAS,UAE3B,GAAKlR,IAAU,KAId,GAAK,MAAM,QAASumB,GAEnB,QAAUpmB,EAAI,EAAG4K,EAAK8Y,EAAO,OAAQ1jB,EAAI4K,EAAI5K,IAAO,CAEnD,MAAM2jB,EAAQD,EAAQ1jB,GAChBinB,EAAgBb,EAAUzC,EAAM,aAAa,EAE7CtC,EAAQ,KAAK,IAAKsC,EAAM,MAAOqD,EAAU,OACzCE,EAAM,KAAK,IAAKrnB,EAAM,MAAO,KAAK,IAAO8jB,EAAM,MAAQA,EAAM,MAAWqD,EAAU,MAAQA,EAAU,KAAK,GAE/G,QAAU3U,EAAIgP,EAAOqB,EAAKwE,EAAK7U,EAAIqQ,EAAIrQ,GAAK,EAAI,CAE/C,MAAM1Q,EAAI9B,EAAM,KAAMwS,CAAC,EACjBzQ,EAAI/B,EAAM,KAAMwS,EAAI,CAAC,EACrBzP,EAAI/C,EAAM,KAAMwS,EAAI,CAAC,EAE3ByU,EAAeK,GAA2B,KAAMF,EAAeP,EAAWG,EAAe5d,EAAI8d,EAAKlX,EAAQlO,EAAGC,EAAGgB,CAAC,EAE5GkkB,IAEJA,EAAa,UAAY,KAAK,MAAOzU,EAAI,CAAC,EAC1CyU,EAAa,KAAK,cAAgBnD,EAAM,cACxCgD,EAAW,KAAMG,GAIlB,CAED,KAEK,CAEN,MAAMzF,EAAQ,KAAK,IAAK,EAAG2F,EAAU,OAC/BE,EAAM,KAAK,IAAKrnB,EAAM,MAASmnB,EAAU,MAAQA,EAAU,OAEjE,QAAUhnB,EAAIqhB,EAAOzW,EAAKsc,EAAKlnB,EAAI4K,EAAI5K,GAAK,EAAI,CAE/C,MAAM2B,EAAI9B,EAAM,KAAMG,CAAC,EACjB4B,EAAI/B,EAAM,KAAMG,EAAI,CAAC,EACrB4C,EAAI/C,EAAM,KAAMG,EAAI,CAAC,EAE3B8mB,EAAeK,GAA2B,KAAMf,EAAUM,EAAWG,EAAe5d,EAAI8d,EAAKlX,EAAQlO,EAAGC,EAAGgB,CAAC,EAEvGkkB,IAEJA,EAAa,UAAY,KAAK,MAAO9mB,EAAI,CAAC,EAC1C2mB,EAAW,KAAMG,GAIlB,CAED,SAEU9N,IAAa,OAIxB,GAAK,MAAM,QAASoN,GAEnB,QAAUpmB,EAAI,EAAG4K,EAAK8Y,EAAO,OAAQ1jB,EAAI4K,EAAI5K,IAAO,CAEnD,MAAM2jB,EAAQD,EAAQ1jB,GAChBinB,EAAgBb,EAAUzC,EAAM,aAAa,EAE7CtC,EAAQ,KAAK,IAAKsC,EAAM,MAAOqD,EAAU,OACzCE,EAAM,KAAK,IAAKlO,EAAS,MAAO,KAAK,IAAO2K,EAAM,MAAQA,EAAM,MAAWqD,EAAU,MAAQA,EAAU,KAAK,GAElH,QAAU3U,EAAIgP,EAAOqB,EAAKwE,EAAK7U,EAAIqQ,EAAIrQ,GAAK,EAAI,CAE/C,MAAM1Q,EAAI0Q,EACJzQ,EAAIyQ,EAAI,EACRzP,EAAIyP,EAAI,EAEdyU,EAAeK,GAA2B,KAAMF,EAAeP,EAAWG,EAAe5d,EAAI8d,EAAKlX,EAAQlO,EAAGC,EAAGgB,CAAC,EAE5GkkB,IAEJA,EAAa,UAAY,KAAK,MAAOzU,EAAI,CAAC,EAC1CyU,EAAa,KAAK,cAAgBnD,EAAM,cACxCgD,EAAW,KAAMG,GAIlB,CAED,KAEK,CAEN,MAAMzF,EAAQ,KAAK,IAAK,EAAG2F,EAAU,OAC/BE,EAAM,KAAK,IAAKlO,EAAS,MAASgO,EAAU,MAAQA,EAAU,OAEpE,QAAUhnB,EAAIqhB,EAAOzW,EAAKsc,EAAKlnB,EAAI4K,EAAI5K,GAAK,EAAI,CAE/C,MAAM2B,EAAI3B,EACJ4B,EAAI5B,EAAI,EACR4C,EAAI5C,EAAI,EAEd8mB,EAAeK,GAA2B,KAAMf,EAAUM,EAAWG,EAAe5d,EAAI8d,EAAKlX,EAAQlO,EAAGC,EAAGgB,CAAC,EAEvGkkB,IAEJA,EAAa,UAAY,KAAK,MAAO9mB,EAAI,CAAC,EAC1C2mB,EAAW,KAAMG,GAIlB,CAED,CAIF,CAEF,EAEA,SAASM,GAAqB3W,EAAQ2V,EAAUM,EAAW7S,EAAKkQ,EAAIC,EAAIC,EAAIpT,EAAQ,CAEnF,IAAIwW,EAYJ,GAVKjB,EAAS,OAAS7vB,GAEtB8wB,EAAYxT,EAAI,kBAAmBoQ,EAAID,EAAID,EAAI,GAAMlT,GAIrDwW,EAAYxT,EAAI,kBAAmBkQ,EAAIC,EAAIC,EAAMmC,EAAS,OAAS9vB,GAAaua,GAI5EwW,IAAc,KAAO,OAAO,KAEjClB,GAAwB,KAAMtV,GAC9BsV,GAAwB,aAAc1V,EAAO,aAE7C,MAAMoL,EAAW6K,EAAU,IAAI,OAAO,WAAYP,IAElD,OAAKtK,EAAW6K,EAAU,MAAQ7K,EAAW6K,EAAU,IAAa,KAE7D,CACN,SAAU7K,EACV,MAAOsK,GAAwB,MAAO,EACtC,OAAQ1V,CACV,CAEA,CAEA,SAAS0W,GAA2B1W,EAAQ2V,EAAUM,EAAW7S,EAAK5K,EAAI8d,EAAKlX,EAAQlO,EAAGC,EAAG,EAAI,CAEhG6O,EAAO,kBAAmB9O,EAAG4jB,IAC7B9U,EAAO,kBAAmB7O,EAAG4jB,IAC7B/U,EAAO,kBAAmB,EAAGgV,IAE7B,MAAMqB,EAAeM,GAAqB3W,EAAQ2V,EAAUM,EAAW7S,EAAK0R,GAAOC,GAAOC,GAAOS,EAAkB,EAEnH,GAAKY,EAAe,CAEd7d,IAEJ2c,GAAO,oBAAqB3c,EAAItH,GAChCkkB,GAAO,oBAAqB5c,EAAIrH,GAChCkkB,GAAO,oBAAqB7c,EAAI,GAEhC6d,EAAa,GAAK1I,GAAS,iBAAkB8H,GAAoBX,GAAOC,GAAOC,GAAOG,GAAQC,GAAQC,GAAQ,IAAIvkB,EAAS,GAIvHwlB,IAEJnB,GAAO,oBAAqBmB,EAAKplB,GACjCkkB,GAAO,oBAAqBkB,EAAKnlB,GACjCkkB,GAAO,oBAAqBiB,EAAK,GAEjCD,EAAa,IAAM1I,GAAS,iBAAkB8H,GAAoBX,GAAOC,GAAOC,GAAOG,GAAQC,GAAQC,GAAQ,IAAIvkB,EAAS,GAIxHsO,IAEJkW,GAAS,oBAAqBlW,EAAQlO,GACtCqkB,GAAS,oBAAqBnW,EAAQjO,GACtCqkB,GAAS,oBAAqBpW,EAAQ,GAEtCiX,EAAa,OAAS1I,GAAS,iBAAkB8H,GAAoBX,GAAOC,GAAOC,GAAOM,GAAUC,GAAUC,GAAU,IAAIvX,CAAS,EAEhIoY,EAAa,OAAO,IAAKjT,EAAI,SAAW,EAAG,GAE/CiT,EAAa,OAAO,eAAgB,EAAG,GAMzC,MAAMQ,EAAO,CACZ,EAAG3lB,EACH,EAAGC,EACH,EACA,OAAQ,IAAI8M,EACZ,cAAe,CAClB,EAEE0P,GAAS,UAAWmH,GAAOC,GAAOC,GAAO6B,EAAK,QAE9CR,EAAa,KAAOQ,CAEpB,CAED,OAAOR,CAER,CAEA,MAAMS,WAAoBpF,EAAe,CAExC,YAAa7X,EAAQ,EAAGC,EAAS,EAAGI,EAAQ,EAAG6c,EAAgB,EAAGC,EAAiB,EAAGC,EAAgB,EAAI,CAEzG,QAEA,KAAK,KAAO,cAEZ,KAAK,WAAa,CACjB,MAAOpd,EACP,OAAQC,EACR,MAAOI,EACP,cAAe6c,EACf,eAAgBC,EAChB,cAAeC,CAClB,EAEE,MAAMC,EAAQ,KAIdH,EAAgB,KAAK,MAAOA,GAC5BC,EAAiB,KAAK,MAAOA,GAC7BC,EAAgB,KAAK,MAAOA,GAI5B,MAAMjD,EAAU,CAAA,EACVmD,EAAW,CAAA,EACXrD,EAAU,CAAA,EACVsD,EAAM,CAAA,EAIZ,IAAIC,EAAmB,EACnBC,EAAa,EAIjBC,EAAY,IAAK,IAAK,IAAK,GAAK,GAAKrd,EAAOJ,EAAQD,EAAOod,EAAeD,EAAgB,CAAC,EAC3FO,EAAY,IAAK,IAAK,IAAK,EAAG,GAAKrd,EAAOJ,EAAQ,CAAED,EAAOod,EAAeD,EAAgB,CAAC,EAC3FO,EAAY,IAAK,IAAK,IAAK,EAAG,EAAG1d,EAAOK,EAAOJ,EAAQid,EAAeE,EAAe,CAAC,EACtFM,EAAY,IAAK,IAAK,IAAK,EAAG,GAAK1d,EAAOK,EAAO,CAAEJ,EAAQid,EAAeE,EAAe,CAAC,EAC1FM,EAAY,IAAK,IAAK,IAAK,EAAG,GAAK1d,EAAOC,EAAQI,EAAO6c,EAAeC,EAAgB,CAAC,EACzFO,EAAY,IAAK,IAAK,IAAK,GAAK,GAAK1d,EAAOC,EAAQ,CAAEI,EAAO6c,EAAeC,EAAgB,CAAC,EAI7F,KAAK,SAAUhD,GACf,KAAK,aAAc,WAAY,IAAI9C,GAAwBiG,EAAU,CAAC,GACtE,KAAK,aAAc,SAAU,IAAIjG,GAAwB4C,EAAS,CAAC,GACnE,KAAK,aAAc,KAAM,IAAI5C,GAAwBkG,EAAK,CAAC,GAE3D,SAASG,EAAY7X,EAAG1O,EAAG2H,EAAG6e,EAAMC,EAAM5d,EAAOC,EAAQI,EAAOwd,EAAOC,EAAOhG,EAAgB,CAE7F,MAAMiG,EAAe/d,EAAQ6d,EACvBG,EAAgB/d,EAAS6d,EAEzBG,EAAYje,EAAQ,EACpBke,EAAaje,EAAS,EACtBke,EAAY9d,EAAQ,EAEpB+d,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEvB,IAAIQ,GAAgB,EAChBC,EAAa,EAEjB,MAAM/X,EAAS,IAAIpC,EAInB,QAAUoa,EAAK,EAAGA,EAAKH,EAAQG,IAAQ,CAEtC,MAAM3nB,GAAI2nB,EAAKR,EAAgBE,EAE/B,QAAUO,GAAK,EAAGA,GAAKL,EAAQK,KAAQ,CAEtC,MAAM7nB,GAAI6nB,GAAKV,EAAeE,EAI9BzX,EAAQX,CAAC,EAAKjP,GAAI+mB,EAClBnX,EAAQrP,CAAC,EAAKN,GAAI+mB,EAClBpX,EAAQ1H,CAAG,EAAGqf,EAIdb,EAAS,KAAM9W,EAAO,EAAGA,EAAO,EAAGA,EAAO,GAI1CA,EAAQX,CAAG,EAAG,EACdW,EAAQrP,CAAG,EAAG,EACdqP,EAAQ1H,CAAC,EAAKuB,EAAQ,EAAI,EAAI,GAI9B4Z,EAAQ,KAAMzT,EAAO,EAAGA,EAAO,EAAGA,EAAO,GAIzC+W,EAAI,KAAMkB,GAAKZ,GACfN,EAAI,KAAM,EAAMiB,EAAKV,CAAO,EAI5BQ,IAAiB,CAEjB,CAED,CAQD,QAAUE,EAAK,EAAGA,EAAKV,EAAOU,IAE7B,QAAUC,GAAK,EAAGA,GAAKZ,EAAOY,KAAQ,CAErC,MAAMpnB,GAAImmB,EAAmBiB,GAAKL,EAASI,EACrClnB,GAAIkmB,EAAmBiB,GAAKL,GAAWI,EAAK,GAC5ClmB,EAAIklB,GAAqBiB,GAAK,GAAML,GAAWI,EAAK,GACpD9jB,EAAI8iB,GAAqBiB,GAAK,GAAML,EAASI,EAInDrE,EAAQ,KAAM9iB,GAAGC,GAAGoD,CAAC,EACrByf,EAAQ,KAAM7iB,GAAGgB,EAAGoC,CAAC,EAIrB6jB,GAAc,CAEd,CAMFlB,EAAM,SAAUI,EAAYc,EAAYzG,CAAa,EAIrD2F,GAAcc,EAIdf,GAAoBc,EAEpB,CAED,CAED,KAAM5f,EAAS,CAEd,aAAM,KAAMA,GAEZ,KAAK,WAAa,OAAO,OAAQ,CAAA,EAAIA,EAAO,YAErC,IAEP,CAED,OAAO,SAAUjB,EAAO,CAEvB,OAAO,IAAIwf,GAAaxf,EAAK,MAAOA,EAAK,OAAQA,EAAK,MAAOA,EAAK,cAAeA,EAAK,eAAgBA,EAAK,aAAa,CAExH,CAEF,CAMA,SAASihB,GAAeC,EAAM,CAE7B,MAAMhe,EAAM,CAAA,EAEZ,UAAYkF,KAAK8Y,EAAM,CAEtBhe,EAAKkF,CAAG,EAAG,GAEX,UAAY+O,KAAK+J,EAAK9Y,GAAM,CAE3B,MAAM+Y,EAAWD,EAAK9Y,CAAG,EAAE+O,CAAC,EAEvBgK,IAAcA,EAAS,SAC3BA,EAAS,WAAaA,EAAS,WAC/BA,EAAS,WAAaA,EAAS,WAAaA,EAAS,WACrDA,EAAS,WAAaA,EAAS,cAE1BA,EAAS,uBAEb,QAAQ,KAAM,sGACdje,EAAKkF,CAAC,EAAI+O,CAAC,EAAK,MAIhBjU,EAAKkF,CAAC,EAAI+O,CAAG,EAAGgK,EAAS,MAAK,EAIpB,MAAM,QAASA,GAE1Bje,EAAKkF,CAAC,EAAI+O,CAAG,EAAGgK,EAAS,MAAK,EAI9Bje,EAAKkF,CAAC,EAAI+O,CAAC,EAAKgK,CAIjB,CAED,CAED,OAAOje,CAER,CAEA,SAASke,GAAeC,EAAW,CAElC,MAAMC,EAAS,CAAA,EAEf,QAAUlZ,EAAI,EAAGA,EAAIiZ,EAAS,OAAQjZ,IAAO,CAE5C,MAAM1K,EAAMujB,GAAeI,EAAUjZ,CAAG,CAAA,EAExC,UAAY+O,KAAKzZ,EAEhB4jB,EAAQnK,CAAC,EAAKzZ,EAAKyZ,CAAC,CAIrB,CAED,OAAOmK,CAER,CAEA,SAASC,GAAqBL,EAAM,CAEnC,MAAMhe,EAAM,CAAA,EAEZ,QAAUkF,EAAI,EAAGA,EAAI8Y,EAAI,OAAQ9Y,IAEhClF,EAAI,KAAMge,EAAK9Y,CAAC,EAAG,MAAO,CAAA,EAI3B,OAAOlF,CAER,CAEA,SAASse,GAA2BC,EAAW,CAE9C,MAAMC,EAAsBD,EAAS,kBAErC,OAAKC,IAAwB,KAGrBD,EAAS,iBAKZC,EAAoB,mBAAqB,GAEtCA,EAAoB,QAAQ,WAI7BviB,GAAgB,iBAExB,CAIA,MAAMwiB,GAAgB,CAAE,MAAOV,GAAe,MAAOG,EAAa,EAElE,IAAIQ,GAAiB;AAAA;AAAA,GAEjBC,GAAmB;AAAA;AAAA,GAEvB,MAAMC,WAAuBnJ,EAAS,CAErC,YAAajE,EAAa,CAEzB,QAEA,KAAK,iBAAmB,GAExB,KAAK,KAAO,iBAEZ,KAAK,QAAU,GACf,KAAK,SAAW,GAChB,KAAK,eAAiB,GAEtB,KAAK,aAAekN,GACpB,KAAK,eAAiBC,GAEtB,KAAK,UAAY,EAEjB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAE1B,KAAK,IAAM,GACX,KAAK,OAAS,GACd,KAAK,SAAW,GAEhB,KAAK,gBAAkB,GAEvB,KAAK,WAAa,CACjB,iBAAkB,GAClB,UAAW,EACd,EAIE,KAAK,uBAAyB,CAC7B,MAAS,CAAE,EAAG,EAAG,CAAG,EACpB,GAAM,CAAE,EAAG,CAAG,EACd,IAAO,CAAE,EAAG,CAAG,CAClB,EAEE,KAAK,oBAAsB,OAC3B,KAAK,mBAAqB,GAE1B,KAAK,YAAc,KAEdnN,IAAe,QAEnB,KAAK,UAAWA,EAIjB,CAED,KAAMzT,EAAS,CAEd,aAAM,KAAMA,GAEZ,KAAK,eAAiBA,EAAO,eAC7B,KAAK,aAAeA,EAAO,aAE3B,KAAK,SAAWggB,GAAehgB,EAAO,QAAQ,EAC9C,KAAK,eAAiBsgB,GAAqBtgB,EAAO,cAAc,EAEhE,KAAK,QAAU,OAAO,OAAQ,CAAA,EAAIA,EAAO,SAEzC,KAAK,UAAYA,EAAO,UACxB,KAAK,mBAAqBA,EAAO,mBAEjC,KAAK,IAAMA,EAAO,IAClB,KAAK,OAASA,EAAO,OACrB,KAAK,SAAWA,EAAO,SAEvB,KAAK,WAAa,OAAO,OAAQ,CAAA,EAAIA,EAAO,YAE5C,KAAK,YAAcA,EAAO,YAEnB,IAEP,CAED,OAAQd,EAAO,CAEd,MAAMH,EAAO,MAAM,OAAQG,CAAI,EAE/BH,EAAK,YAAc,KAAK,YACxBA,EAAK,SAAW,GAEhB,UAAYxB,KAAQ,KAAK,SAAW,CAGnC,MAAM5F,EADU,KAAK,SAAU4F,CAAI,EACb,MAEjB5F,GAASA,EAAM,UAEnBoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,IACN,MAAO5F,EAAM,OAAQuH,CAAM,EAAC,IACjC,EAEevH,GAASA,EAAM,QAE1BoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,IACN,MAAO5F,EAAM,OAAQ,CAC1B,EAEeA,GAASA,EAAM,UAE1BoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,KACN,MAAO5F,EAAM,QAAS,CAC3B,EAEeA,GAASA,EAAM,UAE1BoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,KACN,MAAO5F,EAAM,QAAS,CAC3B,EAEeA,GAASA,EAAM,UAE1BoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,KACN,MAAO5F,EAAM,QAAS,CAC3B,EAEeA,GAASA,EAAM,UAE1BoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,KACN,MAAO5F,EAAM,QAAS,CAC3B,EAEeA,GAASA,EAAM,UAE1BoH,EAAK,SAAUxB,GAAS,CACvB,KAAM,KACN,MAAO5F,EAAM,QAAS,CAC3B,EAIIoH,EAAK,SAAUxB,GAAS,CACvB,MAAO5F,CACZ,CAMG,CAEI,OAAO,KAAM,KAAK,OAAS,EAAC,OAAS,IAAIoH,EAAK,QAAU,KAAK,SAElEA,EAAK,aAAe,KAAK,aACzBA,EAAK,eAAiB,KAAK,eAE3BA,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SAErB,MAAM+hB,EAAa,CAAA,EAEnB,UAAYtM,KAAO,KAAK,WAElB,KAAK,WAAYA,CAAK,IAAK,KAAOsM,EAAYtM,CAAK,EAAG,IAI5D,OAAK,OAAO,KAAMsM,CAAY,EAAC,OAAS,IAAI/hB,EAAK,WAAa+hB,GAEvD/hB,CAEP,CAEF,CAEA,MAAMgiB,WAAerO,EAAS,CAE7B,aAAc,CAEb,QAEA,KAAK,SAAW,GAEhB,KAAK,KAAO,SAEZ,KAAK,mBAAqB,IAAI5F,GAE9B,KAAK,iBAAmB,IAAIA,GAC5B,KAAK,wBAA0B,IAAIA,GAEnC,KAAK,iBAAmBxW,EAExB,CAED,KAAM0J,EAAQyU,EAAY,CAEzB,aAAM,KAAMzU,EAAQyU,GAEpB,KAAK,mBAAmB,KAAMzU,EAAO,kBAAkB,EAEvD,KAAK,iBAAiB,KAAMA,EAAO,gBAAgB,EACnD,KAAK,wBAAwB,KAAMA,EAAO,uBAAuB,EAEjE,KAAK,iBAAmBA,EAAO,iBAExB,IAEP,CAED,kBAAmB4H,EAAS,CAE3B,OAAO,MAAM,kBAAmBA,CAAQ,EAAC,OAAM,CAE/C,CAED,kBAAmBqL,EAAQ,CAE1B,MAAM,kBAAmBA,GAEzB,KAAK,mBAAmB,KAAM,KAAK,WAAW,EAAG,QAEjD,CAED,kBAAmBE,EAAeC,EAAiB,CAElD,MAAM,kBAAmBD,EAAeC,GAExC,KAAK,mBAAmB,KAAM,KAAK,WAAW,EAAG,QAEjD,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAEF,CAEA,MAAM4N,GAAsB,IAAItb,EAC1Bub,GAA2B,IAAI1oB,GAC/B2oB,GAA2B,IAAI3oB,GAGrC,MAAM4oB,WAA0BJ,EAAO,CAEtC,YAAaK,EAAM,GAAIC,EAAS,EAAGrQ,EAAO,GAAKC,EAAM,IAAO,CAE3D,QAEA,KAAK,oBAAsB,GAE3B,KAAK,KAAO,oBAEZ,KAAK,IAAMmQ,EACX,KAAK,KAAO,EAEZ,KAAK,KAAOpQ,EACZ,KAAK,IAAMC,EACX,KAAK,MAAQ,GAEb,KAAK,OAASoQ,EACd,KAAK,KAAO,KAEZ,KAAK,UAAY,GACjB,KAAK,WAAa,EAElB,KAAK,uBAAsB,CAE3B,CAED,KAAMrhB,EAAQyU,EAAY,CAEzB,aAAM,KAAMzU,EAAQyU,GAEpB,KAAK,IAAMzU,EAAO,IAClB,KAAK,KAAOA,EAAO,KAEnB,KAAK,KAAOA,EAAO,KACnB,KAAK,IAAMA,EAAO,IAClB,KAAK,MAAQA,EAAO,MAEpB,KAAK,OAASA,EAAO,OACrB,KAAK,KAAOA,EAAO,OAAS,KAAO,KAAO,OAAO,OAAQ,CAAA,EAAIA,EAAO,IAAI,EAExE,KAAK,UAAYA,EAAO,UACxB,KAAK,WAAaA,EAAO,WAElB,IAEP,CAUD,eAAgBshB,EAAc,CAG7B,MAAMC,EAAe,GAAM,KAAK,cAAa,EAAKD,EAElD,KAAK,IAAMlqB,GAAU,EAAI,KAAK,KAAMmqB,GACpC,KAAK,uBAAsB,CAE3B,CAKD,gBAAiB,CAEhB,MAAMA,EAAe,KAAK,IAAKpqB,GAAU,GAAM,KAAK,KAEpD,MAAO,IAAM,KAAK,cAAa,EAAKoqB,CAEpC,CAED,iBAAkB,CAEjB,OAAOnqB,GAAU,EAAI,KAAK,KACzB,KAAK,IAAKD,GAAU,GAAM,KAAK,GAAK,EAAG,KAAK,KAE7C,CAED,cAAe,CAGd,OAAO,KAAK,UAAY,KAAK,IAAK,KAAK,OAAQ,EAE/C,CAED,eAAgB,CAGf,OAAO,KAAK,UAAY,KAAK,IAAK,KAAK,OAAQ,EAE/C,CAMD,cAAe0b,EAAU2O,EAAWC,EAAY,CAE/CT,GAAM,IAAK,GAAK,GAAK,EAAG,EAAG,aAAc,KAAK,yBAE9CQ,EAAU,IAAKR,GAAM,EAAGA,GAAM,GAAI,eAAgB,CAAEnO,EAAWmO,GAAM,CAAC,EAEtEA,GAAM,IAAK,EAAG,EAAG,EAAG,EAAG,aAAc,KAAK,yBAE1CS,EAAU,IAAKT,GAAM,EAAGA,GAAM,GAAI,eAAgB,CAAEnO,EAAWmO,GAAM,CAAC,CAEtE,CAMD,YAAanO,EAAUjL,EAAS,CAE/B,YAAK,cAAeiL,EAAUoO,GAAYC,EAAU,EAE7CtZ,EAAO,WAAYsZ,GAAYD,EAAU,CAEhD,CAqCD,cAAeS,EAAWC,EAAYzpB,EAAGC,EAAGmJ,EAAOC,EAAS,CAE3D,KAAK,OAASmgB,EAAYC,EAErB,KAAK,OAAS,OAElB,KAAK,KAAO,CACX,QAAS,GACT,UAAW,EACX,WAAY,EACZ,QAAS,EACT,QAAS,EACT,MAAO,EACP,OAAQ,CACZ,GAIE,KAAK,KAAK,QAAU,GACpB,KAAK,KAAK,UAAYD,EACtB,KAAK,KAAK,WAAaC,EACvB,KAAK,KAAK,QAAUzpB,EACpB,KAAK,KAAK,QAAUC,EACpB,KAAK,KAAK,MAAQmJ,EAClB,KAAK,KAAK,OAASC,EAEnB,KAAK,uBAAsB,CAE3B,CAED,iBAAkB,CAEZ,KAAK,OAAS,OAElB,KAAK,KAAK,QAAU,IAIrB,KAAK,uBAAsB,CAE3B,CAED,wBAAyB,CAExB,MAAMyP,EAAO,KAAK,KAClB,IAAIF,EAAME,EAAO,KAAK,IAAK7Z,GAAU,GAAM,KAAK,KAAQ,KAAK,KACzDoK,EAAS,EAAIuP,EACbxP,EAAQ,KAAK,OAASC,EACtBqP,EAAO,IAAQtP,EACnB,MAAMsgB,EAAO,KAAK,KAElB,GAAK,KAAK,OAAS,MAAQ,KAAK,KAAK,QAAU,CAE9C,MAAMF,EAAYE,EAAK,UACtBD,EAAaC,EAAK,WAEnBhR,GAAQgR,EAAK,QAAUtgB,EAAQogB,EAC/B5Q,GAAO8Q,EAAK,QAAUrgB,EAASogB,EAC/BrgB,GAASsgB,EAAK,MAAQF,EACtBngB,GAAUqgB,EAAK,OAASD,CAExB,CAED,MAAME,EAAO,KAAK,WACbA,IAAS,IAAIjR,GAAQI,EAAO6Q,EAAO,KAAK,gBAE7C,KAAK,iBAAiB,gBAAiBjR,EAAMA,EAAOtP,EAAOwP,EAAKA,EAAMvP,EAAQyP,EAAM,KAAK,IAAK,KAAK,gBAAgB,EAEnH,KAAK,wBAAwB,KAAM,KAAK,gBAAgB,EAAG,QAE3D,CAED,OAAQ9R,EAAO,CAEd,MAAMH,EAAO,MAAM,OAAQG,CAAI,EAE/B,OAAAH,EAAK,OAAO,IAAM,KAAK,IACvBA,EAAK,OAAO,KAAO,KAAK,KAExBA,EAAK,OAAO,KAAO,KAAK,KACxBA,EAAK,OAAO,IAAM,KAAK,IACvBA,EAAK,OAAO,MAAQ,KAAK,MAEzBA,EAAK,OAAO,OAAS,KAAK,OAErB,KAAK,OAAS,OAAOA,EAAK,OAAO,KAAO,OAAO,OAAQ,CAAA,EAAI,KAAK,IAAI,GAEzEA,EAAK,OAAO,UAAY,KAAK,UAC7BA,EAAK,OAAO,WAAa,KAAK,WAEvBA,CAEP,CAEF,CAEA,MAAMqiB,GAAM,IACNC,GAAS,EAEf,MAAMS,WAAmBpP,EAAS,CAEjC,YAAa1B,EAAMC,EAAK8Q,EAAe,CAEtC,QAEA,KAAK,KAAO,aAEZ,KAAK,aAAeA,EACpB,KAAK,iBAAmB,KACxB,KAAK,kBAAoB,EAEzB,MAAMC,EAAW,IAAIb,GAAmBC,GAAKC,GAAQrQ,EAAMC,GAC3D+Q,EAAS,OAAS,KAAK,OACvB,KAAK,IAAKA,GAEV,MAAMC,EAAW,IAAId,GAAmBC,GAAKC,GAAQrQ,EAAMC,GAC3DgR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAKA,GAEV,MAAMC,EAAW,IAAIf,GAAmBC,GAAKC,GAAQrQ,EAAMC,GAC3DiR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAKA,GAEV,MAAMC,EAAW,IAAIhB,GAAmBC,GAAKC,GAAQrQ,EAAMC,GAC3DkR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAKA,GAEV,MAAMC,EAAW,IAAIjB,GAAmBC,GAAKC,GAAQrQ,EAAMC,GAC3DmR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAKA,GAEV,MAAMC,EAAW,IAAIlB,GAAmBC,GAAKC,GAAQrQ,EAAMC,GAC3DoR,EAAS,OAAS,KAAK,OACvB,KAAK,IAAKA,EAEV,CAED,wBAAyB,CAExB,MAAMnR,EAAmB,KAAK,iBAExBoR,EAAU,KAAK,SAAS,OAAM,EAE9B,CAAEN,EAAUC,EAAUC,EAAUC,EAAUC,EAAUC,CAAU,EAAGC,EAEvE,UAAYlc,KAAUkc,EAAU,KAAK,OAAQlc,CAAM,EAEnD,GAAK8K,IAAqB5a,GAEzB0rB,EAAS,GAAG,IAAK,EAAG,EAAG,CAAC,EACxBA,EAAS,OAAQ,EAAG,EAAG,CAAC,EAExBC,EAAS,GAAG,IAAK,EAAG,EAAG,CAAC,EACxBA,EAAS,OAAQ,GAAK,EAAG,CAAC,EAE1BC,EAAS,GAAG,IAAK,EAAG,EAAG,IACvBA,EAAS,OAAQ,EAAG,EAAG,CAAC,EAExBC,EAAS,GAAG,IAAK,EAAG,EAAG,CAAC,EACxBA,EAAS,OAAQ,EAAG,GAAK,CAAC,EAE1BC,EAAS,GAAG,IAAK,EAAG,EAAG,CAAC,EACxBA,EAAS,OAAQ,EAAG,EAAG,CAAC,EAExBC,EAAS,GAAG,IAAK,EAAG,EAAG,CAAC,EACxBA,EAAS,OAAQ,EAAG,EAAG,EAAG,UAEfnR,IAAqB3a,GAEhCyrB,EAAS,GAAG,IAAK,EAAG,GAAK,GACzBA,EAAS,OAAQ,GAAK,EAAG,CAAC,EAE1BC,EAAS,GAAG,IAAK,EAAG,GAAK,GACzBA,EAAS,OAAQ,EAAG,EAAG,CAAC,EAExBC,EAAS,GAAG,IAAK,EAAG,EAAG,CAAC,EACxBA,EAAS,OAAQ,EAAG,EAAG,CAAC,EAExBC,EAAS,GAAG,IAAK,EAAG,EAAG,IACvBA,EAAS,OAAQ,EAAG,GAAK,CAAC,EAE1BC,EAAS,GAAG,IAAK,EAAG,GAAK,GACzBA,EAAS,OAAQ,EAAG,EAAG,CAAC,EAExBC,EAAS,GAAG,IAAK,EAAG,GAAK,GACzBA,EAAS,OAAQ,EAAG,EAAG,EAAG,MAI1B,OAAM,IAAI,MAAO,yEAA2EnR,GAI7F,UAAY9K,KAAUkc,EAErB,KAAK,IAAKlc,GAEVA,EAAO,kBAAiB,CAIzB,CAED,OAAQoa,EAAU+B,EAAQ,CAEpB,KAAK,SAAW,MAAO,KAAK,kBAAiB,EAElD,KAAM,CAAE,aAAAR,EAAc,kBAAAS,CAAmB,EAAG,KAEvC,KAAK,mBAAqBhC,EAAS,mBAEvC,KAAK,iBAAmBA,EAAS,iBAEjC,KAAK,uBAAsB,GAI5B,KAAM,CAAEwB,EAAUC,EAAUC,EAAUC,EAAUC,EAAUC,CAAQ,EAAK,KAAK,SAEtE5B,EAAsBD,EAAS,kBAC/BiC,EAAwBjC,EAAS,oBACjCkC,EAA2BlC,EAAS,uBAEpCmC,EAAmBnC,EAAS,GAAG,QAErCA,EAAS,GAAG,QAAU,GAEtB,MAAMoC,EAAkBb,EAAa,QAAQ,gBAE7CA,EAAa,QAAQ,gBAAkB,GAEvCvB,EAAS,gBAAiBuB,EAAc,EAAGS,CAAiB,EAC5DhC,EAAS,OAAQ+B,EAAOP,GAExBxB,EAAS,gBAAiBuB,EAAc,EAAGS,CAAiB,EAC5DhC,EAAS,OAAQ+B,EAAON,GAExBzB,EAAS,gBAAiBuB,EAAc,EAAGS,CAAiB,EAC5DhC,EAAS,OAAQ+B,EAAOL,GAExB1B,EAAS,gBAAiBuB,EAAc,EAAGS,CAAiB,EAC5DhC,EAAS,OAAQ+B,EAAOJ,GAExB3B,EAAS,gBAAiBuB,EAAc,EAAGS,CAAiB,EAC5DhC,EAAS,OAAQ+B,EAAOH,GAKxBL,EAAa,QAAQ,gBAAkBa,EAEvCpC,EAAS,gBAAiBuB,EAAc,EAAGS,CAAiB,EAC5DhC,EAAS,OAAQ+B,EAAOF,GAExB7B,EAAS,gBAAiBC,EAAqBgC,EAAuBC,CAAwB,EAE9FlC,EAAS,GAAG,QAAUmC,EAEtBZ,EAAa,QAAQ,iBAAmB,EAExC,CAEF,CAEA,MAAMc,WAAoBrjB,EAAQ,CAEjC,YAAa0U,EAAQzU,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQrJ,EAAMsJ,EAAY5B,EAAa,CAExG+V,EAASA,IAAW,OAAYA,EAAS,CAAA,EACzCzU,EAAUA,IAAY,OAAYA,EAAUlP,GAE5C,MAAO2jB,EAAQzU,EAASC,EAAOC,EAAOC,EAAWC,EAAWC,EAAQrJ,EAAMsJ,EAAY5B,CAAU,EAEhG,KAAK,cAAgB,GAErB,KAAK,MAAQ,EAEb,CAED,IAAI,QAAS,CAEZ,OAAO,KAAK,KAEZ,CAED,IAAI,OAAQxG,EAAQ,CAEnB,KAAK,MAAQA,CAEb,CAEF,CAEA,MAAMmrB,WAA8BjhB,EAAkB,CAErD,YAAa0F,EAAO,EAAG/F,EAAU,CAAA,EAAK,CAErC,MAAO+F,EAAMA,EAAM/F,GAEnB,KAAK,wBAA0B,GAE/B,MAAM5C,EAAQ,CAAE,MAAO2I,EAAM,OAAQA,EAAM,MAAO,GAC5C2M,EAAS,CAAEtV,EAAOA,EAAOA,EAAOA,EAAOA,EAAOA,GAEpD,KAAK,QAAU,IAAIikB,GAAa3O,EAAQ1S,EAAQ,QAASA,EAAQ,MAAOA,EAAQ,MAAOA,EAAQ,UAAWA,EAAQ,UAAWA,EAAQ,OAAQA,EAAQ,KAAMA,EAAQ,WAAYA,EAAQ,UAAU,EAUjM,KAAK,QAAQ,sBAAwB,GAErC,KAAK,QAAQ,gBAAkBA,EAAQ,kBAAoB,OAAYA,EAAQ,gBAAkB,GACjG,KAAK,QAAQ,UAAYA,EAAQ,YAAc,OAAYA,EAAQ,UAAYtQ,EAE/E,CAED,2BAA4BsvB,EAAU/e,EAAU,CAE/C,KAAK,QAAQ,KAAOA,EAAQ,KAC5B,KAAK,QAAQ,WAAaA,EAAQ,WAElC,KAAK,QAAQ,gBAAkBA,EAAQ,gBACvC,KAAK,QAAQ,UAAYA,EAAQ,UACjC,KAAK,QAAQ,UAAYA,EAAQ,UAEjC,MAAMshB,EAAS,CAEd,SAAU,CACT,UAAW,CAAE,MAAO,IAAM,CAC1B,EAED,aAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAoBxB,eAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkB7B,EAEQhb,EAAW,IAAIwW,GAAa,EAAG,EAAG,CAAC,EAEnCnB,EAAW,IAAIyD,GAAgB,CAEpC,KAAM,sBAEN,SAAUb,GAAe+C,EAAO,QAAU,EAC1C,aAAcA,EAAO,aACrB,eAAgBA,EAAO,eACvB,KAAMx1B,GACN,SAAUE,EAEb,GAEE2vB,EAAS,SAAS,UAAU,MAAQ3b,EAEpC,MAAMuhB,EAAO,IAAIC,GAAMlb,EAAUqV,CAAQ,EAEnC8F,EAAmBzhB,EAAQ,UAGjC,OAAKA,EAAQ,YAAcrQ,KAA2BqQ,EAAQ,UAAYvQ,IAE3D,IAAI4wB,GAAY,EAAG,GAAI,IAAI,EACnC,OAAQtB,EAAUwC,GAEzBvhB,EAAQ,UAAYyhB,EAEpBF,EAAK,SAAS,UACdA,EAAK,SAAS,UAEP,IAEP,CAED,MAAOxC,EAAUxiB,EAAO2D,EAAOwhB,EAAU,CAExC,MAAM1C,EAAsBD,EAAS,kBAErC,QAAUxpB,EAAI,EAAGA,EAAI,EAAGA,IAEvBwpB,EAAS,gBAAiB,KAAMxpB,GAEhCwpB,EAAS,MAAOxiB,EAAO2D,EAAOwhB,CAAO,EAItC3C,EAAS,gBAAiBC,EAE1B,CAEF,CAEA,MAAM2C,GAAyB,IAAI1d,EAC7B2d,GAAyB,IAAI3d,EAC7B4d,GAA8B,IAAIzpB,GAExC,MAAM0pB,EAAM,CAEX,YAAa1c,EAAS,IAAInB,EAAS,EAAG,EAAG,CAAC,EAAI8d,EAAW,EAAI,CAE5D,KAAK,QAAU,GAIf,KAAK,OAAS3c,EACd,KAAK,SAAW2c,CAEhB,CAED,IAAK3c,EAAQ2c,EAAW,CAEvB,YAAK,OAAO,KAAM3c,GAClB,KAAK,SAAW2c,EAET,IAEP,CAED,cAAetrB,EAAGC,EAAGgI,EAAGC,EAAI,CAE3B,YAAK,OAAO,IAAKlI,EAAGC,EAAGgI,CAAC,EACxB,KAAK,SAAWC,EAET,IAEP,CAED,8BAA+ByG,EAAQgB,EAAQ,CAE9C,YAAK,OAAO,KAAMhB,GAClB,KAAK,SAAW,CAAEgB,EAAM,IAAK,KAAK,QAE3B,IAEP,CAED,sBAAuBlP,EAAGC,EAAGgB,EAAI,CAEhC,MAAMiN,EAASuc,GAAS,WAAYxpB,EAAGhB,CAAC,EAAG,MAAOyqB,GAAS,WAAY1qB,EAAGC,CAAC,CAAI,EAAC,UAAS,EAIzF,YAAK,8BAA+BiO,EAAQlO,GAErC,IAEP,CAED,KAAMyP,EAAQ,CAEb,YAAK,OAAO,KAAMA,EAAM,MAAM,EAC9B,KAAK,SAAWA,EAAM,SAEf,IAEP,CAED,WAAY,CAIX,MAAMqb,EAAsB,EAAM,KAAK,OAAO,OAAM,EACpD,YAAK,OAAO,eAAgBA,GAC5B,KAAK,UAAYA,EAEV,IAEP,CAED,QAAS,CAER,YAAK,UAAY,GACjB,KAAK,OAAO,SAEL,IAEP,CAED,gBAAiB5b,EAAQ,CAExB,OAAO,KAAK,OAAO,IAAKA,CAAO,EAAG,KAAK,QAEvC,CAED,iBAAkBM,EAAS,CAE1B,OAAO,KAAK,gBAAiBA,EAAO,MAAQ,EAAGA,EAAO,MAEtD,CAED,aAAcN,EAAOD,EAAS,CAE7B,OAAOA,EAAO,KAAMC,CAAK,EAAG,gBAAiB,KAAK,OAAQ,CAAE,KAAK,gBAAiBA,CAAO,CAAA,CAEzF,CAED,cAAe6b,EAAM9b,EAAS,CAE7B,MAAMgD,EAAY8Y,EAAK,MAAON,EAAQ,EAEhCnqB,EAAc,KAAK,OAAO,IAAK2R,CAAS,EAE9C,GAAK3R,IAAgB,EAGpB,OAAK,KAAK,gBAAiByqB,EAAK,KAAK,IAAO,EAEpC9b,EAAO,KAAM8b,EAAK,KAAK,EAKxB,KAIR,MAAMtrB,EAAI,EAAIsrB,EAAK,MAAM,IAAK,KAAK,QAAW,KAAK,UAAazqB,EAEhE,OAAKb,EAAI,GAAKA,EAAI,EAEV,KAIDwP,EAAO,KAAM8b,EAAK,KAAO,EAAC,gBAAiB9Y,EAAWxS,EAE7D,CAED,eAAgBsrB,EAAO,CAItB,MAAMC,EAAY,KAAK,gBAAiBD,EAAK,KAAK,EAC5CE,EAAU,KAAK,gBAAiBF,EAAK,GAAG,EAE9C,OAASC,EAAY,GAAKC,EAAU,GAASA,EAAU,GAAKD,EAAY,CAExE,CAED,cAAehc,EAAM,CAEpB,OAAOA,EAAI,gBAAiB,KAE5B,CAED,iBAAkBQ,EAAS,CAE1B,OAAOA,EAAO,gBAAiB,KAE/B,CAED,cAAeP,EAAS,CAEvB,OAAOA,EAAO,KAAM,KAAK,MAAQ,EAAC,eAAgB,CAAE,KAAK,SAEzD,CAED,aAAcxK,EAAQymB,EAAuB,CAE5C,MAAMxK,EAAewK,GAAwBP,GAAc,gBAAiBlmB,CAAM,EAE5E0mB,EAAiB,KAAK,cAAeV,EAAQ,EAAG,aAAchmB,GAE9DyJ,EAAS,KAAK,OAAO,aAAcwS,CAAY,EAAG,YAExD,YAAK,SAAW,CAAEyK,EAAe,IAAKjd,CAAM,EAErC,IAEP,CAED,UAAWrN,EAAS,CAEnB,YAAK,UAAYA,EAAO,IAAK,KAAK,MAAM,EAEjC,IAEP,CAED,OAAQ4O,EAAQ,CAEf,OAAOA,EAAM,OAAO,OAAQ,KAAK,SAAcA,EAAM,WAAa,KAAK,QAEvE,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAEF,CAEA,MAAM2b,GAA0B,IAAIna,GAC9Boa,GAA0B,IAAIte,EAEpC,MAAMue,EAAQ,CAEb,YAAa3a,EAAK,IAAIia,GAASha,EAAK,IAAIga,GAAS/Z,EAAK,IAAI+Z,GAAS1N,EAAK,IAAI0N,GAASW,EAAK,IAAIX,GAASY,EAAK,IAAIZ,GAAU,CAEzH,KAAK,OAAS,CAAEja,EAAIC,EAAIC,EAAIqM,EAAIqO,EAAIC,EAEpC,CAED,IAAK7a,EAAIC,EAAIC,EAAIqM,EAAIqO,EAAIC,EAAK,CAE7B,MAAMC,EAAS,KAAK,OAEpB,OAAAA,EAAQ,CAAC,EAAG,KAAM9a,CAAE,EACpB8a,EAAQ,CAAC,EAAG,KAAM7a,CAAE,EACpB6a,EAAQ,CAAC,EAAG,KAAM5a,CAAE,EACpB4a,EAAQ,CAAC,EAAG,KAAMvO,CAAE,EACpBuO,EAAQ,CAAC,EAAG,KAAMF,CAAE,EACpBE,EAAQ,CAAC,EAAG,KAAMD,CAAE,EAEb,IAEP,CAED,KAAME,EAAU,CAEf,MAAMD,EAAS,KAAK,OAEpB,QAAUptB,EAAI,EAAGA,EAAI,EAAGA,IAEvBotB,EAAQptB,CAAC,EAAG,KAAMqtB,EAAQ,OAAQrtB,CAAC,GAIpC,OAAO,IAEP,CAED,wBAAyBgB,EAAGkZ,EAAmB5a,GAAwB,CAEtE,MAAM8tB,EAAS,KAAK,OACd5pB,EAAKxC,EAAE,SACPssB,EAAM9pB,EAAI,CAAG,EAAE+pB,EAAM/pB,EAAI,CAAC,EAAIgqB,EAAMhqB,EAAI,CAAG,EAAEiqB,EAAMjqB,EAAI,CAAC,EACxDkqB,EAAMlqB,EAAI,CAAG,EAAEmqB,EAAMnqB,EAAI,CAAC,EAAIoqB,EAAMpqB,EAAI,CAAG,EAAEqqB,EAAMrqB,EAAI,CAAC,EACxDsqB,EAAMtqB,EAAI,CAAG,EAAEuqB,EAAMvqB,EAAI,CAAC,EAAIwqB,EAAOxqB,EAAI,EAAI,EAAEyqB,EAAOzqB,EAAI,EAAE,EAC5D0qB,EAAO1qB,EAAI,EAAI,EAAE2qB,EAAO3qB,EAAI,EAAE,EAAI4qB,EAAO5qB,EAAI,EAAI,EAAE6qB,EAAO7qB,EAAI,EAAE,EAQtE,GANA4pB,EAAQ,CAAG,EAAC,cAAeK,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,CAAM,EAAC,UAAS,EACpFd,EAAQ,CAAG,EAAC,cAAeK,EAAMH,EAAKO,EAAMH,EAAKO,EAAOH,EAAKO,EAAOH,CAAM,EAAC,UAAS,EACpFd,EAAQ,CAAG,EAAC,cAAeK,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,CAAM,EAAC,UAAS,EACpFf,EAAQ,CAAG,EAAC,cAAeK,EAAMF,EAAKM,EAAMF,EAAKM,EAAOF,EAAKM,EAAOF,CAAM,EAAC,UAAS,EACpFf,EAAQ,CAAG,EAAC,cAAeK,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,CAAM,EAAC,UAAS,EAEhFlU,IAAqB5a,GAEzB8tB,EAAQ,CAAG,EAAC,cAAeK,EAAMD,EAAKK,EAAMD,EAAKK,EAAOD,EAAMK,EAAOD,CAAM,EAAC,UAAS,UAE1ElU,IAAqB3a,GAEhC6tB,EAAQ,GAAI,cAAeI,EAAKI,EAAKI,EAAMI,GAAO,gBAIlD,OAAM,IAAI,MAAO,uEAAyElU,GAI3F,OAAO,IAEP,CAED,iBAAkBzJ,EAAS,CAE1B,GAAKA,EAAO,iBAAmB,OAEzBA,EAAO,iBAAmB,MAAOA,EAAO,sBAAqB,EAElEsc,GAAU,KAAMtc,EAAO,cAAgB,EAAC,aAAcA,EAAO,iBAEvD,CAEN,MAAMM,EAAWN,EAAO,SAEnBM,EAAS,iBAAmB,MAAOA,EAAS,sBAAqB,EAEtEgc,GAAU,KAAMhc,EAAS,cAAgB,EAAC,aAAcN,EAAO,YAE/D,CAED,OAAO,KAAK,iBAAkBsc,GAE9B,CAED,iBAAkBuB,EAAS,CAE1B,OAAAvB,GAAU,OAAO,IAAK,EAAG,EAAG,CAAC,EAC7BA,GAAU,OAAS,kBACnBA,GAAU,aAAcuB,EAAO,aAExB,KAAK,iBAAkBvB,GAE9B,CAED,iBAAkB5b,EAAS,CAE1B,MAAMic,EAAS,KAAK,OACd1qB,EAASyO,EAAO,OAChBod,EAAY,CAAEpd,EAAO,OAE3B,QAAUnR,EAAI,EAAGA,EAAI,EAAGA,IAIvB,GAFiBotB,EAAQptB,CAAG,EAAC,gBAAiB0C,CAAM,EAEpC6rB,EAEf,MAAO,GAMT,MAAO,EAEP,CAED,cAAe5d,EAAM,CAEpB,MAAMyc,EAAS,KAAK,OAEpB,QAAUptB,EAAI,EAAGA,EAAI,EAAGA,IAAO,CAE9B,MAAMoR,EAAQgc,EAAQptB,GAQtB,GAJAgtB,GAAU,EAAI5b,EAAM,OAAO,EAAI,EAAIT,EAAI,IAAI,EAAIA,EAAI,IAAI,EACvDqc,GAAU,EAAI5b,EAAM,OAAO,EAAI,EAAIT,EAAI,IAAI,EAAIA,EAAI,IAAI,EACvDqc,GAAU,EAAI5b,EAAM,OAAO,EAAI,EAAIT,EAAI,IAAI,EAAIA,EAAI,IAAI,EAElDS,EAAM,gBAAiB4b,EAAS,EAAK,EAEzC,MAAO,EAIR,CAED,MAAO,EAEP,CAED,cAAenc,EAAQ,CAEtB,MAAMuc,EAAS,KAAK,OAEpB,QAAUptB,EAAI,EAAGA,EAAI,EAAGA,IAEvB,GAAKotB,EAAQptB,CAAG,EAAC,gBAAiB6Q,CAAK,EAAK,EAE3C,MAAO,GAMT,MAAO,EAEP,CAED,OAAQ,CAEP,OAAO,IAAI,KAAK,YAAa,EAAC,KAAM,IAAI,CAExC,CAEF,CAEA,SAAS2d,IAAiB,CAEzB,IAAI3mB,EAAU,KACV4mB,EAAc,GACdC,EAAgB,KAChBC,EAAY,KAEhB,SAASC,EAAkBC,EAAMC,EAAQ,CAExCJ,EAAeG,EAAMC,GAErBH,EAAY9mB,EAAQ,sBAAuB+mB,EAE3C,CAED,MAAO,CAEN,MAAO,UAAY,CAEbH,IAAgB,IAChBC,IAAkB,OAEvBC,EAAY9mB,EAAQ,sBAAuB+mB,GAE3CH,EAAc,GAEd,EAED,KAAM,UAAY,CAEjB5mB,EAAQ,qBAAsB8mB,GAE9BF,EAAc,EAEd,EAED,iBAAkB,SAAWhgB,EAAW,CAEvCigB,EAAgBjgB,CAEhB,EAED,WAAY,SAAW9N,EAAQ,CAE9BkH,EAAUlH,CAEV,CAEH,CAEA,CAEA,SAASouB,GAAiBC,EAAK,CAE9B,MAAMC,EAAU,IAAI,QAEpB,SAASC,EAAczsB,EAAW0sB,EAAa,CAE9C,MAAMpvB,EAAQ0C,EAAU,MAClB2sB,EAAQ3sB,EAAU,MAClB8N,EAAOxQ,EAAM,WAEbsvB,EAASL,EAAG,eAElBA,EAAG,WAAYG,EAAYE,GAC3BL,EAAG,WAAYG,EAAYpvB,EAAOqvB,CAAK,EAEvC3sB,EAAU,iBAAgB,EAE1B,IAAIhD,EAEJ,GAAKM,aAAiB,aAErBN,EAAOuvB,EAAG,cAECjvB,aAAiB,YAEvB0C,EAAU,yBAEdhD,EAAOuvB,EAAG,WAIVvvB,EAAOuvB,EAAG,uBAIAjvB,aAAiB,WAE5BN,EAAOuvB,EAAG,cAECjvB,aAAiB,YAE5BN,EAAOuvB,EAAG,qBAECjvB,aAAiB,WAE5BN,EAAOuvB,EAAG,YAECjvB,aAAiB,UAE5BN,EAAOuvB,EAAG,aAECjvB,aAAiB,WAE5BN,EAAOuvB,EAAG,sBAECjvB,aAAiB,kBAE5BN,EAAOuvB,EAAG,kBAIV,OAAM,IAAI,MAAO,0DAA4DjvB,GAI9E,MAAO,CACN,OAAQsvB,EACR,KAAM5vB,EACN,gBAAiBM,EAAM,kBACvB,QAAS0C,EAAU,QACnB,KAAM8N,CACT,CAEE,CAED,SAAS+e,EAAcD,EAAQ5sB,EAAW0sB,EAAa,CAEtD,MAAMpvB,EAAQ0C,EAAU,MAClB8sB,EAAc9sB,EAAU,aACxB+sB,EAAe/sB,EAAU,aAW/B,GATAusB,EAAG,WAAYG,EAAYE,GAEtBE,EAAY,QAAU,IAAOC,EAAa,SAAW,GAGzDR,EAAG,cAAeG,EAAY,EAAGpvB,CAAK,EAIlCyvB,EAAa,SAAW,EAAI,CAEhC,QAAUxvB,EAAI,EAAGC,EAAIuvB,EAAa,OAAQxvB,EAAIC,EAAGD,IAAO,CAEvD,MAAMyvB,EAAQD,EAAcxvB,GAE5BgvB,EAAG,cAAeG,EAAYM,EAAM,MAAQ1vB,EAAM,kBACjDA,EAAO0vB,EAAM,MAAOA,EAAM,KAAK,CAEhC,CAEDhtB,EAAU,kBAAiB,CAE3B,CAGI8sB,EAAY,QAAU,KAE1BP,EAAG,cAAeG,EAAYI,EAAY,OAASxvB,EAAM,kBACxDA,EAAOwvB,EAAY,OAAQA,EAAY,KAAK,EAE7CA,EAAY,MAAQ,IAIrB9sB,EAAU,iBAAgB,CAE1B,CAID,SAASitB,EAAKjtB,EAAY,CAEzB,OAAKA,EAAU,+BAA+BA,EAAYA,EAAU,MAE7DwsB,EAAQ,IAAKxsB,EAEpB,CAED,SAASktB,EAAQltB,EAAY,CAEvBA,EAAU,+BAA+BA,EAAYA,EAAU,MAEpE,MAAMsF,EAAOknB,EAAQ,IAAKxsB,CAAS,EAE9BsF,IAEJinB,EAAG,aAAcjnB,EAAK,QAEtBknB,EAAQ,OAAQxsB,GAIjB,CAED,SAAS8J,EAAQ9J,EAAW0sB,EAAa,CAExC,GAAK1sB,EAAU,oBAAsB,CAEpC,MAAMmtB,EAASX,EAAQ,IAAKxsB,CAAS,GAEhC,CAAEmtB,GAAUA,EAAO,QAAUntB,EAAU,UAE3CwsB,EAAQ,IAAKxsB,EAAW,CACvB,OAAQA,EAAU,OAClB,KAAMA,EAAU,KAChB,gBAAiBA,EAAU,YAC3B,QAASA,EAAU,OACxB,GAIG,MAEA,CAEIA,EAAU,+BAA+BA,EAAYA,EAAU,MAEpE,MAAMsF,EAAOknB,EAAQ,IAAKxsB,CAAS,EAEnC,GAAKsF,IAAS,OAEbknB,EAAQ,IAAKxsB,EAAWysB,EAAczsB,EAAW0sB,CAAU,WAEhDpnB,EAAK,QAAUtF,EAAU,QAAU,CAE9C,GAAKsF,EAAK,OAAStF,EAAU,MAAM,WAElC,MAAM,IAAI,MAAO,yJAIlB6sB,EAAcvnB,EAAK,OAAQtF,EAAW0sB,CAAU,EAEhDpnB,EAAK,QAAUtF,EAAU,OAEzB,CAED,CAED,MAAO,CAEN,IAAKitB,EACL,OAAQC,EACR,OAAQpjB,CAEV,CAEA,CAEA,MAAMsjB,WAAsB1N,EAAe,CAE1C,YAAa7X,EAAQ,EAAGC,EAAS,EAAGid,EAAgB,EAAGC,EAAiB,EAAI,CAE3E,QAEA,KAAK,KAAO,gBAEZ,KAAK,WAAa,CACjB,MAAOnd,EACP,OAAQC,EACR,cAAeid,EACf,eAAgBC,CACnB,EAEE,MAAMqI,EAAaxlB,EAAQ,EACrBylB,EAAcxlB,EAAS,EAEvB4d,EAAQ,KAAK,MAAOX,CAAa,EACjCY,EAAQ,KAAK,MAAOX,CAAc,EAElCiB,EAASP,EAAQ,EACjBQ,EAASP,EAAQ,EAEjB4H,EAAgB1lB,EAAQ6d,EACxB8H,EAAiB1lB,EAAS6d,EAI1B3D,EAAU,CAAA,EACVmD,EAAW,CAAA,EACXrD,EAAU,CAAA,EACVsD,EAAM,CAAA,EAEZ,QAAUiB,EAAK,EAAGA,EAAKH,EAAQG,IAAQ,CAEtC,MAAM,EAAIA,EAAKmH,EAAiBF,EAEhC,QAAUhH,EAAK,EAAGA,EAAKL,EAAQK,IAAQ,CAEtC,MAAM7nB,EAAI6nB,EAAKiH,EAAgBF,EAE/BlI,EAAS,KAAM1mB,EAAG,CAAE,EAAG,CAAC,EAExBqjB,EAAQ,KAAM,EAAG,EAAG,CAAC,EAErBsD,EAAI,KAAMkB,EAAKZ,GACfN,EAAI,KAAM,EAAMiB,EAAKV,CAAO,CAE5B,CAED,CAED,QAAUU,EAAK,EAAGA,EAAKV,EAAOU,IAE7B,QAAUC,EAAK,EAAGA,EAAKZ,EAAOY,IAAQ,CAErC,MAAMpnB,EAAIonB,EAAKL,EAASI,EAClBlnB,EAAImnB,EAAKL,GAAWI,EAAK,GACzBlmB,EAAMmmB,EAAK,EAAML,GAAWI,EAAK,GACjC9jB,EAAM+jB,EAAK,EAAML,EAASI,EAEhCrE,EAAQ,KAAM9iB,EAAGC,EAAGoD,CAAC,EACrByf,EAAQ,KAAM7iB,EAAGgB,EAAGoC,CAAC,CAErB,CAIF,KAAK,SAAUyf,GACf,KAAK,aAAc,WAAY,IAAI9C,GAAwBiG,EAAU,CAAC,GACtE,KAAK,aAAc,SAAU,IAAIjG,GAAwB4C,EAAS,CAAC,GACnE,KAAK,aAAc,KAAM,IAAI5C,GAAwBkG,EAAK,CAAC,EAE3D,CAED,KAAM7e,EAAS,CAEd,aAAM,KAAMA,GAEZ,KAAK,WAAa,OAAO,OAAQ,CAAA,EAAIA,EAAO,YAErC,IAEP,CAED,OAAO,SAAUjB,EAAO,CAEvB,OAAO,IAAI8nB,GAAe9nB,EAAK,MAAOA,EAAK,OAAQA,EAAK,cAAeA,EAAK,eAE5E,CAEF,CAEA,IAAImoB,GAAqB;AAAA;AAAA,QAErBC,GAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE1BC,GAAoB;AAAA;AAAA,QAEpBC,GAAyB;AAAA;AAAA,QAEzBC,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAErBC,GAA0B;AAAA;AAAA,QAE1BC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEjBC,GAAsB;AAAA;AAAA;AAAA,QAEtBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEvBC,GAAkB;AAAA;AAAA,QAElBC,GAAe;AAAA;AAAA;AAAA,QAEfC,GAAqB;AAAA;AAAA;AAAA,QAErBC,GAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAERC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEvBC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE3BC,GAAgC;AAAA;AAAA;AAAA,QAEhCC,GAA8B;AAAA;AAAA,QAE9BC,GAAyB;AAAA;AAAA,QAEzBC,GAAiB;AAAA;AAAA;AAAA;AAAA,QAEjBC,GAAsB;AAAA;AAAA;AAAA;AAAA,QAEtBC,GAAoB;AAAA;AAAA;AAAA;AAAA,QAEpBC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEfC,GAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAETC,GAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE9BC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEvBC,GAA8B;AAAA;AAAA;AAAA;AAAA,QAE9BC,GAAyB;AAAA;AAAA,QAEzBC,GAAuB;AAAA;AAAA;AAAA,QAEvBC,GAA4B;AAAA;AAAA,QAE5BC,GAAsB,sDAEtBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAE3BC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAElBC,GAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE9BC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEvBC,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAErBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEhBC,GAAa;AAAA;AAAA,QAEbC,GAAkB;AAAA;AAAA,QAElBC,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEfC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEpBC,GAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAE5BC,GAAyB;AAAA;AAAA;AAAA,QAEzBC,GAA0B;AAAA;AAAA,+CAE1BC,GAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAE/BC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEpBC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEhCC,GAAuB;AAAA,2CAEvBC,GAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAE5BC,GAAwB;AAAA;AAAA;AAAA;AAAA,+CAExBC,GAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAE7BC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE3BC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhCC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE7BC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEnBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEjBC,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEZC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEtB,MAAMC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/worker-wrapper-c2317b92.js b/assets/worker-wrapper-c2317b92.js new file mode 100644 index 000000000..e780b6a10 --- /dev/null +++ b/assets/worker-wrapper-c2317b92.js @@ -0,0 +1,65 @@ +class Ps{constructor(){this._listeners={}}addEventListener(e,r){const n=this._listeners;return n[e]===void 0&&(n[e]=[]),n[e].indexOf(r)===-1&&n[e].push(r),this}removeEventListener(e,r){if(this._listeners===void 0)return this;const s=this._listeners[e];if(s!==void 0){const a=s.indexOf(r);a!==-1&&s.splice(a,1)}return this}dispatchEvent(e){if(this._listeners===void 0)return this;const n=this._listeners[e.type];if(n!==void 0){const s=n.slice(0);for(let a=0,c=s.length;ar.getParent())}listChildEdges(e){return Array.from(this._parentEdges.get(e)||this._emptySet)}listChildren(e){return this.listChildEdges(e).map(r=>r.getChild())}disconnectParents(e,r){let n=this.listParentEdges(e);return r&&(n=n.filter(s=>r(s.getParent()))),n.forEach(s=>s.dispose()),this}createEdge(e,r,n,s){return this._registerEdge(new gr(e,r,n,s))}_registerEdge(e){this._edges.add(e);const r=e.getParent();this._parentEdges.has(r)||this._parentEdges.set(r,new Set),this._parentEdges.get(r).add(e);const n=e.getChild();return this._childEdges.has(n)||this._childEdges.set(n,new Set),this._childEdges.get(n).add(e),e.addEventListener("dispose",()=>this._removeEdge(e)),e}_removeEdge(e){return this._edges.delete(e),this._parentEdges.get(e.getParent()).delete(e),this._childEdges.get(e.getChild()).delete(e),this}}function Br(){return Br=Object.assign||function(t){for(var e=1;es.dispose()),this[ur].add(n),r[n]=a}else r[n]=s}return r}isOnGraph(e){return this.graph===e.graph}isDisposed(){return this._disposed}dispose(){this._disposed||(this.graph.listChildEdges(this).forEach(e=>e.dispose()),this.graph.disconnectParents(this),this._disposed=!0,this.dispatchEvent({type:"dispose"}))}detach(){return this.graph.disconnectParents(this),this}swap(e,r){for(const n in this[Te]){const s=this[Te][n];if(xs(s)){const a=s;a.getChild()===e&&this.setRef(n,r,a.getAttributes())}else if(Dr(s)){const c=s.find(l=>l.getChild()===e);if(c){const l=c.getAttributes();this.removeRef(n,e).addRef(n,r,l)}}else if($r(s)){const a=s;for(const c in a){const l=a[c];l.getChild()===e&&this.setRefMap(n,c,r,l.getAttributes())}}}return this}get(e){return this[Te][e]}set(e,r){return this[Te][e]=r,this.dispatchEvent({type:"change",attribute:e})}getRef(e){const r=this[Te][e];return r?r.getChild():null}setRef(e,r,n){if(this[ur].has(e))throw new Error(`Cannot overwrite immutable attribute, "${e}".`);const s=this[Te][e];if(s&&s.dispose(),!r)return this;const a=this.graph.createEdge(e,this,r,n);return a.addEventListener("dispose",()=>{delete this[Te][e],this.dispatchEvent({type:"change",attribute:e})}),this[Te][e]=a,this.dispatchEvent({type:"change",attribute:e})}listRefs(e){return this[Te][e].map(n=>n.getChild())}addRef(e,r,n){const s=this.graph.createEdge(e,this,r,n),a=this[Te][e];return a.push(s),s.addEventListener("dispose",()=>{let c;for(;(c=a.indexOf(s))!==-1;)a.splice(c,1);this.dispatchEvent({type:"change",attribute:e})}),this.dispatchEvent({type:"change",attribute:e})}removeRef(e,r){return this[Te][e].filter(a=>a.getChild()===r).forEach(a=>a.dispose()),this}listRefMapKeys(e){return Object.keys(this[Te][e])}listRefMapValues(e){return Object.values(this[Te][e]).map(r=>r.getChild())}getRefMap(e,r){const n=this[Te][e];return n[r]?n[r].getChild():null}setRefMap(e,r,n,s){const a=this[Te][e],c=a[r];if(c&&c.dispose(),!n)return this;s=Object.assign(s||{},{key:r});const l=this.graph.createEdge(e,this,n,Br({},s,{key:r}));return l.addEventListener("dispose",()=>{delete a[r],this.dispatchEvent({type:"change",attribute:e,key:r})}),a[r]=l,this.dispatchEvent({type:"change",attribute:e,key:r})}dispatchEvent(e){return super.dispatchEvent(Br({},e,{target:this})),this.graph.dispatchEvent(Br({},e,{target:this,type:`node:${e.type}`})),this}}const Ca="v3.8.0",mr="@glb.bin";var W,bn,rt,ut,Kt;(function(t){t.ACCESSOR="Accessor",t.ANIMATION="Animation",t.ANIMATION_CHANNEL="AnimationChannel",t.ANIMATION_SAMPLER="AnimationSampler",t.BUFFER="Buffer",t.CAMERA="Camera",t.MATERIAL="Material",t.MESH="Mesh",t.PRIMITIVE="Primitive",t.PRIMITIVE_TARGET="PrimitiveTarget",t.NODE="Node",t.ROOT="Root",t.SCENE="Scene",t.SKIN="Skin",t.TEXTURE="Texture",t.TEXTURE_INFO="TextureInfo"})(W||(W={})),function(t){t.INTERLEAVED="interleaved",t.SEPARATE="separate"}(bn||(bn={})),function(t){t.ARRAY_BUFFER="ARRAY_BUFFER",t.ELEMENT_ARRAY_BUFFER="ELEMENT_ARRAY_BUFFER",t.INVERSE_BIND_MATRICES="INVERSE_BIND_MATRICES",t.OTHER="OTHER",t.SPARSE="SPARSE"}(rt||(rt={})),function(t){t[t.R=4096]="R",t[t.G=256]="G",t[t.B=16]="B",t[t.A=1]="A"}(ut||(ut={})),function(t){t.GLTF="GLTF",t.GLB="GLB"}(Kt||(Kt={}));const An={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};var gn,Ts=typeof Float32Array<"u"?Float32Array:Array;function us(t){return Math.hypot(t[0],t[1],t[2])}function vh(t,e,r){var n=e[0],s=e[1],a=e[2],c=r[3]*n+r[7]*s+r[11]*a+r[15];return t[0]=(r[0]*n+r[4]*s+r[8]*a+r[12])/(c=c||1),t[1]=(r[1]*n+r[5]*s+r[9]*a+r[13])/c,t[2]=(r[2]*n+r[6]*s+r[10]*a+r[14])/c,t}function yh(t){const e={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]},r=t.propertyType===W.NODE?[t]:t.listChildren();for(const n of r)n.traverse(s=>{const a=s.getMesh();if(!a)return;const c=xh(a,s.getWorldMatrix());Es(c.min,e),Es(c.max,e)});return e}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)}),gn=new Ts(3),Ts!=Float32Array&&(gn[0]=0,gn[1]=0,gn[2]=0);function xh(t,e){const r={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]};for(const n of t.listPrimitives()){const s=n.getAttribute("POSITION");if(!s)continue;let a=[0,0,0],c=[0,0,0];for(let l=0;l"u"){const r=atob(e.split(",")[1]),n=new Uint8Array(r.length);for(let s=0;s=0;return Buffer.from(r,n?"base64":"utf8")}}static encodeText(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):Buffer.from(e)}static decodeText(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Buffer.from(e).toString("utf8")}static concat(e){let r=0;for(const a of e)r+=a.byteLength;const n=new Uint8Array(r);let s=0;for(const a of e)n.set(a,s),s+=a.byteLength;return n}static pad(e,r=0){const n=this.padNumber(e.byteLength);if(n===e.byteLength)return e;const s=new Uint8Array(n);if(s.set(e),r!==0)for(let a=e.byteLength;a>16&255)/255,n[1]=(e>>8&255)/255,n[2]=(255&e)/255,this.convertSRGBToLinear(r,r)}static factorToHex(e){const r=[...e],[n,s,a]=this.convertLinearToSRGB(e,r);return 255*n<<16^255*s<<8^255*a<<0}static convertSRGBToLinear(e,r){const n=e,s=r;for(let a=0;a<3;a++)s[a]=n[a]<.04045?.0773993808*n[a]:Math.pow(.9478672986*n[a]+.0521327014,2.4);return r}static convertLinearToSRGB(e,r){const n=e,s=r;for(let a=0;a<3;a++)s[a]=n[a]<.0031308?12.92*n[a]:1.055*Math.pow(n[a],.41666)-.055;return r}},Na=class Fa{match(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10}getSize(e){const r=new DataView(e.buffer,e.byteOffset);return oe.decodeText(e.slice(12,16))===Fa.PNG_FRIED_CHUNK_NAME?[r.getUint32(32,!1),r.getUint32(36,!1)]:[r.getUint32(16,!1),r.getUint32(20,!1)]}getChannels(e){return 4}};Na.PNG_FRIED_CHUNK_NAME="CgBI";let vt=class{static registerFormat(e,r){this.impls[e]=r}static getMimeType(e){for(const r in this.impls)if(this.impls[r].match(e))return r;return null}static getSize(e,r){return this.impls[r]?this.impls[r].getSize(e):null}static getChannels(e,r){return this.impls[r]?this.impls[r].getChannels(e):null}static getVRAMByteLength(e,r){if(!this.impls[r])return null;if(this.impls[r].getVRAMByteLength)return this.impls[r].getVRAMByteLength(e);let n=0;const s=this.getSize(e,r);if(!s)return null;for(;s[0]>1||s[1]>1;)n+=s[0]*s[1]*4,s[0]=Math.max(Math.floor(s[0]/2),1),s[1]=Math.max(Math.floor(s[1]/2),1);return n+=4,n}static mimeTypeToExtension(e){return e==="image/jpeg"?"jpg":e.split("/").pop()}static extensionToMimeType(e){return e==="jpg"?"image/jpeg":e?`image/${e}`:""}};function Th(t,e){if(e>t.byteLength)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(t.getUint8(e)!==255)throw new TypeError("Invalid JPG, marker table corrupted");return t}vt.impls={"image/jpeg":new class{match(t){return t.length>=3&&t[0]===255&&t[1]===216&&t[2]===255}getSize(t){let e,r,n=new DataView(t.buffer,t.byteOffset+4);for(;n.byteLength;){if(e=n.getUint16(0,!1),Th(n,e),r=n.getUint8(e+1),r===192||r===193||r===194)return[n.getUint16(e+7,!1),n.getUint16(e+5,!1)];n=new DataView(t.buffer,n.byteOffset+e+2)}throw new TypeError("Invalid JPG, no size found")}getChannels(t){return 3}},"image/png":new Na};let vr=class{static basename(e){const r=e.split(/[\\/]/).pop();return r.substring(0,r.lastIndexOf("."))}static extension(e){if(e.startsWith("data:image/")){const r=e.match(/data:(image\/\w+)/)[1];return vt.mimeTypeToExtension(r)}return e.startsWith("data:model/gltf+json")?"gltf":e.startsWith("data:model/gltf-binary")?"glb":e.startsWith("data:application/")?"bin":e.split(/[\\/]/).pop().split(/[.]/).pop()}};function ea(t){return Object.prototype.toString.call(t)==="[object Object]"}function Xt(t){if(ea(t)===!1)return!1;const e=t.constructor;if(e===void 0)return!0;const r=e.prototype;return ea(r)!==!1&&Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")!==!1}var hs,ws;(function(t){t[t.SILENT=4]="SILENT",t[t.ERROR=3]="ERROR",t[t.WARN=2]="WARN",t[t.INFO=1]="INFO",t[t.DEBUG=0]="DEBUG"})(ws||(ws={}));let Jt=class Pr{constructor(e){this.verbosity=void 0,this.verbosity=e}debug(e){this.verbosity<=Pr.Verbosity.DEBUG&&console.debug(e)}info(e){this.verbosity<=Pr.Verbosity.INFO&&console.info(e)}warn(e){this.verbosity<=Pr.Verbosity.WARN&&console.warn(e)}error(e){this.verbosity<=Pr.Verbosity.ERROR&&console.error(e)}};function Eh(t,e,r){var n=e[0],s=e[1],a=e[2],c=e[3],l=e[4],u=e[5],d=e[6],g=e[7],T=e[8],E=e[9],M=e[10],A=e[11],N=e[12],m=e[13],I=e[14],x=e[15],_=r[0],b=r[1],F=r[2],D=r[3];return t[0]=_*n+b*l+F*T+D*N,t[1]=_*s+b*u+F*E+D*m,t[2]=_*a+b*d+F*M+D*I,t[3]=_*c+b*g+F*A+D*x,t[4]=(_=r[4])*n+(b=r[5])*l+(F=r[6])*T+(D=r[7])*N,t[5]=_*s+b*u+F*E+D*m,t[6]=_*a+b*d+F*M+D*I,t[7]=_*c+b*g+F*A+D*x,t[8]=(_=r[8])*n+(b=r[9])*l+(F=r[10])*T+(D=r[11])*N,t[9]=_*s+b*u+F*E+D*m,t[10]=_*a+b*d+F*M+D*I,t[11]=_*c+b*g+F*A+D*x,t[12]=(_=r[12])*n+(b=r[13])*l+(F=r[14])*T+(D=r[15])*N,t[13]=_*s+b*u+F*E+D*m,t[14]=_*a+b*d+F*M+D*I,t[15]=_*c+b*g+F*A+D*x,t}hs=Jt,Jt.Verbosity=ws,Jt.DEFAULT_INSTANCE=new hs(hs.Verbosity.INFO);let Ne=class Ms{static identity(e){return e}static eq(e,r,n=1e-5){if(e.length!==r.length)return!1;for(let s=0;sn)return!1;return!0}static decodeNormalizedInt(e,r){switch(r){case 5126:return e;case 5123:return e/65535;case 5121:return e/255;case 5122:return Math.max(e/32767,-1);case 5120:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}static denormalize(e,r){return Ms.decodeNormalizedInt(e,r)}static encodeNormalizedInt(e,r){switch(r){case 5126:return e;case 5123:return Math.round(65535*e);case 5121:return Math.round(255*e);case 5122:return Math.round(32767*e);case 5120:return Math.round(127*e);default:throw new Error("Invalid component type.")}}static normalize(e,r){return Ms.encodeNormalizedInt(e,r)}static decompose(e,r,n,s){let a=us([e[0],e[1],e[2]]);const c=us([e[4],e[5],e[6]]),l=us([e[8],e[9],e[10]]);var u,d,g,T,E,M,A,N,m,I,x,_,b,F,D,V,B;((d=(u=e)[0])*(A=u[5])-(g=u[1])*(M=u[4]))*((_=u[10])*(B=u[15])-(b=u[11])*(V=u[14]))-(d*(N=u[6])-(T=u[2])*M)*((x=u[9])*B-b*(D=u[13]))+(d*(m=u[7])-(E=u[3])*M)*(x*V-_*D)+(g*N-T*A)*((I=u[8])*B-b*(F=u[12]))-(g*m-E*A)*(I*V-_*F)+(T*m-E*N)*(I*D-x*F)<0&&(a=-a),r[0]=e[12],r[1]=e[13],r[2]=e[14];const U=e.slice(),z=1/a,G=1/c,K=1/l;U[0]*=z,U[1]*=z,U[2]*=z,U[4]*=G,U[5]*=G,U[6]*=G,U[8]*=K,U[9]*=K,U[10]*=K,function(H,k){var q=new Ts(3);(function(St,qe){var yt=qe[4],He=qe[5],It=qe[6],Jr=qe[8],rr=qe[9],Vn=qe[10];St[0]=Math.hypot(qe[0],qe[1],qe[2]),St[1]=Math.hypot(yt,He,It),St[2]=Math.hypot(Jr,rr,Vn)})(q,k);var ue=1/q[0],re=1/q[1],ve=1/q[2],ge=k[0]*ue,ye=k[1]*re,xe=k[2]*ve,_e=k[4]*ue,ke=k[5]*re,be=k[6]*ve,Ie=k[8]*ue,Qe=k[9]*re,at=k[10]*ve,Je=ge+ke+at,Ee=0;Je>0?(Ee=2*Math.sqrt(Je+1),H[3]=.25*Ee,H[0]=(be-Qe)/Ee,H[1]=(Ie-xe)/Ee,H[2]=(ye-_e)/Ee):ge>ke&&ge>at?(Ee=2*Math.sqrt(1+ge-ke-at),H[3]=(be-Qe)/Ee,H[0]=.25*Ee,H[1]=(ye+_e)/Ee,H[2]=(Ie+xe)/Ee):ke>at?(Ee=2*Math.sqrt(1+ke-ge-at),H[3]=(Ie-xe)/Ee,H[0]=(ye+_e)/Ee,H[1]=.25*Ee,H[2]=(be+Qe)/Ee):(Ee=2*Math.sqrt(1+at-ge-ke),H[3]=(ye-_e)/Ee,H[0]=(Ie+xe)/Ee,H[1]=(be+Qe)/Ee,H[2]=.25*Ee)}(n,U),s[0]=a,s[1]=c,s[2]=l}static compose(e,r,n,s){const a=s,c=r[0],l=r[1],u=r[2],d=r[3],g=c+c,T=l+l,E=u+u,M=c*g,A=c*T,N=c*E,m=l*T,I=l*E,x=u*E,_=d*g,b=d*T,F=d*E,D=n[0],V=n[1],B=n[2];return a[0]=(1-(m+x))*D,a[1]=(A+F)*D,a[2]=(N-b)*D,a[3]=0,a[4]=(A-F)*V,a[5]=(1-(M+x))*V,a[6]=(I+_)*V,a[7]=0,a[8]=(N+b)*B,a[9]=(I-_)*B,a[10]=(1-(M+m))*B,a[11]=0,a[12]=e[0],a[13]=e[1],a[14]=e[2],a[15]=1,a}};function wh(t,e){if(!!t!=!!e)return!1;const r=t.getChild(),n=e.getChild();return r===n||r.equals(n)}function Mh(t,e){if(!!t!=!!e||t.length!==e.length)return!1;for(let r=0;rt,Ah=new Set;let Us=class extends ks{constructor(e,r=""){super(e),this[Te].name=r,this.init(),this.dispatchEvent({type:"create"})}getGraph(){return this.graph}getDefaults(){return Object.assign(super.getDefaults(),{name:"",extras:{}})}set(e,r){return Array.isArray(r)&&(r=r.slice()),super.set(e,r)}getName(){return this.get("name")}setName(e){return this.set("name",e)}getExtras(){return this.get("extras")}setExtras(e){return this.set("extras",e)}clone(){return new this.constructor(this.graph).copy(this,bt)}copy(e,r=bt){for(const n in this[Te]){const s=this[Te][n];if(s instanceof gr)this[ur].has(n)||s.dispose();else if(Dr(s))for(const a of s)a.dispose();else if($r(s))for(const a in s)s[a].dispose()}for(const n in e[Te]){const s=this[Te][n],a=e[Te][n];if(a instanceof gr)this[ur].has(n)?s.getChild().copy(r(a.getChild()),r):this.setRef(n,r(a.getChild()),a.getAttributes());else if(Dr(a))for(const c of a)this.addRef(n,r(c.getChild()),c.getAttributes());else if($r(a))for(const c in a){const l=a[c];this.setRefMap(n,c,r(l.getChild()),l.getAttributes())}else this[Te][n]=Xt(a)?JSON.parse(JSON.stringify(a)):Array.isArray(a)||a instanceof ArrayBuffer||ArrayBuffer.isView(a)?a.slice():a}return this}equals(e,r=Ah){if(this===e)return!0;if(this.propertyType!==e.propertyType)return!1;for(const n in this[Te]){if(r.has(n))continue;const s=this[Te][n],a=e[Te][n];if(xs(s)||xs(a)){if(!wh(s,a))return!1}else if(Dr(s)||Dr(a)){if(!Mh(s,a))return!1}else if($r(s)||$r(a)){if(!_h(s,a))return!1}else if(Xt(s)||Xt(a)){if(!Da(s,a))return!1}else if(Sn(s)||Sn(a)){if(!Oa(s,a))return!1}else if(s!==a)return!1}return!0}detach(){return this.graph.disconnectParents(this,e=>e.propertyType!=="Root"),this}listParents(){return this.graph.listParents(this)}},Ke=class extends Us{getDefaults(){return Object.assign(super.getDefaults(),{extensions:{}})}getExtension(e){return this.getRefMap("extensions",e)}setExtension(e,r){return r&&r.t(this),this.setRefMap("extensions",e,r)}listExtensions(){return this.listRefMapValues("extensions")}},te=class Ae extends Ke{constructor(...e){super(...e),this.i=Ne.identity,this.o=Ne.identity}init(){this.propertyType=W.ACCESSOR}getDefaults(){return Object.assign(super.getDefaults(),{array:null,type:Ae.Type.SCALAR,componentType:Ae.ComponentType.FLOAT,normalized:!1,sparse:!1,buffer:null})}copy(e,r=bt){return super.copy(e,r),this.i=e.i,this.o=e.o,this}static getElementSize(e){switch(e){case Ae.Type.SCALAR:return 1;case Ae.Type.VEC2:return 2;case Ae.Type.VEC3:return 3;case Ae.Type.VEC4:case Ae.Type.MAT2:return 4;case Ae.Type.MAT3:return 9;case Ae.Type.MAT4:return 16;default:throw new Error("Unexpected type: "+e)}}static getComponentSize(e){switch(e){case Ae.ComponentType.BYTE:case Ae.ComponentType.UNSIGNED_BYTE:return 1;case Ae.ComponentType.SHORT:case Ae.ComponentType.UNSIGNED_SHORT:return 2;case Ae.ComponentType.UNSIGNED_INT:case Ae.ComponentType.FLOAT:return 4;default:throw new Error("Unexpected component type: "+e)}}getMinNormalized(e){const r=this.getElementSize();this.getMin(e);for(let n=0;nNe.decodeNormalizedInt(r,this.get("componentType")),this.i=r=>Ne.encodeNormalizedInt(r,this.get("componentType"))):(this.o=Ne.identity,this.i=Ne.identity),this}getScalar(e){const r=this.getElementSize();return this.o(this.get("array")[e*r])}setScalar(e,r){return this.get("array")[e*this.getElementSize()]=this.i(r),this}getElement(e,r){const n=this.getElementSize(),s=this.get("array");for(let a=0;ae.u=null),this}removeChild(e){return this.removeRef("children",e)}listChildren(){return this.listRefs("children")}getParent(){return this.u?this.u:this.listParents().find(e=>e.propertyType===W.SCENE)||null}getParentNode(){return this.u}getMesh(){return this.getRef("mesh")}setMesh(e){return this.setRef("mesh",e)}getCamera(){return this.getRef("camera")}setCamera(e){return this.setRef("camera",e)}getSkin(){return this.getRef("skin")}setSkin(e){return this.setRef("skin",e)}getWeights(){return this.get("weights")}setWeights(e){return this.set("weights",e)}traverse(e){e(this);for(const r of this.listChildren())r.traverse(e);return this}},Hr=class Va extends Ke{init(){this.propertyType=W.PRIMITIVE}getDefaults(){return Object.assign(super.getDefaults(),{mode:Va.Mode.TRIANGLES,material:null,indices:null,attributes:{},targets:[]})}getIndices(){return this.getRef("indices")}setIndices(e){return this.setRef("indices",e,{usage:rt.ELEMENT_ARRAY_BUFFER})}getAttribute(e){return this.getRefMap("attributes",e)}setAttribute(e,r){return this.setRefMap("attributes",e,r,{usage:rt.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}getMaterial(){return this.getRef("material")}setMaterial(e){return this.setRef("material",e)}getMode(){return this.get("mode")}setMode(e){return this.set("mode",e)}listTargets(){return this.listRefs("targets")}addTarget(e){return this.addRef("targets",e)}removeTarget(e){return this.removeRef("targets",e)}};Hr.Mode={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};let Ih=class extends Us{init(){this.propertyType=W.PRIMITIVE_TARGET}getDefaults(){return Object.assign(super.getDefaults(),{attributes:{}})}getAttribute(e){return this.getRefMap("attributes",e)}setAttribute(e,r){return this.setRefMap("attributes",e,r,{usage:rt.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}};function Ye(){return Ye=Object.assign?Object.assign.bind():function(t){for(var e=1;ee.h.delete(this)),this}removeChild(e){return this.removeRef("children",e)}listChildren(){return this.listRefs("children")}traverse(e){for(const r of this.listChildren())r.traverse(e);return this}},Ga=class extends Ke{init(){this.propertyType=W.SKIN}getDefaults(){return Object.assign(super.getDefaults(),{skeleton:null,inverseBindMatrices:null,joints:[]})}getSkeleton(){return this.getRef("skeleton")}setSkeleton(e){return this.setRef("skeleton",e)}getInverseBindMatrices(){return this.getRef("inverseBindMatrices")}setInverseBindMatrices(e){return this.setRef("inverseBindMatrices",e,{usage:rt.INVERSE_BIND_MATRICES})}addJoint(e){return this.addRef("joints",e)}removeJoint(e){return this.removeRef("joints",e)}listJoints(){return this.listRefs("joints")}},qa=class extends Ke{init(){this.propertyType=W.TEXTURE}getDefaults(){return Object.assign(super.getDefaults(),{image:null,mimeType:"",uri:""})}getMimeType(){return this.get("mimeType")||vt.extensionToMimeType(vr.extension(this.get("uri")))}setMimeType(e){return this.set("mimeType",e)}getURI(){return this.get("uri")}setURI(e){this.set("uri",e);const r=vt.extensionToMimeType(vr.extension(e));return r&&this.set("mimeType",r),this}getImage(){return this.get("image")}setImage(e){return this.set("image",oe.assertView(e))}getSize(){const e=this.get("image");return e?vt.getSize(e,this.getMimeType()):null}},Ha=class extends Ke{init(){this.propertyType=W.ROOT}getDefaults(){return Object.assign(super.getDefaults(),{asset:{generator:`glTF-Transform ${Ca}`,version:"2.0"},defaultScene:null,accessors:[],animations:[],buffers:[],cameras:[],materials:[],meshes:[],nodes:[],scenes:[],skins:[],textures:[]})}constructor(e){super(e),this.l=new Set,e.addEventListener("node:create",r=>{this.g(r.target)})}clone(){throw new Error("Root cannot be cloned.")}copy(e,r=bt){if(r===bt)throw new Error("Root cannot be copied.");this.set("asset",Ye({},e.get("asset"))),this.setName(e.getName()),this.setExtras(Ye({},e.getExtras())),this.setDefaultScene(e.getDefaultScene()?r(e.getDefaultScene()):null);for(const n of e.listRefMapKeys("extensions")){const s=e.getExtension(n);this.setExtension(n,r(s))}return this}g(e){return e instanceof za?this.addRef("scenes",e):e instanceof ja?this.addRef("nodes",e):e instanceof Kr?this.addRef("cameras",e):e instanceof Ga?this.addRef("skins",e):e instanceof Ba?this.addRef("meshes",e):e instanceof yr?this.addRef("materials",e):e instanceof qa?this.addRef("textures",e):e instanceof $a?this.addRef("animations",e):e instanceof te?this.addRef("accessors",e):e instanceof ka&&this.addRef("buffers",e),this}getAsset(){return this.get("asset")}listExtensionsUsed(){return Array.from(this.l)}listExtensionsRequired(){return this.listExtensionsUsed().filter(e=>e.isRequired())}p(e){return this.l.add(e),this}m(e){return this.l.delete(e),this}listScenes(){return this.listRefs("scenes")}setDefaultScene(e){return this.setRef("defaultScene",e)}getDefaultScene(){return this.getRef("defaultScene")}listNodes(){return this.listRefs("nodes")}listCameras(){return this.listRefs("cameras")}listSkins(){return this.listRefs("skins")}listMeshes(){return this.listRefs("meshes")}listMaterials(){return this.listRefs("materials")}listTextures(){return this.listRefs("textures")}listAnimations(){return this.listRefs("animations")}listAccessors(){return this.listRefs("accessors")}listBuffers(){return this.listRefs("buffers")}},Bs=class En{static fromGraph(e){return En.v.get(e)||null}constructor(){this.T=new ph,this.S=new Ha(this.T),this.M=Jt.DEFAULT_INSTANCE,En.v.set(this.T,this)}getRoot(){return this.S}getGraph(){return this.T}getLogger(){return this.M}setLogger(e){return this.M=e,this}clone(){return new En().setLogger(this.M).merge(this)}merge(e){for(const a of e.getRoot().listExtensionsUsed()){const c=this.createExtension(a.constructor);a.isRequired()&&c.setRequired(!0)}const r=new Set,n=new Map;r.add(e.S),n.set(e.S,this.S);for(const a of e.T.listEdges())for(const c of[a.getParent(),a.getChild()]){if(r.has(c))continue;let l;l=c.propertyType===W.TEXTURE_INFO?c:new c.constructor(this.T),n.set(c,l),r.add(c)}const s=a=>{const c=n.get(a);if(!c)throw new Error("Could resolve property.");return c};for(const a of r){const c=n.get(a);if(!c)throw new Error("Could resolve property.");c.propertyType!==W.TEXTURE_INFO&&c.copy(a,s)}return this}async transform(...e){const r=e.map(n=>n.name);for(const n of e)await n(this,{stack:r});return this}createExtension(e){const r=e.EXTENSION_NAME;return this.getRoot().listExtensionsUsed().find(n=>n.extensionName===r)||new e(this)}createScene(e=""){return new za(this.T,e)}createNode(e=""){return new ja(this.T,e)}createCamera(e=""){return new Kr(this.T,e)}createSkin(e=""){return new Ga(this.T,e)}createMesh(e=""){return new Ba(this.T,e)}createPrimitive(){return new Hr(this.T)}createPrimitiveTarget(e=""){return new Ih(this.T,e)}createMaterial(e=""){return new yr(this.T,e)}createTexture(e=""){return new qa(this.T,e)}createAnimation(e=""){return new $a(this.T,e)}createAnimationChannel(e=""){return new Ls(this.T,e)}createAnimationSampler(e=""){return new Un(this.T,e)}createAccessor(e="",r=null){return r||(r=this.getRoot().listBuffers()[0]),new te(this.T,e).setBuffer(r)}createBuffer(e=""){return new ka(this.T,e)}};Bs.v=new WeakMap;let Se=class{constructor(e){this.extensionName="",this.prereadTypes=[],this.prewriteTypes=[],this.readDependencies=[],this.writeDependencies=[],this.document=void 0,this.required=!1,this.properties=new Set,this.I=void 0,this.document=e,e.getRoot().p(this),this.I=n=>{const s=n,a=s.target;a instanceof Pe&&a.extensionName===this.extensionName&&(s.type==="node:create"&&this.N(a),s.type==="node:dispose"&&this.O(a))};const r=e.getGraph();r.addEventListener("node:create",this.I),r.addEventListener("node:dispose",this.I)}dispose(){this.document.getRoot().m(this);const e=this.document.getGraph();e.removeEventListener("node:create",this.I),e.removeEventListener("node:dispose",this.I);for(const r of this.properties)r.dispose()}static register(){}isRequired(){return this.required}setRequired(e){return this.required=e,this}listProperties(){return Array.from(this.properties)}N(e){return this.properties.add(e),this}O(e){return this.properties.delete(e),this}install(e,r){return this}preread(e,r){return this}prewrite(e,r){return this}};Se.EXTENSION_NAME=void 0;let Ch=class{constructor(e){this.jsonDoc=void 0,this.buffers=[],this.bufferViews=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.textureInfos=new Map,this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[],this.jsonDoc=e}setTextureInfo(e,r){this.textureInfos.set(e,r),r.texCoord!==void 0&&e.setTexCoord(r.texCoord),r.extras!==void 0&&e.setExtras(r.extras);const n=this.jsonDoc.json.textures[r.index];if(n.sampler===void 0)return;const s=this.jsonDoc.json.samplers[n.sampler];s.magFilter!==void 0&&e.setMagFilter(s.magFilter),s.minFilter!==void 0&&e.setMinFilter(s.minFilter),s.wrapS!==void 0&&e.setWrapS(s.wrapS),s.wrapT!==void 0&&e.setWrapT(s.wrapT)}};const na={logger:Jt.DEFAULT_INSTANCE,extensions:[],dependencies:{}};let Nh=class{static read(e,r=na){const n=Ye({},na,r),{json:s}=e,a=new Bs().setLogger(n.logger);this.validate(e,n);const c=new Ch(e),l=s.asset,u=a.getRoot().getAsset();l.copyright&&(u.copyright=l.copyright),l.extras&&(u.extras=l.extras),s.extras!==void 0&&a.getRoot().setExtras(Ye({},s.extras));const d=s.extensionsUsed||[],g=s.extensionsRequired||[];for(const x of n.extensions)if(d.includes(x.EXTENSION_NAME)){const _=a.createExtension(x).setRequired(g.includes(x.EXTENSION_NAME));for(const b of _.readDependencies)_.install(b,n.dependencies[b])}const T=s.buffers||[];a.getRoot().listExtensionsUsed().filter(x=>x.prereadTypes.includes(W.BUFFER)).forEach(x=>x.preread(c,W.BUFFER)),c.buffers=T.map(x=>{const _=a.createBuffer(x.name);return x.extras&&_.setExtras(x.extras),x.uri&&x.uri.indexOf("__")!==0&&_.setURI(x.uri),_}),c.bufferViewBuffers=(s.bufferViews||[]).map((x,_)=>{if(!c.bufferViews[_]){const b=e.json.buffers[x.buffer];c.bufferViews[_]=oe.toView(b.uri?e.resources[b.uri]:e.resources[mr],x.byteOffset||0,x.byteLength)}return c.buffers[x.buffer]});const E=s.accessors||[];c.accessors=E.map(x=>{const _=a.createAccessor(x.name,c.bufferViewBuffers[x.bufferView]).setType(x.type);return x.extras&&_.setExtras(x.extras),x.normalized!==void 0&&_.setNormalized(x.normalized),x.bufferView===void 0||_.setArray(xn(x,c)),_});const M=s.images||[],A=s.textures||[];a.getRoot().listExtensionsUsed().filter(x=>x.prereadTypes.includes(W.TEXTURE)).forEach(x=>x.preread(c,W.TEXTURE)),c.textures=M.map(x=>{const _=a.createTexture(x.name);if(x.extras&&_.setExtras(x.extras),x.bufferView!==void 0){const b=s.bufferViews[x.bufferView],F=e.json.buffers[b.buffer],D=b.byteOffset||0,V=(F.uri?e.resources[F.uri]:e.resources[mr]).slice(D,D+b.byteLength);_.setImage(V)}else x.uri!==void 0&&(_.setImage(e.resources[x.uri]),x.uri.indexOf("__")!==0&&_.setURI(x.uri));if(x.mimeType!==void 0)_.setMimeType(x.mimeType);else if(x.uri){const b=vr.extension(x.uri);_.setMimeType(vt.extensionToMimeType(b))}return _}),c.materials=(s.materials||[]).map(x=>{const _=a.createMaterial(x.name);x.extras&&_.setExtras(x.extras),x.alphaMode!==void 0&&_.setAlphaMode(x.alphaMode),x.alphaCutoff!==void 0&&_.setAlphaCutoff(x.alphaCutoff),x.doubleSided!==void 0&&_.setDoubleSided(x.doubleSided);const b=x.pbrMetallicRoughness||{};if(b.baseColorFactor!==void 0&&_.setBaseColorFactor(b.baseColorFactor),x.emissiveFactor!==void 0&&_.setEmissiveFactor(x.emissiveFactor),b.metallicFactor!==void 0&&_.setMetallicFactor(b.metallicFactor),b.roughnessFactor!==void 0&&_.setRoughnessFactor(b.roughnessFactor),b.baseColorTexture!==void 0){const F=b.baseColorTexture;_.setBaseColorTexture(c.textures[A[F.index].source]),c.setTextureInfo(_.getBaseColorTextureInfo(),F)}if(x.emissiveTexture!==void 0){const F=x.emissiveTexture;_.setEmissiveTexture(c.textures[A[F.index].source]),c.setTextureInfo(_.getEmissiveTextureInfo(),F)}if(x.normalTexture!==void 0){const F=x.normalTexture;_.setNormalTexture(c.textures[A[F.index].source]),c.setTextureInfo(_.getNormalTextureInfo(),F),x.normalTexture.scale!==void 0&&_.setNormalScale(x.normalTexture.scale)}if(x.occlusionTexture!==void 0){const F=x.occlusionTexture;_.setOcclusionTexture(c.textures[A[F.index].source]),c.setTextureInfo(_.getOcclusionTextureInfo(),F),x.occlusionTexture.strength!==void 0&&_.setOcclusionStrength(x.occlusionTexture.strength)}if(b.metallicRoughnessTexture!==void 0){const F=b.metallicRoughnessTexture;_.setMetallicRoughnessTexture(c.textures[A[F.index].source]),c.setTextureInfo(_.getMetallicRoughnessTextureInfo(),F)}return _});const N=s.meshes||[];a.getRoot().listExtensionsUsed().filter(x=>x.prereadTypes.includes(W.PRIMITIVE)).forEach(x=>x.preread(c,W.PRIMITIVE)),c.meshes=N.map(x=>{const _=a.createMesh(x.name);return x.extras&&_.setExtras(x.extras),x.weights!==void 0&&_.setWeights(x.weights),(x.primitives||[]).forEach(b=>{const F=a.createPrimitive();b.extras&&F.setExtras(b.extras),b.material!==void 0&&F.setMaterial(c.materials[b.material]),b.mode!==void 0&&F.setMode(b.mode);for(const[V,B]of Object.entries(b.attributes||{}))F.setAttribute(V,c.accessors[B]);b.indices!==void 0&&F.setIndices(c.accessors[b.indices]);const D=x.extras&&x.extras.targetNames||[];(b.targets||[]).forEach((V,B)=>{const U=D[B]||B.toString(),z=a.createPrimitiveTarget(U);for(const[G,K]of Object.entries(V))z.setAttribute(G,c.accessors[K]);F.addTarget(z)}),_.addPrimitive(F)}),_}),c.cameras=(s.cameras||[]).map(x=>{const _=a.createCamera(x.name).setType(x.type);if(x.extras&&_.setExtras(x.extras),x.type===Kr.Type.PERSPECTIVE){const b=x.perspective;_.setYFov(b.yfov),_.setZNear(b.znear),b.zfar!==void 0&&_.setZFar(b.zfar),b.aspectRatio!==void 0&&_.setAspectRatio(b.aspectRatio)}else{const b=x.orthographic;_.setZNear(b.znear).setZFar(b.zfar).setXMag(b.xmag).setYMag(b.ymag)}return _});const m=s.nodes||[];a.getRoot().listExtensionsUsed().filter(x=>x.prereadTypes.includes(W.NODE)).forEach(x=>x.preread(c,W.NODE)),c.nodes=m.map(x=>{const _=a.createNode(x.name);if(x.extras&&_.setExtras(x.extras),x.translation!==void 0&&_.setTranslation(x.translation),x.rotation!==void 0&&_.setRotation(x.rotation),x.scale!==void 0&&_.setScale(x.scale),x.matrix!==void 0){const b=[0,0,0],F=[0,0,0,1],D=[1,1,1];Ne.decompose(x.matrix,b,F,D),_.setTranslation(b),_.setRotation(F),_.setScale(D)}return x.weights!==void 0&&_.setWeights(x.weights),_}),c.skins=(s.skins||[]).map(x=>{const _=a.createSkin(x.name);x.extras&&_.setExtras(x.extras),x.inverseBindMatrices!==void 0&&_.setInverseBindMatrices(c.accessors[x.inverseBindMatrices]),x.skeleton!==void 0&&_.setSkeleton(c.nodes[x.skeleton]);for(const b of x.joints)_.addJoint(c.nodes[b]);return _}),m.map((x,_)=>{const b=c.nodes[_];(x.children||[]).forEach(F=>b.addChild(c.nodes[F])),x.mesh!==void 0&&b.setMesh(c.meshes[x.mesh]),x.camera!==void 0&&b.setCamera(c.cameras[x.camera]),x.skin!==void 0&&b.setSkin(c.skins[x.skin])}),c.animations=(s.animations||[]).map(x=>{const _=a.createAnimation(x.name);x.extras&&_.setExtras(x.extras);const b=(x.samplers||[]).map(F=>{const D=a.createAnimationSampler().setInput(c.accessors[F.input]).setOutput(c.accessors[F.output]).setInterpolation(F.interpolation||Un.Interpolation.LINEAR);return F.extras&&D.setExtras(F.extras),_.addSampler(D),D});return(x.channels||[]).forEach(F=>{const D=a.createAnimationChannel().setSampler(b[F.sampler]).setTargetPath(F.target.path);F.target.node!==void 0&&D.setTargetNode(c.nodes[F.target.node]),F.extras&&D.setExtras(F.extras),_.addChannel(D)}),_});const I=s.scenes||[];return a.getRoot().listExtensionsUsed().filter(x=>x.prereadTypes.includes(W.SCENE)).forEach(x=>x.preread(c,W.SCENE)),c.scenes=I.map(x=>{const _=a.createScene(x.name);return x.extras&&_.setExtras(x.extras),(x.nodes||[]).map(b=>c.nodes[b]).forEach(b=>_.addChild(b)),_}),s.scene!==void 0&&a.getRoot().setDefaultScene(c.scenes[s.scene]),a.getRoot().listExtensionsUsed().forEach(x=>x.read(c)),E.forEach((x,_)=>{const b=c.accessors[_],F=!!x.sparse,D=!x.bufferView&&!b.getArray();(F||D)&&b.setSparse(!0).setArray(function(V,B){const U=An[V.componentType],z=te.getElementSize(V.type);let G;G=V.bufferView!==void 0?xn(V,B):new U(V.count*z);const K=V.sparse;if(!K)return G;const H=K.count,k=Ye({},V,K.indices,{count:H,type:"SCALAR"}),q=Ye({},V,K.values,{count:H}),ue=xn(k,B),re=xn(q,B);for(let ve=0;vea.EXTENSION_NAME===s))throw new Error(`Missing required extension, "${s}".`)}if(n.extensionsUsed)for(const s of n.extensionsUsed)r.extensions.find(a=>a.EXTENSION_NAME===s)||r.logger.warn(`Missing optional extension, "${s}".`)}};function xn(t,e){const r=e.bufferViews[t.bufferView],n=e.jsonDoc.json.bufferViews[t.bufferView],s=An[t.componentType],a=te.getElementSize(t.type),c=s.BYTES_PER_ELEMENT;if(n.byteStride!==void 0&&n.byteStride!==a*c)return function(u,d){const g=d.bufferViews[u.bufferView],T=d.jsonDoc.json.bufferViews[u.bufferView],E=An[u.componentType],M=te.getElementSize(u.type),A=E.BYTES_PER_ELEMENT,N=u.byteOffset||0,m=new E(u.count*M),I=new DataView(g.buffer,g.byteOffset,g.byteLength),x=T.byteStride;for(let _=0;_1,()=>n.basename||"buffer"),this.imageURIGenerator=new sa(c>1,l=>function(u,d){const g=u.getGraph().listParentEdges(d).find(T=>T.getParent()!==u.getRoot());return g?g.getName().replace(/texture$/i,""):""}(e,l)||n.basename||"texture"),this.logger=e.getLogger()}createTextureInfoDef(e,r){const n={magFilter:r.getMagFilter()||void 0,minFilter:r.getMinFilter()||void 0,wrapS:r.getWrapS(),wrapT:r.getWrapT()},s=JSON.stringify(n);this.samplerDefIndexMap.has(s)||(this.samplerDefIndexMap.set(s,this.jsonDoc.json.samplers.length),this.jsonDoc.json.samplers.push(n));const a={source:this.imageIndexMap.get(e),sampler:this.samplerDefIndexMap.get(s)},c=JSON.stringify(a);this.textureDefIndexMap.has(c)||(this.textureDefIndexMap.set(c,this.jsonDoc.json.textures.length),this.jsonDoc.json.textures.push(a));const l={index:this.textureDefIndexMap.get(c)};return r.getTexCoord()!==0&&(l.texCoord=r.getTexCoord()),Object.keys(r.getExtras()).length>0&&(l.extras=r.getExtras()),this.textureInfoDefMap.set(r,l),l}createPropertyDef(e){const r={};return e.getName()&&(r.name=e.getName()),Object.keys(e.getExtras()).length>0&&(r.extras=e.getExtras()),r}createAccessorDef(e){const r=this.createPropertyDef(e);return r.type=e.getType(),r.componentType=e.getComponentType(),r.count=e.getCount(),this.C.getGraph().listParentEdges(e).some(n=>n.getName()==="attributes"&&n.getAttributes().key==="POSITION"||n.getName()==="input")&&(r.max=e.getMax([]).map(Math.fround),r.min=e.getMin([]).map(Math.fround)),e.getNormalized()&&(r.normalized=e.getNormalized()),r}createImageData(e,r,n){if(this.options.format===Kt.GLB)this.imageBufferViews.push(r),e.bufferView=this.jsonDoc.json.bufferViews.length,this.jsonDoc.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:r.byteLength});else{const s=vt.mimeTypeToExtension(n.getMimeType());e.uri=this.imageURIGenerator.createURI(n,s),this.jsonDoc.resources[e.uri]=r}}getAccessorUsage(e){const r=this.F.get(e);if(r)return r;if(e.getSparse())return rt.SPARSE;for(const n of this.C.getGraph().listParentEdges(e)){const{usage:s}=n.getAttributes();if(s)return s;n.getParent().propertyType!==W.ROOT&&this.logger.warn(`Missing attribute ".usage" on edge, "${n.getName()}".`)}return rt.OTHER}addAccessorToUsageGroup(e,r){const n=this.F.get(e);if(n&&n!==r)throw new Error(`Accessor with usage "${n}" cannot be reused as "${r}".`);return this.F.set(e,r),this}listAccessorUsageGroups(){const e={};for(const[r,n]of Array.from(this.F.entries()))e[n]=e[n]||[],e[n].push(r);return e}};ft.BufferViewTarget=Vr,ft.BufferViewUsage=rt,ft.USAGE_TO_TARGET={[rt.ARRAY_BUFFER]:Vr.ARRAY_BUFFER,[rt.ELEMENT_ARRAY_BUFFER]:Vr.ELEMENT_ARRAY_BUFFER};let sa=class{constructor(e,r){this.multiple=void 0,this.basename=void 0,this.counter={},this.multiple=e,this.basename=r}createURI(e,r){if(e.getURI())return e.getURI();if(this.multiple){const n=this.basename(e);return this.counter[n]=this.counter[n]||1,`${n}_${this.counter[n]++}.${r}`}return`${this.basename(e)}.${r}`}};const{BufferViewUsage:Tn}=ft,{UNSIGNED_INT:Fh,UNSIGNED_SHORT:Oh,UNSIGNED_BYTE:Dh}=te.ComponentType;let $h=class{static write(e,r){const n=e.getRoot(),s={asset:Ye({generator:`glTF-Transform ${Ca}`},n.getAsset()),extras:Ye({},n.getExtras())},a={json:s,resources:{}},c=new ft(e,a,r),l=r.logger||Jt.DEFAULT_INSTANCE,u=new Set(r.extensions.map(m=>m.EXTENSION_NAME)),d=e.getRoot().listExtensionsUsed().filter(m=>u.has(m.extensionName)),g=e.getRoot().listExtensionsRequired().filter(m=>u.has(m.extensionName));d.lengthH.getCount()/3){const _e=(100*q.length/H.getCount()).toFixed(1);l.warn(`Sparse accessor with many non-zero elements (${_e}%) may increase file size.`)}const xe=An[H.getComponentType()];ye.indices=q,ye.values=new xe(ue)}if(!Number.isFinite(D))return{buffers:_,byteLength:b};const V=D<255?Uint8Array:D<65535?Uint16Array:Uint32Array,B=D<255?Dh:D<65535?Oh:Fh,U={buffer:I,byteOffset:x+b,byteLength:0};for(const H of m){const k=F.get(H);if(k.count===0)continue;k.indicesByteOffset=U.byteLength;const q=oe.pad(oe.toView(new V(k.indices)));_.push(q),b+=q.byteLength,U.byteLength+=q.byteLength}s.bufferViews.push(U);const z=s.bufferViews.length-1,G={buffer:I,byteOffset:x+b,byteLength:0};for(const H of m){const k=F.get(H);if(k.count===0)continue;k.valuesByteOffset=G.byteLength;const q=oe.pad(oe.toView(k.values));_.push(q),b+=q.byteLength,G.byteLength+=q.byteLength}s.bufferViews.push(G);const K=s.bufferViews.length-1;for(const H of m){const k=F.get(H);k.count!==0&&(k.accessorDef.sparse={count:k.count,indices:{bufferView:z,byteOffset:k.indicesByteOffset,componentType:B},values:{bufferView:K,byteOffset:k.valuesByteOffset}})}return{buffers:_,byteLength:b}}const A=new Map;for(const m of e.getGraph().listEdges()){if(m.getParent()===n)continue;const I=m.getChild();if(I instanceof te){const x=A.get(I)||[];x.push(m),A.set(I,x)}}if(s.accessors=[],s.bufferViews=[],s.samplers=[],s.textures=[],s.images=n.listTextures().map((m,I)=>{const x=c.createPropertyDef(m);m.getMimeType()&&(x.mimeType=m.getMimeType());const _=m.getImage();return _&&c.createImageData(x,_,m),c.imageIndexMap.set(m,I),x}),d.filter(m=>m.prewriteTypes.includes(W.ACCESSOR)).forEach(m=>m.prewrite(c,W.ACCESSOR)),n.listAccessors().forEach(m=>{const I=c.accessorUsageGroupedByParent,x=c.accessorParents;if(c.accessorIndexMap.has(m))return;const _=A.get(m)||[],b=c.getAccessorUsage(m);if(c.addAccessorToUsageGroup(m,b),I.has(b)){const F=_[0].getParent(),D=x.get(F)||new Set;D.add(m),x.set(F,D)}}),d.filter(m=>m.prewriteTypes.includes(W.BUFFER)).forEach(m=>m.prewrite(c,W.BUFFER)),(n.listAccessors().length>0||n.listTextures().length>0||c.otherBufferViews.size>0)&&n.listBuffers().length===0)throw new Error("Buffer required for Document resources, but none was found.");s.buffers=[],n.listBuffers().forEach((m,I)=>{const x=c.createPropertyDef(m),_=c.accessorUsageGroupedByParent,b=c.accessorParents,F=m.listParents().filter(G=>G instanceof te),D=new Set(F),V=[],B=s.buffers.length;let U=0;const z=c.listAccessorUsageGroups();for(const G in z)if(_.has(G))for(const K of Array.from(b.values())){const H=Array.from(K).filter(k=>D.has(k)).filter(k=>c.getAccessorUsage(k)===G);if(H.length)if(G!==Tn.ARRAY_BUFFER||r.vertexLayout===bn.INTERLEAVED){const k=G===Tn.ARRAY_BUFFER?E(H,B,U):T(H,B,U);U+=k.byteLength,V.push(...k.buffers)}else for(const k of H){const q=E([k],B,U);U+=q.byteLength,V.push(...q.buffers)}}else{const K=z[G].filter(q=>D.has(q));if(!K.length)continue;const H=G===Tn.ELEMENT_ARRAY_BUFFER?ft.BufferViewTarget.ELEMENT_ARRAY_BUFFER:void 0,k=G===Tn.SPARSE?M(K,B,U):T(K,B,U,H);U+=k.byteLength,V.push(...k.buffers)}if(c.imageBufferViews.length&&I===0){for(let G=0;G!m.getBuffer())&&l.warn("Skipped writing one or more Accessors: no Buffer assigned."),s.materials=n.listMaterials().map((m,I)=>{const x=c.createPropertyDef(m);if(m.getAlphaMode()!==yr.AlphaMode.OPAQUE&&(x.alphaMode=m.getAlphaMode()),m.getAlphaMode()===yr.AlphaMode.MASK&&(x.alphaCutoff=m.getAlphaCutoff()),m.getDoubleSided()&&(x.doubleSided=!0),x.pbrMetallicRoughness={},Ne.eq(m.getBaseColorFactor(),[1,1,1,1])||(x.pbrMetallicRoughness.baseColorFactor=m.getBaseColorFactor()),Ne.eq(m.getEmissiveFactor(),[0,0,0])||(x.emissiveFactor=m.getEmissiveFactor()),m.getRoughnessFactor()!==1&&(x.pbrMetallicRoughness.roughnessFactor=m.getRoughnessFactor()),m.getMetallicFactor()!==1&&(x.pbrMetallicRoughness.metallicFactor=m.getMetallicFactor()),m.getBaseColorTexture()){const _=m.getBaseColorTexture(),b=m.getBaseColorTextureInfo();x.pbrMetallicRoughness.baseColorTexture=c.createTextureInfoDef(_,b)}if(m.getEmissiveTexture()){const _=m.getEmissiveTexture(),b=m.getEmissiveTextureInfo();x.emissiveTexture=c.createTextureInfoDef(_,b)}if(m.getNormalTexture()){const _=m.getNormalTexture(),b=m.getNormalTextureInfo(),F=c.createTextureInfoDef(_,b);m.getNormalScale()!==1&&(F.scale=m.getNormalScale()),x.normalTexture=F}if(m.getOcclusionTexture()){const _=m.getOcclusionTexture(),b=m.getOcclusionTextureInfo(),F=c.createTextureInfoDef(_,b);m.getOcclusionStrength()!==1&&(F.strength=m.getOcclusionStrength()),x.occlusionTexture=F}if(m.getMetallicRoughnessTexture()){const _=m.getMetallicRoughnessTexture(),b=m.getMetallicRoughnessTextureInfo();x.pbrMetallicRoughness.metallicRoughnessTexture=c.createTextureInfoDef(_,b)}return c.materialIndexMap.set(m,I),x}),s.meshes=n.listMeshes().map((m,I)=>{const x=c.createPropertyDef(m);let _=null;return x.primitives=m.listPrimitives().map(b=>{const F={attributes:{}};F.mode=b.getMode();const D=b.getMaterial();D&&(F.material=c.materialIndexMap.get(D)),Object.keys(b.getExtras()).length&&(F.extras=b.getExtras());const V=b.getIndices();V&&(F.indices=c.accessorIndexMap.get(V));for(const B of b.listSemantics())F.attributes[B]=c.accessorIndexMap.get(b.getAttribute(B));for(const B of b.listTargets()){const U={};for(const z of B.listSemantics())U[z]=c.accessorIndexMap.get(B.getAttribute(z));F.targets=F.targets||[],F.targets.push(U)}return b.listTargets().length&&!_&&(_=b.listTargets().map(B=>B.getName())),F}),m.getWeights().length&&(x.weights=m.getWeights()),_&&(x.extras=x.extras||{},x.extras.targetNames=_),c.meshIndexMap.set(m,I),x}),s.cameras=n.listCameras().map((m,I)=>{const x=c.createPropertyDef(m);if(x.type=m.getType(),x.type===Kr.Type.PERSPECTIVE){x.perspective={znear:m.getZNear(),zfar:m.getZFar(),yfov:m.getYFov()};const _=m.getAspectRatio();_!==null&&(x.perspective.aspectRatio=_)}else x.orthographic={znear:m.getZNear(),zfar:m.getZFar(),xmag:m.getXMag(),ymag:m.getYMag()};return c.cameraIndexMap.set(m,I),x}),s.nodes=n.listNodes().map((m,I)=>{const x=c.createPropertyDef(m);return Ne.eq(m.getTranslation(),[0,0,0])||(x.translation=m.getTranslation()),Ne.eq(m.getRotation(),[0,0,0,1])||(x.rotation=m.getRotation()),Ne.eq(m.getScale(),[1,1,1])||(x.scale=m.getScale()),m.getWeights().length&&(x.weights=m.getWeights()),c.nodeIndexMap.set(m,I),x}),s.skins=n.listSkins().map((m,I)=>{const x=c.createPropertyDef(m),_=m.getInverseBindMatrices();_&&(x.inverseBindMatrices=c.accessorIndexMap.get(_));const b=m.getSkeleton();return b&&(x.skeleton=c.nodeIndexMap.get(b)),x.joints=m.listJoints().map(F=>c.nodeIndexMap.get(F)),c.skinIndexMap.set(m,I),x}),n.listNodes().forEach((m,I)=>{const x=s.nodes[I],_=m.getMesh();_&&(x.mesh=c.meshIndexMap.get(_));const b=m.getCamera();b&&(x.camera=c.cameraIndexMap.get(b));const F=m.getSkin();F&&(x.skin=c.skinIndexMap.get(F)),m.listChildren().length>0&&(x.children=m.listChildren().map(D=>c.nodeIndexMap.get(D)))}),s.animations=n.listAnimations().map((m,I)=>{const x=c.createPropertyDef(m),_=new Map;return x.samplers=m.listSamplers().map((b,F)=>{const D=c.createPropertyDef(b);return D.input=c.accessorIndexMap.get(b.getInput()),D.output=c.accessorIndexMap.get(b.getOutput()),D.interpolation=b.getInterpolation(),_.set(b,F),D}),x.channels=m.listChannels().map(b=>{const F=c.createPropertyDef(b);return F.sampler=_.get(b.getSampler()),F.target={node:c.nodeIndexMap.get(b.getTargetNode()),path:b.getTargetPath()},F}),c.animationIndexMap.set(m,I),x}),s.scenes=n.listScenes().map((m,I)=>{const x=c.createPropertyDef(m);return x.nodes=m.listChildren().map(_=>c.nodeIndexMap.get(_)),c.sceneIndexMap.set(m,I),x});const N=n.getDefaultScene();return N&&(s.scene=n.listScenes().indexOf(N)),s.extensionsUsed=d.map(m=>m.extensionName),s.extensionsRequired=g.map(m=>m.extensionName),d.forEach(m=>m.write(c)),function(m){const I=[];for(const x in m){const _=m[x];(Array.isArray(_)&&_.length===0||_===null||_===""||_&&typeof _=="object"&&Object.keys(_).length===0)&&I.push(x)}for(const x of I)delete m[x]}(s),a}};var In;(function(t){t[t.JSON=1313821514]="JSON",t[t.BIN=5130562]="BIN"})(In||(In={}));let Ph=class{constructor(){this.M=Jt.DEFAULT_INSTANCE,this.l=new Set,this.U={},this.P=bn.INTERLEAVED,this.lastReadBytes=0,this.lastWriteBytes=0}setLogger(e){return this.M=e,this}registerExtensions(e){for(const r of e)this.l.add(r),r.register();return this}registerDependencies(e){return Object.assign(this.U,e),this}setVertexLayout(e){return this.P=e,this}async read(e){return await this.readJSON(await this.readAsJSON(e))}async readAsJSON(e){const r=await this.readURI(e,"view");this.lastReadBytes=r.byteLength;const n=ia(r)?this.L(r):{json:JSON.parse(oe.decodeText(r)),resources:{}};return await this.j(n,this.dirname(e)),this.D(n),n}async readJSON(e){return e=this._(e),this.D(e),Nh.read(e,{extensions:Array.from(this.l),dependencies:this.U,logger:this.M})}async binaryToJSON(e){const r=this.L(oe.assertView(e));this.D(r);const n=r.json;if(n.buffers&&n.buffers.some(s=>function(a,c){return c.uri!==void 0&&!(c.uri in a.resources)}(r,s)))throw new Error("Cannot resolve external buffers with binaryToJSON().");if(n.images&&n.images.some(s=>function(a,c){return c.uri!==void 0&&!(c.uri in a.resources)&&c.bufferView===void 0}(r,s)))throw new Error("Cannot resolve external images with binaryToJSON().");return r}async readBinary(e){return this.readJSON(await this.binaryToJSON(oe.assertView(e)))}async writeJSON(e,r={}){if(r.format===Kt.GLB&&e.getRoot().listBuffers().length>1)throw new Error("GLB must have 0–1 buffers.");return $h.write(e,{format:r.format||Kt.GLTF,basename:r.basename||"",logger:this.M,vertexLayout:this.P,dependencies:Ye({},this.U),extensions:Array.from(this.l)})}async writeBinary(e){const{json:r,resources:n}=await this.writeJSON(e,{format:Kt.GLB}),s=new Uint32Array([1179937895,2,12]),a=JSON.stringify(r),c=oe.pad(oe.encodeText(a),32),l=oe.toView(new Uint32Array([c.byteLength,1313821514])),u=oe.concat([l,c]);s[s.length-1]+=u.byteLength;const d=Object.values(n)[0];if(!d||!d.byteLength)return oe.concat([oe.toView(s),u]);const g=oe.pad(d,0),T=oe.toView(new Uint32Array([g.byteLength,5130562])),E=oe.concat([T,g]);return s[s.length-1]+=E.byteLength,oe.concat([oe.toView(s),u,E])}async j(e,r){var n=this;const s=[...e.json.images||[],...e.json.buffers||[]].map(async function(a){const c=a.uri;if(!c||c.match(/data:/))return Promise.resolve();e.resources[c]=await n.readURI(n.resolve(r,c),"view"),n.lastReadBytes+=e.resources[c].byteLength});await Promise.all(s)}D(e){function r(n){if(n.uri){if(n.uri in e.resources)oe.assertView(e.resources[n.uri]);else if(n.uri.match(/data:/)){const s=`__${bh()}.${vr.extension(n.uri)}`;e.resources[s]=oe.createBufferFromDataURI(n.uri),n.uri=s}}}(e.json.images||[]).forEach(n=>{if(n.bufferView===void 0&&n.uri===void 0)throw new Error("Missing resource URI or buffer view.");r(n)}),(e.json.buffers||[]).forEach(r)}_(e){const{images:r,buffers:n}=e.json;return e={json:Ye({},e.json),resources:Ye({},e.resources)},r&&(e.json.images=r.map(s=>Ye({},s))),n&&(e.json.buffers=n.map(s=>Ye({},s))),e}L(e){if(!ia(e))throw new Error("Invalid glTF 2.0 binary.");const r=new Uint32Array(e.buffer,e.byteOffset+12,2);if(r[1]!==In.JSON)throw new Error("Missing required GLB JSON chunk.");const n=r[0],s=oe.decodeText(oe.toView(e,20,n)),a=JSON.parse(s),c=20+n;if(e.byteLength<=c)return{json:a,resources:{}};const l=new Uint32Array(e.buffer,e.byteOffset+c,2);if(l[1]!==In.BIN)throw new Error("Expected GLB BIN in second chunk.");const u=oe.toView(e,c+8,l[0]);return{json:a,resources:{[mr]:u}}}};function ia(t){if(t.byteLength<3*Uint32Array.BYTES_PER_ELEMENT)return!1;const e=new Uint32Array(t.buffer,t.byteOffset,3);return e[0]===1179937895&&e[1]===2}let kh=class extends Ph{constructor(e=jr.DEFAULT_INIT){super(),this.J=void 0,this.J=e}async readURI(e,r){const n=await fetch(e,this.J);switch(r){case"view":return new Uint8Array(await n.arrayBuffer());case"text":return n.text()}}resolve(e,r){return jr.resolve(e,r)}dirname(e){return jr.dirname(e)}};const Uh=0,Lh=0,Bh=0,jh=2,Vh=0,zh=163,Gh=166,qh=0,Hh=2,Wh=1,Xh=64,Yh=0;class Kh{constructor(){this.vkFormat=Yh,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=Uh,this.levels=[],this.dataFormatDescriptor=[{vendorId:Bh,descriptorType:Lh,descriptorBlockSize:0,versionNumber:jh,colorModel:Vh,colorPrimaries:Wh,transferFunction:Hh,flags:qh,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Cr{constructor(e,r,n,s){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+r,n),this._littleEndian=s,this._offset=0}_nextUint8(){const e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){const e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){const e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){const e=this._dataView.getUint32(this._offset,this._littleEndian),r=this._dataView.getUint32(this._offset+4,this._littleEndian),n=e+2**32*r;return this._offset+=8,n}_nextInt32(){const e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){const r=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,r}_skip(e){return this._offset+=e,this}_scan(e,r=0){const n=this._offset;let s=0;for(;this._dataView.getUint8(this._offset)!==r&&s{if(!r.extensions||!r.extensions[$t])return;const s=r.extensions[$t],a=this.createInstancedMesh();for(const c in s.attributes)a.setAttribute(c,e.accessors[s.attributes[c]]);e.nodes[n].setExtension($t,a)}),this}prewrite(e){e.accessorUsageGroupedByParent.add(bs);for(const r of this.properties)for(const n of r.listAttributes())e.addAccessorToUsageGroup(n,bs);return this}write(e){const r=e.jsonDoc;return this.document.getRoot().listNodes().forEach(n=>{const s=n.getExtension($t);if(s){const a=e.nodeIndexMap.get(n),c=r.json.nodes[a],l={attributes:{}};s.listSemantics().forEach(u=>{const d=s.getAttribute(u);l.attributes[u]=e.accessorIndexMap.get(d)}),c.extensions=c.extensions||{},c.extensions[$t]=l}}),this}}function Rt(){return Rt=Object.assign?Object.assign.bind():function(t){for(var e=1;e8?8:4,c.componentType=a>8?oa:Jh,c.normalized=!0,l=t.getElementSize()===3?function(u){const d=new Float32Array(4*u.length/3);for(let g=0,T=u.length/3;gps(u,t.getComponentType())),c.max=c.max.map(u=>ps(u,t.getComponentType()))),c.normalized&&(c.min=c.min.map(u=>ca(u,c.componentType)),c.max=c.max.map(u=>ca(u,c.componentType)))}else c.byteStride%4&&(c.array=function(l,u){const d=oe.padNumber(l.BYTES_PER_ELEMENT*u)/l.BYTES_PER_ELEMENT,g=new l.constructor(l.length/u*d);for(let T=0;T*ur instanceof Hr&&r.getMode()===Hr.Mode.TRIANGLES)?dr.TRIANGLES:dr.INDICES:dr.ATTRIBUTES}function td(t,e){const r=e.getGraph().listParentEdges(t).filter(n=>!(n.getParent()instanceof Ha));for(const n of r){const s=n.getName(),a=n.getAttributes().key||"",c=n.getParent().propertyType===W.PRIMITIVE_TARGET;if(s==="indices")return{filter:$e.NONE};if(s==="attributes"){if(a==="POSITION")return{filter:$e.NONE};if(a==="TEXCOORD_0")return{filter:$e.NONE};if(a.startsWith("JOINTS_"))return{filter:$e.NONE};if(a.startsWith("WEIGHTS_"))return{filter:$e.NONE};if(a==="NORMAL"||a==="TANGENT")return c?{filter:$e.NONE}:{filter:$e.OCTAHEDRAL,bits:8}}if(s==="output"){const l=Ka(t);return l==="rotation"?{filter:$e.QUATERNION,bits:16}:l==="translation"||l==="scale"?{filter:$e.EXPONENTIAL,bits:12}:{filter:$e.NONE}}if(s==="input")return{filter:$e.NONE};if(s==="inverseBindMatrices")return{filter:$e.NONE}}return{filter:$e.NONE}}function Ka(t){for(const e of t.listParents())if(e instanceof Un){for(const r of e.listParents())if(r instanceof Ls)return r.getTargetPath()}return null}const Xe=Rs,la={method:Wr.QUANTIZE};class As extends Se{constructor(...e){super(...e),this.extensionName=Xe,this.prereadTypes=[W.BUFFER,W.PRIMITIVE],this.prewriteTypes=[W.BUFFER,W.ACCESSOR],this.readDependencies=["meshopt.decoder"],this.writeDependencies=["meshopt.encoder"],this._decoder=null,this._decoderFallbackBufferMap=new Map,this._encoder=null,this._encoderOptions=la,this._encoderFallbackBuffer=null,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={}}install(e,r){return e==="meshopt.decoder"&&(this._decoder=r),e==="meshopt.encoder"&&(this._encoder=r),this}setEncoderOptions(e){return this._encoderOptions=Rt({},la,e),this}preread(e,r){if(!this._decoder){if(!this.isRequired())return this;throw new Error(`[${Xe}] Please install extension dependency, "meshopt.decoder".`)}if(!this._decoder.supported){if(!this.isRequired())return this;throw new Error(`[${Xe}]: Missing WASM support.`)}return r===W.BUFFER?this._prereadBuffers(e):r===W.PRIMITIVE&&this._prereadPrimitives(e),this}_prereadBuffers(e){const r=e.jsonDoc;(r.json.bufferViews||[]).forEach((n,s)=>{if(!n.extensions||!n.extensions[Xe])return;const a=n.extensions[Xe],c=a.byteOffset||0,l=a.byteLength||0,u=a.count,d=a.byteStride,g=new Uint8Array(u*d),T=r.json.buffers[a.buffer],E=oe.toView(T.uri?r.resources[T.uri]:r.resources[mr],c,l);this._decoder.decodeGltfBuffer(g,u,d,E,a.mode,a.filter),e.bufferViews[s]=g})}_prereadPrimitives(e){const r=e.jsonDoc;(r.json.bufferViews||[]).forEach(n=>{var s;n.extensions&&n.extensions[Xe]&&(s=r.json.buffers[n.buffer]).extensions&&s.extensions[Rs]&&s.extensions[Rs].fallback&&this._decoderFallbackBufferMap.set(e.buffers[n.buffer],e.buffers[n.extensions[Xe].buffer])})}read(e){if(!this.isRequired())return this;for(const[r,n]of this._decoderFallbackBufferMap){for(const s of r.listParents())s instanceof te&&s.swap(r,n);r.dispose()}return this}prewrite(e,r){return r===W.ACCESSOR?this._prewriteAccessors(e):r===W.BUFFER&&this._prewriteBuffers(e),this}_prewriteAccessors(e){const r=e.jsonDoc.json,n=this._encoder,s=this._encoderOptions,a=this.document.createBuffer(),c=this.document.getRoot().listBuffers().indexOf(a);this._encoderFallbackBuffer=a,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={};for(const l of this.document.getRoot().listAccessors()){if(Ka(l)==="weights"||l.getSparse())continue;const u=e.getAccessorUsage(l),d=ed(l,u),g=s.method===Wr.FILTER?td(l,this.document):{filter:$e.NONE},T=Qh(l,n,d,g),{array:E,byteStride:M}=T,A=l.getBuffer();if(!A)throw new Error(`${Xe}: Missing buffer for accessor.`);const N=this.document.getRoot().listBuffers().indexOf(A),m=[u,d,g.filter,M,N].join(":");let I=this._encoderBufferViews[m],x=this._encoderBufferViewData[m],_=this._encoderBufferViewAccessors[m];I&&x||(_=this._encoderBufferViewAccessors[m]=[],x=this._encoderBufferViewData[m]=[],I=this._encoderBufferViews[m]={buffer:c,target:ft.USAGE_TO_TARGET[u],byteOffset:0,byteLength:0,byteStride:u===ft.BufferViewUsage.ARRAY_BUFFER?M:void 0,extensions:{[Xe]:{buffer:N,byteOffset:0,byteLength:0,mode:d,filter:g.filter!==$e.NONE?g.filter:void 0,byteStride:M,count:0}}});const b=e.createAccessorDef(l);b.componentType=T.componentType,b.normalized=T.normalized,b.byteOffset=I.byteLength,b.min&&T.min&&(b.min=T.min),b.max&&T.max&&(b.max=T.max),e.accessorIndexMap.set(l,r.accessors.length),r.accessors.push(b),_.push(b),x.push(new Uint8Array(E.buffer,E.byteOffset,E.byteLength)),I.byteLength+=E.byteLength,I.extensions.EXT_meshopt_compression.count+=l.getCount()}}_prewriteBuffers(e){const r=this._encoder;for(const n in this._encoderBufferViews){const s=this._encoderBufferViews[n],a=this._encoderBufferViewData[n],c=this.document.getRoot().listBuffers()[s.extensions[Xe].buffer],l=e.otherBufferViews.get(c)||[],{count:u,byteStride:d,mode:g}=s.extensions[Xe],T=oe.concat(a),E=r.encodeGltfBuffer(T,u,d,g),M=oe.pad(E);s.extensions[Xe].byteLength=E.byteLength,a.length=0,a.push(M),l.push(M),e.otherBufferViews.set(c,l)}}write(e){let r=0;for(const c in this._encoderBufferViews){const l=this._encoderBufferViews[c],u=e.otherBufferViewsIndexMap.get(this._encoderBufferViewData[c][0]),d=this._encoderBufferViewAccessors[c];for(const E of d)E.bufferView=u;const g=e.jsonDoc.json.bufferViews[u],T=g.byteOffset||0;Object.assign(g,l),g.byteOffset=r,g.extensions[Xe].byteOffset=T,r+=oe.padNumber(l.byteLength)}const n=this._encoderFallbackBuffer,s=e.bufferIndexMap.get(n),a=e.jsonDoc.json.buffers[s];return a.byteLength=r,a.extensions={[Xe]:{fallback:!0}},n.dispose(),this}}As.EXTENSION_NAME=Xe,As.EncoderMethod=Wr;const kr="EXT_texture_avif";class rd{match(e){return e.length>=12&&oe.decodeText(e.slice(4,12))==="ftypavif"}getSize(e){if(!this.match(e))return null;const r=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=fa(r,0);if(!n)return null;let s=n.end;for(;n=fa(r,s);)if(n.type==="meta")s=n.start+4;else if(n.type==="iprp"||n.type==="ipco")s=n.start;else{if(n.type==="ispe")return[r.getUint32(n.start+4),r.getUint32(n.start+8)];if(n.type==="mdat")break;s=n.end}return null}getChannels(e){return 4}}class Ja extends Se{constructor(...e){super(...e),this.extensionName=kr,this.prereadTypes=[W.TEXTURE]}static register(){vt.registerFormat("image/avif",new rd)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(r=>{r.extensions&&r.extensions[kr]&&(r.source=r.extensions[kr].source)}),this}read(e){return this}write(e){const r=e.jsonDoc;return this.document.getRoot().listTextures().forEach(n=>{if(n.getMimeType()==="image/avif"){const s=e.imageIndexMap.get(n);(r.json.textures||[]).forEach(a=>{a.source===s&&(a.extensions=a.extensions||{},a.extensions[kr]={source:a.source},delete a.source)})}}),this}}function fa(t,e){if(t.byteLength<4+e)return null;const r=t.getUint32(e);return t.byteLength=12&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80}getSize(e){const r=oe.decodeText(e.slice(0,4)),n=oe.decodeText(e.slice(8,12));if(r!=="RIFF"||n!=="WEBP")return null;const s=new DataView(e.buffer,e.byteOffset);let a=12;for(;a>6)]}a+=8+l+l%2}return null}getChannels(e){return 4}}class Za extends Se{constructor(...e){super(...e),this.extensionName=Ur,this.prereadTypes=[W.TEXTURE]}static register(){vt.registerFormat("image/webp",new nd)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(r=>{r.extensions&&r.extensions[Ur]&&(r.source=r.extensions[Ur].source)}),this}read(e){return this}write(e){const r=e.jsonDoc;return this.document.getRoot().listTextures().forEach(n=>{if(n.getMimeType()==="image/webp"){const s=e.imageIndexMap.get(n);(r.json.textures||[]).forEach(a=>{a.source===s&&(a.extensions=a.extensions||{},a.extensions[Ur]={source:a.source},delete a.source)})}}),this}}Za.EXTENSION_NAME=Ur;const ua=Wa;let Ue,Qa,eo,nt;function sd(t,e){const r=new Ue.DecoderBuffer;try{if(r.Init(e,e.length),t.GetEncodedGeometryType(r)!==Ue.TRIANGULAR_MESH)throw new Error(`[${ua}] Unknown geometry type.`);const n=new Ue.Mesh;if(!t.DecodeBufferToMesh(r,n).ok()||n.ptr===0)throw new Error(`[${ua}] Decoding failure.`);return n}finally{Ue.destroy(r)}}function id(t,e){const r=3*e.num_faces();let n,s;if(e.num_points()<=65534){const a=r*Uint16Array.BYTES_PER_ELEMENT;n=Ue._malloc(a),t.GetTrianglesUInt16Array(e,a,n),s=new Uint16Array(Ue.HEAPU16.buffer,n,r).slice()}else{const a=r*Uint32Array.BYTES_PER_ELEMENT;n=Ue._malloc(a),t.GetTrianglesUInt32Array(e,a,n),s=new Uint32Array(Ue.HEAPU32.buffer,n,r).slice()}return Ue._free(n),s}function ad(t,e,r,n){const s=eo[n.componentType],a=Qa[n.componentType],c=r.num_components(),l=e.num_points()*c,u=l*a.BYTES_PER_ELEMENT,d=Ue._malloc(u);t.GetAttributeDataArrayForAllPoints(e,r,s,u,d);const g=new a(Ue.HEAPF32.buffer,d,l).slice();return Ue._free(d),g}var Xr,st;(function(t){t[t.EDGEBREAKER=1]="EDGEBREAKER",t[t.SEQUENTIAL=0]="SEQUENTIAL"})(Xr||(Xr={})),function(t){t.POSITION="POSITION",t.NORMAL="NORMAL",t.COLOR="COLOR",t.TEX_COORD="TEX_COORD",t.GENERIC="GENERIC"}(st||(st={}));const to={[st.POSITION]:14,[st.NORMAL]:10,[st.COLOR]:8,[st.TEX_COORD]:12,[st.GENERIC]:12},ha={decodeSpeed:5,encodeSpeed:5,method:Xr.EDGEBREAKER,quantizationBits:to,quantizationVolume:"mesh"};function od(t,e=ha){const r=Rt({},ha,e);r.quantizationBits=Rt({},to,e.quantizationBits);const n=new nt.MeshBuilder,s=new nt.Mesh,a=new nt.ExpertEncoder(s),c={},l=new nt.DracoInt8Array,u=t.listTargets().length>0;let d=!1;for(const N of t.listSemantics()){const m=t.getAttribute(N);if(m.getSparse()){d=!0;continue}const I=cd(N),x=ld(n,m.getComponentType(),s,nt[I],m.getCount(),m.getElementSize(),m.getArray());if(x===-1)throw new Error(`Error compressing "${N}" attribute.`);if(c[N]=x,r.quantizationVolume==="mesh"||N!=="POSITION")a.SetAttributeQuantization(x,r.quantizationBits[I]);else{if(typeof r.quantizationVolume!="object")throw new Error("Invalid quantization volume state.");{const{quantizationVolume:_}=r,b=Math.max(_.max[0]-_.min[0],_.max[1]-_.min[1],_.max[2]-_.min[2]);a.SetAttributeExplicitQuantization(x,r.quantizationBits[I],m.getElementSize(),_.min,b)}}}const g=t.getIndices();if(!g)throw new Ss("Primitive must have indices.");n.AddFacesToMesh(s,g.getCount()/3,g.getArray()),a.SetSpeedOptions(r.encodeSpeed,r.decodeSpeed),a.SetTrackEncodedProperties(!0),a.SetEncodingMethod(r.method===Xr.SEQUENTIAL||u||d?nt.MESH_SEQUENTIAL_ENCODING:nt.MESH_EDGEBREAKER_ENCODING);const T=a.EncodeToDracoBuffer(!(u||d),l);if(T<=0)throw new Ss("Error applying Draco compression.");const E=new Uint8Array(T);for(let N=0;Nx.propertyType));if(I.size!==2||!I.has(W.PRIMITIVE)||!I.has(W.ROOT))throw new Error(`[${De}] Compressed accessors must only be used as indices or vertex attributes.`)}for(const m of Array.from(d)){const I=N.get(m),x=m.getIndices();if(M.get(x)!==I||m.listAttributes().some(_=>M.get(_)!==I))throw new Error(`[${De}] Draco primitives must share all, or no, accessors.`)}for(const m of Array.from(g)){const I=m.getIndices();if(M.has(I)||m.listAttributes().some(x=>M.has(x)))throw new Error(`[${De}] Accessor cannot be shared by compressed and uncompressed primitives.`)}return N}(this.document),a=new Map;let c="mesh";this._encoderOptions.quantizationVolume==="scene"&&(this.document.getRoot().listScenes().length!==1?n.warn(`[${De}]: quantizationVolume=scene requires exactly 1 scene.`):c=yh(this.document.getRoot().listScenes().pop()));for(const l of Array.from(s.keys())){const u=s.get(l);if(!u)throw new Error("Unexpected primitive.");if(a.has(u)){a.set(u,a.get(u));continue}const d=l.getIndices(),g=e.jsonDoc.json.accessors;let T;try{T=od(l,Rt({},this._encoderOptions,{quantizationVolume:c}))}catch(A){if(A instanceof Ss){n.warn(`[${De}]: ${A.message} Skipping primitive compression.`);continue}throw A}a.set(u,T);const E=e.createAccessorDef(d);E.count=T.numIndices,e.accessorIndexMap.set(d,g.length),g.push(E);for(const A of l.listSemantics()){const N=l.getAttribute(A);if(T.attributeIDs[A]===void 0)continue;const m=e.createAccessorDef(N);m.count=T.numVertices,e.accessorIndexMap.set(N,g.length),g.push(m)}const M=l.getAttribute("POSITION").getBuffer()||this.document.getRoot().listBuffers()[0];e.otherBufferViews.has(M)||e.otherBufferViews.set(M,[]),e.otherBufferViews.get(M).push(T.data)}return n.debug(`[${De}] Compressed ${s.size} primitives.`),e.extensionData[De]={primitiveHashMap:s,primitiveEncodingMap:a},this}write(e){const r=e.extensionData[De];for(const n of this.document.getRoot().listMeshes()){const s=e.jsonDoc.json.meshes[e.meshIndexMap.get(n)];for(let a=0;as!==De),n.extensionsRequired=(n.extensionsRequired||[]).filter(s=>s!==De)}return this}}function da(t,e){const r=[],n=t.getIndices();r.push(e.get(n));for(const s of t.listAttributes())r.push(e.get(s));return r.sort().join("|")}Is.EXTENSION_NAME=De,Is.EncoderMethod=Xr;class xr extends Pe{init(){this.extensionName=Vs,this.propertyType="Light",this.parentTypes=[W.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{color:[1,1,1],intensity:1,type:xr.Type.POINT,range:null,innerConeAngle:0,outerConeAngle:Math.PI/4})}getColor(){return this.get("color")}setColor(e){return this.set("color",e)}getColorHex(){return Ze.factorToHex(this.getColor())}setColorHex(e){const r=this.getColor().slice();return Ze.hexToFactor(e,r),this.setColor(r)}getIntensity(){return this.get("intensity")}setIntensity(e){return this.set("intensity",e)}getType(){return this.get("type")}setType(e){return this.set("type",e)}getRange(){return this.get("range")}setRange(e){return this.set("range",e)}getInnerConeAngle(){return this.get("innerConeAngle")}setInnerConeAngle(e){return this.set("innerConeAngle",e)}getOuterConeAngle(){return this.get("outerConeAngle")}setOuterConeAngle(e){return this.set("outerConeAngle",e)}}xr.EXTENSION_NAME=Vs,xr.Type={POINT:"point",SPOT:"spot",DIRECTIONAL:"directional"};const pt=Vs;class ro extends Se{constructor(...e){super(...e),this.extensionName=pt}createLight(e=""){return new xr(this.document.getGraph(),e)}read(e){const r=e.jsonDoc;if(!r.json.extensions||!r.json.extensions[pt])return this;const n=(r.json.extensions[pt].lights||[]).map(s=>{var a,c;const l=this.createLight().setName(s.name||"").setType(s.type);return s.color!==void 0&&l.setColor(s.color),s.intensity!==void 0&&l.setIntensity(s.intensity),s.range!==void 0&&l.setRange(s.range),((a=s.spot)==null?void 0:a.innerConeAngle)!==void 0&&l.setInnerConeAngle(s.spot.innerConeAngle),((c=s.spot)==null?void 0:c.outerConeAngle)!==void 0&&l.setOuterConeAngle(s.spot.outerConeAngle),l});return r.json.nodes.forEach((s,a)=>{s.extensions&&s.extensions[pt]&&e.nodes[a].setExtension(pt,n[s.extensions[pt].light])}),this}write(e){const r=e.jsonDoc;if(this.properties.size===0)return this;const n=[],s=new Map;for(const a of this.properties){const c=a,l={type:c.getType()};Ne.eq(c.getColor(),[1,1,1])||(l.color=c.getColor()),c.getIntensity()!==1&&(l.intensity=c.getIntensity()),c.getRange()!=null&&(l.range=c.getRange()),c.getName()&&(l.name=c.getName()),c.getType()===xr.Type.SPOT&&(l.spot={innerConeAngle:c.getInnerConeAngle(),outerConeAngle:c.getOuterConeAngle()}),n.push(l),s.set(c,n.length-1)}return this.document.getRoot().listNodes().forEach(a=>{const c=a.getExtension(pt);if(c){const l=e.nodeIndexMap.get(a),u=r.json.nodes[l];u.extensions=u.extensions||{},u.extensions[pt]={light:s.get(c)}}}),r.json.extensions=r.json.extensions||{},r.json.extensions[pt]={lights:n},this}}ro.EXTENSION_NAME=pt;const{R:fd,G:ud,B:hd}=ut;class no extends Pe{init(){this.extensionName=zs,this.propertyType="Anisotropy",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{anisotropyStrength:0,anisotropyRotation:0,anisotropyTexture:null,anisotropyTextureInfo:new Fe(this.graph,"anisotropyTextureInfo")})}getAnisotropyStrength(){return this.get("anisotropyStrength")}setAnisotropyStrength(e){return this.set("anisotropyStrength",e)}getAnisotropyRotation(){return this.get("anisotropyRotation")}setAnisotropyRotation(e){return this.set("anisotropyRotation",e)}getAnisotropyTexture(){return this.getRef("anisotropyTexture")}getAnisotropyTextureInfo(){return this.getRef("anisotropyTexture")?this.getRef("anisotropyTextureInfo"):null}setAnisotropyTexture(e){return this.setRef("anisotropyTexture",e,{channels:fd|ud|hd})}}no.EXTENSION_NAME=zs;const Pt=zs;class so extends Se{constructor(...e){super(...e),this.extensionName=Pt}createAnisotropy(){return new no(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[Pt]){const c=this.createAnisotropy();e.materials[a].setExtension(Pt,c);const l=s.extensions[Pt];if(l.anisotropyStrength!==void 0&&c.setAnisotropyStrength(l.anisotropyStrength),l.anisotropyRotation!==void 0&&c.setAnisotropyRotation(l.anisotropyRotation),l.anisotropyTexture!==void 0){const u=l.anisotropyTexture;c.setAnisotropyTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getAnisotropyTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(Pt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[Pt]={};if(s.getAnisotropyStrength()>0&&(l.anisotropyStrength=s.getAnisotropyStrength()),s.getAnisotropyRotation()!==0&&(l.anisotropyRotation=s.getAnisotropyRotation()),s.getAnisotropyTexture()){const u=s.getAnisotropyTexture(),d=s.getAnisotropyTextureInfo();l.anisotropyTexture=e.createTextureInfoDef(u,d)}}}),this}}so.EXTENSION_NAME=Pt;const{R:pa,G:ga,B:dd}=ut;class io extends Pe{init(){this.extensionName=Gs,this.propertyType="Clearcoat",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{clearcoatFactor:0,clearcoatTexture:null,clearcoatTextureInfo:new Fe(this.graph,"clearcoatTextureInfo"),clearcoatRoughnessFactor:0,clearcoatRoughnessTexture:null,clearcoatRoughnessTextureInfo:new Fe(this.graph,"clearcoatRoughnessTextureInfo"),clearcoatNormalScale:1,clearcoatNormalTexture:null,clearcoatNormalTextureInfo:new Fe(this.graph,"clearcoatNormalTextureInfo")})}getClearcoatFactor(){return this.get("clearcoatFactor")}setClearcoatFactor(e){return this.set("clearcoatFactor",e)}getClearcoatTexture(){return this.getRef("clearcoatTexture")}getClearcoatTextureInfo(){return this.getRef("clearcoatTexture")?this.getRef("clearcoatTextureInfo"):null}setClearcoatTexture(e){return this.setRef("clearcoatTexture",e,{channels:pa})}getClearcoatRoughnessFactor(){return this.get("clearcoatRoughnessFactor")}setClearcoatRoughnessFactor(e){return this.set("clearcoatRoughnessFactor",e)}getClearcoatRoughnessTexture(){return this.getRef("clearcoatRoughnessTexture")}getClearcoatRoughnessTextureInfo(){return this.getRef("clearcoatRoughnessTexture")?this.getRef("clearcoatRoughnessTextureInfo"):null}setClearcoatRoughnessTexture(e){return this.setRef("clearcoatRoughnessTexture",e,{channels:ga})}getClearcoatNormalScale(){return this.get("clearcoatNormalScale")}setClearcoatNormalScale(e){return this.set("clearcoatNormalScale",e)}getClearcoatNormalTexture(){return this.getRef("clearcoatNormalTexture")}getClearcoatNormalTextureInfo(){return this.getRef("clearcoatNormalTexture")?this.getRef("clearcoatNormalTextureInfo"):null}setClearcoatNormalTexture(e){return this.setRef("clearcoatNormalTexture",e,{channels:pa|ga|dd})}}io.EXTENSION_NAME=Gs;const kt=Gs;class ao extends Se{constructor(...e){super(...e),this.extensionName=kt}createClearcoat(){return new io(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[kt]){const c=this.createClearcoat();e.materials[a].setExtension(kt,c);const l=s.extensions[kt];if(l.clearcoatFactor!==void 0&&c.setClearcoatFactor(l.clearcoatFactor),l.clearcoatRoughnessFactor!==void 0&&c.setClearcoatRoughnessFactor(l.clearcoatRoughnessFactor),l.clearcoatTexture!==void 0){const u=l.clearcoatTexture;c.setClearcoatTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getClearcoatTextureInfo(),u)}if(l.clearcoatRoughnessTexture!==void 0){const u=l.clearcoatRoughnessTexture;c.setClearcoatRoughnessTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getClearcoatRoughnessTextureInfo(),u)}if(l.clearcoatNormalTexture!==void 0){const u=l.clearcoatNormalTexture;c.setClearcoatNormalTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getClearcoatNormalTextureInfo(),u),u.scale!==void 0&&c.setClearcoatNormalScale(u.scale)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(kt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[kt]={clearcoatFactor:s.getClearcoatFactor(),clearcoatRoughnessFactor:s.getClearcoatRoughnessFactor()};if(s.getClearcoatTexture()){const u=s.getClearcoatTexture(),d=s.getClearcoatTextureInfo();l.clearcoatTexture=e.createTextureInfoDef(u,d)}if(s.getClearcoatRoughnessTexture()){const u=s.getClearcoatRoughnessTexture(),d=s.getClearcoatRoughnessTextureInfo();l.clearcoatRoughnessTexture=e.createTextureInfoDef(u,d)}if(s.getClearcoatNormalTexture()){const u=s.getClearcoatNormalTexture(),d=s.getClearcoatNormalTextureInfo();l.clearcoatNormalTexture=e.createTextureInfoDef(u,d),s.getClearcoatNormalScale()!==1&&(l.clearcoatNormalTexture.scale=s.getClearcoatNormalScale())}}}),this}}ao.EXTENSION_NAME=kt;class oo extends Pe{init(){this.extensionName=qs,this.propertyType="EmissiveStrength",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{emissiveStrength:1})}getEmissiveStrength(){return this.get("emissiveStrength")}setEmissiveStrength(e){return this.set("emissiveStrength",e)}}oo.EXTENSION_NAME=qs;const Ut=qs;class co extends Se{constructor(...e){super(...e),this.extensionName=Ut}createEmissiveStrength(){return new oo(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((r,n)=>{if(r.extensions&&r.extensions[Ut]){const s=this.createEmissiveStrength();e.materials[n].setExtension(Ut,s);const a=r.extensions[Ut];a.emissiveStrength!==void 0&&s.setEmissiveStrength(a.emissiveStrength)}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(Ut);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{},c.extensions[Ut]={emissiveStrength:s.getEmissiveStrength()}}}),this}}co.EXTENSION_NAME=Ut;class lo extends Pe{init(){this.extensionName=Hs,this.propertyType="IOR",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{ior:1.5})}getIOR(){return this.get("ior")}setIOR(e){return this.set("ior",e)}}lo.EXTENSION_NAME=Hs;const Lt=Hs;class fo extends Se{constructor(...e){super(...e),this.extensionName=Lt}createIOR(){return new lo(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((r,n)=>{if(r.extensions&&r.extensions[Lt]){const s=this.createIOR();e.materials[n].setExtension(Lt,s);const a=r.extensions[Lt];a.ior!==void 0&&s.setIOR(a.ior)}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(Lt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{},c.extensions[Lt]={ior:s.getIOR()}}}),this}}fo.EXTENSION_NAME=Lt;const{R:pd,G:gd}=ut;class uo extends Pe{init(){this.extensionName=Ws,this.propertyType="Iridescence",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{iridescenceFactor:0,iridescenceTexture:null,iridescenceTextureInfo:new Fe(this.graph,"iridescenceTextureInfo"),iridescenceIOR:1.3,iridescenceThicknessMinimum:100,iridescenceThicknessMaximum:400,iridescenceThicknessTexture:null,iridescenceThicknessTextureInfo:new Fe(this.graph,"iridescenceThicknessTextureInfo")})}getIridescenceFactor(){return this.get("iridescenceFactor")}setIridescenceFactor(e){return this.set("iridescenceFactor",e)}getIridescenceTexture(){return this.getRef("iridescenceTexture")}getIridescenceTextureInfo(){return this.getRef("iridescenceTexture")?this.getRef("iridescenceTextureInfo"):null}setIridescenceTexture(e){return this.setRef("iridescenceTexture",e,{channels:pd})}getIridescenceIOR(){return this.get("iridescenceIOR")}setIridescenceIOR(e){return this.set("iridescenceIOR",e)}getIridescenceThicknessMinimum(){return this.get("iridescenceThicknessMinimum")}setIridescenceThicknessMinimum(e){return this.set("iridescenceThicknessMinimum",e)}getIridescenceThicknessMaximum(){return this.get("iridescenceThicknessMaximum")}setIridescenceThicknessMaximum(e){return this.set("iridescenceThicknessMaximum",e)}getIridescenceThicknessTexture(){return this.getRef("iridescenceThicknessTexture")}getIridescenceThicknessTextureInfo(){return this.getRef("iridescenceThicknessTexture")?this.getRef("iridescenceThicknessTextureInfo"):null}setIridescenceThicknessTexture(e){return this.setRef("iridescenceThicknessTexture",e,{channels:gd})}}uo.EXTENSION_NAME=Ws;const Bt=Ws;class ho extends Se{constructor(...e){super(...e),this.extensionName=Bt}createIridescence(){return new uo(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[Bt]){const c=this.createIridescence();e.materials[a].setExtension(Bt,c);const l=s.extensions[Bt];if(l.iridescenceFactor!==void 0&&c.setIridescenceFactor(l.iridescenceFactor),l.iridescenceIor!==void 0&&c.setIridescenceIOR(l.iridescenceIor),l.iridescenceThicknessMinimum!==void 0&&c.setIridescenceThicknessMinimum(l.iridescenceThicknessMinimum),l.iridescenceThicknessMaximum!==void 0&&c.setIridescenceThicknessMaximum(l.iridescenceThicknessMaximum),l.iridescenceTexture!==void 0){const u=l.iridescenceTexture;c.setIridescenceTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getIridescenceTextureInfo(),u)}if(l.iridescenceThicknessTexture!==void 0){const u=l.iridescenceThicknessTexture;c.setIridescenceThicknessTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getIridescenceThicknessTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(Bt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[Bt]={};if(s.getIridescenceFactor()>0&&(l.iridescenceFactor=s.getIridescenceFactor()),s.getIridescenceIOR()!==1.3&&(l.iridescenceIor=s.getIridescenceIOR()),s.getIridescenceThicknessMinimum()!==100&&(l.iridescenceThicknessMinimum=s.getIridescenceThicknessMinimum()),s.getIridescenceThicknessMaximum()!==400&&(l.iridescenceThicknessMaximum=s.getIridescenceThicknessMaximum()),s.getIridescenceTexture()){const u=s.getIridescenceTexture(),d=s.getIridescenceTextureInfo();l.iridescenceTexture=e.createTextureInfoDef(u,d)}if(s.getIridescenceThicknessTexture()){const u=s.getIridescenceThicknessTexture(),d=s.getIridescenceThicknessTextureInfo();l.iridescenceThicknessTexture=e.createTextureInfoDef(u,d)}}}),this}}ho.EXTENSION_NAME=Bt;const{R:ma,G:va,B:ya,A:xa}=ut;class po extends Pe{init(){this.extensionName=Xs,this.propertyType="PBRSpecularGlossiness",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{diffuseFactor:[1,1,1,1],diffuseTexture:null,diffuseTextureInfo:new Fe(this.graph,"diffuseTextureInfo"),specularFactor:[1,1,1],glossinessFactor:1,specularGlossinessTexture:null,specularGlossinessTextureInfo:new Fe(this.graph,"specularGlossinessTextureInfo")})}getDiffuseFactor(){return this.get("diffuseFactor")}setDiffuseFactor(e){return this.set("diffuseFactor",e)}getDiffuseHex(){return Ze.factorToHex(this.getDiffuseFactor())}setDiffuseHex(e){const r=this.getDiffuseFactor().slice();return this.setDiffuseFactor(Ze.hexToFactor(e,r))}getDiffuseTexture(){return this.getRef("diffuseTexture")}getDiffuseTextureInfo(){return this.getRef("diffuseTexture")?this.getRef("diffuseTextureInfo"):null}setDiffuseTexture(e){return this.setRef("diffuseTexture",e,{channels:ma|va|ya|xa,isColor:!0})}getSpecularFactor(){return this.get("specularFactor")}setSpecularFactor(e){return this.set("specularFactor",e)}getGlossinessFactor(){return this.get("glossinessFactor")}setGlossinessFactor(e){return this.set("glossinessFactor",e)}getSpecularGlossinessTexture(){return this.getRef("specularGlossinessTexture")}getSpecularGlossinessTextureInfo(){return this.getRef("specularGlossinessTexture")?this.getRef("specularGlossinessTextureInfo"):null}setSpecularGlossinessTexture(e){return this.setRef("specularGlossinessTexture",e,{channels:ma|va|ya|xa})}}po.EXTENSION_NAME=Xs;const jt=Xs;class go extends Se{constructor(...e){super(...e),this.extensionName=jt}createPBRSpecularGlossiness(){return new po(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[jt]){const c=this.createPBRSpecularGlossiness();e.materials[a].setExtension(jt,c);const l=s.extensions[jt];if(l.diffuseFactor!==void 0&&c.setDiffuseFactor(l.diffuseFactor),l.specularFactor!==void 0&&c.setSpecularFactor(l.specularFactor),l.glossinessFactor!==void 0&&c.setGlossinessFactor(l.glossinessFactor),l.diffuseTexture!==void 0){const u=l.diffuseTexture;c.setDiffuseTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getDiffuseTextureInfo(),u)}if(l.specularGlossinessTexture!==void 0){const u=l.specularGlossinessTexture;c.setSpecularGlossinessTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getSpecularGlossinessTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(jt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[jt]={diffuseFactor:s.getDiffuseFactor(),specularFactor:s.getSpecularFactor(),glossinessFactor:s.getGlossinessFactor()};if(s.getDiffuseTexture()){const u=s.getDiffuseTexture(),d=s.getDiffuseTextureInfo();l.diffuseTexture=e.createTextureInfoDef(u,d)}if(s.getSpecularGlossinessTexture()){const u=s.getSpecularGlossinessTexture(),d=s.getSpecularGlossinessTextureInfo();l.specularGlossinessTexture=e.createTextureInfoDef(u,d)}}}),this}}go.EXTENSION_NAME=jt;const{R:md,G:vd,B:yd,A:xd}=ut;class mo extends Pe{init(){this.extensionName=Ys,this.propertyType="Sheen",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{sheenColorFactor:[0,0,0],sheenColorTexture:null,sheenColorTextureInfo:new Fe(this.graph,"sheenColorTextureInfo"),sheenRoughnessFactor:0,sheenRoughnessTexture:null,sheenRoughnessTextureInfo:new Fe(this.graph,"sheenRoughnessTextureInfo")})}getSheenColorFactor(){return this.get("sheenColorFactor")}getSheenColorHex(){return Ze.factorToHex(this.getSheenColorFactor())}setSheenColorFactor(e){return this.set("sheenColorFactor",e)}setSheenColorHex(e){const r=this.getSheenColorFactor().slice();return this.set("sheenColorFactor",Ze.hexToFactor(e,r))}getSheenColorTexture(){return this.getRef("sheenColorTexture")}getSheenColorTextureInfo(){return this.getRef("sheenColorTexture")?this.getRef("sheenColorTextureInfo"):null}setSheenColorTexture(e){return this.setRef("sheenColorTexture",e,{channels:md|vd|yd,isColor:!0})}getSheenRoughnessFactor(){return this.get("sheenRoughnessFactor")}setSheenRoughnessFactor(e){return this.set("sheenRoughnessFactor",e)}getSheenRoughnessTexture(){return this.getRef("sheenRoughnessTexture")}getSheenRoughnessTextureInfo(){return this.getRef("sheenRoughnessTexture")?this.getRef("sheenRoughnessTextureInfo"):null}setSheenRoughnessTexture(e){return this.setRef("sheenRoughnessTexture",e,{channels:xd})}}mo.EXTENSION_NAME=Ys;const Vt=Ys;class vo extends Se{constructor(...e){super(...e),this.extensionName=Vt}createSheen(){return new mo(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[Vt]){const c=this.createSheen();e.materials[a].setExtension(Vt,c);const l=s.extensions[Vt];if(l.sheenColorFactor!==void 0&&c.setSheenColorFactor(l.sheenColorFactor),l.sheenRoughnessFactor!==void 0&&c.setSheenRoughnessFactor(l.sheenRoughnessFactor),l.sheenColorTexture!==void 0){const u=l.sheenColorTexture;c.setSheenColorTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getSheenColorTextureInfo(),u)}if(l.sheenRoughnessTexture!==void 0){const u=l.sheenRoughnessTexture;c.setSheenRoughnessTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getSheenRoughnessTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(Vt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[Vt]={sheenColorFactor:s.getSheenColorFactor(),sheenRoughnessFactor:s.getSheenRoughnessFactor()};if(s.getSheenColorTexture()){const u=s.getSheenColorTexture(),d=s.getSheenColorTextureInfo();l.sheenColorTexture=e.createTextureInfoDef(u,d)}if(s.getSheenRoughnessTexture()){const u=s.getSheenRoughnessTexture(),d=s.getSheenRoughnessTextureInfo();l.sheenRoughnessTexture=e.createTextureInfoDef(u,d)}}}),this}}vo.EXTENSION_NAME=Vt;const{R:Td,G:Ed,B:wd,A:Md}=ut;class yo extends Pe{init(){this.extensionName=Ks,this.propertyType="Specular",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{specularFactor:1,specularTexture:null,specularTextureInfo:new Fe(this.graph,"specularTextureInfo"),specularColorFactor:[1,1,1],specularColorTexture:null,specularColorTextureInfo:new Fe(this.graph,"specularColorTextureInfo")})}getSpecularFactor(){return this.get("specularFactor")}setSpecularFactor(e){return this.set("specularFactor",e)}getSpecularColorFactor(){return this.get("specularColorFactor")}setSpecularColorFactor(e){return this.set("specularColorFactor",e)}getSpecularColorHex(){return Ze.factorToHex(this.getSpecularColorFactor())}setSpecularColorHex(e){const r=this.getSpecularColorFactor().slice();return this.set("specularColorFactor",Ze.hexToFactor(e,r))}getSpecularTexture(){return this.getRef("specularTexture")}getSpecularTextureInfo(){return this.getRef("specularTexture")?this.getRef("specularTextureInfo"):null}setSpecularTexture(e){return this.setRef("specularTexture",e,{channels:Md})}getSpecularColorTexture(){return this.getRef("specularColorTexture")}getSpecularColorTextureInfo(){return this.getRef("specularColorTexture")?this.getRef("specularColorTextureInfo"):null}setSpecularColorTexture(e){return this.setRef("specularColorTexture",e,{channels:Td|Ed|wd,isColor:!0})}}yo.EXTENSION_NAME=Ks;const zt=Ks;class xo extends Se{constructor(...e){super(...e),this.extensionName=zt}createSpecular(){return new yo(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[zt]){const c=this.createSpecular();e.materials[a].setExtension(zt,c);const l=s.extensions[zt];if(l.specularFactor!==void 0&&c.setSpecularFactor(l.specularFactor),l.specularColorFactor!==void 0&&c.setSpecularColorFactor(l.specularColorFactor),l.specularTexture!==void 0){const u=l.specularTexture;c.setSpecularTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getSpecularTextureInfo(),u)}if(l.specularColorTexture!==void 0){const u=l.specularColorTexture;c.setSpecularColorTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getSpecularColorTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(zt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[zt]={};if(s.getSpecularFactor()!==1&&(l.specularFactor=s.getSpecularFactor()),Ne.eq(s.getSpecularColorFactor(),[1,1,1])||(l.specularColorFactor=s.getSpecularColorFactor()),s.getSpecularTexture()){const u=s.getSpecularTexture(),d=s.getSpecularTextureInfo();l.specularTexture=e.createTextureInfoDef(u,d)}if(s.getSpecularColorTexture()){const u=s.getSpecularColorTexture(),d=s.getSpecularColorTextureInfo();l.specularColorTexture=e.createTextureInfoDef(u,d)}}}),this}}xo.EXTENSION_NAME=zt;const{R:_d}=ut;class To extends Pe{init(){this.extensionName=Js,this.propertyType="Transmission",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{transmissionFactor:0,transmissionTexture:null,transmissionTextureInfo:new Fe(this.graph,"transmissionTextureInfo")})}getTransmissionFactor(){return this.get("transmissionFactor")}setTransmissionFactor(e){return this.set("transmissionFactor",e)}getTransmissionTexture(){return this.getRef("transmissionTexture")}getTransmissionTextureInfo(){return this.getRef("transmissionTexture")?this.getRef("transmissionTextureInfo"):null}setTransmissionTexture(e){return this.setRef("transmissionTexture",e,{channels:_d})}}To.EXTENSION_NAME=Js;const Gt=Js;class Eo extends Se{constructor(...e){super(...e),this.extensionName=Gt}createTransmission(){return new To(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[Gt]){const c=this.createTransmission();e.materials[a].setExtension(Gt,c);const l=s.extensions[Gt];if(l.transmissionFactor!==void 0&&c.setTransmissionFactor(l.transmissionFactor),l.transmissionTexture!==void 0){const u=l.transmissionTexture;c.setTransmissionTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getTransmissionTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(Gt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[Gt]={transmissionFactor:s.getTransmissionFactor()};if(s.getTransmissionTexture()){const u=s.getTransmissionTexture(),d=s.getTransmissionTextureInfo();l.transmissionTexture=e.createTextureInfoDef(u,d)}}}),this}}Eo.EXTENSION_NAME=Gt;class wo extends Pe{init(){this.extensionName=Zs,this.propertyType="Unlit",this.parentTypes=[W.MATERIAL]}}wo.EXTENSION_NAME=Zs;const fr=Zs;class ti extends Se{constructor(...e){super(...e),this.extensionName=fr}createUnlit(){return new wo(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((r,n)=>{r.extensions&&r.extensions[fr]&&e.materials[n].setExtension(fr,this.createUnlit())}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{if(n.getExtension(fr)){const s=e.materialIndexMap.get(n),a=r.json.materials[s];a.extensions=a.extensions||{},a.extensions[fr]={}}}),this}}ti.EXTENSION_NAME=fr;class Mo extends Pe{init(){this.extensionName=tr,this.propertyType="Mapping",this.parentTypes=["MappingList"]}getDefaults(){return Object.assign(super.getDefaults(),{material:null,variants:[]})}getMaterial(){return this.getRef("material")}setMaterial(e){return this.setRef("material",e)}addVariant(e){return this.addRef("variants",e)}removeVariant(e){return this.removeRef("variants",e)}listVariants(){return this.listRefs("variants")}}Mo.EXTENSION_NAME=tr;class _o extends Pe{init(){this.extensionName=tr,this.propertyType="MappingList",this.parentTypes=[W.PRIMITIVE]}getDefaults(){return Object.assign(super.getDefaults(),{mappings:[]})}addMapping(e){return this.addRef("mappings",e)}removeMapping(e){return this.removeRef("mappings",e)}listMappings(){return this.listRefs("mappings")}}_o.EXTENSION_NAME=tr;class Cs extends Pe{init(){this.extensionName=tr,this.propertyType="Variant",this.parentTypes=["MappingList"]}}Cs.EXTENSION_NAME=tr;const gt=tr;class Ro extends Se{constructor(...e){super(...e),this.extensionName=gt}createMappingList(){return new _o(this.document.getGraph())}createVariant(e=""){return new Cs(this.document.getGraph(),e)}createMapping(){return new Mo(this.document.getGraph())}listVariants(){return Array.from(this.properties).filter(e=>e instanceof Cs)}read(e){const r=e.jsonDoc;if(!r.json.extensions||!r.json.extensions[gt])return this;const n=(r.json.extensions[gt].variants||[]).map(s=>this.createVariant().setName(s.name||""));return(r.json.meshes||[]).forEach((s,a)=>{const c=e.meshes[a];(s.primitives||[]).forEach((l,u)=>{if(!l.extensions||!l.extensions[gt])return;const d=this.createMappingList(),g=l.extensions[gt];for(const T of g.mappings){const E=this.createMapping();T.material!==void 0&&E.setMaterial(e.materials[T.material]);for(const M of T.variants||[])E.addVariant(n[M]);d.addMapping(E)}c.listPrimitives()[u].setExtension(gt,d)})}),this}write(e){const r=e.jsonDoc,n=this.listVariants();if(!n.length)return this;const s=[],a=new Map;for(const c of n)a.set(c,s.length),s.push(e.createPropertyDef(c));for(const c of this.document.getRoot().listMeshes()){const l=e.meshIndexMap.get(c);c.listPrimitives().forEach((u,d)=>{const g=u.getExtension(gt);if(!g)return;const T=e.jsonDoc.json.meshes[l].primitives[d],E=g.listMappings().map(M=>{const A=e.createPropertyDef(M),N=M.getMaterial();return N&&(A.material=e.materialIndexMap.get(N)),A.variants=M.listVariants().map(m=>a.get(m)),A});T.extensions=T.extensions||{},T.extensions[gt]={mappings:E}})}return r.json.extensions=r.json.extensions||{},r.json.extensions[gt]={variants:s},this}}Ro.EXTENSION_NAME=gt;const{G:Rd}=ut;class bo extends Pe{init(){this.extensionName=Qs,this.propertyType="Volume",this.parentTypes=[W.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{thicknessFactor:0,thicknessTexture:null,thicknessTextureInfo:new Fe(this.graph,"thicknessTexture"),attenuationDistance:1/0,attenuationColor:[1,1,1]})}getThicknessFactor(){return this.get("thicknessFactor")}setThicknessFactor(e){return this.set("thicknessFactor",e)}getThicknessTexture(){return this.getRef("thicknessTexture")}getThicknessTextureInfo(){return this.getRef("thicknessTexture")?this.getRef("thicknessTextureInfo"):null}setThicknessTexture(e){return this.setRef("thicknessTexture",e,{channels:Rd})}getAttenuationDistance(){return this.get("attenuationDistance")}setAttenuationDistance(e){return this.set("attenuationDistance",e)}getAttenuationColor(){return this.get("attenuationColor")}setAttenuationColor(e){return this.set("attenuationColor",e)}getAttenuationColorHex(){return Ze.factorToHex(this.getAttenuationColor())}setAttenuationColorHex(e){const r=this.getAttenuationColor().slice();return this.set("attenuationColor",Ze.hexToFactor(e,r))}}bo.EXTENSION_NAME=Qs;const qt=Qs;class Ao extends Se{constructor(...e){super(...e),this.extensionName=qt}createVolume(){return new bo(this.document.getGraph())}read(e){const r=e.jsonDoc,n=r.json.textures||[];return(r.json.materials||[]).forEach((s,a)=>{if(s.extensions&&s.extensions[qt]){const c=this.createVolume();e.materials[a].setExtension(qt,c);const l=s.extensions[qt];if(l.thicknessFactor!==void 0&&c.setThicknessFactor(l.thicknessFactor),l.attenuationDistance!==void 0&&c.setAttenuationDistance(l.attenuationDistance),l.attenuationColor!==void 0&&c.setAttenuationColor(l.attenuationColor),l.thicknessTexture!==void 0){const u=l.thicknessTexture;c.setThicknessTexture(e.textures[n[u.index].source]),e.setTextureInfo(c.getThicknessTextureInfo(),u)}}}),this}write(e){const r=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(n=>{const s=n.getExtension(qt);if(s){const a=e.materialIndexMap.get(n),c=r.json.materials[a];c.extensions=c.extensions||{};const l=c.extensions[qt]={};if(s.getThicknessFactor()>0&&(l.thicknessFactor=s.getThicknessFactor()),Number.isFinite(s.getAttenuationDistance())&&(l.attenuationDistance=s.getAttenuationDistance()),Ne.eq(s.getAttenuationColor(),[1,1,1])||(l.attenuationColor=s.getAttenuationColor()),s.getThicknessTexture()){const u=s.getThicknessTexture(),d=s.getThicknessTextureInfo();l.thicknessTexture=e.createTextureInfoDef(u,d)}}}),this}}Ao.EXTENSION_NAME=qt;const So="KHR_mesh_quantization";class Io extends Se{constructor(...e){super(...e),this.extensionName=So}read(e){return this}write(e){return this}}Io.EXTENSION_NAME=So;const Lr="KHR_texture_basisu";class bd{match(e){return e[0]===171&&e[1]===75&&e[2]===84&&e[3]===88&&e[4]===32&&e[5]===50&&e[6]===48&&e[7]===187&&e[8]===13&&e[9]===10&&e[10]===26&&e[11]===10}getSize(e){const r=ds(e);return[r.pixelWidth,r.pixelHeight]}getChannels(e){const r=ds(e).dataFormatDescriptor[0];if(r.colorModel===zh)return r.samples.length===2&&(15&r.samples[1].channelType)==15?4:3;if(r.colorModel===Gh)return(15&r.samples[0].channelType)==3?4:3;throw new Error(`Unexpected KTX2 colorModel, "${r.colorModel}".`)}getVRAMByteLength(e){const r=ds(e),n=this.getChannels(e)>3;let s=0;for(let a=0;a{r.extensions&&r.extensions[Lr]&&(r.source=r.extensions[Lr].source)}),this}read(e){return this}write(e){const r=e.jsonDoc;return this.document.getRoot().listTextures().forEach(n=>{if(n.getMimeType()==="image/ktx2"){const s=e.imageIndexMap.get(n);r.json.textures.forEach(a=>{a.source===s&&(a.extensions=a.extensions||{},a.extensions[Lr]={source:a.source},delete a.source)})}}),this}}Co.EXTENSION_NAME=Lr;class No extends Pe{init(){this.extensionName=ei,this.propertyType="Transform",this.parentTypes=[W.TEXTURE_INFO]}getDefaults(){return Object.assign(super.getDefaults(),{offset:[0,0],rotation:0,scale:[1,1],texCoord:null})}getOffset(){return this.get("offset")}setOffset(e){return this.set("offset",e)}getRotation(){return this.get("rotation")}setRotation(e){return this.set("rotation",e)}getScale(){return this.get("scale")}setScale(e){return this.set("scale",e)}getTexCoord(){return this.get("texCoord")}setTexCoord(e){return this.set("texCoord",e)}}No.EXTENSION_NAME=ei;const Ht=ei;class Fo extends Se{constructor(...e){super(...e),this.extensionName=Ht}createTransform(){return new No(this.document.getGraph())}read(e){for(const[r,n]of Array.from(e.textureInfos.entries())){if(!n.extensions||!n.extensions[Ht])continue;const s=this.createTransform(),a=n.extensions[Ht];a.offset!==void 0&&s.setOffset(a.offset),a.rotation!==void 0&&s.setRotation(a.rotation),a.scale!==void 0&&s.setScale(a.scale),a.texCoord!==void 0&&s.setTexCoord(a.texCoord),r.setExtension(Ht,s)}return this}write(e){const r=Array.from(e.textureInfoDefMap.entries());for(const[n,s]of r){const a=n.getExtension(Ht);if(!a)continue;s.extensions=s.extensions||{};const c={},l=Ne.eq;l(a.getOffset(),[0,0])||(c.offset=a.getOffset()),a.getRotation()!==0&&(c.rotation=a.getRotation()),l(a.getScale(),[1,1])||(c.scale=a.getScale()),a.getTexCoord()!=null&&(c.texCoord=a.getTexCoord()),s.extensions[Ht]=c}return this}}Fo.EXTENSION_NAME=Ht;const Ad=[W.ROOT,W.SCENE,W.NODE,W.MESH,W.MATERIAL,W.TEXTURE,W.ANIMATION];class Oo extends Pe{init(){this.extensionName=Cn,this.propertyType="Packet",this.parentTypes=Ad}getDefaults(){return Object.assign(super.getDefaults(),{context:{},properties:{}})}getContext(){return this.get("context")}setContext(e){return this.set("context",Rt({},e))}listProperties(){return Object.keys(this.get("properties"))}getProperty(e){const r=this.get("properties");return e in r?r[e]:null}setProperty(e,r){this._assertContext(e);const n=Rt({},this.get("properties"));return r?n[e]=r:delete n[e],this.set("properties",n)}toJSONLD(){return Rt({"@context":gs(this.get("context"))},gs(this.get("properties")))}fromJSONLD(e){const r=(e=gs(e))["@context"];return r&&this.set("context",r),delete e["@context"],this.set("properties",e)}_assertContext(e){if(!(e.split(":")[0]in this.get("context")))throw new Error(`${Cn}: Missing context for term, "${e}".`)}}function gs(t){return JSON.parse(JSON.stringify(t))}Oo.EXTENSION_NAME=Cn;const _t=Cn;class Do extends Se{constructor(...e){super(...e),this.extensionName=_t}createPacket(){return new Oo(this.document.getGraph())}listPackets(){return Array.from(this.properties)}read(e){var r;const n=(r=e.jsonDoc.json.extensions)==null?void 0:r[_t];if(!n||!n.packets)return this;const s=e.jsonDoc.json,a=this.document.getRoot(),c=n.packets.map(d=>this.createPacket().fromJSONLD(d)),l=[[s.asset],s.scenes,s.nodes,s.meshes,s.materials,s.images,s.animations],u=[[a],a.listScenes(),a.listNodes(),a.listMeshes(),a.listMaterials(),a.listTextures(),a.listAnimations()];for(let d=0;d0&&(r.extensions=r.extensions||{},r.extensions[_t]={packets:n}),this}}Do.EXTENSION_NAME=_t;const $o=[Is,ro,so,ao,co,fo,ho,go,xo,vo,Eo,ti,Ro,Ao,Io,Co,Fo,Do];[...$o];const Po=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],ko=t=>{let e="";for(let r=0;r<16;r++)r%4!=3&&(r>0&&(e+=" "),e+=t[r]||0);return e},Sd=(t=1,e=Po)=>` +`,Ta=t=>t?t.toISOString().substring(0,10):"";function Id(t,{unit:e="millimeter",title:r="jscad model",author:n="",description:s="",application:a="jscad",creationDate:c=new Date,license:l="",modificationDate:u}={}){t.push(` + + 1 + ${r} + ${n} + ${s||r} + + ${l} + + ${Ta(c)} + ${Ta(u||c)} + ${a} + `)}function Cd(t,e,r,n){t.push(` +`),t.push(` +`),r.forEach(({objectID:s,transform:a})=>{Nd(t,s,a)}),t.push(` +`),t.push(` +`)}const Nd=(t,e=1,r=Po)=>{t.push(` +`)};function Fd(t,e,r,n,s,a){t.push(` + + +`);for(let c=0;c +`);t.push(` + +`);for(let c=0;c +`);return t.push(` + + +`),t}const Ea={name:"[Content_Types].xml",content:` + + + + +`};function Od({meshes:t=[],components:e=[],items:r=[],precision:n=17,header:s}){const a=[];return Id(a,s),a.push(` +`),r.length==0&&console.error("3MF empty build! Include items or simple."),t.forEach(({id:c,vertices:l,indices:u,name:d})=>Fd(a,c,l,u,n,d)),e.forEach(({id:c,children:l,name:u})=>{Cd(a,c,l,u)}),a.push(` +`),a.push(` +`),r.forEach(({objectID:c,transform:l})=>{a.push(Sd(c,l))}),a.push(` +`),a.push(` +`),a.join("")}class Dd{constructor(){this.idSeq=0,this.lines=['','']}get name(){return"_rels/.rels"}addRel(e,r){this.lines.push(` `)}add3dModel(e){this.addRel(e,"http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel")}addThumbnail(e){this.addRel(e,"http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail")}get content(){return this.lines.join(` +`)+` +`}}var Ge=Uint8Array,tt=Uint16Array,ri=Int32Array,ni=new Ge([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),si=new Ge([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),wa=new Ge([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Uo=function(t,e){for(var r=new tt(31),n=0;n<31;++n)r[n]=e+=1<>1|(Re&21845)<<1;At=(At&52428)>>2|(At&13107)<<2,At=(At&61680)>>4|(At&3855)<<4,Fs[Re]=((At&65280)>>8|(At&255)<<8)>>1}var zr=function(t,e,r){for(var n=t.length,s=0,a=new tt(e);s>u]=d}else for(l=new tt(n),s=0;s>15-t[s]);return l},Qt=new Ge(288);for(var Re=0;Re<144;++Re)Qt[Re]=8;for(var Re=144;Re<256;++Re)Qt[Re]=9;for(var Re=256;Re<280;++Re)Qt[Re]=7;for(var Re=280;Re<288;++Re)Qt[Re]=8;var Nn=new Ge(32);for(var Re=0;Re<32;++Re)Nn[Re]=5;var kd=zr(Qt,9,0),Ud=zr(Nn,5,0),Bo=function(t){return(t+7)/8|0},jo=function(t,e,r){return(e==null||e<0)&&(e=0),(r==null||r>t.length)&&(r=t.length),new Ge(t.subarray(e,r))},Ld=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Ln=function(t,e,r){var n=new Error(e||Ld[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,Ln),!r)throw n;return n},Mt=function(t,e,r){r<<=e&7;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8},Nr=function(t,e,r){r<<=e&7;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8,t[n+2]|=r>>16},ms=function(t,e){for(var r=[],n=0;nE&&(E=a[n].s);var M=new tt(E+1),A=Os(r[g-1],M,0);if(A>e){var n=0,N=0,m=A-e,I=1<e)N+=I-(1<>=m;N>0;){var _=a[n].s;M[_]=0&&N;--n){var b=a[n].s;M[b]==e&&(--M[b],++N)}A=e}return{t:new Ge(M),l:A}},Os=function(t,e,r){return t.s==-1?Math.max(Os(t.l,e,r+1),Os(t.r,e,r+1)):e[t.s]=r},_a=function(t){for(var e=t.length;e&&!t[--e];);for(var r=new tt(++e),n=0,s=t[0],a=1,c=function(u){r[n++]=u},l=1;l<=e;++l)if(t[l]==s&&l!=e)++a;else{if(!s&&a>2){for(;a>138;a-=138)c(32754);a>2&&(c(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(c(s),--a;a>6;a-=6)c(8304);a>2&&(c(a-3<<5|8208),a=0)}for(;a--;)c(s);a=1,s=t[l]}return{c:r.subarray(0,n),n:e}},Fr=function(t,e){for(var r=0,n=0;n>8,t[s+2]=t[s]^255,t[s+3]=t[s+1]^255;for(var a=0;a4&&!z[wa[K-1]];--K);var H=d+5<<3,k=Fr(s,Qt)+Fr(a,Nn)+c,q=Fr(s,E)+Fr(a,N)+c+14+3*K+Fr(V,z)+2*V[16]+3*V[17]+7*V[18];if(u>=0&&H<=k&&H<=q)return Vo(e,g,t.subarray(u,u+d));var ue,re,ve,ge;if(Mt(e,g,1+(q15&&(Mt(e,g,ke[B]>>5&127),g+=ke[B]>>12)}}else ue=kd,re=Qt,ve=Ud,ge=Nn;for(var B=0;B255){var be=Ie>>18&31;Nr(e,g,ue[be+257]),g+=re[be+257],be>7&&(Mt(e,g,Ie>>23&31),g+=ni[be]);var Qe=Ie&31;Nr(e,g,ve[Qe]),g+=ge[Qe],Qe>3&&(Nr(e,g,Ie>>5&8191),g+=si[Qe])}else Nr(e,g,ue[Ie]),g+=re[Ie]}return Nr(e,g,ue[256]),g+re[256]},Bd=new ri([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),zo=new Ge(0),jd=function(t,e,r,n,s,a){var c=a.z||t.length,l=new Ge(n+c+5*(1+Math.ceil(c/7e3))+s),u=l.subarray(n,l.length-s),d=a.l,g=(a.r||0)&7;if(e){g&&(u[0]=a.r>>3);for(var T=Bd[e-1],E=T>>13,M=T&8191,A=(1<7e3||z>24576)&&(ue>423||!d)){g=Ra(t,u,0,b,F,D,B,z,K,U-K,g),z=V=B=0,K=U;for(var re=0;re<286;++re)F[re]=0;for(var re=0;re<30;++re)D[re]=0}var ve=2,ge=0,ye=M,xe=k-q&32767;if(ue>2&&H==_(U-xe))for(var _e=Math.min(E,ue)-1,ke=Math.min(32767,U),be=Math.min(258,ue);xe<=ke&&--ye&&k!=q;){if(t[U+ve]==t[U+ve-xe]){for(var Ie=0;Ieve){if(ve=Ie,ge=xe,Ie>_e)break;for(var Qe=Math.min(xe,Ie-2),at=0,re=0;reat&&(at=St,q=Je)}}}k=q,q=N[k],xe+=k-q&32767}if(ge){b[z++]=268435456|Ns[ve]<<18|Ma[ge];var qe=Ns[ve]&31,yt=Ma[ge]&31;B+=ni[qe]+si[yt],++F[257+qe],++D[yt],G=U+ve,++V}else b[z++]=t[U],++F[t[U]]}}for(U=Math.max(U,G);U=c&&(u[g/8|0]=d,He=c),g=Vo(u,g+1,t.subarray(U,He))}a.i=c}return jo(l,0,n+Bo(g)+s)},Vd=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var r=e,n=9;--n;)r=(r&1&&-306674912)^r>>>1;t[e]=r}return t}(),zd=function(){var t=-1;return{p:function(e){for(var r=t,n=0;n>>8;t=r},d:function(){return~t}}},Gd=function(t,e,r,n,s){if(!s&&(s={l:1},e.dictionary)){var a=e.dictionary.subarray(-32768),c=new Ge(a.length+t.length);c.set(a),c.set(t,a.length),t=c,s.w=a.length}return jd(t,e.level==null?6:e.level,e.mem==null?s.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,r,n,s)},Go=function(t,e){var r={};for(var n in t)r[n]=t[n];for(var n in e)r[n]=e[n];return r},ze=function(t,e,r){for(;r;++e)t[e]=r,r>>>=8};function qd(t,e){return Gd(t,e||{},0,0)}var qo=function(t,e,r,n){for(var s in t){var a=t[s],c=e+s,l=n;Array.isArray(a)&&(l=Go(n,a[1]),a=a[0]),a instanceof Ge?r[c]=[a,l]:(r[c+="/"]=[new Ge(0),l],qo(a,c,r,n))}},ba=typeof TextEncoder<"u"&&new TextEncoder,Hd=typeof TextDecoder<"u"&&new TextDecoder,Wd=0;try{Hd.decode(zo,{stream:!0}),Wd=1}catch{}function Gr(t,e){if(e){for(var r=new Ge(t.length),n=0;n>1)),c=0,l=function(g){a[c++]=g},n=0;na.length){var u=new Ge(c+8+(s-n<<1));u.set(a),a=u}var d=t.charCodeAt(n);d<128||e?l(d):d<2048?(l(192|d>>6),l(128|d&63)):d>55295&&d<57344?(d=65536+(d&1047552)|t.charCodeAt(++n)&1023,l(240|d>>18),l(128|d>>12&63),l(128|d>>6&63),l(128|d&63)):(l(224|d>>12),l(128|d>>6&63),l(128|d&63))}return jo(a,0,c)}var Ds=function(t){var e=0;if(t)for(var r in t){var n=t[r].length;n>65535&&Ln(9),e+=n+4}return e},Aa=function(t,e,r,n,s,a,c,l){var u=n.length,d=r.extra,g=l&&l.length,T=Ds(d);ze(t,e,c!=null?33639248:67324752),e+=4,c!=null&&(t[e++]=20,t[e++]=r.os),t[e]=20,e+=2,t[e++]=r.flag<<1|(a<0&&8),t[e++]=s&&8,t[e++]=r.compression&255,t[e++]=r.compression>>8;var E=new Date(r.mtime==null?Date.now():r.mtime),M=E.getFullYear()-1980;if((M<0||M>119)&&Ln(10),ze(t,e,M<<25|E.getMonth()+1<<21|E.getDate()<<16|E.getHours()<<11|E.getMinutes()<<5|E.getSeconds()>>1),e+=4,a!=-1&&(ze(t,e,r.crc),ze(t,e+4,a<0?-a-2:a),ze(t,e+8,r.size)),ze(t,e+12,u),ze(t,e+14,T),e+=16,c!=null&&(ze(t,e,g),ze(t,e+6,r.attrs),ze(t,e+10,c),e+=14),t.set(n,e),e+=u,T)for(var A in d){var N=d[A],m=N.length;ze(t,e,+A),ze(t,e+2,m),t.set(N,e+4),e+=4+m}return g&&(t.set(l,e),e+=g),e},Xd=function(t,e,r,n,s){ze(t,e,101010256),ze(t,e+8,r),ze(t,e+10,r),ze(t,e+12,n),ze(t,e+16,s)};function Yd(t,e){e||(e={});var r={},n=[];qo(t,"",r,e);var s=0,a=0;for(var c in r){var l=r[c],u=l[0],d=l[1],g=d.level==0?0:8,T=Gr(c),E=T.length,M=d.comment,A=M&&Gr(M),N=A&&A.length,m=Ds(d.extra);E>65535&&Ln(11);var I=g?qd(u,d):u,x=I.length,_=zd();_.p(u),n.push(Go(d,{size:u.length,crc:_.d(),c:I,f:T,m:A,u:E!=c.length||A&&M.length!=N,o:s,compression:g})),s+=30+E+m+x,a+=76+2*(E+m)+(N||0)+x}for(var b=new Ge(a+22),F=s,D=a-s,V=0;V0?(r[0]=(l*c+g*n+u*a-d*s)*2/T,r[1]=(u*c+g*s+d*n-l*a)*2/T,r[2]=(d*c+g*a+l*s-u*n)*2/T):(r[0]=(l*c+g*n+u*a-d*s)*2,r[1]=(u*c+g*s+d*n-l*a)*2,r[2]=(d*c+g*a+l*s-u*n)*2),rc(t,e,r),t}function nc(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function sc(t,e){var r=e[0],n=e[1],s=e[2],a=e[4],c=e[5],l=e[6],u=e[8],d=e[9],g=e[10];return t[0]=Math.hypot(r,n,s),t[1]=Math.hypot(a,c,l),t[2]=Math.hypot(u,d,g),t}function ic(t,e){var r=new fe(3);sc(r,e);var n=1/r[0],s=1/r[1],a=1/r[2],c=e[0]*n,l=e[1]*s,u=e[2]*a,d=e[4]*n,g=e[5]*s,T=e[6]*a,E=e[8]*n,M=e[9]*s,A=e[10]*a,N=c+g+A,m=0;return N>0?(m=Math.sqrt(N+1)*2,t[3]=.25*m,t[0]=(T-M)/m,t[1]=(E-u)/m,t[2]=(l-d)/m):c>g&&c>A?(m=Math.sqrt(1+c-g-A)*2,t[3]=(T-M)/m,t[0]=.25*m,t[1]=(l+d)/m,t[2]=(E+u)/m):g>A?(m=Math.sqrt(1+g-c-A)*2,t[3]=(E-u)/m,t[0]=(l+d)/m,t[1]=.25*m,t[2]=(T+M)/m):(m=Math.sqrt(1+A-c-g)*2,t[3]=(l-d)/m,t[0]=(E+u)/m,t[1]=(T+M)/m,t[2]=.25*m),t}function Wg(t,e,r,n){var s=e[0],a=e[1],c=e[2],l=e[3],u=s+s,d=a+a,g=c+c,T=s*u,E=s*d,M=s*g,A=a*d,N=a*g,m=c*g,I=l*u,x=l*d,_=l*g,b=n[0],F=n[1],D=n[2];return t[0]=(1-(A+m))*b,t[1]=(E+_)*b,t[2]=(M-x)*b,t[3]=0,t[4]=(E-_)*F,t[5]=(1-(T+m))*F,t[6]=(N+I)*F,t[7]=0,t[8]=(M+x)*D,t[9]=(N-I)*D,t[10]=(1-(T+A))*D,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function Xg(t,e,r,n,s){var a=e[0],c=e[1],l=e[2],u=e[3],d=a+a,g=c+c,T=l+l,E=a*d,M=a*g,A=a*T,N=c*g,m=c*T,I=l*T,x=u*d,_=u*g,b=u*T,F=n[0],D=n[1],V=n[2],B=s[0],U=s[1],z=s[2],G=(1-(N+I))*F,K=(M+b)*F,H=(A-_)*F,k=(M-b)*D,q=(1-(E+I))*D,ue=(m+x)*D,re=(A+_)*V,ve=(m-x)*V,ge=(1-(E+N))*V;return t[0]=G,t[1]=K,t[2]=H,t[3]=0,t[4]=k,t[5]=q,t[6]=ue,t[7]=0,t[8]=re,t[9]=ve,t[10]=ge,t[11]=0,t[12]=r[0]+B-(G*B+k*U+re*z),t[13]=r[1]+U-(K*B+q*U+ve*z),t[14]=r[2]+z-(H*B+ue*U+ge*z),t[15]=1,t}function Yg(t,e){var r=e[0],n=e[1],s=e[2],a=e[3],c=r+r,l=n+n,u=s+s,d=r*c,g=n*c,T=n*l,E=s*c,M=s*l,A=s*u,N=a*c,m=a*l,I=a*u;return t[0]=1-T-A,t[1]=g+I,t[2]=E-m,t[3]=0,t[4]=g-I,t[5]=1-d-A,t[6]=M+N,t[7]=0,t[8]=E+m,t[9]=M-N,t[10]=1-d-T,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Kg(t,e,r,n,s,a,c){var l=1/(r-e),u=1/(s-n),d=1/(a-c);return t[0]=a*2*l,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a*2*u,t[6]=0,t[7]=0,t[8]=(r+e)*l,t[9]=(s+n)*u,t[10]=(c+a)*d,t[11]=-1,t[12]=0,t[13]=0,t[14]=c*a*2*d,t[15]=0,t}function ac(t,e,r,n,s){var a=1/Math.tan(e/2),c;return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0?(c=1/(n-s),t[10]=(s+n)*c,t[14]=2*s*n*c):(t[10]=-1,t[14]=-2*n),t}var Jg=ac;function Zg(t,e,r,n,s){var a=1/Math.tan(e/2),c;return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0?(c=1/(n-s),t[10]=s*c,t[14]=s*n*c):(t[10]=-1,t[14]=-n),t}function Qg(t,e,r,n){var s=Math.tan(e.upDegrees*Math.PI/180),a=Math.tan(e.downDegrees*Math.PI/180),c=Math.tan(e.leftDegrees*Math.PI/180),l=Math.tan(e.rightDegrees*Math.PI/180),u=2/(c+l),d=2/(s+a);return t[0]=u,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=d,t[6]=0,t[7]=0,t[8]=-((c-l)*u*.5),t[9]=(s-a)*d*.5,t[10]=n/(r-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*r/(r-n),t[15]=0,t}function oc(t,e,r,n,s,a,c){var l=1/(e-r),u=1/(n-s),d=1/(a-c);return t[0]=-2*l,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*d,t[11]=0,t[12]=(e+r)*l,t[13]=(s+n)*u,t[14]=(c+a)*d,t[15]=1,t}var e1=oc;function t1(t,e,r,n,s,a,c){var l=1/(e-r),u=1/(n-s),d=1/(a-c);return t[0]=-2*l,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=d,t[11]=0,t[12]=(e+r)*l,t[13]=(s+n)*u,t[14]=a*d,t[15]=1,t}function r1(t,e,r,n){var s,a,c,l,u,d,g,T,E,M,A=e[0],N=e[1],m=e[2],I=n[0],x=n[1],_=n[2],b=r[0],F=r[1],D=r[2];return Math.abs(A-b)0&&(M=1/Math.sqrt(M),g*=M,T*=M,E*=M);var A=u*E-d*T,N=d*g-l*E,m=l*T-u*g;return M=A*A+N*N+m*m,M>0&&(M=1/Math.sqrt(M),A*=M,N*=M,m*=M),t[0]=A,t[1]=N,t[2]=m,t[3]=0,t[4]=T*m-E*N,t[5]=E*A-g*m,t[6]=g*N-T*A,t[7]=0,t[8]=g,t[9]=T,t[10]=E,t[11]=0,t[12]=s,t[13]=a,t[14]=c,t[15]=1,t}function s1(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function i1(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}function a1(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t}function cc(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}function o1(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t}function c1(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t[9]=e[9]+r[9]*n,t[10]=e[10]+r[10]*n,t[11]=e[11]+r[11]*n,t[12]=e[12]+r[12]*n,t[13]=e[13]+r[13]*n,t[14]=e[14]+r[14]*n,t[15]=e[15]+r[15]*n,t}function l1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function f1(t,e){var r=t[0],n=t[1],s=t[2],a=t[3],c=t[4],l=t[5],u=t[6],d=t[7],g=t[8],T=t[9],E=t[10],M=t[11],A=t[12],N=t[13],m=t[14],I=t[15],x=e[0],_=e[1],b=e[2],F=e[3],D=e[4],V=e[5],B=e[6],U=e[7],z=e[8],G=e[9],K=e[10],H=e[11],k=e[12],q=e[13],ue=e[14],re=e[15];return Math.abs(r-x)<=ee*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(n-_)<=ee*Math.max(1,Math.abs(n),Math.abs(_))&&Math.abs(s-b)<=ee*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(a-F)<=ee*Math.max(1,Math.abs(a),Math.abs(F))&&Math.abs(c-D)<=ee*Math.max(1,Math.abs(c),Math.abs(D))&&Math.abs(l-V)<=ee*Math.max(1,Math.abs(l),Math.abs(V))&&Math.abs(u-B)<=ee*Math.max(1,Math.abs(u),Math.abs(B))&&Math.abs(d-U)<=ee*Math.max(1,Math.abs(d),Math.abs(U))&&Math.abs(g-z)<=ee*Math.max(1,Math.abs(g),Math.abs(z))&&Math.abs(T-G)<=ee*Math.max(1,Math.abs(T),Math.abs(G))&&Math.abs(E-K)<=ee*Math.max(1,Math.abs(E),Math.abs(K))&&Math.abs(M-H)<=ee*Math.max(1,Math.abs(M),Math.abs(H))&&Math.abs(A-k)<=ee*Math.max(1,Math.abs(A),Math.abs(k))&&Math.abs(N-q)<=ee*Math.max(1,Math.abs(N),Math.abs(q))&&Math.abs(m-ue)<=ee*Math.max(1,Math.abs(m),Math.abs(ue))&&Math.abs(I-re)<=ee*Math.max(1,Math.abs(I),Math.abs(re))}var u1=tc,h1=cc,d1=Object.freeze({__proto__:null,add:a1,adjoint:Fg,clone:bg,copy:Ag,create:Rg,determinant:Og,equals:f1,exactEquals:l1,frob:i1,fromQuat:Yg,fromQuat2:Hg,fromRotation:Vg,fromRotationTranslation:rc,fromRotationTranslationScale:Wg,fromRotationTranslationScaleOrigin:Xg,fromScaling:jg,fromTranslation:Bg,fromValues:Sg,fromXRotation:zg,fromYRotation:Gg,fromZRotation:qg,frustum:Kg,getRotation:ic,getScaling:sc,getTranslation:nc,identity:ec,invert:Ng,lookAt:r1,mul:u1,multiply:tc,multiplyScalar:o1,multiplyScalarAndAdd:c1,ortho:e1,orthoNO:oc,orthoZO:t1,perspective:Jg,perspectiveFromFieldOfView:Qg,perspectiveNO:ac,perspectiveZO:Zg,rotate:Pg,rotateX:kg,rotateY:Ug,rotateZ:Lg,scale:$g,set:Ig,str:s1,sub:h1,subtract:cc,targetTo:n1,translate:Dg,transpose:Cg});function ii(){var t=new fe(3);return fe!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function p1(t){var e=new fe(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function lc(t){var e=t[0],r=t[1],n=t[2];return Math.hypot(e,r,n)}function $s(t,e,r){var n=new fe(3);return n[0]=t,n[1]=e,n[2]=r,n}function g1(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function m1(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function v1(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function fc(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function uc(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function hc(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function y1(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function x1(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function T1(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function E1(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function w1(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function M1(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function _1(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}function dc(t,e){var r=e[0]-t[0],n=e[1]-t[1],s=e[2]-t[2];return Math.hypot(r,n,s)}function pc(t,e){var r=e[0]-t[0],n=e[1]-t[1],s=e[2]-t[2];return r*r+n*n+s*s}function gc(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}function R1(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function b1(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function mc(t,e){var r=e[0],n=e[1],s=e[2],a=r*r+n*n+s*s;return a>0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t}function ai(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function wn(t,e,r){var n=e[0],s=e[1],a=e[2],c=r[0],l=r[1],u=r[2];return t[0]=s*u-a*l,t[1]=a*c-n*u,t[2]=n*l-s*c,t}function A1(t,e,r,n){var s=e[0],a=e[1],c=e[2];return t[0]=s+n*(r[0]-s),t[1]=a+n*(r[1]-a),t[2]=c+n*(r[2]-c),t}function S1(t,e,r,n,s,a){var c=a*a,l=c*(2*a-3)+1,u=c*(a-2)+a,d=c*(a-1),g=c*(3-2*a);return t[0]=e[0]*l+r[0]*u+n[0]*d+s[0]*g,t[1]=e[1]*l+r[1]*u+n[1]*d+s[1]*g,t[2]=e[2]*l+r[2]*u+n[2]*d+s[2]*g,t}function I1(t,e,r,n,s,a){var c=1-a,l=c*c,u=a*a,d=l*c,g=3*a*l,T=3*u*c,E=u*a;return t[0]=e[0]*d+r[0]*g+n[0]*T+s[0]*E,t[1]=e[1]*d+r[1]*g+n[1]*T+s[1]*E,t[2]=e[2]*d+r[2]*g+n[2]*T+s[2]*E,t}function C1(t,e){e=e||1;var r=lt()*2*Math.PI,n=lt()*2-1,s=Math.sqrt(1-n*n)*e;return t[0]=Math.cos(r)*s,t[1]=Math.sin(r)*s,t[2]=n*e,t}function N1(t,e,r){var n=e[0],s=e[1],a=e[2],c=r[3]*n+r[7]*s+r[11]*a+r[15];return c=c||1,t[0]=(r[0]*n+r[4]*s+r[8]*a+r[12])/c,t[1]=(r[1]*n+r[5]*s+r[9]*a+r[13])/c,t[2]=(r[2]*n+r[6]*s+r[10]*a+r[14])/c,t}function F1(t,e,r){var n=e[0],s=e[1],a=e[2];return t[0]=n*r[0]+s*r[3]+a*r[6],t[1]=n*r[1]+s*r[4]+a*r[7],t[2]=n*r[2]+s*r[5]+a*r[8],t}function O1(t,e,r){var n=r[0],s=r[1],a=r[2],c=r[3],l=e[0],u=e[1],d=e[2],g=s*d-a*u,T=a*l-n*d,E=n*u-s*l,M=s*E-a*T,A=a*g-n*E,N=n*T-s*g,m=c*2;return g*=m,T*=m,E*=m,M*=2,A*=2,N*=2,t[0]=l+g+M,t[1]=u+T+A,t[2]=d+E+N,t}function D1(t,e,r,n){var s=[],a=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],a[0]=s[0],a[1]=s[1]*Math.cos(n)-s[2]*Math.sin(n),a[2]=s[1]*Math.sin(n)+s[2]*Math.cos(n),t[0]=a[0]+r[0],t[1]=a[1]+r[1],t[2]=a[2]+r[2],t}function $1(t,e,r,n){var s=[],a=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],a[0]=s[2]*Math.sin(n)+s[0]*Math.cos(n),a[1]=s[1],a[2]=s[2]*Math.cos(n)-s[0]*Math.sin(n),t[0]=a[0]+r[0],t[1]=a[1]+r[1],t[2]=a[2]+r[2],t}function P1(t,e,r,n){var s=[],a=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],a[0]=s[0]*Math.cos(n)-s[1]*Math.sin(n),a[1]=s[0]*Math.sin(n)+s[1]*Math.cos(n),a[2]=s[2],t[0]=a[0]+r[0],t[1]=a[1]+r[1],t[2]=a[2]+r[2],t}function k1(t,e){var r=t[0],n=t[1],s=t[2],a=e[0],c=e[1],l=e[2],u=Math.sqrt(r*r+n*n+s*s),d=Math.sqrt(a*a+c*c+l*l),g=u*d,T=g&&ai(t,e)/g;return Math.acos(Math.min(Math.max(T,-1),1))}function U1(t){return t[0]=0,t[1]=0,t[2]=0,t}function L1(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"}function B1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function j1(t,e){var r=t[0],n=t[1],s=t[2],a=e[0],c=e[1],l=e[2];return Math.abs(r-a)<=ee*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(n-c)<=ee*Math.max(1,Math.abs(n),Math.abs(c))&&Math.abs(s-l)<=ee*Math.max(1,Math.abs(s),Math.abs(l))}var V1=fc,z1=uc,G1=hc,q1=dc,H1=pc,vc=lc,W1=gc,X1=function(){var t=ii();return function(e,r,n,s,a,c){var l,u;for(r||(r=3),n||(n=0),s?u=Math.min(s*r+n,e.length):u=e.length,l=n;l0&&(c=1/Math.sqrt(c)),t[0]=r*c,t[1]=n*c,t[2]=s*c,t[3]=a*c,t}function Nc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function s0(t,e,r,n){var s=r[0]*n[1]-r[1]*n[0],a=r[0]*n[2]-r[2]*n[0],c=r[0]*n[3]-r[3]*n[0],l=r[1]*n[2]-r[2]*n[1],u=r[1]*n[3]-r[3]*n[1],d=r[2]*n[3]-r[3]*n[2],g=e[0],T=e[1],E=e[2],M=e[3];return t[0]=T*d-E*u+M*l,t[1]=-(g*d)+E*c-M*a,t[2]=g*u-T*c+M*s,t[3]=-(g*l)+T*a-E*s,t}function Fc(t,e,r,n){var s=e[0],a=e[1],c=e[2],l=e[3];return t[0]=s+n*(r[0]-s),t[1]=a+n*(r[1]-a),t[2]=c+n*(r[2]-c),t[3]=l+n*(r[3]-l),t}function i0(t,e){e=e||1;var r,n,s,a,c,l;do r=lt()*2-1,n=lt()*2-1,c=r*r+n*n;while(c>=1);do s=lt()*2-1,a=lt()*2-1,l=s*s+a*a;while(l>=1);var u=Math.sqrt((1-c)/l);return t[0]=e*r,t[1]=e*n,t[2]=e*s*u,t[3]=e*a*u,t}function a0(t,e,r){var n=e[0],s=e[1],a=e[2],c=e[3];return t[0]=r[0]*n+r[4]*s+r[8]*a+r[12]*c,t[1]=r[1]*n+r[5]*s+r[9]*a+r[13]*c,t[2]=r[2]*n+r[6]*s+r[10]*a+r[14]*c,t[3]=r[3]*n+r[7]*s+r[11]*a+r[15]*c,t}function o0(t,e,r){var n=e[0],s=e[1],a=e[2],c=r[0],l=r[1],u=r[2],d=r[3],g=d*n+l*a-u*s,T=d*s+u*n-c*a,E=d*a+c*s-l*n,M=-c*n-l*s-u*a;return t[0]=g*d+M*-c+T*-u-E*-l,t[1]=T*d+M*-l+E*-c-g*-u,t[2]=E*d+M*-u+g*-l-T*-c,t[3]=e[3],t}function c0(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function l0(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}function Oc(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function Dc(t,e){var r=t[0],n=t[1],s=t[2],a=t[3],c=e[0],l=e[1],u=e[2],d=e[3];return Math.abs(r-c)<=ee*Math.max(1,Math.abs(r),Math.abs(c))&&Math.abs(n-l)<=ee*Math.max(1,Math.abs(n),Math.abs(l))&&Math.abs(s-u)<=ee*Math.max(1,Math.abs(s),Math.abs(u))&&Math.abs(a-d)<=ee*Math.max(1,Math.abs(a),Math.abs(d))}var f0=_c,u0=Rc,h0=bc,d0=Sc,p0=Ic,g0=oi,m0=ci,v0=function(){var t=yc();return function(e,r,n,s,a,c){var l,u;for(r||(r=4),n||(n=0),s?u=Math.min(s*r+n,e.length):u=e.length,l=n;lee?(t[0]=e[0]/n,t[1]=e[1]/n,t[2]=e[2]/n):(t[0]=1,t[1]=0,t[2]=0),r}function E0(t,e){var r=fi(t,e);return Math.acos(2*r*r-1)}function Pc(t,e,r){var n=e[0],s=e[1],a=e[2],c=e[3],l=r[0],u=r[1],d=r[2],g=r[3];return t[0]=n*g+c*l+s*d-a*u,t[1]=s*g+c*u+a*l-n*d,t[2]=a*g+c*d+n*u-s*l,t[3]=c*g-n*l-s*u-a*d,t}function kc(t,e,r){r*=.5;var n=e[0],s=e[1],a=e[2],c=e[3],l=Math.sin(r),u=Math.cos(r);return t[0]=n*u+c*l,t[1]=s*u+a*l,t[2]=a*u-s*l,t[3]=c*u-n*l,t}function Uc(t,e,r){r*=.5;var n=e[0],s=e[1],a=e[2],c=e[3],l=Math.sin(r),u=Math.cos(r);return t[0]=n*u-a*l,t[1]=s*u+c*l,t[2]=a*u+n*l,t[3]=c*u-s*l,t}function Lc(t,e,r){r*=.5;var n=e[0],s=e[1],a=e[2],c=e[3],l=Math.sin(r),u=Math.cos(r);return t[0]=n*u+s*l,t[1]=s*u-n*l,t[2]=a*u+c*l,t[3]=c*u-a*l,t}function w0(t,e){var r=e[0],n=e[1],s=e[2];return t[0]=r,t[1]=n,t[2]=s,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-s*s)),t}function Bc(t,e){var r=e[0],n=e[1],s=e[2],a=e[3],c=Math.sqrt(r*r+n*n+s*s),l=Math.exp(a),u=c>0?l*Math.sin(c)/c:0;return t[0]=r*u,t[1]=n*u,t[2]=s*u,t[3]=l*Math.cos(c),t}function jc(t,e){var r=e[0],n=e[1],s=e[2],a=e[3],c=Math.sqrt(r*r+n*n+s*s),l=c>0?Math.atan2(c,a)/c:0;return t[0]=r*l,t[1]=n*l,t[2]=s*l,t[3]=.5*Math.log(r*r+n*n+s*s+a*a),t}function M0(t,e,r){return jc(t,e),zc(t,t,r),Bc(t,t),t}function Mn(t,e,r,n){var s=e[0],a=e[1],c=e[2],l=e[3],u=r[0],d=r[1],g=r[2],T=r[3],E,M,A,N,m;return M=s*u+a*d+c*g+l*T,M<0&&(M=-M,u=-u,d=-d,g=-g,T=-T),1-M>ee?(E=Math.acos(M),A=Math.sin(E),N=Math.sin((1-n)*E)/A,m=Math.sin(n*E)/A):(N=1-n,m=n),t[0]=N*s+m*u,t[1]=N*a+m*d,t[2]=N*c+m*g,t[3]=N*l+m*T,t}function _0(t){var e=lt(),r=lt(),n=lt(),s=Math.sqrt(1-e),a=Math.sqrt(e);return t[0]=s*Math.sin(2*Math.PI*r),t[1]=s*Math.cos(2*Math.PI*r),t[2]=a*Math.sin(2*Math.PI*n),t[3]=a*Math.cos(2*Math.PI*n),t}function R0(t,e){var r=e[0],n=e[1],s=e[2],a=e[3],c=r*r+n*n+s*s+a*a,l=c?1/c:0;return t[0]=-r*l,t[1]=-n*l,t[2]=-s*l,t[3]=a*l,t}function b0(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function Vc(t,e){var r=e[0]+e[4]+e[8],n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{var s=0;e[4]>e[0]&&(s=1),e[8]>e[s*3+s]&&(s=2);var a=(s+1)%3,c=(s+2)%3;n=Math.sqrt(e[s*3+s]-e[a*3+a]-e[c*3+c]+1),t[s]=.5*n,n=.5/n,t[3]=(e[a*3+c]-e[c*3+a])*n,t[a]=(e[a*3+s]+e[s*3+a])*n,t[c]=(e[c*3+s]+e[s*3+c])*n}return t}function A0(t,e,r,n){var s=.5*Math.PI/180;e*=s,r*=s,n*=s;var a=Math.sin(e),c=Math.cos(e),l=Math.sin(r),u=Math.cos(r),d=Math.sin(n),g=Math.cos(n);return t[0]=a*u*g-c*l*d,t[1]=c*l*g+a*u*d,t[2]=c*u*d-a*l*g,t[3]=c*u*g+a*l*d,t}function S0(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}var I0=xc,C0=Tc,li=Ec,N0=wc,F0=Mc,O0=Pc,zc=Ac,fi=Nc,D0=Fc,ui=oi,$0=ui,hi=ci,P0=hi,di=Cc,k0=Oc,U0=Dc,L0=function(){var t=ii(),e=$s(1,0,0),r=$s(0,1,0);return function(n,s,a){var c=ai(s,a);return c<-.999999?(wn(t,e,s),vc(t)<1e-6&&wn(t,r,s),mc(t,t),$c(n,t,Math.PI),n):c>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(wn(t,s,a),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+c,di(n,n))}}(),B0=function(){var t=Fn(),e=Fn();return function(r,n,s,a,c,l){return Mn(t,n,c,l),Mn(e,s,a,l),Mn(r,t,e,2*l*(1-l)),r}}(),j0=function(){var t=Jo();return function(e,r,n,s){return t[0]=n[0],t[3]=n[1],t[6]=n[2],t[1]=s[0],t[4]=s[1],t[7]=s[2],t[2]=-r[0],t[5]=-r[1],t[8]=-r[2],di(e,Vc(e,t))}}(),V0=Object.freeze({__proto__:null,add:F0,calculateW:w0,clone:I0,conjugate:b0,copy:li,create:Fn,dot:fi,equals:U0,exactEquals:k0,exp:Bc,fromEuler:A0,fromMat3:Vc,fromValues:C0,getAngle:E0,getAxisAngle:T0,identity:x0,invert:R0,len:$0,length:ui,lerp:D0,ln:jc,mul:O0,multiply:Pc,normalize:di,pow:M0,random:_0,rotateX:kc,rotateY:Uc,rotateZ:Lc,rotationTo:L0,scale:zc,set:N0,setAxes:j0,setAxisAngle:$c,slerp:Mn,sqlerp:B0,sqrLen:P0,squaredLength:hi,str:S0});function z0(){var t=new fe(8);return fe!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0),t[3]=1,t}function G0(t){var e=new fe(8);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e}function q0(t,e,r,n,s,a,c,l){var u=new fe(8);return u[0]=t,u[1]=e,u[2]=r,u[3]=n,u[4]=s,u[5]=a,u[6]=c,u[7]=l,u}function H0(t,e,r,n,s,a,c){var l=new fe(8);l[0]=t,l[1]=e,l[2]=r,l[3]=n;var u=s*.5,d=a*.5,g=c*.5;return l[4]=u*n+d*r-g*e,l[5]=d*n+g*t-u*r,l[6]=g*n+u*e-d*t,l[7]=-u*t-d*e-g*r,l}function Gc(t,e,r){var n=r[0]*.5,s=r[1]*.5,a=r[2]*.5,c=e[0],l=e[1],u=e[2],d=e[3];return t[0]=c,t[1]=l,t[2]=u,t[3]=d,t[4]=n*d+s*u-a*l,t[5]=s*d+a*c-n*u,t[6]=a*d+n*l-s*c,t[7]=-n*c-s*l-a*u,t}function W0(t,e){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=e[0]*.5,t[5]=e[1]*.5,t[6]=e[2]*.5,t[7]=0,t}function X0(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function Y0(t,e){var r=Fn();ic(r,e);var n=new fe(3);return nc(n,e),Gc(t,r,n),t}function qc(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t}function K0(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function J0(t,e,r,n,s,a,c,l,u){return t[0]=e,t[1]=r,t[2]=n,t[3]=s,t[4]=a,t[5]=c,t[6]=l,t[7]=u,t}var Z0=li;function Q0(t,e){return t[0]=e[4],t[1]=e[5],t[2]=e[6],t[3]=e[7],t}var em=li;function tm(t,e){return t[4]=e[0],t[5]=e[1],t[6]=e[2],t[7]=e[3],t}function rm(t,e){var r=e[4],n=e[5],s=e[6],a=e[7],c=-e[0],l=-e[1],u=-e[2],d=e[3];return t[0]=(r*d+a*c+n*u-s*l)*2,t[1]=(n*d+a*l+s*c-r*u)*2,t[2]=(s*d+a*u+r*l-n*c)*2,t}function nm(t,e,r){var n=e[0],s=e[1],a=e[2],c=e[3],l=r[0]*.5,u=r[1]*.5,d=r[2]*.5,g=e[4],T=e[5],E=e[6],M=e[7];return t[0]=n,t[1]=s,t[2]=a,t[3]=c,t[4]=c*l+s*d-a*u+g,t[5]=c*u+a*l-n*d+T,t[6]=c*d+n*u-s*l+E,t[7]=-n*l-s*u-a*d+M,t}function sm(t,e,r){var n=-e[0],s=-e[1],a=-e[2],c=e[3],l=e[4],u=e[5],d=e[6],g=e[7],T=l*c+g*n+u*a-d*s,E=u*c+g*s+d*n-l*a,M=d*c+g*a+l*s-u*n,A=g*c-l*n-u*s-d*a;return kc(t,e,r),n=t[0],s=t[1],a=t[2],c=t[3],t[4]=T*c+A*n+E*a-M*s,t[5]=E*c+A*s+M*n-T*a,t[6]=M*c+A*a+T*s-E*n,t[7]=A*c-T*n-E*s-M*a,t}function im(t,e,r){var n=-e[0],s=-e[1],a=-e[2],c=e[3],l=e[4],u=e[5],d=e[6],g=e[7],T=l*c+g*n+u*a-d*s,E=u*c+g*s+d*n-l*a,M=d*c+g*a+l*s-u*n,A=g*c-l*n-u*s-d*a;return Uc(t,e,r),n=t[0],s=t[1],a=t[2],c=t[3],t[4]=T*c+A*n+E*a-M*s,t[5]=E*c+A*s+M*n-T*a,t[6]=M*c+A*a+T*s-E*n,t[7]=A*c-T*n-E*s-M*a,t}function am(t,e,r){var n=-e[0],s=-e[1],a=-e[2],c=e[3],l=e[4],u=e[5],d=e[6],g=e[7],T=l*c+g*n+u*a-d*s,E=u*c+g*s+d*n-l*a,M=d*c+g*a+l*s-u*n,A=g*c-l*n-u*s-d*a;return Lc(t,e,r),n=t[0],s=t[1],a=t[2],c=t[3],t[4]=T*c+A*n+E*a-M*s,t[5]=E*c+A*s+M*n-T*a,t[6]=M*c+A*a+T*s-E*n,t[7]=A*c-T*n-E*s-M*a,t}function om(t,e,r){var n=r[0],s=r[1],a=r[2],c=r[3],l=e[0],u=e[1],d=e[2],g=e[3];return t[0]=l*c+g*n+u*a-d*s,t[1]=u*c+g*s+d*n-l*a,t[2]=d*c+g*a+l*s-u*n,t[3]=g*c-l*n-u*s-d*a,l=e[4],u=e[5],d=e[6],g=e[7],t[4]=l*c+g*n+u*a-d*s,t[5]=u*c+g*s+d*n-l*a,t[6]=d*c+g*a+l*s-u*n,t[7]=g*c-l*n-u*s-d*a,t}function cm(t,e,r){var n=e[0],s=e[1],a=e[2],c=e[3],l=r[0],u=r[1],d=r[2],g=r[3];return t[0]=n*g+c*l+s*d-a*u,t[1]=s*g+c*u+a*l-n*d,t[2]=a*g+c*d+n*u-s*l,t[3]=c*g-n*l-s*u-a*d,l=r[4],u=r[5],d=r[6],g=r[7],t[4]=n*g+c*l+s*d-a*u,t[5]=s*g+c*u+a*l-n*d,t[6]=a*g+c*d+n*u-s*l,t[7]=c*g-n*l-s*u-a*d,t}function lm(t,e,r,n){if(Math.abs(n)0){r=Math.sqrt(r);var n=e[0]/r,s=e[1]/r,a=e[2]/r,c=e[3]/r,l=e[4],u=e[5],d=e[6],g=e[7],T=n*l+s*u+a*d+c*g;t[0]=n,t[1]=s,t[2]=a,t[3]=c,t[4]=(l-n*T)/r,t[5]=(u-s*T)/r,t[6]=(d-a*T)/r,t[7]=(g-c*T)/r}return t}function xm(t){return"quat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+")"}function Tm(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]}function Em(t,e){var r=t[0],n=t[1],s=t[2],a=t[3],c=t[4],l=t[5],u=t[6],d=t[7],g=e[0],T=e[1],E=e[2],M=e[3],A=e[4],N=e[5],m=e[6],I=e[7];return Math.abs(r-g)<=ee*Math.max(1,Math.abs(r),Math.abs(g))&&Math.abs(n-T)<=ee*Math.max(1,Math.abs(n),Math.abs(T))&&Math.abs(s-E)<=ee*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(a-M)<=ee*Math.max(1,Math.abs(a),Math.abs(M))&&Math.abs(c-A)<=ee*Math.max(1,Math.abs(c),Math.abs(A))&&Math.abs(l-N)<=ee*Math.max(1,Math.abs(l),Math.abs(N))&&Math.abs(u-m)<=ee*Math.max(1,Math.abs(u),Math.abs(m))&&Math.abs(d-I)<=ee*Math.max(1,Math.abs(d),Math.abs(I))}var wm=Object.freeze({__proto__:null,add:fm,clone:G0,conjugate:gm,copy:qc,create:z0,dot:Wc,equals:Em,exactEquals:Tm,fromMat4:Y0,fromRotation:X0,fromRotationTranslation:Gc,fromRotationTranslationValues:H0,fromTranslation:W0,fromValues:q0,getDual:Q0,getReal:Z0,getTranslation:rm,identity:K0,invert:pm,len:mm,length:Xc,lerp:dm,mul:um,multiply:Hc,normalize:ym,rotateAroundAxis:lm,rotateByQuatAppend:om,rotateByQuatPrepend:cm,rotateX:sm,rotateY:im,rotateZ:am,scale:hm,set:J0,setDual:tm,setReal:em,sqrLen:vm,squaredLength:Bn,str:xm,translate:nm});function Yc(){var t=new fe(2);return fe!=Float32Array&&(t[0]=0,t[1]=0),t}function Mm(t){var e=new fe(2);return e[0]=t[0],e[1]=t[1],e}function _m(t,e){var r=new fe(2);return r[0]=t,r[1]=e,r}function Rm(t,e){return t[0]=e[0],t[1]=e[1],t}function bm(t,e,r){return t[0]=e,t[1]=r,t}function Am(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function Kc(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function Jc(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function Zc(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function Sm(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function Im(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function Cm(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function Nm(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function Fm(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t}function Om(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function Dm(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t}function Qc(t,e){var r=e[0]-t[0],n=e[1]-t[1];return Math.hypot(r,n)}function el(t,e){var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n}function tl(t){var e=t[0],r=t[1];return Math.hypot(e,r)}function rl(t){var e=t[0],r=t[1];return e*e+r*r}function $m(t,e){return t[0]=-e[0],t[1]=-e[1],t}function Pm(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function km(t,e){var r=e[0],n=e[1],s=r*r+n*n;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t}function Um(t,e){return t[0]*e[0]+t[1]*e[1]}function Lm(t,e,r){var n=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=n,t}function Bm(t,e,r,n){var s=e[0],a=e[1];return t[0]=s+n*(r[0]-s),t[1]=a+n*(r[1]-a),t}function jm(t,e){e=e||1;var r=lt()*2*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function Vm(t,e,r){var n=e[0],s=e[1];return t[0]=r[0]*n+r[2]*s,t[1]=r[1]*n+r[3]*s,t}function zm(t,e,r){var n=e[0],s=e[1];return t[0]=r[0]*n+r[2]*s+r[4],t[1]=r[1]*n+r[3]*s+r[5],t}function Gm(t,e,r){var n=e[0],s=e[1];return t[0]=r[0]*n+r[3]*s+r[6],t[1]=r[1]*n+r[4]*s+r[7],t}function qm(t,e,r){var n=e[0],s=e[1];return t[0]=r[0]*n+r[4]*s+r[12],t[1]=r[1]*n+r[5]*s+r[13],t}function Hm(t,e,r,n){var s=e[0]-r[0],a=e[1]-r[1],c=Math.sin(n),l=Math.cos(n);return t[0]=s*l-a*c+r[0],t[1]=s*c+a*l+r[1],t}function Wm(t,e){var r=t[0],n=t[1],s=e[0],a=e[1],c=Math.sqrt(r*r+n*n)*Math.sqrt(s*s+a*a),l=c&&(r*s+n*a)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function Xm(t){return t[0]=0,t[1]=0,t}function Ym(t){return"vec2("+t[0]+", "+t[1]+")"}function Km(t,e){return t[0]===e[0]&&t[1]===e[1]}function Jm(t,e){var r=t[0],n=t[1],s=e[0],a=e[1];return Math.abs(r-s)<=ee*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=ee*Math.max(1,Math.abs(n),Math.abs(a))}var Zm=tl,Qm=Kc,ev=Jc,tv=Zc,rv=Qc,nv=el,sv=rl,iv=function(){var t=Yc();return function(e,r,n,s,a,c){var l,u;for(r||(r=2),n||(n=0),s?u=Math.min(s*r+n,e.length):u=e.length,l=n;l{var t=import.meta.url;return async function(e={}){var r,n=e,s,a,c=new Promise((i,o)=>{s=i,a=o}),l=typeof window=="object",u=typeof importScripts=="function",d=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(d){const{createRequire:i}=await import("./__vite-browser-external-4ed993c7.js");var g=i(import.meta.url)}var T=!1;n.setup=function(){if(T)return;T=!0;function i(C,S,$=j=>j){if(S)for(let j of S)C.push_back($(j));return C}function o(C,S=$=>$){const $=[],j=C.size();for(let Z=0;Z$){const $=[],j=C.size();for(let Z=0;Zi(new n.Vector_vec2,S,$=>$ instanceof Array?{x:$[0],y:$[1]}:$))}function p(C){for(let S=0;SC.min[S]),max:["x","y"].map(S=>C.max[S])}},n.CrossSection.prototype.offset=function(C,S="Square",$=2,j=0){return this._Offset(C,O(S),$,j)},n.CrossSection.prototype.extrude=function(C,S=0,$=0,j=[1,1],Z=!1){j=v([j]);const pe=n._Extrude(this._ToPolygons(),C,S,$,j);return Z?pe.translate([0,0,-C/2]):pe},n.CrossSection.prototype.revolve=function(C=0,S=360){return n._Revolve(this._ToPolygons(),C,S)},n.CrossSection.prototype.add=function(C){return this._add(L(C))},n.CrossSection.prototype.subtract=function(C){return this._subtract(L(C))},n.CrossSection.prototype.intersect=function(C){return this._intersect(L(C))},n.CrossSection.prototype.toPolygons=function(){const C=this._ToPolygons(),S=f(C);return C.delete(),S},n.Manifold.prototype.smoothOut=function(C=60,S=0){return this._SmoothOut(C,S)},n.Manifold.prototype.warp=function(C){const S=Sr(function(Z){const pe=ot(Z,"float"),le=ot(Z+4,"float"),et=ot(Z+8,"float"),je=[pe,le,et];C(je),nr(Z,je[0],"float"),nr(Z+4,je[1],"float"),nr(Z+8,je[2],"float")},"vi"),$=this._Warp(S);Ir(S);const j=$.status();if(j.value!==0)throw new n.ManifoldError(j.value);return $},n.Manifold.prototype.calculateNormals=function(C,S=60){return this._CalculateNormals(C,S)},n.Manifold.prototype.setProperties=function(C,S){const $=this.numProp(),j=Sr(function(pe,le,et){const je=[];for(let Oe=0;OeC.min[S]),max:["x","y","z"].map(S=>C.max[S])}};class X{constructor({numProp:S=3,triVerts:$=new Uint32Array,vertProperties:j=new Float32Array,mergeFromVert:Z,mergeToVert:pe,runIndex:le,runOriginalID:et,faceID:je,halfedgeTangent:cr,runTransform:lr}={}){this.numProp=S,this.triVerts=$,this.vertProperties=j,this.mergeFromVert=Z,this.mergeToVert=pe,this.runIndex=le,this.runOriginalID=et,this.faceID=je,this.halfedgeTangent=cr,this.runTransform=lr}get numTri(){return this.triVerts.length/3}get numVert(){return this.vertProperties.length/this.numProp}get numRun(){return this.runOriginalID.length}merge(){const{changed:S,mesh:$}=n._Merge(this);return Object.assign(this,{...$}),S}verts(S){return this.triVerts.subarray(3*S,3*(S+1))}position(S){return this.vertProperties.subarray(numProp*S,numProp*S+3)}extras(S){return this.vertProperties.subarray(numProp*S+3,numProp*(S+1))}tangent(S){return this.halfedgeTangent.subarray(4*S,4*(S+1))}transform(S){const $=new Array(16);for(const j of[0,1,2,3])for(const Z of[0,1,2])$[4*j+Z]=this.runTransform[12*S+3*j+Z];return $[15]=1,$}}n.Mesh=X,n.Manifold.prototype.getMesh=function(C=[0,0,0]){return C instanceof Array&&(C={0:C[0],1:C[1],2:C[2]}),new X(this._GetMeshJS(C))},n.ManifoldError=function(S,...$){let j="Unknown error";switch(S){case n.status.NonFiniteVertex.value:j="Non-finite vertex";break;case n.status.NotManifold.value:j="Not manifold";break;case n.status.VertexOutOfBounds.value:j="Vertex index out of bounds";break;case n.status.PropertiesWrongLength.value:j="Properties have wrong length";break;case n.status.MissingPositionProperties.value:j="Less than three properties";break;case n.status.MergeVectorsDifferentLengths.value:j="Merge vectors have different lengths";break;case n.status.MergeIndexOutOfBounds.value:j="Merge index out of bounds";break;case n.status.TransformWrongLength.value:j="Transform vector has wrong length";break;case n.status.RunIndexWrongLength.value:j="Run index vector has wrong length";break;case n.status.FaceIDWrongLength.value:j="Face ID vector has wrong length";case n.status.InvalidConstruction.value:j="Manifold constructed with invalid parameters"}const Z=Error.apply(this,[j,...$]);Z.name=this.name="ManifoldError",this.message=Z.message,this.stack=Z.stack,this.code=S},n.ManifoldError.prototype=Object.create(Error.prototype,{constructor:{value:n.ManifoldError,writable:!0,configurable:!0}}),n.CrossSection=function(C,S="Positive"){const $=h(C),j=new P($,R(S));return p($),j},n.CrossSection.ofPolygons=function(C,S="Positive"){return new n.CrossSection(C,S)},n.CrossSection.square=function(...C){let S;C.length==0?S={x:1,y:1}:typeof C[0]=="number"?S={x:C[0],y:C[0]}:S=v(C);const $=C[1]||!1;return n._Square(S,$)},n.CrossSection.circle=function(C,S=0){return n._Circle(C,S)};function Y(C){return function(...S){S.length==1&&(S=S[0]);const $=new n.Vector_crossSection;for(const Z of S)$.push_back(L(Z));const j=n["_crossSection"+C]($);return $.delete(),j}}n.CrossSection.compose=Y("Compose"),n.CrossSection.union=Y("UnionN"),n.CrossSection.difference=Y("DifferenceN"),n.CrossSection.intersection=Y("IntersectionN");function J(C,S){i(C,S,$=>$ instanceof Array?{x:$[0],y:$[1]}:$)}n.CrossSection.hull=function(...C){C.length==1&&(C=C[0]);let S=new n.Vector_vec2;for(const j of C)if(j instanceof P)n._crossSectionCollectVertices(S,j);else if(j instanceof Array&&j.length==2&&typeof j[0]=="number")S.push_back({x:j[0],y:j[1]});else if(j.x)S.push_back(j);else{const pe=j[0].length==2&&typeof j[0][0]=="number"||j[0].x?[j]:j;for(const le of pe)J(S,le)}const $=n._crossSectionHullPoints(S);return S.delete(),$},n.CrossSection.prototype=Object.create(P.prototype),Object.defineProperty(n.CrossSection,Symbol.hasInstance,{get:()=>C=>C instanceof P});const Q=n.Manifold;n.Manifold=function(C){const S=new Q(C),$=S.status();if($.value!==0)throw new n.ManifoldError($.value);return S},n.Manifold.ofMesh=function(C){return new n.Manifold(C)},n.Manifold.tetrahedron=function(){return n._Tetrahedron()},n.Manifold.cube=function(...C){let S;C.length==0?S={x:1,y:1,z:1}:typeof C[0]=="number"?S={x:C[0],y:C[0],z:C[0]}:S=w(C);const $=C[1]||!1;return n._Cube(S,$)},n.Manifold.cylinder=function(C,S,$=-1,j=0,Z=!1){return n._Cylinder(C,S,$,j,Z)},n.Manifold.sphere=function(C,S=0){return n._Sphere(C,S)},n.Manifold.smooth=function(C,S=[]){const $=new n.Vector_smoothness;i($,S);const j=n._Smooth(C,$);return $.delete(),j},n.Manifold.extrude=function(C,S,$=0,j=0,Z=[1,1],pe=!1){return(C instanceof P?C:n.CrossSection(C,"Positive")).extrude(S,$,j,Z,pe)},n.Manifold.revolve=function(C,S=0,$=360){return(C instanceof P?C:n.CrossSection(C,"Positive")).revolve(S,$)},n.Manifold.reserveIDs=function(C){return n._ReserveIDs(C)},n.Manifold.compose=function(C){const S=new n.Vector_manifold;i(S,C);const $=n._manifoldCompose(S);return S.delete(),$};function de(C){return function(...S){S.length==1&&(S=S[0]);const $=new n.Vector_manifold;for(const Z of S)$.push_back(Z);const j=n["_manifold"+C+"N"]($);return $.delete(),j}}n.Manifold.union=de("Union"),n.Manifold.difference=de("Difference"),n.Manifold.intersection=de("Intersection"),n.Manifold.levelSet=function(C,S,$,j=0,Z=-1){const pe={min:{x:S.min[0],y:S.min[1],z:S.min[2]},max:{x:S.max[0],y:S.max[1],z:S.max[2]}},le=Sr(function(je){const cr=ot(je,"float"),lr=ot(je+4,"float"),Oe=ot(je+8,"float");return C([cr,lr,Oe])},"fi"),et=n._LevelSet(le,pe,$,j,Z);return Ir(le),et};function we(C,S){i(C,S,$=>$ instanceof Array?{x:$[0],y:$[1],z:$[2]}:$)}n.Manifold.hull=function(...C){C.length==1&&(C=C[0]);let S=new n.Vector_vec3;for(const j of C)j instanceof Q?n._manifoldCollectVertices(S,j):j instanceof Array&&j.length==3&&typeof j[0]=="number"?S.push_back({x:j[0],y:j[1],z:j[2]}):j.x?S.push_back(j):we(S,j);const $=n._manifoldHullPoints(S);return S.delete(),$},n.Manifold.prototype=Object.create(Q.prototype),Object.defineProperty(n.Manifold,Symbol.hasInstance,{get:()=>C=>C instanceof Q}),n.triangulate=function(C,S=-1){const $=h(C),j=o(n._Triangulate($,S),Z=>[Z[0],Z[1],Z[2]]);return p($),j}};var E=Object.assign({},n),M="./this.program",A="";function N(i){return n.locateFile?n.locateFile(i,A):A+i}var m,I,x;if(d){var _=g("fs"),b=g("path");A=g("url").fileURLToPath(new URL("./",self.location)),m=(i,o)=>(i=rr(i)?new URL(i):b.normalize(i),_.readFileSync(i,o?void 0:"utf8")),x=i=>{var o=m(i,!0);return o.buffer||(o=new Uint8Array(o)),o},I=(i,o,f,h=!0)=>{i=rr(i)?new URL(i):b.normalize(i),_.readFile(i,h?void 0:"utf8",(p,v)=>{p?f(p):o(h?v.buffer:v)})},!n.thisProgram&&process.argv.length>1&&(M=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else(l||u)&&(u?A=self.location.href:typeof document<"u"&&document.currentScript&&(A=document.currentScript.src),t&&(A=t),A.startsWith("blob:")?A="":A=A.substr(0,A.replace(/[?#].*/,"").lastIndexOf("/")+1),m=i=>{var o=new XMLHttpRequest;return o.open("GET",i,!1),o.send(null),o.responseText},u&&(x=i=>{var o=new XMLHttpRequest;return o.open("GET",i,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),I=(i,o,f)=>{if(rr(i)){var h=new XMLHttpRequest;h.open("GET",i,!0),h.responseType="arraybuffer",h.onload=()=>{if(h.status==200||h.status==0&&h.response){o(h.response);return}f()},h.onerror=f,h.send(null);return}fetch(i,{credentials:"same-origin"}).then(p=>p.ok?p.arrayBuffer():Promise.reject(new Error(p.status+" : "+p.url))).then(o,f)});var F=n.print||console.log.bind(console),D=n.printErr||console.error.bind(console);Object.assign(n,E),E=null,n.arguments&&n.arguments,n.thisProgram&&(M=n.thisProgram),n.quit&&n.quit;var V;n.wasmBinary&&(V=n.wasmBinary);var B,U=!1,z,G,K,H,k,q,ue,re;function ve(){var i=B.buffer;n.HEAP8=z=new Int8Array(i),n.HEAP16=K=new Int16Array(i),n.HEAPU8=G=new Uint8Array(i),n.HEAPU16=H=new Uint16Array(i),n.HEAP32=k=new Int32Array(i),n.HEAPU32=q=new Uint32Array(i),n.HEAPF32=ue=new Float32Array(i),n.HEAPF64=re=new Float64Array(i)}var ge=[],ye=[],xe=[];function _e(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Ie(n.preRun.shift());zn(ge)}function ke(){!n.noFSInit&&!y.init.initialized&&y.init(),y.ignorePermissions=!1,zn(ye)}function be(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)at(n.postRun.shift());zn(xe)}function Ie(i){ge.unshift(i)}function Qe(i){ye.unshift(i)}function at(i){xe.unshift(i)}var Je=0,Ee=null;function St(i){return i}function qe(i){Je++,n.monitorRunDependencies?.(Je)}function yt(i){if(Je--,n.monitorRunDependencies?.(Je),Je==0&&Ee){var o=Ee;Ee=null,o()}}function He(i){n.onAbort?.(i),i="Aborted("+i+")",D(i),U=!0,i+=". Build with -sASSERTIONS for more info.";var o=new WebAssembly.RuntimeError(i);throw a(o),o}var It="data:application/octet-stream;base64,",Jr=i=>i.startsWith(It),rr=i=>i.startsWith("file://");function Vn(){if(n.locateFile){var i="manifold.wasm";return Jr(i)?i:N(i)}return new URL("/assets/manifold-0d01590b.wasm",self.location).href}var Zr;function vi(i){if(i==Zr&&V)return new Uint8Array(V);if(x)return x(i);throw"both async and sync fetching of the wasm failed"}function pl(i){return V?Promise.resolve().then(()=>vi(i)):new Promise((o,f)=>{I(i,h=>o(new Uint8Array(h)),h=>{try{o(vi(i))}catch(p){f(p)}})})}function yi(i,o,f){return pl(i).then(h=>WebAssembly.instantiate(h,o)).then(f,h=>{D(`failed to asynchronously prepare wasm: ${h}`),He(h)})}function gl(i,o,f,h){return!i&&typeof WebAssembly.instantiateStreaming=="function"&&!Jr(o)&&!rr(o)&&!d&&typeof fetch=="function"?fetch(o,{credentials:"same-origin"}).then(p=>{var v=WebAssembly.instantiateStreaming(p,f);return v.then(h,function(w){return D(`wasm streaming compile failed: ${w}`),D("falling back to ArrayBuffer instantiation"),yi(o,f,h)})}):yi(o,f,h)}function ml(){return{a:_u}}function vl(){var i=ml();function o(h,p){return Ce=h.exports,B=Ce.Ma,ve(),Ft=Ce.Pa,Qe(Ce.Na),yt(),Ce}qe();function f(h){o(h.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(i,o)}catch(h){D(`Module.instantiateWasm callback failed with error: ${h}`),a(h)}return Zr||(Zr=Vn()),gl(V,Zr,i,f).catch(a),{}}var he,Le,zn=i=>{for(;i.length>0;)i.shift()(n)};function ot(i,o="i8"){switch(o.endsWith("*")&&(o="*"),o){case"i1":return z[i];case"i8":return z[i];case"i16":return K[i>>1];case"i32":return k[i>>2];case"i64":He("to do getValue(i64) use WASM_BIGINT");case"float":return ue[i>>2];case"double":return re[i>>3];case"*":return q[i>>2];default:He(`invalid type for getValue: ${o}`)}}n.noExitRuntime;function nr(i,o,f="i8"){switch(f.endsWith("*")&&(f="*"),f){case"i1":z[i]=o;break;case"i8":z[i]=o;break;case"i16":K[i>>1]=o;break;case"i32":k[i>>2]=o;break;case"i64":He("to do setValue(i64) use WASM_BIGINT");case"float":ue[i>>2]=o;break;case"double":re[i>>3]=o;break;case"*":q[i>>2]=o;break;default:He(`invalid type for setValue: ${f}`)}}var ie=i=>qi(i),ae=()=>Hi(),Qr=[],en=0,yl=i=>{var o=new Gn(i);return o.get_caught()||(o.set_caught(!0),en--),o.set_rethrown(!1),Qr.push(o),Xi(o.excPtr),o.get_exception_ptr()},xt=0,xl=()=>{se(0,0);var i=Qr.pop();Wi(i.excPtr),xt=0};class Gn{constructor(o){this.excPtr=o,this.ptr=o-24}set_type(o){q[this.ptr+4>>2]=o}get_type(){return q[this.ptr+4>>2]}set_destructor(o){q[this.ptr+8>>2]=o}get_destructor(){return q[this.ptr+8>>2]}set_caught(o){o=o?1:0,z[this.ptr+12]=o}get_caught(){return z[this.ptr+12]!=0}set_rethrown(o){o=o?1:0,z[this.ptr+13]=o}get_rethrown(){return z[this.ptr+13]!=0}init(o,f){this.set_adjusted_ptr(0),this.set_type(o),this.set_destructor(f)}set_adjusted_ptr(o){q[this.ptr+16>>2]=o}get_adjusted_ptr(){return q[this.ptr+16>>2]}get_exception_ptr(){var o=Ki(this.get_type());if(o)return q[this.excPtr>>2];var f=this.get_adjusted_ptr();return f!==0?f:this.excPtr}}var Tl=i=>{throw xt||(xt=i),xt},tn=i=>Gi(i),xi=i=>{var o=xt;if(!o)return tn(0),0;var f=new Gn(o);f.set_adjusted_ptr(o);var h=f.get_type();if(!h)return tn(0),o;for(var p of i){if(p===0||p===h)break;var v=f.ptr+16;if(Yi(p,h,v))return tn(p),o}return tn(h),o},El=()=>xi([]),wl=i=>xi([i]),Ml=()=>{var i=Qr.pop();i||He("no exception to throw");var o=i.excPtr;throw i.get_rethrown()||(Qr.push(i),i.set_rethrown(!0),i.set_caught(!1),en++),xt=o,xt},_l=(i,o,f)=>{var h=new Gn(i);throw h.init(o,f),xt=i,en++,xt},Rl=()=>en,bl=()=>{He("")},rn={},qn=i=>{for(;i.length;){var o=i.pop(),f=i.pop();f(o)}};function Tr(i){return this.fromWireType(q[i>>2])}var sr={},Ct={},nn={},Ti,sn=i=>{throw new Ti(i)},Nt=(i,o,f)=>{i.forEach(function(R){nn[R]=o});function h(R){var O=f(R);O.length!==i.length&&sn("Mismatched type converter count");for(var P=0;P{Ct.hasOwnProperty(R)?p[O]=Ct[R]:(v.push(R),sr.hasOwnProperty(R)||(sr[R]=[]),sr[R].push(()=>{p[O]=Ct[R],++w,w===v.length&&h(p)}))}),v.length===0&&h(p)},Al=i=>{var o=rn[i];delete rn[i];var f=o.rawConstructor,h=o.rawDestructor,p=o.fields,v=p.map(w=>w.getterReturnType).concat(p.map(w=>w.setterArgumentType));Nt([i],v,w=>{var R={};return p.forEach((O,P)=>{var L=O.fieldName,X=w[P],Y=O.getter,J=O.getterContext,Q=w[P+p.length],de=O.setter,we=O.setterContext;R[L]={read:C=>X.fromWireType(Y(J,C)),write:(C,S)=>{var $=[];de(we,C,Q.toWireType($,S)),qn($)}}}),[{name:o.name,fromWireType:O=>{var P={};for(var L in R)P[L]=R[L].read(O);return h(O),P},toWireType:(O,P)=>{for(var L in R)if(!(L in P))throw new TypeError(`Missing field: "${L}"`);var X=f();for(L in R)R[L].write(X,P[L]);return O!==null&&O.push(h,X),X},argPackAdvance:dt,readValueFromPointer:Tr,destructorFunction:h}]})},Sl=(i,o,f,h,p)=>{},Il=()=>{for(var i=new Array(256),o=0;o<256;++o)i[o]=String.fromCharCode(o);Ei=i},Ei,Ve=i=>{for(var o="",f=i;G[f];)o+=Ei[G[f++]];return o},ir,me=i=>{throw new ir(i)};function Cl(i,o,f={}){var h=o.name;if(i||me(`type "${h}" must have a positive integer typeid pointer`),Ct.hasOwnProperty(i)){if(f.ignoreDuplicateRegistrations)return;me(`Cannot register type '${h}' twice`)}if(Ct[i]=o,delete nn[i],sr.hasOwnProperty(i)){var p=sr[i];delete sr[i],p.forEach(v=>v())}}function ht(i,o,f={}){if(!("argPackAdvance"in o))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Cl(i,o,f)}var dt=8,Nl=(i,o,f,h)=>{o=Ve(o),ht(i,{name:o,fromWireType:function(p){return!!p},toWireType:function(p,v){return v?f:h},argPackAdvance:dt,readValueFromPointer:function(p){return this.fromWireType(G[p])},destructorFunction:null})},Fl=i=>({count:i.count,deleteScheduled:i.deleteScheduled,preservePointerOnDelete:i.preservePointerOnDelete,ptr:i.ptr,ptrType:i.ptrType,smartPtr:i.smartPtr,smartPtrType:i.smartPtrType}),Hn=i=>{function o(f){return f.$$.ptrType.registeredClass.name}me(o(i)+" instance already deleted")},Wn=!1,wi=i=>{},Ol=i=>{i.smartPtr?i.smartPtrType.rawDestructor(i.smartPtr):i.ptrType.registeredClass.rawDestructor(i.ptr)},Mi=i=>{i.count.value-=1;var o=i.count.value===0;o&&Ol(i)},_i=(i,o,f)=>{if(o===f)return i;if(f.baseClass===void 0)return null;var h=_i(i,o,f.baseClass);return h===null?null:f.downcast(h)},Ri={},Dl=()=>Object.keys(Mr).length,$l=()=>{var i=[];for(var o in Mr)Mr.hasOwnProperty(o)&&i.push(Mr[o]);return i},Er=[],Xn=()=>{for(;Er.length;){var i=Er.pop();i.$$.deleteScheduled=!1,i.delete()}},wr,Pl=i=>{wr=i,Er.length&&wr&&wr(Xn)},kl=()=>{n.getInheritedInstanceCount=Dl,n.getLiveInheritedInstances=$l,n.flushPendingDeletes=Xn,n.setDelayFunction=Pl},Mr={},Ul=(i,o)=>{for(o===void 0&&me("ptr should not be undefined");i.baseClass;)o=i.upcast(o),i=i.baseClass;return o},Ll=(i,o)=>(o=Ul(i,o),Mr[o]),an=(i,o)=>{(!o.ptrType||!o.ptr)&&sn("makeClassHandle requires ptr and ptrType");var f=!!o.smartPtrType,h=!!o.smartPtr;return f!==h&&sn("Both smartPtrType and smartPtr must be specified"),o.count={value:1},_r(Object.create(i,{$$:{value:o,writable:!0}}))};function Bl(i){var o=this.getPointee(i);if(!o)return this.destructor(i),null;var f=Ll(this.registeredClass,o);if(f!==void 0){if(f.$$.count.value===0)return f.$$.ptr=o,f.$$.smartPtr=i,f.clone();var h=f.clone();return this.destructor(i),h}function p(){return this.isSmartPointer?an(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:o,smartPtrType:this,smartPtr:i}):an(this.registeredClass.instancePrototype,{ptrType:this,ptr:i})}var v=this.registeredClass.getActualType(o),w=Ri[v];if(!w)return p.call(this);var R;this.isConst?R=w.constPointerType:R=w.pointerType;var O=_i(o,this.registeredClass,R.registeredClass);return O===null?p.call(this):this.isSmartPointer?an(R.registeredClass.instancePrototype,{ptrType:R,ptr:O,smartPtrType:this,smartPtr:i}):an(R.registeredClass.instancePrototype,{ptrType:R,ptr:O})}var _r=i=>typeof FinalizationRegistry>"u"?(_r=o=>o,i):(Wn=new FinalizationRegistry(o=>{Mi(o.$$)}),_r=o=>{var f=o.$$,h=!!f.smartPtr;if(h){var p={$$:f};Wn.register(o,p,o)}return o},wi=o=>Wn.unregister(o),_r(i)),jl=()=>{Object.assign(on.prototype,{isAliasOf(i){if(!(this instanceof on)||!(i instanceof on))return!1;var o=this.$$.ptrType.registeredClass,f=this.$$.ptr;i.$$=i.$$;for(var h=i.$$.ptrType.registeredClass,p=i.$$.ptr;o.baseClass;)f=o.upcast(f),o=o.baseClass;for(;h.baseClass;)p=h.upcast(p),h=h.baseClass;return o===h&&f===p},clone(){if(this.$$.ptr||Hn(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var i=_r(Object.create(Object.getPrototypeOf(this),{$$:{value:Fl(this.$$)}}));return i.$$.count.value+=1,i.$$.deleteScheduled=!1,i},delete(){this.$$.ptr||Hn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),wi(this),Mi(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Hn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),Er.push(this),Er.length===1&&wr&&wr(Xn),this.$$.deleteScheduled=!0,this}})};function on(){}var ar=(i,o)=>Object.defineProperty(o,"name",{value:i}),bi=(i,o,f)=>{if(i[o].overloadTable===void 0){var h=i[o];i[o]=function(...p){return i[o].overloadTable.hasOwnProperty(p.length)||me(`Function '${f}' called with an invalid number of arguments (${p.length}) - expects one of (${i[o].overloadTable})!`),i[o].overloadTable[p.length].apply(this,p)},i[o].overloadTable=[],i[o].overloadTable[h.argCount]=h}},Yn=(i,o,f)=>{n.hasOwnProperty(i)?((f===void 0||n[i].overloadTable!==void 0&&n[i].overloadTable[f]!==void 0)&&me(`Cannot register public name '${i}' twice`),bi(n,i,i),n.hasOwnProperty(f)&&me(`Cannot register multiple overloads of a function with the same number of arguments (${f})!`),n[i].overloadTable[f]=o):(n[i]=o,f!==void 0&&(n[i].numArguments=f))},Vl=48,zl=57,Gl=i=>{if(i===void 0)return"_unknown";i=i.replace(/[^a-zA-Z0-9_]/g,"$");var o=i.charCodeAt(0);return o>=Vl&&o<=zl?`_${i}`:i};function ql(i,o,f,h,p,v,w,R){this.name=i,this.constructor=o,this.instancePrototype=f,this.rawDestructor=h,this.baseClass=p,this.getActualType=v,this.upcast=w,this.downcast=R,this.pureVirtualFunctions=[]}var Kn=(i,o,f)=>{for(;o!==f;)o.upcast||me(`Expected null or instance of ${f.name}, got an instance of ${o.name}`),i=o.upcast(i),o=o.baseClass;return i};function Hl(i,o){if(o===null)return this.isReference&&me(`null is not a valid ${this.name}`),0;o.$$||me(`Cannot pass "${ts(o)}" as a ${this.name}`),o.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`);var f=o.$$.ptrType.registeredClass,h=Kn(o.$$.ptr,f,this.registeredClass);return h}function Wl(i,o){var f;if(o===null)return this.isReference&&me(`null is not a valid ${this.name}`),this.isSmartPointer?(f=this.rawConstructor(),i!==null&&i.push(this.rawDestructor,f),f):0;(!o||!o.$$)&&me(`Cannot pass "${ts(o)}" as a ${this.name}`),o.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&o.$$.ptrType.isConst&&me(`Cannot convert argument of type ${o.$$.smartPtrType?o.$$.smartPtrType.name:o.$$.ptrType.name} to parameter type ${this.name}`);var h=o.$$.ptrType.registeredClass;if(f=Kn(o.$$.ptr,h,this.registeredClass),this.isSmartPointer)switch(o.$$.smartPtr===void 0&&me("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:o.$$.smartPtrType===this?f=o.$$.smartPtr:me(`Cannot convert argument of type ${o.$$.smartPtrType?o.$$.smartPtrType.name:o.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:f=o.$$.smartPtr;break;case 2:if(o.$$.smartPtrType===this)f=o.$$.smartPtr;else{var p=o.clone();f=this.rawShare(f,Be.toHandle(()=>p.delete())),i!==null&&i.push(this.rawDestructor,f)}break;default:me("Unsupporting sharing policy")}return f}function Xl(i,o){if(o===null)return this.isReference&&me(`null is not a valid ${this.name}`),0;o.$$||me(`Cannot pass "${ts(o)}" as a ${this.name}`),o.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`),o.$$.ptrType.isConst&&me(`Cannot convert argument of type ${o.$$.ptrType.name} to parameter type ${this.name}`);var f=o.$$.ptrType.registeredClass,h=Kn(o.$$.ptr,f,this.registeredClass);return h}var Yl=()=>{Object.assign(cn.prototype,{getPointee(i){return this.rawGetPointee&&(i=this.rawGetPointee(i)),i},destructor(i){this.rawDestructor?.(i)},argPackAdvance:dt,readValueFromPointer:Tr,fromWireType:Bl})};function cn(i,o,f,h,p,v,w,R,O,P,L){this.name=i,this.registeredClass=o,this.isReference=f,this.isConst=h,this.isSmartPointer=p,this.pointeeType=v,this.sharingPolicy=w,this.rawGetPointee=R,this.rawConstructor=O,this.rawShare=P,this.rawDestructor=L,!p&&o.baseClass===void 0?h?(this.toWireType=Hl,this.destructorFunction=null):(this.toWireType=Xl,this.destructorFunction=null):this.toWireType=Wl}var Ai=(i,o,f)=>{n.hasOwnProperty(i)||sn("Replacing nonexistent public symbol"),n[i].overloadTable!==void 0&&f!==void 0?n[i].overloadTable[f]=o:(n[i]=o,n[i].argCount=f)},Kl=(i,o,f)=>{i=i.replace(/p/g,"i");var h=n["dynCall_"+i];return h(o,...f)},Rr=[],Ft,ne=i=>{var o=Rr[i];return o||(i>=Rr.length&&(Rr.length=i+1),Rr[i]=o=Ft.get(i)),o},Jl=(i,o,f=[])=>{if(i.includes("j"))return Kl(i,o,f);var h=ne(o)(...f);return h},Zl=(i,o)=>(...f)=>Jl(i,o,f),ct=(i,o)=>{i=Ve(i);function f(){return i.includes("j")?Zl(i,o):ne(o)}var h=f();return typeof h!="function"&&me(`unknown function pointer with signature ${i}: ${o}`),h},Ql=(i,o)=>{var f=ar(o,function(h){this.name=o,this.message=h;var p=new Error(h).stack;p!==void 0&&(this.stack=this.toString()+` +`+p.replace(/^Error(:[^\n]*)?\n/,""))});return f.prototype=Object.create(i.prototype),f.prototype.constructor=f,f.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},f},Si,Ii=i=>{var o=zi(i),f=Ve(o);return wt(o),f},ln=(i,o)=>{var f=[],h={};function p(v){if(!h[v]&&!Ct[v]){if(nn[v]){nn[v].forEach(p);return}f.push(v),h[v]=!0}}throw o.forEach(p),new Si(`${i}: `+f.map(Ii).join([", "]))},ef=(i,o,f,h,p,v,w,R,O,P,L,X,Y)=>{L=Ve(L),v=ct(p,v),R&&=ct(w,R),P&&=ct(O,P),Y=ct(X,Y);var J=Gl(L);Yn(J,function(){ln(`Cannot construct ${L} due to unbound types`,[h])}),Nt([i,o,f],h?[h]:[],Q=>{Q=Q[0];var de,we;h?(de=Q.registeredClass,we=de.instancePrototype):we=on.prototype;var C=ar(L,function(...le){if(Object.getPrototypeOf(this)!==S)throw new ir("Use 'new' to construct "+L);if($.constructor_body===void 0)throw new ir(L+" has no accessible constructor");var et=$.constructor_body[le.length];if(et===void 0)throw new ir(`Tried to invoke ctor of ${L} with invalid number of parameters (${le.length}) - expected (${Object.keys($.constructor_body).toString()}) parameters instead!`);return et.apply(this,le)}),S=Object.create(we,{constructor:{value:C}});C.prototype=S;var $=new ql(L,C,S,Y,de,v,R,P);$.baseClass&&($.baseClass.__derivedClasses??=[],$.baseClass.__derivedClasses.push($));var j=new cn(L,$,!0,!1,!1),Z=new cn(L+"*",$,!1,!1,!1),pe=new cn(L+" const*",$,!1,!0,!1);return Ri[i]={pointerType:Z,constPointerType:pe},Ai(J,C),[j,Z,pe]})},Jn=(i,o)=>{for(var f=[],h=0;h>2]);return f};function Ci(i){for(var o=1;o0?", ":"")+R),P+=(f||h?"var rv = ":"")+"invoker(fn"+(R.length>0?", ":"")+R+`); +`,p)P+=`runDestructors(destructors); +`;else for(var O=o?1:2;O{var w=Jn(o,f);p=ct(h,p),Nt([],[i],R=>{R=R[0];var O=`constructor ${R.name}`;if(R.registeredClass.constructor_body===void 0&&(R.registeredClass.constructor_body=[]),R.registeredClass.constructor_body[o-1]!==void 0)throw new ir(`Cannot register multiple constructors with identical number of parameters (${o-1}) for class '${R.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return R.registeredClass.constructor_body[o-1]=()=>{ln(`Cannot construct ${R.name} due to unbound types`,w)},Nt([],w,P=>(P.splice(1,0,null),R.registeredClass.constructor_body[o-1]=Zn(O,P,null,p,v),[])),[]})},Fi=i=>{i=i.trim();const o=i.indexOf("(");return o!==-1?i.substr(0,o):i},nf=(i,o,f,h,p,v,w,R,O)=>{var P=Jn(f,h);o=Ve(o),o=Fi(o),v=ct(p,v),Nt([],[i],L=>{L=L[0];var X=`${L.name}.${o}`;o.startsWith("@@")&&(o=Symbol[o.substring(2)]),R&&L.registeredClass.pureVirtualFunctions.push(o);function Y(){ln(`Cannot call ${X} due to unbound types`,P)}var J=L.registeredClass.instancePrototype,Q=J[o];return Q===void 0||Q.overloadTable===void 0&&Q.className!==L.name&&Q.argCount===f-2?(Y.argCount=f-2,Y.className=L.name,J[o]=Y):(bi(J,o,X),J[o].overloadTable[f-2]=Y),Nt([],P,de=>{var we=Zn(X,de,L,v,w,O);return J[o].overloadTable===void 0?(we.argCount=f-2,J[o]=we):J[o].overloadTable[f-2]=we,[]}),[]})},Qn=[],Tt=[],es=i=>{i>9&&--Tt[i+1]===0&&(Tt[i]=void 0,Qn.push(i))},sf=()=>Tt.length/2-5-Qn.length,af=()=>{Tt.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=sf},Be={toValue:i=>(i||me("Cannot use deleted val. handle = "+i),Tt[i]),toHandle:i=>{switch(i){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{const o=Qn.pop()||Tt.length;return Tt[o]=i,Tt[o+1]=1,o}}}},of={name:"emscripten::val",fromWireType:i=>{var o=Be.toValue(i);return es(i),o},toWireType:(i,o)=>Be.toHandle(o),argPackAdvance:dt,readValueFromPointer:Tr,destructorFunction:null},Oi=i=>ht(i,of),cf=(i,o,f)=>{switch(o){case 1:return f?function(h){return this.fromWireType(z[h])}:function(h){return this.fromWireType(G[h])};case 2:return f?function(h){return this.fromWireType(K[h>>1])}:function(h){return this.fromWireType(H[h>>1])};case 4:return f?function(h){return this.fromWireType(k[h>>2])}:function(h){return this.fromWireType(q[h>>2])};default:throw new TypeError(`invalid integer width (${o}): ${i}`)}},lf=(i,o,f,h)=>{o=Ve(o);function p(){}p.values={},ht(i,{name:o,constructor:p,fromWireType:function(v){return this.constructor.values[v]},toWireType:(v,w)=>w.value,argPackAdvance:dt,readValueFromPointer:cf(o,f,h),destructorFunction:null}),Yn(o,p)},fn=(i,o)=>{var f=Ct[i];return f===void 0&&me(`${o} has unknown type ${Ii(i)}`),f},ff=(i,o,f)=>{var h=fn(i,"enum");o=Ve(o);var p=h.constructor,v=Object.create(h.constructor.prototype,{value:{value:f},constructor:{value:ar(`${h.name}_${o}`,function(){})}});p.values[f]=v,p[o]=v},ts=i=>{if(i===null)return"null";var o=typeof i;return o==="object"||o==="array"||o==="function"?i.toString():""+i},uf=(i,o)=>{switch(o){case 4:return function(f){return this.fromWireType(ue[f>>2])};case 8:return function(f){return this.fromWireType(re[f>>3])};default:throw new TypeError(`invalid float width (${o}): ${i}`)}},hf=(i,o,f)=>{o=Ve(o),ht(i,{name:o,fromWireType:h=>h,toWireType:(h,p)=>p,argPackAdvance:dt,readValueFromPointer:uf(o,f),destructorFunction:null})},df=(i,o,f,h,p,v,w)=>{var R=Jn(o,f);i=Ve(i),i=Fi(i),p=ct(h,p),Yn(i,function(){ln(`Cannot call ${i} due to unbound types`,R)},o-1),Nt([],R,O=>{var P=[O[0],null].concat(O.slice(1));return Ai(i,Zn(i,P,null,p,v,w),o-1),[]})},pf=(i,o,f)=>{switch(o){case 1:return f?h=>z[h]:h=>G[h];case 2:return f?h=>K[h>>1]:h=>H[h>>1];case 4:return f?h=>k[h>>2]:h=>q[h>>2];default:throw new TypeError(`invalid integer width (${o}): ${i}`)}},gf=(i,o,f,h,p)=>{o=Ve(o);var v=L=>L;if(h===0){var w=32-8*f;v=L=>L<>>w}var R=o.includes("unsigned"),O=(L,X)=>{},P;R?P=function(L,X){return O(X,this.name),X>>>0}:P=function(L,X){return O(X,this.name),X},ht(i,{name:o,fromWireType:v,toWireType:P,argPackAdvance:dt,readValueFromPointer:pf(o,f,h!==0),destructorFunction:null})},mf=(i,o,f)=>{var h=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],p=h[o];function v(w){var R=q[w>>2],O=q[w+4>>2];return new p(z.buffer,O,R)}f=Ve(f),ht(i,{name:f,fromWireType:v,argPackAdvance:dt,readValueFromPointer:v},{ignoreDuplicateRegistrations:!0})},vf=(i,o)=>{Oi(i)},rs=(i,o,f,h)=>{if(!(h>0))return 0;for(var p=f,v=f+h-1,w=0;w=55296&&R<=57343){var O=i.charCodeAt(++w);R=65536+((R&1023)<<10)|O&1023}if(R<=127){if(f>=v)break;o[f++]=R}else if(R<=2047){if(f+1>=v)break;o[f++]=192|R>>6,o[f++]=128|R&63}else if(R<=65535){if(f+2>=v)break;o[f++]=224|R>>12,o[f++]=128|R>>6&63,o[f++]=128|R&63}else{if(f+3>=v)break;o[f++]=240|R>>18,o[f++]=128|R>>12&63,o[f++]=128|R>>6&63,o[f++]=128|R&63}}return o[f]=0,f-p},yf=(i,o,f)=>rs(i,G,o,f),ns=i=>{for(var o=0,f=0;f=55296&&h<=57343?(o+=4,++f):o+=3}return o},Di=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,or=(i,o,f)=>{for(var h=o+f,p=o;i[p]&&!(p>=h);)++p;if(p-o>16&&i.buffer&&Di)return Di.decode(i.subarray(o,p));for(var v="";o>10,56320|P&1023)}}return v},un=(i,o)=>i?or(G,i,o):"",xf=(i,o)=>{o=Ve(o);var f=o==="std::string";ht(i,{name:o,fromWireType(h){var p=q[h>>2],v=h+4,w;if(f)for(var R=v,O=0;O<=p;++O){var P=v+O;if(O==p||G[P]==0){var L=P-R,X=un(R,L);w===void 0?w=X:(w+=String.fromCharCode(0),w+=X),R=P+1}}else{for(var Y=new Array(p),O=0;O>2]=v,f&&w)yf(p,O,v+1);else if(w)for(var P=0;P255&&(wt(O),me("String has UTF-16 code units that do not fit in 8 bits")),G[O+P]=L}else for(var P=0;P{for(var f=i,h=f>>1,p=h+o/2;!(h>=p)&&H[h];)++h;if(f=h<<1,f-i>32&&$i)return $i.decode(G.subarray(i,f));for(var v="",w=0;!(w>=o/2);++w){var R=K[i+w*2>>1];if(R==0)break;v+=String.fromCharCode(R)}return v},Ef=(i,o,f)=>{if(f??=2147483647,f<2)return 0;f-=2;for(var h=o,p=f>1]=w,o+=2}return K[o>>1]=0,o-h},wf=i=>i.length*2,Mf=(i,o)=>{for(var f=0,h="";!(f>=o/4);){var p=k[i+f*4>>2];if(p==0)break;if(++f,p>=65536){var v=p-65536;h+=String.fromCharCode(55296|v>>10,56320|v&1023)}else h+=String.fromCharCode(p)}return h},_f=(i,o,f)=>{if(f??=2147483647,f<4)return 0;for(var h=o,p=h+f-4,v=0;v=55296&&w<=57343){var R=i.charCodeAt(++v);w=65536+((w&1023)<<10)|R&1023}if(k[o>>2]=w,o+=4,o+4>p)break}return k[o>>2]=0,o-h},Rf=i=>{for(var o=0,f=0;f=55296&&h<=57343&&++f,o+=4}return o},bf=(i,o,f)=>{f=Ve(f);var h,p,v,w;o===2?(h=Tf,p=Ef,w=wf,v=R=>H[R>>1]):o===4&&(h=Mf,p=_f,w=Rf,v=R=>q[R>>2]),ht(i,{name:f,fromWireType:R=>{for(var O=q[R>>2],P,L=R+4,X=0;X<=O;++X){var Y=R+4+X*o;if(X==O||v(Y)==0){var J=Y-L,Q=h(L,J);P===void 0?P=Q:(P+=String.fromCharCode(0),P+=Q),L=Y+o}}return wt(R),P},toWireType:(R,O)=>{typeof O!="string"&&me(`Cannot pass non-string to C++ string type ${f}`);var P=w(O),L=fs(4+P+o);return q[L>>2]=P/o,p(O,L+4,P+o),R!==null&&R.push(wt,L),L},argPackAdvance:dt,readValueFromPointer:Tr,destructorFunction(R){wt(R)}})},Af=(i,o,f,h,p,v)=>{rn[i]={name:Ve(o),rawConstructor:ct(f,h),rawDestructor:ct(p,v),fields:[]}},Sf=(i,o,f,h,p,v,w,R,O,P)=>{rn[i].fields.push({fieldName:Ve(o),getterReturnType:f,getter:ct(h,p),getterContext:v,setterArgumentType:w,setter:ct(R,O),setterContext:P})},If=(i,o)=>{o=Ve(o),ht(i,{isVoid:!0,name:o,argPackAdvance:0,fromWireType:()=>{},toWireType:(f,h)=>{}})},Cf=(i,o,f)=>G.copyWithin(i,o,o+f),Pi=(i,o,f)=>{var h=[],p=i.toWireType(h,f);return h.length&&(q[o>>2]=Be.toHandle(h)),p},Nf=(i,o,f)=>(i=Be.toValue(i),o=fn(o,"emval::as"),Pi(o,f,i)),Ff={},ki=i=>{var o=Ff[i];return o===void 0?Ve(i):o},ss=[],Of=(i,o,f,h,p)=>(i=ss[i],o=Be.toValue(o),f=ki(f),i(o,o[f],h,p)),Df=(i,o)=>(i=Be.toValue(i),o=Be.toValue(o),i==o),$f=i=>{var o=ss.length;return ss.push(i),o},Pf=(i,o)=>{for(var f=new Array(i),h=0;h>2],"parameter "+h);return f},kf=(i,o,f)=>{var h=Pf(i,o),p=h.shift();i--;var v=`return function (obj, func, destructorsRef, args) { +`,w=0,R=[];f===0&&R.push("obj");for(var O=["retType"],P=[p],L=0;LQ.name).join(", ")}) => ${p.name}>`;return $f(ar(J,Y))},Uf=(i,o)=>(i=Be.toValue(i),o=Be.toValue(o),Be.toHandle(i[o])),Lf=i=>{i>9&&(Tt[i+1]+=1)},Bf=i=>Be.toHandle(ki(i)),jf=()=>Be.toHandle({}),Vf=i=>{var o=Be.toValue(i);qn(o),es(i)},zf=(i,o,f)=>{i=Be.toValue(i),o=Be.toValue(o),f=Be.toValue(f),i[o]=f},Gf=(i,o)=>{i=fn(i,"_emval_take_value");var f=i.readValueFromPointer(o);return Be.toHandle(f)},qf=()=>2147483648,Hf=i=>{var o=B.buffer,f=(i-o.byteLength+65535)/65536;try{return B.grow(f),ve(),1}catch{}},Wf=i=>{var o=G.length;i>>>=0;var f=qf();if(i>f)return!1;for(var h=(O,P)=>O+(P-O%P)%P,p=1;p<=4;p*=2){var v=o*(1+.2/p);v=Math.min(v,i+100663296);var w=Math.min(f,h(Math.max(i,v),65536)),R=Hf(w);if(R)return!0}return!1},is={},Xf=()=>M||"./this.program",br=()=>{if(!br.strings){var i=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",o={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:i,_:Xf()};for(var f in is)is[f]===void 0?delete o[f]:o[f]=is[f];var h=[];for(var f in o)h.push(`${f}=${o[f]}`);br.strings=h}return br.strings},Yf=(i,o)=>{for(var f=0;f{var f=0;return br().forEach((h,p)=>{var v=o+f;q[i+p*4>>2]=v,Yf(h,v),f+=h.length+1}),0},Jf=(i,o)=>{var f=br();q[i>>2]=f.length;var h=0;return f.forEach(p=>h+=p.length+1),q[o>>2]=h,0},Me={isAbs:i=>i.charAt(0)==="/",splitPath:i=>{var o=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return o.exec(i).slice(1)},normalizeArray:(i,o)=>{for(var f=0,h=i.length-1;h>=0;h--){var p=i[h];p==="."?i.splice(h,1):p===".."?(i.splice(h,1),f++):f&&(i.splice(h,1),f--)}if(o)for(;f;f--)i.unshift("..");return i},normalize:i=>{var o=Me.isAbs(i),f=i.substr(-1)==="/";return i=Me.normalizeArray(i.split("/").filter(h=>!!h),!o).join("/"),!i&&!o&&(i="."),i&&f&&(i+="/"),(o?"/":"")+i},dirname:i=>{var o=Me.splitPath(i),f=o[0],h=o[1];return!f&&!h?".":(h&&(h=h.substr(0,h.length-1)),f+h)},basename:i=>{if(i==="/")return"/";i=Me.normalize(i),i=i.replace(/\/$/,"");var o=i.lastIndexOf("/");return o===-1?i:i.substr(o+1)},join:(...i)=>Me.normalize(i.join("/")),join2:(i,o)=>Me.normalize(i+"/"+o)},Zf=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return h=>crypto.getRandomValues(h);if(d)try{var i=g("crypto"),o=i.randomFillSync;if(o)return h=>i.randomFillSync(h);var f=i.randomBytes;return h=>(h.set(f(h.byteLength)),h)}catch{}He("initRandomDevice")},Ui=i=>(Ui=Zf())(i),Et={resolve:(...i)=>{for(var o="",f=!1,h=i.length-1;h>=-1&&!f;h--){var p=h>=0?i[h]:y.cwd();if(typeof p!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!p)return"";o=p+"/"+o,f=Me.isAbs(p)}return o=Me.normalizeArray(o.split("/").filter(v=>!!v),!f).join("/"),(f?"/":"")+o||"."},relative:(i,o)=>{i=Et.resolve(i).substr(1),o=Et.resolve(o).substr(1);function f(P){for(var L=0;L=0&&P[X]==="";X--);return L>X?[]:P.slice(L,X-L+1)}for(var h=f(i.split("/")),p=f(o.split("/")),v=Math.min(h.length,p.length),w=v,R=0;R0?f:ns(i)+1,p=new Array(h),v=rs(i,p,0,p.length);return o&&(p.length=v),p}var Qf=()=>{if(!as.length){var i=null;if(d){var o=256,f=Buffer.alloc(o),h=0,p=process.stdin.fd;try{h=_.readSync(p,f,0,o)}catch(v){if(v.toString().includes("EOF"))h=0;else throw v}h>0&&(i=f.slice(0,h).toString("utf-8"))}else typeof window<"u"&&typeof window.prompt=="function"&&(i=window.prompt("Input: "),i!==null&&(i+=` +`));if(!i)return null;as=hn(i,!0)}return as.shift()},Ot={ttys:[],init(){},shutdown(){},register(i,o){Ot.ttys[i]={input:[],output:[],ops:o},y.registerDevice(i,Ot.stream_ops)},stream_ops:{open(i){var o=Ot.ttys[i.node.rdev];if(!o)throw new y.ErrnoError(43);i.tty=o,i.seekable=!1},close(i){i.tty.ops.fsync(i.tty)},fsync(i){i.tty.ops.fsync(i.tty)},read(i,o,f,h,p){if(!i.tty||!i.tty.ops.get_char)throw new y.ErrnoError(60);for(var v=0,w=0;w0&&(F(or(i.output,0)),i.output=[])},ioctl_tcgets(i){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(i,o,f){return 0},ioctl_tiocgwinsz(i){return[24,80]}},default_tty1_ops:{put_char(i,o){o===null||o===10?(D(or(i.output,0)),i.output=[]):o!=0&&i.output.push(o)},fsync(i){i.output&&i.output.length>0&&(D(or(i.output,0)),i.output=[])}}},Li=i=>{He()},ce={ops_table:null,mount(i){return ce.createNode(null,"/",16895,0)},createNode(i,o,f,h){if(y.isBlkdev(f)||y.isFIFO(f))throw new y.ErrnoError(63);ce.ops_table||={dir:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr,lookup:ce.node_ops.lookup,mknod:ce.node_ops.mknod,rename:ce.node_ops.rename,unlink:ce.node_ops.unlink,rmdir:ce.node_ops.rmdir,readdir:ce.node_ops.readdir,symlink:ce.node_ops.symlink},stream:{llseek:ce.stream_ops.llseek}},file:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr},stream:{llseek:ce.stream_ops.llseek,read:ce.stream_ops.read,write:ce.stream_ops.write,allocate:ce.stream_ops.allocate,mmap:ce.stream_ops.mmap,msync:ce.stream_ops.msync}},link:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr,readlink:ce.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ce.node_ops.getattr,setattr:ce.node_ops.setattr},stream:y.chrdev_stream_ops}};var p=y.createNode(i,o,f,h);return y.isDir(p.mode)?(p.node_ops=ce.ops_table.dir.node,p.stream_ops=ce.ops_table.dir.stream,p.contents={}):y.isFile(p.mode)?(p.node_ops=ce.ops_table.file.node,p.stream_ops=ce.ops_table.file.stream,p.usedBytes=0,p.contents=null):y.isLink(p.mode)?(p.node_ops=ce.ops_table.link.node,p.stream_ops=ce.ops_table.link.stream):y.isChrdev(p.mode)&&(p.node_ops=ce.ops_table.chrdev.node,p.stream_ops=ce.ops_table.chrdev.stream),p.timestamp=Date.now(),i&&(i.contents[o]=p,i.timestamp=p.timestamp),p},getFileDataAsTypedArray(i){return i.contents?i.contents.subarray?i.contents.subarray(0,i.usedBytes):new Uint8Array(i.contents):new Uint8Array(0)},expandFileStorage(i,o){var f=i.contents?i.contents.length:0;if(!(f>=o)){var h=1024*1024;o=Math.max(o,f*(f>>0),f!=0&&(o=Math.max(o,256));var p=i.contents;i.contents=new Uint8Array(o),i.usedBytes>0&&i.contents.set(p.subarray(0,i.usedBytes),0)}},resizeFileStorage(i,o){if(i.usedBytes!=o)if(o==0)i.contents=null,i.usedBytes=0;else{var f=i.contents;i.contents=new Uint8Array(o),f&&i.contents.set(f.subarray(0,Math.min(o,i.usedBytes))),i.usedBytes=o}},node_ops:{getattr(i){var o={};return o.dev=y.isChrdev(i.mode)?i.id:1,o.ino=i.id,o.mode=i.mode,o.nlink=1,o.uid=0,o.gid=0,o.rdev=i.rdev,y.isDir(i.mode)?o.size=4096:y.isFile(i.mode)?o.size=i.usedBytes:y.isLink(i.mode)?o.size=i.link.length:o.size=0,o.atime=new Date(i.timestamp),o.mtime=new Date(i.timestamp),o.ctime=new Date(i.timestamp),o.blksize=4096,o.blocks=Math.ceil(o.size/o.blksize),o},setattr(i,o){o.mode!==void 0&&(i.mode=o.mode),o.timestamp!==void 0&&(i.timestamp=o.timestamp),o.size!==void 0&&ce.resizeFileStorage(i,o.size)},lookup(i,o){throw y.genericErrors[44]},mknod(i,o,f,h){return ce.createNode(i,o,f,h)},rename(i,o,f){if(y.isDir(i.mode)){var h;try{h=y.lookupNode(o,f)}catch{}if(h)for(var p in h.contents)throw new y.ErrnoError(55)}delete i.parent.contents[i.name],i.parent.timestamp=Date.now(),i.name=f,o.contents[f]=i,o.timestamp=i.parent.timestamp},unlink(i,o){delete i.contents[o],i.timestamp=Date.now()},rmdir(i,o){var f=y.lookupNode(i,o);for(var h in f.contents)throw new y.ErrnoError(55);delete i.contents[o],i.timestamp=Date.now()},readdir(i){var o=[".",".."];for(var f of Object.keys(i.contents))o.push(f);return o},symlink(i,o,f){var h=ce.createNode(i,o,41471,0);return h.link=f,h},readlink(i){if(!y.isLink(i.mode))throw new y.ErrnoError(28);return i.link}},stream_ops:{read(i,o,f,h,p){var v=i.node.contents;if(p>=i.node.usedBytes)return 0;var w=Math.min(i.node.usedBytes-p,h);if(w>8&&v.subarray)o.set(v.subarray(p,p+w),f);else for(var R=0;R0||f+o{var p=h?"":`al ${i}`;I(i,v=>{o(new Uint8Array(v)),p&&yt()},v=>{if(f)f();else throw`Loading data file "${i}" failed.`}),p&&qe()},tu=(i,o,f,h,p,v)=>{y.createDataFile(i,o,f,h,p,v)},ru=n.preloadPlugins||[],nu=(i,o,f,h)=>{typeof Browser<"u"&&Browser.init();var p=!1;return ru.forEach(v=>{p||v.canHandle(o)&&(v.handle(i,o,f,h),p=!0)}),p},su=(i,o,f,h,p,v,w,R,O,P)=>{var L=o?Et.resolve(Me.join2(i,o)):i;function X(Y){function J(Q){P?.(),R||tu(i,o,Q,h,p,O),v?.(),yt()}nu(Y,L,J,()=>{w?.(),yt()})||J(Y)}qe(),typeof f=="string"?eu(f,X,w):X(f)},iu=i=>{var o={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},f=o[i];if(typeof f>"u")throw new Error(`Unknown file open mode: ${i}`);return f},os=(i,o)=>{var f=0;return i&&(f|=365),o&&(f|=146),f},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(i){this.name="ErrnoError",this.errno=i}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(i){this.node=i}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(i){this.shared.flags=i}get position(){return this.shared.position}set position(i){this.shared.position=i}},FSNode:class{constructor(i,o,f,h){i||(i=this),this.parent=i,this.mount=i.mount,this.mounted=null,this.id=y.nextInode++,this.name=o,this.mode=f,this.node_ops={},this.stream_ops={},this.rdev=h,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(i){i?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(i){i?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return y.isDir(this.mode)}get isDevice(){return y.isChrdev(this.mode)}},lookupPath(i,o={}){if(i=Et.resolve(i),!i)return{path:"",node:null};var f={follow_mount:!0,recurse_count:0};if(o=Object.assign(f,o),o.recurse_count>8)throw new y.ErrnoError(32);for(var h=i.split("/").filter(X=>!!X),p=y.root,v="/",w=0;w40)throw new y.ErrnoError(32)}}return{path:v,node:p}},getPath(i){for(var o;;){if(y.isRoot(i)){var f=i.mount.mountpoint;return o?f[f.length-1]!=="/"?`${f}/${o}`:f+o:f}o=o?`${i.name}/${o}`:i.name,i=i.parent}},hashName(i,o){for(var f=0,h=0;h>>0)%y.nameTable.length},hashAddNode(i){var o=y.hashName(i.parent.id,i.name);i.name_next=y.nameTable[o],y.nameTable[o]=i},hashRemoveNode(i){var o=y.hashName(i.parent.id,i.name);if(y.nameTable[o]===i)y.nameTable[o]=i.name_next;else for(var f=y.nameTable[o];f;){if(f.name_next===i){f.name_next=i.name_next;break}f=f.name_next}},lookupNode(i,o){var f=y.mayLookup(i);if(f)throw new y.ErrnoError(f);for(var h=y.hashName(i.id,o),p=y.nameTable[h];p;p=p.name_next){var v=p.name;if(p.parent.id===i.id&&v===o)return p}return y.lookup(i,o)},createNode(i,o,f,h){var p=new y.FSNode(i,o,f,h);return y.hashAddNode(p),p},destroyNode(i){y.hashRemoveNode(i)},isRoot(i){return i===i.parent},isMountpoint(i){return!!i.mounted},isFile(i){return(i&61440)===32768},isDir(i){return(i&61440)===16384},isLink(i){return(i&61440)===40960},isChrdev(i){return(i&61440)===8192},isBlkdev(i){return(i&61440)===24576},isFIFO(i){return(i&61440)===4096},isSocket(i){return(i&49152)===49152},flagsToPermissionString(i){var o=["r","w","rw"][i&3];return i&512&&(o+="w"),o},nodePermissions(i,o){return y.ignorePermissions?0:o.includes("r")&&!(i.mode&292)||o.includes("w")&&!(i.mode&146)||o.includes("x")&&!(i.mode&73)?2:0},mayLookup(i){if(!y.isDir(i.mode))return 54;var o=y.nodePermissions(i,"x");return o||(i.node_ops.lookup?0:2)},mayCreate(i,o){try{var f=y.lookupNode(i,o);return 20}catch{}return y.nodePermissions(i,"wx")},mayDelete(i,o,f){var h;try{h=y.lookupNode(i,o)}catch(v){return v.errno}var p=y.nodePermissions(i,"wx");if(p)return p;if(f){if(!y.isDir(h.mode))return 54;if(y.isRoot(h)||y.getPath(h)===y.cwd())return 10}else if(y.isDir(h.mode))return 31;return 0},mayOpen(i,o){return i?y.isLink(i.mode)?32:y.isDir(i.mode)&&(y.flagsToPermissionString(o)!=="r"||o&512)?31:y.nodePermissions(i,y.flagsToPermissionString(o)):44},MAX_OPEN_FDS:4096,nextfd(){for(var i=0;i<=y.MAX_OPEN_FDS;i++)if(!y.streams[i])return i;throw new y.ErrnoError(33)},getStreamChecked(i){var o=y.getStream(i);if(!o)throw new y.ErrnoError(8);return o},getStream:i=>y.streams[i],createStream(i,o=-1){return i=Object.assign(new y.FSStream,i),o==-1&&(o=y.nextfd()),i.fd=o,y.streams[o]=i,i},closeStream(i){y.streams[i]=null},dupStream(i,o=-1){var f=y.createStream(i,o);return f.stream_ops?.dup?.(f),f},chrdev_stream_ops:{open(i){var o=y.getDevice(i.node.rdev);i.stream_ops=o.stream_ops,i.stream_ops.open?.(i)},llseek(){throw new y.ErrnoError(70)}},major:i=>i>>8,minor:i=>i&255,makedev:(i,o)=>i<<8|o,registerDevice(i,o){y.devices[i]={stream_ops:o}},getDevice:i=>y.devices[i],getMounts(i){for(var o=[],f=[i];f.length;){var h=f.pop();o.push(h),f.push(...h.mounts)}return o},syncfs(i,o){typeof i=="function"&&(o=i,i=!1),y.syncFSRequests++,y.syncFSRequests>1&&D(`warning: ${y.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var f=y.getMounts(y.root.mount),h=0;function p(w){return y.syncFSRequests--,o(w)}function v(w){if(w)return v.errored?void 0:(v.errored=!0,p(w));++h>=f.length&&p(null)}f.forEach(w=>{if(!w.type.syncfs)return v(null);w.type.syncfs(w,i,v)})},mount(i,o,f){var h=f==="/",p=!f,v;if(h&&y.root)throw new y.ErrnoError(10);if(!h&&!p){var w=y.lookupPath(f,{follow_mount:!1});if(f=w.path,v=w.node,y.isMountpoint(v))throw new y.ErrnoError(10);if(!y.isDir(v.mode))throw new y.ErrnoError(54)}var R={type:i,opts:o,mountpoint:f,mounts:[]},O=i.mount(R);return O.mount=R,R.root=O,h?y.root=O:v&&(v.mounted=R,v.mount&&v.mount.mounts.push(R)),O},unmount(i){var o=y.lookupPath(i,{follow_mount:!1});if(!y.isMountpoint(o.node))throw new y.ErrnoError(28);var f=o.node,h=f.mounted,p=y.getMounts(h);Object.keys(y.nameTable).forEach(w=>{for(var R=y.nameTable[w];R;){var O=R.name_next;p.includes(R.mount)&&y.destroyNode(R),R=O}}),f.mounted=null;var v=f.mount.mounts.indexOf(h);f.mount.mounts.splice(v,1)},lookup(i,o){return i.node_ops.lookup(i,o)},mknod(i,o,f){var h=y.lookupPath(i,{parent:!0}),p=h.node,v=Me.basename(i);if(!v||v==="."||v==="..")throw new y.ErrnoError(28);var w=y.mayCreate(p,v);if(w)throw new y.ErrnoError(w);if(!p.node_ops.mknod)throw new y.ErrnoError(63);return p.node_ops.mknod(p,v,o,f)},create(i,o){return o=o!==void 0?o:438,o&=4095,o|=32768,y.mknod(i,o,0)},mkdir(i,o){return o=o!==void 0?o:511,o&=1023,o|=16384,y.mknod(i,o,0)},mkdirTree(i,o){for(var f=i.split("/"),h="",p=0;p"u"&&(f=o,o=438),o|=8192,y.mknod(i,o,f)},symlink(i,o){if(!Et.resolve(i))throw new y.ErrnoError(44);var f=y.lookupPath(o,{parent:!0}),h=f.node;if(!h)throw new y.ErrnoError(44);var p=Me.basename(o),v=y.mayCreate(h,p);if(v)throw new y.ErrnoError(v);if(!h.node_ops.symlink)throw new y.ErrnoError(63);return h.node_ops.symlink(h,p,i)},rename(i,o){var f=Me.dirname(i),h=Me.dirname(o),p=Me.basename(i),v=Me.basename(o),w,R,O;if(w=y.lookupPath(i,{parent:!0}),R=w.node,w=y.lookupPath(o,{parent:!0}),O=w.node,!R||!O)throw new y.ErrnoError(44);if(R.mount!==O.mount)throw new y.ErrnoError(75);var P=y.lookupNode(R,p),L=Et.relative(i,h);if(L.charAt(0)!==".")throw new y.ErrnoError(28);if(L=Et.relative(o,f),L.charAt(0)!==".")throw new y.ErrnoError(55);var X;try{X=y.lookupNode(O,v)}catch{}if(P!==X){var Y=y.isDir(P.mode),J=y.mayDelete(R,p,Y);if(J)throw new y.ErrnoError(J);if(J=X?y.mayDelete(O,v,Y):y.mayCreate(O,v),J)throw new y.ErrnoError(J);if(!R.node_ops.rename)throw new y.ErrnoError(63);if(y.isMountpoint(P)||X&&y.isMountpoint(X))throw new y.ErrnoError(10);if(O!==R&&(J=y.nodePermissions(R,"w"),J))throw new y.ErrnoError(J);y.hashRemoveNode(P);try{R.node_ops.rename(P,O,v),P.parent=O}catch(Q){throw Q}finally{y.hashAddNode(P)}}},rmdir(i){var o=y.lookupPath(i,{parent:!0}),f=o.node,h=Me.basename(i),p=y.lookupNode(f,h),v=y.mayDelete(f,h,!0);if(v)throw new y.ErrnoError(v);if(!f.node_ops.rmdir)throw new y.ErrnoError(63);if(y.isMountpoint(p))throw new y.ErrnoError(10);f.node_ops.rmdir(f,h),y.destroyNode(p)},readdir(i){var o=y.lookupPath(i,{follow:!0}),f=o.node;if(!f.node_ops.readdir)throw new y.ErrnoError(54);return f.node_ops.readdir(f)},unlink(i){var o=y.lookupPath(i,{parent:!0}),f=o.node;if(!f)throw new y.ErrnoError(44);var h=Me.basename(i),p=y.lookupNode(f,h),v=y.mayDelete(f,h,!1);if(v)throw new y.ErrnoError(v);if(!f.node_ops.unlink)throw new y.ErrnoError(63);if(y.isMountpoint(p))throw new y.ErrnoError(10);f.node_ops.unlink(f,h),y.destroyNode(p)},readlink(i){var o=y.lookupPath(i),f=o.node;if(!f)throw new y.ErrnoError(44);if(!f.node_ops.readlink)throw new y.ErrnoError(28);return Et.resolve(y.getPath(f.parent),f.node_ops.readlink(f))},stat(i,o){var f=y.lookupPath(i,{follow:!o}),h=f.node;if(!h)throw new y.ErrnoError(44);if(!h.node_ops.getattr)throw new y.ErrnoError(63);return h.node_ops.getattr(h)},lstat(i){return y.stat(i,!0)},chmod(i,o,f){var h;if(typeof i=="string"){var p=y.lookupPath(i,{follow:!f});h=p.node}else h=i;if(!h.node_ops.setattr)throw new y.ErrnoError(63);h.node_ops.setattr(h,{mode:o&4095|h.mode&-4096,timestamp:Date.now()})},lchmod(i,o){y.chmod(i,o,!0)},fchmod(i,o){var f=y.getStreamChecked(i);y.chmod(f.node,o)},chown(i,o,f,h){var p;if(typeof i=="string"){var v=y.lookupPath(i,{follow:!h});p=v.node}else p=i;if(!p.node_ops.setattr)throw new y.ErrnoError(63);p.node_ops.setattr(p,{timestamp:Date.now()})},lchown(i,o,f){y.chown(i,o,f,!0)},fchown(i,o,f){var h=y.getStreamChecked(i);y.chown(h.node,o,f)},truncate(i,o){if(o<0)throw new y.ErrnoError(28);var f;if(typeof i=="string"){var h=y.lookupPath(i,{follow:!0});f=h.node}else f=i;if(!f.node_ops.setattr)throw new y.ErrnoError(63);if(y.isDir(f.mode))throw new y.ErrnoError(31);if(!y.isFile(f.mode))throw new y.ErrnoError(28);var p=y.nodePermissions(f,"w");if(p)throw new y.ErrnoError(p);f.node_ops.setattr(f,{size:o,timestamp:Date.now()})},ftruncate(i,o){var f=y.getStreamChecked(i);if(!(f.flags&2097155))throw new y.ErrnoError(28);y.truncate(f.node,o)},utime(i,o,f){var h=y.lookupPath(i,{follow:!0}),p=h.node;p.node_ops.setattr(p,{timestamp:Math.max(o,f)})},open(i,o,f){if(i==="")throw new y.ErrnoError(44);o=typeof o=="string"?iu(o):o,o&64?(f=typeof f>"u"?438:f,f=f&4095|32768):f=0;var h;if(typeof i=="object")h=i;else{i=Me.normalize(i);try{var p=y.lookupPath(i,{follow:!(o&131072)});h=p.node}catch{}}var v=!1;if(o&64)if(h){if(o&128)throw new y.ErrnoError(20)}else h=y.mknod(i,f,0),v=!0;if(!h)throw new y.ErrnoError(44);if(y.isChrdev(h.mode)&&(o&=-513),o&65536&&!y.isDir(h.mode))throw new y.ErrnoError(54);if(!v){var w=y.mayOpen(h,o);if(w)throw new y.ErrnoError(w)}o&512&&!v&&y.truncate(h,0),o&=-131713;var R=y.createStream({node:h,path:y.getPath(h),flags:o,seekable:!0,position:0,stream_ops:h.stream_ops,ungotten:[],error:!1});return R.stream_ops.open&&R.stream_ops.open(R),n.logReadFiles&&!(o&1)&&(y.readFiles||(y.readFiles={}),i in y.readFiles||(y.readFiles[i]=1)),R},close(i){if(y.isClosed(i))throw new y.ErrnoError(8);i.getdents&&(i.getdents=null);try{i.stream_ops.close&&i.stream_ops.close(i)}catch(o){throw o}finally{y.closeStream(i.fd)}i.fd=null},isClosed(i){return i.fd===null},llseek(i,o,f){if(y.isClosed(i))throw new y.ErrnoError(8);if(!i.seekable||!i.stream_ops.llseek)throw new y.ErrnoError(70);if(f!=0&&f!=1&&f!=2)throw new y.ErrnoError(28);return i.position=i.stream_ops.llseek(i,o,f),i.ungotten=[],i.position},read(i,o,f,h,p){if(h<0||p<0)throw new y.ErrnoError(28);if(y.isClosed(i))throw new y.ErrnoError(8);if((i.flags&2097155)===1)throw new y.ErrnoError(8);if(y.isDir(i.node.mode))throw new y.ErrnoError(31);if(!i.stream_ops.read)throw new y.ErrnoError(28);var v=typeof p<"u";if(!v)p=i.position;else if(!i.seekable)throw new y.ErrnoError(70);var w=i.stream_ops.read(i,o,f,h,p);return v||(i.position+=w),w},write(i,o,f,h,p,v){if(h<0||p<0)throw new y.ErrnoError(28);if(y.isClosed(i))throw new y.ErrnoError(8);if(!(i.flags&2097155))throw new y.ErrnoError(8);if(y.isDir(i.node.mode))throw new y.ErrnoError(31);if(!i.stream_ops.write)throw new y.ErrnoError(28);i.seekable&&i.flags&1024&&y.llseek(i,0,2);var w=typeof p<"u";if(!w)p=i.position;else if(!i.seekable)throw new y.ErrnoError(70);var R=i.stream_ops.write(i,o,f,h,p,v);return w||(i.position+=R),R},allocate(i,o,f){if(y.isClosed(i))throw new y.ErrnoError(8);if(o<0||f<=0)throw new y.ErrnoError(28);if(!(i.flags&2097155))throw new y.ErrnoError(8);if(!y.isFile(i.node.mode)&&!y.isDir(i.node.mode))throw new y.ErrnoError(43);if(!i.stream_ops.allocate)throw new y.ErrnoError(138);i.stream_ops.allocate(i,o,f)},mmap(i,o,f,h,p){if(h&2&&!(p&2)&&(i.flags&2097155)!==2)throw new y.ErrnoError(2);if((i.flags&2097155)===1)throw new y.ErrnoError(2);if(!i.stream_ops.mmap)throw new y.ErrnoError(43);return i.stream_ops.mmap(i,o,f,h,p)},msync(i,o,f,h,p){return i.stream_ops.msync?i.stream_ops.msync(i,o,f,h,p):0},ioctl(i,o,f){if(!i.stream_ops.ioctl)throw new y.ErrnoError(59);return i.stream_ops.ioctl(i,o,f)},readFile(i,o={}){if(o.flags=o.flags||0,o.encoding=o.encoding||"binary",o.encoding!=="utf8"&&o.encoding!=="binary")throw new Error(`Invalid encoding type "${o.encoding}"`);var f,h=y.open(i,o.flags),p=y.stat(i),v=p.size,w=new Uint8Array(v);return y.read(h,w,0,v,0),o.encoding==="utf8"?f=or(w,0):o.encoding==="binary"&&(f=w),y.close(h),f},writeFile(i,o,f={}){f.flags=f.flags||577;var h=y.open(i,f.flags,f.mode);if(typeof o=="string"){var p=new Uint8Array(ns(o)+1),v=rs(o,p,0,p.length);y.write(h,p,0,v,void 0,f.canOwn)}else if(ArrayBuffer.isView(o))y.write(h,o,0,o.byteLength,void 0,f.canOwn);else throw new Error("Unsupported data type");y.close(h)},cwd:()=>y.currentPath,chdir(i){var o=y.lookupPath(i,{follow:!0});if(o.node===null)throw new y.ErrnoError(44);if(!y.isDir(o.node.mode))throw new y.ErrnoError(54);var f=y.nodePermissions(o.node,"x");if(f)throw new y.ErrnoError(f);y.currentPath=o.path},createDefaultDirectories(){y.mkdir("/tmp"),y.mkdir("/home"),y.mkdir("/home/web_user")},createDefaultDevices(){y.mkdir("/dev"),y.registerDevice(y.makedev(1,3),{read:()=>0,write:(h,p,v,w,R)=>w}),y.mkdev("/dev/null",y.makedev(1,3)),Ot.register(y.makedev(5,0),Ot.default_tty_ops),Ot.register(y.makedev(6,0),Ot.default_tty1_ops),y.mkdev("/dev/tty",y.makedev(5,0)),y.mkdev("/dev/tty1",y.makedev(6,0));var i=new Uint8Array(1024),o=0,f=()=>(o===0&&(o=Ui(i).byteLength),i[--o]);y.createDevice("/dev","random",f),y.createDevice("/dev","urandom",f),y.mkdir("/dev/shm"),y.mkdir("/dev/shm/tmp")},createSpecialDirectories(){y.mkdir("/proc");var i=y.mkdir("/proc/self");y.mkdir("/proc/self/fd"),y.mount({mount(){var o=y.createNode(i,"fd",16895,73);return o.node_ops={lookup(f,h){var p=+h,v=y.getStreamChecked(p),w={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>v.path}};return w.parent=w,w}},o}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?y.createDevice("/dev","stdin",n.stdin):y.symlink("/dev/tty","/dev/stdin"),n.stdout?y.createDevice("/dev","stdout",null,n.stdout):y.symlink("/dev/tty","/dev/stdout"),n.stderr?y.createDevice("/dev","stderr",null,n.stderr):y.symlink("/dev/tty1","/dev/stderr"),y.open("/dev/stdin",0),y.open("/dev/stdout",1),y.open("/dev/stderr",1)},staticInit(){[44].forEach(i=>{y.genericErrors[i]=new y.ErrnoError(i),y.genericErrors[i].stack=""}),y.nameTable=new Array(4096),y.mount(ce,{},"/"),y.createDefaultDirectories(),y.createDefaultDevices(),y.createSpecialDirectories(),y.filesystems={MEMFS:ce}},init(i,o,f){y.init.initialized=!0,n.stdin=i||n.stdin,n.stdout=o||n.stdout,n.stderr=f||n.stderr,y.createStandardStreams()},quit(){y.init.initialized=!1;for(var i=0;ithis.length-1||J<0)){var Q=J%this.chunkSize,de=J/this.chunkSize|0;return this.getter(de)[Q]}}setDataGetter(J){this.getter=J}cacheLength(){var J=new XMLHttpRequest;if(J.open("HEAD",f,!1),J.send(null),!(J.status>=200&&J.status<300||J.status===304))throw new Error("Couldn't load "+f+". Status: "+J.status);var Q=Number(J.getResponseHeader("Content-length")),de,we=(de=J.getResponseHeader("Accept-Ranges"))&&de==="bytes",C=(de=J.getResponseHeader("Content-Encoding"))&&de==="gzip",S=1024*1024;we||(S=Q);var $=(Z,pe)=>{if(Z>pe)throw new Error("invalid range ("+Z+", "+pe+") or no bytes requested!");if(pe>Q-1)throw new Error("only "+Q+" bytes available! programmer error!");var le=new XMLHttpRequest;if(le.open("GET",f,!1),Q!==S&&le.setRequestHeader("Range","bytes="+Z+"-"+pe),le.responseType="arraybuffer",le.overrideMimeType&&le.overrideMimeType("text/plain; charset=x-user-defined"),le.send(null),!(le.status>=200&&le.status<300||le.status===304))throw new Error("Couldn't load "+f+". Status: "+le.status);return le.response!==void 0?new Uint8Array(le.response||[]):hn(le.responseText||"",!0)},j=this;j.setDataGetter(Z=>{var pe=Z*S,le=(Z+1)*S-1;if(le=Math.min(le,Q-1),typeof j.chunks[Z]>"u"&&(j.chunks[Z]=$(pe,le)),typeof j.chunks[Z]>"u")throw new Error("doXHR failed!");return j.chunks[Z]}),(C||!Q)&&(S=Q=1,Q=this.getter(0).length,S=Q,F("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=Q,this._chunkSize=S,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var w=new v,R={isDevice:!1,contents:w}}else var R={isDevice:!1,url:f};var O=y.createFile(i,o,R,h,p);R.contents?O.contents=R.contents:R.url&&(O.contents=null,O.url=R.url),Object.defineProperties(O,{usedBytes:{get:function(){return this.contents.length}}});var P={},L=Object.keys(O.stream_ops);L.forEach(Y=>{var J=O.stream_ops[Y];P[Y]=(...Q)=>(y.forceLoadFile(O),J(...Q))});function X(Y,J,Q,de,we){var C=Y.node.contents;if(we>=C.length)return 0;var S=Math.min(C.length-we,de);if(C.slice)for(var $=0;$(y.forceLoadFile(O),X(Y,J,Q,de,we)),P.mmap=(Y,J,Q,de,we)=>{y.forceLoadFile(O);var C=Li();if(!C)throw new y.ErrnoError(48);return X(Y,z,C,J,Q),{ptr:C,allocated:!0}},O.stream_ops=P,O}},Ar={DEFAULT_POLLMASK:5,calculateAt(i,o,f){if(Me.isAbs(o))return o;var h;if(i===-100)h=y.cwd();else{var p=Ar.getStreamFromFD(i);h=p.path}if(o.length==0){if(!f)throw new y.ErrnoError(44);return h}return Me.join2(h,o)},doStat(i,o,f){var h=i(o);k[f>>2]=h.dev,k[f+4>>2]=h.mode,q[f+8>>2]=h.nlink,k[f+12>>2]=h.uid,k[f+16>>2]=h.gid,k[f+20>>2]=h.rdev,Le=[h.size>>>0,(he=h.size,+Math.abs(he)>=1?he>0?+Math.floor(he/4294967296)>>>0:~~+Math.ceil((he-+(~~he>>>0))/4294967296)>>>0:0)],k[f+24>>2]=Le[0],k[f+28>>2]=Le[1],k[f+32>>2]=4096,k[f+36>>2]=h.blocks;var p=h.atime.getTime(),v=h.mtime.getTime(),w=h.ctime.getTime();return Le=[Math.floor(p/1e3)>>>0,(he=Math.floor(p/1e3),+Math.abs(he)>=1?he>0?+Math.floor(he/4294967296)>>>0:~~+Math.ceil((he-+(~~he>>>0))/4294967296)>>>0:0)],k[f+40>>2]=Le[0],k[f+44>>2]=Le[1],q[f+48>>2]=p%1e3*1e3,Le=[Math.floor(v/1e3)>>>0,(he=Math.floor(v/1e3),+Math.abs(he)>=1?he>0?+Math.floor(he/4294967296)>>>0:~~+Math.ceil((he-+(~~he>>>0))/4294967296)>>>0:0)],k[f+56>>2]=Le[0],k[f+60>>2]=Le[1],q[f+64>>2]=v%1e3*1e3,Le=[Math.floor(w/1e3)>>>0,(he=Math.floor(w/1e3),+Math.abs(he)>=1?he>0?+Math.floor(he/4294967296)>>>0:~~+Math.ceil((he-+(~~he>>>0))/4294967296)>>>0:0)],k[f+72>>2]=Le[0],k[f+76>>2]=Le[1],q[f+80>>2]=w%1e3*1e3,Le=[h.ino>>>0,(he=h.ino,+Math.abs(he)>=1?he>0?+Math.floor(he/4294967296)>>>0:~~+Math.ceil((he-+(~~he>>>0))/4294967296)>>>0:0)],k[f+88>>2]=Le[0],k[f+92>>2]=Le[1],0},doMsync(i,o,f,h,p){if(!y.isFile(o.node.mode))throw new y.ErrnoError(43);if(h&2)return 0;var v=G.slice(i,i+f);y.msync(o,v,p,f,h)},getStreamFromFD(i){var o=y.getStreamChecked(i);return o},varargs:void 0,getStr(i){var o=un(i);return o}};function au(i){try{var o=Ar.getStreamFromFD(i);return y.close(o),0}catch(f){if(typeof y>"u"||f.name!=="ErrnoError")throw f;return f.errno}}var ou=(i,o,f,h)=>{for(var p=0,v=0;v>2],R=q[o+4>>2];o+=8;var O=y.read(i,z,w,R,h);if(O<0)return-1;if(p+=O,O>2]=v,0}catch(w){if(typeof y>"u"||w.name!=="ErrnoError")throw w;return w.errno}}var lu=(i,o)=>o+2097152>>>0<4194305-!!i?(i>>>0)+o*4294967296:NaN;function fu(i,o,f,h,p){var v=lu(o,f);try{if(isNaN(v))return 61;var w=Ar.getStreamFromFD(i);return y.llseek(w,v,h),Le=[w.position>>>0,(he=w.position,+Math.abs(he)>=1?he>0?+Math.floor(he/4294967296)>>>0:~~+Math.ceil((he-+(~~he>>>0))/4294967296)>>>0:0)],k[p>>2]=Le[0],k[p+4>>2]=Le[1],w.getdents&&v===0&&h===0&&(w.getdents=null),0}catch(R){if(typeof y>"u"||R.name!=="ErrnoError")throw R;return R.errno}}var uu=(i,o,f,h)=>{for(var p=0,v=0;v>2],R=q[o+4>>2];o+=8;var O=y.write(i,z,w,R,h);if(O<0)return-1;p+=O,typeof h<"u"&&(h+=O)}return p};function hu(i,o,f,h){try{var p=Ar.getStreamFromFD(i),v=uu(p,o,f);return q[h>>2]=v,0}catch(w){if(typeof y>"u"||w.name!=="ErrnoError")throw w;return w.errno}}var dn=i=>i%4===0&&(i%100!==0||i%400===0),du=(i,o)=>{for(var f=0,h=0;h<=o;f+=i[h++]);return f},Bi=[31,29,31,30,31,30,31,31,30,31,30,31],ji=[31,28,31,30,31,30,31,31,30,31,30,31],pu=(i,o)=>{for(var f=new Date(i.getTime());o>0;){var h=dn(f.getFullYear()),p=f.getMonth(),v=(h?Bi:ji)[p];if(o>v-f.getDate())o-=v-f.getDate()+1,f.setDate(1),p<11?f.setMonth(p+1):(f.setMonth(0),f.setFullYear(f.getFullYear()+1));else return f.setDate(f.getDate()+o),f}return f},gu=(i,o)=>{z.set(i,o)},mu=(i,o,f,h)=>{var p=q[h+40>>2],v={tm_sec:k[h>>2],tm_min:k[h+4>>2],tm_hour:k[h+8>>2],tm_mday:k[h+12>>2],tm_mon:k[h+16>>2],tm_year:k[h+20>>2],tm_wday:k[h+24>>2],tm_yday:k[h+28>>2],tm_isdst:k[h+32>>2],tm_gmtoff:k[h+36>>2],tm_zone:p?un(p):""},w=un(f),R={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var O in R)w=w.replace(new RegExp(O,"g"),R[O]);var P=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],L=["January","February","March","April","May","June","July","August","September","October","November","December"];function X(S,$,j){for(var Z=typeof S=="number"?S.toString():S||"";Z.length<$;)Z=j[0]+Z;return Z}function Y(S,$){return X(S,$,"0")}function J(S,$){function j(pe){return pe<0?-1:pe>0?1:0}var Z;return(Z=j(S.getFullYear()-$.getFullYear()))===0&&(Z=j(S.getMonth()-$.getMonth()))===0&&(Z=j(S.getDate()-$.getDate())),Z}function Q(S){switch(S.getDay()){case 0:return new Date(S.getFullYear()-1,11,29);case 1:return S;case 2:return new Date(S.getFullYear(),0,3);case 3:return new Date(S.getFullYear(),0,2);case 4:return new Date(S.getFullYear(),0,1);case 5:return new Date(S.getFullYear()-1,11,31);case 6:return new Date(S.getFullYear()-1,11,30)}}function de(S){var $=pu(new Date(S.tm_year+1900,0,1),S.tm_yday),j=new Date($.getFullYear(),0,4),Z=new Date($.getFullYear()+1,0,4),pe=Q(j),le=Q(Z);return J(pe,$)<=0?J(le,$)<=0?$.getFullYear()+1:$.getFullYear():$.getFullYear()-1}var we={"%a":S=>P[S.tm_wday].substring(0,3),"%A":S=>P[S.tm_wday],"%b":S=>L[S.tm_mon].substring(0,3),"%B":S=>L[S.tm_mon],"%C":S=>{var $=S.tm_year+1900;return Y($/100|0,2)},"%d":S=>Y(S.tm_mday,2),"%e":S=>X(S.tm_mday,2," "),"%g":S=>de(S).toString().substring(2),"%G":de,"%H":S=>Y(S.tm_hour,2),"%I":S=>{var $=S.tm_hour;return $==0?$=12:$>12&&($-=12),Y($,2)},"%j":S=>Y(S.tm_mday+du(dn(S.tm_year+1900)?Bi:ji,S.tm_mon-1),3),"%m":S=>Y(S.tm_mon+1,2),"%M":S=>Y(S.tm_min,2),"%n":()=>` +`,"%p":S=>S.tm_hour>=0&&S.tm_hour<12?"AM":"PM","%S":S=>Y(S.tm_sec,2),"%t":()=>" ","%u":S=>S.tm_wday||7,"%U":S=>{var $=S.tm_yday+7-S.tm_wday;return Y(Math.floor($/7),2)},"%V":S=>{var $=Math.floor((S.tm_yday+7-(S.tm_wday+6)%7)/7);if((S.tm_wday+371-S.tm_yday-2)%7<=2&&$++,$){if($==53){var Z=(S.tm_wday+371-S.tm_yday)%7;Z!=4&&(Z!=3||!dn(S.tm_year))&&($=1)}}else{$=52;var j=(S.tm_wday+7-S.tm_yday-1)%7;(j==4||j==5&&dn(S.tm_year%400-1))&&$++}return Y($,2)},"%w":S=>S.tm_wday,"%W":S=>{var $=S.tm_yday+7-(S.tm_wday+6)%7;return Y(Math.floor($/7),2)},"%y":S=>(S.tm_year+1900).toString().substring(2),"%Y":S=>S.tm_year+1900,"%z":S=>{var $=S.tm_gmtoff,j=$>=0;return $=Math.abs($)/60,$=$/60*100+$%60,(j?"+":"-")+("0000"+$).slice(-4)},"%Z":S=>S.tm_zone,"%%":()=>"%"};w=w.replace(/%%/g,"\0\0");for(var O in we)w.includes(O)&&(w=w.replace(new RegExp(O,"g"),we[O](v)));w=w.replace(/\0\0/g,"%");var C=hn(w,!1);return C.length>o?0:(gu(C,i),C.length-1)},vu=(i,o,f,h,p)=>mu(i,o,f,h),Vi=(i,o)=>{i<128?o.push(i):o.push(i%128|128,i>>7)},yu=i=>{for(var o={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},f={parameters:[],results:i[0]=="v"?[]:[o[i[0]]]},h=1;h{var f=i.slice(0,1),h=i.slice(1),p={i:127,p:127,j:126,f:125,d:124,e:111};o.push(96),Vi(h.length,o);for(var v=0;v{if(typeof WebAssembly.Function=="function")return new WebAssembly.Function(yu(o),i);var f=[1];xu(o,f);var h=[0,97,115,109,1,0,0,0,1];Vi(f.length,h),h.push(...f),h.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var p=new WebAssembly.Module(new Uint8Array(h)),v=new WebAssembly.Instance(p,{e:{f:i}}),w=v.exports.f;return w},Eu=(i,o)=>{if(Dt)for(var f=i;f(Dt||(Dt=new WeakMap,Eu(0,Ft.length)),Dt.get(i)||0),cs=[],Mu=()=>{if(cs.length)return cs.pop();try{Ft.grow(1)}catch(i){throw i instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":i}return Ft.length-1},ls=(i,o)=>{Ft.set(i,o),Rr[i]=Ft.get(i)},Sr=(i,o)=>{var f=wu(i);if(f)return f;var h=Mu();try{ls(h,i)}catch(v){if(!(v instanceof TypeError))throw v;var p=Tu(i,o);ls(h,p)}return Dt.set(i,h),h},Ir=i=>{Dt.delete(ne(i)),ls(i,null),cs.push(i)};Ti=n.InternalError=class extends Error{constructor(o){super(o),this.name="InternalError"}},Il(),ir=n.BindingError=class extends Error{constructor(o){super(o),this.name="BindingError"}},jl(),kl(),Yl(),Si=n.UnboundTypeError=Ql(Error,"UnboundTypeError"),af(),y.createPreloadedFile=su,y.staticInit();var _u={F:yl,J:xl,a:El,k:wl,na:Ml,h:_l,ma:Rl,e:Tl,fa:bl,Da:Al,ea:Sl,Aa:Nl,z:ef,y:rf,j:nf,za:Oi,S:lf,u:ff,$:hf,o:df,C:gf,t:mf,D:vf,_:xf,R:bf,G:Af,Ea:Sf,Ca:If,pa:Cf,Ia:Nf,va:Of,Ka:es,Ha:Df,Ba:kf,Ja:Uf,Ga:Lf,M:Bf,aa:jf,ja:Vf,La:zf,I:Gf,oa:Wf,ha:Kf,ia:Jf,ka:au,la:cu,ca:fu,V:hu,sa:nh,L:Nu,w:Su,A:Lu,P:ah,qa:ih,T:lh,q:Qu,c:Cu,b:bu,m:Au,l:ku,E:Ou,B:oh,U:ch,O:fh,da:hh,ba:dh,i:Uu,g:Iu,xa:Gu,f:Fu,K:zu,Z:ju,ya:Vu,s:Hu,ua:th,ta:rh,wa:qu,d:Ru,Q:eh,Fa:$u,n:Du,x:Bu,ra:sh,Y:Yu,r:Wu,v:Ju,W:Zu,H:Xu,p:Pu,N:uh,X:Ku,ga:vu},Ce=vl(),zi=i=>(zi=Ce.Oa)(i),wt=i=>(wt=Ce.Qa)(i),fs=i=>(fs=Ce.Ra)(i),se=(i,o)=>(se=Ce.Sa)(i,o),Gi=i=>(Gi=Ce.Ta)(i),qi=i=>(qi=Ce.Ua)(i),Hi=()=>(Hi=Ce.Va)(),Wi=i=>(Wi=Ce.Wa)(i),Xi=i=>(Xi=Ce.Xa)(i),Yi=(i,o,f)=>(Yi=Ce.Ya)(i,o,f),Ki=i=>(Ki=Ce.Za)(i),Ji=n.dynCall_iiij=(i,o,f,h,p)=>(Ji=n.dynCall_iiij=Ce._a)(i,o,f,h,p);n.dynCall_viijii=(i,o,f,h,p,v,w)=>(n.dynCall_viijii=Ce.$a)(i,o,f,h,p,v,w),n.dynCall_jiji=(i,o,f,h,p)=>(n.dynCall_jiji=Ce.ab)(i,o,f,h,p);var Zi=n.dynCall_jiiii=(i,o,f,h,p)=>(Zi=n.dynCall_jiiii=Ce.bb)(i,o,f,h,p);n.dynCall_iiiiij=(i,o,f,h,p,v,w)=>(n.dynCall_iiiiij=Ce.cb)(i,o,f,h,p,v,w),n.dynCall_iiiiijj=(i,o,f,h,p,v,w,R,O)=>(n.dynCall_iiiiijj=Ce.db)(i,o,f,h,p,v,w,R,O),n.dynCall_iiiiiijj=(i,o,f,h,p,v,w,R,O,P)=>(n.dynCall_iiiiiijj=Ce.eb)(i,o,f,h,p,v,w,R,O,P);function Ru(i,o,f,h){var p=ae();try{ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function bu(i,o,f){var h=ae();try{return ne(i)(o,f)}catch(p){if(ie(h),p!==p+0)throw p;se(1,0)}}function Au(i,o,f,h){var p=ae();try{return ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function Su(i,o,f,h,p,v){var w=ae();try{return ne(i)(o,f,h,p,v)}catch(R){if(ie(w),R!==R+0)throw R;se(1,0)}}function Iu(i,o){var f=ae();try{ne(i)(o)}catch(h){if(ie(f),h!==h+0)throw h;se(1,0)}}function Cu(i,o){var f=ae();try{return ne(i)(o)}catch(h){if(ie(f),h!==h+0)throw h;se(1,0)}}function Nu(i,o,f,h){var p=ae();try{return ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function Fu(i,o,f){var h=ae();try{ne(i)(o,f)}catch(p){if(ie(h),p!==p+0)throw p;se(1,0)}}function Ou(i,o,f,h,p,v){var w=ae();try{return ne(i)(o,f,h,p,v)}catch(R){if(ie(w),R!==R+0)throw R;se(1,0)}}function Du(i,o,f,h,p){var v=ae();try{ne(i)(o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}function $u(i,o,f,h,p,v,w,R){var O=ae();try{ne(i)(o,f,h,p,v,w,R)}catch(P){if(ie(O),P!==P+0)throw P;se(1,0)}}function Pu(i,o,f,h,p,v,w,R,O,P,L){var X=ae();try{ne(i)(o,f,h,p,v,w,R,O,P,L)}catch(Y){if(ie(X),Y!==Y+0)throw Y;se(1,0)}}function ku(i,o,f,h,p){var v=ae();try{return ne(i)(o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}function Uu(i){var o=ae();try{ne(i)()}catch(f){if(ie(o),f!==f+0)throw f;se(1,0)}}function Lu(i,o){var f=ae();try{return ne(i)(o)}catch(h){if(ie(f),h!==h+0)throw h;se(1,0)}}function Bu(i,o,f,h,p,v){var w=ae();try{ne(i)(o,f,h,p,v)}catch(R){if(ie(w),R!==R+0)throw R;se(1,0)}}function ju(i,o,f,h,p){var v=ae();try{ne(i)(o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}function Vu(i,o,f,h,p,v,w,R,O){var P=ae();try{ne(i)(o,f,h,p,v,w,R,O)}catch(L){if(ie(P),L!==L+0)throw L;se(1,0)}}function zu(i,o,f,h,p,v){var w=ae();try{ne(i)(o,f,h,p,v)}catch(R){if(ie(w),R!==R+0)throw R;se(1,0)}}function Gu(i,o,f,h){var p=ae();try{ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function qu(i,o,f,h,p,v,w){var R=ae();try{ne(i)(o,f,h,p,v,w)}catch(O){if(ie(R),O!==O+0)throw O;se(1,0)}}function Hu(i,o,f,h){var p=ae();try{ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function Wu(i,o,f,h,p,v,w){var R=ae();try{ne(i)(o,f,h,p,v,w)}catch(O){if(ie(R),O!==O+0)throw O;se(1,0)}}function Xu(i,o,f,h,p,v,w,R,O,P,L,X,Y,J){var Q=ae();try{ne(i)(o,f,h,p,v,w,R,O,P,L,X,Y,J)}catch(de){if(ie(Q),de!==de+0)throw de;se(1,0)}}function Yu(i,o,f,h,p,v,w){var R=ae();try{ne(i)(o,f,h,p,v,w)}catch(O){if(ie(R),O!==O+0)throw O;se(1,0)}}function Ku(i,o,f,h,p,v,w,R,O,P,L,X,Y,J,Q,de,we,C,S){var $=ae();try{ne(i)(o,f,h,p,v,w,R,O,P,L,X,Y,J,Q,de,we,C,S)}catch(j){if(ie($),j!==j+0)throw j;se(1,0)}}function Ju(i,o,f,h,p,v,w,R){var O=ae();try{ne(i)(o,f,h,p,v,w,R)}catch(P){if(ie(O),P!==P+0)throw P;se(1,0)}}function Zu(i,o,f,h,p,v,w,R,O,P){var L=ae();try{ne(i)(o,f,h,p,v,w,R,O,P)}catch(X){if(ie(L),X!==X+0)throw X;se(1,0)}}function Qu(i){var o=ae();try{return ne(i)()}catch(f){if(ie(o),f!==f+0)throw f;se(1,0)}}function eh(i,o,f,h,p){var v=ae();try{ne(i)(o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}function th(i,o,f,h,p){var v=ae();try{ne(i)(o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}function rh(i,o,f,h,p,v){var w=ae();try{ne(i)(o,f,h,p,v)}catch(R){if(ie(w),R!==R+0)throw R;se(1,0)}}function nh(i){var o=ae();try{return ne(i)()}catch(f){if(ie(o),f!==f+0)throw f;se(1,0)}}function sh(i,o,f,h,p,v,w){var R=ae();try{ne(i)(o,f,h,p,v,w)}catch(O){if(ie(R),O!==O+0)throw O;se(1,0)}}function ih(i,o,f,h){var p=ae();try{return ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function ah(i,o,f){var h=ae();try{return ne(i)(o,f)}catch(p){if(ie(h),p!==p+0)throw p;se(1,0)}}function oh(i,o,f,h,p,v,w){var R=ae();try{return ne(i)(o,f,h,p,v,w)}catch(O){if(ie(R),O!==O+0)throw O;se(1,0)}}function ch(i,o,f,h,p,v,w,R){var O=ae();try{return ne(i)(o,f,h,p,v,w,R)}catch(P){if(ie(O),P!==P+0)throw P;se(1,0)}}function lh(i,o,f,h){var p=ae();try{return ne(i)(o,f,h)}catch(v){if(ie(p),v!==v+0)throw v;se(1,0)}}function fh(i,o,f,h,p,v,w,R,O,P,L,X){var Y=ae();try{return ne(i)(o,f,h,p,v,w,R,O,P,L,X)}catch(J){if(ie(Y),J!==J+0)throw J;se(1,0)}}function uh(i,o,f,h,p,v,w,R,O,P,L,X,Y,J,Q,de){var we=ae();try{ne(i)(o,f,h,p,v,w,R,O,P,L,X,Y,J,Q,de)}catch(C){if(ie(we),C!==C+0)throw C;se(1,0)}}function hh(i,o,f,h,p){var v=ae();try{return Ji(i,o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}function dh(i,o,f,h,p){var v=ae();try{return Zi(i,o,f,h,p)}catch(w){if(ie(v),w!==w+0)throw w;se(1,0)}}n.addFunction=Sr,n.removeFunction=Ir;var pn;Ee=function i(){pn||Qi(),pn||(Ee=i)};function Qi(){if(Je>0||(_e(),Je>0))return;function i(){pn||(pn=!0,n.calledRun=!0,!U&&(ke(),s(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),be()))}n.setStatus?(n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),i()},1)):i()}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return Qi(),r=c,r}})();const mt="EXT_mesh_manifold",Sa="MERGE";class pi extends Pe{static EXTENSION_NAME=mt;init(){pi.EXTENSION_NAME=mt,this.propertyType="ManifoldPrimitive",this.parentTypes=[W.MESH]}getDefaults(){return Object.assign(super.getDefaults(),{manifoldPrimitive:null,mergeIndices:null,mergeValues:null})}getMergeIndices(){return this.getRef("mergeIndices")}getMergeValues(){return this.getRef("mergeValues")}setMerge(e,r){if(e.getCount()!==r.getCount())throw new Error("merge vectors must be the same length.");return this.setRef("mergeIndices",e),this.setRef("mergeValues",r)}getRunIndex(){return this.get("runIndex")}setRunIndex(e){return this.set("runIndex",e)}setIndices(e){return this.setRef("indices",e)}getIndices(){return this.getRef("indices")}}class sl extends Se{extensionName=mt;prewriteTypes=[W.ACCESSOR];static EXTENSION_NAME=mt;createManifoldPrimitive(){return new pi(this.document.getGraph())}read(e){const{json:r}=e.jsonDoc;return(r.meshes||[]).forEach((s,a)=>{if(!s.extensions||!s.extensions[mt])return;const c=e.meshes[a],l=this.createManifoldPrimitive();c.setExtension(mt,l);const u=s.extensions[mt];if(u.manifoldPrimitive){let d=0;const g=Array();g.push(d);for(const T of c.listPrimitives()){const E=T.getIndices();if(!E){console.log("Skipping non-indexed primitive ",T.getName());continue}d+=E.getCount(),g.push(d)}l.setRunIndex(g),l.setIndices(e.accessors[u.manifoldPrimitive.indices])}u.mergeIndices!=null&&u.mergeValues!=null&&l.setMerge(e.accessors[u.mergeIndices],e.accessors[u.mergeValues])}),this}prewrite(e){return this.document.getRoot().listMeshes().forEach(r=>{const n=r.getExtension(mt);if(!n)return;const s=n.getIndices();e.addAccessorToUsageGroup(s,ft.BufferViewUsage.ELEMENT_ARRAY_BUFFER);const a=n.getMergeIndices(),c=n.getMergeValues();!a||!c||(e.addAccessorToUsageGroup(a,Sa),e.addAccessorToUsageGroup(c,Sa))}),this}write(e){const{json:r}=e.jsonDoc;return this.document.getRoot().listMeshes().forEach(n=>{const s=n.getExtension(mt);if(!s)return;const a=e.meshIndexMap.get(n),c=r.meshes[a],l=s.getRunIndex(),u=l.length-1;if(u!==c.primitives.length)throw new Error("The number of primitives must be exactly one less than the length of runIndex.");const d=e.accessorIndexMap.get(s.getMergeIndices()),g=e.accessorIndexMap.get(s.getMergeValues()),T=r.accessors[d],E=r.accessors[g],M=c.primitives[0],A={indices:e.accessorIndexMap.get(s.getIndices()),mode:M.mode,attributes:{POSITION:M.attributes.POSITION}},N=r.accessors[A.indices];if(N){T&&E&&(N.sparse={count:T.count,indices:{bufferView:T.bufferView,byteOffset:T.byteOffset,componentType:T.componentType},values:{bufferView:E.bufferView,byteOffset:E.byteOffset}});for(let m=0;m{if(G>=l.length)l.push(z);else{const K=Or[z].components,H=Or[l[G]].components;if(K!=H)throw new Error("Attribute sizes do not correspond: "+z+" and "+l[G]);Or[l[G]].type==null&&(l[G]=z)}})}else u.set(D,["POSITION"]);a.addPrimitive(D)}c.push(e.runIndex[d]);const T=e.numVert,E=e.numProp;let M=0;l.forEach((_,b)=>{const F=Or[_];if(F==null)throw new Error(_+" is not a recognized attribute.");if(F.type==null){++M;return}const D=F.components;if(M+D>E)throw new Error("Too many attribute channels.");const V=new Float32Array(D*T);for(let U=0;Ub&&Or[z[b]].type!=null&&U.setAttribute(_,B)}M+=D});const A=s.createManifoldPrimitive();a.setExtension("EXT_mesh_manifold",A);const N=t.createAccessor("manifold indices").setBuffer(n).setType(te.Type.SCALAR).setArray(e.triVerts);A.setIndices(N),A.setRunIndex(c);const m=[...Array(e.numVert).keys()],I=Array(),x=Array();if(e.mergeFromVert&&e.mergeToVert){for(const[_,b]of e.mergeFromVert.entries())m[b]=e.mergeToVert[_];for(const[_,b]of e.triVerts.entries()){const F=m[b];b!==F&&(I.push(_),x.push(F))}}if(I.length>0){const _=t.createAccessor("merge from").setBuffer(n).setType(te.Type.SCALAR).setArray(new Uint32Array(I)),b=t.createAccessor("merge to").setBuffer(n).setType(te.Type.SCALAR).setArray(new Uint32Array(x));A.setMerge(_,b)}return a}const it=await ov();it.setup();Ho(Array);const il=cv(new kh);il.registerExtensions($o);const lv=["cube","cylinder","sphere","tetrahedron","extrude","revolve","compose","union","difference","intersection","levelSet","smooth","ofMesh","hull"],fv=["add","subtract","intersect","decompose","warp","transform","translate","rotate","scale","mirror","calculateCurvature","calculateNormals","smoothByNormals","smoothOut","refine","refineToLength","setProperties","asOriginal","trimByPlane","split","splitByPlane","slice","project","hull"],uv=["square","circle","union","difference","intersection","compose","ofPolygons","hull"],hv=["add","subtract","intersect","rectClip","decompose","transform","translate","rotate","scale","mirror","simplify","offset","hull"],al=["show","only","setMaterial"],dv=["setMinCircularAngle","setMinCircularEdgeLength","setCircularSegments","getCircularSegments","resetToCircularDefaults","Mesh","GLTFNode","Manifold","CrossSection","setMorphStart","setMorphEnd"],pv=al.concat(dv),On=new Array;function jn(t,e,r){const n=it[t],s=r?n:n.prototype;for(const a of e){const c=s[a];s[a]=function(...l){const u=c(...l);return On.push(u),u}}}jn("Manifold",fv,!1);jn("Manifold",lv,!0);jn("CrossSection",hv,!1);jn("CrossSection",uv,!0);for(const t of al){const e=it[t];it[t]=function(...r){const n=e(...r);return On.push(n),n}}let gi=!1;const Dn=new Map,mi=new Map,gv=30,ol={roughness:.2,metallic:1,baseColorFactor:[1,1,0],alpha:1,unlit:!1,animationLength:1,animationMode:"loop"},mv={baseColorFactor:[1,0,0],alpha:.25,roughness:1,metallic:0},vv={baseColorFactor:[.5,.5,.5],alpha:.25,roughness:1,metallic:0},Yt=new Array,$n=new Map,_n=new Map,Zt=new Map,er=new Map;let Yr=1,pr,qr,vs,Rn,Pn;function yv(){for(const t of On)if(t instanceof Array)for(const e of t)e.delete();else t.delete();On.length=0,gi=!1,Dn.clear(),mi.clear(),Yt.length=0,$n.clear(),_n.clear(),Zt.clear(),er.clear(),Yr=1}class xv{_parent;manifold;translation;rotation;scale;material;name;constructor(e){this._parent=e,Yt.push(this)}clone(e){const r={...this};return r._parent=e,Yt.push(r),r}get parent(){return this._parent}}it.GLTFNode=xv;const Wt={...ol};it.setMaterial=(t,e)=>{const r=t.asOriginal();return $n.set(r.originalID(),e),r};it.setMorphStart=(t,e)=>{const r=er.get(t);r!=null?r.start=e:er.set(t,{start:e})};it.setMorphEnd=(t,e)=>{const r=er.get(t);r!=null?r.end=e:er.set(t,{end:e})};function cl(t,e){let r=t.asOriginal();return e.set(r.originalID(),r.getMesh()),r}it.show=t=>cl(t,Dn);it.only=t=>(gi=!0,cl(t,mi));function hr(...t){typeof self<"u"&&self.console&&self.console.log(...t)}function ll(t){const{quat:e}=nl,r=Math.PI/180,n=e.create();return e.rotateZ(n,n,r*t[2]),e.rotateY(n,n,r*t[1]),e.rotateX(n,n,r*t[0]),n}function ys(t,e,r,n){const s=r[e];if(s==null)return null;if(typeof s!="function")return s;const a=qr.getCount(),c=e=="rotation"?4:3,l=new Float32Array(c*a);for(let T=0;T{if(s.end)for(let E=0;E3)for(let N=0;N{const n=r.clone();t.addChild(n)})}function Rv(t,e,r,n,s){hl(e,r);const a=t.createMesh();e.setMesh(a),r.getMesh().listPrimitives().forEach(c=>{const l=c.clone();c.getMaterial()===s&&l.setMaterial(n),a.addPrimitive(l)})}function bv(t,e,r,n){const s=Mv(t,r),{manifold:a}=r;if(a!=null){Tv(t,s,a);const c=fl(r),l=n.get(a);if(l==null){ul(t,e,s,a,c);const u=new Map;u.set(c,s),n.set(a,u)}else{const u=l.get(c);if(u==null){const[d,g]=l.entries().next().value;Rv(t,s,g,kn(t,c),kn(t,d)),l.set(c,s)}else hl(s,u)}}return Zt.set(r,Yr),e.components.push({id:`${Yr++}`,name:r.name,children:a==null?[]:[{objectID:`${Zt.get(a)}`}]}),s}async function dl(t,e){Object.assign(Wt,ol),Object.assign(Wt,t);const r=new Bs,n=Math.sqrt(2)/2,s=1/1e3,a=r.createNode("wrapper").setRotation([-n,0,0,n]).setScale([s,s,s]);r.createScene().addChild(a),pr=r.createAnimation(""),Pn=!1;const c=Math.round(Wt.animationLength*gv)+1,l=new Float32Array(c),u=new Float32Array(c);for(let I=0;I0){const I=new Map,x=new Map;let _=0;for(const b of Yt)I.set(b,bv(r,d,b,x)),b.manifold&&++_;for(const b of Yt){const F=I.get(b),D={objectID:`${Zt.get(b)}`,transform:F.getMatrix()},{parent:V}=b;V==null?(a.addChild(F),d.items.push(D)):(I.get(V).addChild(F),d.components.find(U=>U.id==`${Zt.get(V)}`).children.push(D))}hr("Total glTF nodes: ",Yt.length,", Total mesh references: ",_)}else{if(e==null){hr('No output because "result" is undefined and no "GLTFNode"s were created.');return}const I=r.createNode();ul(r,d,I,e),a.addChild(I),d.items.push({objectID:`${Zt.get(e)}`})}Pn||(qr.dispose(),vs.dispose(),Rn.dispose(),pr.dispose());const g=await il.writeBinary(r),T=new Blob([g],{type:"application/octet-stream"}),E=new Dd;E.add3dModel("3D/3dmodel.model");const M=Od(d),A={};A["3D/3dmodel.model"]=Gr(M),A[Ea.name]=Gr(Ea.content),A[E.name]=Gr(E.content);const N=Yd(A),m=new Blob([N],{type:"application/vnd.ms-package.3dmanufacturing-3dmodel+xml"});return{glbURL:URL.createObjectURL(T),threeMFURL:URL.createObjectURL(m)}}function Av(t){const e={},r={globalDefaults:e,exportModels:dl,glMatrix:nl,module:it,...Object.fromEntries(pv.map(a=>[a,it[a]]))},s=new Function(...Object.keys(r),`resetToCircularDefaults(); +`+t+` + return typeof result === "undefined" ? undefined : result;`)(...Object.values(r));return{globalDefaults:e,manifold:s}}async function Sv(t){const{globalDefaults:e,manifold:r}=Av(t);return await dl(e,r)}self.postMessage(null);if(self.console){const t=self.console.log;self.console.log=function(...e){let r="";for(const n of e)n==null?r+="undefined":typeof n=="object"?r+=JSON.stringify(n,null,4):r+=n.toString();self.postMessage({log:r}),t(...e)}}self.onmessage=async t=>{try{const e=await Sv(t.data);self.postMessage(e)}catch(e){console.log(e.toString()),self.postMessage({objectURL:null})}finally{yv()}}; +//# sourceMappingURL=worker-wrapper-c2317b92.js.map diff --git a/assets/worker-wrapper-c2317b92.js.map b/assets/worker-wrapper-c2317b92.js.map new file mode 100644 index 000000000..9ebf669e6 --- /dev/null +++ b/assets/worker-wrapper-c2317b92.js.map @@ -0,0 +1 @@ +{"version":3,"file":"worker-wrapper-c2317b92.js","sources":["../node_modules/property-graph/dist/property-graph.modern.js","../node_modules/@gltf-transform/core/dist/core.modern.js","../node_modules/ktx-parse/dist/ktx-parse.modern.js","../node_modules/@gltf-transform/extensions/dist/extensions.modern.js","../node_modules/@jscadui/3mf-export/src/defMatrix.js","../node_modules/@jscadui/3mf-export/src/matrix2str.js","../node_modules/@jscadui/3mf-export/src/makeItem.js","../node_modules/@jscadui/3mf-export/src/toDate3mf.js","../node_modules/@jscadui/3mf-export/src/pushHeader.js","../node_modules/@jscadui/3mf-export/src/pushObjectComponent.js","../node_modules/@jscadui/3mf-export/src/pushObjectMesh.js","../node_modules/@jscadui/3mf-export/src/staticFiles.js","../node_modules/@jscadui/3mf-export/index.js","../node_modules/fflate/esm/browser.js","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/mat2.js","../node_modules/gl-matrix/esm/mat2d.js","../node_modules/gl-matrix/esm/mat3.js","../node_modules/gl-matrix/esm/mat4.js","../node_modules/gl-matrix/esm/vec3.js","../node_modules/gl-matrix/esm/vec4.js","../node_modules/gl-matrix/esm/quat.js","../node_modules/gl-matrix/esm/quat2.js","../node_modules/gl-matrix/esm/vec2.js","../built/manifold.js","../manifold-gltf.ts","../gltf-io.ts","../worker.ts","../worker-wrapper.ts"],"sourcesContent":["class EventDispatcher {\n constructor() {\n this._listeners = {};\n }\n\n addEventListener(type, listener) {\n const listeners = this._listeners;\n\n if (listeners[type] === undefined) {\n listeners[type] = [];\n }\n\n if (listeners[type].indexOf(listener) === -1) {\n listeners[type].push(listener);\n }\n\n return this;\n }\n\n removeEventListener(type, listener) {\n if (this._listeners === undefined) return this;\n const listeners = this._listeners;\n const listenerArray = listeners[type];\n\n if (listenerArray !== undefined) {\n const index = listenerArray.indexOf(listener);\n\n if (index !== -1) {\n listenerArray.splice(index, 1);\n }\n }\n\n return this;\n }\n\n dispatchEvent(event) {\n if (this._listeners === undefined) return this;\n const listeners = this._listeners;\n const listenerArray = listeners[event.type];\n\n if (listenerArray !== undefined) {\n // Make a copy, in case listeners are removed while iterating.\n const array = listenerArray.slice(0);\n\n for (let i = 0, l = array.length; i < l; i++) {\n array[i].call(this, event);\n }\n }\n\n return this;\n }\n\n dispose() {\n for (const key in this._listeners) {\n delete this._listeners[key];\n }\n }\n\n}\n\n/**\n * Represents a connection between two {@link GraphNode} resources in a {@link Graph}.\n *\n * The left node is considered the owner, and the right node the resource. The\n * owner is responsible for being able find and remove a reference to a resource, given\n * that link. The resource does not hold a reference to the link or to the owner,\n * although that reverse lookup can be done on the graph.\n */\n\nclass GraphEdge extends EventDispatcher {\n constructor(_name, _parent, _child, _attributes = {}) {\n super();\n this._name = void 0;\n this._parent = void 0;\n this._child = void 0;\n this._attributes = void 0;\n this._disposed = false;\n this._name = _name;\n this._parent = _parent;\n this._child = _child;\n this._attributes = _attributes;\n\n if (!_parent.isOnGraph(_child)) {\n throw new Error('Cannot connect disconnected graphs.');\n }\n }\n /** Name. */\n\n\n getName() {\n return this._name;\n }\n /** Owner node. */\n\n\n getParent() {\n return this._parent;\n }\n /** Resource node. */\n\n\n getChild() {\n return this._child;\n }\n /**\n * Sets the child node.\n *\n * @internal Only {@link Graph} implementations may safely call this method directly. Use\n * \t{@link Property.swap} or {@link Graph.swapChild} instead.\n */\n\n\n setChild(child) {\n this._child = child;\n return this;\n }\n /** Attributes of the graph node relationship. */\n\n\n getAttributes() {\n return this._attributes;\n }\n /** Destroys a (currently intact) edge, updating both the graph and the owner. */\n\n\n dispose() {\n if (this._disposed) return;\n this._disposed = true;\n this.dispatchEvent({\n type: 'dispose',\n target: this\n });\n super.dispose();\n }\n /** Whether this link has been destroyed. */\n\n\n isDisposed() {\n return this._disposed;\n }\n\n}\n\n/**\n * A graph manages a network of {@link GraphNode} nodes, connected\n * by {@link @Link} edges.\n */\n\nclass Graph extends EventDispatcher {\n constructor(...args) {\n super(...args);\n this._emptySet = new Set();\n this._edges = new Set();\n this._parentEdges = new Map();\n this._childEdges = new Map();\n }\n\n /** Returns a list of all parent->child edges on this graph. */\n listEdges() {\n return Array.from(this._edges);\n }\n /** Returns a list of all edges on the graph having the given node as their child. */\n\n\n listParentEdges(node) {\n return Array.from(this._childEdges.get(node) || this._emptySet);\n }\n /** Returns a list of parent nodes for the given child node. */\n\n\n listParents(node) {\n return this.listParentEdges(node).map(edge => edge.getParent());\n }\n /** Returns a list of all edges on the graph having the given node as their parent. */\n\n\n listChildEdges(node) {\n return Array.from(this._parentEdges.get(node) || this._emptySet);\n }\n /** Returns a list of child nodes for the given parent node. */\n\n\n listChildren(node) {\n return this.listChildEdges(node).map(edge => edge.getChild());\n }\n\n disconnectParents(node, filter) {\n let edges = this.listParentEdges(node);\n\n if (filter) {\n edges = edges.filter(edge => filter(edge.getParent()));\n }\n\n edges.forEach(edge => edge.dispose());\n return this;\n }\n /**\n * Creates a {@link GraphEdge} connecting two {@link GraphNode} instances. Edge is returned\n * for the caller to store.\n * @param a Owner\n * @param b Resource\n */\n\n\n createEdge(name, a, b, attributes) {\n return this._registerEdge(new GraphEdge(name, a, b, attributes));\n }\n /**********************************************************************************************\n * Internal.\n */\n\n /** @hidden */\n\n\n _registerEdge(edge) {\n this._edges.add(edge);\n\n const parent = edge.getParent();\n if (!this._parentEdges.has(parent)) this._parentEdges.set(parent, new Set());\n\n this._parentEdges.get(parent).add(edge);\n\n const child = edge.getChild();\n if (!this._childEdges.has(child)) this._childEdges.set(child, new Set());\n\n this._childEdges.get(child).add(edge);\n\n edge.addEventListener('dispose', () => this._removeEdge(edge));\n return edge;\n }\n /**\n * Removes the {@link GraphEdge} from the {@link Graph}. This method should only\n * be invoked by the onDispose() listener created in {@link _registerEdge()}. The\n * public method of removing an edge is {@link GraphEdge.dispose}.\n */\n\n\n _removeEdge(edge) {\n this._edges.delete(edge);\n\n this._parentEdges.get(edge.getParent()).delete(edge);\n\n this._childEdges.get(edge.getChild()).delete(edge);\n\n return this;\n }\n\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction isRef(value) {\n return value instanceof GraphEdge;\n}\nfunction isRefList(value) {\n return Array.isArray(value) && value[0] instanceof GraphEdge;\n}\nfunction isRefMap(value) {\n return !!(isPlainObject(value) && getFirstValue(value) instanceof GraphEdge);\n}\n\nfunction getFirstValue(value) {\n for (const key in value) {\n return value[key];\n }\n}\n\nfunction isPlainObject(value) {\n return Boolean(value) && Object.getPrototypeOf(value) === Object.prototype;\n}\n\nconst $attributes = Symbol('attributes');\nconst $immutableKeys = Symbol('immutableKeys');\n/**\n * Represents a node in a {@link Graph}.\n */\n\nclass GraphNode extends EventDispatcher {\n /**\n * Internal graph used to search and maintain references.\n * @hidden\n */\n\n /**\n * Attributes (literal values and GraphNode references) associated with this instance. For each\n * GraphNode reference, the attributes stores a {@link GraphEdge}. List and Map references are\n * stored as arrays and dictionaries of edges.\n * @internal\n */\n\n /**\n * Attributes included with `getDefaultAttributes` are considered immutable, and cannot be\n * modifed by `.setRef()`, `.copy()`, or other GraphNode methods. Both the edges and the\n * properties will be disposed with the parent GraphNode.\n *\n * Currently, only single-edge references (getRef/setRef) are supported as immutables.\n *\n * @internal\n */\n constructor(graph) {\n super();\n this._disposed = false;\n this.graph = void 0;\n this[$attributes] = void 0;\n this[$immutableKeys] = void 0;\n this.graph = graph;\n this[$immutableKeys] = new Set();\n this[$attributes] = this._createAttributes();\n }\n /**\n * Returns default attributes for the graph node. Subclasses having any attributes (either\n * literal values or references to other graph nodes) must override this method. Literal\n * attributes should be given their default values, if any. References should generally be\n * initialized as empty (Ref → null, RefList → [], RefMap → {}) and then modified by setters.\n *\n * Any single-edge references (setRef) returned by this method will be considered immutable,\n * to be owned by and disposed with the parent node. Multi-edge references (addRef, removeRef,\n * setRefMap) cannot be returned as default attributes.\n */\n\n\n getDefaults() {\n return {};\n }\n /**\n * Constructs and returns an object used to store a graph nodes attributes. Compared to the\n * default Attributes interface, this has two distinctions:\n *\n * 1. Slots for GraphNode objects are replaced with slots for GraphEdge>\n * 2. GraphNode objects provided as defaults are considered immutable\n *\n * @internal\n */\n\n\n _createAttributes() {\n const defaultAttributes = this.getDefaults();\n const attributes = {};\n\n for (const key in defaultAttributes) {\n const value = defaultAttributes[key];\n\n if (value instanceof GraphNode) {\n const ref = this.graph.createEdge(key, this, value);\n ref.addEventListener('dispose', () => value.dispose());\n this[$immutableKeys].add(key);\n attributes[key] = ref;\n } else {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n /** @internal Returns true if two nodes are on the same {@link Graph}. */\n\n\n isOnGraph(other) {\n return this.graph === other.graph;\n }\n /** Returns true if the node has been permanently removed from the graph. */\n\n\n isDisposed() {\n return this._disposed;\n }\n /**\n * Removes both inbound references to and outbound references from this object. At the end\n * of the process the object holds no references, and nothing holds references to it. A\n * disposed object is not reusable.\n */\n\n\n dispose() {\n if (this._disposed) return;\n this.graph.listChildEdges(this).forEach(edge => edge.dispose());\n this.graph.disconnectParents(this);\n this._disposed = true;\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n /**\n * Removes all inbound references to this object. At the end of the process the object is\n * considered 'detached': it may hold references to child resources, but nothing holds\n * references to it. A detached object may be re-attached.\n */\n\n\n detach() {\n this.graph.disconnectParents(this);\n return this;\n }\n /**\n * Transfers this object's references from the old node to the new one. The old node is fully\n * detached from this parent at the end of the process.\n *\n * @hidden\n */\n\n\n swap(old, replacement) {\n for (const attribute in this[$attributes]) {\n const value = this[$attributes][attribute];\n\n if (isRef(value)) {\n const ref = value;\n\n if (ref.getChild() === old) {\n this.setRef(attribute, replacement, ref.getAttributes());\n }\n } else if (isRefList(value)) {\n const refs = value;\n const ref = refs.find(ref => ref.getChild() === old);\n\n if (ref) {\n const refAttributes = ref.getAttributes();\n this.removeRef(attribute, old).addRef(attribute, replacement, refAttributes);\n }\n } else if (isRefMap(value)) {\n const refMap = value;\n\n for (const key in refMap) {\n const ref = refMap[key];\n\n if (ref.getChild() === old) {\n this.setRefMap(attribute, key, replacement, ref.getAttributes());\n }\n }\n }\n }\n\n return this;\n }\n /**********************************************************************************************\n * Literal attributes.\n */\n\n /** @hidden */\n\n\n get(attribute) {\n return this[$attributes][attribute];\n }\n /** @hidden */\n\n\n set(attribute, value) {\n this[$attributes][attribute] = value;\n return this.dispatchEvent({\n type: 'change',\n attribute\n });\n }\n /**********************************************************************************************\n * Ref: 1:1 graph node references.\n */\n\n /** @hidden */\n\n\n getRef(attribute) {\n const ref = this[$attributes][attribute];\n return ref ? ref.getChild() : null;\n }\n /** @hidden */\n\n\n setRef(attribute, value, attributes) {\n if (this[$immutableKeys].has(attribute)) {\n throw new Error(`Cannot overwrite immutable attribute, \"${attribute}\".`);\n }\n\n const prevRef = this[$attributes][attribute];\n if (prevRef) prevRef.dispose(); // TODO(cleanup): Possible duplicate event.\n\n if (!value) return this;\n const ref = this.graph.createEdge(attribute, this, value, attributes);\n ref.addEventListener('dispose', () => {\n delete this[$attributes][attribute];\n this.dispatchEvent({\n type: 'change',\n attribute\n });\n });\n this[$attributes][attribute] = ref;\n return this.dispatchEvent({\n type: 'change',\n attribute\n });\n }\n /**********************************************************************************************\n * RefList: 1:many graph node references.\n */\n\n /** @hidden */\n\n\n listRefs(attribute) {\n const refs = this[$attributes][attribute];\n return refs.map(ref => ref.getChild());\n }\n /** @hidden */\n\n\n addRef(attribute, value, attributes) {\n const ref = this.graph.createEdge(attribute, this, value, attributes);\n const refs = this[$attributes][attribute];\n refs.push(ref);\n ref.addEventListener('dispose', () => {\n let index;\n\n while ((index = refs.indexOf(ref)) !== -1) {\n refs.splice(index, 1);\n }\n\n this.dispatchEvent({\n type: 'change',\n attribute\n });\n });\n return this.dispatchEvent({\n type: 'change',\n attribute\n });\n }\n /** @hidden */\n\n\n removeRef(attribute, value) {\n const refs = this[$attributes][attribute];\n const pruned = refs.filter(ref => ref.getChild() === value);\n pruned.forEach(ref => ref.dispose()); // TODO(cleanup): Possible duplicate event.\n\n return this;\n }\n /**********************************************************************************************\n * RefMap: Named 1:many (map) graph node references.\n */\n\n /** @hidden */\n\n\n listRefMapKeys(key) {\n return Object.keys(this[$attributes][key]);\n }\n /** @hidden */\n\n\n listRefMapValues(key) {\n return Object.values(this[$attributes][key]).map(ref => ref.getChild());\n }\n /** @hidden */\n\n\n getRefMap(attribute, key) {\n const refMap = this[$attributes][attribute];\n return refMap[key] ? refMap[key].getChild() : null;\n }\n /** @hidden */\n\n\n setRefMap(attribute, key, value, metadata) {\n const refMap = this[$attributes][attribute];\n const prevRef = refMap[key];\n if (prevRef) prevRef.dispose(); // TODO(cleanup): Possible duplicate event.\n\n if (!value) return this;\n metadata = Object.assign(metadata || {}, {\n key: key\n });\n const ref = this.graph.createEdge(attribute, this, value, _extends({}, metadata, {\n key\n }));\n ref.addEventListener('dispose', () => {\n delete refMap[key];\n this.dispatchEvent({\n type: 'change',\n attribute,\n key\n });\n });\n refMap[key] = ref;\n return this.dispatchEvent({\n type: 'change',\n attribute,\n key\n });\n }\n /**********************************************************************************************\n * Events.\n */\n\n /**\n * Dispatches an event on the GraphNode, and on the associated\n * Graph. Event types on the graph are prefixed, `\"node:[type]\"`.\n */\n\n\n dispatchEvent(event) {\n super.dispatchEvent(_extends({}, event, {\n target: this\n }));\n this.graph.dispatchEvent(_extends({}, event, {\n target: this,\n type: `node:${event.type}`\n }));\n return this;\n }\n\n}\n\nexport { $attributes, $immutableKeys, EventDispatcher, Graph, GraphEdge, GraphNode, isRef, isRefList, isRefMap };\n//# sourceMappingURL=property-graph.modern.js.map\n","import{GraphNode as t,$attributes as e,GraphEdge as r,$immutableKeys as s,isRefList as n,isRefMap as i,isRef as o,Graph as a}from\"property-graph\";export{Graph,GraphEdge}from\"property-graph\";const u=\"v3.8.0\",c=\"@glb.bin\";var h,f,l,d,g;!function(t){t.ACCESSOR=\"Accessor\",t.ANIMATION=\"Animation\",t.ANIMATION_CHANNEL=\"AnimationChannel\",t.ANIMATION_SAMPLER=\"AnimationSampler\",t.BUFFER=\"Buffer\",t.CAMERA=\"Camera\",t.MATERIAL=\"Material\",t.MESH=\"Mesh\",t.PRIMITIVE=\"Primitive\",t.PRIMITIVE_TARGET=\"PrimitiveTarget\",t.NODE=\"Node\",t.ROOT=\"Root\",t.SCENE=\"Scene\",t.SKIN=\"Skin\",t.TEXTURE=\"Texture\",t.TEXTURE_INFO=\"TextureInfo\"}(h||(h={})),function(t){t.INTERLEAVED=\"interleaved\",t.SEPARATE=\"separate\"}(f||(f={})),function(t){t.ARRAY_BUFFER=\"ARRAY_BUFFER\",t.ELEMENT_ARRAY_BUFFER=\"ELEMENT_ARRAY_BUFFER\",t.INVERSE_BIND_MATRICES=\"INVERSE_BIND_MATRICES\",t.OTHER=\"OTHER\",t.SPARSE=\"SPARSE\"}(l||(l={})),function(t){t[t.R=4096]=\"R\",t[t.G=256]=\"G\",t[t.B=16]=\"B\",t[t.A=1]=\"A\"}(d||(d={})),function(t){t.GLTF=\"GLTF\",t.GLB=\"GLB\"}(g||(g={}));const p={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};var m,w=\"undefined\"!=typeof Float32Array?Float32Array:Array;function y(t){return Math.hypot(t[0],t[1],t[2])}function v(t,e,r){var s=e[0],n=e[1],i=e[2],o=r[3]*s+r[7]*n+r[11]*i+r[15];return t[0]=(r[0]*s+r[4]*n+r[8]*i+r[12])/(o=o||1),t[1]=(r[1]*s+r[5]*n+r[9]*i+r[13])/o,t[2]=(r[2]*s+r[6]*n+r[10]*i+r[14])/o,t}function T(t){const e={min:[Infinity,Infinity,Infinity],max:[-Infinity,-Infinity,-Infinity]},r=t.propertyType===h.NODE?[t]:t.listChildren();for(const t of r)t.traverse(t=>{const r=t.getMesh();if(!r)return;const s=x(r,t.getWorldMatrix());A(s.min,e),A(s.max,e)});return e}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)}),m=new w(3),w!=Float32Array&&(m[0]=0,m[1]=0,m[2]=0);const b=T;function x(t,e){const r={min:[Infinity,Infinity,Infinity],max:[-Infinity,-Infinity,-Infinity]};for(const s of t.listPrimitives()){const t=s.getAttribute(\"POSITION\");if(!t)continue;let n=[0,0,0],i=[0,0,0];for(let s=0;s=0;return Buffer.from(e,r?\"base64\":\"utf8\")}}static encodeText(t){return\"undefined\"!=typeof TextEncoder?(new TextEncoder).encode(t):Buffer.from(t)}static decodeText(t){return\"undefined\"!=typeof TextDecoder?(new TextDecoder).decode(t):Buffer.from(t).toString(\"utf8\")}static concat(t){let e=0;for(const r of t)e+=r.byteLength;const r=new Uint8Array(e);let s=0;for(const e of t)r.set(e,s),s+=e.byteLength;return r}static pad(t,e=0){const r=this.padNumber(t.byteLength);if(r===t.byteLength)return t;const s=new Uint8Array(r);if(s.set(t),0!==e)for(let n=t.byteLength;n>16&255)/255,r[1]=(t>>8&255)/255,r[2]=(255&t)/255,this.convertSRGBToLinear(e,e)}static factorToHex(t){const e=[...t],[r,s,n]=this.convertLinearToSRGB(t,e);return 255*r<<16^255*s<<8^255*n<<0}static convertSRGBToLinear(t,e){const r=t,s=e;for(let t=0;t<3;t++)s[t]=r[t]<.04045?.0773993808*r[t]:Math.pow(.9478672986*r[t]+.0521327014,2.4);return e}static convertLinearToSRGB(t,e){const r=t,s=e;for(let t=0;t<3;t++)s[t]=r[t]<.0031308?12.92*r[t]:1.055*Math.pow(r[t],.41666)-.055;return e}}class M{match(t){return t.length>=8&&137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]&&13===t[4]&&10===t[5]&&26===t[6]&&10===t[7]}getSize(t){const e=new DataView(t.buffer,t.byteOffset);return E.decodeText(t.slice(12,16))===M.PNG_FRIED_CHUNK_NAME?[e.getUint32(32,!1),e.getUint32(36,!1)]:[e.getUint32(16,!1),e.getUint32(20,!1)]}getChannels(t){return 4}}M.PNG_FRIED_CHUNK_NAME=\"CgBI\";class I{static registerFormat(t,e){this.impls[t]=e}static getMimeType(t){for(const e in this.impls)if(this.impls[e].match(t))return e;return null}static getSize(t,e){return this.impls[e]?this.impls[e].getSize(t):null}static getChannels(t,e){return this.impls[e]?this.impls[e].getChannels(t):null}static getVRAMByteLength(t,e){if(!this.impls[e])return null;if(this.impls[e].getVRAMByteLength)return this.impls[e].getVRAMByteLength(t);let r=0;const s=this.getSize(t,e);if(!s)return null;for(;s[0]>1||s[1]>1;)r+=s[0]*s[1]*4,s[0]=Math.max(Math.floor(s[0]/2),1),s[1]=Math.max(Math.floor(s[1]/2),1);return r+=4,r}static mimeTypeToExtension(t){return\"image/jpeg\"===t?\"jpg\":t.split(\"/\").pop()}static extensionToMimeType(t){return\"jpg\"===t?\"image/jpeg\":t?`image/${t}`:\"\"}}function R(t,e){if(e>t.byteLength)throw new TypeError(\"Corrupt JPG, exceeded buffer limits\");if(255!==t.getUint8(e))throw new TypeError(\"Invalid JPG, marker table corrupted\");return t}I.impls={\"image/jpeg\":new class{match(t){return t.length>=3&&255===t[0]&&216===t[1]&&255===t[2]}getSize(t){let e,r,s=new DataView(t.buffer,t.byteOffset+4);for(;s.byteLength;){if(e=s.getUint16(0,!1),R(s,e),r=s.getUint8(e+1),192===r||193===r||194===r)return[s.getUint16(e+7,!1),s.getUint16(e+5,!1)];s=new DataView(t.buffer,s.byteOffset+e+2)}throw new TypeError(\"Invalid JPG, no size found\")}getChannels(t){return 3}},\"image/png\":new M};class N{static basename(t){const e=t.split(/[\\\\/]/).pop();return e.substring(0,e.lastIndexOf(\".\"))}static extension(t){if(t.startsWith(\"data:image/\")){const e=t.match(/data:(image\\/\\w+)/)[1];return I.mimeTypeToExtension(e)}return t.startsWith(\"data:model/gltf+json\")?\"gltf\":t.startsWith(\"data:model/gltf-binary\")?\"glb\":t.startsWith(\"data:application/\")?\"bin\":t.split(/[\\\\/]/).pop().split(/[.]/).pop()}}function O(t){return\"[object Object]\"===Object.prototype.toString.call(t)}function C(t){if(!1===O(t))return!1;const e=t.constructor;if(void 0===e)return!0;const r=e.prototype;return!1!==O(r)&&!1!==Object.prototype.hasOwnProperty.call(r,\"isPrototypeOf\")}var F,U;!function(t){t[t.SILENT=4]=\"SILENT\",t[t.ERROR=3]=\"ERROR\",t[t.WARN=2]=\"WARN\",t[t.INFO=1]=\"INFO\",t[t.DEBUG=0]=\"DEBUG\"}(U||(U={}));class B{constructor(t){this.verbosity=void 0,this.verbosity=t}debug(t){this.verbosity<=B.Verbosity.DEBUG&&console.debug(t)}info(t){this.verbosity<=B.Verbosity.INFO&&console.info(t)}warn(t){this.verbosity<=B.Verbosity.WARN&&console.warn(t)}error(t){this.verbosity<=B.Verbosity.ERROR&&console.error(t)}}function P(t,e,r){var s=e[0],n=e[1],i=e[2],o=e[3],a=e[4],u=e[5],c=e[6],h=e[7],f=e[8],l=e[9],d=e[10],g=e[11],p=e[12],m=e[13],w=e[14],y=e[15],v=r[0],T=r[1],b=r[2],x=r[3];return t[0]=v*s+T*a+b*f+x*p,t[1]=v*n+T*u+b*l+x*m,t[2]=v*i+T*c+b*d+x*w,t[3]=v*o+T*h+b*g+x*y,t[4]=(v=r[4])*s+(T=r[5])*a+(b=r[6])*f+(x=r[7])*p,t[5]=v*n+T*u+b*l+x*m,t[6]=v*i+T*c+b*d+x*w,t[7]=v*o+T*h+b*g+x*y,t[8]=(v=r[8])*s+(T=r[9])*a+(b=r[10])*f+(x=r[11])*p,t[9]=v*n+T*u+b*l+x*m,t[10]=v*i+T*c+b*d+x*w,t[11]=v*o+T*h+b*g+x*y,t[12]=(v=r[12])*s+(T=r[13])*a+(b=r[14])*f+(x=r[15])*p,t[13]=v*n+T*u+b*l+x*m,t[14]=v*i+T*c+b*d+x*w,t[15]=v*o+T*h+b*g+x*y,t}F=B,B.Verbosity=U,B.DEFAULT_INSTANCE=new F(F.Verbosity.INFO);class L{static identity(t){return t}static eq(t,e,r=1e-5){if(t.length!==e.length)return!1;for(let s=0;sr)return!1;return!0}static decodeNormalizedInt(t,e){switch(e){case 5126:return t;case 5123:return t/65535;case 5121:return t/255;case 5122:return Math.max(t/32767,-1);case 5120:return Math.max(t/127,-1);default:throw new Error(\"Invalid component type.\")}}static denormalize(t,e){return L.decodeNormalizedInt(t,e)}static encodeNormalizedInt(t,e){switch(e){case 5126:return t;case 5123:return Math.round(65535*t);case 5121:return Math.round(255*t);case 5122:return Math.round(32767*t);case 5120:return Math.round(127*t);default:throw new Error(\"Invalid component type.\")}}static normalize(t,e){return L.encodeNormalizedInt(t,e)}static decompose(t,e,r,s){let n=y([t[0],t[1],t[2]]);const i=y([t[4],t[5],t[6]]),o=y([t[8],t[9],t[10]]);var a,u,c,h,f,l,d,g,p,m,v,T,b,x,A,E,S;((u=(a=t)[0])*(d=a[5])-(c=a[1])*(l=a[4]))*((T=a[10])*(S=a[15])-(b=a[11])*(E=a[14]))-(u*(g=a[6])-(h=a[2])*l)*((v=a[9])*S-b*(A=a[13]))+(u*(p=a[7])-(f=a[3])*l)*(v*E-T*A)+(c*g-h*d)*((m=a[8])*S-b*(x=a[12]))-(c*p-f*d)*(m*E-T*x)+(h*p-f*g)*(m*A-v*x)<0&&(n=-n),e[0]=t[12],e[1]=t[13],e[2]=t[14];const M=t.slice(),I=1/n,R=1/i,N=1/o;M[0]*=I,M[1]*=I,M[2]*=I,M[4]*=R,M[5]*=R,M[6]*=R,M[8]*=N,M[9]*=N,M[10]*=N,function(t,e){var r=new w(3);!function(t,e){var r=e[4],s=e[5],n=e[6],i=e[8],o=e[9],a=e[10];t[0]=Math.hypot(e[0],e[1],e[2]),t[1]=Math.hypot(r,s,n),t[2]=Math.hypot(i,o,a)}(r,e);var s=1/r[0],n=1/r[1],i=1/r[2],o=e[0]*s,a=e[1]*n,u=e[2]*i,c=e[4]*s,h=e[5]*n,f=e[6]*i,l=e[8]*s,d=e[9]*n,g=e[10]*i,p=o+h+g,m=0;p>0?(m=2*Math.sqrt(p+1),t[3]=.25*m,t[0]=(f-d)/m,t[1]=(l-u)/m,t[2]=(a-c)/m):o>h&&o>g?(m=2*Math.sqrt(1+o-h-g),t[3]=(f-d)/m,t[0]=.25*m,t[1]=(a+c)/m,t[2]=(l+u)/m):h>g?(m=2*Math.sqrt(1+h-o-g),t[3]=(l-u)/m,t[0]=(a+c)/m,t[1]=.25*m,t[2]=(f+d)/m):(m=2*Math.sqrt(1+g-o-h),t[3]=(a-c)/m,t[0]=(l+u)/m,t[1]=(f+d)/m,t[2]=.25*m)}(r,M),s[0]=n,s[1]=i,s[2]=o}static compose(t,e,r,s){const n=s,i=e[0],o=e[1],a=e[2],u=e[3],c=i+i,h=o+o,f=a+a,l=i*c,d=i*h,g=i*f,p=o*h,m=o*f,w=a*f,y=u*c,v=u*h,T=u*f,b=r[0],x=r[1],A=r[2];return n[0]=(1-(p+w))*b,n[1]=(d+T)*b,n[2]=(g-v)*b,n[3]=0,n[4]=(d-T)*x,n[5]=(1-(l+w))*x,n[6]=(m+y)*x,n[7]=0,n[8]=(g+v)*A,n[9]=(m-y)*A,n[10]=(1-(l+p))*A,n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n}}function j(t,e){if(!!t!=!!e)return!1;const r=t.getChild(),s=e.getChild();return r===s||r.equals(s)}function D(t,e){if(!!t!=!!e)return!1;if(t.length!==e.length)return!1;for(let r=0;rt,Y=new Set;class Z extends t{constructor(t,r=\"\"){super(t),this[e].name=r,this.init(),this.dispatchEvent({type:\"create\"})}getGraph(){return this.graph}getDefaults(){return Object.assign(super.getDefaults(),{name:\"\",extras:{}})}set(t,e){return Array.isArray(e)&&(e=e.slice()),super.set(t,e)}getName(){return this.get(\"name\")}setName(t){return this.set(\"name\",t)}getExtras(){return this.get(\"extras\")}setExtras(t){return this.set(\"extras\",t)}clone(){return new(0,this.constructor)(this.graph).copy(this,H)}copy(t,o=H){for(const t in this[e]){const o=this[e][t];if(o instanceof r)this[s].has(t)||o.dispose();else if(n(o))for(const t of o)t.dispose();else if(i(o))for(const t in o)o[t].dispose()}for(const a in t[e]){const u=this[e][a],c=t[e][a];if(c instanceof r)this[s].has(a)?u.getChild().copy(o(c.getChild()),o):this.setRef(a,o(c.getChild()),c.getAttributes());else if(n(c))for(const t of c)this.addRef(a,o(t.getChild()),t.getAttributes());else if(i(c))for(const t in c){const e=c[t];this.setRefMap(a,t,o(e.getChild()),e.getAttributes())}else this[e][a]=C(c)?JSON.parse(JSON.stringify(c)):Array.isArray(c)||c instanceof ArrayBuffer||ArrayBuffer.isView(c)?c.slice():c}return this}equals(t,r=Y){if(this===t)return!0;if(this.propertyType!==t.propertyType)return!1;for(const s in this[e]){if(r.has(s))continue;const a=this[e][s],u=t[e][s];if(o(a)||o(u)){if(!j(a,u))return!1}else if(n(a)||n(u)){if(!D(a,u))return!1}else if(i(a)||i(u)){if(!_(a,u))return!1}else if(C(a)||C(u)){if(!z(a,u))return!1}else if(G(a)||G(u)){if(!k(a,u))return!1}else if(a!==u)return!1}return!0}detach(){return this.graph.disconnectParents(this,t=>\"Root\"!==t.propertyType),this}listParents(){return this.graph.listParents(this)}}class K extends Z{getDefaults(){return Object.assign(super.getDefaults(),{extensions:{}})}getExtension(t){return this.getRefMap(\"extensions\",t)}setExtension(t,e){return e&&e.t(this),this.setRefMap(\"extensions\",t,e)}listExtensions(){return this.listRefMapValues(\"extensions\")}}class Q extends K{constructor(...t){super(...t),this.i=L.identity,this.o=L.identity}init(){this.propertyType=h.ACCESSOR}getDefaults(){return Object.assign(super.getDefaults(),{array:null,type:Q.Type.SCALAR,componentType:Q.ComponentType.FLOAT,normalized:!1,sparse:!1,buffer:null})}copy(t,e=H){return super.copy(t,e),this.i=t.i,this.o=t.o,this}static getElementSize(t){switch(t){case Q.Type.SCALAR:return 1;case Q.Type.VEC2:return 2;case Q.Type.VEC3:return 3;case Q.Type.VEC4:case Q.Type.MAT2:return 4;case Q.Type.MAT3:return 9;case Q.Type.MAT4:return 16;default:throw new Error(\"Unexpected type: \"+t)}}static getComponentSize(t){switch(t){case Q.ComponentType.BYTE:case Q.ComponentType.UNSIGNED_BYTE:return 1;case Q.ComponentType.SHORT:case Q.ComponentType.UNSIGNED_SHORT:return 2;case Q.ComponentType.UNSIGNED_INT:case Q.ComponentType.FLOAT:return 4;default:throw new Error(\"Unexpected component type: \"+t)}}getMinNormalized(t){const e=this.getElementSize();this.getMin(t);for(let r=0;rL.decodeNormalizedInt(t,this.get(\"componentType\")),this.i=t=>L.encodeNormalizedInt(t,this.get(\"componentType\"))):(this.o=L.identity,this.i=L.identity),this}getScalar(t){const e=this.getElementSize();return this.o(this.get(\"array\")[t*e])}setScalar(t,e){return this.get(\"array\")[t*this.getElementSize()]=this.i(e),this}getElement(t,e){const r=this.getElementSize(),s=this.get(\"array\");for(let n=0;nt.u=null),this}removeChild(t){return this.removeRef(\"children\",t)}listChildren(){return this.listRefs(\"children\")}getParent(){return this.u?this.u:this.listParents().find(t=>t.propertyType===h.SCENE)||null}getParentNode(){return this.u}getMesh(){return this.getRef(\"mesh\")}setMesh(t){return this.setRef(\"mesh\",t)}getCamera(){return this.getRef(\"camera\")}setCamera(t){return this.setRef(\"camera\",t)}getSkin(){return this.getRef(\"skin\")}setSkin(t){return this.setRef(\"skin\",t)}getWeights(){return this.get(\"weights\")}setWeights(t){return this.set(\"weights\",t)}traverse(t){t(this);for(const e of this.listChildren())e.traverse(t);return this}}class dt extends K{init(){this.propertyType=h.PRIMITIVE}getDefaults(){return Object.assign(super.getDefaults(),{mode:dt.Mode.TRIANGLES,material:null,indices:null,attributes:{},targets:[]})}getIndices(){return this.getRef(\"indices\")}setIndices(t){return this.setRef(\"indices\",t,{usage:l.ELEMENT_ARRAY_BUFFER})}getAttribute(t){return this.getRefMap(\"attributes\",t)}setAttribute(t,e){return this.setRefMap(\"attributes\",t,e,{usage:l.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues(\"attributes\")}listSemantics(){return this.listRefMapKeys(\"attributes\")}getMaterial(){return this.getRef(\"material\")}setMaterial(t){return this.setRef(\"material\",t)}getMode(){return this.get(\"mode\")}setMode(t){return this.set(\"mode\",t)}listTargets(){return this.listRefs(\"targets\")}addTarget(t){return this.addRef(\"targets\",t)}removeTarget(t){return this.removeRef(\"targets\",t)}}dt.Mode={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class gt extends Z{init(){this.propertyType=h.PRIMITIVE_TARGET}getDefaults(){return Object.assign(super.getDefaults(),{attributes:{}})}getAttribute(t){return this.getRefMap(\"attributes\",t)}setAttribute(t,e){return this.setRefMap(\"attributes\",t,e,{usage:l.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues(\"attributes\")}listSemantics(){return this.listRefMapKeys(\"attributes\")}}function pt(){return pt=Object.assign?Object.assign.bind():function(t){for(var e=1;et.h.delete(this)),this}removeChild(t){return this.removeRef(\"children\",t)}listChildren(){return this.listRefs(\"children\")}traverse(t){for(const e of this.listChildren())e.traverse(t);return this}}class wt extends K{init(){this.propertyType=h.SKIN}getDefaults(){return Object.assign(super.getDefaults(),{skeleton:null,inverseBindMatrices:null,joints:[]})}getSkeleton(){return this.getRef(\"skeleton\")}setSkeleton(t){return this.setRef(\"skeleton\",t)}getInverseBindMatrices(){return this.getRef(\"inverseBindMatrices\")}setInverseBindMatrices(t){return this.setRef(\"inverseBindMatrices\",t,{usage:l.INVERSE_BIND_MATRICES})}addJoint(t){return this.addRef(\"joints\",t)}removeJoint(t){return this.removeRef(\"joints\",t)}listJoints(){return this.listRefs(\"joints\")}}class yt extends K{init(){this.propertyType=h.TEXTURE}getDefaults(){return Object.assign(super.getDefaults(),{image:null,mimeType:\"\",uri:\"\"})}getMimeType(){return this.get(\"mimeType\")||I.extensionToMimeType(N.extension(this.get(\"uri\")))}setMimeType(t){return this.set(\"mimeType\",t)}getURI(){return this.get(\"uri\")}setURI(t){this.set(\"uri\",t);const e=I.extensionToMimeType(N.extension(t));return e&&this.set(\"mimeType\",e),this}getImage(){return this.get(\"image\")}setImage(t){return this.set(\"image\",E.assertView(t))}getSize(){const t=this.get(\"image\");return t?I.getSize(t,this.getMimeType()):null}}class vt extends K{init(){this.propertyType=h.ROOT}getDefaults(){return Object.assign(super.getDefaults(),{asset:{generator:`glTF-Transform ${u}`,version:\"2.0\"},defaultScene:null,accessors:[],animations:[],buffers:[],cameras:[],materials:[],meshes:[],nodes:[],scenes:[],skins:[],textures:[]})}constructor(t){super(t),this.l=new Set,t.addEventListener(\"node:create\",t=>{this.g(t.target)})}clone(){throw new Error(\"Root cannot be cloned.\")}copy(t,e=H){if(e===H)throw new Error(\"Root cannot be copied.\");this.set(\"asset\",pt({},t.get(\"asset\"))),this.setName(t.getName()),this.setExtras(pt({},t.getExtras())),this.setDefaultScene(t.getDefaultScene()?e(t.getDefaultScene()):null);for(const r of t.listRefMapKeys(\"extensions\")){const s=t.getExtension(r);this.setExtension(r,e(s))}return this}g(t){return t instanceof mt?this.addRef(\"scenes\",t):t instanceof lt?this.addRef(\"nodes\",t):t instanceof st?this.addRef(\"cameras\",t):t instanceof wt?this.addRef(\"skins\",t):t instanceof ft?this.addRef(\"meshes\",t):t instanceof ht?this.addRef(\"materials\",t):t instanceof yt?this.addRef(\"textures\",t):t instanceof X?this.addRef(\"animations\",t):t instanceof Q?this.addRef(\"accessors\",t):t instanceof rt&&this.addRef(\"buffers\",t),this}getAsset(){return this.get(\"asset\")}listExtensionsUsed(){return Array.from(this.l)}listExtensionsRequired(){return this.listExtensionsUsed().filter(t=>t.isRequired())}p(t){return this.l.add(t),this}m(t){return this.l.delete(t),this}listScenes(){return this.listRefs(\"scenes\")}setDefaultScene(t){return this.setRef(\"defaultScene\",t)}getDefaultScene(){return this.getRef(\"defaultScene\")}listNodes(){return this.listRefs(\"nodes\")}listCameras(){return this.listRefs(\"cameras\")}listSkins(){return this.listRefs(\"skins\")}listMeshes(){return this.listRefs(\"meshes\")}listMaterials(){return this.listRefs(\"materials\")}listTextures(){return this.listRefs(\"textures\")}listAnimations(){return this.listRefs(\"animations\")}listAccessors(){return this.listRefs(\"accessors\")}listBuffers(){return this.listRefs(\"buffers\")}}class Tt{static fromGraph(t){return Tt.v.get(t)||null}constructor(){this.T=new a,this.S=new vt(this.T),this.M=B.DEFAULT_INSTANCE,Tt.v.set(this.T,this)}getRoot(){return this.S}getGraph(){return this.T}getLogger(){return this.M}setLogger(t){return this.M=t,this}clone(){return(new Tt).setLogger(this.M).merge(this)}merge(t){for(const e of t.getRoot().listExtensionsUsed()){const t=this.createExtension(e.constructor);e.isRequired()&&t.setRequired(!0)}const e=new Set,r=new Map;e.add(t.S),r.set(t.S,this.S);for(const s of t.T.listEdges())for(const t of[s.getParent(),s.getChild()]){if(e.has(t))continue;let s;s=t.propertyType===h.TEXTURE_INFO?t:new(0,t.constructor)(this.T),r.set(t,s),e.add(t)}const s=t=>{const e=r.get(t);if(!e)throw new Error(\"Could resolve property.\");return e};for(const t of e){const e=r.get(t);if(!e)throw new Error(\"Could resolve property.\");e.propertyType!==h.TEXTURE_INFO&&e.copy(t,s)}return this}async transform(...t){const e=t.map(t=>t.name);for(const r of t)await r(this,{stack:e});return this}createExtension(t){const e=t.EXTENSION_NAME;return this.getRoot().listExtensionsUsed().find(t=>t.extensionName===e)||new t(this)}createScene(t=\"\"){return new mt(this.T,t)}createNode(t=\"\"){return new lt(this.T,t)}createCamera(t=\"\"){return new st(this.T,t)}createSkin(t=\"\"){return new wt(this.T,t)}createMesh(t=\"\"){return new ft(this.T,t)}createPrimitive(){return new dt(this.T)}createPrimitiveTarget(t=\"\"){return new gt(this.T,t)}createMaterial(t=\"\"){return new ht(this.T,t)}createTexture(t=\"\"){return new yt(this.T,t)}createAnimation(t=\"\"){return new X(this.T,t)}createAnimationChannel(t=\"\"){return new tt(this.T,t)}createAnimationSampler(t=\"\"){return new et(this.T,t)}createAccessor(t=\"\",e=null){return e||(e=this.getRoot().listBuffers()[0]),new Q(this.T,t).setBuffer(e)}createBuffer(t=\"\"){return new rt(this.T,t)}}Tt.v=new WeakMap;class bt{constructor(t){this.extensionName=\"\",this.prereadTypes=[],this.prewriteTypes=[],this.readDependencies=[],this.writeDependencies=[],this.document=void 0,this.required=!1,this.properties=new Set,this.I=void 0,this.document=t,t.getRoot().p(this),this.I=t=>{const e=t,r=e.target;r instanceof nt&&r.extensionName===this.extensionName&&(\"node:create\"===e.type&&this.N(r),\"node:dispose\"===e.type&&this.O(r))};const e=t.getGraph();e.addEventListener(\"node:create\",this.I),e.addEventListener(\"node:dispose\",this.I)}dispose(){this.document.getRoot().m(this);const t=this.document.getGraph();t.removeEventListener(\"node:create\",this.I),t.removeEventListener(\"node:dispose\",this.I);for(const t of this.properties)t.dispose()}static register(){}isRequired(){return this.required}setRequired(t){return this.required=t,this}listProperties(){return Array.from(this.properties)}N(t){return this.properties.add(t),this}O(t){return this.properties.delete(t),this}install(t,e){return this}preread(t,e){return this}prewrite(t,e){return this}}bt.EXTENSION_NAME=void 0;class xt{constructor(t){this.jsonDoc=void 0,this.buffers=[],this.bufferViews=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.textureInfos=new Map,this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[],this.jsonDoc=t}setTextureInfo(t,e){this.textureInfos.set(t,e),void 0!==e.texCoord&&t.setTexCoord(e.texCoord),void 0!==e.extras&&t.setExtras(e.extras);const r=this.jsonDoc.json.textures[e.index];if(void 0===r.sampler)return;const s=this.jsonDoc.json.samplers[r.sampler];void 0!==s.magFilter&&t.setMagFilter(s.magFilter),void 0!==s.minFilter&&t.setMinFilter(s.minFilter),void 0!==s.wrapS&&t.setWrapS(s.wrapS),void 0!==s.wrapT&&t.setWrapT(s.wrapT)}}const At={logger:B.DEFAULT_INSTANCE,extensions:[],dependencies:{}};class Et{static read(t,e=At){const r=pt({},At,e),{json:s}=t,n=(new Tt).setLogger(r.logger);this.validate(t,r);const i=new xt(t),o=s.asset,a=n.getRoot().getAsset();o.copyright&&(a.copyright=o.copyright),o.extras&&(a.extras=o.extras),void 0!==s.extras&&n.getRoot().setExtras(pt({},s.extras));const u=s.extensionsUsed||[],f=s.extensionsRequired||[];for(const t of r.extensions)if(u.includes(t.EXTENSION_NAME)){const e=n.createExtension(t).setRequired(f.includes(t.EXTENSION_NAME));for(const t of e.readDependencies)e.install(t,r.dependencies[t])}const l=s.buffers||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.BUFFER)).forEach(t=>t.preread(i,h.BUFFER)),i.buffers=l.map(t=>{const e=n.createBuffer(t.name);return t.extras&&e.setExtras(t.extras),t.uri&&0!==t.uri.indexOf(\"__\")&&e.setURI(t.uri),e}),i.bufferViewBuffers=(s.bufferViews||[]).map((e,r)=>{if(!i.bufferViews[r]){const s=t.json.buffers[e.buffer];i.bufferViews[r]=E.toView(s.uri?t.resources[s.uri]:t.resources[c],e.byteOffset||0,e.byteLength)}return i.buffers[e.buffer]});const d=s.accessors||[];i.accessors=d.map(t=>{const e=n.createAccessor(t.name,i.bufferViewBuffers[t.bufferView]).setType(t.type);return t.extras&&e.setExtras(t.extras),void 0!==t.normalized&&e.setNormalized(t.normalized),void 0===t.bufferView||e.setArray(St(t,i)),e});const g=s.images||[],m=s.textures||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.TEXTURE)).forEach(t=>t.preread(i,h.TEXTURE)),i.textures=g.map(e=>{const r=n.createTexture(e.name);if(e.extras&&r.setExtras(e.extras),void 0!==e.bufferView){const n=s.bufferViews[e.bufferView],i=t.json.buffers[n.buffer],o=n.byteOffset||0,a=(i.uri?t.resources[i.uri]:t.resources[c]).slice(o,o+n.byteLength);r.setImage(a)}else void 0!==e.uri&&(r.setImage(t.resources[e.uri]),0!==e.uri.indexOf(\"__\")&&r.setURI(e.uri));if(void 0!==e.mimeType)r.setMimeType(e.mimeType);else if(e.uri){const t=N.extension(e.uri);r.setMimeType(I.extensionToMimeType(t))}return r}),i.materials=(s.materials||[]).map(t=>{const e=n.createMaterial(t.name);t.extras&&e.setExtras(t.extras),void 0!==t.alphaMode&&e.setAlphaMode(t.alphaMode),void 0!==t.alphaCutoff&&e.setAlphaCutoff(t.alphaCutoff),void 0!==t.doubleSided&&e.setDoubleSided(t.doubleSided);const r=t.pbrMetallicRoughness||{};if(void 0!==r.baseColorFactor&&e.setBaseColorFactor(r.baseColorFactor),void 0!==t.emissiveFactor&&e.setEmissiveFactor(t.emissiveFactor),void 0!==r.metallicFactor&&e.setMetallicFactor(r.metallicFactor),void 0!==r.roughnessFactor&&e.setRoughnessFactor(r.roughnessFactor),void 0!==r.baseColorTexture){const t=r.baseColorTexture;e.setBaseColorTexture(i.textures[m[t.index].source]),i.setTextureInfo(e.getBaseColorTextureInfo(),t)}if(void 0!==t.emissiveTexture){const r=t.emissiveTexture;e.setEmissiveTexture(i.textures[m[r.index].source]),i.setTextureInfo(e.getEmissiveTextureInfo(),r)}if(void 0!==t.normalTexture){const r=t.normalTexture;e.setNormalTexture(i.textures[m[r.index].source]),i.setTextureInfo(e.getNormalTextureInfo(),r),void 0!==t.normalTexture.scale&&e.setNormalScale(t.normalTexture.scale)}if(void 0!==t.occlusionTexture){const r=t.occlusionTexture;e.setOcclusionTexture(i.textures[m[r.index].source]),i.setTextureInfo(e.getOcclusionTextureInfo(),r),void 0!==t.occlusionTexture.strength&&e.setOcclusionStrength(t.occlusionTexture.strength)}if(void 0!==r.metallicRoughnessTexture){const t=r.metallicRoughnessTexture;e.setMetallicRoughnessTexture(i.textures[m[t.index].source]),i.setTextureInfo(e.getMetallicRoughnessTextureInfo(),t)}return e});const w=s.meshes||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.PRIMITIVE)).forEach(t=>t.preread(i,h.PRIMITIVE)),i.meshes=w.map(t=>{const e=n.createMesh(t.name);return t.extras&&e.setExtras(t.extras),void 0!==t.weights&&e.setWeights(t.weights),(t.primitives||[]).forEach(r=>{const s=n.createPrimitive();r.extras&&s.setExtras(r.extras),void 0!==r.material&&s.setMaterial(i.materials[r.material]),void 0!==r.mode&&s.setMode(r.mode);for(const[t,e]of Object.entries(r.attributes||{}))s.setAttribute(t,i.accessors[e]);void 0!==r.indices&&s.setIndices(i.accessors[r.indices]);const o=t.extras&&t.extras.targetNames||[];(r.targets||[]).forEach((t,e)=>{const r=o[e]||e.toString(),a=n.createPrimitiveTarget(r);for(const[e,r]of Object.entries(t))a.setAttribute(e,i.accessors[r]);s.addTarget(a)}),e.addPrimitive(s)}),e}),i.cameras=(s.cameras||[]).map(t=>{const e=n.createCamera(t.name).setType(t.type);if(t.extras&&e.setExtras(t.extras),t.type===st.Type.PERSPECTIVE){const r=t.perspective;e.setYFov(r.yfov),e.setZNear(r.znear),void 0!==r.zfar&&e.setZFar(r.zfar),void 0!==r.aspectRatio&&e.setAspectRatio(r.aspectRatio)}else{const r=t.orthographic;e.setZNear(r.znear).setZFar(r.zfar).setXMag(r.xmag).setYMag(r.ymag)}return e});const y=s.nodes||[];n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.NODE)).forEach(t=>t.preread(i,h.NODE)),i.nodes=y.map(t=>{const e=n.createNode(t.name);if(t.extras&&e.setExtras(t.extras),void 0!==t.translation&&e.setTranslation(t.translation),void 0!==t.rotation&&e.setRotation(t.rotation),void 0!==t.scale&&e.setScale(t.scale),void 0!==t.matrix){const r=[0,0,0],s=[0,0,0,1],n=[1,1,1];L.decompose(t.matrix,r,s,n),e.setTranslation(r),e.setRotation(s),e.setScale(n)}return void 0!==t.weights&&e.setWeights(t.weights),e}),i.skins=(s.skins||[]).map(t=>{const e=n.createSkin(t.name);t.extras&&e.setExtras(t.extras),void 0!==t.inverseBindMatrices&&e.setInverseBindMatrices(i.accessors[t.inverseBindMatrices]),void 0!==t.skeleton&&e.setSkeleton(i.nodes[t.skeleton]);for(const r of t.joints)e.addJoint(i.nodes[r]);return e}),y.map((t,e)=>{const r=i.nodes[e];(t.children||[]).forEach(t=>r.addChild(i.nodes[t])),void 0!==t.mesh&&r.setMesh(i.meshes[t.mesh]),void 0!==t.camera&&r.setCamera(i.cameras[t.camera]),void 0!==t.skin&&r.setSkin(i.skins[t.skin])}),i.animations=(s.animations||[]).map(t=>{const e=n.createAnimation(t.name);t.extras&&e.setExtras(t.extras);const r=(t.samplers||[]).map(t=>{const r=n.createAnimationSampler().setInput(i.accessors[t.input]).setOutput(i.accessors[t.output]).setInterpolation(t.interpolation||et.Interpolation.LINEAR);return t.extras&&r.setExtras(t.extras),e.addSampler(r),r});return(t.channels||[]).forEach(t=>{const s=n.createAnimationChannel().setSampler(r[t.sampler]).setTargetPath(t.target.path);void 0!==t.target.node&&s.setTargetNode(i.nodes[t.target.node]),t.extras&&s.setExtras(t.extras),e.addChannel(s)}),e});const v=s.scenes||[];return n.getRoot().listExtensionsUsed().filter(t=>t.prereadTypes.includes(h.SCENE)).forEach(t=>t.preread(i,h.SCENE)),i.scenes=v.map(t=>{const e=n.createScene(t.name);return t.extras&&e.setExtras(t.extras),(t.nodes||[]).map(t=>i.nodes[t]).forEach(t=>e.addChild(t)),e}),void 0!==s.scene&&n.getRoot().setDefaultScene(i.scenes[s.scene]),n.getRoot().listExtensionsUsed().forEach(t=>t.read(i)),d.forEach((t,e)=>{const r=i.accessors[e],s=!!t.sparse,n=!t.bufferView&&!r.getArray();(s||n)&&r.setSparse(!0).setArray(function(t,e){const r=p[t.componentType],s=Q.getElementSize(t.type);let n;n=void 0!==t.bufferView?St(t,e):new r(t.count*s);const i=t.sparse;if(!i)return n;const o=i.count,a=pt({},t,i.indices,{count:o,type:\"SCALAR\"}),u=pt({},t,i.values,{count:o}),c=St(a,e),h=St(u,e);for(let t=0;te.EXTENSION_NAME===t))throw new Error(`Missing required extension, \"${t}\".`);if(r.extensionsUsed)for(const t of r.extensionsUsed)e.extensions.find(e=>e.EXTENSION_NAME===t)||e.logger.warn(`Missing optional extension, \"${t}\".`)}}function St(t,e){const r=e.bufferViews[t.bufferView],s=e.jsonDoc.json.bufferViews[t.bufferView],n=p[t.componentType],i=Q.getElementSize(t.type),o=n.BYTES_PER_ELEMENT;if(void 0!==s.byteStride&&s.byteStride!==i*o)return function(t,e){const r=e.bufferViews[t.bufferView],s=e.jsonDoc.json.bufferViews[t.bufferView],n=p[t.componentType],i=Q.getElementSize(t.type),o=n.BYTES_PER_ELEMENT,a=t.byteOffset||0,u=new n(t.count*i),c=new DataView(r.buffer,r.byteOffset,r.byteLength),h=s.byteStride;for(let e=0;e1,()=>r.basename||\"buffer\"),this.imageURIGenerator=new Rt(i>1,e=>function(t,e){const r=t.getGraph().listParentEdges(e).find(e=>e.getParent()!==t.getRoot());return r?r.getName().replace(/texture$/i,\"\"):\"\"}(t,e)||r.basename||\"texture\"),this.logger=t.getLogger()}createTextureInfoDef(t,e){const r={magFilter:e.getMagFilter()||void 0,minFilter:e.getMinFilter()||void 0,wrapS:e.getWrapS(),wrapT:e.getWrapT()},s=JSON.stringify(r);this.samplerDefIndexMap.has(s)||(this.samplerDefIndexMap.set(s,this.jsonDoc.json.samplers.length),this.jsonDoc.json.samplers.push(r));const n={source:this.imageIndexMap.get(t),sampler:this.samplerDefIndexMap.get(s)},i=JSON.stringify(n);this.textureDefIndexMap.has(i)||(this.textureDefIndexMap.set(i,this.jsonDoc.json.textures.length),this.jsonDoc.json.textures.push(n));const o={index:this.textureDefIndexMap.get(i)};return 0!==e.getTexCoord()&&(o.texCoord=e.getTexCoord()),Object.keys(e.getExtras()).length>0&&(o.extras=e.getExtras()),this.textureInfoDefMap.set(e,o),o}createPropertyDef(t){const e={};return t.getName()&&(e.name=t.getName()),Object.keys(t.getExtras()).length>0&&(e.extras=t.getExtras()),e}createAccessorDef(t){const e=this.createPropertyDef(t);return e.type=t.getType(),e.componentType=t.getComponentType(),e.count=t.getCount(),this.C.getGraph().listParentEdges(t).some(t=>\"attributes\"===t.getName()&&\"POSITION\"===t.getAttributes().key||\"input\"===t.getName())&&(e.max=t.getMax([]).map(Math.fround),e.min=t.getMin([]).map(Math.fround)),t.getNormalized()&&(e.normalized=t.getNormalized()),e}createImageData(t,e,r){if(this.options.format===g.GLB)this.imageBufferViews.push(e),t.bufferView=this.jsonDoc.json.bufferViews.length,this.jsonDoc.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:e.byteLength});else{const s=I.mimeTypeToExtension(r.getMimeType());t.uri=this.imageURIGenerator.createURI(r,s),this.jsonDoc.resources[t.uri]=e}}getAccessorUsage(t){const e=this.F.get(t);if(e)return e;if(t.getSparse())return l.SPARSE;for(const e of this.C.getGraph().listParentEdges(t)){const{usage:t}=e.getAttributes();if(t)return t;e.getParent().propertyType!==h.ROOT&&this.logger.warn(`Missing attribute \".usage\" on edge, \"${e.getName()}\".`)}return l.OTHER}addAccessorToUsageGroup(t,e){const r=this.F.get(t);if(r&&r!==e)throw new Error(`Accessor with usage \"${r}\" cannot be reused as \"${e}\".`);return this.F.set(t,e),this}listAccessorUsageGroups(){const t={};for(const[e,r]of Array.from(this.F.entries()))t[r]=t[r]||[],t[r].push(e);return t}}It.BufferViewTarget=Mt,It.BufferViewUsage=l,It.USAGE_TO_TARGET={[l.ARRAY_BUFFER]:Mt.ARRAY_BUFFER,[l.ELEMENT_ARRAY_BUFFER]:Mt.ELEMENT_ARRAY_BUFFER};class Rt{constructor(t,e){this.multiple=void 0,this.basename=void 0,this.counter={},this.multiple=t,this.basename=e}createURI(t,e){if(t.getURI())return t.getURI();if(this.multiple){const r=this.basename(t);return this.counter[r]=this.counter[r]||1,`${r}_${this.counter[r]++}.${e}`}return`${this.basename(t)}.${e}`}}const{BufferViewUsage:Nt}=It,{UNSIGNED_INT:Ot,UNSIGNED_SHORT:Ct,UNSIGNED_BYTE:Ft}=Q.ComponentType;class Ut{static write(t,e){const r=t.getRoot(),s={asset:pt({generator:`glTF-Transform ${u}`},r.getAsset()),extras:pt({},r.getExtras())},n={json:s,resources:{}},i=new It(t,n,e),o=e.logger||B.DEFAULT_INSTANCE,a=new Set(e.extensions.map(t=>t.EXTENSION_NAME)),l=t.getRoot().listExtensionsUsed().filter(t=>a.has(t.extensionName)),d=t.getRoot().listExtensionsRequired().filter(t=>a.has(t.extensionName));l.lengthe.getCount()/3){const t=(100*r.length/e.getCount()).toFixed(1);o.warn(`Sparse accessor with many non-zero elements (${t}%) may increase file size.`)}const d=p[e.getComponentType()];l.indices=r,l.values=new d(n)}if(!Number.isFinite(c))return{buffers:n,byteLength:a};const h=c<255?Uint8Array:c<65535?Uint16Array:Uint32Array,f=c<255?Ft:c<65535?Ct:Ot,l={buffer:e,byteOffset:r+a,byteLength:0};for(const e of t){const t=u.get(e);if(0===t.count)continue;t.indicesByteOffset=l.byteLength;const r=E.pad(E.toView(new h(t.indices)));n.push(r),a+=r.byteLength,l.byteLength+=r.byteLength}s.bufferViews.push(l);const d=s.bufferViews.length-1,g={buffer:e,byteOffset:r+a,byteLength:0};for(const e of t){const t=u.get(e);if(0===t.count)continue;t.valuesByteOffset=g.byteLength;const r=E.pad(E.toView(t.values));n.push(r),a+=r.byteLength,g.byteLength+=r.byteLength}s.bufferViews.push(g);const m=s.bufferViews.length-1;for(const e of t){const t=u.get(e);0!==t.count&&(t.accessorDef.sparse={count:t.count,indices:{bufferView:d,byteOffset:t.indicesByteOffset,componentType:f},values:{bufferView:m,byteOffset:t.valuesByteOffset}})}return{buffers:n,byteLength:a}}const v=new Map;for(const e of t.getGraph().listEdges()){if(e.getParent()===r)continue;const t=e.getChild();if(t instanceof Q){const r=v.get(t)||[];r.push(e),v.set(t,r)}}if(s.accessors=[],s.bufferViews=[],s.samplers=[],s.textures=[],s.images=r.listTextures().map((t,e)=>{const r=i.createPropertyDef(t);t.getMimeType()&&(r.mimeType=t.getMimeType());const s=t.getImage();return s&&i.createImageData(r,s,t),i.imageIndexMap.set(t,e),r}),l.filter(t=>t.prewriteTypes.includes(h.ACCESSOR)).forEach(t=>t.prewrite(i,h.ACCESSOR)),r.listAccessors().forEach(t=>{const e=i.accessorUsageGroupedByParent,r=i.accessorParents;if(i.accessorIndexMap.has(t))return;const s=v.get(t)||[],n=i.getAccessorUsage(t);if(i.addAccessorToUsageGroup(t,n),e.has(n)){const e=s[0].getParent(),n=r.get(e)||new Set;n.add(t),r.set(e,n)}}),l.filter(t=>t.prewriteTypes.includes(h.BUFFER)).forEach(t=>t.prewrite(i,h.BUFFER)),(r.listAccessors().length>0||r.listTextures().length>0||i.otherBufferViews.size>0)&&0===r.listBuffers().length)throw new Error(\"Buffer required for Document resources, but none was found.\");s.buffers=[],r.listBuffers().forEach((t,r)=>{const o=i.createPropertyDef(t),a=i.accessorUsageGroupedByParent,u=i.accessorParents,h=t.listParents().filter(t=>t instanceof Q),l=new Set(h),d=[],p=s.buffers.length;let v=0;const T=i.listAccessorUsageGroups();for(const t in T)if(a.has(t))for(const r of Array.from(u.values())){const s=Array.from(r).filter(t=>l.has(t)).filter(e=>i.getAccessorUsage(e)===t);if(s.length)if(t!==Nt.ARRAY_BUFFER||e.vertexLayout===f.INTERLEAVED){const e=t===Nt.ARRAY_BUFFER?w(s,p,v):m(s,p,v);v+=e.byteLength,d.push(...e.buffers)}else for(const t of s){const e=w([t],p,v);v+=e.byteLength,d.push(...e.buffers)}}else{const e=T[t].filter(t=>l.has(t));if(!e.length)continue;const r=t===Nt.ELEMENT_ARRAY_BUFFER?It.BufferViewTarget.ELEMENT_ARRAY_BUFFER:void 0,s=t===Nt.SPARSE?y(e,p,v):m(e,p,v,r);v+=s.byteLength,d.push(...s.buffers)}if(i.imageBufferViews.length&&0===r)for(let t=0;t!t.getBuffer())&&o.warn(\"Skipped writing one or more Accessors: no Buffer assigned.\"),s.materials=r.listMaterials().map((t,e)=>{const r=i.createPropertyDef(t);if(t.getAlphaMode()!==ht.AlphaMode.OPAQUE&&(r.alphaMode=t.getAlphaMode()),t.getAlphaMode()===ht.AlphaMode.MASK&&(r.alphaCutoff=t.getAlphaCutoff()),t.getDoubleSided()&&(r.doubleSided=!0),r.pbrMetallicRoughness={},L.eq(t.getBaseColorFactor(),[1,1,1,1])||(r.pbrMetallicRoughness.baseColorFactor=t.getBaseColorFactor()),L.eq(t.getEmissiveFactor(),[0,0,0])||(r.emissiveFactor=t.getEmissiveFactor()),1!==t.getRoughnessFactor()&&(r.pbrMetallicRoughness.roughnessFactor=t.getRoughnessFactor()),1!==t.getMetallicFactor()&&(r.pbrMetallicRoughness.metallicFactor=t.getMetallicFactor()),t.getBaseColorTexture()){const e=t.getBaseColorTexture(),s=t.getBaseColorTextureInfo();r.pbrMetallicRoughness.baseColorTexture=i.createTextureInfoDef(e,s)}if(t.getEmissiveTexture()){const e=t.getEmissiveTexture(),s=t.getEmissiveTextureInfo();r.emissiveTexture=i.createTextureInfoDef(e,s)}if(t.getNormalTexture()){const e=t.getNormalTexture(),s=t.getNormalTextureInfo(),n=i.createTextureInfoDef(e,s);1!==t.getNormalScale()&&(n.scale=t.getNormalScale()),r.normalTexture=n}if(t.getOcclusionTexture()){const e=t.getOcclusionTexture(),s=t.getOcclusionTextureInfo(),n=i.createTextureInfoDef(e,s);1!==t.getOcclusionStrength()&&(n.strength=t.getOcclusionStrength()),r.occlusionTexture=n}if(t.getMetallicRoughnessTexture()){const e=t.getMetallicRoughnessTexture(),s=t.getMetallicRoughnessTextureInfo();r.pbrMetallicRoughness.metallicRoughnessTexture=i.createTextureInfoDef(e,s)}return i.materialIndexMap.set(t,e),r}),s.meshes=r.listMeshes().map((t,e)=>{const r=i.createPropertyDef(t);let s=null;return r.primitives=t.listPrimitives().map(t=>{const e={attributes:{}};e.mode=t.getMode();const r=t.getMaterial();r&&(e.material=i.materialIndexMap.get(r)),Object.keys(t.getExtras()).length&&(e.extras=t.getExtras());const n=t.getIndices();n&&(e.indices=i.accessorIndexMap.get(n));for(const r of t.listSemantics())e.attributes[r]=i.accessorIndexMap.get(t.getAttribute(r));for(const r of t.listTargets()){const t={};for(const e of r.listSemantics())t[e]=i.accessorIndexMap.get(r.getAttribute(e));e.targets=e.targets||[],e.targets.push(t)}return t.listTargets().length&&!s&&(s=t.listTargets().map(t=>t.getName())),e}),t.getWeights().length&&(r.weights=t.getWeights()),s&&(r.extras=r.extras||{},r.extras.targetNames=s),i.meshIndexMap.set(t,e),r}),s.cameras=r.listCameras().map((t,e)=>{const r=i.createPropertyDef(t);if(r.type=t.getType(),r.type===st.Type.PERSPECTIVE){r.perspective={znear:t.getZNear(),zfar:t.getZFar(),yfov:t.getYFov()};const e=t.getAspectRatio();null!==e&&(r.perspective.aspectRatio=e)}else r.orthographic={znear:t.getZNear(),zfar:t.getZFar(),xmag:t.getXMag(),ymag:t.getYMag()};return i.cameraIndexMap.set(t,e),r}),s.nodes=r.listNodes().map((t,e)=>{const r=i.createPropertyDef(t);return L.eq(t.getTranslation(),[0,0,0])||(r.translation=t.getTranslation()),L.eq(t.getRotation(),[0,0,0,1])||(r.rotation=t.getRotation()),L.eq(t.getScale(),[1,1,1])||(r.scale=t.getScale()),t.getWeights().length&&(r.weights=t.getWeights()),i.nodeIndexMap.set(t,e),r}),s.skins=r.listSkins().map((t,e)=>{const r=i.createPropertyDef(t),s=t.getInverseBindMatrices();s&&(r.inverseBindMatrices=i.accessorIndexMap.get(s));const n=t.getSkeleton();return n&&(r.skeleton=i.nodeIndexMap.get(n)),r.joints=t.listJoints().map(t=>i.nodeIndexMap.get(t)),i.skinIndexMap.set(t,e),r}),r.listNodes().forEach((t,e)=>{const r=s.nodes[e],n=t.getMesh();n&&(r.mesh=i.meshIndexMap.get(n));const o=t.getCamera();o&&(r.camera=i.cameraIndexMap.get(o));const a=t.getSkin();a&&(r.skin=i.skinIndexMap.get(a)),t.listChildren().length>0&&(r.children=t.listChildren().map(t=>i.nodeIndexMap.get(t)))}),s.animations=r.listAnimations().map((t,e)=>{const r=i.createPropertyDef(t),s=new Map;return r.samplers=t.listSamplers().map((t,e)=>{const r=i.createPropertyDef(t);return r.input=i.accessorIndexMap.get(t.getInput()),r.output=i.accessorIndexMap.get(t.getOutput()),r.interpolation=t.getInterpolation(),s.set(t,e),r}),r.channels=t.listChannels().map(t=>{const e=i.createPropertyDef(t);return e.sampler=s.get(t.getSampler()),e.target={node:i.nodeIndexMap.get(t.getTargetNode()),path:t.getTargetPath()},e}),i.animationIndexMap.set(t,e),r}),s.scenes=r.listScenes().map((t,e)=>{const r=i.createPropertyDef(t);return r.nodes=t.listChildren().map(t=>i.nodeIndexMap.get(t)),i.sceneIndexMap.set(t,e),r});const T=r.getDefaultScene();return T&&(s.scene=r.listScenes().indexOf(T)),s.extensionsUsed=l.map(t=>t.extensionName),s.extensionsRequired=d.map(t=>t.extensionName),l.forEach(t=>t.write(i)),function(t){const e=[];for(const r in t){const s=t[r];(Array.isArray(s)&&0===s.length||null===s||\"\"===s||s&&\"object\"==typeof s&&0===Object.keys(s).length)&&e.push(r)}for(const r of e)delete t[r]}(s),n}}var Bt;!function(t){t[t.JSON=1313821514]=\"JSON\",t[t.BIN=5130562]=\"BIN\"}(Bt||(Bt={}));class Pt{constructor(){this.M=B.DEFAULT_INSTANCE,this.l=new Set,this.U={},this.P=f.INTERLEAVED,this.lastReadBytes=0,this.lastWriteBytes=0}setLogger(t){return this.M=t,this}registerExtensions(t){for(const e of t)this.l.add(e),e.register();return this}registerDependencies(t){return Object.assign(this.U,t),this}setVertexLayout(t){return this.P=t,this}async read(t){return await this.readJSON(await this.readAsJSON(t))}async readAsJSON(t){const e=await this.readURI(t,\"view\");this.lastReadBytes=e.byteLength;const r=Lt(e)?this.L(e):{json:JSON.parse(E.decodeText(e)),resources:{}};return await this.j(r,this.dirname(t)),this.D(r),r}async readJSON(t){return t=this._(t),this.D(t),Et.read(t,{extensions:Array.from(this.l),dependencies:this.U,logger:this.M})}async binaryToJSON(t){const e=this.L(E.assertView(t));this.D(e);const r=e.json;if(r.buffers&&r.buffers.some(t=>function(t,e){return void 0!==e.uri&&!(e.uri in t.resources)}(e,t)))throw new Error(\"Cannot resolve external buffers with binaryToJSON().\");if(r.images&&r.images.some(t=>function(t,e){return void 0!==e.uri&&!(e.uri in t.resources)&&void 0===e.bufferView}(e,t)))throw new Error(\"Cannot resolve external images with binaryToJSON().\");return e}async readBinary(t){return this.readJSON(await this.binaryToJSON(E.assertView(t)))}async writeJSON(t,e={}){if(e.format===g.GLB&&t.getRoot().listBuffers().length>1)throw new Error(\"GLB must have 0–1 buffers.\");return Ut.write(t,{format:e.format||g.GLTF,basename:e.basename||\"\",logger:this.M,vertexLayout:this.P,dependencies:pt({},this.U),extensions:Array.from(this.l)})}async writeBinary(t){const{json:e,resources:r}=await this.writeJSON(t,{format:g.GLB}),s=new Uint32Array([1179937895,2,12]),n=JSON.stringify(e),i=E.pad(E.encodeText(n),32),o=E.toView(new Uint32Array([i.byteLength,1313821514])),a=E.concat([o,i]);s[s.length-1]+=a.byteLength;const u=Object.values(r)[0];if(!u||!u.byteLength)return E.concat([E.toView(s),a]);const c=E.pad(u,0),h=E.toView(new Uint32Array([c.byteLength,5130562])),f=E.concat([h,c]);return s[s.length-1]+=f.byteLength,E.concat([E.toView(s),a,f])}async j(t,e){var r=this;const s=[...t.json.images||[],...t.json.buffers||[]].map(async function(s){const n=s.uri;if(!n||n.match(/data:/))return Promise.resolve();t.resources[n]=await r.readURI(r.resolve(e,n),\"view\"),r.lastReadBytes+=t.resources[n].byteLength});await Promise.all(s)}D(t){function e(e){if(e.uri)if(e.uri in t.resources)E.assertView(t.resources[e.uri]);else if(e.uri.match(/data:/)){const r=`__${V()}.${N.extension(e.uri)}`;t.resources[r]=E.createBufferFromDataURI(e.uri),e.uri=r}}(t.json.images||[]).forEach(t=>{if(void 0===t.bufferView&&void 0===t.uri)throw new Error(\"Missing resource URI or buffer view.\");e(t)}),(t.json.buffers||[]).forEach(e)}_(t){const{images:e,buffers:r}=t.json;return t={json:pt({},t.json),resources:pt({},t.resources)},e&&(t.json.images=e.map(t=>pt({},t))),r&&(t.json.buffers=r.map(t=>pt({},t))),t}L(t){if(!Lt(t))throw new Error(\"Invalid glTF 2.0 binary.\");const e=new Uint32Array(t.buffer,t.byteOffset+12,2);if(e[1]!==Bt.JSON)throw new Error(\"Missing required GLB JSON chunk.\");const r=e[0],s=E.decodeText(E.toView(t,20,r)),n=JSON.parse(s),i=20+r;if(t.byteLength<=i)return{json:n,resources:{}};const o=new Uint32Array(t.buffer,t.byteOffset+i,2);if(o[1]!==Bt.BIN)throw new Error(\"Expected GLB BIN in second chunk.\");const a=E.toView(t,i+8,o[0]);return{json:n,resources:{[c]:a}}}}function Lt(t){if(t.byteLength<3*Uint32Array.BYTES_PER_ELEMENT)return!1;const e=new Uint32Array(t.buffer,t.byteOffset,3);return 1179937895===e[0]&&2===e[1]}class jt extends Pt{constructor(t=null,e=q.DEFAULT_INIT){super(),this.k=void 0,this.J=void 0,this.$=void 0,this.V=!1,this.k=t,this.J=e,this.$=this.init()}async init(){return this.$?this.$:Promise.all([import(\"fs\"),import(\"path\")]).then(([t,e])=>{this.W=t.promises,this.q=e})}setAllowHTTP(t){if(t&&!this.k)throw new Error(\"NodeIO requires a Fetch API implementation for HTTP requests.\");return this.V=t,this}async readURI(t,e){if(await this.init(),q.isAbsoluteURL(t)){if(!this.V||!this.k)throw new Error(\"Network request blocked. Allow HTTP requests explicitly, if needed.\");const r=await this.k(t,this.J);switch(e){case\"view\":return new Uint8Array(await r.arrayBuffer());case\"text\":return r.text()}}else switch(e){case\"view\":return this.W.readFile(t);case\"text\":return this.W.readFile(t,\"utf8\")}}resolve(t,e){return q.isAbsoluteURL(t)||q.isAbsoluteURL(e)?q.resolve(t,e):this.q.resolve(t,decodeURIComponent(e))}dirname(t){return q.isAbsoluteURL(t)?q.dirname(t):this.q.dirname(t)}async write(t,e){await this.init();const r=!!t.match(/\\.glb$/);await(r?this.H(t,e):this.Y(t,e))}async Y(t,e){var r=this;this.lastWriteBytes=0;const{json:s,resources:n}=await this.writeJSON(e,{format:g.GLTF,basename:N.basename(t)}),{W:i,q:o}=this,a=o.dirname(t),u=JSON.stringify(s,null,2);this.lastWriteBytes+=u.length,await i.writeFile(t,u);const c=Object.keys(n).map(async function(t){if(q.isAbsoluteURL(t)){if(\"bin\"===q.extension(t))throw new Error(`Cannot write buffer to path \"${t}\".`);return}const e=Buffer.from(n[t]),s=o.join(a,decodeURIComponent(t));await i.mkdir(o.dirname(s),{recursive:!0}),await i.writeFile(s,e),r.lastWriteBytes+=e.byteLength});await Promise.all(c)}async H(t,e){const r=Buffer.from(await this.writeBinary(e));await this.W.writeFile(t,r),this.lastWriteBytes=r.byteLength}}class Dt extends Pt{constructor(t){super(),this.q=void 0,this.q=t}async readURI(t,e){switch(e){case\"view\":return Deno.readFile(t);case\"text\":return Deno.readTextFile(t)}}resolve(t,e){return this.q.resolve(t,decodeURIComponent(e))}dirname(t){return this.q.dirname(t)}}class _t extends Pt{constructor(t=q.DEFAULT_INIT){super(),this.J=void 0,this.J=t}async readURI(t,e){const r=await fetch(t,this.J);switch(e){case\"view\":return new Uint8Array(await r.arrayBuffer());case\"text\":return r.text()}}resolve(t,e){return q.resolve(t,e)}dirname(t){return q.dirname(t)}}export{Q as Accessor,X as Animation,tt as AnimationChannel,et as AnimationSampler,rt as Buffer,E as BufferUtils,H as COPY_IDENTITY,st as Camera,S as ColorUtils,p as ComponentTypeToTypedArray,Dt as DenoIO,Tt as Document,K as ExtensibleProperty,bt as Extension,nt as ExtensionProperty,N as FileUtils,g as Format,c as GLB_BUFFER,q as HTTPUtils,I as ImageUtils,B as Logger,ht as Material,L as MathUtils,ft as Mesh,lt as Node,jt as NodeIO,Pt as PlatformIO,dt as Primitive,gt as PrimitiveTarget,Z as Property,h as PropertyType,xt as ReaderContext,vt as Root,mt as Scene,wt as Skin,yt as Texture,d as TextureChannel,it as TextureInfo,u as VERSION,U as Verbosity,f as VertexLayout,_t as WebIO,It as WriterContext,b as bounds,T as getBounds,V as uuid};\n//# sourceMappingURL=core.modern.js.map\n","///////////////////////////////////////////////////\n// KTX2 Header.\n///////////////////////////////////////////////////\nconst KHR_SUPERCOMPRESSION_NONE = 0;\nconst KHR_SUPERCOMPRESSION_BASISLZ = 1;\nconst KHR_SUPERCOMPRESSION_ZSTD = 2;\nconst KHR_SUPERCOMPRESSION_ZLIB = 3; ///////////////////////////////////////////////////\n// Data Format Descriptor (DFD).\n///////////////////////////////////////////////////\n\nconst KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT = 0;\nconst KHR_DF_VENDORID_KHRONOS = 0;\nconst KHR_DF_VERSION = 2;\nconst KHR_DF_MODEL_UNSPECIFIED = 0;\nconst KHR_DF_MODEL_RGBSDA = 1; // ...\n\nconst KHR_DF_MODEL_ETC1 = 160;\nconst KHR_DF_MODEL_ETC2 = 161;\nconst KHR_DF_MODEL_ASTC = 162;\nconst KHR_DF_MODEL_ETC1S = 163;\nconst KHR_DF_MODEL_UASTC = 166;\nconst KHR_DF_FLAG_ALPHA_STRAIGHT = 0;\nconst KHR_DF_FLAG_ALPHA_PREMULTIPLIED = 1;\nconst KHR_DF_TRANSFER_UNSPECIFIED = 0;\nconst KHR_DF_TRANSFER_LINEAR = 1;\nconst KHR_DF_TRANSFER_SRGB = 2;\nconst KHR_DF_TRANSFER_ITU = 3;\nconst KHR_DF_TRANSFER_NTSC = 4;\nconst KHR_DF_TRANSFER_SLOG = 5;\nconst KHR_DF_TRANSFER_SLOG2 = 6;\nconst KHR_DF_TRANSFER_BT1886 = 7;\nconst KHR_DF_TRANSFER_HLG_OETF = 8;\nconst KHR_DF_TRANSFER_HLG_EOTF = 9;\nconst KHR_DF_TRANSFER_PQ_EOTF = 10;\nconst KHR_DF_TRANSFER_PQ_OETF = 11;\nconst KHR_DF_TRANSFER_DCIP3 = 12;\nconst KHR_DF_TRANSFER_PAL_OETF = 13;\nconst KHR_DF_TRANSFER_PAL625_EOTF = 14;\nconst KHR_DF_TRANSFER_ST240 = 15;\nconst KHR_DF_TRANSFER_ACESCC = 16;\nconst KHR_DF_TRANSFER_ACESCCT = 17;\nconst KHR_DF_TRANSFER_ADOBERGB = 18;\nconst KHR_DF_PRIMARIES_UNSPECIFIED = 0;\nconst KHR_DF_PRIMARIES_BT709 = 1;\nconst KHR_DF_PRIMARIES_BT601_EBU = 2;\nconst KHR_DF_PRIMARIES_BT601_SMPTE = 3;\nconst KHR_DF_PRIMARIES_BT2020 = 4;\nconst KHR_DF_PRIMARIES_CIEXYZ = 5;\nconst KHR_DF_PRIMARIES_ACES = 6;\nconst KHR_DF_PRIMARIES_ACESCC = 7;\nconst KHR_DF_PRIMARIES_NTSC1953 = 8;\nconst KHR_DF_PRIMARIES_PAL525 = 9;\nconst KHR_DF_PRIMARIES_DISPLAYP3 = 10;\nconst KHR_DF_PRIMARIES_ADOBERGB = 11;\nconst KHR_DF_CHANNEL_RGBSDA_RED = 0;\nconst KHR_DF_CHANNEL_RGBSDA_GREEN = 1;\nconst KHR_DF_CHANNEL_RGBSDA_BLUE = 2;\nconst KHR_DF_CHANNEL_RGBSDA_STENCIL = 13;\nconst KHR_DF_CHANNEL_RGBSDA_DEPTH = 14;\nconst KHR_DF_CHANNEL_RGBSDA_ALPHA = 15;\nconst KHR_DF_SAMPLE_DATATYPE_FLOAT = 0x80;\nconst KHR_DF_SAMPLE_DATATYPE_SIGNED = 0x40;\nconst KHR_DF_SAMPLE_DATATYPE_EXPONENT = 0x20;\nconst KHR_DF_SAMPLE_DATATYPE_LINEAR = 0x10; ///////////////////////////////////////////////////\n// VK FORMAT.\n///////////////////////////////////////////////////\n\nconst VK_FORMAT_UNDEFINED = 0;\nconst VK_FORMAT_R4G4_UNORM_PACK8 = 1;\nconst VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2;\nconst VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3;\nconst VK_FORMAT_R5G6B5_UNORM_PACK16 = 4;\nconst VK_FORMAT_B5G6R5_UNORM_PACK16 = 5;\nconst VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6;\nconst VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7;\nconst VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8;\nconst VK_FORMAT_R8_UNORM = 9;\nconst VK_FORMAT_R8_SNORM = 10;\nconst VK_FORMAT_R8_UINT = 13;\nconst VK_FORMAT_R8_SINT = 14;\nconst VK_FORMAT_R8_SRGB = 15;\nconst VK_FORMAT_R8G8_UNORM = 16;\nconst VK_FORMAT_R8G8_SNORM = 17;\nconst VK_FORMAT_R8G8_UINT = 20;\nconst VK_FORMAT_R8G8_SINT = 21;\nconst VK_FORMAT_R8G8_SRGB = 22;\nconst VK_FORMAT_R8G8B8_UNORM = 23;\nconst VK_FORMAT_R8G8B8_SNORM = 24;\nconst VK_FORMAT_R8G8B8_UINT = 27;\nconst VK_FORMAT_R8G8B8_SINT = 28;\nconst VK_FORMAT_R8G8B8_SRGB = 29;\nconst VK_FORMAT_B8G8R8_UNORM = 30;\nconst VK_FORMAT_B8G8R8_SNORM = 31;\nconst VK_FORMAT_B8G8R8_UINT = 34;\nconst VK_FORMAT_B8G8R8_SINT = 35;\nconst VK_FORMAT_B8G8R8_SRGB = 36;\nconst VK_FORMAT_R8G8B8A8_UNORM = 37;\nconst VK_FORMAT_R8G8B8A8_SNORM = 38;\nconst VK_FORMAT_R8G8B8A8_UINT = 41;\nconst VK_FORMAT_R8G8B8A8_SINT = 42;\nconst VK_FORMAT_R8G8B8A8_SRGB = 43;\nconst VK_FORMAT_B8G8R8A8_UNORM = 44;\nconst VK_FORMAT_B8G8R8A8_SNORM = 45;\nconst VK_FORMAT_B8G8R8A8_UINT = 48;\nconst VK_FORMAT_B8G8R8A8_SINT = 49;\nconst VK_FORMAT_B8G8R8A8_SRGB = 50;\nconst VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58;\nconst VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59;\nconst VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62;\nconst VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63;\nconst VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64;\nconst VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65;\nconst VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68;\nconst VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69;\nconst VK_FORMAT_R16_UNORM = 70;\nconst VK_FORMAT_R16_SNORM = 71;\nconst VK_FORMAT_R16_UINT = 74;\nconst VK_FORMAT_R16_SINT = 75;\nconst VK_FORMAT_R16_SFLOAT = 76;\nconst VK_FORMAT_R16G16_UNORM = 77;\nconst VK_FORMAT_R16G16_SNORM = 78;\nconst VK_FORMAT_R16G16_UINT = 81;\nconst VK_FORMAT_R16G16_SINT = 82;\nconst VK_FORMAT_R16G16_SFLOAT = 83;\nconst VK_FORMAT_R16G16B16_UNORM = 84;\nconst VK_FORMAT_R16G16B16_SNORM = 85;\nconst VK_FORMAT_R16G16B16_UINT = 88;\nconst VK_FORMAT_R16G16B16_SINT = 89;\nconst VK_FORMAT_R16G16B16_SFLOAT = 90;\nconst VK_FORMAT_R16G16B16A16_UNORM = 91;\nconst VK_FORMAT_R16G16B16A16_SNORM = 92;\nconst VK_FORMAT_R16G16B16A16_UINT = 95;\nconst VK_FORMAT_R16G16B16A16_SINT = 96;\nconst VK_FORMAT_R16G16B16A16_SFLOAT = 97;\nconst VK_FORMAT_R32_UINT = 98;\nconst VK_FORMAT_R32_SINT = 99;\nconst VK_FORMAT_R32_SFLOAT = 100;\nconst VK_FORMAT_R32G32_UINT = 101;\nconst VK_FORMAT_R32G32_SINT = 102;\nconst VK_FORMAT_R32G32_SFLOAT = 103;\nconst VK_FORMAT_R32G32B32_UINT = 104;\nconst VK_FORMAT_R32G32B32_SINT = 105;\nconst VK_FORMAT_R32G32B32_SFLOAT = 106;\nconst VK_FORMAT_R32G32B32A32_UINT = 107;\nconst VK_FORMAT_R32G32B32A32_SINT = 108;\nconst VK_FORMAT_R32G32B32A32_SFLOAT = 109;\nconst VK_FORMAT_R64_UINT = 110;\nconst VK_FORMAT_R64_SINT = 111;\nconst VK_FORMAT_R64_SFLOAT = 112;\nconst VK_FORMAT_R64G64_UINT = 113;\nconst VK_FORMAT_R64G64_SINT = 114;\nconst VK_FORMAT_R64G64_SFLOAT = 115;\nconst VK_FORMAT_R64G64B64_UINT = 116;\nconst VK_FORMAT_R64G64B64_SINT = 117;\nconst VK_FORMAT_R64G64B64_SFLOAT = 118;\nconst VK_FORMAT_R64G64B64A64_UINT = 119;\nconst VK_FORMAT_R64G64B64A64_SINT = 120;\nconst VK_FORMAT_R64G64B64A64_SFLOAT = 121;\nconst VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122;\nconst VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123;\nconst VK_FORMAT_D16_UNORM = 124;\nconst VK_FORMAT_X8_D24_UNORM_PACK32 = 125;\nconst VK_FORMAT_D32_SFLOAT = 126;\nconst VK_FORMAT_S8_UINT = 127;\nconst VK_FORMAT_D16_UNORM_S8_UINT = 128;\nconst VK_FORMAT_D24_UNORM_S8_UINT = 129;\nconst VK_FORMAT_D32_SFLOAT_S8_UINT = 130;\nconst VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131;\nconst VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132;\nconst VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133;\nconst VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134;\nconst VK_FORMAT_BC2_UNORM_BLOCK = 135;\nconst VK_FORMAT_BC2_SRGB_BLOCK = 136;\nconst VK_FORMAT_BC3_UNORM_BLOCK = 137;\nconst VK_FORMAT_BC3_SRGB_BLOCK = 138;\nconst VK_FORMAT_BC4_UNORM_BLOCK = 139;\nconst VK_FORMAT_BC4_SNORM_BLOCK = 140;\nconst VK_FORMAT_BC5_UNORM_BLOCK = 141;\nconst VK_FORMAT_BC5_SNORM_BLOCK = 142;\nconst VK_FORMAT_BC6H_UFLOAT_BLOCK = 143;\nconst VK_FORMAT_BC6H_SFLOAT_BLOCK = 144;\nconst VK_FORMAT_BC7_UNORM_BLOCK = 145;\nconst VK_FORMAT_BC7_SRGB_BLOCK = 146;\nconst VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147;\nconst VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148;\nconst VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149;\nconst VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150;\nconst VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151;\nconst VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152;\nconst VK_FORMAT_EAC_R11_UNORM_BLOCK = 153;\nconst VK_FORMAT_EAC_R11_SNORM_BLOCK = 154;\nconst VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155;\nconst VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156;\nconst VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157;\nconst VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158;\nconst VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159;\nconst VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160;\nconst VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161;\nconst VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162;\nconst VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163;\nconst VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164;\nconst VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165;\nconst VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166;\nconst VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167;\nconst VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168;\nconst VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169;\nconst VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170;\nconst VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171;\nconst VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172;\nconst VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173;\nconst VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174;\nconst VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175;\nconst VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176;\nconst VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177;\nconst VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178;\nconst VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179;\nconst VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180;\nconst VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181;\nconst VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182;\nconst VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183;\nconst VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184;\nconst VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007;\nconst VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008;\nconst VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009;\nconst VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010;\nconst VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011;\nconst VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017;\nconst VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018;\nconst VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019;\nconst VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020;\nconst VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021;\nconst VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000;\nconst VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001;\nconst VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002;\nconst VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003;\nconst VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004;\nconst VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005;\nconst VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006;\nconst VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007;\nconst VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000;\nconst VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001;\nconst VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002;\nconst VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003;\nconst VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004;\nconst VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005;\nconst VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006;\nconst VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007;\nconst VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008;\nconst VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009;\nconst VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010;\nconst VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011;\nconst VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012;\nconst VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013;\nconst VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000;\nconst VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001;\n\n/**\r\n * Represents an unpacked KTX 2.0 texture container. Data for individual mip levels are stored in\r\n * the `.levels` array, typically compressed in Basis Universal formats. Additional properties\r\n * provide metadata required to process, transcode, and upload these textures.\r\n */\n\nclass KTX2Container {\n constructor() {\n this.vkFormat = VK_FORMAT_UNDEFINED;\n this.typeSize = 1;\n this.pixelWidth = 0;\n this.pixelHeight = 0;\n this.pixelDepth = 0;\n this.layerCount = 0;\n this.faceCount = 1;\n this.supercompressionScheme = KHR_SUPERCOMPRESSION_NONE;\n this.levels = [];\n this.dataFormatDescriptor = [{\n vendorId: KHR_DF_VENDORID_KHRONOS,\n descriptorType: KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT,\n descriptorBlockSize: 0,\n versionNumber: KHR_DF_VERSION,\n colorModel: KHR_DF_MODEL_UNSPECIFIED,\n colorPrimaries: KHR_DF_PRIMARIES_BT709,\n transferFunction: KHR_DF_TRANSFER_SRGB,\n flags: KHR_DF_FLAG_ALPHA_STRAIGHT,\n texelBlockDimension: [0, 0, 0, 0],\n bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0],\n samples: []\n }];\n this.keyValue = {};\n this.globalData = null;\n }\n\n}\n\nclass BufferReader {\n constructor(data, byteOffset, byteLength, littleEndian) {\n this._dataView = void 0;\n this._littleEndian = void 0;\n this._offset = void 0;\n this._dataView = new DataView(data.buffer, data.byteOffset + byteOffset, byteLength);\n this._littleEndian = littleEndian;\n this._offset = 0;\n }\n\n _nextUint8() {\n const value = this._dataView.getUint8(this._offset);\n\n this._offset += 1;\n return value;\n }\n\n _nextUint16() {\n const value = this._dataView.getUint16(this._offset, this._littleEndian);\n\n this._offset += 2;\n return value;\n }\n\n _nextUint32() {\n const value = this._dataView.getUint32(this._offset, this._littleEndian);\n\n this._offset += 4;\n return value;\n }\n\n _nextUint64() {\n const left = this._dataView.getUint32(this._offset, this._littleEndian);\n\n const right = this._dataView.getUint32(this._offset + 4, this._littleEndian); // TODO(cleanup): Just test this...\n // const value = this._littleEndian ? left + (2 ** 32 * right) : (2 ** 32 * left) + right;\n\n\n const value = left + 2 ** 32 * right;\n this._offset += 8;\n return value;\n }\n\n _nextInt32() {\n const value = this._dataView.getInt32(this._offset, this._littleEndian);\n\n this._offset += 4;\n return value;\n }\n\n _nextUint8Array(len) {\n const value = new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + this._offset, len);\n this._offset += len;\n return value;\n }\n\n _skip(bytes) {\n this._offset += bytes;\n return this;\n }\n\n _scan(maxByteLength, term = 0x00) {\n const byteOffset = this._offset;\n let byteLength = 0;\n\n while (this._dataView.getUint8(this._offset) !== term && byteLength < maxByteLength) {\n byteLength++;\n this._offset++;\n }\n\n if (byteLength < maxByteLength) this._offset++;\n return new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + byteOffset, byteLength);\n }\n\n}\n\n///////////////////////////////////////////////////\n// Common.\n///////////////////////////////////////////////////\nconst KTX_WRITER = `KTX-Parse v${\"0.6.0\"}`;\nconst NUL = new Uint8Array([0x00]); ///////////////////////////////////////////////////\n// KTX2 Header.\n///////////////////////////////////////////////////\n\nconst KTX2_ID = [// '´', 'K', 'T', 'X', '2', '0', 'ª', '\\r', '\\n', '\\x1A', '\\n'\n0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];\nconst HEADER_BYTE_LENGTH = 68; // 13 * 4 + 2 * 8\n\n/** Encodes text to an ArrayBuffer. */\nfunction encodeText(text) {\n if (typeof TextEncoder !== 'undefined') {\n return new TextEncoder().encode(text);\n }\n\n return Buffer.from(text);\n}\n/** Decodes an ArrayBuffer to text. */\n\nfunction decodeText(buffer) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(buffer);\n }\n\n return Buffer.from(buffer).toString('utf8');\n}\n/** Concatenates N ArrayBuffers. */\n\nfunction concat(buffers) {\n let totalByteLength = 0;\n\n for (const buffer of buffers) {\n totalByteLength += buffer.byteLength;\n }\n\n const result = new Uint8Array(totalByteLength);\n let byteOffset = 0;\n\n for (const buffer of buffers) {\n result.set(new Uint8Array(buffer), byteOffset);\n byteOffset += buffer.byteLength;\n }\n\n return result;\n}\n\n/**\r\n * Parses a KTX 2.0 file, returning an unpacked {@link KTX2Container} instance with all associated\r\n * data. The container's mip levels and other binary data are pointers into the original file, not\r\n * copies, so the original file should not be overwritten after reading.\r\n *\r\n * @param data Bytes of KTX 2.0 file, as Uint8Array or Buffer.\r\n */\n\nfunction read(data) {\n ///////////////////////////////////////////////////\n // KTX 2.0 Identifier.\n ///////////////////////////////////////////////////\n const id = new Uint8Array(data.buffer, data.byteOffset, KTX2_ID.length);\n\n if (id[0] !== KTX2_ID[0] || // '´'\n id[1] !== KTX2_ID[1] || // 'K'\n id[2] !== KTX2_ID[2] || // 'T'\n id[3] !== KTX2_ID[3] || // 'X'\n id[4] !== KTX2_ID[4] || // ' '\n id[5] !== KTX2_ID[5] || // '2'\n id[6] !== KTX2_ID[6] || // '0'\n id[7] !== KTX2_ID[7] || // 'ª'\n id[8] !== KTX2_ID[8] || // '\\r'\n id[9] !== KTX2_ID[9] || // '\\n'\n id[10] !== KTX2_ID[10] || // '\\x1A'\n id[11] !== KTX2_ID[11] // '\\n'\n ) {\n throw new Error('Missing KTX 2.0 identifier.');\n }\n\n const container = new KTX2Container(); ///////////////////////////////////////////////////\n // Header.\n ///////////////////////////////////////////////////\n\n const headerByteLength = 17 * Uint32Array.BYTES_PER_ELEMENT;\n const headerReader = new BufferReader(data, KTX2_ID.length, headerByteLength, true);\n container.vkFormat = headerReader._nextUint32();\n container.typeSize = headerReader._nextUint32();\n container.pixelWidth = headerReader._nextUint32();\n container.pixelHeight = headerReader._nextUint32();\n container.pixelDepth = headerReader._nextUint32();\n container.layerCount = headerReader._nextUint32();\n container.faceCount = headerReader._nextUint32();\n\n const levelCount = headerReader._nextUint32();\n\n container.supercompressionScheme = headerReader._nextUint32();\n\n const dfdByteOffset = headerReader._nextUint32();\n\n const dfdByteLength = headerReader._nextUint32();\n\n const kvdByteOffset = headerReader._nextUint32();\n\n const kvdByteLength = headerReader._nextUint32();\n\n const sgdByteOffset = headerReader._nextUint64();\n\n const sgdByteLength = headerReader._nextUint64(); ///////////////////////////////////////////////////\n // Level Index.\n ///////////////////////////////////////////////////\n\n\n const levelByteLength = levelCount * 3 * 8;\n const levelReader = new BufferReader(data, KTX2_ID.length + headerByteLength, levelByteLength, true);\n\n for (let i = 0; i < levelCount; i++) {\n container.levels.push({\n levelData: new Uint8Array(data.buffer, data.byteOffset + levelReader._nextUint64(), levelReader._nextUint64()),\n uncompressedByteLength: levelReader._nextUint64()\n });\n } ///////////////////////////////////////////////////\n // Data Format Descriptor (DFD).\n ///////////////////////////////////////////////////\n\n\n const dfdReader = new BufferReader(data, dfdByteOffset, dfdByteLength, true);\n const dfd = {\n vendorId: dfdReader._skip(4\n /* totalSize */\n )._nextUint16(),\n descriptorType: dfdReader._nextUint16(),\n versionNumber: dfdReader._nextUint16(),\n descriptorBlockSize: dfdReader._nextUint16(),\n colorModel: dfdReader._nextUint8(),\n colorPrimaries: dfdReader._nextUint8(),\n transferFunction: dfdReader._nextUint8(),\n flags: dfdReader._nextUint8(),\n texelBlockDimension: [dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8()],\n bytesPlane: [dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8()],\n samples: []\n };\n const sampleStart = 6;\n const sampleWords = 4;\n const numSamples = (dfd.descriptorBlockSize / 4 - sampleStart) / sampleWords;\n\n for (let i = 0; i < numSamples; i++) {\n const sample = {\n bitOffset: dfdReader._nextUint16(),\n bitLength: dfdReader._nextUint8(),\n channelType: dfdReader._nextUint8(),\n samplePosition: [dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8(), dfdReader._nextUint8()],\n sampleLower: -Infinity,\n sampleUpper: Infinity\n };\n\n if (sample.channelType & KHR_DF_SAMPLE_DATATYPE_SIGNED) {\n sample.sampleLower = dfdReader._nextInt32();\n sample.sampleUpper = dfdReader._nextInt32();\n } else {\n sample.sampleLower = dfdReader._nextUint32();\n sample.sampleUpper = dfdReader._nextUint32();\n }\n\n dfd.samples[i] = sample;\n }\n\n container.dataFormatDescriptor.length = 0;\n container.dataFormatDescriptor.push(dfd); ///////////////////////////////////////////////////\n // Key/Value Data (KVD).\n ///////////////////////////////////////////////////\n\n const kvdReader = new BufferReader(data, kvdByteOffset, kvdByteLength, true);\n\n while (kvdReader._offset < kvdByteLength) {\n const keyValueByteLength = kvdReader._nextUint32();\n\n const keyData = kvdReader._scan(keyValueByteLength);\n\n const key = decodeText(keyData);\n container.keyValue[key] = kvdReader._nextUint8Array(keyValueByteLength - keyData.byteLength - 1);\n\n if (key.match(/^ktx/i)) {\n const text = decodeText(container.keyValue[key]);\n container.keyValue[key] = text.substring(0, text.lastIndexOf('\\x00'));\n }\n\n const kvPadding = keyValueByteLength % 4 ? 4 - keyValueByteLength % 4 : 0; // align(4)\n // 4-byte alignment.\n\n kvdReader._skip(kvPadding);\n } ///////////////////////////////////////////////////\n // Supercompression Global Data (SGD).\n ///////////////////////////////////////////////////\n\n\n if (sgdByteLength <= 0) return container;\n const sgdReader = new BufferReader(data, sgdByteOffset, sgdByteLength, true);\n\n const endpointCount = sgdReader._nextUint16();\n\n const selectorCount = sgdReader._nextUint16();\n\n const endpointsByteLength = sgdReader._nextUint32();\n\n const selectorsByteLength = sgdReader._nextUint32();\n\n const tablesByteLength = sgdReader._nextUint32();\n\n const extendedByteLength = sgdReader._nextUint32();\n\n const imageDescs = [];\n\n for (let i = 0; i < levelCount; i++) {\n imageDescs.push({\n imageFlags: sgdReader._nextUint32(),\n rgbSliceByteOffset: sgdReader._nextUint32(),\n rgbSliceByteLength: sgdReader._nextUint32(),\n alphaSliceByteOffset: sgdReader._nextUint32(),\n alphaSliceByteLength: sgdReader._nextUint32()\n });\n }\n\n const endpointsByteOffset = sgdByteOffset + sgdReader._offset;\n const selectorsByteOffset = endpointsByteOffset + endpointsByteLength;\n const tablesByteOffset = selectorsByteOffset + selectorsByteLength;\n const extendedByteOffset = tablesByteOffset + tablesByteLength;\n const endpointsData = new Uint8Array(data.buffer, data.byteOffset + endpointsByteOffset, endpointsByteLength);\n const selectorsData = new Uint8Array(data.buffer, data.byteOffset + selectorsByteOffset, selectorsByteLength);\n const tablesData = new Uint8Array(data.buffer, data.byteOffset + tablesByteOffset, tablesByteLength);\n const extendedData = new Uint8Array(data.buffer, data.byteOffset + extendedByteOffset, extendedByteLength);\n container.globalData = {\n endpointCount,\n selectorCount,\n imageDescs,\n endpointsData,\n selectorsData,\n tablesData,\n extendedData\n };\n return container;\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nconst DEFAULT_OPTIONS = {\n keepWriter: false\n};\n/**\r\n * Serializes a {@link KTX2Container} instance to a KTX 2.0 file. Mip levels and other binary data\r\n * are copied into the resulting Uint8Array, so the original container can safely be edited or\r\n * destroyed after it is serialized.\r\n *\r\n * Options:\r\n * - keepWriter: If true, 'KTXWriter' key/value field is written as provided by the container.\r\n * \t\tOtherwise, a string for the current ktx-parse version is generated. Default: false.\r\n *\r\n * @param container\r\n * @param options\r\n */\n\nfunction write(container, options = {}) {\n options = _extends({}, DEFAULT_OPTIONS, options); ///////////////////////////////////////////////////\n // Supercompression Global Data (SGD).\n ///////////////////////////////////////////////////\n\n let sgdBuffer = new ArrayBuffer(0);\n\n if (container.globalData) {\n const sgdHeaderBuffer = new ArrayBuffer(20 + container.globalData.imageDescs.length * 5 * 4);\n const sgdHeaderView = new DataView(sgdHeaderBuffer);\n sgdHeaderView.setUint16(0, container.globalData.endpointCount, true);\n sgdHeaderView.setUint16(2, container.globalData.selectorCount, true);\n sgdHeaderView.setUint32(4, container.globalData.endpointsData.byteLength, true);\n sgdHeaderView.setUint32(8, container.globalData.selectorsData.byteLength, true);\n sgdHeaderView.setUint32(12, container.globalData.tablesData.byteLength, true);\n sgdHeaderView.setUint32(16, container.globalData.extendedData.byteLength, true);\n\n for (let i = 0; i < container.globalData.imageDescs.length; i++) {\n const imageDesc = container.globalData.imageDescs[i];\n sgdHeaderView.setUint32(20 + i * 5 * 4 + 0, imageDesc.imageFlags, true);\n sgdHeaderView.setUint32(20 + i * 5 * 4 + 4, imageDesc.rgbSliceByteOffset, true);\n sgdHeaderView.setUint32(20 + i * 5 * 4 + 8, imageDesc.rgbSliceByteLength, true);\n sgdHeaderView.setUint32(20 + i * 5 * 4 + 12, imageDesc.alphaSliceByteOffset, true);\n sgdHeaderView.setUint32(20 + i * 5 * 4 + 16, imageDesc.alphaSliceByteLength, true);\n }\n\n sgdBuffer = concat([sgdHeaderBuffer, container.globalData.endpointsData, container.globalData.selectorsData, container.globalData.tablesData, container.globalData.extendedData]);\n } ///////////////////////////////////////////////////\n // Key/Value Data (KVD).\n ///////////////////////////////////////////////////\n\n\n const keyValueData = [];\n let keyValue = container.keyValue;\n\n if (!options.keepWriter) {\n keyValue = _extends({}, container.keyValue, {\n KTXwriter: KTX_WRITER\n });\n }\n\n for (const key in keyValue) {\n const value = keyValue[key];\n const keyData = encodeText(key);\n const valueData = typeof value === 'string' ? concat([encodeText(value), NUL]) : value;\n const kvByteLength = keyData.byteLength + 1 + valueData.byteLength;\n const kvPadding = kvByteLength % 4 ? 4 - kvByteLength % 4 : 0; // align(4)\n\n keyValueData.push(concat([new Uint32Array([kvByteLength]), keyData, NUL, valueData, new Uint8Array(kvPadding).fill(0x00) // align(4)\n ]));\n }\n\n const kvdBuffer = concat(keyValueData); ///////////////////////////////////////////////////\n // Data Format Descriptor (DFD).\n ///////////////////////////////////////////////////\n\n if (container.dataFormatDescriptor.length !== 1 || container.dataFormatDescriptor[0].descriptorType !== KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT) {\n throw new Error('Only BASICFORMAT Data Format Descriptor output supported.');\n }\n\n const dfd = container.dataFormatDescriptor[0];\n const dfdBuffer = new ArrayBuffer(28 + dfd.samples.length * 16);\n const dfdView = new DataView(dfdBuffer);\n const descriptorBlockSize = 24 + dfd.samples.length * 16;\n dfdView.setUint32(0, dfdBuffer.byteLength, true);\n dfdView.setUint16(4, dfd.vendorId, true);\n dfdView.setUint16(6, dfd.descriptorType, true);\n dfdView.setUint16(8, dfd.versionNumber, true);\n dfdView.setUint16(10, descriptorBlockSize, true);\n dfdView.setUint8(12, dfd.colorModel);\n dfdView.setUint8(13, dfd.colorPrimaries);\n dfdView.setUint8(14, dfd.transferFunction);\n dfdView.setUint8(15, dfd.flags);\n\n if (!Array.isArray(dfd.texelBlockDimension)) {\n throw new Error('texelBlockDimension is now an array. For dimensionality `d`, set `d - 1`.');\n }\n\n dfdView.setUint8(16, dfd.texelBlockDimension[0]);\n dfdView.setUint8(17, dfd.texelBlockDimension[1]);\n dfdView.setUint8(18, dfd.texelBlockDimension[2]);\n dfdView.setUint8(19, dfd.texelBlockDimension[3]);\n\n for (let i = 0; i < 8; i++) dfdView.setUint8(20 + i, dfd.bytesPlane[i]);\n\n for (let i = 0; i < dfd.samples.length; i++) {\n const sample = dfd.samples[i];\n const sampleByteOffset = 28 + i * 16;\n\n if (sample.channelID) {\n throw new Error('channelID has been renamed to channelType.');\n }\n\n dfdView.setUint16(sampleByteOffset + 0, sample.bitOffset, true);\n dfdView.setUint8(sampleByteOffset + 2, sample.bitLength);\n dfdView.setUint8(sampleByteOffset + 3, sample.channelType);\n dfdView.setUint8(sampleByteOffset + 4, sample.samplePosition[0]);\n dfdView.setUint8(sampleByteOffset + 5, sample.samplePosition[1]);\n dfdView.setUint8(sampleByteOffset + 6, sample.samplePosition[2]);\n dfdView.setUint8(sampleByteOffset + 7, sample.samplePosition[3]);\n\n if (sample.channelType & KHR_DF_SAMPLE_DATATYPE_SIGNED) {\n dfdView.setInt32(sampleByteOffset + 8, sample.sampleLower, true);\n dfdView.setInt32(sampleByteOffset + 12, sample.sampleUpper, true);\n } else {\n dfdView.setUint32(sampleByteOffset + 8, sample.sampleLower, true);\n dfdView.setUint32(sampleByteOffset + 12, sample.sampleUpper, true);\n }\n } ///////////////////////////////////////////////////\n // Data alignment.\n ///////////////////////////////////////////////////\n\n\n const dfdByteOffset = KTX2_ID.length + HEADER_BYTE_LENGTH + container.levels.length * 3 * 8;\n const kvdByteOffset = dfdByteOffset + dfdBuffer.byteLength;\n let sgdByteOffset = sgdBuffer.byteLength > 0 ? kvdByteOffset + kvdBuffer.byteLength : 0;\n if (sgdByteOffset % 8) sgdByteOffset += 8 - sgdByteOffset % 8; // align(8)\n ///////////////////////////////////////////////////\n // Level Index.\n ///////////////////////////////////////////////////\n\n const levelData = [];\n const levelIndex = new DataView(new ArrayBuffer(container.levels.length * 3 * 8));\n let levelDataByteOffset = (sgdByteOffset || kvdByteOffset + kvdBuffer.byteLength) + sgdBuffer.byteLength;\n\n for (let i = 0; i < container.levels.length; i++) {\n const level = container.levels[i];\n levelData.push(level.levelData);\n levelIndex.setBigUint64(i * 24 + 0, BigInt(levelDataByteOffset), true);\n levelIndex.setBigUint64(i * 24 + 8, BigInt(level.levelData.byteLength), true);\n levelIndex.setBigUint64(i * 24 + 16, BigInt(level.uncompressedByteLength), true);\n levelDataByteOffset += level.levelData.byteLength;\n } ///////////////////////////////////////////////////\n // Header.\n ///////////////////////////////////////////////////\n\n\n const headerBuffer = new ArrayBuffer(HEADER_BYTE_LENGTH);\n const headerView = new DataView(headerBuffer);\n headerView.setUint32(0, container.vkFormat, true);\n headerView.setUint32(4, container.typeSize, true);\n headerView.setUint32(8, container.pixelWidth, true);\n headerView.setUint32(12, container.pixelHeight, true);\n headerView.setUint32(16, container.pixelDepth, true);\n headerView.setUint32(20, container.layerCount, true);\n headerView.setUint32(24, container.faceCount, true);\n headerView.setUint32(28, container.levels.length, true);\n headerView.setUint32(32, container.supercompressionScheme, true);\n headerView.setUint32(36, dfdByteOffset, true);\n headerView.setUint32(40, dfdBuffer.byteLength, true);\n headerView.setUint32(44, kvdByteOffset, true);\n headerView.setUint32(48, kvdBuffer.byteLength, true);\n headerView.setBigUint64(52, BigInt(sgdBuffer.byteLength > 0 ? sgdByteOffset : 0), true);\n headerView.setBigUint64(60, BigInt(sgdBuffer.byteLength), true); ///////////////////////////////////////////////////\n // Compose.\n ///////////////////////////////////////////////////\n\n return new Uint8Array(concat([new Uint8Array(KTX2_ID).buffer, headerBuffer, levelIndex.buffer, dfdBuffer, kvdBuffer, sgdByteOffset > 0 ? new ArrayBuffer(sgdByteOffset - (kvdByteOffset + kvdBuffer.byteLength)) // align(8)\n : new ArrayBuffer(0), sgdBuffer, ...levelData]));\n}\n\nexport { KHR_DF_CHANNEL_RGBSDA_ALPHA, KHR_DF_CHANNEL_RGBSDA_BLUE, KHR_DF_CHANNEL_RGBSDA_DEPTH, KHR_DF_CHANNEL_RGBSDA_GREEN, KHR_DF_CHANNEL_RGBSDA_RED, KHR_DF_CHANNEL_RGBSDA_STENCIL, KHR_DF_FLAG_ALPHA_PREMULTIPLIED, KHR_DF_FLAG_ALPHA_STRAIGHT, KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT, KHR_DF_MODEL_ASTC, KHR_DF_MODEL_ETC1, KHR_DF_MODEL_ETC1S, KHR_DF_MODEL_ETC2, KHR_DF_MODEL_RGBSDA, KHR_DF_MODEL_UASTC, KHR_DF_MODEL_UNSPECIFIED, KHR_DF_PRIMARIES_ACES, KHR_DF_PRIMARIES_ACESCC, KHR_DF_PRIMARIES_ADOBERGB, KHR_DF_PRIMARIES_BT2020, KHR_DF_PRIMARIES_BT601_EBU, KHR_DF_PRIMARIES_BT601_SMPTE, KHR_DF_PRIMARIES_BT709, KHR_DF_PRIMARIES_CIEXYZ, KHR_DF_PRIMARIES_DISPLAYP3, KHR_DF_PRIMARIES_NTSC1953, KHR_DF_PRIMARIES_PAL525, KHR_DF_PRIMARIES_UNSPECIFIED, KHR_DF_SAMPLE_DATATYPE_EXPONENT, KHR_DF_SAMPLE_DATATYPE_FLOAT, KHR_DF_SAMPLE_DATATYPE_LINEAR, KHR_DF_SAMPLE_DATATYPE_SIGNED, KHR_DF_TRANSFER_ACESCC, KHR_DF_TRANSFER_ACESCCT, KHR_DF_TRANSFER_ADOBERGB, KHR_DF_TRANSFER_BT1886, KHR_DF_TRANSFER_DCIP3, KHR_DF_TRANSFER_HLG_EOTF, KHR_DF_TRANSFER_HLG_OETF, KHR_DF_TRANSFER_ITU, KHR_DF_TRANSFER_LINEAR, KHR_DF_TRANSFER_NTSC, KHR_DF_TRANSFER_PAL625_EOTF, KHR_DF_TRANSFER_PAL_OETF, KHR_DF_TRANSFER_PQ_EOTF, KHR_DF_TRANSFER_PQ_OETF, KHR_DF_TRANSFER_SLOG, KHR_DF_TRANSFER_SLOG2, KHR_DF_TRANSFER_SRGB, KHR_DF_TRANSFER_ST240, KHR_DF_TRANSFER_UNSPECIFIED, KHR_DF_VENDORID_KHRONOS, KHR_DF_VERSION, KHR_SUPERCOMPRESSION_BASISLZ, KHR_SUPERCOMPRESSION_NONE, KHR_SUPERCOMPRESSION_ZLIB, KHR_SUPERCOMPRESSION_ZSTD, KTX2Container, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_A2B10G10R10_SNORM_PACK32, VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2R10G10B10_SINT_PACK32, VK_FORMAT_A2R10G10B10_SNORM_PACK32, VK_FORMAT_A2R10G10B10_UINT_PACK32, VK_FORMAT_A2R10G10B10_UNORM_PACK32, VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x12_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, VK_FORMAT_B4G4R4A4_UNORM_PACK16, VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SNORM, VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SNORM, VK_FORMAT_B8G8R8_SRGB, VK_FORMAT_B8G8R8_UINT, VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_D16_UNORM, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, VK_FORMAT_R10X6G10X6_UNORM_2PACK16, VK_FORMAT_R10X6_UNORM_PACK16, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, VK_FORMAT_R12X4G12X4_UNORM_2PACK16, VK_FORMAT_R12X4_UNORM_PACK16, VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16_SFLOAT, VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SNORM, VK_FORMAT_R16G16B16_UINT, VK_FORMAT_R16G16B16_UNORM, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SNORM, VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_UINT, VK_FORMAT_R16_UNORM, VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_UINT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SINT, VK_FORMAT_R32_UINT, VK_FORMAT_R4G4B4A4_UNORM_PACK16, VK_FORMAT_R4G4_UNORM_PACK8, VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_R5G6B5_UNORM_PACK16, VK_FORMAT_R64G64B64A64_SFLOAT, VK_FORMAT_R64G64B64A64_SINT, VK_FORMAT_R64G64B64A64_UINT, VK_FORMAT_R64G64B64_SFLOAT, VK_FORMAT_R64G64B64_SINT, VK_FORMAT_R64G64B64_UINT, VK_FORMAT_R64G64_SFLOAT, VK_FORMAT_R64G64_SINT, VK_FORMAT_R64G64_UINT, VK_FORMAT_R64_SFLOAT, VK_FORMAT_R64_SINT, VK_FORMAT_R64_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8_SINT, VK_FORMAT_R8G8B8_SNORM, VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_SRGB, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8_SINT, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_SRGB, VK_FORMAT_R8_UINT, VK_FORMAT_R8_UNORM, VK_FORMAT_S8_UINT, VK_FORMAT_UNDEFINED, VK_FORMAT_X8_D24_UNORM_PACK32, read, write };\n//# sourceMappingURL=ktx-parse.modern.js.map\n","import{ExtensionProperty as e,PropertyType as t,Extension as s,BufferUtils as n,WriterContext as r,Primitive as o,Root as i,AnimationSampler as a,AnimationChannel as c,Accessor as u,MathUtils as l,GLB_BUFFER as h,ImageUtils as f,getBounds as g,ColorUtils as p,TextureInfo as x,TextureChannel as d}from\"@gltf-transform/core\";import{read as T,KHR_DF_MODEL_ETC1S as m,KHR_DF_MODEL_UASTC as E}from\"ktx-parse\";const I=\"EXT_mesh_gpu_instancing\",N=\"EXT_meshopt_compression\",R=\"KHR_draco_mesh_compression\",y=\"KHR_lights_punctual\",A=\"KHR_materials_anisotropy\",S=\"KHR_materials_clearcoat\",C=\"KHR_materials_emissive_strength\",M=\"KHR_materials_ior\",O=\"KHR_materials_iridescence\",_=\"KHR_materials_pbrSpecularGlossiness\",w=\"KHR_materials_sheen\",D=\"KHR_materials_specular\",b=\"KHR_materials_transmission\",F=\"KHR_materials_unlit\",j=\"KHR_materials_volume\",v=\"KHR_materials_variants\",k=\"KHR_texture_transform\",B=\"KHR_xmp_json_ld\",G=\"INSTANCE_ATTRIBUTE\";class L extends e{init(){this.extensionName=I,this.propertyType=\"InstancedMesh\",this.parentTypes=[t.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{attributes:{}})}getAttribute(e){return this.getRefMap(\"attributes\",e)}setAttribute(e,t){return this.setRefMap(\"attributes\",e,t,{usage:G})}listAttributes(){return this.listRefMapValues(\"attributes\")}listSemantics(){return this.listRefMapKeys(\"attributes\")}}L.EXTENSION_NAME=I;const U=I;class V extends s{constructor(...e){super(...e),this.extensionName=U,this.provideTypes=[t.NODE],this.prewriteTypes=[t.ACCESSOR]}createInstancedMesh(){return new L(this.document.getGraph())}read(e){return(e.jsonDoc.json.nodes||[]).forEach((t,s)=>{if(!t.extensions||!t.extensions[U])return;const n=t.extensions[U],r=this.createInstancedMesh();for(const t in n.attributes)r.setAttribute(t,e.accessors[n.attributes[t]]);e.nodes[s].setExtension(U,r)}),this}prewrite(e){e.accessorUsageGroupedByParent.add(G);for(const t of this.properties)for(const s of t.listAttributes())e.addAccessorToUsageGroup(s,G);return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listNodes().forEach(s=>{const n=s.getExtension(U);if(n){const r=e.nodeIndexMap.get(s),o=t.json.nodes[r],i={attributes:{}};n.listSemantics().forEach(t=>{const s=n.getAttribute(t);i.attributes[t]=e.accessorIndexMap.get(s)}),o.extensions=o.extensions||{},o.extensions[U]=i}}),this}}function P(){return P=Object.assign?Object.assign.bind():function(e){for(var t=1;t8?8:4,a.componentType=i>8?q:$,a.normalized=!0,s=3===e.getElementSize()?function(e){const t=new Float32Array(4*e.length/3);for(let s=0,n=e.length/3;sQ(t,e.getComponentType())),a.max=a.max.map(t=>Q(t,e.getComponentType()))),a.normalized&&(a.min=a.min.map(e=>Y(e,a.componentType)),a.max=a.max.map(e=>Y(e,a.componentType)))}else a.byteStride%4&&(a.array=function(e,t){const s=n.padNumber(e.BYTES_PER_ELEMENT*t)/e.BYTES_PER_ELEMENT,r=new e.constructor(e.length/t*s);for(let n=0;n*te instanceof o&&e.getMode()===o.Mode.TRIANGLES)?H.TRIANGLES:H.INDICES:H.ATTRIBUTES}function Z(e,s){const n=s.getGraph().listParentEdges(e).filter(e=>!(e.getParent()instanceof i));for(const s of n){const n=s.getName(),r=s.getAttributes().key||\"\",o=s.getParent().propertyType===t.PRIMITIVE_TARGET;if(\"indices\"===n)return{filter:z.NONE};if(\"attributes\"===n){if(\"POSITION\"===r)return{filter:z.NONE};if(\"TEXCOORD_0\"===r)return{filter:z.NONE};if(r.startsWith(\"JOINTS_\"))return{filter:z.NONE};if(r.startsWith(\"WEIGHTS_\"))return{filter:z.NONE};if(\"NORMAL\"===r||\"TANGENT\"===r)return o?{filter:z.NONE}:{filter:z.OCTAHEDRAL,bits:8}}if(\"output\"===n){const t=ee(e);return\"rotation\"===t?{filter:z.QUATERNION,bits:16}:\"translation\"===t||\"scale\"===t?{filter:z.EXPONENTIAL,bits:12}:{filter:z.NONE}}if(\"input\"===n)return{filter:z.NONE};if(\"inverseBindMatrices\"===n)return{filter:z.NONE}}return{filter:z.NONE}}function ee(e){for(const t of e.listParents())if(t instanceof a)for(const e of t.listParents())if(e instanceof c)return e.getTargetPath();return null}const te=N,se={method:X.QUANTIZE};class ne extends s{constructor(...e){super(...e),this.extensionName=te,this.prereadTypes=[t.BUFFER,t.PRIMITIVE],this.prewriteTypes=[t.BUFFER,t.ACCESSOR],this.readDependencies=[\"meshopt.decoder\"],this.writeDependencies=[\"meshopt.encoder\"],this._decoder=null,this._decoderFallbackBufferMap=new Map,this._encoder=null,this._encoderOptions=se,this._encoderFallbackBuffer=null,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={}}install(e,t){return\"meshopt.decoder\"===e&&(this._decoder=t),\"meshopt.encoder\"===e&&(this._encoder=t),this}setEncoderOptions(e){return this._encoderOptions=P({},se,e),this}preread(e,s){if(!this._decoder){if(!this.isRequired())return this;throw new Error(`[${te}] Please install extension dependency, \"meshopt.decoder\".`)}if(!this._decoder.supported){if(!this.isRequired())return this;throw new Error(`[${te}]: Missing WASM support.`)}return s===t.BUFFER?this._prereadBuffers(e):s===t.PRIMITIVE&&this._prereadPrimitives(e),this}_prereadBuffers(e){const t=e.jsonDoc;(t.json.bufferViews||[]).forEach((s,r)=>{if(!s.extensions||!s.extensions[te])return;const o=s.extensions[te],i=o.byteOffset||0,a=o.byteLength||0,c=o.count,u=o.byteStride,l=new Uint8Array(c*u),f=t.json.buffers[o.buffer],g=n.toView(f.uri?t.resources[f.uri]:t.resources[h],i,a);this._decoder.decodeGltfBuffer(l,c,u,g,o.mode,o.filter),e.bufferViews[r]=l})}_prereadPrimitives(e){const t=e.jsonDoc;(t.json.bufferViews||[]).forEach(s=>{var n;s.extensions&&s.extensions[te]&&(n=t.json.buffers[s.buffer]).extensions&&n.extensions[N]&&n.extensions[N].fallback&&this._decoderFallbackBufferMap.set(e.buffers[s.buffer],e.buffers[s.extensions[te].buffer])})}read(e){if(!this.isRequired())return this;for(const[e,t]of this._decoderFallbackBufferMap){for(const s of e.listParents())s instanceof u&&s.swap(e,t);e.dispose()}return this}prewrite(e,s){return s===t.ACCESSOR?this._prewriteAccessors(e):s===t.BUFFER&&this._prewriteBuffers(e),this}_prewriteAccessors(e){const t=e.jsonDoc.json,s=this._encoder,n=this._encoderOptions,o=this.document.createBuffer(),i=this.document.getRoot().listBuffers().indexOf(o);this._encoderFallbackBuffer=o,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={};for(const o of this.document.getRoot().listAccessors()){if(\"weights\"===ee(o))continue;if(o.getSparse())continue;const a=e.getAccessorUsage(o),c=J(o,a),u=n.method===X.FILTER?Z(o,this.document):{filter:z.NONE},l=W(o,s,c,u),{array:h,byteStride:f}=l,g=o.getBuffer();if(!g)throw new Error(`${te}: Missing buffer for accessor.`);const p=this.document.getRoot().listBuffers().indexOf(g),x=[a,c,u.filter,f,p].join(\":\");let d=this._encoderBufferViews[x],T=this._encoderBufferViewData[x],m=this._encoderBufferViewAccessors[x];d&&T||(m=this._encoderBufferViewAccessors[x]=[],T=this._encoderBufferViewData[x]=[],d=this._encoderBufferViews[x]={buffer:i,target:r.USAGE_TO_TARGET[a],byteOffset:0,byteLength:0,byteStride:a===r.BufferViewUsage.ARRAY_BUFFER?f:void 0,extensions:{[te]:{buffer:p,byteOffset:0,byteLength:0,mode:c,filter:u.filter!==z.NONE?u.filter:void 0,byteStride:f,count:0}}});const E=e.createAccessorDef(o);E.componentType=l.componentType,E.normalized=l.normalized,E.byteOffset=d.byteLength,E.min&&l.min&&(E.min=l.min),E.max&&l.max&&(E.max=l.max),e.accessorIndexMap.set(o,t.accessors.length),t.accessors.push(E),m.push(E),T.push(new Uint8Array(h.buffer,h.byteOffset,h.byteLength)),d.byteLength+=h.byteLength,d.extensions.EXT_meshopt_compression.count+=o.getCount()}}_prewriteBuffers(e){const t=this._encoder;for(const s in this._encoderBufferViews){const r=this._encoderBufferViews[s],o=this._encoderBufferViewData[s],i=this.document.getRoot().listBuffers()[r.extensions[te].buffer],a=e.otherBufferViews.get(i)||[],{count:c,byteStride:u,mode:l}=r.extensions[te],h=n.concat(o),f=t.encodeGltfBuffer(h,c,u,l),g=n.pad(f);r.extensions[te].byteLength=f.byteLength,o.length=0,o.push(g),a.push(g),e.otherBufferViews.set(i,a)}}write(e){let t=0;for(const s in this._encoderBufferViews){const r=this._encoderBufferViews[s],o=e.otherBufferViewsIndexMap.get(this._encoderBufferViewData[s][0]),i=this._encoderBufferViewAccessors[s];for(const e of i)e.bufferView=o;const a=e.jsonDoc.json.bufferViews[o],c=a.byteOffset||0;Object.assign(a,r),a.byteOffset=t,a.extensions[te].byteOffset=c,t+=n.padNumber(r.byteLength)}const s=this._encoderFallbackBuffer,r=e.bufferIndexMap.get(s),o=e.jsonDoc.json.buffers[r];return o.byteLength=t,o.extensions={[te]:{fallback:!0}},s.dispose(),this}}ne.EXTENSION_NAME=te,ne.EncoderMethod=X;const re=\"EXT_texture_avif\";class oe{match(e){return e.length>=12&&\"ftypavif\"===n.decodeText(e.slice(4,12))}getSize(e){if(!this.match(e))return null;const t=new DataView(e.buffer,e.byteOffset,e.byteLength);let s=ae(t,0);if(!s)return null;let n=s.end;for(;s=ae(t,n);)if(\"meta\"===s.type)n=s.start+4;else if(\"iprp\"===s.type||\"ipco\"===s.type)n=s.start;else{if(\"ispe\"===s.type)return[t.getUint32(s.start+4),t.getUint32(s.start+8)];if(\"mdat\"===s.type)break;n=s.end}return null}getChannels(e){return 4}}class ie extends s{constructor(...e){super(...e),this.extensionName=re,this.prereadTypes=[t.TEXTURE]}static register(){f.registerFormat(\"image/avif\",new oe)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(e=>{e.extensions&&e.extensions[re]&&(e.source=e.extensions[re].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(s=>{if(\"image/avif\"===s.getMimeType()){const n=e.imageIndexMap.get(s);(t.json.textures||[]).forEach(e=>{e.source===n&&(e.extensions=e.extensions||{},e.extensions[re]={source:e.source},delete e.source)})}}),this}}function ae(e,t){if(e.byteLength<4+t)return null;const s=e.getUint32(t);return e.byteLength=12&&87===e[8]&&69===e[9]&&66===e[10]&&80===e[11]}getSize(e){const t=n.decodeText(e.slice(0,4)),s=n.decodeText(e.slice(8,12));if(\"RIFF\"!==t||\"WEBP\"!==s)return null;const r=new DataView(e.buffer,e.byteOffset);let o=12;for(;o>6)]}o+=8+t+t%2}return null}getChannels(e){return 4}}class le extends s{constructor(...e){super(...e),this.extensionName=ce,this.prereadTypes=[t.TEXTURE]}static register(){f.registerFormat(\"image/webp\",new ue)}preread(e){return(e.jsonDoc.json.textures||[]).forEach(e=>{e.extensions&&e.extensions[ce]&&(e.source=e.extensions[ce].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(s=>{if(\"image/webp\"===s.getMimeType()){const n=e.imageIndexMap.get(s);(t.json.textures||[]).forEach(e=>{e.source===n&&(e.extensions=e.extensions||{},e.extensions[ce]={source:e.source},delete e.source)})}}),this}}le.EXTENSION_NAME=ce;const he=R;let fe,ge,pe,xe;function de(e,t){const s=new fe.DecoderBuffer;try{if(s.Init(t,t.length),e.GetEncodedGeometryType(s)!==fe.TRIANGULAR_MESH)throw new Error(`[${he}] Unknown geometry type.`);const n=new fe.Mesh;if(!e.DecodeBufferToMesh(s,n).ok()||0===n.ptr)throw new Error(`[${he}] Decoding failure.`);return n}finally{fe.destroy(s)}}function Te(e,t){const s=3*t.num_faces();let n,r;if(t.num_points()<=65534){const o=s*Uint16Array.BYTES_PER_ELEMENT;n=fe._malloc(o),e.GetTrianglesUInt16Array(t,o,n),r=new Uint16Array(fe.HEAPU16.buffer,n,s).slice()}else{const o=s*Uint32Array.BYTES_PER_ELEMENT;n=fe._malloc(o),e.GetTrianglesUInt32Array(t,o,n),r=new Uint32Array(fe.HEAPU32.buffer,n,s).slice()}return fe._free(n),r}function me(e,t,s,n){const r=pe[n.componentType],o=ge[n.componentType],i=s.num_components(),a=t.num_points()*i,c=a*o.BYTES_PER_ELEMENT,u=fe._malloc(c);e.GetAttributeDataArrayForAllPoints(t,s,r,c,u);const l=new o(fe.HEAPF32.buffer,u,a).slice();return fe._free(u),l}var Ee,Ie;!function(e){e[e.EDGEBREAKER=1]=\"EDGEBREAKER\",e[e.SEQUENTIAL=0]=\"SEQUENTIAL\"}(Ee||(Ee={})),function(e){e.POSITION=\"POSITION\",e.NORMAL=\"NORMAL\",e.COLOR=\"COLOR\",e.TEX_COORD=\"TEX_COORD\",e.GENERIC=\"GENERIC\"}(Ie||(Ie={}));const Ne={[Ie.POSITION]:14,[Ie.NORMAL]:10,[Ie.COLOR]:8,[Ie.TEX_COORD]:12,[Ie.GENERIC]:12},Re={decodeSpeed:5,encodeSpeed:5,method:Ee.EDGEBREAKER,quantizationBits:Ne,quantizationVolume:\"mesh\"};function ye(e,t=Re){const s=P({},Re,t);s.quantizationBits=P({},Ne,t.quantizationBits);const n=new xe.MeshBuilder,r=new xe.Mesh,o=new xe.ExpertEncoder(r),i={},a=new xe.DracoInt8Array,c=e.listTargets().length>0;let u=!1;for(const t of e.listSemantics()){const a=e.getAttribute(t);if(a.getSparse()){u=!0;continue}const c=Ae(t),l=Se(n,a.getComponentType(),r,xe[c],a.getCount(),a.getElementSize(),a.getArray());if(-1===l)throw new Error(`Error compressing \"${t}\" attribute.`);if(i[t]=l,\"mesh\"===s.quantizationVolume||\"POSITION\"!==t)o.SetAttributeQuantization(l,s.quantizationBits[c]);else{if(\"object\"!=typeof s.quantizationVolume)throw new Error(\"Invalid quantization volume state.\");{const{quantizationVolume:e}=s,t=Math.max(e.max[0]-e.min[0],e.max[1]-e.min[1],e.max[2]-e.min[2]);o.SetAttributeExplicitQuantization(l,s.quantizationBits[c],a.getElementSize(),e.min,t)}}}const l=e.getIndices();if(!l)throw new Ce(\"Primitive must have indices.\");n.AddFacesToMesh(r,l.getCount()/3,l.getArray()),o.SetSpeedOptions(s.encodeSpeed,s.decodeSpeed),o.SetTrackEncodedProperties(!0),o.SetEncodingMethod(s.method===Ee.SEQUENTIAL||c||u?xe.MESH_SEQUENTIAL_ENCODING:xe.MESH_EDGEBREAKER_ENCODING);const h=o.EncodeToDracoBuffer(!(c||u),a);if(h<=0)throw new Ce(\"Error applying Draco compression.\");const f=new Uint8Array(h);for(let e=0;ee.propertyType));if(2!==s.size||!s.has(t.PRIMITIVE)||!s.has(t.ROOT))throw new Error(`[${Me}] Compressed accessors must only be used as indices or vertex attributes.`)}for(const e of Array.from(n)){const t=l.get(e),s=e.getIndices();if(c.get(s)!==t||e.listAttributes().some(e=>c.get(e)!==t))throw new Error(`[${Me}] Draco primitives must share all, or no, accessors.`)}for(const e of Array.from(r)){const t=e.getIndices();if(c.has(t)||e.listAttributes().some(e=>c.has(e)))throw new Error(`[${Me}] Accessor cannot be shared by compressed and uncompressed primitives.`)}return l}(this.document),i=new Map;let a=\"mesh\";\"scene\"===this._encoderOptions.quantizationVolume&&(1!==this.document.getRoot().listScenes().length?n.warn(`[${Me}]: quantizationVolume=scene requires exactly 1 scene.`):a=g(this.document.getRoot().listScenes().pop()));for(const t of Array.from(r.keys())){const s=r.get(t);if(!s)throw new Error(\"Unexpected primitive.\");if(i.has(s)){i.set(s,i.get(s));continue}const o=t.getIndices(),c=e.jsonDoc.json.accessors;let u;try{u=ye(t,P({},this._encoderOptions,{quantizationVolume:a}))}catch(e){if(e instanceof Ce){n.warn(`[${Me}]: ${e.message} Skipping primitive compression.`);continue}throw e}i.set(s,u);const l=e.createAccessorDef(o);l.count=u.numIndices,e.accessorIndexMap.set(o,c.length),c.push(l);for(const s of t.listSemantics()){const n=t.getAttribute(s);if(void 0===u.attributeIDs[s])continue;const r=e.createAccessorDef(n);r.count=u.numVertices,e.accessorIndexMap.set(n,c.length),c.push(r)}const h=t.getAttribute(\"POSITION\").getBuffer()||this.document.getRoot().listBuffers()[0];e.otherBufferViews.has(h)||e.otherBufferViews.set(h,[]),e.otherBufferViews.get(h).push(u.data)}return n.debug(`[${Me}] Compressed ${r.size} primitives.`),e.extensionData[Me]={primitiveHashMap:r,primitiveEncodingMap:i},this}write(e){const t=e.extensionData[Me];for(const s of this.document.getRoot().listMeshes()){const n=e.jsonDoc.json.meshes[e.meshIndexMap.get(s)];for(let r=0;re!==Me),t.extensionsRequired=(t.extensionsRequired||[]).filter(e=>e!==Me)}return this}}function _e(e,t){const s=[],n=e.getIndices();s.push(t.get(n));for(const n of e.listAttributes())s.push(t.get(n));return s.sort().join(\"|\")}Oe.EXTENSION_NAME=Me,Oe.EncoderMethod=Ee;class we extends e{init(){this.extensionName=y,this.propertyType=\"Light\",this.parentTypes=[t.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{color:[1,1,1],intensity:1,type:we.Type.POINT,range:null,innerConeAngle:0,outerConeAngle:Math.PI/4})}getColor(){return this.get(\"color\")}setColor(e){return this.set(\"color\",e)}getColorHex(){return p.factorToHex(this.getColor())}setColorHex(e){const t=this.getColor().slice();return p.hexToFactor(e,t),this.setColor(t)}getIntensity(){return this.get(\"intensity\")}setIntensity(e){return this.set(\"intensity\",e)}getType(){return this.get(\"type\")}setType(e){return this.set(\"type\",e)}getRange(){return this.get(\"range\")}setRange(e){return this.set(\"range\",e)}getInnerConeAngle(){return this.get(\"innerConeAngle\")}setInnerConeAngle(e){return this.set(\"innerConeAngle\",e)}getOuterConeAngle(){return this.get(\"outerConeAngle\")}setOuterConeAngle(e){return this.set(\"outerConeAngle\",e)}}we.EXTENSION_NAME=y,we.Type={POINT:\"point\",SPOT:\"spot\",DIRECTIONAL:\"directional\"};const De=y;class be extends s{constructor(...e){super(...e),this.extensionName=De}createLight(e=\"\"){return new we(this.document.getGraph(),e)}read(e){const t=e.jsonDoc;if(!t.json.extensions||!t.json.extensions[De])return this;const s=(t.json.extensions[De].lights||[]).map(e=>{var t,s;const n=this.createLight().setName(e.name||\"\").setType(e.type);return void 0!==e.color&&n.setColor(e.color),void 0!==e.intensity&&n.setIntensity(e.intensity),void 0!==e.range&&n.setRange(e.range),void 0!==(null==(t=e.spot)?void 0:t.innerConeAngle)&&n.setInnerConeAngle(e.spot.innerConeAngle),void 0!==(null==(s=e.spot)?void 0:s.outerConeAngle)&&n.setOuterConeAngle(e.spot.outerConeAngle),n});return t.json.nodes.forEach((t,n)=>{t.extensions&&t.extensions[De]&&e.nodes[n].setExtension(De,s[t.extensions[De].light])}),this}write(e){const t=e.jsonDoc;if(0===this.properties.size)return this;const s=[],n=new Map;for(const e of this.properties){const t=e,r={type:t.getType()};l.eq(t.getColor(),[1,1,1])||(r.color=t.getColor()),1!==t.getIntensity()&&(r.intensity=t.getIntensity()),null!=t.getRange()&&(r.range=t.getRange()),t.getName()&&(r.name=t.getName()),t.getType()===we.Type.SPOT&&(r.spot={innerConeAngle:t.getInnerConeAngle(),outerConeAngle:t.getOuterConeAngle()}),s.push(r),n.set(t,s.length-1)}return this.document.getRoot().listNodes().forEach(s=>{const r=s.getExtension(De);if(r){const o=e.nodeIndexMap.get(s),i=t.json.nodes[o];i.extensions=i.extensions||{},i.extensions[De]={light:n.get(r)}}}),t.json.extensions=t.json.extensions||{},t.json.extensions[De]={lights:s},this}}be.EXTENSION_NAME=De;const{R:Fe,G:je,B:ve}=d;class ke extends e{init(){this.extensionName=A,this.propertyType=\"Anisotropy\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{anisotropyStrength:0,anisotropyRotation:0,anisotropyTexture:null,anisotropyTextureInfo:new x(this.graph,\"anisotropyTextureInfo\")})}getAnisotropyStrength(){return this.get(\"anisotropyStrength\")}setAnisotropyStrength(e){return this.set(\"anisotropyStrength\",e)}getAnisotropyRotation(){return this.get(\"anisotropyRotation\")}setAnisotropyRotation(e){return this.set(\"anisotropyRotation\",e)}getAnisotropyTexture(){return this.getRef(\"anisotropyTexture\")}getAnisotropyTextureInfo(){return this.getRef(\"anisotropyTexture\")?this.getRef(\"anisotropyTextureInfo\"):null}setAnisotropyTexture(e){return this.setRef(\"anisotropyTexture\",e,{channels:Fe|je|ve})}}ke.EXTENSION_NAME=A;const Be=A;class Ge extends s{constructor(...e){super(...e),this.extensionName=Be}createAnisotropy(){return new ke(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Be]){const r=this.createAnisotropy();e.materials[n].setExtension(Be,r);const o=t.extensions[Be];if(void 0!==o.anisotropyStrength&&r.setAnisotropyStrength(o.anisotropyStrength),void 0!==o.anisotropyRotation&&r.setAnisotropyRotation(o.anisotropyRotation),void 0!==o.anisotropyTexture){const t=o.anisotropyTexture;r.setAnisotropyTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getAnisotropyTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Be);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Be]={};if(n.getAnisotropyStrength()>0&&(i.anisotropyStrength=n.getAnisotropyStrength()),0!==n.getAnisotropyRotation()&&(i.anisotropyRotation=n.getAnisotropyRotation()),n.getAnisotropyTexture()){const t=n.getAnisotropyTexture(),s=n.getAnisotropyTextureInfo();i.anisotropyTexture=e.createTextureInfoDef(t,s)}}}),this}}Ge.EXTENSION_NAME=Be;const{R:Le,G:Ue,B:Ve}=d;class Pe extends e{init(){this.extensionName=S,this.propertyType=\"Clearcoat\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{clearcoatFactor:0,clearcoatTexture:null,clearcoatTextureInfo:new x(this.graph,\"clearcoatTextureInfo\"),clearcoatRoughnessFactor:0,clearcoatRoughnessTexture:null,clearcoatRoughnessTextureInfo:new x(this.graph,\"clearcoatRoughnessTextureInfo\"),clearcoatNormalScale:1,clearcoatNormalTexture:null,clearcoatNormalTextureInfo:new x(this.graph,\"clearcoatNormalTextureInfo\")})}getClearcoatFactor(){return this.get(\"clearcoatFactor\")}setClearcoatFactor(e){return this.set(\"clearcoatFactor\",e)}getClearcoatTexture(){return this.getRef(\"clearcoatTexture\")}getClearcoatTextureInfo(){return this.getRef(\"clearcoatTexture\")?this.getRef(\"clearcoatTextureInfo\"):null}setClearcoatTexture(e){return this.setRef(\"clearcoatTexture\",e,{channels:Le})}getClearcoatRoughnessFactor(){return this.get(\"clearcoatRoughnessFactor\")}setClearcoatRoughnessFactor(e){return this.set(\"clearcoatRoughnessFactor\",e)}getClearcoatRoughnessTexture(){return this.getRef(\"clearcoatRoughnessTexture\")}getClearcoatRoughnessTextureInfo(){return this.getRef(\"clearcoatRoughnessTexture\")?this.getRef(\"clearcoatRoughnessTextureInfo\"):null}setClearcoatRoughnessTexture(e){return this.setRef(\"clearcoatRoughnessTexture\",e,{channels:Ue})}getClearcoatNormalScale(){return this.get(\"clearcoatNormalScale\")}setClearcoatNormalScale(e){return this.set(\"clearcoatNormalScale\",e)}getClearcoatNormalTexture(){return this.getRef(\"clearcoatNormalTexture\")}getClearcoatNormalTextureInfo(){return this.getRef(\"clearcoatNormalTexture\")?this.getRef(\"clearcoatNormalTextureInfo\"):null}setClearcoatNormalTexture(e){return this.setRef(\"clearcoatNormalTexture\",e,{channels:Le|Ue|Ve})}}Pe.EXTENSION_NAME=S;const Xe=S;class He extends s{constructor(...e){super(...e),this.extensionName=Xe}createClearcoat(){return new Pe(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Xe]){const r=this.createClearcoat();e.materials[n].setExtension(Xe,r);const o=t.extensions[Xe];if(void 0!==o.clearcoatFactor&&r.setClearcoatFactor(o.clearcoatFactor),void 0!==o.clearcoatRoughnessFactor&&r.setClearcoatRoughnessFactor(o.clearcoatRoughnessFactor),void 0!==o.clearcoatTexture){const t=o.clearcoatTexture;r.setClearcoatTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getClearcoatTextureInfo(),t)}if(void 0!==o.clearcoatRoughnessTexture){const t=o.clearcoatRoughnessTexture;r.setClearcoatRoughnessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getClearcoatRoughnessTextureInfo(),t)}if(void 0!==o.clearcoatNormalTexture){const t=o.clearcoatNormalTexture;r.setClearcoatNormalTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getClearcoatNormalTextureInfo(),t),void 0!==t.scale&&r.setClearcoatNormalScale(t.scale)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Xe);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Xe]={clearcoatFactor:n.getClearcoatFactor(),clearcoatRoughnessFactor:n.getClearcoatRoughnessFactor()};if(n.getClearcoatTexture()){const t=n.getClearcoatTexture(),s=n.getClearcoatTextureInfo();i.clearcoatTexture=e.createTextureInfoDef(t,s)}if(n.getClearcoatRoughnessTexture()){const t=n.getClearcoatRoughnessTexture(),s=n.getClearcoatRoughnessTextureInfo();i.clearcoatRoughnessTexture=e.createTextureInfoDef(t,s)}if(n.getClearcoatNormalTexture()){const t=n.getClearcoatNormalTexture(),s=n.getClearcoatNormalTextureInfo();i.clearcoatNormalTexture=e.createTextureInfoDef(t,s),1!==n.getClearcoatNormalScale()&&(i.clearcoatNormalTexture.scale=n.getClearcoatNormalScale())}}}),this}}He.EXTENSION_NAME=Xe;class ze extends e{init(){this.extensionName=C,this.propertyType=\"EmissiveStrength\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{emissiveStrength:1})}getEmissiveStrength(){return this.get(\"emissiveStrength\")}setEmissiveStrength(e){return this.set(\"emissiveStrength\",e)}}ze.EXTENSION_NAME=C;const $e=C;class qe extends s{constructor(...e){super(...e),this.extensionName=$e}createEmissiveStrength(){return new ze(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,s)=>{if(t.extensions&&t.extensions[$e]){const n=this.createEmissiveStrength();e.materials[s].setExtension($e,n);const r=t.extensions[$e];void 0!==r.emissiveStrength&&n.setEmissiveStrength(r.emissiveStrength)}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension($e);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{},o.extensions[$e]={emissiveStrength:n.getEmissiveStrength()}}}),this}}qe.EXTENSION_NAME=$e;class Ke extends e{init(){this.extensionName=M,this.propertyType=\"IOR\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{ior:1.5})}getIOR(){return this.get(\"ior\")}setIOR(e){return this.set(\"ior\",e)}}Ke.EXTENSION_NAME=M;const Ye=M;class Qe extends s{constructor(...e){super(...e),this.extensionName=Ye}createIOR(){return new Ke(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,s)=>{if(t.extensions&&t.extensions[Ye]){const n=this.createIOR();e.materials[s].setExtension(Ye,n);const r=t.extensions[Ye];void 0!==r.ior&&n.setIOR(r.ior)}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Ye);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{},o.extensions[Ye]={ior:n.getIOR()}}}),this}}Qe.EXTENSION_NAME=Ye;const{R:We,G:Je}=d;class Ze extends e{init(){this.extensionName=O,this.propertyType=\"Iridescence\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{iridescenceFactor:0,iridescenceTexture:null,iridescenceTextureInfo:new x(this.graph,\"iridescenceTextureInfo\"),iridescenceIOR:1.3,iridescenceThicknessMinimum:100,iridescenceThicknessMaximum:400,iridescenceThicknessTexture:null,iridescenceThicknessTextureInfo:new x(this.graph,\"iridescenceThicknessTextureInfo\")})}getIridescenceFactor(){return this.get(\"iridescenceFactor\")}setIridescenceFactor(e){return this.set(\"iridescenceFactor\",e)}getIridescenceTexture(){return this.getRef(\"iridescenceTexture\")}getIridescenceTextureInfo(){return this.getRef(\"iridescenceTexture\")?this.getRef(\"iridescenceTextureInfo\"):null}setIridescenceTexture(e){return this.setRef(\"iridescenceTexture\",e,{channels:We})}getIridescenceIOR(){return this.get(\"iridescenceIOR\")}setIridescenceIOR(e){return this.set(\"iridescenceIOR\",e)}getIridescenceThicknessMinimum(){return this.get(\"iridescenceThicknessMinimum\")}setIridescenceThicknessMinimum(e){return this.set(\"iridescenceThicknessMinimum\",e)}getIridescenceThicknessMaximum(){return this.get(\"iridescenceThicknessMaximum\")}setIridescenceThicknessMaximum(e){return this.set(\"iridescenceThicknessMaximum\",e)}getIridescenceThicknessTexture(){return this.getRef(\"iridescenceThicknessTexture\")}getIridescenceThicknessTextureInfo(){return this.getRef(\"iridescenceThicknessTexture\")?this.getRef(\"iridescenceThicknessTextureInfo\"):null}setIridescenceThicknessTexture(e){return this.setRef(\"iridescenceThicknessTexture\",e,{channels:Je})}}Ze.EXTENSION_NAME=O;const et=O;class tt extends s{constructor(...e){super(...e),this.extensionName=et}createIridescence(){return new Ze(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[et]){const r=this.createIridescence();e.materials[n].setExtension(et,r);const o=t.extensions[et];if(void 0!==o.iridescenceFactor&&r.setIridescenceFactor(o.iridescenceFactor),void 0!==o.iridescenceIor&&r.setIridescenceIOR(o.iridescenceIor),void 0!==o.iridescenceThicknessMinimum&&r.setIridescenceThicknessMinimum(o.iridescenceThicknessMinimum),void 0!==o.iridescenceThicknessMaximum&&r.setIridescenceThicknessMaximum(o.iridescenceThicknessMaximum),void 0!==o.iridescenceTexture){const t=o.iridescenceTexture;r.setIridescenceTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getIridescenceTextureInfo(),t)}if(void 0!==o.iridescenceThicknessTexture){const t=o.iridescenceThicknessTexture;r.setIridescenceThicknessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getIridescenceThicknessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(et);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[et]={};if(n.getIridescenceFactor()>0&&(i.iridescenceFactor=n.getIridescenceFactor()),1.3!==n.getIridescenceIOR()&&(i.iridescenceIor=n.getIridescenceIOR()),100!==n.getIridescenceThicknessMinimum()&&(i.iridescenceThicknessMinimum=n.getIridescenceThicknessMinimum()),400!==n.getIridescenceThicknessMaximum()&&(i.iridescenceThicknessMaximum=n.getIridescenceThicknessMaximum()),n.getIridescenceTexture()){const t=n.getIridescenceTexture(),s=n.getIridescenceTextureInfo();i.iridescenceTexture=e.createTextureInfoDef(t,s)}if(n.getIridescenceThicknessTexture()){const t=n.getIridescenceThicknessTexture(),s=n.getIridescenceThicknessTextureInfo();i.iridescenceThicknessTexture=e.createTextureInfoDef(t,s)}}}),this}}tt.EXTENSION_NAME=et;const{R:st,G:nt,B:rt,A:ot}=d;class it extends e{init(){this.extensionName=_,this.propertyType=\"PBRSpecularGlossiness\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{diffuseFactor:[1,1,1,1],diffuseTexture:null,diffuseTextureInfo:new x(this.graph,\"diffuseTextureInfo\"),specularFactor:[1,1,1],glossinessFactor:1,specularGlossinessTexture:null,specularGlossinessTextureInfo:new x(this.graph,\"specularGlossinessTextureInfo\")})}getDiffuseFactor(){return this.get(\"diffuseFactor\")}setDiffuseFactor(e){return this.set(\"diffuseFactor\",e)}getDiffuseHex(){return p.factorToHex(this.getDiffuseFactor())}setDiffuseHex(e){const t=this.getDiffuseFactor().slice();return this.setDiffuseFactor(p.hexToFactor(e,t))}getDiffuseTexture(){return this.getRef(\"diffuseTexture\")}getDiffuseTextureInfo(){return this.getRef(\"diffuseTexture\")?this.getRef(\"diffuseTextureInfo\"):null}setDiffuseTexture(e){return this.setRef(\"diffuseTexture\",e,{channels:st|nt|rt|ot,isColor:!0})}getSpecularFactor(){return this.get(\"specularFactor\")}setSpecularFactor(e){return this.set(\"specularFactor\",e)}getGlossinessFactor(){return this.get(\"glossinessFactor\")}setGlossinessFactor(e){return this.set(\"glossinessFactor\",e)}getSpecularGlossinessTexture(){return this.getRef(\"specularGlossinessTexture\")}getSpecularGlossinessTextureInfo(){return this.getRef(\"specularGlossinessTexture\")?this.getRef(\"specularGlossinessTextureInfo\"):null}setSpecularGlossinessTexture(e){return this.setRef(\"specularGlossinessTexture\",e,{channels:st|nt|rt|ot})}}it.EXTENSION_NAME=_;const at=_;class ct extends s{constructor(...e){super(...e),this.extensionName=at}createPBRSpecularGlossiness(){return new it(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[at]){const r=this.createPBRSpecularGlossiness();e.materials[n].setExtension(at,r);const o=t.extensions[at];if(void 0!==o.diffuseFactor&&r.setDiffuseFactor(o.diffuseFactor),void 0!==o.specularFactor&&r.setSpecularFactor(o.specularFactor),void 0!==o.glossinessFactor&&r.setGlossinessFactor(o.glossinessFactor),void 0!==o.diffuseTexture){const t=o.diffuseTexture;r.setDiffuseTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getDiffuseTextureInfo(),t)}if(void 0!==o.specularGlossinessTexture){const t=o.specularGlossinessTexture;r.setSpecularGlossinessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSpecularGlossinessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(at);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[at]={diffuseFactor:n.getDiffuseFactor(),specularFactor:n.getSpecularFactor(),glossinessFactor:n.getGlossinessFactor()};if(n.getDiffuseTexture()){const t=n.getDiffuseTexture(),s=n.getDiffuseTextureInfo();i.diffuseTexture=e.createTextureInfoDef(t,s)}if(n.getSpecularGlossinessTexture()){const t=n.getSpecularGlossinessTexture(),s=n.getSpecularGlossinessTextureInfo();i.specularGlossinessTexture=e.createTextureInfoDef(t,s)}}}),this}}ct.EXTENSION_NAME=at;const{R:ut,G:lt,B:ht,A:ft}=d;class gt extends e{init(){this.extensionName=w,this.propertyType=\"Sheen\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{sheenColorFactor:[0,0,0],sheenColorTexture:null,sheenColorTextureInfo:new x(this.graph,\"sheenColorTextureInfo\"),sheenRoughnessFactor:0,sheenRoughnessTexture:null,sheenRoughnessTextureInfo:new x(this.graph,\"sheenRoughnessTextureInfo\")})}getSheenColorFactor(){return this.get(\"sheenColorFactor\")}getSheenColorHex(){return p.factorToHex(this.getSheenColorFactor())}setSheenColorFactor(e){return this.set(\"sheenColorFactor\",e)}setSheenColorHex(e){const t=this.getSheenColorFactor().slice();return this.set(\"sheenColorFactor\",p.hexToFactor(e,t))}getSheenColorTexture(){return this.getRef(\"sheenColorTexture\")}getSheenColorTextureInfo(){return this.getRef(\"sheenColorTexture\")?this.getRef(\"sheenColorTextureInfo\"):null}setSheenColorTexture(e){return this.setRef(\"sheenColorTexture\",e,{channels:ut|lt|ht,isColor:!0})}getSheenRoughnessFactor(){return this.get(\"sheenRoughnessFactor\")}setSheenRoughnessFactor(e){return this.set(\"sheenRoughnessFactor\",e)}getSheenRoughnessTexture(){return this.getRef(\"sheenRoughnessTexture\")}getSheenRoughnessTextureInfo(){return this.getRef(\"sheenRoughnessTexture\")?this.getRef(\"sheenRoughnessTextureInfo\"):null}setSheenRoughnessTexture(e){return this.setRef(\"sheenRoughnessTexture\",e,{channels:ft})}}gt.EXTENSION_NAME=w;const pt=w;class xt extends s{constructor(...e){super(...e),this.extensionName=pt}createSheen(){return new gt(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[pt]){const r=this.createSheen();e.materials[n].setExtension(pt,r);const o=t.extensions[pt];if(void 0!==o.sheenColorFactor&&r.setSheenColorFactor(o.sheenColorFactor),void 0!==o.sheenRoughnessFactor&&r.setSheenRoughnessFactor(o.sheenRoughnessFactor),void 0!==o.sheenColorTexture){const t=o.sheenColorTexture;r.setSheenColorTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSheenColorTextureInfo(),t)}if(void 0!==o.sheenRoughnessTexture){const t=o.sheenRoughnessTexture;r.setSheenRoughnessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSheenRoughnessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(pt);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[pt]={sheenColorFactor:n.getSheenColorFactor(),sheenRoughnessFactor:n.getSheenRoughnessFactor()};if(n.getSheenColorTexture()){const t=n.getSheenColorTexture(),s=n.getSheenColorTextureInfo();i.sheenColorTexture=e.createTextureInfoDef(t,s)}if(n.getSheenRoughnessTexture()){const t=n.getSheenRoughnessTexture(),s=n.getSheenRoughnessTextureInfo();i.sheenRoughnessTexture=e.createTextureInfoDef(t,s)}}}),this}}xt.EXTENSION_NAME=pt;const{R:dt,G:Tt,B:mt,A:Et}=d;class It extends e{init(){this.extensionName=D,this.propertyType=\"Specular\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{specularFactor:1,specularTexture:null,specularTextureInfo:new x(this.graph,\"specularTextureInfo\"),specularColorFactor:[1,1,1],specularColorTexture:null,specularColorTextureInfo:new x(this.graph,\"specularColorTextureInfo\")})}getSpecularFactor(){return this.get(\"specularFactor\")}setSpecularFactor(e){return this.set(\"specularFactor\",e)}getSpecularColorFactor(){return this.get(\"specularColorFactor\")}setSpecularColorFactor(e){return this.set(\"specularColorFactor\",e)}getSpecularColorHex(){return p.factorToHex(this.getSpecularColorFactor())}setSpecularColorHex(e){const t=this.getSpecularColorFactor().slice();return this.set(\"specularColorFactor\",p.hexToFactor(e,t))}getSpecularTexture(){return this.getRef(\"specularTexture\")}getSpecularTextureInfo(){return this.getRef(\"specularTexture\")?this.getRef(\"specularTextureInfo\"):null}setSpecularTexture(e){return this.setRef(\"specularTexture\",e,{channels:Et})}getSpecularColorTexture(){return this.getRef(\"specularColorTexture\")}getSpecularColorTextureInfo(){return this.getRef(\"specularColorTexture\")?this.getRef(\"specularColorTextureInfo\"):null}setSpecularColorTexture(e){return this.setRef(\"specularColorTexture\",e,{channels:dt|Tt|mt,isColor:!0})}}It.EXTENSION_NAME=D;const Nt=D;class Rt extends s{constructor(...e){super(...e),this.extensionName=Nt}createSpecular(){return new It(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Nt]){const r=this.createSpecular();e.materials[n].setExtension(Nt,r);const o=t.extensions[Nt];if(void 0!==o.specularFactor&&r.setSpecularFactor(o.specularFactor),void 0!==o.specularColorFactor&&r.setSpecularColorFactor(o.specularColorFactor),void 0!==o.specularTexture){const t=o.specularTexture;r.setSpecularTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSpecularTextureInfo(),t)}if(void 0!==o.specularColorTexture){const t=o.specularColorTexture;r.setSpecularColorTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getSpecularColorTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Nt);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Nt]={};if(1!==n.getSpecularFactor()&&(i.specularFactor=n.getSpecularFactor()),l.eq(n.getSpecularColorFactor(),[1,1,1])||(i.specularColorFactor=n.getSpecularColorFactor()),n.getSpecularTexture()){const t=n.getSpecularTexture(),s=n.getSpecularTextureInfo();i.specularTexture=e.createTextureInfoDef(t,s)}if(n.getSpecularColorTexture()){const t=n.getSpecularColorTexture(),s=n.getSpecularColorTextureInfo();i.specularColorTexture=e.createTextureInfoDef(t,s)}}}),this}}Rt.EXTENSION_NAME=Nt;const{R:yt}=d;class At extends e{init(){this.extensionName=b,this.propertyType=\"Transmission\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{transmissionFactor:0,transmissionTexture:null,transmissionTextureInfo:new x(this.graph,\"transmissionTextureInfo\")})}getTransmissionFactor(){return this.get(\"transmissionFactor\")}setTransmissionFactor(e){return this.set(\"transmissionFactor\",e)}getTransmissionTexture(){return this.getRef(\"transmissionTexture\")}getTransmissionTextureInfo(){return this.getRef(\"transmissionTexture\")?this.getRef(\"transmissionTextureInfo\"):null}setTransmissionTexture(e){return this.setRef(\"transmissionTexture\",e,{channels:yt})}}At.EXTENSION_NAME=b;const St=b;class Ct extends s{constructor(...e){super(...e),this.extensionName=St}createTransmission(){return new At(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[St]){const r=this.createTransmission();e.materials[n].setExtension(St,r);const o=t.extensions[St];if(void 0!==o.transmissionFactor&&r.setTransmissionFactor(o.transmissionFactor),void 0!==o.transmissionTexture){const t=o.transmissionTexture;r.setTransmissionTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getTransmissionTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(St);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[St]={transmissionFactor:n.getTransmissionFactor()};if(n.getTransmissionTexture()){const t=n.getTransmissionTexture(),s=n.getTransmissionTextureInfo();i.transmissionTexture=e.createTextureInfoDef(t,s)}}}),this}}Ct.EXTENSION_NAME=St;class Mt extends e{init(){this.extensionName=F,this.propertyType=\"Unlit\",this.parentTypes=[t.MATERIAL]}}Mt.EXTENSION_NAME=F;const Ot=F;class _t extends s{constructor(...e){super(...e),this.extensionName=Ot}createUnlit(){return new Mt(this.document.getGraph())}read(e){return(e.jsonDoc.json.materials||[]).forEach((t,s)=>{t.extensions&&t.extensions[Ot]&&e.materials[s].setExtension(Ot,this.createUnlit())}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{if(s.getExtension(Ot)){const n=e.materialIndexMap.get(s),r=t.json.materials[n];r.extensions=r.extensions||{},r.extensions[Ot]={}}}),this}}_t.EXTENSION_NAME=Ot;class wt extends e{init(){this.extensionName=v,this.propertyType=\"Mapping\",this.parentTypes=[\"MappingList\"]}getDefaults(){return Object.assign(super.getDefaults(),{material:null,variants:[]})}getMaterial(){return this.getRef(\"material\")}setMaterial(e){return this.setRef(\"material\",e)}addVariant(e){return this.addRef(\"variants\",e)}removeVariant(e){return this.removeRef(\"variants\",e)}listVariants(){return this.listRefs(\"variants\")}}wt.EXTENSION_NAME=v;class Dt extends e{init(){this.extensionName=v,this.propertyType=\"MappingList\",this.parentTypes=[t.PRIMITIVE]}getDefaults(){return Object.assign(super.getDefaults(),{mappings:[]})}addMapping(e){return this.addRef(\"mappings\",e)}removeMapping(e){return this.removeRef(\"mappings\",e)}listMappings(){return this.listRefs(\"mappings\")}}Dt.EXTENSION_NAME=v;class bt extends e{init(){this.extensionName=v,this.propertyType=\"Variant\",this.parentTypes=[\"MappingList\"]}}bt.EXTENSION_NAME=v;const Ft=v;class jt extends s{constructor(...e){super(...e),this.extensionName=Ft}createMappingList(){return new Dt(this.document.getGraph())}createVariant(e=\"\"){return new bt(this.document.getGraph(),e)}createMapping(){return new wt(this.document.getGraph())}listVariants(){return Array.from(this.properties).filter(e=>e instanceof bt)}read(e){const t=e.jsonDoc;if(!t.json.extensions||!t.json.extensions[Ft])return this;const s=(t.json.extensions[Ft].variants||[]).map(e=>this.createVariant().setName(e.name||\"\"));return(t.json.meshes||[]).forEach((t,n)=>{const r=e.meshes[n];(t.primitives||[]).forEach((t,n)=>{if(!t.extensions||!t.extensions[Ft])return;const o=this.createMappingList(),i=t.extensions[Ft];for(const t of i.mappings){const n=this.createMapping();void 0!==t.material&&n.setMaterial(e.materials[t.material]);for(const e of t.variants||[])n.addVariant(s[e]);o.addMapping(n)}r.listPrimitives()[n].setExtension(Ft,o)})}),this}write(e){const t=e.jsonDoc,s=this.listVariants();if(!s.length)return this;const n=[],r=new Map;for(const t of s)r.set(t,n.length),n.push(e.createPropertyDef(t));for(const t of this.document.getRoot().listMeshes()){const s=e.meshIndexMap.get(t);t.listPrimitives().forEach((t,n)=>{const o=t.getExtension(Ft);if(!o)return;const i=e.jsonDoc.json.meshes[s].primitives[n],a=o.listMappings().map(t=>{const s=e.createPropertyDef(t),n=t.getMaterial();return n&&(s.material=e.materialIndexMap.get(n)),s.variants=t.listVariants().map(e=>r.get(e)),s});i.extensions=i.extensions||{},i.extensions[Ft]={mappings:a}})}return t.json.extensions=t.json.extensions||{},t.json.extensions[Ft]={variants:n},this}}jt.EXTENSION_NAME=Ft;const{G:vt}=d;class kt extends e{init(){this.extensionName=j,this.propertyType=\"Volume\",this.parentTypes=[t.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{thicknessFactor:0,thicknessTexture:null,thicknessTextureInfo:new x(this.graph,\"thicknessTexture\"),attenuationDistance:Infinity,attenuationColor:[1,1,1]})}getThicknessFactor(){return this.get(\"thicknessFactor\")}setThicknessFactor(e){return this.set(\"thicknessFactor\",e)}getThicknessTexture(){return this.getRef(\"thicknessTexture\")}getThicknessTextureInfo(){return this.getRef(\"thicknessTexture\")?this.getRef(\"thicknessTextureInfo\"):null}setThicknessTexture(e){return this.setRef(\"thicknessTexture\",e,{channels:vt})}getAttenuationDistance(){return this.get(\"attenuationDistance\")}setAttenuationDistance(e){return this.set(\"attenuationDistance\",e)}getAttenuationColor(){return this.get(\"attenuationColor\")}setAttenuationColor(e){return this.set(\"attenuationColor\",e)}getAttenuationColorHex(){return p.factorToHex(this.getAttenuationColor())}setAttenuationColorHex(e){const t=this.getAttenuationColor().slice();return this.set(\"attenuationColor\",p.hexToFactor(e,t))}}kt.EXTENSION_NAME=j;const Bt=j;class Gt extends s{constructor(...e){super(...e),this.extensionName=Bt}createVolume(){return new kt(this.document.getGraph())}read(e){const t=e.jsonDoc,s=t.json.textures||[];return(t.json.materials||[]).forEach((t,n)=>{if(t.extensions&&t.extensions[Bt]){const r=this.createVolume();e.materials[n].setExtension(Bt,r);const o=t.extensions[Bt];if(void 0!==o.thicknessFactor&&r.setThicknessFactor(o.thicknessFactor),void 0!==o.attenuationDistance&&r.setAttenuationDistance(o.attenuationDistance),void 0!==o.attenuationColor&&r.setAttenuationColor(o.attenuationColor),void 0!==o.thicknessTexture){const t=o.thicknessTexture;r.setThicknessTexture(e.textures[s[t.index].source]),e.setTextureInfo(r.getThicknessTextureInfo(),t)}}}),this}write(e){const t=e.jsonDoc;return this.document.getRoot().listMaterials().forEach(s=>{const n=s.getExtension(Bt);if(n){const r=e.materialIndexMap.get(s),o=t.json.materials[r];o.extensions=o.extensions||{};const i=o.extensions[Bt]={};if(n.getThicknessFactor()>0&&(i.thicknessFactor=n.getThicknessFactor()),Number.isFinite(n.getAttenuationDistance())&&(i.attenuationDistance=n.getAttenuationDistance()),l.eq(n.getAttenuationColor(),[1,1,1])||(i.attenuationColor=n.getAttenuationColor()),n.getThicknessTexture()){const t=n.getThicknessTexture(),s=n.getThicknessTextureInfo();i.thicknessTexture=e.createTextureInfoDef(t,s)}}}),this}}Gt.EXTENSION_NAME=Bt;const Lt=\"KHR_mesh_quantization\";class Ut extends s{constructor(...e){super(...e),this.extensionName=Lt}read(e){return this}write(e){return this}}Ut.EXTENSION_NAME=Lt;const Vt=\"KHR_texture_basisu\";class Pt{match(e){return 171===e[0]&&75===e[1]&&84===e[2]&&88===e[3]&&32===e[4]&&50===e[5]&&48===e[6]&&187===e[7]&&13===e[8]&&10===e[9]&&26===e[10]&&10===e[11]}getSize(e){const t=T(e);return[t.pixelWidth,t.pixelHeight]}getChannels(e){const t=T(e).dataFormatDescriptor[0];if(t.colorModel===m)return 2===t.samples.length&&15==(15&t.samples[1].channelType)?4:3;if(t.colorModel===E)return 3==(15&t.samples[0].channelType)?4:3;throw new Error(`Unexpected KTX2 colorModel, \"${t.colorModel}\".`)}getVRAMByteLength(e){const t=T(e),s=this.getChannels(e)>3;let n=0;for(let e=0;e{e.extensions&&e.extensions[Vt]&&(e.source=e.extensions[Vt].source)}),this}read(e){return this}write(e){const t=e.jsonDoc;return this.document.getRoot().listTextures().forEach(s=>{if(\"image/ktx2\"===s.getMimeType()){const n=e.imageIndexMap.get(s);t.json.textures.forEach(e=>{e.source===n&&(e.extensions=e.extensions||{},e.extensions[Vt]={source:e.source},delete e.source)})}}),this}}Xt.EXTENSION_NAME=Vt;class Ht extends e{init(){this.extensionName=k,this.propertyType=\"Transform\",this.parentTypes=[t.TEXTURE_INFO]}getDefaults(){return Object.assign(super.getDefaults(),{offset:[0,0],rotation:0,scale:[1,1],texCoord:null})}getOffset(){return this.get(\"offset\")}setOffset(e){return this.set(\"offset\",e)}getRotation(){return this.get(\"rotation\")}setRotation(e){return this.set(\"rotation\",e)}getScale(){return this.get(\"scale\")}setScale(e){return this.set(\"scale\",e)}getTexCoord(){return this.get(\"texCoord\")}setTexCoord(e){return this.set(\"texCoord\",e)}}Ht.EXTENSION_NAME=k;const zt=k;class $t extends s{constructor(...e){super(...e),this.extensionName=zt}createTransform(){return new Ht(this.document.getGraph())}read(e){for(const[t,s]of Array.from(e.textureInfos.entries())){if(!s.extensions||!s.extensions[zt])continue;const e=this.createTransform(),n=s.extensions[zt];void 0!==n.offset&&e.setOffset(n.offset),void 0!==n.rotation&&e.setRotation(n.rotation),void 0!==n.scale&&e.setScale(n.scale),void 0!==n.texCoord&&e.setTexCoord(n.texCoord),t.setExtension(zt,e)}return this}write(e){const t=Array.from(e.textureInfoDefMap.entries());for(const[e,s]of t){const t=e.getExtension(zt);if(!t)continue;s.extensions=s.extensions||{};const n={},r=l.eq;r(t.getOffset(),[0,0])||(n.offset=t.getOffset()),0!==t.getRotation()&&(n.rotation=t.getRotation()),r(t.getScale(),[1,1])||(n.scale=t.getScale()),null!=t.getTexCoord()&&(n.texCoord=t.getTexCoord()),s.extensions[zt]=n}return this}}$t.EXTENSION_NAME=zt;const qt=[t.ROOT,t.SCENE,t.NODE,t.MESH,t.MATERIAL,t.TEXTURE,t.ANIMATION];class Kt extends e{init(){this.extensionName=B,this.propertyType=\"Packet\",this.parentTypes=qt}getDefaults(){return Object.assign(super.getDefaults(),{context:{},properties:{}})}getContext(){return this.get(\"context\")}setContext(e){return this.set(\"context\",P({},e))}listProperties(){return Object.keys(this.get(\"properties\"))}getProperty(e){const t=this.get(\"properties\");return e in t?t[e]:null}setProperty(e,t){this._assertContext(e);const s=P({},this.get(\"properties\"));return t?s[e]=t:delete s[e],this.set(\"properties\",s)}toJSONLD(){return P({\"@context\":Yt(this.get(\"context\"))},Yt(this.get(\"properties\")))}fromJSONLD(e){const t=(e=Yt(e))[\"@context\"];return t&&this.set(\"context\",t),delete e[\"@context\"],this.set(\"properties\",e)}_assertContext(e){if(!(e.split(\":\")[0]in this.get(\"context\")))throw new Error(`${B}: Missing context for term, \"${e}\".`)}}function Yt(e){return JSON.parse(JSON.stringify(e))}Kt.EXTENSION_NAME=B;const Qt=B;class Wt extends s{constructor(...e){super(...e),this.extensionName=Qt}createPacket(){return new Kt(this.document.getGraph())}listPackets(){return Array.from(this.properties)}read(e){var t;const s=null==(t=e.jsonDoc.json.extensions)?void 0:t[Qt];if(!s||!s.packets)return this;const n=e.jsonDoc.json,r=this.document.getRoot(),o=s.packets.map(e=>this.createPacket().fromJSONLD(e)),i=[[n.asset],n.scenes,n.nodes,n.meshes,n.materials,n.images,n.animations],a=[[r],r.listScenes(),r.listNodes(),r.listMeshes(),r.listMaterials(),r.listTextures(),r.listAnimations()];for(let e=0;e0&&(s.extensions=s.extensions||{},s.extensions[Qt]={packets:n}),this}}Wt.EXTENSION_NAME=Qt;const Jt=[Oe,be,Ge,He,qe,Qe,tt,ct,Rt,xt,Ct,_t,jt,Gt,Ut,Xt,$t,Wt],Zt=[V,ne,ie,le,...Jt];export{Zt as ALL_EXTENSIONS,ke as Anisotropy,Pe as Clearcoat,V as EXTMeshGPUInstancing,ne as EXTMeshoptCompression,ie as EXTTextureAVIF,le as EXTTextureWebP,ze as EmissiveStrength,G as INSTANCE_ATTRIBUTE,Ke as IOR,L as InstancedMesh,Ze as Iridescence,Oe as KHRDracoMeshCompression,be as KHRLightsPunctual,Ge as KHRMaterialsAnisotropy,He as KHRMaterialsClearcoat,qe as KHRMaterialsEmissiveStrength,Qe as KHRMaterialsIOR,tt as KHRMaterialsIridescence,ct as KHRMaterialsPBRSpecularGlossiness,xt as KHRMaterialsSheen,Rt as KHRMaterialsSpecular,Ct as KHRMaterialsTransmission,_t as KHRMaterialsUnlit,jt as KHRMaterialsVariants,Gt as KHRMaterialsVolume,Ut as KHRMeshQuantization,Jt as KHRONOS_EXTENSIONS,Xt as KHRTextureBasisu,$t as KHRTextureTransform,Wt as KHRXMP,we as Light,wt as Mapping,Dt as MappingList,it as PBRSpecularGlossiness,Kt as Packet,gt as Sheen,It as Specular,Ht as Transform,At as Transmission,Mt as Unlit,bt as Variant,kt as Volume};\n//# sourceMappingURL=extensions.modern.js.map\n","/* prettier-ignore */\r\nexport const defMatrix = [\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n ]\r\n","\r\n/** transform for attribute as specifiend in 3mf format\r\n * \r\n * When objects need to be transformed for rotation, scaling, or translation purposes, \r\n * row-major affine 3D matrices (4x4) are used. The matrix SHOULD NOT be singular or nearly singular.\r\n * Transforms are of the form, where only the first 3 column values are specified. \r\n * The last column is never provided, and has the fixed values 0.0, 0.0, 0.0, 1.0. \r\n * When specified as an attribute value, \r\n * matrices have the form \"m00 m01 m02 m10 m11 m12 m20 m21 m22 m30 m31 m32\" \r\n * where each value is a decimal number of arbitrary precision.\r\n * \r\n * @param {mat4} matrix\r\n * @return string tarnsform attribute value\r\n*/\r\nexport const matrix2str = m=>{\r\n let str = ''\r\n for(let i=0; i<16; i++){\r\n if(i % 4 == 3) continue\r\n if(i>0) str += ' '\r\n str += m[i] || 0\r\n }\r\n return str\r\n}","import { defMatrix } from './defMatrix.js'\r\nimport { matrix2str } from './matrix2str.js'\r\n/**\r\n * \r\n * @param {string} id - must start with 1, can not be zero by spec\r\n * @param {mat4} matrix \r\n * @returns \r\n */\r\nexport const makeItem = (id = 1, matrix = defMatrix) =>\r\n ` \\n`\r\n","export const toDate3mf = d => (d ? d.toISOString().substring(0, 10) : '')\r\n","import { toDate3mf } from './toDate3mf.js'\r\n\r\n/**\r\n * @typedef Header\r\n * @prop {'micron'|'millimeter'|'centimeter'|'inch'|'foot'|'meter'} unit\r\n * @prop {string} [title]\r\n * @prop {string} [author]\r\n * @prop {string} [description]\r\n * @prop {string} [application]\r\n * @prop {string} [creationDate]\r\n * @prop {string} [license]\r\n * @prop {string} [modificationDate] \r\n * \r\n * \r\n * @param {Array} out \r\n * @param {Header} param1 \r\n */\r\nexport function pushHeader(out,{\r\n unit = 'millimeter',\r\n title = 'jscad model',\r\n author = '',\r\n description = '',\r\n application = 'jscad',\r\n creationDate = new Date(),\r\n license = '',\r\n modificationDate,\r\n}={}) {\r\n out.push(\r\n `\r\n\r\n 1\r\n ${title}\r\n ${author}\r\n ${description || title}\r\n \r\n ${license}\r\n \r\n ${toDate3mf(creationDate)}\r\n ${toDate3mf(modificationDate || creationDate)}\r\n ${application}\r\n `,\r\n )\r\n}\r\n","import {defMatrix} from './defMatrix.js'\r\nimport {matrix2str} from './matrix2str.js'\r\n\r\n/**\r\n * \r\n * @param {Array} out \r\n * @param {string} id \r\n * @param {Array} children \r\n * @param {string} name \r\n */\r\nexport function pushObjectWithComponents(out, id, children, name) {\r\n out.push(`\\n`)\r\n out.push(` \\n`)\r\n children.forEach(\r\n ({objectID, transform}) => {addComp(out, objectID, transform)})\r\n out.push(` \\n`)\r\n out.push(`\\n`)\r\n}\r\n\r\n/**\r\n * \r\n * @param {*} out \r\n * @param {*} id - must start with 1, can not be zero by spec \r\n * @param {*} matrix \r\n */\r\nconst addComp = (out, id = 1, matrix = defMatrix) => {\r\n out.push(\r\n ` \\n`)\r\n}\r\n","/**\r\n *\r\n * @param {Arrray} out\r\n * @param {string} id\r\n * @param {Float32Array} vertices\r\n * @param {Uint32Array} indices\r\n * @param {number} precision\r\n * @param {string} [name]\r\n * @returns\r\n */\r\nexport function pushObjectWithMesh(\r\n out, id, vertices, indices, precision, name) {\r\n out.push(` \r\n \r\n \r\n`)\r\n\r\n for (let i = 0; i < vertices.length; i += 3) {\r\n out.push(` \\n`)\r\n }\r\n\r\n out.push(` \r\n \r\n`)\r\n\r\n for (let i = 0; i < indices.length; i += 3) {\r\n out.push(` \\n`)\r\n }\r\n\r\n\r\n out.push(` \r\n \r\n \r\n`)\r\n\r\n return out\r\n}","\r\n/** File that describes content types inside a 3mf */\r\nexport const fileForContentTypes = {\r\n name:'[Content_Types].xml',\r\n content: `\r\n\r\n\r\n\r\n\r\n`\r\n}\r\n\r\n","// this implementation exports to 3mf by filling array of strings and doing join\r\n// at the encoding tests for large files have shown significant speedup related\r\n// to using string concatenation\r\nimport { makeItem } from './src/makeItem.js'\r\nimport { pushHeader } from './src/pushHeader.js'\r\nimport { pushObjectWithComponents } from './src/pushObjectComponent.js'\r\nimport { pushObjectWithMesh } from './src/pushObjectMesh.js'\r\n\r\nexport * from './src/staticFiles.js'\r\n\r\n/**\r\n * @typedef Mesh3MF\r\n * @prop {string} id\r\n * @prop {Float32Array} vertices\r\n * @prop {Uint32Array} indices\r\n * @prop {string} [name]\r\n *\r\n * @typedef Mesh3MFSimpleExt\r\n * @prop {mat4} transform\r\n *\r\n * @typedef {Mesh3MF & Mesh3MFSimpleExt} Mesh3MFSimple\r\n *\r\n * @typedef Component3MF\r\n * @prop {string} id\r\n * @prop {string} name\r\n * @prop {Array} children\r\n *\r\n * @typedef Child3MF\r\n * @prop {string} objectID\r\n * @prop {mat4} transform\r\n *\r\n * @typedef To3MF\r\n * @prop {Array} meshes - manually declare meshes\r\n * @prop {Array} [components] - components can combine items\r\n * @prop {Array} items - output items, each pointing to component or mesh with objectID\r\n * @prop {number} precision\r\n * @prop {import('./src/pushHeader.js').Header} header\r\n */\r\n\r\n/**\r\n * @param {To3MF} options\r\n * @returns string\r\n */\r\nexport function to3dmodel({ meshes = [], components = [], items = [], precision = 17, header }) {\r\n // items to be placed on the scene (build section of 3mf)\r\n const out = []\r\n\r\n // tag is opened here\r\n pushHeader(out, header)\r\n\r\n // #region resources\r\n out.push(' \\n')\r\n\r\n if (items.length == 0) {\r\n console.error('3MF empty build! Include items or simple.')\r\n }\r\n\r\n meshes.forEach(({ id, vertices, indices, name }) => pushObjectWithMesh(out, id, vertices, indices, precision, name))\r\n\r\n components.forEach(({ id, children, name }) => {\r\n pushObjectWithComponents(out, id, children, name)\r\n })\r\n\r\n out.push(' \\n')\r\n // #endregion\r\n\r\n out.push(`\\n`)\r\n items.forEach(({ objectID, transform }) => {\r\n out.push(makeItem(objectID, transform))\r\n })\r\n out.push('\\n')\r\n\r\n out.push('\\n') // model tag was opened in the pushHeader()\r\n\r\n return out.join('')\r\n}\r\n\r\n/** Simple export provided meshes that have transform attached to them and autocreate items and pass to to3dmodel.\r\n *\r\n * @param {Array} meshes\r\n * @param {import('./src/pushHeader.js').Header} header\r\n * @param {number} precision\r\n * @returns string\r\n */\r\nexport function to3dmodelSimple(meshes, header, precision) {\r\n const items = []\r\n meshes.forEach(({ id, transform }) => {\r\n items.push({ objectID: id, transform })\r\n })\r\n return to3dmodel({ meshes, items, header, precision })\r\n}\r\n\r\n/** File that describes file relationships inside a 3mf */\r\nexport class FileForRelThumbnail {\r\n constructor() {\r\n this.idSeq = 0\r\n this.lines = [\r\n ``,\r\n ``,\r\n ]\r\n }\r\n get name() {\r\n return '_rels/.rels'\r\n }\r\n /**\r\n *\r\n * @param {*} target file path\r\n * @param {*} xmlType xml schema url\r\n */\r\n addRel(target, xmlType) {\r\n this.lines.push(` `)\r\n }\r\n add3dModel(path) {\r\n this.addRel(path, 'http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel')\r\n }\r\n addThumbnail(path) {\r\n this.addRel(path, 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail')\r\n }\r\n\r\n get content() {\r\n return this.lines.join('\\n') + `\\n`\r\n }\r\n}\r\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nexport function fromValues(m00, m01, m10, m11) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nexport function set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nexport function adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nexport function LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2x3 Matrix\n * @module mat2d\n * @description\n * A mat2d contains six elements defined as:\n *
\n * [a, b,\n *  c, d,\n *  tx, ty]\n * 
\n * This is a short form for the 3x3 matrix:\n *
\n * [a, b, 0,\n *  c, d, 0,\n *  tx, ty, 1]\n * 
\n * The last column is ignored so the array is shorter and operations are faster.\n */\n\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(6);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[4] = 0;\n out[5] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Create a new mat2d with the given values\n *\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} A new mat2d\n */\n\nexport function fromValues(a, b, c, d, tx, ty) {\n var out = new glMatrix.ARRAY_TYPE(6);\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Set the components of a mat2d to the given values\n *\n * @param {mat2d} out the receiving matrix\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} out\n */\n\nexport function set(out, a, b, c, d, tx, ty) {\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nexport function invert(out, a) {\n var aa = a[0],\n ab = a[1],\n ac = a[2],\n ad = a[3];\n var atx = a[4],\n aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n return a[0] * a[3] - a[1] * a[2];\n}\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n out[4] = a0 * b4 + a2 * b5 + a4;\n out[5] = a1 * b4 + a3 * b5 + a5;\n return out;\n}\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nexport function rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\n\nexport function scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\n\nexport function translate(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = a0 * v0 + a2 * v1 + a4;\n out[5] = a1 * v0 + a3 * v1 + a5;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2d} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat2d} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = v[0];\n out[5] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2d\n *\n * @param {ReadonlyMat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {ReadonlyMat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n}\n/**\n * Adds two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2d} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n return out;\n}\n/**\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2d} out the receiving vector\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2d} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n}\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat2d.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as mat3 from \"./mat3.js\";\nimport * as vec3 from \"./vec3.js\";\nimport * as vec4 from \"./vec4.js\";\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nexport function setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nexport function getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > glMatrix.EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nexport function getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nexport function multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nexport function rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nexport function calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nexport function ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nexport function pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport function slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > glMatrix.EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nexport function random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = glMatrix.RANDOM();\n var u2 = glMatrix.RANDOM();\n var u3 = glMatrix.RANDOM();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nexport function invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nexport function fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nexport function fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nexport var fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nexport var copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nexport var set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nexport var add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nexport var scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nexport var lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport var length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nexport var normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport var equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nexport var rotationTo = function () {\n var tmpvec3 = vec3.create();\n var xUnitVec3 = vec3.fromValues(1, 0, 0);\n var yUnitVec3 = vec3.fromValues(0, 1, 0);\n return function (out, a, b) {\n var dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.len(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nexport var sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nexport var setAxes = function () {\n var matr = mat3.create();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();","import * as glMatrix from \"./common.js\";\nimport * as quat from \"./quat.js\";\nimport * as mat4 from \"./mat4.js\";\n/**\n * Dual Quaternion
\n * Format: [real, dual]
\n * Quaternion format: XYZW
\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.
\n * @module quat2\n */\n\n/**\n * Creates a new identity dual quat\n *\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n */\n\nexport function create() {\n var dq = new glMatrix.ARRAY_TYPE(8);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n dq[0] = 0;\n dq[1] = 0;\n dq[2] = 0;\n dq[4] = 0;\n dq[5] = 0;\n dq[6] = 0;\n dq[7] = 0;\n }\n\n dq[3] = 1;\n return dq;\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat2} a dual quaternion to clone\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function clone(a) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = a[0];\n dq[1] = a[1];\n dq[2] = a[2];\n dq[3] = a[3];\n dq[4] = a[4];\n dq[5] = a[5];\n dq[6] = a[6];\n dq[7] = a[7];\n return dq;\n}\n/**\n * Creates a new dual quat initialized with the given values\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n dq[4] = x2;\n dq[5] = y2;\n dq[6] = z2;\n dq[7] = w2;\n return dq;\n}\n/**\n * Creates a new dual quat from the given values (quat and translation)\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component (translation)\n * @param {Number} y2 Y component (translation)\n * @param {Number} z2 Z component (translation)\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nexport function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n var dq = new glMatrix.ARRAY_TYPE(8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n var ax = x2 * 0.5,\n ay = y2 * 0.5,\n az = z2 * 0.5;\n dq[4] = ax * w1 + ay * z1 - az * y1;\n dq[5] = ay * w1 + az * x1 - ax * z1;\n dq[6] = az * w1 + ax * y1 - ay * x1;\n dq[7] = -ax * x1 - ay * y1 - az * z1;\n return dq;\n}\n/**\n * Creates a dual quat from a quaternion and a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q a normalized quaternion\n * @param {ReadonlyVec3} t tranlation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromRotationTranslation(out, q, t) {\n var ax = t[0] * 0.5,\n ay = t[1] * 0.5,\n az = t[2] * 0.5,\n bx = q[0],\n by = q[1],\n bz = q[2],\n bw = q[3];\n out[0] = bx;\n out[1] = by;\n out[2] = bz;\n out[3] = bw;\n out[4] = ax * bw + ay * bz - az * by;\n out[5] = ay * bw + az * bx - ax * bz;\n out[6] = az * bw + ax * by - ay * bx;\n out[7] = -ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Creates a dual quat from a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyVec3} t translation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromTranslation(out, t) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = t[0] * 0.5;\n out[5] = t[1] * 0.5;\n out[6] = t[2] * 0.5;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a dual quat from a quaternion\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q the quaternion\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nexport function fromRotation(out, q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a new dual quat from a matrix (4x4)\n *\n * @param {quat2} out the dual quaternion\n * @param {ReadonlyMat4} a the matrix\n * @returns {quat2} dual quat receiving operation result\n * @function\n */\n\nexport function fromMat4(out, a) {\n //TODO Optimize this\n var outer = quat.create();\n mat4.getRotation(outer, a);\n var t = new glMatrix.ARRAY_TYPE(3);\n mat4.getTranslation(t, a);\n fromRotationTranslation(out, outer, t);\n return out;\n}\n/**\n * Copy the values from one dual quat to another\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the source dual quaternion\n * @returns {quat2} out\n * @function\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Set a dual quat to the identity dual quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @returns {quat2} out\n */\n\nexport function identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Set the components of a dual quat to the given values\n *\n * @param {quat2} out the receiving quaternion\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} out\n * @function\n */\n\nexport function set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n out[0] = x1;\n out[1] = y1;\n out[2] = z1;\n out[3] = w1;\n out[4] = x2;\n out[5] = y2;\n out[6] = z2;\n out[7] = w2;\n return out;\n}\n/**\n * Gets the real part of a dual quat\n * @param {quat} out real part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} real part\n */\n\nexport var getReal = quat.copy;\n/**\n * Gets the dual part of a dual quat\n * @param {quat} out dual part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} dual part\n */\n\nexport function getDual(out, a) {\n out[0] = a[4];\n out[1] = a[5];\n out[2] = a[6];\n out[3] = a[7];\n return out;\n}\n/**\n * Set the real component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the real part\n * @returns {quat2} out\n * @function\n */\n\nexport var setReal = quat.copy;\n/**\n * Set the dual component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the dual part\n * @returns {quat2} out\n * @function\n */\n\nexport function setDual(out, q) {\n out[4] = q[0];\n out[5] = q[1];\n out[6] = q[2];\n out[7] = q[3];\n return out;\n}\n/**\n * Gets the translation of a normalized dual quat\n * @param {vec3} out translation\n * @param {ReadonlyQuat2} a Dual Quaternion to be decomposed\n * @return {vec3} translation\n */\n\nexport function getTranslation(out, a) {\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3];\n out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n return out;\n}\n/**\n * Translates a dual quat by the given vector\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {quat2} out\n */\n\nexport function translate(out, a, v) {\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3],\n bx1 = v[0] * 0.5,\n by1 = v[1] * 0.5,\n bz1 = v[2] * 0.5,\n ax2 = a[4],\n ay2 = a[5],\n az2 = a[6],\n aw2 = a[7];\n out[0] = ax1;\n out[1] = ay1;\n out[2] = az1;\n out[3] = aw1;\n out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n return out;\n}\n/**\n * Rotates a dual quat around the X axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateX(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateX(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Y axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateY(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateY(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Z axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nexport function rotateZ(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n quat.rotateZ(out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (a * q)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @returns {quat2} out\n */\n\nexport function rotateByQuatAppend(out, a, q) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n ax = a[4];\n ay = a[5];\n az = a[6];\n aw = a[7];\n out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (q * a)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @returns {quat2} out\n */\n\nexport function rotateByQuatPrepend(out, q, a) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n bx = a[0],\n by = a[1],\n bz = a[2],\n bw = a[3];\n out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n bx = a[4];\n by = a[5];\n bz = a[6];\n bw = a[7];\n out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n return out;\n}\n/**\n * Rotates a dual quat around a given axis. Does the normalisation automatically\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @param {Number} rad how far the rotation should be\n * @returns {quat2} out\n */\n\nexport function rotateAroundAxis(out, a, axis, rad) {\n //Special case for rad = 0\n if (Math.abs(rad) < glMatrix.EPSILON) {\n return copy(out, a);\n }\n\n var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n rad = rad * 0.5;\n var s = Math.sin(rad);\n var bx = s * axis[0] / axisLength;\n var by = s * axis[1] / axisLength;\n var bz = s * axis[2] / axisLength;\n var bw = Math.cos(rad);\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3];\n out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n out[4] = ax * bw + aw * bx + ay * bz - az * by;\n out[5] = ay * bw + aw * by + az * bx - ax * bz;\n out[6] = az * bw + aw * bz + ax * by - ay * bx;\n out[7] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Adds two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n * @function\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n return out;\n}\n/**\n * Multiplies two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n */\n\nexport function multiply(out, a, b) {\n var ax0 = a[0],\n ay0 = a[1],\n az0 = a[2],\n aw0 = a[3],\n bx1 = b[4],\n by1 = b[5],\n bz1 = b[6],\n bw1 = b[7],\n ax1 = a[4],\n ay1 = a[5],\n az1 = a[6],\n aw1 = a[7],\n bx0 = b[0],\n by0 = b[1],\n bz0 = b[2],\n bw0 = b[3];\n out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n return out;\n}\n/**\n * Alias for {@link quat2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Scales a dual quat by a scalar number\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the dual quat to scale\n * @param {Number} b amount to scale the dual quat by\n * @returns {quat2} out\n * @function\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n return out;\n}\n/**\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\n *\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nexport var dot = quat.dot;\n/**\n * Performs a linear interpolation between two dual quats's\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat2} out\n */\n\nexport function lerp(out, a, b, t) {\n var mt = 1 - t;\n if (dot(a, b) < 0) t = -t;\n out[0] = a[0] * mt + b[0] * t;\n out[1] = a[1] * mt + b[1] * t;\n out[2] = a[2] * mt + b[2] * t;\n out[3] = a[3] * mt + b[3] * t;\n out[4] = a[4] * mt + b[4] * t;\n out[5] = a[5] * mt + b[5] * t;\n out[6] = a[6] * mt + b[6] * t;\n out[7] = a[7] * mt + b[7] * t;\n return out;\n}\n/**\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quat to calculate inverse of\n * @returns {quat2} out\n */\n\nexport function invert(out, a) {\n var sqlen = squaredLength(a);\n out[0] = -a[0] / sqlen;\n out[1] = -a[1] / sqlen;\n out[2] = -a[2] / sqlen;\n out[3] = a[3] / sqlen;\n out[4] = -a[4] / sqlen;\n out[5] = -a[5] / sqlen;\n out[6] = -a[6] / sqlen;\n out[7] = a[7] / sqlen;\n return out;\n}\n/**\n * Calculates the conjugate of a dual quat\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat2} a quat to calculate conjugate of\n * @returns {quat2} out\n */\n\nexport function conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n out[4] = -a[4];\n out[5] = -a[5];\n out[6] = -a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Calculates the length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate length of\n * @returns {Number} length of a\n * @function\n */\n\nexport var length = quat.length;\n/**\n * Alias for {@link quat2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Calculates the squared length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nexport var squaredLength = quat.squaredLength;\n/**\n * Alias for {@link quat2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Normalize a dual quat\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quaternion to normalize\n * @returns {quat2} out\n * @function\n */\n\nexport function normalize(out, a) {\n var magnitude = squaredLength(a);\n\n if (magnitude > 0) {\n magnitude = Math.sqrt(magnitude);\n var a0 = a[0] / magnitude;\n var a1 = a[1] / magnitude;\n var a2 = a[2] / magnitude;\n var a3 = a[3] / magnitude;\n var b0 = a[4];\n var b1 = a[5];\n var b2 = a[6];\n var b3 = a[7];\n var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = (b0 - a0 * a_dot_b) / magnitude;\n out[5] = (b1 - a1 * a_dot_b) / magnitude;\n out[6] = (b2 - a2 * a_dot_b) / magnitude;\n out[7] = (b3 - a3 * a_dot_b) / magnitude;\n }\n\n return out;\n}\n/**\n * Returns a string representation of a dual quatenion\n *\n * @param {ReadonlyQuat2} a dual quaternion to represent as a string\n * @returns {String} string representation of the dual quat\n */\n\nexport function str(a) {\n return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n}\n/**\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat2} a the first dual quaternion.\n * @param {ReadonlyQuat2} b the second dual quaternion.\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n}\n/**\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat2} a the first dual quat.\n * @param {ReadonlyQuat2} b the second dual quat.\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n}","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","\nvar Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nasync function(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import(\"module\");var require=createRequire(import.meta.url)}var _ManifoldInitialized=false;Module.setup=function(){if(_ManifoldInitialized)return;_ManifoldInitialized=true;function toVec(vec,list,f=(x=>x)){if(list){for(let x of list){vec.push_back(f(x))}}return vec}function fromVec(vec,f=(x=>x)){const result=[];const size=vec.size();for(let i=0;ix)){const result=[];const nPoly=vec.size();for(let i=0;itoVec(new Module.Vector_vec2,poly,p=>{if(p instanceof Array)return{x:p[0],y:p[1]};return p}))}function disposePolygons(polygonsVec){for(let i=0;iresult.min[f]),max:[\"x\",\"y\"].map(f=>result.max[f])}};Module.CrossSection.prototype.offset=function(delta,joinType=\"Square\",miterLimit=2,circularSegments=0){return this._Offset(delta,joinTypeToInt(joinType),miterLimit,circularSegments)};Module.CrossSection.prototype.extrude=function(height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){scaleTop=vararg2vec2([scaleTop]);const man=Module._Extrude(this._ToPolygons(),height,nDivisions,twistDegrees,scaleTop);return center?man.translate([0,0,-height/2]):man};Module.CrossSection.prototype.revolve=function(circularSegments=0,revolveDegrees=360){return Module._Revolve(this._ToPolygons(),circularSegments,revolveDegrees)};Module.CrossSection.prototype.add=function(other){return this._add(cross(other))};Module.CrossSection.prototype.subtract=function(other){return this._subtract(cross(other))};Module.CrossSection.prototype.intersect=function(other){return this._intersect(cross(other))};Module.CrossSection.prototype.toPolygons=function(){const vec=this._ToPolygons();const result=vec2polygons(vec);vec.delete();return result};Module.Manifold.prototype.smoothOut=function(minSharpAngle=60,minSmoothness=0){return this._SmoothOut(minSharpAngle,minSmoothness)};Module.Manifold.prototype.warp=function(func){const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,\"float\");const y=getValue(vec3Ptr+4,\"float\");const z=getValue(vec3Ptr+8,\"float\");const vert=[x,y,z];func(vert);setValue(vec3Ptr,vert[0],\"float\");setValue(vec3Ptr+4,vert[1],\"float\");setValue(vec3Ptr+8,vert[2],\"float\")},\"vi\");const out=this._Warp(wasmFuncPtr);removeFunction(wasmFuncPtr);const status=out.status();if(status.value!==0){throw new Module.ManifoldError(status.value)}return out};Module.Manifold.prototype.calculateNormals=function(normalIdx,minSharpAngle=60){return this._CalculateNormals(normalIdx,minSharpAngle)};Module.Manifold.prototype.setProperties=function(numProp,func){const oldNumProp=this.numProp();const wasmFuncPtr=addFunction(function(newPtr,vec3Ptr,oldPtr){const newProp=[];for(let i=0;iresult.min[f]),max:[\"x\",\"y\",\"z\"].map(f=>result.max[f])}};class Mesh{constructor({numProp:numProp=3,triVerts:triVerts=new Uint32Array,vertProperties:vertProperties=new Float32Array,mergeFromVert:mergeFromVert,mergeToVert:mergeToVert,runIndex:runIndex,runOriginalID:runOriginalID,faceID:faceID,halfedgeTangent:halfedgeTangent,runTransform:runTransform}={}){this.numProp=numProp;this.triVerts=triVerts;this.vertProperties=vertProperties;this.mergeFromVert=mergeFromVert;this.mergeToVert=mergeToVert;this.runIndex=runIndex;this.runOriginalID=runOriginalID;this.faceID=faceID;this.halfedgeTangent=halfedgeTangent;this.runTransform=runTransform}get numTri(){return this.triVerts.length/3}get numVert(){return this.vertProperties.length/this.numProp}get numRun(){return this.runOriginalID.length}merge(){const{changed:changed,mesh:mesh}=Module._Merge(this);Object.assign(this,{...mesh});return changed}verts(tri){return this.triVerts.subarray(3*tri,3*(tri+1))}position(vert){return this.vertProperties.subarray(numProp*vert,numProp*vert+3)}extras(vert){return this.vertProperties.subarray(numProp*vert+3,numProp*(vert+1))}tangent(halfedge){return this.halfedgeTangent.subarray(4*halfedge,4*(halfedge+1))}transform(run){const mat4=new Array(16);for(const col of[0,1,2,3]){for(const row of[0,1,2]){mat4[4*col+row]=this.runTransform[12*run+3*col+row]}}mat4[15]=1;return mat4}}Module.Mesh=Mesh;Module.Manifold.prototype.getMesh=function(normalIdx=[0,0,0]){if(normalIdx instanceof Array)normalIdx={0:normalIdx[0],1:normalIdx[1],2:normalIdx[2]};return new Mesh(this._GetMeshJS(normalIdx))};Module.ManifoldError=function ManifoldError(code,...args){let message=\"Unknown error\";switch(code){case Module.status.NonFiniteVertex.value:message=\"Non-finite vertex\";break;case Module.status.NotManifold.value:message=\"Not manifold\";break;case Module.status.VertexOutOfBounds.value:message=\"Vertex index out of bounds\";break;case Module.status.PropertiesWrongLength.value:message=\"Properties have wrong length\";break;case Module.status.MissingPositionProperties.value:message=\"Less than three properties\";break;case Module.status.MergeVectorsDifferentLengths.value:message=\"Merge vectors have different lengths\";break;case Module.status.MergeIndexOutOfBounds.value:message=\"Merge index out of bounds\";break;case Module.status.TransformWrongLength.value:message=\"Transform vector has wrong length\";break;case Module.status.RunIndexWrongLength.value:message=\"Run index vector has wrong length\";break;case Module.status.FaceIDWrongLength.value:message=\"Face ID vector has wrong length\";case Module.status.InvalidConstruction.value:message=\"Manifold constructed with invalid parameters\"}const base=Error.apply(this,[message,...args]);base.name=this.name=\"ManifoldError\";this.message=base.message;this.stack=base.stack;this.code=code};Module.ManifoldError.prototype=Object.create(Error.prototype,{constructor:{value:Module.ManifoldError,writable:true,configurable:true}});Module.CrossSection=function(polygons,fillRule=\"Positive\"){const polygonsVec=polygons2vec(polygons);const cs=new CrossSectionCtor(polygonsVec,fillRuleToInt(fillRule));disposePolygons(polygonsVec);return cs};Module.CrossSection.ofPolygons=function(polygons,fillRule=\"Positive\"){return new Module.CrossSection(polygons,fillRule)};Module.CrossSection.square=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1};else if(typeof args[0]==\"number\")size={x:args[0],y:args[0]};else size=vararg2vec2(args);const center=args[1]||false;return Module._Square(size,center)};Module.CrossSection.circle=function(radius,circularSegments=0){return Module._Circle(radius,circularSegments)};function crossSectionBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_crossSection;for(const cs of args)v.push_back(cross(cs));const result=Module[\"_crossSection\"+name](v);v.delete();return result}}Module.CrossSection.compose=crossSectionBatchbool(\"Compose\");Module.CrossSection.union=crossSectionBatchbool(\"UnionN\");Module.CrossSection.difference=crossSectionBatchbool(\"DifferenceN\");Module.CrossSection.intersection=crossSectionBatchbool(\"IntersectionN\");function pushVec2(vec,ps){toVec(vec,ps,p=>{if(p instanceof Array)return{x:p[0],y:p[1]};return p})}Module.CrossSection.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec2;for(const cs of args){if(cs instanceof CrossSectionCtor){Module._crossSectionCollectVertices(pts,cs)}else if(cs instanceof Array&&cs.length==2&&typeof cs[0]==\"number\"){pts.push_back({x:cs[0],y:cs[1]})}else if(cs.x){pts.push_back(cs)}else{const wrap=cs[0].length==2&&typeof cs[0][0]==\"number\"||cs[0].x;const polys=wrap?[cs]:cs;for(const poly of polys)pushVec2(pts,poly)}}const result=Module._crossSectionHullPoints(pts);pts.delete();return result};Module.CrossSection.prototype=Object.create(CrossSectionCtor.prototype);Object.defineProperty(Module.CrossSection,Symbol.hasInstance,{get:()=>t=>t instanceof CrossSectionCtor});const ManifoldCtor=Module.Manifold;Module.Manifold=function(mesh){const manifold=new ManifoldCtor(mesh);const status=manifold.status();if(status.value!==0){throw new Module.ManifoldError(status.value)}return manifold};Module.Manifold.ofMesh=function(mesh){return new Module.Manifold(mesh)};Module.Manifold.tetrahedron=function(){return Module._Tetrahedron()};Module.Manifold.cube=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1,z:1};else if(typeof args[0]==\"number\")size={x:args[0],y:args[0],z:args[0]};else size=vararg2vec3(args);const center=args[1]||false;return Module._Cube(size,center)};Module.Manifold.cylinder=function(height,radiusLow,radiusHigh=-1,circularSegments=0,center=false){return Module._Cylinder(height,radiusLow,radiusHigh,circularSegments,center)};Module.Manifold.sphere=function(radius,circularSegments=0){return Module._Sphere(radius,circularSegments)};Module.Manifold.smooth=function(mesh,sharpenedEdges=[]){const sharp=new Module.Vector_smoothness;toVec(sharp,sharpenedEdges);const result=Module._Smooth(mesh,sharp);sharp.delete();return result};Module.Manifold.extrude=function(polygons,height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,\"Positive\");return cs.extrude(height,nDivisions,twistDegrees,scaleTop,center)};Module.Manifold.revolve=function(polygons,circularSegments=0,revolveDegrees=360){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,\"Positive\");return cs.revolve(circularSegments,revolveDegrees)};Module.Manifold.reserveIDs=function(n){return Module._ReserveIDs(n)};Module.Manifold.compose=function(manifolds){const vec=new Module.Vector_manifold;toVec(vec,manifolds);const result=Module._manifoldCompose(vec);vec.delete();return result};function manifoldBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_manifold;for(const m of args)v.push_back(m);const result=Module[\"_manifold\"+name+\"N\"](v);v.delete();return result}}Module.Manifold.union=manifoldBatchbool(\"Union\");Module.Manifold.difference=manifoldBatchbool(\"Difference\");Module.Manifold.intersection=manifoldBatchbool(\"Intersection\");Module.Manifold.levelSet=function(sdf,bounds,edgeLength,level=0,precision=-1){const bounds2={min:{x:bounds.min[0],y:bounds.min[1],z:bounds.min[2]},max:{x:bounds.max[0],y:bounds.max[1],z:bounds.max[2]}};const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,\"float\");const y=getValue(vec3Ptr+4,\"float\");const z=getValue(vec3Ptr+8,\"float\");const vert=[x,y,z];return sdf(vert)},\"fi\");const out=Module._LevelSet(wasmFuncPtr,bounds2,edgeLength,level,precision);removeFunction(wasmFuncPtr);return out};function pushVec3(vec,ps){toVec(vec,ps,p=>{if(p instanceof Array)return{x:p[0],y:p[1],z:p[2]};return p})}Module.Manifold.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec3;for(const m of args){if(m instanceof ManifoldCtor){Module._manifoldCollectVertices(pts,m)}else if(m instanceof Array&&m.length==3&&typeof m[0]==\"number\"){pts.push_back({x:m[0],y:m[1],z:m[2]})}else if(m.x){pts.push_back(m)}else{pushVec3(pts,m)}}const result=Module._manifoldHullPoints(pts);pts.delete();return result};Module.Manifold.prototype=Object.create(ManifoldCtor.prototype);Object.defineProperty(Module.Manifold,Symbol.hasInstance,{get:()=>t=>t instanceof ManifoldCtor});Module.triangulate=function(polygons,precision=-1){const polygonsVec=polygons2vec(polygons);const result=fromVec(Module._Triangulate(polygonsVec,precision),x=>[x[0],x[1],x[2]]);disposePolygons(polygonsVec);return result}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var nodePath=require(\"path\");scriptDirectory=require(\"url\").fileURLToPath(new URL(\"./\",import.meta.url));read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:\"utf8\",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module[\"thisProgram\"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\\\/g,\"/\")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{if(isFileURI(url)){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null);return}fetch(url,{credentials:\"same-origin\"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+\" : \"+response.url))}).then(onload,onerror)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith(\"file://\");function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"manifold.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"manifold.wasm\",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch==\"function\"){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\"Ma\"];updateMemoryViews();wasmTable=wasmExports[\"Pa\"];addOnInit(wasmExports[\"Na\"]);removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":return HEAP8[ptr];case\"i8\":return HEAP8[ptr];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":abort(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];case\"*\":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module[\"noExitRuntime\"]||true;function setValue(ptr,value,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":HEAP8[ptr]=value;break;case\"i8\":HEAP8[ptr]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":abort(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;case\"*\":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort(\"no exception to throw\")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var __abort_js=()=>{abort(\"\")};var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function readPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType[\"fromWireType\"](getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,fromWireType:ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError(`Missing field: \"${fieldName}\"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this[\"fromWireType\"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,\"name\",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle[\"delete\"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistent public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,\"i\");var f=Module[\"dynCall_\"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([\", \"]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};function usesDestructorStack(argTypes){for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns||isAsync?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf(\"(\");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith(\"@@\")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module[\"count_emval_handles\"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:\"emscripten::val\",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this[\"fromWireType\"](HEAP8[pointer])}:function(pointer){return this[\"fromWireType\"](HEAPU8[pointer])};case 2:return signed?function(pointer){return this[\"fromWireType\"](HEAP16[pointer>>1])}:function(pointer){return this[\"fromWireType\"](HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this[\"fromWireType\"](HEAP32[pointer>>2])}:function(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,\"enum\");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var embindRepr=v=>{if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var __embind_register_optional=(rawOptionalType,rawType)=>{__embind_register_emval(rawOptionalType)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value==\"string\")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType[\"toWireType\"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");return emval_returnValue(returnType,destructorsRef,handle)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var __emval_equals=(first,second)=>{first=Emval.toValue(first);second=Emval.toValue(second);return first==second};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],\"parameter \"+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\\n`;var offset=0;var argsList=[];if(kind===0){argsList.push(\"obj\")}var params=[\"retType\"];var args=[retType];for(var i=0;it.name).join(\", \")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](arg);return Emval.toHandle(v)};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");var randomFillSync=crypto_module[\"randomFillSync\"];if(randomFillSync){return view=>crypto_module[\"randomFillSync\"](view)}var randomBytes=crypto_module[\"randomBytes\"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort(\"initRandomDevice\")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes(\"EOF\"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[\".\",\"..\"];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\"\";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file \"${url}\" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\"ErrnoError\";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):\"\"};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={\"%c\":\"%a %b %d %H:%M:%S %Y\",\"%D\":\"%m/%d/%y\",\"%F\":\"%Y-%m-%d\",\"%h\":\"%b\",\"%r\":\"%I:%M:%S %p\",\"%R\":\"%H:%M\",\"%T\":\"%H:%M:%S\",\"%x\":\"%m/%d/%y\",\"%X\":\"%H:%M:%S\",\"%Ec\":\"%c\",\"%EC\":\"%C\",\"%Ex\":\"%m/%d/%y\",\"%EX\":\"%H:%M:%S\",\"%Ey\":\"%y\",\"%EY\":\"%Y\",\"%Od\":\"%d\",\"%Oe\":\"%e\",\"%OH\":\"%H\",\"%OI\":\"%I\",\"%Om\":\"%m\",\"%OM\":\"%M\",\"%OS\":\"%S\",\"%Ou\":\"%u\",\"%OU\":\"%U\",\"%OV\":\"%V\",\"%Ow\":\"%w\",\"%OW\":\"%W\",\"%Oy\":\"%y\"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_1[rule])}var WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var MONTHS=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];function leadingSomething(value,digits,character){var str=typeof value==\"number\"?value.toString():value||\"\";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={\"%a\":date=>WEEKDAYS[date.tm_wday].substring(0,3),\"%A\":date=>WEEKDAYS[date.tm_wday],\"%b\":date=>MONTHS[date.tm_mon].substring(0,3),\"%B\":date=>MONTHS[date.tm_mon],\"%C\":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},\"%d\":date=>leadingNulls(date.tm_mday,2),\"%e\":date=>leadingSomething(date.tm_mday,2,\" \"),\"%g\":date=>getWeekBasedYear(date).toString().substring(2),\"%G\":getWeekBasedYear,\"%H\":date=>leadingNulls(date.tm_hour,2),\"%I\":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},\"%j\":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),\"%m\":date=>leadingNulls(date.tm_mon+1,2),\"%M\":date=>leadingNulls(date.tm_min,2),\"%n\":()=>\"\\n\",\"%p\":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return\"AM\"}return\"PM\"},\"%S\":date=>leadingNulls(date.tm_sec,2),\"%t\":()=>\"\\t\",\"%u\":date=>date.tm_wday||7,\"%U\":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},\"%V\":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},\"%w\":date=>date.tm_wday,\"%W\":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},\"%y\":date=>(date.tm_year+1900).toString().substring(2),\"%Y\":date=>date.tm_year+1900,\"%z\":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?\"+\":\"-\")+String(\"0000\"+off).slice(-4)},\"%Z\":date=>date.tm_zone,\"%%\":()=>\"%\"};pattern=pattern.replace(/%%/g,\"\\0\\0\");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,\"g\"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\\0\\0/g,\"%\");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var sigToWasmTypes=sig=>{var typeNames={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i{if(typeof WebAssembly.Function==\"function\"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports[\"f\"];return wrappedFunc};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var removeFunction=index=>{functionsInTableMap.delete(getWasmTableEntry(index));setWasmTableEntry(index,null);freeTableIndexes.push(index)};InternalError=Module[\"InternalError\"]=class InternalError extends Error{constructor(message){super(message);this.name=\"InternalError\"}};embind_init_charCodes();BindingError=Module[\"BindingError\"]=class BindingError extends Error{constructor(message){super(message);this.name=\"BindingError\"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={F:___cxa_begin_catch,J:___cxa_end_catch,a:___cxa_find_matching_catch_2,k:___cxa_find_matching_catch_3,na:___cxa_rethrow,h:___cxa_throw,ma:___cxa_uncaught_exceptions,e:___resumeException,fa:__abort_js,Da:__embind_finalize_value_object,ea:__embind_register_bigint,Aa:__embind_register_bool,z:__embind_register_class,y:__embind_register_class_constructor,j:__embind_register_class_function,za:__embind_register_emval,S:__embind_register_enum,u:__embind_register_enum_value,$:__embind_register_float,o:__embind_register_function,C:__embind_register_integer,t:__embind_register_memory_view,D:__embind_register_optional,_:__embind_register_std_string,R:__embind_register_std_wstring,G:__embind_register_value_object,Ea:__embind_register_value_object_field,Ca:__embind_register_void,pa:__emscripten_memcpy_js,Ia:__emval_as,va:__emval_call_method,Ka:__emval_decref,Ha:__emval_equals,Ba:__emval_get_method_caller,Ja:__emval_get_property,Ga:__emval_incref,M:__emval_new_cstring,aa:__emval_new_object,ja:__emval_run_destructors,La:__emval_set_property,I:__emval_take_value,oa:_emscripten_resize_heap,ha:_environ_get,ia:_environ_sizes_get,ka:_fd_close,la:_fd_read,ca:_fd_seek,V:_fd_write,sa:invoke_d,L:invoke_diii,w:invoke_diiiii,A:invoke_ff,P:invoke_fii,qa:invoke_fiif,T:invoke_fiii,q:invoke_i,c:invoke_ii,b:invoke_iii,m:invoke_iiii,l:invoke_iiiii,E:invoke_iiiiii,B:invoke_iiiiiii,U:invoke_iiiiiiii,O:invoke_iiiiiiiiiiii,da:invoke_iiij,ba:invoke_jiiii,i:invoke_v,g:invoke_vi,xa:invoke_vidi,f:invoke_vii,K:invoke_viiddi,Z:invoke_viidi,ya:invoke_viidiidid,s:invoke_viif,ua:invoke_viiff,ta:invoke_viifff,wa:invoke_viififi,d:invoke_viii,Q:invoke_viiif,Fa:invoke_viiifffi,n:invoke_viiii,x:invoke_viiiii,ra:invoke_viiiiid,Y:invoke_viiiiif,r:invoke_viiiiii,v:invoke_viiiiiii,W:invoke_viiiiiiiii,H:invoke_viiiiiiiiifiii,p:invoke_viiiiiiiiii,N:invoke_viiiiiiiiiiiiiii,X:invoke_viiiiiiiiiiiiiiiiii,ga:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"Na\"])();var ___getTypeName=a0=>(___getTypeName=wasmExports[\"Oa\"])(a0);var _free=a0=>(_free=wasmExports[\"Qa\"])(a0);var _malloc=a0=>(_malloc=wasmExports[\"Ra\"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports[\"Sa\"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports[\"Ta\"])(a0);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"Ua\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"Va\"])();var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports[\"Wa\"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports[\"Xa\"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports[\"Ya\"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports[\"Za\"])(a0);var dynCall_iiij=Module[\"dynCall_iiij\"]=(a0,a1,a2,a3,a4)=>(dynCall_iiij=Module[\"dynCall_iiij\"]=wasmExports[\"_a\"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module[\"dynCall_viijii\"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module[\"dynCall_viijii\"]=wasmExports[\"$a\"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module[\"dynCall_jiji\"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module[\"dynCall_jiji\"]=wasmExports[\"ab\"])(a0,a1,a2,a3,a4);var dynCall_jiiii=Module[\"dynCall_jiiii\"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module[\"dynCall_jiiii\"]=wasmExports[\"bb\"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module[\"dynCall_iiiiij\"]=wasmExports[\"cb\"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module[\"dynCall_iiiiijj\"]=wasmExports[\"db\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module[\"dynCall_iiiiiijj\"]=wasmExports[\"eb\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiifffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ff(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidi(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidiidid(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiddi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vidi(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viififi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viif(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiif(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiif(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiff(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viifff(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_d(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiid(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiif(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module[\"addFunction\"]=addFunction;Module[\"removeFunction\"]=removeFunction;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\n","// Copyright 2023 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Accessor, Extension, ExtensionProperty, GLTF, IProperty, PropertyType, ReaderContext, WriterContext} from '@gltf-transform/core';\n\nconst NAME = 'EXT_mesh_manifold';\nconst MERGE = 'MERGE';\n\ninterface IManifoldPrimitive extends IProperty {\n mergeIndices: Accessor;\n mergeValues: Accessor;\n indices: Accessor;\n runIndex: number[]|Uint32Array;\n}\n\ninterface ManifoldDef {\n manifoldPrimitive: GLTF.IMeshPrimitive;\n mergeIndices: number;\n mergeValues: number;\n}\n\nexport class ManifoldPrimitive extends ExtensionProperty {\n static EXTENSION_NAME = NAME;\n public declare extensionName: typeof NAME;\n public declare propertyType: 'ManifoldPrimitive';\n public declare parentTypes: [PropertyType.MESH];\n\n init() {\n ManifoldPrimitive.EXTENSION_NAME = NAME;\n this.propertyType = 'ManifoldPrimitive';\n this.parentTypes = [PropertyType.MESH];\n }\n\n getDefaults() {\n return Object.assign(\n super.getDefaults(),\n {manifoldPrimitive: null, mergeIndices: null, mergeValues: null});\n }\n\n getMergeIndices() {\n return this.getRef('mergeIndices');\n }\n\n getMergeValues() {\n return this.getRef('mergeValues');\n }\n\n setMerge(indicesAccessor: Accessor, valuesAccessor: Accessor) {\n if (indicesAccessor.getCount() !== valuesAccessor.getCount())\n throw new Error('merge vectors must be the same length.');\n this.setRef('mergeIndices', indicesAccessor);\n return this.setRef('mergeValues', valuesAccessor);\n }\n\n getRunIndex() {\n return this.get('runIndex');\n }\n\n setRunIndex(runIndex: number[]|Uint32Array) {\n return this.set('runIndex', runIndex);\n }\n\n setIndices(indices: Accessor) {\n return this.setRef('indices', indices);\n }\n\n getIndices() {\n return this.getRef('indices')!;\n }\n}\n\nexport class EXTManifold extends Extension {\n extensionName = NAME;\n prewriteTypes = [PropertyType.ACCESSOR];\n static EXTENSION_NAME = NAME;\n\n createManifoldPrimitive() {\n return new ManifoldPrimitive(this.document.getGraph());\n }\n\n read(context: ReaderContext) {\n const {json} = context.jsonDoc;\n const meshDefs = json.meshes || [];\n\n meshDefs.forEach((meshDef, meshIndex) => {\n if (!meshDef.extensions || !meshDef.extensions[NAME]) return;\n\n const mesh = context.meshes[meshIndex];\n const manifoldPrimitive = this.createManifoldPrimitive();\n mesh.setExtension(NAME, manifoldPrimitive);\n\n const manifoldDef = meshDef.extensions[NAME] as ManifoldDef;\n\n if (manifoldDef.manifoldPrimitive) {\n let count = 0;\n const runIndex = Array();\n runIndex.push(count);\n for (const primitive of mesh.listPrimitives()) {\n const indices = primitive.getIndices();\n if (!indices) {\n console.log('Skipping non-indexed primitive ', primitive.getName());\n continue;\n }\n count += indices.getCount();\n runIndex.push(count);\n }\n manifoldPrimitive.setRunIndex(runIndex);\n manifoldPrimitive.setIndices(\n context.accessors[manifoldDef.manifoldPrimitive.indices!]);\n }\n\n if (manifoldDef.mergeIndices != null && manifoldDef.mergeValues != null) {\n manifoldPrimitive.setMerge(\n context.accessors[manifoldDef.mergeIndices],\n context.accessors[manifoldDef.mergeValues]);\n }\n });\n\n return this;\n }\n\n prewrite(context: WriterContext) {\n this.document.getRoot().listMeshes().forEach((mesh) => {\n const manifoldPrimitive = mesh.getExtension(NAME) as ManifoldPrimitive;\n if (!manifoldPrimitive) return;\n\n const indices = manifoldPrimitive.getIndices();\n context.addAccessorToUsageGroup(\n indices, WriterContext.BufferViewUsage.ELEMENT_ARRAY_BUFFER);\n\n const mergeFrom = manifoldPrimitive.getMergeIndices();\n const mergeTo = manifoldPrimitive.getMergeValues();\n if (!mergeFrom || !mergeTo) return;\n\n context.addAccessorToUsageGroup(mergeFrom, MERGE);\n context.addAccessorToUsageGroup(mergeTo, MERGE);\n });\n return this;\n }\n\n write(context: WriterContext) {\n const {json} = context.jsonDoc;\n\n this.document.getRoot().listMeshes().forEach((mesh) => {\n const manifoldPrimitive = mesh.getExtension(NAME) as ManifoldPrimitive;\n if (!manifoldPrimitive) return;\n\n const meshIndex = context.meshIndexMap.get(mesh)!;\n const meshDef = json.meshes![meshIndex];\n\n const runIndex = manifoldPrimitive.getRunIndex();\n const numPrimitive = runIndex.length - 1;\n\n if (numPrimitive !== meshDef.primitives.length) {\n throw new Error(\n 'The number of primitives must be exactly one less than the length of runIndex.');\n }\n\n const mergeIndicesIndex =\n context.accessorIndexMap.get(manifoldPrimitive.getMergeIndices()!)!;\n const mergeValuesIndex =\n context.accessorIndexMap.get(manifoldPrimitive.getMergeValues()!)!;\n const mergeIndices = json.accessors![mergeIndicesIndex];\n const mergeValues = json.accessors![mergeValuesIndex];\n\n const existingPrimitive = meshDef.primitives[0];\n const primitive = {\n indices: context.accessorIndexMap.get(manifoldPrimitive.getIndices())!,\n mode: existingPrimitive.mode,\n attributes: {'POSITION': existingPrimitive.attributes['POSITION']}\n };\n\n const indices = json.accessors![primitive.indices];\n if (!indices) {\n return;\n }\n\n if (mergeIndices && mergeValues) {\n indices.sparse = {\n count: mergeIndices.count,\n indices: {\n bufferView: mergeIndices.bufferView!,\n byteOffset: mergeIndices.byteOffset,\n componentType: mergeIndices.componentType\n },\n values: {\n bufferView: mergeValues.bufferView!,\n byteOffset: mergeValues.byteOffset,\n }\n };\n }\n\n for (let i = 0; i < numPrimitive; ++i) {\n const accessor = json.accessors![meshDef.primitives[i].indices!];\n accessor.bufferView = indices.bufferView;\n accessor.byteOffset = indices.byteOffset! + 4 * runIndex[i];\n accessor.count = runIndex[i + 1] - runIndex[i];\n }\n\n meshDef.extensions = meshDef.extensions || {};\n meshDef.extensions[NAME] = {\n manifoldPrimitive: primitive,\n mergeIndices: mergeIndicesIndex,\n mergeValues: mergeValuesIndex\n };\n\n // Test the manifold primitive by replacing the material primitives\n // meshDef.primitives = [primitive];\n });\n\n return this;\n }\n}","// Copyright 2023 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Accessor, Document, Material, Mesh, Primitive, Texture, WebIO} from '@gltf-transform/core';\n\nimport {EXTManifold, ManifoldPrimitive} from './manifold-gltf';\nimport {Mesh as ManifoldMesh, MeshOptions} from './public/manifold-encapsulated-types';\n\nexport const attributeDefs = {\n 'POSITION': {type: Accessor.Type.VEC3, components: 3},\n 'NORMAL': {type: Accessor.Type.VEC3, components: 3},\n 'TANGENT': {type: Accessor.Type.VEC4, components: 4},\n 'TEXCOORD_0': {type: Accessor.Type.VEC2, components: 2},\n 'TEXCOORD_1': {type: Accessor.Type.VEC2, components: 2},\n 'COLOR_0': {type: Accessor.Type.VEC3, components: 3},\n 'JOINTS_0': {type: Accessor.Type.VEC4, components: 4},\n 'WEIGHTS_0': {type: Accessor.Type.VEC4, components: 4},\n 'SKIP_1': {type: null, components: 1},\n 'SKIP_2': {type: null, components: 2},\n 'SKIP_3': {type: null, components: 3},\n 'SKIP_4': {type: null, components: 4},\n};\n\nexport type Attribute = keyof(typeof attributeDefs);\n\nexport interface Properties {\n material: Material;\n attributes: Attribute[];\n}\n\n/**\n * Call this first to register the manifold extension so that readMesh and\n * writeMesh will work.\n */\nexport function setupIO(io: WebIO) {\n return io.registerExtensions([EXTManifold]);\n}\n\n/**\n * Read an input mesh into Manifold-compatible data structures, whether it\n * contains the EXT_mesh_manifold extension or not.\n *\n * @param mesh The Mesh to read.\n * @param attributes An array of attributes representing the order of desired\n * properties returned in the vertProperties array of the output mesh. If\n * omitted, this will be populated with the union of all attributes defined\n * in the primitives of the input mesh. If present, the first entry must be\n * 'POSITION', and any attributes in the primitives that are not included in\n * this list will be ignored, while those in the list but not defined in a\n * primitive will be populated with zeros.\n * @returns The returned mesh is suitable for initializing a Manifold or Mesh of\n * the Manifold library if desired. See Manifold documentation if you prefer\n * to use these GL arrays in a different library. The runProperties array\n * gives the Material and attributes list associated with each triangle run,\n * which in turn corresponds to a primitive of the input mesh. These\n * attributes are the intersection of the attributes present on the\n * primitive and those requested in the attributes input.\n */\nexport function readMesh(mesh: Mesh, attributes: Attribute[] = []):\n {mesh: MeshOptions, runProperties: Properties[]}|null {\n const primitives = mesh.listPrimitives();\n if (primitives.length === 0) {\n return null;\n }\n\n if (attributes.length === 0) {\n const attributeSet = new Set();\n for (const primitive of primitives) {\n const semantics = primitive.listSemantics() as Attribute[];\n for (const semantic of semantics) {\n attributeSet.add(semantic);\n }\n }\n let semantic: Attribute;\n for (semantic in attributeDefs) {\n if (attributeSet.has(semantic)) {\n attributes.push(semantic);\n attributeSet.delete(semantic);\n }\n }\n for (const semantic of attributeSet.keys()) {\n attributes.push(semantic);\n }\n }\n\n if (attributes.length < 1 || attributes[0] !== 'POSITION')\n throw new Error('First attribute must be \"POSITION\".');\n\n let numProp = 0;\n const attributeOffsets = attributes.map((numProp = 0, def => {\n const last = numProp;\n numProp += attributeDefs[def].components;\n return last;\n }));\n\n const manifoldPrimitive =\n mesh.getExtension('EXT_mesh_manifold') as ManifoldPrimitive;\n\n let vertPropArray = Array();\n let triVertArray = Array();\n const runIndexArray = [0];\n const mergeFromVertArray = Array();\n const mergeToVertArray = Array();\n const runProperties = Array();\n if (manifoldPrimitive != null) {\n const numVert = primitives[0].getAttribute('POSITION')!.getCount();\n const foundAttribute = attributes.map((a) => attributeDefs[a].type == null);\n vertPropArray = new Array(numProp * numVert);\n\n for (const primitive of primitives) {\n const indices = primitive.getIndices();\n if (!indices) {\n console.log('Skipping non-indexed primitive ', primitive.getName());\n continue;\n }\n\n const attributesIn = primitive.listSemantics() as Attribute[];\n\n attributes.forEach((attributeOut, idx) => {\n if (foundAttribute[idx]) {\n return;\n }\n for (const attributeIn of attributesIn) {\n if (attributeIn === attributeOut) {\n foundAttribute[idx] = true;\n const accessor = primitive.getAttribute(attributeIn)!;\n writeProperties(\n vertPropArray, accessor, numProp, attributeOffsets[idx]);\n }\n }\n });\n\n triVertArray = [...triVertArray, ...indices.getArray()!];\n runIndexArray.push(triVertArray.length);\n runProperties.push({\n material: primitive.getMaterial()!,\n attributes: attributesIn.filter(b => attributes.some(a => a == b))\n });\n }\n const mergeTriVert = manifoldPrimitive.getMergeIndices()?.getArray() ?? [];\n const mergeTo = manifoldPrimitive.getMergeValues()?.getArray() ?? [];\n const vert2merge = new Map();\n for (const [i, idx] of mergeTriVert.entries()) {\n vert2merge.set(triVertArray[idx], mergeTo[i]);\n }\n for (const [from, to] of vert2merge.entries()) {\n mergeFromVertArray.push(from);\n mergeToVertArray.push(to);\n }\n } else {\n for (const primitive of primitives) {\n const indices = primitive.getIndices();\n if (!indices) {\n console.log('Skipping non-indexed primitive ', primitive.getName());\n continue;\n }\n const numVert = vertPropArray.length / numProp;\n vertPropArray =\n [...vertPropArray, ...readPrimitive(primitive, numProp, attributes)];\n triVertArray =\n [...triVertArray, ...indices.getArray()!.map((i) => i + numVert)];\n runIndexArray.push(triVertArray.length);\n\n const attributesIn = primitive.listSemantics() as Attribute[];\n runProperties.push({\n material: primitive.getMaterial()!,\n attributes: attributesIn.filter(b => attributes.some(a => a == b))\n });\n }\n }\n const vertProperties = new Float32Array(vertPropArray);\n const triVerts = new Uint32Array(triVertArray);\n const runIndex = new Uint32Array(runIndexArray);\n const mergeFromVert = new Uint32Array(mergeFromVertArray);\n const mergeToVert = new Uint32Array(mergeToVertArray);\n\n const meshOut =\n {numProp, triVerts, vertProperties, runIndex, mergeFromVert, mergeToVert};\n\n return {mesh: meshOut, runProperties};\n}\n\n/**\n * Write a Manifold Mesh into a glTF Mesh object, using the EXT_mesh_manifold\n * extension to allow for lossless roundtrip of the manifold mesh through the\n * glTF file.\n *\n * @param doc The glTF Document to which this Mesh will be added.\n * @param manifoldMesh The Manifold Mesh to convert to glTF.\n * @param id2properties A map from originalID to Properties that include the\n * glTF Material and the set of attributes to output. All triangle runs with\n * the same originalID will be combined into a single output primitive. Any\n * originalIDs not found in the map will have the glTF default material and\n * no attributes beyond 'POSITION'. Each attributes array must correspond to\n * the manifoldMesh vertProperties, thus the first attribute must always be\n * 'POSITION'. Any properties that should not be output for a given\n * primitive must use the 'SKIP_*' attributes.\n * @returns The glTF Mesh to add to the Document.\n */\nexport function writeMesh(\n doc: Document, manifoldMesh: ManifoldMesh,\n id2properties: Map): Mesh {\n if (doc.getRoot().listBuffers().length === 0) {\n doc.createBuffer();\n }\n const buffer = doc.getRoot().listBuffers()[0];\n const manifoldExtension = doc.createExtension(EXTManifold);\n\n const mesh = doc.createMesh();\n const runIndex = Array();\n const attributeUnion = Array();\n const primitive2attributes = new Map();\n const numRun = manifoldMesh.runIndex.length - 1;\n let lastID = -1;\n for (let run = 0; run < numRun; ++run) {\n const id = manifoldMesh.runOriginalID[run];\n if (id == lastID) {\n continue;\n }\n lastID = id;\n runIndex.push(manifoldMesh.runIndex[run]);\n\n const indices = doc.createAccessor('primitive indices of ID ' + id)\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(new Uint32Array(1));\n const primitive = doc.createPrimitive().setIndices(indices);\n\n const properties = id2properties.get(id);\n if (properties) {\n const {material, attributes} = properties;\n if (attributes.length < 1 || attributes[0] !== 'POSITION')\n throw new Error('First attribute must be \"POSITION\".');\n\n primitive.setMaterial(material);\n primitive2attributes.set(primitive, attributes);\n\n properties.attributes.forEach((attribute, i) => {\n if (i >= attributeUnion.length) {\n attributeUnion.push(attribute);\n } else {\n const size = attributeDefs[attribute].components;\n const unionSize = attributeDefs[attributeUnion[i]].components;\n if (size != unionSize) {\n throw new Error(\n 'Attribute sizes do not correspond: ' + attribute + ' and ' +\n attributeUnion[i]);\n }\n if (attributeDefs[attributeUnion[i]].type == null) {\n attributeUnion[i] = attribute;\n }\n }\n });\n } else {\n primitive2attributes.set(primitive, ['POSITION']);\n }\n\n mesh.addPrimitive(primitive);\n }\n runIndex.push(manifoldMesh.runIndex[numRun]);\n\n const numVert = manifoldMesh.numVert;\n const numProp = manifoldMesh.numProp;\n let offset = 0;\n attributeUnion.forEach((attribute, aIdx) => {\n const def = attributeDefs[attribute];\n if (def == null)\n throw new Error(attribute + ' is not a recognized attribute.');\n\n if (def.type == null) {\n ++offset;\n return;\n }\n\n const n = def.components;\n if (offset + n > numProp) throw new Error('Too many attribute channels.');\n\n const array = new Float32Array(n * numVert);\n for (let v = 0; v < numVert; ++v) {\n for (let i = 0; i < n; ++i) {\n let x = manifoldMesh.vertProperties[numProp * v + offset + i];\n if (attribute == 'COLOR_0') {\n x = Math.max(0, Math.min(1, x));\n }\n array[n * v + i] = x;\n }\n }\n\n const accessor = doc.createAccessor(attribute)\n .setBuffer(buffer)\n .setType(def.type)\n .setArray(array);\n\n for (const primitive of mesh.listPrimitives()) {\n const attributes = primitive2attributes.get(primitive)!;\n if (attributes.length > aIdx &&\n attributeDefs[attributes[aIdx]].type != null) {\n primitive.setAttribute(attribute, accessor);\n }\n }\n offset += n;\n });\n\n const manifoldPrimitive = manifoldExtension.createManifoldPrimitive();\n mesh.setExtension('EXT_mesh_manifold', manifoldPrimitive);\n\n const indices = doc.createAccessor('manifold indices')\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(manifoldMesh.triVerts);\n manifoldPrimitive.setIndices(indices);\n manifoldPrimitive.setRunIndex(runIndex);\n\n const vert2merge = [...Array(manifoldMesh.numVert).keys()];\n const ind = Array();\n const val = Array();\n if (manifoldMesh.mergeFromVert && manifoldMesh.mergeToVert) {\n for (const [i, from] of manifoldMesh.mergeFromVert.entries()) {\n vert2merge[from] = manifoldMesh.mergeToVert[i];\n }\n\n for (const [i, vert] of manifoldMesh.triVerts.entries()) {\n const newVert = vert2merge[vert];\n if (vert !== newVert) {\n ind.push(i);\n val.push(newVert);\n }\n }\n }\n if (ind.length > 0) {\n const indicesAccessor = doc.createAccessor('merge from')\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(new Uint32Array(ind));\n const valuesAccessor = doc.createAccessor('merge to')\n .setBuffer(buffer)\n .setType(Accessor.Type.SCALAR)\n .setArray(new Uint32Array(val));\n manifoldPrimitive.setMerge(indicesAccessor, valuesAccessor);\n }\n\n return mesh;\n}\n\n/**\n * Helper function to dispose of a Mesh, useful when replacing an existing Mesh\n * with one from writeMesh.\n */\nexport function disposeMesh(mesh: Mesh) {\n if (!mesh) return;\n const primitives = mesh.listPrimitives();\n for (const primitive of primitives) {\n primitive.getIndices()?.dispose();\n for (const accessor of primitive.listAttributes()) {\n accessor.dispose();\n }\n }\n\n const manifoldPrimitive =\n mesh.getExtension('EXT_mesh_manifold') as ManifoldPrimitive;\n if (manifoldPrimitive) {\n manifoldPrimitive.getIndices()?.dispose();\n manifoldPrimitive.getMergeIndices()?.dispose();\n manifoldPrimitive.getMergeValues()?.dispose();\n }\n\n mesh.dispose();\n}\n\n/**\n * Helper function to download an image and apply it to the given texture.\n *\n * @param texture The texture to update\n * @param uri The location of the image to download\n */\nexport async function loadTexture(texture: Texture, uri: string) {\n const response = await fetch(uri);\n const blob = await response.blob();\n texture.setMimeType(blob.type);\n texture.setImage(new Uint8Array(await blob.arrayBuffer()));\n}\n\nfunction writeProperties(\n vertProperties: number[], accessor: Accessor, numProp: number,\n offset: number) {\n const array = accessor.getArray()!;\n const size = accessor.getElementSize();\n const numVert = accessor.getCount();\n for (let i = 0; i < numVert; ++i) {\n for (let j = 0; j < size; ++j) {\n vertProperties[numProp * i + offset + j] = array[i * size + j];\n }\n }\n}\n\nfunction readPrimitive(\n primitive: Primitive, numProp: number, attributes: Attribute[]) {\n const vertProperties: number[] = [];\n let offset = 0;\n for (const attribute of attributes) {\n const size = attributeDefs[attribute].components;\n if (attributeDefs[attribute].type == null) {\n offset += size;\n continue;\n }\n const accessor = primitive.getAttribute(attribute);\n if (accessor) {\n writeProperties(vertProperties, accessor, numProp, offset);\n }\n offset += size;\n }\n return vertProperties;\n}","// Copyright 2022 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Accessor, Animation, AnimationSampler, Document, mat4, Material, Mesh as GLTFMesh, Node, WebIO} from '@gltf-transform/core';\nimport {KHRMaterialsUnlit, KHRONOS_EXTENSIONS} from '@gltf-transform/extensions';\nimport {fileForContentTypes, FileForRelThumbnail, to3dmodel} from '@jscadui/3mf-export';\nimport {strToU8, Zippable, zipSync} from 'fflate'\nimport * as glMatrix from 'gl-matrix';\n\nimport Module, {CrossSection, Manifold, ManifoldToplevel, Mesh, Vec3} from './built/manifold';\nimport {Properties, setupIO, writeMesh} from './gltf-io';\nimport {GLTFMaterial, Quat} from './public/editor';\n\ninterface GlobalDefaults {\n roughness: number;\n metallic: number;\n baseColorFactor: [number, number, number];\n alpha: number;\n unlit: boolean;\n animationLength: number;\n animationMode: 'loop'|'ping-pong';\n}\n\ninterface WorkerStatic extends ManifoldToplevel {\n GLTFNode: typeof GLTFNode;\n show(manifold: Manifold): Manifold;\n only(manifold: Manifold): Manifold;\n setMaterial(manifold: Manifold, material: GLTFMaterial): Manifold;\n setMorphStart(manifold: Manifold, func: (v: Vec3) => void): void;\n setMorphEnd(manifold: Manifold, func: (v: Vec3) => void): void;\n cleanup(): void;\n}\n\nexport const module = await Module() as WorkerStatic;\nmodule.setup();\n\n// Faster on modern browsers than Float32Array\nglMatrix.glMatrix.setMatrixArrayType(Array);\n\nconst io = setupIO(new WebIO());\nio.registerExtensions(KHRONOS_EXTENSIONS);\n\n// manifold static methods (that return a new manifold)\nconst manifoldStaticFunctions = [\n 'cube', 'cylinder', 'sphere', 'tetrahedron', 'extrude', 'revolve', 'compose',\n 'union', 'difference', 'intersection', 'levelSet', 'smooth', 'ofMesh', 'hull'\n];\n// manifold member functions (that return a new manifold)\nconst manifoldMemberFunctions = [\n 'add',\n 'subtract',\n 'intersect',\n 'decompose',\n 'warp',\n 'transform',\n 'translate',\n 'rotate',\n 'scale',\n 'mirror',\n 'calculateCurvature',\n 'calculateNormals',\n 'smoothByNormals',\n 'smoothOut',\n 'refine',\n 'refineToLength',\n 'setProperties',\n 'asOriginal',\n 'trimByPlane',\n 'split',\n 'splitByPlane',\n 'slice',\n 'project',\n 'hull'\n];\n// CrossSection static methods (that return a new cross-section)\nconst crossSectionStaticFunctions = [\n 'square', 'circle', 'union', 'difference', 'intersection', 'compose',\n 'ofPolygons', 'hull'\n];\n// CrossSection member functions (that return a new cross-section)\nconst crossSectionMemberFunctions = [\n 'add', 'subtract', 'intersect', 'rectClip', 'decompose', 'transform',\n 'translate', 'rotate', 'scale', 'mirror', 'simplify', 'offset', 'hull'\n];\n// top level functions that construct a new manifold/mesh\nconst toplevelConstructors = ['show', 'only', 'setMaterial'];\nconst toplevel = [\n 'setMinCircularAngle', 'setMinCircularEdgeLength', 'setCircularSegments',\n 'getCircularSegments', 'resetToCircularDefaults', 'Mesh', 'GLTFNode',\n 'Manifold', 'CrossSection', 'setMorphStart', 'setMorphEnd'\n];\nconst exposedFunctions = toplevelConstructors.concat(toplevel);\n\n// Setup memory management, such that users don't have to care about\n// calling `delete` manually.\n// Note that this only fixes memory leak across different runs: the memory\n// will only be freed when the compilation finishes.\n\nconst memoryRegistry = new Array();\n\nfunction addMembers(\n className: string, methodNames: Array, areStatic: boolean) {\n //@ts-ignore\n const cls = module[className];\n const obj = areStatic ? cls : cls.prototype;\n for (const name of methodNames) {\n const originalFn = obj[name];\n obj[name] = function(...args: any) {\n //@ts-ignore\n const result = originalFn(...args);\n memoryRegistry.push(result);\n return result;\n };\n }\n}\n\naddMembers('Manifold', manifoldMemberFunctions, false);\naddMembers('Manifold', manifoldStaticFunctions, true);\naddMembers('CrossSection', crossSectionMemberFunctions, false);\naddMembers('CrossSection', crossSectionStaticFunctions, true);\n\nfor (const name of toplevelConstructors) {\n //@ts-ignore\n const originalFn = module[name];\n //@ts-ignore\n module[name] = function(...args: any) {\n const result = originalFn(...args);\n memoryRegistry.push(result);\n return result;\n };\n}\n\n// Debug setup to show source meshes\nlet ghost = false;\nconst shown = new Map();\nconst singles = new Map();\n\nconst FPS = 30;\n\nconst GLOBAL_DEFAULTS = {\n roughness: 0.2,\n metallic: 1,\n baseColorFactor: [1, 1, 0] as [number, number, number],\n alpha: 1,\n unlit: false,\n animationLength: 1,\n animationMode: 'loop'\n};\n\nconst SHOW = {\n baseColorFactor: [1, 0, 0],\n alpha: 0.25,\n roughness: 1,\n metallic: 0\n} as GLTFMaterial;\n\nconst GHOST = {\n baseColorFactor: [0.5, 0.5, 0.5],\n alpha: 0.25,\n roughness: 1,\n metallic: 0\n} as GLTFMaterial;\n\nconst nodes = new Array();\nconst id2material = new Map();\nconst materialCache = new Map();\nconst object2globalID = new Map();\nconst manifold2morph = new Map();\n// lib3mf doesn't like objectid=0\nlet nextGlobalID = 1;\nlet animation: Animation;\nlet timesAccessor: Accessor;\nlet weightsAccessor: Accessor;\nlet weightsSampler: AnimationSampler;\nlet hasAnimation: boolean;\n\nexport function cleanup() {\n for (const obj of memoryRegistry) {\n // decompose result is an array of manifolds\n if (obj instanceof Array)\n for (const elem of obj) elem.delete();\n else\n obj.delete();\n }\n memoryRegistry.length = 0;\n\n ghost = false;\n shown.clear();\n singles.clear();\n nodes.length = 0;\n id2material.clear();\n materialCache.clear();\n object2globalID.clear();\n manifold2morph.clear();\n nextGlobalID = 1;\n}\n\ninterface Morph {\n start?: (v: Vec3) => void;\n end?: (v: Vec3) => void;\n}\n\ninterface Mesh3MF {\n id: string;\n vertices: Float32Array;\n indices: Uint32Array;\n name?: string;\n}\n\ninterface Child3MF {\n objectID: string;\n transform?: mat4;\n}\n\ninterface Component3MF {\n id: string;\n children: Array;\n name?: string;\n}\n\ninterface Header {\n unit?: 'micron'|'millimeter'|'centimeter'|'inch'|'foot'|'meter';\n title?: string;\n author?: string;\n description?: string;\n application?: string;\n creationDate?: string;\n license?: string;\n modificationDate?: string;\n}\n\ninterface To3MF {\n meshes: Array;\n components: Array;\n items: Array;\n precision: number;\n header: Header;\n}\n\nclass GLTFNode {\n private _parent?: GLTFNode;\n manifold?: Manifold;\n translation?: Vec3|((t: number) => Vec3);\n rotation?: Vec3|((t: number) => Vec3);\n scale?: Vec3|((t: number) => Vec3);\n material?: GLTFMaterial;\n name?: string;\n\n constructor(parent?: GLTFNode) {\n this._parent = parent;\n nodes.push(this);\n }\n clone(parent?: GLTFNode) {\n const copy = {...this};\n copy._parent = parent;\n nodes.push(copy);\n return copy;\n }\n get parent() {\n return this._parent;\n }\n}\n\nmodule.GLTFNode = GLTFNode;\n\nconst globalDefaults = {...GLOBAL_DEFAULTS};\n\nmodule.setMaterial = (manifold: Manifold, material: GLTFMaterial): Manifold => {\n const out = manifold.asOriginal();\n id2material.set(out.originalID(), material);\n return out;\n};\n\nmodule.setMorphStart = (manifold: Manifold, func: (v: Vec3) => void): void => {\n const morph = manifold2morph.get(manifold);\n if (morph != null) {\n morph.start = func;\n } else {\n manifold2morph.set(manifold, {start: func});\n }\n};\n\nmodule.setMorphEnd = (manifold: Manifold, func: (v: Vec3) => void): void => {\n const morph = manifold2morph.get(manifold);\n if (morph != null) {\n morph.end = func;\n } else {\n manifold2morph.set(manifold, {end: func});\n }\n};\n\nfunction debug(manifold: Manifold, map: Map) {\n let result = manifold.asOriginal();\n map.set(result.originalID(), result.getMesh());\n return result;\n};\n\nmodule.show = (manifold) => {\n return debug(manifold, shown);\n};\n\nmodule.only = (manifold) => {\n ghost = true;\n return debug(manifold, singles);\n};\n\n// Swallow informational logs in testing framework\nfunction log(...args: any[]) {\n if (typeof self !== 'undefined' && self.console) {\n self.console.log(...args);\n }\n}\n\nfunction euler2quat(rotation: Vec3): Quat {\n const {quat} = glMatrix;\n const deg2rad = Math.PI / 180;\n const q = quat.create() as Quat;\n quat.rotateZ(q, q, deg2rad * rotation[2]);\n quat.rotateY(q, q, deg2rad * rotation[1]);\n quat.rotateX(q, q, deg2rad * rotation[0]);\n return q;\n}\n\nfunction addMotion(\n doc: Document, type: 'translation'|'rotation'|'scale', node: GLTFNode,\n out: Node): Vec3|null {\n const motion = node[type];\n if (motion == null) {\n return null;\n }\n if (typeof motion !== 'function') {\n return motion;\n }\n\n const nFrames = timesAccessor.getCount();\n const nEl = type == 'rotation' ? 4 : 3;\n const frames = new Float32Array(nEl * nFrames);\n for (let i = 0; i < nFrames; ++i) {\n const x = i / (nFrames - 1);\n const m = motion(\n globalDefaults.animationMode !== 'ping-pong' ?\n x :\n (1 - Math.cos(x * 2 * Math.PI)) / 2);\n frames.set(nEl === 4 ? euler2quat(m) : m, nEl * i);\n }\n\n const framesAccessor =\n doc.createAccessor(node.name + ' ' + type + ' frames')\n .setBuffer(doc.getRoot().listBuffers()[0])\n .setArray(frames)\n .setType(nEl === 4 ? Accessor.Type.VEC4 : Accessor.Type.VEC3);\n const sampler = doc.createAnimationSampler()\n .setInput(timesAccessor)\n .setOutput(framesAccessor)\n .setInterpolation('LINEAR');\n const channel = doc.createAnimationChannel()\n .setTargetPath(type)\n .setTargetNode(out)\n .setSampler(sampler);\n animation.addSampler(sampler);\n animation.addChannel(channel);\n hasAnimation = true;\n return motion(0);\n}\n\nfunction setMorph(doc: Document, node: Node, manifold: Manifold) {\n if (manifold2morph.has(manifold)) {\n const channel = doc.createAnimationChannel()\n .setTargetPath('weights')\n .setTargetNode(node)\n .setSampler(weightsSampler);\n animation.addChannel(channel);\n hasAnimation = true;\n }\n}\n\nfunction morphStart(manifoldMesh: Mesh, morph?: Morph): number[] {\n const inputPositions: number[] = [];\n if (morph == null) {\n return inputPositions;\n }\n\n for (let i = 0; i < manifoldMesh.numVert; ++i) {\n for (let j = 0; j < 3; ++j)\n inputPositions[i * 3 + j] =\n manifoldMesh.vertProperties[i * manifoldMesh.numProp + j];\n }\n if (morph.start) {\n for (let i = 0; i < manifoldMesh.numVert; ++i) {\n const vertProp = manifoldMesh.vertProperties;\n const offset = i * manifoldMesh.numProp;\n const pos = inputPositions.slice(offset, offset + 3) as Vec3;\n morph.start(pos);\n for (let j = 0; j < 3; ++j) vertProp[offset + j] = pos[j];\n }\n }\n return inputPositions;\n}\n\nfunction morphEnd(\n doc: Document, manifoldMesh: Mesh, mesh: GLTFMesh, inputPositions: number[],\n morph?: Morph) {\n if (morph == null) {\n return;\n }\n\n mesh.setWeights([0]);\n\n mesh.listPrimitives().forEach((primitive, i) => {\n if (morph.end) {\n for (let i = 0; i < manifoldMesh.numVert; ++i) {\n const pos = inputPositions.slice(3 * i, 3 * (i + 1)) as Vec3;\n morph.end(pos);\n inputPositions.splice(3 * i, 3, ...pos);\n }\n }\n\n const startPosition = primitive.getAttribute('POSITION')!.getArray()!;\n const array = new Float32Array(startPosition.length);\n\n const offset = manifoldMesh.runIndex[i];\n for (let j = 0; j < array.length; ++j) {\n array[j] = inputPositions[offset + j] - startPosition[j];\n }\n\n const morphAccessor = doc.createAccessor(mesh.getName() + ' morph target')\n .setBuffer(doc.getRoot().listBuffers()[0])\n .setArray(array)\n .setType(Accessor.Type.VEC3);\n const morphTarget =\n doc.createPrimitiveTarget().setAttribute('POSITION', morphAccessor);\n primitive.addTarget(morphTarget);\n });\n}\n\nfunction createGLTFnode(doc: Document, node: GLTFNode): Node {\n const out = doc.createNode(node.name);\n\n const pos = addMotion(doc, 'translation', node, out);\n if (pos != null) {\n out.setTranslation(pos);\n }\n\n const rot = addMotion(doc, 'rotation', node, out);\n if (rot != null) {\n out.setRotation(euler2quat(rot));\n }\n\n const scale = addMotion(doc, 'scale', node, out);\n if (scale != null) {\n out.setScale(scale);\n }\n\n return out;\n}\n\nfunction getBackupMaterial(node?: GLTFNode): GLTFMaterial {\n if (node == null) {\n return {};\n }\n if (node.material == null) {\n node.material = getBackupMaterial(node.parent);\n }\n return node.material;\n}\n\nfunction makeDefaultedMaterial(\n doc: Document, matIn: GLTFMaterial = {}): Material {\n const defaults = {...globalDefaults};\n Object.assign(defaults, matIn);\n const {roughness, metallic, baseColorFactor, alpha, unlit} = defaults;\n\n const material = doc.createMaterial(matIn.name ?? '');\n\n if (unlit) {\n const unlit = doc.createExtension(KHRMaterialsUnlit).createUnlit();\n material.setExtension('KHR_materials_unlit', unlit);\n }\n\n if (alpha < 1) {\n material.setAlphaMode(Material.AlphaMode.BLEND).setDoubleSided(true);\n }\n\n return material.setRoughnessFactor(roughness)\n .setMetallicFactor(metallic)\n .setBaseColorFactor([...baseColorFactor, alpha]);\n}\n\nfunction getCachedMaterial(doc: Document, matDef: GLTFMaterial): Material {\n if (!materialCache.has(matDef)) {\n materialCache.set(matDef, makeDefaultedMaterial(doc, matDef));\n }\n return materialCache.get(matDef)!;\n}\n\nfunction addMesh(\n doc: Document, to3mf: To3MF, node: Node, manifold: Manifold,\n backupMaterial: GLTFMaterial = {}) {\n const numTri = manifold.numTri();\n if (numTri == 0) {\n log('Empty manifold, skipping.');\n return;\n }\n\n log(`Triangles: ${numTri.toLocaleString()}`);\n const box = manifold.boundingBox();\n const size = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n size[i] = Math.round((box.max[i] - box.min[i]) * 10) / 10;\n }\n log(`Bounding Box: X = ${size[0].toLocaleString()} mm, Y = ${\n size[1].toLocaleString()} mm, Z = ${size[2].toLocaleString()} mm`);\n const volume = Math.round(manifold.getProperties().volume / 10);\n log(`Genus: ${manifold.genus().toLocaleString()}, Volume: ${\n (volume / 100).toLocaleString()} cm^3`);\n\n // From Z-up to Y-up (glTF)\n const manifoldMesh = manifold.getMesh();\n\n const id2properties = new Map();\n for (const id of manifoldMesh.runOriginalID!) {\n const material = id2material.get(id) || backupMaterial;\n id2properties.set(id, {\n material: getCachedMaterial(doc, ghost ? GHOST : material),\n attributes: ['POSITION', ...material.attributes ?? []]\n });\n }\n\n const morph = manifold2morph.get(manifold);\n const inputPositions = morphStart(manifoldMesh, morph);\n\n const mesh = writeMesh(doc, manifoldMesh, id2properties);\n mesh.setName(node.getName());\n node.setMesh(mesh);\n\n morphEnd(doc, manifoldMesh, mesh, inputPositions, morph);\n\n const vertices = manifoldMesh.numProp === 3 ?\n manifoldMesh.vertProperties :\n new Float32Array(manifoldMesh.numVert * 3);\n if (manifoldMesh.numProp > 3) {\n for (let i = 0; i < manifoldMesh.numVert; ++i) {\n for (let j = 0; j < 3; ++j)\n vertices[i * 3 + j] =\n manifoldMesh.vertProperties[i * manifoldMesh.numProp + j];\n }\n }\n object2globalID.set(manifold, nextGlobalID);\n to3mf.meshes.push(\n {vertices, indices: manifoldMesh.triVerts, id: `${nextGlobalID++}`});\n\n for (const [run, id] of manifoldMesh.runOriginalID!.entries()) {\n const show = shown.has(id);\n const inMesh = show ? shown.get(id) : singles.get(id);\n if (inMesh == null) {\n continue;\n }\n\n id2properties.get(id)!.material = getCachedMaterial(\n doc, show ? SHOW : (id2material.get(id) || backupMaterial));\n\n const debugNode = doc.createNode('debug')\n .setMesh(writeMesh(doc, inMesh, id2properties))\n .setMatrix(manifoldMesh.transform(run));\n node.addChild(debugNode);\n }\n}\n\nfunction cloneNode(toNode: Node, fromNode: Node) {\n toNode.setMesh(fromNode.getMesh());\n fromNode.listChildren().forEach((child) => {\n const clone = child.clone();\n toNode.addChild(clone);\n });\n}\n\nfunction cloneNodeNewMaterial(\n doc: Document, toNode: Node, fromNode: Node, backupMaterial: Material,\n oldBackupMaterial: Material) {\n cloneNode(toNode, fromNode);\n const mesh = doc.createMesh();\n toNode.setMesh(mesh);\n fromNode.getMesh()!.listPrimitives().forEach((primitive) => {\n const newPrimitive = primitive.clone();\n if (primitive.getMaterial() === oldBackupMaterial) {\n newPrimitive.setMaterial(backupMaterial);\n }\n mesh.addPrimitive(newPrimitive);\n });\n}\n\nfunction createNodeFromCache(\n doc: Document, to3MF: To3MF, nodeDef: GLTFNode,\n manifold2node: Map>): Node {\n const node = createGLTFnode(doc, nodeDef);\n const {manifold} = nodeDef;\n if (manifold != null) {\n setMorph(doc, node, manifold);\n const backupMaterial = getBackupMaterial(nodeDef);\n const cachedNodes = manifold2node.get(manifold);\n if (cachedNodes == null) {\n addMesh(doc, to3MF, node, manifold, backupMaterial);\n const cache = new Map();\n cache.set(backupMaterial, node);\n manifold2node.set(manifold, cache);\n } else {\n const cachedNode = cachedNodes.get(backupMaterial);\n if (cachedNode == null) {\n const [oldBackupMaterial, oldNode] = cachedNodes.entries().next().value;\n cloneNodeNewMaterial(\n doc, node, oldNode, getCachedMaterial(doc, backupMaterial),\n getCachedMaterial(doc, oldBackupMaterial));\n cachedNodes.set(backupMaterial, node);\n } else {\n cloneNode(node, cachedNode);\n }\n }\n }\n\n object2globalID.set(nodeDef, nextGlobalID);\n to3MF.components.push({\n id: `${nextGlobalID++}`,\n name: nodeDef.name,\n children:\n manifold == null ? [] : [{objectID: `${object2globalID.get(manifold)}`}]\n });\n return node;\n}\n\nasync function exportModels(defaults: GlobalDefaults, manifold?: Manifold) {\n Object.assign(globalDefaults, GLOBAL_DEFAULTS);\n Object.assign(globalDefaults, defaults);\n\n const doc = new Document();\n const halfRoot2 = Math.sqrt(2) / 2;\n const mm2m = 1 / 1000;\n const wrapper = doc.createNode('wrapper')\n .setRotation([-halfRoot2, 0, 0, halfRoot2])\n .setScale([mm2m, mm2m, mm2m]);\n doc.createScene().addChild(wrapper);\n\n animation = doc.createAnimation('');\n hasAnimation = false;\n const nFrames = Math.round(globalDefaults.animationLength * FPS) + 1;\n const times = new Float32Array(nFrames);\n const weights = new Float32Array(nFrames);\n for (let i = 0; i < nFrames; ++i) {\n const x = i / (nFrames - 1);\n times[i] = x * globalDefaults.animationLength;\n weights[i] = globalDefaults.animationMode !== 'ping-pong' ?\n x :\n (1 - Math.cos(x * 2 * Math.PI)) / 2;\n }\n timesAccessor = doc.createAccessor('animation times')\n .setBuffer(doc.createBuffer())\n .setArray(times)\n .setType(Accessor.Type.SCALAR);\n weightsAccessor = doc.createAccessor('animation weights')\n .setBuffer(doc.getRoot().listBuffers()[0])\n .setArray(weights)\n .setType(Accessor.Type.SCALAR);\n weightsSampler = doc.createAnimationSampler()\n .setInput(timesAccessor)\n .setOutput(weightsAccessor)\n .setInterpolation('LINEAR');\n animation.addSampler(weightsSampler);\n\n const to3mf = {\n meshes: [],\n components: [],\n items: [],\n precision: 7,\n header: {\n unit: 'millimeter',\n title: 'ManifoldCAD.org model',\n description: 'ManifoldCAD.org model',\n application: 'ManifoldCAD.org',\n }\n } as To3MF;\n\n if (nodes.length > 0) {\n const node2gltf = new Map();\n const manifold2node = new Map>();\n let leafNodes = 0;\n\n for (const nodeDef of nodes) {\n node2gltf.set(\n nodeDef, createNodeFromCache(doc, to3mf, nodeDef, manifold2node));\n if (nodeDef.manifold) {\n ++leafNodes;\n }\n }\n\n for (const nodeDef of nodes) {\n const gltfNode = node2gltf.get(nodeDef)!;\n const child = {\n objectID: `${object2globalID.get(nodeDef)}`,\n transform: gltfNode.getMatrix()\n };\n const {parent} = nodeDef;\n if (parent == null) {\n wrapper.addChild(gltfNode);\n to3mf.items.push(child);\n } else {\n node2gltf.get(parent)!.addChild(gltfNode);\n const parent3mf = to3mf.components.find(\n (comp) => comp.id == `${object2globalID.get(parent)}`)!;\n parent3mf.children.push(child);\n }\n }\n\n log('Total glTF nodes: ', nodes.length,\n ', Total mesh references: ', leafNodes);\n } else {\n if (manifold == null) {\n log('No output because \"result\" is undefined and no \"GLTFNode\"s were created.');\n return;\n }\n const node = doc.createNode();\n addMesh(doc, to3mf, node, manifold);\n wrapper.addChild(node);\n to3mf.items.push({objectID: `${object2globalID.get(manifold)}`});\n }\n\n if (!hasAnimation) {\n timesAccessor.dispose();\n weightsAccessor.dispose();\n weightsSampler.dispose();\n animation.dispose();\n }\n\n const glb = await io.writeBinary(doc);\n const blobGLB = new Blob([glb], {type: 'application/octet-stream'});\n\n const fileForRelThumbnail = new FileForRelThumbnail();\n fileForRelThumbnail.add3dModel('3D/3dmodel.model')\n\n const model = to3dmodel(to3mf as any);\n const files: Zippable = {};\n files['3D/3dmodel.model'] = strToU8(model);\n files[fileForContentTypes.name] = strToU8(fileForContentTypes.content);\n files[fileForRelThumbnail.name] = strToU8(fileForRelThumbnail.content);\n const zipFile = zipSync(files);\n const blob3MF = new Blob(\n [zipFile],\n {type: 'application/vnd.ms-package.3dmanufacturing-3dmodel+xml'});\n\n return ({\n glbURL: URL.createObjectURL(blobGLB),\n threeMFURL: URL.createObjectURL(blob3MF)\n });\n}\n\nfunction evaluateCADToManifold(code: string) {\n const globalDefaults = {} as GlobalDefaults;\n const context = {\n globalDefaults,\n exportModels,\n glMatrix,\n module,\n ...Object.fromEntries(\n exposedFunctions.map((name) => [name, (module as any)[name]]),\n ),\n };\n const evalFn = new Function(\n ...Object.keys(context),\n 'resetToCircularDefaults();\\n' + code +\n '\\n return typeof result === \"undefined\" ? undefined : result;',\n );\n const manifold = evalFn(...Object.values(context));\n return {globalDefaults, manifold};\n}\n\nexport async function evaluateCADToModel(code: string) {\n const {globalDefaults, manifold} = evaluateCADToManifold(code);\n return await exportModels(globalDefaults, manifold);\n}\n","// Copyright 2024 The Manifold Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {cleanup, evaluateCADToModel} from './worker';\n\n// Setup complete\nself.postMessage(null);\n\nif (self.console) {\n const oldLog = self.console.log;\n self.console.log = function(...args) {\n let message = '';\n for (const arg of args) {\n if (arg == null) {\n message += 'undefined';\n } else if (typeof arg == 'object') {\n message += JSON.stringify(arg, null, 4);\n } else {\n message += arg.toString();\n }\n }\n self.postMessage({log: message});\n oldLog(...args);\n };\n}\n\nself.onmessage = async (e) => {\n try {\n const result = await evaluateCADToModel(e.data);\n self.postMessage(result);\n } catch (error: any) {\n console.log(error.toString());\n self.postMessage({objectURL: null});\n } finally {\n cleanup();\n }\n};\n"],"names":["EventDispatcher","type","listener","listeners","listenerArray","index","event","array","i","l","key","GraphEdge","_name","_parent","_child","_attributes","child","Graph","args","node","edge","filter","edges","name","a","b","attributes","parent","_extends","target","source","isRef","value","isRefList","isRefMap","isPlainObject","getFirstValue","$attributes","$immutableKeys","GraphNode","graph","defaultAttributes","ref","other","old","replacement","attribute","refAttributes","refMap","prevRef","refs","metadata","u","c","h","f","d","g","p","m","w","y","v","s","n","o","T","t","r","x","A","E","e","S$1","M$1","M","R","I","N$1","O","C","F","U","B$1","B","P","L","S","N","j","D","_","k","z","G","J","$","V","W","q$1","q","H","Y","Z$1","K$1","Z","Q$1","Q","K","X$1","tt$1","tt","et","rt$1","st","nt$1","nt","it$1","it","ot","at","ut","ct","ht$1","ht","ft$1","lt$1","dt$1","dt","gt$1","pt","mt$1","yt$1","vt$1","mt","lt","wt","ft","yt","X","rt","Tt$1","Tt","vt","gt","bt","xt$1","At","Et$1","xt","St","Mt","It$1","Rt","It","Nt","Ot","Ct","Ft","Ut$1","Bt","Lt","Et","Ut","Pt","KHR_SUPERCOMPRESSION_NONE","KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT","KHR_DF_VENDORID_KHRONOS","KHR_DF_VERSION","KHR_DF_MODEL_UNSPECIFIED","KHR_DF_MODEL_ETC1S","KHR_DF_MODEL_UASTC","KHR_DF_FLAG_ALPHA_STRAIGHT","KHR_DF_TRANSFER_SRGB","KHR_DF_PRIMARIES_BT709","KHR_DF_SAMPLE_DATATYPE_SIGNED","VK_FORMAT_UNDEFINED","KTX2Container","BufferReader","data","byteOffset","byteLength","littleEndian","left","right","len","bytes","maxByteLength","term","KTX2_ID","decodeText","buffer","read","id","container","headerByteLength","headerReader","levelCount","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","levelByteLength","levelReader","dfdReader","dfd","sampleStart","sampleWords","numSamples","sample","kvdReader","keyValueByteLength","keyData","text","kvPadding","sgdReader","endpointCount","selectorCount","endpointsByteLength","selectorsByteLength","tablesByteLength","extendedByteLength","imageDescs","endpointsByteOffset","selectorsByteOffset","tablesByteOffset","extendedByteOffset","endpointsData","selectorsData","tablesData","extendedData","ee","te","se","ne","re","oe","ae","ie","ce","ue","le","he","fe","ge","pe","xe","de","Te","me","Ee","Ie","Ne","Re","ye","Ae","Se","Ce","Me","Oe","_e","we","De","be","Fe","je","ve","ke","Be","Ge","Le","Ue","Ve","Pe","Xe","He","ze","$e","qe","Ke","Ye","Qe","We","Je","Ze","_t","Dt","jt","kt","Gt","Vt","Xt","Ht","zt","$t","qt","Kt","Yt","Qt","Wt","Jt","defMatrix","matrix2str","str","makeItem","matrix","toDate3mf","pushHeader","out","unit","title","author","description","application","creationDate","license","modificationDate","pushObjectWithComponents","children","objectID","transform","addComp","pushObjectWithMesh","vertices","indices","precision","fileForContentTypes","to3dmodel","meshes","components","items","header","FileForRelThumbnail","xmlType","path","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","_a","fl","revfl","_b","revfd","rev","hMap","cd","mb","co","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","ec","err","ind","msg","wbits","wbits16","hTree","t2","i0","i1","i2","maxSym","tr","mbt","ln","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","cf","wfblk","pos","dat","wblk","final","syms","lf","df","li","bs","bl","dlt","mlb","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","lct","mlcb","nlcc","flen","ftlen","dtlen","lm","ll","dm","dl","llm","lcts","clct","sym","dst","deo","dflt","lvl","plvl","pre","post","lst","opt","msk_1","prev","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","lin","din","crct","crc","cr","dopt","dict","newDat","mrg","wbytes","deflateSync","opts","fltn","val","op","td","tds","strToU8","latin1","ar_1","ar","ai","exfl","ex","wzh","fn","col","exl","exf","wzf","zipSync","files","tot","file","compression","com","ms","cdl","badd","EPSILON","ARRAY_TYPE","RANDOM","setMatrixArrayType","degree","toRadian","equals","create","glMatrix.ARRAY_TYPE","clone","copy","identity","fromValues","m00","m01","m10","m11","set","transpose","a1","invert","a0","a2","a3","det","adjoint","determinant","multiply","b0","b1","b2","b3","rotate","rad","scale","v0","v1","fromRotation","fromScaling","frob","LDU","add","subtract","exactEquals","glMatrix.EPSILON","multiplyScalar","multiplyScalarAndAdd","mul","sub","tx","ty","aa","ab","ac","ad","atx","aty","a4","a5","b4","b5","translate","fromTranslation","fromMat4","m02","m12","m20","m21","m22","a01","a02","a12","a00","a10","a11","a20","a21","a22","b01","b11","b21","b00","b02","b10","b12","b20","b22","fromMat2d","fromQuat","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","normalFromMat4","a03","a13","a23","a30","a31","a32","a33","b03","b04","b05","b06","b07","b08","b09","projection","width","height","a6","a7","a8","b6","b7","b8","m03","m13","m23","m30","m31","m32","m33","axis","rotateX","rotateY","rotateZ","fromXRotation","fromYRotation","fromZRotation","fromRotationTranslation","xy","xz","yz","fromQuat2","translation","bx","by","bz","bw","ax","ay","az","aw","magnitude","getTranslation","mat","getScaling","getRotation","scaling","is1","is2","is3","sm11","sm12","sm13","sm21","sm22","sm23","sm31","sm32","sm33","trace","fromRotationTranslationScale","sx","sy","sz","fromRotationTranslationScaleOrigin","ox","oy","oz","out0","out1","out2","out4","out5","out6","out8","out9","out10","frustum","bottom","top","near","far","rl","tb","nf","perspectiveNO","fovy","aspect","perspective","perspectiveZO","perspectiveFromFieldOfView","fov","upTan","downTan","leftTan","rightTan","xScale","yScale","orthoNO","lr","ortho","orthoZO","lookAt","eye","center","up","x0","x1","y0","y1","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","targetTo","a9","a14","a15","b9","b13","b14","b15","length","divide","ceil","floor","min","max","round","scaleAndAdd","distance","squaredDistance","squaredLength","negate","inverse","normalize","dot","cross","lerp","hermite","factorTimes2","factor1","factor2","factor3","factor4","bezier","inverseFactor","inverseFactorTimesTwo","random","glMatrix.RANDOM","zScale","transformMat4","transformMat3","transformQuat","qx","qy","qz","qw","uvx","uvy","uvz","uuvx","uuvy","uuvz","w2","angle","mag1","mag2","mag","cosine","zero","div","dist","sqrDist","sqrLen","forEach","vec","stride","offset","count","arg","v2","v3","v4","s1","s2","ix","iy","iz","iw","setAxisAngle","getAxisAngle","out_axis","getAngle","dotproduct","calculateW","exp","pow","slerp","omega","cosom","sinom","scale0","scale1","u1","u2","u3","sqrt1MinusU1","sqrtU1","invDot","conjugate","fromMat3","fTrace","fRoot","fromEuler","halfToRad","cx","cy","cz","vec4.clone","vec4.fromValues","vec4.copy","vec4.set","vec4.add","vec4.scale","vec4.dot","vec4.lerp","vec4.length","vec4.squaredLength","vec4.normalize","vec4.exactEquals","vec4.equals","rotationTo","tmpvec3","vec3.create","xUnitVec3","vec3.fromValues","yUnitVec3","vec3.dot","vec3.cross","vec3.len","vec3.normalize","sqlerp","temp1","temp2","setAxes","matr","mat3.create","view","dq","w1","fromRotationTranslationValues","outer","quat.create","mat4.getRotation","mat4.getTranslation","getReal","quat.copy","getDual","setReal","setDual","ax1","ay1","az1","aw1","bx1","by1","bz1","ax2","ay2","az2","aw2","quat.rotateX","quat.rotateY","quat.rotateZ","rotateByQuatAppend","rotateByQuatPrepend","rotateAroundAxis","axisLength","ax0","ay0","az0","aw0","bw1","bx0","by0","bz0","bw0","quat.dot","sqlen","quat.length","quat.squaredLength","a_dot_b","transformMat2","transformMat2d","p0","p1","sinC","cosC","Module","_scriptName","moduleArg","moduleRtn","readyPromiseResolve","readyPromiseReject","readyPromise","resolve","reject","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","ENVIRONMENT_IS_NODE","createRequire","require","_ManifoldInitialized","toVec","list","fromVec","result","size","vec2polygons","nPoly","nPts","poly","polygons2vec","polygons","disposePolygons","polygonsVec","vararg2vec2","vararg2vec3","fillRuleToInt","fillRule","joinTypeToInt","joinType","CrossSectionCtor","cs","func","wasmFuncPtr","addFunction","vec2Ptr","getValue","vert","setValue","removeFunction","delta","miterLimit","circularSegments","nDivisions","twistDegrees","scaleTop","man","revolveDegrees","minSharpAngle","minSmoothness","vec3Ptr","status","normalIdx","numProp","oldNumProp","newPtr","oldPtr","newProp","oldProp","xOrVec","normal","manifold","Mesh","triVerts","vertProperties","mergeFromVert","mergeToVert","runIndex","runOriginalID","faceID","halfedgeTangent","runTransform","changed","mesh","tri","halfedge","run","mat4","row","code","message","base","radius","crossSectionBatchbool","pushVec2","ps","pts","polys","ManifoldCtor","radiusLow","radiusHigh","sharpenedEdges","sharp","manifolds","manifoldBatchbool","sdf","bounds","edgeLength","level","bounds2","pushVec3","moduleOverrides","thisProgram","scriptDirectory","locateFile","read_","readAsync","readBinary","fs","nodePath","filename","binary","isFileURI","ret","onload","onerror","url","xhr","response","wasmBinary","wasmMemory","ABORT","HEAP8","HEAPU8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","updateMemoryViews","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","preRun","addOnPreRun","callRuntimeCallbacks","initRuntime","FS","postRun","addOnPostRun","cb","addOnInit","runDependencies","dependenciesFulfilled","getUniqueRunDependency","addRunDependency","removeRunDependency","callback","abort","what","dataURIPrefix","isDataURI","findWasmBinary","wasmBinaryFile","getBinarySync","getBinaryPromise","binaryFile","error","instantiateArrayBuffer","imports","receiver","reason","instantiateAsync","getWasmImports","wasmImports","createWasm","info","receiveInstance","instance","module","wasmExports","wasmTable","receiveInstantiationResult","tempDouble","tempI64","callbacks","ptr","stackRestore","__emscripten_stack_restore","stackSave","_emscripten_stack_get_current","exceptionCaught","uncaughtExceptionCount","___cxa_begin_catch","ExceptionInfo","___cxa_increment_exception_refcount","exceptionLast","___cxa_end_catch","_setThrew","___cxa_decrement_exception_refcount","excPtr","destructor","caught","rethrown","adjustedPtr","isPointer","___cxa_is_pointer_type","adjusted","___resumeException","setTempRet0","__emscripten_tempret_set","findMatchingCatch","thrown","thrownType","caughtType","adjusted_ptr_addr","___cxa_can_catch","___cxa_find_matching_catch_2","___cxa_find_matching_catch_3","arg0","___cxa_rethrow","___cxa_throw","___cxa_uncaught_exceptions","__abort_js","structRegistrations","runDestructors","destructors","del","readPointer","pointer","awaitingDependencies","registeredTypes","typeDependencies","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","__embind_finalize_value_object","structType","reg","rawConstructor","rawDestructor","fieldRecords","fieldTypes","field","fields","fieldName","getterReturnType","getter","getterContext","setterArgumentType","setter","setterContext","rv","GenericWireTypeSize","__embind_register_bigint","primitiveType","minRange","maxRange","embind_init_charCodes","codes","embind_charCodes","readLatin1String","BindingError","throwBindingError","sharedRegisterType","rawType","registeredInstance","options","__embind_register_bool","trueValue","falseValue","shallowCopyInternalPointer","throwInstanceAlreadyDeleted","obj","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","$$","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","prototype","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","makeDefaultHandle","actualType","registeredPointerRecord","toType","dp","init_ClassHandle","ClassHandle","leftClass","rightClass","createNamedFunction","body","ensureOverloadTable","proto","methodName","humanName","prevFunc","exposePublicSymbol","numArguments","char_0","char_9","makeLegalFunctionName","RegisteredClass","constructor","instancePrototype","baseClass","getActualType","upcast","downcast","upcastPointer","constNoSmartPtrRawPointerToWireType","embindRepr","handleClass","genericPointerToWireType","clonedHandle","Emval","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","registeredClass","isReference","isConst","isSmartPointer","pointeeType","sharingPolicy","rawGetPointee","rawShare","replacePublicSymbol","dynCallLegacy","sig","wasmTableMirror","getWasmTableEntry","funcPtr","dynCall","rtn","getDynCaller","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","extendError","baseErrorType","errorName","errorClass","stack","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","basePrototype","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","usesDestructorStack","argTypes","newFunc","argumentList","dummy","createJsInvoker","isClassMethodFunc","returns","isAsync","needsDestructorStack","argCount","argsList","argsListWired","invokerFnBody","dtorStack","args1","paramName","craftInvokerFunction","classType","cppInvokerFunc","cppTargetFunc","closureArgs","invokerFn","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","getFunctionName","argsIndex","__embind_register_class_function","rawInvoker","context","isPureVirtual","unboundTypesHandler","method","memberFunction","emval_freelist","emval_handles","__emval_decref","count_emval_handles","init_emval","EmValType","__embind_register_emval","enumReadValueFromPointer","signed","__embind_register_enum","isSigned","ctor","requireRegisteredType","impl","__embind_register_enum_value","rawEnumType","enumValue","enumType","Enum","Value","floatReadValueFromPointer","__embind_register_float","__embind_register_function","invokerArgsArray","integerReadValueFromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_optional","rawOptionalType","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","stringToUTF8","outPtr","lengthBytesUTF8","UTF8Decoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endPtr","u0","ch","UTF8ToString","__embind_register_std_string","stdStringIsUTF8","payload","decodeStartPtr","currentBytePtr","maxRead","stringSegment","valueIsOfTypeString","_malloc","charCode","UTF16Decoder","UTF16ToString","maxIdx","codeUnit","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","stringToUTF32","trailSurrogate","lengthBytesUTF32","__embind_register_std_wstring","charSize","decodeString","encodeString","readCharAt","lengthBytesUTF","maxReadBytes","__embind_register_value_object","constructorSignature","__embind_register_value_object_field","getterSignature","setterSignature","__embind_register_void","__emscripten_memcpy_js","dest","src","num","emval_returnValue","returnType","destructorsRef","__emval_as","emval_symbols","getStringOrSymbol","address","symbol","emval_methodCallers","__emval_call_method","caller","objHandle","__emval_equals","first","second","emval_addMethodCaller","emval_lookupTypes","__emval_get_method_caller","kind","retType","functionBody","params","invokerFunction","functionName","__emval_get_property","__emval_incref","__emval_new_cstring","__emval_new_object","__emval_run_destructors","__emval_set_property","__emval_take_value","getHeapMax","growMemory","pages","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","newSize","ENV","getExecutableName","getEnvStrings","lang","env","strings","stringToAscii","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","PATH","splitPathRe","parts","allowAboveRoot","last","isAbsolute","trailingSlash","root","dir","lastSlash","paths","initRandomFill","crypto_module","randomFillSync","randomBytes","randomFill","PATH_FS","resolvedPath","resolvedAbsolute","from","to","trim","arr","end","fromParts","toParts","samePartsLength","outputParts","FS_stdin_getChar_buffer","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","FS_stdin_getChar","BUFSIZE","buf","bytesRead","fd","TTY","dev","ops","stream","tty","optional_actions","mmapAlloc","MEMFS","mount","mode","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","attr","old_node","new_dir","new_name","new_node","entries","newname","oldpath","position","contents","canOwn","whence","prot","flags","allocated","mmapFlags","asyncLoad","noRunDep","dep","arrayBuffer","FS_createDataFile","fileData","canRead","canWrite","preloadPlugins","FS_handledByPreloadPlugin","byteArray","fullname","finish","handled","plugin","FS_createPreloadedFile","dontCreateFile","preFinish","processData","FS_modeStringToFlags","flagModes","FS_getMode","errno","rdev","defaults","current","current_path","islast","link","lookup","parentid","hash","errCode","nodeName","flag","perms","isdir","origStream","device","ma","mi","mounts","check","populate","completed","doCallback","done","mountpoint","pseudo","mountRoot","next","dirs","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","relative","dontFollow","uid","gid","atime","mtime","created","seeking","bytesWritten","cmd","stat","actualNumBytes","randomBuffer","randomLeft","randomByte","proc_self","input","output","dontResolveLastLink","part","properties","LazyUint8Array","chunkOffset","chunkNum","datalength","hasByteServing","usesGzip","chunkSize","doXHR","lazyArray","stream_ops","keys","writeChunks","SYSCALLS","dirfd","allowEmpty","dirstream","ctime","addr","_fd_close","doReadv","iov","iovcnt","curr","_fd_read","pnum","convertI32PairToI53Checked","lo","hi","_fd_seek","offset_low","offset_high","newOffset","doWritev","_fd_write","isLeapYear","year","arraySum","sum","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR","addDays","date","days","newDate","leap","currentMonth","daysInCurrentMonth","writeArrayToMemory","_strftime","maxsize","format","tm","tm_zone","pattern","EXPANSION_RULES_1","rule","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","compare","getFirstWeekStartDate","janFourth","getWeekBasedYear","thisDate","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","twelveHour","jan1","dec31","off","ahead","_strftime_l","loc","uleb128Encode","sigToWasmTypes","typeNames","generateFuncType","sigRet","sigParam","typeCodes","convertJsFunctionToWasm","typeSectionBody","wrappedFunc","updateTableMap","functionsInTableMap","item","getFunctionAddress","freeTableIndexes","getEmptyTableSlot","setWasmTableEntry","wrapped","invoke_d","invoke_diii","invoke_diiiii","invoke_ff","invoke_fii","invoke_fiif","invoke_fiii","invoke_i","invoke_ii","invoke_iii","invoke_iiii","invoke_iiiii","invoke_iiiiii","invoke_iiiiiii","invoke_iiiiiiii","invoke_iiiiiiiiiiii","invoke_iiij","invoke_jiiii","invoke_v","invoke_vi","invoke_vidi","invoke_vii","invoke_viiddi","invoke_viidi","invoke_viidiidid","invoke_viif","invoke_viiff","invoke_viifff","invoke_viififi","invoke_viii","invoke_viiif","invoke_viiifffi","invoke_viiii","invoke_viiiii","invoke_viiiiid","invoke_viiiiif","invoke_viiiiii","invoke_viiiiiii","invoke_viiiiiiiii","invoke_viiiiiiiiifiii","invoke_viiiiiiiiii","invoke_viiiiiiiiiiiiiii","invoke_viiiiiiiiiiiiiiiiii","dynCall_iiij","dynCall_jiiii","sp","a16","a17","a18","calledRun","runCaller","doRun","NAME","MERGE","ManifoldPrimitive","ExtensionProperty","PropertyType","indicesAccessor","valuesAccessor","EXTManifold","Extension","json","meshDef","meshIndex","manifoldPrimitive","manifoldDef","primitive","WriterContext","mergeFrom","mergeTo","numPrimitive","mergeIndicesIndex","mergeValuesIndex","mergeIndices","mergeValues","existingPrimitive","accessor","attributeDefs","Accessor","setupIO","io","writeMesh","doc","manifoldMesh","id2properties","manifoldExtension","attributeUnion","primitive2attributes","numRun","lastID","material","unionSize","numVert","aIdx","def","vert2merge","newVert","glMatrix.glMatrix.setMatrixArrayType","WebIO","KHRONOS_EXTENSIONS","manifoldStaticFunctions","manifoldMemberFunctions","crossSectionStaticFunctions","crossSectionMemberFunctions","toplevelConstructors","toplevel","exposedFunctions","memoryRegistry","addMembers","className","methodNames","areStatic","originalFn","ghost","shown","singles","FPS","GLOBAL_DEFAULTS","SHOW","GHOST","nodes","id2material","materialCache","object2globalID","manifold2morph","nextGlobalID","animation","timesAccessor","weightsAccessor","weightsSampler","hasAnimation","cleanup","elem","GLTFNode","globalDefaults","morph","debug","map","log","euler2quat","rotation","quat","glMatrix","deg2rad","addMotion","motion","nFrames","nEl","frames","framesAccessor","sampler","channel","setMorph","morphStart","inputPositions","vertProp","morphEnd","startPosition","morphAccessor","morphTarget","createGLTFnode","rot","getBackupMaterial","makeDefaultedMaterial","matIn","roughness","metallic","baseColorFactor","alpha","unlit","KHRMaterialsUnlit","Material","getCachedMaterial","matDef","addMesh","to3mf","backupMaterial","numTri","box","volume","show","inMesh","debugNode","cloneNode","toNode","fromNode","cloneNodeNewMaterial","oldBackupMaterial","newPrimitive","createNodeFromCache","to3MF","nodeDef","manifold2node","cachedNodes","cache","cachedNode","oldNode","exportModels","Document","halfRoot2","mm2m","wrapper","times","weights","node2gltf","leafNodes","gltfNode","comp","glb","blobGLB","fileForRelThumbnail","model","zipFile","blob3MF","evaluateCADToManifold","evaluateCADToModel","oldLog"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]} \ No newline at end of file diff --git a/docs/ParallelBVH.pdf b/docs/ParallelBVH.pdf new file mode 100644 index 000000000..3ea1e99e1 Binary files /dev/null and b/docs/ParallelBVH.pdf differ diff --git a/docs/RobustBoolean.pdf b/docs/RobustBoolean.pdf new file mode 100644 index 000000000..09526809f Binary files /dev/null and b/docs/RobustBoolean.pdf differ diff --git a/docs/TriangleInterpolation.pdf b/docs/TriangleInterpolation.pdf new file mode 100644 index 000000000..eb13c4ed1 Binary files /dev/null and b/docs/TriangleInterpolation.pdf differ diff --git a/docs/Triangulation.pdf b/docs/Triangulation.pdf new file mode 100644 index 000000000..4fdeb3951 Binary files /dev/null and b/docs/Triangulation.pdf differ diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 000000000..2b66bc028 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,243 @@ + + + + + + + +Manifold: Class List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nbenchmarks
 Nmanifold
 Nnb
 Nstd
 CConvexHull
 CCubeVoid
 CDiagnosticsData
 CEdge
 Cglm_name
 Cglm_name< glm::ivec3 >
 Cglm_name< glm::mat3x2 >
 Cglm_name< glm::mat4x3 >
 Cglm_name< glm::vec2 >
 Cglm_name< glm::vec3 >
 CGyroidSDF
 CHalfEdgeMesh
 CHullImpl
 CHullImplCGAL
 CHullImplOriginal
 CLayers
 CManifoldIVec3
 CManifoldManifoldPair
 CManifoldProperties
 CManifoldVec2
 CManifoldVec3
 CManifoldVec4
 CMeshBuilder
 CMeshSize
 COptions
 CPlane
 CPool
 CQuickHull
 CRay
 CResult
 CVertexDataSource
+
+
+
+ + + + diff --git a/docs/html/annotated_dup.js b/docs/html/annotated_dup.js new file mode 100644 index 000000000..9e567e158 --- /dev/null +++ b/docs/html/annotated_dup.js @@ -0,0 +1,127 @@ +var annotated_dup = +[ + [ "benchmarks", null, [ + [ "all_of", "structbenchmarks_1_1all__of.html", null ], + [ "copy", "structbenchmarks_1_1copy.html", null ], + [ "copy_if_1001", "structbenchmarks_1_1copy__if__1001.html", null ], + [ "copy_if_28", "structbenchmarks_1_1copy__if__28.html", null ], + [ "copy_if_55", "structbenchmarks_1_1copy__if__55.html", null ], + [ "copy_if_82", "structbenchmarks_1_1copy__if__82.html", null ], + [ "count", "structbenchmarks_1_1count.html", null ], + [ "exclusive_scan", "structbenchmarks_1_1exclusive__scan.html", null ], + [ "fill", "structbenchmarks_1_1fill.html", null ], + [ "for_each", "structbenchmarks_1_1for__each.html", null ], + [ "reduce", "structbenchmarks_1_1reduce.html", null ], + [ "sort_Asc", "structbenchmarks_1_1sort___asc.html", null ], + [ "sort_Asc_size", "structbenchmarks_1_1sort___asc__size.html", null ], + [ "sort_Asc_size_merge", "structbenchmarks_1_1sort___asc__size__merge.html", null ], + [ "sort_Des", "structbenchmarks_1_1sort___des.html", null ], + [ "sort_Des_size", "structbenchmarks_1_1sort___des__size.html", null ], + [ "sort_Des_size_merge", "structbenchmarks_1_1sort___des__size__merge.html", null ], + [ "sort_Eq", "structbenchmarks_1_1sort___eq.html", null ], + [ "sort_Eq_size", "structbenchmarks_1_1sort___eq__size.html", null ], + [ "sort_Eq_size_merge", "structbenchmarks_1_1sort___eq__size__merge.html", null ], + [ "sort_Rnd", "structbenchmarks_1_1sort___rnd.html", null ], + [ "sort_Rnd_size", "structbenchmarks_1_1sort___rnd__size.html", null ], + [ "sort_Rnd_size_merge", "structbenchmarks_1_1sort___rnd__size__merge.html", null ], + [ "sort_roughly_Asc", "structbenchmarks_1_1sort__roughly___asc.html", null ], + [ "sort_roughly_Asc_size", "structbenchmarks_1_1sort__roughly___asc__size.html", null ], + [ "sort_roughly_Asc_size_merge", "structbenchmarks_1_1sort__roughly___asc__size__merge.html", null ], + [ "transform_reduce", "structbenchmarks_1_1transform__reduce.html", null ] + ] ], + [ "manifold", "namespacemanifold.html", [ + [ "collider_internal", null, [ + [ "BuildInternalBoxes", "structmanifold_1_1collider__internal_1_1_build_internal_boxes.html", null ], + [ "CountCollisions", "structmanifold_1_1collider__internal_1_1_count_collisions.html", null ], + [ "CreateRadixTree", "structmanifold_1_1collider__internal_1_1_create_radix_tree.html", null ], + [ "FindCollisions", "structmanifold_1_1collider__internal_1_1_find_collisions.html", null ], + [ "ParCollisionRecorder", "structmanifold_1_1collider__internal_1_1_par_collision_recorder.html", null ], + [ "SeqCollisionRecorder", "structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html", null ], + [ "TransformBox", "structmanifold_1_1collider__internal_1_1_transform_box.html", null ] + ] ], + [ "Barycentric", "group___private.html#structmanifold_1_1_barycentric", null ], + [ "Boolean3", "classmanifold_1_1_boolean3.html", null ], + [ "Box", "structmanifold_1_1_box.html", "structmanifold_1_1_box" ], + [ "Collider", "classmanifold_1_1_collider.html", null ], + [ "ConcurrentSharedPtr", "classmanifold_1_1_concurrent_shared_ptr.html", "classmanifold_1_1_concurrent_shared_ptr" ], + [ "CountingIterator", "structmanifold_1_1_counting_iterator.html", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html", "classmanifold_1_1_cross_section" ], + [ "CsgLeafNode", "classmanifold_1_1_csg_leaf_node.html", null ], + [ "CsgNode", "classmanifold_1_1_csg_node.html", null ], + [ "CsgOpNode", "classmanifold_1_1_csg_op_node.html", null ], + [ "ExecutionParams", "group___debug.html#structmanifold_1_1_execution_params", "group___debug_structmanifold_1_1_execution_params" ], + [ "ExportOptions", "group___mesh_i_o.html#structmanifold_1_1_export_options", "group___mesh_i_o_structmanifold_1_1_export_options" ], + [ "geometryErr", "structmanifold_1_1geometry_err.html", null ], + [ "Halfedge", "structmanifold_1_1_halfedge.html", null ], + [ "HashTable", "classmanifold_1_1_hash_table.html", null ], + [ "HashTableD", "classmanifold_1_1_hash_table_d.html", null ], + [ "Identity", "structmanifold_1_1_identity.html", null ], + [ "Manifold", "classmanifold_1_1_manifold.html", "classmanifold_1_1_manifold" ], + [ "Material", "group___mesh_i_o.html#structmanifold_1_1_material", "group___mesh_i_o_structmanifold_1_1_material" ], + [ "Mesh", "group___connections.html#structmanifold_1_1_mesh", "group___connections_structmanifold_1_1_mesh" ], + [ "MeshGL", "structmanifold_1_1_mesh_g_l.html", "structmanifold_1_1_mesh_g_l" ], + [ "Negate", "structmanifold_1_1_negate.html", null ], + [ "PathImpl", "structmanifold_1_1_path_impl.html", null ], + [ "PolyVert", "group___private.html#structmanifold_1_1_poly_vert", "group___private_structmanifold_1_1_poly_vert" ], + [ "Properties", "group___connections.html#structmanifold_1_1_properties", null ], + [ "Quality", "classmanifold_1_1_quality.html", null ], + [ "Rect", "structmanifold_1_1_rect.html", "structmanifold_1_1_rect" ], + [ "ReindexEdge", "structmanifold_1_1_reindex_edge.html", null ], + [ "Smoothness", "group___connections.html#structmanifold_1_1_smoothness", "group___connections_structmanifold_1_1_smoothness" ], + [ "SparseIndices", "classmanifold_1_1_sparse_indices.html", "classmanifold_1_1_sparse_indices" ], + [ "StridedRange", "structmanifold_1_1_strided_range.html", null ], + [ "SVDSet", "group___connections.html#structmanifold_1_1_s_v_d_set", null ], + [ "Timer", "structmanifold_1_1_timer.html", null ], + [ "TmpEdge", "structmanifold_1_1_tmp_edge.html", null ], + [ "topologyErr", "structmanifold_1_1topology_err.html", null ], + [ "TransformIterator", "structmanifold_1_1_transform_iterator.html", null ], + [ "TriRef", "structmanifold_1_1_tri_ref.html", "structmanifold_1_1_tri_ref" ], + [ "UnionFind", "structmanifold_1_1_union_find.html", null ], + [ "userErr", "structmanifold_1_1user_err.html", null ], + [ "Vec", "classmanifold_1_1_vec.html", null ], + [ "VecView", "classmanifold_1_1_vec_view.html", null ] + ] ], + [ "nb", null, [ + [ "detail", null, [ + [ "type_caster< glm::mat< C, R, T, Q > >", "structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html", null ], + [ "type_caster< glm::vec< N, T, Q > >", "structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html", null ], + [ "type_caster< manifold::VecView< glm::vec< N, T, Q > > >", "structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html", null ], + [ "type_caster< std::vector< glm::vec< N, T, Q > > >", "structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html", null ] + ] ] + ] ], + [ "std", null, [ + [ "hash< glm::ivec4 >", "structstd_1_1hash_3_01glm_1_1ivec4_01_4.html", null ], + [ "hash< std::pair< int, int > >", "structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html", null ] + ] ], + [ "ConvexHull", "class_convex_hull.html", null ], + [ "CubeVoid", "struct_cube_void.html", null ], + [ "DiagnosticsData", "struct_diagnostics_data.html", null ], + [ "Edge", "struct_edge.html", null ], + [ "glm_name", "structglm__name.html", null ], + [ "glm_name< glm::ivec3 >", "structglm__name_3_01glm_1_1ivec3_01_4.html", null ], + [ "glm_name< glm::mat3x2 >", "structglm__name_3_01glm_1_1mat3x2_01_4.html", null ], + [ "glm_name< glm::mat4x3 >", "structglm__name_3_01glm_1_1mat4x3_01_4.html", null ], + [ "glm_name< glm::vec2 >", "structglm__name_3_01glm_1_1vec2_01_4.html", null ], + [ "glm_name< glm::vec3 >", "structglm__name_3_01glm_1_1vec3_01_4.html", null ], + [ "GyroidSDF", "struct_gyroid_s_d_f.html", null ], + [ "HalfEdgeMesh", "class_half_edge_mesh.html", "class_half_edge_mesh" ], + [ "HullImpl", "class_hull_impl.html", null ], + [ "HullImplCGAL", "class_hull_impl_c_g_a_l.html", null ], + [ "HullImplOriginal", "class_hull_impl_original.html", null ], + [ "Layers", "struct_layers.html", null ], + [ "ManifoldIVec3", "struct_manifold_i_vec3.html", null ], + [ "ManifoldManifoldPair", "struct_manifold_manifold_pair.html", null ], + [ "ManifoldProperties", "struct_manifold_properties.html", null ], + [ "ManifoldVec2", "struct_manifold_vec2.html", null ], + [ "ManifoldVec3", "struct_manifold_vec3.html", null ], + [ "ManifoldVec4", "struct_manifold_vec4.html", null ], + [ "MeshBuilder", "class_mesh_builder.html", "class_mesh_builder" ], + [ "MeshSize", "struct_mesh_size.html", null ], + [ "Options", "struct_options.html", null ], + [ "Plane", "class_plane.html", null ], + [ "Pool", "class_pool.html", null ], + [ "QuickHull", "class_quick_hull.html", null ], + [ "Ray", "struct_ray.html", null ], + [ "Result", "struct_result.html", null ], + [ "VertexDataSource", "class_vertex_data_source.html", null ] +]; \ No newline at end of file diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 000000000..224b29aa9 Binary files /dev/null and b/docs/html/bc_s.png differ diff --git a/docs/html/bc_sd.png b/docs/html/bc_sd.png new file mode 100644 index 000000000..31ca888dc Binary files /dev/null and b/docs/html/bc_sd.png differ diff --git a/docs/html/boolean3_8h_source.html b/docs/html/boolean3_8h_source.html new file mode 100644 index 000000000..d90bf8bd5 --- /dev/null +++ b/docs/html/boolean3_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Manifold: boolean3.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
boolean3.h
+
+
+
1// Copyright 2020 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include "impl.h"
+
17
+
18#ifdef MANIFOLD_DEBUG
+
19#define PRINT(msg) \
+
20 if (ManifoldParams().verbose) std::cout << msg << std::endl;
+
21#else
+
22#define PRINT(msg)
+
23#endif
+
24
+
45namespace manifold {
+
46
+
+
48class Boolean3 {
+
49 public:
+
50 Boolean3(const Manifold::Impl& inP, const Manifold::Impl& inQ, OpType op);
+ +
52
+
53 private:
+
54 const Manifold::Impl &inP_, &inQ_;
+
55 const float expandP_;
+
56 SparseIndices p1q2_, p2q1_;
+
57 Vec<int> x12_, x21_, w03_, w30_;
+
58 Vec<glm::vec3> v12_, v21_;
+
59};
+
+
60} // namespace manifold
+
Definition boolean3.h:48
+
Definition sparse.h:27
+
Definition vec.h:43
+
OpType
Definition public.h:499
+
Definition meshIO.h:20
+
Definition stl_test.cpp:532
+
Definition impl.h:30
+
+
+ + + + diff --git a/docs/html/box_8cpp_source.html b/docs/html/box_8cpp_source.html new file mode 100644 index 000000000..4b2d53ab7 --- /dev/null +++ b/docs/html/box_8cpp_source.html @@ -0,0 +1,214 @@ + + + + + + + +Manifold: box.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
box.cpp
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#include "conv.h"
+
16#include "manifold.h"
+
17#include "public.h"
+
18#include "types.h"
+
19
+
20ManifoldBox *manifold_box(void *mem, float x1, float y1, float z1, float x2,
+
21 float y2, float z2) {
+
22 auto p1 = glm::vec3(x1, y1, z1);
+
23 auto p2 = glm::vec3(x2, y2, z2);
+
24 auto box = new (mem) Box(p1, p2);
+
25 return to_c(box);
+
26}
+
27
+
28ManifoldVec3 manifold_box_min(ManifoldBox *b) { return to_c((*from_c(b)).min); }
+
29
+
30ManifoldVec3 manifold_box_max(ManifoldBox *b) { return to_c((*from_c(b)).max); }
+
31
+
32ManifoldVec3 manifold_box_dimensions(ManifoldBox *b) {
+
33 auto v = from_c(b)->Size();
+
34 return {v.x, v.y, v.z};
+
35}
+
36
+
37ManifoldVec3 manifold_box_center(ManifoldBox *b) {
+
38 auto v = from_c(b)->Center();
+
39 return {v.x, v.y, v.z};
+
40}
+
41
+
42float manifold_box_scale(ManifoldBox *b) { return from_c(b)->Scale(); }
+
43
+
44int manifold_box_contains_pt(ManifoldBox *b, float x, float y, float z) {
+
45 auto p = glm::vec3(x, y, z);
+
46 return from_c(b)->Contains(p);
+
47}
+
48
+
49int manifold_box_contains_box(ManifoldBox *a, ManifoldBox *b) {
+
50 auto outer = *from_c(a);
+
51 auto inner = *from_c(b);
+
52 return outer.Contains(inner);
+
53}
+
54
+
55void manifold_box_include_pt(ManifoldBox *b, float x, float y, float z) {
+
56 auto box = *from_c(b);
+
57 auto p = glm::vec3(x, y, z);
+
58 box.Union(p);
+
59}
+
60
+
61ManifoldBox *manifold_box_union(void *mem, ManifoldBox *a, ManifoldBox *b) {
+
62 auto box = from_c(a)->Union(*from_c(b));
+
63 return to_c(new (mem) Box(box));
+
64}
+
65
+
66ManifoldBox *manifold_box_transform(void *mem, ManifoldBox *b, float x1,
+
67 float y1, float z1, float x2, float y2,
+
68 float z2, float x3, float y3, float z3,
+
69 float x4, float y4, float z4) {
+
70 auto mat = glm::mat4x3(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4);
+
71 auto transformed = from_c(b)->Transform(mat);
+
72 return to_c(new (mem) Box(transformed));
+
73}
+
74
+
75ManifoldBox *manifold_box_translate(void *mem, ManifoldBox *b, float x, float y,
+
76 float z) {
+
77 auto p = glm::vec3(x, y, z);
+
78 auto translated = (*from_c(b)) + p;
+
79 return to_c(new (mem) Box(translated));
+
80}
+
81
+
82ManifoldBox *manifold_box_mul(void *mem, ManifoldBox *b, float x, float y,
+
83 float z) {
+
84 auto p = glm::vec3(x, y, z);
+
85 auto scaled = (*from_c(b)) * p;
+
86 return to_c(new (mem) Box(scaled));
+
87}
+
88
+
89int manifold_box_does_overlap_pt(ManifoldBox *b, float x, float y, float z) {
+
90 auto p = glm::vec3(x, y, z);
+
91 return from_c(b)->DoesOverlap(p);
+
92}
+
93
+
94int manifold_box_does_overlap_box(ManifoldBox *a, ManifoldBox *b) {
+
95 return from_c(a)->DoesOverlap(*from_c(b));
+
96}
+
97
+
98int manifold_box_is_finite(ManifoldBox *b) { return from_c(b)->IsFinite(); }
+
Manifold Transform(const glm::mat4x3 &) const
Definition manifold.cpp:527
+
Manifold Scale(glm::vec3) const
Definition manifold.cpp:499
+
Definition types.h:48
+
Definition public.h:177
+
+
+ + + + diff --git a/docs/html/class_convex_hull-members.html b/docs/html/class_convex_hull-members.html new file mode 100644 index 000000000..58641d2b4 --- /dev/null +++ b/docs/html/class_convex_hull-members.html @@ -0,0 +1,124 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHull Member List
+
+
+ +

This is the complete list of members for ConvexHull, including all inherited members.

+ + + + + + + + + + + +
ConvexHull() (defined in ConvexHull)ConvexHullinline
ConvexHull(const ConvexHull &o) (defined in ConvexHull)ConvexHullinline
ConvexHull(ConvexHull &&o) (defined in ConvexHull)ConvexHullinline
ConvexHull(const MeshBuilder &mesh_input, const VertexDataSource &pointCloud, bool CCW, bool useOriginalIndices) (defined in ConvexHull)ConvexHullinline
getIndexBuffer() (defined in ConvexHull)ConvexHullinline
getIndexBuffer() const (defined in ConvexHull)ConvexHullinline
getVertexBuffer() (defined in ConvexHull)ConvexHullinline
getVertexBuffer() const (defined in ConvexHull)ConvexHullinline
operator=(const ConvexHull &o) (defined in ConvexHull)ConvexHullinline
operator=(ConvexHull &&o) (defined in ConvexHull)ConvexHullinline
+
+ + + + diff --git a/docs/html/class_convex_hull.html b/docs/html/class_convex_hull.html new file mode 100644 index 000000000..b147b2e0b --- /dev/null +++ b/docs/html/class_convex_hull.html @@ -0,0 +1,146 @@ + + + + + + + +Manifold: ConvexHull Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHull Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConvexHull (const ConvexHull &o)
 
+ConvexHulloperator= (const ConvexHull &o)
 
ConvexHull (ConvexHull &&o)
 
+ConvexHulloperator= (ConvexHull &&o)
 
ConvexHull (const MeshBuilder &mesh_input, const VertexDataSource &pointCloud, bool CCW, bool useOriginalIndices)
 
+std::vector< size_t > & getIndexBuffer ()
 
+const std::vector< size_t > & getIndexBuffer () const
 
+VertexDataSourcegetVertexBuffer ()
 
+const VertexDataSourcegetVertexBuffer () const
 
+
+
+ + + + diff --git a/docs/html/class_half_edge_mesh-members.html b/docs/html/class_half_edge_mesh-members.html new file mode 100644 index 000000000..acdeaa8df --- /dev/null +++ b/docs/html/class_half_edge_mesh-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HalfEdgeMesh Member List
+
+
+ +

This is the complete list of members for HalfEdgeMesh, including all inherited members.

+ + + + + +
faces (defined in HalfEdgeMesh)HalfEdgeMesh
HalfEdgeMesh(const MeshBuilder &builderObject, const VertexDataSource &vertexData) (defined in HalfEdgeMesh)HalfEdgeMeshinline
halfEdges (defined in HalfEdgeMesh)HalfEdgeMesh
vertices (defined in HalfEdgeMesh)HalfEdgeMesh
+
+ + + + diff --git a/docs/html/class_half_edge_mesh.html b/docs/html/class_half_edge_mesh.html new file mode 100644 index 000000000..4f207c640 --- /dev/null +++ b/docs/html/class_half_edge_mesh.html @@ -0,0 +1,208 @@ + + + + + + + +Manifold: HalfEdgeMesh Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HalfEdgeMesh Class Reference
+
+
+ + + + + + +

+Classes

struct  Face
 
struct  HalfEdge
 
+ + + +

+Public Member Functions

HalfEdgeMesh (const MeshBuilder &builderObject, const VertexDataSource &vertexData)
 
+ + + + + + + +

+Public Attributes

+std::vector< glm::dvec3 > vertices
 
+std::vector< Facefaces
 
+std::vector< HalfEdgehalfEdges
 
+

Class Documentation

+ +

◆ HalfEdgeMesh::Face

+ +
+
+ + + + +
struct HalfEdgeMesh::Face
+
+
+ + + + +
Class Members
+size_t +halfEdgeIndex +
+ +
+
+ +

◆ HalfEdgeMesh::HalfEdge

+ +
+
+ + + + +
struct HalfEdgeMesh::HalfEdge
+
+
+ + + + + + + + + + + + + +
Class Members
+size_t +endVertex +
+size_t +opp +
+size_t +face +
+size_t +next +
+ +
+
+
+
+ + + + diff --git a/docs/html/class_half_edge_mesh.js b/docs/html/class_half_edge_mesh.js new file mode 100644 index 000000000..e8317a63b --- /dev/null +++ b/docs/html/class_half_edge_mesh.js @@ -0,0 +1,5 @@ +var class_half_edge_mesh = +[ + [ "Face", "class_half_edge_mesh.html#struct_half_edge_mesh_1_1_face", null ], + [ "HalfEdge", "class_half_edge_mesh.html#struct_half_edge_mesh_1_1_half_edge", null ] +]; \ No newline at end of file diff --git a/docs/html/class_hull_impl-members.html b/docs/html/class_hull_impl-members.html new file mode 100644 index 000000000..1811c7d1a --- /dev/null +++ b/docs/html/class_hull_impl-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HullImpl Member List
+
+
+ +

This is the complete list of members for HullImpl, including all inherited members.

+ + + + + + +
hull(const manifold::Manifold &input, const std::vector< glm::vec3 > &pts)=0 (defined in HullImpl)HullImplpure virtual
hullManifold (defined in HullImpl)HullImplprotected
inputManifold (defined in HullImpl)HullImplprotected
isMeshConvex() (defined in HullImpl)HullImplinline
~HullImpl()=default (defined in HullImpl)HullImplvirtual
+
+ + + + diff --git a/docs/html/class_hull_impl.html b/docs/html/class_hull_impl.html new file mode 100644 index 000000000..ccf1cc070 --- /dev/null +++ b/docs/html/class_hull_impl.html @@ -0,0 +1,137 @@ + + + + + + + +Manifold: HullImpl Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HullImpl Class Referenceabstract
+
+
+ +

Inherited by HullImplCGAL, and HullImplOriginal.

+ + + + + + +

+Public Member Functions

+virtual void hull (const manifold::Manifold &input, const std::vector< glm::vec3 > &pts)=0
 
+bool isMeshConvex ()
 
+ + + + + +

+Protected Attributes

+manifold::Manifold hullManifold
 
+manifold::Manifold inputManifold
 
+
+
+ + + + diff --git a/docs/html/class_hull_impl_c_g_a_l-members.html b/docs/html/class_hull_impl_c_g_a_l-members.html new file mode 100644 index 000000000..1da02a496 --- /dev/null +++ b/docs/html/class_hull_impl_c_g_a_l-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HullImplCGAL Member List
+
+
+ +

This is the complete list of members for HullImplCGAL, including all inherited members.

+ + + + + + +
hull(const manifold::Manifold &input, const std::vector< glm::vec3 > &pts) override (defined in HullImplCGAL)HullImplCGALinlinevirtual
hullManifold (defined in HullImpl)HullImplprotected
inputManifold (defined in HullImpl)HullImplprotected
isMeshConvex() (defined in HullImpl)HullImplinline
~HullImpl()=default (defined in HullImpl)HullImplvirtual
+
+ + + + diff --git a/docs/html/class_hull_impl_c_g_a_l.html b/docs/html/class_hull_impl_c_g_a_l.html new file mode 100644 index 000000000..3427adb13 --- /dev/null +++ b/docs/html/class_hull_impl_c_g_a_l.html @@ -0,0 +1,176 @@ + + + + + + + +Manifold: HullImplCGAL Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HullImplCGAL Class Reference
+
+
+ +

Inherits HullImpl.

+ + + + + + + +

+Public Member Functions

void hull (const manifold::Manifold &input, const std::vector< glm::vec3 > &pts) override
 
- Public Member Functions inherited from HullImpl
+bool isMeshConvex ()
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from HullImpl
+manifold::Manifold hullManifold
 
+manifold::Manifold inputManifold
 
+

Member Function Documentation

+ +

◆ hull()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void hull (const manifold::Manifoldinput,
const std::vector< glm::vec3 > & pts 
)
+
+inlineoverridevirtual
+
+ +

Implements HullImpl.

+ +
+
+
+
+ + + + diff --git a/docs/html/class_hull_impl_original-members.html b/docs/html/class_hull_impl_original-members.html new file mode 100644 index 000000000..b2862039d --- /dev/null +++ b/docs/html/class_hull_impl_original-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HullImplOriginal Member List
+
+
+ +

This is the complete list of members for HullImplOriginal, including all inherited members.

+ + + + + + +
hull(const manifold::Manifold &input, const std::vector< glm::vec3 > &pts) override (defined in HullImplOriginal)HullImplOriginalinlinevirtual
hullManifold (defined in HullImpl)HullImplprotected
inputManifold (defined in HullImpl)HullImplprotected
isMeshConvex() (defined in HullImpl)HullImplinline
~HullImpl()=default (defined in HullImpl)HullImplvirtual
+
+ + + + diff --git a/docs/html/class_hull_impl_original.html b/docs/html/class_hull_impl_original.html new file mode 100644 index 000000000..df15bbddf --- /dev/null +++ b/docs/html/class_hull_impl_original.html @@ -0,0 +1,176 @@ + + + + + + + +Manifold: HullImplOriginal Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HullImplOriginal Class Reference
+
+
+ +

Inherits HullImpl.

+ + + + + + + +

+Public Member Functions

void hull (const manifold::Manifold &input, const std::vector< glm::vec3 > &pts) override
 
- Public Member Functions inherited from HullImpl
+bool isMeshConvex ()
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from HullImpl
+manifold::Manifold hullManifold
 
+manifold::Manifold inputManifold
 
+

Member Function Documentation

+ +

◆ hull()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void hull (const manifold::Manifoldinput,
const std::vector< glm::vec3 > & pts 
)
+
+inlineoverridevirtual
+
+ +

Implements HullImpl.

+ +
+
+
+
+ + + + diff --git a/docs/html/class_mesh_builder-members.html b/docs/html/class_mesh_builder-members.html new file mode 100644 index 000000000..be28a87b8 --- /dev/null +++ b/docs/html/class_mesh_builder-members.html @@ -0,0 +1,127 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshBuilder Member List
+
+
+ +

This is the complete list of members for MeshBuilder, including all inherited members.

+ + + + + + + + + + + + + + +
addFace() (defined in MeshBuilder)MeshBuilderinline
addHalfEdge() (defined in MeshBuilder)MeshBuilderinline
disabledFaces (defined in MeshBuilder)MeshBuilder
disabledHalfEdges (defined in MeshBuilder)MeshBuilder
disableFace(size_t faceIndex) (defined in MeshBuilder)MeshBuilderinline
disableHalfEdge(size_t heIndex) (defined in MeshBuilder)MeshBuilderinline
faces (defined in MeshBuilder)MeshBuilder
getHalfEdgeIndicesOfFace(const Face &f) const (defined in MeshBuilder)MeshBuilderinline
getVertexIndicesOfFace(const Face &f) const (defined in MeshBuilder)MeshBuilderinline
getVertexIndicesOfHalfEdge(const HalfEdge &he) const (defined in MeshBuilder)MeshBuilderinline
halfEdges (defined in MeshBuilder)MeshBuilder
MeshBuilder()=default (defined in MeshBuilder)MeshBuilder
setup(size_t a, size_t b, size_t c, size_t d) (defined in MeshBuilder)MeshBuilderinline
+
+ + + + diff --git a/docs/html/class_mesh_builder.html b/docs/html/class_mesh_builder.html new file mode 100644 index 000000000..22f245330 --- /dev/null +++ b/docs/html/class_mesh_builder.html @@ -0,0 +1,167 @@ + + + + + + + +Manifold: MeshBuilder Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshBuilder Class Reference
+
+
+ + + + + + +

+Classes

struct  Face
 
struct  HalfEdge
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+size_t addFace ()
 
+size_t addHalfEdge ()
 
+std::unique_ptr< std::vector< size_t > > disableFace (size_t faceIndex)
 
+void disableHalfEdge (size_t heIndex)
 
+void setup (size_t a, size_t b, size_t c, size_t d)
 
+std::array< size_t, 3 > getVertexIndicesOfFace (const Face &f) const
 
+std::array< size_t, 2 > getVertexIndicesOfHalfEdge (const HalfEdge &he) const
 
+std::array< size_t, 3 > getHalfEdgeIndicesOfFace (const Face &f) const
 
+ + + + + + + + + +

+Public Attributes

+std::vector< Facefaces
 
+std::vector< HalfEdgehalfEdges
 
+std::vector< size_t > disabledFaces
 
+std::vector< size_t > disabledHalfEdges
 
+
+
+ + + + diff --git a/docs/html/class_mesh_builder.js b/docs/html/class_mesh_builder.js new file mode 100644 index 000000000..89101b832 --- /dev/null +++ b/docs/html/class_mesh_builder.js @@ -0,0 +1,5 @@ +var class_mesh_builder = +[ + [ "Face", "struct_mesh_builder_1_1_face.html", null ], + [ "HalfEdge", "struct_mesh_builder_1_1_half_edge.html", null ] +]; \ No newline at end of file diff --git a/docs/html/class_plane-members.html b/docs/html/class_plane-members.html new file mode 100644 index 000000000..95296446a --- /dev/null +++ b/docs/html/class_plane-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Plane Member List
+
+
+ +

This is the complete list of members for Plane, including all inherited members.

+ + + + + + + +
D (defined in Plane)Plane
isPointOnPositiveSide(const glm::dvec3 &Q) const (defined in Plane)Planeinline
N (defined in Plane)Plane
Plane()=default (defined in Plane)Plane
Plane(const glm::dvec3 &N, const glm::dvec3 &P) (defined in Plane)Planeinline
sqrNLength (defined in Plane)Plane
+
+ + + + diff --git a/docs/html/class_plane.html b/docs/html/class_plane.html new file mode 100644 index 000000000..681f60da6 --- /dev/null +++ b/docs/html/class_plane.html @@ -0,0 +1,138 @@ + + + + + + + +Manifold: Plane Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + +

+Public Member Functions

+bool isPointOnPositiveSide (const glm::dvec3 &Q) const
 
Plane (const glm::dvec3 &N, const glm::dvec3 &P)
 
+ + + + + + + +

+Public Attributes

+glm::dvec3 N
 
+double D
 
+double sqrNLength
 
+
+
+ + + + diff --git a/docs/html/class_pool-members.html b/docs/html/class_pool-members.html new file mode 100644 index 000000000..d43c0c9b6 --- /dev/null +++ b/docs/html/class_pool-members.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Pool Member List
+
+
+ +

This is the complete list of members for Pool, including all inherited members.

+ + + + +
clear() (defined in Pool)Poolinline
get() (defined in Pool)Poolinline
reclaim(std::unique_ptr< std::vector< size_t > > &ptr) (defined in Pool)Poolinline
+
+ + + + diff --git a/docs/html/class_pool.html b/docs/html/class_pool.html new file mode 100644 index 000000000..ea5f16c79 --- /dev/null +++ b/docs/html/class_pool.html @@ -0,0 +1,128 @@ + + + + + + + +Manifold: Pool Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Pool Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

+void clear ()
 
+void reclaim (std::unique_ptr< std::vector< size_t > > &ptr)
 
+std::unique_ptr< std::vector< size_t > > get ()
 
+
+
+ + + + diff --git a/docs/html/class_quick_hull-members.html b/docs/html/class_quick_hull-members.html new file mode 100644 index 000000000..1209e0fb9 --- /dev/null +++ b/docs/html/class_quick_hull-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
QuickHull Member List
+
+
+ +

This is the complete list of members for QuickHull, including all inherited members.

+ + + + + + +
getConvexHull(const std::vector< glm::dvec3 > &pointCloud, bool CCW, bool useOriginalIndices, double eps=defaultEps()) (defined in QuickHull)QuickHull
getConvexHull(const glm::dvec3 *vertexData, size_t vertexCount, bool CCW, bool useOriginalIndices, double eps=defaultEps()) (defined in QuickHull)QuickHull
getConvexHull(const double *vertexData, size_t vertexCount, bool CCW, bool useOriginalIndices, double eps=defaultEps()) (defined in QuickHull)QuickHull
getConvexHullAsMesh(const double *vertexData, size_t vertexCount, bool CCW, double eps=defaultEps()) (defined in QuickHull)QuickHull
getDiagnostics() (defined in QuickHull)QuickHullinline
+
+ + + + diff --git a/docs/html/class_quick_hull.html b/docs/html/class_quick_hull.html new file mode 100644 index 000000000..44f18d567 --- /dev/null +++ b/docs/html/class_quick_hull.html @@ -0,0 +1,135 @@ + + + + + + + +Manifold: QuickHull Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
QuickHull Class Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

+ConvexHull getConvexHull (const std::vector< glm::dvec3 > &pointCloud, bool CCW, bool useOriginalIndices, double eps=defaultEps())
 
+ConvexHull getConvexHull (const glm::dvec3 *vertexData, size_t vertexCount, bool CCW, bool useOriginalIndices, double eps=defaultEps())
 
+ConvexHull getConvexHull (const double *vertexData, size_t vertexCount, bool CCW, bool useOriginalIndices, double eps=defaultEps())
 
+HalfEdgeMesh getConvexHullAsMesh (const double *vertexData, size_t vertexCount, bool CCW, double eps=defaultEps())
 
+const DiagnosticsDatagetDiagnostics ()
 
+
+
+ + + + diff --git a/docs/html/class_vertex_data_source-members.html b/docs/html/class_vertex_data_source-members.html new file mode 100644 index 000000000..4ebe34b30 --- /dev/null +++ b/docs/html/class_vertex_data_source-members.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VertexDataSource Member List
+
+
+ +

This is the complete list of members for VertexDataSource, including all inherited members.

+ + + + + + + + + +
begin() const (defined in VertexDataSource)VertexDataSourceinline
end() const (defined in VertexDataSource)VertexDataSourceinline
operator=(const VertexDataSource &other)=default (defined in VertexDataSource)VertexDataSource
operator[](size_t index) const (defined in VertexDataSource)VertexDataSourceinline
size() const (defined in VertexDataSource)VertexDataSourceinline
VertexDataSource(const glm::dvec3 *ptr, size_t count) (defined in VertexDataSource)VertexDataSourceinline
VertexDataSource(const std::vector< glm::dvec3 > &vec) (defined in VertexDataSource)VertexDataSourceinline
VertexDataSource() (defined in VertexDataSource)VertexDataSourceinline
+
+ + + + diff --git a/docs/html/class_vertex_data_source.html b/docs/html/class_vertex_data_source.html new file mode 100644 index 000000000..c05789e16 --- /dev/null +++ b/docs/html/class_vertex_data_source.html @@ -0,0 +1,140 @@ + + + + + + + +Manifold: VertexDataSource Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VertexDataSource Class Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Member Functions

VertexDataSource (const glm::dvec3 *ptr, size_t count)
 
VertexDataSource (const std::vector< glm::dvec3 > &vec)
 
+VertexDataSourceoperator= (const VertexDataSource &other)=default
 
+size_t size () const
 
+const glm::dvec3 & operator[] (size_t index) const
 
+const glm::dvec3 * begin () const
 
+const glm::dvec3 * end () const
 
+
+
+ + + + diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 000000000..b0eba159f --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,174 @@ + + + + + + + +Manifold: Class Index + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | I | L | M | N | O | P | Q | R | S | T | U | V
+
+
+
A
+
all_of (benchmarks)
+
+
B
+
Barycentric (manifold)
Manifold::Impl::BaryIndices (manifold)
Boolean3 (manifold)
Box (manifold)
BuildInternalBoxes (manifold::collider_internal)
+
+
C
+
Collider (manifold)
ConcurrentSharedPtr (manifold)
ConvexHull
copy (benchmarks)
copy_if_1001 (benchmarks)
copy_if_28 (benchmarks)
copy_if_55 (benchmarks)
copy_if_82 (benchmarks)
count (benchmarks)
CountCollisions (manifold::collider_internal)
CountingIterator (manifold)
CreateRadixTree (manifold::collider_internal)
CrossSection (manifold)
CsgLeafNode (manifold)
CsgNode (manifold)
CsgOpNode (manifold)
CubeVoid
+
+
D
+
DiagnosticsData
+
+
E
+
Edge
exclusive_scan (benchmarks)
ExecutionParams (manifold)
ExportOptions (manifold)
+
+
F
+
HalfEdgeMesh::Face
MeshBuilder::Face
fill (benchmarks)
FindCollisions (manifold::collider_internal)
SparseIndices::firstFinite (manifold)
for_each (benchmarks)
+
+
G
+
geometryErr (manifold)
glm_name
glm_name< glm::ivec3 >
glm_name< glm::mat3x2 >
glm_name< glm::mat4x3 >
glm_name< glm::vec2 >
glm_name< glm::vec3 >
GyroidSDF
+
+
H
+
HalfEdgeMesh::HalfEdge
Halfedge (manifold)
MeshBuilder::HalfEdge
HalfEdgeMesh
hash< glm::ivec4 > (std)
hash< std::pair< int, int > > (std)
HashTable (manifold)
HashTableD (manifold)
HullImpl
HullImplCGAL
HullImplOriginal
+
+
I
+
Identity (manifold)
Manifold::Impl (manifold)
+
+
L
+
Layers
+
+
M
+
Manifold (manifold)
ManifoldIVec3
ManifoldManifoldPair
ManifoldProperties
ManifoldVec2
ManifoldVec3
ManifoldVec4
Material (manifold)
Mesh (manifold)
MeshBuilder
MeshGL (manifold)
Manifold::Impl::MeshRelationD (manifold)
MeshSize
+
+
N
+
Negate (manifold)
+
+
O
+
Options
+
+
P
+
ParCollisionRecorder (manifold::collider_internal)
PathImpl (manifold)
Plane
PolyVert (manifold)
Pool
Properties (manifold)
+
+
Q
+
Quality (manifold)
QuickHull
+
+
R
+
Ray
Rect (manifold)
reduce (benchmarks)
ReindexEdge (manifold)
Manifold::Impl::Relation (manifold)
Result
+
+
S
+
SeqCollisionRecorder (manifold::collider_internal)
ConcurrentSharedPtr::SharedPtrGuard (manifold)
Smoothness (manifold)
sort_Asc (benchmarks)
sort_Asc_size (benchmarks)
sort_Asc_size_merge (benchmarks)
sort_Des (benchmarks)
sort_Des_size (benchmarks)
sort_Des_size_merge (benchmarks)
sort_Eq (benchmarks)
sort_Eq_size (benchmarks)
sort_Eq_size_merge (benchmarks)
sort_Rnd (benchmarks)
sort_Rnd_size (benchmarks)
sort_Rnd_size_merge (benchmarks)
sort_roughly_Asc (benchmarks)
sort_roughly_Asc_size (benchmarks)
sort_roughly_Asc_size_merge (benchmarks)
SparseIndices (manifold)
StridedRange (manifold)
SVDSet (manifold)
+
+
T
+
Timer (manifold)
TmpEdge (manifold)
topologyErr (manifold)
transform_reduce (benchmarks)
TransformBox (manifold::collider_internal)
TransformIterator (manifold)
TriRef (manifold)
type_caster< glm::mat< C, R, T, Q > > (nb::detail)
type_caster< glm::vec< N, T, Q > > (nb::detail)
type_caster< manifold::VecView< glm::vec< N, T, Q > > > (nb::detail)
type_caster< std::vector< glm::vec< N, T, Q > > > (nb::detail)
+
+
U
+
UnionFind (manifold)
userErr (manifold)
+
+
V
+
Vec (manifold)
VecView (manifold)
VertexDataSource
+
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_boolean3-members.html b/docs/html/classmanifold_1_1_boolean3-members.html new file mode 100644 index 000000000..e0740bc09 --- /dev/null +++ b/docs/html/classmanifold_1_1_boolean3-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Boolean3 Member List
+
+
+ +

This is the complete list of members for Boolean3, including all inherited members.

+ + + +
Boolean3(const Manifold::Impl &inP, const Manifold::Impl &inQ, OpType op) (defined in Boolean3)Boolean3
Result(OpType op) const (defined in Boolean3)Boolean3
+
+ + + + diff --git a/docs/html/classmanifold_1_1_boolean3.html b/docs/html/classmanifold_1_1_boolean3.html new file mode 100644 index 000000000..5631e066e --- /dev/null +++ b/docs/html/classmanifold_1_1_boolean3.html @@ -0,0 +1,125 @@ + + + + + + + +Manifold: Boolean3 Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Boolean3 Class Reference
+
+
+ + + + + + +

+Public Member Functions

Boolean3 (const Manifold::Impl &inP, const Manifold::Impl &inQ, OpType op)
 
+Manifold::Impl Result (OpType op) const
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_collider-members.html b/docs/html/classmanifold_1_1_collider-members.html new file mode 100644 index 000000000..e6ba4f567 --- /dev/null +++ b/docs/html/classmanifold_1_1_collider-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Collider Member List
+
+
+ +

This is the complete list of members for Collider, including all inherited members.

+ + + + + + + +
Collider() (defined in Collider)Colliderinline
Collider(const VecView< const Box > &leafBB, const VecView< const uint32_t > &leafMorton) (defined in Collider)Colliderinline
Collisions(const VecView< const T > &queriesIn) const (defined in Collider)Colliderinline
MortonCode(glm::vec3 position, Box bBox) (defined in Collider)Colliderinlinestatic
Transform(glm::mat4x3 transform) (defined in Collider)Colliderinline
UpdateBoxes(const VecView< const Box > &leafBB) (defined in Collider)Colliderinline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_collider.html b/docs/html/classmanifold_1_1_collider.html new file mode 100644 index 000000000..18e198038 --- /dev/null +++ b/docs/html/classmanifold_1_1_collider.html @@ -0,0 +1,139 @@ + + + + + + + +Manifold: Collider Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + + + + + + +

+Public Member Functions

Collider (const VecView< const Box > &leafBB, const VecView< const uint32_t > &leafMorton)
 
+bool Transform (glm::mat4x3 transform)
 
+void UpdateBoxes (const VecView< const Box > &leafBB)
 
+template<const bool selfCollision = false, const bool inverted = false, typename T >
SparseIndices Collisions (const VecView< const T > &queriesIn) const
 
+ + + +

+Static Public Member Functions

+static uint32_t MortonCode (glm::vec3 position, Box bBox)
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_concurrent_shared_ptr-members.html b/docs/html/classmanifold_1_1_concurrent_shared_ptr-members.html new file mode 100644 index 000000000..ad6fda0ad --- /dev/null +++ b/docs/html/classmanifold_1_1_concurrent_shared_ptr-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConcurrentSharedPtr< T > Member List
+
+
+ +

This is the complete list of members for ConcurrentSharedPtr< T >, including all inherited members.

+ + + + + +
ConcurrentSharedPtr(T value) (defined in ConcurrentSharedPtr< T >)ConcurrentSharedPtr< T >inline
ConcurrentSharedPtr(const ConcurrentSharedPtr< T > &other) (defined in ConcurrentSharedPtr< T >)ConcurrentSharedPtr< T >inline
GetGuard() (defined in ConcurrentSharedPtr< T >)ConcurrentSharedPtr< T >inline
UseCount() (defined in ConcurrentSharedPtr< T >)ConcurrentSharedPtr< T >inline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_concurrent_shared_ptr.html b/docs/html/classmanifold_1_1_concurrent_shared_ptr.html new file mode 100644 index 000000000..75540d299 --- /dev/null +++ b/docs/html/classmanifold_1_1_concurrent_shared_ptr.html @@ -0,0 +1,137 @@ + + + + + + + +Manifold: ConcurrentSharedPtr< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConcurrentSharedPtr< T > Class Template Reference
+
+
+ + + + +

+Classes

class  SharedPtrGuard
 
+ + + + + + + + + +

+Public Member Functions

ConcurrentSharedPtr (T value)
 
ConcurrentSharedPtr (const ConcurrentSharedPtr< T > &other)
 
+SharedPtrGuard GetGuard ()
 
+unsigned int UseCount ()
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_concurrent_shared_ptr.js b/docs/html/classmanifold_1_1_concurrent_shared_ptr.js new file mode 100644 index 000000000..262cb457b --- /dev/null +++ b/docs/html/classmanifold_1_1_concurrent_shared_ptr.js @@ -0,0 +1,4 @@ +var classmanifold_1_1_concurrent_shared_ptr = +[ + [ "SharedPtrGuard", "classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html", null ] +]; \ No newline at end of file diff --git a/docs/html/classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard-members.html b/docs/html/classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard-members.html new file mode 100644 index 000000000..ad9971bad --- /dev/null +++ b/docs/html/classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConcurrentSharedPtr< T >::SharedPtrGuard Member List
+
+
+ +

This is the complete list of members for ConcurrentSharedPtr< T >::SharedPtrGuard, including all inherited members.

+ + + + + +
operator*() (defined in ConcurrentSharedPtr< T >::SharedPtrGuard)ConcurrentSharedPtr< T >::SharedPtrGuardinline
operator->() (defined in ConcurrentSharedPtr< T >::SharedPtrGuard)ConcurrentSharedPtr< T >::SharedPtrGuardinline
SharedPtrGuard(std::recursive_mutex *mutex, T *content) (defined in ConcurrentSharedPtr< T >::SharedPtrGuard)ConcurrentSharedPtr< T >::SharedPtrGuardinline
~SharedPtrGuard() (defined in ConcurrentSharedPtr< T >::SharedPtrGuard)ConcurrentSharedPtr< T >::SharedPtrGuardinline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html b/docs/html/classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html new file mode 100644 index 000000000..5cf341e88 --- /dev/null +++ b/docs/html/classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html @@ -0,0 +1,128 @@ + + + + + + + +Manifold: ConcurrentSharedPtr< T >::SharedPtrGuard Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConcurrentSharedPtr< T >::SharedPtrGuard Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

SharedPtrGuard (std::recursive_mutex *mutex, T *content)
 
+T & operator* ()
 
+T * operator-> ()
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_cross_section-members.html b/docs/html/classmanifold_1_1_cross_section-members.html new file mode 100644 index 000000000..89e7dbb54 --- /dev/null +++ b/docs/html/classmanifold_1_1_cross_section-members.html @@ -0,0 +1,156 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CrossSection Member List
+
+
+ +

This is the complete list of members for CrossSection, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Area() constCrossSection
BatchBoolean(const std::vector< CrossSection > &crossSections, OpType op)CrossSectionstatic
Boolean(const CrossSection &second, OpType op) constCrossSection
Bounds() constCrossSection
Circle(float radius, int circularSegments=0)CrossSectionstatic
Compose(std::vector< CrossSection > &)CrossSectionstatic
CrossSection()CrossSection
CrossSection(const CrossSection &other)CrossSection
CrossSection(CrossSection &&) noexcept (defined in CrossSection)CrossSection
CrossSection(const SimplePolygon &contour, FillRule fillrule=FillRule::Positive)CrossSection
CrossSection(const Polygons &contours, FillRule fillrule=FillRule::Positive)CrossSection
CrossSection(const Rect &rect)CrossSection
Decompose() constCrossSection
FillRule enum nameCrossSection
Hull() constCrossSection
Hull(const std::vector< CrossSection > &crossSections)CrossSectionstatic
Hull(const SimplePolygon poly)CrossSectionstatic
Hull(const Polygons polys)CrossSectionstatic
IsEmpty() constCrossSection
JoinType enum nameCrossSection
Mirror(const glm::vec2 ax) constCrossSection
NumContour() constCrossSection
NumVert() constCrossSection
Offset(double delta, JoinType jt, double miter_limit=2.0, int circularSegments=0) constCrossSection
operator+(const CrossSection &) constCrossSection
operator+=(const CrossSection &)CrossSection
operator-(const CrossSection &) constCrossSection
operator-=(const CrossSection &)CrossSection
operator=(const CrossSection &other) (defined in CrossSection)CrossSection
operator=(CrossSection &&) noexcept (defined in CrossSection)CrossSection
operator^(const CrossSection &) constCrossSection
operator^=(const CrossSection &)CrossSection
Rotate(float degrees) constCrossSection
Scale(const glm::vec2 s) constCrossSection
Simplify(double epsilon=1e-6) constCrossSection
Square(const glm::vec2 dims, bool center=false)CrossSectionstatic
ToPolygons() constCrossSection
Transform(const glm::mat3x2 &m) constCrossSection
Translate(const glm::vec2 v) constCrossSection
Warp(std::function< void(glm::vec2 &)> warpFunc) constCrossSection
WarpBatch(std::function< void(VecView< glm::vec2 >)> warpFunc) constCrossSection
~CrossSection() (defined in CrossSection)CrossSection
+
+ + + + diff --git a/docs/html/classmanifold_1_1_cross_section.html b/docs/html/classmanifold_1_1_cross_section.html new file mode 100644 index 000000000..68f874193 --- /dev/null +++ b/docs/html/classmanifold_1_1_cross_section.html @@ -0,0 +1,1215 @@ + + + + + + + +Manifold: CrossSection Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CrossSection Class Reference
+
+
+ +

#include <cross_section.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

Creation

Constructors

+
enum class  FillRule { EvenOdd +, NonZero +, Positive +, Negative + }
 
 CrossSection ()
 
 CrossSection (const CrossSection &other)
 
+CrossSectionoperator= (const CrossSection &other)
 
CrossSection (CrossSection &&) noexcept
 
+CrossSectionoperator= (CrossSection &&) noexcept
 
 CrossSection (const SimplePolygon &contour, FillRule fillrule=FillRule::Positive)
 
 CrossSection (const Polygons &contours, FillRule fillrule=FillRule::Positive)
 
 CrossSection (const Rect &rect)
 
static CrossSection Square (const glm::vec2 dims, bool center=false)
 
static CrossSection Circle (float radius, int circularSegments=0)
 
+ + + + + + + + + + + + + + + + + + + + + +

Modification

enum class  JoinType { Square +, Round +, Miter + }
 
CrossSection Translate (const glm::vec2 v) const
 
CrossSection Rotate (float degrees) const
 
CrossSection Scale (const glm::vec2 s) const
 
CrossSection Mirror (const glm::vec2 ax) const
 
CrossSection Transform (const glm::mat3x2 &m) const
 
CrossSection Warp (std::function< void(glm::vec2 &)> warpFunc) const
 
CrossSection WarpBatch (std::function< void(VecView< glm::vec2 >)> warpFunc) const
 
CrossSection Simplify (double epsilon=1e-6) const
 
CrossSection Offset (double delta, JoinType jt, double miter_limit=2.0, int circularSegments=0) const
 
+ + + + + + + + + + + + +

Information

Details of the cross-section

+
double Area () const
 
int NumVert () const
 
int NumContour () const
 
bool IsEmpty () const
 
Rect Bounds () const
 
+ + + + + + + + + + + + + + + + + + +

Boolean

Combine two manifolds

+
CrossSection Boolean (const CrossSection &second, OpType op) const
 
CrossSection operator+ (const CrossSection &) const
 
CrossSectionoperator+= (const CrossSection &)
 
CrossSection operator- (const CrossSection &) const
 
CrossSectionoperator-= (const CrossSection &)
 
CrossSection operator^ (const CrossSection &) const
 
CrossSectionoperator^= (const CrossSection &)
 
static CrossSection BatchBoolean (const std::vector< CrossSection > &crossSections, OpType op)
 
+ + + + + +

Topological

std::vector< CrossSectionDecompose () const
 
static CrossSection Compose (std::vector< CrossSection > &)
 
+ + + + + + + + + +

Convex Hulling

CrossSection Hull () const
 
static CrossSection Hull (const std::vector< CrossSection > &crossSections)
 
static CrossSection Hull (const SimplePolygon poly)
 
static CrossSection Hull (const Polygons polys)
 
+ + + +

Conversion

Polygons ToPolygons () const
 
+

Detailed Description

+

Two-dimensional cross sections guaranteed to be without self-intersections, or overlaps between polygons (from construction onwards). This class makes use of the Clipper2 library for polygon clipping (boolean) and offsetting operations.

+

Member Enumeration Documentation

+ +

◆ FillRule

+ +
+
+ + + + + +
+ + + + +
enum class FillRule
+
+strong
+
+

Filling rules defining which polygon sub-regions are considered to be inside a given polygon, and which sub-regions will not (based on winding numbers). See the Clipper2 docs for a detailed explaination with illusrations.

+ + + + + +
Enumerator
EvenOdd 

Only odd numbered sub-regions are filled.

+
NonZero 

Only non-zero sub-regions are filled.

+
Positive 

Only sub-regions with winding counts > 0 are filled.

+
Negative 

Only sub-regions with winding counts < 0 are filled.

+
+ +
+
+ +

◆ JoinType

+ +
+
+ + + + + +
+ + + + +
enum class JoinType
+
+strong
+
+

Specifies the treatment of path/contour joins (corners) when offseting CrossSections. See the Clipper2 doc for illustrations.

+ + + + +
Enumerator
Square 

Squaring is applied uniformly at all joins where the internal join angle is less that 90 degrees. The squared edge will be at exactly the offset distance from the join vertex.

+
Round 

Rounding is applied to all joins that have convex external angles, and it maintains the exact offset distance from the join vertex.

+
Miter 

There's a necessary limit to mitered joins (to avoid narrow angled joins producing excessively long and narrow spikes). So where mitered joins would exceed a given maximum miter distance (relative to the offset distance), these are 'squared' instead.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CrossSection() [1/5]

+ +
+
+ + + + + + + +
CrossSection ()
+
+

The default constructor is an empty cross-section (containing no contours).

+ +
+
+ +

◆ CrossSection() [2/5]

+ +
+
+ + + + + + + + +
CrossSection (const CrossSectionother)
+
+

The copy constructor avoids copying the underlying paths vector (sharing with its parent via shared_ptr), however subsequent transformations, and their application will not be shared. It is generally recommended to avoid this, opting instead to simply create CrossSections with the available const methods.

+ +
+
+ +

◆ CrossSection() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
CrossSection (const SimplePolygoncontour,
FillRule fillrule = FillRule::Positive 
)
+
+

Create a 2d cross-section from a single contour. A boolean union operation (with Positive filling rule by default) is performed to ensure the resulting CrossSection is free of self-intersections.

+
Parameters
+ + + +
contourA closed path outlining the desired cross-section.
fillruleThe filling rule used to interpret polygon sub-regions created by self-intersections in contour.
+
+
+ +
+
+ +

◆ CrossSection() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
CrossSection (const Polygonscontours,
FillRule fillrule = FillRule::Positive 
)
+
+

Create a 2d cross-section from a set of contours (complex polygons). A boolean union operation (with Positive filling rule by default) is performed to combine overlapping polygons and ensure the resulting CrossSection is free of intersections.

+
Parameters
+ + + +
contoursA set of closed paths describing zero or more complex polygons.
fillruleThe filling rule used to interpret polygon sub-regions in contours.
+
+
+ +
+
+ +

◆ CrossSection() [5/5]

+ +
+
+ + + + + + + + +
CrossSection (const Rectrect)
+
+

Create a 2d cross-section from an axis-aligned rectangle (bounding box).

+
Parameters
+ + +
rectAn axis-aligned rectangular bounding box.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Square()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
CrossSection Square (const glm::vec2 size,
bool center = false 
)
+
+static
+
+

Constructs a square with the given XY dimensions. By default it is positioned in the first quadrant, touching the origin. If any dimensions in size are negative, or if all are zero, an empty Manifold will be returned.

+
Parameters
+ + + +
sizeThe X, and Y dimensions of the square.
centerSet to true to shift the center to the origin.
+
+
+ +
+
+ +

◆ Circle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
CrossSection Circle (float radius,
int circularSegments = 0 
)
+
+static
+
+

Constructs a circle of a given radius.

+
Parameters
+ + + +
radiusRadius of the circle. Must be positive.
circularSegmentsNumber of segments along its diameter. Default is calculated by the static Quality defaults according to the radius.
+
+
+ +
+
+ +

◆ Area()

+ +
+
+ + + + + + + +
double Area () const
+
+

Return the total area covered by complex polygons making up the CrossSection.

+ +
+
+ +

◆ NumVert()

+ +
+
+ + + + + + + +
int NumVert () const
+
+

Return the number of vertices in the CrossSection.

+ +
+
+ +

◆ NumContour()

+ +
+
+ + + + + + + +
int NumContour () const
+
+

Return the number of contours (both outer and inner paths) in the CrossSection.

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + + + +
bool IsEmpty () const
+
+

Does the CrossSection contain any contours?

+ +
+
+ +

◆ Bounds()

+ +
+
+ + + + + + + +
Rect Bounds () const
+
+

Returns the axis-aligned bounding rectangle of all the CrossSections' vertices.

+ +
+
+ +

◆ Translate()

+ +
+
+ + + + + + + + +
CrossSection Translate (const glm::vec2 v) const
+
+

Move this CrossSection in space. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
vThe vector to add to every vertex.
+
+
+ +
+
+ +

◆ Rotate()

+ +
+
+ + + + + + + + +
CrossSection Rotate (float degrees) const
+
+

Applies a (Z-axis) rotation to the CrossSection, in degrees. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
degreesdegrees about the Z-axis to rotate.
+
+
+ +
+
+ +

◆ Scale()

+ +
+
+ + + + + + + + +
CrossSection Scale (const glm::vec2 scale) const
+
+

Scale this CrossSection in space. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
vThe vector to multiply every vertex by per component.
+
+
+ +
+
+ +

◆ Mirror()

+ +
+
+ + + + + + + + +
CrossSection Mirror (const glm::vec2 ax) const
+
+

Mirror this CrossSection over the arbitrary axis described by the unit form of the given vector. If the length of the vector is zero, an empty CrossSection is returned. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
axthe axis to be mirrored over
+
+
+ +
+
+ +

◆ Transform()

+ +
+
+ + + + + + + + +
CrossSection Transform (const glm::mat3x2 & m) const
+
+

Transform this CrossSection in space. The first two columns form a 2x2 matrix transform and the last is a translation vector. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
mThe affine transform matrix to apply to all the vertices.
+
+
+ +
+
+ +

◆ Warp()

+ +
+
+ + + + + + + + +
CrossSection Warp (std::function< void(glm::vec2 &)> warpFunc) const
+
+

Move the vertices of this CrossSection (creating a new one) according to any arbitrary input function, followed by a union operation (with a Positive fill rule) that ensures any introduced intersections are not included in the result.

+
Parameters
+ + +
warpFuncA function that modifies a given vertex position.
+
+
+ +
+
+ +

◆ WarpBatch()

+ +
+
+ + + + + + + + +
CrossSection WarpBatch (std::function< void(VecView< glm::vec2 >)> warpFunc) const
+
+

Same as CrossSection::Warp but calls warpFunc with a VecView which is roughly equivalent to std::span pointing to all vec2 elements to be modified in-place

+
Parameters
+ + +
warpFuncA function that modifies multiple vertex positions.
+
+
+ +
+
+ +

◆ Simplify()

+ +
+
+ + + + + + + + +
CrossSection Simplify (double epsilon = 1e-6) const
+
+

Remove vertices from the contours in this CrossSection that are less than the specified distance epsilon from an imaginary line that passes through its two adjacent vertices. Near duplicate vertices and collinear points will be removed at lower epsilons, with elimination of line segments becoming increasingly aggressive with larger epsilons.

+

It is recommended to apply this function following Offset, in order to clean up any spurious tiny line segments introduced that do not improve quality in any meaningful way. This is particularly important if further offseting operations are to be performed, which would compound the issue.

+ +
+
+ +

◆ Offset()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CrossSection Offset (double delta,
JoinType jointype,
double miter_limit = 2.0,
int circularSegments = 0 
) const
+
+

Inflate the contours in CrossSection by the specified delta, handling corners according to the given JoinType.

+
Parameters
+ + + + + +
deltaPositive deltas will cause the expansion of outlining contours to expand, and retraction of inner (hole) contours. Negative deltas will have the opposite effect.
jtThe join type specifying the treatment of contour joins (corners).
miter_limitThe maximum distance in multiples of delta that vertices can be offset from their original positions with before squaring is applied, when the join type is Miter (default is 2, which is the minimum allowed). See the Clipper2 MiterLimit page for a visual example.
circularSegmentsNumber of segments per 360 degrees of JoinType::Round corners (roughly, the number of vertices that will be added to each contour). Default is calculated by the static Quality defaults according to the radius.
+
+
+ +
+
+ +

◆ Boolean()

+ +
+
+ + + + + + + + + + + + + + + + + + +
CrossSection Boolean (const CrossSectionsecond,
OpType op 
) const
+
+

Perform the given boolean operation between this and another CrossSection.

+ +
+
+ +

◆ BatchBoolean()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
CrossSection BatchBoolean (const std::vector< CrossSection > & crossSections,
OpType op 
)
+
+static
+
+

Perform the given boolean operation on a list of CrossSections. In case of Subtract, all CrossSections in the tail are differenced from the head.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
CrossSection operator+ (const CrossSectionQ) const
+
+

Compute the boolean union between two cross-sections.

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
CrossSection & operator+= (const CrossSectionQ)
+
+

Compute the boolean union between two cross-sections, assigning the result to the first.

+ +
+
+ +

◆ operator-()

+ +
+
+ + + + + + + + +
CrossSection operator- (const CrossSectionQ) const
+
+

Compute the boolean difference of a (clip) cross-section from another (subject).

+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + + + + +
CrossSection & operator-= (const CrossSectionQ)
+
+

Compute the boolean difference of a (clip) cross-section from a another (subject), assigning the result to the subject.

+ +
+
+ +

◆ operator^()

+ +
+
+ + + + + + + + +
CrossSection operator^ (const CrossSectionQ) const
+
+

Compute the boolean intersection between two cross-sections.

+ +
+
+ +

◆ operator^=()

+ +
+
+ + + + + + + + +
CrossSection & operator^= (const CrossSectionQ)
+
+

Compute the boolean intersection between two cross-sections, assigning the result to the first.

+ +
+
+ +

◆ Compose()

+ +
+
+ + + + + +
+ + + + + + + + +
CrossSection Compose (std::vector< CrossSection > & crossSections)
+
+static
+
+

Construct a CrossSection from a vector of other CrossSections (batch boolean union).

+ +
+
+ +

◆ Decompose()

+ +
+
+ + + + + + + +
std::vector< CrossSection > Decompose () const
+
+

This operation returns a vector of CrossSections that are topologically disconnected, each containing one outline contour with zero or more holes.

+ +
+
+ +

◆ Hull() [1/4]

+ +
+
+ + + + + + + +
CrossSection Hull () const
+
+

Compute the convex hull of this cross-section.

+ +
+
+ +

◆ Hull() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
CrossSection Hull (const std::vector< CrossSection > & crossSections)
+
+static
+
+

Compute the convex hull enveloping a set of cross-sections.

+
Parameters
+ + +
crossSectionsA vector of cross-sections over which to compute a convex hull.
+
+
+ +
+
+ +

◆ Hull() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
CrossSection Hull (const SimplePolygon poly)
+
+static
+
+

Compute the convex hull of a set of points. If the given points are fewer than 3, an empty CrossSection will be returned.

+
Parameters
+ + +
ptsA vector of 2-dimensional points over which to compute a convex hull.
+
+
+ +
+
+ +

◆ Hull() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
CrossSection Hull (const Polygons polys)
+
+static
+
+

Compute the convex hull of a set of points/polygons. If the given points are fewer than 3, an empty CrossSection will be returned.

+
Parameters
+ + +
ptsA vector of vectors of 2-dimensional points over which to compute a convex hull.
+
+
+ +
+
+ +

◆ ToPolygons()

+ +
+
+ + + + + + + +
Polygons ToPolygons () const
+
+

Return the contours of this CrossSection as a Polygons.

+ +
+
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_cross_section.js b/docs/html/classmanifold_1_1_cross_section.js new file mode 100644 index 000000000..1e407387c --- /dev/null +++ b/docs/html/classmanifold_1_1_cross_section.js @@ -0,0 +1,43 @@ +var classmanifold_1_1_cross_section = +[ + [ "FillRule", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4", [ + [ "EvenOdd", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a8e586e4bd2c45e86222301f2e6e0e390", null ], + [ "NonZero", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3d0365a27a39c0af183445fc4d932a8a", null ], + [ "Positive", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3289297424e01eda5b788c083bbf3147", null ], + [ "Negative", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4affb9356ff2b7da85c75c92fa7ea03b8b", null ] + ] ], + [ "JoinType", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395d", [ + [ "Square", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395daceb46ca115d05c51aa5a16a8867c3304", null ], + [ "Round", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dab7f41fc1412ad2ee75e9b2635d3b9d5c", null ], + [ "Miter", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dae4396f81cd926bb129ccf3c147c64514", null ] + ] ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#acbed403d82ee8d55f3be2c9a5f963ec0", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#ada3a36554c48080ae963a9628de79436", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#aca5659d6e02ee4583791b54285d682a2", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#a885334a617ae0eea9402f74a20f4408e", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#ad2f60f6e1e3d45e773a595a1be246cf2", null ], + [ "Area", "classmanifold_1_1_cross_section.html#ac84b151a969c68d662637e8245548666", null ], + [ "NumVert", "classmanifold_1_1_cross_section.html#a85b690c706c5e2c2c29e0ced0c2728ca", null ], + [ "NumContour", "classmanifold_1_1_cross_section.html#af73463c82eede09392aff17a7154a00c", null ], + [ "IsEmpty", "classmanifold_1_1_cross_section.html#a8e12342fc420701fbffd97025421575a", null ], + [ "Bounds", "classmanifold_1_1_cross_section.html#ae69af2b193a98c4adc6f613a7463482c", null ], + [ "Translate", "classmanifold_1_1_cross_section.html#a106b1c0c300c4820cd9f5ec2f683a0db", null ], + [ "Rotate", "classmanifold_1_1_cross_section.html#a95da829a99ea68c24170525e849e7dc4", null ], + [ "Scale", "classmanifold_1_1_cross_section.html#af181324d8998fd89fa7a3e8bc7ef905c", null ], + [ "Mirror", "classmanifold_1_1_cross_section.html#adf67b7a277a85b21115f7063361da2ff", null ], + [ "Transform", "classmanifold_1_1_cross_section.html#af6b6f90c21018d47d860713c60a8399c", null ], + [ "Warp", "classmanifold_1_1_cross_section.html#a6c51d81d2e730c4a3325b4ba9b3ead39", null ], + [ "WarpBatch", "classmanifold_1_1_cross_section.html#ae004e45467f97624c89465248f4ffda1", null ], + [ "Simplify", "classmanifold_1_1_cross_section.html#aa46f202c1b92251f77fd497dc8fd9daf", null ], + [ "Offset", "classmanifold_1_1_cross_section.html#a9040df87b5b8b9b7705d6c6e62188d8a", null ], + [ "Boolean", "classmanifold_1_1_cross_section.html#a05734d6b0b1fb38d56865b9c73c806f2", null ], + [ "operator+", "classmanifold_1_1_cross_section.html#a347c593a12693ee05159b34db0957580", null ], + [ "operator+=", "classmanifold_1_1_cross_section.html#a1876fe37a88ce88f560d70e869e0b82a", null ], + [ "operator-", "classmanifold_1_1_cross_section.html#af6a000221ca368c9f2ed3e1f271cfb7f", null ], + [ "operator-=", "classmanifold_1_1_cross_section.html#a3f6a38bbe4bc0fbb90efa8aee5da12c0", null ], + [ "operator^", "classmanifold_1_1_cross_section.html#a34fcc007d18275e2cc32f4c99bc94cda", null ], + [ "operator^=", "classmanifold_1_1_cross_section.html#aa0e45fcdedab6a1288682bbb9a9959b3", null ], + [ "Decompose", "classmanifold_1_1_cross_section.html#a48f77ce6390caee13a94f681893fb65c", null ], + [ "Hull", "classmanifold_1_1_cross_section.html#aa5ea1caf54ddac72d939a00d13763ace", null ], + [ "ToPolygons", "classmanifold_1_1_cross_section.html#a209a83b1c39a84e094da9e854a7b8bc2", null ] +]; \ No newline at end of file diff --git a/docs/html/classmanifold_1_1_csg_leaf_node-members.html b/docs/html/classmanifold_1_1_csg_leaf_node-members.html new file mode 100644 index 000000000..16d05b99b --- /dev/null +++ b/docs/html/classmanifold_1_1_csg_leaf_node-members.html @@ -0,0 +1,127 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CsgLeafNode Member List
+
+
+ +

This is the complete list of members for CsgLeafNode, including all inherited members.

+ + + + + + + + + + + + + + +
Boolean(const std::shared_ptr< CsgNode > &second, OpType op) (defined in CsgNode)CsgNodevirtual
Compose(const std::vector< std::shared_ptr< CsgLeafNode > > &nodes)CsgLeafNodestatic
CsgLeafNode() (defined in CsgLeafNode)CsgLeafNode
CsgLeafNode(std::shared_ptr< const Manifold::Impl > pImpl_) (defined in CsgLeafNode)CsgLeafNode
CsgLeafNode(std::shared_ptr< const Manifold::Impl > pImpl_, glm::mat4x3 transform_) (defined in CsgLeafNode)CsgLeafNode
GetImpl() const (defined in CsgLeafNode)CsgLeafNode
GetNodeType() const override (defined in CsgLeafNode)CsgLeafNodevirtual
GetTransform() const override (defined in CsgLeafNode)CsgLeafNodevirtual
Rotate(float xDegrees=0, float yDegrees=0, float zDegrees=0) const (defined in CsgNode)CsgNode
Scale(const glm::vec3 &s) const (defined in CsgNode)CsgNode
ToLeafNode() const override (defined in CsgLeafNode)CsgLeafNodevirtual
Transform(const glm::mat4x3 &m) const override (defined in CsgLeafNode)CsgLeafNodevirtual
Translate(const glm::vec3 &t) const (defined in CsgNode)CsgNode
+
+ + + + diff --git a/docs/html/classmanifold_1_1_csg_leaf_node.html b/docs/html/classmanifold_1_1_csg_leaf_node.html new file mode 100644 index 000000000..be79deea6 --- /dev/null +++ b/docs/html/classmanifold_1_1_csg_leaf_node.html @@ -0,0 +1,294 @@ + + + + + + + +Manifold: CsgLeafNode Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CsgLeafNode Class Referencefinal
+
+
+ +

Inherits CsgNode.

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CsgLeafNode (std::shared_ptr< const Manifold::Impl > pImpl_)
 
CsgLeafNode (std::shared_ptr< const Manifold::Impl > pImpl_, glm::mat4x3 transform_)
 
+std::shared_ptr< const Manifold::ImplGetImpl () const
 
std::shared_ptr< CsgLeafNodeToLeafNode () const override
 
std::shared_ptr< CsgNodeTransform (const glm::mat4x3 &m) const override
 
CsgNodeType GetNodeType () const override
 
glm::mat4x3 GetTransform () const override
 
- Public Member Functions inherited from CsgNode
+virtual std::shared_ptr< CsgNodeBoolean (const std::shared_ptr< CsgNode > &second, OpType op)
 
+std::shared_ptr< CsgNodeTranslate (const glm::vec3 &t) const
 
+std::shared_ptr< CsgNodeScale (const glm::vec3 &s) const
 
+std::shared_ptr< CsgNodeRotate (float xDegrees=0, float yDegrees=0, float zDegrees=0) const
 
+ + + +

+Static Public Member Functions

static Manifold::Impl Compose (const std::vector< std::shared_ptr< CsgLeafNode > > &nodes)
 
+

Member Function Documentation

+ +

◆ ToLeafNode()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< CsgLeafNode > ToLeafNode () const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ Transform()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< CsgNode > Transform (const glm::mat4x3 & m) const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ GetNodeType()

+ +
+
+ + + + + +
+ + + + + + + +
CsgNodeType GetNodeType () const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ GetTransform()

+ +
+
+ + + + + +
+ + + + + + + +
glm::mat4x3 GetTransform () const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ Compose()

+ +
+
+ + + + + +
+ + + + + + + + +
Manifold::Impl Compose (const std::vector< std::shared_ptr< CsgLeafNode > > & nodes)
+
+static
+
+

Efficient union of a set of pairwise disjoint meshes.

+ +
+
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_csg_node-members.html b/docs/html/classmanifold_1_1_csg_node-members.html new file mode 100644 index 000000000..87d0ac48d --- /dev/null +++ b/docs/html/classmanifold_1_1_csg_node-members.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CsgNode Member List
+
+
+ +

This is the complete list of members for CsgNode, including all inherited members.

+ + + + + + + + + +
Boolean(const std::shared_ptr< CsgNode > &second, OpType op) (defined in CsgNode)CsgNodevirtual
GetNodeType() const =0 (defined in CsgNode)CsgNodepure virtual
GetTransform() const =0 (defined in CsgNode)CsgNodepure virtual
Rotate(float xDegrees=0, float yDegrees=0, float zDegrees=0) const (defined in CsgNode)CsgNode
Scale(const glm::vec3 &s) const (defined in CsgNode)CsgNode
ToLeafNode() const =0 (defined in CsgNode)CsgNodepure virtual
Transform(const glm::mat4x3 &m) const =0 (defined in CsgNode)CsgNodepure virtual
Translate(const glm::vec3 &t) const (defined in CsgNode)CsgNode
+
+ + + + diff --git a/docs/html/classmanifold_1_1_csg_node.html b/docs/html/classmanifold_1_1_csg_node.html new file mode 100644 index 000000000..e1ea6949b --- /dev/null +++ b/docs/html/classmanifold_1_1_csg_node.html @@ -0,0 +1,147 @@ + + + + + + + +Manifold: CsgNode Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CsgNode Class Referenceabstract
+
+
+ +

Inherits enable_shared_from_this< CsgNode >.

+ +

Inherited by CsgLeafNode, and CsgOpNode.

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual std::shared_ptr< CsgLeafNodeToLeafNode () const =0
 
+virtual std::shared_ptr< CsgNodeTransform (const glm::mat4x3 &m) const =0
 
+virtual CsgNodeType GetNodeType () const =0
 
+virtual glm::mat4x3 GetTransform () const =0
 
+virtual std::shared_ptr< CsgNodeBoolean (const std::shared_ptr< CsgNode > &second, OpType op)
 
+std::shared_ptr< CsgNodeTranslate (const glm::vec3 &t) const
 
+std::shared_ptr< CsgNodeScale (const glm::vec3 &s) const
 
+std::shared_ptr< CsgNodeRotate (float xDegrees=0, float yDegrees=0, float zDegrees=0) const
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_csg_op_node-members.html b/docs/html/classmanifold_1_1_csg_op_node-members.html new file mode 100644 index 000000000..47a0a973e --- /dev/null +++ b/docs/html/classmanifold_1_1_csg_op_node-members.html @@ -0,0 +1,125 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CsgOpNode Member List
+
+
+ +

This is the complete list of members for CsgOpNode, including all inherited members.

+ + + + + + + + + + + + +
Boolean(const std::shared_ptr< CsgNode > &second, OpType op) override (defined in CsgOpNode)CsgOpNodevirtual
CsgOpNode() (defined in CsgOpNode)CsgOpNode
CsgOpNode(const std::vector< std::shared_ptr< CsgNode > > &children, OpType op) (defined in CsgOpNode)CsgOpNode
CsgOpNode(std::vector< std::shared_ptr< CsgNode > > &&children, OpType op) (defined in CsgOpNode)CsgOpNode
GetNodeType() const override (defined in CsgOpNode)CsgOpNodeinlinevirtual
GetTransform() const override (defined in CsgOpNode)CsgOpNodevirtual
Rotate(float xDegrees=0, float yDegrees=0, float zDegrees=0) const (defined in CsgNode)CsgNode
Scale(const glm::vec3 &s) const (defined in CsgNode)CsgNode
ToLeafNode() const override (defined in CsgOpNode)CsgOpNodevirtual
Transform(const glm::mat4x3 &m) const override (defined in CsgOpNode)CsgOpNodevirtual
Translate(const glm::vec3 &t) const (defined in CsgNode)CsgNode
+
+ + + + diff --git a/docs/html/classmanifold_1_1_csg_op_node.html b/docs/html/classmanifold_1_1_csg_op_node.html new file mode 100644 index 000000000..aa76c0e74 --- /dev/null +++ b/docs/html/classmanifold_1_1_csg_op_node.html @@ -0,0 +1,296 @@ + + + + + + + +Manifold: CsgOpNode Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CsgOpNode Class Referencefinal
+
+
+ +

Inherits CsgNode.

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CsgOpNode (const std::vector< std::shared_ptr< CsgNode > > &children, OpType op)
 
CsgOpNode (std::vector< std::shared_ptr< CsgNode > > &&children, OpType op)
 
std::shared_ptr< CsgNodeBoolean (const std::shared_ptr< CsgNode > &second, OpType op) override
 
std::shared_ptr< CsgNodeTransform (const glm::mat4x3 &m) const override
 
std::shared_ptr< CsgLeafNodeToLeafNode () const override
 
CsgNodeType GetNodeType () const override
 
glm::mat4x3 GetTransform () const override
 
- Public Member Functions inherited from CsgNode
+std::shared_ptr< CsgNodeTranslate (const glm::vec3 &t) const
 
+std::shared_ptr< CsgNodeScale (const glm::vec3 &s) const
 
+std::shared_ptr< CsgNodeRotate (float xDegrees=0, float yDegrees=0, float zDegrees=0) const
 
+

Member Function Documentation

+ +

◆ Boolean()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< CsgNode > Boolean (const std::shared_ptr< CsgNode > & second,
OpType op 
)
+
+overridevirtual
+
+ +

Reimplemented from CsgNode.

+ +
+
+ +

◆ Transform()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< CsgNode > Transform (const glm::mat4x3 & m) const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ ToLeafNode()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< CsgLeafNode > ToLeafNode () const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ GetNodeType()

+ +
+
+ + + + + +
+ + + + + + + +
CsgNodeType GetNodeType () const
+
+inlineoverridevirtual
+
+ +

Implements CsgNode.

+ +
+
+ +

◆ GetTransform()

+ +
+
+ + + + + +
+ + + + + + + +
glm::mat4x3 GetTransform () const
+
+overridevirtual
+
+ +

Implements CsgNode.

+ +
+
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_hash_table-members.html b/docs/html/classmanifold_1_1_hash_table-members.html new file mode 100644 index 000000000..dc2b7362c --- /dev/null +++ b/docs/html/classmanifold_1_1_hash_table-members.html @@ -0,0 +1,124 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HashTable< V, H > Member List
+
+
+ +

This is the complete list of members for HashTable< V, H >, including all inherited members.

+ + + + + + + + + + + +
D() (defined in HashTable< V, H >)HashTable< V, H >inline
Entries() const (defined in HashTable< V, H >)HashTable< V, H >inline
FilledFraction() const (defined in HashTable< V, H >)HashTable< V, H >inline
Full() const (defined in HashTable< V, H >)HashTable< V, H >inline
GetValueStore() (defined in HashTable< V, H >)HashTable< V, H >inline
HashTable(size_t size, uint32_t step=1) (defined in HashTable< V, H >)HashTable< V, H >inline
HashTable(const HashTable &other) (defined in HashTable< V, H >)HashTable< V, H >inline
Open() (defined in HashTable< V, H >)HashTable< V, H >inlinestatic
operator=(const HashTable &other) (defined in HashTable< V, H >)HashTable< V, H >inline
Size() const (defined in HashTable< V, H >)HashTable< V, H >inline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_hash_table.html b/docs/html/classmanifold_1_1_hash_table.html new file mode 100644 index 000000000..4dd9b0cb0 --- /dev/null +++ b/docs/html/classmanifold_1_1_hash_table.html @@ -0,0 +1,153 @@ + + + + + + + +Manifold: HashTable< V, H > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HashTable< V, H > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashTable (size_t size, uint32_t step=1)
 
HashTable (const HashTable &other)
 
+HashTableoperator= (const HashTable &other)
 
+HashTableD< V, H > D ()
 
+int Entries () const
 
+size_t Size () const
 
+bool Full () const
 
+float FilledFraction () const
 
+Vec< V > & GetValueStore ()
 
+ + + +

+Static Public Member Functions

+static Uint64 Open ()
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_hash_table_d-members.html b/docs/html/classmanifold_1_1_hash_table_d-members.html new file mode 100644 index 000000000..4d8a8060e --- /dev/null +++ b/docs/html/classmanifold_1_1_hash_table_d-members.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HashTableD< V, H > Member List
+
+
+ +

This is the complete list of members for HashTableD< V, H >, including all inherited members.

+ + + + + + + + + + +
At(int idx) (defined in HashTableD< V, H >)HashTableD< V, H >inline
At(int idx) const (defined in HashTableD< V, H >)HashTableD< V, H >inline
Full() const (defined in HashTableD< V, H >)HashTableD< V, H >inline
HashTableD(Vec< Uint64 > &keys, Vec< V > &values, std::atomic< size_t > &used, uint32_t step=1) (defined in HashTableD< V, H >)HashTableD< V, H >inline
Insert(Uint64 key, const V &val) (defined in HashTableD< V, H >)HashTableD< V, H >inline
KeyAt(int idx) const (defined in HashTableD< V, H >)HashTableD< V, H >inline
operator[](Uint64 key) (defined in HashTableD< V, H >)HashTableD< V, H >inline
operator[](Uint64 key) const (defined in HashTableD< V, H >)HashTableD< V, H >inline
Size() const (defined in HashTableD< V, H >)HashTableD< V, H >inline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_hash_table_d.html b/docs/html/classmanifold_1_1_hash_table_d.html new file mode 100644 index 000000000..430c91604 --- /dev/null +++ b/docs/html/classmanifold_1_1_hash_table_d.html @@ -0,0 +1,146 @@ + + + + + + + +Manifold: HashTableD< V, H > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HashTableD< V, H > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashTableD (Vec< Uint64 > &keys, Vec< V > &values, std::atomic< size_t > &used, uint32_t step=1)
 
+int Size () const
 
+bool Full () const
 
+void Insert (Uint64 key, const V &val)
 
+V & operator[] (Uint64 key)
 
+const V & operator[] (Uint64 key) const
 
+Uint64 KeyAt (int idx) const
 
+V & At (int idx)
 
+const V & At (int idx) const
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_manifold-members.html b/docs/html/classmanifold_1_1_manifold-members.html new file mode 100644 index 000000000..3572d3c9d --- /dev/null +++ b/docs/html/classmanifold_1_1_manifold-members.html @@ -0,0 +1,183 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Manifold Member List
+
+
+ +

This is the complete list of members for Manifold, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AsOriginal() constManifold
BatchBoolean(const std::vector< Manifold > &manifolds, OpType op)Manifoldstatic
Boolean(const Manifold &second, OpType op) constManifold
BoundingBox() constManifold
CalculateCurvature(int gaussianIdx, int meanIdx) constManifold
CalculateNormals(int normalIdx, float minSharpAngle=60) constManifold
Compose(const std::vector< Manifold > &)Manifoldstatic
Cube(glm::vec3 size=glm::vec3(1.0f), bool center=false)Manifoldstatic
Cylinder(float height, float radiusLow, float radiusHigh=-1.0f, int circularSegments=0, bool center=false)Manifoldstatic
Decompose() constManifold
Error enum name (defined in Manifold)Manifold
Extrude(const Polygons &crossSection, float height, int nDivisions=0, float twistDegrees=0.0f, glm::vec2 scaleTop=glm::vec2(1.0f))Manifoldstatic
Genus() constManifold
GetMesh() constManifold
GetMeshGL(glm::ivec3 normalIdx=glm::ivec3(0)) constManifold
GetProperties() constManifold
Hull() constManifold
Hull(const std::vector< Manifold > &manifolds)Manifoldstatic
Hull(const std::vector< glm::vec3 > &pts)Manifoldstatic
IsEmpty() constManifold
Manifold()Manifold
Manifold(const Manifold &other) (defined in Manifold)Manifold
Manifold(Manifold &&) noexcept (defined in Manifold)Manifold
Manifold(const MeshGL &, const std::vector< float > &propertyTolerance={})Manifold
Manifold(const Mesh &)Manifold
MatchesTriNormals() constManifold
MinGap(const Manifold &other, float searchLength) constManifold
Mirror(glm::vec3) constManifold
NumDegenerateTris() constManifold
NumEdge() constManifold
NumOverlaps(const Manifold &second) constManifold
NumProp() constManifold
NumPropVert() constManifold
NumTri() constManifold
NumVert() constManifold
operator+(const Manifold &) constManifold
operator+=(const Manifold &)Manifold
operator-(const Manifold &) constManifold
operator-=(const Manifold &)Manifold
operator=(const Manifold &other) (defined in Manifold)Manifold
operator=(Manifold &&) noexcept (defined in Manifold)Manifold
operator^(const Manifold &) constManifold
operator^=(const Manifold &)Manifold
OriginalID() constManifold
Precision() constManifold
Project() constManifold
Refine(int) constManifold
RefineToLength(float) constManifold
ReserveIDs(uint32_t)Manifoldstatic
Revolve(const Polygons &crossSection, int circularSegments=0, float revolveDegrees=360.0f)Manifoldstatic
Rotate(float xDegrees, float yDegrees=0.0f, float zDegrees=0.0f) constManifold
Scale(glm::vec3) constManifold
SetProperties(int, std::function< void(float *, glm::vec3, const float *)>) constManifold
Slice(float height=0) constManifold
Smooth(const MeshGL &, const std::vector< Smoothness > &sharpenedEdges={})Manifoldstatic
Smooth(const Mesh &, const std::vector< Smoothness > &sharpenedEdges={})Manifoldstatic
SmoothByNormals(int normalIdx) constManifold
SmoothOut(float minSharpAngle=60, float minSmoothness=0) constManifold
Sphere(float radius, int circularSegments=0)Manifoldstatic
Split(const Manifold &) constManifold
SplitByPlane(glm::vec3 normal, float originOffset) constManifold
Status() constManifold
Tetrahedron()Manifoldstatic
Transform(const glm::mat4x3 &) constManifold
Translate(glm::vec3) constManifold
TrimByPlane(glm::vec3 normal, float originOffset) constManifold
Warp(std::function< void(glm::vec3 &)>) constManifold
WarpBatch(std::function< void(VecView< glm::vec3 >)>) constManifold
~Manifold() (defined in Manifold)Manifold
+
+ + + + diff --git a/docs/html/classmanifold_1_1_manifold.html b/docs/html/classmanifold_1_1_manifold.html new file mode 100644 index 000000000..e4bf969ed --- /dev/null +++ b/docs/html/classmanifold_1_1_manifold.html @@ -0,0 +1,2053 @@ + + + + + + + +Manifold: Manifold Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Manifold Class Reference
+
+
+ +

#include <manifold.h>

+ + + + +

+Classes

struct  Impl
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Information

Details of the manifold

+
enum class  Error {
+  NoError +, NonFiniteVertex +, NotManifold +, VertexOutOfBounds +,
+  PropertiesWrongLength +, MissingPositionProperties +, MergeVectorsDifferentLengths +, MergeIndexOutOfBounds +,
+  TransformWrongLength +, RunIndexWrongLength +, FaceIDWrongLength +, InvalidConstruction +
+ }
 
Mesh GetMesh () const
 
MeshGL GetMeshGL (glm::ivec3 normalIdx=glm::ivec3(0)) const
 
bool IsEmpty () const
 
Error Status () const
 
int NumVert () const
 
int NumEdge () const
 
int NumTri () const
 
int NumProp () const
 
int NumPropVert () const
 
Box BoundingBox () const
 
float Precision () const
 
int Genus () const
 
Properties GetProperties () const
 
float MinGap (const Manifold &other, float searchLength) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Creation

Constructors

+
 Manifold ()
 
Manifold (const Manifold &other)
 
+Manifoldoperator= (const Manifold &other)
 
Manifold (Manifold &&) noexcept
 
+Manifoldoperator= (Manifold &&) noexcept
 
 Manifold (const MeshGL &, const std::vector< float > &propertyTolerance={})
 
 Manifold (const Mesh &)
 
static Manifold Smooth (const MeshGL &, const std::vector< Smoothness > &sharpenedEdges={})
 
static Manifold Smooth (const Mesh &, const std::vector< Smoothness > &sharpenedEdges={})
 
static Manifold Tetrahedron ()
 
static Manifold Cube (glm::vec3 size=glm::vec3(1.0f), bool center=false)
 
static Manifold Cylinder (float height, float radiusLow, float radiusHigh=-1.0f, int circularSegments=0, bool center=false)
 
static Manifold Sphere (float radius, int circularSegments=0)
 
static Manifold Extrude (const Polygons &crossSection, float height, int nDivisions=0, float twistDegrees=0.0f, glm::vec2 scaleTop=glm::vec2(1.0f))
 
static Manifold Revolve (const Polygons &crossSection, int circularSegments=0, float revolveDegrees=360.0f)
 
+ + + + + + +

Topological

No geometric calculations.

+
std::vector< ManifoldDecompose () const
 
static Manifold Compose (const std::vector< Manifold > &)
 
+ + + + + + + + +

Mesh ID

Details of the manifold's relation to its input meshes, for the purposes of reapplying mesh properties.

+
int OriginalID () const
 
Manifold AsOriginal () const
 
static uint32_t ReserveIDs (uint32_t)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Modification

Manifold Translate (glm::vec3) const
 
Manifold Scale (glm::vec3) const
 
Manifold Rotate (float xDegrees, float yDegrees=0.0f, float zDegrees=0.0f) const
 
Manifold Transform (const glm::mat4x3 &) const
 
Manifold Mirror (glm::vec3) const
 
Manifold Warp (std::function< void(glm::vec3 &)>) const
 
Manifold WarpBatch (std::function< void(VecView< glm::vec3 >)>) const
 
Manifold SetProperties (int, std::function< void(float *, glm::vec3, const float *)>) const
 
Manifold CalculateCurvature (int gaussianIdx, int meanIdx) const
 
Manifold CalculateNormals (int normalIdx, float minSharpAngle=60) const
 
Manifold SmoothByNormals (int normalIdx) const
 
Manifold SmoothOut (float minSharpAngle=60, float minSmoothness=0) const
 
Manifold Refine (int) const
 
Manifold RefineToLength (float) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

Boolean

Combine two manifolds

+
Manifold Boolean (const Manifold &second, OpType op) const
 
Manifold operator+ (const Manifold &) const
 
Manifoldoperator+= (const Manifold &)
 
Manifold operator- (const Manifold &) const
 
Manifoldoperator-= (const Manifold &)
 
Manifold operator^ (const Manifold &) const
 
Manifoldoperator^= (const Manifold &)
 
std::pair< Manifold, ManifoldSplit (const Manifold &) const
 
std::pair< Manifold, ManifoldSplitByPlane (glm::vec3 normal, float originOffset) const
 
Manifold TrimByPlane (glm::vec3 normal, float originOffset) const
 
static Manifold BatchBoolean (const std::vector< Manifold > &manifolds, OpType op)
 
+ + + + + +

2D from 3D

Polygons Slice (float height=0) const
 
Polygons Project () const
 
+ + + + + + + +

Convex hull

Manifold Hull () const
 
static Manifold Hull (const std::vector< Manifold > &manifolds)
 
static Manifold Hull (const std::vector< glm::vec3 > &pts)
 
+ + + + + + + + +

Testing hooks

These are just for internal testing.

+
bool MatchesTriNormals () const
 
int NumDegenerateTris () const
 
int NumOverlaps (const Manifold &second) const
 
+

Detailed Description

+

This library's internal representation of an oriented, 2-manifold, triangle mesh - a simple boundary-representation of a solid object. Use this class to store and operate on solids, and use MeshGL for input and output, or potentially Mesh if only basic geometry is required.

+

In addition to storing geometric data, a Manifold can also store an arbitrary number of vertex properties. These could be anything, e.g. normals, UV coordinates, colors, etc, but this library is completely agnostic. All properties are merely float values indexed by channel number. It is up to the user to associate channel numbers with meaning.

+

Manifold allows vertex properties to be shared for efficient storage, or to have multiple property verts associated with a single geometric vertex, allowing sudden property changes, e.g. at Boolean intersections, without sacrificing manifoldness.

+

Manifolds also keep track of their relationships to their inputs, via OriginalIDs and the faceIDs and transforms accessible through MeshGL. This allows object-level properties to be re-associated with the output after many operations, particularly useful for materials. Since separate object's properties are not mixed, there is no requirement that channels have consistent meaning between different inputs.

+

Constructor & Destructor Documentation

+ +

◆ Manifold() [1/3]

+ +
+
+ + + + + + + +
Manifold ()
+
+

Construct an empty Manifold.

+ +
+
+ +

◆ Manifold() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold (const MeshGLmeshGL,
const std::vector< float > & propertyTolerance = {} 
)
+
+

Convert a MeshGL into a Manifold, retaining its properties and merging only the positions according to the merge vectors. Will return an empty Manifold and set an Error Status if the result is not an oriented 2-manifold. Will collapse degenerate triangles and unnecessary vertices.

+

All fields are read, making this structure suitable for a lossless round-trip of data from GetMeshGL. For multi-material input, use ReserveIDs to set a unique originalID for each material, and sort the materials into triangle runs.

+
Parameters
+ + + +
meshGLThe input MeshGL.
propertyToleranceA vector of precision values for each property beyond position. If specified, the propertyTolerance vector must have size = numProp - 3. This is the amount of interpolation error allowed before two neighboring triangles are considered to be on a property boundary edge. Property boundary edges will be retained across operations even if the triangles are coplanar. Defaults to 1e-5, which works well for most properties in the [-1, 1] range.
+
+
+ +
+
+ +

◆ Manifold() [3/3]

+ +
+
+ + + + + + + + +
Manifold (const Meshmesh)
+
+

Convert a Mesh into a Manifold. Will return an empty Manifold and set an Error Status if the Mesh is not an oriented 2-manifold. Will collapse degenerate triangles and unnecessary vertices.

+
Parameters
+ + +
meshThe input Mesh.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Smooth() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Manifold Smooth (const MeshGLmeshGL,
const std::vector< Smoothness > & sharpenedEdges = {} 
)
+
+static
+
+

Constructs a smooth version of the input mesh by creating tangents; this method will throw if you have supplied tangents with your mesh already. The actual triangle resolution is unchanged; use the Refine() method to interpolate to a higher-resolution curve.

+

By default, every edge is calculated for maximum smoothness (very much approximately), attempting to minimize the maximum mean Curvature magnitude. No higher-order derivatives are considered, as the interpolation is independent per triangle, only sharing constraints on their boundaries.

+
Parameters
+ + + +
meshGLinput MeshGL.
sharpenedEdgesIf desired, you can supply a vector of sharpened halfedges, which should in general be a small subset of all halfedges. Order of entries doesn't matter, as each one specifies the desired smoothness (between zero and one, with one the default for all unspecified halfedges) and the halfedge index (3 * triangle index + [0,1,2] where 0 is the edge between triVert 0 and 1, etc).
+
+
+

At a smoothness value of zero, a sharp crease is made. The smoothness is interpolated along each edge, so the specified value should be thought of as an average. Where exactly two sharpened edges meet at a vertex, their tangents are rotated to be colinear so that the sharpened edge can be continuous. Vertices with only one sharpened edge are completely smooth, allowing sharpened edges to smoothly vanish at termination. A single vertex can be sharpened by sharping all edges that are incident on it, allowing cones to be formed.

+ +
+
+ +

◆ Smooth() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Manifold Smooth (const Meshmesh,
const std::vector< Smoothness > & sharpenedEdges = {} 
)
+
+static
+
+

Constructs a smooth version of the input mesh by creating tangents; this method will throw if you have supplied tangents with your mesh already. The actual triangle resolution is unchanged; use the Refine() method to interpolate to a higher-resolution curve.

+

By default, every edge is calculated for maximum smoothness (very much approximately), attempting to minimize the maximum mean Curvature magnitude. No higher-order derivatives are considered, as the interpolation is independent per triangle, only sharing constraints on their boundaries.

+
Parameters
+ + + +
meshinput Mesh.
sharpenedEdgesIf desired, you can supply a vector of sharpened halfedges, which should in general be a small subset of all halfedges. Order of entries doesn't matter, as each one specifies the desired smoothness (between zero and one, with one the default for all unspecified halfedges) and the halfedge index (3 * triangle index + [0,1,2] where 0 is the edge between triVert 0 and 1, etc).
+
+
+

At a smoothness value of zero, a sharp crease is made. The smoothness is interpolated along each edge, so the specified value should be thought of as an average. Where exactly two sharpened edges meet at a vertex, their tangents are rotated to be colinear so that the sharpened edge can be continuous. Vertices with only one sharpened edge are completely smooth, allowing sharpened edges to smoothly vanish at termination. A single vertex can be sharpened by sharping all edges that are incident on it, allowing cones to be formed.

+ +
+
+ +

◆ Tetrahedron()

+ +
+
+ + + + + +
+ + + + + + + +
Manifold Tetrahedron ()
+
+static
+
+

Constructs a tetrahedron centered at the origin with one vertex at (1,1,1) and the rest at similarly symmetric points.

+ +
+
+ +

◆ Cube()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Manifold Cube (glm::vec3 size = glm::vec3(1.0f),
bool center = false 
)
+
+static
+
+

Constructs a unit cube (edge lengths all one), by default in the first octant, touching the origin. If any dimensions in size are negative, or if all are zero, an empty Manifold will be returned.

+
Parameters
+ + + +
sizeThe X, Y, and Z dimensions of the box.
centerSet to true to shift the center to the origin.
+
+
+ +
+
+ +

◆ Cylinder()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Manifold Cylinder (float height,
float radiusLow,
float radiusHigh = -1.0f,
int circularSegments = 0,
bool center = false 
)
+
+static
+
+

A convenience constructor for the common case of extruding a circle. Can also form cones if both radii are specified.

+
Parameters
+ + + + + + +
heightZ-extent
radiusLowRadius of bottom circle. Must be positive.
radiusHighRadius of top circle. Can equal zero. Default is equal to radiusLow.
circularSegmentsHow many line segments to use around the circle. Default is calculated by the static Defaults.
centerSet to true to shift the center to the origin. Default is origin at the bottom.
+
+
+ +
+
+ +

◆ Sphere()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Manifold Sphere (float radius,
int circularSegments = 0 
)
+
+static
+
+

Constructs a geodesic sphere of a given radius.

+
Parameters
+ + + +
radiusRadius of the sphere. Must be positive.
circularSegmentsNumber of segments along its diameter. This number will always be rounded up to the nearest factor of four, as this sphere is constructed by refining an octahedron. This means there are a circle of vertices on all three of the axis planes. Default is calculated by the static Defaults.
+
+
+ +
+
+ +

◆ Extrude()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Manifold Extrude (const PolygonscrossSection,
float height,
int nDivisions = 0,
float twistDegrees = 0.0f,
glm::vec2 scaleTop = glm::vec2(1.0f) 
)
+
+static
+
+

Constructs a manifold from a set of polygons by extruding them along the Z-axis. Note that high twistDegrees with small nDivisions may cause self-intersection. This is not checked here and it is up to the user to choose the correct parameters.

+
Parameters
+ + + + + + +
crossSectionA set of non-overlapping polygons to extrude.
heightZ-extent of extrusion.
nDivisionsNumber of extra copies of the crossSection to insert into the shape vertically; especially useful in combination with twistDegrees to avoid interpolation artifacts. Default is none.
twistDegreesAmount to twist the top crossSection relative to the bottom, interpolated linearly for the divisions in between.
scaleTopAmount to scale the top (independently in X and Y). If the scale is {0, 0}, a pure cone is formed with only a single vertex at the top. Note that scale is applied after twist. Default {1, 1}.
+
+
+ +
+
+ +

◆ Revolve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Manifold Revolve (const PolygonscrossSection,
int circularSegments = 0,
float revolveDegrees = 360.0f 
)
+
+static
+
+

Constructs a manifold from a set of polygons by revolving this cross-section around its Y-axis and then setting this as the Z-axis of the resulting manifold. If the polygons cross the Y-axis, only the part on the positive X side is used. Geometrically valid input will result in geometrically valid output.

+
Parameters
+ + + + +
crossSectionA set of non-overlapping polygons to revolve.
circularSegmentsNumber of segments along its diameter. Default is calculated by the static Defaults.
revolveDegreesNumber of degrees to revolve. Default is 360 degrees.
+
+
+ +
+
+ +

◆ Compose()

+ +
+
+ + + + + +
+ + + + + + + + +
Manifold Compose (const std::vector< Manifold > & manifolds)
+
+static
+
+

Constructs a new manifold from a vector of other manifolds. This is a purely topological operation, so care should be taken to avoid creating overlapping results. It is the inverse operation of Decompose().

+
Parameters
+ + +
manifoldsA vector of Manifolds to lazy-union together.
+
+
+ +
+
+ +

◆ Decompose()

+ +
+
+ + + + + + + +
std::vector< Manifold > Decompose () const
+
+

This operation returns a vector of Manifolds that are topologically disconnected. If everything is connected, the vector is length one, containing a copy of the original. It is the inverse operation of Compose().

+ +
+
+ +

◆ GetMesh()

+ +
+
+ + + + + + + +
Mesh GetMesh () const
+
+

This returns a Mesh of simple vectors of vertices and triangles suitable for saving or other operations outside of the context of this library.

+ +
+
+ +

◆ GetMeshGL()

+ +
+
+ + + + + + + + +
MeshGL GetMeshGL (glm::ivec3 normalIdx = glm::ivec3(0)) const
+
+

The most complete output of this library, returning a MeshGL that is designed to easily push into a renderer, including all interleaved vertex properties that may have been input. It also includes relations to all the input meshes that form a part of this result and the transforms applied to each.

+
Parameters
+ + +
normalIdxIf the original MeshGL inputs that formed this manifold had properties corresponding to normal vectors, you can specify which property channels these are (x, y, z), which will cause this output MeshGL to automatically update these normals according to the applied transforms and front/back side. Each channel must be >= 3 and < numProp, and all original MeshGLs must use the same channels for their normals.
+
+
+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + + + +
bool IsEmpty () const
+
+

Does the Manifold have any triangles?

+ +
+
+ +

◆ Status()

+ +
+
+ + + + + + + +
Manifold::Error Status () const
+
+

Returns the reason for an input Mesh producing an empty Manifold. This Status only applies to Manifolds newly-created from an input Mesh - once they are combined into a new Manifold via operations, the status reverts to NoError, simply processing the problem mesh as empty. Likewise, empty meshes may still show NoError, for instance if they are small enough relative to their precision to be collapsed to nothing.

+ +
+
+ +

◆ NumVert()

+ +
+
+ + + + + + + +
int NumVert () const
+
+

The number of vertices in the Manifold.

+ +
+
+ +

◆ NumEdge()

+ +
+
+ + + + + + + +
int NumEdge () const
+
+

The number of edges in the Manifold.

+ +
+
+ +

◆ NumTri()

+ +
+
+ + + + + + + +
int NumTri () const
+
+

The number of triangles in the Manifold.

+ +
+
+ +

◆ NumProp()

+ +
+
+ + + + + + + +
int NumProp () const
+
+

The number of properties per vertex in the Manifold.

+ +
+
+ +

◆ NumPropVert()

+ +
+
+ + + + + + + +
int NumPropVert () const
+
+

The number of property vertices in the Manifold. This will always be >= NumVert, as some physical vertices may be duplicated to account for different properties on different neighboring triangles.

+ +
+
+ +

◆ BoundingBox()

+ +
+
+ + + + + + + +
Box BoundingBox () const
+
+

Returns the axis-aligned bounding box of all the Manifold's vertices.

+ +
+
+ +

◆ Precision()

+ +
+
+ + + + + + + +
float Precision () const
+
+

Returns the precision of this Manifold's vertices, which tracks the approximate rounding error over all the transforms and operations that have led to this state. Any triangles that are colinear within this precision are considered degenerate and removed. This is the value of ε defining ε-valid.

+ +
+
+ +

◆ Genus()

+ +
+
+ + + + + + + +
int Genus () const
+
+

The genus is a topological property of the manifold, representing the number of "handles". A sphere is 0, torus 1, etc. It is only meaningful for a single mesh, so it is best to call Decompose() first.

+ +
+
+ +

◆ GetProperties()

+ +
+
+ + + + + + + +
Properties GetProperties () const
+
+

Returns the surface area and volume of the manifold.

+ +
+
+ +

◆ MinGap()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float MinGap (const Manifoldother,
float searchLength 
) const
+
+

Returns the minimum gap between two manifolds. Returns a float between 0 and searchLength.

+
Parameters
+ + + +
otherThe other manifold to compute the minimum gap to.
searchLengthThe maximum distance to search for a minimum gap.
+
+
+ +
+
+ +

◆ OriginalID()

+ +
+
+ + + + + + + +
int OriginalID () const
+
+

If this mesh is an original, this returns its meshID that can be referenced by product manifolds' MeshRelation. If this manifold is a product, this returns -1.

+ +
+
+ +

◆ AsOriginal()

+ +
+
+ + + + + + + +
Manifold AsOriginal () const
+
+

This function condenses all coplanar faces in the relation, and collapses those edges. In the process the relation to ancestor meshes is lost and this new Manifold is marked an original. Properties are preserved, so if they do not match across an edge, that edge will be kept.

+ +
+
+ +

◆ ReserveIDs()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32_t ReserveIDs (uint32_t n)
+
+static
+
+

Returns the first of n sequential new unique mesh IDs for marking sets of triangles that can be looked up after further operations. Assign to MeshGL.runOriginalID vector.

+ +
+
+ +

◆ Translate()

+ +
+
+ + + + + + + + +
Manifold Translate (glm::vec3 v) const
+
+

Move this Manifold in space. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
vThe vector to add to every vertex.
+
+
+ +
+
+ +

◆ Scale()

+ +
+
+ + + + + + + + +
Manifold Scale (glm::vec3 v) const
+
+

Scale this Manifold in space. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
vThe vector to multiply every vertex by per component.
+
+
+ +
+
+ +

◆ Rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Manifold Rotate (float xDegrees,
float yDegrees = 0.0f,
float zDegrees = 0.0f 
) const
+
+

Applies an Euler angle rotation to the manifold, first about the X axis, then Y, then Z, in degrees. We use degrees so that we can minimize rounding error, and eliminate it completely for any multiples of 90 degrees. Additionally, more efficient code paths are used to update the manifold when the transforms only rotate by multiples of 90 degrees. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + + + +
xDegreesFirst rotation, degrees about the X-axis.
yDegreesSecond rotation, degrees about the Y-axis.
zDegreesThird rotation, degrees about the Z-axis.
+
+
+ +
+
+ +

◆ Transform()

+ +
+
+ + + + + + + + +
Manifold Transform (const glm::mat4x3 & m) const
+
+

Transform this Manifold in space. The first three columns form a 3x3 matrix transform and the last is a translation vector. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
mThe affine transform matrix to apply to all the vertices.
+
+
+ +
+
+ +

◆ Mirror()

+ +
+
+ + + + + + + + +
Manifold Mirror (glm::vec3 normal) const
+
+

Mirror this Manifold over the plane described by the unit form of the given normal vector. If the length of the normal is zero, an empty Manifold is returned. This operation can be chained. Transforms are combined and applied lazily.

+
Parameters
+ + +
normalThe normal vector of the plane to be mirrored over
+
+
+ +
+
+ +

◆ Warp()

+ +
+
+ + + + + + + + +
Manifold Warp (std::function< void(glm::vec3 &)> warpFunc) const
+
+

This function does not change the topology, but allows the vertices to be moved according to any arbitrary input function. It is easy to create a function that warps a geometrically valid object into one which overlaps, but that is not checked here, so it is up to the user to choose their function with discretion.

+
Parameters
+ + +
warpFuncA function that modifies a given vertex position.
+
+
+ +
+
+ +

◆ WarpBatch()

+ +
+
+ + + + + + + + +
Manifold WarpBatch (std::function< void(VecView< glm::vec3 >)> warpFunc) const
+
+

Same as Manifold::Warp but calls warpFunc with with a VecView which is roughly equivalent to std::span pointing to all vec3 elements to be modified in-place

+
Parameters
+ + +
warpFuncA function that modifies multiple vertex positions.
+
+
+ +
+
+ +

◆ SetProperties()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold SetProperties (int ,
std::function< void(float *, glm::vec3, const float *)>  
) const
+
+

Create a new copy of this manifold with updated vertex properties by supplying a function that takes the existing position and properties as input. You may specify any number of output properties, allowing creation and removal of channels. Note: undefined behavior will result if you read past the number of input properties or write past the number of output properties.

+
Parameters
+ + + +
numPropThe new number of properties per vertex.
propFuncA function that modifies the properties of a given vertex.
+
+
+ +
+
+ +

◆ CalculateCurvature()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold CalculateCurvature (int gaussianIdx,
int meanIdx 
) const
+
+

Curvature is the inverse of the radius of curvature, and signed such that positive is convex and negative is concave. There are two orthogonal principal curvatures at any point on a manifold, with one maximum and the other minimum. Gaussian curvature is their product, while mean curvature is their sum. This approximates them for every vertex and assigns them as vertex properties on the given channels.

+
Parameters
+ + + +
gaussianIdxThe property channel index in which to store the Gaussian curvature. An index < 0 will be ignored (stores nothing). The property set will be automatically expanded to include the channel index specified.
meanIdxThe property channel index in which to store the mean curvature. An index < 0 will be ignored (stores nothing). The property set will be automatically expanded to include the channel index specified.
+
+
+ +
+
+ +

◆ CalculateNormals()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold CalculateNormals (int normalIdx,
float minSharpAngle = 60 
) const
+
+

Fills in vertex properties for normal vectors, calculated from the mesh geometry. Flat faces composed of three or more triangles will remain flat.

+
Parameters
+ + + +
normalIdxThe property channel in which to store the X values of the normals. The X, Y, and Z channels will be sequential. The property set will be automatically expanded such that NumProp will be at least normalIdx + 3.
minSharpAngleAny edges with angles greater than this value will remain sharp, getting different normal vector properties on each side of the edge. By default, no edges are sharp and all normals are shared. With a value of zero, the model is faceted and all normals match their triangle normals, but in this case it would be better not to calculate normals at all.
+
+
+ +
+
+ +

◆ SmoothByNormals()

+ +
+
+ + + + + + + + +
Manifold SmoothByNormals (int normalIdx) const
+
+

Smooths out the Manifold by filling in the halfedgeTangent vectors. The geometry will remain unchanged until Refine or RefineToLength is called to interpolate the surface. This version uses the supplied vertex normal properties to define the tangent vectors. Faces of two coplanar triangles will be marked as quads, while faces with three or more will be flat.

+
Parameters
+ + +
normalIdxThe first property channel of the normals. NumProp must be at least normalIdx + 3. Any vertex where multiple normals exist and don't agree will result in a sharp edge.
+
+
+ +
+
+ +

◆ SmoothOut()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold SmoothOut (float minSharpAngle = 60,
float minSmoothness = 0 
) const
+
+

Smooths out the Manifold by filling in the halfedgeTangent vectors. The geometry will remain unchanged until Refine or RefineToLength is called to interpolate the surface. This version uses the geometry of the triangles and pseudo-normals to define the tangent vectors. Faces of two coplanar triangles will be marked as quads.

+
Parameters
+ + + +
minSharpAngledegrees, default 60. Any edges with angles greater than this value will remain sharp. The rest will be smoothed to G1 continuity, with the caveat that flat faces of three or more triangles will always remain flat. With a value of zero, the model is faceted, but in this case there is no point in smoothing.
minSmoothnessrange: 0 - 1, default 0. The smoothness applied to sharp angles. The default gives a hard edge, while values > 0 will give a small fillet on these sharp edges. A value of 1 is equivalent to a minSharpAngle of 180 - all edges will be smooth.
+
+
+ +
+
+ +

◆ Refine()

+ +
+
+ + + + + + + + +
Manifold Refine (int n) const
+
+

Increase the density of the mesh by splitting every edge into n pieces. For instance, with n = 2, each triangle will be split into 4 triangles. Quads will ignore their interior triangle bisector. These will all be coplanar (and will not be immediately collapsed) unless the Mesh/Manifold has halfedgeTangents specified (e.g. from the Smooth() constructor), in which case the new vertices will be moved to the interpolated surface according to their barycentric coordinates.

+
Parameters
+ + +
nThe number of pieces to split every edge into. Must be > 1.
+
+
+ +
+
+ +

◆ RefineToLength()

+ +
+
+ + + + + + + + +
Manifold RefineToLength (float length) const
+
+

Increase the density of the mesh by splitting each edge into pieces of roughly the input length. Interior verts are added to keep the rest of the triangulation edges also of roughly the same length. If halfedgeTangents are present (e.g. from the Smooth() constructor), the new vertices will be moved to the interpolated surface according to their barycentric coordinates. Quads will ignore their interior triangle bisector.

+
Parameters
+ + +
lengthThe length that edges will be broken down to.
+
+
+ +
+
+ +

◆ Boolean()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold Boolean (const Manifoldsecond,
OpType op 
) const
+
+

The central operation of this library: the Boolean combines two manifolds into another by calculating their intersections and removing the unused portions. ε-valid inputs will produce ε-valid output. ε-invalid input may fail triangulation.

+

These operations are optimized to produce nearly-instant results if either input is empty or their bounding boxes do not overlap.

+
Parameters
+ + + +
secondThe other Manifold.
opThe type of operation to perform.
+
+
+ +
+
+ +

◆ BatchBoolean()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Manifold BatchBoolean (const std::vector< Manifold > & manifolds,
OpType op 
)
+
+static
+
+

Perform the given boolean operation on a list of Manifolds. In case of Subtract, all Manifolds in the tail are differenced from the head.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
Manifold operator+ (const ManifoldQ) const
+
+

Shorthand for Boolean Union.

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
Manifold & operator+= (const ManifoldQ)
+
+

Shorthand for Boolean Union assignment.

+ +
+
+ +

◆ operator-()

+ +
+
+ + + + + + + + +
Manifold operator- (const ManifoldQ) const
+
+

Shorthand for Boolean Difference.

+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + + + + +
Manifold & operator-= (const ManifoldQ)
+
+

Shorthand for Boolean Difference assignment.

+ +
+
+ +

◆ operator^()

+ +
+
+ + + + + + + + +
Manifold operator^ (const ManifoldQ) const
+
+

Shorthand for Boolean Intersection.

+ +
+
+ +

◆ operator^=()

+ +
+
+ + + + + + + + +
Manifold & operator^= (const ManifoldQ)
+
+

Shorthand for Boolean Intersection assignment.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + + + + +
std::pair< Manifold, Manifold > Split (const Manifoldcutter) const
+
+

Split cuts this manifold in two using the cutter manifold. The first result is the intersection, second is the difference. This is more efficient than doing them separately.

+
Parameters
+ + +
cutter
+
+
+ +
+
+ +

◆ SplitByPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::pair< Manifold, Manifold > SplitByPlane (glm::vec3 normal,
float originOffset 
) const
+
+

Convenient version of Split() for a half-space.

+
Parameters
+ + + +
normalThis vector is normal to the cutting plane and its length does not matter. The first result is in the direction of this vector, the second result is on the opposite side.
originOffsetThe distance of the plane from the origin in the direction of the normal vector.
+
+
+ +
+
+ +

◆ TrimByPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold TrimByPlane (glm::vec3 normal,
float originOffset 
) const
+
+

Identical to SplitByPlane(), but calculating and returning only the first result.

+
Parameters
+ + + +
normalThis vector is normal to the cutting plane and its length does not matter. The result is in the direction of this vector from the plane.
originOffsetThe distance of the plane from the origin in the direction of the normal vector.
+
+
+ +
+
+ +

◆ Slice()

+ +
+
+ + + + + + + + +
Polygons Slice (float height = 0) const
+
+

Returns the cross section of this object parallel to the X-Y plane at the specified Z height, defaulting to zero. Using a height equal to the bottom of the bounding box will return the bottom faces, while using a height equal to the top of the bounding box will return empty.

+ +
+
+ +

◆ Project()

+ +
+
+ + + + + + + +
Polygons Project () const
+
+

Returns polygons representing the projected outline of this object onto the X-Y plane. These polygons will often self-intersect, so it is recommended to run them through the positive fill rule of CrossSection to get a sensible result before using them.

+ +
+
+ +

◆ Hull() [1/3]

+ +
+
+ + + + + + + +
Manifold Hull () const
+
+

Compute the convex hull of this manifold.

+ +
+
+ +

◆ Hull() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Manifold Hull (const std::vector< Manifold > & manifolds)
+
+static
+
+

Compute the convex hull enveloping a set of manifolds.

+
Parameters
+ + +
manifoldsA vector of manifolds over which to compute a convex hull.
+
+
+ +
+
+ +

◆ Hull() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Manifold Hull (const std::vector< glm::vec3 > & pts)
+
+static
+
+

Compute the convex hull of a set of points. If the given points are fewer than 4, or they are all coplanar, an empty Manifold will be returned.

+
Parameters
+ + +
ptsA vector of 3-dimensional points over which to compute a convex hull.
+
+
+ +
+
+ +

◆ MatchesTriNormals()

+ +
+
+ + + + + + + +
bool MatchesTriNormals () const
+
+

The triangle normal vectors are saved over the course of operations rather than recalculated to avoid rounding error. This checks that triangles still match their normal vectors within Precision().

+ +
+
+ +

◆ NumDegenerateTris()

+ +
+
+ + + + + + + +
int NumDegenerateTris () const
+
+

The number of triangles that are colinear within Precision(). This library attempts to remove all of these, but it cannot always remove all of them without changing the mesh by too much.

+ +
+
+ +

◆ NumOverlaps()

+ +
+
+ + + + + + + + +
int NumOverlaps (const Manifoldother) const
+
+

This is a checksum-style verification of the collider, simply returning the total number of edge-face bounding box overlaps between this and other.

+
Parameters
+ + +
otherA Manifold to overlap with.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_manifold.js b/docs/html/classmanifold_1_1_manifold.js new file mode 100644 index 000000000..89962b490 --- /dev/null +++ b/docs/html/classmanifold_1_1_manifold.js @@ -0,0 +1,53 @@ +var classmanifold_1_1_manifold = +[ + [ "Manifold", "classmanifold_1_1_manifold.html#ad5f60691d05e3402630122740cdf3a0b", null ], + [ "Manifold", "classmanifold_1_1_manifold.html#a4bc17f3828311b81bf61c34805501599", null ], + [ "Manifold", "classmanifold_1_1_manifold.html#a3f761d66cf1aa619203bb7622a5f93ea", null ], + [ "Decompose", "classmanifold_1_1_manifold.html#a7f20b130779680156ce0d28d91e5d106", null ], + [ "GetMesh", "classmanifold_1_1_manifold.html#a74a906cf6aacd6c0aef61b5079a8c750", null ], + [ "GetMeshGL", "classmanifold_1_1_manifold.html#a5516d4d27772731e50540edd45553a4d", null ], + [ "IsEmpty", "classmanifold_1_1_manifold.html#a8e12342fc420701fbffd97025421575a", null ], + [ "Status", "classmanifold_1_1_manifold.html#a423e2f2a67ccc0662a97e018b2c3886d", null ], + [ "NumVert", "classmanifold_1_1_manifold.html#a85b690c706c5e2c2c29e0ced0c2728ca", null ], + [ "NumEdge", "classmanifold_1_1_manifold.html#a104cf8e5b32ca6b5789e8694835f332a", null ], + [ "NumTri", "classmanifold_1_1_manifold.html#a4a625f14e59f176052a369213cd89ed6", null ], + [ "NumProp", "classmanifold_1_1_manifold.html#a4895dc2eac1d414f84cb8ecf3ff28348", null ], + [ "NumPropVert", "classmanifold_1_1_manifold.html#aad2ca3e816f01c7390a774c6ffa9854d", null ], + [ "BoundingBox", "classmanifold_1_1_manifold.html#a3d711d458596b520edd4cd7948a53e67", null ], + [ "Precision", "classmanifold_1_1_manifold.html#a013e5ce70b14d7d19393bcdffbc73ce2", null ], + [ "Genus", "classmanifold_1_1_manifold.html#a4b1e9ca27fc618965d0bbbc9d29fb5c1", null ], + [ "GetProperties", "classmanifold_1_1_manifold.html#ace809d84f44f59232653183bf86ece07", null ], + [ "MinGap", "classmanifold_1_1_manifold.html#a4a193d3f0a8c3af87961a9161cb17c68", null ], + [ "OriginalID", "classmanifold_1_1_manifold.html#a65b3ff79efc694738a4f56270cc608e6", null ], + [ "AsOriginal", "classmanifold_1_1_manifold.html#a9b4bbbc5b70a0d1f6b07c91f1684fb57", null ], + [ "Translate", "classmanifold_1_1_manifold.html#ac1ebb85b775a3293bca68c2339762a08", null ], + [ "Scale", "classmanifold_1_1_manifold.html#ae06789ff9cbe03e56260538276dd8183", null ], + [ "Rotate", "classmanifold_1_1_manifold.html#a54569c8da01e3385a426011a40a60629", null ], + [ "Transform", "classmanifold_1_1_manifold.html#a707b0078fbb9bbad183812d7290630ce", null ], + [ "Mirror", "classmanifold_1_1_manifold.html#a90bbf2842d0a2dc394d32f1a0a32c24a", null ], + [ "Warp", "classmanifold_1_1_manifold.html#aecb7b2e2a6a18a570154dec76658496c", null ], + [ "WarpBatch", "classmanifold_1_1_manifold.html#a76546a15aa48f9a9064e7bfc7792c302", null ], + [ "SetProperties", "classmanifold_1_1_manifold.html#a1aaf5a6d1a3d8c22f1a2c57a653cc389", null ], + [ "CalculateCurvature", "classmanifold_1_1_manifold.html#a19abb297f7b7b43f5c84562bcc7df705", null ], + [ "CalculateNormals", "classmanifold_1_1_manifold.html#a69c1ea423ea019bb932e3f55d3f6ff50", null ], + [ "SmoothByNormals", "classmanifold_1_1_manifold.html#aa0cbb9710c375f40591c3ae2dd62f2b4", null ], + [ "SmoothOut", "classmanifold_1_1_manifold.html#a8ce7d02b7f16afb5e9bfb8a948e206d3", null ], + [ "Refine", "classmanifold_1_1_manifold.html#a5d9227a2d10d8ad7b005555213ecd1ac", null ], + [ "RefineToLength", "classmanifold_1_1_manifold.html#a4fa475bc00e8b7a8fe28eea6b2d0e69e", null ], + [ "Boolean", "classmanifold_1_1_manifold.html#a9aad9d9b9a58ff2b7622de673742d1df", null ], + [ "operator+", "classmanifold_1_1_manifold.html#af95e73e5427d09b9d9e025d5cf367c30", null ], + [ "operator+=", "classmanifold_1_1_manifold.html#a530ec6ae990090f4b5c52f0d32eb2688", null ], + [ "operator-", "classmanifold_1_1_manifold.html#ad9da8c505e6846e9645008825833e1da", null ], + [ "operator-=", "classmanifold_1_1_manifold.html#ae17823c1f0efdfa41324892e52ab1f2b", null ], + [ "operator^", "classmanifold_1_1_manifold.html#ad1e4e5720f01934c44aebc597be4d104", null ], + [ "operator^=", "classmanifold_1_1_manifold.html#a88768bbf9fabf89e72b27a45321b6522", null ], + [ "Split", "classmanifold_1_1_manifold.html#a60e241b8a56d334b3d2d3dbd2fc808ba", null ], + [ "SplitByPlane", "classmanifold_1_1_manifold.html#adc134d7a6dfbf8c74e5d531bbeb330cb", null ], + [ "TrimByPlane", "classmanifold_1_1_manifold.html#a1b711341093c115f6688cbcaae5c8741", null ], + [ "Slice", "classmanifold_1_1_manifold.html#a0a49d91545cef4bfcc2c9d7cb2492061", null ], + [ "Project", "classmanifold_1_1_manifold.html#a328657b69e9bbaaee148572ca314677c", null ], + [ "Hull", "classmanifold_1_1_manifold.html#a9dc9e00112e2b063cfa6fe8482b1afe8", null ], + [ "MatchesTriNormals", "classmanifold_1_1_manifold.html#a611a5fd95dc5d49cd88182b8ead722b7", null ], + [ "NumDegenerateTris", "classmanifold_1_1_manifold.html#afe3dd0baef775b394ee1a1ee0e353e66", null ], + [ "NumOverlaps", "classmanifold_1_1_manifold.html#a0dd36b29fdc9003280f6b1b96907b704", null ] +]; \ No newline at end of file diff --git a/docs/html/classmanifold_1_1_quality-members.html b/docs/html/classmanifold_1_1_quality-members.html new file mode 100644 index 000000000..3469186df --- /dev/null +++ b/docs/html/classmanifold_1_1_quality-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Quality Member List
+
+
+ +

This is the complete list of members for Quality, including all inherited members.

+ + + + + + +
GetCircularSegments(float radius)Qualityinlinestatic
ResetToDefaults() (defined in Quality)Qualityinlinestatic
SetCircularSegments(int number)Qualityinlinestatic
SetMinCircularAngle(float angle)Qualityinlinestatic
SetMinCircularEdgeLength(float length)Qualityinlinestatic
+
+ + + + diff --git a/docs/html/classmanifold_1_1_quality.html b/docs/html/classmanifold_1_1_quality.html new file mode 100644 index 000000000..8506d9d8f --- /dev/null +++ b/docs/html/classmanifold_1_1_quality.html @@ -0,0 +1,267 @@ + + + + + + + +Manifold: Quality Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Quality Class Reference
+
+
+ +

#include <public.h>

+ + + + + + + + + + + + +

+Static Public Member Functions

static void SetMinCircularAngle (float angle)
 
static void SetMinCircularEdgeLength (float length)
 
static void SetCircularSegments (int number)
 
static int GetCircularSegments (float radius)
 
+static void ResetToDefaults ()
 
+

Detailed Description

+

These static properties control how circular shapes are quantized by default on construction. If circularSegments is specified, it takes precedence. If it is zero, then instead the minimum is used of the segments calculated based on edge length and angle, rounded up to the nearest multiple of four. To get numbers not divisible by four, circularSegments must be specified.

+

Member Function Documentation

+ +

◆ SetMinCircularAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
static void SetMinCircularAngle (float angle)
+
+inlinestatic
+
+

Sets an angle constraint the default number of circular segments for the CrossSection::Circle(), Manifold::Cylinder(), Manifold::Sphere(), and Manifold::Revolve() constructors. The number of segments will be rounded up to the nearest factor of four.

+
Parameters
+ + +
angleThe minimum angle in degrees between consecutive segments. The angle will increase if the the segments hit the minimum edge length. Default is 10 degrees.
+
+
+ +
+
+ +

◆ SetMinCircularEdgeLength()

+ +
+
+ + + + + +
+ + + + + + + + +
static void SetMinCircularEdgeLength (float length)
+
+inlinestatic
+
+

Sets a length constraint the default number of circular segments for the CrossSection::Circle(), Manifold::Cylinder(), Manifold::Sphere(), and Manifold::Revolve() constructors. The number of segments will be rounded up to the nearest factor of four.

+
Parameters
+ + +
lengthThe minimum length of segments. The length will increase if the the segments hit the minimum angle. Default is 1.0.
+
+
+ +
+
+ +

◆ SetCircularSegments()

+ +
+
+ + + + + +
+ + + + + + + + +
static void SetCircularSegments (int number)
+
+inlinestatic
+
+

Sets the default number of circular segments for the CrossSection::Circle(), Manifold::Cylinder(), Manifold::Sphere(), and Manifold::Revolve() constructors. Overrides the edge length and angle constraints and sets the number of segments to exactly this value.

+
Parameters
+ + +
numberNumber of circular segments. Default is 0, meaning no constraint is applied.
+
+
+ +
+
+ +

◆ GetCircularSegments()

+ +
+
+ + + + + +
+ + + + + + + + +
static int GetCircularSegments (float radius)
+
+inlinestatic
+
+

Determine the result of the SetMinCircularAngle(), SetMinCircularEdgeLength(), and SetCircularSegments() defaults.

+
Parameters
+ + +
radiusFor a given radius of circle, determine how many default segments there will be.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_sparse_indices-members.html b/docs/html/classmanifold_1_1_sparse_indices-members.html new file mode 100644 index 000000000..6cfa01d0c --- /dev/null +++ b/docs/html/classmanifold_1_1_sparse_indices-members.html @@ -0,0 +1,135 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SparseIndices Member List
+
+
+ +

This is the complete list of members for SparseIndices, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
Add(int p, int q) (defined in SparseIndices)SparseIndicesinline
AsVec32() (defined in SparseIndices)SparseIndicesinline
AsVec32() const (defined in SparseIndices)SparseIndicesinline
AsVec64() (defined in SparseIndices)SparseIndicesinline
AsVec64() const (defined in SparseIndices)SparseIndicesinline
Copy(bool use_q) const (defined in SparseIndices)SparseIndicesinline
Dump() const (defined in SparseIndices)SparseIndicesinline
EncodePQ(int p, int q) (defined in SparseIndices)SparseIndicesinlinestatic
Get(size_t i, bool use_q) (defined in SparseIndices)SparseIndicesinline
Get(size_t i, bool use_q) const (defined in SparseIndices)SparseIndicesinline
GetPQ(size_t i) const (defined in SparseIndices)SparseIndicesinline
KeepFinite(Vec< T > &v, Vec< int > &x) (defined in SparseIndices)SparseIndicesinline
RemoveZeros(Vec< int > &S) (defined in SparseIndices)SparseIndicesinline
Resize(size_t size) (defined in SparseIndices)SparseIndicesinline
Set(size_t i, int p, int q) (defined in SparseIndices)SparseIndicesinline
SetPQ(size_t i, int64_t pq) (defined in SparseIndices)SparseIndicesinline
size() const (defined in SparseIndices)SparseIndicesinline
Sort() (defined in SparseIndices)SparseIndicesinline
SparseIndices()=default (defined in SparseIndices)SparseIndices
SparseIndices(size_t size) (defined in SparseIndices)SparseIndicesinline
Unique() (defined in SparseIndices)SparseIndicesinline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_sparse_indices.html b/docs/html/classmanifold_1_1_sparse_indices.html new file mode 100644 index 000000000..03a4a3c36 --- /dev/null +++ b/docs/html/classmanifold_1_1_sparse_indices.html @@ -0,0 +1,190 @@ + + + + + + + +Manifold: SparseIndices Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + +

+Classes

struct  firstFinite
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SparseIndices (size_t size)
 
+size_t size () const
 
+Vec< int > Copy (bool use_q) const
 
+void Sort ()
 
+void Resize (size_t size)
 
+int & Get (size_t i, bool use_q)
 
+int Get (size_t i, bool use_q) const
 
+int64_t GetPQ (size_t i) const
 
+void Set (size_t i, int p, int q)
 
+void SetPQ (size_t i, int64_t pq)
 
+VecView< int64_t > AsVec64 ()
 
+VecView< const int64_t > AsVec64 () const
 
+VecView< int32_t > AsVec32 ()
 
+VecView< const int32_t > AsVec32 () const
 
+void Add (int p, int q)
 
+void Unique ()
 
+size_t RemoveZeros (Vec< int > &S)
 
+template<typename T >
size_t KeepFinite (Vec< T > &v, Vec< int > &x)
 
+void Dump () const
 
+ + + +

+Static Public Member Functions

+static constexpr int64_t EncodePQ (int p, int q)
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_sparse_indices.js b/docs/html/classmanifold_1_1_sparse_indices.js new file mode 100644 index 000000000..47f0e259c --- /dev/null +++ b/docs/html/classmanifold_1_1_sparse_indices.js @@ -0,0 +1,4 @@ +var classmanifold_1_1_sparse_indices = +[ + [ "firstFinite", "structmanifold_1_1_sparse_indices_1_1first_finite.html", null ] +]; \ No newline at end of file diff --git a/docs/html/classmanifold_1_1_vec-members.html b/docs/html/classmanifold_1_1_vec-members.html new file mode 100644 index 000000000..cd7d886ae --- /dev/null +++ b/docs/html/classmanifold_1_1_vec-members.html @@ -0,0 +1,160 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec< T > Member List
+
+
+ +

This is the complete list of members for Vec< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
back() const (defined in VecView< T >)VecView< T >inline
back() (defined in VecView< T >)VecView< T >inline
begin() const (defined in VecView< T >)VecView< T >inline
begin() (defined in VecView< T >)VecView< T >inline
capacity() const (defined in Vec< T >)Vec< T >inline
cbegin() const (defined in VecView< T >)VecView< T >inline
cend() const (defined in VecView< T >)VecView< T >inline
cview(size_t offset=0, size_t length=std::numeric_limits< size_t >::max()) const (defined in Vec< T >)Vec< T >inline
data() (defined in Vec< T >)Vec< T >inline
data() const (defined in Vec< T >)Vec< T >inline
Dump() const (defined in VecView< T >)VecView< T >inline
empty() const (defined in VecView< T >)VecView< T >inline
end() const (defined in VecView< T >)VecView< T >inline
end() (defined in VecView< T >)VecView< T >inline
front() const (defined in VecView< T >)VecView< T >inline
front() (defined in VecView< T >)VecView< T >inline
Iter typedef (defined in VecView< T >)VecView< T >
IterC typedef (defined in VecView< T >)VecView< T >
operator VecView< const T >() const (defined in Vec< T >)Vec< T >inline
operator VecView< T >() (defined in Vec< T >)Vec< T >inline
operator VecView< T >() const (defined in Vec< T >)Vec< T >inline
operator=(const Vec< T > &other) (defined in Vec< T >)Vec< T >inline
operator=(Vec< T > &&other) (defined in Vec< T >)Vec< T >inline
operator=(const VecView &other) (defined in VecView< T >)VecView< T >inline
operator[](size_t i) const (defined in VecView< T >)VecView< T >inline
operator[](size_t i) (defined in VecView< T >)VecView< T >inline
ptr_ (defined in VecView< T >)VecView< T >protected
push_back(const T &val) (defined in Vec< T >)Vec< T >inline
reserve(size_t n) (defined in Vec< T >)Vec< T >inline
resize(size_t newSize, T val=T()) (defined in Vec< T >)Vec< T >inline
shrink_to_fit() (defined in Vec< T >)Vec< T >inline
size() const (defined in VecView< T >)VecView< T >inline
size_ (defined in VecView< T >)VecView< T >protected
swap(Vec< T > &other) (defined in Vec< T >)Vec< T >inline
Vec() (defined in Vec< T >)Vec< T >inline
Vec(size_t size) (defined in Vec< T >)Vec< T >inline
Vec(size_t size, T val) (defined in Vec< T >)Vec< T >inline
Vec(const Vec< T > &vec) (defined in Vec< T >)Vec< T >inline
Vec(const std::vector< T > &vec) (defined in Vec< T >)Vec< T >inline
Vec(Vec< T > &&vec) (defined in Vec< T >)Vec< T >inline
VecView(T *ptr, size_t size) (defined in VecView< T >)VecView< T >inline
VecView(const VecView &other) (defined in VecView< T >)VecView< T >inline
VecView()=default (defined in VecView< T >)VecView< T >protected
view(size_t offset=0, size_t length=std::numeric_limits< size_t >::max()) (defined in Vec< T >)Vec< T >inline
view(size_t offset=0, size_t length=std::numeric_limits< size_t >::max()) const (defined in Vec< T >)Vec< T >inline
~Vec() (defined in Vec< T >)Vec< T >inline
+
+ + + + diff --git a/docs/html/classmanifold_1_1_vec.html b/docs/html/classmanifold_1_1_vec.html new file mode 100644 index 000000000..7e0f54c39 --- /dev/null +++ b/docs/html/classmanifold_1_1_vec.html @@ -0,0 +1,259 @@ + + + + + + + +Manifold: Vec< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec< T > Class Template Reference
+
+
+ +

Inherits VecView< T >.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Vec (size_t size)
 
Vec (size_t size, T val)
 
Vec (const Vec< T > &vec)
 
Vec (const std::vector< T > &vec)
 
Vec (Vec< T > &&vec)
 
operator VecView< T > ()
 
operator VecView< const T > () const
 
+Vec< T > & operator= (const Vec< T > &other)
 
+Vec< T > & operator= (Vec< T > &&other)
 
operator VecView< T > () const
 
+void swap (Vec< T > &other)
 
+void push_back (const T &val)
 
+void reserve (size_t n)
 
+void resize (size_t newSize, T val=T())
 
+void shrink_to_fit ()
 
+VecView< T > view (size_t offset=0, size_t length=std::numeric_limits< size_t >::max())
 
+VecView< const T > cview (size_t offset=0, size_t length=std::numeric_limits< size_t >::max()) const
 
+VecView< const T > view (size_t offset=0, size_t length=std::numeric_limits< size_t >::max()) const
 
+T * data ()
 
+const T * data () const
 
+size_t capacity () const
 
- Public Member Functions inherited from VecView< T >
VecView (T *ptr, size_t size)
 
VecView (const VecView &other)
 
+VecViewoperator= (const VecView &other)
 
operator VecView< const T > () const
 
+const T & operator[] (size_t i) const
 
+T & operator[] (size_t i)
 
+IterC cbegin () const
 
+IterC cend () const
 
+IterC begin () const
 
+IterC end () const
 
+Iter begin ()
 
+Iter end ()
 
+const T & front () const
 
+const T & back () const
 
+T & front ()
 
+T & back ()
 
+size_t size () const
 
+bool empty () const
 
+void Dump () const
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from VecView< T >
+using Iter = T *
 
+using IterC = const T *
 
- Protected Attributes inherited from VecView< T >
+T * ptr_ = nullptr
 
+size_t size_ = 0
 
+
+
+ + + + diff --git a/docs/html/classmanifold_1_1_vec_view-members.html b/docs/html/classmanifold_1_1_vec_view-members.html new file mode 100644 index 000000000..901c44be7 --- /dev/null +++ b/docs/html/classmanifold_1_1_vec_view-members.html @@ -0,0 +1,138 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VecView< T > Member List
+
+
+ +

This is the complete list of members for VecView< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
back() const (defined in VecView< T >)VecView< T >inline
back() (defined in VecView< T >)VecView< T >inline
begin() const (defined in VecView< T >)VecView< T >inline
begin() (defined in VecView< T >)VecView< T >inline
cbegin() const (defined in VecView< T >)VecView< T >inline
cend() const (defined in VecView< T >)VecView< T >inline
Dump() const (defined in VecView< T >)VecView< T >inline
empty() const (defined in VecView< T >)VecView< T >inline
end() const (defined in VecView< T >)VecView< T >inline
end() (defined in VecView< T >)VecView< T >inline
front() const (defined in VecView< T >)VecView< T >inline
front() (defined in VecView< T >)VecView< T >inline
Iter typedef (defined in VecView< T >)VecView< T >
IterC typedef (defined in VecView< T >)VecView< T >
operator VecView< const T >() const (defined in VecView< T >)VecView< T >inline
operator=(const VecView &other) (defined in VecView< T >)VecView< T >inline
operator[](size_t i) const (defined in VecView< T >)VecView< T >inline
operator[](size_t i) (defined in VecView< T >)VecView< T >inline
ptr_ (defined in VecView< T >)VecView< T >protected
size() const (defined in VecView< T >)VecView< T >inline
size_ (defined in VecView< T >)VecView< T >protected
VecView(T *ptr, size_t size) (defined in VecView< T >)VecView< T >inline
VecView(const VecView &other) (defined in VecView< T >)VecView< T >inline
VecView()=default (defined in VecView< T >)VecView< T >protected
+
+ + + + diff --git a/docs/html/classmanifold_1_1_vec_view.html b/docs/html/classmanifold_1_1_vec_view.html new file mode 100644 index 000000000..386b2a607 --- /dev/null +++ b/docs/html/classmanifold_1_1_vec_view.html @@ -0,0 +1,203 @@ + + + + + + + +Manifold: VecView< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VecView< T > Class Template Reference
+
+
+ +

#include <vec_view.h>

+ +

Inherited by Vec< int >, Vec< glm::vec3 >, Vec< manifold::Box >, Vec< std::pair< int, int > >, Vec< Uint64 >, Vec< V >, Vec< manifold::Halfedge >, Vec< glm::vec4 >, Vec< float >, Vec< manifold::TriRef >, Vec< glm::ivec3 >, Vec< char >, Vec< unsigned char >, and Vec< T >.

+ + + + + + +

+Public Types

+using Iter = T *
 
+using IterC = const T *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VecView (T *ptr, size_t size)
 
VecView (const VecView &other)
 
+VecViewoperator= (const VecView &other)
 
operator VecView< const T > () const
 
+const T & operator[] (size_t i) const
 
+T & operator[] (size_t i)
 
+IterC cbegin () const
 
+IterC cend () const
 
+IterC begin () const
 
+IterC end () const
 
+Iter begin ()
 
+Iter end ()
 
+const T & front () const
 
+const T & back () const
 
+T & front ()
 
+T & back ()
 
+size_t size () const
 
+bool empty () const
 
+void Dump () const
 
+ + + + + +

+Protected Attributes

+T * ptr_ = nullptr
 
+size_t size_ = 0
 
+

Detailed Description

+
template<typename T>
+class manifold::VecView< T >

View for Vec, can perform offset operation. This will be invalidated when the original vector is dropped or changes length. Roughly equivalent to std::span<T> from c++20

+
+
+ + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 000000000..98cc2c909 Binary files /dev/null and b/docs/html/closed.png differ diff --git a/docs/html/collider_8h_source.html b/docs/html/collider_8h_source.html new file mode 100644 index 000000000..ebecfc754 --- /dev/null +++ b/docs/html/collider_8h_source.html @@ -0,0 +1,540 @@ + + + + + + + +Manifold: collider.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
collider.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include "par.h"
+
17#include "public.h"
+
18#include "sparse.h"
+
19#include "utils.h"
+
20#include "vec.h"
+
21
+
22#ifdef _MSC_VER
+
23#include <intrin.h>
+
24#endif
+
25
+
26namespace manifold {
+
27
+
28namespace collider_internal {
+
29// Adjustable parameters
+
30constexpr int kInitialLength = 128;
+
31constexpr int kLengthMultiple = 4;
+
32constexpr int kSequentialThreshold = 512;
+
33// Fundamental constants
+
34constexpr int kRoot = 1;
+
35
+
36#ifdef _MSC_VER
+
37
+
38#ifndef _WINDEF_
+
39typedef unsigned long DWORD;
+
40#endif
+
41
+
42uint32_t inline ctz(uint32_t value) {
+
43 DWORD trailing_zero = 0;
+
44
+
45 if (_BitScanForward(&trailing_zero, value)) {
+
46 return trailing_zero;
+
47 } else {
+
48 // This is undefined, I better choose 32 than 0
+
49 return 32;
+
50 }
+
51}
+
52
+
53uint32_t inline clz(uint32_t value) {
+
54 DWORD leading_zero = 0;
+
55
+
56 if (_BitScanReverse(&leading_zero, value)) {
+
57 return 31 - leading_zero;
+
58 } else {
+
59 // Same remarks as above
+
60 return 32;
+
61 }
+
62}
+
63#endif
+
64
+
65constexpr inline bool IsLeaf(int node) { return node % 2 == 0; }
+
66constexpr inline bool IsInternal(int node) { return node % 2 == 1; }
+
67constexpr inline int Node2Internal(int node) { return (node - 1) / 2; }
+
68constexpr inline int Internal2Node(int internal) { return internal * 2 + 1; }
+
69constexpr inline int Node2Leaf(int node) { return node / 2; }
+
70constexpr inline int Leaf2Node(int leaf) { return leaf * 2; }
+
71
+
+ +
73 VecView<int> nodeParent_;
+
74 VecView<std::pair<int, int>> internalChildren_;
+
75 const VecView<const uint32_t> leafMorton_;
+
76
+
77 int PrefixLength(uint32_t a, uint32_t b) const {
+
78// count-leading-zeros is used to find the number of identical highest-order
+
79// bits
+
80#ifdef _MSC_VER
+
81 // return __lzcnt(a ^ b);
+
82 return clz(a ^ b);
+
83#else
+
84 return __builtin_clz(a ^ b);
+
85#endif
+
86 }
+
87
+
88 int PrefixLength(int i, int j) const {
+
89 if (j < 0 || j >= static_cast<int>(leafMorton_.size())) {
+
90 return -1;
+
91 } else {
+
92 int out;
+
93 if (leafMorton_[i] == leafMorton_[j])
+
94 // use index to disambiguate
+
95 out = 32 +
+
96 PrefixLength(static_cast<uint32_t>(i), static_cast<uint32_t>(j));
+
97 else
+
98 out = PrefixLength(leafMorton_[i], leafMorton_[j]);
+
99 return out;
+
100 }
+
101 }
+
102
+
103 int RangeEnd(int i) const {
+
104 // Determine direction of range (+1 or -1)
+
105 int dir = PrefixLength(i, i + 1) - PrefixLength(i, i - 1);
+
106 dir = (dir > 0) - (dir < 0);
+
107 // Compute conservative range length with exponential increase
+
108 int commonPrefix = PrefixLength(i, i - dir);
+
109 int max_length = kInitialLength;
+
110 while (PrefixLength(i, i + dir * max_length) > commonPrefix)
+
111 max_length *= kLengthMultiple;
+
112 // Compute precise range length with binary search
+
113 int length = 0;
+
114 for (int step = max_length / 2; step > 0; step /= 2) {
+
115 if (PrefixLength(i, i + dir * (length + step)) > commonPrefix)
+
116 length += step;
+
117 }
+
118 return i + dir * length;
+
119 }
+
120
+
121 int FindSplit(int first, int last) const {
+
122 int commonPrefix = PrefixLength(first, last);
+
123 // Find the furthest object that shares more than commonPrefix bits with the
+
124 // first one, using binary search.
+
125 int split = first;
+
126 int step = last - first;
+
127 do {
+
128 step = (step + 1) >> 1; // divide by 2, rounding up
+
129 int newSplit = split + step;
+
130 if (newSplit < last) {
+
131 int splitPrefix = PrefixLength(first, newSplit);
+
132 if (splitPrefix > commonPrefix) split = newSplit;
+
133 }
+
134 } while (step > 1);
+
135 return split;
+
136 }
+
137
+
138 void operator()(int internal) {
+
139 int first = internal;
+
140 // Find the range of objects with a common prefix
+
141 int last = RangeEnd(first);
+
142 if (first > last) std::swap(first, last);
+
143 // Determine where the next-highest difference occurs
+
144 int split = FindSplit(first, last);
+
145 int child1 = split == first ? Leaf2Node(split) : Internal2Node(split);
+
146 ++split;
+
147 int child2 = split == last ? Leaf2Node(split) : Internal2Node(split);
+
148 // Record parent_child relationships.
+
149 internalChildren_[internal].first = child1;
+
150 internalChildren_[internal].second = child2;
+
151 int node = Internal2Node(internal);
+
152 nodeParent_[child1] = node;
+
153 nodeParent_[child2] = node;
+
154 }
+
155};
+
+
156
+
157template <typename T, const bool selfCollision, typename Recorder>
+
+ +
159 VecView<const T> queries;
+
160 VecView<const Box> nodeBBox_;
+
161 VecView<const std::pair<int, int>> internalChildren_;
+
162 Recorder recorder;
+
163
+
164 int RecordCollision(int node, const int queryIdx) {
+
165 bool overlaps = nodeBBox_[node].DoesOverlap(queries[queryIdx]);
+
166 if (overlaps && IsLeaf(node)) {
+
167 int leafIdx = Node2Leaf(node);
+
168 if (!selfCollision || leafIdx != queryIdx) {
+
169 recorder.record(queryIdx, leafIdx);
+
170 }
+
171 }
+
172 return overlaps && IsInternal(node); // Should traverse into node
+
173 }
+
174
+
175 void operator()(const int queryIdx) {
+
176 // stack cannot overflow because radix tree has max depth 30 (Morton code) +
+
177 // 32 (index).
+
178 int stack[64];
+
179 int top = -1;
+
180 // Depth-first search
+
181 int node = kRoot;
+
182 // same implies that this query do not have any collision
+
183 if (recorder.earlyexit(queryIdx)) return;
+
184 while (1) {
+
185 int internal = Node2Internal(node);
+
186 int child1 = internalChildren_[internal].first;
+
187 int child2 = internalChildren_[internal].second;
+
188
+
189 int traverse1 = RecordCollision(child1, queryIdx);
+
190 int traverse2 = RecordCollision(child2, queryIdx);
+
191
+
192 if (!traverse1 && !traverse2) {
+
193 if (top < 0) break; // done
+
194 node = stack[top--]; // get a saved node
+
195 } else {
+
196 node = traverse1 ? child1 : child2; // go here next
+
197 if (traverse1 && traverse2) {
+
198 stack[++top] = child2; // save the other for later
+
199 }
+
200 }
+
201 }
+
202 recorder.end(queryIdx);
+
203 }
+
204};
+
+
205
+
+ +
207 VecView<int> counts;
+
208 VecView<char> empty;
+
209 void record(int queryIdx, int _leafIdx) { counts[queryIdx]++; }
+
210 bool earlyexit(int _queryIdx) { return false; }
+
211 void end(int queryIdx) {
+
212 if (counts[queryIdx] == 0) empty[queryIdx] = 1;
+
213 }
+
214};
+
+
215
+
216template <const bool inverted>
+
+ +
218 SparseIndices& queryTri_;
+
219 void record(int queryIdx, int leafIdx) const {
+
220 if (inverted)
+
221 queryTri_.Add(leafIdx, queryIdx);
+
222 else
+
223 queryTri_.Add(queryIdx, leafIdx);
+
224 }
+
225 bool earlyexit(int queryIdx) const { return false; }
+
226 void end(int queryIdx) const {}
+
227};
+
+
228
+
229template <const bool inverted>
+
+ +
231 SparseIndices& queryTri;
+
232 VecView<int> counts;
+
233 VecView<char> empty;
+
234 void record(int queryIdx, int leafIdx) {
+
235 int pos = counts[queryIdx]++;
+
236 if (inverted)
+
237 queryTri.Set(pos, leafIdx, queryIdx);
+
238 else
+
239 queryTri.Set(pos, queryIdx, leafIdx);
+
240 }
+
241 bool earlyexit(int queryIdx) const { return empty[queryIdx] == 1; }
+
242 void end(int queryIdx) const {}
+
243};
+
+
244
+
+ +
246 VecView<Box> nodeBBox_;
+
247 VecView<int> counter_;
+
248 const VecView<int> nodeParent_;
+
249 const VecView<std::pair<int, int>> internalChildren_;
+
250
+
251 void operator()(int leaf) {
+
252 int node = Leaf2Node(leaf);
+
253 do {
+
254 node = nodeParent_[node];
+
255 int internal = Node2Internal(node);
+
256 if (AtomicAdd(counter_[internal], 1) == 0) return;
+
257 nodeBBox_[node] = nodeBBox_[internalChildren_[internal].first].Union(
+
258 nodeBBox_[internalChildren_[internal].second]);
+
259 } while (node != kRoot);
+
260 }
+
261};
+
+
262
+
+ +
264 const glm::mat4x3 transform;
+
265 void operator()(Box& box) { box = box.Transform(transform); }
+
266};
+
+
267
+
268constexpr inline uint32_t SpreadBits3(uint32_t v) {
+
269 v = 0xFF0000FFu & (v * 0x00010001u);
+
270 v = 0x0F00F00Fu & (v * 0x00000101u);
+
271 v = 0xC30C30C3u & (v * 0x00000011u);
+
272 v = 0x49249249u & (v * 0x00000005u);
+
273 return v;
+
274}
+
275} // namespace collider_internal
+
276
+
+
278class Collider {
+
279 public:
+
280 Collider(){};
+
281
+
282 Collider(const VecView<const Box>& leafBB,
+
283 const VecView<const uint32_t>& leafMorton) {
+
284 ZoneScoped;
+
285 DEBUG_ASSERT(leafBB.size() == leafMorton.size(), userErr,
+
286 "vectors must be the same length");
+
287 int num_nodes = 2 * leafBB.size() - 1;
+
288 // assign and allocate members
+
289 nodeBBox_.resize(num_nodes);
+
290 nodeParent_.resize(num_nodes, -1);
+
291 internalChildren_.resize(leafBB.size() - 1, std::make_pair(-1, -1));
+
292 // organize tree
+
293 for_each_n(autoPolicy(NumInternal(), 1e4), countAt(0), NumInternal(),
+ +
295 {nodeParent_, internalChildren_, leafMorton}));
+
296 UpdateBoxes(leafBB);
+
297 }
+
298
+
299 bool Transform(glm::mat4x3 transform) {
+
300 ZoneScoped;
+
301 bool axisAligned = true;
+
302 for (int row : {0, 1, 2}) {
+
303 int count = 0;
+
304 for (int col : {0, 1, 2}) {
+
305 if (transform[col][row] == 0.0f) ++count;
+
306 }
+
307 if (count != 2) axisAligned = false;
+
308 }
+
309 if (axisAligned) {
+
310 for_each(autoPolicy(nodeBBox_.size(), 1e5), nodeBBox_.begin(),
+
311 nodeBBox_.end(),
+
312 [transform](Box& box) { box = box.Transform(transform); });
+
313 }
+
314 return axisAligned;
+
315 }
+
316
+
317 void UpdateBoxes(const VecView<const Box>& leafBB) {
+
318 ZoneScoped;
+
319 DEBUG_ASSERT(leafBB.size() == NumLeaves(), userErr,
+
320 "must have the same number of updated boxes as original");
+
321 // copy in leaf node Boxes
+
322 auto leaves = StridedRange(nodeBBox_.begin(), nodeBBox_.end(), 2);
+
323 copy(leafBB.cbegin(), leafBB.cend(), leaves.begin());
+
324 // create global counters
+
325 Vec<int> counter(NumInternal(), 0);
+
326 // kernel over leaves to save internal Boxes
+
327 for_each_n(autoPolicy(NumInternal(), 1e3), countAt(0), NumLeaves(),
+ +
329 {nodeBBox_, counter, nodeParent_, internalChildren_}));
+
330 }
+
331
+
332 template <const bool selfCollision = false, const bool inverted = false,
+
333 typename T>
+
334 SparseIndices Collisions(const VecView<const T>& queriesIn) const {
+
335 ZoneScoped;
+ +
337 // note that the length is 1 larger than the number of queries so the last
+
338 // element can store the sum when using exclusive scan
+
339 if (queriesIn.size() < collider_internal::kSequentialThreshold) {
+
340 SparseIndices queryTri;
+
341 for_each_n(
+
342 ExecutionPolicy::Seq, countAt(0), queriesIn.size(),
+
343 FindCollisions<T, selfCollision,
+ +
345 queriesIn, nodeBBox_, internalChildren_, {queryTri}});
+
346 return queryTri;
+
347 } else {
+
348 // compute the number of collisions to determine the size for allocation
+
349 // and offset, this avoids the need for atomic
+
350 Vec<int> counts(queriesIn.size() + 1, 0);
+
351 Vec<char> empty(queriesIn.size(), 0);
+
352 for_each_n(
+
353 ExecutionPolicy::Par, countAt(0), queriesIn.size(),
+
354 FindCollisions<T, selfCollision, collider_internal::CountCollisions>{
+
355 queriesIn, nodeBBox_, internalChildren_, {counts, empty}});
+
356 // compute start index for each query and total count
+
357 manifold::exclusive_scan(counts.begin(), counts.end(), counts.begin(), 0,
+
358 std::plus<int>());
+
359 if (counts.back() == 0) return SparseIndices(0);
+
360 SparseIndices queryTri(counts.back());
+
361 // actually recording collisions
+
362 for_each_n(
+
363 ExecutionPolicy::Par, countAt(0), queriesIn.size(),
+
364 FindCollisions<T, selfCollision,
+ +
366 queriesIn,
+
367 nodeBBox_,
+
368 internalChildren_,
+
369 {queryTri, counts, empty}});
+
370 return queryTri;
+
371 }
+
372 }
+
373
+
374 static uint32_t MortonCode(glm::vec3 position, Box bBox) {
+
375 using collider_internal::SpreadBits3;
+
376 glm::vec3 xyz = (position - bBox.min) / (bBox.max - bBox.min);
+
377 xyz =
+
378 glm::min(glm::vec3(1023.0f), glm::max(glm::vec3(0.0f), 1024.0f * xyz));
+
379 uint32_t x = SpreadBits3(static_cast<uint32_t>(xyz.x));
+
380 uint32_t y = SpreadBits3(static_cast<uint32_t>(xyz.y));
+
381 uint32_t z = SpreadBits3(static_cast<uint32_t>(xyz.z));
+
382 return x * 4 + y * 2 + z;
+
383 }
+
384
+
385 private:
+
386 Vec<Box> nodeBBox_;
+
387 Vec<int> nodeParent_;
+
388 // even nodes are leaves, odd nodes are internal, root is 1
+
389 Vec<std::pair<int, int>> internalChildren_;
+
390
+
391 size_t NumInternal() const { return internalChildren_.size(); };
+
392 size_t NumLeaves() const {
+
393 return internalChildren_.empty() ? 0 : (NumInternal() + 1);
+
394 };
+
395};
+
+
396
+
397} // namespace manifold
+
Definition collider.h:278
+
Definition sparse.h:27
+
Definition vec.h:43
+
Definition vec_view.h:27
+
Definition meshIO.h:20
+
Definition public.h:177
+
Box Transform(const glm::mat4x3 &transform) const
Definition public.h:254
+
Definition iters.h:199
+ + + + + + + +
Definition public.h:602
+
+
+ + + + diff --git a/docs/html/conv_8h_source.html b/docs/html/conv_8h_source.html new file mode 100644 index 000000000..14055594e --- /dev/null +++ b/docs/html/conv_8h_source.html @@ -0,0 +1,210 @@ + + + + + + + +Manifold: conv.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
conv.h
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <cstring>
+
17#include <vector>
+
18
+
19#include "cross_section.h"
+
20#include "manifold.h"
+
21#include "public.h"
+
22#include "types.h"
+
23
+
24using namespace manifold;
+
25using ManifoldVec = std::vector<Manifold>;
+
26using CrossSectionVec = std::vector<CrossSection>;
+
27
+
28ManifoldManifold *to_c(manifold::Manifold *m);
+
29ManifoldManifoldVec *to_c(ManifoldVec *ms);
+
30ManifoldCrossSection *to_c(manifold::CrossSection *cs);
+
31ManifoldCrossSectionVec *to_c(CrossSectionVec *csv);
+
32ManifoldSimplePolygon *to_c(manifold::SimplePolygon *p);
+
33ManifoldPolygons *to_c(manifold::Polygons *ps);
+
34ManifoldMesh *to_c(manifold::Mesh *m);
+
35ManifoldMeshGL *to_c(manifold::MeshGL *m);
+
36ManifoldBox *to_c(manifold::Box *m);
+
37ManifoldRect *to_c(manifold::Rect *m);
+
38ManifoldError to_c(manifold::Manifold::Error error);
+
39ManifoldVec2 to_c(glm::vec2 v);
+
40ManifoldVec3 to_c(glm::vec3 v);
+
41ManifoldIVec3 to_c(glm::ivec3 v);
+ +
43
+
44const manifold::Manifold *from_c(ManifoldManifold *m);
+
45ManifoldVec *from_c(ManifoldManifoldVec *ms);
+
46const manifold::CrossSection *from_c(ManifoldCrossSection *cs);
+
47CrossSectionVec *from_c(ManifoldCrossSectionVec *csv);
+
48const manifold::SimplePolygon *from_c(ManifoldSimplePolygon *m);
+
49const manifold::Polygons *from_c(ManifoldPolygons *m);
+
50const manifold::Mesh *from_c(ManifoldMesh *m);
+
51const manifold::MeshGL *from_c(ManifoldMeshGL *m);
+
52OpType from_c(ManifoldOpType op);
+
53CrossSection::FillRule from_c(ManifoldFillRule fillrule);
+
54CrossSection::JoinType from_c(ManifoldJoinType jt);
+
55const manifold::Box *from_c(ManifoldBox *m);
+
56const manifold::Rect *from_c(ManifoldRect *r);
+
57glm::vec2 from_c(ManifoldVec2 v);
+
58glm::vec3 from_c(ManifoldVec3 v);
+
59glm::ivec3 from_c(ManifoldIVec3 v);
+
60glm::vec4 from_c(ManifoldVec4 v);
+
61
+
62std::vector<glm::vec3> vector_of_vec_array(ManifoldVec3 *vs, size_t length);
+
63std::vector<glm::ivec3> vector_of_vec_array(ManifoldIVec3 *vs, size_t length);
+
64std::vector<glm::vec4> vector_of_vec_array(ManifoldVec4 *vs, size_t length);
+
65
+
66template <typename T>
+
67std::vector<T> vector_of_array(T *ts, size_t length) {
+
68 auto vec = std::vector<T>();
+
69 for (size_t i = 0; i < length; ++i) {
+
70 vec.push_back(ts[i]);
+
71 }
+
72 return vec;
+
73}
+
74
+
75template <typename T>
+
76T *copy_data(void *mem, std::vector<T> v) {
+
77 T *ts = reinterpret_cast<T *>(mem);
+
78 memcpy(ts, v.data(), sizeof(T) * v.size());
+
79 return ts;
+
80}
+
Definition cross_section.h:40
+
FillRule
Definition cross_section.h:65
+
JoinType
Definition cross_section.h:114
+
Definition manifold.h:156
+
std::vector< glm::vec2 > SimplePolygon
Definition public.h:122
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
Definition public.h:135
+
Definition public.h:173
+
OpType
Definition public.h:499
+
Definition meshIO.h:20
+
Definition types.h:54
+
Definition types.h:67
+
Definition types.h:43
+
Definition types.h:48
+
Definition types.h:60
+
Definition public.h:177
+
Definition manifold.h:46
+
Definition public.h:328
+
+
+ + + + diff --git a/docs/html/cross_8cpp_source.html b/docs/html/cross_8cpp_source.html new file mode 100644 index 000000000..bd6c6faf2 --- /dev/null +++ b/docs/html/cross_8cpp_source.html @@ -0,0 +1,377 @@ + + + + + + + +Manifold: cross.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cross.cpp
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#include <vector>
+
16
+
17#include "conv.h"
+
18#include "cross_section.h"
+
19#include "manifold.h"
+
20#include "public.h"
+
21#include "types.h"
+
22
+
23ManifoldCrossSection *manifold_cross_section_empty(void *mem) {
+
24 return to_c(new (mem) CrossSection());
+
25}
+
26
+
27ManifoldCrossSection *manifold_cross_section_copy(void *mem,
+
28 ManifoldCrossSection *cs) {
+
29 auto cross = *from_c(cs);
+
30 return to_c(new (mem) CrossSection(cross));
+
31}
+
32
+
33ManifoldCrossSection *manifold_cross_section_of_simple_polygon(
+
34 void *mem, ManifoldSimplePolygon *p, ManifoldFillRule fr) {
+
35 return to_c(new (mem) CrossSection(*from_c(p), from_c(fr)));
+
36}
+
37
+
38ManifoldCrossSection *manifold_cross_section_of_polygons(void *mem,
+
39 ManifoldPolygons *p,
+
40 ManifoldFillRule fr) {
+
41 return to_c(new (mem) CrossSection(*from_c(p), from_c(fr)));
+
42}
+
43
+
44ManifoldCrossSectionVec *manifold_cross_section_empty_vec(void *mem) {
+
45 return to_c(new (mem) CrossSectionVec());
+
46}
+
47
+
48ManifoldCrossSectionVec *manifold_cross_section_vec(void *mem, size_t sz) {
+
49 return to_c(new (mem) CrossSectionVec(sz));
+
50}
+
51
+
52void manifold_cross_section_vec_reserve(ManifoldCrossSectionVec *csv,
+
53 size_t sz) {
+
54 from_c(csv)->reserve(sz);
+
55}
+
56
+
57size_t manifold_cross_section_vec_length(ManifoldCrossSectionVec *csv) {
+
58 return from_c(csv)->size();
+
59}
+
60
+
61ManifoldCrossSection *manifold_cross_section_vec_get(
+
62 void *mem, ManifoldCrossSectionVec *csv, int idx) {
+
63 auto cs = (*from_c(csv))[idx];
+
64 return to_c(new (mem) CrossSection(cs));
+
65}
+
66
+
67void manifold_cross_section_vec_set(ManifoldCrossSectionVec *csv, int idx,
+
68 ManifoldCrossSection *cs) {
+
69 (*from_c(csv))[idx] = *from_c(cs);
+
70}
+
71
+
72void manifold_cross_section_vec_push_back(ManifoldCrossSectionVec *csv,
+
73 ManifoldCrossSection *cs) {
+
74 return from_c(csv)->push_back(*from_c(cs));
+
75}
+
76
+
77ManifoldCrossSection *manifold_cross_section_square(void *mem, float x, float y,
+
78 int center) {
+
79 auto cs = CrossSection::Square(glm::vec2(x, y), center);
+
80 return to_c(new (mem) CrossSection(cs));
+
81}
+
82
+
83ManifoldCrossSection *manifold_cross_section_circle(void *mem, float radius,
+
84 int circular_segments) {
+
85 auto cs = CrossSection::Circle(radius, circular_segments);
+
86 return to_c(new (mem) CrossSection(cs));
+
87}
+
88
+
89ManifoldCrossSection *manifold_cross_section_boolean(void *mem,
+
90 ManifoldCrossSection *a,
+
91 ManifoldCrossSection *b,
+
92 ManifoldOpType op) {
+
93 auto cs = from_c(a)->Boolean(*from_c(b), from_c(op));
+
94 return to_c(new (mem) CrossSection(cs));
+
95}
+
96
+
97ManifoldCrossSection *manifold_cross_section_batch_boolean(
+
98 void *mem, ManifoldCrossSectionVec *csv, ManifoldOpType op) {
+
99 auto cs = CrossSection::BatchBoolean(*from_c(csv), from_c(op));
+
100 return to_c(new (mem) CrossSection(cs));
+
101}
+
102
+
103ManifoldCrossSection *manifold_cross_section_union(void *mem,
+
104 ManifoldCrossSection *a,
+
105 ManifoldCrossSection *b) {
+
106 auto cs = (*from_c(a)) + (*from_c(b));
+
107 return to_c(new (mem) CrossSection(cs));
+
108}
+
109
+
110ManifoldCrossSection *manifold_cross_section_difference(
+
111 void *mem, ManifoldCrossSection *a, ManifoldCrossSection *b) {
+
112 auto cs = (*from_c(a)) - (*from_c(b));
+
113 return to_c(new (mem) CrossSection(cs));
+
114}
+
115
+
116ManifoldCrossSection *manifold_cross_section_intersection(
+
117 void *mem, ManifoldCrossSection *a, ManifoldCrossSection *b) {
+
118 auto cs = (*from_c(a)) ^ (*from_c(b));
+
119 return to_c(new (mem) CrossSection(cs));
+
120}
+
121
+
122ManifoldCrossSection *manifold_cross_section_hull(void *mem,
+
123 ManifoldCrossSection *cs) {
+
124 auto hulled = from_c(cs)->Hull();
+
125 return to_c(new (mem) CrossSection(hulled));
+
126}
+
127
+
128ManifoldCrossSection *manifold_cross_section_batch_hull(
+
129 void *mem, ManifoldCrossSectionVec *css) {
+
130 auto hulled = CrossSection::Hull(*from_c(css));
+
131 return to_c(new (mem) CrossSection(hulled));
+
132}
+
133
+
134ManifoldCrossSection *manifold_cross_section_hull_simple_polygon(
+
135 void *mem, ManifoldSimplePolygon *ps) {
+
136 auto hulled = CrossSection::Hull(*from_c(ps));
+
137 return to_c(new (mem) CrossSection(hulled));
+
138}
+
139
+
140ManifoldCrossSection *manifold_cross_section_hull_polygons(
+
141 void *mem, ManifoldPolygons *ps) {
+
142 auto hulled = CrossSection::Hull(*from_c(ps));
+
143 return to_c(new (mem) CrossSection(hulled));
+
144}
+
145
+
146ManifoldCrossSection *manifold_cross_section_translate(void *mem,
+
147 ManifoldCrossSection *cs,
+
148 float x, float y) {
+
149 auto translated = from_c(cs)->Translate(glm::vec2(x, y));
+
150 return to_c(new (mem) CrossSection(translated));
+
151}
+
152
+
153ManifoldCrossSection *manifold_cross_section_rotate(void *mem,
+
154 ManifoldCrossSection *cs,
+
155 float deg) {
+
156 auto rotated = from_c(cs)->Rotate(deg);
+
157 return to_c(new (mem) CrossSection(rotated));
+
158}
+
159
+
160ManifoldCrossSection *manifold_cross_section_scale(void *mem,
+
161 ManifoldCrossSection *cs,
+
162 float x, float y) {
+
163 auto scaled = from_c(cs)->Scale(glm::vec2(x, y));
+
164 return to_c(new (mem) CrossSection(scaled));
+
165}
+
166
+
167ManifoldCrossSection *manifold_cross_section_mirror(void *mem,
+
168 ManifoldCrossSection *cs,
+
169 float ax_x, float ax_y) {
+
170 auto mirrored = from_c(cs)->Mirror(glm::vec2(ax_x, ax_y));
+
171 return to_c(new (mem) CrossSection(mirrored));
+
172}
+
173
+
174ManifoldCrossSection *manifold_cross_section_transform(void *mem,
+
175 ManifoldCrossSection *cs,
+
176 float x1, float y1,
+
177 float x2, float y2,
+
178 float x3, float y3) {
+
179 auto mat = glm::mat3x2(x1, y1, x2, y2, x3, y3);
+
180 auto transformed = from_c(cs)->Transform(mat);
+
181 return to_c(new (mem) CrossSection(transformed));
+
182}
+
183
+
184ManifoldCrossSection *manifold_cross_section_warp(
+
185 void *mem, ManifoldCrossSection *cs,
+
186 ManifoldVec2 (*fun)(float, float, void *), void *ctx) {
+
187 // Bind function with context argument to one without
+
188 using namespace std::placeholders;
+
189 std::function<ManifoldVec2(float, float)> f2 = std::bind(fun, _1, _2, ctx);
+
190 std::function<void(glm::vec2 & v)> warp = [f2](glm::vec2 &v) {
+
191 v = from_c(f2(v.x, v.y));
+
192 };
+
193 auto warped = from_c(cs)->Warp(warp);
+
194 return to_c(new (mem) CrossSection(warped));
+
195}
+
196
+
197ManifoldCrossSection *manifold_cross_section_simplify(void *mem,
+
198 ManifoldCrossSection *cs,
+
199 double epsilon) {
+
200 auto simplified = from_c(cs)->Simplify(epsilon);
+
201 return to_c(new (mem) CrossSection(simplified));
+
202}
+
203
+
204ManifoldCrossSection *manifold_cross_section_offset(
+
205 void *mem, ManifoldCrossSection *cs, double delta, ManifoldJoinType jt,
+
206 double miter_limit, int circular_segments) {
+
207 auto offset =
+
208 from_c(cs)->Offset(delta, from_c(jt), miter_limit, circular_segments);
+
209 return to_c(new (mem) CrossSection(offset));
+
210}
+
211
+
212double manifold_cross_section_area(ManifoldCrossSection *cs) {
+
213 return from_c(cs)->Area();
+
214}
+
215
+
216int manifold_cross_section_num_vert(ManifoldCrossSection *cs) {
+
217 return from_c(cs)->NumVert();
+
218}
+
219
+
220int manifold_cross_section_num_contour(ManifoldCrossSection *cs) {
+
221 return from_c(cs)->NumContour();
+
222}
+
223
+
224int manifold_cross_section_is_empty(ManifoldCrossSection *cs) {
+
225 return from_c(cs)->IsEmpty();
+
226}
+
227
+
228ManifoldRect *manifold_cross_section_bounds(void *mem,
+
229 ManifoldCrossSection *cs) {
+
230 auto rect = from_c(cs)->Bounds();
+
231 return to_c(new (mem) Rect(rect));
+
232}
+
233
+
234ManifoldPolygons *manifold_cross_section_to_polygons(void *mem,
+
235 ManifoldCrossSection *cs) {
+
236 auto ps = from_c(cs)->ToPolygons();
+
237 return to_c(new (mem) Polygons(ps));
+
238}
+
239
+
240ManifoldCrossSection *manifold_cross_section_compose(
+
241 void *mem, ManifoldCrossSectionVec *csv) {
+
242 auto cs = CrossSection::Compose(*from_c(csv));
+
243 return to_c(new (mem) CrossSection(cs));
+
244}
+
245
+
246ManifoldCrossSectionVec *manifold_cross_section_decompose(
+
247 void *mem, ManifoldCrossSection *cs) {
+
248 auto comps = from_c(cs)->Decompose();
+
249 return to_c(new (mem) CrossSectionVec(comps));
+
250}
+
Definition cross_section.h:40
+
Manifold Rotate(float xDegrees, float yDegrees=0.0f, float zDegrees=0.0f) const
Definition manifold.cpp:515
+
Manifold Transform(const glm::mat4x3 &) const
Definition manifold.cpp:527
+
std::vector< Manifold > Decompose() const
Definition constructors.cpp:455
+
int NumVert() const
Definition manifold.cpp:360
+
bool IsEmpty() const
Definition manifold.cpp:345
+
Manifold Mirror(glm::vec3) const
Definition manifold.cpp:539
+
Manifold Boolean(const Manifold &second, OpType op) const
Definition manifold.cpp:777
+
Manifold Hull() const
Definition manifold.cpp:946
+
Manifold Translate(glm::vec3) const
Definition manifold.cpp:489
+
Manifold Scale(glm::vec3) const
Definition manifold.cpp:499
+
Manifold Warp(std::function< void(glm::vec3 &)>) const
Definition manifold.cpp:557
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
Definition types.h:43
+
Definition public.h:328
+
+
+ + + + diff --git a/docs/html/cross__section_8h_source.html b/docs/html/cross__section_8h_source.html new file mode 100644 index 000000000..8b03f91ea --- /dev/null +++ b/docs/html/cross__section_8h_source.html @@ -0,0 +1,275 @@ + + + + + + + +Manifold: cross_section.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cross_section.h
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16
+
17#include <functional>
+
18#include <memory>
+
19#include <vector>
+
20
+
21#include "glm/ext/matrix_float3x2.hpp"
+
22#include "glm/ext/vector_float2.hpp"
+
23#include "public.h"
+
24#include "vec_view.h"
+
25
+
26namespace manifold {
+
27
+
32struct PathImpl;
+
33
+
+ +
41 public:
+
46
+ + +
49
+
50 CrossSection(const CrossSection& other);
+
51 CrossSection& operator=(const CrossSection& other);
+
52 CrossSection(CrossSection&&) noexcept;
+
53 CrossSection& operator=(CrossSection&&) noexcept;
+
54
+
55 // Adapted from Clipper2 docs:
+
56 // http://www.angusj.com/clipper2/Docs/Units/Clipper/Types/FillRule.htm
+
57 // (Copyright © 2010-2023 Angus Johnson)
+
+
65 enum class FillRule {
+
66 EvenOdd,
+
67 NonZero,
+
68 Positive,
+ +
70 };
+
+
71
+
72 CrossSection(const SimplePolygon& contour,
+
73 FillRule fillrule = FillRule::Positive);
+
74 CrossSection(const Polygons& contours,
+
75 FillRule fillrule = FillRule::Positive);
+
76 CrossSection(const Rect& rect);
+
77 static CrossSection Square(const glm::vec2 dims, bool center = false);
+
78 static CrossSection Circle(float radius, int circularSegments = 0);
+
80
+
85 double Area() const;
+
86 int NumVert() const;
+
87 int NumContour() const;
+
88 bool IsEmpty() const;
+
89 Rect Bounds() const;
+
91
+
95 CrossSection Translate(const glm::vec2 v) const;
+
96 CrossSection Rotate(float degrees) const;
+
97 CrossSection Scale(const glm::vec2 s) const;
+
98 CrossSection Mirror(const glm::vec2 ax) const;
+
99 CrossSection Transform(const glm::mat3x2& m) const;
+
100 CrossSection Warp(std::function<void(glm::vec2&)> warpFunc) const;
+ +
102 std::function<void(VecView<glm::vec2>)> warpFunc) const;
+
103 CrossSection Simplify(double epsilon = 1e-6) const;
+
104
+
105 // Adapted from Clipper2 docs:
+
106 // http://www.angusj.com/clipper2/Docs/Units/Clipper/Types/JoinType.htm
+
107 // (Copyright © 2010-2023 Angus Johnson)
+
+
114 enum class JoinType {
+
115 Square,
+
118 Round,
+
121 Miter
+
126 };
+
+
127
+
128 CrossSection Offset(double delta, JoinType jt, double miter_limit = 2.0,
+
129 int circularSegments = 0) const;
+
131
+
136 CrossSection Boolean(const CrossSection& second, OpType op) const;
+ +
138 const std::vector<CrossSection>& crossSections, OpType op);
+
139 CrossSection operator+(const CrossSection&) const;
+ +
141 CrossSection operator-(const CrossSection&) const;
+ +
143 CrossSection operator^(const CrossSection&) const;
+ +
146
+
150 static CrossSection Compose(std::vector<CrossSection>&);
+
151 std::vector<CrossSection> Decompose() const;
+
153
+
157 CrossSection Hull() const;
+
158 static CrossSection Hull(const std::vector<CrossSection>& crossSections);
+
159 static CrossSection Hull(const SimplePolygon poly);
+
160 static CrossSection Hull(const Polygons polys);
+
163
+
166 Polygons ToPolygons() const;
+
168
+
169 private:
+
170 mutable std::shared_ptr<const PathImpl> paths_;
+
171 mutable glm::mat3x2 transform_ = glm::mat3x2(1.0f);
+
172 CrossSection(std::shared_ptr<const PathImpl> paths);
+
173 std::shared_ptr<const PathImpl> GetPaths() const;
+
174};
+
+
176} // namespace manifold
+
Definition cross_section.h:40
+
CrossSection Boolean(const CrossSection &second, OpType op) const
Definition cross_section.cpp:358
+
CrossSection Translate(const glm::vec2 v) const
Definition cross_section.cpp:484
+
CrossSection & operator+=(const CrossSection &)
Definition cross_section.cpp:406
+
Polygons ToPolygons() const
Definition cross_section.cpp:775
+
CrossSection operator+(const CrossSection &) const
Definition cross_section.cpp:398
+
CrossSection operator^(const CrossSection &) const
Definition cross_section.cpp:431
+
CrossSection & operator-=(const CrossSection &)
Definition cross_section.cpp:423
+
std::vector< CrossSection > Decompose() const
Definition cross_section.cpp:457
+
CrossSection Warp(std::function< void(glm::vec2 &)> warpFunc) const
Definition cross_section.cpp:558
+
static CrossSection Compose(std::vector< CrossSection > &)
Definition cross_section.cpp:448
+
static CrossSection BatchBoolean(const std::vector< CrossSection > &crossSections, OpType op)
Definition cross_section.cpp:370
+
int NumVert() const
Definition cross_section.cpp:743
+
bool IsEmpty() const
Definition cross_section.cpp:761
+
CrossSection Offset(double delta, JoinType jt, double miter_limit=2.0, int circularSegments=0) const
Definition cross_section.cpp:656
+
CrossSection Rotate(float degrees) const
Definition cross_section.cpp:497
+
FillRule
Definition cross_section.h:65
+
@ Positive
Only sub-regions with winding counts > 0 are filled.
+
@ NonZero
Only non-zero sub-regions are filled.
+
@ EvenOdd
Only odd numbered sub-regions are filled.
+
@ Negative
Only sub-regions with winding counts < 0 are filled.
+
CrossSection & operator^=(const CrossSection &)
Definition cross_section.cpp:439
+
CrossSection Simplify(double epsilon=1e-6) const
Definition cross_section.cpp:610
+
CrossSection Hull() const
Definition cross_section.cpp:702
+
double Area() const
Definition cross_section.cpp:738
+
CrossSection()
Definition cross_section.cpp:211
+
static CrossSection Circle(float radius, int circularSegments=0)
Definition cross_section.cpp:341
+
CrossSection Mirror(const glm::vec2 ax) const
Definition cross_section.cpp:527
+
CrossSection WarpBatch(std::function< void(VecView< glm::vec2 >)> warpFunc) const
Definition cross_section.cpp:574
+
Rect Bounds() const
Definition cross_section.cpp:767
+
JoinType
Definition cross_section.h:114
+ + + +
CrossSection Scale(const glm::vec2 s) const
Definition cross_section.cpp:512
+
CrossSection operator-(const CrossSection &) const
Definition cross_section.cpp:415
+
CrossSection Transform(const glm::mat3x2 &m) const
Definition cross_section.cpp:543
+
int NumContour() const
Definition cross_section.cpp:756
+
Definition vec_view.h:27
+
std::vector< glm::vec2 > SimplePolygon
Definition public.h:122
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
OpType
Definition public.h:499
+
Definition meshIO.h:20
+
Definition public.h:328
+
+
+ + + + diff --git a/docs/html/csg__tree_8h_source.html b/docs/html/csg__tree_8h_source.html new file mode 100644 index 000000000..ecad1bdea --- /dev/null +++ b/docs/html/csg__tree_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +Manifold: csg_tree.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
csg_tree.h
+
+
+
1// Copyright 2022 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include "manifold.h"
+
17#include "utils.h"
+
18
+
19namespace manifold {
+
20
+
21enum class CsgNodeType { Union, Intersection, Difference, Leaf };
+
22
+
23class CsgLeafNode;
+
24
+
+
25class CsgNode : public std::enable_shared_from_this<CsgNode> {
+
26 public:
+
27 virtual std::shared_ptr<CsgLeafNode> ToLeafNode() const = 0;
+
28 virtual std::shared_ptr<CsgNode> Transform(const glm::mat4x3 &m) const = 0;
+
29 virtual CsgNodeType GetNodeType() const = 0;
+
30 virtual glm::mat4x3 GetTransform() const = 0;
+
31
+
32 virtual std::shared_ptr<CsgNode> Boolean(
+
33 const std::shared_ptr<CsgNode> &second, OpType op);
+
34
+
35 std::shared_ptr<CsgNode> Translate(const glm::vec3 &t) const;
+
36 std::shared_ptr<CsgNode> Scale(const glm::vec3 &s) const;
+
37 std::shared_ptr<CsgNode> Rotate(float xDegrees = 0, float yDegrees = 0,
+
38 float zDegrees = 0) const;
+
39};
+
+
40
+
+
41class CsgLeafNode final : public CsgNode {
+
42 public:
+ +
44 CsgLeafNode(std::shared_ptr<const Manifold::Impl> pImpl_);
+
45 CsgLeafNode(std::shared_ptr<const Manifold::Impl> pImpl_,
+
46 glm::mat4x3 transform_);
+
47
+
48 std::shared_ptr<const Manifold::Impl> GetImpl() const;
+
49
+
50 std::shared_ptr<CsgLeafNode> ToLeafNode() const override;
+
51
+
52 std::shared_ptr<CsgNode> Transform(const glm::mat4x3 &m) const override;
+
53
+
54 CsgNodeType GetNodeType() const override;
+
55
+
56 glm::mat4x3 GetTransform() const override;
+
57
+ +
59 const std::vector<std::shared_ptr<CsgLeafNode>> &nodes);
+
60
+
61 private:
+
62 mutable std::shared_ptr<const Manifold::Impl> pImpl_;
+
63 mutable glm::mat4x3 transform_ = glm::mat4x3(1.0f);
+
64};
+
+
65
+
+
66class CsgOpNode final : public CsgNode {
+
67 public:
+
68 CsgOpNode();
+
69
+
70 CsgOpNode(const std::vector<std::shared_ptr<CsgNode>> &children, OpType op);
+
71
+
72 CsgOpNode(std::vector<std::shared_ptr<CsgNode>> &&children, OpType op);
+
73
+
74 std::shared_ptr<CsgNode> Boolean(const std::shared_ptr<CsgNode> &second,
+
75 OpType op) override;
+
76
+
77 std::shared_ptr<CsgNode> Transform(const glm::mat4x3 &m) const override;
+
78
+
79 std::shared_ptr<CsgLeafNode> ToLeafNode() const override;
+
80
+
81 CsgNodeType GetNodeType() const override { return op_; }
+
82
+
83 glm::mat4x3 GetTransform() const override;
+
84
+
85 private:
+
86 struct Impl {
+
87 std::vector<std::shared_ptr<CsgNode>> children_;
+
88 bool forcedToLeafNodes_ = false;
+
89 };
+ +
91 CsgNodeType op_;
+
92 glm::mat4x3 transform_ = glm::mat4x3(1.0f);
+
93 // the following fields are for lazy evaluation, so they are mutable
+
94 mutable std::shared_ptr<CsgLeafNode> cache_ = nullptr;
+
95
+
96 void SetOp(OpType);
+
97 bool IsOp(OpType op);
+
98
+
99 static std::shared_ptr<Manifold::Impl> BatchBoolean(
+
100 OpType operation,
+
101 std::vector<std::shared_ptr<const Manifold::Impl>> &results);
+
102
+
103 void BatchUnion() const;
+
104
+
105 std::vector<std::shared_ptr<CsgNode>> &GetChildren(
+
106 bool forceToLeafNodes = true) const;
+
107};
+
+
108
+
109} // namespace manifold
+
Definition utils.h:108
+
Definition csg_tree.h:41
+
static Manifold::Impl Compose(const std::vector< std::shared_ptr< CsgLeafNode > > &nodes)
Definition csg_tree.cpp:173
+
Definition csg_tree.h:25
+
Definition csg_tree.h:66
+
OpType
Definition public.h:499
+
Definition meshIO.h:20
+
Definition impl.h:30
+
+
+ + + + diff --git a/docs/html/dir_00240dc4a1a4845ae58be68fbad02d02.html b/docs/html/dir_00240dc4a1a4845ae58be68fbad02d02.html new file mode 100644 index 000000000..4a8cb225d --- /dev/null +++ b/docs/html/dir_00240dc4a1a4845ae58be68fbad02d02.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: bindings Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bindings Directory Reference
+
+
+ + + + + + + + +

+Directories

 c
 
 python
 
 wasm
 
+
+
+ + + + diff --git a/docs/html/dir_01ba33e26ccdeaa7023e73de5893fd0d.html b/docs/html/dir_01ba33e26ccdeaa7023e73de5893fd0d.html new file mode 100644 index 000000000..81f6bd975 --- /dev/null +++ b/docs/html/dir_01ba33e26ccdeaa7023e73de5893fd0d.html @@ -0,0 +1,128 @@ + + + + + + + +Manifold: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

 boolean3.h
 
 csg_tree.h
 
 impl.h
 
 mesh_fixes.h
 
 quickhull.h
 
 shared.h
 
+
+
+ + + + diff --git a/docs/html/dir_035854e2c8d5363d0a7c6528cb1706b0.html b/docs/html/dir_035854e2c8d5363d0a7c6528cb1706b0.html new file mode 100644 index 000000000..a96866bdc --- /dev/null +++ b/docs/html/dir_035854e2c8d5363d0a7c6528cb1706b0.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Files

 meshIO.h
 
+
+
+ + + + diff --git a/docs/html/dir_0701a8296ffb54d5e8b875616b7dbaff.html b/docs/html/dir_0701a8296ffb54d5e8b875616b7dbaff.html new file mode 100644 index 000000000..b8711a10f --- /dev/null +++ b/docs/html/dir_0701a8296ffb54d5e8b875616b7dbaff.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_13e138d54eb8818da29c3992edef070a.html b/docs/html/dir_13e138d54eb8818da29c3992edef070a.html new file mode 100644 index 000000000..3045d4da3 --- /dev/null +++ b/docs/html/dir_13e138d54eb8818da29c3992edef070a.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: test Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
test Directory Reference
+
+
+ + + + +

+Directories

 polygons
 
+ + + +

+Files

 test.h
 
+
+
+ + + + diff --git a/docs/html/dir_1510bd745cd29c20d24c27171ebe5ba5.html b/docs/html/dir_1510bd745cd29c20d24c27171ebe5ba5.html new file mode 100644 index 000000000..d41959baa --- /dev/null +++ b/docs/html/dir_1510bd745cd29c20d24c27171ebe5ba5.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: extras Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
extras Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_22436d21afed9fe2212ff99306573f86.html b/docs/html/dir_22436d21afed9fe2212ff99306573f86.html new file mode 100644 index 000000000..adb721150 --- /dev/null +++ b/docs/html/dir_22436d21afed9fe2212ff99306573f86.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Files

 collider.h
 
+
+
+ + + + diff --git a/docs/html/dir_2c51409c809e8ad66fa65b4037751a14.html b/docs/html/dir_2c51409c809e8ad66fa65b4037751a14.html new file mode 100644 index 000000000..e2c9d1c25 --- /dev/null +++ b/docs/html/dir_2c51409c809e8ad66fa65b4037751a14.html @@ -0,0 +1,138 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 hashtable.h
 
 iters.h
 
 optional_assert.h
 
 par.h
 
 public.h
 
 sparse.h
 
 svd.h
 
 tri_dist.h
 
 utils.h
 
 vec.h
 
 vec_view.h
 
+
+
+ + + + diff --git a/docs/html/dir_3129add96c7ae9ff67479c7829851787.html b/docs/html/dir_3129add96c7ae9ff67479c7829851787.html new file mode 100644 index 000000000..f63b5312a --- /dev/null +++ b/docs/html/dir_3129add96c7ae9ff67479c7829851787.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Files

 manifold.h
 
+
+
+ + + + diff --git a/docs/html/dir_3957bb4ff7e260a3392ba94c066388d5.html b/docs/html/dir_3957bb4ff7e260a3392ba94c066388d5.html new file mode 100644 index 000000000..c1a286018 --- /dev/null +++ b/docs/html/dir_3957bb4ff7e260a3392ba94c066388d5.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: examples Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
examples Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_3a92f14bdf3dfaa79faab39cf7167cf2.html b/docs/html/dir_3a92f14bdf3dfaa79faab39cf7167cf2.html new file mode 100644 index 000000000..4071520aa --- /dev/null +++ b/docs/html/dir_3a92f14bdf3dfaa79faab39cf7167cf2.html @@ -0,0 +1,127 @@ + + + + + + + +Manifold: c Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
c Directory Reference
+
+
+ + + + +

+Directories

 include
 
+ + + + + + + +

+Files

 box.cpp
 
 cross.cpp
 
 rect.cpp
 
+
+
+ + + + diff --git a/docs/html/dir_411139fb7c51b97947dc3f4c990fa2a8.html b/docs/html/dir_411139fb7c51b97947dc3f4c990fa2a8.html new file mode 100644 index 000000000..d23db89de --- /dev/null +++ b/docs/html/dir_411139fb7c51b97947dc3f4c990fa2a8.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_46e7b3646ff8bc1527ae1e0fd4b7ea0c.html b/docs/html/dir_46e7b3646ff8bc1527ae1e0fd4b7ea0c.html new file mode 100644 index 000000000..c56250907 --- /dev/null +++ b/docs/html/dir_46e7b3646ff8bc1527ae1e0fd4b7ea0c.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Files

 cross_section.h
 
+
+
+ + + + diff --git a/docs/html/dir_4b3af5e33c6e30f1df245af5cd6be3c5.html b/docs/html/dir_4b3af5e33c6e30f1df245af5cd6be3c5.html new file mode 100644 index 000000000..5659acaf6 --- /dev/null +++ b/docs/html/dir_4b3af5e33c6e30f1df245af5cd6be3c5.html @@ -0,0 +1,124 @@ + + + + + + + +Manifold: polygons Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
polygons Directory Reference
+
+
+ + + + + + + + + + +

+Files

 polygon_corpus.cpp
 
 sponge.cpp
 
 zebra.cpp
 
 zebra3.cpp
 
+
+
+ + + + diff --git a/docs/html/dir_4ffc793862454300142bae38e0ddddb6.html b/docs/html/dir_4ffc793862454300142bae38e0ddddb6.html new file mode 100644 index 000000000..820c61bed --- /dev/null +++ b/docs/html/dir_4ffc793862454300142bae38e0ddddb6.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: polygon Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
polygon Directory Reference
+
+
+ + + + + + +

+Directories

 include
 
 src
 
+
+
+ + + + diff --git a/docs/html/dir_595091899e7484108f36f28facccf73b.html b/docs/html/dir_595091899e7484108f36f28facccf73b.html new file mode 100644 index 000000000..cb147c97c --- /dev/null +++ b/docs/html/dir_595091899e7484108f36f28facccf73b.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Files

 polygon.h
 
+
+
+ + + + diff --git a/docs/html/dir_5e1898e4b52372285d7fdfd9dda7fae4.html b/docs/html/dir_5e1898e4b52372285d7fdfd9dda7fae4.html new file mode 100644 index 000000000..8cf724c21 --- /dev/null +++ b/docs/html/dir_5e1898e4b52372285d7fdfd9dda7fae4.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: examples Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
examples Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_6505c5f6e79ee6ee4e199558e7ba5a4c.html b/docs/html/dir_6505c5f6e79ee6ee4e199558e7ba5a4c.html new file mode 100644 index 000000000..79ff40a0d --- /dev/null +++ b/docs/html/dir_6505c5f6e79ee6ee4e199558e7ba5a4c.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: cross_section Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
cross_section Directory Reference
+
+
+ + + + + + +

+Directories

 include
 
 src
 
+
+
+ + + + diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..6256971ac --- /dev/null +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_6f9635d4fbfa321d4c00f29df5cd540c.html b/docs/html/dir_6f9635d4fbfa321d4c00f29df5cd540c.html new file mode 100644 index 000000000..63d569cad --- /dev/null +++ b/docs/html/dir_6f9635d4fbfa321d4c00f29df5cd540c.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: samples Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
samples Directory Reference
+
+
+ + + + + + +

+Directories

 include
 
 src
 
+
+
+ + + + diff --git a/docs/html/dir_7a1d03d6e98827f36dd6952c603435c3.html b/docs/html/dir_7a1d03d6e98827f36dd6952c603435c3.html new file mode 100644 index 000000000..05cfd9874 --- /dev/null +++ b/docs/html/dir_7a1d03d6e98827f36dd6952c603435c3.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Files

 samples.h
 
+
+
+ + + + diff --git a/docs/html/dir_7b5d38f1875f1b693f62ca6a108a1129.html b/docs/html/dir_7b5d38f1875f1b693f62ca6a108a1129.html new file mode 100644 index 000000000..b6bd11176 --- /dev/null +++ b/docs/html/dir_7b5d38f1875f1b693f62ca6a108a1129.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: utilities Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
utilities Directory Reference
+
+
+ + + + +

+Directories

 include
 
+
+
+ + + + diff --git a/docs/html/dir_831f472cf672c235312e7f1d1816ce6c.html b/docs/html/dir_831f472cf672c235312e7f1d1816ce6c.html new file mode 100644 index 000000000..61a5ae48f --- /dev/null +++ b/docs/html/dir_831f472cf672c235312e7f1d1816ce6c.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: collider Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
collider Directory Reference
+
+
+ + + + +

+Directories

 include
 
+
+
+ + + + diff --git a/docs/html/dir_950b68c6a47147ffcc51e04695da9a54.html b/docs/html/dir_950b68c6a47147ffcc51e04695da9a54.html new file mode 100644 index 000000000..8d704121b --- /dev/null +++ b/docs/html/dir_950b68c6a47147ffcc51e04695da9a54.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_9a5ac44fcbd860e3dcbe5a914a21114c.html b/docs/html/dir_9a5ac44fcbd860e3dcbe5a914a21114c.html new file mode 100644 index 000000000..794330064 --- /dev/null +++ b/docs/html/dir_9a5ac44fcbd860e3dcbe5a914a21114c.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: wasm Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
wasm Directory Reference
+
+
+ + + + +

+Files

 helpers.cpp
 
+
+
+ + + + diff --git a/docs/html/dir_bec6917ed0ee86d39288c395bdef2150.html b/docs/html/dir_bec6917ed0ee86d39288c395bdef2150.html new file mode 100644 index 000000000..4016fc71d --- /dev/null +++ b/docs/html/dir_bec6917ed0ee86d39288c395bdef2150.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: python Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
python Directory Reference
+
+
+ + + + +

+Directories

 examples
 
+
+
+ + + + diff --git a/docs/html/dir_c5bd9479356315758215f331b902faba.html b/docs/html/dir_c5bd9479356315758215f331b902faba.html new file mode 100644 index 000000000..6281f26a5 --- /dev/null +++ b/docs/html/dir_c5bd9479356315758215f331b902faba.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + + + + + +

+Files

 conv.h
 
 manifoldc.h
 
 types.h
 
+
+
+ + + + diff --git a/docs/html/dir_c84e25c25e5bcb4e381881ddcc618a67.html b/docs/html/dir_c84e25c25e5bcb4e381881ddcc618a67.html new file mode 100644 index 000000000..64a66513d --- /dev/null +++ b/docs/html/dir_c84e25c25e5bcb4e381881ddcc618a67.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/docs/html/dir_cabb6060e29ffd5a04545f711b9f938a.html b/docs/html/dir_cabb6060e29ffd5a04545f711b9f938a.html new file mode 100644 index 000000000..378423ec6 --- /dev/null +++ b/docs/html/dir_cabb6060e29ffd5a04545f711b9f938a.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: manifold Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
manifold Directory Reference
+
+
+ + + + + + +

+Directories

 include
 
 src
 
+
+
+ + + + diff --git a/docs/html/dir_e600baf0cd831db43dc31cc567702ce1.html b/docs/html/dir_e600baf0cd831db43dc31cc567702ce1.html new file mode 100644 index 000000000..c0dd21791 --- /dev/null +++ b/docs/html/dir_e600baf0cd831db43dc31cc567702ce1.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: meshIO Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
meshIO Directory Reference
+
+
+ + + + + + +

+Directories

 include
 
 src
 
+
+
+ + + + diff --git a/docs/html/doc.svg b/docs/html/doc.svg new file mode 100644 index 000000000..0b928a531 --- /dev/null +++ b/docs/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/docd.svg b/docs/html/docd.svg new file mode 100644 index 000000000..ac18b2755 --- /dev/null +++ b/docs/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 000000000..009a9b554 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 000000000..b73c82889 --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/docs/html/folderclosed.svg b/docs/html/folderclosed.svg new file mode 100644 index 000000000..b04bed2e7 --- /dev/null +++ b/docs/html/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/html/folderclosedd.svg b/docs/html/folderclosedd.svg new file mode 100644 index 000000000..52f0166a2 --- /dev/null +++ b/docs/html/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/html/folderopen.svg b/docs/html/folderopen.svg new file mode 100644 index 000000000..f6896dd25 --- /dev/null +++ b/docs/html/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/html/folderopend.svg b/docs/html/folderopend.svg new file mode 100644 index 000000000..2d1f06e7b --- /dev/null +++ b/docs/html/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 000000000..6ad7d531f --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/docs/html/functions_b.html b/docs/html/functions_b.html new file mode 100644 index 000000000..61f4d355b --- /dev/null +++ b/docs/html/functions_b.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+
+ + + + diff --git a/docs/html/functions_c.html b/docs/html/functions_c.html new file mode 100644 index 000000000..46a345b59 --- /dev/null +++ b/docs/html/functions_c.html @@ -0,0 +1,128 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+
+ + + + diff --git a/docs/html/functions_d.html b/docs/html/functions_d.html new file mode 100644 index 000000000..07172b4b3 --- /dev/null +++ b/docs/html/functions_d.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+
+ + + + diff --git a/docs/html/functions_dup.js b/docs/html/functions_dup.js new file mode 100644 index 000000000..9057317a5 --- /dev/null +++ b/docs/html/functions_dup.js @@ -0,0 +1,24 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "j", "functions_j.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ] +]; \ No newline at end of file diff --git a/docs/html/functions_e.html b/docs/html/functions_e.html new file mode 100644 index 000000000..3ec1332c5 --- /dev/null +++ b/docs/html/functions_e.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+
+ + + + diff --git a/docs/html/functions_enum.html b/docs/html/functions_enum.html new file mode 100644 index 000000000..8bd4835cf --- /dev/null +++ b/docs/html/functions_enum.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: Class Members - Enumerations + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented enums with links to the class documentation for each member:
+
+
+ + + + diff --git a/docs/html/functions_f.html b/docs/html/functions_f.html new file mode 100644 index 000000000..36a3f198c --- /dev/null +++ b/docs/html/functions_f.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+
+ + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 000000000..bc72e2807 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,307 @@ + + + + + + + +Manifold: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/docs/html/functions_g.html b/docs/html/functions_g.html new file mode 100644 index 000000000..440e3e957 --- /dev/null +++ b/docs/html/functions_g.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+
+ + + + diff --git a/docs/html/functions_h.html b/docs/html/functions_h.html new file mode 100644 index 000000000..d5c3c1b1d --- /dev/null +++ b/docs/html/functions_h.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+
+ + + + diff --git a/docs/html/functions_i.html b/docs/html/functions_i.html new file mode 100644 index 000000000..a7396680a --- /dev/null +++ b/docs/html/functions_i.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/docs/html/functions_j.html b/docs/html/functions_j.html new file mode 100644 index 000000000..32c20c0f5 --- /dev/null +++ b/docs/html/functions_j.html @@ -0,0 +1,113 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- j -

+
+
+ + + + diff --git a/docs/html/functions_l.html b/docs/html/functions_l.html new file mode 100644 index 000000000..249a830ca --- /dev/null +++ b/docs/html/functions_l.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+
+ + + + diff --git a/docs/html/functions_m.html b/docs/html/functions_m.html new file mode 100644 index 000000000..265e2557a --- /dev/null +++ b/docs/html/functions_m.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/docs/html/functions_n.html b/docs/html/functions_n.html new file mode 100644 index 000000000..3a424f7eb --- /dev/null +++ b/docs/html/functions_n.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+
+ + + + diff --git a/docs/html/functions_o.html b/docs/html/functions_o.html new file mode 100644 index 000000000..eb34bd7cb --- /dev/null +++ b/docs/html/functions_o.html @@ -0,0 +1,124 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/docs/html/functions_p.html b/docs/html/functions_p.html new file mode 100644 index 000000000..139521b36 --- /dev/null +++ b/docs/html/functions_p.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/docs/html/functions_r.html b/docs/html/functions_r.html new file mode 100644 index 000000000..09523e825 --- /dev/null +++ b/docs/html/functions_r.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+
+ + + + diff --git a/docs/html/functions_s.html b/docs/html/functions_s.html new file mode 100644 index 000000000..38a52f6a6 --- /dev/null +++ b/docs/html/functions_s.html @@ -0,0 +1,137 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+
+ + + + diff --git a/docs/html/functions_t.html b/docs/html/functions_t.html new file mode 100644 index 000000000..b8fcb3864 --- /dev/null +++ b/docs/html/functions_t.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+
+ + + + diff --git a/docs/html/functions_u.html b/docs/html/functions_u.html new file mode 100644 index 000000000..ad41beab4 --- /dev/null +++ b/docs/html/functions_u.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+
+ + + + diff --git a/docs/html/functions_v.html b/docs/html/functions_v.html new file mode 100644 index 000000000..0411f192d --- /dev/null +++ b/docs/html/functions_v.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 000000000..8cb8021ea --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,194 @@ + + + + + + + +Manifold: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented variables with links to the class documentation for each member:
+ +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+
+ + + + diff --git a/docs/html/functions_w.html b/docs/html/functions_w.html new file mode 100644 index 000000000..e0a5e3d7c --- /dev/null +++ b/docs/html/functions_w.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+
+ + + + diff --git a/docs/html/group___connections.html b/docs/html/group___connections.html new file mode 100644 index 000000000..c6e309ff8 --- /dev/null +++ b/docs/html/group___connections.html @@ -0,0 +1,610 @@ + + + + + + + +Manifold: Connections + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Connections
+
+
+ +

Move data in and out of the Manifold class. +More...

+ + + + + + + + + + + + + + + + +

+Classes

struct  MeshGL
 
struct  Mesh
 
struct  Smoothness
 
struct  Properties
 
struct  Box
 
struct  Rect
 
struct  SVDSet
 
+ + + + + +

+Typedefs

using SimplePolygon = std::vector< glm::vec2 >
 
using Polygons = std::vector< SimplePolygon >
 
+ + + + + + + + + + + + + + + + + + +

+Functions

float sind (float x)
 
float cosd (float x)
 
glm::mat4x3 RotateUp (glm::vec3 up)
 
int CCW (glm::vec2 p0, glm::vec2 p1, glm::vec2 p2, float tol)
 
SVDSet SVD (glm::mat3 A)
 
float SpectralNorm (glm::mat3 A)
 
std::vector< glm::ivec3 > Triangulate (const Polygons &polygons, float precision)
 Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap, but will always return a manifold result that matches the input edge directions.
 
+ExecutionParamsPolygonParams ()
 
+

Detailed Description

+

Move data in and out of the Manifold class.

+

Class Documentation

+ +

◆ manifold::Mesh

+ +
+
+ + + + +
struct manifold::Mesh
+
+

The triangle-mesh input and output of this library.

+
+ + + + + + + + + + + + + + + + +
Class Members
+vector< vec3 > +vertPos +Required: The X-Y-Z positions of all vertices.
+vector< ivec3 > +triVerts +

Required: The vertex indices of the three triangle corners in CCW (from the outside) order, for each triangle.

+
+vector< vec3 > +vertNormal +

Optional: The X-Y-Z normal vectors of each vertex. If non-empty, must have the same length as vertPos. If empty, these will be calculated automatically.

+
+vector< vec4 > +halfedgeTangent +

Optional: The X-Y-Z-W weighted tangent vectors for smooth Refine(). If non-empty, must be exactly three times as long as Mesh.triVerts. Indexed as 3 * tri + i, representing the tangent from Mesh.triVerts[tri][i] along the CCW edge. If empty, mesh is faceted.

+
+float +precision = 0 +

The absolute precision of the vertex positions, based on accrued rounding errors. When creating a Manifold, the precision used will be the maximum of this and a baseline precision from the size of the bounding box. Any edge shorter than precision may be collapsed.

+
+ +
+
+ +

◆ manifold::Smoothness

+ +
+
+ + + + +
struct manifold::Smoothness
+
+

Defines which edges to sharpen and how much for the Manifold.Smooth() constructor.

+
+ + + + + + + +
Class Members
+size_t +halfedge +The halfedge index = 3 * tri + i, referring to Mesh.triVerts[tri][i].
+float +smoothness +

A value between 0 and 1, where 0 is sharp and 1 is the default and the curvature is interpolated between these values. The two paired halfedges can have different values while maintaining C-1 continuity (except for 0).

+
+ +
+
+ +

◆ manifold::Properties

+ +
+
+ + + + +
struct manifold::Properties
+
+

Geometric properties of the manifold, created with Manifold.GetProperties().

+
+ + + + + + + +
Class Members
+float +surfaceArea +
+float +volume +
+ +
+
+ +

◆ manifold::SVDSet

+ +
+
+ + + + +
struct manifold::SVDSet
+
+

The three matrices of a Singular Value Decomposition.

+
+ + + + + + + + + + +
Class Members
+mat3 +U +
+mat3 +S +
+mat3 +V +
+ +
+
+

Typedef Documentation

+ +

◆ SimplePolygon

+ +
+
+ + + + +
using SimplePolygon = std::vector<glm::vec2>
+
+

Single polygon contour, wound CCW. First and last point are implicitly connected. Should ensure all input is ε-valid.

+ +
+
+ +

◆ Polygons

+ +
+
+ + + + +
using Polygons = std::vector<SimplePolygon>
+
+

Set of polygons with holes. Order of contours is arbitrary. Can contain any depth of nested holes and any number of separate polygons. Should ensure all input is ε-valid.

+ +
+
+

Function Documentation

+ +

◆ Triangulate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::vector< glm::ivec3 > Triangulate (const Polygonspolygons,
float precision 
)
+
+ +

Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap, but will always return a manifold result that matches the input edge directions.

+
Parameters
+ + + +
polygonsThe set of polygons, wound CCW and representing multiple polygons and/or holes.
precisionThe value of ε, bounding the uncertainty of the input.
+
+
+
Returns
std::vector<glm::ivec3> The triangles, referencing the original polygon points in order.
+ +
+
+ +

◆ sind()

+ +
+
+ + + + + +
+ + + + + + + + +
float sind (float x)
+
+inline
+
+

Sine function where multiples of 90 degrees come out exact.

+
Parameters
+ + +
xAngle in degrees.
+
+
+ +
+
+ +

◆ cosd()

+ +
+
+ + + + + +
+ + + + + + + + +
float cosd (float x)
+
+inline
+
+

Cosine function where multiples of 90 degrees come out exact.

+
Parameters
+ + +
xAngle in degrees.
+
+
+ +
+
+ +

◆ RotateUp()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::mat4x3 RotateUp (glm::vec3 up)
+
+inline
+
+

This 4x3 matrix can be used as an input to Manifold.Transform() to turn an object. Turns along the shortest path from given up-vector to (0, 0, 1).

+
Parameters
+ + +
upThe vector to be turned to point upwards. Length does not matter.
+
+
+ +
+
+ +

◆ CCW()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int CCW (glm::vec2 p0,
glm::vec2 p1,
glm::vec2 p2,
float tol 
)
+
+inline
+
+

Determines if the three points are wound counter-clockwise, clockwise, or colinear within the specified tolerance.

+
Parameters
+ + + + + +
p0First point
p1Second point
p2Third point
tolTolerance value for colinearity
+
+
+
Returns
int, like Signum, this returns 1 for CCW, -1 for CW, and 0 if within tol of colinear.
+ +
+
+ +

◆ SVD()

+ +
+
+ + + + + +
+ + + + + + + + +
SVDSet SVD (glm::mat3 A)
+
+inline
+
+

Returns the Singular Value Decomposition of A: A = U * S * glm::transpose(V).

+
Parameters
+ + +
AThe matrix to decompose.
+
+
+ +
+
+ +

◆ SpectralNorm()

+ +
+
+ + + + + +
+ + + + + + + + +
float SpectralNorm (glm::mat3 A)
+
+inline
+
+

Returns the largest singular value of A.

+
Parameters
+ + +
AThe matrix to measure.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/html/group___connections.js b/docs/html/group___connections.js new file mode 100644 index 000000000..a4cd78d86 --- /dev/null +++ b/docs/html/group___connections.js @@ -0,0 +1,81 @@ +var group___connections = +[ + [ "MeshGL", "structmanifold_1_1_mesh_g_l.html", [ + [ "MeshGL", "structmanifold_1_1_mesh_g_l.html#a258a2922fc12421c9a5ebde99606d0ed", null ], + [ "NumVert", "structmanifold_1_1_mesh_g_l.html#a21b84c701fbe74b93047405e36073658", null ], + [ "NumTri", "structmanifold_1_1_mesh_g_l.html#a3361a5e76bdb57f495d6ed826b3294b6", null ], + [ "Merge", "structmanifold_1_1_mesh_g_l.html#a2078d075bef279041b67769e4197c254", null ], + [ "numProp", "structmanifold_1_1_mesh_g_l.html#adf2ac53615be5ed3bf9ce4665e81eb75", null ], + [ "vertProperties", "structmanifold_1_1_mesh_g_l.html#aa4312e60a8b813c1ceb0e4229a993983", null ], + [ "triVerts", "structmanifold_1_1_mesh_g_l.html#afe0601a32ce917d3324b430a34f5d118", null ], + [ "mergeFromVert", "structmanifold_1_1_mesh_g_l.html#a77a299604952d11f9859c85f6e7b0078", null ], + [ "mergeToVert", "structmanifold_1_1_mesh_g_l.html#aefcc49e01a1d6de7ce57830d55b66e9a", null ], + [ "runIndex", "structmanifold_1_1_mesh_g_l.html#a0a53d3053354c6a80b1164f4e87c3ab4", null ], + [ "runOriginalID", "structmanifold_1_1_mesh_g_l.html#aa67d01a9b240154a754945eca9fca3e0", null ], + [ "runTransform", "structmanifold_1_1_mesh_g_l.html#a2ea55ea45b4bd7ec973dcf2973abaa20", null ], + [ "faceID", "structmanifold_1_1_mesh_g_l.html#ac6e7182a9cef30c9644ee167fbff30e1", null ], + [ "halfedgeTangent", "structmanifold_1_1_mesh_g_l.html#a387df8d12d2307639b862c30efa7e5c5", null ], + [ "precision", "structmanifold_1_1_mesh_g_l.html#acd76b1c12cd41083eeef7b6f09c32141", null ] + ] ], + [ "Mesh", "group___connections.html#structmanifold_1_1_mesh", [ + [ "vertPos", "group___connections.html#abe99befaf9804cdadc31f0233bf4827a", null ], + [ "triVerts", "group___connections.html#a2e749255313f9e672d69b4a94bd8e73e", null ], + [ "vertNormal", "group___connections.html#a7e3e35f7f7302164b545e6ea8e7cc6a6", null ], + [ "halfedgeTangent", "group___connections.html#a496f746871d5d54cf13f1935b0e4fc66", null ], + [ "precision", "group___connections.html#acd76b1c12cd41083eeef7b6f09c32141", null ] + ] ], + [ "Smoothness", "group___connections.html#structmanifold_1_1_smoothness", [ + [ "halfedge", "group___connections.html#aac5709f1a46385ba2978c8184909a8f9", null ], + [ "smoothness", "group___connections.html#a6ebfae52291cc3b6f4e25043eaf14381", null ] + ] ], + [ "Properties", "group___connections.html#structmanifold_1_1_properties", null ], + [ "Box", "structmanifold_1_1_box.html", [ + [ "Box", "structmanifold_1_1_box.html#adea1928c15ca1eb88b6619bc554911b5", null ], + [ "Box", "structmanifold_1_1_box.html#a4e57b8d753c7850eafadadd5c6712d0f", null ], + [ "Size", "structmanifold_1_1_box.html#adedb961e2415f91bef56c5ca13e1e651", null ], + [ "Center", "structmanifold_1_1_box.html#aa2116eed911ac1b0277788b05b0f663f", null ], + [ "Scale", "structmanifold_1_1_box.html#ac60a4c17cace9263b70bf5e5c6f43b58", null ], + [ "Contains", "structmanifold_1_1_box.html#a1aa1ea08f35a830ecc80b2bc83c9bcce", null ], + [ "Contains", "structmanifold_1_1_box.html#afddd3d24795d0c760ae8a458ead93b0d", null ], + [ "Union", "structmanifold_1_1_box.html#ac35d2842beedafce43f5ae4dea7aef3b", null ], + [ "Union", "structmanifold_1_1_box.html#a8d8616c9f61502d6fe2331ba7a3dc7fd", null ], + [ "Transform", "structmanifold_1_1_box.html#a821dd8a461d5c6938968cd76125b2102", null ], + [ "operator+", "structmanifold_1_1_box.html#af972bb4de52bdc0a952d4a6907f53e67", null ], + [ "operator+=", "structmanifold_1_1_box.html#a994c4a973b15e5f2f7dbccb7b5dc19d4", null ], + [ "operator*", "structmanifold_1_1_box.html#a60e8048a284bf5f5de8bc93fe2e3b617", null ], + [ "operator*=", "structmanifold_1_1_box.html#af62267ab92ad369671e2cb34a296d4fc", null ], + [ "DoesOverlap", "structmanifold_1_1_box.html#a46774b2491c515fa7f6d48c561395669", null ], + [ "DoesOverlap", "structmanifold_1_1_box.html#a0eae49109f2471de7546d95c273f3461", null ], + [ "IsFinite", "structmanifold_1_1_box.html#a33b7dcc502aae627fbc56bcfecf33af1", null ] + ] ], + [ "Rect", "structmanifold_1_1_rect.html", [ + [ "Rect", "structmanifold_1_1_rect.html#ae436fd0322c99157c5443a3385961e22", null ], + [ "Rect", "structmanifold_1_1_rect.html#a00ed04e729457429ca773061236a3bee", null ], + [ "Size", "structmanifold_1_1_rect.html#a232479a21f63dd4e6868cdedec53fa71", null ], + [ "Area", "structmanifold_1_1_rect.html#a10d5618fa11db90402e29c30fbf50096", null ], + [ "Scale", "structmanifold_1_1_rect.html#ac60a4c17cace9263b70bf5e5c6f43b58", null ], + [ "Center", "structmanifold_1_1_rect.html#a04bdce0e30cdda6f80ccb5255a12f7df", null ], + [ "Contains", "structmanifold_1_1_rect.html#a348dcfe50700c6ff69c6fa7641f7537d", null ], + [ "Contains", "structmanifold_1_1_rect.html#aca39547495139ea25f2edd87569e10b6", null ], + [ "DoesOverlap", "structmanifold_1_1_rect.html#ae9b86c34e407f27313804c9a7d30c8c2", null ], + [ "IsEmpty", "structmanifold_1_1_rect.html#a8e12342fc420701fbffd97025421575a", null ], + [ "IsFinite", "structmanifold_1_1_rect.html#a33b7dcc502aae627fbc56bcfecf33af1", null ], + [ "Union", "structmanifold_1_1_rect.html#af8cf47248b361c1f8eec6b22dedb4233", null ], + [ "Union", "structmanifold_1_1_rect.html#ac00b0b5a156d4a40a65637b7d419df70", null ], + [ "operator+", "structmanifold_1_1_rect.html#a3b80b2b8aa4ae73c6b4be29b7d4f09fc", null ], + [ "operator+=", "structmanifold_1_1_rect.html#a88e57e987bcbbc947831388b367fa036", null ], + [ "operator*", "structmanifold_1_1_rect.html#a2ef09e7a095674473637a34b26b4b389", null ], + [ "operator*=", "structmanifold_1_1_rect.html#aec959d2e100436dce6e226adb93ce9aa", null ], + [ "Transform", "structmanifold_1_1_rect.html#a3c4003d2fc5299530dcce7deb9df54a2", null ] + ] ], + [ "SVDSet", "group___connections.html#structmanifold_1_1_s_v_d_set", null ], + [ "SimplePolygon", "group___connections.html#ga53c298f15c33cb04ef759cec45eaecd1", null ], + [ "Polygons", "group___connections.html#ga60a66d8ddacc086bb45d8afc37f646d1", null ], + [ "Triangulate", "group___connections.html#ga1d01ff53289da0842e539ddf8cda5c96", null ], + [ "sind", "group___connections.html#gaf191247f966a40ecf3ee0fe9a717c0f3", null ], + [ "cosd", "group___connections.html#ga502f5a841d8d1fcba289e167a1177bda", null ], + [ "RotateUp", "group___connections.html#ga8997efa1e8a2c5fcc69314c863a8b6da", null ], + [ "CCW", "group___connections.html#ga20f946797231119dd2b7260c216cda31", null ], + [ "SVD", "group___connections.html#ga52654eb696e6ea2b67dcd45063d1724a", null ], + [ "SpectralNorm", "group___connections.html#ga50a9d6292886da472798354447a68cd7", null ] +]; \ No newline at end of file diff --git a/docs/html/group___connections_structmanifold_1_1_mesh.js b/docs/html/group___connections_structmanifold_1_1_mesh.js new file mode 100644 index 000000000..9f60e83d5 --- /dev/null +++ b/docs/html/group___connections_structmanifold_1_1_mesh.js @@ -0,0 +1,8 @@ +var group___connections_structmanifold_1_1_mesh = +[ + [ "vertPos", "group___connections.html#abe99befaf9804cdadc31f0233bf4827a", null ], + [ "triVerts", "group___connections.html#a2e749255313f9e672d69b4a94bd8e73e", null ], + [ "vertNormal", "group___connections.html#a7e3e35f7f7302164b545e6ea8e7cc6a6", null ], + [ "halfedgeTangent", "group___connections.html#a496f746871d5d54cf13f1935b0e4fc66", null ], + [ "precision", "group___connections.html#acd76b1c12cd41083eeef7b6f09c32141", null ] +]; \ No newline at end of file diff --git a/docs/html/group___connections_structmanifold_1_1_smoothness.js b/docs/html/group___connections_structmanifold_1_1_smoothness.js new file mode 100644 index 000000000..74ac2dcca --- /dev/null +++ b/docs/html/group___connections_structmanifold_1_1_smoothness.js @@ -0,0 +1,5 @@ +var group___connections_structmanifold_1_1_smoothness = +[ + [ "halfedge", "group___connections.html#aac5709f1a46385ba2978c8184909a8f9", null ], + [ "smoothness", "group___connections.html#a6ebfae52291cc3b6f4e25043eaf14381", null ] +]; \ No newline at end of file diff --git a/docs/html/group___core.html b/docs/html/group___core.html new file mode 100644 index 000000000..130df6ee9 --- /dev/null +++ b/docs/html/group___core.html @@ -0,0 +1,254 @@ + + + + + + + +Manifold: Core + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Core
+
+
+ +

The central classes of the library. +More...

+ + + + + + + + +

+Classes

class  CrossSection
 
class  Manifold
 
class  Quality
 
+ + + +

+Enumerations

enum class  OpType { Add +, Subtract +, Intersect + }
 
+ + + +

+Functions

static MeshGL LevelSet (std::function< float(glm::vec3)> sdf, Box bounds, float edgeLength, float level=0, float precision=-1, bool canParallel=true)
 
+ + + + + + + +

+Variables

+constexpr int DEFAULT_SEGMENTS = 0
 
+constexpr float DEFAULT_ANGLE = 10.0f
 
+constexpr float DEFAULT_LENGTH = 1.0f
 
+

Detailed Description

+

The central classes of the library.

+

Enumeration Type Documentation

+ +

◆ OpType

+ +
+
+ + + + + +
+ + + + +
enum class OpType
+
+strong
+
+

Boolean operation type: Add (Union), Subtract (Difference), and Intersect.

+ +
+
+

Function Documentation

+ +

◆ LevelSet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MeshGL LevelSet (std::function< float(glm::vec3)> sdf,
Box bounds,
float edgeLength,
float level = 0,
float precision = -1,
bool canParallel = true 
)
+
+static
+
+

Constructs a level-set MeshGL from the input Signed-Distance Function (SDF). This uses a form of Marching Tetrahedra (akin to Marching Cubes, but better for manifoldness). Instead of using a cubic grid, it uses a body-centered cubic grid (two shifted cubic grids). This means if your function's interior exceeds the given bounds, you will see a kind of egg-crate shape closing off the manifold, which is due to the underlying grid.

+
Parameters
+ + + + + + + +
sdfThe signed-distance functor, containing this function signature: float operator()(glm::vec3 point), which returns the signed distance of a given point in R^3. Positive values are inside, negative outside.
boundsAn axis-aligned box that defines the extent of the grid.
edgeLengthApproximate maximum edge length of the triangles in the final result. This affects grid spacing, and hence has a strong effect on performance.
levelYou can inset your Mesh by using a positive value, or outset it with a negative value.
precisionEnsure each vertex is within this distance of the true surface. Defaults to -1, which will return the interpolated crossing-point based on the two nearest grid points. Small positive values will require more sdf evaluations per output vertex.
canParallelParallel policies violate will crash language runtimes with runtime locks that expect to not be called back by unregistered threads. This allows bindings use LevelSet despite being compiled with MANIFOLD_PAR active.
+
+
+
Returns
MeshGL This mesh is guaranteed to be manifold and so can always be used as input to the Manifold constructor for further operations.
+ +
+
+
+
+ + + + diff --git a/docs/html/group___core.js b/docs/html/group___core.js new file mode 100644 index 000000000..477e46b50 --- /dev/null +++ b/docs/html/group___core.js @@ -0,0 +1,100 @@ +var group___core = +[ + [ "CrossSection", "classmanifold_1_1_cross_section.html", [ + [ "FillRule", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4", [ + [ "EvenOdd", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a8e586e4bd2c45e86222301f2e6e0e390", null ], + [ "NonZero", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3d0365a27a39c0af183445fc4d932a8a", null ], + [ "Positive", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3289297424e01eda5b788c083bbf3147", null ], + [ "Negative", "classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4affb9356ff2b7da85c75c92fa7ea03b8b", null ] + ] ], + [ "JoinType", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395d", [ + [ "Square", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395daceb46ca115d05c51aa5a16a8867c3304", null ], + [ "Round", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dab7f41fc1412ad2ee75e9b2635d3b9d5c", null ], + [ "Miter", "classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dae4396f81cd926bb129ccf3c147c64514", null ] + ] ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#acbed403d82ee8d55f3be2c9a5f963ec0", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#ada3a36554c48080ae963a9628de79436", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#aca5659d6e02ee4583791b54285d682a2", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#a885334a617ae0eea9402f74a20f4408e", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html#ad2f60f6e1e3d45e773a595a1be246cf2", null ], + [ "Area", "classmanifold_1_1_cross_section.html#ac84b151a969c68d662637e8245548666", null ], + [ "NumVert", "classmanifold_1_1_cross_section.html#a85b690c706c5e2c2c29e0ced0c2728ca", null ], + [ "NumContour", "classmanifold_1_1_cross_section.html#af73463c82eede09392aff17a7154a00c", null ], + [ "IsEmpty", "classmanifold_1_1_cross_section.html#a8e12342fc420701fbffd97025421575a", null ], + [ "Bounds", "classmanifold_1_1_cross_section.html#ae69af2b193a98c4adc6f613a7463482c", null ], + [ "Translate", "classmanifold_1_1_cross_section.html#a106b1c0c300c4820cd9f5ec2f683a0db", null ], + [ "Rotate", "classmanifold_1_1_cross_section.html#a95da829a99ea68c24170525e849e7dc4", null ], + [ "Scale", "classmanifold_1_1_cross_section.html#af181324d8998fd89fa7a3e8bc7ef905c", null ], + [ "Mirror", "classmanifold_1_1_cross_section.html#adf67b7a277a85b21115f7063361da2ff", null ], + [ "Transform", "classmanifold_1_1_cross_section.html#af6b6f90c21018d47d860713c60a8399c", null ], + [ "Warp", "classmanifold_1_1_cross_section.html#a6c51d81d2e730c4a3325b4ba9b3ead39", null ], + [ "WarpBatch", "classmanifold_1_1_cross_section.html#ae004e45467f97624c89465248f4ffda1", null ], + [ "Simplify", "classmanifold_1_1_cross_section.html#aa46f202c1b92251f77fd497dc8fd9daf", null ], + [ "Offset", "classmanifold_1_1_cross_section.html#a9040df87b5b8b9b7705d6c6e62188d8a", null ], + [ "Boolean", "classmanifold_1_1_cross_section.html#a05734d6b0b1fb38d56865b9c73c806f2", null ], + [ "operator+", "classmanifold_1_1_cross_section.html#a347c593a12693ee05159b34db0957580", null ], + [ "operator+=", "classmanifold_1_1_cross_section.html#a1876fe37a88ce88f560d70e869e0b82a", null ], + [ "operator-", "classmanifold_1_1_cross_section.html#af6a000221ca368c9f2ed3e1f271cfb7f", null ], + [ "operator-=", "classmanifold_1_1_cross_section.html#a3f6a38bbe4bc0fbb90efa8aee5da12c0", null ], + [ "operator^", "classmanifold_1_1_cross_section.html#a34fcc007d18275e2cc32f4c99bc94cda", null ], + [ "operator^=", "classmanifold_1_1_cross_section.html#aa0e45fcdedab6a1288682bbb9a9959b3", null ], + [ "Decompose", "classmanifold_1_1_cross_section.html#a48f77ce6390caee13a94f681893fb65c", null ], + [ "Hull", "classmanifold_1_1_cross_section.html#aa5ea1caf54ddac72d939a00d13763ace", null ], + [ "ToPolygons", "classmanifold_1_1_cross_section.html#a209a83b1c39a84e094da9e854a7b8bc2", null ] + ] ], + [ "Manifold", "classmanifold_1_1_manifold.html", [ + [ "Manifold", "classmanifold_1_1_manifold.html#ad5f60691d05e3402630122740cdf3a0b", null ], + [ "Manifold", "classmanifold_1_1_manifold.html#a4bc17f3828311b81bf61c34805501599", null ], + [ "Manifold", "classmanifold_1_1_manifold.html#a3f761d66cf1aa619203bb7622a5f93ea", null ], + [ "Decompose", "classmanifold_1_1_manifold.html#a7f20b130779680156ce0d28d91e5d106", null ], + [ "GetMesh", "classmanifold_1_1_manifold.html#a74a906cf6aacd6c0aef61b5079a8c750", null ], + [ "GetMeshGL", "classmanifold_1_1_manifold.html#a5516d4d27772731e50540edd45553a4d", null ], + [ "IsEmpty", "classmanifold_1_1_manifold.html#a8e12342fc420701fbffd97025421575a", null ], + [ "Status", "classmanifold_1_1_manifold.html#a423e2f2a67ccc0662a97e018b2c3886d", null ], + [ "NumVert", "classmanifold_1_1_manifold.html#a85b690c706c5e2c2c29e0ced0c2728ca", null ], + [ "NumEdge", "classmanifold_1_1_manifold.html#a104cf8e5b32ca6b5789e8694835f332a", null ], + [ "NumTri", "classmanifold_1_1_manifold.html#a4a625f14e59f176052a369213cd89ed6", null ], + [ "NumProp", "classmanifold_1_1_manifold.html#a4895dc2eac1d414f84cb8ecf3ff28348", null ], + [ "NumPropVert", "classmanifold_1_1_manifold.html#aad2ca3e816f01c7390a774c6ffa9854d", null ], + [ "BoundingBox", "classmanifold_1_1_manifold.html#a3d711d458596b520edd4cd7948a53e67", null ], + [ "Precision", "classmanifold_1_1_manifold.html#a013e5ce70b14d7d19393bcdffbc73ce2", null ], + [ "Genus", "classmanifold_1_1_manifold.html#a4b1e9ca27fc618965d0bbbc9d29fb5c1", null ], + [ "GetProperties", "classmanifold_1_1_manifold.html#ace809d84f44f59232653183bf86ece07", null ], + [ "MinGap", "classmanifold_1_1_manifold.html#a4a193d3f0a8c3af87961a9161cb17c68", null ], + [ "OriginalID", "classmanifold_1_1_manifold.html#a65b3ff79efc694738a4f56270cc608e6", null ], + [ "AsOriginal", "classmanifold_1_1_manifold.html#a9b4bbbc5b70a0d1f6b07c91f1684fb57", null ], + [ "Translate", "classmanifold_1_1_manifold.html#ac1ebb85b775a3293bca68c2339762a08", null ], + [ "Scale", "classmanifold_1_1_manifold.html#ae06789ff9cbe03e56260538276dd8183", null ], + [ "Rotate", "classmanifold_1_1_manifold.html#a54569c8da01e3385a426011a40a60629", null ], + [ "Transform", "classmanifold_1_1_manifold.html#a707b0078fbb9bbad183812d7290630ce", null ], + [ "Mirror", "classmanifold_1_1_manifold.html#a90bbf2842d0a2dc394d32f1a0a32c24a", null ], + [ "Warp", "classmanifold_1_1_manifold.html#aecb7b2e2a6a18a570154dec76658496c", null ], + [ "WarpBatch", "classmanifold_1_1_manifold.html#a76546a15aa48f9a9064e7bfc7792c302", null ], + [ "SetProperties", "classmanifold_1_1_manifold.html#a1aaf5a6d1a3d8c22f1a2c57a653cc389", null ], + [ "CalculateCurvature", "classmanifold_1_1_manifold.html#a19abb297f7b7b43f5c84562bcc7df705", null ], + [ "CalculateNormals", "classmanifold_1_1_manifold.html#a69c1ea423ea019bb932e3f55d3f6ff50", null ], + [ "SmoothByNormals", "classmanifold_1_1_manifold.html#aa0cbb9710c375f40591c3ae2dd62f2b4", null ], + [ "SmoothOut", "classmanifold_1_1_manifold.html#a8ce7d02b7f16afb5e9bfb8a948e206d3", null ], + [ "Refine", "classmanifold_1_1_manifold.html#a5d9227a2d10d8ad7b005555213ecd1ac", null ], + [ "RefineToLength", "classmanifold_1_1_manifold.html#a4fa475bc00e8b7a8fe28eea6b2d0e69e", null ], + [ "Boolean", "classmanifold_1_1_manifold.html#a9aad9d9b9a58ff2b7622de673742d1df", null ], + [ "operator+", "classmanifold_1_1_manifold.html#af95e73e5427d09b9d9e025d5cf367c30", null ], + [ "operator+=", "classmanifold_1_1_manifold.html#a530ec6ae990090f4b5c52f0d32eb2688", null ], + [ "operator-", "classmanifold_1_1_manifold.html#ad9da8c505e6846e9645008825833e1da", null ], + [ "operator-=", "classmanifold_1_1_manifold.html#ae17823c1f0efdfa41324892e52ab1f2b", null ], + [ "operator^", "classmanifold_1_1_manifold.html#ad1e4e5720f01934c44aebc597be4d104", null ], + [ "operator^=", "classmanifold_1_1_manifold.html#a88768bbf9fabf89e72b27a45321b6522", null ], + [ "Split", "classmanifold_1_1_manifold.html#a60e241b8a56d334b3d2d3dbd2fc808ba", null ], + [ "SplitByPlane", "classmanifold_1_1_manifold.html#adc134d7a6dfbf8c74e5d531bbeb330cb", null ], + [ "TrimByPlane", "classmanifold_1_1_manifold.html#a1b711341093c115f6688cbcaae5c8741", null ], + [ "Slice", "classmanifold_1_1_manifold.html#a0a49d91545cef4bfcc2c9d7cb2492061", null ], + [ "Project", "classmanifold_1_1_manifold.html#a328657b69e9bbaaee148572ca314677c", null ], + [ "Hull", "classmanifold_1_1_manifold.html#a9dc9e00112e2b063cfa6fe8482b1afe8", null ], + [ "MatchesTriNormals", "classmanifold_1_1_manifold.html#a611a5fd95dc5d49cd88182b8ead722b7", null ], + [ "NumDegenerateTris", "classmanifold_1_1_manifold.html#afe3dd0baef775b394ee1a1ee0e353e66", null ], + [ "NumOverlaps", "classmanifold_1_1_manifold.html#a0dd36b29fdc9003280f6b1b96907b704", null ] + ] ], + [ "Quality", "classmanifold_1_1_quality.html", null ], + [ "OpType", "group___core.html#gaa1aa1c6a8f3bbed5b167bc2d4511b969", null ], + [ "LevelSet", "group___core.html#ga0bb6eea1a6990a9cb6009d138887c7ff", null ] +]; \ No newline at end of file diff --git a/docs/html/group___debug.html b/docs/html/group___debug.html new file mode 100644 index 000000000..268dae1eb --- /dev/null +++ b/docs/html/group___debug.html @@ -0,0 +1,269 @@ + + + + + + + +Manifold: Debug + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Debug
+
+
+ +

Debugging features. +More...

+ + + + + +

+Modules

 Exceptions
 Custom Exceptions.
 
+ + + +

+Classes

struct  ExecutionParams
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

ExecutionParamsManifoldParams ()
 
+template<typename T >
std::ostream & operator<< (std::ostream &stream, const glm::tvec2< T > &v)
 
+template<typename T >
std::ostream & operator<< (std::ostream &stream, const glm::tvec3< T > &v)
 
+template<typename T >
std::ostream & operator<< (std::ostream &stream, const glm::tvec4< T > &v)
 
+std::ostream & operator<< (std::ostream &stream, const glm::mat3 &mat)
 
+std::ostream & operator<< (std::ostream &stream, const glm::mat4x3 &mat)
 
+std::ostream & operator<< (std::ostream &stream, const Box &box)
 
+std::ostream & operator<< (std::ostream &stream, const Rect &box)
 
template<typename T >
void Dump (const std::vector< T > &vec)
 
+template<typename T >
void Diff (const std::vector< T > &a, const std::vector< T > &b)
 
+

Detailed Description

+

Debugging features.

+

The features require compiler flags to be enabled. Assertions are enabled with the MANIFOLD_DEBUG flag and then controlled with ExecutionParams. Exceptions are only thrown if the MANIFOLD_EXCEPTIONS flag is set. Import and Export of 3D models is only supported with the MANIFOLD_EXPORT flag, which also requires linking in the Assimp dependency.

+

Class Documentation

+ +

◆ manifold::ExecutionParams

+ +
+
+ + + + +
struct manifold::ExecutionParams
+
+

Global parameters that control debugging output. Only has an effect when compiled with the MANIFOLD_DEBUG flag.

+
+ + + + + + + + + + + + + + + + + + + +
Class Members
+bool +intermediateChecks = false +

Perform extra sanity checks and assertions on the intermediate data structures.

+
+bool +verbose = false +

Verbose output primarily of the Boolean, including timing info and vector sizes.

+
+bool +processOverlaps = true +

If processOverlaps is false, a geometric check will be performed to assert all triangles are CCW.

+
+bool +suppressErrors = false +

Suppresses printed errors regarding CW triangles. Has no effect if processOverlaps is true.

+
+bool +deterministic = false +Deterministic outputs. Will disable some parallel optimizations.
+bool +cleanupTriangles = true +Perform optional but recommended triangle cleanups in SimplifyTopology()
+ +
+
+

Function Documentation

+ +

◆ ManifoldParams()

+ +
+
+ + + + + + + +
ExecutionParams & ManifoldParams ()
+
+

Allows modification of the assertions checked in MANIFOLD_DEBUG mode.

+
Returns
ExecutionParams&
+ +
+
+ +

◆ Dump()

+ +
+
+
+template<typename T >
+ + + + + + + + +
void Dump (const std::vector< T > & vec)
+
+

Print the contents of this vector to standard output. Only exists if compiled with MANIFOLD_DEBUG flag.

+ +
+
+
+
+ + + + diff --git a/docs/html/group___debug.js b/docs/html/group___debug.js new file mode 100644 index 000000000..e0c6396b2 --- /dev/null +++ b/docs/html/group___debug.js @@ -0,0 +1,14 @@ +var group___debug = +[ + [ "Exceptions", "group___exceptions.html", "group___exceptions" ], + [ "ExecutionParams", "group___debug.html#structmanifold_1_1_execution_params", [ + [ "intermediateChecks", "group___debug.html#ae8dc7c8ba98011f6f2dbe1caddf2a6fb", null ], + [ "verbose", "group___debug.html#ab3f078684998b83967d507d0f453f454", null ], + [ "processOverlaps", "group___debug.html#a7166fd3caef3744f7241075f21f76af3", null ], + [ "suppressErrors", "group___debug.html#a48b673772893c29c426e98f8c84f0206", null ], + [ "deterministic", "group___debug.html#a02bda2c80b22d0c2507c7a74febb93bf", null ], + [ "cleanupTriangles", "group___debug.html#a85c1664e476e1da1b3d0973b3451857b", null ] + ] ], + [ "ManifoldParams", "group___debug.html#ga4a00dd8e8dff2c4f8a9105d1a5558275", null ], + [ "Dump", "group___debug.html#ga5a4ed9a6d64edb22079ff7a5caddcb5a", null ] +]; \ No newline at end of file diff --git a/docs/html/group___debug_structmanifold_1_1_execution_params.js b/docs/html/group___debug_structmanifold_1_1_execution_params.js new file mode 100644 index 000000000..95e902e24 --- /dev/null +++ b/docs/html/group___debug_structmanifold_1_1_execution_params.js @@ -0,0 +1,9 @@ +var group___debug_structmanifold_1_1_execution_params = +[ + [ "intermediateChecks", "group___debug.html#ae8dc7c8ba98011f6f2dbe1caddf2a6fb", null ], + [ "verbose", "group___debug.html#ab3f078684998b83967d507d0f453f454", null ], + [ "processOverlaps", "group___debug.html#a7166fd3caef3744f7241075f21f76af3", null ], + [ "suppressErrors", "group___debug.html#a48b673772893c29c426e98f8c84f0206", null ], + [ "deterministic", "group___debug.html#a02bda2c80b22d0c2507c7a74febb93bf", null ], + [ "cleanupTriangles", "group___debug.html#a85c1664e476e1da1b3d0973b3451857b", null ] +]; \ No newline at end of file diff --git a/docs/html/group___exceptions.html b/docs/html/group___exceptions.html new file mode 100644 index 000000000..4ba5309b4 --- /dev/null +++ b/docs/html/group___exceptions.html @@ -0,0 +1,135 @@ + + + + + + + +Manifold: Exceptions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Exceptions
+
+
+ +

Custom Exceptions. +More...

+ + + + + + + + +

+Classes

struct  userErr
 
struct  topologyErr
 
struct  geometryErr
 
+ + + +

+Typedefs

+using logicErr = std::logic_error
 
+

Detailed Description

+

Custom Exceptions.

+
+
+ + + + diff --git a/docs/html/group___exceptions.js b/docs/html/group___exceptions.js new file mode 100644 index 000000000..abcf06398 --- /dev/null +++ b/docs/html/group___exceptions.js @@ -0,0 +1,6 @@ +var group___exceptions = +[ + [ "userErr", "structmanifold_1_1user_err.html", null ], + [ "topologyErr", "structmanifold_1_1topology_err.html", null ], + [ "geometryErr", "structmanifold_1_1geometry_err.html", null ] +]; \ No newline at end of file diff --git a/docs/html/group___mesh_i_o.html b/docs/html/group___mesh_i_o.html new file mode 100644 index 000000000..6d3ad7938 --- /dev/null +++ b/docs/html/group___mesh_i_o.html @@ -0,0 +1,352 @@ + + + + + + + +Manifold: MeshIO + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshIO
+
+
+ +

3D model file I/O based on Assimp +More...

+ + + + + + +

+Classes

struct  Material
 
struct  ExportOptions
 
+ + + + + + + +

+Functions

Mesh ImportMesh (const std::string &filename, bool forceCleanup=false)
 
void ExportMesh (const std::string &filename, const Mesh &mesh, const ExportOptions &options)
 
void ExportMesh (const std::string &filename, const MeshGL &mesh, const ExportOptions &options)
 
+

Detailed Description

+

3D model file I/O based on Assimp

+

Class Documentation

+ +

◆ manifold::Material

+ +
+
+ + + + +
struct manifold::Material
+
+

PBR material properties for GLB/glTF files.

+
+ + + + + + + + + + + + + + + + + + + +
Class Members
+float +roughness = 0.2 +Roughness value between 0 (shiny) and 1 (matte).
+float +metalness = 1 +Metalness value, generally either 0 (dielectric) or 1 (metal).
+vec4 +color = glm::vec4(1.0f) +

Color (RGBA) multiplier to apply to the whole mesh (each value between 0 and 1).

+
+vector< vec4 > +vertColor +

Optional: If non-empty, must match Mesh.vertPos. Provides an RGBA color for each vertex, linearly interpolated across triangles. Colors are linear, not sRGB. Only used with Mesh export, not MeshGL.

+
+ivec3 +normalChannels = glm::ivec3(-1) +

For MeshGL export, gives the property indicies where the normal channels can be found. Must be >= 3, since the first three are position.

+
+ivec4 +colorChannels = glm::ivec4(-1) +

For MeshGL export, gives the property indicies where the color channels can be found. Any index < 0 will output all 1.0 for that channel.

+
+ +
+
+ +

◆ manifold::ExportOptions

+ +
+
+ + + + +
struct manifold::ExportOptions
+
+

These options only currently affect .glb and .gltf files.

+
+ + + + + + + +
Class Members
+bool +faceted = true +

When false, vertex normals are exported, causing the mesh to appear smooth through normal interpolation.

+
+Material +mat = {} +PBR material properties.
+ +
+
+

Function Documentation

+ +

◆ ImportMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Mesh ImportMesh (const std::string & filename,
bool forceCleanup 
)
+
+

Imports the given file as a Mesh structure, which can be converted to a Manifold if the mesh is a proper oriented 2-manifold. Any supported polygon format will be automatically triangulated.

+

This is a very simple import function and is intended primarily as a demonstration. Generally users of this library will need to modify this to read all the important properties for their application and set up any custom data structures.

+
Parameters
+ + + +
filenameSupports any format the Assimp library supports.
forceCleanupThis merges identical vertices, which can break manifoldness. However it is always done for STLs, as they cannot possibly be manifold without this step.
+
+
+ +
+
+ +

◆ ExportMesh() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ExportMesh (const std::string & filename,
const Meshmesh,
const ExportOptionsoptions 
)
+
+

Saves the Mesh to the desired file type, determined from the extension specified. In the case of .glb/.gltf, this will save in version 2.0.

+

This is a very simple export function and is intended primarily as a demonstration. Generally users of this library will need to modify this to write all the important properties for their application and read any custom data structures.

+
Parameters
+ + + + +
filenameThe file extension must be one that Assimp supports for export. GLB & 3MF are recommended.
meshThe mesh to export, likely from Manifold.GetMesh().
optionsThe options currently only affect an exported GLB's material. Pass {} for defaults.
+
+
+ +
+
+ +

◆ ExportMesh() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ExportMesh (const std::string & filename,
const MeshGLmesh,
const ExportOptionsoptions 
)
+
+

Saves the Mesh to the desired file type, determined from the extension specified. In the case of .glb/.gltf, this will save in version 2.0.

+

This is a very simple export function and is intended primarily as a demonstration. Generally users of this library will need to modify this to write all the important properties for their application and read any custom data structures.

+
Parameters
+ + + + +
filenameThe file extension must be one that Assimp supports for export. GLB & 3MF are recommended.
meshThe mesh to export, likely from Manifold.GetMeshGL().
optionsThe options currently only affect an exported GLB's material. Pass {} for defaults.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/html/group___mesh_i_o.js b/docs/html/group___mesh_i_o.js new file mode 100644 index 000000000..6b02c8d68 --- /dev/null +++ b/docs/html/group___mesh_i_o.js @@ -0,0 +1,18 @@ +var group___mesh_i_o = +[ + [ "Material", "group___mesh_i_o.html#structmanifold_1_1_material", [ + [ "roughness", "group___mesh_i_o.html#a2c76422d3e436164284a7dba0b8a9cc4", null ], + [ "metalness", "group___mesh_i_o.html#ad877087793da649b455041e10f4ed73f", null ], + [ "color", "group___mesh_i_o.html#af3f2d7fd6f40d5dd418aef858956a49b", null ], + [ "vertColor", "group___mesh_i_o.html#ad7e76077d824291218e32c0bdea9d3ff", null ], + [ "normalChannels", "group___mesh_i_o.html#afb46049a7293c3951d7c56b42701beaf", null ], + [ "colorChannels", "group___mesh_i_o.html#a0cb39f4007172ad6c0d647c9d0a5a4c7", null ] + ] ], + [ "ExportOptions", "group___mesh_i_o.html#structmanifold_1_1_export_options", [ + [ "faceted", "group___mesh_i_o.html#a30d67be5305ec851cfd4e8e4a15c6d05", null ], + [ "mat", "group___mesh_i_o.html#ad16fe831da261fdf27e971c77c3e8a60", null ] + ] ], + [ "ImportMesh", "group___mesh_i_o.html#ga6e6f86230549750f1d346db483fc30f0", null ], + [ "ExportMesh", "group___mesh_i_o.html#gac28a5cd14ebf185edff7a55c4efb5edb", null ], + [ "ExportMesh", "group___mesh_i_o.html#ga83ff5d8f4ee07ce7902b1d9ccea3640c", null ] +]; \ No newline at end of file diff --git a/docs/html/group___mesh_i_o_structmanifold_1_1_export_options.js b/docs/html/group___mesh_i_o_structmanifold_1_1_export_options.js new file mode 100644 index 000000000..4d736c18b --- /dev/null +++ b/docs/html/group___mesh_i_o_structmanifold_1_1_export_options.js @@ -0,0 +1,5 @@ +var group___mesh_i_o_structmanifold_1_1_export_options = +[ + [ "faceted", "group___mesh_i_o.html#a30d67be5305ec851cfd4e8e4a15c6d05", null ], + [ "mat", "group___mesh_i_o.html#ad16fe831da261fdf27e971c77c3e8a60", null ] +]; \ No newline at end of file diff --git a/docs/html/group___mesh_i_o_structmanifold_1_1_material.js b/docs/html/group___mesh_i_o_structmanifold_1_1_material.js new file mode 100644 index 000000000..5d534cbff --- /dev/null +++ b/docs/html/group___mesh_i_o_structmanifold_1_1_material.js @@ -0,0 +1,9 @@ +var group___mesh_i_o_structmanifold_1_1_material = +[ + [ "roughness", "group___mesh_i_o.html#a2c76422d3e436164284a7dba0b8a9cc4", null ], + [ "metalness", "group___mesh_i_o.html#ad877087793da649b455041e10f4ed73f", null ], + [ "color", "group___mesh_i_o.html#af3f2d7fd6f40d5dd418aef858956a49b", null ], + [ "vertColor", "group___mesh_i_o.html#ad7e76077d824291218e32c0bdea9d3ff", null ], + [ "normalChannels", "group___mesh_i_o.html#afb46049a7293c3951d7c56b42701beaf", null ], + [ "colorChannels", "group___mesh_i_o.html#a0cb39f4007172ad6c0d647c9d0a5a4c7", null ] +]; \ No newline at end of file diff --git a/docs/html/group___private.html b/docs/html/group___private.html new file mode 100644 index 000000000..bed8869d1 --- /dev/null +++ b/docs/html/group___private.html @@ -0,0 +1,338 @@ + + + + + + + +Manifold: Private + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Private
+
+
+ +

Internal classes of the library; not currently part of the public API. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  Collider
 
class  Boolean3
 
struct  Manifold::Impl
 
struct  Halfedge
 
struct  Barycentric
 
struct  TriRef
 
struct  TmpEdge
 
struct  PolyVert
 
class  HashTableD< V, H >
 
class  HashTable< V, H >
 
class  SparseIndices
 
struct  Timer
 
class  ConcurrentSharedPtr< T >
 
struct  UnionFind< I, R >
 
struct  Identity< T >
 
struct  Negate< T >
 
class  Vec< T >
 
+ + + + + +

+Typedefs

+using SimplePolygonIdx = std::vector< PolyVert >
 
+using PolygonsIdx = std::vector< SimplePolygonIdx >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+glm::vec3 SafeNormalize (glm::vec3 v)
 
+float MaxPrecision (float minPrecision, const Box &bBox)
 
+int NextHalfedge (int current)
 
+glm::mat3 NormalTransform (const glm::mat4x3 &transform)
 
glm::mat3x2 GetAxisAlignedProjection (glm::vec3 normal)
 
+glm::vec3 GetBarycentric (const glm::vec3 &v, const glm::mat3 &triPos, float precision)
 
std::vector< glm::ivec3 > TriangulateIdx (const PolygonsIdx &polys, float precision)
 Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap, but will always return a manifold result that matches the input edge directions.
 
+int Next3 (int i)
 
+int Prev3 (int i)
 
+template<typename T , typename T1 >
void Permute (Vec< T > &inOut, const Vec< T1 > &new2Old)
 
+template<typename T , typename T1 >
void Permute (std::vector< T > &inOut, const Vec< T1 > &new2Old)
 
+template<typename T >
AtomicAdd (T &target, T add)
 
+template<>
int AtomicAdd (int &target, int add)
 
+

Detailed Description

+

Internal classes of the library; not currently part of the public API.

+

Class Documentation

+ +

◆ manifold::Barycentric

+ +
+
+ + + + +
struct manifold::Barycentric
+
+
+ + + + + + + +
Class Members
+int +tri +
+vec4 +uvw +
+ +
+
+ +

◆ manifold::PolyVert

+ +
+
+ + + + +
struct manifold::PolyVert
+
+

Polygon vertex.

+
+ + + + + + + +
Class Members
+vec2 +pos +X-Y position.
+int +idx +ID or index into another vertex vector.
+ +
+
+

Function Documentation

+ +

◆ GetAxisAlignedProjection()

+ +
+
+ + + + + +
+ + + + + + + + +
glm::mat3x2 GetAxisAlignedProjection (glm::vec3 normal)
+
+inline
+
+

By using the closest axis-aligned projection to the normal instead of a projection along the normal, we avoid introducing any rounding error.

+ +
+
+ +

◆ TriangulateIdx()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::vector< glm::ivec3 > TriangulateIdx (const PolygonsIdx & polys,
float precision 
)
+
+ +

Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap, but will always return a manifold result that matches the input edge directions.

+
Parameters
+ + + +
polysThe set of polygons, wound CCW and representing multiple polygons and/or holes. These have 2D-projected positions as well as references back to the original vertices.
precisionThe value of ε, bounding the uncertainty of the input.
+
+
+
Returns
std::vector<glm::ivec3> The triangles, referencing the original vertex indicies.
+ +
+
+
+
+ + + + diff --git a/docs/html/group___private.js b/docs/html/group___private.js new file mode 100644 index 000000000..afd15d684 --- /dev/null +++ b/docs/html/group___private.js @@ -0,0 +1,80 @@ +var group___private = +[ + [ "Collider", "classmanifold_1_1_collider.html", null ], + [ "Boolean3", "classmanifold_1_1_boolean3.html", null ], + [ "Impl", "structmanifold_1_1_manifold_1_1_impl.html", [ + [ "BaryIndices", "structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_bary_indices", null ], + [ "MeshRelationD", "structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_mesh_relation_d", [ + [ "originalID", "structmanifold_1_1_manifold_1_1_impl.html#aa09887a4f79bfc78615dbd09d9001fd7", null ] + ] ], + [ "Relation", "structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_relation", null ], + [ "Impl", "structmanifold_1_1_manifold_1_1_impl.html#ab7abcb084ad024cb903caa4e4715f713", null ], + [ "Impl", "structmanifold_1_1_manifold_1_1_impl.html#a0993c9acd8bdbd25672b9fae02c02c0f", null ], + [ "CreateHalfedges", "structmanifold_1_1_manifold_1_1_impl.html#aff973f757a74082c8fc75b0f8054557d", null ], + [ "CalculateNormals", "structmanifold_1_1_manifold_1_1_impl.html#adef45f00696640f682ede12311bdace7", null ], + [ "IncrementMeshIDs", "structmanifold_1_1_manifold_1_1_impl.html#a11d47359eb52523a2bc86f6d4ab22633", null ], + [ "Update", "structmanifold_1_1_manifold_1_1_impl.html#aec0783b5a136e042adcc47bae4fe5291", null ], + [ "EdgeCollisions", "structmanifold_1_1_manifold_1_1_impl.html#afed30f82c409a32c13e68079a5b366a5", null ], + [ "VertexCollisionsZ", "structmanifold_1_1_manifold_1_1_impl.html#afdc4c1c73cab15b3a13853d04fee567a", null ], + [ "CalculateBBox", "structmanifold_1_1_manifold_1_1_impl.html#a4bad2940552ae5f952d4b1f710627a25", null ], + [ "IsFinite", "structmanifold_1_1_manifold_1_1_impl.html#a33b7dcc502aae627fbc56bcfecf33af1", null ], + [ "IsIndexInBounds", "structmanifold_1_1_manifold_1_1_impl.html#a0ee79d083b1fb6b58801ebf83d47880d", null ], + [ "SetPrecision", "structmanifold_1_1_manifold_1_1_impl.html#a32981853ceaf771ca541df5b5c6e085b", null ], + [ "IsManifold", "structmanifold_1_1_manifold_1_1_impl.html#a28f34ca6c256f1f7fa44e862540ec421", null ], + [ "Is2Manifold", "structmanifold_1_1_manifold_1_1_impl.html#a7b0298da43b37952e432a1a0c4b02e00", null ], + [ "MatchesTriNormals", "structmanifold_1_1_manifold_1_1_impl.html#a611a5fd95dc5d49cd88182b8ead722b7", null ], + [ "NumDegenerateTris", "structmanifold_1_1_manifold_1_1_impl.html#afe3dd0baef775b394ee1a1ee0e353e66", null ], + [ "Finish", "structmanifold_1_1_manifold_1_1_impl.html#af9d1bc46635e487c85720b943dd8ba28", null ], + [ "SortVerts", "structmanifold_1_1_manifold_1_1_impl.html#a960f240018111751cf0a91339a1d1b08", null ], + [ "ReindexVerts", "structmanifold_1_1_manifold_1_1_impl.html#a9c45d5f57ab940c4a2682d6f11fdab40", null ], + [ "CompactProps", "structmanifold_1_1_manifold_1_1_impl.html#af327697359fb97021fbdcdd0d53b471a", null ], + [ "GetFaceBoxMorton", "structmanifold_1_1_manifold_1_1_impl.html#ae950ed2beaef893ec411aa3921aa25a8", null ], + [ "SortFaces", "structmanifold_1_1_manifold_1_1_impl.html#a9c6ad8be3b98a1f83c7d9a7df1f983c8", null ], + [ "GatherFaces", "structmanifold_1_1_manifold_1_1_impl.html#abd9a97b16b825e7ee3fd989aaf776757", null ], + [ "Face2Tri", "structmanifold_1_1_manifold_1_1_impl.html#af037f51003b109c22f6a67cea6238021", null ], + [ "Face2Polygons", "structmanifold_1_1_manifold_1_1_impl.html#ae2e222860f6cfa46e1c0e270d26f5976", null ], + [ "SimplifyTopology", "structmanifold_1_1_manifold_1_1_impl.html#a5814bb78c6aee8506a332d6cacf76af7", null ], + [ "GetNeighbor", "structmanifold_1_1_manifold_1_1_impl.html#a8a3b5765ff1df3e2090e792f8a2eb444", null ], + [ "GetHalfedges", "structmanifold_1_1_manifold_1_1_impl.html#a76d1ba381f31f14ad9e59ff880dbd2c1", null ], + [ "GetIndices", "structmanifold_1_1_manifold_1_1_impl.html#a5663e9c8c9f549c90a3cfd36ad2c787a", null ], + [ "FillRetainedVerts", "structmanifold_1_1_manifold_1_1_impl.html#a0f3beb18c180190ad660336992f0ff64", null ], + [ "Subdivide", "structmanifold_1_1_manifold_1_1_impl.html#abe4f5b3c2e601eb17c121dfd6c755445", null ], + [ "IsInsideQuad", "structmanifold_1_1_manifold_1_1_impl.html#aa244e3ec23cdce59aa792a297f0c8cde", null ], + [ "IsMarkedInsideQuad", "structmanifold_1_1_manifold_1_1_impl.html#a879e2e73b1f97ca728d306dfb3c520d5", null ], + [ "GetNormal", "structmanifold_1_1_manifold_1_1_impl.html#ad72a9d659785fbc90d0b31e9594768b9", null ], + [ "TangentFromNormal", "structmanifold_1_1_manifold_1_1_impl.html#ab1f11c2b71e88b8eab076fb3660ff3b8", null ], + [ "SharpenTangent", "structmanifold_1_1_manifold_1_1_impl.html#a296166f49f99871cf84bb604f6f6ca7b", null ], + [ "SetNormals", "structmanifold_1_1_manifold_1_1_impl.html#a47e442af7d6655edf6dfef50cb958210", null ], + [ "LinearizeFlatTangents", "structmanifold_1_1_manifold_1_1_impl.html#a744f7dc967657edf6fdba43aaa81ad3e", null ], + [ "DistributeTangents", "structmanifold_1_1_manifold_1_1_impl.html#ae520f2222155301f5bb6551702222014", null ], + [ "CreateTangents", "structmanifold_1_1_manifold_1_1_impl.html#acc962337837219c991a414bf4033ef61", null ], + [ "CreateTangents", "structmanifold_1_1_manifold_1_1_impl.html#ace17948374ae1178c45e661c1b95cc8b", null ] + ] ], + [ "Halfedge", "structmanifold_1_1_halfedge.html", null ], + [ "Barycentric", "group___private.html#structmanifold_1_1_barycentric", null ], + [ "TriRef", "structmanifold_1_1_tri_ref.html", [ + [ "meshID", "structmanifold_1_1_tri_ref.html#a3552b302dec169446141ae02c7a2dc12", null ], + [ "originalID", "structmanifold_1_1_tri_ref.html#aa09887a4f79bfc78615dbd09d9001fd7", null ], + [ "tri", "structmanifold_1_1_tri_ref.html#a15e0e24263c3a2cc742b9cfcbabedf88", null ] + ] ], + [ "TmpEdge", "structmanifold_1_1_tmp_edge.html", null ], + [ "PolyVert", "group___private.html#structmanifold_1_1_poly_vert", [ + [ "pos", "group___private.html#a6f4c30bf2e24353492937851cb470208", null ], + [ "idx", "group___private.html#ae40354a1051342eb5a9db005715dcfa9", null ] + ] ], + [ "HashTableD< V, H >", "classmanifold_1_1_hash_table_d.html", null ], + [ "HashTable< V, H >", "classmanifold_1_1_hash_table.html", null ], + [ "SparseIndices", "classmanifold_1_1_sparse_indices.html", [ + [ "firstFinite", "structmanifold_1_1_sparse_indices_1_1first_finite.html", null ] + ] ], + [ "Timer", "structmanifold_1_1_timer.html", null ], + [ "ConcurrentSharedPtr< T >", "classmanifold_1_1_concurrent_shared_ptr.html", [ + [ "SharedPtrGuard", "classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html", null ] + ] ], + [ "UnionFind< I, R >", "structmanifold_1_1_union_find.html", null ], + [ "Identity< T >", "structmanifold_1_1_identity.html", null ], + [ "Negate< T >", "structmanifold_1_1_negate.html", null ], + [ "Vec< T >", "classmanifold_1_1_vec.html", null ], + [ "GetAxisAlignedProjection", "group___private.html#ga95945ec21500a4c02b449357b3ef57ec", null ], + [ "TriangulateIdx", "group___private.html#ga1e0bedc58e58ed72b02b49addf999b85", null ] +]; \ No newline at end of file diff --git a/docs/html/group___private_structmanifold_1_1_poly_vert.js b/docs/html/group___private_structmanifold_1_1_poly_vert.js new file mode 100644 index 000000000..678e1c9b2 --- /dev/null +++ b/docs/html/group___private_structmanifold_1_1_poly_vert.js @@ -0,0 +1,5 @@ +var group___private_structmanifold_1_1_poly_vert = +[ + [ "pos", "group___private.html#a6f4c30bf2e24353492937851cb470208", null ], + [ "idx", "group___private.html#ae40354a1051342eb5a9db005715dcfa9", null ] +]; \ No newline at end of file diff --git a/docs/html/group___samples.html b/docs/html/group___samples.html new file mode 100644 index 000000000..980895642 --- /dev/null +++ b/docs/html/group___samples.html @@ -0,0 +1,441 @@ + + + + + + + +Manifold: Samples + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Samples
+
+
+ +

Examples of usage and interesting designs. +More...

+ + + + + + + + + + + + + + + + + + +

+Functions

Manifold TorusKnot (int p, int q, float majorRadius, float minorRadius, float threadRadius, int circularSegments=0, int linearSegments=0)
 
Manifold StretchyBracelet (float radius=30.0f, float height=8.0f, float width=15.0f, float thickness=0.4f, int nDecor=20, int nCut=27, int nDivision=30)
 
Manifold MengerSponge (int n=3)
 
Manifold RoundedFrame (float edgeLength, float radius, int circularSegments=0)
 
Manifold TetPuzzle (float edgeLength, float gap, int nDivisions)
 
Manifold Scallop ()
 
Manifold GyroidModule (float size=20, int n=20)
 
+Manifold CondensedMatter (int fn=16)
 
+

Detailed Description

+

Examples of usage and interesting designs.

+

These are mostly 3D-printable designs I've invented over the years, translated from their original OpenSCAD to C++ to demonstrate the usage of this library. You can find the originals here: http://www.thingiverse.com/emmett These also each have tests you can find in test/samples_test.cpp, which have nice parameter choices for making some of the specific designs I print. While the source code is under the Apache License above, I license all of my designs (the output of those tests if you uncomment the export lines) under CC-BY-SA: https://creativecommons.org/licenses/by-sa/2.0/, which means you're welcome to print and sell them, so long as you attribute the design to Emmett Lalish and share any derivative works under the same license.

+

Function Documentation

+ +

◆ TorusKnot()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Manifold TorusKnot (int p,
int q,
float majorRadius,
float minorRadius,
float threadRadius,
int circularSegments,
int linearSegments 
)
+
+

Creates a classic torus knot, defined as a string wrapping periodically around the surface of an imaginary donut. If p and q have a common factor then you will get multiple separate, interwoven knots. This is an example of using the Manifold.Warp() method, thus avoiding any handling of triangles.

+
Parameters
+ + + + + + + + +
pThe number of times the thread passes through the donut hole.
qThe number of times the thread circles the donut.
majorRadiusRadius of the interior of the imaginary donut.
minorRadiusRadius of the small cross-section of the imaginary donut.
threadRadiusRadius of the small cross-section of the actual object.
circularSegmentsNumber of linear segments making up the threadRadius circle. Default is Quality.GetCircularSegments().
linearSegmentsNumber of segments along the length of the knot. Default makes roughly square facets.
+
+
+ +
+
+ +

◆ StretchyBracelet()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Manifold StretchyBracelet (float radius,
float height,
float width,
float thickness,
int nDecor,
int nCut,
int nDivision 
)
+
+

My Stretchy Bracelet: this is one of my most popular designs, largely because it's quick and easy to 3D print. The defaults are picked to work well; change the radius to fit your wrist. Changing the other values too much may break the design.

+
Parameters
+ + + + + + + + +
radiusThe overall size; the radius left for your wrist is roughly radius - height.
heightThickness of the bracelet around your wrist.
widthThe length along your arm (the height of the print).
thicknessThe width of the material, which should be equal to your printer's nozzle diameter.
nDecorThe number of twisty shapes around the outside.
nCutThe number of cuts that enable stretching.
nDivisionthe number of divisions along the width.
+
+
+ +
+
+ +

◆ MengerSponge()

+ +
+
+ + + + + + + + +
Manifold MengerSponge (int n)
+
+

The classic cubic fractal.

+
Parameters
+ + +
nFractal depth. Warning: scales exponentially, n = 4 has almost 400,000 triangles!
+
+
+ +
+
+ +

◆ RoundedFrame()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Manifold RoundedFrame (float edgeLength,
float radius,
int circularSegments 
)
+
+

A cubic frame with cylinders for edges and spheres at the corners. Demonstrates how at 90-degree intersections, the sphere and cylinder facets match up perfectly.

+
Parameters
+ + + + +
edgeLengthDistance between the corners.
radiusRadius of the frame members.
circularSegmentsNumber of segments in the cylinders and spheres. Defaults to Quality.GetCircularSegments().
+
+
+ +
+
+ +

◆ TetPuzzle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Manifold TetPuzzle (float edgeLength,
float gap,
int nDivisions 
)
+
+

A tetrahedron cut into two identical halves that can screw together as a puzzle. This only outputs one of the halves. This demonstrates how redundant points along a polygon can be used to make twisted extrusions smoother.

+
Parameters
+ + + + +
edgeLengthLength of each edge of the overall tetrahedron.
gapSpacing between the two halves to allow sliding.
nDivisionsNumber of divisions (both ways) in the screw surface.
+
+
+ +
+
+ +

◆ Scallop()

+ +
+
+ + + + + + + +
Manifold Scallop ()
+
+

A smoothed manifold demonstrating selective edge sharpening with Manifold.Smooth(). Use Manifold.Refine() before export to see the curvature.

+ +
+
+ +

◆ GyroidModule()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Manifold GyroidModule (float size,
int n 
)
+
+

Creates a rhombic dodecahedral module of a gyroid manifold, which can be assembled together to tile space continuously. This one is designed to be 3D-printable, as it is oriented with minimal overhangs. This sample demonstrates the use of a Signed Distance Function (SDF) to create smooth, complex manifolds.

+ +
+
+
+
+ + + + diff --git a/docs/html/group___samples.js b/docs/html/group___samples.js new file mode 100644 index 000000000..057840a6f --- /dev/null +++ b/docs/html/group___samples.js @@ -0,0 +1,10 @@ +var group___samples = +[ + [ "TorusKnot", "group___samples.html#ga1937d6fee956f401ad9a3c9c2dc6eae2", null ], + [ "StretchyBracelet", "group___samples.html#gaa093ef8b44f049141ccbaca556f88cd3", null ], + [ "MengerSponge", "group___samples.html#ga31bc13b03579ca41da7ae9b5ba171fae", null ], + [ "RoundedFrame", "group___samples.html#ga8d224b44ea69ea070ebad60e6c1abbb9", null ], + [ "TetPuzzle", "group___samples.html#ga49162c3a42d672758d14855ad23258b9", null ], + [ "Scallop", "group___samples.html#ga45f5b5c2a374a8c67d9208a2bf9acc36", null ], + [ "GyroidModule", "group___samples.html#ga0a03a270aa7eff0866996c7abca5b0f0", null ] +]; \ No newline at end of file diff --git a/docs/html/hashtable_8h_source.html b/docs/html/hashtable_8h_source.html new file mode 100644 index 000000000..43abb2d0a --- /dev/null +++ b/docs/html/hashtable_8h_source.html @@ -0,0 +1,289 @@ + + + + + + + +Manifold: hashtable.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
hashtable.h
+
+
+
1// Copyright 2022 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14#pragma once
+
15#include <stdint.h>
+
16
+
17#include <atomic>
+
18
+
19#include "public.h"
+
20#include "vec.h"
+
21
+
22namespace {
+
23typedef unsigned long long int Uint64;
+
24typedef Uint64 (*hash_fun_t)(Uint64);
+
25inline constexpr Uint64 kOpen = std::numeric_limits<Uint64>::max();
+
26
+
27template <typename T>
+
28T AtomicCAS(T& target, T compare, T val) {
+
29 std::atomic<T>& tar = reinterpret_cast<std::atomic<T>&>(target);
+
30 tar.compare_exchange_strong(compare, val, std::memory_order_acq_rel);
+
31 return compare;
+
32}
+
33
+
34template <typename T>
+
35void AtomicStore(T& target, T val) {
+
36 std::atomic<T>& tar = reinterpret_cast<std::atomic<T>&>(target);
+
37 // release is good enough, although not really something general
+
38 tar.store(val, std::memory_order_release);
+
39}
+
40
+
41template <typename T>
+
42T AtomicLoad(const T& target) {
+
43 const std::atomic<T>& tar = reinterpret_cast<const std::atomic<T>&>(target);
+
44 // acquire is good enough, although not general
+
45 return tar.load(std::memory_order_acquire);
+
46}
+
47
+
48// https://stackoverflow.com/questions/664014/what-integer-hash-function-are-good-that-accepts-an-integer-hash-key
+
49inline Uint64 hash64bit(Uint64 x) {
+
50 x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9ull;
+
51 x = (x ^ (x >> 27)) * 0x94d049bb133111ebull;
+
52 x = x ^ (x >> 31);
+
53 return x;
+
54}
+
55} // namespace
+
56
+
57namespace manifold {
+
62template <typename V, hash_fun_t H = hash64bit>
+
+ +
64 public:
+
65 HashTableD(Vec<Uint64>& keys, Vec<V>& values, std::atomic<size_t>& used,
+
66 uint32_t step = 1)
+
67 : step_{step}, keys_{keys}, values_{values}, used_{used} {}
+
68
+
69 int Size() const { return keys_.size(); }
+
70
+
71 bool Full() const {
+
72 return used_.load(std::memory_order_relaxed) * 2 >
+
73 static_cast<size_t>(Size());
+
74 }
+
75
+
76 void Insert(Uint64 key, const V& val) {
+
77 uint32_t idx = H(key) & (Size() - 1);
+
78 while (1) {
+
79 if (Full()) return;
+
80 Uint64& k = keys_[idx];
+
81 const Uint64 found = AtomicCAS(k, kOpen, key);
+
82 if (found == kOpen) {
+
83 used_.fetch_add(1, std::memory_order_relaxed);
+
84 values_[idx] = val;
+
85 return;
+
86 }
+
87 if (found == key) return;
+
88 idx = (idx + step_) & (Size() - 1);
+
89 }
+
90 }
+
91
+
92 V& operator[](Uint64 key) {
+
93 uint32_t idx = H(key) & (Size() - 1);
+
94 while (1) {
+
95 const Uint64 k = AtomicLoad(keys_[idx]);
+
96 if (k == key || k == kOpen) {
+
97 return values_[idx];
+
98 }
+
99 idx = (idx + step_) & (Size() - 1);
+
100 }
+
101 }
+
102
+
103 const V& operator[](Uint64 key) const {
+
104 uint32_t idx = H(key) & (Size() - 1);
+
105 while (1) {
+
106 const Uint64 k = AtomicLoad(keys_[idx]);
+
107 if (k == key || k == kOpen) {
+
108 return values_[idx];
+
109 }
+
110 idx = (idx + step_) & (Size() - 1);
+
111 }
+
112 }
+
113
+
114 Uint64 KeyAt(int idx) const { return AtomicLoad(keys_[idx]); }
+
115 V& At(int idx) { return values_[idx]; }
+
116 const V& At(int idx) const { return values_[idx]; }
+
117
+
118 private:
+
119 uint32_t step_;
+
120 VecView<Uint64> keys_;
+
121 VecView<V> values_;
+
122 std::atomic<size_t>& used_;
+
123};
+
+
124
+
125template <typename V, hash_fun_t H = hash64bit>
+
+ +
127 public:
+
128 HashTable(size_t size, uint32_t step = 1)
+
129 : keys_{size == 0 ? 0 : 1_uz << (int)ceil(log2(size)), kOpen},
+
130 values_{size == 0 ? 0 : 1_uz << (int)ceil(log2(size)), {}},
+
131 step_(step) {}
+
132
+
133 HashTable(const HashTable& other)
+
134 : keys_(other.keys_), values_(other.values_), step_(other.step_) {
+
135 used_.store(other.used_.load());
+
136 }
+
137
+
138 HashTable& operator=(const HashTable& other) {
+
139 if (this == &other) return *this;
+
140 keys_ = other.keys_;
+
141 values_ = other.values_;
+
142 used_.store(other.used_.load());
+
143 step_ = other.step_;
+
144 return *this;
+
145 }
+
146
+
147 HashTableD<V, H> D() { return {keys_, values_, used_, step_}; }
+
148
+
149 int Entries() const { return used_.load(std::memory_order_relaxed); }
+
150
+
151 size_t Size() const { return keys_.size(); }
+
152
+
153 bool Full() const {
+
154 return used_.load(std::memory_order_relaxed) * 2 > Size();
+
155 }
+
156
+
157 float FilledFraction() const {
+
158 return static_cast<float>(used_.load(std::memory_order_relaxed)) / Size();
+
159 }
+
160
+
161 Vec<V>& GetValueStore() { return values_; }
+
162
+
163 static Uint64 Open() { return kOpen; }
+
164
+
165 private:
+
166 Vec<Uint64> keys_;
+
167 Vec<V> values_;
+
168 std::atomic<size_t> used_ = 0;
+
169 uint32_t step_;
+
170};
+
+
171
+
173} // namespace manifold
+
Definition hashtable.h:63
+
Definition hashtable.h:126
+
Definition vec.h:43
+
Definition vec_view.h:27
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/helpers_8cpp_source.html b/docs/html/helpers_8cpp_source.html new file mode 100644 index 000000000..add8ac6cb --- /dev/null +++ b/docs/html/helpers_8cpp_source.html @@ -0,0 +1,366 @@ + + + + + + + +Manifold: helpers.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
helpers.cpp
+
+
+
1#include <emscripten/bind.h>
+
2#include <emscripten/val.h>
+
3
+
4#include <vector>
+
5
+
6#include "cross_section.h"
+
7#include "manifold.h"
+
8#include "polygon.h"
+
9
+
10using namespace emscripten;
+
11using namespace manifold;
+
12
+
13namespace js {
+
14val MeshGL2JS(const MeshGL& mesh) {
+
15 val meshJS = val::object();
+
16
+
17 meshJS.set("numProp", mesh.numProp);
+
18 meshJS.set("triVerts",
+
19 val(typed_memory_view(mesh.triVerts.size(), mesh.triVerts.data()))
+
20 .call<val>("slice"));
+
21 meshJS.set("vertProperties",
+
22 val(typed_memory_view(mesh.vertProperties.size(),
+
23 mesh.vertProperties.data()))
+
24 .call<val>("slice"));
+
25 meshJS.set("mergeFromVert", val(typed_memory_view(mesh.mergeFromVert.size(),
+
26 mesh.mergeFromVert.data()))
+
27 .call<val>("slice"));
+
28 meshJS.set("mergeToVert", val(typed_memory_view(mesh.mergeToVert.size(),
+
29 mesh.mergeToVert.data()))
+
30 .call<val>("slice"));
+
31 meshJS.set("runIndex",
+
32 val(typed_memory_view(mesh.runIndex.size(), mesh.runIndex.data()))
+
33 .call<val>("slice"));
+
34 meshJS.set("runOriginalID", val(typed_memory_view(mesh.runOriginalID.size(),
+
35 mesh.runOriginalID.data()))
+
36 .call<val>("slice"));
+
37 meshJS.set("faceID",
+
38 val(typed_memory_view(mesh.faceID.size(), mesh.faceID.data()))
+
39 .call<val>("slice"));
+
40 meshJS.set("halfedgeTangent",
+
41 val(typed_memory_view(mesh.halfedgeTangent.size(),
+
42 mesh.halfedgeTangent.data()))
+
43 .call<val>("slice"));
+
44 meshJS.set("runTransform", val(typed_memory_view(mesh.runTransform.size(),
+
45 mesh.runTransform.data()))
+
46 .call<val>("slice"));
+
47
+
48 return meshJS;
+
49}
+
50
+
51MeshGL MeshJS2GL(const val& mesh) {
+
52 MeshGL out;
+
53 out.numProp = mesh["numProp"].as<int>();
+
54 out.triVerts = convertJSArrayToNumberVector<uint32_t>(mesh["triVerts"]);
+
55 out.vertProperties =
+
56 convertJSArrayToNumberVector<float>(mesh["vertProperties"]);
+
57 if (mesh["mergeFromVert"] != val::undefined()) {
+
58 out.mergeFromVert =
+
59 convertJSArrayToNumberVector<uint32_t>(mesh["mergeFromVert"]);
+
60 }
+
61 if (mesh["mergeToVert"] != val::undefined()) {
+
62 out.mergeToVert =
+
63 convertJSArrayToNumberVector<uint32_t>(mesh["mergeToVert"]);
+
64 }
+
65 if (mesh["runIndex"] != val::undefined()) {
+
66 out.runIndex = convertJSArrayToNumberVector<uint32_t>(mesh["runIndex"]);
+
67 }
+
68 if (mesh["runOriginalID"] != val::undefined()) {
+
69 out.runOriginalID =
+
70 convertJSArrayToNumberVector<uint32_t>(mesh["runOriginalID"]);
+
71 }
+
72 if (mesh["faceID"] != val::undefined()) {
+
73 out.faceID = convertJSArrayToNumberVector<uint32_t>(mesh["faceID"]);
+
74 }
+
75 if (mesh["halfedgeTangent"] != val::undefined()) {
+
76 out.halfedgeTangent =
+
77 convertJSArrayToNumberVector<float>(mesh["halfedgeTangent"]);
+
78 }
+
79 if (mesh["runTransform"] != val::undefined()) {
+
80 out.runTransform =
+
81 convertJSArrayToNumberVector<float>(mesh["runTransform"]);
+
82 }
+
83 return out;
+
84}
+
85
+
86val GetMeshJS(const Manifold& manifold, const glm::ivec3& normalIdx) {
+
87 MeshGL mesh = manifold.GetMeshGL(normalIdx);
+
88 return MeshGL2JS(mesh);
+
89}
+
90
+
91val Merge(const val& mesh) {
+
92 val out = val::object();
+
93 MeshGL meshGL = MeshJS2GL(mesh);
+
94 bool changed = meshGL.Merge();
+
95 out.set("changed", changed);
+
96 out.set("mesh", changed ? MeshGL2JS(meshGL) : mesh);
+
97 return out;
+
98}
+
99
+
100Manifold Smooth(const val& mesh,
+
101 const std::vector<Smoothness>& sharpenedEdges = {}) {
+
102 return Manifold::Smooth(MeshJS2GL(mesh), sharpenedEdges);
+
103}
+
104
+
105} // namespace js
+
106
+
107namespace cross_js {
+
108CrossSection OfPolygons(std::vector<std::vector<glm::vec2>> polygons,
+
109 int fill_rule) {
+
110 auto fr = fill_rule == 0 ? CrossSection::FillRule::EvenOdd
+
111 : fill_rule == 1 ? CrossSection::FillRule::NonZero
+
112 : fill_rule == 2 ? CrossSection::FillRule::Positive
+
113 : CrossSection::FillRule::Negative;
+
114 return CrossSection(polygons, fr);
+
115}
+
116
+
117CrossSection Union(const CrossSection& a, const CrossSection& b) {
+
118 return a + b;
+
119}
+
120
+
121CrossSection Difference(const CrossSection& a, const CrossSection& b) {
+
122 return a - b;
+
123}
+
124
+
125CrossSection Intersection(const CrossSection& a, const CrossSection& b) {
+
126 return a ^ b;
+
127}
+
128
+
129CrossSection UnionN(const std::vector<CrossSection>& cross_sections) {
+
130 return CrossSection::BatchBoolean(cross_sections, OpType::Add);
+
131}
+
132
+
133CrossSection DifferenceN(const std::vector<CrossSection>& cross_sections) {
+
134 return CrossSection::BatchBoolean(cross_sections, OpType::Subtract);
+
135}
+
136
+
137CrossSection IntersectionN(const std::vector<CrossSection>& cross_sections) {
+
138 return CrossSection::BatchBoolean(cross_sections, OpType::Intersect);
+
139}
+
140
+
141CrossSection Transform(CrossSection& cross_section, const val& mat) {
+
142 std::vector<float> array = convertJSArrayToNumberVector<float>(mat);
+
143 glm::mat3x2 matrix;
+
144 for (const int col : {0, 1, 2})
+
145 for (const int row : {0, 1}) matrix[col][row] = array[col * 3 + row];
+
146 return cross_section.Transform(matrix);
+
147}
+
148
+
149CrossSection Warp(CrossSection& cross_section, uintptr_t funcPtr) {
+
150 void (*f)(glm::vec2&) = reinterpret_cast<void (*)(glm::vec2&)>(funcPtr);
+
151 return cross_section.Warp(f);
+
152}
+
153
+
154CrossSection Offset(CrossSection& cross_section, double delta, int join_type,
+
155 double miter_limit, double arc_tolerance) {
+
156 auto jt = join_type == 0 ? CrossSection::JoinType::Square
+
157 : join_type == 1 ? CrossSection::JoinType::Round
+
158 : CrossSection::JoinType::Miter;
+
159 return cross_section.Offset(delta, jt, miter_limit, arc_tolerance);
+
160}
+
161
+
162void CollectVertices(std::vector<glm::vec2>& verts, const CrossSection& cs) {
+
163 auto polys = cs.ToPolygons();
+
164 for (auto poly : polys) verts.insert(verts.end(), poly.begin(), poly.end());
+
165}
+
166} // namespace cross_js
+
167
+
168namespace man_js {
+
169Manifold FromMeshJS(const val& mesh) { return Manifold(js::MeshJS2GL(mesh)); }
+
170
+
171Manifold Union(const Manifold& a, const Manifold& b) { return a + b; }
+
172
+
173Manifold Difference(const Manifold& a, const Manifold& b) { return a - b; }
+
174
+
175Manifold Intersection(const Manifold& a, const Manifold& b) { return a ^ b; }
+
176
+
177Manifold UnionN(const std::vector<Manifold>& manifolds) {
+
178 return Manifold::BatchBoolean(manifolds, OpType::Add);
+
179}
+
180
+
181Manifold DifferenceN(const std::vector<Manifold>& manifolds) {
+
182 return Manifold::BatchBoolean(manifolds, OpType::Subtract);
+
183}
+
184
+
185Manifold IntersectionN(const std::vector<Manifold>& manifolds) {
+
186 return Manifold::BatchBoolean(manifolds, OpType::Intersect);
+
187}
+
188
+
189Manifold Transform(Manifold& manifold, const val& mat) {
+
190 std::vector<float> array = convertJSArrayToNumberVector<float>(mat);
+
191 glm::mat4x3 matrix;
+
192 for (const int col : {0, 1, 2, 3})
+
193 for (const int row : {0, 1, 2}) matrix[col][row] = array[col * 4 + row];
+
194 return manifold.Transform(matrix);
+
195}
+
196
+
197Manifold Warp(Manifold& manifold, uintptr_t funcPtr) {
+
198 void (*f)(glm::vec3&) = reinterpret_cast<void (*)(glm::vec3&)>(funcPtr);
+
199 return manifold.Warp(f);
+
200}
+
201
+
202Manifold SetProperties(Manifold& manifold, int numProp, uintptr_t funcPtr) {
+
203 void (*f)(float*, glm::vec3, const float*) =
+
204 reinterpret_cast<void (*)(float*, glm::vec3, const float*)>(funcPtr);
+
205 return manifold.SetProperties(numProp, f);
+
206}
+
207
+
208Manifold LevelSet(uintptr_t funcPtr, Box bounds, float edgeLength, float level,
+
209 float precision) {
+
210 float (*f)(const glm::vec3&) =
+
211 reinterpret_cast<float (*)(const glm::vec3&)>(funcPtr);
+
212 return Manifold(MeshGL::LevelSet(f, bounds, edgeLength, level, precision));
+
213}
+
214
+
215std::vector<Manifold> Split(Manifold& a, Manifold& b) {
+
216 auto [r1, r2] = a.Split(b);
+
217 return {r1, r2};
+
218}
+
219
+
220std::vector<Manifold> SplitByPlane(Manifold& m, glm::vec3 normal,
+
221 float originOffset) {
+
222 auto [a, b] = m.SplitByPlane(normal, originOffset);
+
223 return {a, b};
+
224}
+
225
+
226void CollectVertices(std::vector<glm::vec3>& verts, const Manifold& manifold) {
+
227 Mesh mesh = manifold.GetMesh();
+
228 verts.insert(verts.end(), mesh.vertPos.begin(), mesh.vertPos.end());
+
229}
+
230} // namespace man_js
+
Definition cross_section.h:40
+
Polygons ToPolygons() const
Definition cross_section.cpp:775
+
CrossSection Warp(std::function< void(glm::vec2 &)> warpFunc) const
Definition cross_section.cpp:558
+
CrossSection Offset(double delta, JoinType jt, double miter_limit=2.0, int circularSegments=0) const
Definition cross_section.cpp:656
+
CrossSection Transform(const glm::mat3x2 &m) const
Definition cross_section.cpp:543
+
Definition manifold.h:156
+
std::pair< Manifold, Manifold > Split(const Manifold &) const
Definition manifold.cpp:849
+
std::pair< Manifold, Manifold > SplitByPlane(glm::vec3 normal, float originOffset) const
Definition manifold.cpp:870
+
Definition public.h:135
+
static MeshGL LevelSet(std::function< float(glm::vec3)> sdf, Box bounds, float edgeLength, float level=0, float precision=-1, bool canParallel=true)
Definition sdf.cpp:338
+
Definition meshIO.h:20
+
Definition public.h:177
+
Definition manifold.h:46
+
std::vector< uint32_t > runIndex
Definition manifold.h:85
+
bool Merge()
Definition sort.cpp:427
+
std::vector< float > runTransform
Definition manifold.h:96
+
std::vector< float > halfedgeTangent
Definition manifold.h:109
+
std::vector< uint32_t > mergeFromVert
Definition manifold.h:73
+
std::vector< float > vertProperties
Definition manifold.h:67
+
std::vector< uint32_t > runOriginalID
Definition manifold.h:91
+
std::vector< uint32_t > faceID
Definition manifold.h:104
+
uint32_t numProp
Number of properties per vertex, always >= 3.
Definition manifold.h:63
+
std::vector< uint32_t > mergeToVert
Definition manifold.h:77
+
std::vector< uint32_t > triVerts
Definition manifold.h:70
+
+
+ + + + diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html new file mode 100644 index 000000000..5a4a40b6e --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,271 @@ + + + + + + + +Manifold: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Call_of< Policy >
 CBarycentric
 CManifold::Impl::BaryIndices
 CBoolean3
 CBox
 CBuildInternalBoxes
 CCollider
 CConcurrentSharedPtr< T >
 CConcurrentSharedPtr< Impl >
 CConvexHull
 Ccopy< Policy >
 Ccopy_if_1001< Policy >
 Ccopy_if_28< Policy >
 Ccopy_if_55< Policy >
 Ccopy_if_82< Policy >
 Ccount< Policy >
 CCountCollisions
 CCountingIterator< T >
 CCreateRadixTree
 CCrossSection
 CCubeVoid
 CDiagnosticsData
 CEdge
 Cenable_shared_from_this
 Cexclusive_scan< Policy >
 CExecutionParams
 CExportOptions
 CHalfEdgeMesh::Face
 CMeshBuilder::Face
 Cfill< Policy >
 CFindCollisions< T, selfCollision, Recorder >
 CSparseIndices::firstFinite< T >
 Cfor_each< Policy >
 Cglm_name< T >
 Cglm_name< glm::ivec3 >
 Cglm_name< glm::mat3x2 >
 Cglm_name< glm::mat4x3 >
 Cglm_name< glm::vec2 >
 Cglm_name< glm::vec3 >
 CGyroidSDF
 CHalfEdgeMesh::HalfEdge
 CHalfedge
 CMeshBuilder::HalfEdge
 CHalfEdgeMesh
 Chash< glm::ivec4 >
 Chash< std::pair< int, int > >
 CHashTable< V, H >
 CHashTableD< V, H >
 CHullImpl
 CIdentity< T >
 CManifold::Impl
 CLayers
 CManifold
 CManifoldIVec3
 CManifoldManifoldPair
 CManifoldProperties
 CManifoldVec2
 CManifoldVec3
 CManifoldVec4
 CMaterial
 CMesh
 CMeshBuilder
 CMeshGL
 CManifold::Impl::MeshRelationD
 CMeshSize
 CNegate< T >
 COptions
 CParCollisionRecorder< inverted >
 CPathImpl
 CPlane
 CPolyVert
 CPool
 CProperties
 CQuality
 CQuickHull
 CRay
 CRect
 Creduce< Policy >
 CReindexEdge< inverted >
 CManifold::Impl::Relation
 CResult
 Cruntime_error
 CSeqCollisionRecorder< inverted >
 CConcurrentSharedPtr< T >::SharedPtrGuard
 CSmoothness
 Csort_Asc< Policy >
 Csort_Asc_size< Policy >
 Csort_Asc_size_merge< Policy >
 Csort_Des< Policy >
 Csort_Des_size< Policy >
 Csort_Des_size_merge< Policy >
 Csort_Eq< Policy >
 Csort_Eq_size< Policy >
 Csort_Eq_size_merge< Policy >
 Csort_Rnd< Policy >
 Csort_Rnd_size< Policy >
 Csort_Rnd_size_merge< Policy >
 Csort_roughly_Asc< Policy >
 Csort_roughly_Asc_size< Policy >
 Csort_roughly_Asc_size_merge< Policy >
 CSparseIndices
 CStridedRange< Iter >
 CSVDSet
 CTimer
 CTmpEdge
 Ctransform_reduce< Policy >
 CTransformBox
 CTransformIterator< F, Iter >
 CTriRef
 Ctype_caster< glm::mat< C, R, T, Q > >
 Ctype_caster< glm::vec< N, T, Q > >
 Ctype_caster< manifold::VecView< glm::vec< N, T, Q > > >
 Ctype_caster< std::vector< glm::vec< N, T, Q > > >
 CUnionFind< I, R >
 CVecView< T >
 CVecView< char >
 CVecView< const manifold::Box >
 CVecView< const manifold::TmpEdge >
 CVecView< const std::pair< int, int > >
 CVecView< const T >
 CVecView< const uint32_t >
 CVecView< float >
 CVecView< glm::ivec3 >
 CVecView< glm::vec3 >
 CVecView< glm::vec4 >
 CVecView< int >
 CVecView< manifold::Box >
 CVecView< manifold::Halfedge >
 CVecView< manifold::TriRef >
 CVecView< std::pair< int, int > >
 CVecView< Uint64 >
 CVecView< unsigned char >
 CVecView< V >
 CVertexDataSource
+
+
+
+ + + + diff --git a/docs/html/hierarchy.js b/docs/html/hierarchy.js new file mode 100644 index 000000000..8b61d22cf --- /dev/null +++ b/docs/html/hierarchy.js @@ -0,0 +1,164 @@ +var hierarchy = +[ + [ "all_of< Policy >", "structbenchmarks_1_1all__of.html", null ], + [ "Barycentric", "group___private.html#structmanifold_1_1_barycentric", null ], + [ "BaryIndices", "structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_bary_indices", null ], + [ "Boolean3", "classmanifold_1_1_boolean3.html", null ], + [ "Box", "structmanifold_1_1_box.html", null ], + [ "BuildInternalBoxes", "structmanifold_1_1collider__internal_1_1_build_internal_boxes.html", null ], + [ "Collider", "classmanifold_1_1_collider.html", null ], + [ "ConcurrentSharedPtr< T >", "classmanifold_1_1_concurrent_shared_ptr.html", null ], + [ "ConcurrentSharedPtr< Impl >", "classmanifold_1_1_concurrent_shared_ptr.html", null ], + [ "ConvexHull", "class_convex_hull.html", null ], + [ "copy< Policy >", "structbenchmarks_1_1copy.html", null ], + [ "copy_if_1001< Policy >", "structbenchmarks_1_1copy__if__1001.html", null ], + [ "copy_if_28< Policy >", "structbenchmarks_1_1copy__if__28.html", null ], + [ "copy_if_55< Policy >", "structbenchmarks_1_1copy__if__55.html", null ], + [ "copy_if_82< Policy >", "structbenchmarks_1_1copy__if__82.html", null ], + [ "count< Policy >", "structbenchmarks_1_1count.html", null ], + [ "CountCollisions", "structmanifold_1_1collider__internal_1_1_count_collisions.html", null ], + [ "CountingIterator< T >", "structmanifold_1_1_counting_iterator.html", null ], + [ "CreateRadixTree", "structmanifold_1_1collider__internal_1_1_create_radix_tree.html", null ], + [ "CrossSection", "classmanifold_1_1_cross_section.html", null ], + [ "CubeVoid", "struct_cube_void.html", null ], + [ "DiagnosticsData", "struct_diagnostics_data.html", null ], + [ "Edge", "struct_edge.html", null ], + [ "enable_shared_from_this", null, [ + [ "CsgNode", "classmanifold_1_1_csg_node.html", [ + [ "CsgLeafNode", "classmanifold_1_1_csg_leaf_node.html", null ], + [ "CsgOpNode", "classmanifold_1_1_csg_op_node.html", null ] + ] ] + ] ], + [ "exclusive_scan< Policy >", "structbenchmarks_1_1exclusive__scan.html", null ], + [ "ExecutionParams", "group___debug.html#structmanifold_1_1_execution_params", null ], + [ "ExportOptions", "group___mesh_i_o.html#structmanifold_1_1_export_options", null ], + [ "Face", "class_half_edge_mesh.html#struct_half_edge_mesh_1_1_face", null ], + [ "Face", "struct_mesh_builder_1_1_face.html", null ], + [ "fill< Policy >", "structbenchmarks_1_1fill.html", null ], + [ "FindCollisions< T, selfCollision, Recorder >", "structmanifold_1_1collider__internal_1_1_find_collisions.html", null ], + [ "firstFinite< T >", "structmanifold_1_1_sparse_indices_1_1first_finite.html", null ], + [ "for_each< Policy >", "structbenchmarks_1_1for__each.html", null ], + [ "glm_name< T >", "structglm__name.html", null ], + [ "glm_name< glm::ivec3 >", "structglm__name_3_01glm_1_1ivec3_01_4.html", null ], + [ "glm_name< glm::mat3x2 >", "structglm__name_3_01glm_1_1mat3x2_01_4.html", null ], + [ "glm_name< glm::mat4x3 >", "structglm__name_3_01glm_1_1mat4x3_01_4.html", null ], + [ "glm_name< glm::vec2 >", "structglm__name_3_01glm_1_1vec2_01_4.html", null ], + [ "glm_name< glm::vec3 >", "structglm__name_3_01glm_1_1vec3_01_4.html", null ], + [ "GyroidSDF", "struct_gyroid_s_d_f.html", null ], + [ "HalfEdge", "class_half_edge_mesh.html#struct_half_edge_mesh_1_1_half_edge", null ], + [ "Halfedge", "structmanifold_1_1_halfedge.html", null ], + [ "HalfEdge", "struct_mesh_builder_1_1_half_edge.html", null ], + [ "HalfEdgeMesh", "class_half_edge_mesh.html", null ], + [ "hash< glm::ivec4 >", "structstd_1_1hash_3_01glm_1_1ivec4_01_4.html", null ], + [ "hash< std::pair< int, int > >", "structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html", null ], + [ "HashTable< V, H >", "classmanifold_1_1_hash_table.html", null ], + [ "HashTableD< V, H >", "classmanifold_1_1_hash_table_d.html", null ], + [ "HullImpl", "class_hull_impl.html", [ + [ "HullImplCGAL", "class_hull_impl_c_g_a_l.html", null ], + [ "HullImplOriginal", "class_hull_impl_original.html", null ] + ] ], + [ "Identity< T >", "structmanifold_1_1_identity.html", null ], + [ "Impl", "structmanifold_1_1_manifold_1_1_impl.html", null ], + [ "Layers", "struct_layers.html", null ], + [ "Manifold", "classmanifold_1_1_manifold.html", null ], + [ "ManifoldIVec3", "struct_manifold_i_vec3.html", null ], + [ "ManifoldManifoldPair", "struct_manifold_manifold_pair.html", null ], + [ "ManifoldProperties", "struct_manifold_properties.html", null ], + [ "ManifoldVec2", "struct_manifold_vec2.html", null ], + [ "ManifoldVec3", "struct_manifold_vec3.html", null ], + [ "ManifoldVec4", "struct_manifold_vec4.html", null ], + [ "Material", "group___mesh_i_o.html#structmanifold_1_1_material", null ], + [ "Mesh", "group___connections.html#structmanifold_1_1_mesh", null ], + [ "MeshBuilder", "class_mesh_builder.html", null ], + [ "MeshGL", "structmanifold_1_1_mesh_g_l.html", null ], + [ "MeshRelationD", "structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_mesh_relation_d", null ], + [ "MeshSize", "struct_mesh_size.html", null ], + [ "Negate< T >", "structmanifold_1_1_negate.html", null ], + [ "Options", "struct_options.html", null ], + [ "ParCollisionRecorder< inverted >", "structmanifold_1_1collider__internal_1_1_par_collision_recorder.html", null ], + [ "PathImpl", "structmanifold_1_1_path_impl.html", null ], + [ "Plane", "class_plane.html", null ], + [ "PolyVert", "group___private.html#structmanifold_1_1_poly_vert", null ], + [ "Pool", "class_pool.html", null ], + [ "Properties", "group___connections.html#structmanifold_1_1_properties", null ], + [ "Quality", "classmanifold_1_1_quality.html", null ], + [ "QuickHull", "class_quick_hull.html", null ], + [ "Ray", "struct_ray.html", null ], + [ "Rect", "structmanifold_1_1_rect.html", null ], + [ "reduce< Policy >", "structbenchmarks_1_1reduce.html", null ], + [ "ReindexEdge< inverted >", "structmanifold_1_1_reindex_edge.html", null ], + [ "Relation", "structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_relation", null ], + [ "Result", "struct_result.html", null ], + [ "runtime_error", null, [ + [ "geometryErr", "structmanifold_1_1geometry_err.html", null ], + [ "topologyErr", "structmanifold_1_1topology_err.html", null ], + [ "userErr", "structmanifold_1_1user_err.html", null ] + ] ], + [ "SeqCollisionRecorder< inverted >", "structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html", null ], + [ "SharedPtrGuard", "classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html", null ], + [ "Smoothness", "group___connections.html#structmanifold_1_1_smoothness", null ], + [ "sort_Asc< Policy >", "structbenchmarks_1_1sort___asc.html", null ], + [ "sort_Asc_size< Policy >", "structbenchmarks_1_1sort___asc__size.html", null ], + [ "sort_Asc_size_merge< Policy >", "structbenchmarks_1_1sort___asc__size__merge.html", null ], + [ "sort_Des< Policy >", "structbenchmarks_1_1sort___des.html", null ], + [ "sort_Des_size< Policy >", "structbenchmarks_1_1sort___des__size.html", null ], + [ "sort_Des_size_merge< Policy >", "structbenchmarks_1_1sort___des__size__merge.html", null ], + [ "sort_Eq< Policy >", "structbenchmarks_1_1sort___eq.html", null ], + [ "sort_Eq_size< Policy >", "structbenchmarks_1_1sort___eq__size.html", null ], + [ "sort_Eq_size_merge< Policy >", "structbenchmarks_1_1sort___eq__size__merge.html", null ], + [ "sort_Rnd< Policy >", "structbenchmarks_1_1sort___rnd.html", null ], + [ "sort_Rnd_size< Policy >", "structbenchmarks_1_1sort___rnd__size.html", null ], + [ "sort_Rnd_size_merge< Policy >", "structbenchmarks_1_1sort___rnd__size__merge.html", null ], + [ "sort_roughly_Asc< Policy >", "structbenchmarks_1_1sort__roughly___asc.html", null ], + [ "sort_roughly_Asc_size< Policy >", "structbenchmarks_1_1sort__roughly___asc__size.html", null ], + [ "sort_roughly_Asc_size_merge< Policy >", "structbenchmarks_1_1sort__roughly___asc__size__merge.html", null ], + [ "SparseIndices", "classmanifold_1_1_sparse_indices.html", null ], + [ "StridedRange< Iter >", "structmanifold_1_1_strided_range.html", null ], + [ "SVDSet", "group___connections.html#structmanifold_1_1_s_v_d_set", null ], + [ "Timer", "structmanifold_1_1_timer.html", null ], + [ "TmpEdge", "structmanifold_1_1_tmp_edge.html", null ], + [ "transform_reduce< Policy >", "structbenchmarks_1_1transform__reduce.html", null ], + [ "TransformBox", "structmanifold_1_1collider__internal_1_1_transform_box.html", null ], + [ "TransformIterator< F, Iter >", "structmanifold_1_1_transform_iterator.html", null ], + [ "TriRef", "structmanifold_1_1_tri_ref.html", null ], + [ "type_caster< glm::mat< C, R, T, Q > >", "structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html", null ], + [ "type_caster< glm::vec< N, T, Q > >", "structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html", null ], + [ "type_caster< manifold::VecView< glm::vec< N, T, Q > > >", "structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html", null ], + [ "type_caster< std::vector< glm::vec< N, T, Q > > >", "structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html", null ], + [ "UnionFind< I, R >", "structmanifold_1_1_union_find.html", null ], + [ "VecView< T >", "classmanifold_1_1_vec_view.html", [ + [ "Vec< int >", "classmanifold_1_1_vec.html", null ], + [ "Vec< glm::vec3 >", "classmanifold_1_1_vec.html", null ], + [ "Vec< manifold::Box >", "classmanifold_1_1_vec.html", null ], + [ "Vec< std::pair< int, int > >", "classmanifold_1_1_vec.html", null ], + [ "Vec< Uint64 >", "classmanifold_1_1_vec.html", null ], + [ "Vec< V >", "classmanifold_1_1_vec.html", null ], + [ "Vec< manifold::Halfedge >", "classmanifold_1_1_vec.html", null ], + [ "Vec< glm::vec4 >", "classmanifold_1_1_vec.html", null ], + [ "Vec< float >", "classmanifold_1_1_vec.html", null ], + [ "Vec< manifold::TriRef >", "classmanifold_1_1_vec.html", null ], + [ "Vec< glm::ivec3 >", "classmanifold_1_1_vec.html", null ], + [ "Vec< char >", "classmanifold_1_1_vec.html", null ], + [ "Vec< unsigned char >", "classmanifold_1_1_vec.html", null ], + [ "Vec< T >", "classmanifold_1_1_vec.html", null ] + ] ], + [ "VecView< char >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< const manifold::Box >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< const manifold::TmpEdge >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< const std::pair< int, int > >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< const T >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< const uint32_t >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< float >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< glm::ivec3 >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< glm::vec3 >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< glm::vec4 >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< int >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< manifold::Box >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< manifold::Halfedge >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< manifold::TriRef >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< std::pair< int, int > >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< Uint64 >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< unsigned char >", "classmanifold_1_1_vec_view.html", null ], + [ "VecView< V >", "classmanifold_1_1_vec_view.html", null ], + [ "VertexDataSource", "class_vertex_data_source.html", null ] +]; \ No newline at end of file diff --git a/docs/html/impl_8h_source.html b/docs/html/impl_8h_source.html new file mode 100644 index 000000000..4b3e5d120 --- /dev/null +++ b/docs/html/impl_8h_source.html @@ -0,0 +1,359 @@ + + + + + + + +Manifold: impl.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
impl.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <map>
+
17
+
18#include "collider.h"
+
19#include "manifold.h"
+
20#include "optional_assert.h"
+
21#include "polygon.h"
+
22#include "shared.h"
+
23#include "sparse.h"
+
24#include "utils.h"
+
25#include "vec.h"
+
26
+
27namespace manifold {
+
28
+
+ +
+
31 struct Relation {
+
32 int originalID = -1;
+
33 glm::mat4x3 transform = glm::mat4x3(1);
+
34 bool backSide = false;
+
35 };
+
+
+ +
38 int originalID = -1;
+
39 int numProp = 0;
+
40 Vec<float> properties;
+
41 std::map<int, Relation> meshIDtransform;
+
42 Vec<TriRef> triRef;
+
43 Vec<glm::ivec3> triProperties;
+
44 };
+
+
+
45 struct BaryIndices {
+
46 int tri, start4, end4;
+
47 };
+
+
48
+
49 Box bBox_;
+
50 float precision_ = -1;
+
51 Error status_ = Error::NoError;
+
52 Vec<glm::vec3> vertPos_;
+
53 Vec<Halfedge> halfedge_;
+
54 Vec<glm::vec3> vertNormal_;
+
55 Vec<glm::vec3> faceNormal_;
+
56 Vec<glm::vec4> halfedgeTangent_;
+
57 MeshRelationD meshRelation_;
+
58 Collider collider_;
+
59
+
60 static std::atomic<uint32_t> meshIDCounter_;
+
61 static uint32_t ReserveIDs(uint32_t);
+
62
+
63 Impl() {}
+
64 enum class Shape { Tetrahedron, Cube, Octahedron };
+
65 Impl(Shape, const glm::mat4x3 = glm::mat4x3(1));
+
66
+
67 Impl(const MeshGL&, std::vector<float> propertyTolerance = {});
+
68 Impl(const Mesh&, const MeshRelationD& relation,
+
69 const std::vector<float>& propertyTolerance = {},
+
70 bool hasFaceIDs = false);
+
71
+
72 inline void ForVert(int halfedge, std::function<void(int halfedge)> func) {
+
73 int current = halfedge;
+
74 do {
+
75 current = NextHalfedge(halfedge_[current].pairedHalfedge);
+
76 func(current);
+
77 } while (current != halfedge);
+
78 }
+
79
+
80 template <typename T>
+
81 void ForVert(
+
82 int halfedge, std::function<T(int halfedge)> transform,
+
83 std::function<void(int halfedge, const T& here, T& next)> binaryOp) {
+
84 T here = transform(halfedge);
+
85 int current = halfedge;
+
86 do {
+
87 const int nextHalfedge = NextHalfedge(halfedge_[current].pairedHalfedge);
+
88 T next = transform(nextHalfedge);
+
89 binaryOp(current, here, next);
+
90 here = next;
+
91 current = nextHalfedge;
+
92 } while (current != halfedge);
+
93 }
+
94
+
95 void CreateFaces(const std::vector<float>& propertyTolerance = {});
+
96 void RemoveUnreferencedVerts(Vec<glm::ivec3>& triVerts);
+
97 void InitializeOriginal();
+
98 void CreateHalfedges(const Vec<glm::ivec3>& triVerts);
+
99 void CalculateNormals();
+
100 void IncrementMeshIDs();
+
101
+
102 void Update();
+
103 void MarkFailure(Error status);
+
104 void Warp(std::function<void(glm::vec3&)> warpFunc);
+
105 void WarpBatch(std::function<void(VecView<glm::vec3>)> warpFunc);
+
106 Impl Transform(const glm::mat4x3& transform) const;
+
107 SparseIndices EdgeCollisions(const Impl& B, bool inverted = false) const;
+
108 SparseIndices VertexCollisionsZ(VecView<const glm::vec3> vertsIn,
+
109 bool inverted = false) const;
+
110
+
111 bool IsEmpty() const { return NumVert() == 0; }
+
112 size_t NumVert() const { return vertPos_.size(); }
+
113 size_t NumEdge() const { return halfedge_.size() / 2; }
+
114 size_t NumTri() const { return halfedge_.size() / 3; }
+
115 size_t NumProp() const { return meshRelation_.numProp; }
+
116 size_t NumPropVert() const {
+
117 return NumProp() == 0 ? NumVert()
+
118 : meshRelation_.properties.size() / NumProp();
+
119 }
+
120
+
121 // properties.cu
+
122 Properties GetProperties() const;
+
123 void CalculateCurvature(int gaussianIdx, int meanIdx);
+
124 void CalculateBBox();
+
125 bool IsFinite() const;
+
126 bool IsIndexInBounds(VecView<const glm::ivec3> triVerts) const;
+
127 void SetPrecision(float minPrecision = -1);
+
128 bool IsManifold() const;
+
129 bool Is2Manifold() const;
+
130 bool MatchesTriNormals() const;
+
131 int NumDegenerateTris() const;
+
132 float MinGap(const Impl& other, float searchLength) const;
+
133
+
134 // sort.cu
+
135 void Finish();
+
136 void SortVerts();
+
137 void ReindexVerts(const Vec<int>& vertNew2Old, int numOldVert);
+
138 void CompactProps();
+
139 void GetFaceBoxMorton(Vec<Box>& faceBox, Vec<uint32_t>& faceMorton) const;
+
140 void SortFaces(Vec<Box>& faceBox, Vec<uint32_t>& faceMorton);
+
141 void GatherFaces(const Vec<int>& faceNew2Old);
+
142 void GatherFaces(const Impl& old, const Vec<int>& faceNew2Old);
+
143
+
144 // face_op.cu
+
145 void Face2Tri(const Vec<int>& faceEdge, const Vec<TriRef>& halfedgeRef);
+
146 PolygonsIdx Face2Polygons(VecView<Halfedge>::IterC start,
+
147 VecView<Halfedge>::IterC end,
+
148 glm::mat3x2 projection) const;
+
149 Polygons Slice(float height) const;
+
150 Polygons Project() const;
+
151
+
152 // edge_op.cu
+
153 void SimplifyTopology();
+
154 void DedupeEdge(int edge);
+
155 void CollapseEdge(int edge, std::vector<int>& edges);
+
156 void RecursiveEdgeSwap(int edge, int& tag, std::vector<int>& visited,
+
157 std::vector<int>& edgeSwapStack,
+
158 std::vector<int>& edges);
+
159 void RemoveIfFolded(int edge);
+
160 void PairUp(int edge0, int edge1);
+
161 void UpdateVert(int vert, int startEdge, int endEdge);
+
162 void FormLoop(int current, int end);
+
163 void CollapseTri(const glm::ivec3& triEdge);
+
164 void SplitPinchedVerts();
+
165
+
166 // subdivision.cpp
+
167 int GetNeighbor(int tri) const;
+
168 glm::ivec4 GetHalfedges(int tri) const;
+
169 BaryIndices GetIndices(int halfedge) const;
+
170 void FillRetainedVerts(Vec<Barycentric>& vertBary) const;
+
171 Vec<Barycentric> Subdivide(std::function<int(glm::vec3)>);
+
172
+
173 // smoothing.cpp
+
174 bool IsInsideQuad(int halfedge) const;
+
175 bool IsMarkedInsideQuad(int halfedge) const;
+
176 glm::vec3 GetNormal(int halfedge, int normalIdx) const;
+
177 glm::vec4 TangentFromNormal(const glm::vec3& normal, int halfedge) const;
+
178 std::vector<Smoothness> UpdateSharpenedEdges(
+
179 const std::vector<Smoothness>&) const;
+
180 Vec<bool> FlatFaces() const;
+
181 Vec<int> VertFlatFace(const Vec<bool>&) const;
+
182 Vec<int> VertHalfedge() const;
+
183 std::vector<Smoothness> SharpenEdges(float minSharpAngle,
+
184 float minSmoothness) const;
+
185 void SharpenTangent(int halfedge, float smoothness);
+
186 void SetNormals(int normalIdx, float minSharpAngle);
+ +
188 void DistributeTangents(const Vec<bool>& fixedHalfedges);
+
189 void CreateTangents(int normalIdx);
+
190 void CreateTangents(std::vector<Smoothness>);
+
191 void Refine(std::function<int(glm::vec3)>);
+
192};
+
+
193} // namespace manifold
+
Definition collider.h:278
+
Definition vec.h:43
+
Definition meshIO.h:20
+
Definition public.h:177
+
Definition impl.h:30
+
bool IsIndexInBounds(VecView< const glm::ivec3 > triVerts) const
Definition properties.cpp:346
+
void FillRetainedVerts(Vec< Barycentric > &vertBary) const
Definition subdivision.cpp:460
+
void IncrementMeshIDs()
Definition impl.cpp:807
+
bool IsManifold() const
Definition properties.cpp:199
+
void SharpenTangent(int halfedge, float smoothness)
Definition smoothing.cpp:436
+
void SetPrecision(float minPrecision=-1)
Definition impl.cpp:770
+
bool IsFinite() const
Definition properties.cpp:335
+
void SetNormals(int normalIdx, float minSharpAngle)
Definition smoothing.cpp:447
+
void CalculateBBox()
Definition properties.cpp:314
+
BaryIndices GetIndices(int halfedge) const
Definition subdivision.cpp:432
+
void SimplifyTopology()
Definition edge_op.cpp:143
+
bool MatchesTriNormals() const
Definition properties.cpp:229
+
void LinearizeFlatTangents()
Definition smoothing.cpp:656
+
glm::ivec4 GetHalfedges(int tri) const
Definition subdivision.cpp:405
+
bool Is2Manifold() const
Definition properties.cpp:209
+
bool IsMarkedInsideQuad(int halfedge) const
Definition smoothing.cpp:333
+
int GetNeighbor(int tri) const
Definition subdivision.cpp:389
+
void SortVerts()
Definition sort.cpp:184
+
void ReindexVerts(const Vec< int > &vertNew2Old, int numOldVert)
Definition sort.cpp:224
+
void SortFaces(Vec< Box > &faceBox, Vec< uint32_t > &faceMorton)
Definition sort.cpp:305
+
int originalID
The originalID of this Manifold if it is an original; -1 otherwise.
Definition impl.h:38
+
bool IsInsideQuad(int halfedge) const
Definition smoothing.cpp:302
+
glm::vec4 TangentFromNormal(const glm::vec3 &normal, int halfedge) const
Definition smoothing.cpp:287
+
void GatherFaces(const Vec< int > &faceNew2Old)
Definition sort.cpp:334
+
Vec< Barycentric > Subdivide(std::function< int(glm::vec3)>)
Definition subdivision.cpp:480
+
void CreateTangents(int normalIdx)
Definition smoothing.cpp:782
+
glm::vec3 GetNormal(int halfedge, int normalIdx) const
Definition smoothing.cpp:271
+
void CalculateNormals()
Definition impl.cpp:786
+
PolygonsIdx Face2Polygons(VecView< Halfedge >::IterC start, VecView< Halfedge >::IterC end, glm::mat3x2 projection) const
Definition face_op.cpp:200
+
void DistributeTangents(const Vec< bool > &fixedHalfedges)
Definition smoothing.cpp:690
+
void GetFaceBoxMorton(Vec< Box > &faceBox, Vec< uint32_t > &faceMorton) const
Definition sort.cpp:272
+
void Update()
Definition impl.cpp:670
+
void Face2Tri(const Vec< int > &faceEdge, const Vec< TriRef > &halfedgeRef)
Definition face_op.cpp:40
+
void CompactProps()
Definition sort.cpp:236
+
void Finish()
Definition sort.cpp:123
+
SparseIndices VertexCollisionsZ(VecView< const glm::vec3 > vertsIn, bool inverted=false) const
Definition impl.cpp:861
+
int NumDegenerateTris() const
Definition properties.cpp:238
+
SparseIndices EdgeCollisions(const Impl &B, bool inverted=false) const
Definition impl.cpp:829
+
void CreateHalfedges(const Vec< glm::ivec3 > &triVerts)
Definition impl.cpp:625
+ + + +
Definition manifold.h:46
+
+
+ + + + diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 000000000..6ecba309d --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,127 @@ + + + + + + + +Manifold: Python Bindings + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Python Bindings
+
+
+

+

+Autogenerated Doc-Strings

+

Doc-strings for the python API wrapper are generated by gen_docs.py The script is run automatically during the build to keep python doc strings fully up-to-date with c++ sources.

+

It scrapes documentation comments and c++ function signatures from the manifold c++ sources, in order to generate a c++ header file exposing the comments as string variables named by function names. This allows python bindings to re-use the c++ comments directly.

+

Some snake-casing of params is applied for python use case.

+
+

When modifying the Manifold C++ sources, you may need to update gen_docs.py. For example, top-level free functions are white-listed, so if you add a new one, you will need to add it in gen_docs.py.

+

Similarly, the list of source files to parse is also white listed, so if you define functions in new files that need python wrappers, you will also need to up gen_docs.py.

+

To verify that python docs are correct after changes, you can run the following commends from the manifold repo root:

pip install .
+
python -c 'import manifold3d; help(manifold3d)'
+

Alternateively you could generate stubs with roughly the same info

pip install nanobind-stubgen
+
pip install .
+
nanobind-stubgen manifold3d
+

It will emit some warnings and write a file manifold3d.pyi which will show all the function signatures and docstrings.

+
+
+
+ + + + diff --git a/docs/html/index.js b/docs/html/index.js new file mode 100644 index 000000000..baf35f784 --- /dev/null +++ b/docs/html/index.js @@ -0,0 +1,4 @@ +var index = +[ + [ "Autogenerated Doc-Strings", "index.html#autotoc_md1", null ] +]; \ No newline at end of file diff --git a/docs/html/iters_8h_source.html b/docs/html/iters_8h_source.html new file mode 100644 index 000000000..5b1e5d273 --- /dev/null +++ b/docs/html/iters_8h_source.html @@ -0,0 +1,428 @@ + + + + + + + +Manifold: iters.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
iters.h
+
+
+
1// Copyright 2024 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14#pragma once
+
15
+
16#include <iterator>
+
17#include <type_traits>
+
18
+
19namespace manifold {
+
20
+
21template <typename F, typename Iter>
+
+ +
23 private:
+
24 Iter iter;
+
25 F f;
+
26
+
27 public:
+
28 using pointer = void;
+
29 using reference = std::invoke_result_t<
+
30 F, typename std::iterator_traits<std::remove_const_t<Iter>>::value_type>;
+
31 using difference_type =
+
32 typename std::iterator_traits<std::remove_const_t<Iter>>::difference_type;
+
33 using value_type = reference;
+
34 using iterator_category = typename std::iterator_traits<
+
35 std::remove_const_t<Iter>>::iterator_category;
+
36
+
37 TransformIterator(Iter iter, F f) : iter(iter), f(f) {}
+
38
+
39 TransformIterator& operator=(const TransformIterator& other) {
+
40 if (this == &other) return *this;
+
41 // don't copy function, should be the same
+
42 iter = other.iter;
+
43 return *this;
+
44 }
+
45
+
46 reference operator*() const { return f(*iter); }
+
47
+
48 reference operator[](size_t i) const { return f(iter[i]); }
+
49
+
50 // prefix increment
+
51 TransformIterator& operator++() {
+
52 iter += 1;
+
53 return *this;
+
54 }
+
55
+
56 // postfix
+
57 TransformIterator operator++(int) {
+
58 auto old = *this;
+
59 operator++();
+
60 return old;
+
61 }
+
62
+
63 // prefix increment
+
64 TransformIterator& operator--() {
+
65 iter -= 1;
+
66 return *this;
+
67 }
+
68
+
69 // postfix
+
70 TransformIterator operator--(int) {
+
71 auto old = *this;
+
72 operator--();
+
73 return old;
+
74 }
+
75
+
76 TransformIterator operator+(size_t n) const {
+
77 return TransformIterator(iter + n, f);
+
78 }
+
79
+
80 TransformIterator& operator+=(size_t n) {
+
81 iter += n;
+
82 return *this;
+
83 }
+
84
+
85 TransformIterator operator-(size_t n) const {
+
86 return TransformIterator(iter - n, f);
+
87 }
+
88
+
89 TransformIterator& operator-=(size_t n) {
+
90 iter -= n;
+
91 return *this;
+
92 }
+
93
+
94 bool operator==(TransformIterator other) const { return iter == other.iter; }
+
95
+
96 bool operator!=(TransformIterator other) const {
+
97 return !(iter == other.iter);
+
98 }
+
99
+
100 bool operator<(TransformIterator other) const { return iter < other.iter; }
+
101
+
102 difference_type operator-(TransformIterator other) const {
+
103 return iter - other.iter;
+
104 }
+
105
+
106 operator TransformIterator<F, const Iter>() const {
+
107 return TransformIterator(f, iter);
+
108 }
+
109};
+
+
110
+
111template <typename T>
+
+ +
113 private:
+
114 T counter;
+
115
+
116 public:
+
117 using pointer = void;
+
118 using reference = T;
+
119 using difference_type = std::make_signed_t<T>;
+
120 using value_type = T;
+
121 using iterator_category = std::random_access_iterator_tag;
+
122
+
123 CountingIterator(T counter) : counter(counter) {}
+
124
+
125 value_type operator*() const { return counter; }
+
126 value_type operator[](T i) const { return counter + i; }
+
127
+
128 // prefix increment
+
129 CountingIterator& operator++() {
+
130 counter += 1;
+
131 return *this;
+
132 }
+
133
+
134 // postfix
+
135 CountingIterator operator++(int) {
+
136 auto old = *this;
+
137 operator++();
+
138 return old;
+
139 }
+
140
+
141 // prefix increment
+
142 CountingIterator& operator--() {
+
143 counter -= 1;
+
144 return *this;
+
145 }
+
146
+
147 // postfix
+
148 CountingIterator operator--(int) {
+
149 auto old = *this;
+
150 operator--();
+
151 return old;
+
152 }
+
153
+
154 CountingIterator operator+(T n) const {
+
155 return CountingIterator(counter + n);
+
156 }
+
157
+
158 CountingIterator& operator+=(T n) {
+
159 counter += n;
+
160 return *this;
+
161 }
+
162
+
163 CountingIterator operator-(T n) const {
+
164 return CountingIterator(counter - n);
+
165 }
+
166
+
167 CountingIterator& operator-=(T n) {
+
168 counter -= n;
+
169 return *this;
+
170 }
+
171
+
172 friend bool operator==(CountingIterator a, CountingIterator b) {
+
173 return a.counter == b.counter;
+
174 }
+
175
+
176 friend bool operator!=(CountingIterator a, CountingIterator b) {
+
177 return a.counter != b.counter;
+
178 }
+
179
+
180 friend bool operator<(CountingIterator a, CountingIterator b) {
+
181 return a.counter < b.counter;
+
182 }
+
183
+
184 friend difference_type operator-(CountingIterator a, CountingIterator b) {
+
185 return a.counter - b.counter;
+
186 }
+
187
+
188 operator CountingIterator<const T>() const {
+
189 return CountingIterator(counter);
+
190 }
+
191};
+
+
192
+
193template <typename T>
+
194CountingIterator<T> countAt(T i) {
+
195 return CountingIterator(i);
+
196}
+
197
+
198template <typename Iter>
+
+ +
200 private:
+
201 struct StridedRangeIter {
+
202 private:
+
203 Iter iter;
+
204 size_t stride;
+
205
+
206 public:
+
207 using pointer =
+
208 typename std::iterator_traits<std::remove_const_t<Iter>>::pointer;
+
209 using reference =
+
210 typename std::iterator_traits<std::remove_const_t<Iter>>::reference;
+
211 using difference_type = typename std::iterator_traits<
+
212 std::remove_const_t<Iter>>::difference_type;
+
213 using value_type =
+
214 typename std::iterator_traits<std::remove_const_t<Iter>>::value_type;
+
215 using iterator_category = typename std::iterator_traits<
+
216 std::remove_const_t<Iter>>::iterator_category;
+
217
+
218 StridedRangeIter(Iter iter, int stride) : iter(iter), stride(stride) {}
+
219
+
220 reference operator*() { return *iter; }
+
221
+
222 std::add_const_t<reference> operator*() const { return *iter; }
+
223
+
224 reference operator[](size_t i) { return iter[i * stride]; }
+
225
+
226 std::add_const_t<reference> operator[](size_t i) const {
+
227 return iter[i * stride];
+
228 }
+
229
+
230 // prefix increment
+
231 StridedRangeIter& operator++() {
+
232 iter += stride;
+
233 return *this;
+
234 }
+
235
+
236 // postfix
+
237 StridedRangeIter operator++(int) {
+
238 auto old = *this;
+
239 operator++();
+
240 return old;
+
241 }
+
242
+
243 // prefix increment
+
244 StridedRangeIter& operator--() {
+
245 iter -= stride;
+
246 return *this;
+
247 }
+
248
+
249 // postfix
+
250 StridedRangeIter operator--(int) {
+
251 auto old = *this;
+
252 operator--();
+
253 return old;
+
254 }
+
255
+
256 StridedRangeIter operator+(size_t n) const {
+
257 return StridedRangeIter(iter + n * stride, stride);
+
258 }
+
259
+
260 StridedRangeIter& operator+=(size_t n) {
+
261 iter += n * stride;
+
262 return *this;
+
263 }
+
264
+
265 StridedRangeIter operator-(size_t n) const {
+
266 return StridedRangeIter(iter - n * stride, stride);
+
267 }
+
268
+
269 StridedRangeIter& operator-=(size_t n) {
+
270 iter -= n * stride;
+
271 return *this;
+
272 }
+
273
+
274 friend bool operator==(StridedRangeIter a, StridedRangeIter b) {
+
275 return a.iter == b.iter;
+
276 }
+
277
+
278 friend bool operator!=(StridedRangeIter a, StridedRangeIter b) {
+
279 return !(a.iter == b.iter);
+
280 }
+
281
+
282 friend bool operator<(StridedRangeIter a, StridedRangeIter b) {
+
283 return a.iter < b.iter;
+
284 }
+
285
+
286 friend difference_type operator-(StridedRangeIter a, StridedRangeIter b) {
+
287 // note that this is not well-defined if a.stride != b.stride...
+
288 return (a.iter - b.iter) / a.stride;
+
289 }
+
290 };
+
291 Iter _start, _end;
+
292 const size_t stride;
+
293
+
294 public:
+
295 StridedRange(Iter start, Iter end, size_t stride)
+
296 : _start(start), _end(end), stride(stride) {}
+
297
+
298 StridedRangeIter begin() const { return StridedRangeIter(_start, stride); }
+
299
+
300 StridedRangeIter end() const {
+
301 return StridedRangeIter(_start, stride) +
+
302 ((std::distance(_start, _end) + (stride - 1)) / stride);
+
303 }
+
304};
+
+
305
+
306} // namespace manifold
+
Definition meshIO.h:20
+
Definition iters.h:112
+
Definition iters.h:199
+
Definition iters.h:22
+
+
+ + + + diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/manifold_8h_source.html b/docs/html/manifold_8h_source.html new file mode 100644 index 000000000..b69a8909f --- /dev/null +++ b/docs/html/manifold_8h_source.html @@ -0,0 +1,388 @@ + + + + + + + +Manifold: manifold.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
manifold.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <functional>
+
17#include <memory>
+
18
+
19#include "public.h"
+
20#include "vec_view.h"
+
21
+
22namespace manifold {
+
23
+
31ExecutionParams& ManifoldParams();
+
32
+
33class CsgNode;
+
34class CsgLeafNode;
+
35
+
+
46struct MeshGL {
+
+
48 uint32_t NumVert() const {
+
49 ASSERT(vertProperties.size() / numProp <
+
50 static_cast<size_t>(std::numeric_limits<uint32_t>::max()),
+
51 std::out_of_range("mesh too large for MeshGL"));
+
52 return vertProperties.size() / numProp;
+
53 };
+
+
+
55 uint32_t NumTri() const {
+
56 ASSERT(triVerts.size() / 3 <
+
57 static_cast<size_t>(std::numeric_limits<uint32_t>::max()),
+
58 std::out_of_range("mesh too large for MeshGL"));
+
59 return triVerts.size() / 3;
+
60 };
+
+
61
+
63 uint32_t numProp = 3;
+
67 std::vector<float> vertProperties;
+
70 std::vector<uint32_t> triVerts;
+
73 std::vector<uint32_t> mergeFromVert;
+
77 std::vector<uint32_t> mergeToVert;
+
85 std::vector<uint32_t> runIndex;
+
91 std::vector<uint32_t> runOriginalID;
+
96 std::vector<float> runTransform;
+
104 std::vector<uint32_t> faceID;
+
109 std::vector<float> halfedgeTangent;
+
114 float precision = 0;
+
115
+
116 MeshGL() = default;
+
117 MeshGL(const Mesh& mesh);
+
118
+
119 static MeshGL LevelSet(std::function<float(glm::vec3)> sdf, Box bounds,
+
120 float edgeLength, float level = 0,
+
121 float precision = -1, bool canParallel = true);
+
122
+
123 bool Merge();
+
124};
+
+
+
156class Manifold {
+
157 public:
+
162 Manifold();
+
163 ~Manifold();
+
164 Manifold(const Manifold& other);
+
165 Manifold& operator=(const Manifold& other);
+
166 Manifold(Manifold&&) noexcept;
+
167 Manifold& operator=(Manifold&&) noexcept;
+
168
+
169 Manifold(const MeshGL&, const std::vector<float>& propertyTolerance = {});
+
170 Manifold(const Mesh&);
+
171
+
172 static Manifold Smooth(const MeshGL&,
+
173 const std::vector<Smoothness>& sharpenedEdges = {});
+
174 static Manifold Smooth(const Mesh&,
+
175 const std::vector<Smoothness>& sharpenedEdges = {});
+
176 static Manifold Tetrahedron();
+
177 static Manifold Cube(glm::vec3 size = glm::vec3(1.0f), bool center = false);
+
178 static Manifold Cylinder(float height, float radiusLow,
+
179 float radiusHigh = -1.0f, int circularSegments = 0,
+
180 bool center = false);
+
181 static Manifold Sphere(float radius, int circularSegments = 0);
+
182 static Manifold Extrude(const Polygons& crossSection, float height,
+
183 int nDivisions = 0, float twistDegrees = 0.0f,
+
184 glm::vec2 scaleTop = glm::vec2(1.0f));
+
185 static Manifold Revolve(const Polygons& crossSection,
+
186 int circularSegments = 0,
+
187 float revolveDegrees = 360.0f);
+
189
+
194 static Manifold Compose(const std::vector<Manifold>&);
+
195 std::vector<Manifold> Decompose() const;
+
197
+
202 Mesh GetMesh() const;
+
203 MeshGL GetMeshGL(glm::ivec3 normalIdx = glm::ivec3(0)) const;
+
204 bool IsEmpty() const;
+
205 enum class Error {
+
206 NoError,
+
207 NonFiniteVertex,
+
208 NotManifold,
+
209 VertexOutOfBounds,
+
210 PropertiesWrongLength,
+
211 MissingPositionProperties,
+
212 MergeVectorsDifferentLengths,
+
213 MergeIndexOutOfBounds,
+
214 TransformWrongLength,
+
215 RunIndexWrongLength,
+
216 FaceIDWrongLength,
+
217 InvalidConstruction,
+
218 };
+
219 Error Status() const;
+
220 int NumVert() const;
+
221 int NumEdge() const;
+
222 int NumTri() const;
+
223 int NumProp() const;
+
224 int NumPropVert() const;
+
225 Box BoundingBox() const;
+
226 float Precision() const;
+
227 int Genus() const;
+ +
229 float MinGap(const Manifold& other, float searchLength) const;
+
231
+
237 int OriginalID() const;
+
238 Manifold AsOriginal() const;
+
239 static uint32_t ReserveIDs(uint32_t);
+
241
+
245 Manifold Translate(glm::vec3) const;
+
246 Manifold Scale(glm::vec3) const;
+
247 Manifold Rotate(float xDegrees, float yDegrees = 0.0f,
+
248 float zDegrees = 0.0f) const;
+
249 Manifold Transform(const glm::mat4x3&) const;
+
250 Manifold Mirror(glm::vec3) const;
+
251 Manifold Warp(std::function<void(glm::vec3&)>) const;
+
252 Manifold WarpBatch(std::function<void(VecView<glm::vec3>)>) const;
+ +
254 int, std::function<void(float*, glm::vec3, const float*)>) const;
+
255 Manifold CalculateCurvature(int gaussianIdx, int meanIdx) const;
+
256 Manifold CalculateNormals(int normalIdx, float minSharpAngle = 60) const;
+
257 Manifold SmoothByNormals(int normalIdx) const;
+
258 Manifold SmoothOut(float minSharpAngle = 60, float minSmoothness = 0) const;
+
259 Manifold Refine(int) const;
+
260 Manifold RefineToLength(float) const;
+
261 // Manifold RefineToPrecision(float);
+
263
+
268 Manifold Boolean(const Manifold& second, OpType op) const;
+
269 static Manifold BatchBoolean(const std::vector<Manifold>& manifolds,
+
270 OpType op);
+
271 // Boolean operation shorthand
+
272 Manifold operator+(const Manifold&) const; // Add (Union)
+ +
274 Manifold operator-(const Manifold&) const; // Subtract (Difference)
+ +
276 Manifold operator^(const Manifold&) const; // Intersect
+ +
278 std::pair<Manifold, Manifold> Split(const Manifold&) const;
+
279 std::pair<Manifold, Manifold> SplitByPlane(glm::vec3 normal,
+
280 float originOffset) const;
+
281 Manifold TrimByPlane(glm::vec3 normal, float originOffset) const;
+
283
+
287 Polygons Slice(float height = 0) const;
+
288 Polygons Project() const;
+
290
+
294 Manifold Hull() const;
+
295 static Manifold Hull(const std::vector<Manifold>& manifolds);
+
296 static Manifold Hull(const std::vector<glm::vec3>& pts);
+
298
+
303 bool MatchesTriNormals() const;
+
304 int NumDegenerateTris() const;
+
305 int NumOverlaps(const Manifold& second) const;
+
307
+
308 struct Impl;
+
309
+
310 private:
+
311 Manifold(std::shared_ptr<CsgNode> pNode_);
+
312 Manifold(std::shared_ptr<Impl> pImpl_);
+
313 static Manifold Invalid();
+
314 mutable std::shared_ptr<CsgNode> pNode_;
+
315
+
316 CsgLeafNode& GetCsgLeafNode() const;
+
317};
+
+
319} // namespace manifold
+
Definition csg_tree.h:41
+
Definition manifold.h:156
+
float Precision() const
Definition manifold.cpp:394
+
Polygons Slice(float height=0) const
Definition manifold.cpp:894
+
int NumOverlaps(const Manifold &second) const
Definition manifold.cpp:473
+
int NumEdge() const
Definition manifold.cpp:364
+
Manifold CalculateCurvature(int gaussianIdx, int meanIdx) const
Definition manifold.cpp:642
+
Manifold SetProperties(int, std::function< void(float *, glm::vec3, const float *)>) const
Definition manifold.cpp:587
+
static Manifold BatchBoolean(const std::vector< Manifold > &manifolds, OpType op)
Definition manifold.cpp:785
+
Manifold TrimByPlane(glm::vec3 normal, float originOffset) const
Definition manifold.cpp:884
+
static uint32_t ReserveIDs(uint32_t)
Definition manifold.cpp:445
+
static Manifold Sphere(float radius, int circularSegments=0)
Definition constructors.cpp:176
+
Polygons Project() const
Definition manifold.cpp:904
+
Box BoundingBox() const
Definition manifold.cpp:385
+
Error Status() const
Definition manifold.cpp:354
+
static Manifold Cube(glm::vec3 size=glm::vec3(1.0f), bool center=false)
Definition constructors.cpp:119
+
int NumProp() const
Definition manifold.cpp:372
+
float MinGap(const Manifold &other, float searchLength) const
Definition manifold.cpp:964
+
int NumTri() const
Definition manifold.cpp:368
+
int Genus() const
Definition manifold.cpp:403
+
Manifold RefineToLength(float) const
Definition manifold.cpp:754
+
Manifold & operator+=(const Manifold &)
Definition manifold.cpp:807
+
Manifold Rotate(float xDegrees, float yDegrees=0.0f, float zDegrees=0.0f) const
Definition manifold.cpp:515
+
MeshGL GetMeshGL(glm::ivec3 normalIdx=glm::ivec3(0)) const
Definition manifold.cpp:183
+
Manifold Refine(int) const
Definition manifold.cpp:736
+
std::pair< Manifold, Manifold > Split(const Manifold &) const
Definition manifold.cpp:849
+
bool MatchesTriNormals() const
Definition manifold.cpp:454
+
int OriginalID() const
Definition manifold.cpp:420
+
Manifold CalculateNormals(int normalIdx, float minSharpAngle=60) const
Definition manifold.cpp:663
+
Manifold Transform(const glm::mat4x3 &) const
Definition manifold.cpp:527
+
Mesh GetMesh() const
Definition manifold.cpp:143
+
Manifold WarpBatch(std::function< void(VecView< glm::vec3 >)>) const
Definition manifold.cpp:570
+
std::vector< Manifold > Decompose() const
Definition constructors.cpp:455
+
static Manifold Extrude(const Polygons &crossSection, float height, int nDivisions=0, float twistDegrees=0.0f, glm::vec2 scaleTop=glm::vec2(1.0f))
Definition constructors.cpp:215
+
int NumVert() const
Definition manifold.cpp:360
+
Manifold & operator^=(const Manifold &)
Definition manifold.cpp:837
+
Manifold SmoothOut(float minSharpAngle=60, float minSmoothness=0) const
Definition manifold.cpp:706
+
bool IsEmpty() const
Definition manifold.cpp:345
+
Manifold Mirror(glm::vec3) const
Definition manifold.cpp:539
+
static Manifold Compose(const std::vector< Manifold > &)
Definition constructors.cpp:442
+
Manifold Boolean(const Manifold &second, OpType op) const
Definition manifold.cpp:777
+
Manifold AsOriginal() const
Definition manifold.cpp:430
+
Manifold Hull() const
Definition manifold.cpp:946
+
Manifold SmoothByNormals(int normalIdx) const
Definition manifold.cpp:680
+
int NumPropVert() const
Definition manifold.cpp:378
+
Manifold Translate(glm::vec3) const
Definition manifold.cpp:489
+
Properties GetProperties() const
Definition manifold.cpp:411
+
static Manifold Cylinder(float height, float radiusLow, float radiusHigh=-1.0f, int circularSegments=0, bool center=false)
Definition constructors.cpp:142
+
Manifold operator^(const Manifold &) const
Definition manifold.cpp:830
+
Manifold()
Definition manifold.cpp:69
+
Manifold operator-(const Manifold &) const
Definition manifold.cpp:815
+
std::pair< Manifold, Manifold > SplitByPlane(glm::vec3 normal, float originOffset) const
Definition manifold.cpp:870
+
Manifold Scale(glm::vec3) const
Definition manifold.cpp:499
+
Manifold & operator-=(const Manifold &)
Definition manifold.cpp:822
+
Manifold Warp(std::function< void(glm::vec3 &)>) const
Definition manifold.cpp:557
+
static Manifold Revolve(const Polygons &crossSection, int circularSegments=0, float revolveDegrees=360.0f)
Definition constructors.cpp:302
+
Manifold operator+(const Manifold &) const
Definition manifold.cpp:800
+
static Manifold Tetrahedron()
Definition constructors.cpp:107
+
int NumDegenerateTris() const
Definition manifold.cpp:463
+
static Manifold Smooth(const MeshGL &, const std::vector< Smoothness > &sharpenedEdges={})
Definition constructors.cpp:49
+
Definition vec_view.h:27
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
Definition public.h:135
+
Definition public.h:173
+
static MeshGL LevelSet(std::function< float(glm::vec3)> sdf, Box bounds, float edgeLength, float level=0, float precision=-1, bool canParallel=true)
Definition sdf.cpp:338
+
OpType
Definition public.h:499
+
ExecutionParams & ManifoldParams()
Definition manifold.cpp:908
+
Definition meshIO.h:20
+
Definition public.h:177
+
Definition impl.h:30
+
Definition manifold.h:46
+
std::vector< uint32_t > runIndex
Definition manifold.h:85
+
bool Merge()
Definition sort.cpp:427
+
uint32_t NumVert() const
Number of property vertices.
Definition manifold.h:48
+
std::vector< float > runTransform
Definition manifold.h:96
+
uint32_t NumTri() const
Number of triangles.
Definition manifold.h:55
+
std::vector< float > halfedgeTangent
Definition manifold.h:109
+
std::vector< uint32_t > mergeFromVert
Definition manifold.h:73
+
std::vector< float > vertProperties
Definition manifold.h:67
+
std::vector< uint32_t > runOriginalID
Definition manifold.h:91
+
std::vector< uint32_t > faceID
Definition manifold.h:104
+
float precision
Definition manifold.h:114
+
uint32_t numProp
Number of properties per vertex, always >= 3.
Definition manifold.h:63
+
std::vector< uint32_t > mergeToVert
Definition manifold.h:77
+
std::vector< uint32_t > triVerts
Definition manifold.h:70
+
+
+ + + + diff --git a/docs/html/manifoldc_8h_source.html b/docs/html/manifoldc_8h_source.html new file mode 100644 index 000000000..7a54ccf58 --- /dev/null +++ b/docs/html/manifoldc_8h_source.html @@ -0,0 +1,560 @@ + + + + + + + +Manifold: manifoldc.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
manifoldc.h
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#include <stddef.h>
+
16#include <stdint.h>
+
17
+
18#include "types.h"
+
19
+
20#ifdef __cplusplus
+
21#include <cstdint>
+
22extern "C" {
+
23#endif
+
24
+
25// Polygons
+
26
+
27ManifoldSimplePolygon *manifold_simple_polygon(void *mem, ManifoldVec2 *ps,
+
28 size_t length);
+
29ManifoldPolygons *manifold_polygons(void *mem, ManifoldSimplePolygon **ps,
+
30 size_t length);
+
31size_t manifold_simple_polygon_length(ManifoldSimplePolygon *p);
+
32size_t manifold_polygons_length(ManifoldPolygons *ps);
+
33size_t manifold_polygons_simple_length(ManifoldPolygons *ps, int idx);
+
34ManifoldVec2 manifold_simple_polygon_get_point(ManifoldSimplePolygon *p,
+
35 int idx);
+
36ManifoldSimplePolygon *manifold_polygons_get_simple(void *mem,
+
37 ManifoldPolygons *ps,
+
38 int idx);
+
39ManifoldVec2 manifold_polygons_get_point(ManifoldPolygons *ps, int simple_idx,
+
40 int pt_idx);
+
41
+
42// Mesh Construction
+
43
+
44ManifoldMeshGL *manifold_meshgl(void *mem, float *vert_props, size_t n_verts,
+
45 size_t n_props, uint32_t *tri_verts,
+
46 size_t n_tris);
+
47
+
48ManifoldMeshGL *manifold_meshgl_w_tangents(void *mem, float *vert_props,
+
49 size_t n_verts, size_t n_props,
+
50 uint32_t *tri_verts, size_t n_tris,
+
51 float *halfedge_tangent);
+
52ManifoldMeshGL *manifold_get_meshgl(void *mem, ManifoldManifold *m);
+
53ManifoldMeshGL *manifold_meshgl_copy(void *mem, ManifoldMeshGL *m);
+
54ManifoldMeshGL *manifold_meshgl_merge(void *mem, ManifoldMeshGL *m);
+
55
+
56// SDF
+
57// By default, the execution policy (sequential or parallel) of
+
58// manifold_level_set will be chosen automatically depending on the size of the
+
59// job and whether Manifold has been compiled with a PAR backend. If you are
+
60// using these bindings from a language that has a runtime lock preventing the
+
61// parallel execution of closures, then you should use manifold_level_set_seq to
+
62// force sequential execution.
+
63ManifoldMeshGL *manifold_level_set(void *mem,
+
64 float (*sdf)(float, float, float, void *),
+
65 ManifoldBox *bounds, float edge_length,
+
66 float level, float precision, void *ctx);
+
67ManifoldMeshGL *manifold_level_set_seq(
+
68 void *mem, float (*sdf)(float, float, float, void *), ManifoldBox *bounds,
+
69 float edge_length, float level, float precision, void *ctx);
+
70
+
71// Manifold Vectors
+
72
+
73ManifoldManifoldVec *manifold_manifold_empty_vec(void *mem);
+
74ManifoldManifoldVec *manifold_manifold_vec(void *mem, size_t sz);
+
75void manifold_manifold_vec_reserve(ManifoldManifoldVec *ms, size_t sz);
+
76size_t manifold_manifold_vec_length(ManifoldManifoldVec *ms);
+
77ManifoldManifold *manifold_manifold_vec_get(void *mem, ManifoldManifoldVec *ms,
+
78 int idx);
+
79void manifold_manifold_vec_set(ManifoldManifoldVec *ms, int idx,
+
80 ManifoldManifold *m);
+
81void manifold_manifold_vec_push_back(ManifoldManifoldVec *ms,
+
82 ManifoldManifold *m);
+
83
+
84// Manifold Booleans
+
85
+
86ManifoldManifold *manifold_boolean(void *mem, ManifoldManifold *a,
+
87 ManifoldManifold *b, ManifoldOpType op);
+
88ManifoldManifold *manifold_batch_boolean(void *mem, ManifoldManifoldVec *ms,
+
89 ManifoldOpType op);
+
90ManifoldManifold *manifold_union(void *mem, ManifoldManifold *a,
+
91 ManifoldManifold *b);
+
92ManifoldManifold *manifold_difference(void *mem, ManifoldManifold *a,
+
93 ManifoldManifold *b);
+
94ManifoldManifold *manifold_intersection(void *mem, ManifoldManifold *a,
+
95 ManifoldManifold *b);
+
96ManifoldManifoldPair manifold_split(void *mem_first, void *mem_second,
+
97 ManifoldManifold *a, ManifoldManifold *b);
+
98ManifoldManifoldPair manifold_split_by_plane(void *mem_first, void *mem_second,
+
99 ManifoldManifold *m,
+
100 float normal_x, float normal_y,
+
101 float normal_z, float offset);
+
102ManifoldManifold *manifold_trim_by_plane(void *mem, ManifoldManifold *m,
+
103 float normal_x, float normal_y,
+
104 float normal_z, float offset);
+
105
+
106// 3D to 2D
+
107
+
108ManifoldPolygons *manifold_slice(void *mem, ManifoldManifold *m, float height);
+
109ManifoldPolygons *manifold_project(void *mem, ManifoldManifold *m);
+
110
+
111// Convex Hulls
+
112
+
113ManifoldManifold *manifold_hull(void *mem, ManifoldManifold *m);
+
114ManifoldManifold *manifold_batch_hull(void *mem, ManifoldManifoldVec *ms);
+
115ManifoldManifold *manifold_hull_pts(void *mem, ManifoldVec3 *ps, size_t length);
+
116
+
117// Manifold Transformations
+
118
+
119ManifoldManifold *manifold_translate(void *mem, ManifoldManifold *m, float x,
+
120 float y, float z);
+
121ManifoldManifold *manifold_rotate(void *mem, ManifoldManifold *m, float x,
+
122 float y, float z);
+
123ManifoldManifold *manifold_scale(void *mem, ManifoldManifold *m, float x,
+
124 float y, float z);
+
125ManifoldManifold *manifold_transform(void *mem, ManifoldManifold *m, float x1,
+
126 float y1, float z1, float x2, float y2,
+
127 float z2, float x3, float y3, float z3,
+
128 float x4, float y4, float z4);
+
129ManifoldManifold *manifold_mirror(void *mem, ManifoldManifold *m, float nx,
+
130 float ny, float nz);
+
131ManifoldManifold *manifold_warp(void *mem, ManifoldManifold *m,
+
132 ManifoldVec3 (*fun)(float, float, float,
+
133 void *),
+
134 void *ctx);
+
135ManifoldManifold *manifold_smooth_by_normals(void *mem, ManifoldManifold *m,
+
136 int normalIdx);
+
137ManifoldManifold *manifold_smooth_out(void *mem, ManifoldManifold *m,
+
138 float minSharpAngle, float minSmoothness);
+
139ManifoldManifold *manifold_refine(void *mem, ManifoldManifold *m, int refine);
+
140ManifoldManifold *manifold_refine_to_length(void *mem, ManifoldManifold *m,
+
141 float length);
+
142
+
143// Manifold Shapes / Constructors
+
144
+
145ManifoldManifold *manifold_empty(void *mem);
+
146ManifoldManifold *manifold_copy(void *mem, ManifoldManifold *m);
+
147ManifoldManifold *manifold_tetrahedron(void *mem);
+
148ManifoldManifold *manifold_cube(void *mem, float x, float y, float z,
+
149 int center);
+
150ManifoldManifold *manifold_cylinder(void *mem, float height, float radius_low,
+
151 float radius_high, int circular_segments,
+
152 int center);
+
153ManifoldManifold *manifold_sphere(void *mem, float radius,
+
154 int circular_segments);
+
155ManifoldManifold *manifold_of_meshgl(void *mem, ManifoldMeshGL *mesh);
+
156ManifoldManifold *manifold_smooth(void *mem, ManifoldMeshGL *mesh,
+
157 size_t *half_edges, float *smoothness,
+
158 size_t n_idxs);
+
159ManifoldManifold *manifold_extrude(void *mem, ManifoldPolygons *cs,
+
160 float height, int slices,
+
161 float twist_degrees, float scale_x,
+
162 float scale_y);
+
163ManifoldManifold *manifold_revolve(void *mem, ManifoldPolygons *cs,
+
164 int circular_segments);
+
165ManifoldManifold *manifold_compose(void *mem, ManifoldManifoldVec *ms);
+
166ManifoldManifoldVec *manifold_decompose(void *mem, ManifoldManifold *m);
+
167ManifoldManifold *manifold_as_original(void *mem, ManifoldManifold *m);
+
168
+
169// Manifold Info
+
170
+
171int manifold_is_empty(ManifoldManifold *m);
+
172ManifoldError manifold_status(ManifoldManifold *m);
+
173int manifold_num_vert(ManifoldManifold *m);
+
174int manifold_num_edge(ManifoldManifold *m);
+
175int manifold_num_tri(ManifoldManifold *m);
+
176ManifoldBox *manifold_bounding_box(void *mem, ManifoldManifold *m);
+
177float manifold_precision(ManifoldManifold *m);
+
178int manifold_genus(ManifoldManifold *m);
+
179ManifoldProperties manifold_get_properties(ManifoldManifold *m);
+
180int manifold_get_circular_segments(float radius);
+
181int manifold_original_id(ManifoldManifold *m);
+
182uint32_t manifold_reserve_ids(uint32_t n);
+
183ManifoldManifold *manifold_set_properties(
+
184 void *mem, ManifoldManifold *m, int num_prop,
+
185 void (*fun)(float *new_prop, ManifoldVec3 position, const float *old_prop,
+
186 void *ctx),
+
187 void *ctx);
+
188ManifoldManifold *manifold_calculate_curvature(void *mem, ManifoldManifold *m,
+
189 int gaussian_idx, int mean_idx);
+
190float manifold_min_gap(ManifoldManifold *m, ManifoldManifold *other,
+
191 float searchLength);
+
192ManifoldManifold *manifold_calculate_normals(void *mem, ManifoldManifold *m,
+
193 int normal_idx,
+
194 int min_sharp_angle);
+
195
+
196// CrossSection Shapes/Constructors
+
197
+
198ManifoldCrossSection *manifold_cross_section_empty(void *mem);
+
199ManifoldCrossSection *manifold_cross_section_copy(void *mem,
+
200 ManifoldCrossSection *cs);
+
201ManifoldCrossSection *manifold_cross_section_of_simple_polygon(
+
202 void *mem, ManifoldSimplePolygon *p, ManifoldFillRule fr);
+
203ManifoldCrossSection *manifold_cross_section_of_polygons(void *mem,
+
204 ManifoldPolygons *p,
+
205 ManifoldFillRule fr);
+
206ManifoldCrossSection *manifold_cross_section_square(void *mem, float x, float y,
+
207 int center);
+
208ManifoldCrossSection *manifold_cross_section_circle(void *mem, float radius,
+
209 int circular_segments);
+
210ManifoldCrossSection *manifold_cross_section_compose(
+
211 void *mem, ManifoldCrossSectionVec *csv);
+
212ManifoldCrossSectionVec *manifold_cross_section_decompose(
+
213 void *mem, ManifoldCrossSection *cs);
+
214
+
215// CrossSection Vectors
+
216
+
217ManifoldCrossSectionVec *manifold_cross_section_empty_vec(void *mem);
+
218ManifoldCrossSectionVec *manifold_cross_section_vec(void *mem, size_t sz);
+
219void manifold_cross_section_vec_reserve(ManifoldCrossSectionVec *csv,
+
220 size_t sz);
+
221size_t manifold_cross_section_vec_length(ManifoldCrossSectionVec *csv);
+
222ManifoldCrossSection *manifold_cross_section_vec_get(
+
223 void *mem, ManifoldCrossSectionVec *csv, int idx);
+
224void manifold_cross_section_vec_set(ManifoldCrossSectionVec *csv, int idx,
+
225 ManifoldCrossSection *cs);
+
226void manifold_cross_section_vec_push_back(ManifoldCrossSectionVec *csv,
+
227 ManifoldCrossSection *cs);
+
228
+
229// CrossSection Booleans
+
230
+
231ManifoldCrossSection *manifold_cross_section_boolean(void *mem,
+
232 ManifoldCrossSection *a,
+
233 ManifoldCrossSection *b,
+
234 ManifoldOpType op);
+
235ManifoldCrossSection *manifold_cross_section_batch_boolean(
+
236 void *mem, ManifoldCrossSectionVec *csv, ManifoldOpType op);
+
237ManifoldCrossSection *manifold_cross_section_union(void *mem,
+
238 ManifoldCrossSection *a,
+
239 ManifoldCrossSection *b);
+
240ManifoldCrossSection *manifold_cross_section_difference(
+
241 void *mem, ManifoldCrossSection *a, ManifoldCrossSection *b);
+
242ManifoldCrossSection *manifold_cross_section_intersection(
+
243 void *mem, ManifoldCrossSection *a, ManifoldCrossSection *b);
+
244
+
245// CrossSection Convex Hulls
+
246
+
247ManifoldCrossSection *manifold_cross_section_hull(void *mem,
+
248 ManifoldCrossSection *cs);
+
249ManifoldCrossSection *manifold_cross_section_batch_hull(
+
250 void *mem, ManifoldCrossSectionVec *css);
+
251ManifoldCrossSection *manifold_cross_section_hull_simple_polygon(
+
252 void *mem, ManifoldSimplePolygon *ps);
+
253ManifoldCrossSection *manifold_cross_section_hull_polygons(
+
254 void *mem, ManifoldPolygons *ps);
+
255
+
256// CrossSection Transformation
+
257
+
258ManifoldCrossSection *manifold_cross_section_translate(void *mem,
+
259 ManifoldCrossSection *cs,
+
260 float x, float y);
+
261ManifoldCrossSection *manifold_cross_section_rotate(void *mem,
+
262 ManifoldCrossSection *cs,
+
263 float deg);
+
264ManifoldCrossSection *manifold_cross_section_scale(void *mem,
+
265 ManifoldCrossSection *cs,
+
266 float x, float y);
+
267ManifoldCrossSection *manifold_cross_section_mirror(void *mem,
+
268 ManifoldCrossSection *cs,
+
269 float ax_x, float ax_y);
+
270ManifoldCrossSection *manifold_cross_section_transform(void *mem,
+
271 ManifoldCrossSection *cs,
+
272 float x1, float y1,
+
273 float x2, float y2,
+
274 float x3, float y3);
+
275ManifoldCrossSection *manifold_cross_section_warp(
+
276 void *mem, ManifoldCrossSection *cs, ManifoldVec2 (*fun)(float, float));
+
277ManifoldCrossSection *manifold_cross_section_warp_context(
+
278 void *mem, ManifoldCrossSection *cs,
+
279 ManifoldVec2 (*fun)(float, float, void *), void *ctx);
+
280ManifoldCrossSection *manifold_cross_section_simplify(void *mem,
+
281 ManifoldCrossSection *cs,
+
282 double epsilon);
+
283ManifoldCrossSection *manifold_cross_section_offset(
+
284 void *mem, ManifoldCrossSection *cs, double delta, ManifoldJoinType jt,
+
285 double miter_limit, int circular_segments);
+
286
+
287// CrossSection Info
+
288
+
289double manifold_cross_section_area(ManifoldCrossSection *cs);
+
290int manifold_cross_section_num_vert(ManifoldCrossSection *cs);
+
291int manifold_cross_section_num_contour(ManifoldCrossSection *cs);
+
292int manifold_cross_section_is_empty(ManifoldCrossSection *cs);
+
293ManifoldRect *manifold_cross_section_bounds(void *mem,
+
294 ManifoldCrossSection *cs);
+
295ManifoldPolygons *manifold_cross_section_to_polygons(void *mem,
+
296 ManifoldCrossSection *cs);
+
297
+
298// Rectangle
+
299
+
300ManifoldRect *manifold_rect(void *mem, float x1, float y1, float x2, float y2);
+
301ManifoldVec2 manifold_rect_min(ManifoldRect *r);
+
302ManifoldVec2 manifold_rect_max(ManifoldRect *r);
+
303ManifoldVec2 manifold_rect_dimensions(ManifoldRect *r);
+
304ManifoldVec2 manifold_rect_center(ManifoldRect *r);
+
305float manifold_rect_scale(ManifoldRect *r);
+
306int manifold_rect_contains_pt(ManifoldRect *r, float x, float y);
+
307int manifold_rect_contains_rect(ManifoldRect *a, ManifoldRect *b);
+
308void manifold_rect_include_pt(ManifoldRect *r, float x, float y);
+
309ManifoldRect *manifold_rect_union(void *mem, ManifoldRect *a, ManifoldRect *b);
+
310ManifoldRect *manifold_rect_transform(void *mem, ManifoldRect *r, float x1,
+
311 float y1, float x2, float y2, float x3,
+
312 float y3);
+
313ManifoldRect *manifold_rect_translate(void *mem, ManifoldRect *r, float x,
+
314 float y);
+
315ManifoldRect *manifold_rect_mul(void *mem, ManifoldRect *r, float x, float y);
+
316int manifold_rect_does_overlap_rect(ManifoldRect *a, ManifoldRect *r);
+
317int manifold_rect_is_empty(ManifoldRect *r);
+
318int manifold_rect_is_finite(ManifoldRect *r);
+
319
+
320// Bounding Box
+
321
+
322ManifoldBox *manifold_box(void *mem, float x1, float y1, float z1, float x2,
+
323 float y2, float z2);
+
324ManifoldVec3 manifold_box_min(ManifoldBox *b);
+
325ManifoldVec3 manifold_box_max(ManifoldBox *b);
+
326ManifoldVec3 manifold_box_dimensions(ManifoldBox *b);
+
327ManifoldVec3 manifold_box_center(ManifoldBox *b);
+
328float manifold_box_scale(ManifoldBox *b);
+
329int manifold_box_contains_pt(ManifoldBox *b, float x, float y, float z);
+
330int manifold_box_contains_box(ManifoldBox *a, ManifoldBox *b);
+
331void manifold_box_include_pt(ManifoldBox *b, float x, float y, float z);
+
332ManifoldBox *manifold_box_union(void *mem, ManifoldBox *a, ManifoldBox *b);
+
333ManifoldBox *manifold_box_transform(void *mem, ManifoldBox *b, float x1,
+
334 float y1, float z1, float x2, float y2,
+
335 float z2, float x3, float y3, float z3,
+
336 float x4, float y4, float z4);
+
337ManifoldBox *manifold_box_translate(void *mem, ManifoldBox *b, float x, float y,
+
338 float z);
+
339ManifoldBox *manifold_box_mul(void *mem, ManifoldBox *b, float x, float y,
+
340 float z);
+
341int manifold_box_does_overlap_pt(ManifoldBox *b, float x, float y, float z);
+
342int manifold_box_does_overlap_box(ManifoldBox *a, ManifoldBox *b);
+
343int manifold_box_is_finite(ManifoldBox *b);
+
344
+
345// Static Quality Globals
+
346
+
347void manifold_set_min_circular_angle(float degrees);
+
348void manifold_set_min_circular_edge_length(float length);
+
349void manifold_set_circular_segments(int number);
+
350
+
351// Manifold Mesh Extraction
+
352
+
353int manifold_meshgl_num_prop(ManifoldMeshGL *m);
+
354int manifold_meshgl_num_vert(ManifoldMeshGL *m);
+
355int manifold_meshgl_num_tri(ManifoldMeshGL *m);
+
356size_t manifold_meshgl_vert_properties_length(ManifoldMeshGL *m);
+
357size_t manifold_meshgl_tri_length(ManifoldMeshGL *m);
+
358size_t manifold_meshgl_merge_length(ManifoldMeshGL *m);
+
359size_t manifold_meshgl_run_index_length(ManifoldMeshGL *m);
+
360size_t manifold_meshgl_run_original_id_length(ManifoldMeshGL *m);
+
361size_t manifold_meshgl_run_transform_length(ManifoldMeshGL *m);
+
362size_t manifold_meshgl_face_id_length(ManifoldMeshGL *m);
+
363size_t manifold_meshgl_tangent_length(ManifoldMeshGL *m);
+
364float *manifold_meshgl_vert_properties(void *mem, ManifoldMeshGL *m);
+
365uint32_t *manifold_meshgl_tri_verts(void *mem, ManifoldMeshGL *m);
+
366uint32_t *manifold_meshgl_merge_from_vert(void *mem, ManifoldMeshGL *m);
+
367uint32_t *manifold_meshgl_merge_to_vert(void *mem, ManifoldMeshGL *m);
+
368uint32_t *manifold_meshgl_run_index(void *mem, ManifoldMeshGL *m);
+
369uint32_t *manifold_meshgl_run_original_id(void *mem, ManifoldMeshGL *m);
+
370float *manifold_meshgl_run_transform(void *mem, ManifoldMeshGL *m);
+
371uint32_t *manifold_meshgl_face_id(void *mem, ManifoldMeshGL *m);
+
372float *manifold_meshgl_halfedge_tangent(void *mem, ManifoldMeshGL *m);
+
373
+
374// memory size
+
375
+
376size_t manifold_manifold_size();
+
377size_t manifold_manifold_vec_size();
+
378size_t manifold_cross_section_size();
+
379size_t manifold_cross_section_vec_size();
+
380size_t manifold_simple_polygon_size();
+
381size_t manifold_polygons_size();
+
382size_t manifold_manifold_pair_size();
+
383size_t manifold_meshgl_size();
+
384size_t manifold_box_size();
+
385size_t manifold_rect_size();
+
386size_t manifold_curvature_size();
+
387
+
388// destruction
+
389
+
390void manifold_destruct_manifold(ManifoldManifold *m);
+
391void manifold_destruct_manifold_vec(ManifoldManifoldVec *ms);
+
392void manifold_destruct_cross_section(ManifoldCrossSection *m);
+
393void manifold_destruct_cross_section_vec(ManifoldCrossSectionVec *csv);
+
394void manifold_destruct_simple_polygon(ManifoldSimplePolygon *p);
+
395void manifold_destruct_polygons(ManifoldPolygons *p);
+
396void manifold_destruct_meshgl(ManifoldMeshGL *m);
+
397void manifold_destruct_box(ManifoldBox *b);
+
398void manifold_destruct_rect(ManifoldRect *b);
+
399
+
400// pointer free + destruction
+
401
+
402void manifold_delete_manifold(ManifoldManifold *m);
+
403void manifold_delete_manifold_vec(ManifoldManifoldVec *ms);
+
404void manifold_delete_cross_section(ManifoldCrossSection *cs);
+
405void manifold_delete_cross_section_vec(ManifoldCrossSectionVec *csv);
+
406void manifold_delete_simple_polygon(ManifoldSimplePolygon *p);
+
407void manifold_delete_polygons(ManifoldPolygons *p);
+
408void manifold_delete_meshgl(ManifoldMeshGL *m);
+
409void manifold_delete_box(ManifoldBox *b);
+
410void manifold_delete_rect(ManifoldRect *b);
+
411
+
412// MeshIO / Export
+
413
+
414#ifdef MANIFOLD_EXPORT
+
415ManifoldMaterial *manifold_material(void *mem);
+
416void manifold_material_set_roughness(ManifoldMaterial *mat, float roughness);
+
417void manifold_material_set_metalness(ManifoldMaterial *mat, float metalness);
+
418void manifold_material_set_color(ManifoldMaterial *mat, ManifoldVec4 color);
+
419void manifold_material_set_vert_color(ManifoldMaterial *mat,
+
420 ManifoldVec4 *vert_color, size_t n_vert);
+
421ManifoldExportOptions *manifold_export_options(void *mem);
+
422void manifold_export_options_set_faceted(ManifoldExportOptions *options,
+
423 int faceted);
+
424void manifold_export_options_set_material(ManifoldExportOptions *options,
+
425 ManifoldMaterial *mat);
+
426void manifold_export_meshgl(const char *filename, ManifoldMeshGL *mesh,
+
427 ManifoldExportOptions *options);
+
428ManifoldMeshGL *manifold_import_meshgl(void *mem, const char *filename,
+
429 int force_cleanup);
+
430
+
431size_t manifold_material_size();
+
432size_t manifold_export_options_size();
+
433
+
434void manifold_destruct_material(ManifoldMaterial *m);
+
435void manifold_destruct_export_options(ManifoldExportOptions *options);
+
436
+
437void manifold_delete_material(ManifoldMaterial *m);
+
438void manifold_delete_export_options(ManifoldExportOptions *options);
+
439#endif
+
440
+
441#ifdef __cplusplus
+
442}
+
443#endif
+
Definition types.h:38
+
Definition types.h:67
+
Definition types.h:43
+
Definition types.h:48
+
Definition types.h:60
+
+
+ + + + diff --git a/docs/html/md__c_o_n_t_r_i_b_u_t_i_n_g.html b/docs/html/md__c_o_n_t_r_i_b_u_t_i_n_g.html new file mode 100644 index 000000000..50665553e --- /dev/null +++ b/docs/html/md__c_o_n_t_r_i_b_u_t_i_n_g.html @@ -0,0 +1,123 @@ + + + + + + + +Manifold: How to Contribute + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
How to Contribute
+
+
+

We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.

+

+Contributor License Agreement

+

Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project. Head over to https://cla.developers.google.com/ to see your current agreements on file or to sign a new one.

+

You generally only need to submit a CLA once, so if you've already submitted one (even if it was for a different project), you probably don't need to do it again.

+

+Code Reviews

+

All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult GitHub Help for more information on using pull requests.

+

+Community Guidelines

+

This project follows Google's Open Source Community Guidelines.

+
+
+
+ + + + diff --git a/docs/html/md__r_e_l_e_a_s_e___c_h_e_c_k_l_i_s_t.html b/docs/html/md__r_e_l_e_a_s_e___c_h_e_c_k_l_i_s_t.html new file mode 100644 index 000000000..49b42dc5e --- /dev/null +++ b/docs/html/md__r_e_l_e_a_s_e___c_h_e_c_k_l_i_s_t.html @@ -0,0 +1,151 @@ + + + + + + + +Manifold: RELEASE_CHECKLIST + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RELEASE_CHECKLIST
+
+
+
    +
  1. Go through Github issues to verify bugs have been fixed and closed.
  2. +
+

Verify ManifoldCAD.org - check a few examples, run them, download a GLB and a 3MF.

    +
  1. Verify our three.js example is functional.
  2. +
+
    +
  1. Verify our model-viewer example is functional - select Union and Intersection.
  2. +
+
    +
  1. Verify make-manifold is functional. Try dropping DragonAttenuation.glb in and verify you can select "View Manifold GLB" and that the dragon is still present while the backdrop is removed. Download the GLB.
  2. +
+
    +
  1. Make a new branch called the version, e.g. v2.3.0.
  2. +
+
    +
  1. Use VSCode to search and replace the old version with the new - so far in test-cmake.sh, flake.nix, pyproject.toml, and package.json.
  2. +
+
    +
  1. Also update CMakeLists.txt version by searching for "set(MANIFOLD_VERSION_".
  2. +
+
    +
  1. Commit, push, open a PR, verify tests pass, merge.
  2. +
+
    +
  1. On Github, draft a new release, make a new tag with the version number, add release notes, and publish.
  2. +
+
    +
  1. Check the Actions and verify that both PyPI and npm publishing actions ran successfully.
  2. +
+
    +
  1. Verify the npm package looks good - unpacked size should be close to 1MB.
  2. +
+
    +
  1. Verify PyPI package looks good - a bunch of built distributions ranging from ~600kB to ~1.1MB.
  2. +
+
    +
  1. If there's a problem with release deployment, the release workflows can be triggered separately, manually for any branch, under the Actions tab.
  2. +
+
+
+
+ + + + diff --git a/docs/html/mesh__fixes_8h_source.html b/docs/html/mesh__fixes_8h_source.html new file mode 100644 index 000000000..69287d842 --- /dev/null +++ b/docs/html/mesh__fixes_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +Manifold: mesh_fixes.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
mesh_fixes.h
+
+
+
1#include "impl.h"
+
2
+
3namespace {
+
4using namespace manifold;
+
5
+
6inline int FlipHalfedge(int halfedge) {
+
7 const int tri = halfedge / 3;
+
8 const int vert = 2 - (halfedge - 3 * tri);
+
9 return 3 * tri + vert;
+
10}
+
11
+
12struct TransformNormals {
+
13 glm::mat3 transform;
+
14
+
15 glm::vec3 operator()(glm::vec3 normal) const {
+
16 normal = glm::normalize(transform * normal);
+
17 if (isnan(normal.x)) normal = glm::vec3(0.0f);
+
18 return normal;
+
19 }
+
20};
+
21
+
22struct TransformTangents {
+
23 VecView<glm::vec4> tangent;
+
24 const int edgeOffset;
+
25 const glm::mat3 transform;
+
26 const bool invert;
+
27 VecView<const glm::vec4> oldTangents;
+ +
29
+
30 void operator()(const int edgeOut) {
+
31 const int edgeIn =
+
32 invert ? halfedge[FlipHalfedge(edgeOut)].pairedHalfedge : edgeOut;
+
33 tangent[edgeOut + edgeOffset] = glm::vec4(
+
34 transform * glm::vec3(oldTangents[edgeIn]), oldTangents[edgeIn].w);
+
35 }
+
36};
+
37
+
38struct FlipTris {
+
39 VecView<Halfedge> halfedge;
+
40
+
41 void operator()(const int tri) {
+
42 std::swap(halfedge[3 * tri], halfedge[3 * tri + 2]);
+
43
+
44 for (const int i : {0, 1, 2}) {
+
45 std::swap(halfedge[3 * tri + i].startVert, halfedge[3 * tri + i].endVert);
+
46 halfedge[3 * tri + i].pairedHalfedge =
+
47 FlipHalfedge(halfedge[3 * tri + i].pairedHalfedge);
+
48 }
+
49 }
+
50};
+
51} // namespace
+
Definition vec_view.h:27
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/mesh_i_o_8h_source.html b/docs/html/mesh_i_o_8h_source.html new file mode 100644 index 000000000..d0bb7ad03 --- /dev/null +++ b/docs/html/mesh_i_o_8h_source.html @@ -0,0 +1,174 @@ + + + + + + + +Manifold: meshIO.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
meshIO.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <string>
+
17
+
18#include "manifold.h"
+
19
+
+
20namespace manifold {
+
21
+
+
30struct Material {
+
32 float roughness = 0.2;
+
34 float metalness = 1;
+
37 glm::vec4 color = glm::vec4(1.0f);
+
41 std::vector<glm::vec4> vertColor;
+
44 glm::ivec3 normalChannels = glm::ivec3(-1);
+
47 glm::ivec4 colorChannels = glm::ivec4(-1);
+
48};
+
+
49
+
+ +
56 bool faceted = true;
+ +
59};
+
+
60
+
61Mesh ImportMesh(const std::string& filename, bool forceCleanup = false);
+
62
+
63void ExportMesh(const std::string& filename, const Mesh& mesh,
+
64 const ExportOptions& options);
+
65
+
66void ExportMesh(const std::string& filename, const MeshGL& mesh,
+
67 const ExportOptions& options);
+
69} // namespace manifold
+
+
glm::ivec4 colorChannels
Definition meshIO.h:47
+
float roughness
Roughness value between 0 (shiny) and 1 (matte).
Definition meshIO.h:32
+
bool faceted
Definition meshIO.h:56
+
Material mat
PBR material properties.
Definition meshIO.h:58
+
std::vector< glm::vec4 > vertColor
Definition meshIO.h:41
+
float metalness
Metalness value, generally either 0 (dielectric) or 1 (metal).
Definition meshIO.h:34
+
glm::vec4 color
Definition meshIO.h:37
+
glm::ivec3 normalChannels
Definition meshIO.h:44
+
Mesh ImportMesh(const std::string &filename, bool forceCleanup=false)
Definition meshIO/src/meshio.cpp:115
+
void ExportMesh(const std::string &filename, const Mesh &mesh, const ExportOptions &options)
Definition meshIO/src/meshio.cpp:271
+
Definition meshIO.h:53
+
Definition meshIO.h:30
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/minus.svg b/docs/html/minus.svg new file mode 100644 index 000000000..f70d0c1a1 --- /dev/null +++ b/docs/html/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/minusd.svg b/docs/html/minusd.svg new file mode 100644 index 000000000..5f8e87962 --- /dev/null +++ b/docs/html/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacebricks.html b/docs/html/namespacebricks.html new file mode 100644 index 000000000..aa650e8f9 --- /dev/null +++ b/docs/html/namespacebricks.html @@ -0,0 +1,171 @@ + + + + + + + +Manifold: bricks Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
bricks Namespace Reference
+
+
+ + + + + + + + + + + + + + + + +

+Functions

brick ()
 
halfbrick ()
 
row (length)
 
wall (length, height, alternate=0)
 
walls (length, width, height)
 
floor (length, width)
 
run (width=10, length=10, height=10)
 
+ + + + + + + + + + + +

+Variables

+float INCHES = 25.4
 
+tuple brick_depth = (3 + 5 / 8) * INCHES
 
+tuple brick_height = (2 + 1 / 4) * INCHES
 
+tuple brick_length = (7 + 5 / 8) * INCHES
 
+tuple mortar_gap = (3 / 8) * INCHES
 
+

Detailed Description

+
 Copyright 2022 The Manifold Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ + + + diff --git a/docs/html/namespacecube__with__dents.html b/docs/html/namespacecube__with__dents.html new file mode 100644 index 000000000..9219988d1 --- /dev/null +++ b/docs/html/namespacecube__with__dents.html @@ -0,0 +1,134 @@ + + + + + + + +Manifold: cube_with_dents Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
cube_with_dents Namespace Reference
+
+
+ + + + +

+Functions

run (n=5, overlap=True)
 
+

Detailed Description

+
 Copyright 2022 The Manifold Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ + + + diff --git a/docs/html/namespacegyroid__module.html b/docs/html/namespacegyroid__module.html new file mode 100644 index 000000000..5b9fc3e60 --- /dev/null +++ b/docs/html/namespacegyroid__module.html @@ -0,0 +1,146 @@ + + + + + + + +Manifold: gyroid_module Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
gyroid_module Namespace Reference
+
+
+ + + + + + + + + + + + +

+Functions

gyroid (x, y, z)
 
gyroid_levelset (level, period, size, n)
 
rhombic_dodecahedron (size)
 
gyroid_module (size=20, n=15)
 
run (size=20, n=15)
 
+

Detailed Description

+
 Copyright 2023 The Manifold Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ + + + diff --git a/docs/html/namespacemanifold.html b/docs/html/namespacemanifold.html new file mode 100644 index 000000000..cd1605492 --- /dev/null +++ b/docs/html/namespacemanifold.html @@ -0,0 +1,718 @@ + + + + + + + +Manifold: manifold Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
manifold Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  Barycentric
 
class  Boolean3
 
struct  Box
 
class  Collider
 
class  ConcurrentSharedPtr
 
struct  CountingIterator
 
class  CrossSection
 
class  CsgLeafNode
 
class  CsgNode
 
class  CsgOpNode
 
struct  ExecutionParams
 
struct  ExportOptions
 
struct  geometryErr
 
struct  Halfedge
 
class  HashTable
 
class  HashTableD
 
struct  Identity
 
class  Manifold
 
struct  Material
 
struct  Mesh
 
struct  MeshGL
 
struct  Negate
 
struct  PathImpl
 
struct  PolyVert
 
struct  Properties
 
class  Quality
 
struct  Rect
 
struct  ReindexEdge
 
struct  Smoothness
 
class  SparseIndices
 
struct  StridedRange
 
struct  SVDSet
 
struct  Timer
 
struct  TmpEdge
 
struct  topologyErr
 
struct  TransformIterator
 
struct  TriRef
 
struct  UnionFind
 
struct  userErr
 
class  Vec
 
class  VecView
 
+ + + + + + + + + + + + + + + +

+Typedefs

+using GeneralTriangulation = std::function< std::vector< glm::ivec3 >(int)>
 
+using AddTriangle = std::function< void(int, glm::ivec3, glm::vec3, TriRef)>
 
+using SimplePolygonIdx = std::vector< PolyVert >
 
+using PolygonsIdx = std::vector< SimplePolygonIdx >
 
using SimplePolygon = std::vector< glm::vec2 >
 
using Polygons = std::vector< SimplePolygon >
 
+using logicErr = std::logic_error
 
+ + + + + + + +

+Enumerations

enum class  CsgNodeType { Union +, Intersection +, Difference +, Leaf + }
 
enum class  ExecutionPolicy { Par +, Seq + }
 
enum class  OpType { Add +, Subtract +, Intersect + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

Mesh ImportMesh (const std::string &filename, bool forceCleanup=false)
 
void ExportMesh (const std::string &filename, const Mesh &mesh, const ExportOptions &options)
 
void ExportMesh (const std::string &filename, const MeshGL &mesh, const ExportOptions &options)
 
Manifold TorusKnot (int p, int q, float majorRadius, float minorRadius, float threadRadius, int circularSegments=0, int linearSegments=0)
 
Manifold StretchyBracelet (float radius=30.0f, float height=8.0f, float width=15.0f, float thickness=0.4f, int nDecor=20, int nCut=27, int nDivision=30)
 
Manifold MengerSponge (int n=3)
 
Manifold RoundedFrame (float edgeLength, float radius, int circularSegments=0)
 
Manifold TetPuzzle (float edgeLength, float gap, int nDivisions)
 
Manifold Scallop ()
 
Manifold GyroidModule (float size=20, int n=20)
 
+Manifold CondensedMatter (int fn=16)
 
ExecutionParamsManifoldParams ()
 
+glm::vec3 SafeNormalize (glm::vec3 v)
 
+float MaxPrecision (float minPrecision, const Box &bBox)
 
+int NextHalfedge (int current)
 
+glm::mat3 NormalTransform (const glm::mat4x3 &transform)
 
glm::mat3x2 GetAxisAlignedProjection (glm::vec3 normal)
 
+glm::vec3 GetBarycentric (const glm::vec3 &v, const glm::mat3 &triPos, float precision)
 
+Vec< TmpEdgeCreateTmpEdges (const Vec< Halfedge > &halfedge)
 
+std::ostream & operator<< (std::ostream &stream, const Halfedge &edge)
 
+std::ostream & operator<< (std::ostream &stream, const Barycentric &bary)
 
+std::ostream & operator<< (std::ostream &stream, const TriRef &ref)
 
std::vector< glm::ivec3 > TriangulateIdx (const PolygonsIdx &polys, float precision)
 Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap, but will always return a manifold result that matches the input edge directions.
 
+template<typename T >
CountingIterator< T > countAt (T i)
 
+constexpr ExecutionPolicy autoPolicy (size_t size, size_t threshold=kSeqThreshold)
 
+template<typename Iter , typename Dummy = std::enable_if_t<!std::is_integral_v<Iter>>>
constexpr ExecutionPolicy autoPolicy (Iter first, Iter last, size_t threshold=kSeqThreshold)
 
+template<typename InputIter , typename OutputIter >
void copy (ExecutionPolicy policy, InputIter first, InputIter last, OutputIter d_first)
 
+template<typename InputIter , typename OutputIter >
void copy (InputIter first, InputIter last, OutputIter d_first)
 
+template<typename Iter , typename F >
void for_each (ExecutionPolicy policy, Iter first, Iter last, F f)
 
+template<typename Iter , typename F >
void for_each_n (ExecutionPolicy policy, Iter first, size_t n, F f)
 
+template<typename InputIter , typename BinaryOp , typename T = typename std::iterator_traits<InputIter>::value_type>
reduce (ExecutionPolicy policy, InputIter first, InputIter last, T init, BinaryOp f)
 
+template<typename InputIter , typename BinaryOp , typename T = typename std::iterator_traits<InputIter>::value_type>
reduce (InputIter first, InputIter last, T init, BinaryOp f)
 
+template<typename InputIter , typename BinaryOp , typename UnaryOp , typename T = std::invoke_result_t< UnaryOp, typename std::iterator_traits<InputIter>::value_type>>
transform_reduce (ExecutionPolicy policy, InputIter first, InputIter last, T init, BinaryOp f, UnaryOp g)
 
+template<typename InputIter , typename BinaryOp , typename UnaryOp , typename T = std::invoke_result_t< UnaryOp, typename std::iterator_traits<InputIter>::value_type>>
transform_reduce (InputIter first, InputIter last, T init, BinaryOp f, UnaryOp g)
 
+template<typename InputIter , typename OutputIter , typename T = typename std::iterator_traits<InputIter>::value_type>
void inclusive_scan (ExecutionPolicy policy, InputIter first, InputIter last, OutputIter d_first)
 
+template<typename InputIter , typename OutputIter , typename T = typename std::iterator_traits<InputIter>::value_type>
void inclusive_scan (InputIter first, InputIter last, OutputIter d_first)
 
+template<typename InputIter , typename OutputIter , typename BinOp = decltype(std::plus<typename std::iterator_traits< InputIter>::value_type>()), typename T = typename std::iterator_traits<InputIter>::value_type>
void exclusive_scan (ExecutionPolicy policy, InputIter first, InputIter last, OutputIter d_first, T init=static_cast< T >(0), BinOp f=std::plus< T >(), T identity=static_cast< T >(0))
 
+template<typename InputIter , typename OutputIter , typename BinOp = decltype(std::plus<typename std::iterator_traits< InputIter>::value_type>()), typename T = typename std::iterator_traits<InputIter>::value_type>
void exclusive_scan (InputIter first, InputIter last, OutputIter d_first, T init=static_cast< T >(0), BinOp f=std::plus< T >(), T identity=static_cast< T >(0))
 
+template<typename InputIter , typename OutputIter , typename F >
void transform (ExecutionPolicy policy, InputIter first, InputIter last, OutputIter d_first, F f)
 
+template<typename InputIter , typename OutputIter , typename F >
void transform (InputIter first, InputIter last, OutputIter d_first, F f)
 
+template<typename InputIter , typename OutputIter >
void copy_n (ExecutionPolicy policy, InputIter first, size_t n, OutputIter d_first)
 
+template<typename InputIter , typename OutputIter >
void copy_n (InputIter first, size_t n, OutputIter d_first)
 
+template<typename OutputIter , typename T >
void fill (ExecutionPolicy policy, OutputIter first, OutputIter last, T value)
 
+template<typename OutputIter , typename T >
void fill (OutputIter first, OutputIter last, T value)
 
+template<typename InputIter , typename P >
size_t count_if (ExecutionPolicy policy, InputIter first, InputIter last, P pred)
 
+template<typename InputIter , typename P >
size_t count_if (InputIter first, InputIter last, P pred)
 
+template<typename InputIter , typename P >
bool all_of (ExecutionPolicy policy, InputIter first, InputIter last, P pred)
 
+template<typename InputIter , typename P >
bool all_of (InputIter first, InputIter last, P pred)
 
+template<typename InputIter , typename OutputIter , typename P >
OutputIter copy_if (ExecutionPolicy policy, InputIter first, InputIter last, OutputIter d_first, P pred)
 
+template<typename InputIter , typename OutputIter , typename P >
OutputIter copy_if (InputIter first, InputIter last, OutputIter d_first, P pred)
 
+template<typename Iter , typename P , typename T = typename std::iterator_traits<Iter>::value_type>
Iter remove_if (ExecutionPolicy policy, Iter first, Iter last, P pred)
 
+template<typename Iter , typename P , typename T = typename std::iterator_traits<Iter>::value_type>
Iter remove_if (Iter first, Iter last, P pred)
 
+template<typename Iter , typename T = typename std::iterator_traits<Iter>::value_type>
Iter remove (ExecutionPolicy policy, Iter first, Iter last, T value)
 
+template<typename Iter , typename T = typename std::iterator_traits<Iter>::value_type>
Iter remove (Iter first, Iter last, T value)
 
+template<typename Iter , typename T = typename std::iterator_traits<Iter>::value_type>
Iter unique (ExecutionPolicy policy, Iter first, Iter last)
 
+template<typename Iter , typename T = typename std::iterator_traits<Iter>::value_type>
Iter unique (Iter first, Iter last)
 
+template<typename Iterator , typename T = typename std::iterator_traits<Iterator>::value_type>
void stable_sort (ExecutionPolicy policy, Iterator first, Iterator last)
 
+template<typename Iterator , typename T = typename std::iterator_traits<Iterator>::value_type>
void stable_sort (Iterator first, Iterator last)
 
+template<typename Iterator , typename T = typename std::iterator_traits<Iterator>::value_type, typename Comp = decltype(std::less<T>())>
void stable_sort (ExecutionPolicy policy, Iterator first, Iterator last, Comp comp)
 
+template<typename Iterator , typename T = typename std::iterator_traits<Iterator>::value_type, typename Comp = decltype(std::less<T>())>
void stable_sort (Iterator first, Iterator last, Comp comp)
 
+template<typename InputIterator1 , typename InputIterator2 , typename OutputIterator >
void scatter (ExecutionPolicy policy, InputIterator1 first, InputIterator1 last, InputIterator2 mapFirst, OutputIterator outputFirst)
 
+template<typename InputIterator1 , typename InputIterator2 , typename OutputIterator >
void scatter (InputIterator1 first, InputIterator1 last, InputIterator2 mapFirst, OutputIterator outputFirst)
 
+template<typename InputIterator , typename RandomAccessIterator , typename OutputIterator >
void gather (ExecutionPolicy policy, InputIterator mapFirst, InputIterator mapLast, RandomAccessIterator inputFirst, OutputIterator outputFirst)
 
+template<typename InputIterator , typename RandomAccessIterator , typename OutputIterator >
void gather (InputIterator mapFirst, InputIterator mapLast, RandomAccessIterator inputFirst, OutputIterator outputFirst)
 
+template<typename Iterator >
void sequence (ExecutionPolicy policy, Iterator first, Iterator last)
 
+template<typename Iterator >
void sequence (Iterator first, Iterator last)
 
constexpr std::size_t operator""_uz (unsigned long long n) noexcept
 
float sind (float x)
 
float cosd (float x)
 
glm::mat4x3 RotateUp (glm::vec3 up)
 
int CCW (glm::vec2 p0, glm::vec2 p1, glm::vec2 p2, float tol)
 
+template<typename T >
std::ostream & operator<< (std::ostream &stream, const glm::tvec2< T > &v)
 
+template<typename T >
std::ostream & operator<< (std::ostream &stream, const glm::tvec3< T > &v)
 
+template<typename T >
std::ostream & operator<< (std::ostream &stream, const glm::tvec4< T > &v)
 
+std::ostream & operator<< (std::ostream &stream, const glm::mat3 &mat)
 
+std::ostream & operator<< (std::ostream &stream, const glm::mat4x3 &mat)
 
+std::ostream & operator<< (std::ostream &stream, const Box &box)
 
+std::ostream & operator<< (std::ostream &stream, const Rect &box)
 
template<typename T >
void Dump (const std::vector< T > &vec)
 
+template<typename T >
void Diff (const std::vector< T > &a, const std::vector< T > &b)
 
SVDSet SVD (glm::mat3 A)
 
float SpectralNorm (glm::mat3 A)
 
void EdgeEdgeDist (glm::vec3 &x, glm::vec3 &y, const glm::vec3 &p, const glm::vec3 &a, const glm::vec3 &q, const glm::vec3 &b)
 
float DistanceTriangleTriangleSquared (const std::array< glm::vec3, 3 > &p, const std::array< glm::vec3, 3 > &q)
 
+int Next3 (int i)
 
+int Prev3 (int i)
 
+template<typename T , typename T1 >
void Permute (Vec< T > &inOut, const Vec< T1 > &new2Old)
 
+template<typename T , typename T1 >
void Permute (std::vector< T > &inOut, const Vec< T1 > &new2Old)
 
+template<typename T >
AtomicAdd (T &target, T add)
 
+template<>
int AtomicAdd (int &target, int add)
 
+ + + + + + + + + + + + + + + + +

+Variables

+constexpr size_t kSeqThreshold = 1e4
 
+constexpr float kTolerance = 1e-5
 
+constexpr int DEFAULT_SEGMENTS = 0
 
+constexpr float DEFAULT_ANGLE = 10.0f
 
+constexpr float DEFAULT_LENGTH = 1.0f
 
std::vector< glm::ivec3 > Triangulate (const Polygons &polygons, float precision)
 Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap, but will always return a manifold result that matches the input edge directions.
 
+ExecutionParamsPolygonParams ()
 
+

Detailed Description

+

The notation in these files is abbreviated due to the complexity of the functions involved. The key is that the input manifolds are P and Q, while the output is R, and these letters in both upper and lower case refer to these objects. Operations are based on dimensionality: vert: 0, edge: 1, face: 2, solid: 3. X denotes a winding-number type quantity from the source paper of this algorithm, while S is closely related but includes only the subset of X values which "shadow" (are on the correct side of).

+

Nearly everything here are sparse arrays, where for instance each pair in p2q1 refers to a face index of P interacting with a halfedge index of Q. Adjacent arrays like x21 refer to the values of X corresponding to each sparse index pair.

+

Note many functions are designed to work symmetrically, for instance for both p2q1 and p1q2. Inside of these functions P and Q are marked as though the function is forwards, but it may include a Boolean "reverse" that indicates P and Q have been swapped.

+

Function Documentation

+ +

◆ operator""_uz()

+ +
+
+ + + + + +
+ + + + + + + + +
constexpr std::size_t operator""_uz (unsigned long long n)
+
+constexprnoexcept
+
+

Stand-in for C++23's operator""uz (P0330R8)[https://wg21.link/P0330R8].

+ +
+
+ +

◆ EdgeEdgeDist()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void EdgeEdgeDist (glm::vec3 & x,
glm::vec3 & y,
const glm::vec3 & p,
const glm::vec3 & a,
const glm::vec3 & q,
const glm::vec3 & b 
)
+
+inline
+
+

Returns the distance between two line segments.

+
Parameters
+ + + + + + + +
[out]xClosest point on line segment pa.
[out]yClosest point on line segment qb.
[in]pOne endpoint of the first line segment.
[in]aOther endpoint of the first line segment.
[in]pOne endpoint of the second line segment.
[in]bOther endpoint of the second line segment.
+
+
+ +
+
+ +

◆ DistanceTriangleTriangleSquared()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float DistanceTriangleTriangleSquared (const std::array< glm::vec3, 3 > & p,
const std::array< glm::vec3, 3 > & q 
)
+
+inline
+
+

Returns the minimum squared distance between two triangles.

+
Parameters
+ + + +
pFirst triangle.
qSecond triangle.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html new file mode 100644 index 000000000..e94080fdb --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,136 @@ + + + + + + + +Manifold: Namespace Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+
+
+ + + + diff --git a/docs/html/namespacemembers_enum.html b/docs/html/namespacemembers_enum.html new file mode 100644 index 000000000..69c113014 --- /dev/null +++ b/docs/html/namespacemembers_enum.html @@ -0,0 +1,111 @@ + + + + + + + +Manifold: Namespace Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented namespace enums with links to the namespaces they belong to:
+
+
+ + + + diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html new file mode 100644 index 000000000..247c29e33 --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,133 @@ + + + + + + + +Manifold: Namespace Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented namespace functions with links to the namespaces they belong to:
+
+
+ + + + diff --git a/docs/html/namespacemembers_type.html b/docs/html/namespacemembers_type.html new file mode 100644 index 000000000..4e163d2b4 --- /dev/null +++ b/docs/html/namespacemembers_type.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: Namespace Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented namespace typedefs with links to the namespaces they belong to:
+
+
+ + + + diff --git a/docs/html/namespacerun__all.html b/docs/html/namespacerun__all.html new file mode 100644 index 000000000..31111c348 --- /dev/null +++ b/docs/html/namespacerun__all.html @@ -0,0 +1,184 @@ + + + + + + + +Manifold: run_all Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
run_all Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

current_file = pathlib.Path(__file__)
 
current_dir = current_file.parent
 
+list files = [f.parts[-1][:-3] for f in current_dir.glob("*.py") if f != current_file]
 
+int export_models = "-e"
 
module = importlib.import_module(f)
 
t0 = time()
 
model = module.run()
 
mesh = model.to_mesh()
 
vertices = mesh.vert_properties[:, :3]
 
+tuple colors = (mesh.vert_properties[:, 3:] * 255).astype(np.uint8)
 
 meshOut
 
t1 = time()
 
+

Detailed Description

+
 Copyright 2022 The Manifold Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.

Variable Documentation

+ +

◆ meshOut

+ +
+
+ + + + +
meshOut
+
+Initial value:
1= trimesh.Trimesh(
+
2 vertices=vertices, faces=mesh.tri_verts, vertex_colors=colors
+
3 )
+
+
+
+
+
+ + + + diff --git a/docs/html/namespacescallop.html b/docs/html/namespacescallop.html new file mode 100644 index 000000000..edb9ec303 --- /dev/null +++ b/docs/html/namespacescallop.html @@ -0,0 +1,134 @@ + + + + + + + +Manifold: scallop Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
scallop Namespace Reference
+
+
+ + + + +

+Functions

run ()
 
+

Detailed Description

+
 Copyright 2023 The Manifold Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ + + + diff --git a/docs/html/namespacesplit__cube.html b/docs/html/namespacesplit__cube.html new file mode 100644 index 000000000..79b8c6d5f --- /dev/null +++ b/docs/html/namespacesplit__cube.html @@ -0,0 +1,134 @@ + + + + + + + +Manifold: split_cube Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
split_cube Namespace Reference
+
+
+ + + + +

+Functions

run ()
 
+

Detailed Description

+
 Copyright 2022 The Manifold Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ + + + diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png new file mode 100644 index 000000000..72a58a529 Binary files /dev/null and b/docs/html/nav_f.png differ diff --git a/docs/html/nav_fd.png b/docs/html/nav_fd.png new file mode 100644 index 000000000..032fbdd4c Binary files /dev/null and b/docs/html/nav_fd.png differ diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png new file mode 100644 index 000000000..2093a237a Binary files /dev/null and b/docs/html/nav_g.png differ diff --git a/docs/html/nav_h.png b/docs/html/nav_h.png new file mode 100644 index 000000000..33389b101 Binary files /dev/null and b/docs/html/nav_h.png differ diff --git a/docs/html/nav_hd.png b/docs/html/nav_hd.png new file mode 100644 index 000000000..de80f18ad Binary files /dev/null and b/docs/html/nav_hd.png differ diff --git a/docs/html/navtree.css b/docs/html/navtree.css new file mode 100644 index 000000000..69211d4a7 --- /dev/null +++ b/docs/html/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/html/navtree.js b/docs/html/navtree.js new file mode 100644 index 000000000..93dd3d462 --- /dev/null +++ b/docs/html/navtree.js @@ -0,0 +1,559 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, setFocus) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +Manifold: optional_assert.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
optional_assert.h
+
+
+
1// Copyright 2022 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16
+
17#include "public.h"
+
18#ifdef MANIFOLD_EXCEPTIONS
+
19#include <stdexcept>
+
20#endif
+
21
+
22#ifdef MANIFOLD_DEBUG
+
23#include <iostream>
+
24#include <sstream>
+
25#include <string>
+
26
+
27template <typename Ex>
+
28void Assert(bool condition, const char* file, int line, const std::string& cond,
+
29 const std::string& msg) {
+
30 if (!condition) {
+
31 std::ostringstream output;
+
32 output << "Error in file: " << file << " (" << line << "): \'" << cond
+
33 << "\' is false: " << msg;
+
34 throw Ex(output.str());
+
35 }
+
36}
+
37#define DEBUG_ASSERT(condition, EX, msg) \
+
38 Assert<EX>(condition, __FILE__, __LINE__, #condition, msg);
+
39#else
+
40#define DEBUG_ASSERT(condition, EX, msg)
+
41#endif
+
42
+
43#ifdef MANIFOLD_EXCEPTIONS
+
44#define ASSERT(condition, EX) \
+
45 if (!(condition)) throw(EX);
+
46#else
+
47#define ASSERT(condition, EX)
+
48#endif
+
+
+ + + + diff --git a/docs/html/pages.html b/docs/html/pages.html new file mode 100644 index 000000000..efb32dda6 --- /dev/null +++ b/docs/html/pages.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Related Pages + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+
+
+ + + + diff --git a/docs/html/par_8h_source.html b/docs/html/par_8h_source.html new file mode 100644 index 000000000..a1daa0d95 --- /dev/null +++ b/docs/html/par_8h_source.html @@ -0,0 +1,1231 @@ + + + + + + + +Manifold: par.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
par.h
+
+
+
1// Copyright 2022 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14//
+
15// Simple implementation of selected functions in PSTL.
+
16// Iterators must be RandomAccessIterator.
+
17
+
18#pragma once
+
19#if MANIFOLD_PAR == 'T'
+
20#include <tbb/combinable.h>
+
21#include <tbb/parallel_for.h>
+
22#include <tbb/parallel_invoke.h>
+
23#include <tbb/parallel_reduce.h>
+
24#include <tbb/parallel_scan.h>
+
25#endif
+
26#include <algorithm>
+
27#include <numeric>
+
28
+
29#include "iters.h"
+
30#include "public.h"
+
31namespace manifold {
+
32
+
33enum class ExecutionPolicy {
+
34 Par,
+
35 Seq,
+
36};
+
37
+
38constexpr size_t kSeqThreshold = 1e4;
+
39// ExecutionPolicy:
+
40// - Sequential for small workload,
+
41// - Parallel (CPU) for medium workload,
+
42inline constexpr ExecutionPolicy autoPolicy(size_t size,
+
43 size_t threshold = kSeqThreshold) {
+
44 if (size <= threshold) {
+
45 return ExecutionPolicy::Seq;
+
46 }
+
47 return ExecutionPolicy::Par;
+
48}
+
49
+
50template <typename Iter,
+
51 typename Dummy = std::enable_if_t<!std::is_integral_v<Iter>>>
+
52inline constexpr ExecutionPolicy autoPolicy(Iter first, Iter last,
+
53 size_t threshold = kSeqThreshold) {
+
54 if (static_cast<size_t>(std::distance(first, last)) <= threshold) {
+
55 return ExecutionPolicy::Seq;
+
56 }
+
57 return ExecutionPolicy::Par;
+
58}
+
59
+
60template <typename InputIter, typename OutputIter>
+
61void copy(ExecutionPolicy policy, InputIter first, InputIter last,
+
62 OutputIter d_first);
+
63template <typename InputIter, typename OutputIter>
+
64void copy(InputIter first, InputIter last, OutputIter d_first);
+
65
+
66#if MANIFOLD_PAR == 'T'
+
67namespace details {
+
68using manifold::kSeqThreshold;
+
69// implementation from
+
70// https://duvanenko.tech.blog/2018/01/14/parallel-merge/
+
71// https://github.com/DragonSpit/ParallelAlgorithms
+
72// note that the ranges are now [p, r) to fit our convention.
+
73template <typename SrcIter, typename DestIter, typename Comp>
+
74void mergeRec(SrcIter src, DestIter dest, size_t p1, size_t r1, size_t p2,
+
75 size_t r2, size_t p3, Comp comp) {
+
76 size_t length1 = r1 - p1;
+
77 size_t length2 = r2 - p2;
+
78 if (length1 < length2) {
+
79 std::swap(p1, p2);
+
80 std::swap(r1, r2);
+
81 std::swap(length1, length2);
+
82 }
+
83 if (length1 == 0) return;
+
84 if (length1 + length2 <= kSeqThreshold) {
+
85 std::merge(src + p1, src + r1, src + p2, src + r2, dest + p3, comp);
+
86 } else {
+
87 size_t q1 = p1 + length1 / 2;
+
88 size_t q2 =
+
89 std::distance(src, std::lower_bound(src + p2, src + r2, src[q1], comp));
+
90 size_t q3 = p3 + (q1 - p1) + (q2 - p2);
+
91 dest[q3] = src[q1];
+
92 tbb::parallel_invoke(
+
93 [=] { mergeRec(src, dest, p1, q1, p2, q2, p3, comp); },
+
94 [=] { mergeRec(src, dest, q1 + 1, r1, q2, r2, q3 + 1, comp); });
+
95 }
+
96}
+
97
+
98template <typename SrcIter, typename DestIter, typename Comp>
+
99void mergeSortRec(SrcIter src, DestIter dest, size_t begin, size_t end,
+
100 Comp comp) {
+
101 size_t numElements = end - begin;
+
102 if (numElements <= kSeqThreshold) {
+
103 std::copy(src + begin, src + end, dest + begin);
+
104 std::stable_sort(dest + begin, dest + end, comp);
+
105 } else {
+
106 size_t middle = begin + numElements / 2;
+
107 tbb::parallel_invoke([=] { mergeSortRec(dest, src, begin, middle, comp); },
+
108 [=] { mergeSortRec(dest, src, middle, end, comp); });
+
109 mergeRec(src, dest, begin, middle, middle, end, begin, comp);
+
110 }
+
111}
+
112
+
113template <typename T, typename InputIter, typename OutputIter, typename BinOp>
+
114struct ScanBody {
+
115 T sum;
+
116 T identity;
+
117 BinOp &f;
+
118 InputIter input;
+
119 OutputIter output;
+
120
+
121 ScanBody(T sum, T identity, BinOp &f, InputIter input, OutputIter output)
+
122 : sum(sum), identity(identity), f(f), input(input), output(output) {}
+
123 ScanBody(ScanBody &b, tbb::split)
+
124 : sum(b.identity),
+
125 identity(b.identity),
+
126 f(b.f),
+
127 input(b.input),
+
128 output(b.output) {}
+
129 template <typename Tag>
+
130 void operator()(const tbb::blocked_range<size_t> &r, Tag) {
+
131 T temp = sum;
+
132 for (size_t i = r.begin(); i < r.end(); ++i) {
+
133 T inputTmp = input[i];
+
134 if (Tag::is_final_scan()) output[i] = temp;
+
135 temp = f(temp, inputTmp);
+
136 }
+
137 sum = temp;
+
138 }
+
139 T get_sum() const { return sum; }
+
140 void reverse_join(ScanBody &a) { sum = f(a.sum, sum); }
+
141 void assign(ScanBody &b) { sum = b.sum; }
+
142};
+
143
+
144template <typename InputIter, typename OutputIter, typename P>
+
145struct CopyIfScanBody {
+
146 size_t sum;
+
147 P &pred;
+
148 InputIter input;
+
149 OutputIter output;
+
150
+
151 CopyIfScanBody(P &pred, InputIter input, OutputIter output)
+
152 : sum(0), pred(pred), input(input), output(output) {}
+
153 CopyIfScanBody(CopyIfScanBody &b, tbb::split)
+
154 : sum(0), pred(b.pred), input(b.input), output(b.output) {}
+
155 template <typename Tag>
+
156 void operator()(const tbb::blocked_range<size_t> &r, Tag) {
+
157 size_t temp = sum;
+
158 for (size_t i = r.begin(); i < r.end(); ++i) {
+
159 if (pred(i)) {
+
160 temp += 1;
+
161 if (Tag::is_final_scan()) output[temp - 1] = input[i];
+
162 }
+
163 }
+
164 sum = temp;
+
165 }
+
166 size_t get_sum() const { return sum; }
+
167 void reverse_join(CopyIfScanBody &a) { sum = a.sum + sum; }
+
168 void assign(CopyIfScanBody &b) { sum = b.sum; }
+
169};
+
170
+
171template <typename N, const int K>
+
172struct Hist {
+
173 using SizeType = N;
+
174 static constexpr int k = K;
+
175 N hist[k][256] = {{0}};
+
176 void merge(const Hist<N, K> &other) {
+
177 for (int i = 0; i < k; ++i)
+
178 for (int j = 0; j < 256; ++j) hist[i][j] += other.hist[i][j];
+
179 }
+
180 void prefixSum(N total, bool *canSkip) {
+
181 for (int i = 0; i < k; ++i) {
+
182 size_t count = 0;
+
183 for (int j = 0; j < 256; ++j) {
+
184 N tmp = hist[i][j];
+
185 hist[i][j] = count;
+
186 count += tmp;
+
187 if (tmp == total) canSkip[i] = true;
+
188 }
+
189 }
+
190 }
+
191};
+
192
+
193template <typename T, typename H>
+
194void histogram(T *ptr, typename H::SizeType n, H &hist) {
+
195 auto worker = [](T *ptr, typename H::SizeType n, H &hist) {
+
196 for (typename H::SizeType i = 0; i < n; ++i)
+
197 for (int k = 0; k < hist.k; ++k)
+
198 ++hist.hist[k][(ptr[i] >> (8 * k)) & 0xFF];
+
199 };
+
200 if (n < kSeqThreshold) {
+
201 worker(ptr, n, hist);
+
202 } else {
+
203 tbb::combinable<H> store;
+
204 tbb::parallel_for(
+
205 tbb::blocked_range<typename H::SizeType>(0, n, kSeqThreshold),
+
206 [&worker, &store, ptr](const auto &r) {
+
207 worker(ptr + r.begin(), r.end() - r.begin(), store.local());
+
208 });
+
209 store.combine_each([&hist](const H &h) { hist.merge(h); });
+
210 }
+
211}
+
212
+
213template <typename T, typename H>
+
214void shuffle(T *src, T *target, typename H::SizeType n, H &hist, int k) {
+
215 for (typename H::SizeType i = 0; i < n; ++i)
+
216 target[hist.hist[k][(src[i] >> (8 * k)) & 0xFF]++] = src[i];
+
217}
+
218
+
219template <typename T, typename SizeType>
+
220bool LSB_radix_sort(T *input, T *tmp, SizeType n) {
+
221 Hist<SizeType, sizeof(T) / sizeof(char)> hist;
+
222 if (std::is_sorted(input, input + n)) return false;
+
223 histogram(input, n, hist);
+
224 bool canSkip[hist.k] = {0};
+
225 hist.prefixSum(n, canSkip);
+
226 T *a = input, *b = tmp;
+
227 for (int k = 0; k < hist.k; ++k) {
+
228 if (!canSkip[k]) {
+
229 shuffle(a, b, n, hist, k);
+
230 std::swap(a, b);
+
231 }
+
232 }
+
233 return a == tmp;
+
234}
+
235
+
236// LSB radix sort with merge
+
237template <typename T, typename SizeType>
+
238struct SortedRange {
+
239 T *input, *tmp;
+
240 SizeType offset = 0, length = 0;
+
241 bool inTmp = false;
+
242
+
243 SortedRange(T *input, T *tmp, SizeType offset = 0, SizeType length = 0)
+
244 : input(input), tmp(tmp), offset(offset), length(length) {}
+
245 SortedRange(SortedRange<T, SizeType> &r, tbb::split)
+
246 : input(r.input), tmp(r.tmp) {}
+
247 void operator()(const tbb::blocked_range<SizeType> &range) {
+
248 SortedRange<T, SizeType> rhs(input, tmp, range.begin(),
+
249 range.end() - range.begin());
+
250 rhs.inTmp =
+
251 LSB_radix_sort(input + rhs.offset, tmp + rhs.offset, rhs.length);
+
252 if (length == 0)
+
253 *this = rhs;
+
254 else
+
255 join(rhs);
+
256 }
+
257 bool swapBuffer() const {
+
258 T *src = input, *target = tmp;
+
259 if (inTmp) std::swap(src, target);
+
260 copy(src + offset, src + offset + length, target + offset);
+
261 return !inTmp;
+
262 }
+
263 void join(const SortedRange<T, SizeType> &rhs) {
+
264 if (inTmp != rhs.inTmp) {
+
265 if (length < rhs.length)
+
266 inTmp = swapBuffer();
+
267 else
+
268 rhs.swapBuffer();
+
269 }
+
270 T *src = input, *target = tmp;
+
271 if (inTmp) std::swap(src, target);
+
272 if (src[offset + length - 1] > src[rhs.offset]) {
+
273 mergeRec(src, target, offset, offset + length, rhs.offset,
+
274 rhs.offset + rhs.length, offset, std::less<T>());
+
275 inTmp = !inTmp;
+
276 }
+
277 length += rhs.length;
+
278 }
+
279};
+
280
+
281template <typename T, typename SizeTy>
+
282void radix_sort(T *input, SizeTy n) {
+
283 T *aux = new T[n];
+
284 SizeTy blockSize = std::max(n / tbb::this_task_arena::max_concurrency() / 4,
+
285 static_cast<SizeTy>(kSeqThreshold / sizeof(T)));
+
286 SortedRange<T, SizeTy> result(input, aux);
+
287 tbb::parallel_reduce(tbb::blocked_range<SizeTy>(0, n, blockSize), result);
+
288 if (result.inTmp) copy(aux, aux + n, input);
+
289 delete[] aux;
+
290}
+
291
+
292template <typename Iterator,
+
293 typename T = typename std::iterator_traits<Iterator>::value_type,
+
294 typename Comp = decltype(std::less<T>())>
+
295void mergeSort(ExecutionPolicy policy, Iterator first, Iterator last,
+
296 Comp comp) {
+
297#if MANIFOLD_PAR == 'T'
+
298 if (policy == ExecutionPolicy::Par) {
+
299 // apparently this prioritizes threads inside here?
+
300 tbb::this_task_arena::isolate([&] {
+
301 size_t length = std::distance(first, last);
+
302 T *tmp = new T[length];
+
303 copy(policy, first, last, tmp);
+
304 details::mergeSortRec(tmp, first, 0, length, comp);
+
305 delete[] tmp;
+
306 });
+
307 return;
+
308 }
+
309#endif
+
310 std::stable_sort(first, last, comp);
+
311}
+
312
+
313// stable_sort using merge sort.
+
314//
+
315// For simpler implementation, we do not support types that are not trivially
+
316// destructable.
+
317template <typename Iterator,
+
318 typename T = typename std::iterator_traits<Iterator>::value_type,
+
319 typename Dummy = void>
+
320struct SortFunctor {
+
321 void operator()(ExecutionPolicy policy, Iterator first, Iterator last) {
+
322 static_assert(
+
323 std::is_convertible_v<
+
324 typename std::iterator_traits<Iterator>::iterator_category,
+
325 std::random_access_iterator_tag>,
+
326 "You can only parallelize RandomAccessIterator.");
+
327 static_assert(std::is_trivially_destructible_v<T>,
+
328 "Our simple implementation does not support types that are "
+
329 "not trivially destructable.");
+
330 return mergeSort(policy, first, last, std::less<T>());
+
331 }
+
332};
+
333
+
334// stable_sort specialized with radix sort for integral types.
+
335// Typically faster than merge sort.
+
336template <typename Iterator, typename T>
+
337struct SortFunctor<
+
338 Iterator, T,
+
339 std::enable_if_t<
+
340 std::is_integral_v<T> &&
+
341 std::is_pointer_v<typename std::iterator_traits<Iterator>::pointer>>> {
+
342 void operator()(ExecutionPolicy policy, Iterator first, Iterator last) {
+
343 static_assert(
+
344 std::is_convertible_v<
+
345 typename std::iterator_traits<Iterator>::iterator_category,
+
346 std::random_access_iterator_tag>,
+
347 "You can only parallelize RandomAccessIterator.");
+
348 static_assert(std::is_trivially_destructible_v<T>,
+
349 "Our simple implementation does not support types that are "
+
350 "not trivially destructable.");
+
351#if MANIFOLD_PAR == 'T'
+
352 if (policy == ExecutionPolicy::Par) {
+
353 radix_sort(&*first, static_cast<size_t>(std::distance(first, last)));
+
354 return;
+
355 }
+
356#endif
+
357 stable_sort(policy, first, last, std::less<T>());
+
358 }
+
359};
+
360
+
361} // namespace details
+
362
+
363#endif
+
364
+
365// Applies the function `f` to each element in the range `[first, last)`
+
366template <typename Iter, typename F>
+
367void for_each(ExecutionPolicy policy, Iter first, Iter last, F f) {
+
368 static_assert(std::is_convertible_v<
+
369 typename std::iterator_traits<Iter>::iterator_category,
+
370 std::random_access_iterator_tag>,
+
371 "You can only parallelize RandomAccessIterator.");
+
372#if MANIFOLD_PAR == 'T'
+
373 if (policy == ExecutionPolicy::Par) {
+
374 tbb::parallel_for(tbb::blocked_range<Iter>(first, last),
+
375 [&f](const tbb::blocked_range<Iter> &range) {
+
376 for (Iter i = range.begin(); i != range.end(); i++)
+
377 f(*i);
+
378 });
+
379 return;
+
380 }
+
381#endif
+
382 std::for_each(first, last, f);
+
383}
+
384
+
385// Applies the function `f` to each element in the range `[first, last)`
+
386template <typename Iter, typename F>
+
387void for_each_n(ExecutionPolicy policy, Iter first, size_t n, F f) {
+
388 static_assert(std::is_convertible_v<
+
389 typename std::iterator_traits<Iter>::iterator_category,
+
390 std::random_access_iterator_tag>,
+
391 "You can only parallelize RandomAccessIterator.");
+
392 for_each(policy, first, first + n, f);
+
393}
+
394
+
395// Reduce the range `[first, last)` using a binary operation `f` with an initial
+
396// value `init`.
+
397//
+
398// The binary operation should be commutative and associative. Otherwise, the
+
399// result is non-deterministic.
+
400template <typename InputIter, typename BinaryOp,
+
401 typename T = typename std::iterator_traits<InputIter>::value_type>
+
402T reduce(ExecutionPolicy policy, InputIter first, InputIter last, T init,
+
403 BinaryOp f) {
+
404 static_assert(std::is_convertible_v<
+
405 typename std::iterator_traits<InputIter>::iterator_category,
+
406 std::random_access_iterator_tag>,
+
407 "You can only parallelize RandomAccessIterator.");
+
408#if MANIFOLD_PAR == 'T'
+
409 if (policy == ExecutionPolicy::Par) {
+
410 // should we use deterministic reduce here?
+
411 return tbb::parallel_reduce(
+
412 tbb::blocked_range<InputIter>(first, last, details::kSeqThreshold),
+
413 init,
+
414 [&f](const tbb::blocked_range<InputIter> &range, T value) {
+
415 return std::reduce(range.begin(), range.end(), value, f);
+
416 },
+
417 f);
+
418 }
+
419#endif
+
420 return std::reduce(first, last, init, f);
+
421}
+
422
+
423// Reduce the range `[first, last)` using a binary operation `f` with an initial
+
424// value `init`.
+
425//
+
426// The binary operation should be commutative and associative. Otherwise, the
+
427// result is non-deterministic.
+
428template <typename InputIter, typename BinaryOp,
+
429 typename T = typename std::iterator_traits<InputIter>::value_type>
+
430T reduce(InputIter first, InputIter last, T init, BinaryOp f) {
+
431 return reduce(autoPolicy(first, last, 1e5), first, last, init, f);
+
432}
+
433
+
434// Transform and reduce the range `[first, last)` by first applying a unary
+
435// function `g`, and then combining the results using a binary operation `f`
+
436// with an initial value `init`.
+
437//
+
438// The binary operation should be commutative and associative. Otherwise, the
+
439// result is non-deterministic.
+
440template <typename InputIter, typename BinaryOp, typename UnaryOp,
+
441 typename T = std::invoke_result_t<
+
442 UnaryOp, typename std::iterator_traits<InputIter>::value_type>>
+
443T transform_reduce(ExecutionPolicy policy, InputIter first, InputIter last,
+
444 T init, BinaryOp f, UnaryOp g) {
+
445 return reduce(policy, TransformIterator(first, g), TransformIterator(last, g),
+
446 init, f);
+
447}
+
448
+
449// Transform and reduce the range `[first, last)` by first applying a unary
+
450// function `g`, and then combining the results using a binary operation `f`
+
451// with an initial value `init`.
+
452//
+
453// The binary operation should be commutative and associative. Otherwise, the
+
454// result is non-deterministic.
+
455template <typename InputIter, typename BinaryOp, typename UnaryOp,
+
456 typename T = std::invoke_result_t<
+
457 UnaryOp, typename std::iterator_traits<InputIter>::value_type>>
+
458T transform_reduce(InputIter first, InputIter last, T init, BinaryOp f,
+
459 UnaryOp g) {
+
460 return manifold::reduce(TransformIterator(first, g),
+
461 TransformIterator(last, g), init, f);
+
462}
+
463
+
464// Compute the inclusive prefix sum for the range `[first, last)`
+
465// using the summation operator, and store the result in the range
+
466// starting from `d_first`.
+
467//
+
468// The input range `[first, last)` and
+
469// the output range `[d_first, d_first + last - first)`
+
470// must be equal or non-overlapping.
+
471template <typename InputIter, typename OutputIter,
+
472 typename T = typename std::iterator_traits<InputIter>::value_type>
+
473void inclusive_scan(ExecutionPolicy policy, InputIter first, InputIter last,
+
474 OutputIter d_first) {
+
475 static_assert(std::is_convertible_v<
+
476 typename std::iterator_traits<InputIter>::iterator_category,
+
477 std::random_access_iterator_tag>,
+
478 "You can only parallelize RandomAccessIterator.");
+
479 static_assert(
+
480 std::is_convertible_v<
+
481 typename std::iterator_traits<OutputIter>::iterator_category,
+
482 std::random_access_iterator_tag>,
+
483 "You can only parallelize RandomAccessIterator.");
+
484#if MANIFOLD_PAR == 'T'
+
485 if (policy == ExecutionPolicy::Par) {
+
486 tbb::parallel_scan(
+
487 tbb::blocked_range<size_t>(0, std::distance(first, last)),
+
488 static_cast<T>(0),
+
489 [&](const tbb::blocked_range<size_t> &range, T sum,
+
490 bool is_final_scan) {
+
491 T temp = sum;
+
492 for (size_t i = range.begin(); i < range.end(); ++i) {
+
493 temp = temp + first[i];
+
494 if (is_final_scan) d_first[i] = temp;
+
495 }
+
496 return temp;
+
497 },
+
498 std::plus<T>());
+
499 return;
+
500 }
+
501#endif
+
502 std::inclusive_scan(first, last, d_first);
+
503}
+
504
+
505// Compute the inclusive prefix sum for the range `[first, last)` using the
+
506// summation operator, and store the result in the range
+
507// starting from `d_first`.
+
508//
+
509// The input range `[first, last)` and
+
510// the output range `[d_first, d_first + last - first)`
+
511// must be equal or non-overlapping.
+
512template <typename InputIter, typename OutputIter,
+
513 typename T = typename std::iterator_traits<InputIter>::value_type>
+
514void inclusive_scan(InputIter first, InputIter last, OutputIter d_first) {
+
515 return inclusive_scan(autoPolicy(first, last, 1e5), first, last, d_first);
+
516}
+
517
+
518// Compute the inclusive prefix sum for the range `[first, last)` using the
+
519// binary operator `f`, with initial value `init` and
+
520// identity element `identity`, and store the result in the range
+
521// starting from `d_first`.
+
522//
+
523// This is different from `exclusive_scan` in the sequential algorithm by
+
524// requiring an identity element. This is needed so that each block can be
+
525// scanned in parallel and combined later.
+
526//
+
527// The input range `[first, last)` and
+
528// the output range `[d_first, d_first + last - first)`
+
529// must be equal or non-overlapping.
+
530template <typename InputIter, typename OutputIter,
+
531 typename BinOp = decltype(std::plus<typename std::iterator_traits<
+
532 InputIter>::value_type>()),
+
533 typename T = typename std::iterator_traits<InputIter>::value_type>
+
534void exclusive_scan(ExecutionPolicy policy, InputIter first, InputIter last,
+
535 OutputIter d_first, T init = static_cast<T>(0),
+
536 BinOp f = std::plus<T>(), T identity = static_cast<T>(0)) {
+
537 static_assert(std::is_convertible_v<
+
538 typename std::iterator_traits<InputIter>::iterator_category,
+
539 std::random_access_iterator_tag>,
+
540 "You can only parallelize RandomAccessIterator.");
+
541 static_assert(
+
542 std::is_convertible_v<
+
543 typename std::iterator_traits<OutputIter>::iterator_category,
+
544 std::random_access_iterator_tag>,
+
545 "You can only parallelize RandomAccessIterator.");
+
546#if MANIFOLD_PAR == 'T'
+
547 if (policy == ExecutionPolicy::Par) {
+
548 details::ScanBody<T, InputIter, OutputIter, BinOp> body(init, identity, f,
+
549 first, d_first);
+
550 tbb::parallel_scan(
+
551 tbb::blocked_range<size_t>(0, std::distance(first, last)), body);
+
552 return;
+
553 }
+
554#endif
+
555 std::exclusive_scan(first, last, d_first, init, f);
+
556}
+
557
+
558// Compute the inclusive prefix sum for the range `[first, last)` using the
+
559// binary operator `f`, with initial value `init` and
+
560// identity element `identity`, and store the result in the range
+
561// starting from `d_first`.
+
562//
+
563// This is different from `exclusive_scan` in the sequential algorithm by
+
564// requiring an identity element. This is needed so that each block can be
+
565// scanned in parallel and combined later.
+
566//
+
567// The input range `[first, last)` and
+
568// the output range `[d_first, d_first + last - first)`
+
569// must be equal or non-overlapping.
+
570template <typename InputIter, typename OutputIter,
+
571 typename BinOp = decltype(std::plus<typename std::iterator_traits<
+
572 InputIter>::value_type>()),
+
573 typename T = typename std::iterator_traits<InputIter>::value_type>
+
574void exclusive_scan(InputIter first, InputIter last, OutputIter d_first,
+
575 T init = static_cast<T>(0), BinOp f = std::plus<T>(),
+
576 T identity = static_cast<T>(0)) {
+
577 exclusive_scan(autoPolicy(first, last, 1e5), first, last, d_first, init, f,
+
578 identity);
+
579}
+
580
+
581// Apply function `f` on the input range `[first, last)` and store the result in
+
582// the range starting from `d_first`.
+
583//
+
584// The input range `[first, last)` and
+
585// the output range `[d_first, d_first + last - first)`
+
586// must be equal or non-overlapping.
+
587template <typename InputIter, typename OutputIter, typename F>
+
588void transform(ExecutionPolicy policy, InputIter first, InputIter last,
+
589 OutputIter d_first, F f) {
+
590 static_assert(std::is_convertible_v<
+
591 typename std::iterator_traits<InputIter>::iterator_category,
+
592 std::random_access_iterator_tag>,
+
593 "You can only parallelize RandomAccessIterator.");
+
594 static_assert(
+
595 std::is_convertible_v<
+
596 typename std::iterator_traits<OutputIter>::iterator_category,
+
597 std::random_access_iterator_tag>,
+
598 "You can only parallelize RandomAccessIterator.");
+
599#if MANIFOLD_PAR == 'T'
+
600 if (policy == ExecutionPolicy::Par) {
+
601 tbb::parallel_for(
+
602 tbb::blocked_range<size_t>(
+
603 0_uz, static_cast<size_t>(std::distance(first, last))),
+
604 [&](const tbb::blocked_range<size_t> &range) {
+
605 std::transform(first + range.begin(), first + range.end(),
+
606 d_first + range.begin(), f);
+
607 });
+
608 return;
+
609 }
+
610#endif
+
611 std::transform(first, last, d_first, f);
+
612}
+
613
+
614// Apply function `f` on the input range `[first, last)` and store the result in
+
615// the range starting from `d_first`.
+
616//
+
617// The input range `[first, last)` and
+
618// the output range `[d_first, d_first + last - first)`
+
619// must be equal or non-overlapping.
+
620template <typename InputIter, typename OutputIter, typename F>
+
621void transform(InputIter first, InputIter last, OutputIter d_first, F f) {
+
622 transform(autoPolicy(first, last, 1e5), first, last, d_first, f);
+
623}
+
624
+
625// Copy the input range `[first, last)` to the output range
+
626// starting from `d_first`.
+
627//
+
628// The input range `[first, last)` and
+
629// the output range `[d_first, d_first + last - first)`
+
630// must not overlap.
+
631template <typename InputIter, typename OutputIter>
+
632void copy(ExecutionPolicy policy, InputIter first, InputIter last,
+
633 OutputIter d_first) {
+
634 static_assert(std::is_convertible_v<
+
635 typename std::iterator_traits<InputIter>::iterator_category,
+
636 std::random_access_iterator_tag>,
+
637 "You can only parallelize RandomAccessIterator.");
+
638 static_assert(
+
639 std::is_convertible_v<
+
640 typename std::iterator_traits<OutputIter>::iterator_category,
+
641 std::random_access_iterator_tag>,
+
642 "You can only parallelize RandomAccessIterator.");
+
643#if MANIFOLD_PAR == 'T'
+
644 if (policy == ExecutionPolicy::Par) {
+
645 tbb::parallel_for(tbb::blocked_range<size_t>(
+
646 0_uz, static_cast<size_t>(std::distance(first, last)),
+
647 details::kSeqThreshold),
+
648 [&](const tbb::blocked_range<size_t> &range) {
+
649 std::copy(first + range.begin(), first + range.end(),
+
650 d_first + range.begin());
+
651 });
+
652 return;
+
653 }
+
654#endif
+
655 std::copy(first, last, d_first);
+
656}
+
657
+
658// Copy the input range `[first, last)` to the output range
+
659// starting from `d_first`.
+
660//
+
661// The input range `[first, last)` and
+
662// the output range `[d_first, d_first + last - first)`
+
663// must not overlap.
+
664template <typename InputIter, typename OutputIter>
+
665void copy(InputIter first, InputIter last, OutputIter d_first) {
+
666 copy(autoPolicy(first, last, 1e6), first, last, d_first);
+
667}
+
668
+
669// Copy the input range `[first, first + n)` to the output range
+
670// starting from `d_first`.
+
671//
+
672// The input range `[first, first + n)` and
+
673// the output range `[d_first, d_first + n)`
+
674// must not overlap.
+
675template <typename InputIter, typename OutputIter>
+
676void copy_n(ExecutionPolicy policy, InputIter first, size_t n,
+
677 OutputIter d_first) {
+
678 copy(policy, first, first + n, d_first);
+
679}
+
680
+
681// Copy the input range `[first, first + n)` to the output range
+
682// starting from `d_first`.
+
683//
+
684// The input range `[first, first + n)` and
+
685// the output range `[d_first, d_first + n)`
+
686// must not overlap.
+
687template <typename InputIter, typename OutputIter>
+
688void copy_n(InputIter first, size_t n, OutputIter d_first) {
+
689 copy(autoPolicy(n, 1e6), first, first + n, d_first);
+
690}
+
691
+
692// Fill the range `[first, last)` with `value`.
+
693template <typename OutputIter, typename T>
+
694void fill(ExecutionPolicy policy, OutputIter first, OutputIter last, T value) {
+
695 static_assert(
+
696 std::is_convertible_v<
+
697 typename std::iterator_traits<OutputIter>::iterator_category,
+
698 std::random_access_iterator_tag>,
+
699 "You can only parallelize RandomAccessIterator.");
+
700#if MANIFOLD_PAR == 'T'
+
701 if (policy == ExecutionPolicy::Par) {
+
702 tbb::parallel_for(tbb::blocked_range<OutputIter>(first, last),
+
703 [&](const tbb::blocked_range<OutputIter> &range) {
+
704 std::fill(range.begin(), range.end(), value);
+
705 });
+
706 return;
+
707 }
+
708#endif
+
709 std::fill(first, last, value);
+
710}
+
711
+
712// Fill the range `[first, last)` with `value`.
+
713template <typename OutputIter, typename T>
+
714void fill(OutputIter first, OutputIter last, T value) {
+
715 fill(autoPolicy(first, last, 5e5), first, last, value);
+
716}
+
717
+
718// Count the number of elements in the input range `[first, last)` satisfying
+
719// predicate `pred`, i.e. `pred(x) == true`.
+
720template <typename InputIter, typename P>
+
721size_t count_if(ExecutionPolicy policy, InputIter first, InputIter last,
+
722 P pred) {
+
723#if MANIFOLD_PAR == 'T'
+
724 if (policy == ExecutionPolicy::Par) {
+
725 return reduce(policy, TransformIterator(first, pred),
+
726 TransformIterator(last, pred), 0_uz, std::plus<size_t>());
+
727 }
+
728#endif
+
729 return std::count_if(first, last, pred);
+
730}
+
731
+
732// Count the number of elements in the input range `[first, last)` satisfying
+
733// predicate `pred`, i.e. `pred(x) == true`.
+
734template <typename InputIter, typename P>
+
735size_t count_if(InputIter first, InputIter last, P pred) {
+
736 return count_if(autoPolicy(first, last, 1e4), first, last, pred);
+
737}
+
738
+
739// Check if all elements in the input range `[first, last)` satisfy
+
740// predicate `pred`, i.e. `pred(x) == true`.
+
741template <typename InputIter, typename P>
+
742bool all_of(ExecutionPolicy policy, InputIter first, InputIter last, P pred) {
+
743 static_assert(std::is_convertible_v<
+
744 typename std::iterator_traits<InputIter>::iterator_category,
+
745 std::random_access_iterator_tag>,
+
746 "You can only parallelize RandomAccessIterator.");
+
747#if MANIFOLD_PAR == 'T'
+
748 if (policy == ExecutionPolicy::Par) {
+
749 // should we use deterministic reduce here?
+
750 return tbb::parallel_reduce(
+
751 tbb::blocked_range<InputIter>(first, last), true,
+
752 [&](const tbb::blocked_range<InputIter> &range, bool value) {
+
753 if (!value) return false;
+
754 for (InputIter i = range.begin(); i != range.end(); i++)
+
755 if (!pred(*i)) return false;
+
756 return true;
+
757 },
+
758 [](bool a, bool b) { return a && b; });
+
759 }
+
760#endif
+
761 return std::all_of(first, last, pred);
+
762}
+
763
+
764// Check if all elements in the input range `[first, last)` satisfy
+
765// predicate `pred`, i.e. `pred(x) == true`.
+
766template <typename InputIter, typename P>
+
767bool all_of(InputIter first, InputIter last, P pred) {
+
768 return all_of(autoPolicy(first, last, 1e5), first, last, pred);
+
769}
+
770
+
771// Copy values in the input range `[first, last)` to the output range
+
772// starting from `d_first` that satisfies the predicate `pred`,
+
773// i.e. `pred(x) == true`, and returns `d_first + n` where `n` is the number of
+
774// times the predicate is evaluated to true.
+
775//
+
776// This function is stable, meaning that the relative order of elements in the
+
777// output range remains unchanged.
+
778//
+
779// The input range `[first, last)` and
+
780// the output range `[d_first, d_first + last - first)`
+
781// must not overlap.
+
782template <typename InputIter, typename OutputIter, typename P>
+
783OutputIter copy_if(ExecutionPolicy policy, InputIter first, InputIter last,
+
784 OutputIter d_first, P pred) {
+
785 static_assert(std::is_convertible_v<
+
786 typename std::iterator_traits<InputIter>::iterator_category,
+
787 std::random_access_iterator_tag>,
+
788 "You can only parallelize RandomAccessIterator.");
+
789 static_assert(
+
790 std::is_convertible_v<
+
791 typename std::iterator_traits<OutputIter>::iterator_category,
+
792 std::random_access_iterator_tag>,
+
793 "You can only parallelize RandomAccessIterator.");
+
794#if MANIFOLD_PAR == 'T'
+
795 if (policy == ExecutionPolicy::Par) {
+
796 auto pred2 = [&](size_t i) { return pred(first[i]); };
+
797 details::CopyIfScanBody body(pred2, first, d_first);
+
798 tbb::parallel_scan(
+
799 tbb::blocked_range<size_t>(0, std::distance(first, last)), body);
+
800 return d_first + body.get_sum();
+
801 }
+
802#endif
+
803 return std::copy_if(first, last, d_first, pred);
+
804}
+
805
+
806// Copy values in the input range `[first, last)` to the output range
+
807// starting from `d_first` that satisfies the predicate `pred`, i.e. `pred(x) ==
+
808// true`, and returns `d_first + n` where `n` is the number of times the
+
809// predicate is evaluated to true.
+
810//
+
811// This function is stable, meaning that the relative order of elements in the
+
812// output range remains unchanged.
+
813//
+
814// The input range `[first, last)` and
+
815// the output range `[d_first, d_first + last - first)`
+
816// must not overlap.
+
817template <typename InputIter, typename OutputIter, typename P>
+
818OutputIter copy_if(InputIter first, InputIter last, OutputIter d_first,
+
819 P pred) {
+
820 return copy_if(autoPolicy(first, last, 1e5), first, last, d_first, pred);
+
821}
+
822
+
823// Remove values in the input range `[first, last)` that satisfies
+
824// the predicate `pred`, i.e. `pred(x) == true`, and returns `first + n`
+
825// where `n` is the number of times the predicate is evaluated to false.
+
826//
+
827// This function is stable, meaning that the relative order of elements that
+
828// remained are unchanged.
+
829//
+
830// Only trivially destructable types are supported.
+
831template <typename Iter, typename P,
+
832 typename T = typename std::iterator_traits<Iter>::value_type>
+
833Iter remove_if(ExecutionPolicy policy, Iter first, Iter last, P pred) {
+
834 static_assert(std::is_convertible_v<
+
835 typename std::iterator_traits<Iter>::iterator_category,
+
836 std::random_access_iterator_tag>,
+
837 "You can only parallelize RandomAccessIterator.");
+
838 static_assert(std::is_trivially_destructible_v<T>,
+
839 "Our simple implementation does not support types that are "
+
840 "not trivially destructable.");
+
841#if MANIFOLD_PAR == 'T'
+
842 if (policy == ExecutionPolicy::Par) {
+
843 T *tmp = new T[std::distance(first, last)];
+
844 auto back =
+
845 copy_if(policy, first, last, tmp, [&](T v) { return !pred(v); });
+
846 copy(policy, tmp, back, first);
+
847 auto d = std::distance(tmp, back);
+
848 delete[] tmp;
+
849 return first + d;
+
850 }
+
851#endif
+
852 return std::remove_if(first, last, pred);
+
853}
+
854
+
855// Remove values in the input range `[first, last)` that satisfies
+
856// the predicate `pred`, i.e. `pred(x) == true`, and
+
857// returns `first + n` where `n` is the number of times the predicate is
+
858// evaluated to false.
+
859//
+
860// This function is stable, meaning that the relative order of elements that
+
861// remained are unchanged.
+
862//
+
863// Only trivially destructable types are supported.
+
864template <typename Iter, typename P,
+
865 typename T = typename std::iterator_traits<Iter>::value_type>
+
866Iter remove_if(Iter first, Iter last, P pred) {
+
867 return remove_if(autoPolicy(first, last, 1e4), first, last, pred);
+
868}
+
869
+
870// Remove values in the input range `[first, last)` that are equal to `value`.
+
871// Returns `first + n` where `n` is the number of values
+
872// that are not equal to `value`.
+
873//
+
874// This function is stable, meaning that the relative order of elements that
+
875// remained are unchanged.
+
876//
+
877// Only trivially destructable types are supported.
+
878template <typename Iter,
+
879 typename T = typename std::iterator_traits<Iter>::value_type>
+
880Iter remove(ExecutionPolicy policy, Iter first, Iter last, T value) {
+
881 static_assert(std::is_convertible_v<
+
882 typename std::iterator_traits<Iter>::iterator_category,
+
883 std::random_access_iterator_tag>,
+
884 "You can only parallelize RandomAccessIterator.");
+
885 static_assert(std::is_trivially_destructible_v<T>,
+
886 "Our simple implementation does not support types that are "
+
887 "not trivially destructable.");
+
888#if MANIFOLD_PAR == 'T'
+
889 if (policy == ExecutionPolicy::Par) {
+
890 T *tmp = new T[std::distance(first, last)];
+
891 auto back =
+
892 copy_if(policy, first, last, tmp, [&](T v) { return v != value; });
+
893 copy(policy, tmp, back, first);
+
894 auto d = std::distance(tmp, back);
+
895 delete[] tmp;
+
896 return first + d;
+
897 }
+
898#endif
+
899 return std::remove(first, last, value);
+
900}
+
901
+
902// Remove values in the input range `[first, last)` that are equal to `value`.
+
903// Returns `first + n` where `n` is the number of values
+
904// that are not equal to `value`.
+
905//
+
906// This function is stable, meaning that the relative order of elements that
+
907// remained are unchanged.
+
908//
+
909// Only trivially destructable types are supported.
+
910template <typename Iter,
+
911 typename T = typename std::iterator_traits<Iter>::value_type>
+
912Iter remove(Iter first, Iter last, T value) {
+
913 return remove(autoPolicy(first, last, 1e4), first, last, value);
+
914}
+
915
+
916// For each group of consecutive elements in the range `[first, last)` with the
+
917// same value, unique removes all but the first element of the group. The return
+
918// value is an iterator `new_last` such that no two consecutive elements in the
+
919// range `[first, new_last)` are equal.
+
920//
+
921// This function is stable, meaning that the relative order of elements that
+
922// remained are unchanged.
+
923//
+
924// Only trivially destructable types are supported.
+
925template <typename Iter,
+
926 typename T = typename std::iterator_traits<Iter>::value_type>
+
927Iter unique(ExecutionPolicy policy, Iter first, Iter last) {
+
928 static_assert(std::is_convertible_v<
+
929 typename std::iterator_traits<Iter>::iterator_category,
+
930 std::random_access_iterator_tag>,
+
931 "You can only parallelize RandomAccessIterator.");
+
932 static_assert(std::is_trivially_destructible_v<T>,
+
933 "Our simple implementation does not support types that are "
+
934 "not trivially destructable.");
+
935#if MANIFOLD_PAR == 'T'
+
936 if (policy == ExecutionPolicy::Par && first != last) {
+
937 Iter newSrcStart = first;
+
938 // cap the maximum buffer size, proved to be beneficial for unique with huge
+
939 // array size
+
940 constexpr size_t MAX_BUFFER_SIZE = 1 << 16;
+
941 T *tmp = new T[std::min(MAX_BUFFER_SIZE,
+
942 static_cast<size_t>(std::distance(first, last)))];
+
943 auto pred = [&](size_t i) { return tmp[i] != tmp[i + 1]; };
+
944 do {
+
945 size_t length =
+
946 std::min(MAX_BUFFER_SIZE,
+
947 static_cast<size_t>(std::distance(newSrcStart, last)));
+
948 copy(policy, newSrcStart, newSrcStart + length, tmp);
+
949 *first = *newSrcStart;
+
950 // this is not a typo, the index i is offset by 1, so to compare an
+
951 // element with its predecessor we need to compare i and i + 1.
+
952 details::CopyIfScanBody body(pred, tmp + 1, first + 1);
+
953 tbb::parallel_scan(tbb::blocked_range<size_t>(0, length - 1), body);
+
954 first += body.get_sum() + 1;
+
955 newSrcStart += length;
+
956 } while (newSrcStart != last);
+
957 delete[] tmp;
+
958 return first;
+
959 }
+
960#endif
+
961 return std::unique(first, last);
+
962}
+
963
+
964// For each group of consecutive elements in the range `[first, last)` with the
+
965// same value, unique removes all but the first element of the group. The return
+
966// value is an iterator `new_last` such that no two consecutive elements in the
+
967// range `[first, new_last)` are equal.
+
968//
+
969// This function is stable, meaning that the relative order of elements that
+
970// remained are unchanged.
+
971//
+
972// Only trivially destructable types are supported.
+
973template <typename Iter,
+
974 typename T = typename std::iterator_traits<Iter>::value_type>
+
975Iter unique(Iter first, Iter last) {
+
976 return unique(autoPolicy(first, last, 1e4), first, last);
+
977}
+
978
+
979// Sort the input range `[first, last)` in ascending order.
+
980//
+
981// This function is stable, meaning that the relative order of elements that are
+
982// incomparable remains unchanged.
+
983//
+
984// Only trivially destructable types are supported.
+
985template <typename Iterator,
+
986 typename T = typename std::iterator_traits<Iterator>::value_type>
+
987void stable_sort(ExecutionPolicy policy, Iterator first, Iterator last) {
+
988#if MANIFOLD_PAR == 'T'
+
989 details::SortFunctor<Iterator, T>()(policy, first, last);
+
990#else
+
991 std::stable_sort(first, last);
+
992#endif
+
993}
+
994
+
995// Sort the input range `[first, last)` in ascending order.
+
996//
+
997// This function is stable, meaning that the relative order of elements that are
+
998// incomparable remains unchanged.
+
999//
+
1000// Only trivially destructable types are supported.
+
1001template <typename Iterator,
+
1002 typename T = typename std::iterator_traits<Iterator>::value_type>
+
1003void stable_sort(Iterator first, Iterator last) {
+
1004 stable_sort(autoPolicy(first, last, 1e4), first, last);
+
1005}
+
1006
+
1007// Sort the input range `[first, last)` in ascending order using the comparison
+
1008// function `comp`.
+
1009//
+
1010// This function is stable, meaning that the relative order of elements that are
+
1011// incomparable remains unchanged.
+
1012//
+
1013// Only trivially destructable types are supported.
+
1014template <typename Iterator,
+
1015 typename T = typename std::iterator_traits<Iterator>::value_type,
+
1016 typename Comp = decltype(std::less<T>())>
+
1017void stable_sort(ExecutionPolicy policy, Iterator first, Iterator last,
+
1018 Comp comp) {
+
1019#if MANIFOLD_PAR == 'T'
+
1020 details::mergeSort(policy, first, last, comp);
+
1021#else
+
1022 std::stable_sort(first, last, comp);
+
1023#endif
+
1024}
+
1025
+
1026// Sort the input range `[first, last)` in ascending order using the comparison
+
1027// function `comp`.
+
1028//
+
1029// This function is stable, meaning that the relative order of elements that are
+
1030// incomparable remains unchanged.
+
1031//
+
1032// Only trivially destructable types are supported.
+
1033template <typename Iterator,
+
1034 typename T = typename std::iterator_traits<Iterator>::value_type,
+
1035 typename Comp = decltype(std::less<T>())>
+
1036void stable_sort(Iterator first, Iterator last, Comp comp) {
+
1037 stable_sort(autoPolicy(first, last, 1e4), first, last, comp);
+
1038}
+
1039
+
1040// `scatter` copies elements from a source range into an output array according
+
1041// to a map. For each iterator `i` in the range `[first, last)`, the value `*i`
+
1042// is assigned to `outputFirst[mapFirst[i - first]]`. If the same index appears
+
1043// more than once in the range `[mapFirst, mapFirst + (last - first))`, the
+
1044// result is undefined.
+
1045//
+
1046// The map range, input range and the output range must not overlap.
+
1047template <typename InputIterator1, typename InputIterator2,
+
1048 typename OutputIterator>
+
1049void scatter(ExecutionPolicy policy, InputIterator1 first, InputIterator1 last,
+
1050 InputIterator2 mapFirst, OutputIterator outputFirst) {
+
1051 for_each(policy, countAt(0_uz),
+
1052 countAt(static_cast<size_t>(std::distance(first, last))),
+
1053 [first, mapFirst, outputFirst](size_t i) {
+
1054 outputFirst[mapFirst[i]] = first[i];
+
1055 });
+
1056}
+
1057
+
1058// `scatter` copies elements from a source range into an output array according
+
1059// to a map. For each iterator `i` in the range `[first, last)`, the value `*i`
+
1060// is assigned to `outputFirst[mapFirst[i - first]]`. If the same index appears
+
1061// more than once in the range `[mapFirst, mapFirst + (last - first))`,
+
1062// the result is undefined.
+
1063//
+
1064// The map range, input range and the output range must not overlap.
+
1065template <typename InputIterator1, typename InputIterator2,
+
1066 typename OutputIterator>
+
1067void scatter(InputIterator1 first, InputIterator1 last, InputIterator2 mapFirst,
+
1068 OutputIterator outputFirst) {
+
1069 scatter(autoPolicy(first, last, 1e5), first, last, mapFirst, outputFirst);
+
1070}
+
1071
+
1072// `gather` copies elements from a source array into a destination range
+
1073// according to a map. For each input iterator `i`
+
1074// in the range `[mapFirst, mapLast)`, the value `inputFirst[*i]`
+
1075// is assigned to `outputFirst[i - map_first]`.
+
1076//
+
1077// The map range, input range and the output range must not overlap.
+
1078template <typename InputIterator, typename RandomAccessIterator,
+
1079 typename OutputIterator>
+
1080void gather(ExecutionPolicy policy, InputIterator mapFirst,
+
1081 InputIterator mapLast, RandomAccessIterator inputFirst,
+
1082 OutputIterator outputFirst) {
+
1083 for_each(policy, countAt(0_uz),
+
1084 countAt(static_cast<size_t>(std::distance(mapFirst, mapLast))),
+
1085 [mapFirst, inputFirst, outputFirst](size_t i) {
+
1086 outputFirst[i] = inputFirst[mapFirst[i]];
+
1087 });
+
1088}
+
1089
+
1090// `gather` copies elements from a source array into a destination range
+
1091// according to a map. For each input iterator `i`
+
1092// in the range `[mapFirst, mapLast)`, the value `inputFirst[*i]`
+
1093// is assigned to `outputFirst[i - map_first]`.
+
1094//
+
1095// The map range, input range and the output range must not overlap.
+
1096template <typename InputIterator, typename RandomAccessIterator,
+
1097 typename OutputIterator>
+
1098void gather(InputIterator mapFirst, InputIterator mapLast,
+
1099 RandomAccessIterator inputFirst, OutputIterator outputFirst) {
+
1100 gather(autoPolicy(std::distance(mapFirst, mapLast), 1e5), mapFirst, mapLast,
+
1101 inputFirst, outputFirst);
+
1102}
+
1103
+
1104// Write `[0, last - first)` to the range `[first, last)`.
+
1105template <typename Iterator>
+
1106void sequence(ExecutionPolicy policy, Iterator first, Iterator last) {
+
1107 for_each(policy, countAt(0_uz),
+
1108 countAt(static_cast<size_t>(std::distance(first, last))),
+
1109 [first](size_t i) { first[i] = i; });
+
1110}
+
1111
+
1112// Write `[0, last - first)` to the range `[first, last)`.
+
1113template <typename Iterator>
+
1114void sequence(Iterator first, Iterator last) {
+
1115 sequence(autoPolicy(first, last, 1e5), first, last);
+
1116}
+
1117
+
1118} // namespace manifold
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/plus.svg b/docs/html/plus.svg new file mode 100644 index 000000000..075201655 --- /dev/null +++ b/docs/html/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/plusd.svg b/docs/html/plusd.svg new file mode 100644 index 000000000..0c65bfe94 --- /dev/null +++ b/docs/html/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/polygon_8h_source.html b/docs/html/polygon_8h_source.html new file mode 100644 index 000000000..5b0579bf9 --- /dev/null +++ b/docs/html/polygon_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +Manifold: polygon.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
polygon.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <functional>
+
17
+
18#include "public.h"
+
19
+
20namespace manifold {
+
21
+
+
29struct PolyVert {
+
31 glm::vec2 pos;
+
33 int idx;
+
34};
+
+
35
+
36using SimplePolygonIdx = std::vector<PolyVert>;
+
37using PolygonsIdx = std::vector<SimplePolygonIdx>;
+
38
+
39std::vector<glm::ivec3> TriangulateIdx(const PolygonsIdx &polys,
+
40 float precision = -1);
+
46std::vector<glm::ivec3> Triangulate(const Polygons &polygons,
+
47 float precision = -1);
+
48
+
49ExecutionParams &PolygonParams();
+
51} // namespace manifold
+
std::vector< glm::ivec3 > Triangulate(const Polygons &polygons, float precision=-1)
Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap,...
Definition polygon.cpp:1004
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
Definition public.h:619
+
glm::vec2 pos
X-Y position.
Definition polygon.h:31
+
int idx
ID or index into another vertex vector.
Definition polygon.h:33
+
std::vector< glm::ivec3 > TriangulateIdx(const PolygonsIdx &polys, float precision=-1)
Triangulates a set of ε-valid polygons. If the input is not ε-valid, the triangulation may overlap,...
Definition polygon.cpp:954
+
Definition polygon.h:29
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/polygon__corpus_8cpp_source.html b/docs/html/polygon__corpus_8cpp_source.html new file mode 100644 index 000000000..becb1eebd --- /dev/null +++ b/docs/html/polygon__corpus_8cpp_source.html @@ -0,0 +1,2328 @@ + + + + + + + +Manifold: polygon_corpus.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
polygon_corpus.cpp
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15// Note that this file is shared between the standard polygon test and fuzzer
+
16// seed.
+
17
+
23TEST(Polygon, SimpleHole) {
+
24 Polygons polys;
+
25 polys.push_back({
+
26 {0, -2}, //
+
27 {2, 2}, //
+
28 {0, 4}, //
+
29 {-3, 3}, //
+
30 });
+
31 polys.push_back({
+
32 {0, -1}, //
+
33 {-1, 1}, //
+
34 {1, 1}, //
+
35 });
+
36 TestPoly(polys, 7);
+
37}
+
38
+
39TEST(Polygon, SimpleHole2) {
+
40 Polygons polys;
+
41 polys.push_back({
+
42 {0, 1.63299}, //
+
43 {-1.41421, -0.816496}, //
+
44 {1.41421, -0.816496}, //
+
45 });
+
46 polys.push_back({
+
47 {0, 1.02062}, //
+
48 {0.883883, -0.51031}, //
+
49 {-0.883883, -0.51031}, //
+
50 });
+
51 TestPoly(polys, 6);
+
52}
+
53
+
54TEST(Polygon, MultiMerge) {
+
55 Polygons polys;
+
56 polys.push_back({
+
57 {-7, 0}, //
+
58 {-6, 3}, //
+
59 {-5, 1}, //
+
60 {-4, 6}, //
+
61 {-3, 2}, //
+
62 {-2, 5}, //
+
63 {-1, 4}, //
+
64 {0, 12}, //
+
65 {-6, 10}, //
+
66 {-8, 11}, //
+
67 });
+
68 polys.push_back({
+
69 {-5, 7}, //
+
70 {-6, 8}, //
+
71 {-5, 9}, //
+
72 });
+
73 TestPoly(polys, 13);
+
74}
+
75
+
76TEST(Polygon, SimpleHoles) {
+
77 Polygons polys;
+
78 polys.push_back({
+
79 {-0.277777791, 0.376543224}, //
+
80 {0.5, -0.233333275}, //
+
81 {0.285185158, 0.214814827}, //
+
82 });
+
83 polys.push_back({
+
84 {0.325617313, -0.055555556}, //
+
85 {0.277777791, 0.092592679}, //
+
86 {0.328042328, 0.0608465709}, //
+
87 });
+
88 polys.push_back({
+
89 {0.212963, 0.092592597}, //
+
90 {0.203703716, 0.141975299}, //
+
91 {0.212962985, 0.138888896}, //
+
92 });
+
93 TestPoly(polys, 11);
+
94}
+
95
+
96TEST(Polygon, SimpleHoles2) {
+
97 Polygons polys;
+
98 polys.push_back({
+
99 {-0.0185185187, 0.5}, //
+
100 {-0.5, 0.49253732}, //
+
101 {0.166666672, 0.0370370671}, //
+
102 {0.0617283992, 0.438271612}, //
+
103 });
+
104 polys.push_back({
+
105 {-0.179012358, 0.448559672}, //
+
106 {-0.179012358, 0.438271612}, //
+
107 {-0.188271582, 0.438271612}, //
+
108 });
+
109 polys.push_back({
+
110 {-0.413580239, 0.45679009}, //
+
111 {-0.401234567, 0.448559672}, //
+
112 {-0.401234567, 0.438271612}, //
+
113 });
+
114 polys.push_back({
+
115 {0.0308641978, 0.450617284}, //
+
116 {0.0432098769, 0.450617284}, //
+
117 {0.0493827164, 0.438271612}, //
+
118 });
+
119 TestPoly(polys, 17);
+
120}
+
121
+
122TEST(Polygon, Looping1) {
+
123 Polygons polys;
+
124 polys.push_back({
+
125 {0.f, -2.f}, //
+
126 {2.f, 2.f}, //
+
127 {0.f, 4.f}, //
+
128 {-3.f, 3.f}, //
+
129 });
+
130 polys.push_back({
+
131 {1.40282347e+38f, 1.40282347e+38f}, //
+
132 {-0.f, 0.f}, //
+
133 {0.f, 1.f}, //
+
134 {1.f, 0.f}, //
+
135 });
+
136 polys.push_back({
+
137 {0.f, -1.f}, //
+
138 {-1.f, 1.f}, //
+
139 {1.f, 1.f}, //
+
140 });
+
141 TestPoly(polys, 5);
+
142}
+
143
+
144TEST(Polygon, Looping2) {
+
145 Polygons polys;
+
146 polys.push_back({
+
147 {-0.277777791f, 0.376543224f}, //
+
148 {0.5f, -0.233333275f}, //
+
149 {0.285185158f, 0.214814827f}, //
+
150 });
+
151 polys.push_back({
+
152 {0.325617313f, -0.055555556f}, //
+
153 {0.277777791f, 0.092592679f}, //
+
154 {0.328042328f, 0.0608465709f}, //
+
155 });
+
156 polys.push_back({
+
157 {3.40282347e+38f, 0.283553332f}, //
+
158 {0.212963f, 0.092592597f}, //
+
159 {0.203703716f, 0.141975299f}, //
+
160 {0.212962985f, 0.138888896f}, //
+
161 });
+
162 TestPoly(polys, 4);
+
163}
+
164
+
165TEST(Polygon, AlignedHoles) {
+
166 Polygons polys;
+
167 polys.push_back({
+
168 {-0.391621143, 0.5}, //
+
169 {0.5, -0.305555522}, //
+
170 {0.5, -0.0629629567}, //
+
171 {0.214285731, 0.285714298}, //
+
172 });
+
173 polys.push_back({
+
174 {-0.174897119, 0.403292179}, //
+
175 {-0.179012358, 0.395061731}, //
+
176 {-0.19135803, 0.407407403}, //
+
177 });
+
178 polys.push_back({
+
179 {0.325617313, -0.055555556}, //
+
180 {0.277777791, -0.055555556}, //
+
181 {0.314176232, 0.0747126788}, //
+
182 });
+
183 polys.push_back({
+
184 {0.339506179, -0.0740740374}, //
+
185 {0.339506179, -0.0833333284}, //
+
186 {0.327160507, -0.0802469105}, //
+
187 });
+
188 polys.push_back({
+
189 {0.364197522, -0.129629627}, //
+
190 {0.314814836, -0.0802469477}, //
+
191 {0.351851851, -0.092592597}, //
+
192 });
+
193 polys.push_back({
+
194 {0.302469134, -0.0679012388}, //
+
195 {0.30864194, -0.0802469105}, //
+
196 {0.302469134, -0.0833332911}, //
+
197 });
+
198 TestPoly(polys, 27);
+
199}
+
200
+
201TEST(Polygon, Outers) {
+
202 Polygons polys;
+
203 polys.push_back({
+
204 {-4.95815706, 4.55738497}, //
+
205 {-4.85924578, 4.65629625}, //
+
206 {-4.85924578, 4.65629625}, //
+
207 {-4.91438103, 4.64493704}, //
+
208 {-4.91438103, 4.64493704}, //
+
209 {-4.95815706, 4.65629625}, //
+
210 {-4.95815706, 4.65629625}, //
+
211 {-4.95815706, 4.65629625}, //
+
212 });
+
213 polys.push_back({
+
214 {-4.95815706, 4.95815706}, //
+
215 {-4.95815706, 4.85725117}, //
+
216 {-4.95815706, 4.85725117}, //
+
217 {-4.95815706, 4.85725117}, //
+
218 {-4.95815706, 4.95815706}, //
+
219 {-4.90248775, 4.9224453}, //
+
220 {-4.87105799, 4.95158386}, //
+
221 {-4.87105799, 4.95158386}, //
+
222 {-4.85925102, 4.95815706}, //
+
223 });
+
224 polys.push_back({
+
225 {-4.55738497, 4.95815706}, //
+
226 {-4.65629101, 4.95815706}, //
+
227 {-4.65105772, 4.95158339}, //
+
228 {-4.64647388, 4.89330769}, //
+
229 {-4.64647388, 4.89330769}, //
+
230 {-4.65829086, 4.85725117}, //
+
231 {-4.65829086, 4.85725117}, //
+
232 });
+
233 TestPoly(polys, 18);
+
234}
+
235
+
236TEST(Polygon, Holes) {
+
237 Polygons polys;
+
238 polys.push_back({
+
239 {0.462962955, -0.5}, //
+
240 {0.462962955, 0.129629627}, //
+
241 {0.432784647, -0.314814836}, //
+
242 {0.462962955, -0.316186577}, //
+
243 {0.461591214, -0.351851851}, //
+
244 {0.431412905, -0.351851851}, //
+
245 {0.428669423, -0.42592594}, //
+
246 {0.462962955, -0.427297682}, //
+
247 {0.42592594, -0.5}, //
+
248 });
+
249 polys.push_back({
+
250 {0.438271612, -0.413122982}, //
+
251 {0.438728869, -0.401234567}, //
+
252 {0.450617284, -0.401691824}, //
+
253 });
+
254 polys.push_back({
+
255 {0.438271612, -0.302011877}, //
+
256 {0.438728869, -0.290123463}, //
+
257 {0.450617284, -0.29058072}, //
+
258 });
+
259 TestPoly(polys, 17);
+
260}
+
261
+
262TEST(Polygon, Holes2) {
+
263 Polygons polys;
+
264 polys.push_back({
+
265 {31.5, -40.5}, //
+
266 {31.5, 24.5602417}, //
+
267 {29.4397583, 22.5}, //
+
268 {28.5, 7.5}, //
+
269 {24.5602417, -22.5}, //
+
270 {31.5, -31.5}, //
+
271 {23.5843372, -31.5}, //
+
272 });
+
273 polys.push_back({
+
274 {30.5, -6.27108431}, //
+
275 {29.5, -5.72891569}, //
+
276 {30.2710838, -5.5}, //
+
277 });
+
278 polys.push_back({
+
279 {30.5, 18.5}, //
+
280 {29.5, 17.5}, //
+
281 {29.5, 18.5}, //
+
282 });
+
283 polys.push_back({
+
284 {30.5, 20.7289162}, //
+
285 {29.5, 21.2710838}, //
+
286 {30.2710838, 21.5}, //
+
287 });
+
288 TestPoly(polys, 20);
+
289};
+
290
+
291TEST(Polygon, Holes3) {
+
292 Polygons polys;
+
293 polys.push_back({
+
294 {0.154320985, 0.438271612}, //
+
295 {0.0802469105, 0.216049403}, //
+
296 {0.0555555634, 0.166666672}, //
+
297 {-0.166666672, -0.5}, //
+
298 {0.166666672, -0.5}, //
+
299 });
+
300 polys.push_back({
+
301 {0.141975313, -0.187242806}, //
+
302 {0.146090537, -0.179012358}, //
+
303 {0.154320985, -0.183127582}, //
+
304 });
+
305 polys.push_back({
+
306 {-0.00617283955, -0.187242806}, //
+
307 {-0.00205761334, -0.179012358}, //
+
308 {0.00617283955, -0.183127582}, //
+
309 });
+
310 polys.push_back({
+
311 {0.0679012388, 0.19135803}, //
+
312 {0.0802469105, 0.19135803}, //
+
313 {0.0802469105, 0.179012358}, //
+
314 });
+
315 polys.push_back({
+
316 {0.104938269, 0.257201672}, //
+
317 {0.104938269, 0.265432119}, //
+
318 {0.117283955, 0.265432119}, //
+
319 });
+
320 TestPoly(polys, 23);
+
321};
+
322
+
323TEST(Polygon, Holes4) {
+
324 Polygons polys;
+
325 polys.push_back({
+
326 {0.166666672, 0.5}, //
+
327 {0.129629627, 0.314814836}, //
+
328 {0.0802469105, 0.216049403}, //
+
329 {0.0555555634, 0.166666672}, //
+
330 {0.166666672, 0.0555555634}, //
+
331 {-0.166666672, -0.5}, //
+
332 {0.166666672, -0.5}, //
+
333 });
+
334 polys.push_back({
+
335 {0.1090535, 0.19135803}, //
+
336 {0.117283955, 0.187242806}, //
+
337 {0.113168724, 0.179012358}, //
+
338 });
+
339 polys.push_back({
+
340 {0.0679012388, 0.183127582}, //
+
341 {0.0679012388, 0.19135803}, //
+
342 {0.0802469105, 0.179012358}, //
+
343 });
+
344 polys.push_back({
+
345 {0.104938269, 0.257201672}, //
+
346 {0.104938269, 0.265432119}, //
+
347 {0.117283955, 0.265432119}, //
+
348 });
+
349 TestPoly(polys, 20);
+
350};
+
351
+
352TEST(Polygon, SmallHole) {
+
353 Polygons polys;
+
354 polys.push_back({
+
355 {8.93379593, -41.2573624}, //
+
356 {10.5178413, -41.2440758}, //
+
357 {8.99354267, -41.1997375}, //
+
358 });
+
359 polys.push_back({
+
360 {9.08317471, -41.2453728}, //
+
361 {9.08610725, -41.242527}, //
+
362 {9.0890007, -41.2397537}, //
+
363 {9.08943081, -41.2436409}, //
+
364 {9.08946514, -41.2439499}, //
+
365 {9.08924961, -41.2441826}, //
+
366 {9.0890007, -41.2444496}, //
+
367 });
+
368 TestPoly(polys, 10);
+
369};
+
370
+
371TEST(Polygon, Precision4) {
+
372 Polygons polys;
+
373 polys.push_back({
+
374 {-7.57671118, -12.7964983}, //
+
375 {-7.57698059, -12.796319}, //
+
376 {-7.57698631, -12.7967968}, //
+
377 {-7.63940859, -12.9102335}, //
+
378 {-7.58357, -12.7919359}, //
+
379 {-7.58663845, -12.7898951}, //
+
380 {-7.63940859, -12.9102335}, //
+
381 });
+
382 TestPoly(polys, 5, 0.0004);
+
383};
+
384
+
385TEST(Polygon, CoincidentHole) {
+
386 Polygons polys;
+
387 polys.push_back({
+
388 {9.82835007, -0.939956188}, //
+
389 {10.1291866, -1.12029469}, //
+
390 {10.1291866, -0.759618163}, //
+
391 });
+
392 polys.push_back({
+
393 {9.82835007, -0.939956307}, //
+
394 {10.053978, -0.80470264}, //
+
395 {9.97876835, -1.0301255}, //
+
396 });
+
397 TestPoly(polys, 6);
+
398};
+
399
+
400TEST(Polygon, Holes5) {
+
401 Polygons polys;
+
402 polys.push_back({
+
403 {-0.166666672, -0.166666672}, //
+
404 {-0.462962955, 0.42592594}, //
+
405 {-0.5, -0.5}, //
+
406 });
+
407 polys.push_back({
+
408 {-0.240740761, -0.129629627}, //
+
409 {-0.203703716, -0.092592597}, //
+
410 {-0.203703716, -0.092592597}, //
+
411 {-0.203703716, -0.129629627}, //
+
412 });
+
413 polys.push_back({
+
414 {-0.388888896, -0.055555556}, //
+
415 {-0.277777791, 0.055555556}, //
+
416 {-0.277777791, -0.055555556}, //
+
417 });
+
418 TestPoly(polys, 12);
+
419};
+
420
+
421TEST(Polygon, Holes6) {
+
422 Polygons polys;
+
423 polys.push_back({
+
424 {0.388888896, 0.277777791}, //
+
425 {0.277777791, 0.388888896}, //
+
426 {0.388888896, 0.388888896}, //
+
427 });
+
428 polys.push_back({
+
429 {0.055555556, 0.388888896}, //
+
430 {-0.055555556, 0.277777791}, //
+
431 {-0.055555556, 0.388888896}, //
+
432 });
+
433 polys.push_back({
+
434 {-0.277777791, 0.388888896}, //
+
435 {-0.388888896, 0.277777791}, //
+
436 {-0.388888896, 0.388888896}, //
+
437 });
+
438 polys.push_back({
+
439 {-0.5, -0.5}, //
+
440 {0.5, -0.5}, //
+
441 {0.5, 0.5}, //
+
442 {-0.5, 0.5}, //
+
443 });
+
444 TestPoly(polys, 17);
+
445};
+
446
+
447TEST(Polygon, Holes7) {
+
448 Polygons polys;
+
449 polys.push_back({
+
450 {0.203703731, -0.203703716}, //
+
451 {-0.388888896, 0.277777791}, //
+
452 {-0.5, -0.5}, //
+
453 });
+
454 polys.push_back({
+
455 {-0.129629627, -0.203703716}, //
+
456 {-0.092592597, -0.203703716}, //
+
457 {-0.092592597, -0.240740761}, //
+
458 });
+
459 polys.push_back({
+
460 {-0.351851851, -0.203703716}, //
+
461 {-0.314814836, -0.203703716}, //
+
462 {-0.314814836, -0.240740761}, //
+
463 });
+
464 TestPoly(polys, 11);
+
465};
+
466
+
467TEST(Polygon, Holes8) {
+
468 Polygons polys;
+
469 polys.push_back({
+
470 {-0.166666672, 0.166666672}, //
+
471 {-0.42592594, 0.42592594}, //
+
472 {-0.5, -0.5}, //
+
473 });
+
474 polys.push_back({
+
475 {-0.277777791, -0.055555556}, //
+
476 {-0.388888896, 0.055555556}, //
+
477 {-0.277777791, 0.055555556}, //
+
478 {-0.277777791, -0.055555556}, //
+
479 });
+
480 polys.push_back({
+
481 {-0.462962955, -0.129629627}, //
+
482 {-0.42592594, -0.092592597}, //
+
483 {-0.42592594, -0.129629627}, //
+
484 });
+
485 TestPoly(polys, 12);
+
486};
+
487
+
488TEST(Polygon, Holes9) {
+
489 Polygons polys;
+
490 polys.push_back({
+
491 {-0.166666672, -0.166666672}, //
+
492 {-0.166666672, 0.166666672}, //
+
493 {-0.166666657, 0.166666672}, //
+
494 {-0.462962955, 0.42592594}, //
+
495 {-0.5, -0.5}, //
+
496 });
+
497 polys.push_back({
+
498 {-0.277777791, -0.055555556}, //
+
499 {-0.277777791, -0.055555556}, //
+
500 {-0.388888896, 0.055555556}, //
+
501 {-0.277777791, 0.055555556}, //
+
502 });
+
503 polys.push_back({
+
504 {-0.462962955, -0.129629627}, //
+
505 {-0.42592594, -0.092592597}, //
+
506 {-0.42592594, -0.092592597}, //
+
507 {-0.42592594, -0.129629627}, //
+
508 });
+
509 TestPoly(polys, 15);
+
510};
+
511
+
512TEST(Polygon, Eberly) {
+
513 Polygons polys;
+
514 polys.push_back({
+
515 {0, 0}, //
+
516 {9, 0}, //
+
517 {7, -1}, //
+
518 {8, -1}, //
+
519 {10, -5}, //
+
520 {10, 3}, //
+
521 {0, 3}, //
+
522 });
+
523 polys.push_back({
+
524 {1, 1}, //
+
525 {1, 2}, //
+
526 {2, 1}, //
+
527 });
+
528 TestPoly(polys, 10);
+
529};
+
530
+
531TEST(Polygon, Ugly) {
+
532 Polygons polys;
+
533 polys.push_back({
+
534 {2379.21118, 13009.6982}, //
+
535 {2292.45776, 13566.7129}, //
+
536 {2048.95142, 13894.6953}, //
+
537 {2054.84497, 13878.9023}, //
+
538 {2055.11914, 13878.9707}, //
+
539 {2186.24487, 13527.4189}, //
+
540 {2186.24487, 13527.4189}, //
+
541 {2186.24487, 13527.4189}, //
+
542 {2189.47729, 13552.7422}, //
+
543 {2208.28711, 13577.457}, //
+
544 {2208.28711, 13577.457}, //
+
545 {2236.93433, 13589.4551}, //
+
546 {2236.93433, 13589.4551}, //
+
547 {2236.93433, 13589.4551}, //
+
548 {2208.28711, 13577.457}, //
+
549 {2292.45703, 13566.7129}, //
+
550 {2208.28711, 13577.457}, //
+
551 {2208.28711, 13577.457}, //
+
552 {2189.47729, 13552.7422}, //
+
553 {2189.47729, 13552.7422}, //
+
554 {2189.47729, 13552.7422}, //
+
555 {2222.25732, 13474.4775}, //
+
556 {2222.25732, 13474.4775}, //
+
557 {2222.25732, 13474.4775}, //
+
558 {2222.25732, 13474.4775}, //
+
559 {2222.25732, 13474.4775}, //
+
560 {2189.47729, 13552.7422}, //
+
561 {2186.24487, 13527.4189}, //
+
562 {2186.61182, 13525.8066}, //
+
563 {2222.38232, 13429.9521}, //
+
564 {2222.38232, 13429.9521}, //
+
565 {2222.38232, 13429.9521}, //
+
566 });
+
567 polys.push_back({
+
568 {2379.03198, 13010.5518}, //
+
569 {2378.89648, 13010.541}, //
+
570 {2289.28784, 13251.1582}, //
+
571 {2379.03027, 13010.5566}, //
+
572 });
+
573 TestPoly(polys, 36);
+
574};
+
575
+
576TEST(Polygon, Sponge4a) {
+
577 Polygons polys;
+
578 polys.push_back({
+
579 {0.166666672, -0.0555555671}, //
+
580 {0.216049403, -0.0720164701}, //
+
581 {0.216049403, -0.0679012388}, //
+
582 {0.220164627, -0.0679012388}, //
+
583 {0.228395075, -0.0679012388}, //
+
584 {0.228395075, -0.0720164627}, //
+
585 {0.228395075, -0.076131694}, //
+
586 {0.314814836, -0.104938284}, //
+
587 {0.314814836, -0.092592597}, //
+
588 {0.327160507, -0.092592597}, //
+
589 {0.351851851, -0.092592597}, //
+
590 {0.351851851, -0.104938276}, //
+
591 {0.351851851, -0.117283955}, //
+
592 {0.438271612, -0.146090537}, //
+
593 {0.438271612, -0.141975313}, //
+
594 {0.442386836, -0.141975313}, //
+
595 {0.450617284, -0.141975313}, //
+
596 {0.376543224, -0.104938284}, //
+
597 {0.376543224, -0.1090535}, //
+
598 {0.376543224, -0.117283955}, //
+
599 {0.372428, -0.117283955}, //
+
600 {0.364197552, -0.117283955}, //
+
601 {0.364197552, -0.113168724}, //
+
602 {0.364197552, -0.104938269}, //
+
603 {0.368312776, -0.104938269}, //
+
604 {0.376543194, -0.104938269}, //
+
605 {0.302469134, -0.0679012388}, //
+
606 {0.302469134, -0.0720164627}, //
+
607 {0.302469134, -0.0802469105}, //
+
608 {0.29835391, -0.0802469105}, //
+
609 {0.290123463, -0.0802469105}, //
+
610 {0.290123463, -0.0761316866}, //
+
611 {0.290123463, -0.0679012388}, //
+
612 {0.294238687, -0.0679012388}, //
+
613 {0.302469134, -0.0679012388}, //
+
614 {0.166666672, 0}, //
+
615 });
+
616 polys.push_back({
+
617 {0.179012358, -0.0432098769}, //
+
618 {0.179012358, -0.0390946493}, //
+
619 {0.179012358, -0.0308641978}, //
+
620 {0.183127582, -0.0308641978}, //
+
621 {0.19135803, -0.0308641978}, //
+
622 {0.19135803, -0.0349794254}, //
+
623 {0.19135803, -0.0432098769}, //
+
624 {0.187242806, -0.0432098769}, //
+
625 });
+
626 polys.push_back({
+
627 {0.216049403, -0.0432098769}, //
+
628 {0.216049403, -0.0390946493}, //
+
629 {0.216049403, -0.0308641978}, //
+
630 {0.220164627, -0.0308641978}, //
+
631 {0.228395075, -0.0308641978}, //
+
632 {0.228395075, -0.0349794254}, //
+
633 {0.228395075, -0.0432098769}, //
+
634 {0.224279851, -0.0432098769}, //
+
635 });
+
636 polys.push_back({
+
637 {0.253086448, -0.0802469105}, //
+
638 {0.253086448, -0.0761316866}, //
+
639 {0.253086448, -0.0679012388}, //
+
640 {0.257201672, -0.0679012388}, //
+
641 {0.265432119, -0.0679012388}, //
+
642 {0.265432119, -0.0720164627}, //
+
643 {0.265432119, -0.0802469105}, //
+
644 {0.261316895, -0.0802469105}, //
+
645 });
+
646 TestPoly(polys, 64);
+
647};
+
648
+
649TEST(Polygon, CoincidentHole2) {
+
650 Polygons polys;
+
651 polys.push_back({
+
652 {-6.53556156, 12.4571409}, //
+
653 {-6.72912979, 12.5610456}, //
+
654 {-6.7918272, 12.5019674}, //
+
655 });
+
656 polys.push_back({
+
657 {-6.72903824, 12.5008945}, //
+
658 {-6.72912979, 12.5008078}, //
+
659 {-6.72931194, 12.5008106}, //
+
660 {-6.7918272, 12.5019674}, //
+
661 {-6.72912979, 12.5610456}, //
+
662 {-6.72894907, 12.501153}, //
+
663 {-6.72894812, 12.5009804}, //
+
664 });
+
665 TestPoly(polys, 10, 0.0005);
+
666};
+
667
+
668TEST(Polygon, CoincidentHole3) {
+
669 Polygons polys;
+
670 polys.push_back({
+
671 {9.76247501, -8.75089836}, //
+
672 {9.78284931, -8.75129509}, //
+
673 {9.78242302, -8.75128555}, //
+
674 {9.76939392, -8.74437904}, //
+
675 {9.76939392, -8.74437904}, //
+
676 });
+
677 polys.push_back({
+
678 {9.76247501, -8.75089836}, //
+
679 {9.76939392, -8.74437904}, //
+
680 {9.77548981, -8.75115108}, //
+
681 {9.77501488, -8.7511425}, //
+
682 });
+
683 TestPoly(polys, 9, 0.0002);
+
684};
+
685
+
686TEST(Polygon, CoincidentHole4) {
+
687 Polygons polys;
+
688 polys.push_back({
+
689 {1.44564819, 9.71884632}, //
+
690 {1.48651409, 9.71884632}, //
+
691 {1.44735146, 9.76247501}, //
+
692 });
+
693 polys.push_back({
+
694 {1.4456495, 9.71884632}, //
+
695 {1.44564915, 9.71884632}, //
+
696 {1.44564879, 9.71884632}, //
+
697 {1.44564819, 9.71884632}, //
+
698 {1.44586205, 9.72430038}, //
+
699 {1.44992185, 9.72319221}, //
+
700 {1.44936395, 9.71884632}, //
+
701 });
+
702 TestPoly(polys, 10, 0.0002);
+
703};
+
704
+
705TEST(Polygon, Colinear) {
+
706 Polygons polys;
+
707 polys.push_back({
+
708 {-5.48368, -3.73905}, //
+
709 {-4.9881, -4.51552}, //
+
710 {-4.78988, -4.13186}, //
+
711 {-4.82012, -4.13999}, //
+
712 {-4.84314, -4.14617}, //
+
713 {-4.85738, -4.13581}, //
+
714 {-4.86772, -4.12831}, //
+
715 {-4.87337, -4.12422}, //
+
716 {-4.88097, -4.1187}, //
+
717 {-4.89799, -4.10634}, //
+
718 {-4.90219, -4.103290}, //
+
719 {-4.90826, -4.098871}, //
+
720 {-4.90846, -4.098732}, //
+
721 {-4.91227, -4.095973}, //
+
722 {-4.92199, -4.08894}, //
+
723 {-5.0245, -4.014435}, //
+
724 {-5.02494, -4.014126}, //
+
725 {-5.02536, -4.013817}, //
+
726 {-5.0316, -4.009278}, //
+
727 {-5.03211, -4.008919}, //
+
728 {-5.05197, -3.994480}, //
+
729 {-5.14757, -3.925041}, //
+
730 {-5.21287, -3.87762}, //
+
731 {-5.29419, -3.818533}, //
+
732 {-5.29907, -3.814994}, //
+
733 {-5.36732, -3.765415}, //
+
734 });
+
735 TestPoly(polys, 24);
+
736}
+
737
+
738TEST(Polygon, Colinear4) {
+
739 Polygons polys;
+
740 polys.push_back({
+
741 {-22.7753239, 8.03145695}, //
+
742 {-22.8791199, 8.04628658}, //
+
743 {-22.8791199, 8.0424366}, //
+
744 {-22.8792648, 8.04237938}, //
+
745 {-22.8794041, 8.04239368}, //
+
746 {-22.9786491, 8.05282307}, //
+
747 {-22.9923439, 8.06109047}, //
+
748 {-22.995327, 8.06289101}, //
+
749 {-23.0484314, 8.07047844}, //
+
750 {-23.056942, 8.06713009}, //
+
751 {-23.0641346, 8.06429958}, //
+
752 {-23.0679455, 8.06355}, //
+
753 {-23.0689487, 8.06335258}, //
+
754 {-23.0691357, 8.06331635}, //
+
755 {-23.0723953, 8.06429958}, //
+
756 {-23.1114883, 8.0794878}, //
+
757 {-24.4342442, 8.26848221}, //
+
758 {-24.4342442, 8.2057848}, //
+
759 });
+
760 TestPoly(polys, 16, 0.0004);
+
761}
+
762
+
763TEST(Polygon, Merges) {
+
764 Polygons polys;
+
765 polys.push_back({
+
766 {-3.22039, 10.2769}, //
+
767 {-3.12437, 10.4147}, //
+
768 {-3.99093, 10.1781}, //
+
769 {-3.8154, 10.0716}, //
+
770 {-3.78982, 10.0893}, //
+
771 {-3.55033, 10.2558}, //
+
772 {-3.50073, 10.2549}, //
+
773 {-3.47018, 10.2572}, //
+
774 {-3.42633, 10.2605}, //
+
775 {-3.34311, 10.2604}, //
+
776 {-3.32096, 10.26330}, //
+
777 });
+
778 TestPoly(polys, 9);
+
779}
+
780
+
781TEST(Polygon, ExtraTriangle) {
+
782 Polygons polys;
+
783 polys.push_back({
+
784 {1.23141634, -0.493547261}, //
+
785 {1.23142254, -0.493540883}, //
+
786 {1.23088336, -0.457464248}, //
+
787 });
+
788 polys.push_back({
+
789 {1.23146737, -0.493494928}, //
+
790 {1.47253549, -0.24623163}, //
+
791 {1.47253144, -0.246230021}, //
+
792 {1.47166216, -0.246238187}, //
+
793 {1.46963537, -0.24623026}, //
+
794 {1.46811843, -0.246224999}, //
+
795 {1.46594918, -0.246223733}, //
+
796 {1.46594965, -0.2462321670}, //
+
797 {1.46594965, -0.2462322411}, //
+
798 {1.46594083, -0.2462237332}, //
+
799 {1.46591508, -0.2462237183}, //
+
800 {1.46594179, -0.2462314374}, //
+
801 {1.46585774, -0.2462236885}, //
+
802 {1.46577716, -0.2462236296}, //
+
803 {1.46590662, -0.2462312137}, //
+
804 {1.46550393, -0.2462234658}, //
+
805 {1.46081161, -0.2462207389}, //
+
806 {1.46407437, -0.2462289040}, //
+
807 {1.45568836, -0.2462277561}, //
+
808 {1.42199826, -0.2602537572}, //
+
809 {1.40801644, -0.2462047343}, //
+
810 {1.40688479, -0.246203084}, //
+
811 {1.38571239, -0.2461840815}, //
+
812 {1.30817795, -0.2461582426}, //
+
813 {1.28997684, -0.3280568727}, //
+
814 {1.30974603, -0.3150095348}, //
+
815 {1.31756043, -0.3649175179}, //
+
816 });
+
817 TestPoly(polys, 26);
+
818}
+
819
+
820TEST(Polygon, SpongeThin) {
+
821 Polygons polys;
+
822 polys.push_back({
+
823 {-0.5, -0.4753086571}, //
+
824 {-0.487654328, -0.4754610662}, //
+
825 {-0.487654328, -0.4753086573}, //
+
826 {-0.487654328, -0.4753086574}, //
+
827 {-0.487654328, -0.4753086575}, //
+
828 {-0.475308657, -0.4753086576}, //
+
829 {-0.475308657, -0.4756134757}, //
+
830 {-0.462962985, -0.4757659148}, //
+
831 {-0.462962985, -0.4753086579}, //
+
832 });
+
833 polys.push_back({
+
834 {0.42592591, -0.4753086570}, //
+
835 {0.351851851, -0.4753086571}, //
+
836 {0.351851851, -0.4753086572}, //
+
837 {0.351851851, -0.485825333}, //
+
838 {0.364197552, -0.4859777694}, //
+
839 {0.364197552, -0.4753086575}, //
+
840 {0.364197552, -0.4753086576}, //
+
841 {0.364197552, -0.4753086577}, //
+
842 {0.376543224, -0.4753086578}, //
+
843 {0.376543224, -0.4861301789}, //
+
844 {0.401234567, -0.4864349960}, //
+
845 {0.401234567, -0.4753086571}, //
+
846 {0.401234567, -0.4753086572}, //
+
847 {0.401234567, -0.4753086573}, //
+
848 {0.413580239, -0.4753086574}, //
+
849 {0.413580239, -0.4865874055}, //
+
850 {0.42592591, -0.4867398446}, //
+
851 });
+
852 polys.push_back({
+
853 {0.314814806, -0.4753086577}, //
+
854 {0.240740761, -0.4753086578}, //
+
855 {0.240740761, -0.4753086579}, //
+
856 {0.240740761, -0.4844535890}, //
+
857 {0.253086448, -0.4846060281}, //
+
858 {0.253086448, -0.4753086572}, //
+
859 {0.253086448, -0.4753086573}, //
+
860 {0.253086448, -0.4753086574}, //
+
861 {0.265432119, -0.4753086575}, //
+
862 {0.265432119, -0.4847584376}, //
+
863 {0.290123463, -0.4850632557}, //
+
864 {0.290123463, -0.4753086578}, //
+
865 {0.290123463, -0.4753086579}, //
+
866 {0.290123463, -0.4753086570}, //
+
867 {0.302469134, -0.4753086571}, //
+
868 {0.302469134, -0.4852156642}, //
+
869 {0.314814806, -0.4853681033}, //
+
870 {0.314814806, -0.4753086574}, //
+
871 });
+
872 TestPoly(polys, 38);
+
873}
+
874
+
875TEST(Polygon, ColinearY) {
+
876 Polygons polys;
+
877 polys.push_back({
+
878 {0, 0}, //
+
879 {1, 1}, //
+
880 {2, 1}, //
+
881 {3, 1}, //
+
882 {4, 1}, //
+
883 {4, 2}, //
+
884 {3, 2}, //
+
885 {2, 2}, //
+
886 {1, 2}, //
+
887 {0, 3}, //
+
888 {-1, 2}, //
+
889 {-2, 2}, //
+
890 {-3, 2}, //
+
891 {-4, 2}, //
+
892 {-4, 1}, //
+
893 {-3, 1}, //
+
894 {-2, 1}, //
+
895 {-1, 1}, //
+
896 });
+
897 TestPoly(polys, 16);
+
898}
+
899
+
900TEST(Polygon, NearlyColinearY) {
+
901 Polygons polys;
+
902 polys.push_back({
+
903 {3.5, 0}, //
+
904 {3.0, 0.5}, //
+
905 {3.0, 0.0144}, //
+
906 {2.0, 0.4}, //
+
907 {1.8, 0.1}, //
+
908 {1.6, 0.0155}, //
+
909 {1.5, 0.0147}, //
+
910 {1.4, 0.0144}, //
+
911 {1.0, 0.1}, //
+
912 {0, 0}, //
+
913 });
+
914 TestPoly(polys, 8, 0.001);
+
915}
+
916
+
917TEST(Polygon, Concave) {
+
918 Polygons polys;
+
919 polys.push_back({
+
920 {-0.707107008, -0.707107008}, //
+
921 {1, 0}, //
+
922 {0.683013022, 0}, //
+
923 {0.379409999, -0.232962996}, //
+
924 {0.379409999, -0.232962996}, //
+
925 {1.49012003e-08, -0.183013007}, //
+
926 {1.49012003e-08, -0.183013007}, //
+
927 {-0.140431002, 0}, //
+
928 {-1, 0}, //
+
929 });
+
930 TestPoly(polys, 7);
+
931}
+
932
+
933TEST(Polygon, Concave2) {
+
934 Polygons polys;
+
935 polys.push_back({
+
936 {4, 0}, //
+
937 {3, 2}, //
+
938 {3, 3}, //
+
939 {6, 5}, //
+
940 {6, 14}, //
+
941 {0, 13}, //
+
942 {0, 12}, //
+
943 {3, 11}, //
+
944 {4, 10}, //
+
945 {5, 8}, //
+
946 {1, 7}, //
+
947 {2, 1}, //
+
948 });
+
949 TestPoly(polys, 10);
+
950}
+
951
+
952TEST(Polygon, Sliver) {
+
953 Polygons polys;
+
954 polys.push_back({
+
955 {2.82002997, 0}, //
+
956 {2.82002997, 0}, //
+
957 {2.06105995, 0}, //
+
958 {2.05792999, 0.0680378973}, //
+
959 {2.06410003, 0.206908002}, //
+
960 {2.28446007, 1.04696}, //
+
961 {2.35005999, 1.24989998}, //
+
962 {-2.82002997, 15}, //
+
963 {-2.82002997, 0}, //
+
964 });
+
965 TestPoly(polys, 7);
+
966}
+
967
+
968TEST(Polygon, Duplicate) {
+
969 Polygons polys;
+
970 polys.push_back({
+
971 {-32.0774002, -10.4309998}, //
+
972 {-31.7346992, -6.10348988}, //
+
973 {-31.8645992, -5.61858988}, //
+
974 {-31.8645992, -5.61858988}, //
+
975 {-31.8645992, -5.61858988}, //
+
976 {-31.8645992, -5.61858988}, //
+
977 {-31.8645992, -5.61858988}, //
+
978 {-31.8645992, -5.61858988}, //
+
979 {-31.8645992, -5.61858988}, //
+
980 {-31.8645992, -5.61858988}, //
+
981 {-31.8645992, -5.618589880}, //
+
982 {-31.8645992, -5.618589881}, //
+
983 {-31.8645992, -5.618589882}, //
+
984 {-31.8645992, -5.618589883}, //
+
985 {-31.8645992, -5.618589884}, //
+
986 {-31.8645992, -5.618589885}, //
+
987 {-31.8645992, -5.618589886}, //
+
988 {-31.8645992, -5.618589887}, //
+
989 {-31.8645992, -5.618589888}, //
+
990 {-31.8645992, -5.618589889}, //
+
991 {-31.8645992, -5.618589880}, //
+
992 {-32.0774002, -3.18654991}, //
+
993 });
+
994 TestPoly(polys, 20);
+
995}
+
996
+
997TEST(Polygon, Duplicate2) {
+
998 Polygons polys;
+
999 polys.push_back({
+
1000 {0, 0}, //
+
1001 {0, -1}, //
+
1002 {1, 1}, //
+
1003 {-1, 0}, //
+
1004 {0, 0}, //
+
1005
+
1006 });
+
1007 TestPoly(polys, 3);
+
1008}
+
1009
+
1010TEST(Polygon, Folded) {
+
1011 Polygons polys;
+
1012 polys.push_back({
+
1013 {2.82002997, 0}, //
+
1014 {1.23706996, 4.20994997}, //
+
1015 {1.14140999, 4.09090996}, //
+
1016 {1.05895996, 3.94496012}, //
+
1017 {0.00757742021, 2.72726989}, //
+
1018 {-0.468091995, 1.94363999}, //
+
1019 {-1.06106997, 1.36363995}, //
+
1020 {-1.79214001, 0.346489996}, //
+
1021 {-2.27416992, 0}, //
+
1022 {-2.82002997, 0}, //
+
1023 {-2.82002997, 0}, //
+
1024 });
+
1025 TestPoly(polys, 9);
+
1026}
+
1027
+
1028TEST(Polygon, NearlyLinear) {
+
1029 Polygons polys;
+
1030 polys.push_back({
+
1031 {2.82002997, -8.22814036e-05}, //
+
1032 {2.82002997, -8.22814036e-05}, //
+
1033 {2.31802011, -8.22814036e-05}, //
+
1034 {-0.164566994, -8.22813017e-05}, //
+
1035 {-0.85738802, -8.22814036e-05}, //
+
1036 {-1.01091003, -8.22814036e-05}, //
+
1037 {-1.01091003, -8.22814036e-05}, //
+
1038 });
+
1039 TestPoly(polys, 5);
+
1040}
+
1041
+
1042TEST(Polygon, Sliver2) {
+
1043 Polygons polys;
+
1044 polys.push_back({
+
1045 {27.4996014, 8.68737034}, //
+
1046 {28.27701, 9.528873446}, //
+
1047 {27.6687469, 10.881158804}, //
+
1048 {27.5080414, 8.7968292242}, //
+
1049 {27.5594807, 8.7521896407}, //
+
1050 {27.4996014, 8.687370368}, //
+
1051 });
+
1052 TestPoly(polys, 4);
+
1053}
+
1054
+
1055TEST(Polygon, Sliver3) {
+
1056 Polygons polys;
+
1057 polys.push_back({
+
1058 {0, -2.6516838169}, //
+
1059 {0, -0.792692184889}, //
+
1060 {0, -0.792692184330}, //
+
1061 {0, -1.04356134430}, //
+
1062 {-0.953957975, -0.768045247331}, //
+
1063 {-1.36363637, -0.757460594892}, //
+
1064 });
+
1065 TestPoly(polys, 4);
+
1066}
+
1067
+
1068TEST(Polygon, Sliver4) {
+
1069 Polygons polys;
+
1070 polys.push_back({
+
1071 {-0.375669807, 8.90489388474}, //
+
1072 {0, 8.39722729459}, //
+
1073 {0, 8.9723053468}, //
+
1074 {0, 8.9723053469}, //
+
1075 {0, 8.96719646467}, //
+
1076 {0, 8.89326191466}, //
+
1077 {0, 8.78047276465}, //
+
1078 {-0.330551624, 8.8897438473}, //
+
1079 });
+
1080 TestPoly(polys, 6);
+
1081}
+
1082
+
1083TEST(Polygon, Sliver5) {
+
1084 Polygons polys;
+
1085 polys.push_back({
+
1086 {-60, 0}, //
+
1087 {-50, 0}, //
+
1088 {-50, 0}, //
+
1089 {-60, 4.37113897e-07}, //
+
1090 {-60, 4.37113897e-07}, //
+
1091 });
+
1092 polys.push_back({
+
1093 {-60, 100}, //
+
1094 {-60, 4.37113897e-07}, //
+
1095 {-60, 4.37113897e-07}, //
+
1096 {-50, 0}, //
+
1097 });
+
1098 TestPoly(polys, 5);
+
1099}
+
1100
+
1101TEST(Polygon, Sliver6) {
+
1102 Polygons polys;
+
1103 polys.push_back({
+
1104 {10, 0}, //
+
1105 {0, 10}, //
+
1106 {-10, 0}, //
+
1107 {-10, 0}, //
+
1108 {4.37113897e-07, 10}, //
+
1109 {10, 0}, //
+
1110 });
+
1111 TestPoly(polys, 4);
+
1112}
+
1113
+
1114TEST(Polygon, Sliver7) {
+
1115 Polygons polys;
+
1116 polys.push_back({
+
1117 {50, -10}, //
+
1118 {60, 0}, //
+
1119 {50, 0}, //
+
1120 {60, 4.37113897e-07}, //
+
1121 {60, 4.37113897e-07}, //
+
1122 {60, 4.37113897e-07}, //
+
1123 {60, 4.37113897e-07}, //
+
1124 {50, 0}, //
+
1125 });
+
1126 TestPoly(polys, 6);
+
1127}
+
1128
+
1129TEST(Polygon, Sliver8) {
+
1130 Polygons polys;
+
1131 polys.push_back({
+
1132 {27.9279995, 4.9749999}, //
+
1133 {31.0610008, 2.32299995}, //
+
1134 {31.0610008, 2.322999958}, //
+
1135 {27.9279995, 4.97499996}, //
+
1136 {27.9279995, 4.97499995}, //
+
1137 {31.0610008, 2.322999958}, //
+
1138 {30.4400005, 5.341000087}, //
+
1139 });
+
1140 TestPoly(polys, 5);
+
1141}
+
1142
+
1143TEST(Polygon, Sliver9) {
+
1144 Polygons polys;
+
1145 polys.push_back({
+
1146 {1.49183154, -0.4795963766194}, //
+
1147 {1.71669781, -0.2464189836195}, //
+
1148 {1.70233643, -0.2464101176196}, //
+
1149 {1.47253978, -0.2462775866197}, //
+
1150 {1.47254002, -0.2462870037997}, //
+
1151 {1.4869014, -0.2462958697996}, //
+
1152 });
+
1153 TestPoly(polys, 4);
+
1154}
+
1155
+
1156TEST(Polygon, Sliver10) {
+
1157 Polygons polys;
+
1158 polys.push_back({
+
1159 {-1.20783484, 9.82835007}, //
+
1160 {-1.12029445, 10.1291866}, //
+
1161 {-1.39725339, 10.0962286}, //
+
1162 {-1.20783472, 9.82835007}, //
+
1163 {-1.39725339, 10.0962286}, //
+
1164 });
+
1165 TestPoly(polys, 3, 0.000230642);
+
1166}
+
1167
+
1168TEST(Polygon, Colinear2) {
+
1169 Polygons polys;
+
1170 polys.push_back({
+
1171 {11.7864399, -7.4572401176}, //
+
1172 {11.6818037, -7.309823044873}, //
+
1173 {11.6777582, -7.306262028498}, //
+
1174 {11.6789398, -7.305788044872}, //
+
1175 {11.3459997, -6.83671999889}, //
+
1176 {11.25597, -6.9267602888}, //
+
1177 });
+
1178 TestPoly(polys, 4);
+
1179}
+
1180
+
1181TEST(Polygon, Colinear3) {
+
1182 Polygons polys;
+
1183 polys.push_back({
+
1184 {1, -0.600000024}, //
+
1185 {1, 0.600000024}, //
+
1186 {0, 0.600000024}, //
+
1187 {0.5, 0}, //
+
1188 {0.5, 0.5}, //
+
1189 {0.5, 0.5}, //
+
1190 {1, 0.5}, //
+
1191 {1, -0.5}, //
+
1192 {1, -0.5}, //
+
1193 {1, -0.5}, //
+
1194 {0.916666627, -0.5}, //
+
1195 });
+
1196 TestPoly(polys, 9);
+
1197}
+
1198
+
1199TEST(Polygon, Envelope) {
+
1200 Polygons polys;
+
1201 polys.push_back({
+
1202 {-36.324749, 0.477457494}, //
+
1203 {-36.324749, 0.477457494}, //
+
1204 {-36.8497353, 1.03053689}, //
+
1205 {-32.5569077, 5}, //
+
1206 {-36.8497353, 1.03053689}, //
+
1207 });
+
1208 polys.push_back({
+
1209 {-32.5569077, 5}, //
+
1210 {-36.324749, 0.477457494}, //
+
1211 {-32.5569077, 5}, //
+
1212 {-32.5569077, 5}, //
+
1213 {-36.8497353, 1.03053689}, //
+
1214 });
+
1215 TestPoly(polys, 6);
+
1216}
+
1217
+
1218TEST(Polygon, Split) {
+
1219 Polygons polys;
+
1220 polys.push_back({
+
1221 {-0.707106769, -0.707106769}, //
+
1222 {1, 0}, //
+
1223 {0.683012664, 0}, //
+
1224 {0.379409522, -0.2329629063}, //
+
1225 {0.379409522, -0.2329629062}, //
+
1226 {1.49011612e-08, -0.1830126641}, //
+
1227 {1.49011612e-08, -0.1830126640}, //
+
1228 {-0.14043057, 0}, //
+
1229 {-1, 0}, //
+
1230 });
+
1231 TestPoly(polys, 7);
+
1232}
+
1233
+
1234TEST(Polygon, Duplicates) {
+
1235 Polygons polys;
+
1236 polys.push_back({
+
1237 {-15, -8.10255623648}, //
+
1238 {-15, -9.02439785650}, //
+
1239 {-13.636364, -9.4640789678}, //
+
1240 {-14.996314, -8.10623646916}, //
+
1241 {-15, -8.10639845}, //
+
1242 {-15, -8.10255623922}, //
+
1243 });
+
1244 TestPoly(polys, 4);
+
1245}
+
1246
+
1247TEST(Polygon, Simple1) {
+
1248 Polygons polys;
+
1249 polys.push_back({
+
1250 {4.04059982, -4.01843977872}, //
+
1251 {3.95867562, -4.252639774604}, //
+
1252 {4.23459578, -4.301384938274}, //
+
1253 {4.235569, -4.301272878273}, //
+
1254 {4.23782539, -4.301418784602}, //
+
1255 });
+
1256 TestPoly(polys, 3);
+
1257}
+
1258
+
1259TEST(Polygon, Simple2) {
+
1260 Polygons polys;
+
1261 polys.push_back({
+
1262 {-1, -1}, //
+
1263 {-0.5, -0.5}, //
+
1264 {-1, 0}, //
+
1265 {0, 1}, //
+
1266 {0.5, 0.50}, //
+
1267 {1, 1}, //
+
1268 {-1, 1}, //
+
1269 });
+
1270 TestPoly(polys, 5);
+
1271}
+
1272
+
1273TEST(Polygon, Simple3) {
+
1274 Polygons polys;
+
1275 polys.push_back({
+
1276 {19.7193489, 6.154459959798}, //
+
1277 {20.2308197, 5.642990591187}, //
+
1278 {20.3464642, 5.654597767273}, //
+
1279 {20.3733711, 5.654040817274}, //
+
1280 {20.373394, 5.654040341188}, //
+
1281 {20.8738098, 6.154459959801}, //
+
1282 });
+
1283 TestPoly(polys, 4);
+
1284}
+
1285
+
1286TEST(Polygon, Simple4) {
+
1287 Polygons polys;
+
1288 polys.push_back({
+
1289 {15, -12.713556387}, //
+
1290 {15, -10.684373988}, //
+
1291 {15, -10.684373992}, //
+
1292 {15, -11.004141813}, //
+
1293 {15, -11.455074309}, //
+
1294 {15, -11.455074311}, //
+
1295 {14.9958763, -11.454532608}, //
+
1296 {14.4307623, -11.380221412}, //
+
1297 {13.9298496, -11.276861280}, //
+
1298 });
+
1299 TestPoly(polys, 7);
+
1300}
+
1301
+
1302TEST(Polygon, Simple5) {
+
1303 Polygons polys;
+
1304 polys.push_back({
+
1305 {-27.3845081, 0.37566974864}, //
+
1306 {-27.6389656, 0}, //
+
1307 {-27.1156006, 0}, //
+
1308 {-27.1156006, 0}, //
+
1309 {-27.1202412, 0}, //
+
1310 {-27.1875362, 0}, //
+
1311 {-27.290184, 0}, //
+
1312 {-27.3733444, 0.33045187663}, //
+
1313 });
+
1314 TestPoly(polys, 6);
+
1315}
+
1316
+
1317TEST(Polygon, Simple6) {
+
1318 Polygons polys;
+
1319 polys.push_back({
+
1320 {-7.99813318, 12.88888265009}, //
+
1321 {-7.85714436, 12.91251955006}, //
+
1322 {-7.85714436, 12.98071965005}, //
+
1323 {-7.88929749, 12.95930395007}, //
+
1324 {-7.99812126, 12.88889125008}, //
+
1325 });
+
1326 TestPoly(polys, 3);
+
1327}
+
1328
+
1329TEST(Polygon, TouchingHole) {
+
1330 Polygons polys;
+
1331 polys.push_back({
+
1332 {-2, -1}, //
+
1333 {2, -1}, //
+
1334 {2, 1}, //
+
1335 {-2, 1}, //
+
1336 });
+
1337 polys.push_back({
+
1338 {-1, -1}, //
+
1339 {-1, 1}, //
+
1340 {1, 1}, //
+
1341 {1, -1}, //
+
1342 });
+
1343 TestPoly(polys, 8);
+
1344}
+
1345
+
1346TEST(Polygon, TouchingHole2) {
+
1347 Polygons polys;
+
1348 polys.push_back({
+
1349 {-0.314814836, -0.462962955}, //
+
1350 {-0.240740761, -0.462962955}, //
+
1351 {-0.314814836, -0.42592594}, //
+
1352 });
+
1353 polys.push_back({
+
1354 {-0.302469134, -0.450617284}, //
+
1355 {-0.302469134, -0.439186096}, //
+
1356 {-0.302469134, -0.438271612}, //
+
1357 {-0.291037947, -0.438271612}, //
+
1358 {-0.290123463, -0.438271612}, //
+
1359 {-0.290123463, -0.449702799}, //
+
1360 {-0.290123463, -0.450617284}, //
+
1361 {-0.30155465, -0.450617284}, //
+
1362 });
+
1363 TestPoly(polys, 11);
+
1364}
+
1365
+
1366TEST(Polygon, Degenerate) {
+
1367 Polygons polys;
+
1368 polys.push_back({
+
1369 {1, -1}, //
+
1370 {1, 1}, //
+
1371 {1, 1}, //
+
1372 {1, -1}, //
+
1373 {1, -1}, //
+
1374 {-1, -1}, //
+
1375 {-1, -1}, //
+
1376 });
+
1377 TestPoly(polys, 5);
+
1378}
+
1379
+
1380TEST(Polygon, Degenerate2) {
+
1381 Polygons polys;
+
1382 polys.push_back({
+
1383 {0.0740740597, -0.314814836829}, //
+
1384 {0.0925925896, -0.314814806828}, //
+
1385 {0.0925925896, -0.314814806826}, //
+
1386 {0.0740740597, -0.314814836830}, //
+
1387 });
+
1388 TestPoly(polys, 2);
+
1389}
+
1390
+
1391TEST(Polygon, Degenerate3) {
+
1392 Polygons polys;
+
1393 polys.push_back({
+
1394 {-0.413580239, -0.2160494039696}, //
+
1395 {-0.42592591, -0.2160494039690}, //
+
1396 {-0.413580239, -0.2160494039694}, //
+
1397 {-0.401234567, -0.2160494039713}, //
+
1398 {-0.401234567, -0.2160494039715}, //
+
1399 {-0.401234567, -0.2160494039716}, //
+
1400 {-0.413580239, -0.2160494039697}, //
+
1401 });
+
1402 TestPoly(polys, 5);
+
1403}
+
1404
+
1405TEST(Polygon, Degenerate4) {
+
1406 Polygons polys;
+
1407 polys.push_back({
+
1408 {0, 10}, //
+
1409 {-0.0696326792, 9.9939079360}, //
+
1410 {4.37113897e-07, 10}, //
+
1411 {0.636729717, 9.9442930240}, //
+
1412 });
+
1413 TestPoly(polys, 2);
+
1414}
+
1415
+
1416TEST(Polygon, Degenerate5) {
+
1417 Polygons polys;
+
1418 polys.push_back({
+
1419 {1, 0}, //
+
1420 {1, 1}, //
+
1421 {1, 1}, //
+
1422 {1, 1}, //
+
1423 {1, 1}, //
+
1424 {0, 1}, //
+
1425 {0, 1}, //
+
1426 {0, 1}, //
+
1427 });
+
1428 TestPoly(polys, 6);
+
1429}
+
1430
+
1431TEST(Polygon, Degenerate6) {
+
1432 Polygons polys;
+
1433 polys.push_back({
+
1434 {4.37113897e-07, -4.37113897e-07}, //
+
1435 {4.37113897e-07, 0}, //
+
1436 {0, 0}, //
+
1437 {-1.19421679e-06, 0}, //
+
1438 {-8.66025352, 0}, //
+
1439 {-8.66025352, 1.3397469}, //
+
1440 {-10, -4.37113897e-07}, //
+
1441 });
+
1442 TestPoly(polys, 5);
+
1443}
+
1444
+
1445TEST(Polygon, Tricky) {
+
1446 Polygons polys;
+
1447 polys.push_back({
+
1448 {1, 0}, //
+
1449 {2, 1}, //
+
1450 {3, 0}, //
+
1451 {3, 5}, //
+
1452 {2, 5}, //
+
1453 {3, 4}, //
+
1454 {3, 2}, //
+
1455 {3, 3}, //
+
1456 {0, 6}, //
+
1457 });
+
1458 TestPoly(polys, 7);
+
1459}
+
1460
+
1461TEST(Polygon, Tricky2) {
+
1462 Polygons polys;
+
1463 polys.push_back({
+
1464 {1, 0}, //
+
1465 {3, 1}, //
+
1466 {3, 3.5}, //
+
1467 {3, 0}, //
+
1468 {3, 5}, //
+
1469 {2, 5}, //
+
1470 {3, 4}, //
+
1471 {3, 2}, //
+
1472 {3, 3}, //
+
1473 {0, 6}, //
+
1474 });
+
1475 TestPoly(polys, 8);
+
1476}
+
1477
+
1478TEST(Polygon, Slit) {
+
1479 Polygons polys;
+
1480 polys.push_back({
+
1481 {27.7069321, 13.514409186}, //
+
1482 {28.664566, 10.810289467}, //
+
1483 {28.7565536, 10.818337466}, //
+
1484 {25.9535275, 19.445167570}, //
+
1485 {26.0820198, 18.928167365}, //
+
1486 {26.0820198, 18.928167364}, //
+
1487 {26.0820198, 18.928167366}, //
+
1488 {25.8192234, 18.844831567}, //
+
1489 {27.7069321, 13.514409185}, //
+
1490 {27.9789181, 13.211655684}, //
+
1491 });
+
1492 polys.push_back({
+
1493 {25.6960907, 20.237478391}, //
+
1494 {25.6563644, 20.359741292}, //
+
1495 {25.6467285, 20.361473193}, //
+
1496 });
+
1497 TestPoly(polys, 9);
+
1498}
+
1499
+
1500TEST(Polygon, SharedEdge) {
+
1501 Polygons polys;
+
1502 polys.push_back({
+
1503 {0.265432119, 0.00617283491185}, //
+
1504 {0.277777791, -3.7252903e-09}, //
+
1505 {0.277777791, 0.01851851871184}, //
+
1506 {0.240740761, 0.01851851876345}, //
+
1507 {0.265432119, 0.006172839551186}, //
+
1508 {0.265432119, 0.006172839551187}, //
+
1509 });
+
1510 TestPoly(polys, 4);
+
1511}
+
1512
+
1513TEST(Polygon, Precision) {
+
1514 Polygons polys;
+
1515 polys.push_back({
+
1516 {-0.98486793, -0.492948532}, //
+
1517 {-0.984859049, -0.492013603}, //
+
1518 {-0.984966695, -0.489926398}, //
+
1519 {-0.984955609, -0.490281343}, //
+
1520 {-0.985008538, -0.489676297}, //
+
1521 {-0.98491329, -0.491925418}, //
+
1522 {-0.984878719, -0.492937535}, //
+
1523 });
+
1524 TestPoly(polys, 5, 0.0001);
+
1525};
+
1526
+
1527TEST(Polygon, Precision2) {
+
1528 Polygons polys;
+
1529 polys.push_back({
+
1530 {4.98093176, -0.2479388121113}, //
+
1531 {4.94630527, -0.08263990282736}, //
+
1532 {4.98092985, -0.2479388122735}, //
+
1533 });
+
1534 polys.push_back({
+
1535 {4.76215458, -0.2478484367566}, //
+
1536 {4.76215267, -0.2478604172640}, //
+
1537 {4.76215553, -0.2478604172639}, //
+
1538 });
+
1539 polys.push_back({
+
1540 {4.95041943, -0.2417418967815}, //
+
1541 {4.85906506, -0.2231211817816}, //
+
1542 {4.90268326, -0.1528855567824}, //
+
1543 {4.82208872, -0.185909457823}, //
+
1544 {4.79133606, -0.2478708772638}, //
+
1545 {4.98092985, -0.2479388122733}, //
+
1546 {4.90268326, -0.1528855567822}, //
+
1547 {4.95041943, -0.2417418967819}, //
+
1548 });
+
1549 TestPoly(polys, 8);
+
1550};
+
1551
+
1552TEST(Polygon, Precision3) {
+
1553 Polygons polys;
+
1554 polys.push_back({
+
1555 {0.630340576, 1.6097908}, //
+
1556 {0.777489543, 1.58760202}, //
+
1557 {0.890084028, 1.60028839}, //
+
1558 {1.05917394, 1.65945554}, //
+
1559 {1.06027794, 1.65984178}, //
+
1560 });
+
1561 TestPoly(polys, 3, 0.00068);
+
1562};
+
1563
+
1564TEST(Polygon, DegenerateRing) {
+
1565 Polygons polys;
+
1566 polys.push_back({
+
1567 {-9.82835007, -8.06539154}, //
+
1568 {-10.1291866, -7.88505363}, //
+
1569 {-10.1291866, -8.2457304}, //
+
1570 });
+
1571 polys.push_back({
+
1572 {-9.82835007, -8.06539154}, //
+
1573 {-9.82835007, -8.06539154}, //
+
1574 {-9.82835007, -8.06539154}, //
+
1575 {-10.1291866, -8.24572945}, //
+
1576 {-10.1291866, -7.88505363}, //
+
1577 {-9.82835007, -8.06539154}, //
+
1578 });
+
1579 TestPoly(polys, 9);
+
1580}
+
1581
+
1582TEST(Polygon, Sweep) {
+
1583 Polygons polys;
+
1584 polys.push_back({
+
1585 {0, 0.637057483}, //
+
1586 {0, 0.637057483}, //
+
1587 {1.72745752, 4.72425699}, //
+
1588 {1.72745752, 4.72425699}, //
+
1589 {1.72745752, 4.72425699}, //
+
1590 {1.7274611, 4.72425747}, //
+
1591 {0, 0.637057483}, //
+
1592 {2.5, 4.82678747}, //
+
1593 {1.72745752, 4.72425747}, //
+
1594 {0, 0.637057483}, //
+
1595 {0, 0.637057483}, //
+
1596 {0, 0.637057483}, //
+
1597 {0, 0.637057483}, //
+
1598 {0, 0.637057483}, //
+
1599 });
+
1600 TestPoly(polys, 12);
+
1601}
+
1602
+
1603TEST(Polygon, Hole) {
+
1604 Polygons polys;
+
1605 polys.push_back({
+
1606 {0.5, -0.5}, //
+
1607 {0.5, 0.5}, //
+
1608 {-0.5, 0.5}, //
+
1609 {-0.5, 0.5}, //
+
1610 {-0.5, 0.5}, //
+
1611 {-0, 0.5}, //
+
1612 {-0.25, 0.25}, //
+
1613 {0.25, -0.25}, //
+
1614 {0.5, 0}, //
+
1615 {0.5, 0}, //
+
1616 {0.5, -0.5}, //
+
1617 {0.5, -0.5}, //
+
1618 {0.5, -0.5}, //
+
1619 });
+
1620 polys.push_back({
+
1621 {0.5, 0}, //
+
1622 {-0, 0.5}, //
+
1623 {-0, 0.5}, //
+
1624 {0.5, 0.5}, //
+
1625 {0.5, 0.5}, //
+
1626 {0.5, 0.5}, //
+
1627 });
+
1628 TestPoly(polys, 19);
+
1629}
+
1630
+
1631TEST(Polygon, Hole2) {
+
1632 Polygons polys;
+
1633 polys.push_back({
+
1634 {0, -21.8057232}, //
+
1635 {0.142438874, -21.3274956}, //
+
1636 {0.118176684, -21.1638756}, //
+
1637 {2.24720502, -20.7749138}, //
+
1638 {0.0947285369, -20.7749138}, //
+
1639 {0.0428545363, -19.7292175}, //
+
1640 });
+
1641 polys.push_back({
+
1642 {0.094730109, -20.7749138}, //
+
1643 {1.17382383, -20.7749138}, //
+
1644 {0.118176684, -21.1638756}, //
+
1645 });
+
1646 TestPoly(polys, 9);
+
1647}
+
1648
+
1649TEST(Polygon, Hole3) {
+
1650 Polygons polys;
+
1651 polys.push_back({
+
1652 {9.42795753, 9.36543179}, //
+
1653 {9.41050148, 9.39931583}, //
+
1654 {9.39856625, 9.36543179}, //
+
1655 });
+
1656 polys.push_back({
+
1657 {9.3985672, 9.36543179}, //
+
1658 {9.39856625, 9.36543179}, //
+
1659 {9.39856625, 9.36543179}, //
+
1660 {9.39856625, 9.36543274}, //
+
1661 {9.41050148, 9.39931488}, //
+
1662 {9.41945648, 9.38193321}, //
+
1663 {9.41326141, 9.36543179}, //
+
1664 });
+
1665 TestPoly(polys, 10);
+
1666}
+
1667
+
1668TEST(Polygon, Separate3) {
+
1669 Polygons polys;
+
1670 polys.push_back({
+
1671 {-3.46249032, 0}, //
+
1672 {-3.46249056, 4.95030928}, //
+
1673 {-3.93332648, 1.35438299}, //
+
1674 });
+
1675 polys.push_back({
+
1676 {-5.15814781, 4.8776412}, //
+
1677 {-5.11540651, 4.75469398}, //
+
1678 {-5.11540651, 4.87985134}, //
+
1679 {-5.11540651, 4.87985849}, //
+
1680 });
+
1681 polys.push_back({
+
1682 {-4.29695415, 4.92231846}, //
+
1683 {-4.47298813, 2.90674615}, //
+
1684 {-4.37842369, 2.634727}, //
+
1685 {-4.29695415, 4.92231846}, //
+
1686 {-4.29695415, 4.92231846}, //
+
1687 {-5.03241968, 4.88416386}, //
+
1688 {-5.03241968, 4.51597786}, //
+
1689 {-5.03241968, 4.51597786}, //
+
1690 });
+
1691 TestPoly(polys, 9);
+
1692}
+
1693
+
1694TEST(Polygon, Small) {
+
1695 Polygons polys;
+
1696 polys.push_back({
+
1697 {-0.487163663, 0.00357927009}, //
+
1698 {-0.49125129, 0.244737789}, //
+
1699 {-0.491251856, 0.24427411}, //
+
1700 {-0.491260529, 0.245025411}, //
+
1701 {-0.49067378, 6.32605588e-05}, //
+
1702 });
+
1703 TestPoly(polys, 3, 0.0001);
+
1704};
+
1705
+
1706TEST(Polygon, Comb) {
+
1707 Polygons polys;
+
1708 polys.push_back({
+
1709 {0.462962955, -0.4272976528}, //
+
1710 {0.5, -0.425925917}, //
+
1711 {-0.5, -0.42592591283}, //
+
1712 {-0.5, -0.462962955269}, //
+
1713 {-0.462962985, -0.461591214268}, //
+
1714 {-0.462962985, -0.42592591282}, //
+
1715 {-0.42592594, -0.42592591280}, //
+
1716 {-0.42592594, -0.460219473266}, //
+
1717 {-0.351851881, -0.45747599247}, //
+
1718 {-0.351851881, -0.42592591257}, //
+
1719 {-0.314814836, -0.42592591256}, //
+
1720 {-0.314814836, -0.456104249245}, //
+
1721 {-0.240740746, -0.453360766132}, //
+
1722 {-0.240740746, -0.42592591143}, //
+
1723 {-0.203703716, -0.42592591142}, //
+
1724 {-0.203703716, -0.451989025130}, //
+
1725 {-0.129629642, -0.449245542128}, //
+
1726 {-0.129629642, -0.42592591141}, //
+
1727 {-0.092592597, -0.42592591119}, //
+
1728 {-0.092592597, -0.447873801111}, //
+
1729 {-0.0185185187, -0.445130289109}, //
+
1730 {-0.0185185187, -0.42592591117}, //
+
1731 {0.0185185187, -0.4259259169}, //
+
1732 {0.0185185187, -0.44375854762}, //
+
1733 {0.0925925896, -0.44101506560}, //
+
1734 {0.0925925896, -0.4259259168}, //
+
1735 {0.129629627, -0.4259259152}, //
+
1736 {0.129629627, -0.43964332341}, //
+
1737 {0.203703731, -0.43689984150}, //
+
1738 {0.203703731, -0.4259259151}, //
+
1739 {0.240740761, -0.4259259149}, //
+
1740 {0.240740761, -0.435528148}, //
+
1741 {0.314814806, -0.4327846170}, //
+
1742 {0.314814806, -0.425925911}, //
+
1743 {0.351851851, -0.425925919}, //
+
1744 {0.351851851, -0.4314128768}, //
+
1745 {0.42592591, -0.4286693931}, //
+
1746 {0.42592591, -0.425925912}, //
+
1747 {0.462962955, -0.425925919}, //
+
1748 });
+
1749 TestPoly(polys, 37);
+
1750}
+
1751
+
1752TEST(Polygon, Comb2) {
+
1753 Polygons polys;
+
1754 polys.push_back({
+
1755 {-0.5, -0.462962955}, //
+
1756 {-0.462962955, -0.461591214}, //
+
1757 {-0.462962955, -0.425925913}, //
+
1758 {-0.42592591, -0.425925915}, //
+
1759 {-0.42592591, -0.460219473}, //
+
1760 {-0.351851851, -0.457475998}, //
+
1761 {-0.351851851, -0.425925915}, //
+
1762 {-0.314814806, -0.425925916}, //
+
1763 {-0.314814806, -0.4561042490}, //
+
1764 {-0.240740761, -0.45336076632}, //
+
1765 {-0.240740761, -0.4259259144}, //
+
1766 {-0.203703731, -0.4259259145}, //
+
1767 {-0.203703731, -0.45198902534}, //
+
1768 {-0.129629627, -0.44924554237}, //
+
1769 {-0.129629627, -0.4259259147}, //
+
1770 {-0.0925925896, -0.4259259164}, //
+
1771 {-0.0925925896, -0.44787380155}, //
+
1772 {-0.0185185187, -0.44513028958}, //
+
1773 {-0.0185185187, -0.4259259166}, //
+
1774 {0.0185185187, -0.42592591113}, //
+
1775 {0.0185185187, -0.443758547104}, //
+
1776 {0.092592597, -0.441015065107}, //
+
1777 {0.092592597, -0.42592591116}, //
+
1778 {0.129629642, -0.42592591134}, //
+
1779 {0.129629642, -0.439643323122}, //
+
1780 {0.203703716, -0.436899841137}, //
+
1781 {0.203703716, -0.42592591138}, //
+
1782 {0.240740746, -0.42592591140}, //
+
1783 {0.240740746, -0.4355281139}, //
+
1784 {0.314814836, -0.432784617251}, //
+
1785 {0.314814836, -0.42592591252}, //
+
1786 {0.351851881, -0.42592591254}, //
+
1787 {0.351851881, -0.431412876253}, //
+
1788 {0.42592594, -0.428669393272}, //
+
1789 {0.42592594, -0.42592591273}, //
+
1790 {0.462962985, -0.42592591278}, //
+
1791 {0.462962985, -0.427297652277}, //
+
1792 {0.5, -0.42592591279}, //
+
1793 {-0.5, -0.425925912}, //
+
1794 });
+
1795 TestPoly(polys, 37);
+
1796}
+
1797
+
1798TEST(Polygon, PointPoly) {
+
1799 Polygons polys;
+
1800 polys.push_back({
+
1801 {0, -15.97809792}, //
+
1802 {5.08144999, -14.267872844}, //
+
1803 {4.83870935, -14.078962343}, //
+
1804 {4.38336992, -13.749200837}, //
+
1805 {4.35483837, -13.728474638}, //
+
1806 {4.33122683, -13.71277935}, //
+
1807 {3.87096763, -13.368933730}, //
+
1808 {3.52637458, -13.13335511}, //
+
1809 {3.38709664, -13.02511889}, //
+
1810 {3.10755324, -12.82632165}, //
+
1811 {2.90322566, -12.68068413}, //
+
1812 {2.80962205, -12.62084011}, //
+
1813 {2.41935468, -12.32800489}, //
+
1814 {2.16151524, -12.15446578}, //
+
1815 {1.93548381, -11.97346316}, //
+
1816 {1.56781006, -11.70936397}, //
+
1817 {1.45161283, -11.60849956}, //
+
1818 {1.02412188, -11.27564533}, //
+
1819 {0.967741907, -11.22161294}, //
+
1820 {0.628127813, -10.92966180}, //
+
1821 {0, -10.92966183}, //
+
1822 });
+
1823 polys.push_back({
+
1824 {15, -10.9296618052}, //
+
1825 {15, -10.9296618051}, //
+
1826 {15, -10.9296618053}, //
+
1827 });
+
1828 TestPoly(polys, 20);
+
1829};
+
1830
+
1831TEST(Polygon, KissingZigzag) {
+
1832 Polygons polys;
+
1833 polys.push_back({
+
1834 {37.4667358, 0}, //
+
1835 {27.8904877, -3.04520559}, //
+
1836 {27.8904877, 3.04520559}, //
+
1837 {37.4667358, 0}, //
+
1838 {36.4568138, 8.64042377}, //
+
1839 {27.8409691, 3.46886754}, //
+
1840 {26.4364243, 9.39511108}, //
+
1841 {36.4568138, 8.64042377}, //
+
1842 {33.4814987, 16.8150406}, //
+
1843 {26.2905369, 9.79593277}, //
+
1844 {23.5571651, 15.23852350}, //
+
1845 {33.4814987, 16.81504061}, //
+
1846 {28.7011852, 24.08315282}, //
+
1847 {23.322773, 15.59489543}, //
+
1848 {19.4079323, 20.26042184}, //
+
1849 {28.7011852, 24.08315285}, //
+
1850 {22.3735847, 30.05293856}, //
+
1851 {19.0976753, 20.55313687}, //
+
1852 {14.2124147, 24.19007688}, //
+
1853 {22.3735847, 30.05293859}, //
+
1854 {14.8398142, 34.40256120}, //
+
1855 {13.8430138, 24.40335081}, //
+
1856 {8.2507, 26.81563952}, //
+
1857 {14.8398142, 34.40256123}, //
+
1858 {6.50603199, 36.89752964}, //
+
1859 {7.84207535, 26.9379735}, //
+
1860 {1.84419155, 27.99556356}, //
+
1861 {6.50603199, 36.89752967}, //
+
1862 {-2.1784966, 37.40335088}, //
+
1863 {1.41836619, 28.02036489}, //
+
1864 {-4.66174126, 27.66623880}, //
+
1865 {-2.1784966, 37.40335081}, //
+
1866 {-10.7455816, 35.89273832}, //
+
1867 {-5.08180761, 27.59216883}, //
+
1868 {-10.916357, 25.84541894}, //
+
1869 {-10.7455816, 35.89273835}, //
+
1870 {-18.7333698, 32.44714366}, //
+
1871 {-11.3080206, 25.67647177}, //
+
1872 {-16.5824718, 22.63126758}, //
+
1873 {-18.7333698, 32.44714369}, //
+
1874 {-25.711235, 27.25231360}, //
+
1875 {-16.924614, 22.37655071}, //
+
1876 {-21.3546181, 18.19705772}, //
+
1877 {-25.711235, 27.25231363}, //
+
1878 {-31.3030052, 20.58830454}, //
+
1879 {-21.6287994, 17.87030415}, //
+
1880 {-24.9755325, 12.78183846}, //
+
1881 {-31.3030052, 20.58830457}, //
+
1882 {-35.2072144, 12.81438068}, //
+
1883 {-25.1669636, 12.40066729}, //
+
1884 {-27.2500057, 6.677553180}, //
+
1885 {-35.2072144, 12.81438061}, //
+
1886 {-37.213398, 4.349624632}, //
+
1887 {-27.3483734, 6.262504583}, //
+
1888 {-28.0554276, 0.2132747174}, //
+
1889 {-37.213398, 4.349624635}, //
+
1890 {-37.213398, -4.349621776}, //
+
1891 {-28.0554276, -0.213272817}, //
+
1892 {-27.3483734, -6.262502678}, //
+
1893 {-37.213398, -4.349621779}, //
+
1894 {-35.2072144, -12.81437870}, //
+
1895 {-27.2500057, -6.677552221}, //
+
1896 {-25.1669636, -12.40066622}, //
+
1897 {-35.2072144, -12.81437873}, //
+
1898 {-31.3029995, -20.58831024}, //
+
1899 {-24.9755306, -12.78184325}, //
+
1900 {-21.6287937, -17.87030796}, //
+
1901 {-31.3029995, -20.58831027}, //
+
1902 {-25.7112312, -27.25231938}, //
+
1903 {-21.3546143, -18.19706159}, //
+
1904 {-16.9246101, -22.37655450}, //
+
1905 {-25.7112312, -27.25231931}, //
+
1906 {-18.7333641, -32.44714742}, //
+
1907 {-16.5824661, -22.63126953}, //
+
1908 {-11.3080158, -25.67647364}, //
+
1909 {-18.7333641, -32.44714745}, //
+
1910 {-10.7455835, -35.89273836}, //
+
1911 {-10.9163589, -25.84541897}, //
+
1912 {-5.08180904, -27.59216888}, //
+
1913 {-10.7455835, -35.89273839}, //
+
1914 {-2.17849016, -37.40335080}, //
+
1915 {-4.66173601, -27.66623881}, //
+
1916 {1.41837108, -28.02036482}, //
+
1917 {-2.17849016, -37.40335083}, //
+
1918 {6.50602913, -36.89752964}, //
+
1919 {1.84418964, -27.99556355}, //
+
1920 {7.84207344, -26.9379736}, //
+
1921 {6.50602913, -36.89752967}, //
+
1922 {14.8398247, -34.40255748}, //
+
1923 {8.25070763, -26.81563579}, //
+
1924 {13.8430195, -24.4033470}, //
+
1925 {14.8398247, -34.40255741}, //
+
1926 {22.3735847, -30.05293852}, //
+
1927 {14.2124147, -24.19007683}, //
+
1928 {19.0976753, -20.55313684}, //
+
1929 {22.3735847, -30.05293855}, //
+
1930 {28.7011795, -24.08315856}, //
+
1931 {19.4079285, -20.26042567}, //
+
1932 {23.3227692, -15.59490118}, //
+
1933 {28.7011795, -24.08315859}, //
+
1934 {33.4815025, -16.815036800}, //
+
1935 {23.5571671, -15.238520601}, //
+
1936 {26.2905388, -9.7959299102}, //
+
1937 {33.4815025, -16.815036803}, //
+
1938 {36.4568138, -8.6404275904}, //
+
1939 {26.4364243, -9.3951129905}, //
+
1940 {27.8409691, -3.4688699206}, //
+
1941 {36.4568138, -8.6404275907}, //
+
1942 });
+
1943 TestPoly(polys, 106);
+
1944}
+
1945
+
1946TEST(Polygon, Sponge) {
+
1947 Polygons polys;
+
1948 polys.push_back({
+
1949 {-0.5, -0.5}, //
+
1950 {-0.388888896, -0.3888888963}, //
+
1951 {-0.388888896, -0.3888888964}, //
+
1952 {-0.388888896, -0.2777777916}, //
+
1953 {-0.388888896, -0.2777777917}, //
+
1954 {-0.277777791, -0.2777777910}, //
+
1955 {-0.166666657, -0.1666666721}, //
+
1956 {-0.166666672, -0.1666666722}, //
+
1957 {-0.166666672, -0.1666666723}, //
+
1958 {-0.166666672, 0.1666666726}, //
+
1959 {-0.166666672, 0.1666666727}, //
+
1960 {0.166666657, 0.16666667242}, //
+
1961 {0.277777791, 0.27777779153}, //
+
1962 {0.277777791, 0.27777779154}, //
+
1963 {0.277777791, 0.27777779155}, //
+
1964 {0.277777791, 0.38888889656}, //
+
1965 {0.277777791, 0.38888889657}, //
+
1966 {0.388888896, 0.38888889661}, //
+
1967 {0.388888896, 0.38888889660}, //
+
1968 {0.5, 0.5}, //
+
1969 {-0.5, 0.5}, //
+
1970 });
+
1971 polys.push_back({
+
1972 {-0.388888896, -0.0555555563}, //
+
1973 {-0.388888896, -0.0555555564}, //
+
1974 {-0.388888896, 0.0555555563}, //
+
1975 {-0.388888896, 0.0555555564}, //
+
1976 {-0.277777791, 0.0555555566}, //
+
1977 {-0.277777791, 0.0555555565}, //
+
1978 {-0.277777791, -0.0555555565}, //
+
1979 {-0.277777791, -0.0555555566}, //
+
1980 });
+
1981 polys.push_back({
+
1982 {-0.277777791, 0.2777777912}, //
+
1983 {-0.277777791, 0.2777777913}, //
+
1984 {-0.388888896, 0.2777777917}, //
+
1985 {-0.388888896, 0.2777777918}, //
+
1986 {-0.388888896, 0.3888888960}, //
+
1987 {-0.388888896, 0.3888888961}, //
+
1988 {-0.277777791, 0.3888888964}, //
+
1989 {-0.277777791, 0.3888888965}, //
+
1990 });
+
1991 polys.push_back({
+
1992 {-0.055555556, 0.2777777918}, //
+
1993 {-0.055555556, 0.2777777919}, //
+
1994 {-0.055555556, 0.3888888960}, //
+
1995 {-0.055555556, 0.3888888961}, //
+
1996 {0.055555556, 0.38888889647}, //
+
1997 {0.055555556, 0.38888889648}, //
+
1998 {0.055555556, 0.27777779146}, //
+
1999 {0.055555556, 0.27777779145}, //
+
2000 });
+
2001 TestPoly(polys, 49);
+
2002}
+
2003
+
2004TEST(Polygon, Sponge2) {
+
2005 Polygons polys;
+
2006 polys.push_back({
+
2007 {0.5, -0.5}, //
+
2008 {0.5, 0.5}, //
+
2009 {-0.5, 0.5}, //
+
2010 {-0.388888896, 0.388888896}, //
+
2011 {-0.388888896, 0.388888896}, //
+
2012 {-0.277777791, 0.388888896}, //
+
2013 {-0.277777791, 0.388888896}, //
+
2014 {-0.277777791, 0.388888896}, //
+
2015 {-0.277777791, 0.277777791}, //
+
2016 {-0.277777791, 0.277777791}, //
+
2017 {-0.166666657, 0.166666672}, //
+
2018 {-0.166666657, 0.166666672}, //
+
2019 {0.166666672, 0.166666672}, //
+
2020 {0.166666672, 0.166666672}, //
+
2021 {0.166666672, 0.166666672}, //
+
2022 {0.166666672, 0.166666672}, //
+
2023 {0.166666672, 0.166666672}, //
+
2024 {0.166666672, -0.166666672}, //
+
2025 {0.166666672, -0.166666672}, //
+
2026 {0.166666672, -0.166666672}, //
+
2027 {0.166666672, -0.166666672}, //
+
2028 {0.166666657, -0.166666672}, //
+
2029 {0.277777791, -0.277777791}, //
+
2030 {0.388888896, -0.277777791}, //
+
2031 {0.388888896, -0.277777791}, //
+
2032 {0.388888896, -0.277777791}, //
+
2033 {0.388888896, -0.388888896}, //
+
2034 });
+
2035 polys.push_back({
+
2036 {0.388888896, -0.055555556}, //
+
2037 {0.277777791, -0.055555556}, //
+
2038 {0.277777791, -0.055555556}, //
+
2039 {0.277777791, -0.055555556}, //
+
2040 {0.277777791, 0.055555556}, //
+
2041 {0.388888896, 0.055555556}, //
+
2042 {0.388888896, 0.055555556}, //
+
2043 {0.388888896, 0.055555556}, //
+
2044 });
+
2045 polys.push_back({
+
2046 {0.388888896, 0.277777791}, //
+
2047 {0.277777791, 0.277777791}, //
+
2048 {0.277777791, 0.277777791}, //
+
2049 {0.277777791, 0.277777791}, //
+
2050 {0.277777791, 0.388888896}, //
+
2051 {0.388888896, 0.388888896}, //
+
2052 {0.388888896, 0.388888896}, //
+
2053 {0.388888896, 0.388888896}, //
+
2054 });
+
2055 polys.push_back({
+
2056 {0.055555556, 0.277777791}, //
+
2057 {0.055555556, 0.277777791}, //
+
2058 {-0.055555556, 0.277777791}, //
+
2059 {-0.055555556, 0.277777791}, //
+
2060 {-0.055555556, 0.388888896}, //
+
2061 {-0.055555556, 0.388888896}, //
+
2062 {0.055555556, 0.388888896}, //
+
2063 {0.055555556, 0.388888896}, //
+
2064 });
+
2065 TestPoly(polys, 55);
+
2066}
+
2067
+
2068TEST(Polygon, SquareHoles) {
+
2069 Polygons polys;
+
2070 polys.push_back({
+
2071 {0.388888896, -0.2777777910}, //
+
2072 {0.388888896, -0.388888896}, //
+
2073 {0.277777791, -0.388888896}, //
+
2074 {0.277777791, -0.2777777911}, //
+
2075 });
+
2076 polys.push_back({
+
2077 {0.388888896, -0.0555555564}, //
+
2078 {0.277777791, -0.0555555562}, //
+
2079 {0.277777791, 0.0555555566}, //
+
2080 {0.388888896, 0.0555555565}, //
+
2081 });
+
2082 polys.push_back({
+
2083 {0.055555556, -0.2777777915}, //
+
2084 {0.055555556, -0.3888888963}, //
+
2085 {-0.055555556, -0.3888888963}, //
+
2086 {-0.055555556, -0.2777777914}, //
+
2087 });
+
2088 polys.push_back({
+
2089 {0.388888896, 0.2777777918}, //
+
2090 {0.277777791, 0.2777777917}, //
+
2091 {0.277777791, 0.3888888960}, //
+
2092 {0.388888896, 0.3888888969}, //
+
2093 });
+
2094 polys.push_back({
+
2095 {0.166666672, 0.1666666722}, //
+
2096 {0.166666672, -0.1666666721}, //
+
2097 {-0.166666672, -0.1666666726}, //
+
2098 {-0.166666672, 0.1666666723}, //
+
2099 });
+
2100 polys.push_back({
+
2101 {0.055555556, 0.3888888965}, //
+
2102 {0.055555556, 0.2777777912}, //
+
2103 {-0.055555556, 0.2777777914}, //
+
2104 {-0.055555556, 0.3888888966}, //
+
2105 });
+
2106 polys.push_back({
+
2107 {-0.277777791, -0.2777777910}, //
+
2108 {-0.277777791, -0.3888888967}, //
+
2109 {-0.388888896, -0.3888888968}, //
+
2110 {-0.388888896, -0.2777777919}, //
+
2111 });
+
2112 polys.push_back({
+
2113 {-0.277777791, -0.0555555567}, //
+
2114 {-0.388888896, -0.0555555561}, //
+
2115 {-0.388888896, 0.0555555569}, //
+
2116 {-0.277777791, 0.0555555568}, //
+
2117 });
+
2118 polys.push_back({
+
2119 {-0.277777791, 0.3888888962}, //
+
2120 {-0.277777791, 0.2777777910}, //
+
2121 {-0.388888896, 0.2777777911}, //
+
2122 {-0.388888896, 0.3888888963}, //
+
2123 });
+
2124 polys.push_back({
+
2125 {-0.5, -0.5}, //
+
2126 {0.5, -0.5}, //
+
2127 {0.5, 0.5}, //
+
2128 {-0.5, 0.5}, //
+
2129 });
+
2130 TestPoly(polys, 56);
+
2131}
+
2132
+
2133TEST(Polygon, Woodgrain1) {
+
2134 Polygons polys;
+
2135 polys.push_back({
+
2136 {72.5, -50}, //
+
2137 {-72.5, 50}, //
+
2138 {-72.5, -50}, //
+
2139 });
+
2140 polys.push_back({
+
2141 {27.7341537, -49.9853325}, //
+
2142 {27.4095287, -49.6340637}, //
+
2143 {27.9608383, -49.758522}, //
+
2144 });
+
2145 polys.push_back({
+
2146 {-1.56910598, -49.98423}, //
+
2147 {-1.58251643, -49.9838409}, //
+
2148 {-1.19169295, -48.0386696}, //
+
2149 {-1.02179492, -49.9855652}, //
+
2150 });
+
2151 TestPoly(polys, 12, 0.00145);
+
2152}
+
2153
+
2154TEST(Polygon, Woodgrain2) {
+
2155 Polygons polys;
+
2156 polys.push_back({
+
2157 {22.7295628, -49.5001106}, //
+
2158 {-21.1059895, -49.9855423}, //
+
2159 {-35.0938339, 10.1798563}, //
+
2160 {-72.5, -50}, //
+
2161 {-12.7149582, -50}, //
+
2162 });
+
2163 polys.push_back({
+
2164 {-40.1850586, -49.9840584}, //
+
2165 {-40.2071075, -49.9845123}, //
+
2166 {-40.3756485, -49.9855652}, //
+
2167 {-40.0327415, -19.857235}, //
+
2168 });
+
2169 TestPoly(polys, 9, 0.00145);
+
2170}
+
2171
+
2172TEST(Polygon, Separate_Quad_And_Tri) {
+
2173 Polygons polys;
+
2174 polys.push_back({{3, 0}, {3, 1}, {2, 0}});
+
2175 polys.push_back({{0.2, 0.8}, {0.8, 0.8}, {1, 1}, {0, 1}});
+
2176 TestPoly(polys, 3);
+
2177}
+
2178
+
2179TEST(Polygon, Very_Branchy_With_hole) {
+
2180 Polygons polys;
+
2181 polys.push_back({
+
2182 {-12.383395, 191.627597},
+
2183 {-45.085282, 233.569954},
+
2184 {-49.061051, 241.121459},
+
2185 {-55.214156, 240.296329},
+
2186 {-59.061922, 241.234954},
+
2187 {-60.674552, 242.992235},
+
2188 {-61.063571, 242.635239},
+
2189 {-61.073658, 243.020877},
+
2190 {-61.636008, 243.147031},
+
2191 {-62.268425, 240.330262},
+
2192 {-61.609029, 240.203785},
+
2193 {-59.2187, 240.610881},
+
2194 {-55.133, 239.584},
+
2195 {-50.566424, 240.105481},
+
2196 {-45.687, 232.57},
+
2197 {-12.291, 189.141},
+
2198 {0, 170},
+
2199 {40.7437697, 229.300974},
+
2200 {55.7083522, 236.787552},
+
2201 {80.252253, 248.42422},
+
2202 {79.4563048, 248.689086},
+
2203 {56.830082, 238.344589},
+
2204 {63.6074538, 247.073547},
+
2205 {70.3643318, 251.593951},
+
2206 {76.0529064, 252.091121},
+
2207 {79.4563, 248.69},
+
2208 {75.981, 253.138},
+
2209 {69.6668222, 252.703022},
+
2210 {62.3134, 248.079},
+
2211 {54.8726126, 238.495329},
+
2212 {38.62879, 230.54576},
+
2213 {0, 180},
+
2214 });
+
2215 polys.push_back({
+
2216 {-61.065936, 242.624693},
+
2217 {-59.65022, 241.08199},
+
2218 {-61.482003, 240.77002},
+
2219 });
+
2220 TestPoly(polys, 35);
+
2221}
+
+
+ + + + diff --git a/docs/html/public_8h_source.html b/docs/html/public_8h_source.html new file mode 100644 index 000000000..335032a4f --- /dev/null +++ b/docs/html/public_8h_source.html @@ -0,0 +1,696 @@ + + + + + + + +Manifold: public.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
public.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#define GLM_ENABLE_EXPERIMENTAL // needed for glm/gtx/compatibility.hpp
+
17#define GLM_FORCE_EXPLICIT_CTOR
+
18#include <glm/ext/matrix_transform.hpp>
+
19#include <glm/glm.hpp>
+
20#include <glm/gtc/constants.hpp>
+
21#include <glm/gtx/compatibility.hpp>
+
22#include <glm/gtx/rotate_vector.hpp>
+
23#include <limits>
+
24#include <memory>
+
25#include <unordered_map>
+
26#include <vector>
+
27
+
28#ifdef MANIFOLD_DEBUG
+
29#include <iomanip>
+
30#include <iostream>
+
31#include <sstream>
+
32#endif
+
33
+
34namespace manifold {
+
35
+
+
39[[nodiscard]] constexpr std::size_t operator""_uz(
+
40 unsigned long long n) noexcept {
+
41 return n;
+
42}
+
+
43
+
44constexpr float kTolerance = 1e-5;
+
45
+
+
56inline float sind(float x) {
+
57 if (!std::isfinite(x)) return sin(x);
+
58 if (x < 0.0f) return -sind(-x);
+
59 int quo;
+
60 x = remquo(fabs(x), 90.0f, &quo);
+
61 switch (quo % 4) {
+
62 case 0:
+
63 return sin(glm::radians(x));
+
64 case 1:
+
65 return cos(glm::radians(x));
+
66 case 2:
+
67 return -sin(glm::radians(x));
+
68 case 3:
+
69 return -cos(glm::radians(x));
+
70 }
+
71 return 0.0f;
+
72}
+
+
73
+
79inline float cosd(float x) { return sind(x + 90.0f); }
+
80
+
+
87inline glm::mat4x3 RotateUp(glm::vec3 up) {
+
88 up = glm::normalize(up);
+
89 glm::vec3 axis = glm::cross(up, {0, 0, 1});
+
90 float angle = glm::asin(glm::length(axis));
+
91 if (glm::dot(up, {0, 0, 1}) < 0) angle = glm::pi<float>() - angle;
+
92 return glm::mat4x3(glm::rotate(glm::mat4(1), angle, axis));
+
93}
+
+
94
+
+
106inline int CCW(glm::vec2 p0, glm::vec2 p1, glm::vec2 p2, float tol) {
+
107 glm::vec2 v1 = p1 - p0;
+
108 glm::vec2 v2 = p2 - p0;
+
109 float area = v1.x * v2.y - v1.y * v2.x;
+
110 float base2 = glm::max(glm::dot(v1, v1), glm::dot(v2, v2));
+
111 if (area * area * 4 <= base2 * tol * tol)
+
112 return 0;
+
113 else
+
114 return area > 0 ? 1 : -1;
+
115}
+
+
116
+
122using SimplePolygon = std::vector<glm::vec2>;
+
123
+
130using Polygons = std::vector<SimplePolygon>;
+
131
+
+
135struct Mesh {
+
137 std::vector<glm::vec3> vertPos;
+
140 std::vector<glm::ivec3> triVerts;
+
144 std::vector<glm::vec3> vertNormal;
+
149 std::vector<glm::vec4> halfedgeTangent;
+
154 float precision = 0;
+
155};
+
+
156
+
+ +
163 size_t halfedge;
+ +
168};
+
+
169
+
+ +
174 float surfaceArea, volume;
+
175};
+
+
176
+
+
177struct Box {
+
178 glm::vec3 min = glm::vec3(std::numeric_limits<float>::infinity());
+
179 glm::vec3 max = glm::vec3(-std::numeric_limits<float>::infinity());
+
180
+
184 Box() {}
+
185
+
+
189 Box(const glm::vec3 p1, const glm::vec3 p2) {
+
190 min = glm::min(p1, p2);
+
191 max = glm::max(p1, p2);
+
192 }
+
+
193
+
197 glm::vec3 Size() const { return max - min; }
+
198
+
202 glm::vec3 Center() const { return 0.5f * (max + min); }
+
203
+
+
208 float Scale() const {
+
209 glm::vec3 absMax = glm::max(glm::abs(min), glm::abs(max));
+
210 return glm::max(absMax.x, glm::max(absMax.y, absMax.z));
+
211 }
+
+
212
+
+
216 bool Contains(const glm::vec3& p) const {
+
217 return glm::all(glm::greaterThanEqual(p, min)) &&
+
218 glm::all(glm::greaterThanEqual(max, p));
+
219 }
+
+
220
+
+
224 bool Contains(const Box& box) const {
+
225 return glm::all(glm::greaterThanEqual(box.min, min)) &&
+
226 glm::all(glm::greaterThanEqual(max, box.max));
+
227 }
+
+
228
+
+
232 void Union(const glm::vec3 p) {
+
233 min = glm::min(min, p);
+
234 max = glm::max(max, p);
+
235 }
+
+
236
+
+
240 Box Union(const Box& box) const {
+
241 Box out;
+
242 out.min = glm::min(min, box.min);
+
243 out.max = glm::max(max, box.max);
+
244 return out;
+
245 }
+
+
246
+
+
254 Box Transform(const glm::mat4x3& transform) const {
+
255 Box out;
+
256 glm::vec3 minT = transform * glm::vec4(min, 1.0f);
+
257 glm::vec3 maxT = transform * glm::vec4(max, 1.0f);
+
258 out.min = glm::min(minT, maxT);
+
259 out.max = glm::max(minT, maxT);
+
260 return out;
+
261 }
+
+
262
+
+
266 Box operator+(glm::vec3 shift) const {
+
267 Box out;
+
268 out.min = min + shift;
+
269 out.max = max + shift;
+
270 return out;
+
271 }
+
+
272
+
+
276 Box& operator+=(glm::vec3 shift) {
+
277 min += shift;
+
278 max += shift;
+
279 return *this;
+
280 }
+
+
281
+
+
285 Box operator*(glm::vec3 scale) const {
+
286 Box out;
+
287 out.min = min * scale;
+
288 out.max = max * scale;
+
289 return out;
+
290 }
+
+
291
+
+
295 Box& operator*=(glm::vec3 scale) {
+
296 min *= scale;
+
297 max *= scale;
+
298 return *this;
+
299 }
+
+
300
+
+
304 inline bool DoesOverlap(const Box& box) const {
+
305 return min.x <= box.max.x && min.y <= box.max.y && min.z <= box.max.z &&
+
306 max.x >= box.min.x && max.y >= box.min.y && max.z >= box.min.z;
+
307 }
+
+
308
+
+
313 inline bool DoesOverlap(glm::vec3 p) const { // projected in z
+
314 return p.x <= max.x && p.x >= min.x && p.y <= max.y && p.y >= min.y;
+
315 }
+
+
316
+
+
320 bool IsFinite() const {
+
321 return glm::all(glm::isfinite(min)) && glm::all(glm::isfinite(max));
+
322 }
+
+
323};
+
+
324
+
+
328struct Rect {
+
329 glm::vec2 min = glm::vec2(std::numeric_limits<float>::infinity());
+
330 glm::vec2 max = glm::vec2(-std::numeric_limits<float>::infinity());
+
331
+
335 Rect() {}
+
336
+
+
340 Rect(const glm::vec2 a, const glm::vec2 b) {
+
341 min = glm::min(a, b);
+
342 max = glm::max(a, b);
+
343 }
+
+
344
+
349
+
353 glm::vec2 Size() const { return max - min; }
+
354
+
+
358 float Area() const {
+
359 auto sz = Size();
+
360 return sz.x * sz.y;
+
361 }
+
+
362
+
+
367 float Scale() const {
+
368 glm::vec2 absMax = glm::max(glm::abs(min), glm::abs(max));
+
369 return glm::max(absMax.x, absMax.y);
+
370 }
+
+
371
+
375 glm::vec2 Center() const { return 0.5f * (max + min); }
+
376
+
+
380 bool Contains(const glm::vec2& p) const {
+
381 return glm::all(glm::greaterThanEqual(p, min)) &&
+
382 glm::all(glm::greaterThanEqual(max, p));
+
383 }
+
+
384
+
+
388 bool Contains(const Rect& rect) const {
+
389 return glm::all(glm::greaterThanEqual(rect.min, min)) &&
+
390 glm::all(glm::greaterThanEqual(max, rect.max));
+
391 }
+
+
392
+
+
396 bool DoesOverlap(const Rect& rect) const {
+
397 return min.x <= rect.max.x && min.y <= rect.max.y && max.x >= rect.min.x &&
+
398 max.y >= rect.min.y;
+
399 }
+
+
400
+
404 bool IsEmpty() const { return max.y <= min.y || max.x <= min.x; };
+
405
+
+
409 bool IsFinite() const {
+
410 return glm::all(glm::isfinite(min)) && glm::all(glm::isfinite(max));
+
411 }
+
+
412
+
414
+
418
+
+
422 void Union(const glm::vec2 p) {
+
423 min = glm::min(min, p);
+
424 max = glm::max(max, p);
+
425 }
+
+
426
+
+
430 Rect Union(const Rect& rect) const {
+
431 Rect out;
+
432 out.min = glm::min(min, rect.min);
+
433 out.max = glm::max(max, rect.max);
+
434 return out;
+
435 }
+
+
436
+
+
440 Rect operator+(const glm::vec2 shift) const {
+
441 Rect out;
+
442 out.min = min + shift;
+
443 out.max = max + shift;
+
444 return out;
+
445 }
+
+
446
+
+
450 Rect& operator+=(const glm::vec2 shift) {
+
451 min += shift;
+
452 max += shift;
+
453 return *this;
+
454 }
+
+
455
+
+
459 Rect operator*(const glm::vec2 scale) const {
+
460 Rect out;
+
461 out.min = min * scale;
+
462 out.max = max * scale;
+
463 return out;
+
464 }
+
+
465
+
+
469 Rect& operator*=(const glm::vec2 scale) {
+
470 min *= scale;
+
471 max *= scale;
+
472 return *this;
+
473 }
+
+
474
+
+
482 Rect Transform(const glm::mat3x2& m) const {
+
483 Rect rect;
+
484 rect.min = m * glm::vec3(min, 1);
+
485 rect.max = m * glm::vec3(max, 1);
+
486 return rect;
+
487 }
+
+
489};
+
+
499enum class OpType { Add, Subtract, Intersect };
+
500
+
501constexpr int DEFAULT_SEGMENTS = 0;
+
502constexpr float DEFAULT_ANGLE = 10.0f;
+
503constexpr float DEFAULT_LENGTH = 1.0f;
+
+
512class Quality {
+
513 private:
+
514 inline static int circularSegments_ = DEFAULT_SEGMENTS;
+
515 inline static float circularAngle_ = DEFAULT_ANGLE;
+
516 inline static float circularEdgeLength_ = DEFAULT_LENGTH;
+
517
+
518 public:
+
+
529 static void SetMinCircularAngle(float angle) {
+
530 if (angle <= 0) return;
+
531 circularAngle_ = angle;
+
532 }
+
+
533
+
+
543 static void SetMinCircularEdgeLength(float length) {
+
544 if (length <= 0) return;
+
545 circularEdgeLength_ = length;
+
546 }
+
+
547
+
+
557 static void SetCircularSegments(int number) {
+
558 if (number < 3 && number != 0) return;
+
559 circularSegments_ = number;
+
560 }
+
+
561
+
+
569 static int GetCircularSegments(float radius) {
+
570 if (circularSegments_ > 0) return circularSegments_;
+
571 int nSegA = 360.0f / circularAngle_;
+
572 int nSegL = 2.0f * radius * glm::pi<float>() / circularEdgeLength_;
+
573 int nSeg = fmin(nSegA, nSegL) + 3;
+
574 nSeg -= nSeg % 4;
+
575 return std::max(nSeg, 3);
+
576 }
+
+
577
+
578 static void ResetToDefaults() {
+
579 circularSegments_ = DEFAULT_SEGMENTS;
+
580 circularAngle_ = DEFAULT_ANGLE;
+
581 circularEdgeLength_ = DEFAULT_LENGTH;
+
582 }
+
583};
+
+
601#ifdef MANIFOLD_DEBUG
+
+
602struct userErr : public virtual std::runtime_error {
+
603 using std::runtime_error::runtime_error;
+
604};
+
+
+
605struct topologyErr : public virtual std::runtime_error {
+
606 using std::runtime_error::runtime_error;
+
607};
+
+
+
608struct geometryErr : public virtual std::runtime_error {
+
609 using std::runtime_error::runtime_error;
+
610};
+
+
611using logicErr = std::logic_error;
+
612#endif
+
+ +
622 bool intermediateChecks = false;
+
625 bool verbose = false;
+
628 bool processOverlaps = true;
+
631 bool suppressErrors = false;
+
633 bool deterministic = false;
+
635 bool cleanupTriangles = true;
+
636};
+
+
637
+
638#ifdef MANIFOLD_DEBUG
+
639
+
640template <typename T>
+
641inline std::ostream& operator<<(std::ostream& stream, const glm::tvec2<T>& v) {
+
642 return stream << "x = " << v.x << ", y = " << v.y;
+
643}
+
644
+
645template <typename T>
+
646inline std::ostream& operator<<(std::ostream& stream, const glm::tvec3<T>& v) {
+
647 return stream << "x = " << v.x << ", y = " << v.y << ", z = " << v.z;
+
648}
+
649
+
650template <typename T>
+
651inline std::ostream& operator<<(std::ostream& stream, const glm::tvec4<T>& v) {
+
652 return stream << "x = " << v.x << ", y = " << v.y << ", z = " << v.z
+
653 << ", w = " << v.w;
+
654}
+
655
+
656inline std::ostream& operator<<(std::ostream& stream, const glm::mat3& mat) {
+
657 glm::mat3 tam = glm::transpose(mat);
+
658 return stream << tam[0] << std::endl
+
659 << tam[1] << std::endl
+
660 << tam[2] << std::endl;
+
661}
+
662
+
663inline std::ostream& operator<<(std::ostream& stream, const glm::mat4x3& mat) {
+
664 glm::mat3x4 tam = glm::transpose(mat);
+
665 return stream << tam[0] << std::endl
+
666 << tam[1] << std::endl
+
667 << tam[2] << std::endl;
+
668}
+
669
+
670inline std::ostream& operator<<(std::ostream& stream, const Box& box) {
+
671 return stream << "min: " << box.min << ", "
+
672 << "max: " << box.max;
+
673}
+
674
+
675inline std::ostream& operator<<(std::ostream& stream, const Rect& box) {
+
676 return stream << "min: " << box.min << ", "
+
677 << "max: " << box.max;
+
678}
+
679
+
684template <typename T>
+
+
685void Dump(const std::vector<T>& vec) {
+
686 std::cout << "Vec = " << std::endl;
+
687 for (size_t i = 0; i < vec.size(); ++i) {
+
688 std::cout << i << ", " << vec[i] << ", " << std::endl;
+
689 }
+
690 std::cout << std::endl;
+
691}
+
+
692
+
693template <typename T>
+
694void Diff(const std::vector<T>& a, const std::vector<T>& b) {
+
695 std::cout << "Diff = " << std::endl;
+
696 if (a.size() != b.size()) {
+
697 std::cout << "a and b must have the same length, aborting Diff"
+
698 << std::endl;
+
699 return;
+
700 }
+
701 for (size_t i = 0; i < a.size(); ++i) {
+
702 if (a[i] != b[i])
+
703 std::cout << i << ": " << a[i] << ", " << b[i] << std::endl;
+
704 }
+
705 std::cout << std::endl;
+
706}
+
708#endif
+
709} // namespace manifold
+
710
+
711#undef HOST_DEVICE
+
Definition public.h:512
+
static void SetMinCircularAngle(float angle)
Definition public.h:529
+
static void SetMinCircularEdgeLength(float length)
Definition public.h:543
+
static void SetCircularSegments(int number)
Definition public.h:557
+
static int GetCircularSegments(float radius)
Definition public.h:569
+
std::vector< glm::ivec3 > triVerts
Definition public.h:140
+
std::vector< glm::vec4 > halfedgeTangent
Definition public.h:149
+
float smoothness
Definition public.h:167
+
std::vector< glm::vec3 > vertNormal
Definition public.h:144
+
size_t halfedge
The halfedge index = 3 * tri + i, referring to Mesh.triVerts[tri][i].
Definition public.h:163
+
std::vector< glm::vec3 > vertPos
Required: The X-Y-Z positions of all vertices.
Definition public.h:137
+
float precision
Definition public.h:154
+
int CCW(glm::vec2 p0, glm::vec2 p1, glm::vec2 p2, float tol)
Definition public.h:106
+
float cosd(float x)
Definition public.h:79
+
std::vector< glm::vec2 > SimplePolygon
Definition public.h:122
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
glm::mat4x3 RotateUp(glm::vec3 up)
Definition public.h:87
+
float sind(float x)
Definition public.h:56
+
Definition public.h:135
+
Definition public.h:173
+
Definition public.h:161
+
OpType
Definition public.h:499
+
bool deterministic
Deterministic outputs. Will disable some parallel optimizations.
Definition public.h:633
+
bool suppressErrors
Definition public.h:631
+
bool processOverlaps
Definition public.h:628
+
bool cleanupTriangles
Perform optional but recommended triangle cleanups in SimplifyTopology()
Definition public.h:635
+
bool verbose
Definition public.h:625
+
bool intermediateChecks
Definition public.h:622
+
void Dump(const std::vector< T > &vec)
Definition public.h:685
+
Definition public.h:619
+
Definition meshIO.h:20
+
Definition public.h:177
+
bool DoesOverlap(glm::vec3 p) const
Definition public.h:313
+
bool Contains(const glm::vec3 &p) const
Definition public.h:216
+
bool IsFinite() const
Definition public.h:320
+
bool DoesOverlap(const Box &box) const
Definition public.h:304
+
Box(const glm::vec3 p1, const glm::vec3 p2)
Definition public.h:189
+
Box operator*(glm::vec3 scale) const
Definition public.h:285
+
Box Transform(const glm::mat4x3 &transform) const
Definition public.h:254
+
Box Union(const Box &box) const
Definition public.h:240
+
Box & operator+=(glm::vec3 shift)
Definition public.h:276
+
glm::vec3 Center() const
Definition public.h:202
+
void Union(const glm::vec3 p)
Definition public.h:232
+
float Scale() const
Definition public.h:208
+
Box()
Definition public.h:184
+
glm::vec3 Size() const
Definition public.h:197
+
Box & operator*=(glm::vec3 scale)
Definition public.h:295
+
Box operator+(glm::vec3 shift) const
Definition public.h:266
+
bool Contains(const Box &box) const
Definition public.h:224
+
Definition public.h:328
+
Rect(const glm::vec2 a, const glm::vec2 b)
Definition public.h:340
+
glm::vec2 Center() const
Definition public.h:375
+
float Area() const
Definition public.h:358
+
glm::vec2 Size() const
Definition public.h:353
+
Rect operator*(const glm::vec2 scale) const
Definition public.h:459
+
bool IsFinite() const
Definition public.h:409
+
bool Contains(const glm::vec2 &p) const
Definition public.h:380
+
Rect operator+(const glm::vec2 shift) const
Definition public.h:440
+
Rect Transform(const glm::mat3x2 &m) const
Definition public.h:482
+
Rect & operator+=(const glm::vec2 shift)
Definition public.h:450
+
bool IsEmpty() const
Definition public.h:404
+
Rect Union(const Rect &rect) const
Definition public.h:430
+
float Scale() const
Definition public.h:367
+
bool Contains(const Rect &rect) const
Definition public.h:388
+
Rect()
Definition public.h:335
+
bool DoesOverlap(const Rect &rect) const
Definition public.h:396
+
Rect & operator*=(const glm::vec2 scale)
Definition public.h:469
+
void Union(const glm::vec2 p)
Definition public.h:422
+
Definition public.h:608
+
Definition public.h:605
+
Definition public.h:602
+
+
+ + + + diff --git a/docs/html/quickhull_8h_source.html b/docs/html/quickhull_8h_source.html new file mode 100644 index 000000000..366ef5c9e --- /dev/null +++ b/docs/html/quickhull_8h_source.html @@ -0,0 +1,981 @@ + + + + + + + +Manifold: quickhull.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
quickhull.h
+
+
+
1// Copyright 2024 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14//
+
15// Derived from the public domain work of Antti Kuukka at
+
16// https://github.com/akuukka/quickhull
+
17
+
18/*
+
19 * INPUT: a list of points in 3D space (for example, vertices of a 3D mesh)
+
20 *
+
21 * OUTPUT: a ConvexHull object which provides vertex and index buffers of the
+
22 *generated convex hull as a triangle mesh.
+
23 *
+
24 *
+
25 *
+
26 * The implementation is thread-safe if each thread is using its own QuickHull
+
27 *object.
+
28 *
+
29 *
+
30 * SUMMARY OF THE ALGORITHM:
+
31 * - Create initial simplex (tetrahedron) using extreme points. We have
+
32 *four faces now and they form a convex mesh M.
+
33 * - For each point, assign them to the first face for which they are on
+
34 *the positive side of (so each point is assigned to at most one face). Points
+
35 *inside the initial tetrahedron are left behind now and no longer affect the
+
36 *calculations.
+
37 * - Add all faces that have points assigned to them to Face Stack.
+
38 * - Iterate until Face Stack is empty:
+
39 * - Pop topmost face F from the stack
+
40 * - From the points assigned to F, pick the point P that is
+
41 *farthest away from the plane defined by F.
+
42 * - Find all faces of M that have P on their positive side. Let us
+
43 *call these the "visible faces".
+
44 * - Because of the way M is constructed, these faces are
+
45 *connected. Solve their horizon edge loop.
+
46 * - "Extrude to P": Create new faces by connecting
+
47 *P with the points belonging to the horizon edge. Add the new faces to M and
+
48 *remove the visible faces from M.
+
49 * - Each point that was assigned to visible faces is now assigned
+
50 *to at most one of the newly created faces.
+
51 * - Those new faces that have points assigned to them are added to
+
52 *the top of Face Stack.
+
53 * - M is now the convex hull.
+
54 *
+
55 * */
+
56#pragma once
+
57#include <array>
+
58#include <cassert>
+
59#include <cinttypes>
+
60#include <cmath>
+
61#include <deque>
+
62#include <fstream>
+
63#include <iostream>
+
64#include <limits>
+
65#include <memory>
+
66#include <unordered_map>
+
67#include <vector>
+
68
+
69#include "par.h"
+
70
+
71// Pool.hpp
+
72
+
+
73class Pool {
+
74 std::vector<std::unique_ptr<std::vector<size_t>>> data;
+
75
+
76 public:
+
77 void clear() { data.clear(); }
+
78
+
79 void reclaim(std::unique_ptr<std::vector<size_t>>& ptr) {
+
80 data.push_back(std::move(ptr));
+
81 }
+
82
+
83 std::unique_ptr<std::vector<size_t>> get() {
+
84 if (data.size() == 0) {
+
85 return std::unique_ptr<std::vector<size_t>>(new std::vector<size_t>());
+
86 }
+
87 auto it = data.end() - 1;
+
88 std::unique_ptr<std::vector<size_t>> r = std::move(*it);
+
89 data.erase(it);
+
90 return r;
+
91 }
+
92};
+
+
93
+
94// Plane.hpp
+
95
+
+
96class Plane {
+
97 public:
+
98 glm::dvec3 N;
+
99
+
100 // Signed distance (if normal is of length 1) to the plane from origin
+
101 double D;
+
102
+
103 // Normal length squared
+
104 double sqrNLength;
+
105
+
106 bool isPointOnPositiveSide(const glm::dvec3& Q) const {
+
107 double d = glm::dot(N, Q) + D;
+
108 if (d >= 0) return true;
+
109 return false;
+
110 }
+
111
+
112 Plane() = default;
+
113
+
114 // Construct a plane using normal N and any point P on the plane
+
115 Plane(const glm::dvec3& N, const glm::dvec3& P)
+
116 : N(N),
+
117 D(glm::dot(-N, P)),
+
118 sqrNLength(N.x * N.x + N.y * N.y + N.z * N.z) {}
+
119};
+
+
120
+
121// Ray.hpp
+
122
+
+
123struct Ray {
+
124 const glm::dvec3 S;
+
125 const glm::dvec3 V;
+
126 const double VInvLengthSquared;
+
127
+
128 Ray(const glm::dvec3& S, const glm::dvec3& V)
+
129 : S(S), V(V), VInvLengthSquared(1 / (glm::dot(V, V))) {}
+
130};
+
+
131
+
132// VertexDataSource
+
133
+
+ +
135 const glm::dvec3* ptr;
+
136 size_t count;
+
137
+
138 public:
+
139 VertexDataSource(const glm::dvec3* ptr, size_t count)
+
140 : ptr(ptr), count(count) {}
+
141
+
142 VertexDataSource(const std::vector<glm::dvec3>& vec)
+
143 : ptr(&vec[0]), count(vec.size()) {}
+
144
+
145 VertexDataSource() : ptr(nullptr), count(0) {}
+
146
+
147 VertexDataSource& operator=(const VertexDataSource& other) = default;
+
148
+
149 size_t size() const { return count; }
+
150
+
151 const glm::dvec3& operator[](size_t index) const { return ptr[index]; }
+
152
+
153 const glm::dvec3* begin() const { return ptr; }
+
154
+
155 const glm::dvec3* end() const { return ptr + count; }
+
156};
+
+
157
+
158// Mesh.hpp
+
159
+
+ +
161 public:
+
+
162 struct HalfEdge {
+
163 size_t endVertex;
+
164 size_t opp;
+
165 size_t face;
+
166 size_t next;
+
167
+
168 void disable() { endVertex = std::numeric_limits<size_t>::max(); }
+
169
+
170 bool isDisabled() const {
+
171 return endVertex == std::numeric_limits<size_t>::max();
+
172 }
+
173 };
+
+
174
+
+
175 struct Face {
+
176 size_t he;
+
177 Plane P{};
+
178 double mostDistantPointDist;
+
179 size_t mostDistantPoint;
+
180 size_t visibilityCheckedOnIteration;
+
181 std::uint8_t isVisibleFaceOnCurrentIteration : 1;
+
182 std::uint8_t inFaceStack : 1;
+
183 std::uint8_t horizonEdgesOnCurrentIteration : 3;
+
184 // Bit for each half edge assigned to this face, each being 0 or 1 depending
+
185 // on whether the edge belongs to horizon edge
+
186 std::unique_ptr<std::vector<size_t>> pointsOnPositiveSide;
+
187
+
188 Face()
+
189 : he(std::numeric_limits<size_t>::max()),
+
190 mostDistantPointDist(0),
+
191 mostDistantPoint(0),
+
192 visibilityCheckedOnIteration(0),
+
193 isVisibleFaceOnCurrentIteration(0),
+
194 inFaceStack(0),
+
195 horizonEdgesOnCurrentIteration(0) {}
+
196
+
197 void disable() { he = std::numeric_limits<size_t>::max(); }
+
198
+
199 bool isDisabled() const { return he == std::numeric_limits<size_t>::max(); }
+
200 };
+
+
201
+
202 // Mesh data
+
203 std::vector<Face> faces;
+
204 std::vector<HalfEdge> halfEdges;
+
205
+
206 // When the mesh is modified and faces and half edges are removed from it, we
+
207 // do not actually remove them from the container vectors. Insted, they are
+
208 // marked as disabled which means that the indices can be reused when we need
+
209 // to add new faces and half edges to the mesh. We store the free indices in
+
210 // the following vectors.
+
211 std::vector<size_t> disabledFaces, disabledHalfEdges;
+
212
+
213 size_t addFace() {
+
214 if (disabledFaces.size()) {
+
215 size_t index = disabledFaces.back();
+
216 auto& f = faces[index];
+
217 assert(f.isDisabled());
+
218 assert(!f.pointsOnPositiveSide);
+
219 f.mostDistantPointDist = 0;
+
220 disabledFaces.pop_back();
+
221 return index;
+
222 }
+
223 faces.emplace_back();
+
224 return faces.size() - 1;
+
225 }
+
226
+
227 size_t addHalfEdge() {
+
228 if (disabledHalfEdges.size()) {
+
229 const size_t index = disabledHalfEdges.back();
+
230 disabledHalfEdges.pop_back();
+
231 return index;
+
232 }
+
233 halfEdges.emplace_back();
+
234 return halfEdges.size() - 1;
+
235 }
+
236
+
237 // Mark a face as disabled and return a pointer to the points that were on the
+
238 // positive of it.
+
239 std::unique_ptr<std::vector<size_t>> disableFace(size_t faceIndex) {
+
240 auto& f = faces[faceIndex];
+
241 f.disable();
+
242 disabledFaces.push_back(faceIndex);
+
243 return std::move(f.pointsOnPositiveSide);
+
244 }
+
245
+
246 void disableHalfEdge(size_t heIndex) {
+
247 auto& he = halfEdges[heIndex];
+
248 he.disable();
+
249 disabledHalfEdges.push_back(heIndex);
+
250 }
+
251
+
252 MeshBuilder() = default;
+
253
+
254 // Create a mesh with initial tetrahedron ABCD. Dot product of AB with the
+
255 // normal of triangle ABC should be negative.
+
256 void setup(size_t a, size_t b, size_t c, size_t d) {
+
257 faces.clear();
+
258 halfEdges.clear();
+
259 disabledFaces.clear();
+
260 disabledHalfEdges.clear();
+
261
+
262 faces.reserve(4);
+
263 halfEdges.reserve(12);
+
264
+
265 // Create halfedges
+
266 HalfEdge AB;
+
267 AB.endVertex = b;
+
268 AB.opp = 6;
+
269 AB.face = 0;
+
270 AB.next = 1;
+
271 halfEdges.push_back(AB);
+
272
+
273 HalfEdge BC;
+
274 BC.endVertex = c;
+
275 BC.opp = 9;
+
276 BC.face = 0;
+
277 BC.next = 2;
+
278 halfEdges.push_back(BC);
+
279
+
280 HalfEdge CA;
+
281 CA.endVertex = a;
+
282 CA.opp = 3;
+
283 CA.face = 0;
+
284 CA.next = 0;
+
285 halfEdges.push_back(CA);
+
286
+
287 HalfEdge AC;
+
288 AC.endVertex = c;
+
289 AC.opp = 2;
+
290 AC.face = 1;
+
291 AC.next = 4;
+
292 halfEdges.push_back(AC);
+
293
+
294 HalfEdge CD;
+
295 CD.endVertex = d;
+
296 CD.opp = 11;
+
297 CD.face = 1;
+
298 CD.next = 5;
+
299 halfEdges.push_back(CD);
+
300
+
301 HalfEdge DA;
+
302 DA.endVertex = a;
+
303 DA.opp = 7;
+
304 DA.face = 1;
+
305 DA.next = 3;
+
306 halfEdges.push_back(DA);
+
307
+
308 HalfEdge BA;
+
309 BA.endVertex = a;
+
310 BA.opp = 0;
+
311 BA.face = 2;
+
312 BA.next = 7;
+
313 halfEdges.push_back(BA);
+
314
+
315 HalfEdge AD;
+
316 AD.endVertex = d;
+
317 AD.opp = 5;
+
318 AD.face = 2;
+
319 AD.next = 8;
+
320 halfEdges.push_back(AD);
+
321
+
322 HalfEdge DB;
+
323 DB.endVertex = b;
+
324 DB.opp = 10;
+
325 DB.face = 2;
+
326 DB.next = 6;
+
327 halfEdges.push_back(DB);
+
328
+
329 HalfEdge CB;
+
330 CB.endVertex = b;
+
331 CB.opp = 1;
+
332 CB.face = 3;
+
333 CB.next = 10;
+
334 halfEdges.push_back(CB);
+
335
+
336 HalfEdge BD;
+
337 BD.endVertex = d;
+
338 BD.opp = 8;
+
339 BD.face = 3;
+
340 BD.next = 11;
+
341 halfEdges.push_back(BD);
+
342
+
343 HalfEdge DC;
+
344 DC.endVertex = c;
+
345 DC.opp = 4;
+
346 DC.face = 3;
+
347 DC.next = 9;
+
348 halfEdges.push_back(DC);
+
349
+
350 // Create faces
+
351 Face ABC;
+
352 ABC.he = 0;
+
353 faces.push_back(std::move(ABC));
+
354
+
355 Face ACD;
+
356 ACD.he = 3;
+
357 faces.push_back(std::move(ACD));
+
358
+
359 Face BAD;
+
360 BAD.he = 6;
+
361 faces.push_back(std::move(BAD));
+
362
+
363 Face CBD;
+
364 CBD.he = 9;
+
365 faces.push_back(std::move(CBD));
+
366 }
+
367
+
368 std::array<size_t, 3> getVertexIndicesOfFace(const Face& f) const {
+
369 std::array<size_t, 3> v;
+
370 const HalfEdge* he = &halfEdges[f.he];
+
371 v[0] = he->endVertex;
+
372 he = &halfEdges[he->next];
+
373 v[1] = he->endVertex;
+
374 he = &halfEdges[he->next];
+
375 v[2] = he->endVertex;
+
376 return v;
+
377 }
+
378
+
379 std::array<size_t, 2> getVertexIndicesOfHalfEdge(const HalfEdge& he) const {
+
380 return {halfEdges[he.opp].endVertex, he.endVertex};
+
381 }
+
382
+
383 std::array<size_t, 3> getHalfEdgeIndicesOfFace(const Face& f) const {
+
384 return {f.he, halfEdges[f.he].next, halfEdges[halfEdges[f.he].next].next};
+
385 }
+
386};
+
+
387
+
388// ConvexHull.hpp
+
389
+
+ +
391 std::unique_ptr<std::vector<glm::dvec3>> optimizedVertexBuffer;
+
392 VertexDataSource vertices;
+
393 std::vector<size_t> indices;
+
394
+
395 public:
+
396 ConvexHull() {}
+
397
+
398 // Copy constructor
+
399 ConvexHull(const ConvexHull& o) {
+
400 indices = o.indices;
+
401 if (o.optimizedVertexBuffer) {
+
402 optimizedVertexBuffer.reset(
+
403 new std::vector<glm::dvec3>(*o.optimizedVertexBuffer));
+
404 vertices = VertexDataSource(*optimizedVertexBuffer);
+
405 } else {
+
406 vertices = o.vertices;
+
407 }
+
408 }
+
409
+
410 ConvexHull& operator=(const ConvexHull& o) {
+
411 if (&o == this) {
+
412 return *this;
+
413 }
+
414 indices = o.indices;
+
415 if (o.optimizedVertexBuffer) {
+
416 optimizedVertexBuffer.reset(
+
417 new std::vector<glm::dvec3>(*o.optimizedVertexBuffer));
+
418 vertices = VertexDataSource(*optimizedVertexBuffer);
+
419 } else {
+
420 vertices = o.vertices;
+
421 }
+
422 return *this;
+
423 }
+
424
+ +
426 indices = std::move(o.indices);
+
427 if (o.optimizedVertexBuffer) {
+
428 optimizedVertexBuffer = std::move(o.optimizedVertexBuffer);
+
429 o.vertices = VertexDataSource();
+
430 vertices = VertexDataSource(*optimizedVertexBuffer);
+
431 } else {
+
432 vertices = o.vertices;
+
433 }
+
434 }
+
435
+
436 ConvexHull& operator=(ConvexHull&& o) {
+
437 if (&o == this) {
+
438 return *this;
+
439 }
+
440 indices = std::move(o.indices);
+
441 if (o.optimizedVertexBuffer) {
+
442 optimizedVertexBuffer = std::move(o.optimizedVertexBuffer);
+
443 o.vertices = VertexDataSource();
+
444 vertices = VertexDataSource(*optimizedVertexBuffer);
+
445 } else {
+
446 vertices = o.vertices;
+
447 }
+
448 return *this;
+
449 }
+
450
+
451 // Construct vertex and index buffers from half edge mesh and pointcloud
+
452 ConvexHull(const MeshBuilder& mesh_input, const VertexDataSource& pointCloud,
+
453 bool CCW, bool useOriginalIndices) {
+
454 if (!useOriginalIndices) {
+
455 optimizedVertexBuffer.reset(new std::vector<glm::dvec3>());
+
456 }
+
457
+
458 std::vector<bool> faceProcessed(mesh_input.faces.size(), false);
+
459 std::vector<size_t> faceStack;
+
460 // Map vertex indices from original point cloud to the new mesh vertex
+
461 // indices
+
462 std::unordered_map<size_t, size_t> vertexIndexMapping;
+
463 for (size_t i = 0; i < mesh_input.faces.size(); i++) {
+
464 if (!mesh_input.faces[i].isDisabled()) {
+
465 faceStack.push_back(i);
+
466 break;
+
467 }
+
468 }
+
469 if (faceStack.size() == 0) {
+
470 return;
+
471 }
+
472
+
473 const size_t iCCW = CCW ? 1 : 0;
+
474 const size_t finalMeshFaceCount =
+
475 mesh_input.faces.size() - mesh_input.disabledFaces.size();
+
476 indices.reserve(finalMeshFaceCount * 3);
+
477
+
478 while (faceStack.size()) {
+
479 auto it = faceStack.end() - 1;
+
480 size_t top = *it;
+
481 assert(!mesh_input.faces[top].isDisabled());
+
482 faceStack.erase(it);
+
483 if (faceProcessed[top]) {
+
484 continue;
+
485 } else {
+
486 faceProcessed[top] = true;
+
487 auto halfEdgesMesh =
+
488 mesh_input.getHalfEdgeIndicesOfFace(mesh_input.faces[top]);
+
489 size_t adjacent[] = {
+
490 mesh_input.halfEdges[mesh_input.halfEdges[halfEdgesMesh[0]].opp]
+
491 .face,
+
492 mesh_input.halfEdges[mesh_input.halfEdges[halfEdgesMesh[1]].opp]
+
493 .face,
+
494 mesh_input.halfEdges[mesh_input.halfEdges[halfEdgesMesh[2]].opp]
+
495 .face};
+
496 for (auto a : adjacent) {
+
497 if (!faceProcessed[a] && !mesh_input.faces[a].isDisabled()) {
+
498 faceStack.push_back(a);
+
499 }
+
500 }
+
501 auto MeshVertices =
+
502 mesh_input.getVertexIndicesOfFace(mesh_input.faces[top]);
+
503 if (!useOriginalIndices) {
+
504 for (auto& v : MeshVertices) {
+
505 auto itV = vertexIndexMapping.find(v);
+
506 if (itV == vertexIndexMapping.end()) {
+
507 optimizedVertexBuffer->push_back(pointCloud[v]);
+
508 vertexIndexMapping[v] = optimizedVertexBuffer->size() - 1;
+
509 v = optimizedVertexBuffer->size() - 1;
+
510 } else {
+
511 v = itV->second;
+
512 }
+
513 }
+
514 }
+
515 indices.push_back(MeshVertices[0]);
+
516 indices.push_back(MeshVertices[1 + iCCW]);
+
517 indices.push_back(MeshVertices[2 - iCCW]);
+
518 }
+
519 }
+
520
+
521 if (!useOriginalIndices) {
+
522 vertices = VertexDataSource(*optimizedVertexBuffer);
+
523 } else {
+
524 vertices = pointCloud;
+
525 }
+
526 }
+
527
+
528 std::vector<size_t>& getIndexBuffer() { return indices; }
+
529
+
530 const std::vector<size_t>& getIndexBuffer() const { return indices; }
+
531
+
532 VertexDataSource& getVertexBuffer() { return vertices; }
+
533
+
534 const VertexDataSource& getVertexBuffer() const { return vertices; }
+
535};
+
+
536
+
537// HalfEdgeMesh.hpp
+
538
+
+ +
540 public:
+
+
541 struct HalfEdge {
+
542 size_t endVertex;
+
543 size_t opp;
+
544 size_t face;
+
545 size_t next;
+
546 };
+
+
547
+
+
548 struct Face {
+
549 // Index of one of the half edges of this face
+
550 size_t halfEdgeIndex;
+
551 };
+
+
552
+
553 std::vector<glm::dvec3> vertices;
+
554 std::vector<Face> faces;
+
555 std::vector<HalfEdge> halfEdges;
+
556
+
557 HalfEdgeMesh(const MeshBuilder& builderObject,
+
558 const VertexDataSource& vertexData) {
+
559 std::unordered_map<size_t, size_t> faceMapping;
+
560 std::unordered_map<size_t, size_t> halfEdgeMapping;
+
561 std::unordered_map<size_t, size_t> vertexMapping;
+
562
+
563 size_t i = 0;
+
564 for (const auto& face : builderObject.faces) {
+
565 if (!face.isDisabled()) {
+
566 faces.push_back({static_cast<size_t>(face.he)});
+
567 faceMapping[i] = faces.size() - 1;
+
568
+
569 const auto heIndices = builderObject.getHalfEdgeIndicesOfFace(face);
+
570 for (const auto heIndex : heIndices) {
+
571 const size_t vertexIndex = builderObject.halfEdges[heIndex].endVertex;
+
572 if (vertexMapping.count(vertexIndex) == 0) {
+
573 vertices.push_back(vertexData[vertexIndex]);
+
574 vertexMapping[vertexIndex] = vertices.size() - 1;
+
575 }
+
576 }
+
577 }
+
578 i++;
+
579 }
+
580
+
581 i = 0;
+
582 for (const auto& halfEdge : builderObject.halfEdges) {
+
583 if (!halfEdge.isDisabled()) {
+
584 halfEdges.push_back({static_cast<size_t>(halfEdge.endVertex),
+
585 static_cast<size_t>(halfEdge.opp),
+
586 static_cast<size_t>(halfEdge.face),
+
587 static_cast<size_t>(halfEdge.next)});
+
588 halfEdgeMapping[i] = halfEdges.size() - 1;
+
589 }
+
590 i++;
+
591 }
+
592
+
593 for (auto& face : faces) {
+
594 assert(halfEdgeMapping.count(face.halfEdgeIndex) == 1);
+
595 face.halfEdgeIndex = halfEdgeMapping[face.halfEdgeIndex];
+
596 }
+
597
+
598 for (auto& he : halfEdges) {
+
599 he.face = faceMapping[he.face];
+
600 he.opp = halfEdgeMapping[he.opp];
+
601 he.next = halfEdgeMapping[he.next];
+
602 he.endVertex = vertexMapping[he.endVertex];
+
603 }
+
604 }
+
605};
+
+
606
+
607// MathUtils.hpp
+
608
+
609namespace mathutils {
+
610
+
611inline double getSquaredDistanceBetweenPointAndRay(const glm::dvec3& p,
+
612 const Ray& r) {
+
613 const glm::dvec3 s = p - r.S;
+
614 double t = glm::dot(s, r.V);
+
615 return glm::dot(s, s) - t * t * r.VInvLengthSquared;
+
616}
+
617
+
618inline double getSquaredDistance(const glm::dvec3& p1, const glm::dvec3& p2) {
+
619 return glm::dot(p1 - p2, p1 - p2);
+
620}
+
621// Note that the unit of distance returned is relative to plane's normal's
+
622// length (divide by N.getNormalized() if needed to get the "real" distance).
+
623inline double getSignedDistanceToPlane(const glm::dvec3& v, const Plane& p) {
+
624 return glm::dot(p.N, v) + p.D;
+
625}
+
626
+
627inline glm::dvec3 getTriangleNormal(const glm::dvec3& a, const glm::dvec3& b,
+
628 const glm::dvec3& c) {
+
629 // We want to get (a-c).crossProduct(b-c) without constructing temp vectors
+
630 double x = a.x - c.x;
+
631 double y = a.y - c.y;
+
632 double z = a.z - c.z;
+
633 double rhsx = b.x - c.x;
+
634 double rhsy = b.y - c.y;
+
635 double rhsz = b.z - c.z;
+
636 double px = y * rhsz - z * rhsy;
+
637 double py = z * rhsx - x * rhsz;
+
638 double pz = x * rhsy - y * rhsx;
+
639 return glm::normalize(glm::dvec3(px, py, pz));
+
640}
+
641
+
642} // namespace mathutils
+
643
+
644// QuickHull.hpp
+
645
+
+ +
647 // How many times QuickHull failed to solve the horizon edge. Failures lead
+
648 // to degenerated convex hulls.
+
649 size_t failedHorizonEdges;
+
650
+
651 DiagnosticsData() : failedHorizonEdges(0) {}
+
652};
+
+
653
+
654double defaultEps();
+
655
+
+ +
657 using vec3 = glm::dvec3;
+
658
+
659 double m_epsilon, epsilonSquared, scale;
+
660 bool planar;
+
661 std::vector<vec3> planarPointCloudTemp;
+
662 VertexDataSource originalVertexData;
+
663 MeshBuilder mesh;
+
664 std::array<size_t, 6> extremeValues;
+
665 DiagnosticsData diagnostics;
+
666
+
667 // Temporary variables used during iteration process
+
668 std::vector<size_t> newFaceIndices;
+
669 std::vector<size_t> newHalfEdgeIndices;
+
670 std::vector<std::unique_ptr<std::vector<size_t>>> disabledFacePointVectors;
+
671 std::vector<size_t> visibleFaces;
+
672 std::vector<size_t> horizonEdgesData;
+
673 struct FaceData {
+
674 size_t faceIndex;
+
675 // If the face turns out not to be visible, this half edge will be marked as
+
676 // horizon edge
+
677 size_t enteredFromHalfEdge;
+
678 FaceData(size_t fi, size_t he) : faceIndex(fi), enteredFromHalfEdge(he) {}
+
679 };
+
680 std::vector<FaceData> possiblyVisibleFaces;
+
681 std::deque<size_t> faceList;
+
682
+
683 // Create a half edge mesh representing the base tetrahedron from which the
+
684 // QuickHull iteration proceeds. extremeValues must be properly set up when
+
685 // this is called.
+
686 void setupInitialTetrahedron();
+
687
+
688 // Given a list of half edges, try to rearrange them so that they form a loop.
+
689 // Return true on success.
+
690 bool reorderHorizonEdges(std::vector<size_t>& horizonEdges);
+
691
+
692 // Find indices of extreme values (max x, min x, max y, min y, max z, min z)
+
693 // for the given point cloud
+
694 std::array<size_t, 6> getExtremeValues();
+
695
+
696 // Compute scale of the vertex data.
+
697 double getScale(const std::array<size_t, 6>& extremeValuesInput);
+
698
+
699 // Each face contains a unique pointer to a vector of indices. However, many -
+
700 // often most - faces do not have any points on the positive side of them
+
701 // especially at the the end of the iteration. When a face is removed from the
+
702 // mesh, its associated point vector, if such exists, is moved to the index
+
703 // vector pool, and when we need to add new faces with points on the positive
+
704 // side to the mesh, we reuse these vectors. This reduces the amount of
+
705 // std::vectors we have to deal with, and impact on performance is remarkable.
+
706 Pool indexVectorPool;
+
707 inline std::unique_ptr<std::vector<size_t>> getIndexVectorFromPool();
+
708 inline void reclaimToIndexVectorPool(
+
709 std::unique_ptr<std::vector<size_t>>& ptr);
+
710
+
711 // Associates a point with a face if the point resides on the positive side of
+
712 // the plane. Returns true if the points was on the positive side.
+
713 inline bool addPointToFace(typename MeshBuilder::Face& f, size_t pointIndex);
+
714
+
715 // This will update mesh from which we create the ConvexHull object that
+
716 // getConvexHull function returns
+
717 void createConvexHalfEdgeMesh();
+
718
+
719 // Constructs the convex hull into a MeshBuilder object which can be converted
+
720 // to a ConvexHull or Mesh object
+
721 void buildMesh(const VertexDataSource& pointCloud, bool CCW,
+
722 bool useOriginalIndices, double eps);
+
723
+
724 // The public getConvexHull functions will setup a VertexDataSource object and
+
725 // call this
+
726 ConvexHull getConvexHull(const VertexDataSource& pointCloud, bool CCW,
+
727 bool useOriginalIndices, double eps);
+
728
+
729 public:
+
730 // Computes convex hull for a given point cloud.
+
731 // Params:
+
732 // pointCloud: a vector of of 3D points
+
733 // CCW: whether the output mesh triangles should have CCW orientation
+
734 // useOriginalIndices: should the output mesh use same vertex indices as the
+
735 // original point cloud. If this is false,
+
736 // then we generate a new vertex buffer which contains only the vertices
+
737 // that are part of the convex hull.
+
738 // eps: minimum distance to a plane to consider a point being on positive of
+
739 // it (for a point cloud with scale 1)
+
740 ConvexHull getConvexHull(const std::vector<glm::dvec3>& pointCloud, bool CCW,
+
741 bool useOriginalIndices, double eps = defaultEps());
+
742
+
743 // Computes convex hull for a given point cloud.
+
744 // Params:
+
745 // vertexData: pointer to the first 3D point of the point cloud
+
746 // vertexCount: number of vertices in the point cloud
+
747 // CCW: whether the output mesh triangles should have CCW orientation
+
748 // useOriginalIndices: should the output mesh use same vertex indices as the
+
749 // original point cloud. If this is false,
+
750 // then we generate a new vertex buffer which contains only the vertices
+
751 // that are part of the convex hull.
+
752 // eps: minimum distance to a plane to consider a point being on positive
+
753 // side of it (for a point cloud with scale 1)
+
754 ConvexHull getConvexHull(const glm::dvec3* vertexData, size_t vertexCount,
+
755 bool CCW, bool useOriginalIndices,
+
756 double eps = defaultEps());
+
757
+
758 // Computes convex hull for a given point cloud. This function assumes that
+
759 // the vertex data resides in memory in the following format:
+
760 // x_0,y_0,z_0,x_1,y_1,z_1,... Params:
+
761 // vertexData: pointer to the X component of the first point of the point
+
762 // cloud. vertexCount: number of vertices in the point cloud CCW: whether
+
763 // the output mesh triangles should have CCW orientation useOriginalIndices:
+
764 // should the output mesh use same vertex indices as the original point
+
765 // cloud. If this is false,
+
766 // then we generate a new vertex buffer which contains only the vertices
+
767 // that are part of the convex hull.
+
768 // eps: minimum distance to a plane to consider a point being on positive
+
769 // side of it (for a point cloud with scale 1)
+
770 ConvexHull getConvexHull(const double* vertexData, size_t vertexCount,
+
771 bool CCW, bool useOriginalIndices,
+
772 double eps = defaultEps());
+
773
+
774 // Computes convex hull for a given point cloud. This function assumes that
+
775 // the vertex data resides in memory in the following format:
+
776 // x_0,y_0,z_0,x_1,y_1,z_1,... Params:
+
777 // vertexData: pointer to the X component of the first point of the point
+
778 // cloud. vertexCount: number of vertices in the point cloud CCW: whether
+
779 // the output mesh triangles should have CCW orientation eps: minimum
+
780 // distance to a plane to consider a point being on positive side of it (for
+
781 // a point cloud with scale 1)
+
782 // Returns:
+
783 // Convex hull of the point cloud as a mesh object with half edge structure.
+
784 HalfEdgeMesh getConvexHullAsMesh(const double* vertexData, size_t vertexCount,
+
785 bool CCW, double eps = defaultEps());
+
786
+
787 // Get diagnostics about last generated convex hull
+
788 const DiagnosticsData& getDiagnostics() { return diagnostics; }
+
789};
+
+
790
+
791/*
+
792 * Inline function definitions
+
793 */
+
794
+
795std::unique_ptr<std::vector<size_t>> QuickHull::getIndexVectorFromPool() {
+
796 auto r = indexVectorPool.get();
+
797 r->clear();
+
798 return r;
+
799}
+
800
+
801void QuickHull::reclaimToIndexVectorPool(
+
802 std::unique_ptr<std::vector<size_t>>& ptr) {
+
803 const size_t oldSize = ptr->size();
+
804 if ((oldSize + 1) * 128 < ptr->capacity()) {
+
805 // Reduce memory usage! Huge vectors are needed at the beginning of
+
806 // iteration when faces have many points on their positive side. Later on,
+
807 // smaller vectors will suffice.
+
808 ptr.reset(nullptr);
+
809 return;
+
810 }
+
811 indexVectorPool.reclaim(ptr);
+
812}
+
813
+
814bool QuickHull::addPointToFace(typename MeshBuilder::Face& f,
+
815 size_t pointIndex) {
+
816 const double D =
+
817 mathutils::getSignedDistanceToPlane(originalVertexData[pointIndex], f.P);
+
818 if (D > 0 && D * D > epsilonSquared * f.P.sqrNLength) {
+
819 if (!f.pointsOnPositiveSide) {
+
820 f.pointsOnPositiveSide = getIndexVectorFromPool();
+
821 }
+
822 f.pointsOnPositiveSide->push_back(pointIndex);
+
823 if (D > f.mostDistantPointDist) {
+
824 f.mostDistantPointDist = D;
+
825 f.mostDistantPoint = pointIndex;
+
826 }
+
827 return true;
+
828 }
+
829 return false;
+
830}
+
Definition quickhull.h:390
+
Definition quickhull.h:539
+
Definition quickhull.h:548
+
Definition quickhull.h:541
+
Definition quickhull.h:160
+
Definition quickhull.h:96
+
Definition quickhull.h:73
+
Definition quickhull.h:656
+
Definition quickhull.h:134
+
Definition quickhull.h:646
+
Definition quickhull.h:175
+
Definition quickhull.h:162
+
Definition quickhull.h:123
+
+
+ + + + diff --git a/docs/html/rect_8cpp_source.html b/docs/html/rect_8cpp_source.html new file mode 100644 index 000000000..4ba8a665d --- /dev/null +++ b/docs/html/rect_8cpp_source.html @@ -0,0 +1,217 @@ + + + + + + + +Manifold: rect.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rect.cpp
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#include "conv.h"
+
16#include "cross_section.h"
+
17#include "manifold.h"
+
18#include "public.h"
+
19#include "types.h"
+
20
+
21ManifoldRect *manifold_rect(void *mem, float x1, float y1, float x2, float y2) {
+
22 auto p1 = glm::vec2(x1, y1);
+
23 auto p2 = glm::vec2(x2, y2);
+
24 auto rect = new (mem) Rect(p1, p2);
+
25 return to_c(rect);
+
26}
+
27
+
28ManifoldVec2 manifold_rect_min(ManifoldRect *r) {
+
29 return to_c((*from_c(r)).min);
+
30}
+
31
+
32ManifoldVec2 manifold_rect_max(ManifoldRect *r) {
+
33 return to_c((*from_c(r)).max);
+
34}
+
35
+
36ManifoldVec2 manifold_rect_dimensions(ManifoldRect *r) {
+
37 auto v = from_c(r)->Size();
+
38 return {v.x, v.y};
+
39}
+
40
+
41ManifoldVec2 manifold_rect_center(ManifoldRect *r) {
+
42 auto v = from_c(r)->Center();
+
43 return {v.x, v.y};
+
44}
+
45
+
46float manifold_rect_scale(ManifoldRect *r) { return from_c(r)->Scale(); }
+
47
+
48int manifold_rect_contains_pt(ManifoldRect *r, float x, float y) {
+
49 auto rect = *from_c(r);
+
50 auto p = glm::vec2(x, y);
+
51 return rect.Contains(p);
+
52}
+
53
+
54int manifold_rect_contains_rect(ManifoldRect *a, ManifoldRect *b) {
+
55 auto outer = *from_c(a);
+
56 auto inner = *from_c(b);
+
57 return outer.Contains(inner);
+
58}
+
59
+
60void manifold_rect_include_pt(ManifoldRect *r, float x, float y) {
+
61 auto rect = *from_c(r);
+
62 auto p = glm::vec2(x, y);
+
63 rect.Union(p);
+
64}
+
65
+
66ManifoldRect *manifold_rect_union(void *mem, ManifoldRect *a, ManifoldRect *b) {
+
67 auto rect = from_c(a)->Union(*from_c(b));
+
68 return to_c(new (mem) Rect(rect));
+
69}
+
70
+
71ManifoldRect *manifold_rect_transform(void *mem, ManifoldRect *r, float x1,
+
72 float y1, float x2, float y2, float x3,
+
73 float y3) {
+
74 auto mat = glm::mat3x2(x1, y1, x2, y2, x3, y3);
+
75 auto transformed = from_c(r)->Transform(mat);
+
76 return to_c(new (mem) Rect(transformed));
+
77}
+
78
+
79ManifoldRect *manifold_rect_translate(void *mem, ManifoldRect *r, float x,
+
80 float y) {
+
81 auto rect = *from_c(r);
+
82 auto p = glm::vec2(x, y);
+
83 auto translated = (*from_c(r)) + p;
+
84 return to_c(new (mem) Rect(translated));
+
85}
+
86
+
87ManifoldRect *manifold_rect_mul(void *mem, ManifoldRect *r, float x, float y) {
+
88 auto rect = *from_c(r);
+
89 auto p = glm::vec2(x, y);
+
90 auto scaled = (*from_c(r)) * p;
+
91 return to_c(new (mem) Rect(scaled));
+
92}
+
93
+
94int manifold_rect_does_overlap_rect(ManifoldRect *a, ManifoldRect *r) {
+
95 return from_c(a)->DoesOverlap(*from_c(r));
+
96}
+
97
+
98int manifold_rect_is_empty(ManifoldRect *r) { return from_c(r)->IsEmpty(); }
+
99
+
100int manifold_rect_is_finite(ManifoldRect *r) { return from_c(r)->IsFinite(); }
+
Manifold Transform(const glm::mat4x3 &) const
Definition manifold.cpp:527
+
bool IsEmpty() const
Definition manifold.cpp:345
+
Manifold Scale(glm::vec3) const
Definition manifold.cpp:499
+
Definition types.h:43
+
Definition public.h:328
+
+
+ + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 000000000..aaeb6fc0a --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,155 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + } + return 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/html/samples_8h_source.html b/docs/html/samples_8h_source.html new file mode 100644 index 000000000..fa5ee3bb9 --- /dev/null +++ b/docs/html/samples_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +Manifold: samples.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
samples.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include "manifold.h"
+
17
+
18namespace manifold {
+
19
+
37Manifold TorusKnot(int p, int q, float majorRadius, float minorRadius,
+
38 float threadRadius, int circularSegments = 0,
+
39 int linearSegments = 0);
+
40
+
41Manifold StretchyBracelet(float radius = 30.0f, float height = 8.0f,
+
42 float width = 15.0f, float thickness = 0.4f,
+
43 int nDecor = 20, int nCut = 27, int nDivision = 30);
+
44
+
45Manifold MengerSponge(int n = 3);
+
46
+
47Manifold RoundedFrame(float edgeLength, float radius, int circularSegments = 0);
+
48
+
49Manifold TetPuzzle(float edgeLength, float gap, int nDivisions);
+
50
+
51Manifold Scallop();
+
52
+
53Manifold GyroidModule(float size = 20, int n = 20);
+
54
+
55Manifold CondensedMatter(int fn = 16);
+ // end of Samples
57} // namespace manifold
+
Manifold GyroidModule(float size=20, int n=20)
Definition gyroid_module.cpp:46
+
Manifold TorusKnot(int p, int q, float majorRadius, float minorRadius, float threadRadius, int circularSegments=0, int linearSegments=0)
Definition knot.cpp:41
+
Manifold MengerSponge(int n=3)
Definition menger_sponge.cpp:44
+
Manifold Scallop()
Definition scallop.cpp:23
+
Manifold TetPuzzle(float edgeLength, float gap, int nDivisions)
Definition tet_puzzle.cpp:28
+
Manifold RoundedFrame(float edgeLength, float radius, int circularSegments=0)
Definition rounded_frame.cpp:29
+
Manifold StretchyBracelet(float radius=30.0f, float height=8.0f, float width=15.0f, float thickness=0.4f, int nDecor=20, int nCut=27, int nDivision=30)
Definition bracelet.cpp:75
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 000000000..ac6b8bd5f --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['1vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_0',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]] +]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 000000000..a7458dc9f --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['a_20href_20https_3a_20colab_20research_20google_20com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_0',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['a_20href_20https_3a_20manifoldcad_20org_20manifoldcad_20org_20a_1',['a href https: manifoldcad org manifoldcad org a',['..//github/workspace/bindings/wasm/README.md#autotoc_md6',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>'],['..//github/workspace/README.md#autotoc_md18',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>']]], + ['about_20the_20author_2',['about the author',['..//github/workspace/bindings/wasm/README.md#autotoc_md11',1,'About the author'],['..//github/workspace/README.md#autotoc_md31',1,'About the author']]], + ['agreement_3',['Contributor License Agreement',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md13',1,'']]], + ['all_5fof_4',['all_of',['../structbenchmarks_1_1all__of.html',1,'benchmarks']]], + ['area_5',['area',['../classmanifold_1_1_cross_section.html#ac84b151a969c68d662637e8245548666',1,'manifold::CrossSection::Area()'],['../structmanifold_1_1_rect.html#a10d5618fa11db90402e29c30fbf50096',1,'manifold::Rect::Area()']]], + ['asoriginal_6',['AsOriginal',['../classmanifold_1_1_manifold.html#a9b4bbbc5b70a0d1f6b07c91f1684fb57',1,'manifold::Manifold']]], + ['author_7',['author',['..//github/workspace/bindings/wasm/README.md#autotoc_md11',1,'About the author'],['..//github/workspace/README.md#autotoc_md31',1,'About the author']]], + ['autogenerated_20doc_20strings_8',['Autogenerated Doc-Strings',['../index.html#autotoc_md1',1,'']]] +]; diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 000000000..4a20e5f5b --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quality_0',['Quality',['../classmanifold_1_1_quality.html',1,'manifold']]], + ['quickhull_1',['QuickHull',['../class_quick_hull.html',1,'']]] +]; diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 000000000..6c70b0d25 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['ray_0',['Ray',['../struct_ray.html',1,'']]], + ['rect_1',['rect',['../structmanifold_1_1_rect.html',1,'Rect'],['../structmanifold_1_1_rect.html#ae436fd0322c99157c5443a3385961e22',1,'manifold::Rect::Rect()'],['../structmanifold_1_1_rect.html#a00ed04e729457429ca773061236a3bee',1,'manifold::Rect::Rect(const glm::vec2 a, const glm::vec2 b)']]], + ['reduce_2',['reduce',['../structbenchmarks_1_1reduce.html',1,'benchmarks']]], + ['refine_3',['Refine',['../classmanifold_1_1_manifold.html#a5d9227a2d10d8ad7b005555213ecd1ac',1,'manifold::Manifold']]], + ['refinetolength_4',['RefineToLength',['../classmanifold_1_1_manifold.html#a4fa475bc00e8b7a8fe28eea6b2d0e69e',1,'manifold::Manifold']]], + ['reindexedge_5',['ReindexEdge',['../structmanifold_1_1_reindex_edge.html',1,'manifold']]], + ['reindexverts_6',['ReindexVerts',['../structmanifold_1_1_manifold_1_1_impl.html#a9c45d5f57ab940c4a2682d6f11fdab40',1,'manifold::Manifold::Impl']]], + ['relation_7',['Relation',['../structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_relation',1,'manifold::Manifold::Impl']]], + ['release_5fchecklist_8',['RELEASE_CHECKLIST',['../md__r_e_l_e_a_s_e___c_h_e_c_k_l_i_s_t.html',1,'']]], + ['research_20google_20com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_9',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['reserveids_10',['ReserveIDs',['../classmanifold_1_1_manifold.html#a1d7e7e674ce7bd9954dc0d54ec6ebc8c',1,'manifold::Manifold']]], + ['result_11',['Result',['../struct_result.html',1,'']]], + ['reviews_12',['Code Reviews',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md14',1,'']]], + ['revolve_13',['Revolve',['../classmanifold_1_1_manifold.html#af50a5f7face1480aa164b24fe1aef066',1,'manifold::Manifold']]], + ['rotate_14',['rotate',['../classmanifold_1_1_cross_section.html#a95da829a99ea68c24170525e849e7dc4',1,'manifold::CrossSection::Rotate()'],['../classmanifold_1_1_manifold.html#a54569c8da01e3385a426011a40a60629',1,'manifold::Manifold::Rotate()']]], + ['rotateup_15',['RotateUp',['../group___connections.html#ga8997efa1e8a2c5fcc69314c863a8b6da',1,'manifold']]], + ['roughness_16',['roughness',['../group___mesh_i_o.html#a2c76422d3e436164284a7dba0b8a9cc4',1,'manifold::Material']]], + ['round_17',['Round',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dab7f41fc1412ad2ee75e9b2635d3b9d5c',1,'manifold::CrossSection']]], + ['roundedframe_18',['RoundedFrame',['../group___samples.html#ga8d224b44ea69ea070ebad60e6c1abbb9',1,'manifold']]], + ['run_5fall_19',['run_all',['../namespacerun__all.html',1,'']]], + ['runindex_20',['runIndex',['../structmanifold_1_1_mesh_g_l.html#a0a53d3053354c6a80b1164f4e87c3ab4',1,'manifold::MeshGL']]], + ['runoriginalid_21',['runOriginalID',['../structmanifold_1_1_mesh_g_l.html#aa67d01a9b240154a754945eca9fca3e0',1,'manifold::MeshGL']]], + ['runtransform_22',['runTransform',['../structmanifold_1_1_mesh_g_l.html#a2ea55ea45b4bd7ec973dcf2973abaa20',1,'manifold::MeshGL']]] +]; diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 000000000..52b041515 --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,62 @@ +var searchData= +[ + ['s_20here_0',['s here',['..//github/workspace/README.md#autotoc_md21',1,'What's here'],['..//github/workspace/bindings/wasm/README.md#autotoc_md8',1,'What's here']]], + ['samples_1',['Samples',['../group___samples.html',1,'']]], + ['sandboxes_2',['Manifold Frontend Sandboxes',['..//github/workspace/README.md#autotoc_md17',1,'']]], + ['scale_3',['scale',['../classmanifold_1_1_cross_section.html#af181324d8998fd89fa7a3e8bc7ef905c',1,'manifold::CrossSection::Scale()'],['../structmanifold_1_1_rect.html#ac60a4c17cace9263b70bf5e5c6f43b58',1,'manifold::Rect::Scale()'],['../classmanifold_1_1_manifold.html#ae06789ff9cbe03e56260538276dd8183',1,'manifold::Manifold::Scale()'],['../structmanifold_1_1_box.html#ac60a4c17cace9263b70bf5e5c6f43b58',1,'manifold::Box::Scale()']]], + ['scallop_4',['scallop',['../group___samples.html#ga45f5b5c2a374a8c67d9208a2bf9acc36',1,'manifold::Scallop()'],['../namespacescallop.html',1,'scallop']]], + ['seqcollisionrecorder_5',['SeqCollisionRecorder',['../structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html',1,'manifold::collider_internal']]], + ['setcircularsegments_6',['SetCircularSegments',['../classmanifold_1_1_quality.html#a6b80d08df8a58d699ce644e1248fe0e2',1,'manifold::Quality']]], + ['setmincircularangle_7',['SetMinCircularAngle',['../classmanifold_1_1_quality.html#a17d90e845a2c75a0ef859e3ec5363a9e',1,'manifold::Quality']]], + ['setmincircularedgelength_8',['SetMinCircularEdgeLength',['../classmanifold_1_1_quality.html#a6a3a5a1105d40f044f777f0e3c14506a',1,'manifold::Quality']]], + ['setnormals_9',['SetNormals',['../structmanifold_1_1_manifold_1_1_impl.html#a47e442af7d6655edf6dfef50cb958210',1,'manifold::Manifold::Impl']]], + ['setprecision_10',['SetPrecision',['../structmanifold_1_1_manifold_1_1_impl.html#a32981853ceaf771ca541df5b5c6e085b',1,'manifold::Manifold::Impl']]], + ['setproperties_11',['SetProperties',['../classmanifold_1_1_manifold.html#a1aaf5a6d1a3d8c22f1a2c57a653cc389',1,'manifold::Manifold']]], + ['sharedptrguard_12',['SharedPtrGuard',['../classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html',1,'manifold::ConcurrentSharedPtr']]], + ['sharing_20python_20colab_20example_20a_13',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['sharpentangent_14',['SharpenTangent',['../structmanifold_1_1_manifold_1_1_impl.html#a296166f49f99871cf84bb604f6f6ca7b',1,'manifold::Manifold::Impl']]], + ['shenanigans_15',['Windows Shenanigans',['..//github/workspace/README.md#autotoc_md26',1,'']]], + ['simplepolygon_16',['SimplePolygon',['../group___connections.html#ga53c298f15c33cb04ef759cec45eaecd1',1,'manifold']]], + ['simplify_17',['Simplify',['../classmanifold_1_1_cross_section.html#aa46f202c1b92251f77fd497dc8fd9daf',1,'manifold::CrossSection']]], + ['simplifytopology_18',['SimplifyTopology',['../structmanifold_1_1_manifold_1_1_impl.html#a5814bb78c6aee8506a332d6cacf76af7',1,'manifold::Manifold::Impl']]], + ['sind_19',['sind',['../group___connections.html#gaf191247f966a40ecf3ee0fe9a717c0f3',1,'manifold']]], + ['size_20',['size',['../structmanifold_1_1_rect.html#a232479a21f63dd4e6868cdedec53fa71',1,'manifold::Rect::Size()'],['../structmanifold_1_1_box.html#adedb961e2415f91bef56c5ca13e1e651',1,'manifold::Box::Size()']]], + ['slice_21',['Slice',['../classmanifold_1_1_manifold.html#a0a49d91545cef4bfcc2c9d7cb2492061',1,'manifold::Manifold']]], + ['smooth_22',['smooth',['../classmanifold_1_1_manifold.html#aad322c5b69ab571a4f4fb5b26f945b90',1,'manifold::Manifold::Smooth(const Mesh &, const std::vector< Smoothness > &sharpenedEdges={})'],['../classmanifold_1_1_manifold.html#aff03aac40d42a60f8e4254db90530c83',1,'manifold::Manifold::Smooth(const MeshGL &, const std::vector< Smoothness > &sharpenedEdges={})']]], + ['smoothbynormals_23',['SmoothByNormals',['../classmanifold_1_1_manifold.html#aa0cbb9710c375f40591c3ae2dd62f2b4',1,'manifold::Manifold']]], + ['smoothness_24',['smoothness',['../group___connections.html#structmanifold_1_1_smoothness',1,'Smoothness'],['../group___connections.html#a6ebfae52291cc3b6f4e25043eaf14381',1,'manifold::Smoothness::smoothness']]], + ['smoothout_25',['SmoothOut',['../classmanifold_1_1_manifold.html#a8ce7d02b7f16afb5e9bfb8a948e206d3',1,'manifold::Manifold']]], + ['sort_5fasc_26',['sort_Asc',['../structbenchmarks_1_1sort___asc.html',1,'benchmarks']]], + ['sort_5fasc_5fsize_27',['sort_Asc_size',['../structbenchmarks_1_1sort___asc__size.html',1,'benchmarks']]], + ['sort_5fasc_5fsize_5fmerge_28',['sort_Asc_size_merge',['../structbenchmarks_1_1sort___asc__size__merge.html',1,'benchmarks']]], + ['sort_5fdes_29',['sort_Des',['../structbenchmarks_1_1sort___des.html',1,'benchmarks']]], + ['sort_5fdes_5fsize_30',['sort_Des_size',['../structbenchmarks_1_1sort___des__size.html',1,'benchmarks']]], + ['sort_5fdes_5fsize_5fmerge_31',['sort_Des_size_merge',['../structbenchmarks_1_1sort___des__size__merge.html',1,'benchmarks']]], + ['sort_5feq_32',['sort_Eq',['../structbenchmarks_1_1sort___eq.html',1,'benchmarks']]], + ['sort_5feq_5fsize_33',['sort_Eq_size',['../structbenchmarks_1_1sort___eq__size.html',1,'benchmarks']]], + ['sort_5feq_5fsize_5fmerge_34',['sort_Eq_size_merge',['../structbenchmarks_1_1sort___eq__size__merge.html',1,'benchmarks']]], + ['sort_5frnd_35',['sort_Rnd',['../structbenchmarks_1_1sort___rnd.html',1,'benchmarks']]], + ['sort_5frnd_5fsize_36',['sort_Rnd_size',['../structbenchmarks_1_1sort___rnd__size.html',1,'benchmarks']]], + ['sort_5frnd_5fsize_5fmerge_37',['sort_Rnd_size_merge',['../structbenchmarks_1_1sort___rnd__size__merge.html',1,'benchmarks']]], + ['sort_5froughly_5fasc_38',['sort_roughly_Asc',['../structbenchmarks_1_1sort__roughly___asc.html',1,'benchmarks']]], + ['sort_5froughly_5fasc_5fsize_39',['sort_roughly_Asc_size',['../structbenchmarks_1_1sort__roughly___asc__size.html',1,'benchmarks']]], + ['sort_5froughly_5fasc_5fsize_5fmerge_40',['sort_roughly_Asc_size_merge',['../structbenchmarks_1_1sort__roughly___asc__size__merge.html',1,'benchmarks']]], + ['sortfaces_41',['SortFaces',['../structmanifold_1_1_manifold_1_1_impl.html#a9c6ad8be3b98a1f83c7d9a7df1f983c8',1,'manifold::Manifold::Impl']]], + ['sortverts_42',['SortVerts',['../structmanifold_1_1_manifold_1_1_impl.html#a960f240018111751cf0a91339a1d1b08',1,'manifold::Manifold::Impl']]], + ['sparseindices_43',['SparseIndices',['../classmanifold_1_1_sparse_indices.html',1,'manifold']]], + ['spectralnorm_44',['SpectralNorm',['../group___connections.html#ga50a9d6292886da472798354447a68cd7',1,'manifold']]], + ['sphere_45',['Sphere',['../classmanifold_1_1_manifold.html#a1fa0a21aed71099905b89a10bcde0539',1,'manifold::Manifold']]], + ['split_46',['Split',['../classmanifold_1_1_manifold.html#a60e241b8a56d334b3d2d3dbd2fc808ba',1,'manifold::Manifold']]], + ['split_5fcube_47',['split_cube',['../namespacesplit__cube.html',1,'']]], + ['splitbyplane_48',['SplitByPlane',['../classmanifold_1_1_manifold.html#adc134d7a6dfbf8c74e5d531bbeb330cb',1,'manifold::Manifold']]], + ['square_49',['square',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395daceb46ca115d05c51aa5a16a8867c3304',1,'manifold::CrossSection::Square'],['../classmanifold_1_1_cross_section.html#a6e14a9728e2b4a5912c70c8c1b42f029',1,'manifold::CrossSection::Square(const glm::vec2 dims, bool center=false)']]], + ['status_50',['Status',['../classmanifold_1_1_manifold.html#a423e2f2a67ccc0662a97e018b2c3886d',1,'manifold::Manifold']]], + ['stretchybracelet_51',['StretchyBracelet',['../group___samples.html#gaa093ef8b44f049141ccbaca556f88cd3',1,'manifold']]], + ['stridedrange_52',['StridedRange',['../structmanifold_1_1_strided_range.html',1,'manifold']]], + ['strings_53',['Autogenerated Doc-Strings',['../index.html#autotoc_md1',1,'']]], + ['subdivide_54',['Subdivide',['../structmanifold_1_1_manifold_1_1_impl.html#abe4f5b3c2e601eb17c121dfd6c755445',1,'manifold::Manifold::Impl']]], + ['support_55',['Fuzzing Support',['..//github/workspace/README.md#autotoc_md30',1,'']]], + ['suppresserrors_56',['suppressErrors',['../group___debug.html#a48b673772893c29c426e98f8c84f0206',1,'manifold::ExecutionParams']]], + ['svd_57',['SVD',['../group___connections.html#ga52654eb696e6ea2b67dcd45063d1724a',1,'manifold']]], + ['svdset_58',['SVDSet',['../group___connections.html#structmanifold_1_1_s_v_d_set',1,'manifold']]] +]; diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js new file mode 100644 index 000000000..297e8da0e --- /dev/null +++ b/docs/html/search/all_13.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['tangentfromnormal_0',['TangentFromNormal',['../structmanifold_1_1_manifold_1_1_impl.html#ab1f11c2b71e88b8eab076fb3660ff3b8',1,'manifold::Manifold::Impl']]], + ['tetpuzzle_1',['TetPuzzle',['../group___samples.html#ga49162c3a42d672758d14855ad23258b9',1,'manifold']]], + ['tetrahedron_2',['Tetrahedron',['../classmanifold_1_1_manifold.html#afbd42733f05fb87dec1b3dae9ff9f582',1,'manifold::Manifold']]], + ['the_20author_3',['the author',['..//github/workspace/README.md#autotoc_md31',1,'About the author'],['..//github/workspace/bindings/wasm/README.md#autotoc_md11',1,'About the author']]], + ['timer_4',['Timer',['../structmanifold_1_1_timer.html',1,'manifold']]], + ['tmpedge_5',['TmpEdge',['../structmanifold_1_1_tmp_edge.html',1,'manifold']]], + ['to_20contribute_6',['How to Contribute',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]], + ['topologyerr_7',['topologyErr',['../structmanifold_1_1topology_err.html',1,'manifold']]], + ['topolygons_8',['ToPolygons',['../classmanifold_1_1_cross_section.html#a209a83b1c39a84e094da9e854a7b8bc2',1,'manifold::CrossSection']]], + ['torusknot_9',['TorusKnot',['../group___samples.html#ga1937d6fee956f401ad9a3c9c2dc6eae2',1,'manifold']]], + ['transform_10',['transform',['../classmanifold_1_1_cross_section.html#af6b6f90c21018d47d860713c60a8399c',1,'manifold::CrossSection::Transform()'],['../classmanifold_1_1_manifold.html#a707b0078fbb9bbad183812d7290630ce',1,'manifold::Manifold::Transform()'],['../structmanifold_1_1_box.html#a821dd8a461d5c6938968cd76125b2102',1,'manifold::Box::Transform()'],['../structmanifold_1_1_rect.html#a3c4003d2fc5299530dcce7deb9df54a2',1,'manifold::Rect::Transform()']]], + ['transform_5freduce_11',['transform_reduce',['../structbenchmarks_1_1transform__reduce.html',1,'benchmarks']]], + ['transformbox_12',['TransformBox',['../structmanifold_1_1collider__internal_1_1_transform_box.html',1,'manifold::collider_internal']]], + ['transformiterator_13',['TransformIterator',['../structmanifold_1_1_transform_iterator.html',1,'manifold']]], + ['translate_14',['translate',['../classmanifold_1_1_manifold.html#ac1ebb85b775a3293bca68c2339762a08',1,'manifold::Manifold::Translate()'],['../classmanifold_1_1_cross_section.html#a106b1c0c300c4820cd9f5ec2f683a0db',1,'manifold::CrossSection::Translate()']]], + ['tri_15',['tri',['../structmanifold_1_1_tri_ref.html#a15e0e24263c3a2cc742b9cfcbabedf88',1,'manifold::TriRef']]], + ['triangulate_16',['Triangulate',['../group___connections.html#ga1d01ff53289da0842e539ddf8cda5c96',1,'manifold']]], + ['triangulateidx_17',['TriangulateIdx',['../group___private.html#ga1e0bedc58e58ed72b02b49addf999b85',1,'manifold']]], + ['trimbyplane_18',['TrimByPlane',['../classmanifold_1_1_manifold.html#a1b711341093c115f6688cbcaae5c8741',1,'manifold::Manifold']]], + ['triref_19',['TriRef',['../structmanifold_1_1_tri_ref.html',1,'manifold']]], + ['triverts_20',['triverts',['../structmanifold_1_1_mesh_g_l.html#afe0601a32ce917d3324b430a34f5d118',1,'manifold::MeshGL::triVerts'],['../group___connections.html#a2e749255313f9e672d69b4a94bd8e73e',1,'manifold::Mesh::triVerts']]], + ['type_5fcaster_3c_20glm_3a_3amat_3c_20c_2c_20r_2c_20t_2c_20q_20_3e_20_3e_21',['type_caster< glm::mat< C, R, T, Q > >',['../structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html',1,'nb::detail']]], + ['type_5fcaster_3c_20glm_3a_3avec_3c_20n_2c_20t_2c_20q_20_3e_20_3e_22',['type_caster< glm::vec< N, T, Q > >',['../structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html',1,'nb::detail']]], + ['type_5fcaster_3c_20manifold_3a_3avecview_3c_20glm_3a_3avec_3c_20n_2c_20t_2c_20q_20_3e_20_3e_20_3e_23',['type_caster< manifold::VecView< glm::vec< N, T, Q > > >',['../structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html',1,'nb::detail']]], + ['type_5fcaster_3c_20std_3a_3avector_3c_20glm_3a_3avec_3c_20n_2c_20t_2c_20q_20_3e_20_3e_20_3e_24',['type_caster< std::vector< glm::vec< N, T, Q > > >',['../structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html',1,'nb::detail']]] +]; diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js new file mode 100644 index 000000000..15de241bb --- /dev/null +++ b/docs/html/search/all_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['union_0',['union',['../structmanifold_1_1_box.html#ac35d2842beedafce43f5ae4dea7aef3b',1,'manifold::Box::Union(const glm::vec3 p)'],['../structmanifold_1_1_box.html#a8d8616c9f61502d6fe2331ba7a3dc7fd',1,'manifold::Box::Union(const Box &box) const'],['../structmanifold_1_1_rect.html#af8cf47248b361c1f8eec6b22dedb4233',1,'manifold::Rect::Union(const glm::vec2 p)'],['../structmanifold_1_1_rect.html#ac00b0b5a156d4a40a65637b7d419df70',1,'manifold::Rect::Union(const Rect &rect) const']]], + ['unionfind_1',['UnionFind',['../structmanifold_1_1_union_find.html',1,'manifold']]], + ['update_2',['Update',['../structmanifold_1_1_manifold_1_1_impl.html#aec0783b5a136e042adcc47bae4fe5291',1,'manifold::Manifold::Impl']]], + ['usererr_3',['userErr',['../structmanifold_1_1user_err.html',1,'manifold']]], + ['users_4',['users',['..//github/workspace/bindings/wasm/examples/README.md#autotoc_md5',1,'Note for firefox users'],['..//github/workspace/README.md#autotoc_md16',1,'Users']]], + ['usp_20sharing_20python_20colab_20example_20a_5',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]] +]; diff --git a/docs/html/search/all_15.js b/docs/html/search/all_15.js new file mode 100644 index 000000000..aa23151ee --- /dev/null +++ b/docs/html/search/all_15.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['vec_0',['Vec',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20char_20_3e_1',['Vec< char >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20float_20_3e_2',['Vec< float >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20glm_3a_3aivec3_20_3e_3',['Vec< glm::ivec3 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20glm_3a_3avec3_20_3e_4',['Vec< glm::vec3 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20glm_3a_3avec4_20_3e_5',['Vec< glm::vec4 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20int_20_3e_6',['Vec< int >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20manifold_3a_3abox_20_3e_7',['Vec< manifold::Box >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20manifold_3a_3ahalfedge_20_3e_8',['Vec< manifold::Halfedge >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20manifold_3a_3atriref_20_3e_9',['Vec< manifold::TriRef >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_10',['Vec< std::pair< int, int > >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20uint64_20_3e_11',['Vec< Uint64 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20unsigned_20char_20_3e_12',['Vec< unsigned char >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20v_20_3e_13',['Vec< V >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vecview_14',['VecView',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20char_20_3e_15',['VecView< char >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20manifold_3a_3abox_20_3e_16',['VecView< const manifold::Box >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20manifold_3a_3atmpedge_20_3e_17',['VecView< const manifold::TmpEdge >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_18',['VecView< const std::pair< int, int > >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20t_20_3e_19',['VecView< const T >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20uint32_5ft_20_3e_20',['VecView< const uint32_t >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20float_20_3e_21',['VecView< float >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20glm_3a_3aivec3_20_3e_22',['VecView< glm::ivec3 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20glm_3a_3avec3_20_3e_23',['VecView< glm::vec3 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20glm_3a_3avec4_20_3e_24',['VecView< glm::vec4 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20int_20_3e_25',['VecView< int >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20manifold_3a_3abox_20_3e_26',['VecView< manifold::Box >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20manifold_3a_3ahalfedge_20_3e_27',['VecView< manifold::Halfedge >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20manifold_3a_3atriref_20_3e_28',['VecView< manifold::TriRef >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_29',['VecView< std::pair< int, int > >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20uint64_20_3e_30',['VecView< Uint64 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20unsigned_20char_20_3e_31',['VecView< unsigned char >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20v_20_3e_32',['VecView< V >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['verbose_33',['verbose',['../group___debug.html#ab3f078684998b83967d507d0f453f454',1,'manifold::ExecutionParams']]], + ['vertcolor_34',['vertColor',['../group___mesh_i_o.html#ad7e76077d824291218e32c0bdea9d3ff',1,'manifold::Material']]], + ['vertexcollisionsz_35',['VertexCollisionsZ',['../structmanifold_1_1_manifold_1_1_impl.html#afdc4c1c73cab15b3a13853d04fee567a',1,'manifold::Manifold::Impl']]], + ['vertexdatasource_36',['VertexDataSource',['../class_vertex_data_source.html',1,'']]], + ['vertnormal_37',['vertNormal',['../group___connections.html#a7e3e35f7f7302164b545e6ea8e7cc6a6',1,'manifold::Mesh']]], + ['vertpos_38',['vertPos',['../group___connections.html#abe99befaf9804cdadc31f0233bf4827a',1,'manifold::Mesh']]], + ['vertproperties_39',['vertProperties',['../structmanifold_1_1_mesh_g_l.html#aa4312e60a8b813c1ceb0e4229a993983',1,'manifold::MeshGL']]] +]; diff --git a/docs/html/search/all_16.js b/docs/html/search/all_16.js new file mode 100644 index 000000000..64ceef07a --- /dev/null +++ b/docs/html/search/all_16.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['warp_0',['warp',['../classmanifold_1_1_cross_section.html#a6c51d81d2e730c4a3325b4ba9b3ead39',1,'manifold::CrossSection::Warp()'],['../classmanifold_1_1_manifold.html#aecb7b2e2a6a18a570154dec76658496c',1,'manifold::Manifold::Warp()']]], + ['warpbatch_1',['warpbatch',['../classmanifold_1_1_cross_section.html#ae004e45467f97624c89465248f4ffda1',1,'manifold::CrossSection::WarpBatch()'],['../classmanifold_1_1_manifold.html#a76546a15aa48f9a9064e7bfc7792c302',1,'manifold::Manifold::WarpBatch()']]], + ['wasm_2',['WASM',['..//github/workspace/README.md#autotoc_md23',1,'']]], + ['what_20s_20here_3',['what s here',['..//github/workspace/bindings/wasm/README.md#autotoc_md8',1,'What's here'],['..//github/workspace/README.md#autotoc_md21',1,'What's here']]], + ['windows_20shenanigans_4',['Windows Shenanigans',['..//github/workspace/README.md#autotoc_md26',1,'']]] +]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 000000000..1b7cf85e1 --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['barycentric_0',['Barycentric',['../group___private.html#structmanifold_1_1_barycentric',1,'manifold']]], + ['baryindices_1',['BaryIndices',['../structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_bary_indices',1,'manifold::Manifold::Impl']]], + ['batchboolean_2',['batchboolean',['../classmanifold_1_1_cross_section.html#a8543728360bc7dda5472d5aa8647b36e',1,'manifold::CrossSection::BatchBoolean()'],['../classmanifold_1_1_manifold.html#a1b30c42e224bda7e71a3ed3cf02319c1',1,'manifold::Manifold::BatchBoolean()']]], + ['bindings_3',['Python Bindings',['../index.html',1,'']]], + ['boolean_4',['boolean',['../classmanifold_1_1_cross_section.html#a05734d6b0b1fb38d56865b9c73c806f2',1,'manifold::CrossSection::Boolean()'],['../classmanifold_1_1_manifold.html#a9aad9d9b9a58ff2b7622de673742d1df',1,'manifold::Manifold::Boolean()']]], + ['boolean3_5',['Boolean3',['../classmanifold_1_1_boolean3.html',1,'manifold']]], + ['boundingbox_6',['BoundingBox',['../classmanifold_1_1_manifold.html#a3d711d458596b520edd4cd7948a53e67',1,'manifold::Manifold']]], + ['bounds_7',['Bounds',['../classmanifold_1_1_cross_section.html#ae69af2b193a98c4adc6f613a7463482c',1,'manifold::CrossSection']]], + ['box_8',['box',['../structmanifold_1_1_box.html',1,'Box'],['../structmanifold_1_1_box.html#adea1928c15ca1eb88b6619bc554911b5',1,'manifold::Box::Box()'],['../structmanifold_1_1_box.html#a4e57b8d753c7850eafadadd5c6712d0f',1,'manifold::Box::Box(const glm::vec3 p1, const glm::vec3 p2)']]], + ['bricks_9',['bricks',['../namespacebricks.html',1,'']]], + ['building_10',['Building',['..//github/workspace/README.md#autotoc_md22',1,'']]], + ['buildinternalboxes_11',['BuildInternalBoxes',['../structmanifold_1_1collider__internal_1_1_build_internal_boxes.html',1,'manifold::collider_internal']]] +]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 000000000..d76479fad --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['calculatebbox_0',['CalculateBBox',['../structmanifold_1_1_manifold_1_1_impl.html#a4bad2940552ae5f952d4b1f710627a25',1,'manifold::Manifold::Impl']]], + ['calculatecurvature_1',['CalculateCurvature',['../classmanifold_1_1_manifold.html#a19abb297f7b7b43f5c84562bcc7df705',1,'manifold::Manifold']]], + ['calculatenormals_2',['calculatenormals',['../structmanifold_1_1_manifold_1_1_impl.html#adef45f00696640f682ede12311bdace7',1,'manifold::Manifold::Impl::CalculateNormals()'],['../classmanifold_1_1_manifold.html#a69c1ea423ea019bb932e3f55d3f6ff50',1,'manifold::Manifold::CalculateNormals()']]], + ['ccw_3',['CCW',['../group___connections.html#ga20f946797231119dd2b7260c216cda31',1,'manifold']]], + ['center_4',['center',['../structmanifold_1_1_box.html#aa2116eed911ac1b0277788b05b0f663f',1,'manifold::Box::Center()'],['../structmanifold_1_1_rect.html#a04bdce0e30cdda6f80ccb5255a12f7df',1,'manifold::Rect::Center()']]], + ['circle_5',['Circle',['../classmanifold_1_1_cross_section.html#adcb3b6bc6e70c831ac8c1890277e8548',1,'manifold::CrossSection']]], + ['cleanuptriangles_6',['cleanupTriangles',['../group___debug.html#a85c1664e476e1da1b3d0973b3451857b',1,'manifold::ExecutionParams']]], + ['clojure_7',['Java / Clojure',['..//github/workspace/README.md#autotoc_md25',1,'']]], + ['code_20reviews_8',['Code Reviews',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md14',1,'']]], + ['colab_20example_20a_9',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['colab_20research_20google_20com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_10',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['collider_11',['Collider',['../classmanifold_1_1_collider.html',1,'manifold']]], + ['color_12',['color',['../group___mesh_i_o.html#af3f2d7fd6f40d5dd418aef858956a49b',1,'manifold::Material']]], + ['colorchannels_13',['colorChannels',['../group___mesh_i_o.html#a0cb39f4007172ad6c0d647c9d0a5a4c7',1,'manifold::Material']]], + ['com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_14',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['community_20guidelines_15',['Community Guidelines',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md15',1,'']]], + ['compactprops_16',['CompactProps',['../structmanifold_1_1_manifold_1_1_impl.html#af327697359fb97021fbdcdd0d53b471a',1,'manifold::Manifold::Impl']]], + ['compose_17',['compose',['../classmanifold_1_1_cross_section.html#a6eb6f97b4b0c4ac7bfeb79dc1234e8f3',1,'manifold::CrossSection::Compose()'],['../classmanifold_1_1_manifold.html#a96a1b20e25443713304db55196573e3d',1,'manifold::Manifold::Compose()'],['../classmanifold_1_1_csg_leaf_node.html#ac78f0bab130bd5e2cddeb9fed4c149ed',1,'manifold::CsgLeafNode::Compose()']]], + ['concurrentsharedptr_18',['ConcurrentSharedPtr',['../classmanifold_1_1_concurrent_shared_ptr.html',1,'manifold']]], + ['concurrentsharedptr_3c_20impl_20_3e_19',['ConcurrentSharedPtr< Impl >',['../classmanifold_1_1_concurrent_shared_ptr.html',1,'manifold']]], + ['connections_20',['Connections',['../group___connections.html',1,'']]], + ['contains_21',['contains',['../structmanifold_1_1_rect.html#aca39547495139ea25f2edd87569e10b6',1,'manifold::Rect::Contains(const Rect &rect) const'],['../structmanifold_1_1_rect.html#a348dcfe50700c6ff69c6fa7641f7537d',1,'manifold::Rect::Contains(const glm::vec2 &p) const'],['../structmanifold_1_1_box.html#afddd3d24795d0c760ae8a458ead93b0d',1,'manifold::Box::Contains(const Box &box) const'],['../structmanifold_1_1_box.html#a1aa1ea08f35a830ecc80b2bc83c9bcce',1,'manifold::Box::Contains(const glm::vec3 &p) const']]], + ['contribute_22',['How to Contribute',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]], + ['contributing_23',['Contributing',['..//github/workspace/README.md#autotoc_md27',1,'']]], + ['contributor_20license_20agreement_24',['Contributor License Agreement',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md13',1,'']]], + ['convexhull_25',['ConvexHull',['../class_convex_hull.html',1,'']]], + ['copy_26',['copy',['../structbenchmarks_1_1copy.html',1,'benchmarks']]], + ['copy_5fif_5f1001_27',['copy_if_1001',['../structbenchmarks_1_1copy__if__1001.html',1,'benchmarks']]], + ['copy_5fif_5f28_28',['copy_if_28',['../structbenchmarks_1_1copy__if__28.html',1,'benchmarks']]], + ['copy_5fif_5f55_29',['copy_if_55',['../structbenchmarks_1_1copy__if__55.html',1,'benchmarks']]], + ['copy_5fif_5f82_30',['copy_if_82',['../structbenchmarks_1_1copy__if__82.html',1,'benchmarks']]], + ['core_31',['Core',['../group___core.html',1,'']]], + ['cosd_32',['cosd',['../group___connections.html#ga502f5a841d8d1fcba289e167a1177bda',1,'manifold']]], + ['count_33',['count',['../structbenchmarks_1_1count.html',1,'benchmarks']]], + ['countcollisions_34',['CountCollisions',['../structmanifold_1_1collider__internal_1_1_count_collisions.html',1,'manifold::collider_internal']]], + ['countingiterator_35',['CountingIterator',['../structmanifold_1_1_counting_iterator.html',1,'manifold']]], + ['createhalfedges_36',['CreateHalfedges',['../structmanifold_1_1_manifold_1_1_impl.html#aff973f757a74082c8fc75b0f8054557d',1,'manifold::Manifold::Impl']]], + ['createradixtree_37',['CreateRadixTree',['../structmanifold_1_1collider__internal_1_1_create_radix_tree.html',1,'manifold::collider_internal']]], + ['createtangents_38',['createtangents',['../structmanifold_1_1_manifold_1_1_impl.html#ace17948374ae1178c45e661c1b95cc8b',1,'manifold::Manifold::Impl::CreateTangents(std::vector< Smoothness >)'],['../structmanifold_1_1_manifold_1_1_impl.html#acc962337837219c991a414bf4033ef61',1,'manifold::Manifold::Impl::CreateTangents(int normalIdx)']]], + ['crosssection_39',['crosssection',['../classmanifold_1_1_cross_section.html#ada3a36554c48080ae963a9628de79436',1,'manifold::CrossSection::CrossSection(const CrossSection &other)'],['../classmanifold_1_1_cross_section.html#ad2f60f6e1e3d45e773a595a1be246cf2',1,'manifold::CrossSection::CrossSection(const Rect &rect)'],['../classmanifold_1_1_cross_section.html#a885334a617ae0eea9402f74a20f4408e',1,'manifold::CrossSection::CrossSection(const Polygons &contours, FillRule fillrule=FillRule::Positive)'],['../classmanifold_1_1_cross_section.html#aca5659d6e02ee4583791b54285d682a2',1,'manifold::CrossSection::CrossSection(const SimplePolygon &contour, FillRule fillrule=FillRule::Positive)'],['../classmanifold_1_1_cross_section.html#acbed403d82ee8d55f3be2c9a5f963ec0',1,'manifold::CrossSection::CrossSection()'],['../classmanifold_1_1_cross_section.html',1,'CrossSection']]], + ['csgleafnode_40',['CsgLeafNode',['../classmanifold_1_1_csg_leaf_node.html',1,'manifold']]], + ['csgnode_41',['CsgNode',['../classmanifold_1_1_csg_node.html',1,'manifold']]], + ['csgopnode_42',['CsgOpNode',['../classmanifold_1_1_csg_op_node.html',1,'manifold']]], + ['cube_43',['Cube',['../classmanifold_1_1_manifold.html#a42a229536f08603883f7bf6329de589b',1,'manifold::Manifold']]], + ['cube_5fwith_5fdents_44',['cube_with_dents',['../namespacecube__with__dents.html',1,'']]], + ['cubevoid_45',['CubeVoid',['../struct_cube_void.html',1,'']]], + ['cylinder_46',['Cylinder',['../classmanifold_1_1_manifold.html#ad13bd5caab7cb2ad363be98066b93a68',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 000000000..2b720fa32 --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['debug_0',['Debug',['../group___debug.html',1,'']]], + ['decompose_1',['decompose',['../classmanifold_1_1_cross_section.html#a48f77ce6390caee13a94f681893fb65c',1,'manifold::CrossSection::Decompose()'],['../classmanifold_1_1_manifold.html#a7f20b130779680156ce0d28d91e5d106',1,'manifold::Manifold::Decompose()']]], + ['deterministic_2',['deterministic',['../group___debug.html#a02bda2c80b22d0c2507c7a74febb93bf',1,'manifold::ExecutionParams']]], + ['development_3',['Local development',['..//github/workspace/bindings/wasm/examples/README.md#autotoc_md4',1,'']]], + ['diagnosticsdata_4',['DiagnosticsData',['../struct_diagnostics_data.html',1,'']]], + ['distancetriangletrianglesquared_5',['DistanceTriangleTriangleSquared',['../namespacemanifold.html#af8fb0f066f81a72edd0d91c2e1957329',1,'manifold']]], + ['distributetangents_6',['DistributeTangents',['../structmanifold_1_1_manifold_1_1_impl.html#ae520f2222155301f5bb6551702222014',1,'manifold::Manifold::Impl']]], + ['doc_20strings_7',['Autogenerated Doc-Strings',['../index.html#autotoc_md1',1,'']]], + ['doesoverlap_8',['doesoverlap',['../structmanifold_1_1_box.html#a46774b2491c515fa7f6d48c561395669',1,'manifold::Box::DoesOverlap(const Box &box) const'],['../structmanifold_1_1_box.html#a0eae49109f2471de7546d95c273f3461',1,'manifold::Box::DoesOverlap(glm::vec3 p) const'],['../structmanifold_1_1_rect.html#ae9b86c34e407f27313804c9a7d30c8c2',1,'manifold::Rect::DoesOverlap()']]], + ['drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_9',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['dump_10',['Dump',['../group___debug.html#ga5a4ed9a6d64edb22079ff7a5caddcb5a',1,'manifold']]] +]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 000000000..8ab8e6a01 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['edge_0',['Edge',['../struct_edge.html',1,'']]], + ['edgecollisions_1',['EdgeCollisions',['../structmanifold_1_1_manifold_1_1_impl.html#afed30f82c409a32c13e68079a5b366a5',1,'manifold::Manifold::Impl']]], + ['edgeedgedist_2',['EdgeEdgeDist',['../namespacemanifold.html#ad1d9e7b62d9b78d53b339584180bd79c',1,'manifold']]], + ['evenodd_3',['EvenOdd',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a8e586e4bd2c45e86222301f2e6e0e390',1,'manifold::CrossSection']]], + ['example_20a_4',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['examples_5',['Examples',['..//github/workspace/bindings/wasm/README.md#autotoc_md10',1,'']]], + ['exceptions_6',['Exceptions',['../group___exceptions.html',1,'']]], + ['exclusive_5fscan_7',['exclusive_scan',['../structbenchmarks_1_1exclusive__scan.html',1,'benchmarks']]], + ['executionparams_8',['ExecutionParams',['../group___debug.html#structmanifold_1_1_execution_params',1,'manifold']]], + ['exportmesh_9',['exportmesh',['../group___mesh_i_o.html#gac28a5cd14ebf185edff7a55c4efb5edb',1,'manifold::ExportMesh(const std::string &filename, const Mesh &mesh, const ExportOptions &options)'],['../group___mesh_i_o.html#ga83ff5d8f4ee07ce7902b1d9ccea3640c',1,'manifold::ExportMesh(const std::string &filename, const MeshGL &mesh, const ExportOptions &options)']]], + ['exportoptions_10',['ExportOptions',['../group___mesh_i_o.html#structmanifold_1_1_export_options',1,'manifold']]], + ['extrude_11',['Extrude',['../classmanifold_1_1_manifold.html#a819aeb376cce89ac087ab04299c22551',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 000000000..89da197a4 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['face_0',['face',['../struct_mesh_builder_1_1_face.html',1,'MeshBuilder::Face'],['../class_half_edge_mesh.html#struct_half_edge_mesh_1_1_face',1,'HalfEdgeMesh::Face']]], + ['face2polygons_1',['Face2Polygons',['../structmanifold_1_1_manifold_1_1_impl.html#ae2e222860f6cfa46e1c0e270d26f5976',1,'manifold::Manifold::Impl']]], + ['face2tri_2',['Face2Tri',['../structmanifold_1_1_manifold_1_1_impl.html#af037f51003b109c22f6a67cea6238021',1,'manifold::Manifold::Impl']]], + ['faceid_3',['faceID',['../structmanifold_1_1_mesh_g_l.html#ac6e7182a9cef30c9644ee167fbff30e1',1,'manifold::MeshGL']]], + ['faceted_4',['faceted',['../group___mesh_i_o.html#a30d67be5305ec851cfd4e8e4a15c6d05',1,'manifold::ExportOptions']]], + ['fill_5',['fill',['../structbenchmarks_1_1fill.html',1,'benchmarks']]], + ['fillretainedverts_6',['FillRetainedVerts',['../structmanifold_1_1_manifold_1_1_impl.html#a0f3beb18c180190ad660336992f0ff64',1,'manifold::Manifold::Impl']]], + ['fillrule_7',['FillRule',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4',1,'manifold::CrossSection']]], + ['findcollisions_8',['FindCollisions',['../structmanifold_1_1collider__internal_1_1_find_collisions.html',1,'manifold::collider_internal']]], + ['finish_9',['Finish',['../structmanifold_1_1_manifold_1_1_impl.html#af9d1bc46635e487c85720b943dd8ba28',1,'manifold::Manifold::Impl']]], + ['firefox_20users_10',['Note for firefox users',['..//github/workspace/bindings/wasm/examples/README.md#autotoc_md5',1,'']]], + ['firstfinite_11',['firstFinite',['../structmanifold_1_1_sparse_indices_1_1first_finite.html',1,'manifold::SparseIndices']]], + ['for_20firefox_20users_12',['Note for firefox users',['..//github/workspace/bindings/wasm/examples/README.md#autotoc_md5',1,'']]], + ['for_5feach_13',['for_each',['../structbenchmarks_1_1for__each.html',1,'benchmarks']]], + ['formatting_14',['Formatting',['..//github/workspace/README.md#autotoc_md28',1,'']]], + ['frontend_20sandboxes_15',['Manifold Frontend Sandboxes',['..//github/workspace/README.md#autotoc_md17',1,'']]], + ['fuzzing_20support_16',['Fuzzing Support',['..//github/workspace/README.md#autotoc_md30',1,'']]] +]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 000000000..7c863e6fd --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['gatherfaces_0',['GatherFaces',['../structmanifold_1_1_manifold_1_1_impl.html#abd9a97b16b825e7ee3fd989aaf776757',1,'manifold::Manifold::Impl']]], + ['genus_1',['Genus',['../classmanifold_1_1_manifold.html#a4b1e9ca27fc618965d0bbbc9d29fb5c1',1,'manifold::Manifold']]], + ['geometryerr_2',['geometryErr',['../structmanifold_1_1geometry_err.html',1,'manifold']]], + ['getaxisalignedprojection_3',['GetAxisAlignedProjection',['../group___private.html#ga95945ec21500a4c02b449357b3ef57ec',1,'manifold']]], + ['getcircularsegments_4',['GetCircularSegments',['../classmanifold_1_1_quality.html#a7cd38ae559bc27df5e18b988176f82ae',1,'manifold::Quality']]], + ['getfaceboxmorton_5',['GetFaceBoxMorton',['../structmanifold_1_1_manifold_1_1_impl.html#ae950ed2beaef893ec411aa3921aa25a8',1,'manifold::Manifold::Impl']]], + ['gethalfedges_6',['GetHalfedges',['../structmanifold_1_1_manifold_1_1_impl.html#a76d1ba381f31f14ad9e59ff880dbd2c1',1,'manifold::Manifold::Impl']]], + ['getindices_7',['GetIndices',['../structmanifold_1_1_manifold_1_1_impl.html#a5663e9c8c9f549c90a3cfd36ad2c787a',1,'manifold::Manifold::Impl']]], + ['getmesh_8',['GetMesh',['../classmanifold_1_1_manifold.html#a74a906cf6aacd6c0aef61b5079a8c750',1,'manifold::Manifold']]], + ['getmeshgl_9',['GetMeshGL',['../classmanifold_1_1_manifold.html#a5516d4d27772731e50540edd45553a4d',1,'manifold::Manifold']]], + ['getneighbor_10',['GetNeighbor',['../structmanifold_1_1_manifold_1_1_impl.html#a8a3b5765ff1df3e2090e792f8a2eb444',1,'manifold::Manifold::Impl']]], + ['getnormal_11',['GetNormal',['../structmanifold_1_1_manifold_1_1_impl.html#ad72a9d659785fbc90d0b31e9594768b9',1,'manifold::Manifold::Impl']]], + ['getproperties_12',['GetProperties',['../classmanifold_1_1_manifold.html#ace809d84f44f59232653183bf86ece07',1,'manifold::Manifold']]], + ['glm_5fname_13',['glm_name',['../structglm__name.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3aivec3_20_3e_14',['glm_name< glm::ivec3 >',['../structglm__name_3_01glm_1_1ivec3_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3amat3x2_20_3e_15',['glm_name< glm::mat3x2 >',['../structglm__name_3_01glm_1_1mat3x2_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3amat4x3_20_3e_16',['glm_name< glm::mat4x3 >',['../structglm__name_3_01glm_1_1mat4x3_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3avec2_20_3e_17',['glm_name< glm::vec2 >',['../structglm__name_3_01glm_1_1vec2_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3avec3_20_3e_18',['glm_name< glm::vec3 >',['../structglm__name_3_01glm_1_1vec3_01_4.html',1,'']]], + ['google_20com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_19',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['guidelines_20',['Community Guidelines',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md15',1,'']]], + ['gyroid_5fmodule_21',['gyroid_module',['../namespacegyroid__module.html',1,'']]], + ['gyroidmodule_22',['GyroidModule',['../group___samples.html#ga0a03a270aa7eff0866996c7abca5b0f0',1,'manifold']]], + ['gyroidsdf_23',['GyroidSDF',['../struct_gyroid_s_d_f.html',1,'']]] +]; diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 000000000..809caec1a --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['halfedge_0',['halfedge',['../structmanifold_1_1_halfedge.html',1,'Halfedge'],['../struct_mesh_builder_1_1_half_edge.html',1,'MeshBuilder::HalfEdge'],['../class_half_edge_mesh.html#struct_half_edge_mesh_1_1_half_edge',1,'HalfEdgeMesh::HalfEdge'],['../group___connections.html#aac5709f1a46385ba2978c8184909a8f9',1,'manifold::Smoothness::halfedge']]], + ['halfedgemesh_1',['HalfEdgeMesh',['../class_half_edge_mesh.html',1,'']]], + ['halfedgetangent_2',['halfedgetangent',['../group___connections.html#a496f746871d5d54cf13f1935b0e4fc66',1,'manifold::Mesh::halfedgeTangent'],['../structmanifold_1_1_mesh_g_l.html#a387df8d12d2307639b862c30efa7e5c5',1,'manifold::MeshGL::halfedgeTangent']]], + ['hash_3c_20glm_3a_3aivec4_20_3e_3',['hash< glm::ivec4 >',['../structstd_1_1hash_3_01glm_1_1ivec4_01_4.html',1,'std']]], + ['hash_3c_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_4',['hash< std::pair< int, int > >',['../structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html',1,'std']]], + ['hashtable_5',['HashTable',['../classmanifold_1_1_hash_table.html',1,'manifold']]], + ['hashtabled_6',['HashTableD',['../classmanifold_1_1_hash_table_d.html',1,'manifold']]], + ['here_7',['here',['..//github/workspace/README.md#autotoc_md21',1,'What's here'],['..//github/workspace/bindings/wasm/README.md#autotoc_md8',1,'What's here']]], + ['how_20to_20contribute_8',['How to Contribute',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]], + ['href_20https_3a_20colab_20research_20google_20com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_9',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['href_20https_3a_20manifoldcad_20org_20manifoldcad_20org_20a_10',['href https: manifoldcad org manifoldcad org a',['..//github/workspace/README.md#autotoc_md18',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>'],['..//github/workspace/bindings/wasm/README.md#autotoc_md6',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>']]], + ['https_3a_20colab_20research_20google_20com_20drive_201vxrfyhpshzgubl9tewzceovlpxrpq5j5_20usp_20sharing_20python_20colab_20example_20a_11',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]], + ['https_3a_20manifoldcad_20org_20manifoldcad_20org_20a_12',['https: manifoldcad org manifoldcad org a',['..//github/workspace/README.md#autotoc_md18',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>'],['..//github/workspace/bindings/wasm/README.md#autotoc_md6',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>']]], + ['hull_13',['hull',['../classmanifold_1_1_cross_section.html#aa5ea1caf54ddac72d939a00d13763ace',1,'manifold::CrossSection::Hull()'],['../classmanifold_1_1_manifold.html#a10a70ad7f357e93a96b86dd29fe12556',1,'manifold::Manifold::Hull(const std::vector< glm::vec3 > &pts)'],['../classmanifold_1_1_manifold.html#a0b45afc24015963e82745f1f83f3f310',1,'manifold::Manifold::Hull(const std::vector< Manifold > &manifolds)'],['../classmanifold_1_1_manifold.html#a9dc9e00112e2b063cfa6fe8482b1afe8',1,'manifold::Manifold::Hull() const'],['../classmanifold_1_1_cross_section.html#a800d15ed35b3f430a11f1fdc4dfe79a6',1,'manifold::CrossSection::Hull(const Polygons polys)'],['../classmanifold_1_1_cross_section.html#aec35843b9a8e1470605ae615a66643e2',1,'manifold::CrossSection::Hull(const SimplePolygon poly)'],['../classmanifold_1_1_cross_section.html#a49d6309921d09ab4e9874f1987f3b487',1,'manifold::CrossSection::Hull(const std::vector< CrossSection > &crossSections)']]], + ['hullimpl_14',['HullImpl',['../class_hull_impl.html',1,'']]], + ['hullimplcgal_15',['HullImplCGAL',['../class_hull_impl_c_g_a_l.html',1,'']]], + ['hullimploriginal_16',['HullImplOriginal',['../class_hull_impl_original.html',1,'']]] +]; diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 000000000..c86fae375 --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['identity_0',['Identity',['../structmanifold_1_1_identity.html',1,'manifold']]], + ['idx_1',['idx',['../group___private.html#ae40354a1051342eb5a9db005715dcfa9',1,'manifold::PolyVert']]], + ['impl_2',['impl',['../structmanifold_1_1_manifold_1_1_impl.html',1,'Manifold::Impl'],['../structmanifold_1_1_manifold_1_1_impl.html#ab7abcb084ad024cb903caa4e4715f713',1,'manifold::Manifold::Impl::Impl(Shape, const glm::mat4x3=glm::mat4x3(1))'],['../structmanifold_1_1_manifold_1_1_impl.html#a0993c9acd8bdbd25672b9fae02c02c0f',1,'manifold::Manifold::Impl::Impl(const Mesh &, const MeshRelationD &relation, const std::vector< float > &propertyTolerance={}, bool hasFaceIDs=false)']]], + ['importmesh_3',['ImportMesh',['../group___mesh_i_o.html#ga6e6f86230549750f1d346db483fc30f0',1,'manifold']]], + ['incrementmeshids_4',['IncrementMeshIDs',['../structmanifold_1_1_manifold_1_1_impl.html#a11d47359eb52523a2bc86f6d4ab22633',1,'manifold::Manifold::Impl']]], + ['intermediatechecks_5',['intermediateChecks',['../group___debug.html#ae8dc7c8ba98011f6f2dbe1caddf2a6fb',1,'manifold::ExecutionParams']]], + ['is2manifold_6',['Is2Manifold',['../structmanifold_1_1_manifold_1_1_impl.html#a7b0298da43b37952e432a1a0c4b02e00',1,'manifold::Manifold::Impl']]], + ['isempty_7',['isempty',['../classmanifold_1_1_cross_section.html#a8e12342fc420701fbffd97025421575a',1,'manifold::CrossSection::IsEmpty()'],['../classmanifold_1_1_manifold.html#a8e12342fc420701fbffd97025421575a',1,'manifold::Manifold::IsEmpty()'],['../structmanifold_1_1_rect.html#a8e12342fc420701fbffd97025421575a',1,'manifold::Rect::IsEmpty()']]], + ['isfinite_8',['isfinite',['../structmanifold_1_1_manifold_1_1_impl.html#a33b7dcc502aae627fbc56bcfecf33af1',1,'manifold::Manifold::Impl::IsFinite()'],['../structmanifold_1_1_box.html#a33b7dcc502aae627fbc56bcfecf33af1',1,'manifold::Box::IsFinite()'],['../structmanifold_1_1_rect.html#a33b7dcc502aae627fbc56bcfecf33af1',1,'manifold::Rect::IsFinite()']]], + ['isindexinbounds_9',['IsIndexInBounds',['../structmanifold_1_1_manifold_1_1_impl.html#a0ee79d083b1fb6b58801ebf83d47880d',1,'manifold::Manifold::Impl']]], + ['isinsidequad_10',['IsInsideQuad',['../structmanifold_1_1_manifold_1_1_impl.html#aa244e3ec23cdce59aa792a297f0c8cde',1,'manifold::Manifold::Impl']]], + ['ismanifold_11',['IsManifold',['../structmanifold_1_1_manifold_1_1_impl.html#a28f34ca6c256f1f7fa44e862540ec421',1,'manifold::Manifold::Impl']]], + ['ismarkedinsidequad_12',['IsMarkedInsideQuad',['../structmanifold_1_1_manifold_1_1_impl.html#a879e2e73b1f97ca728d306dfb3c520d5',1,'manifold::Manifold::Impl']]] +]; diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 000000000..388049bf6 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['java_20clojure_0',['Java / Clojure',['..//github/workspace/README.md#autotoc_md25',1,'']]], + ['jointype_1',['JoinType',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395d',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js new file mode 100644 index 000000000..689ec006b --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['layers_0',['Layers',['../struct_layers.html',1,'']]], + ['levelset_1',['LevelSet',['../group___core.html#ga0bb6eea1a6990a9cb6009d138887c7ff',1,'manifold::MeshGL']]], + ['license_20agreement_2',['Contributor License Agreement',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html#autotoc_md13',1,'']]], + ['linearizeflattangents_3',['LinearizeFlatTangents',['../structmanifold_1_1_manifold_1_1_impl.html#a744f7dc967657edf6fdba43aaa81ad3e',1,'manifold::Manifold::Impl']]], + ['local_20development_4',['Local development',['..//github/workspace/bindings/wasm/examples/README.md#autotoc_md4',1,'']]] +]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 000000000..8bc75a5ae --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['management_0',['Note on memory management',['..//github/workspace/bindings/wasm/README.md#autotoc_md9',1,'']]], + ['manifold_1',['manifold',['../classmanifold_1_1_manifold.html',1,'Manifold'],['..//github/workspace/README.md#autotoc_md20',1,'Manifold'],['..//github/workspace/bindings/wasm/README.md#autotoc_md7',1,'Manifold'],['../classmanifold_1_1_manifold.html#a3f761d66cf1aa619203bb7622a5f93ea',1,'manifold::Manifold::Manifold(const Mesh &)'],['../classmanifold_1_1_manifold.html#a4bc17f3828311b81bf61c34805501599',1,'manifold::Manifold::Manifold(const MeshGL &, const std::vector< float > &propertyTolerance={})'],['../classmanifold_1_1_manifold.html#ad5f60691d05e3402630122740cdf3a0b',1,'manifold::Manifold::Manifold()'],['../namespacemanifold.html',1,'manifold']]], + ['manifold_20frontend_20sandboxes_2',['Manifold Frontend Sandboxes',['..//github/workspace/README.md#autotoc_md17',1,'']]], + ['manifoldcad_20org_20a_3',['manifoldcad org a',['..//github/workspace/README.md#autotoc_md18',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>'],['..//github/workspace/bindings/wasm/README.md#autotoc_md6',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>']]], + ['manifoldcad_20org_20manifoldcad_20org_20a_4',['manifoldcad org manifoldcad org a',['..//github/workspace/README.md#autotoc_md18',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>'],['..//github/workspace/bindings/wasm/README.md#autotoc_md6',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>']]], + ['manifoldivec3_5',['ManifoldIVec3',['../struct_manifold_i_vec3.html',1,'']]], + ['manifoldmanifoldpair_6',['ManifoldManifoldPair',['../struct_manifold_manifold_pair.html',1,'']]], + ['manifoldparams_7',['ManifoldParams',['../group___debug.html#ga4a00dd8e8dff2c4f8a9105d1a5558275',1,'manifold']]], + ['manifoldproperties_8',['ManifoldProperties',['../struct_manifold_properties.html',1,'']]], + ['manifoldvec2_9',['ManifoldVec2',['../struct_manifold_vec2.html',1,'']]], + ['manifoldvec3_10',['ManifoldVec3',['../struct_manifold_vec3.html',1,'']]], + ['manifoldvec4_11',['ManifoldVec4',['../struct_manifold_vec4.html',1,'']]], + ['mat_12',['mat',['../group___mesh_i_o.html#ad16fe831da261fdf27e971c77c3e8a60',1,'manifold::ExportOptions']]], + ['matchestrinormals_13',['matchestrinormals',['../classmanifold_1_1_manifold.html#a611a5fd95dc5d49cd88182b8ead722b7',1,'manifold::Manifold::MatchesTriNormals()'],['../structmanifold_1_1_manifold_1_1_impl.html#a611a5fd95dc5d49cd88182b8ead722b7',1,'manifold::Manifold::Impl::MatchesTriNormals()']]], + ['material_14',['Material',['../group___mesh_i_o.html#structmanifold_1_1_material',1,'manifold']]], + ['memory_20management_15',['Note on memory management',['..//github/workspace/bindings/wasm/README.md#autotoc_md9',1,'']]], + ['mengersponge_16',['MengerSponge',['../group___samples.html#ga31bc13b03579ca41da7ae9b5ba171fae',1,'manifold']]], + ['merge_17',['Merge',['../structmanifold_1_1_mesh_g_l.html#a2078d075bef279041b67769e4197c254',1,'manifold::MeshGL']]], + ['mergefromvert_18',['mergeFromVert',['../structmanifold_1_1_mesh_g_l.html#a77a299604952d11f9859c85f6e7b0078',1,'manifold::MeshGL']]], + ['mergetovert_19',['mergeToVert',['../structmanifold_1_1_mesh_g_l.html#aefcc49e01a1d6de7ce57830d55b66e9a',1,'manifold::MeshGL']]], + ['mesh_20',['Mesh',['../group___connections.html#structmanifold_1_1_mesh',1,'manifold']]], + ['meshbuilder_21',['MeshBuilder',['../class_mesh_builder.html',1,'']]], + ['meshgl_22',['meshgl',['../structmanifold_1_1_mesh_g_l.html#a258a2922fc12421c9a5ebde99606d0ed',1,'manifold::MeshGL::MeshGL()'],['../structmanifold_1_1_mesh_g_l.html',1,'MeshGL']]], + ['meshid_23',['meshID',['../structmanifold_1_1_tri_ref.html#a3552b302dec169446141ae02c7a2dc12',1,'manifold::TriRef']]], + ['meshio_24',['MeshIO',['../group___mesh_i_o.html',1,'']]], + ['meshrelationd_25',['MeshRelationD',['../structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_mesh_relation_d',1,'manifold::Manifold::Impl']]], + ['meshsize_26',['MeshSize',['../struct_mesh_size.html',1,'']]], + ['metalness_27',['metalness',['../group___mesh_i_o.html#ad877087793da649b455041e10f4ed73f',1,'manifold::Material']]], + ['mingap_28',['MinGap',['../classmanifold_1_1_manifold.html#a4a193d3f0a8c3af87961a9161cb17c68',1,'manifold::Manifold']]], + ['mirror_29',['mirror',['../classmanifold_1_1_manifold.html#a90bbf2842d0a2dc394d32f1a0a32c24a',1,'manifold::Manifold::Mirror()'],['../classmanifold_1_1_cross_section.html#adf67b7a277a85b21115f7063361da2ff',1,'manifold::CrossSection::Mirror(const glm::vec2 ax) const']]], + ['miter_30',['Miter',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dae4396f81cd926bb129ccf3c147c64514',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 000000000..70dddb17f --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['negate_0',['Negate',['../structmanifold_1_1_negate.html',1,'manifold']]], + ['negative_1',['Negative',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4affb9356ff2b7da85c75c92fa7ea03b8b',1,'manifold::CrossSection']]], + ['nonzero_2',['NonZero',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3d0365a27a39c0af183445fc4d932a8a',1,'manifold::CrossSection']]], + ['normalchannels_3',['normalChannels',['../group___mesh_i_o.html#afb46049a7293c3951d7c56b42701beaf',1,'manifold::Material']]], + ['note_20for_20firefox_20users_4',['Note for firefox users',['..//github/workspace/bindings/wasm/examples/README.md#autotoc_md5',1,'']]], + ['note_20on_20memory_20management_5',['Note on memory management',['..//github/workspace/bindings/wasm/README.md#autotoc_md9',1,'']]], + ['numcontour_6',['NumContour',['../classmanifold_1_1_cross_section.html#af73463c82eede09392aff17a7154a00c',1,'manifold::CrossSection']]], + ['numdegeneratetris_7',['numdegeneratetris',['../structmanifold_1_1_manifold_1_1_impl.html#afe3dd0baef775b394ee1a1ee0e353e66',1,'manifold::Manifold::Impl::NumDegenerateTris()'],['../classmanifold_1_1_manifold.html#afe3dd0baef775b394ee1a1ee0e353e66',1,'manifold::Manifold::NumDegenerateTris() const']]], + ['numedge_8',['NumEdge',['../classmanifold_1_1_manifold.html#a104cf8e5b32ca6b5789e8694835f332a',1,'manifold::Manifold']]], + ['numoverlaps_9',['NumOverlaps',['../classmanifold_1_1_manifold.html#a0dd36b29fdc9003280f6b1b96907b704',1,'manifold::Manifold']]], + ['numprop_10',['numprop',['../classmanifold_1_1_manifold.html#a4895dc2eac1d414f84cb8ecf3ff28348',1,'manifold::Manifold::NumProp()'],['../structmanifold_1_1_mesh_g_l.html#adf2ac53615be5ed3bf9ce4665e81eb75',1,'manifold::MeshGL::numProp']]], + ['numpropvert_11',['NumPropVert',['../classmanifold_1_1_manifold.html#aad2ca3e816f01c7390a774c6ffa9854d',1,'manifold::Manifold']]], + ['numtri_12',['numtri',['../structmanifold_1_1_mesh_g_l.html#a3361a5e76bdb57f495d6ed826b3294b6',1,'manifold::MeshGL::NumTri()'],['../classmanifold_1_1_manifold.html#a4a625f14e59f176052a369213cd89ed6',1,'manifold::Manifold::NumTri()']]], + ['numvert_13',['numvert',['../classmanifold_1_1_cross_section.html#a85b690c706c5e2c2c29e0ced0c2728ca',1,'manifold::CrossSection::NumVert()'],['../structmanifold_1_1_mesh_g_l.html#a21b84c701fbe74b93047405e36073658',1,'manifold::MeshGL::NumVert()'],['../classmanifold_1_1_manifold.html#a85b690c706c5e2c2c29e0ced0c2728ca',1,'manifold::Manifold::NumVert()']]] +]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 000000000..546dc447d --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['offset_0',['Offset',['../classmanifold_1_1_cross_section.html#a9040df87b5b8b9b7705d6c6e62188d8a',1,'manifold::CrossSection']]], + ['on_20memory_20management_1',['Note on memory management',['..//github/workspace/bindings/wasm/README.md#autotoc_md9',1,'']]], + ['operator_22_22_5fuz_2',['operator""_uz',['../namespacemanifold.html#a94b9f74f9f0e28c9e31534d6fc624d14',1,'manifold']]], + ['operator_2a_3',['operator*',['../structmanifold_1_1_box.html#a60e8048a284bf5f5de8bc93fe2e3b617',1,'manifold::Box::operator*()'],['../structmanifold_1_1_rect.html#a2ef09e7a095674473637a34b26b4b389',1,'manifold::Rect::operator*()']]], + ['operator_2a_3d_4',['operator*=',['../structmanifold_1_1_box.html#af62267ab92ad369671e2cb34a296d4fc',1,'manifold::Box::operator*=()'],['../structmanifold_1_1_rect.html#aec959d2e100436dce6e226adb93ce9aa',1,'manifold::Rect::operator*=()']]], + ['operator_2b_5',['operator+',['../classmanifold_1_1_cross_section.html#a347c593a12693ee05159b34db0957580',1,'manifold::CrossSection::operator+()'],['../classmanifold_1_1_manifold.html#af95e73e5427d09b9d9e025d5cf367c30',1,'manifold::Manifold::operator+()'],['../structmanifold_1_1_box.html#af972bb4de52bdc0a952d4a6907f53e67',1,'manifold::Box::operator+()'],['../structmanifold_1_1_rect.html#a3b80b2b8aa4ae73c6b4be29b7d4f09fc',1,'manifold::Rect::operator+()']]], + ['operator_2b_3d_6',['operator+=',['../classmanifold_1_1_cross_section.html#a1876fe37a88ce88f560d70e869e0b82a',1,'manifold::CrossSection::operator+=()'],['../classmanifold_1_1_manifold.html#a530ec6ae990090f4b5c52f0d32eb2688',1,'manifold::Manifold::operator+=()'],['../structmanifold_1_1_box.html#a994c4a973b15e5f2f7dbccb7b5dc19d4',1,'manifold::Box::operator+=()'],['../structmanifold_1_1_rect.html#a88e57e987bcbbc947831388b367fa036',1,'manifold::Rect::operator+=()']]], + ['operator_2d_7',['operator-',['../classmanifold_1_1_manifold.html#ad9da8c505e6846e9645008825833e1da',1,'manifold::Manifold::operator-()'],['../classmanifold_1_1_cross_section.html#af6a000221ca368c9f2ed3e1f271cfb7f',1,'manifold::CrossSection::operator-(const CrossSection &) const']]], + ['operator_2d_3d_8',['operator-=',['../classmanifold_1_1_cross_section.html#a3f6a38bbe4bc0fbb90efa8aee5da12c0',1,'manifold::CrossSection::operator-=()'],['../classmanifold_1_1_manifold.html#ae17823c1f0efdfa41324892e52ab1f2b',1,'manifold::Manifold::operator-=()']]], + ['operator_5e_9',['operator^',['../classmanifold_1_1_cross_section.html#a34fcc007d18275e2cc32f4c99bc94cda',1,'manifold::CrossSection::operator^()'],['../classmanifold_1_1_manifold.html#ad1e4e5720f01934c44aebc597be4d104',1,'manifold::Manifold::operator^()']]], + ['operator_5e_3d_10',['operator^=',['../classmanifold_1_1_cross_section.html#aa0e45fcdedab6a1288682bbb9a9959b3',1,'manifold::CrossSection::operator^=()'],['../classmanifold_1_1_manifold.html#a88768bbf9fabf89e72b27a45321b6522',1,'manifold::Manifold::operator^=()']]], + ['options_11',['Options',['../struct_options.html',1,'']]], + ['optype_12',['OpType',['../group___core.html#gaa1aa1c6a8f3bbed5b167bc2d4511b969',1,'manifold']]], + ['org_20manifoldcad_20org_20a_13',['org manifoldcad org a',['..//github/workspace/bindings/wasm/README.md#autotoc_md6',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>'],['..//github/workspace/README.md#autotoc_md18',1,'<a href="https://manifoldcad.org" >ManifoldCAD.org</a>']]], + ['originalid_14',['originalid',['../structmanifold_1_1_manifold_1_1_impl.html#aa09887a4f79bfc78615dbd09d9001fd7',1,'manifold::Manifold::Impl::MeshRelationD::originalID'],['../structmanifold_1_1_tri_ref.html#aa09887a4f79bfc78615dbd09d9001fd7',1,'manifold::TriRef::originalID'],['../classmanifold_1_1_manifold.html#a65b3ff79efc694738a4f56270cc608e6',1,'manifold::Manifold::OriginalID()']]] +]; diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 000000000..2018970cb --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['parcollisionrecorder_0',['ParCollisionRecorder',['../structmanifold_1_1collider__internal_1_1_par_collision_recorder.html',1,'manifold::collider_internal']]], + ['pathimpl_1',['PathImpl',['../structmanifold_1_1_path_impl.html',1,'manifold']]], + ['plane_2',['Plane',['../class_plane.html',1,'']]], + ['polygons_3',['Polygons',['../group___connections.html#ga60a66d8ddacc086bb45d8afc37f646d1',1,'manifold']]], + ['polyvert_4',['PolyVert',['../group___private.html#structmanifold_1_1_poly_vert',1,'manifold']]], + ['pool_5',['Pool',['../class_pool.html',1,'']]], + ['pos_6',['pos',['../group___private.html#a6f4c30bf2e24353492937851cb470208',1,'manifold::PolyVert']]], + ['positive_7',['Positive',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3289297424e01eda5b788c083bbf3147',1,'manifold::CrossSection']]], + ['precision_8',['precision',['../structmanifold_1_1_mesh_g_l.html#acd76b1c12cd41083eeef7b6f09c32141',1,'manifold::MeshGL::precision'],['../group___connections.html#acd76b1c12cd41083eeef7b6f09c32141',1,'manifold::Mesh::precision'],['../classmanifold_1_1_manifold.html#a013e5ce70b14d7d19393bcdffbc73ce2',1,'manifold::Manifold::Precision()']]], + ['private_9',['Private',['../group___private.html',1,'']]], + ['processoverlaps_10',['processOverlaps',['../group___debug.html#a7166fd3caef3744f7241075f21f76af3',1,'manifold::ExecutionParams']]], + ['profiling_11',['Profiling',['..//github/workspace/README.md#autotoc_md29',1,'']]], + ['project_12',['Project',['../classmanifold_1_1_manifold.html#a328657b69e9bbaaee148572ca314677c',1,'manifold::Manifold']]], + ['properties_13',['Properties',['../group___connections.html#structmanifold_1_1_properties',1,'manifold']]], + ['python_14',['Python',['..//github/workspace/README.md#autotoc_md24',1,'']]], + ['python_20bindings_15',['Python Bindings',['../index.html',1,'']]], + ['python_20colab_20example_20a_16',['<a href="https://colab.research.google.com/drive/1VxrFYHPSHZgUbl9TeWzCeovlpXrPQ5J5?usp=sharing" >Python Colab Example</a>',['..//github/workspace/README.md#autotoc_md19',1,'']]] +]; diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 000000000..d083a3803 --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['all_5fof_0',['all_of',['../structbenchmarks_1_1all__of.html',1,'benchmarks']]] +]; diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js new file mode 100644 index 000000000..78c5e3021 --- /dev/null +++ b/docs/html/search/classes_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['barycentric_0',['Barycentric',['../group___private.html#structmanifold_1_1_barycentric',1,'manifold']]], + ['baryindices_1',['BaryIndices',['../structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_bary_indices',1,'manifold::Manifold::Impl']]], + ['boolean3_2',['Boolean3',['../classmanifold_1_1_boolean3.html',1,'manifold']]], + ['box_3',['Box',['../structmanifold_1_1_box.html',1,'manifold']]], + ['buildinternalboxes_4',['BuildInternalBoxes',['../structmanifold_1_1collider__internal_1_1_build_internal_boxes.html',1,'manifold::collider_internal']]] +]; diff --git a/docs/html/search/classes_10.js b/docs/html/search/classes_10.js new file mode 100644 index 000000000..08ad5bbe8 --- /dev/null +++ b/docs/html/search/classes_10.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['seqcollisionrecorder_0',['SeqCollisionRecorder',['../structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html',1,'manifold::collider_internal']]], + ['sharedptrguard_1',['SharedPtrGuard',['../classmanifold_1_1_concurrent_shared_ptr_1_1_shared_ptr_guard.html',1,'manifold::ConcurrentSharedPtr']]], + ['smoothness_2',['Smoothness',['../group___connections.html#structmanifold_1_1_smoothness',1,'manifold']]], + ['sort_5fasc_3',['sort_Asc',['../structbenchmarks_1_1sort___asc.html',1,'benchmarks']]], + ['sort_5fasc_5fsize_4',['sort_Asc_size',['../structbenchmarks_1_1sort___asc__size.html',1,'benchmarks']]], + ['sort_5fasc_5fsize_5fmerge_5',['sort_Asc_size_merge',['../structbenchmarks_1_1sort___asc__size__merge.html',1,'benchmarks']]], + ['sort_5fdes_6',['sort_Des',['../structbenchmarks_1_1sort___des.html',1,'benchmarks']]], + ['sort_5fdes_5fsize_7',['sort_Des_size',['../structbenchmarks_1_1sort___des__size.html',1,'benchmarks']]], + ['sort_5fdes_5fsize_5fmerge_8',['sort_Des_size_merge',['../structbenchmarks_1_1sort___des__size__merge.html',1,'benchmarks']]], + ['sort_5feq_9',['sort_Eq',['../structbenchmarks_1_1sort___eq.html',1,'benchmarks']]], + ['sort_5feq_5fsize_10',['sort_Eq_size',['../structbenchmarks_1_1sort___eq__size.html',1,'benchmarks']]], + ['sort_5feq_5fsize_5fmerge_11',['sort_Eq_size_merge',['../structbenchmarks_1_1sort___eq__size__merge.html',1,'benchmarks']]], + ['sort_5frnd_12',['sort_Rnd',['../structbenchmarks_1_1sort___rnd.html',1,'benchmarks']]], + ['sort_5frnd_5fsize_13',['sort_Rnd_size',['../structbenchmarks_1_1sort___rnd__size.html',1,'benchmarks']]], + ['sort_5frnd_5fsize_5fmerge_14',['sort_Rnd_size_merge',['../structbenchmarks_1_1sort___rnd__size__merge.html',1,'benchmarks']]], + ['sort_5froughly_5fasc_15',['sort_roughly_Asc',['../structbenchmarks_1_1sort__roughly___asc.html',1,'benchmarks']]], + ['sort_5froughly_5fasc_5fsize_16',['sort_roughly_Asc_size',['../structbenchmarks_1_1sort__roughly___asc__size.html',1,'benchmarks']]], + ['sort_5froughly_5fasc_5fsize_5fmerge_17',['sort_roughly_Asc_size_merge',['../structbenchmarks_1_1sort__roughly___asc__size__merge.html',1,'benchmarks']]], + ['sparseindices_18',['SparseIndices',['../classmanifold_1_1_sparse_indices.html',1,'manifold']]], + ['stridedrange_19',['StridedRange',['../structmanifold_1_1_strided_range.html',1,'manifold']]], + ['svdset_20',['SVDSet',['../group___connections.html#structmanifold_1_1_s_v_d_set',1,'manifold']]] +]; diff --git a/docs/html/search/classes_11.js b/docs/html/search/classes_11.js new file mode 100644 index 000000000..0be7b554d --- /dev/null +++ b/docs/html/search/classes_11.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['timer_0',['Timer',['../structmanifold_1_1_timer.html',1,'manifold']]], + ['tmpedge_1',['TmpEdge',['../structmanifold_1_1_tmp_edge.html',1,'manifold']]], + ['topologyerr_2',['topologyErr',['../structmanifold_1_1topology_err.html',1,'manifold']]], + ['transform_5freduce_3',['transform_reduce',['../structbenchmarks_1_1transform__reduce.html',1,'benchmarks']]], + ['transformbox_4',['TransformBox',['../structmanifold_1_1collider__internal_1_1_transform_box.html',1,'manifold::collider_internal']]], + ['transformiterator_5',['TransformIterator',['../structmanifold_1_1_transform_iterator.html',1,'manifold']]], + ['triref_6',['TriRef',['../structmanifold_1_1_tri_ref.html',1,'manifold']]], + ['type_5fcaster_3c_20glm_3a_3amat_3c_20c_2c_20r_2c_20t_2c_20q_20_3e_20_3e_7',['type_caster< glm::mat< C, R, T, Q > >',['../structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html',1,'nb::detail']]], + ['type_5fcaster_3c_20glm_3a_3avec_3c_20n_2c_20t_2c_20q_20_3e_20_3e_8',['type_caster< glm::vec< N, T, Q > >',['../structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html',1,'nb::detail']]], + ['type_5fcaster_3c_20manifold_3a_3avecview_3c_20glm_3a_3avec_3c_20n_2c_20t_2c_20q_20_3e_20_3e_20_3e_9',['type_caster< manifold::VecView< glm::vec< N, T, Q > > >',['../structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html',1,'nb::detail']]], + ['type_5fcaster_3c_20std_3a_3avector_3c_20glm_3a_3avec_3c_20n_2c_20t_2c_20q_20_3e_20_3e_20_3e_10',['type_caster< std::vector< glm::vec< N, T, Q > > >',['../structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html',1,'nb::detail']]] +]; diff --git a/docs/html/search/classes_12.js b/docs/html/search/classes_12.js new file mode 100644 index 000000000..70b326a1a --- /dev/null +++ b/docs/html/search/classes_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unionfind_0',['UnionFind',['../structmanifold_1_1_union_find.html',1,'manifold']]], + ['usererr_1',['userErr',['../structmanifold_1_1user_err.html',1,'manifold']]] +]; diff --git a/docs/html/search/classes_13.js b/docs/html/search/classes_13.js new file mode 100644 index 000000000..bf19d08f6 --- /dev/null +++ b/docs/html/search/classes_13.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['vec_0',['Vec',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20char_20_3e_1',['Vec< char >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20float_20_3e_2',['Vec< float >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20glm_3a_3aivec3_20_3e_3',['Vec< glm::ivec3 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20glm_3a_3avec3_20_3e_4',['Vec< glm::vec3 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20glm_3a_3avec4_20_3e_5',['Vec< glm::vec4 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20int_20_3e_6',['Vec< int >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20manifold_3a_3abox_20_3e_7',['Vec< manifold::Box >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20manifold_3a_3ahalfedge_20_3e_8',['Vec< manifold::Halfedge >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20manifold_3a_3atriref_20_3e_9',['Vec< manifold::TriRef >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_10',['Vec< std::pair< int, int > >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20uint64_20_3e_11',['Vec< Uint64 >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20unsigned_20char_20_3e_12',['Vec< unsigned char >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vec_3c_20v_20_3e_13',['Vec< V >',['../classmanifold_1_1_vec.html',1,'manifold']]], + ['vecview_14',['VecView',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20char_20_3e_15',['VecView< char >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20manifold_3a_3abox_20_3e_16',['VecView< const manifold::Box >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20manifold_3a_3atmpedge_20_3e_17',['VecView< const manifold::TmpEdge >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_18',['VecView< const std::pair< int, int > >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20t_20_3e_19',['VecView< const T >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20const_20uint32_5ft_20_3e_20',['VecView< const uint32_t >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20float_20_3e_21',['VecView< float >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20glm_3a_3aivec3_20_3e_22',['VecView< glm::ivec3 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20glm_3a_3avec3_20_3e_23',['VecView< glm::vec3 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20glm_3a_3avec4_20_3e_24',['VecView< glm::vec4 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20int_20_3e_25',['VecView< int >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20manifold_3a_3abox_20_3e_26',['VecView< manifold::Box >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20manifold_3a_3ahalfedge_20_3e_27',['VecView< manifold::Halfedge >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20manifold_3a_3atriref_20_3e_28',['VecView< manifold::TriRef >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_29',['VecView< std::pair< int, int > >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20uint64_20_3e_30',['VecView< Uint64 >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20unsigned_20char_20_3e_31',['VecView< unsigned char >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vecview_3c_20v_20_3e_32',['VecView< V >',['../classmanifold_1_1_vec_view.html',1,'manifold']]], + ['vertexdatasource_33',['VertexDataSource',['../class_vertex_data_source.html',1,'']]] +]; diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js new file mode 100644 index 000000000..6fb718dee --- /dev/null +++ b/docs/html/search/classes_2.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['collider_0',['Collider',['../classmanifold_1_1_collider.html',1,'manifold']]], + ['concurrentsharedptr_1',['ConcurrentSharedPtr',['../classmanifold_1_1_concurrent_shared_ptr.html',1,'manifold']]], + ['concurrentsharedptr_3c_20impl_20_3e_2',['ConcurrentSharedPtr< Impl >',['../classmanifold_1_1_concurrent_shared_ptr.html',1,'manifold']]], + ['convexhull_3',['ConvexHull',['../class_convex_hull.html',1,'']]], + ['copy_4',['copy',['../structbenchmarks_1_1copy.html',1,'benchmarks']]], + ['copy_5fif_5f1001_5',['copy_if_1001',['../structbenchmarks_1_1copy__if__1001.html',1,'benchmarks']]], + ['copy_5fif_5f28_6',['copy_if_28',['../structbenchmarks_1_1copy__if__28.html',1,'benchmarks']]], + ['copy_5fif_5f55_7',['copy_if_55',['../structbenchmarks_1_1copy__if__55.html',1,'benchmarks']]], + ['copy_5fif_5f82_8',['copy_if_82',['../structbenchmarks_1_1copy__if__82.html',1,'benchmarks']]], + ['count_9',['count',['../structbenchmarks_1_1count.html',1,'benchmarks']]], + ['countcollisions_10',['CountCollisions',['../structmanifold_1_1collider__internal_1_1_count_collisions.html',1,'manifold::collider_internal']]], + ['countingiterator_11',['CountingIterator',['../structmanifold_1_1_counting_iterator.html',1,'manifold']]], + ['createradixtree_12',['CreateRadixTree',['../structmanifold_1_1collider__internal_1_1_create_radix_tree.html',1,'manifold::collider_internal']]], + ['crosssection_13',['CrossSection',['../classmanifold_1_1_cross_section.html',1,'manifold']]], + ['csgleafnode_14',['CsgLeafNode',['../classmanifold_1_1_csg_leaf_node.html',1,'manifold']]], + ['csgnode_15',['CsgNode',['../classmanifold_1_1_csg_node.html',1,'manifold']]], + ['csgopnode_16',['CsgOpNode',['../classmanifold_1_1_csg_op_node.html',1,'manifold']]], + ['cubevoid_17',['CubeVoid',['../struct_cube_void.html',1,'']]] +]; diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js new file mode 100644 index 000000000..f58de3d9b --- /dev/null +++ b/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['diagnosticsdata_0',['DiagnosticsData',['../struct_diagnostics_data.html',1,'']]] +]; diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js new file mode 100644 index 000000000..8f388c038 --- /dev/null +++ b/docs/html/search/classes_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['edge_0',['Edge',['../struct_edge.html',1,'']]], + ['exclusive_5fscan_1',['exclusive_scan',['../structbenchmarks_1_1exclusive__scan.html',1,'benchmarks']]], + ['executionparams_2',['ExecutionParams',['../group___debug.html#structmanifold_1_1_execution_params',1,'manifold']]], + ['exportoptions_3',['ExportOptions',['../group___mesh_i_o.html#structmanifold_1_1_export_options',1,'manifold']]] +]; diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js new file mode 100644 index 000000000..647f013b6 --- /dev/null +++ b/docs/html/search/classes_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['face_0',['face',['../class_half_edge_mesh.html#struct_half_edge_mesh_1_1_face',1,'HalfEdgeMesh::Face'],['../struct_mesh_builder_1_1_face.html',1,'MeshBuilder::Face']]], + ['fill_1',['fill',['../structbenchmarks_1_1fill.html',1,'benchmarks']]], + ['findcollisions_2',['FindCollisions',['../structmanifold_1_1collider__internal_1_1_find_collisions.html',1,'manifold::collider_internal']]], + ['firstfinite_3',['firstFinite',['../structmanifold_1_1_sparse_indices_1_1first_finite.html',1,'manifold::SparseIndices']]], + ['for_5feach_4',['for_each',['../structbenchmarks_1_1for__each.html',1,'benchmarks']]] +]; diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js new file mode 100644 index 000000000..0a6e1de1d --- /dev/null +++ b/docs/html/search/classes_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['geometryerr_0',['geometryErr',['../structmanifold_1_1geometry_err.html',1,'manifold']]], + ['glm_5fname_1',['glm_name',['../structglm__name.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3aivec3_20_3e_2',['glm_name< glm::ivec3 >',['../structglm__name_3_01glm_1_1ivec3_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3amat3x2_20_3e_3',['glm_name< glm::mat3x2 >',['../structglm__name_3_01glm_1_1mat3x2_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3amat4x3_20_3e_4',['glm_name< glm::mat4x3 >',['../structglm__name_3_01glm_1_1mat4x3_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3avec2_20_3e_5',['glm_name< glm::vec2 >',['../structglm__name_3_01glm_1_1vec2_01_4.html',1,'']]], + ['glm_5fname_3c_20glm_3a_3avec3_20_3e_6',['glm_name< glm::vec3 >',['../structglm__name_3_01glm_1_1vec3_01_4.html',1,'']]], + ['gyroidsdf_7',['GyroidSDF',['../struct_gyroid_s_d_f.html',1,'']]] +]; diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js new file mode 100644 index 000000000..8c9d669e0 --- /dev/null +++ b/docs/html/search/classes_7.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['halfedge_0',['halfedge',['../class_half_edge_mesh.html#struct_half_edge_mesh_1_1_half_edge',1,'HalfEdgeMesh::HalfEdge'],['../structmanifold_1_1_halfedge.html',1,'Halfedge'],['../struct_mesh_builder_1_1_half_edge.html',1,'MeshBuilder::HalfEdge']]], + ['halfedgemesh_1',['HalfEdgeMesh',['../class_half_edge_mesh.html',1,'']]], + ['hash_3c_20glm_3a_3aivec4_20_3e_2',['hash< glm::ivec4 >',['../structstd_1_1hash_3_01glm_1_1ivec4_01_4.html',1,'std']]], + ['hash_3c_20std_3a_3apair_3c_20int_2c_20int_20_3e_20_3e_3',['hash< std::pair< int, int > >',['../structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html',1,'std']]], + ['hashtable_4',['HashTable',['../classmanifold_1_1_hash_table.html',1,'manifold']]], + ['hashtabled_5',['HashTableD',['../classmanifold_1_1_hash_table_d.html',1,'manifold']]], + ['hullimpl_6',['HullImpl',['../class_hull_impl.html',1,'']]], + ['hullimplcgal_7',['HullImplCGAL',['../class_hull_impl_c_g_a_l.html',1,'']]], + ['hullimploriginal_8',['HullImplOriginal',['../class_hull_impl_original.html',1,'']]] +]; diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js new file mode 100644 index 000000000..6fe3afad8 --- /dev/null +++ b/docs/html/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['identity_0',['Identity',['../structmanifold_1_1_identity.html',1,'manifold']]], + ['impl_1',['Impl',['../structmanifold_1_1_manifold_1_1_impl.html',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/classes_9.js b/docs/html/search/classes_9.js new file mode 100644 index 000000000..940c7fa56 --- /dev/null +++ b/docs/html/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['layers_0',['Layers',['../struct_layers.html',1,'']]] +]; diff --git a/docs/html/search/classes_a.js b/docs/html/search/classes_a.js new file mode 100644 index 000000000..ebbac78b8 --- /dev/null +++ b/docs/html/search/classes_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['manifold_0',['Manifold',['../classmanifold_1_1_manifold.html',1,'manifold']]], + ['manifoldivec3_1',['ManifoldIVec3',['../struct_manifold_i_vec3.html',1,'']]], + ['manifoldmanifoldpair_2',['ManifoldManifoldPair',['../struct_manifold_manifold_pair.html',1,'']]], + ['manifoldproperties_3',['ManifoldProperties',['../struct_manifold_properties.html',1,'']]], + ['manifoldvec2_4',['ManifoldVec2',['../struct_manifold_vec2.html',1,'']]], + ['manifoldvec3_5',['ManifoldVec3',['../struct_manifold_vec3.html',1,'']]], + ['manifoldvec4_6',['ManifoldVec4',['../struct_manifold_vec4.html',1,'']]], + ['material_7',['Material',['../group___mesh_i_o.html#structmanifold_1_1_material',1,'manifold']]], + ['mesh_8',['Mesh',['../group___connections.html#structmanifold_1_1_mesh',1,'manifold']]], + ['meshbuilder_9',['MeshBuilder',['../class_mesh_builder.html',1,'']]], + ['meshgl_10',['MeshGL',['../structmanifold_1_1_mesh_g_l.html',1,'manifold']]], + ['meshrelationd_11',['MeshRelationD',['../structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_mesh_relation_d',1,'manifold::Manifold::Impl']]], + ['meshsize_12',['MeshSize',['../struct_mesh_size.html',1,'']]] +]; diff --git a/docs/html/search/classes_b.js b/docs/html/search/classes_b.js new file mode 100644 index 000000000..2a27a9612 --- /dev/null +++ b/docs/html/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['negate_0',['Negate',['../structmanifold_1_1_negate.html',1,'manifold']]] +]; diff --git a/docs/html/search/classes_c.js b/docs/html/search/classes_c.js new file mode 100644 index 000000000..869ec5188 --- /dev/null +++ b/docs/html/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['options_0',['Options',['../struct_options.html',1,'']]] +]; diff --git a/docs/html/search/classes_d.js b/docs/html/search/classes_d.js new file mode 100644 index 000000000..53811dd2f --- /dev/null +++ b/docs/html/search/classes_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parcollisionrecorder_0',['ParCollisionRecorder',['../structmanifold_1_1collider__internal_1_1_par_collision_recorder.html',1,'manifold::collider_internal']]], + ['pathimpl_1',['PathImpl',['../structmanifold_1_1_path_impl.html',1,'manifold']]], + ['plane_2',['Plane',['../class_plane.html',1,'']]], + ['polyvert_3',['PolyVert',['../group___private.html#structmanifold_1_1_poly_vert',1,'manifold']]], + ['pool_4',['Pool',['../class_pool.html',1,'']]], + ['properties_5',['Properties',['../group___connections.html#structmanifold_1_1_properties',1,'manifold']]] +]; diff --git a/docs/html/search/classes_e.js b/docs/html/search/classes_e.js new file mode 100644 index 000000000..4a20e5f5b --- /dev/null +++ b/docs/html/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quality_0',['Quality',['../classmanifold_1_1_quality.html',1,'manifold']]], + ['quickhull_1',['QuickHull',['../class_quick_hull.html',1,'']]] +]; diff --git a/docs/html/search/classes_f.js b/docs/html/search/classes_f.js new file mode 100644 index 000000000..091c1e0e4 --- /dev/null +++ b/docs/html/search/classes_f.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ray_0',['Ray',['../struct_ray.html',1,'']]], + ['rect_1',['Rect',['../structmanifold_1_1_rect.html',1,'manifold']]], + ['reduce_2',['reduce',['../structbenchmarks_1_1reduce.html',1,'benchmarks']]], + ['reindexedge_3',['ReindexEdge',['../structmanifold_1_1_reindex_edge.html',1,'manifold']]], + ['relation_4',['Relation',['../structmanifold_1_1_manifold_1_1_impl.html#structmanifold_1_1_manifold_1_1_impl_1_1_relation',1,'manifold::Manifold::Impl']]], + ['result_5',['Result',['../struct_result.html',1,'']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 000000000..337d6cc13 --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/docs/html/search/enums_0.js b/docs/html/search/enums_0.js new file mode 100644 index 000000000..febcf1f7c --- /dev/null +++ b/docs/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fillrule_0',['FillRule',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enums_1.js b/docs/html/search/enums_1.js new file mode 100644 index 000000000..7b4fe3d01 --- /dev/null +++ b/docs/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jointype_0',['JoinType',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395d',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enums_2.js b/docs/html/search/enums_2.js new file mode 100644 index 000000000..f0b04914f --- /dev/null +++ b/docs/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['optype_0',['OpType',['../group___core.html#gaa1aa1c6a8f3bbed5b167bc2d4511b969',1,'manifold']]] +]; diff --git a/docs/html/search/enumvalues_0.js b/docs/html/search/enumvalues_0.js new file mode 100644 index 000000000..a69a26fb4 --- /dev/null +++ b/docs/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['evenodd_0',['EvenOdd',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a8e586e4bd2c45e86222301f2e6e0e390',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enumvalues_1.js b/docs/html/search/enumvalues_1.js new file mode 100644 index 000000000..92ec4fc30 --- /dev/null +++ b/docs/html/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['miter_0',['Miter',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dae4396f81cd926bb129ccf3c147c64514',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enumvalues_2.js b/docs/html/search/enumvalues_2.js new file mode 100644 index 000000000..b654db0b2 --- /dev/null +++ b/docs/html/search/enumvalues_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['negative_0',['Negative',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4affb9356ff2b7da85c75c92fa7ea03b8b',1,'manifold::CrossSection']]], + ['nonzero_1',['NonZero',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3d0365a27a39c0af183445fc4d932a8a',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enumvalues_3.js b/docs/html/search/enumvalues_3.js new file mode 100644 index 000000000..05a616946 --- /dev/null +++ b/docs/html/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['positive_0',['Positive',['../classmanifold_1_1_cross_section.html#a9a534b0377c9ca41983d53b0dae0d5a4a3289297424e01eda5b788c083bbf3147',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enumvalues_4.js b/docs/html/search/enumvalues_4.js new file mode 100644 index 000000000..f5d70a315 --- /dev/null +++ b/docs/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['round_0',['Round',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395dab7f41fc1412ad2ee75e9b2635d3b9d5c',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/enumvalues_5.js b/docs/html/search/enumvalues_5.js new file mode 100644 index 000000000..d39fd05d9 --- /dev/null +++ b/docs/html/search/enumvalues_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['square_0',['Square',['../classmanifold_1_1_cross_section.html#aef400c43b34e3ecc3f7b342aa821395daceb46ca115d05c51aa5a16a8867c3304',1,'manifold::CrossSection']]] +]; diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 000000000..7296cf97e --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['area_0',['area',['../classmanifold_1_1_cross_section.html#ac84b151a969c68d662637e8245548666',1,'manifold::CrossSection::Area()'],['../structmanifold_1_1_rect.html#a10d5618fa11db90402e29c30fbf50096',1,'manifold::Rect::Area()']]], + ['asoriginal_1',['AsOriginal',['../classmanifold_1_1_manifold.html#a9b4bbbc5b70a0d1f6b07c91f1684fb57',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 000000000..613529410 --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['batchboolean_0',['batchboolean',['../classmanifold_1_1_cross_section.html#a8543728360bc7dda5472d5aa8647b36e',1,'manifold::CrossSection::BatchBoolean()'],['../classmanifold_1_1_manifold.html#a1b30c42e224bda7e71a3ed3cf02319c1',1,'manifold::Manifold::BatchBoolean()']]], + ['boolean_1',['boolean',['../classmanifold_1_1_cross_section.html#a05734d6b0b1fb38d56865b9c73c806f2',1,'manifold::CrossSection::Boolean()'],['../classmanifold_1_1_manifold.html#a9aad9d9b9a58ff2b7622de673742d1df',1,'manifold::Manifold::Boolean(const Manifold &second, OpType op) const']]], + ['boundingbox_2',['BoundingBox',['../classmanifold_1_1_manifold.html#a3d711d458596b520edd4cd7948a53e67',1,'manifold::Manifold']]], + ['bounds_3',['Bounds',['../classmanifold_1_1_cross_section.html#ae69af2b193a98c4adc6f613a7463482c',1,'manifold::CrossSection']]], + ['box_4',['box',['../structmanifold_1_1_box.html#adea1928c15ca1eb88b6619bc554911b5',1,'manifold::Box::Box()'],['../structmanifold_1_1_box.html#a4e57b8d753c7850eafadadd5c6712d0f',1,'manifold::Box::Box(const glm::vec3 p1, const glm::vec3 p2)']]] +]; diff --git a/docs/html/search/functions_10.js b/docs/html/search/functions_10.js new file mode 100644 index 000000000..f9434c47e --- /dev/null +++ b/docs/html/search/functions_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['tangentfromnormal_0',['TangentFromNormal',['../structmanifold_1_1_manifold_1_1_impl.html#ab1f11c2b71e88b8eab076fb3660ff3b8',1,'manifold::Manifold::Impl']]], + ['tetpuzzle_1',['TetPuzzle',['../group___samples.html#ga49162c3a42d672758d14855ad23258b9',1,'manifold']]], + ['tetrahedron_2',['Tetrahedron',['../classmanifold_1_1_manifold.html#afbd42733f05fb87dec1b3dae9ff9f582',1,'manifold::Manifold']]], + ['topolygons_3',['ToPolygons',['../classmanifold_1_1_cross_section.html#a209a83b1c39a84e094da9e854a7b8bc2',1,'manifold::CrossSection']]], + ['torusknot_4',['TorusKnot',['../group___samples.html#ga1937d6fee956f401ad9a3c9c2dc6eae2',1,'manifold']]], + ['transform_5',['transform',['../classmanifold_1_1_cross_section.html#af6b6f90c21018d47d860713c60a8399c',1,'manifold::CrossSection::Transform()'],['../classmanifold_1_1_manifold.html#a707b0078fbb9bbad183812d7290630ce',1,'manifold::Manifold::Transform()'],['../structmanifold_1_1_box.html#a821dd8a461d5c6938968cd76125b2102',1,'manifold::Box::Transform()'],['../structmanifold_1_1_rect.html#a3c4003d2fc5299530dcce7deb9df54a2',1,'manifold::Rect::Transform()']]], + ['translate_6',['translate',['../classmanifold_1_1_cross_section.html#a106b1c0c300c4820cd9f5ec2f683a0db',1,'manifold::CrossSection::Translate()'],['../classmanifold_1_1_manifold.html#ac1ebb85b775a3293bca68c2339762a08',1,'manifold::Manifold::Translate()']]], + ['triangulate_7',['Triangulate',['../group___connections.html#ga1d01ff53289da0842e539ddf8cda5c96',1,'manifold']]], + ['triangulateidx_8',['TriangulateIdx',['../group___private.html#ga1e0bedc58e58ed72b02b49addf999b85',1,'manifold']]], + ['trimbyplane_9',['TrimByPlane',['../classmanifold_1_1_manifold.html#a1b711341093c115f6688cbcaae5c8741',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/functions_11.js b/docs/html/search/functions_11.js new file mode 100644 index 000000000..41f102856 --- /dev/null +++ b/docs/html/search/functions_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['union_0',['union',['../structmanifold_1_1_box.html#ac35d2842beedafce43f5ae4dea7aef3b',1,'manifold::Box::Union(const glm::vec3 p)'],['../structmanifold_1_1_box.html#a8d8616c9f61502d6fe2331ba7a3dc7fd',1,'manifold::Box::Union(const Box &box) const'],['../structmanifold_1_1_rect.html#af8cf47248b361c1f8eec6b22dedb4233',1,'manifold::Rect::Union(const glm::vec2 p)'],['../structmanifold_1_1_rect.html#ac00b0b5a156d4a40a65637b7d419df70',1,'manifold::Rect::Union(const Rect &rect) const']]], + ['update_1',['Update',['../structmanifold_1_1_manifold_1_1_impl.html#aec0783b5a136e042adcc47bae4fe5291',1,'manifold::Manifold::Impl']]] +]; diff --git a/docs/html/search/functions_12.js b/docs/html/search/functions_12.js new file mode 100644 index 000000000..6b2a3f9a9 --- /dev/null +++ b/docs/html/search/functions_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vertexcollisionsz_0',['VertexCollisionsZ',['../structmanifold_1_1_manifold_1_1_impl.html#afdc4c1c73cab15b3a13853d04fee567a',1,'manifold::Manifold::Impl']]] +]; diff --git a/docs/html/search/functions_13.js b/docs/html/search/functions_13.js new file mode 100644 index 000000000..9b1fa5656 --- /dev/null +++ b/docs/html/search/functions_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warp_0',['warp',['../classmanifold_1_1_cross_section.html#a6c51d81d2e730c4a3325b4ba9b3ead39',1,'manifold::CrossSection::Warp()'],['../classmanifold_1_1_manifold.html#aecb7b2e2a6a18a570154dec76658496c',1,'manifold::Manifold::Warp()']]], + ['warpbatch_1',['warpbatch',['../classmanifold_1_1_cross_section.html#ae004e45467f97624c89465248f4ffda1',1,'manifold::CrossSection::WarpBatch()'],['../classmanifold_1_1_manifold.html#a76546a15aa48f9a9064e7bfc7792c302',1,'manifold::Manifold::WarpBatch()']]] +]; diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 000000000..61f67ba69 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['calculatebbox_0',['CalculateBBox',['../structmanifold_1_1_manifold_1_1_impl.html#a4bad2940552ae5f952d4b1f710627a25',1,'manifold::Manifold::Impl']]], + ['calculatecurvature_1',['CalculateCurvature',['../classmanifold_1_1_manifold.html#a19abb297f7b7b43f5c84562bcc7df705',1,'manifold::Manifold']]], + ['calculatenormals_2',['calculatenormals',['../classmanifold_1_1_manifold.html#a69c1ea423ea019bb932e3f55d3f6ff50',1,'manifold::Manifold::CalculateNormals()'],['../structmanifold_1_1_manifold_1_1_impl.html#adef45f00696640f682ede12311bdace7',1,'manifold::Manifold::Impl::CalculateNormals()']]], + ['ccw_3',['CCW',['../group___connections.html#ga20f946797231119dd2b7260c216cda31',1,'manifold']]], + ['center_4',['center',['../structmanifold_1_1_box.html#aa2116eed911ac1b0277788b05b0f663f',1,'manifold::Box::Center()'],['../structmanifold_1_1_rect.html#a04bdce0e30cdda6f80ccb5255a12f7df',1,'manifold::Rect::Center()']]], + ['circle_5',['Circle',['../classmanifold_1_1_cross_section.html#adcb3b6bc6e70c831ac8c1890277e8548',1,'manifold::CrossSection']]], + ['compactprops_6',['CompactProps',['../structmanifold_1_1_manifold_1_1_impl.html#af327697359fb97021fbdcdd0d53b471a',1,'manifold::Manifold::Impl']]], + ['compose_7',['compose',['../classmanifold_1_1_cross_section.html#a6eb6f97b4b0c4ac7bfeb79dc1234e8f3',1,'manifold::CrossSection::Compose()'],['../classmanifold_1_1_manifold.html#a96a1b20e25443713304db55196573e3d',1,'manifold::Manifold::Compose()'],['../classmanifold_1_1_csg_leaf_node.html#ac78f0bab130bd5e2cddeb9fed4c149ed',1,'manifold::CsgLeafNode::Compose()']]], + ['contains_8',['contains',['../structmanifold_1_1_rect.html#a348dcfe50700c6ff69c6fa7641f7537d',1,'manifold::Rect::Contains(const glm::vec2 &p) const'],['../structmanifold_1_1_rect.html#aca39547495139ea25f2edd87569e10b6',1,'manifold::Rect::Contains(const Rect &rect) const'],['../structmanifold_1_1_box.html#afddd3d24795d0c760ae8a458ead93b0d',1,'manifold::Box::Contains(const Box &box) const'],['../structmanifold_1_1_box.html#a1aa1ea08f35a830ecc80b2bc83c9bcce',1,'manifold::Box::Contains(const glm::vec3 &p) const']]], + ['cosd_9',['cosd',['../group___connections.html#ga502f5a841d8d1fcba289e167a1177bda',1,'manifold']]], + ['createhalfedges_10',['CreateHalfedges',['../structmanifold_1_1_manifold_1_1_impl.html#aff973f757a74082c8fc75b0f8054557d',1,'manifold::Manifold::Impl']]], + ['createtangents_11',['createtangents',['../structmanifold_1_1_manifold_1_1_impl.html#acc962337837219c991a414bf4033ef61',1,'manifold::Manifold::Impl::CreateTangents(int normalIdx)'],['../structmanifold_1_1_manifold_1_1_impl.html#ace17948374ae1178c45e661c1b95cc8b',1,'manifold::Manifold::Impl::CreateTangents(std::vector< Smoothness >)']]], + ['crosssection_12',['crosssection',['../classmanifold_1_1_cross_section.html#acbed403d82ee8d55f3be2c9a5f963ec0',1,'manifold::CrossSection::CrossSection()'],['../classmanifold_1_1_cross_section.html#ada3a36554c48080ae963a9628de79436',1,'manifold::CrossSection::CrossSection(const CrossSection &other)'],['../classmanifold_1_1_cross_section.html#aca5659d6e02ee4583791b54285d682a2',1,'manifold::CrossSection::CrossSection(const SimplePolygon &contour, FillRule fillrule=FillRule::Positive)'],['../classmanifold_1_1_cross_section.html#a885334a617ae0eea9402f74a20f4408e',1,'manifold::CrossSection::CrossSection(const Polygons &contours, FillRule fillrule=FillRule::Positive)'],['../classmanifold_1_1_cross_section.html#ad2f60f6e1e3d45e773a595a1be246cf2',1,'manifold::CrossSection::CrossSection(const Rect &rect)']]], + ['cube_13',['Cube',['../classmanifold_1_1_manifold.html#a42a229536f08603883f7bf6329de589b',1,'manifold::Manifold']]], + ['cylinder_14',['Cylinder',['../classmanifold_1_1_manifold.html#ad13bd5caab7cb2ad363be98066b93a68',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js new file mode 100644 index 000000000..64eeeb902 --- /dev/null +++ b/docs/html/search/functions_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['decompose_0',['decompose',['../classmanifold_1_1_cross_section.html#a48f77ce6390caee13a94f681893fb65c',1,'manifold::CrossSection::Decompose()'],['../classmanifold_1_1_manifold.html#a7f20b130779680156ce0d28d91e5d106',1,'manifold::Manifold::Decompose()']]], + ['distancetriangletrianglesquared_1',['DistanceTriangleTriangleSquared',['../namespacemanifold.html#af8fb0f066f81a72edd0d91c2e1957329',1,'manifold']]], + ['distributetangents_2',['DistributeTangents',['../structmanifold_1_1_manifold_1_1_impl.html#ae520f2222155301f5bb6551702222014',1,'manifold::Manifold::Impl']]], + ['doesoverlap_3',['doesoverlap',['../structmanifold_1_1_box.html#a46774b2491c515fa7f6d48c561395669',1,'manifold::Box::DoesOverlap(const Box &box) const'],['../structmanifold_1_1_box.html#a0eae49109f2471de7546d95c273f3461',1,'manifold::Box::DoesOverlap(glm::vec3 p) const'],['../structmanifold_1_1_rect.html#ae9b86c34e407f27313804c9a7d30c8c2',1,'manifold::Rect::DoesOverlap()']]], + ['dump_4',['Dump',['../group___debug.html#ga5a4ed9a6d64edb22079ff7a5caddcb5a',1,'manifold']]] +]; diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js new file mode 100644 index 000000000..b492e8e68 --- /dev/null +++ b/docs/html/search/functions_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['edgecollisions_0',['EdgeCollisions',['../structmanifold_1_1_manifold_1_1_impl.html#afed30f82c409a32c13e68079a5b366a5',1,'manifold::Manifold::Impl']]], + ['edgeedgedist_1',['EdgeEdgeDist',['../namespacemanifold.html#ad1d9e7b62d9b78d53b339584180bd79c',1,'manifold']]], + ['exportmesh_2',['exportmesh',['../group___mesh_i_o.html#gac28a5cd14ebf185edff7a55c4efb5edb',1,'manifold::ExportMesh(const std::string &filename, const Mesh &mesh, const ExportOptions &options)'],['../group___mesh_i_o.html#ga83ff5d8f4ee07ce7902b1d9ccea3640c',1,'manifold::ExportMesh(const std::string &filename, const MeshGL &mesh, const ExportOptions &options)']]], + ['extrude_3',['Extrude',['../classmanifold_1_1_manifold.html#a819aeb376cce89ac087ab04299c22551',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 000000000..8a7609124 --- /dev/null +++ b/docs/html/search/functions_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['face2polygons_0',['Face2Polygons',['../structmanifold_1_1_manifold_1_1_impl.html#ae2e222860f6cfa46e1c0e270d26f5976',1,'manifold::Manifold::Impl']]], + ['face2tri_1',['Face2Tri',['../structmanifold_1_1_manifold_1_1_impl.html#af037f51003b109c22f6a67cea6238021',1,'manifold::Manifold::Impl']]], + ['fillretainedverts_2',['FillRetainedVerts',['../structmanifold_1_1_manifold_1_1_impl.html#a0f3beb18c180190ad660336992f0ff64',1,'manifold::Manifold::Impl']]], + ['finish_3',['Finish',['../structmanifold_1_1_manifold_1_1_impl.html#af9d1bc46635e487c85720b943dd8ba28',1,'manifold::Manifold::Impl']]] +]; diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js new file mode 100644 index 000000000..a8dd237ae --- /dev/null +++ b/docs/html/search/functions_6.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['gatherfaces_0',['GatherFaces',['../structmanifold_1_1_manifold_1_1_impl.html#abd9a97b16b825e7ee3fd989aaf776757',1,'manifold::Manifold::Impl']]], + ['genus_1',['Genus',['../classmanifold_1_1_manifold.html#a4b1e9ca27fc618965d0bbbc9d29fb5c1',1,'manifold::Manifold']]], + ['getaxisalignedprojection_2',['GetAxisAlignedProjection',['../group___private.html#ga95945ec21500a4c02b449357b3ef57ec',1,'manifold']]], + ['getcircularsegments_3',['GetCircularSegments',['../classmanifold_1_1_quality.html#a7cd38ae559bc27df5e18b988176f82ae',1,'manifold::Quality']]], + ['getfaceboxmorton_4',['GetFaceBoxMorton',['../structmanifold_1_1_manifold_1_1_impl.html#ae950ed2beaef893ec411aa3921aa25a8',1,'manifold::Manifold::Impl']]], + ['gethalfedges_5',['GetHalfedges',['../structmanifold_1_1_manifold_1_1_impl.html#a76d1ba381f31f14ad9e59ff880dbd2c1',1,'manifold::Manifold::Impl']]], + ['getindices_6',['GetIndices',['../structmanifold_1_1_manifold_1_1_impl.html#a5663e9c8c9f549c90a3cfd36ad2c787a',1,'manifold::Manifold::Impl']]], + ['getmesh_7',['GetMesh',['../classmanifold_1_1_manifold.html#a74a906cf6aacd6c0aef61b5079a8c750',1,'manifold::Manifold']]], + ['getmeshgl_8',['GetMeshGL',['../classmanifold_1_1_manifold.html#a5516d4d27772731e50540edd45553a4d',1,'manifold::Manifold']]], + ['getneighbor_9',['GetNeighbor',['../structmanifold_1_1_manifold_1_1_impl.html#a8a3b5765ff1df3e2090e792f8a2eb444',1,'manifold::Manifold::Impl']]], + ['getnormal_10',['GetNormal',['../structmanifold_1_1_manifold_1_1_impl.html#ad72a9d659785fbc90d0b31e9594768b9',1,'manifold::Manifold::Impl']]], + ['getproperties_11',['GetProperties',['../classmanifold_1_1_manifold.html#ace809d84f44f59232653183bf86ece07',1,'manifold::Manifold']]], + ['gyroidmodule_12',['GyroidModule',['../group___samples.html#ga0a03a270aa7eff0866996c7abca5b0f0',1,'manifold']]] +]; diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 000000000..93dbbedf8 --- /dev/null +++ b/docs/html/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hull_0',['hull',['../classmanifold_1_1_cross_section.html#aa5ea1caf54ddac72d939a00d13763ace',1,'manifold::CrossSection::Hull() const'],['../classmanifold_1_1_cross_section.html#a49d6309921d09ab4e9874f1987f3b487',1,'manifold::CrossSection::Hull(const std::vector< CrossSection > &crossSections)'],['../classmanifold_1_1_cross_section.html#aec35843b9a8e1470605ae615a66643e2',1,'manifold::CrossSection::Hull(const SimplePolygon poly)'],['../classmanifold_1_1_cross_section.html#a800d15ed35b3f430a11f1fdc4dfe79a6',1,'manifold::CrossSection::Hull(const Polygons polys)'],['../classmanifold_1_1_manifold.html#a9dc9e00112e2b063cfa6fe8482b1afe8',1,'manifold::Manifold::Hull() const'],['../classmanifold_1_1_manifold.html#a0b45afc24015963e82745f1f83f3f310',1,'manifold::Manifold::Hull(const std::vector< Manifold > &manifolds)'],['../classmanifold_1_1_manifold.html#a10a70ad7f357e93a96b86dd29fe12556',1,'manifold::Manifold::Hull(const std::vector< glm::vec3 > &pts)']]] +]; diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js new file mode 100644 index 000000000..7c8ae0000 --- /dev/null +++ b/docs/html/search/functions_8.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['impl_0',['impl',['../structmanifold_1_1_manifold_1_1_impl.html#ab7abcb084ad024cb903caa4e4715f713',1,'manifold::Manifold::Impl::Impl(Shape, const glm::mat4x3=glm::mat4x3(1))'],['../structmanifold_1_1_manifold_1_1_impl.html#a0993c9acd8bdbd25672b9fae02c02c0f',1,'manifold::Manifold::Impl::Impl(const Mesh &, const MeshRelationD &relation, const std::vector< float > &propertyTolerance={}, bool hasFaceIDs=false)']]], + ['importmesh_1',['ImportMesh',['../group___mesh_i_o.html#ga6e6f86230549750f1d346db483fc30f0',1,'manifold']]], + ['incrementmeshids_2',['IncrementMeshIDs',['../structmanifold_1_1_manifold_1_1_impl.html#a11d47359eb52523a2bc86f6d4ab22633',1,'manifold::Manifold::Impl']]], + ['is2manifold_3',['Is2Manifold',['../structmanifold_1_1_manifold_1_1_impl.html#a7b0298da43b37952e432a1a0c4b02e00',1,'manifold::Manifold::Impl']]], + ['isempty_4',['isempty',['../classmanifold_1_1_cross_section.html#a8e12342fc420701fbffd97025421575a',1,'manifold::CrossSection::IsEmpty()'],['../classmanifold_1_1_manifold.html#a8e12342fc420701fbffd97025421575a',1,'manifold::Manifold::IsEmpty()'],['../structmanifold_1_1_rect.html#a8e12342fc420701fbffd97025421575a',1,'manifold::Rect::IsEmpty()']]], + ['isfinite_5',['isfinite',['../structmanifold_1_1_manifold_1_1_impl.html#a33b7dcc502aae627fbc56bcfecf33af1',1,'manifold::Manifold::Impl::IsFinite()'],['../structmanifold_1_1_box.html#a33b7dcc502aae627fbc56bcfecf33af1',1,'manifold::Box::IsFinite()'],['../structmanifold_1_1_rect.html#a33b7dcc502aae627fbc56bcfecf33af1',1,'manifold::Rect::IsFinite()']]], + ['isindexinbounds_6',['IsIndexInBounds',['../structmanifold_1_1_manifold_1_1_impl.html#a0ee79d083b1fb6b58801ebf83d47880d',1,'manifold::Manifold::Impl']]], + ['isinsidequad_7',['IsInsideQuad',['../structmanifold_1_1_manifold_1_1_impl.html#aa244e3ec23cdce59aa792a297f0c8cde',1,'manifold::Manifold::Impl']]], + ['ismanifold_8',['IsManifold',['../structmanifold_1_1_manifold_1_1_impl.html#a28f34ca6c256f1f7fa44e862540ec421',1,'manifold::Manifold::Impl']]], + ['ismarkedinsidequad_9',['IsMarkedInsideQuad',['../structmanifold_1_1_manifold_1_1_impl.html#a879e2e73b1f97ca728d306dfb3c520d5',1,'manifold::Manifold::Impl']]] +]; diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js new file mode 100644 index 000000000..26495d0ff --- /dev/null +++ b/docs/html/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['levelset_0',['LevelSet',['../group___core.html#ga0bb6eea1a6990a9cb6009d138887c7ff',1,'manifold::MeshGL']]], + ['linearizeflattangents_1',['LinearizeFlatTangents',['../structmanifold_1_1_manifold_1_1_impl.html#a744f7dc967657edf6fdba43aaa81ad3e',1,'manifold::Manifold::Impl']]] +]; diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js new file mode 100644 index 000000000..4d0ac5202 --- /dev/null +++ b/docs/html/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['manifold_0',['manifold',['../classmanifold_1_1_manifold.html#ad5f60691d05e3402630122740cdf3a0b',1,'manifold::Manifold::Manifold()'],['../classmanifold_1_1_manifold.html#a4bc17f3828311b81bf61c34805501599',1,'manifold::Manifold::Manifold(const MeshGL &, const std::vector< float > &propertyTolerance={})'],['../classmanifold_1_1_manifold.html#a3f761d66cf1aa619203bb7622a5f93ea',1,'manifold::Manifold::Manifold(const Mesh &)']]], + ['manifoldparams_1',['ManifoldParams',['../group___debug.html#ga4a00dd8e8dff2c4f8a9105d1a5558275',1,'manifold']]], + ['matchestrinormals_2',['matchestrinormals',['../classmanifold_1_1_manifold.html#a611a5fd95dc5d49cd88182b8ead722b7',1,'manifold::Manifold::MatchesTriNormals()'],['../structmanifold_1_1_manifold_1_1_impl.html#a611a5fd95dc5d49cd88182b8ead722b7',1,'manifold::Manifold::Impl::MatchesTriNormals()']]], + ['mengersponge_3',['MengerSponge',['../group___samples.html#ga31bc13b03579ca41da7ae9b5ba171fae',1,'manifold']]], + ['merge_4',['Merge',['../structmanifold_1_1_mesh_g_l.html#a2078d075bef279041b67769e4197c254',1,'manifold::MeshGL']]], + ['meshgl_5',['MeshGL',['../structmanifold_1_1_mesh_g_l.html#a258a2922fc12421c9a5ebde99606d0ed',1,'manifold::MeshGL']]], + ['mingap_6',['MinGap',['../classmanifold_1_1_manifold.html#a4a193d3f0a8c3af87961a9161cb17c68',1,'manifold::Manifold']]], + ['mirror_7',['mirror',['../classmanifold_1_1_cross_section.html#adf67b7a277a85b21115f7063361da2ff',1,'manifold::CrossSection::Mirror()'],['../classmanifold_1_1_manifold.html#a90bbf2842d0a2dc394d32f1a0a32c24a',1,'manifold::Manifold::Mirror()']]] +]; diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js new file mode 100644 index 000000000..6c66a9630 --- /dev/null +++ b/docs/html/search/functions_b.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['numcontour_0',['NumContour',['../classmanifold_1_1_cross_section.html#af73463c82eede09392aff17a7154a00c',1,'manifold::CrossSection']]], + ['numdegeneratetris_1',['numdegeneratetris',['../classmanifold_1_1_manifold.html#afe3dd0baef775b394ee1a1ee0e353e66',1,'manifold::Manifold::NumDegenerateTris()'],['../structmanifold_1_1_manifold_1_1_impl.html#afe3dd0baef775b394ee1a1ee0e353e66',1,'manifold::Manifold::Impl::NumDegenerateTris()']]], + ['numedge_2',['NumEdge',['../classmanifold_1_1_manifold.html#a104cf8e5b32ca6b5789e8694835f332a',1,'manifold::Manifold']]], + ['numoverlaps_3',['NumOverlaps',['../classmanifold_1_1_manifold.html#a0dd36b29fdc9003280f6b1b96907b704',1,'manifold::Manifold']]], + ['numprop_4',['NumProp',['../classmanifold_1_1_manifold.html#a4895dc2eac1d414f84cb8ecf3ff28348',1,'manifold::Manifold']]], + ['numpropvert_5',['NumPropVert',['../classmanifold_1_1_manifold.html#aad2ca3e816f01c7390a774c6ffa9854d',1,'manifold::Manifold']]], + ['numtri_6',['numtri',['../structmanifold_1_1_mesh_g_l.html#a3361a5e76bdb57f495d6ed826b3294b6',1,'manifold::MeshGL::NumTri()'],['../classmanifold_1_1_manifold.html#a4a625f14e59f176052a369213cd89ed6',1,'manifold::Manifold::NumTri()']]], + ['numvert_7',['numvert',['../classmanifold_1_1_cross_section.html#a85b690c706c5e2c2c29e0ced0c2728ca',1,'manifold::CrossSection::NumVert()'],['../structmanifold_1_1_mesh_g_l.html#a21b84c701fbe74b93047405e36073658',1,'manifold::MeshGL::NumVert()'],['../classmanifold_1_1_manifold.html#a85b690c706c5e2c2c29e0ced0c2728ca',1,'manifold::Manifold::NumVert()']]] +]; diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js new file mode 100644 index 000000000..c4eb1c1e9 --- /dev/null +++ b/docs/html/search/functions_c.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['offset_0',['Offset',['../classmanifold_1_1_cross_section.html#a9040df87b5b8b9b7705d6c6e62188d8a',1,'manifold::CrossSection']]], + ['operator_22_22_5fuz_1',['operator""_uz',['../namespacemanifold.html#a94b9f74f9f0e28c9e31534d6fc624d14',1,'manifold']]], + ['operator_2a_2',['operator*',['../structmanifold_1_1_box.html#a60e8048a284bf5f5de8bc93fe2e3b617',1,'manifold::Box::operator*()'],['../structmanifold_1_1_rect.html#a2ef09e7a095674473637a34b26b4b389',1,'manifold::Rect::operator*(const glm::vec2 scale) const']]], + ['operator_2a_3d_3',['operator*=',['../structmanifold_1_1_rect.html#aec959d2e100436dce6e226adb93ce9aa',1,'manifold::Rect::operator*=()'],['../structmanifold_1_1_box.html#af62267ab92ad369671e2cb34a296d4fc',1,'manifold::Box::operator*=()']]], + ['operator_2b_4',['operator+',['../classmanifold_1_1_manifold.html#af95e73e5427d09b9d9e025d5cf367c30',1,'manifold::Manifold::operator+()'],['../structmanifold_1_1_rect.html#a3b80b2b8aa4ae73c6b4be29b7d4f09fc',1,'manifold::Rect::operator+()'],['../structmanifold_1_1_box.html#af972bb4de52bdc0a952d4a6907f53e67',1,'manifold::Box::operator+()'],['../classmanifold_1_1_cross_section.html#a347c593a12693ee05159b34db0957580',1,'manifold::CrossSection::operator+(const CrossSection &) const']]], + ['operator_2b_3d_5',['operator+=',['../classmanifold_1_1_cross_section.html#a1876fe37a88ce88f560d70e869e0b82a',1,'manifold::CrossSection::operator+=()'],['../classmanifold_1_1_manifold.html#a530ec6ae990090f4b5c52f0d32eb2688',1,'manifold::Manifold::operator+=()'],['../structmanifold_1_1_box.html#a994c4a973b15e5f2f7dbccb7b5dc19d4',1,'manifold::Box::operator+=()'],['../structmanifold_1_1_rect.html#a88e57e987bcbbc947831388b367fa036',1,'manifold::Rect::operator+=()']]], + ['operator_2d_6',['operator-',['../classmanifold_1_1_cross_section.html#af6a000221ca368c9f2ed3e1f271cfb7f',1,'manifold::CrossSection::operator-()'],['../classmanifold_1_1_manifold.html#ad9da8c505e6846e9645008825833e1da',1,'manifold::Manifold::operator-()']]], + ['operator_2d_3d_7',['operator-=',['../classmanifold_1_1_cross_section.html#a3f6a38bbe4bc0fbb90efa8aee5da12c0',1,'manifold::CrossSection::operator-=()'],['../classmanifold_1_1_manifold.html#ae17823c1f0efdfa41324892e52ab1f2b',1,'manifold::Manifold::operator-=()']]], + ['operator_5e_8',['operator^',['../classmanifold_1_1_cross_section.html#a34fcc007d18275e2cc32f4c99bc94cda',1,'manifold::CrossSection::operator^()'],['../classmanifold_1_1_manifold.html#ad1e4e5720f01934c44aebc597be4d104',1,'manifold::Manifold::operator^()']]], + ['operator_5e_3d_9',['operator^=',['../classmanifold_1_1_cross_section.html#aa0e45fcdedab6a1288682bbb9a9959b3',1,'manifold::CrossSection::operator^=()'],['../classmanifold_1_1_manifold.html#a88768bbf9fabf89e72b27a45321b6522',1,'manifold::Manifold::operator^=(const Manifold &)']]], + ['originalid_10',['OriginalID',['../classmanifold_1_1_manifold.html#a65b3ff79efc694738a4f56270cc608e6',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js new file mode 100644 index 000000000..b6f7db9a1 --- /dev/null +++ b/docs/html/search/functions_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['precision_0',['Precision',['../classmanifold_1_1_manifold.html#a013e5ce70b14d7d19393bcdffbc73ce2',1,'manifold::Manifold']]], + ['project_1',['Project',['../classmanifold_1_1_manifold.html#a328657b69e9bbaaee148572ca314677c',1,'manifold::Manifold']]] +]; diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js new file mode 100644 index 000000000..6809b16e7 --- /dev/null +++ b/docs/html/search/functions_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['rect_0',['rect',['../structmanifold_1_1_rect.html#ae436fd0322c99157c5443a3385961e22',1,'manifold::Rect::Rect()'],['../structmanifold_1_1_rect.html#a00ed04e729457429ca773061236a3bee',1,'manifold::Rect::Rect(const glm::vec2 a, const glm::vec2 b)']]], + ['refine_1',['Refine',['../classmanifold_1_1_manifold.html#a5d9227a2d10d8ad7b005555213ecd1ac',1,'manifold::Manifold']]], + ['refinetolength_2',['RefineToLength',['../classmanifold_1_1_manifold.html#a4fa475bc00e8b7a8fe28eea6b2d0e69e',1,'manifold::Manifold']]], + ['reindexverts_3',['ReindexVerts',['../structmanifold_1_1_manifold_1_1_impl.html#a9c45d5f57ab940c4a2682d6f11fdab40',1,'manifold::Manifold::Impl']]], + ['reserveids_4',['ReserveIDs',['../classmanifold_1_1_manifold.html#a1d7e7e674ce7bd9954dc0d54ec6ebc8c',1,'manifold::Manifold']]], + ['revolve_5',['Revolve',['../classmanifold_1_1_manifold.html#af50a5f7face1480aa164b24fe1aef066',1,'manifold::Manifold']]], + ['rotate_6',['rotate',['../classmanifold_1_1_cross_section.html#a95da829a99ea68c24170525e849e7dc4',1,'manifold::CrossSection::Rotate()'],['../classmanifold_1_1_manifold.html#a54569c8da01e3385a426011a40a60629',1,'manifold::Manifold::Rotate()']]], + ['rotateup_7',['RotateUp',['../group___connections.html#ga8997efa1e8a2c5fcc69314c863a8b6da',1,'manifold']]], + ['roundedframe_8',['RoundedFrame',['../group___samples.html#ga8d224b44ea69ea070ebad60e6c1abbb9',1,'manifold']]] +]; diff --git a/docs/html/search/functions_f.js b/docs/html/search/functions_f.js new file mode 100644 index 000000000..b5a59a127 --- /dev/null +++ b/docs/html/search/functions_f.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['scale_0',['scale',['../classmanifold_1_1_manifold.html#ae06789ff9cbe03e56260538276dd8183',1,'manifold::Manifold::Scale()'],['../structmanifold_1_1_box.html#ac60a4c17cace9263b70bf5e5c6f43b58',1,'manifold::Box::Scale()'],['../structmanifold_1_1_rect.html#ac60a4c17cace9263b70bf5e5c6f43b58',1,'manifold::Rect::Scale()'],['../classmanifold_1_1_cross_section.html#af181324d8998fd89fa7a3e8bc7ef905c',1,'manifold::CrossSection::Scale()']]], + ['scallop_1',['Scallop',['../group___samples.html#ga45f5b5c2a374a8c67d9208a2bf9acc36',1,'manifold']]], + ['setcircularsegments_2',['SetCircularSegments',['../classmanifold_1_1_quality.html#a6b80d08df8a58d699ce644e1248fe0e2',1,'manifold::Quality']]], + ['setmincircularangle_3',['SetMinCircularAngle',['../classmanifold_1_1_quality.html#a17d90e845a2c75a0ef859e3ec5363a9e',1,'manifold::Quality']]], + ['setmincircularedgelength_4',['SetMinCircularEdgeLength',['../classmanifold_1_1_quality.html#a6a3a5a1105d40f044f777f0e3c14506a',1,'manifold::Quality']]], + ['setnormals_5',['SetNormals',['../structmanifold_1_1_manifold_1_1_impl.html#a47e442af7d6655edf6dfef50cb958210',1,'manifold::Manifold::Impl']]], + ['setprecision_6',['SetPrecision',['../structmanifold_1_1_manifold_1_1_impl.html#a32981853ceaf771ca541df5b5c6e085b',1,'manifold::Manifold::Impl']]], + ['setproperties_7',['SetProperties',['../classmanifold_1_1_manifold.html#a1aaf5a6d1a3d8c22f1a2c57a653cc389',1,'manifold::Manifold']]], + ['sharpentangent_8',['SharpenTangent',['../structmanifold_1_1_manifold_1_1_impl.html#a296166f49f99871cf84bb604f6f6ca7b',1,'manifold::Manifold::Impl']]], + ['simplify_9',['Simplify',['../classmanifold_1_1_cross_section.html#aa46f202c1b92251f77fd497dc8fd9daf',1,'manifold::CrossSection']]], + ['simplifytopology_10',['SimplifyTopology',['../structmanifold_1_1_manifold_1_1_impl.html#a5814bb78c6aee8506a332d6cacf76af7',1,'manifold::Manifold::Impl']]], + ['sind_11',['sind',['../group___connections.html#gaf191247f966a40ecf3ee0fe9a717c0f3',1,'manifold']]], + ['size_12',['size',['../structmanifold_1_1_box.html#adedb961e2415f91bef56c5ca13e1e651',1,'manifold::Box::Size()'],['../structmanifold_1_1_rect.html#a232479a21f63dd4e6868cdedec53fa71',1,'manifold::Rect::Size()']]], + ['slice_13',['Slice',['../classmanifold_1_1_manifold.html#a0a49d91545cef4bfcc2c9d7cb2492061',1,'manifold::Manifold']]], + ['smooth_14',['smooth',['../classmanifold_1_1_manifold.html#aff03aac40d42a60f8e4254db90530c83',1,'manifold::Manifold::Smooth(const MeshGL &, const std::vector< Smoothness > &sharpenedEdges={})'],['../classmanifold_1_1_manifold.html#aad322c5b69ab571a4f4fb5b26f945b90',1,'manifold::Manifold::Smooth(const Mesh &, const std::vector< Smoothness > &sharpenedEdges={})']]], + ['smoothbynormals_15',['SmoothByNormals',['../classmanifold_1_1_manifold.html#aa0cbb9710c375f40591c3ae2dd62f2b4',1,'manifold::Manifold']]], + ['smoothout_16',['SmoothOut',['../classmanifold_1_1_manifold.html#a8ce7d02b7f16afb5e9bfb8a948e206d3',1,'manifold::Manifold']]], + ['sortfaces_17',['SortFaces',['../structmanifold_1_1_manifold_1_1_impl.html#a9c6ad8be3b98a1f83c7d9a7df1f983c8',1,'manifold::Manifold::Impl']]], + ['sortverts_18',['SortVerts',['../structmanifold_1_1_manifold_1_1_impl.html#a960f240018111751cf0a91339a1d1b08',1,'manifold::Manifold::Impl']]], + ['spectralnorm_19',['SpectralNorm',['../group___connections.html#ga50a9d6292886da472798354447a68cd7',1,'manifold']]], + ['sphere_20',['Sphere',['../classmanifold_1_1_manifold.html#a1fa0a21aed71099905b89a10bcde0539',1,'manifold::Manifold']]], + ['split_21',['Split',['../classmanifold_1_1_manifold.html#a60e241b8a56d334b3d2d3dbd2fc808ba',1,'manifold::Manifold']]], + ['splitbyplane_22',['SplitByPlane',['../classmanifold_1_1_manifold.html#adc134d7a6dfbf8c74e5d531bbeb330cb',1,'manifold::Manifold']]], + ['square_23',['Square',['../classmanifold_1_1_cross_section.html#a6e14a9728e2b4a5912c70c8c1b42f029',1,'manifold::CrossSection']]], + ['status_24',['Status',['../classmanifold_1_1_manifold.html#a423e2f2a67ccc0662a97e018b2c3886d',1,'manifold::Manifold']]], + ['stretchybracelet_25',['StretchyBracelet',['../group___samples.html#gaa093ef8b44f049141ccbaca556f88cd3',1,'manifold']]], + ['subdivide_26',['Subdivide',['../structmanifold_1_1_manifold_1_1_impl.html#abe4f5b3c2e601eb17c121dfd6c755445',1,'manifold::Manifold::Impl']]], + ['svd_27',['SVD',['../group___connections.html#ga52654eb696e6ea2b67dcd45063d1724a',1,'manifold']]] +]; diff --git a/docs/html/search/groups_0.js b/docs/html/search/groups_0.js new file mode 100644 index 000000000..61be2419a --- /dev/null +++ b/docs/html/search/groups_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['connections_0',['Connections',['../group___connections.html',1,'']]], + ['core_1',['Core',['../group___core.html',1,'']]] +]; diff --git a/docs/html/search/groups_1.js b/docs/html/search/groups_1.js new file mode 100644 index 000000000..403f03a21 --- /dev/null +++ b/docs/html/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['debug_0',['Debug',['../group___debug.html',1,'']]] +]; diff --git a/docs/html/search/groups_2.js b/docs/html/search/groups_2.js new file mode 100644 index 000000000..72cde6898 --- /dev/null +++ b/docs/html/search/groups_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exceptions_0',['Exceptions',['../group___exceptions.html',1,'']]] +]; diff --git a/docs/html/search/groups_3.js b/docs/html/search/groups_3.js new file mode 100644 index 000000000..369bb0ad5 --- /dev/null +++ b/docs/html/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['meshio_0',['MeshIO',['../group___mesh_i_o.html',1,'']]] +]; diff --git a/docs/html/search/groups_4.js b/docs/html/search/groups_4.js new file mode 100644 index 000000000..2873760d6 --- /dev/null +++ b/docs/html/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['private_0',['Private',['../group___private.html',1,'']]] +]; diff --git a/docs/html/search/groups_5.js b/docs/html/search/groups_5.js new file mode 100644 index 000000000..9eb049365 --- /dev/null +++ b/docs/html/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['samples_0',['Samples',['../group___samples.html',1,'']]] +]; diff --git a/docs/html/search/mag.svg b/docs/html/search/mag.svg new file mode 100644 index 000000000..ffb6cf0d0 --- /dev/null +++ b/docs/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/html/search/mag_d.svg b/docs/html/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/docs/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/html/search/mag_seld.svg b/docs/html/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/docs/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 000000000..d2dffc716 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bricks_0',['bricks',['../namespacebricks.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_1.js b/docs/html/search/namespaces_1.js new file mode 100644 index 000000000..972924554 --- /dev/null +++ b/docs/html/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cube_5fwith_5fdents_0',['cube_with_dents',['../namespacecube__with__dents.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_2.js b/docs/html/search/namespaces_2.js new file mode 100644 index 000000000..34bdc6360 --- /dev/null +++ b/docs/html/search/namespaces_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gyroid_5fmodule_0',['gyroid_module',['../namespacegyroid__module.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_3.js b/docs/html/search/namespaces_3.js new file mode 100644 index 000000000..bf9bf6a2c --- /dev/null +++ b/docs/html/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['manifold_0',['manifold',['../namespacemanifold.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_4.js b/docs/html/search/namespaces_4.js new file mode 100644 index 000000000..d28a08b22 --- /dev/null +++ b/docs/html/search/namespaces_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['run_5fall_0',['run_all',['../namespacerun__all.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_5.js b/docs/html/search/namespaces_5.js new file mode 100644 index 000000000..7e2738996 --- /dev/null +++ b/docs/html/search/namespaces_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scallop_0',['scallop',['../namespacescallop.html',1,'']]], + ['split_5fcube_1',['split_cube',['../namespacesplit__cube.html',1,'']]] +]; diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 000000000..bdbd6f8fb --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bindings_0',['Python Bindings',['../index.html',1,'']]] +]; diff --git a/docs/html/search/pages_1.js b/docs/html/search/pages_1.js new file mode 100644 index 000000000..86325faaa --- /dev/null +++ b/docs/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['contribute_0',['How to Contribute',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]] +]; diff --git a/docs/html/search/pages_2.js b/docs/html/search/pages_2.js new file mode 100644 index 000000000..c77632f7e --- /dev/null +++ b/docs/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['how_20to_20contribute_0',['How to Contribute',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]] +]; diff --git a/docs/html/search/pages_3.js b/docs/html/search/pages_3.js new file mode 100644 index 000000000..c5c5bb855 --- /dev/null +++ b/docs/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['python_20bindings_0',['Python Bindings',['../index.html',1,'']]] +]; diff --git a/docs/html/search/pages_4.js b/docs/html/search/pages_4.js new file mode 100644 index 000000000..8b7edf4aa --- /dev/null +++ b/docs/html/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['release_5fchecklist_0',['RELEASE_CHECKLIST',['../md__r_e_l_e_a_s_e___c_h_e_c_k_l_i_s_t.html',1,'']]] +]; diff --git a/docs/html/search/pages_5.js b/docs/html/search/pages_5.js new file mode 100644 index 000000000..8cf0ba009 --- /dev/null +++ b/docs/html/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['to_20contribute_0',['How to Contribute',['../md__c_o_n_t_r_i_b_u_t_i_n_g.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 000000000..a53214fcd --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,286 @@ +/*---------------- Search Box */ + +#MSearchBox { + position: absolute; + right: 5px; +} +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 000000000..6fd40c677 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +Manifold: shared.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shared.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16
+
17#include "par.h"
+
18#include "sparse.h"
+
19#include "utils.h"
+
20#include "vec.h"
+
21
+
22namespace manifold {
+
23
+
27inline glm::vec3 SafeNormalize(glm::vec3 v) {
+
28 v = glm::normalize(v);
+
29 return glm::isfinite(v.x) ? v : glm::vec3(0);
+
30}
+
31
+
32inline float MaxPrecision(float minPrecision, const Box& bBox) {
+
33 float precision = glm::max(minPrecision, kTolerance * bBox.Scale());
+
34 return glm::isfinite(precision) ? precision : -1;
+
35}
+
36
+
37inline int NextHalfedge(int current) {
+
38 ++current;
+
39 if (current % 3 == 0) current -= 3;
+
40 return current;
+
41}
+
42
+
43inline glm::mat3 NormalTransform(const glm::mat4x3& transform) {
+
44 return glm::inverse(glm::transpose(glm::mat3(transform)));
+
45}
+
46
+
+
51inline glm::mat3x2 GetAxisAlignedProjection(glm::vec3 normal) {
+
52 glm::vec3 absNormal = glm::abs(normal);
+
53 float xyzMax;
+
54 glm::mat2x3 projection;
+
55 if (absNormal.z > absNormal.x && absNormal.z > absNormal.y) {
+
56 projection = glm::mat2x3(1.0f, 0.0f, 0.0f, //
+
57 0.0f, 1.0f, 0.0f);
+
58 xyzMax = normal.z;
+
59 } else if (absNormal.y > absNormal.x) {
+
60 projection = glm::mat2x3(0.0f, 0.0f, 1.0f, //
+
61 1.0f, 0.0f, 0.0f);
+
62 xyzMax = normal.y;
+
63 } else {
+
64 projection = glm::mat2x3(0.0f, 1.0f, 0.0f, //
+
65 0.0f, 0.0f, 1.0f);
+
66 xyzMax = normal.x;
+
67 }
+
68 if (xyzMax < 0) projection[0] *= -1.0f;
+
69 return glm::transpose(projection);
+
70}
+
+
71
+
72inline glm::vec3 GetBarycentric(const glm::vec3& v, const glm::mat3& triPos,
+
73 float precision) {
+
74 const glm::mat3 edges(triPos[2] - triPos[1], triPos[0] - triPos[2],
+
75 triPos[1] - triPos[0]);
+
76 const glm::vec3 d2(glm::dot(edges[0], edges[0]), glm::dot(edges[1], edges[1]),
+
77 glm::dot(edges[2], edges[2]));
+
78 const int longSide = d2[0] > d2[1] && d2[0] > d2[2] ? 0
+
79 : d2[1] > d2[2] ? 1
+
80 : 2;
+
81 const glm::vec3 crossP = glm::cross(edges[0], edges[1]);
+
82 const float area2 = glm::dot(crossP, crossP);
+
83 const float tol2 = precision * precision;
+
84
+
85 glm::vec3 uvw(0);
+
86 for (const int i : {0, 1, 2}) {
+
87 const glm::vec3 dv = v - triPos[i];
+
88 if (glm::dot(dv, dv) < tol2) {
+
89 // Return exactly equal if within tolerance of vert.
+
90 uvw[i] = 1;
+
91 return uvw;
+
92 }
+
93 }
+
94
+
95 if (d2[longSide] < tol2) { // point
+
96 return glm::vec3(1, 0, 0);
+
97 } else if (area2 > d2[longSide] * tol2) { // triangle
+
98 for (const int i : {0, 1, 2}) {
+
99 const int j = Next3(i);
+
100 const glm::vec3 crossPv = glm::cross(edges[i], v - triPos[j]);
+
101 const float area2v = glm::dot(crossPv, crossPv);
+
102 // Return exactly equal if within tolerance of edge.
+
103 uvw[i] = area2v < d2[i] * tol2 ? 0 : glm::dot(crossPv, crossP);
+
104 }
+
105 uvw /= (uvw[0] + uvw[1] + uvw[2]);
+
106 return uvw;
+
107 } else { // line
+
108 const int nextV = Next3(longSide);
+
109 const float alpha =
+
110 glm::dot(v - triPos[nextV], edges[longSide]) / d2[longSide];
+
111 uvw[longSide] = 0;
+
112 uvw[nextV] = 1 - alpha;
+
113 const int lastV = Next3(nextV);
+
114 uvw[lastV] = alpha;
+
115 return uvw;
+
116 }
+
117}
+
118
+
+
123struct Halfedge {
+
124 int startVert, endVert;
+
125 int pairedHalfedge;
+
126 int face;
+
127 bool IsForward() const { return startVert < endVert; }
+
128 bool operator<(const Halfedge& other) const {
+
129 return startVert == other.startVert ? endVert < other.endVert
+
130 : startVert < other.startVert;
+
131 }
+
132};
+
+
133
+
+ +
135 int tri;
+
136 glm::vec4 uvw;
+
137};
+
+
138
+
+
139struct TriRef {
+ + +
149 int tri;
+
150
+
151 bool SameFace(const TriRef& other) const {
+
152 return meshID == other.meshID && tri == other.tri;
+
153 }
+
154};
+
+
155
+
+
160struct TmpEdge {
+
161 int first, second, halfedgeIdx;
+
162
+
163 TmpEdge() {}
+
164 TmpEdge(int start, int end, int idx) {
+
165 first = glm::min(start, end);
+
166 second = glm::max(start, end);
+
167 halfedgeIdx = idx;
+
168 }
+
169
+
170 bool operator<(const TmpEdge& other) const {
+
171 return first == other.first ? second < other.second : first < other.first;
+
172 }
+
173};
+
+
176Vec<TmpEdge> inline CreateTmpEdges(const Vec<Halfedge>& halfedge) {
+
177 Vec<TmpEdge> edges(halfedge.size());
+
178 for_each_n(autoPolicy(edges.size()), countAt(0), edges.size(),
+
179 [&edges, &halfedge](const int idx) {
+
180 const Halfedge& half = halfedge[idx];
+
181 edges[idx] = TmpEdge(half.startVert, half.endVert,
+
182 half.IsForward() ? idx : -1);
+
183 });
+
184
+
185 size_t numEdge =
+
186 remove_if(edges.begin(), edges.end(),
+
187 [](const TmpEdge& edge) { return edge.halfedgeIdx < 0; }) -
+
188 edges.begin();
+
189 DEBUG_ASSERT(numEdge == halfedge.size() / 2, topologyErr, "Not oriented!");
+
190 edges.resize(numEdge);
+
191 return edges;
+
192}
+
193
+
194template <const bool inverted>
+
+ + +
197 SparseIndices& indices;
+
198
+
199 void operator()(size_t i) {
+
200 int& edge = indices.Get(i, inverted);
+
201 edge = edges[edge].halfedgeIdx;
+
202 }
+
203};
+
+
204
+
205#ifdef MANIFOLD_DEBUG
+
206inline std::ostream& operator<<(std::ostream& stream, const Halfedge& edge) {
+
207 return stream << "startVert = " << edge.startVert
+
208 << ", endVert = " << edge.endVert
+
209 << ", pairedHalfedge = " << edge.pairedHalfedge
+
210 << ", face = " << edge.face;
+
211}
+
212
+
213inline std::ostream& operator<<(std::ostream& stream, const Barycentric& bary) {
+
214 return stream << "tri = " << bary.tri << ", uvw = " << bary.uvw;
+
215}
+
216
+
217inline std::ostream& operator<<(std::ostream& stream, const TriRef& ref) {
+
218 return stream << "meshID: " << ref.meshID
+
219 << ", originalID: " << ref.originalID << ", tri: " << ref.tri;
+
220}
+
221#endif
+
222} // namespace manifold
+
Definition sparse.h:27
+
Definition vec.h:43
+
Definition vec_view.h:27
+
glm::mat3x2 GetAxisAlignedProjection(glm::vec3 normal)
Definition shared.h:51
+
Definition shared.h:134
+
Definition meshIO.h:20
+
Definition shared.h:123
+
Definition shared.h:195
+
Definition shared.h:160
+
Definition shared.h:139
+
int tri
Definition shared.h:149
+
int meshID
Definition shared.h:143
+
int originalID
Definition shared.h:146
+
Definition public.h:605
+
+
+ + + + diff --git a/docs/html/sparse_8h_source.html b/docs/html/sparse_8h_source.html new file mode 100644 index 000000000..c5b877aa4 --- /dev/null +++ b/docs/html/sparse_8h_source.html @@ -0,0 +1,332 @@ + + + + + + + +Manifold: sparse.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sparse.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <math.h>
+
17
+
18#include "optional_assert.h"
+
19#include "par.h"
+
20#include "public.h"
+
21#include "utils.h"
+
22#include "vec.h"
+
23
+
24namespace manifold {
+
25
+
+ +
28 // sparse indices where {p1: q1, p2: q2, ...} are laid out as
+
29 // p1 q1 p2 q2 or q1 p1 q2 p2, depending on endianness
+
30 // such that the indices are sorted by (p << 32) | q
+
31 public:
+
32#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \
+
33 defined(__BIG_ENDIAN__) || defined(__ARMEB__) || defined(__THUMBEB__) || \
+
34 defined(__AARCH64EB__) || defined(_MIBSEB) || defined(__MIBSEB) || \
+
35 defined(__MIBSEB__)
+
36 static constexpr size_t pOffset = 0;
+
37#elif defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \
+
38 defined(__LITTLE_ENDIAN__) || defined(__ARMEL__) || \
+
39 defined(__THUMBEL__) || defined(__AARCH64EL__) || defined(_MIPSEL) || \
+
40 defined(__MIPSEL) || defined(__MIPSEL__) || defined(__EMSCRIPTEN__) || \
+
41 defined(_WIN32)
+
42 static constexpr size_t pOffset = 1;
+
43#else
+
44#error "unknown architecture"
+
45#endif
+
46 static constexpr int64_t EncodePQ(int p, int q) {
+
47 return (int64_t(p) << 32) | q;
+
48 }
+
49
+
50 SparseIndices() = default;
+
51 SparseIndices(size_t size) { data_ = Vec<char>(size * sizeof(int64_t)); }
+
52
+
53 size_t size() const { return data_.size() / sizeof(int64_t); }
+
54
+
55 Vec<int> Copy(bool use_q) const {
+
56 Vec<int> out(size());
+
57 size_t offset = pOffset;
+
58 if (use_q) offset = 1 - offset;
+
59 const int* p = ptr();
+
60 for_each(autoPolicy(out.size()), countAt(0_uz), countAt(out.size()),
+
61 [&](size_t i) { out[i] = p[i * 2 + offset]; });
+
62 return out;
+
63 }
+
64
+
65 void Sort() {
+
66 VecView<int64_t> view = AsVec64();
+
67 stable_sort(view.begin(), view.end());
+
68 }
+
69
+
70 void Resize(size_t size) { data_.resize(size * sizeof(int64_t), -1); }
+
71
+
72 inline int& Get(size_t i, bool use_q) {
+
73 if (use_q)
+
74 return ptr()[2 * i + 1 - pOffset];
+
75 else
+
76 return ptr()[2 * i + pOffset];
+
77 }
+
78
+
79 inline int Get(size_t i, bool use_q) const {
+
80 if (use_q)
+
81 return ptr()[2 * i + 1 - pOffset];
+
82 else
+
83 return ptr()[2 * i + pOffset];
+
84 }
+
85
+
86 inline int64_t GetPQ(size_t i) const {
+
87 VecView<const int64_t> view = AsVec64();
+
88 return view[i];
+
89 }
+
90
+
91 inline void Set(size_t i, int p, int q) {
+
92 VecView<int64_t> view = AsVec64();
+
93 view[i] = EncodePQ(p, q);
+
94 }
+
95
+
96 inline void SetPQ(size_t i, int64_t pq) {
+
97 VecView<int64_t> view = AsVec64();
+
98 view[i] = pq;
+
99 }
+
100
+
101 VecView<int64_t> AsVec64() {
+
102 return VecView<int64_t>(reinterpret_cast<int64_t*>(data_.data()),
+
103 data_.size() / sizeof(int64_t));
+
104 }
+
105
+
106 VecView<const int64_t> AsVec64() const {
+ +
108 reinterpret_cast<const int64_t*>(data_.data()),
+
109 data_.size() / sizeof(int64_t));
+
110 }
+
111
+
112 VecView<int32_t> AsVec32() {
+
113 return VecView<int32_t>(reinterpret_cast<int32_t*>(data_.data()),
+
114 data_.size() / sizeof(int32_t));
+
115 }
+
116
+
117 VecView<const int32_t> AsVec32() const {
+ +
119 reinterpret_cast<const int32_t*>(data_.data()),
+
120 data_.size() / sizeof(int32_t));
+
121 }
+
122
+
123 inline void Add(int p, int q) {
+
124 for (unsigned int i = 0; i < sizeof(int64_t); ++i) data_.push_back(-1);
+
125 Set(size() - 1, p, q);
+
126 }
+
127
+
128 void Unique() {
+
129 Sort();
+
130 VecView<int64_t> view = AsVec64();
+
131 size_t newSize = unique(view.begin(), view.end()) - view.begin();
+
132 Resize(newSize);
+
133 }
+
134
+
135 size_t RemoveZeros(Vec<int>& S) {
+
136 DEBUG_ASSERT(S.size() == size(), userErr,
+
137 "Different number of values than indicies!");
+
138
+
139 Vec<size_t> new2Old(S.size());
+
140 sequence(new2Old.begin(), new2Old.end());
+
141
+
142 size_t size = copy_if(countAt(0_uz), countAt(S.size()), new2Old.begin(),
+
143 [&S](const size_t i) { return S[i] != 0; }) -
+
144 new2Old.begin();
+
145 new2Old.resize(size);
+
146
+
147 Permute(S, new2Old);
+
148 Vec<char> tmp(std::move(data_));
+
149 Resize(size);
+
150 gather(new2Old.begin(), new2Old.end(),
+
151 reinterpret_cast<int64_t*>(tmp.data()),
+
152 reinterpret_cast<int64_t*>(data_.data()));
+
153
+
154 return size;
+
155 }
+
156
+
157 template <typename T>
+
+
158 struct firstFinite {
+
159 VecView<T> v;
+
160
+
161 bool Finite(float v) const { return isfinite(v); }
+
162 bool Finite(glm::vec2 v) const { return isfinite(v[0]); }
+
163 bool Finite(glm::vec3 v) const { return isfinite(v[0]); }
+
164 bool Finite(glm::vec4 v) const { return isfinite(v[0]); }
+
165
+
166 bool operator()(const int i) const { return Finite(v[i]); }
+
167 };
+
+
168
+
169 template <typename T>
+
170 size_t KeepFinite(Vec<T>& v, Vec<int>& x) {
+
171 DEBUG_ASSERT(x.size() == size(), userErr,
+
172 "Different number of values than indicies!");
+
173
+
174 Vec<int> new2Old(v.size());
+
175 size_t size = copy_if(countAt(0_uz), countAt(v.size()), new2Old.begin(),
+
176 firstFinite<T>({v})) -
+
177 new2Old.begin();
+
178 new2Old.resize(size);
+
179
+
180 Permute(v, new2Old);
+
181 Permute(x, new2Old);
+
182 Vec<char> tmp(std::move(data_));
+
183 Resize(size);
+
184 gather(new2Old.begin(), new2Old.end(),
+
185 reinterpret_cast<int64_t*>(tmp.data()),
+
186 reinterpret_cast<int64_t*>(data_.data()));
+
187
+
188 return size;
+
189 }
+
190
+
191#ifdef MANIFOLD_DEBUG
+
192 void Dump() const {
+
193 std::cout << "SparseIndices = " << std::endl;
+
194 const int* p = ptr();
+
195 for (size_t i = 0; i < size(); ++i) {
+
196 std::cout << i << ", p = " << Get(i, false) << ", q = " << Get(i, true)
+
197 << std::endl;
+
198 }
+
199 std::cout << std::endl;
+
200 }
+
201#endif
+
202
+
203 private:
+
204 Vec<char> data_;
+
205 inline int* ptr() { return reinterpret_cast<int32_t*>(data_.data()); }
+
206 inline const int* ptr() const {
+
207 return reinterpret_cast<const int32_t*>(data_.data());
+
208 }
+
209};
+
+
210
+
211} // namespace manifold
+
Definition sparse.h:27
+
Definition vec.h:43
+
Definition vec_view.h:27
+
Definition meshIO.h:20
+ +
Definition public.h:602
+
+
+ + + + diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png new file mode 100644 index 000000000..fe895f2c5 Binary files /dev/null and b/docs/html/splitbar.png differ diff --git a/docs/html/splitbard.png b/docs/html/splitbard.png new file mode 100644 index 000000000..8367416d7 Binary files /dev/null and b/docs/html/splitbard.png differ diff --git a/docs/html/sponge_8cpp_source.html b/docs/html/sponge_8cpp_source.html new file mode 100644 index 000000000..c1dacd901 --- /dev/null +++ b/docs/html/sponge_8cpp_source.html @@ -0,0 +1,2729 @@ + + + + + + + +Manifold: sponge.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sponge.cpp
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15TEST(Polygon, Sponge4) {
+
16 Polygons polys;
+
17 polys.push_back({
+
18 {0.166666672, 0.166666672}, //
+
19 {0.166666672, 0.5}, //
+
20 {0.150205776, 0.450617284}, //
+
21 {0.154320985, 0.450617284}, //
+
22 {0.154320985, 0.44650206}, //
+
23 {0.154320985, 0.438271612}, //
+
24 {0.150205761, 0.438271612}, //
+
25 {0.146090552, 0.438271612}, //
+
26 {0.117283955, 0.351851851}, //
+
27 {0.129629627, 0.351851851}, //
+
28 {0.129629627, 0.339506179}, //
+
29 {0.129629627, 0.314814836}, //
+
30 {0.117283948, 0.314814836}, //
+
31 {0.104938284, 0.314814836}, //
+
32 {0.076131694, 0.228395075}, //
+
33 {0.0802469105, 0.228395075}, //
+
34 {0.0802469105, 0.224279851}, //
+
35 {0.0802469105, 0.216049403}, //
+
36 {0.0761316866, 0.216049403}, //
+
37 {0.0720164701, 0.216049403}, //
+
38 {0.0555555597, 0.166666672}, //
+
39 {0.166666672, 0.166666672}, //
+
40 });
+
41 polys.push_back({
+
42 {-0.166666672, -0.5}, //
+
43 {-0.117283955, -0.401234567}, //
+
44 {-0.117283955, -0.401234567}, //
+
45 {-0.117283955, -0.401234567}, //
+
46 {-0.104938284, -0.376543224}, //
+
47 {-0.1090535, -0.376543224}, //
+
48 {-0.117283955, -0.376543224}, //
+
49 {-0.117283955, -0.372428}, //
+
50 {-0.117283955, -0.364197552}, //
+
51 {-0.113168724, -0.364197552}, //
+
52 {-0.104938269, -0.364197552}, //
+
53 {-0.104938269, -0.368312776}, //
+
54 {-0.104938269, -0.376543194}, //
+
55 {-0.0308642201, -0.228395075}, //
+
56 {-0.0349794254, -0.228395075}, //
+
57 {-0.0432098769, -0.228395075}, //
+
58 {-0.0432098769, -0.224279851}, //
+
59 {-0.0432098769, -0.216049403}, //
+
60 {-0.0390946493, -0.216049403}, //
+
61 {-0.0308641978, -0.216049403}, //
+
62 {-0.0308641978, -0.220164627}, //
+
63 {-0.0308641978, -0.22839503}, //
+
64 {-2.8974485e-09, -0.166666672}, //
+
65 {-0.0555555597, -0.166666672}, //
+
66 {-0.0720164701, -0.216049403}, //
+
67 {-0.0679012388, -0.216049403}, //
+
68 {-0.0679012388, -0.220164627}, //
+
69 {-0.0679012388, -0.228395075}, //
+
70 {-0.0720164627, -0.228395075}, //
+
71 {-0.076131694, -0.228395075}, //
+
72 {-0.104938284, -0.314814836}, //
+
73 {-0.092592597, -0.314814836}, //
+
74 {-0.092592597, -0.327160507}, //
+
75 {-0.092592597, -0.351851851}, //
+
76 {-0.104938276, -0.351851851}, //
+
77 {-0.117283955, -0.351851851}, //
+
78 {-0.146090552, -0.438271612}, //
+
79 {-0.141975313, -0.438271612}, //
+
80 {-0.141975313, -0.442386836}, //
+
81 {-0.141975313, -0.450617284}, //
+
82 {-0.146090537, -0.450617284}, //
+
83 {-0.150205776, -0.450617284}, //
+
84 });
+
85 polys.push_back({
+
86 {0.141975313, 0.179012358}, //
+
87 {0.141975313, 0.183127582}, //
+
88 {0.141975313, 0.19135803}, //
+
89 {0.146090537, 0.19135803}, //
+
90 {0.154320985, 0.19135803}, //
+
91 {0.154320985, 0.187242806}, //
+
92 {0.154320985, 0.179012358}, //
+
93 {0.150205761, 0.179012358}, //
+
94 });
+
95 polys.push_back({
+
96 {0.154320985, 0.216049403}, //
+
97 {0.150205761, 0.216049403}, //
+
98 {0.141975313, 0.216049403}, //
+
99 {0.141975313, 0.220164627}, //
+
100 {0.141975313, 0.228395075}, //
+
101 {0.146090537, 0.228395075}, //
+
102 {0.154320985, 0.228395075}, //
+
103 {0.154320985, 0.224279851}, //
+
104 });
+
105 polys.push_back({
+
106 {0.129629627, 0.203703716}, //
+
107 {0.117283948, 0.203703716}, //
+
108 {0.092592597, 0.203703716}, //
+
109 {0.092592597, 0.216049403}, //
+
110 {0.092592597, 0.240740761}, //
+
111 {0.104938276, 0.240740761}, //
+
112 {0.129629627, 0.240740761}, //
+
113 {0.129629627, 0.228395075}, //
+
114 });
+
115 polys.push_back({
+
116 {0.104938269, 0.179012358}, //
+
117 {0.104938269, 0.183127582}, //
+
118 {0.104938269, 0.19135803}, //
+
119 {0.1090535, 0.19135803}, //
+
120 {0.117283955, 0.19135803}, //
+
121 {0.117283955, 0.187242806}, //
+
122 {0.117283955, 0.179012358}, //
+
123 {0.113168724, 0.179012358}, //
+
124 });
+
125 polys.push_back({
+
126 {0.0679012388, 0.179012358}, //
+
127 {0.0679012388, 0.183127582}, //
+
128 {0.0679012388, 0.19135803}, //
+
129 {0.0720164627, 0.19135803}, //
+
130 {0.0802469105, 0.19135803}, //
+
131 {0.0802469105, 0.187242806}, //
+
132 {0.0802469105, 0.179012358}, //
+
133 {0.0761316866, 0.179012358}, //
+
134 });
+
135 polys.push_back({
+
136 {0.154320985, 0.253086448}, //
+
137 {0.150205761, 0.253086448}, //
+
138 {0.141975313, 0.253086448}, //
+
139 {0.141975313, 0.257201672}, //
+
140 {0.141975313, 0.265432119}, //
+
141 {0.146090537, 0.265432119}, //
+
142 {0.154320985, 0.265432119}, //
+
143 {0.154320985, 0.261316895}, //
+
144 });
+
145 polys.push_back({
+
146 {0.154320985, 0.290123463}, //
+
147 {0.150205761, 0.290123463}, //
+
148 {0.141975313, 0.290123463}, //
+
149 {0.141975313, 0.294238687}, //
+
150 {0.141975313, 0.302469134}, //
+
151 {0.146090537, 0.302469134}, //
+
152 {0.154320985, 0.302469134}, //
+
153 {0.154320985, 0.29835391}, //
+
154 });
+
155 polys.push_back({
+
156 {0.154320985, 0.327160507}, //
+
157 {0.150205761, 0.327160507}, //
+
158 {0.141975313, 0.327160507}, //
+
159 {0.141975313, 0.331275731}, //
+
160 {0.141975313, 0.339506179}, //
+
161 {0.146090537, 0.339506179}, //
+
162 {0.154320985, 0.339506179}, //
+
163 {0.154320985, 0.335390955}, //
+
164 });
+
165 polys.push_back({
+
166 {0.141975313, 0.364197552}, //
+
167 {0.141975313, 0.368312776}, //
+
168 {0.141975313, 0.376543224}, //
+
169 {0.146090537, 0.376543224}, //
+
170 {0.154320985, 0.376543224}, //
+
171 {0.154320985, 0.372428}, //
+
172 {0.154320985, 0.364197552}, //
+
173 {0.150205761, 0.364197552}, //
+
174 });
+
175 polys.push_back({
+
176 {0.154320985, 0.401234567}, //
+
177 {0.150205761, 0.401234567}, //
+
178 {0.141975313, 0.401234567}, //
+
179 {0.141975313, 0.405349791}, //
+
180 {0.141975313, 0.413580239}, //
+
181 {0.146090537, 0.413580239}, //
+
182 {0.154320985, 0.413580239}, //
+
183 {0.154320985, 0.409465015}, //
+
184 });
+
185 polys.push_back({
+
186 {0.117283955, 0.253086448}, //
+
187 {0.113168724, 0.253086448}, //
+
188 {0.104938269, 0.253086448}, //
+
189 {0.104938269, 0.257201672}, //
+
190 {0.104938269, 0.265432119}, //
+
191 {0.1090535, 0.265432119}, //
+
192 {0.117283955, 0.265432119}, //
+
193 {0.117283955, 0.261316895}, //
+
194 });
+
195 polys.push_back({
+
196 {0.117283955, 0.290123463}, //
+
197 {0.113168724, 0.290123463}, //
+
198 {0.104938269, 0.290123463}, //
+
199 {0.104938269, 0.294238687}, //
+
200 {0.104938269, 0.302469134}, //
+
201 {0.1090535, 0.302469134}, //
+
202 {0.117283955, 0.302469134}, //
+
203 {0.117283955, 0.29835391}, //
+
204 });
+
205 polys.push_back({
+
206 {-0.0679012388, -0.302469134}, //
+
207 {-0.0720164627, -0.302469134}, //
+
208 {-0.0802469105, -0.302469134}, //
+
209 {-0.0802469105, -0.29835391}, //
+
210 {-0.0802469105, -0.290123463}, //
+
211 {-0.0761316866, -0.290123463}, //
+
212 {-0.0679012388, -0.290123463}, //
+
213 {-0.0679012388, -0.294238687}, //
+
214 });
+
215 polys.push_back({
+
216 {-0.0679012388, -0.265432119}, //
+
217 {-0.0720164627, -0.265432119}, //
+
218 {-0.0802469105, -0.265432119}, //
+
219 {-0.0802469105, -0.261316895}, //
+
220 {-0.0802469105, -0.253086448}, //
+
221 {-0.0761316866, -0.253086448}, //
+
222 {-0.0679012388, -0.253086448}, //
+
223 {-0.0679012388, -0.257201672}, //
+
224 });
+
225 polys.push_back({
+
226 {-0.0308641978, -0.19135803}, //
+
227 {-0.0349794254, -0.19135803}, //
+
228 {-0.0432098769, -0.19135803}, //
+
229 {-0.0432098769, -0.187242806}, //
+
230 {-0.0432098769, -0.179012358}, //
+
231 {-0.0390946493, -0.179012358}, //
+
232 {-0.0308641978, -0.179012358}, //
+
233 {-0.0308641978, -0.183127582}, //
+
234 });
+
235 TestPoly(polys, 210);
+
236}
+
237
+
238TEST(Polygon, Sponge3) {
+
239 Polygons polys;
+
240 polys.push_back({
+
241 {0.5, -0.166666672}, //
+
242 {0.351851851, -0.117283955}, //
+
243 {0.351851851, -0.129629627}, //
+
244 {0.339506179, -0.129629627}, //
+
245 {0.314814836, -0.129629627}, //
+
246 {0.314814836, -0.117283948}, //
+
247 {0.314814836, -0.104938276}, //
+
248 {0.166666672, -0.0555555597}, //
+
249 {0.166666672, -0.166666672}, //
+
250 {0.0555555634, -0.166666672}, //
+
251 {-0.166666672, -0.166666672}, //
+
252 {-0.166666672, -0.0555555634}, //
+
253 {-0.166666672, 0.0555555597}, //
+
254 {-0.314814836, 0.104938276}, //
+
255 {-0.314814836, 0.092592597}, //
+
256 {-0.327160507, 0.092592597}, //
+
257 {-0.351851851, 0.092592597}, //
+
258 {-0.351851851, 0.104938276}, //
+
259 {-0.351851851, 0.117283955}, //
+
260 {-0.5, 0.166666672}, //
+
261 {-0.5, -0.166666672}, //
+
262 });
+
263 polys.push_back({
+
264 {0.240740761, -0.092592597}, //
+
265 {0.240740761, -0.104938276}, //
+
266 {0.240740761, -0.129629627}, //
+
267 {0.228395075, -0.129629627}, //
+
268 {0.203703716, -0.129629627}, //
+
269 {0.203703716, -0.117283948}, //
+
270 {0.203703716, -0.092592597}, //
+
271 {0.216049403, -0.092592597}, //
+
272 });
+
273 polys.push_back({
+
274 {-0.203703716, -0.129629627}, //
+
275 {-0.216049403, -0.129629627}, //
+
276 {-0.240740761, -0.129629627}, //
+
277 {-0.240740761, -0.117283948}, //
+
278 {-0.240740761, -0.092592597}, //
+
279 {-0.228395075, -0.092592597}, //
+
280 {-0.203703716, -0.092592597}, //
+
281 {-0.203703716, -0.104938276}, //
+
282 });
+
283 polys.push_back({
+
284 {-0.203703716, -0.0185185187}, //
+
285 {-0.216049403, -0.0185185187}, //
+
286 {-0.240740761, -0.0185185187}, //
+
287 {-0.240740761, -0.00617284048}, //
+
288 {-0.240740761, 0.0185185187}, //
+
289 {-0.228395075, 0.0185185187}, //
+
290 {-0.203703716, 0.0185185187}, //
+
291 {-0.203703716, 0.00617284048}, //
+
292 });
+
293 polys.push_back({
+
294 {-0.314814836, -0.129629627}, //
+
295 {-0.327160507, -0.129629627}, //
+
296 {-0.351851851, -0.129629627}, //
+
297 {-0.351851851, -0.117283948}, //
+
298 {-0.351851851, -0.092592597}, //
+
299 {-0.339506179, -0.092592597}, //
+
300 {-0.314814836, -0.092592597}, //
+
301 {-0.314814836, -0.104938276}, //
+
302 });
+
303 polys.push_back({
+
304 {-0.42592594, -0.129629627}, //
+
305 {-0.438271612, -0.129629627}, //
+
306 {-0.462962955, -0.129629627}, //
+
307 {-0.462962955, -0.117283948}, //
+
308 {-0.462962955, -0.092592597}, //
+
309 {-0.450617284, -0.092592597}, //
+
310 {-0.42592594, -0.092592597}, //
+
311 {-0.42592594, -0.104938276}, //
+
312 });
+
313 polys.push_back({
+
314 {-0.277777791, -0.055555556}, //
+
315 {-0.314814836, -0.055555556}, //
+
316 {-0.388888896, -0.055555556}, //
+
317 {-0.388888896, -0.0185185205}, //
+
318 {-0.388888896, 0.055555556}, //
+
319 {-0.351851851, 0.055555556}, //
+
320 {-0.277777791, 0.055555556}, //
+
321 {-0.277777791, 0.0185185205}, //
+
322 });
+
323 polys.push_back({
+
324 {-0.42592594, -0.0185185187}, //
+
325 {-0.438271612, -0.0185185187}, //
+
326 {-0.462962955, -0.0185185187}, //
+
327 {-0.462962955, -0.00617284048}, //
+
328 {-0.462962955, 0.0185185187}, //
+
329 {-0.450617284, 0.0185185187}, //
+
330 {-0.42592594, 0.0185185187}, //
+
331 {-0.42592594, 0.00617284048}, //
+
332 });
+
333 polys.push_back({
+
334 {-0.42592594, 0.092592597}, //
+
335 {-0.438271612, 0.092592597}, //
+
336 {-0.462962955, 0.092592597}, //
+
337 {-0.462962955, 0.104938276}, //
+
338 {-0.462962955, 0.129629627}, //
+
339 {-0.450617284, 0.129629627}, //
+
340 {-0.42592594, 0.129629627}, //
+
341 {-0.42592594, 0.117283948}, //
+
342 });
+
343 TestPoly(polys, 99);
+
344}
+
345
+
346TEST(Polygon, SpongeMore) {
+
347 Polygons polys;
+
348 polys.push_back({
+
349 {-0.376543224, 0.0802469105}, //
+
350 {-0.277777791, 0.277777791}, //
+
351 {-0.388888896, 0.277777791}, //
+
352 });
+
353 polys.push_back({
+
354 {-0.364197552, 0.104938269}, //
+
355 {-0.376543224, 0.117283955}, //
+
356 {-0.364197552, 0.117283955}, //
+
357 });
+
358 polys.push_back({
+
359 {-0.364197552, 0.141975313}, //
+
360 {-0.376543224, 0.154320985}, //
+
361 {-0.364197552, 0.154320985}, //
+
362 });
+
363 polys.push_back({
+
364 {-0.339506179, 0.19135803}, //
+
365 {-0.327160507, 0.19135803}, //
+
366 {-0.327160507, 0.179012358}, //
+
367 });
+
368 polys.push_back({
+
369 {-0.314814836, 0.203703716}, //
+
370 {-0.351851851, 0.240740761}, //
+
371 {-0.314814836, 0.240740761}, //
+
372 });
+
373 TestPoly(polys, 21);
+
374}
+
375
+
376TEST(Polygon, Sponge3a) {
+
377 Polygons polys;
+
378 polys.push_back({
+
379 {0.5, -0.5}, //
+
380 {0.462962955, -0.462962955}, //
+
381 {0.462962955, -0.462962955}, //
+
382 {0.42592594, -0.462962955}, //
+
383 {0.42592594, -0.462962955}, //
+
384 {0.42592594, -0.462962955}, //
+
385 {0.42592594, -0.42592594}, //
+
386 {0.42592594, -0.42592594}, //
+
387 {0.388888896, -0.388888896}, //
+
388 {0.388888896, -0.388888896}, //
+
389 {0.388888896, -0.388888896}, //
+
390 {0.388888896, -0.388888896}, //
+
391 {0.277777791, -0.388888896}, //
+
392 {0.277777791, -0.388888896}, //
+
393 {0.277777791, -0.388888896}, //
+
394 {0.277777791, -0.388888896}, //
+
395 {0.277777791, -0.388888896}, //
+
396 {0.277777791, -0.388888896}, //
+
397 {0.277777791, -0.277777791}, //
+
398 {0.277777791, -0.277777791}, //
+
399 {0.277777791, -0.277777791}, //
+
400 {0.277777791, -0.277777791}, //
+
401 {0.240740746, -0.240740761}, //
+
402 {0.203703716, -0.240740761}, //
+
403 {0.203703716, -0.240740761}, //
+
404 {0.203703716, -0.240740761}, //
+
405 {0.203703716, -0.203703716}, //
+
406 {0.203703731, -0.203703716}, //
+
407 {0.166666657, -0.166666672}, //
+
408 {0.166666657, -0.166666672}, //
+
409 {0.166666657, -0.166666672}, //
+
410 {0.166666657, -0.166666672}, //
+
411 {0.166666657, -0.166666672}, //
+
412 {0.166666657, -0.166666672}, //
+
413 {-0.166666672, -0.166666672}, //
+
414 {-0.166666672, -0.166666672}, //
+
415 {-0.166666672, -0.166666672}, //
+
416 {-0.166666672, -0.166666672}, //
+
417 {-0.166666672, -0.166666672}, //
+
418 {-0.166666672, -0.166666672}, //
+
419 {-0.166666672, -0.166666672}, //
+
420 {-0.166666672, -0.166666672}, //
+
421 {-0.166666672, -0.166666672}, //
+
422 {-0.166666672, -0.166666672}, //
+
423 {-0.166666672, -0.166666672}, //
+
424 {-0.166666672, -0.166666672}, //
+
425 {-0.166666672, -0.166666672}, //
+
426 {-0.166666672, -0.166666672}, //
+
427 {-0.166666672, 0.166666672}, //
+
428 {-0.166666672, 0.166666672}, //
+
429 {-0.166666672, 0.166666672}, //
+
430 {-0.166666672, 0.166666672}, //
+
431 {-0.166666672, 0.166666672}, //
+
432 {-0.166666672, 0.166666672}, //
+
433 {-0.166666672, 0.166666672}, //
+
434 {-0.166666672, 0.166666672}, //
+
435 {-0.166666672, 0.166666672}, //
+
436 {-0.166666672, 0.166666672}, //
+
437 {-0.166666672, 0.166666672}, //
+
438 {-0.166666672, 0.166666672}, //
+
439 {-0.166666657, 0.166666672}, //
+
440 {-0.203703731, 0.203703716}, //
+
441 {-0.240740761, 0.203703716}, //
+
442 {-0.240740761, 0.203703716}, //
+
443 {-0.240740761, 0.203703716}, //
+
444 {-0.240740761, 0.240740761}, //
+
445 {-0.240740746, 0.240740761}, //
+
446 {-0.277777791, 0.277777791}, //
+
447 {-0.277777791, 0.277777791}, //
+
448 {-0.277777791, 0.277777791}, //
+
449 {-0.388888896, 0.277777791}, //
+
450 {-0.388888896, 0.277777791}, //
+
451 {-0.388888896, 0.277777791}, //
+
452 {-0.388888896, 0.277777791}, //
+
453 {-0.388888896, 0.277777791}, //
+
454 {-0.388888896, 0.277777791}, //
+
455 {-0.388888896, 0.388888896}, //
+
456 {-0.388888896, 0.388888896}, //
+
457 {-0.42592594, 0.42592594}, //
+
458 {-0.462962955, 0.42592594}, //
+
459 {-0.462962955, 0.42592594}, //
+
460 {-0.462962955, 0.42592594}, //
+
461 {-0.462962955, 0.462962955}, //
+
462 {-0.5, 0.5}, //
+
463 {-0.5, -0.5}, //
+
464 });
+
465 polys.push_back({
+
466 {0.351851851, -0.462962955}, //
+
467 {0.351851851, -0.462962955}, //
+
468 {0.314814836, -0.462962955}, //
+
469 {0.314814836, -0.462962955}, //
+
470 {0.314814836, -0.42592594}, //
+
471 {0.314814836, -0.42592594}, //
+
472 {0.351851851, -0.42592594}, //
+
473 {0.351851851, -0.42592594}, //
+
474 });
+
475 polys.push_back({
+
476 {0.240740761, -0.462962955}, //
+
477 {0.203703716, -0.462962955}, //
+
478 {0.203703716, -0.462962955}, //
+
479 {0.203703716, -0.462962955}, //
+
480 {0.203703716, -0.42592594}, //
+
481 {0.240740761, -0.42592594}, //
+
482 {0.240740761, -0.42592594}, //
+
483 {0.240740761, -0.42592594}, //
+
484 });
+
485 polys.push_back({
+
486 {0.129629627, -0.462962955}, //
+
487 {0.129629627, -0.462962955}, //
+
488 {0.092592597, -0.462962955}, //
+
489 {0.092592597, -0.462962955}, //
+
490 {0.092592597, -0.42592594}, //
+
491 {0.092592597, -0.42592594}, //
+
492 {0.129629627, -0.42592594}, //
+
493 {0.129629627, -0.42592594}, //
+
494 });
+
495 polys.push_back({
+
496 {0.240740761, -0.351851851}, //
+
497 {0.203703716, -0.351851851}, //
+
498 {0.203703716, -0.351851851}, //
+
499 {0.203703716, -0.351851851}, //
+
500 {0.203703716, -0.314814836}, //
+
501 {0.240740761, -0.314814836}, //
+
502 {0.240740761, -0.314814836}, //
+
503 {0.240740761, -0.314814836}, //
+
504 });
+
505 polys.push_back({
+
506 {0.129629627, -0.351851851}, //
+
507 {0.092592597, -0.351851851}, //
+
508 {0.092592597, -0.351851851}, //
+
509 {0.092592597, -0.314814836}, //
+
510 {0.092592597, -0.314814836}, //
+
511 {0.129629627, -0.314814836}, //
+
512 {0.129629627, -0.314814836}, //
+
513 {0.129629627, -0.351851851}, //
+
514 });
+
515 polys.push_back({
+
516 {0.0185185187, -0.462962955}, //
+
517 {0.0185185187, -0.462962955}, //
+
518 {-0.0185185187, -0.462962955}, //
+
519 {-0.0185185187, -0.462962955}, //
+
520 {-0.0185185187, -0.42592594}, //
+
521 {-0.0185185187, -0.42592594}, //
+
522 {0.0185185187, -0.42592594}, //
+
523 {0.0185185187, -0.42592594}, //
+
524 });
+
525 polys.push_back({
+
526 {0.055555556, -0.388888896}, //
+
527 {0.055555556, -0.388888896}, //
+
528 {0.055555556, -0.388888896}, //
+
529 {-0.055555556, -0.388888896}, //
+
530 {-0.055555556, -0.388888896}, //
+
531 {-0.055555556, -0.388888896}, //
+
532 {-0.055555556, -0.388888896}, //
+
533 {-0.055555556, -0.388888896}, //
+
534 {-0.055555556, -0.388888896}, //
+
535 {-0.055555556, -0.277777791}, //
+
536 {-0.055555556, -0.277777791}, //
+
537 {-0.055555556, -0.277777791}, //
+
538 {-0.055555556, -0.277777791}, //
+
539 {-0.055555556, -0.277777791}, //
+
540 {-0.055555556, -0.277777791}, //
+
541 {0.055555556, -0.277777791}, //
+
542 {0.055555556, -0.277777791}, //
+
543 {0.055555556, -0.277777791}, //
+
544 {0.055555556, -0.277777791}, //
+
545 {0.055555556, -0.277777791}, //
+
546 {0.055555556, -0.388888896}, //
+
547 {0.055555556, -0.388888896}, //
+
548 {0.055555556, -0.388888896}, //
+
549 });
+
550 polys.push_back({
+
551 {0.129629627, -0.240740761}, //
+
552 {0.092592597, -0.240740761}, //
+
553 {0.092592597, -0.240740761}, //
+
554 {0.092592597, -0.203703716}, //
+
555 {0.092592597, -0.203703716}, //
+
556 {0.129629627, -0.203703716}, //
+
557 {0.129629627, -0.203703716}, //
+
558 {0.129629627, -0.240740761}, //
+
559 });
+
560 polys.push_back({
+
561 {0.0185185187, -0.240740761}, //
+
562 {-0.0185185187, -0.240740761}, //
+
563 {-0.0185185187, -0.240740761}, //
+
564 {-0.0185185187, -0.203703716}, //
+
565 {-0.0185185187, -0.203703716}, //
+
566 {0.0185185187, -0.203703716}, //
+
567 {0.0185185187, -0.203703716}, //
+
568 {0.0185185187, -0.240740761}, //
+
569 });
+
570 polys.push_back({
+
571 {-0.092592597, -0.462962955}, //
+
572 {-0.092592597, -0.462962955}, //
+
573 {-0.129629627, -0.462962955}, //
+
574 {-0.129629627, -0.462962955}, //
+
575 {-0.129629627, -0.42592594}, //
+
576 {-0.129629627, -0.42592594}, //
+
577 {-0.092592597, -0.42592594}, //
+
578 {-0.092592597, -0.42592594}, //
+
579 });
+
580 polys.push_back({
+
581 {-0.092592597, -0.351851851}, //
+
582 {-0.129629627, -0.351851851}, //
+
583 {-0.129629627, -0.351851851}, //
+
584 {-0.129629627, -0.314814836}, //
+
585 {-0.129629627, -0.314814836}, //
+
586 {-0.092592597, -0.314814836}, //
+
587 {-0.092592597, -0.314814836}, //
+
588 {-0.092592597, -0.351851851}, //
+
589 });
+
590 polys.push_back({
+
591 {-0.203703716, -0.462962955}, //
+
592 {-0.240740761, -0.462962955}, //
+
593 {-0.240740761, -0.462962955}, //
+
594 {-0.240740761, -0.462962955}, //
+
595 {-0.240740761, -0.42592594}, //
+
596 {-0.203703716, -0.42592594}, //
+
597 {-0.203703716, -0.42592594}, //
+
598 {-0.203703716, -0.42592594}, //
+
599 });
+
600 polys.push_back({
+
601 {-0.203703716, -0.351851851}, //
+
602 {-0.240740761, -0.351851851}, //
+
603 {-0.240740761, -0.351851851}, //
+
604 {-0.240740761, -0.351851851}, //
+
605 {-0.240740761, -0.314814836}, //
+
606 {-0.203703716, -0.314814836}, //
+
607 {-0.203703716, -0.314814836}, //
+
608 {-0.203703716, -0.314814836}, //
+
609 });
+
610 polys.push_back({
+
611 {-0.092592597, -0.240740761}, //
+
612 {-0.129629627, -0.240740761}, //
+
613 {-0.129629627, -0.240740761}, //
+
614 {-0.129629627, -0.203703716}, //
+
615 {-0.129629627, -0.203703716}, //
+
616 {-0.092592597, -0.203703716}, //
+
617 {-0.092592597, -0.203703716}, //
+
618 {-0.092592597, -0.240740761}, //
+
619 });
+
620 polys.push_back({
+
621 {-0.203703716, -0.240740761}, //
+
622 {-0.240740761, -0.240740761}, //
+
623 {-0.240740761, -0.240740761}, //
+
624 {-0.240740761, -0.240740761}, //
+
625 {-0.240740761, -0.203703716}, //
+
626 {-0.203703716, -0.203703716}, //
+
627 {-0.203703716, -0.203703716}, //
+
628 {-0.203703716, -0.203703716}, //
+
629 });
+
630 polys.push_back({
+
631 {-0.240740761, -0.129629627}, //
+
632 {-0.240740761, -0.129629627}, //
+
633 {-0.240740761, -0.092592597}, //
+
634 {-0.203703716, -0.092592597}, //
+
635 {-0.203703716, -0.092592597}, //
+
636 {-0.203703716, -0.092592597}, //
+
637 {-0.203703716, -0.129629627}, //
+
638 {-0.240740761, -0.129629627}, //
+
639 });
+
640 polys.push_back({
+
641 {-0.203703716, -0.0185185187}, //
+
642 {-0.240740761, -0.0185185187}, //
+
643 {-0.240740761, -0.0185185187}, //
+
644 {-0.240740761, -0.0185185187}, //
+
645 {-0.240740761, 0.0185185187}, //
+
646 {-0.203703716, 0.0185185187}, //
+
647 {-0.203703716, 0.0185185187}, //
+
648 {-0.203703716, 0.0185185187}, //
+
649 });
+
650 polys.push_back({
+
651 {-0.277777791, -0.388888896}, //
+
652 {-0.277777791, -0.388888896}, //
+
653 {-0.277777791, -0.388888896}, //
+
654 {-0.388888896, -0.388888896}, //
+
655 {-0.388888896, -0.388888896}, //
+
656 {-0.388888896, -0.388888896}, //
+
657 {-0.388888896, -0.388888896}, //
+
658 {-0.388888896, -0.388888896}, //
+
659 {-0.388888896, -0.388888896}, //
+
660 {-0.388888896, -0.388888896}, //
+
661 {-0.388888896, -0.277777791}, //
+
662 {-0.388888896, -0.277777791}, //
+
663 {-0.388888896, -0.277777791}, //
+
664 {-0.388888896, -0.277777791}, //
+
665 {-0.277777791, -0.277777791}, //
+
666 {-0.277777791, -0.277777791}, //
+
667 {-0.277777791, -0.277777791}, //
+
668 {-0.277777791, -0.277777791}, //
+
669 {-0.277777791, -0.277777791}, //
+
670 {-0.277777791, -0.388888896}, //
+
671 {-0.277777791, -0.388888896}, //
+
672 });
+
673 polys.push_back({
+
674 {-0.314814836, -0.462962955}, //
+
675 {-0.314814836, -0.462962955}, //
+
676 {-0.351851851, -0.462962955}, //
+
677 {-0.351851851, -0.462962955}, //
+
678 {-0.351851851, -0.42592594}, //
+
679 {-0.351851851, -0.42592594}, //
+
680 {-0.314814836, -0.42592594}, //
+
681 {-0.314814836, -0.42592594}, //
+
682 });
+
683 polys.push_back({
+
684 {-0.42592594, -0.462962955}, //
+
685 {-0.462962955, -0.462962955}, //
+
686 {-0.462962955, -0.462962955}, //
+
687 {-0.462962955, -0.462962955}, //
+
688 {-0.462962955, -0.42592594}, //
+
689 {-0.42592594, -0.42592594}, //
+
690 {-0.42592594, -0.42592594}, //
+
691 {-0.42592594, -0.42592594}, //
+
692 });
+
693 polys.push_back({
+
694 {-0.42592594, -0.351851851}, //
+
695 {-0.462962955, -0.351851851}, //
+
696 {-0.462962955, -0.351851851}, //
+
697 {-0.462962955, -0.351851851}, //
+
698 {-0.462962955, -0.314814836}, //
+
699 {-0.42592594, -0.314814836}, //
+
700 {-0.42592594, -0.314814836}, //
+
701 {-0.42592594, -0.314814836}, //
+
702 });
+
703 polys.push_back({
+
704 {-0.314814836, -0.240740761}, //
+
705 {-0.351851851, -0.240740761}, //
+
706 {-0.351851851, -0.240740761}, //
+
707 {-0.351851851, -0.203703716}, //
+
708 {-0.351851851, -0.203703716}, //
+
709 {-0.314814836, -0.203703716}, //
+
710 {-0.314814836, -0.203703716}, //
+
711 {-0.314814836, -0.240740761}, //
+
712 });
+
713 polys.push_back({
+
714 {-0.351851851, -0.129629627}, //
+
715 {-0.351851851, -0.092592597}, //
+
716 {-0.351851851, -0.092592597}, //
+
717 {-0.314814836, -0.092592597}, //
+
718 {-0.314814836, -0.092592597}, //
+
719 {-0.314814836, -0.129629627}, //
+
720 {-0.314814836, -0.129629627}, //
+
721 {-0.351851851, -0.129629627}, //
+
722 });
+
723 polys.push_back({
+
724 {-0.277777791, -0.055555556}, //
+
725 {-0.277777791, -0.055555556}, //
+
726 {-0.277777791, -0.055555556}, //
+
727 {-0.277777791, -0.055555556}, //
+
728 {-0.388888896, -0.055555556}, //
+
729 {-0.388888896, -0.055555556}, //
+
730 {-0.388888896, -0.055555556}, //
+
731 {-0.388888896, -0.055555556}, //
+
732 {-0.388888896, -0.055555556}, //
+
733 {-0.388888896, -0.055555556}, //
+
734 {-0.388888896, 0.055555556}, //
+
735 {-0.388888896, 0.055555556}, //
+
736 {-0.388888896, 0.055555556}, //
+
737 {-0.388888896, 0.055555556}, //
+
738 {-0.388888896, 0.055555556}, //
+
739 {-0.277777791, 0.055555556}, //
+
740 {-0.277777791, 0.055555556}, //
+
741 {-0.277777791, 0.055555556}, //
+
742 {-0.277777791, 0.055555556}, //
+
743 {-0.277777791, -0.055555556}, //
+
744 {-0.277777791, -0.055555556}, //
+
745 });
+
746 polys.push_back({
+
747 {-0.42592594, -0.240740761}, //
+
748 {-0.462962955, -0.240740761}, //
+
749 {-0.462962955, -0.240740761}, //
+
750 {-0.462962955, -0.240740761}, //
+
751 {-0.462962955, -0.203703716}, //
+
752 {-0.42592594, -0.203703716}, //
+
753 {-0.42592594, -0.203703716}, //
+
754 {-0.42592594, -0.203703716}, //
+
755 });
+
756 polys.push_back({
+
757 {-0.462962955, -0.129629627}, //
+
758 {-0.462962955, -0.129629627}, //
+
759 {-0.462962955, -0.092592597}, //
+
760 {-0.42592594, -0.092592597}, //
+
761 {-0.42592594, -0.092592597}, //
+
762 {-0.42592594, -0.092592597}, //
+
763 {-0.42592594, -0.129629627}, //
+
764 {-0.462962955, -0.129629627}, //
+
765 });
+
766 polys.push_back({
+
767 {-0.42592594, -0.0185185187}, //
+
768 {-0.462962955, -0.0185185187}, //
+
769 {-0.462962955, -0.0185185187}, //
+
770 {-0.462962955, -0.0185185187}, //
+
771 {-0.462962955, 0.0185185187}, //
+
772 {-0.42592594, 0.0185185187}, //
+
773 {-0.42592594, 0.0185185187}, //
+
774 {-0.42592594, 0.0185185187}, //
+
775 });
+
776 polys.push_back({
+
777 {-0.203703716, 0.092592597}, //
+
778 {-0.240740761, 0.092592597}, //
+
779 {-0.240740761, 0.092592597}, //
+
780 {-0.240740761, 0.092592597}, //
+
781 {-0.240740761, 0.129629627}, //
+
782 {-0.203703716, 0.129629627}, //
+
783 {-0.203703716, 0.129629627}, //
+
784 {-0.203703716, 0.129629627}, //
+
785 });
+
786 polys.push_back({
+
787 {-0.351851851, 0.092592597}, //
+
788 {-0.351851851, 0.129629627}, //
+
789 {-0.351851851, 0.129629627}, //
+
790 {-0.314814836, 0.129629627}, //
+
791 {-0.314814836, 0.129629627}, //
+
792 {-0.314814836, 0.092592597}, //
+
793 {-0.314814836, 0.092592597}, //
+
794 {-0.351851851, 0.092592597}, //
+
795 });
+
796 polys.push_back({
+
797 {-0.314814836, 0.203703716}, //
+
798 {-0.351851851, 0.203703716}, //
+
799 {-0.351851851, 0.203703716}, //
+
800 {-0.351851851, 0.240740761}, //
+
801 {-0.351851851, 0.240740761}, //
+
802 {-0.314814836, 0.240740761}, //
+
803 {-0.314814836, 0.240740761}, //
+
804 {-0.314814836, 0.203703716}, //
+
805 });
+
806 polys.push_back({
+
807 {-0.42592594, 0.092592597}, //
+
808 {-0.462962955, 0.092592597}, //
+
809 {-0.462962955, 0.092592597}, //
+
810 {-0.462962955, 0.092592597}, //
+
811 {-0.462962955, 0.129629627}, //
+
812 {-0.42592594, 0.129629627}, //
+
813 {-0.42592594, 0.129629627}, //
+
814 {-0.42592594, 0.129629627}, //
+
815 });
+
816 polys.push_back({
+
817 {-0.42592594, 0.203703716}, //
+
818 {-0.462962955, 0.203703716}, //
+
819 {-0.462962955, 0.203703716}, //
+
820 {-0.462962955, 0.203703716}, //
+
821 {-0.462962955, 0.240740761}, //
+
822 {-0.42592594, 0.240740761}, //
+
823 {-0.42592594, 0.240740761}, //
+
824 {-0.42592594, 0.240740761}, //
+
825 });
+
826 polys.push_back({
+
827 {-0.42592594, 0.314814836}, //
+
828 {-0.462962955, 0.314814836}, //
+
829 {-0.462962955, 0.314814836}, //
+
830 {-0.462962955, 0.314814836}, //
+
831 {-0.462962955, 0.351851851}, //
+
832 {-0.42592594, 0.351851851}, //
+
833 {-0.42592594, 0.351851851}, //
+
834 {-0.42592594, 0.351851851}, //
+
835 });
+
836 TestPoly(polys, 454);
+
837}
+
838
+
839TEST(Polygon, BigSponge) {
+
840 Polygons polys;
+
841 polys.push_back({
+
842 {0.5, 0.5}, //
+
843 {0.487654328, 0.4876543283834}, //
+
844 {0.487654328, 0.4876543283869}, //
+
845 {0.487654328, 0.4753086573868}, //
+
846 {0.475308657, 0.4753086573870}, //
+
847 {0.475308657, 0.4753086573835}, //
+
848 {0.462962955, 0.4629629553833}, //
+
849 {0.462962955, 0.425925943857}, //
+
850 {0.42592594, 0.425925943830}, //
+
851 {0.413580239, 0.4135802393832}, //
+
852 {0.413580239, 0.4135802393861}, //
+
853 {0.413580239, 0.4012345673862}, //
+
854 {0.401234567, 0.4012345673863}, //
+
855 {0.401234567, 0.4012345673831}, //
+
856 {0.388888896, 0.3888888963836}, //
+
857 {0.388888896, 0.3888888963826}, //
+
858 {0.388888896, 0.2777777913834}, //
+
859 {0.277777791, 0.2777777913842}, //
+
860 {0.277777791, 0.2777777913829}, //
+
861 {0.265432119, 0.2654321193827}, //
+
862 {0.265432119, 0.2654321193840}, //
+
863 {0.265432119, 0.2530864483839}, //
+
864 {0.253086448, 0.2530864483841}, //
+
865 {0.253086448, 0.2530864483828}, //
+
866 {0.240740746, 0.2407407463824}, //
+
867 {0.240740761, 0.2407407463783}, //
+
868 {0.240740761, 0.2037037163781}, //
+
869 {0.203703731, 0.2037037163784}, //
+
870 {0.203703731, 0.2037037463825}, //
+
871 {0.19135803, 0.191358033823}, //
+
872 {0.19135803, 0.191358033782}, //
+
873 {0.19135803, 0.1790123583776}, //
+
874 {0.179012358, 0.1790123583785}, //
+
875 {0.179012358, 0.1790123583826}, //
+
876 {0.166666672, 0.1666666573822}, //
+
877 {0.166666672, -0.1666666723546}, //
+
878 {-0.166666672, -0.1666666723871}, //
+
879 {-0.166666672, -0.1666666573837}, //
+
880 {-0.179012358, -0.1790123583818}, //
+
881 {-0.179012358, -0.191358033565}, //
+
882 {-0.19135803, -0.191358033820}, //
+
883 {-0.203703731, -0.2037037313821}, //
+
884 {-0.203703716, -0.2037037313562}, //
+
885 {-0.203703716, -0.2407407613563}, //
+
886 {-0.240740746, -0.2407407613564}, //
+
887 {-0.240740746, -0.2407407313819}, //
+
888 {-0.253086448, -0.2530864483816}, //
+
889 {-0.253086448, -0.2654321193519}, //
+
890 {-0.265432119, -0.2654321193817}, //
+
891 {-0.277777791, -0.2777777913815}, //
+
892 {-0.277777791, -0.3888888963485}, //
+
893 {-0.388888896, -0.3888888963808}, //
+
894 {-0.401234567, -0.4012345673814}, //
+
895 {-0.401234567, -0.4135802393509}, //
+
896 {-0.413580239, -0.4135802393813}, //
+
897 {-0.42592594, -0.425925943809}, //
+
898 {-0.42592594, -0.4629629553504}, //
+
899 {-0.462962955, -0.4629629553810}, //
+
900 {-0.475308657, -0.4753086573811}, //
+
901 {-0.475308657, -0.4876543283505}, //
+
902 {-0.487654328, -0.4876543283812}, //
+
903 {-0.5, -0.5}, //
+
904 {0.5, -0.5}, //
+
905 });
+
906 polys.push_back({
+
907 {0.487654328, -0.4876543282702}, //
+
908 {0.475308657, -0.4876543282704}, //
+
909 {0.475308657, -0.4753086572705}, //
+
910 {0.487654328, -0.4753086572703}, //
+
911 });
+
912 polys.push_back({
+
913 {0.450617284, -0.4753086572706}, //
+
914 {0.450617284, -0.4876543282707}, //
+
915 {0.438271612, -0.4876543282709}, //
+
916 {0.438271612, -0.4753086572708}, //
+
917 });
+
918 polys.push_back({
+
919 {0.462962955, -0.4629629552710}, //
+
920 {0.42592591, -0.4629629552723}, //
+
921 {0.42592591, -0.425925912735}, //
+
922 {0.462962955, -0.425925912714}, //
+
923 });
+
924 polys.push_back({
+
925 {0.487654328, -0.4506172842711}, //
+
926 {0.475308657, -0.4506172842713}, //
+
927 {0.475308657, -0.4382716122715}, //
+
928 {0.487654328, -0.4382716122712}, //
+
929 });
+
930 polys.push_back({
+
931 {0.413580239, -0.4753086572716}, //
+
932 {0.413580239, -0.4876543282717}, //
+
933 {0.401234567, -0.4876543282718}, //
+
934 {0.401234567, -0.4753086572719}, //
+
935 });
+
936 polys.push_back({
+
937 {0.376543224, -0.4753086572720}, //
+
938 {0.376543224, -0.4876543282721}, //
+
939 {0.364197552, -0.4876543282756}, //
+
940 {0.364197552, -0.4753086572722}, //
+
941 });
+
942 polys.push_back({
+
943 {0.413580239, -0.4382716122724}, //
+
944 {0.413580239, -0.4506172842725}, //
+
945 {0.401234567, -0.4506172842726}, //
+
946 {0.401234567, -0.4382716122727}, //
+
947 });
+
948 polys.push_back({
+
949 {0.376543224, -0.4506172842728}, //
+
950 {0.364197552, -0.4506172842762}, //
+
951 {0.364197552, -0.4382716122730}, //
+
952 {0.376543224, -0.4382716122729}, //
+
953 });
+
954 polys.push_back({
+
955 {0.487654328, -0.4135802392731}, //
+
956 {0.475308657, -0.4135802392733}, //
+
957 {0.475308657, -0.4012345672734}, //
+
958 {0.487654328, -0.4012345672732}, //
+
959 });
+
960 polys.push_back({
+
961 {0.450617284, -0.4135802392736}, //
+
962 {0.438271612, -0.4135802392739}, //
+
963 {0.438271612, -0.4012345672738}, //
+
964 {0.450617284, -0.4012345672737}, //
+
965 });
+
966 polys.push_back({
+
967 {0.487654328, -0.3765432242740}, //
+
968 {0.475308657, -0.3765432242742}, //
+
969 {0.475308657, -0.3641975522799}, //
+
970 {0.487654328, -0.3641975522741}, //
+
971 });
+
972 polys.push_back({
+
973 {0.450617284, -0.3765432242743}, //
+
974 {0.438271612, -0.3765432242745}, //
+
975 {0.438271612, -0.3641975522801}, //
+
976 {0.450617284, -0.3641975522744}, //
+
977 });
+
978 polys.push_back({
+
979 {0.413580239, -0.4135802392746}, //
+
980 {0.401234567, -0.4135802392748}, //
+
981 {0.401234567, -0.4012345672749}, //
+
982 {0.413580239, -0.4012345672747}, //
+
983 });
+
984 polys.push_back({
+
985 {0.376543224, -0.4135802392750}, //
+
986 {0.364197552, -0.4135802392781}, //
+
987 {0.364197552, -0.4012345672752}, //
+
988 {0.376543224, -0.4012345672751}, //
+
989 });
+
990 polys.push_back({
+
991 {0.413580239, -0.3641975522753}, //
+
992 {0.413580239, -0.3765432242754}, //
+
993 {0.401234567, -0.3765432242755}, //
+
994 {0.401234567, -0.3641975522808}, //
+
995 });
+
996 polys.push_back({
+
997 {0.339506179, -0.4753086572757}, //
+
998 {0.339506179, -0.4876543282758}, //
+
999 {0.327160507, -0.4876543282759}, //
+
1000 {0.327160507, -0.4753086572760}, //
+
1001 });
+
1002 polys.push_back({
+
1003 {0.351851851, -0.4629629552761}, //
+
1004 {0.314814806, -0.4629629552764}, //
+
1005 {0.314814806, -0.425925912783}, //
+
1006 {0.351851851, -0.425925912763}, //
+
1007 });
+
1008 polys.push_back({
+
1009 {0.302469134, -0.4753086572765}, //
+
1010 {0.302469134, -0.4876543282766}, //
+
1011 {0.290123463, -0.4876543282767}, //
+
1012 {0.290123463, -0.4753086572768}, //
+
1013 });
+
1014 polys.push_back({
+
1015 {0.265432119, -0.4876543282769}, //
+
1016 {0.253086448, -0.4876543282772}, //
+
1017 {0.253086448, -0.4753086572771}, //
+
1018 {0.265432119, -0.4753086572770}, //
+
1019 });
+
1020 polys.push_back({
+
1021 {0.302469134, -0.4506172842773}, //
+
1022 {0.290123463, -0.4506172842775}, //
+
1023 {0.290123463, -0.4382716122776}, //
+
1024 {0.302469134, -0.4382716122774}, //
+
1025 });
+
1026 polys.push_back({
+
1027 {0.265432119, -0.4506172842777}, //
+
1028 {0.253086448, -0.4506172842779}, //
+
1029 {0.253086448, -0.4382716122780}, //
+
1030 {0.265432119, -0.4382716122778}, //
+
1031 });
+
1032 polys.push_back({
+
1033 {0.339506179, -0.4012345672782}, //
+
1034 {0.339506179, -0.4135802392784}, //
+
1035 {0.327160507, -0.4135802392785}, //
+
1036 {0.327160507, -0.4012345672786}, //
+
1037 });
+
1038 polys.push_back({
+
1039 {0.388888896, -0.3888888962787}, //
+
1040 {0.277777791, -0.3888888962844}, //
+
1041 {0.277777791, -0.2777777912848}, //
+
1042 {0.388888896, -0.2777777912814}, //
+
1043 });
+
1044 polys.push_back({
+
1045 {0.302469134, -0.4135802392788}, //
+
1046 {0.290123463, -0.4135802392790}, //
+
1047 {0.290123463, -0.4012345672791}, //
+
1048 {0.302469134, -0.4012345672789}, //
+
1049 });
+
1050 polys.push_back({
+
1051 {0.265432119, -0.4135802392792}, //
+
1052 {0.253086448, -0.4135802392795}, //
+
1053 {0.253086448, -0.4012345672794}, //
+
1054 {0.265432119, -0.4012345672793}, //
+
1055 });
+
1056 polys.push_back({
+
1057 {0.265432119, -0.3765432242796}, //
+
1058 {0.253086448, -0.3765432242798}, //
+
1059 {0.253086448, -0.3641975522842}, //
+
1060 {0.265432119, -0.3641975522797}, //
+
1061 });
+
1062 polys.push_back({
+
1063 {0.487654328, -0.3395061792800}, //
+
1064 {0.475308657, -0.3395061792804}, //
+
1065 {0.475308657, -0.3271605072805}, //
+
1066 {0.487654328, -0.3271605072803}, //
+
1067 });
+
1068 polys.push_back({
+
1069 {0.462962955, -0.3518518512802}, //
+
1070 {0.42592591, -0.3518518512810}, //
+
1071 {0.42592591, -0.3148148062807}, //
+
1072 {0.462962955, -0.3148148062806}, //
+
1073 });
+
1074 polys.push_back({
+
1075 {0.413580239, -0.3395061792809}, //
+
1076 {0.401234567, -0.3395061792812}, //
+
1077 {0.401234567, -0.3271605072813}, //
+
1078 {0.413580239, -0.3271605072811}, //
+
1079 });
+
1080 polys.push_back({
+
1081 {0.487654328, -0.3024691342815}, //
+
1082 {0.475308657, -0.3024691342818}, //
+
1083 {0.475308657, -0.2901234632817}, //
+
1084 {0.487654328, -0.2901234632816}, //
+
1085 });
+
1086 polys.push_back({
+
1087 {0.450617284, -0.3024691342819}, //
+
1088 {0.438271612, -0.3024691342822}, //
+
1089 {0.438271612, -0.2901234632821}, //
+
1090 {0.450617284, -0.2901234632820}, //
+
1091 });
+
1092 polys.push_back({
+
1093 {0.487654328, -0.2654321192823}, //
+
1094 {0.475308657, -0.2654321192825}, //
+
1095 {0.475308657, -0.2530864482826}, //
+
1096 {0.487654328, -0.2530864482824}, //
+
1097 });
+
1098 polys.push_back({
+
1099 {0.450617284, -0.2530864482827}, //
+
1100 {0.450617284, -0.2654321192828}, //
+
1101 {0.438271612, -0.2654321192829}, //
+
1102 {0.438271612, -0.2530864482830}, //
+
1103 });
+
1104 polys.push_back({
+
1105 {0.413580239, -0.2901234632831}, //
+
1106 {0.413580239, -0.3024691342832}, //
+
1107 {0.401234567, -0.3024691342834}, //
+
1108 {0.401234567, -0.2901234632833}, //
+
1109 });
+
1110 polys.push_back({
+
1111 {0.413580239, -0.2530864482835}, //
+
1112 {0.413580239, -0.2654321192836}, //
+
1113 {0.401234567, -0.2654321192837}, //
+
1114 {0.401234567, -0.2530864482838}, //
+
1115 });
+
1116 polys.push_back({
+
1117 {0.376543224, -0.2530864482839}, //
+
1118 {0.376543224, -0.2654321192840}, //
+
1119 {0.364197552, -0.2654321192849}, //
+
1120 {0.364197552, -0.2530864482841}, //
+
1121 });
+
1122 polys.push_back({
+
1123 {0.265432119, -0.3395061792843}, //
+
1124 {0.253086448, -0.3395061792847}, //
+
1125 {0.253086448, -0.3271605072846}, //
+
1126 {0.265432119, -0.3271605072845}, //
+
1127 });
+
1128 polys.push_back({
+
1129 {0.339506179, -0.2530864482850}, //
+
1130 {0.339506179, -0.2654321192851}, //
+
1131 {0.327160507, -0.2654321192852}, //
+
1132 {0.327160507, -0.2530864482853}, //
+
1133 });
+
1134 polys.push_back({
+
1135 {0.265432119, -0.3024691342854}, //
+
1136 {0.253086448, -0.3024691342857}, //
+
1137 {0.253086448, -0.2901234632856}, //
+
1138 {0.265432119, -0.2901234632855}, //
+
1139 });
+
1140 polys.push_back({
+
1141 {0.302469134, -0.2530864482858}, //
+
1142 {0.302469134, -0.2654321192859}, //
+
1143 {0.290123463, -0.2654321192860}, //
+
1144 {0.290123463, -0.2530864482861}, //
+
1145 });
+
1146 polys.push_back({
+
1147 {0.265432119, -0.2654321192862}, //
+
1148 {0.253086448, -0.2654321192864}, //
+
1149 {0.253086448, -0.2530864482865}, //
+
1150 {0.265432119, -0.2530864482863}, //
+
1151 });
+
1152 polys.push_back({
+
1153 {0.228395075, -0.4876543282866}, //
+
1154 {0.216049403, -0.4876543282868}, //
+
1155 {0.216049403, -0.4753086572869}, //
+
1156 {0.228395075, -0.4753086572867}, //
+
1157 });
+
1158 polys.push_back({
+
1159 {0.240740761, -0.4629629552870}, //
+
1160 {0.203703731, -0.4629629552875}, //
+
1161 {0.203703731, -0.425925912890}, //
+
1162 {0.240740761, -0.425925912874}, //
+
1163 });
+
1164 polys.push_back({
+
1165 {0.19135803, -0.4753086572871}, //
+
1166 {0.19135803, -0.4876543282872}, //
+
1167 {0.179012358, -0.4876543282879}, //
+
1168 {0.179012358, -0.4753086572873}, //
+
1169 });
+
1170 polys.push_back({
+
1171 {0.19135803, -0.4506172842876}, //
+
1172 {0.179012358, -0.4506172842884}, //
+
1173 {0.179012358, -0.4382716122878}, //
+
1174 {0.19135803, -0.4382716122877}, //
+
1175 });
+
1176 polys.push_back({
+
1177 {0.154320985, -0.4753086572880}, //
+
1178 {0.154320985, -0.4876543282881}, //
+
1179 {0.141975313, -0.4876543282882}, //
+
1180 {0.141975313, -0.4753086572883}, //
+
1181 });
+
1182 polys.push_back({
+
1183 {0.154320985, -0.4382716122885}, //
+
1184 {0.154320985, -0.4506172842886}, //
+
1185 {0.141975313, -0.4506172842887}, //
+
1186 {0.141975313, -0.4382716122889}, //
+
1187 });
+
1188 polys.push_back({
+
1189 {0.129629627, -0.425925912888}, //
+
1190 {0.129629627, -0.4629629552916}, //
+
1191 {0.0925925896, -0.4629629552921}, //
+
1192 {0.0925925896, -0.425925912936}, //
+
1193 });
+
1194 polys.push_back({
+
1195 {0.228395075, -0.4135802392891}, //
+
1196 {0.216049403, -0.4135802392893}, //
+
1197 {0.216049403, -0.4012345672894}, //
+
1198 {0.228395075, -0.4012345672892}, //
+
1199 });
+
1200 polys.push_back({
+
1201 {0.19135803, -0.4135802392895}, //
+
1202 {0.179012358, -0.4135802392903}, //
+
1203 {0.179012358, -0.4012345672897}, //
+
1204 {0.19135803, -0.4012345672896}, //
+
1205 });
+
1206 polys.push_back({
+
1207 {0.228395075, -0.3765432242898}, //
+
1208 {0.216049403, -0.3765432242900}, //
+
1209 {0.216049403, -0.3641975522956}, //
+
1210 {0.228395075, -0.3641975522899}, //
+
1211 });
+
1212 polys.push_back({
+
1213 {0.19135803, -0.3765432242901}, //
+
1214 {0.179012358, -0.3765432242908}, //
+
1215 {0.179012358, -0.3641975522958}, //
+
1216 {0.19135803, -0.3641975522902}, //
+
1217 });
+
1218 polys.push_back({
+
1219 {0.154320985, -0.4012345672904}, //
+
1220 {0.154320985, -0.4135802392905}, //
+
1221 {0.141975313, -0.4135802392906}, //
+
1222 {0.141975313, -0.4012345672907}, //
+
1223 });
+
1224 polys.push_back({
+
1225 {0.154320985, -0.3641975522909}, //
+
1226 {0.154320985, -0.3765432242910}, //
+
1227 {0.141975313, -0.3765432242911}, //
+
1228 {0.141975313, -0.3641975522965}, //
+
1229 });
+
1230 polys.push_back({
+
1231 {0.117283955, -0.4753086572912}, //
+
1232 {0.117283955, -0.4876543282913}, //
+
1233 {0.104938276, -0.4876543282915}, //
+
1234 {0.104938276, -0.4753086572914}, //
+
1235 });
+
1236 polys.push_back({
+
1237 {0.0802469105, -0.4753086572917}, //
+
1238 {0.0802469105, -0.4876543282918}, //
+
1239 {0.0679012313, -0.4876543282919}, //
+
1240 {0.0679012313, -0.4753086572920}, //
+
1241 });
+
1242 polys.push_back({
+
1243 {0.0802469105, -0.4382716122922}, //
+
1244 {0.0802469105, -0.4506172842923}, //
+
1245 {0.0679012313, -0.4506172842924}, //
+
1246 {0.0679012313, -0.4382716122925}, //
+
1247 });
+
1248 polys.push_back({
+
1249 {0.0432098769, -0.4753086572926}, //
+
1250 {0.0432098769, -0.4876543282927}, //
+
1251 {0.0308641978, -0.4876543282928}, //
+
1252 {0.0308641978, -0.4753086572929}, //
+
1253 });
+
1254 polys.push_back({
+
1255 {0.00617283955, -0.4753086572930}, //
+
1256 {0.00617283955, -0.4876543283272}, //
+
1257 {-0.00617283955, -0.4876543283273}, //
+
1258 {-0.00617283955, -0.4753086573274}, //
+
1259 });
+
1260 polys.push_back({
+
1261 {0.0432098769, -0.4506172842931}, //
+
1262 {0.0308641978, -0.4506172842933}, //
+
1263 {0.0308641978, -0.4382716122934}, //
+
1264 {0.0432098769, -0.4382716122932}, //
+
1265 });
+
1266 polys.push_back({
+
1267 {0.0185185187, -0.425925912935}, //
+
1268 {0.0185185187, -0.4629629553275}, //
+
1269 {-0.0185185187, -0.4629629553280}, //
+
1270 {-0.0185185187, -0.425925913299}, //
+
1271 });
+
1272 polys.push_back({
+
1273 {0.117283955, -0.4135802392937}, //
+
1274 {0.104938276, -0.4135802392940}, //
+
1275 {0.104938276, -0.4012345672939}, //
+
1276 {0.117283955, -0.4012345672938}, //
+
1277 });
+
1278 polys.push_back({
+
1279 {0.0802469105, -0.4135802392941}, //
+
1280 {0.0679012313, -0.4135802392943}, //
+
1281 {0.0679012313, -0.4012345672944}, //
+
1282 {0.0802469105, -0.4012345672942}, //
+
1283 });
+
1284 polys.push_back({
+
1285 {0.117283955, -0.3765432242945}, //
+
1286 {0.104938276, -0.3765432242947}, //
+
1287 {0.104938276, -0.3641975522996}, //
+
1288 {0.117283955, -0.3641975522946}, //
+
1289 });
+
1290 polys.push_back({
+
1291 {0.0802469105, -0.3641975522948}, //
+
1292 {0.0802469105, -0.3765432242949}, //
+
1293 {0.0679012313, -0.3765432242950}, //
+
1294 {0.0679012313, -0.3641975522998}, //
+
1295 });
+
1296 polys.push_back({
+
1297 {0.0432098769, -0.4135802392951}, //
+
1298 {0.0308641978, -0.4135802392953}, //
+
1299 {0.0308641978, -0.4012345672954}, //
+
1300 {0.0432098769, -0.4012345672952}, //
+
1301 });
+
1302 polys.push_back({
+
1303 {0.00617283955, -0.4012345672955}, //
+
1304 {0.00617283955, -0.4135802393300}, //
+
1305 {-0.00617283955, -0.4135802393301}, //
+
1306 {-0.00617283955, -0.4012345673302}, //
+
1307 });
+
1308 polys.push_back({
+
1309 {0.240740761, -0.3518518512957}, //
+
1310 {0.203703731, -0.3518518512962}, //
+
1311 {0.203703731, -0.3148148062961}, //
+
1312 {0.240740761, -0.3148148062960}, //
+
1313 });
+
1314 polys.push_back({
+
1315 {0.19135803, -0.3395061792959}, //
+
1316 {0.179012358, -0.3395061792967}, //
+
1317 {0.179012358, -0.3271605072964}, //
+
1318 {0.19135803, -0.3271605072963}, //
+
1319 });
+
1320 polys.push_back({
+
1321 {0.154320985, -0.3395061792966}, //
+
1322 {0.141975313, -0.3395061792969}, //
+
1323 {0.141975313, -0.3271605072970}, //
+
1324 {0.154320985, -0.3271605072968}, //
+
1325 });
+
1326 polys.push_back({
+
1327 {0.129629627, -0.3148148062971}, //
+
1328 {0.129629627, -0.3518518512997}, //
+
1329 {0.0925925896, -0.3518518513000}, //
+
1330 {0.0925925896, -0.3148148063001}, //
+
1331 });
+
1332 polys.push_back({
+
1333 {0.228395075, -0.3024691342972}, //
+
1334 {0.216049403, -0.3024691342975}, //
+
1335 {0.216049403, -0.2901234632974}, //
+
1336 {0.228395075, -0.2901234632973}, //
+
1337 });
+
1338 polys.push_back({
+
1339 {0.19135803, -0.3024691342976}, //
+
1340 {0.179012358, -0.3024691342986}, //
+
1341 {0.179012358, -0.2901234632978}, //
+
1342 {0.19135803, -0.2901234632977}, //
+
1343 });
+
1344 polys.push_back({
+
1345 {0.228395075, -0.2654321192979}, //
+
1346 {0.216049403, -0.2654321192981}, //
+
1347 {0.216049403, -0.2530864482982}, //
+
1348 {0.228395075, -0.2530864482980}, //
+
1349 });
+
1350 polys.push_back({
+
1351 {0.19135803, -0.2530864482983}, //
+
1352 {0.19135803, -0.2654321192984}, //
+
1353 {0.179012358, -0.2654321192991}, //
+
1354 {0.179012358, -0.2530864482985}, //
+
1355 });
+
1356 polys.push_back({
+
1357 {0.154320985, -0.2901234632987}, //
+
1358 {0.154320985, -0.3024691342988}, //
+
1359 {0.141975313, -0.3024691342990}, //
+
1360 {0.141975313, -0.2901234632989}, //
+
1361 });
+
1362 polys.push_back({
+
1363 {0.154320985, -0.2530864482992}, //
+
1364 {0.154320985, -0.2654321192993}, //
+
1365 {0.141975313, -0.2654321192994}, //
+
1366 {0.141975313, -0.2530864482995}, //
+
1367 });
+
1368 polys.push_back({
+
1369 {0.0802469105, -0.3395061792999}, //
+
1370 {0.0679012313, -0.3395061793003}, //
+
1371 {0.0679012313, -0.3271605073004}, //
+
1372 {0.0802469105, -0.3271605073002}, //
+
1373 });
+
1374 polys.push_back({
+
1375 {0.055555556, -0.2777777913005}, //
+
1376 {0.055555556, -0.3888888963307}, //
+
1377 {-0.055555556, -0.3888888963369}, //
+
1378 {-0.055555556, -0.2777777913379}, //
+
1379 });
+
1380 polys.push_back({
+
1381 {0.117283955, -0.3024691343006}, //
+
1382 {0.104938276, -0.3024691343009}, //
+
1383 {0.104938276, -0.2901234633008}, //
+
1384 {0.117283955, -0.2901234633007}, //
+
1385 });
+
1386 polys.push_back({
+
1387 {0.0802469105, -0.2901234633010}, //
+
1388 {0.0802469105, -0.3024691343011}, //
+
1389 {0.0679012313, -0.3024691343013}, //
+
1390 {0.0679012313, -0.2901234633012}, //
+
1391 });
+
1392 polys.push_back({
+
1393 {0.117283955, -0.2530864483014}, //
+
1394 {0.117283955, -0.2654321193015}, //
+
1395 {0.104938276, -0.2654321193016}, //
+
1396 {0.104938276, -0.2530864483017}, //
+
1397 });
+
1398 polys.push_back({
+
1399 {0.0802469105, -0.2530864483018}, //
+
1400 {0.0802469105, -0.2654321193019}, //
+
1401 {0.0679012313, -0.2654321193020}, //
+
1402 {0.0679012313, -0.2530864483021}, //
+
1403 });
+
1404 polys.push_back({
+
1405 {0.0432098769, -0.2530864483022}, //
+
1406 {0.0432098769, -0.2654321193023}, //
+
1407 {0.0308641978, -0.2654321193024}, //
+
1408 {0.0308641978, -0.2530864483025}, //
+
1409 });
+
1410 polys.push_back({
+
1411 {0.00617283955, -0.2530864483026}, //
+
1412 {0.00617283955, -0.2654321193380}, //
+
1413 {-0.00617283955, -0.2654321193381}, //
+
1414 {-0.00617283955, -0.2530864483382}, //
+
1415 });
+
1416 polys.push_back({
+
1417 {0.487654328, -0.2283950753027}, //
+
1418 {0.475308657, -0.2283950753029}, //
+
1419 {0.475308657, -0.2160494033030}, //
+
1420 {0.487654328, -0.2160494033028}, //
+
1421 });
+
1422 polys.push_back({
+
1423 {0.462962955, -0.2037037313031}, //
+
1424 {0.462962955, -0.2407407613032}, //
+
1425 {0.42592591, -0.2407407613040}, //
+
1426 {0.42592591, -0.2037037313036}, //
+
1427 });
+
1428 polys.push_back({
+
1429 {0.487654328, -0.191358033033}, //
+
1430 {0.475308657, -0.191358033035}, //
+
1431 {0.475308657, -0.1790123583053}, //
+
1432 {0.487654328, -0.1790123583034}, //
+
1433 });
+
1434 polys.push_back({
+
1435 {0.450617284, -0.191358033037}, //
+
1436 {0.438271612, -0.191358033039}, //
+
1437 {0.438271612, -0.1790123583055}, //
+
1438 {0.450617284, -0.1790123583038}, //
+
1439 });
+
1440 polys.push_back({
+
1441 {0.413580239, -0.2160494033041}, //
+
1442 {0.413580239, -0.2283950753042}, //
+
1443 {0.401234567, -0.2283950753043}, //
+
1444 {0.401234567, -0.2160494033044}, //
+
1445 });
+
1446 polys.push_back({
+
1447 {0.376543224, -0.2160494033045}, //
+
1448 {0.376543224, -0.2283950753046}, //
+
1449 {0.364197552, -0.2283950753073}, //
+
1450 {0.364197552, -0.2160494033047}, //
+
1451 });
+
1452 polys.push_back({
+
1453 {0.413580239, -0.1790123583048}, //
+
1454 {0.413580239, -0.191358033049}, //
+
1455 {0.401234567, -0.191358033050}, //
+
1456 {0.401234567, -0.1790123583064}, //
+
1457 });
+
1458 polys.push_back({
+
1459 {0.376543224, -0.191358033051}, //
+
1460 {0.364197552, -0.191358033077}, //
+
1461 {0.364197552, -0.1790123583066}, //
+
1462 {0.376543224, -0.1790123583052}, //
+
1463 });
+
1464 polys.push_back({
+
1465 {0.487654328, -0.1543209853054}, //
+
1466 {0.475308657, -0.1543209853058}, //
+
1467 {0.475308657, -0.1419753133059}, //
+
1468 {0.487654328, -0.1419753133057}, //
+
1469 });
+
1470 polys.push_back({
+
1471 {0.450617284, -0.1543209853056}, //
+
1472 {0.438271612, -0.1543209853062}, //
+
1473 {0.438271612, -0.1419753133061}, //
+
1474 {0.450617284, -0.1419753133060}, //
+
1475 });
+
1476 polys.push_back({
+
1477 {0.462962955, -0.1296296273063}, //
+
1478 {0.42592591, -0.1296296273127}, //
+
1479 {0.42592591, -0.09259258963118}, //
+
1480 {0.462962955, -0.09259258963116}, //
+
1481 });
+
1482 polys.push_back({
+
1483 {0.413580239, -0.1543209853065}, //
+
1484 {0.401234567, -0.1543209853069}, //
+
1485 {0.401234567, -0.1419753133070}, //
+
1486 {0.413580239, -0.1419753133068}, //
+
1487 });
+
1488 polys.push_back({
+
1489 {0.376543224, -0.1543209853067}, //
+
1490 {0.364197552, -0.1543209853098}, //
+
1491 {0.364197552, -0.1419753133072}, //
+
1492 {0.376543224, -0.1419753133071}, //
+
1493 });
+
1494 polys.push_back({
+
1495 {0.351851851, -0.2037037313074}, //
+
1496 {0.351851851, -0.2407407613075}, //
+
1497 {0.314814806, -0.2407407613076}, //
+
1498 {0.314814806, -0.2037037313079}, //
+
1499 });
+
1500 polys.push_back({
+
1501 {0.339506179, -0.1790123583078}, //
+
1502 {0.339506179, -0.191358033080}, //
+
1503 {0.327160507, -0.191358033081}, //
+
1504 {0.327160507, -0.1790123583096}, //
+
1505 });
+
1506 polys.push_back({
+
1507 {0.302469134, -0.2160494033082}, //
+
1508 {0.302469134, -0.2283950753083}, //
+
1509 {0.290123463, -0.2283950753084}, //
+
1510 {0.290123463, -0.2160494033085}, //
+
1511 });
+
1512 polys.push_back({
+
1513 {0.265432119, -0.2283950753086}, //
+
1514 {0.253086448, -0.2283950753089}, //
+
1515 {0.253086448, -0.2160494033088}, //
+
1516 {0.265432119, -0.2160494033087}, //
+
1517 });
+
1518 polys.push_back({
+
1519 {0.302469134, -0.191358033090}, //
+
1520 {0.290123463, -0.191358033092}, //
+
1521 {0.290123463, -0.1790123583103}, //
+
1522 {0.302469134, -0.1790123583091}, //
+
1523 });
+
1524 polys.push_back({
+
1525 {0.265432119, -0.191358033093}, //
+
1526 {0.253086448, -0.191358033095}, //
+
1527 {0.253086448, -0.1790123583105}, //
+
1528 {0.265432119, -0.1790123583094}, //
+
1529 });
+
1530 polys.push_back({
+
1531 {0.339506179, -0.1543209853097}, //
+
1532 {0.327160507, -0.1543209853100}, //
+
1533 {0.327160507, -0.1419753133101}, //
+
1534 {0.339506179, -0.1419753133099}, //
+
1535 });
+
1536 polys.push_back({
+
1537 {0.351851851, -0.1296296273102}, //
+
1538 {0.314814806, -0.1296296273159}, //
+
1539 {0.314814806, -0.09259258963160}, //
+
1540 {0.351851851, -0.09259258963158}, //
+
1541 });
+
1542 polys.push_back({
+
1543 {0.302469134, -0.1543209853104}, //
+
1544 {0.290123463, -0.1543209853108}, //
+
1545 {0.290123463, -0.1419753133109}, //
+
1546 {0.302469134, -0.1419753133107}, //
+
1547 });
+
1548 polys.push_back({
+
1549 {0.265432119, -0.1543209853106}, //
+
1550 {0.253086448, -0.1543209853112}, //
+
1551 {0.253086448, -0.1419753133111}, //
+
1552 {0.265432119, -0.1419753133110}, //
+
1553 });
+
1554 polys.push_back({
+
1555 {0.487654328, -0.1172839553113}, //
+
1556 {0.475308657, -0.1172839553115}, //
+
1557 {0.475308657, -0.1049382763117}, //
+
1558 {0.487654328, -0.1049382763114}, //
+
1559 });
+
1560 polys.push_back({
+
1561 {0.487654328, -0.08024691053119}, //
+
1562 {0.475308657, -0.08024691053121}, //
+
1563 {0.475308657, -0.06790123133122}, //
+
1564 {0.487654328, -0.06790123133120}, //
+
1565 });
+
1566 polys.push_back({
+
1567 {0.450617284, -0.08024691053123}, //
+
1568 {0.438271612, -0.08024691053126}, //
+
1569 {0.438271612, -0.06790123133125}, //
+
1570 {0.450617284, -0.06790123133124}, //
+
1571 });
+
1572 polys.push_back({
+
1573 {0.413580239, -0.1049382763128}, //
+
1574 {0.413580239, -0.1172839553129}, //
+
1575 {0.401234567, -0.1172839553130}, //
+
1576 {0.401234567, -0.1049382763131}, //
+
1577 });
+
1578 polys.push_back({
+
1579 {0.376543224, -0.1172839553132}, //
+
1580 {0.364197552, -0.1172839553157}, //
+
1581 {0.364197552, -0.1049382763134}, //
+
1582 {0.376543224, -0.1049382763133}, //
+
1583 });
+
1584 polys.push_back({
+
1585 {0.413580239, -0.08024691053135}, //
+
1586 {0.401234567, -0.08024691053137}, //
+
1587 {0.401234567, -0.06790123133138}, //
+
1588 {0.413580239, -0.06790123133136}, //
+
1589 });
+
1590 polys.push_back({
+
1591 {0.376543224, -0.08024691053139}, //
+
1592 {0.364197552, -0.08024691053161}, //
+
1593 {0.364197552, -0.06790123133141}, //
+
1594 {0.376543224, -0.06790123133140}, //
+
1595 });
+
1596 polys.push_back({
+
1597 {0.487654328, -0.04320987693142}, //
+
1598 {0.475308657, -0.04320987693145}, //
+
1599 {0.475308657, -0.03086419783144}, //
+
1600 {0.487654328, -0.03086419783143}, //
+
1601 });
+
1602 polys.push_back({
+
1603 {0.450617284, -0.04320987693146}, //
+
1604 {0.438271612, -0.04320987693149}, //
+
1605 {0.438271612, -0.03086419783148}, //
+
1606 {0.450617284, -0.03086419783147}, //
+
1607 });
+
1608 polys.push_back({
+
1609 {0.487654328, -0.006172839553150}, //
+
1610 {0.475308657, -0.006172839553569}, //
+
1611 {0.475308657, 0.006172839553568}, //
+
1612 {0.487654328, 0.006172839553567}, //
+
1613 });
+
1614 polys.push_back({
+
1615 {0.462962955, -0.01851851873151}, //
+
1616 {0.42592591, -0.01851851873580}, //
+
1617 {0.42592591, 0.01851851873571}, //
+
1618 {0.462962955, 0.01851851873570}, //
+
1619 });
+
1620 polys.push_back({
+
1621 {0.413580239, -0.03086419783152}, //
+
1622 {0.413580239, -0.04320987693153}, //
+
1623 {0.401234567, -0.04320987693155}, //
+
1624 {0.401234567, -0.03086419783154}, //
+
1625 });
+
1626 polys.push_back({
+
1627 {0.413580239, -0.006172839553156}, //
+
1628 {0.401234567, -0.006172839553583}, //
+
1629 {0.401234567, 0.006172839553582}, //
+
1630 {0.413580239, 0.006172839553581}, //
+
1631 });
+
1632 polys.push_back({
+
1633 {0.339506179, -0.06790123133162}, //
+
1634 {0.339506179, -0.08024691053163}, //
+
1635 {0.327160507, -0.08024691053164}, //
+
1636 {0.327160507, -0.06790123133165}, //
+
1637 });
+
1638 polys.push_back({
+
1639 {0.302469134, -0.1172839553166}, //
+
1640 {0.290123463, -0.1172839553168}, //
+
1641 {0.290123463, -0.1049382763169}, //
+
1642 {0.302469134, -0.1049382763167}, //
+
1643 });
+
1644 polys.push_back({
+
1645 {0.265432119, -0.1172839553170}, //
+
1646 {0.253086448, -0.1172839553172}, //
+
1647 {0.253086448, -0.1049382763173}, //
+
1648 {0.265432119, -0.1049382763171}, //
+
1649 });
+
1650 polys.push_back({
+
1651 {0.302469134, -0.08024691053174}, //
+
1652 {0.290123463, -0.08024691053176}, //
+
1653 {0.290123463, -0.06790123133177}, //
+
1654 {0.302469134, -0.06790123133175}, //
+
1655 });
+
1656 polys.push_back({
+
1657 {0.265432119, -0.08024691053178}, //
+
1658 {0.253086448, -0.08024691053181}, //
+
1659 {0.253086448, -0.06790123133180}, //
+
1660 {0.265432119, -0.06790123133179}, //
+
1661 });
+
1662 polys.push_back({
+
1663 {0.388888896, -0.0555555563182}, //
+
1664 {0.277777791, -0.0555555563619}, //
+
1665 {0.277777791, 0.0555555563618}, //
+
1666 {0.388888896, 0.0555555563584}, //
+
1667 });
+
1668 polys.push_back({
+
1669 {0.265432119, -0.04320987693183}, //
+
1670 {0.253086448, -0.04320987693186}, //
+
1671 {0.253086448, -0.03086419783185}, //
+
1672 {0.265432119, -0.03086419783184}, //
+
1673 });
+
1674 polys.push_back({
+
1675 {0.265432119, -0.006172839553187}, //
+
1676 {0.253086448, -0.006172839553622}, //
+
1677 {0.253086448, 0.006172839553621}, //
+
1678 {0.265432119, 0.006172839553620}, //
+
1679 });
+
1680 polys.push_back({
+
1681 {0.240740761, -0.2407407613188}, //
+
1682 {0.203703731, -0.2407407613190}, //
+
1683 {0.203703731, -0.2037037313194}, //
+
1684 {0.240740761, -0.2037037313189}, //
+
1685 });
+
1686 polys.push_back({
+
1687 {0.19135803, -0.2160494033191}, //
+
1688 {0.19135803, -0.2283950753192}, //
+
1689 {0.179012358, -0.2283950753200}, //
+
1690 {0.179012358, -0.2160494033193}, //
+
1691 });
+
1692 polys.push_back({
+
1693 {0.228395075, -0.191358033195}, //
+
1694 {0.216049403, -0.191358033197}, //
+
1695 {0.216049403, -0.1790123583210}, //
+
1696 {0.228395075, -0.1790123583196}, //
+
1697 });
+
1698 polys.push_back({
+
1699 {0.19135803, -0.191358033198}, //
+
1700 {0.179012358, -0.191358033206}, //
+
1701 {0.179012358, -0.1790123583212}, //
+
1702 {0.19135803, -0.1790123583199}, //
+
1703 });
+
1704 polys.push_back({
+
1705 {0.154320985, -0.2160494033201}, //
+
1706 {0.154320985, -0.2283950753202}, //
+
1707 {0.141975313, -0.2283950753203}, //
+
1708 {0.141975313, -0.2160494033204}, //
+
1709 });
+
1710 polys.push_back({
+
1711 {0.129629627, -0.2037037313205}, //
+
1712 {0.129629627, -0.2407407613222}, //
+
1713 {0.0925925896, -0.2407407613223}, //
+
1714 {0.0925925896, -0.2037037313228}, //
+
1715 });
+
1716 polys.push_back({
+
1717 {0.154320985, -0.1790123583207}, //
+
1718 {0.154320985, -0.191358033208}, //
+
1719 {0.141975313, -0.191358033209}, //
+
1720 {0.141975313, -0.1790123583220}, //
+
1721 });
+
1722 polys.push_back({
+
1723 {0.228395075, -0.1543209853211}, //
+
1724 {0.216049403, -0.1543209853215}, //
+
1725 {0.216049403, -0.1419753133216}, //
+
1726 {0.228395075, -0.1419753133214}, //
+
1727 });
+
1728 polys.push_back({
+
1729 {0.19135803, -0.1543209853213}, //
+
1730 {0.179012358, -0.1543209853221}, //
+
1731 {0.179012358, -0.1419753133219}, //
+
1732 {0.19135803, -0.1419753133218}, //
+
1733 });
+
1734 polys.push_back({
+
1735 {0.240740761, -0.1296296273217}, //
+
1736 {0.203703731, -0.1296296273249}, //
+
1737 {0.203703731, -0.09259258963248}, //
+
1738 {0.240740761, -0.09259258963247}, //
+
1739 });
+
1740 polys.push_back({
+
1741 {0.0802469105, -0.2160494033224}, //
+
1742 {0.0802469105, -0.2283950753225}, //
+
1743 {0.0679012313, -0.2283950753226}, //
+
1744 {0.0679012313, -0.2160494033227}, //
+
1745 });
+
1746 polys.push_back({
+
1747 {0.117283955, -0.191358033229}, //
+
1748 {0.104938276, -0.191358033231}, //
+
1749 {0.104938276, -0.1790123583244}, //
+
1750 {0.117283955, -0.1790123583230}, //
+
1751 });
+
1752 polys.push_back({
+
1753 {0.0802469105, -0.1790123583232}, //
+
1754 {0.0802469105, -0.191358033233}, //
+
1755 {0.0679012313, -0.191358033234}, //
+
1756 {0.0679012313, -0.1790123583245}, //
+
1757 });
+
1758 polys.push_back({
+
1759 {0.0432098769, -0.2160494033235}, //
+
1760 {0.0432098769, -0.2283950753236}, //
+
1761 {0.0308641978, -0.2283950753237}, //
+
1762 {0.0308641978, -0.2160494033238}, //
+
1763 });
+
1764 polys.push_back({
+
1765 {0.0185185187, -0.2037037313239}, //
+
1766 {0.0185185187, -0.2407407613520}, //
+
1767 {-0.0185185187, -0.2407407613521}, //
+
1768 {-0.0185185187, -0.2037037313526}, //
+
1769 });
+
1770 polys.push_back({
+
1771 {0.0432098769, -0.191358033240}, //
+
1772 {0.0308641978, -0.191358033242}, //
+
1773 {0.0308641978, -0.1790123583246}, //
+
1774 {0.0432098769, -0.1790123583241}, //
+
1775 });
+
1776 polys.push_back({
+
1777 {0.00617283955, -0.1790123583243}, //
+
1778 {0.00617283955, -0.191358033527}, //
+
1779 {-0.00617283955, -0.191358033528}, //
+
1780 {-0.00617283955, -0.1790123583545}, //
+
1781 });
+
1782 polys.push_back({
+
1783 {0.19135803, -0.1172839553250}, //
+
1784 {0.179012358, -0.1172839553260}, //
+
1785 {0.179012358, -0.1049382763252}, //
+
1786 {0.19135803, -0.1049382763251}, //
+
1787 });
+
1788 polys.push_back({
+
1789 {0.228395075, -0.08024691053253}, //
+
1790 {0.216049403, -0.08024691053255}, //
+
1791 {0.216049403, -0.06790123133256}, //
+
1792 {0.228395075, -0.06790123133254}, //
+
1793 });
+
1794 polys.push_back({
+
1795 {0.19135803, -0.08024691053257}, //
+
1796 {0.179012358, -0.08024691053261}, //
+
1797 {0.179012358, -0.06790123133259}, //
+
1798 {0.19135803, -0.06790123133258}, //
+
1799 });
+
1800 polys.push_back({
+
1801 {0.228395075, -0.04320987693262}, //
+
1802 {0.216049403, -0.04320987693265}, //
+
1803 {0.216049403, -0.03086419783264}, //
+
1804 {0.228395075, -0.03086419783263}, //
+
1805 });
+
1806 polys.push_back({
+
1807 {0.19135803, -0.04320987693266}, //
+
1808 {0.179012358, -0.04320987693271}, //
+
1809 {0.179012358, -0.03086419783268}, //
+
1810 {0.19135803, -0.03086419783267}, //
+
1811 });
+
1812 polys.push_back({
+
1813 {0.240740761, -0.01851851873269}, //
+
1814 {0.203703731, -0.01851851873740}, //
+
1815 {0.203703731, 0.01851851873739}, //
+
1816 {0.240740761, 0.01851851873738}, //
+
1817 });
+
1818 polys.push_back({
+
1819 {0.19135803, -0.006172839553270}, //
+
1820 {0.179012358, -0.006172839553750}, //
+
1821 {0.179012358, 0.006172839553742}, //
+
1822 {0.19135803, 0.006172839553741}, //
+
1823 });
+
1824 polys.push_back({
+
1825 {-0.0308641978, -0.4876543283276}, //
+
1826 {-0.0432098769, -0.4876543283278}, //
+
1827 {-0.0432098769, -0.4753086573279}, //
+
1828 {-0.0308641978, -0.4753086573277}, //
+
1829 });
+
1830 polys.push_back({
+
1831 {-0.0308641978, -0.4506172843281}, //
+
1832 {-0.0432098769, -0.4506172843283}, //
+
1833 {-0.0432098769, -0.4382716123284}, //
+
1834 {-0.0308641978, -0.4382716123282}, //
+
1835 });
+
1836 polys.push_back({
+
1837 {-0.0679012388, -0.4753086573285}, //
+
1838 {-0.0679012388, -0.4876543283286}, //
+
1839 {-0.0802469179, -0.4876543283288}, //
+
1840 {-0.0802469179, -0.4753086573287}, //
+
1841 });
+
1842 polys.push_back({
+
1843 {-0.104938269, -0.4753086573289}, //
+
1844 {-0.104938269, -0.4876543283290}, //
+
1845 {-0.117283948, -0.4876543283291}, //
+
1846 {-0.117283948, -0.4753086573292}, //
+
1847 });
+
1848 polys.push_back({
+
1849 {-0.092592597, -0.4629629553293}, //
+
1850 {-0.129629642, -0.4629629553328}, //
+
1851 {-0.129629642, -0.425925913312}, //
+
1852 {-0.092592597, -0.425925913298}, //
+
1853 });
+
1854 polys.push_back({
+
1855 {-0.0679012388, -0.4506172843294}, //
+
1856 {-0.0802469179, -0.4506172843296}, //
+
1857 {-0.0802469179, -0.4382716123297}, //
+
1858 {-0.0679012388, -0.4382716123295}, //
+
1859 });
+
1860 polys.push_back({
+
1861 {-0.0308641978, -0.4135802393303}, //
+
1862 {-0.0432098769, -0.4135802393305}, //
+
1863 {-0.0432098769, -0.4012345673306}, //
+
1864 {-0.0308641978, -0.4012345673304}, //
+
1865 });
+
1866 polys.push_back({
+
1867 {-0.0679012388, -0.4135802393308}, //
+
1868 {-0.0802469179, -0.4135802393311}, //
+
1869 {-0.0802469179, -0.4012345673310}, //
+
1870 {-0.0679012388, -0.4012345673309}, //
+
1871 });
+
1872 polys.push_back({
+
1873 {-0.104938269, -0.4135802393313}, //
+
1874 {-0.117283948, -0.4135802393315}, //
+
1875 {-0.117283948, -0.4012345673316}, //
+
1876 {-0.104938269, -0.4012345673314}, //
+
1877 });
+
1878 polys.push_back({
+
1879 {-0.0679012388, -0.3765432243317}, //
+
1880 {-0.0802469179, -0.3765432243319}, //
+
1881 {-0.0802469179, -0.3641975523370}, //
+
1882 {-0.0679012388, -0.3641975523318}, //
+
1883 });
+
1884 polys.push_back({
+
1885 {-0.104938269, -0.3641975523320}, //
+
1886 {-0.104938269, -0.3765432243321}, //
+
1887 {-0.117283948, -0.3765432243322}, //
+
1888 {-0.117283948, -0.3641975523372}, //
+
1889 });
+
1890 polys.push_back({
+
1891 {-0.141975313, -0.4753086573323}, //
+
1892 {-0.141975313, -0.4876543283324}, //
+
1893 {-0.154320985, -0.4876543283326}, //
+
1894 {-0.154320985, -0.4753086573325}, //
+
1895 });
+
1896 polys.push_back({
+
1897 {-0.179012358, -0.4753086573327}, //
+
1898 {-0.179012358, -0.4876543283334}, //
+
1899 {-0.19135803, -0.4876543283335}, //
+
1900 {-0.19135803, -0.4753086573336}, //
+
1901 });
+
1902 polys.push_back({
+
1903 {-0.141975313, -0.4506172843329}, //
+
1904 {-0.154320985, -0.4506172843332}, //
+
1905 {-0.154320985, -0.4382716123331}, //
+
1906 {-0.141975313, -0.4382716123330}, //
+
1907 });
+
1908 polys.push_back({
+
1909 {-0.179012358, -0.4382716123333}, //
+
1910 {-0.179012358, -0.4506172843342}, //
+
1911 {-0.19135803, -0.4506172843343}, //
+
1912 {-0.19135803, -0.4382716123345}, //
+
1913 });
+
1914 polys.push_back({
+
1915 {-0.216049403, -0.4753086573337}, //
+
1916 {-0.216049403, -0.4876543283338}, //
+
1917 {-0.228395075, -0.4876543283339}, //
+
1918 {-0.228395075, -0.4753086573340}, //
+
1919 });
+
1920 polys.push_back({
+
1921 {-0.203703716, -0.4629629553341}, //
+
1922 {-0.240740746, -0.4629629553346}, //
+
1923 {-0.240740746, -0.425925913359}, //
+
1924 {-0.203703716, -0.425925913344}, //
+
1925 });
+
1926 polys.push_back({
+
1927 {-0.141975313, -0.4135802393347}, //
+
1928 {-0.154320985, -0.4135802393350}, //
+
1929 {-0.154320985, -0.4012345673349}, //
+
1930 {-0.141975313, -0.4012345673348}, //
+
1931 });
+
1932 polys.push_back({
+
1933 {-0.179012358, -0.4012345673351}, //
+
1934 {-0.179012358, -0.4135802393356}, //
+
1935 {-0.19135803, -0.4135802393357}, //
+
1936 {-0.19135803, -0.4012345673358}, //
+
1937 });
+
1938 polys.push_back({
+
1939 {-0.141975313, -0.3765432243352}, //
+
1940 {-0.154320985, -0.3765432243354}, //
+
1941 {-0.154320985, -0.3641975523403}, //
+
1942 {-0.141975313, -0.3641975523353}, //
+
1943 });
+
1944 polys.push_back({
+
1945 {-0.179012358, -0.3641975523355}, //
+
1946 {-0.179012358, -0.3765432243364}, //
+
1947 {-0.19135803, -0.3765432243365}, //
+
1948 {-0.19135803, -0.3641975523410}, //
+
1949 });
+
1950 polys.push_back({
+
1951 {-0.216049403, -0.4135802393360}, //
+
1952 {-0.228395075, -0.4135802393362}, //
+
1953 {-0.228395075, -0.4012345673363}, //
+
1954 {-0.216049403, -0.4012345673361}, //
+
1955 });
+
1956 polys.push_back({
+
1957 {-0.216049403, -0.3765432243366}, //
+
1958 {-0.228395075, -0.3765432243368}, //
+
1959 {-0.228395075, -0.3641975523412}, //
+
1960 {-0.216049403, -0.3641975523367}, //
+
1961 });
+
1962 polys.push_back({
+
1963 {-0.0679012388, -0.3395061793371}, //
+
1964 {-0.0802469179, -0.3395061793376}, //
+
1965 {-0.0802469179, -0.3271605073375}, //
+
1966 {-0.0679012388, -0.3271605073374}, //
+
1967 });
+
1968 polys.push_back({
+
1969 {-0.092592597, -0.3518518513373}, //
+
1970 {-0.129629642, -0.3518518513405}, //
+
1971 {-0.129629642, -0.3148148063378}, //
+
1972 {-0.092592597, -0.3148148063377}, //
+
1973 });
+
1974 polys.push_back({
+
1975 {-0.0308641978, -0.2654321193383}, //
+
1976 {-0.0432098769, -0.2654321193385}, //
+
1977 {-0.0432098769, -0.2530864483386}, //
+
1978 {-0.0308641978, -0.2530864483384}, //
+
1979 });
+
1980 polys.push_back({
+
1981 {-0.0679012388, -0.3024691343387}, //
+
1982 {-0.0802469179, -0.3024691343390}, //
+
1983 {-0.0802469179, -0.2901234633389}, //
+
1984 {-0.0679012388, -0.2901234633388}, //
+
1985 });
+
1986 polys.push_back({
+
1987 {-0.104938269, -0.2901234633391}, //
+
1988 {-0.104938269, -0.3024691343392}, //
+
1989 {-0.117283948, -0.3024691343394}, //
+
1990 {-0.117283948, -0.2901234633393}, //
+
1991 });
+
1992 polys.push_back({
+
1993 {-0.0679012388, -0.2530864483395}, //
+
1994 {-0.0679012388, -0.2654321193396}, //
+
1995 {-0.0802469179, -0.2654321193397}, //
+
1996 {-0.0802469179, -0.2530864483398}, //
+
1997 });
+
1998 polys.push_back({
+
1999 {-0.104938269, -0.2530864483399}, //
+
2000 {-0.104938269, -0.2654321193400}, //
+
2001 {-0.117283948, -0.2654321193401}, //
+
2002 {-0.117283948, -0.2530864483402}, //
+
2003 });
+
2004 polys.push_back({
+
2005 {-0.141975313, -0.3395061793404}, //
+
2006 {-0.154320985, -0.3395061793408}, //
+
2007 {-0.154320985, -0.3271605073407}, //
+
2008 {-0.141975313, -0.3271605073406}, //
+
2009 });
+
2010 polys.push_back({
+
2011 {-0.179012358, -0.3271605073409}, //
+
2012 {-0.179012358, -0.3395061793411}, //
+
2013 {-0.19135803, -0.3395061793414}, //
+
2014 {-0.19135803, -0.3271605073415}, //
+
2015 });
+
2016 polys.push_back({
+
2017 {-0.203703716, -0.3518518513413}, //
+
2018 {-0.240740746, -0.3518518513417}, //
+
2019 {-0.240740746, -0.3148148063418}, //
+
2020 {-0.203703716, -0.3148148063416}, //
+
2021 });
+
2022 polys.push_back({
+
2023 {-0.141975313, -0.3024691343419}, //
+
2024 {-0.154320985, -0.3024691343422}, //
+
2025 {-0.154320985, -0.2901234633421}, //
+
2026 {-0.141975313, -0.2901234633420}, //
+
2027 });
+
2028 polys.push_back({
+
2029 {-0.179012358, -0.2901234633423}, //
+
2030 {-0.179012358, -0.3024691343429}, //
+
2031 {-0.19135803, -0.3024691343431}, //
+
2032 {-0.19135803, -0.2901234633430}, //
+
2033 });
+
2034 polys.push_back({
+
2035 {-0.141975313, -0.2530864483424}, //
+
2036 {-0.141975313, -0.2654321193425}, //
+
2037 {-0.154320985, -0.2654321193427}, //
+
2038 {-0.154320985, -0.2530864483426}, //
+
2039 });
+
2040 polys.push_back({
+
2041 {-0.179012358, -0.2530864483428}, //
+
2042 {-0.179012358, -0.2654321193436}, //
+
2043 {-0.19135803, -0.2654321193437}, //
+
2044 {-0.19135803, -0.2530864483438}, //
+
2045 });
+
2046 polys.push_back({
+
2047 {-0.216049403, -0.3024691343432}, //
+
2048 {-0.228395075, -0.3024691343434}, //
+
2049 {-0.228395075, -0.2901234633435}, //
+
2050 {-0.216049403, -0.2901234633433}, //
+
2051 });
+
2052 polys.push_back({
+
2053 {-0.216049403, -0.2530864483439}, //
+
2054 {-0.216049403, -0.2654321193440}, //
+
2055 {-0.228395075, -0.2654321193441}, //
+
2056 {-0.228395075, -0.2530864483442}, //
+
2057 });
+
2058 polys.push_back({
+
2059 {-0.253086448, -0.4753086573443}, //
+
2060 {-0.253086448, -0.4876543283444}, //
+
2061 {-0.265432119, -0.4876543283445}, //
+
2062 {-0.265432119, -0.4753086573446}, //
+
2063 });
+
2064 polys.push_back({
+
2065 {-0.290123463, -0.4876543283447}, //
+
2066 {-0.302469134, -0.4876543283449}, //
+
2067 {-0.302469134, -0.4753086573450}, //
+
2068 {-0.290123463, -0.4753086573448}, //
+
2069 });
+
2070 polys.push_back({
+
2071 {-0.253086448, -0.4382716123451}, //
+
2072 {-0.253086448, -0.4506172843452}, //
+
2073 {-0.265432119, -0.4506172843453}, //
+
2074 {-0.265432119, -0.4382716123454}, //
+
2075 });
+
2076 polys.push_back({
+
2077 {-0.290123463, -0.4506172843455}, //
+
2078 {-0.302469134, -0.4506172843457}, //
+
2079 {-0.302469134, -0.4382716123458}, //
+
2080 {-0.290123463, -0.4382716123456}, //
+
2081 });
+
2082 polys.push_back({
+
2083 {-0.327160507, -0.4753086573459}, //
+
2084 {-0.327160507, -0.4876543283460}, //
+
2085 {-0.339506179, -0.4876543283463}, //
+
2086 {-0.339506179, -0.4753086573461}, //
+
2087 });
+
2088 polys.push_back({
+
2089 {-0.314814836, -0.4629629553462}, //
+
2090 {-0.351851881, -0.4629629553466}, //
+
2091 {-0.351851881, -0.425925913479}, //
+
2092 {-0.314814836, -0.425925913465}, //
+
2093 });
+
2094 polys.push_back({
+
2095 {-0.364197552, -0.4753086573464}, //
+
2096 {-0.364197552, -0.4876543283486}, //
+
2097 {-0.376543224, -0.4876543283487}, //
+
2098 {-0.376543224, -0.4753086573488}, //
+
2099 });
+
2100 polys.push_back({
+
2101 {-0.364197552, -0.4382716123467}, //
+
2102 {-0.364197552, -0.4506172843493}, //
+
2103 {-0.376543224, -0.4506172843494}, //
+
2104 {-0.376543224, -0.4382716123495}, //
+
2105 });
+
2106 polys.push_back({
+
2107 {-0.253086448, -0.4135802393468}, //
+
2108 {-0.265432119, -0.4135802393470}, //
+
2109 {-0.265432119, -0.4012345673471}, //
+
2110 {-0.253086448, -0.4012345673469}, //
+
2111 });
+
2112 polys.push_back({
+
2113 {-0.290123463, -0.4135802393472}, //
+
2114 {-0.302469134, -0.4135802393474}, //
+
2115 {-0.302469134, -0.4012345673475}, //
+
2116 {-0.290123463, -0.4012345673473}, //
+
2117 });
+
2118 polys.push_back({
+
2119 {-0.253086448, -0.3641975523476}, //
+
2120 {-0.253086448, -0.3765432243477}, //
+
2121 {-0.265432119, -0.3765432243478}, //
+
2122 {-0.265432119, -0.3641975523510}, //
+
2123 });
+
2124 polys.push_back({
+
2125 {-0.327160507, -0.4135802393480}, //
+
2126 {-0.339506179, -0.4135802393483}, //
+
2127 {-0.339506179, -0.4012345673482}, //
+
2128 {-0.327160507, -0.4012345673481}, //
+
2129 });
+
2130 polys.push_back({
+
2131 {-0.364197552, -0.4012345673484}, //
+
2132 {-0.364197552, -0.4135802393506}, //
+
2133 {-0.376543224, -0.4135802393507}, //
+
2134 {-0.376543224, -0.4012345673508}, //
+
2135 });
+
2136 polys.push_back({
+
2137 {-0.401234567, -0.4753086573489}, //
+
2138 {-0.401234567, -0.4876543283490}, //
+
2139 {-0.413580239, -0.4876543283492}, //
+
2140 {-0.413580239, -0.4753086573491}, //
+
2141 });
+
2142 polys.push_back({
+
2143 {-0.401234567, -0.4506172843496}, //
+
2144 {-0.413580239, -0.4506172843498}, //
+
2145 {-0.413580239, -0.4382716123499}, //
+
2146 {-0.401234567, -0.4382716123497}, //
+
2147 });
+
2148 polys.push_back({
+
2149 {-0.438271612, -0.4753086573500}, //
+
2150 {-0.438271612, -0.4876543283501}, //
+
2151 {-0.450617284, -0.4876543283502}, //
+
2152 {-0.450617284, -0.4753086573503}, //
+
2153 });
+
2154 polys.push_back({
+
2155 {-0.253086448, -0.3395061793511}, //
+
2156 {-0.265432119, -0.3395061793513}, //
+
2157 {-0.265432119, -0.3271605073514}, //
+
2158 {-0.253086448, -0.3271605073512}, //
+
2159 });
+
2160 polys.push_back({
+
2161 {-0.253086448, -0.2901234633515}, //
+
2162 {-0.253086448, -0.3024691343516}, //
+
2163 {-0.265432119, -0.3024691343517}, //
+
2164 {-0.265432119, -0.2901234633518}, //
+
2165 });
+
2166 polys.push_back({
+
2167 {-0.0308641978, -0.2283950753522}, //
+
2168 {-0.0432098769, -0.2283950753524}, //
+
2169 {-0.0432098769, -0.2160494033525}, //
+
2170 {-0.0308641978, -0.2160494033523}, //
+
2171 });
+
2172 polys.push_back({
+
2173 {-0.0308641978, -0.191358033529}, //
+
2174 {-0.0432098769, -0.191358033531}, //
+
2175 {-0.0432098769, -0.1790123583547}, //
+
2176 {-0.0308641978, -0.1790123583530}, //
+
2177 });
+
2178 polys.push_back({
+
2179 {-0.0679012388, -0.2160494033532}, //
+
2180 {-0.0679012388, -0.2283950753533}, //
+
2181 {-0.0802469179, -0.2283950753535}, //
+
2182 {-0.0802469179, -0.2160494033534}, //
+
2183 });
+
2184 polys.push_back({
+
2185 {-0.092592597, -0.2407407613536}, //
+
2186 {-0.129629642, -0.2407407613550}, //
+
2187 {-0.129629642, -0.2037037313541}, //
+
2188 {-0.092592597, -0.2037037313537}, //
+
2189 });
+
2190 polys.push_back({
+
2191 {-0.0679012388, -0.191358033538}, //
+
2192 {-0.0802469179, -0.191358033540}, //
+
2193 {-0.0802469179, -0.1790123583548}, //
+
2194 {-0.0679012388, -0.1790123583539}, //
+
2195 });
+
2196 polys.push_back({
+
2197 {-0.104938269, -0.1790123583542}, //
+
2198 {-0.104938269, -0.191358033543}, //
+
2199 {-0.117283948, -0.191358033544}, //
+
2200 {-0.117283948, -0.1790123583549}, //
+
2201 });
+
2202 polys.push_back({
+
2203 {-0.141975313, -0.2160494033551}, //
+
2204 {-0.141975313, -0.2283950753552}, //
+
2205 {-0.154320985, -0.2283950753554}, //
+
2206 {-0.154320985, -0.2160494033553}, //
+
2207 });
+
2208 polys.push_back({
+
2209 {-0.179012358, -0.2160494033555}, //
+
2210 {-0.179012358, -0.2283950753559}, //
+
2211 {-0.19135803, -0.2283950753560}, //
+
2212 {-0.19135803, -0.2160494033561}, //
+
2213 });
+
2214 polys.push_back({
+
2215 {-0.141975313, -0.191358033556}, //
+
2216 {-0.154320985, -0.191358033558}, //
+
2217 {-0.154320985, -0.1790123583566}, //
+
2218 {-0.141975313, -0.1790123583557}, //
+
2219 });
+
2220 polys.push_back({
+
2221 {0.487654328, 0.03086419783572}, //
+
2222 {0.475308657, 0.03086419783574}, //
+
2223 {0.475308657, 0.04320987693575}, //
+
2224 {0.487654328, 0.04320987693573}, //
+
2225 });
+
2226 polys.push_back({
+
2227 {0.450617284, 0.04320987693576}, //
+
2228 {0.450617284, 0.03086419783577}, //
+
2229 {0.438271612, 0.03086419783579}, //
+
2230 {0.438271612, 0.04320987693578}, //
+
2231 });
+
2232 polys.push_back({
+
2233 {0.413580239, 0.04320987693585}, //
+
2234 {0.413580239, 0.03086419783586}, //
+
2235 {0.401234567, 0.03086419783587}, //
+
2236 {0.401234567, 0.04320987693588}, //
+
2237 });
+
2238 polys.push_back({
+
2239 {0.487654328, 0.06790123883589}, //
+
2240 {0.475308657, 0.06790123883591}, //
+
2241 {0.475308657, 0.08024691793592}, //
+
2242 {0.487654328, 0.08024691793590}, //
+
2243 });
+
2244 polys.push_back({
+
2245 {0.450617284, 0.06790123883593}, //
+
2246 {0.438271612, 0.06790123883595}, //
+
2247 {0.438271612, 0.08024691793596}, //
+
2248 {0.450617284, 0.08024691793594}, //
+
2249 });
+
2250 polys.push_back({
+
2251 {0.487654328, 0.1049382693597}, //
+
2252 {0.475308657, 0.1049382693599}, //
+
2253 {0.475308657, 0.1172839483600}, //
+
2254 {0.487654328, 0.1172839483598}, //
+
2255 });
+
2256 polys.push_back({
+
2257 {0.462962955, 0.1296296423601}, //
+
2258 {0.462962955, 0.0925925973602}, //
+
2259 {0.42592591, 0.0925925973611}, //
+
2260 {0.42592591, 0.1296296423655}, //
+
2261 });
+
2262 polys.push_back({
+
2263 {0.413580239, 0.08024691793603}, //
+
2264 {0.413580239, 0.06790123883604}, //
+
2265 {0.401234567, 0.06790123883605}, //
+
2266 {0.401234567, 0.08024691793606}, //
+
2267 });
+
2268 polys.push_back({
+
2269 {0.376543224, 0.06790123883607}, //
+
2270 {0.364197552, 0.06790123883627}, //
+
2271 {0.364197552, 0.08024691793609}, //
+
2272 {0.376543224, 0.08024691793608}, //
+
2273 });
+
2274 polys.push_back({
+
2275 {0.413580239, 0.1049382693610}, //
+
2276 {0.401234567, 0.1049382693613}, //
+
2277 {0.401234567, 0.1172839483614}, //
+
2278 {0.413580239, 0.1172839483612}, //
+
2279 });
+
2280 polys.push_back({
+
2281 {0.376543224, 0.1049382693615}, //
+
2282 {0.364197552, 0.1049382693632}, //
+
2283 {0.364197552, 0.1172839483617}, //
+
2284 {0.376543224, 0.1172839483616}, //
+
2285 });
+
2286 polys.push_back({
+
2287 {0.265432119, 0.03086419783623}, //
+
2288 {0.253086448, 0.03086419783626}, //
+
2289 {0.253086448, 0.04320987693625}, //
+
2290 {0.265432119, 0.04320987693624}, //
+
2291 });
+
2292 polys.push_back({
+
2293 {0.339506179, 0.08024691793628}, //
+
2294 {0.339506179, 0.06790123883629}, //
+
2295 {0.327160507, 0.06790123883630}, //
+
2296 {0.327160507, 0.08024691793631}, //
+
2297 });
+
2298 polys.push_back({
+
2299 {0.351851851, 0.1296296423633}, //
+
2300 {0.351851851, 0.0925925973634}, //
+
2301 {0.314814806, 0.0925925973635}, //
+
2302 {0.314814806, 0.1296296423700}, //
+
2303 });
+
2304 polys.push_back({
+
2305 {0.302469134, 0.06790123883636}, //
+
2306 {0.290123463, 0.06790123883638}, //
+
2307 {0.290123463, 0.08024691793639}, //
+
2308 {0.302469134, 0.08024691793637}, //
+
2309 });
+
2310 polys.push_back({
+
2311 {0.265432119, 0.06790123883640}, //
+
2312 {0.253086448, 0.06790123883642}, //
+
2313 {0.253086448, 0.08024691793643}, //
+
2314 {0.265432119, 0.08024691793641}, //
+
2315 });
+
2316 polys.push_back({
+
2317 {0.302469134, 0.1049382693644}, //
+
2318 {0.290123463, 0.1049382693646}, //
+
2319 {0.290123463, 0.1172839483647}, //
+
2320 {0.302469134, 0.1172839483645}, //
+
2321 });
+
2322 polys.push_back({
+
2323 {0.265432119, 0.1049382693648}, //
+
2324 {0.253086448, 0.1049382693651}, //
+
2325 {0.253086448, 0.1172839483650}, //
+
2326 {0.265432119, 0.1172839483649}, //
+
2327 });
+
2328 polys.push_back({
+
2329 {0.487654328, 0.1419753133652}, //
+
2330 {0.475308657, 0.1419753133654}, //
+
2331 {0.475308657, 0.1543209853659}, //
+
2332 {0.487654328, 0.1543209853653}, //
+
2333 });
+
2334 polys.push_back({
+
2335 {0.450617284, 0.1419753133656}, //
+
2336 {0.438271612, 0.1419753133658}, //
+
2337 {0.438271612, 0.1543209853661}, //
+
2338 {0.450617284, 0.1543209853657}, //
+
2339 });
+
2340 polys.push_back({
+
2341 {0.487654328, 0.1790123583660}, //
+
2342 {0.475308657, 0.1790123583673}, //
+
2343 {0.475308657, 0.191358033674}, //
+
2344 {0.487654328, 0.191358033672}, //
+
2345 });
+
2346 polys.push_back({
+
2347 {0.450617284, 0.1790123583662}, //
+
2348 {0.438271612, 0.1790123583677}, //
+
2349 {0.438271612, 0.191358033676}, //
+
2350 {0.450617284, 0.191358033675}, //
+
2351 });
+
2352 polys.push_back({
+
2353 {0.413580239, 0.1543209853663}, //
+
2354 {0.413580239, 0.1419753133664}, //
+
2355 {0.401234567, 0.1419753133665}, //
+
2356 {0.401234567, 0.1543209853668}, //
+
2357 });
+
2358 polys.push_back({
+
2359 {0.376543224, 0.1419753133666}, //
+
2360 {0.364197552, 0.1419753133698}, //
+
2361 {0.364197552, 0.1543209853670}, //
+
2362 {0.376543224, 0.1543209853667}, //
+
2363 });
+
2364 polys.push_back({
+
2365 {0.413580239, 0.1790123583669}, //
+
2366 {0.401234567, 0.1790123583686}, //
+
2367 {0.401234567, 0.191358033687}, //
+
2368 {0.413580239, 0.191358033685}, //
+
2369 });
+
2370 polys.push_back({
+
2371 {0.376543224, 0.1790123583671}, //
+
2372 {0.364197552, 0.1790123583715}, //
+
2373 {0.364197552, 0.191358033689}, //
+
2374 {0.376543224, 0.191358033688}, //
+
2375 });
+
2376 polys.push_back({
+
2377 {0.462962955, 0.2037037163678}, //
+
2378 {0.42592591, 0.2037037163690}, //
+
2379 {0.42592591, 0.2407407463684}, //
+
2380 {0.462962955, 0.2407407463683}, //
+
2381 });
+
2382 polys.push_back({
+
2383 {0.487654328, 0.2160494033679}, //
+
2384 {0.475308657, 0.2160494033682}, //
+
2385 {0.475308657, 0.2283950753681}, //
+
2386 {0.487654328, 0.2283950753680}, //
+
2387 });
+
2388 polys.push_back({
+
2389 {0.413580239, 0.2283950753691}, //
+
2390 {0.413580239, 0.2160494033692}, //
+
2391 {0.401234567, 0.2160494033694}, //
+
2392 {0.401234567, 0.2283950753693}, //
+
2393 });
+
2394 polys.push_back({
+
2395 {0.376543224, 0.2160494033695}, //
+
2396 {0.364197552, 0.2160494033720}, //
+
2397 {0.364197552, 0.2283950753697}, //
+
2398 {0.376543224, 0.2283950753696}, //
+
2399 });
+
2400 polys.push_back({
+
2401 {0.339506179, 0.1543209853699}, //
+
2402 {0.339506179, 0.1419753133701}, //
+
2403 {0.327160507, 0.1419753133702}, //
+
2404 {0.327160507, 0.1543209853703}, //
+
2405 });
+
2406 polys.push_back({
+
2407 {0.339506179, 0.1790123583704}, //
+
2408 {0.327160507, 0.1790123583717}, //
+
2409 {0.327160507, 0.191358033718}, //
+
2410 {0.339506179, 0.191358033716}, //
+
2411 });
+
2412 polys.push_back({
+
2413 {0.302469134, 0.1419753133705}, //
+
2414 {0.290123463, 0.1419753133707}, //
+
2415 {0.290123463, 0.1543209853711}, //
+
2416 {0.302469134, 0.1543209853706}, //
+
2417 });
+
2418 polys.push_back({
+
2419 {0.265432119, 0.1419753133708}, //
+
2420 {0.253086448, 0.1419753133710}, //
+
2421 {0.253086448, 0.1543209853713}, //
+
2422 {0.265432119, 0.1543209853709}, //
+
2423 });
+
2424 polys.push_back({
+
2425 {0.302469134, 0.1790123583712}, //
+
2426 {0.290123463, 0.1790123583725}, //
+
2427 {0.290123463, 0.191358033726}, //
+
2428 {0.302469134, 0.191358033724}, //
+
2429 });
+
2430 polys.push_back({
+
2431 {0.265432119, 0.1790123583714}, //
+
2432 {0.253086448, 0.1790123583729}, //
+
2433 {0.253086448, 0.191358033728}, //
+
2434 {0.265432119, 0.191358033727}, //
+
2435 });
+
2436 polys.push_back({
+
2437 {0.351851851, 0.2037037163719}, //
+
2438 {0.314814806, 0.2037037163722}, //
+
2439 {0.314814806, 0.2407407463723}, //
+
2440 {0.351851851, 0.2407407463721}, //
+
2441 });
+
2442 polys.push_back({
+
2443 {0.302469134, 0.2160494033730}, //
+
2444 {0.290123463, 0.2160494033732}, //
+
2445 {0.290123463, 0.2283950753733}, //
+
2446 {0.302469134, 0.2283950753731}, //
+
2447 });
+
2448 polys.push_back({
+
2449 {0.265432119, 0.2160494033734}, //
+
2450 {0.253086448, 0.2160494033737}, //
+
2451 {0.253086448, 0.2283950753736}, //
+
2452 {0.265432119, 0.2283950753735}, //
+
2453 });
+
2454 polys.push_back({
+
2455 {0.228395075, 0.03086419783743}, //
+
2456 {0.216049403, 0.03086419783745}, //
+
2457 {0.216049403, 0.04320987693746}, //
+
2458 {0.228395075, 0.04320987693744}, //
+
2459 });
+
2460 polys.push_back({
+
2461 {0.19135803, 0.04320987693747}, //
+
2462 {0.19135803, 0.03086419783748}, //
+
2463 {0.179012358, 0.03086419783751}, //
+
2464 {0.179012358, 0.04320987693749}, //
+
2465 });
+
2466 polys.push_back({
+
2467 {0.228395075, 0.06790123883752}, //
+
2468 {0.216049403, 0.06790123883754}, //
+
2469 {0.216049403, 0.08024691793755}, //
+
2470 {0.228395075, 0.08024691793753}, //
+
2471 });
+
2472 polys.push_back({
+
2473 {0.19135803, 0.06790123883756}, //
+
2474 {0.179012358, 0.06790123883765}, //
+
2475 {0.179012358, 0.08024691793758}, //
+
2476 {0.19135803, 0.08024691793757}, //
+
2477 });
+
2478 polys.push_back({
+
2479 {0.240740761, 0.0925925973759}, //
+
2480 {0.203703731, 0.0925925973762}, //
+
2481 {0.203703731, 0.1296296423767}, //
+
2482 {0.240740761, 0.1296296423760}, //
+
2483 });
+
2484 polys.push_back({
+
2485 {0.19135803, 0.1049382693761}, //
+
2486 {0.179012358, 0.1049382693766}, //
+
2487 {0.179012358, 0.1172839483764}, //
+
2488 {0.19135803, 0.1172839483763}, //
+
2489 });
+
2490 polys.push_back({
+
2491 {0.228395075, 0.1419753133768}, //
+
2492 {0.216049403, 0.1419753133770}, //
+
2493 {0.216049403, 0.1543209853773}, //
+
2494 {0.228395075, 0.1543209853769}, //
+
2495 });
+
2496 polys.push_back({
+
2497 {0.19135803, 0.1419753133771}, //
+
2498 {0.179012358, 0.1419753133777}, //
+
2499 {0.179012358, 0.1543209853775}, //
+
2500 {0.19135803, 0.1543209853772}, //
+
2501 });
+
2502 polys.push_back({
+
2503 {0.228395075, 0.1790123583774}, //
+
2504 {0.216049403, 0.1790123583779}, //
+
2505 {0.216049403, 0.191358033780}, //
+
2506 {0.228395075, 0.191358033778}, //
+
2507 });
+
2508 polys.push_back({
+
2509 {0.487654328, 0.2530864483786}, //
+
2510 {0.475308657, 0.2530864483789}, //
+
2511 {0.475308657, 0.2654321193788}, //
+
2512 {0.487654328, 0.2654321193787}, //
+
2513 });
+
2514 polys.push_back({
+
2515 {0.450617284, 0.2530864483790}, //
+
2516 {0.438271612, 0.2530864483793}, //
+
2517 {0.438271612, 0.2654321193792}, //
+
2518 {0.450617284, 0.2654321193791}, //
+
2519 });
+
2520 polys.push_back({
+
2521 {0.487654328, 0.2901234633794}, //
+
2522 {0.475308657, 0.2901234633796}, //
+
2523 {0.475308657, 0.3024691343797}, //
+
2524 {0.487654328, 0.3024691343795}, //
+
2525 });
+
2526 polys.push_back({
+
2527 {0.450617284, 0.3024691343798}, //
+
2528 {0.450617284, 0.2901234633799}, //
+
2529 {0.438271612, 0.2901234633801}, //
+
2530 {0.438271612, 0.3024691343800}, //
+
2531 });
+
2532 polys.push_back({
+
2533 {0.413580239, 0.2530864483802}, //
+
2534 {0.401234567, 0.2530864483805}, //
+
2535 {0.401234567, 0.2654321193804}, //
+
2536 {0.413580239, 0.2654321193803}, //
+
2537 });
+
2538 polys.push_back({
+
2539 {0.376543224, 0.2530864483806}, //
+
2540 {0.364197552, 0.2530864483829}, //
+
2541 {0.364197552, 0.2654321193808}, //
+
2542 {0.376543224, 0.2654321193807}, //
+
2543 });
+
2544 polys.push_back({
+
2545 {0.413580239, 0.3024691343809}, //
+
2546 {0.413580239, 0.2901234633810}, //
+
2547 {0.401234567, 0.2901234633811}, //
+
2548 {0.401234567, 0.3024691343812}, //
+
2549 });
+
2550 polys.push_back({
+
2551 {0.487654328, 0.3271605073813}, //
+
2552 {0.475308657, 0.3271605073815}, //
+
2553 {0.475308657, 0.3395061793818}, //
+
2554 {0.487654328, 0.3395061793814}, //
+
2555 });
+
2556 polys.push_back({
+
2557 {0.462962955, 0.3518518813816}, //
+
2558 {0.462962955, 0.3148148363817}, //
+
2559 {0.42592591, 0.3148148363822}, //
+
2560 {0.42592591, 0.3518518813820}, //
+
2561 });
+
2562 polys.push_back({
+
2563 {0.487654328, 0.3641975523819}, //
+
2564 {0.475308657, 0.3641975523844}, //
+
2565 {0.475308657, 0.3765432243845}, //
+
2566 {0.487654328, 0.3765432243843}, //
+
2567 });
+
2568 polys.push_back({
+
2569 {0.450617284, 0.3641975523821}, //
+
2570 {0.438271612, 0.3641975523848}, //
+
2571 {0.438271612, 0.3765432243847}, //
+
2572 {0.450617284, 0.3765432243846}, //
+
2573 });
+
2574 polys.push_back({
+
2575 {0.413580239, 0.3395061793823}, //
+
2576 {0.413580239, 0.3271605073824}, //
+
2577 {0.401234567, 0.3271605073825}, //
+
2578 {0.401234567, 0.3395061793827}, //
+
2579 });
+
2580 polys.push_back({
+
2581 {0.413580239, 0.3641975523828}, //
+
2582 {0.401234567, 0.3641975523859}, //
+
2583 {0.401234567, 0.3765432243860}, //
+
2584 {0.413580239, 0.3765432243858}, //
+
2585 });
+
2586 polys.push_back({
+
2587 {0.339506179, 0.2654321193830}, //
+
2588 {0.339506179, 0.2530864483831}, //
+
2589 {0.327160507, 0.2530864483833}, //
+
2590 {0.327160507, 0.2654321193832}, //
+
2591 });
+
2592 polys.push_back({
+
2593 {0.302469134, 0.2530864483835}, //
+
2594 {0.290123463, 0.2530864483837}, //
+
2595 {0.290123463, 0.2654321193838}, //
+
2596 {0.302469134, 0.2654321193836}, //
+
2597 });
+
2598 polys.push_back({
+
2599 {0.487654328, 0.4012345673849}, //
+
2600 {0.475308657, 0.4012345673851}, //
+
2601 {0.475308657, 0.4135802393852}, //
+
2602 {0.487654328, 0.4135802393850}, //
+
2603 });
+
2604 polys.push_back({
+
2605 {0.450617284, 0.4012345673853}, //
+
2606 {0.438271612, 0.4012345673855}, //
+
2607 {0.438271612, 0.4135802393856}, //
+
2608 {0.450617284, 0.4135802393854}, //
+
2609 });
+
2610 polys.push_back({
+
2611 {0.487654328, 0.4382716123864}, //
+
2612 {0.475308657, 0.4382716123866}, //
+
2613 {0.475308657, 0.4506172843867}, //
+
2614 {0.487654328, 0.4506172843865}, //
+
2615 });
+
2616 TestPoly(polys, 1771);
+
2617}
+
+
+ + + + diff --git a/docs/html/struct_cube_void-members.html b/docs/html/struct_cube_void-members.html new file mode 100644 index 000000000..633abed80 --- /dev/null +++ b/docs/html/struct_cube_void-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CubeVoid Member List
+
+
+ +

This is the complete list of members for CubeVoid, including all inherited members.

+ + +
operator()(glm::vec3 p) const (defined in CubeVoid)CubeVoidinline
+
+ + + + diff --git a/docs/html/struct_cube_void.html b/docs/html/struct_cube_void.html new file mode 100644 index 000000000..8f3c8fd16 --- /dev/null +++ b/docs/html/struct_cube_void.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: CubeVoid Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CubeVoid Struct Reference
+
+
+ + + + +

+Public Member Functions

+float operator() (glm::vec3 p) const
 
+
+
+ + + + diff --git a/docs/html/struct_diagnostics_data-members.html b/docs/html/struct_diagnostics_data-members.html new file mode 100644 index 000000000..e52c03b6c --- /dev/null +++ b/docs/html/struct_diagnostics_data-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DiagnosticsData Member List
+
+
+ +

This is the complete list of members for DiagnosticsData, including all inherited members.

+ + + +
DiagnosticsData() (defined in DiagnosticsData)DiagnosticsDatainline
failedHorizonEdges (defined in DiagnosticsData)DiagnosticsData
+
+ + + + diff --git a/docs/html/struct_diagnostics_data.html b/docs/html/struct_diagnostics_data.html new file mode 100644 index 000000000..cc7ddf686 --- /dev/null +++ b/docs/html/struct_diagnostics_data.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: DiagnosticsData Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DiagnosticsData Struct Reference
+
+
+ + + + +

+Public Attributes

+size_t failedHorizonEdges
 
+
+
+ + + + diff --git a/docs/html/struct_edge-members.html b/docs/html/struct_edge-members.html new file mode 100644 index 000000000..98dbbf3c7 --- /dev/null +++ b/docs/html/struct_edge-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Edge Member List
+
+
+ +

This is the complete list of members for Edge, including all inherited members.

+ + + + + + + +
east (defined in Edge)Edge
Edge(const Polygons &polys, size_t i, size_t j) (defined in Edge)Edgeinline
i (defined in Edge)Edge
j (defined in Edge)Edge
operator<(const Edge &other) const (defined in Edge)Edgeinline
west (defined in Edge)Edge
+
+ + + + diff --git a/docs/html/struct_edge.html b/docs/html/struct_edge.html new file mode 100644 index 000000000..a6845d133 --- /dev/null +++ b/docs/html/struct_edge.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: Edge Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + +

+Public Member Functions

+bool operator< (const Edge &other) const
 
Edge (const Polygons &polys, size_t i, size_t j)
 
+ + + + + + + + + +

+Public Attributes

+glm::vec2 west
 
+glm::vec2 east
 
+size_t i
 
+size_t j
 
+
+
+ + + + diff --git a/docs/html/struct_gyroid_s_d_f-members.html b/docs/html/struct_gyroid_s_d_f-members.html new file mode 100644 index 000000000..d921075c7 --- /dev/null +++ b/docs/html/struct_gyroid_s_d_f-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GyroidSDF Member List
+
+
+ +

This is the complete list of members for GyroidSDF, including all inherited members.

+ + +
operator()(glm::vec3 p) const (defined in GyroidSDF)GyroidSDFinline
+
+ + + + diff --git a/docs/html/struct_gyroid_s_d_f.html b/docs/html/struct_gyroid_s_d_f.html new file mode 100644 index 000000000..31adda7ec --- /dev/null +++ b/docs/html/struct_gyroid_s_d_f.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: GyroidSDF Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GyroidSDF Struct Reference
+
+
+ + + + +

+Public Member Functions

+float operator() (glm::vec3 p) const
 
+
+
+ + + + diff --git a/docs/html/struct_layers-members.html b/docs/html/struct_layers-members.html new file mode 100644 index 000000000..f9f104fd6 --- /dev/null +++ b/docs/html/struct_layers-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Layers Member List
+
+
+ +

This is the complete list of members for Layers, including all inherited members.

+ + +
operator()(glm::vec3 p) const (defined in Layers)Layersinline
+
+ + + + diff --git a/docs/html/struct_layers.html b/docs/html/struct_layers.html new file mode 100644 index 000000000..dedd0701c --- /dev/null +++ b/docs/html/struct_layers.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Layers Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Layers Struct Reference
+
+
+ + + + +

+Public Member Functions

+float operator() (glm::vec3 p) const
 
+
+
+ + + + diff --git a/docs/html/struct_manifold_i_vec3-members.html b/docs/html/struct_manifold_i_vec3-members.html new file mode 100644 index 000000000..3166e4e5e --- /dev/null +++ b/docs/html/struct_manifold_i_vec3-members.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldIVec3 Member List
+
+
+ +

This is the complete list of members for ManifoldIVec3, including all inherited members.

+ + + + +
x (defined in ManifoldIVec3)ManifoldIVec3
y (defined in ManifoldIVec3)ManifoldIVec3
z (defined in ManifoldIVec3)ManifoldIVec3
+
+ + + + diff --git a/docs/html/struct_manifold_i_vec3.html b/docs/html/struct_manifold_i_vec3.html new file mode 100644 index 000000000..14c47aba7 --- /dev/null +++ b/docs/html/struct_manifold_i_vec3.html @@ -0,0 +1,171 @@ + + + + + + + +Manifold: ManifoldIVec3 Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldIVec3 Struct Reference
+
+
+ + + + + + + + +

+Public Attributes

+int x
 
+int y
 
+int z
 
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
int x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
int y
+
+ +
+
+ +

◆ z

+ +
+
+ + + + +
int z
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_manifold_manifold_pair-members.html b/docs/html/struct_manifold_manifold_pair-members.html new file mode 100644 index 000000000..1ac8c7b0f --- /dev/null +++ b/docs/html/struct_manifold_manifold_pair-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldManifoldPair Member List
+
+
+ +

This is the complete list of members for ManifoldManifoldPair, including all inherited members.

+ + + +
first (defined in ManifoldManifoldPair)ManifoldManifoldPair
second (defined in ManifoldManifoldPair)ManifoldManifoldPair
+
+ + + + diff --git a/docs/html/struct_manifold_manifold_pair.html b/docs/html/struct_manifold_manifold_pair.html new file mode 100644 index 000000000..c926dba27 --- /dev/null +++ b/docs/html/struct_manifold_manifold_pair.html @@ -0,0 +1,154 @@ + + + + + + + +Manifold: ManifoldManifoldPair Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldManifoldPair Struct Reference
+
+
+ + + + + + +

+Public Attributes

+ManifoldManifold * first
 
+ManifoldManifold * second
 
+

Member Data Documentation

+ +

◆ first

+ +
+
+ + + + +
ManifoldManifold* first
+
+ +
+
+ +

◆ second

+ +
+
+ + + + +
ManifoldManifold* second
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_manifold_properties-members.html b/docs/html/struct_manifold_properties-members.html new file mode 100644 index 000000000..a53e637ea --- /dev/null +++ b/docs/html/struct_manifold_properties-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldProperties Member List
+
+
+ +

This is the complete list of members for ManifoldProperties, including all inherited members.

+ + + +
surface_area (defined in ManifoldProperties)ManifoldProperties
volume (defined in ManifoldProperties)ManifoldProperties
+
+ + + + diff --git a/docs/html/struct_manifold_properties.html b/docs/html/struct_manifold_properties.html new file mode 100644 index 000000000..0a2c2da17 --- /dev/null +++ b/docs/html/struct_manifold_properties.html @@ -0,0 +1,154 @@ + + + + + + + +Manifold: ManifoldProperties Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldProperties Struct Reference
+
+
+ + + + + + +

+Public Attributes

+float surface_area
 
+float volume
 
+

Member Data Documentation

+ +

◆ surface_area

+ +
+
+ + + + +
float surface_area
+
+ +
+
+ +

◆ volume

+ +
+
+ + + + +
float volume
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_manifold_vec2-members.html b/docs/html/struct_manifold_vec2-members.html new file mode 100644 index 000000000..a1962183e --- /dev/null +++ b/docs/html/struct_manifold_vec2-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldVec2 Member List
+
+
+ +

This is the complete list of members for ManifoldVec2, including all inherited members.

+ + + +
x (defined in ManifoldVec2)ManifoldVec2
y (defined in ManifoldVec2)ManifoldVec2
+
+ + + + diff --git a/docs/html/struct_manifold_vec2.html b/docs/html/struct_manifold_vec2.html new file mode 100644 index 000000000..7a0966220 --- /dev/null +++ b/docs/html/struct_manifold_vec2.html @@ -0,0 +1,154 @@ + + + + + + + +Manifold: ManifoldVec2 Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldVec2 Struct Reference
+
+
+ + + + + + +

+Public Attributes

+float x
 
+float y
 
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
float x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
float y
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_manifold_vec3-members.html b/docs/html/struct_manifold_vec3-members.html new file mode 100644 index 000000000..bc7c1d818 --- /dev/null +++ b/docs/html/struct_manifold_vec3-members.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldVec3 Member List
+
+
+ +

This is the complete list of members for ManifoldVec3, including all inherited members.

+ + + + +
x (defined in ManifoldVec3)ManifoldVec3
y (defined in ManifoldVec3)ManifoldVec3
z (defined in ManifoldVec3)ManifoldVec3
+
+ + + + diff --git a/docs/html/struct_manifold_vec3.html b/docs/html/struct_manifold_vec3.html new file mode 100644 index 000000000..c487dab20 --- /dev/null +++ b/docs/html/struct_manifold_vec3.html @@ -0,0 +1,171 @@ + + + + + + + +Manifold: ManifoldVec3 Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldVec3 Struct Reference
+
+
+ + + + + + + + +

+Public Attributes

+float x
 
+float y
 
+float z
 
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
float x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
float y
+
+ +
+
+ +

◆ z

+ +
+
+ + + + +
float z
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_manifold_vec4-members.html b/docs/html/struct_manifold_vec4-members.html new file mode 100644 index 000000000..a4cf0cd9f --- /dev/null +++ b/docs/html/struct_manifold_vec4-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldVec4 Member List
+
+
+ +

This is the complete list of members for ManifoldVec4, including all inherited members.

+ + + + + +
w (defined in ManifoldVec4)ManifoldVec4
x (defined in ManifoldVec4)ManifoldVec4
y (defined in ManifoldVec4)ManifoldVec4
z (defined in ManifoldVec4)ManifoldVec4
+
+ + + + diff --git a/docs/html/struct_manifold_vec4.html b/docs/html/struct_manifold_vec4.html new file mode 100644 index 000000000..d2476f2a2 --- /dev/null +++ b/docs/html/struct_manifold_vec4.html @@ -0,0 +1,188 @@ + + + + + + + +Manifold: ManifoldVec4 Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldVec4 Struct Reference
+
+
+ + + + + + + + + + +

+Public Attributes

+float x
 
+float y
 
+float z
 
+float w
 
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
float x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
float y
+
+ +
+
+ +

◆ z

+ +
+
+ + + + +
float z
+
+ +
+
+ +

◆ w

+ +
+
+ + + + +
float w
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_mesh_builder_1_1_face-members.html b/docs/html/struct_mesh_builder_1_1_face-members.html new file mode 100644 index 000000000..0661d82fd --- /dev/null +++ b/docs/html/struct_mesh_builder_1_1_face-members.html @@ -0,0 +1,126 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshBuilder::Face Member List
+
+
+ +

This is the complete list of members for MeshBuilder::Face, including all inherited members.

+ + + + + + + + + + + + + +
disable() (defined in MeshBuilder::Face)MeshBuilder::Faceinline
Face() (defined in MeshBuilder::Face)MeshBuilder::Faceinline
he (defined in MeshBuilder::Face)MeshBuilder::Face
horizonEdgesOnCurrentIteration (defined in MeshBuilder::Face)MeshBuilder::Face
inFaceStack (defined in MeshBuilder::Face)MeshBuilder::Face
isDisabled() const (defined in MeshBuilder::Face)MeshBuilder::Faceinline
isVisibleFaceOnCurrentIteration (defined in MeshBuilder::Face)MeshBuilder::Face
mostDistantPoint (defined in MeshBuilder::Face)MeshBuilder::Face
mostDistantPointDist (defined in MeshBuilder::Face)MeshBuilder::Face
P (defined in MeshBuilder::Face)MeshBuilder::Face
pointsOnPositiveSide (defined in MeshBuilder::Face)MeshBuilder::Face
visibilityCheckedOnIteration (defined in MeshBuilder::Face)MeshBuilder::Face
+
+ + + + diff --git a/docs/html/struct_mesh_builder_1_1_face.html b/docs/html/struct_mesh_builder_1_1_face.html new file mode 100644 index 000000000..98903366c --- /dev/null +++ b/docs/html/struct_mesh_builder_1_1_face.html @@ -0,0 +1,156 @@ + + + + + + + +Manifold: MeshBuilder::Face Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshBuilder::Face Struct Reference
+
+
+ + + + + + +

+Public Member Functions

+void disable ()
 
+bool isDisabled () const
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

+size_t he
 
+Plane P {}
 
+double mostDistantPointDist
 
+size_t mostDistantPoint
 
+size_t visibilityCheckedOnIteration
 
+std::uint8_t isVisibleFaceOnCurrentIteration: 1
 
+std::uint8_t inFaceStack: 1
 
+std::uint8_t horizonEdgesOnCurrentIteration: 3
 
+std::unique_ptr< std::vector< size_t > > pointsOnPositiveSide
 
+
+
+ + + + diff --git a/docs/html/struct_mesh_builder_1_1_half_edge-members.html b/docs/html/struct_mesh_builder_1_1_half_edge-members.html new file mode 100644 index 000000000..8517984e9 --- /dev/null +++ b/docs/html/struct_mesh_builder_1_1_half_edge-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshBuilder::HalfEdge Member List
+
+
+ +

This is the complete list of members for MeshBuilder::HalfEdge, including all inherited members.

+ + + + + + + +
disable() (defined in MeshBuilder::HalfEdge)MeshBuilder::HalfEdgeinline
endVertex (defined in MeshBuilder::HalfEdge)MeshBuilder::HalfEdge
face (defined in MeshBuilder::HalfEdge)MeshBuilder::HalfEdge
isDisabled() const (defined in MeshBuilder::HalfEdge)MeshBuilder::HalfEdgeinline
next (defined in MeshBuilder::HalfEdge)MeshBuilder::HalfEdge
opp (defined in MeshBuilder::HalfEdge)MeshBuilder::HalfEdge
+
+ + + + diff --git a/docs/html/struct_mesh_builder_1_1_half_edge.html b/docs/html/struct_mesh_builder_1_1_half_edge.html new file mode 100644 index 000000000..d1acfd26d --- /dev/null +++ b/docs/html/struct_mesh_builder_1_1_half_edge.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: MeshBuilder::HalfEdge Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshBuilder::HalfEdge Struct Reference
+
+
+ + + + + + +

+Public Member Functions

+void disable ()
 
+bool isDisabled () const
 
+ + + + + + + + + +

+Public Attributes

+size_t endVertex
 
+size_t opp
 
+size_t face
 
+size_t next
 
+
+
+ + + + diff --git a/docs/html/struct_mesh_size-members.html b/docs/html/struct_mesh_size-members.html new file mode 100644 index 000000000..d51339b5b --- /dev/null +++ b/docs/html/struct_mesh_size-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshSize Member List
+
+
+ +

This is the complete list of members for MeshSize, including all inherited members.

+ + + + + +
numProp (defined in MeshSize)MeshSize
numPropVert (defined in MeshSize)MeshSize
numTri (defined in MeshSize)MeshSize
numVert (defined in MeshSize)MeshSize
+
+ + + + diff --git a/docs/html/struct_mesh_size.html b/docs/html/struct_mesh_size.html new file mode 100644 index 000000000..6c4d437de --- /dev/null +++ b/docs/html/struct_mesh_size.html @@ -0,0 +1,188 @@ + + + + + + + +Manifold: MeshSize Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshSize Struct Reference
+
+
+ + + + + + + + + + +

+Public Attributes

+int numVert
 
+int numTri
 
+int numProp = 0
 
+int numPropVert = numVert
 
+

Member Data Documentation

+ +

◆ numVert

+ +
+
+ + + + +
int numVert
+
+ +
+
+ +

◆ numTri

+ +
+
+ + + + +
int numTri
+
+ +
+
+ +

◆ numProp

+ +
+
+ + + + +
int numProp = 0
+
+ +
+
+ +

◆ numPropVert

+ +
+
+ + + + +
int numPropVert = numVert
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_options-members.html b/docs/html/struct_options-members.html new file mode 100644 index 000000000..915c13de0 --- /dev/null +++ b/docs/html/struct_options-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Options Member List
+
+
+ +

This is the complete list of members for Options, including all inherited members.

+ + + +
exportModels (defined in Options)Options
params (defined in Options)Options
+
+ + + + diff --git a/docs/html/struct_options.html b/docs/html/struct_options.html new file mode 100644 index 000000000..0c6e4c658 --- /dev/null +++ b/docs/html/struct_options.html @@ -0,0 +1,154 @@ + + + + + + + +Manifold: Options Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Options Struct Reference
+
+
+ + + + + + +

+Public Attributes

+bool exportModels = false
 
+manifold::ExecutionParams params = {}
 
+

Member Data Documentation

+ +

◆ exportModels

+ +
+
+ + + + +
bool exportModels = false
+
+ +
+
+ +

◆ params

+ +
+
+ + + + +
manifold::ExecutionParams params = {}
+
+ +
+
+
+
+ + + + diff --git a/docs/html/struct_ray-members.html b/docs/html/struct_ray-members.html new file mode 100644 index 000000000..61cdb070c --- /dev/null +++ b/docs/html/struct_ray-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ray Member List
+
+
+ +

This is the complete list of members for Ray, including all inherited members.

+ + + + + +
Ray(const glm::dvec3 &S, const glm::dvec3 &V) (defined in Ray)Rayinline
S (defined in Ray)Ray
V (defined in Ray)Ray
VInvLengthSquared (defined in Ray)Ray
+
+ + + + diff --git a/docs/html/struct_ray.html b/docs/html/struct_ray.html new file mode 100644 index 000000000..205225ab0 --- /dev/null +++ b/docs/html/struct_ray.html @@ -0,0 +1,135 @@ + + + + + + + +Manifold: Ray Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + +

+Public Member Functions

Ray (const glm::dvec3 &S, const glm::dvec3 &V)
 
+ + + + + + + +

+Public Attributes

+const glm::dvec3 S
 
+const glm::dvec3 V
 
+const double VInvLengthSquared
 
+
+
+ + + + diff --git a/docs/html/struct_result-members.html b/docs/html/struct_result-members.html new file mode 100644 index 000000000..eac9f9293 --- /dev/null +++ b/docs/html/struct_result-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Result Member List
+
+
+ +

This is the complete list of members for Result, including all inherited members.

+ + + +
name (defined in Result)Result
speedups (defined in Result)Result
+
+ + + + diff --git a/docs/html/struct_result.html b/docs/html/struct_result.html new file mode 100644 index 000000000..3ae3e3a41 --- /dev/null +++ b/docs/html/struct_result.html @@ -0,0 +1,154 @@ + + + + + + + +Manifold: Result Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Result Struct Reference
+
+
+ + + + + + +

+Public Attributes

+std::string name
 
+std::array< double, std::size(g_Sizes)> speedups
 
+

Member Data Documentation

+ +

◆ name

+ +
+
+ + + + +
std::string name
+
+ +
+
+ +

◆ speedups

+ +
+
+ + + + +
std::array<double, std::size(g_Sizes)> speedups
+
+ +
+
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1all__of-members.html b/docs/html/structbenchmarks_1_1all__of-members.html new file mode 100644 index 000000000..081056676 --- /dev/null +++ b/docs/html/structbenchmarks_1_1all__of-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
all_of< Policy > Member List
+
+
+ +

This is the complete list of members for all_of< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in all_of< Policy >)all_of< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1all__of.html b/docs/html/structbenchmarks_1_1all__of.html new file mode 100644 index 000000000..293a79bbf --- /dev/null +++ b/docs/html/structbenchmarks_1_1all__of.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: all_of< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
all_of< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy-members.html b/docs/html/structbenchmarks_1_1copy-members.html new file mode 100644 index 000000000..cac59a8c6 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
copy< Policy > Member List
+
+
+ +

This is the complete list of members for copy< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in copy< Policy >)copy< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy.html b/docs/html/structbenchmarks_1_1copy.html new file mode 100644 index 000000000..2bc13a2b1 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: copy< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
copy< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__1001-members.html b/docs/html/structbenchmarks_1_1copy__if__1001-members.html new file mode 100644 index 000000000..25006c07c --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__1001-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
copy_if_1001< Policy > Member List
+
+
+ +

This is the complete list of members for copy_if_1001< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in copy_if_1001< Policy >)copy_if_1001< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__1001.html b/docs/html/structbenchmarks_1_1copy__if__1001.html new file mode 100644 index 000000000..4fb63224b --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__1001.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: copy_if_1001< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
copy_if_1001< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__28-members.html b/docs/html/structbenchmarks_1_1copy__if__28-members.html new file mode 100644 index 000000000..73627c3c9 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__28-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
copy_if_28< Policy > Member List
+
+
+ +

This is the complete list of members for copy_if_28< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in copy_if_28< Policy >)copy_if_28< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__28.html b/docs/html/structbenchmarks_1_1copy__if__28.html new file mode 100644 index 000000000..0dc7acb05 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__28.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: copy_if_28< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
copy_if_28< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__55-members.html b/docs/html/structbenchmarks_1_1copy__if__55-members.html new file mode 100644 index 000000000..89e14b759 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__55-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
copy_if_55< Policy > Member List
+
+
+ +

This is the complete list of members for copy_if_55< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in copy_if_55< Policy >)copy_if_55< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__55.html b/docs/html/structbenchmarks_1_1copy__if__55.html new file mode 100644 index 000000000..bc925d8ad --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__55.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: copy_if_55< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
copy_if_55< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__82-members.html b/docs/html/structbenchmarks_1_1copy__if__82-members.html new file mode 100644 index 000000000..66e6009a8 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__82-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
copy_if_82< Policy > Member List
+
+
+ +

This is the complete list of members for copy_if_82< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in copy_if_82< Policy >)copy_if_82< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1copy__if__82.html b/docs/html/structbenchmarks_1_1copy__if__82.html new file mode 100644 index 000000000..5dbead428 --- /dev/null +++ b/docs/html/structbenchmarks_1_1copy__if__82.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: copy_if_82< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
copy_if_82< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1count-members.html b/docs/html/structbenchmarks_1_1count-members.html new file mode 100644 index 000000000..bdf993de7 --- /dev/null +++ b/docs/html/structbenchmarks_1_1count-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
count< Policy > Member List
+
+
+ +

This is the complete list of members for count< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in count< Policy >)count< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1count.html b/docs/html/structbenchmarks_1_1count.html new file mode 100644 index 000000000..b9ac2e42a --- /dev/null +++ b/docs/html/structbenchmarks_1_1count.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: count< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
count< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1exclusive__scan-members.html b/docs/html/structbenchmarks_1_1exclusive__scan-members.html new file mode 100644 index 000000000..d48db1635 --- /dev/null +++ b/docs/html/structbenchmarks_1_1exclusive__scan-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
exclusive_scan< Policy > Member List
+
+
+ +

This is the complete list of members for exclusive_scan< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in exclusive_scan< Policy >)exclusive_scan< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1exclusive__scan.html b/docs/html/structbenchmarks_1_1exclusive__scan.html new file mode 100644 index 000000000..0ff5a23ba --- /dev/null +++ b/docs/html/structbenchmarks_1_1exclusive__scan.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: exclusive_scan< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
exclusive_scan< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1fill-members.html b/docs/html/structbenchmarks_1_1fill-members.html new file mode 100644 index 000000000..b9a252529 --- /dev/null +++ b/docs/html/structbenchmarks_1_1fill-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
fill< Policy > Member List
+
+
+ +

This is the complete list of members for fill< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in fill< Policy >)fill< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1fill.html b/docs/html/structbenchmarks_1_1fill.html new file mode 100644 index 000000000..f6a4921b0 --- /dev/null +++ b/docs/html/structbenchmarks_1_1fill.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: fill< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
fill< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1for__each-members.html b/docs/html/structbenchmarks_1_1for__each-members.html new file mode 100644 index 000000000..23d9313b1 --- /dev/null +++ b/docs/html/structbenchmarks_1_1for__each-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
for_each< Policy > Member List
+
+
+ +

This is the complete list of members for for_each< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in for_each< Policy >)for_each< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1for__each.html b/docs/html/structbenchmarks_1_1for__each.html new file mode 100644 index 000000000..a59186456 --- /dev/null +++ b/docs/html/structbenchmarks_1_1for__each.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: for_each< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
for_each< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1reduce-members.html b/docs/html/structbenchmarks_1_1reduce-members.html new file mode 100644 index 000000000..80e1da52c --- /dev/null +++ b/docs/html/structbenchmarks_1_1reduce-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
reduce< Policy > Member List
+
+
+ +

This is the complete list of members for reduce< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in reduce< Policy >)reduce< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1reduce.html b/docs/html/structbenchmarks_1_1reduce.html new file mode 100644 index 000000000..1580a525a --- /dev/null +++ b/docs/html/structbenchmarks_1_1reduce.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: reduce< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
reduce< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___asc-members.html b/docs/html/structbenchmarks_1_1sort___asc-members.html new file mode 100644 index 000000000..281f2b2f2 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___asc-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Asc< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Asc< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Asc< Policy >)sort_Asc< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___asc.html b/docs/html/structbenchmarks_1_1sort___asc.html new file mode 100644 index 000000000..ef001dbbc --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___asc.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Asc< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Asc< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___asc__size-members.html b/docs/html/structbenchmarks_1_1sort___asc__size-members.html new file mode 100644 index 000000000..9882d45be --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___asc__size-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Asc_size< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Asc_size< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Asc_size< Policy >)sort_Asc_size< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___asc__size.html b/docs/html/structbenchmarks_1_1sort___asc__size.html new file mode 100644 index 000000000..3bb67f386 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___asc__size.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Asc_size< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Asc_size< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___asc__size__merge-members.html b/docs/html/structbenchmarks_1_1sort___asc__size__merge-members.html new file mode 100644 index 000000000..439897a25 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___asc__size__merge-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Asc_size_merge< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Asc_size_merge< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Asc_size_merge< Policy >)sort_Asc_size_merge< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___asc__size__merge.html b/docs/html/structbenchmarks_1_1sort___asc__size__merge.html new file mode 100644 index 000000000..1f7333557 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___asc__size__merge.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Asc_size_merge< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Asc_size_merge< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___des-members.html b/docs/html/structbenchmarks_1_1sort___des-members.html new file mode 100644 index 000000000..55a730542 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___des-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Des< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Des< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Des< Policy >)sort_Des< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___des.html b/docs/html/structbenchmarks_1_1sort___des.html new file mode 100644 index 000000000..a6b4efbd6 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___des.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Des< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Des< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___des__size-members.html b/docs/html/structbenchmarks_1_1sort___des__size-members.html new file mode 100644 index 000000000..cb68e157c --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___des__size-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Des_size< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Des_size< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Des_size< Policy >)sort_Des_size< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___des__size.html b/docs/html/structbenchmarks_1_1sort___des__size.html new file mode 100644 index 000000000..12341f518 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___des__size.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Des_size< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Des_size< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___des__size__merge-members.html b/docs/html/structbenchmarks_1_1sort___des__size__merge-members.html new file mode 100644 index 000000000..da21a2da2 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___des__size__merge-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Des_size_merge< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Des_size_merge< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Des_size_merge< Policy >)sort_Des_size_merge< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___des__size__merge.html b/docs/html/structbenchmarks_1_1sort___des__size__merge.html new file mode 100644 index 000000000..e8558f7d5 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___des__size__merge.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Des_size_merge< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Des_size_merge< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___eq-members.html b/docs/html/structbenchmarks_1_1sort___eq-members.html new file mode 100644 index 000000000..d2ae783a6 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___eq-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Eq< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Eq< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Eq< Policy >)sort_Eq< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___eq.html b/docs/html/structbenchmarks_1_1sort___eq.html new file mode 100644 index 000000000..4a5cb854a --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___eq.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Eq< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Eq< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___eq__size-members.html b/docs/html/structbenchmarks_1_1sort___eq__size-members.html new file mode 100644 index 000000000..15e0e2787 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___eq__size-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Eq_size< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Eq_size< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Eq_size< Policy >)sort_Eq_size< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___eq__size.html b/docs/html/structbenchmarks_1_1sort___eq__size.html new file mode 100644 index 000000000..1313348ba --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___eq__size.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Eq_size< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Eq_size< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___eq__size__merge-members.html b/docs/html/structbenchmarks_1_1sort___eq__size__merge-members.html new file mode 100644 index 000000000..f4fbbfe81 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___eq__size__merge-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Eq_size_merge< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Eq_size_merge< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Eq_size_merge< Policy >)sort_Eq_size_merge< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___eq__size__merge.html b/docs/html/structbenchmarks_1_1sort___eq__size__merge.html new file mode 100644 index 000000000..b85d1bea7 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___eq__size__merge.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Eq_size_merge< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Eq_size_merge< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___rnd-members.html b/docs/html/structbenchmarks_1_1sort___rnd-members.html new file mode 100644 index 000000000..02dc7c8e5 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___rnd-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Rnd< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Rnd< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Rnd< Policy >)sort_Rnd< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___rnd.html b/docs/html/structbenchmarks_1_1sort___rnd.html new file mode 100644 index 000000000..ac2833bf7 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___rnd.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Rnd< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Rnd< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___rnd__size-members.html b/docs/html/structbenchmarks_1_1sort___rnd__size-members.html new file mode 100644 index 000000000..84048c88a --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___rnd__size-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Rnd_size< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Rnd_size< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Rnd_size< Policy >)sort_Rnd_size< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___rnd__size.html b/docs/html/structbenchmarks_1_1sort___rnd__size.html new file mode 100644 index 000000000..ab1cd3b86 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___rnd__size.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Rnd_size< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Rnd_size< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___rnd__size__merge-members.html b/docs/html/structbenchmarks_1_1sort___rnd__size__merge-members.html new file mode 100644 index 000000000..5610acf31 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___rnd__size__merge-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_Rnd_size_merge< Policy > Member List
+
+
+ +

This is the complete list of members for sort_Rnd_size_merge< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_Rnd_size_merge< Policy >)sort_Rnd_size_merge< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort___rnd__size__merge.html b/docs/html/structbenchmarks_1_1sort___rnd__size__merge.html new file mode 100644 index 000000000..35bbe2773 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort___rnd__size__merge.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_Rnd_size_merge< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_Rnd_size_merge< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort__roughly___asc-members.html b/docs/html/structbenchmarks_1_1sort__roughly___asc-members.html new file mode 100644 index 000000000..60bcac4b6 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort__roughly___asc-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_roughly_Asc< Policy > Member List
+
+
+ +

This is the complete list of members for sort_roughly_Asc< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_roughly_Asc< Policy >)sort_roughly_Asc< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort__roughly___asc.html b/docs/html/structbenchmarks_1_1sort__roughly___asc.html new file mode 100644 index 000000000..bbe347528 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort__roughly___asc.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_roughly_Asc< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_roughly_Asc< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort__roughly___asc__size-members.html b/docs/html/structbenchmarks_1_1sort__roughly___asc__size-members.html new file mode 100644 index 000000000..4ea319803 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort__roughly___asc__size-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_roughly_Asc_size< Policy > Member List
+
+
+ +

This is the complete list of members for sort_roughly_Asc_size< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_roughly_Asc_size< Policy >)sort_roughly_Asc_size< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort__roughly___asc__size.html b/docs/html/structbenchmarks_1_1sort__roughly___asc__size.html new file mode 100644 index 000000000..bb2ece4ff --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort__roughly___asc__size.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_roughly_Asc_size< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_roughly_Asc_size< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort__roughly___asc__size__merge-members.html b/docs/html/structbenchmarks_1_1sort__roughly___asc__size__merge-members.html new file mode 100644 index 000000000..66216ec5a --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort__roughly___asc__size__merge-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sort_roughly_Asc_size_merge< Policy > Member List
+
+
+ +

This is the complete list of members for sort_roughly_Asc_size_merge< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in sort_roughly_Asc_size_merge< Policy >)sort_roughly_Asc_size_merge< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1sort__roughly___asc__size__merge.html b/docs/html/structbenchmarks_1_1sort__roughly___asc__size__merge.html new file mode 100644 index 000000000..3cf63f1f1 --- /dev/null +++ b/docs/html/structbenchmarks_1_1sort__roughly___asc__size__merge.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: sort_roughly_Asc_size_merge< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
sort_roughly_Asc_size_merge< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1transform__reduce-members.html b/docs/html/structbenchmarks_1_1transform__reduce-members.html new file mode 100644 index 000000000..4eef6fea3 --- /dev/null +++ b/docs/html/structbenchmarks_1_1transform__reduce-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
transform_reduce< Policy > Member List
+
+
+ +

This is the complete list of members for transform_reduce< Policy >, including all inherited members.

+ + +
operator()(size_t size) (defined in transform_reduce< Policy >)transform_reduce< Policy >inline
+
+ + + + diff --git a/docs/html/structbenchmarks_1_1transform__reduce.html b/docs/html/structbenchmarks_1_1transform__reduce.html new file mode 100644 index 000000000..6c01a6279 --- /dev/null +++ b/docs/html/structbenchmarks_1_1transform__reduce.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: transform_reduce< Policy > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
transform_reduce< Policy > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+auto operator() (size_t size)
 
+
+
+ + + + diff --git a/docs/html/structglm__name.html b/docs/html/structglm__name.html new file mode 100644 index 000000000..0ccd8661a --- /dev/null +++ b/docs/html/structglm__name.html @@ -0,0 +1,112 @@ + + + + + + + +Manifold: glm_name< T > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glm_name< T > Struct Template Reference
+
+
+
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1ivec3_01_4-members.html b/docs/html/structglm__name_3_01glm_1_1ivec3_01_4-members.html new file mode 100644 index 000000000..42d77e2b0 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1ivec3_01_4-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glm_name< glm::ivec3 > Member List
+
+
+ +

This is the complete list of members for glm_name< glm::ivec3 >, including all inherited members.

+ + + +
multi_name (defined in glm_name< glm::ivec3 >)glm_name< glm::ivec3 >static
name (defined in glm_name< glm::ivec3 >)glm_name< glm::ivec3 >static
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1ivec3_01_4.html b/docs/html/structglm__name_3_01glm_1_1ivec3_01_4.html new file mode 100644 index 000000000..8695c662b --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1ivec3_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +Manifold: glm_name< glm::ivec3 > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
glm_name< glm::ivec3 > Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

+static constexpr char const name [] = "Intx3"
 
+static constexpr char const multi_name [] = "IntNx3"
 
+
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1mat3x2_01_4-members.html b/docs/html/structglm__name_3_01glm_1_1mat3x2_01_4-members.html new file mode 100644 index 000000000..36227dbb8 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1mat3x2_01_4-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glm_name< glm::mat3x2 > Member List
+
+
+ +

This is the complete list of members for glm_name< glm::mat3x2 >, including all inherited members.

+ + +
name (defined in glm_name< glm::mat3x2 >)glm_name< glm::mat3x2 >static
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1mat3x2_01_4.html b/docs/html/structglm__name_3_01glm_1_1mat3x2_01_4.html new file mode 100644 index 000000000..89f358544 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1mat3x2_01_4.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: glm_name< glm::mat3x2 > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
glm_name< glm::mat3x2 > Struct Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr char const name [] = "Float2x3"
 
+
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1mat4x3_01_4-members.html b/docs/html/structglm__name_3_01glm_1_1mat4x3_01_4-members.html new file mode 100644 index 000000000..7becb9554 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1mat4x3_01_4-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glm_name< glm::mat4x3 > Member List
+
+
+ +

This is the complete list of members for glm_name< glm::mat4x3 >, including all inherited members.

+ + +
name (defined in glm_name< glm::mat4x3 >)glm_name< glm::mat4x3 >static
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1mat4x3_01_4.html b/docs/html/structglm__name_3_01glm_1_1mat4x3_01_4.html new file mode 100644 index 000000000..120741588 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1mat4x3_01_4.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: glm_name< glm::mat4x3 > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
glm_name< glm::mat4x3 > Struct Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr char const name [] = "Float3x4"
 
+
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1vec2_01_4-members.html b/docs/html/structglm__name_3_01glm_1_1vec2_01_4-members.html new file mode 100644 index 000000000..d8b06827e --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1vec2_01_4-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glm_name< glm::vec2 > Member List
+
+
+ +

This is the complete list of members for glm_name< glm::vec2 >, including all inherited members.

+ + + +
multi_name (defined in glm_name< glm::vec2 >)glm_name< glm::vec2 >static
name (defined in glm_name< glm::vec2 >)glm_name< glm::vec2 >static
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1vec2_01_4.html b/docs/html/structglm__name_3_01glm_1_1vec2_01_4.html new file mode 100644 index 000000000..5dc7d3fe5 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1vec2_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +Manifold: glm_name< glm::vec2 > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
glm_name< glm::vec2 > Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

+static constexpr char const name [] = "Floatx2"
 
+static constexpr char const multi_name [] = "FloatNx2"
 
+
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1vec3_01_4-members.html b/docs/html/structglm__name_3_01glm_1_1vec3_01_4-members.html new file mode 100644 index 000000000..ab747f19e --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1vec3_01_4-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
glm_name< glm::vec3 > Member List
+
+
+ +

This is the complete list of members for glm_name< glm::vec3 >, including all inherited members.

+ + + +
multi_name (defined in glm_name< glm::vec3 >)glm_name< glm::vec3 >static
name (defined in glm_name< glm::vec3 >)glm_name< glm::vec3 >static
+
+ + + + diff --git a/docs/html/structglm__name_3_01glm_1_1vec3_01_4.html b/docs/html/structglm__name_3_01glm_1_1vec3_01_4.html new file mode 100644 index 000000000..c1f2ec9e9 --- /dev/null +++ b/docs/html/structglm__name_3_01glm_1_1vec3_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +Manifold: glm_name< glm::vec3 > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
glm_name< glm::vec3 > Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

+static constexpr char const name [] = "Floatx3"
 
+static constexpr char const multi_name [] = "FloatNx3"
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_box-members.html b/docs/html/structmanifold_1_1_box-members.html new file mode 100644 index 000000000..641297fb6 --- /dev/null +++ b/docs/html/structmanifold_1_1_box-members.html @@ -0,0 +1,133 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Box Member List
+
+
+ +

This is the complete list of members for Box, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
Box()Boxinline
Box(const glm::vec3 p1, const glm::vec3 p2)Boxinline
Center() constBoxinline
Contains(const glm::vec3 &p) constBoxinline
Contains(const Box &box) constBoxinline
DoesOverlap(const Box &box) constBoxinline
DoesOverlap(glm::vec3 p) constBoxinline
IsFinite() constBoxinline
max (defined in Box)Box
min (defined in Box)Box
operator*(glm::vec3 scale) constBoxinline
operator*=(glm::vec3 scale)Boxinline
operator+(glm::vec3 shift) constBoxinline
operator+=(glm::vec3 shift)Boxinline
Scale() constBoxinline
Size() constBoxinline
Transform(const glm::mat4x3 &transform) constBoxinline
Union(const glm::vec3 p)Boxinline
Union(const Box &box) constBoxinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_box.html b/docs/html/structmanifold_1_1_box.html new file mode 100644 index 000000000..8523ef994 --- /dev/null +++ b/docs/html/structmanifold_1_1_box.html @@ -0,0 +1,630 @@ + + + + + + + +Manifold: Box Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Box ()
 
 Box (const glm::vec3 p1, const glm::vec3 p2)
 
glm::vec3 Size () const
 
glm::vec3 Center () const
 
float Scale () const
 
bool Contains (const glm::vec3 &p) const
 
bool Contains (const Box &box) const
 
void Union (const glm::vec3 p)
 
Box Union (const Box &box) const
 
Box Transform (const glm::mat4x3 &transform) const
 
Box operator+ (glm::vec3 shift) const
 
Boxoperator+= (glm::vec3 shift)
 
Box operator* (glm::vec3 scale) const
 
Boxoperator*= (glm::vec3 scale)
 
bool DoesOverlap (const Box &box) const
 
bool DoesOverlap (glm::vec3 p) const
 
bool IsFinite () const
 
+ + + + + +

+Public Attributes

+glm::vec3 min = glm::vec3(std::numeric_limits<float>::infinity())
 
+glm::vec3 max = glm::vec3(-std::numeric_limits<float>::infinity())
 
+

Constructor & Destructor Documentation

+ +

◆ Box() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Box ()
+
+inline
+
+

Default constructor is an infinite box that contains all space.

+ +
+
+ +

◆ Box() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Box (const glm::vec3 p1,
const glm::vec3 p2 
)
+
+inline
+
+

Creates a box that contains the two given points.

+ +
+
+

Member Function Documentation

+ +

◆ Size()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec3 Size () const
+
+inline
+
+

Returns the dimensions of the Box.

+ +
+
+ +

◆ Center()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec3 Center () const
+
+inline
+
+

Returns the center point of the Box.

+ +
+
+ +

◆ Scale()

+ +
+
+ + + + + +
+ + + + + + + +
float Scale () const
+
+inline
+
+

Returns the absolute-largest coordinate value of any contained point.

+ +
+
+ +

◆ Contains() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool Contains (const glm::vec3 & p) const
+
+inline
+
+

Does this box contain (includes equal) the given point?

+ +
+
+ +

◆ Contains() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool Contains (const Boxbox) const
+
+inline
+
+

Does this box contain (includes equal) the given box?

+ +
+
+ +

◆ Union() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void Union (const glm::vec3 p)
+
+inline
+
+

Expand this box to include the given point.

+ +
+
+ +

◆ Union() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Box Union (const Boxbox) const
+
+inline
+
+

Expand this box to include the given box.

+ +
+
+ +

◆ Transform()

+ +
+
+ + + + + +
+ + + + + + + + +
Box Transform (const glm::mat4x3 & transform) const
+
+inline
+
+

Transform the given box by the given axis-aligned affine transform.

+

Ensure the transform passed in is axis-aligned (rotations are all multiples of 90 degrees), or else the resulting bounding box will no longer bound properly.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + +
Box operator+ (glm::vec3 shift) const
+
+inline
+
+

Shift this box by the given vector.

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + +
+ + + + + + + + +
Box & operator+= (glm::vec3 shift)
+
+inline
+
+

Shift this box in-place by the given vector.

+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + +
+ + + + + + + + +
Box operator* (glm::vec3 scale) const
+
+inline
+
+

Scale this box by the given vector.

+ +
+
+ +

◆ operator*=()

+ +
+
+ + + + + +
+ + + + + + + + +
Box & operator*= (glm::vec3 scale)
+
+inline
+
+

Scale this box in-place by the given vector.

+ +
+
+ +

◆ DoesOverlap() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool DoesOverlap (const Boxbox) const
+
+inline
+
+

Does this box overlap the one given (including equality)?

+ +
+
+ +

◆ DoesOverlap() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool DoesOverlap (glm::vec3 p) const
+
+inline
+
+

Does the given point project within the XY extent of this box (including equality)?

+ +
+
+ +

◆ IsFinite()

+ +
+
+ + + + + +
+ + + + + + + +
bool IsFinite () const
+
+inline
+
+

Does this box have finite bounds?

+ +
+
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_box.js b/docs/html/structmanifold_1_1_box.js new file mode 100644 index 000000000..343705cf8 --- /dev/null +++ b/docs/html/structmanifold_1_1_box.js @@ -0,0 +1,20 @@ +var structmanifold_1_1_box = +[ + [ "Box", "structmanifold_1_1_box.html#adea1928c15ca1eb88b6619bc554911b5", null ], + [ "Box", "structmanifold_1_1_box.html#a4e57b8d753c7850eafadadd5c6712d0f", null ], + [ "Size", "structmanifold_1_1_box.html#adedb961e2415f91bef56c5ca13e1e651", null ], + [ "Center", "structmanifold_1_1_box.html#aa2116eed911ac1b0277788b05b0f663f", null ], + [ "Scale", "structmanifold_1_1_box.html#ac60a4c17cace9263b70bf5e5c6f43b58", null ], + [ "Contains", "structmanifold_1_1_box.html#a1aa1ea08f35a830ecc80b2bc83c9bcce", null ], + [ "Contains", "structmanifold_1_1_box.html#afddd3d24795d0c760ae8a458ead93b0d", null ], + [ "Union", "structmanifold_1_1_box.html#ac35d2842beedafce43f5ae4dea7aef3b", null ], + [ "Union", "structmanifold_1_1_box.html#a8d8616c9f61502d6fe2331ba7a3dc7fd", null ], + [ "Transform", "structmanifold_1_1_box.html#a821dd8a461d5c6938968cd76125b2102", null ], + [ "operator+", "structmanifold_1_1_box.html#af972bb4de52bdc0a952d4a6907f53e67", null ], + [ "operator+=", "structmanifold_1_1_box.html#a994c4a973b15e5f2f7dbccb7b5dc19d4", null ], + [ "operator*", "structmanifold_1_1_box.html#a60e8048a284bf5f5de8bc93fe2e3b617", null ], + [ "operator*=", "structmanifold_1_1_box.html#af62267ab92ad369671e2cb34a296d4fc", null ], + [ "DoesOverlap", "structmanifold_1_1_box.html#a46774b2491c515fa7f6d48c561395669", null ], + [ "DoesOverlap", "structmanifold_1_1_box.html#a0eae49109f2471de7546d95c273f3461", null ], + [ "IsFinite", "structmanifold_1_1_box.html#a33b7dcc502aae627fbc56bcfecf33af1", null ] +]; \ No newline at end of file diff --git a/docs/html/structmanifold_1_1_counting_iterator-members.html b/docs/html/structmanifold_1_1_counting_iterator-members.html new file mode 100644 index 000000000..427a9cf36 --- /dev/null +++ b/docs/html/structmanifold_1_1_counting_iterator-members.html @@ -0,0 +1,135 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CountingIterator< T > Member List
+
+
+ +

This is the complete list of members for CountingIterator< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
CountingIterator(T counter) (defined in CountingIterator< T >)CountingIterator< T >inline
difference_type typedef (defined in CountingIterator< T >)CountingIterator< T >
iterator_category typedef (defined in CountingIterator< T >)CountingIterator< T >
operator CountingIterator< const T >() const (defined in CountingIterator< T >)CountingIterator< T >inline
operator!= (defined in CountingIterator< T >)CountingIterator< T >friend
operator*() const (defined in CountingIterator< T >)CountingIterator< T >inline
operator+(T n) const (defined in CountingIterator< T >)CountingIterator< T >inline
operator++() (defined in CountingIterator< T >)CountingIterator< T >inline
operator++(int) (defined in CountingIterator< T >)CountingIterator< T >inline
operator+=(T n) (defined in CountingIterator< T >)CountingIterator< T >inline
operator-(T n) const (defined in CountingIterator< T >)CountingIterator< T >inline
operator- (defined in CountingIterator< T >)CountingIterator< T >friend
operator--() (defined in CountingIterator< T >)CountingIterator< T >inline
operator--(int) (defined in CountingIterator< T >)CountingIterator< T >inline
operator-=(T n) (defined in CountingIterator< T >)CountingIterator< T >inline
operator< (defined in CountingIterator< T >)CountingIterator< T >friend
operator== (defined in CountingIterator< T >)CountingIterator< T >friend
operator[](T i) const (defined in CountingIterator< T >)CountingIterator< T >inline
pointer typedef (defined in CountingIterator< T >)CountingIterator< T >
reference typedef (defined in CountingIterator< T >)CountingIterator< T >
value_type typedef (defined in CountingIterator< T >)CountingIterator< T >
+
+ + + + diff --git a/docs/html/structmanifold_1_1_counting_iterator.html b/docs/html/structmanifold_1_1_counting_iterator.html new file mode 100644 index 000000000..960bfc291 --- /dev/null +++ b/docs/html/structmanifold_1_1_counting_iterator.html @@ -0,0 +1,190 @@ + + + + + + + +Manifold: CountingIterator< T > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CountingIterator< T > Struct Template Reference
+
+
+ + + + + + + + + + + + +

+Public Types

+using pointer = void
 
+using reference = T
 
+using difference_type = std::make_signed_t< T >
 
+using value_type = T
 
+using iterator_category = std::random_access_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CountingIterator (T counter)
 
+value_type operator* () const
 
+value_type operator[] (T i) const
 
+CountingIteratoroperator++ ()
 
+CountingIterator operator++ (int)
 
+CountingIteratoroperator-- ()
 
+CountingIterator operator-- (int)
 
+CountingIterator operator+ (T n) const
 
+CountingIteratoroperator+= (T n)
 
+CountingIterator operator- (T n) const
 
+CountingIteratoroperator-= (T n)
 
operator CountingIterator< const T > () const
 
+ + + + + + + + + +

+Friends

+bool operator== (CountingIterator a, CountingIterator b)
 
+bool operator!= (CountingIterator a, CountingIterator b)
 
+bool operator< (CountingIterator a, CountingIterator b)
 
+difference_type operator- (CountingIterator a, CountingIterator b)
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_halfedge-members.html b/docs/html/structmanifold_1_1_halfedge-members.html new file mode 100644 index 000000000..fb36d451e --- /dev/null +++ b/docs/html/structmanifold_1_1_halfedge-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Halfedge Member List
+
+
+ +

This is the complete list of members for Halfedge, including all inherited members.

+ + + + + + + +
endVert (defined in Halfedge)Halfedge
face (defined in Halfedge)Halfedge
IsForward() const (defined in Halfedge)Halfedgeinline
operator<(const Halfedge &other) const (defined in Halfedge)Halfedgeinline
pairedHalfedge (defined in Halfedge)Halfedge
startVert (defined in Halfedge)Halfedge
+
+ + + + diff --git a/docs/html/structmanifold_1_1_halfedge.html b/docs/html/structmanifold_1_1_halfedge.html new file mode 100644 index 000000000..ccea238fa --- /dev/null +++ b/docs/html/structmanifold_1_1_halfedge.html @@ -0,0 +1,145 @@ + + + + + + + +Manifold: Halfedge Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <shared.h>

+ + + + + + +

+Public Member Functions

+bool IsForward () const
 
+bool operator< (const Halfedge &other) const
 
+ + + + + + + + + +

+Public Attributes

+int startVert
 
+int endVert
 
+int pairedHalfedge
 
+int face
 
+

Detailed Description

+

The fundamental component of the halfedge data structure used for storing and operating on the Manifold.

+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_identity-members.html b/docs/html/structmanifold_1_1_identity-members.html new file mode 100644 index 000000000..1e5f6911d --- /dev/null +++ b/docs/html/structmanifold_1_1_identity-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Identity< T > Member List
+
+
+ +

This is the complete list of members for Identity< T >, including all inherited members.

+ + +
operator()(T v) const (defined in Identity< T >)Identity< T >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_identity.html b/docs/html/structmanifold_1_1_identity.html new file mode 100644 index 000000000..4435d66a2 --- /dev/null +++ b/docs/html/structmanifold_1_1_identity.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Identity< T > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Identity< T > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+T operator() (T v) const
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_manifold_1_1_impl-members.html b/docs/html/structmanifold_1_1_manifold_1_1_impl-members.html new file mode 100644 index 000000000..bde9c36ea --- /dev/null +++ b/docs/html/structmanifold_1_1_manifold_1_1_impl-members.html @@ -0,0 +1,206 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Manifold::Impl Member List
+
+
+ +

This is the complete list of members for Manifold::Impl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bBox_ (defined in Manifold::Impl)Manifold::Impl
CalculateBBox()Manifold::Impl
CalculateCurvature(int gaussianIdx, int meanIdx) (defined in Manifold::Impl)Manifold::Impl
CalculateNormals()Manifold::Impl
CollapseEdge(int edge, std::vector< int > &edges) (defined in Manifold::Impl)Manifold::Impl
CollapseTri(const glm::ivec3 &triEdge) (defined in Manifold::Impl)Manifold::Impl
collider_ (defined in Manifold::Impl)Manifold::Impl
CompactProps()Manifold::Impl
CreateFaces(const std::vector< float > &propertyTolerance={}) (defined in Manifold::Impl)Manifold::Impl
CreateHalfedges(const Vec< glm::ivec3 > &triVerts)Manifold::Impl
CreateTangents(int normalIdx)Manifold::Impl
CreateTangents(std::vector< Smoothness >)Manifold::Impl
DedupeEdge(int edge) (defined in Manifold::Impl)Manifold::Impl
DistributeTangents(const Vec< bool > &fixedHalfedges)Manifold::Impl
EdgeCollisions(const Impl &B, bool inverted=false) constManifold::Impl
Face2Polygons(VecView< Halfedge >::IterC start, VecView< Halfedge >::IterC end, glm::mat3x2 projection) constManifold::Impl
Face2Tri(const Vec< int > &faceEdge, const Vec< TriRef > &halfedgeRef)Manifold::Impl
faceNormal_ (defined in Manifold::Impl)Manifold::Impl
FillRetainedVerts(Vec< Barycentric > &vertBary) constManifold::Impl
Finish()Manifold::Impl
FlatFaces() const (defined in Manifold::Impl)Manifold::Impl
FormLoop(int current, int end) (defined in Manifold::Impl)Manifold::Impl
ForVert(int halfedge, std::function< void(int halfedge)> func) (defined in Manifold::Impl)Manifold::Implinline
ForVert(int halfedge, std::function< T(int halfedge)> transform, std::function< void(int halfedge, const T &here, T &next)> binaryOp) (defined in Manifold::Impl)Manifold::Implinline
GatherFaces(const Vec< int > &faceNew2Old)Manifold::Impl
GatherFaces(const Impl &old, const Vec< int > &faceNew2Old) (defined in Manifold::Impl)Manifold::Impl
GetFaceBoxMorton(Vec< Box > &faceBox, Vec< uint32_t > &faceMorton) constManifold::Impl
GetHalfedges(int tri) constManifold::Impl
GetIndices(int halfedge) constManifold::Impl
GetNeighbor(int tri) constManifold::Impl
GetNormal(int halfedge, int normalIdx) constManifold::Impl
GetProperties() const (defined in Manifold::Impl)Manifold::Impl
halfedge_ (defined in Manifold::Impl)Manifold::Impl
halfedgeTangent_ (defined in Manifold::Impl)Manifold::Impl
Impl() (defined in Manifold::Impl)Manifold::Implinline
Impl(Shape, const glm::mat4x3=glm::mat4x3(1))Manifold::Impl
Impl(const MeshGL &, std::vector< float > propertyTolerance={}) (defined in Manifold::Impl)Manifold::Impl
Impl(const Mesh &, const MeshRelationD &relation, const std::vector< float > &propertyTolerance={}, bool hasFaceIDs=false)Manifold::Impl
IncrementMeshIDs()Manifold::Impl
InitializeOriginal() (defined in Manifold::Impl)Manifold::Impl
Is2Manifold() constManifold::Impl
IsEmpty() const (defined in Manifold::Impl)Manifold::Implinline
IsFinite() constManifold::Impl
IsIndexInBounds(VecView< const glm::ivec3 > triVerts) constManifold::Impl
IsInsideQuad(int halfedge) constManifold::Impl
IsManifold() constManifold::Impl
IsMarkedInsideQuad(int halfedge) constManifold::Impl
LinearizeFlatTangents()Manifold::Impl
MarkFailure(Error status) (defined in Manifold::Impl)Manifold::Impl
MatchesTriNormals() constManifold::Impl
meshIDCounter_ (defined in Manifold::Impl)Manifold::Implstatic
meshRelation_ (defined in Manifold::Impl)Manifold::Impl
MinGap(const Impl &other, float searchLength) const (defined in Manifold::Impl)Manifold::Impl
NumDegenerateTris() constManifold::Impl
NumEdge() const (defined in Manifold::Impl)Manifold::Implinline
NumProp() const (defined in Manifold::Impl)Manifold::Implinline
NumPropVert() const (defined in Manifold::Impl)Manifold::Implinline
NumTri() const (defined in Manifold::Impl)Manifold::Implinline
NumVert() const (defined in Manifold::Impl)Manifold::Implinline
PairUp(int edge0, int edge1) (defined in Manifold::Impl)Manifold::Impl
precision_ (defined in Manifold::Impl)Manifold::Impl
Project() const (defined in Manifold::Impl)Manifold::Impl
RecursiveEdgeSwap(int edge, int &tag, std::vector< int > &visited, std::vector< int > &edgeSwapStack, std::vector< int > &edges) (defined in Manifold::Impl)Manifold::Impl
Refine(std::function< int(glm::vec3)>) (defined in Manifold::Impl)Manifold::Impl
ReindexVerts(const Vec< int > &vertNew2Old, int numOldVert)Manifold::Impl
RemoveIfFolded(int edge) (defined in Manifold::Impl)Manifold::Impl
RemoveUnreferencedVerts(Vec< glm::ivec3 > &triVerts) (defined in Manifold::Impl)Manifold::Impl
ReserveIDs(uint32_t) (defined in Manifold::Impl)Manifold::Implstatic
SetNormals(int normalIdx, float minSharpAngle)Manifold::Impl
SetPrecision(float minPrecision=-1)Manifold::Impl
Shape enum name (defined in Manifold::Impl)Manifold::Impl
SharpenEdges(float minSharpAngle, float minSmoothness) const (defined in Manifold::Impl)Manifold::Impl
SharpenTangent(int halfedge, float smoothness)Manifold::Impl
SimplifyTopology()Manifold::Impl
Slice(float height) const (defined in Manifold::Impl)Manifold::Impl
SortFaces(Vec< Box > &faceBox, Vec< uint32_t > &faceMorton)Manifold::Impl
SortVerts()Manifold::Impl
SplitPinchedVerts() (defined in Manifold::Impl)Manifold::Impl
status_ (defined in Manifold::Impl)Manifold::Impl
Subdivide(std::function< int(glm::vec3)>)Manifold::Impl
TangentFromNormal(const glm::vec3 &normal, int halfedge) constManifold::Impl
Transform(const glm::mat4x3 &transform) const (defined in Manifold::Impl)Manifold::Impl
Update()Manifold::Impl
UpdateSharpenedEdges(const std::vector< Smoothness > &) const (defined in Manifold::Impl)Manifold::Impl
UpdateVert(int vert, int startEdge, int endEdge) (defined in Manifold::Impl)Manifold::Impl
VertexCollisionsZ(VecView< const glm::vec3 > vertsIn, bool inverted=false) constManifold::Impl
VertFlatFace(const Vec< bool > &) const (defined in Manifold::Impl)Manifold::Impl
VertHalfedge() const (defined in Manifold::Impl)Manifold::Impl
vertNormal_ (defined in Manifold::Impl)Manifold::Impl
vertPos_ (defined in Manifold::Impl)Manifold::Impl
Warp(std::function< void(glm::vec3 &)> warpFunc) (defined in Manifold::Impl)Manifold::Impl
WarpBatch(std::function< void(VecView< glm::vec3 >)> warpFunc) (defined in Manifold::Impl)Manifold::Impl
+
+ + + + diff --git a/docs/html/structmanifold_1_1_manifold_1_1_impl.html b/docs/html/structmanifold_1_1_manifold_1_1_impl.html new file mode 100644 index 000000000..5e3224891 --- /dev/null +++ b/docs/html/structmanifold_1_1_manifold_1_1_impl.html @@ -0,0 +1,1423 @@ + + + + + + + +Manifold: Manifold::Impl Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + + + +

+Classes

struct  BaryIndices
 
struct  MeshRelationD
 
struct  Relation
 
+ + + +

+Public Types

enum class  Shape { Tetrahedron +, Cube +, Octahedron + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Impl (Shape, const glm::mat4x3=glm::mat4x3(1))
 
Impl (const MeshGL &, std::vector< float > propertyTolerance={})
 
 Impl (const Mesh &, const MeshRelationD &relation, const std::vector< float > &propertyTolerance={}, bool hasFaceIDs=false)
 
+void ForVert (int halfedge, std::function< void(int halfedge)> func)
 
+template<typename T >
void ForVert (int halfedge, std::function< T(int halfedge)> transform, std::function< void(int halfedge, const T &here, T &next)> binaryOp)
 
+void CreateFaces (const std::vector< float > &propertyTolerance={})
 
+void RemoveUnreferencedVerts (Vec< glm::ivec3 > &triVerts)
 
+void InitializeOriginal ()
 
void CreateHalfedges (const Vec< glm::ivec3 > &triVerts)
 
void CalculateNormals ()
 
void IncrementMeshIDs ()
 
void Update ()
 
+void MarkFailure (Error status)
 
+void Warp (std::function< void(glm::vec3 &)> warpFunc)
 
+void WarpBatch (std::function< void(VecView< glm::vec3 >)> warpFunc)
 
+Impl Transform (const glm::mat4x3 &transform) const
 
SparseIndices EdgeCollisions (const Impl &B, bool inverted=false) const
 
SparseIndices VertexCollisionsZ (VecView< const glm::vec3 > vertsIn, bool inverted=false) const
 
+bool IsEmpty () const
 
+size_t NumVert () const
 
+size_t NumEdge () const
 
+size_t NumTri () const
 
+size_t NumProp () const
 
+size_t NumPropVert () const
 
+Properties GetProperties () const
 
+void CalculateCurvature (int gaussianIdx, int meanIdx)
 
void CalculateBBox ()
 
bool IsFinite () const
 
bool IsIndexInBounds (VecView< const glm::ivec3 > triVerts) const
 
void SetPrecision (float minPrecision=-1)
 
bool IsManifold () const
 
bool Is2Manifold () const
 
bool MatchesTriNormals () const
 
int NumDegenerateTris () const
 
+float MinGap (const Impl &other, float searchLength) const
 
void Finish ()
 
void SortVerts ()
 
void ReindexVerts (const Vec< int > &vertNew2Old, int numOldVert)
 
void CompactProps ()
 
void GetFaceBoxMorton (Vec< Box > &faceBox, Vec< uint32_t > &faceMorton) const
 
void SortFaces (Vec< Box > &faceBox, Vec< uint32_t > &faceMorton)
 
void GatherFaces (const Vec< int > &faceNew2Old)
 
+void GatherFaces (const Impl &old, const Vec< int > &faceNew2Old)
 
void Face2Tri (const Vec< int > &faceEdge, const Vec< TriRef > &halfedgeRef)
 
PolygonsIdx Face2Polygons (VecView< Halfedge >::IterC start, VecView< Halfedge >::IterC end, glm::mat3x2 projection) const
 
+Polygons Slice (float height) const
 
+Polygons Project () const
 
void SimplifyTopology ()
 
+void DedupeEdge (int edge)
 
+void CollapseEdge (int edge, std::vector< int > &edges)
 
+void RecursiveEdgeSwap (int edge, int &tag, std::vector< int > &visited, std::vector< int > &edgeSwapStack, std::vector< int > &edges)
 
+void RemoveIfFolded (int edge)
 
+void PairUp (int edge0, int edge1)
 
+void UpdateVert (int vert, int startEdge, int endEdge)
 
+void FormLoop (int current, int end)
 
+void CollapseTri (const glm::ivec3 &triEdge)
 
+void SplitPinchedVerts ()
 
int GetNeighbor (int tri) const
 
glm::ivec4 GetHalfedges (int tri) const
 
BaryIndices GetIndices (int halfedge) const
 
void FillRetainedVerts (Vec< Barycentric > &vertBary) const
 
Vec< BarycentricSubdivide (std::function< int(glm::vec3)>)
 
bool IsInsideQuad (int halfedge) const
 
bool IsMarkedInsideQuad (int halfedge) const
 
glm::vec3 GetNormal (int halfedge, int normalIdx) const
 
glm::vec4 TangentFromNormal (const glm::vec3 &normal, int halfedge) const
 
+std::vector< SmoothnessUpdateSharpenedEdges (const std::vector< Smoothness > &) const
 
+Vec< bool > FlatFaces () const
 
+Vec< int > VertFlatFace (const Vec< bool > &) const
 
+Vec< int > VertHalfedge () const
 
+std::vector< SmoothnessSharpenEdges (float minSharpAngle, float minSmoothness) const
 
void SharpenTangent (int halfedge, float smoothness)
 
void SetNormals (int normalIdx, float minSharpAngle)
 
void LinearizeFlatTangents ()
 
void DistributeTangents (const Vec< bool > &fixedHalfedges)
 
void CreateTangents (int normalIdx)
 
void CreateTangents (std::vector< Smoothness >)
 
+void Refine (std::function< int(glm::vec3)>)
 
+ + + +

+Static Public Member Functions

+static uint32_t ReserveIDs (uint32_t)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+Box bBox_
 
+float precision_ = -1
 
+Error status_ = Error::NoError
 
+Vec< glm::vec3 > vertPos_
 
+Vec< Halfedgehalfedge_
 
+Vec< glm::vec3 > vertNormal_
 
+Vec< glm::vec3 > faceNormal_
 
+Vec< glm::vec4 > halfedgeTangent_
 
+MeshRelationD meshRelation_
 
+Collider collider_
 
+ + + +

+Static Public Attributes

+static std::atomic< uint32_t > meshIDCounter_
 
+

Class Documentation

+ +

◆ manifold::Manifold::Impl::BaryIndices

+ +
+
+ + + + +
struct manifold::Manifold::Impl::BaryIndices
+
+
+ + + + + + + + + + +
Class Members
+int +tri +
+int +start4 +
+int +end4 +
+ +
+
+ +

◆ manifold::Manifold::Impl::MeshRelationD

+ +
+
+ + + + +
struct manifold::Manifold::Impl::MeshRelationD
+
+
+ + + + + + + + + + + + + + + + + + + +
Class Members
+int +originalID = -1 +The originalID of this Manifold if it is an original; -1 otherwise.
+int +numProp = 0 +
+Vec< float > +properties +
+map< int, Relation > +meshIDtransform +
+Vec< TriRef > +triRef +
+Vec< ivec3 > +triProperties +
+ +
+
+ +

◆ manifold::Manifold::Impl::Relation

+ +
+
+ + + + +
struct manifold::Manifold::Impl::Relation
+
+
+ + + + + + + + + + +
Class Members
+int +originalID = -1 +
+mat4x3 +transform = glm::mat4x3(1) +
+bool +backSide = false +
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Impl() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Impl (Shape shape,
const glm::mat4x3 m = glm::mat4x3(1) 
)
+
+

Create either a unit tetrahedron, cube or octahedron. The cube is in the first octant, while the others are symmetric about the origin.

+ +
+
+ +

◆ Impl() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Impl (const Meshmesh,
const MeshRelationDrelation,
const std::vector< float > & propertyTolerance = {},
bool hasFaceIDs = false 
)
+
+

Create a manifold from an input triangle Mesh. Will return an empty Manifold and set an Error Status if the Mesh is not manifold or otherwise invalid. TODO: update halfedgeTangent during SimplifyTopology.

+ +
+
+

Member Function Documentation

+ +

◆ CreateHalfedges()

+ +
+
+ + + + + + + + +
void CreateHalfedges (const Vec< glm::ivec3 > & triVerts)
+
+

Create the halfedge_ data structure from an input triVerts array like Mesh.

+ +
+
+ +

◆ CalculateNormals()

+ +
+
+ + + + + + + +
void CalculateNormals ()
+
+

If face normals are already present, this function uses them to compute vertex normals (angle-weighted pseudo-normals); otherwise it also computes the face normals. Face normals are only calculated when needed because nearly degenerate faces will accrue rounding error, while the Boolean can retain their original normal, which is more accurate and can help with merging coplanar faces.

+

If the face normals have been invalidated by an operation like Warp(), ensure you do faceNormal_.resize(0) before calling this function to force recalculation.

+ +
+
+ +

◆ IncrementMeshIDs()

+ +
+
+ + + + + + + +
void IncrementMeshIDs ()
+
+

Remaps all the contained meshIDs to new unique values to represent new instances of these meshes.

+ +
+
+ +

◆ Update()

+ +
+
+ + + + + + + +
void Update ()
+
+

Does a full recalculation of the face bounding boxes, including updating the collider, but does not resort the faces.

+ +
+
+ +

◆ EdgeCollisions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
SparseIndices EdgeCollisions (const ImplQ,
bool inverted = false 
) const
+
+

Returns a sparse array of the bounding box overlaps between the edges of the input manifold, Q and the faces of this manifold. Returned indices only point to forward halfedges.

+ +
+
+ +

◆ VertexCollisionsZ()

+ +
+
+ + + + + + + + + + + + + + + + + + +
SparseIndices VertexCollisionsZ (VecView< const glm::vec3 > vertsIn,
bool inverted = false 
) const
+
+

Returns a sparse array of the input vertices that project inside the XY bounding boxes of the faces of this manifold.

+ +
+
+ +

◆ CalculateBBox()

+ +
+
+ + + + + + + +
void CalculateBBox ()
+
+

Calculates the bounding box of the entire manifold, which is stored internally to short-cut Boolean operations and to serve as the precision range for Morton code calculation. Ignores NaNs.

+ +
+
+ +

◆ IsFinite()

+ +
+
+ + + + + + + +
bool IsFinite () const
+
+

Determines if all verts are finite. Checking just the bounding box dimensions is insufficient as it ignores NaNs.

+ +
+
+ +

◆ IsIndexInBounds()

+ +
+
+ + + + + + + + +
bool IsIndexInBounds (VecView< const glm::ivec3 > triVerts) const
+
+

Checks that the input triVerts array has all indices inside bounds of the vertPos_ array.

+ +
+
+ +

◆ SetPrecision()

+ +
+
+ + + + + + + + +
void SetPrecision (float minPrecision = -1)
+
+

Sets the precision based on the bounding box, and limits its minimum value by the optional input.

+ +
+
+ +

◆ IsManifold()

+ +
+
+ + + + + + + +
bool IsManifold () const
+
+

Returns true if this manifold is in fact an oriented even manifold and all of the data structures are consistent.

+ +
+
+ +

◆ Is2Manifold()

+ +
+
+ + + + + + + +
bool Is2Manifold () const
+
+

Returns true if this manifold is in fact an oriented 2-manifold and all of the data structures are consistent.

+ +
+
+ +

◆ MatchesTriNormals()

+ +
+
+ + + + + + + +
bool MatchesTriNormals () const
+
+

Returns true if all triangles are CCW relative to their triNormals_.

+ +
+
+ +

◆ NumDegenerateTris()

+ +
+
+ + + + + + + +
int NumDegenerateTris () const
+
+

Returns the number of triangles that are colinear within precision_.

+ +
+
+ +

◆ Finish()

+ +
+
+ + + + + + + +
void Finish ()
+
+

Once halfedge_ has been filled in, this function can be called to create the rest of the internal data structures. This function also removes the verts and halfedges flagged for removal (NaN verts and -1 halfedges).

+ +
+
+ +

◆ SortVerts()

+ +
+
+ + + + + + + +
void SortVerts ()
+
+

Sorts the vertices according to their Morton code.

+ +
+
+ +

◆ ReindexVerts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ReindexVerts (const Vec< int > & vertNew2Old,
int oldNumVert 
)
+
+

Updates the halfedges to point to new vert indices based on a mapping, vertNew2Old. This may be a subset, so the total number of original verts is also given.

+ +
+
+ +

◆ CompactProps()

+ +
+
+ + + + + + + +
void CompactProps ()
+
+

Removes unreferenced property verts and reindexes triProperties.

+ +
+
+ +

◆ GetFaceBoxMorton()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void GetFaceBoxMorton (Vec< Box > & faceBox,
Vec< uint32_t > & faceMorton 
) const
+
+

Fills the faceBox and faceMorton input with the bounding boxes and Morton codes of the faces, respectively. The Morton code is based on the center of the bounding box.

+ +
+
+ +

◆ SortFaces()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SortFaces (Vec< Box > & faceBox,
Vec< uint32_t > & faceMorton 
)
+
+

Sorts the faces of this manifold according to their input Morton code. The bounding box and Morton code arrays are also sorted accordingly.

+ +
+
+ +

◆ GatherFaces()

+ +
+
+ + + + + + + + +
void GatherFaces (const Vec< int > & faceNew2Old)
+
+

Creates the halfedge_ vector for this manifold by copying a set of faces from another manifold, given by oldHalfedge. Input faceNew2Old defines the old faces to gather into this.

+ +
+
+ +

◆ Face2Tri()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Face2Tri (const Vec< int > & faceEdge,
const Vec< TriRef > & halfedgeRef 
)
+
+

Triangulates the faces. In this case, the halfedge_ vector is not yet a set of triangles as required by this data structure, but is instead a set of general faces with the input faceEdge vector having length of the number of faces + 1. The values are indicies into the halfedge_ vector for the first edge of each face, with the final value being the length of the halfedge_ vector itself. Upon return, halfedge_ has been lengthened and properly represents the mesh as a set of triangles as usual. In this process the faceNormal_ values are retained, repeated as necessary.

+ +
+
+ +

◆ Face2Polygons()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PolygonsIdx Face2Polygons (VecView< Halfedge >::IterC start,
VecView< Halfedge >::IterC end,
glm::mat3x2 projection 
) const
+
+

Returns a set of 2D polygons formed by the input projection of the vertices of the list of Halfedges, which must be an even-manifold, meaning each vert must be referenced the same number of times as a startVert and endVert.

+ +
+
+ +

◆ SimplifyTopology()

+ +
+
+ + + + + + + +
void SimplifyTopology ()
+
+

Collapses degenerate triangles by removing edges shorter than precision_ and any edge that is preceeded by an edge that joins the same two face relations. It also performs edge swaps on the long edges of degenerate triangles, though there are some configurations of degenerates that cannot be removed this way.

+

Before collapsing edges, the mesh is checked for duplicate edges (more than one pair of triangles sharing the same edge), which are removed by duplicating one vert and adding two triangles. These degenerate triangles are likely to be collapsed again in the subsequent simplification.

+

Note when an edge collapse would result in something non-manifold, the vertices are duplicated in such a way as to remove handles or separate meshes, thus decreasing the Genus(). It only increases when meshes that have collapsed to just a pair of triangles are removed entirely.

+

Rather than actually removing the edges, this step merely marks them for removal, by setting vertPos to NaN and halfedge to {-1, -1, -1, -1}.

+ +
+
+ +

◆ GetNeighbor()

+ +
+
+ + + + + + + + +
int GetNeighbor (int tri) const
+
+

Returns the tri side index (0-2) connected to the other side of this quad if this tri is part of a quad, or -1 otherwise.

+ +
+
+ +

◆ GetHalfedges()

+ +
+
+ + + + + + + + +
glm::ivec4 GetHalfedges (int tri) const
+
+

For the given triangle index, returns either the three halfedge indices of that triangle and halfedges[3] = -1, or if the triangle is part of a quad, it returns those four indices. If the triangle is part of a quad and is not the lower of the two triangle indices, it returns all -1s.

+ +
+
+ +

◆ GetIndices()

+ +
+
+ + + + + + + + +
Manifold::Impl::BaryIndices GetIndices (int halfedge) const
+
+

Returns the BaryIndices, which gives the tri and indices (0-3), such that GetHalfedges(val.tri)[val.start4] points back to this halfedge, and val.end4 will point to the next one. This function handles this for both triangles and quads. Returns {-1, -1, -1} if the edge is the interior of a quad.

+ +
+
+ +

◆ FillRetainedVerts()

+ +
+
+ + + + + + + + +
void FillRetainedVerts (Vec< Barycentric > & vertBary) const
+
+

Retained verts are part of several triangles, and it doesn't matter which one the vertBary refers to. Here, whichever is last will win and it's done on the CPU for simplicity for now. Using AtomicCAS on .tri should work for a GPU version if desired.

+ +
+
+ +

◆ Subdivide()

+ +
+
+ + + + + + + + +
Vec< Barycentric > Subdivide (std::function< int(glm::vec3)> edgeDivisions)
+
+

Split each edge into n pieces as defined by calling the edgeDivisions function, and sub-triangulate each triangle accordingly. This function doesn't run Finish(), as that is expensive and it'll need to be run after the new vertices have moved, which is a likely scenario after refinement (smoothing).

+ +
+
+ +

◆ IsInsideQuad()

+ +
+
+ + + + + + + + +
bool IsInsideQuad (int halfedge) const
+
+

Returns true if this halfedge should be marked as the interior of a quad, as defined by its two triangles referring to the same face, and those triangles having no further face neighbors beyond.

+ +
+
+ +

◆ IsMarkedInsideQuad()

+ +
+
+ + + + + + + + +
bool IsMarkedInsideQuad (int halfedge) const
+
+

Returns true if this halfedge is an interior of a quad, as defined by its halfedge tangent having negative weight.

+ +
+
+ +

◆ GetNormal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
glm::vec3 GetNormal (int halfedge,
int normalIdx 
) const
+
+

Get the property normal associated with the startVert of this halfedge, where normalIdx shows the beginning of where normals are stored in the properties.

+ +
+
+ +

◆ TangentFromNormal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
glm::vec4 TangentFromNormal (const glm::vec3 & normal,
int halfedge 
) const
+
+

Returns a circular tangent for the requested halfedge, orthogonal to the given normal vector, and avoiding folding.

+ +
+
+ +

◆ SharpenTangent()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SharpenTangent (int halfedge,
float smoothness 
)
+
+

Sharpen tangents that intersect an edge to sharpen that edge. The weight is unchanged, as this has a squared effect on radius of curvature, except in the case of zero radius, which is marked with weight = 0.

+ +
+
+ +

◆ SetNormals()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SetNormals (int normalIdx,
float minSharpAngle 
)
+
+

Instead of calculating the internal shared normals like CalculateNormals does, this method fills in vertex properties, unshared across edges that are bent more than minSharpAngle.

+ +
+
+ +

◆ LinearizeFlatTangents()

+ +
+
+ + + + + + + +
void LinearizeFlatTangents ()
+
+

Tangents get flattened to create sharp edges by setting their weight to zero. This is the natural limit of reducing the weight to increase the sharpness smoothly. This limit gives a decent shape, but it causes the parameterization to be stretched and compresses it near the edges, which is good for resolving tight curvature, but bad for property interpolation. This function fixes the parameter stretch at the limit for sharp edges, since there is no curvature to resolve. Note this also changes the overall shape - making it more evenly curved.

+ +
+
+ +

◆ DistributeTangents()

+ +
+
+ + + + + + + + +
void DistributeTangents (const Vec< bool > & fixedHalfedges)
+
+

Redistribute the tangents around each vertex so that the angles between them have the same ratios as the angles of the triangles between the corresponding edges. This avoids folding the output shape and gives smoother results. There must be at least one fixed halfedge on a vertex for that vertex to be operated on. If there is only one, then that halfedge is not treated as fixed, but the whole circle is turned to an average orientation.

+ +
+
+ +

◆ CreateTangents() [1/2]

+ +
+
+ + + + + + + + +
void CreateTangents (int normalIdx)
+
+

Calculates halfedgeTangent_, allowing the manifold to be refined and smoothed. The tangents form weighted cubic Beziers along each edge. This function creates circular arcs where possible (minimizing maximum curvature), constrained to the indicated property normals. Across edges that form discontinuities in the normals, the tangent vectors are zero-length, allowing the shape to form a sharp corner with minimal oscillation.

+ +
+
+ +

◆ CreateTangents() [2/2]

+ +
+
+ + + + + + + + +
void CreateTangents (std::vector< SmoothnesssharpenedEdges)
+
+

Calculates halfedgeTangent_, allowing the manifold to be refined and smoothed. The tangents form weighted cubic Beziers along each edge. This function creates circular arcs where possible (minimizing maximum curvature), constrained to the vertex normals. Where sharpenedEdges are specified, the tangents are shortened that intersect the sharpened edge, concentrating the curvature there, while the tangents of the sharp edges themselves are aligned for continuity.

+ +
+
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_mesh_g_l-members.html b/docs/html/structmanifold_1_1_mesh_g_l-members.html new file mode 100644 index 000000000..69fc7896d --- /dev/null +++ b/docs/html/structmanifold_1_1_mesh_g_l-members.html @@ -0,0 +1,131 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshGL Member List
+
+
+ +

This is the complete list of members for MeshGL, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
faceIDMeshGL
halfedgeTangentMeshGL
LevelSet(std::function< float(glm::vec3)> sdf, Box bounds, float edgeLength, float level=0, float precision=-1, bool canParallel=true)MeshGLstatic
Merge()MeshGL
mergeFromVertMeshGL
mergeToVertMeshGL
MeshGL()=default (defined in MeshGL)MeshGL
MeshGL(const Mesh &mesh)MeshGL
numPropMeshGL
NumTri() constMeshGLinline
NumVert() constMeshGLinline
precisionMeshGL
runIndexMeshGL
runOriginalIDMeshGL
runTransformMeshGL
triVertsMeshGL
vertPropertiesMeshGL
+
+ + + + diff --git a/docs/html/structmanifold_1_1_mesh_g_l.html b/docs/html/structmanifold_1_1_mesh_g_l.html new file mode 100644 index 000000000..408d7655d --- /dev/null +++ b/docs/html/structmanifold_1_1_mesh_g_l.html @@ -0,0 +1,342 @@ + + + + + + + +Manifold: MeshGL Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <manifold.h>

+ + + + + + + + + + + + + +

+Public Member Functions

+uint32_t NumVert () const
 Number of property vertices.
 
+uint32_t NumTri () const
 Number of triangles.
 
MeshGL (const Mesh &mesh)
 Constructs a position-only MeshGL from the input Mesh.
 
bool Merge ()
 
+ + + +

+Static Public Member Functions

static MeshGL LevelSet (std::function< float(glm::vec3)> sdf, Box bounds, float edgeLength, float level=0, float precision=-1, bool canParallel=true)
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+uint32_t numProp = 3
 Number of properties per vertex, always >= 3.
 
std::vector< float > vertProperties
 
std::vector< uint32_t > triVerts
 
std::vector< uint32_t > mergeFromVert
 
std::vector< uint32_t > mergeToVert
 
std::vector< uint32_t > runIndex
 
std::vector< uint32_t > runOriginalID
 
std::vector< float > runTransform
 
std::vector< uint32_t > faceID
 
std::vector< float > halfedgeTangent
 
float precision = 0
 
+

Detailed Description

+

An alternative to Mesh for output suitable for pushing into graphics libraries directly. This may not be manifold since the verts are duplicated along property boundaries that do not match. The additional merge vectors store this missing information, allowing the manifold to be reconstructed.

+

Member Function Documentation

+ +

◆ Merge()

+ +
+
+ + + + + + + +
bool Merge ()
+
+

Updates the mergeFromVert and mergeToVert vectors in order to create a manifold solid. If the MeshGL is already manifold, no change will occur and the function will return false. Otherwise, this will merge verts along open edges within precision (the maximum of the MeshGL precision and the baseline bounding-box precision), keeping any from the existing merge vectors.

+

There is no guarantee the result will be manifold - this is a best-effort helper function designed primarily to aid in the case where a manifold multi-material MeshGL was produced, but its merge vectors were lost due to a round-trip through a file format. Constructing a Manifold from the result will report a Status if it is not manifold.

+ +
+
+

Member Data Documentation

+ +

◆ vertProperties

+ +
+
+ + + + +
std::vector<float> vertProperties
+
+

Flat, GL-style interleaved list of all vertex properties: propVal = vertProperties[vert * numProp + propIdx]. The first three properties are always the position x, y, z.

+ +
+
+ +

◆ triVerts

+ +
+
+ + + + +
std::vector<uint32_t> triVerts
+
+

The vertex indices of the three triangle corners in CCW (from the outside) order, for each triangle.

+ +
+
+ +

◆ mergeFromVert

+ +
+
+ + + + +
std::vector<uint32_t> mergeFromVert
+
+

Optional: A list of only the vertex indicies that need to be merged to reconstruct the manifold.

+ +
+
+ +

◆ mergeToVert

+ +
+
+ + + + +
std::vector<uint32_t> mergeToVert
+
+

Optional: The same length as mergeFromVert, and the corresponding value contains the vertex to merge with. It will have an identical position, but the other properties may differ.

+ +
+
+ +

◆ runIndex

+ +
+
+ + + + +
std::vector<uint32_t> runIndex
+
+

Optional: Indicates runs of triangles that correspond to a particular input mesh instance. The runs encompass all of triVerts and are sorted by runOriginalID. Run i begins at triVerts[runIndex[i]] and ends at triVerts[runIndex[i+1]]. All runIndex values are divisible by 3. Returned runIndex will always be 1 longer than runOriginalID, but same length is also allowed as input: triVerts.size() will be automatically appended in this case.

+ +
+
+ +

◆ runOriginalID

+ +
+
+ + + + +
std::vector<uint32_t> runOriginalID
+
+

Optional: The OriginalID of the mesh this triangle run came from. This ID is ideal for reapplying materials to the output mesh. Multiple runs may have the same ID, e.g. representing different copies of the same input mesh. If you create an input MeshGL that you want to be able to reference as one or more originals, be sure to set unique values from ReserveIDs().

+ +
+
+ +

◆ runTransform

+ +
+
+ + + + +
std::vector<float> runTransform
+
+

Optional: For each run, a 3x4 transform is stored representing how the corresponding original mesh was transformed to create this triangle run. This matrix is stored in column-major order and the length of the overall vector is 12 * runOriginalID.size().

+ +
+
+ +

◆ faceID

+ +
+
+ + + + +
std::vector<uint32_t> faceID
+
+

Optional: Length NumTri, contains an ID of the source face this triangle comes from. When auto-generated, this ID will be a triangle index into the original mesh. All neighboring coplanar triangles from that input mesh will refer to a single triangle of that group as the faceID. When supplying faceIDs, ensure that triangles with the same ID are in fact coplanar and have consistent properties (within some tolerance) or the output will be surprising.

+ +
+
+ +

◆ halfedgeTangent

+ +
+
+ + + + +
std::vector<float> halfedgeTangent
+
+

Optional: The X-Y-Z-W weighted tangent vectors for smooth Refine(). If non-empty, must be exactly four times as long as Mesh.triVerts. Indexed as 4 * (3 * tri + i) + j, i < 3, j < 4, representing the tangent value Mesh.triVerts[tri][i] along the CCW edge. If empty, mesh is faceted.

+ +
+
+ +

◆ precision

+ +
+
+ + + + +
float precision = 0
+
+

The absolute precision of the vertex positions, based on accrued rounding errors. When creating a Manifold, the precision used will be the maximum of this and a baseline precision from the size of the bounding box. Any edge shorter than precision may be collapsed.

+ +
+
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_mesh_g_l.js b/docs/html/structmanifold_1_1_mesh_g_l.js new file mode 100644 index 000000000..4b5cdaad8 --- /dev/null +++ b/docs/html/structmanifold_1_1_mesh_g_l.js @@ -0,0 +1,18 @@ +var structmanifold_1_1_mesh_g_l = +[ + [ "MeshGL", "structmanifold_1_1_mesh_g_l.html#a258a2922fc12421c9a5ebde99606d0ed", null ], + [ "NumVert", "structmanifold_1_1_mesh_g_l.html#a21b84c701fbe74b93047405e36073658", null ], + [ "NumTri", "structmanifold_1_1_mesh_g_l.html#a3361a5e76bdb57f495d6ed826b3294b6", null ], + [ "Merge", "structmanifold_1_1_mesh_g_l.html#a2078d075bef279041b67769e4197c254", null ], + [ "numProp", "structmanifold_1_1_mesh_g_l.html#adf2ac53615be5ed3bf9ce4665e81eb75", null ], + [ "vertProperties", "structmanifold_1_1_mesh_g_l.html#aa4312e60a8b813c1ceb0e4229a993983", null ], + [ "triVerts", "structmanifold_1_1_mesh_g_l.html#afe0601a32ce917d3324b430a34f5d118", null ], + [ "mergeFromVert", "structmanifold_1_1_mesh_g_l.html#a77a299604952d11f9859c85f6e7b0078", null ], + [ "mergeToVert", "structmanifold_1_1_mesh_g_l.html#aefcc49e01a1d6de7ce57830d55b66e9a", null ], + [ "runIndex", "structmanifold_1_1_mesh_g_l.html#a0a53d3053354c6a80b1164f4e87c3ab4", null ], + [ "runOriginalID", "structmanifold_1_1_mesh_g_l.html#aa67d01a9b240154a754945eca9fca3e0", null ], + [ "runTransform", "structmanifold_1_1_mesh_g_l.html#a2ea55ea45b4bd7ec973dcf2973abaa20", null ], + [ "faceID", "structmanifold_1_1_mesh_g_l.html#ac6e7182a9cef30c9644ee167fbff30e1", null ], + [ "halfedgeTangent", "structmanifold_1_1_mesh_g_l.html#a387df8d12d2307639b862c30efa7e5c5", null ], + [ "precision", "structmanifold_1_1_mesh_g_l.html#acd76b1c12cd41083eeef7b6f09c32141", null ] +]; \ No newline at end of file diff --git a/docs/html/structmanifold_1_1_negate-members.html b/docs/html/structmanifold_1_1_negate-members.html new file mode 100644 index 000000000..1ea970f23 --- /dev/null +++ b/docs/html/structmanifold_1_1_negate-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Negate< T > Member List
+
+
+ +

This is the complete list of members for Negate< T >, including all inherited members.

+ + +
operator()(T v) const (defined in Negate< T >)Negate< T >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_negate.html b/docs/html/structmanifold_1_1_negate.html new file mode 100644 index 000000000..18590905f --- /dev/null +++ b/docs/html/structmanifold_1_1_negate.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Negate< T > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Negate< T > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+T operator() (T v) const
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_path_impl-members.html b/docs/html/structmanifold_1_1_path_impl-members.html new file mode 100644 index 000000000..bea09e2ea --- /dev/null +++ b/docs/html/structmanifold_1_1_path_impl-members.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathImpl Member List
+
+
+ +

This is the complete list of members for PathImpl, including all inherited members.

+ + + + +
operator const C2::PathsD &() const (defined in PathImpl)PathImplinline
PathImpl(const C2::PathsD paths_) (defined in PathImpl)PathImplinline
paths_ (defined in PathImpl)PathImpl
+
+ + + + diff --git a/docs/html/structmanifold_1_1_path_impl.html b/docs/html/structmanifold_1_1_path_impl.html new file mode 100644 index 000000000..fdcb1e0e0 --- /dev/null +++ b/docs/html/structmanifold_1_1_path_impl.html @@ -0,0 +1,132 @@ + + + + + + + +Manifold: PathImpl Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathImpl Struct Reference
+
+
+ + + + + + +

+Public Member Functions

PathImpl (const C2::PathsD paths_)
 
operator const C2::PathsD & () const
 
+ + + +

+Public Attributes

+const C2::PathsD paths_
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_rect-members.html b/docs/html/structmanifold_1_1_rect-members.html new file mode 100644 index 000000000..298cb46b1 --- /dev/null +++ b/docs/html/structmanifold_1_1_rect-members.html @@ -0,0 +1,134 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Rect Member List
+
+
+ +

This is the complete list of members for Rect, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
Area() constRectinline
Center() constRectinline
Contains(const glm::vec2 &p) constRectinline
Contains(const Rect &rect) constRectinline
DoesOverlap(const Rect &rect) constRectinline
IsEmpty() constRectinline
IsFinite() constRectinline
max (defined in Rect)Rect
min (defined in Rect)Rect
operator*(const glm::vec2 scale) constRectinline
operator*=(const glm::vec2 scale)Rectinline
operator+(const glm::vec2 shift) constRectinline
operator+=(const glm::vec2 shift)Rectinline
Rect()Rectinline
Rect(const glm::vec2 a, const glm::vec2 b)Rectinline
Scale() constRectinline
Size() constRectinline
Transform(const glm::mat3x2 &m) constRectinline
Union(const glm::vec2 p)Rectinline
Union(const Rect &rect) constRectinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_rect.html b/docs/html/structmanifold_1_1_rect.html new file mode 100644 index 000000000..1b752f054 --- /dev/null +++ b/docs/html/structmanifold_1_1_rect.html @@ -0,0 +1,667 @@ + + + + + + + +Manifold: Rect Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <public.h>

+ + + + + + +

+Public Member Functions

 Rect ()
 
 Rect (const glm::vec2 a, const glm::vec2 b)
 
+ + + + + +

+Public Attributes

+glm::vec2 min = glm::vec2(std::numeric_limits<float>::infinity())
 
+glm::vec2 max = glm::vec2(-std::numeric_limits<float>::infinity())
 
+ + + + + + + + + + + + + + + + + + + + +

Information

Details of the rectangle

+
glm::vec2 Size () const
 
float Area () const
 
float Scale () const
 
glm::vec2 Center () const
 
bool Contains (const glm::vec2 &p) const
 
bool Contains (const Rect &rect) const
 
bool DoesOverlap (const Rect &rect) const
 
bool IsEmpty () const
 
bool IsFinite () const
 
+ + + + + + + + + + + + + + + +

Modification

void Union (const glm::vec2 p)
 
Rect Union (const Rect &rect) const
 
Rect operator+ (const glm::vec2 shift) const
 
Rectoperator+= (const glm::vec2 shift)
 
Rect operator* (const glm::vec2 scale) const
 
Rectoperator*= (const glm::vec2 scale)
 
Rect Transform (const glm::mat3x2 &m) const
 
+

Detailed Description

+

Axis-aligned rectangular bounds.

+

Constructor & Destructor Documentation

+ +

◆ Rect() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Rect ()
+
+inline
+
+

Default constructor is an empty rectangle..

+ +
+
+ +

◆ Rect() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Rect (const glm::vec2 a,
const glm::vec2 b 
)
+
+inline
+
+

Create a rectangle that contains the two given points.

+ +
+
+

Member Function Documentation

+ +

◆ Size()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec2 Size () const
+
+inline
+
+

Return the dimensions of the rectangle.

+ +
+
+ +

◆ Area()

+ +
+
+ + + + + +
+ + + + + + + +
float Area () const
+
+inline
+
+

Return the area of the rectangle.

+ +
+
+ +

◆ Scale()

+ +
+
+ + + + + +
+ + + + + + + +
float Scale () const
+
+inline
+
+

Returns the absolute-largest coordinate value of any contained point.

+ +
+
+ +

◆ Center()

+ +
+
+ + + + + +
+ + + + + + + +
glm::vec2 Center () const
+
+inline
+
+

Returns the center point of the rectangle.

+ +
+
+ +

◆ Contains() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool Contains (const glm::vec2 & p) const
+
+inline
+
+

Does this rectangle contain (includes on border) the given point?

+ +
+
+ +

◆ Contains() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool Contains (const Rectrect) const
+
+inline
+
+

Does this rectangle contain (includes equal) the given rectangle?

+ +
+
+ +

◆ DoesOverlap()

+ +
+
+ + + + + +
+ + + + + + + + +
bool DoesOverlap (const Rectrect) const
+
+inline
+
+

Does this rectangle overlap the one given (including equality)?

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
bool IsEmpty () const
+
+inline
+
+

Is the rectangle empty (containing no space)?

+ +
+
+ +

◆ IsFinite()

+ +
+
+ + + + + +
+ + + + + + + +
bool IsFinite () const
+
+inline
+
+

Does this recangle have finite bounds?

+ +
+
+ +

◆ Union() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void Union (const glm::vec2 p)
+
+inline
+
+

Expand this rectangle (in place) to include the given point.

+ +
+
+ +

◆ Union() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Rect Union (const Rectrect) const
+
+inline
+
+

Expand this rectangle to include the given Rect.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + +
Rect operator+ (const glm::vec2 shift) const
+
+inline
+
+

Shift this rectangle by the given vector.

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + +
+ + + + + + + + +
Rect & operator+= (const glm::vec2 shift)
+
+inline
+
+

Shift this rectangle in-place by the given vector.

+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + +
+ + + + + + + + +
Rect operator* (const glm::vec2 scale) const
+
+inline
+
+

Scale this rectangle by the given vector.

+ +
+
+ +

◆ operator*=()

+ +
+
+ + + + + +
+ + + + + + + + +
Rect & operator*= (const glm::vec2 scale)
+
+inline
+
+

Scale this rectangle in-place by the given vector.

+ +
+
+ +

◆ Transform()

+ +
+
+ + + + + +
+ + + + + + + + +
Rect Transform (const glm::mat3x2 & m) const
+
+inline
+
+

Transform the rectangle by the given axis-aligned affine transform.

+

Ensure the transform passed in is axis-aligned (rotations are all multiples of 90 degrees), or else the resulting rectangle will no longer bound properly.

+ +
+
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_rect.js b/docs/html/structmanifold_1_1_rect.js new file mode 100644 index 000000000..d158bc320 --- /dev/null +++ b/docs/html/structmanifold_1_1_rect.js @@ -0,0 +1,21 @@ +var structmanifold_1_1_rect = +[ + [ "Rect", "structmanifold_1_1_rect.html#ae436fd0322c99157c5443a3385961e22", null ], + [ "Rect", "structmanifold_1_1_rect.html#a00ed04e729457429ca773061236a3bee", null ], + [ "Size", "structmanifold_1_1_rect.html#a232479a21f63dd4e6868cdedec53fa71", null ], + [ "Area", "structmanifold_1_1_rect.html#a10d5618fa11db90402e29c30fbf50096", null ], + [ "Scale", "structmanifold_1_1_rect.html#ac60a4c17cace9263b70bf5e5c6f43b58", null ], + [ "Center", "structmanifold_1_1_rect.html#a04bdce0e30cdda6f80ccb5255a12f7df", null ], + [ "Contains", "structmanifold_1_1_rect.html#a348dcfe50700c6ff69c6fa7641f7537d", null ], + [ "Contains", "structmanifold_1_1_rect.html#aca39547495139ea25f2edd87569e10b6", null ], + [ "DoesOverlap", "structmanifold_1_1_rect.html#ae9b86c34e407f27313804c9a7d30c8c2", null ], + [ "IsEmpty", "structmanifold_1_1_rect.html#a8e12342fc420701fbffd97025421575a", null ], + [ "IsFinite", "structmanifold_1_1_rect.html#a33b7dcc502aae627fbc56bcfecf33af1", null ], + [ "Union", "structmanifold_1_1_rect.html#af8cf47248b361c1f8eec6b22dedb4233", null ], + [ "Union", "structmanifold_1_1_rect.html#ac00b0b5a156d4a40a65637b7d419df70", null ], + [ "operator+", "structmanifold_1_1_rect.html#a3b80b2b8aa4ae73c6b4be29b7d4f09fc", null ], + [ "operator+=", "structmanifold_1_1_rect.html#a88e57e987bcbbc947831388b367fa036", null ], + [ "operator*", "structmanifold_1_1_rect.html#a2ef09e7a095674473637a34b26b4b389", null ], + [ "operator*=", "structmanifold_1_1_rect.html#aec959d2e100436dce6e226adb93ce9aa", null ], + [ "Transform", "structmanifold_1_1_rect.html#a3c4003d2fc5299530dcce7deb9df54a2", null ] +]; \ No newline at end of file diff --git a/docs/html/structmanifold_1_1_reindex_edge-members.html b/docs/html/structmanifold_1_1_reindex_edge-members.html new file mode 100644 index 000000000..f56b0dd53 --- /dev/null +++ b/docs/html/structmanifold_1_1_reindex_edge-members.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ReindexEdge< inverted > Member List
+
+
+ +

This is the complete list of members for ReindexEdge< inverted >, including all inherited members.

+ + + + +
edges (defined in ReindexEdge< inverted >)ReindexEdge< inverted >
indices (defined in ReindexEdge< inverted >)ReindexEdge< inverted >
operator()(size_t i) (defined in ReindexEdge< inverted >)ReindexEdge< inverted >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_reindex_edge.html b/docs/html/structmanifold_1_1_reindex_edge.html new file mode 100644 index 000000000..1b14794c7 --- /dev/null +++ b/docs/html/structmanifold_1_1_reindex_edge.html @@ -0,0 +1,132 @@ + + + + + + + +Manifold: ReindexEdge< inverted > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ReindexEdge< inverted > Struct Template Reference
+
+
+ + + + +

+Public Member Functions

+void operator() (size_t i)
 
+ + + + + +

+Public Attributes

+VecView< const TmpEdgeedges
 
+SparseIndicesindices
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_sparse_indices_1_1first_finite-members.html b/docs/html/structmanifold_1_1_sparse_indices_1_1first_finite-members.html new file mode 100644 index 000000000..e78e91033 --- /dev/null +++ b/docs/html/structmanifold_1_1_sparse_indices_1_1first_finite-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SparseIndices::firstFinite< T > Member List
+
+
+ +

This is the complete list of members for SparseIndices::firstFinite< T >, including all inherited members.

+ + + + + + + +
Finite(float v) const (defined in SparseIndices::firstFinite< T >)SparseIndices::firstFinite< T >inline
Finite(glm::vec2 v) const (defined in SparseIndices::firstFinite< T >)SparseIndices::firstFinite< T >inline
Finite(glm::vec3 v) const (defined in SparseIndices::firstFinite< T >)SparseIndices::firstFinite< T >inline
Finite(glm::vec4 v) const (defined in SparseIndices::firstFinite< T >)SparseIndices::firstFinite< T >inline
operator()(const int i) const (defined in SparseIndices::firstFinite< T >)SparseIndices::firstFinite< T >inline
v (defined in SparseIndices::firstFinite< T >)SparseIndices::firstFinite< T >
+
+ + + + diff --git a/docs/html/structmanifold_1_1_sparse_indices_1_1first_finite.html b/docs/html/structmanifold_1_1_sparse_indices_1_1first_finite.html new file mode 100644 index 000000000..870e70188 --- /dev/null +++ b/docs/html/structmanifold_1_1_sparse_indices_1_1first_finite.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: SparseIndices::firstFinite< T > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SparseIndices::firstFinite< T > Struct Template Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

+bool Finite (float v) const
 
+bool Finite (glm::vec2 v) const
 
+bool Finite (glm::vec3 v) const
 
+bool Finite (glm::vec4 v) const
 
+bool operator() (const int i) const
 
+ + + +

+Public Attributes

+VecView< T > v
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_strided_range-members.html b/docs/html/structmanifold_1_1_strided_range-members.html new file mode 100644 index 000000000..d31de0597 --- /dev/null +++ b/docs/html/structmanifold_1_1_strided_range-members.html @@ -0,0 +1,117 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StridedRange< Iter > Member List
+
+
+ +

This is the complete list of members for StridedRange< Iter >, including all inherited members.

+ + + + +
begin() const (defined in StridedRange< Iter >)StridedRange< Iter >inline
end() const (defined in StridedRange< Iter >)StridedRange< Iter >inline
StridedRange(Iter start, Iter end, size_t stride) (defined in StridedRange< Iter >)StridedRange< Iter >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_strided_range.html b/docs/html/structmanifold_1_1_strided_range.html new file mode 100644 index 000000000..00d13e0a9 --- /dev/null +++ b/docs/html/structmanifold_1_1_strided_range.html @@ -0,0 +1,129 @@ + + + + + + + +Manifold: StridedRange< Iter > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StridedRange< Iter > Struct Template Reference
+
+
+ + + + + + + + +

+Public Member Functions

StridedRange (Iter start, Iter end, size_t stride)
 
+StridedRangeIter begin () const
 
+StridedRangeIter end () const
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_timer-members.html b/docs/html/structmanifold_1_1_timer-members.html new file mode 100644 index 000000000..6ca95dd64 --- /dev/null +++ b/docs/html/structmanifold_1_1_timer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Timer Member List
+
+
+ +

This is the complete list of members for Timer, including all inherited members.

+ + + + + + + +
Elapsed() (defined in Timer)Timerinline
end (defined in Timer)Timer
Print(std::string message) (defined in Timer)Timerinline
start (defined in Timer)Timer
Start() (defined in Timer)Timerinline
Stop() (defined in Timer)Timerinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_timer.html b/docs/html/structmanifold_1_1_timer.html new file mode 100644 index 000000000..5931c3570 --- /dev/null +++ b/docs/html/structmanifold_1_1_timer.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: Timer Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + + + + + +

+Public Member Functions

+void Start ()
 
+void Stop ()
 
+float Elapsed ()
 
+void Print (std::string message)
 
+ + + + + +

+Public Attributes

+std::chrono::high_resolution_clock::time_point start
 
+std::chrono::high_resolution_clock::time_point end
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_tmp_edge-members.html b/docs/html/structmanifold_1_1_tmp_edge-members.html new file mode 100644 index 000000000..4cb83befc --- /dev/null +++ b/docs/html/structmanifold_1_1_tmp_edge-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TmpEdge Member List
+
+
+ +

This is the complete list of members for TmpEdge, including all inherited members.

+ + + + + + + +
first (defined in TmpEdge)TmpEdge
halfedgeIdx (defined in TmpEdge)TmpEdge
operator<(const TmpEdge &other) const (defined in TmpEdge)TmpEdgeinline
second (defined in TmpEdge)TmpEdge
TmpEdge() (defined in TmpEdge)TmpEdgeinline
TmpEdge(int start, int end, int idx) (defined in TmpEdge)TmpEdgeinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_tmp_edge.html b/docs/html/structmanifold_1_1_tmp_edge.html new file mode 100644 index 000000000..66b23c1b7 --- /dev/null +++ b/docs/html/structmanifold_1_1_tmp_edge.html @@ -0,0 +1,142 @@ + + + + + + + +Manifold: TmpEdge Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <shared.h>

+ + + + + + +

+Public Member Functions

TmpEdge (int start, int end, int idx)
 
+bool operator< (const TmpEdge &other) const
 
+ + + + + + + +

+Public Attributes

+int first
 
+int second
 
+int halfedgeIdx
 
+

Detailed Description

+

This is a temporary edge structure which only stores edges forward and references the halfedge it was created from.

+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_transform_iterator-members.html b/docs/html/structmanifold_1_1_transform_iterator-members.html new file mode 100644 index 000000000..e83bce939 --- /dev/null +++ b/docs/html/structmanifold_1_1_transform_iterator-members.html @@ -0,0 +1,136 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformIterator< F, Iter > Member List
+
+
+ +

This is the complete list of members for TransformIterator< F, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >
iterator_category typedef (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >
operator TransformIterator< F, const Iter >() const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator!=(TransformIterator other) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator*() const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator+(size_t n) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator++() (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator++(int) (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator+=(size_t n) (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator-(size_t n) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator-(TransformIterator other) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator--() (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator--(int) (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator-=(size_t n) (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator<(TransformIterator other) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator=(const TransformIterator &other) (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator==(TransformIterator other) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
operator[](size_t i) const (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
pointer typedef (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >
reference typedef (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >
TransformIterator(Iter iter, F f) (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >inline
value_type typedef (defined in TransformIterator< F, Iter >)TransformIterator< F, Iter >
+
+ + + + diff --git a/docs/html/structmanifold_1_1_transform_iterator.html b/docs/html/structmanifold_1_1_transform_iterator.html new file mode 100644 index 000000000..78054825c --- /dev/null +++ b/docs/html/structmanifold_1_1_transform_iterator.html @@ -0,0 +1,189 @@ + + + + + + + +Manifold: TransformIterator< F, Iter > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TransformIterator< F, Iter > Struct Template Reference
+
+
+ + + + + + + + + + + + +

+Public Types

+using pointer = void
 
+using reference = std::invoke_result_t< F, typename std::iterator_traits< std::remove_const_t< Iter > >::value_type >
 
+using difference_type = typename std::iterator_traits< std::remove_const_t< Iter > >::difference_type
 
+using value_type = reference
 
+using iterator_category = typename std::iterator_traits< std::remove_const_t< Iter > >::iterator_category
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TransformIterator (Iter iter, F f)
 
+TransformIteratoroperator= (const TransformIterator &other)
 
+reference operator* () const
 
+reference operator[] (size_t i) const
 
+TransformIteratoroperator++ ()
 
+TransformIterator operator++ (int)
 
+TransformIteratoroperator-- ()
 
+TransformIterator operator-- (int)
 
+TransformIterator operator+ (size_t n) const
 
+TransformIteratoroperator+= (size_t n)
 
+TransformIterator operator- (size_t n) const
 
+TransformIteratoroperator-= (size_t n)
 
+bool operator== (TransformIterator other) const
 
+bool operator!= (TransformIterator other) const
 
+bool operator< (TransformIterator other) const
 
+difference_type operator- (TransformIterator other) const
 
operator TransformIterator< F, const Iter > () const
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_tri_ref-members.html b/docs/html/structmanifold_1_1_tri_ref-members.html new file mode 100644 index 000000000..72e0713e1 --- /dev/null +++ b/docs/html/structmanifold_1_1_tri_ref-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriRef Member List
+
+
+ +

This is the complete list of members for TriRef, including all inherited members.

+ + + + + +
meshIDTriRef
originalIDTriRef
SameFace(const TriRef &other) const (defined in TriRef)TriRefinline
triTriRef
+
+ + + + diff --git a/docs/html/structmanifold_1_1_tri_ref.html b/docs/html/structmanifold_1_1_tri_ref.html new file mode 100644 index 000000000..ee4f07c44 --- /dev/null +++ b/docs/html/structmanifold_1_1_tri_ref.html @@ -0,0 +1,178 @@ + + + + + + + +Manifold: TriRef Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + +

+Public Member Functions

+bool SameFace (const TriRef &other) const
 
+ + + + + + + +

+Public Attributes

int meshID
 
int originalID
 
int tri
 
+

Member Data Documentation

+ +

◆ meshID

+ +
+
+ + + + +
int meshID
+
+

The unique ID of the mesh instance of this triangle. If .meshID and .tri match for two triangles, then they are coplanar and came from the same face.

+ +
+
+ +

◆ originalID

+ +
+
+ + + + +
int originalID
+
+

The OriginalID of the mesh this triangle came from. This ID is ideal for reapplying properties like UV coordinates to the output mesh.

+ +
+
+ +

◆ tri

+ +
+
+ + + + +
int tri
+
+

The triangle index of the original triangle this was part of: Mesh.triVerts[tri].

+ +
+
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1_tri_ref.js b/docs/html/structmanifold_1_1_tri_ref.js new file mode 100644 index 000000000..98cc65108 --- /dev/null +++ b/docs/html/structmanifold_1_1_tri_ref.js @@ -0,0 +1,6 @@ +var structmanifold_1_1_tri_ref = +[ + [ "meshID", "structmanifold_1_1_tri_ref.html#a3552b302dec169446141ae02c7a2dc12", null ], + [ "originalID", "structmanifold_1_1_tri_ref.html#aa09887a4f79bfc78615dbd09d9001fd7", null ], + [ "tri", "structmanifold_1_1_tri_ref.html#a15e0e24263c3a2cc742b9cfcbabedf88", null ] +]; \ No newline at end of file diff --git a/docs/html/structmanifold_1_1_union_find-members.html b/docs/html/structmanifold_1_1_union_find-members.html new file mode 100644 index 000000000..deedc4069 --- /dev/null +++ b/docs/html/structmanifold_1_1_union_find-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UnionFind< I, R > Member List
+
+
+ +

This is the complete list of members for UnionFind< I, R >, including all inherited members.

+ + + + + + + +
connectedComponents(std::vector< I > &components) (defined in UnionFind< I, R >)UnionFind< I, R >inline
find(I x) (defined in UnionFind< I, R >)UnionFind< I, R >inline
parents (defined in UnionFind< I, R >)UnionFind< I, R >
ranks (defined in UnionFind< I, R >)UnionFind< I, R >
UnionFind(I numNodes) (defined in UnionFind< I, R >)UnionFind< I, R >inline
unionXY(I x, I y) (defined in UnionFind< I, R >)UnionFind< I, R >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1_union_find.html b/docs/html/structmanifold_1_1_union_find.html new file mode 100644 index 000000000..983296472 --- /dev/null +++ b/docs/html/structmanifold_1_1_union_find.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: UnionFind< I, R > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UnionFind< I, R > Struct Template Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

UnionFind (I numNodes)
 
+I find (I x)
 
+void unionXY (I x, I y)
 
+I connectedComponents (std::vector< I > &components)
 
+ + + + + +

+Public Attributes

+Vec< I > parents
 
+Vec< R > ranks
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_build_internal_boxes-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_build_internal_boxes-members.html new file mode 100644 index 000000000..1425cc044 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_build_internal_boxes-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BuildInternalBoxes Member List
+
+
+ +

This is the complete list of members for BuildInternalBoxes, including all inherited members.

+ + + + + + +
counter_ (defined in BuildInternalBoxes)BuildInternalBoxes
internalChildren_ (defined in BuildInternalBoxes)BuildInternalBoxes
nodeBBox_ (defined in BuildInternalBoxes)BuildInternalBoxes
nodeParent_ (defined in BuildInternalBoxes)BuildInternalBoxes
operator()(int leaf) (defined in BuildInternalBoxes)BuildInternalBoxesinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_build_internal_boxes.html b/docs/html/structmanifold_1_1collider__internal_1_1_build_internal_boxes.html new file mode 100644 index 000000000..ba0773332 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_build_internal_boxes.html @@ -0,0 +1,138 @@ + + + + + + + +Manifold: BuildInternalBoxes Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BuildInternalBoxes Struct Reference
+
+
+ + + + +

+Public Member Functions

+void operator() (int leaf)
 
+ + + + + + + + + +

+Public Attributes

+VecView< BoxnodeBBox_
 
+VecView< int > counter_
 
+const VecView< int > nodeParent_
 
+const VecView< std::pair< int, int > > internalChildren_
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_count_collisions-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_count_collisions-members.html new file mode 100644 index 000000000..dab5f3872 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_count_collisions-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CountCollisions Member List
+
+
+ +

This is the complete list of members for CountCollisions, including all inherited members.

+ + + + + + +
counts (defined in CountCollisions)CountCollisions
earlyexit(int _queryIdx) (defined in CountCollisions)CountCollisionsinline
empty (defined in CountCollisions)CountCollisions
end(int queryIdx) (defined in CountCollisions)CountCollisionsinline
record(int queryIdx, int _leafIdx) (defined in CountCollisions)CountCollisionsinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_count_collisions.html b/docs/html/structmanifold_1_1collider__internal_1_1_count_collisions.html new file mode 100644 index 000000000..a75fbd8f3 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_count_collisions.html @@ -0,0 +1,138 @@ + + + + + + + +Manifold: CountCollisions Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CountCollisions Struct Reference
+
+
+ + + + + + + + +

+Public Member Functions

+void record (int queryIdx, int _leafIdx)
 
+bool earlyexit (int _queryIdx)
 
+void end (int queryIdx)
 
+ + + + + +

+Public Attributes

+VecView< int > counts
 
+VecView< char > empty
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_create_radix_tree-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_create_radix_tree-members.html new file mode 100644 index 000000000..36a4fed7e --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_create_radix_tree-members.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CreateRadixTree Member List
+
+
+ +

This is the complete list of members for CreateRadixTree, including all inherited members.

+ + + + + + + + + +
FindSplit(int first, int last) const (defined in CreateRadixTree)CreateRadixTreeinline
internalChildren_ (defined in CreateRadixTree)CreateRadixTree
leafMorton_ (defined in CreateRadixTree)CreateRadixTree
nodeParent_ (defined in CreateRadixTree)CreateRadixTree
operator()(int internal) (defined in CreateRadixTree)CreateRadixTreeinline
PrefixLength(uint32_t a, uint32_t b) const (defined in CreateRadixTree)CreateRadixTreeinline
PrefixLength(int i, int j) const (defined in CreateRadixTree)CreateRadixTreeinline
RangeEnd(int i) const (defined in CreateRadixTree)CreateRadixTreeinline
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_create_radix_tree.html b/docs/html/structmanifold_1_1collider__internal_1_1_create_radix_tree.html new file mode 100644 index 000000000..c97ed0875 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_create_radix_tree.html @@ -0,0 +1,147 @@ + + + + + + + +Manifold: CreateRadixTree Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CreateRadixTree Struct Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

+int PrefixLength (uint32_t a, uint32_t b) const
 
+int PrefixLength (int i, int j) const
 
+int RangeEnd (int i) const
 
+int FindSplit (int first, int last) const
 
+void operator() (int internal)
 
+ + + + + + + +

+Public Attributes

+VecView< int > nodeParent_
 
+VecView< std::pair< int, int > > internalChildren_
 
+const VecView< const uint32_t > leafMorton_
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_find_collisions-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_find_collisions-members.html new file mode 100644 index 000000000..3b05728fd --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_find_collisions-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FindCollisions< T, selfCollision, Recorder > Member List
+
+ +
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_find_collisions.html b/docs/html/structmanifold_1_1collider__internal_1_1_find_collisions.html new file mode 100644 index 000000000..2971a368d --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_find_collisions.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: FindCollisions< T, selfCollision, Recorder > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FindCollisions< T, selfCollision, Recorder > Struct Template Reference
+
+
+ + + + + + +

+Public Member Functions

+int RecordCollision (int node, const int queryIdx)
 
+void operator() (const int queryIdx)
 
+ + + + + + + + + +

+Public Attributes

+VecView< const T > queries
 
+VecView< const BoxnodeBBox_
 
+VecView< const std::pair< int, int > > internalChildren_
 
+Recorder recorder
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_par_collision_recorder-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_par_collision_recorder-members.html new file mode 100644 index 000000000..71c467973 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_par_collision_recorder-members.html @@ -0,0 +1,120 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ParCollisionRecorder< inverted > Member List
+
+
+ +

This is the complete list of members for ParCollisionRecorder< inverted >, including all inherited members.

+ + + + + + + +
counts (defined in ParCollisionRecorder< inverted >)ParCollisionRecorder< inverted >
earlyexit(int queryIdx) const (defined in ParCollisionRecorder< inverted >)ParCollisionRecorder< inverted >inline
empty (defined in ParCollisionRecorder< inverted >)ParCollisionRecorder< inverted >
end(int queryIdx) const (defined in ParCollisionRecorder< inverted >)ParCollisionRecorder< inverted >inline
queryTri (defined in ParCollisionRecorder< inverted >)ParCollisionRecorder< inverted >
record(int queryIdx, int leafIdx) (defined in ParCollisionRecorder< inverted >)ParCollisionRecorder< inverted >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_par_collision_recorder.html b/docs/html/structmanifold_1_1collider__internal_1_1_par_collision_recorder.html new file mode 100644 index 000000000..252ddb608 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_par_collision_recorder.html @@ -0,0 +1,141 @@ + + + + + + + +Manifold: ParCollisionRecorder< inverted > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ParCollisionRecorder< inverted > Struct Template Reference
+
+
+ + + + + + + + +

+Public Member Functions

+void record (int queryIdx, int leafIdx)
 
+bool earlyexit (int queryIdx) const
 
+void end (int queryIdx) const
 
+ + + + + + + +

+Public Attributes

+SparseIndicesqueryTri
 
+VecView< int > counts
 
+VecView< char > empty
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_seq_collision_recorder-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_seq_collision_recorder-members.html new file mode 100644 index 000000000..f9dd4bc66 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_seq_collision_recorder-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SeqCollisionRecorder< inverted > Member List
+
+
+ +

This is the complete list of members for SeqCollisionRecorder< inverted >, including all inherited members.

+ + + + + +
earlyexit(int queryIdx) const (defined in SeqCollisionRecorder< inverted >)SeqCollisionRecorder< inverted >inline
end(int queryIdx) const (defined in SeqCollisionRecorder< inverted >)SeqCollisionRecorder< inverted >inline
queryTri_ (defined in SeqCollisionRecorder< inverted >)SeqCollisionRecorder< inverted >
record(int queryIdx, int leafIdx) const (defined in SeqCollisionRecorder< inverted >)SeqCollisionRecorder< inverted >inline
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html b/docs/html/structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html new file mode 100644 index 000000000..03fb8c07a --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_seq_collision_recorder.html @@ -0,0 +1,135 @@ + + + + + + + +Manifold: SeqCollisionRecorder< inverted > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SeqCollisionRecorder< inverted > Struct Template Reference
+
+
+ + + + + + + + +

+Public Member Functions

+void record (int queryIdx, int leafIdx) const
 
+bool earlyexit (int queryIdx) const
 
+void end (int queryIdx) const
 
+ + + +

+Public Attributes

+SparseIndicesqueryTri_
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_transform_box-members.html b/docs/html/structmanifold_1_1collider__internal_1_1_transform_box-members.html new file mode 100644 index 000000000..7f9af62c3 --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_transform_box-members.html @@ -0,0 +1,116 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformBox Member List
+
+
+ +

This is the complete list of members for TransformBox, including all inherited members.

+ + + +
operator()(Box &box) (defined in TransformBox)TransformBoxinline
transform (defined in TransformBox)TransformBox
+
+ + + + diff --git a/docs/html/structmanifold_1_1collider__internal_1_1_transform_box.html b/docs/html/structmanifold_1_1collider__internal_1_1_transform_box.html new file mode 100644 index 000000000..89e704bbb --- /dev/null +++ b/docs/html/structmanifold_1_1collider__internal_1_1_transform_box.html @@ -0,0 +1,129 @@ + + + + + + + +Manifold: TransformBox Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TransformBox Struct Reference
+
+
+ + + + +

+Public Member Functions

+void operator() (Box &box)
 
+ + + +

+Public Attributes

+const glm::mat4x3 transform
 
+
+
+ + + + diff --git a/docs/html/structmanifold_1_1geometry_err.html b/docs/html/structmanifold_1_1geometry_err.html new file mode 100644 index 000000000..c0b981323 --- /dev/null +++ b/docs/html/structmanifold_1_1geometry_err.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: geometryErr Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
geometryErr Struct Reference
+
+
+ +

Inherits runtime_error.

+
+
+ + + + diff --git a/docs/html/structmanifold_1_1topology_err.html b/docs/html/structmanifold_1_1topology_err.html new file mode 100644 index 000000000..edc729f61 --- /dev/null +++ b/docs/html/structmanifold_1_1topology_err.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: topologyErr Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
topologyErr Struct Reference
+
+
+ +

Inherits runtime_error.

+
+
+ + + + diff --git a/docs/html/structmanifold_1_1user_err.html b/docs/html/structmanifold_1_1user_err.html new file mode 100644 index 000000000..a019abdba --- /dev/null +++ b/docs/html/structmanifold_1_1user_err.html @@ -0,0 +1,114 @@ + + + + + + + +Manifold: userErr Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
userErr Struct Reference
+
+
+ +

Inherits runtime_error.

+
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4-members.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4-members.html new file mode 100644 index 000000000..8f506c6f1 --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
type_caster< glm::mat< C, R, T, Q > > Member List
+
+
+ +

This is the complete list of members for type_caster< glm::mat< C, R, T, Q > >, including all inherited members.

+ + + + + + +
from_cpp(glm_type mat, rv_policy policy, cleanup_list *cleanup) noexcept (defined in type_caster< glm::mat< C, R, T, Q > >)type_caster< glm::mat< C, R, T, Q > >inlinestatic
from_python(handle src, uint8_t flags, cleanup_list *cleanup) noexcept (defined in type_caster< glm::mat< C, R, T, Q > >)type_caster< glm::mat< C, R, T, Q > >inline
glm_type typedef (defined in type_caster< glm::mat< C, R, T, Q > >)type_caster< glm::mat< C, R, T, Q > >
NB_TYPE_CASTER(glm_type, const_name(glm_name< glm_type >::name)) (defined in type_caster< glm::mat< C, R, T, Q > >)type_caster< glm::mat< C, R, T, Q > >
numpy_type typedef (defined in type_caster< glm::mat< C, R, T, Q > >)type_caster< glm::mat< C, R, T, Q > >
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html new file mode 100644 index 000000000..ba221d618 --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1mat_3_01_c_00_01_r_00_01_t_00_01_q_01_4_01_4.html @@ -0,0 +1,142 @@ + + + + + + + +Manifold: type_caster< glm::mat< C, R, T, Q > > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
type_caster< glm::mat< C, R, T, Q > > Struct Template Reference
+
+
+ + + + + + +

+Public Types

+using glm_type = glm::mat< C, R, T, Q >
 
+using numpy_type = nb::ndarray< nb::numpy, T, nb::shape< R, C > >
 
+ + + + + +

+Public Member Functions

NB_TYPE_CASTER (glm_type, const_name(glm_name< glm_type >::name))
 
+bool from_python (handle src, uint8_t flags, cleanup_list *cleanup) noexcept
 
+ + + +

+Static Public Member Functions

+static handle from_cpp (glm_type mat, rv_policy policy, cleanup_list *cleanup) noexcept
 
+
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4-members.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4-members.html new file mode 100644 index 000000000..babbc0050 --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4-members.html @@ -0,0 +1,118 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
type_caster< glm::vec< N, T, Q > > Member List
+
+
+ +

This is the complete list of members for type_caster< glm::vec< N, T, Q > >, including all inherited members.

+ + + + + +
from_cpp(glm_type vec, rv_policy policy, cleanup_list *cleanup) noexcept (defined in type_caster< glm::vec< N, T, Q > >)type_caster< glm::vec< N, T, Q > >inlinestatic
from_python(handle src, uint8_t flags, cleanup_list *cleanup) noexcept (defined in type_caster< glm::vec< N, T, Q > >)type_caster< glm::vec< N, T, Q > >inline
glm_type typedef (defined in type_caster< glm::vec< N, T, Q > >)type_caster< glm::vec< N, T, Q > >
NB_TYPE_CASTER(glm_type, const_name(glm_name< glm_type >::name)) (defined in type_caster< glm::vec< N, T, Q > >)type_caster< glm::vec< N, T, Q > >
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html new file mode 100644 index 000000000..8f3dc8f63 --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4.html @@ -0,0 +1,139 @@ + + + + + + + +Manifold: type_caster< glm::vec< N, T, Q > > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
type_caster< glm::vec< N, T, Q > > Struct Template Reference
+
+
+ + + + +

+Public Types

+using glm_type = glm::vec< N, T, Q >
 
+ + + + + +

+Public Member Functions

NB_TYPE_CASTER (glm_type, const_name(glm_name< glm_type >::name))
 
+bool from_python (handle src, uint8_t flags, cleanup_list *cleanup) noexcept
 
+ + + +

+Static Public Member Functions

+static handle from_cpp (glm_type vec, rv_policy policy, cleanup_list *cleanup) noexcept
 
+
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4-members.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4-members.html new file mode 100644 index 000000000..fd1afda2e --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
type_caster< manifold::VecView< glm::vec< N, T, Q > > > Member List
+
+
+ +

This is the complete list of members for type_caster< manifold::VecView< glm::vec< N, T, Q > > >, including all inherited members.

+ + + + + + +
from_cpp(Value vec, rv_policy policy, cleanup_list *cleanup) noexcept (defined in type_caster< manifold::VecView< glm::vec< N, T, Q > > >)type_caster< manifold::VecView< glm::vec< N, T, Q > > >inlinestatic
from_python(handle src, uint8_t flags, cleanup_list *cleanup) noexcept (defined in type_caster< manifold::VecView< glm::vec< N, T, Q > > >)type_caster< manifold::VecView< glm::vec< N, T, Q > > >inline
glm_type typedef (defined in type_caster< manifold::VecView< glm::vec< N, T, Q > > >)type_caster< manifold::VecView< glm::vec< N, T, Q > > >
NB_TYPE_CASTER(manifold::VecView< glm_type >, const_name(glm_name< glm_type >::multi_name)) (defined in type_caster< manifold::VecView< glm::vec< N, T, Q > > >)type_caster< manifold::VecView< glm::vec< N, T, Q > > >
numpy_type typedef (defined in type_caster< manifold::VecView< glm::vec< N, T, Q > > >)type_caster< manifold::VecView< glm::vec< N, T, Q > > >
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html new file mode 100644 index 000000000..a92851df0 --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01manifold_1_1_vec_view_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html @@ -0,0 +1,142 @@ + + + + + + + +Manifold: type_caster< manifold::VecView< glm::vec< N, T, Q > > > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
type_caster< manifold::VecView< glm::vec< N, T, Q > > > Struct Template Reference
+
+
+ + + + + + +

+Public Types

+using glm_type = glm::vec< N, T, Q >
 
+using numpy_type = nb::ndarray< nb::numpy, T, nb::shape<-1, N > >
 
+ + + + + +

+Public Member Functions

NB_TYPE_CASTER (manifold::VecView< glm_type >, const_name(glm_name< glm_type >::multi_name))
 
+bool from_python (handle src, uint8_t flags, cleanup_list *cleanup) noexcept
 
+ + + +

+Static Public Member Functions

+static handle from_cpp (Value vec, rv_policy policy, cleanup_list *cleanup) noexcept
 
+
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4-members.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4-members.html new file mode 100644 index 000000000..a251cd96b --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4-members.html @@ -0,0 +1,119 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
type_caster< std::vector< glm::vec< N, T, Q > > > Member List
+
+
+ +

This is the complete list of members for type_caster< std::vector< glm::vec< N, T, Q > > >, including all inherited members.

+ + + + + + +
from_cpp(Value vec, rv_policy policy, cleanup_list *cleanup) noexcept (defined in type_caster< std::vector< glm::vec< N, T, Q > > >)type_caster< std::vector< glm::vec< N, T, Q > > >inlinestatic
from_python(handle src, uint8_t flags, cleanup_list *cleanup) noexcept (defined in type_caster< std::vector< glm::vec< N, T, Q > > >)type_caster< std::vector< glm::vec< N, T, Q > > >inline
glm_type typedef (defined in type_caster< std::vector< glm::vec< N, T, Q > > >)type_caster< std::vector< glm::vec< N, T, Q > > >
NB_TYPE_CASTER(std::vector< glm_type >, const_name(glm_name< glm_type >::multi_name)) (defined in type_caster< std::vector< glm::vec< N, T, Q > > >)type_caster< std::vector< glm::vec< N, T, Q > > >
numpy_type typedef (defined in type_caster< std::vector< glm::vec< N, T, Q > > >)type_caster< std::vector< glm::vec< N, T, Q > > >
+
+ + + + diff --git a/docs/html/structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html b/docs/html/structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html new file mode 100644 index 000000000..b4e98d1db --- /dev/null +++ b/docs/html/structnb_1_1detail_1_1type__caster_3_01std_1_1vector_3_01glm_1_1vec_3_01_n_00_01_t_00_01_q_01_4_01_4_01_4.html @@ -0,0 +1,142 @@ + + + + + + + +Manifold: type_caster< std::vector< glm::vec< N, T, Q > > > Struct Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
type_caster< std::vector< glm::vec< N, T, Q > > > Struct Template Reference
+
+
+ + + + + + +

+Public Types

+using glm_type = glm::vec< N, T, Q >
 
+using numpy_type = nb::ndarray< nb::numpy, T, nb::shape<-1, N > >
 
+ + + + + +

+Public Member Functions

NB_TYPE_CASTER (std::vector< glm_type >, const_name(glm_name< glm_type >::multi_name))
 
+bool from_python (handle src, uint8_t flags, cleanup_list *cleanup) noexcept
 
+ + + +

+Static Public Member Functions

+static handle from_cpp (Value vec, rv_policy policy, cleanup_list *cleanup) noexcept
 
+
+
+ + + + diff --git a/docs/html/structstd_1_1hash_3_01glm_1_1ivec4_01_4-members.html b/docs/html/structstd_1_1hash_3_01glm_1_1ivec4_01_4-members.html new file mode 100644 index 000000000..182028cbb --- /dev/null +++ b/docs/html/structstd_1_1hash_3_01glm_1_1ivec4_01_4-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
hash< glm::ivec4 > Member List
+
+
+ +

This is the complete list of members for hash< glm::ivec4 >, including all inherited members.

+ + +
operator()(const glm::ivec4 &p) const (defined in hash< glm::ivec4 >)hash< glm::ivec4 >inline
+
+ + + + diff --git a/docs/html/structstd_1_1hash_3_01glm_1_1ivec4_01_4.html b/docs/html/structstd_1_1hash_3_01glm_1_1ivec4_01_4.html new file mode 100644 index 000000000..c681c1b6d --- /dev/null +++ b/docs/html/structstd_1_1hash_3_01glm_1_1ivec4_01_4.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: hash< glm::ivec4 > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
hash< glm::ivec4 > Struct Reference
+
+
+ + + + +

+Public Member Functions

+size_t operator() (const glm::ivec4 &p) const
 
+
+
+ + + + diff --git a/docs/html/structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4-members.html b/docs/html/structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4-members.html new file mode 100644 index 000000000..39f43a3b4 --- /dev/null +++ b/docs/html/structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4-members.html @@ -0,0 +1,115 @@ + + + + + + + +Manifold: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
hash< std::pair< int, int > > Member List
+
+
+ +

This is the complete list of members for hash< std::pair< int, int > >, including all inherited members.

+ + +
operator()(const std::pair< int, int > &p) const (defined in hash< std::pair< int, int > >)hash< std::pair< int, int > >inline
+
+ + + + diff --git a/docs/html/structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html b/docs/html/structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html new file mode 100644 index 000000000..e507ebec4 --- /dev/null +++ b/docs/html/structstd_1_1hash_3_01std_1_1pair_3_01int_00_01int_01_4_01_4.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: hash< std::pair< int, int > > Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
hash< std::pair< int, int > > Struct Reference
+
+
+ + + + +

+Public Member Functions

+size_t operator() (const std::pair< int, int > &p) const
 
+
+
+ + + + diff --git a/docs/html/svd_8h_source.html b/docs/html/svd_8h_source.html new file mode 100644 index 000000000..53390a053 --- /dev/null +++ b/docs/html/svd_8h_source.html @@ -0,0 +1,414 @@ + + + + + + + +Manifold: svd.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
svd.h
+
+
+
1// MIT License
+
2
+
3// Copyright (c) 2019 wi-re
+
4// Copyright 2023 The Manifold Authors.
+
5
+
6// Permission is hereby granted, free of charge, to any person obtaining a copy
+
7// of this software and associated documentation files (the "Software"), to deal
+
8// in the Software without restriction, including without limitation the rights
+
9// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
10// copies of the Software, and to permit persons to whom the Software is
+
11// furnished to do so, subject to the following conditions:
+
12
+
13// The above copyright notice and this permission notice shall be included in
+
14// all copies or substantial portions of the Software.
+
15
+
16// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
17// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
18// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
19// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
20// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
21// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
22// SOFTWARE.
+
23
+
24// Modified from https://github.com/wi-re/tbtSVD, removing CUDA dependence and
+
25// approximate inverse square roots.
+
26
+
27#include <algorithm>
+
28#include <cmath>
+
29#include <glm/glm.hpp>
+
30#include <tuple>
+
31#include <utility>
+
32
+
33namespace {
+
34// Constants used for calculation of Givens quaternions
+
35inline constexpr float _gamma = 5.828427124f; // sqrt(8)+3;
+
36inline constexpr float _cStar = 0.923879532f; // cos(pi/8)
+
37inline constexpr float _sStar = 0.3826834323f; // sin(pi/8)
+
38// Threshold value
+
39inline constexpr float _SVD_EPSILON = 1e-6f;
+
40// Iteration counts for Jacobi Eigen Analysis, influences precision
+
41inline constexpr int JACOBI_STEPS = 12;
+
42
+
43// Helper function used to swap X with Y and Y with X if c == true
+
44inline void CondSwap(bool c, float& X, float& Y) {
+
45 float Z = X;
+
46 X = c ? Y : X;
+
47 Y = c ? Z : Y;
+
48}
+
49// Helper function used to swap X with Y and Y with -X if c == true
+
50inline void CondNegSwap(bool c, float& X, float& Y) {
+
51 float Z = -X;
+
52 X = c ? Y : X;
+
53 Y = c ? Z : Y;
+
54}
+
55// A simple symmetric 3x3 Matrix class (contains no storage for (0, 1) (0, 2)
+
56// and (1, 2)
+
57struct Symmetric3x3 {
+
58 float m_00 = 1.f;
+
59 float m_10 = 0.f, m_11 = 1.f;
+
60 float m_20 = 0.f, m_21 = 0.f, m_22 = 1.f;
+
61
+
62 Symmetric3x3(float a11 = 1.f, float a21 = 0.f, float a22 = 1.f,
+
63 float a31 = 0.f, float a32 = 0.f, float a33 = 1.f)
+
64 : m_00(a11), m_10(a21), m_11(a22), m_20(a31), m_21(a32), m_22(a33) {}
+
65 Symmetric3x3(glm::mat3 o)
+
66 : m_00(o[0][0]),
+
67 m_10(o[0][1]),
+
68 m_11(o[1][1]),
+
69 m_20(o[0][2]),
+
70 m_21(o[1][2]),
+
71 m_22(o[2][2]) {}
+
72};
+
73// Helper struct to store 2 floats to avoid OUT parameters on functions
+
74struct Givens {
+
75 float ch = _cStar;
+
76 float sh = _sStar;
+
77};
+
78// Helper struct to store 2 Matrices to avoid OUT parameters on functions
+
79struct QR {
+
80 glm::mat3 Q, R;
+
81};
+
82// Calculates the squared norm of the vector.
+
83inline float Dist2(glm::vec3 v) { return glm::dot(v, v); }
+
84// For an explanation of the math see
+
85// http://pages.cs.wisc.edu/~sifakis/papers/SVD_TR1690.pdf Computing the
+
86// Singular Value Decomposition of 3 x 3 matrices with minimal branching and
+
87// elementary floating point operations See Algorithm 2 in reference. Given a
+
88// matrix A this function returns the Givens quaternion (x and w component, y
+
89// and z are 0)
+
90inline Givens ApproximateGivensQuaternion(Symmetric3x3& A) {
+
91 Givens g{2.f * (A.m_00 - A.m_11), A.m_10};
+
92 bool b = _gamma * g.sh * g.sh < g.ch * g.ch;
+
93 float w = 1.f / sqrt(fmaf(g.ch, g.ch, g.sh * g.sh));
+
94 if (w != w) b = 0;
+
95 return Givens{b ? w * g.ch : (float)_cStar, b ? w * g.sh : (float)_sStar};
+
96}
+
97// Function used to apply a Givens rotation S. Calculates the weights and
+
98// updates the quaternion to contain the cumulative rotation
+
99inline void JacobiConjugation(const int32_t x, const int32_t y, const int32_t z,
+
100 Symmetric3x3& S, glm::vec4& q) {
+
101 auto g = ApproximateGivensQuaternion(S);
+
102 float scale = 1.f / fmaf(g.ch, g.ch, g.sh * g.sh);
+
103 float a = fmaf(g.ch, g.ch, -g.sh * g.sh) * scale;
+
104 float b = 2.f * g.sh * g.ch * scale;
+
105 Symmetric3x3 _S = S;
+
106 // perform conjugation S = Q'*S*Q
+
107 S.m_00 = fmaf(a, fmaf(a, _S.m_00, b * _S.m_10),
+
108 b * (fmaf(a, _S.m_10, b * _S.m_11)));
+
109 S.m_10 = fmaf(a, fmaf(-b, _S.m_00, a * _S.m_10),
+
110 b * (fmaf(-b, _S.m_10, a * _S.m_11)));
+
111 S.m_11 = fmaf(-b, fmaf(-b, _S.m_00, a * _S.m_10),
+
112 a * (fmaf(-b, _S.m_10, a * _S.m_11)));
+
113 S.m_20 = fmaf(a, _S.m_20, b * _S.m_21);
+
114 S.m_21 = fmaf(-b, _S.m_20, a * _S.m_21);
+
115 S.m_22 = _S.m_22;
+
116 // update cumulative rotation qV
+
117 glm::vec3 tmp = g.sh * glm::vec3(q);
+
118 g.sh *= q[3];
+
119 // (x,y,z) corresponds to ((0,1,2),(1,2,0),(2,0,1)) for (p,q) =
+
120 // ((0,1),(1,2),(0,2))
+
121 q[z] = fmaf(q[z], g.ch, g.sh);
+
122 q[3] = fmaf(q[3], g.ch, -tmp[z]); // w
+
123 q[x] = fmaf(q[x], g.ch, tmp[y]);
+
124 q[y] = fmaf(q[y], g.ch, -tmp[x]);
+
125 // re-arrange matrix for next iteration
+
126 _S.m_00 = S.m_11;
+
127 _S.m_10 = S.m_21;
+
128 _S.m_11 = S.m_22;
+
129 _S.m_20 = S.m_10;
+
130 _S.m_21 = S.m_20;
+
131 _S.m_22 = S.m_00;
+
132 S.m_00 = _S.m_00;
+
133 S.m_10 = _S.m_10;
+
134 S.m_11 = _S.m_11;
+
135 S.m_20 = _S.m_20;
+
136 S.m_21 = _S.m_21;
+
137 S.m_22 = _S.m_22;
+
138}
+
139// Function used to contain the Givens permutations and the loop of the jacobi
+
140// steps controlled by JACOBI_STEPS Returns the quaternion q containing the
+
141// cumulative result used to reconstruct S
+
142inline glm::mat3 JacobiEigenAnalysis(Symmetric3x3 S) {
+
143 glm::vec4 q(0, 0, 0, 1);
+
144 for (int32_t i = 0; i < JACOBI_STEPS; i++) {
+
145 JacobiConjugation(0, 1, 2, S, q);
+
146 JacobiConjugation(1, 2, 0, S, q);
+
147 JacobiConjugation(2, 0, 1, S, q);
+
148 }
+
149 return glm::mat3(1.f - 2.f * (fmaf(q.y, q.y, q.z * q.z)), //
+
150 2.f * fmaf(q.x, q.y, +q.w * q.z), //
+
151 2.f * fmaf(q.x, q.z, -q.w * q.y), //
+
152 2 * fmaf(q.x, q.y, -q.w * q.z), //
+
153 1 - 2 * fmaf(q.x, q.x, q.z * q.z), //
+
154 2 * fmaf(q.y, q.z, q.w * q.x), //
+
155 2 * fmaf(q.x, q.z, q.w * q.y), //
+
156 2 * fmaf(q.y, q.z, -q.w * q.x), //
+
157 1 - 2 * fmaf(q.x, q.x, q.y * q.y));
+
158}
+
159// Implementation of Algorithm 3
+
160inline void SortSingularValues(glm::mat3& B, glm::mat3& V) {
+
161 float rho1 = Dist2(B[0]);
+
162 float rho2 = Dist2(B[1]);
+
163 float rho3 = Dist2(B[2]);
+
164 bool c;
+
165 c = rho1 < rho2;
+
166 CondNegSwap(c, B[0][0], B[1][0]);
+
167 CondNegSwap(c, V[0][0], V[1][0]);
+
168 CondNegSwap(c, B[0][1], B[1][1]);
+
169 CondNegSwap(c, V[0][1], V[1][1]);
+
170 CondNegSwap(c, B[0][2], B[1][2]);
+
171 CondNegSwap(c, V[0][2], V[1][2]);
+
172 CondSwap(c, rho1, rho2);
+
173 c = rho1 < rho3;
+
174 CondNegSwap(c, B[0][0], B[2][0]);
+
175 CondNegSwap(c, V[0][0], V[2][0]);
+
176 CondNegSwap(c, B[0][1], B[2][1]);
+
177 CondNegSwap(c, V[0][1], V[2][1]);
+
178 CondNegSwap(c, B[0][2], B[2][2]);
+
179 CondNegSwap(c, V[0][2], V[2][2]);
+
180 CondSwap(c, rho1, rho3);
+
181 c = rho2 < rho3;
+
182 CondNegSwap(c, B[1][0], B[2][0]);
+
183 CondNegSwap(c, V[1][0], V[2][0]);
+
184 CondNegSwap(c, B[1][1], B[2][1]);
+
185 CondNegSwap(c, V[1][1], V[2][1]);
+
186 CondNegSwap(c, B[1][2], B[2][2]);
+
187 CondNegSwap(c, V[1][2], V[2][2]);
+
188}
+
189// Implementation of Algorithm 4
+
190inline Givens QRGivensQuaternion(float a1, float a2) {
+
191 // a1 = pivot point on diagonal
+
192 // a2 = lower triangular entry we want to annihilate
+
193 float epsilon = (float)_SVD_EPSILON;
+
194 float rho = sqrt(fmaf(a1, a1, +a2 * a2));
+
195 Givens g{fabsf(a1) + fmaxf(rho, epsilon), rho > epsilon ? a2 : 0};
+
196 bool b = a1 < 0.f;
+
197 CondSwap(b, g.sh, g.ch);
+
198 float w = 1.f / sqrt(fmaf(g.ch, g.ch, g.sh * g.sh));
+
199 g.ch *= w;
+
200 g.sh *= w;
+
201 return g;
+
202}
+
203// Implements a QR decomposition of a Matrix, see Sec 4.2
+
204inline QR QRDecomposition(glm::mat3& B) {
+
205 glm::mat3 Q, R;
+
206 // first Givens rotation (ch,0,0,sh)
+
207 auto g1 = QRGivensQuaternion(B[0][0], B[0][1]);
+
208 auto a = fmaf(-2.f, g1.sh * g1.sh, 1.f);
+
209 auto b = 2.f * g1.ch * g1.sh;
+
210 // apply B = Q' * B
+
211 R[0][0] = fmaf(a, B[0][0], b * B[0][1]);
+
212 R[1][0] = fmaf(a, B[1][0], b * B[1][1]);
+
213 R[2][0] = fmaf(a, B[2][0], b * B[2][1]);
+
214 R[0][1] = fmaf(-b, B[0][0], a * B[0][1]);
+
215 R[1][1] = fmaf(-b, B[1][0], a * B[1][1]);
+
216 R[2][1] = fmaf(-b, B[2][0], a * B[2][1]);
+
217 R[0][2] = B[0][2];
+
218 R[1][2] = B[1][2];
+
219 R[2][2] = B[2][2];
+
220 // second Givens rotation (ch,0,-sh,0)
+
221 auto g2 = QRGivensQuaternion(R[0][0], R[0][2]);
+
222 a = fmaf(-2.f, g2.sh * g2.sh, 1.f);
+
223 b = 2.f * g2.ch * g2.sh;
+
224 // apply B = Q' * B;
+
225 B[0][0] = fmaf(a, R[0][0], b * R[0][2]);
+
226 B[1][0] = fmaf(a, R[1][0], b * R[1][2]);
+
227 B[2][0] = fmaf(a, R[2][0], b * R[2][2]);
+
228 B[0][1] = R[0][1];
+
229 B[1][1] = R[1][1];
+
230 B[2][1] = R[2][1];
+
231 B[0][2] = fmaf(-b, R[0][0], a * R[0][2]);
+
232 B[1][2] = fmaf(-b, R[1][0], a * R[1][2]);
+
233 B[2][2] = fmaf(-b, R[2][0], a * R[2][2]);
+
234 // third Givens rotation (ch,sh,0,0)
+
235 auto g3 = QRGivensQuaternion(B[1][1], B[1][2]);
+
236 a = fmaf(-2.f, g3.sh * g3.sh, 1.f);
+
237 b = 2.f * g3.ch * g3.sh;
+
238 // R is now set to desired value
+
239 R[0][0] = B[0][0];
+
240 R[1][0] = B[1][0];
+
241 R[2][0] = B[2][0];
+
242 R[0][1] = fmaf(a, B[0][1], b * B[0][2]);
+
243 R[1][1] = fmaf(a, B[1][1], b * B[1][2]);
+
244 R[2][1] = fmaf(a, B[2][1], b * B[2][2]);
+
245 R[0][2] = fmaf(-b, B[0][1], a * B[0][2]);
+
246 R[1][2] = fmaf(-b, B[1][1], a * B[1][2]);
+
247 R[2][2] = fmaf(-b, B[2][1], a * B[2][2]);
+
248 // construct the cumulative rotation Q=Q1 * Q2 * Q3
+
249 // the number of floating point operations for three quaternion
+
250 // multiplications is more or less comparable to the explicit form of the
+
251 // joined matrix. certainly more memory-efficient!
+
252 auto sh12 = 2.f * fmaf(g1.sh, g1.sh, -0.5f);
+
253 auto sh22 = 2.f * fmaf(g2.sh, g2.sh, -0.5f);
+
254 auto sh32 = 2.f * fmaf(g3.sh, g3.sh, -0.5f);
+
255 Q[0][0] = sh12 * sh22;
+
256 Q[1][0] = fmaf(4.f * g2.ch * g3.ch, sh12 * g2.sh * g3.sh,
+
257 2.f * g1.ch * g1.sh * sh32);
+
258 Q[2][0] = fmaf(4.f * g1.ch * g3.ch, g1.sh * g3.sh,
+
259 -2.f * g2.ch * sh12 * g2.sh * sh32);
+
260
+
261 Q[0][1] = -2.f * g1.ch * g1.sh * sh22;
+
262 Q[1][1] =
+
263 fmaf(-8.f * g1.ch * g2.ch * g3.ch, g1.sh * g2.sh * g3.sh, sh12 * sh32);
+
264 Q[2][1] = fmaf(
+
265 -2.f * g3.ch, g3.sh,
+
266 4.f * g1.sh * fmaf(g3.ch * g1.sh, g3.sh, g1.ch * g2.ch * g2.sh * sh32));
+
267
+
268 Q[0][2] = 2.f * g2.ch * g2.sh;
+
269 Q[1][2] = -2.f * g3.ch * sh22 * g3.sh;
+
270 Q[2][2] = sh22 * sh32;
+
271 return QR{Q, R};
+
272}
+
273} // namespace
+
274
+
275namespace manifold {
+
+
283struct SVDSet {
+
284 glm::mat3 U, S, V;
+
285};
+
+
286
+
+
292inline SVDSet SVD(glm::mat3 A) {
+
293 glm::mat3 V = JacobiEigenAnalysis(glm::transpose(A) * A);
+
294 auto B = A * V;
+
295 SortSingularValues(B, V);
+
296 QR qr = QRDecomposition(B);
+
297 return SVDSet{qr.Q, qr.R, V};
+
298}
+
+
299
+
+
305inline float SpectralNorm(glm::mat3 A) {
+
306 SVDSet usv = SVD(A);
+
307 return usv.S[0][0];
+
308}
+
+
310} // namespace manifold
+
float SpectralNorm(glm::mat3 A)
Definition svd.h:305
+
SVDSet SVD(glm::mat3 A)
Definition svd.h:292
+
Definition svd.h:283
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 000000000..3b443fc62 Binary files /dev/null and b/docs/html/sync_off.png differ diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 000000000..e08320fb6 Binary files /dev/null and b/docs/html/sync_on.png differ diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 000000000..3b725c41c Binary files /dev/null and b/docs/html/tab_a.png differ diff --git a/docs/html/tab_ad.png b/docs/html/tab_ad.png new file mode 100644 index 000000000..e34850acf Binary files /dev/null and b/docs/html/tab_ad.png differ diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 000000000..e2b4a8638 Binary files /dev/null and b/docs/html/tab_b.png differ diff --git a/docs/html/tab_bd.png b/docs/html/tab_bd.png new file mode 100644 index 000000000..91c252498 Binary files /dev/null and b/docs/html/tab_bd.png differ diff --git a/docs/html/tab_h.png b/docs/html/tab_h.png new file mode 100644 index 000000000..fd5cb7054 Binary files /dev/null and b/docs/html/tab_h.png differ diff --git a/docs/html/tab_hd.png b/docs/html/tab_hd.png new file mode 100644 index 000000000..2489273d4 Binary files /dev/null and b/docs/html/tab_hd.png differ diff --git a/docs/html/tab_s.png b/docs/html/tab_s.png new file mode 100644 index 000000000..ab478c95b Binary files /dev/null and b/docs/html/tab_s.png differ diff --git a/docs/html/tab_sd.png b/docs/html/tab_sd.png new file mode 100644 index 000000000..757a565ce Binary files /dev/null and b/docs/html/tab_sd.png differ diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 000000000..71c8a4704 --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/html/test_8h_source.html b/docs/html/test_8h_source.html new file mode 100644 index 000000000..1da0725df --- /dev/null +++ b/docs/html/test_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +Manifold: test.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
test.h
+
+
+
1// Copyright 2022 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <ostream>
+
17
+
18#include "gtest/gtest.h"
+
19#include "manifold.h"
+
20#include "public.h"
+
21
+
22#ifdef MANIFOLD_EXPORT
+
23#include "meshIO.h"
+
24#endif
+
25
+
26// somehow gcc11 + gtest 1.11.0 is unable to print glm::ivec3
+
27namespace glm {
+
28inline void PrintTo(const ivec3& point, std::ostream* os) {
+
29 *os << "(" << point.x << "," << point.y << "," << point.x << ")";
+
30}
+
31} // namespace glm
+
32
+
33using namespace manifold;
+
34
+
+
35struct Options {
+
36 bool exportModels = false;
+
37 manifold::ExecutionParams params = {};
+
38};
+
+
39
+
40extern Options options;
+
41
+
+
42struct MeshSize {
+
43 int numVert, numTri;
+
44 int numProp = 0;
+
45 int numPropVert = numVert;
+
46};
+
+
47
+
48Polygons SquareHole(float xOffset = 0.0);
+
49Mesh Csaszar();
+
50Mesh Tet();
+
51MeshGL Gyroid();
+
52MeshGL TetGL();
+
53MeshGL CubeSTL();
+
54MeshGL CubeUV();
+
55MeshGL WithIndexColors(const MeshGL& in);
+
56MeshGL WithPositionColors(const Manifold& in);
+
57MeshGL WithNormals(const Manifold& in);
+
58float GetMaxProperty(const MeshGL& mesh, int channel);
+
59float GetMinProperty(const MeshGL& mesh, int channel);
+
60void CheckFinite(const MeshGL& mesh);
+
61void Identical(const Mesh& mesh1, const Mesh& mesh2);
+
62void RelatedGL(const Manifold& out, const std::vector<MeshGL>& originals,
+
63 bool checkNormals = false, bool updateNormals = false);
+
64void ExpectMeshes(const Manifold& manifold,
+
65 const std::vector<MeshSize>& meshSize);
+
66void CheckNormals(const Manifold& manifold);
+
67void CheckStrictly(const Manifold& manifold);
+
68void CheckGL(const Manifold& manifold);
+
69#ifdef MANIFOLD_EXPORT
+
70Manifold ReadMesh(const std::string& filename);
+
71#endif
+
Definition manifold.h:156
+
std::vector< SimplePolygon > Polygons
Definition public.h:130
+
Definition public.h:135
+
Definition public.h:619
+
Definition meshIO.h:20
+
Definition test.h:42
+
Definition test.h:35
+
Definition manifold.h:46
+
+
+ + + + diff --git a/docs/html/topics.html b/docs/html/topics.html new file mode 100644 index 000000000..611fde59c --- /dev/null +++ b/docs/html/topics.html @@ -0,0 +1,122 @@ + + + + + + + +Manifold: Topics + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Topics
+
+
+
Here is a list of all topics with brief descriptions:
+
[detail level 12]
+ + + + + + + +
 MeshIO3D model file I/O based on Assimp
 SamplesExamples of usage and interesting designs
 CoreThe central classes of the library
 ConnectionsMove data in and out of the Manifold class
 DebugDebugging features
 ExceptionsCustom Exceptions
 PrivateInternal classes of the library; not currently part of the public API
+
+
+
+ + + + diff --git a/docs/html/topics.js b/docs/html/topics.js new file mode 100644 index 000000000..fd224ebc0 --- /dev/null +++ b/docs/html/topics.js @@ -0,0 +1,9 @@ +var topics = +[ + [ "MeshIO", "group___mesh_i_o.html", "group___mesh_i_o" ], + [ "Samples", "group___samples.html", "group___samples" ], + [ "Core", "group___core.html", "group___core" ], + [ "Connections", "group___connections.html", "group___connections" ], + [ "Debug", "group___debug.html", "group___debug" ], + [ "Private", "group___private.html", "group___private" ] +]; \ No newline at end of file diff --git a/docs/html/tri__dist_8h_source.html b/docs/html/tri__dist_8h_source.html new file mode 100644 index 000000000..431fc8fc6 --- /dev/null +++ b/docs/html/tri__dist_8h_source.html @@ -0,0 +1,328 @@ + + + + + + + +Manifold: tri_dist.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
tri_dist.h
+
+
+
1// Copyright 2024 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16
+
17#include <array>
+
18#include <glm/glm.hpp>
+
19
+
20namespace manifold {
+
21
+
22// From NVIDIA-Omniverse PhysX - BSD 3-Clause "New" or "Revised" License
+
23// https://github.com/NVIDIA-Omniverse/PhysX/blob/main/LICENSE.md
+
24// https://github.com/NVIDIA-Omniverse/PhysX/blob/main/physx/source/geomutils/src/sweep/GuSweepCapsuleCapsule.cpp
+
25// With minor modifications
+
26
+
+
37inline void EdgeEdgeDist(glm::vec3& x, glm::vec3& y, // closest points
+
38 const glm::vec3& p,
+
39 const glm::vec3& a, // seg 1 origin, vector
+
40 const glm::vec3& q,
+
41 const glm::vec3& b) // seg 2 origin, vector
+
42{
+
43 const glm::vec3 T = q - p;
+
44 const float ADotA = glm::dot(a, a);
+
45 const float BDotB = glm::dot(b, b);
+
46 const float ADotB = glm::dot(a, b);
+
47 const float ADotT = glm::dot(a, T);
+
48 const float BDotT = glm::dot(b, T);
+
49
+
50 // t parameterizes ray (p, a)
+
51 // u parameterizes ray (q, b)
+
52
+
53 // Compute t for the closest point on ray (p, a) to ray (q, b)
+
54 const float Denom = ADotA * BDotB - ADotB * ADotB;
+
55
+
56 float t; // We will clamp result so t is on the segment (p, a)
+
57 t = Denom != 0.0f
+
58 ? glm::clamp((ADotT * BDotB - BDotT * ADotB) / Denom, 0.0f, 1.0f)
+
59 : 0.0f;
+
60
+
61 // find u for point on ray (q, b) closest to point at t
+
62 float u;
+
63 if (BDotB != 0.0f) {
+
64 u = (t * ADotB - BDotT) / BDotB;
+
65
+
66 // if u is on segment (q, b), t and u correspond to closest points,
+
67 // otherwise, clamp u, recompute and clamp t
+
68 if (u < 0.0f) {
+
69 u = 0.0f;
+
70 t = ADotA != 0.0f ? glm::clamp(ADotT / ADotA, 0.0f, 1.0f) : 0.0f;
+
71 } else if (u > 1.0f) {
+
72 u = 1.0f;
+
73 t = ADotA != 0.0f ? glm::clamp((ADotB + ADotT) / ADotA, 0.0f, 1.0f)
+
74 : 0.0f;
+
75 }
+
76 } else {
+
77 u = 0.0f;
+
78 t = ADotA != 0.0f ? glm::clamp(ADotT / ADotA, 0.0f, 1.0f) : 0.0f;
+
79 }
+
80 x = p + a * t;
+
81 y = q + b * u;
+
82}
+
+
83
+
84// From NVIDIA-Omniverse PhysX - BSD 3-Clause "New" or "Revised" License
+
85// https://github.com/NVIDIA-Omniverse/PhysX/blob/main/LICENSE.md
+
86// https://github.com/NVIDIA-Omniverse/PhysX/blob/main/physx/source/geomutils/src/distance/GuDistanceTriangleTriangle.cpp
+
87// With minor modifications
+
88
+
+ +
96 const std::array<glm::vec3, 3>& p, const std::array<glm::vec3, 3>& q) {
+
97 std::array<glm::vec3, 3> Sv;
+
98 Sv[0] = p[1] - p[0];
+
99 Sv[1] = p[2] - p[1];
+
100 Sv[2] = p[0] - p[2];
+
101
+
102 std::array<glm::vec3, 3> Tv;
+
103 Tv[0] = q[1] - q[0];
+
104 Tv[1] = q[2] - q[1];
+
105 Tv[2] = q[0] - q[2];
+
106
+
107 bool shown_disjoint = false;
+
108
+
109 float mindd = std::numeric_limits<float>::max();
+
110
+
111 for (uint32_t i = 0; i < 3; i++) {
+
112 for (uint32_t j = 0; j < 3; j++) {
+
113 glm::vec3 cp;
+
114 glm::vec3 cq;
+
115 EdgeEdgeDist(cp, cq, p[i], Sv[i], q[j], Tv[j]);
+
116 const glm::vec3 V = cq - cp;
+
117 const float dd = glm::dot(V, V);
+
118
+
119 if (dd <= mindd) {
+
120 mindd = dd;
+
121
+
122 uint32_t id = i + 2;
+
123 if (id >= 3) id -= 3;
+
124 glm::vec3 Z = p[id] - cp;
+
125 float a = glm::dot(Z, V);
+
126 id = j + 2;
+
127 if (id >= 3) id -= 3;
+
128 Z = q[id] - cq;
+
129 float b = glm::dot(Z, V);
+
130
+
131 if ((a <= 0.0f) && (b >= 0.0f)) {
+
132 return glm::dot(V, V);
+
133 };
+
134
+
135 if (a <= 0.0f)
+
136 a = 0.0f;
+
137 else if (b > 0.0f)
+
138 b = 0.0f;
+
139
+
140 if ((mindd - a + b) > 0.0f) shown_disjoint = true;
+
141 }
+
142 }
+
143 }
+
144
+
145 glm::vec3 Sn = glm::cross(Sv[0], Sv[1]);
+
146 float Snl = glm::dot(Sn, Sn);
+
147
+
148 if (Snl > 1e-15f) {
+
149 const glm::vec3 Tp(glm::dot(p[0] - q[0], Sn), glm::dot(p[0] - q[1], Sn),
+
150 glm::dot(p[0] - q[2], Sn));
+
151
+
152 int index = -1;
+
153 if ((Tp[0] > 0.0f) && (Tp[1] > 0.0f) && (Tp[2] > 0.0f)) {
+
154 index = Tp[0] < Tp[1] ? 0 : 1;
+
155 if (Tp[2] < Tp[index]) index = 2;
+
156 } else if ((Tp[0] < 0.0f) && (Tp[1] < 0.0f) && (Tp[2] < 0.0f)) {
+
157 index = Tp[0] > Tp[1] ? 0 : 1;
+
158 if (Tp[2] > Tp[index]) index = 2;
+
159 }
+
160
+
161 if (index >= 0) {
+
162 shown_disjoint = true;
+
163
+
164 const glm::vec3& qIndex = q[index];
+
165
+
166 glm::vec3 V = qIndex - p[0];
+
167 glm::vec3 Z = glm::cross(Sn, Sv[0]);
+
168 if (glm::dot(V, Z) > 0.0f) {
+
169 V = qIndex - p[1];
+
170 Z = glm::cross(Sn, Sv[1]);
+
171 if (glm::dot(V, Z) > 0.0f) {
+
172 V = qIndex - p[2];
+
173 Z = glm::cross(Sn, Sv[2]);
+
174 if (glm::dot(V, Z) > 0.0f) {
+
175 glm::vec3 cp = qIndex + Sn * Tp[index] / Snl;
+
176 glm::vec3 cq = qIndex;
+
177 return glm::dot(cp - cq, cp - cq);
+
178 }
+
179 }
+
180 }
+
181 }
+
182 }
+
183
+
184 glm::vec3 Tn = glm::cross(Tv[0], Tv[1]);
+
185 float Tnl = glm::dot(Tn, Tn);
+
186
+
187 if (Tnl > 1e-15f) {
+
188 const glm::vec3 Sp(glm::dot(q[0] - p[0], Tn), glm::dot(q[0] - p[1], Tn),
+
189 glm::dot(q[0] - p[2], Tn));
+
190
+
191 int index = -1;
+
192 if ((Sp[0] > 0.0f) && (Sp[1] > 0.0f) && (Sp[2] > 0.0f)) {
+
193 index = Sp[0] < Sp[1] ? 0 : 1;
+
194 if (Sp[2] < Sp[index]) index = 2;
+
195 } else if ((Sp[0] < 0.0f) && (Sp[1] < 0.0f) && (Sp[2] < 0.0f)) {
+
196 index = Sp[0] > Sp[1] ? 0 : 1;
+
197 if (Sp[2] > Sp[index]) index = 2;
+
198 }
+
199
+
200 if (index >= 0) {
+
201 shown_disjoint = true;
+
202
+
203 const glm::vec3& pIndex = p[index];
+
204
+
205 glm::vec3 V = pIndex - q[0];
+
206 glm::vec3 Z = glm::cross(Tn, Tv[0]);
+
207 if (glm::dot(V, Z) > 0.0f) {
+
208 V = pIndex - q[1];
+
209 Z = glm::cross(Tn, Tv[1]);
+
210 if (glm::dot(V, Z) > 0.0f) {
+
211 V = pIndex - q[2];
+
212 Z = glm::cross(Tn, Tv[2]);
+
213 if (glm::dot(V, Z) > 0.0f) {
+
214 glm::vec3 cp = pIndex;
+
215 glm::vec3 cq = pIndex + Tn * Sp[index] / Tnl;
+
216 return glm::dot(cp - cq, cp - cq);
+
217 }
+
218 }
+
219 }
+
220 }
+
221 }
+
222
+
223 return shown_disjoint ? mindd : 0.0f;
+
224};
+
+
225} // namespace manifold
+
Definition meshIO.h:20
+
void EdgeEdgeDist(glm::vec3 &x, glm::vec3 &y, const glm::vec3 &p, const glm::vec3 &a, const glm::vec3 &q, const glm::vec3 &b)
Definition tri_dist.h:37
+
float DistanceTriangleTriangleSquared(const std::array< glm::vec3, 3 > &p, const std::array< glm::vec3, 3 > &q)
Definition tri_dist.h:95
+
+
+ + + + diff --git a/docs/html/types_8h_source.html b/docs/html/types_8h_source.html new file mode 100644 index 000000000..7ffade1f7 --- /dev/null +++ b/docs/html/types_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + +Manifold: types.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
types.h
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#include <stddef.h>
+
17
+
18// opaque pointers
+
19
+
20typedef struct ManifoldManifold ManifoldManifold;
+
21typedef struct ManifoldManifoldVec ManifoldManifoldVec;
+
22typedef struct ManifoldCrossSection ManifoldCrossSection;
+
23typedef struct ManifoldCrossSectionVec ManifoldCrossSectionVec;
+
24typedef struct ManifoldSimplePolygon ManifoldSimplePolygon;
+
25typedef struct ManifoldPolygons ManifoldPolygons;
+
26typedef struct ManifoldMesh ManifoldMesh;
+
27typedef struct ManifoldMeshGL ManifoldMeshGL;
+
28typedef struct ManifoldBox ManifoldBox;
+
29typedef struct ManifoldRect ManifoldRect;
+
30
+
31#ifdef MANIFOLD_EXPORT
+
32typedef struct ManifoldMaterial ManifoldMaterial;
+
33typedef struct ManifoldExportOptions ManifoldExportOptions;
+
34#endif
+
35
+
36// structs
+
37
+
+
38typedef struct ManifoldManifoldPair {
+
39 ManifoldManifold* first;
+
40 ManifoldManifold* second;
+ +
+
42
+
+
43typedef struct ManifoldVec2 {
+
44 float x;
+
45 float y;
+ +
+
47
+
+
48typedef struct ManifoldVec3 {
+
49 float x;
+
50 float y;
+
51 float z;
+ +
+
53
+
+
54typedef struct ManifoldIVec3 {
+
55 int x;
+
56 int y;
+
57 int z;
+ +
+
59
+
+
60typedef struct ManifoldVec4 {
+
61 float x;
+
62 float y;
+
63 float z;
+
64 float w;
+ +
+
66
+
+
67typedef struct ManifoldProperties {
+
68 float surface_area;
+
69 float volume;
+ +
+
71
+
72// enums
+
73
+
74typedef enum ManifoldOpType {
+
75 MANIFOLD_ADD,
+
76 MANIFOLD_SUBTRACT,
+
77 MANIFOLD_INTERSECT
+
78} ManifoldOpType;
+
79
+
80typedef enum ManifoldError {
+
81 MANIFOLD_NO_ERROR,
+
82 MANIFOLD_NON_FINITE_VERTEX,
+
83 MANIFOLD_NOT_MANIFOLD,
+
84 MANIFOLD_VERTEX_INDEX_OUT_OF_BOUNDS,
+
85 MANIFOLD_PROPERTIES_WRONG_LENGTH,
+
86 MANIFOLD_MISSING_POSITION_PROPERTIES,
+
87 MANIFOLD_MERGE_VECTORS_DIFFERENT_LENGTHS,
+
88 MANIFOLD_MERGE_INDEX_OUT_OF_BOUNDS,
+
89 MANIFOLD_TRANSFORM_WRONG_LENGTH,
+
90 MANIFOLD_RUN_INDEX_WRONG_LENGTH,
+
91 MANIFOLD_FACE_ID_WRONG_LENGTH,
+
92 MANIFOLD_INVALID_CONSTRUCTION,
+
93} ManifoldError;
+
94
+
95typedef enum ManifoldFillRule {
+
96 MANIFOLD_FILL_RULE_EVEN_ODD,
+
97 MANIFOLD_FILL_RULE_NON_ZERO,
+
98 MANIFOLD_FILL_RULE_POSITIVE,
+
99 MANIFOLD_FILL_RULE_NEGATIVE
+
100} ManifoldFillRule;
+
101
+
102typedef enum ManifoldJoinType {
+
103 MANIFOLD_JOIN_TYPE_SQUARE,
+
104 MANIFOLD_JOIN_TYPE_ROUND,
+
105 MANIFOLD_JOIN_TYPE_MITER,
+
106} ManifoldJoinType;
+
Definition types.h:54
+
Definition types.h:38
+
Definition types.h:67
+
Definition types.h:43
+
Definition types.h:48
+
Definition types.h:60
+
+
+ + + + diff --git a/docs/html/utils_8h_source.html b/docs/html/utils_8h_source.html new file mode 100644 index 000000000..5906c774a --- /dev/null +++ b/docs/html/utils_8h_source.html @@ -0,0 +1,332 @@ + + + + + + + +Manifold: utils.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
utils.h
+
+
+
1// Copyright 2020 The Manifold Authors, Jared Hoberock and Nathan Bell of
+
2// NVIDIA Research
+
3//
+
4// Licensed under the Apache License, Version 2.0 (the "License");
+
5// you may not use this file except in compliance with the License.
+
6// You may obtain a copy of the License at
+
7//
+
8// http://www.apache.org/licenses/LICENSE-2.0
+
9//
+
10// Unless required by applicable law or agreed to in writing, software
+
11// distributed under the License is distributed on an "AS IS" BASIS,
+
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
13// See the License for the specific language governing permissions and
+
14// limitations under the License.
+
15
+
16#pragma once
+
17#include <atomic>
+
18#include <mutex>
+
19#include <unordered_map>
+
20
+
21#ifdef MANIFOLD_DEBUG
+
22#include <chrono>
+
23#include <iostream>
+
24#endif
+
25
+
26#include "par.h"
+
27#include "vec.h"
+
28
+
29#if __has_include(<tracy/Tracy.hpp>)
+
30#include <tracy/Tracy.hpp>
+
31#else
+
32#define FrameMarkStart(x)
+
33#define FrameMarkEnd(x)
+
34// putting ZoneScoped in a function will instrument the function execution when
+
35// TRACY_ENABLE is set, which allows the profiler to record more accurate
+
36// timing.
+
37#define ZoneScoped
+
38#define ZoneScopedN(name)
+
39#endif
+
40
+
41namespace manifold {
+
42
+
47#ifdef MANIFOLD_DEBUG
+
+
48struct Timer {
+
49 std::chrono::high_resolution_clock::time_point start, end;
+
50
+
51 void Start() { start = std::chrono::high_resolution_clock::now(); }
+
52
+
53 void Stop() { end = std::chrono::high_resolution_clock::now(); }
+
54
+
55 float Elapsed() {
+
56 return std::chrono::duration_cast<std::chrono::milliseconds>(end - start)
+
57 .count();
+
58 }
+
59 void Print(std::string message) {
+
60 std::cout << "----------- " << std::round(Elapsed()) << " ms for "
+
61 << message << std::endl;
+
62 }
+
63};
+
+
64#endif
+
65
+
66inline int Next3(int i) {
+
67 constexpr glm::ivec3 next3(1, 2, 0);
+
68 return next3[i];
+
69}
+
70
+
71inline int Prev3(int i) {
+
72 constexpr glm::ivec3 prev3(2, 0, 1);
+
73 return prev3[i];
+
74}
+
75
+
76template <typename T, typename T1>
+
77void Permute(Vec<T>& inOut, const Vec<T1>& new2Old) {
+
78 Vec<T> tmp(std::move(inOut));
+
79 inOut.resize(new2Old.size());
+
80 gather(new2Old.begin(), new2Old.end(), tmp.begin(), inOut.begin());
+
81}
+
82
+
83template <typename T, typename T1>
+
84void Permute(std::vector<T>& inOut, const Vec<T1>& new2Old) {
+
85 std::vector<T> tmp(std::move(inOut));
+
86 inOut.resize(new2Old.size());
+
87 gather(new2Old.begin(), new2Old.end(), tmp.begin(), inOut.begin());
+
88}
+
89
+
90template <typename T>
+
91T AtomicAdd(T& target, T add) {
+
92 std::atomic<T>& tar = reinterpret_cast<std::atomic<T>&>(target);
+
93 T old_val = tar.load();
+
94 while (!tar.compare_exchange_weak(old_val, old_val + add,
+
95 std::memory_order_seq_cst)) {
+
96 }
+
97 return old_val;
+
98}
+
99
+
100template <>
+
101inline int AtomicAdd(int& target, int add) {
+
102 std::atomic<int>& tar = reinterpret_cast<std::atomic<int>&>(target);
+
103 int old_val = tar.fetch_add(add, std::memory_order_seq_cst);
+
104 return old_val;
+
105}
+
106
+
107template <typename T>
+
+ +
109 public:
+
110 ConcurrentSharedPtr(T value) : impl(std::make_shared<T>(value)) {}
+ +
112 : impl(other.impl), mutex(other.mutex) {}
+
+ +
114 public:
+
115 SharedPtrGuard(std::recursive_mutex* mutex, T* content)
+
116 : mutex(mutex), content(content) {
+
117 mutex->lock();
+
118 }
+
119 ~SharedPtrGuard() { mutex->unlock(); }
+
120
+
121 T& operator*() { return *content; }
+
122 T* operator->() { return content; }
+
123
+
124 private:
+
125 std::recursive_mutex* mutex;
+
126 T* content;
+
127 };
+
+
128 SharedPtrGuard GetGuard() { return SharedPtrGuard(mutex.get(), impl.get()); };
+
129 unsigned int UseCount() { return impl.use_count(); };
+
130
+
131 private:
+
132 std::shared_ptr<T> impl;
+
133 std::shared_ptr<std::recursive_mutex> mutex =
+
134 std::make_shared<std::recursive_mutex>();
+
135};
+
+
136
+
137template <typename I = int, typename R = unsigned char>
+
+
138struct UnionFind {
+
139 Vec<I> parents;
+
140 // we do union by rank
+
141 // note that we shift rank by 1, rank 0 means it is not connected to anything
+
142 // else
+
143 Vec<R> ranks;
+
144
+
145 UnionFind(I numNodes) : parents(numNodes), ranks(numNodes, 0) {
+
146 sequence(parents.begin(), parents.end());
+
147 }
+
148
+
149 I find(I x) {
+
150 while (parents[x] != x) {
+
151 parents[x] = parents[parents[x]];
+
152 x = parents[x];
+
153 }
+
154 return x;
+
155 }
+
156
+
157 void unionXY(I x, I y) {
+
158 if (x == y) return;
+
159 if (ranks[x] == 0) ranks[x] = 1;
+
160 if (ranks[y] == 0) ranks[y] = 1;
+
161 x = find(x);
+
162 y = find(y);
+
163 if (x == y) return;
+
164 if (ranks[x] < ranks[y]) std::swap(x, y);
+
165 if (ranks[x] == ranks[y]) ranks[x]++;
+
166 parents[y] = x;
+
167 }
+
168
+
169 I connectedComponents(std::vector<I>& components) {
+
170 components.resize(parents.size());
+
171 I lonelyNodes = 0;
+
172 std::unordered_map<I, I> toLabel;
+
173 for (size_t i = 0; i < parents.size(); ++i) {
+
174 // we optimize for connected component of size 1
+
175 // no need to put them into the hashmap
+
176 if (ranks[i] == 0) {
+
177 components[i] = static_cast<I>(toLabel.size()) + lonelyNodes++;
+
178 continue;
+
179 }
+
180 parents[i] = find(i);
+
181 auto iter = toLabel.find(parents[i]);
+
182 if (iter == toLabel.end()) {
+
183 I s = static_cast<I>(toLabel.size()) + lonelyNodes;
+
184 toLabel.insert(std::make_pair(parents[i], s));
+
185 components[i] = s;
+
186 } else {
+
187 components[i] = iter->second;
+
188 }
+
189 }
+
190 return toLabel.size() + lonelyNodes;
+
191 }
+
192};
+
+
193
+
194template <typename T>
+
+
195struct Identity {
+
196 T operator()(T v) const { return v; }
+
197};
+
+
198
+
199template <typename T>
+
+
200struct Negate {
+
201 T operator()(T v) const { return -v; }
+
202};
+
+
203
+
205} // namespace manifold
+ +
Definition utils.h:108
+
Definition vec.h:43
+
Definition meshIO.h:20
+
Definition utils.h:195
+
Definition utils.h:200
+
Definition utils.h:48
+
Definition utils.h:138
+
+
+ + + + diff --git a/docs/html/vec_8h_source.html b/docs/html/vec_8h_source.html new file mode 100644 index 000000000..c5757b2ee --- /dev/null +++ b/docs/html/vec_8h_source.html @@ -0,0 +1,351 @@ + + + + + + + +Manifold: vec.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
vec.h
+
+
+
1// Copyright 2021 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16#if TRACY_ENABLE && TRACY_MEMORY_USAGE
+
17#include "tracy/Tracy.hpp"
+
18#else
+
19#define TracyAllocS(ptr, size, n) (void)0
+
20#define TracyFreeS(ptr, n) (void)0
+
21#endif
+
22
+
23#include "par.h"
+
24#include "vec_view.h"
+
25
+
26namespace manifold {
+
27
+
31template <typename T>
+
32class Vec;
+
33
+
34/*
+
35 * Specialized vector implementation with multithreaded fill and uninitialized
+
36 * memory optimizations.
+
37 * Note that the constructor and resize function will not perform initialization
+
38 * if the parameter val is not set. Also, this implementation is a toy
+
39 * implementation that did not consider things like non-trivial
+
40 * constructor/destructor, please keep T trivial.
+
41 */
+
42template <typename T>
+
+
43class Vec : public VecView<T> {
+
44 public:
+
45 Vec() {}
+
46
+
47 // Note that the vector constructed with this constructor will contain
+
48 // uninitialized memory. Please specify `val` if you need to make sure that
+
49 // the data is initialized.
+
50 Vec(size_t size) {
+
51 reserve(size);
+
52 this->size_ = size;
+
53 }
+
54
+
55 Vec(size_t size, T val) { resize(size, val); }
+
56
+
57 Vec(const Vec<T> &vec) {
+
58 this->size_ = vec.size();
+
59 this->capacity_ = this->size_;
+
60 auto policy = autoPolicy(this->size_);
+
61 if (this->size_ != 0) {
+
62 this->ptr_ = reinterpret_cast<T *>(malloc(this->size_ * sizeof(T)));
+
63 ASSERT(this->ptr_ != nullptr, std::bad_alloc());
+
64 TracyAllocS(this->ptr_, this->size_ * sizeof(T), 3);
+
65 copy(policy, vec.begin(), vec.end(), this->ptr_);
+
66 }
+
67 }
+
68
+
69 Vec(const std::vector<T> &vec) {
+
70 this->size_ = vec.size();
+
71 this->capacity_ = this->size_;
+
72 auto policy = autoPolicy(this->size_);
+
73 if (this->size_ != 0) {
+
74 this->ptr_ = reinterpret_cast<T *>(malloc(this->size_ * sizeof(T)));
+
75 ASSERT(this->ptr_ != nullptr, std::bad_alloc());
+
76 TracyAllocS(this->ptr_, this->size_ * sizeof(T), 3);
+
77 copy(policy, vec.begin(), vec.end(), this->ptr_);
+
78 }
+
79 }
+
80
+
81 Vec(Vec<T> &&vec) {
+
82 this->ptr_ = vec.ptr_;
+
83 this->size_ = vec.size_;
+
84 capacity_ = vec.capacity_;
+
85 vec.ptr_ = nullptr;
+
86 vec.size_ = 0;
+
87 vec.capacity_ = 0;
+
88 }
+
89
+
90 operator VecView<T>() { return {this->ptr_, this->size_}; }
+
91 operator VecView<const T>() const { return {this->ptr_, this->size_}; }
+
92
+
93 ~Vec() {
+
94 if (this->ptr_ != nullptr) {
+
95 TracyFreeS(this->ptr_, 3);
+
96 free(this->ptr_);
+
97 }
+
98 this->ptr_ = nullptr;
+
99 this->size_ = 0;
+
100 capacity_ = 0;
+
101 }
+
102
+
103 Vec<T> &operator=(const Vec<T> &other) {
+
104 if (&other == this) return *this;
+
105 if (this->ptr_ != nullptr) {
+
106 TracyFreeS(this->ptr_, 3);
+
107 free(this->ptr_);
+
108 }
+
109 this->size_ = other.size_;
+
110 capacity_ = other.size_;
+
111 auto policy = autoPolicy(this->size_);
+
112 if (this->size_ != 0) {
+
113 this->ptr_ = reinterpret_cast<T *>(malloc(this->size_ * sizeof(T)));
+
114 ASSERT(this->ptr_ != nullptr, std::bad_alloc());
+
115 TracyAllocS(this->ptr_, this->size_ * sizeof(T), 3);
+
116 copy(policy, other.begin(), other.end(), this->ptr_);
+
117 }
+
118 return *this;
+
119 }
+
120
+
121 Vec<T> &operator=(Vec<T> &&other) {
+
122 if (&other == this) return *this;
+
123 if (this->ptr_ != nullptr) {
+
124 TracyFreeS(this->ptr_, 3);
+
125 free(this->ptr_);
+
126 }
+
127 this->size_ = other.size_;
+
128 capacity_ = other.capacity_;
+
129 this->ptr_ = other.ptr_;
+
130 other.ptr_ = nullptr;
+
131 other.size_ = 0;
+
132 other.capacity_ = 0;
+
133 return *this;
+
134 }
+
135
+
136 operator VecView<T>() const { return {this->ptr_, this->size_}; }
+
137
+
138 void swap(Vec<T> &other) {
+
139 std::swap(this->ptr_, other.ptr_);
+
140 std::swap(this->size_, other.size_);
+
141 std::swap(capacity_, other.capacity_);
+
142 }
+
143
+
144 inline void push_back(const T &val) {
+
145 if (this->size_ >= capacity_) {
+
146 // avoid dangling pointer in case val is a reference of our array
+
147 T val_copy = val;
+
148 reserve(capacity_ == 0 ? 128 : capacity_ * 2);
+
149 this->ptr_[this->size_++] = val_copy;
+
150 return;
+
151 }
+
152 this->ptr_[this->size_++] = val;
+
153 }
+
154
+
155 void reserve(size_t n) {
+
156 if (n > capacity_) {
+
157 T *newBuffer = reinterpret_cast<T *>(malloc(n * sizeof(T)));
+
158 ASSERT(newBuffer != nullptr, std::bad_alloc());
+
159 TracyAllocS(newBuffer, n * sizeof(T), 3);
+
160 if (this->size_ > 0)
+
161 copy(autoPolicy(this->size_), this->ptr_, this->ptr_ + this->size_,
+
162 newBuffer);
+
163 if (this->ptr_ != nullptr) {
+
164 TracyFreeS(this->ptr_, 3);
+
165 free(this->ptr_);
+
166 }
+
167 this->ptr_ = newBuffer;
+
168 capacity_ = n;
+
169 }
+
170 }
+
171
+
172 void resize(size_t newSize, T val = T()) {
+
173 bool shrink = this->size_ > 2 * newSize;
+
174 reserve(newSize);
+
175 if (this->size_ < newSize) {
+
176 fill(autoPolicy(newSize - this->size_), this->ptr_ + this->size_,
+
177 this->ptr_ + newSize, val);
+
178 }
+
179 this->size_ = newSize;
+
180 if (shrink) shrink_to_fit();
+
181 }
+
182
+
183 void shrink_to_fit() {
+
184 T *newBuffer = nullptr;
+
185 if (this->size_ > 0) {
+
186 newBuffer = reinterpret_cast<T *>(malloc(this->size_ * sizeof(T)));
+
187 ASSERT(newBuffer != nullptr, std::bad_alloc());
+
188 TracyAllocS(newBuffer, this->size_ * sizeof(T), 3);
+
189 copy(autoPolicy(this->size_), this->ptr_, this->ptr_ + this->size_,
+
190 newBuffer);
+
191 }
+
192 if (this->ptr_ != nullptr) {
+
193 TracyFreeS(this->ptr_, 3);
+
194 free(this->ptr_);
+
195 }
+
196 this->ptr_ = newBuffer;
+
197 capacity_ = this->size_;
+
198 }
+
199
+
200 VecView<T> view(size_t offset = 0,
+
201 size_t length = std::numeric_limits<size_t>::max()) {
+
202 if (length == std::numeric_limits<size_t>::max())
+
203 length = this->size_ - offset;
+
204 ASSERT(length >= 0, std::out_of_range("Vec::view out of range"));
+
205 ASSERT(offset + length <= this->size_ && offset >= 0,
+
206 std::out_of_range("Vec::view out of range"));
+
207 return VecView<T>(this->ptr_ + offset, length);
+
208 }
+
209
+
210 VecView<const T> cview(
+
211 size_t offset = 0,
+
212 size_t length = std::numeric_limits<size_t>::max()) const {
+
213 if (length == std::numeric_limits<size_t>::max())
+
214 length = this->size_ - offset;
+
215 ASSERT(length >= 0, std::out_of_range("Vec::cview out of range"));
+
216 ASSERT(offset + length <= this->size_ && offset >= 0,
+
217 std::out_of_range("Vec::cview out of range"));
+
218 return VecView<const T>(this->ptr_ + offset, length);
+
219 }
+
220
+
221 VecView<const T> view(
+
222 size_t offset = 0,
+
223 size_t length = std::numeric_limits<size_t>::max()) const {
+
224 return cview(offset, length);
+
225 }
+
226
+
227 T *data() { return this->ptr_; }
+
228 const T *data() const { return this->ptr_; }
+
229
+
230 size_t capacity() const { return capacity_; }
+
231
+
232 private:
+
233 size_t capacity_ = 0;
+
234
+
235 static_assert(std::is_trivially_destructible<T>::value);
+
236};
+
+
238} // namespace manifold
+
Definition vec.h:43
+
Definition vec_view.h:27
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/vec__view_8h_source.html b/docs/html/vec__view_8h_source.html new file mode 100644 index 000000000..3673323e3 --- /dev/null +++ b/docs/html/vec__view_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +Manifold: vec_view.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
vec_view.h
+
+
+
1// Copyright 2023 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15#pragma once
+
16
+
17#include "optional_assert.h"
+
18
+
19namespace manifold {
+
20
+
26template <typename T>
+
+
27class VecView {
+
28 public:
+
29 using Iter = T *;
+
30 using IterC = const T *;
+
31
+
32 VecView(T *ptr, size_t size) : ptr_(ptr), size_(size) {}
+
33
+
34 VecView(const VecView &other) {
+
35 ptr_ = other.ptr_;
+
36 size_ = other.size_;
+
37 }
+
38
+
39 VecView &operator=(const VecView &other) {
+
40 ptr_ = other.ptr_;
+
41 size_ = other.size_;
+
42 return *this;
+
43 }
+
44
+
45 // allows conversion to a const VecView
+
46 operator VecView<const T>() const { return {ptr_, size_}; }
+
47
+
48 inline const T &operator[](size_t i) const {
+
49 ASSERT(i < size_, std::out_of_range("Vec out of range"));
+
50 return ptr_[i];
+
51 }
+
52
+
53 inline T &operator[](size_t i) {
+
54 ASSERT(i < size_, std::out_of_range("Vec out of range"));
+
55 return ptr_[i];
+
56 }
+
57
+
58 IterC cbegin() const { return ptr_; }
+
59 IterC cend() const { return ptr_ + size_; }
+
60
+
61 IterC begin() const { return cbegin(); }
+
62 IterC end() const { return cend(); }
+
63
+
64 Iter begin() { return ptr_; }
+
65 Iter end() { return ptr_ + size_; }
+
66
+
67 const T &front() const {
+
68 ASSERT(size_ != 0,
+
69 std::out_of_range("Attempt to take the front of an empty vector"));
+
70 return ptr_[0];
+
71 }
+
72
+
73 const T &back() const {
+
74 ASSERT(size_ != 0,
+
75 std::out_of_range("Attempt to take the back of an empty vector"));
+
76 return ptr_[size_ - 1];
+
77 }
+
78
+
79 T &front() {
+
80 ASSERT(size_ != 0,
+
81 std::out_of_range("Attempt to take the front of an empty vector"));
+
82 return ptr_[0];
+
83 }
+
84
+
85 T &back() {
+
86 ASSERT(size_ != 0,
+
87 std::out_of_range("Attempt to take the back of an empty vector"));
+
88 return ptr_[size_ - 1];
+
89 }
+
90
+
91 size_t size() const { return size_; }
+
92
+
93 bool empty() const { return size_ == 0; }
+
94
+
95#ifdef MANIFOLD_DEBUG
+
96 void Dump() const {
+
97 std::cout << "Vec = " << std::endl;
+
98 for (size_t i = 0; i < size(); ++i) {
+
99 std::cout << i << ", " << ptr_[i] << ", " << std::endl;
+
100 }
+
101 std::cout << std::endl;
+
102 }
+
103#endif
+
104
+
105 protected:
+
106 T *ptr_ = nullptr;
+
107 size_t size_ = 0;
+
108
+
109 VecView() = default;
+
110};
+
+
111
+
112} // namespace manifold
+
Definition vec_view.h:27
+
Definition meshIO.h:20
+
+
+ + + + diff --git a/docs/html/zebra3_8cpp_source.html b/docs/html/zebra3_8cpp_source.html new file mode 100644 index 000000000..dfaf1e6bf --- /dev/null +++ b/docs/html/zebra3_8cpp_source.html @@ -0,0 +1,65821 @@ + + + + + + + +Manifold: zebra3.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
zebra3.cpp
+
+
+
1// Copyright 2024 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15TEST(Polygon, Zebra3) {
+
16 Polygons polys;
+
17 polys.push_back({
+
18 {4.94355011, 3.51125193}, //
+
19 {4.94355011, 3.51049638}, //
+
20 {4.94355011, 3.51099992}, //
+
21 });
+
22 polys.push_back({
+
23 {4.46035004, 3.62306118}, //
+
24 {4.46079063, 3.62339187}, //
+
25 {4.46135759, 3.62388825}, //
+
26 {4.46204996, 3.6245501}, //
+
27 {4.46282673, 3.62532663}, //
+
28 {4.46364498, 3.62614512}, //
+
29 {4.46450567, 3.62700558}, //
+
30 {4.46540785, 3.62790799}, //
+
31 {4.46635246, 3.62885237}, //
+
32 {4.46733904, 3.62983894}, //
+
33 {4.4683671, 3.63086724}, //
+
34 {4.4694376, 3.63193774}, //
+
35 {4.47055006, 3.63304996}, //
+
36 {4.47168255, 3.63424563}, //
+
37 {4.47281408, 3.635566}, //
+
38 {4.47394466, 3.63701105}, //
+
39 {4.47507334, 3.6385808}, //
+
40 {4.47620106, 3.64027524}, //
+
41 {4.47732782, 3.64209437}, //
+
42 {4.47845316, 3.6440382}, //
+
43 {4.47957706, 3.64610672}, //
+
44 {4.48070002, 3.64829993}, //
+
45 {4.48185444, 3.65052414}, //
+
46 {4.48305082, 3.65266299}, //
+
47 {4.48428869, 3.65471673}, //
+
48 {4.485569, 3.65668511}, //
+
49 {4.48689127, 3.65856862}, //
+
50 {4.4882555, 3.66036677}, //
+
51 {4.48966169, 3.66207957}, //
+
52 {4.49110985, 3.66370749}, //
+
53 {4.49259996, 3.66525006}, //
+
54 {4.49740505, 3.66989803}, //
+
55 {4.5027976, 3.67479825}, //
+
56 {4.50877762, 3.67995}, //
+
57 {4.51534557, 3.68535376}, //
+
58 {4.52250147, 3.69100928}, //
+
59 {4.53024435, 3.69691658}, //
+
60 {4.53857517, 3.70307589}, //
+
61 {4.54749393, 3.70948696}, //
+
62 {4.55700016, 3.71615005}, //
+
63 {4.56085062, 3.71848941}, //
+
64 {4.56486893, 3.72099686}, //
+
65 {4.56905556, 3.72367215}, //
+
66 {4.57341003, 3.72651553}, //
+
67 {4.57793188, 3.72952652}, //
+
68 {4.58262205, 3.73270559}, //
+
69 {4.58748007, 3.73605251}, //
+
70 {4.59250641, 3.73956728}, //
+
71 {4.59770012, 3.74324989}, //
+
72 {4.59826946, 3.74368834}, //
+
73 {4.60165024, 3.74530554}, //
+
74 {4.6049757, 3.74691367}, //
+
75 {4.60817575, 3.74847841}, //
+
76 {4.61124992, 3.75}, //
+
77 {4.61351728, 3.75113797}, //
+
78 {4.61276674, 3.75151658}, //
+
79 {4.6113019, 3.75149989}, //
+
80 {4.60941839, 3.75093889}, //
+
81 {4.6071167, 3.74983335}, //
+
82 {4.60439634, 3.74818325}, //
+
83 {4.60125732, 3.74598885}, //
+
84 {4.59826946, 3.74368834}, //
+
85 {4.59819794, 3.74365425}, //
+
86 {4.59462023, 3.74195981}, //
+
87 {4.59091663, 3.74022222}, //
+
88 {4.58708715, 3.73844147}, //
+
89 {4.58313131, 3.73661733}, //
+
90 {4.57905006, 3.73475003}, //
+
91 {4.57494736, 3.73291349}, //
+
92 {4.57092905, 3.73115993}, //
+
93 {4.56699467, 3.72948885}, //
+
94 {4.56314373, 3.72790051}, //
+
95 {4.55937719, 3.72639513}, //
+
96 {4.55569458, 3.72497225}, //
+
97 {4.55209589, 3.7236321}, //
+
98 {4.54858065, 3.72237468}, //
+
99 {4.5451498, 3.72119999}, //
+
100 {4.54186535, 3.72009826}, //
+
101 {4.53878927, 3.71903706}, //
+
102 {4.53592205, 3.71801662}, //
+
103 {4.53326368, 3.71703696}, //
+
104 {4.53081369, 3.71609807}, //
+
105 {4.52857208, 3.71519995}, //
+
106 {4.52653933, 3.71434259}, //
+
107 {4.52471542, 3.71352601}, //
+
108 {4.5230999, 3.71274996}, //
+
109 {4.52144241, 3.71260309}, //
+
110 {4.51949263, 3.71216226}, //
+
111 {4.51725006, 3.71142769}, //
+
112 {4.51471472, 3.71039939}, //
+
113 {4.51188707, 3.70907712}, //
+
114 {4.50876665, 3.70746112}, //
+
115 {4.50535393, 3.70555115}, //
+
116 {4.50164795, 3.70334744}, //
+
117 {4.49765015, 3.70085001}, //
+
118 {4.49499893, 3.69912982}, //
+
119 {4.49614143, 3.69896364}, //
+
120 {4.49708414, 3.69839501}, //
+
121 {4.49765015, 3.69744992}, //
+
122 {4.4979229, 3.6962018}, //
+
123 {4.49798584, 3.69470191}, //
+
124 {4.49783897, 3.69295001}, //
+
125 {4.4974823, 3.69094634}, //
+
126 {4.49691534, 3.68869066}, //
+
127 {4.49613905, 3.68618321}, //
+
128 {4.49515247, 3.683424}, //
+
129 {4.49395609, 3.68041301}, //
+
130 {4.4925499, 3.67715001}, //
+
131 {4.49096584, 3.67365623}, //
+
132 {4.48921442, 3.66995239}, //
+
133 {4.48729467, 3.66603899}, //
+
134 {4.4852066, 3.66191554}, //
+
135 {4.48295116, 3.65758204}, //
+
136 {4.48052788, 3.65303898}, //
+
137 {4.47793627, 3.64828587}, //
+
138 {4.47517729, 3.64332294}, //
+
139 {4.47224998, 3.63814998}, //
+
140 {4.47008848, 3.63596725}, //
+
141 {4.46813631, 3.63395238}, //
+
142 {4.46639442, 3.63210559}, //
+
143 {4.46486235, 3.63042665}, //
+
144 {4.46354008, 3.62891555}, //
+
145 {4.46242762, 3.6275723}, //
+
146 {4.46152544, 3.62639689}, //
+
147 {4.4608326, 3.62538958}, //
+
148 {4.46035004, 3.6245501}, //
+
149 {4.46003532, 3.62388825}, //
+
150 {4.4598465, 3.62339187}, //
+
151 {4.45978355, 3.62306118}, //
+
152 {4.4598465, 3.62289572}, //
+
153 {4.46003532, 3.62289572}, //
+
154 });
+
155 polys.push_back({
+
156 {4.84654331, 3.66814566}, //
+
157 {4.84689999, 3.66864991}, //
+
158 {4.84725666, 3.66957283}, //
+
159 {4.84757137, 3.67083025}, //
+
160 {4.8478446, 3.67242217}, //
+
161 {4.84807539, 3.67434883}, //
+
162 {4.84826422, 3.67660999}, //
+
163 {4.84841108, 3.67920566}, //
+
164 {4.84851599, 3.68213582}, //
+
165 {4.84857893, 3.68540072}, //
+
166 {4.84859991, 3.68899989}, //
+
167 {4.84859991, 3.69519019}, //
+
168 {4.84859991, 3.69841123}, //
+
169 {4.84859991, 3.70171595}, //
+
170 {4.84859991, 3.70510483}, //
+
171 {4.84859991, 3.7121346}, //
+
172 {4.84859991, 3.71577525}, //
+
173 {4.84859991, 3.71950006}, //
+
174 {4.84937572, 3.72299433}, //
+
175 {4.85019255, 3.72594452}, //
+
176 {4.8510499, 3.72834992}, //
+
177 {4.85194826, 3.73021102}, //
+
178 {4.85288715, 3.73152781}, //
+
179 {4.85386658, 3.73230004}, //
+
180 {4.85468578, 3.73248291}, //
+
181 {4.85350084, 3.73421478}, //
+
182 {4.85200024, 3.73644996}, //
+
183 {4.8505311, 3.73787713}, //
+
184 {4.84914589, 3.73913646}, //
+
185 {4.8478446, 3.7402277}, //
+
186 {4.84662724, 3.74115133}, //
+
187 {4.84549379, 3.74190688}, //
+
188 {4.84444427, 3.74249434}, //
+
189 {4.84347916, 3.7429142}, //
+
190 {4.84259748, 3.74316597}, //
+
191 {4.84180021, 3.74324989}, //
+
192 {4.84096098, 3.74320793}, //
+
193 {4.83995533, 3.74308205}, //
+
194 {4.83878326, 3.74287224}, //
+
195 {4.83744431, 3.74257851}, //
+
196 {4.83593893, 3.74220061}, //
+
197 {4.83426666, 3.7417388}, //
+
198 {4.83242798, 3.74119329}, //
+
199 {4.8304224, 3.74056363}, //
+
200 {4.83029795, 3.74052262}, //
+
201 {4.83256674, 3.74023342}, //
+
202 {4.83455372, 3.73952413}, //
+
203 {4.83624792, 3.73839641}, //
+
204 {4.83764982, 3.73685002}, //
+
205 {4.83875942, 3.73488522}, //
+
206 {4.83957577, 3.73250175}, //
+
207 {4.84009981, 3.72970009}, //
+
208 {4.84049892, 3.72660494}, //
+
209 {4.84093952, 3.72334194}, //
+
210 {4.84142208, 3.7199111}, //
+
211 {4.84194708, 3.71631241}, //
+
212 {4.84251356, 3.71254563}, //
+
213 {4.84312201, 3.70861101}, //
+
214 {4.84377289, 3.70450854}, //
+
215 {4.84446526, 3.70023823}, //
+
216 {4.84520006, 3.69580007}, //
+
217 {4.84520006, 3.69428897}, //
+
218 {4.84520006, 3.69277787}, //
+
219 {4.84520006, 3.69126678}, //
+
220 {4.84520006, 3.68673325}, //
+
221 {4.84520006, 3.68522215}, //
+
222 {4.84520006, 3.68371105}, //
+
223 {4.84520006, 3.68219995}, //
+
224 {4.84522104, 3.67868447}, //
+
225 {4.84528399, 3.67567158}, //
+
226 {4.84538889, 3.67316103}, //
+
227 {4.84553576, 3.67115307}, //
+
228 {4.84572458, 3.66964746}, //
+
229 {4.84595537, 3.66864443}, //
+
230 {4.8462286, 3.66814375}, //
+
231 });
+
232 polys.push_back({
+
233 {4.42644978, 3.63980007}, //
+
234 {4.4291358, 3.64246488}, //
+
235 {4.43190432, 3.64517045}, //
+
236 {4.43475533, 3.64791656}, //
+
237 {4.4376893, 3.65070367}, //
+
238 {4.44070625, 3.65353155}, //
+
239 {4.44380569, 3.65639997}, //
+
240 {4.44698763, 3.65930915}, //
+
241 {4.45025253, 3.66225934}, //
+
242 {4.45359993, 3.66525006}, //
+
243 {4.45692587, 3.66827154}, //
+
244 {4.46012592, 3.67129207}, //
+
245 {4.46320009, 3.67431116}, //
+
246 {4.46614838, 3.67732906}, //
+
247 {4.46629763, 3.67748904}, //
+
248 {4.46966743, 3.68035984}, //
+
249 {4.47353888, 3.68353891}, //
+
250 {4.47745228, 3.68663406}, //
+
251 {4.48140812, 3.68964505}, //
+
252 {4.48540545, 3.69257212}, //
+
253 {4.48944521, 3.6954155}, //
+
254 {4.49352646, 3.69817472}, //
+
255 {4.49499893, 3.69912982}, //
+
256 {4.49482203, 3.69915557}, //
+
257 {4.49312639, 3.69897103}, //
+
258 {4.49105453, 3.6984098}, //
+
259 {4.4886055, 3.69747233}, //
+
260 {4.48578024, 3.69615793}, //
+
261 {4.48257828, 3.69446731}, //
+
262 {4.47900009, 3.69239998}, //
+
263 {4.47668171, 3.68938828}, //
+
264 {4.47423697, 3.68637538}, //
+
265 {4.47166681, 3.68336105}, //
+
266 {4.4689703, 3.68034577}, //
+
267 {4.46629763, 3.67748904}, //
+
268 {4.46583748, 3.67709684}, //
+
269 {4.46204996, 3.67374992}, //
+
270 {4.45832539, 3.67038155}, //
+
271 {4.45468473, 3.6670537}, //
+
272 {4.45112801, 3.66376662}, //
+
273 {4.44765472, 3.66052032}, //
+
274 {4.44426584, 3.65731478}, //
+
275 {4.44096088, 3.65415001}, //
+
276 {4.43774033, 3.65102601}, //
+
277 {4.43460321, 3.64794254}, //
+
278 {4.43155003, 3.64490008}, //
+
279 {4.42644978, 3.63980007}, //
+
280 {4.42644978, 3.63980007}, //
+
281 {4.4240222, 3.63737226}, //
+
282 {4.42619705, 3.63954687}, //
+
283 });
+
284 polys.push_back({
+
285 {5.59096575, 3.00315428}, //
+
286 {5.59108686, 3.00468755}, //
+
287 {5.59114981, 3.00749993}, //
+
288 {5.59112883, 3.0098815}, //
+
289 {5.59106588, 3.01251483}, //
+
290 {5.59096098, 3.01539993}, //
+
291 {5.59081411, 3.01853704}, //
+
292 {5.59062529, 3.02192593}, //
+
293 {5.5903945, 3.02556658}, //
+
294 {5.59012175, 3.02945924}, //
+
295 {5.58980656, 3.03360367}, //
+
296 {5.58944988, 3.03800011}, //
+
297 {5.58907223, 3.04250121}, //
+
298 {5.58888388, 3.0447228}, //
+
299 {5.58892536, 3.04515553}, //
+
300 {5.58926105, 3.0504334}, //
+
301 {5.5894289, 3.05571103}, //
+
302 {5.5894289, 3.0609889}, //
+
303 {5.58926105, 3.06626678}, //
+
304 {5.58892536, 3.07154441}, //
+
305 {5.58842182, 3.07682228}, //
+
306 {5.58774996, 3.08209991}, //
+
307 {5.58768702, 3.0864234}, //
+
308 {5.58749819, 3.09037161}, //
+
309 {5.58718348, 3.09394455}, //
+
310 {5.5867424, 3.09714198}, //
+
311 {5.58617592, 3.09996414}, //
+
312 {5.58548355, 3.10241103}, //
+
313 {5.58466482, 3.10448265}, //
+
314 {5.58372021, 3.106179}, //
+
315 {5.58265018, 3.10750008}, //
+
316 {5.58224916, 3.10786724}, //
+
317 {5.58181286, 3.10949373}, //
+
318 {5.58133316, 3.1107111}, //
+
319 {5.58081293, 3.11150861}, //
+
320 {5.58025169, 3.1118865}, //
+
321 {5.57964993, 3.11184454}, //
+
322 {5.57900763, 3.11138272}, //
+
323 {5.57832384, 3.11050129}, //
+
324 {5.57822752, 3.11032748}, //
+
325 {5.57927799, 3.10995555}, //
+
326 {5.58040285, 3.10934687}, //
+
327 {5.58152723, 3.10852838}, //
+
328 {5.58224916, 3.10786724}, //
+
329 {5.58225203, 3.10785675}, //
+
330 {5.58265018, 3.10579991}, //
+
331 {5.58302784, 3.10343957}, //
+
332 {5.58340549, 3.10086918}, //
+
333 {5.58378315, 3.09808898}, //
+
334 {5.58416128, 3.09509873}, //
+
335 {5.58453894, 3.09189868}, //
+
336 {5.58491659, 3.08848882}, //
+
337 {5.58529425, 3.08486915}, //
+
338 {5.58567238, 3.08103943}, //
+
339 {5.58605003, 3.0769999}, //
+
340 {5.58642769, 3.07283449}, //
+
341 {5.58680534, 3.06862712}, //
+
342 {5.58718348, 3.06437778}, //
+
343 {5.58756113, 3.06008649}, //
+
344 {5.58793879, 3.05575299}, //
+
345 {5.58831644, 3.05137777}, //
+
346 {5.58869457, 3.04696059}, //
+
347 {5.58888388, 3.0447228}, //
+
348 {5.58842182, 3.03987789}, //
+
349 {5.58774996, 3.03460002}, //
+
350 {5.58774996, 3.00915003}, //
+
351 {5.58783388, 3.00741863}, //
+
352 {5.58808565, 3.00597954}, //
+
353 {5.58850574, 3.00483322}, //
+
354 {5.58909321, 3.00397968}, //
+
355 {5.589849, 3.00341845}, //
+
356 {5.59077215, 3.00314999}, //
+
357 });
+
358 polys.push_back({
+
359 {0.468235791, 0.874800026}, //
+
360 {0.468088895, 0.874800026}, //
+
361 {0.467983961, 0.874800026}, //
+
362 {0.468202323, 0.874800026}, //
+
363 });
+
364 polys.push_back({
+
365 {0.467900008, 0.874800026}, //
+
366 {0.467900008, 0.874800026}, //
+
367 {0.467900008, 0.874800026}, //
+
368 });
+
369 polys.push_back({
+
370 {4.41866922, 3.63201904}, //
+
371 {4.4195056, 3.63285565}, //
+
372 {4.42067671, 3.63402653}, //
+
373 {4.42145729, 3.63480711}, //
+
374 {4.42176867, 3.63511848}, //
+
375 {4.42396069, 3.6373105}, //
+
376 {4.41825724, 3.63160729}, //
+
377 {4.41819048, 3.63154078}, //
+
378 });
+
379 polys.push_back({
+
380 {4.94355011, 3.50646663}, //
+
381 {4.94355011, 3.50753713}, //
+
382 {4.94355011, 3.50527048}, //
+
383 });
+
384 polys.push_back({
+
385 {4.77609634, 2.11075497}, //
+
386 {4.77758312, 2.10989451}, //
+
387 {4.77936316, 2.10899186}, //
+
388 {4.78143501, 2.10804749}, //
+
389 {4.78380013, 2.10706115}, //
+
390 {4.78645754, 2.10603261}, //
+
391 {4.78940725, 2.10496235}, //
+
392 {4.79265022, 2.10384989}, //
+
393 {4.79606009, 2.10266471}, //
+
394 {4.79951191, 2.10135365}, //
+
395 {4.8030057, 2.0999167}, //
+
396 {4.80654144, 2.09835362}, //
+
397 {4.81011915, 2.09666491}, //
+
398 {4.81373882, 2.09485006}, //
+
399 {4.81740046, 2.09290934}, //
+
400 {4.82110453, 2.09084249}, //
+
401 {4.82485008, 2.08864999}, //
+
402 {4.83502674, 2.08600688}, //
+
403 {4.84595633, 2.08261061}, //
+
404 {4.85763884, 2.07846117}, //
+
405 {4.87007475, 2.07355857}, //
+
406 {4.88326359, 2.06790304}, //
+
407 {4.89720535, 2.06149435}, //
+
408 {4.91190052, 2.05433273}, //
+
409 {4.92734861, 2.04641795}, //
+
410 {4.94355011, 2.03775001}, //
+
411 {4.95039082, 2.03312349}, //
+
412 {4.95735741, 2.02828836}, //
+
413 {4.96444988, 2.02324438}, //
+
414 {4.97166872, 2.01799202}, //
+
415 {4.97901297, 2.0125308}, //
+
416 {4.9864831, 2.00686121}, //
+
417 {4.99407959, 2.00098276}, //
+
418 {5.00180197, 1.9948957}, //
+
419 {5.00965023, 1.98860002}, //
+
420 {5.01741505, 1.98230433}, //
+
421 {5.02488708, 1.97621727}, //
+
422 {5.03206682, 1.97033894}, //
+
423 {5.03895378, 1.96466911}, //
+
424 {5.04554796, 1.95920801}, //
+
425 {5.05184984, 1.95395553}, //
+
426 {5.05785942, 1.94891179}, //
+
427 {5.06357574, 1.94407654}, //
+
428 {5.06899977, 1.93945003}, //
+
429 {5.07050085, 1.93798089}, //
+
430 {5.07200241, 1.93659568}, //
+
431 {5.0735054, 1.93529439}, //
+
432 {5.07500982, 1.93407714}, //
+
433 {5.0765152, 1.93294382}, //
+
434 {5.078022, 1.93189442}, //
+
435 {5.07953024, 1.93092906}, //
+
436 {5.08103943, 1.93004751}, //
+
437 {5.08255005, 1.92925}, //
+
438 {5.08560324, 1.92623889}, //
+
439 {5.08874035, 1.92322779}, //
+
440 {5.09196091, 1.92021668}, //
+
441 {5.09526587, 1.91720557}, //
+
442 {5.09865475, 1.91419446}, //
+
443 {5.10212755, 1.91118336}, //
+
444 {5.10568476, 1.90817225}, //
+
445 {5.10932541, 1.90516114}, //
+
446 {5.11304998, 1.90215003}, //
+
447 {5.11839008, 1.89760685}, //
+
448 {5.12385511, 1.89302158}, //
+
449 {5.1294446, 1.88839447}, //
+
450 {5.13515854, 1.88372529}, //
+
451 {5.14099741, 1.87901425}, //
+
452 {5.14696121, 1.87426114}, //
+
453 {5.15304947, 1.86946607}, //
+
454 {5.15926218, 1.86462903}, //
+
455 {5.16559982, 1.85975003}, //
+
456 {5.17182207, 1.85487163}, //
+
457 {5.17766666, 1.85003638}, //
+
458 {5.18313313, 1.84524441}, //
+
459 {5.18822241, 1.84049571}, //
+
460 {5.19293356, 1.83579016}, //
+
461 {5.19726658, 1.83112776}, //
+
462 {5.20122242, 1.82650864}, //
+
463 {5.20480013, 1.82193267}, //
+
464 {5.20800018, 1.81739998}, //
+
465 {5.21277332, 1.81328833}, //
+
466 {5.21804953, 1.80850863}, //
+
467 {5.22382784, 1.80306113}, //
+
468 {5.23010874, 1.79694569}, //
+
469 {5.23689175, 1.79016232}, //
+
470 {5.24417782, 1.78271115}, //
+
471 {5.251966, 1.77459192}, //
+
472 {5.26025677, 1.76580489}, //
+
473 {5.26905012, 1.75635004}, //
+
474 {5.28039217, 1.74215364}, //
+
475 {5.29181767, 1.72820926}, //
+
476 {5.30332756, 1.71451664}, //
+
477 {5.31492138, 1.70107591}, //
+
478 {5.3265996, 1.68788707}, //
+
479 {5.33836126, 1.67495}, //
+
480 {5.35020685, 1.66226482}, //
+
481 {5.36213636, 1.64983153}, //
+
482 {5.3741498, 1.63765001}, //
+
483 {5.38770628, 1.62254131}, //
+
484 {5.40126371, 1.6073488}, //
+
485 {5.4148221, 1.59207225}, //
+
486 {5.42838192, 1.57671177}, //
+
487 {5.44194317, 1.56126726}, //
+
488 {5.45550537, 1.54573894}, //
+
489 {5.469069, 1.53012657}, //
+
490 {5.48263407, 1.51443028}, //
+
491 {5.49620008, 1.49864995}, //
+
492 {5.50934744, 1.48299503}, //
+
493 {5.52165699, 1.46767473}, //
+
494 {5.53312778, 1.45268893}, //
+
495 {5.5437603, 1.43803763}, //
+
496 {5.55355501, 1.42372096}, //
+
497 {5.56251097, 1.4097389}, //
+
498 {5.57062912, 1.39609134}, //
+
499 {5.57790852, 1.38277841}, //
+
500 {5.58435011, 1.36979997}, //
+
501 {5.59159088, 1.35143089}, //
+
502 {5.5982461, 1.3309679}, //
+
503 {5.60431671, 1.30841112}, //
+
504 {5.60980177, 1.28376055}, //
+
505 {5.61470175, 1.25701606}, //
+
506 {5.61901665, 1.22817779}, //
+
507 {5.62274647, 1.19724572}, //
+
508 {5.62589073, 1.16421974}, //
+
509 {5.62844992, 1.12909997}, //
+
510 {5.62916374, 1.11938393}, //
+
511 {5.62979317, 1.10983574}, //
+
512 {5.63033867, 1.10045552}, //
+
513 {5.63080072, 1.09124327}, //
+
514 {5.63117838, 1.08219874}, //
+
515 {5.63147211, 1.07332218}, //
+
516 {5.63168192, 1.06461358}, //
+
517 {5.6318078, 1.05607283}, //
+
518 {5.63184977, 1.04770005}, //
+
519 {5.63119888, 1.03932714}, //
+
520 {5.63075638, 1.0307864}, //
+
521 {5.63052225, 1.0220778}, //
+
522 {5.63049698, 1.01320124}, //
+
523 {5.63068008, 1.00415683}, //
+
524 {5.63107204, 0.994944453}, //
+
525 {5.63167286, 0.985564172}, //
+
526 {5.63208103, 0.980749249}, //
+
527 {5.63184977, 0.979900002}, //
+
528 {5.63189125, 0.979711711}, //
+
529 {5.63201523, 0.979146898}, //
+
530 {5.63222218, 0.978205562}, //
+
531 {5.63234329, 0.977654815}, //
+
532 {5.63248205, 0.976016045}, //
+
533 {5.6335001, 0.966300011}, //
+
534 {5.63490534, 0.956092}, //
+
535 {5.6368556, 0.94504565}, //
+
536 {5.63934994, 0.933161139}, //
+
537 {5.64238882, 0.92043829}, //
+
538 {5.64597225, 0.90687716}, //
+
539 {5.65010023, 0.892477751}, //
+
540 {5.65477228, 0.877240121}, //
+
541 {5.65998888, 0.861164212}, //
+
542 {5.66575003, 0.844250023}, //
+
543 {5.67465782, 0.824575305}, //
+
544 {5.68331528, 0.806240141}, //
+
545 {5.69172239, 0.789244473}, //
+
546 {5.69987822, 0.7735883}, //
+
547 {5.70778418, 0.759271622}, //
+
548 {5.71543884, 0.746294439}, //
+
549 {5.72284317, 0.734656811}, //
+
550 {5.72999668, 0.724358618}, //
+
551 {5.73689985, 0.715399981}, //
+
552 {5.7436471, 0.70741421}, //
+
553 {5.75030994, 0.700012326}, //
+
554 {5.75688887, 0.693194449}, //
+
555 {5.76338387, 0.686960518}, //
+
556 {5.76979494, 0.681310475}, //
+
557 {5.77612209, 0.676244438}, //
+
558 {5.78236532, 0.671762347}, //
+
559 {5.78852463, 0.667864203}, //
+
560 {5.79460001, 0.664550006}, //
+
561 {5.79614258, 0.663753092}, //
+
562 {5.7977705, 0.662873447}, //
+
563 {5.7994833, 0.66191113}, //
+
564 {5.80128145, 0.660866022}, //
+
565 {5.80316496, 0.659738243}, //
+
566 {5.80513334, 0.658527792}, //
+
567 {5.80718708, 0.65723455}, //
+
568 {5.8093257, 0.655858636}, //
+
569 {5.81155014, 0.654399991}, //
+
570 {5.81675434, 0.650737643}, //
+
571 {5.82183409, 0.647283971}, //
+
572 {5.8267889, 0.644038916}, //
+
573 {5.83161926, 0.641002476}, //
+
574 {5.83632469, 0.638174713}, //
+
575 {5.84090567, 0.635555565}, //
+
576 {5.84536171, 0.633145034}, //
+
577 {5.8496933, 0.630943239}, //
+
578 {5.85389996, 0.62895}, //
+
579 {5.85802364, 0.627176523}, //
+
580 {5.86210489, 0.625611722}, //
+
581 {5.86614466, 0.624255538}, //
+
582 {5.87014198, 0.623108029}, //
+
583 {5.87409735, 0.622169137}, //
+
584 {5.87801123, 0.621438861}, //
+
585 {5.88188267, 0.620917261}, //
+
586 {5.88571215, 0.620604336}, //
+
587 {5.88950014, 0.620500028}, //
+
588 {5.89025545, 0.619786441}, //
+
589 {5.89101124, 0.619156778}, //
+
590 {5.89176655, 0.618611097}, //
+
591 {5.89252234, 0.6181494}, //
+
592 {5.89327765, 0.617771626}, //
+
593 {5.89403343, 0.617477775}, //
+
594 {5.89478874, 0.617267907}, //
+
595 {5.89554453, 0.617141962}, //
+
596 {5.89629984, 0.6171}, //
+
597 {5.89922714, 0.616281509}, //
+
598 {5.9019866, 0.615337014}, //
+
599 {5.90457773, 0.614266694}, //
+
600 {5.90700102, 0.613070369}, //
+
601 {5.90925694, 0.611748159}, //
+
602 {5.91134453, 0.610300004}, //
+
603 {5.91326427, 0.608725905}, //
+
604 {5.91501617, 0.607025921}, //
+
605 {5.91660023, 0.605199993}, //
+
606 {5.91811132, 0.603259265}, //
+
607 {5.91962242, 0.601192594}, //
+
608 {5.92113352, 0.598999977}, //
+
609 {5.92264462, 0.596681476}, //
+
610 {5.92415571, 0.59423703}, //
+
611 {5.92566681, 0.591666639}, //
+
612 {5.92717791, 0.588970363}, //
+
613 {5.928689, 0.586148143}, //
+
614 {5.9302001, 0.583199978}, //
+
615 {5.93099737, 0.580891967}, //
+
616 {5.93187904, 0.578501225}, //
+
617 {5.93284464, 0.576027751}, //
+
618 {5.93389368, 0.573471606}, //
+
619 {5.93502712, 0.570832729}, //
+
620 {5.93624449, 0.568111122}, //
+
621 {5.93754578, 0.565306783}, //
+
622 {5.93893099, 0.562419772}, //
+
623 {5.94040012, 0.559449971}, //
+
624 {5.94512081, 0.552420378}, //
+
625 {5.95026159, 0.544887066}, //
+
626 {5.95582199, 0.536849976}, //
+
627 {5.96180248, 0.528309286}, //
+
628 {5.96820259, 0.519264817}, //
+
629 {5.97502232, 0.50971669}, //
+
630 {5.98226166, 0.499664813}, //
+
631 {5.98992109, 0.489109248}, //
+
632 {5.99800014, 0.478049994}, //
+
633 {6.00624704, 0.46700123}, //
+
634 {6.01441002, 0.456454933}, //
+
635 {6.02248907, 0.446411103}, //
+
636 {6.03048372, 0.43686974}, //
+
637 {6.03839493, 0.427830875}, //
+
638 {6.04622221, 0.419294447}, //
+
639 {6.05396557, 0.411260486}, //
+
640 {6.06162453, 0.403729022}, //
+
641 {6.06920004, 0.396699995}, //
+
642 {6.07288265, 0.393730253}, //
+
643 {6.07639742, 0.390843213}, //
+
644 {6.07974434, 0.388038903}, //
+
645 {6.08292341, 0.385317296}, //
+
646 {6.08593464, 0.38267839}, //
+
647 {6.08877754, 0.380122215}, //
+
648 {6.09145308, 0.377648771}, //
+
649 {6.09396029, 0.375258029}, //
+
650 {6.09630013, 0.372949988}, //
+
651 {6.09856653, 0.370735794}, //
+
652 {6.10083342, 0.368604332}, //
+
653 {6.10309982, 0.366555542}, //
+
654 {6.10536671, 0.364589512}, //
+
655 {6.10763311, 0.362706184}, //
+
656 {6.1099, 0.360905558}, //
+
657 {6.11216688, 0.359187663}, //
+
658 {6.11443329, 0.357552469}, //
+
659 {6.11670017, 0.356000006}, //
+
660 {6.12042475, 0.354374081}, //
+
661 {6.1240654, 0.352496296}, //
+
662 {6.12762213, 0.350366652}, //
+
663 {6.13109493, 0.347985178}, //
+
664 {6.13448381, 0.345351845}, //
+
665 {6.13778877, 0.342466652}, //
+
666 {6.14100981, 0.33932963}, //
+
667 {6.14414692, 0.335940748}, //
+
668 {6.14720011, 0.332300007}, //
+
669 {6.15159607, 0.328449368}, //
+
670 {6.15574074, 0.324430853}, //
+
671 {6.15963316, 0.320244431}, //
+
672 {6.16327429, 0.315890133}, //
+
673 {6.16666317, 0.311367899}, //
+
674 {6.1697998, 0.306677788}, //
+
675 {6.17268515, 0.301819742}, //
+
676 {6.17531872, 0.296793818}, //
+
677 {6.17770004, 0.291599989}, //
+
678 {6.17937851, 0.286364198}, //
+
679 {6.18139124, 0.28121236}, //
+
680 {6.18373871, 0.276144445}, //
+
681 {6.18642092, 0.271160483}, //
+
682 {6.18943787, 0.266260505}, //
+
683 {6.19278908, 0.261444449}, //
+
684 {6.19647455, 0.256712347}, //
+
685 {6.20049524, 0.252064198}, //
+
686 {6.2048502, 0.247500002}, //
+
687 {6.21095657, 0.241435796}, //
+
688 {6.2172327, 0.235287651}, //
+
689 {6.22367764, 0.229055554}, //
+
690 {6.23029184, 0.222739503}, //
+
691 {6.23707533, 0.216339499}, //
+
692 {6.24402761, 0.209855556}, //
+
693 {6.25114918, 0.203287661}, //
+
694 {6.25844002, 0.196635798}, //
+
695 {6.26590014, 0.189899996}, //
+
696 {6.27183867, 0.183992594}, //
+
697 {6.27761126, 0.178337038}, //
+
698 {6.28321648, 0.17293334}, //
+
699 {6.28865576, 0.167781487}, //
+
700 {6.29392767, 0.162881479}, //
+
701 {6.29903316, 0.15823333}, //
+
702 {6.30397224, 0.15383704}, //
+
703 {6.30874443, 0.149692595}, //
+
704 {6.3133502, 0.145799994}, //
+
705 {6.32134581, 0.136125922}, //
+
706 {6.3287549, 0.126703709}, //
+
707 {6.33557796, 0.117533334}, //
+
708 {6.34181404, 0.108614817}, //
+
709 {6.34746408, 0.0999481454}, //
+
710 {6.35252762, 0.0915333331}, //
+
711 {6.35700512, 0.0833703727}, //
+
712 {6.36089563, 0.0754592568}, //
+
713 {6.36420012, 0.0678000003}, //
+
714 {6.3658576, 0.0654814839}, //
+
715 {6.36780739, 0.0630370378}, //
+
716 {6.37004995, 0.0604666658}, //
+
717 {6.3725853, 0.0577703714}, //
+
718 {6.37541294, 0.0549481474}, //
+
719 {6.37853336, 0.0520000011}, //
+
720 {6.38194609, 0.048925925}, //
+
721 {6.38565207, 0.0457259268}, //
+
722 {6.38964987, 0.0423999988}, //
+
723 {6.39379454, 0.0390314832}, //
+
724 {6.39793873, 0.0357037038}, //
+
725 {6.4020834, 0.0324166678}, //
+
726 {6.40622759, 0.0291703697}, //
+
727 {6.41037226, 0.0259648152}, //
+
728 {6.41451645, 0.0228000004}, //
+
729 {6.41866112, 0.0196759254}, //
+
730 {6.42280579, 0.016592592}, //
+
731 {6.42694998, 0.0135500003}, //
+
732 {6.4310317, 0.0107061733}, //
+
733 {6.43498707, 0.00819691364}, //
+
734 {6.43881655, 0.00602222234}, //
+
735 {6.44252014, 0.0041820989}, //
+
736 {6.44609833, 0.00267654331}, //
+
737 {6.44955015, 0.00150555559}, //
+
738 {6.45287609, 0.000669135829}, //
+
739 {6.45607615, 0.000167283957}, //
+
740 {6.45914984, 0}, //
+
741 {6.46062946, -0.000692592585}, //
+
742 {6.46206856, -0.0012592593}, //
+
743 {6.46346664, -0.00170000002}, //
+
744 {6.4648242, -0.00201481488}, //
+
745 {6.46614075, -0.00220370363}, //
+
746 {6.46741676, -0.00226666662}, //
+
747 {6.46865177, -0.00220370363}, //
+
748 {6.46984625, -0.00201481488}, //
+
749 {6.47100019, -0.00170000002}, //
+
750 {6.47509241, -0.00033580247}, //
+
751 {6.47553349, -0.000188888895}, //
+
752 {6.4758482, -8.39506174e-05}, //
+
753 {6.47609997, 0}, //
+
754 {6.47404337, 0.00102839503}, //
+
755 {6.47341347, 0.00134320988}, //
+
756 {6.47270012, 0.00170000002}, //
+
757 {6.47194433, 0.00209814822}, //
+
758 {6.47118902, 0.00253703701}, //
+
759 {6.47043324, 0.00301666674}, //
+
760 {6.46967793, 0.00353703694}, //
+
761 {6.46892214, 0.00409814809}, //
+
762 {6.46816683, 0.00469999993}, //
+
763 {6.46741104, 0.00534259249}, //
+
764 {6.46665573, 0.00602592574}, //
+
765 {6.46589994, 0.00675000018}, //
+
766 {6.46517611, 0.00746358046}, //
+
767 {6.46465874, 0.00793991424}, //
+
768 {6.46668339, 0.00712777767}, //
+
769 {6.46940374, 0.00603641989}, //
+
770 {6.47609997, 0.0033499999}, //
+
771 {6.47994995, 0.0018290123}, //
+
772 {6.48396683, 0.000266049377}, //
+
773 {6.48815012, -0.00133888889}, //
+
774 {6.49249983, -0.00298580248}, //
+
775 {6.49701643, -0.00467469124}, //
+
776 {6.50169992, -0.00640555564}, //
+
777 {6.50654984, -0.00817839522}, //
+
778 {6.51156664, -0.0099932095}, //
+
779 {6.51674986, -0.0118500004}, //
+
780 {6.52206993, -0.0136759263}, //
+
781 {6.52747345, -0.0153759262}, //
+
782 {6.53296089, -0.0169500001}, //
+
783 {6.53853273, -0.0183981489}, //
+
784 {6.5441885, -0.0197203699}, //
+
785 {6.54992771, -0.0209166668}, //
+
786 {6.55575132, -0.0219870377}, //
+
787 {6.56165886, -0.0229314808}, //
+
788 {6.56764984, -0.0237499997}, //
+
789 {6.57499504, -0.0235407408}, //
+
790 {6.58196354, -0.0229129624}, //
+
791 {6.58855534, -0.0218666662}, //
+
792 {6.59477091, -0.0204018522}, //
+
793 {6.60060978, -0.0185185187}, //
+
794 {6.60607243, -0.0162166674}, //
+
795 {6.61115789, -0.0134962965}, //
+
796 {6.61586714, -0.0103574079}, //
+
797 {6.62020016, -0.00680000009}, //
+
798 {6.62432337, -0.00290740747}, //
+
799 {6.62840509, 0.00123703701}, //
+
800 {6.63244438, 0.00563333323}, //
+
801 {6.63644218, 0.0102814818}, //
+
802 {6.64039755, 0.0151814818}, //
+
803 {6.64431095, 0.0203333329}, //
+
804 {6.64818287, 0.0257370379}, //
+
805 {6.65201235, 0.0313925929}, //
+
806 {6.65579987, 0.0373000018}, //
+
807 {6.65655565, 0.0380969122}, //
+
808 {6.65731096, 0.0389765427}, //
+
809 {6.65806675, 0.0399388894}, //
+
810 {6.65882206, 0.0409839489}, //
+
811 {6.65957785, 0.0421117283}, //
+
812 {6.66033316, 0.0433222204}, //
+
813 {6.66108894, 0.0446154326}, //
+
814 {6.66184425, 0.0459913574}, //
+
815 {6.66260004, 0.0474499986}, //
+
816 {6.66481352, 0.0512796305}, //
+
817 {6.66694307, 0.0552351847}, //
+
818 {6.6689887, 0.0593166649}, //
+
819 {6.67095041, 0.0635240749}, //
+
820 {6.6728282, 0.067857407}, //
+
821 {6.67462206, 0.0723166689}, //
+
822 {6.676332, 0.0769018531}, //
+
823 {6.67795801, 0.0816129595}, //
+
824 {6.6795001, 0.0864500031}, //
+
825 {6.68096924, 0.0913709849}, //
+
826 {6.68235445, 0.0963339508}, //
+
827 {6.68365574, 0.101338886}, //
+
828 {6.68487263, 0.106385805}, //
+
829 {6.68600607, 0.111474693}, //
+
830 {6.68705559, 0.116605558}, //
+
831 {6.68802118, 0.121778399}, //
+
832 {6.68890238, 0.126993209}, //
+
833 {6.68970013, 0.132249996}, //
+
834 {6.69045544, 0.134464204}, //
+
835 {6.69121122, 0.136595681}, //
+
836 {6.69196653, 0.138644442}, //
+
837 {6.69272232, 0.140610501}, //
+
838 {6.69347763, 0.142493829}, //
+
839 {6.69423342, 0.144294441}, //
+
840 {6.69498873, 0.146012351}, //
+
841 {6.69574451, 0.14764753}, //
+
842 {6.69649982, 0.149200007}, //
+
843 {6.6972971, 0.153910488}, //
+
844 {6.69817638, 0.158997536}, //
+
845 {6.69913912, 0.164461106}, //
+
846 {6.70018387, 0.170301229}, //
+
847 {6.70131159, 0.176517904}, //
+
848 {6.70252228, 0.183111116}, //
+
849 {6.70381546, 0.190080866}, //
+
850 {6.70519114, 0.197427154}, //
+
851 {6.70664978, 0.205149993}, //
+
852 {6.70807695, 0.212914199}, //
+
853 {6.70933628, 0.220384568}, //
+
854 {6.71042776, 0.227561116}, //
+
855 {6.71135139, 0.234443828}, //
+
856 {6.7121067, 0.24103272}, //
+
857 {6.71269464, 0.247327775}, //
+
858 {6.71311426, 0.253329009}, //
+
859 {6.71336603, 0.259036422}, //
+
860 {6.71344995, 0.264450014}, //
+
861 {6.71344995, 0.280294448}, //
+
862 {6.71344995, 0.282490134}, //
+
863 {6.71344995, 0.284558654}, //
+
864 {6.71344995, 0.286500007}, //
+
865 {6.71349192, 0.288367271}, //
+
866 {6.7136178, 0.290191352}, //
+
867 {6.71382761, 0.29197222}, //
+
868 {6.71412182, 0.293709874}, //
+
869 {6.71449947, 0.295404315}, //
+
870 {6.71496105, 0.297055542}, //
+
871 {6.71550655, 0.298663586}, //
+
872 {6.71613646, 0.300228387}, //
+
873 {6.7168498, 0.301750004}, //
+
874 {6.71687031, 0.302526534}, //
+
875 {6.71693134, 0.303345054}, //
+
876 {6.71703339, 0.304205567}, //
+
877 {6.71717596, 0.305108011}, //
+
878 {6.71735907, 0.306052476}, //
+
879 {6.71758318, 0.307038903}, //
+
880 {6.7178483, 0.308067292}, //
+
881 {6.71815348, 0.309137642}, //
+
882 {6.71850014, 0.310250014}, //
+
883 {6.71885681, 0.311403692}, //
+
884 {6.71917152, 0.312598139}, //
+
885 {6.71944427, 0.313833326}, //
+
886 {6.71967554, 0.315109253}, //
+
887 {6.71986437, 0.31642592}, //
+
888 {6.72001123, 0.317783326}, //
+
889 {6.72011614, 0.319181472}, //
+
890 {6.72017908, 0.320620358}, //
+
891 {6.72020006, 0.322100013}, //
+
892 {6.71945477, 0.324575305}, //
+
893 {6.71870852, 0.327467889}, //
+
894 {6.71796131, 0.330777764}, //
+
895 {6.7172122, 0.334504932}, //
+
896 {6.71646214, 0.338649392}, //
+
897 {6.71571112, 0.343211114}, //
+
898 {6.71495867, 0.348190129}, //
+
899 {6.71420479, 0.353586406}, //
+
900 {6.71344995, 0.359400004}, //
+
901 {6.71265268, 0.365432709}, //
+
902 {6.71177101, 0.371464193}, //
+
903 {6.71080542, 0.377494454}, //
+
904 {6.70975637, 0.383523464}, //
+
905 {6.70862293, 0.389551222}, //
+
906 {6.70740557, 0.395577788}, //
+
907 {6.70610428, 0.401603073}, //
+
908 {6.70471907, 0.407627165}, //
+
909 {6.70324993, 0.413650006}, //
+
910 {6.70179129, 0.419599384}, //
+
911 {6.70041561, 0.425380856}, //
+
912 {6.69912243, 0.430994451}, //
+
913 {6.69791174, 0.43644011}, //
+
914 {6.69678402, 0.441717893}, //
+
915 {6.69573879, 0.446827769}, //
+
916 {6.69477654, 0.451769739}, //
+
917 {6.69389677, 0.456543833}, //
+
918 {6.69309998, 0.461149991}, //
+
919 {6.69207239, 0.46643579}, //
+
920 {6.69049978, 0.473270983}, //
+
921 {6.6883831, 0.481655568}, //
+
922 {6.68572235, 0.491589516}, //
+
923 {6.68251657, 0.503072858}, //
+
924 {6.67876673, 0.516105533}, //
+
925 {6.67447233, 0.53068763}, //
+
926 {6.66963339, 0.54681915}, //
+
927 {6.6642499, 0.564499974}, //
+
928 {6.65862608, 0.583008051}, //
+
929 {6.65304279, 0.60159874}, //
+
930 {6.64750004, 0.620272219}, //
+
931 {6.64199829, 0.63902837}, //
+
932 {6.63653708, 0.657867312}, //
+
933 {6.63111687, 0.676788867}, //
+
934 {6.62573719, 0.695793211}, //
+
935 {6.62039804, 0.714880228}, //
+
936 {6.61509991, 0.734049976}, //
+
937 {6.60995817, 0.752580881}, //
+
938 {6.60506535, 0.769729018}, //
+
939 {6.60042238, 0.785494447}, //
+
940 {6.59602833, 0.799877167}, //
+
941 {6.59188414, 0.812877178}, //
+
942 {6.58798885, 0.824494421}, //
+
943 {6.58434343, 0.834729016}, //
+
944 {6.58094692, 0.843580842}, //
+
945 {6.5777998, 0.851050019}, //
+
946 {6.57566977, 0.856967926}, //
+
947 {6.57379007, 0.862677157}, //
+
948 {6.57321215, 0.864629209}, //
+
949 {6.57310009, 0.865361094}, //
+
950 {6.57245731, 0.869458616}, //
+
951 {6.57177401, 0.8737216}, //
+
952 {6.57105017, 0.878149986}, //
+
953 {6.57029438, 0.885714829}, //
+
954 {6.56953907, 0.893320382}, //
+
955 {6.56878328, 0.900966644}, //
+
956 {6.56802797, 0.908653677}, //
+
957 {6.5680027, 0.908911645}, //
+
958 {6.56802797, 0.909422219}, //
+
959 {6.5683217, 0.913713574}, //
+
960 {6.56869936, 0.918046892}, //
+
961 {6.56916094, 0.92242223}, //
+
962 {6.56970692, 0.92683953}, //
+
963 {6.57033634, 0.931298792}, //
+
964 {6.57105017, 0.935800016}, //
+
965 {6.57179499, 0.938149989}, //
+
966 {6.57254124, 0.940666676}, //
+
967 {6.57328892, 0.943350017}, //
+
968 {6.57403755, 0.946200013}, //
+
969 {6.57478762, 0.949216664}, //
+
970 {6.57553911, 0.952400029}, //
+
971 {6.57629156, 0.955749989}, //
+
972 {6.57704496, 0.959266663}, //
+
973 {6.5777998, 0.962949991}, //
+
974 {6.57855558, 0.969853699}, //
+
975 {6.57931089, 0.977009237}, //
+
976 {6.58006668, 0.984416664}, //
+
977 {6.58082199, 0.99207592}, //
+
978 {6.58157778, 0.999987066}, //
+
979 {6.58233356, 1.00814998}, //
+
980 {6.58308887, 1.01656485}, //
+
981 {6.58384466, 1.02523148}, //
+
982 {6.58459997, 1.03415}, //
+
983 {6.58462095, 1.04084444}, //
+
984 {6.5846839, 1.04737222}, //
+
985 {6.5847888, 1.05373335}, //
+
986 {6.58493567, 1.05992782}, //
+
987 {6.58512449, 1.06595552}, //
+
988 {6.58535576, 1.07181668}, //
+
989 {6.58562851, 1.07751107}, //
+
990 {6.58594322, 1.08303893}, //
+
991 {6.5862999, 1.08840001}, //
+
992 {6.58669853, 1.09350991}, //
+
993 {6.58713961, 1.09828401}, //
+
994 {6.58762217, 1.10272217}, //
+
995 {6.58814669, 1.10682464}, //
+
996 {6.58871365, 1.11059141}, //
+
997 {6.58932209, 1.11402225}, //
+
998 {6.58997297, 1.11711729}, //
+
999 {6.59066534, 1.1198765}, //
+
1000 {6.59140015, 1.12230003}, //
+
1001 {6.59436893, 1.13075614}, //
+
1002 {6.59725428, 1.13954687}, //
+
1003 {6.60005569, 1.14867222}, //
+
1004 {6.60277271, 1.15813208}, //
+
1005 {6.60540628, 1.16792655}, //
+
1006 {6.60795546, 1.17805552}, //
+
1007 {6.61042118, 1.18851912}, //
+
1008 {6.61280251, 1.19931734}, //
+
1009 {6.61509991, 1.21045005}, //
+
1010 {6.61690569, 1.22233832}, //
+
1011 {6.61778879, 1.23389196}, //
+
1012 {6.61775017, 1.24511111}, //
+
1013 {6.61678886, 1.25599563}, //
+
1014 {6.61490536, 1.26654565}, //
+
1015 {6.61210012, 1.27676105}, //
+
1016 {6.60837221, 1.28664196}, //
+
1017 {6.6037221, 1.29618824}, //
+
1018 {6.59814978, 1.30540001}, //
+
1019 {6.59434128, 1.31159008}, //
+
1020 {6.59044886, 1.31811607}, //
+
1021 {6.58647203, 1.32497776}, //
+
1022 {6.58241177, 1.33217525}, //
+
1023 {6.5782671, 1.33970869}, //
+
1024 {6.57403898, 1.34757781}, //
+
1025 {6.56972647, 1.35578275}, //
+
1026 {6.56533003, 1.3643235}, //
+
1027 {6.56085014, 1.37320006}, //
+
1028 {6.55641174, 1.38203514}, //
+
1029 {6.55214119, 1.39045191}, //
+
1030 {6.54803896, 1.39845002}, //
+
1031 {6.5441041, 1.40602958}, //
+
1032 {6.54033756, 1.41319072}, //
+
1033 {6.53673887, 1.41993332}, //
+
1034 {6.53330803, 1.42625737}, //
+
1035 {6.53004503, 1.432163}, //
+
1036 {6.52694988, 1.43764997}, //
+
1037 {6.52259588, 1.44526672}, //
+
1038 {6.5185771, 1.45305002}, //
+
1039 {6.51489449, 1.46099997}, //
+
1040 {6.51154757, 1.46911669}, //
+
1041 {6.50853634, 1.47739995}, //
+
1042 {6.50586128, 1.48584998}, //
+
1043 {6.50352144, 1.49446666}, //
+
1044 {6.50151777, 1.50325}, //
+
1045 {6.4998498, 1.5122}, //
+
1046 {6.49838066, 1.51588333}, //
+
1047 {6.49699545, 1.5194}, //
+
1048 {6.49569464, 1.52275002}, //
+
1049 {6.49447727, 1.52593338}, //
+
1050 {6.49334383, 1.52894998}, //
+
1051 {6.49229431, 1.53180003}, //
+
1052 {6.49132919, 1.53448331}, //
+
1053 {6.49044752, 1.53699994}, //
+
1054 {6.48964977, 1.53935003}, //
+
1055 {6.48659706, 1.54574943}, //
+
1056 {6.48345995, 1.55290306}, //
+
1057 {6.48023891, 1.56081116}, //
+
1058 {6.47693396, 1.56947351}, //
+
1059 {6.47354507, 1.57889009}, //
+
1060 {6.47007227, 1.58906114}, //
+
1061 {6.46651554, 1.59998643}, //
+
1062 {6.46287489, 1.61166608}, //
+
1063 {6.45914984, 1.62409997}, //
+
1064 {6.45914984, 1.6262821}, //
+
1065 {6.45914984, 1.63013887}, //
+
1066 {6.45914984, 1.63465559}, //
+
1067 {6.45914984, 1.63765001}, //
+
1068 {6.45919132, 1.6383636}, //
+
1069 {6.4593153, 1.63899326}, //
+
1070 {6.45952225, 1.63953888}, //
+
1071 {6.45981169, 1.64000058}, //
+
1072 {6.4601841, 1.64037836}, //
+
1073 {6.460639, 1.64067221}, //
+
1074 {6.4611764, 1.64088213}, //
+
1075 {6.46179676, 1.64100802}, //
+
1076 {6.4625001, 1.64104998}, //
+
1077 {6.4647665, 1.64104998}, //
+
1078 {6.46552229, 1.64104998}, //
+
1079 {6.4662776, 1.64104998}, //
+
1080 {6.46929979, 1.64104998}, //
+
1081 {6.47074795, 1.641029}, //
+
1082 {6.47207022, 1.64096606}, //
+
1083 {6.4732666, 1.64086115}, //
+
1084 {6.4743371, 1.64071417}, //
+
1085 {6.47528172, 1.64052534}, //
+
1086 {6.47609997, 1.64029443}, //
+
1087 {6.47679281, 1.64002156}, //
+
1088 {6.47735929, 1.63970673}, //
+
1089 {6.47779989, 1.63935006}, //
+
1090 {6.47819853, 1.63899326}, //
+
1091 {6.4786396, 1.63867843}, //
+
1092 {6.47912216, 1.63840556}, //
+
1093 {6.47964668, 1.63817465}, //
+
1094 {6.48021364, 1.63798583}, //
+
1095 {6.48082209, 1.63783884}, //
+
1096 {6.48147297, 1.63773394}, //
+
1097 {6.48216534, 1.63767099}, //
+
1098 {6.48290014, 1.63765001}, //
+
1099 {6.48429585, 1.63914013}, //
+
1100 {6.48548269, 1.64058828}, //
+
1101 {6.48646116, 1.64199448}, //
+
1102 {6.48723078, 1.64335859}, //
+
1103 {6.48779202, 1.64468086}, //
+
1104 {6.4881444, 1.64596117}, //
+
1105 {6.4882884, 1.64719939}, //
+
1106 {6.48822355, 1.64839566}, //
+
1107 {6.48794985, 1.64954996}, //
+
1108 {6.48748827, 1.65070367}, //
+
1109 {6.48685884, 1.65189815}, //
+
1110 {6.4860611, 1.65313339}, //
+
1111 {6.4850955, 1.65440929}, //
+
1112 {6.48396254, 1.65572596}, //
+
1113 {6.48266125, 1.65708339}, //
+
1114 {6.48119211, 1.65848148}, //
+
1115 {6.47955513, 1.65992033}, //
+
1116 {6.47774982, 1.66139996}, //
+
1117 {6.47589302, 1.6628691}, //
+
1118 {6.47407818, 1.66425431}, //
+
1119 {6.47230577, 1.6655556}, //
+
1120 {6.47057486, 1.66677284}, //
+
1121 {6.4688859, 1.66790617}, //
+
1122 {6.4672389, 1.66895556}, //
+
1123 {6.46563387, 1.66992104}, //
+
1124 {6.4640708, 1.67080247}, //
+
1125 {6.46255016, 1.67159998}, //
+
1126 {6.46114397, 1.67236602}, //
+
1127 {6.45994759, 1.67317533}, //
+
1128 {6.45896101, 1.6740278}, //
+
1129 {6.45818472, 1.67492342}, //
+
1130 {6.45761776, 1.67586231}, //
+
1131 {6.45726109, 1.67684448}, //
+
1132 {6.45711422, 1.6778698}, //
+
1133 {6.45717716, 1.67893827}, //
+
1134 {6.45744991, 1.68005002}, //
+
1135 {6.45784855, 1.68120372}, //
+
1136 {6.45828962, 1.6823982}, //
+
1137 {6.45877218, 1.68363333}, //
+
1138 {6.4592967, 1.68490922}, //
+
1139 {6.45986366, 1.68622589}, //
+
1140 {6.46047211, 1.68758333}, //
+
1141 {6.46112299, 1.68898153}, //
+
1142 {6.46181536, 1.69042039}, //
+
1143 {6.46255016, 1.69190001}, //
+
1144 {6.46255016, 1.69265556}, //
+
1145 {6.46255016, 1.69416666}, //
+
1146 {6.46255016, 1.69492221}, //
+
1147 {6.46255016, 1.69869995}, //
+
1148 {6.46259117, 1.69941354}, //
+
1149 {6.46271563, 1.7000432}, //
+
1150 {6.4629221, 1.70058894}, //
+
1151 {6.46321154, 1.70105064}, //
+
1152 {6.46358395, 1.70142841}, //
+
1153 {6.46403885, 1.70172226}, //
+
1154 {6.46457672, 1.70193207}, //
+
1155 {6.46519709, 1.70205808}, //
+
1156 {6.46589994, 1.70210004}, //
+
1157 {6.46589994, 1.70218396}, //
+
1158 {6.46589994, 1.70228887}, //
+
1159 {6.46589994, 1.70243585}, //
+
1160 {6.46589994, 1.70463705}, //
+
1161 {6.46589994, 1.70511663}, //
+
1162 {6.46589994, 1.70563698}, //
+
1163 {6.46589994, 1.70885003}, //
+
1164 {6.46585798, 1.70960557}, //
+
1165 {6.4657321, 1.71036112}, //
+
1166 {6.46552229, 1.71111667}, //
+
1167 {6.46522856, 1.71187222}, //
+
1168 {6.46485043, 1.71262777}, //
+
1169 {6.46438885, 1.71338332}, //
+
1170 {6.46384335, 1.71413887}, //
+
1171 {6.46321344, 1.71489441}, //
+
1172 {6.4625001, 1.71564996}, //
+
1173 {6.46171284, 1.71640551}, //
+
1174 {6.4608407, 1.71716106}, //
+
1175 {6.45988321, 1.71791661}, //
+
1176 {6.45884085, 1.71867228}, //
+
1177 {6.45771313, 1.71942782}, //
+
1178 {6.45650005, 1.72018337}, //
+
1179 {6.45520163, 1.72093892}, //
+
1180 {6.45381832, 1.72169447}, //
+
1181 {6.45235014, 1.72245002}, //
+
1182 {6.45161533, 1.72318399}, //
+
1183 {6.45092297, 1.72387469}, //
+
1184 {6.45027208, 1.72452223}, //
+
1185 {6.44966364, 1.7251265}, //
+
1186 {6.44909668, 1.72568762}, //
+
1187 {6.44857216, 1.72620559}, //
+
1188 {6.4480896, 1.72668028}, //
+
1189 {6.447649, 1.7271117}, //
+
1190 {6.44724989, 1.72749996}, //
+
1191 {6.44690371, 1.72787774}, //
+
1192 {6.44659805, 1.72825551}, //
+
1193 {6.44633341, 1.72863328}, //
+
1194 {6.44610929, 1.72901106}, //
+
1195 {6.44592571, 1.72938883}, //
+
1196 {6.44578314, 1.72976661}, //
+
1197 {6.44568157, 1.7301445}, //
+
1198 {6.44562054, 1.73052227}, //
+
1199 {6.44560003, 1.73090005}, //
+
1200 {6.44564152, 1.73125684}, //
+
1201 {6.4457655, 1.73157156}, //
+
1202 {6.44597244, 1.73184443}, //
+
1203 {6.44626188, 1.73207533}, //
+
1204 {6.44663382, 1.73226416}, //
+
1205 {6.44708872, 1.73241115}, //
+
1206 {6.44762659, 1.73251605}, //
+
1207 {6.44824696, 1.73257899}, //
+
1208 {6.44894981, 1.73259997}, //
+
1209 {6.44972658, 1.73262095}, //
+
1210 {6.45054483, 1.7326839}, //
+
1211 {6.45140553, 1.73278892}, //
+
1212 {6.45230818, 1.73293579}, //
+
1213 {6.45325232, 1.73312473}, //
+
1214 {6.45423889, 1.73335552}, //
+
1215 {6.45526743, 1.73362839}, //
+
1216 {6.45633745, 1.73394322}, //
+
1217 {6.45744991, 1.73430002}, //
+
1218 {6.4585619, 1.73469877}, //
+
1219 {6.45963001, 1.73513949}, //
+
1220 {6.46065569, 1.73562217}, //
+
1221 {6.4616375, 1.73614693}, //
+
1222 {6.46257639, 1.73671353}, //
+
1223 {6.46347237, 1.73732221}, //
+
1224 {6.46432447, 1.73797286}, //
+
1225 {6.46513414, 1.73866546}, //
+
1226 {6.46589994, 1.73940003}, //
+
1227 {6.46661377, 1.74017596}, //
+
1228 {6.46724319, 1.74099255}, //
+
1229 {6.4677887, 1.74185002}, //
+
1230 {6.46825075, 1.74274814}, //
+
1231 {6.46862841, 1.74368703}, //
+
1232 {6.46892214, 1.7446667}, //
+
1233 {6.46913195, 1.74568701}, //
+
1234 {6.46925783, 1.74674809}, //
+
1235 {6.46929979, 1.74784994}, //
+
1236 {6.46927881, 1.7489413}, //
+
1237 {6.46921587, 1.74994874}, //
+
1238 {6.46911097, 1.75087225}, //
+
1239 {6.4689641, 1.75171173}, //
+
1240 {6.46877527, 1.75246727}, //
+
1241 {6.46854448, 1.7531389}, //
+
1242 {6.46827173, 1.7537266}, //
+
1243 {6.46795702, 1.75423026}, //
+
1244 {6.46759987, 1.75465}, //
+
1245 {6.46720123, 1.75502777}, //
+
1246 {6.46676064, 1.75540555}, //
+
1247 {6.4662776, 1.75578332}, //
+
1248 {6.46575308, 1.75616109}, //
+
1249 {6.4651866, 1.75653887}, //
+
1250 {6.46457767, 1.75691664}, //
+
1251 {6.46392727, 1.75729442}, //
+
1252 {6.46323442, 1.75767219}, //
+
1253 {6.4625001, 1.75804996}, //
+
1254 {6.46177578, 1.75842774}, //
+
1255 {6.46109247, 1.75880551}, //
+
1256 {6.46045017, 1.75918329}, //
+
1257 {6.45984793, 1.75956106}, //
+
1258 {6.45928717, 1.75993884}, //
+
1259 {6.45876646, 1.76031661}, //
+
1260 {6.45828724, 1.7606945}, //
+
1261 {6.45784807, 1.76107228}, //
+
1262 {6.45744991, 1.76145005}, //
+
1263 {6.45574999, 1.76314998}, //
+
1264 {6.45577097, 1.76317036}, //
+
1265 {6.45583391, 1.76323152}, //
+
1266 {6.45593882, 1.76333332}, //
+
1267 {6.45608568, 1.76347589}, //
+
1268 {6.45627451, 1.76365924}, //
+
1269 {6.45650578, 1.76388335}, //
+
1270 {6.45677853, 1.76414812}, //
+
1271 {6.45709324, 1.76445365}, //
+
1272 {6.45744991, 1.76479995}, //
+
1273 {6.45784807, 1.76517773}, //
+
1274 {6.45828724, 1.7655555}, //
+
1275 {6.45876646, 1.76593328}, //
+
1276 {6.45928717, 1.76631117}, //
+
1277 {6.45984793, 1.76668894}, //
+
1278 {6.46045017, 1.76706672}, //
+
1279 {6.46109247, 1.76744449}, //
+
1280 {6.46177578, 1.76782227}, //
+
1281 {6.4625001, 1.76820004}, //
+
1282 {6.46323442, 1.76857781}, //
+
1283 {6.46392727, 1.76895559}, //
+
1284 {6.46457767, 1.76933336}, //
+
1285 {6.4651866, 1.76971114}, //
+
1286 {6.46575308, 1.77008891}, //
+
1287 {6.4662776, 1.77046669}, //
+
1288 {6.46676064, 1.77084446}, //
+
1289 {6.46720123, 1.77122223}, //
+
1290 {6.46759987, 1.77160001}, //
+
1291 {6.46799898, 1.77197778}, //
+
1292 {6.46843958, 1.77235556}, //
+
1293 {6.46892214, 1.77273333}, //
+
1294 {6.46944714, 1.7731111}, //
+
1295 {6.47001362, 1.77348888}, //
+
1296 {6.47062206, 1.77386665}, //
+
1297 {6.47127295, 1.77424443}, //
+
1298 {6.47196531, 1.7746222}, //
+
1299 {6.47270012, 1.77499998}, //
+
1300 {6.47341347, 1.77539873}, //
+
1301 {6.47404337, 1.77583945}, //
+
1302 {6.47458887, 1.77632225}, //
+
1303 {6.47505045, 1.77684689}, //
+
1304 {6.47542858, 1.77741361}, //
+
1305 {6.47572231, 1.77802217}, //
+
1306 {6.47593212, 1.77867281}, //
+
1307 {6.47605801, 1.77936542}, //
+
1308 {6.47609997, 1.78009999}, //
+
1309 {6.46929979, 1.78174996}, //
+
1310 {6.46775723, 1.78210676}, //
+
1311 {6.46612978, 1.78242159}, //
+
1312 {6.4644165, 1.78269446}, //
+
1313 {6.46261835, 1.78292537}, //
+
1314 {6.46073532, 1.78311419}, //
+
1315 {6.45876646, 1.78326106}, //
+
1316 {6.4567132, 1.78336608}, //
+
1317 {6.45457411, 1.78342903}, //
+
1318 {6.45235014, 1.78345001}, //
+
1319 {6.45082855, 1.78420556}, //
+
1320 {6.44926357, 1.7849611}, //
+
1321 {6.44765568, 1.78571665}, //
+
1322 {6.44600439, 1.7864722}, //
+
1323 {6.44430971, 1.78722775}, //
+
1324 {6.44257212, 1.7879833}, //
+
1325 {6.44079113, 1.78873885}, //
+
1326 {6.43896723, 1.7894944}, //
+
1327 {6.43709993, 1.79024994}, //
+
1328 {6.4353056, 1.79098451}, //
+
1329 {6.43367767, 1.79167712}, //
+
1330 {6.43221664, 1.79232776}, //
+
1331 {6.43092203, 1.79293644}, //
+
1332 {6.42979431, 1.79350305}, //
+
1333 {6.42883348, 1.79402781}, //
+
1334 {6.42803907, 1.79451048}, //
+
1335 {6.42741108, 1.7949512}, //
+
1336 {6.42694998, 1.79534996}, //
+
1337 {6.42676067, 1.79570675}, //
+
1338 {6.42694759, 1.79602158}, //
+
1339 {6.42751122, 1.79629445}, //
+
1340 {6.42845106, 1.79652536}, //
+
1341 {6.42976809, 1.79671419}, //
+
1342 {6.43146133, 1.79686105}, //
+
1343 {6.43353081, 1.79696608}, //
+
1344 {6.43597698, 1.79702902}, //
+
1345 {6.43879986, 1.79705}, //
+
1346 {6.43951368, 1.79711235}, //
+
1347 {6.44014311, 1.79729939}, //
+
1348 {6.44068909, 1.79761112}, //
+
1349 {6.44115067, 1.79804754}, //
+
1350 {6.44152832, 1.79860866}, //
+
1351 {6.44182205, 1.79929447}, //
+
1352 {6.44203186, 1.80010498}, //
+
1353 {6.44215822, 1.80104017}, //
+
1354 {6.44220018, 1.80209994}, //
+
1355 {6.44220018, 1.80325437}, //
+
1356 {6.44220018, 1.80445063}, //
+
1357 {6.44220018, 1.80568886}, //
+
1358 {6.44220018, 1.80696917}, //
+
1359 {6.44220018, 1.80829132}, //
+
1360 {6.44220018, 1.81547964}, //
+
1361 {6.44220018, 1.81691849}, //
+
1362 {6.44220018, 1.8183167}, //
+
1363 {6.44220018, 1.81967402}, //
+
1364 {6.44220018, 1.82099068}, //
+
1365 {6.44220018, 1.82585001}, //
+
1366 {6.44224215, 1.82700372}, //
+
1367 {6.44236803, 1.82819819}, //
+
1368 {6.44257784, 1.82943332}, //
+
1369 {6.44287157, 1.83070922}, //
+
1370 {6.44324923, 1.83202589}, //
+
1371 {6.44371128, 1.83338332}, //
+
1372 {6.44425678, 1.83478153}, //
+
1373 {6.44488621, 1.83622038}, //
+
1374 {6.44560003, 1.83770001}, //
+
1375 {6.44865322, 1.8394624}, //
+
1376 {6.45179033, 1.84172714}, //
+
1377 {6.45501089, 1.84449446}, //
+
1378 {6.45831585, 1.84776425}, //
+
1379 {6.46170473, 1.85153639}, //
+
1380 {6.46517801, 1.85581112}, //
+
1381 {6.46873474, 1.86058831}, //
+
1382 {6.47237539, 1.86586785}, //
+
1383 {6.47609997, 1.87164998}, //
+
1384 {6.47693872, 1.8739475}, //
+
1385 {6.47794437, 1.87632906}, //
+
1386 {6.47911644, 1.87879443}, //
+
1387 {6.4804554, 1.88134384}, //
+
1388 {6.48196125, 1.88397717}, //
+
1389 {6.48363352, 1.88669443}, //
+
1390 {6.4854722, 1.88949573}, //
+
1391 {6.48747778, 1.89238083}, //
+
1392 {6.48964977, 1.89534998}, //
+
1393 {6.49337482, 1.90134072}, //
+
1394 {6.49701548, 1.90724635}, //
+
1395 {6.5005722, 1.91306663}, //
+
1396 {6.50404501, 1.9188019}, //
+
1397 {6.50743389, 1.92445183}, //
+
1398 {6.51073885, 1.93001664}, //
+
1399 {6.51395988, 1.93549633}, //
+
1400 {6.517097, 1.94089079}, //
+
1401 {6.52015018, 1.94620001}, //
+
1402 {6.5230875, 1.95135188}, //
+
1403 {6.52585602, 1.95625186}, //
+
1404 {6.52845573, 1.96089995}, //
+
1405 {6.5308857, 1.96529627}, //
+
1406 {6.53314686, 1.9694407}, //
+
1407 {6.53523874, 1.97333336}, //
+
1408 {6.53716183, 1.97697413}, //
+
1409 {6.53891563, 1.98036301}, //
+
1410 {6.54050016, 1.9835}, //
+
1411 {6.54343748, 1.98953271}, //
+
1412 {6.546206, 1.99556422}, //
+
1413 {6.54880571, 2.00159454}, //
+
1414 {6.55123568, 2.00762343}, //
+
1415 {6.55349684, 2.01365113}, //
+
1416 {6.55558872, 2.01967788}, //
+
1417 {6.55751181, 2.02570319}, //
+
1418 {6.55926561, 2.03172708}, //
+
1419 {6.56085014, 2.03775001}, //
+
1420 {6.56227732, 2.04361534}, //
+
1421 {6.56353664, 2.04914498}, //
+
1422 {6.56462765, 2.05433893}, //
+
1423 {6.56555128, 2.05919695}, //
+
1424 {6.56630659, 2.06371903}, //
+
1425 {6.56689453, 2.06790566}, //
+
1426 {6.56731415, 2.07175612}, //
+
1427 {6.56756592, 2.07527089}, //
+
1428 {6.56764984, 2.07844996}, //
+
1429 {6.56748199, 2.08244681}, //
+
1430 {6.56697845, 2.08690429}, //
+
1431 {6.56613874, 2.09182215}, //
+
1432 {6.56496382, 2.09720063}, //
+
1433 {6.56345224, 2.1030395}, //
+
1434 {6.56160545, 2.109339}, //
+
1435 {6.55942297, 2.11609888}, //
+
1436 {6.55690432, 2.12331915}, //
+
1437 {6.55404997, 2.13100004}, //
+
1438 {6.55095482, 2.13901615}, //
+
1439 {6.54769182, 2.14724207}, //
+
1440 {6.54426098, 2.1556778}, //
+
1441 {6.54066229, 2.16432357}, //
+
1442 {6.53689575, 2.17317891}, //
+
1443 {6.53296089, 2.18224454}, //
+
1444 {6.52885866, 2.19151974}, //
+
1445 {6.52458811, 2.20100498}, //
+
1446 {6.52015018, 2.21070004}, //
+
1447 {6.51793575, 2.21577907}, //
+
1448 {6.51580429, 2.22048283}, //
+
1449 {6.51375532, 2.22481108}, //
+
1450 {6.51178932, 2.2287643}, //
+
1451 {6.50990629, 2.232342}, //
+
1452 {6.50810575, 2.23554444}, //
+
1453 {6.50638771, 2.23837161}, //
+
1454 {6.50475264, 2.24082351}, //
+
1455 {6.50320005, 2.24289989}, //
+
1456 {6.50169945, 2.24472523}, //
+
1457 {6.50019741, 2.24642348}, //
+
1458 {6.49869442, 2.24799442}, //
+
1459 {6.49719, 2.24943829}, //
+
1460 {6.49568462, 2.25075483}, //
+
1461 {6.49417782, 2.25194454}, //
+
1462 {6.49266958, 2.2530067}, //
+
1463 {6.49116039, 2.25394201}, //
+
1464 {6.48964977, 2.25475001}, //
+
1465 {6.48806524, 2.2554636}, //
+
1466 {6.48631191, 2.25609326}, //
+
1467 {6.48438883, 2.256639}, //
+
1468 {6.48229694, 2.25710058}, //
+
1469 {6.48003578, 2.25747848}, //
+
1470 {6.47760534, 2.25777221}, //
+
1471 {6.4750061, 2.25798202}, //
+
1472 {6.47223759, 2.25810814}, //
+
1473 {6.46929979, 2.2581501}, //
+
1474 {6.468503, 2.25819206}, //
+
1475 {6.46762323, 2.25831795}, //
+
1476 {6.46666098, 2.25852776}, //
+
1477 {6.46561623, 2.25882149}, //
+
1478 {6.46448851, 2.25919938}, //
+
1479 {6.46327782, 2.2596612}, //
+
1480 {6.46198463, 2.2602067}, //
+
1481 {6.46060848, 2.26083636}, //
+
1482 {6.45914984, 2.26154995}, //
+
1483 {6.45682096, 2.26142406}, //
+
1484 {6.45436716, 2.26104641}, //
+
1485 {6.4517889, 2.26041675}, //
+
1486 {6.44908571, 2.25953507}, //
+
1487 {6.44625807, 2.25840187}, //
+
1488 {6.44330549, 2.25701666}, //
+
1489 {6.44022846, 2.25537968}, //
+
1490 {6.4370265, 2.25349069}, //
+
1491 {6.43370008, 2.25134993}, //
+
1492 {6.43035269, 2.24903154}, //
+
1493 {6.42708778, 2.24658704}, //
+
1494 {6.42390537, 2.24401665}, //
+
1495 {6.42080641, 2.24132037}, //
+
1496 {6.41778946, 2.23849821}, //
+
1497 {6.41485548, 2.23554993}, //
+
1498 {6.41200447, 2.232476}, //
+
1499 {6.40923595, 2.22927594}, //
+
1500 {6.40654993, 2.22595}, //
+
1501 {6.40402174, 2.22266555}, //
+
1502 {6.40170288, 2.21958947}, //
+
1503 {6.39959431, 2.21672225}, //
+
1504 {6.39769554, 2.21406364}, //
+
1505 {6.39600658, 2.21161366}, //
+
1506 {6.39452791, 2.20937228}, //
+
1507 {6.39325857, 2.20733953}, //
+
1508 {6.39219952, 2.20551538}, //
+
1509 {6.39134979, 2.2039001}, //
+
1510 {6.3890419, 2.20139265}, //
+
1511 {6.38665104, 2.19838142}, //
+
1512 {6.38417768, 2.19486666}, //
+
1513 {6.38162184, 2.19084811}, //
+
1514 {6.37898254, 2.18632603}, //
+
1515 {6.37626123, 2.18129992}, //
+
1516 {6.37345695, 2.17577028}, //
+
1517 {6.37056971, 2.1697371}, //
+
1518 {6.36759996, 2.1631999}, //
+
1519 {6.36460924, 2.15640116}, //
+
1520 {6.36165905, 2.14956045}, //
+
1521 {6.35874987, 2.14267778}, //
+
1522 {6.35588169, 2.13575315}, //
+
1523 {6.35305357, 2.12878633}, //
+
1524 {6.35026646, 2.12177777}, //
+
1525 {6.34752035, 2.11472726}, //
+
1526 {6.34481478, 2.10763454}, //
+
1527 {6.34215021, 2.10050011}, //
+
1528 {6.33962107, 2.0935328}, //
+
1529 {6.33730078, 2.08694196}, //
+
1530 {6.33518887, 2.08072782}, //
+
1531 {6.33328581, 2.07489014}, //
+
1532 {6.33159113, 2.06942892}, //
+
1533 {6.33010578, 2.06434441}, //
+
1534 {6.32882833, 2.05963635}, //
+
1535 {6.32775974, 2.055305}, //
+
1536 {6.32690001, 2.05135012}, //
+
1537 {6.3261652, 2.0492723}, //
+
1538 {6.32547283, 2.04757214}, //
+
1539 {6.32482243, 2.0462501}, //
+
1540 {6.3242135, 2.04530549}, //
+
1541 {6.32364702, 2.04473901}, //
+
1542 {6.32312202, 2.04454994}, //
+
1543 {6.32263947, 2.04473901}, //
+
1544 {6.32219887, 2.04530549}, //
+
1545 {6.32180023, 2.0462501}, //
+
1546 {6.32141161, 2.04744577}, //
+
1547 {6.32098007, 2.04876614}, //
+
1548 {6.32050562, 2.05021119}, //
+
1549 {6.31998777, 2.05178094}, //
+
1550 {6.31942654, 2.05347538}, //
+
1551 {6.31882238, 2.05529451}, //
+
1552 {6.31817484, 2.05723834}, //
+
1553 {6.3174839, 2.05930686}, //
+
1554 {6.31675005, 2.06150007}, //
+
1555 {6.31603622, 2.06379819}, //
+
1556 {6.3154068, 2.06618142}, //
+
1557 {6.3148613, 2.06865001}, //
+
1558 {6.31439924, 2.07120371}, //
+
1559 {6.31402159, 2.07384253}, //
+
1560 {6.31372786, 2.0765667}, //
+
1561 {6.31351805, 2.07937598}, //
+
1562 {6.31339216, 2.08227038}, //
+
1563 {6.3133502, 2.0852499}, //
+
1564 {6.31261539, 2.08891177}, //
+
1565 {6.31192303, 2.0923636}, //
+
1566 {6.31127214, 2.09560561}, //
+
1567 {6.3106637, 2.09863758}, //
+
1568 {6.31009674, 2.10145998}, //
+
1569 {6.30957222, 2.10407233}, //
+
1570 {6.30908966, 2.10647464}, //
+
1571 {6.30864859, 2.10866737}, //
+
1572 {6.30824995, 2.11065006}, //
+
1573 {6.30785131, 2.11247587}, //
+
1574 {6.30741072, 2.11417603}, //
+
1575 {6.30692768, 2.11575007}, //
+
1576 {6.30640316, 2.11719823}, //
+
1577 {6.3058362, 2.11852026}, //
+
1578 {6.30522776, 2.11971664}, //
+
1579 {6.30457735, 2.12078714}, //
+
1580 {6.30388451, 2.12173152}, //
+
1581 {6.30315018, 2.12255001}, //
+
1582 {6.30173349, 2.12568712}, //
+
1583 {6.30048323, 2.129076}, //
+
1584 {6.29939985, 2.13271666}, //
+
1585 {6.29848337, 2.13660932}, //
+
1586 {6.29773331, 2.14075375}, //
+
1587 {6.29715014, 2.14514995}, //
+
1588 {6.29673338, 2.14979815}, //
+
1589 {6.29648352, 2.15469813}, //
+
1590 {6.29640007, 2.15984988}, //
+
1591 {6.29635811, 2.16365862}, //
+
1592 {6.29623222, 2.16755128}, //
+
1593 {6.29602242, 2.17152786}, //
+
1594 {6.29572821, 2.17558837}, //
+
1595 {6.29535055, 2.1797328}, //
+
1596 {6.29488897, 2.18396115}, //
+
1597 {6.29434299, 2.18827343}, //
+
1598 {6.29371357, 2.19266987}, //
+
1599 {6.29300022, 2.19714999}, //
+
1600 {6.29209805, 2.20083261}, //
+
1601 {6.29090357, 2.20434761}, //
+
1602 {6.28941679, 2.20769453}, //
+
1603 {6.28763723, 2.21087337}, //
+
1604 {6.2855649, 2.21388459}, //
+
1605 {6.28319979, 2.21672773}, //
+
1606 {6.28054237, 2.21940303}, //
+
1607 {6.27759266, 2.22191048}, //
+
1608 {6.27435017, 2.22425008}, //
+
1609 {6.27102327, 2.22646427}, //
+
1610 {6.26782179, 2.22859573}, //
+
1611 {6.26474428, 2.23064446}, //
+
1612 {6.26179218, 2.23261046}, //
+
1613 {6.25896406, 2.23449373}, //
+
1614 {6.25626135, 2.23629451}, //
+
1615 {6.25368261, 2.23801231}, //
+
1616 {6.25122881, 2.23964763}, //
+
1617 {6.24889994, 2.24119997}, //
+
1618 {6.24517536, 2.24359131}, //
+
1619 {6.24153471, 2.24623203}, //
+
1620 {6.23797798, 2.24912214}, //
+
1621 {6.23450518, 2.25226164}, //
+
1622 {6.23111582, 2.25565052}, //
+
1623 {6.22781134, 2.25928879}, //
+
1624 {6.2245903, 2.26317644}, //
+
1625 {6.22145319, 2.26731348}, //
+
1626 {6.2184, 2.27169991}, //
+
1627 {6.21614361, 2.27400804}, //
+
1628 {6.21388626, 2.27639866}, //
+
1629 {6.21162796, 2.27887225}, //
+
1630 {6.20936775, 2.28142834}, //
+
1631 {6.20710659, 2.28406739}, //
+
1632 {6.20484447, 2.28678894}, //
+
1633 {6.20258093, 2.28959322}, //
+
1634 {6.20031595, 2.29248023}, //
+
1635 {6.19805002, 2.29544997}, //
+
1636 {6.19583559, 2.29850316}, //
+
1637 {6.19370413, 2.30164003}, //
+
1638 {6.19165564, 2.30486107}, //
+
1639 {6.18968964, 2.30816603}, //
+
1640 {6.18780613, 2.31155491}, //
+
1641 {6.18600559, 2.31502771}, //
+
1642 {6.18428755, 2.31858468}, //
+
1643 {6.18265247, 2.32222533}, //
+
1644 {6.18109989, 2.32594991}, //
+
1645 {6.17955732, 2.32954931}, //
+
1646 {6.1779294, 2.33281422}, //
+
1647 {6.1762166, 2.33574438}, //
+
1648 {6.17441845, 2.33834004}, //
+
1649 {6.17253542, 2.34060121}, //
+
1650 {6.17056656, 2.34252787}, //
+
1651 {6.16851282, 2.34411979}, //
+
1652 {6.16637421, 2.34537721}, //
+
1653 {6.16415024, 2.34629989}, //
+
1654 {6.16339445, 2.34776902}, //
+
1655 {6.16263866, 2.34915423}, //
+
1656 {6.16188335, 2.35045552}, //
+
1657 {6.16112757, 2.35167289}, //
+
1658 {6.16037226, 2.35280609}, //
+
1659 {6.15961647, 2.35385561}, //
+
1660 {6.15886116, 2.35482097}, //
+
1661 {6.15810537, 2.3557024}, //
+
1662 {6.15735006, 2.35649991}, //
+
1663 {6.15664673, 2.35725498}, //
+
1664 {6.15602636, 2.35800862}, //
+
1665 {6.15548897, 2.35876107}, //
+
1666 {6.15503407, 2.35951233}, //
+
1667 {6.15466166, 2.36026239}, //
+
1668 {6.15437222, 2.36101103}, //
+
1669 {6.15416527, 2.36175871}, //
+
1670 {6.15404129, 2.36250496}, //
+
1671 {6.15399981, 2.36325002}, //
+
1672 {6.1538949, 2.3653698}, //
+
1673 {6.15358019, 2.36719561}, //
+
1674 {6.15305567, 2.36872768}, //
+
1675 {6.15232086, 2.36996603}, //
+
1676 {6.15137672, 2.37091041}, //
+
1677 {6.1502223, 2.37156105}, //
+
1678 {6.14885807, 2.37191796}, //
+
1679 {6.14728403, 2.37198091}, //
+
1680 {6.14550018, 2.37175012}, //
+
1681 {6.1435585, 2.3712678}, //
+
1682 {6.14148998, 2.3705771}, //
+
1683 {6.13929462, 2.36967778}, //
+
1684 {6.13697147, 2.36856985}, //
+
1685 {6.13452148, 2.36725307}, //
+
1686 {6.13194466, 2.36572766}, //
+
1687 {6.12924004, 2.36399388}, //
+
1688 {6.12640858, 2.36205125}, //
+
1689 {6.1234498, 2.3599}, //
+
1690 {6.12201214, 2.35851479}, //
+
1691 {6.12069941, 2.35738158}, //
+
1692 {6.11951113, 2.35649991}, //
+
1693 {6.1184473, 2.35587049}, //
+
1694 {6.11750841, 2.35549259}, //
+
1695 {6.11669445, 2.35536671}, //
+
1696 {6.11600494, 2.35549259}, //
+
1697 {6.11543989, 2.35587049}, //
+
1698 {6.11499977, 2.35649991}, //
+
1699 {6.11468506, 2.35729694}, //
+
1700 {6.11449623, 2.35817647}, //
+
1701 {6.11443329, 2.35913897}, //
+
1702 {6.11449623, 2.36018395}, //
+
1703 {6.11468506, 2.36131167}, //
+
1704 {6.11499977, 2.36252213}, //
+
1705 {6.11544085, 2.36381555}, //
+
1706 {6.11600733, 2.36519146}, //
+
1707 {6.11670017, 2.3666501}, //
+
1708 {6.11741352, 2.36816049}, //
+
1709 {6.11804342, 2.36966968}, //
+
1710 {6.11858892, 2.37117767}, //
+
1711 {6.1190505, 2.37268448}, //
+
1712 {6.11942816, 2.37419009}, //
+
1713 {6.11972237, 2.37569451}, //
+
1714 {6.11993217, 2.3771975}, //
+
1715 {6.12005806, 2.3786993}, //
+
1716 {6.12010002, 2.38019991}, //
+
1717 {6.1200161, 2.38234067}, //
+
1718 {6.11976433, 2.38422966}, //
+
1719 {6.11934423, 2.38586664}, //
+
1720 {6.11875677, 2.38725185}, //
+
1721 {6.11800146, 2.3883853}, //
+
1722 {6.11707783, 2.38926673}, //
+
1723 {6.11598635, 2.38989639}, //
+
1724 {6.11472702, 2.39027405}, //
+
1725 {6.11329985, 2.39039993}, //
+
1726 {6.1117897, 2.39039993}, //
+
1727 {6.11028004, 2.39039993}, //
+
1728 {6.10726547, 2.39039993}, //
+
1729 {6.1057601, 2.39039993}, //
+
1730 {6.10425568, 2.39039993}, //
+
1731 {6.10275269, 2.39039993}, //
+
1732 {6.10125065, 2.39039993}, //
+
1733 {6.09975004, 2.39039993}, //
+
1734 {6.09899426, 2.39035797}, //
+
1735 {6.09823895, 2.39023209}, //
+
1736 {6.09748316, 2.39002228}, //
+
1737 {6.09672785, 2.38972831}, //
+
1738 {6.09597206, 2.38935065}, //
+
1739 {6.09521675, 2.38888884}, //
+
1740 {6.09446096, 2.3883431}, //
+
1741 {6.09370565, 2.38771367}, //
+
1742 {6.09294987, 2.38700008}, //
+
1743 {6.09223652, 2.38702106}, //
+
1744 {6.09160662, 2.38708401}, //
+
1745 {6.09106112, 2.38718891}, //
+
1746 {6.09059954, 2.38733578}, //
+
1747 {6.09022141, 2.3875246}, //
+
1748 {6.08992767, 2.38775563}, //
+
1749 {6.08971786, 2.38802838}, //
+
1750 {6.08959198, 2.3883431}, //
+
1751 {6.08955002, 2.38870001}, //
+
1752 {6.08955002, 2.38909888}, //
+
1753 {6.08955002, 2.38953948}, //
+
1754 {6.08955002, 2.39237285}, //
+
1755 {6.08955002, 2.39306545}, //
+
1756 {6.08955002, 2.39380002}, //
+
1757 {6.09101915, 2.39458704}, //
+
1758 {6.09240437, 2.39545918}, //
+
1759 {6.09370565, 2.39641666}, //
+
1760 {6.09492302, 2.39745927}, //
+
1761 {6.09605598, 2.39858699}, //
+
1762 {6.0971055, 2.39980006}, //
+
1763 {6.0980711, 2.40109825}, //
+
1764 {6.09895229, 2.40248156}, //
+
1765 {6.09975004, 2.40394998}, //
+
1766 {6.10044241, 2.40537715}, //
+
1767 {6.10100937, 2.40663648}, //
+
1768 {6.10144997, 2.40772772}, //
+
1769 {6.10176468, 2.40865135}, //
+
1770 {6.10195351, 2.4094069}, //
+
1771 {6.10201645, 2.40999436}, //
+
1772 {6.10195351, 2.41041422}, //
+
1773 {6.10176468, 2.41066599}, //
+
1774 {6.10144997, 2.41074991}, //
+
1775 {6.10100937, 2.41072893}, //
+
1776 {6.10044241, 2.41066599}, //
+
1777 {6.09975004, 2.41056108}, //
+
1778 {6.09893131, 2.41041422}, //
+
1779 {6.09798717, 2.41022539}, //
+
1780 {6.09691668, 2.40999436}, //
+
1781 {6.09572029, 2.40972161}, //
+
1782 {6.09439802, 2.4094069}, //
+
1783 {6.09294987, 2.40904999}, //
+
1784 {6.09148073, 2.40865135}, //
+
1785 {6.09009552, 2.40821052}, //
+
1786 {6.08879423, 2.40772772}, //
+
1787 {6.08757734, 2.4072032}, //
+
1788 {6.0864439, 2.40663648}, //
+
1789 {6.08539438, 2.40602779}, //
+
1790 {6.08442879, 2.40537715}, //
+
1791 {6.08354759, 2.40468454}, //
+
1792 {6.08274984, 2.40394998}, //
+
1793 {6.08200502, 2.40319443}, //
+
1794 {6.08125877, 2.40243888}, //
+
1795 {6.08051109, 2.40168333}, //
+
1796 {6.07976246, 2.40092778}, //
+
1797 {6.07901239, 2.40017223}, //
+
1798 {6.0782609, 2.39941669}, //
+
1799 {6.07750845, 2.39866114}, //
+
1800 {6.07675505, 2.39790559}, //
+
1801 {6.07600021, 2.39715004}, //
+
1802 {6.07593727, 2.39650917}, //
+
1803 {6.07574797, 2.39607596}, //
+
1804 {6.07543325, 2.39584994}, //
+
1805 {6.07499266, 2.39583158}, //
+
1806 {6.0744257, 2.39602041}, //
+
1807 {6.07373333, 2.39641666}, //
+
1808 {6.0729146, 2.39702034}, //
+
1809 {6.07197046, 2.39783144}, //
+
1810 {6.07089996, 2.39884996}, //
+
1811 {6.06977701, 2.40000367}, //
+
1812 {6.06865311, 2.40119815}, //
+
1813 {6.06752777, 2.4024334}, //
+
1814 {6.066401, 2.40370917}, //
+
1815 {6.06527328, 2.40502596}, //
+
1816 {6.06414461, 2.40638328}, //
+
1817 {6.06301403, 2.40778136}, //
+
1818 {6.0618825, 2.40922046}, //
+
1819 {6.06075001, 2.41070008}, //
+
1820 {6.05961657, 2.41223145}, //
+
1821 {6.05848312, 2.41380382}, //
+
1822 {6.05735016, 2.41541672}, //
+
1823 {6.05621672, 2.41707039}, //
+
1824 {6.05508327, 2.41876483}, //
+
1825 {6.05394983, 2.42050004}, //
+
1826 {6.05281687, 2.42227602}, //
+
1827 {6.05168343, 2.42409253}, //
+
1828 {6.05054998, 2.42595005}, //
+
1829 {6.04948997, 2.42785978}, //
+
1830 {6.0485549, 2.42981172}, //
+
1831 {6.04774427, 2.43180561}, //
+
1832 {6.04705858, 2.43384147}, //
+
1833 {6.04649734, 2.43591905}, //
+
1834 {6.04606104, 2.43803883}, //
+
1835 {6.04574919, 2.44020057}, //
+
1836 {6.04556227, 2.44240427}, //
+
1837 {6.0454998, 2.44464993}, //
+
1838 {6.04411459, 2.44610858}, //
+
1839 {6.04298162, 2.44748449}, //
+
1840 {6.04209995, 2.44877768}, //
+
1841 {6.04147053, 2.44998837}, //
+
1842 {6.0410924, 2.45111609}, //
+
1843 {6.04096651, 2.45216107}, //
+
1844 {6.0410924, 2.45312357}, //
+
1845 {6.04147053, 2.4540031}, //
+
1846 {6.04209995, 2.45479989}, //
+
1847 {6.04285574, 2.45555544}, //
+
1848 {6.04361105, 2.45631123}, //
+
1849 {6.04436684, 2.45706677}, //
+
1850 {6.04512215, 2.45782232}, //
+
1851 {6.04587793, 2.45857787}, //
+
1852 {6.04663324, 2.45933342}, //
+
1853 {6.04890013, 2.46160007}, //
+
1854 {6.04964495, 2.46235561}, //
+
1855 {6.0503912, 2.46311116}, //
+
1856 {6.05113888, 2.46386671}, //
+
1857 {6.05188751, 2.46462226}, //
+
1858 {6.05263758, 2.46537781}, //
+
1859 {6.05338907, 2.46613336}, //
+
1860 {6.05414152, 2.4668889}, //
+
1861 {6.05489492, 2.46764445}, //
+
1862 {6.05565023, 2.4684}, //
+
1863 {6.05552387, 2.46912408}, //
+
1864 {6.05514622, 2.46980739}, //
+
1865 {6.05451679, 2.47044992}, //
+
1866 {6.05363512, 2.47105193}, //
+
1867 {6.05250168, 2.47161293}, //
+
1868 {6.05111647, 2.4721334}, //
+
1869 {6.04947948, 2.47261286}, //
+
1870 {6.04759073, 2.47305179}, //
+
1871 {6.04545021, 2.47344995}, //
+
1872 {6.04319429, 2.4737649}, //
+
1873 {6.04093885, 2.47395372}, //
+
1874 {6.03868341, 2.47401667}, //
+
1875 {6.03642797, 2.47395372}, //
+
1876 {6.03417206, 2.4737649}, //
+
1877 {6.03191662, 2.47344995}, //
+
1878 {6.02966118, 2.47300935}, //
+
1879 {6.02740574, 2.47244263}, //
+
1880 {6.02514982, 2.47175002}, //
+
1881 {6.02372265, 2.471771}, //
+
1882 {6.0224638, 2.47183394}, //
+
1883 {6.02137232, 2.47193885}, //
+
1884 {6.02044868, 2.47208571}, //
+
1885 {6.01969337, 2.47227478}, //
+
1886 {6.01910543, 2.47250557}, //
+
1887 {6.01868582, 2.47277832}, //
+
1888 {6.01843405, 2.47309327}, //
+
1889 {6.01835012, 2.47344995}, //
+
1890 {6.01839209, 2.4738698}, //
+
1891 {6.01851797, 2.47437334}, //
+
1892 {6.01872778, 2.47496104}, //
+
1893 {6.01902151, 2.47563267}, //
+
1894 {6.01939917, 2.47638822}, //
+
1895 {6.01986122, 2.47722769}, //
+
1896 {6.02040672, 2.47815132}, //
+
1897 {6.02103662, 2.47915864}, //
+
1898 {6.02174997, 2.48024988}, //
+
1899 {6.02250576, 2.48140359}, //
+
1900 {6.02326107, 2.48259807}, //
+
1901 {6.02401686, 2.48383331}, //
+
1902 {6.02477217, 2.48510933}, //
+
1903 {6.02552795, 2.48642588}, //
+
1904 {6.02628326, 2.48778343}, //
+
1905 {6.02703905, 2.48918152}, //
+
1906 {6.02779436, 2.49062037}, //
+
1907 {6.02855015, 2.4921}, //
+
1908 {6.02925301, 2.4921}, //
+
1909 {6.02987337, 2.4921}, //
+
1910 {6.03041124, 2.4921}, //
+
1911 {6.03086615, 2.4921}, //
+
1912 {6.03123808, 2.4921}, //
+
1913 {6.03189993, 2.4921}, //
+
1914 {6.03259277, 2.49281359}, //
+
1915 {6.03315926, 2.49344325}, //
+
1916 {6.03359985, 2.49398899}, //
+
1917 {6.03391504, 2.49445057}, //
+
1918 {6.03410387, 2.49482846}, //
+
1919 {6.03416681, 2.49512219}, //
+
1920 {6.03410387, 2.495332}, //
+
1921 {6.03391504, 2.49545813}, //
+
1922 {6.03359985, 2.49550009}, //
+
1923 {6.03246689, 2.49550009}, //
+
1924 {6.03208876, 2.49550009}, //
+
1925 {6.0317111, 2.49550009}, //
+
1926 {6.03133345, 2.49550009}, //
+
1927 {6.03095579, 2.49550009}, //
+
1928 {6.03057766, 2.49550009}, //
+
1929 {6.0302, 2.49550009}, //
+
1930 {6.0297699, 2.49545813}, //
+
1931 {6.02921247, 2.495332}, //
+
1932 {6.02852774, 2.49512219}, //
+
1933 {6.02771616, 2.49482846}, //
+
1934 {6.02677727, 2.49445057}, //
+
1935 {6.02571106, 2.49398899}, //
+
1936 {6.02451801, 2.49344325}, //
+
1937 {6.02319765, 2.49281359}, //
+
1938 {6.02174997, 2.4921}, //
+
1939 {6.02028131, 2.49205804}, //
+
1940 {6.01889801, 2.49193215}, //
+
1941 {6.01760006, 2.49172211}, //
+
1942 {6.01638699, 2.49142838}, //
+
1943 {6.01525927, 2.49105072}, //
+
1944 {6.0142169, 2.4905889}, //
+
1945 {6.01325941, 2.49004316}, //
+
1946 {6.0123868, 2.4894135}, //
+
1947 {6.01160002, 2.48869991}, //
+
1948 {6.01086521, 2.48878384}, //
+
1949 {6.01017284, 2.48903584}, //
+
1950 {6.00952244, 2.48945546}, //
+
1951 {6.00891352, 2.49004316}, //
+
1952 {6.00834703, 2.49079871}, //
+
1953 {6.00782204, 2.49172211}, //
+
1954 {6.00733948, 2.49281359}, //
+
1955 {6.00689888, 2.49407291}, //
+
1956 {6.00649977, 2.49550009}, //
+
1957 {6.00616407, 2.49703145}, //
+
1958 {6.0059123, 2.49860382}, //
+
1959 {6.00574446, 2.50021672}, //
+
1960 {6.00566053, 2.50187039}, //
+
1961 {6.00566053, 2.50356483}, //
+
1962 {6.00574446, 2.50530005}, //
+
1963 {6.0059123, 2.50707603}, //
+
1964 {6.00616407, 2.50889254}, //
+
1965 {6.00649977, 2.51075006}, //
+
1966 {6.00685692, 2.51261735}, //
+
1967 {6.00717163, 2.51444125}, //
+
1968 {6.00744438, 2.51622224}, //
+
1969 {6.00767517, 2.51795983}, //
+
1970 {6.007864, 2.51965427}, //
+
1971 {6.00801134, 2.52130556}, //
+
1972 {6.00811625, 2.52291369}, //
+
1973 {6.00817919, 2.52447844}, //
+
1974 {6.00820017, 2.52600002}, //
+
1975 {6.00885057, 2.52677655}, //
+
1976 {6.00929117, 2.52759504}, //
+
1977 {6.00952244, 2.5284555}, //
+
1978 {6.00954342, 2.52935791}, //
+
1979 {6.00935411, 2.53030252}, //
+
1980 {6.00895548, 2.53128886}, //
+
1981 {6.00834703, 2.5323174}, //
+
1982 {6.00752831, 2.53338766}, //
+
1983 {6.00649977, 2.53449988}, //
+
1984 {6.0053463, 2.53565359}, //
+
1985 {6.00415182, 2.53684807}, //
+
1986 {5.99612951, 2.54487038}, //
+
1987 {5.99464989, 2.54635}, //
+
1988 {5.99242544, 2.54857397}, //
+
1989 {5.99028444, 2.55071306}, //
+
1990 {5.98822784, 2.55276656}, //
+
1991 {5.98625517, 2.55473518}, //
+
1992 {5.98436594, 2.55661845}, //
+
1993 {5.98256111, 2.5584166}, //
+
1994 {5.98084021, 2.56012964}, //
+
1995 {5.97920322, 2.56175733}, //
+
1996 {5.97765017, 2.56329989}, //
+
1997 {5.97463894, 2.56710863}, //
+
1998 {5.97162771, 2.57100129}, //
+
1999 {5.96861649, 2.57497787}, //
+
2000 {5.96560574, 2.57903838}, //
+
2001 {5.96259451, 2.58318281}, //
+
2002 {5.95958328, 2.58741117}, //
+
2003 {5.95657206, 2.59172344}, //
+
2004 {5.95356131, 2.59611964}, //
+
2005 {5.95055008, 2.6006}, //
+
2006 {5.94908142, 2.60352778}, //
+
2007 {5.94769812, 2.60628891}, //
+
2008 {5.94640017, 2.60888338}, //
+
2009 {5.94518709, 2.6113112}, //
+
2010 {5.94405937, 2.61357212}, //
+
2011 {5.94301653, 2.61566663}, //
+
2012 {5.94205904, 2.61759448}, //
+
2013 {5.9411869, 2.61935544}, //
+
2014 {5.94040012, 2.62094998}, //
+
2015 {5.93804979, 2.62400317}, //
+
2016 {5.93553352, 2.62714005}, //
+
2017 {5.93284988, 2.63036108}, //
+
2018 {5.92999983, 2.63366604}, //
+
2019 {5.92698336, 2.63705492}, //
+
2020 {5.92379999, 2.64052773}, //
+
2021 {5.92045021, 2.64408445}, //
+
2022 {5.91693354, 2.64772534}, //
+
2023 {5.91324997, 2.65144992}, //
+
2024 {5.90956736, 2.65509129}, //
+
2025 {5.90605259, 2.65848207}, //
+
2026 {5.90270567, 2.66162229}, //
+
2027 {5.8995266, 2.66451168}, //
+
2028 {5.89651537, 2.66715074}, //
+
2029 {5.89367199, 2.66953897}, //
+
2030 {5.89099693, 2.67167664}, //
+
2031 {5.88848972, 2.67356348}, //
+
2032 {5.88614988, 2.67519999}, //
+
2033 {5.88539457, 2.67591357}, //
+
2034 {5.88463879, 2.67654324}, //
+
2035 {5.88388348, 2.67708898}, //
+
2036 {5.88312769, 2.67755055}, //
+
2037 {5.88237238, 2.67792845}, //
+
2038 {5.88161659, 2.67822218}, //
+
2039 {5.88086128, 2.67843199}, //
+
2040 {5.8801055, 2.67855811}, //
+
2041 {5.87935019, 2.67860007}, //
+
2042 {5.87640142, 2.68015242}, //
+
2043 {5.87357712, 2.68178773}, //
+
2044 {5.87087774, 2.68350554}, //
+
2045 {5.8683033, 2.68530607}, //
+
2046 {5.86585331, 2.68718958}, //
+
2047 {5.86352777, 2.68915558}, //
+
2048 {5.86132717, 2.69120431}, //
+
2049 {5.85925102, 2.69333577}, //
+
2050 {5.8572998, 2.69554996}, //
+
2051 {5.85548449, 2.69776416}, //
+
2052 {5.85379362, 2.69989562}, //
+
2053 {5.85222769, 2.70194435}, //
+
2054 {5.85078621, 2.70391059}, //
+
2055 {5.84946966, 2.70579386}, //
+
2056 {5.84827757, 2.70759439}, //
+
2057 {5.84721041, 2.70931244}, //
+
2058 {5.8462677, 2.71094751}, //
+
2059 {5.84544992, 2.7125001}, //
+
2060 {5.84544992, 2.71321368}, //
+
2061 {5.84544992, 2.71384311}, //
+
2062 {5.84544992, 2.71438885}, //
+
2063 {5.84544992, 2.71485066}, //
+
2064 {5.84544992, 2.71522832}, //
+
2065 {5.84544992, 2.71589994}, //
+
2066 {5.84406471, 2.72109199}, //
+
2067 {5.84293127, 2.72762346}, //
+
2068 {5.84205008, 2.73549438}, //
+
2069 {5.84142017, 2.74470496}, //
+
2070 {5.84104252, 2.75525498}, //
+
2071 {5.84091663, 2.76714444}, //
+
2072 {5.84104252, 2.78037357}, //
+
2073 {5.84142017, 2.7949419}, //
+
2074 {5.84205008, 2.81084991}, //
+
2075 {5.84205008, 2.81519437}, //
+
2076 {5.84205008, 2.82288337}, //
+
2077 {5.84205008, 2.82622766}, //
+
2078 {5.84205008, 2.82923889}, //
+
2079 {5.84205008, 2.83191657}, //
+
2080 {5.84205008, 2.83426118}, //
+
2081 {5.84205008, 2.83627224}, //
+
2082 {5.84205008, 2.83794999}, //
+
2083 {5.84198713, 2.83937716}, //
+
2084 {5.84179831, 2.84063649}, //
+
2085 {5.84148312, 2.84172773}, //
+
2086 {5.84104252, 2.84265113}, //
+
2087 {5.84047604, 2.84340668}, //
+
2088 {5.83978319, 2.84399438}, //
+
2089 {5.83896494, 2.84441423}, //
+
2090 {5.83802032, 2.844666}, //
+
2091 {5.83694983, 2.84474993}, //
+
2092 {5.83580637, 2.84470797}, //
+
2093 {5.83461905, 2.84458208}, //
+
2094 {5.83338881, 2.84437227}, //
+
2095 {5.83211565, 2.8440783}, //
+
2096 {5.83079863, 2.84370065}, //
+
2097 {5.82943869, 2.84323883}, //
+
2098 {5.82803583, 2.84269333}, //
+
2099 {5.82658958, 2.84206367}, //
+
2100 {5.82509995, 2.84135008}, //
+
2101 {5.82358932, 2.83988094}, //
+
2102 {5.82208014, 2.83849573}, //
+
2103 {5.82057238, 2.83719444}, //
+
2104 {5.81906557, 2.83597708}, //
+
2105 {5.81755972, 2.83484387}, //
+
2106 {5.81605577, 2.83379436}, //
+
2107 {5.81455231, 2.832829}, //
+
2108 {5.81305075, 2.83194757}, //
+
2109 {5.81155014, 2.83115005}, //
+
2110 {5.80474997, 2.83115005}, //
+
2111 {5.80474997, 2.8345499}, //
+
2112 {5.80634451, 2.83622837}, //
+
2113 {5.80810547, 2.83824134}, //
+
2114 {5.81003332, 2.84058881}, //
+
2115 {5.81212759, 2.84327102}, //
+
2116 {5.81438875, 2.84628773}, //
+
2117 {5.81681681, 2.84963894}, //
+
2118 {5.81941128, 2.85332465}, //
+
2119 {5.82217216, 2.8573451}, //
+
2120 {5.82509995, 2.86170006}, //
+
2121 {5.82712507, 2.86607528}, //
+
2122 {5.82869005, 2.87015676}, //
+
2123 {5.82979441, 2.87394452}, //
+
2124 {5.83043814, 2.87743831}, //
+
2125 {5.83062172, 2.88063836}, //
+
2126 {5.83034468, 2.88354445}, //
+
2127 {5.82960701, 2.8861568}, //
+
2128 {5.82840872, 2.88847542}, //
+
2129 {5.8267498, 2.89050007}, //
+
2130 {5.82468414, 2.89236736}, //
+
2131 {5.82224131, 2.89419127}, //
+
2132 {5.81942225, 2.89597225}, //
+
2133 {5.81622648, 2.89770985}, //
+
2134 {5.8126545, 2.89940429}, //
+
2135 {5.80870533, 2.90105557}, //
+
2136 {5.80438042, 2.90266347}, //
+
2137 {5.79967833, 2.90422845}, //
+
2138 {5.79460001, 2.90575004}, //
+
2139 {5.77930021, 2.91085005}, //
+
2140 {5.77826118, 2.91120672}, //
+
2141 {5.77738905, 2.91152167}, //
+
2142 {5.77668333, 2.91179442}, //
+
2143 {5.7761445, 2.91202521}, //
+
2144 {5.77577209, 2.91221428}, //
+
2145 {5.77556658, 2.91236115}, //
+
2146 {5.77552795, 2.91246605}, //
+
2147 {5.77565575, 2.91252899}, //
+
2148 {5.77594995, 2.91254997}, //
+
2149 {5.77764988, 2.91254997}, //
+
2150 {5.77912951, 2.91257095}, //
+
2151 {5.7805686, 2.9126339}, //
+
2152 {5.78196669, 2.9127388}, //
+
2153 {5.78332424, 2.9128859}, //
+
2154 {5.78464079, 2.91307473}, //
+
2155 {5.78591681, 2.91330552}, //
+
2156 {5.78715181, 2.91357851}, //
+
2157 {5.78834629, 2.91389322}, //
+
2158 {5.78950024, 2.9142499}, //
+
2159 {5.79061174, 2.91464877}, //
+
2160 {5.79168034, 2.91508961}, //
+
2161 {5.79270554, 2.91557217}, //
+
2162 {5.79368782, 2.91609693}, //
+
2163 {5.79462671, 2.91666365}, //
+
2164 {5.79552221, 2.91727233}, //
+
2165 {5.7963748, 2.91792274}, //
+
2166 {5.79718399, 2.91861534}, //
+
2167 {5.79794979, 2.91934991}, //
+
2168 {5.79788685, 2.92078757}, //
+
2169 {5.79769802, 2.92210054}, //
+
2170 {5.79738331, 2.92328882}, //
+
2171 {5.79694271, 2.92435241}, //
+
2172 {5.79637575, 2.9252913}, //
+
2173 {5.79568338, 2.9261055}, //
+
2174 {5.79486465, 2.92679501}, //
+
2175 {5.79392052, 2.92735982}, //
+
2176 {5.79285002, 2.92779994}, //
+
2177 {5.7916851, 2.92813587}, //
+
2178 {5.79043531, 2.92838764}, //
+
2179 {5.78910017, 2.92855549}, //
+
2180 {5.78767967, 2.92863941}, //
+
2181 {5.7861743, 2.92863941}, //
+
2182 {5.78458357, 2.92855549}, //
+
2183 {5.78290749, 2.92838764}, //
+
2184 {5.78114653, 2.92813587}, //
+
2185 {5.77930021, 2.92779994}, //
+
2186 {5.77744246, 2.92731786}, //
+
2187 {5.77562571, 2.92662716}, //
+
2188 {5.77384996, 2.92572784}, //
+
2189 {5.77211475, 2.92461967}, //
+
2190 {5.77042055, 2.92330313}, //
+
2191 {5.76876688, 2.92177773}, //
+
2192 {5.76715374, 2.92004395}, //
+
2193 {5.76558161, 2.91810131}, //
+
2194 {5.76405001, 2.91595006}, //
+
2195 {5.76333618, 2.91523647}, //
+
2196 {5.76270676, 2.91460681}, //
+
2197 {5.76102781, 2.91292787}, //
+
2198 {5.760818, 2.91271782}, //
+
2199 {5.76069212, 2.91259193}, //
+
2200 {5.76065016, 2.91254997}, //
+
2201 {5.76065016, 2.91279936}, //
+
2202 {5.76065016, 2.91311121}, //
+
2203 {5.76065016, 2.91354752}, //
+
2204 {5.76065016, 2.91759992}, //
+
2205 {5.76069212, 2.91873336}, //
+
2206 {5.760818, 2.91986656}, //
+
2207 {5.76102781, 2.921}, //
+
2208 {5.76132154, 2.92213345}, //
+
2209 {5.7616992, 2.92326665}, //
+
2210 {5.76216125, 2.92440009}, //
+
2211 {5.76270676, 2.92553329}, //
+
2212 {5.76333618, 2.92666674}, //
+
2213 {5.76405001, 2.92779994}, //
+
2214 {5.76476336, 2.9289124}, //
+
2215 {5.76539326, 2.92998266}, //
+
2216 {5.76593876, 2.9310112}, //
+
2217 {5.76640081, 2.93199754}, //
+
2218 {5.76677847, 2.93294191}, //
+
2219 {5.7670722, 2.93384433}, //
+
2220 {5.76728201, 2.93470502}, //
+
2221 {5.76740789, 2.93552351}, //
+
2222 {5.76744986, 2.93630004}, //
+
2223 {5.76816368, 2.9370451}, //
+
2224 {5.76879311, 2.93779135}, //
+
2225 {5.76933908, 2.93853879}, //
+
2226 {5.76980066, 2.93928766}, //
+
2227 {5.77017832, 2.94003773}, //
+
2228 {5.77047205, 2.94078898}, //
+
2229 {5.77068233, 2.94154143}, //
+
2230 {5.77080822, 2.94229507}, //
+
2231 {5.77085018, 2.94304991}, //
+
2232 {5.77080822, 2.94378448}, //
+
2233 {5.77068233, 2.94447708}, //
+
2234 {5.77047205, 2.94512773}, //
+
2235 {5.77017832, 2.94573641}, //
+
2236 {5.76980066, 2.94630313}, //
+
2237 {5.76933908, 2.94682789}, //
+
2238 {5.76879311, 2.94731045}, //
+
2239 {5.76816368, 2.94775128}, //
+
2240 {5.76744986, 2.94814992}, //
+
2241 {5.76665258, 2.94848585}, //
+
2242 {5.76577091, 2.94873762}, //
+
2243 {5.76480579, 2.94890547}, //
+
2244 {5.76375628, 2.94898939}, //
+
2245 {5.76262283, 2.94898939}, //
+
2246 {5.76140547, 2.94890547}, //
+
2247 {5.76010418, 2.94873762}, //
+
2248 {5.75871897, 2.94848585}, //
+
2249 {5.75724983, 2.94814992}, //
+
2250 {5.75574923, 2.9477303}, //
+
2251 {5.75424767, 2.94722652}, //
+
2252 {5.75274467, 2.94663882}, //
+
2253 {5.75124025, 2.9459672}, //
+
2254 {5.7497344, 2.94521165}, //
+
2255 {5.7482276, 2.94437218}, //
+
2256 {5.74671984, 2.94344878}, //
+
2257 {5.74521065, 2.94244146}, //
+
2258 {5.74370003, 2.94134998}, //
+
2259 {5.74224138, 2.94020629}, //
+
2260 {5.74086523, 2.9390192}, //
+
2261 {5.73957205, 2.93778896}, //
+
2262 {5.73836184, 2.93651533}, //
+
2263 {5.73723412, 2.93519878}, //
+
2264 {5.73618889, 2.93383884}, //
+
2265 {5.73522663, 2.93243575}, //
+
2266 {5.73434687, 2.9309895}, //
+
2267 {5.73355007, 2.9295001}, //
+
2268 {5.73203897, 2.92669749}, //
+
2269 {5.73052788, 2.92431235}, //
+
2270 {5.72901678, 2.92234445}, //
+
2271 {5.72750568, 2.92079377}, //
+
2272 {5.72599459, 2.91966057}, //
+
2273 {5.72448349, 2.91894436}, //
+
2274 {5.72297239, 2.91864562}, //
+
2275 {5.7214613, 2.91876411}, //
+
2276 {5.7199502, 2.91930008}, //
+
2277 {5.71836615, 2.92022276}, //
+
2278 {5.71661425, 2.92148018}, //
+
2279 {5.7146945, 2.92307234}, //
+
2280 {5.71260691, 2.92499876}, //
+
2281 {5.71035147, 2.92725992}, //
+
2282 {5.7079277, 2.92985559}, //
+
2283 {5.70533657, 2.93278575}, //
+
2284 {5.70257711, 2.93605065}, //
+
2285 {5.69964981, 2.93965006}, //
+
2286 {5.69609261, 2.94475985}, //
+
2287 {5.69295359, 2.94953394}, //
+
2288 {5.69023323, 2.95397234}, //
+
2289 {5.68793154, 2.95807481}, //
+
2290 {5.68604803, 2.96184134}, //
+
2291 {5.68458319, 2.96527219}, //
+
2292 {5.68353701, 2.96836734}, //
+
2293 {5.68290949, 2.97112656}, //
+
2294 {5.68270016, 2.97355008}, //
+
2295 {5.68282509, 2.9759419}, //
+
2296 {5.68320131, 2.97858453}, //
+
2297 {5.68382788, 2.98147774}, //
+
2298 {5.68470478, 2.98462152}, //
+
2299 {5.6858325, 2.98801613}, //
+
2300 {5.68721104, 2.99166107}, //
+
2301 {5.68883991, 2.99555683}, //
+
2302 {5.6907196, 2.99970317}, //
+
2303 {5.69285011, 3.00410008}, //
+
2304 {5.69492769, 3.00702715}, //
+
2305 {5.69662762, 3.00978637}, //
+
2306 {5.69794989, 3.01237774}, //
+
2307 {5.6988945, 3.01480126}, //
+
2308 {5.69946098, 3.0170567}, //
+
2309 {5.69964981, 3.01914454}, //
+
2310 {5.69946098, 3.02106428}, //
+
2311 {5.6988945, 3.02281594}, //
+
2312 {5.69794989, 3.0244}, //
+
2313 {5.6967535, 3.02582717}, //
+
2314 {5.69543171, 3.0270865}, //
+
2315 {5.69398355, 3.02817774}, //
+
2316 {5.69240904, 3.02910113}, //
+
2317 {5.69070911, 3.02985668}, //
+
2318 {5.6888833, 3.03044438}, //
+
2319 {5.68693161, 3.03086424}, //
+
2320 {5.68485355, 3.03111601}, //
+
2321 {5.68265009, 3.03119993}, //
+
2322 {5.68047857, 3.03111672}, //
+
2323 {5.6784749, 3.03086662}, //
+
2324 {5.67663908, 3.03045011}, //
+
2325 {5.6749711, 3.0298667}, //
+
2326 {5.67347097, 3.02911663}, //
+
2327 {5.67213869, 3.02819991}, //
+
2328 {5.67097473, 3.02711678}, //
+
2329 {5.66997862, 3.02586675}, //
+
2330 {5.66914988, 3.02445006}, //
+
2331 {5.66686249, 3.02298093}, //
+
2332 {5.66453266, 3.02159572}, //
+
2333 {5.66216087, 3.02029443}, //
+
2334 {5.6597476, 3.01907706}, //
+
2335 {5.65729189, 3.01794386}, //
+
2336 {5.65479422, 3.01689434}, //
+
2337 {5.65225506, 3.01592898}, //
+
2338 {5.64967346, 3.01504755}, //
+
2339 {5.6470499, 3.01425004}, //
+
2340 {5.64443779, 3.01367211}, //
+
2341 {5.64186716, 3.01342773}, //
+
2342 {5.63933897, 3.01351666}, //
+
2343 {5.63685226, 3.0139389}, //
+
2344 {5.634408, 3.01469445}, //
+
2345 {5.63200569, 3.01578331}, //
+
2346 {5.62964487, 3.01720548}, //
+
2347 {5.62732649, 3.01896119}, //
+
2348 {5.62505007, 3.02104998}, //
+
2349 {5.62355995, 3.02243519}, //
+
2350 {5.6221118, 3.02356863}, //
+
2351 {5.6207056, 3.02445006}, //
+
2352 {5.61934137, 3.02507973}, //
+
2353 {5.6180191, 3.02545738}, //
+
2354 {5.6167388, 3.02558327}, //
+
2355 {5.61550045, 3.02545738}, //
+
2356 {5.61430454, 3.02507973}, //
+
2357 {5.61315012, 3.02445006}, //
+
2358 {5.61204815, 3.02365255}, //
+
2359 {5.61098719, 3.02277088}, //
+
2360 {5.60996675, 3.02180552}, //
+
2361 {5.60898685, 3.02075624}, //
+
2362 {5.60804796, 3.0196228}, //
+
2363 {5.60715008, 3.01840544}, //
+
2364 {5.60629272, 3.01710439}, //
+
2365 {5.6054759, 3.01571918}, //
+
2366 {5.60470009, 3.01425004}, //
+
2367 {5.60390329, 3.0127914}, //
+
2368 {5.60302353, 3.01141548}, //
+
2369 {5.60206127, 3.0101223}, //
+
2370 {5.60101604, 3.00891161}, //
+
2371 {5.59988832, 3.00778389}, //
+
2372 {5.59867764, 3.0067389}, //
+
2373 {5.59738445, 3.00577664}, //
+
2374 {5.59600878, 3.00489688}, //
+
2375 {5.59455013, 3.00410008}, //
+
2376 {5.59312296, 3.00349069}, //
+
2377 {5.59186363, 3.00317407}, //
+
2378 {5.59096575, 3.00315428}, //
+
2379 {5.59089804, 3.00229502}, //
+
2380 {5.59058332, 3.0003221}, //
+
2381 {5.59014273, 2.99876904}, //
+
2382 {5.58957577, 2.99763584}, //
+
2383 {5.5888834, 2.99692225}, //
+
2384 {5.58806467, 2.99662828}, //
+
2385 {5.58712053, 2.99675441}, //
+
2386 {5.58605003, 2.99729991}, //
+
2387 {5.58489561, 2.99815989}, //
+
2388 {5.58369923, 2.99922848}, //
+
2389 {5.58246088, 3.00050545}, //
+
2390 {5.58118105, 3.00199127}, //
+
2391 {5.57985878, 3.00368571}, //
+
2392 {5.57849455, 3.00558877}, //
+
2393 {5.57708836, 3.00770068}, //
+
2394 {5.5756402, 3.01002097}, //
+
2395 {5.57415009, 3.01255012}, //
+
2396 {5.57269144, 3.01517296}, //
+
2397 {5.57131529, 3.01775241}, //
+
2398 {5.57002211, 3.02028894}, //
+
2399 {5.56881189, 3.02278209}, //
+
2400 {5.56768417, 3.02523208}, //
+
2401 {5.56663895, 3.02763891}, //
+
2402 {5.56567669, 3.03000236}, //
+
2403 {5.56479692, 3.03232288}, //
+
2404 {5.56400013, 3.03460002}, //
+
2405 {5.56323385, 3.03738093}, //
+
2406 {5.56242466, 3.03970122}, //
+
2407 {5.56157207, 3.04156113}, //
+
2408 {5.56067657, 3.04296041}, //
+
2409 {5.55973768, 3.0438993}, //
+
2410 {5.5587554, 3.0443778}, //
+
2411 {5.5577302, 3.04439569}, //
+
2412 {5.55666161, 3.04395318}, //
+
2413 {5.5555501, 3.04305005}, //
+
2414 {5.55435419, 3.04190612}, //
+
2415 {5.55303383, 3.04071903}, //
+
2416 {5.55158901, 3.03948879}, //
+
2417 {5.55001926, 3.0382154}, //
+
2418 {5.54832458, 3.03689885}, //
+
2419 {5.54650545, 3.03553891}, //
+
2420 {5.54456186, 3.03413582}, //
+
2421 {5.54249334, 3.03268957}, //
+
2422 {5.54029989, 3.03119993}, //
+
2423 {5.53706932, 3.02818894}, //
+
2424 {5.53342104, 3.02517772}, //
+
2425 {5.52935553, 3.02216673}, //
+
2426 {5.52487278, 3.0191555}, //
+
2427 {5.5199728, 3.01614451}, //
+
2428 {5.51465559, 3.01313329}, //
+
2429 {5.50892115, 3.0101223}, //
+
2430 {5.50276899, 3.00711107}, //
+
2431 {5.49620008, 3.00410008}, //
+
2432 {5.48807859, 2.99785805}, //
+
2433 {5.48029137, 2.99119878}, //
+
2434 {5.47283888, 2.98412228}, //
+
2435 {5.46572113, 2.9766283}, //
+
2436 {5.45893764, 2.96871734}, //
+
2437 {5.4524889, 2.9603889}, //
+
2438 {5.44637489, 2.95164323}, //
+
2439 {5.44059515, 2.94248033}, //
+
2440 {5.43515015, 2.93289995}, //
+
2441 {5.43281031, 2.92837787}, //
+
2442 {5.4303031, 2.92385554}, //
+
2443 {5.42762756, 2.91933322}, //
+
2444 {5.42478466, 2.91481113}, //
+
2445 {5.42177343, 2.91028881}, //
+
2446 {5.41859436, 2.90576673}, //
+
2447 {5.41524744, 2.9012444}, //
+
2448 {5.41173267, 2.89672232}, //
+
2449 {5.40805006, 2.89219999}, //
+
2450 {5.40508032, 2.88906288}, //
+
2451 {5.40219307, 2.885674}, //
+
2452 {5.39938879, 2.88203335}, //
+
2453 {5.39666748, 2.87814069}, //
+
2454 {5.39402819, 2.87399626}, //
+
2455 {5.39147234, 2.86960006}, //
+
2456 {5.38899899, 2.86495185}, //
+
2457 {5.38660812, 2.86005187}, //
+
2458 {5.38430023, 2.85489988}, //
+
2459 {5.38210678, 2.84970617}, //
+
2460 {5.38003826, 2.84468031}, //
+
2461 {5.37809467, 2.83982229}, //
+
2462 {5.37627554, 2.83513212}, //
+
2463 {5.37458086, 2.8306098}, //
+
2464 {5.37301111, 2.82625556}, //
+
2465 {5.37156582, 2.82206917}, //
+
2466 {5.37024546, 2.81805062}, //
+
2467 {5.36905003, 2.81419992}, //
+
2468 {5.36451674, 2.7991333}, //
+
2469 {5.36420202, 2.79808712}, //
+
2470 {5.3640132, 2.79745936}, //
+
2471 {5.36394978, 2.79725003}, //
+
2472 {5.22154999, 2.94985008}, //
+
2473 {5.22230291, 2.95068693}, //
+
2474 {5.22456217, 2.95319819}, //
+
2475 {5.22625685, 2.95508146}, //
+
2476 {5.23077536, 2.96010375}, //
+
2477 {5.23359919, 2.96324253}, //
+
2478 {5.23680019, 2.96679997}, //
+
2479 {5.24026155, 2.97060871}, //
+
2480 {5.24384689, 2.97450113}, //
+
2481 {5.24755573, 2.97847772}, //
+
2482 {5.2513876, 2.98253822}, //
+
2483 {5.25534344, 2.98668265}, //
+
2484 {5.2594223, 2.99091101}, //
+
2485 {5.26362467, 2.99522352}, //
+
2486 {5.26795053, 2.99961972}, //
+
2487 {5.2723999, 3.00410008}, //
+
2488 {5.27685928, 3.00864267}, //
+
2489 {5.28119278, 3.01322603}, //
+
2490 {5.28539991, 3.01784992}, //
+
2491 {5.28948164, 3.02251482}, //
+
2492 {5.293437, 3.02722049}, //
+
2493 {5.29726648, 3.03196669}, //
+
2494 {5.30097055, 3.03675365}, //
+
2495 {5.30454826, 3.04158139}, //
+
2496 {5.30800009, 3.0464499}, //
+
2497 {5.31129456, 3.05116177}, //
+
2498 {5.31437778, 3.05549693}, //
+
2499 {5.31724977, 3.05945563}, //
+
2500 {5.319911, 3.06303763}, //
+
2501 {5.32236099, 3.06624317}, //
+
2502 {5.32460022, 3.06907225}, //
+
2503 {5.32662773, 3.07152462}, //
+
2504 {5.32844448, 3.07360053}, //
+
2505 {5.33004999, 3.07529998}, //
+
2506 {5.33158159, 3.07864618}, //
+
2507 {5.33315372, 3.08266306}, //
+
2508 {5.33476686, 3.08734989}, //
+
2509 {5.33642054, 3.0927074}, //
+
2510 {5.33811474, 3.09873509}, //
+
2511 {5.33984995, 3.10543323}, //
+
2512 {5.34162569, 3.11280179}, //
+
2513 {5.34344244, 3.12084079}, //
+
2514 {5.3453002, 3.12954998}, //
+
2515 {5.34712601, 3.13857293}, //
+
2516 {5.34882593, 3.14755249}, //
+
2517 {5.35039997, 3.1564889}, //
+
2518 {5.35184813, 3.16538215}, //
+
2519 {5.35317039, 3.17423201}, //
+
2520 {5.35436678, 3.18303895}, //
+
2521 {5.3554368, 3.1918025}, //
+
2522 {5.35638142, 3.2005229}, //
+
2523 {5.35720015, 3.20919991}, //
+
2524 {5.35795498, 3.21755314}, //
+
2525 {5.35870886, 3.22527909}, //
+
2526 {5.35946131, 3.23237777}, //
+
2527 {5.36021233, 3.2388494}, //
+
2528 {5.36096239, 3.24469376}, //
+
2529 {5.36171103, 3.24991107}, //
+
2530 {5.36245871, 3.25450134}, //
+
2531 {5.36320496, 3.2584641}, //
+
2532 {5.36394978, 3.26180005}, //
+
2533 {5.36394978, 3.25839996}, //
+
2534 {5.36397076, 3.25737214}, //
+
2535 {5.36403418, 3.25580001}, //
+
2536 {5.36413908, 3.25368333}, //
+
2537 {5.36428595, 3.25102234}, //
+
2538 {5.36447477, 3.24781656}, //
+
2539 {5.36470556, 3.24406672}, //
+
2540 {5.36497831, 3.23977232}, //
+
2541 {5.36529303, 3.23493338}, //
+
2542 {5.36565018, 3.22954988}, //
+
2543 {5.36600685, 3.22384191}, //
+
2544 {5.36632156, 3.21800685}, //
+
2545 {5.36659431, 3.21204448}, //
+
2546 {5.3668251, 3.20595503}, //
+
2547 {5.36701441, 3.19973826}, //
+
2548 {5.36716127, 3.19339442}, //
+
2549 {5.36726618, 3.1869235}, //
+
2550 {5.36732912, 3.18032527}, //
+
2551 {5.3673501, 3.17359996}, //
+
2552 {5.3673501, 3.11599994}, //
+
2553 {5.36737108, 3.11316657}, //
+
2554 {5.36743402, 3.1107111}, //
+
2555 {5.36753893, 3.10863328}, //
+
2556 {5.36768579, 3.10693336}, //
+
2557 {5.36787462, 3.10561109}, //
+
2558 {5.36810541, 3.10466671}, //
+
2559 {5.36837816, 3.10409999}, //
+
2560 {5.36869335, 3.10391116}, //
+
2561 {5.36905003, 3.10409999}, //
+
2562 {5.36942768, 3.10464501}, //
+
2563 {5.36980534, 3.10552478}, //
+
2564 {5.37018347, 3.10673881}, //
+
2565 {5.37056112, 3.10828757}, //
+
2566 {5.37093878, 3.11017108}, //
+
2567 {5.37131643, 3.11238885}, //
+
2568 {5.37169456, 3.11494136}, //
+
2569 {5.37207222, 3.11782837}, //
+
2570 {5.37244987, 3.12104988}, //
+
2571 {5.37284899, 3.12442851}, //
+
2572 {5.37328959, 3.12776351}, //
+
2573 {5.37377214, 3.13105559}, //
+
2574 {5.37429714, 3.13430429}, //
+
2575 {5.37486362, 3.13750982}, //
+
2576 {5.37547207, 3.14067221}, //
+
2577 {5.37612295, 3.14379144}, //
+
2578 {5.37681532, 3.14686728}, //
+
2579 {5.37755013, 3.14989996}, //
+
2580 {5.37827396, 3.15284824}, //
+
2581 {5.37895727, 3.1556704}, //
+
2582 {5.37960005, 3.15836668}, //
+
2583 {5.38020182, 3.16093707}, //
+
2584 {5.38076305, 3.16338158}, //
+
2585 {5.38128328, 3.16569996}, //
+
2586 {5.38176298, 3.16789269}, //
+
2587 {5.38220167, 3.16995931}, //
+
2588 {5.38259983, 3.17190003}, //
+
2589 {5.38295698, 3.17372584}, //
+
2590 {5.38327169, 3.17542601}, //
+
2591 {5.38354445, 3.17700005}, //
+
2592 {5.38377523, 3.1784482}, //
+
2593 {5.38396406, 3.17977047}, //
+
2594 {5.38411093, 3.18096662}, //
+
2595 {5.38421583, 3.18203712}, //
+
2596 {5.38427877, 3.18298149}, //
+
2597 {5.38430023, 3.18379998}, //
+
2598 {5.38430023, 3.18455553}, //
+
2599 {5.38430023, 3.1843667}, //
+
2600 {5.38430023, 3.18379998}, //
+
2601 {5.38430023, 3.17529988}, //
+
2602 {5.38425779, 3.17256165}, //
+
2603 {5.38413191, 3.1696136}, //
+
2604 {5.3839221, 3.16645551}, //
+
2605 {5.38362837, 3.16308761}, //
+
2606 {5.38325071, 3.1595099}, //
+
2607 {5.38278866, 3.15572214}, //
+
2608 {5.38224316, 3.15172458}, //
+
2609 {5.38161373, 3.1475172}, //
+
2610 {5.38089991, 3.14310002}, //
+
2611 {5.38087893, 3.14004683}, //
+
2612 {5.38081598, 3.13690996}, //
+
2613 {5.38071108, 3.13368893}, //
+
2614 {5.38056421, 3.13038397}, //
+
2615 {5.38037539, 3.12699509}, //
+
2616 {5.3801446, 3.12352228}, //
+
2617 {5.37987137, 3.11996531}, //
+
2618 {5.37955666, 3.11632466}, //
+
2619 {5.37919998, 3.11260009}, //
+
2620 {5.3788538, 3.10891676}, //
+
2621 {5.37854815, 3.10540009}, //
+
2622 {5.3782835, 3.10205007}, //
+
2623 {5.37805939, 3.0988667}, //
+
2624 {5.3778758, 3.09584999}, //
+
2625 {5.37773323, 3.09299994}, //
+
2626 {5.37763166, 3.09031677}, //
+
2627 {5.37757015, 3.08780003}, //
+
2628 {5.37755013, 3.08544993}, //
+
2629 {5.37763357, 3.08340311}, //
+
2630 {5.37788343, 3.08177352}, //
+
2631 {5.37830019, 3.08056116}, //
+
2632 {5.37888336, 3.07976604}, //
+
2633 {5.37963343, 3.07938838}, //
+
2634 {5.38054991, 3.07942772}, //
+
2635 {5.38163328, 3.07988453}, //
+
2636 {5.38288355, 3.08075857}, //
+
2637 {5.38430023, 3.08205009}, //
+
2638 {5.38583136, 3.08364439}, //
+
2639 {5.38740349, 3.08540559}, //
+
2640 {5.38901663, 3.08733344}, //
+
2641 {5.3906703, 3.08942771}, //
+
2642 {5.39236498, 3.09168887}, //
+
2643 {5.39410019, 3.09411669}, //
+
2644 {5.39587593, 3.09671116}, //
+
2645 {5.39769268, 3.09947228}, //
+
2646 {5.39954996, 3.10240006}, //
+
2647 {5.40139627, 3.10550499}, //
+
2648 {5.40315723, 3.10877538}, //
+
2649 {5.40483332, 3.11221123}, //
+
2650 {5.40642405, 3.1158123}, //
+
2651 {5.40792942, 3.11957908}, //
+
2652 {5.40934992, 3.12351108}, //
+
2653 {5.41068506, 3.12760854}, //
+
2654 {5.41193533, 3.1318717}, //
+
2655 {5.41309977, 3.13630009}, //
+
2656 {5.41417027, 3.14078093}, //
+
2657 {5.41511488, 3.14517903}, //
+
2658 {5.41593313, 3.14949441}, //
+
2659 {5.41662598, 3.15372705}, //
+
2660 {5.41719246, 3.15787721}, //
+
2661 {5.41763353, 3.16194439}, //
+
2662 {5.41794825, 3.16592908}, //
+
2663 {5.41813707, 3.1698308}, //
+
2664 {5.41820002, 3.17365003}, //
+
2665 {5.41895533, 3.17640996}, //
+
2666 {5.41971111, 3.17866731}, //
+
2667 {5.4204669, 3.18042231}, //
+
2668 {5.42122221, 3.18167472}, //
+
2669 {5.421978, 3.18242478}, //
+
2670 {5.42273331, 3.18267226}, //
+
2671 {5.42348909, 3.18241739}, //
+
2672 {5.4242444, 3.18165994}, //
+
2673 {5.42500019, 3.18039989}, //
+
2674 {5.42575502, 3.17873216}, //
+
2675 {5.42650843, 3.17672849}, //
+
2676 {5.42726088, 3.17438889}, //
+
2677 {5.42801237, 3.17171359}, //
+
2678 {5.42876244, 3.16870236}, //
+
2679 {5.42951107, 3.16535544}, //
+
2680 {5.43025875, 3.16167283}, //
+
2681 {5.431005, 3.15765429}, //
+
2682 {5.43174982, 3.15330005}, //
+
2683 {5.43246365, 3.14873576}, //
+
2684 {5.43309307, 3.14408755}, //
+
2685 {5.43363905, 3.13935566}, //
+
2686 {5.43410063, 3.1345396}, //
+
2687 {5.43447828, 3.12963939}, //
+
2688 {5.43477201, 3.12465549}, //
+
2689 {5.4349823, 3.11958766}, //
+
2690 {5.43510818, 3.11443591}, //
+
2691 {5.43515015, 3.1092}, //
+
2692 {5.43510866, 3.10396481}, //
+
2693 {5.43498468, 3.09881473}, //
+
2694 {5.43477774, 3.09375}, //
+
2695 {5.4344883, 3.08877039}, //
+
2696 {5.43411589, 3.08387589}, //
+
2697 {5.43366098, 3.07906675}, //
+
2698 {5.43312359, 3.07434249}, //
+
2699 {5.43250322, 3.06970382}, //
+
2700 {5.43179989, 3.06515002}, //
+
2701 {5.43112755, 3.06160307}, //
+
2702 {5.4306221, 3.05851793}, //
+
2703 {5.43028355, 3.05589437}, //
+
2704 {5.43011093, 3.05373263}, //
+
2705 {5.43010569, 3.05203271}, //
+
2706 {5.43026686, 3.05079436}, //
+
2707 {5.43059444, 3.05001783}, //
+
2708 {5.43108892, 3.04970312}, //
+
2709 {5.43174982, 3.04984999}, //
+
2710 {5.43258905, 3.05033207}, //
+
2711 {5.43359423, 3.05102277}, //
+
2712 {5.43476677, 3.05192232}, //
+
2713 {5.43610573, 3.05303025}, //
+
2714 {5.4376111, 3.0543468}, //
+
2715 {5.43928337, 3.0558722}, //
+
2716 {5.44112206, 3.05760622}, //
+
2717 {5.44312763, 3.05954885}, //
+
2718 {5.4453001, 3.06170011}, //
+
2719 {5.44752455, 3.06404996}, //
+
2720 {5.44966555, 3.06656671}, //
+
2721 {5.45172215, 3.06925011}, //
+
2722 {5.4536953, 3.07209992}, //
+
2723 {5.45558405, 3.07511663}, //
+
2724 {5.45738888, 3.0783}, //
+
2725 {5.45910978, 3.08165002}, //
+
2726 {5.46074677, 3.08516669}, //
+
2727 {5.46229982, 3.08885002}, //
+
2728 {5.46381044, 3.09257531}, //
+
2729 {5.46531963, 3.09621787}, //
+
2730 {5.46682787, 3.0997777}, //
+
2731 {5.46833467, 3.10325503}, //
+
2732 {5.46984005, 3.1066494}, //
+
2733 {5.47134447, 3.10996103}, //
+
2734 {5.47284746, 3.11319017}, //
+
2735 {5.4743495, 3.11633635}, //
+
2736 {5.47585011, 3.11940002}, //
+
2737 {5.47727728, 3.12293649}, //
+
2738 {5.47853661, 3.12601233}, //
+
2739 {5.47962761, 3.12862778}, //
+
2740 {5.48055124, 3.1307826}, //
+
2741 {5.48130655, 3.13247705}, //
+
2742 {5.48189449, 3.1337111}, //
+
2743 {5.48231411, 3.13448453}, //
+
2744 {5.48256588, 3.13479757}, //
+
2745 {5.4826498, 3.13464999}, //
+
2746 {5.48262882, 3.13412523}, //
+
2747 {5.48256588, 3.13330674}, //
+
2748 {5.48246098, 3.13219452}, //
+
2749 {5.48231411, 3.13078833}, //
+
2750 {5.48212528, 3.12908816}, //
+
2751 {5.48189449, 3.12709451}, //
+
2752 {5.48162174, 3.12480688}, //
+
2753 {5.48130655, 3.12222528}, //
+
2754 {5.48094988, 3.11934996}, //
+
2755 {5.48055124, 3.11629701}, //
+
2756 {5.48011065, 3.11315989}, //
+
2757 {5.47962761, 3.10993886}, //
+
2758 {5.47910309, 3.1066339}, //
+
2759 {5.47853661, 3.10324502}, //
+
2760 {5.47792768, 3.09977221}, //
+
2761 {5.47727728, 3.09621549}, //
+
2762 {5.47658443, 3.0925746}, //
+
2763 {5.47585011, 3.08885002}, //
+
2764 {5.47505331, 3.08512521}, //
+
2765 {5.47417355, 3.08148456}, //
+
2766 {5.47321129, 3.07792783}, //
+
2767 {5.47216606, 3.07445502}, //
+
2768 {5.47103834, 3.07106614}, //
+
2769 {5.46982765, 3.06776118}, //
+
2770 {5.46853447, 3.06454015}, //
+
2771 {5.46715879, 3.06140304}, //
+
2772 {5.46570015, 3.05835009}, //
+
2773 {5.46431494, 3.05623031}, //
+
2774 {5.4631815, 3.05440426}, //
+
2775 {5.46229982, 3.05287218}, //
+
2776 {5.4616704, 3.05163383}, //
+
2777 {5.46129274, 3.05068946}, //
+
2778 {5.46116686, 3.05003881}, //
+
2779 {5.46129274, 3.04968214}, //
+
2780 {5.4616704, 3.0496192}, //
+
2781 {5.46229982, 3.04984999}, //
+
2782 {5.46311808, 3.05033207}, //
+
2783 {5.46406031, 3.05102277}, //
+
2784 {5.46512794, 3.05192232}, //
+
2785 {5.46631956, 3.05303025}, //
+
2786 {5.46763659, 3.0543468}, //
+
2787 {5.46907759, 3.0558722}, //
+
2788 {5.470644, 3.05760622}, //
+
2789 {5.47233438, 3.05954885}, //
+
2790 {5.47415018, 3.06170011}, //
+
2791 {5.47605944, 3.06404996}, //
+
2792 {5.47800922, 3.06656671}, //
+
2793 {5.48000002, 3.06925011}, //
+
2794 {5.48203135, 3.07209992}, //
+
2795 {5.48410368, 3.07511663}, //
+
2796 {5.48621655, 3.0783}, //
+
2797 {5.48837042, 3.08165002}, //
+
2798 {5.49056482, 3.08516669}, //
+
2799 {5.49280024, 3.08885002}, //
+
2800 {5.49510813, 3.09257531}, //
+
2801 {5.49749899, 3.09621787}, //
+
2802 {5.49997234, 3.0997777}, //
+
2803 {5.50252819, 3.10325503}, //
+
2804 {5.50516748, 3.1066494}, //
+
2805 {5.50788879, 3.10996103}, //
+
2806 {5.51069307, 3.11319017}, //
+
2807 {5.51358032, 3.11633635}, //
+
2808 {5.51655006, 3.11940002}, //
+
2809 {5.51947737, 3.12363958}, //
+
2810 {5.52223635, 3.12733579}, //
+
2811 {5.52482796, 3.13048887}, //
+
2812 {5.52725124, 3.13309884}, //
+
2813 {5.52950668, 3.13516545}, //
+
2814 {5.53159428, 3.13668895}, //
+
2815 {5.53351402, 3.13766909}, //
+
2816 {5.53526592, 3.13810611}, //
+
2817 {5.53684998, 3.13800001}, //
+
2818 {5.53823519, 3.13746476}, //
+
2819 {5.53936863, 3.13659263}, //
+
2820 {5.54024982, 3.13538337}, //
+
2821 {5.54087973, 3.13383698}, //
+
2822 {5.54125738, 3.13195372}, //
+
2823 {5.54138327, 3.12973332}, //
+
2824 {5.54125738, 3.12717581}, //
+
2825 {5.54087973, 3.12428141}, //
+
2826 {5.54024982, 3.12104988}, //
+
2827 {5.53942108, 3.11764002}, //
+
2828 {5.53842306, 3.11418819}, //
+
2829 {5.53725576, 3.11069441}, //
+
2830 {5.53591919, 3.10715866}, //
+
2831 {5.53441381, 3.10358095}, //
+
2832 {5.53273869, 3.09996104}, //
+
2833 {5.53089523, 3.09629941}, //
+
2834 {5.52888203, 3.09259558}, //
+
2835 {5.52670002, 3.08885002}, //
+
2836 {5.52387714, 3.08531356}, //
+
2837 {5.52143097, 3.08223772}, //
+
2838 {5.51936102, 3.07962227}, //
+
2839 {5.51766777, 3.0774672}, //
+
2840 {5.51635122, 3.07577276}, //
+
2841 {5.5154109, 3.07453895}, //
+
2842 {5.51484776, 3.07376552}, //
+
2843 {5.51466036, 3.07345247}, //
+
2844 {5.51485014, 3.07360005}, //
+
2845 {5.51533222, 3.07410312}, //
+
2846 {5.51602268, 3.07485676}, //
+
2847 {5.516922, 3.07586122}, //
+
2848 {5.51803017, 3.07711601}, //
+
2849 {5.51934671, 3.07862163}, //
+
2850 {5.52087212, 3.08037782}, //
+
2851 {5.52260637, 3.08238459}, //
+
2852 {5.52454853, 3.08464193}, //
+
2853 {5.52670002, 3.0871501}, //
+
2854 {5.52892399, 3.0898149}, //
+
2855 {5.53106308, 3.09252048}, //
+
2856 {5.53311682, 3.09526658}, //
+
2857 {5.5350852, 3.09805369}, //
+
2858 {5.53696871, 3.10088158}, //
+
2859 {5.53876686, 3.10374999}, //
+
2860 {5.54047966, 3.10665917}, //
+
2861 {5.54210758, 3.10960937}, //
+
2862 {5.54365015, 3.11260009}, //
+
2863 {5.54583263, 3.1168499}, //
+
2864 {5.54784775, 3.12055564}, //
+
2865 {5.54969454, 3.12371659}, //
+
2866 {5.55137348, 3.12633324}, //
+
2867 {5.55288458, 3.12840557}, //
+
2868 {5.55422783, 3.12993336}, //
+
2869 {5.55540323, 3.1309166}, //
+
2870 {5.55641031, 3.13135552}, //
+
2871 {5.55725002, 3.1312499}, //
+
2872 {5.55796337, 3.13074636}, //
+
2873 {5.55859327, 3.12999082}, //
+
2874 {5.55913877, 3.12898326}, //
+
2875 {5.55960083, 3.12772417}, //
+
2876 {5.55997849, 3.12621307}, //
+
2877 {5.56027222, 3.12444997}, //
+
2878 {5.56048203, 3.12243509}, //
+
2879 {5.56060791, 3.12016845}, //
+
2880 {5.56064987, 3.11765003}, //
+
2881 {5.56060791, 3.11503768}, //
+
2882 {5.56048203, 3.11246729}, //
+
2883 {5.56027222, 3.10993886}, //
+
2884 {5.55997849, 3.10745239}, //
+
2885 {5.55960083, 3.10500813}, //
+
2886 {5.55913877, 3.10260558}, //
+
2887 {5.55859327, 3.100245}, //
+
2888 {5.55796337, 3.09792662}, //
+
2889 {5.55725002, 3.09564996}, //
+
2890 {5.55657816, 3.09353018}, //
+
2891 {5.55607462, 3.09170437}, //
+
2892 {5.55573893, 3.09017229}, //
+
2893 {5.55557108, 3.08893394}, //
+
2894 {5.55557108, 3.08798957}, //
+
2895 {5.55573893, 3.08733892}, //
+
2896 {5.55607462, 3.08698201}, //
+
2897 {5.55657816, 3.08691907}, //
+
2898 {5.55725002, 3.0871501}, //
+
2899 {5.55802584, 3.08759022}, //
+
2900 {5.55884266, 3.08815503}, //
+
2901 {5.55970001, 3.08884454}, //
+
2902 {5.56059837, 3.08965874}, //
+
2903 {5.56153727, 3.09059763}, //
+
2904 {5.56251669, 3.09166121}, //
+
2905 {5.56353712, 3.09284949}, //
+
2906 {5.56459808, 3.09416246}, //
+
2907 {5.56570005, 3.09559989}, //
+
2908 {5.56685448, 3.09711123}, //
+
2909 {5.56805038, 3.09862232}, //
+
2910 {5.56928873, 3.10013342}, //
+
2911 {5.57056904, 3.10164452}, //
+
2912 {5.57189131, 3.10315561}, //
+
2913 {5.57325554, 3.10466671}, //
+
2914 {5.57466173, 3.10617781}, //
+
2915 {5.57610989, 3.1076889}, //
+
2916 {5.5776, 3.1092}, //
+
2917 {5.57822752, 3.11032748}, //
+
2918 {5.57815123, 3.11035442}, //
+
2919 {5.57702351, 3.11054325}, //
+
2920 {5.57589436, 3.11052227}, //
+
2921 {5.57476425, 3.11029124}, //
+
2922 {5.57363272, 3.10985065}, //
+
2923 {5.57250023, 3.1092}, //
+
2924 {5.57138777, 3.10844445}, //
+
2925 {5.57031727, 3.1076889}, //
+
2926 {5.56928873, 3.10693336}, //
+
2927 {5.56830263, 3.10617781}, //
+
2928 {5.56735802, 3.10542226}, //
+
2929 {5.56645536, 3.10466671}, //
+
2930 {5.56559515, 3.10391116}, //
+
2931 {5.56477642, 3.10315561}, //
+
2932 {5.56400013, 3.10240006}, //
+
2933 {5.56213903, 3.10053897}, //
+
2934 {5.56168413, 3.10008407}, //
+
2935 {5.56131172, 3.09971166}, //
+
2936 {5.56081533, 3.09921551}, //
+
2937 {5.56069136, 3.09909129}, //
+
2938 {5.56064987, 3.09905005}, //
+
2939 {5.56064987, 3.09909129}, //
+
2940 {5.56064987, 3.09921551}, //
+
2941 {5.56064987, 3.10240006}, //
+
2942 {5.56064987, 3.10315561}, //
+
2943 {5.56064987, 3.10391116}, //
+
2944 {5.56064987, 3.1092}, //
+
2945 {5.56135321, 3.10995555}, //
+
2946 {5.56197357, 3.1107111}, //
+
2947 {5.56251097, 3.11146665}, //
+
2948 {5.56296587, 3.11222219}, //
+
2949 {5.56333828, 3.11297774}, //
+
2950 {5.56362772, 3.11373329}, //
+
2951 {5.56383467, 3.11448884}, //
+
2952 {5.56395864, 3.11524439}, //
+
2953 {5.56400013, 3.11599994}, //
+
2954 {5.56397915, 3.11677599}, //
+
2955 {5.56391621, 3.11759257}, //
+
2956 {5.5638113, 3.11844993}, //
+
2957 {5.56366396, 3.11934805}, //
+
2958 {5.56347513, 3.12028694}, //
+
2959 {5.56324434, 3.1212666}, //
+
2960 {5.56297159, 3.12228703}, //
+
2961 {5.56265688, 3.12334824}, //
+
2962 {5.56230021, 3.12444997}, //
+
2963 {5.5618906, 3.12556243}, //
+
2964 {5.56139612, 3.12663269}, //
+
2965 {5.56081676, 3.12766123}, //
+
2966 {5.56015205, 3.12864757}, //
+
2967 {5.55940199, 3.12959194}, //
+
2968 {5.55856657, 3.13049436}, //
+
2969 {5.55764627, 3.13135505}, //
+
2970 {5.55664062, 3.13217354}, //
+
2971 {5.5555501, 3.13295007}, //
+
2972 {5.55443764, 3.13357973}, //
+
2973 {5.55336714, 3.13395739}, //
+
2974 {5.55233908, 3.13408327}, //
+
2975 {5.5513525, 3.13395739}, //
+
2976 {5.55040789, 3.13357973}, //
+
2977 {5.54950571, 3.13295007}, //
+
2978 {5.54864502, 3.13206863}, //
+
2979 {5.54782677, 3.13093519}, //
+
2980 {5.54705, 3.12954998}, //
+
2981 {5.54633665, 3.12818575}, //
+
2982 {5.54570675, 3.12711549}, //
+
2983 {5.54516125, 3.12633896}, //
+
2984 {5.54469919, 3.12585616}, //
+
2985 {5.54432154, 3.12566733}, //
+
2986 {5.54402781, 3.12577224}, //
+
2987 {5.543818, 3.12617087}, //
+
2988 {5.54369211, 3.12686348}, //
+
2989 {5.54365015, 3.12785006}, //
+
2990 {5.54365015, 3.12896228}, //
+
2991 {5.54365015, 3.13003278}, //
+
2992 {5.54365015, 3.13106108}, //
+
2993 {5.54365015, 3.13634992}, //
+
2994 {5.5443635, 3.13780856}, //
+
2995 {5.5449934, 3.13918447}, //
+
2996 {5.5455389, 3.1404779}, //
+
2997 {5.54600048, 3.14168835}, //
+
2998 {5.54637861, 3.14281607}, //
+
2999 {5.54667234, 3.14386106}, //
+
3000 {5.54688215, 3.14482355}, //
+
3001 {5.54700804, 3.14570308}, //
+
3002 {5.54705, 3.14650011}, //
+
3003 {5.54702902, 3.14790606}, //
+
3004 {5.54696608, 3.14910245}, //
+
3005 {5.54686117, 3.15008879}, //
+
3006 {5.54671431, 3.15086532}, //
+
3007 {5.54652548, 3.15143204}, //
+
3008 {5.54629421, 3.15178895}, //
+
3009 {5.54602146, 3.15193582}, //
+
3010 {5.54570675, 3.15187287}, //
+
3011 {5.54535007, 3.15159988}, //
+
3012 {5.54490995, 3.15120125}, //
+
3013 {5.5443449, 3.15076041}, //
+
3014 {5.5436554, 3.15027785}, //
+
3015 {5.54284143, 3.14975309}, //
+
3016 {5.54190254, 3.14918637}, //
+
3017 {5.54083872, 3.14857769}, //
+
3018 {5.53965044, 3.14792705}, //
+
3019 {5.53833771, 3.14723468}, //
+
3020 {5.53690004, 3.14650011}, //
+
3021 {5.53526354, 3.14570308}, //
+
3022 {5.53337669, 3.14482355}, //
+
3023 {5.53123903, 3.14386106}, //
+
3024 {5.52885056, 3.14281607}, //
+
3025 {5.52621174, 3.14168835}, //
+
3026 {5.52332211, 3.1404779}, //
+
3027 {5.52018213, 3.13918447}, //
+
3028 {5.51679134, 3.13780856}, //
+
3029 {5.51315022, 3.13634992}, //
+
3030 {5.51169157, 3.13624501}, //
+
3031 {5.51031542, 3.1359303}, //
+
3032 {5.50902224, 3.13540554}, //
+
3033 {5.50781155, 3.13467097}, //
+
3034 {5.50668383, 3.1337266}, //
+
3035 {5.50563908, 3.13257217}, //
+
3036 {5.50467634, 3.13120794}, //
+
3037 {5.50379705, 3.1296339}, //
+
3038 {5.50299978, 3.12785006}, //
+
3039 {5.50224447, 3.12599254}, //
+
3040 {5.50148869, 3.12417603}, //
+
3041 {5.50073338, 3.12240005}, //
+
3042 {5.49997759, 3.12066483}, //
+
3043 {5.49922228, 3.11897039}, //
+
3044 {5.49846649, 3.11731672}, //
+
3045 {5.49771118, 3.11570382}, //
+
3046 {5.49695539, 3.11413145}, //
+
3047 {5.49620008, 3.11260009}, //
+
3048 {5.49607468, 3.11029196}, //
+
3049 {5.49569893, 3.10790133}, //
+
3050 {5.49507236, 3.10542774}, //
+
3051 {5.49419498, 3.10287166}, //
+
3052 {5.49306726, 3.1002326}, //
+
3053 {5.49168873, 3.09751105}, //
+
3054 {5.49005985, 3.09470677}, //
+
3055 {5.48818016, 3.09181976}, //
+
3056 {5.48605013, 3.08885002}, //
+
3057 {5.48531532, 3.08749557}, //
+
3058 {5.48462296, 3.0864327}, //
+
3059 {5.48397207, 3.08566117}, //
+
3060 {5.48336363, 3.08518076}, //
+
3061 {5.48279715, 3.08499193}, //
+
3062 {5.48227215, 3.08509445}, //
+
3063 {5.48178959, 3.08548832}, //
+
3064 {5.48134899, 3.08617353}, //
+
3065 {5.48094988, 3.0871501}, //
+
3066 {5.48061419, 3.08834577}, //
+
3067 {5.48036242, 3.08966613}, //
+
3068 {5.48019457, 3.09111118}, //
+
3069 {5.48011065, 3.09268093}, //
+
3070 {5.48011065, 3.09437537}, //
+
3071 {5.48019457, 3.09619451}, //
+
3072 {5.48036242, 3.09813833}, //
+
3073 {5.48061419, 3.10020685}, //
+
3074 {5.48094988, 3.10240006}, //
+
3075 {5.48130655, 3.10474992}, //
+
3076 {5.48162174, 3.10726666}, //
+
3077 {5.48189449, 3.10995007}, //
+
3078 {5.48212528, 3.11279988}, //
+
3079 {5.48231411, 3.11581659}, //
+
3080 {5.48246098, 3.11899996}, //
+
3081 {5.48256588, 3.12234998}, //
+
3082 {5.48262882, 3.12586665}, //
+
3083 {5.4826498, 3.12954998}, //
+
3084 {5.48336363, 3.1324358}, //
+
3085 {5.48399305, 3.13507104}, //
+
3086 {5.48453903, 3.13745546}, //
+
3087 {5.48500061, 3.13958955}, //
+
3088 {5.48537827, 3.14147282}, //
+
3089 {5.485672, 3.14310551}, //
+
3090 {5.48588228, 3.14448762}, //
+
3091 {5.48600817, 3.14561915}, //
+
3092 {5.48605013, 3.14650011}, //
+
3093 {5.48600817, 3.1471715}, //
+
3094 {5.48588228, 3.14767528}, //
+
3095 {5.485672, 3.14801121}, //
+
3096 {5.48537827, 3.14817905}, //
+
3097 {5.48500061, 3.14817905}, //
+
3098 {5.48453903, 3.14801121}, //
+
3099 {5.48399305, 3.14767528}, //
+
3100 {5.48336363, 3.1471715}, //
+
3101 {5.4826498, 3.14650011}, //
+
3102 {5.48187351, 3.1456604}, //
+
3103 {5.48105478, 3.14465308}, //
+
3104 {5.48019457, 3.14347768}, //
+
3105 {5.47929192, 3.14213467}, //
+
3106 {5.4783473, 3.14062357}, //
+
3107 {5.4773612, 3.13894439}, //
+
3108 {5.47633266, 3.1370976}, //
+
3109 {5.47526217, 3.13508272}, //
+
3110 {5.47415018, 3.1329}, //
+
3111 {5.47300625, 3.13068652}, //
+
3112 {5.47181892, 3.12855673}, //
+
3113 {5.47058868, 3.1265111}, //
+
3114 {5.46931553, 3.12454939}, //
+
3115 {5.46799898, 3.1226716}, //
+
3116 {5.46663904, 3.12087774}, //
+
3117 {5.46523571, 3.1191678}, //
+
3118 {5.46378946, 3.11754203}, //
+
3119 {5.46229982, 3.11599994}, //
+
3120 {5.46008587, 3.11231661}, //
+
3121 {5.45795441, 3.10879993}, //
+
3122 {5.45590544, 3.10544991}, //
+
3123 {5.45393944, 3.10226655}, //
+
3124 {5.45205641, 3.09925008}, //
+
3125 {5.45025539, 3.09640002}, //
+
3126 {5.44853783, 3.09371662}, //
+
3127 {5.44690228, 3.09120011}, //
+
3128 {5.44535017, 3.08885002}, //
+
3129 {5.44459438, 3.08743334}, //
+
3130 {5.44383907, 3.08618331}, //
+
3131 {5.44308329, 3.08509994}, //
+
3132 {5.44232798, 3.08418322}, //
+
3133 {5.44157219, 3.08343339}, //
+
3134 {5.44081688, 3.08284998}, //
+
3135 {5.44006109, 3.08243322}, //
+
3136 {5.43930578, 3.08218336}, //
+
3137 {5.43855, 3.08209991}, //
+
3138 {5.43515015, 3.08209991}, //
+
3139 {5.43523407, 3.0821414}, //
+
3140 {5.43548584, 3.08226538}, //
+
3141 {5.43590546, 3.08247232}, //
+
3142 {5.4364934, 3.08276176}, //
+
3143 {5.43724871, 3.08313394}, //
+
3144 {5.43817234, 3.08358884}, //
+
3145 {5.43926334, 3.08412647}, //
+
3146 {5.44052267, 3.08474684}, //
+
3147 {5.44194984, 3.08544993}, //
+
3148 {5.44197083, 3.08624697}, //
+
3149 {5.44203377, 3.08712649}, //
+
3150 {5.44213867, 3.08808899}, //
+
3151 {5.44228601, 3.08913398}, //
+
3152 {5.44247484, 3.0902617}, //
+
3153 {5.44270563, 3.09147215}, //
+
3154 {5.44297838, 3.09276533}, //
+
3155 {5.44329309, 3.09414124}, //
+
3156 {5.44364977, 3.09559989}, //
+
3157 {5.44400692, 3.09711123}, //
+
3158 {5.44432163, 3.09862232}, //
+
3159 {5.44459438, 3.10013342}, //
+
3160 {5.44482517, 3.10164452}, //
+
3161 {5.445014, 3.10315561}, //
+
3162 {5.44516134, 3.10466671}, //
+
3163 {5.44526625, 3.10617781}, //
+
3164 {5.44532919, 3.1076889}, //
+
3165 {5.44535017, 3.1092}, //
+
3166 {5.44528723, 3.11087775}, //
+
3167 {5.44509792, 3.11288881}, //
+
3168 {5.44478321, 3.11523342}, //
+
3169 {5.44434261, 3.1179111}, //
+
3170 {5.44377613, 3.12092233}, //
+
3171 {5.44308329, 3.12426662}, //
+
3172 {5.44226503, 3.12794447}, //
+
3173 {5.44132042, 3.13195562}, //
+
3174 {5.44024992, 3.13630009}, //
+
3175 {5.43911648, 3.14078021}, //
+
3176 {5.43798351, 3.14517665}, //
+
3177 {5.43685007, 3.14948893}, //
+
3178 {5.43571663, 3.15371728}, //
+
3179 {5.43458319, 3.15786171}, //
+
3180 {5.43345022, 3.16192222}, //
+
3181 {5.43231678, 3.1658988}, //
+
3182 {5.43118334, 3.16979146}, //
+
3183 {5.4300499, 3.17359996}, //
+
3184 {5.42894793, 3.17725134}, //
+
3185 {5.42788696, 3.18064928}, //
+
3186 {5.42686653, 3.1837945}, //
+
3187 {5.42588711, 3.18668652}, //
+
3188 {5.42494822, 3.18932533}, //
+
3189 {5.42404985, 3.19171119}, //
+
3190 {5.4231925, 3.19384384}, //
+
3191 {5.42237616, 3.19572353}, //
+
3192 {5.42159986, 3.19735003}, //
+
3193 {5.4215579, 3.19797969}, //
+
3194 {5.42143202, 3.19835734}, //
+
3195 {5.42122221, 3.19848323}, //
+
3196 {5.42092848, 3.19835734}, //
+
3197 {5.42055082, 3.19797969}, //
+
3198 {5.42008877, 3.19735003}, //
+
3199 {5.41954327, 3.19646859}, //
+
3200 {5.41891336, 3.19533515}, //
+
3201 {5.41820002, 3.19394994}, //
+
3202 {5.41745472, 3.19240737}, //
+
3203 {5.41670847, 3.19077969}, //
+
3204 {5.41596127, 3.18906665}, //
+
3205 {5.41521215, 3.1872685}, //
+
3206 {5.41446257, 3.18538523}, //
+
3207 {5.41371107, 3.1834166}, //
+
3208 {5.41295862, 3.18136287}, //
+
3209 {5.41220474, 3.17922401}, //
+
3210 {5.41144991, 3.17700005}, //
+
3211 {5.40993929, 3.17247844}, //
+
3212 {5.4084301, 3.16795802}, //
+
3213 {5.40692234, 3.1634388}, //
+
3214 {5.40541553, 3.158921}, //
+
3215 {5.40390968, 3.1544044}, //
+
3216 {5.40240574, 3.14988899}, //
+
3217 {5.40090227, 3.14537477}, //
+
3218 {5.39940071, 3.14086175}, //
+
3219 {5.3979001, 3.13634992}, //
+
3220 {5.39645195, 3.13285494}, //
+
3221 {5.39512968, 3.12990308}, //
+
3222 {5.3939333, 3.12749434}, //
+
3223 {5.3928628, 3.12562895}, //
+
3224 {5.39191866, 3.12430668}, //
+
3225 {5.39109993, 3.12352777}, //
+
3226 {5.39040756, 3.12329197}, //
+
3227 {5.3898406, 3.12359929}, //
+
3228 {5.38940001, 3.12444997}, //
+
3229 {5.38908529, 3.1256876}, //
+
3230 {5.38889647, 3.12713385}, //
+
3231 {5.38883352, 3.12878895}, //
+
3232 {5.38889647, 3.13065243}, //
+
3233 {5.38908529, 3.13272476}, //
+
3234 {5.38940001, 3.13500547}, //
+
3235 {5.3898406, 3.13749504}, //
+
3236 {5.39040756, 3.14019322}, //
+
3237 {5.39109993, 3.14310002}, //
+
3238 {5.39109993, 3.14762211}, //
+
3239 {5.39109993, 3.15214443}, //
+
3240 {5.39109993, 3.18379998}, //
+
3241 {5.39107895, 3.1866858}, //
+
3242 {5.39101601, 3.18932104}, //
+
3243 {5.3909111, 3.19170547}, //
+
3244 {5.39076424, 3.19383955}, //
+
3245 {5.39057541, 3.19572282}, //
+
3246 {5.39034462, 3.19735551}, //
+
3247 {5.39007139, 3.19873762}, //
+
3248 {5.38975668, 3.19986916}, //
+
3249 {5.38940001, 3.20075011}, //
+
3250 {5.38900137, 3.20140052}, //
+
3251 {5.3885603, 3.20184135}, //
+
3252 {5.38807774, 3.20207214}, //
+
3253 {5.38755322, 3.20209312}, //
+
3254 {5.38698626, 3.2019043}, //
+
3255 {5.38637781, 3.20150566}, //
+
3256 {5.38572693, 3.20089698}, //
+
3257 {5.38503456, 3.20007849}, //
+
3258 {5.38430023, 3.19904995}, //
+
3259 {5.38354445, 3.19787478}, //
+
3260 {5.38278866, 3.19661546}, //
+
3261 {5.38203335, 3.19527221}, //
+
3262 {5.38127756, 3.19384503}, //
+
3263 {5.38052225, 3.19233394}, //
+
3264 {5.37976646, 3.19073892}, //
+
3265 {5.37901115, 3.18905997}, //
+
3266 {5.37825537, 3.18729687}, //
+
3267 {5.37750006, 3.18545008}, //
+
3268 {5.37679672, 3.18359327}, //
+
3269 {5.37617636, 3.18177843}, //
+
3270 {5.37563896, 3.18000555}, //
+
3271 {5.37518406, 3.17827463}, //
+
3272 {5.37481165, 3.17658591}, //
+
3273 {5.37452221, 3.17493892}, //
+
3274 {5.37431526, 3.17333388}, //
+
3275 {5.37419128, 3.17177105}, //
+
3276 {5.3741498, 3.17024994}, //
+
3277 {5.3741498, 3.17190003}, //
+
3278 {5.3741498, 3.17305422}, //
+
3279 {5.3741498, 3.1742506}, //
+
3280 {5.3741498, 3.18379998}, //
+
3281 {5.3741498, 3.18683219}, //
+
3282 {5.3741498, 3.18990612}, //
+
3283 {5.3741498, 3.21259999}, //
+
3284 {5.3741498, 3.21593642}, //
+
3285 {5.3741498, 3.21914577}, //
+
3286 {5.3741498, 3.23804998}, //
+
3287 {5.37410784, 3.24190068}, //
+
3288 {5.37398195, 3.24591923}, //
+
3289 {5.37377214, 3.25010562}, //
+
3290 {5.37347841, 3.25445986}, //
+
3291 {5.37310076, 3.25898218}, //
+
3292 {5.3726387, 3.26367211}, //
+
3293 {5.3720932, 3.26853013}, //
+
3294 {5.37146378, 3.27355623}, //
+
3295 {5.37074995, 3.27874994}, //
+
3296 {5.3700366, 3.2854445}, //
+
3297 {5.3694067, 3.29197216}, //
+
3298 {5.3688612, 3.29833341}, //
+
3299 {5.36839962, 3.30452776}, //
+
3300 {5.36802149, 3.31055546}, //
+
3301 {5.36772776, 3.31641674}, //
+
3302 {5.36751795, 3.32211113}, //
+
3303 {5.36739206, 3.32763886}, //
+
3304 {5.3673501, 3.33299994}, //
+
3305 {5.3673501, 3.34485006}, //
+
3306 {5.36732912, 3.34520674}, //
+
3307 {5.36726618, 3.34552169}, //
+
3308 {5.36716127, 3.34579444}, //
+
3309 {5.36701441, 3.34602523}, //
+
3310 {5.3668251, 3.34621429}, //
+
3311 {5.36659431, 3.34636116}, //
+
3312 {5.36632156, 3.34646606}, //
+
3313 {5.36600685, 3.34652901}, //
+
3314 {5.36565018, 3.34654999}, //
+
3315 {5.36529303, 3.34648705}, //
+
3316 {5.36497831, 3.34629822}, //
+
3317 {5.36470556, 3.34598327}, //
+
3318 {5.36447477, 3.34554267}, //
+
3319 {5.36428595, 3.34497595}, //
+
3320 {5.36413908, 3.34428334}, //
+
3321 {5.36403418, 3.34346485}, //
+
3322 {5.36397076, 3.34252048}, //
+
3323 {5.36394978, 3.34144998}, //
+
3324 {5.36390877, 3.34034824}, //
+
3325 {5.36378479, 3.33928704}, //
+
3326 {5.36357784, 3.33826661}, //
+
3327 {5.3632884, 3.33728695}, //
+
3328 {5.36291599, 3.33634806}, //
+
3329 {5.36246109, 3.33544993}, //
+
3330 {5.36192369, 3.33459258}, //
+
3331 {5.36130285, 3.333776}, //
+
3332 {5.36059999, 3.33299994}, //
+
3333 {5.35988665, 3.33148885}, //
+
3334 {5.35925674, 3.32997775}, //
+
3335 {5.35871124, 3.32846665}, //
+
3336 {5.35824919, 3.32695556}, //
+
3337 {5.35787153, 3.32544446}, //
+
3338 {5.3575778, 3.32393336}, //
+
3339 {5.35736799, 3.32242227}, //
+
3340 {5.35724211, 3.32091117}, //
+
3341 {5.35720015, 3.31940007}, //
+
3342 {5.35648632, 3.3187592}, //
+
3343 {5.3558569, 3.318326}, //
+
3344 {5.35531092, 3.31809998}, //
+
3345 {5.35484934, 3.31808138}, //
+
3346 {5.35447168, 3.31827044}, //
+
3347 {5.35417795, 3.3186667}, //
+
3348 {5.35396767, 3.31927037}, //
+
3349 {5.35384178, 3.32008147}, //
+
3350 {5.35379982, 3.3211}, //
+
3351 {5.35375786, 3.32229567}, //
+
3352 {5.35363197, 3.32361603}, //
+
3353 {5.35342216, 3.32506108}, //
+
3354 {5.35312843, 3.32663083}, //
+
3355 {5.35275078, 3.32832527}, //
+
3356 {5.35228872, 3.33014441}, //
+
3357 {5.35174322, 3.33208823}, //
+
3358 {5.3511138, 3.33415675}, //
+
3359 {5.35039997, 3.33634996}, //
+
3360 {5.34968662, 3.33861613}, //
+
3361 {5.34905672, 3.34088087}, //
+
3362 {5.34851122, 3.34314442}, //
+
3363 {5.34804916, 3.34540677}, //
+
3364 {5.34767151, 3.34766793}, //
+
3365 {5.34737778, 3.34992766}, //
+
3366 {5.34716797, 3.35218644}, //
+
3367 {5.34704208, 3.35444379}, //
+
3368 {5.34700012, 3.35669994}, //
+
3369 {5.34700012, 3.35892415}, //
+
3370 {5.34700012, 3.361063}, //
+
3371 {5.34700012, 3.37365007}, //
+
3372 {5.34700012, 3.37507725}, //
+
3373 {5.34700012, 3.37633634}, //
+
3374 {5.34700012, 3.38045001}, //
+
3375 {5.34220505, 3.38333535}, //
+
3376 {5.34260082, 3.38477349}, //
+
3377 {5.34297848, 3.38628459}, //
+
3378 {5.34327221, 3.38762784}, //
+
3379 {5.34348202, 3.38880301}, //
+
3380 {5.3436079, 3.38981056}, //
+
3381 {5.34364986, 3.39065003}, //
+
3382 {5.34062767, 3.39362788}, //
+
3383 {5.34041786, 3.39383459}, //
+
3384 {5.34025002, 3.39400005}, //
+
3385 {5.340271, 3.39397907}, //
+
3386 {5.34033394, 3.39391613}, //
+
3387 {5.34043884, 3.39381123}, //
+
3388 {5.34159327, 3.3926568}, //
+
3389 {5.34194994, 3.39229989}, //
+
3390 {5.34289455, 3.39138341}, //
+
3391 {5.34331417, 3.39097595}, //
+
3392 {5.34346104, 3.39083338}, //
+
3393 {5.34362888, 3.3906703}, //
+
3394 {5.34364986, 3.39065003}, //
+
3395 {5.3436079, 3.39058709}, //
+
3396 {5.34348202, 3.39039826}, //
+
3397 {5.34327221, 3.39008331}, //
+
3398 {5.34297848, 3.38964248}, //
+
3399 {5.34213877, 3.38838339}, //
+
3400 {5.34159327, 3.3875649}, //
+
3401 {5.34096336, 3.38662028}, //
+
3402 {5.34025002, 3.38555002}, //
+
3403 {5.33975267, 3.38481116}, //
+
3404 {5.33004999, 3.39065003}, //
+
3405 {5.33011293, 3.39075422}, //
+
3406 {5.33061647, 3.39158893}, //
+
3407 {5.33162403, 3.39325809}, //
+
3408 {5.33313513, 3.39576173}, //
+
3409 {5.33407974, 3.39732647}, //
+
3410 {5.33514977, 3.39910007}, //
+
3411 {5.33630371, 3.40105128}, //
+
3412 {5.33749819, 3.40312719}, //
+
3413 {5.3387332, 3.4053278}, //
+
3414 {5.34000921, 3.40765309}, //
+
3415 {5.34132576, 3.41010308}, //
+
3416 {5.34268332, 3.41267776}, //
+
3417 {5.3440814, 3.41537714}, //
+
3418 {5.3455205, 3.41820121}, //
+
3419 {5.34700012, 3.42114997}, //
+
3420 {5.34844828, 3.42414021}, //
+
3421 {5.34977055, 3.42708826}, //
+
3422 {5.35096645, 3.42999434}, //
+
3423 {5.35203695, 3.43285871}, //
+
3424 {5.35298157, 3.43568087}, //
+
3425 {5.35379982, 3.43846107}, //
+
3426 {5.35449266, 3.4411993}, //
+
3427 {5.35505915, 3.44389558}, //
+
3428 {5.35550022, 3.44654989}, //
+
3429 {5.35581493, 3.44908953}, //
+
3430 {5.35600376, 3.45141912}, //
+
3431 {5.3560667, 3.45353889}, //
+
3432 {5.35600376, 3.45544887}, //
+
3433 {5.35581493, 3.45714879}, //
+
3434 {5.35550022, 3.45863891}, //
+
3435 {5.35505915, 3.45991921}, //
+
3436 {5.35449266, 3.46098948}, //
+
3437 {5.35379982, 3.46184993}, //
+
3438 {5.35226774, 3.4624691}, //
+
3439 {5.3506937, 3.4628377}, //
+
3440 {5.3490777, 3.46295547}, //
+
3441 {5.34741974, 3.46282291}, //
+
3442 {5.34571981, 3.46243954}, //
+
3443 {5.34397793, 3.46180558}, //
+
3444 {5.3421936, 3.46092105}, //
+
3445 {5.34036779, 3.4597857}, //
+
3446 {5.33850002, 3.45840001}, //
+
3447 {5.33658028, 3.45683646}, //
+
3448 {5.33457661, 3.4551456}, //
+
3449 {5.33248901, 3.45332789}, //
+
3450 {5.3303175, 3.45138264}, //
+
3451 {5.32806158, 3.44931054}, //
+
3452 {5.32572222, 3.44711113}, //
+
3453 {5.32329893, 3.44478464}, //
+
3454 {5.32079124, 3.44233084}, //
+
3455 {5.31820011, 3.43974996}, //
+
3456 {5.31560802, 3.4371376}, //
+
3457 {5.31309891, 3.43456721}, //
+
3458 {5.31067228, 3.43203878}, //
+
3459 {5.30832863, 3.42955256}, //
+
3460 {5.30606747, 3.42710805}, //
+
3461 {5.3038888, 3.42470551}, //
+
3462 {5.3017931, 3.42234516}, //
+
3463 {5.29978037, 3.42002654}, //
+
3464 {5.29785013, 3.41774988}, //
+
3465 {5.29607677, 3.41557789}, //
+
3466 {5.2945118, 3.41357231}, //
+
3467 {5.29315567, 3.41173339}, //
+
3468 {5.29200792, 3.41006112}, //
+
3469 {5.29106903, 3.40855551}, //
+
3470 {5.29033899, 3.40721655}, //
+
3471 {5.28981733, 3.40604448}, //
+
3472 {5.28950453, 3.40503883}, //
+
3473 {5.2894001, 3.40420008}, //
+
3474 {5.2894001, 3.40444946}, //
+
3475 {5.2894001, 3.40519762}, //
+
3476 {5.2894001, 3.40925002}, //
+
3477 {5.2894206, 3.41044569}, //
+
3478 {5.28948164, 3.41176605}, //
+
3479 {5.28958321, 3.41321111}, //
+
3480 {5.28972578, 3.41478086}, //
+
3481 {5.28990936, 3.4164753}, //
+
3482 {5.29013348, 3.41829443}, //
+
3483 {5.29039812, 3.42023826}, //
+
3484 {5.29070377, 3.42230678}, //
+
3485 {5.29104996, 3.42449999}, //
+
3486 {5.29144859, 3.42676616}, //
+
3487 {5.29188967, 3.4290309}, //
+
3488 {5.29237223, 3.43129444}, //
+
3489 {5.29289675, 3.4335568}, //
+
3490 {5.29346371, 3.43581796}, //
+
3491 {5.29407215, 3.43807769}, //
+
3492 {5.29472303, 3.44033647}, //
+
3493 {5.2954154, 3.44259381}, //
+
3494 {5.29615021, 3.44484997}, //
+
3495 {5.29686356, 3.44707465}, //
+
3496 {5.29749298, 3.44921541}, //
+
3497 {5.29803896, 3.45127225}, //
+
3498 {5.29850054, 3.45324516}, //
+
3499 {5.29887819, 3.45513391}, //
+
3500 {5.2991724, 3.45693898}, //
+
3501 {5.29938221, 3.45865989}, //
+
3502 {5.29950809, 3.46029687}, //
+
3503 {5.29955006, 3.46184993}, //
+
3504 {5.29959202, 3.46335053}, //
+
3505 {5.2997179, 3.46485257}, //
+
3506 {5.29992771, 3.46635556}, //
+
3507 {5.30022144, 3.46785998}, //
+
3508 {5.30059958, 3.46936536}, //
+
3509 {5.30106115, 3.47087216}, //
+
3510 {5.30160666, 3.47238016}, //
+
3511 {5.30223656, 3.47388959}, //
+
3512 {5.30294991, 3.47539997}, //
+
3513 {5.30288696, 3.47609258}, //
+
3514 {5.30269814, 3.4766593}, //
+
3515 {5.30238342, 3.4770999}, //
+
3516 {5.30194283, 3.47741485}, //
+
3517 {5.30137587, 3.47760367}, //
+
3518 {5.3006835, 3.47766662}, //
+
3519 {5.29986477, 3.47760367}, //
+
3520 {5.29892015, 3.47741485}, //
+
3521 {5.29785013, 3.4770999}, //
+
3522 {5.29669571, 3.47670126}, //
+
3523 {5.29549932, 3.47626042}, //
+
3524 {5.29426098, 3.47577786}, //
+
3525 {5.29298067, 3.47525311}, //
+
3526 {5.29165888, 3.47468638}, //
+
3527 {5.29029465, 3.4740777}, //
+
3528 {5.28888845, 3.47342706}, //
+
3529 {5.2874403, 3.47273445}, //
+
3530 {5.28664684, 3.47234368}, //
+
3531 {5.28765011, 3.47199988}, //
+
3532 {5.28869915, 3.47111917}, //
+
3533 {5.28958082, 3.46998763}, //
+
3534 {5.29029465, 3.46860552}, //
+
3535 {5.29084015, 3.46697283}, //
+
3536 {5.2912178, 3.46508956}, //
+
3537 {5.29142761, 3.46295547}, //
+
3538 {5.29146957, 3.46057105}, //
+
3539 {5.29134369, 3.45793581}, //
+
3540 {5.29104996, 3.45504999}, //
+
3541 {5.29066181, 3.4519968}, //
+
3542 {5.29023027, 3.44885993}, //
+
3543 {5.28975534, 3.4456389}, //
+
3544 {5.2892375, 3.44233394}, //
+
3545 {5.28867674, 3.43894506}, //
+
3546 {5.28807211, 3.43547225}, //
+
3547 {5.28742456, 3.43191552}, //
+
3548 {5.2867341, 3.42827463}, //
+
3549 {5.28599977, 3.42455006}, //
+
3550 {5.2845726, 3.42082477}, //
+
3551 {5.28331375, 3.41718221}, //
+
3552 {5.28222227, 3.41362214}, //
+
3553 {5.28129864, 3.41014504}, //
+
3554 {5.28054333, 3.40675068}, //
+
3555 {5.27995539, 3.40343881}, //
+
3556 {5.27953577, 3.4002099}, //
+
3557 {5.279284, 3.39706349}, //
+
3558 {5.27920008, 3.39400005}, //
+
3559 {5.27850723, 3.39044261}, //
+
3560 {5.27794075, 3.38730359}, //
+
3561 {5.27750015, 3.38458323}, //
+
3562 {5.27718496, 3.38228154}, //
+
3563 {5.27699614, 3.38039804}, //
+
3564 {5.27693319, 3.37893343}, //
+
3565 {5.27699614, 3.37788701}, //
+
3566 {5.27718496, 3.37725925}, //
+
3567 {5.27750015, 3.37704992}, //
+
3568 {5.27794075, 3.37721801}, //
+
3569 {5.27850723, 3.37772155}, //
+
3570 {5.27920008, 3.37856102}, //
+
3571 {5.28001833, 3.37973642}, //
+
3572 {5.28096294, 3.38124752}, //
+
3573 {5.28203344, 3.38309455}, //
+
3574 {5.28322983, 3.38527727}, //
+
3575 {5.28455162, 3.38779569}, //
+
3576 {5.28599977, 3.39065003}, //
+
3577 {5.28754187, 3.39296842}, //
+
3578 {5.28916788, 3.39541292}, //
+
3579 {5.29087782, 3.39798331}, //
+
3580 {5.29267168, 3.40067959}, //
+
3581 {5.29454947, 3.40350175}, //
+
3582 {5.29651117, 3.40645003}, //
+
3583 {5.2985568, 3.40952396}, //
+
3584 {5.30068636, 3.41272402}, //
+
3585 {5.30289984, 3.41604996}, //
+
3586 {5.30520821, 3.41941857}, //
+
3587 {5.30759859, 3.42274618}, //
+
3588 {5.31007242, 3.42603326}, //
+
3589 {5.31262827, 3.42927957}, //
+
3590 {5.31526709, 3.4324851}, //
+
3591 {5.31798887, 3.43565011}, //
+
3592 {5.32079315, 3.43877411}, //
+
3593 {5.3236804, 3.44185734}, //
+
3594 {5.32665014, 3.44490004}, //
+
3595 {5.3295455, 3.44705129}, //
+
3596 {5.33218813, 3.44899392}, //
+
3597 {5.33457756, 3.4507277}, //
+
3598 {5.33671427, 3.4522531}, //
+
3599 {5.3385973, 3.45356965}, //
+
3600 {5.3402276, 3.45467782}, //
+
3601 {5.34160471, 3.45557714}, //
+
3602 {5.34272909, 3.45626783}, //
+
3603 {5.3435998, 3.45674992}, //
+
3604 {5.34427166, 3.45702291}, //
+
3605 {5.3447752, 3.45708585}, //
+
3606 {5.34511089, 3.45693898}, //
+
3607 {5.34527922, 3.45658207}, //
+
3608 {5.34527922, 3.45601535}, //
+
3609 {5.34511089, 3.45523882}, //
+
3610 {5.3447752, 3.45425248}, //
+
3611 {5.34427166, 3.4530561}, //
+
3612 {5.3435998, 3.4516499}, //
+
3613 {5.34285498, 3.45010734}, //
+
3614 {5.34210873, 3.44847965}, //
+
3615 {5.34136105, 3.44676661}, //
+
3616 {5.34061241, 3.44496846}, //
+
3617 {5.33986235, 3.44308519}, //
+
3618 {5.33911133, 3.44111657}, //
+
3619 {5.33835888, 3.43906307}, //
+
3620 {5.337605, 3.43692398}, //
+
3621 {5.33685017, 3.43470001}, //
+
3622 {5.3360734, 3.43244386}, //
+
3623 {5.33525515, 3.43018651}, //
+
3624 {5.33439445, 3.42792773}, //
+
3625 {5.3334918, 3.425668}, //
+
3626 {5.33254766, 3.42340684}, //
+
3627 {5.33156109, 3.42114449}, //
+
3628 {5.33053255, 3.41888094}, //
+
3629 {5.32946253, 3.41661596}, //
+
3630 {5.32835007, 3.41435003}, //
+
3631 {5.32729006, 3.41213584}, //
+
3632 {5.32635498, 3.41000438}, //
+
3633 {5.32554436, 3.40795565}, //
+
3634 {5.32485867, 3.40598941}, //
+
3635 {5.32429743, 3.40410614}, //
+
3636 {5.32386112, 3.4023056}, //
+
3637 {5.32354927, 3.40058756}, //
+
3638 {5.32336235, 3.39895248}, //
+
3639 {5.32329988, 3.3973999}, //
+
3640 {5.32239819, 3.39363337}, //
+
3641 {5.32120371, 3.38986659}, //
+
3642 {5.31971645, 3.38610005}, //
+
3643 {5.3179369, 3.38233328}, //
+
3644 {5.31586504, 3.37856674}, //
+
3645 {5.31349993, 3.37479997}, //
+
3646 {5.31084251, 3.37103343}, //
+
3647 {5.3078928, 3.36726665}, //
+
3648 {5.30464983, 3.36350012}, //
+
3649 {5.30119801, 3.35969138}, //
+
3650 {5.2976203, 3.35579872}, //
+
3651 {5.2939167, 3.35182214}, //
+
3652 {5.29008722, 3.34776163}, //
+
3653 {5.28613138, 3.3436172}, //
+
3654 {5.28205013, 3.33938885}, //
+
3655 {5.27784252, 3.33507657}, //
+
3656 {5.27350903, 3.33068013}, //
+
3657 {5.26905012, 3.32620001}, //
+
3658 {5.26456976, 3.32310486}, //
+
3659 {5.26017332, 3.31984186}, //
+
3660 {5.25586128, 3.31641102}, //
+
3661 {5.25163269, 3.31281233}, //
+
3662 {5.2474885, 3.30904579}, //
+
3663 {5.24342775, 3.30511117}, //
+
3664 {5.23945141, 3.3010087}, //
+
3665 {5.23555851, 3.29673839}, //
+
3666 {5.23175001, 3.29229999}, //
+
3667 {5.22944212, 3.28912091}, //
+
3668 {5.22705126, 3.28560615}, //
+
3669 {5.2245779, 3.28175545}, //
+
3670 {5.22202158, 3.27756906}, //
+
3671 {5.21938276, 3.27304697}, //
+
3672 {5.21666098, 3.26818895}, //
+
3673 {5.2138567, 3.262995}, //
+
3674 {5.21096992, 3.25746536}, //
+
3675 {5.20800018, 3.25160003}, //
+
3676 {5.20500946, 3.24555612}, //
+
3677 {5.20205927, 3.23946905}, //
+
3678 {5.19915009, 3.23333883}, //
+
3679 {5.19628143, 3.22716546}, //
+
3680 {5.19345379, 3.2209487}, //
+
3681 {5.19066668, 3.21468878}, //
+
3682 {5.18792057, 3.20838571}, //
+
3683 {5.185215, 3.20203948}, //
+
3684 {5.18254995, 3.1956501}, //
+
3685 {5.17997885, 3.1893754}, //
+
3686 {5.17753267, 3.18335128}, //
+
3687 {5.17521095, 3.17757773}, //
+
3688 {5.17301416, 3.17205501}, //
+
3689 {5.17094183, 3.16678262}, //
+
3690 {5.16899443, 3.16176105}, //
+
3691 {5.16717148, 3.15699005}, //
+
3692 {5.16547346, 3.15246964}, //
+
3693 {5.1638999, 3.14820004}, //
+
3694 {5.16123343, 3.14083219}, //
+
3695 {5.16015005, 3.13783884}, //
+
3696 {5.15923357, 3.13530612}, //
+
3697 {5.15848351, 3.13323402}, //
+
3698 {5.15789986, 3.13162231}, //
+
3699 {5.1574831, 3.13047099}, //
+
3700 {5.15723324, 3.12978029}, //
+
3701 {5.15714979, 3.12954998}, //
+
3702 {5.1513257, 3.12006426}, //
+
3703 {5.14592028, 3.11120677}, //
+
3704 {5.14093351, 3.10297775}, //
+
3705 {5.13636494, 3.09537721}, //
+
3706 {5.13221502, 3.08840489}, //
+
3707 {5.1284833, 3.08206105}, //
+
3708 {5.12517023, 3.07634568}, //
+
3709 {5.12227583, 3.07125854}, //
+
3710 {5.11980009, 3.06680012}, //
+
3711 {5.11766958, 3.06288576}, //
+
3712 {5.11578989, 3.05943203}, //
+
3713 {5.11416101, 3.05643892}, //
+
3714 {5.11278248, 3.0539062}, //
+
3715 {5.11015129, 3.04907107}, //
+
3716 {5.10977554, 3.04838014}, //
+
3717 {5.10965014, 3.04815006}, //
+
3718 {4.98085022, 3.15665007}, //
+
3719 {4.98209763, 3.15657473}, //
+
3720 {4.98435116, 3.15783763}, //
+
3721 {4.98761129, 3.16043878}, //
+
3722 {4.99187708, 3.1643784}, //
+
3723 {4.99714947, 3.16965628}, //
+
3724 {5.00342798, 3.17627215}, //
+
3725 {5.01071215, 3.18422651}, //
+
3726 {5.01900291, 3.19351912}, //
+
3727 {5.02829981, 3.20414996}, //
+
3728 {5.03361893, 3.21264815}, //
+
3729 {5.03902102, 3.22156477}, //
+
3730 {5.0445056, 3.23090005}, //
+
3731 {5.05007267, 3.24065375}, //
+
3732 {5.05572271, 3.25082588}, //
+
3733 {5.06145573, 3.26141667}, //
+
3734 {5.06727076, 3.27242589}, //
+
3735 {5.07316923, 3.28385377}, //
+
3736 {5.0791502, 3.29570007}, //
+
3737 {5.08442783, 3.30403018}, //
+
3738 {5.08970547, 3.31244326}, //
+
3739 {5.0949831, 3.32093883}, //
+
3740 {5.10026121, 3.32951736}, //
+
3741 {5.10553885, 3.3381784}, //
+
3742 {5.11081648, 3.34692216}, //
+
3743 {5.11609459, 3.35574865}, //
+
3744 {5.12137222, 3.36465812}, //
+
3745 {5.12664986, 3.37365007}, //
+
3746 {5.13024855, 3.38077521}, //
+
3747 {5.13351154, 3.38706231}, //
+
3748 {5.13643885, 3.39251113}, //
+
3749 {5.13903046, 3.39712167}, //
+
3750 {5.1412859, 3.40089393}, //
+
3751 {5.14320564, 3.40382767}, //
+
3752 {5.1447897, 3.40592337}, //
+
3753 {5.14603758, 3.40718079}, //
+
3754 {5.14694977, 3.40759993}, //
+
3755 {5.14757967, 3.40734887}, //
+
3756 {5.14795732, 3.40659499}, //
+
3757 {5.14808321, 3.405339}, //
+
3758 {5.14795732, 3.40358019}, //
+
3759 {5.14757967, 3.40131903}, //
+
3760 {5.14694977, 3.39855552}, //
+
3761 {5.14606857, 3.39528942}, //
+
3762 {5.14493513, 3.39152098}, //
+
3763 {5.14354992, 3.38724995}, //
+
3764 {5.14196587, 3.38264394}, //
+
3765 {5.14021397, 3.37786984}, //
+
3766 {5.13829422, 3.37292767}, //
+
3767 {5.13620663, 3.36781788}, //
+
3768 {5.13395119, 3.36254001}, //
+
3769 {5.1315279, 3.35709453}, //
+
3770 {5.12893629, 3.35148096}, //
+
3771 {5.12617731, 3.34569931}, //
+
3772 {5.12325001, 3.33975005}, //
+
3773 {5.12249422, 3.33753586}, //
+
3774 {5.12173891, 3.3354044}, //
+
3775 {5.12098312, 3.33335567}, //
+
3776 {5.12022781, 3.33138943}, //
+
3777 {5.11947203, 3.32950616}, //
+
3778 {5.11871672, 3.32770562}, //
+
3779 {5.11796093, 3.32598758}, //
+
3780 {5.11720562, 3.3243525}, //
+
3781 {5.11644983, 3.32279992}, //
+
3782 {5.1157155, 3.32134128}, //
+
3783 {5.11502266, 3.31996536}, //
+
3784 {5.11437225, 3.31867218}, //
+
3785 {5.11376381, 3.31746173}, //
+
3786 {5.11319685, 3.31633401}, //
+
3787 {5.11267233, 3.31528878}, //
+
3788 {5.11218929, 3.31432652}, //
+
3789 {5.1117487, 3.313447}, //
+
3790 {5.11135006, 3.31264997}, //
+
3791 {5.11099339, 3.3119154}, //
+
3792 {5.1106782, 3.31122279}, //
+
3793 {5.11040545, 3.31057215}, //
+
3794 {5.11017466, 3.30996346}, //
+
3795 {5.10998583, 3.30939698}, //
+
3796 {5.10983896, 3.30887222}, //
+
3797 {5.10973406, 3.30838943}, //
+
3798 {5.10967112, 3.30794883}, //
+
3799 {5.10965014, 3.30754995}, //
+
3800 {5.10965014, 3.30593395}, //
+
3801 {5.10965014, 3.30587101}, //
+
3802 {5.10965014, 3.30585003}, //
+
3803 {5.11135006, 3.30585003}, //
+
3804 {5.11170673, 3.30587101}, //
+
3805 {5.11202145, 3.30593395}, //
+
3806 {5.11229467, 3.30603886}, //
+
3807 {5.11252546, 3.30618572}, //
+
3808 {5.11271429, 3.30637479}, //
+
3809 {5.11286116, 3.30660558}, //
+
3810 {5.11296606, 3.30687833}, //
+
3811 {5.113029, 3.30719328}, //
+
3812 {5.11304998, 3.30754995}, //
+
3813 {5.11307096, 3.30792785}, //
+
3814 {5.11313391, 3.3083055}, //
+
3815 {5.11323881, 3.3086834}, //
+
3816 {5.11338568, 3.30906105}, //
+
3817 {5.1135745, 3.30943894}, //
+
3818 {5.11380577, 3.3098166}, //
+
3819 {5.11407852, 3.31019449}, //
+
3820 {5.11439323, 3.31057215}, //
+
3821 {5.11474991, 3.31095004}, //
+
3822 {5.11510658, 3.31130672}, //
+
3823 {5.11542177, 3.31162167}, //
+
3824 {5.11569452, 3.31189442}, //
+
3825 {5.11592531, 3.31212521}, //
+
3826 {5.11611414, 3.31231427}, //
+
3827 {5.11626101, 3.31246114}, //
+
3828 {5.11636591, 3.31256604}, //
+
3829 {5.11642885, 3.31262898}, //
+
3830 {5.11644983, 3.31264997}, //
+
3831 {5.11659622, 3.31288028}, //
+
3832 {5.11703539, 3.31357098}, //
+
3833 {5.11776686, 3.3147223}, //
+
3834 {5.11879063, 3.31633401}, //
+
3835 {5.12010717, 3.31840611}, //
+
3836 {5.1217165, 3.32093883}, //
+
3837 {5.1236186, 3.32393217}, //
+
3838 {5.12830019, 3.33130002}, //
+
3839 {5.13104868, 3.33556986}, //
+
3840 {5.13400602, 3.34009004}, //
+
3841 {5.13717222, 3.34486103}, //
+
3842 {5.1405468, 3.3498826}, //
+
3843 {5.14413023, 3.35515499}, //
+
3844 {5.14792204, 3.36067772}, //
+
3845 {5.1519227, 3.36645126}, //
+
3846 {5.15613222, 3.37247539}, //
+
3847 {5.16055012, 3.37875009}, //
+
3848 {5.16500902, 3.3850975}, //
+
3849 {5.16934252, 3.39131784}, //
+
3850 {5.17355013, 3.39741111}, //
+
3851 {5.17763138, 3.40337706}, //
+
3852 {5.18158722, 3.40921617}, //
+
3853 {5.1854167, 3.41492772}, //
+
3854 {5.18912029, 3.42051244}, //
+
3855 {5.192698, 3.42596984}, //
+
3856 {5.19614983, 3.43129992}, //
+
3857 {5.19947577, 3.43640995}, //
+
3858 {5.20267582, 3.44118404}, //
+
3859 {5.20574999, 3.44562221}, //
+
3860 {5.20869827, 3.44972467}, //
+
3861 {5.2115202, 3.45349145}, //
+
3862 {5.21421671, 3.45692229}, //
+
3863 {5.21678686, 3.4600172}, //
+
3864 {5.21923161, 3.46277666}, //
+
3865 {5.22154999, 3.46519995}, //
+
3866 {5.22299814, 3.46792841}, //
+
3867 {5.22432041, 3.47006917}, //
+
3868 {5.2255168, 3.47162223}, //
+
3869 {5.22658682, 3.47258759}, //
+
3870 {5.22753143, 3.47296548}, //
+
3871 {5.22835016, 3.47275567}, //
+
3872 {5.22904253, 3.47195792}, //
+
3873 {5.22960949, 3.47057295}, //
+
3874 {5.23005009, 3.46860003}, //
+
3875 {5.23034382, 3.46623945}, //
+
3876 {5.2304697, 3.46366906}, //
+
3877 {5.23042774, 3.46088886}, //
+
3878 {5.23021793, 3.45789886}, //
+
3879 {5.22984028, 3.4546988}, //
+
3880 {5.2292943, 3.45128894}, //
+
3881 {5.22858095, 3.44766903}, //
+
3882 {5.22769928, 3.44383955}, //
+
3883 {5.22665024, 3.43980002}, //
+
3884 {5.22549582, 3.43557167}, //
+
3885 {5.22429943, 3.43117523}, //
+
3886 {5.22306108, 3.42661119}, //
+
3887 {5.22178078, 3.42187905}, //
+
3888 {5.22045851, 3.41697907}, //
+
3889 {5.21909428, 3.41191101}, //
+
3890 {5.21768808, 3.40667534}, //
+
3891 {5.21623993, 3.40127158}, //
+
3892 {5.21474981, 3.39569998}, //
+
3893 {5.21316624, 3.39015985}, //
+
3894 {5.21141434, 3.38482833}, //
+
3895 {5.20949459, 3.37970567}, //
+
3896 {5.207407, 3.37479138}, //
+
3897 {5.20515108, 3.37008572}, //
+
3898 {5.20272779, 3.3655889}, //
+
3899 {5.20013618, 3.36130071}, //
+
3900 {5.1973772, 3.35722089}, //
+
3901 {5.1944499, 3.35334992}, //
+
3902 {5.19235134, 3.34981298}, //
+
3903 {5.19058847, 3.34673524}, //
+
3904 {5.1891613, 3.34411669}, //
+
3905 {5.18806982, 3.34195733}, //
+
3906 {5.18731403, 3.34025741}, //
+
3907 {5.18689442, 3.33901668}, //
+
3908 {5.18681049, 3.33823514}, //
+
3909 {5.18706226, 3.33791304}, //
+
3910 {5.1876502, 3.33804989}, //
+
3911 {5.18850994, 3.33861613}, //
+
3912 {5.18957853, 3.3395586}, //
+
3913 {5.1908555, 3.34087777}, //
+
3914 {5.19234133, 3.3425734}, //
+
3915 {5.19403601, 3.34464574}, //
+
3916 {5.19593906, 3.34709454}, //
+
3917 {5.1980505, 3.3499198}, //
+
3918 {5.20037079, 3.35312152}, //
+
3919 {5.20289993, 3.35669994}, //
+
3920 {5.20560694, 3.3605926}, //
+
3921 {5.2084384, 3.36473703}, //
+
3922 {5.21139431, 3.36913323}, //
+
3923 {5.21447515, 3.37378144}, //
+
3924 {5.21768093, 3.37868142}, //
+
3925 {5.22101116, 3.38383341}, //
+
3926 {5.22446585, 3.38923693}, //
+
3927 {5.22804546, 3.39489269}, //
+
3928 {5.23175001, 3.40079999}, //
+
3929 {5.23555851, 3.40678096}, //
+
3930 {5.23945141, 3.41267896}, //
+
3931 {5.24342775, 3.41849446}, //
+
3932 {5.2474885, 3.42422724}, //
+
3933 {5.25163269, 3.42987704}, //
+
3934 {5.25586128, 3.43544436}, //
+
3935 {5.26017332, 3.44092894}, //
+
3936 {5.26456976, 3.44633079}, //
+
3937 {5.26905012, 3.4516499}, //
+
3938 {5.27195597, 3.45659256}, //
+
3939 {5.27465248, 3.46086478}, //
+
3940 {5.27713871, 3.46446657}, //
+
3941 {5.27941561, 3.46739817}, //
+
3942 {5.28148222, 3.46965933}, //
+
3943 {5.28219128, 3.47026682}, //
+
3944 {5.28311539, 3.47065687}, //
+
3945 {5.28449154, 3.47128654}, //
+
3946 {5.28595018, 3.47199988}, //
+
3947 {5.28664684, 3.47234368}, //
+
3948 {5.28642273, 3.47242045}, //
+
3949 {5.28498602, 3.47217035}, //
+
3950 {5.28333902, 3.47125006}, //
+
3951 {5.28219128, 3.47026682}, //
+
3952 {5.2818222, 3.47011113}, //
+
3953 {5.28061152, 3.46964931}, //
+
3954 {5.2794838, 3.46927166}, //
+
3955 {5.27843904, 3.46897769}, //
+
3956 {5.27747631, 3.46876788}, //
+
3957 {5.27659702, 3.468642}, //
+
3958 {5.27580023, 3.46860003}, //
+
3959 {5.2750864, 3.46788645}, //
+
3960 {5.27445698, 3.46725678}, //
+
3961 {5.273911, 3.46671104}, //
+
3962 {5.27344942, 3.46624947}, //
+
3963 {5.27307177, 3.46587157}, //
+
3964 {5.27277756, 3.46557784}, //
+
3965 {5.27256775, 3.46536779}, //
+
3966 {5.2723999, 3.46519995}, //
+
3967 {5.2716341, 3.465137}, //
+
3968 {5.27082491, 3.46494818}, //
+
3969 {5.26997232, 3.46463323}, //
+
3970 {5.26907635, 3.46419263}, //
+
3971 {5.26813745, 3.46362591}, //
+
3972 {5.26715565, 3.4629333}, //
+
3973 {5.26613045, 3.46211481}, //
+
3974 {5.26506186, 3.46117043}, //
+
3975 {5.26394987, 3.46009994}, //
+
3976 {5.2627964, 3.45895624}, //
+
3977 {5.26160192, 3.45776916}, //
+
3978 {5.26036644, 3.45653892}, //
+
3979 {5.2590909, 3.45526552}, //
+
3980 {5.25777388, 3.45394874}, //
+
3981 {5.2564168, 3.4525888}, //
+
3982 {5.25501871, 3.4511857}, //
+
3983 {5.25357962, 3.44973946}, //
+
3984 {5.25209999, 3.44825006}, //
+
3985 {5.25132322, 3.44677043}, //
+
3986 {5.25050497, 3.44533157}, //
+
3987 {5.24964428, 3.44393325}, //
+
3988 {5.2487421, 3.44257593}, //
+
3989 {5.24779749, 3.44125915}, //
+
3990 {5.24681091, 3.43998337}, //
+
3991 {5.24578285, 3.43874812}, //
+
3992 {5.24471235, 3.43755364}, //
+
3993 {5.24359989, 3.43639994}, //
+
3994 {5.24250841, 3.43532968}, //
+
3995 {5.24150133, 3.4343853}, //
+
3996 {5.2405777, 3.43356657}, //
+
3997 {5.23973846, 3.43287396}, //
+
3998 {5.23898268, 3.43230748}, //
+
3999 {5.23831129, 3.43186665}, //
+
4000 {5.23772335, 3.43155193}, //
+
4001 {5.23721981, 3.43136287}, //
+
4002 {5.23680019, 3.43129992}, //
+
4003 {5.23649502, 3.43142581}, //
+
4004 {5.23631334, 3.4318037}, //
+
4005 {5.23625565, 3.43243337}, //
+
4006 {5.23632097, 3.4333148}, //
+
4007 {5.2365098, 3.43444824}, //
+
4008 {5.23682213, 3.43583322}, //
+
4009 {5.23725796, 3.43747044}, //
+
4010 {5.23781729, 3.43935919}, //
+
4011 {5.23850012, 3.44149995}, //
+
4012 {5.23919249, 3.44591737}, //
+
4013 {5.23975945, 3.45012474}, //
+
4014 {5.24020004, 3.4541223}, //
+
4015 {5.24051476, 3.45790982}, //
+
4016 {5.24070358, 3.46148777}, //
+
4017 {5.24076653, 3.46485567}, //
+
4018 {5.24070358, 3.46801353}, //
+
4019 {5.24051476, 3.47096181}, //
+
4020 {5.24020004, 3.47370005}, //
+
4021 {5.23975992, 3.47622895}, //
+
4022 {5.23919487, 3.47854948}, //
+
4023 {5.23850536, 3.48066115}, //
+
4024 {5.2376914, 3.48256421}, //
+
4025 {5.23675251, 3.48425865}, //
+
4026 {5.23568869, 3.48574448}, //
+
4027 {5.23450041, 3.48702168}, //
+
4028 {5.23318768, 3.48809004}, //
+
4029 {5.23175001, 3.48895001}, //
+
4030 {5.23093128, 3.48951674}, //
+
4031 {5.22998714, 3.48970556}, //
+
4032 {5.22891665, 3.48951674}, //
+
4033 {5.22772026, 3.48895001}, //
+
4034 {5.22639799, 3.48800564}, //
+
4035 {5.22494984, 3.48668337}, //
+
4036 {5.2233758, 3.48498344}, //
+
4037 {5.22167587, 3.48290563}, //
+
4038 {5.21985006, 3.48044991}, //
+
4039 {5.21792984, 3.47777462}, //
+
4040 {5.21592426, 3.4750154}, //
+
4041 {5.21383333, 3.47217226}, //
+
4042 {5.21165752, 3.46924496}, //
+
4043 {5.20939636, 3.46623397}, //
+
4044 {5.20704985, 3.46313882}, //
+
4045 {5.20461845, 3.45995998}, //
+
4046 {5.20210171, 3.45669699}, //
+
4047 {5.19950008, 3.45335007}, //
+
4048 {5.19686604, 3.4499402}, //
+
4049 {5.19423103, 3.44648838}, //
+
4050 {5.1915946, 3.44299436}, //
+
4051 {5.18895674, 3.43945861}, //
+
4052 {5.18631792, 3.4358809}, //
+
4053 {5.18367767, 3.43226123}, //
+
4054 {5.18103647, 3.42859936}, //
+
4055 {5.17839384, 3.42489576}, //
+
4056 {5.17574978, 3.42114997}, //
+
4057 {5.17322159, 3.41746664}, //
+
4058 {5.17090321, 3.41394997}, //
+
4059 {5.16879463, 3.41059995}, //
+
4060 {5.16689587, 3.40741658}, //
+
4061 {5.16520691, 3.40440011}, //
+
4062 {5.16372776, 3.40155005}, //
+
4063 {5.16245842, 3.39886665}, //
+
4064 {5.16139936, 3.39634991}, //
+
4065 {5.16055012, 3.39400005}, //
+
4066 {5.15985727, 3.3926456}, //
+
4067 {5.15929079, 3.39158273}, //
+
4068 {5.15885019, 3.3908112}, //
+
4069 {5.158535, 3.39033079}, //
+
4070 {5.15834618, 3.39014196}, //
+
4071 {5.15828323, 3.39024448}, //
+
4072 {5.15834618, 3.39063835}, //
+
4073 {5.158535, 3.39132357}, //
+
4074 {5.15885019, 3.39229989}, //
+
4075 {5.15922737, 3.39355874}, //
+
4076 {5.15960312, 3.39506793}, //
+
4077 {5.15997791, 3.3968277}, //
+
4078 {5.16035128, 3.39883828}, //
+
4079 {5.16072369, 3.40109944}, //
+
4080 {5.16109467, 3.40361118}, //
+
4081 {5.16146421, 3.4063735}, //
+
4082 {5.16183281, 3.4093864}, //
+
4083 {5.16219997, 3.41265011}, //
+
4084 {5.16264057, 3.41606045}, //
+
4085 {5.16320753, 3.41951418}, //
+
4086 {5.1638999, 3.42301106}, //
+
4087 {5.16471863, 3.42655134}, //
+
4088 {5.16566277, 3.43013453}, //
+
4089 {5.16673326, 3.43376112}, //
+
4090 {5.16792965, 3.43743086}, //
+
4091 {5.16925192, 3.44114375}, //
+
4092 {5.17070007, 3.44490004}, //
+
4093 {5.17149687, 3.45161486}, //
+
4094 {5.17237663, 3.45820379}, //
+
4095 {5.17333889, 3.4646666}, //
+
4096 {5.17438412, 3.47100377}, //
+
4097 {5.17551184, 3.47721481}, //
+
4098 {5.17672205, 3.48329997}, //
+
4099 {5.17801523, 3.48925924}, //
+
4100 {5.17939138, 3.49509263}, //
+
4101 {5.18085003, 3.50079989}, //
+
4102 {5.1822772, 3.50622535}, //
+
4103 {5.18353653, 3.51119018}, //
+
4104 {5.18462801, 3.51569438}, //
+
4105 {5.18555117, 3.5197382}, //
+
4106 {5.18630695, 3.52332163}, //
+
4107 {5.18689442, 3.52644444}, //
+
4108 {5.18731403, 3.52910686}, //
+
4109 {5.18756628, 3.53130865}, //
+
4110 {5.1876502, 3.53305006}, //
+
4111 {5.18748283, 3.53518033}, //
+
4112 {5.18698072, 3.53705978}, //
+
4113 {5.18614435, 3.5386889}, //
+
4114 {5.18497324, 3.5400672}, //
+
4115 {5.18346786, 3.54119515}, //
+
4116 {5.18162775, 3.5420723}, //
+
4117 {5.1794529, 3.54269886}, //
+
4118 {5.17694378, 3.54307461}, //
+
4119 {5.17409992, 3.54320002}, //
+
4120 {5.1711092, 3.54311609}, //
+
4121 {5.16815948, 3.54286408}, //
+
4122 {5.16524982, 3.54244447}, //
+
4123 {5.16238165, 3.54185677}, //
+
4124 {5.15955353, 3.54110122}, //
+
4125 {5.15676689, 3.54017782}, //
+
4126 {5.15402031, 3.53908634}, //
+
4127 {5.15131474, 3.53782725}, //
+
4128 {5.14865017, 3.53640008}, //
+
4129 {5.14607906, 3.53481603}, //
+
4130 {5.14363289, 3.53306413}, //
+
4131 {5.14131117, 3.53114438}, //
+
4132 {5.13911438, 3.52905679}, //
+
4133 {5.13704205, 3.52680135}, //
+
4134 {5.13509464, 3.52437782}, //
+
4135 {5.13327169, 3.52178645}, //
+
4136 {5.13157368, 3.51902723}, //
+
4137 {5.13000011, 3.51609993}, //
+
4138 {5.12854147, 3.5131197}, //
+
4139 {5.12716532, 3.51022339}, //
+
4140 {5.12587214, 3.507411}, //
+
4141 {5.12466192, 3.50468278}, //
+
4142 {5.12353373, 3.50203824}, //
+
4143 {5.12248898, 3.49947786}, //
+
4144 {5.12152672, 3.49700117}, //
+
4145 {5.12064695, 3.49460864}, //
+
4146 {5.11985016, 3.49230003}, //
+
4147 {5.11909437, 3.48996043}, //
+
4148 {5.11833906, 3.48745298}, //
+
4149 {5.11758327, 3.48477769}, //
+
4150 {5.11682796, 3.48193455}, //
+
4151 {5.11607218, 3.47892356}, //
+
4152 {5.11531687, 3.47574449}, //
+
4153 {5.11456108, 3.47239757}, //
+
4154 {5.11380577, 3.4688828}, //
+
4155 {5.11304998, 3.46519995}, //
+
4156 {5.11229515, 3.46369934}, //
+
4157 {5.11154127, 3.46219754}, //
+
4158 {5.11078882, 3.46069455}, //
+
4159 {5.1100378, 3.45919013}, //
+
4160 {5.10928774, 3.45768452}, //
+
4161 {5.1085391, 3.45617771}, //
+
4162 {5.10779142, 3.45466971}, //
+
4163 {5.10704517, 3.45316052}, //
+
4164 {5.10629988, 3.4516499}, //
+
4165 {5.10556555, 3.44956112}, //
+
4166 {5.1048727, 3.44780564}, //
+
4167 {5.1042223, 3.44638324}, //
+
4168 {5.10361338, 3.44529438}, //
+
4169 {5.10304689, 3.44453883}, //
+
4170 {5.10252237, 3.44411659}, //
+
4171 {5.10203934, 3.44402766}, //
+
4172 {5.10159874, 3.44427228}, //
+
4173 {5.1012001, 3.44484997}, //
+
4174 {5.10082245, 3.44566798}, //
+
4175 {5.10044432, 3.44661045}, //
+
4176 {5.10006666, 3.44767785}, //
+
4177 {5.09968901, 3.44886971}, //
+
4178 {5.09931087, 3.45018649}, //
+
4179 {5.09893322, 3.45162773}, //
+
4180 {5.09855556, 3.4531939}, //
+
4181 {5.09817791, 3.45488453}, //
+
4182 {5.09779978, 3.45670009}, //
+
4183 {5.0974431, 3.45865178}, //
+
4184 {5.09712839, 3.4607296}, //
+
4185 {5.09685564, 3.4629333}, //
+
4186 {5.09662485, 3.46526289}, //
+
4187 {5.09643602, 3.4677186}, //
+
4188 {5.09628868, 3.47029996}, //
+
4189 {5.09618378, 3.47300744}, //
+
4190 {5.09612083, 3.47584081}, //
+
4191 {5.09609985, 3.47880006}, //
+
4192 {5.09464121, 3.48319626}, //
+
4193 {5.09326553, 3.48734069}, //
+
4194 {5.09197235, 3.49123335}, //
+
4195 {5.09076166, 3.494874}, //
+
4196 {5.08963394, 3.49826288}, //
+
4197 {5.08858871, 3.50139999}, //
+
4198 {5.08762646, 3.5042851}, //
+
4199 {5.08674669, 3.50691843}, //
+
4200 {5.0859499, 3.50929999}, //
+
4201 {5.08515263, 3.51159811}, //
+
4202 {5.08427095, 3.51398158}, //
+
4203 {5.08330536, 3.51644993}, //
+
4204 {5.08225632, 3.51900363}, //
+
4205 {5.08112288, 3.52164268}, //
+
4206 {5.07990551, 3.52436662}, //
+
4207 {5.07860422, 3.5271759}, //
+
4208 {5.07721901, 3.5300703}, //
+
4209 {5.07574987, 3.53305006}, //
+
4210 {5.07345247, 3.53803205}, //
+
4211 {5.07107115, 3.54393387}, //
+
4212 {5.06860542, 3.5507555}, //
+
4213 {5.06605625, 3.55849695}, //
+
4214 {5.06342268, 3.56715798}, //
+
4215 {5.06070566, 3.57673883}, //
+
4216 {5.05790424, 3.5872395}, //
+
4217 {5.0550189, 3.59865999}, //
+
4218 {5.05205011, 3.61100006}, //
+
4219 {5.05129433, 3.61468267}, //
+
4220 {5.05053902, 3.61819744}, //
+
4221 {5.04978323, 3.62154436}, //
+
4222 {5.04902792, 3.62472343}, //
+
4223 {5.04827213, 3.62773466}, //
+
4224 {5.04751682, 3.6305778}, //
+
4225 {5.04676104, 3.6332531}, //
+
4226 {5.04600573, 3.63576055}, //
+
4227 {5.04524994, 3.63809991}, //
+
4228 {5.04451561, 3.64028263}, //
+
4229 {5.04382277, 3.64229751}, //
+
4230 {5.04317236, 3.64414454}, //
+
4231 {5.04256344, 3.64582348}, //
+
4232 {5.04199696, 3.64733458}, //
+
4233 {5.04147243, 3.64867783}, //
+
4234 {5.0409894, 3.64985299}, //
+
4235 {5.0405488, 3.65086055}, //
+
4236 {5.04015017, 3.65170002}, //
+
4237 {5.03977203, 3.65239263}, //
+
4238 {5.03939438, 3.65295935}, //
+
4239 {5.03901672, 3.65339994}, //
+
4240 {5.03863907, 3.6537149}, //
+
4241 {5.03826094, 3.65390372}, //
+
4242 {5.03788328, 3.65396667}, //
+
4243 {5.03750563, 3.65390372}, //
+
4244 {5.03712797, 3.6537149}, //
+
4245 {5.03674984, 3.65339994}, //
+
4246 {5.03636169, 3.65300131}, //
+
4247 {5.03593016, 3.65256047}, //
+
4248 {5.0354557, 3.65207767}, //
+
4249 {5.03493786, 3.65155315}, //
+
4250 {5.03437662, 3.65098643}, //
+
4251 {5.03377199, 3.65037775}, //
+
4252 {5.03312492, 3.64972711}, //
+
4253 {5.03243399, 3.6490345}, //
+
4254 {5.03170013, 3.64829993}, //
+
4255 {5.03165817, 3.64688325}, //
+
4256 {5.03153229, 3.64563322}, //
+
4257 {5.031322, 3.64455009}, //
+
4258 {5.03130245, 3.64448833}, //
+
4259 {5.03027296, 3.64431667}, //
+
4260 {5.0290556, 3.64341664}, //
+
4261 {5.02775431, 3.64180565}, //
+
4262 {5.02636909, 3.63948345}, //
+
4263 {5.02489996, 3.63645005}, //
+
4264 {5.02337837, 3.63289332}, //
+
4265 {5.02181339, 3.62900066}, //
+
4266 {5.0202055, 3.62477231}, //
+
4267 {5.01855421, 3.62020802}, //
+
4268 {5.01686001, 3.61530805}, //
+
4269 {5.01512241, 3.61007214}, //
+
4270 {5.01334143, 3.60450053}, //
+
4271 {5.01151705, 3.59859324}, //
+
4272 {5.00965023, 3.59235001}, //
+
4273 {5.00778294, 3.58588696}, //
+
4274 {5.00595856, 3.57929826}, //
+
4275 {5.00417757, 3.57258344}, //
+
4276 {5.00243998, 3.56574249}, //
+
4277 {5.00074577, 3.5587759}, //
+
4278 {5.00046968, 3.55758953}, //
+
4279 {4.99983311, 3.55522346}, //
+
4280 {4.99720001, 3.54509449}, //
+
4281 {4.99456644, 3.53463078}, //
+
4282 {4.99193335, 3.5238328}, //
+
4283 {4.98929977, 3.51270008}, //
+
4284 {4.98672915, 3.50165057}, //
+
4285 {4.98428249, 3.49110246}, //
+
4286 {4.98196125, 3.4810555}, //
+
4287 {4.97976398, 3.47150993}, //
+
4288 {4.97769213, 3.46246552}, //
+
4289 {4.97574425, 3.45392227}, //
+
4290 {4.97392178, 3.44588017}, //
+
4291 {4.97303677, 3.44195175}, //
+
4292 {4.97253895, 3.44058824}, //
+
4293 {4.97178316, 3.43864441}, //
+
4294 {4.97102785, 3.43682528}, //
+
4295 {4.97027206, 3.43513083}, //
+
4296 {4.96951675, 3.43356109}, //
+
4297 {4.96876097, 3.43211603}, //
+
4298 {4.96800566, 3.43079567}, //
+
4299 {4.96724987, 3.4296}, //
+
4300 {4.96650505, 3.42849803}, //
+
4301 {4.9657588, 3.42743707}, //
+
4302 {4.96501112, 3.42641664}, //
+
4303 {4.96426249, 3.42543697}, //
+
4304 {4.96351242, 3.42449808}, //
+
4305 {4.96276093, 3.42359996}, //
+
4306 {4.96200848, 3.42274261}, //
+
4307 {4.96125507, 3.42192602}, //
+
4308 {4.96049976, 3.42114997}, //
+
4309 {4.95898867, 3.42035246}, //
+
4310 {4.95747757, 3.41947103}, //
+
4311 {4.95596647, 3.41850567}, //
+
4312 {4.95445538, 3.41745615}, //
+
4313 {4.95294428, 3.41632295}, //
+
4314 {4.95143318, 3.41510558}, //
+
4315 {4.94992208, 3.41380429}, //
+
4316 {4.94841099, 3.41241908}, //
+
4317 {4.94689989, 3.41094995}, //
+
4318 {4.94531584, 3.40932417}, //
+
4319 {4.94356441, 3.40744638}, //
+
4320 {4.94164467, 3.40531659}, //
+
4321 {4.9395566, 3.40293527}, //
+
4322 {4.93730116, 3.40030193}, //
+
4323 {4.93487787, 3.39741659}, //
+
4324 {4.93228626, 3.39427972}, //
+
4325 {4.92952728, 3.39089084}, //
+
4326 {4.92659998, 3.38724995}, //
+
4327 {4.92659998, 3.38724995}, //
+
4328 {4.92659998, 3.38724995}, //
+
4329 {4.92659998, 3.38724995}, //
+
4330 {4.92230797, 3.38224435}, //
+
4331 {4.91883755, 3.37820387}, //
+
4332 {4.91786909, 3.37776351}, //
+
4333 {4.91639996, 3.37704992}, //
+
4334 {4.91574955, 3.37717533}, //
+
4335 {4.91530848, 3.37755132}, //
+
4336 {4.91507769, 3.37817788}, //
+
4337 {4.91505671, 3.37905502}, //
+
4338 {4.91524553, 3.38018274}, //
+
4339 {4.91564465, 3.38156104}, //
+
4340 {4.91625309, 3.38319016}, //
+
4341 {4.91707182, 3.38506985}, //
+
4342 {4.91809988, 3.38720012}, //
+
4343 {4.91921234, 3.38950801}, //
+
4344 {4.92028284, 3.39189887}, //
+
4345 {4.9213109, 3.39437222}, //
+
4346 {4.92229748, 3.39692831}, //
+
4347 {4.92324209, 3.39956737}, //
+
4348 {4.92414427, 3.40228891}, //
+
4349 {4.92500496, 3.40509319}, //
+
4350 {4.92582369, 3.4079802}, //
+
4351 {4.92659998, 3.41094995}, //
+
4352 {4.92883444, 3.41704559}, //
+
4353 {4.93102694, 3.42326593}, //
+
4354 {4.93317795, 3.42961121}, //
+
4355 {4.93528652, 3.43608093}, //
+
4356 {4.93735313, 3.44267535}, //
+
4357 {4.93937778, 3.44939446}, //
+
4358 {4.94136047, 3.45623827}, //
+
4359 {4.9433012, 3.46320677}, //
+
4360 {4.94519997, 3.47029996}, //
+
4361 {4.94702578, 3.47735119}, //
+
4362 {4.9487257, 3.4841938}, //
+
4363 {4.95030022, 3.4908278}, //
+
4364 {4.95174837, 3.49725318}, //
+
4365 {4.95307016, 3.50346971}, //
+
4366 {4.95426655, 3.50947785}, //
+
4367 {4.95533705, 3.51527715}, //
+
4368 {4.95628166, 3.52086782}, //
+
4369 {4.95709991, 3.52624989}, //
+
4370 {4.95707893, 3.52978635}, //
+
4371 {4.95701599, 3.53286242}, //
+
4372 {4.95691109, 3.53547788}, //
+
4373 {4.95676422, 3.5376327}, //
+
4374 {4.95657539, 3.53932714}, //
+
4375 {4.9563446, 3.5405612}, //
+
4376 {4.95607138, 3.54133463}, //
+
4377 {4.95575666, 3.54164743}, //
+
4378 {4.95539999, 3.54150009}, //
+
4379 {4.95500135, 3.54099703}, //
+
4380 {4.95456028, 3.54024315}, //
+
4381 {4.95407772, 3.53923893}, //
+
4382 {4.9535532, 3.53798389}, //
+
4383 {4.95298624, 3.53647828}, //
+
4384 {4.9523778, 3.53472233}, //
+
4385 {4.95172739, 3.53271532}, //
+
4386 {4.95103455, 3.53045797}, //
+
4387 {4.95030022, 3.52795005}, //
+
4388 {4.94954443, 3.52525306}, //
+
4389 {4.94878912, 3.52242899}, //
+
4390 {4.94803333, 3.51947784}, //
+
4391 {4.94727755, 3.51639938}, //
+
4392 {4.94652224, 3.51319385}, //
+
4393 {4.94576645, 3.50986099}, //
+
4394 {4.94501114, 3.5064013}, //
+
4395 {4.94425535, 3.50281429}, //
+
4396 {4.94350004, 3.49909997}, //
+
4397 {4.9434166, 3.49865937}, //
+
4398 {4.94346619, 3.49941349}, //
+
4399 {4.94352913, 3.50097847}, //
+
4400 {4.94355011, 3.50250006}, //
+
4401 {4.94355011, 3.50419998}, //
+
4402 {4.94346619, 3.50217533}, //
+
4403 {4.94321442, 3.49985671}, //
+
4404 {4.94279432, 3.49724436}, //
+
4405 {4.94220686, 3.49433827}, //
+
4406 {4.94145107, 3.49113822}, //
+
4407 {4.94052792, 3.48764443}, //
+
4408 {4.93943644, 3.48385668}, //
+
4409 {4.93817711, 3.47977519}, //
+
4410 {4.93674994, 3.47539997}, //
+
4411 {4.93373871, 3.46007967}, //
+
4412 {4.93209743, 3.45227408}, //
+
4413 {4.93165016, 3.4516499}, //
+
4414 {4.93048525, 3.4501493}, //
+
4415 {4.92923498, 3.4486475}, //
+
4416 {4.92789984, 3.44714451}, //
+
4417 {4.92647982, 3.44564009}, //
+
4418 {4.92497396, 3.44413447}, //
+
4419 {4.92338324, 3.44262767}, //
+
4420 {4.92170763, 3.44111967}, //
+
4421 {4.91994619, 3.43961048}, //
+
4422 {4.91809988, 3.4381001}, //
+
4423 {4.91626358, 3.43663096}, //
+
4424 {4.91450977, 3.43524575}, //
+
4425 {4.91283894, 3.43394446}, //
+
4426 {4.91125059, 3.4327271}, //
+
4427 {4.90974522, 3.43159389}, //
+
4428 {4.90832233, 3.43054438}, //
+
4429 {4.90698195, 3.42957902}, //
+
4430 {4.90572453, 3.42869759}, //
+
4431 {4.90455008, 3.42790008}, //
+
4432 {4.90347958, 3.42719698}, //
+
4433 {4.90253496, 3.42657661}, //
+
4434 {4.90171671, 3.42603898}, //
+
4435 {4.90102386, 3.42558384}, //
+
4436 {4.90045738, 3.42521167}, //
+
4437 {4.90001678, 3.42492223}, //
+
4438 {4.89970207, 3.42471552}, //
+
4439 {4.89951277, 3.4245913}, //
+
4440 {4.89944983, 3.42455006}, //
+
4441 {4.89970207, 3.42563653}, //
+
4442 {4.90001678, 3.42699456}, //
+
4443 {4.90045738, 3.42889571}, //
+
4444 {4.90102386, 3.43134022}, //
+
4445 {4.90171671, 3.43432784}, //
+
4446 {4.90253496, 3.43785858}, //
+
4447 {4.90347958, 3.44193268}, //
+
4448 {4.90455008, 3.44654989}, //
+
4449 {4.90570354, 3.45153332}, //
+
4450 {4.90689802, 3.4566834}, //
+
4451 {4.90813351, 3.46199989}, //
+
4452 {4.90940905, 3.46748328}, //
+
4453 {4.91072607, 3.47313333}, //
+
4454 {4.91208315, 3.47895002}, //
+
4455 {4.91348171, 3.48493338}, //
+
4456 {4.91492033, 3.49108338}, //
+
4457 {4.91639996, 3.49740005}, //
+
4458 {4.91786861, 3.50374746}, //
+
4459 {4.91925192, 3.5099678}, //
+
4460 {4.92054987, 3.51606107}, //
+
4461 {4.92176294, 3.52202725}, //
+
4462 {4.92289066, 3.52786613}, //
+
4463 {4.92393351, 3.53357768}, //
+
4464 {4.92489052, 3.5391624}, //
+
4465 {4.92576313, 3.5446198}, //
+
4466 {4.92654991, 3.54994988}, //
+
4467 {4.92726374, 3.55497646}, //
+
4468 {4.92789316, 3.55950069}, //
+
4469 {4.92843866, 3.56352234}, //
+
4470 {4.92890072, 3.5670414}, //
+
4471 {4.92927837, 3.57005811}, //
+
4472 {4.92957211, 3.57257223}, //
+
4473 {4.92978191, 3.57458401}, //
+
4474 {4.9299078, 3.5760932}, //
+
4475 {4.92995024, 3.57710004}, //
+
4476 {4.9299078, 3.57798076}, //
+
4477 {4.92978191, 3.57911229}, //
+
4478 {4.92957211, 3.5804944}, //
+
4479 {4.92927837, 3.58212709}, //
+
4480 {4.92890072, 3.5840106}, //
+
4481 {4.92843866, 3.58614445}, //
+
4482 {4.92789316, 3.58852911}, //
+
4483 {4.92726374, 3.59116411}, //
+
4484 {4.92654991, 3.59404993}, //
+
4485 {4.92576313, 3.59711361}, //
+
4486 {4.92489052, 3.60025978}, //
+
4487 {4.92393351, 3.60348892}, //
+
4488 {4.92289066, 3.60680056}, //
+
4489 {4.92176294, 3.61019516}, //
+
4490 {4.92054987, 3.61367226}, //
+
4491 {4.91925192, 3.61723208}, //
+
4492 {4.91786861, 3.62087464}, //
+
4493 {4.91639996, 3.62459993}, //
+
4494 {4.91492033, 3.63202834}, //
+
4495 {4.91348171, 3.63924694}, //
+
4496 {4.91208315, 3.64625549}, //
+
4497 {4.91072607, 3.65305424}, //
+
4498 {4.90940905, 3.65964317}, //
+
4499 {4.90813351, 3.6660223}, //
+
4500 {4.90689802, 3.67219138}, //
+
4501 {4.90570354, 3.67815065}, //
+
4502 {4.90455008, 3.68390012}, //
+
4503 {4.90343761, 3.68932533}, //
+
4504 {4.90236712, 3.69429016}, //
+
4505 {4.90133905, 3.69879436}, //
+
4506 {4.90035248, 3.70283818}, //
+
4507 {4.89940786, 3.70642161}, //
+
4508 {4.89850569, 3.70954442}, //
+
4509 {4.897645, 3.71220684}, //
+
4510 {4.89682674, 3.71440864}, //
+
4511 {4.89604998, 3.71615005}, //
+
4512 {4.89435005, 3.71615005}, //
+
4513 {4.89395142, 3.71610808}, //
+
4514 {4.89351034, 3.7159822}, //
+
4515 {4.89302778, 3.71577215}, //
+
4516 {4.89250326, 3.71547842}, //
+
4517 {4.8919363, 3.71510053}, //
+
4518 {4.89132786, 3.71463895}, //
+
4519 {4.89067698, 3.71409321}, //
+
4520 {4.88998461, 3.71346354}, //
+
4521 {4.8892498, 3.71274996}, //
+
4522 {4.88852596, 3.71199441}, //
+
4523 {4.88784266, 3.71123886}, //
+
4524 {4.88719988, 3.71048331}, //
+
4525 {4.88659811, 3.70972776}, //
+
4526 {4.88603687, 3.70897222}, //
+
4527 {4.88551664, 3.70821667}, //
+
4528 {4.88503695, 3.70746112}, //
+
4529 {4.88459826, 3.70670557}, //
+
4530 {4.8842001, 3.70595002}, //
+
4531 {4.88384342, 3.70519447}, //
+
4532 {4.88352823, 3.70443892}, //
+
4533 {4.88325548, 3.70368338}, //
+
4534 {4.88302469, 3.70292783}, //
+
4535 {4.88283587, 3.70217228}, //
+
4536 {4.882689, 3.70141673}, //
+
4537 {4.8825841, 3.70066118}, //
+
4538 {4.88252115, 3.69990563}, //
+
4539 {4.88250017, 3.69915009}, //
+
4540 {4.88250017, 3.69844699}, //
+
4541 {4.88250017, 3.69782662}, //
+
4542 {4.88250017, 3.69617224}, //
+
4543 {4.88250017, 3.69596553}, //
+
4544 {4.88250017, 3.69580007}, //
+
4545 {4.87847042, 3.70113325}, //
+
4546 {4.87739992, 3.70254993}, //
+
4547 {4.87625599, 3.70408154}, //
+
4548 {4.87506914, 3.70565367}, //
+
4549 {4.8738389, 3.70726657}, //
+
4550 {4.87256527, 3.70892048}, //
+
4551 {4.87124872, 3.71061492}, //
+
4552 {4.86988878, 3.71234989}, //
+
4553 {4.86848593, 3.71412587}, //
+
4554 {4.86779594, 3.71499252}, //
+
4555 {4.86724997, 3.71609998}, //
+
4556 {4.86611652, 3.7183032}, //
+
4557 {4.86498356, 3.72037911}, //
+
4558 {4.86385012, 3.72232771}, //
+
4559 {4.86271667, 3.72414947}, //
+
4560 {4.86158323, 3.72584391}, //
+
4561 {4.86044979, 3.72741103}, //
+
4562 {4.85931683, 3.72885132}, //
+
4563 {4.85818338, 3.73016429}, //
+
4564 {4.85704994, 3.73134995}, //
+
4565 {4.85594797, 3.73221111}, //
+
4566 {4.85488701, 3.73252773}, //
+
4567 {4.85468578, 3.73248291}, //
+
4568 {4.8550024, 3.73202038}, //
+
4569 {4.85650539, 3.72986674}, //
+
4570 {4.85800982, 3.72775364}, //
+
4571 {4.85951567, 3.72568154}, //
+
4572 {4.861022, 3.72364998}, //
+
4573 {4.86253023, 3.72165918}, //
+
4574 {4.86403942, 3.71970916}, //
+
4575 {4.86555004, 3.7177999}, //
+
4576 {4.86703968, 3.71594262}, //
+
4577 {4.86779594, 3.71499252}, //
+
4578 {4.86836195, 3.71384454}, //
+
4579 {4.86943007, 3.71158886}, //
+
4580 {4.87045574, 3.70933342}, //
+
4581 {4.87143755, 3.70707774}, //
+
4582 {4.87237644, 3.7048223}, //
+
4583 {4.87327242, 3.70256662}, //
+
4584 {4.87412453, 3.70031118}, //
+
4585 {4.87493372, 3.69805551}, //
+
4586 {4.8757, 3.69580007}, //
+
4587 {4.87641335, 3.69433093}, //
+
4588 {4.87704325, 3.69294572}, //
+
4589 {4.87758875, 3.69164443}, //
+
4590 {4.8780508, 3.69042706}, //
+
4591 {4.87842846, 3.68929386}, //
+
4592 {4.87872219, 3.68824434}, //
+
4593 {4.878932, 3.68727899}, //
+
4594 {4.87905788, 3.68639755}, //
+
4595 {4.87909985, 3.68560004}, //
+
4596 {4.87983465, 3.68490744}, //
+
4597 {4.88052702, 3.68434072}, //
+
4598 {4.8811779, 3.68390012}, //
+
4599 {4.88178635, 3.68358517}, //
+
4600 {4.88235331, 3.68339634}, //
+
4601 {4.88287783, 3.6833334}, //
+
4602 {4.88336039, 3.68339634}, //
+
4603 {4.88380146, 3.68358517}, //
+
4604 {4.8842001, 3.68390012}, //
+
4605 {4.88457775, 3.68431973}, //
+
4606 {4.88495541, 3.68482351}, //
+
4607 {4.88533354, 3.68541121}, //
+
4608 {4.88571119, 3.6860826}, //
+
4609 {4.88608885, 3.68683839}, //
+
4610 {4.8864665, 3.68767786}, //
+
4611 {4.88684464, 3.68860126}, //
+
4612 {4.88722229, 3.68960857}, //
+
4613 {4.88759995, 3.69070005}, //
+
4614 {4.88795662, 3.6918118}, //
+
4615 {4.88827181, 3.69288015}, //
+
4616 {4.88854456, 3.69390559}, //
+
4617 {4.88877535, 3.69488764}, //
+
4618 {4.88896418, 3.69582653}, //
+
4619 {4.88911104, 3.69672227}, //
+
4620 {4.88921595, 3.69757462}, //
+
4621 {4.88927889, 3.69838405}, //
+
4622 {4.88929987, 3.69915009}, //
+
4623 {4.89004517, 3.70133281}, //
+
4624 {4.89079142, 3.70334744}, //
+
4625 {4.8915391, 3.70519447}, //
+
4626 {4.89228773, 3.70687342}, //
+
4627 {4.8930378, 3.70838451}, //
+
4628 {4.89378881, 3.70972776}, //
+
4629 {4.89454126, 3.71090317}, //
+
4630 {4.89529514, 3.71191049}, //
+
4631 {4.89604998, 3.71274996}, //
+
4632 {4.89607096, 3.71337962}, //
+
4633 {4.8961339, 3.71375751}, //
+
4634 {4.8962388, 3.7138834}, //
+
4635 {4.89638567, 3.71375751}, //
+
4636 {4.8965745, 3.71337962}, //
+
4637 {4.89680576, 3.71274996}, //
+
4638 {4.89707851, 3.71186852}, //
+
4639 {4.89739323, 3.71073508}, //
+
4640 {4.8977499, 3.70935011}, //
+
4641 {4.89812756, 3.70777655}, //
+
4642 {4.89850569, 3.70607829}, //
+
4643 {4.89888334, 3.70425558}, //
+
4644 {4.899261, 3.70230794}, //
+
4645 {4.89963865, 3.70023584}, //
+
4646 {4.90001678, 3.69803882}, //
+
4647 {4.90039444, 3.69571733}, //
+
4648 {4.90077209, 3.69327092}, //
+
4649 {4.90115023, 3.69070005}, //
+
4650 {4.90152788, 3.68804502}, //
+
4651 {4.90190554, 3.68534684}, //
+
4652 {4.90228319, 3.6826055}, //
+
4653 {4.90266132, 3.67982101}, //
+
4654 {4.90303898, 3.67699313}, //
+
4655 {4.90341663, 3.67412233}, //
+
4656 {4.90379429, 3.67120814}, //
+
4657 {4.90417242, 3.66825056}, //
+
4658 {4.90455008, 3.66525006}, //
+
4659 {4.90490675, 3.6622808}, //
+
4660 {4.90522146, 3.65939569}, //
+
4661 {4.90549421, 3.65659451}, //
+
4662 {4.90572548, 3.65387726}, //
+
4663 {4.90591431, 3.65124393}, //
+
4664 {4.90606117, 3.64869452}, //
+
4665 {4.90616608, 3.64622903}, //
+
4666 {4.90622902, 3.64384747}, //
+
4667 {4.90625, 3.64155006}, //
+
4668 {4.90633345, 3.63631415}, //
+
4669 {4.90658331, 3.63116241}, //
+
4670 {4.90700006, 3.62609434}, //
+
4671 {4.90758324, 3.62111044}, //
+
4672 {4.9083333, 3.61621046}, //
+
4673 {4.90924978, 3.61139441}, //
+
4674 {4.91033316, 3.60666227}, //
+
4675 {4.91158342, 3.6020143}, //
+
4676 {4.91300011, 3.59745002}, //
+
4677 {4.91518259, 3.5937252}, //
+
4678 {4.9171977, 3.59008455}, //
+
4679 {4.91904449, 3.58652782}, //
+
4680 {4.92072344, 3.58305502}, //
+
4681 {4.92223454, 3.57966614}, //
+
4682 {4.92357779, 3.57636118}, //
+
4683 {4.92475319, 3.57314014}, //
+
4684 {4.92576027, 3.57000303}, //
+
4685 {4.92659998, 3.56695008}, //
+
4686 {4.92649508, 3.5633297}, //
+
4687 {4.92618036, 3.56000185}, //
+
4688 {4.92565536, 3.55696678}, //
+
4689 {4.92492104, 3.55422401}, //
+
4690 {4.92397642, 3.55177402}, //
+
4691 {4.922822, 3.54961658}, //
+
4692 {4.92145824, 3.5477519}, //
+
4693 {4.91988373, 3.54617953}, //
+
4694 {4.91809988, 3.54489994}, //
+
4695 {4.91615868, 3.54374623}, //
+
4696 {4.91409016, 3.54255176}, //
+
4697 {4.91189432, 3.54131675}, //
+
4698 {4.90957165, 3.54004073}, //
+
4699 {4.90712166, 3.53872418}, //
+
4700 {4.90454435, 3.53736663}, //
+
4701 {4.90184021, 3.53596854}, //
+
4702 {4.89900875, 3.53452969}, //
+
4703 {4.89802265, 3.53403664}, //
+
4704 {4.88250017, 3.3973999}, //
+
4705 {4.8826251, 3.39750433}, //
+
4706 {4.88300133, 3.39781737}, //
+
4707 {4.88362789, 3.39833879}, //
+
4708 {4.8845048, 3.39906907}, //
+
4709 {4.88563251, 3.40000796}, //
+
4710 {4.88701105, 3.40115547}, //
+
4711 {4.88863993, 3.40251184}, //
+
4712 {4.89051962, 3.40407658}, //
+
4713 {4.89265013, 3.40584993}, //
+
4714 {4.89495802, 3.40780115}, //
+
4715 {4.89734888, 3.40987706}, //
+
4716 {4.89982224, 3.41207767}, //
+
4717 {4.90237856, 3.4144032}, //
+
4718 {4.90501738, 3.41685319}, //
+
4719 {4.90773869, 3.41942787}, //
+
4720 {4.91054344, 3.42212725}, //
+
4721 {4.91343021, 3.42495131}, //
+
4722 {4.91639996, 3.42790008}, //
+
4723 {4.91932774, 3.43100548}, //
+
4724 {4.9220891, 3.43427777}, //
+
4725 {4.92468357, 3.43771672}, //
+
4726 {4.92711115, 3.44132233}, //
+
4727 {4.92937231, 3.44509435}, //
+
4728 {4.93138218, 3.44887447}, //
+
4729 {4.93072796, 3.44576287}, //
+
4730 {4.92771673, 3.43245006}, //
+
4731 {4.92470551, 3.42014074}, //
+
4732 {4.92169428, 3.40883517}, //
+
4733 {4.91868353, 3.39853334}, //
+
4734 {4.9156723, 3.38923526}, //
+
4735 {4.91266108, 3.38094068}, //
+
4736 {4.90964985, 3.37365007}, //
+
4737 {4.90824366, 3.3708272}, //
+
4738 {4.90704775, 3.36838078}, //
+
4739 {4.90606117, 3.36631107}, //
+
4740 {4.9052844, 3.36461782}, //
+
4741 {4.90471792, 3.36330128}, //
+
4742 {4.90436125, 3.36236119}, //
+
4743 {4.90421438, 3.36179757}, //
+
4744 {4.90427732, 3.36161041}, //
+
4745 {4.90455008, 3.36179996}, //
+
4746 {4.90515804, 3.36244988}, //
+
4747 {4.90622663, 3.36364436}, //
+
4748 {4.90775537, 3.36538339}, //
+
4749 {4.90974522, 3.36766672}, //
+
4750 {4.91219521, 3.37049437}, //
+
4751 {4.91510534, 3.37386656}, //
+
4752 {4.91847658, 3.3777833}, //
+
4753 {4.91883755, 3.37820387}, //
+
4754 {4.9192543, 3.37839317}, //
+
4755 {4.92055559, 3.37893891}, //
+
4756 {4.92177296, 3.37940073}, //
+
4757 {4.9229064, 3.37977839}, //
+
4758 {4.92395544, 3.38007212}, //
+
4759 {4.92492104, 3.38028216}, //
+
4760 {4.92580223, 3.38040805}, //
+
4761 {4.92659998, 3.38045001}, //
+
4762 {4.92812109, 3.38051295}, //
+
4763 {4.92968416, 3.38070178}, //
+
4764 {4.93128872, 3.38101673}, //
+
4765 {4.93293571, 3.38145733}, //
+
4766 {4.93462467, 3.38202405}, //
+
4767 {4.93635559, 3.38271666}, //
+
4768 {4.93812847, 3.38353515}, //
+
4769 {4.93994331, 3.38447952}, //
+
4770 {4.94180012, 3.38555002}, //
+
4771 {4.94368839, 3.38674569}, //
+
4772 {4.94557524, 3.38806605}, //
+
4773 {4.94746113, 3.38951111}, //
+
4774 {4.94934559, 3.39108086}, //
+
4775 {4.9512291, 3.3927753}, //
+
4776 {4.95311117, 3.39459443}, //
+
4777 {4.95499182, 3.39653826}, //
+
4778 {4.95687151, 3.39860678}, //
+
4779 {4.95874977, 3.40079999}, //
+
4780 {4.96057606, 3.40318155}, //
+
4781 {4.96227598, 3.40581489}, //
+
4782 {4.96385002, 3.40869999}, //
+
4783 {4.96529818, 3.4118371}, //
+
4784 {4.96662045, 3.41522598}, //
+
4785 {4.96781683, 3.41886663}, //
+
4786 {4.96888685, 3.42275929}, //
+
4787 {4.96983147, 3.42690372}, //
+
4788 {4.9706502, 3.43129992}, //
+
4789 {4.97222328, 3.43833947}, //
+
4790 {4.97303677, 3.44195175}, //
+
4791 {4.97329426, 3.44265676}, //
+
4792 {4.97405005, 3.44484997}, //
+
4793 {4.97484684, 3.44732523}, //
+
4794 {4.9757266, 3.45021796}, //
+
4795 {4.97668886, 3.45352769}, //
+
4796 {4.97773409, 3.45725489}, //
+
4797 {4.97886181, 3.46139932}, //
+
4798 {4.98007202, 3.46596122}, //
+
4799 {4.9813652, 3.47094011}, //
+
4800 {4.98274136, 3.47633648}, //
+
4801 {4.9842, 3.48215008}, //
+
4802 {4.98499775, 3.48675609}, //
+
4803 {4.98587894, 3.49153018}, //
+
4804 {4.98684454, 3.49647212}, //
+
4805 {4.98789406, 3.50158215}, //
+
4806 {4.98902702, 3.50685978}, //
+
4807 {4.99024439, 3.5123055}, //
+
4808 {4.99154568, 3.51791906}, //
+
4809 {4.99293089, 3.52370071}, //
+
4810 {4.99440002, 3.52964997}, //
+
4811 {4.99592161, 3.53712034}, //
+
4812 {4.99748659, 3.54446483}, //
+
4813 {4.99909449, 3.55168343}, //
+
4814 {5.00046968, 3.55758953}, //
+
4815 {5.00246668, 3.56501794}, //
+
4816 {5.00509977, 3.57447767}, //
+
4817 {5.00773335, 3.58360314}, //
+
4818 {5.01036644, 3.59239388}, //
+
4819 {5.01300001, 3.60085011}, //
+
4820 {5.01553965, 3.6087203}, //
+
4821 {5.017869, 3.61575365}, //
+
4822 {5.01998901, 3.62194991}, //
+
4823 {5.02189875, 3.62730932}, //
+
4824 {5.02359867, 3.63183141}, //
+
4825 {5.02508879, 3.63551664}, //
+
4826 {5.02636909, 3.63836479}, //
+
4827 {5.02743959, 3.64037585}, //
+
4828 {5.02829981, 3.64155006}, //
+
4829 {5.02901363, 3.64163327}, //
+
4830 {5.02964306, 3.64188337}, //
+
4831 {5.03018904, 3.64229989}, //
+
4832 {5.03065062, 3.6428833}, //
+
4833 {5.03102827, 3.64363337}, //
+
4834 {5.03130245, 3.64448833}, //
+
4835 {5.0314064, 3.6445055}, //
+
4836 {5.03245544, 3.64398336}, //
+
4837 {5.03342104, 3.64275002}, //
+
4838 {5.03430223, 3.64080548}, //
+
4839 {5.03509998, 3.63814998}, //
+
4840 {5.03731346, 3.6328721}, //
+
4841 {5.03944302, 3.62759447}, //
+
4842 {5.04148912, 3.6223166}, //
+
4843 {5.04345083, 3.61703897}, //
+
4844 {5.04532862, 3.61176109}, //
+
4845 {5.047122, 3.60648322}, //
+
4846 {5.04883194, 3.60120559}, //
+
4847 {5.05045795, 3.59592772}, //
+
4848 {5.05200005, 3.59065008}, //
+
4849 {5.05351114, 3.58542466}, //
+
4850 {5.05502224, 3.58028221}, //
+
4851 {5.05653334, 3.57522225}, //
+
4852 {5.05804443, 3.57024503}, //
+
4853 {5.05955553, 3.56535053}, //
+
4854 {5.06106663, 3.56053901}, //
+
4855 {5.06257772, 3.55580997}, //
+
4856 {5.06408882, 3.55116367}, //
+
4857 {5.06559992, 3.5466001}, //
+
4858 {5.06639671, 3.54367232}, //
+
4859 {5.06727648, 3.5409112}, //
+
4860 {5.06823874, 3.53831673}, //
+
4861 {5.06922102, 3.53603506}, //
+
4862 {5.06839085, 3.53629518}, //
+
4863 {5.06729984, 3.53640008}, //
+
4864 {5.06610441, 3.53627467}, //
+
4865 {5.06478405, 3.53589869}, //
+
4866 {5.06333876, 3.53527212}, //
+
4867 {5.06176901, 3.53439498}, //
+
4868 {5.06007481, 3.53326726}, //
+
4869 {5.05825567, 3.53188896}, //
+
4870 {5.05631161, 3.53025985}, //
+
4871 {5.05424309, 3.52838016}, //
+
4872 {5.05205011, 3.52624989}, //
+
4873 {5.04980421, 3.5232172}, //
+
4874 {5.04760075, 3.52014136}, //
+
4875 {5.04543877, 3.51702213}, //
+
4876 {5.04331923, 3.51385999}, //
+
4877 {5.04124117, 3.51065421}, //
+
4878 {5.03920555, 3.50740552}, //
+
4879 {5.03721189, 3.50411367}, //
+
4880 {5.03525972, 3.50077844}, //
+
4881 {5.03334999, 3.49740005}, //
+
4882 {5.03149319, 3.49403214}, //
+
4883 {5.02967834, 3.49070621}, //
+
4884 {5.02790546, 3.48742223}, //
+
4885 {5.02617455, 3.48418021}, //
+
4886 {5.02448559, 3.48098016}, //
+
4887 {5.02283907, 3.4778223}, //
+
4888 {5.02123404, 3.47470617}, //
+
4889 {5.01967096, 3.471632}, //
+
4890 {5.01814985, 3.46860003}, //
+
4891 {5.01529551, 3.46575618}, //
+
4892 {5.01277733, 3.46324682}, //
+
4893 {5.01059437, 3.46107221}, //
+
4894 {5.00874758, 3.45923209}, //
+
4895 {5.00723648, 3.45772648}, //
+
4896 {5.00606108, 3.4565556}, //
+
4897 {5.00522137, 3.45571923}, //
+
4898 {5.00471783, 3.45521736}, //
+
4899 {5.00454998, 3.45504999}, //
+
4900 {5.00471783, 3.45534325}, //
+
4901 {5.00522137, 3.45622277}, //
+
4902 {5.00606108, 3.45768881}, //
+
4903 {5.00723648, 3.45974135}, //
+
4904 {5.00874758, 3.46238017}, //
+
4905 {5.01059437, 3.4656055}, //
+
4906 {5.01277733, 3.46941733}, //
+
4907 {5.01529551, 3.47381544}, //
+
4908 {5.01814985, 3.47880006}, //
+
4909 {5.02034283, 3.48486423}, //
+
4910 {5.02240944, 3.49101233}, //
+
4911 {5.02435017, 3.49724436}, //
+
4912 {5.02616501, 3.50356054}, //
+
4913 {5.02785349, 3.50996041}, //
+
4914 {5.02941656, 3.51644444}, //
+
4915 {5.03085375, 3.5230124}, //
+
4916 {5.03216505, 3.52966428}, //
+
4917 {5.03334999, 3.53640008}, //
+
4918 {5.03439951, 3.54291606}, //
+
4919 {5.0352807, 3.54888654}, //
+
4920 {5.03599453, 3.55431104}, //
+
4921 {5.03654003, 3.55919003}, //
+
4922 {5.03691769, 3.56352353}, //
+
4923 {5.03712797, 3.56731105}, //
+
4924 {5.03716993, 3.57055306}, //
+
4925 {5.03704405, 3.57324934}, //
+
4926 {5.03674984, 3.57540011}, //
+
4927 {5.03627777, 3.5768075}, //
+
4928 {5.03559446, 3.57725191}, //
+
4929 {5.03469992, 3.57673335}, //
+
4930 {5.03359461, 3.57525182}, //
+
4931 {5.03227758, 3.57280731}, //
+
4932 {5.0307498, 3.56940007}, //
+
4933 {5.02901125, 3.56502962}, //
+
4934 {5.02706099, 3.5596962}, //
+
4935 {5.02489996, 3.55340004}, //
+
4936 {5.0204196, 3.54318142}, //
+
4937 {5.01602364, 3.53212595}, //
+
4938 {5.01171112, 3.52023339}, //
+
4939 {5.00748253, 3.50750375}, //
+
4940 {5.00333834, 3.49393702}, //
+
4941 {4.99927759, 3.47953343}, //
+
4942 {4.99530125, 3.46429253}, //
+
4943 {4.99140882, 3.44821477}, //
+
4944 {4.98759985, 3.43129992}, //
+
4945 {4.98534393, 3.42161536}, //
+
4946 {4.98308659, 3.41213942}, //
+
4947 {4.98082781, 3.40287232}, //
+
4948 {4.97856808, 3.39381361}, //
+
4949 {4.97630692, 3.38496351}, //
+
4950 {4.97404432, 3.37632227}, //
+
4951 {4.97178078, 3.3678894}, //
+
4952 {4.96951628, 3.35966539}, //
+
4953 {4.96724987, 3.35165}, //
+
4954 {4.96503592, 3.34405255}, //
+
4955 {4.96290445, 3.33708215}, //
+
4956 {4.96085548, 3.33073878}, //
+
4957 {4.95888948, 3.32502294}, //
+
4958 {4.95700598, 3.31993389}, //
+
4959 {4.95520544, 3.31547213}, //
+
4960 {4.95348787, 3.31163764}, //
+
4961 {4.95185232, 3.30843019}, //
+
4962 {4.95030022, 3.30585003}, //
+
4963 {4.94804382, 3.30208325}, //
+
4964 {4.94578648, 3.29831672}, //
+
4965 {4.9435277, 3.29454994}, //
+
4966 {4.94126797, 3.29078341}, //
+
4967 {4.93900681, 3.28701663}, //
+
4968 {4.93674421, 3.28325009}, //
+
4969 {4.93448067, 3.27948332}, //
+
4970 {4.93221617, 3.27571678}, //
+
4971 {4.92995024, 3.27195001}, //
+
4972 {4.92702246, 3.26826668}, //
+
4973 {4.92426109, 3.26475}, //
+
4974 {4.92166662, 3.26139998}, //
+
4975 {4.91923904, 3.25821662}, //
+
4976 {4.91697788, 3.25519991}, //
+
4977 {4.91488314, 3.25235009}, //
+
4978 {4.91295576, 3.24966669}, //
+
4979 {4.91119432, 3.24714994}, //
+
4980 {4.90959978, 3.24480009}, //
+
4981 {4.90809917, 3.24262786}, //
+
4982 {4.90659761, 3.24062228}, //
+
4983 {4.90509462, 3.23878336}, //
+
4984 {4.9035902, 3.23711109}, //
+
4985 {4.90208435, 3.23560548}, //
+
4986 {4.90057755, 3.23426676}, //
+
4987 {4.89906979, 3.23309445}, //
+
4988 {4.8975606, 3.2320888}, //
+
4989 {4.89604998, 3.23125005}, //
+
4990 {4.8931222, 3.23120809}, //
+
4991 {4.89036131, 3.2310822}, //
+
4992 {4.88776684, 3.23087215}, //
+
4993 {4.88533878, 3.23057842}, //
+
4994 {4.88307762, 3.23020053}, //
+
4995 {4.88098335, 3.22973895}, //
+
4996 {4.8790555, 3.22919321}, //
+
4997 {4.87729454, 3.22856355}, //
+
4998 {4.8757, 3.22784996}, //
+
4999 {4.87428331, 3.22714686}, //
+
5000 {4.87303352, 3.2265265}, //
+
5001 {4.87195015, 3.22598886}, //
+
5002 {4.87103319, 3.22553396}, //
+
5003 {4.87028313, 3.22516179}, //
+
5004 {4.86969995, 3.22487211}, //
+
5005 {4.8692832, 3.2246654}, //
+
5006 {4.86903334, 3.22454143}, //
+
5007 {4.86894989, 3.22449994}, //
+
5008 {4.77059984, 3.29570007}, //
+
5009 {4.77512217, 3.29732585}, //
+
5010 {4.77964449, 3.29920363}, //
+
5011 {4.78416681, 3.30133343}, //
+
5012 {4.78868866, 3.30371475}, //
+
5013 {4.79321098, 3.30634809}, //
+
5014 {4.79773331, 3.30923343}, //
+
5015 {4.80225563, 3.3123703}, //
+
5016 {4.80677795, 3.31575918}, //
+
5017 {4.8112998, 3.31940007}, //
+
5018 {4.8157382, 3.32338643}, //
+
5019 {4.82000875, 3.32779002}, //
+
5020 {4.82411098, 3.33261108}, //
+
5021 {4.82804585, 3.33784938}, //
+
5022 {4.83181238, 3.34350491}, //
+
5023 {4.83541107, 3.34957767}, //
+
5024 {4.83884192, 3.3560679}, //
+
5025 {4.84210491, 3.36297536}, //
+
5026 {4.84520006, 3.37030005}, //
+
5027 {4.84603882, 3.37492657}, //
+
5028 {4.84704447, 3.3797617}, //
+
5029 {4.84821653, 3.38480544}, //
+
5030 {4.84955549, 3.39005804}, //
+
5031 {4.85106134, 3.39551902}, //
+
5032 {4.85273314, 3.40118885}, //
+
5033 {4.8545723, 3.4070673}, //
+
5034 {4.85657787, 3.41315436}, //
+
5035 {4.85874987, 3.41945004}, //
+
5036 {4.86099529, 3.42584991}, //
+
5037 {4.86319685, 3.43225002}, //
+
5038 {4.86535549, 3.43864989}, //
+
5039 {4.86747122, 3.44505}, //
+
5040 {4.86954308, 3.45145011}, //
+
5041 {4.87157202, 3.45784998}, //
+
5042 {4.87355804, 3.46425009}, //
+
5043 {4.87550068, 3.47064996}, //
+
5044 {4.87739992, 3.47705007}, //
+
5045 {4.87926722, 3.48335624}, //
+
5046 {4.88109159, 3.48945236}, //
+
5047 {4.8828721, 3.49533892}, //
+
5048 {4.8846097, 3.50101542}, //
+
5049 {4.88630438, 3.50648212}, //
+
5050 {4.88795567, 3.51173878}, //
+
5051 {4.88956356, 3.51678586}, //
+
5052 {4.89112854, 3.5216229}, //
+
5053 {4.89265013, 3.52624989}, //
+
5054 {4.8940773, 3.53052092}, //
+
5055 {4.89476871, 3.53259015}, //
+
5056 {4.89604998, 3.53305006}, //
+
5057 {4.89802265, 3.53403664}, //
+
5058 {4.89944983, 3.5466001}, //
+
5059 {4.8993659, 3.54634881}, //
+
5060 {4.89911413, 3.54559517}, //
+
5061 {4.89869452, 3.54433894}, //
+
5062 {4.89810658, 3.54258013}, //
+
5063 {4.89642763, 3.53755546}, //
+
5064 {4.89533663, 3.5342896}, //
+
5065 {4.89476871, 3.53259015}, //
+
5066 {4.89371061, 3.53221059}, //
+
5067 {4.89120293, 3.53120303}, //
+
5068 {4.88852787, 3.53002787}, //
+
5069 {4.88568449, 3.52868462}, //
+
5070 {4.88267326, 3.52717352}, //
+
5071 {4.87949467, 3.52549434}, //
+
5072 {4.87614775, 3.52364755}, //
+
5073 {4.8726325, 3.52163267}, //
+
5074 {4.86894989, 3.51944995}, //
+
5075 {4.86750174, 3.51807475}, //
+
5076 {4.86617947, 3.5169487}, //
+
5077 {4.86498356, 3.51607227}, //
+
5078 {4.86391306, 3.51544499}, //
+
5079 {4.86296844, 3.51506734}, //
+
5080 {4.86215019, 3.51493883}, //
+
5081 {4.86145735, 3.51505995}, //
+
5082 {4.86089087, 3.51543021}, //
+
5083 {4.86044979, 3.5160501}, //
+
5084 {4.86015606, 3.51686788}, //
+
5085 {4.86003017, 3.51781058}, //
+
5086 {4.86007214, 3.51887774}, //
+
5087 {4.86028194, 3.52006984}, //
+
5088 {4.86066008, 3.52138638}, //
+
5089 {4.86120558, 3.52282786}, //
+
5090 {4.86191893, 3.5243938}, //
+
5091 {4.8628006, 3.52608466}, //
+
5092 {4.86385012, 3.52789998}, //
+
5093 {4.86500359, 3.52980995}, //
+
5094 {4.86619806, 3.53176165}, //
+
5095 {4.86743355, 3.53375554}, //
+
5096 {4.86870909, 3.5357914}, //
+
5097 {4.87002611, 3.53786922}, //
+
5098 {4.87138319, 3.53998899}, //
+
5099 {4.87278128, 3.54215074}, //
+
5100 {4.87422037, 3.54435444}, //
+
5101 {4.8757, 3.5466001}, //
+
5102 {4.8772316, 3.55032468}, //
+
5103 {4.87880373, 3.55396533}, //
+
5104 {4.88041687, 3.5575223}, //
+
5105 {4.88207054, 3.5609951}, //
+
5106 {4.88376474, 3.56438398}, //
+
5107 {4.88549995, 3.56768894}, //
+
5108 {4.8872757, 3.57090998}, //
+
5109 {4.88909245, 3.57404685}, //
+
5110 {4.8909502, 3.57710004}, //
+
5111 {4.89277601, 3.58011174}, //
+
5112 {4.89447594, 3.58312464}, //
+
5113 {4.89604998, 3.58613896}, //
+
5114 {4.89749813, 3.58915424}, //
+
5115 {4.8988204, 3.59217095}, //
+
5116 {4.90001678, 3.59518886}, //
+
5117 {4.90108681, 3.59820795}, //
+
5118 {4.90203142, 3.60122848}, //
+
5119 {4.90285015, 3.60424995}, //
+
5120 {4.90354252, 3.60644317}, //
+
5121 {4.90410948, 3.60851169}, //
+
5122 {4.90455008, 3.61045551}, //
+
5123 {4.90486479, 3.61227465}, //
+
5124 {4.90505362, 3.61396909}, //
+
5125 {4.90511656, 3.61553884}, //
+
5126 {4.90505362, 3.61698389}, //
+
5127 {4.90486479, 3.61830425}, //
+
5128 {4.90455008, 3.61949992}, //
+
5129 {4.90415144, 3.62054944}, //
+
5130 {4.90371037, 3.62143087}, //
+
5131 {4.90322781, 3.62214446}, //
+
5132 {4.90270329, 3.6226902}, //
+
5133 {4.90213633, 3.62306786}, //
+
5134 {4.90152788, 3.62327766}, //
+
5135 {4.900877, 3.62331986}, //
+
5136 {4.90018463, 3.62319374}, //
+
5137 {4.89944983, 3.62290001}, //
+
5138 {4.89865303, 3.6225431}, //
+
5139 {4.89777327, 3.62222838}, //
+
5140 {4.89681101, 3.62195563}, //
+
5141 {4.89576626, 3.62172461}, //
+
5142 {4.89463806, 3.62153578}, //
+
5143 {4.89342785, 3.62138891}, //
+
5144 {4.89213467, 3.62128401}, //
+
5145 {4.89075851, 3.62122107}, //
+
5146 {4.88929987, 3.62120008}, //
+
5147 {4.88778877, 3.62044454}, //
+
5148 {4.88627768, 3.61968899}, //
+
5149 {4.88476658, 3.61893344}, //
+
5150 {4.88325548, 3.61817789}, //
+
5151 {4.88174438, 3.6174221}, //
+
5152 {4.88023329, 3.61666656}, //
+
5153 {4.87872219, 3.61591101}, //
+
5154 {4.87721109, 3.61515546}, //
+
5155 {4.8757, 3.61439991}, //
+
5156 {4.87428331, 3.61444187}, //
+
5157 {4.87303352, 3.614568}, //
+
5158 {4.87195015, 3.6147778}, //
+
5159 {4.87103319, 3.61507154}, //
+
5160 {4.87028313, 3.61544943}, //
+
5161 {4.86969995, 3.61591101}, //
+
5162 {4.8692832, 3.61645675}, //
+
5163 {4.86903334, 3.61708641}, //
+
5164 {4.86894989, 3.6178}, //
+
5165 {4.86894989, 3.62006664}, //
+
5166 {4.86894989, 3.62082219}, //
+
5167 {4.86894989, 3.62233329}, //
+
5168 {4.86894989, 3.62308884}, //
+
5169 {4.86894989, 3.62459993}, //
+
5170 {4.86966372, 3.62605858}, //
+
5171 {4.87029314, 3.62743449}, //
+
5172 {4.87083912, 3.62872767}, //
+
5173 {4.8713007, 3.62993836}, //
+
5174 {4.87167835, 3.63106608}, //
+
5175 {4.87197208, 3.63211107}, //
+
5176 {4.87218189, 3.63307357}, //
+
5177 {4.87230825, 3.63395309}, //
+
5178 {4.87235022, 3.63474989}, //
+
5179 {4.87228727, 3.63615608}, //
+
5180 {4.87209797, 3.63735247}, //
+
5181 {4.87178326, 3.6383388}, //
+
5182 {4.87134266, 3.63911533}, //
+
5183 {4.8707757, 3.63968205}, //
+
5184 {4.87008333, 3.64003897}, //
+
5185 {4.8692646, 3.64018583}, //
+
5186 {4.86832047, 3.64012289}, //
+
5187 {4.86724997, 3.6398499}, //
+
5188 {4.86611652, 3.63945127}, //
+
5189 {4.86498356, 3.63901043}, //
+
5190 {4.86385012, 3.63852787}, //
+
5191 {4.86271667, 3.63800311}, //
+
5192 {4.86158323, 3.63743639}, //
+
5193 {4.86044979, 3.63682771}, //
+
5194 {4.85931683, 3.63617706}, //
+
5195 {4.85818338, 3.63548446}, //
+
5196 {4.85704994, 3.63474989}, //
+
5197 {4.85594797, 3.63395309}, //
+
5198 {4.85488701, 3.63307357}, //
+
5199 {4.85386658, 3.63211107}, //
+
5200 {4.85288715, 3.63106608}, //
+
5201 {4.85194826, 3.62993836}, //
+
5202 {4.8510499, 3.62872767}, //
+
5203 {4.85019255, 3.62743449}, //
+
5204 {4.84937572, 3.62605858}, //
+
5205 {4.84859991, 3.62459993}, //
+
5206 {4.84771919, 3.62216616}, //
+
5207 {4.84658766, 3.61939764}, //
+
5208 {4.84520578, 3.61629438}, //
+
5209 {4.84357262, 3.61285686}, //
+
5210 {4.84168959, 3.60908461}, //
+
5211 {4.83955574, 3.60497785}, //
+
5212 {4.83717108, 3.60053635}, //
+
5213 {4.8345356, 3.59576058}, //
+
5214 {4.83164978, 3.59065008}, //
+
5215 {4.82929993, 3.58228755}, //
+
5216 {4.82678318, 3.57375622}, //
+
5217 {4.82410002, 3.56505561}, //
+
5218 {4.82124996, 3.55618572}, //
+
5219 {4.81823349, 3.5471468}, //
+
5220 {4.81505013, 3.53793883}, //
+
5221 {4.81169987, 3.52856183}, //
+
5222 {4.80818319, 3.51901555}, //
+
5223 {4.8045001, 3.50929999}, //
+
5224 {4.80073357, 3.49979377}, //
+
5225 {4.79696655, 3.49087524}, //
+
5226 {4.79320002, 3.48254442}, //
+
5227 {4.78943348, 3.4748013}, //
+
5228 {4.78566647, 3.46764565}, //
+
5229 {4.78189993, 3.46107769}, //
+
5230 {4.77813339, 3.45509744}, //
+
5231 {4.77436686, 3.44970489}, //
+
5232 {4.77059984, 3.44490004}, //
+
5233 {4.76756811, 3.44039869}, //
+
5234 {4.76449394, 3.43593955}, //
+
5235 {4.76137781, 3.43152213}, //
+
5236 {4.75821972, 3.42714691}, //
+
5237 {4.75501966, 3.42281365}, //
+
5238 {4.75177765, 3.41852212}, //
+
5239 {4.74849367, 3.41427279}, //
+
5240 {4.74516773, 3.41006541}, //
+
5241 {4.74179983, 3.4059}, //
+
5242 {4.7384944, 3.40179682}, //
+
5243 {4.73535538, 3.3977766}, //
+
5244 {4.73238325, 3.39383888}, //
+
5245 {4.72957754, 3.38998389}, //
+
5246 {4.72693872, 3.38621163}, //
+
5247 {4.7244668, 3.38252211}, //
+
5248 {4.72216129, 3.37891555}, //
+
5249 {4.7200222, 3.37539124}, //
+
5250 {4.71805, 3.37194991}, //
+
5251 {4.71627665, 3.36874938}, //
+
5252 {4.71471167, 3.36592531}, //
+
5253 {4.71335554, 3.36347771}, //
+
5254 {4.71306324, 3.36294985}, //
+
5255 {4.71199465, 3.36378384}, //
+
5256 {4.7104888, 3.36491179}, //
+
5257 {4.70881653, 3.36612225}, //
+
5258 {4.70697784, 3.36741543}, //
+
5259 {4.70497227, 3.36879134}, //
+
5260 {4.7027998, 3.37024999}, //
+
5261 {4.70050192, 3.37180305}, //
+
5262 {4.69811869, 3.37344003}, //
+
5263 {4.6956501, 3.37516117}, //
+
5264 {4.69309616, 3.376966}, //
+
5265 {4.69045734, 3.37885499}, //
+
5266 {4.68773317, 3.38082767}, //
+
5267 {4.68492413, 3.3828845}, //
+
5268 {4.68202972, 3.38502526}, //
+
5269 {4.67904997, 3.38724995}, //
+
5270 {4.67605925, 3.38875055}, //
+
5271 {4.67310905, 3.39025235}, //
+
5272 {4.67019987, 3.39175558}, //
+
5273 {4.6673317, 3.39325976}, //
+
5274 {4.66450357, 3.39476538}, //
+
5275 {4.66171646, 3.39627218}, //
+
5276 {4.65897036, 3.39778018}, //
+
5277 {4.65626478, 3.39928961}, //
+
5278 {4.65543509, 3.39976001}, //
+
5279 {4.64174986, 3.41094995}, //
+
5280 {4.64174986, 3.41094995}, //
+
5281 {4.64191771, 3.40932584}, //
+
5282 {4.64212275, 3.40794897}, //
+
5283 {4.64305687, 3.4072907}, //
+
5284 {4.64474583, 3.40616298}, //
+
5285 {4.64664459, 3.4049499}, //
+
5286 {4.64875317, 3.40365195}, //
+
5287 {4.65107155, 3.40226841}, //
+
5288 {4.65360022, 3.40079999}, //
+
5289 {4.65543509, 3.39976001}, //
+
5290 {4.71635008, 3.34995008}, //
+
5291 {4.71691656, 3.34787774}, //
+
5292 {4.71735764, 3.34626603}, //
+
5293 {4.71792412, 3.34419394}, //
+
5294 {4.72144985, 3.33130002}, //
+
5295 {4.7226038, 3.32707167}, //
+
5296 {4.72379827, 3.32267523}, //
+
5297 {4.72503328, 3.31811118}, //
+
5298 {4.7263093, 3.31337905}, //
+
5299 {4.72762585, 3.30847907}, //
+
5300 {4.7289834, 3.30341101}, //
+
5301 {4.73038149, 3.29817533}, //
+
5302 {4.73182058, 3.29277158}, //
+
5303 {4.73330021, 3.28719997}, //
+
5304 {4.73478937, 3.28153396}, //
+
5305 {4.73623562, 3.27582479}, //
+
5306 {4.73763895, 3.27007222}, //
+
5307 {4.73899889, 3.2642765}, //
+
5308 {4.74031544, 3.25843763}, //
+
5309 {4.74158907, 3.25255561}, //
+
5310 {4.74281931, 3.24663019}, //
+
5311 {4.74400616, 3.24066162}, //
+
5312 {4.74515009, 3.2346499}, //
+
5313 {4.74622059, 3.22875309}, //
+
5314 {4.74716473, 3.22310686}, //
+
5315 {4.74798346, 3.21771121}, //
+
5316 {4.74867582, 3.21256614}, //
+
5317 {4.74924278, 3.20767164}, //
+
5318 {4.74968338, 3.20302773}, //
+
5319 {4.74999809, 3.19863462}, //
+
5320 {4.75018692, 3.19449186}, //
+
5321 {4.75024986, 3.19059992}, //
+
5322 {4.74883318, 3.18896365}, //
+
5323 {4.74758339, 3.18707657}, //
+
5324 {4.74650002, 3.18493891}, //
+
5325 {4.74558353, 3.18255067}, //
+
5326 {4.74483347, 3.17991161}, //
+
5327 {4.74424982, 3.17702222}, //
+
5328 {4.74383354, 3.17388201}, //
+
5329 {4.7435832, 3.17049146}, //
+
5330 {4.74350023, 3.16685009}, //
+
5331 {4.74129629, 3.15588641}, //
+
5332 {4.73921871, 3.14408445}, //
+
5333 {4.73726654, 3.13144445}, //
+
5334 {4.73544073, 3.11796594}, //
+
5335 {4.73374081, 3.10364938}, //
+
5336 {4.73216677, 3.08849454}, //
+
5337 {4.73071861, 3.07250118}, //
+
5338 {4.72939634, 3.05566978}, //
+
5339 {4.72819996, 3.03800011}, //
+
5340 {4.72734928, 3.01954508}, //
+
5341 {4.7270422, 3.00033569}, //
+
5342 {4.72727776, 2.98037219}, //
+
5343 {4.72805691, 2.95965433}, //
+
5344 {4.72937918, 2.93818212}, //
+
5345 {4.73124456, 2.91595554}, //
+
5346 {4.73365307, 2.89297462}, //
+
5347 {4.73660517, 2.86923957}, //
+
5348 {4.74009991, 2.84474993}, //
+
5349 {4.74384546, 2.824826}, //
+
5350 {4.74754953, 2.80423141}, //
+
5351 {4.75121117, 2.78296661}, //
+
5352 {4.75483084, 2.76103139}, //
+
5353 {4.75840855, 2.73842597}, //
+
5354 {4.76194429, 2.71515012}, //
+
5355 {4.76543808, 2.69120359}, //
+
5356 {4.7688899, 2.66658711}, //
+
5357 {4.77229977, 2.64129996}, //
+
5358 {4.77560472, 2.61588693}, //
+
5359 {4.77874184, 2.59089255}, //
+
5360 {4.7817111, 2.5663166}, //
+
5361 {4.78451252, 2.54215932}, //
+
5362 {4.78714561, 2.51842046}, //
+
5363 {4.78961134, 2.49510002}, //
+
5364 {4.79190874, 2.47219825}, //
+
5365 {4.7940383, 2.4497149}, //
+
5366 {4.796, 2.42764997}, //
+
5367 {4.79770041, 2.4067266}, //
+
5368 {4.79902458, 2.38764501}, //
+
5369 {4.79997206, 2.37040567}, //
+
5370 {4.80054331, 2.35500813}, //
+
5371 {4.80073786, 2.34145236}, //
+
5372 {4.80055571, 2.32973886}, //
+
5373 {4.79999685, 2.31986737}, //
+
5374 {4.79906178, 2.31183767}, //
+
5375 {4.79775, 2.30565}, //
+
5376 {4.79615545, 2.29871488}, //
+
5377 {4.79439449, 2.29148698}, //
+
5378 {4.79246664, 2.28396678}, //
+
5379 {4.79037237, 2.2761538}, //
+
5380 {4.78811121, 2.26804805}, //
+
5381 {4.78568316, 2.25964999}, //
+
5382 {4.78308868, 2.25095916}, //
+
5383 {4.7803278, 2.24197602}, //
+
5384 {4.77740002, 2.23270011}, //
+
5385 {4.77443027, 2.2233932}, //
+
5386 {4.77154303, 2.21429515}, //
+
5387 {4.76873875, 2.20540547}, //
+
5388 {4.76601744, 2.19672465}, //
+
5389 {4.76337862, 2.18825245}, //
+
5390 {4.7608223, 2.17998886}, //
+
5391 {4.75834894, 2.17193389}, //
+
5392 {4.75595808, 2.16408777}, //
+
5393 {4.75365019, 2.15645003}, //
+
5394 {4.75285292, 2.15418386}, //
+
5395 {4.75197363, 2.15191913}, //
+
5396 {4.75101089, 2.14965558}, //
+
5397 {4.74996614, 2.14739323}, //
+
5398 {4.74883842, 2.14513206}, //
+
5399 {4.74762774, 2.14287233}, //
+
5400 {4.74633455, 2.14061356}, //
+
5401 {4.74495888, 2.13835621}, //
+
5402 {4.74350023, 2.13610005}, //
+
5403 {4.73918724, 2.12580609}, //
+
5404 {4.73529243, 2.11601353}, //
+
5405 {4.73181677, 2.10672212}, //
+
5406 {4.72875929, 2.0979321}, //
+
5407 {4.72612047, 2.08964324}, //
+
5408 {4.72389984, 2.08185554}, //
+
5409 {4.72209835, 2.07456923}, //
+
5410 {4.72071505, 2.06778383}, //
+
5411 {4.71974993, 2.06150007}, //
+
5412 {4.71962404, 2.05988455}, //
+
5413 {4.71924639, 2.05806041}, //
+
5414 {4.71861649, 2.05602789}, //
+
5415 {4.71773529, 2.05378652}, //
+
5416 {4.71660185, 2.05133653}, //
+
5417 {4.71521664, 2.04867768}, //
+
5418 {4.71357965, 2.04581046}, //
+
5419 {4.7116909, 2.04273462}, //
+
5420 {4.7095499, 2.03944993}, //
+
5421 {4.7072525, 2.03604007}, //
+
5422 {4.70487118, 2.03258824}, //
+
5423 {4.70240545, 2.02909446}, //
+
5424 {4.69985628, 2.02555871}, //
+
5425 {4.69722271, 2.02198076}, //
+
5426 {4.69450569, 2.01836109}, //
+
5427 {4.69170427, 2.01469946}, //
+
5428 {4.68881893, 2.01099563}, //
+
5429 {4.68585014, 2.00725007}, //
+
5430 {4.68285942, 2.00354576}, //
+
5431 {4.67990923, 1.99996603}, //
+
5432 {4.67700005, 1.9965111}, //
+
5433 {4.67413139, 1.99318087}, //
+
5434 {4.67130375, 1.98997533}, //
+
5435 {4.66851664, 1.98689449}, //
+
5436 {4.66577053, 1.98393822}, //
+
5437 {4.66306496, 1.98110676}, //
+
5438 {4.66039991, 1.97839999}, //
+
5439 {4.65791273, 1.97591293}, //
+
5440 {4.65089083, 1.96889079}, //
+
5441 {4.64913511, 1.96713519}, //
+
5442 {4.64869642, 1.96669626}, //
+
5443 {4.64855003, 1.96654999}, //
+
5444 {4.64865446, 1.96667528}, //
+
5445 {4.65115786, 1.96968269}, //
+
5446 {4.65366173, 1.97269011}, //
+
5447 {4.65522671, 1.9745698}, //
+
5448 {4.65700006, 1.97669995}, //
+
5449 {4.65886736, 1.979092}, //
+
5450 {4.66069126, 1.98173451}, //
+
5451 {4.66247225, 1.98462772}, //
+
5452 {4.66420984, 1.98777163}, //
+
5453 {4.66590452, 1.991166}, //
+
5454 {4.66755533, 1.99481106}, //
+
5455 {4.6691637, 1.99870682}, //
+
5456 {4.67072821, 2.00285316}, //
+
5457 {4.67224979, 2.00725007}, //
+
5458 {4.67371893, 2.01181412}, //
+
5459 {4.67510414, 2.01646233}, //
+
5460 {4.67640543, 2.02119446}, //
+
5461 {4.6776228, 2.02601051}, //
+
5462 {4.67875624, 2.03091049}, //
+
5463 {4.67980576, 2.03589439}, //
+
5464 {4.68077087, 2.04096246}, //
+
5465 {4.68165255, 2.04611421}, //
+
5466 {4.68244982, 2.05135012}, //
+
5467 {4.68322611, 2.05507469}, //
+
5468 {4.68404245, 2.05871534}, //
+
5469 {4.68489981, 2.06227231}, //
+
5470 {4.68579817, 2.06574512}, //
+
5471 {4.68673706, 2.069134}, //
+
5472 {4.68771648, 2.07243896}, //
+
5473 {4.68873692, 2.07565999}, //
+
5474 {4.68979836, 2.07879686}, //
+
5475 {4.69089985, 2.08185005}, //
+
5476 {4.69205427, 2.08481979}, //
+
5477 {4.69325066, 2.0877068}, //
+
5478 {4.694489, 2.09051108}, //
+
5479 {4.69576931, 2.09323263}, //
+
5480 {4.69709158, 2.09587169}, //
+
5481 {4.69845533, 2.09842777}, //
+
5482 {4.69986153, 2.10090113}, //
+
5483 {4.70130968, 2.10329199}, //
+
5484 {4.7027998, 2.10560012}, //
+
5485 {4.7043314, 2.10865307}, //
+
5486 {4.70590353, 2.11179018}, //
+
5487 {4.70751667, 2.11501122}, //
+
5488 {4.70917034, 2.11831594}, //
+
5489 {4.71086502, 2.12170506}, //
+
5490 {4.71260023, 2.12517786}, //
+
5491 {4.71437597, 2.12873459}, //
+
5492 {4.71619272, 2.13237524}, //
+
5493 {4.71805, 2.13610005}, //
+
5494 {4.71987534, 2.14007592}, //
+
5495 {4.72157335, 2.14447045}, //
+
5496 {4.72314453, 2.14928341}, //
+
5497 {4.72458839, 2.15451479}, //
+
5498 {4.72590494, 2.16016483}, //
+
5499 {4.72709465, 2.1662333}, //
+
5500 {4.72815657, 2.17272043}, //
+
5501 {4.72909212, 2.17962599}, //
+
5502 {4.72989988, 2.18694997}, //
+
5503 {4.73170567, 2.21532845}, //
+
5504 {4.73258877, 2.24621916}, //
+
5505 {4.73255014, 2.27962232}, //
+
5506 {4.73158884, 2.31553769}, //
+
5507 {4.72970533, 2.35396552}, //
+
5508 {4.7269001, 2.39490557}, //
+
5509 {4.72317219, 2.43835807}, //
+
5510 {4.71852207, 2.48432279}, //
+
5511 {4.71295023, 2.53279996}, //
+
5512 {4.70747328, 2.57452893}, //
+
5513 {4.70157719, 2.61533833}, //
+
5514 {4.695261, 2.65522766}, //
+
5515 {4.6885252, 2.69419742}, //
+
5516 {4.68136978, 2.73224759}, //
+
5517 {4.67379427, 2.76937771}, //
+
5518 {4.66579962, 2.80558825}, //
+
5519 {4.6573844, 2.84087896}, //
+
5520 {4.64855003, 2.8752501}, //
+
5521 {4.64850807, 2.87821984}, //
+
5522 {4.64838219, 2.88110685}, //
+
5523 {4.64817238, 2.88391113}, //
+
5524 {4.64787817, 2.88663268}, //
+
5525 {4.64750051, 2.8892715}, //
+
5526 {4.64703894, 2.89182782}, //
+
5527 {4.64649343, 2.89430118}, //
+
5528 {4.64586353, 2.89669204}, //
+
5529 {4.64515018, 2.89899993}, //
+
5530 {4.64228535, 2.91366911}, //
+
5531 {4.63971281, 2.92754316}, //
+
5532 {4.63743353, 2.94062233}, //
+
5533 {4.63544607, 2.95290613}, //
+
5534 {4.63375187, 2.96439505}, //
+
5535 {4.63234997, 2.97508883}, //
+
5536 {4.63124084, 2.98498774}, //
+
5537 {4.63042402, 2.99409127}, //
+
5538 {4.62989998, 3.00239992}, //
+
5539 {4.62958527, 3.01045752}, //
+
5540 {4.62939644, 3.01880741}, //
+
5541 {4.6293335, 3.02745008}, //
+
5542 {4.62939644, 3.0363853}, //
+
5543 {4.62958527, 3.04561305}, //
+
5544 {4.62989998, 3.05513334}, //
+
5545 {4.63034058, 3.06494641}, //
+
5546 {4.63090754, 3.07505178}, //
+
5547 {4.6315999, 3.08544993}, //
+
5548 {4.63231373, 3.09009814}, //
+
5549 {4.63294315, 3.09499812}, //
+
5550 {4.63348866, 3.10015011}, //
+
5551 {4.63395071, 3.10555363}, //
+
5552 {4.63432837, 3.11120915}, //
+
5553 {4.6346221, 3.11711669}, //
+
5554 {4.63483191, 3.123276}, //
+
5555 {4.63495779, 3.12968707}, //
+
5556 {4.63500023, 3.13634992}, //
+
5557 {4.63583899, 3.15183711}, //
+
5558 {4.63684464, 3.16665363}, //
+
5559 {4.6380167, 3.18079996}, //
+
5560 {4.63935566, 3.19427586}, //
+
5561 {4.64086103, 3.20708156}, //
+
5562 {4.6425333, 3.21921659}, //
+
5563 {4.64437199, 3.23068142}, //
+
5564 {4.64637756, 3.24147582}, //
+
5565 {4.64855003, 3.25160003}, //
+
5566 {4.65063906, 3.26131606}, //
+
5567 {4.65239429, 3.27086425}, //
+
5568 {4.6538167, 3.28024435}, //
+
5569 {4.65490532, 3.28945684}, //
+
5570 {4.65566111, 3.29850125}, //
+
5571 {4.65608311, 3.30737782}, //
+
5572 {4.65617228, 3.31608653}, //
+
5573 {4.65592766, 3.32462716}, //
+
5574 {4.65535021, 3.33299994}, //
+
5575 {4.65249586, 3.34869814}, //
+
5576 {4.64997721, 3.36263704}, //
+
5577 {4.64779425, 3.37481666}, //
+
5578 {4.64594746, 3.38523698}, //
+
5579 {4.64443636, 3.39389825}, //
+
5580 {4.64326096, 3.40079999}, //
+
5581 {4.64242172, 3.40594268}, //
+
5582 {4.64212275, 3.40794897}, //
+
5583 {4.64157772, 3.4083333}, //
+
5584 {4.64030886, 3.40929079}, //
+
5585 {4.63924932, 3.41016293}, //
+
5586 {4.63840008, 3.41094995}, //
+
5587 {4.63988876, 3.41848326}, //
+
5588 {4.64042664, 3.42120361}, //
+
5589 {4.641047, 3.42434263}, //
+
5590 {4.64174986, 3.42790008}, //
+
5591 {4.64248466, 3.43176055}, //
+
5592 {4.64317703, 3.43578649}, //
+
5593 {4.64382792, 3.43997788}, //
+
5594 {4.64443636, 3.44433451}, //
+
5595 {4.64500332, 3.44885683}, //
+
5596 {4.64552784, 3.45354438}, //
+
5597 {4.6460104, 3.45839763}, //
+
5598 {4.646451, 3.4634161}, //
+
5599 {4.64685011, 3.46860003}, //
+
5600 {4.64722776, 3.47383571}, //
+
5601 {4.64760542, 3.47898769}, //
+
5602 {4.64798355, 3.48405552}, //
+
5603 {4.64836121, 3.48903942}, //
+
5604 {4.64873886, 3.4939394}, //
+
5605 {4.64911652, 3.49875546}, //
+
5606 {4.64949465, 3.50348759}, //
+
5607 {4.6498723, 3.5081358}, //
+
5608 {4.65024996, 3.51270008}, //
+
5609 {4.65060663, 3.51709628}, //
+
5610 {4.65092182, 3.52124071}, //
+
5611 {4.65119457, 3.52513337}, //
+
5612 {4.65142536, 3.52877402}, //
+
5613 {4.65161419, 3.5321629}, //
+
5614 {4.65176105, 3.53530002}, //
+
5615 {4.65186596, 3.53818512}, //
+
5616 {4.6519289, 3.54081845}, //
+
5617 {4.65194988, 3.54320002}, //
+
5618 {4.65203333, 3.54571724}, //
+
5619 {4.65228319, 3.54873586}, //
+
5620 {4.65269995, 3.55225563}, //
+
5621 {4.65328312, 3.55627656}, //
+
5622 {4.65403318, 3.56079888}, //
+
5623 {4.65495014, 3.56582212}, //
+
5624 {4.65603352, 3.571347}, //
+
5625 {4.65728331, 3.57737279}, //
+
5626 {4.65869999, 3.58389997}, //
+
5627 {4.66018963, 3.59067774}, //
+
5628 {4.66163588, 3.5974555}, //
+
5629 {4.66303873, 3.60423326}, //
+
5630 {4.66439867, 3.61101103}, //
+
5631 {4.66571522, 3.61778879}, //
+
5632 {4.66698885, 3.62456656}, //
+
5633 {4.66821909, 3.63134456}, //
+
5634 {4.66940594, 3.63812232}, //
+
5635 {4.67054987, 3.64490008}, //
+
5636 {4.67166233, 3.65147901}, //
+
5637 {4.67273283, 3.65763831}, //
+
5638 {4.67376089, 3.66337776}, //
+
5639 {4.67474747, 3.6686976}, //
+
5640 {4.67569208, 3.67359757}, //
+
5641 {4.67659426, 3.6780777}, //
+
5642 {4.67745495, 3.6821382}, //
+
5643 {4.67827368, 3.68577909}, //
+
5644 {4.67904997, 3.68899989}, //
+
5645 {4.67982674, 3.69117212}, //
+
5646 {4.68064499, 3.6931777}, //
+
5647 {4.68150568, 3.69501662}, //
+
5648 {4.68240786, 3.69668889}, //
+
5649 {4.68335247, 3.6981945}, //
+
5650 {4.68433905, 3.69953322}, //
+
5651 {4.68536711, 3.70070553}, //
+
5652 {4.68643761, 3.70171118}, //
+
5653 {4.68755007, 3.70254993}, //
+
5654 {4.68870354, 3.70322156}, //
+
5655 {4.68989801, 3.70372534}, //
+
5656 {4.6911335, 3.70406103}, //
+
5657 {4.69240904, 3.70422912}, //
+
5658 {4.69372606, 3.70422912}, //
+
5659 {4.69508314, 3.70406103}, //
+
5660 {4.6964817, 3.70372534}, //
+
5661 {4.69792032, 3.70322156}, //
+
5662 {4.69939995, 3.70254993}, //
+
5663 {4.70015574, 3.70257092}, //
+
5664 {4.70091105, 3.70263386}, //
+
5665 {4.70166683, 3.702739}, //
+
5666 {4.70242214, 3.70288587}, //
+
5667 {4.70317793, 3.70307469}, //
+
5668 {4.70393324, 3.70330548}, //
+
5669 {4.70468903, 3.70357847}, //
+
5670 {4.70544434, 3.70389318}, //
+
5671 {4.70620012, 3.7042501}, //
+
5672 {4.70695496, 3.70464873}, //
+
5673 {4.70770884, 3.70508957}, //
+
5674 {4.70846128, 3.70557213}, //
+
5675 {4.7092123, 3.70609689}, //
+
5676 {4.70996237, 3.70666361}, //
+
5677 {4.710711, 3.70727229}, //
+
5678 {4.71145868, 3.70792294}, //
+
5679 {4.71220493, 3.70861554}, //
+
5680 {4.71295023, 3.70935011}, //
+
5681 {4.71368456, 3.70997953}, //
+
5682 {4.71437693, 3.71035743}, //
+
5683 {4.71502781, 3.71048331}, //
+
5684 {4.71563625, 3.71035743}, //
+
5685 {4.71620321, 3.70997953}, //
+
5686 {4.71672773, 3.70935011}, //
+
5687 {4.71721029, 3.70846844}, //
+
5688 {4.71765137, 3.70733523}, //
+
5689 {4.71805, 3.70595002}, //
+
5690 {4.71844864, 3.70437646}, //
+
5691 {4.71888971, 3.70267844}, //
+
5692 {4.71937227, 3.70085549}, //
+
5693 {4.71989679, 3.69890809}, //
+
5694 {4.72046375, 3.69683576}, //
+
5695 {4.7210722, 3.69463897}, //
+
5696 {4.7217226, 3.69231725}, //
+
5697 {4.72241545, 3.68987107}, //
+
5698 {4.72314978, 3.68729997}, //
+
5699 {4.72388411, 3.68466616}, //
+
5700 {4.72457457, 3.68203092}, //
+
5701 {4.72522211, 3.67939448}, //
+
5702 {4.72582674, 3.67675686}, //
+
5703 {4.7263875, 3.6741178}, //
+
5704 {4.72690535, 3.67147779}, //
+
5705 {4.72738028, 3.66883636}, //
+
5706 {4.72781181, 3.66619372}, //
+
5707 {4.72819996, 3.6635499}, //
+
5708 {4.72855663, 3.66093707}, //
+
5709 {4.72887182, 3.65836477}, //
+
5710 {4.72914457, 3.65583324}, //
+
5711 {4.72937536, 3.65334249}, //
+
5712 {4.72956419, 3.6508925}, //
+
5713 {4.72971106, 3.64848328}, //
+
5714 {4.72981596, 3.64611483}, //
+
5715 {4.7298789, 3.64378715}, //
+
5716 {4.72989988, 3.6415}, //
+
5717 {4.72989988, 3.63135004}, //
+
5718 {4.73027706, 3.63231301}, //
+
5719 {4.7314086, 3.63520193}, //
+
5720 {4.73329449, 3.64001656}, //
+
5721 {4.73593473, 3.64675736}, //
+
5722 {4.73932886, 3.65542412}, //
+
5723 {4.74347782, 3.66601658}, //
+
5724 {4.75403833, 3.69297957}, //
+
5725 {4.76044989, 3.70935011}, //
+
5726 {4.76120472, 3.71158457}, //
+
5727 {4.7619586, 3.71377707}, //
+
5728 {4.76271105, 3.71592784}, //
+
5729 {4.76346254, 3.71803641}, //
+
5730 {4.76421213, 3.72010303}, //
+
5731 {4.76496124, 3.72212768}, //
+
5732 {4.76570845, 3.7241106}, //
+
5733 {4.76645517, 3.72605133}, //
+
5734 {4.76719999, 3.7279501}, //
+
5735 {4.76795578, 3.72973394}, //
+
5736 {4.76871109, 3.73130798}, //
+
5737 {4.76946688, 3.73267221}, //
+
5738 {4.77022219, 3.73382664}, //
+
5739 {4.77097797, 3.73477101}, //
+
5740 {4.77173328, 3.73550558}, //
+
5741 {4.77248907, 3.73603034}, //
+
5742 {4.77324438, 3.73634505}, //
+
5743 {4.77400017, 3.73644996}, //
+
5744 {4.774755, 3.73642898}, //
+
5745 {4.7755084, 3.73636603}, //
+
5746 {4.77626133, 3.73626113}, //
+
5747 {4.77701235, 3.73611426}, //
+
5748 {4.77776241, 3.7359252}, //
+
5749 {4.77851105, 3.73569441}, //
+
5750 {4.77925873, 3.73542166}, //
+
5751 {4.78000498, 3.73510671}, //
+
5752 {4.7807498, 3.73475003}, //
+
5753 {4.7814846, 3.73436165}, //
+
5754 {4.78217697, 3.73393035}, //
+
5755 {4.78282785, 3.73345566}, //
+
5756 {4.7834363, 3.73293757}, //
+
5757 {4.78400326, 3.73237658}, //
+
5758 {4.78452778, 3.73177218}, //
+
5759 {4.78501034, 3.73112464}, //
+
5760 {4.78545141, 3.73043394}, //
+
5761 {4.78585005, 3.72970009}, //
+
5762 {4.7862277, 3.72896552}, //
+
5763 {4.78660536, 3.72827291}, //
+
5764 {4.78698349, 3.72762227}, //
+
5765 {4.78736115, 3.72701359}, //
+
5766 {4.7877388, 3.72644687}, //
+
5767 {4.78811646, 3.72592211}, //
+
5768 {4.78849459, 3.72543955}, //
+
5769 {4.78887224, 3.72499871}, //
+
5770 {4.7892499, 3.72460008}, //
+
5771 {4.78992176, 3.72392845}, //
+
5772 {4.79019451, 3.72365546}, //
+
5773 {4.7904253, 3.72342467}, //
+
5774 {4.79076099, 3.72308898}, //
+
5775 {4.7908659, 3.72298384}, //
+
5776 {4.79092884, 3.72292089}, //
+
5777 {4.79094982, 3.72289991}, //
+
5778 {4.79103327, 3.72292089}, //
+
5779 {4.79503345, 3.72392845}, //
+
5780 {4.79628325, 3.72424316}, //
+
5781 {4.79769993, 3.72460008}, //
+
5782 {4.79923153, 3.72501922}, //
+
5783 {4.80080366, 3.72552109}, //
+
5784 {4.8024168, 3.72610545}, //
+
5785 {4.80407047, 3.72677279}, //
+
5786 {4.80576468, 3.72752285}, //
+
5787 {4.80749989, 3.72835565}, //
+
5788 {4.8092761, 3.72927094}, //
+
5789 {4.81109238, 3.73026919}, //
+
5790 {4.81295013, 3.73134995}, //
+
5791 {4.81477594, 3.73246241}, //
+
5792 {4.81647587, 3.73353267}, //
+
5793 {4.81677341, 3.73372698}, //
+
5794 {4.81697941, 3.73381543}, //
+
5795 {4.82145023, 3.73644996}, //
+
5796 {4.82220554, 3.73649192}, //
+
5797 {4.82296133, 3.7366178}, //
+
5798 {4.82371664, 3.73682785}, //
+
5799 {4.82447243, 3.73712158}, //
+
5800 {4.82522774, 3.73749948}, //
+
5801 {4.82598352, 3.73796105}, //
+
5802 {4.82673883, 3.73850679}, //
+
5803 {4.82749462, 3.73913646}, //
+
5804 {4.82824993, 3.73985004}, //
+
5805 {4.83029795, 3.74052262}, //
+
5806 {4.83028698, 3.74052405}, //
+
5807 {4.82771492, 3.74039626}, //
+
5808 {4.82485008, 3.73985004}, //
+
5809 {4.82403135, 3.73907351}, //
+
5810 {4.82308722, 3.73825502}, //
+
5811 {4.82201672, 3.73739433}, //
+
5812 {4.82082033, 3.73649192}, //
+
5813 {4.81949806, 3.73554754}, //
+
5814 {4.81804991, 3.7345612}, //
+
5815 {4.81677341, 3.73372698}, //
+
5816 {4.8125906, 3.73193383}, //
+
5817 {4.80828333, 3.73080564}, //
+
5818 {4.8040576, 3.73043036}, //
+
5819 {4.79991293, 3.73080802}, //
+
5820 {4.7958498, 3.73193884}, //
+
5821 {4.79186869, 3.73382282}, //
+
5822 {4.78796864, 3.73645997}, //
+
5823 {4.78415012, 3.73985004}, //
+
5824 {4.78340483, 3.74054265}, //
+
5825 {4.78265858, 3.74110937}, //
+
5826 {4.7819109, 3.74154997}, //
+
5827 {4.78116226, 3.74186492}, //
+
5828 {4.7804122, 3.74205375}, //
+
5829 {4.77966118, 3.74211669}, //
+
5830 {4.77890873, 3.74205375}, //
+
5831 {4.77815485, 3.74186492}, //
+
5832 {4.77740002, 3.74154997}, //
+
5833 {4.77662325, 3.74115133}, //
+
5834 {4.775805, 3.7407105}, //
+
5835 {4.77494431, 3.7402277}, //
+
5836 {4.77404213, 3.73970318}, //
+
5837 {4.77309752, 3.73913646}, //
+
5838 {4.77211094, 3.73852777}, //
+
5839 {4.77108288, 3.73787713}, //
+
5840 {4.77001238, 3.73718452}, //
+
5841 {4.76889992, 3.73644996}, //
+
5842 {4.76779795, 3.73568392}, //
+
5843 {4.76673698, 3.73487473}, //
+
5844 {4.76571655, 3.73402214}, //
+
5845 {4.76473713, 3.73312664}, //
+
5846 {4.76379824, 3.73218775}, //
+
5847 {4.76289988, 3.73120546}, //
+
5848 {4.76204252, 3.73018026}, //
+
5849 {4.7612257, 3.72911167}, //
+
5850 {4.76044989, 3.72799993}, //
+
5851 {4.75969458, 3.7268877}, //
+
5852 {4.75893879, 3.7258172}, //
+
5853 {4.75818348, 3.7247889}, //
+
5854 {4.75742769, 3.72380257}, //
+
5855 {4.75667238, 3.72285795}, //
+
5856 {4.7559166, 3.72195554}, //
+
5857 {4.75516129, 3.72109509}, //
+
5858 {4.7544055, 3.72027659}, //
+
5859 {4.75365019, 3.71950006}, //
+
5860 {4.75293636, 3.71879697}, //
+
5861 {4.75230694, 3.7181766}, //
+
5862 {4.75176096, 3.71763897}, //
+
5863 {4.75129938, 3.71718407}, //
+
5864 {4.75092173, 3.71681166}, //
+
5865 {4.75062799, 3.71652222}, //
+
5866 {4.75041771, 3.71631551}, //
+
5867 {4.75029182, 3.71619129}, //
+
5868 {4.75024986, 3.71615005}, //
+
5869 {4.74004984, 3.71615005}, //
+
5870 {4.73777342, 3.71612906}, //
+
5871 {4.73545504, 3.71606612}, //
+
5872 {4.73309422, 3.71596122}, //
+
5873 {4.73069191, 3.71581411}, //
+
5874 {4.72824764, 3.71562529}, //
+
5875 {4.72576094, 3.7153945}, //
+
5876 {4.72323275, 3.71512151}, //
+
5877 {4.72066212, 3.7148068}, //
+
5878 {4.71805, 3.71444988}, //
+
5879 {4.71541595, 3.71409321}, //
+
5880 {4.71278095, 3.7137785}, //
+
5881 {4.71014452, 3.71350551}, //
+
5882 {4.70750666, 3.71327472}, //
+
5883 {4.70486784, 3.71308589}, //
+
5884 {4.70222759, 3.71293879}, //
+
5885 {4.69958639, 3.71283388}, //
+
5886 {4.69694376, 3.71277094}, //
+
5887 {4.69430017, 3.71274996}, //
+
5888 {4.68928289, 3.71274996}, //
+
5889 {4.68696117, 3.71274996}, //
+
5890 {4.6789217, 3.71274996}, //
+
5891 {4.67722368, 3.71274996}, //
+
5892 {4.67565012, 3.71274996}, //
+
5893 {4.6749258, 3.71205735}, //
+
5894 {4.6742425, 3.71149063}, //
+
5895 {4.6736002, 3.71105003}, //
+
5896 {4.67299795, 3.71073508}, //
+
5897 {4.67243719, 3.71054626}, //
+
5898 {4.67191648, 3.71048331}, //
+
5899 {4.67143726, 3.71054626}, //
+
5900 {4.6709981, 3.71073508}, //
+
5901 {4.67059994, 3.71105003}, //
+
5902 {4.67026424, 3.71140671}, //
+
5903 {4.67001247, 3.71172166}, //
+
5904 {4.66984463, 3.71199441}, //
+
5905 {4.6697607, 3.7122252}, //
+
5906 {4.6697607, 3.71241426}, //
+
5907 {4.66984463, 3.71256113}, //
+
5908 {4.67001247, 3.71266603}, //
+
5909 {4.67026424, 3.71272898}, //
+
5910 {4.67059994, 3.71274996}, //
+
5911 {4.67095661, 3.71279192}, //
+
5912 {4.6712718, 3.7129178}, //
+
5913 {4.67154455, 3.71312785}, //
+
5914 {4.67177534, 3.71342158}, //
+
5915 {4.67196417, 3.71379948}, //
+
5916 {4.67211103, 3.71426105}, //
+
5917 {4.67221594, 3.7148068}, //
+
5918 {4.67227888, 3.71543646}, //
+
5919 {4.67229986, 3.71615005}, //
+
5920 {4.67302418, 3.71619129}, //
+
5921 {4.67370749, 3.71631551}, //
+
5922 {4.67434978, 3.71652222}, //
+
5923 {4.67495203, 3.71681166}, //
+
5924 {4.67551279, 3.71718407}, //
+
5925 {4.6760335, 3.71763897}, //
+
5926 {4.6765132, 3.7181766}, //
+
5927 {4.67695189, 3.71879697}, //
+
5928 {4.67735004, 3.71950006}, //
+
5929 {4.67770672, 3.72025561}, //
+
5930 {4.67802143, 3.72101116}, //
+
5931 {4.67829466, 3.72176671}, //
+
5932 {4.67852545, 3.72252226}, //
+
5933 {4.67871428, 3.72327781}, //
+
5934 {4.67886114, 3.72403336}, //
+
5935 {4.67896605, 3.7247889}, //
+
5936 {4.67902899, 3.72554445}, //
+
5937 {4.67904997, 3.7263}, //
+
5938 {4.67896605, 3.72845125}, //
+
5939 {4.67871428, 3.73039389}, //
+
5940 {4.67829466, 3.73212767}, //
+
5941 {4.67770672, 3.73365307}, //
+
5942 {4.67695141, 3.73496985}, //
+
5943 {4.67602777, 3.73607779}, //
+
5944 {4.67493629, 3.7369771}, //
+
5945 {4.67367697, 3.7376678}, //
+
5946 {4.67224979, 3.73814988}, //
+
5947 {4.67062426, 3.73850679}, //
+
5948 {4.66874647, 3.73882151}, //
+
5949 {4.66661644, 3.7390945}, //
+
5950 {4.66423512, 3.73932528}, //
+
5951 {4.66160202, 3.73951411}, //
+
5952 {4.65871668, 3.73966122}, //
+
5953 {4.65557957, 3.73976612}, //
+
5954 {4.65219069, 3.73982906}, //
+
5955 {4.64855003, 3.73985004}, //
+
5956 {4.63840008, 3.73985004}, //
+
5957 {4.63764429, 3.73987103}, //
+
5958 {4.63688898, 3.73993397}, //
+
5959 {4.63613319, 3.74003887}, //
+
5960 {4.63537788, 3.74018574}, //
+
5961 {4.6346221, 3.7403748}, //
+
5962 {4.63386679, 3.74060559}, //
+
5963 {4.633111, 3.74087834}, //
+
5964 {4.63235569, 3.74119329}, //
+
5965 {4.6315999, 3.74154997}, //
+
5966 {4.63086557, 3.74192786}, //
+
5967 {4.63017273, 3.74230552}, //
+
5968 {4.62952232, 3.74268341}, //
+
5969 {4.6289134, 3.74306107}, //
+
5970 {4.62834692, 3.74343896}, //
+
5971 {4.6278224, 3.74381661}, //
+
5972 {4.62733936, 3.74419451}, //
+
5973 {4.62689877, 3.74457216}, //
+
5974 {4.62650013, 3.74495006}, //
+
5975 {4.62614298, 3.74534822}, //
+
5976 {4.62582827, 3.74578714}, //
+
5977 {4.62555552, 3.7462666}, //
+
5978 {4.62532473, 3.74678707}, //
+
5979 {4.6251359, 3.74734807}, //
+
5980 {4.62498903, 3.74795008}, //
+
5981 {4.62488413, 3.74859262}, //
+
5982 {4.62482119, 3.74927592}, //
+
5983 {4.62480021, 3.75}, //
+
5984 {4.62480021, 3.75142717}, //
+
5985 {4.62480021, 3.75207782}, //
+
5986 {4.62480021, 3.7526865}, //
+
5987 {4.62480021, 3.75577164}, //
+
5988 {4.62480021, 3.75604439}, //
+
5989 {4.62480021, 3.75627542}, //
+
5990 {4.62480021, 3.75679994}, //
+
5991 {4.62463284, 3.75671601}, //
+
5992 {4.61877775, 3.75377774}, //
+
5993 {4.6166029, 3.7526865}, //
+
5994 {4.61409378, 3.75142717}, //
+
5995 {4.61351728, 3.75113797}, //
+
5996 {4.61381292, 3.75098896}, //
+
5997 {4.61444092, 3.74991655}, //
+
5998 {4.61464977, 3.74830008}, //
+
5999 {4.61450291, 3.74623322}, //
+
6000 {4.61406231, 3.74378896}, //
+
6001 {4.61332798, 3.74096656}, //
+
6002 {4.61229944, 3.73776674}, //
+
6003 {4.61097717, 3.7341888}, //
+
6004 {4.60936117, 3.73023343}, //
+
6005 {4.60745144, 3.72589993}, //
+
6006 {4.6052475, 3.72118878}, //
+
6007 {4.60274982, 3.71609998}, //
+
6008 {4.60001183, 3.71091676}, //
+
6009 {4.59706354, 3.70589995}, //
+
6010 {4.59390545, 3.70105004}, //
+
6011 {4.59053755, 3.69636655}, //
+
6012 {4.58695984, 3.69184995}, //
+
6013 {4.58317232, 3.6875}, //
+
6014 {4.57917452, 3.68331671}, //
+
6015 {4.57496738, 3.67930007}, //
+
6016 {4.57054996, 3.67545009}, //
+
6017 {4.5660696, 3.67168331}, //
+
6018 {4.56167364, 3.66791677}, //
+
6019 {4.55736113, 3.66415}, //
+
6020 {4.55313253, 3.66038322}, //
+
6021 {4.54898834, 3.65661669}, //
+
6022 {4.5449276, 3.65284991}, //
+
6023 {4.54095125, 3.64908338}, //
+
6024 {4.53705883, 3.6453166}, //
+
6025 {4.53324986, 3.64155006}, //
+
6026 {4.52885389, 3.63852835}, //
+
6027 {4.52470922, 3.63550806}, //
+
6028 {4.5208168, 3.63248897}, //
+
6029 {4.51717615, 3.62947106}, //
+
6030 {4.51378727, 3.62645435}, //
+
6031 {4.51065016, 3.62343884}, //
+
6032 {4.50776482, 3.62042475}, //
+
6033 {4.50513124, 3.61741161}, //
+
6034 {4.50274992, 3.61439991}, //
+
6035 {4.50211954, 3.61229086}, //
+
6036 {4.50173998, 3.61047411}, //
+
6037 {4.50161123, 3.6089499}, //
+
6038 {4.50173283, 3.60771847}, //
+
6039 {4.50210476, 3.60677958}, //
+
6040 {4.50272799, 3.60613322}, //
+
6041 {4.50360107, 3.60577965}, //
+
6042 {4.50472546, 3.60571861}, //
+
6043 {4.50610018, 3.60595012}, //
+
6044 {4.5076952, 3.60639024}, //
+
6045 {4.50945807, 3.60695505}, //
+
6046 {4.51138878, 3.60764456}, //
+
6047 {4.51348782, 3.60845876}, //
+
6048 {4.51575422, 3.60939765}, //
+
6049 {4.51818895, 3.610461}, //
+
6050 {4.52079153, 3.61164927}, //
+
6051 {4.52356195, 3.61296225}, //
+
6052 {4.52650023, 3.61439991}, //
+
6053 {4.53106356, 3.61666608}, //
+
6054 {4.53570986, 3.61893082}, //
+
6055 {4.54043865, 3.62119436}, //
+
6056 {4.54525042, 3.62345672}, //
+
6057 {4.55014515, 3.62571788}, //
+
6058 {4.55512238, 3.62797785}, //
+
6059 {4.56018209, 3.63023639}, //
+
6060 {4.56532478, 3.63249373}, //
+
6061 {4.57054996, 3.63474989}, //
+
6062 {4.57496738, 3.63636541}, //
+
6063 {4.57917452, 3.63818955}, //
+
6064 {4.58317232, 3.64022231}, //
+
6065 {4.58695984, 3.64246368}, //
+
6066 {4.59053755, 3.64491367}, //
+
6067 {4.59390545, 3.64757228}, //
+
6068 {4.59706354, 3.6504395}, //
+
6069 {4.60001183, 3.65351534}, //
+
6070 {4.60274982, 3.65680003}, //
+
6071 {4.60533094, 3.66016793}, //
+
6072 {4.60778475, 3.66349387}, //
+
6073 {4.61011124, 3.66677785}, //
+
6074 {4.61231041, 3.67001987}, //
+
6075 {4.61438274, 3.67321968}, //
+
6076 {4.61632776, 3.67637777}, //
+
6077 {4.61814547, 3.6794939}, //
+
6078 {4.61983633, 3.68256783}, //
+
6079 {4.62139988, 3.68560004}, //
+
6080 {4.62375021, 3.68936658}, //
+
6081 {4.62626648, 3.69313335}, //
+
6082 {4.62895012, 3.69689989}, //
+
6083 {4.63180017, 3.70066667}, //
+
6084 {4.63481665, 3.70443344}, //
+
6085 {4.63800001, 3.70819998}, //
+
6086 {4.64134979, 3.71196675}, //
+
6087 {4.64486647, 3.71573329}, //
+
6088 {4.64855003, 3.71950006}, //
+
6089 {4.64930487, 3.72027659}, //
+
6090 {4.65005875, 3.72109509}, //
+
6091 {4.6508112, 3.72195554}, //
+
6092 {4.65156221, 3.72285795}, //
+
6093 {4.65231228, 3.72380257}, //
+
6094 {4.65306091, 3.7247889}, //
+
6095 {4.65380859, 3.7258172}, //
+
6096 {4.65455484, 3.7268877}, //
+
6097 {4.65530014, 3.72799993}, //
+
6098 {4.65607643, 3.72909069}, //
+
6099 {4.65689516, 3.73009634}, //
+
6100 {4.65775537, 3.73101664}, //
+
6101 {4.65865803, 3.73185182}, //
+
6102 {4.65960264, 3.73260188}, //
+
6103 {4.66058874, 3.73326659}, //
+
6104 {4.66161728, 3.73384619}, //
+
6105 {4.66268778, 3.73434067}, //
+
6106 {4.66379976, 3.73475003}, //
+
6107 {4.66489124, 3.73510671}, //
+
6108 {4.6658988, 3.73542166}, //
+
6109 {4.66682243, 3.73569441}, //
+
6110 {4.66766167, 3.7359252}, //
+
6111 {4.66841745, 3.73611426}, //
+
6112 {4.66908884, 3.73626113}, //
+
6113 {4.66967678, 3.73636603}, //
+
6114 {4.67018032, 3.73642898}, //
+
6115 {4.67059994, 3.73644996}, //
+
6116 {4.67097712, 3.73642898}, //
+
6117 {4.67135286, 3.73636603}, //
+
6118 {4.67172766, 3.73626113}, //
+
6119 {4.67210102, 3.73611426}, //
+
6120 {4.67247343, 3.7359252}, //
+
6121 {4.67284441, 3.73569441}, //
+
6122 {4.67321444, 3.73542166}, //
+
6123 {4.67358255, 3.73510671}, //
+
6124 {4.6739502, 3.73475003}, //
+
6125 {4.67430687, 3.73440361}, //
+
6126 {4.67489433, 3.73383331}, //
+
6127 {4.67512512, 3.7336092}, //
+
6128 {4.67531443, 3.73342586}, //
+
6129 {4.6755662, 3.73318148}, //
+
6130 {4.67565012, 3.73309994}, //
+
6131 {4.67565012, 3.73272228}, //
+
6132 {4.67565012, 3.73242831}, //
+
6133 {4.67565012, 3.72835684}, //
+
6134 {4.67565012, 3.7278111}, //
+
6135 {4.67565012, 3.72734928}, //
+
6136 {4.67565012, 3.7263}, //
+
6137 {4.67514896, 3.72554684}, //
+
6138 {4.67364502, 3.72328758}, //
+
6139 {4.67113876, 3.71952224}, //
+
6140 {4.66950989, 3.71707463}, //
+
6141 {4.66550016, 3.71105003}, //
+
6142 {4.66324377, 3.70759821}, //
+
6143 {4.66098642, 3.70402026}, //
+
6144 {4.65872765, 3.70031667}, //
+
6145 {4.65646791, 3.69648695}, //
+
6146 {4.65420675, 3.69253159}, //
+
6147 {4.65194464, 3.6884501}, //
+
6148 {4.64968109, 3.68424249}, //
+
6149 {4.64741611, 3.67990923}, //
+
6150 {4.64515018, 3.67545009}, //
+
6151 {4.64285183, 3.67092776}, //
+
6152 {4.6404686, 3.66640544}, //
+
6153 {4.63800001, 3.66188335}, //
+
6154 {4.63544607, 3.65736103}, //
+
6155 {4.63280725, 3.65283895}, //
+
6156 {4.63008356, 3.64831662}, //
+
6157 {4.62727404, 3.64379454}, //
+
6158 {4.62437963, 3.63927221}, //
+
6159 {4.62139988, 3.63474989}, //
+
6160 {4.61847305, 3.63035369}, //
+
6161 {4.6157136, 3.62620926}, //
+
6162 {4.61312199, 3.6223166}, //
+
6163 {4.6106987, 3.61867595}, //
+
6164 {4.60844326, 3.61528707}, //
+
6165 {4.60635567, 3.61214995}, //
+
6166 {4.60443592, 3.60926485}, //
+
6167 {4.60268402, 3.60663152}, //
+
6168 {4.60109997, 3.60424995}, //
+
6169 {4.59803629, 3.60192108}, //
+
6170 {4.59489012, 3.59946728}, //
+
6171 {4.59166098, 3.59688878}, //
+
6172 {4.58834934, 3.59418583}, //
+
6173 {4.58495474, 3.59135795}, //
+
6174 {4.58147764, 3.58840561}, //
+
6175 {4.57791805, 3.58532834}, //
+
6176 {4.57427549, 3.58212662}, //
+
6177 {4.57054996, 3.57879996}, //
+
6178 {4.56684637, 3.57536912}, //
+
6179 {4.56326866, 3.57185435}, //
+
6180 {4.55981684, 3.56825566}, //
+
6181 {4.5564909, 3.56457281}, //
+
6182 {4.55329084, 3.56080627}, //
+
6183 {4.55021667, 3.55695558}, //
+
6184 {4.54726839, 3.55302095}, //
+
6185 {4.54444647, 3.54900241}, //
+
6186 {4.54174995, 3.54489994}, //
+
6187 {4.53926277, 3.54086041}, //
+
6188 {4.53706837, 3.53703094}, //
+
6189 {4.53516674, 3.53341103}, //
+
6190 {4.53355742, 3.53000116}, //
+
6191 {4.53224087, 3.52680135}, //
+
6192 {4.53121662, 3.5238111}, //
+
6193 {4.53048563, 3.52103353}, //
+
6194 {4.53400564, 3.51796675}, //
+
6195 {4.53585243, 3.51635742}, //
+
6196 {4.53736353, 3.51504064}, //
+
6197 {4.54005003, 3.51270008}, //
+
6198 {4.54038334, 3.51177907}, //
+
6199 {4.54080009, 3.51062775}, //
+
6200 {4.54138327, 3.50901604}, //
+
6201 {4.54213333, 3.50694394}, //
+
6202 {4.54413319, 3.50141788}, //
+
6203 {4.54538345, 3.49796414}, //
+
6204 {4.54680014, 3.49405003}, //
+
6205 {4.54833126, 3.48975873}, //
+
6206 {4.54990387, 3.48517346}, //
+
6207 {4.55151653, 3.48029447}, //
+
6208 {4.5531702, 3.4751215}, //
+
6209 {4.55486488, 3.46965504}, //
+
6210 {4.55660009, 3.46389437}, //
+
6211 {4.55837584, 3.4578402}, //
+
6212 {4.56019258, 3.45149207}, //
+
6213 {4.56204987, 3.44484997}, //
+
6214 {4.56391811, 3.43809271}, //
+
6215 {4.56574392, 3.43137598}, //
+
6216 {4.56752777, 3.42470002}, //
+
6217 {4.56926966, 3.41806483}, //
+
6218 {4.57096958, 3.41147041}, //
+
6219 {4.57262754, 3.40491676}, //
+
6220 {4.57424402, 3.39840364}, //
+
6221 {4.57581806, 3.39193153}, //
+
6222 {4.57735014, 3.38549995}, //
+
6223 {4.57865143, 3.37920499}, //
+
6224 {4.57953262, 3.37311983}, //
+
6225 {4.57999468, 3.36724448}, //
+
6226 {4.58003664, 3.36157894}, //
+
6227 {4.57965851, 3.35612345}, //
+
6228 {4.57886124, 3.35087776}, //
+
6229 {4.57764387, 3.34584188}, //
+
6230 {4.57600689, 3.34101605}, //
+
6231 {4.57394981, 3.33640003}, //
+
6232 {4.57148457, 3.32847953}, //
+
6233 {4.56859922, 3.31980729}, //
+
6234 {4.56529427, 3.31038332}, //
+
6235 {4.56156969, 3.30020738}, //
+
6236 {4.5574255, 3.2892797}, //
+
6237 {4.55286121, 3.27760005}, //
+
6238 {4.54787731, 3.26516843}, //
+
6239 {4.54247332, 3.25198507}, //
+
6240 {4.53665018, 3.23804998}, //
+
6241 {4.52915859, 3.22285748}, //
+
6242 {4.5217514, 3.20741296}, //
+
6243 {4.51442766, 3.19171667}, //
+
6244 {4.50718832, 3.17576861}, //
+
6245 {4.5000329, 3.15956855}, //
+
6246 {4.49296093, 3.14311671}, //
+
6247 {4.48597336, 3.12641287}, //
+
6248 {4.47906971, 3.10945749}, //
+
6249 {4.47224998, 3.09225011}, //
+
6250 {4.46927023, 3.08396101}, //
+
6251 {4.46637583, 3.07567215}, //
+
6252 {4.46356678, 3.06738329}, //
+
6253 {4.46084261, 3.05909443}, //
+
6254 {4.45820379, 3.05080557}, //
+
6255 {4.45564985, 3.04251671}, //
+
6256 {4.45318127, 3.03422785}, //
+
6257 {4.45079803, 3.02593899}, //
+
6258 {4.44850016, 3.01764989}, //
+
6259 {4.44180536, 2.99508953}, //
+
6260 {4.43527794, 2.97411919}, //
+
6261 {4.42891645, 2.95473886}, //
+
6262 {4.42272234, 2.93694878}, //
+
6263 {4.41669464, 2.92074871}, //
+
6264 {4.41083336, 2.9061389}, //
+
6265 {4.40513897, 2.8931191}, //
+
6266 {4.399611, 2.88168955}, //
+
6267 {4.39424992, 2.87185001}, //
+
6268 {4.39188957, 2.8680203}, //
+
6269 {4.38931894, 2.86406493}, //
+
6270 {4.38653898, 2.85998344}, //
+
6271 {4.38354874, 2.85577583}, //
+
6272 {4.38034868, 2.85144258}, //
+
6273 {4.37693882, 2.84698343}, //
+
6274 {4.37331915, 2.84239817}, //
+
6275 {4.36948967, 2.83768702}, //
+
6276 {4.36544991, 2.83284998}, //
+
6277 {4.36128473, 2.82785559}, //
+
6278 {4.35707712, 2.82264996}, //
+
6279 {4.35282755, 2.81723332}, //
+
6280 {4.34853649, 2.81160545}, //
+
6281 {4.344203, 2.80576658}, //
+
6282 {4.33982801, 2.79971671}, //
+
6283 {4.33541059, 2.7934556}, //
+
6284 {4.33095121, 2.78698325}, //
+
6285 {4.32644987, 2.7802999}, //
+
6286 {4.31698513, 2.77071977}, //
+
6287 {4.30819082, 2.76155686}, //
+
6288 {4.30006647, 2.75281119}, //
+
6289 {4.29261303, 2.74448276}, //
+
6290 {4.28582954, 2.73657155}, //
+
6291 {4.27971649, 2.72907782}, //
+
6292 {4.27427387, 2.72200131}, //
+
6293 {4.26950169, 2.71534204}, //
+
6294 {4.26539993, 2.70910001}, //
+
6295 {4.26389933, 2.70751548}, //
+
6296 {4.26239777, 2.70576167}, //
+
6297 {4.2608943, 2.70383883}, //
+
6298 {4.25939035, 2.70174694}, //
+
6299 {4.2578845, 2.69948578}, //
+
6300 {4.2563777, 2.69705558}, //
+
6301 {4.25486994, 2.6944561}, //
+
6302 {4.25336027, 2.69168758}, //
+
6303 {4.25185013, 2.68875003}, //
+
6304 {4.24506378, 2.67719865}, //
+
6305 {4.23677111, 2.66514516}, //
+
6306 {4.2269721, 2.65258884}, //
+
6307 {4.21566725, 2.63953018}, //
+
6308 {4.20285606, 2.62596917}, //
+
6309 {4.18853903, 2.61190557}, //
+
6310 {4.17271566, 2.59733939}, //
+
6311 {4.15538597, 2.5822711}, //
+
6312 {4.13654995, 2.56669998}, //
+
6313 {4.12482882, 2.55929208}, //
+
6314 {4.11377716, 2.55213451}, //
+
6315 {4.10339451, 2.54522777}, //
+
6316 {4.09368086, 2.5385716}, //
+
6317 {4.08463621, 2.532166}, //
+
6318 {4.07626104, 2.52601123}, //
+
6319 {4.06855488, 2.52010679}, //
+
6320 {4.06151772, 2.51445317}, //
+
6321 {4.05515003, 2.50904989}, //
+
6322 {4.04916954, 2.50378275}, //
+
6323 {4.04327345, 2.49851418}, //
+
6324 {4.03746128, 2.49324441}, //
+
6325 {4.03173256, 2.48797345}, //
+
6326 {4.02608824, 2.4827013}, //
+
6327 {4.02052784, 2.47742772}, //
+
6328 {4.01505136, 2.47215319}, //
+
6329 {4.00965881, 2.46687722}, //
+
6330 {4.00435019, 2.46160007}, //
+
6331 {4.00035238, 2.45754004}, //
+
6332 {3.99589324, 2.45289373}, //
+
6333 {3.99097228, 2.44766116}, //
+
6334 {3.9855895, 2.44184208}, //
+
6335 {3.97974515, 2.43543649}, //
+
6336 {3.97343898, 2.42844439}, //
+
6337 {3.96667099, 2.42086601}, //
+
6338 {3.95944142, 2.41270113}, //
+
6339 {3.95175004, 2.40394998}, //
+
6340 {3.94390178, 2.39490557}, //
+
6341 {3.93617964, 2.38586116}, //
+
6342 {3.92858338, 2.37681675}, //
+
6343 {3.92111301, 2.36777234}, //
+
6344 {3.91376853, 2.35872769}, //
+
6345 {3.90654993, 2.34968328}, //
+
6346 {3.89945745, 2.34063888}, //
+
6347 {3.89249063, 2.33159447}, //
+
6348 {3.88564992, 2.32255006}, //
+
6349 {3.8791647, 2.31372523}, //
+
6350 {3.87326479, 2.30531788}, //
+
6351 {3.86794996, 2.29732776}, //
+
6352 {3.86322045, 2.28975487}, //
+
6353 {3.85907602, 2.28259945}, //
+
6354 {3.85551667, 2.27586102}, //
+
6355 {3.85254264, 2.26954007}, //
+
6356 {3.85015368, 2.26363635}, //
+
6357 {3.84835005, 2.2581501}, //
+
6358 {3.8468914, 2.25287294}, //
+
6359 {3.84551549, 2.24759698}, //
+
6360 {3.84422231, 2.24232221}, //
+
6361 {3.84301162, 2.23704886}, //
+
6362 {3.8418839, 2.23177648}, //
+
6363 {3.84083891, 2.22650552}, //
+
6364 {3.83987665, 2.22123575}, //
+
6365 {3.83899689, 2.21596718}, //
+
6366 {3.83820009, 2.21070004}, //
+
6367 {3.83748651, 2.2078352}, //
+
6368 {3.83685684, 2.2052629}, //
+
6369 {3.8363111, 2.20298338}, //
+
6370 {3.83584929, 2.2009964}, //
+
6371 {3.83547163, 2.19930196}, //
+
6372 {3.83517766, 2.19790006}, //
+
6373 {3.83496785, 2.1967907}, //
+
6374 {3.83484197, 2.19597411}, //
+
6375 {3.8348, 2.19545007}, //
+
6376 {3.8348, 2.21409988}, //
+
6377 {3.83496737, 2.21972275}, //
+
6378 {3.83546925, 2.22605801}, //
+
6379 {3.83630562, 2.23310566}, //
+
6380 {3.83747649, 2.24086547}, //
+
6381 {3.83898211, 2.24933767}, //
+
6382 {3.84082222, 2.25852227}, //
+
6383 {3.84299684, 2.26841903}, //
+
6384 {3.84550619, 2.27902842}, //
+
6385 {3.84835005, 2.29034996}, //
+
6386 {3.85169625, 2.30221605}, //
+
6387 {3.85571289, 2.31445861}, //
+
6388 {3.86039996, 2.32707787}, //
+
6389 {3.86575747, 2.34007335}, //
+
6390 {3.87178516, 2.35344577}, //
+
6391 {3.8784833, 2.36719441}, //
+
6392 {3.88585186, 2.38131976}, //
+
6393 {3.89389086, 2.39582157}, //
+
6394 {3.90260005, 2.41070008}, //
+
6395 {3.91202092, 2.42581916}, //
+
6396 {3.92219496, 2.44102097}, //
+
6397 {3.93312216, 2.4563055}, //
+
6398 {3.94480252, 2.47167277}, //
+
6399 {3.95723581, 2.48712277}, //
+
6400 {3.97042227, 2.50265551}, //
+
6401 {3.98436165, 2.51827097}, //
+
6402 {3.99905443, 2.53396916}, //
+
6403 {4.01450014, 2.54975009}, //
+
6404 {4.04090881, 2.57539082}, //
+
6405 {4.06740141, 2.60257959}, //
+
6406 {4.09397793, 2.63131666}, //
+
6407 {4.12063837, 2.66160178}, //
+
6408 {4.14738274, 2.69343519}, //
+
6409 {4.17421103, 2.72681665}, //
+
6410 {4.20112324, 2.76174641}, //
+
6411 {4.22811985, 2.79822397}, //
+
6412 {4.25519991, 2.83625007}, //
+
6413 {4.28107738, 2.8742857}, //
+
6414 {4.30444193, 2.91077089}, //
+
6415 {4.32529449, 2.94570565}, //
+
6416 {4.34363461, 2.9790895}, //
+
6417 {4.35946226, 3.01092291}, //
+
6418 {4.37277794, 3.04120564}, //
+
6419 {4.38358068, 3.06993771}, //
+
6420 {4.39187145, 3.09711909}, //
+
6421 {4.39764977, 3.12275004}, //
+
6422 {4.40129137, 3.15171862}, //
+
6423 {4.40468216, 3.18135738}, //
+
6424 {4.40782213, 3.21166658}, //
+
6425 {4.41071177, 3.24264622}, //
+
6426 {4.41335058, 3.27429628}, //
+
6427 {4.41573906, 3.30661678}, //
+
6428 {4.41787672, 3.33960748}, //
+
6429 {4.41976357, 3.3732686}, //
+
6430 {4.42140007, 3.40759993}, //
+
6431 {4.42222881, 3.43484998}, //
+
6432 {4.42322731, 3.46084452}, //
+
6433 {4.42439461, 3.48558331}, //
+
6434 {4.42573071, 3.50906658}, //
+
6435 {4.42723656, 3.53129435}, //
+
6436 {4.42891121, 3.5522666}, //
+
6437 {4.43075514, 3.57198334}, //
+
6438 {4.43276787, 3.59044433}, //
+
6439 {4.43494987, 3.60765004}, //
+
6440 {4.43655491, 3.60674763}, //
+
6441 {4.43836975, 3.60555124}, //
+
6442 {4.4403944, 3.60406113}, //
+
6443 {4.44262886, 3.60227728}, //
+
6444 {4.4450736, 3.60019946}, //
+
6445 {4.44772768, 3.59782767}, //
+
6446 {4.45059204, 3.59516239}, //
+
6447 {4.45366621, 3.59220314}, //
+
6448 {4.45695019, 3.58894992}, //
+
6449 {4.46041155, 3.58551908}, //
+
6450 {4.46399689, 3.58200431}, //
+
6451 {4.46770573, 3.57840562}, //
+
6452 {4.47153759, 3.57472277}, //
+
6453 {4.47549343, 3.57095623}, //
+
6454 {4.4795723, 3.56710553}, //
+
6455 {4.48377466, 3.56317091}, //
+
6456 {4.48810053, 3.55915236}, //
+
6457 {4.4925499, 3.5550499}, //
+
6458 {4.4969883, 3.55098939}, //
+
6459 {4.50125885, 3.54709697}, //
+
6460 {4.50536108, 3.54337215}, //
+
6461 {4.50929546, 3.53981543}, //
+
6462 {4.51306248, 3.53642654}, //
+
6463 {4.51310968, 3.53638411}, //
+
6464 {4.51510239, 3.53429866}, //
+
6465 {4.51742268, 3.53190804}, //
+
6466 {4.51970005, 3.52959991}, //
+
6467 {4.52184057, 3.52742839}, //
+
6468 {4.5237298, 3.52542472}, //
+
6469 {4.52536678, 3.5235889}, //
+
6470 {4.526752, 3.52192092}, //
+
6471 {4.52788496, 3.52042103}, //
+
6472 {4.52876663, 3.51908898}, //
+
6473 {4.52939653, 3.51792479}, //
+
6474 {4.52977419, 3.51692843}, //
+
6475 {4.52990007, 3.51609993}, //
+
6476 {4.53004646, 3.51846051}, //
+
6477 {4.53048515, 3.5210309}, //
+
6478 {4.53048563, 3.52103353}, //
+
6479 {4.5293045, 3.52206302}, //
+
6480 {4.52645016, 3.52454996}, //
+
6481 {4.52335501, 3.52726722}, //
+
6482 {4.52009201, 3.53015256}, //
+
6483 {4.51666117, 3.53320551}, //
+
6484 {4.51310968, 3.53638411}, //
+
6485 {4.5127387, 3.53677225}, //
+
6486 {4.51033211, 3.53932834}, //
+
6487 {4.50788212, 3.54196739}, //
+
6488 {4.50538874, 3.54468894}, //
+
6489 {4.50285244, 3.54749322}, //
+
6490 {4.50027275, 3.55038023}, //
+
6491 {4.49765015, 3.55334997}, //
+
6492 {4.49507904, 3.55628777}, //
+
6493 {4.49263287, 3.55905628}, //
+
6494 {4.49031115, 3.56165552}, //
+
6495 {4.48811436, 3.56408572}, //
+
6496 {4.48604202, 3.56634688}, //
+
6497 {4.48409462, 3.56843901}, //
+
6498 {4.48227167, 3.57036161}, //
+
6499 {4.48057365, 3.57211542}, //
+
6500 {4.47900009, 3.57369995}, //
+
6501 {4.47817087, 3.57451797}, //
+
6502 {4.47717285, 3.57546043}, //
+
6503 {4.47600555, 3.57652783}, //
+
6504 {4.47466898, 3.57771969}, //
+
6505 {4.4731636, 3.57903647}, //
+
6506 {4.47148895, 3.58047771}, //
+
6507 {4.46964502, 3.58204389}, //
+
6508 {4.46763229, 3.58373451}, //
+
6509 {4.46544981, 3.58555007}, //
+
6510 {4.46317291, 3.58745933}, //
+
6511 {4.46085262, 3.58940935}, //
+
6512 {4.45848894, 3.59139991}, //
+
6513 {4.45608187, 3.59343147}, //
+
6514 {4.45363188, 3.59550381}, //
+
6515 {4.45113897, 3.59761667}, //
+
6516 {4.44860268, 3.59977031}, //
+
6517 {4.44602299, 3.60196471}, //
+
6518 {4.44339991, 3.60419989}, //
+
6519 {4.44080782, 3.60642409}, //
+
6520 {4.4382987, 3.60856295}, //
+
6521 {4.43587208, 3.61061668}, //
+
6522 {4.43352842, 3.61258507}, //
+
6523 {4.43126726, 3.61446857}, //
+
6524 {4.42908907, 3.61626673}, //
+
6525 {4.42699337, 3.61797953}, //
+
6526 {4.42498016, 3.61960745}, //
+
6527 {4.42304993, 3.62115002}, //
+
6528 {4.42127657, 3.62257719}, //
+
6529 {4.41720819, 3.62585115}, //
+
6530 {4.4162693, 3.6266067}, //
+
6531 {4.41553879, 3.6271944}, //
+
6532 {4.41501713, 3.62761426}, //
+
6533 {4.41470432, 3.62786603}, //
+
6534 {4.4145999, 3.62794995}, //
+
6535 {4.41474628, 3.62809634}, //
+
6536 {4.41518497, 3.62853527}, //
+
6537 {4.41591644, 3.62926674}, //
+
6538 {4.41800022, 3.63135004}, //
+
6539 {4.4178319, 3.63149619}, //
+
6540 {4.41648912, 3.63266659}, //
+
6541 {4.40439987, 3.64319992}, //
+
6542 {4.40136766, 3.64584374}, //
+
6543 {4.39829397, 3.64848638}, //
+
6544 {4.39517784, 3.65112782}, //
+
6545 {4.39201975, 3.65376782}, //
+
6546 {4.38881969, 3.65640688}, //
+
6547 {4.38557768, 3.6590445}, //
+
6548 {4.3822937, 3.66168094}, //
+
6549 {4.37896776, 3.66431594}, //
+
6550 {4.37559986, 3.66694999}, //
+
6551 {4.37223148, 3.66959381}, //
+
6552 {4.36890364, 3.67223644}, //
+
6553 {4.3656168, 3.67487788}, //
+
6554 {4.36237049, 3.67751789}, //
+
6555 {4.35916471, 3.68015671}, //
+
6556 {4.35599995, 3.68279433}, //
+
6557 {4.35287571, 3.68543077}, //
+
6558 {4.34979248, 3.68806601}, //
+
6559 {4.34674978, 3.69070005}, //
+
6560 {4.34386492, 3.69322896}, //
+
6561 {4.34123135, 3.69554949}, //
+
6562 {4.33885002, 3.69766116}, //
+
6563 {4.33672047, 3.69956422}, //
+
6564 {4.33484268, 3.70125866}, //
+
6565 {4.33321667, 3.70274448}, //
+
6566 {4.33184242, 3.70402169}, //
+
6567 {4.33072042, 3.70509005}, //
+
6568 {4.3298502, 3.70595002}, //
+
6569 {4.32836008, 3.70741844}, //
+
6570 {4.32691193, 3.70880175}, //
+
6571 {4.32550573, 3.71009994}, //
+
6572 {4.3241415, 3.71131301}, //
+
6573 {4.32281923, 3.71244073}, //
+
6574 {4.32153893, 3.71348333}, //
+
6575 {4.32030058, 3.71444082}, //
+
6576 {4.31910419, 3.71531296}, //
+
6577 {4.31794977, 3.71609998}, //
+
6578 {4.31684828, 3.71689749}, //
+
6579 {4.31578684, 3.71777892}, //
+
6580 {4.31476688, 3.71874452}, //
+
6581 {4.31378698, 3.7197938}, //
+
6582 {4.31284809, 3.72092724}, //
+
6583 {4.31195021, 3.72214437}, //
+
6584 {4.31109238, 3.72344565}, //
+
6585 {4.31027603, 3.72483087}, //
+
6586 {4.30950022, 3.7263}, //
+
6587 {4.30912209, 3.72705555}, //
+
6588 {4.30882835, 3.72764325}, //
+
6589 {4.3084507, 3.7283988}, //
+
6590 {4.30798912, 3.7293222}, //
+
6591 {4.30681372, 3.73167276}, //
+
6592 {4.30609989, 3.73309994}, //
+
6593 {4.30605793, 3.73380303}, //
+
6594 {4.30593204, 3.7344234}, //
+
6595 {4.30572224, 3.73496103}, //
+
6596 {4.3054285, 3.73541594}, //
+
6597 {4.30505085, 3.73578835}, //
+
6598 {4.30458879, 3.73607779}, //
+
6599 {4.30404329, 3.73628449}, //
+
6600 {4.30341339, 3.73640871}, //
+
6601 {4.30270004, 3.73644996}, //
+
6602 {4.30267906, 3.73716354}, //
+
6603 {4.30261612, 3.73779321}, //
+
6604 {4.30251122, 3.73833895}, //
+
6605 {4.30236435, 3.73880053}, //
+
6606 {4.30217552, 3.73917842}, //
+
6607 {4.30194426, 3.73947215}, //
+
6608 {4.3016715, 3.7396822}, //
+
6609 {4.30135679, 3.73980808}, //
+
6610 {4.30100012, 3.73985004}, //
+
6611 {4.29930019, 3.73985004}, //
+
6612 {4.29925823, 3.73980808}, //
+
6613 {4.29913187, 3.7396822}, //
+
6614 {4.29892206, 3.73947215}, //
+
6615 {4.29862833, 3.73917842}, //
+
6616 {4.29825068, 3.73880053}, //
+
6617 {4.2977891, 3.73833895}, //
+
6618 {4.29724312, 3.73779321}, //
+
6619 {4.29661369, 3.73716354}, //
+
6620 {4.29589987, 3.73644996}, //
+
6621 {4.29511309, 3.73566294}, //
+
6622 {4.29424095, 3.7347908}, //
+
6623 {4.29224062, 3.73279071}, //
+
6624 {4.2911129, 3.73166299}, //
+
6625 {4.28989983, 3.73044991}, //
+
6626 {4.28860188, 3.72915196}, //
+
6627 {4.28721857, 3.72776842}, //
+
6628 {4.28574991, 3.7263}, //
+
6629 {4.28432274, 3.72489381}, //
+
6630 {4.28306341, 3.72369742}, //
+
6631 {4.28197241, 3.72271109}, //
+
6632 {4.28104877, 3.72193456}, //
+
6633 {4.28029299, 3.72136784}, //
+
6634 {4.27970552, 3.72101116}, //
+
6635 {4.27928591, 3.7208643}, //
+
6636 {4.27903414, 3.72092724}, //
+
6637 {4.27895021, 3.72119999}, //
+
6638 {4.27895021, 3.72327781}, //
+
6639 {4.27895021, 3.72439003}, //
+
6640 {4.27895021, 3.73309994}, //
+
6641 {4.2796216, 3.7354815}, //
+
6642 {4.28012514, 3.73811483}, //
+
6643 {4.28046131, 3.74099994}, //
+
6644 {4.28062916, 3.74413705}, //
+
6645 {4.28062916, 3.74752593}, //
+
6646 {4.28046131, 3.75116658}, //
+
6647 {4.28012514, 3.75505924}, //
+
6648 {4.2796216, 3.75920367}, //
+
6649 {4.27895021, 3.76360011}, //
+
6650 {4.27652645, 3.77309632}, //
+
6651 {4.27376747, 3.78200746}, //
+
6652 {4.27067232, 3.79033327}, //
+
6653 {4.26724148, 3.79807401}, //
+
6654 {4.26347446, 3.80522966}, //
+
6655 {4.25937223, 3.8118}, //
+
6656 {4.25493383, 3.81778526}, //
+
6657 {4.25015974, 3.82318521}, //
+
6658 {4.24504995, 3.82800007}, //
+
6659 {4.2431612, 3.82988882}, //
+
6660 {4.24232149, 3.83072829}, //
+
6661 {4.24202776, 3.83102226}, //
+
6662 {4.2416501, 3.83139992}, //
+
6663 {4.24156618, 3.83139992}, //
+
6664 {4.24146128, 3.83139992}, //
+
6665 {4.24062157, 3.83139992}, //
+
6666 {4.24030685, 3.83139992}, //
+
6667 {4.23995018, 3.83139992}, //
+
6668 {4.23960352, 3.83135796}, //
+
6669 {4.23929834, 3.83123207}, //
+
6670 {4.23903322, 3.83102226}, //
+
6671 {4.23880911, 3.83072829}, //
+
6672 {4.238626, 3.83035064}, //
+
6673 {4.23848343, 3.82988882}, //
+
6674 {4.23838139, 3.82934332}, //
+
6675 {4.23832035, 3.82871366}, //
+
6676 {4.23829985, 3.82800007}, //
+
6677 {4.23821592, 3.82791615}, //
+
6678 {4.23811102, 3.827811}, //
+
6679 {4.23796415, 3.82766414}, //
+
6680 {4.23777533, 3.82747531}, //
+
6681 {4.23727179, 3.82697153}, //
+
6682 {4.2369566, 3.82665682}, //
+
6683 {4.23659992, 3.82629991}, //
+
6684 {4.23620129, 3.82595372}, //
+
6685 {4.23576069, 3.82564807}, //
+
6686 {4.23527765, 3.82538342}, //
+
6687 {4.23475313, 3.82515931}, //
+
6688 {4.23418665, 3.82497597}, //
+
6689 {4.23357773, 3.82483339}, //
+
6690 {4.23292732, 3.82473159}, //
+
6691 {4.23223448, 3.82467031}, //
+
6692 {4.23150015, 3.82465005}, //
+
6693 {4.21455002, 3.82465005}, //
+
6694 {4.21383619, 3.82395744}, //
+
6695 {4.21320677, 3.82339072}, //
+
6696 {4.21266127, 3.82294989}, //
+
6697 {4.21219921, 3.82263517}, //
+
6698 {4.21182156, 3.82244635}, //
+
6699 {4.21152782, 3.8223834}, //
+
6700 {4.21131802, 3.82244635}, //
+
6701 {4.21119213, 3.82263517}, //
+
6702 {4.21115017, 3.82294989}, //
+
6703 {4.21110821, 3.82332706}, //
+
6704 {4.21098232, 3.82370305}, //
+
6705 {4.21077204, 3.82407784}, //
+
6706 {4.21047831, 3.82445121}, //
+
6707 {4.21010065, 3.82482338}, //
+
6708 {4.20963907, 3.82519436}, //
+
6709 {4.20909309, 3.82556415}, //
+
6710 {4.20846367, 3.82593274}, //
+
6711 {4.20774984, 3.82629991}, //
+
6712 {4.20700502, 3.82669878}, //
+
6713 {4.20625877, 3.82713962}, //
+
6714 {4.20551109, 3.82762218}, //
+
6715 {4.20476246, 3.82814693}, //
+
6716 {4.20401239, 3.82871366}, //
+
6717 {4.2032609, 3.82932234}, //
+
6718 {4.20250845, 3.82997274}, //
+
6719 {4.20175505, 3.83066535}, //
+
6720 {4.20100021, 3.83139992}, //
+
6721 {4.20020247, 3.8329525}, //
+
6722 {4.19932079, 3.83458757}, //
+
6723 {4.19835567, 3.83630562}, //
+
6724 {4.19730616, 3.83810616}, //
+
6725 {4.19617271, 3.83998942}, //
+
6726 {4.19495535, 3.84195566}, //
+
6727 {4.19365454, 3.84400439}, //
+
6728 {4.19226933, 3.84613585}, //
+
6729 {4.19080019, 3.84835005}, //
+
6730 {4.18862772, 3.85053205}, //
+
6731 {4.18662214, 3.85254502}, //
+
6732 {4.18478346, 3.85438895}, //
+
6733 {4.18311119, 3.8560636}, //
+
6734 {4.18160534, 3.85756922}, //
+
6735 {4.18026686, 3.85890555}, //
+
6736 {4.17909431, 3.86007285}, //
+
6737 {4.17808867, 3.86107087}, //
+
6738 {4.17724991, 3.86190009}, //
+
6739 {4.17653656, 3.8625927}, //
+
6740 {4.17590666, 3.86315918}, //
+
6741 {4.17536116, 3.86360002}, //
+
6742 {4.17489958, 3.86391473}, //
+
6743 {4.17452145, 3.86410379}, //
+
6744 {4.17422771, 3.86416674}, //
+
6745 {4.17401791, 3.86410379}, //
+
6746 {4.17389202, 3.86391473}, //
+
6747 {4.17385006, 3.86360002}, //
+
6748 {4.17385006, 3.86259508}, //
+
6749 {4.17385006, 3.86190557}, //
+
6750 {4.17385006, 3.86109138}, //
+
6751 {4.17385006, 3.85514998}, //
+
6752 {4.17456341, 3.8536396}, //
+
6753 {4.17519331, 3.85213017}, //
+
6754 {4.17573881, 3.85062218}, //
+
6755 {4.17620039, 3.84911537}, //
+
6756 {4.17657852, 3.84760976}, //
+
6757 {4.17687225, 3.84610558}, //
+
6758 {4.17708206, 3.84460258}, //
+
6759 {4.17720795, 3.84310055}, //
+
6760 {4.17724991, 3.84159994}, //
+
6761 {4.17716599, 3.83876657}, //
+
6762 {4.17691422, 3.8363111}, //
+
6763 {4.1764946, 3.83423328}, //
+
6764 {4.17590666, 3.83253336}, //
+
6765 {4.17515135, 3.83121109}, //
+
6766 {4.17422771, 3.83026671}, //
+
6767 {4.17313623, 3.82969999}, //
+
6768 {4.17187738, 3.82951117}, //
+
6769 {4.17045021, 3.82969999}, //
+
6770 {4.16890764, 3.83022404}, //
+
6771 {4.16727972, 3.83104086}, //
+
6772 {4.16556644, 3.83214998}, //
+
6773 {4.16376829, 3.83355188}, //
+
6774 {4.16188526, 3.83524632}, //
+
6775 {4.15991688, 3.8372333}, //
+
6776 {4.15786314, 3.83951306}, //
+
6777 {4.15572405, 3.84208512}, //
+
6778 {4.15350008, 3.84494996}, //
+
6779 {4.15202045, 3.84633517}, //
+
6780 {4.15058136, 3.84746861}, //
+
6781 {4.14918327, 3.84835005}, //
+
6782 {4.14782572, 3.84897971}, //
+
6783 {4.14650917, 3.84935737}, //
+
6784 {4.14523315, 3.84948325}, //
+
6785 {4.14399815, 3.84935737}, //
+
6786 {4.14280367, 3.84897971}, //
+
6787 {4.1416502, 3.84835005}, //
+
6788 {4.14055872, 3.84755254}, //
+
6789 {4.13955116, 3.8466711}, //
+
6790 {4.13862801, 3.84570551}, //
+
6791 {4.1377883, 3.84465623}, //
+
6792 {4.13703251, 3.84352279}, //
+
6793 {4.13636112, 3.84230566}, //
+
6794 {4.13577366, 3.84100437}, //
+
6795 {4.13526964, 3.83961916}, //
+
6796 {4.13485003, 3.83815002}, //
+
6797 {4.13451433, 3.83662844}, //
+
6798 {4.13426256, 3.8350637}, //
+
6799 {4.13409424, 3.83345556}, //
+
6800 {4.13401031, 3.83180428}, //
+
6801 {4.13401031, 3.83010983}, //
+
6802 {4.13409424, 3.82837224}, //
+
6803 {4.13426256, 3.82659125}, //
+
6804 {4.13451433, 3.82476735}, //
+
6805 {4.13485003, 3.82290006}, //
+
6806 {4.13524866, 3.8210845}, //
+
6807 {4.13568974, 3.81939387}, //
+
6808 {4.13617229, 3.8178277}, //
+
6809 {4.13669682, 3.81638646}, //
+
6810 {4.13726377, 3.81506968}, //
+
6811 {4.13787222, 3.81387782}, //
+
6812 {4.13852262, 3.81281042}, //
+
6813 {4.13921547, 3.81186795}, //
+
6814 {4.1399498, 3.81104994}, //
+
6815 {4.14127207, 3.81035733}, //
+
6816 {4.14221668, 3.80979085}, //
+
6817 {4.14278316, 3.80935001}, //
+
6818 {4.14297199, 3.8090353}, //
+
6819 {4.14278316, 3.80884624}, //
+
6820 {4.14221668, 3.80878329}, //
+
6821 {4.14127207, 3.80884624}, //
+
6822 {4.1399498, 3.8090353}, //
+
6823 {4.13824987, 3.80935001}, //
+
6824 {4.13630867, 3.80983281}, //
+
6825 {4.13424015, 3.81052542}, //
+
6826 {4.13204432, 3.81142783}, //
+
6827 {4.12972164, 3.81254005}, //
+
6828 {4.12727165, 3.81386232}, //
+
6829 {4.12469435, 3.8153944}, //
+
6830 {4.1219902, 3.81713653}, //
+
6831 {4.11915874, 3.81908822}, //
+
6832 {4.11619997, 3.82124996}, //
+
6833 {4.11390257, 3.82200503}, //
+
6834 {4.11152077, 3.82275867}, //
+
6835 {4.10905552, 3.82351112}, //
+
6836 {4.10650635, 3.82426238}, //
+
6837 {4.10387278, 3.82501245}, //
+
6838 {4.10115576, 3.82576108}, //
+
6839 {4.09835434, 3.82650876}, //
+
6840 {4.095469, 3.82725501}, //
+
6841 {4.09250021, 3.82800007}, //
+
6842 {4.08533478, 3.83032894}, //
+
6843 {4.07741594, 3.83278275}, //
+
6844 {4.06874466, 3.835361}, //
+
6845 {4.05931997, 3.83806419}, //
+
6846 {4.04914188, 3.84089208}, //
+
6847 {4.03821135, 3.84384441}, //
+
6848 {4.02652693, 3.84692168}, //
+
6849 {4.01409006, 3.85012341}, //
+
6850 {4.00089979, 3.85345006}, //
+
6851 {3.98751163, 3.85669255}, //
+
6852 {3.97445798, 3.85964251}, //
+
6853 {3.96173882, 3.86229992}, //
+
6854 {3.94935441, 3.86466479}, //
+
6855 {3.93730426, 3.86673713}, //
+
6856 {3.92558885, 3.86851668}, //
+
6857 {3.91420794, 3.8700037}, //
+
6858 {3.90316176, 3.87119818}, //
+
6859 {3.89245009, 3.87210011}, //
+
6860 {3.88580799, 3.87210011}, //
+
6861 {3.87945986, 3.87210011}, //
+
6862 {3.84325004, 3.87210011}, //
+
6863 {3.83913636, 3.87205791}, //
+
6864 {3.83506227, 3.87193203}, //
+
6865 {3.83102775, 3.87172222}, //
+
6866 {3.8270328, 3.87142849}, //
+
6867 {3.8230772, 3.8710506}, //
+
6868 {3.81916118, 3.87058878}, //
+
6869 {3.81528449, 3.87004328}, //
+
6870 {3.81144762, 3.86941361}, //
+
6871 {3.80765009, 3.86870003}, //
+
6872 {3.80158591, 3.86865807}, //
+
6873 {3.79543757, 3.86853218}, //
+
6874 {3.78920555, 3.86832213}, //
+
6875 {3.7828896, 3.8680284}, //
+
6876 {3.7764895, 3.86765051}, //
+
6877 {3.77000546, 3.86718893}, //
+
6878 {3.76343775, 3.86664319}, //
+
6879 {3.75678587, 3.86601353}, //
+
6880 {3.75005007, 3.86529994}, //
+
6881 {3.73855114, 3.86525798}, //
+
6882 {3.72667718, 3.86513209}, //
+
6883 {3.71442771, 3.86492229}, //
+
6884 {3.70180297, 3.86462831}, //
+
6885 {3.6888032, 3.86425066}, //
+
6886 {3.67542768, 3.86378884}, //
+
6887 {3.66167712, 3.8632431}, //
+
6888 {3.6475513, 3.86261368}, //
+
6889 {3.63304996, 3.86190009}, //
+
6890 {3.61846542, 3.86115503}, //
+
6891 {3.6040895, 3.86040854}, //
+
6892 {3.58992219, 3.8596611}, //
+
6893 {3.5759635, 3.85891223}, //
+
6894 {3.56221366, 3.8581624}, //
+
6895 {3.5486722, 3.85741115}, //
+
6896 {3.53533959, 3.8566587}, //
+
6897 {3.52221537, 3.85590506}, //
+
6898 {3.50929999, 3.85514998}, //
+
6899 {3.50322533, 3.85514998}, //
+
6900 {3.49706793, 3.85514998}, //
+
6901 {3.47161102, 3.85514998}, //
+
6902 {3.46504021, 3.85514998}, //
+
6903 {3.45838642, 3.85514998}, //
+
6904 {3.4516499, 3.85514998}, //
+
6905 {3.43498898, 3.85372281}, //
+
6906 {3.41816115, 3.85246348}, //
+
6907 {3.40116668, 3.85137224}, //
+
6908 {3.38400555, 3.85044885}, //
+
6909 {3.36667776, 3.8496933}, //
+
6910 {3.34918332, 3.8491056}, //
+
6911 {3.33152223, 3.84868574}, //
+
6912 {3.31369448, 3.84843397}, //
+
6913 {3.29570007, 3.84835005}, //
+
6914 {3.28181982, 3.84763646}, //
+
6915 {3.26731229, 3.8470068}, //
+
6916 {3.25217772, 3.84646106}, //
+
6917 {3.2364161, 3.84599948}, //
+
6918 {3.22002721, 3.84562159}, //
+
6919 {3.20301104, 3.84532785}, //
+
6920 {3.18536782, 3.84511781}, //
+
6921 {3.16709757, 3.84499192}, //
+
6922 {3.14820004, 3.84494996}, //
+
6923 {3.12926054, 3.84499192}, //
+
6924 {3.11086416, 3.84511781}, //
+
6925 {3.09301114, 3.84532785}, //
+
6926 {3.07570124, 3.84562159}, //
+
6927 {3.05893445, 3.84599948}, //
+
6928 {3.04271102, 3.84646106}, //
+
6929 {3.02703094, 3.8470068}, //
+
6930 {3.01189375, 3.84763646}, //
+
6931 {2.99729991, 3.84835005}, //
+
6932 {2.98845434, 3.84841299}, //
+
6933 {2.97998405, 3.84860182}, //
+
6934 {2.97188878, 3.84891677}, //
+
6935 {2.96416903, 3.84935737}, //
+
6936 {2.95682478, 3.84992409}, //
+
6937 {2.94985557, 3.85061669}, //
+
6938 {2.94326162, 3.85143518}, //
+
6939 {2.93704319, 3.85237956}, //
+
6940 {2.93120003, 3.85345006}, //
+
6941 {2.92569137, 3.85460377}, //
+
6942 {2.92047644, 3.85579824}, //
+
6943 {2.91555548, 3.85703325}, //
+
6944 {2.91092849, 3.85830927}, //
+
6945 {2.90659499, 3.85962582}, //
+
6946 {2.90255547, 3.86098337}, //
+
6947 {2.89880991, 3.86238146}, //
+
6948 {2.89535809, 3.86382031}, //
+
6949 {2.89219999, 3.86529994}, //
+
6950 {2.889189, 3.86676908}, //
+
6951 {2.88617778, 3.86815429}, //
+
6952 {2.88316655, 3.86945558}, //
+
6953 {2.88015556, 3.87067294}, //
+
6954 {2.87714434, 3.87180614}, //
+
6955 {2.87413335, 3.87285566}, //
+
6956 {2.87112212, 3.87382102}, //
+
6957 {2.86811113, 3.87470245}, //
+
6958 {2.86509991, 3.87549996}, //
+
6959 {2.85780931, 3.876297}, //
+
6960 {2.84951472, 3.87717652}, //
+
6961 {2.84021664, 3.87813878}, //
+
6962 {2.82991481, 3.87918401}, //
+
6963 {2.81860924, 3.88031173}, //
+
6964 {2.80629992, 3.88152218}, //
+
6965 {2.79298711, 3.88281536}, //
+
6966 {2.77867031, 3.88419127}, //
+
6967 {2.76335001, 3.88564992}, //
+
6968 {2.74908209, 3.88732839}, //
+
6969 {2.73338962, 3.88934135}, //
+
6970 {2.71627212, 3.89168882}, //
+
6971 {2.6977303, 3.89437103}, //
+
6972 {2.67776346, 3.89738774}, //
+
6973 {2.65637231, 3.90073895}, //
+
6974 {2.63355613, 3.90442467}, //
+
6975 {2.6093154, 3.90844512}, //
+
6976 {2.58365011, 3.91280007}, //
+
6977 {2.56228638, 3.91505551}, //
+
6978 {2.54188466, 3.91731119}, //
+
6979 {2.52244449, 3.91956663}, //
+
6980 {2.50396609, 3.92182231}, //
+
6981 {2.48644948, 3.92407775}, //
+
6982 {2.46989441, 3.92633343}, //
+
6983 {2.45430112, 3.92858887}, //
+
6984 {2.43966985, 3.93084455}, //
+
6985 {2.42600012, 3.93309999}, //
+
6986 {2.41279078, 3.93540812}, //
+
6987 {2.39954066, 3.93779874}, //
+
6988 {2.38625002, 3.94027233}, //
+
6989 {2.37291861, 3.94282842}, //
+
6990 {2.35954618, 3.94546723}, //
+
6991 {2.34613323, 3.94818878}, //
+
6992 {2.33267975, 3.9509933}, //
+
6993 {2.31918526, 3.95388031}, //
+
6994 {2.30565, 3.95685005}, //
+
6995 {2.29944944, 3.95768881}, //
+
6996 {2.29291415, 3.95869446}, //
+
6997 {2.28604436, 3.95986676}, //
+
6998 {2.27884007, 3.96120548}, //
+
6999 {2.27130127, 3.9627111}, //
+
7000 {2.26342773, 3.96438336}, //
+
7001 {2.2552197, 3.96622229}, //
+
7002 {2.24667716, 3.96822786}, //
+
7003 {2.23779988, 3.97040009}, //
+
7004 {2.22102094, 3.97329569}, //
+
7005 {2.20532846, 3.97593832}, //
+
7006 {2.19072223, 3.97832775}, //
+
7007 {2.17720246, 3.98046422}, //
+
7008 {2.16476917, 3.98234749}, //
+
7009 {2.15342212, 3.98397779}, //
+
7010 {2.14316177, 3.9853549}, //
+
7011 {2.13398767, 3.98647904}, //
+
7012 {2.12590003, 3.98734999}, //
+
7013 {2.1184926, 3.98806357}, //
+
7014 {2.11133695, 3.98869324}, //
+
7015 {2.1044333, 3.98923898}, //
+
7016 {2.09778142, 3.98970056}, //
+
7017 {2.09138155, 3.99007845}, //
+
7018 {2.08523345, 3.99037218}, //
+
7019 {2.07933712, 3.99058199}, //
+
7020 {2.07369256, 3.99070811}, //
+
7021 {2.06830001, 3.99075007}, //
+
7022 {2.05472231, 3.99075007}, //
+
7023 {2.05246353, 3.99075007}, //
+
7024 {2.04795003, 3.99075007}, //
+
7025 {2.03987217, 3.99095917}, //
+
7026 {2.03070545, 3.99158692}, //
+
7027 {2.02045012, 3.99263334}, //
+
7028 {2.00910544, 3.99409819}, //
+
7029 {1.99667227, 3.99598145}, //
+
7030 {1.98315001, 3.99828339}, //
+
7031 {1.96853888, 4.00100374}, //
+
7032 {1.9528389, 4.00414276}, //
+
7033 {1.93605006, 4.00769997}, //
+
7034 {1.91980922, 4.01072168}, //
+
7035 {1.90273154, 4.01374197}, //
+
7036 {1.88481665, 4.0167613}, //
+
7037 {1.86606479, 4.01977921}, //
+
7038 {1.84647596, 4.02279568}, //
+
7039 {1.82605004, 4.0258112}, //
+
7040 {1.80478704, 4.02882528}, //
+
7041 {1.78268707, 4.03183842}, //
+
7042 {1.75975001, 4.03485012}, //
+
7043 {1.72148275, 4.03907919}, //
+
7044 {1.68505859, 4.04272175}, //
+
7045 {1.65047777, 4.0457778}, //
+
7046 {1.61774015, 4.04824734}, //
+
7047 {1.58684564, 4.05013084}, //
+
7048 {1.55779445, 4.05142784}, //
+
7049 {1.53058636, 4.05213833}, //
+
7050 {1.50522161, 4.05226231}, //
+
7051 {1.48169994, 4.05179977}, //
+
7052 {1.44099998, 4.05179977}, //
+
7053 {1.42744565, 4.05152798}, //
+
7054 {1.41238272, 4.05071115}, //
+
7055 {1.39581108, 4.04934978}, //
+
7056 {1.37773085, 4.04744434}, //
+
7057 {1.35814202, 4.04499435}, //
+
7058 {1.33704448, 4.04199982}, //
+
7059 {1.31443822, 4.03846121}, //
+
7060 {1.2903235, 4.03437757}, //
+
7061 {1.26470006, 4.02974987}, //
+
7062 {1.23891914, 4.02491283}, //
+
7063 {1.21430993, 4.02020168}, //
+
7064 {1.19087219, 4.01561689}, //
+
7065 {1.16860616, 4.01115751}, //
+
7066 {1.14751172, 4.00682402}, //
+
7067 {1.12758887, 4.00261688}, //
+
7068 {1.1088376, 3.99853516}, //
+
7069 {1.09125805, 3.99457955}, //
+
7070 {1.07484996, 3.99075007}, //
+
7071 {1.0600673, 3.98669004}, //
+
7072 {1.04436362, 3.98204374}, //
+
7073 {1.02773893, 3.97681117}, //
+
7074 {1.01019323, 3.97099209}, //
+
7075 {0.991726518, 3.9645865}, //
+
7076 {0.972338915, 3.95759439}, //
+
7077 {0.952030241, 3.95001602}, //
+
7078 {0.930800617, 3.94185114}, //
+
7079 {0.908649981, 3.93309999}, //
+
7080 {0.886301219, 3.92406607}, //
+
7081 {0.864454925, 3.91503096}, //
+
7082 {0.843111098, 3.90599442}, //
+
7083 {0.822269738, 3.89695668}, //
+
7084 {0.801930845, 3.887918}, //
+
7085 {0.782094419, 3.87887788}, //
+
7086 {0.76276052, 3.86983633}, //
+
7087 {0.743929029, 3.86079383}, //
+
7088 {0.725600004, 3.8517499}, //
+
7089 {0.691362321, 3.83056855}, //
+
7090 {0.657960474, 3.80771303}, //
+
7091 {0.625394464, 3.78318334}, //
+
7092 {0.593664169, 3.7569797}, //
+
7093 {0.562769771, 3.7291019}, //
+
7094 {0.546076477, 3.71269011}, //
+
7095 {0.544767916, 3.71090436}, //
+
7096 {0.537400007, 3.70085001}, //
+
7097 {0.533171594, 3.69497466}, //
+
7098 {0.528775334, 3.68863773}, //
+
7099 {0.524211109, 3.68183899}, //
+
7100 {0.519479036, 3.67457843}, //
+
7101 {0.514578998, 3.66685629}, //
+
7102 {0.509511113, 3.65867233}, //
+
7103 {0.504275322, 3.65002656}, //
+
7104 {0.498871595, 3.64091921}, //
+
7105 {0.493299991, 3.63135004}, //
+
7106 {0.487717897, 3.6213932}, //
+
7107 {0.482260495, 3.61110067}, //
+
7108 {0.476927787, 3.60047221}, //
+
7109 {0.471719742, 3.58950806}, //
+
7110 {0.466636419, 3.57820797}, //
+
7111 {0.46167779, 3.56657219}, //
+
7112 {0.456843823, 3.55460072}, //
+
7113 {0.452134579, 3.54229331}, //
+
7114 {0.447549999, 3.52964997}, //
+
7115 {0.44759196, 3.52988029}, //
+
7116 {0.447717905, 3.53057098}, //
+
7117 {0.447927773, 3.53172231}, //
+
7118 {0.448221594, 3.53333402}, //
+
7119 {0.449061126, 3.53793883}, //
+
7120 {0.449606776, 3.54093218}, //
+
7121 {0.45023641, 3.54438591}, //
+
7122 {0.450949997, 3.54830003}, //
+
7123 {0.451767892, 3.5524857}, //
+
7124 {0.452710479, 3.55675435}, //
+
7125 {0.45377779, 3.56110549}, //
+
7126 {0.454969764, 3.5655396}, //
+
7127 {0.45628643, 3.5700562}, //
+
7128 {0.45772779, 3.57465553}, //
+
7129 {0.459293813, 3.5793376}, //
+
7130 {0.460984558, 3.58410239}, //
+
7131 {0.462799996, 3.58894992}, //
+
7132 {0.464709252, 3.59382892}, //
+
7133 {0.466659248, 3.59866595}, //
+
7134 {0.468650013, 3.60346103}, //
+
7135 {0.470681489, 3.60821414}, //
+
7136 {0.472753704, 3.61292529}, //
+
7137 {0.474866658, 3.61759448}, //
+
7138 {0.477020383, 3.62222171}, //
+
7139 {0.479214817, 3.62680674}, //
+
7140 {0.481449991, 3.63135004}, //
+
7141 {0.484575927, 3.63738275}, //
+
7142 {0.487909257, 3.64341426}, //
+
7143 {0.491450012, 3.64944434}, //
+
7144 {0.49519816, 3.65547347}, //
+
7145 {0.499153703, 3.66150117}, //
+
7146 {0.503316641, 3.66752768}, //
+
7147 {0.505293071, 3.67025256}, //
+
7148 {0.532711089, 3.69954991}, //
+
7149 {0.546076477, 3.71269011}, //
+
7150 {0.552366078, 3.72127295}, //
+
7151 {0.553977787, 3.72347212}, //
+
7152 {0.555128992, 3.7250433}, //
+
7153 {0.55581975, 3.72598577}, //
+
7154 {0.556050003, 3.7263}, //
+
7155 {0.552220345, 3.72312093}, //
+
7156 {0.548264802, 3.71960616}, //
+
7157 {0.544183314, 3.71575546}, //
+
7158 {0.539975941, 3.71156907}, //
+
7159 {0.535642564, 3.70704699}, //
+
7160 {0.531183362, 3.70218897}, //
+
7161 {0.526598155, 3.69699502}, //
+
7162 {0.521887064, 3.69146538}, //
+
7163 {0.517050028, 3.68560004}, //
+
7164 {0.512264788, 3.67957711}, //
+
7165 {0.507687032, 3.67355299}, //
+
7166 {0.505293071, 3.67025256}, //
+
7167 {0.503488243, 3.66832399}, //
+
7168 {0.475101233, 3.63542414}, //
+
7169 {0.447549999, 3.60085011}, //
+
7170 {0.435619742, 3.58540606}, //
+
7171 {0.423940122, 3.56920791}, //
+
7172 {0.41251111, 3.55225563}, //
+
7173 {0.401332706, 3.53454876}, //
+
7174 {0.39040494, 3.51608777}, //
+
7175 {0.379727781, 3.49687219}, //
+
7176 {0.36930123, 3.47690248}, //
+
7177 {0.359125316, 3.45617843}, //
+
7178 {0.34920001, 3.43470001}, //
+
7179 {0.339745671, 3.41339946}, //
+
7180 {0.330960482, 3.39318633}, //
+
7181 {0.322844446, 3.37406111}, //
+
7182 {0.315397531, 3.35602355}, //
+
7183 {0.308619767, 3.33907342}, //
+
7184 {0.302511126, 3.32321119}, //
+
7185 {0.297071606, 3.30843639}, //
+
7186 {0.292301238, 3.2947495}, //
+
7187 {0.288199991, 3.28215003}, //
+
7188 {0.286772847, 3.27854085}, //
+
7189 {0.28551358, 3.27526855}, //
+
7190 {0.284422219, 3.27233338}, //
+
7191 {0.283498764, 3.2697351}, //
+
7192 {0.282743216, 3.26747417}, //
+
7193 {0.282155544, 3.2655499}, //
+
7194 {0.281735808, 3.26396298}, //
+
7195 {0.281483948, 3.26271296}, //
+
7196 {0.281399995, 3.26180005}, //
+
7197 {0.280487657, 3.26100254}, //
+
7198 {0.279239506, 3.26012087}, //
+
7199 {0.277655542, 3.25915551}, //
+
7200 {0.275735795, 3.25810623}, //
+
7201 {0.273480237, 3.25697279}, //
+
7202 {0.270888895, 3.25575566}, //
+
7203 {0.26796174, 3.25445437}, //
+
7204 {0.264698774, 3.25306916}, //
+
7205 {0.261099994, 3.25160003}, //
+
7206 {0.257374704, 3.25009942}, //
+
7207 {0.253732085, 3.24859762}, //
+
7208 {0.250172228, 3.24709439}, //
+
7209 {0.246695057, 3.24559021}, //
+
7210 {0.243300617, 3.2440846}, //
+
7211 {0.239988893, 3.24257779}, //
+
7212 {0.236759871, 3.24106979}, //
+
7213 {0.23361358, 3.2395606}, //
+
7214 {0.230550006, 3.23804998}, //
+
7215 {0.225491971, 3.23587775}, //
+
7216 {0.220851228, 3.23387218}, //
+
7217 {0.216627777, 3.23203325}, //
+
7218 {0.212821603, 3.23036122}, //
+
7219 {0.209432721, 3.22885561}, //
+
7220 {0.206461117, 3.22751665}, //
+
7221 {0.203906789, 3.22634435}, //
+
7222 {0.201769754, 3.22533894}, //
+
7223 {0.200049996, 3.22449994}, //
+
7224 {0.199336424, 3.22376537}, //
+
7225 {0.198706791, 3.22307277}, //
+
7226 {0.19816111, 3.22242212}, //
+
7227 {0.197699383, 3.22181368}, //
+
7228 {0.197321609, 3.22124696}, //
+
7229 {0.197027773, 3.2207222}, //
+
7230 {0.196817905, 3.2202394}, //
+
7231 {0.196691975, 3.2197988}, //
+
7232 {0.196649998, 3.21939993}, //
+
7233 {0.196712956, 3.21900129}, //
+
7234 {0.196901858, 3.21856046}, //
+
7235 {0.19721666, 3.21807766}, //
+
7236 {0.197657406, 3.21755314}, //
+
7237 {0.198224068, 3.21698642}, //
+
7238 {0.198916674, 3.21637774}, //
+
7239 {0.19973518, 3.21572709}, //
+
7240 {0.20067963, 3.21503448}, //
+
7241 {0.201749995, 3.21429992}, //
+
7242 {0.202861726, 3.21362829}, //
+
7243 {0.203930244, 3.21312475}, //
+
7244 {0.204955563, 3.21278882}, //
+
7245 {0.205937654, 3.21262097}, //
+
7246 {0.206876546, 3.21262097}, //
+
7247 {0.207772225, 3.21278882}, //
+
7248 {0.208624691, 3.21312475}, //
+
7249 {0.209433958, 3.21362829}, //
+
7250 {0.210199997, 3.21429992}, //
+
7251 {0.21095556, 3.2150135}, //
+
7252 {0.211711109, 3.21564317}, //
+
7253 {0.212466672, 3.21618891}, //
+
7254 {0.213222221, 3.21665072}, //
+
7255 {0.213977784, 3.21702838}, //
+
7256 {0.214733332, 3.21732211}, //
+
7257 {0.215488896, 3.21753216}, //
+
7258 {0.216244444, 3.21765804}, //
+
7259 {0.216999993, 3.2177}, //
+
7260 {0.217671603, 3.21765804}, //
+
7261 {0.218175307, 3.21753216}, //
+
7262 {0.218511105, 3.21732211}, //
+
7263 {0.218679011, 3.21702838}, //
+
7264 {0.218679011, 3.21665072}, //
+
7265 {0.218511105, 3.21618891}, //
+
7266 {0.218175307, 3.21564317}, //
+
7267 {0.217671603, 3.2150135}, //
+
7268 {0.216999993, 3.21429992}, //
+
7269 {0.216202468, 3.21354437}, //
+
7270 {0.215320989, 3.21278882}, //
+
7271 {0.214355558, 3.21203327}, //
+
7272 {0.213306174, 3.21127772}, //
+
7273 {0.212172836, 3.21052217}, //
+
7274 {0.21095556, 3.20976663}, //
+
7275 {0.209654316, 3.20901108}, //
+
7276 {0.208269134, 3.20825553}, //
+
7277 {0.206799999, 3.20749998}, //
+
7278 {0.205299377, 3.20675492}, //
+
7279 {0.203797534, 3.20600867}, //
+
7280 {0.202294439, 3.20526099}, //
+
7281 {0.200790122, 3.20451236}, //
+
7282 {0.199284568, 3.20376229}, //
+
7283 {0.197777778, 3.20301104}, //
+
7284 {0.196269751, 3.20225859}, //
+
7285 {0.194760486, 3.20150495}, //
+
7286 {0.19325, 3.20075011}, //
+
7287 {0.191791356, 3.19999433}, //
+
7288 {0.190415427, 3.19923878}, //
+
7289 {0.189122215, 3.19848323}, //
+
7290 {0.187911734, 3.19772768}, //
+
7291 {0.186783955, 3.19697213}, //
+
7292 {0.185738891, 3.19621658}, //
+
7293 {0.184776545, 3.19546103}, //
+
7294 {0.183896914, 3.19470549}, //
+
7295 {0.1831, 3.19394994}, //
+
7296 {0.180381477, 3.19322586}, //
+
7297 {0.178248152, 3.19254255}, //
+
7298 {0.176699996, 3.19190001}, //
+
7299 {0.175737038, 3.19129825}, //
+
7300 {0.175359264, 3.19073701}, //
+
7301 {0.175566673, 3.19021678}, //
+
7302 {0.176359266, 3.18973708}, //
+
7303 {0.177737042, 3.18929815}, //
+
7304 {0.179700002, 3.18889999}, //
+
7305 {0.182091355, 3.18858528}, //
+
7306 {0.184732094, 3.18839622}, //
+
7307 {0.187622219, 3.18833327}, //
+
7308 {0.19076173, 3.18839622}, //
+
7309 {0.194150612, 3.18858528}, //
+
7310 {0.197788894, 3.18889999}, //
+
7311 {0.201676548, 3.18934083}, //
+
7312 {0.205813587, 3.18990731}, //
+
7313 {0.210199997, 3.19059992}, //
+
7314 {0.211648151, 3.19059992}, //
+
7315 {0.212970376, 3.19059992}, //
+
7316 {0.218700007, 3.19059992}, //
+
7317 {0.218322217, 3.19057894}, //
+
7318 {0.217944443, 3.190516}, //
+
7319 {0.217566669, 3.19041109}, //
+
7320 {0.217188895, 3.19026423}, //
+
7321 {0.216811106, 3.1900754}, //
+
7322 {0.216433331, 3.18984437}, //
+
7323 {0.216055557, 3.18957162}, //
+
7324 {0.215677783, 3.18925691}, //
+
7325 {0.21492222, 3.18854332}, //
+
7326 {0.214544445, 3.18822837}, //
+
7327 {0.214166671, 3.18795562}, //
+
7328 {0.213788882, 3.18772459}, //
+
7329 {0.213411108, 3.18753576}, //
+
7330 {0.213033333, 3.1873889}, //
+
7331 {0.212655559, 3.18728399}, //
+
7332 {0.212277785, 3.18722105}, //
+
7333 {0.211899996, 3.18720007}, //
+
7334 {0.2112284, 3.18720007}, //
+
7335 {0.21095556, 3.18720007}, //
+
7336 {0.210724697, 3.18720007}, //
+
7337 {0.210199997, 3.18720007}, //
+
7338 {0.210179016, 3.18715811}, //
+
7339 {0.210116044, 3.18703198}, //
+
7340 {0.21001111, 3.18682218}, //
+
7341 {0.209171608, 3.18514323}, //
+
7342 {0.208856791, 3.18451357}, //
+
7343 {0.208499998, 3.18379998}, //
+
7344 {0.208090737, 3.18300247}, //
+
7345 {0.207596302, 3.18212104}, //
+
7346 {0.207016662, 3.18115544}, //
+
7347 {0.206351846, 3.18010616}, //
+
7348 {0.205601856, 3.17897272}, //
+
7349 {0.204766661, 3.17775559}, //
+
7350 {0.203846291, 3.17645431}, //
+
7351 {0.202840745, 3.17506909}, //
+
7352 {0.201749995, 3.17359996}, //
+
7353 {0.200616673, 3.17212033}, //
+
7354 {0.199483335, 3.17068148}, //
+
7355 {0.198349997, 3.16928339}, //
+
7356 {0.19721666, 3.16792583}, //
+
7357 {0.196083337, 3.16660929}, //
+
7358 {0.194949999, 3.16533327}, //
+
7359 {0.193816662, 3.16409826}, //
+
7360 {0.192683339, 3.16290379}, //
+
7361 {0.191550002, 3.16175008}, //
+
7362 {0.190364197, 3.16063833}, //
+
7363 {0.189051241, 3.15956974}, //
+
7364 {0.187611118, 3.15854454}, //
+
7365 {0.186043829, 3.15756226}, //
+
7366 {0.184349388, 3.15662336}, //
+
7367 {0.182527781, 3.15572786}, //
+
7368 {0.180579007, 3.15487528}, //
+
7369 {0.178503081, 3.15406609}, //
+
7370 {0.176300004, 3.15330005}, //
+
7371 {0.174148768, 3.15256548}, //
+
7372 {0.172206178, 3.15187287}, //
+
7373 {0.17047222, 3.15122223}, //
+
7374 {0.168946907, 3.15061355}, //
+
7375 {0.16763024, 3.15004683}, //
+
7376 {0.16652222, 3.1495223}, //
+
7377 {0.165622845, 3.14903951}, //
+
7378 {0.164932102, 3.14859867}, //
+
7379 {0.164450005, 3.14820004}, //
+
7380 {0.164135188, 3.14782214}, //
+
7381 {0.163946301, 3.14744449}, //
+
7382 {0.163883328, 3.14706659}, //
+
7383 {0.163946301, 3.14668894}, //
+
7384 {0.164135188, 3.14631104}, //
+
7385 {0.164450005, 3.14593339}, //
+
7386 {0.164890736, 3.1455555}, //
+
7387 {0.165457413, 3.14517784}, //
+
7388 {0.166150004, 3.14479995}, //
+
7389 {0.166946918, 3.14448524}, //
+
7390 {0.167826548, 3.14429641}, //
+
7391 {0.168788895, 3.14423323}, //
+
7392 {0.169833943, 3.14429641}, //
+
7393 {0.170961723, 3.14448524}, //
+
7394 {0.172172219, 3.14479995}, //
+
7395 {0.173465431, 3.14524078}, //
+
7396 {0.174841359, 3.1458075}, //
+
7397 {0.176300004, 3.14650011}, //
+
7398 {0.17846173, 3.1471715}, //
+
7399 {0.180413574, 3.14767528}, //
+
7400 {0.18215555, 3.14801121}, //
+
7401 {0.183687657, 3.14817905}, //
+
7402 {0.185009882, 3.14817905}, //
+
7403 {0.186122224, 3.14801121}, //
+
7404 {0.187024698, 3.14767528}, //
+
7405 {0.187717289, 3.1471715}, //
+
7406 {0.188199997, 3.14650011}, //
+
7407 {0.188514814, 3.1456604}, //
+
7408 {0.188703701, 3.14465308}, //
+
7409 {0.188766673, 3.14347768}, //
+
7410 {0.188703701, 3.14213467}, //
+
7411 {0.188514814, 3.14062357}, //
+
7412 {0.188199997, 3.13894439}, //
+
7413 {0.187759265, 3.1370976}, //
+
7414 {0.187192589, 3.13508272}, //
+
7415 {0.186499998, 3.1329}, //
+
7416 {0.185619131, 3.13068652}, //
+
7417 {0.184487656, 3.12855673}, //
+
7418 {0.183105558, 3.1265111}, //
+
7419 {0.181472838, 3.12454939}, //
+
7420 {0.17958951, 3.1226716}, //
+
7421 {0.177455559, 3.12087774}, //
+
7422 {0.175070986, 3.1191678}, //
+
7423 {0.172435805, 3.11754203}, //
+
7424 {0.169550002, 3.11599994}, //
+
7425 {0.167576537, 3.1139853}, //
+
7426 {0.166189507, 3.11247396}, //
+
7427 {0.165388882, 3.11146665}, //
+
7428 {0.165174693, 3.11096287}, //
+
7429 {0.165546909, 3.11096287}, //
+
7430 {0.16650556, 3.11146665}, //
+
7431 {0.168050617, 3.11247396}, //
+
7432 {0.170182094, 3.1139853}, //
+
7433 {0.172900006, 3.11599994}, //
+
7434 {0.178429008, 3.11913705}, //
+
7435 {0.184460491, 3.12252593}, //
+
7436 {0.190994442, 3.12616658}, //
+
7437 {0.198030859, 3.13005924}, //
+
7438 {0.205569759, 3.13420367}, //
+
7439 {0.213611111, 3.13860011}, //
+
7440 {0.222154945, 3.14324808}, //
+
7441 {0.231201231, 3.14814806}, //
+
7442 {0.24075, 3.15330005}, //
+
7443 {0.245682105, 3.15677357}, //
+
7444 {0.249945059, 3.15966058}, //
+
7445 {0.253538877, 3.16196108}, //
+
7446 {0.256463587, 3.16367531}, //
+
7447 {0.258719146, 3.16480303}, //
+
7448 {0.260305554, 3.16534448}, //
+
7449 {0.261222839, 3.16529942}, //
+
7450 {0.261470973, 3.16466784}, //
+
7451 {0.261049986, 3.16345}, //
+
7452 {0.260095686, 3.1618135}, //
+
7453 {0.25872159, 3.15992665}, //
+
7454 {0.256927788, 3.15778899}, //
+
7455 {0.254714191, 3.15540051}, //
+
7456 {0.252080858, 3.1527617}, //
+
7457 {0.249027774, 3.1498723}, //
+
7458 {0.245554939, 3.14673209}, //
+
7459 {0.241662338, 3.1433413}, //
+
7460 {0.237350002, 3.13969994}, //
+
7461 {0.233541355, 3.13589144}, //
+
7462 {0.229648769, 3.13199878}, //
+
7463 {0.225672215, 3.12802219}, //
+
7464 {0.221611723, 3.12396169}, //
+
7465 {0.217467278, 3.11981726}, //
+
7466 {0.213238895, 3.1155889}, //
+
7467 {0.208926544, 3.11127663}, //
+
7468 {0.200049996, 3.10240006}, //
+
7469 {0.197793826, 3.10018587}, //
+
7470 {0.19553642, 3.09805441}, //
+
7471 {0.193277776, 3.09600544}, //
+
7472 {0.191017896, 3.09403944}, //
+
7473 {0.188756794, 3.09215617}, //
+
7474 {0.18649444, 3.09035563}, //
+
7475 {0.184230864, 3.08863759}, //
+
7476 {0.181966051, 3.08700252}, //
+
7477 {0.179700002, 3.08544993}, //
+
7478 {0.17752777, 3.08401227}, //
+
7479 {0.175522223, 3.0826993}, //
+
7480 {0.17368333, 3.08151102}, //
+
7481 {0.172011107, 3.08044744}, //
+
7482 {0.170505553, 3.07950854}, //
+
7483 {0.169166669, 3.07869434}, //
+
7484 {0.16799444, 3.07800484}, //
+
7485 {0.166988894, 3.07744002}, //
+
7486 {0.166150004, 3.0769999}, //
+
7487 {0.165436417, 3.07664323}, //
+
7488 {0.163421601, 3.07563591}, //
+
7489 {0.16312778, 3.07548881}, //
+
7490 {0.162917897, 3.0753839}, //
+
7491 {0.162791982, 3.07532096}, //
+
7492 {0.162750006, 3.07529998}, //
+
7493 {0.165436417, 3.07529998}, //
+
7494 {0.166150004, 3.07529998}, //
+
7495 {0.173465431, 3.07529998}, //
+
7496 {0.174841359, 3.07529998}, //
+
7497 {0.176300004, 3.07529998}, //
+
7498 {0.181914195, 3.07525802}, //
+
7499 {0.186690122, 3.07513213}, //
+
7500 {0.190627784, 3.07492232}, //
+
7501 {0.193727165, 3.07462835}, //
+
7502 {0.195988268, 3.0742507}, //
+
7503 {0.197411105, 3.07378888}, //
+
7504 {0.197995678, 3.07324314}, //
+
7505 {0.19774197, 3.07261348}, //
+
7506 {0.196649998, 3.07189989}, //
+
7507 {0.196566045, 3.07114434}, //
+
7508 {0.196314201, 3.07038879}, //
+
7509 {0.19589445, 3.06963325}, //
+
7510 {0.195306793, 3.0688777}, //
+
7511 {0.194551229, 3.06812215}, //
+
7512 {0.193627775, 3.0673666}, //
+
7513 {0.192536414, 3.06661105}, //
+
7514 {0.191277161, 3.0658555}, //
+
7515 {0.189850003, 3.06509995}, //
+
7516 {0.188349381, 3.06433392}, //
+
7517 {0.186847538, 3.06352472}, //
+
7518 {0.185344443, 3.06267214}, //
+
7519 {0.183840126, 3.06177664}, //
+
7520 {0.182334572, 3.06083775}, //
+
7521 {0.180827782, 3.05985546}, //
+
7522 {0.179319754, 3.05883026}, //
+
7523 {0.17781049, 3.05776167}, //
+
7524 {0.176300004, 3.05664992}, //
+
7525 {0.174883336, 3.05555868}, //
+
7526 {0.173633337, 3.05455112}, //
+
7527 {0.172549993, 3.05362773}, //
+
7528 {0.171633333, 3.05278826}, //
+
7529 {0.170883328, 3.05203271}, //
+
7530 {0.170300007, 3.05136108}, //
+
7531 {0.169883341, 3.05077338}, //
+
7532 {0.169633329, 3.05026984}, //
+
7533 {0.169550002, 3.04984999}, //
+
7534 {0.169717282, 3.04953527}, //
+
7535 {0.170219138, 3.04934621}, //
+
7536 {0.171055555, 3.04928327}, //
+
7537 {0.172226548, 3.04934621}, //
+
7538 {0.173732102, 3.04953527}, //
+
7539 {0.175572217, 3.04984999}, //
+
7540 {0.177746907, 3.05029082}, //
+
7541 {0.180256173, 3.05085731}, //
+
7542 {0.1831, 3.05154991}, //
+
7543 {0.186090127, 3.05232644}, //
+
7544 {0.189038277, 3.05314517}, //
+
7545 {0.19194445, 3.05400562}, //
+
7546 {0.194808647, 3.05490804}, //
+
7547 {0.197630867, 3.05585241}, //
+
7548 {0.200411111, 3.05683899}, //
+
7549 {0.203149378, 3.05786729}, //
+
7550 {0.205845684, 3.05893755}, //
+
7551 {0.208499998, 3.06005001}, //
+
7552 {0.211122841, 3.06114078}, //
+
7553 {0.21370247, 3.06214619}, //
+
7554 {0.216238886, 3.06306672}, //
+
7555 {0.218732104, 3.0639019}, //
+
7556 {0.221182093, 3.06465197}, //
+
7557 {0.223588884, 3.06531668}, //
+
7558 {0.225952476, 3.06589627}, //
+
7559 {0.22827284, 3.06639075}, //
+
7560 {0.230550006, 3.06680012}, //
+
7561 {0.234579623, 3.0674715}, //
+
7562 {0.237601846, 3.06797528}, //
+
7563 {0.240246296, 3.06841612}, //
+
7564 {0.24062407, 3.06847906}, //
+
7565 {0.24075, 3.06850004}, //
+
7566 {0.24062407, 3.06841612}, //
+
7567 {0.240246296, 3.06816411}, //
+
7568 {0.238735184, 3.06715679}, //
+
7569 {0.237601846, 3.06640124}, //
+
7570 {0.230550006, 3.06170011}, //
+
7571 {0.228251845, 3.06011605}, //
+
7572 {0.225868523, 3.05836415}, //
+
7573 {0.223399997, 3.05644441}, //
+
7574 {0.220846295, 3.05435681}, //
+
7575 {0.218207404, 3.05210114}, //
+
7576 {0.215483338, 3.04967785}, //
+
7577 {0.212674081, 3.04708648}, //
+
7578 {0.209779635, 3.04432726}, //
+
7579 {0.206799999, 3.04139996}, //
+
7580 {0.203746915, 3.03840923}, //
+
7581 {0.200609878, 3.03545928}, //
+
7582 {0.197388887, 3.0325501}, //
+
7583 {0.194083944, 3.02968144}, //
+
7584 {0.190695062, 3.0268538}, //
+
7585 {0.187222227, 3.02406669}, //
+
7586 {0.183665439, 3.02132034}, //
+
7587 {0.180024698, 3.01861477}, //
+
7588 {0.176300004, 3.01594996}, //
+
7589 {0.172659263, 3.01329565}, //
+
7590 {0.169270366, 3.01059937}, //
+
7591 {0.166133329, 3.00786114}, //
+
7592 {0.163248152, 3.00508094}, //
+
7593 {0.160614818, 3.00225854}, //
+
7594 {0.15823333, 2.99939442}, //
+
7595 {0.1561037, 2.99648833}, //
+
7596 {0.154225931, 2.99354005}, //
+
7597 {0.152600005, 2.99055004}, //
+
7598 {0.149578393, 2.98665738}, //
+
7599 {0.146558031, 2.98251295}, //
+
7600 {0.143538892, 2.97811675}, //
+
7601 {0.14052099, 2.97346854}, //
+
7602 {0.137504324, 2.96856856}, //
+
7603 {0.134488896, 2.96341658}, //
+
7604 {0.131474689, 2.95801306}, //
+
7605 {0.128461733, 2.95235729}, //
+
7606 {0.12545, 2.94645}, //
+
7607 {0.119511113, 2.93691182}, //
+
7608 {0.113738887, 2.9278748}, //
+
7609 {0.108133331, 2.91933894}, //
+
7610 {0.102694444, 2.91130424}, //
+
7611 {0.0974222198, 2.90377092}, //
+
7612 {0.0923166648, 2.89673901}, //
+
7613 {0.0873777792, 2.89020801}, //
+
7614 {0.0826055557, 2.8841784}, //
+
7615 {0.0780000016, 2.87864995}, //
+
7616 {0.0752919763, 2.87511349}, //
+
7617 {0.0732123479, 2.87203765}, //
+
7618 {0.0717611089, 2.8694222}, //
+
7619 {0.0709382743, 2.86726737}, //
+
7620 {0.070743829, 2.86557293}, //
+
7621 {0.0711777806, 2.86433887}, //
+
7622 {0.0722401217, 2.86356544}, //
+
7623 {0.073930867, 2.8632524}, //
+
7624 {0.0762500018, 2.86339998}, //
+
7625 {0.0790827125, 2.86400747}, //
+
7626 {0.0822919756, 2.86507416}, //
+
7627 {0.0858777761, 2.86660004}, //
+
7628 {0.0898401216, 2.86858511}, //
+
7629 {0.0941790119, 2.87102962}, //
+
7630 {0.0988944471, 2.87393332}, //
+
7631 {0.10398642, 2.87729621}, //
+
7632 {0.109454937, 2.88111854}, //
+
7633 {0.1153, 2.88540006}, //
+
7634 {0.116758645, 2.88613462}, //
+
7635 {0.118134566, 2.88682723}, //
+
7636 {0.119427778, 2.88747787}, //
+
7637 {0.120638274, 2.88808632}, //
+
7638 {0.121766046, 2.88865304}, //
+
7639 {0.122811109, 2.8891778}, //
+
7640 {0.123773456, 2.8896606}, //
+
7641 {0.124653086, 2.89010119}, //
+
7642 {0.12545, 2.89050007}, //
+
7643 {0.126184568, 2.89087772}, //
+
7644 {0.126877159, 2.89125562}, //
+
7645 {0.127527773, 2.89163327}, //
+
7646 {0.128136426, 2.89201117}, //
+
7647 {0.128703088, 2.89238882}, //
+
7648 {0.129227772, 2.89276671}, //
+
7649 {0.129227772, 2.89276671}, //
+
7650 {0.12545, 2.88709998}, //
+
7651 {0.123110496, 2.88364816}, //
+
7652 {0.120603085, 2.88007045}, //
+
7653 {0.117927775, 2.87636662}, //
+
7654 {0.115084566, 2.87253714}, //
+
7655 {0.112073459, 2.86858153}, //
+
7656 {0.108894445, 2.86450005}, //
+
7657 {0.105547532, 2.86029267}, //
+
7658 {0.102032714, 2.85595918}, //
+
7659 {0.0983500034, 2.85150003}, //
+
7660 {0.094645679, 2.84704065}, //
+
7661 {0.0910660475, 2.8427074}, //
+
7662 {0.087611109, 2.83850002}, //
+
7663 {0.0842808634, 2.83441854}, //
+
7664 {0.0810753107, 2.83046293}, //
+
7665 {0.0779944435, 2.82663321}, //
+
7666 {0.0750382692, 2.82292962}, //
+
7667 {0.0722067878, 2.81935191}, //
+
7668 {0.0694999993, 2.81590009}, //
+
7669 {0.0669709891, 2.81261611}, //
+
7670 {0.0646506175, 2.80954194}, //
+
7671 {0.062538892, 2.80667782}, //
+
7672 {0.0606358014, 2.8040235}, //
+
7673 {0.0589413568, 2.801579}, //
+
7674 {0.0574555546, 2.79934454}, //
+
7675 {0.0561783947, 2.79731965}, //
+
7676 {0.0551098771, 2.79550505}, //
+
7677 {0.0542499982, 2.79390001}, //
+
7678 {0.0543123446, 2.79320741}, //
+
7679 {0.054499384, 2.79264069}, //
+
7680 {0.0548111126, 2.79220009}, //
+
7681 {0.0552475303, 2.79188514}, //
+
7682 {0.055808641, 2.79169631}, //
+
7683 {0.0564944446, 2.79163337}, //
+
7684 {0.0573049374, 2.79169631}, //
+
7685 {0.0582401231, 2.79188514}, //
+
7686 {0.0593000017, 2.79220009}, //
+
7687 {0.0605166666, 2.79261923}, //
+
7688 {0.061900001, 2.7931211}, //
+
7689 {0.0634500012, 2.79370546}, //
+
7690 {0.0651666671, 2.7943728}, //
+
7691 {0.0670500025, 2.79512286}, //
+
7692 {0.0691, 2.79595566}, //
+
7693 {0.0713166669, 2.79687095}, //
+
7694 {0.0737000033, 2.79786921}, //
+
7695 {0.0762500018, 2.79894996}, //
+
7696 {0.0789148137, 2.80008268}, //
+
7697 {0.0816203728, 2.80121422}, //
+
7698 {0.0843666643, 2.80234456}, //
+
7699 {0.087153703, 2.80347347}, //
+
7700 {0.0899814814, 2.80460119}, //
+
7701 {0.0928499997, 2.80572772}, //
+
7702 {0.0957592577, 2.80685306}, //
+
7703 {0.0987092629, 2.8079772}, //
+
7704 {0.1017, 2.80909991}, //
+
7705 {0.104658641, 2.81021237}, //
+
7706 {0.107490122, 2.81128263}, //
+
7707 {0.110194445, 2.81231117}, //
+
7708 {0.112771608, 2.81329751}, //
+
7709 {0.115221605, 2.81424189}, //
+
7710 {0.117544442, 2.81514454}, //
+
7711 {0.119740121, 2.81600499}, //
+
7712 {0.121808641, 2.81682348}, //
+
7713 {0.123750001, 2.81760001}, //
+
7714 {0.125533953, 2.81835556}, //
+
7715 {0.127108023, 2.81911111}, //
+
7716 {0.128472224, 2.81986666}, //
+
7717 {0.129626542, 2.82062221}, //
+
7718 {0.130570993, 2.82137775}, //
+
7719 {0.13130556, 2.8221333}, //
+
7720 {0.131830245, 2.82288885}, //
+
7721 {0.132145062, 2.8236444}, //
+
7722 {0.132249996, 2.82439995}, //
+
7723 {0.132942587, 2.82431602}, //
+
7724 {0.133509263, 2.82406425}, //
+
7725 {0.133949995, 2.8236444}, //
+
7726 {0.134264812, 2.8230567}, //
+
7727 {0.134453699, 2.82230115}, //
+
7728 {0.134516671, 2.82137775}, //
+
7729 {0.134453699, 2.82028651}, //
+
7730 {0.134264812, 2.81902719}, //
+
7731 {0.133949995, 2.81760001}, //
+
7732 {0.133530244, 2.81605744}, //
+
7733 {0.13302654, 2.81442952}, //
+
7734 {0.132438883, 2.81271672}, //
+
7735 {0.131767288, 2.81091857}, //
+
7736 {0.131011724, 2.8090353}, //
+
7737 {0.130172223, 2.80706668}, //
+
7738 {0.129248768, 2.80501294}, //
+
7739 {0.12824136, 2.80287409}, //
+
7740 {0.127149999, 2.80064988}, //
+
7741 {0.125995681, 2.79837275}, //
+
7742 {0.124799386, 2.79605246}, //
+
7743 {0.123561114, 2.79368877}, //
+
7744 {0.122280866, 2.79128218}, //
+
7745 {0.120958641, 2.78883219}, //
+
7746 {0.119594447, 2.78633881}, //
+
7747 {0.118188269, 2.78380251}, //
+
7748 {0.116740122, 2.78122282}, //
+
7749 {0.115249999, 2.77859998}, //
+
7750 {0.113791361, 2.77602911}, //
+
7751 {0.112415433, 2.7735827}, //
+
7752 {0.111122221, 2.77126122}, //
+
7753 {0.109911725, 2.76906419}, //
+
7754 {0.108783953, 2.76699209}, //
+
7755 {0.10773889, 2.76504445}, //
+
7756 {0.106776543, 2.7632215}, //
+
7757 {0.105896913, 2.76152349}, //
+
7758 {0.105099998, 2.75994992}, //
+
7759 {0.103620373, 2.75842834}, //
+
7760 {0.102181479, 2.75686359}, //
+
7761 {0.100783333, 2.75525546}, //
+
7762 {0.0994259268, 2.75360441}, //
+
7763 {0.0981092602, 2.75190997}, //
+
7764 {0.0968333334, 2.75017214}, //
+
7765 {0.0955981463, 2.74839139}, //
+
7766 {0.0944037065, 2.74656725}, //
+
7767 {0.093249999, 2.74469995}, //
+
7768 {0.0921796262, 2.74288464}, //
+
7769 {0.0912351832, 2.74119377}, //
+
7770 {0.0904166698, 2.73962784}, //
+
7771 {0.0897240713, 2.73818636}, //
+
7772 {0.08915741, 2.73686981}, //
+
7773 {0.0887166634, 2.73567772}, //
+
7774 {0.088401854, 2.73461056}, //
+
7775 {0.0882129595, 2.73366785}, //
+
7776 {0.0881500021, 2.73285007}, //
+
7777 {0.0881500021, 2.73150682}, //
+
7778 {0.0881500021, 2.73096108}, //
+
7779 {0.0881500021, 2.72944999}, //
+
7780 {0.0883172825, 2.72951293}, //
+
7781 {0.0888191387, 2.72970176}, //
+
7782 {0.1017, 2.73455}, //
+
7783 {0.104763582, 2.73574567}, //
+
7784 {0.107909873, 2.73706603}, //
+
7785 {0.111138888, 2.73851109}, //
+
7786 {0.114450619, 2.74008083}, //
+
7787 {0.117845058, 2.74177527}, //
+
7788 {0.121322222, 2.74359441}, //
+
7789 {0.124882102, 2.74553823}, //
+
7790 {0.128524691, 2.74760675}, //
+
7791 {0.132249996, 2.74979997}, //
+
7792 {0.13597469, 2.75209808}, //
+
7793 {0.139615431, 2.75448155}, //
+
7794 {0.143172219, 2.7569499}, //
+
7795 {0.146645069, 2.7595036}, //
+
7796 {0.150033951, 2.76214266}, //
+
7797 {0.153338894, 2.76486659}, //
+
7798 {0.15655987, 2.76767588}, //
+
7799 {0.159696907, 2.77057028}, //
+
7800 {0.162750006, 2.77355003}, //
+
7801 {0.164218515, 2.77494574}, //
+
7802 {0.16560185, 2.77613282}, //
+
7803 {0.166899994, 2.77711105}, //
+
7804 {0.168112963, 2.77788091}, //
+
7805 {0.169240743, 2.77844191}, //
+
7806 {0.170283332, 2.77879453}, //
+
7807 {0.171240747, 2.77893829}, //
+
7808 {0.172112957, 2.77887344}, //
+
7809 {0.172900006, 2.77859998}, //
+
7810 {0.173592597, 2.77818036}, //
+
7811 {0.174159259, 2.77767658}, //
+
7812 {0.174600005, 2.77708888}, //
+
7813 {0.174914822, 2.77641726}, //
+
7814 {0.175103709, 2.77566171}, //
+
7815 {0.175166667, 2.77482224}, //
+
7816 {0.175103709, 2.77389884}, //
+
7817 {0.174914822, 2.77289128}, //
+
7818 {0.174600005, 2.77180004}, //
+
7819 {0.174201846, 2.77065611}, //
+
7820 {0.173762962, 2.76946902}, //
+
7821 {0.173283339, 2.76823878}, //
+
7822 {0.17276296, 2.76696539}, //
+
7823 {0.172201857, 2.76564884}, //
+
7824 {0.171599999, 2.7642889}, //
+
7825 {0.170957401, 2.76288581}, //
+
7826 {0.170274079, 2.76143956}, //
+
7827 {0.169550002, 2.75994992}, //
+
7828 {0.168836415, 2.75920486}, //
+
7829 {0.168206796, 2.75845861}, //
+
7830 {0.167661116, 2.75771117}, //
+
7831 {0.167199388, 2.7569623}, //
+
7832 {0.166821599, 2.75621223}, //
+
7833 {0.166527778, 2.75546122}, //
+
7834 {0.166317895, 2.75470853}, //
+
7835 {0.16619198, 2.75395489}, //
+
7836 {0.166150004, 2.75320005}, //
+
7837 {0.166150004, 2.74640012}, //
+
7838 {0.166779622, 2.74698758}, //
+
7839 {0.167157412, 2.74723959}, //
+
7840 {0.167283326, 2.74715567}, //
+
7841 {0.167157412, 2.74673581}, //
+
7842 {0.166779622, 2.74598026}, //
+
7843 {0.166150004, 2.74488878}, //
+
7844 {0.165268525, 2.74346185}, //
+
7845 {0.164135188, 2.74169874}, //
+
7846 {0.162750006, 2.73959994}, //
+
7847 {0.161176547, 2.7372396}, //
+
7848 {0.159478396, 2.73466921}, //
+
7849 {0.157655552, 2.73188877}, //
+
7850 {0.15570803, 2.72889876}, //
+
7851 {0.1536358, 2.72569871}, //
+
7852 {0.151438892, 2.72228885}, //
+
7853 {0.149117291, 2.71866918}, //
+
7854 {0.146670982, 2.71483946}, //
+
7855 {0.144099995, 2.71079993}, //
+
7856 {0.141445056, 2.70667648}, //
+
7857 {0.138746917, 2.702595}, //
+
7858 {0.136005551, 2.69855547}, //
+
7859 {0.133220986, 2.69455814}, //
+
7860 {0.130393207, 2.69060254}, //
+
7861 {0.127522215, 2.6866889}, //
+
7862 {0.124608025, 2.68281722}, //
+
7863 {0.121650614, 2.67898774}, //
+
7864 {0.118649997, 2.67519999}, //
+
7865 {0.115638889, 2.67147541}, //
+
7866 {0.112627774, 2.66783452}, //
+
7867 {0.109616667, 2.66427779}, //
+
7868 {0.106605552, 2.66080499}, //
+
7869 {0.103594445, 2.65741611}, //
+
7870 {0.10058333, 2.65411115}, //
+
7871 {0.0975722224, 2.65089011}, //
+
7872 {0.0945611075, 2.647753}, //
+
7873 {0.09155, 2.64470005}, //
+
7874 {0.0894401222, 2.64185619}, //
+
7875 {0.0876216069, 2.63934684}, //
+
7876 {0.0860944465, 2.63717222}, //
+
7877 {0.084858641, 2.63533211}, //
+
7878 {0.083914198, 2.63382649}, //
+
7879 {0.0832611099, 2.63265562}, //
+
7880 {0.0828993842, 2.63181925}, //
+
7881 {0.0828290135, 2.63131738}, //
+
7882 {0.0830499977, 2.63115001}, //
+
7883 {0.0835530832, 2.63125443}, //
+
7884 {0.0843067914, 2.63156724}, //
+
7885 {0.0853111148, 2.6320889}, //
+
7886 {0.0865660459, 2.63281918}, //
+
7887 {0.0880716071, 2.63375807}, //
+
7888 {0.089827776, 2.63490558}, //
+
7889 {0.0918345675, 2.6362617}, //
+
7890 {0.0940919742, 2.63782644}, //
+
7891 {0.0966000035, 2.63960004}, //
+
7892 {0.0992648154, 2.64153028}, //
+
7893 {0.101970367, 2.64354324}, //
+
7894 {0.104716666, 2.64563894}, //
+
7895 {0.107503705, 2.64781737}, //
+
7896 {0.110331483, 2.6500783}, //
+
7897 {0.113200001, 2.65242219}, //
+
7898 {0.116109259, 2.65484881}, //
+
7899 {0.119059257, 2.65735793}, //
+
7900 {0.122050002, 2.65995002}, //
+
7901 {0.1250716, 2.66256285}, //
+
7902 {0.128091976, 2.66513515}, //
+
7903 {0.131111115, 2.66766667}, //
+
7904 {0.134129018, 2.67015743}, //
+
7905 {0.137145683, 2.67260742}, //
+
7906 {0.140161112, 2.67501664}, //
+
7907 {0.143175304, 2.67738509}, //
+
7908 {0.146188274, 2.67971301}, //
+
7909 {0.149200007, 2.68199992}, //
+
7910 {0.152001858, 2.68616605}, //
+
7911 {0.154385179, 2.68961978}, //
+
7912 {0.156350002, 2.69236112}, //
+
7913 {0.157896295, 2.69439006}, //
+
7914 {0.159024075, 2.69570684}, //
+
7915 {0.15973334, 2.696311}, //
+
7916 {0.160024077, 2.69620299}, //
+
7917 {0.159896299, 2.69538283}, //
+
7918 {0.159349993, 2.69385004}, //
+
7919 {0.158511117, 2.69186664}, //
+
7920 {0.157505557, 2.68967223}, //
+
7921 {0.156333327, 2.68726659}, //
+
7922 {0.154994443, 2.68464994}, //
+
7923 {0.153488889, 2.6818223}, //
+
7924 {0.151816666, 2.67878342}, //
+
7925 {0.149977773, 2.67553329}, //
+
7926 {0.147972226, 2.67207217}, //
+
7927 {0.145799994, 2.66840005}, //
+
7928 {0.142033339, 2.66376233}, //
+
7929 {0.138266668, 2.65887165}, //
+
7930 {0.134499997, 2.65372777}, //
+
7931 {0.130733326, 2.64833093}, //
+
7932 {0.12696667, 2.64268088}, //
+
7933 {0.123199999, 2.63677788}, //
+
7934 {0.119433336, 2.63062167}, //
+
7935 {0.115666665, 2.62421227}, //
+
7936 {0.111900002, 2.6175499}, //
+
7937 {0.111144446, 2.6167531}, //
+
7938 {0.11038889, 2.61587358}, //
+
7939 {0.109633334, 2.61491108}, //
+
7940 {0.108877778, 2.61386609}, //
+
7941 {0.108122222, 2.61273837}, //
+
7942 {0.107366666, 2.61152768}, //
+
7943 {0.10661111, 2.6102345}, //
+
7944 {0.105855554, 2.60885859}, //
+
7945 {0.105099998, 2.60739994}, //
+
7946 {0.10368333, 2.6052382}, //
+
7947 {0.102433331, 2.6032865}, //
+
7948 {0.101350002, 2.60154438}, //
+
7949 {0.100433335, 2.6000123}, //
+
7950 {0.0996833369, 2.59869003}, //
+
7951 {0.0991000012, 2.59757781}, //
+
7952 {0.0986833349, 2.5966754}, //
+
7953 {0.0984333307, 2.59598279}, //
+
7954 {0.0983500034, 2.59549999}, //
+
7955 {0.0983913615, 2.59523702}, //
+
7956 {0.0985154286, 2.59518147}, //
+
7957 {0.0987222195, 2.59533334}, //
+
7958 {0.0990117267, 2.59569263}, //
+
7959 {0.0993839502, 2.59625936}, //
+
7960 {0.0998388901, 2.59703326}, //
+
7961 {0.100376546, 2.59801483}, //
+
7962 {0.100996912, 2.59920359}, //
+
7963 {0.1017, 2.6006}, //
+
7964 {0.103315435, 2.60365319}, //
+
7965 {0.105139509, 2.60679007}, //
+
7966 {0.107172221, 2.6100111}, //
+
7967 {0.109413579, 2.61331606}, //
+
7968 {0.111863583, 2.61670494}, //
+
7969 {0.114522219, 2.62017775}, //
+
7970 {0.117389508, 2.62373447}, //
+
7971 {0.120465435, 2.62737536}, //
+
7972 {0.123750001, 2.63109994}, //
+
7973 {0.127201855, 2.63491845}, //
+
7974 {0.130779624, 2.6388185}, //
+
7975 {0.134483337, 2.64280009}, //
+
7976 {0.138312966, 2.64686298}, //
+
7977 {0.142268524, 2.65100741}, //
+
7978 {0.146349996, 2.65523338}, //
+
7979 {0.150557414, 2.65954065}, //
+
7980 {0.154890746, 2.6639297}, //
+
7981 {0.159349993, 2.66840005}, //
+
7982 {0.164396912, 2.67338467}, //
+
7983 {0.168982103, 2.67778277}, //
+
7984 {0.173105553, 2.68159437}, //
+
7985 {0.17676729, 2.6848197}, //
+
7986 {0.179967284, 2.68745875}, //
+
7987 {0.182705551, 2.68951106}, //
+
7988 {0.184982106, 2.6909771}, //
+
7989 {0.186796919, 2.69185686}, //
+
7990 {0.188150004, 2.69215012}, //
+
7991 {0.189074069, 2.69198275}, //
+
7992 {0.189579636, 2.69148088}, //
+
7993 {0.189666674, 2.6906445}, //
+
7994 {0.189335182, 2.68947339}, //
+
7995 {0.188585192, 2.68796802}, //
+
7996 {0.187416673, 2.68612766}, //
+
7997 {0.185829625, 2.68395305}, //
+
7998 {0.183824077, 2.68144393}, //
+
7999 {0.181400001, 2.67860007}, //
+
8000 {0.17870371, 2.67554688}, //
+
8001 {0.175881475, 2.67240977}, //
+
8002 {0.17293334, 2.66918898}, //
+
8003 {0.16985926, 2.66588402}, //
+
8004 {0.166659266, 2.66249514}, //
+
8005 {0.163333327, 2.65902233}, //
+
8006 {0.159881487, 2.65546536}, //
+
8007 {0.156303704, 2.65182471}, //
+
8008 {0.152600005, 2.6480999}, //
+
8009 {0.149682716, 2.64435363}, //
+
8010 {0.146975309, 2.64064813}, //
+
8011 {0.144477785, 2.63698339}, //
+
8012 {0.142190129, 2.63335919}, //
+
8013 {0.14011234, 2.629776}, //
+
8014 {0.13824445, 2.62623334}, //
+
8015 {0.136586413, 2.62273145}, //
+
8016 {0.135138273, 2.61927032}, //
+
8017 {0.133900002, 2.61584997}, //
+
8018 {0.13279815, 2.61252403}, //
+
8019 {0.131737038, 2.60932398}, //
+
8020 {0.130716667, 2.60625005}, //
+
8021 {0.129737034, 2.60330176}, //
+
8022 {0.128798142, 2.6004796}, //
+
8023 {0.127900004, 2.59778333}, //
+
8024 {0.127042592, 2.59521294}, //
+
8025 {0.126225919, 2.59276843}, //
+
8026 {0.12545, 2.59045005}, //
+
8027 {0.125408024, 2.58748031}, //
+
8028 {0.125282094, 2.5845933}, //
+
8029 {0.125072226, 2.58178878}, //
+
8030 {0.124778397, 2.57906723}, //
+
8031 {0.124400616, 2.57642841}, //
+
8032 {0.123938888, 2.57387233}, //
+
8033 {0.123393208, 2.57139874}, //
+
8034 {0.122763582, 2.56900811}, //
+
8035 {0.122050002, 2.56669998}, //
+
8036 {0.121378392, 2.56531477}, //
+
8037 {0.120874688, 2.56418157}, //
+
8038 {0.12053889, 2.56329989}, //
+
8039 {0.120370984, 2.56267047}, //
+
8040 {0.120370984, 2.56229258}, //
+
8041 {0.12053889, 2.56216669}, //
+
8042 {0.120874688, 2.56229258}, //
+
8043 {0.121378392, 2.56267047}, //
+
8044 {0.122050002, 2.56329989}, //
+
8045 {0.123894446, 2.56514454}, //
+
8046 {0.125066668, 2.5663166}, //
+
8047 {0.131422222, 2.57267213}, //
+
8048 {0.133427784, 2.57467771}, //
+
8049 {0.135600001, 2.57684994}, //
+
8050 {0.137845069, 2.57909513}, //
+
8051 {0.140046909, 2.58129692}, //
+
8052 {0.142205551, 2.58345556}, //
+
8053 {0.144320995, 2.58557105}, //
+
8054 {0.14639321, 2.58764315}, //
+
8055 {0.148422226, 2.58967233}, //
+
8056 {0.152350619, 2.59360051}, //
+
8057 {0.154249996, 2.59549999}, //
+
8058 {0.156117901, 2.59740925}, //
+
8059 {0.15794383, 2.59935927}, //
+
8060 {0.159727782, 2.60135007}, //
+
8061 {0.161469758, 2.6033814}, //
+
8062 {0.163169757, 2.60545373}, //
+
8063 {0.164827779, 2.6075666}, //
+
8064 {0.166443825, 2.60972047}, //
+
8065 {0.168017894, 2.61191487}, //
+
8066 {0.169550002, 2.61415005}, //
+
8067 {0.169550002, 2.6154933}, //
+
8068 {0.169550002, 2.6160388}, //
+
8069 {0.169550002, 2.61650062}, //
+
8070 {0.169550002, 2.6175499}, //
+
8071 {0.170232102, 2.61822152}, //
+
8072 {0.17078951, 2.6187253}, //
+
8073 {0.171222225, 2.61906099}, //
+
8074 {0.171530247, 2.61922908}, //
+
8075 {0.171713576, 2.61922908}, //
+
8076 {0.171772227, 2.61906099}, //
+
8077 {0.17170617, 2.6187253}, //
+
8078 {0.171515435, 2.61822152}, //
+
8079 {0.171200007, 2.6175499}, //
+
8080 {0.170811728, 2.61669016}, //
+
8081 {0.17038025, 2.61562157}, //
+
8082 {0.169905558, 2.61434436}, //
+
8083 {0.169387653, 2.61285853}, //
+
8084 {0.16882655, 2.61116409}, //
+
8085 {0.168222219, 2.60926104}, //
+
8086 {0.167574689, 2.60714936}, //
+
8087 {0.166883945, 2.60482907}, //
+
8088 {0.166150004, 2.60229993}, //
+
8089 {0.165352464, 2.5996871}, //
+
8090 {0.164470986, 2.5971148}, //
+
8091 {0.163505554, 2.59458327}, //
+
8092 {0.16245617, 2.59209251}, //
+
8093 {0.161322832, 2.58964252}, //
+
8094 {0.160105556, 2.5872333}, //
+
8095 {0.158804327, 2.58486485}, //
+
8096 {0.15741913, 2.58253694}, //
+
8097 {0.155949995, 2.58025002}, //
+
8098 {0.154470369, 2.57728028}, //
+
8099 {0.153031483, 2.57439327}, //
+
8100 {0.151633337, 2.57158899}, //
+
8101 {0.150275931, 2.56886721}, //
+
8102 {0.148959264, 2.56622839}, //
+
8103 {0.147683337, 2.5636723}, //
+
8104 {0.14644815, 2.56119871}, //
+
8105 {0.145253703, 2.55880809}, //
+
8106 {0.144099995, 2.55649996}, //
+
8107 {0.14302963, 2.55432773}, //
+
8108 {0.14208518, 2.55232215}, //
+
8109 {0.141266674, 2.55048323}, //
+
8110 {0.140574068, 2.5488112}, //
+
8111 {0.140007406, 2.54730558}, //
+
8112 {0.13956666, 2.54596663}, //
+
8113 {0.139251858, 2.54479456}, //
+
8114 {0.139062956, 2.54378891}, //
+
8115 {0.138999999, 2.54294991}, //
+
8116 {0.139083952, 2.54301286}, //
+
8117 {0.139335796, 2.54320192}, //
+
8118 {0.140343204, 2.54395747}, //
+
8119 {0.142022222, 2.54521656}, //
+
8120 {0.143113583, 2.54603529}, //
+
8121 {0.145799994, 2.54804993}, //
+
8122 {0.147352472, 2.54928756}, //
+
8123 {0.148987651, 2.55073404}, //
+
8124 {0.150705561, 2.55238891}, //
+
8125 {0.152506173, 2.55425239}, //
+
8126 {0.154389501, 2.55632472}, //
+
8127 {0.15635556, 2.55860567}, //
+
8128 {0.15840432, 2.561095}, //
+
8129 {0.160535797, 2.56379318}, //
+
8130 {0.162750006, 2.56669998}, //
+
8131 {0.182327777, 2.58627772}, //
+
8132 {0.189525306, 2.59347534}, //
+
8133 {0.19325, 2.59719992}, //
+
8134 {0.196933329, 2.60079932}, //
+
8135 {0.200450003, 2.60406423}, //
+
8136 {0.203799993, 2.60699439}, //
+
8137 {0.206983328, 2.60959005}, //
+
8138 {0.209999993, 2.61185122}, //
+
8139 {0.212850004, 2.61377788}, //
+
8140 {0.215533331, 2.6153698}, //
+
8141 {0.218050003, 2.61662722}, //
+
8142 {0.220400006, 2.6175499}, //
+
8143 {0.221711725, 2.61805439}, //
+
8144 {0.222646907, 2.61805606}, //
+
8145 {0.223205552, 2.61755562}, //
+
8146 {0.223387659, 2.61655235}, //
+
8147 {0.223193213, 2.61504698}, //
+
8148 {0.222622216, 2.61303878}, //
+
8149 {0.221674696, 2.61052847}, //
+
8150 {0.220350623, 2.60751534}, //
+
8151 {0.218649998, 2.60400009}, //
+
8152 {0.216625929, 2.60010743}, //
+
8153 {0.21430926, 2.595963}, //
+
8154 {0.211700007, 2.59156656}, //
+
8155 {0.208798155, 2.58691859}, //
+
8156 {0.205603704, 2.58201861}, //
+
8157 {0.202116668, 2.57686663}, //
+
8158 {0.198337033, 2.57146287}, //
+
8159 {0.194264814, 2.56580734}, //
+
8160 {0.189899996, 2.55990005}, //
+
8161 {0.185419753, 2.55312228}, //
+
8162 {0.181023464, 2.54634452}, //
+
8163 {0.176711112, 2.53956676}, //
+
8164 {0.172482714, 2.53278899}, //
+
8165 {0.168338269, 2.52601123}, //
+
8166 {0.164277777, 2.51923323}, //
+
8167 {0.160301238, 2.51245546}, //
+
8168 {0.156408638, 2.5056777}, //
+
8169 {0.152600005, 2.49889994}, //
+
8170 {0.148958638, 2.49228883}, //
+
8171 {0.145567894, 2.48601103}, //
+
8172 {0.142427772, 2.48006678}, //
+
8173 {0.139538273, 2.4744556}, //
+
8174 {0.136899382, 2.46917772}, //
+
8175 {0.134511113, 2.4642334}, //
+
8176 {0.132373452, 2.45962214}, //
+
8177 {0.130486414, 2.45534444}, //
+
8178 {0.128849998, 2.45140004}, //
+
8179 {0.127422839, 2.44707656}, //
+
8180 {0.126163587, 2.44312835}, //
+
8181 {0.125072226, 2.43955564}, //
+
8182 {0.124148764, 2.43635798}, //
+
8183 {0.123393208, 2.43353581}, //
+
8184 {0.122805558, 2.43108892}, //
+
8185 {0.1223858, 2.42901731}, //
+
8186 {0.122133948, 2.42732096}, //
+
8187 {0.122050002, 2.42600012}, //
+
8188 {0.122070991, 2.42490864}, //
+
8189 {0.122133948, 2.42390132}, //
+
8190 {0.122238889, 2.42297769}, //
+
8191 {0.1223858, 2.42213821}, //
+
8192 {0.122574694, 2.42138267}, //
+
8193 {0.122805558, 2.42071104}, //
+
8194 {0.123078398, 2.42012334}, //
+
8195 {0.123393208, 2.4196198}, //
+
8196 {0.123750001, 2.41919994}, //
+
8197 {0.124148764, 2.41888523}, //
+
8198 {0.124589503, 2.4186964}, //
+
8199 {0.125072226, 2.41863322}, //
+
8200 {0.125596911, 2.4186964}, //
+
8201 {0.126163587, 2.41888523}, //
+
8202 {0.126772225, 2.41919994}, //
+
8203 {0.127422839, 2.41964078}, //
+
8204 {0.12811543, 2.4202075}, //
+
8205 {0.128849998, 2.42090011}, //
+
8206 {0.129605561, 2.42169762}, //
+
8207 {0.13036111, 2.42257905}, //
+
8208 {0.131116673, 2.42354441}, //
+
8209 {0.131872222, 2.42459393}, //
+
8210 {0.132627785, 2.42572713}, //
+
8211 {0.133383334, 2.42694449}, //
+
8212 {0.134138882, 2.42824578}, //
+
8213 {0.134894446, 2.42963076}, //
+
8214 {0.135649994, 2.43109989}, //
+
8215 {0.136395067, 2.43180299}, //
+
8216 {0.137141362, 2.43242335}, //
+
8217 {0.137888893, 2.43296123}, //
+
8218 {0.138637647, 2.43341613}, //
+
8219 {0.139387652, 2.4337883}, //
+
8220 {0.140138894, 2.43407774}, //
+
8221 {0.140891358, 2.43428469}, //
+
8222 {0.141645059, 2.43440866}, //
+
8223 {0.142399997, 2.43444991}, //
+
8224 {0.143889502, 2.43644381}, //
+
8225 {0.145335808, 2.43789196}, //
+
8226 {0.146738887, 2.43879437}, //
+
8227 {0.148098767, 2.43915129}, //
+
8228 {0.149415433, 2.43896246}, //
+
8229 {0.150688887, 2.43822789}, //
+
8230 {0.151919141, 2.43694758}, //
+
8231 {0.153106168, 2.43512154}, //
+
8232 {0.154249996, 2.43274999}, //
+
8233 {0.155341357, 2.43003273}, //
+
8234 {0.156348765, 2.42714763}, //
+
8235 {0.15727222, 2.42409444}, //
+
8236 {0.158111721, 2.4208734}, //
+
8237 {0.158867285, 2.41748452}, //
+
8238 {0.159538895, 2.41392779}, //
+
8239 {0.160126537, 2.41020298}, //
+
8240 {0.160630241, 2.40631056}, //
+
8241 {0.161050007, 2.40225005}, //
+
8242 {0.161322832, 2.39808464}, //
+
8243 {0.161385804, 2.39387727}, //
+
8244 {0.161238894, 2.3896277}, //
+
8245 {0.1608821, 2.3853364}, //
+
8246 {0.160315439, 2.38100314}, //
+
8247 {0.159538895, 2.37662768}, //
+
8248 {0.158552468, 2.3722105}, //
+
8249 {0.157356173, 2.36775112}, //
+
8250 {0.155949995, 2.36325002}, //
+
8251 {0.154595673, 2.35899997}, //
+
8252 {0.153532714, 2.35529447}, //
+
8253 {0.152761117, 2.35213327}, //
+
8254 {0.152280867, 2.34951663}, //
+
8255 {0.15209198, 2.34744453}, //
+
8256 {0.15219444, 2.34591675}, //
+
8257 {0.152588278, 2.34493327}, //
+
8258 {0.153273463, 2.34449434}, //
+
8259 {0.154249996, 2.34459996}, //
+
8260 {0.155487657, 2.34512401}, //
+
8261 {0.156933948, 2.34594083}, //
+
8262 {0.158588886, 2.34704995}, //
+
8263 {0.16045247, 2.34845185}, //
+
8264 {0.162524685, 2.35014629}, //
+
8265 {0.164805561, 2.35213327}, //
+
8266 {0.167295069, 2.35441303}, //
+
8267 {0.169993207, 2.35698509}, //
+
8268 {0.172900006, 2.35984993}, //
+
8269 {0.175879627, 2.36291361}, //
+
8270 {0.178774074, 2.36605978}, //
+
8271 {0.18158333, 2.36928892}, //
+
8272 {0.184307411, 2.37260056}, //
+
8273 {0.186946303, 2.37599516}, //
+
8274 {0.189500004, 2.37947226}, //
+
8275 {0.191968516, 2.38303208}, //
+
8276 {0.194351852, 2.38667464}, //
+
8277 {0.196649998, 2.39039993}, //
+
8278 {0.198098153, 2.3925302}, //
+
8279 {0.199420378, 2.39440989}, //
+
8280 {0.200616673, 2.39603877}, //
+
8281 {0.201687038, 2.39741731}, //
+
8282 {0.202631488, 2.39854503}, //
+
8283 {0.203449994, 2.39942217}, //
+
8284 {0.204142585, 2.40004873}, //
+
8285 {0.204709262, 2.40042472}, //
+
8286 {0.205149993, 2.40054989}, //
+
8287 {0.205485806, 2.40046597}, //
+
8288 {0.20573765, 2.4002142}, //
+
8289 {0.205905557, 2.39979434}, //
+
8290 {0.20598951, 2.39920688}, //
+
8291 {0.20598951, 2.39845133}, //
+
8292 {0.205905557, 2.39752769}, //
+
8293 {0.20573765, 2.39643645}, //
+
8294 {0.205485806, 2.39517713}, //
+
8295 {0.205149993, 2.39374995}, //
+
8296 {0.204751238, 2.3922081}, //
+
8297 {0.204310492, 2.39058208}, //
+
8298 {0.203827783, 2.38887215}, //
+
8299 {0.203303084, 2.38707829}, //
+
8300 {0.202736422, 2.3852005}, //
+
8301 {0.202127784, 2.38323879}, //
+
8302 {0.201477155, 2.38119316}, //
+
8303 {0.200784564, 2.37906361}, //
+
8304 {0.200049996, 2.37684989}, //
+
8305 {0.199315429, 2.37533879}, //
+
8306 {0.198622838, 2.3738277}, //
+
8307 {0.197972223, 2.3723166}, //
+
8308 {0.197363585, 2.3708055}, //
+
8309 {0.196796909, 2.3692944}, //
+
8310 {0.196272224, 2.36778331}, //
+
8311 {0.195789501, 2.36627221}, //
+
8312 {0.195348769, 2.36476111}, //
+
8313 {0.194949999, 2.36325002}, //
+
8314 {0.194593206, 2.36179137}, //
+
8315 {0.194278389, 2.36041546}, //
+
8316 {0.194005549, 2.35912228}, //
+
8317 {0.193774685, 2.35791183}, //
+
8318 {0.193585798, 2.35678387}, //
+
8319 {0.193438888, 2.35573888}, //
+
8320 {0.193333954, 2.35477662}, //
+
8321 {0.193270981, 2.35389686}, //
+
8322 {0.19325, 2.35310006}, //
+
8323 {0.193145066, 2.34992099}, //
+
8324 {0.19283025, 2.34640622}, //
+
8325 {0.19230555, 2.34255552}, //
+
8326 {0.191570982, 2.33836913}, //
+
8327 {0.190626547, 2.33384681}, //
+
8328 {0.189472228, 2.32898879}, //
+
8329 {0.188108027, 2.32379508}, //
+
8330 {0.186533958, 2.31826544}, //
+
8331 {0.184750006, 2.3124001}, //
+
8332 {0.182809263, 2.3062098}, //
+
8333 {0.180742592, 2.29968405}, //
+
8334 {0.178550005, 2.29282212}, //
+
8335 {0.176231489, 2.28562474}, //
+
8336 {0.173787042, 2.27809143}, //
+
8337 {0.171216667, 2.27022219}, //
+
8338 {0.168520376, 2.26201725}, //
+
8339 {0.165698141, 2.25347662}, //
+
8340 {0.162750006, 2.24460006}, //
+
8341 {0.161994442, 2.24158835}, //
+
8342 {0.161238894, 2.23857522}, //
+
8343 {0.16048333, 2.23556113}, //
+
8344 {0.159727782, 2.23254561}, //
+
8345 {0.158972219, 2.2295289}, //
+
8346 {0.15821667, 2.226511}, //
+
8347 {0.157461107, 2.22349191}, //
+
8348 {0.156705558, 2.22047162}, //
+
8349 {0.155949995, 2.2174499}, //
+
8350 {0.154533327, 2.21387172}, //
+
8351 {0.153283328, 2.21066976}, //
+
8352 {0.152199998, 2.2078445}, //
+
8353 {0.151283339, 2.2053957}, //
+
8354 {0.150533333, 2.20332336}, //
+
8355 {0.149949998, 2.20162773}, //
+
8356 {0.149533331, 2.20030856}, //
+
8357 {0.149283335, 2.19936609}, //
+
8358 {0.149200007, 2.19880009}, //
+
8359 {0.149283335, 2.19857907}, //
+
8360 {0.149533331, 2.19864941}, //
+
8361 {0.149949998, 2.19901109}, //
+
8362 {0.150533333, 2.19966412}, //
+
8363 {0.151283339, 2.20060873}, //
+
8364 {0.152199998, 2.20184445}, //
+
8365 {0.153283328, 2.20337152}, //
+
8366 {0.154533327, 2.20519018}, //
+
8367 {0.155949995, 2.20729995}, //
+
8368 {0.157586426, 2.21052027}, //
+
8369 {0.159473464, 2.21415925}, //
+
8370 {0.16161111, 2.21821666}, //
+
8371 {0.163999379, 2.22269249}, //
+
8372 {0.16663827, 2.22758698}, //
+
8373 {0.169527784, 2.2328999}, //
+
8374 {0.172667906, 2.23863149}, //
+
8375 {0.176058635, 2.24478149}, //
+
8376 {0.179700002, 2.25134993}, //
+
8377 {0.183508635, 2.25813818}, //
+
8378 {0.187401235, 2.26492524}, //
+
8379 {0.191377774, 2.27171111}, //
+
8380 {0.195438266, 2.27849579}, //
+
8381 {0.199582711, 2.28527904}, //
+
8382 {0.203811109, 2.29206109}, //
+
8383 {0.20812346, 2.29884195}, //
+
8384 {0.21251975, 2.30562162}, //
+
8385 {0.216999993, 2.3124001}, //
+
8386 {0.219906792, 2.31532788}, //
+
8387 {0.222604945, 2.31808877}, //
+
8388 {0.225094438, 2.32068324}, //
+
8389 {0.227375314, 2.32311106}, //
+
8390 {0.229447529, 2.32537222}, //
+
8391 {0.231311113, 2.32746673}, //
+
8392 {0.232966051, 2.32939434}, //
+
8393 {0.234412342, 2.33115554}, //
+
8394 {0.235650003, 2.33275008}, //
+
8395 {0.237664819, 2.33543634}, //
+
8396 {0.23848334, 2.33652782}, //
+
8397 {0.240498155, 2.33921409}, //
+
8398 {0.24075, 2.33955002}, //
+
8399 {0.240708023, 2.33948708}, //
+
8400 {0.240582094, 2.33929825}, //
+
8401 {0.24007839, 2.3385427}, //
+
8402 {0.239700615, 2.33797598}, //
+
8403 {0.237350002, 2.33445001}, //
+
8404 {0.236552462, 2.3332963}, //
+
8405 {0.235670984, 2.33210182}, //
+
8406 {0.234705552, 2.33086658}, //
+
8407 {0.233656168, 2.3295908}, //
+
8408 {0.232522845, 2.32827401}, //
+
8409 {0.231305555, 2.32691669}, //
+
8410 {0.230004326, 2.32551861}, //
+
8411 {0.228619128, 2.32407951}, //
+
8412 {0.227149993, 2.32259989}, //
+
8413 {0.226383954, 2.32108879}, //
+
8414 {0.225574687, 2.31957769}, //
+
8415 {0.224722221, 2.3180666}, //
+
8416 {0.223826542, 2.3165555}, //
+
8417 {0.22288765, 2.3150444}, //
+
8418 {0.221905559, 2.31353331}, //
+
8419 {0.22088024, 2.31202221}, //
+
8420 {0.219811723, 2.31051111}, //
+
8421 {0.218700007, 2.30900002}, //
+
8422 {0.21758765, 2.30754137}, //
+
8423 {0.216517285, 2.30616546}, //
+
8424 {0.215488896, 2.30487227}, //
+
8425 {0.214502469, 2.30366182}, //
+
8426 {0.213558018, 2.30253386}, //
+
8427 {0.212655559, 2.30148888}, //
+
8428 {0.211795062, 2.30052662}, //
+
8429 {0.210976541, 2.29964685}, //
+
8430 {0.210199997, 2.29885006}, //
+
8431 {0.208741352, 2.29710865}, //
+
8432 {0.207365438, 2.29490685}, //
+
8433 {0.206072226, 2.29224443}, //
+
8434 {0.20486173, 2.28912163}, //
+
8435 {0.203733951, 2.2855382}, //
+
8436 {0.202688888, 2.28149438}, //
+
8437 {0.201726541, 2.27699018}, //
+
8438 {0.20084691, 2.27202535}, //
+
8439 {0.200049996, 2.26659989}, //
+
8440 {0.199336424, 2.26089263}, //
+
8441 {0.198706791, 2.25505924}, //
+
8442 {0.19816111, 2.24909997}, //
+
8443 {0.197699383, 2.24301481}, //
+
8444 {0.197321609, 2.23680377}, //
+
8445 {0.197027773, 2.2304666}, //
+
8446 {0.196817905, 2.22400379}, //
+
8447 {0.196691975, 2.21741486}, //
+
8448 {0.196649998, 2.21070004}, //
+
8449 {0.195138887, 2.19863343}, //
+
8450 {0.194383338, 2.19260001}, //
+
8451 {0.192872226, 2.18053341}, //
+
8452 {0.192116663, 2.17449999}, //
+
8453 {0.191361114, 2.16846657}, //
+
8454 {0.190605551, 2.16243339}, //
+
8455 {0.189850003, 2.15639997}, //
+
8456 {0.189020991, 2.15054512}, //
+
8457 {0.188022837, 2.14502478}, //
+
8458 {0.186855555, 2.13983893}, //
+
8459 {0.185519129, 2.13498759}, //
+
8460 {0.184013575, 2.13047099}, //
+
8461 {0.182338893, 2.12628889}, //
+
8462 {0.180495068, 2.12244129}, //
+
8463 {0.1784821, 2.11892843}, //
+
8464 {0.176300004, 2.11575007}, //
+
8465 {0.173855558, 2.10796547}, //
+
8466 {0.171033338, 2.09967828}, //
+
8467 {0.167833328, 2.09088898}, //
+
8468 {0.164255559, 2.08159685}, //
+
8469 {0.160300002, 2.07180238}, //
+
8470 {0.155966669, 2.06150556}, //
+
8471 {0.151255563, 2.05070615}, //
+
8472 {0.146166667, 2.03940439}, //
+
8473 {0.140699998, 2.02760005}, //
+
8474 {0.134950623, 2.01562834}, //
+
8475 {0.128991365, 2.00382471}, //
+
8476 {0.122822225, 1.99218893}, //
+
8477 {0.116443209, 1.980721}, //
+
8478 {0.109854318, 1.96942103}, //
+
8479 {0.103055559, 1.95828891}, //
+
8480 {0.0960469171, 1.94732463}, //
+
8481 {0.0888283923, 1.93652844}, //
+
8482 {0.0813999996, 1.92589998}, //
+
8483 {0.0785876513, 1.92022288}, //
+
8484 {0.0761950612, 1.91525805}, //
+
8485 {0.074222222, 1.9110055}, //
+
8486 {0.0726691335, 1.90746546}, //
+
8487 {0.0715358034, 1.90463769}, //
+
8488 {0.070822224, 1.90252221}, //
+
8489 {0.0705283955, 1.90111911}, //
+
8490 {0.0706543177, 1.90042841}, //
+
8491 {0.0711999983, 1.90044999}, //
+
8492 {0.0721018538, 1.901016}, //
+
8493 {0.0732962936, 1.90195858}, //
+
8494 {0.0747833326, 1.90327775}, //
+
8495 {0.0765629634, 1.90497351}, //
+
8496 {0.078635186, 1.90704572}, //
+
8497 {0.0810000002, 1.9094944}, //
+
8498 {0.0836574063, 1.91231978}, //
+
8499 {0.0866074041, 1.91552162}, //
+
8500 {0.089850001, 1.91910005}, //
+
8501 {0.0932388902, 1.9228667}, //
+
8502 {0.0966277793, 1.92663336}, //
+
8503 {0.100016668, 1.93040001}, //
+
8504 {0.103405558, 1.93416667}, //
+
8505 {0.106794447, 1.93793333}, //
+
8506 {0.113572225, 1.94546664}, //
+
8507 {0.120350003, 1.95299995}, //
+
8508 {0.123644441, 1.95668328}, //
+
8509 {0.126727775, 1.96019995}, //
+
8510 {0.129600003, 1.96354997}, //
+
8511 {0.132261112, 1.96673334}, //
+
8512 {0.134711117, 1.96975005}, //
+
8513 {0.136950001, 1.97259998}, //
+
8514 {0.138977781, 1.97528338}, //
+
8515 {0.140794441, 1.97780001}, //
+
8516 {0.142399997, 1.98014998}, //
+
8517 {0.143071607, 1.98204994}, //
+
8518 {0.143575311, 1.98323894}, //
+
8519 {0.143911108, 1.98371661}, //
+
8520 {0.144079015, 1.98348331}, //
+
8521 {0.144079015, 1.98253894}, //
+
8522 {0.143911108, 1.98088336}, //
+
8523 {0.143575311, 1.9785167}, //
+
8524 {0.143071607, 1.97543883}, //
+
8525 {0.142399997, 1.97165}, //
+
8526 {0.141540125, 1.96733832}, //
+
8527 {0.140471607, 1.96269202}, //
+
8528 {0.139194444, 1.9577111}, //
+
8529 {0.137708649, 1.95239568}, //
+
8530 {0.136014193, 1.94674563}, //
+
8531 {0.134111106, 1.94076109}, //
+
8532 {0.131999388, 1.93444192}, //
+
8533 {0.129679009, 1.92778826}, //
+
8534 {0.127149999, 1.92079997}, //
+
8535 {0.124453701, 1.91364384}, //
+
8536 {0.121631481, 1.90648639}, //
+
8537 {0.118683331, 1.89932775}, //
+
8538 {0.115609258, 1.89216793}, //
+
8539 {0.112409256, 1.88500679}, //
+
8540 {0.109083332, 1.87784445}, //
+
8541 {0.108342491, 1.87630701}, //
+
8542 {0.107866049, 1.87568271}, //
+
8543 {0.102277778, 1.8686111}, //
+
8544 {0.0965623483, 1.86162341}, //
+
8545 {0.090719752, 1.85471976}, //
+
8546 {0.0847499967, 1.84790003}, //
+
8547 {0.0818012357, 1.84276855}, //
+
8548 {0.0789771602, 1.83792961}, //
+
8549 {0.0762777776, 1.83338332}, //
+
8550 {0.0737030879, 1.82912958}, //
+
8551 {0.0712530836, 1.82516849}, //
+
8552 {0.0689277798, 1.82149994}, //
+
8553 {0.0667271614, 1.81812406}, //
+
8554 {0.0646512359, 1.81504071}, //
+
8555 {0.0627000034, 1.81225002}, //
+
8556 {0.0609055571, 1.80972099}, //
+
8557 {0.0592777766, 1.80740058}, //
+
8558 {0.0578166656, 1.80528891}, //
+
8559 {0.0565222204, 1.80338585}, //
+
8560 {0.0553944446, 1.80169141}, //
+
8561 {0.0544333346, 1.80020559}, //
+
8562 {0.0536388904, 1.79892838}, //
+
8563 {0.0530111119, 1.79785991}, //
+
8564 {0.0525499992, 1.79700005}, //
+
8565 {0.0523604937, 1.79642224}, //
+
8566 {0.0525475293, 1.79617774}, //
+
8567 {0.0531111099, 1.79626667}, //
+
8568 {0.0540512353, 1.79668891}, //
+
8569 {0.0553679019, 1.79744446}, //
+
8570 {0.0570611097, 1.79853332}, //
+
8571 {0.0591308624, 1.79995561}, //
+
8572 {0.0615771599, 1.80171108}, //
+
8573 {0.0644000024, 1.80379999}, //
+
8574 {0.0681771636, 1.80846846}, //
+
8575 {0.071953088, 1.81342959}, //
+
8576 {0.0757277757, 1.81868339}, //
+
8577 {0.079501234, 1.8242296}, //
+
8578 {0.0832734555, 1.83006847}, //
+
8579 {0.0870444477, 1.8362}, //
+
8580 {0.0908141956, 1.84262407}, //
+
8581 {0.0945827141, 1.8493408}, //
+
8582 {0.0983500034, 1.85634995}, //
+
8583 {0.102053702, 1.86351609}, //
+
8584 {0.105631478, 1.87068081}, //
+
8585 {0.108342491, 1.87630701}, //
+
8586 {0.11332716, 1.88283825}, //
+
8587 {0.118661113, 1.89007783}, //
+
8588 {0.123867899, 1.89740121}, //
+
8589 {0.128947526, 1.90480864}, //
+
8590 {0.133900002, 1.91229999}, //
+
8591 {0.13865371, 1.91962409}, //
+
8592 {0.14311482, 1.92652965}, //
+
8593 {0.147283331, 1.93301666}, //
+
8594 {0.151159257, 1.93908513}, //
+
8595 {0.154742599, 1.94473517}, //
+
8596 {0.158033326, 1.94996667}, //
+
8597 {0.161031485, 1.95477962}, //
+
8598 {0.163737044, 1.95917404}, //
+
8599 {0.166150004, 1.96315002}, //
+
8600 {0.167587653, 1.9666549}, //
+
8601 {0.168900624, 1.96961415}, //
+
8602 {0.170088887, 1.97202778}, //
+
8603 {0.171152472, 1.97389567}, //
+
8604 {0.172091365, 1.97521794}, //
+
8605 {0.172905549, 1.97599447}, //
+
8606 {0.173595056, 1.97622526}, //
+
8607 {0.17415987, 1.97591054}, //
+
8608 {0.174600005, 1.97504997}, //
+
8609 {0.174914822, 1.97372842}, //
+
8610 {0.175103709, 1.97203028}, //
+
8611 {0.175166667, 1.96995556}, //
+
8612 {0.175103709, 1.96750426}, //
+
8613 {0.174914822, 1.9646765}, //
+
8614 {0.174600005, 1.96147227}, //
+
8615 {0.174159259, 1.95789135}, //
+
8616 {0.173592597, 1.95393395}, //
+
8617 {0.172900006, 1.94959998}, //
+
8618 {0.172112957, 1.94503582}, //
+
8619 {0.171240747, 1.94038761}, //
+
8620 {0.170283332, 1.93565559}, //
+
8621 {0.169240743, 1.93083954}, //
+
8622 {0.168112963, 1.92593956}, //
+
8623 {0.166899994, 1.92095554}, //
+
8624 {0.16560185, 1.91588771}, //
+
8625 {0.164218515, 1.91073585}, //
+
8626 {0.162750006, 1.90550005}, //
+
8627 {0.161239505, 1.90040064}, //
+
8628 {0.159730241, 1.89563584}, //
+
8629 {0.158222228, 1.89120555}, //
+
8630 {0.156715438, 1.88710988}, //
+
8631 {0.155209869, 1.88334882}, //
+
8632 {0.153705552, 1.87992227}, //
+
8633 {0.152202472, 1.87683022}, //
+
8634 {0.150700614, 1.87407279}, //
+
8635 {0.149200007, 1.87164998}, //
+
8636 {0.148486421, 1.8695302}, //
+
8637 {0.147856787, 1.86770427}, //
+
8638 {0.147311106, 1.86617219}, //
+
8639 {0.14710471, 1.86561871}, //
+
8640 {0.14655, 1.86484444}, //
+
8641 {0.146133333, 1.86415493}, //
+
8642 {0.145883337, 1.86359012}, //
+
8643 {0.145799994, 1.86315}, //
+
8644 {0.145841971, 1.86291909}, //
+
8645 {0.145967901, 1.86298215}, //
+
8646 {0.146177784, 1.86333895}, //
+
8647 {0.146471605, 1.86398947}, //
+
8648 {0.146849379, 1.86493397}, //
+
8649 {0.14710471, 1.86561871}, //
+
8650 {0.147133335, 1.86565864}, //
+
8651 {0.147883341, 1.86659753}, //
+
8652 {0.148800001, 1.86766112}, //
+
8653 {0.14988333, 1.8688494}, //
+
8654 {0.151133329, 1.87016237}, //
+
8655 {0.152549997, 1.87160003}, //
+
8656 {0.155572221, 1.87462223}, //
+
8657 {0.157083333, 1.87613332}, //
+
8658 {0.158594444, 1.87764442}, //
+
8659 {0.160105556, 1.87915552}, //
+
8660 {0.161616668, 1.88066661}, //
+
8661 {0.164638892, 1.88368893}, //
+
8662 {0.166150004, 1.88520002}, //
+
8663 {0.168405563, 1.88819015}, //
+
8664 {0.170661107, 1.89113832}, //
+
8665 {0.172916666, 1.8940444}, //
+
8666 {0.175172225, 1.89690864}, //
+
8667 {0.177427784, 1.89973092}, //
+
8668 {0.179683328, 1.90251112}, //
+
8669 {0.181938887, 1.90524936}, //
+
8670 {0.184194446, 1.90794563}, //
+
8671 {0.186450005, 1.91059995}, //
+
8672 {0.188674688, 1.91318083}, //
+
8673 {0.190815434, 1.91563451}, //
+
8674 {0.192872226, 1.91796112}, //
+
8675 {0.194845065, 1.92016053}, //
+
8676 {0.196733952, 1.92223275}, //
+
8677 {0.198538885, 1.92417777}, //
+
8678 {0.200259879, 1.92599571}, //
+
8679 {0.201896921, 1.92768645}, //
+
8680 {0.203449994, 1.92925}, //
+
8681 {0.204183951, 1.92927098}, //
+
8682 {0.204874694, 1.92933393}, //
+
8683 {0.205522224, 1.92943883}, //
+
8684 {0.206126541, 1.92958581}, //
+
8685 {0.206687659, 1.92977464}, //
+
8686 {0.207205549, 1.93000555}, //
+
8687 {0.20768024, 1.93027842}, //
+
8688 {0.208111733, 1.93059325}, //
+
8689 {0.208499998, 1.93095005}, //
+
8690 {0.208856791, 1.93128586}, //
+
8691 {0.209171608, 1.93153763}, //
+
8692 {0.209444448, 1.93170559}, //
+
8693 {0.209675312, 1.93178952}, //
+
8694 {0.209864199, 1.93178952}, //
+
8695 {0.21001111, 1.93170559}, //
+
8696 {0.210116044, 1.93153763}, //
+
8697 {0.210179016, 1.93128586}, //
+
8698 {0.210199997, 1.93095005}, //
+
8699 {0.210179016, 1.93057227}, //
+
8700 {0.210116044, 1.9301945}, //
+
8701 {0.21001111, 1.92981672}, //
+
8702 {0.209864199, 1.92943883}, //
+
8703 {0.209675312, 1.92906106}, //
+
8704 {0.209444448, 1.92868328}, //
+
8705 {0.209171608, 1.92830551}, //
+
8706 {0.208856791, 1.92792773}, //
+
8707 {0.208499998, 1.92754996}, //
+
8708 {0.208132714, 1.92718267}, //
+
8709 {0.207394451, 1.92644441}, //
+
8710 {0.206651241, 1.92570126}, //
+
8711 {0.206277773, 1.92532778}, //
+
8712 {0.205903083, 1.9249531}, //
+
8713 {0.205527157, 1.92457712}, //
+
8714 {0.205149993, 1.92420006}, //
+
8715 {0.204793215, 1.92380118}, //
+
8716 {0.204478398, 1.92336047}, //
+
8717 {0.204205558, 1.92287779}, //
+
8718 {0.203974694, 1.92235303}, //
+
8719 {0.203785807, 1.92178643}, //
+
8720 {0.203638881, 1.92117774}, //
+
8721 {0.203533947, 1.92052722}, //
+
8722 {0.20347099, 1.91983461}, //
+
8723 {0.203449994, 1.91910005}, //
+
8724 {0.203449994, 1.91721106}, //
+
8725 {0.203449994, 1.91674936}, //
+
8726 {0.203449994, 1.91637158}, //
+
8727 {0.203449994, 1.91574192}, //
+
8728 {0.203449994, 1.91569996}, //
+
8729 {0.203387037, 1.9149673}, //
+
8730 {0.20319815, 1.91276908}, //
+
8731 {0.202883333, 1.90910554}, //
+
8732 {0.202442586, 1.90397656}, //
+
8733 {0.201875925, 1.89738214}, //
+
8734 {0.201183334, 1.88932228}, //
+
8735 {0.200364813, 1.87979686}, //
+
8736 {0.199420378, 1.86880612}, //
+
8737 {0.198349997, 1.85634995}, //
+
8738 {0.197279632, 1.8424809}, //
+
8739 {0.196335182, 1.82722902}, //
+
8740 {0.195516661, 1.81059444}, //
+
8741 {0.19482407, 1.79257715}, //
+
8742 {0.194257408, 1.77317715}, //
+
8743 {0.193816662, 1.75239444}, //
+
8744 {0.193501845, 1.73022902}, //
+
8745 {0.193312958, 1.70668089}, //
+
8746 {0.19325, 1.68175006}, //
+
8747 {0.192651242, 1.66400683}, //
+
8748 {0.192343831, 1.64693272}, //
+
8749 {0.192327783, 1.63052773}, //
+
8750 {0.192603081, 1.61479199}, //
+
8751 {0.193169758, 1.59972537}, //
+
8752 {0.194027781, 1.58532774}, //
+
8753 {0.195177168, 1.57159936}, //
+
8754 {0.196617901, 1.55854011}, //
+
8755 {0.198349997, 1.54614997}, //
+
8756 {0.20030123, 1.53409445}, //
+
8757 {0.202377155, 1.52203894}, //
+
8758 {0.204577774, 1.5099833}, //
+
8759 {0.206903085, 1.49792778}, //
+
8760 {0.209353089, 1.48587227}, //
+
8761 {0.211927772, 1.47381663}, //
+
8762 {0.214627162, 1.46176112}, //
+
8763 {0.21745123, 1.4497056}, //
+
8764 {0.220400006, 1.43764997}, //
+
8765 {0.222656175, 1.42772472}, //
+
8766 {0.224913582, 1.41754878}, //
+
8767 {0.227172226, 1.40712225}, //
+
8768 {0.229432106, 1.39644504}, //
+
8769 {0.231693208, 1.38551724}, //
+
8770 {0.233955562, 1.37433887}, //
+
8771 {0.236219138, 1.36290991}, //
+
8772 {0.23848395, 1.35123026}, //
+
8773 {0.24075, 1.33930004}, //
+
8774 {0.24288024, 1.32527959}, //
+
8775 {0.244759873, 1.31335187}, //
+
8776 {0.246388882, 1.30351663}, //
+
8777 {0.247767285, 1.2957741}, //
+
8778 {0.248895064, 1.29012406}, //
+
8779 {0.249772221, 1.28656662}, //
+
8780 {0.250398755, 1.28510189}, //
+
8781 {0.250774682, 1.28572965}, //
+
8782 {0.2509, 1.28845}, //
+
8783 {0.250858039, 1.29276049}, //
+
8784 {0.250732094, 1.29815865}, //
+
8785 {0.250522226, 1.30464447}, //
+
8786 {0.250228405, 1.31221795}, //
+
8787 {0.249850616, 1.32087898}, //
+
8788 {0.249388888, 1.3306278}, //
+
8789 {0.248843208, 1.34146416}, //
+
8790 {0.248213574, 1.35338831}, //
+
8791 {0.247500002, 1.3664}, //
+
8792 {0.247458637, 1.37703884}, //
+
8793 {0.24733457, 1.38784444}, //
+
8794 {0.247127771, 1.3988167}, //
+
8795 {0.246838272, 1.4099555}, //
+
8796 {0.246466056, 1.42126107}, //
+
8797 {0.246011108, 1.4327333}, //
+
8798 {0.245473459, 1.44437218}, //
+
8799 {0.244853079, 1.45617783}, //
+
8800 {0.244149998, 1.46815002}, //
+
8801 {0.244170368, 1.47528577}, //
+
8802 {0.244231477, 1.48162651}, //
+
8803 {0.244333327, 1.48717225}, //
+
8804 {0.244475931, 1.49192286}, //
+
8805 {0.24465926, 1.49587834}, //
+
8806 {0.244883329, 1.49903893}, //
+
8807 {0.245148152, 1.50140429}, //
+
8808 {0.2454537, 1.50297475}, //
+
8809 {0.245800003, 1.50374997}, //
+
8810 {0.246177778, 1.50383461}, //
+
8811 {0.246555552, 1.50333273}, //
+
8812 {0.246933326, 1.50224447}, //
+
8813 {0.247311115, 1.5005697}, //
+
8814 {0.24768889, 1.49830866}, //
+
8815 {0.248066664, 1.49546111}, //
+
8816 {0.248444438, 1.49202716}, //
+
8817 {0.248822227, 1.48800683}, //
+
8818 {0.249200001, 1.48339999}, //
+
8819 {0.249640748, 1.47843766}, //
+
8820 {0.250207394, 1.47335064}, //
+
8821 {0.2509, 1.46813893}, //
+
8822 {0.251718521, 1.46280241}, //
+
8823 {0.252662957, 1.45734131}, //
+
8824 {0.253733337, 1.45175552}, //
+
8825 {0.254929632, 1.44604504}, //
+
8826 {0.256251842, 1.44020987}, //
+
8827 {0.257699996, 1.43425}, //
+
8828 {0.25849691, 1.4260031}, //
+
8829 {0.259376556, 1.41784012}, //
+
8830 {0.260338902, 1.40976107}, //
+
8831 {0.261383951, 1.40176606}, //
+
8832 {0.26251173, 1.39385498}, //
+
8833 {0.263722211, 1.38602781}, //
+
8834 {0.265015423, 1.37828457}, //
+
8835 {0.266391367, 1.37062526}, //
+
8836 {0.267850012, 1.36304998}, //
+
8837 {0.269360483, 1.35564196}, //
+
8838 {0.270869762, 1.34848452}, //
+
8839 {0.272377789, 1.34157777}, //
+
8840 {0.273884565, 1.3349216}, //
+
8841 {0.275390118, 1.32851601}, //
+
8842 {0.27689445, 1.32236111}, //
+
8843 {0.27839753, 1.31645679}, //
+
8844 {0.279899389, 1.31080306}, //
+
8845 {0.281399995, 1.30540001}, //
+
8846 {0.282827169, 1.30047834}, //
+
8847 {0.284086406, 1.29626918}, //
+
8848 {0.285177767, 1.29277217}, //
+
8849 {0.286101222, 1.28998768}, //
+
8850 {0.2868568, 1.28791547}, //
+
8851 {0.287444443, 1.28655553}, //
+
8852 {0.287864208, 1.28590798}, //
+
8853 {0.288116038, 1.28597283}, //
+
8854 {0.288199991, 1.28674996}, //
+
8855 {0.288199991, 1.28802967}, //
+
8856 {0.288199991, 1.2896018}, //
+
8857 {0.288199991, 1.30879998}, //
+
8858 {0.287486434, 1.31478083}, //
+
8859 {0.2868568, 1.32067907}, //
+
8860 {0.28631112, 1.32649446}, //
+
8861 {0.285849392, 1.33222711}, //
+
8862 {0.285471618, 1.33787715}, //
+
8863 {0.285177767, 1.34344447}, //
+
8864 {0.284967899, 1.34892905}, //
+
8865 {0.284841985, 1.3543309}, //
+
8866 {0.284799993, 1.35965002}, //
+
8867 {0.284883946, 1.36236787}, //
+
8868 {0.285135806, 1.36449933}, //
+
8869 {0.285555542, 1.3660444}, //
+
8870 {0.286143214, 1.36700308}, //
+
8871 {0.286898762, 1.36737525}, //
+
8872 {0.287822217, 1.36716115}, //
+
8873 {0.288913578, 1.36636055}, //
+
8874 {0.290172845, 1.36497343}, //
+
8875 {0.291599989, 1.36300004}, //
+
8876 {0.293173462, 1.36055553}, //
+
8877 {0.294871598, 1.35773337}, //
+
8878 {0.296694458, 1.35453331}, //
+
8879 {0.29864198, 1.35095561}, //
+
8880 {0.300714195, 1.347}, //
+
8881 {0.302911103, 1.34266663}, //
+
8882 {0.305232704, 1.33795559}, //
+
8883 {0.307678998, 1.33286667}, //
+
8884 {0.310250014, 1.32739997}, //
+
8885 {0.312883347, 1.32175493}, //
+
8886 {0.31551668, 1.31610858}, //
+
8887 {0.318150014, 1.31046116}, //
+
8888 {0.320783347, 1.30481231}, //
+
8889 {0.32341668, 1.29916239}, //
+
8890 {0.326050013, 1.29351115}, //
+
8891 {0.328683347, 1.28785861}, //
+
8892 {0.33131668, 1.28220499}, //
+
8893 {0.333950013, 1.27655005}, //
+
8894 {0.336551845, 1.27094686}, //
+
8895 {0.339068532, 1.26542652}, //
+
8896 {0.341500014, 1.2599889}, //
+
8897 {0.343846291, 1.2546339}, //
+
8898 {0.346107394, 1.24936175}, //
+
8899 {0.348283321, 1.24417222}, //
+
8900 {0.350374073, 1.23906541}, //
+
8901 {0.35237962, 1.23404133}, //
+
8902 {0.354299992, 1.22909999}, //
+
8903 {0.356125921, 1.22447217}, //
+
8904 {0.357825935, 1.22038889}, //
+
8905 {0.359400004, 1.21685004}, //
+
8906 {0.360848159, 1.2138555}, //
+
8907 {0.362170368, 1.21140552}, //
+
8908 {0.363366663, 1.20949996}, //
+
8909 {0.364437044, 1.20813894}, //
+
8910 {0.365115851, 1.20755196}, //
+
8911 {0.36515063, 1.2074697}, //
+
8912 {0.365528405, 1.20671415}, //
+
8913 {0.365822226, 1.20629442}, //
+
8914 {0.366032094, 1.20621049}, //
+
8915 {0.366158038, 1.20646238}, //
+
8916 {0.3662, 1.20704997}, //
+
8917 {0.365381479, 1.20732224}, //
+
8918 {0.365115851, 1.20755196}, //
+
8919 {0.364688903, 1.20856106}, //
+
8920 {0.364143223, 1.20998824}, //
+
8921 {0.363513589, 1.21175122}, //
+
8922 {0.362800002, 1.21385002}, //
+
8923 {0.362716049, 1.21631479}, //
+
8924 {0.36246419, 1.21919811}, //
+
8925 {0.362044454, 1.22249997}, //
+
8926 {0.361456782, 1.22622037}, //
+
8927 {0.360701233, 1.23035932}, //
+
8928 {0.359777778, 1.23491669}, //
+
8929 {0.358686417, 1.2398926}, //
+
8930 {0.35742715, 1.24528706}, //
+
8931 {0.356000006, 1.25109994}, //
+
8932 {0.354583323, 1.25717533}, //
+
8933 {0.353333324, 1.26333451}, //
+
8934 {0.35225001, 1.26957774}, //
+
8935 {0.35133332, 1.27590489}, //
+
8936 {0.350583345, 1.28231609}, //
+
8937 {0.349999994, 1.28881109}, //
+
8938 {0.349583328, 1.29539013}, //
+
8939 {0.349333346, 1.30205309}, //
+
8940 {0.349249989, 1.30879998}, //
+
8941 {0.349249989, 1.31313336}, //
+
8942 {0.349249989, 1.31708884}, //
+
8943 {0.349249989, 1.33420002}, //
+
8944 {0.349291354, 1.33524942}, //
+
8945 {0.349415421, 1.33613086}, //
+
8946 {0.34962222, 1.33684444}, //
+
8947 {0.34991172, 1.33739007}, //
+
8948 {0.350283951, 1.33776796}, //
+
8949 {0.350738883, 1.33797777}, //
+
8950 {0.351276547, 1.33801973}, //
+
8951 {0.351896912, 1.33789384}, //
+
8952 {0.352600008, 1.33759999}, //
+
8953 {0.353313595, 1.33718026}, //
+
8954 {0.353943199, 1.3366766}, //
+
8955 {0.354488879, 1.3360889}, //
+
8956 {0.354950607, 1.33541727}, //
+
8957 {0.355328381, 1.33466172}, //
+
8958 {0.355622232, 1.33382225}, //
+
8959 {0.3558321, 1.33289874}, //
+
8960 {0.355958015, 1.33189142}, //
+
8961 {0.356000006, 1.33080006}, //
+
8962 {0.356041968, 1.3296982}, //
+
8963 {0.356167912, 1.328637}, //
+
8964 {0.35637778, 1.32761669}, //
+
8965 {0.356671602, 1.32663703}, //
+
8966 {0.357049376, 1.32569814}, //
+
8967 {0.357511103, 1.32480001}, //
+
8968 {0.358056784, 1.32394254}, //
+
8969 {0.358686417, 1.32312596}, //
+
8970 {0.359400004, 1.32235003}, //
+
8971 {0.359400004, 1.30879998}, //
+
8972 {0.360259891, 1.30781424}, //
+
8973 {0.361328393, 1.30636787}, //
+
8974 {0.362605542, 1.30446112}, //
+
8975 {0.364091367, 1.30209386}, //
+
8976 {0.365785807, 1.2992661}, //
+
8977 {0.367688894, 1.29597783}, //
+
8978 {0.369800627, 1.29222906}, //
+
8979 {0.372120976, 1.28801978}, //
+
8980 {0.374650002, 1.28334999}, //
+
8981 {0.377335817, 1.27832472}, //
+
8982 {0.380104333, 1.27304876}, //
+
8983 {0.382955551, 1.26752222}, //
+
8984 {0.3858895, 1.2617451}, //
+
8985 {0.388906181, 1.25571728}, //
+
8986 {0.392005563, 1.24943888}, //
+
8987 {0.395187646, 1.24290991}, //
+
8988 {0.398452461, 1.23613024}, //
+
8989 {0.401800007, 1.22909999}, //
+
8990 {0.405167907, 1.2220068}, //
+
8991 {0.408493817, 1.2150383}, //
+
8992 {0.411777765, 1.20819449}, //
+
8993 {0.415019751, 1.20147526}, //
+
8994 {0.418219745, 1.19488084}, //
+
8995 {0.421377778, 1.18841112}, //
+
8996 {0.424493819, 1.18206608}, //
+
8997 {0.427567899, 1.17584562}, //
+
8998 {0.430599988, 1.16974998}, //
+
8999 {0.434241354, 1.16318142}, //
+
9000 {0.437632084, 1.15703154}, //
+
9001 {0.440772235, 1.15129995}, //
+
9002 {0.44366172, 1.14598703}, //
+
9003 {0.446300626, 1.14109254}, //
+
9004 {0.448688895, 1.13661671}, //
+
9005 {0.450826555, 1.1325593}, //
+
9006 {0.452713579, 1.12892032}, //
+
9007 {0.454349995, 1.1257}, //
+
9008 {0.455818504, 1.12351727}, //
+
9009 {0.457201838, 1.12150252}, //
+
9010 {0.458499998, 1.11965561}, //
+
9011 {0.459712952, 1.11797655}, //
+
9012 {0.460840732, 1.11646545}, //
+
9013 {0.461883336, 1.1151222}, //
+
9014 {0.462840736, 1.11394691}, //
+
9015 {0.46371296, 1.11293948}, //
+
9016 {0.46450001, 1.11210001}, //
+
9017 {0.465213567, 1.11141789}, //
+
9018 {0.465843201, 1.11086047}, //
+
9019 {0.466388881, 1.11042774}, //
+
9020 {0.466850609, 1.1101197}, //
+
9021 {0.467228383, 1.10993648}, //
+
9022 {0.467522234, 1.10987782}, //
+
9023 {0.467732102, 1.10994387}, //
+
9024 {0.467858016, 1.1101346}, //
+
9025 {0.467900008, 1.11045003}, //
+
9026 {0.467920989, 1.11086917}, //
+
9027 {0.467983961, 1.11137104}, //
+
9028 {0.468088895, 1.11195552}, //
+
9029 {0.468235791, 1.11262286}, //
+
9030 {0.468424678, 1.1133728}, //
+
9031 {0.468655556, 1.1142056}, //
+
9032 {0.468928397, 1.11512101}, //
+
9033 {0.469243199, 1.11611915}, //
+
9034 {0.469599992, 1.11720002}, //
+
9035 {0.469914824, 1.11835432}, //
+
9036 {0.470103711, 1.11955059}, //
+
9037 {0.470166653, 1.12078893}, //
+
9038 {0.470103711, 1.12206912}, //
+
9039 {0.469914824, 1.12339139}, //
+
9040 {0.469599992, 1.1247555}, //
+
9041 {0.469159245, 1.12616169}, //
+
9042 {0.468592584, 1.12760985}, //
+
9043 {0.467900008, 1.12909997}, //
+
9044 {0.467900008, 1.13059139}, //
+
9045 {0.467900008, 1.13133883}, //
+
9046 {0.467900008, 1.13208771}, //
+
9047 {0.467900008, 1.13584995}, //
+
9048 {0.468025297, 1.13942838}, //
+
9049 {0.468401223, 1.14263022}, //
+
9050 {0.469027787, 1.1454556}, //
+
9051 {0.469904929, 1.14790428}, //
+
9052 {0.471032709, 1.14997649}, //
+
9053 {0.472411126, 1.15167224}, //
+
9054 {0.474040121, 1.15299141}, //
+
9055 {0.475919753, 1.153934}, //
+
9056 {0.478049994, 1.15450001}, //
+
9057 {0.480358034, 1.15468955}, //
+
9058 {0.482748777, 1.15450251}, //
+
9059 {0.48522222, 1.15393889}, //
+
9060 {0.487778395, 1.15299881}, //
+
9061 {0.490417272, 1.15168214}, //
+
9062 {0.49313888, 1.14998889}, //
+
9063 {0.495943218, 1.14791918}, //
+
9064 {0.498830259, 1.14547288}, //
+
9065 {0.501800001, 1.14265001}, //
+
9066 {0.503227174, 1.1412648}, //
+
9067 {0.504486442, 1.14013147}, //
+
9068 {0.505577803, 1.13925004}, //
+
9069 {0.506501257, 1.13862038}, //
+
9070 {0.507256806, 1.1382426}, //
+
9071 {0.507844448, 1.13811672}, //
+
9072 {0.508264184, 1.1382426}, //
+
9073 {0.508516073, 1.13862038}, //
+
9074 {0.508599997, 1.13925004}, //
+
9075 {0.508537054, 1.14013088}, //
+
9076 {0.508348167, 1.14126229}, //
+
9077 {0.508033335, 1.14264441}, //
+
9078 {0.507592618, 1.14427722}, //
+
9079 {0.507025898, 1.14616048}, //
+
9080 {0.506333351, 1.14829445}, //
+
9081 {0.505514801, 1.15067899}, //
+
9082 {0.504570365, 1.15331423}, //
+
9083 {0.503499985, 1.15620005}, //
+
9084 {0.502304316, 1.15916979}, //
+
9085 {0.500983953, 1.1620568}, //
+
9086 {0.499538898, 1.16486108}, //
+
9087 {0.497969151, 1.16758275}, //
+
9088 {0.49627468, 1.17022157}, //
+
9089 {0.494455546, 1.17277777}, //
+
9090 {0.492511719, 1.17525125}, //
+
9091 {0.4904432, 1.17764199}, //
+
9092 {0.488249987, 1.17995}, //
+
9093 {0.486697525, 1.18335867}, //
+
9094 {0.485062331, 1.18756235}, //
+
9095 {0.483344436, 1.19256115}, //
+
9096 {0.481543839, 1.19835496}, //
+
9097 {0.479660481, 1.20494378}, //
+
9098 {0.477694452, 1.21232772}, //
+
9099 {0.475645691, 1.22050679}, //
+
9100 {0.473514199, 1.22948086}, //
+
9101 {0.471300006, 1.23924994}, //
+
9102 {0.469001859, 1.24951112}, //
+
9103 {0.466618508, 1.25993884}, //
+
9104 {0.464150012, 1.27053332}, //
+
9105 {0.46159631, 1.28129447}, //
+
9106 {0.458957404, 1.29222226}, //
+
9107 {0.456233323, 1.30331671}, //
+
9108 {0.453424066, 1.31457782}, //
+
9109 {0.450529635, 1.32600558}, //
+
9110 {0.447549999, 1.33759999}, //
+
9111 {0.444622219, 1.34913146}, //
+
9112 {0.441861123, 1.3603704}, //
+
9113 {0.439266652, 1.37131667}, //
+
9114 {0.436838895, 1.38197041}, //
+
9115 {0.434577763, 1.39233148}, //
+
9116 {0.432483345, 1.40240002}, //
+
9117 {0.430555552, 1.41217589}, //
+
9118 {0.428794444, 1.42165923}, //
+
9119 {0.42719999, 1.43085003}, //
+
9120 {0.425153702, 1.44679749}, //
+
9121 {0.423525929, 1.46299565}, //
+
9122 {0.42231667, 1.4794445}, //
+
9123 {0.421525925, 1.49614382}, //
+
9124 {0.421153694, 1.51309383}, //
+
9125 {0.421200007, 1.53029442}, //
+
9126 {0.421664804, 1.5477457}, //
+
9127 {0.422548145, 1.56544757}, //
+
9128 {0.42385, 1.58340001}, //
+
9129 {0.424595058, 1.59265375}, //
+
9130 {0.425341368, 1.60232592}, //
+
9131 {0.426088899, 1.61241663}, //
+
9132 {0.426837653, 1.62292588}, //
+
9133 {0.427587658, 1.63385367}, //
+
9134 {0.428338885, 1.64520001}, //
+
9135 {0.429091364, 1.65696478}, //
+
9136 {0.429845065, 1.66914821}, //
+
9137 {0.430599988, 1.68175006}, //
+
9138 {0.430579007, 1.69428885}, //
+
9139 {0.430516064, 1.70628333}, //
+
9140 {0.4304111, 1.71773338}, //
+
9141 {0.430264205, 1.72863889}, //
+
9142 {0.430075318, 1.73899996}, //
+
9143 {0.429844439, 1.74881661}, //
+
9144 {0.429571599, 1.75808895}, //
+
9145 {0.429256797, 1.76681662}, //
+
9146 {0.428900003, 1.77499998}, //
+
9147 {0.428501844, 1.78280616}, //
+
9148 {0.428062975, 1.79040241}, //
+
9149 {0.427583337, 1.79778886}, //
+
9150 {0.427062958, 1.80496538}, //
+
9151 {0.42650184, 1.81193209}, //
+
9152 {0.425900012, 1.81868887}, //
+
9153 {0.425257415, 1.82523584}, //
+
9154 {0.424574077, 1.83157289}, //
+
9155 {0.42385, 1.83770001}, //
+
9156 {0.423094451, 1.84080553}, //
+
9157 {0.422338903, 1.84407783}, //
+
9158 {0.421583325, 1.84751666}, //
+
9159 {0.420827776, 1.85112226}, //
+
9160 {0.420072228, 1.8548944}, //
+
9161 {0.419316679, 1.85883331}, //
+
9162 {0.418561101, 1.86293888}, //
+
9163 {0.417805552, 1.8672111}, //
+
9164 {0.417050004, 1.87164998}, //
+
9165 {0.416882098, 1.88004136}, //
+
9166 {0.416378409, 1.89014876}, //
+
9167 {0.415538877, 1.90197217}, //
+
9168 {0.414363593, 1.91551173}, //
+
9169 {0.412852466, 1.9307673}, //
+
9170 {0.411005557, 1.94773889}, //
+
9171 {0.408822834, 1.96642649}, //
+
9172 {0.40630433, 1.98683023}, //
+
9173 {0.403450012, 2.00895}, //
+
9174 {0.400229633, 2.03320503}, //
+
9175 {0.396590739, 2.06001425}, //
+
9176 {0.392533332, 2.08937788}, //
+
9177 {0.388057411, 2.12129569}, //
+
9178 {0.383162975, 2.15576792}, //
+
9179 {0.377849996, 2.19279456}, //
+
9180 {0.372118533, 2.23237538}, //
+
9181 {0.365968525, 2.27451038}, //
+
9182 {0.359400004, 2.31920004}, //
+
9183 {0.354373455, 2.35233402}, //
+
9184 {0.349849373, 2.38542461}, //
+
9185 {0.345827788, 2.41847229}, //
+
9186 {0.34230864, 2.45147657}, //
+
9187 {0.33929199, 2.4844377}, //
+
9188 {0.336777776, 2.51735544}, //
+
9189 {0.33476606, 2.55023026}, //
+
9190 {0.333256781, 2.5830617}, //
+
9191 {0.332249999, 2.61584997}, //
+
9192 {0.331588268, 2.64808345}, //
+
9193 {0.33109197, 2.67922783}, //
+
9194 {0.330761105, 2.70928335}, //
+
9195 {0.330595672, 2.73825002}, //
+
9196 {0.330595672, 2.75589323}, //
+
9197 {0.330972224, 2.75826669}, //
+
9198 {0.331576556, 2.76247406}, //
+
9199 {0.332137644, 2.76680732}, //
+
9200 {0.332655549, 2.7712667}, //
+
9201 {0.33313024, 2.77585196}, //
+
9202 {0.333561718, 2.78056288}, //
+
9203 {0.333950013, 2.78539991}, //
+
9204 {0.334265441, 2.79036236}, //
+
9205 {0.334456176, 2.7954495}, //
+
9206 {0.334522218, 2.80066109}, //
+
9207 {0.334463567, 2.80599761}, //
+
9208 {0.334280252, 2.81145859}, //
+
9209 {0.333972216, 2.8170445}, //
+
9210 {0.333539516, 2.82275486}, //
+
9211 {0.332982093, 2.82859015}, //
+
9212 {0.332300007, 2.8345499}, //
+
9213 {0.333254308, 2.8545599}, //
+
9214 {0.334628403, 2.87390065}, //
+
9215 {0.336422235, 2.89257216}, //
+
9216 {0.338635802, 2.91057467}, //
+
9217 {0.341269135, 2.92790794}, //
+
9218 {0.34289211, 2.93676639}, //
+
9219 {0.341924697, 2.94106793}, //
+
9220 {0.340750009, 2.94645}, //
+
9221 {0.337224066, 2.96286964}, //
+
9222 {0.335649997, 2.97020006}, //
+
9223 {0.335608035, 2.96892285}, //
+
9224 {0.335482091, 2.96509147}, //
+
9225 {0.334978402, 2.94976544}, //
+
9226 {0.33359322, 2.90761924}, //
+
9227 {0.332249999, 2.86675}, //
+
9228 {0.331588268, 2.84322786}, //
+
9229 {0.33109197, 2.81861663}, //
+
9230 {0.330761105, 2.79291677}, //
+
9231 {0.330595672, 2.76612782}, //
+
9232 {0.330595672, 2.75589323}, //
+
9233 {0.33032468, 2.7541852}, //
+
9234 {0.329633951, 2.7502296}, //
+
9235 {0.328900009, 2.74640012}, //
+
9236 {0.328878999, 2.74252844}, //
+
9237 {0.328816056, 2.73844695}, //
+
9238 {0.328711122, 2.73415565}, //
+
9239 {0.328564197, 2.72965431}, //
+
9240 {0.32837531, 2.72494316}, //
+
9241 {0.328144431, 2.7200222}, //
+
9242 {0.327871591, 2.71489143}, //
+
9243 {0.327556789, 2.70955062}, //
+
9244 {0.327199996, 2.704}, //
+
9245 {0.326843202, 2.69816661}, //
+
9246 {0.3265284, 2.69195557}, //
+
9247 {0.32625556, 2.68536663}, //
+
9248 {0.326024681, 2.67840004}, //
+
9249 {0.325835794, 2.67105556}, //
+
9250 {0.325688899, 2.66333342}, //
+
9251 {0.325583965, 2.65523338}, //
+
9252 {0.325520992, 2.64675546}, //
+
9253 {0.325500011, 2.63790011}, //
+
9254 {0.325541973, 2.62868834}, //
+
9255 {0.325667888, 2.61914206}, //
+
9256 {0.325877786, 2.60926104}, //
+
9257 {0.326171607, 2.59904575}, //
+
9258 {0.326549381, 2.58849573}, //
+
9259 {0.327011108, 2.57761121}, //
+
9260 {0.327556789, 2.56639194}, //
+
9261 {0.328186423, 2.55483818}, //
+
9262 {0.328900009, 2.54294991}, //
+
9263 {0.329675913, 2.53093648}, //
+
9264 {0.330492586, 2.51900673}, //
+
9265 {0.331349999, 2.50716114}, //
+
9266 {0.332248151, 2.49539948}, //
+
9267 {0.333187044, 2.48372149}, //
+
9268 {0.334166676, 2.47212768}, //
+
9269 {0.335187048, 2.46061802}, //
+
9270 {0.336248159, 2.44919205}, //
+
9271 {0.337350011, 2.43785}, //
+
9272 {0.338503718, 2.42673826}, //
+
9273 {0.339698136, 2.41600299}, //
+
9274 {0.340933323, 2.40564442}, //
+
9275 {0.34220925, 2.39566231}, //
+
9276 {0.343525916, 2.3860569}, //
+
9277 {0.344883323, 2.37682772}, //
+
9278 {0.346281469, 2.36797523}, //
+
9279 {0.347720385, 2.35949945}, //
+
9280 {0.34920001, 2.3513999}, //
+
9281 {0.353901237, 2.32678771}, //
+
9282 {0.355244458, 2.31975555}, //
+
9283 {0.355664194, 2.31755805}, //
+
9284 {0.356000006, 2.31579995}, //
+
9285 {0.356167912, 2.31412601}, //
+
9286 {0.35637778, 2.31203341}, //
+
9287 {0.356671602, 2.30910373}, //
+
9288 {0.357049376, 2.30533695}, //
+
9289 {0.357511103, 2.30073333}, //
+
9290 {0.358056784, 2.29529262}, //
+
9291 {0.358686417, 2.28901482}, //
+
9292 {0.359400004, 2.28189993}, //
+
9293 {0.360196918, 2.27424073}, //
+
9294 {0.361076534, 2.26632953}, //
+
9295 {0.362038881, 2.25816655}, //
+
9296 {0.363083959, 2.24975181}, //
+
9297 {0.364211738, 2.24108529}, //
+
9298 {0.365422219, 2.23216677}, //
+
9299 {0.366715431, 2.22299623}, //
+
9300 {0.368091345, 2.21357417}, //
+
9301 {0.36954999, 2.2039001}, //
+
9302 {0.371040136, 2.19415236}, //
+
9303 {0.37248826, 2.18448758}, //
+
9304 {0.373894453, 2.17490554}, //
+
9305 {0.375258654, 2.16540623}, //
+
9306 {0.376580864, 2.15598941}, //
+
9307 {0.377861112, 2.14665556}, //
+
9308 {0.379099369, 2.1374042}, //
+
9309 {0.380295694, 2.12823582}, //
+
9310 {0.381449997, 2.11914992}, //
+
9311 {0.382520378, 2.11044073}, //
+
9312 {0.383464813, 2.10240173}, //
+
9313 {0.384283334, 2.09503341}, //
+
9314 {0.38497594, 2.08833528}, //
+
9315 {0.385542601, 2.08230734}, //
+
9316 {0.385983348, 2.07695007}, //
+
9317 {0.38629815, 2.072263}, //
+
9318 {0.386487037, 2.06824636}, //
+
9319 {0.386550009, 2.06489992}, //
+
9320 {0.387295067, 2.06172109}, //
+
9321 {0.388041347, 2.05820608}, //
+
9322 {0.388788879, 2.05435562}, //
+
9323 {0.389537662, 2.05016923}, //
+
9324 {0.390287668, 2.04564691}, //
+
9325 {0.391038895, 2.04078889}, //
+
9326 {0.391791344, 2.03559518}, //
+
9327 {0.392545074, 2.03006554}, //
+
9328 {0.393299997, 2.02419996}, //
+
9329 {0.394810498, 2.01430559}, //
+
9330 {0.396319747, 2.00419998}, //
+
9331 {0.397827774, 1.99388337}, //
+
9332 {0.39933458, 1.98335552}, //
+
9333 {0.400840133, 1.97261667}, //
+
9334 {0.402344435, 1.9616667}, //
+
9335 {0.403847545, 1.95050561}, //
+
9336 {0.405349374, 1.93913329}, //
+
9337 {0.40685001, 1.92754996}, //
+
9338 {0.408319145, 1.9158932}, //
+
9339 {0.409704328, 1.9042784}, //
+
9340 {0.411005557, 1.89270556}, //
+
9341 {0.412222832, 1.88117468}, //
+
9342 {0.413356185, 1.86968577}, //
+
9343 {0.414405555, 1.85823894}, //
+
9344 {0.415371001, 1.84683394}, //
+
9345 {0.416252464, 1.83547103}, //
+
9346 {0.417050004, 1.82414997}, //
+
9347 {0.413954943, 1.84206915}, //
+
9348 {0.410691977, 1.86115992}, //
+
9349 {0.407261103, 1.88142228}, //
+
9350 {0.403662354, 1.90285623}, //
+
9351 {0.399895668, 1.92546177}, //
+
9352 {0.395961106, 1.9492389}, //
+
9353 {0.391858637, 1.97418761}, //
+
9354 {0.387588263, 2.00030804}, //
+
9355 {0.383150011, 2.02760005}, //
+
9356 {0.37871173, 2.05267787}, //
+
9357 {0.374441355, 2.07666659}, //
+
9358 {0.370338887, 2.0995667}, //
+
9359 {0.366404325, 2.12137771}, //
+
9360 {0.362637669, 2.1421001}, //
+
9361 {0.359038889, 2.16173339}, //
+
9362 {0.355608016, 2.18027782}, //
+
9363 {0.352345049, 2.1977334}, //
+
9364 {0.349249989, 2.21409988}, //
+
9365 {0.348452479, 2.21865368}, //
+
9366 {0.347570986, 2.22329259}, //
+
9367 {0.346605569, 2.22801661}, //
+
9368 {0.34555617, 2.23282599}, //
+
9369 {0.344422847, 2.23772049}, //
+
9370 {0.343205541, 2.2427001}, //
+
9371 {0.341904312, 2.24776483}, //
+
9372 {0.34051913, 2.25291491}, //
+
9373 {0.339049995, 2.2581501}, //
+
9374 {0.336751848, 2.27575493}, //
+
9375 {0.334368527, 2.29390311}, //
+
9376 {0.331900001, 2.31259441}, //
+
9377 {0.329346299, 2.33182907}, //
+
9378 {0.326707393, 2.35160685}, //
+
9379 {0.323983341, 2.37192774}, //
+
9380 {0.321174085, 2.39279199}, //
+
9381 {0.318279624, 2.41419935}, //
+
9382 {0.315299988, 2.43615007}, //
+
9383 {0.312414825, 2.45832038}, //
+
9384 {0.309781492, 2.4803648}, //
+
9385 {0.307399988, 2.50228333}, //
+
9386 {0.305270374, 2.52407598}, //
+
9387 {0.303392589, 2.54574251}, //
+
9388 {0.301766664, 2.56728339}, //
+
9389 {0.300392598, 2.58869815}, //
+
9390 {0.299270362, 2.60998702}, //
+
9391 {0.298400015, 2.63115001}, //
+
9392 {0.298400015, 2.63561964}, //
+
9393 {0.298400015, 2.64431119}, //
+
9394 {0.298400015, 2.66840005}, //
+
9395 {0.297707409, 2.68929076}, //
+
9396 {0.297646999, 2.69147277}, //
+
9397 {0.298617274, 2.69210792}, //
+
9398 {0.299745053, 2.69305253}, //
+
9399 {0.300622225, 2.69403887}, //
+
9400 {0.301248759, 2.69506717}, //
+
9401 {0.301624686, 2.69613767}, //
+
9402 {0.301750004, 2.69724989}, //
+
9403 {0.301666677, 2.69836164}, //
+
9404 {0.301416665, 2.69943023}, //
+
9405 {0.300999999, 2.70045567}, //
+
9406 {0.300416678, 2.70143771}, //
+
9407 {0.299666673, 2.7023766}, //
+
9408 {0.298750013, 2.7032721}, //
+
9409 {0.297666669, 2.70412469}, //
+
9410 {0.297290057, 2.70436859}, //
+
9411 {0.297140747, 2.70976305}, //
+
9412 {0.296700001, 2.72981668}, //
+
9413 {0.296385199, 2.74945188}, //
+
9414 {0.296196282, 2.76866841}, //
+
9415 {0.296133339, 2.78746676}, //
+
9416 {0.296196282, 2.80584621}, //
+
9417 {0.296385199, 2.82380748}, //
+
9418 {0.296700001, 2.84135008}, //
+
9419 {0.297307402, 2.85876656}, //
+
9420 {0.298374087, 2.87634993}, //
+
9421 {0.299899995, 2.89409995}, //
+
9422 {0.301885188, 2.91201663}, //
+
9423 {0.304329634, 2.93009996}, //
+
9424 {0.307233334, 2.94834995}, //
+
9425 {0.310596287, 2.9667666}, //
+
9426 {0.314418525, 2.98534989}, //
+
9427 {0.318699986, 3.00410008}, //
+
9428 {0.329171598, 3.03678632}, //
+
9429 {0.339475304, 3.06704569}, //
+
9430 {0.349611104, 3.09487772}, //
+
9431 {0.359579027, 3.12028265}, //
+
9432 {0.369379014, 3.14326048}, //
+
9433 {0.379011124, 3.16381121}, //
+
9434 {0.388475299, 3.1819346}, //
+
9435 {0.397771597, 3.19763088}, //
+
9436 {0.406899989, 3.21090007}, //
+
9437 {0.409953088, 3.21621966}, //
+
9438 {0.41309011, 3.22162342}, //
+
9439 {0.416311115, 3.2271111}, //
+
9440 {0.419616044, 3.2326827}, //
+
9441 {0.423004925, 3.23833823}, //
+
9442 {0.42647779, 3.24407768}, //
+
9443 {0.430034578, 3.24990129}, //
+
9444 {0.433675319, 3.25580859}, //
+
9445 {0.437400013, 3.26180005}, //
+
9446 {0.441145688, 3.26780128}, //
+
9447 {0.444849372, 3.27376056}, //
+
9448 {0.448511124, 3.27967787}, //
+
9449 {0.452130854, 3.28555298}, //
+
9450 {0.455708653, 3.29138637}, //
+
9451 {0.45924443, 3.29717779}, //
+
9452 {0.462738276, 3.30292726}, //
+
9453 {0.46619013, 3.30863452}, //
+
9454 {0.469599992, 3.31430006}, //
+
9455 {0.472926557, 3.31976724}, //
+
9456 {0.476128399, 3.32485795}, //
+
9457 {0.479205549, 3.3295722}, //
+
9458 {0.482158035, 3.33390999}, //
+
9459 {0.484985799, 3.33787107}, //
+
9460 {0.487688899, 3.34145546}, //
+
9461 {0.490267277, 3.34466362}, //
+
9462 {0.492720991, 3.34749508}, //
+
9463 {0.495050013, 3.34995008}, //
+
9464 {0.496633947, 3.35231042}, //
+
9465 {0.498385817, 3.35488081}, //
+
9466 {0.500305533, 3.35766101}, //
+
9467 {0.502393186, 3.36065125}, //
+
9468 {0.504648745, 3.36385131}, //
+
9469 {0.50707221, 3.36726117}, //
+
9470 {0.509663582, 3.37088084}, //
+
9471 {0.51242286, 3.37471056}, //
+
9472 {0.515349984, 3.37875009}, //
+
9473 {0.51832962, 3.38289452}, //
+
9474 {0.521224082, 3.38703895}, //
+
9475 {0.524033308, 3.39118338}, //
+
9476 {0.526757419, 3.39532781}, //
+
9477 {0.529396296, 3.39947224}, //
+
9478 {0.531949997, 3.40361667}, //
+
9479 {0.534418523, 3.4077611}, //
+
9480 {0.536801875, 3.41190553}, //
+
9481 {0.539099991, 3.41604996}, //
+
9482 {0.541324079, 3.42015243}, //
+
9483 {0.543462992, 3.42417097}, //
+
9484 {0.54551667, 3.42810559}, //
+
9485 {0.547485173, 3.43195629}, //
+
9486 {0.549368501, 3.43572283}, //
+
9487 {0.551166654, 3.43940544}, //
+
9488 {0.552879632, 3.44300437}, //
+
9489 {0.554507434, 3.44651914}, //
+
9490 {0.556050003, 3.44994998}, //
+
9491 {0.556134999, 3.45014071}, //
+
9492 {0.556010485, 3.44982767}, //
+
9493 {0.553977787, 3.4447}, //
+
9494 {0.551736414, 3.43902779}, //
+
9495 {0.549286425, 3.43281102}, //
+
9496 {0.54662776, 3.42604995}, //
+
9497 {0.543760478, 3.41874433}, //
+
9498 {0.540684581, 3.41089439}, //
+
9499 {0.537400007, 3.40249991}, //
+
9500 {0.534052491, 3.39387536}, //
+
9501 {0.530787647, 3.38533449}, //
+
9502 {0.527605534, 3.37687778}, //
+
9503 {0.524506152, 3.368505}, //
+
9504 {0.521489501, 3.36021614}, //
+
9505 {0.518555582, 3.3520112}, //
+
9506 {0.515704334, 3.34389019}, //
+
9507 {0.512935817, 3.3358531}, //
+
9508 {0.510249972, 3.32789993}, //
+
9509 {0.507721603, 3.320261}, //
+
9510 {0.505403101, 3.31316662}, //
+
9511 {0.503294468, 3.30661678}, //
+
9512 {0.501395702, 3.30061102}, //
+
9513 {0.499706805, 3.29515004}, //
+
9514 {0.498227775, 3.29023337}, //
+
9515 {0.496958643, 3.28586102}, //
+
9516 {0.495899379, 3.28203344}, //
+
9517 {0.495050013, 3.27874994}, //
+
9518 {0.49086234, 3.25578332}, //
+
9519 {0.487343818, 3.23210549}, //
+
9520 {0.484494448, 3.2077167}, //
+
9521 {0.482314199, 3.18261671}, //
+
9522 {0.480803072, 3.15680552}, //
+
9523 {0.479961097, 3.13028336}, //
+
9524 {0.479788274, 3.10304999}, //
+
9525 {0.480284572, 3.07510567}, //
+
9526 {0.481449991, 3.0464499}, //
+
9527 {0.483086407, 3.01784682}, //
+
9528 {0.48497346, 2.99003768}, //
+
9529 {0.487111121, 2.96302223}, //
+
9530 {0.48949939, 2.93680072}, //
+
9531 {0.492138267, 2.9113729}, //
+
9532 {0.495027781, 2.88673878}, //
+
9533 {0.498167902, 2.86289883}, //
+
9534 {0.501558661, 2.83985257}, //
+
9535 {0.505200028, 2.81760001}, //
+
9536 {0.508085787, 2.79884815}, //
+
9537 {0.510720968, 2.78177047}, //
+
9538 {0.513105571, 2.76636672}, //
+
9539 {0.515239477, 2.75263715}, //
+
9540 {0.517122865, 2.74058151}, //
+
9541 {0.518755555, 2.73020005}, //
+
9542 {0.520137668, 2.72149253}, //
+
9543 {0.521269143, 2.71445918}, //
+
9544 {0.52214998, 2.70910001}, //
+
9545 {0.523577154, 2.70692778}, //
+
9546 {0.524836421, 2.7049222}, //
+
9547 {0.525927782, 2.70308328}, //
+
9548 {0.526851237, 2.70141101}, //
+
9549 {0.527606785, 2.69990563}, //
+
9550 {0.528194427, 2.69856668}, //
+
9551 {0.528614223, 2.69739437}, //
+
9552 {0.528866053, 2.69638896}, //
+
9553 {0.528949976, 2.69554996}, //
+
9554 {0.528949976, 2.69483638}, //
+
9555 {0.528949976, 2.69420671}, //
+
9556 {0.528949976, 2.69366121}, //
+
9557 {0.528949976, 2.6931994}, //
+
9558 {0.528949976, 2.69215012}, //
+
9559 {0.528866053, 2.69370246}, //
+
9560 {0.528614223, 2.69533777}, //
+
9561 {0.528194427, 2.69705558}, //
+
9562 {0.527606785, 2.69885612}, //
+
9563 {0.526851237, 2.70073962}, //
+
9564 {0.525927782, 2.70270562}, //
+
9565 {0.524836421, 2.70475435}, //
+
9566 {0.523577154, 2.70688581}, //
+
9567 {0.52214998, 2.70910001}, //
+
9568 {0.519851863, 2.71467042}, //
+
9569 {0.517468512, 2.72082591}, //
+
9570 {0.514999986, 2.72756672}, //
+
9571 {0.512446284, 2.73489261}, //
+
9572 {0.509807408, 2.74280381}, //
+
9573 {0.507083356, 2.7513001}, //
+
9574 {0.50427407, 2.76038146}, //
+
9575 {0.501379609, 2.77004814}, //
+
9576 {0.498400003, 2.7802999}, //
+
9577 {0.495409876, 2.79085493}, //
+
9578 {0.492461741, 2.80140853}, //
+
9579 {0.489555568, 2.81196117}, //
+
9580 {0.486691356, 2.82251239}, //
+
9581 {0.483869135, 2.83306241}, //
+
9582 {0.481088877, 2.843611}, //
+
9583 {0.47835061, 2.85415864}, //
+
9584 {0.475654334, 2.86470485}, //
+
9585 {0.47299999, 2.8752501}, //
+
9586 {0.470470995, 2.8854599}, //
+
9587 {0.468150616, 2.8950007}, //
+
9588 {0.466038883, 2.90387225}, //
+
9589 {0.464135796, 2.9120748}, //
+
9590 {0.462441355, 2.91960812}, //
+
9591 {0.46095556, 2.92647219}, //
+
9592 {0.459678382, 2.93266726}, //
+
9593 {0.458609879, 2.93819332}, //
+
9594 {0.457749993, 2.94304991}, //
+
9595 {0.45768705, 2.94845319}, //
+
9596 {0.457498163, 2.95410681}, //
+
9597 {0.457183331, 2.96001101}, //
+
9598 {0.456742585, 2.96616602}, //
+
9599 {0.456175923, 2.97257161}, //
+
9600 {0.455483347, 2.97922778}, //
+
9601 {0.454664826, 2.98613453}, //
+
9602 {0.453720361, 2.99329209}, //
+
9603 {0.452650011, 3.0007}, //
+
9604 {0.451474696, 3.00829625}, //
+
9605 {0.450215429, 3.01601863}, //
+
9606 {0.448872209, 3.02386665}, //
+
9607 {0.447445065, 3.0318408}, //
+
9608 {0.445933938, 3.03994083}, //
+
9609 {0.444338888, 3.04816675}, //
+
9610 {0.442659885, 3.05651855}, //
+
9611 {0.440896928, 3.06499624}, //
+
9612 {0.439049989, 3.07360005}, //
+
9613 {0.437234581, 3.08209872}, //
+
9614 {0.435543835, 3.0902617}, //
+
9615 {0.433977783, 3.09808898}, //
+
9616 {0.432536423, 3.10558033}, //
+
9617 {0.431219757, 3.11273575}, //
+
9618 {0.430027783, 3.11955547}, //
+
9619 {0.428960502, 3.12603951}, //
+
9620 {0.428017914, 3.1321876}, //
+
9621 {0.42719999, 3.13800001}, //
+
9622 {0.423891366, 3.16313577}, //
+
9623 {0.42385, 3.16345}, //
+
9624 {0.421835184, 3.16043758}, //
+
9625 {0.420701861, 3.15874314}, //
+
9626 {0.419316679, 3.15667224}, //
+
9627 {0.417679638, 3.15422463}, //
+
9628 {0.415790737, 3.15140057}, //
+
9629 {0.413650006, 3.14820004}, //
+
9630 {0.411393821, 3.14470625}, //
+
9631 {0.409136415, 3.14100242}, //
+
9632 {0.406877786, 3.13708878}, //
+
9633 {0.404617906, 3.13296533}, //
+
9634 {0.402356803, 3.12863207}, //
+
9635 {0.40009445, 3.124089}, //
+
9636 {0.397830874, 3.11933589}, //
+
9637 {0.395566046, 3.11437273}, //
+
9638 {0.393299997, 3.1092}, //
+
9639 {0.391043842, 3.10392213}, //
+
9640 {0.388786405, 3.0986445}, //
+
9641 {0.386527777, 3.09336662}, //
+
9642 {0.384267896, 3.08808899}, //
+
9643 {0.382006794, 3.08281112}, //
+
9644 {0.37974444, 3.07753325}, //
+
9645 {0.377480865, 3.07225561}, //
+
9646 {0.375216037, 3.06697774}, //
+
9647 {0.372949988, 3.06170011}, //
+
9648 {0.370819747, 3.05660057}, //
+
9649 {0.368940115, 3.05183578}, //
+
9650 {0.36731112, 3.04740548}, //
+
9651 {0.365932703, 3.04330993}, //
+
9652 {0.364804924, 3.03954887}, //
+
9653 {0.363927782, 3.03612232}, //
+
9654 {0.363301247, 3.03303027}, //
+
9655 {0.362925321, 3.03027272}, //
+
9656 {0.362800002, 3.02784991}, //
+
9657 {0.362044454, 3.02470303}, //
+
9658 {0.361288875, 3.02130675}, //
+
9659 {0.360533327, 3.01766109}, //
+
9660 {0.359777778, 3.01376605}, //
+
9661 {0.35902223, 3.00962162}, //
+
9662 {0.358266681, 3.0052278}, //
+
9663 {0.357511103, 3.0005846}, //
+
9664 {0.356755555, 2.99569201}, //
+
9665 {0.356000006, 2.99055004}, //
+
9666 {0.35168764, 2.97589326}, //
+
9667 {0.347795069, 2.96056724}, //
+
9668 {0.344322234, 2.94457221}, //
+
9669 {0.34289211, 2.93676639}, //
+
9670 {0.343182087, 2.93547726}, //
+
9671 {0.344522208, 2.92967772}, //
+
9672 {0.34594506, 2.92366982}, //
+
9673 {0.347450614, 2.91745305}, //
+
9674 {0.349038899, 2.91102767}, //
+
9675 {0.350709885, 2.90439391}, //
+
9676 {0.352463573, 2.8975513}, //
+
9677 {0.354299992, 2.89050007}, //
+
9678 {0.356188267, 2.88336492}, //
+
9679 {0.358075321, 2.87627029}, //
+
9680 {0.359961122, 2.86921668}, //
+
9681 {0.361845672, 2.8622036}, //
+
9682 {0.363729, 2.85523152}, //
+
9683 {0.365611106, 2.84829998}, //
+
9684 {0.367491961, 2.84140921}, //
+
9685 {0.369371593, 2.8345592}, //
+
9686 {0.371250004, 2.82774997}, //
+
9687 {0.373117894, 2.82109761}, //
+
9688 {0.374943823, 2.8146956}, //
+
9689 {0.37672779, 2.8085444}, //
+
9690 {0.378469765, 2.80264378}, //
+
9691 {0.380169749, 2.79699373}, //
+
9692 {0.381827772, 2.79159451}, //
+
9693 {0.383443832, 2.78644562}, //
+
9694 {0.385017902, 2.78154755}, //
+
9695 {0.386550009, 2.77690005}, //
+
9696 {0.390944451, 2.76669383}, //
+
9697 {0.396594435, 2.75414205}, //
+
9698 {0.403499991, 2.73924446}, //
+
9699 {0.411661118, 2.72200131}, //
+
9700 {0.421077788, 2.70241237}, //
+
9701 {0.43175, 2.68047786}, //
+
9702 {0.443677783, 2.65619755}, //
+
9703 {0.456861109, 2.62957168}, //
+
9704 {0.471300006, 2.6006}, //
+
9705 {0.487793833, 2.56899762}, //
+
9706 {0.504119754, 2.53747892}, //
+
9707 {0.520277798, 2.50604439}, //
+
9708 {0.536267877, 2.47469378}, //
+
9709 {0.552090108, 2.44342709}, //
+
9710 {0.567744434, 2.41224456}, //
+
9711 {0.583230853, 2.38114572}, //
+
9712 {0.598549366, 2.3501308}, //
+
9713 {0.613699973, 2.31920004}, //
+
9714 {0.636932075, 2.26716542}, //
+
9715 {0.658406198, 2.21806169}, //
+
9716 {0.678122222, 2.17188883}, //
+
9717 {0.696080267, 2.12864685}, //
+
9718 {0.712280273, 2.08833575}, //
+
9719 {0.72672224, 2.05095553}, //
+
9720 {0.739406168, 2.0165062}, //
+
9721 {0.750332117, 1.98498762}, //
+
9722 {0.759500027, 1.95640004}, //
+
9723 {0.763896286, 1.94026363}, //
+
9724 {0.768040717, 1.92349875}, //
+
9725 {0.771933317, 1.90610552}, //
+
9726 {0.775574088, 1.88808393}, //
+
9727 {0.77896297, 1.869434}, //
+
9728 {0.782100022, 1.85015559}, //
+
9729 {0.784985185, 1.83024871}, //
+
9730 {0.787618518, 1.8097136}, //
+
9731 {0.790000021, 1.78855002}, //
+
9732 {0.792098761, 1.76751232}, //
+
9733 {0.79339999, 1.75263429}, //
+
9734 {0.79339999, 1.74615002}, //
+
9735 {0.795040309, 1.73143554}, //
+
9736 {0.795288861, 1.72807777}, //
+
9737 {0.796380222, 1.70968091}, //
+
9738 {0.79713583, 1.69216418}, //
+
9739 {0.797555566, 1.67552781}, //
+
9740 {0.797639489, 1.65977156}, //
+
9741 {0.79738766, 1.64489567}, //
+
9742 {0.796800017, 1.63090003}, //
+
9743 {0.794787049, 1.62114382}, //
+
9744 {0.791770399, 1.60996425}, //
+
9745 {0.787750006, 1.59736109}, //
+
9746 {0.78272593, 1.58333457}, //
+
9747 {0.776698172, 1.56788456}, //
+
9748 {0.769666672, 1.55101109}, //
+
9749 {0.761631489, 1.53271425}, //
+
9750 {0.75378716, 1.51559997}, //
+
9751 {0.753496885, 1.51559997}, //
+
9752 {0.752699971, 1.51559997}, //
+
9753 {0.752699971, 1.51559997}, //
+
9754 {0.752699971, 1.51559997}, //
+
9755 {0.752699971, 1.51559997}, //
+
9756 {0.749459565, 1.5063976}, //
+
9757 {0.742550015, 1.49185002}, //
+
9758 {0.732004941, 1.47006786}, //
+
9759 {0.721458614, 1.44841051}, //
+
9760 {0.710911095, 1.42687774}, //
+
9761 {0.700362325, 1.40546978}, //
+
9762 {0.689812362, 1.38418639}, //
+
9763 {0.679261088, 1.36302781}, //
+
9764 {0.668708622, 1.34199381}, //
+
9765 {0.658154964, 1.32108462}, //
+
9766 {0.647599995, 1.3003}, //
+
9767 {0.637432098, 1.28039443}, //
+
9768 {0.628017306, 1.26212227}, //
+
9769 {0.619355559, 1.24548328}, //
+
9770 {0.611446917, 1.23047781}, //
+
9771 {0.604291379, 1.21710551}, //
+
9772 {0.597888887, 1.20536661}, //
+
9773 {0.592239499, 1.19526112}, //
+
9774 {0.587343216, 1.18678892}, //
+
9775 {0.583199978, 1.17995}, //
+
9776 {0.579307437, 1.17174506}, //
+
9777 {0.575162947, 1.16370797}, //
+
9778 {0.570766687, 1.15583885}, //
+
9779 {0.566118538, 1.14813769}, //
+
9780 {0.563969553, 1.1448338}, //
+
9781 {0.56440866, 1.14232528}, //
+
9782 {0.565094471, 1.13924444}, //
+
9783 {0.565904915, 1.13628829}, //
+
9784 {0.566840112, 1.13345683}, //
+
9785 {0.567900002, 1.13074994}, //
+
9786 {0.569179654, 1.12830496}, //
+
9787 {0.570751846, 1.12623644}, //
+
9788 {0.572616696, 1.1245445}, //
+
9789 {0.574774086, 1.12322903}, //
+
9790 {0.577224076, 1.12229013}, //
+
9791 {0.579966664, 1.12172782}, //
+
9792 {0.583001852, 1.12154198}, //
+
9793 {0.586329639, 1.12173271}, //
+
9794 {0.589950025, 1.12230003}, //
+
9795 {0.592299998, 1.12305558}, //
+
9796 {0.594816685, 1.12381113}, //
+
9797 {0.597500026, 1.12456667}, //
+
9798 {0.600350022, 1.12532222}, //
+
9799 {0.603366673, 1.12607777}, //
+
9800 {0.606549978, 1.12683332}, //
+
9801 {0.609899998, 1.12758887}, //
+
9802 {0.613416672, 1.12834442}, //
+
9803 {0.6171, 1.12909997}, //
+
9804 {0.620132089, 1.13053763}, //
+
9805 {0.623206198, 1.1318506}, //
+
9806 {0.62632221, 1.13303888}, //
+
9807 {0.629480243, 1.13410246}, //
+
9808 {0.632680237, 1.13504136}, //
+
9809 {0.635922194, 1.13585556}, //
+
9810 {0.639206171, 1.13654506}, //
+
9811 {0.64253211, 1.13710988}, //
+
9812 {0.645900011, 1.13755}, //
+
9813 {0.649268508, 1.13786483}, //
+
9814 {0.652596295, 1.13805366}, //
+
9815 {0.655883312, 1.13811672}, //
+
9816 {0.65912962, 1.13805366}, //
+
9817 {0.662335157, 1.13786483}, //
+
9818 {0.665499985, 1.13755}, //
+
9819 {0.668624103, 1.13710928}, //
+
9820 {0.671707392, 1.13654256}, //
+
9821 {0.67474997, 1.13584995}, //
+
9822 {0.678558648, 1.13517845}, //
+
9823 {0.682451248, 1.13467467}, //
+
9824 {0.686427772, 1.13433886}, //
+
9825 {0.690488279, 1.13417101}, //
+
9826 {0.694632709, 1.13417101}, //
+
9827 {0.698861122, 1.13433886}, //
+
9828 {0.703173459, 1.13467467}, //
+
9829 {0.707569778, 1.13517845}, //
+
9830 {0.712050021, 1.13584995}, //
+
9831 {0.716728985, 1.13584995}, //
+
9832 {0.719194472, 1.13584995}, //
+
9833 {0.721743822, 1.13584995}, //
+
9834 {0.729895651, 1.13584995}, //
+
9835 {0.732780874, 1.13584995}, //
+
9836 {0.734049976, 1.13584995}, //
+
9837 {0.737553716, 1.13432837}, //
+
9838 {0.74126482, 1.13276362}, //
+
9839 {0.745183349, 1.13115561}, //
+
9840 {0.749309242, 1.12950432}, //
+
9841 {0.753642619, 1.12780988}, //
+
9842 {0.75818336, 1.12607217}, //
+
9843 {0.762931466, 1.1242913}, //
+
9844 {0.767887056, 1.12246728}, //
+
9845 {0.77305001, 1.12059999}, //
+
9846 {0.778264821, 1.11876357}, //
+
9847 {0.783353686, 1.11700988}, //
+
9848 {0.788316667, 1.11533892}, //
+
9849 {0.793153703, 1.11375058}, //
+
9850 {0.797864795, 1.11224508}, //
+
9851 {0.802450001, 1.1108222}, //
+
9852 {0.806909263, 1.10948205}, //
+
9853 {0.81124258, 1.10822475}, //
+
9854 {0.815450013, 1.10704994}, //
+
9855 {0.819448173, 1.10602164}, //
+
9856 {0.823153675, 1.10520303}, //
+
9857 {0.826566696, 1.10459447}, //
+
9858 {0.829687059, 1.10419571}, //
+
9859 {0.832514822, 1.10400677}, //
+
9860 {0.835049987, 1.10402775}, //
+
9861 {0.837292612, 1.10425866}, //
+
9862 {0.839242578, 1.10469937}, //
+
9863 {0.840900004, 1.10535002}, //
+
9864 {0.844938278, 1.10589564}, //
+
9865 {0.84951973, 1.10602164}, //
+
9866 {0.854644418, 1.10572779}, //
+
9867 {0.860312343, 1.1050142}, //
+
9868 {0.866523445, 1.10388088}, //
+
9869 {0.873277783, 1.10232782}, //
+
9870 {0.880575299, 1.10035491}, //
+
9871 {0.888416052, 1.09796238}, //
+
9872 {0.896799982, 1.09514999}, //
+
9873 {0.905362368, 1.09213889}, //
+
9874 {0.913716078, 1.08912778}, //
+
9875 {0.921861112, 1.08611667}, //
+
9876 {0.92979753, 1.08310556}, //
+
9877 {0.937525332, 1.08009446}, //
+
9878 {0.945044458, 1.07708335}, //
+
9879 {0.952354968, 1.07407224}, //
+
9880 {0.959456801, 1.07106113}, //
+
9881 {0.966350019, 1.06805003}, //
+
9882 {0.970882714, 1.06512225}, //
+
9883 {0.975458622, 1.06236112}, //
+
9884 {0.980077803, 1.05976665}, //
+
9885 {0.984740138, 1.05733883}, //
+
9886 {0.989445686, 1.05507779}, //
+
9887 {0.994194448, 1.05298328}, //
+
9888 {0.998986423, 1.05105555}, //
+
9889 {1.00382161, 1.04929447}, //
+
9890 {1.00870001, 1.04770005}, //
+
9891 {1.01355803, 1.04620993}, //
+
9892 {1.01833212, 1.04476178}, //
+
9893 {1.02302217, 1.04335558}, //
+
9894 {1.02762842, 1.04199135}, //
+
9895 {1.03215063, 1.04066908}, //
+
9896 {1.03658891, 1.0393889}, //
+
9897 {1.04094326, 1.03815067}, //
+
9898 {1.04521358, 1.03695428}, //
+
9899 {1.04939997, 1.03579998}, //
+
9900 {1.05676794, 1.03380489}, //
+
9901 {1.05976117, 1.03299439}, //
+
9902 {1.06229377, 1.0323087}, //
+
9903 {1.0643661, 1.03174758}, //
+
9904 {1.06597781, 1.03131115}, //
+
9905 {1.06712902, 1.03099942}, //
+
9906 {1.06781971, 1.03081238}, //
+
9907 {1.06805003, 1.03075004}, //
+
9908 {1.05789995, 1.00024998}, //
+
9909 {1.05771112, 1.00006115}, //
+
9910 {1.05756414, 0.999914169}, //
+
9911 {1.05737531, 0.999725282}, //
+
9912 {1.05620003, 0.998549998}, //
+
9913 {1.05573833, 0.998172224}, //
+
9914 {1.05510867, 0.997794449}, //
+
9915 {1.05431116, 0.997416675}, //
+
9916 {1.05334568, 0.997038901}, //
+
9917 {1.05221236, 0.996661127}, //
+
9918 {1.05091107, 0.996283352}, //
+
9919 {1.04944193, 0.995905578}, //
+
9920 {1.04780495, 0.995527804}, //
+
9921 {1.046, 0.99515003}, //
+
9922 {1.0441426, 0.994793236}, //
+
9923 {1.04232597, 0.994478405}, //
+
9924 {1.04054999, 0.994205534}, //
+
9925 {1.03881478, 0.993974686}, //
+
9926 {1.03712034, 0.993785799}, //
+
9927 {1.03546667, 0.993638873}, //
+
9928 {1.03385365, 0.993533969}, //
+
9929 {1.03228152, 0.993470967}, //
+
9930 {1.03075004, 0.993449986}, //
+
9931 {1.02923954, 0.993491948}, //
+
9932 {1.02773023, 0.993617892}, //
+
9933 {1.02622223, 0.99382776}, //
+
9934 {1.02471542, 0.994121611}, //
+
9935 {1.02320993, 0.994499385}, //
+
9936 {1.02170551, 0.994961083}, //
+
9937 {1.02020252, 0.995506763}, //
+
9938 {1.0187006, 0.996136427}, //
+
9939 {1.01719999, 0.996850014}, //
+
9940 {1.01705313, 0.99691236}, //
+
9941 {1.01587772, 0.997411132}, //
+
9942 {1.01352715, 0.998408616}, //
+
9943 {1.00530005, 1.00189996}, //
+
9944 {1.00260365, 1.00309563}, //
+
9945 {0.999781489, 1.00441611}, //
+
9946 {0.996833324, 1.00586116}, //
+
9947 {0.993759274, 1.00743091}, //
+
9948 {0.99055928, 1.00912535}, //
+
9949 {0.987233341, 1.01094449}, //
+
9950 {0.983781457, 1.01288831}, //
+
9951 {0.980203688, 1.01495683}, //
+
9952 {0.976499975, 1.01715004}, //
+
9953 {0.972691357, 1.01939511}, //
+
9954 {0.968798757, 1.02159691}, //
+
9955 {0.964822233, 1.02375555}, //
+
9956 {0.960761726, 1.02587104}, //
+
9957 {0.956617296, 1.02794325}, //
+
9958 {0.952388883, 1.0299722}, //
+
9959 {0.948076546, 1.03195798}, //
+
9960 {0.943680227, 1.03390062}, //
+
9961 {0.939199984, 1.03579998}, //
+
9962 {0.934761703, 1.03762591}, //
+
9963 {0.930491328, 1.03932595}, //
+
9964 {0.92638886, 1.04089999}, //
+
9965 {0.922454298, 1.04234815}, //
+
9966 {0.918687642, 1.04367042}, //
+
9967 {0.915088892, 1.04486668}, //
+
9968 {0.911658049, 1.04593706}, //
+
9969 {0.908395052, 1.04688144}, //
+
9970 {0.905300021, 1.04770005}, //
+
9971 {0.893369734, 1.05121541}, //
+
9972 {0.881690145, 1.05422843}, //
+
9973 {0.870261133, 1.05673885}, //
+
9974 {0.859082699, 1.05874693}, //
+
9975 {0.848154962, 1.06025243}, //
+
9976 {0.837477803, 1.06125557}, //
+
9977 {0.827051222, 1.06175613}, //
+
9978 {0.816875279, 1.06175435}, //
+
9979 {0.806949973, 1.06124997}, //
+
9980 {0.800885201, 1.05972838}, //
+
9981 {0.794735193, 1.05816352}, //
+
9982 {0.788500011, 1.05655551}, //
+
9983 {0.782179654, 1.05490434}, //
+
9984 {0.775774062, 1.0532099}, //
+
9985 {0.769283354, 1.05147219}, //
+
9986 {0.762707412, 1.04969132}, //
+
9987 {0.756046295, 1.0478673}, //
+
9988 {0.749300003, 1.046}, //
+
9989 {0.74252224, 1.04397535}, //
+
9990 {0.735744417, 1.04165673}, //
+
9991 {0.728966653, 1.0390445}, //
+
9992 {0.72218889, 1.0361383}, //
+
9993 {0.715411127, 1.03293824}, //
+
9994 {0.708633304, 1.02944446}, //
+
9995 {0.70185554, 1.02565682}, //
+
9996 {0.695077777, 1.02157533}, //
+
9997 {0.688300014, 1.01719999}, //
+
9998 {0.682246268, 1.01274073}, //
+
9999 {0.676151872, 1.00840735}, //
+
10000 {0.670016646, 1.00419998}, //
+
10001 {0.663840711, 1.00011849}, //
+
10002 {0.657624066, 0.996162951}, //
+
10003 {0.651366651, 0.992333353}, //
+
10004 {0.645068526, 0.988629639}, //
+
10005 {0.638729632, 0.98505187}, //
+
10006 {0.632350028, 0.981599987}, //
+
10007 {0.626096308, 0.978399396}, //
+
10008 {0.620135188, 0.975575328}, //
+
10009 {0.614466667, 0.973127782}, //
+
10010 {0.609090745, 0.971056819}, //
+
10011 {0.604007423, 0.969362319}, //
+
10012 {0.59921664, 0.96804446}, //
+
10013 {0.594718516, 0.967103064}, //
+
10014 {0.590512991, 0.96653825}, //
+
10015 {0.586600006, 0.966350019}, //
+
10016 {0.583515406, 0.966329038}, //
+
10017 {0.580306172, 0.966266036}, //
+
10018 {0.576972246, 0.966161132}, //
+
10019 {0.573513567, 0.966014206}, //
+
10020 {0.569930255, 0.965825319}, //
+
10021 {0.56622225, 0.965594471}, //
+
10022 {0.562389493, 0.9653216}, //
+
10023 {0.558432102, 0.965006769}, //
+
10024 {0.554350019, 0.964649975}, //
+
10025 {0.550185204, 0.96425122}, //
+
10026 {0.545979619, 0.963810503}, //
+
10027 {0.541733325, 0.963327765}, //
+
10028 {0.53744632, 0.962803066}, //
+
10029 {0.533118546, 0.962236404}, //
+
10030 {0.528750002, 0.961627781}, //
+
10031 {0.524340749, 0.960977137}, //
+
10032 {0.519890726, 0.960284591}, //
+
10033 {0.515399992, 0.959550023}, //
+
10034 {0.505681455, 0.959550023}, //
+
10035 {0.501450002, 0.959550023}, //
+
10036 {0.491266668, 0.959550023}, //
+
10037 {0.488709271, 0.959550023}, //
+
10038 {0.480316669, 0.959550023}, //
+
10039 {0.47956112, 0.959550023}, //
+
10040 {0.478049994, 0.959550023}, //
+
10041 {0.477325916, 0.959571004}, //
+
10042 {0.476642579, 0.959633946}, //
+
10043 {0.476000011, 0.95973891}, //
+
10044 {0.475398153, 0.959885776}, //
+
10045 {0.474837035, 0.960074663}, //
+
10046 {0.474316657, 0.960305572}, //
+
10047 {0.473837048, 0.960578382}, //
+
10048 {0.473398149, 0.960893214}, //
+
10049 {0.47299999, 0.961250007}, //
+
10050 {0.472643197, 0.961606801}, //
+
10051 {0.471824706, 0.962425292}, //
+
10052 {0.471635789, 0.962614179}, //
+
10053 {0.471320987, 0.96292901}, //
+
10054 {0.471300006, 0.962949991}, //
+
10055 {0.474700004, 0.990050018}, //
+
10056 {0.474700004, 0.989966035}, //
+
10057 {0.474700004, 0.989861131}, //
+
10058 {0.474700004, 0.988349974}, //
+
10059 {0.474720985, 0.987993181}, //
+
10060 {0.474783957, 0.987678409}, //
+
10061 {0.474888891, 0.987405539}, //
+
10062 {0.475035816, 0.98717469}, //
+
10063 {0.475224704, 0.986985803}, //
+
10064 {0.475455552, 0.986838877}, //
+
10065 {0.475728393, 0.986733973}, //
+
10066 {0.476043224, 0.986670971}, //
+
10067 {0.476399988, 0.98664999}, //
+
10068 {0.477071613, 0.98664999}, //
+
10069 {0.477344453, 0.98664999}, //
+
10070 {0.477575302, 0.98664999}, //
+
10071 {0.478100002, 0.98664999}, //
+
10072 {0.478120357, 0.986629009}, //
+
10073 {0.478283346, 0.986461103}, //
+
10074 {0.47842592, 0.986314178}, //
+
10075 {0.478833348, 0.985894442}, //
+
10076 {0.479403704, 0.985306799}, //
+
10077 {0.479750007, 0.984950006}, //
+
10078 {0.480127782, 0.984603703}, //
+
10079 {0.480505556, 0.98429817}, //
+
10080 {0.48088333, 0.984033346}, //
+
10081 {0.481261104, 0.983809233}, //
+
10082 {0.481638879, 0.983625948}, //
+
10083 {0.482016653, 0.983483315}, //
+
10084 {0.482394457, 0.98338151}, //
+
10085 {0.482772231, 0.983320355}, //
+
10086 {0.483150005, 0.983299971}, //
+
10087 {0.495050013, 0.983299971}, //
+
10088 {0.497263581, 0.983341336}, //
+
10089 {0.499393225, 0.983465433}, //
+
10090 {0.501438916, 0.983672202}, //
+
10091 {0.503400624, 0.983961701}, //
+
10092 {0.505278409, 0.984333932}, //
+
10093 {0.50707221, 0.984788895}, //
+
10094 {0.508782089, 0.985326529}, //
+
10095 {0.510408044, 0.985946894}, //
+
10096 {0.511950016, 0.98664999}, //
+
10097 {0.513419151, 0.987405539}, //
+
10098 {0.514804304, 0.988161087}, //
+
10099 {0.516105533, 0.988916695}, //
+
10100 {0.517322838, 0.989672244}, //
+
10101 {0.518456161, 0.990427792}, //
+
10102 {0.51950556, 0.991183341}, //
+
10103 {0.520470977, 0.991938889}, //
+
10104 {0.52135247, 0.992694438}, //
+
10105 {0.52214998, 0.993449986}, //
+
10106 {0.525119781, 0.994960487}, //
+
10107 {0.528006792, 0.996469736}, //
+
10108 {0.530811131, 0.997977793}, //
+
10109 {0.533532739, 0.999484539}, //
+
10110 {0.536171615, 1.00099015}, //
+
10111 {0.53872776, 1.00249445}, //
+
10112 {0.541201234, 1.00399756}, //
+
10113 {0.543591976, 1.00549936}, //
+
10114 {0.545899987, 1.00699997}, //
+
10115 {0.548030257, 1.00771356}, //
+
10116 {0.54990989, 1.00834322}, //
+
10117 {0.552917302, 1.00935066}, //
+
10118 {0.554922223, 1.01002216}, //
+
10119 {0.555548787, 1.01023209}, //
+
10120 {0.555924714, 1.01035798}, //
+
10121 {0.556050003, 1.01040006}, //
+
10122 {0.55678457, 1.01111352}, //
+
10123 {0.557477176, 1.01174319}, //
+
10124 {0.558127761, 1.01228893}, //
+
10125 {0.558736444, 1.01275063}, //
+
10126 {0.559303105, 1.0131284}, //
+
10127 {0.559827805, 1.01342225}, //
+
10128 {0.560310483, 1.01363206}, //
+
10129 {0.560751259, 1.01375806}, //
+
10130 {0.561150014, 1.01380002}, //
+
10131 {0.561548769, 1.01380002}, //
+
10132 {0.561989486, 1.01380002}, //
+
10133 {0.566250026, 1.01380002}, //
+
10134 {0.56704694, 1.01380002}, //
+
10135 {0.567926526, 1.01380002}, //
+
10136 {0.576399982, 1.01380002}, //
+
10137 {0.577952445, 1.01380002}, //
+
10138 {0.579587638, 1.01380002}, //
+
10139 {0.593349993, 1.01380002}, //
+
10140 {0.597788274, 1.01316977}, //
+
10141 {0.602058649, 1.01279008}, //
+
10142 {0.606161118, 1.0126611}, //
+
10143 {0.61009568, 1.01278269}, //
+
10144 {0.613862336, 1.01315498}, //
+
10145 {0.617461085, 1.01377773}, //
+
10146 {0.620891988, 1.01465118}, //
+
10147 {0.624154925, 1.01577532}, //
+
10148 {0.627250016, 1.01715004}, //
+
10149 {0.630271614, 1.01866114}, //
+
10150 {0.63329196, 1.02017224}, //
+
10151 {0.636311114, 1.02168334}, //
+
10152 {0.639329016, 1.02319443}, //
+
10153 {0.642345667, 1.02470553}, //
+
10154 {0.645361125, 1.02621663}, //
+
10155 {0.648375332, 1.02772772}, //
+
10156 {0.651388288, 1.02923894}, //
+
10157 {0.654399991, 1.03075004}, //
+
10158 {0.65825063, 1.03367782}, //
+
10159 {0.662269115, 1.03643894}, //
+
10160 {0.666455567, 1.03903329}, //
+
10161 {0.670809865, 1.04146111}, //
+
10162 {0.675332069, 1.04372227}, //
+
10163 {0.68002224, 1.04581666}, //
+
10164 {0.684880257, 1.04774439}, //
+
10165 {0.68990618, 1.04950559}, //
+
10166 {0.695100009, 1.05110002}, //
+
10167 {0.700220346, 1.05189693}, //
+
10168 {0.705048144, 1.05277658}, //
+
10169 {0.709583342, 1.05373883}, //
+
10170 {0.713825941, 1.05478394}, //
+
10171 {0.717775941, 1.05591178}, //
+
10172 {0.721433342, 1.05712223}, //
+
10173 {0.724798143, 1.05841541}, //
+
10174 {0.727870345, 1.05979133}, //
+
10175 {0.730650008, 1.06124997}, //
+
10176 {0.733209848, 1.06273949}, //
+
10177 {0.735600591, 1.06418586}, //
+
10178 {0.737822235, 1.06558883}, //
+
10179 {0.739874721, 1.06694877}, //
+
10180 {0.741758049, 1.06826544}, //
+
10181 {0.743472219, 1.06953883}, //
+
10182 {0.74501729, 1.07076919}, //
+
10183 {0.746393204, 1.07195616}, //
+
10184 {0.747600019, 1.07309997}, //
+
10185 {0.748670399, 1.07417035}, //
+
10186 {0.749614835, 1.07511485}, //
+
10187 {0.750433326, 1.07593334}, //
+
10188 {0.751125932, 1.07662594}, //
+
10189 {0.751692593, 1.07719254}, //
+
10190 {0.75213331, 1.07763338}, //
+
10191 {0.752699971, 1.07819998}, //
+
10192 {0.75001359, 1.07954323}, //
+
10193 {0.749300003, 1.07990003}, //
+
10194 {0.748492002, 1.08029878}, //
+
10195 {0.747556806, 1.0807395}, //
+
10196 {0.746494472, 1.08122218}, //
+
10197 {0.745304942, 1.08174694}, //
+
10198 {0.743988276, 1.08231354}, //
+
10199 {0.742544472, 1.08292222}, //
+
10200 {0.740973473, 1.08357286}, //
+
10201 {0.739275336, 1.08426547}, //
+
10202 {0.737450004, 1.08500004}, //
+
10203 {0.735508621, 1.08571362}, //
+
10204 {0.733440101, 1.08634317}, //
+
10205 {0.731244445, 1.08688891}, //
+
10206 {0.728921592, 1.08735061}, //
+
10207 {0.726471603, 1.08772838}, //
+
10208 {0.723894417, 1.08802223}, //
+
10209 {0.721190095, 1.08823204}, //
+
10210 {0.718358636, 1.08835804}, //
+
10211 {0.715399981, 1.08840001}, //
+
10212 {0.70937717, 1.08835804}, //
+
10213 {0.703353107, 1.08823204}, //
+
10214 {0.697327793, 1.08802223}, //
+
10215 {0.691301227, 1.08772838}, //
+
10216 {0.685273468, 1.08735061}, //
+
10217 {0.679244459, 1.08688891}, //
+
10218 {0.673214197, 1.08634317}, //
+
10219 {0.667182744, 1.08571362}, //
+
10220 {0.661149979, 1.08500004}, //
+
10221 {0.652293205, 1.08500004}, //
+
10222 {0.647988915, 1.08500004}, //
+
10223 {0.643767297, 1.08500004}, //
+
10224 {0.63962841, 1.08500004}, //
+
10225 {0.635572195, 1.08500004}, //
+
10226 {0.631598771, 1.08500004}, //
+
10227 {0.554936409, 1.08500004}, //
+
10228 {0.552677751, 1.08500004}, //
+
10229 {0.5504179, 1.08500004}, //
+
10230 {0.548156798, 1.08500004}, //
+
10231 {0.543630838, 1.08500004}, //
+
10232 {0.539099991, 1.08500004}, //
+
10233 {0.536864817, 1.08502102}, //
+
10234 {0.534670353, 1.08508396}, //
+
10235 {0.532516658, 1.08518887}, //
+
10236 {0.530403733, 1.08533585}, //
+
10237 {0.528331459, 1.08552468}, //
+
10238 {0.526300013, 1.08575559}, //
+
10239 {0.524309278, 1.08602834}, //
+
10240 {0.522359252, 1.08634317}, //
+
10241 {0.520449996, 1.08669996}, //
+
10242 {0.518676519, 1.08705676}, //
+
10243 {0.517264843, 1.08734083}, //
+
10244 {0.521405578, 1.09254444}, //
+
10245 {0.527220964, 1.09941423}, //
+
10246 {0.533119142, 1.1059494}, //
+
10247 {0.539099991, 1.11214995}, //
+
10248 {0.545007408, 1.11901176}, //
+
10249 {0.550662935, 1.12604141}, //
+
10250 {0.556066692, 1.13323891}, //
+
10251 {0.5612185, 1.14060438}, //
+
10252 {0.563969553, 1.1448338}, //
+
10253 {0.563847542, 1.14553082}, //
+
10254 {0.563411117, 1.14886117}, //
+
10255 {0.563099384, 1.15231609}, //
+
10256 {0.562912345, 1.15589571}, //
+
10257 {0.562849998, 1.15960002}, //
+
10258 {0.512000024, 1.08840001}, //
+
10259 {0.515755534, 1.08764446}, //
+
10260 {0.517264843, 1.08734083}, //
+
10261 {0.515672863, 1.08534014}, //
+
10262 {0.510022819, 1.07780123}, //
+
10263 {0.504455566, 1.06992781}, //
+
10264 {0.498970985, 1.06171978}, //
+
10265 {0.493569136, 1.05317712}, //
+
10266 {0.488249987, 1.04429996}, //
+
10267 {0.482603699, 1.0307858}, //
+
10268 {0.477709264, 1.01735437}, //
+
10269 {0.473566681, 1.00400555}, //
+
10270 {0.470175922, 0.990739524}, //
+
10271 {0.467537045, 0.977556169}, //
+
10272 {0.465649992, 0.964455545}, //
+
10273 {0.464514822, 0.951437652}, //
+
10274 {0.464131474, 0.938502491}, //
+
10275 {0.46450001, 0.925650001}, //
+
10276 {0.46450001, 0.912072241}, //
+
10277 {0.46450001, 0.909813583}, //
+
10278 {0.46450001, 0.907556176}, //
+
10279 {0.46450001, 0.905300021}, //
+
10280 {0.465506792, 0.896214187}, //
+
10281 {0.467016041, 0.887045681}, //
+
10282 {0.469027787, 0.877794445}, //
+
10283 {0.471541971, 0.868460476}, //
+
10284 {0.474558651, 0.859043837}, //
+
10285 {0.478077769, 0.849544466}, //
+
10286 {0.482099384, 0.839962363}, //
+
10287 {0.486623466, 0.83029753}, //
+
10288 {0.491649985, 0.820550025}, //
+
10289 {0.49390617, 0.814558625}, //
+
10290 {0.496163577, 0.808651209}, //
+
10291 {0.498422235, 0.802827775}, //
+
10292 {0.500682116, 0.797088265}, //
+
10293 {0.502943218, 0.791432738}, //
+
10294 {0.505205572, 0.785861135}, //
+
10295 {0.507469118, 0.780373454}, //
+
10296 {0.509733975, 0.774969757}, //
+
10297 {0.512000024, 0.769649982}, //
+
10298 {0.514255583, 0.763313591}, //
+
10299 {0.516511083, 0.756348789}, //
+
10300 {0.518766642, 0.748755574}, //
+
10301 {0.521022201, 0.740533948}, //
+
10302 {0.521217346, 0.739768326}, //
+
10303 {0.521011114, 0.739716649}, //
+
10304 {0.519754946, 0.739401877}, //
+
10305 {0.519001245, 0.73921299}, //
+
10306 {0.518750012, 0.739149988}, //
+
10307 {0.521995246, 0.736716032}, //
+
10308 {0.52327776, 0.731683969}, //
+
10309 {0.525533319, 0.722205579}, //
+
10310 {0.527788877, 0.712098777}, //
+
10311 {0.530044436, 0.701363564}, //
+
10312 {0.532299995, 0.689999998}, //
+
10313 {0.534524679, 0.67817533}, //
+
10314 {0.535730362, 0.671350002}, //
+
10315 {0.535700023, 0.671350002}, //
+
10316 {0.535779357, 0.67107296}, //
+
10317 {0.53666544, 0.666056812}, //
+
10318 {0.538722217, 0.653644443}, //
+
10319 {0.540695071, 0.640938282}, //
+
10320 {0.542583942, 0.627938271}, //
+
10321 {0.54438889, 0.614644468}, //
+
10322 {0.546109855, 0.601056814}, //
+
10323 {0.547746897, 0.58717531}, //
+
10324 {0.549300015, 0.573000014}, //
+
10325 {0.550800622, 0.561028421}, //
+
10326 {0.55230248, 0.549224675}, //
+
10327 {0.55380553, 0.537588894}, //
+
10328 {0.555309892, 0.526120961}, //
+
10329 {0.556815445, 0.514820993}, //
+
10330 {0.558322251, 0.503688872}, //
+
10331 {0.559830248, 0.492724687}, //
+
10332 {0.561339498, 0.481928408}, //
+
10333 {0.562849998, 0.471300006}, //
+
10334 {0.565903068, 0.450664192}, //
+
10335 {0.56904012, 0.427934557}, //
+
10336 {0.572261095, 0.4031111}, //
+
10337 {0.575566053, 0.376193821}, //
+
10338 {0.578954935, 0.347182721}, //
+
10339 {0.5824278, 0.316077769}, //
+
10340 {0.585984588, 0.282879025}, //
+
10341 {0.586600006, 0.276913136}, //
+
10342 {0.586600006, 0.276242584}, //
+
10343 {0.586600006, 0.275425941}, //
+
10344 {0.586600006, 0.274650007}, //
+
10345 {0.58662039, 0.273873448}, //
+
10346 {0.586681485, 0.273054928}, //
+
10347 {0.58678335, 0.272194445}, //
+
10348 {0.586925924, 0.271291971}, //
+
10349 {0.587109268, 0.270347536}, //
+
10350 {0.587333322, 0.269361109}, //
+
10351 {0.587409616, 0.269064873}, //
+
10352 {0.589625299, 0.247586414}, //
+
10353 {0.593349993, 0.210199997}, //
+
10354 {0.597830236, 0.17253086}, //
+
10355 {0.602226555, 0.136367902}, //
+
10356 {0.606538892, 0.101711109}, //
+
10357 {0.610767305, 0.068560496}, //
+
10358 {0.614393294, 0.0408746041}, //
+
10359 {0.613699973, 0.0406999998}, //
+
10360 {0.615215838, 0.034659043}, //
+
10361 {0.618972242, 0.0067777778}, //
+
10362 {0.622948766, -0.0218543205}, //
+
10363 {0.626841366, -0.0489802472}, //
+
10364 {0.630649984, -0.0746000037}, //
+
10365 {0.632665455, -0.094949998}, //
+
10366 {0.634050012, -0.094949998}, //
+
10367 {0.635727763, -0.0957049355}, //
+
10368 {0.637738883, -0.0964586437}, //
+
10369 {0.640083313, -0.0972111076}, //
+
10370 {0.642761111, -0.0979623422}, //
+
10371 {0.645772219, -0.0987123474}, //
+
10372 {0.649116695, -0.0994611084}, //
+
10373 {0.652794421, -0.10020864}, //
+
10374 {0.656805575, -0.100954935}, //
+
10375 {0.661149979, -0.1017}, //
+
10376 {0.725600004, -0.1017}, //
+
10377 {0.72936666, -0.101741977}, //
+
10378 {0.733133316, -0.101867899}, //
+
10379 {0.736899972, -0.102077775}, //
+
10380 {0.740666687, -0.102371603}, //
+
10381 {0.744433343, -0.102749385}, //
+
10382 {0.748199999, -0.103211112}, //
+
10383 {0.751966655, -0.103756793}, //
+
10384 {0.755733311, -0.104386419}, //
+
10385 {0.759500027, -0.105099998}, //
+
10386 {0.763454914, -0.104995064}, //
+
10387 {0.767786443, -0.104680248}, //
+
10388 {0.772494435, -0.104155555}, //
+
10389 {0.77757901, -0.103420988}, //
+
10390 {0.783040106, -0.102476545}, //
+
10391 {0.788877785, -0.101322219}, //
+
10392 {0.795091987, -0.0999580249}, //
+
10393 {0.801682711, -0.0983839482}, //
+
10394 {0.808650017, -0.0966000035}, //
+
10395 {0.815753102, -0.0947425961}, //
+
10396 {0.822728992, -0.0929259285}, //
+
10397 {0.829577804, -0.0911500007}, //
+
10398 {0.83629936, -0.0894148126}, //
+
10399 {0.842893839, -0.0877203718}, //
+
10400 {0.849361122, -0.0860666633}, //
+
10401 {0.855701208, -0.084453702}, //
+
10402 {0.861914217, -0.0828814805}, //
+
10403 {0.867999971, -0.0813499987}, //
+
10404 {0.873781502, -0.0798913613}, //
+
10405 {0.879059255, -0.0785154328}, //
+
10406 {0.883833349, -0.0772222206}, //
+
10407 {0.888103724, -0.0760117248}, //
+
10408 {0.891870379, -0.0748839527}, //
+
10409 {0.895133317, -0.0738388896}, //
+
10410 {0.897892594, -0.0728765428}, //
+
10411 {0.900148153, -0.0719969124}, //
+
10412 {0.901899993, -0.0711999983}, //
+
10413 {0.902655542, -0.0697728395}, //
+
10414 {0.90341109, -0.0685135797}, //
+
10415 {0.904166639, -0.0674222186}, //
+
10416 {0.904922247, -0.0664987639}, //
+
10417 {0.905677795, -0.0657432079}, //
+
10418 {0.906433344, -0.0651555583}, //
+
10419 {0.907188892, -0.0647358}, //
+
10420 {0.907944441, -0.0644839481}, //
+
10421 {0.908699989, -0.0644000024}, //
+
10422 {0.91004324, -0.0617333315}, //
+
10423 {0.910588861, -0.0606499985}, //
+
10424 {0.912100017, -0.0576499999}, //
+
10425 {0.911974072, -0.0591919757}, //
+
10426 {0.911596298, -0.060817901}, //
+
10427 {0.910966694, -0.0625277758}, //
+
10428 {0.910085201, -0.0643216074}, //
+
10429 {0.908951879, -0.0661993846}, //
+
10430 {0.907566667, -0.0681611076}, //
+
10431 {0.905929625, -0.0702067912}, //
+
10432 {0.904040754, -0.0723364204}, //
+
10433 {0.901899993, -0.0745500028}, //
+
10434 {0.899580836, -0.0768370405}, //
+
10435 {0.897134542, -0.0791648179}, //
+
10436 {0.894561112, -0.0815333351}, //
+
10437 {0.891860485, -0.0839425921}, //
+
10438 {0.889032722, -0.0863925889}, //
+
10439 {0.886077762, -0.0888833329}, //
+
10440 {0.882995665, -0.0914148167}, //
+
10441 {0.879786432, -0.0939870402}, //
+
10442 {0.876450002, -0.0966000035}, //
+
10443 {0.873082101, -0.0990975276}, //
+
10444 {0.869756162, -0.101301238}, //
+
10445 {0.866472244, -0.103211112}, //
+
10446 {0.863230228, -0.104827158}, //
+
10447 {0.860030234, -0.106149383}, //
+
10448 {0.856872201, -0.107177779}, //
+
10449 {0.853756189, -0.107912347}, //
+
10450 {0.85068208, -0.108353086}, //
+
10451 {0.847649992, -0.108499996}, //
+
10452 {0.843925297, -0.109255552}, //
+
10453 {0.840284586, -0.110011108}, //
+
10454 {0.836727798, -0.110766664}, //
+
10455 {0.833254933, -0.11152222}, //
+
10456 {0.829866052, -0.112277776}, //
+
10457 {0.826561093, -0.113033332}, //
+
10458 {0.823340118, -0.113788888}, //
+
10459 {0.820203066, -0.114544444}, //
+
10460 {0.817149997, -0.1153}, //
+
10461 {0.811788917, -0.117430247}, //
+
10462 {0.806261122, -0.11930988}, //
+
10463 {0.800566673, -0.12093889}, //
+
10464 {0.79470557, -0.122317284}, //
+
10465 {0.788677752, -0.123445064}, //
+
10466 {0.782483339, -0.124322221}, //
+
10467 {0.776122212, -0.124948762}, //
+
10468 {0.769594431, -0.125324696}, //
+
10469 {0.762899995, -0.12545}, //
+
10470 {0.752512336, -0.12545}, //
+
10471 {0.747444451, -0.12545}, //
+
10472 {0.742460489, -0.12545}, //
+
10473 {0.718800008, -0.12545}, //
+
10474 {0.714950025, -0.124736421}, //
+
10475 {0.710933328, -0.124106787}, //
+
10476 {0.706749976, -0.123561114}, //
+
10477 {0.702400029, -0.123099379}, //
+
10478 {0.697883308, -0.122721605}, //
+
10479 {0.693199992, -0.122427776}, //
+
10480 {0.688350022, -0.122217901}, //
+
10481 {0.683333337, -0.122091979}, //
+
10482 {0.678149998, -0.122050002}, //
+
10483 {0.674393833, -0.122050002}, //
+
10484 {0.667011082, -0.122050002}, //
+
10485 {0.642699361, -0.122050002}, //
+
10486 {0.639875293, -0.122050002}, //
+
10487 {0.634709477, -0.122050002}, //
+
10488 {0.63425988, -0.11462222}, //
+
10489 {0.632685781, -0.095155552}, //
+
10490 {0.632665455, -0.094949998}, //
+
10491 {0.629516661, -0.094949998}, //
+
10492 {0.628005564, -0.094949998}, //
+
10493 {0.627250016, -0.094949998}, //
+
10494 {0.630649984, -0.122050002}, //
+
10495 {0.634709477, -0.122050002}, //
+
10496 {0.635372221, -0.133000001}, //
+
10497 {0.636022866, -0.150288895}, //
+
10498 {0.636211753, -0.166488886}, //
+
10499 {0.636137724, -0.170586139}, //
+
10500 {0.637049973, -0.171038896}, //
+
10501 {0.639383316, -0.17219691}, //
+
10502 {0.640799999, -0.172900006}, //
+
10503 {0.642352462, -0.173634574}, //
+
10504 {0.643987656, -0.174327165}, //
+
10505 {0.645705581, -0.174977779}, //
+
10506 {0.647506177, -0.175586417}, //
+
10507 {0.649389505, -0.176153094}, //
+
10508 {0.651355565, -0.176677778}, //
+
10509 {0.653404295, -0.177160487}, //
+
10510 {0.655535817, -0.177601233}, //
+
10511 {0.65775001, -0.178000003}, //
+
10512 {0.660037041, -0.178398758}, //
+
10513 {0.662364841, -0.178839505}, //
+
10514 {0.66473335, -0.179322228}, //
+
10515 {0.66714257, -0.179846913}, //
+
10516 {0.669592619, -0.180413574}, //
+
10517 {0.672083318, -0.181022227}, //
+
10518 {0.674614787, -0.181672841}, //
+
10519 {0.677187026, -0.182365432}, //
+
10520 {0.679799974, -0.1831}, //
+
10521 {0.682422817, -0.183813587}, //
+
10522 {0.685002446, -0.184443206}, //
+
10523 {0.687538862, -0.184988886}, //
+
10524 {0.690032125, -0.185450613}, //
+
10525 {0.692482114, -0.185828388}, //
+
10526 {0.69488889, -0.186122224}, //
+
10527 {0.697252452, -0.186332092}, //
+
10528 {0.699572861, -0.186458021}, //
+
10529 {0.701849997, -0.186499998}, //
+
10530 {0.702977777, -0.186499998}, //
+
10531 {0.703854918, -0.186499998}, //
+
10532 {0.712000012, -0.186499998}, //
+
10533 {0.714329004, -0.186520994}, //
+
10534 {0.716782689, -0.186583951}, //
+
10535 {0.719361126, -0.186688885}, //
+
10536 {0.722064197, -0.186835796}, //
+
10537 {0.724891961, -0.187024698}, //
+
10538 {0.727844417, -0.187255561}, //
+
10539 {0.730921626, -0.187528402}, //
+
10540 {0.734123468, -0.187843204}, //
+
10541 {0.737450004, -0.188199997}, //
+
10542 {0.740817904, -0.18857716}, //
+
10543 {0.744143844, -0.188953087}, //
+
10544 {0.747427762, -0.189327776}, //
+
10545 {0.750669777, -0.189701229}, //
+
10546 {0.753869772, -0.19007346}, //
+
10547 {0.757027805, -0.19044444}, //
+
10548 {0.760143816, -0.190814197}, //
+
10549 {0.763217926, -0.191182718}, //
+
10550 {0.766250014, -0.191550002}, //
+
10551 {0.769250631, -0.191906795}, //
+
10552 {0.772208035, -0.192221612}, //
+
10553 {0.775122225, -0.192494437}, //
+
10554 {0.777993202, -0.192725316}, //
+
10555 {0.780820966, -0.192914203}, //
+
10556 {0.783605576, -0.193061113}, //
+
10557 {0.786346912, -0.193166047}, //
+
10558 {0.789045036, -0.19322902}, //
+
10559 {0.791700006, -0.19325}, //
+
10560 {0.794197559, -0.19325}, //
+
10561 {0.796401262, -0.19325}, //
+
10562 {0.801851869, -0.19325}, //
+
10563 {0.795666695, -0.195533335}, //
+
10564 {0.79302597, -0.196445093}, //
+
10565 {0.792959273, -0.196461111}, //
+
10566 {0.791259289, -0.196838886}, //
+
10567 {0.78943336, -0.19721666}, //
+
10568 {0.787481487, -0.197594449}, //
+
10569 {0.785403728, -0.197972223}, //
+
10570 {0.783200026, -0.198349997}, //
+
10571 {0.780985832, -0.198727772}, //
+
10572 {0.778854311, -0.199105561}, //
+
10573 {0.77680558, -0.199483335}, //
+
10574 {0.77483952, -0.199861109}, //
+
10575 {0.772956192, -0.200238883}, //
+
10576 {0.771155536, -0.200616673}, //
+
10577 {0.769437671, -0.200994447}, //
+
10578 {0.767802477, -0.201372221}, //
+
10579 {0.766250014, -0.201749995}, //
+
10580 {0.764833331, -0.202106789}, //
+
10581 {0.763583362, -0.202421606}, //
+
10582 {0.762499988, -0.202694446}, //
+
10583 {0.761583328, -0.20292531}, //
+
10584 {0.759833336, -0.203366056}, //
+
10585 {0.759583354, -0.203429013}, //
+
10586 {0.759500027, -0.203449994}, //
+
10587 {0.758366644, -0.203449994}, //
+
10588 {0.757485211, -0.203449994}, //
+
10589 {0.756351829, -0.203449994}, //
+
10590 {0.753329635, -0.203449994}, //
+
10591 {0.751440763, -0.203449994}, //
+
10592 {0.749300003, -0.203449994}, //
+
10593 {0.741966665, -0.203449994}, //
+
10594 {0.739270389, -0.203449994}, //
+
10595 {0.713733315, -0.203449994}, //
+
10596 {0.710344434, -0.203449994}, //
+
10597 {0.706955552, -0.203449994}, //
+
10598 {0.696788907, -0.203449994}, //
+
10599 {0.693400025, -0.203449994}, //
+
10600 {0.690157413, -0.203408018}, //
+
10601 {0.687207401, -0.203282103}, //
+
10602 {0.684549987, -0.20307222}, //
+
10603 {0.682185173, -0.202778399}, //
+
10604 {0.680112958, -0.20240061}, //
+
10605 {0.678333342, -0.201938882}, //
+
10606 {0.676846325, -0.201393217}, //
+
10607 {0.675651848, -0.200763583}, //
+
10608 {0.67474997, -0.200049996}, //
+
10609 {0.669650018, -0.200049996}, //
+
10610 {0.668516695, -0.20000802}, //
+
10611 {0.667383313, -0.199882105}, //
+
10612 {0.66624999, -0.199672222}, //
+
10613 {0.665116668, -0.199378401}, //
+
10614 {0.663983345, -0.199000612}, //
+
10615 {0.662850022, -0.198538885}, //
+
10616 {0.66171664, -0.197993204}, //
+
10617 {0.660583317, -0.197363585}, //
+
10618 {0.659449995, -0.196649998}, //
+
10619 {0.658306181, -0.195915431}, //
+
10620 {0.657119155, -0.19522284}, //
+
10621 {0.655888915, -0.194572225}, //
+
10622 {0.654615462, -0.193963587}, //
+
10623 {0.653298795, -0.193396911}, //
+
10624 {0.651938915, -0.192872226}, //
+
10625 {0.650535822, -0.192389503}, //
+
10626 {0.649089515, -0.191948771}, //
+
10627 {0.647599995, -0.191550002}, //
+
10628 {0.64614135, -0.191182718}, //
+
10629 {0.644765437, -0.190814197}, //
+
10630 {0.643472195, -0.19044444}, //
+
10631 {0.642261744, -0.19007346}, //
+
10632 {0.641133964, -0.189701229}, //
+
10633 {0.640088916, -0.189327776}, //
+
10634 {0.639126539, -0.188953087}, //
+
10635 {0.638246894, -0.18857716}, //
+
10636 {0.63744998, -0.188199997}, //
+
10637 {0.636736393, -0.187843204}, //
+
10638 {0.636106789, -0.187528402}, //
+
10639 {0.635640562, -0.187295273}, //
+
10640 {0.635938883, -0.181600004}, //
+
10641 {0.636137724, -0.170586139}, //
+
10642 {0.636133313, -0.170583948}, //
+
10643 {0.635383308, -0.170211732}, //
+
10644 {0.634800017, -0.169922218}, //
+
10645 {0.634383321, -0.169715434}, //
+
10646 {0.634050012, -0.169550002}, //
+
10647 {0.633315444, -0.168857411}, //
+
10648 {0.632622838, -0.168290734}, //
+
10649 {0.631972194, -0.167850003}, //
+
10650 {0.631363571, -0.167535186}, //
+
10651 {0.630796909, -0.167346299}, //
+
10652 {0.63027221, -0.167283326}, //
+
10653 {0.629789531, -0.167346299}, //
+
10654 {0.629348755, -0.167535186}, //
+
10655 {0.62895, -0.167850003}, //
+
10656 {0.628614187, -0.168248147}, //
+
10657 {0.628362358, -0.168687031}, //
+
10658 {0.628194451, -0.169166669}, //
+
10659 {0.628110468, -0.169687033}, //
+
10660 {0.628110468, -0.170248151}, //
+
10661 {0.628194451, -0.170849994}, //
+
10662 {0.628362358, -0.171492592}, //
+
10663 {0.628614187, -0.172175929}, //
+
10664 {0.62895, -0.172900006}, //
+
10665 {0.629306793, -0.173655555}, //
+
10666 {0.629621625, -0.174411118}, //
+
10667 {0.629894435, -0.175166667}, //
+
10668 {0.630125284, -0.175922215}, //
+
10669 {0.630314171, -0.176677778}, //
+
10670 {0.630461097, -0.177433327}, //
+
10671 {0.630566061, -0.17818889}, //
+
10672 {0.630629003, -0.178944439}, //
+
10673 {0.630649984, -0.179700002}, //
+
10674 {0.630670965, -0.18043457}, //
+
10675 {0.630733967, -0.181127161}, //
+
10676 {0.630838871, -0.181777775}, //
+
10677 {0.630985796, -0.182386413}, //
+
10678 {0.631174684, -0.182953089}, //
+
10679 {0.631405532, -0.183477774}, //
+
10680 {0.631678402, -0.183960497}, //
+
10681 {0.631993234, -0.184401229}, //
+
10682 {0.632350028, -0.184799999}, //
+
10683 {0.632706761, -0.185156792}, //
+
10684 {0.633525312, -0.185975313}, //
+
10685 {0.633714199, -0.1861642}, //
+
10686 {0.633861125, -0.186311111}, //
+
10687 {0.633966029, -0.186416045}, //
+
10688 {0.634029031, -0.186479017}, //
+
10689 {0.634050012, -0.186499998}, //
+
10690 {0.634091973, -0.186520994}, //
+
10691 {0.634217918, -0.186583951}, //
+
10692 {0.634721577, -0.186835796}, //
+
10693 {0.635099411, -0.187024698}, //
+
10694 {0.635561109, -0.187255561}, //
+
10695 {0.635640562, -0.187295273}, //
+
10696 {0.635204315, -0.195622221}, //
+
10697 {0.63400805, -0.208555549}, //
+
10698 {0.632350028, -0.220400006}, //
+
10699 {0.630576551, -0.231072217}, //
+
10700 {0.62901175, -0.240488887}, //
+
10701 {0.624004304, -0.270622224}, //
+
10702 {0.623899996, -0.27125001}, //
+
10703 {0.624065459, -0.271417916}, //
+
10704 {0.624272227, -0.271627784}, //
+
10705 {0.624561727, -0.271921605}, //
+
10706 {0.624933958, -0.272299379}, //
+
10707 {0.625388861, -0.272761106}, //
+
10708 {0.625926554, -0.273306787}, //
+
10709 {0.627250016, -0.274650007}, //
+
10710 {0.628026545, -0.275446922}, //
+
10711 {0.628845036, -0.276326537}, //
+
10712 {0.629705548, -0.277288884}, //
+
10713 {0.630608022, -0.278333962}, //
+
10714 {0.631552458, -0.279461741}, //
+
10715 {0.632538915, -0.280672222}, //
+
10716 {0.633567274, -0.281965435}, //
+
10717 {0.634637654, -0.283341348}, //
+
10718 {0.635749996, -0.284799993}, //
+
10719 {0.636882722, -0.286289513}, //
+
10720 {0.638014197, -0.28773579}, //
+
10721 {0.639144421, -0.289138883}, //
+
10722 {0.640273452, -0.290498763}, //
+
10723 {0.641401231, -0.29181543}, //
+
10724 {0.642527759, -0.293088883}, //
+
10725 {0.643653095, -0.294319123}, //
+
10726 {0.644777179, -0.295506179}, //
+
10727 {0.645900011, -0.296649992}, //
+
10728 {0.647012353, -0.297762334}, //
+
10729 {0.648082733, -0.298832715}, //
+
10730 {0.649111092, -0.299861103}, //
+
10731 {0.650097549, -0.30084753}, //
+
10732 {0.651944458, -0.30269444}, //
+
10733 {0.652804911, -0.303554952}, //
+
10734 {0.654399991, -0.305150002}, //
+
10735 {0.655092597, -0.305946916}, //
+
10736 {0.655659258, -0.306826532}, //
+
10737 {0.656099975, -0.307788879}, //
+
10738 {0.656414807, -0.308833957}, //
+
10739 {0.656603694, -0.309961736}, //
+
10740 {0.656666696, -0.311172217}, //
+
10741 {0.656603694, -0.312465429}, //
+
10742 {0.656414807, -0.313841373}, //
+
10743 {0.656099975, -0.315299988}, //
+
10744 {0.655743182, -0.316811115}, //
+
10745 {0.65542841, -0.318322212}, //
+
10746 {0.65515554, -0.319833338}, //
+
10747 {0.654924691, -0.321344435}, //
+
10748 {0.654735804, -0.322855562}, //
+
10749 {0.654588878, -0.324366659}, //
+
10750 {0.654483974, -0.325877786}, //
+
10751 {0.654420972, -0.327388883}, //
+
10752 {0.654399991, -0.328900009}, //
+
10753 {0.653644443, -0.330462962}, //
+
10754 {0.652888894, -0.33215186}, //
+
10755 {0.652133346, -0.333966672}, //
+
10756 {0.651377797, -0.3359074}, //
+
10757 {0.650622249, -0.337974072}, //
+
10758 {0.649866641, -0.340166658}, //
+
10759 {0.649111092, -0.342485189}, //
+
10760 {0.648355544, -0.344929636}, //
+
10761 {0.647599995, -0.347499996}, //
+
10762 {0.64692837, -0.350206792}, //
+
10763 {0.646424711, -0.353038281}, //
+
10764 {0.646088898, -0.355994433}, //
+
10765 {0.645920992, -0.359075308}, //
+
10766 {0.645920992, -0.362280875}, //
+
10767 {0.646088898, -0.365611106}, //
+
10768 {0.646424711, -0.36906606}, //
+
10769 {0.64692837, -0.372645676}, //
+
10770 {0.647599995, -0.376349986}, //
+
10771 {0.648459852, -0.382236421}, //
+
10772 {0.649528384, -0.387829006}, //
+
10773 {0.650805533, -0.393127769}, //
+
10774 {0.652291358, -0.398132712}, //
+
10775 {0.653985798, -0.402843833}, //
+
10776 {0.655888915, -0.407261103}, //
+
10777 {0.658000588, -0.411384583}, //
+
10778 {0.660320997, -0.415214211}, //
+
10779 {0.662850022, -0.418749988}, //
+
10780 {0.665808022, -0.422075927}, //
+
10781 {0.669393182, -0.425275922}, //
+
10782 {0.673605561, -0.428350002}, //
+
10783 {0.678445041, -0.431298137}, //
+
10784 {0.683911741, -0.434120357}, //
+
10785 {0.690005541, -0.436816663}, //
+
10786 {0.696726561, -0.439387023}, //
+
10787 {0.704074681, -0.44183147}, //
+
10788 {0.712050021, -0.444150001}, //
+
10789 {0.718449354, -0.445556164}, //
+
10790 {0.725603104, -0.446752459}, //
+
10791 {0.73351109, -0.447738886}, //
+
10792 {0.742173433, -0.448515445}, //
+
10793 {0.751590133, -0.449082106}, //
+
10794 {0.761761129, -0.4494389}, //
+
10795 {0.772686422, -0.449585795}, //
+
10796 {0.784366071, -0.449522853}, //
+
10797 {0.796800017, -0.449250013}, //
+
10798 {0.80956912, -0.448830247}, //
+
10799 {0.8222543, -0.448326558}, //
+
10800 {0.834855556, -0.447738886}, //
+
10801 {0.84737283, -0.447067291}, //
+
10802 {0.85980618, -0.446311742}, //
+
10803 {0.872155547, -0.445472211}, //
+
10804 {0.884420991, -0.444548756}, //
+
10805 {0.896602452, -0.443541348}, //
+
10806 {0.908699989, -0.442449987}, //
+
10807 {0.920253098, -0.441348135}, //
+
10808 {0.930801213, -0.440287024}, //
+
10809 {0.940344453, -0.439266652}, //
+
10810 {0.948882699, -0.43828705}, //
+
10811 {0.95641607, -0.437348157}, //
+
10812 {0.962944448, -0.436450005}, //
+
10813 {0.968467891, -0.435592592}, //
+
10814 {0.9729864, -0.434775919}, //
+
10815 {0.976499975, -0.433999985}, //
+
10816 {0.980182707, -0.433077157}, //
+
10817 {0.983697534, -0.431819767}, //
+
10818 {0.987044454, -0.430227786}, //
+
10819 {0.990223467, -0.428301245}, //
+
10820 {0.993234575, -0.426040113}, //
+
10821 {0.996077776, -0.42344445}, //
+
10822 {0.998753071, -0.420514196}, //
+
10823 {1.00126052, -0.417249382}, //
+
10824 {1.0036, -0.413650006}, //
+
10825 {1.00580311, -0.409841359}, //
+
10826 {1.00787902, -0.405948758}, //
+
10827 {1.00982773, -0.401972234}, //
+
10828 {1.01164937, -0.397911727}, //
+
10829 {1.01334381, -0.393767297}, //
+
10830 {1.01491106, -0.389538884}, //
+
10831 {1.01635122, -0.385226548}, //
+
10832 {1.01766419, -0.380830258}, //
+
10833 {1.01884997, -0.376349986}, //
+
10834 {1.01987898, -0.371953696}, //
+
10835 {1.02069938, -0.367809266}, //
+
10836 {1.02131116, -0.363916665}, //
+
10837 {1.02171421, -0.360275924}, //
+
10838 {1.02190864, -0.356887043}, //
+
10839 {1.02189445, -0.35374999}, //
+
10840 {1.02167165, -0.350864828}, //
+
10841 {1.02124012, -0.348231494}, //
+
10842 {1.02059996, -0.345849991}, //
+
10843 {1.01971853, -0.342629015}, //
+
10844 {1.01858521, -0.338988274}, //
+
10845 {1.01719999, -0.334927768}, //
+
10846 {1.01556301, -0.330447525}, //
+
10847 {1.01367402, -0.325547516}, //
+
10848 {1.01153338, -0.320227772}, //
+
10849 {1.00914073, -0.314488262}, //
+
10850 {1.00649631, -0.308329016}, //
+
10851 {1.0036, -0.301750004}, //
+
10852 {1.00056791, -0.295013577}, //
+
10853 {0.997493804, -0.28835988}, //
+
10854 {0.994377792, -0.281788886}, //
+
10855 {0.991219759, -0.275300622}, //
+
10856 {0.988019764, -0.26889506}, //
+
10857 {0.984777749, -0.262572229}, //
+
10858 {0.981493831, -0.256332099}, //
+
10859 {0.978167892, -0.250174701}, //
+
10860 {0.974799991, -0.244100004}, //
+
10861 {0.971474051, -0.238370374}, //
+
10862 {0.968274057, -0.233225927}, //
+
10863 {0.965200007, -0.228666663}, //
+
10864 {0.962251842, -0.224692598}, //
+
10865 {0.959429622, -0.221303701}, //
+
10866 {0.956733346, -0.218500003}, //
+
10867 {0.954162955, -0.216281489}, //
+
10868 {0.951718509, -0.214648142}, //
+
10869 {0.949400008, -0.213599995}, //
+
10870 {0.948623478, -0.211994439}, //
+
10871 {0.947804928, -0.210177779}, //
+
10872 {0.946944416, -0.208149999}, //
+
10873 {0.946042001, -0.205911115}, //
+
10874 {0.945097506, -0.203461111}, //
+
10875 {0.944111109, -0.200800002}, //
+
10876 {0.94308269, -0.197927773}, //
+
10877 {0.94201237, -0.19484444}, //
+
10878 {0.940900028, -0.191550002}, //
+
10879 {0.939787626, -0.188119143}, //
+
10880 {0.938717306, -0.184604317}, //
+
10881 {0.937688887, -0.181005552}, //
+
10882 {0.93670249, -0.177322835}, //
+
10883 {0.935758054, -0.173556179}, //
+
10884 {0.93485558, -0.169705555}, //
+
10885 {0.933995068, -0.165770993}, //
+
10886 {0.933176517, -0.161752462}, //
+
10887 {0.932399988, -0.157649994}, //
+
10888 {0.93165493, -0.153568521}, //
+
10889 {0.93090862, -0.149612963}, //
+
10890 {0.930161119, -0.145783335}, //
+
10891 {0.929412365, -0.142079636}, //
+
10892 {0.92866236, -0.138501853}, //
+
10893 {0.928221166, -0.136474758}, //
+
10894 {0.928924084, -0.135775313}, //
+
10895 {0.929050028, -0.135649994}, //
+
10896 {0.929050028, -0.122050002}, //
+
10897 {0.925645709, -0.12460167}, //
+
10898 {0.925650001, -0.12545}, //
+
10899 {0.926404953, -0.12852408}, //
+
10900 {0.927158654, -0.131724074}, //
+
10901 {0.927911103, -0.135049999}, //
+
10902 {0.928221166, -0.136474758}, //
+
10903 {0.924516678, -0.140161112}, //
+
10904 {0.922879636, -0.141790122}, //
+
10905 {0.920990765, -0.143669754}, //
+
10906 {0.918850005, -0.145799994}, //
+
10907 {0.916552484, -0.148056179}, //
+
10908 {0.91417098, -0.150313586}, //
+
10909 {0.911705554, -0.15257223}, //
+
10910 {0.909156144, -0.154832095}, //
+
10911 {0.90652281, -0.157093212}, //
+
10912 {0.903805554, -0.159355551}, //
+
10913 {0.901004314, -0.161619142}, //
+
10914 {0.898119152, -0.163883954}, //
+
10915 {0.895150006, -0.166150004}, //
+
10916 {0.891772211, -0.16846852}, //
+
10917 {0.887683332, -0.170912966}, //
+
10918 {0.88288331, -0.173483327}, //
+
10919 {0.877372205, -0.176179633}, //
+
10920 {0.871150017, -0.179001853}, //
+
10921 {0.864216685, -0.181950003}, //
+
10922 {0.856572211, -0.185024068}, //
+
10923 {0.848216653, -0.188224077}, //
+
10924 {0.839150012, -0.191550002}, //
+
10925 {0.829717278, -0.194949389}, //
+
10926 {0.820241332, -0.198347524}, //
+
10927 {0.810722232, -0.201744437}, //
+
10928 {0.801159859, -0.205140129}, //
+
10929 {0.791554332, -0.208534569}, //
+
10930 {0.781905532, -0.211927772}, //
+
10931 {0.772213578, -0.215319753}, //
+
10932 {0.762478411, -0.218710497}, //
+
10933 {0.752699971, -0.222100005}, //
+
10934 {0.7432037, -0.225342587}, //
+
10935 {0.734292567, -0.228292599}, //
+
10936 {0.725966692, -0.230949998}, //
+
10937 {0.718225896, -0.233314812}, //
+
10938 {0.711070359, -0.235387042}, //
+
10939 {0.70450002, -0.237166673}, //
+
10940 {0.698514819, -0.238653705}, //
+
10941 {0.693114817, -0.239848152}, //
+
10942 {0.688300014, -0.24075}, //
+
10943 {0.68608582, -0.240812346}, //
+
10944 {0.683954298, -0.240999386}, //
+
10945 {0.681905568, -0.241311118}, //
+
10946 {0.679939508, -0.241747528}, //
+
10947 {0.67805618, -0.242308646}, //
+
10948 {0.676255584, -0.242994443}, //
+
10949 {0.674537659, -0.243804932}, //
+
10950 {0.672902465, -0.244740129}, //
+
10951 {0.671350002, -0.245800003}, //
+
10952 {0.669880867, -0.246953711}, //
+
10953 {0.668495655, -0.248148143}, //
+
10954 {0.667194426, -0.24938333}, //
+
10955 {0.66597718, -0.250659257}, //
+
10956 {0.664843798, -0.251975924}, //
+
10957 {0.663794458, -0.25333333}, //
+
10958 {0.662829041, -0.254731476}, //
+
10959 {0.661947548, -0.256170362}, //
+
10960 {0.661149979, -0.257649988}, //
+
10961 {0.660425901, -0.259140134}, //
+
10962 {0.659742594, -0.260588259}, //
+
10963 {0.659099996, -0.261994451}, //
+
10964 {0.658498168, -0.263358653}, //
+
10965 {0.65793705, -0.264680862}, //
+
10966 {0.657416642, -0.265961111}, //
+
10967 {0.656937063, -0.267199397}, //
+
10968 {0.656498134, -0.268395692}, //
+
10969 {0.656099975, -0.269549996}, //
+
10970 {0.65515554, -0.272383332}, //
+
10971 {0.654924691, -0.273075938}, //
+
10972 {0.654735804, -0.2736426}, //
+
10973 {0.654483974, -0.274398148}, //
+
10974 {0.654420972, -0.274587035}, //
+
10975 {0.654399991, -0.274650007}, //
+
10976 {0.651000023, -0.276349992}, //
+
10977 {0.650244415, -0.276706785}, //
+
10978 {0.649488866, -0.277021617}, //
+
10979 {0.648733318, -0.277294457}, //
+
10980 {0.647977769, -0.277525306}, //
+
10981 {0.647222221, -0.277714193}, //
+
10982 {0.646466672, -0.277861118}, //
+
10983 {0.645711124, -0.277966052}, //
+
10984 {0.644955575, -0.278029025}, //
+
10985 {0.644200027, -0.278050005}, //
+
10986 {0.639711082, -0.278050005}, //
+
10987 {0.638958633, -0.278050005}, //
+
10988 {0.638204932, -0.278050005}, //
+
10989 {0.633672237, -0.278050005}, //
+
10990 {0.633189499, -0.278050005}, //
+
10991 {0.632748783, -0.278050005}, //
+
10992 {0.630838871, -0.278050005}, //
+
10993 {0.630733967, -0.278050005}, //
+
10994 {0.630649984, -0.278050005}, //
+
10995 {0.631530881, -0.275049388}, //
+
10996 {0.632662356, -0.272091985}, //
+
10997 {0.634044468, -0.269177765}, //
+
10998 {0.635677159, -0.266306788}, //
+
10999 {0.637560487, -0.263479024}, //
+
11000 {0.639694452, -0.260694444}, //
+
11001 {0.642078996, -0.257953078}, //
+
11002 {0.644714177, -0.255254924}, //
+
11003 {0.647599995, -0.252600014}, //
+
11004 {0.650716066, -0.249987036}, //
+
11005 {0.654041946, -0.247414812}, //
+
11006 {0.657577753, -0.244883329}, //
+
11007 {0.661323428, -0.2423926}, //
+
11008 {0.665279031, -0.239942595}, //
+
11009 {0.669444442, -0.237533331}, //
+
11010 {0.67381978, -0.235164821}, //
+
11011 {0.678404927, -0.232837036}, //
+
11012 {0.683200002, -0.230550006}, //
+
11013 {0.687995076, -0.228377774}, //
+
11014 {0.692580223, -0.226372227}, //
+
11015 {0.696955562, -0.224533334}, //
+
11016 {0.701120973, -0.222861111}, //
+
11017 {0.705076516, -0.221355557}, //
+
11018 {0.70882225, -0.220016673}, //
+
11019 {0.712357998, -0.218844444}, //
+
11020 {0.715683937, -0.217838883}, //
+
11021 {0.718800008, -0.216999993}, //
+
11022 {0.721654296, -0.216286421}, //
+
11023 {0.724172831, -0.215656787}, //
+
11024 {0.728202462, -0.214649379}, //
+
11025 {0.730888903, -0.213977784}, //
+
11026 {0.7324, -0.213599995}, //
+
11027 {0.742944419, -0.211218521}, //
+
11028 {0.753488898, -0.208585188}, //
+
11029 {0.764033318, -0.205699995}, //
+
11030 {0.774577796, -0.202562958}, //
+
11031 {0.785122216, -0.199174076}, //
+
11032 {0.79302597, -0.196445093}, //
+
11033 {0.794533312, -0.196083337}, //
+
11034 {0.795981467, -0.195705563}, //
+
11035 {0.797303677, -0.195327774}, //
+
11036 {0.798500001, -0.194949999}, //
+
11037 {0.799570382, -0.194593206}, //
+
11038 {0.800514817, -0.194278389}, //
+
11039 {0.803600013, -0.19325}, //
+
11040 {0.803453088, -0.19325}, //
+
11041 {0.803012371, -0.19325}, //
+
11042 {0.801851869, -0.19325}, //
+
11043 {0.806211114, -0.191640735}, //
+
11044 {0.816755533, -0.18749629}, //
+
11045 {0.827300012, -0.1831}, //
+
11046 {0.837603688, -0.178577781}, //
+
11047 {0.847403705, -0.174055561}, //
+
11048 {0.856700003, -0.169533327}, //
+
11049 {0.865492582, -0.165011108}, //
+
11050 {0.873781502, -0.160488889}, //
+
11051 {0.881566644, -0.155966669}, //
+
11052 {0.888848126, -0.15144445}, //
+
11053 {0.895625949, -0.146922216}, //
+
11054 {0.901899993, -0.142399997}, //
+
11055 {0.92067039, -0.128330871}, //
+
11056 {0.923687041, -0.126069754}, //
+
11057 {0.925645709, -0.12460167}, //
+
11058 {0.92562902, -0.121327162}, //
+
11059 {0.925566077, -0.116491973}, //
+
11060 {0.925461113, -0.110944442}, //
+
11061 {0.925314188, -0.104684569}, //
+
11062 {0.925125301, -0.0977123454}, //
+
11063 {0.924894452, -0.0900277793}, //
+
11064 {0.924621582, -0.0816308632}, //
+
11065 {0.92430681, -0.0725216046}, //
+
11066 {0.923950016, -0.0627000034}, //
+
11067 {0.923593223, -0.0524703711}, //
+
11068 {0.923278391, -0.0421148166}, //
+
11069 {0.923005581, -0.0316333324}, //
+
11070 {0.922774673, -0.0210259259}, //
+
11071 {0.922585785, -0.0102925925}, //
+
11072 {0.92243886, 0.000566666655}, //
+
11073 {0.922333956, 0.0115518514}, //
+
11074 {0.922271013, 0.0226629637}, //
+
11075 {0.922249973, 0.0339000002}, //
+
11076 {0.922208011, 0.0409919769}, //
+
11077 {0.922082126, 0.0487123467}, //
+
11078 {0.921872199, 0.0570611097}, //
+
11079 {0.921578407, 0.0660382733}, //
+
11080 {0.921200633, 0.07564383}, //
+
11081 {0.920738876, 0.0858777761}, //
+
11082 {0.920193195, 0.0967401266}, //
+
11083 {0.919563591, 0.108230866}, //
+
11084 {0.918850005, 0.120350003}, //
+
11085 {0.918094456, 0.13267839}, //
+
11086 {0.917338908, 0.144796908}, //
+
11087 {0.916583359, 0.156705558}, //
+
11088 {0.915827751, 0.168404326}, //
+
11089 {0.915072203, 0.179893211}, //
+
11090 {0.914316654, 0.191172227}, //
+
11091 {0.913561106, 0.202241361}, //
+
11092 {0.912805557, 0.213100612}, //
+
11093 {0.912050009, 0.223749995}, //
+
11094 {0.911346912, 0.233928397}, //
+
11095 {0.910726547, 0.243352473}, //
+
11096 {0.910188913, 0.252022237}, //
+
11097 {0.909733951, 0.259937644}, //
+
11098 {0.90936172, 0.267098755}, //
+
11099 {0.90907222, 0.273505569}, //
+
11100 {0.908865452, 0.279158026}, //
+
11101 {0.908741355, 0.284056187}, //
+
11102 {0.908699989, 0.288199991}, //
+
11103 {0.907944441, 0.291587651}, //
+
11104 {0.907188892, 0.295728385}, //
+
11105 {0.906433344, 0.300622225}, //
+
11106 {0.905677795, 0.306269139}, //
+
11107 {0.904922247, 0.312669128}, //
+
11108 {0.904166639, 0.319822222}, //
+
11109 {0.90341109, 0.327728391}, //
+
11110 {0.902655542, 0.336387664}, //
+
11111 {0.901899993, 0.345800012}, //
+
11112 {0.901165426, 0.355725318}, //
+
11113 {0.90047282, 0.365901232}, //
+
11114 {0.899822235, 0.376327783}, //
+
11115 {0.899213552, 0.387004942}, //
+
11116 {0.898646891, 0.397932708}, //
+
11117 {0.898122251, 0.409111112}, //
+
11118 {0.897639513, 0.420540124}, //
+
11119 {0.897198737, 0.432219744}, //
+
11120 {0.896799982, 0.444150001}, //
+
11121 {0.896537066, 0.455954939}, //
+
11122 {0.896481454, 0.467258632}, //
+
11123 {0.896633327, 0.47806111}, //
+
11124 {0.896992564, 0.488362342}, //
+
11125 {0.897559285, 0.498162359}, //
+
11126 {0.898333311, 0.507461131}, //
+
11127 {0.899314821, 0.516258657}, //
+
11128 {0.900503695, 0.524554968}, //
+
11129 {0.901899993, 0.532350004}, //
+
11130 {0.903473437, 0.544070363}, //
+
11131 {0.905171633, 0.555120349}, //
+
11132 {0.906994462, 0.565500021}, //
+
11133 {0.908941984, 0.57520926}, //
+
11134 {0.911014199, 0.584248126}, //
+
11135 {0.913211107, 0.592616677}, //
+
11136 {0.915532708, 0.600314796}, //
+
11137 {0.917979002, 0.607342601}, //
+
11138 {0.920549989, 0.613699973}, //
+
11139 {0.923037052, 0.619398177}, //
+
11140 {0.927133322, 0.628783345}, //
+
11141 {0.930059254, 0.63548702}, //
+
11142 {0.931083322, 0.637833357}, //
+
11143 {0.93181479, 0.639509261}, //
+
11144 {0.932253718, 0.640514791}, //
+
11145 {0.932399988, 0.640850008}, //
+
11146 {0.940596938, 0.622369111}, //
+
11147 {0.943106174, 0.616711736}, //
+
11148 {0.945949972, 0.610300004}, //
+
11149 {0.947319031, 0.607096255}, //
+
11150 {0.94599998, 0.606899977}, //
+
11151 {0.959550023, 0.573000014}, //
+
11152 {0.959814489, 0.572924197}, //
+
11153 {0.961045682, 0.569080889}, //
+
11154 {0.964061081, 0.559077799}, //
+
11155 {0.967075288, 0.548488259}, //
+
11156 {0.970088243, 0.537312329}, //
+
11157 {0.973100007, 0.525550008}, //
+
11158 {0.975985825, 0.515792608}, //
+
11159 {0.978621006, 0.506120384}, //
+
11160 {0.981005549, 0.496533334}, //
+
11161 {0.983139515, 0.48703149}, //
+
11162 {0.985022843, 0.47761482}, //
+
11163 {0.986655533, 0.468283325}, //
+
11164 {0.988037646, 0.459037036}, //
+
11165 {0.988196611, 0.457749993}, //
+
11166 {0.989524662, 0.457749993}, //
+
11167 {0.996638894, 0.457749993}, //
+
11168 {0.998309851, 0.457749993}, //
+
11169 {1.00006354, 0.457749993}, //
+
11170 {1.00380993, 0.457749993}, //
+
11171 {1.00576174, 0.457749993}, //
+
11172 {1.00775552, 0.457749993}, //
+
11173 {1.00979137, 0.457749993}, //
+
11174 {1.01186919, 0.457749993}, //
+
11175 {1.01398885, 0.457749993}, //
+
11176 {1.01615059, 0.457749993}, //
+
11177 {1.02059996, 0.457749993}, //
+
11178 {1.02068329, 0.457791358}, //
+
11179 {1.02093339, 0.457915425}, //
+
11180 {1.02135003, 0.458122224}, //
+
11181 {1.02193332, 0.458411723}, //
+
11182 {1.02268338, 0.458783954}, //
+
11183 {1.02359998, 0.459238887}, //
+
11184 {1.02468336, 0.459776551}, //
+
11185 {1.02593338, 0.460396916}, //
+
11186 {1.02734995, 0.461100012}, //
+
11187 {1.02890241, 0.46183458}, //
+
11188 {1.03053761, 0.462527156}, //
+
11189 {1.03225553, 0.46317777}, //
+
11190 {1.03405619, 0.463786423}, //
+
11191 {1.03593946, 0.464353085}, //
+
11192 {1.03790557, 0.464877784}, //
+
11193 {1.0399543, 0.465360492}, //
+
11194 {1.04208577, 0.465801239}, //
+
11195 {1.04429996, 0.466199994}, //
+
11196 {1.04652405, 0.466577768}, //
+
11197 {1.04866302, 0.466955543}, //
+
11198 {1.05071664, 0.467333347}, //
+
11199 {1.05268514, 0.467711121}, //
+
11200 {1.05456853, 0.468088895}, //
+
11201 {1.05636668, 0.468466669}, //
+
11202 {1.0580796, 0.468844444}, //
+
11203 {1.0597074, 0.469222218}, //
+
11204 {1.06124997, 0.469599992}, //
+
11205 {1.06502783, 0.470544457}, //
+
11206 {1.06595123, 0.470775306}, //
+
11207 {1.06670678, 0.470964193}, //
+
11208 {1.06805003, 0.471300006}, //
+
11209 {1.07145, 0.444150001}, //
+
11210 {1.07086229, 0.443982095}, //
+
11211 {1.07012773, 0.443772227}, //
+
11212 {1.06909943, 0.443478405}, //
+
11213 {1.06777716, 0.443100631}, //
+
11214 {1.06616116, 0.442638874}, //
+
11215 {1.06425118, 0.442093223}, //
+
11216 {1.06204748, 0.44146359}, //
+
11217 {1.05955005, 0.440750003}, //
+
11218 {1.05681169, 0.440046906}, //
+
11219 {1.05386353, 0.439426541}, //
+
11220 {1.05070555, 0.438888878}, //
+
11221 {1.04733765, 0.438433945}, //
+
11222 {1.04375982, 0.438061714}, //
+
11223 {1.03997219, 0.437772214}, //
+
11224 {1.03597474, 0.437565446}, //
+
11225 {1.03176725, 0.437441349}, //
+
11226 {1.02734995, 0.437400013}, //
+
11227 {1.02709818, 0.437483937}, //
+
11228 {1.02332032, 0.438743204}, //
+
11229 {1.02225006, 0.439099997}, //
+
11230 {1.02110612, 0.439477146}, //
+
11231 {1.01991916, 0.439853072}, //
+
11232 {1.01868892, 0.440227777}, //
+
11233 {1.0174154, 0.44060123}, //
+
11234 {1.01609874, 0.440973461}, //
+
11235 {1.01473892, 0.44134444}, //
+
11236 {1.01333582, 0.441714197}, //
+
11237 {1.01188946, 0.442082703}, //
+
11238 {1.01040006, 0.442449987}, //
+
11239 {1.00892031, 0.442848772}, //
+
11240 {1.00748146, 0.443289518}, //
+
11241 {1.00608337, 0.443772227}, //
+
11242 {1.00472593, 0.444296926}, //
+
11243 {1.00340927, 0.444863588}, //
+
11244 {1.00213337, 0.445472211}, //
+
11245 {1.00089812, 0.446122825}, //
+
11246 {0.999703705, 0.446815431}, //
+
11247 {0.998549998, 0.447549999}, //
+
11248 {0.99515003, 0.449816674}, //
+
11249 {0.992883325, 0.451327771}, //
+
11250 {0.991750002, 0.452083319}, //
+
11251 {0.990616679, 0.452838898}, //
+
11252 {0.989483356, 0.453594446}, //
+
11253 {0.988640487, 0.454156369}, //
+
11254 {0.988196611, 0.457749993}, //
+
11255 {0.987290144, 0.457749993}, //
+
11256 {0.986354947, 0.457749993}, //
+
11257 {0.985544443, 0.457749993}, //
+
11258 {0.984858632, 0.457749993}, //
+
11259 {0.984297514, 0.457749993}, //
+
11260 {0.983549356, 0.457749993}, //
+
11261 {0.983362317, 0.457749993}, //
+
11262 {0.983299971, 0.457749993}, //
+
11263 {0.983549356, 0.457582086}, //
+
11264 {0.983861089, 0.457372218}, //
+
11265 {0.984297514, 0.457078397}, //
+
11266 {0.987290144, 0.455063581}, //
+
11267 {0.988349974, 0.454349995}, //
+
11268 {0.988640487, 0.454156369}, //
+
11269 {0.989169121, 0.449875921}, //
+
11270 {0.990050018, 0.440800011}, //
+
11271 {0.991728365, 0.431337029}, //
+
11272 {0.993741333, 0.421037048}, //
+
11273 {0.996088862, 0.40990001}, //
+
11274 {0.998771012, 0.397925913}, //
+
11275 {1.00178766, 0.385114819}, //
+
11276 {1.00513887, 0.371466666}, //
+
11277 {1.00882471, 0.356981486}, //
+
11278 {1.01284504, 0.341659248}, //
+
11279 {1.01719999, 0.325500011}, //
+
11280 {1.02385247, 0.299258649}, //
+
11281 {1.03025436, 0.273267895}, //
+
11282 {1.03640556, 0.247527778}, //
+
11283 {1.04230618, 0.222038269}, //
+
11284 {1.04795623, 0.196799383}, //
+
11285 {1.05335557, 0.171811104}, //
+
11286 {1.05850434, 0.147073463}, //
+
11287 {1.06340241, 0.122586422}, //
+
11288 {1.06805003, 0.0983500034}, //
+
11289 {1.06956053, 0.0902703702}, //
+
11290 {1.07106972, 0.0826092586}, //
+
11291 {1.07257783, 0.0753666684}, //
+
11292 {1.07408452, 0.0685425922}, //
+
11293 {1.07559013, 0.0621370375}, //
+
11294 {1.07709444, 0.0561500005}, //
+
11295 {1.07859755, 0.0505814813}, //
+
11296 {1.08009934, 0.0454314798}, //
+
11297 {1.08159995, 0.0406999998}, //
+
11298 {1.0823555, 0.0337444432}, //
+
11299 {1.08311117, 0.0264555551}, //
+
11300 {1.08386672, 0.0188333336}, //
+
11301 {1.08462226, 0.0108777778}, //
+
11302 {1.08537781, 0.00258888886}, //
+
11303 {1.08613336, -0.00603333348}, //
+
11304 {1.08688891, -0.014988889}, //
+
11305 {1.08764446, -0.0242777783}, //
+
11306 {1.08840001, -0.0339000002}, //
+
11307 {1.08913398, -0.0436364189}, //
+
11308 {1.08982468, -0.0532456785}, //
+
11309 {1.09047222, -0.0627277792}, //
+
11310 {1.09107649, -0.0720827132}, //
+
11311 {1.09163761, -0.0813104957}, //
+
11312 {1.09215558, -0.0904111117}, //
+
11313 {1.09263027, -0.0993845686}, //
+
11314 {1.09306169, -0.108230866}, //
+
11315 {1.09344995, -0.116949998}, //
+
11316 {1.09380674, -0.125261113}, //
+
11317 {1.09412158, -0.132861108}, //
+
11318 {1.09439445, -0.139750004}, //
+
11319 {1.09462535, -0.145927772}, //
+
11320 {1.09481418, -0.151394442}, //
+
11321 {1.09496117, -0.156149998}, //
+
11322 {1.09506607, -0.160194442}, //
+
11323 {1.09512901, -0.163527772}, //
+
11324 {1.09514999, -0.166150004}, //
+
11325 {1.09540129, -0.170062959}, //
+
11326 {1.09615493, -0.174268514}, //
+
11327 {1.09741116, -0.178766668}, //
+
11328 {1.09916973, -0.183557406}, //
+
11329 {1.10143089, -0.188640743}, //
+
11330 {1.1041944, -0.194016665}, //
+
11331 {1.1074605, -0.199685186}, //
+
11332 {1.11122906, -0.205646291}, //
+
11333 {1.11549997, -0.211899996}, //
+
11334 {1.12002218, -0.218247533}, //
+
11335 {1.1245445, -0.224467903}, //
+
11336 {1.12906671, -0.230561107}, //
+
11337 {1.13358891, -0.23652716}, //
+
11338 {1.13811111, -0.242366046}, //
+
11339 {1.14263332, -0.24807778}, //
+
11340 {1.14715552, -0.253662348}, //
+
11341 {1.15167773, -0.259119749}, //
+
11342 {1.15620005, -0.264450014}, //
+
11343 {1.15760612, -0.267450631}, //
+
11344 {1.15880251, -0.270408034}, //
+
11345 {1.15978885, -0.273322225}, //
+
11346 {1.16056538, -0.276193202}, //
+
11347 {1.1611321, -0.279020995}, //
+
11348 {1.16148889, -0.281805545}, //
+
11349 {1.16163576, -0.284546912}, //
+
11350 {1.16157281, -0.287245065}, //
+
11351 {1.16129994, -0.289900005}, //
+
11352 {1.16085923, -0.292470992}, //
+
11353 {1.16029263, -0.294917285}, //
+
11354 {1.15960002, -0.297238886}, //
+
11355 {1.15878153, -0.299435794}, //
+
11356 {1.15783703, -0.301508039}, //
+
11357 {1.15676665, -0.303455561}, //
+
11358 {1.15557039, -0.305278391}, //
+
11359 {1.15424812, -0.306976557}, //
+
11360 {1.15279996, -0.30855}, //
+
11361 {1.1520654, -0.310081482}, //
+
11362 {1.15137279, -0.311653703}, //
+
11363 {1.15072227, -0.313266665}, //
+
11364 {1.15011358, -0.314920366}, //
+
11365 {1.14954686, -0.316614807}, //
+
11366 {1.14902222, -0.318349987}, //
+
11367 {1.14853954, -0.320125937}, //
+
11368 {1.14809871, -0.321942598}, //
+
11369 {1.14769995, -0.323799998}, //
+
11370 {1.14739501, -0.3256253}, //
+
11371 {1.14721358, -0.327323467}, //
+
11372 {1.14715552, -0.328894436}, //
+
11373 {1.14722097, -0.330338269}, //
+
11374 {1.14740992, -0.331654936}, //
+
11375 {1.14772224, -0.332844436}, //
+
11376 {1.14815807, -0.3339068}, //
+
11377 {1.14871728, -0.334841967}, //
+
11378 {1.1494, -0.335649997}, //
+
11379 {1.15053213, -0.337119132}, //
+
11380 {1.1524173, -0.338504314}, //
+
11381 {1.15505552, -0.339805543}, //
+
11382 {1.15844691, -0.341022849}, //
+
11383 {1.16259134, -0.342156172}, //
+
11384 {1.16748893, -0.343205541}, //
+
11385 {1.17313945, -0.344170988}, //
+
11386 {1.17954326, -0.345052481}, //
+
11387 {1.18669999, -0.345849991}, //
+
11388 {1.19436908, -0.346584558}, //
+
11389 {1.20228767, -0.347277164}, //
+
11390 {1.21045554, -0.347927779}, //
+
11391 {1.21887279, -0.348536432}, //
+
11392 {1.22753954, -0.349103093}, //
+
11393 {1.23645556, -0.349627763}, //
+
11394 {1.24562097, -0.350110501}, //
+
11395 {1.25503576, -0.350551248}, //
+
11396 {1.26470006, -0.350950003}, //
+
11397 {1.27449942, -0.351348162}, //
+
11398 {1.28429759, -0.351787031}, //
+
11399 {1.29409444, -0.352266669}, //
+
11400 {1.30389011, -0.352787048}, //
+
11401 {1.31368458, -0.353348136}, //
+
11402 {1.32347775, -0.353949994}, //
+
11403 {1.33326972, -0.354592592}, //
+
11404 {1.34306049, -0.355275929}, //
+
11405 {1.35284996, -0.356000006}, //
+
11406 {1.37671173, -0.355129004}, //
+
11407 {1.39856362, -0.354004949}, //
+
11408 {1.41840553, -0.352627784}, //
+
11409 {1.43623769, -0.350997537}, //
+
11410 {1.45205986, -0.349114209}, //
+
11411 {1.46587217, -0.34697777}, //
+
11412 {1.47767472, -0.34458828}, //
+
11413 {1.48746729, -0.341945678}, //
+
11414 {1.49524999, -0.339049995}, //
+
11415 {1.49659324, -0.337706804}, //
+
11416 {1.49713886, -0.337161124}, //
+
11417 {1.49864995, -0.335649997}, //
+
11418 {1.50009811, -0.334820986}, //
+
11419 {1.50142038, -0.333822846}, //
+
11420 {1.50261664, -0.332655549}, //
+
11421 {1.50368702, -0.331319124}, //
+
11422 {1.50463152, -0.32981357}, //
+
11423 {1.50545001, -0.328138888}, //
+
11424 {1.50614262, -0.326295048}, //
+
11425 {1.50670922, -0.32428211}, //
+
11426 {1.50715005, -0.322100013}, //
+
11427 {1.50750685, -0.319843829}, //
+
11428 {1.50782156, -0.317586422}, //
+
11429 {1.50809443, -0.315327764}, //
+
11430 {1.50832534, -0.313067913}, //
+
11431 {1.50851417, -0.310806781}, //
+
11432 {1.50866115, -0.308544457}, //
+
11433 {1.50876606, -0.306280851}, //
+
11434 {1.508829, -0.304016054}, //
+
11435 {1.50884998, -0.301750004}, //
+
11436 {1.50880802, -0.299535811}, //
+
11437 {1.50868213, -0.297404319}, //
+
11438 {1.5084722, -0.295355558}, //
+
11439 {1.50817835, -0.293389499}, //
+
11440 {1.50780058, -0.291506171}, //
+
11441 {1.50733888, -0.289705545}, //
+
11442 {1.50679326, -0.287987649}, //
+
11443 {1.5061636, -0.286352456}, //
+
11444 {1.50545001, -0.284799993}, //
+
11445 {1.50454819, -0.283835173}, //
+
11446 {1.50335371, -0.282451838}, //
+
11447 {1.5018667, -0.28064999}, //
+
11448 {1.50008702, -0.278429627}, //
+
11449 {1.49801481, -0.275790751}, //
+
11450 {1.49565005, -0.272733331}, //
+
11451 {1.49299264, -0.269257396}, //
+
11452 {1.49004257, -0.265362948}, //
+
11453 {1.48679996, -0.261049986}, //
+
11454 {1.48336911, -0.256454319}, //
+
11455 {1.47985435, -0.251689494}, //
+
11456 {1.47625554, -0.246755555}, //
+
11457 {1.4725728, -0.241652474}, //
+
11458 {1.46880615, -0.236380249}, //
+
11459 {1.46495557, -0.230938882}, //
+
11460 {1.46102095, -0.225328401}, //
+
11461 {1.45700252, -0.219548762}, //
+
11462 {1.45290005, -0.213599995}, //
+
11463 {1.4487766, -0.20759815}, //
+
11464 {1.44469512, -0.20163703}, //
+
11465 {1.44065559, -0.195716664}, //
+
11466 {1.43665802, -0.189837039}, //
+
11467 {1.43270242, -0.183998153}, //
+
11468 {1.4287889, -0.178200006}, //
+
11469 {1.42491734, -0.172442585}, //
+
11470 {1.42108762, -0.166725919}, //
+
11471 {1.41729999, -0.161050007}, //
+
11472 {1.41365862, -0.155593216}, //
+
11473 {1.41026795, -0.150511727}, //
+
11474 {1.40712774, -0.145805553}, //
+
11475 {1.40423822, -0.141474694}, //
+
11476 {1.40159941, -0.137519136}, //
+
11477 {1.39921117, -0.133938894}, //
+
11478 {1.39707351, -0.130733952}, //
+
11479 {1.39518642, -0.127904326}, //
+
11480 {1.39355004, -0.12545}, //
+
11481 {1.38990867, -0.121516049}, //
+
11482 {1.38651788, -0.117247529}, //
+
11483 {1.38337779, -0.112644441}, //
+
11484 {1.38048828, -0.107706793}, //
+
11485 {1.37784934, -0.102434568}, //
+
11486 {1.3754611, -0.0968277752}, //
+
11487 {1.37332344, -0.0908864215}, //
+
11488 {1.37143648, -0.084610492}, //
+
11489 {1.36979997, -0.0780000016}, //
+
11490 {1.36750245, -0.0712117255}, //
+
11491 {1.36512101, -0.0644246936}, //
+
11492 {1.36265552, -0.0576388873}, //
+
11493 {1.36010623, -0.0508543216}, //
+
11494 {1.3574729, -0.0440709889}, //
+
11495 {1.35475552, -0.0372888893}, //
+
11496 {1.35195434, -0.0305080246}, //
+
11497 {1.34906912, -0.0237283949}, //
+
11498 {1.34609997, -0.0169500001}, //
+
11499 {1.34377098, -0.0105296299}, //
+
11500 {1.3413173, -0.00331296306}, //
+
11501 {1.33873892, 0.00469999993}, //
+
11502 {1.33603585, 0.0135092596}, //
+
11503 {1.33320808, 0.0231148154}, //
+
11504 {1.33025551, 0.0335166678}, //
+
11505 {1.32717836, 0.0447148159}, //
+
11506 {1.32397652, 0.0567092597}, //
+
11507 {1.32064998, 0.0694999993}, //
+
11508 {1.31724012, 0.082583949}, //
+
11509 {1.31378829, 0.0954580233}, //
+
11510 {1.31029439, 0.108122222}, //
+
11511 {1.30675864, 0.120576546}, //
+
11512 {1.30318081, 0.132820994}, //
+
11513 {1.29956114, 0.144855559}, //
+
11514 {1.29589939, 0.156680241}, //
+
11515 {1.29219568, 0.168295056}, //
+
11516 {1.28845, 0.179700002}, //
+
11517 {1.28622591, 0.191295058}, //
+
11518 {1.28408706, 0.201969132}, //
+
11519 {1.28203332, 0.211722225}, //
+
11520 {1.28006482, 0.220554322}, //
+
11521 {1.27818143, 0.228465438}, //
+
11522 {1.27638328, 0.235455558}, //
+
11523 {1.27467036, 0.241524696}, //
+
11524 {1.27304256, 0.246672839}, //
+
11525 {1.27149999, 0.2509}, //
+
11526 {1.26992595, 0.258579642}, //
+
11527 {1.26822591, 0.266551852}, //
+
11528 {1.26639998, 0.274816662}, //
+
11529 {1.26444817, 0.283374071}, //
+
11530 {1.26237035, 0.292224079}, //
+
11531 {1.26016665, 0.301366657}, //
+
11532 {1.25783706, 0.310801864}, //
+
11533 {1.25538146, 0.32052964}, //
+
11534 {1.25279999, 0.330549985}, //
+
11535 {1.2502296, 0.340664804}, //
+
11536 {1.24778521, 0.350653708}, //
+
11537 {1.24546671, 0.360516667}, //
+
11538 {1.24327409, 0.370253712}, //
+
11539 {1.24120736, 0.379864812}, //
+
11540 {1.23926663, 0.389349997}, //
+
11541 {1.23745191, 0.398709267}, //
+
11542 {1.23576295, 0.407942593}, //
+
11543 {1.2342, 0.417050004}, //
+
11544 {1.23273087, 0.428496301}, //
+
11545 {1.23134565, 0.440235198}, //
+
11546 {1.23004448, 0.452266663}, //
+
11547 {1.22882712, 0.464590728}, //
+
11548 {1.2276938, 0.477207422}, //
+
11549 {1.2266444, 0.490116656}, //
+
11550 {1.22567904, 0.503318548}, //
+
11551 {1.22479749, 0.51681298}, //
+
11552 {1.22399998, 0.530600011}, //
+
11553 {1.22333825, 0.544230223}, //
+
11554 {1.22284198, 0.557232082}, //
+
11555 {1.22251105, 0.569605529}, //
+
11556 {1.22234571, 0.581350625}, //
+
11557 {1.22234571, 0.592467308}, //
+
11558 {1.22251105, 0.60295558}, //
+
11559 {1.22284198, 0.61281544}, //
+
11560 {1.22333825, 0.622046888}, //
+
11561 {1.22399998, 0.630649984}, //
+
11562 {1.22479689, 0.638183355}, //
+
11563 {1.22567654, 0.645716667}, //
+
11564 {1.22663891, 0.653249979}, //
+
11565 {1.2276839, 0.66078335}, //
+
11566 {1.22881174, 0.668316662}, //
+
11567 {1.23002219, 0.675849974}, //
+
11568 {1.23131537, 0.683383346}, //
+
11569 {1.23269141, 0.690916657}, //
+
11570 {1.23415005, 0.698450029}, //
+
11571 {1.23561919, 0.705742598}, //
+
11572 {1.23700428, 0.712531507}, //
+
11573 {1.23830557, 0.718816638}, //
+
11574 {1.23952281, 0.724598169}, //
+
11575 {1.24065614, 0.729875922}, //
+
11576 {1.24170554, 0.734650016}, //
+
11577 {1.24267101, 0.738920391}, //
+
11578 {1.24355245, 0.742687047}, //
+
11579 {1.24434996, 0.745949984}, //
+
11580 {1.24512589, 0.7476179}, //
+
11581 {1.24583185, 0.749350011}, //
+
11582 {1.24775004, 0.749350011}, //
+
11583 {1.2579, 0.77305001}, //
+
11584 {1.2577951, 0.77305001}, //
+
11585 {1.25748026, 0.77305001}, //
+
11586 {1.2569555, 0.77305001}, //
+
11587 {1.25622094, 0.77305001}, //
+
11588 {1.25527656, 0.77305001}, //
+
11589 {1.25279999, 0.77305001}, //
+
11590 {1.25395429, 0.777593195}, //
+
11591 {1.25515068, 0.782178402}, //
+
11592 {1.2563889, 0.78680557}, //
+
11593 {1.25766909, 0.7914747}, //
+
11594 {1.25899136, 0.796185791}, //
+
11595 {1.26035559, 0.800938904}, //
+
11596 {1.26176178, 0.805733979}, //
+
11597 {1.26320982, 0.810571015}, //
+
11598 {1.26470006, 0.815450013}, //
+
11599 {1.26612711, 0.820245087}, //
+
11600 {1.26738644, 0.824830234}, //
+
11601 {1.2684778, 0.829205573}, //
+
11602 {1.26940119, 0.833370984}, //
+
11603 {1.27015674, 0.837326527}, //
+
11604 {1.27074444, 0.841072202}, //
+
11605 {1.27116418, 0.844608009}, //
+
11606 {1.27141607, 0.847933948}, //
+
11607 {1.27149999, 0.851050019}, //
+
11608 {1.27210867, 0.855990767}, //
+
11609 {1.27242351, 0.861768544}, //
+
11610 {1.27244449, 0.868383348}, //
+
11611 {1.27217162, 0.87583518}, //
+
11612 {1.2716049, 0.8841241}, //
+
11613 {1.27074444, 0.893249989}, //
+
11614 {1.26959014, 0.903212965}, //
+
11615 {1.26814198, 0.914012969}, //
+
11616 {1.26639998, 0.925650001}, //
+
11617 {1.26453269, 0.937579632}, //
+
11618 {1.26270866, 0.949257433}, //
+
11619 {1.2609278, 0.960683346}, //
+
11620 {1.25919008, 0.971857429}, //
+
11621 {1.25749564, 0.982779622}, //
+
11622 {1.25584447, 0.993449986}, //
+
11623 {1.25423646, 1.00386846}, //
+
11624 {1.2526716, 1.01403522}, //
+
11625 {1.25115001, 1.02394998}, //
+
11626 {1.25039446, 1.02767527}, //
+
11627 {1.24963892, 1.03131795}, //
+
11628 {1.24888337, 1.03487778}, //
+
11629 {1.24812782, 1.03835499}, //
+
11630 {1.24737227, 1.04174936}, //
+
11631 {1.24661672, 1.04506111}, //
+
11632 {1.24586105, 1.04829013}, //
+
11633 {1.2451055, 1.05143642}, //
+
11634 {1.24434996, 1.05449998}, //
+
11635 {1.24226177, 1.06914628}, //
+
11636 {1.24050808, 1.084463}, //
+
11637 {1.23908889, 1.10045004}, //
+
11638 {1.23800433, 1.11710739}, //
+
11639 {1.23759997, 1.12644875}, //
+
11640 {1.23759997, 1.13074994}, //
+
11641 {1.23755801, 1.1318624}, //
+
11642 {1.23743212, 1.13293266}, //
+
11643 {1.23728895, 1.13363385}, //
+
11644 {1.23725426, 1.13443518}, //
+
11645 {1.23683894, 1.15243328}, //
+
11646 {1.23675799, 1.17110181}, //
+
11647 {1.23701167, 1.19044077}, //
+
11648 {1.23759997, 1.21045005}, //
+
11649 {1.23844934, 1.21806729}, //
+
11650 {1.23950863, 1.22585249}, //
+
11651 {1.24077773, 1.23380554}, //
+
11652 {1.24225676, 1.24192655}, //
+
11653 {1.24394572, 1.25021541}, //
+
11654 {1.24584448, 1.25867224}, //
+
11655 {1.24795306, 1.26729691}, //
+
11656 {1.25027156, 1.27608955}, //
+
11657 {1.25279999, 1.28505003}, //
+
11658 {1.25542343, 1.29396856}, //
+
11659 {1.2580049, 1.30263519}, //
+
11660 {1.26054442, 1.31105006}, //
+
11661 {1.26304197, 1.31921291}, //
+
11662 {1.26549757, 1.32712412}, //
+
11663 {1.26791108, 1.33478332}, //
+
11664 {1.27028275, 1.34219074}, //
+
11665 {1.27261233, 1.34934628}, //
+
11666 {1.27489996, 1.35625005}, //
+
11667 {1.2763586, 1.36207342}, //
+
11668 {1.27773452, 1.36747718}, //
+
11669 {1.27902782, 1.37246108}, //
+
11670 {1.28023827, 1.37702537}, //
+
11671 {1.28136599, 1.3811698}, //
+
11672 {1.2824111, 1.38489449}, //
+
11673 {1.28247952, 1.38512945}, //
+
11674 {1.29184997, 1.40034997}, //
+
11675 {1.28746104, 1.40252292}, //
+
11676 {1.28901112, 1.40711117}, //
+
11677 {1.29108453, 1.4126364}, //
+
11678 {1.29353452, 1.41866422}, //
+
11679 {1.29636109, 1.4251945}, //
+
11680 {1.29956424, 1.43222713}, //
+
11681 {1.30314386, 1.43976235}, //
+
11682 {1.30710006, 1.44780004}, //
+
11683 {1.31126487, 1.45613027}, //
+
11684 {1.31547034, 1.46454322}, //
+
11685 {1.31971669, 1.47303891}, //
+
11686 {1.3240037, 1.48161733}, //
+
11687 {1.32833147, 1.49027836}, //
+
11688 {1.33270001, 1.49902225}, //
+
11689 {1.33710921, 1.50784874}, //
+
11690 {1.34155929, 1.51675797}, //
+
11691 {1.34605002, 1.52575004}, //
+
11692 {1.35040498, 1.53450119}, //
+
11693 {1.35442531, 1.54266608}, //
+
11694 {1.35811114, 1.55024445}, //
+
11695 {1.3581506, 1.55032682}, //
+
11696 {1.35625005, 1.54614997}, //
+
11697 {1.35627103, 1.54617035}, //
+
11698 {1.35633397, 1.54623151}, //
+
11699 {1.35643888, 1.54633331}, //
+
11700 {1.35658586, 1.54647589}, //
+
11701 {1.35677469, 1.54665923}, //
+
11702 {1.3570056, 1.54688334}, //
+
11703 {1.35727835, 1.54714811}, //
+
11704 {1.35759318, 1.54745376}, //
+
11705 {1.35794997, 1.54779994}, //
+
11706 {1.35828578, 1.54819882}, //
+
11707 {1.35853767, 1.54863954}, //
+
11708 {1.35870552, 1.54912221}, //
+
11709 {1.35878956, 1.54964685}, //
+
11710 {1.35878956, 1.55021358}, //
+
11711 {1.35870552, 1.55082226}, //
+
11712 {1.35859442, 1.55125284}, //
+
11713 {1.36146235, 1.55723643}, //
+
11714 {1.36447906, 1.56364202}, //
+
11715 {1.36716115, 1.56946111}, //
+
11716 {1.36950862, 1.5746938}, //
+
11717 {1.37152159, 1.5793401}, //
+
11718 {1.37320006, 1.58340001}, //
+
11719 {1.37487841, 1.58587527}, //
+
11720 {1.37689137, 1.58876789}, //
+
11721 {1.37923884, 1.59207773}, //
+
11722 {1.38192093, 1.59580493}, //
+
11723 {1.38493764, 1.59994936}, //
+
11724 {1.38828886, 1.60451114}, //
+
11725 {1.39197469, 1.60949016}, //
+
11726 {1.39599502, 1.6148864}, //
+
11727 {1.40034997, 1.6207}, //
+
11728 {1.40578461, 1.63066733}, //
+
11729 {1.41155493, 1.64096916}, //
+
11730 {1.41766107, 1.65160561}, //
+
11731 {1.42410314, 1.66257656}, //
+
11732 {1.4308809, 1.67388213}, //
+
11733 {1.43799448, 1.6855222}, //
+
11734 {1.44160438, 1.69132507}, //
+
11735 {1.43760002, 1.69529998}, //
+
11736 {1.43605745, 1.69685245}, //
+
11737 {1.43442965, 1.69848764}, //
+
11738 {1.43271661, 1.70020556}, //
+
11739 {1.43091857, 1.70200622}, //
+
11740 {1.42903519, 1.70388949}, //
+
11741 {1.42706668, 1.70585561}, //
+
11742 {1.42501295, 1.70790434}, //
+
11743 {1.42287409, 1.7100358}, //
+
11744 {1.42065001, 1.71224999}, //
+
11745 {1.41839385, 1.71449506}, //
+
11746 {1.41613638, 1.71669686}, //
+
11747 {1.41387773, 1.7188555}, //
+
11748 {1.41161788, 1.72097099}, //
+
11749 {1.40935683, 1.7230432}, //
+
11750 {1.40709448, 1.72507226}, //
+
11751 {1.40483081, 1.72705805}, //
+
11752 {1.40256608, 1.72900057}, //
+
11753 {1.40030003, 1.73090005}, //
+
11754 {1.39804447, 1.73272598}, //
+
11755 {1.39578891, 1.7344259}, //
+
11756 {1.39353335, 1.73599994}, //
+
11757 {1.39127779, 1.7374481}, //
+
11758 {1.38902223, 1.73877037}, //
+
11759 {1.38676667, 1.73996663}, //
+
11760 {1.38451111, 1.74103701}, //
+
11761 {1.38225555, 1.74198151}, //
+
11762 {1.38, 1.7428}, //
+
11763 {1.37489998, 1.74444997}, //
+
11764 {1.3737247, 1.74484873}, //
+
11765 {1.37246549, 1.74528956}, //
+
11766 {1.37112224, 1.74577224}, //
+
11767 {1.36969507, 1.74629688}, //
+
11768 {1.36818397, 1.7468636}, //
+
11769 {1.36658883, 1.74747217}, //
+
11770 {1.36490989, 1.74812281}, //
+
11771 {1.3631469, 1.74881542}, //
+
11772 {1.36129999, 1.74954998}, //
+
11773 {1.35944319, 1.75026357}, //
+
11774 {1.35762835, 1.75089324}, //
+
11775 {1.35585558, 1.75143886}, //
+
11776 {1.35412467, 1.75190067}, //
+
11777 {1.35243583, 1.75227845}, //
+
11778 {1.35078883, 1.75257218}, //
+
11779 {1.34918392, 1.75278211}, //
+
11780 {1.34762096, 1.75290799}, //
+
11781 {1.34609997, 1.75294995}, //
+
11782 {1.34379196, 1.753034}, //
+
11783 {1.34140122, 1.75328577}, //
+
11784 {1.33892775, 1.7537055}, //
+
11785 {1.33637166, 1.7542932}, //
+
11786 {1.33373272, 1.75504875}, //
+
11787 {1.33101106, 1.75597227}, //
+
11788 {1.32820678, 1.75706363}, //
+
11789 {1.32531977, 1.75832283}, //
+
11790 {1.32235003, 1.75975001}, //
+
11791 {1.3193593, 1.76048398}, //
+
11792 {1.31640923, 1.76117468}, //
+
11793 {1.31350005, 1.76182222}, //
+
11794 {1.31063151, 1.7624265}, //
+
11795 {1.30780375, 1.76298761}, //
+
11796 {1.30501664, 1.76350558}, //
+
11797 {1.30227041, 1.76398027}, //
+
11798 {1.29956484, 1.76441169}, //
+
11799 {1.29690003, 1.76479995}, //
+
11800 {1.29441297, 1.76507342}, //
+
11801 {1.29221857, 1.76513827}, //
+
11802 {1.2903167, 1.7649945}, //
+
11803 {1.28870738, 1.764642}, //
+
11804 {1.28739071, 1.76408088}, //
+
11805 {1.2863667, 1.76331115}, //
+
11806 {1.28563523, 1.76233268}, //
+
11807 {1.2851963, 1.76114571}, //
+
11808 {1.28505003, 1.75975001}, //
+
11809 {1.28421044, 1.75832283}, //
+
11810 {1.28320312, 1.75706363}, //
+
11811 {1.28202772, 1.75597227}, //
+
11812 {1.28068459, 1.75504875}, //
+
11813 {1.27917349, 1.7542932}, //
+
11814 {1.27749443, 1.7537055}, //
+
11815 {1.27564752, 1.75328577}, //
+
11816 {1.27363276, 1.753034}, //
+
11817 {1.27145004, 1.75294995}, //
+
11818 {1.2691735, 1.75297093}, //
+
11819 {1.26685488, 1.753034}, //
+
11820 {1.26449442, 1.7531389}, //
+
11821 {1.26209199, 1.75328577}, //
+
11822 {1.25964749, 1.75347471}, //
+
11823 {1.25716114, 1.7537055}, //
+
11824 {1.25463271, 1.75397837}, //
+
11825 {1.25206232, 1.7542932}, //
+
11826 {1.24944997, 1.75465}, //
+
11827 {1.24687898, 1.75504875}, //
+
11828 {1.24443269, 1.75548947}, //
+
11829 {1.24211109, 1.75597227}, //
+
11830 {1.23991418, 1.75649691}, //
+
11831 {1.23784196, 1.75706363}, //
+
11832 {1.23589444, 1.75767219}, //
+
11833 {1.23407161, 1.75832283}, //
+
11834 {1.23237348, 1.75901544}, //
+
11835 {1.23080003, 1.75975001}, //
+
11836 {1.22899628, 1.76125062}, //
+
11837 {1.22660744, 1.76275241}, //
+
11838 {1.22363329, 1.76425552}, //
+
11839 {1.22007406, 1.76575983}, //
+
11840 {1.21592963, 1.76726544}, //
+
11841 {1.2112, 1.76877224}, //
+
11842 {1.20588517, 1.77028024}, //
+
11843 {1.19998515, 1.77178955}, //
+
11844 {1.19350004, 1.77330005}, //
+
11845 {1.18973339, 1.77407598}, //
+
11846 {1.18596661, 1.77489257}, //
+
11847 {1.18219995, 1.77575004}, //
+
11848 {1.1784333, 1.77664816}, //
+
11849 {1.17466664, 1.77758706}, //
+
11850 {1.17089999, 1.77856672}, //
+
11851 {1.16713333, 1.77958703}, //
+
11852 {1.16336668, 1.78064811}, //
+
11853 {1.15960002, 1.78174996}, //
+
11854 {1.15583336, 1.78290427}, //
+
11855 {1.15206671, 1.78410065}, //
+
11856 {1.14830005, 1.78533888}, //
+
11857 {1.14453328, 1.78661919}, //
+
11858 {1.14076662, 1.78794134}, //
+
11859 {1.13699996, 1.78930557}, //
+
11860 {1.13323331, 1.79071176}, //
+
11861 {1.12946665, 1.79215991}, //
+
11862 {1.1257, 1.79365003}, //
+
11863 {1.12494445, 1.79436362}, //
+
11864 {1.1241889, 1.79499316}, //
+
11865 {1.12343335, 1.7955389}, //
+
11866 {1.1226778, 1.7960006}, //
+
11867 {1.12192225, 1.79637837}, //
+
11868 {1.12116671, 1.79667222}, //
+
11869 {1.12041116, 1.79688215}, //
+
11870 {1.11965561, 1.79700804}, //
+
11871 {1.11889994, 1.79705}, //
+
11872 {1.11423147, 1.80010307}, //
+
11873 {1.10927033, 1.80324018}, //
+
11874 {1.10401666, 1.8064611}, //
+
11875 {1.09847033, 1.80976605}, //
+
11876 {1.09263146, 1.81315494}, //
+
11877 {1.08650005, 1.81662774}, //
+
11878 {1.08007598, 1.82018459}, //
+
11879 {1.07335925, 1.82382536}, //
+
11880 {1.06634998, 1.82755005}, //
+
11881 {1.05929875, 1.83110738}, //
+
11882 {1.05245614, 1.83424628}, //
+
11883 {1.04582226, 1.83696663}, //
+
11884 {1.03939688, 1.83926857}, //
+
11885 {1.03318024, 1.84115183}, //
+
11886 {1.02717221, 1.84261668}, //
+
11887 {1.0213728, 1.84366298}, //
+
11888 {1.01578212, 1.84429073}, //
+
11889 {1.01040006, 1.84449995}, //
+
11890 {1.00589871, 1.84458339}, //
+
11891 {1.00143945, 1.84483337}, //
+
11892 {0.997022212, 1.84525001}, //
+
11893 {0.992646933, 1.8458333}, //
+
11894 {0.988313556, 1.84658337}, //
+
11895 {0.9840222, 1.84749997}, //
+
11896 {0.979772866, 1.84858334}, //
+
11897 {0.975565434, 1.84983337}, //
+
11898 {0.971400023, 1.85125005}, //
+
11899 {0.967318535, 1.85276115}, //
+
11900 {0.963362992, 1.85427225}, //
+
11901 {0.959533334, 1.85578334}, //
+
11902 {0.95582962, 1.85729444}, //
+
11903 {0.952251852, 1.85880554}, //
+
11904 {0.948800027, 1.86031663}, //
+
11905 {0.945474088, 1.86182773}, //
+
11906 {0.942274094, 1.86333895}, //
+
11907 {0.939199984, 1.86485004}, //
+
11908 {0.936356187, 1.86627722}, //
+
11909 {0.931672215, 1.86862779}, //
+
11910 {0.928326547, 1.87030685}, //
+
11911 {0.925650001, 1.87164998}, //
+
11912 {0.925859272, 1.871629}, //
+
11913 {0.926487029, 1.87156606}, //
+
11914 {0.9308815, 1.87112534}, //
+
11915 {0.933183312, 1.87089443}, //
+
11916 {0.935903728, 1.87062156}, //
+
11917 {0.939042568, 1.87030685}, //
+
11918 {0.942600012, 1.86995006}, //
+
11919 {0.946408629, 1.86955118}, //
+
11920 {0.95030123, 1.86911047}, //
+
11921 {0.954277754, 1.86862779}, //
+
11922 {0.958338261, 1.86810303}, //
+
11923 {0.962482691, 1.86753643}, //
+
11924 {0.966711104, 1.86692774}, //
+
11925 {0.97102344, 1.86627722}, //
+
11926 {0.97541976, 1.86558461}, //
+
11927 {0.979900002, 1.86485004}, //
+
11928 {0.984422207, 1.86405241}, //
+
11929 {0.988944471, 1.86317098}, //
+
11930 {0.993466675, 1.86220551}, //
+
11931 {0.99798888, 1.86115623}, //
+
11932 {1.00251114, 1.86002278}, //
+
11933 {1.00703335, 1.85880554}, //
+
11934 {1.01155555, 1.85750437}, //
+
11935 {1.01607776, 1.85611916}, //
+
11936 {1.02059996, 1.85465002}, //
+
11937 {1.02449203, 1.85394692}, //
+
11938 {1.02863455, 1.85332656}, //
+
11939 {1.03302777, 1.85278893}, //
+
11940 {1.03767157, 1.8523339}, //
+
11941 {1.04256606, 1.85196173}, //
+
11942 {1.04771113, 1.85167217}, //
+
11943 {1.05310678, 1.85146546}, //
+
11944 {1.05875313, 1.85134137}, //
+
11945 {1.06465006, 1.8513}, //
+
11946 {1.07578266, 1.84970558}, //
+
11947 {1.08658087, 1.8479445}, //
+
11948 {1.09704447, 1.84601665}, //
+
11949 {1.10717344, 1.84392226}, //
+
11950 {1.11696792, 1.8416611}, //
+
11951 {1.12642777, 1.83923328}, //
+
11952 {1.13555312, 1.83663893}, //
+
11953 {1.14434385, 1.8338778}, //
+
11954 {1.15279996, 1.83095002}, //
+
11955 {1.15748954, 1.8279593}, //
+
11956 {1.16251361, 1.82500923}, //
+
11957 {1.16787219, 1.82210004}, //
+
11958 {1.17356539, 1.81923151}, //
+
11959 {1.17959321, 1.81640375}, //
+
11960 {1.18595552, 1.81361663}, //
+
11961 {1.19265246, 1.81087041}, //
+
11962 {1.1996839, 1.80816483}, //
+
11963 {1.20704997, 1.80550003}, //
+
11964 {1.21441603, 1.80297101}, //
+
11965 {1.22144759, 1.8006506}, //
+
11966 {1.22814441, 1.79853892}, //
+
11967 {1.23450685, 1.79663575}, //
+
11968 {1.24053454, 1.79494131}, //
+
11969 {1.24622774, 1.7934556}, //
+
11970 {1.25158644, 1.79217839}, //
+
11971 {1.25661051, 1.79110992}, //
+
11972 {1.26129997, 1.79024994}, //
+
11973 {1.26598954, 1.78957844}, //
+
11974 {1.27101362, 1.78907466}, //
+
11975 {1.27637219, 1.78873885}, //
+
11976 {1.28206539, 1.788571}, //
+
11977 {1.28809321, 1.788571}, //
+
11978 {1.29445553, 1.78873885}, //
+
11979 {1.30115247, 1.78907466}, //
+
11980 {1.30818391, 1.78957844}, //
+
11981 {1.31554997, 1.79024994}, //
+
11982 {1.32628334, 1.79024994}, //
+
11983 {1.32960927, 1.79024994}, //
+
11984 {1.34434998, 1.79024994}, //
+
11985 {1.34693146, 1.79024994}, //
+
11986 {1.35171664, 1.79024994}, //
+
11987 {1.36309135, 1.79024994}, //
+
11988 {1.36342227, 1.79024994}, //
+
11989 {1.3664, 1.79024994}, //
+
11990 {1.36944258, 1.78947341}, //
+
11991 {1.37252593, 1.78865492}, //
+
11992 {1.37565005, 1.78779447}, //
+
11993 {1.37881482, 1.78689194}, //
+
11994 {1.38202035, 1.78594756}, //
+
11995 {1.38526666, 1.7849611}, //
+
11996 {1.38855374, 1.78393269}, //
+
11997 {1.39188147, 1.78286231}, //
+
11998 {1.39524996, 1.78174996}, //
+
11999 {1.39861786, 1.78052282}, //
+
12000 {1.4019438, 1.77908576}, //
+
12001 {1.40522778, 1.77743888}, //
+
12002 {1.4084698, 1.77558208}, //
+
12003 {1.41166973, 1.77351546}, //
+
12004 {1.41482782, 1.77123892}, //
+
12005 {1.41794384, 1.76875246}, //
+
12006 {1.42101789, 1.76605618}, //
+
12007 {1.42404997, 1.76314998}, //
+
12008 {1.42560244, 1.76157594}, //
+
12009 {1.42723763, 1.75987589}, //
+
12010 {1.42895555, 1.75804996}, //
+
12011 {1.43075621, 1.75609815}, //
+
12012 {1.43263948, 1.75402033}, //
+
12013 {1.4346056, 1.75181663}, //
+
12014 {1.43665433, 1.74948704}, //
+
12015 {1.43878579, 1.74703145}, //
+
12016 {1.44099998, 1.74444997}, //
+
12017 {1.44322407, 1.74187899}, //
+
12018 {1.44536293, 1.73943269}, //
+
12019 {1.44741666, 1.73711109}, //
+
12020 {1.44938517, 1.73491418}, //
+
12021 {1.45126855, 1.73284197}, //
+
12022 {1.45306671, 1.73089445}, //
+
12023 {1.45477962, 1.72907162}, //
+
12024 {1.45640743, 1.72737348}, //
+
12025 {1.45795, 1.72580004}, //
+
12026 {1.46134019, 1.72243476}, //
+
12027 {1.45322907, 1.7098062}, //
+
12028 {1.44544387, 1.69749689}, //
+
12029 {1.44160438, 1.69132507}, //
+
12030 {1.44439995, 1.68855}, //
+
12031 {1.46475005, 1.71905005}, //
+
12032 {1.46134019, 1.72243476}, //
+
12033 {1.46134996, 1.72245002}, //
+
12034 {1.46959686, 1.7351352}, //
+
12035 {1.47775984, 1.74756849}, //
+
12036 {1.48583889, 1.75975001}, //
+
12037 {1.4938339, 1.77167964}, //
+
12038 {1.5017451, 1.78335738}, //
+
12039 {1.50957227, 1.79478335}, //
+
12040 {1.51731539, 1.80595744}, //
+
12041 {1.5249747, 1.81687963}, //
+
12042 {1.53254998, 1.82755005}, //
+
12043 {1.54283273, 1.84173584}, //
+
12044 {1.55256975, 1.85567093}, //
+
12045 {1.56176114, 1.86935556}, //
+
12046 {1.57040679, 1.88278949}, //
+
12047 {1.57850683, 1.89597285}, //
+
12048 {1.58606112, 1.90890551}, //
+
12049 {1.59306979, 1.92158771}, //
+
12050 {1.59953272, 1.93401909}, //
+
12051 {1.60545003, 1.94620001}, //
+
12052 {1.61091661, 1.95787907}, //
+
12053 {1.61600554, 1.96880496}, //
+
12054 {1.62071669, 1.9789778}, //
+
12055 {1.62504995, 1.98839748}, //
+
12056 {1.62900555, 1.99706423}, //
+
12057 {1.63258338, 2.0049777}, //
+
12058 {1.63578331, 2.01213837}, //
+
12059 {1.63860559, 2.01854563}, //
+
12060 {1.64104998, 2.02419996}, //
+
12061 {1.6411339, 2.02495551}, //
+
12062 {1.64138579, 2.02571106}, //
+
12063 {1.64180553, 2.02646661}, //
+
12064 {1.64239323, 2.02722216}, //
+
12065 {1.64314878, 2.02797771}, //
+
12066 {1.64407218, 2.02873325}, //
+
12067 {1.64516354, 2.0294888}, //
+
12068 {1.64642286, 2.03024435}, //
+
12069 {1.64785004, 2.0309999}, //
+
12070 {1.64877284, 2.03262591}, //
+
12071 {1.65003026, 2.0345037}, //
+
12072 {1.65162218, 2.03663325}, //
+
12073 {1.65354872, 2.03901482}, //
+
12074 {1.65580988, 2.04164815}, //
+
12075 {1.65840554, 2.04453325}, //
+
12076 {1.66133583, 2.04767036}, //
+
12077 {1.66460061, 2.05105925}, //
+
12078 {1.66820002, 2.0546999}, //
+
12079 {1.67198765, 2.05848765}, //
+
12080 {1.67581725, 2.06231737}, //
+
12081 {1.67968893, 2.06618881}, //
+
12082 {1.68360245, 2.07010245}, //
+
12083 {1.68755805, 2.07405806}, //
+
12084 {1.69559503, 2.08209515}, //
+
12085 {1.70379996, 2.09030008}, //
+
12086 {1.70788145, 2.09429812}, //
+
12087 {1.71183705, 2.09800363}, //
+
12088 {1.71566665, 2.10141659}, //
+
12089 {1.71937037, 2.10453701}, //
+
12090 {1.72294819, 2.10736489}, //
+
12091 {1.72640002, 2.1099}, //
+
12092 {1.72972596, 2.11214256}, //
+
12093 {1.73292589, 2.11409259}, //
+
12094 {1.73599994, 2.11575007}, //
+
12095 {1.73751044, 2.11650562}, //
+
12096 {1.73901975, 2.11726117}, //
+
12097 {1.74052775, 2.11801672}, //
+
12098 {1.74203455, 2.11877227}, //
+
12099 {1.74354017, 2.11952782}, //
+
12100 {1.74504447, 2.12028337}, //
+
12101 {1.74654758, 2.12103891}, //
+
12102 {1.74804938, 2.12179446}, //
+
12103 {1.74954998, 2.12255001}, //
+
12104 {1.75179505, 2.12402964}, //
+
12105 {1.75399697, 2.12546849}, //
+
12106 {1.75615561, 2.12686658}, //
+
12107 {1.75827098, 2.12822413}, //
+
12108 {1.76034319, 2.12954068}, //
+
12109 {1.76237226, 2.1308167}, //
+
12110 {1.76435804, 2.13205194}, //
+
12111 {1.76630056, 2.13324618}, //
+
12112 {1.76820004, 2.13439989}, //
+
12113 {1.77002597, 2.13547039}, //
+
12114 {1.77172589, 2.13641477}, //
+
12115 {1.77330005, 2.13723326}, //
+
12116 {1.77474821, 2.13792586}, //
+
12117 {1.77607036, 2.13849258}, //
+
12118 {1.77726662, 2.13893342}, //
+
12119 {1.778337, 2.13924813}, //
+
12120 {1.7792815, 2.13943696}, //
+
12121 {1.78009999, 2.1394999}, //
+
12122 {1.78128457, 2.1390605}, //
+
12123 {1.78334939, 2.13774204}, //
+
12124 {1.78629446, 2.13554454}, //
+
12125 {1.79011977, 2.13246799}, //
+
12126 {1.79482532, 2.12851238}, //
+
12127 {1.8002733, 2.12379694}, //
+
12128 {1.80035806, 2.12329507}, //
+
12129 {1.80040002, 2.12255001}, //
+
12130 {1.80083954, 2.12213087}, //
+
12131 {1.8043555, 2.11877775}, //
+
12132 {1.80743206, 2.11584377}, //
+
12133 {1.81138766, 2.11207151}, //
+
12134 {1.8285284, 2.0957253}, //
+
12135 {1.83599997, 2.08859992}, //
+
12136 {1.84406793, 2.0809617}, //
+
12137 {1.85242712, 2.07311368}, //
+
12138 {1.86107779, 2.06505561}, //
+
12139 {1.87001979, 2.05678773}, //
+
12140 {1.87925303, 2.0483098}, //
+
12141 {1.88877773, 2.03962231}, //
+
12142 {1.89859378, 2.03072476}, //
+
12143 {1.90870118, 2.02161717}, //
+
12144 {1.91910005, 2.01230001}, //
+
12145 {1.92964506, 2.00307727}, //
+
12146 {1.94019139, 1.99423087}, //
+
12147 {1.95073891, 1.98576117}, //
+
12148 {1.95967829, 1.97890258}, //
+
12149 {1.96020865, 1.97841477}, //
+
12150 {1.9692111, 1.97033334}, //
+
12151 {1.97779381, 1.96283698}, //
+
12152 {1.98595679, 1.95592594}, //
+
12153 {1.99370003, 1.94959998}, //
+
12154 {1.9991765, 1.94511974}, //
+
12155 {2.00507283, 1.94072342}, //
+
12156 {2.01138878, 1.93641114}, //
+
12157 {2.01812458, 1.93218267}, //
+
12158 {2.02528024, 1.92803824}, //
+
12159 {2.03285551, 1.92397773}, //
+
12160 {2.04085064, 1.92000127}, //
+
12161 {2.04926538, 1.91610861}, //
+
12162 {2.05809999, 1.91229999}, //
+
12163 {2.0675211, 1.90849137}, //
+
12164 {2.07769513, 1.90459871}, //
+
12165 {2.08862233, 1.90062225}, //
+
12166 {2.10030246, 1.89656174}, //
+
12167 {2.11273575, 1.89241731}, //
+
12168 {2.1259222, 1.88818884}, //
+
12169 {2.13931298, 1.88404632}, //
+
12170 {2.15980005, 1.87670004}, //
+
12171 {2.18234754, 1.86883092}, //
+
12172 {2.20476794, 1.86104572}, //
+
12173 {2.22706103, 1.85334444}, //
+
12174 {2.24922705, 1.84572721}, //
+
12175 {2.27126598, 1.83819377}, //
+
12176 {2.29317784, 1.83074439}, //
+
12177 {2.31496239, 1.82337904}, //
+
12178 {2.33661985, 1.8160975}, //
+
12179 {2.35815001, 1.8089}, //
+
12180 {2.37889504, 1.80209994}, //
+
12181 {2.39817476, 1.79601109}, //
+
12182 {2.41598892, 1.79063332}, //
+
12183 {2.41630864, 1.79054201}, //
+
12184 {2.42539072, 1.78762412}, //
+
12185 {2.43531299, 1.78454077}, //
+
12186 {2.44464993, 1.78174996}, //
+
12187 {2.45348454, 1.77917898}, //
+
12188 {2.46189928, 1.77673268}, //
+
12189 {2.46989441, 1.77441108}, //
+
12190 {2.47746968, 1.77221417}, //
+
12191 {2.48462534, 1.77014196}, //
+
12192 {2.49136114, 1.76819444}, //
+
12193 {2.49767709, 1.76637161}, //
+
12194 {2.50357342, 1.76467347}, //
+
12195 {2.50904989, 1.76310003}, //
+
12196 {2.51415992, 1.76168334}, //
+
12197 {2.51893401, 1.76043332}, //
+
12198 {2.52337217, 1.75934994}, //
+
12199 {2.52747464, 1.75843334}, //
+
12200 {2.53124142, 1.75768328}, //
+
12201 {2.53467226, 1.75709999}, //
+
12202 {2.53776717, 1.75668335}, //
+
12203 {2.54052663, 1.75643337}, //
+
12204 {2.54294991, 1.75635004}, //
+
12205 {2.54513264, 1.75635004}, //
+
12206 {2.54899454, 1.75635004}, //
+
12207 {2.55067348, 1.75635004}, //
+
12208 {2.55218458, 1.75635004}, //
+
12209 {2.55352783, 1.75635004}, //
+
12210 {2.55655003, 1.75635004}, //
+
12211 {2.55733705, 1.75630808}, //
+
12212 {2.55820918, 1.75618207}, //
+
12213 {2.55916667, 1.75597227}, //
+
12214 {2.56020927, 1.75567842}, //
+
12215 {2.56133699, 1.75530064}, //
+
12216 {2.56255007, 1.75483894}, //
+
12217 {2.56384826, 1.7542932}, //
+
12218 {2.56523156, 1.75366354}, //
+
12219 {2.56669998, 1.75294995}, //
+
12220 {2.56862903, 1.75290799}, //
+
12221 {2.57139373, 1.75278211}, //
+
12222 {2.57499433, 1.75257218}, //
+
12223 {2.57943082, 1.75227845}, //
+
12224 {2.58470297, 1.75190067}, //
+
12225 {2.59081101, 1.75143886}, //
+
12226 {2.59775496, 1.75089324}, //
+
12227 {2.60553455, 1.75026357}, //
+
12228 {2.61415005, 1.74954998}, //
+
12229 {2.62344575, 1.74879503}, //
+
12230 {2.6332438, 1.74804139}, //
+
12231 {2.64354444, 1.74728894}, //
+
12232 {2.65434742, 1.74653769}, //
+
12233 {2.66565299, 1.74578762}, //
+
12234 {2.67746115, 1.74503887}, //
+
12235 {2.68977165, 1.74429131}, //
+
12236 {2.70258451, 1.74354506}, //
+
12237 {2.71589994, 1.7428}, //
+
12238 {2.74369383, 1.74204445}, //
+
12239 {2.77131987, 1.7412889}, //
+
12240 {2.79877782, 1.74053335}, //
+
12241 {2.82606792, 1.7397778}, //
+
12242 {2.85319018, 1.73902225}, //
+
12243 {2.88014436, 1.73826671}, //
+
12244 {2.90693092, 1.73751116}, //
+
12245 {2.9335494, 1.73675561}, //
+
12246 {2.96000004, 1.73599994}, //
+
12247 {2.98137164, 1.73562098}, //
+
12248 {3.00328636, 1.73599505}, //
+
12249 {3.02574444, 1.73712218}, //
+
12250 {3.04874563, 1.73900247}, //
+
12251 {3.07229018, 1.7416358}, //
+
12252 {3.09637785, 1.74502218}, //
+
12253 {3.12100863, 1.74916172}, //
+
12254 {3.14618278, 1.75405431}, //
+
12255 {3.17190003, 1.75969994}, //
+
12256 {3.1971252, 1.76560736}, //
+
12257 {3.22080135, 1.771263}, //
+
12258 {3.24292779, 1.77666664}, //
+
12259 {3.26350498, 1.78181851}, //
+
12260 {3.28253269, 1.78671849}, //
+
12261 {3.30001116, 1.7913667}, //
+
12262 {3.31594014, 1.79576302}, //
+
12263 {3.33031964, 1.79990745}, //
+
12264 {3.3431499, 1.80379999}, //
+
12265 {3.35956979, 1.80850124}, //
+
12266 {3.3622086, 1.80925679}, //
+
12267 {3.36426115, 1.80984449}, //
+
12268 {3.36572719, 1.81026423}, //
+
12269 {3.36660671, 1.810516}, //
+
12270 {3.36689997, 1.81060004}, //
+
12271 {3.36882091, 1.80988824}, //
+
12272 {3.37007284, 1.80775309}, //
+
12273 {3.37065554, 1.80419445}, //
+
12274 {3.37056923, 1.79921234}, //
+
12275 {3.36981368, 1.79280674}, //
+
12276 {3.3695426, 1.79131746}, //
+
12277 {3.37027216, 1.79100561}, //
+
12278 {3.37253213, 1.78995621}, //
+
12279 {3.37479329, 1.78882289}, //
+
12280 {3.37705564, 1.78760552}, //
+
12281 {3.37931919, 1.78630435}, //
+
12282 {3.38158393, 1.78491914}, //
+
12283 {3.3838501, 1.78345001}, //
+
12284 {3.38690305, 1.78123581}, //
+
12285 {3.39004016, 1.77910435}, //
+
12286 {3.39326119, 1.7770555}, //
+
12287 {3.39656615, 1.7750895}, //
+
12288 {3.39995503, 1.77320611}, //
+
12289 {3.40342784, 1.77140558}, //
+
12290 {3.40698457, 1.76968765}, //
+
12291 {3.41062522, 1.76805246}, //
+
12292 {3.41435003, 1.7665}, //
+
12293 {3.42130566, 1.76214564}, //
+
12294 {3.42859435, 1.75812721}, //
+
12295 {3.43621659, 1.75444448}, //
+
12296 {3.44417214, 1.75109756}, //
+
12297 {3.452461, 1.74808645}, //
+
12298 {3.46108341, 1.74541116}, //
+
12299 {3.47003889, 1.74307156}, //
+
12300 {3.47932768, 1.74106789}, //
+
12301 {3.48895001, 1.73940003}, //
+
12302 {3.49418569, 1.73868644}, //
+
12303 {3.49933767, 1.73805678}, //
+
12304 {3.5044055, 1.73751116}, //
+
12305 {3.5093894, 1.73704934}, //
+
12306 {3.51428962, 1.73667157}, //
+
12307 {3.51910567, 1.73637784}, //
+
12308 {3.52383757, 1.73616791}, //
+
12309 {3.52848577, 1.73604202}, //
+
12310 {3.53305006, 1.73599994}, //
+
12311 {3.53810811, 1.73599994}, //
+
12312 {3.54274869, 1.73599994}, //
+
12313 {3.56355, 1.73599994}, //
+
12314 {3.56506109, 1.73448884}, //
+
12315 {3.56581664, 1.7337333}, //
+
12316 {3.57034993, 1.72920001}, //
+
12317 {3.57111597, 1.72774136}, //
+
12318 {3.5719254, 1.72636545}, //
+
12319 {3.57277775, 1.72507226}, //
+
12320 {3.57367349, 1.72386169}, //
+
12321 {3.57461238, 1.72273397}, //
+
12322 {3.57559443, 1.72168887}, //
+
12323 {3.57661986, 1.72072649}, //
+
12324 {3.57768822, 1.71984696}, //
+
12325 {3.57879996, 1.71905005}, //
+
12326 {3.57995367, 1.71833646}, //
+
12327 {3.58114815, 1.7177068}, //
+
12328 {3.58238339, 1.71716106}, //
+
12329 {3.58365917, 1.71669936}, //
+
12330 {3.58497596, 1.71632159}, //
+
12331 {3.58633327, 1.71602774}, //
+
12332 {3.5877316, 1.71581793}, //
+
12333 {3.58917046, 1.71569192}, //
+
12334 {3.59065008, 1.71564996}, //
+
12335 {3.59521413, 1.715734}, //
+
12336 {3.59986234, 1.71598577}, //
+
12337 {3.60459447, 1.71640551}, //
+
12338 {3.60941052, 1.71699321}, //
+
12339 {3.6143105, 1.71774876}, //
+
12340 {3.6192944, 1.71867228}, //
+
12341 {3.62436223, 1.71976364}, //
+
12342 {3.62951422, 1.72102284}, //
+
12343 {3.63474989, 1.72245002}, //
+
12344 {3.63776183, 1.7231636}, //
+
12345 {3.64077473, 1.72379327}, //
+
12346 {3.64378881, 1.72433889}, //
+
12347 {3.64680433, 1.72480059}, //
+
12348 {3.64982104, 1.72517836}, //
+
12349 {3.65283895, 1.72547221}, //
+
12350 {3.65585804, 1.72568214}, //
+
12351 {3.65887833, 1.72580802}, //
+
12352 {3.66190004, 1.72584999}, //
+
12353 {3.66639066, 1.72655308}, //
+
12354 {3.67084074, 1.72717345}, //
+
12355 {3.67525005, 1.72771108}, //
+
12356 {3.6796186, 1.7281661}, //
+
12357 {3.68394637, 1.72853827}, //
+
12358 {3.68823338, 1.72882783}, //
+
12359 {3.69247961, 1.72903454}, //
+
12360 {3.69668508, 1.72915864}, //
+
12361 {3.70085001, 1.72920001}, //
+
12362 {3.70872164, 1.72920001}, //
+
12363 {3.7189641, 1.72920001}, //
+
12364 {3.72474933, 1.72920001}, //
+
12365 {3.72732902, 1.72920001}, //
+
12366 {3.72970009, 1.72920001}, //
+
12367 {3.73043394, 1.72847593}, //
+
12368 {3.73112464, 1.72779262}, //
+
12369 {3.73177218, 1.72714996}, //
+
12370 {3.73237658, 1.72654819}, //
+
12371 {3.73293757, 1.72598708}, //
+
12372 {3.73345566, 1.72546661}, //
+
12373 {3.73393035, 1.72498703}, //
+
12374 {3.73436165, 1.7245481}, //
+
12375 {3.73475003, 1.72414994}, //
+
12376 {3.73512769, 1.72377217}, //
+
12377 {3.73626113, 1.72263885}, //
+
12378 {3.73663878, 1.72226107}, //
+
12379 {3.73701668, 1.7218833}, //
+
12380 {3.73739433, 1.72150552}, //
+
12381 {3.73777223, 1.72112775}, //
+
12382 {3.73882151, 1.72007835}, //
+
12383 {3.7390945, 1.7198056}, //
+
12384 {3.73982906, 1.71907103}, //
+
12385 {3.73985004, 1.71905005}, //
+
12386 {3.73976612, 1.71905005}, //
+
12387 {3.73951411, 1.71905005}, //
+
12388 {3.7390945, 1.71905005}, //
+
12389 {3.73850679, 1.71905005}, //
+
12390 {3.73305011, 1.71905005}, //
+
12391 {3.73148632, 1.71905005}, //
+
12392 {3.72797775, 1.71905005}, //
+
12393 {3.72603273, 1.71905005}, //
+
12394 {3.7239604, 1.71905005}, //
+
12395 {3.72176123, 1.71905005}, //
+
12396 {3.70921493, 1.71905005}, //
+
12397 {3.7066834, 1.71905005}, //
+
12398 {3.70419264, 1.71905005}, //
+
12399 {3.69933343, 1.71905005}, //
+
12400 {3.69009447, 1.71905005}, //
+
12401 {3.68558335, 1.71905005}, //
+
12402 {3.68107224, 1.71905005}, //
+
12403 {3.67881656, 1.71905005}, //
+
12404 {3.67656112, 1.71905005}, //
+
12405 {3.67205, 1.71905005}, //
+
12406 {3.6681993, 1.71900797}, //
+
12407 {3.66418076, 1.71888208}, //
+
12408 {3.65999436, 1.71867228}, //
+
12409 {3.65564013, 1.71837842}, //
+
12410 {3.6511178, 1.71800065}, //
+
12411 {3.64642787, 1.71753883}, //
+
12412 {3.64156985, 1.71699321}, //
+
12413 {3.63654375, 1.71636355}, //
+
12414 {3.63135004, 1.71564996}, //
+
12415 {3.6269536, 1.71493638}, //
+
12416 {3.62280917, 1.71430683}, //
+
12417 {3.61891675, 1.71376109}, //
+
12418 {3.61527586, 1.71329939}, //
+
12419 {3.61188698, 1.71292162}, //
+
12420 {3.6087501, 1.71262777}, //
+
12421 {3.60586476, 1.71241796}, //
+
12422 {3.60323143, 1.71229196}, //
+
12423 {3.60085011, 1.71224999}, //
+
12424 {3.59862542, 1.71158826}, //
+
12425 {3.59648466, 1.711092}, //
+
12426 {3.59442782, 1.71076107}, //
+
12427 {3.59245491, 1.71059573}, //
+
12428 {3.59056616, 1.71059573}, //
+
12429 {3.58876109, 1.71076107}, //
+
12430 {3.58704019, 1.711092}, //
+
12431 {3.5854032, 1.71158826}, //
+
12432 {3.58384991, 1.71224999}, //
+
12433 {3.58239126, 1.71300554}, //
+
12434 {3.58101535, 1.71376109}, //
+
12435 {3.57972217, 1.71451664}, //
+
12436 {3.57851171, 1.71527219}, //
+
12437 {3.577384, 1.71602774}, //
+
12438 {3.57633901, 1.71678329}, //
+
12439 {3.57537651, 1.71753883}, //
+
12440 {3.57449698, 1.7182945}, //
+
12441 {3.57369995, 1.71905005}, //
+
12442 {3.57291293, 1.71909201}, //
+
12443 {3.5720408, 1.7192179}, //
+
12444 {3.57108331, 1.71942782}, //
+
12445 {3.5700407, 1.71972156}, //
+
12446 {3.56891298, 1.72009933}, //
+
12447 {3.56769991, 1.72056115}, //
+
12448 {3.56640196, 1.72110677}, //
+
12449 {3.56501842, 1.72173643}, //
+
12450 {3.56355, 1.72245002}, //
+
12451 {3.56271052, 1.722471}, //
+
12452 {3.56170321, 1.72253394}, //
+
12453 {3.5605278, 1.72263885}, //
+
12454 {3.55918455, 1.72278583}, //
+
12455 {3.55767345, 1.72297466}, //
+
12456 {3.55599451, 1.72320557}, //
+
12457 {3.55414748, 1.72347844}, //
+
12458 {3.55213261, 1.72379327}, //
+
12459 {3.54994988, 1.72414994}, //
+
12460 {3.54765248, 1.72450674}, //
+
12461 {3.54527092, 1.72482157}, //
+
12462 {3.54280567, 1.72509444}, //
+
12463 {3.54025626, 1.72532535}, //
+
12464 {3.53762293, 1.72551417}, //
+
12465 {3.53490567, 1.72566116}, //
+
12466 {3.53210425, 1.72576606}, //
+
12467 {3.52921915, 1.72582901}, //
+
12468 {3.52624989, 1.72584999}, //
+
12469 {3.52391052, 1.72655308}, //
+
12470 {3.52140307, 1.72717345}, //
+
12471 {3.51872778, 1.72771108}, //
+
12472 {3.51588464, 1.7281661}, //
+
12473 {3.51287341, 1.72853827}, //
+
12474 {3.50969434, 1.72882783}, //
+
12475 {3.50634742, 1.72903454}, //
+
12476 {3.50283265, 1.72915864}, //
+
12477 {3.49915004, 1.72920001}, //
+
12478 {3.49839449, 1.72924197}, //
+
12479 {3.49763894, 1.72936785}, //
+
12480 {3.49688339, 1.72957778}, //
+
12481 {3.49612784, 1.72987163}, //
+
12482 {3.4953723, 1.7302494}, //
+
12483 {3.49461675, 1.7307111}, //
+
12484 {3.4938612, 1.73125684}, //
+
12485 {3.49310565, 1.73188639}, //
+
12486 {3.4923501, 1.73259997}, //
+
12487 {3.48713517, 1.73264194}, //
+
12488 {3.48204637, 1.73276794}, //
+
12489 {3.47708344, 1.73297775}, //
+
12490 {3.47224641, 1.7332716}, //
+
12491 {3.46753526, 1.73364937}, //
+
12492 {3.46294999, 1.73411107}, //
+
12493 {3.45849085, 1.73465681}, //
+
12494 {3.45415735, 1.73528647}, //
+
12495 {3.44994998, 1.73599994}, //
+
12496 {3.44582653, 1.7368809}, //
+
12497 {3.44174504, 1.73801231}, //
+
12498 {3.43770552, 1.73939443}, //
+
12499 {3.43370795, 1.74102712}, //
+
12500 {3.42975259, 1.7429105}, //
+
12501 {3.42583895, 1.74504447}, //
+
12502 {3.42196727, 1.74742901}, //
+
12503 {3.41813755, 1.75006425}, //
+
12504 {3.41435003, 1.75294995}, //
+
12505 {3.40918708, 1.75523698}, //
+
12506 {3.40423155, 1.75756478}, //
+
12507 {3.39948344, 1.75993335}, //
+
12508 {3.39494252, 1.76234257}, //
+
12509 {3.39060926, 1.76479256}, //
+
12510 {3.38648343, 1.76728332}, //
+
12511 {3.38256478, 1.76981485}, //
+
12512 {3.3788538, 1.77238703}, //
+
12513 {3.37535, 1.77499998}, //
+
12514 {3.37214947, 1.77748704}, //
+
12515 {3.3693254, 1.77968144}, //
+
12516 {3.3675096, 1.78109241}, //
+
12517 {3.36838889, 1.78497779}, //
+
12518 {3.3695426, 1.79131746}, //
+
12519 {3.36801362, 1.79197097}, //
+
12520 {3.36575627, 1.79285252}, //
+
12521 {3.36350012, 1.79365003}, //
+
12522 {3.36010003, 1.78684998}, //
+
12523 {3.3675096, 1.78109241}, //
+
12524 {3.3662951, 1.77572536}, //
+
12525 {3.36353207, 1.76504934}, //
+
12526 {3.36010003, 1.75294995}, //
+
12527 {3.35627031, 1.73986661}, //
+
12528 {3.35231471, 1.72623885}, //
+
12529 {3.34823322, 1.71206665}, //
+
12530 {3.34402585, 1.69735003}, //
+
12531 {3.33969259, 1.68208885}, //
+
12532 {3.33523345, 1.66628337}, //
+
12533 {3.33064818, 1.64993334}, //
+
12534 {3.32593703, 1.63303888}, //
+
12535 {3.3211, 1.61559999}, //
+
12536 {3.31614757, 1.59792042}, //
+
12537 {3.31106782, 1.5802815}, //
+
12538 {3.305861, 1.56268334}, //
+
12539 {3.3005271, 1.54512596}, //
+
12540 {3.29506612, 1.52760923}, //
+
12541 {3.28947783, 1.51013339}, //
+
12542 {3.28376245, 1.49269819}, //
+
12543 {3.27791977, 1.47530365}, //
+
12544 {3.27195001, 1.45795}, //
+
12545 {3.26370311, 1.43246424}, //
+
12546 {3.25554013, 1.40722907}, //
+
12547 {3.24746108, 1.38224447}, //
+
12548 {3.23946595, 1.35751045}, //
+
12549 {3.23155499, 1.33302712}, //
+
12550 {3.23079038, 1.33066046}, //
+
12551 {3.22944188, 1.32993698}, //
+
12552 {3.22790003, 1.32914996}, //
+
12553 {3.22643089, 1.32772279}, //
+
12554 {3.22504568, 1.32646358}, //
+
12555 {3.22374439, 1.32537222}, //
+
12556 {3.22252727, 1.32444882}, //
+
12557 {3.22139382, 1.32369316}, //
+
12558 {3.22034454, 1.32310557}, //
+
12559 {3.21937895, 1.32268584}, //
+
12560 {3.21849751, 1.32243395}, //
+
12561 {3.2177, 1.32235003}, //
+
12562 {3.21090007, 1.29184997}, //
+
12563 {3.21318698, 1.29330862}, //
+
12564 {3.2155149, 1.29468453}, //
+
12565 {3.21788335, 1.29597783}, //
+
12566 {3.21991992, 1.29700112}, //
+
12567 {3.2237277, 1.3087945}, //
+
12568 {3.23079038, 1.33066046}, //
+
12569 {3.2310679, 1.33080924}, //
+
12570 {3.23277783, 1.33176672}, //
+
12571 {3.2345717, 1.33280921}, //
+
12572 {3.23644948, 1.33393705}, //
+
12573 {3.23841119, 1.33515}, //
+
12574 {3.24045682, 1.33644819}, //
+
12575 {3.24258637, 1.3378315}, //
+
12576 {3.24480009, 1.33930004}, //
+
12577 {3.24698281, 1.34072721}, //
+
12578 {3.24899745, 1.34198642}, //
+
12579 {3.25084448, 1.34307778}, //
+
12580 {3.25252342, 1.34400129}, //
+
12581 {3.25403452, 1.34475684}, //
+
12582 {3.25537777, 1.34534442}, //
+
12583 {3.25655317, 1.34576416}, //
+
12584 {3.25756049, 1.34601605}, //
+
12585 {3.25839996, 1.34609997}, //
+
12586 {3.25996304, 1.34523952}, //
+
12587 {3.26165175, 1.34416914}, //
+
12588 {3.2634666, 1.34288883}, //
+
12589 {3.26540732, 1.34139872}, //
+
12590 {3.26747417, 1.33969879}, //
+
12591 {3.26966667, 1.33778894}, //
+
12592 {3.27198529, 1.33566916}, //
+
12593 {3.27442956, 1.33333945}, //
+
12594 {3.27699995, 1.33080006}, //
+
12595 {3.27962351, 1.32814562}, //
+
12596 {3.28220487, 1.32544935}, //
+
12597 {3.2847445, 1.32271111}, //
+
12598 {3.28724194, 1.31993091}, //
+
12599 {3.28969765, 1.31710863}, //
+
12600 {3.29211116, 1.31424439}, //
+
12601 {3.29448271, 1.31133831}, //
+
12602 {3.2968123, 1.30839014}, //
+
12603 {3.29909992, 1.30540001}, //
+
12604 {3.30299187, 1.30020618}, //
+
12605 {3.30713463, 1.2951802}, //
+
12606 {3.31152773, 1.29032218}, //
+
12607 {3.31617165, 1.28563213}, //
+
12608 {3.32106614, 1.28110993}, //
+
12609 {3.32621121, 1.27675557}, //
+
12610 {3.33160686, 1.27256918}, //
+
12611 {3.33725309, 1.26855063}, //
+
12612 {3.3431499, 1.26470006}, //
+
12613 {3.34394765, 1.26394439}, //
+
12614 {3.34482908, 1.26318884}, //
+
12615 {3.34579444, 1.26243329}, //
+
12616 {3.34684372, 1.26167774}, //
+
12617 {3.34797716, 1.26092219}, //
+
12618 {3.34919453, 1.26016665}, //
+
12619 {3.35049558, 1.2594111}, //
+
12620 {3.35188079, 1.25865555}, //
+
12621 {3.35334992, 1.2579}, //
+
12622 {3.35786176, 1.25631547}, //
+
12623 {3.36237478, 1.25456178}, //
+
12624 {3.366889, 1.25263894}, //
+
12625 {3.37140441, 1.25054693}, //
+
12626 {3.37592101, 1.24828577}, //
+
12627 {3.3804388, 1.24585557}, //
+
12628 {3.38495803, 1.24325621}, //
+
12629 {3.38947845, 1.24048769}, //
+
12630 {3.39400005, 1.23755002}, //
+
12631 {3.39843822, 1.23462284}, //
+
12632 {3.40270853, 1.23186362}, //
+
12633 {3.406811, 1.22927225}, //
+
12634 {3.41074562, 1.22684872}, //
+
12635 {3.4145124, 1.22459316}, //
+
12636 {3.41811109, 1.22250557}, //
+
12637 {3.42154193, 1.22058582}, //
+
12638 {3.42480493, 1.21883392}, //
+
12639 {3.42790008, 1.21724999}, //
+
12640 {3.42953634, 1.21565557}, //
+
12641 {3.43142343, 1.21389449}, //
+
12642 {3.43356109, 1.21196663}, //
+
12643 {3.43594933, 1.20987225}, //
+
12644 {3.43858838, 1.20761108}, //
+
12645 {3.44147778, 1.20518339}, //
+
12646 {3.44461799, 1.20258892}, //
+
12647 {3.44800854, 1.19982779}, //
+
12648 {3.4516499, 1.19690001}, //
+
12649 {3.45684385, 1.19388831}, //
+
12650 {3.46186972, 1.19087529}, //
+
12651 {3.46672773, 1.18786108}, //
+
12652 {3.4714179, 1.18484569}, //
+
12653 {3.47594023, 1.18182898}, //
+
12654 {3.48029447, 1.17881107}, //
+
12655 {3.48448086, 1.17579198}, //
+
12656 {3.4884994, 1.17277157}, //
+
12657 {3.4923501, 1.16974998}, //
+
12658 {3.49594927, 1.16686416}, //
+
12659 {3.49921417, 1.16422904}, //
+
12660 {3.50214434, 1.16184449}, //
+
12661 {3.50474024, 1.15971053}, //
+
12662 {3.50700116, 1.15782714}, //
+
12663 {3.50892782, 1.15619445}, //
+
12664 {3.51051974, 1.15481234}, //
+
12665 {3.51177716, 1.15368092}, //
+
12666 {3.51270008, 1.15279996}, //
+
12667 {3.51270008, 1.15196109}, //
+
12668 {3.51270008, 1.14978337}, //
+
12669 {3.51270008, 1.14342773}, //
+
12670 {3.51270008, 1.13925004}, //
+
12671 {3.51272106, 1.13701487}, //
+
12672 {3.512784, 1.13482034}, //
+
12673 {3.51288891, 1.13266671}, //
+
12674 {3.51303577, 1.13055372}, //
+
12675 {3.5132246, 1.12848151}, //
+
12676 {3.51345563, 1.12644994}, //
+
12677 {3.51372838, 1.12445927}, //
+
12678 {3.51404309, 1.12250924}, //
+
12679 {3.51440001, 1.12059999}, //
+
12680 {3.51475668, 1.1187216}, //
+
12681 {3.51507163, 1.11684203}, //
+
12682 {3.51534438, 1.11496115}, //
+
12683 {3.51557541, 1.11307907}, //
+
12684 {3.51576424, 1.11119568}, //
+
12685 {3.5159111, 1.1093111}, //
+
12686 {3.51601601, 1.10742533}, //
+
12687 {3.51607895, 1.10553825}, //
+
12688 {3.51609993, 1.10364997}, //
+
12689 {3.51609993, 1.10029197}, //
+
12690 {3.51609993, 1.09892774}, //
+
12691 {3.51609993, 1.09691381}, //
+
12692 {3.51493335, 1.09402227}, //
+
12693 {3.51448441, 1.09289122}, //
+
12694 {3.49915004, 1.07145}, //
+
12695 {3.49915004, 1.07153392}, //
+
12696 {3.49915004, 1.07163894}, //
+
12697 {3.49915004, 1.07178581}, //
+
12698 {3.49915004, 1.07197464}, //
+
12699 {3.49915004, 1.07390308}, //
+
12700 {3.49915004, 1.07427776}, //
+
12701 {3.49915004, 1.07502341}, //
+
12702 {3.49915004, 1.07725561}, //
+
12703 {3.49915004, 1.07763338}, //
+
12704 {3.49915004, 1.07838893}, //
+
12705 {3.49915004, 1.07990003}, //
+
12706 {3.4991703, 1.08031976}, //
+
12707 {3.49923158, 1.08082342}, //
+
12708 {3.49933338, 1.08141112}, //
+
12709 {3.49947596, 1.08208275}, //
+
12710 {3.4996593, 1.0828383}, //
+
12711 {3.49988341, 1.08367777}, //
+
12712 {3.50014806, 1.08460128}, //
+
12713 {3.50045371, 1.0856086}, //
+
12714 {3.50079989, 1.08669996}, //
+
12715 {3.50115681, 1.08781171}, //
+
12716 {3.50147152, 1.0888803}, //
+
12717 {3.50174451, 1.0899055}, //
+
12718 {3.5019753, 1.09088767}, //
+
12719 {3.50216413, 1.09182656}, //
+
12720 {3.50231123, 1.09272218}, //
+
12721 {3.50241613, 1.09357464}, //
+
12722 {3.50247908, 1.09438396}, //
+
12723 {3.50250006, 1.09514999}, //
+
12724 {3.50239515, 1.0988642}, //
+
12725 {3.5020802, 1.10245121}, //
+
12726 {3.50155544, 1.10591114}, //
+
12727 {3.50082088, 1.10924387}, //
+
12728 {3.4998765, 1.11244941}, //
+
12729 {3.49872231, 1.11552775}, //
+
12730 {3.49735808, 1.11847901}, //
+
12731 {3.49578404, 1.12130308}, //
+
12732 {3.49399996, 1.12399995}, //
+
12733 {3.49205923, 1.12665427}, //
+
12734 {3.48999262, 1.12935066}, //
+
12735 {3.48779988, 1.1320889}, //
+
12736 {3.4854815, 1.1348691}, //
+
12737 {3.48303699, 1.13769138}, //
+
12738 {3.4804666, 1.1405555}, //
+
12739 {3.47777033, 1.1434617}, //
+
12740 {3.47494817, 1.14640987}, //
+
12741 {3.47199988, 1.1494}, //
+
12742 {3.46894693, 1.15170801}, //
+
12743 {3.46580982, 1.15409875}, //
+
12744 {3.46258879, 1.15657222}, //
+
12745 {3.45928407, 1.15912843}, //
+
12746 {3.45589495, 1.16176724}, //
+
12747 {3.45242214, 1.16448891}, //
+
12748 {3.44886541, 1.16729319}, //
+
12749 {3.44522476, 1.1701802}, //
+
12750 {3.44149995, 1.17314994}, //
+
12751 {3.42071986, 1.19393027}, //
+
12752 {3.41774988, 1.19690001}, //
+
12753 {3.4162395, 1.19835865}, //
+
12754 {3.41473031, 1.19973457}, //
+
12755 {3.41322231, 1.20102775}, //
+
12756 {3.41171551, 1.20223832}, //
+
12757 {3.41020989, 1.20336604}, //
+
12758 {3.40870547, 1.20441115}, //
+
12759 {3.40720248, 1.20537341}, //
+
12760 {3.40570068, 1.20625305}, //
+
12761 {3.40420008, 1.20704997}, //
+
12762 {3.39934325, 1.21304071}, //
+
12763 {3.39381719, 1.21894634}, //
+
12764 {3.38762212, 1.22476661}, //
+
12765 {3.38075805, 1.23050189}, //
+
12766 {3.37322474, 1.23615181}, //
+
12767 {3.36502218, 1.24171662}, //
+
12768 {3.35615063, 1.24719632}, //
+
12769 {3.34660983, 1.25259078}, //
+
12770 {3.33640003, 1.2579}, //
+
12771 {3.33196115, 1.26012468}, //
+
12772 {3.32768893, 1.26226544}, //
+
12773 {3.32358336, 1.26432228}, //
+
12774 {3.31964445, 1.26629508}, //
+
12775 {3.31587219, 1.26818395}, //
+
12776 {3.31226659, 1.26998889}, //
+
12777 {3.30882788, 1.27170992}, //
+
12778 {3.30555558, 1.2733469}, //
+
12779 {3.30244994, 1.27489996}, //
+
12780 {3.29600668, 1.27719748}, //
+
12781 {3.29023266, 1.27957904}, //
+
12782 {3.28512788, 1.28204441}, //
+
12783 {3.28069186, 1.28459382}, //
+
12784 {3.27692533, 1.28722715}, //
+
12785 {3.27382779, 1.28994441}, //
+
12786 {3.2713995, 1.29274571}, //
+
12787 {3.26964021, 1.29563081}, //
+
12788 {3.26854992, 1.29859996}, //
+
12789 {3.26771116, 1.30002713}, //
+
12790 {3.26670551, 1.30128646}, //
+
12791 {3.26553345, 1.30237782}, //
+
12792 {3.26419449, 1.30330122}, //
+
12793 {3.26268888, 1.30405676}, //
+
12794 {3.26101661, 1.30464447}, //
+
12795 {3.25917768, 1.3050642}, //
+
12796 {3.25717211, 1.30531609}, //
+
12797 {3.25500011, 1.30540001}, //
+
12798 {3.25272274, 1.30535805}, //
+
12799 {3.25040245, 1.30523205}, //
+
12800 {3.24803901, 1.30502224}, //
+
12801 {3.24563217, 1.30472839}, //
+
12802 {3.24318218, 1.30435061}, //
+
12803 {3.2406888, 1.30388892}, //
+
12804 {3.2381525, 1.30334318}, //
+
12805 {3.23557281, 1.30271363}, //
+
12806 {3.23294997, 1.30200005}, //
+
12807 {3.23033714, 1.30120313}, //
+
12808 {3.22776484, 1.30032349}, //
+
12809 {3.22523332, 1.29936111}, //
+
12810 {3.22274256, 1.298316}, //
+
12811 {3.22029257, 1.29718828}, //
+
12812 {3.21991992, 1.29700112}, //
+
12813 {3.21598458, 1.28481233}, //
+
12814 {3.20832539, 1.26108086}, //
+
12815 {3.20075011, 1.23759997}, //
+
12816 {3.19325852, 1.21800065}, //
+
12817 {3.18585134, 1.19840252}, //
+
12818 {3.17852783, 1.17880559}, //
+
12819 {3.17128825, 1.15920985}, //
+
12820 {3.16413283, 1.13961542}, //
+
12821 {3.1570611, 1.12002218}, //
+
12822 {3.15007353, 1.10043025}, //
+
12823 {3.14316964, 1.08083951}, //
+
12824 {3.13634992, 1.06124997}, //
+
12825 {3.12852168, 1.0334543}, //
+
12826 {3.12161422, 1.00733399}, //
+
12827 {3.11562777, 0.982888877}, //
+
12828 {3.11056232, 0.960119128}, //
+
12829 {3.10738134, 0.943928659}, //
+
12830 {3.10579991, 0.939199984}, //
+
12831 {3.10586286, 0.939179003}, //
+
12832 {3.10641313, 0.938995659}, //
+
12833 {3.10319448, 0.919605553}, //
+
12834 {3.10089207, 0.901861727}, //
+
12835 {3.09962797, 0.887159109}, //
+
12836 {3.09978342, 0.886838913}, //
+
12837 {3.10004807, 0.886293232}, //
+
12838 {3.10035372, 0.885663569}, //
+
12839 {3.1006999, 0.884949982}, //
+
12840 {3.10409999, 0.878149986}, //
+
12841 {3.10454082, 0.877404928}, //
+
12842 {3.10510731, 0.876658618}, //
+
12843 {3.10579991, 0.875911117}, //
+
12844 {3.1066184, 0.875162363}, //
+
12845 {3.10756302, 0.874412358}, //
+
12846 {3.10863328, 0.873661101}, //
+
12847 {3.10982966, 0.872908652}, //
+
12848 {3.11115193, 0.872154951}, //
+
12849 {3.11260009, 0.871399999}, //
+
12850 {3.11473823, 0.869763553}, //
+
12851 {3.11813092, 0.86787653}, //
+
12852 {3.1227777, 0.865738869}, //
+
12853 {3.12867904, 0.86335063}, //
+
12854 {3.13583446, 0.860711753}, //
+
12855 {3.14424443, 0.857822239}, //
+
12856 {3.15390873, 0.854682088}, //
+
12857 {3.16482711, 0.851291358}, //
+
12858 {3.17700005, 0.847649992}, //
+
12859 {3.17991662, 0.846915424}, //
+
12860 {3.18262219, 0.846222818}, //
+
12861 {3.18511677, 0.845572233}, //
+
12862 {3.1874001, 0.844963551}, //
+
12863 {3.1894722, 0.844396889}, //
+
12864 {3.19133329, 0.843872249}, //
+
12865 {3.19298339, 0.843389511}, //
+
12866 {3.19442225, 0.842948794}, //
+
12867 {3.1956501, 0.84254998}, //
+
12868 {3.19672036, 0.842182696}, //
+
12869 {3.19766474, 0.84181422}, //
+
12870 {3.19848323, 0.841444433}, //
+
12871 {3.19917583, 0.841073453}, //
+
12872 {3.19974256, 0.840701222}, //
+
12873 {3.20018339, 0.840327799}, //
+
12874 {3.2004981, 0.839953065}, //
+
12875 {3.20068693, 0.839577138}, //
+
12876 {3.20075011, 0.83920002}, //
+
12877 {3.20068693, 0.838843226}, //
+
12878 {3.2004981, 0.838528395}, //
+
12879 {3.20018339, 0.838255584}, //
+
12880 {3.19974256, 0.838024676}, //
+
12881 {3.19917583, 0.837835789}, //
+
12882 {3.19848323, 0.837688863}, //
+
12883 {3.19766474, 0.837583959}, //
+
12884 {3.19672036, 0.837521017}, //
+
12885 {3.1956501, 0.837499976}, //
+
12886 {3.19454813, 0.837499976}, //
+
12887 {3.19348693, 0.837499976}, //
+
12888 {3.19148707, 0.837499976}, //
+
12889 {3.18965006, 0.837499976}, //
+
12890 {3.18879271, 0.837499976}, //
+
12891 {3.18720007, 0.837499976}, //
+
12892 {3.18644452, 0.837458014}, //
+
12893 {3.18568897, 0.83733207}, //
+
12894 {3.18493342, 0.837122202}, //
+
12895 {3.18417788, 0.836828411}, //
+
12896 {3.18342233, 0.836450636}, //
+
12897 {3.18266678, 0.835988879}, //
+
12898 {3.18191123, 0.835443199}, //
+
12899 {3.18115544, 0.834813595}, //
+
12900 {3.18039989, 0.834100008}, //
+
12901 {3.17951918, 0.83414197}, //
+
12902 {3.17838764, 0.834267914}, //
+
12903 {3.17700553, 0.834477782}, //
+
12904 {3.17537284, 0.834771633}, //
+
12905 {3.17348957, 0.835149407}, //
+
12906 {3.17135549, 0.835611105}, //
+
12907 {3.16897106, 0.836156785}, //
+
12908 {3.16633582, 0.836786449}, //
+
12909 {3.16345, 0.837499976}, //
+
12910 {3.1604383, 0.838254929}, //
+
12911 {3.1574254, 0.839008629}, //
+
12912 {3.15441108, 0.839761138}, //
+
12913 {3.1513958, 0.840512335}, //
+
12914 {3.14837909, 0.841262341}, //
+
12915 {3.14536119, 0.842011094}, //
+
12916 {3.14234209, 0.842758656}, //
+
12917 {3.13932157, 0.843504965}, //
+
12918 {3.13630009, 0.844250023}, //
+
12919 {3.13341475, 0.845005572}, //
+
12920 {3.13078141, 0.84576112}, //
+
12921 {3.12840009, 0.846516669}, //
+
12922 {3.12627029, 0.847272217}, //
+
12923 {3.12439251, 0.848027766}, //
+
12924 {3.12276673, 0.848783314}, //
+
12925 {3.12139249, 0.849538863}, //
+
12926 {3.12027025, 0.850294471}, //
+
12927 {3.11940002, 0.851050019}, //
+
12928 {3.11972594, 0.850042582}, //
+
12929 {3.1201334, 0.848783314}, //
+
12930 {3.1207037, 0.847020388}, //
+
12931 {3.12104988, 0.845950007}, //
+
12932 {3.12149072, 0.844827175}, //
+
12933 {3.12205744, 0.843703091}, //
+
12934 {3.12275004, 0.842577755}, //
+
12935 {3.12356853, 0.841451228}, //
+
12936 {3.12451291, 0.840323448}, //
+
12937 {3.12558341, 0.839194417}, //
+
12938 {3.12677956, 0.838064194}, //
+
12939 {3.12810183, 0.836932719}, //
+
12940 {3.12954998, 0.835799992}, //
+
12941 {3.1310606, 0.834666669}, //
+
12942 {3.13256979, 0.833533347}, //
+
12943 {3.13407779, 0.832400024}, //
+
12944 {3.13558459, 0.831266642}, //
+
12945 {3.13709021, 0.830133319}, //
+
12946 {3.13859439, 0.828999996}, //
+
12947 {3.14009762, 0.827866673}, //
+
12948 {3.14159942, 0.826733351}, //
+
12949 {3.14310002, 0.825600028}, //
+
12950 {3.14456916, 0.824540138}, //
+
12951 {3.14595437, 0.823604941}, //
+
12952 {3.14725566, 0.822794437}, //
+
12953 {3.14847279, 0.822108626}, //
+
12954 {3.14960623, 0.821547508}, //
+
12955 {3.15065551, 0.821111083}, //
+
12956 {3.1516211, 0.82079941}, //
+
12957 {3.15250254, 0.820612371}, //
+
12958 {3.15330005, 0.820550025}, //
+
12959 {3.15790558, 0.820550025}, //
+
12960 {3.16267776, 0.820550025}, //
+
12961 {3.16761661, 0.820550025}, //
+
12962 {3.17272234, 0.820550025}, //
+
12963 {3.17799449, 0.820550025}, //
+
12964 {3.18903899, 0.820550025}, //
+
12965 {3.20075011, 0.820550025}, //
+
12966 {3.20304823, 0.820591331}, //
+
12967 {3.20543146, 0.820715427}, //
+
12968 {3.20790005, 0.820922196}, //
+
12969 {3.21045375, 0.821211755}, //
+
12970 {3.21309257, 0.821583927}, //
+
12971 {3.21581674, 0.822038889}, //
+
12972 {3.21862602, 0.822576523}, //
+
12973 {3.22152042, 0.823196888}, //
+
12974 {3.22449994, 0.823899984}, //
+
12975 {3.22597957, 0.823899984}, //
+
12976 {3.22741842, 0.823899984}, //
+
12977 {3.22881675, 0.823899984}, //
+
12978 {3.23017406, 0.823899984}, //
+
12979 {3.23635006, 0.823899984}, //
+
12980 {3.2374413, 0.823879004}, //
+
12981 {3.23844886, 0.823816061}, //
+
12982 {3.23937225, 0.823711097}, //
+
12983 {3.24021173, 0.823564172}, //
+
12984 {3.24096727, 0.823375285}, //
+
12985 {3.2416389, 0.823144436}, //
+
12986 {3.2422266, 0.822871625}, //
+
12987 {3.24273014, 0.822556794}, //
+
12988 {3.24315, 0.8222}, //
+
12989 {3.24354815, 0.821853697}, //
+
12990 {3.24398708, 0.821548164}, //
+
12991 {3.24446678, 0.82128334}, //
+
12992 {3.24498701, 0.821059287}, //
+
12993 {3.24554825, 0.820875943}, //
+
12994 {3.24615002, 0.820733309}, //
+
12995 {3.24679255, 0.820631504}, //
+
12996 {3.24747586, 0.82057035}, //
+
12997 {3.24819994, 0.820550025}, //
+
12998 {3.24895549, 0.819836438}, //
+
12999 {3.24971104, 0.819206774}, //
+
13000 {3.25046659, 0.818661094}, //
+
13001 {3.25122213, 0.818199396}, //
+
13002 {3.25197768, 0.817821622}, //
+
13003 {3.25273323, 0.817527771}, //
+
13004 {3.25348878, 0.817317903}, //
+
13005 {3.25424433, 0.817191958}, //
+
13006 {3.25500011, 0.817149997}, //
+
13007 {3.25727654, 0.81643641}, //
+
13008 {3.25959516, 0.815806806}, //
+
13009 {3.2619555, 0.815261126}, //
+
13010 {3.26435804, 0.814799368}, //
+
13011 {3.26680255, 0.814421594}, //
+
13012 {3.26928878, 0.814127803}, //
+
13013 {3.27181721, 0.813917875}, //
+
13014 {3.2743876, 0.81379199}, //
+
13015 {3.27699995, 0.813750029}, //
+
13016 {3.27966475, 0.813833952}, //
+
13017 {3.28237033, 0.814085782}, //
+
13018 {3.28511667, 0.814505577}, //
+
13019 {3.28790379, 0.815093219}, //
+
13020 {3.29073143, 0.815848768}, //
+
13021 {3.29360008, 0.816772223}, //
+
13022 {3.29650927, 0.817863584}, //
+
13023 {3.29945922, 0.819122851}, //
+
13024 {3.30244994, 0.820550025}, //
+
13025 {3.30538774, 0.821274102}, //
+
13026 {3.30815625, 0.821957409}, //
+
13027 {3.31075549, 0.822600007}, //
+
13028 {3.31318569, 0.823201835}, //
+
13029 {3.31544685, 0.823762953}, //
+
13030 {3.31753898, 0.824283361}, //
+
13031 {3.31946182, 0.82476294}, //
+
13032 {3.32121539, 0.825201869}, //
+
13033 {3.32279992, 0.825600028}, //
+
13034 {3.3243525, 0.825956762}, //
+
13035 {3.32598758, 0.826271594}, //
+
13036 {3.32770562, 0.826544464}, //
+
13037 {3.32950616, 0.826775312}, //
+
13038 {3.33138943, 0.8269642}, //
+
13039 {3.33335567, 0.827111125}, //
+
13040 {3.3354044, 0.827216029}, //
+
13041 {3.33753586, 0.827279031}, //
+
13042 {3.33975005, 0.827300012}, //
+
13043 {3.3405056, 0.827279031}, //
+
13044 {3.34126115, 0.827216029}, //
+
13045 {3.3420167, 0.827111125}, //
+
13046 {3.34277225, 0.8269642}, //
+
13047 {3.34352779, 0.826775312}, //
+
13048 {3.34428334, 0.826544464}, //
+
13049 {3.34503889, 0.826271594}, //
+
13050 {3.34579444, 0.825956762}, //
+
13051 {3.34654999, 0.825600028}, //
+
13052 {3.34730482, 0.825201213}, //
+
13053 {3.3480587, 0.824760497}, //
+
13054 {3.34881115, 0.824277759}, //
+
13055 {3.34956241, 0.823753059}, //
+
13056 {3.35031223, 0.823186398}, //
+
13057 {3.35106111, 0.822577775}, //
+
13058 {3.35180855, 0.82192719}, //
+
13059 {3.35255504, 0.821234584}, //
+
13060 {3.35330009, 0.820500016}, //
+
13061 {3.35401368, 0.819775939}, //
+
13062 {3.35464311, 0.819092572}, //
+
13063 {3.35518885, 0.818449974}, //
+
13064 {3.35565066, 0.817848146}, //
+
13065 {3.35602832, 0.817287028}, //
+
13066 {3.35632229, 0.816766679}, //
+
13067 {3.3565321, 0.816287041}, //
+
13068 {3.35665798, 0.815848172}, //
+
13069 {3.35669994, 0.815450013}, //
+
13070 {3.35669994, 0.813750029}, //
+
13071 {3.356637, 0.813728988}, //
+
13072 {3.35644817, 0.813666046}, //
+
13073 {3.35613322, 0.813561082}, //
+
13074 {3.35569263, 0.813414216}, //
+
13075 {3.3551259, 0.813225329}, //
+
13076 {3.3544333, 0.812994421}, //
+
13077 {3.35361481, 0.81272161}, //
+
13078 {3.35267043, 0.812406778}, //
+
13079 {3.35159993, 0.812049985}, //
+
13080 {3.35045624, 0.811672211}, //
+
13081 {3.34926915, 0.811294436}, //
+
13082 {3.34803891, 0.810916662}, //
+
13083 {3.34676552, 0.810538888}, //
+
13084 {3.34544873, 0.810161114}, //
+
13085 {3.34408879, 0.80978334}, //
+
13086 {3.3426857, 0.809405565}, //
+
13087 {3.34123945, 0.809027791}, //
+
13088 {3.33975005, 0.808650017}, //
+
13089 {3.33824944, 0.808251858}, //
+
13090 {3.33674765, 0.807812989}, //
+
13091 {3.33524442, 0.80733335}, //
+
13092 {3.33374023, 0.806812942}, //
+
13093 {3.33223462, 0.806251824}, //
+
13094 {3.33072782, 0.805649996}, //
+
13095 {3.32921982, 0.805007398}, //
+
13096 {3.32771039, 0.80432409}, //
+
13097 {3.32620001, 0.803600013}, //
+
13098 {3.3245635, 0.802130878}, //
+
13099 {3.32267666, 0.800745666}, //
+
13100 {3.320539, 0.799444437}, //
+
13101 {3.31815052, 0.798227131}, //
+
13102 {3.3155117, 0.797093809}, //
+
13103 {3.31262231, 0.796044469}, //
+
13104 {3.3094821, 0.795078993}, //
+
13105 {3.30609131, 0.794197559}, //
+
13106 {3.30244994, 0.79339999}, //
+
13107 {3.2986834, 0.792686403}, //
+
13108 {3.29491663, 0.792056799}, //
+
13109 {3.29115009, 0.791511118}, //
+
13110 {3.28738332, 0.791049361}, //
+
13111 {3.28361678, 0.790671587}, //
+
13112 {3.27985001, 0.790377796}, //
+
13113 {3.27608323, 0.790167928}, //
+
13114 {3.27231669, 0.790041983}, //
+
13115 {3.26854992, 0.790000021}, //
+
13116 {3.26486731, 0.79075557}, //
+
13117 {3.26135254, 0.791511118}, //
+
13118 {3.25800562, 0.792266667}, //
+
13119 {3.25482655, 0.793022215}, //
+
13120 {3.25181532, 0.793777764}, //
+
13121 {3.24897218, 0.794533312}, //
+
13122 {3.24629688, 0.795288861}, //
+
13123 {3.24378943, 0.796044469}, //
+
13124 {3.24145007, 0.796800017}, //
+
13125 {3.2391839, 0.798888862}, //
+
13126 {3.23691916, 0.800644457}, //
+
13127 {3.23465562, 0.802066684}, //
+
13128 {3.23239326, 0.803155541}, //
+
13129 {3.2301321, 0.80391109}, //
+
13130 {3.22787213, 0.804333329}, //
+
13131 {3.22561359, 0.8044222}, //
+
13132 {3.22335625, 0.804177761}, //
+
13133 {3.22110009, 0.803600013}, //
+
13134 {3.22038651, 0.803600013}, //
+
13135 {3.2192111, 0.803600013}, //
+
13136 {3.21874928, 0.803600013}, //
+
13137 {3.21837163, 0.803600013}, //
+
13138 {3.2177, 0.803600013}, //
+
13139 {3.21546483, 0.803558052}, //
+
13140 {3.21327043, 0.803432107}, //
+
13141 {3.21111655, 0.803222239}, //
+
13142 {3.20900369, 0.802928388}, //
+
13143 {3.20693159, 0.802550614}, //
+
13144 {3.20490003, 0.802088916}, //
+
13145 {3.20290923, 0.801543236}, //
+
13146 {3.20095921, 0.800913572}, //
+
13147 {3.19904995, 0.800199986}, //
+
13148 {3.19710875, 0.799570382}, //
+
13149 {3.19504023, 0.799192607}, //
+
13150 {3.19284439, 0.799066663}, //
+
13151 {3.19052172, 0.799192607}, //
+
13152 {3.18807149, 0.799570382}, //
+
13153 {3.18549442, 0.800199986}, //
+
13154 {3.18279004, 0.801081479}, //
+
13155 {3.17995858, 0.802214801}, //
+
13156 {3.17700005, 0.803600013}, //
+
13157 {3.1755414, 0.803620398}, //
+
13158 {3.17416549, 0.803681493}, //
+
13159 {3.1728723, 0.803783357}, //
+
13160 {3.17166162, 0.803925931}, //
+
13161 {3.1705339, 0.804109275}, //
+
13162 {3.16948891, 0.804333329}, //
+
13163 {3.16852665, 0.804598153}, //
+
13164 {3.16764688, 0.804903686}, //
+
13165 {3.16685009, 0.805249989}, //
+
13166 {3.16609454, 0.805648744}, //
+
13167 {3.16533899, 0.80608952}, //
+
13168 {3.16458344, 0.806572199}, //
+
13169 {3.1638279, 0.807096899}, //
+
13170 {3.16307211, 0.80766356}, //
+
13171 {3.16231656, 0.808272243}, //
+
13172 {3.16156101, 0.808922827}, //
+
13173 {3.16080546, 0.809615433}, //
+
13174 {3.16004992, 0.810350001}, //
+
13175 {3.16000795, 0.811063588}, //
+
13176 {3.15988207, 0.811693192}, //
+
13177 {3.15967226, 0.812238872}, //
+
13178 {3.15937829, 0.812700629}, //
+
13179 {3.15900064, 0.813078403}, //
+
13180 {3.15853882, 0.813372195}, //
+
13181 {3.15799332, 0.813582122}, //
+
13182 {3.15736365, 0.813708007}, //
+
13183 {3.15665007, 0.813750029}, //
+
13184 {3.14989996, 0.813750029}, //
+
13185 {3.14765429, 0.81379199}, //
+
13186 {3.14545059, 0.813917875}, //
+
13187 {3.14328885, 0.814127803}, //
+
13188 {3.14116907, 0.814421594}, //
+
13189 {3.13909125, 0.814799368}, //
+
13190 {3.13705564, 0.815261126}, //
+
13191 {3.13506174, 0.815806806}, //
+
13192 {3.13310981, 0.81643641}, //
+
13193 {3.13120008, 0.817149997}, //
+
13194 {3.12921739, 0.817988873}, //
+
13195 {3.12702465, 0.818994462}, //
+
13196 {3.12462211, 0.820166647}, //
+
13197 {3.12200999, 0.821505547}, //
+
13198 {3.11918759, 0.8230111}, //
+
13199 {3.11615562, 0.824683309}, //
+
13200 {3.11291361, 0.826522231}, //
+
13201 {3.10946178, 0.828527749}, //
+
13202 {3.10579991, 0.83069998}, //
+
13203 {3.10563207, 0.830867887}, //
+
13204 {3.10475063, 0.83174938}, //
+
13205 {3.10374331, 0.832756817}, //
+
13206 {3.10240006, 0.834100008}, //
+
13207 {3.09909129, 0.837458014}, //
+
13208 {3.09905005, 0.837499976}, //
+
13209 {3.09905005, 0.840900004}, //
+
13210 {3.09923339, 0.840900004}, //
+
13211 {3.09937596, 0.840900004}, //
+
13212 {3.09955931, 0.840900004}, //
+
13213 {3.10137153, 0.840900004}, //
+
13214 {3.10164452, 0.840900004}, //
+
13215 {3.10187531, 0.840900004}, //
+
13216 {3.10206413, 0.840900004}, //
+
13217 {3.10240006, 0.840900004}, //
+
13218 {3.10240006, 0.841650009}, //
+
13219 {3.10240006, 0.854020357}, //
+
13220 {3.10240006, 0.862900019}, //
+
13221 {3.10237908, 0.864788294}, //
+
13222 {3.10231614, 0.866675317}, //
+
13223 {3.102211, 0.868561089}, //
+
13224 {3.10206413, 0.870445669}, //
+
13225 {3.10187531, 0.872328997}, //
+
13226 {3.10164452, 0.874211133}, //
+
13227 {3.10137153, 0.876091957}, //
+
13228 {3.10105681, 0.87797159}, //
+
13229 {3.1006999, 0.87984997}, //
+
13230 {3.10035372, 0.881633937}, //
+
13231 {3.09978342, 0.884572208}, //
+
13232 {3.0995214, 0.885921121}, //
+
13233 {3.09962797, 0.887159109}, //
+
13234 {3.09907031, 0.888308048}, //
+
13235 {3.09905005, 0.88835001}, //
+
13236 {3.09937596, 0.886671007}, //
+
13237 {3.0995214, 0.885921121}, //
+
13238 {3.09951043, 0.885793209}, //
+
13239 {3.09905005, 0.871399999}, //
+
13240 {3.09896612, 0.865450621}, //
+
13241 {3.09871411, 0.859669149}, //
+
13242 {3.0982945, 0.854055583}, //
+
13243 {3.09770679, 0.848609865}, //
+
13244 {3.09695125, 0.843332112}, //
+
13245 {3.09602785, 0.838222206}, //
+
13246 {3.09493637, 0.833280265}, //
+
13247 {3.09367704, 0.828506172}, //
+
13248 {3.09225011, 0.823899984}, //
+
13249 {3.0914104, 0.819178998}, //
+
13250 {3.09040308, 0.814038277}, //
+
13251 {3.08922768, 0.808477759}, //
+
13252 {3.08788466, 0.802497506}, //
+
13253 {3.08637357, 0.796097517}, //
+
13254 {3.08469439, 0.789277792}, //
+
13255 {3.0828476, 0.782038271}, //
+
13256 {3.08083272, 0.774379015}, //
+
13257 {3.07865, 0.766300023}, //
+
13258 {3.07639384, 0.758011103}, //
+
13259 {3.0741365, 0.749722242}, //
+
13260 {3.07187772, 0.741433322}, //
+
13261 {3.06961799, 0.733144462}, //
+
13262 {3.06735682, 0.724855542}, //
+
13263 {3.06509447, 0.716566682}, //
+
13264 {3.06283092, 0.708277762}, //
+
13265 {3.06056595, 0.699988902}, //
+
13266 {3.05830002, 0.691699982}, //
+
13267 {3.0560863, 0.683662355}, //
+
13268 {3.05395675, 0.676127136}, //
+
13269 {3.05191112, 0.669094443}, //
+
13270 {3.04994941, 0.662564218}, //
+
13271 {3.04807162, 0.6565364}, //
+
13272 {3.04627776, 0.651011109}, //
+
13273 {3.04456782, 0.645988286}, //
+
13274 {3.04294205, 0.641467929}, //
+
13275 {3.04139996, 0.63744998}, //
+
13276 {3.03865242, 0.628974676}, //
+
13277 {3.0349431, 0.618615448}, //
+
13278 {3.03027225, 0.606372237}, //
+
13279 {3.02463961, 0.592245042}, //
+
13280 {3.01804495, 0.576233923}, //
+
13281 {3.01048899, 0.558338881}, //
+
13282 {3.00197101, 0.538559854}, //
+
13283 {2.99249125, 0.516896904}, //
+
13284 {2.98204994, 0.493349999}, //
+
13285 {2.97098088, 0.468672842}, //
+
13286 {2.96921039, 0.464769185}, //
+
13287 {2.96887779, 0.464688897}, //
+
13288 {2.96822715, 0.464583963}, //
+
13289 {2.96753454, 0.464520991}, //
+
13290 {2.96679997, 0.46450001}, //
+
13291 {2.96633768, 0.463125318}, //
+
13292 {2.96646166, 0.462001234}, //
+
13293 {2.96717215, 0.461127788}, //
+
13294 {2.96748972, 0.460975319}, //
+
13295 {2.95961785, 0.443619132}, //
+
13296 {2.94796109, 0.4181889}, //
+
13297 {2.9360106, 0.392382085}, //
+
13298 {2.92376614, 0.366198778}, //
+
13299 {2.9112277, 0.339638889}, //
+
13300 {2.89839578, 0.312702477}, //
+
13301 {2.88526964, 0.285389513}, //
+
13302 {2.87185001, 0.257699996}, //
+
13303 {2.86458826, 0.243733957}, //
+
13304 {2.85786986, 0.230480254}, //
+
13305 {2.85361624, 0.221841618}, //
+
13306 {2.85429001, 0.221659258}, //
+
13307 {2.8561697, 0.221092597}, //
+
13308 {2.85829997, 0.220400006}, //
+
13309 {2.85989451, 0.218846917}, //
+
13310 {2.86165547, 0.217209876}, //
+
13311 {2.86358333, 0.215488896}, //
+
13312 {2.86567783, 0.213683948}, //
+
13313 {2.867939, 0.211795062}, //
+
13314 {2.87036657, 0.209822223}, //
+
13315 {2.87296104, 0.20776543}, //
+
13316 {2.87572217, 0.205624685}, //
+
13317 {2.87864995, 0.203400001}, //
+
13318 {2.88170314, 0.201269746}, //
+
13319 {2.88484001, 0.199390128}, //
+
13320 {2.88806105, 0.197761118}, //
+
13321 {2.891366, 0.196382716}, //
+
13322 {2.89475489, 0.195254937}, //
+
13323 {2.89822769, 0.19437778}, //
+
13324 {2.90178466, 0.193751231}, //
+
13325 {2.90542531, 0.193375304}, //
+
13326 {2.90914989, 0.19325}, //
+
13327 {2.91145802, 0.194677159}, //
+
13328 {2.91384888, 0.195936427}, //
+
13329 {2.91632223, 0.197027773}, //
+
13330 {2.91887832, 0.197951227}, //
+
13331 {2.92151737, 0.198706791}, //
+
13332 {2.92423892, 0.199294448}, //
+
13333 {2.9270432, 0.199714199}, //
+
13334 {2.92993021, 0.199966043}, //
+
13335 {2.93289995, 0.200049996}, //
+
13336 {2.93951058, 0.200721607}, //
+
13337 {2.94578648, 0.201225311}, //
+
13338 {2.95172787, 0.201561108}, //
+
13339 {2.95733452, 0.201729015}, //
+
13340 {2.96260691, 0.201729015}, //
+
13341 {2.96754456, 0.201561108}, //
+
13342 {2.97214746, 0.201225311}, //
+
13343 {2.97641611, 0.200721607}, //
+
13344 {2.98035002, 0.200049996}, //
+
13345 {2.98261595, 0.198580861}, //
+
13346 {2.98488092, 0.197195679}, //
+
13347 {2.98714447, 0.19589445}, //
+
13348 {2.98940682, 0.194677159}, //
+
13349 {2.99166799, 0.193543822}, //
+
13350 {2.99392772, 0.192494437}, //
+
13351 {2.99618649, 0.191529006}, //
+
13352 {2.99844384, 0.190647528}, //
+
13353 {3.0007, 0.189850003}, //
+
13354 {3.00296617, 0.189146906}, //
+
13355 {3.0052309, 0.188526541}, //
+
13356 {3.00749445, 0.187988892}, //
+
13357 {3.0097568, 0.187533945}, //
+
13358 {3.01201797, 0.187161729}, //
+
13359 {3.0142777, 0.186872229}, //
+
13360 {3.01653647, 0.186665431}, //
+
13361 {3.01879382, 0.186541364}, //
+
13362 {3.02104998, 0.186499998}, //
+
13363 {3.02668881, 0.186499998}, //
+
13364 {3.02806735, 0.186499998}, //
+
13365 {3.03119993, 0.186499998}, //
+
13366 {3.03268957, 0.185786426}, //
+
13367 {3.03413582, 0.185156792}, //
+
13368 {3.03553891, 0.184611112}, //
+
13369 {3.03689885, 0.184149384}, //
+
13370 {3.0382154, 0.18377161}, //
+
13371 {3.03948879, 0.183477774}, //
+
13372 {3.04071903, 0.183267906}, //
+
13373 {3.04190612, 0.183141977}, //
+
13374 {3.04305005, 0.1831}, //
+
13375 {3.04420424, 0.183141977}, //
+
13376 {3.04540062, 0.183267906}, //
+
13377 {3.04663897, 0.183477774}, //
+
13378 {3.04791903, 0.18377161}, //
+
13379 {3.0492413, 0.184149384}, //
+
13380 {3.05060554, 0.184611112}, //
+
13381 {3.05201173, 0.185156792}, //
+
13382 {3.05345988, 0.185786426}, //
+
13383 {3.05495, 0.186499998}, //
+
13384 {3.06515002, 0.186499998}, //
+
13385 {3.06660867, 0.187213585}, //
+
13386 {3.06798458, 0.187843204}, //
+
13387 {3.06927776, 0.188388884}, //
+
13388 {3.07048821, 0.188850611}, //
+
13389 {3.07161593, 0.189228401}, //
+
13390 {3.07266116, 0.189522222}, //
+
13391 {3.07362342, 0.189732105}, //
+
13392 {3.07450318, 0.189858019}, //
+
13393 {3.07529998, 0.189899996}, //
+
13394 {3.07674742, 0.189899996}, //
+
13395 {3.07806802, 0.189899996}, //
+
13396 {3.07926106, 0.189899996}, //
+
13397 {3.08375001, 0.189899996}, //
+
13398 {3.08410668, 0.189858019}, //
+
13399 {3.08442163, 0.189732105}, //
+
13400 {3.08469439, 0.189522222}, //
+
13401 {3.08492541, 0.189228401}, //
+
13402 {3.08511424, 0.188850611}, //
+
13403 {3.08526111, 0.188388884}, //
+
13404 {3.08536601, 0.187843204}, //
+
13405 {3.08542895, 0.187213585}, //
+
13406 {3.08544993, 0.186499998}, //
+
13407 {3.08544993, 0.185786426}, //
+
13408 {3.08544993, 0.184611112}, //
+
13409 {3.08544993, 0.1831}, //
+
13410 {3.08542895, 0.182386413}, //
+
13411 {3.08536601, 0.181756794}, //
+
13412 {3.08526111, 0.181211114}, //
+
13413 {3.08511424, 0.180749387}, //
+
13414 {3.08492541, 0.180371612}, //
+
13415 {3.08469439, 0.180077776}, //
+
13416 {3.08442163, 0.179867908}, //
+
13417 {3.08410668, 0.179741979}, //
+
13418 {3.08375001, 0.179700002}, //
+
13419 {3.08338261, 0.179679006}, //
+
13420 {3.08301425, 0.179616049}, //
+
13421 {3.08264446, 0.179511115}, //
+
13422 {3.08227348, 0.179364204}, //
+
13423 {3.08190131, 0.179175302}, //
+
13424 {3.08152771, 0.178944439}, //
+
13425 {3.08115315, 0.178671598}, //
+
13426 {3.08077717, 0.178356797}, //
+
13427 {3.08039999, 0.178000003}, //
+
13428 {3.08000112, 0.177601233}, //
+
13429 {3.07956052, 0.177160487}, //
+
13430 {3.07907772, 0.176677778}, //
+
13431 {3.07798648, 0.175586417}, //
+
13432 {3.0773778, 0.174977779}, //
+
13433 {3.07529998, 0.172900006}, //
+
13434 {3.07456541, 0.17287901}, //
+
13435 {3.0738728, 0.172816053}, //
+
13436 {3.07322216, 0.172711104}, //
+
13437 {3.07261348, 0.172564194}, //
+
13438 {3.072047, 0.172375306}, //
+
13439 {3.07152224, 0.172144443}, //
+
13440 {3.07103944, 0.171871603}, //
+
13441 {3.07059884, 0.171556786}, //
+
13442 {3.07019997, 0.171200007}, //
+
13443 {3.06984329, 0.170811728}, //
+
13444 {3.06952834, 0.17038025}, //
+
13445 {3.06925559, 0.169905558}, //
+
13446 {3.0690248, 0.169387653}, //
+
13447 {3.06883574, 0.16882655}, //
+
13448 {3.06868887, 0.168222219}, //
+
13449 {3.06858397, 0.167574689}, //
+
13450 {3.06852102, 0.166883945}, //
+
13451 {3.06850004, 0.166150004}, //
+
13452 {3.06775498, 0.165415436}, //
+
13453 {3.06700873, 0.164722845}, //
+
13454 {3.06626105, 0.164072216}, //
+
13455 {3.06551242, 0.163463578}, //
+
13456 {3.06476235, 0.162896916}, //
+
13457 {3.0640111, 0.162372217}, //
+
13458 {3.06325865, 0.161889508}, //
+
13459 {3.06250501, 0.161448762}, //
+
13460 {3.06174994, 0.161050007}, //
+
13461 {3.06095243, 0.160693213}, //
+
13462 {3.06007099, 0.160378397}, //
+
13463 {3.05910563, 0.160105556}, //
+
13464 {3.05805612, 0.159874693}, //
+
13465 {3.05692291, 0.159685805}, //
+
13466 {3.05570555, 0.159538895}, //
+
13467 {3.05440426, 0.159433946}, //
+
13468 {3.05301905, 0.159370989}, //
+
13469 {3.05154991, 0.159349993}, //
+
13470 {3.04996538, 0.159391969}, //
+
13471 {3.04821181, 0.159517899}, //
+
13472 {3.04628897, 0.159727782}, //
+
13473 {3.04419684, 0.160021603}, //
+
13474 {3.04193592, 0.160399377}, //
+
13475 {3.03950548, 0.160861105}, //
+
13476 {3.03690624, 0.161406785}, //
+
13477 {3.03413773, 0.162036419}, //
+
13478 {3.03119993, 0.162750006}, //
+
13479 {3.02818894, 0.16354692}, //
+
13480 {3.02517772, 0.16442655}, //
+
13481 {3.02216673, 0.165388882}, //
+
13482 {3.0191555, 0.166433945}, //
+
13483 {3.01614451, 0.167561725}, //
+
13484 {3.01313329, 0.168772221}, //
+
13485 {3.0101223, 0.170065433}, //
+
13486 {3.00711107, 0.171441361}, //
+
13487 {3.00410008, 0.172900006}, //
+
13488 {3.00115132, 0.173655555}, //
+
13489 {2.99832726, 0.174411118}, //
+
13490 {2.99562788, 0.175166667}, //
+
13491 {2.9930532, 0.175922215}, //
+
13492 {2.99060297, 0.176677778}, //
+
13493 {2.98827767, 0.177433327}, //
+
13494 {2.98607707, 0.17818889}, //
+
13495 {2.98400116, 0.178944439}, //
+
13496 {2.98204994, 0.179700002}, //
+
13497 {2.98023462, 0.180413574}, //
+
13498 {2.97854376, 0.181043208}, //
+
13499 {2.97697783, 0.181588888}, //
+
13500 {2.97553635, 0.182050616}, //
+
13501 {2.9742198, 0.18242839}, //
+
13502 {2.97302771, 0.182722226}, //
+
13503 {2.97196054, 0.182932094}, //
+
13504 {2.97101784, 0.183058023}, //
+
13505 {2.97020006, 0.1831}, //
+
13506 {2.96944451, 0.1831}, //
+
13507 {2.96868896, 0.1831}, //
+
13508 {2.96339989, 0.1831}, //
+
13509 {2.96262336, 0.182365432}, //
+
13510 {2.96180487, 0.181672841}, //
+
13511 {2.96094441, 0.181022227}, //
+
13512 {2.960042, 0.180413574}, //
+
13513 {2.95909762, 0.179846913}, //
+
13514 {2.95811105, 0.179322228}, //
+
13515 {2.95708275, 0.178839505}, //
+
13516 {2.95601225, 0.178398758}, //
+
13517 {2.95490003, 0.178000003}, //
+
13518 {2.95379806, 0.177601233}, //
+
13519 {2.95273709, 0.177160487}, //
+
13520 {2.95171666, 0.176677778}, //
+
13521 {2.950737, 0.176153094}, //
+
13522 {2.94979811, 0.175586417}, //
+
13523 {2.94889998, 0.174977779}, //
+
13524 {2.94804263, 0.174327165}, //
+
13525 {2.94722581, 0.173634574}, //
+
13526 {2.94645, 0.172900006}, //
+
13527 {2.94642901, 0.172133952}, //
+
13528 {2.94636607, 0.171324685}, //
+
13529 {2.94626117, 0.17047222}, //
+
13530 {2.9461143, 0.169576541}, //
+
13531 {2.94592524, 0.168637648}, //
+
13532 {2.94569445, 0.167655557}, //
+
13533 {2.9454217, 0.166630253}, //
+
13534 {2.94510674, 0.165561736}, //
+
13535 {2.94475007, 0.164450005}, //
+
13536 {2.9443512, 0.163337648}, //
+
13537 {2.9439106, 0.162267283}, //
+
13538 {2.9434278, 0.161238894}, //
+
13539 {2.94290304, 0.160252467}, //
+
13540 {2.94233632, 0.159308031}, //
+
13541 {2.94172788, 0.158405557}, //
+
13542 {2.94107723, 0.15754506}, //
+
13543 {2.94038463, 0.156726539}, //
+
13544 {2.93965006, 0.155949995}, //
+
13545 {2.93903017, 0.155246913}, //
+
13546 {2.93865991, 0.154626548}, //
+
13547 {2.93853879, 0.154088885}, //
+
13548 {2.9386673, 0.153633952}, //
+
13549 {2.93904495, 0.153261721}, //
+
13550 {2.93967223, 0.152972221}, //
+
13551 {2.94054866, 0.152765438}, //
+
13552 {2.94167471, 0.152641356}, //
+
13553 {2.94304991, 0.152600005}, //
+
13554 {2.94307089, 0.151886418}, //
+
13555 {2.94313407, 0.151256785}, //
+
13556 {2.94323897, 0.150711104}, //
+
13557 {2.94338584, 0.150249377}, //
+
13558 {2.94357467, 0.149871603}, //
+
13559 {2.94380546, 0.149577782}, //
+
13560 {2.94407845, 0.149367899}, //
+
13561 {2.94439316, 0.149241969}, //
+
13562 {2.94475007, 0.149200007}, //
+
13563 {2.94510674, 0.149200007}, //
+
13564 {2.94569445, 0.149200007}, //
+
13565 {2.94645, 0.149200007}, //
+
13566 {2.94649196, 0.149200007}, //
+
13567 {2.94682789, 0.149200007}, //
+
13568 {2.94985008, 0.149200007}, //
+
13569 {2.94997525, 0.148444444}, //
+
13570 {2.95035124, 0.147688895}, //
+
13571 {2.9509778, 0.146933332}, //
+
13572 {2.95185494, 0.146177784}, //
+
13573 {2.95298266, 0.14542222}, //
+
13574 {2.9543612, 0.144666672}, //
+
13575 {2.95599008, 0.143911108}, //
+
13576 {2.95786977, 0.14315556}, //
+
13577 {2.96000004, 0.142399997}, //
+
13578 {2.96226597, 0.141686425}, //
+
13579 {2.96453094, 0.141056791}, //
+
13580 {2.96679449, 0.14051111}, //
+
13581 {2.96905684, 0.140049383}, //
+
13582 {2.97131801, 0.139671609}, //
+
13583 {2.97357774, 0.139377773}, //
+
13584 {2.97583652, 0.139167905}, //
+
13585 {2.97809386, 0.139041975}, //
+
13586 {2.98035002, 0.138999999}, //
+
13587 {2.98336983, 0.138999999}, //
+
13588 {2.98638463, 0.138999999}, //
+
13589 {2.98789001, 0.138999999}, //
+
13590 {2.99390006, 0.138999999}, //
+
13591 {2.99541116, 0.138916671}, //
+
13592 {2.99692225, 0.13866666}, //
+
13593 {2.99833369, 0.138277501}, //
+
13594 {2.99466658, 0.135633335}, //
+
13595 {2.98992038, 0.131551847}, //
+
13596 {2.98521471, 0.12684074}, //
+
13597 {2.98055005, 0.1215}, //
+
13598 {2.97592592, 0.115529627}, //
+
13599 {2.97330403, 0.111754194}, //
+
13600 {2.97263336, 0.112277776}, //
+
13601 {2.97127604, 0.113201238}, //
+
13602 {2.96995926, 0.113956787}, //
+
13603 {2.96868324, 0.114544444}, //
+
13604 {2.96744823, 0.114964195}, //
+
13605 {2.96625376, 0.115216047}, //
+
13606 {2.96510005, 0.1153}, //
+
13607 {2.96398759, 0.115258023}, //
+
13608 {2.96291733, 0.115132101}, //
+
13609 {2.96188879, 0.114922225}, //
+
13610 {2.96090245, 0.114628397}, //
+
13611 {2.95995808, 0.114250615}, //
+
13612 {2.95905566, 0.113788888}, //
+
13613 {2.95819497, 0.113243207}, //
+
13614 {2.95737648, 0.112613581}, //
+
13615 {2.95659995, 0.111900002}, //
+
13616 {2.95581293, 0.111144446}, //
+
13617 {2.9549408, 0.11038889}, //
+
13618 {2.95398331, 0.109633334}, //
+
13619 {2.9529407, 0.108877778}, //
+
13620 {2.95181298, 0.108122222}, //
+
13621 {2.95059991, 0.107366666}, //
+
13622 {2.94930196, 0.10661111}, //
+
13623 {2.94791842, 0.105855554}, //
+
13624 {2.94645, 0.105099998}, //
+
13625 {2.94352221, 0.104345061}, //
+
13626 {2.94076109, 0.10359136}, //
+
13627 {2.93816662, 0.102838889}, //
+
13628 {2.9357388, 0.102087654}, //
+
13629 {2.93347788, 0.101337656}, //
+
13630 {2.93138337, 0.100588888}, //
+
13631 {2.92945552, 0.0998413563}, //
+
13632 {2.92769456, 0.0990950614}, //
+
13633 {2.92610002, 0.0983500034}, //
+
13634 {2.92313075, 0.0962092578}, //
+
13635 {2.92024565, 0.0943203717}, //
+
13636 {2.91744447, 0.0926833302}, //
+
13637 {2.91472721, 0.091298148}, //
+
13638 {2.91209388, 0.0901648179}, //
+
13639 {2.90954447, 0.0892833322}, //
+
13640 {2.90707898, 0.088653706}, //
+
13641 {2.90469742, 0.0882759243}, //
+
13642 {2.90240002, 0.0881500021}, //
+
13643 {2.89895797, 0.087353088}, //
+
13644 {2.89618754, 0.0864734575}, //
+
13645 {2.89408898, 0.0855111107}, //
+
13646 {2.89266181, 0.0844660476}, //
+
13647 {2.89190626, 0.0833382681}, //
+
13648 {2.89182234, 0.0821277797}, //
+
13649 {2.8924098, 0.0808345675}, //
+
13650 {2.89366913, 0.079458639}, //
+
13651 {2.89560008, 0.0780000016}, //
+
13652 {2.89633465, 0.0772234574}, //
+
13653 {2.89702725, 0.0764049366}, //
+
13654 {2.89767766, 0.0755444467}, //
+
13655 {2.89828634, 0.0746419728}, //
+
13656 {2.89885306, 0.0736975297}, //
+
13657 {2.89937782, 0.0727111101}, //
+
13658 {2.89986038, 0.0716827139}, //
+
13659 {2.90030122, 0.0706123486}, //
+
13660 {2.90070009, 0.0694999993}, //
+
13661 {2.9010148, 0.0684086457}, //
+
13662 {2.90120363, 0.0674012378}, //
+
13663 {2.90126657, 0.0664777756}, //
+
13664 {2.90120363, 0.065638274}, //
+
13665 {2.9010148, 0.064882718}, //
+
13666 {2.90070009, 0.0642111078}, //
+
13667 {2.90025926, 0.0636234581}, //
+
13668 {2.89969254, 0.0631197542}, //
+
13669 {2.89899993, 0.0627000034}, //
+
13670 {2.89816046, 0.0623537041}, //
+
13671 {2.89715314, 0.0620481484}, //
+
13672 {2.89597774, 0.0617833324}, //
+
13673 {2.89463449, 0.0615592599}, //
+
13674 {2.89312339, 0.0613759272}, //
+
13675 {2.89144444, 0.0612333342}, //
+
13676 {2.88959742, 0.0611314811}, //
+
13677 {2.88758278, 0.0610703714}, //
+
13678 {2.88540006, 0.0610500015}, //
+
13679 {2.88169622, 0.0603777766}, //
+
13680 {2.87811852, 0.0598722212}, //
+
13681 {2.87466669, 0.0595333315}, //
+
13682 {2.87134075, 0.0593611114}, //
+
13683 {2.8681407, 0.059355557}, //
+
13684 {2.86506677, 0.0595166683}, //
+
13685 {2.86211848, 0.0598444454}, //
+
13686 {2.85929632, 0.0603388883}, //
+
13687 {2.85660005, 0.0610000007}, //
+
13688 {2.85415483, 0.0617555566}, //
+
13689 {2.85208631, 0.0625111088}, //
+
13690 {2.85039449, 0.0632666647}, //
+
13691 {2.84907889, 0.0640222207}, //
+
13692 {2.84814024, 0.0647777766}, //
+
13693 {2.84757781, 0.0655333325}, //
+
13694 {2.84739208, 0.0662888885}, //
+
13695 {2.84758282, 0.0670444444}, //
+
13696 {2.84815001, 0.0678000003}, //
+
13697 {2.84958768, 0.0685765445}, //
+
13698 {2.85090065, 0.0693950653}, //
+
13699 {2.85208893, 0.0702555552}, //
+
13700 {2.85315251, 0.0711580217}, //
+
13701 {2.85409141, 0.0721024722}, //
+
13702 {2.85490561, 0.0730888918}, //
+
13703 {2.85559511, 0.0741172805}, //
+
13704 {2.85615993, 0.0751876533}, //
+
13705 {2.85660005, 0.0763000026}, //
+
13706 {2.85693574, 0.0773907378}, //
+
13707 {2.85718775, 0.078396298}, //
+
13708 {2.85735559, 0.0793166682}, //
+
13709 {2.85743952, 0.0801518485}, //
+
13710 {2.85743952, 0.0809018537}, //
+
13711 {2.85735559, 0.081566669}, //
+
13712 {2.85718775, 0.0821462944}, //
+
13713 {2.85693574, 0.0826407373}, //
+
13714 {2.85660005, 0.0830499977}, //
+
13715 {2.85611796, 0.0834067911}, //
+
13716 {2.85542727, 0.0837216079}, //
+
13717 {2.85452771, 0.0839944407}, //
+
13718 {2.85341978, 0.0842253119}, //
+
13719 {2.85210299, 0.084414199}, //
+
13720 {2.85057783, 0.0845611095}, //
+
13721 {2.84884381, 0.084666051}, //
+
13722 {2.84690118, 0.0847290158}, //
+
13723 {2.84474993, 0.0847499967}, //
+
13724 {2.84395242, 0.0840469152}, //
+
13725 {2.84307098, 0.0834265426}, //
+
13726 {2.84210563, 0.0828888863}, //
+
13727 {2.84105611, 0.0824339539}, //
+
13728 {2.8399229, 0.0820617303}, //
+
13729 {2.83870554, 0.0817722231}, //
+
13730 {2.83740425, 0.0815654323}, //
+
13731 {2.83601904, 0.0814413577}, //
+
13732 {2.8345499, 0.0813999996}, //
+
13733 {2.83311224, 0.0814203694}, //
+
13734 {2.83179927, 0.0814814791}, //
+
13735 {2.83061123, 0.081583336}, //
+
13736 {2.82954764, 0.0817259252}, //
+
13737 {2.82860875, 0.0819092616}, //
+
13738 {2.82779455, 0.0821333304}, //
+
13739 {2.82710505, 0.0823981464}, //
+
13740 {2.82654023, 0.0827037022}, //
+
13741 {2.82610011, 0.0830499977}, //
+
13742 {2.82582664, 0.0834487677}, //
+
13743 {2.8257618, 0.0838895068}, //
+
13744 {2.82590556, 0.0843722224}, //
+
13745 {2.82625794, 0.0848969147}, //
+
13746 {2.82681918, 0.0854635835}, //
+
13747 {2.8275888, 0.0860722214}, //
+
13748 {2.82856727, 0.0867228359}, //
+
13749 {2.82975435, 0.0874154344}, //
+
13750 {2.83115005, 0.0881500021}, //
+
13751 {2.83329082, 0.0896395072}, //
+
13752 {2.83517957, 0.091085799}, //
+
13753 {2.83681655, 0.0924888924}, //
+
13754 {2.83820176, 0.0938487649}, //
+
13755 {2.8393352, 0.0951654315}, //
+
13756 {2.84021664, 0.0964388922}, //
+
13757 {2.8408463, 0.0976691395}, //
+
13758 {2.84122396, 0.0988561735}, //
+
13759 {2.84135008, 0.100000001}, //
+
13760 {2.84126616, 0.101070367}, //
+
13761 {2.84101415, 0.102014817}, //
+
13762 {2.84059453, 0.102833331}, //
+
13763 {2.84000683, 0.103525929}, //
+
13764 {2.83925128, 0.104092591}, //
+
13765 {2.83832788, 0.104533337}, //
+
13766 {2.8372364, 0.104848146}, //
+
13767 {2.83597708, 0.105037034}, //
+
13768 {2.8345499, 0.105099998}, //
+
13769 {2.83307028, 0.105162963}, //
+
13770 {2.83163142, 0.10535185}, //
+
13771 {2.83023334, 0.105666667}, //
+
13772 {2.82887602, 0.106107406}, //
+
13773 {2.82755923, 0.106674075}, //
+
13774 {2.82628322, 0.107366666}, //
+
13775 {2.82504821, 0.108185187}, //
+
13776 {2.82385373, 0.10912963}, //
+
13777 {2.82270002, 0.110200003}, //
+
13778 {2.82162952, 0.111353703}, //
+
13779 {2.82068515, 0.11254815}, //
+
13780 {2.81986666, 0.11378333}, //
+
13781 {2.81917405, 0.115059257}, //
+
13782 {2.81860733, 0.116375923}, //
+
13783 {2.81816673, 0.117733337}, //
+
13784 {2.81785178, 0.119131483}, //
+
13785 {2.81766295, 0.120570369}, //
+
13786 {2.81760001, 0.122050002}, //
+
13787 {2.8183136, 0.12211296}, //
+
13788 {2.81894326, 0.122301854}, //
+
13789 {2.819489, 0.122616664}, //
+
13790 {2.81995058, 0.12305741}, //
+
13791 {2.82032847, 0.123624071}, //
+
13792 {2.82062221, 0.12431667}, //
+
13793 {2.82083201, 0.125135183}, //
+
13794 {2.82095814, 0.126079634}, //
+
13795 {2.8210001, 0.127149999}, //
+
13796 {2.82104206, 0.128303707}, //
+
13797 {2.82116795, 0.129498154}, //
+
13798 {2.82137775, 0.130733326}, //
+
13799 {2.82167149, 0.132009253}, //
+
13800 {2.82204938, 0.13332592}, //
+
13801 {2.8225112, 0.134683326}, //
+
13802 {2.8230567, 0.136081487}, //
+
13803 {2.82368636, 0.137520373}, //
+
13804 {2.82439995, 0.138999999}, //
+
13805 {2.82444143, 0.141224071}, //
+
13806 {2.82456541, 0.143362969}, //
+
13807 {2.82477212, 0.145416662}, //
+
13808 {2.8250618, 0.14738518}, //
+
13809 {2.82543397, 0.149268523}, //
+
13810 {2.82588887, 0.151066661}, //
+
13811 {2.82642651, 0.152779624}, //
+
13812 {2.82704687, 0.154407412}, //
+
13813 {2.82774997, 0.155949995}, //
+
13814 {2.82848454, 0.1574395}, //
+
13815 {2.82917714, 0.158885807}, //
+
13816 {2.82982779, 0.160288885}, //
+
13817 {2.83043647, 0.161648765}, //
+
13818 {2.83100319, 0.162965432}, //
+
13819 {2.83152771, 0.164238885}, //
+
13820 {2.83201051, 0.16546914}, //
+
13821 {2.83245134, 0.166656166}, //
+
13822 {2.83284998, 0.167799994}, //
+
13823 {2.8345499, 0.172900006}, //
+
13824 {2.8345499, 0.172527775}, //
+
13825 {2.8345499, 0.172238275}, //
+
13826 {2.8345499, 0.16803889}, //
+
13827 {2.8345499, 0.167283326}, //
+
13828 {2.8345499, 0.166527778}, //
+
13829 {2.8345499, 0.162750006}, //
+
13830 {2.83457088, 0.162015438}, //
+
13831 {2.83463407, 0.161322832}, //
+
13832 {2.83473897, 0.160672218}, //
+
13833 {2.83488584, 0.16006358}, //
+
13834 {2.83507466, 0.159496918}, //
+
13835 {2.83530545, 0.158972219}, //
+
13836 {2.83557844, 0.15848951}, //
+
13837 {2.83589315, 0.158048764}, //
+
13838 {2.83625007, 0.157649994}, //
+
13839 {2.8366487, 0.157293215}, //
+
13840 {2.83708954, 0.156978399}, //
+
13841 {2.83757234, 0.156705558}, //
+
13842 {2.83809686, 0.156474695}, //
+
13843 {2.83866358, 0.156285807}, //
+
13844 {2.83927226, 0.156138882}, //
+
13845 {2.8399229, 0.156033948}, //
+
13846 {2.84061551, 0.155970991}, //
+
13847 {2.84135008, 0.155949995}, //
+
13848 {2.84286046, 0.155991971}, //
+
13849 {2.84436965, 0.156117901}, //
+
13850 {2.84587789, 0.156327784}, //
+
13851 {2.84738445, 0.156621605}, //
+
13852 {2.84889007, 0.156999379}, //
+
13853 {2.85039449, 0.157461107}, //
+
13854 {2.85189748, 0.158006787}, //
+
13855 {2.85339928, 0.158636421}, //
+
13856 {2.85489988, 0.159349993}, //
+
13857 {2.85638952, 0.159370989}, //
+
13858 {2.85783577, 0.159433946}, //
+
13859 {2.85923886, 0.159538895}, //
+
13860 {2.8605988, 0.159685805}, //
+
13861 {2.86191535, 0.159874693}, //
+
13862 {2.86318898, 0.160105556}, //
+
13863 {2.86441922, 0.160378397}, //
+
13864 {2.86560607, 0.160693213}, //
+
13865 {2.86675, 0.161050007}, //
+
13866 {2.86794639, 0.161364809}, //
+
13867 {2.86926842, 0.161553711}, //
+
13868 {2.87071657, 0.161616668}, //
+
13869 {2.87229085, 0.161553711}, //
+
13870 {2.87399077, 0.161364809}, //
+
13871 {2.87581658, 0.161050007}, //
+
13872 {2.87776852, 0.16060926}, //
+
13873 {2.87984633, 0.160042599}, //
+
13874 {2.88205004, 0.159349993}, //
+
13875 {2.88430548, 0.157912344}, //
+
13876 {2.88656116, 0.156599388}, //
+
13877 {2.8888166, 0.155411109}, //
+
13878 {2.89107227, 0.154347524}, //
+
13879 {2.89332771, 0.153408647}, //
+
13880 {2.89558339, 0.152594447}, //
+
13881 {2.89783883, 0.151904941}, //
+
13882 {2.90009451, 0.151340127}, //
+
13883 {2.90234995, 0.150900006}, //
+
13884 {2.90459514, 0.150564194}, //
+
13885 {2.90679693, 0.150312349}, //
+
13886 {2.90895557, 0.150144443}, //
+
13887 {2.91107106, 0.15006049}, //
+
13888 {2.91314316, 0.15006049}, //
+
13889 {2.91517234, 0.150144443}, //
+
13890 {2.91715813, 0.150312349}, //
+
13891 {2.91910052, 0.150564194}, //
+
13892 {2.921, 0.150900006}, //
+
13893 {2.92274189, 0.15129815}, //
+
13894 {2.92419004, 0.151737034}, //
+
13895 {2.92534447, 0.152216673}, //
+
13896 {2.92620492, 0.152737036}, //
+
13897 {2.92677164, 0.153298154}, //
+
13898 {2.92704439, 0.153899997}, //
+
13899 {2.92702341, 0.154542595}, //
+
13900 {2.9267087, 0.155225933}, //
+
13901 {2.92610002, 0.155949995}, //
+
13902 {2.92610002, 0.159349993}, //
+
13903 {2.92607903, 0.160084561}, //
+
13904 {2.92601609, 0.160777166}, //
+
13905 {2.92591119, 0.161427781}, //
+
13906 {2.92576408, 0.162036419}, //
+
13907 {2.92557526, 0.16260308}, //
+
13908 {2.92534447, 0.16312778}, //
+
13909 {2.92507172, 0.163610488}, //
+
13910 {2.92475677, 0.164051235}, //
+
13911 {2.92440009, 0.164450005}, //
+
13912 {2.92398024, 0.164827779}, //
+
13913 {2.92347646, 0.165205553}, //
+
13914 {2.92288899, 0.165583327}, //
+
13915 {2.92221737, 0.165961117}, //
+
13916 {2.92146182, 0.166338891}, //
+
13917 {2.92062211, 0.166716665}, //
+
13918 {2.91969872, 0.167094439}, //
+
13919 {2.9186914, 0.167472228}, //
+
13920 {2.91759992, 0.167850003}, //
+
13921 {2.91641474, 0.168206796}, //
+
13922 {2.91510367, 0.168521598}, //
+
13923 {2.91366673, 0.168794438}, //
+
13924 {2.91210365, 0.169025302}, //
+
13925 {2.9104147, 0.169214204}, //
+
13926 {2.90860009, 0.169361115}, //
+
13927 {2.90665936, 0.169466048}, //
+
13928 {2.90459251, 0.169529006}, //
+
13929 {2.90240002, 0.169550002}, //
+
13930 {2.8993783, 0.169591352}, //
+
13931 {2.89635801, 0.169715434}, //
+
13932 {2.89333892, 0.169922218}, //
+
13933 {2.89032102, 0.170211732}, //
+
13934 {2.88730431, 0.170583948}, //
+
13935 {2.88428879, 0.171038896}, //
+
13936 {2.8812747, 0.171576545}, //
+
13937 {2.8782618, 0.17219691}, //
+
13938 {2.8752501, 0.172900006}, //
+
13939 {2.87225938, 0.173634574}, //
+
13940 {2.86930919, 0.174327165}, //
+
13941 {2.8664, 0.174977779}, //
+
13942 {2.86353159, 0.175586417}, //
+
13943 {2.86070371, 0.176153094}, //
+
13944 {2.85791659, 0.176677778}, //
+
13945 {2.85517049, 0.177160487}, //
+
13946 {2.85246491, 0.177601233}, //
+
13947 {2.84980011, 0.178000003}, //
+
13948 {2.84511852, 0.178671598}, //
+
13949 {2.84321666, 0.178944439}, //
+
13950 {2.83794999, 0.179700002}, //
+
13951 {2.83797097, 0.179720983}, //
+
13952 {2.83813882, 0.179888889}, //
+
13953 {2.83828568, 0.1800358}, //
+
13954 {2.83870554, 0.180455551}, //
+
13955 {2.84048939, 0.182239503}, //
+
13956 {2.84097219, 0.182722226}, //
+
13957 {2.84474993, 0.186499998}, //
+
13958 {2.84546351, 0.187275931}, //
+
13959 {2.84609318, 0.188092589}, //
+
13960 {2.84663892, 0.188950002}, //
+
13961 {2.84710073, 0.189848155}, //
+
13962 {2.84747839, 0.190787032}, //
+
13963 {2.84777212, 0.191766664}, //
+
13964 {2.84798217, 0.192787036}, //
+
13965 {2.84810805, 0.193848148}, //
+
13966 {2.84815001, 0.194949999}, //
+
13967 {2.84815001, 0.19816111}, //
+
13968 {2.84815001, 0.199147537}, //
+
13969 {2.84815001, 0.200994447}, //
+
13970 {2.84815001, 0.201854944}, //
+
13971 {2.84815001, 0.20267345}, //
+
13972 {2.84815001, 0.207133949}, //
+
13973 {2.84815001, 0.209472224}, //
+
13974 {2.84815001, 0.210494548}, //
+
13975 {2.85169435, 0.217938885}, //
+
13976 {2.85361624, 0.221841618}, //
+
13977 {2.85266113, 0.222100005}, //
+
13978 {2.85128284, 0.222414821}, //
+
13979 {2.85015488, 0.222603709}, //
+
13980 {2.84927773, 0.222666666}, //
+
13981 {2.84865117, 0.222603709}, //
+
13982 {2.84827542, 0.222414821}, //
+
13983 {2.84815001, 0.222100005}, //
+
13984 {2.84815001, 0.221659258}, //
+
13985 {2.84815001, 0.221092597}, //
+
13986 {2.84815001, 0.220400006}, //
+
13987 {2.84815001, 0.218637034}, //
+
13988 {2.84815001, 0.217566669}, //
+
13989 {2.84815001, 0.213599995}, //
+
13990 {2.84815001, 0.212141365}, //
+
13991 {2.84815001, 0.210494548}, //
+
13992 {2.84606242, 0.206109881}, //
+
13993 {2.84097338, 0.194993213}, //
+
13994 {2.83642769, 0.184588894}, //
+
13995 {2.83242536, 0.174896911}, //
+
13996 {2.82896614, 0.165917277}, //
+
13997 {2.82605004, 0.157649994}, //
+
13998 {2.82354188, 0.14994815}, //
+
13999 {2.82128453, 0.14266482}, //
+
14000 {2.81927776, 0.135800004}, //
+
14001 {2.81752157, 0.129353702}, //
+
14002 {2.81601596, 0.123325929}, //
+
14003 {2.81476116, 0.11771667}, //
+
14004 {2.8137567, 0.112525925}, //
+
14005 {2.81300306, 0.107753702}, //
+
14006 {2.8125, 0.103399999}, //
+
14007 {2.81219506, 0.0993604958}, //
+
14008 {2.81201363, 0.0955308676}, //
+
14009 {2.81195545, 0.0919111148}, //
+
14010 {2.81202102, 0.0885012373}, //
+
14011 {2.81220984, 0.0853012353}, //
+
14012 {2.81252217, 0.0823111087}, //
+
14013 {2.812958, 0.079530865}, //
+
14014 {2.81351733, 0.0769604966}, //
+
14015 {2.81419992, 0.0746000037}, //
+
14016 {2.81419992, 0.0610500015}, //
+
14017 {2.81485057, 0.0574296303}, //
+
14018 {2.8152914, 0.0541018508}, //
+
14019 {2.81552219, 0.0510666668}, //
+
14020 {2.81554317, 0.0483240746}, //
+
14021 {2.81535435, 0.0458740741}, //
+
14022 {2.81495547, 0.0437166654}, //
+
14023 {2.81434703, 0.0418518521}, //
+
14024 {2.8135283, 0.0402796306}, //
+
14025 {2.8125, 0.0390000008}, //
+
14026 {2.81135607, 0.0378876552}, //
+
14027 {2.81016922, 0.0368172824}, //
+
14028 {2.80893898, 0.03578889}, //
+
14029 {2.80766535, 0.0348024704}, //
+
14030 {2.8063488, 0.0338580236}, //
+
14031 {2.80498886, 0.0329555571}, //
+
14032 {2.80358577, 0.0320950635}, //
+
14033 {2.80213952, 0.0312765427}, //
+
14034 {2.80064988, 0.0305000003}, //
+
14035 {2.79989505, 0.0304586422}, //
+
14036 {2.79914141, 0.0303345677}, //
+
14037 {2.79838896, 0.0301277786}, //
+
14038 {2.7976377, 0.0298382714}, //
+
14039 {2.79688764, 0.0294660497}, //
+
14040 {2.796139, 0.0290111117}, //
+
14041 {2.79539132, 0.0284734573}, //
+
14042 {2.79464507, 0.0278530866}, //
+
14043 {2.79390001, 0.0271499995}, //
+
14044 {2.7924099, 0.0256179012}, //
+
14045 {2.79096174, 0.0240438264}, //
+
14046 {2.78955555, 0.0224277787}, //
+
14047 {2.78819132, 0.0207697526}, //
+
14048 {2.78686905, 0.0190697536}, //
+
14049 {2.78558898, 0.017327778}, //
+
14050 {2.78435063, 0.0155438269}, //
+
14051 {2.78315425, 0.013717901}, //
+
14052 {2.78200006, 0.0118500004}, //
+
14053 {2.78095055, 0.0098882718}, //
+
14054 {2.78006911, 0.00775864208}, //
+
14055 {2.77935553, 0.0054611112}, //
+
14056 {2.77880979, 0.00299567892}, //
+
14057 {2.77843213, 0.000362345687}, //
+
14058 {2.77822232, -0.00243888889}, //
+
14059 {2.77818036, -0.00540802488}, //
+
14060 {2.77830625, -0.00854506157}, //
+
14061 {2.77859998, -0.0118500004}, //
+
14062 {2.77912474, -0.0153117282}, //
+
14063 {2.77994323, -0.0188969132}, //
+
14064 {2.78105545, -0.0226055551}, //
+
14065 {2.78246164, -0.0264376551}, //
+
14066 {2.78416181, -0.0303932093}, //
+
14067 {2.78615546, -0.0344722234}, //
+
14068 {2.78844333, -0.0386746898}, //
+
14069 {2.79102468, -0.0430006161}, //
+
14070 {2.79390001, -0.0474499986}, //
+
14071 {2.79703641, -0.0524975322}, //
+
14072 {2.80042338, -0.0570845678}, //
+
14073 {2.80406117, -0.0612111129}, //
+
14074 {2.8079493, -0.0648771599}, //
+
14075 {2.81208825, -0.0680827126}, //
+
14076 {2.81647778, -0.0708277747}, //
+
14077 {2.82111788, -0.0731123462}, //
+
14078 {2.82600856, -0.0749364197}, //
+
14079 {2.83115005, -0.0763000026}, //
+
14080 {2.83680439, -0.0773283914}, //
+
14081 {2.84321165, -0.0781469122}, //
+
14082 {2.85037231, -0.0787555575}, //
+
14083 {2.8582859, -0.0791543201}, //
+
14084 {2.86695242, -0.0793432072}, //
+
14085 {2.87637234, -0.0793222189}, //
+
14086 {2.88654494, -0.0790913552}, //
+
14087 {2.89747095, -0.0786506161}, //
+
14088 {2.90914989, -0.0780000016}, //
+
14089 {2.92099452, -0.0773283914}, //
+
14090 {2.93392777, -0.0768246949}, //
+
14091 {2.94794989, -0.0764888898}, //
+
14092 {2.96306109, -0.0763209909}, //
+
14093 {2.97926116, -0.0763209909}, //
+
14094 {2.99655008, -0.0764888898}, //
+
14095 {3.01492786, -0.0768246949}, //
+
14096 {3.0343945, -0.0773283914}, //
+
14097 {3.05495, -0.0780000016}, //
+
14098 {3.0803833, -0.0780000016}, //
+
14099 {3.08810544, -0.0780000016}, //
+
14100 {3.12104988, -0.0780000016}, //
+
14101 {3.12651658, -0.0779790133}, //
+
14102 {3.13160563, -0.0779160485}, //
+
14103 {3.13631678, -0.0778111145}, //
+
14104 {3.14065003, -0.0776641965}, //
+
14105 {3.14460564, -0.0774753094}, //
+
14106 {3.14818335, -0.0772444457}, //
+
14107 {3.1513834, -0.0769716054}, //
+
14108 {3.15420556, -0.0766567886}, //
+
14109 {3.15665007, -0.0763000026}, //
+
14110 {3.15879083, -0.0759222209}, //
+
14111 {3.16067958, -0.0755444467}, //
+
14112 {3.16231656, -0.075166665}, //
+
14113 {3.16370177, -0.0747888908}, //
+
14114 {3.16483521, -0.0744111091}, //
+
14115 {3.16571665, -0.0740333349}, //
+
14116 {3.16634631, -0.0736555532}, //
+
14117 {3.16672397, -0.0732777789}, //
+
14118 {3.16685009, -0.0728999972}, //
+
14119 {3.16676617, -0.072522223}, //
+
14120 {3.16651416, -0.0721444413}, //
+
14121 {3.16609454, -0.0717666671}, //
+
14122 {3.16550684, -0.0713888854}, //
+
14123 {3.16475129, -0.0710111111}, //
+
14124 {3.1638279, -0.0706333369}, //
+
14125 {3.16273642, -0.0702555552}, //
+
14126 {3.16147709, -0.069877781}, //
+
14127 {3.16004992, -0.0694999993}, //
+
14128 {3.15850735, -0.069122225}, //
+
14129 {3.15687966, -0.0687444434}, //
+
14130 {3.15516663, -0.0683666691}, //
+
14131 {3.15336847, -0.0679888874}, //
+
14132 {3.1514852, -0.0676111132}, //
+
14133 {3.14951658, -0.0672333315}, //
+
14134 {3.14746284, -0.0668555573}, //
+
14135 {3.14532399, -0.0664777756}, //
+
14136 {3.14310002, -0.0661000013}, //
+
14137 {3.14088583, -0.0657432079}, //
+
14138 {3.13875437, -0.0654283985}, //
+
14139 {3.13670564, -0.0651555583}, //
+
14140 {3.1347394, -0.0649246946}, //
+
14141 {3.13285613, -0.0647358}, //
+
14142 {3.13105559, -0.0645888895}, //
+
14143 {3.12933755, -0.0644839481}, //
+
14144 {3.12770247, -0.0644209906}, //
+
14145 {3.12614989, -0.0644000024}, //
+
14146 {3.12240005, -0.0644000024}, //
+
14147 {3.12148333, -0.0644000024}, //
+
14148 {3.12073326, -0.0644000024}, //
+
14149 {3.11940002, -0.0644000024}, //
+
14150 {3.12039757, -0.0630567893}, //
+
14151 {3.12095857, -0.0623012334}, //
+
14152 {3.1233902, -0.0590271614}, //
+
14153 {3.12444997, -0.057599999}, //
+
14154 {3.1256876, -0.0561413579}, //
+
14155 {3.12713385, -0.0547654331}, //
+
14156 {3.12878895, -0.0534722209}, //
+
14157 {3.13065243, -0.0522617288}, //
+
14158 {3.13272476, -0.0511339493}, //
+
14159 {3.13500547, -0.0500888899}, //
+
14160 {3.13749504, -0.0491265431}, //
+
14161 {3.14019322, -0.0482469127}, //
+
14162 {3.14310002, -0.0474499986}, //
+
14163 {3.14454818, -0.0465790108}, //
+
14164 {3.14587045, -0.045454938}, //
+
14165 {3.14706659, -0.0440777764}, //
+
14166 {3.14813709, -0.0424475297}, //
+
14167 {3.14908147, -0.040564198}, //
+
14168 {3.14989996, -0.0384277776}, //
+
14169 {3.15059257, -0.0360382721}, //
+
14170 {3.15115929, -0.0333956778}, //
+
14171 {3.15159988, -0.0305000003}, //
+
14172 {3.1519568, -0.0274888892}, //
+
14173 {3.15227151, -0.024477778}, //
+
14174 {3.1525445, -0.0214666668}, //
+
14175 {3.15277529, -0.0184555557}, //
+
14176 {3.15296412, -0.0154444445}, //
+
14177 {3.15311122, -0.0124333333}, //
+
14178 {3.15321612, -0.00942222215}, //
+
14179 {3.15327907, -0.00641111098}, //
+
14180 {3.15330005, -0.00340000005}, //
+
14181 {3.15330005, 0.00279259263}, //
+
14182 {3.15330005, 0.00601666654}, //
+
14183 {3.15330005, 0.00932592619}, //
+
14184 {3.15330005, 0.0271499995}, //
+
14185 {3.15243959, 0.0296358019}, //
+
14186 {3.15136909, 0.0325821005}, //
+
14187 {3.15008879, 0.0359888896}, //
+
14188 {3.14859867, 0.0398561731}, //
+
14189 {3.14689875, 0.0441839509}, //
+
14190 {3.14498878, 0.048972223}, //
+
14191 {3.14286923, 0.0542209893}, //
+
14192 {3.14053941, 0.0599302463}, //
+
14193 {3.13800001, 0.0661000013}, //
+
14194 {3.13532472, 0.0725104958}, //
+
14195 {3.1325655, 0.0789197534}, //
+
14196 {3.12972212, 0.0853277743}, //
+
14197 {3.12679505, 0.0917345658}, //
+
14198 {3.12378407, 0.0981401205}, //
+
14199 {3.12068892, 0.104544446}, //
+
14200 {3.11750984, 0.110947534}, //
+
14201 {3.11424685, 0.117349386}, //
+
14202 {3.11089993, 0.123750001}, //
+
14203 {3.10761547, 0.129972219}, //
+
14204 {3.10453939, 0.135816664}, //
+
14205 {3.10167217, 0.141283333}, //
+
14206 {3.09901357, 0.146372229}, //
+
14207 {3.09656358, 0.151083335}, //
+
14208 {3.0943222, 0.155416667}, //
+
14209 {3.09228945, 0.159372225}, //
+
14210 {3.09046555, 0.162949994}, //
+
14211 {3.08885002, 0.166150004}, //
+
14212 {3.08819938, 0.168573454}, //
+
14213 {3.08775854, 0.171332717}, //
+
14214 {3.08752775, 0.174427778}, //
+
14215 {3.08750677, 0.177858636}, //
+
14216 {3.0876956, 0.181625307}, //
+
14217 {3.08809447, 0.185727775}, //
+
14218 {3.08870316, 0.190166056}, //
+
14219 {3.08952165, 0.19494012}, //
+
14220 {3.09054995, 0.200049996}, //
+
14221 {3.09166241, 0.205243826}, //
+
14222 {3.09273267, 0.210269749}, //
+
14223 {3.09376121, 0.215127781}, //
+
14224 {3.09474754, 0.219817907}, //
+
14225 {3.09569192, 0.224340126}, //
+
14226 {3.09659433, 0.228694439}, //
+
14227 {3.09745502, 0.232880861}, //
+
14228 {3.09827352, 0.236899376}, //
+
14229 {3.09905005, 0.24075}, //
+
14230 {3.09909129, 0.241463587}, //
+
14231 {3.09921551, 0.242093205}, //
+
14232 {3.09942222, 0.242638886}, //
+
14233 {3.09971166, 0.243100613}, //
+
14234 {3.10008407, 0.243478402}, //
+
14235 {3.10053897, 0.243772224}, //
+
14236 {3.1010766, 0.243982092}, //
+
14237 {3.10169697, 0.244108021}, //
+
14238 {3.10240006, 0.244149998}, //
+
14239 {3.10336471, 0.248418525}, //
+
14240 {3.10474825, 0.253690749}, //
+
14241 {3.10654998, 0.259966671}, //
+
14242 {3.10877037, 0.267246306}, //
+
14243 {3.11140919, 0.275529623}, //
+
14244 {3.11446667, 0.284816653}, //
+
14245 {3.11794257, 0.295107394}, //
+
14246 {3.12183714, 0.306401849}, //
+
14247 {3.12614989, 0.318699986}, //
+
14248 {3.13067222, 0.331490129}, //
+
14249 {3.13519454, 0.344238281}, //
+
14250 {3.13971663, 0.356944442}, //
+
14251 {3.14423895, 0.369608641}, //
+
14252 {3.14876103, 0.382230878}, //
+
14253 {3.15328336, 0.394811124}, //
+
14254 {3.15780544, 0.407349378}, //
+
14255 {3.16232777, 0.41984567}, //
+
14256 {3.16685009, 0.432300001}, //
+
14257 {3.17120433, 0.444251865}, //
+
14258 {3.17522287, 0.455240726}, //
+
14259 {3.17890549, 0.465266675}, //
+
14260 {3.18225241, 0.474329621}, //
+
14261 {3.18526363, 0.482429624}, //
+
14262 {3.18793893, 0.489566654}, //
+
14263 {3.19027829, 0.495740741}, //
+
14264 {3.1922822, 0.500951827}, //
+
14265 {3.19394994, 0.505200028}, //
+
14266 {3.19709682, 0.508713603}, //
+
14267 {3.2004931, 0.513232112}, //
+
14268 {3.20413899, 0.518755555}, //
+
14269 {3.20803404, 0.525283933}, //
+
14270 {3.21217847, 0.532817304}, //
+
14271 {3.21657228, 0.54135555}, //
+
14272 {3.22121549, 0.55089879}, //
+
14273 {3.22610807, 0.561446905}, //
+
14274 {3.23125005, 0.573000014}, //
+
14275 {3.23507953, 0.582044423}, //
+
14276 {3.23903513, 0.591088891}, //
+
14277 {3.24311662, 0.600133359}, //
+
14278 {3.24458098, 0.603280902}, //
+
14279 {3.24484992, 0.603550017}, //
+
14280 {3.24475074, 0.603646219}, //
+
14281 {3.24732399, 0.609177768}, //
+
14282 {3.25165749, 0.618222237}, //
+
14283 {3.25611663, 0.627266645}, //
+
14284 {3.26070189, 0.636311114}, //
+
14285 {3.26541305, 0.645355582}, //
+
14286 {3.27025008, 0.654399991}, //
+
14287 {3.27500319, 0.663109243}, //
+
14288 {3.27946234, 0.671148121}, //
+
14289 {3.28362775, 0.678516686}, //
+
14290 {3.28731751, 0.684899986}, //
+
14291 {3.28755689, 0.684899986}, //
+
14292 {3.2878716, 0.684899986}, //
+
14293 {3.28814435, 0.684899986}, //
+
14294 {3.28892088, 0.684899986}, //
+
14295 {3.28898406, 0.684899986}, //
+
14296 {3.29060006, 0.684899986}, //
+
14297 {3.29095674, 0.684920967}, //
+
14298 {3.29127169, 0.684983969}, //
+
14299 {3.29154444, 0.685088873}, //
+
14300 {3.29177523, 0.685235798}, //
+
14301 {3.29196429, 0.685424685}, //
+
14302 {3.29211116, 0.685655534}, //
+
14303 {3.29221606, 0.685928404}, //
+
14304 {3.29227901, 0.686243236}, //
+
14305 {3.29229999, 0.686600029}, //
+
14306 {3.29229999, 0.686956763}, //
+
14307 {3.29229999, 0.687271595}, //
+
14308 {3.29229999, 0.687544465}, //
+
14309 {3.29229999, 0.687775314}, //
+
14310 {3.29229999, 0.688300014}, //
+
14311 {3.29196429, 0.687964201}, //
+
14312 {3.29177523, 0.687775314}, //
+
14313 {3.29154444, 0.687544465}, //
+
14314 {3.29095674, 0.686956763}, //
+
14315 {3.29060006, 0.686600029}, //
+
14316 {3.29020119, 0.686243236}, //
+
14317 {3.28976059, 0.685928404}, //
+
14318 {3.28927779, 0.685655534}, //
+
14319 {3.28875303, 0.685424685}, //
+
14320 {3.28818631, 0.685235798}, //
+
14321 {3.28757787, 0.685088873}, //
+
14322 {3.28741097, 0.685061991}, //
+
14323 {3.28749943, 0.685214818}, //
+
14324 {3.29107714, 0.691242576}, //
+
14325 {3.29436111, 0.69660002}, //
+
14326 {3.29735112, 0.701287031}, //
+
14327 {3.30004764, 0.705303729}, //
+
14328 {3.30244994, 0.708649993}, //
+
14329 {3.30408645, 0.712478995}, //
+
14330 {3.30597353, 0.716432691}, //
+
14331 {3.30811119, 0.720511138}, //
+
14332 {3.31049943, 0.72471422}, //
+
14333 {3.31313825, 0.729041994}, //
+
14334 {3.31602788, 0.733494461}, //
+
14335 {3.31916785, 0.73807162}, //
+
14336 {3.32255864, 0.742773473}, //
+
14337 {3.32620001, 0.747600019}, //
+
14338 {3.33000875, 0.75256294}, //
+
14339 {3.33390117, 0.757651865}, //
+
14340 {3.33787775, 0.762866676}, //
+
14341 {3.34193826, 0.768207431}, //
+
14342 {3.34608269, 0.773674071}, //
+
14343 {3.35031104, 0.779266655}, //
+
14344 {3.35462356, 0.784985185}, //
+
14345 {3.35901976, 0.790829659}, //
+
14346 {3.36350012, 0.796800017}, //
+
14347 {3.36795926, 0.802738905}, //
+
14348 {3.37229252, 0.808511138}, //
+
14349 {3.37649989, 0.814116657}, //
+
14350 {3.38058138, 0.819555581}, //
+
14351 {3.38453698, 0.82482779}, //
+
14352 {3.3883667, 0.829933345}, //
+
14353 {3.39207029, 0.834872246}, //
+
14354 {3.39564824, 0.839644432}, //
+
14355 {3.39910007, 0.844250023}, //
+
14356 {3.40238452, 0.848688245}, //
+
14357 {3.4054606, 0.85295862}, //
+
14358 {3.40832782, 0.857061088}, //
+
14359 {3.41098642, 0.86099565}, //
+
14360 {3.41343641, 0.864762366}, //
+
14361 {3.41567779, 0.868361115}, //
+
14362 {3.41771054, 0.871791959}, //
+
14363 {3.41953468, 0.875054955}, //
+
14364 {3.42114997, 0.878149986}, //
+
14365 {3.42357349, 0.883048773}, //
+
14366 {3.42633271, 0.888700604}, //
+
14367 {3.42942786, 0.895105541}, //
+
14368 {3.43285871, 0.902263582}, //
+
14369 {3.43662524, 0.910174668}, //
+
14370 {3.44072771, 0.918838918}, //
+
14371 {3.44516611, 0.928256154}, //
+
14372 {3.4499402, 0.938426554}, //
+
14373 {3.45504999, 0.949349999}, //
+
14374 {3.46030617, 0.960743845}, //
+
14375 {3.46551919, 0.972303092}, //
+
14376 {3.47068882, 0.984027803}, //
+
14377 {3.47581553, 0.995917916}, //
+
14378 {3.48089886, 1.00797343}, //
+
14379 {3.48593879, 1.02019441}, //
+
14380 {3.48868084, 1.02699101}, //
+
14381 {3.48888707, 1.02726603}, //
+
14382 {3.48895001, 1.02734995}, //
+
14383 {3.48888111, 1.0274874}, //
+
14384 {3.4909358, 1.03258085}, //
+
14385 {3.49588943, 1.04513276}, //
+
14386 {3.50079989, 1.05785}, //
+
14387 {3.50563693, 1.07040989}, //
+
14388 {3.51034808, 1.08246732}, //
+
14389 {3.51448441, 1.09289122}, //
+
14390 {3.51609993, 1.09514999}, //
+
14391 {3.51609993, 1.09691381}, //
+
14392 {3.51939249, 1.10507464}, //
+
14393 {3.52372599, 1.11562467}, //
+
14394 {3.52793336, 1.12567222}, //
+
14395 {3.53201485, 1.13521731}, //
+
14396 {3.53597045, 1.14425993}, //
+
14397 {3.53979993, 1.15279996}, //
+
14398 {3.54126906, 1.15573764}, //
+
14399 {3.54265428, 1.15850616}, //
+
14400 {3.54395556, 1.16110551}, //
+
14401 {3.54517293, 1.16353583}, //
+
14402 {3.54630613, 1.16579688}, //
+
14403 {3.54735565, 1.16788888}, //
+
14404 {3.54832101, 1.16981173}, //
+
14405 {3.54920244, 1.17156541}, //
+
14406 {3.54999995, 1.17314994}, //
+
14407 {3.55238152, 1.179371}, //
+
14408 {3.55501485, 1.18596733}, //
+
14409 {3.55789995, 1.19293892}, //
+
14410 {3.56103706, 1.20028579}, //
+
14411 {3.56442595, 1.20800805}, //
+
14412 {3.5680666, 1.21610558}, //
+
14413 {3.57195926, 1.22457838}, //
+
14414 {3.57610369, 1.23342657}, //
+
14415 {3.58049989, 1.24265003}, //
+
14416 {3.58504248, 1.25203025}, //
+
14417 {3.58962584, 1.26132655}, //
+
14418 {3.59424996, 1.27053893}, //
+
14419 {3.59891486, 1.27966726}, //
+
14420 {3.60362029, 1.28871179}, //
+
14421 {3.60836673, 1.29767227}, //
+
14422 {3.6131537, 1.30654871}, //
+
14423 {3.61798143, 1.31534135}, //
+
14424 {3.62284994, 1.32404995}, //
+
14425 {3.62760377, 1.33244443}, //
+
14426 {3.63206482, 1.34029448}, //
+
14427 {3.63623333, 1.34759998}, //
+
14428 {3.6401093, 1.35436106}, //
+
14429 {3.64369249, 1.36057782}, //
+
14430 {3.64698339, 1.36625004}, //
+
14431 {3.6499815, 1.37137783}, //
+
14432 {3.65268707, 1.37596107}, //
+
14433 {3.65510011, 1.38}, //
+
14434 {3.65769076, 1.38357592}, //
+
14435 {3.66095185, 1.38828146}, //
+
14436 {3.66488338, 1.39411664}, //
+
14437 {3.66948509, 1.40108144}, //
+
14438 {3.67475748, 1.40917587}, //
+
14439 {3.68070006, 1.41840005}, //
+
14440 {3.68731308, 1.42875373}, //
+
14441 {3.69459629, 1.44023705}, //
+
14442 {3.70254993, 1.45284998}, //
+
14443 {3.71094322, 1.46616423}, //
+
14444 {3.71954513, 1.47972906}, //
+
14445 {3.72835565, 1.49354446}, //
+
14446 {3.73737478, 1.50761044}, //
+
14447 {3.74660254, 1.52192712}, //
+
14448 {3.7560389, 1.53649449}, //
+
14449 {3.76568389, 1.55131233}, //
+
14450 {3.77553773, 1.56638086}, //
+
14451 {3.78559995, 1.58169997}, //
+
14452 {3.79565191, 1.59698761}, //
+
14453 {3.80545187, 1.61193955}, //
+
14454 {3.81500006, 1.62655556}, //
+
14455 {3.82429624, 1.64083576}, //
+
14456 {3.83334064, 1.65478027}, //
+
14457 {3.84213328, 1.66838884}, //
+
14458 {3.85067415, 1.68166173}, //
+
14459 {3.85896301, 1.69459879}, //
+
14460 {3.8670001, 1.70720005}, //
+
14461 {3.87455559, 1.71898401}, //
+
14462 {3.88140011, 1.72946918}, //
+
14463 {3.88753343, 1.73865557}, //
+
14464 {3.89295554, 1.74654317}, //
+
14465 {3.89766669, 1.7531321}, //
+
14466 {3.90166664, 1.75842226}, //
+
14467 {3.90495563, 1.76241362}, //
+
14468 {3.90753341, 1.7651062}, //
+
14469 {3.90939999, 1.7665}, //
+
14470 {3.91019702, 1.76715064}, //
+
14471 {3.91107655, 1.76759136}, //
+
14472 {3.9120388, 1.76782227}, //
+
14473 {3.91308403, 1.76784325}, //
+
14474 {3.91421175, 1.7676543}, //
+
14475 {3.9154222, 1.76725554}, //
+
14476 {3.91671538, 1.76664686}, //
+
14477 {3.9180913, 1.76582837}, //
+
14478 {3.91954994, 1.76479995}, //
+
14479 {3.92106104, 1.76353085}, //
+
14480 {3.92257214, 1.7619679}, //
+
14481 {3.92408323, 1.76011109}, //
+
14482 {3.92559433, 1.75796044}, //
+
14483 {3.92710567, 1.75551605}, //
+
14484 {3.92861676, 1.75277781}, //
+
14485 {3.93012786, 1.74974573}, //
+
14486 {3.93163896, 1.74641979}, //
+
14487 {3.93315005, 1.7428}, //
+
14488 {3.93465066, 1.7412889}, //
+
14489 {3.93615246, 1.7397778}, //
+
14490 {3.93765545, 1.73826671}, //
+
14491 {3.93915987, 1.73675561}, //
+
14492 {3.94066548, 1.73524439}, //
+
14493 {3.94217229, 1.7337333}, //
+
14494 {3.94368029, 1.7322222}, //
+
14495 {3.94518948, 1.7307111}, //
+
14496 {3.9467001, 1.72920001}, //
+
14497 {3.94832587, 1.72574937}, //
+
14498 {3.95020366, 1.72141981}, //
+
14499 {3.95233345, 1.71621108}, //
+
14500 {3.95471478, 1.71012342}, //
+
14501 {3.95734811, 1.70315683}, //
+
14502 {3.96023345, 1.69531107}, //
+
14503 {3.96337032, 1.68658638}, //
+
14504 {3.9667592, 1.67698276}, //
+
14505 {3.97040009, 1.66649997}, //
+
14506 {3.97415614, 1.65543091}, //
+
14507 {3.97786903, 1.64406788}, //
+
14508 {3.98153877, 1.63241112}, //
+
14509 {3.98516536, 1.62046051}, //
+
14510 {3.98874879, 1.60821605}, //
+
14511 {3.99228883, 1.59567773}, //
+
14512 {3.99578571, 1.58284569}, //
+
14513 {3.99923944, 1.56971979}, //
+
14514 {4.00264978, 1.55630004}, //
+
14515 {4.00593376, 1.54290128}, //
+
14516 {4.00900793, 1.52983832}, //
+
14517 {4.01187229, 1.51711106}, //
+
14518 {4.01452637, 1.50471973}, //
+
14519 {4.01697111, 1.49266422}, //
+
14520 {4.01920557, 1.4809444}, //
+
14521 {4.02123022, 1.4695605}, //
+
14522 {4.02304506, 1.45851231}, //
+
14523 {4.0246501, 1.44780004}, //
+
14524 {4.02704191, 1.43080366}, //
+
14525 {4.02968454, 1.41297042}, //
+
14526 {4.03257799, 1.39429998}, //
+
14527 {4.03572178, 1.37479258}, //
+
14528 {4.03911591, 1.3544482}, //
+
14529 {4.04257536, 1.33434582}, //
+
14530 {4.04330015, 1.33420002}, //
+
14531 {4.04527235, 1.33380127}, //
+
14532 {4.04741096, 1.33336055}, //
+
14533 {4.04971647, 1.33287776}, //
+
14534 {4.05218887, 1.33235312}, //
+
14535 {4.05482769, 1.33178639}, //
+
14536 {4.0576334, 1.33117783}, //
+
14537 {4.06060553, 1.33052719}, //
+
14538 {4.06374454, 1.32983458}, //
+
14539 {4.06704998, 1.32910001}, //
+
14540 {4.07041836, 1.32839692}, //
+
14541 {4.0737462, 1.32777655}, //
+
14542 {4.07703352, 1.32723892}, //
+
14543 {4.08027983, 1.3267839}, //
+
14544 {4.08348513, 1.32641172}, //
+
14545 {4.08664989, 1.32612216}, //
+
14546 {4.08977413, 1.32591546}, //
+
14547 {4.09285736, 1.32579136}, //
+
14548 {4.09590006, 1.32574999}, //
+
14549 {4.10002232, 1.32577097}, //
+
14550 {4.10485554, 1.32583392}, //
+
14551 {4.1104002, 1.32593894}, //
+
14552 {4.11665535, 1.32608581}, //
+
14553 {4.12362242, 1.32627463}, //
+
14554 {4.13129997, 1.32650554}, //
+
14555 {4.13968897, 1.32677841}, //
+
14556 {4.14878893, 1.32709324}, //
+
14557 {4.15859985, 1.32745004}, //
+
14558 {4.16858912, 1.3278482}, //
+
14559 {4.17819977, 1.32828701}, //
+
14560 {4.18743324, 1.3287667}, //
+
14561 {4.19628906, 1.32928705}, //
+
14562 {4.20476675, 1.32984817}, //
+
14563 {4.21286678, 1.33045006}, //
+
14564 {4.22058868, 1.3310926}, //
+
14565 {4.22793341, 1.3317759}, //
+
14566 {4.2349, 1.33249998}, //
+
14567 {4.23854065, 1.33331788}, //
+
14568 {4.24192953, 1.33426046}, //
+
14569 {4.24506664, 1.33532774}, //
+
14570 {4.24795198, 1.33651972}, //
+
14571 {4.25058508, 1.33783638}, //
+
14572 {4.25296688, 1.33927774}, //
+
14573 {4.25509644, 1.3408438}, //
+
14574 {4.25697422, 1.34253454}, //
+
14575 {4.25860023, 1.34434998}, //
+
14576 {4.26006937, 1.34625983}, //
+
14577 {4.26145411, 1.34821177}, //
+
14578 {4.26275539, 1.35020554}, //
+
14579 {4.26397276, 1.3522414}, //
+
14580 {4.2651062, 1.3543191}, //
+
14581 {4.26615572, 1.35643888}, //
+
14582 {4.26712084, 1.35860062}, //
+
14583 {4.26800251, 1.36080432}, //
+
14584 {4.26879978, 1.36304998}, //
+
14585 {4.26884174, 1.36522222}, //
+
14586 {4.26896811, 1.36722779}, //
+
14587 {4.26917791, 1.36906672}, //
+
14588 {4.26947165, 1.37073886}, //
+
14589 {4.2698493, 1.37224448}, //
+
14590 {4.27031088, 1.37358332}, //
+
14591 {4.27085686, 1.3747555}, //
+
14592 {4.27148628, 1.37576115}, //
+
14593 {4.27220011, 1.37660003}, //
+
14594 {4.27386808, 1.3774389}, //
+
14595 {4.27587175, 1.37844443}, //
+
14596 {4.27821112, 1.37961662}, //
+
14597 {4.28088665, 1.38095558}, //
+
14598 {4.2838974, 1.38246107}, //
+
14599 {4.28724432, 1.38413334}, //
+
14600 {4.29092693, 1.38597226}, //
+
14601 {4.29494572, 1.38797772}, //
+
14602 {4.29930019, 1.39014995}, //
+
14603 {4.30670786, 1.39254141}, //
+
14604 {4.31386566, 1.39518213}, //
+
14605 {4.32077217, 1.39807224}, //
+
14606 {4.32742834, 1.40121174}, //
+
14607 {4.33383417, 1.40460062}, //
+
14608 {4.33998871, 1.40823889}, //
+
14609 {4.34589338, 1.41212654}, //
+
14610 {4.35154676, 1.41626358}, //
+
14611 {4.35694981, 1.42065001}, //
+
14612 {4.35770559, 1.42069197}, //
+
14613 {4.3584609, 1.42081785}, //
+
14614 {4.35921669, 1.42102778}, //
+
14615 {4.359972, 1.42132163}, //
+
14616 {4.36072779, 1.4216994}, //
+
14617 {4.3614831, 1.4221611}, //
+
14618 {4.36223888, 1.42270684}, //
+
14619 {4.36299467, 1.42333639}, //
+
14620 {4.36374998, 1.42404997}, //
+
14621 {4.36829281, 1.42707157}, //
+
14622 {4.37287569, 1.43009198}, //
+
14623 {4.37750006, 1.43311107}, //
+
14624 {4.38216496, 1.43612897}, //
+
14625 {4.38687038, 1.43914568}, //
+
14626 {4.39161682, 1.44216108}, //
+
14627 {4.39640379, 1.44517529}, //
+
14628 {4.40123129, 1.4481883}, //
+
14629 {4.4060998, 1.45120001}, //
+
14630 {4.41085386, 1.45408583}, //
+
14631 {4.41531467, 1.45672095}, //
+
14632 {4.41948318, 1.45910561}, //
+
14633 {4.42335939, 1.46123946}, //
+
14634 {4.42694283, 1.46312284}, //
+
14635 {4.43023348, 1.46475554}, //
+
14636 {4.43323135, 1.46613765}, //
+
14637 {4.43593693, 1.46726918}, //
+
14638 {4.4383502, 1.46815002}, //
+
14639 {4.43155003, 1.43764997}, //
+
14640 {4.43150806, 1.43762898}, //
+
14641 {4.43138218, 1.43756604}, //
+
14642 {4.43117237, 1.43746114}, //
+
14643 {4.43050051, 1.43712533}, //
+
14644 {4.43003893, 1.43689442}, //
+
14645 {4.42949343, 1.43662155}, //
+
14646 {4.42886353, 1.43630683}, //
+
14647 {4.42815018, 1.43595004}, //
+
14648 {4.42737341, 1.43557227}, //
+
14649 {4.42655516, 1.43519449}, //
+
14650 {4.42569447, 1.43481672}, //
+
14651 {4.42479181, 1.43443894}, //
+
14652 {4.42384768, 1.43406117}, //
+
14653 {4.4228611, 1.43368328}, //
+
14654 {4.42183256, 1.4333055}, //
+
14655 {4.42076254, 1.43292773}, //
+
14656 {4.41965008, 1.43254995}, //
+
14657 {4.41854811, 1.4321512}, //
+
14658 {4.41748714, 1.43171048}, //
+
14659 {4.41646671, 1.4312278}, //
+
14660 {4.41548681, 1.43070304}, //
+
14661 {4.41454792, 1.43013644}, //
+
14662 {4.41365004, 1.42952776}, //
+
14663 {4.41279268, 1.42887712}, //
+
14664 {4.41197586, 1.42818451}, //
+
14665 {4.41120005, 1.42744994}, //
+
14666 {4.40902758, 1.42661107}, //
+
14667 {4.407022, 1.42560554}, //
+
14668 {4.40518332, 1.42443335}, //
+
14669 {4.40351105, 1.42309439}, //
+
14670 {4.40200567, 1.4215889}, //
+
14671 {4.40066671, 1.41991663}, //
+
14672 {4.39949465, 1.41807783}, //
+
14673 {4.398489, 1.41607225}, //
+
14674 {4.39764977, 1.41390002}, //
+
14675 {4.39613867, 1.41234696}, //
+
14676 {4.39462757, 1.41070986}, //
+
14677 {4.39311647, 1.40898883}, //
+
14678 {4.39160538, 1.407184}, //
+
14679 {4.39009428, 1.40529501}, //
+
14680 {4.38858318, 1.40332222}, //
+
14681 {4.38707209, 1.40126538}, //
+
14682 {4.38556099, 1.39912474}, //
+
14683 {4.38404989, 1.39690006}, //
+
14684 {4.38254929, 1.39472842}, //
+
14685 {4.38104773, 1.39272463}, //
+
14686 {4.37954426, 1.39088893}, //
+
14687 {4.37804031, 1.38922095}, //
+
14688 {4.37653446, 1.38772094}, //
+
14689 {4.37502766, 1.3863889}, //
+
14690 {4.3735199, 1.3852247}, //
+
14691 {4.37201071, 1.38422835}, //
+
14692 {4.37050009, 1.38339996}, //
+
14693 {4.36667061, 1.38182592}, //
+
14694 {4.36271477, 1.38012588}, //
+
14695 {4.35863352, 1.37829995}, //
+
14696 {4.35442591, 1.37634814}, //
+
14697 {4.35009241, 1.37427032}, //
+
14698 {4.34563351, 1.37206662}, //
+
14699 {4.34104824, 1.36973703}, //
+
14700 {4.33633709, 1.36728144}, //
+
14701 {4.33150005, 1.36469996}, //
+
14702 {4.32675695, 1.36208761}, //
+
14703 {4.32230473, 1.35951734}, //
+
14704 {4.31814432, 1.35698891}, //
+
14705 {4.31427526, 1.35450244}, //
+
14706 {4.31069756, 1.35205805}, //
+
14707 {4.30741119, 1.34965551}, //
+
14708 {4.30441618, 1.34729505}, //
+
14709 {4.30171251, 1.34497654}, //
+
14710 {4.29930019, 1.3427}, //
+
14711 {4.29605865, 1.34041297}, //
+
14712 {4.29235697, 1.33808517}, //
+
14713 {4.28819466, 1.33571672}, //
+
14714 {4.28357172, 1.33330739}, //
+
14715 {4.27848816, 1.3308574}, //
+
14716 {4.27294445, 1.32836664}, //
+
14717 {4.26694012, 1.32583523}, //
+
14718 {4.26047516, 1.32326293}, //
+
14719 {4.25355005, 1.32064998}, //
+
14720 {4.24658251, 1.31812096}, //
+
14721 {4.23999214, 1.31580067}, //
+
14722 {4.233778, 1.31368887}, //
+
14723 {4.22794008, 1.31178582}, //
+
14724 {4.22247887, 1.31009138}, //
+
14725 {4.21739435, 1.30860555}, //
+
14726 {4.21268654, 1.30732834}, //
+
14727 {4.20835495, 1.30625987}, //
+
14728 {4.20440006, 1.30540001}, //
+
14729 {4.20297289, 1.30535805}, //
+
14730 {4.20171356, 1.30523205}, //
+
14731 {4.20062208, 1.30502224}, //
+
14732 {4.19969893, 1.30472839}, //
+
14733 {4.19894314, 1.30435061}, //
+
14734 {4.19835567, 1.30388892}, //
+
14735 {4.19793558, 1.30334318}, //
+
14736 {4.19768381, 1.30271363}, //
+
14737 {4.19759989, 1.30200005}, //
+
14738 {4.19768333, 1.3012234}, //
+
14739 {4.1979332, 1.30040491}, //
+
14740 {4.19834995, 1.29954445}, //
+
14741 {4.19893312, 1.29864192}, //
+
14742 {4.19968319, 1.29769754}, //
+
14743 {4.20060015, 1.29671109}, //
+
14744 {4.20168352, 1.29568267}, //
+
14745 {4.20293331, 1.29461229}, //
+
14746 {4.20434999, 1.29349995}, //
+
14747 {4.2058816, 1.2924192}, //
+
14748 {4.20745373, 1.29142094}, //
+
14749 {4.20906687, 1.29050553}, //
+
14750 {4.21072054, 1.28967285}, //
+
14751 {4.21241474, 1.28892279}, //
+
14752 {4.21414995, 1.28825557}, //
+
14753 {4.21592569, 1.28767097}, //
+
14754 {4.21774244, 1.2871691}, //
+
14755 {4.2196002, 1.28674996}, //
+
14756 {4.22150993, 1.28639317}, //
+
14757 {4.22346163, 1.28607845}, //
+
14758 {4.22545576, 1.28580558}, //
+
14759 {4.22749138, 1.28557467}, //
+
14760 {4.22956896, 1.28538585}, //
+
14761 {4.23168898, 1.28523886}, //
+
14762 {4.23385048, 1.28513396}, //
+
14763 {4.23605442, 1.28507102}, //
+
14764 {4.23829985, 1.28505003}, //
+
14765 {4.23994684, 1.28511238}, //
+
14766 {4.24188757, 1.28529942}, //
+
14767 {4.24412203, 1.28561115}, //
+
14768 {4.2466507, 1.28604758}, //
+
14769 {4.24947262, 1.2866087}, //
+
14770 {4.25258875, 1.28729439}, //
+
14771 {4.25599861, 1.28810489}, //
+
14772 {4.25970268, 1.28904009}, //
+
14773 {4.26370001, 1.29009998}, //
+
14774 {4.26786566, 1.29125428}, //
+
14775 {4.27207279, 1.29245067}, //
+
14776 {4.27632236, 1.29368889}, //
+
14777 {4.28061342, 1.29496908}, //
+
14778 {4.28494692, 1.29629135}, //
+
14779 {4.28932238, 1.29765558}, //
+
14780 {4.29373932, 1.29906178}, //
+
14781 {4.2981987, 1.30050993}, //
+
14782 {4.30270004, 1.30200005}, //
+
14783 {4.307055, 1.30346847}, //
+
14784 {4.31107521, 1.30485189}, //
+
14785 {4.31476116, 1.30614996}, //
+
14786 {4.31811237, 1.30736291}, //
+
14787 {4.32112885, 1.30849075}, //
+
14788 {4.32381105, 1.30953336}, //
+
14789 {4.32615852, 1.31049073}, //
+
14790 {4.32817173, 1.31136298}, //
+
14791 {4.3298502, 1.31215}, //
+
14792 {4.33210564, 1.31433272}, //
+
14793 {4.33436108, 1.31634748}, //
+
14794 {4.33661652, 1.31819439}, //
+
14795 {4.33887243, 1.31987345}, //
+
14796 {4.34112787, 1.32138455}, //
+
14797 {4.34338331, 1.3227278}, //
+
14798 {4.34563875, 1.32390308}, //
+
14799 {4.34789467, 1.32491052}, //
+
14800 {4.35015011, 1.32574999}, //
+
14801 {4.35164022, 1.32577097}, //
+
14802 {4.35308838, 1.32583392}, //
+
14803 {4.35449457, 1.32593894}, //
+
14804 {4.3558588, 1.32608581}, //
+
14805 {4.35718107, 1.32627463}, //
+
14806 {4.3584609, 1.32650554}, //
+
14807 {4.35969925, 1.32677841}, //
+
14808 {4.36089563, 1.32709324}, //
+
14809 {4.36205006, 1.32745004}, //
+
14810 {4.36312056, 1.3278482}, //
+
14811 {4.36406469, 1.32828701}, //
+
14812 {4.36488342, 1.3287667}, //
+
14813 {4.36557579, 1.32928705}, //
+
14814 {4.36614275, 1.32984817}, //
+
14815 {4.36658335, 1.33045006}, //
+
14816 {4.36689806, 1.3310926}, //
+
14817 {4.36708689, 1.3317759}, //
+
14818 {4.36714983, 1.33249998}, //
+
14819 {4.36789513, 1.33325553}, //
+
14820 {4.36864138, 1.33401108}, //
+
14821 {4.36938906, 1.33476663}, //
+
14822 {4.37013769, 1.33552217}, //
+
14823 {4.37088776, 1.33627772}, //
+
14824 {4.37163877, 1.33703339}, //
+
14825 {4.37239122, 1.33778894}, //
+
14826 {4.3731451, 1.33854449}, //
+
14827 {4.37389994, 1.33930004}, //
+
14828 {4.37467575, 1.34005499}, //
+
14829 {4.37549257, 1.34080863}, //
+
14830 {4.37634993, 1.34156108}, //
+
14831 {4.37724829, 1.34231234}, //
+
14832 {4.37818718, 1.3430624}, //
+
14833 {4.3791666, 1.34381115}, //
+
14834 {4.38018703, 1.3445586}, //
+
14835 {4.381248, 1.34530497}, //
+
14836 {4.38234997, 1.34605002}, //
+
14837 {4.38346243, 1.34676361}, //
+
14838 {4.38453293, 1.34739316}, //
+
14839 {4.38556099, 1.3479389}, //
+
14840 {4.38654757, 1.34840059}, //
+
14841 {4.38749218, 1.34877837}, //
+
14842 {4.38839436, 1.34907222}, //
+
14843 {4.38925505, 1.34928215}, //
+
14844 {4.3900733, 1.34940803}, //
+
14845 {4.39085007, 1.34944999}, //
+
14846 {4.39219332, 1.34944999}, //
+
14847 {4.39273882, 1.34944999}, //
+
14848 {4.39357853, 1.34944999}, //
+
14849 {4.39387226, 1.34944999}, //
+
14850 {4.39408207, 1.34944999}, //
+
14851 {4.39420795, 1.34944999}, //
+
14852 {4.39424992, 1.34944999}, //
+
14853 {4.39424992, 1.35171664}, //
+
14854 {4.39424992, 1.35253513}, //
+
14855 {4.39424992, 1.35347962}, //
+
14856 {4.39424992, 1.35455}, //
+
14857 {4.39433336, 1.35570371}, //
+
14858 {4.39458323, 1.35689819}, //
+
14859 {4.39499998, 1.35813332}, //
+
14860 {4.39558315, 1.35940921}, //
+
14861 {4.39633322, 1.36072588}, //
+
14862 {4.39725018, 1.36208332}, //
+
14863 {4.39833355, 1.36348152}, //
+
14864 {4.39958334, 1.36492038}, //
+
14865 {4.40100002, 1.3664}, //
+
14866 {4.40251112, 1.3679111}, //
+
14867 {4.40704441, 1.37244439}, //
+
14868 {4.4115777, 1.3769778}, //
+
14869 {4.4145999, 1.38}, //
+
14870 {4.4153347, 1.38073397}, //
+
14871 {4.41602707, 1.38142467}, //
+
14872 {4.41667795, 1.38207221}, //
+
14873 {4.4172864, 1.3826766}, //
+
14874 {4.41785288, 1.3832376}, //
+
14875 {4.41837788, 1.38375556}, //
+
14876 {4.41886044, 1.38423026}, //
+
14877 {4.41930103, 1.38466167}, //
+
14878 {4.41970015, 1.38505006}, //
+
14879 {4.4200983, 1.38540673}, //
+
14880 {4.42053699, 1.38572156}, //
+
14881 {4.42101669, 1.38599443}, //
+
14882 {4.42153692, 1.38622534}, //
+
14883 {4.42209816, 1.38641417}, //
+
14884 {4.42269993, 1.38656116}, //
+
14885 {4.4233427, 1.38666606}, //
+
14886 {4.42402601, 1.386729}, //
+
14887 {4.42474985, 1.38674998}, //
+
14888 {4.42548466, 1.386729}, //
+
14889 {4.42617702, 1.38666606}, //
+
14890 {4.42682791, 1.38656116}, //
+
14891 {4.42743635, 1.38641417}, //
+
14892 {4.42800331, 1.38622534}, //
+
14893 {4.42852783, 1.38599443}, //
+
14894 {4.42901039, 1.38572156}, //
+
14895 {4.42945147, 1.38540673}, //
+
14896 {4.4298501, 1.38505006}, //
+
14897 {4.43020678, 1.38468277}, //
+
14898 {4.43052149, 1.38431418}, //
+
14899 {4.43079424, 1.38394439}, //
+
14900 {4.43102551, 1.38357341}, //
+
14901 {4.43121433, 1.38320124}, //
+
14902 {4.4313612, 1.38282776}, //
+
14903 {4.4314661, 1.38245308}, //
+
14904 {4.43152905, 1.38207722}, //
+
14905 {4.43155003, 1.38170004}, //
+
14906 {4.43155003, 1.38132226}, //
+
14907 {4.43155003, 1.37943327}, //
+
14908 {4.43155003, 1.3790555}, //
+
14909 {4.43155003, 1.37867773}, //
+
14910 {4.43155003, 1.37829995}, //
+
14911 {4.43155003, 1.37794316}, //
+
14912 {4.43155003, 1.37762845}, //
+
14913 {4.43155003, 1.37678885}, //
+
14914 {4.43155003, 1.37668395}, //
+
14915 {4.43155003, 1.37662101}, //
+
14916 {4.43155003, 1.37660003}, //
+
14917 {4.42474985, 1.3427}, //
+
14918 {4.42449808, 1.34244812}, //
+
14919 {4.42418337, 1.34213328}, //
+
14920 {4.42374277, 1.34169257}, //
+
14921 {4.42317581, 1.34112597}, //
+
14922 {4.42248344, 1.34043336}, //
+
14923 {4.42166471, 1.33961487}, //
+
14924 {4.42072058, 1.33867037}, //
+
14925 {4.41965008, 1.33759999}, //
+
14926 {4.41846418, 1.33644569}, //
+
14927 {4.41715145, 1.33524942}, //
+
14928 {4.41571093, 1.33401108}, //
+
14929 {4.41414404, 1.33273089}, //
+
14930 {4.41244936, 1.33140862}, //
+
14931 {4.41062784, 1.33004439}, //
+
14932 {4.40867901, 1.32863832}, //
+
14933 {4.40660286, 1.32719016}, //
+
14934 {4.40439987, 1.32570004}, //
+
14935 {4.4022069, 1.32417834}, //
+
14936 {4.40013838, 1.3226136}, //
+
14937 {4.39819431, 1.32100558}, //
+
14938 {4.39637518, 1.3193543}, //
+
14939 {4.39468098, 1.31765985}, //
+
14940 {4.39311123, 1.31592226}, //
+
14941 {4.39166594, 1.31414139}, //
+
14942 {4.39034557, 1.31231725}, //
+
14943 {4.38915014, 1.31044996}, //
+
14944 {4.38804817, 1.30859256}, //
+
14945 {4.38698721, 1.30677593}, //
+
14946 {4.38596678, 1.30499995}, //
+
14947 {4.38498688, 1.30326486}, //
+
14948 {4.38404799, 1.30157042}, //
+
14949 {4.3831501, 1.29991663}, //
+
14950 {4.38229275, 1.29830372}, //
+
14951 {4.38147593, 1.29673147}, //
+
14952 {4.38070011, 1.29519999}, //
+
14953 {4.37992334, 1.29445493}, //
+
14954 {4.37910509, 1.29370868}, //
+
14955 {4.3782444, 1.29296112}, //
+
14956 {4.37734175, 1.29221237}, //
+
14957 {4.37639761, 1.2914623}, //
+
14958 {4.37541103, 1.29071116}, //
+
14959 {4.3743825, 1.2899586}, //
+
14960 {4.37331247, 1.28920496}, //
+
14961 {4.37220001, 1.28845}, //
+
14962 {4.37097216, 1.28765249}, //
+
14963 {4.36953354, 1.28677094}, //
+
14964 {4.36788321, 1.28580558}, //
+
14965 {4.36602211, 1.28475618}, //
+
14966 {4.36394978, 1.28362286}, //
+
14967 {4.36166668, 1.28240561}, //
+
14968 {4.35917234, 1.28110433}, //
+
14969 {4.35646677, 1.27971911}, //
+
14970 {4.35354996, 1.27824998}, //
+
14971 {4.35028744, 1.27733707}, //
+
14972 {4.34652281, 1.27608705}, //
+
14973 {4.34225559, 1.27450001}, //
+
14974 {4.33748579, 1.27257597}, //
+
14975 {4.3322134, 1.27031481}, //
+
14976 {4.3264389, 1.26771665}, //
+
14977 {4.32016182, 1.26478148}, //
+
14978 {4.31338215, 1.2615093}, //
+
14979 {4.30609989, 1.2579}, //
+
14980 {4.30015039, 1.25579071}, //
+
14981 {4.29436922, 1.25397408}, //
+
14982 {4.28875542, 1.25244999}, //
+
14983 {4.28330994, 1.25121856}, //
+
14984 {4.2780323, 1.25027966}, //
+
14985 {4.27292204, 1.24963331}, //
+
14986 {4.2679801, 1.24927962}, //
+
14987 {4.26320601, 1.24921846}, //
+
14988 {4.25860023, 1.24944997}, //
+
14989 {4.25413036, 1.24991107}, //
+
14990 {4.24974298, 1.25053895}, //
+
14991 {4.24543905, 1.25133336}, //
+
14992 {4.24121714, 1.25229442}, //
+
14993 {4.23707819, 1.25342226}, //
+
14994 {4.23302221, 1.25471663}, //
+
14995 {4.22904873, 1.25617778}, //
+
14996 {4.22515821, 1.25780559}, //
+
14997 {4.22135019, 1.25960004}, //
+
14998 {4.21775055, 1.26146793}, //
+
14999 {4.21448565, 1.26329386}, //
+
15000 {4.21155548, 1.26507783}, //
+
15001 {4.20896006, 1.26681972}, //
+
15002 {4.20669889, 1.26851976}, //
+
15003 {4.204772, 1.27017772}, //
+
15004 {4.20318031, 1.27179384}, //
+
15005 {4.20192289, 1.27336788}, //
+
15006 {4.20100021, 1.27489996}, //
+
15007 {4.19938469, 1.27562404}, //
+
15008 {4.19756031, 1.27630746}, //
+
15009 {4.19552755, 1.27695}, //
+
15010 {4.19328642, 1.27755189}, //
+
15011 {4.19083643, 1.27811301}, //
+
15012 {4.18817759, 1.27863336}, //
+
15013 {4.18531036, 1.27911294}, //
+
15014 {4.18223476, 1.27955186}, //
+
15015 {4.17894983, 1.27995002}, //
+
15016 {4.17545605, 1.28030682}, //
+
15017 {4.17175245, 1.28062165}, //
+
15018 {4.16783905, 1.2808944}, //
+
15019 {4.16371536, 1.28112531}, //
+
15020 {4.15938187, 1.28131425}, //
+
15021 {4.15483904, 1.28146112}, //
+
15022 {4.15008593, 1.28156602}, //
+
15023 {4.145123, 1.28162897}, //
+
15024 {4.1399498, 1.28164995}, //
+
15025 {4.13616228, 1.28238451}, //
+
15026 {4.1323328, 1.28307712}, //
+
15027 {4.12846088, 1.28372777}, //
+
15028 {4.12454748, 1.28433645}, //
+
15029 {4.12059212, 1.28490305}, //
+
15030 {4.11659431, 1.28542781}, //
+
15031 {4.11255503, 1.28591049}, //
+
15032 {4.1084733, 1.2863512}, //
+
15033 {4.10435009, 1.28674996}, //
+
15034 {4.10026836, 1.28714871}, //
+
15035 {4.096313, 1.28758955}, //
+
15036 {4.09248352, 1.28807223}, //
+
15037 {4.08877945, 1.28859687}, //
+
15038 {4.08520174, 1.28916359}, //
+
15039 {4.08174992, 1.28977227}, //
+
15040 {4.07842398, 1.2904228}, //
+
15041 {4.07522392, 1.2911154}, //
+
15042 {4.07215023, 1.29184997}, //
+
15043 {4.06990433, 1.29334998}, //
+
15044 {4.06770039, 1.29484999}, //
+
15045 {4.06553888, 1.29635}, //
+
15046 {4.06341934, 1.29785001}, //
+
15047 {4.06134129, 1.29935002}, //
+
15048 {4.05930567, 1.30085003}, //
+
15049 {4.05731153, 1.30235004}, //
+
15050 {4.05535984, 1.30385005}, //
+
15051 {4.05345011, 1.30534995}, //
+
15052 {4.05163479, 1.30688214}, //
+
15053 {4.04994392, 1.30845618}, //
+
15054 {4.04837799, 1.31007218}, //
+
15055 {4.04693651, 1.31173027}, //
+
15056 {4.04646349, 1.31234097}, //
+
15057 {4.04276133, 1.33326662}, //
+
15058 {4.04257536, 1.33434582}, //
+
15059 {4.03651905, 1.33556426}, //
+
15060 {4.03578901, 1.33571112}, //
+
15061 {4.03526735, 1.33581603}, //
+
15062 {4.03495455, 1.33587897}, //
+
15063 {4.03485012, 1.33589995}, //
+
15064 {4.03619337, 1.33321357}, //
+
15065 {4.03655005, 1.33249998}, //
+
15066 {4.0369482, 1.33169198}, //
+
15067 {4.03738689, 1.33075678}, //
+
15068 {4.03786659, 1.32969439}, //
+
15069 {4.03838682, 1.32850492}, //
+
15070 {4.03894806, 1.32718825}, //
+
15071 {4.03954983, 1.32574439}, //
+
15072 {4.0401926, 1.32417345}, //
+
15073 {4.04087591, 1.32247531}, //
+
15074 {4.04160023, 1.32064998}, //
+
15075 {4.042418, 1.31878209}, //
+
15076 {4.04336071, 1.31695616}, //
+
15077 {4.04442787, 1.3151722}, //
+
15078 {4.04561996, 1.31343019}, //
+
15079 {4.04646349, 1.31234097}, //
+
15080 {4.04665661, 1.31124818}, //
+
15081 {4.05080318, 1.28839254}, //
+
15082 {4.0552001, 1.26470006}, //
+
15083 {4.06025791, 1.2432735}, //
+
15084 {4.06489897, 1.22268271}, //
+
15085 {4.06912231, 1.20292783}, //
+
15086 {4.07292843, 1.1840086}, //
+
15087 {4.07631731, 1.16592526}, //
+
15088 {4.07647896, 1.16498804}, //
+
15089 {4.07439423, 1.16451108}, //
+
15090 {4.07226038, 1.16404939}, //
+
15091 {4.07037735, 1.16367161}, //
+
15092 {4.06874466, 1.16337776}, //
+
15093 {4.06736231, 1.16316795}, //
+
15094 {4.06623077, 1.16304195}, //
+
15095 {4.06535006, 1.16299999}, //
+
15096 {4.06474066, 1.16295803}, //
+
15097 {4.06442404, 1.16283214}, //
+
15098 {4.0644002, 1.16262221}, //
+
15099 {4.06466866, 1.16232836}, //
+
15100 {4.06522942, 1.16195059}, //
+
15101 {4.06608343, 1.16148889}, //
+
15102 {4.06722975, 1.16094315}, //
+
15103 {4.06866837, 1.16031361}, //
+
15104 {4.07040024, 1.15960002}, //
+
15105 {4.07233047, 1.15878153}, //
+
15106 {4.0743432, 1.15783703}, //
+
15107 {4.0764389, 1.15676665}, //
+
15108 {4.07804728, 1.15588331}, //
+
15109 {4.07928896, 1.14867783}, //
+
15110 {4.08184338, 1.13226604}, //
+
15111 {4.08398008, 1.11669016}, //
+
15112 {4.08570004, 1.10195005}, //
+
15113 {4.08721066, 1.09048212}, //
+
15114 {4.08871984, 1.07867837}, //
+
15115 {4.0902276, 1.06653893}, //
+
15116 {4.09173441, 1.05406356}, //
+
15117 {4.09324026, 1.04125249}, //
+
15118 {4.09465456, 1.02889228}, //
+
15119 {4.09442854, 1.02877712}, //
+
15120 {4.09335995, 1.02808452}, //
+
15121 {4.09250021, 1.02734995}, //
+
15122 {4.09241629, 1.02726603}, //
+
15123 {4.09147167, 1.02632165}, //
+
15124 {4.09115696, 1.02600682}, //
+
15125 {4.09079981, 1.02565002}, //
+
15126 {4.09044313, 1.02525127}, //
+
15127 {4.09012842, 1.02481055}, //
+
15128 {4.08985567, 1.02432775}, //
+
15129 {4.08962488, 1.02380311}, //
+
15130 {4.08943558, 1.02323639}, //
+
15131 {4.08928871, 1.02262783}, //
+
15132 {4.08918381, 1.02197719}, //
+
15133 {4.08912086, 1.02128458}, //
+
15134 {4.08909988, 1.02055001}, //
+
15135 {4.08909988, 1.01380002}, //
+
15136 {4.08968496, 1.01354814}, //
+
15137 {4.09041643, 1.0132333}, //
+
15138 {4.09669209, 1.0105325}, //
+
15139 {4.09774923, 1.00080431}, //
+
15140 {4.09924984, 0.98664999}, //
+
15141 {4.10076046, 0.972485185}, //
+
15142 {4.10226965, 0.958612978}, //
+
15143 {4.10377789, 0.945033312}, //
+
15144 {4.10528469, 0.931746304}, //
+
15145 {4.10679007, 0.918751836}, //
+
15146 {4.10755873, 0.912263215}, //
+
15147 {4.10680294, 0.912181497}, //
+
15148 {4.10623837, 0.912120342}, //
+
15149 {4.10605001, 0.912100017}, //
+
15150 {4.10605001, 0.883249998}, //
+
15151 {4.106071, 0.88143456}, //
+
15152 {4.10613394, 0.879743814}, //
+
15153 {4.10623884, 0.878177762}, //
+
15154 {4.10638571, 0.876736403}, //
+
15155 {4.10657454, 0.875419736}, //
+
15156 {4.10680532, 0.874227762}, //
+
15157 {4.10707855, 0.873160481}, //
+
15158 {4.10739326, 0.872217894}, //
+
15159 {4.10774994, 0.871399999}, //
+
15160 {4.1084218, 0.870056808}, //
+
15161 {4.10869455, 0.869511127}, //
+
15162 {4.10892534, 0.86904937}, //
+
15163 {4.10911417, 0.868671596}, //
+
15164 {4.10926104, 0.868377805}, //
+
15165 {4.10944986, 0.867999971}, //
+
15166 {4.11045599, 0.868062317}, //
+
15167 {4.11196375, 0.868249357}, //
+
15168 {4.11297464, 0.868406296}, //
+
15169 {4.11280012, 0.869700015}, //
+
15170 {4.11129951, 0.881524086}, //
+
15171 {4.10979748, 0.893640757}, //
+
15172 {4.10829449, 0.906050026}, //
+
15173 {4.10755873, 0.912263215}, //
+
15174 {4.11527538, 0.913098156}, //
+
15175 {4.12130022, 0.913749993}, //
+
15176 {4.12473106, 0.914148748}, //
+
15177 {4.12824583, 0.914589524}, //
+
15178 {4.13184452, 0.915072203}, //
+
15179 {4.13552713, 0.915596902}, //
+
15180 {4.13929367, 0.916163564}, //
+
15181 {4.14314461, 0.916772246}, //
+
15182 {4.14707899, 0.917422831}, //
+
15183 {4.1510973, 0.918115437}, //
+
15184 {4.1552, 0.918850005}, //
+
15185 {4.15932369, 0.919647515}, //
+
15186 {4.16340494, 0.920529008}, //
+
15187 {4.16744423, 0.921494424}, //
+
15188 {4.17144203, 0.922543824}, //
+
15189 {4.1753974, 0.923677146}, //
+
15190 {4.17931128, 0.924894452}, //
+
15191 {4.18318272, 0.926195681}, //
+
15192 {4.1870122, 0.927580893}, //
+
15193 {4.19080019, 0.929050028}, //
+
15194 {4.19384241, 0.930466652}, //
+
15195 {4.19692612, 0.931716681}, //
+
15196 {4.20004988, 0.932799995}, //
+
15197 {4.20321465, 0.933716655}, //
+
15198 {4.20642042, 0.93446666}, //
+
15199 {4.20966673, 0.935050011}, //
+
15200 {4.21295357, 0.935466647}, //
+
15201 {4.21628141, 0.935716689}, //
+
15202 {4.21964979, 0.935800016}, //
+
15203 {4.22301769, 0.935758054}, //
+
15204 {4.22634363, 0.93563211}, //
+
15205 {4.22962761, 0.935422242}, //
+
15206 {4.23286963, 0.935128391}, //
+
15207 {4.23606968, 0.934750617}, //
+
15208 {4.23922777, 0.934288859}, //
+
15209 {4.2423439, 0.933743238}, //
+
15210 {4.24541807, 0.933113575}, //
+
15211 {4.2484498, 0.932399988}, //
+
15212 {4.25075817, 0.932358623}, //
+
15213 {4.25314856, 0.932234585}, //
+
15214 {4.25562239, 0.932027757}, //
+
15215 {4.25817823, 0.931738257}, //
+
15216 {4.26081705, 0.931366026}, //
+
15217 {4.26353884, 0.930911124}, //
+
15218 {4.26634312, 0.93037343}, //
+
15219 {4.26923037, 0.929753065}, //
+
15220 {4.27220011, 0.929050028}, //
+
15221 {4.27510595, 0.929028988}, //
+
15222 {4.27780247, 0.928966045}, //
+
15223 {4.2802887, 0.928861082}, //
+
15224 {4.28256559, 0.928714216}, //
+
15225 {4.28463221, 0.928525329}, //
+
15226 {4.28648901, 0.92829442}, //
+
15227 {4.28813601, 0.92802161}, //
+
15228 {4.28957272, 0.927706778}, //
+
15229 {4.29080009, 0.927349985}, //
+
15230 {4.29191256, 0.926993191}, //
+
15231 {4.29298258, 0.926678419}, //
+
15232 {4.29401112, 0.926405549}, //
+
15233 {4.29499769, 0.9261747}, //
+
15234 {4.29594183, 0.925985813}, //
+
15235 {4.29684448, 0.925838888}, //
+
15236 {4.29770517, 0.925733924}, //
+
15237 {4.29852343, 0.925670981}, //
+
15238 {4.29930019, 0.925650001}, //
+
15239 {4.3000555, 0.925608039}, //
+
15240 {4.30081129, 0.925482094}, //
+
15241 {4.3015666, 0.925272226}, //
+
15242 {4.30232239, 0.924978375}, //
+
15243 {4.3030777, 0.924600601}, //
+
15244 {4.30383348, 0.924138904}, //
+
15245 {4.30458879, 0.923593223}, //
+
15246 {4.30534458, 0.92296356}, //
+
15247 {4.30609989, 0.922249973}, //
+
15248 {4.30693913, 0.921494424}, //
+
15249 {4.3079443, 0.920738876}, //
+
15250 {4.30911684, 0.919983327}, //
+
15251 {4.31045532, 0.919227779}, //
+
15252 {4.31196117, 0.91847223}, //
+
15253 {4.31363344, 0.917716682}, //
+
15254 {4.31547213, 0.916961133}, //
+
15255 {4.3174777, 0.916205585}, //
+
15256 {4.31965017, 0.915449977}, //
+
15257 {4.32187414, 0.91474694}, //
+
15258 {4.32401276, 0.914126515}, //
+
15259 {4.32606649, 0.913588881}, //
+
15260 {4.32803535, 0.913133979}, //
+
15261 {4.32991838, 0.912761748}, //
+
15262 {4.33171654, 0.912472248}, //
+
15263 {4.33342981, 0.91226542}, //
+
15264 {4.33505726, 0.912141383}, //
+
15265 {4.33659983, 0.912100017}, //
+
15266 {4.33811045, 0.912141383}, //
+
15267 {4.33961964, 0.91226542}, //
+
15268 {4.34112787, 0.912472248}, //
+
15269 {4.34263468, 0.912761748}, //
+
15270 {4.34414005, 0.913133979}, //
+
15271 {4.34564447, 0.913588881}, //
+
15272 {4.34714746, 0.914126515}, //
+
15273 {4.3486495, 0.91474694}, //
+
15274 {4.35015011, 0.915449977}, //
+
15275 {4.35019207, 0.915449977}, //
+
15276 {4.35031796, 0.915449977}, //
+
15277 {4.35052776, 0.915449977}, //
+
15278 {4.35166121, 0.915449977}, //
+
15279 {4.35220671, 0.915449977}, //
+
15280 {4.35354996, 0.915449977}, //
+
15281 {4.35436773, 0.915408015}, //
+
15282 {4.35531044, 0.915282071}, //
+
15283 {4.3563776, 0.915072203}, //
+
15284 {4.35756969, 0.914778411}, //
+
15285 {4.35888624, 0.914400637}, //
+
15286 {4.36032772, 0.91393888}, //
+
15287 {4.36189365, 0.913393199}, //
+
15288 {4.36358452, 0.912763596}, //
+
15289 {4.36539984, 0.912050009}, //
+
15290 {4.36728811, 0.91128397}, //
+
15291 {4.36917543, 0.910474718}, //
+
15292 {4.37106133, 0.909622252}, //
+
15293 {4.37294579, 0.908726573}, //
+
15294 {4.37482882, 0.907787681}, //
+
15295 {4.37671089, 0.906805575}, //
+
15296 {4.37859201, 0.905780256}, //
+
15297 {4.38047171, 0.904711723}, //
+
15298 {4.38234997, 0.903599977}, //
+
15299 {4.38419676, 0.902466655}, //
+
15300 {4.3859601, 0.901333332}, //
+
15301 {4.38763905, 0.900200009}, //
+
15302 {4.38923407, 0.899066687}, //
+
15303 {4.39074516, 0.897933304}, //
+
15304 {4.39217234, 0.896799982}, //
+
15305 {4.39351559, 0.895666659}, //
+
15306 {4.39477491, 0.894533336}, //
+
15307 {4.39594984, 0.893400013}, //
+
15308 {4.40004253, 0.889347553}, //
+
15309 {4.40098715, 0.888412356}, //
+
15310 {4.40105009, 0.88835001}, //
+
15311 {4.40324306, 0.886104345}, //
+
15312 {4.40531158, 0.883900642}, //
+
15313 {4.40725565, 0.881738901}, //
+
15314 {4.40907478, 0.879619122}, //
+
15315 {4.41076899, 0.877541363}, //
+
15316 {4.41233873, 0.875505567}, //
+
15317 {4.41378403, 0.873511732}, //
+
15318 {4.41510439, 0.871559858}, //
+
15319 {4.41629982, 0.869650006}, //
+
15320 {4.41743279, 0.867751241}, //
+
15321 {4.41856432, 0.865810513}, //
+
15322 {4.41969442, 0.863827765}, //
+
15323 {4.42082357, 0.861803114}, //
+
15324 {4.42195129, 0.859736443}, //
+
15325 {4.42307758, 0.857627749}, //
+
15326 {4.42420292, 0.855477154}, //
+
15327 {4.4253273, 0.853284597}, //
+
15328 {4.42644978, 0.851050019}, //
+
15329 {4.42756224, 0.848835826}, //
+
15330 {4.42863274, 0.846704304}, //
+
15331 {4.42966127, 0.844655573}, //
+
15332 {4.43064737, 0.842689514}, //
+
15333 {4.43159199, 0.840806186}, //
+
15334 {4.43249464, 0.83900553}, //
+
15335 {4.43335485, 0.837287664}, //
+
15336 {4.43417358, 0.835652471}, //
+
15337 {4.43494987, 0.834100008}, //
+
15338 {4.4356637, 0.832672834}, //
+
15339 {4.43629313, 0.831413567}, //
+
15340 {4.4368391, 0.830322206}, //
+
15341 {4.43818188, 0.827635825}, //
+
15342 {4.43830824, 0.827383935}, //
+
15343 {4.4383502, 0.827300012}, //
+
15344 {4.4383502, 0.790000021}, //
+
15345 {4.43797207, 0.79075557}, //
+
15346 {4.43767834, 0.791343212}, //
+
15347 {4.43730068, 0.792098761}, //
+
15348 {4.43629313, 0.794113576}, //
+
15349 {4.43494987, 0.796800017}, //
+
15350 {4.43419456, 0.798331499}, //
+
15351 {4.43343878, 0.799903691}, //
+
15352 {4.43268347, 0.801516652}, //
+
15353 {4.43192768, 0.803170383}, //
+
15354 {4.43117237, 0.804864824}, //
+
15355 {4.43041658, 0.806599975}, //
+
15356 {4.42966127, 0.808375955}, //
+
15357 {4.42890549, 0.810192585}, //
+
15358 {4.42815018, 0.812049985}, //
+
15359 {4.42737341, 0.813917279}, //
+
15360 {4.42655516, 0.81574136}, //
+
15361 {4.42569447, 0.817522228}, //
+
15362 {4.42479181, 0.819259882}, //
+
15363 {4.42384768, 0.820954323}, //
+
15364 {4.4228611, 0.82260555}, //
+
15365 {4.42183256, 0.824213564}, //
+
15366 {4.42076254, 0.825778425}, //
+
15367 {4.41965008, 0.827300012}, //
+
15368 {4.41854811, 0.828769147}, //
+
15369 {4.41748714, 0.8301543}, //
+
15370 {4.41646671, 0.831455529}, //
+
15371 {4.41548681, 0.832672834}, //
+
15372 {4.41454792, 0.833806157}, //
+
15373 {4.41365004, 0.834855556}, //
+
15374 {4.41279268, 0.835820973}, //
+
15375 {4.41197586, 0.836702466}, //
+
15376 {4.41120005, 0.837499976}, //
+
15377 {4.41042328, 0.83893764}, //
+
15378 {4.40960503, 0.840250611}, //
+
15379 {4.40874434, 0.84143889}, //
+
15380 {4.40784216, 0.842502475}, //
+
15381 {4.40689754, 0.843441367}, //
+
15382 {4.40591097, 0.844255567}, //
+
15383 {4.40488291, 0.844945073}, //
+
15384 {4.40381241, 0.845509887}, //
+
15385 {4.40269995, 0.845950007}, //
+
15386 {4.40155602, 0.846306801}, //
+
15387 {4.40036917, 0.846621633}, //
+
15388 {4.39913893, 0.846894443}, //
+
15389 {4.3978653, 0.847125292}, //
+
15390 {4.39654875, 0.847314179}, //
+
15391 {4.39518881, 0.847461104}, //
+
15392 {4.39378595, 0.847566068}, //
+
15393 {4.39233971, 0.847629011}, //
+
15394 {4.39085007, 0.847649992}, //
+
15395 {4.39005327, 0.848363578}, //
+
15396 {4.38917351, 0.848993182}, //
+
15397 {4.38821125, 0.849538863}, //
+
15398 {4.38716602, 0.85000062}, //
+
15399 {4.3860383, 0.850378394}, //
+
15400 {4.38482761, 0.850672245}, //
+
15401 {4.38353443, 0.850882113}, //
+
15402 {4.38215876, 0.851007998}, //
+
15403 {4.38070011, 0.851050019}, //
+
15404 {4.37914753, 0.85256052}, //
+
15405 {4.37751245, 0.854069769}, //
+
15406 {4.37579441, 0.855577767}, //
+
15407 {4.37399387, 0.857084572}, //
+
15408 {4.37211037, 0.858590126}, //
+
15409 {4.37014437, 0.860094428}, //
+
15410 {4.36809587, 0.861597538}, //
+
15411 {4.36596441, 0.863099396}, //
+
15412 {4.36374998, 0.864600003}, //
+
15413 {4.36144209, 0.866782069}, //
+
15414 {4.35905123, 0.868795037}, //
+
15415 {4.35657787, 0.870638907}, //
+
15416 {4.35402155, 0.872313559}, //
+
15417 {4.35138273, 0.873819113}, //
+
15418 {4.34866095, 0.875155568}, //
+
15419 {4.34585667, 0.876322865}, //
+
15420 {4.34296989, 0.877321005}, //
+
15421 {4.34000015, 0.878149986}, //
+
15422 {4.3383007, 0.878905535}, //
+
15423 {4.33622456, 0.879661083}, //
+
15424 {4.33377218, 0.880416691}, //
+
15425 {4.33094311, 0.88117224}, //
+
15426 {4.32773781, 0.881927788}, //
+
15427 {4.32415533, 0.882683337}, //
+
15428 {4.32019711, 0.883438885}, //
+
15429 {4.3158617, 0.884194434}, //
+
15430 {4.31115007, 0.884949982}, //
+
15431 {4.3062396, 0.88568455}, //
+
15432 {4.30128574, 0.886377156}, //
+
15433 {4.29628897, 0.8870278}, //
+
15434 {4.2912488, 0.887636423}, //
+
15435 {4.28616524, 0.888203084}, //
+
15436 {4.28103876, 0.888727784}, //
+
15437 {4.27586937, 0.889210522}, //
+
15438 {4.27065611, 0.889651239}, //
+
15439 {4.26539993, 0.890049994}, //
+
15440 {4.26024818, 0.890406787}, //
+
15441 {4.25534821, 0.890721619}, //
+
15442 {4.2507, 0.89099443}, //
+
15443 {4.24630356, 0.891225338}, //
+
15444 {4.24215937, 0.891414225}, //
+
15445 {4.23826647, 0.891561091}, //
+
15446 {4.23462582, 0.891666055}, //
+
15447 {4.23123693, 0.891728997}, //
+
15448 {4.22809982, 0.891749978}, //
+
15449 {4.22492075, 0.891666055}, //
+
15450 {4.22140598, 0.891414225}, //
+
15451 {4.21755552, 0.89099443}, //
+
15452 {4.21336937, 0.890406787}, //
+
15453 {4.20884705, 0.889651239}, //
+
15454 {4.20398903, 0.888727784}, //
+
15455 {4.19879484, 0.887636423}, //
+
15456 {4.19326544, 0.886377156}, //
+
15457 {4.18739986, 0.884949982}, //
+
15458 {4.18141937, 0.883459866}, //
+
15459 {4.1755209, 0.882011712}, //
+
15460 {4.16970539, 0.880605578}, //
+
15461 {4.16397285, 0.879241347}, //
+
15462 {4.15832281, 0.877919137}, //
+
15463 {4.15275574, 0.876638889}, //
+
15464 {4.14727116, 0.875400603}, //
+
15465 {4.14186907, 0.874204338}, //
+
15466 {4.13654995, 0.873049974}, //
+
15467 {4.1315341, 0.871990144}, //
+
15468 {4.12701893, 0.871054947}, //
+
15469 {4.12300539, 0.870244443}, //
+
15470 {4.11949301, 0.869558632}, //
+
15471 {4.11648226, 0.868997514}, //
+
15472 {4.11397219, 0.868561089}, //
+
15473 {4.11297464, 0.868406296}, //
+
15474 {4.11431122, 0.858503699}, //
+
15475 {4.11582232, 0.848270357}, //
+
15476 {4.11733341, 0.838999987}, //
+
15477 {4.11884451, 0.830692589}, //
+
15478 {4.12035561, 0.823348165}, //
+
15479 {4.1218667, 0.816966653}, //
+
15480 {4.1233778, 0.811548173}, //
+
15481 {4.1248889, 0.807092607}, //
+
15482 {4.12639999, 0.803600013}, //
+
15483 {4.12644196, 0.801333964}, //
+
15484 {4.12656784, 0.799069107}, //
+
15485 {4.12677479, 0.796839297}, //
+
15486 {4.12300014, 0.796800017}, //
+
15487 {4.12314653, 0.796716034}, //
+
15488 {4.12358522, 0.796464205}, //
+
15489 {4.12708616, 0.794455111}, //
+
15490 {4.12744951, 0.792282104}, //
+
15491 {4.12791109, 0.790022194}, //
+
15492 {4.12845659, 0.787763596}, //
+
15493 {4.12908649, 0.785506189}, //
+
15494 {4.12979984, 0.783249974}, //
+
15495 {4.13354588, 0.776272833}, //
+
15496 {4.13724947, 0.76891911}, //
+
15497 {4.1409111, 0.761188865}, //
+
15498 {4.14453077, 0.753082097}, //
+
15499 {4.14810848, 0.744598746}, //
+
15500 {4.15164423, 0.735738873}, //
+
15501 {4.15513849, 0.726502478}, //
+
15502 {4.15859032, 0.716889501}, //
+
15503 {4.16200018, 0.706900001}, //
+
15504 {4.16524267, 0.696796298}, //
+
15505 {4.16819239, 0.68681854}, //
+
15506 {4.1708498, 0.676966667}, //
+
15507 {4.17321491, 0.667240739}, //
+
15508 {4.17528725, 0.657640755}, //
+
15509 {4.1770668, 0.648166656}, //
+
15510 {4.17855358, 0.638818502}, //
+
15511 {4.17974806, 0.629596293}, //
+
15512 {4.18065023, 0.620500028}, //
+
15513 {4.18151379, 0.608276546}, //
+
15514 {4.18065023, 0.606899977}, //
+
15515 {4.18219948, 0.600680113}, //
+
15516 {4.18283033, 0.593872845}, //
+
15517 {4.18442202, 0.579805553}, //
+
15518 {4.18634892, 0.565235794}, //
+
15519 {4.18861008, 0.550163567}, //
+
15520 {4.1912055, 0.534588873}, //
+
15521 {4.19413567, 0.518511713}, //
+
15522 {4.19740057, 0.501932085}, //
+
15523 {4.20100021, 0.484849989}, //
+
15524 {4.20250082, 0.475269765}, //
+
15525 {4.20400238, 0.466106802}, //
+
15526 {4.20550537, 0.457361102}, //
+
15527 {4.20700979, 0.449032724}, //
+
15528 {4.20851564, 0.441121608}, //
+
15529 {4.21002245, 0.433627784}, //
+
15530 {4.21153021, 0.426551223}, //
+
15531 {4.2130394, 0.419891983}, //
+
15532 {4.21455002, 0.413650006}, //
+
15533 {4.21532583, 0.402728409}, //
+
15534 {4.21614265, 0.391052455}, //
+
15535 {4.21700001, 0.378622234}, //
+
15536 {4.21789837, 0.365437657}, //
+
15537 {4.21883726, 0.351498753}, //
+
15538 {4.21981668, 0.336805552}, //
+
15539 {4.22037172, 0.328403741}, //
+
15540 {4.21990204, 0.328165442}, //
+
15541 {4.21857977, 0.327472836}, //
+
15542 {4.21738338, 0.326822221}, //
+
15543 {4.21631289, 0.326213568}, //
+
15544 {4.21536875, 0.325646907}, //
+
15545 {4.21455002, 0.325122207}, //
+
15546 {4.21385717, 0.324639499}, //
+
15547 {4.21329069, 0.324198753}, //
+
15548 {4.21285009, 0.323799998}, //
+
15549 {4.21249342, 0.323422223}, //
+
15550 {4.21217823, 0.323044449}, //
+
15551 {4.21190548, 0.322666675}, //
+
15552 {4.21167469, 0.322288901}, //
+
15553 {4.21148586, 0.321911097}, //
+
15554 {4.211339, 0.321533322}, //
+
15555 {4.21123409, 0.321155548}, //
+
15556 {4.21117115, 0.320777774}, //
+
15557 {4.21115017, 0.3204}, //
+
15558 {4.21117115, 0.320022225}, //
+
15559 {4.21123409, 0.319644451}, //
+
15560 {4.211339, 0.319266677}, //
+
15561 {4.21148586, 0.318888903}, //
+
15562 {4.21167469, 0.318511099}, //
+
15563 {4.21190548, 0.318133324}, //
+
15564 {4.21217823, 0.31775555}, //
+
15565 {4.21249342, 0.317377776}, //
+
15566 {4.21285009, 0.317000002}, //
+
15567 {4.21322775, 0.316653699}, //
+
15568 {4.2136054, 0.316348135}, //
+
15569 {4.21398354, 0.316083342}, //
+
15570 {4.21436119, 0.315859258}, //
+
15571 {4.21473885, 0.315675914}, //
+
15572 {4.2151165, 0.31553334}, //
+
15573 {4.21549463, 0.315431476}, //
+
15574 {4.21587229, 0.315370381}, //
+
15575 {4.21624994, 0.315349996}, //
+
15576 {4.2166276, 0.315329015}, //
+
15577 {4.21700573, 0.315266043}, //
+
15578 {4.21738338, 0.315161109}, //
+
15579 {4.21776104, 0.315014184}, //
+
15580 {4.21813869, 0.314825296}, //
+
15581 {4.21851683, 0.314594448}, //
+
15582 {4.21889448, 0.314321607}, //
+
15583 {4.21927214, 0.314006776}, //
+
15584 {4.21964979, 0.313650012}, //
+
15585 {4.22000694, 0.313293219}, //
+
15586 {4.22032166, 0.312978387}, //
+
15587 {4.22101402, 0.312285811}, //
+
15588 {4.22116089, 0.312138885}, //
+
15589 {4.22132921, 0.311970979}, //
+
15590 {4.22135019, 0.311949998}, //
+
15591 {4.22144938, 0.312009364}, //
+
15592 {4.22083712, 0.321358025}, //
+
15593 {4.22037172, 0.328403741}, //
+
15594 {4.22135019, 0.328900009}, //
+
15595 {4.225945, 0.331239492}, //
+
15596 {4.23070812, 0.33374691}, //
+
15597 {4.2356391, 0.336422235}, //
+
15598 {4.24073744, 0.339265436}, //
+
15599 {4.2460041, 0.342276543}, //
+
15600 {4.25143909, 0.345455557}, //
+
15601 {4.25704145, 0.348802477}, //
+
15602 {4.26281166, 0.352317274}, //
+
15603 {4.26875019, 0.356000006}, //
+
15604 {4.27474117, 0.35955742}, //
+
15605 {4.28064871, 0.36269629}, //
+
15606 {4.28647232, 0.365416676}, //
+
15607 {4.29221153, 0.367718518}, //
+
15608 {4.2978673, 0.369601846}, //
+
15609 {4.30343866, 0.37106666}, //
+
15610 {4.30892658, 0.37211296}, //
+
15611 {4.3143301, 0.372740746}, //
+
15612 {4.31965017, 0.372949988}, //
+
15613 {4.32352114, 0.373705566}, //
+
15614 {4.32760048, 0.374461114}, //
+
15615 {4.33188868, 0.375216663}, //
+
15616 {4.33638573, 0.375972211}, //
+
15617 {4.34109116, 0.37672779}, //
+
15618 {4.34600544, 0.377483338}, //
+
15619 {4.35112858, 0.378238887}, //
+
15620 {4.35646009, 0.378994435}, //
+
15621 {4.36199999, 0.379750013}, //
+
15622 {4.36750937, 0.380546927}, //
+
15623 {4.37272596, 0.381426543}, //
+
15624 {4.37764978, 0.38238889}, //
+
15625 {4.3822813, 0.383433938}, //
+
15626 {4.38662052, 0.384561718}, //
+
15627 {4.39066648, 0.385772228}, //
+
15628 {4.39442015, 0.38706544}, //
+
15629 {4.39788151, 0.388441354}, //
+
15630 {4.40105009, 0.389899999}, //
+
15631 {4.40326357, 0.390697539}, //
+
15632 {4.40539312, 0.391579002}, //
+
15633 {4.40743876, 0.392544448}, //
+
15634 {4.40940046, 0.393593818}, //
+
15635 {4.41127825, 0.39472717}, //
+
15636 {4.41307211, 0.395944446}, //
+
15637 {4.41478205, 0.397245675}, //
+
15638 {4.41640806, 0.398630857}, //
+
15639 {4.41795015, 0.400099993}, //
+
15640 {4.41944027, 0.401631474}, //
+
15641 {4.42088842, 0.403203696}, //
+
15642 {4.42229462, 0.404816657}, //
+
15643 {4.42365885, 0.406470358}, //
+
15644 {4.42498064, 0.408164829}, //
+
15645 {4.42626095, 0.40990001}, //
+
15646 {4.42749929, 0.41167593}, //
+
15647 {4.42869568, 0.41349259}, //
+
15648 {4.4298501, 0.41534999}, //
+
15649 {4.43096161, 0.417196304}, //
+
15650 {4.4320302, 0.418957412}, //
+
15651 {4.4330554, 0.420633346}, //
+
15652 {4.43403769, 0.422224075}, //
+
15653 {4.43497658, 0.423729628}, //
+
15654 {4.43587208, 0.425150007}, //
+
15655 {4.43672466, 0.426485181}, //
+
15656 {4.43753386, 0.42773518}, //
+
15657 {4.43830013, 0.428900003}, //
+
15658 {4.43964338, 0.430914819}, //
+
15659 {4.44018888, 0.43173334}, //
+
15660 {4.44065046, 0.432425916}, //
+
15661 {4.44102859, 0.432992607}, //
+
15662 {4.44132233, 0.433433324}, //
+
15663 {4.44153214, 0.433748156}, //
+
15664 {4.44165802, 0.433937043}, //
+
15665 {4.44169998, 0.433999985}, //
+
15666 {4.44172096, 0.433223456}, //
+
15667 {4.44178391, 0.432404935}, //
+
15668 {4.44188881, 0.431544453}, //
+
15669 {4.44203568, 0.430641979}, //
+
15670 {4.4422245, 0.429697543}, //
+
15671 {4.44245577, 0.428711116}, //
+
15672 {4.44272852, 0.427682728}, //
+
15673 {4.44304323, 0.426612347}, //
+
15674 {4.44339991, 0.425500005}, //
+
15675 {4.44375658, 0.424356163}, //
+
15676 {4.44407177, 0.423169136}, //
+
15677 {4.44434452, 0.421938896}, //
+
15678 {4.44457531, 0.420665443}, //
+
15679 {4.44476414, 0.419348776}, //
+
15680 {4.444911, 0.417988896}, //
+
15681 {4.44501591, 0.416585803}, //
+
15682 {4.44507885, 0.415139496}, //
+
15683 {4.44509983, 0.413650006}, //
+
15684 {4.44509983, 0.409333318}, //
+
15685 {4.44509983, 0.406659245}, //
+
15686 {4.44509983, 0.405383319}, //
+
15687 {4.44509983, 0.404148161}, //
+
15688 {4.44509983, 0.402953714}, //
+
15689 {4.44509983, 0.401800007}, //
+
15690 {4.44509983, 0.397707403}, //
+
15691 {4.44509983, 0.397266656}, //
+
15692 {4.44509983, 0.396951854}, //
+
15693 {4.44509983, 0.396762967}, //
+
15694 {4.44509983, 0.396699995}, //
+
15695 {4.44501591, 0.396783948}, //
+
15696 {4.444911, 0.396888882}, //
+
15697 {4.44457531, 0.397224694}, //
+
15698 {4.44339991, 0.398400009}, //
+
15699 {4.44300127, 0.398756802}, //
+
15700 {4.44256067, 0.399071604}, //
+
15701 {4.44207764, 0.399344444}, //
+
15702 {4.44155312, 0.399575323}, //
+
15703 {4.44098663, 0.39976421}, //
+
15704 {4.44037771, 0.399911106}, //
+
15705 {4.43972731, 0.40001604}, //
+
15706 {4.43903446, 0.400079012}, //
+
15707 {4.43830013, 0.400099993}, //
+
15708 {4.43155003, 0.400099993}, //
+
15709 {4.4308362, 0.400058031}, //
+
15710 {4.43020678, 0.399932086}, //
+
15711 {4.42966127, 0.399722219}, //
+
15712 {4.42919922, 0.399428397}, //
+
15713 {4.42882156, 0.399050623}, //
+
15714 {4.42852783, 0.398588896}, //
+
15715 {4.42831802, 0.398043215}, //
+
15716 {4.42819214, 0.397413582}, //
+
15717 {4.42815018, 0.396699995}, //
+
15718 {4.42743635, 0.396658033}, //
+
15719 {4.42680693, 0.396532089}, //
+
15720 {4.42626095, 0.396322221}, //
+
15721 {4.42579937, 0.396028399}, //
+
15722 {4.42542171, 0.395650625}, //
+
15723 {4.42512798, 0.395188898}, //
+
15724 {4.4249177, 0.394643217}, //
+
15725 {4.42479181, 0.394013584}, //
+
15726 {4.42474985, 0.393299997}, //
+
15727 {4.42312384, 0.391715437}, //
+
15728 {4.42124653, 0.38996172}, //
+
15729 {4.4191165, 0.388038903}, //
+
15730 {4.41673517, 0.3859469}, //
+
15731 {4.41410208, 0.383685797}, //
+
15732 {4.41121674, 0.381255567}, //
+
15733 {4.40807962, 0.378656179}, //
+
15734 {4.40469074, 0.375887662}, //
+
15735 {4.40105009, 0.372949988}, //
+
15736 {4.39724159, 0.370106161}, //
+
15737 {4.39334869, 0.367596924}, //
+
15738 {4.38937235, 0.365422219}, //
+
15739 {4.3853116, 0.363582104}, //
+
15740 {4.38116741, 0.362076551}, //
+
15741 {4.37693882, 0.360905558}, //
+
15742 {4.37262678, 0.360069126}, //
+
15743 {4.36823034, 0.359567285}, //
+
15744 {4.36374998, 0.359400004}, //
+
15745 {4.36066532, 0.359379023}, //
+
15746 {4.35745621, 0.359316051}, //
+
15747 {4.35412216, 0.359211117}, //
+
15748 {4.35066366, 0.359064192}, //
+
15749 {4.34708023, 0.358875304}, //
+
15750 {4.34337234, 0.358644456}, //
+
15751 {4.33953953, 0.358371615}, //
+
15752 {4.33558226, 0.358056784}, //
+
15753 {4.33150005, 0.35769999}, //
+
15754 {4.32742834, 0.357322216}, //
+
15755 {4.32348013, 0.356944442}, //
+
15756 {4.31965542, 0.356566668}, //
+
15757 {4.31595421, 0.356188893}, //
+
15758 {4.3123765, 0.355811119}, //
+
15759 {4.30892229, 0.355433345}, //
+
15760 {4.30559158, 0.355055541}, //
+
15761 {4.3023839, 0.354677767}, //
+
15762 {4.29930019, 0.354299992}, //
+
15763 {4.29637241, 0.353911728}, //
+
15764 {4.29361105, 0.35348025}, //
+
15765 {4.29101658, 0.353005558}, //
+
15766 {4.288589, 0.352487653}, //
+
15767 {4.28632784, 0.351926535}, //
+
15768 {4.28423357, 0.351322234}, //
+
15769 {4.28230572, 0.350674689}, //
+
15770 {4.28054428, 0.34998396}, //
+
15771 {4.27895021, 0.349249989}, //
+
15772 {4.27814198, 0.349166036}, //
+
15773 {4.2772069, 0.348914206}, //
+
15774 {4.2761445, 0.34849444}, //
+
15775 {4.2749548, 0.347906798}, //
+
15776 {4.27363825, 0.34715122}, //
+
15777 {4.27219439, 0.346227765}, //
+
15778 {4.27062368, 0.345136434}, //
+
15779 {4.26892519, 0.343877167}, //
+
15780 {4.26709986, 0.342449993}, //
+
15781 {4.26520061, 0.340938896}, //
+
15782 {4.26325798, 0.339427769}, //
+
15783 {4.26127243, 0.337916672}, //
+
15784 {4.25924301, 0.336405545}, //
+
15785 {4.25717115, 0.334894449}, //
+
15786 {4.25505543, 0.333383322}, //
+
15787 {4.25289679, 0.331872225}, //
+
15788 {4.25069523, 0.330361098}, //
+
15789 {4.2484498, 0.328850001}, //
+
15790 {4.24621487, 0.327370375}, //
+
15791 {4.24402046, 0.325931489}, //
+
15792 {4.24186659, 0.324533343}, //
+
15793 {4.23975372, 0.323175937}, //
+
15794 {4.23768139, 0.32185927}, //
+
15795 {4.23565006, 0.320583344}, //
+
15796 {4.23365927, 0.319348156}, //
+
15797 {4.23170948, 0.318153709}, //
+
15798 {4.22980022, 0.317000002}, //
+
15799 {4.22802639, 0.315940112}, //
+
15800 {4.22510576, 0.314194441}, //
+
15801 {4.22395802, 0.31350863}, //
+
15802 {4.22301912, 0.312947541}, //
+
15803 {4.22228909, 0.312511116}, //
+
15804 {4.22176743, 0.312199384}, //
+
15805 {4.22145414, 0.312012345}, //
+
15806 {4.22144938, 0.312009364}, //
+
15807 {4.22189808, 0.305156171}, //
+
15808 {4.22300005, 0.288199991}, //
+
15809 {4.22407055, 0.27124384}, //
+
15810 {4.22501469, 0.255041987}, //
+
15811 {4.22583342, 0.239594445}, //
+
15812 {4.22652578, 0.224901229}, //
+
15813 {4.22709274, 0.21096234}, //
+
15814 {4.22753334, 0.197777778}, //
+
15815 {4.22784805, 0.185347527}, //
+
15816 {4.22803688, 0.173671603}, //
+
15817 {4.22809982, 0.162750006}, //
+
15818 {4.22948503, 0.156580865}, //
+
15819 {4.23061848, 0.150117904}, //
+
15820 {4.23150015, 0.143361107}, //
+
15821 {4.23212957, 0.136310488}, //
+
15822 {4.23250723, 0.128966048}, //
+
15823 {4.23263311, 0.12132778}, //
+
15824 {4.23250723, 0.113395676}, //
+
15825 {4.23212957, 0.105169751}, //
+
15826 {4.23150015, 0.0966499969}, //
+
15827 {4.23076534, 0.0881086439}, //
+
15828 {4.23007298, 0.0798178986}, //
+
15829 {4.22942209, 0.0717777759}, //
+
15830 {4.22881365, 0.0639882684}, //
+
15831 {4.22824669, 0.0564493835}, //
+
15832 {4.22772217, 0.0491611101}, //
+
15833 {4.22723961, 0.0421234556}, //
+
15834 {4.22679853, 0.0353364199}, //
+
15835 {4.2263999, 0.0287999995}, //
+
15836 {4.22604322, 0.0227135811}, //
+
15837 {4.22572851, 0.0172543209}, //
+
15838 {4.22545576, 0.0124222226}, //
+
15839 {4.22522449, 0.00821728352}, //
+
15840 {4.22503567, 0.00463950634}, //
+
15841 {4.2248888, 0.00168888888}, //
+
15842 {4.2247839, -0.000634567929}, //
+
15843 {4.22472095, -0.00233086408}, //
+
15844 {4.22469997, -0.00340000005}, //
+
15845 {4.22482538, -0.00430185208}, //
+
15846 {4.22520113, -0.0054962961}, //
+
15847 {4.22582769, -0.00698333327}, //
+
15848 {4.22670507, -0.00876296312}, //
+
15849 {4.22783279, -0.0108351856}, //
+
15850 {4.22921133, -0.0131999999}, //
+
15851 {4.23084021, -0.0158574078}, //
+
15852 {4.2327199, -0.0188074075}, //
+
15853 {4.23484993, -0.0220500007}, //
+
15854 {4.23715782, -0.0254808646}, //
+
15855 {4.23954868, -0.0289956797}, //
+
15856 {4.24202204, -0.0325944461}, //
+
15857 {4.24457836, -0.03627716}, //
+
15858 {4.24504995, -0.0369503163}, //
+
15859 {4.24504995, -0.0406999998}, //
+
15860 {4.24507093, -0.0414549373}, //
+
15861 {4.24513388, -0.0422086418}, //
+
15862 {4.24523878, -0.0429611094}, //
+
15863 {4.24538565, -0.043712344}, //
+
15864 {4.24557447, -0.0444623455}, //
+
15865 {4.24580574, -0.0452111103}, //
+
15866 {4.24607849, -0.0459586419}, //
+
15867 {4.2463932, -0.0467049368}, //
+
15868 {4.24674988, -0.0474499986}, //
+
15869 {4.24710655, -0.0481845662}, //
+
15870 {4.24742174, -0.048877161}, //
+
15871 {4.24769449, -0.0495277792}, //
+
15872 {4.24792528, -0.0501364209}, //
+
15873 {4.24811411, -0.050703086}, //
+
15874 {4.24826097, -0.0512277782}, //
+
15875 {4.24836588, -0.0517104939}, //
+
15876 {4.24842882, -0.052151233}, //
+
15877 {4.2484498, -0.0525499992}, //
+
15878 {4.24849176, -0.0529067889}, //
+
15879 {4.24861813, -0.0532216057}, //
+
15880 {4.24882793, -0.053494446}, //
+
15881 {4.24912167, -0.0537253097}, //
+
15882 {4.24949932, -0.0539141968}, //
+
15883 {4.2499609, -0.0540611111}, //
+
15884 {4.25050688, -0.0541660488}, //
+
15885 {4.2511363, -0.0542290136}, //
+
15886 {4.25185013, -0.0542499982}, //
+
15887 {4.25218582, -0.0540820993}, //
+
15888 {4.25260544, -0.0538722239}, //
+
15889 {4.25394869, -0.0532006174}, //
+
15890 {4.25487232, -0.0527388901}, //
+
15891 {4.25590277, -0.0522237159}, //
+
15892 {4.25860023, -0.0559500009}, //
+
15893 {4.26157951, -0.0599895045}, //
+
15894 {4.26447392, -0.0638191327}, //
+
15895 {4.26728344, -0.0674388856}, //
+
15896 {4.27000761, -0.070848763}, //
+
15897 {4.27264643, -0.074048765}, //
+
15898 {4.27519989, -0.0770388916}, //
+
15899 {4.27766848, -0.0798191354}, //
+
15900 {4.27773428, -0.0798900947}, //
+
15901 {4.27554989, -0.0813499987}, //
+
15902 {4.26991129, -0.0851277784}, //
+
15903 {4.26853275, -0.0860512331}, //
+
15904 {4.26740503, -0.086806789}, //
+
15905 {4.26652765, -0.0873944461}, //
+
15906 {4.26590109, -0.0878141969}, //
+
15907 {4.26539993, -0.0881500021}, //
+
15908 {4.26539993, -0.0882339478}, //
+
15909 {4.26539993, -0.0883388892}, //
+
15910 {4.26539993, -0.0884857997}, //
+
15911 {4.26539993, -0.0886746943}, //
+
15912 {4.26539993, -0.0891783983}, //
+
15913 {4.26539993, -0.0894932076}, //
+
15914 {4.26539993, -0.089850001}, //
+
15915 {4.26542091, -0.0902277753}, //
+
15916 {4.26548386, -0.090605557}, //
+
15917 {4.26558876, -0.0909833312}, //
+
15918 {4.26573563, -0.0913611129}, //
+
15919 {4.26592445, -0.0917388871}, //
+
15920 {4.26615572, -0.0921166688}, //
+
15921 {4.26642847, -0.0924944431}, //
+
15922 {4.26674318, -0.0928722247}, //
+
15923 {4.26709986, -0.093249999}, //
+
15924 {4.26747799, -0.0936277807}, //
+
15925 {4.26785564, -0.0940055549}, //
+
15926 {4.2682333, -0.0943833366}, //
+
15927 {4.26898909, -0.0951388925}, //
+
15928 {4.26936674, -0.0955166668}, //
+
15929 {4.2697444, -0.095894441}, //
+
15930 {4.27012205, -0.0962722227}, //
+
15931 {4.27050018, -0.0966499969}, //
+
15932 {4.27089834, -0.0970271602}, //
+
15933 {4.27133703, -0.0974030867}, //
+
15934 {4.27181673, -0.0977777764}, //
+
15935 {4.27233696, -0.0981512368}, //
+
15936 {4.2728982, -0.0985234603}, //
+
15937 {4.27349997, -0.0988944471}, //
+
15938 {4.27414274, -0.0992641971}, //
+
15939 {4.27482605, -0.0996327177}, //
+
15940 {4.27554989, -0.100000001}, //
+
15941 {4.27630568, -0.100335799}, //
+
15942 {4.27706099, -0.100587651}, //
+
15943 {4.27781677, -0.100755557}, //
+
15944 {4.27857208, -0.100839503}, //
+
15945 {4.27932787, -0.100839503}, //
+
15946 {4.28008318, -0.100755557}, //
+
15947 {4.28083897, -0.100587651}, //
+
15948 {4.28159428, -0.100335799}, //
+
15949 {4.28235006, -0.100000001}, //
+
15950 {4.28314734, -0.0996117294}, //
+
15951 {4.28402901, -0.0991802439}, //
+
15952 {4.2849946, -0.0987055525}, //
+
15953 {4.28604364, -0.0981876552}, //
+
15954 {4.28717709, -0.0976265445}, //
+
15955 {4.28839445, -0.0970222205}, //
+
15956 {4.28969574, -0.0963746905}, //
+
15957 {4.29108095, -0.0956839472}, //
+
15958 {4.29255009, -0.094949998}, //
+
15959 {4.29531288, -0.0917245969}, //
+
15960 {4.29561615, -0.0919277743}, //
+
15961 {4.2966609, -0.0926833302}, //
+
15962 {4.29762363, -0.0934388861}, //
+
15963 {4.29850292, -0.094194442}, //
+
15964 {4.29930019, -0.094949998}, //
+
15965 {4.30013895, -0.0957049355}, //
+
15966 {4.3011446, -0.0964586437}, //
+
15967 {4.30231667, -0.0972111076}, //
+
15968 {4.30365562, -0.0979623422}, //
+
15969 {4.305161, -0.0987123474}, //
+
15970 {4.30683327, -0.0994611084}, //
+
15971 {4.30867243, -0.10020864}, //
+
15972 {4.31067801, -0.100954935}, //
+
15973 {4.31285, -0.1017}, //
+
15974 {4.31511593, -0.102455556}, //
+
15975 {4.31738091, -0.103211112}, //
+
15976 {4.31964445, -0.103966668}, //
+
15977 {4.32190657, -0.104722224}, //
+
15978 {4.32416773, -0.10547778}, //
+
15979 {4.32642794, -0.106233336}, //
+
15980 {4.32868624, -0.106988892}, //
+
15981 {4.33094406, -0.107744448}, //
+
15982 {4.33319998, -0.108499996}, //
+
15983 {4.33856106, -0.109171607}, //
+
15984 {4.34408903, -0.109675311}, //
+
15985 {4.34978342, -0.110011108}, //
+
15986 {4.35564423, -0.110179015}, //
+
15987 {4.3616724, -0.110179015}, //
+
15988 {4.36786652, -0.110011108}, //
+
15989 {4.374228, -0.109675311}, //
+
15990 {4.38075542, -0.109171607}, //
+
15991 {4.38745022, -0.108499996}, //
+
15992 {4.39507723, -0.107072838}, //
+
15993 {4.4028697, -0.105813578}, //
+
15994 {4.41082764, -0.104722224}, //
+
15995 {4.41895103, -0.103798762}, //
+
15996 {4.42723989, -0.103043213}, //
+
15997 {4.43569422, -0.102455556}, //
+
15998 {4.444314, -0.102035806}, //
+
15999 {4.45309925, -0.101783954}, //
+
16000 {4.46204996, -0.1017}, //
+
16001 {4.46952057, -0.102246299}, //
+
16002 {4.47686481, -0.102374077}, //
+
16003 {4.48408318, -0.102083333}, //
+
16004 {4.49117613, -0.101374075}, //
+
16005 {4.49814272, -0.100246295}, //
+
16006 {4.50498343, -0.0987000018}, //
+
16007 {4.51169825, -0.0967351869}, //
+
16008 {4.51828718, -0.0943518505}, //
+
16009 {4.52475023, -0.09155}, //
+
16010 {4.5310564, -0.0884759277}, //
+
16011 {4.53715229, -0.0852759257}, //
+
16012 {4.54303885, -0.0819500014}, //
+
16013 {4.54871559, -0.0784981474}, //
+
16014 {4.55418205, -0.0749203712}, //
+
16015 {4.55943871, -0.0712166652}, //
+
16016 {4.56448603, -0.067387037}, //
+
16017 {4.56932306, -0.063431479}, //
+
16018 {4.57394981, -0.0593499988}, //
+
16019 {4.57822084, -0.0553938262}, //
+
16020 {4.58198929, -0.0518141985}, //
+
16021 {4.58525562, -0.0486111119}, //
+
16022 {4.58801937, -0.0457845666}, //
+
16023 {4.59028006, -0.0433345661}, //
+
16024 {4.59203911, -0.0412611105}, //
+
16025 {4.5932951, -0.039564196}, //
+
16026 {4.59404898, -0.0382438265}, //
+
16027 {4.59429979, -0.0373000018}, //
+
16028 {4.59421587, -0.036481481}, //
+
16029 {4.5939641, -0.035537038}, //
+
16030 {4.59354448, -0.0344666652}, //
+
16031 {4.59295702, -0.0332703702}, //
+
16032 {4.59220123, -0.0319481492}, //
+
16033 {4.5912776, -0.0305000003}, //
+
16034 {4.5901866, -0.0289259255}, //
+
16035 {4.58892727, -0.0272259265}, //
+
16036 {4.5875001, -0.0253999997}, //
+
16037 {4.58591557, -0.0235425923}, //
+
16038 {4.58416176, -0.0217259265}, //
+
16039 {4.58223867, -0.0199500006}, //
+
16040 {4.58014679, -0.0182148144}, //
+
16041 {4.57788563, -0.0165203698}, //
+
16042 {4.57545567, -0.0148666669}, //
+
16043 {4.57285595, -0.0132537037}, //
+
16044 {4.57008743, -0.0116814813}, //
+
16045 {4.56715012, -0.0101500005}, //
+
16046 {4.56493568, -0.00789444428}, //
+
16047 {4.56280422, -0.00563888904}, //
+
16048 {4.56075573, -0.00338333333}, //
+
16049 {4.55878973, -0.00112777774}, //
+
16050 {4.55690622, 0.00112777774}, //
+
16051 {4.55510569, 0.00338333333}, //
+
16052 {4.55338764, 0.00563888904}, //
+
16053 {4.55175257, 0.00789444428}, //
+
16054 {4.55019999, 0.0101500005}, //
+
16055 {4.54947615, 0.0110098766}, //
+
16056 {4.54879236, 0.0120783951}, //
+
16057 {4.54815006, 0.0133555559}, //
+
16058 {4.54754829, 0.0148413582}, //
+
16059 {4.54698706, 0.0165358018}, //
+
16060 {4.54646683, 0.0184388887}, //
+
16061 {4.54598713, 0.0205506179}, //
+
16062 {4.54554796, 0.0228709877}, //
+
16063 {4.5451498, 0.0253999997}, //
+
16064 {4.54491568, 0.0271499995}, //
+
16065 {4.5468502, 0.0271499995}, //
+
16066 {4.54413557, 0.0343619585}, //
+
16067 {4.54397488, 0.0363037027}, //
+
16068 {4.54378557, 0.0391314812}, //
+
16069 {4.54363871, 0.0419999994}, //
+
16070 {4.5435338, 0.0449092574}, //
+
16071 {4.54347086, 0.0478592589}, //
+
16072 {4.54344988, 0.0508500002}, //
+
16073 {4.54412174, 0.053074073}, //
+
16074 {4.54462528, 0.0552129634}, //
+
16075 {4.54496098, 0.0572666675}, //
+
16076 {4.54512882, 0.0592351854}, //
+
16077 {4.54512882, 0.0611185171}, //
+
16078 {4.54496098, 0.0629166663}, //
+
16079 {4.54462528, 0.0646296293}, //
+
16080 {4.54412174, 0.0662574098}, //
+
16081 {4.54344988, 0.0678000003}, //
+
16082 {4.54254818, 0.0704012364}, //
+
16083 {4.5413537, 0.0736716017}, //
+
16084 {4.53986645, 0.0776111111}, //
+
16085 {4.53808689, 0.0822197497}, //
+
16086 {4.53601503, 0.0874975324}, //
+
16087 {4.53364992, 0.0934444442}, //
+
16088 {4.53099251, 0.100060493}, //
+
16089 {4.52804279, 0.107345678}, //
+
16090 {4.52479982, 0.1153}, //
+
16091 {4.52138996, 0.12358889}, //
+
16092 {4.51793814, 0.13187778}, //
+
16093 {4.51444435, 0.14016667}, //
+
16094 {4.5109086, 0.14845556}, //
+
16095 {4.50733089, 0.15674445}, //
+
16096 {4.50371122, 0.16503334}, //
+
16097 {4.50004959, 0.173322216}, //
+
16098 {4.49634552, 0.181611106}, //
+
16099 {4.49259996, 0.189899996}, //
+
16100 {4.48820305, 0.200024068}, //
+
16101 {4.48405695, 0.210818514}, //
+
16102 {4.48016119, 0.222283334}, //
+
16103 {4.47651625, 0.234418511}, //
+
16104 {4.47312164, 0.247224078}, //
+
16105 {4.46997786, 0.260699987}, //
+
16106 {4.46708441, 0.274846286}, //
+
16107 {4.46444178, 0.289662957}, //
+
16108 {4.46204996, 0.305150002}, //
+
16109 {4.45987797, 0.32055369}, //
+
16110 {4.45787239, 0.33512038}, //
+
16111 {4.45603323, 0.348850012}, //
+
16112 {4.45436096, 0.361742586}, //
+
16113 {4.45285559, 0.373798162}, //
+
16114 {4.45151663, 0.38501668}, //
+
16115 {4.45034456, 0.39539814}, //
+
16116 {4.44933891, 0.404942602}, //
+
16117 {4.44850016, 0.413650006}, //
+
16118 {4.44774437, 0.4238469}, //
+
16119 {4.44698906, 0.434837669}, //
+
16120 {4.44623327, 0.446622223}, //
+
16121 {4.44547796, 0.459200621}, //
+
16122 {4.44472218, 0.472572833}, //
+
16123 {4.44396687, 0.48673889}, //
+
16124 {4.44321108, 0.501698792}, //
+
16125 {4.44245577, 0.517452478}, //
+
16126 {4.44169998, 0.533999979}, //
+
16127 {4.44099712, 0.550641358}, //
+
16128 {4.44037676, 0.566654325}, //
+
16129 {4.43983889, 0.582038879}, //
+
16130 {4.43938398, 0.596795082}, //
+
16131 {4.43901157, 0.610922813}, //
+
16132 {4.43872213, 0.624422193}, //
+
16133 {4.43851566, 0.63729322}, //
+
16134 {4.43839121, 0.649535775}, //
+
16135 {4.4383502, 0.661149979}, //
+
16136 {4.43837023, 0.668419778}, //
+
16137 {4.43843126, 0.676651239}, //
+
16138 {4.43853331, 0.685844421}, //
+
16139 {4.43867588, 0.695999384}, //
+
16140 {4.43885946, 0.707116067}, //
+
16141 {4.4390831, 0.719194472}, //
+
16142 {4.43934822, 0.732234597}, //
+
16143 {4.43965387, 0.746236444}, //
+
16144 {4.44000006, 0.761200011}, //
+
16145 {4.44037771, 0.776602447}, //
+
16146 {4.44075537, 0.79192096}, //
+
16147 {4.4411335, 0.80715555}, //
+
16148 {4.44151115, 0.822306156}, //
+
16149 {4.44188881, 0.837372839}, //
+
16150 {4.44226646, 0.85235554}, //
+
16151 {4.4426446, 0.867254317}, //
+
16152 {4.44302225, 0.882069111}, //
+
16153 {4.44339991, 0.896799982}, //
+
16154 {4.44379854, 0.911059856}, //
+
16155 {4.44423962, 0.92443949}, //
+
16156 {4.44472218, 0.936938882}, //
+
16157 {4.4452467, 0.948558033}, //
+
16158 {4.44581366, 0.959296942}, //
+
16159 {4.4464221, 0.96915555}, //
+
16160 {4.44707298, 0.978133976}, //
+
16161 {4.44776535, 0.986232102}, //
+
16162 {4.44850016, 0.993449986}, //
+
16163 {4.44841623, 0.999691963}, //
+
16164 {4.44816399, 1.00635123}, //
+
16165 {4.44774437, 1.01342773}, //
+
16166 {4.44715691, 1.02092159}, //
+
16167 {4.44640112, 1.02883267}, //
+
16168 {4.44547796, 1.03716111}, //
+
16169 {4.44438648, 1.04590678}, //
+
16170 {4.44312716, 1.0550698}, //
+
16171 {4.44169998, 1.06465006}, //
+
16172 {4.43889809, 1.07754254}, //
+
16173 {4.43651485, 1.0921092}, //
+
16174 {4.43454981, 1.10835004}, //
+
16175 {4.4330039, 1.12626481}, //
+
16176 {4.43187571, 1.14585376}, //
+
16177 {4.43116665, 1.16711664}, //
+
16178 {4.43087578, 1.1900537}, //
+
16179 {4.43100357, 1.21466482}, //
+
16180 {4.43155003, 1.24094999}, //
+
16181 {4.43155003, 1.24405551}, //
+
16182 {4.43155003, 1.2473278}, //
+
16183 {4.43155003, 1.26208329}, //
+
16184 {4.43155003, 1.26618886}, //
+
16185 {4.43155003, 1.27046108}, //
+
16186 {4.43155003, 1.27489996}, //
+
16187 {4.43243074, 1.29511666}, //
+
16188 {4.43356228, 1.31658888}, //
+
16189 {4.43494463, 1.33931673}, //
+
16190 {4.43657732, 1.36329997}, //
+
16191 {4.43846035, 1.38853884}, //
+
16192 {4.44059467, 1.41503334}, //
+
16193 {4.44297886, 1.44278336}, //
+
16194 {4.44561434, 1.47178888}, //
+
16195 {4.44850016, 1.50205004}, //
+
16196 {4.45228767, 1.52380061}, //
+
16197 {4.45611715, 1.54534137}, //
+
16198 {4.45883751, 1.56032884}, //
+
16199 {4.45941114, 1.56045556}, //
+
16200 {4.4603734, 1.56072843}, //
+
16201 {4.46125317, 1.56104326}, //
+
16202 {4.46204996, 1.56140006}, //
+
16203 {4.46339321, 1.56207156}, //
+
16204 {4.46393871, 1.56234443}, //
+
16205 {4.46440077, 1.56257534}, //
+
16206 {4.46477842, 1.56276417}, //
+
16207 {4.46507215, 1.56291115}, //
+
16208 {4.46528196, 1.56301606}, //
+
16209 {4.46540785, 1.563079}, //
+
16210 {4.46544981, 1.56309998}, //
+
16211 {4.46492529, 1.56309998}, //
+
16212 {4.4646945, 1.56309998}, //
+
16213 {4.46442175, 1.56309998}, //
+
16214 {4.46186113, 1.56309998}, //
+
16215 {4.46148348, 1.56309998}, //
+
16216 {4.46110535, 1.56309998}, //
+
16217 {4.45934057, 1.56309998}, //
+
16218 {4.45998907, 1.56667221}, //
+
16219 {4.46390247, 1.58779323}, //
+
16220 {4.46785784, 1.60870433}, //
+
16221 {4.47185564, 1.6294055}, //
+
16222 {4.47589493, 1.64989686}, //
+
16223 {4.47997665, 1.67017841}, //
+
16224 {4.48409986, 1.69025004}, //
+
16225 {4.48818159, 1.70981848}, //
+
16226 {4.49213696, 1.72859073}, //
+
16227 {4.49596643, 1.74656665}, //
+
16228 {4.49967051, 1.76374626}, //
+
16229 {4.50324821, 1.78012967}, //
+
16230 {4.50670004, 1.79571664}, //
+
16231 {4.51002598, 1.81050742}, //
+
16232 {4.51322603, 1.82450187}, //
+
16233 {4.5163002, 1.83770001}, //
+
16234 {4.52167273, 1.8604753}, //
+
16235 {4.52385569, 1.86972773}, //
+
16236 {4.52570248, 1.8775568}, //
+
16237 {4.52721357, 1.88396239}, //
+
16238 {4.52838898, 1.88894439}, //
+
16239 {4.52922821, 1.89250314}, //
+
16240 {4.52973223, 1.8946383}, //
+
16241 {4.52990007, 1.89534998}, //
+
16242 {4.53021336, 1.89543331}, //
+
16243 {4.53115416, 1.89568329}, //
+
16244 {4.532722, 1.89610004}, //
+
16245 {4.53491735, 1.89668334}, //
+
16246 {4.55530024, 1.90209997}, //
+
16247 {4.56099701, 1.90373647}, //
+
16248 {4.56677675, 1.90562344}, //
+
16249 {4.57263899, 1.9077611}, //
+
16250 {4.57858372, 1.91014934}, //
+
16251 {4.58461189, 1.91278827}, //
+
16252 {4.59072208, 1.91567779}, //
+
16253 {4.59691525, 1.91881788}, //
+
16254 {4.60319138, 1.92220867}, //
+
16255 {4.60955, 1.92585003}, //
+
16256 {4.61593962, 1.92966855}, //
+
16257 {4.62228584, 1.93356848}, //
+
16258 {4.62858868, 1.93754995}, //
+
16259 {4.63484859, 1.94161296}, //
+
16260 {4.6410656, 1.94575739}, //
+
16261 {4.64723873, 1.94998336}, //
+
16262 {4.65336895, 1.95429075}, //
+
16263 {4.65945625, 1.95867968}, //
+
16264 {4.66550016, 1.96315002}, //
+
16265 {4.66713619, 1.96486974}, //
+
16266 {4.66902351, 1.9670068}, //
+
16267 {4.67116117, 1.9695611}, //
+
16268 {4.67354918, 1.97253275}, //
+
16269 {4.67618847, 1.97592163}, //
+
16270 {4.67907763, 1.97972775}, //
+
16271 {4.68221807, 1.98395121}, //
+
16272 {4.68560886, 1.98859203}, //
+
16273 {4.68924999, 1.99364996}, //
+
16274 {4.69303751, 1.99894881}, //
+
16275 {4.69686747, 2.00428939}, //
+
16276 {4.70073891, 2.00967216}, //
+
16277 {4.70465231, 2.0150969}, //
+
16278 {4.70860815, 2.0205636}, //
+
16279 {4.71260548, 2.02607226}, //
+
16280 {4.71664524, 2.03162289}, //
+
16281 {4.72072649, 2.03721547}, //
+
16282 {4.72485018, 2.04285002}, //
+
16283 {4.72895241, 2.04846287}, //
+
16284 {4.73297119, 2.05399084}, //
+
16285 {4.73690557, 2.05943322}, //
+
16286 {4.74075603, 2.06479073}, //
+
16287 {4.74452305, 2.07006288}, //
+
16288 {4.74820566, 2.07524991}, //
+
16289 {4.75180435, 2.08035183}, //
+
16290 {4.75531912, 2.08536863}, //
+
16291 {4.75874996, 2.09030008}, //
+
16292 {4.76195049, 2.09492779}, //
+
16293 {4.7647748, 2.09901118}, //
+
16294 {4.7672224, 2.10255003}, //
+
16295 {4.76929331, 2.10554433}, //
+
16296 {4.77098751, 2.10799456}, //
+
16297 {4.77230549, 2.1099}, //
+
16298 {4.77324677, 2.11126113}, //
+
16299 {4.77400017, 2.11234999}, //
+
16300 {4.77400017, 2.11234999}, //
+
16301 {4.77490187, 2.11157346}, //
+
16302 });
+
16303 polys.push_back({
+
16304 {0.315349996, 3.30925012}, //
+
16305 {0.316659868, 3.31161857}, //
+
16306 {0.319100618, 3.31570196}, //
+
16307 {0.322672218, 3.32150006}, //
+
16308 {0.327374697, 3.32901287}, //
+
16309 {0.333208025, 3.33824062}, //
+
16310 {0.340172231, 3.34918332}, //
+
16311 {0.348267287, 3.36184072}, //
+
16312 {0.357493222, 3.37621307}, //
+
16313 {0.367850006, 3.39229989}, //
+
16314 {0.379054934, 3.40954804}, //
+
16315 {0.390803099, 3.42738152}, //
+
16316 {0.403094441, 3.44580007}, //
+
16317 {0.415929019, 3.4648037}, //
+
16318 {0.429306775, 3.48439264}, //
+
16319 {0.443227768, 3.50456667}, //
+
16320 {0.457691967, 3.52532601}, //
+
16321 {0.472699374, 3.54667044}, //
+
16322 {0.488249987, 3.56859994}, //
+
16323 {0.503988862, 3.59039378}, //
+
16324 {0.519561112, 3.61130857}, //
+
16325 {0.534966648, 3.63134456}, //
+
16326 {0.550205529, 3.65050125}, //
+
16327 {0.565277755, 3.6687789}, //
+
16328 {0.580183327, 3.68617773}, //
+
16329 {0.594922245, 3.70269752}, //
+
16330 {0.609494448, 3.71833825}, //
+
16331 {0.623899996, 3.73309994}, //
+
16332 {0.648881495, 3.75652027}, //
+
16333 {0.674114823, 3.77855921}, //
+
16334 {0.699599981, 3.79921675}, //
+
16335 {0.725337029, 3.81849265}, //
+
16336 {0.751325905, 3.83638692}, //
+
16337 {0.777566671, 3.85290003}, //
+
16338 {0.804059267, 3.8680315}, //
+
16339 {0.830803692, 3.88178158}, //
+
16340 {0.857800007, 3.89415002}, //
+
16341 {0.884514213, 3.90547156}, //
+
16342 {0.910390139, 3.91608095}, //
+
16343 {0.935427785, 3.92597771}, //
+
16344 {0.959627151, 3.93516231}, //
+
16345 {0.982988298, 3.94363451}, //
+
16346 {1.00551116, 3.95139456}, //
+
16347 {1.02719569, 3.95844197}, //
+
16348 {1.04804194, 3.96477723}, //
+
16349 {1.06805003, 3.97040009}, //
+
16350 {1.0747025, 3.97266603}, //
+
16351 {1.08110428, 3.97493076}, //
+
16352 {1.0872556, 3.97719455}, //
+
16353 {1.09315622, 3.9794569}, //
+
16354 {1.09880614, 3.98171782}, //
+
16355 {1.10420561, 3.98397779}, //
+
16356 {1.10935438, 3.98623633}, //
+
16357 {1.11425245, 3.98849392}, //
+
16358 {1.11889994, 3.99075007}, //
+
16359 {1.13566601, 3.99585986}, //
+
16360 {1.15280867, 4.00063372}, //
+
16361 {1.17032778, 4.00507212}, //
+
16362 {1.18822348, 4.00917482}, //
+
16363 {1.20649564, 4.01294136}, //
+
16364 {1.22514439, 4.0163722}, //
+
16365 {1.24416971, 4.01946735}, //
+
16366 {1.26357162, 4.02222633}, //
+
16367 {1.28334999, 4.0246501}, //
+
16368 {1.30287719, 4.02683258}, //
+
16369 {1.32152534, 4.02884769}, //
+
16370 {1.33929443, 4.03069448}, //
+
16371 {1.3561846, 4.03237343}, //
+
16372 {1.37219572, 4.03388453}, //
+
16373 {1.38732779, 4.03522778}, //
+
16374 {1.40158081, 4.03640318}, //
+
16375 {1.4149549, 4.03741026}, //
+
16376 {1.42744994, 4.03824997}, //
+
16377 {1.42896116, 4.03824997}, //
+
16378 {1.42971671, 4.03824997}, //
+
16379 {1.43047225, 4.03824997}, //
+
16380 {1.43425, 4.03824997}, //
+
16381 {1.45488083, 4.04038048}, //
+
16382 {1.48886108, 4.04388905}, //
+
16383 {1.5022105, 4.04526711}, //
+
16384 {1.52162778, 4.04727221}, //
+
16385 {1.52769566, 4.04789877}, //
+
16386 {1.53254998, 4.04839993}, //
+
16387 {1.53225684, 4.04835796}, //
+
16388 {1.5313772, 4.04823208}, //
+
16389 {1.52785861, 4.04772854}, //
+
16390 {1.5252198, 4.04735041}, //
+
16391 {1.52199447, 4.04688883}, //
+
16392 {1.51818275, 4.04634333}, //
+
16393 {1.50880003, 4.04500008}, //
+
16394 {1.50338638, 4.0442338}, //
+
16395 {1.497679, 4.04342461}, //
+
16396 {1.49167776, 4.04257202}, //
+
16397 {1.48538268, 4.04167652}, //
+
16398 {1.47879386, 4.04073763}, //
+
16399 {1.47191107, 4.03975534}, //
+
16400 {1.46473455, 4.03873014}, //
+
16401 {1.45726418, 4.03766155}, //
+
16402 {1.44949996, 4.03655005}, //
+
16403 {1.44154692, 4.0354166}, //
+
16404 {1.43350983, 4.03428316}, //
+
16405 {1.42538893, 4.0331502}, //
+
16406 {1.417184, 4.03201675}, //
+
16407 {1.40889502, 4.03088331}, //
+
16408 {1.40052223, 4.02974987}, //
+
16409 {1.39206541, 4.02861643}, //
+
16410 {1.38352466, 4.02748346}, //
+
16411 {1.37489998, 4.02635002}, //
+
16412 {1.36638021, 4.02524805}, //
+
16413 {1.3581543, 4.02418709}, //
+
16414 {1.35022223, 4.02316666}, //
+
16415 {1.34258389, 4.02218723}, //
+
16416 {1.33523953, 4.02124834}, //
+
16417 {1.3281889, 4.02034998}, //
+
16418 {1.32143211, 4.01949263}, //
+
16419 {1.31496918, 4.0186758}, //
+
16420 {1.30879998, 4.01789999}, //
+
16421 {1.29171789, 4.01480484}, //
+
16422 {1.27513826, 4.01154184}, //
+
16423 {1.2590611, 4.008111}, //
+
16424 {1.2434864, 4.00451231}, //
+
16425 {1.22841418, 4.00074577}, //
+
16426 {1.21384442, 3.99681115}, //
+
16427 {1.19977713, 3.99270868}, //
+
16428 {1.1862123, 3.98843837}, //
+
16429 {1.17314994, 3.98399997}, //
+
16430 {1.16795611, 3.98253083}, //
+
16431 {1.16293025, 3.98114562}, //
+
16432 {1.15807223, 3.97984433}, //
+
16433 {1.15338206, 3.9786272}, //
+
16434 {1.14885986, 3.97749376}, //
+
16435 {1.1445055, 3.97644448}, //
+
16436 {1.14031911, 3.97547913}, //
+
16437 {1.13630056, 3.97459745}, //
+
16438 {1.13244998, 3.97379994}, //
+
16439 {1.12565303, 3.97200608}, //
+
16440 {1.11730683, 3.96962476}, //
+
16441 {1.10741115, 3.96665549}, //
+
16442 {1.0959661, 3.96309876}, //
+
16443 {1.08297157, 3.95895433}, //
+
16444 {1.0684278, 3.9542222}, //
+
16445 {1.05233455, 3.94890237}, //
+
16446 {1.03469193, 3.94299507}, //
+
16447 {1.01549995, 3.93650007}, //
+
16448 {0.995365441, 3.92945004}, //
+
16449 {0.97489506, 3.92185545}, //
+
16450 {0.954088867, 3.91371655}, //
+
16451 {0.93294692, 3.90503335}, //
+
16452 {0.911469162, 3.8958056}, //
+
16453 {0.88965553, 3.8860333}, //
+
16454 {0.867506146, 3.87571669}, //
+
16455 {0.845021009, 3.86485553}, //
+
16456 {0.8222, 3.85345006}, //
+
16457 {0.799619734, 3.84166718}, //
+
16458 {0.777834594, 3.82967472}, //
+
16459 {0.756844461, 3.81747222}, //
+
16460 {0.736649394, 3.80505991}, //
+
16461 {0.717249393, 3.79243755}, //
+
16462 {0.698644459, 3.77960563}, //
+
16463 {0.680834591, 3.76656365}, //
+
16464 {0.66381973, 3.75331163}, //
+
16465 {0.647599995, 3.73985004}, //
+
16466 {0.64036113, 3.7310586}, //
+
16467 {0.632200003, 3.72126245}, //
+
16468 {0.623116672, 3.71046114}, //
+
16469 {0.613111138, 3.69865489}, //
+
16470 {0.602183342, 3.68584394}, //
+
16471 {0.590333343, 3.67202783}, //
+
16472 {0.57756114, 3.65720677}, //
+
16473 {0.563866675, 3.64138079}, //
+
16474 {0.549250007, 3.6245501}, //
+
16475 {0.534392595, 3.60731101}, //
+
16476 {0.519953728, 3.59023881}, //
+
16477 {0.505933344, 3.57333326}, //
+
16478 {0.492331475, 3.55659437}, //
+
16479 {0.479148149, 3.54002213}, //
+
16480 {0.466383338, 3.52361655}, //
+
16481 {0.45403704, 3.50737786}, //
+
16482 {0.442109257, 3.49130559}, //
+
16483 {0.430599988, 3.47539997}, //
+
16484 {0.429015428, 3.47091985}, //
+
16485 {0.42726174, 3.46652341}, //
+
16486 {0.425338894, 3.46221113}, //
+
16487 {0.42324692, 3.45798278}, //
+
16488 {0.420985788, 3.45383835}, //
+
16489 {0.418555558, 3.44977784}, //
+
16490 {0.415956169, 3.44580126}, //
+
16491 {0.413187653, 3.4419086}, //
+
16492 {0.410250008, 3.4381001}, //
+
16493 {0.406483322, 3.43206668}, //
+
16494 {0.402716666, 3.42603326}, //
+
16495 {0.395183325, 3.41396666}, //
+
16496 {0.391416669, 3.40793324}, //
+
16497 {0.387650013, 3.40190005}, //
+
16498 {0.383883327, 3.39586663}, //
+
16499 {0.380116671, 3.38983345}, //
+
16500 {0.376349986, 3.38380003}, //
+
16501 {0.37258333, 3.37794495}, //
+
16502 {0.368816674, 3.3724246}, //
+
16503 {0.365049988, 3.367239}, //
+
16504 {0.361283332, 3.36238766}, //
+
16505 {0.357516676, 3.35787106}, //
+
16506 {0.35374999, 3.35368896}, //
+
16507 {0.349983335, 3.34984136}, //
+
16508 {0.346216679, 3.3463285}, //
+
16509 {0.342449993, 3.3431499}, //
+
16510 {0.336762339, 3.33603525}, //
+
16511 {0.327394456, 3.32431674}, //
+
16512 {0.323714197, 3.31971288}, //
+
16513 {0.320703089, 3.31594634}, //
+
16514 {0.318361104, 3.31301665}, //
+
16515 {0.315684557, 3.30966854}, //
+
16516 {0.315349996, 3.30925012}, //
+
16517 });
+
16518 polys.push_back({
+
16519 {2.78422284, 1.74705005}, //
+
16520 {2.7857914, 1.74975002}, //
+
16521 {2.80252218, 1.77855003}, //
+
16522 {2.80931902, 1.79024994}, //
+
16523 {2.82605004, 1.81904995}, //
+
16524 {2.8356185, 1.83566856}, //
+
16525 {2.84547973, 1.85312402}, //
+
16526 {2.85563326, 1.87141669}, //
+
16527 {2.86607957, 1.89054632}, //
+
16528 {2.87681842, 1.91051292}, //
+
16529 {2.88785005, 1.93131661}, //
+
16530 {2.89917397, 1.95295739}, //
+
16531 {2.91079068, 1.97543514}, //
+
16532 {2.92269993, 1.99874997}, //
+
16533 {2.93460917, 2.02251482}, //
+
16534 {2.94622588, 2.04632044}, //
+
16535 {2.95755005, 2.07016659}, //
+
16536 {2.96858144, 2.09405375}, //
+
16537 {2.97932029, 2.11798143}, //
+
16538 {2.9897666, 2.14194989}, //
+
16539 {2.99992037, 2.16595936}, //
+
16540 {3.0097816, 2.19000936}, //
+
16541 {3.01935005, 2.21409988}, //
+
16542 {3.02829075, 2.23787594}, //
+
16543 {3.03626847, 2.26098156}, //
+
16544 {3.04328322, 2.28341675}, //
+
16545 {3.04933524, 2.3051815}, //
+
16546 {3.05442405, 2.32627583}, //
+
16547 {3.05854988, 2.34669995}, //
+
16548 {3.06171298, 2.36645365}, //
+
16549 {3.06391287, 2.38553715}, //
+
16550 {3.06515002, 2.40394998}, //
+
16551 {3.06515002, 2.40464067}, //
+
16552 {3.06515002, 2.41016674}, //
+
16553 {3.06515002, 2.41500187}, //
+
16554 {3.06515002, 2.4598999}, //
+
16555 {3.06515002, 2.47260499}, //
+
16556 {3.06515002, 2.49964452}, //
+
16557 {3.06515002, 2.59380007}, //
+
16558 {3.06517029, 2.61104941}, //
+
16559 {3.06523156, 2.62813091}, //
+
16560 {3.06533337, 2.64504433}, //
+
16561 {3.06547594, 2.66179013}, //
+
16562 {3.06565928, 2.67836785}, //
+
16563 {3.0658834, 2.69477773}, //
+
16564 {3.06614804, 2.71101975}, //
+
16565 {3.0664537, 2.72709394}, //
+
16566 {3.06680012, 2.74300003}, //
+
16567 {3.06719875, 2.75836229}, //
+
16568 {3.06763959, 2.77280498}, //
+
16569 {3.06812215, 2.78632784}, //
+
16570 {3.06864691, 2.79893088}, //
+
16571 {3.06921363, 2.81061411}, //
+
16572 {3.06982231, 2.82137775}, //
+
16573 {3.07047296, 2.83122158}, //
+
16574 {3.07116532, 2.84014559}, //
+
16575 {3.07189989, 2.84815001}, //
+
16576 {3.07194209, 2.84846354}, //
+
16577 {3.07206798, 2.84940434}, //
+
16578 {3.07257152, 2.8531673}, //
+
16579 {3.07294941, 2.85598946}, //
+
16580 {3.07341123, 2.8594389}, //
+
16581 {3.07395673, 2.86351538}, //
+
16582 {3.07458639, 2.86821914}, //
+
16583 {3.07529998, 2.87354994}, //
+
16584 {3.07601357, 2.87935185}, //
+
16585 {3.07664323, 2.88544631}, //
+
16586 {3.07718897, 2.89183331}, //
+
16587 {3.07765055, 2.89851308}, //
+
16588 {3.07802844, 2.90548515}, //
+
16589 {3.07832217, 2.91275001}, //
+
16590 {3.07853198, 2.9203074}, //
+
16591 {3.0786581, 2.92815733}, //
+
16592 {3.07870007, 2.93630004}, //
+
16593 {3.0786581, 2.94458818}, //
+
16594 {3.07853198, 2.95287538}, //
+
16595 {3.07832217, 2.96116114}, //
+
16596 {3.07802844, 2.96944571}, //
+
16597 {3.07765055, 2.97772908}, //
+
16598 {3.07718897, 2.98601103}, //
+
16599 {3.07664323, 2.99429202}, //
+
16600 {3.07601357, 3.00257158}, //
+
16601 {3.07529998, 3.01084995}, //
+
16602 {3.07441902, 3.0190556}, //
+
16603 {3.07328773, 3.02709436}, //
+
16604 {3.07190561, 3.03496671}, //
+
16605 {3.07027292, 3.04267216}, //
+
16606 {3.06838942, 3.05021119}, //
+
16607 {3.06625557, 3.05758333}, //
+
16608 {3.06387091, 3.06478882}, //
+
16609 {3.0612359, 3.07182789}, //
+
16610 {3.05835009, 3.07870007}, //
+
16611 {3.04089761, 3.09406543}, //
+
16612 {3.03555489, 3.09876919}, //
+
16613 {3.02950001, 3.10409999}, //
+
16614 {3.02303696, 3.10992289}, //
+
16615 {3.01644826, 3.11608028}, //
+
16616 {3.00973344, 3.12257218}, //
+
16617 {3.00289249, 3.12939882}, //
+
16618 {2.9959259, 3.13655996}, //
+
16619 {2.98883343, 3.1440556}, //
+
16620 {2.98161483, 3.15188575}, //
+
16621 {2.97427034, 3.16005063}, //
+
16622 {2.96679997, 3.16855001}, //
+
16623 {2.95947599, 3.17732096}, //
+
16624 {2.95257044, 3.18630052}, //
+
16625 {2.94608331, 3.19548893}, //
+
16626 {2.94001484, 3.20488572}, //
+
16627 {2.9343648, 3.21449137}, //
+
16628 {2.92913342, 3.22430563}, //
+
16629 {2.92432046, 3.23432851}, //
+
16630 {2.91992593, 3.24455976}, //
+
16631 {2.91595006, 3.25500011}, //
+
16632 {2.9096241, 3.27283525}, //
+
16633 {2.90271306, 3.29167414}, //
+
16634 {2.8952167, 3.31151676}, //
+
16635 {2.88713527, 3.33236289}, //
+
16636 {2.87846851, 3.354213}, //
+
16637 {2.86921668, 3.37706661}, //
+
16638 {2.85937953, 3.40092397}, //
+
16639 {2.8489573, 3.4257853}, //
+
16640 {2.83794999, 3.4516499}, //
+
16641 {2.82681727, 3.47719002}, //
+
16642 {2.81601906, 3.501055}, //
+
16643 {2.80555558, 3.52324438}, //
+
16644 {2.79542661, 3.54375863}, //
+
16645 {2.78563213, 3.56259751}, //
+
16646 {2.77617216, 3.57976103}, //
+
16647 {2.76704693, 3.59524941}, //
+
16648 {2.7582562, 3.60906243}, //
+
16649 {2.74979997, 3.62120008}, //
+
16650 {2.74111366, 3.63077974}, //
+
16651 {2.73163199, 3.63994074}, //
+
16652 {2.72135544, 3.64868331}, //
+
16653 {2.71028399, 3.65700746}, //
+
16654 {2.69841719, 3.66491294}, //
+
16655 {2.68575549, 3.6724}, //
+
16656 {2.67229867, 3.67946863}, //
+
16657 {2.65804696, 3.6861186}, //
+
16658 {2.64299989, 3.69234991}, //
+
16659 {2.62795305, 3.69821596}, //
+
16660 {2.61370134, 3.70374751}, //
+
16661 {2.60024452, 3.70894456}, //
+
16662 {2.58758283, 3.71380687}, //
+
16663 {2.57571602, 3.71833467}, //
+
16664 {2.56464434, 3.72252774}, //
+
16665 {2.55436802, 3.72638631}, //
+
16666 {2.54488635, 3.72991061}, //
+
16667 {2.53620005, 3.73309994}, //
+
16668 {2.52728152, 3.73619509}, //
+
16669 {2.51861477, 3.73945808}, //
+
16670 {2.51020002, 3.74288893}, //
+
16671 {2.50203705, 3.74648762}, //
+
16672 {2.49412584, 3.75025439}, //
+
16673 {2.48646665, 3.75418878}, //
+
16674 {2.47905922, 3.75829124}, //
+
16675 {2.4719038, 3.7625618}, //
+
16676 {2.46499991, 3.76699996}, //
+
16677 {2.46035242, 3.77005315}, //
+
16678 {2.45545435, 3.77319002}, //
+
16679 {2.45030546, 3.77641106}, //
+
16680 {2.44490623, 3.77971601}, //
+
16681 {2.43925619, 3.7831049}, //
+
16682 {2.43335557, 3.7865777}, //
+
16683 {2.42720437, 3.79013467}, //
+
16684 {2.42080235, 3.79377532}, //
+
16685 {2.41415, 3.7974999}, //
+
16686 {2.40382719, 3.80292416}, //
+
16687 {2.39245868, 3.80864072}, //
+
16688 {2.38004446, 3.81465006}, //
+
16689 {2.36658454, 3.82095194}, //
+
16690 {2.35207891, 3.82754636}, //
+
16691 {2.33652782, 3.83443332}, //
+
16692 {2.31993079, 3.84161305}, //
+
16693 {2.30228829, 3.84908509}, //
+
16694 {2.28360009, 3.85684991}, //
+
16695 {2.26470256, 3.8645308}, //
+
16696 {2.24643207, 3.87175131}, //
+
16697 {2.22878885, 3.87851119}, //
+
16698 {2.21177292, 3.88481045}, //
+
16699 {2.19538403, 3.89064932}, //
+
16700 {2.17962217, 3.8960278}, //
+
16701 {2.1644876, 3.90094566}, //
+
16702 {2.14998031, 3.90540314}, //
+
16703 {2.13610005, 3.90939999}, //
+
16704 {2.12630057, 3.9116981}, //
+
16705 {2.11650252, 3.91408157}, //
+
16706 {2.10670567, 3.91654992}, //
+
16707 {2.09690976, 3.91910362}, //
+
16708 {2.08711553, 3.92174268}, //
+
16709 {2.07732224, 3.92446661}, //
+
16710 {2.06753016, 3.9272759}, //
+
16711 {2.0577395, 3.9301703}, //
+
16712 {2.04795003, 3.93315005}, //
+
16713 {2.03652406, 3.93753648}, //
+
16714 {2.02484632, 3.94167352}, //
+
16715 {2.01291656, 3.94556117}, //
+
16716 {2.00073528, 3.94919944}, //
+
16717 {1.98830187, 3.95258832}, //
+
16718 {1.97561669, 3.95572782}, //
+
16719 {1.96267962, 3.95861793}, //
+
16720 {1.94949079, 3.96125865}, //
+
16721 {1.93605006, 3.96364999}, //
+
16722 {1.92336416, 3.96444702}, //
+
16723 {1.91092896, 3.96532655}, //
+
16724 {1.89874446, 3.96628881}, //
+
16725 {1.88681054, 3.96733403}, //
+
16726 {1.8751272, 3.96846175}, //
+
16727 {1.86369443, 3.9696722}, //
+
16728 {1.85251236, 3.97096539}, //
+
16729 {1.84158087, 3.9723413}, //
+
16730 {1.83089995, 3.97379994}, //
+
16731 {1.82064879, 3.97526908}, //
+
16732 {1.8109839, 3.97665429}, //
+
16733 {1.80190551, 3.97795558}, //
+
16734 {1.79341364, 3.97917295}, //
+
16735 {1.78550804, 3.98030615}, //
+
16736 {1.77818894, 3.98135567}, //
+
16737 {1.77145612, 3.98232102}, //
+
16738 {1.76530993, 3.98320246}, //
+
16739 {1.75975001, 3.98399997}, //
+
16740 {1.75660312, 3.98550057}, //
+
16741 {1.75320685, 3.98700237}, //
+
16742 {1.74956107, 3.9885056}, //
+
16743 {1.74566603, 3.99000978}, //
+
16744 {1.7415216, 3.9915154}, //
+
16745 {1.73712778, 3.9930222}, //
+
16746 {1.73248458, 3.9945302}, //
+
16747 {1.72759199, 3.99603939}, //
+
16748 {1.72245002, 3.99755001}, //
+
16749 {1.71639574, 3.99908137}, //
+
16750 {1.71029937, 4.00065374}, //
+
16751 {1.70416117, 4.00226688}, //
+
16752 {1.69798088, 4.00392056}, //
+
16753 {1.69175863, 4.00561476}, //
+
16754 {1.68549442, 4.00734997}, //
+
16755 {1.67918825, 4.00912571}, //
+
16756 {1.67284012, 4.01094246}, //
+
16757 {1.66645002, 4.01280022}, //
+
16758 {1.66028023, 4.01458406}, //
+
16759 {1.65457094, 4.0161581}, //
+
16760 {1.64932227, 4.01752234}, //
+
16761 {1.64453399, 4.01867676}, //
+
16762 {1.64020622, 4.0196209}, //
+
16763 {1.63633883, 4.0203557}, //
+
16764 {1.63293207, 4.02088022}, //
+
16765 {1.62998581, 4.02119493}, //
+
16766 {1.62750006, 4.02129984}, //
+
16767 {1.62409997, 4.02129984}, //
+
16768 {1.62401605, 4.02121592}, //
+
16769 {1.62391114, 4.02111101}, //
+
16770 {1.62376416, 4.02096415}, //
+
16771 {1.62357533, 4.02077532}, //
+
16772 {1.62334442, 4.02054453}, //
+
16773 {1.62307155, 4.02027178}, //
+
16774 {1.62275684, 4.01995659}, //
+
16775 {1.62240005, 4.01959991}, //
+
16776 {1.62204325, 4.01924324}, //
+
16777 {1.62172842, 4.01892853}, //
+
16778 {1.62145555, 4.01865578}, //
+
16779 {1.62103581, 4.01823568}, //
+
16780 {1.62078393, 4.01798391}, //
+
16781 {1.62072098, 4.01792097}, //
+
16782 {1.6207, 4.01789999}, //
+
16783 {1.6207, 4.01620007}, //
+
16784 {1.62067902, 4.01584339}, //
+
16785 {1.62061608, 4.0155282}, //
+
16786 {1.62051105, 4.01525545}, //
+
16787 {1.62036419, 4.01502466}, //
+
16788 {1.62017536, 4.01483583}, //
+
16789 {1.61994445, 4.01468897}, //
+
16790 {1.61967158, 4.01458406}, //
+
16791 {1.61935675, 4.01452112}, //
+
16792 {1.61899996, 4.01450014}, //
+
16793 {1.61863267, 4.01447916}, //
+
16794 {1.6182642, 4.01441622}, //
+
16795 {1.61789441, 4.01431131}, //
+
16796 {1.61752343, 4.01416397}, //
+
16797 {1.61715126, 4.01397514}, //
+
16798 {1.61677778, 4.01374435}, //
+
16799 {1.6164031, 4.0134716}, //
+
16800 {1.61602712, 4.01315689}, //
+
16801 {1.61565006, 4.01280022}, //
+
16802 {1.6152302, 4.01242208}, //
+
16803 {1.61472654, 4.01204443}, //
+
16804 {1.61413884, 4.01166677}, //
+
16805 {1.61346734, 4.01128912}, //
+
16806 {1.61271179, 4.01091099}, //
+
16807 {1.6118722, 4.01053333}, //
+
16808 {1.6109488, 4.01015568}, //
+
16809 {1.60994136, 4.00977755}, //
+
16810 {1.60885, 4.00939989}, //
+
16811 {1.60769629, 4.00900173}, //
+
16812 {1.60650182, 4.00856304}, //
+
16813 {1.60526669, 4.00808334}, //
+
16814 {1.60399079, 4.00756311}, //
+
16815 {1.60267413, 4.00700188}, //
+
16816 {1.60131669, 4.00640011}, //
+
16817 {1.59991848, 4.00575733}, //
+
16818 {1.59847963, 4.00507402}, //
+
16819 {1.597, 4.00435019}, //
+
16820 {1.59241486, 4.00292301}, //
+
16821 {1.5877037, 4.00166368}, //
+
16822 {1.58286667, 4.0005722}, //
+
16823 {1.57790375, 3.99964881}, //
+
16824 {1.57281482, 3.99889326}, //
+
16825 {1.56760001, 3.99830556}, //
+
16826 {1.56225932, 3.9978857}, //
+
16827 {1.55679262, 3.99763393}, //
+
16828 {1.55120003, 3.99755001}, //
+
16829 {1.54557598, 3.99757099}, //
+
16830 {1.53999257, 3.99763393}, //
+
16831 {1.53445005, 3.99773884}, //
+
16832 {1.52894819, 3.9978857}, //
+
16833 {1.52348709, 3.99807477}, //
+
16834 {1.51806664, 3.99830556}, //
+
16835 {1.51268709, 3.99857831}, //
+
16836 {1.50734818, 3.99889326}, //
+
16837 {1.50205004, 3.99924994}, //
+
16838 {1.49683523, 3.99964809}, //
+
16839 {1.49174631, 4.00008726}, //
+
16840 {1.48678339, 4.00056648}, //
+
16841 {1.48194635, 4.00108719}, //
+
16842 {1.4772352, 4.00164795}, //
+
16843 {1.47265005, 4.00225019}, //
+
16844 {1.46819079, 4.00289249}, //
+
16845 {1.46385741, 4.0035758}, //
+
16846 {1.45965004, 4.00430012}, //
+
16847 {1.45228207, 4.00564337}, //
+
16848 {1.44928885, 4.00618887}, //
+
16849 {1.44675612, 4.00665045}, //
+
16850 {1.44468391, 4.00702858}, //
+
16851 {1.4430722, 4.00732231}, //
+
16852 {1.441921, 4.00753212}, //
+
16853 {1.4412303, 4.007658}, //
+
16854 {1.44099998, 4.00769997}, //
+
16855 {1.44108391, 4.00778389}, //
+
16856 {1.44118893, 4.00788879}, //
+
16857 {1.4413358, 4.00803566}, //
+
16858 {1.44175553, 4.00845575}, //
+
16859 {1.4420284, 4.0087285}, //
+
16860 {1.44270003, 4.00939989}, //
+
16861 {1.4430778, 4.00981998}, //
+
16862 {1.44345558, 4.01032352}, //
+
16863 {1.44383335, 4.01091099}, //
+
16864 {1.44421113, 4.01158285}, //
+
16865 {1.4445889, 4.01233816}, //
+
16866 {1.44496667, 4.01317787}, //
+
16867 {1.44534445, 4.01410103}, //
+
16868 {1.44572222, 4.01510859}, //
+
16869 {1.4461, 4.01620007}, //
+
16870 {1.44651914, 4.01731157}, //
+
16871 {1.44702101, 4.01838017}, //
+
16872 {1.44760561, 4.01940536}, //
+
16873 {1.44827282, 4.02038765}, //
+
16874 {1.44902289, 4.02132654}, //
+
16875 {1.44985557, 4.02222204}, //
+
16876 {1.45077097, 4.02307463}, //
+
16877 {1.45176911, 4.02388382}, //
+
16878 {1.45284998, 4.0246501}, //
+
16879 {1.45400429, 4.02540541}, //
+
16880 {1.45520067, 4.02616119}, //
+
16881 {1.4564389, 4.0269165}, //
+
16882 {1.45771909, 4.02767229}, //
+
16883 {1.45904136, 4.0284276}, //
+
16884 {1.46040559, 4.02918339}, //
+
16885 {1.46181178, 4.0299387}, //
+
16886 {1.46325994, 4.03069448}, //
+
16887 {1.46475005, 4.03144979}, //
+
16888 {1.46638644, 4.03216362}, //
+
16889 {1.4682734, 4.03279305}, //
+
16890 {1.47041106, 4.03333902}, //
+
16891 {1.47279942, 4.0338006}, //
+
16892 {1.47543824, 4.03417826}, //
+
16893 {1.47832775, 4.03447199}, //
+
16894 {1.48146784, 4.03468227}, //
+
16895 {1.48485863, 4.03480816}, //
+
16896 {1.4885, 4.03485012}, //
+
16897 {1.48929691, 4.03489208}, //
+
16898 {1.49017656, 4.03501797}, //
+
16899 {1.49113894, 4.03522778}, //
+
16900 {1.49218392, 4.03552151}, //
+
16901 {1.49331176, 4.03589916}, //
+
16902 {1.49452221, 4.03636122}, //
+
16903 {1.4958154, 4.03690672}, //
+
16904 {1.49719131, 4.03753662}, //
+
16905 {1.49864995, 4.03824997}, //
+
16906 {1.50563705, 4.03898382}, //
+
16907 {1.51304257, 4.03967476}, //
+
16908 {1.52086663, 4.0403223}, //
+
16909 {1.52910924, 4.04092646}, //
+
16910 {1.53777039, 4.04148769}, //
+
16911 {1.54684997, 4.04200554}, //
+
16912 {1.5563482, 4.04248047}, //
+
16913 {1.56626487, 4.04291153}, //
+
16914 {1.57659996, 4.04330015}, //
+
16915 {1.58723891, 4.04353142}, //
+
16916 {1.5980444, 4.04347038}, //
+
16917 {1.60901666, 4.04311657}, //
+
16918 {1.62015557, 4.04247046}, //
+
16919 {1.63146114, 4.04153156}, //
+
16920 {1.64293337, 4.04029989}, //
+
16921 {1.65457225, 4.03877592}, //
+
16922 {1.66637778, 4.03695917}, //
+
16923 {1.67834997, 4.03485012}, //
+
16924 {1.68501234, 4.03405237}, //
+
16925 {1.69142163, 4.03317118}, //
+
16926 {1.69757783, 4.03220558}, //
+
16927 {1.70348084, 4.03115606}, //
+
16928 {1.70913088, 4.03002262}, //
+
16929 {1.71452773, 4.02880573}, //
+
16930 {1.71967161, 4.02750444}, //
+
16931 {1.72456229, 4.02611923}, //
+
16932 {1.72920001, 4.0246501}, //
+
16933 {1.74184382, 4.02180624}, //
+
16934 {1.75415313, 4.01929712}, //
+
16935 {1.76612782, 4.01712227}, //
+
16936 {1.7777679, 4.01528215}, //
+
16937 {1.78907347, 4.01377678}, //
+
16938 {1.80004442, 4.01260567}, //
+
16939 {1.81068087, 4.01176929}, //
+
16940 {1.82098269, 4.01126719}, //
+
16941 {1.83095002, 4.01109982}, //
+
16942 {1.83709812, 4.01105785}, //
+
16943 {1.84349811, 4.01093197}, //
+
16944 {1.85014999, 4.01072216}, //
+
16945 {1.85705376, 4.01042843}, //
+
16946 {1.86420929, 4.01005077}, //
+
16947 {1.87161672, 4.00958872}, //
+
16948 {1.87927592, 4.00904322}, //
+
16949 {1.887187, 4.00841379}, //
+
16950 {1.89534998, 4.00769997}, //
+
16951 {1.90342963, 4.00691319}, //
+
16952 {1.91109073, 4.00604057}, //
+
16953 {1.91833329, 4.00508356}, //
+
16954 {1.92515743, 4.00404072}, //
+
16955 {1.93156302, 4.002913}, //
+
16956 {1.93754995, 4.00169992}, //
+
16957 {1.94311857, 4.00040197}, //
+
16958 {1.94826853, 3.99901843}, //
+
16959 {1.95299995, 3.99755001}, //
+
16960 {1.95854938, 3.99455929}, //
+
16961 {1.96464193, 3.99160933}, //
+
16962 {1.97127783, 3.98869991}, //
+
16963 {1.97845674, 3.9858315}, //
+
16964 {1.98617899, 3.98300362}, //
+
16965 {1.99444449, 3.98021674}, //
+
16966 {2.00325298, 3.9774704}, //
+
16967 {2.01260495, 3.97476482}, //
+
16968 {2.02250004, 3.97210002}, //
+
16969 {2.03261423, 3.96957088}, //
+
16970 {2.04260135, 3.96725059}, //
+
16971 {2.05246115, 3.96513891}, //
+
16972 {2.06219387, 3.96323586}, //
+
16973 {2.07179928, 3.96154141}, //
+
16974 {2.08127785, 3.96005559}, //
+
16975 {2.0906291, 3.95877838}, //
+
16976 {2.09985304, 3.95770979}, //
+
16977 {2.1089499, 3.95685005}, //
+
16978 {2.1275425, 3.95451045}, //
+
16979 {2.14563155, 3.952003}, //
+
16980 {2.16321659, 3.94932771}, //
+
16981 {2.18029809, 3.94648457}, //
+
16982 {2.19687581, 3.94347334}, //
+
16983 {2.21294999, 3.9402945}, //
+
16984 {2.22852039, 3.93694758}, //
+
16985 {2.24358702, 3.93343282}, //
+
16986 {2.2581501, 3.92974997}, //
+
16987 {2.26041603, 3.92903638}, //
+
16988 {2.26268077, 3.92840672}, //
+
16989 {2.26494455, 3.92786121}, //
+
16990 {2.26720691, 3.9273994}, //
+
16991 {2.26946783, 3.9270215}, //
+
16992 {2.2717278, 3.92672777}, //
+
16993 {2.27398634, 3.92651796}, //
+
16994 {2.27624393, 3.92639208}, //
+
16995 {2.27850008, 3.92635012}, //
+
16996 {2.29318833, 3.92370749}, //
+
16997 {2.30863094, 3.92031288}, //
+
16998 {2.32482767, 3.91616678}, //
+
16999 {2.34177899, 3.91126847}, //
+
17000 {2.35948467, 3.90561843}, //
+
17001 {2.37794447, 3.89921665}, //
+
17002 {2.39715862, 3.8920629}, //
+
17003 {2.41712713, 3.88415742}, //
+
17004 {2.43785, 3.87549996}, //
+
17005 {2.44613886, 3.87169147}, //
+
17006 {2.45442772, 3.86779881}, //
+
17007 {2.46271658, 3.86382222}, //
+
17008 {2.47100544, 3.85976171}, //
+
17009 {2.47929454, 3.85561728}, //
+
17010 {2.4875834, 3.85138893}, //
+
17011 {2.49587226, 3.84707665}, //
+
17012 {2.50416112, 3.84268022}, //
+
17013 {2.51244998, 3.83820009}, //
+
17014 {2.5206759, 3.83304811}, //
+
17015 {2.52877593, 3.82814813}, //
+
17016 {2.53675008, 3.82349992}, //
+
17017 {2.5445981, 3.81910372}, //
+
17018 {2.55232048, 3.81495929}, //
+
17019 {2.55991673, 3.81106663}, //
+
17020 {2.5673871, 3.80742598}, //
+
17021 {2.57473159, 3.80403709}, //
+
17022 {2.58194995, 3.80089998}, //
+
17023 {2.58895922, 3.79805613}, //
+
17024 {2.59567595, 3.79554701}, //
+
17025 {2.6020999, 3.79337215}, //
+
17026 {2.60823154, 3.79153204}, //
+
17027 {2.61407042, 3.79002643}, //
+
17028 {2.61961675, 3.78885555}, //
+
17029 {2.6248703, 3.78801918}, //
+
17030 {2.62983155, 3.78751731}, //
+
17031 {2.63450003, 3.78734994}, //
+
17032 {2.63601112, 3.78734994}, //
+
17033 {2.63676667, 3.78734994}, //
+
17034 {2.63752222, 3.78734994}, //
+
17035 {2.63827777, 3.78734994}, //
+
17036 {2.63903332, 3.78734994}, //
+
17037 {2.63978887, 3.78734994}, //
+
17038 {2.64054441, 3.78734994}, //
+
17039 {2.64129996, 3.78734994}, //
+
17040 {2.6482451, 3.78803205}, //
+
17041 {2.65552473, 3.78858948}, //
+
17042 {2.66313887, 3.78902221}, //
+
17043 {2.67108774, 3.78933024}, //
+
17044 {2.67937088, 3.78951359}, //
+
17045 {2.687989, 3.78957224}, //
+
17046 {2.69694138, 3.7895062}, //
+
17047 {2.70622849, 3.78931546}, //
+
17048 {2.71585011, 3.78900003}, //
+
17049 {2.72544074, 3.78831863}, //
+
17050 {2.73461294, 3.78700733}, //
+
17051 {2.74336672, 3.7850666}, //
+
17052 {2.75170183, 3.78249621}, //
+
17053 {2.75961852, 3.7792964}, //
+
17054 {2.76711679, 3.77546668}, //
+
17055 {2.77419639, 3.7710073}, //
+
17056 {2.78085732, 3.76591849}, //
+
17057 {2.78710008, 3.76020002}, //
+
17058 {2.7903204, 3.75660253}, //
+
17059 {2.79395914, 3.75183201}, //
+
17060 {2.79801655, 3.74588895}, //
+
17061 {2.80249262, 3.73877287}, //
+
17062 {2.80738711, 3.73048401}, //
+
17063 {2.81270003, 3.72102213}, //
+
17064 {2.81843138, 3.71038771}, //
+
17065 {2.82458138, 3.69858027}, //
+
17066 {2.83115005, 3.68560004}, //
+
17067 {2.83793831, 3.67187643}, //
+
17068 {2.84472537, 3.65781736}, //
+
17069 {2.851511, 3.64342213}, //
+
17070 {2.85829568, 3.62869143}, //
+
17071 {2.86507893, 3.61362457}, //
+
17072 {2.87186122, 3.59822226}, //
+
17073 {2.87864208, 3.58248401}, //
+
17074 {2.88542151, 3.56640983}, //
+
17075 {2.89219999, 3.54999995}, //
+
17076 {2.90042591, 3.53350544}, //
+
17077 {2.90852594, 3.51717782}, //
+
17078 {2.91650009, 3.50101662}, //
+
17079 {2.92434812, 3.48502231}, //
+
17080 {2.93207026, 3.46919441}, //
+
17081 {2.93966675, 3.45353341}, //
+
17082 {2.94713712, 3.43803883}, //
+
17083 {2.95448136, 3.42271113}, //
+
17084 {2.96169996, 3.4075501}, //
+
17085 {2.96866798, 3.39311123}, //
+
17086 {2.9752605, 3.37992787}, //
+
17087 {2.98147774, 3.36800003}, //
+
17088 {2.98731971, 3.3573277}, //
+
17089 {2.99278641, 3.34791112}, //
+
17090 {2.99787784, 3.33975005}, //
+
17091 {3.00259376, 3.3328445}, //
+
17092 {3.00693464, 3.32719445}, //
+
17093 {3.01090002, 3.32279992}, //
+
17094 {3.012568, 3.32046056}, //
+
17095 {3.01457167, 3.31795311}, //
+
17096 {3.01691103, 3.31527781}, //
+
17097 {3.01958632, 3.31243467}, //
+
17098 {3.02259755, 3.30942345}, //
+
17099 {3.02594447, 3.30624437}, //
+
17100 {3.02962708, 3.30289745}, //
+
17101 {3.03364563, 3.29938269}, //
+
17102 {3.03800011, 3.29570007}, //
+
17103 {3.04716969, 3.28632092}, //
+
17104 {3.05659008, 3.27627277}, //
+
17105 {3.06626105, 3.26555562}, //
+
17106 {3.0761826, 3.25416923}, //
+
17107 {3.08635497, 3.24211359}, //
+
17108 {3.09677768, 3.22938895}, //
+
17109 {3.1074512, 3.21599507}, //
+
17110 {3.1183753, 3.20193219}, //
+
17111 {3.12954998, 3.18720007}, //
+
17112 {3.14022231, 3.17213273}, //
+
17113 {3.14963889, 3.1570642}, //
+
17114 {3.15779996, 3.14199448}, //
+
17115 {3.16470551, 3.12692356}, //
+
17116 {3.17035556, 3.11185122}, //
+
17117 {3.17475009, 3.09677768}, //
+
17118 {3.17788887, 3.08170319}, //
+
17119 {3.17977214, 3.06662726}, //
+
17120 {3.18039989, 3.05154991}, //
+
17121 {3.17968631, 3.04050112}, //
+
17122 {3.17905688, 3.02995491}, //
+
17123 {3.17851114, 3.01991105}, //
+
17124 {3.17804933, 3.01036978}, //
+
17125 {3.17767167, 3.00133085}, //
+
17126 {3.1773777, 2.99279451}, //
+
17127 {3.17716789, 2.98476052}, //
+
17128 {3.17704201, 2.97722912}, //
+
17129 {3.17700005, 2.97020006}, //
+
17130 {3.17627597, 2.96201539}, //
+
17131 {3.17559266, 2.95403957}, //
+
17132 {3.17494988, 2.94627213}, //
+
17133 {3.17434812, 2.93871355}, //
+
17134 {3.17378712, 2.93136358}, //
+
17135 {3.17326665, 2.92422223}, //
+
17136 {3.17278695, 2.9172895}, //
+
17137 {3.17234826, 2.91056538}, //
+
17138 {3.1719501, 2.90405011}, //
+
17139 {3.17150927, 2.89746118}, //
+
17140 {3.17094254, 2.89049435}, //
+
17141 {3.17024994, 2.8831501}, //
+
17142 {3.16943145, 2.87542772}, //
+
17143 {3.16848707, 2.86732769}, //
+
17144 {3.16741657, 2.85885}, //
+
17145 {3.16622043, 2.84999442}, //
+
17146 {3.16489816, 2.84076118}, //
+
17147 {3.16345, 2.83115005}, //
+
17148 {3.15989256, 2.8120234}, //
+
17149 {3.15675378, 2.79231048}, //
+
17150 {3.15403342, 2.77201104}, //
+
17151 {3.15173149, 2.75112534}, //
+
17152 {3.14984822, 2.72965312}, //
+
17153 {3.14838338, 2.70759439}, //
+
17154 {3.14733696, 2.6849494}, //
+
17155 {3.1467092, 2.66171789}, //
+
17156 {3.14650011, 2.63790011}, //
+
17157 {3.14574456, 2.62463713}, //
+
17158 {3.14498878, 2.61195922}, //
+
17159 {3.14423323, 2.59986663}, //
+
17160 {3.14347768, 2.58835936}, //
+
17161 {3.14272213, 2.57743692}, //
+
17162 {3.14196658, 2.56710005}, //
+
17163 {3.14121103, 2.55734825}, //
+
17164 {3.14045548, 2.54818153}, //
+
17165 {3.13969994, 2.5395999}, //
+
17166 {3.13805318, 2.53072476}, //
+
17167 {3.13611245, 2.52067661}, //
+
17168 {3.13387775, 2.50945544}, //
+
17169 {3.13134933, 2.49706173}, //
+
17170 {3.12852716, 2.483495}, //
+
17171 {3.12541103, 2.46875548}, //
+
17172 {3.12200117, 2.45284319}, //
+
17173 {3.11829758, 2.43575811}, //
+
17174 {3.11430001, 2.41750002}, //
+
17175 {3.11011362, 2.39872909}, //
+
17176 {3.10584331, 2.38008261}, //
+
17177 {3.10148883, 2.36156106}, //
+
17178 {3.09705067, 2.34316421}, //
+
17179 {3.09252834, 2.32489204}, //
+
17180 {3.08792233, 2.30674434}, //
+
17181 {3.08323216, 2.28872156}, //
+
17182 {3.07845807, 2.27082348}, //
+
17183 {3.07360005, 2.25305009}, //
+
17184 {3.06884694, 2.23604012}, //
+
17185 {3.06438756, 2.22041059}, //
+
17186 {3.06022215, 2.20616102}, //
+
17187 {3.05635071, 2.1932919}, //
+
17188 {3.05277276, 2.18180299}, //
+
17189 {3.04948878, 2.17169452}, //
+
17190 {3.04649878, 2.16296601}, //
+
17191 {3.0438025, 2.15561795}, //
+
17192 {3.04139996, 2.1496501}, //
+
17193 {3.03794885, 2.14437413}, //
+
17194 {3.03361726, 2.13759065}, //
+
17195 {3.02840567, 2.12930012}, //
+
17196 {3.02231359, 2.11950183}, //
+
17197 {3.01534128, 2.10819626}, //
+
17198 {3.00748897, 2.09538341}, //
+
17199 {2.99875617, 2.08106303}, //
+
17200 {2.98914313, 2.06523514}, //
+
17201 {2.97865009, 2.04789996}, //
+
17202 {2.96772718, 2.02975917}, //
+
17203 {2.95680308, 2.01149249}, //
+
17204 {2.94587779, 1.99310005}, //
+
17205 {2.93495131, 1.97458148}, //
+
17206 {2.92402339, 1.95593703}, //
+
17207 {2.91309452, 1.93716669}, //
+
17208 {2.90216422, 1.91827035}, //
+
17209 {2.89123273, 1.89924812}, //
+
17210 {2.88030005, 1.88010001}, //
+
17211 {2.86969209, 1.86145365}, //
+
17212 {2.85971236, 1.84393704}, //
+
17213 {2.85036111, 1.82755005}, //
+
17214 {2.84163833, 1.81229258}, //
+
17215 {2.83354378, 1.79816484}, //
+
17216 {2.8260777, 1.78516662}, //
+
17217 {2.81924009, 1.77329814}, //
+
17218 {2.81303096, 1.76255929}, //
+
17219 {2.80745006, 1.75294995}, //
+
17220 {2.78369999, 1.74615002}, //
+
17221 });
+
17222 polys.push_back({
+
17223 {2.65127158, 1.7632333}, //
+
17224 {2.64806986, 1.76348329}, //
+
17225 {2.64524436, 1.76390004}, //
+
17226 {2.64385223, 1.76423168}, //
+
17227 {2.64019823, 1.76445365}, //
+
17228 {2.63450003, 1.76479995}, //
+
17229 {2.62833095, 1.76517773}, //
+
17230 {2.6218679, 1.7655555}, //
+
17231 {2.61511111, 1.76593328}, //
+
17232 {2.6080606, 1.76631117}, //
+
17233 {2.60071611, 1.76668894}, //
+
17234 {2.59307766, 1.76706672}, //
+
17235 {2.58514571, 1.76744449}, //
+
17236 {2.57691979, 1.76782227}, //
+
17237 {2.56839991, 1.76820004}, //
+
17238 {2.55975437, 1.76859879}, //
+
17239 {2.55115056, 1.76903951}, //
+
17240 {2.54258895, 1.76952219}, //
+
17241 {2.53406906, 1.77004695}, //
+
17242 {2.52559137, 1.77061355}, //
+
17243 {2.51715565, 1.77122223}, //
+
17244 {2.50876164, 1.77187288}, //
+
17245 {2.50040984, 1.77256548}, //
+
17246 {2.4921, 1.77330005}, //
+
17247 {2.48307848, 1.77441108}, //
+
17248 {2.4725914, 1.77623332}, //
+
17249 {2.460639, 1.77876663}, //
+
17250 {2.44722104, 1.78201115}, //
+
17251 {2.43233776, 1.78596663}, //
+
17252 {2.41630864, 1.79054201}, //
+
17253 {2.41488338, 1.79100001}, //
+
17254 {2.40379071, 1.79466856}, //
+
17255 {2.39211297, 1.79862964}, //
+
17256 {2.37984991, 1.80288339}, //
+
17257 {2.36700177, 1.80742967}, //
+
17258 {2.35356855, 1.8122685}, //
+
17259 {2.33955002, 1.81739998}, //
+
17260 {2.31668639, 1.82546914}, //
+
17261 {2.29482913, 1.83312094}, //
+
17262 {2.27397776, 1.84035552}, //
+
17263 {2.25413275, 1.84717286}, //
+
17264 {2.23529387, 1.85357285}, //
+
17265 {2.21746111, 1.8595556}, //
+
17266 {2.20063448, 1.86512101}, //
+
17267 {2.18481421, 1.87026918}, //
+
17268 {2.17000008, 1.875}, //
+
17269 {2.15455437, 1.87948024}, //
+
17270 {2.13986182, 1.88387656}, //
+
17271 {2.13931298, 1.88404632}, //
+
17272 {2.1379118, 1.88454878}, //
+
17273 {2.1174469, 1.89227283}, //
+
17274 {2.0984056, 1.89987218}, //
+
17275 {2.08078766, 1.90734696}, //
+
17276 {2.06459332, 1.91469693}, //
+
17277 {2.04982233, 1.92192221}, //
+
17278 {2.0364747, 1.92902279}, //
+
17279 {2.02455068, 1.9359988}, //
+
17280 {2.01405001, 1.94284999}, //
+
17281 {2.00349498, 1.94906044}, //
+
17282 {1.99294138, 1.95564759}, //
+
17283 {1.98238885, 1.96261108}, //
+
17284 {1.97183764, 1.96995127}, //
+
17285 {1.96128762, 1.97766793}, //
+
17286 {1.95967829, 1.97890258}, //
+
17287 {1.95078647, 1.98708153}, //
+
17288 {1.94094443, 1.99633336}, //
+
17289 {1.93068266, 2.00617027}, //
+
17290 {1.92000127, 2.0165925}, //
+
17291 {1.90890002, 2.02760005}, //
+
17292 {1.89845991, 2.03658152}, //
+
17293 {1.88822842, 2.0454371}, //
+
17294 {1.87820554, 2.05416656}, //
+
17295 {1.86839139, 2.06277037}, //
+
17296 {1.85878575, 2.07124805}, //
+
17297 {1.84938884, 2.0796001}, //
+
17298 {1.84020066, 2.08782601}, //
+
17299 {1.83122098, 2.09592581}, //
+
17300 {1.82245004, 2.10389996}, //
+
17301 {1.81422341, 2.11137152}, //
+
17302 {1.80687714, 2.11796427}, //
+
17303 {1.80041111, 2.12367773}, //
+
17304 {1.8002733, 2.12379694}, //
+
17305 {1.80023205, 2.12404132}, //
+
17306 {1.80002224, 2.124789}, //
+
17307 {1.79972839, 2.12553763}, //
+
17308 {1.79935062, 2.1262877}, //
+
17309 {1.79888892, 2.12703896}, //
+
17310 {1.79834318, 2.1277914}, //
+
17311 {1.79771364, 2.12854505}, //
+
17312 {1.79700005, 2.12930012}, //
+
17313 {1.79627597, 2.13003469}, //
+
17314 {1.79559255, 2.13072705}, //
+
17315 {1.79495001, 2.1313777}, //
+
17316 {1.79434812, 2.13198638}, //
+
17317 {1.793787, 2.1325531}, //
+
17318 {1.79326665, 2.13307786}, //
+
17319 {1.79278708, 2.13356042}, //
+
17320 {1.79234815, 2.13400126}, //
+
17321 {1.79194999, 2.13439989}, //
+
17322 {1.79157221, 2.1347568}, //
+
17323 {1.79119444, 2.13507152}, //
+
17324 {1.79081666, 2.13534451}, //
+
17325 {1.79043889, 2.13557529}, //
+
17326 {1.79006112, 2.13576412}, //
+
17327 {1.78968334, 2.13591123}, //
+
17328 {1.78930557, 2.13601613}, //
+
17329 {1.78892779, 2.13607907}, //
+
17330 {1.78855002, 2.13610005}, //
+
17331 {1.78819323, 2.13612103}, //
+
17332 {1.78787839, 2.13618398}, //
+
17333 {1.78760552, 2.13628888}, //
+
17334 {1.78737473, 2.13643575}, //
+
17335 {1.78718579, 2.13662457}, //
+
17336 {1.78703892, 2.1368556}, //
+
17337 {1.7869339, 2.13712835}, //
+
17338 {1.78687096, 2.1374433}, //
+
17339 {1.78682899, 2.13815689}, //
+
17340 {1.78676605, 2.1384716}, //
+
17341 {1.78666115, 2.13874435}, //
+
17342 {1.78651416, 2.13897538}, //
+
17343 {1.78632534, 2.13916421}, //
+
17344 {1.78609443, 2.13931108}, //
+
17345 {1.78582156, 2.13941598}, //
+
17346 {1.78550684, 2.13947892}, //
+
17347 {1.78515005, 2.1394999}, //
+
17348 {1.78447843, 2.1394999}, //
+
17349 {1.78420556, 2.1394999}, //
+
17350 {1.78397465, 2.1394999}, //
+
17351 {1.78378582, 2.1394999}, //
+
17352 {1.78363883, 2.1394999}, //
+
17353 {1.78345001, 2.1394999}, //
+
17354 {1.81060004, 2.15304995}, //
+
17355 {1.81832218, 2.1462667}, //
+
17356 {1.82432842, 2.14099073}, //
+
17357 {1.88010001, 2.09200001}, //
+
17358 {1.8960259, 2.07827663}, //
+
17359 {1.91291487, 2.06421733}, //
+
17360 {1.9307667, 2.04982233}, //
+
17361 {1.9495815, 2.0350914}, //
+
17362 {1.96935928, 2.02002478}, //
+
17363 {1.99010003, 2.00462222}, //
+
17364 {2.01180363, 1.98888397}, //
+
17365 {2.03447032, 1.97280991}, //
+
17366 {2.05809999, 1.95640004}, //
+
17367 {2.0612371, 1.95480561}, //
+
17368 {2.06462598, 1.95304441}, //
+
17369 {2.06826663, 1.95111668}, //
+
17370 {2.07215929, 1.94902217}, //
+
17371 {2.07630372, 1.94676113}, //
+
17372 {2.08069992, 1.94433331}, //
+
17373 {2.08534813, 1.94173884}, //
+
17374 {2.09024811, 1.93897772}, //
+
17375 {2.09540009, 1.93605006}, //
+
17376 {2.10149574, 1.93081415}, //
+
17377 {2.10771608, 1.9256624}, //
+
17378 {2.11406112, 1.92059445}, //
+
17379 {2.12053084, 1.91561055}, //
+
17380 {2.12712526, 1.91071045}, //
+
17381 {2.13384438, 1.9058944}, //
+
17382 {2.14068818, 1.90116239}, //
+
17383 {2.14765668, 1.89651418}, //
+
17384 {2.15475011, 1.89195001}, //
+
17385 {2.16180134, 1.88760555}, //
+
17386 {2.16864371, 1.88359439}, //
+
17387 {2.17527771, 1.87991667}, //
+
17388 {2.18170309, 1.87657225}, //
+
17389 {2.18791986, 1.87356114}, //
+
17390 {2.19392776, 1.87088335}, //
+
17391 {2.19972706, 1.86853886}, //
+
17392 {2.20531797, 1.8665278}, //
+
17393 {2.21070004, 1.86485004}, //
+
17394 {2.22014141, 1.86243701}, //
+
17395 {2.23037648, 1.85973144}, //
+
17396 {2.24140549, 1.85673332}, //
+
17397 {2.25322843, 1.85344255}, //
+
17398 {2.26584506, 1.84985924}, //
+
17399 {2.27925563, 1.84598339}, //
+
17400 {2.29345989, 1.84181476}, //
+
17401 {2.30845809, 1.83735371}, //
+
17402 {2.32424998, 1.8326}, //
+
17403 {2.34017849, 1.82777345}, //
+
17404 {2.34559417, 1.82611835}, //
+
17405 {2.34499884, 1.8249321}, //
+
17406 {2.34424329, 1.82342649}, //
+
17407 {2.34365559, 1.82225561}, //
+
17408 {2.34323573, 1.82141912}, //
+
17409 {2.34290004, 1.82075}, //
+
17410 {2.34692955, 1.81940675}, //
+
17411 {2.34800005, 1.81904995}, //
+
17412 {2.34917474, 1.81864071}, //
+
17413 {2.35043216, 1.81814635}, //
+
17414 {2.35177231, 1.81756663}, //
+
17415 {2.35319495, 1.8169018}, //
+
17416 {2.35470057, 1.81615186}, //
+
17417 {2.35628891, 1.81531668}, //
+
17418 {2.35795999, 1.81439626}, //
+
17419 {2.35971355, 1.81339073}, //
+
17420 {2.36155009, 1.81229997}, //
+
17421 {2.36343837, 1.81120861}, //
+
17422 {2.36532521, 1.81020129}, //
+
17423 {2.3672111, 1.80927777}, //
+
17424 {2.36909556, 1.8084383}, //
+
17425 {2.37097907, 1.80768275}, //
+
17426 {2.37286115, 1.80701113}, //
+
17427 {2.37474203, 1.80642343}, //
+
17428 {2.37662172, 1.80591977}, //
+
17429 {2.37849998, 1.80550003}, //
+
17430 {2.38036728, 1.80512226}, //
+
17431 {2.38219142, 1.80474448}, //
+
17432 {2.38397217, 1.80436671}, //
+
17433 {2.38570976, 1.80398893}, //
+
17434 {2.3874042, 1.80361116}, //
+
17435 {2.38905549, 1.80323339}, //
+
17436 {2.39066362, 1.80285561}, //
+
17437 {2.39222836, 1.80247784}, //
+
17438 {2.39374995, 1.80209994}, //
+
17439 {2.39521909, 1.80178523}, //
+
17440 {2.3966043, 1.80159628}, //
+
17441 {2.39790559, 1.80153334}, //
+
17442 {2.39912295, 1.80159628}, //
+
17443 {2.40025616, 1.80178523}, //
+
17444 {2.40130544, 1.80209994}, //
+
17445 {2.40227103, 1.80254078}, //
+
17446 {2.40315247, 1.80310738}, //
+
17447 {2.40394998, 1.80379999}, //
+
17448 {2.40411735, 1.80489016}, //
+
17449 {2.40461922, 1.80664933}, //
+
17450 {2.4049623, 1.80764568}, //
+
17451 {2.39845991, 1.8097142}, //
+
17452 {2.38470435, 1.81404197}, //
+
17453 {2.37040567, 1.81849444}, //
+
17454 {2.35556364, 1.8230716}, //
+
17455 {2.34559417, 1.82611835}, //
+
17456 {2.34701347, 1.82894695}, //
+
17457 {2.3482728, 1.83145618}, //
+
17458 {2.34969997, 1.83430004}, //
+
17459 {2.35125256, 1.83732164}, //
+
17460 {2.35288763, 1.84034193}, //
+
17461 {2.35460567, 1.84336114}, //
+
17462 {2.35640621, 1.84637904}, //
+
17463 {2.35828948, 1.84939563}, //
+
17464 {2.36025548, 1.85241115}, //
+
17465 {2.36230421, 1.85542536}, //
+
17466 {2.36443591, 1.85843825}, //
+
17467 {2.3666501, 1.86144996}, //
+
17468 {2.36889505, 1.86448205}, //
+
17469 {2.37109685, 1.86755621}, //
+
17470 {2.37325549, 1.87067223}, //
+
17471 {2.37537098, 1.8738302}, //
+
17472 {2.37744331, 1.87703025}, //
+
17473 {2.37947226, 1.88027227}, //
+
17474 {2.38145804, 1.88355613}, //
+
17475 {2.38340068, 1.88688207}, //
+
17476 {2.38529992, 1.89024997}, //
+
17477 {2.38716722, 1.89354444}, //
+
17478 {2.38899136, 1.89662778}, //
+
17479 {2.3907721, 1.89950001}, //
+
17480 {2.39250994, 1.90216112}, //
+
17481 {2.39420438, 1.90461111}, //
+
17482 {2.39585567, 1.90684998}, //
+
17483 {2.39746356, 1.90887773}, //
+
17484 {2.3990283, 1.91069448}, //
+
17485 {2.40054989, 1.91229999}, //
+
17486 {2.40226984, 1.9155519}, //
+
17487 {2.40440679, 1.91926301}, //
+
17488 {2.4069612, 1.9234333}, //
+
17489 {2.40993261, 1.92806292}, //
+
17490 {2.4133215, 1.93315184}, //
+
17491 {2.41712785, 1.93869996}, //
+
17492 {2.42135119, 1.94470739}, //
+
17493 {2.42599201, 1.95117402}, //
+
17494 {2.43105006, 1.95809996}, //
+
17495 {2.43630672, 1.96531856}, //
+
17496 {2.44152164, 1.97266293}, //
+
17497 {2.44669437, 1.9801333}, //
+
17498 {2.45182538, 1.98772967}, //
+
17499 {2.45691419, 1.99545181}, //
+
17500 {2.46196103, 2.00329995}, //
+
17501 {2.46696615, 2.0112741}, //
+
17502 {2.47192907, 2.01937413}, //
+
17503 {2.47685003, 2.02760005}, //
+
17504 {2.4815197, 2.03563762}, //
+
17505 {2.48572898, 2.04317284}, //
+
17506 {2.48947787, 2.05020547}, //
+
17507 {2.49276614, 2.05673575}, //
+
17508 {2.49559379, 2.06276369}, //
+
17509 {2.49796104, 2.0682888}, //
+
17510 {2.49986792, 2.07331181}, //
+
17511 {2.50131416, 2.07783198}, //
+
17512 {2.50230002, 2.08185005}, //
+
17513 {2.50445127, 2.08691597}, //
+
17514 {2.50639391, 2.09306979}, //
+
17515 {2.50812769, 2.10031104}, //
+
17516 {2.50965309, 2.10864019}, //
+
17517 {2.51096964, 2.11805677}, //
+
17518 {2.51207781, 2.12856102}, //
+
17519 {2.51297712, 2.14015317}, //
+
17520 {2.51366782, 2.15283275}, //
+
17521 {2.5141499, 2.16659999}, //
+
17522 {2.51442289, 2.18113089}, //
+
17523 {2.51448584, 2.19607902}, //
+
17524 {2.51433897, 2.21144438}, //
+
17525 {2.51398206, 2.22722721}, //
+
17526 {2.51341534, 2.24342728}, //
+
17527 {2.51263881, 2.26004434}, //
+
17528 {2.51165247, 2.27707911}, //
+
17529 {2.51045609, 2.29453087}, //
+
17530 {2.50904989, 2.3124001}, //
+
17531 {2.50742412, 2.33027911}, //
+
17532 {2.50554633, 2.34773827}, //
+
17533 {2.50341678, 2.3647778}, //
+
17534 {2.50103521, 2.38139749}, //
+
17535 {2.49840188, 2.39759755}, //
+
17536 {2.49551678, 2.41337776}, //
+
17537 {2.49237967, 2.42873836}, //
+
17538 {2.48899078, 2.44367909}, //
+
17539 {2.48534989, 2.45819998}, //
+
17540 {2.48055553, 2.47084332}, //
+
17541 {2.47521663, 2.48315072}, //
+
17542 {2.46933341, 2.49512219}, //
+
17543 {2.46290565, 2.50675797}, //
+
17544 {2.45593333, 2.51805806}, //
+
17545 {2.44841671, 2.52902222}, //
+
17546 {2.44035554, 2.53965068}, //
+
17547 {2.43175006, 2.54994321}, //
+
17548 {2.42260003, 2.55990005}, //
+
17549 {2.41324067, 2.56949067}, //
+
17550 {2.40400743, 2.57866287}, //
+
17551 {2.39490008, 2.58741665}, //
+
17552 {2.38591862, 2.59575176}, //
+
17553 {2.37706304, 2.60366845}, //
+
17554 {2.36833334, 2.61116672}, //
+
17555 {2.35972953, 2.61824632}, //
+
17556 {2.35125184, 2.62490749}, //
+
17557 {2.34290004, 2.63115001}, //
+
17558 {2.33561802, 2.63633323}, //
+
17559 {2.32883835, 2.64135003}, //
+
17560 {2.32256103, 2.64619994}, //
+
17561 {2.31678653, 2.65088344}, //
+
17562 {2.31151414, 2.65540004}, //
+
17563 {2.30674434, 2.65974998}, //
+
17564 {2.30247712, 2.66393328}, //
+
17565 {2.29871225, 2.66794991}, //
+
17566 {2.29544997, 2.6717999}, //
+
17567 {2.29214573, 2.67657351}, //
+
17568 {2.28825498, 2.68184948}, //
+
17569 {2.28377771, 2.68762779}, //
+
17570 {2.27871418, 2.69390869}, //
+
17571 {2.27306414, 2.70069194}, //
+
17572 {2.26682782, 2.70797777}, //
+
17573 {2.260005, 2.71576595}, //
+
17574 {2.25259566, 2.72405672}, //
+
17575 {2.24460006, 2.73285007}, //
+
17576 {2.23858762, 2.7396698}, //
+
17577 {2.23261738, 2.74657345}, //
+
17578 {2.22668886, 2.75356102}, //
+
17579 {2.22080255, 2.76063275}, //
+
17580 {2.21495795, 2.76778817}, //
+
17581 {2.20915556, 2.77502775}, //
+
17582 {2.20339513, 2.78235126}, //
+
17583 {2.19767666, 2.78975868}, //
+
17584 {2.19199991, 2.79725003}, //
+
17585 {2.18654394, 2.80461597}, //
+
17586 {2.1814642, 2.81164742}, //
+
17587 {2.17676115, 2.81834435}, //
+
17588 {2.17243457, 2.82470679}, //
+
17589 {2.16848445, 2.83073449}, //
+
17590 {2.16491103, 2.83642769}, //
+
17591 {2.16171432, 2.84178638}, //
+
17592 {2.15889382, 2.84681058}, //
+
17593 {2.15645003, 2.85150003}, //
+
17594 {2.154037, 2.85993528}, //
+
17595 {2.15133142, 2.86866307}, //
+
17596 {2.14833331, 2.8776834}, //
+
17597 {2.14504266, 2.88699627}, //
+
17598 {2.14145923, 2.89660192}, //
+
17599 {2.13758326, 2.9065001}, //
+
17600 {2.13341475, 2.91669083}, //
+
17601 {2.1289537, 2.92717409}, //
+
17602 {2.12420011, 2.9379499}, //
+
17603 {2.1193316, 2.94869447}, //
+
17604 {2.11450362, 2.95906115}, //
+
17605 {2.10971665, 2.96904993}, //
+
17606 {2.10497046, 2.97866106}, //
+
17607 {2.10026479, 2.98789454}, //
+
17608 {2.09559989, 2.99675012}, //
+
17609 {2.090976, 3.0052278}, //
+
17610 {2.08639264, 3.01332784}, //
+
17611 {2.08185005, 3.02104998}, //
+
17612 {2.07862902, 3.02807903}, //
+
17613 {2.07498837, 3.03561044}, //
+
17614 {2.07092786, 3.04364443}, //
+
17615 {2.0664475, 3.05218077}, //
+
17616 {2.06154752, 3.06121969}, //
+
17617 {2.05622768, 3.0707612}, //
+
17618 {2.05048823, 3.08080482}, //
+
17619 {2.04432893, 3.09135127}, //
+
17620 {2.03775001, 3.10240006}, //
+
17621 {2.0309093, 3.11364746}, //
+
17622 {2.02394271, 3.12476802}, //
+
17623 {2.01684999, 3.13576102}, //
+
17624 {2.0096314, 3.14662719}, //
+
17625 {2.00228715, 3.15736604}, //
+
17626 {1.99481666, 3.16797781}, //
+
17627 {1.98722041, 3.17846227}, //
+
17628 {1.97949815, 3.18881965}, //
+
17629 {1.97165, 3.19904995}, //
+
17630 {1.96392715, 3.20882964}, //
+
17631 {1.95658088, 3.21781301}, //
+
17632 {1.94961107, 3.22600007}, //
+
17633 {1.94301796, 3.23339081}, //
+
17634 {1.9368012, 3.23998523}, //
+
17635 {1.93096113, 3.24578333}, //
+
17636 {1.92549753, 3.25078511}, //
+
17637 {1.92041051, 3.25499082}, //
+
17638 {1.91569996, 3.25839996}, //
+
17639 {1.91205859, 3.26059318}, //
+
17640 {1.90866792, 3.2626617}, //
+
17641 {1.90552783, 3.26460552}, //
+
17642 {1.90263832, 3.26642466}, //
+
17643 {1.89999938, 3.2681191}, //
+
17644 {1.89761114, 3.26968884}, //
+
17645 {1.89547348, 3.2711339}, //
+
17646 {1.8935864, 3.27245426}, //
+
17647 {1.89195001, 3.27364993}, //
+
17648 {1.8904494, 3.27478266}, //
+
17649 {1.88894749, 3.27591419}, //
+
17650 {1.8874445, 3.27704453}, //
+
17651 {1.88594007, 3.27817345}, //
+
17652 {1.88443458, 3.27930117}, //
+
17653 {1.88292778, 3.28042769}, //
+
17654 {1.88141978, 3.28155303}, //
+
17655 {1.87991047, 3.28267717}, //
+
17656 {1.87839997, 3.28379989}, //
+
17657 {1.87689936, 3.28503776}, //
+
17658 {1.87539756, 3.286484}, //
+
17659 {1.87389445, 3.28813887}, //
+
17660 {1.87239015, 3.29000258}, //
+
17661 {1.87088454, 3.29207468}, //
+
17662 {1.86937773, 3.29435563}, //
+
17663 {1.86786973, 3.29684496}, //
+
17664 {1.86636055, 3.29954314}, //
+
17665 {1.86485004, 3.30244994}, //
+
17666 {1.86249995, 3.30408645}, //
+
17667 {1.85998333, 3.30597353}, //
+
17668 {1.85730004, 3.30811119}, //
+
17669 {1.85444999, 3.31049943}, //
+
17670 {1.85143328, 3.31313825}, //
+
17671 {1.84825003, 3.31602788}, //
+
17672 {1.84490001, 3.31916785}, //
+
17673 {1.84138334, 3.32255864}, //
+
17674 {1.83770001, 3.32620001}, //
+
17675 {1.82439697, 3.33678699}, //
+
17676 {1.81008768, 3.34745932}, //
+
17677 {1.79477227, 3.35821676}, //
+
17678 {1.77845061, 3.36905932}, //
+
17679 {1.76112282, 3.379987}, //
+
17680 {1.74278891, 3.39100003}, //
+
17681 {1.72344875, 3.40209818}, //
+
17682 {1.70310247, 3.41328144}, //
+
17683 {1.68175006, 3.42455006}, //
+
17684 {1.66986167, 3.42985916}, //
+
17685 {1.65830803, 3.43525362}, //
+
17686 {1.64708889, 3.44073343}, //
+
17687 {1.63620436, 3.44629812}, //
+
17688 {1.62565434, 3.45194817}, //
+
17689 {1.61543894, 3.45768332}, //
+
17690 {1.60555804, 3.4635036}, //
+
17691 {1.59601176, 3.46940923}, //
+
17692 {1.58679998, 3.47539997}, //
+
17693 {1.57135618, 3.48289132}, //
+
17694 {1.55515802, 3.49029875}, //
+
17695 {1.5382055, 3.49762225}, //
+
17696 {1.52049875, 3.50486183}, //
+
17697 {1.50203764, 3.51201725}, //
+
17698 {1.48282218, 3.51908898}, //
+
17699 {1.46285248, 3.52607656}, //
+
17700 {1.44212842, 3.5329802}, //
+
17701 {1.42065001, 3.53979993}, //
+
17702 {1.40156353, 3.54650426}, //
+
17703 {1.3834821, 3.55303955}, //
+
17704 {1.36640561, 3.55940557}, //
+
17705 {1.35033393, 3.56560254}, //
+
17706 {1.33526731, 3.57163024}, //
+
17707 {1.3212055, 3.5774889}, //
+
17708 {1.30814874, 3.58317828}, //
+
17709 {1.29609692, 3.58869886}, //
+
17710 {1.28505003, 3.59404993}, //
+
17711 {1.27642596, 3.59844637}, //
+
17712 {1.26713145, 3.6025908}, //
+
17713 {1.25716662, 3.60648322}, //
+
17714 {1.24653149, 3.61012411}, //
+
17715 {1.23522592, 3.61351299}, //
+
17716 {1.22325003, 3.6166501}, //
+
17717 {1.21060371, 3.61953521}, //
+
17718 {1.19728708, 3.62216854}, //
+
17719 {1.18330002, 3.6245501}, //
+
17720 {1.16924012, 3.62673283}, //
+
17721 {1.15568268, 3.62874746}, //
+
17722 {1.14262784, 3.63059449}, //
+
17723 {1.13007534, 3.63227344}, //
+
17724 {1.1180253, 3.63378453}, //
+
17725 {1.10647774, 3.63512778}, //
+
17726 {1.09543276, 3.63630319}, //
+
17727 {1.08489013, 3.6373105}, //
+
17728 {1.07484996, 3.63814998}, //
+
17729 {1.06902659, 3.63886356}, //
+
17730 {1.06362283, 3.63949323}, //
+
17731 {1.05863893, 3.64003897}, //
+
17732 {1.05407465, 3.64050055}, //
+
17733 {1.04993021, 3.64087844}, //
+
17734 {1.04620552, 3.64117217}, //
+
17735 {1.04290056, 3.64138222}, //
+
17736 {1.04001546, 3.6415081}, //
+
17737 {1.03754997, 3.64155006}, //
+
17738 {1.0334481, 3.64300871}, //
+
17739 {1.02867591, 3.64438462}, //
+
17740 {1.02323329, 3.6456778}, //
+
17741 {1.01712036, 3.64688826}, //
+
17742 {1.010337, 3.64801598}, //
+
17743 {1.00288332, 3.6490612}, //
+
17744 {0.994759262, 3.65002346}, //
+
17745 {0.985964835, 3.65090299}, //
+
17746 {0.976499975, 3.65170002}, //
+
17747 {0.962146282, 3.65249753}, //
+
17748 {0.947707415, 3.65337896}, //
+
17749 {0.933183312, 3.65434456}, //
+
17750 {0.918574095, 3.65539384}, //
+
17751 {0.903879642, 3.65652704}, //
+
17752 {0.889100015, 3.65774441}, //
+
17753 {0.874235213, 3.6590457}, //
+
17754 {0.859285176, 3.66043091}, //
+
17755 {0.844250023, 3.66190004}, //
+
17756 {0.832215428, 3.66306543}, //
+
17757 {0.820222855, 3.66356182}, //
+
17758 {0.808272243, 3.66338897}, //
+
17759 {0.796363592, 3.66254687}, //
+
17760 {0.784496903, 3.66103578}, //
+
17761 {0.772672236, 3.65885544}, //
+
17762 {0.76088953, 3.6560061}, //
+
17763 {0.749148786, 3.65248775}, //
+
17764 {0.737450004, 3.64829993}, //
+
17765 {0.726169765, 3.64373636}, //
+
17766 {0.715684593, 3.63909006}, //
+
17767 {0.705994427, 3.63436103}, //
+
17768 {0.697099388, 3.62954926}, //
+
17769 {0.688999355, 3.62465501}, //
+
17770 {0.681694448, 3.61967778}, //
+
17771 {0.675184548, 3.61461782}, //
+
17772 {0.669469774, 3.60947537}, //
+
17773 {0.664550006, 3.60424995}, //
+
17774 {0.662231505, 3.60185814}, //
+
17775 {0.659787059, 3.59921551}, //
+
17776 {0.657216668, 3.5963223}, //
+
17777 {0.654520392, 3.59317851}, //
+
17778 {0.651698172, 3.58978391}, //
+
17779 {0.648750007, 3.58613896}, //
+
17780 {0.645675898, 3.5822432}, //
+
17781 {0.642475903, 3.57809687}, //
+
17782 {0.639150023, 3.57369995}, //
+
17783 {0.635781467, 3.5692296}, //
+
17784 {0.63245368, 3.56484079}, //
+
17785 {0.629166663, 3.56053329}, //
+
17786 {0.625920355, 3.55630732}, //
+
17787 {0.622714818, 3.55216289}, //
+
17788 {0.61954999, 3.54809999}, //
+
17789 {0.616425931, 3.5441184}, //
+
17790 {0.613342583, 3.54021859}, //
+
17791 {0.610300004, 3.53640008}, //
+
17792 {0.607330263, 3.53269625}, //
+
17793 {0.604443192, 3.52911854}, //
+
17794 {0.601638913, 3.52566671}, //
+
17795 {0.598917305, 3.52234077}, //
+
17796 {0.596278369, 3.51914072}, //
+
17797 {0.593722224, 3.51606655}, //
+
17798 {0.591248751, 3.51311851}, //
+
17799 {0.588858008, 3.51029634}, //
+
17800 {0.586549997, 3.50760007}, //
+
17801 {0.584419727, 3.50511289}, //
+
17802 {0.582877517, 3.50331235}, //
+
17803 {0.583748162, 3.50511289}, //
+
17804 {0.584850013, 3.50760007}, //
+
17805 {0.586024702, 3.51027536}, //
+
17806 {0.587282121, 3.51303458}, //
+
17807 {0.588622212, 3.51587772}, //
+
17808 {0.590045035, 3.51880503}, //
+
17809 {0.591550589, 3.52181602}, //
+
17810 {0.593138874, 3.52491117}, //
+
17811 {0.59480989, 3.52809024}, //
+
17812 {0.596563578, 3.531353}, //
+
17813 {0.598399997, 3.53469992}, //
+
17814 {0.600288868, 3.53809929}, //
+
17815 {0.602177799, 3.54149747}, //
+
17816 {0.60406667, 3.54489446}, //
+
17817 {0.605955541, 3.54829001}, //
+
17818 {0.607844472, 3.55168462}, //
+
17819 {0.609733343, 3.55507779}, //
+
17820 {0.611622214, 3.55846977}, //
+
17821 {0.613511086, 3.56186056}, //
+
17822 {0.615400016, 3.56524992}, //
+
17823 {0.617267311, 3.56853461}, //
+
17824 {0.619091332, 3.57161045}, //
+
17825 {0.6208722, 3.57447767}, //
+
17826 {0.622609854, 3.57713652}, //
+
17827 {0.624304295, 3.57958651}, //
+
17828 {0.625955582, 3.58182788}, //
+
17829 {0.627563596, 3.5838604}, //
+
17830 {0.629128397, 3.58568454}, //
+
17831 {0.630649984, 3.58730006}, //
+
17832 {0.63148886, 3.58888388}, //
+
17833 {0.63249445, 3.59063578}, //
+
17834 {0.633666694, 3.59255552}, //
+
17835 {0.635005534, 3.59464312}, //
+
17836 {0.636511087, 3.59689879}, //
+
17837 {0.638183355, 3.59932232}, //
+
17838 {0.640022218, 3.60191369}, //
+
17839 {0.642027795, 3.60467291}, //
+
17840 {0.644200027, 3.60759997}, //
+
17841 {0.646508038, 3.61066365}, //
+
17842 {0.64889878, 3.61380982}, //
+
17843 {0.651372194, 3.61703897}, //
+
17844 {0.653928399, 3.6203506}, //
+
17845 {0.656567276, 3.62374496}, //
+
17846 {0.659288883, 3.6272223}, //
+
17847 {0.662093222, 3.63078213}, //
+
17848 {0.664980233, 3.63442469}, //
+
17849 {0.667949975, 3.63814998}, //
+
17850 {0.672493219, 3.64559937}, //
+
17851 {0.677078366, 3.65288091}, //
+
17852 {0.681705534, 3.65999436}, //
+
17853 {0.686374664, 3.66694021}, //
+
17854 {0.691085815, 3.67371798}, //
+
17855 {0.695838869, 3.68032789}, //
+
17856 {0.700633943, 3.68676972}, //
+
17857 {0.705470979, 3.69304371}, //
+
17858 {0.710349977, 3.69915009}, //
+
17859 {0.71510309, 3.70501542}, //
+
17860 {0.719562352, 3.71054506}, //
+
17861 {0.723727763, 3.71573877}, //
+
17862 {0.727599382, 3.72059703}, //
+
17863 {0.731177151, 3.72511911}, //
+
17864 {0.734461129, 3.72930551}, //
+
17865 {0.737451255, 3.7331562}, //
+
17866 {0.740147531, 3.73667097}, //
+
17867 {0.742550015, 3.73985004}, //
+
17868 {0.744186401, 3.74073076}, //
+
17869 {0.746073484, 3.7418623}, //
+
17870 {0.748211086, 3.74324441}, //
+
17871 {0.750599384, 3.7448771}, //
+
17872 {0.753238261, 3.74676061}, //
+
17873 {0.756127775, 3.74889445}, //
+
17874 {0.759267926, 3.75127912}, //
+
17875 {0.762658656, 3.75391412}, //
+
17876 {0.766300023, 3.75679994}, //
+
17877 {0.776990712, 3.7637136}, //
+
17878 {0.78797406, 3.77087665}, //
+
17879 {0.799250007, 3.77828884}, //
+
17880 {0.810818493, 3.78595066}, //
+
17881 {0.822679639, 3.79386163}, //
+
17882 {0.834833324, 3.80202222}, //
+
17883 {0.847279608, 3.8104322}, //
+
17884 {0.860018492, 3.81909132}, //
+
17885 {0.873049974, 3.82800007}, //
+
17886 {0.885925293, 3.83670926}, //
+
17887 {0.898173451, 3.84474826}, //
+
17888 {0.90979445, 3.85211658}, //
+
17889 {0.920788288, 3.85881472}, //
+
17890 {0.931154966, 3.86484265}, //
+
17891 {0.940894425, 3.87019992}, //
+
17892 {0.950006783, 3.87488699}, //
+
17893 {0.958491981, 3.87890363}, //
+
17894 {0.966350019, 3.88225007}, //
+
17895 {0.971175313, 3.88388634}, //
+
17896 {0.976629019, 3.88577342}, //
+
17897 {0.982711136, 3.88791108}, //
+
17898 {0.989421606, 3.89029932}, //
+
17899 {0.996760488, 3.89293838}, //
+
17900 {1.00472772, 3.89582777}, //
+
17901 {1.01332343, 3.89896798}, //
+
17902 {1.02254748, 3.90235853}, //
+
17903 {1.03240001, 3.9059999}, //
+
17904 {1.04259872, 3.90972471}, //
+
17905 {1.05283952, 3.91336536}, //
+
17906 {1.06312227, 3.91692233}, //
+
17907 {1.07344687, 3.92039514}, //
+
17908 {1.08381355, 3.92378402}, //
+
17909 {1.09422219, 3.92708898}, //
+
17910 {1.10467279, 3.93030977}, //
+
17911 {1.11516547, 3.93344688}, //
+
17912 {1.1257, 3.93650007}, //
+
17913 {1.13461852, 3.93945861}, //
+
17914 {1.14328516, 3.94229007}, //
+
17915 {1.15170002, 3.94499445}, //
+
17916 {1.159863, 3.94757152}, //
+
17917 {1.16777408, 3.95002151}, //
+
17918 {1.17543328, 3.95234442}, //
+
17919 {1.1828407, 3.95454001}, //
+
17920 {1.18999624, 3.95660853}, //
+
17921 {1.19690001, 3.95854998}, //
+
17922 {1.20334315, 3.96037531}, //
+
17923 {1.20911729, 3.96207356}, //
+
17924 {1.21422219, 3.9636445}, //
+
17925 {1.21865797, 3.96508837}, //
+
17926 {1.22242475, 3.96640491}, //
+
17927 {1.22552228, 3.96759439}, //
+
17928 {1.22795057, 3.96865678}, //
+
17929 {1.22970986, 3.96959209}, //
+
17930 {1.23080003, 3.97040009}, //
+
17931 {1.23318148, 3.97123885}, //
+
17932 {1.23581481, 3.9722445}, //
+
17933 {1.23870003, 3.97341657}, //
+
17934 {1.24183702, 3.97475553}, //
+
17935 {1.24522591, 3.97626114}, //
+
17936 {1.24886668, 3.97793341}, //
+
17937 {1.25275922, 3.97977233}, //
+
17938 {1.25690365, 3.98177767}, //
+
17939 {1.26129997, 3.9839499}, //
+
17940 {1.26588452, 3.98619509}, //
+
17941 {1.27059388, 3.98839688}, //
+
17942 {1.27542782, 3.99055552}, //
+
17943 {1.28038645, 3.99267101}, //
+
17944 {1.28546977, 3.99474311}, //
+
17945 {1.29067779, 3.99677229}, //
+
17946 {1.29601049, 3.99875808}, //
+
17947 {1.3014679, 4.00070047}, //
+
17948 {1.30704999, 4.00260019}, //
+
17949 {1.31264257, 4.00438404}, //
+
17950 {1.31810927, 4.00595808}, //
+
17951 {1.32344997, 4.00732231}, //
+
17952 {1.32866478, 4.00847673}, //
+
17953 {1.33375371, 4.00942087}, //
+
17954 {1.33871663, 4.01015568}, //
+
17955 {1.34355366, 4.0106802}, //
+
17956 {1.34826481, 4.01099491}, //
+
17957 {1.35284996, 4.01109982}, //
+
17958 {1.35649133, 4.01097393}, //
+
17959 {1.35988212, 4.01059628}, //
+
17960 {1.36302221, 4.00996685}, //
+
17961 {1.36591172, 4.00908518}, //
+
17962 {1.36855066, 4.00795174}, //
+
17963 {1.3709389, 4.00656652}, //
+
17964 {1.37307656, 4.00492954}, //
+
17965 {1.37496352, 4.00304079}, //
+
17966 {1.37660003, 4.00089979}, //
+
17967 {1.37811053, 3.99860239}, //
+
17968 {1.37961972, 3.99622107}, //
+
17969 {1.38112783, 3.99375558}, //
+
17970 {1.38263452, 3.99120617}, //
+
17971 {1.38414013, 3.98857284}, //
+
17972 {1.38564444, 3.98585558}, //
+
17973 {1.38714755, 3.9830544}, //
+
17974 {1.38864934, 3.98016906}, //
+
17975 {1.39014995, 3.97720003}, //
+
17976 {1.39019203, 3.97570992}, //
+
17977 {1.39031792, 3.97426176}, //
+
17978 {1.39052773, 3.97285557}, //
+
17979 {1.39082158, 3.97149134}, //
+
17980 {1.39119935, 3.97016907}, //
+
17981 {1.39166117, 3.968889}, //
+
17982 {1.39220679, 3.96765065}, //
+
17983 {1.39283645, 3.96645427}, //
+
17984 {1.39355004, 3.96530008}, //
+
17985 {1.39434695, 3.96424007}, //
+
17986 {1.3952266, 3.963305}, //
+
17987 {1.39618886, 3.96249437}, //
+
17988 {1.39723396, 3.96180868}, //
+
17989 {1.39836168, 3.96124744}, //
+
17990 {1.39957225, 3.96081114}, //
+
17991 {1.40086544, 3.96049929}, //
+
17992 {1.40224135, 3.96031237}, //
+
17993 {1.40369999, 3.9602499}, //
+
17994 {1.40703523, 3.95955729}, //
+
17995 {1.41099632, 3.95899081}, //
+
17996 {1.41558337, 3.95854998}, //
+
17997 {1.42079628, 3.95823526}, //
+
17998 {1.42663515, 3.9580462}, //
+
17999 {1.43309999, 3.95798326}, //
+
18000 {1.44019079, 3.9580462}, //
+
18001 {1.44790745, 3.95823526}, //
+
18002 {1.45624995, 3.95854998}, //
+
18003 {1.46493769, 3.95896912}, //
+
18004 {1.47366726, 3.95947099}, //
+
18005 {1.48243892, 3.96005559}, //
+
18006 {1.49125242, 3.96072292}, //
+
18007 {1.500108, 3.96147275}, //
+
18008 {1.50900555, 3.96230555}, //
+
18009 {1.51794505, 3.96322107}, //
+
18010 {1.52692652, 3.96421909}, //
+
18011 {1.53594995, 3.96530008}, //
+
18012 {1.5446173, 3.96641231}, //
+
18013 {1.55253029, 3.96748281}, //
+
18014 {1.55968893, 3.9685111}, //
+
18015 {1.56609321, 3.96949744}, //
+
18016 {1.57174325, 3.97044206}, //
+
18017 {1.57663894, 3.97134447}, //
+
18018 {1.58078027, 3.97220492}, //
+
18019 {1.58416724, 3.97302341}, //
+
18020 {1.58679998, 3.97379994}, //
+
18021 {1.5901562, 3.97447157}, //
+
18022 {1.59418023, 3.97497535}, //
+
18023 {1.59887218, 3.97531104}, //
+
18024 {1.60423207, 3.97547913}, //
+
18025 {1.61025989, 3.97547913}, //
+
18026 {1.61695552, 3.97531104}, //
+
18027 {1.62431908, 3.97497535}, //
+
18028 {1.63235056, 3.97447157}, //
+
18029 {1.64104998, 3.97379994}, //
+
18030 {1.65013576, 3.97302341}, //
+
18031 {1.65930438, 3.97220492}, //
+
18032 {1.6685555, 3.97134447}, //
+
18033 {1.67788947, 3.97044206}, //
+
18034 {1.68730617, 3.96949744}, //
+
18035 {1.6968056, 3.9685111}, //
+
18036 {1.70638764, 3.96748281}, //
+
18037 {1.71605241, 3.96641231}, //
+
18038 {1.72580004, 3.96530008}, //
+
18039 {1.73530674, 3.96424007}, //
+
18040 {1.74422717, 3.963305}, //
+
18041 {1.75256109, 3.96249437}, //
+
18042 {1.76030862, 3.96180868}, //
+
18043 {1.76746976, 3.96124744}, //
+
18044 {1.77404439, 3.96081114}, //
+
18045 {1.78003275, 3.96049929}, //
+
18046 {1.7854346, 3.96031237}, //
+
18047 {1.79024994, 3.9602499}, //
+
18048 {1.7953161, 3.95848775}, //
+
18049 {1.8014698, 3.95622277}, //
+
18050 {1.80871105, 3.95345545}, //
+
18051 {1.81704009, 3.95018578}, //
+
18052 {1.82645679, 3.94641352}, //
+
18053 {1.83696115, 3.94213891}, //
+
18054 {1.84855306, 3.93736172}, //
+
18055 {1.86123276, 3.93208218}, //
+
18056 {1.875, 3.92630005}, //
+
18057 {1.88944757, 3.92019391}, //
+
18058 {1.90414572, 3.91391969}, //
+
18059 {1.91909444, 3.90747786}, //
+
18060 {1.93429387, 3.90086794}, //
+
18061 {1.94974387, 3.89409018}, //
+
18062 {1.96544445, 3.88714433}, //
+
18063 {1.98139572, 3.88003087}, //
+
18064 {1.99759758, 3.87274933}, //
+
18065 {2.01405001, 3.86529994}, //
+
18066 {2.03037643, 3.85780859}, //
+
18067 {2.04620051, 3.85040116}, //
+
18068 {2.06152225, 3.84307766}, //
+
18069 {2.07634139, 3.83583832}, //
+
18070 {2.09065795, 3.82868266}, //
+
18071 {2.10447216, 3.82161117}, //
+
18072 {2.11778402, 3.81462336}, //
+
18073 {2.1305933, 3.80771971}, //
+
18074 {2.14289999, 3.80089998}, //
+
18075 {2.16742158, 3.78599262}, //
+
18076 {2.19127536, 3.76991487}, //
+
18077 {2.21446109, 3.75266671}, //
+
18078 {2.23697901, 3.73424816}, //
+
18079 {2.25882912, 3.71465921}, //
+
18080 {2.28001118, 3.69390011}, //
+
18081 {2.30052543, 3.67197037}, //
+
18082 {2.32037163, 3.64887047}, //
+
18083 {2.33955002, 3.62459993}, //
+
18084 {2.34854198, 3.61412835}, //
+
18085 {2.3574512, 3.60382462}, //
+
18086 {2.36627769, 3.59368896}, //
+
18087 {2.3750217, 3.58372092}, //
+
18088 {2.38368273, 3.57392097}, //
+
18089 {2.39226103, 3.56428885}, //
+
18090 {2.40075684, 3.55482459}, //
+
18091 {2.40916967, 3.54552841}, //
+
18092 {2.41750002, 3.53640008}, //
+
18093 {2.42951417, 3.52694559}, //
+
18094 {2.44144559, 3.51816058}, //
+
18095 {2.45329452, 3.51004434}, //
+
18096 {2.46506047, 3.50259757}, //
+
18097 {2.47674394, 3.49581981}, //
+
18098 {2.48834443, 3.48971105}, //
+
18099 {2.49986243, 3.48427153}, //
+
18100 {2.51129746, 3.47950125}, //
+
18101 {2.52265, 3.47539997}, //
+
18102 {2.52871418, 3.47161245}, //
+
18103 {2.53486228, 3.46778274}, //
+
18104 {2.54109454, 3.46391106}, //
+
18105 {2.54741049, 3.45999742}, //
+
18106 {2.5538106, 3.45604205}, //
+
18107 {2.56029439, 3.45204449}, //
+
18108 {2.56686234, 3.44800496}, //
+
18109 {2.57351422, 3.44392347}, //
+
18110 {2.58025002, 3.43980002}, //
+
18111 {2.58699632, 3.43546724}, //
+
18112 {2.59365749, 3.430758}, //
+
18113 {2.60023332, 3.42567229}, //
+
18114 {2.60672402, 3.42020988}, //
+
18115 {2.61312962, 3.41437101}, //
+
18116 {2.61945009, 3.40815544}, //
+
18117 {2.62568521, 3.40156364}, //
+
18118 {2.63183522, 3.39459515}, //
+
18119 {2.63790011, 3.38724995}, //
+
18120 {2.64091182, 3.38276982}, //
+
18121 {2.64392471, 3.37837338}, //
+
18122 {2.6469388, 3.37406111}, //
+
18123 {2.64995432, 3.36983275}, //
+
18124 {2.65297103, 3.36568832}, //
+
18125 {2.65598893, 3.36162782}, //
+
18126 {2.65900803, 3.35765123}, //
+
18127 {2.66202831, 3.35375857}, //
+
18128 {2.66505003, 3.34995008}, //
+
18129 {2.69238329, 3.31624866}, //
+
18130 {2.71862769, 3.28296733}, //
+
18131 {2.74378324, 3.25010562}, //
+
18132 {2.76784992, 3.21766353}, //
+
18133 {2.79082775, 3.18564129}, //
+
18134 {2.81271672, 3.15403891}, //
+
18135 {2.8335166, 3.12285614}, //
+
18136 {2.85322785, 3.09209323}, //
+
18137 {2.87185001, 3.06174994}, //
+
18138 {2.88148212, 3.04039884}, //
+
18139 {2.8907783, 3.01854515}, //
+
18140 {2.89973879, 2.99618888}, //
+
18141 {2.90836358, 2.97333026}, //
+
18142 {2.91665244, 2.94996905}, //
+
18143 {2.92460561, 2.9261055}, //
+
18144 {2.93222284, 2.9017396}, //
+
18145 {2.93950438, 2.87687087}, //
+
18146 {2.94645, 2.85150003}, //
+
18147 {2.95097232, 2.83379865}, //
+
18148 {2.9554944, 2.81685066}, //
+
18149 {2.96001673, 2.8006556}, //
+
18150 {2.96453881, 2.78521347}, //
+
18151 {2.96906114, 2.77052474}, //
+
18152 {2.97358322, 2.75658894}, //
+
18153 {2.97810555, 2.74340606}, //
+
18154 {2.98262787, 2.73097658}, //
+
18155 {2.98714995, 2.71930003}, //
+
18156 {2.99072838, 2.7088933}, //
+
18157 {2.99393034, 2.69727278}, //
+
18158 {2.9967556, 2.68443894}, //
+
18159 {2.9992044, 2.67039132}, //
+
18160 {3.00127649, 2.65513015}, //
+
18161 {3.00297213, 2.63865566}, //
+
18162 {3.0042913, 2.62096739}, //
+
18163 {3.005234, 2.60206532}, //
+
18164 {3.00580001, 2.58194995}, //
+
18165 {3.00605178, 2.56129074}, //
+
18166 {3.00605178, 2.54075742}, //
+
18167 {3.00580001, 2.52034998}, //
+
18168 {3.00529623, 2.50006843}, //
+
18169 {3.00454068, 2.479913}, //
+
18170 {3.00353336, 2.45988345}, //
+
18171 {3.00227404, 2.43997955}, //
+
18172 {3.00076294, 2.42020178}, //
+
18173 {2.99900007, 2.40054989}, //
+
18174 {2.99710059, 2.38167286}, //
+
18175 {2.99515796, 2.36421919}, //
+
18176 {2.99317217, 2.34818888}, //
+
18177 {2.99114323, 2.33358216}, //
+
18178 {2.98907089, 2.32039881}, //
+
18179 {2.98695564, 2.30863881}, //
+
18180 {2.984797, 2.29830241}, //
+
18181 {2.98259497, 2.28938961}, //
+
18182 {2.98035002, 2.28189993}, //
+
18183 {2.97755003, 2.27287841}, //
+
18184 {2.97366118, 2.26239133}, //
+
18185 {2.96868324, 2.25043893}, //
+
18186 {2.96261668, 2.23702097}, //
+
18187 {2.95546103, 2.22213769}, //
+
18188 {2.94721675, 2.20578885}, //
+
18189 {2.93788338, 2.18797469}, //
+
18190 {2.92746115, 2.16869497}, //
+
18191 {2.91595006, 2.14794993}, //
+
18192 {2.90383148, 2.12646174}, //
+
18193 {2.89158702, 2.10493016}, //
+
18194 {2.87921667, 2.08335567}, //
+
18195 {2.86672044, 2.06173754}, //
+
18196 {2.85409808, 2.04007649}, //
+
18197 {2.84135008, 2.0183723}, //
+
18198 {2.82847595, 1.99662471}, //
+
18199 {2.81547594, 1.97483397}, //
+
18200 {2.80235004, 1.95299995}, //
+
18201 {2.78960133, 1.93189871}, //
+
18202 {2.77773261, 1.91230619}, //
+
18203 {2.76674438, 1.89422226}, //
+
18204 {2.75663638, 1.87764692}, //
+
18205 {2.74740863, 1.8625803}, //
+
18206 {2.73906112, 1.84902227}, //
+
18207 {2.73159385, 1.83697283}, //
+
18208 {2.72500682, 1.82643211}, //
+
18209 {2.71930003, 1.81739998}, //
+
18210 {2.7156167, 1.81155491}, //
+
18211 {2.71210003, 1.80608642}, //
+
18212 {2.70875001, 1.8009944}, //
+
18213 {2.70556664, 1.79627895}, //
+
18214 {2.70254993, 1.79194009}, //
+
18215 {2.69970012, 1.78797781}, //
+
18216 {2.69701672, 1.784392}, //
+
18217 {2.69449997, 1.78118277}, //
+
18218 {2.69215012, 1.77835}, //
+
18219 {2.68993568, 1.77584195}, //
+
18220 {2.68780422, 1.7735846}, //
+
18221 {2.68575549, 1.77157784}, //
+
18222 {2.68378949, 1.76982164}, //
+
18223 {2.68190622, 1.76831603}, //
+
18224 {2.68010545, 1.76706111}, //
+
18225 {2.67838764, 1.76605678}, //
+
18226 {2.67675257, 1.76530313}, //
+
18227 {2.67519999, 1.76479995}, //
+
18228 {2.6736896, 1.76445365}, //
+
18229 {2.67218018, 1.76414812}, //
+
18230 {2.67067218, 1.76388335}, //
+
18231 {2.66916537, 1.76365924}, //
+
18232 {2.66765976, 1.76347589}, //
+
18233 {2.66615558, 1.76333332}, //
+
18234 {2.66465259, 1.76323152}, //
+
18235 {2.66315055, 1.76317036}, //
+
18236 {2.66164994, 1.76314998}, //
+
18237 {2.65531373, 1.76353502}, //
+
18238 {2.6551857, 1.76365924}, //
+
18239 {2.65503883, 1.76388335}, //
+
18240 {2.65493393, 1.76414812}, //
+
18241 {2.65487099, 1.76445365}, //
+
18242 {2.65485001, 1.76479995}, //
+
18243 {2.65480804, 1.76515675}, //
+
18244 {2.65468216, 1.76547158}, //
+
18245 {2.65447211, 1.76574445}, //
+
18246 {2.65417838, 1.76597536}, //
+
18247 {2.65380073, 1.76616418}, //
+
18248 {2.65333891, 1.76631117}, //
+
18249 {2.65279317, 1.76641607}, //
+
18250 {2.65216351, 1.76647902}, //
+
18251 {2.65144992, 1.7665}, //
+
18252 {2.65072584, 1.76652098}, //
+
18253 {2.65004253, 1.76658392}, //
+
18254 {2.6494, 1.76668894}, //
+
18255 {2.64879823, 1.76683581}, //
+
18256 {2.64823699, 1.76702464}, //
+
18257 {2.64771676, 1.76725554}, //
+
18258 {2.64723706, 1.76752841}, //
+
18259 {2.64679813, 1.76784325}, //
+
18260 {2.64639997, 1.76820004}, //
+
18261 {2.64600134, 1.76855683}, //
+
18262 {2.6455605, 1.76887155}, //
+
18263 {2.64507771, 1.76914442}, //
+
18264 {2.64455318, 1.76937532}, //
+
18265 {2.64398646, 1.76956415}, //
+
18266 {2.64337778, 1.76971114}, //
+
18267 {2.64272714, 1.76981604}, //
+
18268 {2.64203453, 1.76987898}, //
+
18269 {2.64129996, 1.76989996}, //
+
18270 {2.64052343, 1.76992095}, //
+
18271 {2.63970494, 1.76998401}, //
+
18272 {2.63884449, 1.77008891}, //
+
18273 {2.63794208, 1.77023578}, //
+
18274 {2.63699746, 1.77042472}, //
+
18275 {2.63607311, 1.77064097}, //
+
18276 {2.6359272, 1.77149439}, //
+
18277 {2.63586426, 1.77325559}, //
+
18278 {2.63601112, 1.77518332}, //
+
18279 {2.6363678, 1.77727783}, //
+
18280 {2.63693452, 1.77953887}, //
+
18281 {2.63771105, 1.78196669}, //
+
18282 {2.63869762, 1.78456116}, //
+
18283 {2.63989377, 1.78732216}, //
+
18284 {2.64129996, 1.79024994}, //
+
18285 {2.64234805, 1.79290366}, //
+
18286 {2.64398146, 1.7963537}, //
+
18287 {2.64619994, 1.80060005}, //
+
18288 {2.64900374, 1.8056426}, //
+
18289 {2.65239263, 1.81148148}, //
+
18290 {2.65636659, 1.81811666}, //
+
18291 {2.66092587, 1.82554817}, //
+
18292 {2.66607046, 1.83377588}, //
+
18293 {2.6717999, 1.84280002}, //
+
18294 {2.6778748, 1.85226357}, //
+
18295 {2.6840322, 1.86180985}, //
+
18296 {2.69027233, 1.87143886}, //
+
18297 {2.69659495, 1.8811506}, //
+
18298 {2.70300055, 1.89094508}, //
+
18299 {2.70948887, 1.90082216}, //
+
18300 {2.71605992, 1.9107821}, //
+
18301 {2.72271347, 1.92082465}, //
+
18302 {2.72944999, 1.93095005}, //
+
18303 {2.73614454, 1.94085491}, //
+
18304 {2.7426722, 1.95021415}, //
+
18305 {2.74903345, 1.95902777}, //
+
18306 {2.7552278, 1.96729565}, //
+
18307 {2.7612555, 1.97501791}, //
+
18308 {2.76711679, 1.98219442}, //
+
18309 {2.77281117, 1.98882532}, //
+
18310 {2.77833891, 1.99491048}, //
+
18311 {2.78369999, 2.0004499}, //
+
18312 {2.78901911, 2.01077294}, //
+
18313 {2.79442096, 2.02214146}, //
+
18314 {2.79990554, 2.03455567}, //
+
18315 {2.80547285, 2.04801536}, //
+
18316 {2.81112289, 2.06252098}, //
+
18317 {2.81685567, 2.07807231}, //
+
18318 {2.82267094, 2.0946691}, //
+
18319 {2.82856917, 2.11231184}, //
+
18320 {2.8345499, 2.13100004}, //
+
18321 {2.84045744, 2.15039992}, //
+
18322 {2.84611297, 2.1701777}, //
+
18323 {2.85151672, 2.19033337}, //
+
18324 {2.85666847, 2.21086669}, //
+
18325 {2.86156845, 2.23177767}, //
+
18326 {2.86621666, 2.25306678}, //
+
18327 {2.87061286, 2.2747333}, //
+
18328 {2.87475729, 2.29677773}, //
+
18329 {2.87864995, 2.31920004}, //
+
18330 {2.88065434, 2.33447599}, //
+
18331 {2.88215613, 2.35017037}, //
+
18332 {2.88315558, 2.36628342}, //
+
18333 {2.88365245, 2.38281488}, //
+
18334 {2.88364697, 2.39976478}, //
+
18335 {2.8831389, 2.41713333}, //
+
18336 {2.88212848, 2.43492031}, //
+
18337 {2.88061547, 2.45312595}, //
+
18338 {2.87859988, 2.47175002}, //
+
18339 {2.87623954, 2.49042654}, //
+
18340 {2.87366915, 2.50876737}, //
+
18341 {2.87088895, 2.52677226}, //
+
18342 {2.8678987, 2.54444146}, //
+
18343 {2.86469865, 2.56177473}, //
+
18344 {2.86128879, 2.57877231}, //
+
18345 {2.85766912, 2.59543395}, //
+
18346 {2.8538394, 2.6117599}, //
+
18347 {2.84980011, 2.62774992}, //
+
18348 {2.84567666, 2.64302778}, //
+
18349 {2.84159517, 2.65721655}, //
+
18350 {2.83755565, 2.6703167}, //
+
18351 {2.83355808, 2.68232775}, //
+
18352 {2.82960248, 2.69324994}, //
+
18353 {2.82568884, 2.70308328}, //
+
18354 {2.8218174, 2.71182775}, //
+
18355 {2.81798768, 2.71948338}, //
+
18356 {2.81419992, 2.7260499}, //
+
18357 {2.8090167, 2.7355969}, //
+
18358 {2.8039999, 2.74614882}, //
+
18359 {2.79914999, 2.75770545}, //
+
18360 {2.79446673, 2.77026725}, //
+
18361 {2.78994989, 2.78383398}, //
+
18362 {2.78559995, 2.79840565}, //
+
18363 {2.78141665, 2.81398201}, //
+
18364 {2.77740002, 2.83056355}, //
+
18365 {2.77355003, 2.84815001}, //
+
18366 {2.7697413, 2.86367893}, //
+
18367 {2.76584888, 2.87862158}, //
+
18368 {2.76187229, 2.89297771}, //
+
18369 {2.75781178, 2.90674758}, //
+
18370 {2.75366735, 2.91993093}, //
+
18371 {2.749439, 2.93252778}, //
+
18372 {2.74512649, 2.94453835}, //
+
18373 {2.74073029, 2.95596242}, //
+
18374 {2.73624992, 2.96679997}, //
+
18375 {2.73025918, 2.97885561}, //
+
18376 {2.72435379, 2.99091101}, //
+
18377 {2.71853328, 3.00296664}, //
+
18378 {2.71279812, 3.01502228}, //
+
18379 {2.70714808, 3.02707767}, //
+
18380 {2.70158339, 3.03913331}, //
+
18381 {2.69610381, 3.05118895}, //
+
18382 {2.69070935, 3.06324434}, //
+
18383 {2.68540001, 3.07529998}, //
+
18384 {2.68166471, 3.0820365}, //
+
18385 {2.67801476, 3.08869004}, //
+
18386 {2.67444992, 3.0952611}, //
+
18387 {2.67097044, 3.10174942}, //
+
18388 {2.66757584, 3.10815501}, //
+
18389 {2.66426659, 3.11447787}, //
+
18390 {2.66104269, 3.120718}, //
+
18391 {2.65790367, 3.1268754}, //
+
18392 {2.65485001, 3.13295007}, //
+
18393 {2.65072727, 3.1407969}, //
+
18394 {2.6458919, 3.14927101}, //
+
18395 {2.64034438, 3.15837216}, //
+
18396 {2.63408446, 3.1681006}, //
+
18397 {2.62711239, 3.17845607}, //
+
18398 {2.61942768, 3.18943882}, //
+
18399 {2.61103082, 3.20104885}, //
+
18400 {2.60192156, 3.21328568}, //
+
18401 {2.59209991, 3.22615004}, //
+
18402 {2.58212161, 3.23902464}, //
+
18403 {2.57251978, 3.25127101}, //
+
18404 {2.56329441, 3.26288891}, //
+
18405 {2.55444574, 3.27387834}, //
+
18406 {2.54597354, 3.28423953}, //
+
18407 {2.5378778, 3.29397225}, //
+
18408 {2.53015876, 3.30307651}, //
+
18409 {2.52281594, 3.31155252}, //
+
18410 {2.51585007, 3.31940007}, //
+
18411 {2.51036286, 3.32334447}, //
+
18412 {2.50445747, 3.32762218}, //
+
18413 {2.49813342, 3.33223343}, //
+
18414 {2.49139071, 3.33717775}, //
+
18415 {2.48422956, 3.34245563}, //
+
18416 {2.47665, 3.34806657}, //
+
18417 {2.46865177, 3.35401106}, //
+
18418 {2.46023512, 3.36028886}, //
+
18419 {2.45140004, 3.36689997}, //
+
18420 {2.44012094, 3.37453771}, //
+
18421 {2.42888403, 3.38238406}, //
+
18422 {2.41768885, 3.3904388}, //
+
18423 {2.40653586, 3.39870238}, //
+
18424 {2.3954246, 3.40717459}, //
+
18425 {2.38435555, 3.41585565}, //
+
18426 {2.37332845, 3.42474508}, //
+
18427 {2.36234331, 3.43384314}, //
+
18428 {2.3513999, 3.44315004}, //
+
18429 {2.3407073, 3.45250916}, //
+
18430 {2.33047414, 3.46174264}, //
+
18431 {2.32069993, 3.47084999}, //
+
18432 {2.31138515, 3.47983146}, //
+
18433 {2.30252957, 3.48868704}, //
+
18434 {2.29413342, 3.49741673}, //
+
18435 {2.28619623, 3.50602031}, //
+
18436 {2.27871847, 3.51449823}, //
+
18437 {2.27169991, 3.52285004}, //
+
18438 {2.25433517, 3.54654264}, //
+
18439 {2.23688507, 3.56939816}, //
+
18440 {2.2193501, 3.5914166}, //
+
18441 {2.20172954, 3.61259818}, //
+
18442 {2.1840241, 3.63294268}, //
+
18443 {2.1662333, 3.65245008}, //
+
18444 {2.14835739, 3.67112041}, //
+
18445 {2.13039637, 3.68895364}, //
+
18446 {2.11234999, 3.70595002}, //
+
18447 {2.1054883, 3.71256042}, //
+
18448 {2.09845853, 3.71883631}, //
+
18449 {2.09126115, 3.7247777}, //
+
18450 {2.08389568, 3.73038459}, //
+
18451 {2.07636237, 3.73565674}, //
+
18452 {2.06866121, 3.74059439}, //
+
18453 {2.06079197, 3.74519753}, //
+
18454 {2.05275488, 3.74946594}, //
+
18455 {2.04454994, 3.75340009}, //
+
18456 {2.03630304, 3.75709319}, //
+
18457 {2.02814007, 3.76061726}, //
+
18458 {2.02006102, 3.76397228}, //
+
18459 {2.01206613, 3.76715803}, //
+
18460 {2.00415492, 3.77017474}, //
+
18461 {1.99632776, 3.77302217}, //
+
18462 {1.98858452, 3.77570057}, //
+
18463 {1.98092532, 3.77820992}, //
+
18464 {1.97335005, 3.78055}, //
+
18465 {1.9682821, 3.78201842}, //
+
18466 {1.96363389, 3.78340197}, //
+
18467 {1.95940554, 3.78469992}, //
+
18468 {1.95559692, 3.78591299}, //
+
18469 {1.95220804, 3.78704071}, //
+
18470 {1.9492389, 3.78808331}, //
+
18471 {1.94668949, 3.7890408}, //
+
18472 {1.94455993, 3.78991294}, //
+
18473 {1.94284999, 3.79069996}, //
+
18474 {1.93938887, 3.79235744}, //
+
18475 {1.93505001, 3.79430747}, //
+
18476 {1.92983329, 3.79655004}, //
+
18477 {1.92373884, 3.79908514}, //
+
18478 {1.91676664, 3.80191302}, //
+
18479 {1.90891671, 3.80503345}, //
+
18480 {1.90018892, 3.80844641}, //
+
18481 {1.89058328, 3.81215191}, //
+
18482 {1.88010001, 3.81614995}, //
+
18483 {1.86907279, 3.82025242}, //
+
18484 {1.85783577, 3.82427096}, //
+
18485 {1.84638894, 3.82820559}, //
+
18486 {1.83473206, 3.83205628}, //
+
18487 {1.82286549, 3.83582282}, //
+
18488 {1.81078887, 3.83950567}, //
+
18489 {1.79850245, 3.84310436}, //
+
18490 {1.78600621, 3.84661913}, //
+
18491 {1.77330005, 3.85004997}, //
+
18492 {1.7606982, 3.85337663}, //
+
18493 {1.74851477, 3.85657835}, //
+
18494 {1.73675001, 3.85965562}, //
+
18495 {1.72540367, 3.86260796}, //
+
18496 {1.71447587, 3.86543584}, //
+
18497 {1.70396662, 3.86813879}, //
+
18498 {1.69387591, 3.87071729}, //
+
18499 {1.68420374, 3.87317109}, //
+
18500 {1.67495, 3.87549996}, //
+
18501 {1.66676605, 3.87691665}, //
+
18502 {1.65879202, 3.87816668}, //
+
18503 {1.6510278, 3.87925005}, //
+
18504 {1.64347351, 3.88016677}, //
+
18505 {1.63612902, 3.8809166}, //
+
18506 {1.62899446, 3.88150001}, //
+
18507 {1.62206972, 3.88191676}, //
+
18508 {1.6153549, 3.88216662}, //
+
18509 {1.60885, 3.88225007}, //
+
18510 {1.60242844, 3.88220859}, //
+
18511 {1.5959636, 3.88208461}, //
+
18512 {1.5894556, 3.88187766}, //
+
18513 {1.58290434, 3.88158822}, //
+
18514 {1.57630992, 3.88121605}, //
+
18515 {1.56967223, 3.88076115}, //
+
18516 {1.56299138, 3.88022351}, //
+
18517 {1.55626726, 3.87960315}, //
+
18518 {1.54949999, 3.87890005}, //
+
18519 {1.54335189, 3.87818646}, //
+
18520 {1.5369519, 3.8775568}, //
+
18521 {1.53030002, 3.87701106}, //
+
18522 {1.52339625, 3.87654948}, //
+
18523 {1.51624072, 3.87617159}, //
+
18524 {1.50883329, 3.87587786}, //
+
18525 {1.50117409, 3.87566781}, //
+
18526 {1.49326301, 3.87554193}, //
+
18527 {1.48510003, 3.87549996}, //
+
18528 {1.4731698, 3.87562537}, //
+
18529 {1.46149015, 3.87600112}, //
+
18530 {1.45006108, 3.87662768}, //
+
18531 {1.43888271, 3.87750483}, //
+
18532 {1.42795491, 3.87863278}, //
+
18533 {1.41727781, 3.88001108}, //
+
18534 {1.40685129, 3.8816402}, //
+
18535 {1.39667535, 3.88351965}, //
+
18536 {1.38674998, 3.88564992}, //
+
18537 {1.37696052, 3.88800001}, //
+
18538 {1.36716974, 3.89051676}, //
+
18539 {1.35737777, 3.89319992}, //
+
18540 {1.34758461, 3.89604998}, //
+
18541 {1.33779013, 3.89906669}, //
+
18542 {1.32799447, 3.90225005}, //
+
18543 {1.31819749, 3.90560007}, //
+
18544 {1.30839944, 3.90911674}, //
+
18545 {1.29859996, 3.91280007}, //
+
18546 {1.29705739, 3.91284132}, //
+
18547 {1.29542959, 3.91296554}, //
+
18548 {1.29371667, 3.91317225}, //
+
18549 {1.29191852, 3.91346169}, //
+
18550 {1.29003513, 3.91383386}, //
+
18551 {1.28806663, 3.914289}, //
+
18552 {1.28601301, 3.91482663}, //
+
18553 {1.28387403, 3.915447}, //
+
18554 {1.28164995, 3.91615009}, //
+
18555 {1.27419996, 3.91820669}, //
+
18556 {1.26691663, 3.91984391}, //
+
18557 {1.25979996, 3.92106104}, //
+
18558 {1.25285006, 3.92185855}, //
+
18559 {1.24606669, 3.92223644}, //
+
18560 {1.23944998, 3.92219448}, //
+
18561 {1.23300004, 3.92173266}, //
+
18562 {1.22671664, 3.92085123}, //
+
18563 {1.22060001, 3.91954994}, //
+
18564 {1.21461916, 3.91796541}, //
+
18565 {1.20872104, 3.91621184}, //
+
18566 {1.20290554, 3.914289}, //
+
18567 {1.19717288, 3.91219687}, //
+
18568 {1.19152284, 3.90993571}, //
+
18569 {1.18595552, 3.90750551}, //
+
18570 {1.18047094, 3.90490627}, //
+
18571 {1.17506909, 3.90213776}, //
+
18572 {1.16974998, 3.89919996}, //
+
18573 {1.16673887, 3.89841294}, //
+
18574 {1.16372776, 3.89754081}, //
+
18575 {1.16071665, 3.89658332}, //
+
18576 {1.15770555, 3.89554071}, //
+
18577 {1.15469444, 3.89441299}, //
+
18578 {1.15168333, 3.89319992}, //
+
18579 {1.14867222, 3.89190197}, //
+
18580 {1.14566112, 3.89051843}, //
+
18581 {1.14265001, 3.88905001}, //
+
18582 {1.13421416, 3.88745546}, //
+
18583 {1.12548459, 3.8856945}, //
+
18584 {1.11646116, 3.88376665}, //
+
18585 {1.10714388, 3.88167214}, //
+
18586 {1.09753275, 3.87941122}, //
+
18587 {1.08762777, 3.8769834}, //
+
18588 {1.07742906, 3.87438893}, //
+
18589 {1.06693637, 3.87162781}, //
+
18590 {1.05614996, 3.86870003}, //
+
18591 {1.045416, 3.8656888}, //
+
18592 {1.03505862, 3.86267781}, //
+
18593 {1.02507782, 3.85966659}, //
+
18594 {1.01547348, 3.8566556}, //
+
18595 {1.00624573, 3.85364437}, //
+
18596 {0.997394443, 3.85063338}, //
+
18597 {0.988919735, 3.84762216}, //
+
18598 {0.980821609, 3.84461117}, //
+
18599 {0.973100007, 3.84159994}, //
+
18600 {0.965482712, 3.83916616}, //
+
18601 {0.957697511, 3.83639765}, //
+
18602 {0.949744463, 3.83329439}, //
+
18603 {0.941623449, 3.82985687}, //
+
18604 {0.933334589, 3.82608461}, //
+
18605 {0.924877763, 3.82197785}, //
+
18606 {0.91625309, 3.81753635}, //
+
18607 {0.907460511, 3.81276059}, //
+
18608 {0.898500025, 3.80765009}, //
+
18609 {0.888543189, 3.80238271}, //
+
18610 {0.878250599, 3.79711413}, //
+
18611 {0.867622197, 3.79184437}, //
+
18612 {0.856658041, 3.78657341}, //
+
18613 {0.845358014, 3.78130126}, //
+
18614 {0.833722234, 3.77602768}, //
+
18615 {0.821750641, 3.77075315}, //
+
18616 {0.809443235, 3.76547718}, //
+
18617 {0.796800017, 3.76020002}, //
+
18618 {0.789601207, 3.75718832}, //
+
18619 {0.783071578, 3.75417542}, //
+
18620 {0.77721113, 3.7511611}, //
+
18621 {0.772019744, 3.74814558}, //
+
18622 {0.76749754, 3.74512911}, //
+
18623 {0.763644457, 3.74211121}, //
+
18624 {0.760460496, 3.73909187}, //
+
18625 {0.757945657, 3.73607159}, //
+
18626 {0.756099999, 3.73305011}, //
+
18627 {0.754766643, 3.73008013}, //
+
18628 {0.753766656, 3.72719312}, //
+
18629 {0.753099978, 3.72438884}, //
+
18630 {0.752766669, 3.72166729}, //
+
18631 {0.752766669, 3.71902847}, //
+
18632 {0.753099978, 3.71647215}, //
+
18633 {0.753766656, 3.71399879}, //
+
18634 {0.754766643, 3.71160793}, //
+
18635 {0.756099999, 3.70930004}, //
+
18636 {0.757694423, 3.70708585}, //
+
18637 {0.759455562, 3.70495439}, //
+
18638 {0.761383355, 3.70290565}, //
+
18639 {0.763477802, 3.70093942}, //
+
18640 {0.765738904, 3.69905615}, //
+
18641 {0.768166661, 3.69725561}, //
+
18642 {0.770761132, 3.69553757}, //
+
18643 {0.773522198, 3.69390249}, //
+
18644 {0.776449978, 3.69234991}, //
+
18645 {0.779377759, 3.69093323}, //
+
18646 {0.782138884, 3.68968344}, //
+
18647 {0.784733355, 3.68860006}, //
+
18648 {0.787161112, 3.68768334}, //
+
18649 {0.789422214, 3.68693328}, //
+
18650 {0.791516662, 3.68635011}, //
+
18651 {0.793444455, 3.68593335}, //
+
18652 {0.795205534, 3.68568325}, //
+
18653 {0.796800017, 3.68560004}, //
+
18654 {0.800062358, 3.68578815}, //
+
18655 {0.803827167, 3.68635297}, //
+
18656 {0.808094442, 3.68729448}, //
+
18657 {0.812864184, 3.68861246}, //
+
18658 {0.818136394, 3.6903069}, //
+
18659 {0.82391113, 3.69237781}, //
+
18660 {0.830188274, 3.69482541}, //
+
18661 {0.836967885, 3.69764948}, //
+
18662 {0.844250023, 3.70085001}, //
+
18663 {0.851783931, 3.70431161}, //
+
18664 {0.85931915, 3.70789695}, //
+
18665 {0.866855562, 3.71160555}, //
+
18666 {0.874393225, 3.71543765}, //
+
18667 {0.88193208, 3.71939325}, //
+
18668 {0.889472246, 3.72347212}, //
+
18669 {0.897013605, 3.72767472}, //
+
18670 {0.904556155, 3.73200059}, //
+
18671 {0.912100017, 3.73644996}, //
+
18672 {0.917954922, 3.73938775}, //
+
18673 {0.923475325, 3.74215627}, //
+
18674 {0.928661108, 3.74475551}, //
+
18675 {0.93351233, 3.74718571}, //
+
18676 {0.938028991, 3.74944687}, //
+
18677 {0.942211092, 3.75153899}, //
+
18678 {0.946058631, 3.75346184}, //
+
18679 {0.949571609, 3.75521541}, //
+
18680 {0.952750027, 3.75679994}, //
+
18681 {0.956872225, 3.7575345}, //
+
18682 {0.961705565, 3.75822711}, //
+
18683 {0.96724999, 3.75887775}, //
+
18684 {0.973505557, 3.75948644}, //
+
18685 {0.980472207, 3.76005316}, //
+
18686 {0.988150001, 3.76057768}, //
+
18687 {0.996538877, 3.76106048}, //
+
18688 {1.00563884, 3.76150131}, //
+
18689 {1.01545, 3.76189995}, //
+
18690 {1.02571106, 3.76225686}, //
+
18691 {1.03613889, 3.76257157}, //
+
18692 {1.04673338, 3.76284456}, //
+
18693 {1.0574944, 3.76307535}, //
+
18694 {1.0684222, 3.76326418}, //
+
18695 {1.07951665, 3.76341105}, //
+
18696 {1.09077775, 3.76351595}, //
+
18697 {1.10220551, 3.76357913}, //
+
18698 {1.11380005, 3.76360011}, //
+
18699 {1.18984938, 3.76360011}, //
+
18700 {1.19690001, 3.76360011}, //
+
18701 {1.2159512, 3.76360011}, //
+
18702 {1.21834195, 3.76360011}, //
+
18703 {1.22064996, 3.76360011}, //
+
18704 {1.22576857, 3.76343203}, //
+
18705 {1.2321018, 3.76292849}, //
+
18706 {1.23965001, 3.76208878}, //
+
18707 {1.24841297, 3.76091361}, //
+
18708 {1.25839078, 3.75940251}, //
+
18709 {1.26958334, 3.75755548}, //
+
18710 {1.28199077, 3.75537276}, //
+
18711 {1.29561293, 3.75285435}, //
+
18712 {1.31044996, 3.75}, //
+
18713 {1.3260932, 3.74686289}, //
+
18714 {1.34211171, 3.74347401}, //
+
18715 {1.35850561, 3.73983335}, //
+
18716 {1.37527466, 3.73594069}, //
+
18717 {1.3924191, 3.73179626}, //
+
18718 {1.40993893, 3.72740006}, //
+
18719 {1.42783391, 3.72275186}, //
+
18720 {1.44610429, 3.71785188}, //
+
18721 {1.46475005, 3.71269989}, //
+
18722 {1.48337471, 3.70739126}, //
+
18723 {1.50158215, 3.70199871}, //
+
18724 {1.51937222, 3.69652224}, //
+
18725 {1.53674507, 3.69096184}, //
+
18726 {1.55370057, 3.68531728}, //
+
18727 {1.57023895, 3.67958879}, //
+
18728 {1.58635986, 3.67377663}, //
+
18729 {1.60206354, 3.6678803}, //
+
18730 {1.61734998, 3.66190004}, //
+
18731 {1.65899694, 3.64477587}, //
+
18732 {1.69804871, 3.62807035}, //
+
18733 {1.73450553, 3.61178327}, //
+
18734 {1.76836729, 3.59591484}, //
+
18735 {1.79963398, 3.58046484}, //
+
18736 {1.8283056, 3.56543326}, //
+
18737 {1.85438216, 3.55082035}, //
+
18738 {1.87786353, 3.53662586}, //
+
18739 {1.89874995, 3.52285004}, //
+
18740 {1.91457224, 3.50957894}, //
+
18741 {1.93039441, 3.49538827}, //
+
18742 {1.9462167, 3.48027778}, //
+
18743 {1.96203887, 3.46424747}, //
+
18744 {1.97786117, 3.44729757}, //
+
18745 {1.99368334, 3.42942786}, //
+
18746 {2.00950551, 3.41063833}, //
+
18747 {2.02532768, 3.39092898}, //
+
18748 {2.04115009, 3.37030005}, //
+
18749 {2.04646921, 3.3635118}, //
+
18750 {2.05187106, 3.35672474}, //
+
18751 {2.05735564, 3.34993887}, //
+
18752 {2.06292295, 3.34315443}, //
+
18753 {2.06857276, 3.33637094}, //
+
18754 {2.07430553, 3.32958889}, //
+
18755 {2.08012104, 3.32280803}, //
+
18756 {2.08601904, 3.31602836}, //
+
18757 {2.09200001, 3.30925012}, //
+
18758 {2.0981586, 3.29978704}, //
+
18759 {2.104568, 3.28948712}, //
+
18760 {2.11122775, 3.27835011}, //
+
18761 {2.11813831, 3.26637602}, //
+
18762 {2.12529945, 3.25356483}, //
+
18763 {2.13271117, 3.23991656}, //
+
18764 {2.14037347, 3.22543144}, //
+
18765 {2.14828634, 3.21010923}, //
+
18766 {2.15645003, 3.19394994}, //
+
18767 {2.16463399, 3.17742419}, //
+
18768 {2.17260814, 3.16097975}, //
+
18769 {2.18037224, 3.1446166}, //
+
18770 {2.18792653, 3.12833524}, //
+
18771 {2.19527102, 3.11213517}, //
+
18772 {2.20240545, 3.09601665}, //
+
18773 {2.20933032, 3.07997966}, //
+
18774 {2.21604514, 3.06402397}, //
+
18775 {2.22254992, 3.04815006}, //
+
18776 {2.22868824, 3.03274632}, //
+
18777 {2.23428082, 3.01817966}, //
+
18778 {2.23932767, 3.00445008}, //
+
18779 {2.24382901, 2.99155736}, //
+
18780 {2.24778461, 2.97950196}, //
+
18781 {2.25119448, 2.96828341}, //
+
18782 {2.2540586, 2.95790195}, //
+
18783 {2.25637722, 2.94835734}, //
+
18784 {2.2581501, 2.93965006}, //
+
18785 {2.26005793, 2.92979765}, //
+
18786 {2.26275992, 2.91981792}, //
+
18787 {2.26625562, 2.90971112}, //
+
18788 {2.27054501, 2.89947724}, //
+
18789 {2.27562833, 2.88911605}, //
+
18790 {2.28150558, 2.87862778}, //
+
18791 {2.28817654, 2.86801243}, //
+
18792 {2.29564142, 2.85726976}, //
+
18793 {2.3039, 2.84640002}, //
+
18794 {2.31250429, 2.83562398}, //
+
18795 {2.32098389, 2.82514071}, //
+
18796 {2.32933879, 2.81494999}, //
+
18797 {2.33756924, 2.8050518}, //
+
18798 {2.34567475, 2.7954464}, //
+
18799 {2.35365558, 2.78613329}, //
+
18800 {2.36151171, 2.77711296}, //
+
18801 {2.36924314, 2.76838517}, //
+
18802 {2.37684989, 2.75994992}, //
+
18803 {2.38230562, 2.75455689}, //
+
18804 {2.38813877, 2.74891043}, //
+
18805 {2.39435005, 2.743011}, //
+
18806 {2.40093899, 2.73685861}, //
+
18807 {2.40790558, 2.73045301}, //
+
18808 {2.41525006, 2.72379446}, //
+
18809 {2.4229722, 2.71688271}, //
+
18810 {2.43107224, 2.70971799}, //
+
18811 {2.43954992, 2.70230007}, //
+
18812 {2.44815373, 2.69487095}, //
+
18813 {2.45663142, 2.68765068}, //
+
18814 {2.46498322, 2.68063879}, //
+
18815 {2.47320914, 2.67383575}, //
+
18816 {2.48130918, 2.66724133}, //
+
18817 {2.48928332, 2.66085553}, //
+
18818 {2.49713159, 2.65467834}, //
+
18819 {2.50485373, 2.64870977}, //
+
18820 {2.51244998, 2.64295006}, //
+
18821 {2.51964879, 2.63761902}, //
+
18822 {2.52617836, 2.6329155}, //
+
18823 {2.53203893, 2.62883878}, //
+
18824 {2.53723025, 2.62538958}, //
+
18825 {2.54175258, 2.62256718}, //
+
18826 {2.54560566, 2.6203723}, //
+
18827 {2.5487895, 2.61880422}, //
+
18828 {2.55130434, 2.61786366}, //
+
18829 {2.55314994, 2.6175499}, //
+
18830 {2.55398893, 2.61702466}, //
+
18831 {2.55499434, 2.61695981}, //
+
18832 {2.55616665, 2.61735559}, //
+
18833 {2.55750561, 2.61821175}, //
+
18834 {2.55901122, 2.61952829}, //
+
18835 {2.56068325, 2.62130547}, //
+
18836 {2.56252217, 2.62354326}, //
+
18837 {2.56452775, 2.62624145}, //
+
18838 {2.56669998, 2.62940001}, //
+
18839 {2.56892419, 2.63282037}, //
+
18840 {2.57106304, 2.63628149}, //
+
18841 {2.57311678, 2.63978338}, //
+
18842 {2.57508516, 2.64332604}, //
+
18843 {2.57696843, 2.64690924}, //
+
18844 {2.57876658, 2.65053344}, //
+
18845 {2.58047962, 2.65419817}, //
+
18846 {2.58210731, 2.65790367}, //
+
18847 {2.58365011, 2.66164994}, //
+
18848 {2.58507705, 2.66533279}, //
+
18849 {2.58633637, 2.66884756}, //
+
18850 {2.58742785, 2.67219448}, //
+
18851 {2.58835125, 2.67537355}, //
+
18852 {2.5891068, 2.67838454}, //
+
18853 {2.5896945, 2.68122768}, //
+
18854 {2.59011412, 2.68390298}, //
+
18855 {2.59036613, 2.68641043}, //
+
18856 {2.59045005, 2.68875003}, //
+
18857 {2.59161544, 2.69264197}, //
+
18858 {2.59211183, 2.6967845}, //
+
18859 {2.59193897, 2.70117784}, //
+
18860 {2.59109688, 2.70582151}, //
+
18861 {2.58958578, 2.71071601}, //
+
18862 {2.58740544, 2.71586108}, //
+
18863 {2.5845561, 2.72125673}, //
+
18864 {2.58103776, 2.7269032}, //
+
18865 {2.57684994, 2.73280001}, //
+
18866 {2.57225442, 2.7389586}, //
+
18867 {2.56748962, 2.745368}, //
+
18868 {2.56255555, 2.75202775}, //
+
18869 {2.55745244, 2.75893831}, //
+
18870 {2.55218029, 2.76609945}, //
+
18871 {2.54673886, 2.77351117}, //
+
18872 {2.5411284, 2.78117347}, //
+
18873 {2.53534865, 2.78908634}, //
+
18874 {2.52940011, 2.79725003}, //
+
18875 {2.52864504, 2.79800558}, //
+
18876 {2.5278914, 2.79876113}, //
+
18877 {2.52713895, 2.79951668}, //
+
18878 {2.52638769, 2.80027223}, //
+
18879 {2.52563763, 2.80102777}, //
+
18880 {2.52488899, 2.80178332}, //
+
18881 {2.52414131, 2.80253887}, //
+
18882 {2.52339506, 2.80329442}, //
+
18883 {2.52265, 2.80404997}, //
+
18884 {2.5181067, 2.80964136}, //
+
18885 {2.51352167, 2.81585979}, //
+
18886 {2.50889444, 2.82270551}, //
+
18887 {2.50422525, 2.8301785}, //
+
18888 {2.4995141, 2.83827829}, //
+
18889 {2.49476123, 2.84700561}, //
+
18890 {2.48996615, 2.85635996}, //
+
18891 {2.48512912, 2.86634135}, //
+
18892 {2.48024988, 2.87695003}, //
+
18893 {2.47532892, 2.88793516}, //
+
18894 {2.470366, 2.89904618}, //
+
18895 {2.46536112, 2.91028333}, //
+
18896 {2.46031427, 2.92164636}, //
+
18897 {2.45522523, 2.93313527}, //
+
18898 {2.45009446, 2.94475007}, //
+
18899 {2.44492149, 2.95649076}, //
+
18900 {2.4397068, 2.96835732}, //
+
18901 {2.43444991, 2.98035002}, //
+
18902 {2.42779756, 2.99508214}, //
+
18903 {2.42139578, 3.00914502}, //
+
18904 {2.41524434, 3.0225389}, //
+
18905 {2.40934372, 3.03526354}, //
+
18906 {2.40369391, 3.04731917}, //
+
18907 {2.39829445, 3.05870557}, //
+
18908 {2.39314556, 3.06942272}, //
+
18909 {2.38824749, 3.07947087}, //
+
18910 {2.3836, 3.08885002}, //
+
18911 {2.37347603, 3.10463095}, //
+
18912 {2.36268139, 3.1203289}, //
+
18913 {2.35121655, 3.13594437}, //
+
18914 {2.33908153, 3.1514771}, //
+
18915 {2.32627583, 3.1669271}, //
+
18916 {2.31279993, 3.18229437}, //
+
18917 {2.2986536, 3.19757891}, //
+
18918 {2.28383708, 3.21278095}, //
+
18919 {2.26834989, 3.22790003}, //
+
18920 {2.26101542, 3.23455238}, //
+
18921 {2.25410056, 3.2409544}, //
+
18922 {2.24760556, 3.2471056}, //
+
18923 {2.24153018, 3.25300622}, //
+
18924 {2.23587465, 3.25865626}, //
+
18925 {2.23063898, 3.26405549}, //
+
18926 {2.22582293, 3.26920438}, //
+
18927 {2.22142649, 3.27410245}, //
+
18928 {2.2174499, 3.27874994}, //
+
18929 {2.21050501, 3.28824449}, //
+
18930 {2.20322537, 3.29866099}, //
+
18931 {2.195611, 3.30999994}, //
+
18932 {2.18766236, 3.3222611}, //
+
18933 {2.17937899, 3.33544445}, //
+
18934 {2.17076111, 3.34955001}, //
+
18935 {2.16180873, 3.36457777}, //
+
18936 {2.15252161, 3.38052773}, //
+
18937 {2.14289999, 3.3973999}, //
+
18938 {2.13314199, 3.41577339}, //
+
18939 {2.12346792, 3.43322706}, //
+
18940 {2.11387777, 3.44976115}, //
+
18941 {2.10437155, 3.46537542}, //
+
18942 {2.09494948, 3.48006964}, //
+
18943 {2.0856111, 3.49384451}, //
+
18944 {2.07635689, 3.50669932}, //
+
18945 {2.06718636, 3.51863456}, //
+
18946 {2.05809999, 3.52964997}, //
+
18947 {2.05262351, 3.5370574}, //
+
18948 {2.04672718, 3.54421306}, //
+
18949 {2.040411, 3.5511167}, //
+
18950 {2.03367519, 3.55776858}, //
+
18951 {2.02651978, 3.56416845}, //
+
18952 {2.0189445, 3.57031655}, //
+
18953 {2.01094937, 3.57621288}, //
+
18954 {2.00253463, 3.58185744}, //
+
18955 {1.99370003, 3.58724999}, //
+
18956 {1.98473954, 3.59244394}, //
+
18957 {1.9759469, 3.59746981}, //
+
18958 {1.96732223, 3.60232782}, //
+
18959 {1.9588654, 3.60701799}, //
+
18960 {1.95057654, 3.61154008}, //
+
18961 {1.94245553, 3.61589456}, //
+
18962 {1.93450248, 3.62008095}, //
+
18963 {1.92671728, 3.62409949}, //
+
18964 {1.91910005, 3.62794995}, //
+
18965 {1.91394818, 3.63097167}, //
+
18966 {1.9090482, 3.63399196}, //
+
18967 {1.90439999, 3.63701105}, //
+
18968 {1.90000367, 3.64002895}, //
+
18969 {1.89585924, 3.64304566}, //
+
18970 {1.8919667, 3.64606118}, //
+
18971 {1.88832593, 3.64907527}, //
+
18972 {1.88493705, 3.65208817}, //
+
18973 {1.88180006, 3.65510011}, //
+
18974 {1.87079442, 3.66046119}, //
+
18975 {1.85886669, 3.66598892}, //
+
18976 {1.84601665, 3.67168331}, //
+
18977 {1.8322444, 3.67754436}, //
+
18978 {1.81754994, 3.68357229}, //
+
18979 {1.80193329, 3.68976665}, //
+
18980 {1.78539443, 3.69612789}, //
+
18981 {1.76793337, 3.70265555}, //
+
18982 {1.74954998, 3.70935011}, //
+
18983 {1.74201667, 3.71168947}, //
+
18984 {1.73448336, 3.71419692}, //
+
18985 {1.72695005, 3.71687222}, //
+
18986 {1.71941662, 3.71971536}, //
+
18987 {1.71188331, 3.72272658}, //
+
18988 {1.70434999, 3.72590566}, //
+
18989 {1.69681668, 3.72925258}, //
+
18990 {1.68928337, 3.73276734}, //
+
18991 {1.68175006, 3.73644996}, //
+
18992 {1.66893888, 3.74093032}, //
+
18993 {1.65612781, 3.74532652}, //
+
18994 {1.64331663, 3.7496388}, //
+
18995 {1.63050556, 3.75386739}, //
+
18996 {1.6176945, 3.75801182}, //
+
18997 {1.60488331, 3.76207232}, //
+
18998 {1.59207225, 3.76604867}, //
+
18999 {1.57926106, 3.76994133}, //
+
19000 {1.56645, 3.77375007}, //
+
19001 {1.550879, 3.77755857}, //
+
19002 {1.53581047, 3.78145123}, //
+
19003 {1.52124441, 3.78542781}, //
+
19004 {1.50718081, 3.78948832}, //
+
19005 {1.4936198, 3.79363275}, //
+
19006 {1.48056114, 3.7978611}, //
+
19007 {1.46800494, 3.80217338}, //
+
19008 {1.45595121, 3.80656981}, //
+
19009 {1.44439995, 3.81104994}, //
+
19010 {1.43431723, 3.81605554}, //
+
19011 {1.42364693, 3.82051659}, //
+
19012 {1.41238892, 3.82443333}, //
+
19013 {1.40054321, 3.82780552}, //
+
19014 {1.38810992, 3.8306334}, //
+
19015 {1.37508893, 3.83291674}, //
+
19016 {1.36148024, 3.83465552}, //
+
19017 {1.34728396, 3.83585}, //
+
19018 {1.33249998, 3.83649993}, //
+
19019 {1.31760061, 3.83681488}, //
+
19020 {1.30303586, 3.83700371}, //
+
19021 {1.2888056, 3.83706665}, //
+
19022 {1.27490985, 3.83700371}, //
+
19023 {1.26134872, 3.83681488}, //
+
19024 {1.24812222, 3.83649993}, //
+
19025 {1.23523021, 3.83605933}, //
+
19026 {1.22267282, 3.83549261}, //
+
19027 {1.21045005, 3.8348}, //
+
19028 {1.20969439, 3.8348}, //
+
19029 {1.20893884, 3.8348}, //
+
19030 {1.19611669, 3.8348}, //
+
19031 {1.18858337, 3.8348}, //
+
19032 {1.13584995, 3.8348}, //
+
19033 {1.12848389, 3.83477902}, //
+
19034 {1.12145245, 3.83471608}, //
+
19035 {1.11475551, 3.83461118}, //
+
19036 {1.10839319, 3.83446431}, //
+
19037 {1.10236537, 3.83427525}, //
+
19038 {1.09667218, 3.83404446}, //
+
19039 {1.0913136, 3.83377171}, //
+
19040 {1.08628953, 3.83345675}, //
+
19041 {1.08159995, 3.83310008}, //
+
19042 {1.07732904, 3.83274317}, //
+
19043 {1.0702945, 3.83215547}, //
+
19044 {1.06753087, 3.83192468}, //
+
19045 {1.06351113, 3.83158898}, //
+
19046 {1.06225491, 3.83148384}, //
+
19047 {1.06124997, 3.83139992}, //
+
19048 {1.0614593, 3.83150434}, //
+
19049 {1.06878328, 3.83515549}, //
+
19050 {1.07150376, 3.83651161}, //
+
19051 {1.07464254, 3.83807659}, //
+
19052 {1.07819998, 3.83984995}, //
+
19053 {1.08230186, 3.841676}, //
+
19054 {1.08707404, 3.84337592}, //
+
19055 {1.09251666, 3.84494996}, //
+
19056 {1.09862959, 3.84639812}, //
+
19057 {1.10541296, 3.84772038}, //
+
19058 {1.11286664, 3.84891677}, //
+
19059 {1.12099075, 3.84998703}, //
+
19060 {1.12978518, 3.85093141}, //
+
19061 {1.13925004, 3.8517499}, //
+
19062 {1.15704501, 3.85317707}, //
+
19063 {1.17425251, 3.8544364}, //
+
19064 {1.19087219, 3.85552788}, //
+
19065 {1.20690429, 3.85645127}, //
+
19066 {1.22234881, 3.85720682}, //
+
19067 {1.23720551, 3.85779452}, //
+
19068 {1.25147474, 3.85821414}, //
+
19069 {1.26515615, 3.85846615}, //
+
19070 {1.27824998, 3.85855007}, //
+
19071 {1.28533149, 3.85842419}, //
+
19072 {1.29299819, 3.85804629}, //
+
19073 {1.30124998, 3.85741663}, //
+
19074 {1.31008708, 3.8565352}, //
+
19075 {1.31950927, 3.85540175}, //
+
19076 {1.32951665, 3.85401678}, //
+
19077 {1.34010923, 3.85237956}, //
+
19078 {1.35128701, 3.85049081}, //
+
19079 {1.36304998, 3.84835005}, //
+
19080 {1.37568331, 3.84617782}, //
+
19081 {1.38798332, 3.84417224}, //
+
19082 {1.39995003, 3.84233332}, //
+
19083 {1.4115833, 3.84066105}, //
+
19084 {1.42288339, 3.83915567}, //
+
19085 {1.43385005, 3.83781672}, //
+
19086 {1.44448328, 3.83664441}, //
+
19087 {1.45478332, 3.835639}, //
+
19088 {1.46475005, 3.8348}, //
+
19089 {1.47693086, 3.83396101}, //
+
19090 {1.48936236, 3.8329556}, //
+
19091 {1.50204444, 3.83178329}, //
+
19092 {1.51497722, 3.83044434}, //
+
19093 {1.52816045, 3.82893896}, //
+
19094 {1.54159439, 3.82726669}, //
+
19095 {1.55527902, 3.82542777}, //
+
19096 {1.56921422, 3.82342219}, //
+
19097 {1.58340001, 3.82124996}, //
+
19098 {1.59450126, 3.81906724}, //
+
19099 {1.60518277, 3.81705236}, //
+
19100 {1.61544442, 3.81520557}, //
+
19101 {1.62528646, 3.81352663}, //
+
19102 {1.63470864, 3.81201553}, //
+
19103 {1.64371109, 3.81067228}, //
+
19104 {1.6522938, 3.80949688}, //
+
19105 {1.66045678, 3.80848956}, //
+
19106 {1.66820002, 3.80765009}, //
+
19107 {1.6768235, 3.80667472}, //
+
19108 {1.6861161, 3.80523777}, //
+
19109 {1.69607782, 3.803339}, //
+
19110 {1.70670867, 3.80097842}, //
+
19111 {1.71800864, 3.79815626}, //
+
19112 {1.72997773, 3.79487228}, //
+
19113 {1.74261606, 3.79112649}, //
+
19114 {1.75592351, 3.78691912}, //
+
19115 {1.76989996, 3.78224993}, //
+
19116 {1.78388703, 3.77737093}, //
+
19117 {1.79720366, 3.77253389}, //
+
19118 {1.80984998, 3.76773882}, //
+
19119 {1.82182598, 3.76298571}, //
+
19120 {1.83313143, 3.75827479}, //
+
19121 {1.84376669, 3.7536056}, //
+
19122 {1.85373151, 3.74897838}, //
+
19123 {1.8630259, 3.74439311}, //
+
19124 {1.87164998, 3.73985004}, //
+
19125 {1.87788212, 3.73541164}, //
+
19126 {1.884534, 3.73114133}, //
+
19127 {1.8916055, 3.72703886}, //
+
19128 {1.89909697, 3.72310424}, //
+
19129 {1.90700805, 3.7193377}, //
+
19130 {1.91533887, 3.71573877}, //
+
19131 {1.92408955, 3.71230793}, //
+
19132 {1.93325984, 3.70904517}, //
+
19133 {1.94284999, 3.70595002}, //
+
19134 {1.95979631, 3.70046353}, //
+
19135 {1.97599077, 3.69455981}, //
+
19136 {1.99143338, 3.68823886}, //
+
19137 {2.00612402, 3.68150067}, //
+
19138 {2.02006292, 3.67434502}, //
+
19139 {2.03325009, 3.66677213}, //
+
19140 {2.04568529, 3.65878201}, //
+
19141 {2.05736852, 3.65037465}, //
+
19142 {2.06830001, 3.64155006}, //
+
19143 {2.07606363, 3.63419628}, //
+
19144 {2.08428764, 3.62571287}, //
+
19145 {2.09297228, 3.61610007}, //
+
19146 {2.1021173, 3.60535741}, //
+
19147 {2.11172295, 3.59348512}, //
+
19148 {2.12178898, 3.58048344}, //
+
19149 {2.1323154, 3.56635189}, //
+
19150 {2.14330244, 3.55109072}, //
+
19151 {2.15475011, 3.53469992}, //
+
19152 {2.16636491, 3.51790118}, //
+
19153 {2.17785382, 3.5013938}, //
+
19154 {2.18921661, 3.48517776}, //
+
19155 {2.20045376, 3.46925306}, //
+
19156 {2.21156478, 3.45361972}, //
+
19157 {2.22254992, 3.43827772}, //
+
19158 {2.23340917, 3.42322707}, //
+
19159 {2.24414253, 3.40846801}, //
+
19160 {2.25475001, 3.39400005}, //
+
19161 {2.25918818, 3.38667583}, //
+
19162 {2.26345873, 3.37977028}, //
+
19163 {2.2675612, 3.37328339}, //
+
19164 {2.27149558, 3.36721492}, //
+
19165 {2.27526236, 3.36156487}, //
+
19166 {2.27886105, 3.35633326}, //
+
19167 {2.28229189, 3.3515203}, //
+
19168 {2.28555489, 3.34712601}, //
+
19169 {2.28865004, 3.3431499}, //
+
19170 {2.2935493, 3.33620429}, //
+
19171 {2.29920316, 3.32892275}, //
+
19172 {2.30561113, 3.32130551}, //
+
19173 {2.31277347, 3.31335258}, //
+
19174 {2.32069016, 3.30506349}, //
+
19175 {2.3293612, 3.29643893}, //
+
19176 {2.33878636, 3.28747845}, //
+
19177 {2.34896612, 3.27818203}, //
+
19178 {2.3599, 3.26854992}, //
+
19179 {2.37555432, 3.25398755}, //
+
19180 {2.39087296, 3.23892283}, //
+
19181 {2.40585566, 3.22335553}, //
+
19182 {2.42050242, 3.20728588}, //
+
19183 {2.4348135, 3.19071364}, //
+
19184 {2.44878888, 3.17363882}, //
+
19185 {2.46242833, 3.15606165}, //
+
19186 {2.47573209, 3.13798213}, //
+
19187 {2.48869991, 3.11940002}, //
+
19188 {2.4962852, 3.10777521}, //
+
19189 {2.50395179, 3.09552336}, //
+
19190 {2.51169991, 3.08264446}, //
+
19191 {2.51952958, 3.06913829}, //
+
19192 {2.52744079, 3.05500484}, //
+
19193 {2.53543329, 3.04024434}, //
+
19194 {2.54350734, 3.02485681}, //
+
19195 {2.55166292, 3.00884199}, //
+
19196 {2.55990005, 2.9921999}, //
+
19197 {2.568084, 2.97542214}, //
+
19198 {2.57605791, 2.9589777}, //
+
19199 {2.58382225, 2.94286656}, //
+
19200 {2.59137654, 2.92708898}, //
+
19201 {2.59872103, 2.91164446}, //
+
19202 {2.60585546, 2.89653325}, //
+
19203 {2.61278033, 2.88175559}, //
+
19204 {2.61949515, 2.867311}, //
+
19205 {2.62599993, 2.85319996}, //
+
19206 {2.63213897, 2.83983159}, //
+
19207 {2.63773322, 2.82759261}, //
+
19208 {2.6427834, 2.81648326}, //
+
19209 {2.6472888, 2.80650377}, //
+
19210 {2.65124989, 2.79765368}, //
+
19211 {2.65466666, 2.78993344}, //
+
19212 {2.65753889, 2.7833426}, //
+
19213 {2.65986657, 2.77788138}, //
+
19214 {2.66164994, 2.77355003}, //
+
19215 {2.66230059, 2.77052832}, //
+
19216 {2.66274142, 2.76750803}, //
+
19217 {2.66297221, 2.76448894}, //
+
19218 {2.66299319, 2.76147103}, //
+
19219 {2.66280437, 2.75845432}, //
+
19220 {2.66240549, 2.7554388}, //
+
19221 {2.66179681, 2.75242472}, //
+
19222 {2.66097832, 2.74941182}, //
+
19223 {2.65995002, 2.74640012}, //
+
19224 {2.65875435, 2.74338889}, //
+
19225 {2.65743399, 2.74037766}, //
+
19226 {2.65598893, 2.73736668}, //
+
19227 {2.65441918, 2.73435545}, //
+
19228 {2.65272474, 2.73134446}, //
+
19229 {2.65090561, 2.72833323}, //
+
19230 {2.64896178, 2.72532225}, //
+
19231 {2.64689326, 2.72231102}, //
+
19232 {2.64470005, 2.71930003}, //
+
19233 {2.64177227, 2.71330857}, //
+
19234 {2.63901114, 2.70740128}, //
+
19235 {2.63641667, 2.70157766}, //
+
19236 {2.63398886, 2.69583821}, //
+
19237 {2.6317277, 2.69018269}, //
+
19238 {2.62963343, 2.68461108}, //
+
19239 {2.62770557, 2.6791234}, //
+
19240 {2.62594438, 2.67371964}, //
+
19241 {2.62435007, 2.66840005}, //
+
19242 {2.62455916, 2.65911484}, //
+
19243 {2.62518692, 2.64932585}, //
+
19244 {2.62623334, 2.63903332}, //
+
19245 {2.62769818, 2.62823701}, //
+
19246 {2.62958145, 2.61693692}, //
+
19247 {2.63188338, 2.6051333}, //
+
19248 {2.63460374, 2.59282589}, //
+
19249 {2.63774252, 2.58001471}, //
+
19250 {2.64129996, 2.56669998}, //
+
19251 {2.642097, 2.56138086}, //
+
19252 {2.64297652, 2.55597901}, //
+
19253 {2.64393878, 2.55049443}, //
+
19254 {2.64498401, 2.54492712}, //
+
19255 {2.64611173, 2.53927708}, //
+
19256 {2.64732218, 2.53354454}, //
+
19257 {2.64861536, 2.52772903}, //
+
19258 {2.64999127, 2.5218308}, //
+
19259 {2.65144992, 2.51585007}, //
+
19260 {2.65270996, 2.5025785}, //
+
19261 {2.65346718, 2.48838592}, //
+
19262 {2.65372229, 2.47327232}, //
+
19263 {2.65347481, 2.45723772}, //
+
19264 {2.65272474, 2.44028211}, //
+
19265 {2.65147233, 2.42240548}, //
+
19266 {2.64971733, 2.40360808}, //
+
19267 {2.64745998, 2.38388944}, //
+
19268 {2.64470005, 2.36325002}, //
+
19269 {2.6439445, 2.3542161}, //
+
19270 {2.64318895, 2.34518075}, //
+
19271 {2.6424334, 2.33614445}, //
+
19272 {2.64167786, 2.32710671}, //
+
19273 {2.64092231, 2.31806779}, //
+
19274 {2.64016676, 2.30902767}, //
+
19275 {2.63941121, 2.29998636}, //
+
19276 {2.63865566, 2.29094386}, //
+
19277 {2.63790011, 2.28189993}, //
+
19278 {2.6369772, 2.27078819}, //
+
19279 {2.63571978, 2.26005316}, //
+
19280 {2.63412786, 2.24969435}, //
+
19281 {2.63220119, 2.23971224}, //
+
19282 {2.62994003, 2.23010683}, //
+
19283 {2.62734437, 2.22087789}, //
+
19284 {2.62441421, 2.2120254}, //
+
19285 {2.6211493, 2.20354939}, //
+
19286 {2.6175499, 2.19545007}, //
+
19287 {2.61369991, 2.18768525}, //
+
19288 {2.60968328, 2.18021297}, //
+
19289 {2.60549998, 2.17303324}, //
+
19290 {2.60115004, 2.16614628}, //
+
19291 {2.59663343, 2.15955186}, //
+
19292 {2.59194994, 2.15324998}, //
+
19293 {2.58710003, 2.14724064}, //
+
19294 {2.58208323, 2.14152408}, //
+
19295 {2.57690001, 2.13610005}, //
+
19296 {2.57392049, 2.1308229}, //
+
19297 {2.57102585, 2.12554693}, //
+
19298 {2.56821656, 2.12027216}, //
+
19299 {2.56549263, 2.11499882}, //
+
19300 {2.56285381, 2.10972643}, //
+
19301 {2.56030011, 2.10445547}, //
+
19302 {2.55783153, 2.09918571}, //
+
19303 {2.55544806, 2.09391737}, //
+
19304 {2.55314994, 2.08864999}, //
+
19305 {2.55140853, 2.08449626}, //
+
19306 {2.54920673, 2.0795908}, //
+
19307 {2.54654455, 2.07393336}, //
+
19308 {2.54342151, 2.06752396}, //
+
19309 {2.53983831, 2.06036305}, //
+
19310 {2.5357945, 2.05244994}, //
+
19311 {2.53129005, 2.0437851}, //
+
19312 {2.52632523, 2.03436852}, //
+
19313 {2.52090001, 2.02419996}, //
+
19314 {2.51523399, 2.01359248}, //
+
19315 {2.50952458, 2.00285935}, //
+
19316 {2.50377226, 1.99199998}, //
+
19317 {2.49797654, 1.98101485}, //
+
19318 {2.49213767, 1.96990371}, //
+
19319 {2.48625565, 1.95866668}, //
+
19320 {2.48033023, 1.94730365}, //
+
19321 {2.47436166, 1.93581486}, //
+
19322 {2.46834993, 1.92420006}, //
+
19323 {2.4623692, 1.91275179}, //
+
19324 {2.45647097, 1.90176296}, //
+
19325 {2.45065546, 1.89123333}, //
+
19326 {2.44492292, 1.881163}, //
+
19327 {2.43927288, 1.87155187}, //
+
19328 {2.43370557, 1.86240005}, //
+
19329 {2.42822099, 1.85370743}, //
+
19330 {2.42281914, 1.84547412}, //
+
19331 {2.41750002, 1.83770001}, //
+
19332 {2.41465616, 1.83125675}, //
+
19333 {2.41214681, 1.82548273}, //
+
19334 {2.40997219, 1.82037783}, //
+
19335 {2.40813208, 1.81594193}, //
+
19336 {2.40662646, 1.81217527}, //
+
19337 {2.40545559, 1.80907774}, //
+
19338 {2.4049623, 1.80764568}, //
+
19339 {2.41167212, 1.80551112}, //
+
19340 {2.42434144, 1.80143273}, //
+
19341 {2.43646717, 1.79747903}, //
+
19342 {2.44805002, 1.79365003}, //
+
19343 {2.45939207, 1.79080617}, //
+
19344 {2.4708178, 1.78829694}, //
+
19345 {2.4823277, 1.7861222}, //
+
19346 {2.49392152, 1.78428209}, //
+
19347 {2.5055995, 1.78277659}, //
+
19348 {2.51736116, 1.7816056}, //
+
19349 {2.52920675, 1.78076911}, //
+
19350 {2.5411365, 1.78026724}, //
+
19351 {2.55314994, 1.78009999}, //
+
19352 {2.56139684, 1.78071976}, //
+
19353 {2.56955981, 1.78109014}, //
+
19354 {2.57763886, 1.78121114}, //
+
19355 {2.58563399, 1.78108275}, //
+
19356 {2.59354496, 1.78070498}, //
+
19357 {2.60137224, 1.78007782}, //
+
19358 {2.60911536, 1.77920127}, //
+
19359 {2.6167748, 1.77807534}, //
+
19360 {2.62435007, 1.77670002}, //
+
19361 {2.62512589, 1.77596545}, //
+
19362 {2.62594271, 1.77527285}, //
+
19363 {2.62680006, 1.7746222}, //
+
19364 {2.62769818, 1.77401364}, //
+
19365 {2.62863708, 1.77344692}, //
+
19366 {2.62961674, 1.77292228}, //
+
19367 {2.63063693, 1.77243948}, //
+
19368 {2.63169813, 1.77199876}, //
+
19369 {2.6328001, 1.77160001}, //
+
19370 {2.63391232, 1.77124321}, //
+
19371 {2.63498282, 1.77092838}, //
+
19372 {2.63601112, 1.77065551}, //
+
19373 {2.63607311, 1.77064097}, //
+
19374 {2.63619995, 1.76989996}, //
+
19375 {2.63676596, 1.76848328}, //
+
19376 {2.63770866, 1.76723337}, //
+
19377 {2.63902783, 1.76615}, //
+
19378 {2.64072347, 1.76523328}, //
+
19379 {2.64279556, 1.76448333}, //
+
19380 {2.64385223, 1.76423168}, //
+
19381 {2.65327048, 1.76365924}, //
+
19382 {2.65531373, 1.76353502}, //
+
19383 {2.65537477, 1.76347589}, //
+
19384 {2.65560555, 1.76333332}, //
+
19385 {2.65587831, 1.76323152}, //
+
19386 {2.65619326, 1.76317036}, //
+
19387 {2.65654993, 1.76314998}, //
+
19388 {2.65485001, 1.76314998}, //
+
19389 });
+
19390 polys.push_back({
+
19391 {3.23804998, 3.15665007}, //
+
19392 {3.23691678, 3.15740561}, //
+
19393 {3.23603511, 3.15799332}, //
+
19394 {3.23490191, 3.15874887}, //
+
19395 {3.23351669, 3.15967226}, //
+
19396 {3.23187971, 3.1607635}, //
+
19397 {3.22999072, 3.16202283}, //
+
19398 {3.22784996, 3.16345}, //
+
19399 {3.2255106, 3.16506553}, //
+
19400 {3.22300315, 3.16688943}, //
+
19401 {3.22032785, 3.16892219}, //
+
19402 {3.21748447, 3.17116356}, //
+
19403 {3.21447349, 3.17361355}, //
+
19404 {3.21129441, 3.17627215}, //
+
19405 {3.20794749, 3.17913961}, //
+
19406 {3.20443273, 3.18221545}, //
+
19407 {3.20075011, 3.18549991}, //
+
19408 {3.1970253, 3.1891191}, //
+
19409 {3.19338465, 3.19319868}, //
+
19410 {3.18982768, 3.19773889}, //
+
19411 {3.18635488, 3.20273948}, //
+
19412 {3.18296599, 3.20820069}, //
+
19413 {3.17966104, 3.2141223}, //
+
19414 {3.17644024, 3.22050428}, //
+
19415 {3.17330313, 3.2273469}, //
+
19416 {3.17024994, 3.2346499}, //
+
19417 {3.16785812, 3.2407248}, //
+
19418 {3.16521549, 3.2468822}, //
+
19419 {3.16232228, 3.25312233}, //
+
19420 {3.1591785, 3.25944495}, //
+
19421 {3.15578389, 3.26585054}, //
+
19422 {3.15213895, 3.27233887}, //
+
19423 {3.14824319, 3.27890992}, //
+
19424 {3.14409685, 3.28556347}, //
+
19425 {3.13969994, 3.29229999}, //
+
19426 {3.13445377, 3.30073524}, //
+
19427 {3.12924814, 3.30946302}, //
+
19428 {3.12408328, 3.31848335}, //
+
19429 {3.11895919, 3.32779622}, //
+
19430 {3.11387587, 3.33740187}, //
+
19431 {3.10883331, 3.34730005}, //
+
19432 {3.10383153, 3.35749078}, //
+
19433 {3.09887028, 3.36797404}, //
+
19434 {3.09395003, 3.37875009}, //
+
19435 {3.08923888, 3.38994503}, //
+
19436 {3.08490562, 3.40168571}, //
+
19437 {3.08095002, 3.41397214}, //
+
19438 {3.07737231, 3.4268043}, //
+
19439 {3.07417226, 3.44018221}, //
+
19440 {3.0713501, 3.45410562}, //
+
19441 {3.06890559, 3.46857476}, //
+
19442 {3.06683898, 3.48358941}, //
+
19443 {3.06515002, 3.49915004}, //
+
19444 {3.0606215, 3.54364085}, //
+
19445 {3.0530808, 3.58520174}, //
+
19446 {3.04252768, 3.62383342}, //
+
19447 {3.02896237, 3.65953517}, //
+
19448 {3.01238465, 3.69230747}, //
+
19449 {2.99279451, 3.72215009}, //
+
19450 {2.97019196, 3.74906301}, //
+
19451 {2.94457722, 3.77304626}, //
+
19452 {2.91595006, 3.79410005}, //
+
19453 {2.90667534, 3.80000734}, //
+
19454 {2.89694023, 3.80566287}, //
+
19455 {2.8867445, 3.81106663}, //
+
19456 {2.87608838, 3.81621861}, //
+
19457 {2.86497164, 3.82111859}, //
+
19458 {2.85339451, 3.82576656}, //
+
19459 {2.84135675, 3.830163}, //
+
19460 {2.82885861, 3.83430743}, //
+
19461 {2.81590009, 3.83820009}, //
+
19462 {2.80286789, 3.84186172}, //
+
19463 {2.79012728, 3.84531355}, //
+
19464 {2.77767777, 3.84855556}, //
+
19465 {2.76551986, 3.85158777}, //
+
19466 {2.75365305, 3.85440993}, //
+
19467 {2.74207783, 3.85702229}, //
+
19468 {2.73079371, 3.85942459}, //
+
19469 {2.71980119, 3.86161733}, //
+
19470 {2.70910001, 3.86360002}, //
+
19471 {2.69901538, 3.86538386}, //
+
19472 {2.68985057, 3.86695814}, //
+
19473 {2.68160558, 3.86832213}, //
+
19474 {2.67428017, 3.86947656}, //
+
19475 {2.66787457, 3.87042093}, //
+
19476 {2.6623888, 3.8711555}, //
+
19477 {2.65782285, 3.87168026}, //
+
19478 {2.65417647, 3.87199497}, //
+
19479 {2.65144992, 3.87210011}, //
+
19480 {2.64990735, 3.87205791}, //
+
19481 {2.64827967, 3.87193203}, //
+
19482 {2.64656663, 3.87172222}, //
+
19483 {2.64476848, 3.87142849}, //
+
19484 {2.64288521, 3.8710506}, //
+
19485 {2.64091659, 3.87058878}, //
+
19486 {2.63886285, 3.87004328}, //
+
19487 {2.636724, 3.86941361}, //
+
19488 {2.63450003, 3.86870003}, //
+
19489 {2.62985253, 3.86870003}, //
+
19490 {2.61980557, 3.86870003}, //
+
19491 {2.60285544, 3.86870003}, //
+
19492 {2.59670424, 3.86870003}, //
+
19493 {2.59030247, 3.86870003}, //
+
19494 {2.58365011, 3.86870003}, //
+
19495 {2.57687211, 3.86882591}, //
+
19496 {2.57009435, 3.86920381}, //
+
19497 {2.56331658, 3.86983323}, //
+
19498 {2.55653882, 3.8707149}, //
+
19499 {2.54976106, 3.87184811}, //
+
19500 {2.54298329, 3.87323332}, //
+
19501 {2.53620553, 3.8748703}, //
+
19502 {2.52942777, 3.87675929}, //
+
19503 {2.52265, 3.87890005}, //
+
19504 {2.51390052, 3.88128138}, //
+
19505 {2.50423026, 3.88391471}, //
+
19506 {2.49363899, 3.88680005}, //
+
19507 {2.48212647, 3.88993692}, //
+
19508 {2.46969318, 3.89332604}, //
+
19509 {2.45633888, 3.8969667}, //
+
19510 {2.44206357, 3.90085936}, //
+
19511 {2.42686725, 3.90500379}, //
+
19512 {2.41074991, 3.90939999}, //
+
19513 {2.39791799, 3.91243219}, //
+
19514 {2.38504386, 3.91550612}, //
+
19515 {2.37212777, 3.91862226}, //
+
19516 {2.35916972, 3.92178035}, //
+
19517 {2.34616971, 3.92498016}, //
+
19518 {2.33312774, 3.92822218}, //
+
19519 {2.3200438, 3.93150616}, //
+
19520 {2.30691791, 3.9348321}, //
+
19521 {2.29375005, 3.9382}, //
+
19522 {2.28095937, 3.94156861}, //
+
19523 {2.26896477, 3.94489622}, //
+
19524 {2.25776672, 3.9481833}, //
+
19525 {2.24736476, 3.95142961}, //
+
19526 {2.23775935, 3.95463514}, //
+
19527 {2.22895002, 3.95779991}, //
+
19528 {2.22093701, 3.96092415}, //
+
19529 {2.21372032, 3.96400738}, //
+
19530 {2.20729995, 3.96705008}, //
+
19531 {2.21516848, 3.96616912}, //
+
19532 {2.22370744, 3.96503758}, //
+
19533 {2.23291659, 3.96365547}, //
+
19534 {2.24279618, 3.96202278}, //
+
19535 {2.2533462, 3.96013951}, //
+
19536 {2.26456666, 3.95800567}, //
+
19537 {2.27645731, 3.955621}, //
+
19538 {2.28901863, 3.95298576}, //
+
19539 {2.30224991, 3.95009995}, //
+
19540 {2.32510114, 3.94629145}, //
+
19541 {2.34845495, 3.94239879}, //
+
19542 {2.37231112, 3.9384222}, //
+
19543 {2.39666986, 3.9343617}, //
+
19544 {2.42153096, 3.93021727}, //
+
19545 {2.44689441, 3.92598891}, //
+
19546 {2.47276044, 3.92167664}, //
+
19547 {2.49912906, 3.9172802}, //
+
19548 {2.52600002, 3.91280007}, //
+
19549 {2.53689003, 3.91120553}, //
+
19550 {2.54844928, 3.90944433}, //
+
19551 {2.56067777, 3.90751672}, //
+
19552 {2.57357526, 3.90542221}, //
+
19553 {2.58714199, 3.90316105}, //
+
19554 {2.60137773, 3.90073323}, //
+
19555 {2.6162827, 3.898139}, //
+
19556 {2.63185668, 3.89537787}, //
+
19557 {2.6480999, 3.89245009}, //
+
19558 {2.67141366, 3.8901}, //
+
19559 {2.69464326, 3.88758326}, //
+
19560 {2.71778893, 3.88490009}, //
+
19561 {2.74085069, 3.88205004}, //
+
19562 {2.76382828, 3.87903333}, //
+
19563 {2.78672218, 3.87584996}, //
+
19564 {2.80953217, 3.87249994}, //
+
19565 {2.83225799, 3.86898327}, //
+
19566 {2.85489988, 3.86529994}, //
+
19567 {2.8766315, 3.86144996}, //
+
19568 {2.89660382, 3.85743332}, //
+
19569 {2.91481662, 3.85325003}, //
+
19570 {2.93127036, 3.84890008}, //
+
19571 {2.94596481, 3.84438324}, //
+
19572 {2.95889997, 3.83969998}, //
+
19573 {2.97007585, 3.83485007}, //
+
19574 {2.97949266, 3.82983327}, //
+
19575 {2.98714995, 3.82465005}, //
+
19576 {2.99702287, 3.81604695}, //
+
19577 {3.00706363, 3.80681539}, //
+
19578 {3.01727223, 3.79695559}, //
+
19579 {3.02764869, 3.78646731}, //
+
19580 {3.03819323, 3.77535057}, //
+
19581 {3.04890561, 3.76360559}, //
+
19582 {3.05978584, 3.75123215}, //
+
19583 {3.07083392, 3.73823023}, //
+
19584 {3.08205009, 3.72460008}, //
+
19585 {3.092942, 3.71051979}, //
+
19586 {3.10299563, 3.69614577}, //
+
19587 {3.11221123, 3.68147779}, //
+
19588 {3.1205883, 3.66651607}, //
+
19589 {3.1281271, 3.65126038}, //
+
19590 {3.13482785, 3.63571119}, //
+
19591 {3.14069009, 3.6198678}, //
+
19592 {3.14571428, 3.60373092}, //
+
19593 {3.14989996, 3.58730006}, //
+
19594 {3.15295315, 3.56904387}, //
+
19595 {3.15609002, 3.55045319}, //
+
19596 {3.15931106, 3.53152776}, //
+
19597 {3.16261601, 3.51226783}, //
+
19598 {3.1660049, 3.4926734}, //
+
19599 {3.1694777, 3.47274446}, //
+
19600 {3.17303467, 3.45248079}, //
+
19601 {3.17667532, 3.43188262}, //
+
19602 {3.18039989, 3.41094995}, //
+
19603 {3.18332767, 3.39203095}, //
+
19604 {3.1860888, 3.37445116}, //
+
19605 {3.18868327, 3.35821104}, //
+
19606 {3.19111109, 3.34331059}, //
+
19607 {3.19337225, 3.32974935}, //
+
19608 {3.19546676, 3.31752777}, //
+
19609 {3.19739437, 3.30664563}, //
+
19610 {3.19915557, 3.29710317}, //
+
19611 {3.20075011, 3.2888999}, //
+
19612 {3.20154691, 3.28578401}, //
+
19613 {3.20242643, 3.28245807}, //
+
19614 {3.20338893, 3.27892232}, //
+
19615 {3.20443392, 3.27517653}, //
+
19616 {3.20556164, 3.27122092}, //
+
19617 {3.20677233, 3.26705551}, //
+
19618 {3.20806551, 3.26268029}, //
+
19619 {3.20944142, 3.25809503}, //
+
19620 {3.21090007, 3.25329995}, //
+
19621 {3.21241045, 3.24839997}, //
+
19622 {3.21391964, 3.24349999}, //
+
19623 {3.21542788, 3.23860002}, //
+
19624 {3.21693468, 3.23370004}, //
+
19625 {3.21844006, 3.22880006}, //
+
19626 {3.21994448, 3.22390008}, //
+
19627 {3.22144747, 3.2190001}, //
+
19628 {3.22294927, 3.21409988}, //
+
19629 {3.22445011, 3.20919991}, //
+
19630 {3.22591925, 3.20439386}, //
+
19631 {3.22730422, 3.19975305}, //
+
19632 {3.22860551, 3.19527769}, //
+
19633 {3.22982287, 3.1909678}, //
+
19634 {3.23095608, 3.18682337}, //
+
19635 {3.2320056, 3.1828444}, //
+
19636 {3.23297095, 3.1790309}, //
+
19637 {3.23385239, 3.17538261}, //
+
19638 {3.2346499, 3.17190003}, //
+
19639 {3.23653889, 3.16342783}, //
+
19640 {3.2370007, 3.16135669}, //
+
19641 {3.23737836, 3.15966225}, //
+
19642 {3.23767233, 3.15834451}, //
+
19643 {3.23788214, 3.15740299}, //
+
19644 {3.23800802, 3.15683818}, //
+
19645 });
+
19646 polys.push_back({
+
19647 {2.0004499, 3.92635012}, //
+
19648 {2.0004499, 3.92635012}, //
+
19649 {2.0004499, 3.92635012}, //
+
19650 });
+
19651 polys.push_back({
+
19652 {3.00632906, 2.89482594}, //
+
19653 {2.99496603, 2.92640376}, //
+
19654 {2.98356104, 2.9564333}, //
+
19655 {2.97211409, 2.98491478}, //
+
19656 {2.96062541, 3.01184821}, //
+
19657 {2.94909453, 3.03723335}, //
+
19658 {2.9375217, 3.06107044}, //
+
19659 {2.9259069, 3.08335924}, //
+
19660 {2.9142499, 3.10409999}, //
+
19661 {2.90271854, 3.1235857}, //
+
19662 {2.89147973, 3.14210987}, //
+
19663 {2.88053322, 3.15967226}, //
+
19664 {2.86987972, 3.17627287}, //
+
19665 {2.85951853, 3.1919117}, //
+
19666 {2.84945011, 3.20658898}, //
+
19667 {2.839674, 3.22030425}, //
+
19668 {2.83019066, 3.23305798}, //
+
19669 {2.8210001, 3.24484992}, //
+
19670 {2.81803036, 3.24932027}, //
+
19671 {2.81514311, 3.25370932}, //
+
19672 {2.81233883, 3.25801659}, //
+
19673 {2.80961728, 3.26224256}, //
+
19674 {2.80697846, 3.26638699}, //
+
19675 {2.80442214, 3.27045012}, //
+
19676 {2.80194879, 3.27443147}, //
+
19677 {2.79955792, 3.27833152}, //
+
19678 {2.79725003, 3.28215003}, //
+
19679 {2.79574943, 3.28373384}, //
+
19680 {2.79424763, 3.28548574}, //
+
19681 {2.7927444, 3.28740549}, //
+
19682 {2.79124022, 3.28949332}, //
+
19683 {2.7897346, 3.29174876}, //
+
19684 {2.7882278, 3.29417229}, //
+
19685 {2.7867198, 3.29676366}, //
+
19686 {2.78521061, 3.29952288}, //
+
19687 {2.78369999, 3.30244994}, //
+
19688 {2.77507663, 3.31685567}, //
+
19689 {2.76578403, 3.33142781}, //
+
19690 {2.75582218, 3.34616661}, //
+
19691 {2.74519134, 3.3610723}, //
+
19692 {2.73389125, 3.37614441}, //
+
19693 {2.72192216, 3.39138341}, //
+
19694 {2.70928407, 3.40678883}, //
+
19695 {2.6959765, 3.42236114}, //
+
19696 {2.68199992, 3.4381001}, //
+
19697 {2.67598772, 3.44426918}, //
+
19698 {2.67001724, 3.45073199}, //
+
19699 {2.66408896, 3.45748878}, //
+
19700 {2.65820241, 3.46453953}, //
+
19701 {2.65235806, 3.47188401}, //
+
19702 {2.64655566, 3.47952223}, //
+
19703 {2.64079499, 3.48745441}, //
+
19704 {2.63507652, 3.49568033}, //
+
19705 {2.62940001, 3.50419998}, //
+
19706 {2.62377596, 3.51280379}, //
+
19707 {2.61819267, 3.52128148}, //
+
19708 {2.61264992, 3.52963328}, //
+
19709 {2.60714817, 3.5378592}, //
+
19710 {2.60168695, 3.54595923}, //
+
19711 {2.59626675, 3.55393338}, //
+
19712 {2.59088707, 3.56178141}, //
+
19713 {2.58554816, 3.56950378}, //
+
19714 {2.58025002, 3.57710004}, //
+
19715 {2.57515001, 3.5850544}, //
+
19716 {2.57038331, 3.59233952}, //
+
19717 {2.56594992, 3.59895563}, //
+
19718 {2.56185007, 3.60490251}, //
+
19719 {2.5580833, 3.61018014}, //
+
19720 {2.55465007, 3.61478877}, //
+
19721 {2.55154991, 3.6187284}, //
+
19722 {2.5487833, 3.62199879}, //
+
19723 {2.54635, 3.62459993}, //
+
19724 {2.54342222, 3.62658334}, //
+
19725 {2.5406611, 3.62802219}, //
+
19726 {2.53806663, 3.62891674}, //
+
19727 {2.53563881, 3.62926674}, //
+
19728 {2.53337789, 3.62907219}, //
+
19729 {2.53128338, 3.62833333}, //
+
19730 {2.52935553, 3.62704992}, //
+
19731 {2.52759433, 3.62522221}, //
+
19732 {2.52600002, 3.62284994}, //
+
19733 {2.52454138, 3.6201117}, //
+
19734 {2.52316546, 3.61716366}, //
+
19735 {2.52187228, 3.61400557}, //
+
19736 {2.52066183, 3.61063766}, //
+
19737 {2.51953387, 3.60705996}, //
+
19738 {2.51848888, 3.6032722}, //
+
19739 {2.51752663, 3.59927464}, //
+
19740 {2.51664686, 3.59506726}, //
+
19741 {2.51585007, 3.59065008}, //
+
19742 {2.51578712, 3.58845687}, //
+
19743 {2.51559806, 3.58638835}, //
+
19744 {2.51528335, 3.58444452}, //
+
19745 {2.51484251, 3.58262539}, //
+
19746 {2.51427603, 3.58093095}, //
+
19747 {2.51358342, 3.5793612}, //
+
19748 {2.51276493, 3.57791615}, //
+
19749 {2.51182032, 3.57659578}, //
+
19750 {2.51075006, 3.57540011}, //
+
19751 {2.50963759, 3.57436061}, //
+
19752 {2.50856733, 3.57348633}, //
+
19753 {2.5075388, 3.57277775}, //
+
19754 {2.50655246, 3.57223463}, //
+
19755 {2.50560808, 3.57185674}, //
+
19756 {2.50470567, 3.57164454}, //
+
19757 {2.50384498, 3.57159758}, //
+
19758 {2.50302649, 3.57171607}, //
+
19759 {2.50224996, 3.57200003}, //
+
19760 {2.5015049, 3.57239866}, //
+
19761 {2.50075865, 3.5728395}, //
+
19762 {2.50001121, 3.5733223}, //
+
19763 {2.49926233, 3.57384682}, //
+
19764 {2.49851227, 3.57441354}, //
+
19765 {2.49776101, 3.57502222}, //
+
19766 {2.49700856, 3.57567286}, //
+
19767 {2.49625492, 3.57636547}, //
+
19768 {2.49550009, 3.57710004}, //
+
19769 {2.49415684, 3.57844329}, //
+
19770 {2.4936111, 3.57898879}, //
+
19771 {2.4921, 3.58049989}, //
+
19772 {2.4897604, 3.58221984}, //
+
19773 {2.48725319, 3.58435678}, //
+
19774 {2.48457789, 3.5869112}, //
+
19775 {2.48173451, 3.58988261}, //
+
19776 {2.47872353, 3.59327149}, //
+
19777 {2.47554445, 3.59707785}, //
+
19778 {2.47219753, 3.60130119}, //
+
19779 {2.46868277, 3.60594201}, //
+
19780 {2.46499991, 3.61100006}, //
+
19781 {2.46114945, 3.61560559}, //
+
19782 {2.45713091, 3.62037778}, //
+
19783 {2.45294452, 3.62531662}, //
+
19784 {2.44859004, 3.63042212}, //
+
19785 {2.44406796, 3.6356945}, //
+
19786 {2.43937778, 3.64113331}, //
+
19787 {2.43451977, 3.64673901}, //
+
19788 {2.4294939, 3.65251112}, //
+
19789 {2.42429996, 3.65844989}, //
+
19790 {2.4190228, 3.66435742}, //
+
19791 {2.41374683, 3.67001295}, //
+
19792 {2.4084723, 3.67541671}, //
+
19793 {2.40319872, 3.68056846}, //
+
19794 {2.39792657, 3.68546844}, //
+
19795 {2.39265561, 3.69011664}, //
+
19796 {2.38738585, 3.69451284}, //
+
19797 {2.38211727, 3.69865751}, //
+
19798 {2.37684989, 3.70254993}, //
+
19799 {2.36673641, 3.71020937}, //
+
19800 {2.35599566, 3.71812034}, //
+
19801 {2.34462786, 3.72628331}, //
+
19802 {2.33263278, 3.73469806}, //
+
19803 {2.32001042, 3.74336481}, //
+
19804 {2.30676103, 3.75228333}, //
+
19805 {2.29288459, 3.76145363}, //
+
19806 {2.27838087, 3.77087593}, //
+
19807 {2.26325011, 3.78055}, //
+
19808 {2.24799395, 3.79014015}, //
+
19809 {2.23311424, 3.79931045}, //
+
19810 {2.218611, 3.80806112}, //
+
19811 {2.20448446, 3.81639194}, //
+
19812 {2.19073462, 3.82430315}, //
+
19813 {2.17736101, 3.8317945}, //
+
19814 {2.1643641, 3.838866}, //
+
19815 {2.15174389, 3.84551787}, //
+
19816 {2.1394999, 3.8517499}, //
+
19817 {2.13198709, 3.85553765}, //
+
19818 {2.12451482, 3.85936737}, //
+
19819 {2.11708331, 3.86323881}, //
+
19820 {2.10969257, 3.86715245}, //
+
19821 {2.10234261, 3.87110806}, //
+
19822 {2.09503341, 3.87510562}, //
+
19823 {2.08776474, 3.87914515}, //
+
19824 {2.08053708, 3.88322663}, //
+
19825 {2.07334995, 3.88735008}, //
+
19826 {2.06634068, 3.89138961}, //
+
19827 {2.05962396, 3.89521909}, //
+
19828 {2.05320001, 3.898839}, //
+
19829 {2.0470686, 3.90224886}, //
+
19830 {2.04122972, 3.90544868}, //
+
19831 {2.03568339, 3.90843892}, //
+
19832 {2.0304296, 3.91121912}, //
+
19833 {2.02546859, 3.91378951}, //
+
19834 {2.02080011, 3.91615009}, //
+
19835 {2.01652908, 3.91829085}, //
+
19836 {2.0127604, 3.92017961}, //
+
19837 {2.00989103, 3.92161775}, //
+
19838 {2.00991535, 3.92160678}, //
+
19839 {2.01064992, 3.9212501}, //
+
19840 {2.01142597, 3.92087221}, //
+
19841 {2.01224256, 3.92049456}, //
+
19842 {2.01309991, 3.92011666}, //
+
19843 {2.01399803, 3.91973901}, //
+
19844 {2.01493692, 3.91936111}, //
+
19845 {2.01591659, 3.91898322}, //
+
19846 {2.01693702, 3.91860557}, //
+
19847 {2.01799822, 3.91822767}, //
+
19848 {2.01909995, 3.91785002}, //
+
19849 {2.02025366, 3.91747212}, //
+
19850 {2.02144814, 3.91709447}, //
+
19851 {2.02268338, 3.91671658}, //
+
19852 {2.02395916, 3.91633892}, //
+
19853 {2.02527595, 3.91596103}, //
+
19854 {2.02663326, 3.91558337}, //
+
19855 {2.02803159, 3.91520548}, //
+
19856 {2.02947044, 3.91482782}, //
+
19857 {2.03095007, 3.91444993}, //
+
19858 {2.03248143, 3.91406178}, //
+
19859 {2.0340538, 3.91363025}, //
+
19860 {2.0356667, 3.91315556}, //
+
19861 {2.03732038, 3.91263771}, //
+
19862 {2.03901482, 3.91207647}, //
+
19863 {2.04075003, 3.91147232}, //
+
19864 {2.04252601, 3.91082478}, //
+
19865 {2.04434252, 3.91013384}, //
+
19866 {2.04620004, 3.90939999}, //
+
19867 {2.04813027, 3.90862346}, //
+
19868 {2.05014324, 3.90780497}, //
+
19869 {2.05223894, 3.90694451}, //
+
19870 {2.05441737, 3.90604186}, //
+
19871 {2.0566783, 3.90509748}, //
+
19872 {2.05902219, 3.90411115}, //
+
19873 {2.06144881, 3.90308261}, //
+
19874 {2.06395793, 3.90201235}, //
+
19875 {2.06655002, 3.90089989}, //
+
19876 {2.06921482, 3.89979815}, //
+
19877 {2.07192039, 3.89873695}, //
+
19878 {2.07466674, 3.89771676}, //
+
19879 {2.07745361, 3.8967371}, //
+
19880 {2.0802815, 3.89579821}, //
+
19881 {2.08314991, 3.89490008}, //
+
19882 {2.08605933, 3.89404249}, //
+
19883 {2.08900928, 3.89322591}, //
+
19884 {2.09200001, 3.89245009}, //
+
19885 {2.09506369, 3.89167356}, //
+
19886 {2.09820986, 3.89085484}, //
+
19887 {2.101439, 3.88999438}, //
+
19888 {2.10475063, 3.88909197}, //
+
19889 {2.108145, 3.88814759}, //
+
19890 {2.11162233, 3.88716102}, //
+
19891 {2.11518216, 3.88613272}, //
+
19892 {2.11882472, 3.88506246}, //
+
19893 {2.12255001, 3.88395}, //
+
19894 {2.12631679, 3.88280606}, //
+
19895 {2.13008332, 3.88161922}, //
+
19896 {2.1338501, 3.88038898}, //
+
19897 {2.13761663, 3.87911534}, //
+
19898 {2.14138341, 3.8777988}, //
+
19899 {2.14514995, 3.87643886}, //
+
19900 {2.14891672, 3.87503576}, //
+
19901 {2.15268326, 3.87358952}, //
+
19902 {2.15645003, 3.87210011}, //
+
19903 {2.18620682, 3.86122036}, //
+
19904 {2.21521044, 3.84967041}, //
+
19905 {2.24346113, 3.83745003}, //
+
19906 {2.27095866, 3.82455921}, //
+
19907 {2.29770303, 3.8109982}, //
+
19908 {2.32369447, 3.79676676}, //
+
19909 {2.34893274, 3.78186488}, //
+
19910 {2.37341785, 3.76629257}, //
+
19911 {2.39715004, 3.75005007}, //
+
19912 {2.41498756, 3.73841286}, //
+
19913 {2.43232274, 3.72761297}, //
+
19914 {2.44915557, 3.71764994}, //
+
19915 {2.46548581, 3.70852399}, //
+
19916 {2.48131347, 3.70023513}, //
+
19917 {2.49663877, 3.69278336}, //
+
19918 {2.51146173, 3.68616843}, //
+
19919 {2.52578211, 3.68039083}, //
+
19920 {2.5395999, 3.67545009}, //
+
19921 {2.55510807, 3.66979575}, //
+
19922 {2.56998754, 3.66338825}, //
+
19923 {2.58423901, 3.65622783}, //
+
19924 {2.59786177, 3.64831424}, //
+
19925 {2.61085606, 3.63964748}, //
+
19926 {2.62322211, 3.6302278}, //
+
19927 {2.63495994, 3.62005496}, //
+
19928 {2.64606905, 3.60912895}, //
+
19929 {2.65654993, 3.59745002}, //
+
19930 {2.66632962, 3.58547831}, //
+
19931 {2.675313, 3.57367468}, //
+
19932 {2.68350005, 3.5620389}, //
+
19933 {2.69089079, 3.55057096}, //
+
19934 {2.69748521, 3.53927088}, //
+
19935 {2.70328331, 3.52813888}, //
+
19936 {2.70828509, 3.51717472}, //
+
19937 {2.7124908, 3.50637841}, //
+
19938 {2.71589994, 3.49574995}, //
+
19939 {2.71912026, 3.48540425}, //
+
19940 {2.72275925, 3.47547841}, //
+
19941 {2.72681665, 3.46597219}, //
+
19942 {2.73129249, 3.45688581}, //
+
19943 {2.73618698, 3.44821906}, //
+
19944 {2.7414999, 3.43997216}, //
+
19945 {2.74723148, 3.43214512}, //
+
19946 {2.75338149, 3.42473769}, //
+
19947 {2.75994992, 3.41774988}, //
+
19948 {2.76736784, 3.41063714}, //
+
19949 {2.77453279, 3.40285373}, //
+
19950 {2.78144455, 3.39439988}, //
+
19951 {2.7881031, 3.38527584}, //
+
19952 {2.7945087, 3.37548137}, //
+
19953 {2.80066109, 3.3650167}, //
+
19954 {2.80656052, 3.3538816}, //
+
19955 {2.81220675, 3.34207582}, //
+
19956 {2.81760001, 3.3296001}, //
+
19957 {2.8263073, 3.3120575}, //
+
19958 {2.83585191, 3.29409623}, //
+
19959 {2.84623337, 3.27571678}, //
+
19960 {2.85745192, 3.25691843}, //
+
19961 {2.86950731, 3.23770189}, //
+
19962 {2.88240004, 3.21806669}, //
+
19963 {2.89612961, 3.19801307}, //
+
19964 {2.91069627, 3.17754078}, //
+
19965 {2.92610002, 3.15665007}, //
+
19966 {2.93501854, 3.14467835}, //
+
19967 {2.94368529, 3.13287473}, //
+
19968 {2.95210004, 3.12123895}, //
+
19969 {2.96026301, 3.10977101}, //
+
19970 {2.96817398, 3.09847093}, //
+
19971 {2.97583342, 3.08733892}, //
+
19972 {2.98324084, 3.07637477}, //
+
19973 {2.99039626, 3.06557846}, //
+
19974 {2.99729991, 3.05495}, //
+
19975 {3.00167537, 3.0467031}, //
+
19976 {3.00575686, 3.03854012}, //
+
19977 {3.00954437, 3.03046107}, //
+
19978 {3.01303816, 3.02246594}, //
+
19979 {3.01623821, 3.01455498}, //
+
19980 {3.01914454, 3.0067277}, //
+
19981 {3.02175689, 2.99898458}, //
+
19982 {3.02407527, 2.99132538}, //
+
19983 {3.02609992, 2.9837501}, //
+
19984 {3.02786303, 2.9763}, //
+
19985 {3.02937412, 2.96901655}, //
+
19986 {3.03063345, 2.9619}, //
+
19987 {3.03164077, 2.95495009}, //
+
19988 {3.03239632, 2.94816661}, //
+
19989 {3.03290009, 2.94155002}, //
+
19990 {3.03315187, 2.93510008}, //
+
19991 {3.03315187, 2.92881656}, //
+
19992 {3.03290009, 2.92269993}, //
+
19993 {3.03245926, 2.91680312}, //
+
19994 {3.03189254, 2.91115689}, //
+
19995 {3.03119993, 2.905761}, //
+
19996 {3.03038144, 2.90061593}, //
+
19997 {3.02943707, 2.89572167}, //
+
19998 {3.02836657, 2.89107776}, //
+
19999 {3.02717042, 2.88668466}, //
+
20000 {3.02584815, 2.88254189}, //
+
20001 {3.0244, 2.87864995}, //
+
20002 {3.02173328, 2.87195373}, //
+
20003 {3.02064991, 2.86923337}, //
+
20004 {3.01973343, 2.86693144}, //
+
20005 {3.01898336, 2.86504817}, //
+
20006 {3.01798344, 2.86253715}, //
+
20007 {3.01764989, 2.86170006}, //
+
20008 });
+
20009 polys.push_back({
+
20010 {3.37390113, 1.81106055}, //
+
20011 {3.37766981, 1.81796789}, //
+
20012 {3.38596058, 1.83316422}, //
+
20013 {3.38972902, 1.84007156}, //
+
20014 {3.39400005, 1.84790003}, //
+
20015 {3.39860559, 1.85650241}, //
+
20016 {3.40337777, 1.86573207}, //
+
20017 {3.40831661, 1.87558889}, //
+
20018 {3.41342211, 1.88607287}, //
+
20019 {3.4186945, 1.8971839}, //
+
20020 {3.4241333, 1.9089222}, //
+
20021 {3.429739, 1.92128766}, //
+
20022 {3.43551111, 1.93428028}, //
+
20023 {3.44145012, 1.94790006}, //
+
20024 {3.44744134, 1.96194875}, //
+
20025 {3.45334888, 1.97620618}, //
+
20026 {3.45917225, 1.99067223}, //
+
20027 {3.4649117, 2.00534701}, //
+
20028 {3.47056723, 2.02023029}, //
+
20029 {3.47613883, 2.03532219}, //
+
20030 {3.48162651, 2.05062294}, //
+
20031 {3.48703027, 2.06613207}, //
+
20032 {3.4923501, 2.08185005}, //
+
20033 {3.49352026, 2.08494639}, //
+
20034 {3.49498343, 2.08881664}, //
+
20035 {3.50288343, 2.10971665}, //
+
20036 {3.50668693, 2.11977959}, //
+
20037 {3.5160501, 2.14455009}, //
+
20038 {3.52141118, 2.15874505}, //
+
20039 {3.52693892, 2.17344141}, //
+
20040 {3.5326333, 2.18863893}, //
+
20041 {3.53849435, 2.2043376}, //
+
20042 {3.54452229, 2.22053766}, //
+
20043 {3.55071664, 2.23723888}, //
+
20044 {3.55707788, 2.25444126}, //
+
20045 {3.56360555, 2.27214503}, //
+
20046 {3.5703001, 2.29034996}, //
+
20047 {3.57702541, 2.30862784}, //
+
20048 {3.58362341, 2.32652783}, //
+
20049 {3.59009433, 2.34404993}, //
+
20050 {3.59643817, 2.36119437}, //
+
20051 {3.60265493, 2.37796116}, //
+
20052 {3.60874438, 2.39435005}, //
+
20053 {3.61470675, 2.41036105}, //
+
20054 {3.62054205, 2.4259944}, //
+
20055 {3.62625003, 2.44125009}, //
+
20056 {3.63167524, 2.45581484}, //
+
20057 {3.63664007, 2.46937585}, //
+
20058 {3.64114451, 2.48193336}, //
+
20059 {3.64518833, 2.49348712}, //
+
20060 {3.64877152, 2.50403714}, //
+
20061 {3.65189433, 2.51358342}, //
+
20062 {3.65455675, 2.52212596}, //
+
20063 {3.65675855, 2.52966475}, //
+
20064 {3.65849996, 2.53620005}, //
+
20065 {3.66000056, 2.54138398}, //
+
20066 {3.66150236, 2.54640245}, //
+
20067 {3.66300559, 2.55125546}, //
+
20068 {3.66450977, 2.55594325}, //
+
20069 {3.66601539, 2.56046534}, //
+
20070 {3.66752219, 2.5648222}, //
+
20071 {3.66903019, 2.5690136}, //
+
20072 {3.67053962, 2.57303953}, //
+
20073 {3.67205, 2.57690001}, //
+
20074 {3.67426419, 2.58074999}, //
+
20075 {3.67639565, 2.58476663}, //
+
20076 {3.67844439, 2.58894992}, //
+
20077 {3.68041039, 2.5933001}, //
+
20078 {3.68229389, 2.59781671}, //
+
20079 {3.68409443, 2.60249996}, //
+
20080 {3.68581223, 2.60735011}, //
+
20081 {3.68744755, 2.61236668}, //
+
20082 {3.68899989, 2.6175499}, //
+
20083 {3.69046855, 2.6230371}, //
+
20084 {3.69185185, 2.62894249}, //
+
20085 {3.69315004, 2.63526678}, //
+
20086 {3.69436288, 2.64200926}, //
+
20087 {3.69549084, 2.6491704}, //
+
20088 {3.69653344, 2.65674996}, //
+
20089 {3.69749069, 2.66474819}, //
+
20090 {3.69836307, 2.67316484}, //
+
20091 {3.69915009, 2.68199992}, //
+
20092 {3.70175123, 2.7017982}, //
+
20093 {3.70502162, 2.7220149}, //
+
20094 {3.70896101, 2.74265003}, //
+
20095 {3.71356964, 2.76370358}, //
+
20096 {3.71884751, 2.78517604}, //
+
20097 {3.72479439, 2.80706668}, //
+
20098 {3.7314105, 2.82937598}, //
+
20099 {3.73869562, 2.85210371}, //
+
20100 {3.74664998, 2.8752501}, //
+
20101 {3.75041676, 2.88525867}, //
+
20102 {3.75418329, 2.89568448}, //
+
20103 {3.75795007, 2.90652776}, //
+
20104 {3.7617166, 2.91778827}, //
+
20105 {3.76548338, 2.92946601}, //
+
20106 {3.76924992, 2.94156122}, //
+
20107 {3.77301669, 2.95407343}, //
+
20108 {3.77678323, 2.96700311}, //
+
20109 {3.78055, 2.98035002}, //
+
20110 {3.79340434, 3.0261426}, //
+
20111 {3.80483389, 3.06858706}, //
+
20112 {3.81483889, 3.10768342}, //
+
20113 {3.82341909, 3.14343143}, //
+
20114 {3.83057475, 3.17583156}, //
+
20115 {3.83630562, 3.20488334}, //
+
20116 {3.8406117, 3.23058701}, //
+
20117 {3.84349322, 3.25294256}, //
+
20118 {3.84494996, 3.27195001}, //
+
20119 {3.84572649, 3.27647233}, //
+
20120 {3.84654498, 3.28099442}, //
+
20121 {3.84740567, 3.28551674}, //
+
20122 {3.84830809, 3.29003882}, //
+
20123 {3.84925246, 3.29456115}, //
+
20124 {3.8502388, 3.29908323}, //
+
20125 {3.85126734, 3.30360556}, //
+
20126 {3.8523376, 3.30812788}, //
+
20127 {3.85345006, 3.31264997}, //
+
20128 {3.85464573, 3.31733942}, //
+
20129 {3.85596609, 3.32236362}, //
+
20130 {3.85741115, 3.32772231}, //
+
20131 {3.85898089, 3.33341551}, //
+
20132 {3.86067533, 3.33944321}, //
+
20133 {3.86249447, 3.34580564}, //
+
20134 {3.8644383, 3.35250258}, //
+
20135 {3.86650681, 3.35953403}, //
+
20136 {3.86870003, 3.36689997}, //
+
20137 {3.87179518, 3.37397099}, //
+
20138 {3.87505794, 3.38162851}, //
+
20139 {3.87848878, 3.38987231}, //
+
20140 {3.88208771, 3.39870238}, //
+
20141 {3.88585424, 3.4081192}, //
+
20142 {3.88978887, 3.41812229}, //
+
20143 {3.89389133, 3.42871165}, //
+
20144 {3.89816165, 3.43988776}, //
+
20145 {3.90260005, 3.4516499}, //
+
20146 {3.90932536, 3.47125983}, //
+
20147 {3.91592336, 3.49091172}, //
+
20148 {3.92239451, 3.51060557}, //
+
20149 {3.92873836, 3.53034139}, //
+
20150 {3.93495488, 3.55011916}, //
+
20151 {3.94104433, 3.5699389}, //
+
20152 {3.9470067, 3.5898006}, //
+
20153 {3.952842, 3.60970426}, //
+
20154 {3.95854998, 3.62965012}, //
+
20155 {3.96368217, 3.64900994}, //
+
20156 {3.96776724, 3.66715622}, //
+
20157 {3.97080564, 3.68408895}, //
+
20158 {3.97279692, 3.69980812}, //
+
20159 {3.97374129, 3.71431351}, //
+
20160 {3.97363877, 3.72760558}, //
+
20161 {3.9724896, 3.73968387}, //
+
20162 {3.97029328, 3.75054884}, //
+
20163 {3.96705008, 3.76020002}, //
+
20164 {3.96386051, 3.77038884}, //
+
20165 {3.96033645, 3.7798667}, //
+
20166 {3.95647788, 3.78863335}, //
+
20167 {3.95228457, 3.7966888}, //
+
20168 {3.94775677, 3.80403328}, //
+
20169 {3.94289446, 3.81066656}, //
+
20170 {3.93769765, 3.81658888}, //
+
20171 {3.9321661, 3.82179999}, //
+
20172 {3.92630005, 3.82629991}, //
+
20173 {3.9200685, 3.83034015}, //
+
20174 {3.91341853, 3.83417153}, //
+
20175 {3.9063499, 3.83779454}, //
+
20176 {3.89886308, 3.8412087}, //
+
20177 {3.89095736, 3.84441423}, //
+
20178 {3.88263345, 3.84741116}, //
+
20179 {3.87389064, 3.85019946}, //
+
20180 {3.86472964, 3.85277891}, //
+
20181 {3.85514998, 3.85514998}, //
+
20182 {3.85288405, 3.85590506}, //
+
20183 {3.85061908, 3.8566587}, //
+
20184 {3.84835553, 3.85741115}, //
+
20185 {3.84609318, 3.8581624}, //
+
20186 {3.84383202, 3.85891223}, //
+
20187 {3.84157228, 3.8596611}, //
+
20188 {3.83931351, 3.86040854}, //
+
20189 {3.83705616, 3.86115503}, //
+
20190 {3.8348, 3.86190009}, //
+
20191 {3.8410809, 3.86190009}, //
+
20192 {3.84384441, 3.86190009}, //
+
20193 {3.84711051, 3.86190009}, //
+
20194 {3.85514998, 3.86190009}, //
+
20195 {3.8597765, 3.86190009}, //
+
20196 {3.86461163, 3.86190009}, //
+
20197 {3.88603878, 3.86190009}, //
+
20198 {3.89191723, 3.86190009}, //
+
20199 {3.90429997, 3.86190009}, //
+
20200 {3.91071057, 3.86185813}, //
+
20201 {3.91711974, 3.86173201}, //
+
20202 {3.92352772, 3.8615222}, //
+
20203 {3.9299345, 3.86122847}, //
+
20204 {3.93634009, 3.86085057}, //
+
20205 {3.94274449, 3.86038899}, //
+
20206 {3.94914746, 3.85984325}, //
+
20207 {3.95554948, 3.85921359}, //
+
20208 {3.96195006, 3.8585}, //
+
20209 {3.96820378, 3.85771298}, //
+
20210 {3.97416472, 3.85684085}, //
+
20211 {3.97983336, 3.85588336}, //
+
20212 {3.98520923, 3.85484076}, //
+
20213 {3.99029255, 3.85371304}, //
+
20214 {3.99508333, 3.85249996}, //
+
20215 {3.99958158, 3.85120177}, //
+
20216 {4.00378704, 3.84981847}, //
+
20217 {4.00769997, 3.84835005}, //
+
20218 {4.01169682, 3.84676552}, //
+
20219 {4.01615429, 3.84501171}, //
+
20220 {4.02107239, 3.84308887}, //
+
20221 {4.02645063, 3.84099698}, //
+
20222 {4.03228951, 3.83873582}, //
+
20223 {4.038589, 3.83630562}, //
+
20224 {4.04534864, 3.83370614}, //
+
20225 {4.05256891, 3.83093762}, //
+
20226 {4.06024981, 3.82800007}, //
+
20227 {4.06794119, 3.8250308}, //
+
20228 {4.07517099, 3.8221457}, //
+
20229 {4.08193874, 3.81934452}, //
+
20230 {4.08824492, 3.81662726}, //
+
20231 {4.09408951, 3.81399393}, //
+
20232 {4.09947205, 3.81144452}, //
+
20233 {4.10439301, 3.80897903}, //
+
20234 {4.10885239, 3.80659747}, //
+
20235 {4.11285019, 3.80430007}, //
+
20236 {4.11604929, 3.80333519}, //
+
20237 {4.11962509, 3.80195189}, //
+
20238 {4.12357759, 3.80014992}, //
+
20239 {4.1279068, 3.79792953}, //
+
20240 {4.13261223, 3.79529071}, //
+
20241 {4.13769436, 3.79223323}, //
+
20242 {4.14315319, 3.78875732}, //
+
20243 {4.14898825, 3.784863}, //
+
20244 {4.1552, 3.78055}, //
+
20245 {4.1616106, 3.77586055}, //
+
20246 {4.16801977, 3.77083635}, //
+
20247 {4.17442799, 3.7654779}, //
+
20248 {4.18083477, 3.75978446}, //
+
20249 {4.18724012, 3.75375676}, //
+
20250 {4.19364452, 3.74739456}, //
+
20251 {4.20004749, 3.74069762}, //
+
20252 {4.20644951, 3.73366594}, //
+
20253 {4.21285009, 3.7263}, //
+
20254 {4.21902037, 3.71855736}, //
+
20255 {4.22473145, 3.71039629}, //
+
20256 {4.22998333, 3.70181656}, //
+
20257 {4.23477602, 3.6928184}, //
+
20258 {4.23910904, 3.68340182}, //
+
20259 {4.24298334, 3.67356658}, //
+
20260 {4.24639797, 3.66331291}, //
+
20261 {4.24935389, 3.65264082}, //
+
20262 {4.25185013, 3.64155006}, //
+
20263 {4.25331831, 3.63007402}, //
+
20264 {4.25470161, 3.61675739}, //
+
20265 {4.25600004, 3.60159993}, //
+
20266 {4.25721312, 3.58460188}, //
+
20267 {4.25834084, 3.565763}, //
+
20268 {4.2593832, 3.54508328}, //
+
20269 {4.26034069, 3.52256298}, //
+
20270 {4.26121283, 3.49820185}, //
+
20271 {4.26200008, 3.47199988}, //
+
20272 {4.26262951, 3.4448359}, //
+
20273 {4.26300764, 3.41758776}, //
+
20274 {4.26313353, 3.39025545}, //
+
20275 {4.26300764, 3.36283946}, //
+
20276 {4.26262951, 3.33533955}, //
+
20277 {4.26200008, 3.30775547}, //
+
20278 {4.26111841, 3.28008771}, //
+
20279 {4.25998497, 3.25233579}, //
+
20280 {4.25860023, 3.22449994}, //
+
20281 {4.25684834, 3.19729209}, //
+
20282 {4.25459242, 3.17142344}, //
+
20283 {4.25183344, 3.14689445}, //
+
20284 {4.24857044, 3.12370491}, //
+
20285 {4.24480391, 3.10185504}, //
+
20286 {4.24053335, 3.08134437}, //
+
20287 {4.23575926, 3.06217337}, //
+
20288 {4.23048162, 3.04434204}, //
+
20289 {4.22469997, 3.02784991}, //
+
20290 {4.21463823, 3.00683403}, //
+
20291 {4.20403099, 2.98598576}, //
+
20292 {4.19287777, 2.96530557}, //
+
20293 {4.18117905, 2.94479322}, //
+
20294 {4.16893435, 2.92444873}, //
+
20295 {4.15614462, 2.90427232}, //
+
20296 {4.14280844, 2.88426352}, //
+
20297 {4.12892723, 2.8644228}, //
+
20298 {4.11450005, 2.84474993}, //
+
20299 {4.10025072, 2.82583022}, //
+
20300 {4.08688021, 2.80824876}, //
+
20301 {4.07438898, 2.79200554}, //
+
20302 {4.06277657, 2.77710056}, //
+
20303 {4.05204344, 2.76353407}, //
+
20304 {4.04218912, 2.75130558}, //
+
20305 {4.03321362, 2.74041533}, //
+
20306 {4.0251174, 2.73086357}, //
+
20307 {4.01789999, 2.72265005}, //
+
20308 {4.01375628, 2.71740556}, //
+
20309 {4.0088582, 2.71069455}, //
+
20310 {4.00320578, 2.70251656}, //
+
20311 {3.99679875, 2.69287229}, //
+
20312 {3.98963761, 2.68176103}, //
+
20313 {3.98172212, 2.66918325}, //
+
20314 {3.9730525, 2.65513897}, //
+
20315 {3.96362829, 2.6396277}, //
+
20316 {3.95344996, 2.62264991}, //
+
20317 {3.94294691, 2.60495996}, //
+
20318 {3.93252659, 2.58731174}, //
+
20319 {3.922189, 2.56970549}, //
+
20320 {3.9119339, 2.55214143}, //
+
20321 {3.90176177, 2.53461909}, //
+
20322 {3.89167213, 2.51713896}, //
+
20323 {3.88166547, 2.49970055}, //
+
20324 {3.87174129, 2.48230433}, //
+
20325 {3.86190009, 2.46495008}, //
+
20326 {3.85252905, 2.44833899}, //
+
20327 {3.8439939, 2.43315005}, //
+
20328 {3.83629441, 2.41938329}, //
+
20329 {3.82943082, 2.40703893}, //
+
20330 {3.82340312, 2.39611673}, //
+
20331 {3.81821108, 2.38661671}, //
+
20332 {3.81385493, 2.37853885}, //
+
20333 {3.81033468, 2.37188339}, //
+
20334 {3.80765009, 2.3666501}, //
+
20335 {3.80682087, 2.36408019}, //
+
20336 {3.80582285, 2.36088204}, //
+
20337 {3.80465555, 2.35705566}, //
+
20338 {3.80331922, 2.35260057}, //
+
20339 {3.8018136, 2.34751725}, //
+
20340 {3.80013895, 2.34180546}, //
+
20341 {3.79829502, 2.33546543}, //
+
20342 {3.79628205, 2.32849693}, //
+
20343 {3.79410005, 2.32089996}, //
+
20344 {3.79184389, 2.31290483}, //
+
20345 {3.78958631, 2.30474186}, //
+
20346 {3.78732777, 2.29641104}, //
+
20347 {3.7850678, 2.28791237}, //
+
20348 {3.78280687, 2.27924562}, //
+
20349 {3.78054452, 2.27041101}, //
+
20350 {3.77828097, 2.26140857}, //
+
20351 {3.776016, 2.25223827}, //
+
20352 {3.77375007, 2.24289989}, //
+
20353 {3.77153587, 2.2336247}, //
+
20354 {3.76940441, 2.22464323}, //
+
20355 {3.76735544, 2.2159555}, //
+
20356 {3.76538944, 2.20756173}, //
+
20357 {3.76350617, 2.1994617}, //
+
20358 {3.76170564, 2.19165564}, //
+
20359 {3.75998759, 2.1841433}, //
+
20360 {3.75835252, 2.17692471}, //
+
20361 {3.75679994, 2.17000008}, //
+
20362 {3.75038338, 2.14100623}, //
+
20363 {3.75013328, 2.1398766}, //
+
20364 {3.75005007, 2.1394999}, //
+
20365 {3.74988198, 2.14150739}, //
+
20366 {3.74967217, 2.14401674}, //
+
20367 {3.74900055, 2.1520462}, //
+
20368 {3.74853897, 2.15756679}, //
+
20369 {3.74664998, 2.18015003}, //
+
20370 {3.74597836, 2.18938279}, //
+
20371 {3.74547458, 2.19899201}, //
+
20372 {3.74513888, 2.2089777}, //
+
20373 {3.74497104, 2.21934009}, //
+
20374 {3.74497104, 2.23007894}, //
+
20375 {3.74513888, 2.24119449}, //
+
20376 {3.74547458, 2.2526865}, //
+
20377 {3.74597836, 2.26455498}, //
+
20378 {3.74664998, 2.27679992}, //
+
20379 {3.7475729, 2.2891283}, //
+
20380 {3.74883032, 2.30124688}, //
+
20381 {3.75042224, 2.31315565}, //
+
20382 {3.75234866, 2.32485437}, //
+
20383 {3.75460982, 2.33634329}, //
+
20384 {3.75720549, 2.34762216}, //
+
20385 {3.76013589, 2.35869145}, //
+
20386 {3.76340055, 2.3695507}, //
+
20387 {3.76699996, 2.38019991}, //
+
20388 {3.7708087, 2.38882399}, //
+
20389 {3.77470112, 2.3981185}, //
+
20390 {3.7786777, 2.40808344}, //
+
20391 {3.78273821, 2.41871858}, //
+
20392 {3.78688264, 2.43002415}, //
+
20393 {3.79111099, 2.44199991}, //
+
20394 {3.79542351, 2.45464635}, //
+
20395 {3.79981971, 2.46796298}, //
+
20396 {3.80430007, 2.48195004}, //
+
20397 {3.80969262, 2.49937725}, //
+
20398 {3.81533694, 2.51701427}, //
+
20399 {3.82123327, 2.53486109}, //
+
20400 {3.82738137, 2.55291796}, //
+
20401 {3.83378148, 2.57118464}, //
+
20402 {3.84043336, 2.58966112}, //
+
20403 {3.84733701, 2.60834742}, //
+
20404 {3.85449266, 2.62724376}, //
+
20405 {3.86190009, 2.64634991}, //
+
20406 {3.86965299, 2.6654253}, //
+
20407 {3.87782335, 2.68420672}, //
+
20408 {3.88641119, 2.70269442}, //
+
20409 {3.89541602, 2.72088838}, //
+
20410 {3.90483832, 2.73878837}, //
+
20411 {3.91467786, 2.75639439}, //
+
20412 {3.92493463, 2.77370667}, //
+
20413 {3.93560863, 2.79072523}, //
+
20414 {3.9467001, 2.80745006}, //
+
20415 {3.96370864, 2.83124495}, //
+
20416 {3.98009014, 2.85591912}, //
+
20417 {3.99584436, 2.88147211}, //
+
20418 {4.01097155, 2.90790439}, //
+
20419 {4.02547169, 2.93521547}, //
+
20420 {4.03934431, 2.96340561}, //
+
20421 {4.05258989, 2.99247479}, //
+
20422 {4.06520844, 3.02242279}, //
+
20423 {4.07719994, 3.05325007}, //
+
20424 {4.08832264, 3.08483076}, //
+
20425 {4.09831381, 3.11704016}, //
+
20426 {4.10717201, 3.14987779}, //
+
20427 {4.11489868, 3.18334389}, //
+
20428 {4.12149334, 3.21743822}, //
+
20429 {4.12695551, 3.25216103}, //
+
20430 {4.13128567, 3.2875123}, //
+
20431 {4.13448381, 3.32349205}, //
+
20432 {4.13654995, 3.36010003}, //
+
20433 {4.13726377, 3.39719319}, //
+
20434 {4.1378932, 3.43160605}, //
+
20435 {4.1384387, 3.46333885}, //
+
20436 {4.13890076, 3.49239135}, //
+
20437 {4.13927841, 3.51876354}, //
+
20438 {4.13957214, 3.54245567}, //
+
20439 {4.13978195, 3.56346726}, //
+
20440 {4.13990784, 3.58179879}, //
+
20441 {4.1399498, 3.59745002}, //
+
20442 {4.1399498, 3.61988711}, //
+
20443 {4.1399498, 3.62984991}, //
+
20444 {4.1399498, 3.66133142}, //
+
20445 {4.1399498, 3.66710925}, //
+
20446 {4.1399498, 3.67205}, //
+
20447 {4.13980293, 3.6743896}, //
+
20448 {4.13936234, 3.67689681}, //
+
20449 {4.13862801, 3.67957211}, //
+
20450 {4.13759947, 3.68241549}, //
+
20451 {4.1362772, 3.68542647}, //
+
20452 {4.1346612, 3.68860555}, //
+
20453 {4.13275146, 3.69195247}, //
+
20454 {4.13054752, 3.69546723}, //
+
20455 {4.12804985, 3.69915009}, //
+
20456 {4.12537479, 3.70288515}, //
+
20457 {4.12261534, 3.7065351}, //
+
20458 {4.11977243, 3.71009994}, //
+
20459 {4.11684513, 3.71357965}, //
+
20460 {4.1138339, 3.71697402}, //
+
20461 {4.11073875, 3.72028327}, //
+
20462 {4.10755968, 3.7235074}, //
+
20463 {4.10429668, 3.72664618}, //
+
20464 {4.10094976, 3.72970009}, //
+
20465 {4.09760237, 3.73248076}, //
+
20466 {4.09433746, 3.73480129}, //
+
20467 {4.09115553, 3.7366612}, //
+
20468 {4.08805609, 3.73806047}, //
+
20469 {4.08503962, 3.73899937}, //
+
20470 {4.08210564, 3.73947787}, //
+
20471 {4.07925415, 3.73949575}, //
+
20472 {4.07648563, 3.73905301}, //
+
20473 {4.07380009, 3.73814988}, //
+
20474 {4.07122946, 3.73667097}, //
+
20475 {4.06878519, 3.73447847}, //
+
20476 {4.06646681, 3.73157215}, //
+
20477 {4.06427431, 3.72795248}, //
+
20478 {4.06220722, 3.72361922}, //
+
20479 {4.06026649, 3.71857214}, //
+
20480 {4.05845165, 3.71281171}, //
+
20481 {4.05676317, 3.70633769}, //
+
20482 {4.0552001, 3.69915009}, //
+
20483 {4.05360556, 3.68311858}, //
+
20484 {4.0518446, 3.66666842}, //
+
20485 {4.04991674, 3.64980006}, //
+
20486 {4.047822, 3.63251305}, //
+
20487 {4.04556131, 3.61480737}, //
+
20488 {4.04313326, 3.59668326}, //
+
20489 {4.04053879, 3.57814074}, //
+
20490 {4.0377779, 3.55917954}, //
+
20491 {4.03485012, 3.53979993}, //
+
20492 {4.03188038, 3.52071357}, //
+
20493 {4.02899313, 3.50263214}, //
+
20494 {4.02618885, 3.48555565}, //
+
20495 {4.02346706, 3.46948385}, //
+
20496 {4.02082825, 3.45441723}, //
+
20497 {4.0182724, 3.44035554}, //
+
20498 {4.01579857, 3.42729878}, //
+
20499 {4.01340818, 3.41524696}, //
+
20500 {4.01109982, 3.40420008}, //
+
20501 {4.01030302, 3.39871287}, //
+
20502 {4.00942326, 3.39280748}, //
+
20503 {4.008461, 3.38648343}, //
+
20504 {4.00741625, 3.37974072}, //
+
20505 {4.00628805, 3.37257957}, //
+
20506 {4.00507784, 3.36500001}, //
+
20507 {4.00378466, 3.35700178}, //
+
20508 {4.0024085, 3.34858513}, //
+
20509 {4.00094986, 3.33975005}, //
+
20510 {3.99931359, 3.32445312}, //
+
20511 {3.99742651, 3.30869579}, //
+
20512 {3.99528885, 3.29247785}, //
+
20513 {3.99290061, 3.27579927}, //
+
20514 {3.99026179, 3.25866055}, //
+
20515 {3.98737216, 3.24106121}, //
+
20516 {3.98423219, 3.22300124}, //
+
20517 {3.9808414, 3.20448089}, //
+
20518 {3.97720003, 3.18549991}, //
+
20519 {3.97322416, 3.16639328}, //
+
20520 {3.96882963, 3.14749503}, //
+
20521 {3.96401668, 3.12880564}, //
+
20522 {3.9587853, 3.11032462}, //
+
20523 {3.95313525, 3.09205246}, //
+
20524 {3.94706678, 3.07398891}, //
+
20525 {3.94057965, 3.05613399}, //
+
20526 {3.9336741, 3.03848767}, //
+
20527 {3.92635012, 3.02104998}, //
+
20528 {3.92333817, 3.01497531}, //
+
20529 {3.92032528, 3.00881791}, //
+
20530 {3.91731119, 3.00257778}, //
+
20531 {3.91429567, 2.99625492}, //
+
20532 {3.91127896, 2.98984933}, //
+
20533 {3.90826106, 2.98336101}, //
+
20534 {3.90524197, 2.97679019}, //
+
20535 {3.90222168, 2.9701364}, //
+
20536 {3.89919996, 2.96339989}, //
+
20537 {3.88875985, 2.94303465}, //
+
20538 {3.87852836, 2.92262721}, //
+
20539 {3.86850548, 2.90217781}, //
+
20540 {3.85869145, 2.88168645}, //
+
20541 {3.84908581, 2.86115313}, //
+
20542 {3.83968878, 2.84057784}, //
+
20543 {3.8305006, 2.81996059}, //
+
20544 {3.82152104, 2.79930115}, //
+
20545 {3.8127501, 2.77859998}, //
+
20546 {3.80443954, 2.75832772}, //
+
20547 {3.79684138, 2.73893332}, //
+
20548 {3.78995562, 2.72041678}, //
+
20549 {3.78378201, 2.70277786}, //
+
20550 {3.77832103, 2.68601656}, //
+
20551 {3.77357221, 2.67013335}, //
+
20552 {3.76953578, 2.65512776}, //
+
20553 {3.76621175, 2.64100003}, //
+
20554 {3.76360011, 2.62774992}, //
+
20555 {3.75933075, 2.60581112}, //
+
20556 {3.75405669, 2.58370566}, //
+
20557 {3.7477777, 2.56143332}, //
+
20558 {3.74049377, 2.53899455}, //
+
20559 {3.73220491, 2.51638889}, //
+
20560 {3.72291112, 2.49361658}, //
+
20561 {3.71261239, 2.47067785}, //
+
20562 {3.70130873, 2.44757223}, //
+
20563 {3.68899989, 2.42429996}, //
+
20564 {3.68527532, 2.41609502}, //
+
20565 {3.68163466, 2.40805793}, //
+
20566 {3.6780777, 2.40018892}, //
+
20567 {3.67460489, 2.39248776}, //
+
20568 {3.67121601, 2.38495421}, //
+
20569 {3.66791105, 2.37758899}, //
+
20570 {3.66469002, 2.37039137}, //
+
20571 {3.66155314, 2.36336184}, //
+
20572 {3.65849996, 2.35649991}, //
+
20573 {3.65623403, 2.35055065}, //
+
20574 {3.65396905, 2.34476924}, //
+
20575 {3.6517055, 2.33915567}, //
+
20576 {3.64944315, 2.33370996}, //
+
20577 {3.64718199, 2.32843208}, //
+
20578 {3.64492226, 2.3233223}, //
+
20579 {3.64266348, 2.31838036}, //
+
20580 {3.64040613, 2.31360626}, //
+
20581 {3.63814998, 2.30900002}, //
+
20582 {3.63015437, 2.29271555}, //
+
20583 {3.62274504, 2.27701735}, //
+
20584 {3.61592221, 2.26190567}, //
+
20585 {3.6096859, 2.24738026}, //
+
20586 {3.60403585, 2.23344135}, //
+
20587 {3.59897232, 2.22008896}, //
+
20588 {3.59449506, 2.20732284}, //
+
20589 {3.59060431, 2.19514322}, //
+
20590 {3.58730006, 2.18354988}, //
+
20591 {3.58635616, 2.17650008}, //
+
20592 {3.5850358, 2.1689055}, //
+
20593 {3.58333898, 2.1607666}, //
+
20594 {3.58126545, 2.1520834}, //
+
20595 {3.57881546, 2.14285564}, //
+
20596 {3.57598901, 2.13308334}, //
+
20597 {3.57278585, 2.12276673}, //
+
20598 {3.56920624, 2.11190557}, //
+
20599 {3.56524992, 2.10050011}, //
+
20600 {3.56104255, 2.08884311}, //
+
20601 {3.55670929, 2.07722831}, //
+
20602 {3.55224991, 2.06565547}, //
+
20603 {3.54766488, 2.05412459}, //
+
20604 {3.54295373, 2.04263592}, //
+
20605 {3.53811669, 2.03118896}, //
+
20606 {3.53315377, 2.01978397}, //
+
20607 {3.52806473, 2.00842094}, //
+
20608 {3.52285004, 1.9971}, //
+
20609 {3.52063584, 1.99041605}, //
+
20610 {3.51850438, 1.98394203}, //
+
20611 {3.51645565, 1.97767782}, //
+
20612 {3.51448941, 1.97162342}, //
+
20613 {3.51260614, 1.96577907}, //
+
20614 {3.51080561, 1.9601444}, //
+
20615 {3.50908756, 1.95471978}, //
+
20616 {3.50745249, 1.94950497}, //
+
20617 {3.50589991, 1.94449997}, //
+
20618 {3.50444126, 1.93979871}, //
+
20619 {3.50306535, 1.93547285}, //
+
20620 {3.50177217, 1.93152225}, //
+
20621 {3.50056171, 1.92794693}, //
+
20622 {3.49943399, 1.92474687}, //
+
20623 {3.49838901, 1.92192221}, //
+
20624 {3.49742651, 1.91947281}, //
+
20625 {3.49654698, 1.91739881}, //
+
20626 {3.49574995, 1.91569996}, //
+
20627 {3.49574995, 1.91377163}, //
+
20628 {3.49574995, 1.91249442}, //
+
20629 {3.49574995, 1.9110086}, //
+
20630 {3.49574995, 1.90931416}, //
+
20631 {3.49574995, 1.9074111}, //
+
20632 {3.49574995, 1.90529943}, //
+
20633 {3.49574995, 1.90297902}, //
+
20634 {3.49574995, 1.8950969}, //
+
20635 {3.49574995, 1.89235556}, //
+
20636 {3.49574995, 1.88957095}, //
+
20637 {3.49574995, 1.88674319}, //
+
20638 {3.49574995, 1.88387227}, //
+
20639 {3.49574995, 1.88095808}, //
+
20640 {3.49574995, 1.87800062}, //
+
20641 {3.49574995, 1.86914325}, //
+
20642 {3.49574995, 1.86633885}, //
+
20643 {3.49574995, 1.8636173}, //
+
20644 {3.49574995, 1.86097836}, //
+
20645 {3.49574995, 1.85842228}, //
+
20646 {3.49574995, 1.85594881}, //
+
20647 {3.49574995, 1.85355806}, //
+
20648 {3.49574995, 1.84724009}, //
+
20649 {3.49574995, 1.8456111}, //
+
20650 {3.49574995, 1.84310496}, //
+
20651 {3.49574995, 1.84222782}, //
+
20652 {3.49574995, 1.84160125}, //
+
20653 {3.49574995, 1.84109998}, //
+
20654 {3.37365007, 1.81060004}, //
+
20655 });
+
20656 polys.push_back({
+
20657 {3.12283397, 1.75641239}, //
+
20658 {3.12308574, 1.75659943}, //
+
20659 {3.12350559, 1.75691116}, //
+
20660 {3.12409329, 1.75734758}, //
+
20661 {3.12484884, 1.75790858}, //
+
20662 {3.12577224, 1.75859439}, //
+
20663 {3.12686348, 1.7594049}, //
+
20664 {3.12812281, 1.76034009}, //
+
20665 {3.12954998, 1.76139998}, //
+
20666 {3.13108158, 1.76259565}, //
+
20667 {3.13265371, 1.76391602}, //
+
20668 {3.13426661, 1.76536107}, //
+
20669 {3.13592029, 1.76693082}, //
+
20670 {3.13761473, 1.76862526}, //
+
20671 {3.13934994, 1.77044439}, //
+
20672 {3.14112592, 1.77238822}, //
+
20673 {3.14294267, 1.77445674}, //
+
20674 {3.14479995, 1.77664995}, //
+
20675 {3.14666724, 1.77895808}, //
+
20676 {3.14849138, 1.78134882}, //
+
20677 {3.15027213, 1.78382218}, //
+
20678 {3.15200996, 1.78637838}, //
+
20679 {3.1537044, 1.78901732}, //
+
20680 {3.15535545, 1.79173887}, //
+
20681 {3.15696359, 1.79454327}, //
+
20682 {3.15852833, 1.79743028}, //
+
20683 {3.16004992, 1.80040002}, //
+
20684 {3.16172838, 1.80300128}, //
+
20685 {3.16374135, 1.80627155}, //
+
20686 {3.16608882, 1.81021106}, //
+
20687 {3.16877103, 1.81481969}, //
+
20688 {3.17178774, 1.82009757}, //
+
20689 {3.17513895, 1.82604444}, //
+
20690 {3.17882466, 1.83266044}, //
+
20691 {3.18284512, 1.83994567}, //
+
20692 {3.18720007, 1.84790003}, //
+
20693 {3.1947124, 1.85711169}, //
+
20694 {3.20218277, 1.86665797}, //
+
20695 {3.20961118, 1.87653887}, //
+
20696 {3.21699762, 1.88675427}, //
+
20697 {3.22434187, 1.8973043}, //
+
20698 {3.23164439, 1.90818894}, //
+
20699 {3.23890495, 1.91940808}, //
+
20700 {3.24612355, 1.93096173}, //
+
20701 {3.25329995, 1.94284999}, //
+
20702 {3.26022601, 1.95473766}, //
+
20703 {3.26669264, 1.96628952}, //
+
20704 {3.27270007, 1.97750556}, //
+
20705 {3.27824807, 1.9883858}, //
+
20706 {3.28333712, 1.99893022}, //
+
20707 {3.28796673, 2.00913882}, //
+
20708 {3.29213715, 2.01901174}, //
+
20709 {3.29584813, 2.02854872}, //
+
20710 {3.29909992, 2.03775001}, //
+
20711 {3.30148149, 2.04574442}, //
+
20712 {3.30411482, 2.05466104}, //
+
20713 {3.30699992, 2.06450009}, //
+
20714 {3.31013703, 2.07526112}, //
+
20715 {3.31352592, 2.08694434}, //
+
20716 {3.31716657, 2.09955001}, //
+
20717 {3.32105923, 2.11307788}, //
+
20718 {3.32520366, 2.12752771}, //
+
20719 {3.3296001, 2.14289999}, //
+
20720 {3.33340859, 2.15792465}, //
+
20721 {3.33730125, 2.17286539}, //
+
20722 {3.34127784, 2.18772221}, //
+
20723 {3.34533834, 2.2024951}, //
+
20724 {3.34948277, 2.21718407}, //
+
20725 {3.35371113, 2.23178887}, //
+
20726 {3.35802341, 2.24631}, //
+
20727 {3.36241984, 2.26074696}, //
+
20728 {3.36689997, 2.27509999}, //
+
20729 {3.37133837, 2.28908706}, //
+
20730 {3.37560868, 2.30240369}, //
+
20731 {3.37971115, 2.31504989}, //
+
20732 {3.38364577, 2.32702589}, //
+
20733 {3.38741231, 2.33833146}, //
+
20734 {3.391011, 2.3489666}, //
+
20735 {3.39444208, 2.35893154}, //
+
20736 {3.39770484, 2.36822581}, //
+
20737 {3.40079999, 2.37684989}, //
+
20738 {3.40532231, 2.39174747}, //
+
20739 {3.4098444, 2.40781784}, //
+
20740 {3.41436672, 2.42506123}, //
+
20741 {3.41888881, 2.44347715}, //
+
20742 {3.42341113, 2.4630661}, //
+
20743 {3.42793322, 2.48382783}, //
+
20744 {3.43245554, 2.50576234}, //
+
20745 {3.43697786, 2.52886987}, //
+
20746 {3.44149995, 2.55314994}, //
+
20747 {3.44676733, 2.57692599}, //
+
20748 {3.4520359, 2.60003138}, //
+
20749 {3.45730567, 2.62246656}, //
+
20750 {3.46257663, 2.64423156}, //
+
20751 {3.46784878, 2.66532588}, //
+
20752 {3.47312212, 2.68575001}, //
+
20753 {3.47839689, 2.7055037}, //
+
20754 {3.48367286, 2.72458696}, //
+
20755 {3.48895001, 2.74300003}, //
+
20756 {3.49879146, 2.77669573}, //
+
20757 {3.50871539, 2.81449389}, //
+
20758 {3.5187223, 2.85639453}, //
+
20759 {3.52881169, 2.90239763}, //
+
20760 {3.53898406, 2.9525032}, //
+
20761 {3.54923892, 3.00671101}, //
+
20762 {3.55957651, 3.06502151}, //
+
20763 {3.56999683, 3.12743449}, //
+
20764 {3.58049989, 3.19394994}, //
+
20765 {3.58550549, 3.2321105}, //
+
20766 {3.58996677, 3.26972532}, //
+
20767 {3.59388328, 3.3067944}, //
+
20768 {3.59725547, 3.34331799}, //
+
20769 {3.60008335, 3.37929559}, //
+
20770 {3.60236669, 3.41472769}, //
+
20771 {3.60410547, 3.44961429}, //
+
20772 {3.60529995, 3.48395491}, //
+
20773 {3.60595012, 3.51775002}, //
+
20774 {3.60622287, 3.54988098}, //
+
20775 {3.60628581, 3.57920671}, //
+
20776 {3.60613894, 3.60572767}, //
+
20777 {3.60578203, 3.62944388}, //
+
20778 {3.60521555, 3.65035486}, //
+
20779 {3.60443878, 3.66846108}, //
+
20780 {3.60345244, 3.68376231}, //
+
20781 {3.60225606, 3.69625854}, //
+
20782 {3.60085011, 3.70595002}, //
+
20783 {3.60085011, 3.71163893}, //
+
20784 {3.60085011, 3.71666121}, //
+
20785 {3.60085011, 3.7229445}, //
+
20786 {3.60085011, 3.72470546}, //
+
20787 {3.60085011, 3.7263}, //
+
20788 {3.60087109, 3.72776842}, //
+
20789 {3.60093403, 3.72915196}, //
+
20790 {3.60103893, 3.73044991}, //
+
20791 {3.6011858, 3.73166299}, //
+
20792 {3.60137463, 3.73279071}, //
+
20793 {3.60160565, 3.73383331}, //
+
20794 {3.6018784, 3.7347908}, //
+
20795 {3.60219312, 3.73566294}, //
+
20796 {3.60255003, 3.73644996}, //
+
20797 {3.60294867, 3.73720551}, //
+
20798 {3.6033895, 3.73796105}, //
+
20799 {3.6038723, 3.7387166}, //
+
20800 {3.60439682, 3.73947215}, //
+
20801 {3.60496354, 3.7402277}, //
+
20802 {3.60557222, 3.74098325}, //
+
20803 {3.60622287, 3.7417388}, //
+
20804 {3.60691547, 3.74249434}, //
+
20805 {3.60765004, 3.74324989}, //
+
20806 {3.6083951, 3.74331236}, //
+
20807 {3.60914135, 3.74349928}, //
+
20808 {3.60988879, 3.74381113}, //
+
20809 {3.61063766, 3.74424744}, //
+
20810 {3.61138773, 3.74480867}, //
+
20811 {3.61213899, 3.74549437}, //
+
20812 {3.61289144, 3.74630499}, //
+
20813 {3.61364508, 3.74724007}, //
+
20814 {3.61439991, 3.74830008}, //
+
20815 {3.6151135, 3.74949622}, //
+
20816 {3.61574316, 3.75081849}, //
+
20817 {3.6162889, 3.75226665}, //
+
20818 {3.61675072, 3.75384068}, //
+
20819 {3.61712837, 3.75554085}, //
+
20820 {3.6174221, 3.75736666}, //
+
20821 {3.61763215, 3.75931859}, //
+
20822 {3.61775804, 3.76139641}, //
+
20823 {3.6178, 3.76360011}, //
+
20824 {3.61765313, 3.76801729}, //
+
20825 {3.6172123, 3.77222466}, //
+
20826 {3.61647773, 3.77622223}, //
+
20827 {3.61544943, 3.78000998}, //
+
20828 {3.61412716, 3.78358769}, //
+
20829 {3.61251116, 3.7869556}, //
+
20830 {3.61060119, 3.79011369}, //
+
20831 {3.60839748, 3.79306173}, //
+
20832 {3.60590005, 3.79579997}, //
+
20833 {3.60324574, 3.798455}, //
+
20834 {3.60054946, 3.80115318}, //
+
20835 {3.59781122, 3.80389452}, //
+
20836 {3.59503078, 3.80667901}, //
+
20837 {3.59220862, 3.80950689}, //
+
20838 {3.5893445, 3.81237769}, //
+
20839 {3.58643818, 3.81529188}, //
+
20840 {3.58349013, 3.81824946}, //
+
20841 {3.58049989, 3.82124996}, //
+
20842 {3.57844329, 3.8233068}, //
+
20843 {3.57781363, 3.82393646}, //
+
20844 {3.57710004, 3.82465005}, //
+
20845 {3.5753901, 3.82539511}, //
+
20846 {3.57326055, 3.82614136}, //
+
20847 {3.57071114, 3.8268888}, //
+
20848 {3.56774187, 3.82763767}, //
+
20849 {3.56435299, 3.82838774}, //
+
20850 {3.56054449, 3.82913899}, //
+
20851 {3.55631614, 3.82989144}, //
+
20852 {3.55166793, 3.83064508}, //
+
20853 {3.5466001, 3.83139992}, //
+
20854 {3.54128027, 3.83215547}, //
+
20855 {3.53587651, 3.83291101}, //
+
20856 {3.53038883, 3.83366656}, //
+
20857 {3.52481723, 3.83442211}, //
+
20858 {3.5191617, 3.83517766}, //
+
20859 {3.51342225, 3.83593345}, //
+
20860 {3.50759888, 3.836689}, //
+
20861 {3.50169134, 3.83744454}, //
+
20862 {3.49569988, 3.83820009}, //
+
20863 {3.48974013, 3.83893394}, //
+
20864 {3.48390484, 3.83962464}, //
+
20865 {3.47819448, 3.84027219}, //
+
20866 {3.47260857, 3.84087658}, //
+
20867 {3.46714759, 3.84143758}, //
+
20868 {3.46181107, 3.84195566}, //
+
20869 {3.45659947, 3.84243035}, //
+
20870 {3.45151234, 3.84286165}, //
+
20871 {3.44654989, 3.84325004}, //
+
20872 {3.43785858, 3.84392166}, //
+
20873 {3.43432784, 3.84419441}, //
+
20874 {3.42563653, 3.84486604}, //
+
20875 {3.42482162, 3.84492898}, //
+
20876 {3.42455006, 3.84494996}, //
+
20877 {3.44229126, 3.84637713}, //
+
20878 {3.46087098, 3.84763646}, //
+
20879 {3.48028898, 3.8487277}, //
+
20880 {3.50054502, 3.84965134}, //
+
20881 {3.52163959, 3.85040689}, //
+
20882 {3.54357219, 3.85099435}, //
+
20883 {3.56634331, 3.8514142}, //
+
20884 {3.58995247, 3.85166597}, //
+
20885 {3.61439991, 3.8517499}, //
+
20886 {3.63457727, 3.85250545}, //
+
20887 {3.65441966, 3.85326099}, //
+
20888 {3.67392778, 3.85401678}, //
+
20889 {3.69310117, 3.85477233}, //
+
20890 {3.71194005, 3.85552788}, //
+
20891 {3.73044443, 3.85628343}, //
+
20892 {3.74861431, 3.85703897}, //
+
20893 {3.76644945, 3.85779452}, //
+
20894 {3.78395009, 3.85855007}, //
+
20895 {3.7846427, 3.85852909}, //
+
20896 {3.78520918, 3.85846615}, //
+
20897 {3.78565001, 3.85836101}, //
+
20898 {3.78596473, 3.85821414}, //
+
20899 {3.78615379, 3.85802531}, //
+
20900 {3.78621674, 3.85779452}, //
+
20901 {3.78615379, 3.85752153}, //
+
20902 {3.78596473, 3.85720682}, //
+
20903 {3.78565001, 3.85684991}, //
+
20904 {3.78520918, 3.85645127}, //
+
20905 {3.7846427, 3.85601044}, //
+
20906 {3.78395009, 3.85552788}, //
+
20907 {3.7831316, 3.85500312}, //
+
20908 {3.78218699, 3.8544364}, //
+
20909 {3.78111672, 3.85382771}, //
+
20910 {3.77992034, 3.85317707}, //
+
20911 {3.77859807, 3.85248446}, //
+
20912 {3.77714992, 3.8517499}, //
+
20913 {3.77564931, 3.85099435}, //
+
20914 {3.77414751, 3.8502388}, //
+
20915 {3.77264452, 3.84948325}, //
+
20916 {3.7711401, 3.8487277}, //
+
20917 {3.76963449, 3.84797215}, //
+
20918 {3.76812768, 3.84721661}, //
+
20919 {3.76661968, 3.84646106}, //
+
20920 {3.76511049, 3.84570551}, //
+
20921 {3.76360011, 3.84494996}, //
+
20922 {3.76063013, 3.84347034}, //
+
20923 {3.75774312, 3.84203148}, //
+
20924 {3.75493884, 3.84063339}, //
+
20925 {3.75221729, 3.83927584}, //
+
20926 {3.74957848, 3.83795929}, //
+
20927 {3.74702215, 3.83668327}, //
+
20928 {3.7445488, 3.83544827}, //
+
20929 {3.74215794, 3.83425379}, //
+
20930 {3.73985004, 3.83310008}, //
+
20931 {3.73767781, 3.83198833}, //
+
20932 {3.73567224, 3.83091974}, //
+
20933 {3.73383331, 3.82989454}, //
+
20934 {3.73216105, 3.82891226}, //
+
20935 {3.73065567, 3.82797337}, //
+
20936 {3.72931671, 3.82707787}, //
+
20937 {3.72814441, 3.82622528}, //
+
20938 {3.727139, 3.82541609}, //
+
20939 {3.7263, 3.82465005}, //
+
20940 {3.72632098, 3.8238945}, //
+
20941 {3.72638392, 3.82313895}, //
+
20942 {3.72648883, 3.8223834}, //
+
20943 {3.72663569, 3.82162786}, //
+
20944 {3.72682476, 3.82087231}, //
+
20945 {3.72705555, 3.82011676}, //
+
20946 {3.7273283, 3.81936121}, //
+
20947 {3.72764325, 3.81860566}, //
+
20948 {3.72799993, 3.81785011}, //
+
20949 {3.7283988, 3.81709433}, //
+
20950 {3.7288394, 3.81633878}, //
+
20951 {3.7293222, 3.81558323}, //
+
20952 {3.72984695, 3.81482768}, //
+
20953 {3.73041368, 3.81407213}, //
+
20954 {3.73102212, 3.81331658}, //
+
20955 {3.73167276, 3.81256104}, //
+
20956 {3.73236537, 3.81180549}, //
+
20957 {3.73309994, 3.81104994}, //
+
20958 {3.73464203, 3.81021118}, //
+
20959 {3.73626781, 3.80920553}, //
+
20960 {3.73797774, 3.80803323}, //
+
20961 {3.7397716, 3.80669451}, //
+
20962 {3.74164939, 3.80518889}, //
+
20963 {3.7436111, 3.80351663}, //
+
20964 {3.74565673, 3.8016777}, //
+
20965 {3.74778652, 3.79967213}, //
+
20966 {3.75, 3.7974999}, //
+
20967 {3.75218272, 3.79507661}, //
+
20968 {3.7541976, 3.79231739}, //
+
20969 {3.75604439, 3.78922224}, //
+
20970 {3.75772357, 3.7857914}, //
+
20971 {3.75923467, 3.78202462}, //
+
20972 {3.76057768, 3.77792215}, //
+
20973 {3.76175308, 3.77348399}, //
+
20974 {3.7627604, 3.7687099}, //
+
20975 {3.76360011, 3.76360011}, //
+
20976 {3.76623631, 3.7426734}, //
+
20977 {3.76661229, 3.71756053}, //
+
20978 {3.76472783, 3.68826103}, //
+
20979 {3.76058269, 3.65477538}, //
+
20980 {3.75417709, 3.6171031}, //
+
20981 {3.74551105, 3.57524443}, //
+
20982 {3.73458457, 3.52919936}, //
+
20983 {3.72139764, 3.47896791}, //
+
20984 {3.70595002, 3.42455006}, //
+
20985 {3.70067286, 3.40106058}, //
+
20986 {3.6953969, 3.3758142}, //
+
20987 {3.69012213, 3.34881115}, //
+
20988 {3.68484879, 3.32005119}, //
+
20989 {3.67957664, 3.28953457}, //
+
20990 {3.67430544, 3.25726104}, //
+
20991 {3.66903591, 3.22323084}, //
+
20992 {3.66376734, 3.18744373}, //
+
20993 {3.65849996, 3.14989996}, //
+
20994 {3.65042233, 3.09853458}, //
+
20995 {3.64125562, 3.04390502}, //
+
20996 {3.63100004, 2.98601103}, //
+
20997 {3.61965561, 2.92485309}, //
+
20998 {3.60722232, 2.86043096}, //
+
20999 {3.59369993, 2.7927444}, //
+
21000 {3.57908893, 2.72179389}, //
+
21001 {3.56338882, 2.64757895}, //
+
21002 {3.5466001, 2.57010007}, //
+
21003 {3.53427219, 2.52374434}, //
+
21004 {3.52139997, 2.47810006}, //
+
21005 {3.50798345, 2.43316674}, //
+
21006 {3.49402213, 2.38894439}, //
+
21007 {3.47951674, 2.34543324}, //
+
21008 {3.46446657, 2.30263329}, //
+
21009 {3.44887233, 2.26054454}, //
+
21010 {3.4327333, 2.21916676}, //
+
21011 {3.41604996, 2.17849994}, //
+
21012 {3.39928269, 2.13906789}, //
+
21013 {3.38289189, 2.10139394}, //
+
21014 {3.36687779, 2.06547785}, //
+
21015 {3.35124016, 2.03131986}, //
+
21016 {3.33597898, 1.99891973}, //
+
21017 {3.32109451, 1.96827781}, //
+
21018 {3.3065865, 1.93939388}, //
+
21019 {3.29245496, 1.91226792}, //
+
21020 {3.27870011, 1.88689995}, //
+
21021 {3.24481106, 1.82567775}, //
+
21022 {3.22447777, 1.78894448}, //
+
21023 {3.21845317, 1.77806044}, //
+
21024 {3.2177, 1.77670002}, //
+
21025 {3.12275004, 1.75635004}, //
+
21026 });
+
21027 polys.push_back({
+
21028 {3.05346799, 3.35645294}, //
+
21029 {3.05049515, 3.36041307}, //
+
21030 {3.04703879, 3.3650167}, //
+
21031 {3.04295421, 3.37045741}, //
+
21032 {3.03290009, 3.3838501}, //
+
21033 {3.02719188, 3.39167643}, //
+
21034 {3.02135682, 3.4000895}, //
+
21035 {3.01539445, 3.40908885}, //
+
21036 {3.009305, 3.41867471}, //
+
21037 {3.00308824, 3.42884684}, //
+
21038 {2.99674439, 3.43960547}, //
+
21039 {2.99027348, 3.45095062}, //
+
21040 {2.98367524, 3.46288204}, //
+
21041 {2.97694993, 3.47539997}, //
+
21042 {2.97330928, 3.48431849}, //
+
21043 {2.9699204, 3.49298525}, //
+
21044 {2.96678329, 3.50139999}, //
+
21045 {2.96389818, 3.50956297}, //
+
21046 {2.96126485, 3.51747417}, //
+
21047 {2.95888329, 3.52513337}, //
+
21048 {2.95675373, 3.5325408}, //
+
21049 {2.95487595, 3.53969622}, //
+
21050 {2.95324993, 3.5466001}, //
+
21051 {2.9515717, 3.55421734}, //
+
21052 {2.94955873, 3.56200242}, //
+
21053 {2.94721103, 3.56995559}, //
+
21054 {2.94452906, 3.5780766}, //
+
21055 {2.94151235, 3.58636546}, //
+
21056 {2.93816113, 3.59482217}, //
+
21057 {2.93447542, 3.60344696}, //
+
21058 {2.93045497, 3.6122396}, //
+
21059 {2.92610002, 3.62120008}, //
+
21060 {2.92128515, 3.63053703}, //
+
21061 {2.91588521, 3.6404593}, //
+
21062 {2.90989995, 3.65096664}, //
+
21063 {2.90332961, 3.66205931}, //
+
21064 {2.89617419, 3.67373705}, //
+
21065 {2.88843322, 3.68600011}, //
+
21066 {2.8801074, 3.69884825}, //
+
21067 {2.87119627, 3.71228147}, //
+
21068 {2.86170006, 3.7263}, //
+
21069 {2.85118651, 3.73865056}, //
+
21070 {2.84075689, 3.75008035}, //
+
21071 {2.8304112, 3.76058888}, //
+
21072 {2.82014942, 3.77017665}, //
+
21073 {2.80997157, 3.77884316}, //
+
21074 {2.79987788, 3.78658891}, //
+
21075 {2.78986788, 3.79341364}, //
+
21076 {2.77994204, 3.79931736}, //
+
21077 {2.77010012, 3.80430007}, //
+
21078 {2.76039433, 3.80861235}, //
+
21079 {2.75085545, 3.81250501}, //
+
21080 {2.74148345, 3.81597781}, //
+
21081 {2.73227787, 3.81903076}, //
+
21082 {2.72323895, 3.82166409}, //
+
21083 {2.71436667, 3.82387781}, //
+
21084 {2.70566106, 3.82567167}, //
+
21085 {2.69712234, 3.82704568}, //
+
21086 {2.68875003, 3.82800007}, //
+
21087 {2.68502522, 3.82875562}, //
+
21088 {2.68138456, 3.82951117}, //
+
21089 {2.67782784, 3.83026671}, //
+
21090 {2.67435503, 3.83102226}, //
+
21091 {2.67096615, 3.83177781}, //
+
21092 {2.66766119, 3.83253336}, //
+
21093 {2.66444016, 3.83328891}, //
+
21094 {2.66130304, 3.83404446}, //
+
21095 {2.65825009, 3.8348}, //
+
21096 {2.647789, 3.83631039}, //
+
21097 {2.63749433, 3.83781981}, //
+
21098 {2.62736678, 3.83932781}, //
+
21099 {2.61740565, 3.84083462}, //
+
21100 {2.60761118, 3.84234023}, //
+
21101 {2.59798336, 3.84384441}, //
+
21102 {2.5885222, 3.84534764}, //
+
21103 {2.57922769, 3.84684944}, //
+
21104 {2.57010007, 3.84835005}, //
+
21105 {2.56415129, 3.8491056}, //
+
21106 {2.55837154, 3.84986115}, //
+
21107 {2.55276108, 3.85061669}, //
+
21108 {2.54731965, 3.85137224}, //
+
21109 {2.5420475, 3.85212779}, //
+
21110 {2.53694439, 3.85288334}, //
+
21111 {2.53201056, 3.85363889}, //
+
21112 {2.52724576, 3.85439444}, //
+
21113 {2.52265, 3.85514998}, //
+
21114 {2.53084683, 3.85412169}, //
+
21115 {2.53620005, 3.85345006}, //
+
21116 {2.53933644, 3.85307217}, //
+
21117 {2.54272342, 3.85269451}, //
+
21118 {2.54636121, 3.85231662}, //
+
21119 {2.55024934, 3.85193896}, //
+
21120 {2.55438828, 3.85156107}, //
+
21121 {2.55877781, 3.85118341}, //
+
21122 {2.56341791, 3.85080552}, //
+
21123 {2.56830859, 3.85042787}, //
+
21124 {2.57345009, 3.85004997}, //
+
21125 {2.57870674, 3.84967232}, //
+
21126 {2.58392167, 3.84929442}, //
+
21127 {2.5890944, 3.84891677}, //
+
21128 {2.59422541, 3.84853888}, //
+
21129 {2.59931421, 3.84816122}, //
+
21130 {2.60436106, 3.84778333}, //
+
21131 {2.60936594, 3.84740567}, //
+
21132 {2.6143291, 3.84702778}, //
+
21133 {2.61925006, 3.84664989}, //
+
21134 {2.6240871, 3.84629321}, //
+
21135 {2.62879825, 3.8459785}, //
+
21136 {2.63338327, 3.84570551}, //
+
21137 {2.63784266, 3.84547472}, //
+
21138 {2.64217591, 3.84528589}, //
+
21139 {2.64638329, 3.84513879}, //
+
21140 {2.65046477, 3.84503388}, //
+
21141 {2.65442038, 3.84497094}, //
+
21142 {2.65825009, 3.84494996}, //
+
21143 {2.66750312, 3.84401655}, //
+
21144 {2.67717338, 3.84270549}, //
+
21145 {2.6872611, 3.84101677}, //
+
21146 {2.69776607, 3.83894992}, //
+
21147 {2.70868826, 3.83650565}, //
+
21148 {2.72002769, 3.83368325}, //
+
21149 {2.73178458, 3.83048344}, //
+
21150 {2.74395871, 3.82690549}, //
+
21151 {2.75655007, 3.82294989}, //
+
21152 {2.76906848, 3.81878448}, //
+
21153 {2.78100181, 3.8145771}, //
+
21154 {2.79235005, 3.81032777}, //
+
21155 {2.80311298, 3.80603647}, //
+
21156 {2.81329083, 3.80170298}, //
+
21157 {2.82288337, 3.79732776}, //
+
21158 {2.83189082, 3.79291058}, //
+
21159 {2.84031296, 3.78845119}, //
+
21160 {2.84815001, 3.78395009}, //
+
21161 {2.8572464, 3.77947164}, //
+
21162 {2.86646843, 3.77356982}, //
+
21163 {2.87581658, 3.76624441}, //
+
21164 {2.88529062, 3.75749564}, //
+
21165 {2.89489079, 3.74732351}, //
+
21166 {2.90461659, 3.73572779}, //
+
21167 {2.91446853, 3.7227087}, //
+
21168 {2.92444634, 3.70826602}, //
+
21169 {2.93455005, 3.69239998}, //
+
21170 {2.94449759, 3.6754458}, //
+
21171 {2.9539845, 3.65773821}, //
+
21172 {2.96301103, 3.6392777}, //
+
21173 {2.97157717, 3.62006426}, //
+
21174 {2.97968268, 3.60009742}, //
+
21175 {2.98732781, 3.57937789}, //
+
21176 {2.99451232, 3.55790496}, //
+
21177 {3.00123644, 3.5356791}, //
+
21178 {3.00749993, 3.51270008}, //
+
21179 {3.00902104, 3.50524998}, //
+
21180 {3.01058388, 3.49796677}, //
+
21181 {3.01218891, 3.49084997}, //
+
21182 {3.01383591, 3.48390007}, //
+
21183 {3.01552463, 3.47711658}, //
+
21184 {3.01725554, 3.47049999}, //
+
21185 {3.01902843, 3.46405005}, //
+
21186 {3.02084327, 3.45776677}, //
+
21187 {3.02270007, 3.4516499}, //
+
21188 {3.02454686, 3.4457531}, //
+
21189 {3.02630997, 3.44010687}, //
+
21190 {3.02798891, 3.43471122}, //
+
21191 {3.02958393, 3.42956614}, //
+
21192 {3.03109503, 3.42467165}, //
+
21193 {3.0325222, 3.42002773}, //
+
21194 {3.03386545, 3.41563463}, //
+
21195 {3.03512478, 3.41149187}, //
+
21196 {3.03629994, 3.40759993}, //
+
21197 {3.03741169, 3.40389562}, //
+
21198 {3.03848028, 3.400316}, //
+
21199 {3.03950548, 3.39686108}, //
+
21200 {3.04048777, 3.39353085}, //
+
21201 {3.04142666, 3.39032531}, //
+
21202 {3.04232216, 3.38724446}, //
+
21203 {3.04317474, 3.38428831}, //
+
21204 {3.04398394, 3.38145685}, //
+
21205 {3.04474998, 3.37875009}, //
+
21206 {3.04550552, 3.37617898}, //
+
21207 {3.04626107, 3.37373281}, //
+
21208 {3.04701662, 3.37141109}, //
+
21209 {3.04777217, 3.3692143}, //
+
21210 {3.04852772, 3.36714196}, //
+
21211 {3.04928327, 3.36519456}, //
+
21212 {3.05003881, 3.36337161}, //
+
21213 {3.05079436, 3.36167336}, //
+
21214 {3.05154991, 3.36010003}, //
+
21215 {3.05228448, 3.35866237}, //
+
21216 {3.05297709, 3.3573494}, //
+
21217 });
+
21218 polys.push_back({
+
21219 {2.94476104, 1.73942101}, //
+
21220 {2.94137216, 1.73948395}, //
+
21221 {2.93798327, 1.73958886}, //
+
21222 {2.93459439, 1.73973584}, //
+
21223 {2.93120551, 1.73992467}, //
+
21224 {2.92781663, 1.74015558}, //
+
21225 {2.92442775, 1.74042845}, //
+
21226 {2.92103887, 1.74074316}, //
+
21227 {2.91764998, 1.74109995}, //
+
21228 {2.91432357, 1.74145675}, //
+
21229 {2.91112161, 1.74177158}, //
+
21230 {2.90804434, 1.74204445}, //
+
21231 {2.905092, 1.74227536}, //
+
21232 {2.90226412, 1.74246418}, //
+
21233 {2.89956117, 1.74261117}, //
+
21234 {2.89698267, 1.74271607}, //
+
21235 {2.8945291, 1.74277902}, //
+
21236 {2.89219999, 1.7428}, //
+
21237 {2.88205004, 1.7428}, //
+
21238 {2.92725611, 1.80839264}, //
+
21239 {2.96794128, 1.8695482}, //
+
21240 {3.00410557, 1.92626667}, //
+
21241 {3.03574872, 1.97854817}, //
+
21242 {3.06287098, 2.0263927}, //
+
21243 {3.08547211, 2.0697999}, //
+
21244 {3.10355258, 2.10877037}, //
+
21245 {3.11711168, 2.14330363}, //
+
21246 {3.12614989, 2.17339993}, //
+
21247 {3.12989569, 2.18783712}, //
+
21248 {3.13359928, 2.20252585}, //
+
21249 {3.13726115, 2.21746659}, //
+
21250 {3.14088082, 2.23265934}, //
+
21251 {3.14445853, 2.24810362}, //
+
21252 {3.14799452, 2.26379991}, //
+
21253 {3.1514883, 2.2797482}, //
+
21254 {3.15494013, 2.29594827}, //
+
21255 {3.15834999, 2.3124001}, //
+
21256 {3.1616025, 2.32885194}, //
+
21257 {3.16455984, 2.34505177}, //
+
21258 {3.16722226, 2.36100006}, //
+
21259 {3.16958952, 2.37669635}, //
+
21260 {3.17166162, 2.39214063}, //
+
21261 {3.17343879, 2.40733337}, //
+
21262 {3.17492104, 2.42227411}, //
+
21263 {3.17610812, 2.43696308}, //
+
21264 {3.17700005, 2.45140004}, //
+
21265 {3.17855239, 2.46216416}, //
+
21266 {3.1801877, 2.47334576}, //
+
21267 {3.18190551, 2.48494434}, //
+
21268 {3.18370628, 2.4969604}, //
+
21269 {3.18558955, 2.50939393}, //
+
21270 {3.18755555, 2.52224445}, //
+
21271 {3.18960428, 2.53551245}, //
+
21272 {3.19173574, 2.54919744}, //
+
21273 {3.19394994, 2.56329989}, //
+
21274 {3.19838881, 2.58189082}, //
+
21275 {3.20266104, 2.60148525}, //
+
21276 {3.20676661, 2.62208343}, //
+
21277 {3.21070552, 2.6436851}, //
+
21278 {3.21447778, 2.66629076}, //
+
21279 {3.21808338, 2.68989992}, //
+
21280 {3.22152233, 2.71451306}, //
+
21281 {3.22479439, 2.74012971}, //
+
21282 {3.22790003, 2.7667501}, //
+
21283 {3.22864509, 2.77629805}, //
+
21284 {3.22939134, 2.78534269}, //
+
21285 {3.23013878, 2.79388332}, //
+
21286 {3.23088765, 2.80192041}, //
+
21287 {3.23163772, 2.80945373}, //
+
21288 {3.23238897, 2.81648326}, //
+
21289 {3.23314142, 2.82300925}, //
+
21290 {3.23389506, 2.82903147}, //
+
21291 {3.2346499, 2.8345499}, //
+
21292 {3.23542595, 2.83968091}, //
+
21293 {3.23624253, 2.84451795}, //
+
21294 {3.23709989, 2.84906101}, //
+
21295 {3.23799825, 2.85331059}, //
+
21296 {3.23893714, 2.85726595}, //
+
21297 {3.23991656, 2.86092782}, //
+
21298 {3.24093699, 2.86429572}, //
+
21299 {3.2419982, 2.86736965}, //
+
21300 {3.24309993, 2.87015009}, //
+
21301 {3.24421239, 2.87277293}, //
+
21302 {3.24528265, 2.87535238}, //
+
21303 {3.24631119, 2.87788892}, //
+
21304 {3.24729753, 2.88038206}, //
+
21305 {3.2482419, 2.88283205}, //
+
21306 {3.24914455, 2.88523889}, //
+
21307 {3.25000501, 2.88760257}, //
+
21308 {3.2508235, 2.88992286}, //
+
21309 {3.25160003, 2.89219999}, //
+
21310 {3.25308943, 2.8945291}, //
+
21311 {3.25453591, 2.89698267}, //
+
21312 {3.25593901, 2.89956117}, //
+
21313 {3.25729871, 2.90226412}, //
+
21314 {3.25861549, 2.905092}, //
+
21315 {3.25988889, 2.90804434}, //
+
21316 {3.26111913, 2.91112161}, //
+
21317 {3.26230621, 2.91432357}, //
+
21318 {3.26344991, 2.91764998}, //
+
21319 {3.26460433, 2.92131114}, //
+
21320 {3.26580071, 2.92551661}, //
+
21321 {3.26703882, 2.93026662}, //
+
21322 {3.26831913, 2.93556118}, //
+
21323 {3.2696414, 2.94140005}, //
+
21324 {3.27100563, 2.94778323}, //
+
21325 {3.27241182, 2.9547112}, //
+
21326 {3.27385998, 2.96218324}, //
+
21327 {3.27535009, 2.97020006}, //
+
21328 {3.27896976, 2.9849093}, //
+
21329 {3.2822957, 3.00041485}, //
+
21330 {3.28532767, 3.01671672}, //
+
21331 {3.28806615, 3.03381491}, //
+
21332 {3.29051042, 3.05170918}, //
+
21333 {3.29266119, 3.0704}, //
+
21334 {3.29451799, 3.08988714}, //
+
21335 {3.29608083, 3.11017036}, //
+
21336 {3.29734993, 3.1312499}, //
+
21337 {3.29842043, 3.15258098}, //
+
21338 {3.29936481, 3.17361784}, //
+
21339 {3.3001833, 3.19436121}, //
+
21340 {3.3008759, 3.21481061}, //
+
21341 {3.30144262, 3.23496604}, //
+
21342 {3.30188322, 3.25482774}, //
+
21343 {3.30219817, 3.2743957}, //
+
21344 {3.302387, 3.2936697}, //
+
21345 {3.30244994, 3.31264997}, //
+
21346 {3.30244994, 3.32449627}, //
+
21347 {3.30244994, 3.33592415}, //
+
21348 {3.30244994, 3.40420008}, //
+
21349 {3.30303764, 3.42090297}, //
+
21350 {3.30328941, 3.43785667}, //
+
21351 {3.30320549, 3.4550612}, //
+
21352 {3.30278587, 3.47251606}, //
+
21353 {3.30203032, 3.4902215}, //
+
21354 {3.30093884, 3.50817776}, //
+
21355 {3.29951167, 3.52638459}, //
+
21356 {3.2977488, 3.544842}, //
+
21357 {3.29565001, 3.56355}, //
+
21358 {3.29301786, 3.58225799}, //
+
21359 {3.2896328, 3.6007154}, //
+
21360 {3.28549433, 3.61892223}, //
+
21361 {3.28060317, 3.63687849}, //
+
21362 {3.27495861, 3.65458393}, //
+
21363 {3.26856112, 3.67203879}, //
+
21364 {3.26141047, 3.68924332}, //
+
21365 {3.2535069, 3.70619702}, //
+
21366 {3.24484992, 3.72289991}, //
+
21367 {3.23860741, 3.7338655}, //
+
21368 {3.23194623, 3.74416184}, //
+
21369 {3.22486663, 3.75378895}, //
+
21370 {3.2173686, 3.76274681}, //
+
21371 {3.20945191, 3.77103591}, //
+
21372 {3.20111656, 3.77865553}, //
+
21373 {3.19236302, 3.78560615}, //
+
21374 {3.18319082, 3.79188776}, //
+
21375 {3.17359996, 3.7974999}, //
+
21376 {3.16383147, 3.80258894}, //
+
21377 {3.15410376, 3.80730009}, //
+
21378 {3.14441657, 3.81163335}, //
+
21379 {3.13477039, 3.81558895}, //
+
21380 {3.12516475, 3.81916666}, //
+
21381 {3.11560011, 3.82236671}, //
+
21382 {3.106076, 3.82518888}, //
+
21383 {3.09659266, 3.82763338}, //
+
21384 {3.0871501, 3.82969999}, //
+
21385 {3.0779686, 3.83148384}, //
+
21386 {3.06924629, 3.83305812}, //
+
21387 {3.06098342, 3.83442211}, //
+
21388 {3.05317974, 3.83557653}, //
+
21389 {3.04583526, 3.83652091}, //
+
21390 {3.03894997, 3.83725548}, //
+
21391 {3.03252411, 3.83778024}, //
+
21392 {3.02655745, 3.83809495}, //
+
21393 {3.02104998, 3.83820009}, //
+
21394 {3.02029443, 3.83891368}, //
+
21395 {3.01953888, 3.8395431}, //
+
21396 {3.01878333, 3.84008884}, //
+
21397 {3.01802778, 3.84055066}, //
+
21398 {3.01727223, 3.84092832}, //
+
21399 {3.01651669, 3.84122229}, //
+
21400 {3.01576114, 3.84143209}, //
+
21401 {3.01500559, 3.84155798}, //
+
21402 {3.01425004, 3.84159994}, //
+
21403 {3.01216173, 3.84159994}, //
+
21404 {3.0229075, 3.84159994}, //
+
21405 {3.02614999, 3.84159994}, //
+
21406 {3.02951789, 3.84155798}, //
+
21407 {3.03284383, 3.84143209}, //
+
21408 {3.03612781, 3.84122229}, //
+
21409 {3.03936982, 3.84092832}, //
+
21410 {3.04256964, 3.84055066}, //
+
21411 {3.04572773, 3.84008884}, //
+
21412 {3.04884386, 3.8395431}, //
+
21413 {3.05191779, 3.83891368}, //
+
21414 {3.05495, 3.83820009}, //
+
21415 {3.05867457, 3.83820009}, //
+
21416 {3.06587219, 3.83820009}, //
+
21417 {3.069345, 3.83820009}, //
+
21418 {3.07273388, 3.83820009}, //
+
21419 {3.07925987, 3.83820009}, //
+
21420 {3.08544993, 3.83820009}, //
+
21421 {3.08863878, 3.83752847}, //
+
21422 {3.09216118, 3.83702469}, //
+
21423 {3.09601665, 3.836689}, //
+
21424 {3.10020566, 3.83652091}, //
+
21425 {3.10472775, 3.83652091}, //
+
21426 {3.10958338, 3.836689}, //
+
21427 {3.11477232, 3.83702469}, //
+
21428 {3.12029433, 3.83752847}, //
+
21429 {3.12614989, 3.83820009}, //
+
21430 {3.15930557, 3.83820009}, //
+
21431 {3.16512108, 3.83820009}, //
+
21432 {3.17101908, 3.83820009}, //
+
21433 {3.17700005, 3.83820009}, //
+
21434 {3.1829493, 3.83815813}, //
+
21435 {3.18873096, 3.83803201}, //
+
21436 {3.19434452, 3.8378222}, //
+
21437 {3.19979024, 3.83752847}, //
+
21438 {3.20506787, 3.83715057}, //
+
21439 {3.21017766, 3.836689}, //
+
21440 {3.21511984, 3.83614326}, //
+
21441 {3.21989393, 3.83551359}, //
+
21442 {3.22449994, 3.8348}, //
+
21443 {3.23818159, 3.83128643}, //
+
21444 {3.25211477, 3.82676792}, //
+
21445 {3.26629996, 3.82124448}, //
+
21446 {3.28073692, 3.8147161}, //
+
21447 {3.29542589, 3.80718279}, //
+
21448 {3.31036663, 3.79864454}, //
+
21449 {3.32555938, 3.78910112}, //
+
21450 {3.34100366, 3.77855301}, //
+
21451 {3.35669994, 3.76699996}, //
+
21452 {3.37077212, 3.75439572}, //
+
21453 {3.38283324, 3.73618269}, //
+
21454 {3.3928833, 3.7123611}, //
+
21455 {3.4009223, 3.68293095}, //
+
21456 {3.40695, 3.647892}, //
+
21457 {3.41096663, 3.60724449}, //
+
21458 {3.41297221, 3.56098819}, //
+
21459 {3.41296673, 3.50912356}, //
+
21460 {3.41094995, 3.4516499}, //
+
21461 {3.410079, 3.42793822}, //
+
21462 {3.40895486, 3.40351415}, //
+
21463 {3.40757775, 3.37837768}, //
+
21464 {3.40594745, 3.35252905}, //
+
21465 {3.40406418, 3.32596779}, //
+
21466 {3.40192771, 3.29869437}, //
+
21467 {3.39953828, 3.27070856}, //
+
21468 {3.39689565, 3.24201059}, //
+
21469 {3.39400005, 3.21259999}, //
+
21470 {3.39094687, 3.18299079}, //
+
21471 {3.38780999, 3.15367413}, //
+
21472 {3.38458896, 3.12465}, //
+
21473 {3.381284, 3.09591842}, //
+
21474 {3.37789512, 3.06747961}, //
+
21475 {3.37442231, 3.03933334}, //
+
21476 {3.37086535, 3.01147962}, //
+
21477 {3.36722469, 2.98391843}, //
+
21478 {3.36350012, 2.95665002}, //
+
21479 {3.36128569, 2.93592644}, //
+
21480 {3.35915422, 2.91595626}, //
+
21481 {3.35710549, 2.89673901}, //
+
21482 {3.35513949, 2.87827468}, //
+
21483 {3.35325623, 2.86056352}, //
+
21484 {3.35145545, 2.84360552}, //
+
21485 {3.34973764, 2.82740068}, //
+
21486 {3.34810257, 2.81194878}, //
+
21487 {3.34654999, 2.79725003}, //
+
21488 {3.34423089, 2.77125978}, //
+
21489 {3.34178448, 2.74602294}, //
+
21490 {3.33921123, 2.72153878}, //
+
21491 {3.33651042, 2.69780803}, //
+
21492 {3.33368278, 2.6748302}, //
+
21493 {3.33072782, 2.65260553}, //
+
21494 {3.32764578, 2.63113403}, //
+
21495 {3.32443643, 2.61041546}, //
+
21496 {3.3211, 2.59045005}, //
+
21497 {3.31739688, 2.57014942}, //
+
21498 {3.31306553, 2.5484252}, //
+
21499 {3.30810547, 2.52527785}, //
+
21500 {3.30251718, 2.50070667}, //
+
21501 {3.29630065, 2.47471237}, //
+
21502 {3.28945565, 2.44729447}, //
+
21503 {3.28198218, 2.41845298}, //
+
21504 {3.27388024, 2.38818836}, //
+
21505 {3.26515007, 2.35649991}, //
+
21506 {3.25961041, 2.3381598}, //
+
21507 {3.25352526, 2.31931734}, //
+
21508 {3.24689436, 2.2999723}, //
+
21509 {3.23971796, 2.28012466}, //
+
21510 {3.23199558, 2.25977468}, //
+
21511 {3.2237277, 2.23892212}, //
+
21512 {3.21491408, 2.21756721}, //
+
21513 {3.20555496, 2.19570994}, //
+
21514 {3.1956501, 2.1733501}, //
+
21515 {3.18539929, 2.15079141}, //
+
21516 {3.17498088, 2.12831545}, //
+
21517 {3.16439438, 2.10592222}, //
+
21518 {3.15364003, 2.08361173}, //
+
21519 {3.14271784, 2.06138396}, //
+
21520 {3.1316278, 2.03923893}, //
+
21521 {3.12036967, 2.01717663}, //
+
21522 {3.10894394, 1.99519694}, //
+
21523 {3.09734988, 1.97329998}, //
+
21524 {3.08586049, 1.95187342}, //
+
21525 {3.07474756, 1.93128276}, //
+
21526 {3.0640111, 1.91152775}, //
+
21527 {3.05365133, 1.89260864}, //
+
21528 {3.04366779, 1.87452531}, //
+
21529 {3.03406119, 1.85727775}, //
+
21530 {3.02483082, 1.84086609}, //
+
21531 {3.01597714, 1.82529008}, //
+
21532 {3.00749993, 1.81054997}, //
+
21533 {2.99958754, 1.79699254}, //
+
21534 {2.9924283, 1.78494263}, //
+
21535 {2.98602223, 1.7744}, //
+
21536 {2.98036909, 1.76536477}, //
+
21537 {2.97546911, 1.75783706}, //
+
21538 {2.9713223, 1.75181663}, //
+
21539 {2.96792841, 1.74730372}, //
+
21540 {2.96528769, 1.7442981}, //
+
21541 {2.96339989, 1.7428}, //
+
21542 {2.96321177, 1.74208641}, //
+
21543 {2.96264696, 1.74145675}, //
+
21544 {2.96170545, 1.74091113}, //
+
21545 {2.96038771, 1.74044943}, //
+
21546 {2.95869327, 1.74007165}, //
+
21547 {2.95662212, 1.7397778}, //
+
21548 {2.95417476, 1.73956788}, //
+
21549 {2.95135069, 1.73944199}, //
+
21550 {2.94814992, 1.73940003}, //
+
21551 });
+
21552 polys.push_back({
+
21553 {3.25460124, 2.07997966}, //
+
21554 {3.25367785, 2.08033323}, //
+
21555 {3.25283837, 2.08097959}, //
+
21556 {3.25208282, 2.08191848}, //
+
21557 {3.2514112, 2.08314991}, //
+
21558 {3.2508235, 2.08467412}, //
+
21559 {3.25031972, 2.08649063}, //
+
21560 {3.2499001, 2.08859992}, //
+
21561 {3.24958515, 2.09090805}, //
+
21562 {3.24939632, 2.09329867}, //
+
21563 {3.24933338, 2.09577227}, //
+
21564 {3.24939632, 2.09832835}, //
+
21565 {3.24958515, 2.10096717}, //
+
21566 {3.2499001, 2.10368896}, //
+
21567 {3.2503407, 2.10649323}, //
+
21568 {3.25090742, 2.10938025}, //
+
21569 {3.25160003, 2.11234999}, //
+
21570 {3.25321531, 2.11710238}, //
+
21571 {3.25503945, 2.12231541}, //
+
21572 {3.25707221, 2.12798882}, //
+
21573 {3.25931358, 2.13412285}, //
+
21574 {3.26176357, 2.14071727}, //
+
21575 {3.26442218, 2.14777231}, //
+
21576 {3.2672894, 2.15528774}, //
+
21577 {3.27036548, 2.16326356}, //
+
21578 {3.27364993, 2.1717}, //
+
21579 {3.27697587, 2.18036604}, //
+
21580 {3.28017592, 2.18903089}, //
+
21581 {3.28325009, 2.19769454}, //
+
21582 {3.28619814, 2.20635676}, //
+
21583 {3.2890203, 2.2150178}, //
+
21584 {3.29171658, 2.22367787}, //
+
21585 {3.29428697, 2.23233652}, //
+
21586 {3.29673147, 2.24099374}, //
+
21587 {3.29905009, 2.24965}, //
+
21588 {3.30123281, 2.25808644}, //
+
21589 {3.30324745, 2.26606226}, //
+
21590 {3.30509448, 2.27357769}, //
+
21591 {3.30677342, 2.28063273}, //
+
21592 {3.30828452, 2.28722715}, //
+
21593 {3.30962777, 2.29336119}, //
+
21594 {3.31080317, 2.2990346}, //
+
21595 {3.31181049, 2.30424762}, //
+
21596 {3.31264997, 2.30900002}, //
+
21597 {3.31353092, 2.31582832}, //
+
21598 {3.31466246, 2.32424688}, //
+
21599 {3.31604433, 2.33425546}, //
+
21600 {3.31767726, 2.34585428}, //
+
21601 {3.31956053, 2.35904312}, //
+
21602 {3.32169437, 2.37382221}, //
+
21603 {3.32407904, 2.39019132}, //
+
21604 {3.32671428, 2.40815067}, //
+
21605 {3.3296001, 2.42770004}, //
+
21606 {3.33265305, 2.44814873}, //
+
21607 {3.33579016, 2.46880627}, //
+
21608 {3.33901119, 2.48967218}, //
+
21609 {3.34231615, 2.51074696}, //
+
21610 {3.34570503, 2.53203034}, //
+
21611 {3.34917784, 2.55352211}, //
+
21612 {3.35273457, 2.57522273}, //
+
21613 {3.35637522, 2.59713221}, //
+
21614 {3.36010003, 2.61925006}, //
+
21615 {3.36378336, 2.64079189}, //
+
21616 {3.36730003, 2.66095114}, //
+
21617 {3.37065005, 2.67972779}, //
+
21618 {3.37383342, 2.69712162}, //
+
21619 {3.37684989, 2.71313262}, //
+
21620 {3.37969995, 2.72776103}, //
+
21621 {3.38238335, 2.74100685}, //
+
21622 {3.38490009, 2.75286984}, //
+
21623 {3.38724995, 2.76335001}, //
+
21624 {3.39032412, 2.77875185}, //
+
21625 {3.39352417, 2.79482412}, //
+
21626 {3.39685011, 2.81156659}, //
+
21627 {3.40030193, 2.82897973}, //
+
21628 {3.40387964, 2.84706306}, //
+
21629 {3.40758324, 2.86581659}, //
+
21630 {3.41141295, 2.88524079}, //
+
21631 {3.41536856, 2.90533519}, //
+
21632 {3.41945004, 2.92610002}, //
+
21633 {3.42336416, 2.94648838}, //
+
21634 {3.42681789, 2.96545315}, //
+
21635 {3.429811, 2.98299456}, //
+
21636 {3.43234372, 2.99911237}, //
+
21637 {3.43441606, 3.01380682}, //
+
21638 {3.43602777, 3.02707767}, //
+
21639 {3.43717909, 3.03892541}, //
+
21640 {3.43786979, 3.04934931}, //
+
21641 {3.4381001, 3.05835009}, //
+
21642 {3.43818331, 3.0654211}, //
+
21643 {3.43843341, 3.07307839}, //
+
21644 {3.43884993, 3.08132219}, //
+
21645 {3.43943334, 3.0901525}, //
+
21646 {3.4401834, 3.09956908}, //
+
21647 {3.44109988, 3.10957217}, //
+
21648 {3.44218326, 3.12016177}, //
+
21649 {3.44343328, 3.13133764}, //
+
21650 {3.44484997, 3.14310002}, //
+
21651 {3.44644451, 3.15498829}, //
+
21652 {3.44820547, 3.16654205}, //
+
21653 {3.45013332, 3.17776108}, //
+
21654 {3.45222783, 3.1886456}, //
+
21655 {3.45448899, 3.19919562}, //
+
21656 {3.45691657, 3.20941114}, //
+
21657 {3.45951104, 3.21929193}, //
+
21658 {3.46227217, 3.22883821}, //
+
21659 {3.46519995, 3.23804998}, //
+
21660 {3.46673155, 3.24387169}, //
+
21661 {3.46830368, 3.25078082}, //
+
21662 {3.46991658, 3.25877786}, //
+
21663 {3.47157025, 3.26786232}, //
+
21664 {3.47326493, 3.27803469}, //
+
21665 {3.4749999, 3.28929448}, //
+
21666 {3.47677588, 3.30164194}, //
+
21667 {3.47859263, 3.31507707}, //
+
21668 {3.48044991, 3.3296001}, //
+
21669 {3.48227596, 3.3446877}, //
+
21670 {3.48397589, 3.35981727}, //
+
21671 {3.48554993, 3.37498879}, //
+
21672 {3.48699808, 3.39020252}, //
+
21673 {3.48832035, 3.40545797}, //
+
21674 {3.48951674, 3.42075562}, //
+
21675 {3.490587, 3.436095}, //
+
21676 {3.49153137, 3.45147657}, //
+
21677 {3.4923501, 3.46690011}, //
+
21678 {3.49293756, 3.48203087}, //
+
21679 {3.49318957, 3.49653459}, //
+
21680 {3.49310565, 3.51041102}, //
+
21681 {3.49268579, 3.52366042}, //
+
21682 {3.49193025, 3.53628278}, //
+
21683 {3.490839, 3.54827785}, //
+
21684 {3.48941183, 3.55964565}, //
+
21685 {3.48764873, 3.57038641}, //
+
21686 {3.48554993, 3.58049989}, //
+
21687 {3.48253894, 3.59230423}, //
+
21688 {3.47952771, 3.60360622}, //
+
21689 {3.47651672, 3.61440563}, //
+
21690 {3.4735055, 3.62470245}, //
+
21691 {3.47049451, 3.63449693}, //
+
21692 {3.46748328, 3.64378881}, //
+
21693 {3.46447229, 3.65257835}, //
+
21694 {3.46146107, 3.66086555}, //
+
21695 {3.45845008, 3.66864991}, //
+
21696 {3.45426297, 3.67794752}, //
+
21697 {3.4507463, 3.6862402}, //
+
21698 {3.44790006, 3.6935277}, //
+
21699 {3.44572401, 3.6998105}, //
+
21700 {3.44421864, 3.70508838}, //
+
21701 {3.44338322, 3.70936108}, //
+
21702 {3.44321847, 3.71262908}, //
+
21703 {3.44372416, 3.71489191}, //
+
21704 {3.44490004, 3.71615005}, //
+
21705 {3.4478271, 3.71685314}, //
+
21706 {3.45058632, 3.71747351}, //
+
21707 {3.45317769, 3.71801114}, //
+
21708 {3.45560122, 3.71846604}, //
+
21709 {3.45785689, 3.71883821}, //
+
21710 {3.45994449, 3.71912789}, //
+
21711 {3.46186423, 3.7193346}, //
+
21712 {3.46361613, 3.71945858}, //
+
21713 {3.46519995, 3.71950006}, //
+
21714 {3.46666908, 3.71952105}, //
+
21715 {3.46805429, 3.71958399}, //
+
21716 {3.46935558, 3.71968889}, //
+
21717 {3.47057295, 3.71983576}, //
+
21718 {3.47170615, 3.72002459}, //
+
21719 {3.47275567, 3.72025561}, //
+
21720 {3.47372103, 3.72052836}, //
+
21721 {3.47460246, 3.72084332}, //
+
21722 {3.47539997, 3.72119999}, //
+
21723 {3.4760716, 3.72168279}, //
+
21724 {3.47657537, 3.72237539}, //
+
21725 {3.47691107, 3.72327781}, //
+
21726 {3.47707891, 3.72439003}, //
+
21727 {3.47707891, 3.7257123}, //
+
21728 {3.47691107, 3.72724438}, //
+
21729 {3.47657537, 3.7289865}, //
+
21730 {3.4760716, 3.7309382}, //
+
21731 {3.47539997, 3.73309994}, //
+
21732 {3.47439313, 3.73617411}, //
+
21733 {3.47288394, 3.73937416}, //
+
21734 {3.47087216, 3.7427001}, //
+
21735 {3.46835804, 3.74615192}, //
+
21736 {3.46534133, 3.74972963}, //
+
21737 {3.46182227, 3.75343323}, //
+
21738 {3.45780063, 3.75726295}, //
+
21739 {3.45327663, 3.76121855}, //
+
21740 {3.44825006, 3.76530004}, //
+
21741 {3.4428575, 3.76938152}, //
+
21742 {3.43721294, 3.77333713}, //
+
21743 {3.43131661, 3.7771666}, //
+
21744 {3.42516851, 3.78087044}, //
+
21745 {3.41876841, 3.78444815}, //
+
21746 {3.41211677, 3.78789997}, //
+
21747 {3.40521288, 3.79122591}, //
+
21748 {3.39805746, 3.79442596}, //
+
21749 {3.39065003, 3.7974999}, //
+
21750 {3.38775373, 3.79892707}, //
+
21751 {3.38510919, 3.8001864}, //
+
21752 {3.38271666, 3.80127788}, //
+
21753 {3.3805759, 3.80220127}, //
+
21754 {3.37868714, 3.80295682}, //
+
21755 {3.37704992, 3.80354452}, //
+
21756 {3.37566471, 3.80396414}, //
+
21757 {3.37453151, 3.80421615}, //
+
21758 {3.37365007, 3.80430007}, //
+
21759 {3.37143588, 3.80502415}, //
+
21760 {3.36930442, 3.80570745}, //
+
21761 {3.36725545, 3.80634999}, //
+
21762 {3.36528945, 3.80695176}, //
+
21763 {3.36340618, 3.807513}, //
+
21764 {3.36160564, 3.80803323}, //
+
21765 {3.3598876, 3.80851293}, //
+
21766 {3.35825253, 3.80895185}, //
+
21767 {3.35669994, 3.80935001}, //
+
21768 {3.35515738, 3.80976987}, //
+
21769 {3.35352969, 3.81027341}, //
+
21770 {3.35181665, 3.81086111}, //
+
21771 {3.3500185, 3.81153274}, //
+
21772 {3.34813523, 3.81228828}, //
+
21773 {3.34616661, 3.81312776}, //
+
21774 {3.34411287, 3.81405115}, //
+
21775 {3.34197402, 3.81505871}, //
+
21776 {3.33975005, 3.81614995}, //
+
21777 {3.33738947, 3.8172617}, //
+
21778 {3.33481908, 3.81833029}, //
+
21779 {3.33203888, 3.81935549}, //
+
21780 {3.32904887, 3.82033777}, //
+
21781 {3.32584882, 3.82127643}, //
+
21782 {3.32243896, 3.82217216}, //
+
21783 {3.31881905, 3.82302475}, //
+
21784 {3.31498957, 3.82383394}, //
+
21785 {3.31095004, 3.82459998}, //
+
21786 {3.3065753, 3.82543945}, //
+
21787 {3.30174017, 3.82644701}, //
+
21788 {3.29644442, 3.82762218}, //
+
21789 {3.29068828, 3.82896543}, //
+
21790 {3.28447151, 3.83047652}, //
+
21791 {3.27779436, 3.83215547}, //
+
21792 {3.27065682, 3.83400249}, //
+
21793 {3.26305866, 3.83601737}, //
+
21794 {3.25500011, 3.83820009}, //
+
21795 {3.25880861, 3.83820009}, //
+
21796 {3.26667786, 3.83820009}, //
+
21797 {3.27911115, 3.83820009}, //
+
21798 {3.28342342, 3.83820009}, //
+
21799 {3.29229999, 3.83820009}, //
+
21800 {3.29821801, 3.83820009}, //
+
21801 {3.30942774, 3.83820009}, //
+
21802 {3.31471968, 3.83820009}, //
+
21803 {3.319803, 3.83820009}, //
+
21804 {3.32467771, 3.83820009}, //
+
21805 {3.3293438, 3.83820009}, //
+
21806 {3.33380127, 3.83820009}, //
+
21807 {3.33804989, 3.83820009}, //
+
21808 {3.34204817, 3.83815813}, //
+
21809 {3.34575367, 3.83803201}, //
+
21810 {3.34916663, 3.8378222}, //
+
21811 {3.35228705, 3.83752847}, //
+
21812 {3.3551147, 3.83715057}, //
+
21813 {3.35765004, 3.836689}, //
+
21814 {3.35989261, 3.83614326}, //
+
21815 {3.36184263, 3.83551359}, //
+
21816 {3.36350012, 3.8348}, //
+
21817 {3.36655307, 3.83475804}, //
+
21818 {3.36969018, 3.83463216}, //
+
21819 {3.37291121, 3.83442211}, //
+
21820 {3.37621593, 3.83412838}, //
+
21821 {3.37960505, 3.83375072}, //
+
21822 {3.38307786, 3.83328891}, //
+
21823 {3.38663459, 3.83274317}, //
+
21824 {3.39027524, 3.8321135}, //
+
21825 {3.39400005, 3.83139992}, //
+
21826 {3.39702153, 3.83135796}, //
+
21827 {3.40004206, 3.83123207}, //
+
21828 {3.40306115, 3.83102226}, //
+
21829 {3.40607905, 3.83072829}, //
+
21830 {3.40909576, 3.83035064}, //
+
21831 {3.41211104, 3.82988882}, //
+
21832 {3.41512537, 3.82934332}, //
+
21833 {3.41813827, 3.82871366}, //
+
21834 {3.42114997, 3.82800007}, //
+
21835 {3.42407775, 3.82725501}, //
+
21836 {3.42683887, 3.82650876}, //
+
21837 {3.42943335, 3.82576108}, //
+
21838 {3.43186116, 3.82501245}, //
+
21839 {3.43412232, 3.82426238}, //
+
21840 {3.43621659, 3.82351112}, //
+
21841 {3.43814445, 3.82275867}, //
+
21842 {3.43990564, 3.82200503}, //
+
21843 {3.44149995, 3.82124996}, //
+
21844 {3.45111418, 3.82124996}, //
+
21845 {3.45354438, 3.82124996}, //
+
21846 {3.45614386, 3.82124996}, //
+
21847 {3.45891237, 3.82124996}, //
+
21848 {3.46184993, 3.82124996}, //
+
21849 {3.46418953, 3.81973886}, //
+
21850 {3.46669698, 3.81822777}, //
+
21851 {3.46937227, 3.81671667}, //
+
21852 {3.47221541, 3.81520557}, //
+
21853 {3.47522664, 3.81369448}, //
+
21854 {3.47840548, 3.81218338}, //
+
21855 {3.4817524, 3.81067228}, //
+
21856 {3.4852674, 3.80916119}, //
+
21857 {3.48895001, 3.80765009}, //
+
21858 {3.49292588, 3.80589819}, //
+
21859 {3.49732041, 3.80364251}, //
+
21860 {3.50213337, 3.80088329}, //
+
21861 {3.50736475, 3.7976203}, //
+
21862 {3.51301479, 3.79385376}, //
+
21863 {3.51908326, 3.78958344}, //
+
21864 {3.52557039, 3.78480935}, //
+
21865 {3.53247595, 3.77953148}, //
+
21866 {3.53979993, 3.77375007}, //
+
21867 {3.54348278, 3.77149391}, //
+
21868 {3.54699755, 3.76923633}, //
+
21869 {3.55034447, 3.76697779}, //
+
21870 {3.55352354, 3.76471782}, //
+
21871 {3.55653453, 3.76245689}, //
+
21872 {3.55937767, 3.76019454}, //
+
21873 {3.5620532, 3.75793076}, //
+
21874 {3.56456041, 3.75566602}, //
+
21875 {3.56690001, 3.75340009}, //
+
21876 {3.56910372, 3.75114393}, //
+
21877 {3.57118154, 3.74888635}, //
+
21878 {3.57313323, 3.74662781}, //
+
21879 {3.57495928, 3.74436784}, //
+
21880 {3.5766592, 3.74210668}, //
+
21881 {3.57823324, 3.73984456}, //
+
21882 {3.5796814, 3.73758078}, //
+
21883 {3.58100367, 3.73531604}, //
+
21884 {3.58220005, 3.73305011}, //
+
21885 {3.58329082, 3.7308569}, //
+
21886 {3.58429623, 3.72878838}, //
+
21887 {3.58521676, 3.72684455}, //
+
21888 {3.58605194, 3.72502542}, //
+
21889 {3.58680177, 3.72333097}, //
+
21890 {3.58746672, 3.72176123}, //
+
21891 {3.58804631, 3.72031593}, //
+
21892 {3.58854079, 3.71899557}, //
+
21893 {3.58894992, 3.7177999}, //
+
21894 {3.58932781, 3.71669817}, //
+
21895 {3.58970547, 3.71563697}, //
+
21896 {3.59008336, 3.71461678}, //
+
21897 {3.59046102, 3.71363711}, //
+
21898 {3.59083891, 3.71269822}, //
+
21899 {3.59121656, 3.7118001}, //
+
21900 {3.59159446, 3.71094251}, //
+
21901 {3.59197211, 3.71012592}, //
+
21902 {3.59235001, 3.70935011}, //
+
21903 {3.5926857, 3.70861554}, //
+
21904 {3.59293771, 3.70792294}, //
+
21905 {3.59310555, 3.70727229}, //
+
21906 {3.59318948, 3.70666361}, //
+
21907 {3.59318948, 3.70609689}, //
+
21908 {3.59310555, 3.70557213}, //
+
21909 {3.59293771, 3.70508957}, //
+
21910 {3.5926857, 3.70464873}, //
+
21911 {3.59235001, 3.7042501}, //
+
21912 {3.59199309, 3.70389318}, //
+
21913 {3.59167838, 3.70357847}, //
+
21914 {3.59140563, 3.70330548}, //
+
21915 {3.5911746, 3.70307469}, //
+
21916 {3.59098577, 3.70288587}, //
+
21917 {3.59083891, 3.702739}, //
+
21918 {3.590734, 3.70263386}, //
+
21919 {3.59065008, 3.70254993}, //
+
21920 {3.59008336, 3.70311666}, //
+
21921 {3.58756471, 3.70563507}, //
+
21922 {3.58662033, 3.70657969}, //
+
21923 {3.58555007, 3.70764995}, //
+
21924 {3.58438516, 3.70878267}, //
+
21925 {3.58313513, 3.70991421}, //
+
21926 {3.58179998, 3.71104455}, //
+
21927 {3.58037972, 3.71217346}, //
+
21928 {3.57887411, 3.71330118}, //
+
21929 {3.57728338, 3.71442771}, //
+
21930 {3.5756073, 3.71555305}, //
+
21931 {3.57384634, 3.71667719}, //
+
21932 {3.57200003, 3.7177999}, //
+
21933 {3.57012153, 3.71897459}, //
+
21934 {3.56824207, 3.72023201}, //
+
21935 {3.56636119, 3.72157216}, //
+
21936 {3.56447911, 3.72299504}, //
+
21937 {3.56259561, 3.72450066}, //
+
21938 {3.56071115, 3.726089}, //
+
21939 {3.55882525, 3.72775984}, //
+
21940 {3.55693817, 3.72951365}, //
+
21941 {3.5550499, 3.73134995}, //
+
21942 {3.55315065, 3.73317599}, //
+
21943 {3.55120802, 3.73487592}, //
+
21944 {3.54922223, 3.73644996}, //
+
21945 {3.54719329, 3.73789811}, //
+
21946 {3.54512095, 3.73922038}, //
+
21947 {3.54300547, 3.74041677}, //
+
21948 {3.54084682, 3.74148703}, //
+
21949 {3.53864503, 3.7424314}, //
+
21950 {3.53640008, 3.74324989}, //
+
21951 {3.53487849, 3.74327087}, //
+
21952 {3.53331351, 3.74333405}, //
+
21953 {3.53170562, 3.74343896}, //
+
21954 {3.53005433, 3.74358582}, //
+
21955 {3.52835989, 3.74377465}, //
+
21956 {3.5266223, 3.74400544}, //
+
21957 {3.52484131, 3.74427843}, //
+
21958 {3.52301717, 3.74459314}, //
+
21959 {3.52115011, 3.74495006}, //
+
21960 {3.51933455, 3.74524379}, //
+
21961 {3.51764393, 3.74536967}, //
+
21962 {3.51607776, 3.74532771}, //
+
21963 {3.51463652, 3.7451179}, //
+
21964 {3.51331973, 3.74474001}, //
+
21965 {3.51212788, 3.74419451}, //
+
21966 {3.51106048, 3.74348092}, //
+
21967 {3.51011801, 3.74259949}, //
+
21968 {3.50929999, 3.74154997}, //
+
21969 {3.50871229, 3.74027038}, //
+
21970 {3.50846052, 3.73869824}, //
+
21971 {3.50854445, 3.73683333}, //
+
21972 {3.5089643, 3.73467588}, //
+
21973 {3.50971985, 3.73222589}, //
+
21974 {3.51081109, 3.72948337}, //
+
21975 {3.51223826, 3.72644806}, //
+
21976 {3.51400113, 3.72312045}, //
+
21977 {3.51609993, 3.71950006}, //
+
21978 {3.51831365, 3.71581912}, //
+
21979 {3.5204432, 3.71079874}, //
+
21980 {3.52248883, 3.70443892}, //
+
21981 {3.52445054, 3.69673944}, //
+
21982 {3.52632833, 3.68770051}, //
+
21983 {3.52812219, 3.67732215}, //
+
21984 {3.52983212, 3.66560435}, //
+
21985 {3.53145814, 3.65254688}, //
+
21986 {3.53299999, 3.63814998}, //
+
21987 {3.53442717, 3.62285256}, //
+
21988 {3.53568649, 3.6070931}, //
+
21989 {3.53677773, 3.59087229}, //
+
21990 {3.53770113, 3.57418942}, //
+
21991 {3.53845668, 3.55704498}, //
+
21992 {3.53904438, 3.53943896}, //
+
21993 {3.53946424, 3.52137089}, //
+
21994 {3.53971601, 3.50284147}, //
+
21995 {3.53979993, 3.48385}, //
+
21996 {3.5396328, 3.46482706}, //
+
21997 {3.53913093, 3.44618082}, //
+
21998 {3.53829455, 3.42791104}, //
+
21999 {3.53712344, 3.41001797}, //
+
22000 {3.53561783, 3.39250112}, //
+
22001 {3.53377771, 3.3753612}, //
+
22002 {3.5316031, 3.35859752}, //
+
22003 {3.52909374, 3.34221053}, //
+
22004 {3.52624989, 3.32620001}, //
+
22005 {3.52549434, 3.32171965}, //
+
22006 {3.52473879, 3.31732345}, //
+
22007 {3.52398324, 3.31301117}, //
+
22008 {3.52322769, 3.30878282}, //
+
22009 {3.52247214, 3.30463839}, //
+
22010 {3.52171659, 3.30057788}, //
+
22011 {3.52096105, 3.2966013}, //
+
22012 {3.5202055, 3.29270864}, //
+
22013 {3.51944995, 3.2888999}, //
+
22014 {3.5179913, 3.28010678}, //
+
22015 {3.51661539, 3.27181602}, //
+
22016 {3.51532221, 3.26402783}, //
+
22017 {3.51411176, 3.256742}, //
+
22018 {3.51298404, 3.24995875}, //
+
22019 {3.51193881, 3.24367785}, //
+
22020 {3.51097655, 3.2378993}, //
+
22021 {3.51009703, 3.23262334}, //
+
22022 {3.50929999, 3.22784996}, //
+
22023 {3.50856543, 3.22344255}, //
+
22024 {3.50787282, 3.21924257}, //
+
22025 {3.50722218, 3.21525002}, //
+
22026 {3.50661349, 3.21146488}, //
+
22027 {3.50604701, 3.20788693}, //
+
22028 {3.50552225, 3.20451665}, //
+
22029 {3.50503945, 3.20135379}, //
+
22030 {3.50459886, 3.19839811}, //
+
22031 {3.50419998, 3.1956501}, //
+
22032 {3.50384331, 3.19295359}, //
+
22033 {3.50352836, 3.19013143}, //
+
22034 {3.50325561, 3.18718338}, //
+
22035 {3.50302458, 3.18410921}, //
+
22036 {3.50283575, 3.18090916}, //
+
22037 {3.50268888, 3.17758322}, //
+
22038 {3.50258398, 3.17413139}, //
+
22039 {3.50252104, 3.17055368}, //
+
22040 {3.50250006, 3.16685009}, //
+
22041 {3.50245857, 3.16458392}, //
+
22042 {3.50233459, 3.16231918}, //
+
22043 {3.50212789, 3.16005564}, //
+
22044 {3.50183821, 3.15779328}, //
+
22045 {3.50146604, 3.15553212}, //
+
22046 {3.50101113, 3.15327215}, //
+
22047 {3.5004735, 3.15101361}, //
+
22048 {3.49985313, 3.14875627}, //
+
22049 {3.49915004, 3.14650011}, //
+
22050 {3.49816418, 3.13264251}, //
+
22051 {3.49671793, 3.11669254}, //
+
22052 {3.49481106, 3.09864998}, //
+
22053 {3.4924438, 3.07851481}, //
+
22054 {3.48961616, 3.05628705}, //
+
22055 {3.48632789, 3.03196669}, //
+
22056 {3.48257899, 3.00555372}, //
+
22057 {3.47836971, 2.97704816}, //
+
22058 {3.47370005, 2.94645}, //
+
22059 {3.46865368, 2.91463828}, //
+
22060 {3.46331477, 2.88249207}, //
+
22061 {3.45768332, 2.85001111}, //
+
22062 {3.45175934, 2.81719565}, //
+
22063 {3.44554257, 2.7840457}, //
+
22064 {3.43903327, 2.750561}, //
+
22065 {3.43223143, 2.71674204}, //
+
22066 {3.42513704, 2.68258834}, //
+
22067 {3.41774988, 2.6480999}, //
+
22068 {3.40853834, 2.60690689}, //
+
22069 {3.39899206, 2.56621599}, //
+
22070 {3.38911104, 2.52602768}, //
+
22071 {3.37889576, 2.48634195}, //
+
22072 {3.36834574, 2.44715858}, //
+
22073 {3.35746121, 2.40847778}, //
+
22074 {3.34624195, 2.37029934}, //
+
22075 {3.33468819, 2.33262348}, //
+
22076 {3.32279992, 2.29544997}, //
+
22077 {3.3163147, 2.27225995}, //
+
22078 {3.31041479, 2.25091171}, //
+
22079 {3.30509996, 2.2314055}, //
+
22080 {3.30037045, 2.2137413}, //
+
22081 {3.29622602, 2.19791913}, //
+
22082 {3.29266667, 2.18393898}, //
+
22083 {3.28969264, 2.17180061}, //
+
22084 {3.28730369, 2.16150427}, //
+
22085 {3.28550005, 2.15304995}, //
+
22086 {3.28328586, 2.14501238}, //
+
22087 {3.28115439, 2.13747716}, //
+
22088 {3.27910566, 2.13044453}, //
+
22089 {3.27713943, 2.12391424}, //
+
22090 {3.27525616, 2.1178863}, //
+
22091 {3.27345562, 2.11236119}, //
+
22092 {3.27173758, 2.10733819}, //
+
22093 {3.2701025, 2.10281801}, //
+
22094 {3.26854992, 2.09879994}, //
+
22095 {3.26707029, 2.09522152}, //
+
22096 {3.26563144, 2.0920198}, //
+
22097 {3.26423335, 2.08919454}, //
+
22098 {3.26287603, 2.08674574}, //
+
22099 {3.26155925, 2.0846734}, //
+
22100 {3.26028323, 2.08297777}, //
+
22101 {3.25904822, 2.0816586}, //
+
22102 {3.25785375, 2.08071613}, //
+
22103 {3.25670004, 2.08014989}, //
+
22104 {3.25560856, 2.07991862}, //
+
22105 });
+
22106 polys.push_back({
+
22107 {3.88516665, 3.80372787}, //
+
22108 {3.88787222, 3.7953167}, //
+
22109 {3.89036655, 3.78581667}, //
+
22110 {3.89264989, 3.77522779}, //
+
22111 {3.89472222, 3.76355004}, //
+
22112 {3.89658332, 3.75078344}, //
+
22113 {3.89823341, 3.73692775}, //
+
22114 {3.89967227, 3.72198343}, //
+
22115 {3.90089989, 3.70595002}, //
+
22116 {3.90155196, 3.68903756}, //
+
22117 {3.90124083, 3.6714561}, //
+
22118 {3.89996672, 3.65320563}, //
+
22119 {3.89772964, 3.63428569}, //
+
22120 {3.89452958, 3.61469698}, //
+
22121 {3.89036655, 3.59443879}, //
+
22122 {3.88524079, 3.57351184}, //
+
22123 {3.87915182, 3.55191541}, //
+
22124 {3.87210011, 3.52964997}, //
+
22125 {3.85573149, 3.48339081}, //
+
22126 {3.83978152, 3.43654633}, //
+
22127 {3.82424998, 3.38911676}, //
+
22128 {3.80913711, 3.34110188}, //
+
22129 {3.79444265, 3.29250193}, //
+
22130 {3.78016663, 3.24331665}, //
+
22131 {3.76630926, 3.1935463}, //
+
22132 {3.75287032, 3.14319062}, //
+
22133 {3.73985004, 3.09225011}, //
+
22134 {3.73181224, 3.06420302}, //
+
22135 {3.72427726, 3.03732896}, //
+
22136 {3.71724439, 3.01162767}, //
+
22137 {3.7107141, 2.98709941}, //
+
22138 {3.7046864, 2.96374393}, //
+
22139 {3.69916105, 2.94156122}, //
+
22140 {3.69413829, 2.9205513}, //
+
22141 {3.68961787, 2.90071416}, //
+
22142 {3.68560004, 2.88205004}, //
+
22143 {3.6820426, 2.86785173}, //
+
22144 {3.67890382, 2.85541296}, //
+
22145 {3.67618322, 2.84473324}, //
+
22146 {3.67388153, 2.83581305}, //
+
22147 {3.67199826, 2.82865191}, //
+
22148 {3.67053342, 2.82325006}, //
+
22149 {3.669487, 2.8196075}, //
+
22150 {3.66885924, 2.81772399}, //
+
22151 {3.66864991, 2.81760001}, //
+
22152 {3.66881728, 2.81917167}, //
+
22153 {3.66931915, 2.8223753}, //
+
22154 {3.67015553, 2.82721114}, //
+
22155 {3.67132664, 2.83367896}, //
+
22156 {3.67283201, 2.84177899}, //
+
22157 {3.67467213, 2.851511}, //
+
22158 {3.67684698, 2.86287522}, //
+
22159 {3.6793561, 2.87587166}, //
+
22160 {3.68219995, 2.89050007}, //
+
22161 {3.68528461, 2.90621662}, //
+
22162 {3.68849373, 2.92247772}, //
+
22163 {3.69182777, 2.93928337}, //
+
22164 {3.69528651, 2.95663333}, //
+
22165 {3.69886971, 2.97452784}, //
+
22166 {3.70257783, 2.99296665}, //
+
22167 {3.70641041, 3.01195002}, //
+
22168 {3.71036792, 3.03147769}, //
+
22169 {3.71444988, 3.05154991}, //
+
22170 {3.71859455, 3.0717895}, //
+
22171 {3.72273898, 3.09181905}, //
+
22172 {3.72688341, 3.11163878}, //
+
22173 {3.73102784, 3.13124871}, //
+
22174 {3.73517227, 3.15064883}, //
+
22175 {3.7393167, 3.16983891}, //
+
22176 {3.74346113, 3.18881917}, //
+
22177 {3.74760556, 3.20758939}, //
+
22178 {3.75174999, 3.22615004}, //
+
22179 {3.75578952, 3.24400926}, //
+
22180 {3.75961924, 3.26065373}, //
+
22181 {3.76323891, 3.27608323}, //
+
22182 {3.76664877, 3.29029822}, //
+
22183 {3.76984882, 3.30329823}, //
+
22184 {3.77283883, 3.31508327}, //
+
22185 {3.77561903, 3.32565379}, //
+
22186 {3.77818942, 3.33500934}, //
+
22187 {3.78055, 3.3431499}, //
+
22188 {3.78650999, 3.35989499}, //
+
22189 {3.79234505, 3.37697458}, //
+
22190 {3.79805565, 3.39438891}, //
+
22191 {3.80364132, 3.41213775}, //
+
22192 {3.80910254, 3.43022108}, //
+
22193 {3.81443882, 3.44863892}, //
+
22194 {3.81965065, 3.46739125}, //
+
22195 {3.82473755, 3.48647833}, //
+
22196 {3.82969999, 3.50589991}, //
+
22197 {3.83441162, 3.52527952}, //
+
22198 {3.83874702, 3.54424071}, //
+
22199 {3.84270549, 3.56278324}, //
+
22200 {3.84628773, 3.58090734}, //
+
22201 {3.84949327, 3.59861302}, //
+
22202 {3.85232234, 3.61590004}, //
+
22203 {3.85477471, 3.63276863}, //
+
22204 {3.85685062, 3.64921856}, //
+
22205 {3.85855007, 3.66525006}, //
+
22206 {3.85840297, 3.6756587}, //
+
22207 {3.85796237, 3.68577337}, //
+
22208 {3.8572278, 3.69559455}, //
+
22209 {3.85619926, 3.70512152}, //
+
22210 {3.85487723, 3.71435499}, //
+
22211 {3.85326099, 3.7232945}, //
+
22212 {3.85135126, 3.73194003}, //
+
22213 {3.84914756, 3.74029207}, //
+
22214 {3.84664989, 3.74834991}, //
+
22215 {3.84397459, 3.75609326}, //
+
22216 {3.84121537, 3.76350069}, //
+
22217 {3.83837223, 3.77057219}, //
+
22218 {3.83544517, 3.77730799}, //
+
22219 {3.83243394, 3.7837081}, //
+
22220 {3.82933879, 3.78977227}, //
+
22221 {3.82615995, 3.79550052}, //
+
22222 {3.82289696, 3.80089331}, //
+
22223 {3.81955004, 3.80594993}, //
+
22224 {3.81634927, 3.81053638}, //
+
22225 {3.8135252, 3.81449556}, //
+
22226 {3.81107783, 3.8178277}, //
+
22227 {3.80900669, 3.8205328}, //
+
22228 {3.80731225, 3.82261038}, //
+
22229 {3.80599451, 3.82406116}, //
+
22230 {3.80529022, 3.82467699}, //
+
22231 {3.80735302, 3.82473326}, //
+
22232 {3.81049013, 3.82498336}, //
+
22233 {3.81371117, 3.82540011}, //
+
22234 {3.81701612, 3.82598329}, //
+
22235 {3.82040501, 3.82673335}, //
+
22236 {3.82387781, 3.82765007}, //
+
22237 {3.82743454, 3.82873344}, //
+
22238 {3.83107519, 3.82998323}, //
+
22239 {3.8348, 3.83139992}, //
+
22240 {3.83852458, 3.8321135}, //
+
22241 {3.84216547, 3.83274317}, //
+
22242 {3.8457222, 3.83328891}, //
+
22243 {3.849195, 3.83375072}, //
+
22244 {3.85258389, 3.83412838}, //
+
22245 {3.85588884, 3.83442211}, //
+
22246 {3.85910988, 3.83463216}, //
+
22247 {3.86224699, 3.83475804}, //
+
22248 {3.86529994, 3.8348}, //
+
22249 {3.86819577, 3.83450675}, //
+
22250 {3.87083817, 3.83362722}, //
+
22251 {3.87322783, 3.83216119}, //
+
22252 {3.8753643, 3.83010864}, //
+
22253 {3.87724757, 3.82746983}, //
+
22254 {3.87887788, 3.8242445}, //
+
22255 {3.88025498, 3.82043266}, //
+
22256 {3.88137913, 3.81603456}, //
+
22257 {3.88225007, 3.81104994}, //
+
22258 });
+
22259 polys.push_back({
+
22260 {3.24815798, 3.30994081}, //
+
22261 {3.24782228, 3.31546664}, //
+
22262 {3.24752831, 3.32030177}, //
+
22263 {3.24668884, 3.3341167}, //
+
22264 {3.2461431, 3.34309626}, //
+
22265 {3.24551368, 3.35345745}, //
+
22266 {3.24480009, 3.36520004}, //
+
22267 {3.24390793, 3.37788391}, //
+
22268 {3.24272108, 3.39106917}, //
+
22269 {3.24123883, 3.40475559}, //
+
22270 {3.23946166, 3.41894317}, //
+
22271 {3.23738956, 3.43363214}, //
+
22272 {3.23502231, 3.44882226}, //
+
22273 {3.23235989, 3.46451354}, //
+
22274 {3.22940254, 3.48070621}, //
+
22275 {3.22615004, 3.49740005}, //
+
22276 {3.22253084, 3.51425123}, //
+
22277 {3.21845126, 3.5308938}, //
+
22278 {3.21391106, 3.54732776}, //
+
22279 {3.20891047, 3.56355309}, //
+
22280 {3.20344949, 3.57956982}, //
+
22281 {3.19752789, 3.59537768}, //
+
22282 {3.19114566, 3.61097717}, //
+
22283 {3.18430305, 3.62636781}, //
+
22284 {3.17700005, 3.64155006}, //
+
22285 {3.16580439, 3.66410995}, //
+
22286 {3.15481734, 3.68507838}, //
+
22287 {3.14403892, 3.70445561}, //
+
22288 {3.1334691, 3.7222414}, //
+
22289 {3.12310791, 3.73843575}, //
+
22290 {3.11295557, 3.75303888}, //
+
22291 {3.10301185, 3.76605058}, //
+
22292 {3.0932765, 3.77747107}, //
+
22293 {3.08375001, 3.78730011}, //
+
22294 {3.07486176, 3.79584193}, //
+
22295 {3.06701922, 3.80337906}, //
+
22296 {3.06022215, 3.80991101}, //
+
22297 {3.04139996, 3.82800007}, //
+
22298 {3.04369807, 3.82717109}, //
+
22299 {3.04608154, 3.82617283}, //
+
22300 {3.04854989, 3.82500553}, //
+
22301 {3.05110359, 3.8236692}, //
+
22302 {3.05374265, 3.82216358}, //
+
22303 {3.05646658, 3.82048893}, //
+
22304 {3.05927587, 3.818645}, //
+
22305 {3.06217027, 3.81663203}, //
+
22306 {3.06515002, 3.81445003}, //
+
22307 {3.07353282, 3.81198454}, //
+
22308 {3.08212543, 3.80909944}, //
+
22309 {3.09092784, 3.80579448}, //
+
22310 {3.09994006, 3.80206966}, //
+
22311 {3.10916233, 3.79792523}, //
+
22312 {3.11859441, 3.79336119}, //
+
22313 {3.12823653, 3.78837705}, //
+
22314 {3.13808823, 3.78297353}, //
+
22315 {3.14814997, 3.77714992}, //
+
22316 {3.15801358, 3.77049947}, //
+
22317 {3.16724873, 3.76259208}, //
+
22318 {3.17585564, 3.75342774}, //
+
22319 {3.18383384, 3.74300671}, //
+
22320 {3.19118404, 3.73132896}, //
+
22321 {3.19790554, 3.71839452}, //
+
22322 {3.2039988, 3.70420313}, //
+
22323 {3.2094636, 3.68875504}, //
+
22324 {3.21429992, 3.67205}, //
+
22325 {3.21867537, 3.65025735}, //
+
22326 {3.22275686, 3.62859082}, //
+
22327 {3.22654438, 3.60704994}, //
+
22328 {3.23003817, 3.58563519}, //
+
22329 {3.23323822, 3.56434631}, //
+
22330 {3.23614454, 3.54318333}, //
+
22331 {3.2387569, 3.52214622}, //
+
22332 {3.24107528, 3.50123525}, //
+
22333 {3.24309993, 3.48044991}, //
+
22334 {3.24488401, 3.46047091}, //
+
22335 {3.24645805, 3.44195628}, //
+
22336 {3.24782228, 3.42490554}, //
+
22337 {3.24897647, 3.40931916}, //
+
22338 {3.24992108, 3.39519691}, //
+
22339 {3.25065565, 3.3825388}, //
+
22340 {3.25118017, 3.37134504}, //
+
22341 {3.25149512, 3.36161542}, //
+
22342 {3.25160003, 3.35334992}, //
+
22343 {3.25160003, 3.34380054}, //
+
22344 {3.25160003, 3.3426044}, //
+
22345 {3.25160003, 3.34144998}, //
+
22346 {3.25157905, 3.34032726}, //
+
22347 {3.2515161, 3.33920312}, //
+
22348 {3.2514112, 3.33807778}, //
+
22349 {3.2512641, 3.33695126}, //
+
22350 {3.25107527, 3.33582354}, //
+
22351 {3.25084448, 3.33469439}, //
+
22352 {3.25057149, 3.33356428}, //
+
22353 {3.25025678, 3.33243275}, //
+
22354 {3.2499001, 3.33130002}, //
+
22355 {3.24954319, 3.33018756}, //
+
22356 {3.24922848, 3.3291173}, //
+
22357 {3.24895549, 3.328089}, //
+
22358 {3.2487247, 3.32710242}, //
+
22359 {3.24853587, 3.32615805}, //
+
22360 {3.24838901, 3.32525563}, //
+
22361 {3.24828386, 3.32439518}, //
+
22362 {3.24822092, 3.32357645}, //
+
22363 {3.24819994, 3.32279992}, //
+
22364 {3.24819994, 3.32137275}, //
+
22365 {3.24819994, 3.3207221}, //
+
22366 {3.24819994, 3.32011366}, //
+
22367 {3.24819994, 3.31696415}, //
+
22368 {3.24819994, 3.31659436}, //
+
22369 {3.24819994, 3.31622338}, //
+
22370 {3.24819994, 3.31359434}, //
+
22371 {3.24819994, 3.31321669}, //
+
22372 {3.24819994, 3.31283879}, //
+
22373 {3.24819994, 3.31027842}, //
+
22374 {3.24819994, 3.31000566}, //
+
22375 {3.24819994, 3.30977464}, //
+
22376 {3.24819994, 3.30925012}, //
+
22377 });
+
22378 polys.push_back({
+
22379 {3.88225007, 3.81104994}, //
+
22380 {3.88225007, 3.81104994}, //
+
22381 {3.88225007, 3.81104994}, //
+
22382 });
+
22383 polys.push_back({
+
22384 {4.25524998, 3.73309994}, //
+
22385 {4.25524998, 3.73309994}, //
+
22386 {4.25524998, 3.73309994}, //
+
22387 });
+
22388 polys.push_back({
+
22389 {4.19759989, 2.83964992}, //
+
22390 {4.19776726, 2.84042525}, //
+
22391 {4.19826937, 2.84199572}, //
+
22392 {4.19910574, 2.84436107}, //
+
22393 {4.20027637, 2.84752154}, //
+
22394 {4.20178223, 2.85147715}, //
+
22395 {4.20362234, 2.85622787}, //
+
22396 {4.20579672, 2.86177349}, //
+
22397 {4.20830631, 2.86811423}, //
+
22398 {4.21115017, 2.8752501}, //
+
22399 {4.21266031, 2.87830305}, //
+
22400 {4.21416998, 2.88144016}, //
+
22401 {4.21567774, 2.8846612}, //
+
22402 {4.21718454, 2.88796616}, //
+
22403 {4.21868992, 2.89135504}, //
+
22404 {4.22019434, 2.89482784}, //
+
22405 {4.22169733, 2.89838457}, //
+
22406 {4.22319937, 2.90202522}, //
+
22407 {4.22469997, 2.90575004}, //
+
22408 {4.23216009, 2.91807771}, //
+
22409 {4.23945045, 2.93094993}, //
+
22410 {4.24657202, 2.94436669}, //
+
22411 {4.25352478, 2.95832777}, //
+
22412 {4.26030779, 2.9728334}, //
+
22413 {4.266922, 2.98788333}, //
+
22414 {4.2733674, 3.00347781}, //
+
22415 {4.27964306, 3.0196166}, //
+
22416 {4.28574991, 3.03629994}, //
+
22417 {4.29165745, 3.05373693}, //
+
22418 {4.29731274, 3.07213712}, //
+
22419 {4.30271673, 3.09150004}, //
+
22420 {4.30786848, 3.11182594}, //
+
22421 {4.31276846, 3.13311481}, //
+
22422 {4.31741667, 3.15536666}, //
+
22423 {4.32181311, 3.17858148}, //
+
22424 {4.3259573, 3.20275927}, //
+
22425 {4.3298502, 3.22790003}, //
+
22426 {4.33181286, 3.25941038}, //
+
22427 {4.33319092, 3.2891643}, //
+
22428 {4.33398342, 3.31716108}, //
+
22429 {4.33419085, 3.34340119}, //
+
22430 {4.33381319, 3.36788464}, //
+
22431 {4.33284998, 3.39061117}, //
+
22432 {4.33130169, 3.4115808}, //
+
22433 {4.32916832, 3.43079376}, //
+
22434 {4.32644987, 3.44825006}, //
+
22435 {4.32368946, 3.4593513}, //
+
22436 {4.32143021, 3.47003269}, //
+
22437 {4.31967211, 3.48029447}, //
+
22438 {4.31841564, 3.49013638}, //
+
22439 {4.31765985, 3.49955869}, //
+
22440 {4.3174057, 3.50856113}, //
+
22441 {4.3176527, 3.51714373}, //
+
22442 {4.31840038, 3.5253067}, //
+
22443 {4.31965017, 3.53305006}, //
+
22444 {4.32105637, 3.54397345}, //
+
22445 {4.32225227, 3.55414391}, //
+
22446 {4.32323885, 3.5635612}, //
+
22447 {4.32401562, 3.57222533}, //
+
22448 {4.3245821, 3.58013654}, //
+
22449 {4.32493877, 3.58729434}, //
+
22450 {4.32508564, 3.59369946}, //
+
22451 {4.3250227, 3.59935117}, //
+
22452 {4.32474995, 3.60424995}, //
+
22453 {4.32426786, 3.60873032}, //
+
22454 {4.32357693, 3.61312652}, //
+
22455 {4.32267761, 3.61743879}, //
+
22456 {4.32156992, 3.62166739}, //
+
22457 {4.3202529, 3.62581182}, //
+
22458 {4.31872797, 3.62987232}, //
+
22459 {4.31699371, 3.63384867}, //
+
22460 {4.31505108, 3.63774133}, //
+
22461 {4.31290007, 3.64155006}, //
+
22462 {4.31132603, 3.64533758}, //
+
22463 {4.3096261, 3.6491673}, //
+
22464 {4.30779982, 3.65303898}, //
+
22465 {4.30584812, 3.65695238}, //
+
22466 {4.30377054, 3.66090798}, //
+
22467 {4.3015666, 3.66490555}, //
+
22468 {4.29923725, 3.66894507}, //
+
22469 {4.29678154, 3.67302656}, //
+
22470 {4.29419994, 3.67715001}, //
+
22471 {4.29156685, 3.68129444}, //
+
22472 {4.28893328, 3.68543887}, //
+
22473 {4.28103352, 3.69787216}, //
+
22474 {4.27839994, 3.70201659}, //
+
22475 {4.27050018, 3.71444988}, //
+
22476 {4.26797104, 3.71836424}, //
+
22477 {4.26565075, 3.72181797}, //
+
22478 {4.26353884, 3.72481108}, //
+
22479 {4.26163578, 3.7273438}, //
+
22480 {4.26122427, 3.72784686}, //
+
22481 {4.26126099, 3.72781658}, //
+
22482 {4.26393652, 3.72572231}, //
+
22483 {4.26694775, 3.72346115}, //
+
22484 {4.27029467, 3.72103333}, //
+
22485 {4.27397728, 3.71843886}, //
+
22486 {4.27799559, 3.71567774}, //
+
22487 {4.28235006, 3.71274996}, //
+
22488 {4.28766918, 3.70896244}, //
+
22489 {4.29307079, 3.70513272}, //
+
22490 {4.29855537, 3.70126104}, //
+
22491 {4.30412292, 3.69734764}, //
+
22492 {4.30977297, 3.69339204}, //
+
22493 {4.3155055, 3.68939447}, //
+
22494 {4.32132101, 3.68535495}, //
+
22495 {4.32721901, 3.68127346}, //
+
22496 {4.33319998, 3.67715001}, //
+
22497 {4.33889818, 3.67302656}, //
+
22498 {4.34392595, 3.66894507}, //
+
22499 {4.34828329, 3.66490555}, //
+
22500 {4.3519702, 3.66090798}, //
+
22501 {4.35498714, 3.65695238}, //
+
22502 {4.35733318, 3.65303898}, //
+
22503 {4.35900927, 3.6491673}, //
+
22504 {4.36001492, 3.64533758}, //
+
22505 {4.36035013, 3.64155006}, //
+
22506 {4.36043406, 3.63894868}, //
+
22507 {4.36068583, 3.63567829}, //
+
22508 {4.36110544, 3.6317389}, //
+
22509 {4.36169338, 3.62713027}, //
+
22510 {4.36244869, 3.6218524}, //
+
22511 {4.36337233, 3.61590552}, //
+
22512 {4.36446381, 3.60928941}, //
+
22513 {4.36572266, 3.60200429}, //
+
22514 {4.36714983, 3.59404993}, //
+
22515 {4.36791611, 3.58647466}, //
+
22516 {4.3687253, 3.57881546}, //
+
22517 {4.36957788, 3.57107234}, //
+
22518 {4.37047338, 3.56324506}, //
+
22519 {4.37141228, 3.55533385}, //
+
22520 {4.37239456, 3.54733896}, //
+
22521 {4.37341976, 3.53925991}, //
+
22522 {4.37448835, 3.53109694}, //
+
22523 {4.37559986, 3.52285004}, //
+
22524 {4.3766284, 3.5146451}, //
+
22525 {4.37744713, 3.50660801}, //
+
22526 {4.37805557, 3.498739}, //
+
22527 {4.37845421, 3.49103761}, //
+
22528 {4.37864304, 3.4835043}, //
+
22529 {4.37862206, 3.47613883}, //
+
22530 {4.37839127, 3.46894145}, //
+
22531 {4.37795067, 3.46191168}, //
+
22532 {4.37729979, 3.45504999}, //
+
22533 {4.37654448, 3.45111609}, //
+
22534 {4.37578869, 3.44684744}, //
+
22535 {4.37503338, 3.44224453}, //
+
22536 {4.37427759, 3.43730688}, //
+
22537 {4.37352228, 3.43203449}, //
+
22538 {4.37276649, 3.42642784}, //
+
22539 {4.37201118, 3.42048645}, //
+
22540 {4.3712554, 3.41421056}, //
+
22541 {4.37050009, 3.40759993}, //
+
22542 {4.36973381, 3.39771676}, //
+
22543 {4.36892462, 3.3876667}, //
+
22544 {4.36807203, 3.37744999}, //
+
22545 {4.36717653, 3.36706662}, //
+
22546 {4.36623764, 3.3565166}, //
+
22547 {4.36525536, 3.34579992}, //
+
22548 {4.36423016, 3.33491659}, //
+
22549 {4.36316156, 3.32386661}, //
+
22550 {4.36205006, 3.31264997}, //
+
22551 {4.3609376, 3.30143332}, //
+
22552 {4.3598671, 3.29038334}, //
+
22553 {4.35883904, 3.27950001}, //
+
22554 {4.35785246, 3.26878333}, //
+
22555 {4.35690784, 3.25823331}, //
+
22556 {4.35600567, 3.24784994}, //
+
22557 {4.35514498, 3.23763323}, //
+
22558 {4.35432673, 3.22758341}, //
+
22559 {4.35354996, 3.2177}, //
+
22560 {4.35334063, 3.20398712}, //
+
22561 {4.35271311, 3.18998146}, //
+
22562 {4.35166645, 3.17568326}, //
+
22563 {4.35020208, 3.16109252}, //
+
22564 {4.34831858, 3.14620924}, //
+
22565 {4.34601688, 3.13103342}, //
+
22566 {4.34329653, 3.11556482}, //
+
22567 {4.34015751, 3.09980369}, //
+
22568 {4.33659983, 3.08375001}, //
+
22569 {4.33254004, 3.06779075}, //
+
22570 {4.32789373, 3.05229068}, //
+
22571 {4.32266092, 3.03725004}, //
+
22572 {4.31684208, 3.0226686}, //
+
22573 {4.31043625, 3.00854635}, //
+
22574 {4.30344439, 2.9948833}, //
+
22575 {4.29586601, 2.98167968}, //
+
22576 {4.28770113, 2.96893525}, //
+
22577 {4.27895021, 2.95665002}, //
+
22578 {4.2751832, 2.94994569}, //
+
22579 {4.27141666, 2.9434104}, //
+
22580 {4.26765013, 2.93704438}, //
+
22581 {4.26388311, 2.93084764}, //
+
22582 {4.26011658, 2.92481971}, //
+
22583 {4.25635004, 2.91896105}, //
+
22584 {4.2525835, 2.91327167}, //
+
22585 {4.24881649, 2.90775132}, //
+
22586 {4.24504995, 2.90240002}, //
+
22587 {4.2399292, 2.8964715}, //
+
22588 {4.23509932, 2.89075303}, //
+
22589 {4.23056126, 2.88524437}, //
+
22590 {4.22631407, 2.87994576}, //
+
22591 {4.2223587, 2.87485671}, //
+
22592 {4.21869421, 2.86997771}, //
+
22593 {4.21532154, 2.86530852}, //
+
22594 {4.21224022, 2.86084938}, //
+
22595 {4.20944977, 2.85660005}, //
+
22596 {4.20696306, 2.85270691}, //
+
22597 {4.20476866, 2.84931612}, //
+
22598 {4.20286655, 2.84642768}, //
+
22599 {4.20125723, 2.84404206}, //
+
22600 {4.19994068, 2.84215856}, //
+
22601 {4.19891644, 2.84077787}, //
+
22602 {4.19818497, 2.8398993}, //
+
22603 {4.19774628, 2.83952355}, //
+
22604 });
+
22605 polys.push_back({
+
22606 {1.40709996, 3.46184993}, //
+
22607 {1.40643084, 3.46201539}, //
+
22608 {1.40559447, 3.46222234}, //
+
22609 {1.40291786, 3.46288395}, //
+
22610 {1.40107775, 3.46333885}, //
+
22611 {1.39890313, 3.46387649}, //
+
22612 {1.39639378, 3.46449685}, //
+
22613 {1.39355004, 3.46519995}, //
+
22614 {1.39051723, 3.46597648}, //
+
22615 {1.3874414, 3.46679497}, //
+
22616 {1.38432217, 3.46765566}, //
+
22617 {1.3811599, 3.46855807}, //
+
22618 {1.37795436, 3.46950245}, //
+
22619 {1.37470555, 3.47048879}, //
+
22620 {1.37141359, 3.47151732}, //
+
22621 {1.36807835, 3.47258759}, //
+
22622 {1.36469996, 3.47370005}, //
+
22623 {1.36133206, 3.47481179}, //
+
22624 {1.35800612, 3.47588015}, //
+
22625 {1.35472226, 3.47690558}, //
+
22626 {1.35148025, 3.47788763}, //
+
22627 {1.34828019, 3.47882652}, //
+
22628 {1.34512222, 3.47972226}, //
+
22629 {1.34200621, 3.48057461}, //
+
22630 {1.33893216, 3.48138404}, //
+
22631 {1.33589995, 3.48215008}, //
+
22632 {1.33181918, 3.48298883}, //
+
22633 {1.32710993, 3.48399448}, //
+
22634 {1.32177222, 3.48516655}, //
+
22635 {1.31580615, 3.48650551}, //
+
22636 {1.30921173, 3.48801112}, //
+
22637 {1.30198884, 3.48968339}, //
+
22638 {1.2941376, 3.49152231}, //
+
22639 {1.285658, 3.49352789}, //
+
22640 {1.27655005, 3.49569988}, //
+
22641 {1.26713824, 3.49796605}, //
+
22642 {1.25772536, 3.50023079}, //
+
22643 {1.24831116, 3.50249434}, //
+
22644 {1.23889565, 3.50475669}, //
+
22645 {1.22947896, 3.50701785}, //
+
22646 {1.22006106, 3.50927782}, //
+
22647 {1.21064198, 3.51153636}, //
+
22648 {1.20122159, 3.51379395}, //
+
22649 {1.1918, 3.5160501}, //
+
22650 {1.18273389, 3.51823282}, //
+
22651 {1.1743803, 3.52024746}, //
+
22652 {1.16673887, 3.52209449}, //
+
22653 {1.15980983, 3.52377343}, //
+
22654 {1.15359318, 3.52528453}, //
+
22655 {1.14808893, 3.52662778}, //
+
22656 {1.14329696, 3.52780318}, //
+
22657 {1.13921726, 3.5288105}, //
+
22658 {1.13584995, 3.52964997}, //
+
22659 {1.1335938, 3.53036356}, //
+
22660 {1.13133645, 3.53099322}, //
+
22661 {1.12907779, 3.53153896}, //
+
22662 {1.12681794, 3.53200054}, //
+
22663 {1.12455678, 3.53237844}, //
+
22664 {1.12229443, 3.53267217}, //
+
22665 {1.12003088, 3.53288221}, //
+
22666 {1.11776602, 3.5330081}, //
+
22667 {1.11549997, 3.53305006}, //
+
22668 {1.10763204, 3.53518033}, //
+
22669 {1.09909511, 3.53705978}, //
+
22670 {1.08988893, 3.5386889}, //
+
22671 {1.08001363, 3.5400672}, //
+
22672 {1.06946909, 3.54119515}, //
+
22673 {1.05825555, 3.5420723}, //
+
22674 {1.04637289, 3.54269886}, //
+
22675 {1.03382099, 3.54307461}, //
+
22676 {1.02059996, 3.54320002}, //
+
22677 {1.01455557, 3.54320002}, //
+
22678 {1.01304448, 3.54320002}, //
+
22679 {1.01153338, 3.54320002}, //
+
22680 {1.01002216, 3.54320002}, //
+
22681 {1.00851107, 3.54320002}, //
+
22682 {1.00699997, 3.54320002}, //
+
22683 {0.998669147, 3.54317904}, //
+
22684 {0.990254343, 3.54311609}, //
+
22685 {0.981755555, 3.54301119}, //
+
22686 {0.973172843, 3.54286408}, //
+
22687 {0.964506149, 3.54267526}, //
+
22688 {0.955755532, 3.54244447}, //
+
22689 {0.946920991, 3.54217172}, //
+
22690 {0.938002467, 3.54185677}, //
+
22691 {0.92900002, 3.54150009}, //
+
22692 {0.920133352, 3.54110122}, //
+
22693 {0.911599994, 3.54066038}, //
+
22694 {0.903400004, 3.54017782}, //
+
22695 {0.895533323, 3.53965306}, //
+
22696 {0.888000011, 3.53908634}, //
+
22697 {0.880800009, 3.53847766}, //
+
22698 {0.873933315, 3.53782725}, //
+
22699 {0.867399991, 3.53713465}, //
+
22700 {0.861199975, 3.53640008}, //
+
22701 {0.858881474, 3.53644204}, //
+
22702 {0.856437027, 3.53656793}, //
+
22703 {0.853866696, 3.53677773}, //
+
22704 {0.851170361, 3.5370717}, //
+
22705 {0.848348141, 3.53744936}, //
+
22706 {0.845399976, 3.53791118}, //
+
22707 {0.842325926, 3.53845668}, //
+
22708 {0.839125931, 3.53908634}, //
+
22709 {0.835799992, 3.53979993}, //
+
22710 {0.83239013, 3.54057646}, //
+
22711 {0.828938246, 3.54139495}, //
+
22712 {0.82544446, 3.54225564}, //
+
22713 {0.821908653, 3.54315805}, //
+
22714 {0.818330884, 3.54410243}, //
+
22715 {0.814711094, 3.54508901}, //
+
22716 {0.811049402, 3.54611731}, //
+
22717 {0.807345688, 3.54718757}, //
+
22718 {0.803600013, 3.54830003}, //
+
22719 {0.799895704, 3.54945374}, //
+
22720 {0.796316028, 3.55064821}, //
+
22721 {0.792861104, 3.55188322}, //
+
22722 {0.789530873, 3.55315924}, //
+
22723 {0.786325336, 3.55447602}, //
+
22724 {0.783244431, 3.55583334}, //
+
22725 {0.780288279, 3.55723143}, //
+
22726 {0.77745676, 3.55867028}, //
+
22727 {0.774749994, 3.56014991}, //
+
22728 {0.77226299, 3.56157708}, //
+
22729 {0.768166661, 3.56392789}, //
+
22730 {0.765240729, 3.56560683}, //
+
22731 {0.764216661, 3.56619453}, //
+
22732 {0.763485193, 3.56661415}, //
+
22733 {0.763046324, 3.56686616}, //
+
22734 {0.762899995, 3.56695008}, //
+
22735 {0.772943199, 3.56695008}, //
+
22736 {0.790000021, 3.56695008}, //
+
22737 {0.793891966, 3.56770492}, //
+
22738 {0.798034549, 3.56845856}, //
+
22739 {0.802427769, 3.56921101}, //
+
22740 {0.807071626, 3.56996226}, //
+
22741 {0.811966062, 3.57071233}, //
+
22742 {0.817111135, 3.5714612}, //
+
22743 {0.822506785, 3.57220864}, //
+
22744 {0.828153074, 3.57295489}, //
+
22745 {0.83405, 3.57369995}, //
+
22746 {0.840083361, 3.57441354}, //
+
22747 {0.846116662, 3.5750432}, //
+
22748 {0.852150023, 3.57558894}, //
+
22749 {0.858183324, 3.57605052}, //
+
22750 {0.864216685, 3.57642841}, //
+
22751 {0.870249987, 3.57672215}, //
+
22752 {0.876283348, 3.57693219}, //
+
22753 {0.882316649, 3.57705808}, //
+
22754 {0.88835001, 3.57710004}, //
+
22755 {0.897707999, 3.57705808}, //
+
22756 {0.907693207, 3.57693219}, //
+
22757 {0.918305576, 3.57672215}, //
+
22758 {0.929545045, 3.57642841}, //
+
22759 {0.941411734, 3.57605052}, //
+
22760 {0.953905582, 3.57558894}, //
+
22761 {0.967026532, 3.5750432}, //
+
22762 {0.980774701, 3.57441354}, //
+
22763 {0.99515003, 3.57369995}, //
+
22764 {1.00956726, 3.57287097}, //
+
22765 {1.02344131, 3.57187295}, //
+
22766 {1.03677225, 3.57070565}, //
+
22767 {1.04955983, 3.56936908}, //
+
22768 {1.06180429, 3.56786346}, //
+
22769 {1.07350552, 3.56618881}, //
+
22770 {1.08466363, 3.56434512}, //
+
22771 {1.09527838, 3.56233215}, //
+
22772 {1.10535002, 3.56014991}, //
+
22773 {1.11309254, 3.55787277}, //
+
22774 {1.12125373, 3.55555248}, //
+
22775 {1.12983334, 3.5531888}, //
+
22776 {1.1388315, 3.5507822}, //
+
22777 {1.1482482, 3.54833221}, //
+
22778 {1.15808332, 3.54583883}, //
+
22779 {1.16833699, 3.54330254}, //
+
22780 {1.17900932, 3.54072285}, //
+
22781 {1.19009995, 3.5381}, //
+
22782 {1.20131671, 3.53546596}, //
+
22783 {1.2123667, 3.53283095}, //
+
22784 {1.22325003, 3.53019452}, //
+
22785 {1.23396671, 3.5275569}, //
+
22786 {1.24451661, 3.52491784}, //
+
22787 {1.25489998, 3.52227783}, //
+
22788 {1.26511669, 3.51963639}, //
+
22789 {1.27516663, 3.51699376}, //
+
22790 {1.28505003, 3.51434994}, //
+
22791 {1.29443085, 3.51177955}, //
+
22792 {1.30297351, 3.50933528}, //
+
22793 {1.31067777, 3.50701666}, //
+
22794 {1.31754386, 3.50482416}, //
+
22795 {1.32357156, 3.50275731}, //
+
22796 {1.3287611, 3.50081658}, //
+
22797 {1.33311236, 3.49900174}, //
+
22798 {1.33662534, 3.49731302}, //
+
22799 {1.33930004, 3.49574995}, //
+
22800 {1.34087348, 3.49497342}, //
+
22801 {1.34257162, 3.49415493}, //
+
22802 {1.34439445, 3.49329448}, //
+
22803 {1.34634197, 3.49239206}, //
+
22804 {1.34841418, 3.49144745}, //
+
22805 {1.35061109, 3.49046111}, //
+
22806 {1.35293269, 3.48943281}, //
+
22807 {1.35537899, 3.48836231}, //
+
22808 {1.35794997, 3.48725009}, //
+
22809 {1.36058331, 3.48609567}, //
+
22810 {1.36321664, 3.48489928}, //
+
22811 {1.36584997, 3.48366117}, //
+
22812 {1.3684833, 3.48238087}, //
+
22813 {1.37111664, 3.4810586}, //
+
22814 {1.37374997, 3.47969437}, //
+
22815 {1.3763833, 3.47828817}, //
+
22816 {1.37901664, 3.47684002}, //
+
22817 {1.38164997, 3.4753499}, //
+
22818 {1.38423085, 3.47389126}, //
+
22819 {1.38668454, 3.47251534}, //
+
22820 {1.38901114, 3.47122216}, //
+
22821 {1.39121044, 3.47001171}, //
+
22822 {1.39328277, 3.46888399}, //
+
22823 {1.39522779, 3.467839}, //
+
22824 {1.39704573, 3.46687651}, //
+
22825 {1.39873648, 3.46599698}, //
+
22826 {1.40030003, 3.46519995}, //
+
22827 {1.4017272, 3.46449685}, //
+
22828 {1.40298641, 3.46387649}, //
+
22829 {1.40407777, 3.46333885}, //
+
22830 {1.40575683, 3.46251178}, //
+
22831 {1.40634441, 3.46222234}, //
+
22832 {1.40676415, 3.46201539}, //
+
22833 {1.40701604, 3.46189141}, //
+
22834 });
+
22835 polys.push_back({
+
22836 {4.02898884, 3.07886672}, //
+
22837 {4.02971935, 3.08428526}, //
+
22838 {4.03180552, 3.09976673}, //
+
22839 {4.03316164, 3.10982966}, //
+
22840 {4.03472662, 3.12144065}, //
+
22841 {4.03649998, 3.13459992}, //
+
22842 {4.03845119, 3.14883709}, //
+
22843 {4.04052734, 3.16365933}, //
+
22844 {4.04272795, 3.17906666}, //
+
22845 {4.04505301, 3.1950593}, //
+
22846 {4.04750299, 3.21163702}, //
+
22847 {4.05007792, 3.22880006}, //
+
22848 {4.05277729, 3.24654818}, //
+
22849 {4.05560112, 3.26488137}, //
+
22850 {4.05854988, 3.28379989}, //
+
22851 {4.06155062, 3.30291677}, //
+
22852 {4.06450796, 3.32182217}, //
+
22853 {4.06742239, 3.34051657}, //
+
22854 {4.07029343, 3.35899997}, //
+
22855 {4.07312107, 3.37727213}, //
+
22856 {4.07590532, 3.39533329}, //
+
22857 {4.07864714, 3.41318345}, //
+
22858 {4.08134508, 3.43082213}, //
+
22859 {4.08400011, 3.44825006}, //
+
22860 {4.08653879, 3.46508098}, //
+
22861 {4.08886671, 3.48090672}, //
+
22862 {4.09098339, 3.49572778}, //
+
22863 {4.09288883, 3.5095439}, //
+
22864 {4.09458351, 3.52235484}, //
+
22865 {4.09606647, 3.53416109}, //
+
22866 {4.09733868, 3.54496241}, //
+
22867 {4.09840012, 3.55475855}, //
+
22868 {4.09924984, 3.56355}, //
+
22869 {4.09922886, 3.56199932}, //
+
22870 {4.09916592, 3.55885863}, //
+
22871 {4.09906101, 3.55412769}, //
+
22872 {4.09891415, 3.54780674}, //
+
22873 {4.09872532, 3.53989577}, //
+
22874 {4.09849453, 3.53039455}, //
+
22875 {4.09822178, 3.51930308}, //
+
22876 {4.09790659, 3.5066216}, //
+
22877 {4.09754992, 3.4923501}, //
+
22878 {4.09711981, 3.47709441}, //
+
22879 {4.09656239, 3.46146107}, //
+
22880 {4.09587765, 3.44545007}, //
+
22881 {4.09506607, 3.42906117}, //
+
22882 {4.09412718, 3.41229439}, //
+
22883 {4.09306097, 3.39514995}, //
+
22884 {4.09186792, 3.37762785}, //
+
22885 {4.09054756, 3.35972786}, //
+
22886 {4.08909988, 3.34144998}, //
+
22887 {4.08746338, 3.32322407}, //
+
22888 {4.08557653, 3.30545735}, //
+
22889 {4.08343887, 3.28815007}, //
+
22890 {4.0810504, 3.27130175}, //
+
22891 {4.07841158, 3.25491285}, //
+
22892 {4.07552242, 3.23898339}, //
+
22893 {4.07238197, 3.22351289}, //
+
22894 {4.06899118, 3.20850182}, //
+
22895 {4.06535006, 3.19394994}, //
+
22896 {4.06317759, 3.19020438}, //
+
22897 {4.06117201, 3.18650055}, //
+
22898 {4.05933332, 3.18283892}, //
+
22899 {4.05766106, 3.17921925}, //
+
22900 {4.05615568, 3.1756413}, //
+
22901 {4.05481672, 3.17210555}, //
+
22902 {4.05364466, 3.16861176}, //
+
22903 {4.05263901, 3.16515994}, //
+
22904 {4.05179977, 3.16175008}, //
+
22905 {4.05104446, 3.15840244}, //
+
22906 {4.05028868, 3.15513754}, //
+
22907 {4.04953337, 3.1519556}, //
+
22908 {4.04877758, 3.14885616}, //
+
22909 {4.04802227, 3.14583945}, //
+
22910 {4.04726648, 3.14290547}, //
+
22911 {4.04651117, 3.14005423}, //
+
22912 {4.04575539, 3.13728571}, //
+
22913 {4.04500008, 3.13459992}, //
+
22914 {4.04427576, 3.13200808}, //
+
22915 {4.04359245, 3.12949872}, //
+
22916 {4.04295015, 3.12707233}, //
+
22917 {4.04234838, 3.12472844}, //
+
22918 {4.04178715, 3.12246728}, //
+
22919 {4.04126644, 3.12028885}, //
+
22920 {4.04078722, 3.11819315}, //
+
22921 {4.04034805, 3.11618018}, //
+
22922 {4.03994989, 3.11424994}, //
+
22923 {4.03957224, 3.11239266}, //
+
22924 {4.03919458, 3.11057591}, //
+
22925 {4.03881645, 3.10879993}, //
+
22926 {4.0384388, 3.10706472}, //
+
22927 {4.03806114, 3.10537028}, //
+
22928 {4.03768349, 3.10371661}, //
+
22929 {4.03730536, 3.10210371}, //
+
22930 {4.0369277, 3.10053158}, //
+
22931 {4.03655005, 3.09899998}, //
+
22932 {4.03617239, 3.09752035}, //
+
22933 {4.03579426, 3.0960815}, //
+
22934 {4.0354166, 3.09468341}, //
+
22935 {4.03503895, 3.09332585}, //
+
22936 {4.03466129, 3.09200931}, //
+
22937 {4.03428316, 3.09073329}, //
+
22938 {4.03390551, 3.08949804}, //
+
22939 {4.03352785, 3.0883038}, //
+
22940 {4.0331502, 3.0871501}, //
+
22941 {4.03277206, 3.08604813}, //
+
22942 {4.03239441, 3.08498693}, //
+
22943 {4.03201675, 3.08396673}, //
+
22944 {4.0316391, 3.08298707}, //
+
22945 {4.03126097, 3.08204818}, //
+
22946 {4.03088331, 3.08115005}, //
+
22947 {4.03050566, 3.0802927}, //
+
22948 {4.030128, 3.07947588}, //
+
22949 {4.02974987, 3.07870007}, //
+
22950 {4.0293932, 3.0779655}, //
+
22951 {4.02907848, 3.07727289}, //
+
22952 {4.02880573, 3.07662225}, //
+
22953 {4.02862072, 3.07613492}, //
+
22954 });
+
22955 polys.push_back({
+
22956 {0.545837045, 3.44496226}, //
+
22957 {0.545648158, 3.44514942}, //
+
22958 {0.540799975, 3.44994998}, //
+
22959 {0.539645672, 3.45110369}, //
+
22960 {0.538449407, 3.45229816}, //
+
22961 {0.53721112, 3.45353341}, //
+
22962 {0.535930872, 3.45480919}, //
+
22963 {0.534608662, 3.45612597}, //
+
22964 {0.533244431, 3.45748329}, //
+
22965 {0.531838298, 3.45888138}, //
+
22966 {0.530390143, 3.46032047}, //
+
22967 {0.528900027, 3.4618001}, //
+
22968 {0.527420342, 3.46335244}, //
+
22969 {0.525981486, 3.46498775}, //
+
22970 {0.52458334, 3.46670556}, //
+
22971 {0.523225904, 3.4685061}, //
+
22972 {0.521909237, 3.4703896}, //
+
22973 {0.52063334, 3.4723556}, //
+
22974 {0.519398153, 3.47440434}, //
+
22975 {0.518203676, 3.4765358}, //
+
22976 {0.517050028, 3.47874999}, //
+
22977 {0.515990138, 3.48097467}, //
+
22978 {0.515054941, 3.48311543}, //
+
22979 {0.514244437, 3.48517227}, //
+
22980 {0.513558626, 3.48714495}, //
+
22981 {0.512997508, 3.48903394}, //
+
22982 {0.512561083, 3.490839}, //
+
22983 {0.51224941, 3.49255991}, //
+
22984 {0.512062371, 3.49419689}, //
+
22985 {0.512000024, 3.49574995}, //
+
22986 {0.512796938, 3.49876118}, //
+
22987 {0.513676524, 3.50177217}, //
+
22988 {0.514638901, 3.50478339}, //
+
22989 {0.515683949, 3.50779438}, //
+
22990 {0.516811728, 3.51080561}, //
+
22991 {0.518022239, 3.5138166}, //
+
22992 {0.519315422, 3.51682782}, //
+
22993 {0.520691335, 3.51983881}, //
+
22994 {0.52214998, 3.52285004}, //
+
22995 {0.523619115, 3.52581978}, //
+
22996 {0.525004327, 3.52870679}, //
+
22997 {0.526305556, 3.53151107}, //
+
22998 {0.527522862, 3.53423262}, //
+
22999 {0.528656185, 3.53687167}, //
+
23000 {0.529705584, 3.53942776}, //
+
23001 {0.530671, 3.54190135}, //
+
23002 {0.531552494, 3.54429197}, //
+
23003 {0.532350004, 3.5466001}, //
+
23004 {0.532370389, 3.54733467}, //
+
23005 {0.532431483, 3.54802728}, //
+
23006 {0.532533348, 3.54867768}, //
+
23007 {0.532675922, 3.54928637}, //
+
23008 {0.532859266, 3.54985309}, //
+
23009 {0.53308332, 3.55037785}, //
+
23010 {0.533348143, 3.5508604}, //
+
23011 {0.533653677, 3.55130124}, //
+
23012 {0.533999979, 3.55170012}, //
+
23013 {0.534944415, 3.55264449}, //
+
23014 {0.535364211, 3.55306411}, //
+
23015 {0.535511136, 3.55321121}, //
+
23016 {0.535700023, 3.55340004}, //
+
23017 {0.535700023, 3.55377221}, //
+
23018 {0.535700023, 3.55406165}, //
+
23019 {0.535700023, 3.55443406}, //
+
23020 {0.535700023, 3.55488896}, //
+
23021 {0.535700023, 3.5554266}, //
+
23022 {0.535700023, 3.55604696}, //
+
23023 {0.535700023, 3.55675006}, //
+
23024 {0.535700023, 3.55809331}, //
+
23025 {0.535700023, 3.55910063}, //
+
23026 {0.535700023, 3.55947828}, //
+
23027 {0.535700023, 3.55977225}, //
+
23028 {0.535700023, 3.55998206}, //
+
23029 {0.535700023, 3.56010795}, //
+
23030 {0.535700023, 3.56014991}, //
+
23031 {0.536455572, 3.55860734}, //
+
23032 {0.53721112, 3.55697966}, //
+
23033 {0.537966669, 3.55526662}, //
+
23034 {0.538722217, 3.55346847}, //
+
23035 {0.539477766, 3.5515852}, //
+
23036 {0.540233314, 3.54961658}, //
+
23037 {0.540988863, 3.54756308}, //
+
23038 {0.541744471, 3.54542398}, //
+
23039 {0.542500019, 3.54320002}, //
+
23040 {0.543213606, 3.54094386}, //
+
23041 {0.54384321, 3.53868651}, //
+
23042 {0.54438889, 3.53642774}, //
+
23043 {0.544850588, 3.534168}, //
+
23044 {0.545228422, 3.53190684}, //
+
23045 {0.545522213, 3.52964449}, //
+
23046 {0.545732081, 3.52738094}, //
+
23047 {0.545858026, 3.52511597}, //
+
23048 {0.545899987, 3.52285004}, //
+
23049 {0.545858026, 3.52139139}, //
+
23050 {0.545732081, 3.52001548}, //
+
23051 {0.545522213, 3.5187223}, //
+
23052 {0.545228422, 3.51751184}, //
+
23053 {0.544850588, 3.51638389}, //
+
23054 {0.54438889, 3.5153389}, //
+
23055 {0.54384321, 3.51437664}, //
+
23056 {0.543213606, 3.51349688}, //
+
23057 {0.542500019, 3.51270008}, //
+
23058 {0.541786432, 3.50960493}, //
+
23059 {0.541156769, 3.50634193}, //
+
23060 {0.540611088, 3.50291109}, //
+
23061 {0.540149391, 3.4993124}, //
+
23062 {0.539771616, 3.49554563}, //
+
23063 {0.539477766, 3.491611}, //
+
23064 {0.539267898, 3.48750854}, //
+
23065 {0.539141953, 3.48323822}, //
+
23066 {0.539099991, 3.47880006}, //
+
23067 {0.539141953, 3.47513771}, //
+
23068 {0.539267898, 3.47168398}, //
+
23069 {0.539477766, 3.46843886}, //
+
23070 {0.539771616, 3.46540236}, //
+
23071 {0.540149391, 3.46257472}, //
+
23072 {0.540611088, 3.45995545}, //
+
23073 {0.541156769, 3.45754504}, //
+
23074 {0.541786432, 3.45534325}, //
+
23075 {0.542500019, 3.45335007}, //
+
23076 {0.54438889, 3.44865561}, //
+
23077 {0.545228422, 3.4465692}, //
+
23078 {0.545522213, 3.44583893}, //
+
23079 {0.545899987, 3.44490004}, //
+
23080 });
+
23081 polys.push_back({
+
23082 {5.04071665, 3.3495667}, //
+
23083 {5.04084253, 3.35027599}, //
+
23084 {5.04122019, 3.35140371}, //
+
23085 {5.04185009, 3.3529501}, //
+
23086 {5.04273129, 3.3549149}, //
+
23087 {5.04386473, 3.35729814}, //
+
23088 {5.04524994, 3.36010003}, //
+
23089 {5.04680252, 3.36609077}, //
+
23090 {5.0484376, 3.3719964}, //
+
23091 {5.05015564, 3.37781668}, //
+
23092 {5.05195618, 3.38355184}, //
+
23093 {5.05383968, 3.38920188}, //
+
23094 {5.05580568, 3.39476657}, //
+
23095 {5.05785418, 3.40024638}, //
+
23096 {5.05998564, 3.40564084}, //
+
23097 {5.06220007, 3.41094995}, //
+
23098 {5.06442404, 3.41545129}, //
+
23099 {5.06656313, 3.41991043}, //
+
23100 {5.06861687, 3.42432785}, //
+
23101 {5.07058525, 3.42870307}, //
+
23102 {5.07246828, 3.43303633}, //
+
23103 {5.07426643, 3.43732786}, //
+
23104 {5.07597971, 3.4415772}, //
+
23105 {5.07760763, 3.44578457}, //
+
23106 {5.0791502, 3.44994998}, //
+
23107 {5.08053541, 3.45407343}, //
+
23108 {5.08166838, 3.45815492}, //
+
23109 {5.08255005, 3.46219444}, //
+
23110 {5.08317947, 3.46619201}, //
+
23111 {5.08355761, 3.47014761}, //
+
23112 {5.08368349, 3.47406101}, //
+
23113 {5.08355761, 3.47793269}, //
+
23114 {5.08317947, 3.48176241}, //
+
23115 {5.08255005, 3.48554993}, //
+
23116 {5.08179426, 3.48785806}, //
+
23117 {5.08103895, 3.49024868}, //
+
23118 {5.08028316, 3.49272227}, //
+
23119 {5.07952785, 3.49527836}, //
+
23120 {5.07877207, 3.49791718}, //
+
23121 {5.07801676, 3.50063896}, //
+
23122 {5.07726097, 3.50344324}, //
+
23123 {5.07650566, 3.50633025}, //
+
23124 {5.07574987, 3.50929999}, //
+
23125 {5.07572889, 3.51153445}, //
+
23126 {5.07566595, 3.51372719}, //
+
23127 {5.07556105, 3.51587772}, //
+
23128 {5.07541418, 3.51798654}, //
+
23129 {5.07522535, 3.52005315}, //
+
23130 {5.07499456, 3.5220778}, //
+
23131 {5.07472181, 3.52406049}, //
+
23132 {5.07440662, 3.52600121}, //
+
23133 {5.07404995, 3.52789998}, //
+
23134 {5.07396793, 3.5282588}, //
+
23135 {5.07429123, 3.52784443}, //
+
23136 {5.07574987, 3.52624989}, //
+
23137 {5.08179426, 3.51416111}, //
+
23138 {5.08255005, 3.51265001}, //
+
23139 {5.0832634, 3.51110792}, //
+
23140 {5.0838933, 3.50948215}, //
+
23141 {5.0844388, 3.50777221}, //
+
23142 {5.08490038, 3.50597835}, //
+
23143 {5.08527851, 3.50410056}, //
+
23144 {5.08557224, 3.50213885}, //
+
23145 {5.08578205, 3.50009322}, //
+
23146 {5.08590794, 3.49796367}, //
+
23147 {5.0859499, 3.49574995}, //
+
23148 {5.08590794, 3.49260259}, //
+
23149 {5.08578205, 3.48920441}, //
+
23150 {5.08557224, 3.48555565}, //
+
23151 {5.08527851, 3.48165607}, //
+
23152 {5.08490038, 3.47750616}, //
+
23153 {5.0844388, 3.47310567}, //
+
23154 {5.0838933, 3.46845436}, //
+
23155 {5.0832634, 3.46355247}, //
+
23156 {5.08255005, 3.45840001}, //
+
23157 {5.08179426, 3.45325875}, //
+
23158 {5.08103895, 3.44836783}, //
+
23159 {5.08028316, 3.44372773}, //
+
23160 {5.07952785, 3.43933821}, //
+
23161 {5.07877207, 3.4351995}, //
+
23162 {5.07801676, 3.43131113}, //
+
23163 {5.07726097, 3.42767334}, //
+
23164 {5.07650566, 3.42428637}, //
+
23165 {5.07574987, 3.42114997}, //
+
23166 {5.07566595, 3.41951346}, //
+
23167 {5.07541418, 3.41762662}, //
+
23168 {5.07499456, 3.41548896}, //
+
23169 {5.07440662, 3.41310072}, //
+
23170 {5.07365131, 3.41046166}, //
+
23171 {5.07272768, 3.40757227}, //
+
23172 {5.0716362, 3.40443206}, //
+
23173 {5.07037735, 3.40104127}, //
+
23174 {5.06895018, 3.3973999}, //
+
23175 {5.06742859, 3.39367533}, //
+
23176 {5.06586361, 3.39003468}, //
+
23177 {5.06425571, 3.38647771}, //
+
23178 {5.06260443, 3.3830049}, //
+
23179 {5.06090975, 3.37961602}, //
+
23180 {5.05917215, 3.37631106}, //
+
23181 {5.05739117, 3.37309003}, //
+
23182 {5.05556726, 3.36995316}, //
+
23183 {5.05369997, 3.36689997}, //
+
23184 {5.05188465, 3.36401415}, //
+
23185 {5.05019379, 3.36137891}, //
+
23186 {5.04862785, 3.35899448}, //
+
23187 {5.04718637, 3.3568604}, //
+
23188 {5.04586983, 3.35497713}, //
+
23189 {5.04467773, 3.35334444}, //
+
23190 {5.04361057, 3.35196233}, //
+
23191 {5.04266787, 3.35083079}, //
+
23192 {5.04185009, 3.34995008}, //
+
23193 {5.04122019, 3.34940362}, //
+
23194 {5.04084253, 3.34927583}, //
+
23195 });
+
23196 polys.push_back({
+
23197 {4.93515539, 3.45741105}, //
+
23198 {4.93674994, 3.46184993}, //
+
23199 {4.93677092, 3.46195436}, //
+
23200 {4.93693876, 3.46278882}, //
+
23201 {4.93708563, 3.4635191}, //
+
23202 {4.93750572, 3.4656055}, //
+
23203 {4.93844986, 3.47029996}, //
+
23204 {4.93882799, 3.47218823}, //
+
23205 {4.93920565, 3.47407532}, //
+
23206 {4.9395833, 3.47596121}, //
+
23207 {4.93996096, 3.47784567}, //
+
23208 {4.94033909, 3.47972894}, //
+
23209 {4.94071674, 3.48161101}, //
+
23210 {4.94099808, 3.48301172}, //
+
23211 {4.94081163, 3.48131609}, //
+
23212 {4.94052219, 3.47801113}, //
+
23213 {4.94031525, 3.4747901}, //
+
23214 {4.94019127, 3.47165298}, //
+
23215 {4.94014978, 3.46860003}, //
+
23216 {4.93937349, 3.46638584}, //
+
23217 {4.93855476, 3.46425438}, //
+
23218 {4.93769455, 3.46220565}, //
+
23219 {4.9367919, 3.46023941}, //
+
23220 {4.93584776, 3.45835614}, //
+
23221 {4.93486118, 3.4565556}, //
+
23222 {4.93467426, 3.45624304}, //
+
23223 });
+
23224 polys.push_back({
+
23225 {2.10574627, 1.97005427}, //
+
23226 {2.1061852, 1.97036731}, //
+
23227 {2.10691667, 1.97088885}, //
+
23228 {2.10925746, 1.97255802}, //
+
23229 {2.11086679, 1.97370553}, //
+
23230 {2.11276841, 1.97506177}, //
+
23231 {2.11496305, 1.97662652}, //
+
23232 {2.11745, 1.97839999}, //
+
23233 {2.12016726, 1.98037219}, //
+
23234 {2.12305236, 1.98251116}, //
+
23235 {2.12610555, 1.98481667}, //
+
23236 {2.12932658, 1.98728883}, //
+
23237 {2.13271546, 1.98992777}, //
+
23238 {2.13627219, 1.99273336}, //
+
23239 {2.13999701, 1.9957056}, //
+
23240 {2.14388943, 1.99884439}, //
+
23241 {2.14794993, 2.00215006}, //
+
23242 {2.15203142, 2.00555992}, //
+
23243 {2.15598702, 2.00901175}, //
+
23244 {2.15981674, 2.01250553}, //
+
23245 {2.16352034, 2.01604128}, //
+
23246 {2.16709805, 2.01961923}, //
+
23247 {2.17055011, 2.0232389}, //
+
23248 {2.17387581, 2.02690053}, //
+
23249 {2.17707586, 2.03060436}, //
+
23250 {2.18015003, 2.03434992}, //
+
23251 {2.18308759, 2.03812718}, //
+
23252 {2.1858561, 2.04190302}, //
+
23253 {2.18845558, 2.04567766}, //
+
23254 {2.19088578, 2.04945135}, //
+
23255 {2.19314694, 2.05322337}, //
+
23256 {2.19523883, 2.05699444}, //
+
23257 {2.19716167, 2.06076431}, //
+
23258 {2.19891548, 2.06453276}, //
+
23259 {2.20050001, 2.06830001}, //
+
23260 {2.20196915, 2.07217097}, //
+
23261 {2.20335436, 2.07625055}, //
+
23262 {2.20465565, 2.08053899}, //
+
23263 {2.20587277, 2.0850358}, //
+
23264 {2.20700622, 2.08974147}, //
+
23265 {2.2080555, 2.09465551}, //
+
23266 {2.20902109, 2.09977841}, //
+
23267 {2.20990252, 2.10510993}, //
+
23268 {2.21070004, 2.11065006}, //
+
23269 {2.21145487, 2.11628461}, //
+
23270 {2.21220875, 2.12187719}, //
+
23271 {2.2129612, 2.12742782}, //
+
23272 {2.21371245, 2.13293648}, //
+
23273 {2.21446228, 2.13840318}, //
+
23274 {2.21521115, 2.14382768}, //
+
23275 {2.2159586, 2.14921045}, //
+
23276 {2.21670485, 2.15455127}, //
+
23277 {2.2174499, 2.15984988}, //
+
23278 {2.21818447, 2.16572595}, //
+
23279 {2.21887708, 2.17130923}, //
+
23280 {2.21952772, 2.17659998}, //
+
23281 {2.2201364, 2.18159819}, //
+
23282 {2.22070312, 2.18630362}, //
+
23283 {2.22122788, 2.19071674}, //
+
23284 {2.22171044, 2.19483709}, //
+
23285 {2.22215128, 2.1986649}, //
+
23286 {2.22254992, 2.20219994}, //
+
23287 {2.22294879, 2.20548463}, //
+
23288 {2.22338939, 2.20856047}, //
+
23289 {2.22387218, 2.21142769}, //
+
23290 {2.22439694, 2.21408653}, //
+
23291 {2.22496367, 2.21653652}, //
+
23292 {2.22557211, 2.21877789}, //
+
23293 {2.22622275, 2.22081041}, //
+
23294 {2.22691536, 2.22263455}, //
+
23295 {2.22764993, 2.22425008}, //
+
23296 {2.228405, 2.22498465}, //
+
23297 {2.22915864, 2.22567725}, //
+
23298 {2.22991109, 2.2263279}, //
+
23299 {2.23066235, 2.22693634}, //
+
23300 {2.23141241, 2.22750306}, //
+
23301 {2.23216105, 2.22802782}, //
+
23302 {2.23290873, 2.22851038}, //
+
23303 {2.23365498, 2.22895122}, //
+
23304 {2.23440003, 2.22935009}, //
+
23305 {2.23628879, 2.23029447}, //
+
23306 {2.2367506, 2.23052526}, //
+
23307 {2.23763204, 2.23096609}, //
+
23308 {2.23779988, 2.23105001}, //
+
23309 {2.23926902, 2.23177409}, //
+
23310 {2.24065423, 2.2324574}, //
+
23311 {2.24195552, 2.23309994}, //
+
23312 {2.24317288, 2.23370194}, //
+
23313 {2.24430609, 2.23426294}, //
+
23314 {2.24535561, 2.23478341}, //
+
23315 {2.24632096, 2.23526287}, //
+
23316 {2.2472024, 2.2357018}, //
+
23317 {2.24799991, 2.23609996}, //
+
23318 {2.24871349, 2.23656106}, //
+
23319 {2.24934316, 2.23718882}, //
+
23320 {2.2498889, 2.23798323}, //
+
23321 {2.25035071, 2.23894453}, //
+
23322 {2.25072837, 2.24007225}, //
+
23323 {2.25102234, 2.24136662}, //
+
23324 {2.25123215, 2.24282789}, //
+
23325 {2.25135803, 2.24445558}, //
+
23326 {2.25139999, 2.24624991}, //
+
23327 {2.25131607, 2.24824309}, //
+
23328 {2.2510643, 2.25044513}, //
+
23329 {2.25064445, 2.25285554}, //
+
23330 {2.25005674, 2.25547481}, //
+
23331 {2.2493012, 2.25830245}, //
+
23332 {2.2483778, 2.26133895}, //
+
23333 {2.24728632, 2.26458406}, //
+
23334 {2.24602723, 2.26803756}, //
+
23335 {2.24460006, 2.27169991}, //
+
23336 {2.24394941, 2.27687287}, //
+
23337 {2.24350858, 2.28183579}, //
+
23338 {2.24327779, 2.28658891}, //
+
23339 {2.24325681, 2.29113221}, //
+
23340 {2.24344563, 2.29546547}, //
+
23341 {2.24384451, 2.29958892}, //
+
23342 {2.24445319, 2.30350256}, //
+
23343 {2.24527168, 2.30720615}, //
+
23344 {2.24629998, 2.31069994}, //
+
23345 {2.24745369, 2.31402659}, //
+
23346 {2.24864817, 2.31722832}, //
+
23347 {2.24988341, 2.32030559}, //
+
23348 {2.25115919, 2.32325792}, //
+
23349 {2.25247598, 2.32608581}, //
+
23350 {2.25383329, 2.328789}, //
+
23351 {2.25523138, 2.33136725}, //
+
23352 {2.25667048, 2.33382106}, //
+
23353 {2.2581501, 2.33614993}, //
+
23354 {2.25961924, 2.33991671}, //
+
23355 {2.26100421, 2.34368324}, //
+
23356 {2.2623055, 2.34745002}, //
+
23357 {2.26352286, 2.35121655}, //
+
23358 {2.26465607, 2.35498333}, //
+
23359 {2.26570559, 2.3587501}, //
+
23360 {2.26667094, 2.36251664}, //
+
23361 {2.26755238, 2.36628342}, //
+
23362 {2.26834989, 2.37004995}, //
+
23363 {2.26913714, 2.3730197}, //
+
23364 {2.27000928, 2.37590671}, //
+
23365 {2.27096677, 2.37871122}, //
+
23366 {2.27200937, 2.38143277}, //
+
23367 {2.27313709, 2.38407159}, //
+
23368 {2.27434993, 2.38662767}, //
+
23369 {2.27564812, 2.38910127}, //
+
23370 {2.27703142, 2.39149189}, //
+
23371 {2.27850008, 2.39380002}, //
+
23372 {2.28063035, 2.39844751}, //
+
23373 {2.2825098, 2.40334558}, //
+
23374 {2.28413892, 2.40849447}, //
+
23375 {2.28551722, 2.41389394}, //
+
23376 {2.28664517, 2.41954374}, //
+
23377 {2.28752232, 2.42544436}, //
+
23378 {2.28814888, 2.43159556}, //
+
23379 {2.28852463, 2.43799758}, //
+
23380 {2.28865004, 2.44464993}, //
+
23381 {2.2881062, 2.45155382}, //
+
23382 {2.2864747, 2.45870924}, //
+
23383 {2.28375554, 2.46611667}, //
+
23384 {2.27994871, 2.47377586}, //
+
23385 {2.27505422, 2.48168707}, //
+
23386 {2.26907229, 2.48985004}, //
+
23387 {2.26200247, 2.49826479}, //
+
23388 {2.25384498, 2.50693154}, //
+
23389 {2.24460006, 2.51585007}, //
+
23390 {2.23719192, 2.52250242}, //
+
23391 {2.23003459, 2.52890444}, //
+
23392 {2.22312784, 2.53505564}, //
+
23393 {2.21647167, 2.54095626}, //
+
23394 {2.21006608, 2.54660606}, //
+
23395 {2.20391107, 2.55200553}, //
+
23396 {2.19800687, 2.55715442}, //
+
23397 {2.19235301, 2.56205249}, //
+
23398 {2.18694997, 2.56669998}, //
+
23399 {2.18031859, 2.57124329}, //
+
23400 {2.17397952, 2.57582831}, //
+
23401 {2.16793323, 2.58045554}, //
+
23402 {2.16217971, 2.58512473}, //
+
23403 {2.15671849, 2.58983588}, //
+
23404 {2.15155005, 2.59458899}, //
+
23405 {2.14667416, 2.59938407}, //
+
23406 {2.1420908, 2.60422111}, //
+
23407 {2.13779998, 2.6091001}, //
+
23408 {2.13371849, 2.61414623}, //
+
23409 {2.12976289, 2.61948514}, //
+
23410 {2.12593341, 2.62511659}, //
+
23411 {2.12222958, 2.63104081}, //
+
23412 {2.11865187, 2.63725734}, //
+
23413 {2.11520004, 2.64376664}, //
+
23414 {2.1118741, 2.65056849}, //
+
23415 {2.10867405, 2.65766287}, //
+
23416 {2.10560012, 2.66505003}, //
+
23417 {2.09984064, 2.6767056}, //
+
23418 {2.09311843, 2.68907213}, //
+
23419 {2.08543324, 2.70215011}, //
+
23420 {2.07678509, 2.71593881}, //
+
23421 {2.06717396, 2.73043895}, //
+
23422 {2.05660009, 2.74565005}, //
+
23423 {2.04506302, 2.76157212}, //
+
23424 {2.03256297, 2.77820563}, //
+
23425 {2.01909995, 2.79555011}, //
+
23426 {2.005229, 2.81303096}, //
+
23427 {1.99148273, 2.83005118}, //
+
23428 {1.97786117, 2.84661102}, //
+
23429 {1.96436417, 2.86271048}, //
+
23430 {1.95099199, 2.8783493}, //
+
23431 {1.9377445, 2.89352775}, //
+
23432 {1.92462158, 2.90824556}, //
+
23433 {1.91162348, 2.92250299}, //
+
23434 {1.89874995, 2.93630004}, //
+
23435 {1.88455558, 2.95155501}, //
+
23436 {1.86910558, 2.96718645}, //
+
23437 {1.85239995, 2.98319435}, //
+
23438 {1.83443892, 2.99957895}, //
+
23439 {1.81522226, 3.01634002}, //
+
23440 {1.79474998, 3.03347778}, //
+
23441 {1.77302217, 3.05099201}, //
+
23442 {1.75003886, 3.0688827}, //
+
23443 {1.72580004, 3.0871501}, //
+
23444 {1.70140433, 3.10505128}, //
+
23445 {1.67792845, 3.12182164}, //
+
23446 {1.65537226, 3.13746119}, //
+
23447 {1.63373578, 3.15196967}, //
+
23448 {1.61301911, 3.16534758}, //
+
23449 {1.59322226, 3.17759442}, //
+
23450 {1.57434511, 3.18871045}, //
+
23451 {1.55638766, 3.19869566}, //
+
23452 {1.53935003, 3.20755005}, //
+
23453 {1.51376975, 3.220016}, //
+
23454 {1.4882735, 3.23181415}, //
+
23455 {1.46286106, 3.24294448}, //
+
23456 {1.43753266, 3.25340676}, //
+
23457 {1.41228831, 3.26320124}, //
+
23458 {1.38712776, 3.27232766}, //
+
23459 {1.36205125, 3.28078651}, //
+
23460 {1.33705866, 3.28857708}, //
+
23461 {1.31215, 3.29570007}, //
+
23462 {1.30763829, 3.2978723}, //
+
23463 {1.30312526, 3.29987788}, //
+
23464 {1.29861116, 3.30171657}, //
+
23465 {1.29409564, 3.30338883}, //
+
23466 {1.28957903, 3.30489445}, //
+
23467 {1.28506112, 3.30623341}, //
+
23468 {1.28054202, 3.30740547}, //
+
23469 {1.2760216, 3.30841112}, //
+
23470 {1.27149999, 3.30925012}, //
+
23471 {1.2604506, 3.31293344}, //
+
23472 {1.24990249, 3.31645012}, //
+
23473 {1.23985553, 3.3197999}, //
+
23474 {1.23030984, 3.32298326}, //
+
23475 {1.22126544, 3.32599998}, //
+
23476 {1.21272218, 3.32885003}, //
+
23477 {1.2046802, 3.33153343}, //
+
23478 {1.1971395, 3.33404994}, //
+
23479 {1.19009995, 3.33640003}, //
+
23480 {1.18483269, 3.33861351}, //
+
23481 {1.17956424, 3.3407433}, //
+
23482 {1.17429447, 3.34278893}, //
+
23483 {1.16902351, 3.34475064}, //
+
23484 {1.16375124, 3.34662843}, //
+
23485 {1.15847778, 3.34842229}, //
+
23486 {1.15320313, 3.35013199}, //
+
23487 {1.14792717, 3.351758}, //
+
23488 {1.14265001, 3.35330009}, //
+
23489 {1.13733089, 3.35481119}, //
+
23490 {1.13192904, 3.35632229}, //
+
23491 {1.12644446, 3.35783339}, //
+
23492 {1.12087715, 3.35934448}, //
+
23493 {1.1152271, 3.36085558}, //
+
23494 {1.10949445, 3.36236668}, //
+
23495 {1.10367906, 3.36387777}, //
+
23496 {1.09778082, 3.36538887}, //
+
23497 {1.09179997, 3.36689997}, //
+
23498 {1.09104443, 3.36689997}, //
+
23499 {1.09028888, 3.36689997}, //
+
23500 {1.08726668, 3.36689997}, //
+
23501 {1.08651114, 3.36689997}, //
+
23502 {1.08575559, 3.36689997}, //
+
23503 {1.08500004, 3.36689997}, //
+
23504 {1.0762068, 3.36835861}, //
+
23505 {1.06791604, 3.36973453}, //
+
23506 {1.06012774, 3.37102771}, //
+
23507 {1.05284202, 3.37223816}, //
+
23508 {1.04605865, 3.37336612}, //
+
23509 {1.03977776, 3.37441111}, //
+
23510 {1.03399932, 3.37537336}, //
+
23511 {1.02872348, 3.37625313}, //
+
23512 {1.02394998, 3.37704992}, //
+
23513 {1.01922905, 3.37776351}, //
+
23514 {1.01408827, 3.37839317}, //
+
23515 {1.00852776, 3.37893891}, //
+
23516 {1.0025475, 3.37940073}, //
+
23517 {0.996147513, 3.37977839}, //
+
23518 {0.989327788, 3.38007212}, //
+
23519 {0.982088268, 3.38028216}, //
+
23520 {0.974429011, 3.38040805}, //
+
23521 {0.966350019, 3.38045001}, //
+
23522 {0.961156189, 3.38040805}, //
+
23523 {0.956130266, 3.38028216}, //
+
23524 {0.951272249, 3.38007212}, //
+
23525 {0.946582079, 3.37977839}, //
+
23526 {0.942059875, 3.37940073}, //
+
23527 {0.937705576, 3.37893891}, //
+
23528 {0.933519125, 3.37839317}, //
+
23529 {0.929500639, 3.37776351}, //
+
23530 {0.925650001, 3.37704992}, //
+
23531 {0.920351207, 3.37635732}, //
+
23532 {0.915010512, 3.37579083}, //
+
23533 {0.909627795, 3.37535}, //
+
23534 {0.904203057, 3.37503529}, //
+
23535 {0.898736417, 3.37484622}, //
+
23536 {0.893227756, 3.37478328}, //
+
23537 {0.887677133, 3.37484622}, //
+
23538 {0.882084548, 3.37503529}, //
+
23539 {0.876450002, 3.37535}, //
+
23540 {0.870742619, 3.37595797}, //
+
23541 {0.864909232, 3.37702656}, //
+
23542 {0.858950019, 3.37855554}, //
+
23543 {0.852864802, 3.38054514}, //
+
23544 {0.8466537, 3.38299513}, //
+
23545 {0.840316653, 3.3859055}, //
+
23546 {0.833853722, 3.3892765}, //
+
23547 {0.827264786, 3.39310813}, //
+
23548 {0.820550025, 3.3973999}, //
+
23549 {0.799196899, 3.40732718}, //
+
23550 {0.778848767, 3.41599751}, //
+
23551 {0.75950557, 3.42341113}, //
+
23552 {0.741167307, 3.42956781}, //
+
23553 {0.723833978, 3.43446779}, //
+
23554 {0.707505584, 3.43811107}, //
+
23555 {0.692182124, 3.44049764}, //
+
23556 {0.677863598, 3.44162726}, //
+
23557 {0.664550006, 3.44149995}, //
+
23558 {0.657141984, 3.44061923}, //
+
23559 {0.649984539, 3.4394877}, //
+
23560 {0.643077791, 3.43810558}, //
+
23561 {0.636421621, 3.43647289}, //
+
23562 {0.630016029, 3.43458962}, //
+
23563 {0.623861134, 3.43245554}, //
+
23564 {0.617956817, 3.43007088}, //
+
23565 {0.612303078, 3.42743587}, //
+
23566 {0.606899977, 3.42455006}, //
+
23567 {0.603888869, 3.42236733}, //
+
23568 {0.600877762, 3.42035246}, //
+
23569 {0.597866654, 3.41850567}, //
+
23570 {0.594855547, 3.41682649}, //
+
23571 {0.59184444, 3.41531539}, //
+
23572 {0.588833332, 3.41397214}, //
+
23573 {0.585822225, 3.41279697}, //
+
23574 {0.582811117, 3.41178942}, //
+
23575 {0.57980001, 3.41094995}, //
+
23576 {0.579044461, 3.41092896}, //
+
23577 {0.578288913, 3.41086602}, //
+
23578 {0.577533305, 3.41076112}, //
+
23579 {0.576777756, 3.41061425}, //
+
23580 {0.576022208, 3.41042542}, //
+
23581 {0.575266659, 3.4101944}, //
+
23582 {0.574511111, 3.40992165}, //
+
23583 {0.573755562, 3.4096067}, //
+
23584 {0.573000014, 3.40925002}, //
+
23585 {0.572254956, 3.4089036}, //
+
23586 {0.571508646, 3.40859818}, //
+
23587 {0.570761085, 3.4083333}, //
+
23588 {0.570012331, 3.40810919}, //
+
23589 {0.569262326, 3.40792584}, //
+
23590 {0.568511128, 3.40778327}, //
+
23591 {0.56775862, 3.40768147}, //
+
23592 {0.567004919, 3.40762043}, //
+
23593 {0.566250026, 3.40759993}, //
+
23594 {0.564822853, 3.40759993}, //
+
23595 {0.564172208, 3.40759993}, //
+
23596 {0.562996924, 3.40759993}, //
+
23597 {0.562472224, 3.40759993}, //
+
23598 {0.561989486, 3.40759993}, //
+
23599 {0.561548769, 3.40759993}, //
+
23600 {0.560478389, 3.40759993}, //
+
23601 {0.560205579, 3.40759993}, //
+
23602 {0.55997467, 3.40759993}, //
+
23603 {0.559785783, 3.40759993}, //
+
23604 {0.559638917, 3.40759993}, //
+
23605 {0.559533954, 3.40759993}, //
+
23606 {0.559366047, 3.40759993}, //
+
23607 {0.559261084, 3.40759993}, //
+
23608 {0.559114218, 3.40759993}, //
+
23609 {0.558694422, 3.40759993}, //
+
23610 {0.558421612, 3.40759993}, //
+
23611 {0.557078421, 3.40759993}, //
+
23612 {0.556805551, 3.40759993}, //
+
23613 {0.556574702, 3.40759993}, //
+
23614 {0.556385815, 3.40759993}, //
+
23615 {0.55623889, 3.40759993}, //
+
23616 {0.556133926, 3.40759993}, //
+
23617 {0.556070983, 3.40759993}, //
+
23618 {0.556050003, 3.40759993}, //
+
23619 {0.556301236, 3.40774632}, //
+
23620 {0.557054937, 3.40818524}, //
+
23621 {0.558311105, 3.40891671}, //
+
23622 {0.56006974, 3.40994072}, //
+
23623 {0.562330842, 3.41125751}, //
+
23624 {0.565094471, 3.41286659}, //
+
23625 {0.568360507, 3.41476846}, //
+
23626 {0.572129011, 3.41696286}, //
+
23627 {0.576399982, 3.41945004}, //
+
23628 {0.581089497, 3.42208338}, //
+
23629 {0.586113572, 3.42471671}, //
+
23630 {0.591472208, 3.42735004}, //
+
23631 {0.597165406, 3.42998338}, //
+
23632 {0.603193223, 3.43261671}, //
+
23633 {0.609555542, 3.43525004}, //
+
23634 {0.616252482, 3.43788338}, //
+
23635 {0.623283923, 3.44051671}, //
+
23636 {0.630649984, 3.44315004}, //
+
23637 {0.638204336, 3.44579387}, //
+
23638 {0.645800591, 3.4484365}, //
+
23639 {0.653438866, 3.4510777}, //
+
23640 {0.661119163, 3.45371795}, //
+
23641 {0.668841362, 3.45635676}, //
+
23642 {0.676605582, 3.45899439}, //
+
23643 {0.684411705, 3.46163082}, //
+
23644 {0.692259848, 3.46426606}, //
+
23645 {0.700150013, 3.46690011}, //
+
23646 {0.707956791, 3.46935558}, //
+
23647 {0.715554953, 3.4714334}, //
+
23648 {0.722944438, 3.47313333}, //
+
23649 {0.730125308, 3.4744556}, //
+
23650 {0.737097502, 3.47539997}, //
+
23651 {0.743861139, 3.47596669}, //
+
23652 {0.75041604, 3.47615552}, //
+
23653 {0.756762326, 3.47596669}, //
+
23654 {0.762899995, 3.47539997}, //
+
23655 {0.77186048, 3.47388959}, //
+
23656 {0.780653059, 3.47238016}, //
+
23657 {0.789277792, 3.47087216}, //
+
23658 {0.797734559, 3.46936536}, //
+
23659 {0.806023479, 3.46785998}, //
+
23660 {0.814144433, 3.46635556}, //
+
23661 {0.82209754, 3.46485257}, //
+
23662 {0.829882741, 3.46335053}, //
+
23663 {0.837499976, 3.46184993}, //
+
23664 {0.852692604, 3.45837593}, //
+
23665 {0.868137062, 3.45548701}, //
+
23666 {0.883833349, 3.45318341}, //
+
23667 {0.899781466, 3.45146489}, //
+
23668 {0.915981472, 3.45033145}, //
+
23669 {0.932433307, 3.44978333}, //
+
23670 {0.949137032, 3.44982028}, //
+
23671 {0.966092587, 3.45044255}, //
+
23672 {0.983299971, 3.4516499}, //
+
23673 {0.995208621, 3.45303512}, //
+
23674 {1.00682342, 3.45416856}, //
+
23675 {1.01814449, 3.45504999}, //
+
23676 {1.02917159, 3.45567966}, //
+
23677 {1.03990495, 3.45605731}, //
+
23678 {1.05034447, 3.45618343}, //
+
23679 {1.06049013, 3.45605731}, //
+
23680 {1.07034194, 3.45567966}, //
+
23681 {1.07990003, 3.45504999}, //
+
23682 {1.08971977, 3.45408511}, //
+
23683 {1.10033453, 3.45270181}, //
+
23684 {1.1117444, 3.45090008}, //
+
23685 {1.12394941, 3.44867969}, //
+
23686 {1.13694942, 3.44604063}, //
+
23687 {1.15074444, 3.44298339}, //
+
23688 {1.16533458, 3.43950748}, //
+
23689 {1.18071973, 3.43561292}, //
+
23690 {1.19690001, 3.43129992}, //
+
23691 {1.20275497, 3.42984128}, //
+
23692 {1.20827532, 3.42846537}, //
+
23693 {1.21346116, 3.42717218}, //
+
23694 {1.21831238, 3.42596173}, //
+
23695 {1.22282898, 3.42483401}, //
+
23696 {1.22701108, 3.42378879}, //
+
23697 {1.23085868, 3.42282653}, //
+
23698 {1.23437166, 3.421947}, //
+
23699 {1.23755002, 3.42114997}, //
+
23700 {1.24050868, 3.4204154}, //
+
23701 {1.24334013, 3.4197228}, //
+
23702 {1.2460444, 3.41907215}, //
+
23703 {1.24862158, 3.41846347}, //
+
23704 {1.25107157, 3.41789699}, //
+
23705 {1.25339448, 3.41737223}, //
+
23706 {1.25559008, 3.41688943}, //
+
23707 {1.2576586, 3.41644883}, //
+
23708 {1.25960004, 3.41604996}, //
+
23709 {1.2615093, 3.41569328}, //
+
23710 {1.26345921, 3.41537833}, //
+
23711 {1.26545, 3.41510558}, //
+
23712 {1.26748145, 3.41487479}, //
+
23713 {1.26955366, 3.41468573}, //
+
23714 {1.27166665, 3.41453886}, //
+
23715 {1.2738204, 3.41443396}, //
+
23716 {1.2760148, 3.41437101}, //
+
23717 {1.27824998, 3.41435003}, //
+
23718 {1.28072536, 3.41359448}, //
+
23719 {1.28361785, 3.41283894}, //
+
23720 {1.28692782, 3.41208339}, //
+
23721 {1.2906549, 3.41132784}, //
+
23722 {1.29479933, 3.41057229}, //
+
23723 {1.29936111, 3.40981674}, //
+
23724 {1.30434012, 3.40906119}, //
+
23725 {1.30973637, 3.40830564}, //
+
23726 {1.31554997, 3.4075501}, //
+
23727 {1.32195985, 3.40667963}, //
+
23728 {1.32912278, 3.40555739}, //
+
23729 {1.33703887, 3.40418339}, //
+
23730 {1.34570801, 3.40255737}, //
+
23731 {1.3551302, 3.40067959}, //
+
23732 {1.36530554, 3.39855003}, //
+
23733 {1.37623394, 3.39616847}, //
+
23734 {1.38791537, 3.39353514}, //
+
23735 {1.40034997, 3.39065003}, //
+
23736 {1.42120922, 3.38520503}, //
+
23737 {1.44160926, 3.37942529}, //
+
23738 {1.46155, 3.37331104}, //
+
23739 {1.48103154, 3.3668623}, //
+
23740 {1.50005364, 3.36007905}, //
+
23741 {1.51861668, 3.35296106}, //
+
23742 {1.5367204, 3.34550858}, //
+
23743 {1.5543648, 3.33772159}, //
+
23744 {1.57155001, 3.3296001}, //
+
23745 {1.58810747, 3.32143641}, //
+
23746 {1.60386848, 3.31352353}, //
+
23747 {1.6188333, 3.305861}, //
+
23748 {1.6330018, 3.29844928}, //
+
23749 {1.64637411, 3.29128838}, //
+
23750 {1.65894997, 3.28437781}, //
+
23751 {1.67072964, 3.27771783}, //
+
23752 {1.68171299, 3.27130866}, //
+
23753 {1.69190001, 3.26515007}, //
+
23754 {1.69705188, 3.26222277}, //
+
23755 {1.70195186, 3.25946355}, //
+
23756 {1.70659995, 3.25687218}, //
+
23757 {1.71099627, 3.25444865}, //
+
23758 {1.7151407, 3.25219321}, //
+
23759 {1.71903336, 3.25010562}, //
+
23760 {1.72267413, 3.24818587}, //
+
23761 {1.72606301, 3.24643397}, //
+
23762 {1.72920001, 3.24484992}, //
+
23763 {1.73217964, 3.24338078}, //
+
23764 {1.73507404, 3.24199557}, //
+
23765 {1.73788333, 3.24069452}, //
+
23766 {1.74060738, 3.23947716}, //
+
23767 {1.74324632, 3.23834372}, //
+
23768 {1.74580002, 3.23729444}, //
+
23769 {1.74826849, 3.23632908}, //
+
23770 {1.75065184, 3.23544765}, //
+
23771 {1.75294995, 3.2346499}, //
+
23772 {1.75753462, 3.23302341}, //
+
23773 {1.76224387, 3.23114371}, //
+
23774 {1.7670778, 3.22901106}, //
+
23775 {1.77203643, 3.2266252}, //
+
23776 {1.77711976, 3.22398639}, //
+
23777 {1.78232777, 3.22109437}, //
+
23778 {1.78766048, 3.21794939}, //
+
23779 {1.79311788, 3.21455121}, //
+
23780 {1.79869998, 3.21090007}, //
+
23781 {1.80458581, 3.20679879}, //
+
23782 {1.81093204, 3.20202851}, //
+
23783 {1.81773889, 3.19658899}, //
+
23784 {1.82500613, 3.19048023}, //
+
23785 {1.83273399, 3.18370247}, //
+
23786 {1.84092224, 3.17625546}, //
+
23787 {1.84957099, 3.16813946}, //
+
23788 {1.85868025, 3.15935421}, //
+
23789 {1.86825001, 3.14989996}, //
+
23790 {1.88078892, 3.13723516}, //
+
23791 {1.89278328, 3.12486291}, //
+
23792 {1.90423334, 3.11278343}, //
+
23793 {1.91513884, 3.10099626}, //
+
23794 {1.92550004, 3.08950186}, //
+
23795 {1.93531668, 3.0783}, //
+
23796 {1.9445889, 3.06739068}, //
+
23797 {1.95331669, 3.05677414}, //
+
23798 {1.96150005, 3.0464499}, //
+
23799 {1.96939015, 3.03609443}, //
+
23800 {1.9772383, 3.02536106}, //
+
23801 {1.98504448, 3.01425004}, //
+
23802 {1.9928087, 3.00276113}, //
+
23803 {2.00053096, 2.99089456}, //
+
23804 {2.00821114, 2.97865009}, //
+
23805 {2.01584935, 2.96602774}, //
+
23806 {2.02344561, 2.95302773}, //
+
23807 {2.0309999, 2.93965006}, //
+
23808 {2.03643465, 2.92897964}, //
+
23809 {2.04220486, 2.91805744}, //
+
23810 {2.048311, 2.90688324}, //
+
23811 {2.05475307, 2.89545751}, //
+
23812 {2.06153083, 2.88377953}, //
+
23813 {2.06864452, 2.87185001}, //
+
23814 {2.07609391, 2.85966849}, //
+
23815 {2.08387899, 2.8472352}, //
+
23816 {2.09200001, 2.8345499}, //
+
23817 {2.09801173, 2.8225987}, //
+
23818 {2.1039803, 2.8108561}, //
+
23819 {2.10990548, 2.79932213}, //
+
23820 {2.11578774, 2.78799701}, //
+
23821 {2.12162662, 2.77688026}, //
+
23822 {2.12742233, 2.76597214}, //
+
23823 {2.13317466, 2.75527287}, //
+
23824 {2.13888407, 2.74478221}, //
+
23825 {2.14455009, 2.73449993}, //
+
23826 {2.15001678, 2.72460556}, //
+
23827 {2.15510559, 2.7152555}, //
+
23828 {2.15981674, 2.70644999}, //
+
23829 {2.16415, 2.69818878}, //
+
23830 {2.1681056, 2.69047213}, //
+
23831 {2.17168331, 2.68330002}, //
+
23832 {2.17488337, 2.67667222}, //
+
23833 {2.17770553, 2.67058897}, //
+
23834 {2.18015003, 2.66505003}, //
+
23835 {2.18161917, 2.66207027}, //
+
23836 {2.18300438, 2.65917587}, //
+
23837 {2.18430567, 2.65636659}, //
+
23838 {2.18552279, 2.65364265}, //
+
23839 {2.18665624, 2.6510036}, //
+
23840 {2.18770552, 2.6484499}, //
+
23841 {2.18867087, 2.64598155}, //
+
23842 {2.18955255, 2.64359808}, //
+
23843 {2.19035006, 2.64129996}, //
+
23844 {2.19110489, 2.63908577}, //
+
23845 {2.19185853, 2.63695431}, //
+
23846 {2.19261122, 2.63490558}, //
+
23847 {2.19336224, 2.63293958}, //
+
23848 {2.1941123, 2.63105607}, //
+
23849 {2.19486117, 2.62925553}, //
+
23850 {2.19560862, 2.62753773}, //
+
23851 {2.19635487, 2.62590241}, //
+
23852 {2.19709992, 2.62435007}, //
+
23853 {2.19791794, 2.62281799}, //
+
23854 {2.19886041, 2.62124372}, //
+
23855 {2.19992781, 2.61962771}, //
+
23856 {2.20111966, 2.61796975}, //
+
23857 {2.20243645, 2.61626983}, //
+
23858 {2.20387769, 2.6145277}, //
+
23859 {2.20544386, 2.61274385}, //
+
23860 {2.20713449, 2.61091781}, //
+
23861 {2.20895004, 2.60905004}, //
+
23862 {2.21090174, 2.60710931}, //
+
23863 {2.21297956, 2.6050427}, //
+
23864 {2.21518326, 2.60284996}, //
+
23865 {2.21751285, 2.60053158}, //
+
23866 {2.21996856, 2.59808707}, //
+
23867 {2.22254992, 2.59551668}, //
+
23868 {2.2252574, 2.59282041}, //
+
23869 {2.22809076, 2.58999825}, //
+
23870 {2.23105001, 2.58704996}, //
+
23871 {2.23255062, 2.58625317}, //
+
23872 {2.23405242, 2.5853734}, //
+
23873 {2.23555565, 2.58441114}, //
+
23874 {2.23705983, 2.58336616}, //
+
23875 {2.23856544, 2.5822382}, //
+
23876 {2.24007225, 2.58102775}, //
+
23877 {2.24158025, 2.57973456}, //
+
23878 {2.24308944, 2.57835865}, //
+
23879 {2.24460006, 2.57690001}, //
+
23880 {2.25129437, 2.57158017}, //
+
23881 {2.25782228, 2.56617665}, //
+
23882 {2.26418328, 2.56068897}, //
+
23883 {2.27037787, 2.55511737}, //
+
23884 {2.27640557, 2.54946184}, //
+
23885 {2.28226662, 2.54372215}, //
+
23886 {2.28796101, 2.53789878}, //
+
23887 {2.29348898, 2.53199124}, //
+
23888 {2.29885006, 2.52600002}, //
+
23889 {2.30391788, 2.51997709}, //
+
23890 {2.30856609, 2.51395297}, //
+
23891 {2.31279445, 2.50792789}, //
+
23892 {2.31660318, 2.50190115}, //
+
23893 {2.31999207, 2.49587345}, //
+
23894 {2.32296109, 2.48984456}, //
+
23895 {2.3255105, 2.48381424}, //
+
23896 {2.32764006, 2.47778273}, //
+
23897 {2.32934999, 2.47175002}, //
+
23898 {2.33149076, 2.46505547}, //
+
23899 {2.33337975, 2.4585278}, //
+
23900 {2.33501673, 2.45216656}, //
+
23901 {2.33640194, 2.4459722}, //
+
23902 {2.33753514, 2.43994451}, //
+
23903 {2.33841658, 2.43408322}, //
+
23904 {2.33904624, 2.42838883}, //
+
23905 {2.33942413, 2.4228611}, //
+
23906 {2.33955002, 2.41750002}, //
+
23907 {2.33934069, 2.41202354}, //
+
23908 {2.33871293, 2.40612721}, //
+
23909 {2.33766675, 2.39981103}, //
+
23910 {2.33620191, 2.39307523}, //
+
23911 {2.3343184, 2.38591981}, //
+
23912 {2.33201671, 2.37834454}, //
+
23913 {2.32929635, 2.37034941}, //
+
23914 {2.32615733, 2.36193466}, //
+
23915 {2.32259989, 2.35310006}, //
+
23916 {2.3188746, 2.34327912}, //
+
23917 {2.31523204, 2.33341599}, //
+
23918 {2.31167221, 2.32351112}, //
+
23919 {2.30819511, 2.3135643}, //
+
23920 {2.30480051, 2.30357528}, //
+
23921 {2.30148888, 2.29354453}, //
+
23922 {2.29825997, 2.28347158}, //
+
23923 {2.29511356, 2.27335668}, //
+
23924 {2.29204988, 2.26320004}, //
+
23925 {2.28908086, 2.25322151}, //
+
23926 {2.28619576, 2.24361968}, //
+
23927 {2.28339434, 2.23439455}, //
+
23928 {2.28067708, 2.22554564}, //
+
23929 {2.27804375, 2.21707344}, //
+
23930 {2.27549434, 2.2089777}, //
+
23931 {2.27302909, 2.20125866}, //
+
23932 {2.27064753, 2.19391608}, //
+
23933 {2.26834989, 2.18694997}, //
+
23934 {2.2661252, 2.18031859}, //
+
23935 {2.26398468, 2.17397952}, //
+
23936 {2.26192784, 2.16793323}, //
+
23937 {2.25995493, 2.16217971}, //
+
23938 {2.25806594, 2.15671849}, //
+
23939 {2.25626111, 2.15155005}, //
+
23940 {2.25454021, 2.14667416}, //
+
23941 {2.25290298, 2.1420908}, //
+
23942 {2.25134993, 2.13779998}, //
+
23943 {2.24989128, 2.13359261}, //
+
23944 {2.24851537, 2.12925935}, //
+
23945 {2.24722219, 2.12479997}, //
+
23946 {2.24601173, 2.1202147}, //
+
23947 {2.24488401, 2.11550379}, //
+
23948 {2.24383879, 2.11066675}, //
+
23949 {2.24287653, 2.10570359}, //
+
23950 {2.241997, 2.10061479}, //
+
23951 {2.24119997, 2.09540009}, //
+
23952 {2.24029803, 2.08937716}, //
+
23953 {2.23910379, 2.08335304}, //
+
23954 {2.23761678, 2.07732773}, //
+
23955 {2.23583698, 2.07130122}, //
+
23956 {2.23376489, 2.06527352}, //
+
23957 {2.23140001, 2.05924439}, //
+
23958 {2.2287426, 2.05321431}, //
+
23959 {2.22579265, 2.0471828}, //
+
23960 {2.22254992, 2.04115009}, //
+
23961 {2.21909809, 2.03529453}, //
+
23962 {2.21552038, 2.02977228}, //
+
23963 {2.21181655, 2.02458334}, //
+
23964 {2.20798707, 2.01972771}, //
+
23965 {2.20403147, 2.01520562}, //
+
23966 {2.19994998, 2.01101661}, //
+
23967 {2.19574261, 2.00716114}, //
+
23968 {2.19140935, 2.00363898}, //
+
23969 {2.18694997, 2.0004499}, //
+
23970 {2.18385506, 1.99964201}, //
+
23971 {2.18059206, 1.99870682}, //
+
23972 {2.17716122, 1.99764442}, //
+
23973 {2.17356229, 1.99645495}, //
+
23974 {2.16979575, 1.99513829}, //
+
23975 {2.16586113, 1.99369442}, //
+
23976 {2.16175866, 1.99212348}, //
+
23977 {2.15748835, 1.99042535}, //
+
23978 {2.15304995, 1.98860002}, //
+
23979 {2.14861178, 1.9867636}, //
+
23980 {2.14434147, 1.98500991}, //
+
23981 {2.140239, 1.98333883}, //
+
23982 {2.13630438, 1.98175061}, //
+
23983 {2.1325376, 1.98024511}, //
+
23984 {2.12893891, 1.97882223}, //
+
23985 {2.12550807, 1.97748208}, //
+
23986 {2.12224507, 1.97622466}, //
+
23987 {2.11914992, 1.97504997}, //
+
23988 {2.11379695, 1.97303522}, //
+
23989 {2.11162233, 1.97221673}, //
+
23990 {2.10978198, 1.97152412}, //
+
23991 {2.10827661, 1.9709574}, //
+
23992 {2.10710549, 1.97051668}, //
+
23993 {2.10626912, 1.97020185}, //
+
23994 {2.10576725, 1.97001302}, //
+
23995 {2.10560012, 1.96994996}, //
+
23996 });
+
23997 polys.push_back({
+
23998 {0.481449991, 3.34654999}, //
+
23999 {0.481198162, 3.34671783}, //
+
24000 {0.48088333, 3.34692788}, //
+
24001 {0.480442584, 3.34722161}, //
+
24002 {0.479875922, 3.34759927}, //
+
24003 {0.479183346, 3.34806108}, //
+
24004 {0.478364825, 3.34860682}, //
+
24005 {0.47742036, 3.34923649}, //
+
24006 {0.476350009, 3.34995008}, //
+
24007 {0.475206167, 3.35074687}, //
+
24008 {0.47401914, 3.35162663}, //
+
24009 {0.4727889, 3.35258889}, //
+
24010 {0.471515447, 3.35363388}, //
+
24011 {0.47019878, 3.35476184}, //
+
24012 {0.4688389, 3.35597229}, //
+
24013 {0.467435807, 3.35726547}, //
+
24014 {0.4659895, 3.35864139}, //
+
24015 {0.46450001, 3.36010003}, //
+
24016 {0.463020384, 3.36167336}, //
+
24017 {0.461581469, 3.36337161}, //
+
24018 {0.460183322, 3.36519456}, //
+
24019 {0.458825916, 3.36714196}, //
+
24020 {0.457509249, 3.3692143}, //
+
24021 {0.456233323, 3.37141109}, //
+
24022 {0.454998136, 3.37373281}, //
+
24023 {0.453803718, 3.37617898}, //
+
24024 {0.452650011, 3.37875009}, //
+
24025 {0.451516658, 3.38135195}, //
+
24026 {0.450383335, 3.38386846}, //
+
24027 {0.449250013, 3.38630009}, //
+
24028 {0.44811666, 3.38864636}, //
+
24029 {0.446983337, 3.39090753}, //
+
24030 {0.445850015, 3.39308333}, //
+
24031 {0.444716662, 3.39517403}, //
+
24032 {0.443583339, 3.3971796}, //
+
24033 {0.442449987, 3.39910007}, //
+
24034 {0.441390127, 3.4009254}, //
+
24035 {0.44045493, 3.40262341}, //
+
24036 {0.439644456, 3.40419436}, //
+
24037 {0.438958645, 3.40563822}, //
+
24038 {0.438397527, 3.406955}, //
+
24039 {0.437961102, 3.40814447}, //
+
24040 {0.437649369, 3.40920687}, //
+
24041 {0.43746236, 3.41014194}, //
+
24042 {0.437400013, 3.41094995}, //
+
24043 {0.436790735, 3.41241908}, //
+
24044 {0.436474085, 3.41380429}, //
+
24045 {0.436450005, 3.41510558}, //
+
24046 {0.436718524, 3.41632295}, //
+
24047 {0.437279642, 3.41745615}, //
+
24048 {0.438133329, 3.41850567}, //
+
24049 {0.439279616, 3.41947103}, //
+
24050 {0.440718532, 3.42035246}, //
+
24051 {0.442449987, 3.42114997}, //
+
24052 {0.444317907, 3.42186356}, //
+
24053 {0.446143836, 3.42249322}, //
+
24054 {0.447927773, 3.42303896}, //
+
24055 {0.449669749, 3.42350054}, //
+
24056 {0.451369762, 3.42387843}, //
+
24057 {0.453027785, 3.42417216}, //
+
24058 {0.454643816, 3.42438221}, //
+
24059 {0.456217915, 3.42450809}, //
+
24060 {0.457749993, 3.42455006}, //
+
24061 {0.457749993, 3.42446613}, //
+
24062 {0.457749993, 3.42421412}, //
+
24063 {0.457749993, 3.42379451}, //
+
24064 {0.457749993, 3.42320681}, //
+
24065 {0.457749993, 3.42152786}, //
+
24066 {0.457749993, 3.41917706}, //
+
24067 {0.457749993, 3.41774988}, //
+
24068 {0.457791358, 3.4162178}, //
+
24069 {0.457915425, 3.41464376}, //
+
24070 {0.458122224, 3.41302776}, //
+
24071 {0.458411723, 3.4113698}, //
+
24072 {0.458783954, 3.40966964}, //
+
24073 {0.459238887, 3.40792775}, //
+
24074 {0.459776551, 3.4061439}, //
+
24075 {0.460396916, 3.40431786}, //
+
24076 {0.461100012, 3.40245008}, //
+
24077 {0.461855561, 3.4005506}, //
+
24078 {0.462611109, 3.39860797}, //
+
24079 {0.463366657, 3.39662218}, //
+
24080 {0.464122236, 3.39459324}, //
+
24081 {0.464877784, 3.3925209}, //
+
24082 {0.465633333, 3.39040565}, //
+
24083 {0.466388881, 3.38824701}, //
+
24084 {0.46714443, 3.38604498}, //
+
24085 {0.467900008, 3.38380003}, //
+
24086 {0.468675911, 3.38160682}, //
+
24087 {0.469492584, 3.3795383}, //
+
24088 {0.470349997, 3.37759447}, //
+
24089 {0.47124815, 3.37577534}, //
+
24090 {0.472187042, 3.3740809}, //
+
24091 {0.473166674, 3.37251115}, //
+
24092 {0.474187046, 3.37106609}, //
+
24093 {0.475248158, 3.36974573}, //
+
24094 {0.476350009, 3.36855006}, //
+
24095 {0.477504313, 3.36749005}, //
+
24096 {0.478700608, 3.36655498}, //
+
24097 {0.479938895, 3.36574435}, //
+
24098 {0.481219143, 3.36505866}, //
+
24099 {0.482541353, 3.36449742}, //
+
24100 {0.483905554, 3.36406112}, //
+
24101 {0.485311717, 3.36374927}, //
+
24102 {0.486759871, 3.36356235}, //
+
24103 {0.488249987, 3.36350012}, //
+
24104 });
+
24105 polys.push_back({
+
24106 {0.515399992, 3.30697227}, //
+
24107 {0.515399992, 3.3067944}, //
+
24108 {0.515399992, 3.30585003}, //
+
24109 });
+
24110 polys.push_back({
+
24111 {0.402702481, 3.2395184}, //
+
24112 {0.401820987, 3.24090195}, //
+
24113 {0.400855541, 3.2421999}, //
+
24114 {0.399806172, 3.24341297}, //
+
24115 {0.398672849, 3.24454069}, //
+
24116 {0.397455543, 3.2455833}, //
+
24117 {0.396154314, 3.24654078}, //
+
24118 {0.394769132, 3.24741292}, //
+
24119 {0.393299997, 3.24819994}, //
+
24120 {0.391043842, 3.24899697}, //
+
24121 {0.388786405, 3.2498765}, //
+
24122 {0.386527777, 3.25083899}, //
+
24123 {0.384267896, 3.25188398}, //
+
24124 {0.382006794, 3.2530117}, //
+
24125 {0.37974444, 3.25422215}, //
+
24126 {0.377480865, 3.25551534}, //
+
24127 {0.375216037, 3.25689125}, //
+
24128 {0.372949988, 3.2583499}, //
+
24129 {0.370735794, 3.25998712}, //
+
24130 {0.368604332, 3.26187587}, //
+
24131 {0.366555542, 3.26401663}, //
+
24132 {0.364589512, 3.26640916}, //
+
24133 {0.362706184, 3.2690537}, //
+
24134 {0.360905558, 3.27195001}, //
+
24135 {0.359187663, 3.27509809}, //
+
24136 {0.357552469, 3.27849817}, //
+
24137 {0.356000006, 3.28215003}, //
+
24138 {0.356041968, 3.28219128}, //
+
24139 {0.356167912, 3.28231549}, //
+
24140 {0.35637778, 3.2825222}, //
+
24141 {0.356671602, 3.28281164}, //
+
24142 {0.357049376, 3.28318405}, //
+
24143 {0.357511103, 3.28363895}, //
+
24144 {0.358056784, 3.28417659}, //
+
24145 {0.359400004, 3.28550005}, //
+
24146 {0.360175937, 3.2862556}, //
+
24147 {0.360992581, 3.28701115}, //
+
24148 {0.361849993, 3.2877667}, //
+
24149 {0.362748146, 3.28852224}, //
+
24150 {0.363687038, 3.28927779}, //
+
24151 {0.364666671, 3.29003334}, //
+
24152 {0.365687042, 3.29078889}, //
+
24153 {0.366748154, 3.29154444}, //
+
24154 {0.367850006, 3.29229999}, //
+
24155 {0.368962348, 3.29305482}, //
+
24156 {0.370032728, 3.2938087}, //
+
24157 {0.371061116, 3.29456115}, //
+
24158 {0.372047544, 3.2953124}, //
+
24159 {0.372991979, 3.29606223}, //
+
24160 {0.373894453, 3.2968111}, //
+
24161 {0.374754936, 3.29755855}, //
+
24162 {0.375573456, 3.29830503}, //
+
24163 {0.376349986, 3.29905009}, //
+
24164 {0.377105564, 3.29968023}, //
+
24165 {0.377861112, 3.3000598}, //
+
24166 {0.378616661, 3.30018878}, //
+
24167 {0.379372209, 3.30006719}, //
+
24168 {0.380127788, 3.29969501}, //
+
24169 {0.380883336, 3.29907227}, //
+
24170 {0.381638885, 3.2981987}, //
+
24171 {0.382394433, 3.29707479}, //
+
24172 {0.383150011, 3.29570007}, //
+
24173 {0.383925915, 3.29563713}, //
+
24174 {0.384742588, 3.29544806}, //
+
24175 {0.385600001, 3.29513335}, //
+
24176 {0.386498153, 3.29469252}, //
+
24177 {0.387437046, 3.29412603}, //
+
24178 {0.388416678, 3.29343343}, //
+
24179 {0.38943705, 3.2926147}, //
+
24180 {0.390498161, 3.29167032}, //
+
24181 {0.391600013, 3.29060006}, //
+
24182 {0.392712355, 3.28946662}, //
+
24183 {0.393782705, 3.28833342}, //
+
24184 {0.394811124, 3.28719997}, //
+
24185 {0.395797521, 3.28606677}, //
+
24186 {0.396741986, 3.28493333}, //
+
24187 {0.39764443, 3.28379989}, //
+
24188 {0.398504943, 3.28266668}, //
+
24189 {0.399323463, 3.28153324}, //
+
24190 {0.400099993, 3.28040004}, //
+
24191 {0.40081358, 3.27929807}, //
+
24192 {0.401443213, 3.2782371}, //
+
24193 {0.401988894, 3.27721667}, //
+
24194 {0.402450621, 3.27623701}, //
+
24195 {0.402828395, 3.27529812}, //
+
24196 {0.403122216, 3.2744}, //
+
24197 {0.403332084, 3.27354264}, //
+
24198 {0.403458029, 3.27272582}, //
+
24199 {0.403499991, 3.27195001}, //
+
24200 {0.403521001, 3.27119446}, //
+
24201 {0.403583944, 3.27043891}, //
+
24202 {0.403688878, 3.26968336}, //
+
24203 {0.403835803, 3.26892781}, //
+
24204 {0.40402469, 3.26817226}, //
+
24205 {0.404255569, 3.26741672}, //
+
24206 {0.404528409, 3.26666117}, //
+
24207 {0.404843211, 3.26590562}, //
+
24208 {0.405200005, 3.26515007}, //
+
24209 {0.405556798, 3.26436305}, //
+
24210 {0.4058716, 3.26349068}, //
+
24211 {0.40614444, 3.26253343}, //
+
24212 {0.406375319, 3.26149082}, //
+
24213 {0.406564206, 3.26036286}, //
+
24214 {0.406711102, 3.25915003}, //
+
24215 {0.406816036, 3.25785184}, //
+
24216 {0.406879008, 3.25646853}, //
+
24217 {0.406899989, 3.25500011}, //
+
24218 {0.406920373, 3.25353098}, //
+
24219 {0.406981468, 3.25214577}, //
+
24220 {0.407083333, 3.25084448}, //
+
24221 {0.407225937, 3.24962711}, //
+
24222 {0.407409251, 3.24849391}, //
+
24223 {0.407633334, 3.24744439}, //
+
24224 {0.407898158, 3.24647903}, //
+
24225 {0.408203691, 3.2455976}, //
+
24226 {0.408549994, 3.24480009}, //
+
24227 {0.408885807, 3.24407601}, //
+
24228 {0.409137666, 3.24339271}, //
+
24229 {0.409305543, 3.24274993}, //
+
24230 {0.409389496, 3.24214816}, //
+
24231 {0.409389496, 3.24158692}, //
+
24232 {0.409305543, 3.24106669}, //
+
24233 {0.409137666, 3.240587}, //
+
24234 {0.408885807, 3.24014807}, //
+
24235 {0.408549994, 3.23974991}, //
+
24236 {0.40816173, 3.23939323}, //
+
24237 {0.407730252, 3.23907828}, //
+
24238 {0.40725556, 3.23880553}, //
+
24239 {0.406737655, 3.23857474}, //
+
24240 {0.406176537, 3.23838592}, //
+
24241 {0.405572236, 3.23823881}, //
+
24242 {0.404924691, 3.23813391}, //
+
24243 {0.404233962, 3.23807096}, //
+
24244 {0.403499991, 3.23804998}, //
+
24245 });
+
24246 polys.push_back({
+
24247 {0.515399992, 3.29570007}, //
+
24248 {0.517655551, 3.29551101}, //
+
24249 {0.519409895, 3.29536414}, //
+
24250 {0.521665454, 3.29517531}, //
+
24251 {0.524422228, 3.29494452}, //
+
24252 {0.527680218, 3.29467154}, //
+
24253 {0.531439483, 3.29435682}, //
+
24254 {0.535700023, 3.29399991}, //
+
24255 {0.540326536, 3.29360127}, //
+
24256 {0.545161724, 3.29316044}, //
+
24257 {0.550205529, 3.29267788}, //
+
24258 {0.555458009, 3.29215312}, //
+
24259 {0.560919106, 3.2915864}, //
+
24260 {0.566588879, 3.29097772}, //
+
24261 {0.572467268, 3.29032707}, //
+
24262 {0.578554332, 3.28963447}, //
+
24263 {0.584850013, 3.2888999}, //
+
24264 {0.591240108, 3.2881031}, //
+
24265 {0.597588301, 3.28722334}, //
+
24266 {0.603894472, 3.28626108}, //
+
24267 {0.610158622, 3.28521609}, //
+
24268 {0.61638087, 3.28408837}, //
+
24269 {0.622561097, 3.28287768}, //
+
24270 {0.628699362, 3.2815845}, //
+
24271 {0.634795666, 3.28020859}, //
+
24272 {0.640850008, 3.27874994}, //
+
24273 {0.64855063, 3.27648401}, //
+
24274 {0.656585813, 3.27421904}, //
+
24275 {0.664955556, 3.27195549}, //
+
24276 {0.673659861, 3.26969314}, //
+
24277 {0.682698786, 3.26743221}, //
+
24278 {0.692072213, 3.26517224}, //
+
24279 {0.70178026, 3.26291347}, //
+
24280 {0.711822867, 3.26065612}, //
+
24281 {0.722199976, 3.25839996}, //
+
24282 {0.737770975, 3.25467539}, //
+
24283 {0.752839506, 3.2510345}, //
+
24284 {0.76740557, 3.24747777}, //
+
24285 {0.781469107, 3.24400496}, //
+
24286 {0.795030236, 3.24061608}, //
+
24287 {0.808088899, 3.23731112}, //
+
24288 {0.820645034, 3.23409009}, //
+
24289 {0.832698762, 3.23095298}, //
+
24290 {0.844250023, 3.22790003}, //
+
24291 {0.85222286, 3.22552896}, //
+
24292 {0.861074686, 3.22294927}, //
+
24293 {0.870805562, 3.2201612}, //
+
24294 {0.881415427, 3.21716428}, //
+
24295 {0.892904341, 3.21395874}, //
+
24296 {0.905272245, 3.21054435}, //
+
24297 {0.918519139, 3.20692158}, //
+
24298 {0.932645082, 3.20309019}, //
+
24299 {0.947650015, 3.19904995}, //
+
24300 {0.963188291, 3.19490552}, //
+
24301 {0.978891969, 3.19076109}, //
+
24302 {0.994761109, 3.18661666}, //
+
24303 {1.01079571, 3.18247223}, //
+
24304 {1.02699566, 3.1783278}, //
+
24305 {1.04336107, 3.17418337}, //
+
24306 {1.05989194, 3.17003894}, //
+
24307 {1.07658827, 3.16589451}, //
+
24308 {1.09344995, 3.16175008}, //
+
24309 {1.11009192, 3.15775251}, //
+
24310 {1.12610674, 3.15404868}, //
+
24311 {1.14149439, 3.15063882}, //
+
24312 {1.15625489, 3.14752293}, //
+
24313 {1.17038822, 3.14470053}, //
+
24314 {1.1838944, 3.14217234}, //
+
24315 {1.19677341, 3.13993764}, //
+
24316 {1.20902526, 3.13799691}, //
+
24317 {1.22064996, 3.13634992}, //
+
24318 {1.23747659, 3.13134623}, //
+
24319 {1.25631177, 3.12537956}, //
+
24320 {1.27715552, 3.11844993}, //
+
24321 {1.30000806, 3.11055732}, //
+
24322 {1.32486916, 3.10170174}, //
+
24323 {1.35173893, 3.09188342}, //
+
24324 {1.38061726, 3.08110189}, //
+
24325 {1.41150427, 3.0693574}, //
+
24326 {1.44439995, 3.05664992}, //
+
24327 {1.47768271, 3.04352403}, //
+
24328 {1.50970864, 3.03052402}, //
+
24329 {1.54047775, 3.01764989}, //
+
24330 {1.56999016, 3.00490189}, //
+
24331 {1.59824562, 2.99227953}, //
+
24332 {1.6252445, 2.9797833}, //
+
24333 {1.65098643, 2.96741295}, //
+
24334 {1.67547166, 2.95516849}, //
+
24335 {1.69869995, 2.94304991}, //
+
24336 {1.71959007, 2.93227458}, //
+
24337 {1.74006045, 2.92103767}, //
+
24338 {1.76011109, 2.90933895}, //
+
24339 {1.779742, 2.89717841}, //
+
24340 {1.79895306, 2.88455606}, //
+
24341 {1.81774449, 2.87147212}, //
+
24342 {1.83611608, 2.85792661}, //
+
24343 {1.85406792, 2.84391904}, //
+
24344 {1.87160003, 2.82944989}, //
+
24345 {1.88843083, 2.81511664}, //
+
24346 {1.90425682, 2.80149436}, //
+
24347 {1.91907775, 2.78858328}, //
+
24348 {1.93289387, 2.7763834}, //
+
24349 {1.94570494, 2.76489449}, //
+
24350 {1.95751107, 2.75411677}, //
+
24351 {1.96831238, 2.74405003}, //
+
24352 {1.97810864, 2.73469448}, //
+
24353 {1.98689997, 2.7260499}, //
+
24354 {1.99274445, 2.71983886}, //
+
24355 {1.99821115, 2.71324992}, //
+
24356 {2.00329995, 2.70628333}, //
+
24357 {2.0080111, 2.69893885}, //
+
24358 {2.01234436, 2.69121671}, //
+
24359 {2.01629996, 2.68311667}, //
+
24360 {2.01987767, 2.67463899}, //
+
24361 {2.02307773, 2.66578341}, //
+
24362 {2.02589989, 2.65654993}, //
+
24363 {2.02842903, 2.64716983}, //
+
24364 {2.03074932, 2.63787341}, //
+
24365 {2.03286099, 2.62866116}, //
+
24366 {2.03476429, 2.61953282}, //
+
24367 {2.03645873, 2.61048818}, //
+
24368 {2.03794456, 2.60152769}, //
+
24369 {2.03922153, 2.59265113}, //
+
24370 {2.04029012, 2.58385873}, //
+
24371 {2.04115009, 2.57515001}, //
+
24372 {2.04182172, 2.56672406}, //
+
24373 {2.04232526, 2.55875731}, //
+
24374 {2.04266119, 2.55124998}, //
+
24375 {2.04282904, 2.54420185}, //
+
24376 {2.04282904, 2.53761292}, //
+
24377 {2.04266119, 2.53148341}, //
+
24378 {2.04232526, 2.52581286}, //
+
24379 {2.04182172, 2.52060175}, //
+
24380 {2.04115009, 2.51585007}, //
+
24381 {2.03885174, 2.50981736}, //
+
24382 {2.03646851, 2.50378585}, //
+
24383 {2.03399992, 2.49775553}, //
+
24384 {2.03144622, 2.49172664}, //
+
24385 {2.0288074, 2.4856987}, //
+
24386 {2.02608323, 2.47967219}, //
+
24387 {2.02327418, 2.47364688}, //
+
24388 {2.02037954, 2.46762276}, //
+
24389 {2.01740003, 2.46160007}, //
+
24390 {2.01518583, 2.45703578}, //
+
24391 {2.01305437, 2.45238757}, //
+
24392 {2.01100564, 2.44765544}, //
+
24393 {2.0090394, 2.44283962}, //
+
24394 {2.00715613, 2.43793941}, //
+
24395 {2.0053556, 2.4329555}, //
+
24396 {2.00363755, 2.42788768}, //
+
24397 {2.00200248, 2.42273569}, //
+
24398 {2.0004499, 2.41750002}, //
+
24399 {1.99876106, 2.41283154}, //
+
24400 {1.99669445, 2.40787029}, //
+
24401 {1.99425006, 2.40261674}, //
+
24402 {1.99142778, 2.39707041}, //
+
24403 {1.98822773, 2.39123154}, //
+
24404 {1.98465002, 2.38509989}, //
+
24405 {1.98069441, 2.37867594}, //
+
24406 {1.97636116, 2.37195921}, //
+
24407 {1.97165, 2.36494994}, //
+
24408 {1.96685493, 2.3580246}, //
+
24409 {1.96226978, 2.35155988}, //
+
24410 {1.95789444, 2.34555554}, //
+
24411 {1.95372903, 2.34001184}, //
+
24412 {1.94977343, 2.33492851}, //
+
24413 {1.94602776, 2.33030558}, //
+
24414 {1.94249201, 2.32614326}, //
+
24415 {1.93916607, 2.32244134}, //
+
24416 {1.93605006, 2.31920004}, //
+
24417 {1.93613338, 2.31934619}, //
+
24418 {1.93638337, 2.31978512}, //
+
24419 {1.9368, 2.32051659}, //
+
24420 {1.93738329, 2.32154083}, //
+
24421 {1.93813336, 2.32285738}, //
+
24422 {1.93904996, 2.32446671}, //
+
24423 {1.94013333, 2.32636857}, //
+
24424 {1.94138336, 2.32856297}, //
+
24425 {1.94280005, 2.33104992}, //
+
24426 {1.94433153, 2.33376718}, //
+
24427 {1.94590366, 2.33665252}, //
+
24428 {1.94751668, 2.33970547}, //
+
24429 {1.94917035, 2.3429265}, //
+
24430 {1.95086479, 2.34631538}, //
+
24431 {1.9526, 2.34987211}, //
+
24432 {1.95437598, 2.35359693}, //
+
24433 {1.95619261, 2.35748959}, //
+
24434 {1.95805001, 2.36155009}, //
+
24435 {1.9599179, 2.36567354}, //
+
24436 {1.96174383, 2.36975503}, //
+
24437 {1.9635278, 2.37379456}, //
+
24438 {1.9652698, 2.37779188}, //
+
24439 {1.96696973, 2.38174748}, //
+
24440 {1.96862781, 2.38566113}, //
+
24441 {1.97024381, 2.3895328}, //
+
24442 {1.97181785, 2.39336228}, //
+
24443 {1.97335005, 2.39715004}, //
+
24444 {1.9747771, 2.40084314}, //
+
24445 {1.97603643, 2.40436721}, //
+
24446 {1.97712779, 2.40772223}, //
+
24447 {1.97805119, 2.41090798}, //
+
24448 {1.97880673, 2.41392469}, //
+
24449 {1.97939444, 2.41677213}, //
+
24450 {1.97981417, 2.41945052}, //
+
24451 {1.98006606, 2.42195988}, //
+
24452 {1.98014998, 2.42429996}, //
+
24453 {1.97411299, 2.46733022}, //
+
24454 {1.96355736, 2.50902104}, //
+
24455 {1.94848335, 2.5493722}, //
+
24456 {1.92889071, 2.58838391}, //
+
24457 {1.90477967, 2.62605619}, //
+
24458 {1.87615001, 2.6623888}, //
+
24459 {1.84300184, 2.69738221}, //
+
24460 {1.80533516, 2.73103571}, //
+
24461 {1.76314998, 2.76335001}, //
+
24462 {1.75448394, 2.76938272}, //
+
24463 {1.74506354, 2.77541423}, //
+
24464 {1.73488891, 2.78144455}, //
+
24465 {1.72395992, 2.78747344}, //
+
24466 {1.71227658, 2.79350114}, //
+
24467 {1.69983888, 2.79952788}, //
+
24468 {1.68664694, 2.8055532}, //
+
24469 {1.67270064, 2.81157708}, //
+
24470 {1.65799999, 2.81760001}, //
+
24471 {1.64755988, 2.82138777}, //
+
24472 {1.63732839, 2.82521725}, //
+
24473 {1.62730551, 2.82908893}, //
+
24474 {1.61749136, 2.83300257}, //
+
24475 {1.60788584, 2.83695793}, //
+
24476 {1.59848893, 2.8409555}, //
+
24477 {1.58930063, 2.84499502}, //
+
24478 {1.58032095, 2.84907651}, //
+
24479 {1.57155001, 2.85319996}, //
+
24480 {1.56311357, 2.85732341}, //
+
24481 {1.55513763, 2.8614049}, //
+
24482 {1.5476222, 2.86544442}, //
+
24483 {1.54056728, 2.86944199}, //
+
24484 {1.53397286, 2.87339759}, //
+
24485 {1.52783895, 2.87731123}, //
+
24486 {1.52216542, 2.88118267}, //
+
24487 {1.51695251, 2.88501239}, //
+
24488 {1.5122, 2.88879991}, //
+
24489 {1.50552845, 2.89416122}, //
+
24490 {1.497558, 2.89968896}, //
+
24491 {1.48828888, 2.90538335}, //
+
24492 {1.47772098, 2.91124439}, //
+
24493 {1.46585429, 2.91727233}, //
+
24494 {1.45268893, 2.92346668}, //
+
24495 {1.43822467, 2.92982769}, //
+
24496 {1.42246175, 2.93635559}, //
+
24497 {1.40540004, 2.94304991}, //
+
24498 {1.38776231, 2.94975424}, //
+
24499 {1.37024939, 2.95628953}, //
+
24500 {1.35286117, 2.96265554}, //
+
24501 {1.33559752, 2.96885252}, //
+
24502 {1.31845868, 2.97488022}, //
+
24503 {1.30144441, 2.98073888}, //
+
24504 {1.28455496, 2.9864285}, //
+
24505 {1.26779008, 2.99194884}, //
+
24506 {1.25115001, 2.99729991}, //
+
24507 {1.24084628, 3.00027966}, //
+
24508 {1.23104632, 3.00317407}, //
+
24509 {1.22175002, 3.00598335}, //
+
24510 {1.21295738, 3.00870752}, //
+
24511 {1.20466852, 3.01134634}, //
+
24512 {1.19688332, 3.01390004}, //
+
24513 {1.1896019, 3.01636863}, //
+
24514 {1.18282402, 3.01875186}, //
+
24515 {1.17655003, 3.02104998}, //
+
24516 {1.16070867, 3.02734447}, //
+
24517 {1.14331794, 3.03418326}, //
+
24518 {1.12437773, 3.04156661}, //
+
24519 {1.10388827, 3.0494945}, //
+
24520 {1.08184934, 3.05796671}, //
+
24521 {1.05826116, 3.06698322}, //
+
24522 {1.03312349, 3.07654452}, //
+
24523 {1.00643647, 3.08664989}, //
+
24524 {0.978200018, 3.09730005}, //
+
24525 {0.949754298, 3.10800242}, //
+
24526 {0.922439516, 3.11824322}, //
+
24527 {0.896255553, 3.12802219}, //
+
24528 {0.871202469, 3.13733959}, //
+
24529 {0.847280264, 3.14619517}, //
+
24530 {0.824488878, 3.15458894}, //
+
24531 {0.802828372, 3.16252089}, //
+
24532 {0.782298744, 3.16999125}, //
+
24533 {0.762899995, 3.17700005}, //
+
24534 {0.750046909, 3.18362093}, //
+
24535 {0.7371099, 3.18990612}, //
+
24536 {0.724088907, 3.19585562}, //
+
24537 {0.710983932, 3.20146918}, //
+
24538 {0.697795033, 3.20674682}, //
+
24539 {0.684522212, 3.211689}, //
+
24540 {0.671165407, 3.216295}, //
+
24541 {0.657724679, 3.22056532}, //
+
24542 {0.644200027, 3.22449994}, //
+
24543 {0.635270357, 3.22610497}, //
+
24544 {0.626548171, 3.22791982}, //
+
24545 {0.61803335, 3.22994447}, //
+
24546 {0.609725952, 3.23217893}, //
+
24547 {0.601625919, 3.23462343}, //
+
24548 {0.593733311, 3.23727775}, //
+
24549 {0.586048126, 3.24014187}, //
+
24550 {0.578570366, 3.24321604}, //
+
24551 {0.57130003, 3.24650002}, //
+
24552 {0.564249396, 3.2501297}, //
+
24553 {0.557408631, 3.25421858}, //
+
24554 {0.550777793, 3.25876665}, //
+
24555 {0.544356763, 3.26377416}, //
+
24556 {0.538145661, 3.26924086}, //
+
24557 {0.532144427, 3.27516675}, //
+
24558 {0.526353061, 3.28155184}, //
+
24559 {0.520771623, 3.28839636}, //
+
24560 {0.515399992, 3.29570007}, //
+
24561 {0.515399992, 3.29715872}, //
+
24562 {0.515399992, 3.29795265}, //
+
24563 });
+
24564 polys.push_back({
+
24565 {5.35682201, 3.27006102}, //
+
24566 {5.35652828, 3.27041793}, //
+
24567 {5.35615063, 3.27098465}, //
+
24568 {5.35568905, 3.27176118}, //
+
24569 {5.35514307, 3.27274752}, //
+
24570 {5.35451365, 3.2739439}, //
+
24571 {5.35379982, 3.27535009}, //
+
24572 {5.35373688, 3.27840304}, //
+
24573 {5.35354805, 3.28154016}, //
+
24574 {5.35343122, 3.28273773}, //
+
24575 {5.35379982, 3.28215003}, //
+
24576 {5.35451365, 3.27998829}, //
+
24577 {5.35514307, 3.27803636}, //
+
24578 {5.35568905, 3.27629447}, //
+
24579 {5.35615063, 3.27476239}, //
+
24580 {5.35652828, 3.27344012}, //
+
24581 {5.35682201, 3.27232766}, //
+
24582 {5.3570323, 3.27142525}, //
+
24583 {5.35715818, 3.27073264}, //
+
24584 {5.35720015, 3.27025008}, //
+
24585 {5.35715818, 3.26997709}, //
+
24586 {5.3570323, 3.26991415}, //
+
24587 });
+
24588 polys.push_back({
+
24589 {4.78342581, 2.11237097}, //
+
24590 {4.7827425, 2.11243391}, //
+
24591 {4.7821002, 2.11253881}, //
+
24592 {4.78149796, 2.11268592}, //
+
24593 {4.78093719, 2.11287475}, //
+
24594 {4.78041649, 2.11310554}, //
+
24595 {4.77993727, 2.11337829}, //
+
24596 {4.7794981, 2.11369324}, //
+
24597 {4.77909994, 2.11404991}, //
+
24598 {4.77874327, 2.11444879}, //
+
24599 {4.77842855, 2.11488962}, //
+
24600 {4.77815533, 2.11537218}, //
+
24601 {4.77792454, 2.11589694}, //
+
24602 {4.77773571, 2.11646366}, //
+
24603 {4.77758884, 2.11707211}, //
+
24604 {4.77748394, 2.11772275}, //
+
24605 {4.777421, 2.11841536}, //
+
24606 {4.77740002, 2.11914992}, //
+
24607 {4.77815485, 2.11927533}, //
+
24608 {4.77890873, 2.11965132}, //
+
24609 {4.77966118, 2.12027788}, //
+
24610 {4.7804122, 2.12115502}, //
+
24611 {4.78116226, 2.12228274}, //
+
24612 {4.7819109, 2.12366104}, //
+
24613 {4.78265858, 2.12529016}, //
+
24614 {4.78340483, 2.12716985}, //
+
24615 {4.78415012, 2.12930012}, //
+
24616 {4.78805256, 2.13417768}, //
+
24617 {4.79220438, 2.13976669}, //
+
24618 {4.79660559, 2.14606667}, //
+
24619 {4.80125618, 2.15307784}, //
+
24620 {4.80615616, 2.16079998}, //
+
24621 {4.81130552, 2.16923332}, //
+
24622 {4.81670427, 2.17837787}, //
+
24623 {4.82235241, 2.18823338}, //
+
24624 {4.82824993, 2.19880009}, //
+
24625 {4.83398962, 2.20975375}, //
+
24626 {4.83914137, 2.22074819}, //
+
24627 {4.84370565, 2.23178339}, //
+
24628 {4.847682, 2.24285936}, //
+
24629 {4.85107088, 2.25397587}, //
+
24630 {4.8538723, 2.26513338}, //
+
24631 {4.85608578, 2.27633142}, //
+
24632 {4.85771179, 2.28757048}, //
+
24633 {4.85874987, 2.29885006}, //
+
24634 {4.85938025, 2.31358218}, //
+
24635 {4.85975981, 2.32764506}, //
+
24636 {4.85988903, 2.34103894}, //
+
24637 {4.85976744, 2.35376358}, //
+
24638 {4.85939503, 2.36581922}, //
+
24639 {4.85877228, 2.37720561}, //
+
24640 {4.85789871, 2.38792276}, //
+
24641 {4.85677481, 2.39797091}, //
+
24642 {4.85540009, 2.40735006}, //
+
24643 {4.85468626, 2.41266918}, //
+
24644 {4.85405684, 2.41807103}, //
+
24645 {4.85351133, 2.42355561}, //
+
24646 {4.85304928, 2.42912292}, //
+
24647 {4.85267162, 2.43477273}, //
+
24648 {4.85237789, 2.4405055}, //
+
24649 {4.85216808, 2.44632101}, //
+
24650 {4.8520422, 2.45221925}, //
+
24651 {4.85200024, 2.45819998}, //
+
24652 {4.8520422, 2.46188331}, //
+
24653 {4.85216808, 2.46539998}, //
+
24654 {4.85237789, 2.46875}, //
+
24655 {4.85267162, 2.47193336}, //
+
24656 {4.85304928, 2.47495008}, //
+
24657 {4.85351133, 2.47779989}, //
+
24658 {4.85405684, 2.48048329}, //
+
24659 {4.85468626, 2.48300004}, //
+
24660 {4.85540009, 2.48534989}, //
+
24661 {4.8553791, 2.4891789}, //
+
24662 {4.85531616, 2.49313283}, //
+
24663 {4.85521126, 2.49721122}, //
+
24664 {4.85506439, 2.5014143}, //
+
24665 {4.85487509, 2.50574207}, //
+
24666 {4.8546443, 2.51019454}, //
+
24667 {4.85437155, 2.5147717}, //
+
24668 {4.85405684, 2.51947355}, //
+
24669 {4.85370016, 2.5243001}, //
+
24670 {4.85325909, 2.52947211}, //
+
24671 {4.8526926, 2.53518891}, //
+
24672 {4.85200024, 2.54145002}, //
+
24673 {4.85118151, 2.54825544}, //
+
24674 {4.85023689, 2.55560565}, //
+
24675 {4.84916687, 2.56349993}, //
+
24676 {4.84797049, 2.57193899}, //
+
24677 {4.84664822, 2.58092213}, //
+
24678 {4.84520006, 2.59045005}, //
+
24679 {4.84227228, 2.60212851}, //
+
24680 {4.83951092, 2.61305237}, //
+
24681 {4.83691645, 2.62322211}, //
+
24682 {4.83448887, 2.63263774}, //
+
24683 {4.83222771, 2.64129877}, //
+
24684 {4.83013344, 2.64920545}, //
+
24685 {4.82820559, 2.656358}, //
+
24686 {4.82644463, 2.6627562}, //
+
24687 {4.82485008, 2.66840005}, //
+
24688 {4.82411528, 2.67140055}, //
+
24689 {4.82342291, 2.67435813}, //
+
24690 {4.82277203, 2.67727232}, //
+
24691 {4.82216358, 2.68014312}, //
+
24692 {4.8215971, 2.682971}, //
+
24693 {4.8210721, 2.68575549}, //
+
24694 {4.82058954, 2.68849683}, //
+
24695 {4.82014894, 2.69119501}, //
+
24696 {4.81974983, 2.69385004}, //
+
24697 {4.81940365, 2.69650483}, //
+
24698 {4.819098, 2.69920301}, //
+
24699 {4.81883335, 2.70194435}, //
+
24700 {4.81860924, 2.70472908}, //
+
24701 {4.81842613, 2.70755672}, //
+
24702 {4.81828356, 2.71042776}, //
+
24703 {4.81818151, 2.71334195}, //
+
24704 {4.81812048, 2.7162993}, //
+
24705 {4.81809998, 2.71930003}, //
+
24706 {4.81876183, 2.72407293}, //
+
24707 {4.81925821, 2.72934699}, //
+
24708 {4.81958866, 2.7351222}, //
+
24709 {4.81975412, 2.74139881}, //
+
24710 {4.81975412, 2.74817657}, //
+
24711 {4.81958866, 2.75545549}, //
+
24712 {4.81925821, 2.76323581}, //
+
24713 {4.81876183, 2.77151728}, //
+
24714 {4.81809998, 2.7802999}, //
+
24715 {4.81734467, 2.7904346}, //
+
24716 {4.81658888, 2.8012383}, //
+
24717 {4.81583357, 2.812711}, //
+
24718 {4.81507778, 2.82485318}, //
+
24719 {4.81432199, 2.83766413}, //
+
24720 {4.81356668, 2.85114455}, //
+
24721 {4.8128109, 2.86529374}, //
+
24722 {4.81205559, 2.88011241}, //
+
24723 {4.8112998, 2.89560008}, //
+
24724 {4.81125784, 2.90631223}, //
+
24725 {4.81113195, 2.91736054}, //
+
24726 {4.81092215, 2.92874455}, //
+
24727 {4.81062841, 2.94046426}, //
+
24728 {4.81025076, 2.95251966}, //
+
24729 {4.8097887, 2.96491122}, //
+
24730 {4.8092432, 2.97763824}, //
+
24731 {4.80861378, 2.9907012}, //
+
24732 {4.80789995, 3.00410008}, //
+
24733 {4.80712366, 3.01751971}, //
+
24734 {4.80630493, 3.03064561}, //
+
24735 {4.80544424, 3.04347777}, //
+
24736 {4.80454206, 3.05601597}, //
+
24737 {4.80359745, 3.06826043}, //
+
24738 {4.80261087, 3.08021116}, //
+
24739 {4.80158281, 3.09186792}, //
+
24740 {4.80051231, 3.10323095}, //
+
24741 {4.79939985, 3.11430001}, //
+
24742 {4.79829836, 3.1247828}, //
+
24743 {4.79723692, 3.1343863}, //
+
24744 {4.79621649, 3.14311123}, //
+
24745 {4.79523706, 3.15095687}, //
+
24746 {4.79429817, 3.15792346}, //
+
24747 {4.79339981, 3.164011}, //
+
24748 {4.79254246, 3.16921973}, //
+
24749 {4.79172611, 3.17354941}, //
+
24750 {4.79094982, 3.17700005}, //
+
24751 {4.79017353, 3.18156409}, //
+
24752 {4.7893548, 3.1862123}, //
+
24753 {4.78849459, 3.19094443}, //
+
24754 {4.78759193, 3.19576049}, //
+
24755 {4.78664732, 3.20066047}, //
+
24756 {4.78566122, 3.20564437}, //
+
24757 {4.78463268, 3.21071243}, //
+
24758 {4.78356218, 3.21586418}, //
+
24759 {4.7824502, 3.22110009}, //
+
24760 {4.78139019, 3.22620988}, //
+
24761 {4.78045511, 3.23098397}, //
+
24762 {4.77964449, 3.23542213}, //
+
24763 {4.7789588, 3.2395246}, //
+
24764 {4.77839756, 3.24329138}, //
+
24765 {4.77796125, 3.24672222}, //
+
24766 {4.7776494, 3.24981737}, //
+
24767 {4.77746248, 3.25257659}, //
+
24768 {4.77740002, 3.25500011}, //
+
24769 {4.777421, 3.25577593}, //
+
24770 {4.77748394, 3.25659251}, //
+
24771 {4.77758884, 3.2574501}, //
+
24772 {4.77773571, 3.25834823}, //
+
24773 {4.77792454, 3.25928712}, //
+
24774 {4.77815533, 3.26026678}, //
+
24775 {4.77842855, 3.26128697}, //
+
24776 {4.77874327, 3.26234818}, //
+
24777 {4.77909994, 3.26344991}, //
+
24778 {4.77947712, 3.26456237}, //
+
24779 {4.77985287, 3.26563263}, //
+
24780 {4.78022766, 3.26666117}, //
+
24781 {4.78060102, 3.2676475}, //
+
24782 {4.78097343, 3.26859188}, //
+
24783 {4.78134441, 3.26949453}, //
+
24784 {4.78171396, 3.27035499}, //
+
24785 {4.78208256, 3.27117348}, //
+
24786 {4.7824502, 3.27195001}, //
+
24787 {4.78284883, 3.27268457}, //
+
24788 {4.78328943, 3.27337718}, //
+
24789 {4.78377199, 3.27402782}, //
+
24790 {4.78429699, 3.27463651}, //
+
24791 {4.78486347, 3.27520299}, //
+
24792 {4.78547239, 3.27572775}, //
+
24793 {4.7861228, 3.27621055}, //
+
24794 {4.78681564, 3.27665114}, //
+
24795 {4.78754997, 3.27705002}, //
+
24796 {4.7882638, 3.27740669}, //
+
24797 {4.78889322, 3.27772164}, //
+
24798 {4.78943872, 3.27799439}, //
+
24799 {4.78990078, 3.27822542}, //
+
24800 {4.79027843, 3.27841425}, //
+
24801 {4.79057217, 3.27856112}, //
+
24802 {4.79078197, 3.27866602}, //
+
24803 {4.79094982, 3.27874994}, //
+
24804 {4.88250017, 3.20075011}, //
+
24805 {4.88250017, 3.19915986}, //
+
24806 {4.88250017, 3.19717216}, //
+
24807 {4.88250017, 3.18127108}, //
+
24808 {4.88250017, 3.17530799}, //
+
24809 {4.88250017, 3.16855001}, //
+
24810 {4.88254213, 3.16112232}, //
+
24811 {4.88266802, 3.15315008}, //
+
24812 {4.88287783, 3.14463329}, //
+
24813 {4.88317156, 3.1355722}, //
+
24814 {4.88354921, 3.12596655}, //
+
24815 {4.88401127, 3.11581659}, //
+
24816 {4.88455677, 3.10512233}, //
+
24817 {4.8851862, 3.09388328}, //
+
24818 {4.88590002, 3.08209991}, //
+
24819 {4.88665485, 3.07745194}, //
+
24820 {4.88740873, 3.07255197}, //
+
24821 {4.88816118, 3.06739998}, //
+
24822 {4.8889122, 3.06199622}, //
+
24823 {4.88966227, 3.05634069}, //
+
24824 {4.8904109, 3.0504334}, //
+
24825 {4.89115858, 3.04427409}, //
+
24826 {4.89190483, 3.03786302}, //
+
24827 {4.89265013, 3.03119993}, //
+
24828 {4.89529324, 3.00542283}, //
+
24829 {4.89868927, 2.97780252}, //
+
24830 {4.90283871, 2.94833899}, //
+
24831 {4.90774155, 2.917032}, //
+
24832 {4.91339684, 2.88388205}, //
+
24833 {4.91980553, 2.84888887}, //
+
24834 {4.92696714, 2.81205249}, //
+
24835 {4.93488216, 2.77337289}, //
+
24836 {4.94355011, 2.73285007}, //
+
24837 {4.95430756, 2.68207479}, //
+
24838 {4.96246862, 2.6337266}, //
+
24839 {4.96803331, 2.58780551}, //
+
24840 {4.97100163, 2.54431176}, //
+
24841 {4.97137403, 2.50324512}, //
+
24842 {4.96915007, 2.46460557}, //
+
24843 {4.96432972, 2.42839313}, //
+
24844 {4.95691299, 2.39460802}, //
+
24845 {4.94689989, 2.36325002}, //
+
24846 {4.93509579, 2.33483458}, //
+
24847 {4.92379379, 2.30834389}, //
+
24848 {4.91299438, 2.28377771}, //
+
24849 {4.90269756, 2.26113653}, //
+
24850 {4.89290285, 2.24041986}, //
+
24851 {4.8836112, 2.22162771}, //
+
24852 {4.87482166, 2.20476055}, //
+
24853 {4.86653471, 2.18981791}, //
+
24854 {4.85874987, 2.17680001}, //
+
24855 {4.85643148, 2.17307472}, //
+
24856 {4.85398722, 2.16943216}, //
+
24857 {4.85141659, 2.16587234}, //
+
24858 {4.84872055, 2.162395}, //
+
24859 {4.84589815, 2.15900064}, //
+
24860 {4.84294987, 2.155689}, //
+
24861 {4.8398757, 2.15245986}, //
+
24862 {4.83667612, 2.14931369}, //
+
24863 {4.83335018, 2.14625001}, //
+
24864 {4.82998133, 2.14330125}, //
+
24865 {4.82665348, 2.14047718}, //
+
24866 {4.82336664, 2.13777781}, //
+
24867 {4.82012033, 2.13520312}, //
+
24868 {4.81691504, 2.13275313}, //
+
24869 {4.81374979, 2.13042784}, //
+
24870 {4.81062603, 2.12822723}, //
+
24871 {4.8075428, 2.12615132}, //
+
24872 {4.8045001, 2.12420011}, //
+
24873 {4.80161428, 2.12242651}, //
+
24874 {4.79897881, 2.12086177}, //
+
24875 {4.79659462, 2.11950564}, //
+
24876 {4.7944603, 2.11835814}, //
+
24877 {4.79257727, 2.11741924}, //
+
24878 {4.79094458, 2.11668897}, //
+
24879 {4.78956223, 2.11616731}, //
+
24880 {4.78843069, 2.11585426}, //
+
24881 {4.78754997, 2.11575007}, //
+
24882 {4.78750801, 2.11503649}, //
+
24883 {4.78738213, 2.11440682}, //
+
24884 {4.78717232, 2.11386108}, //
+
24885 {4.78687859, 2.11339927}, //
+
24886 {4.78650045, 2.11302161}, //
+
24887 {4.78603888, 2.11272788}, //
+
24888 {4.78549337, 2.11251783}, //
+
24889 {4.78486347, 2.11239195}, //
+
24890 {4.78415012, 2.11234999}, //
+
24891 });
+
24892 polys.push_back({
+
24893 {4.59429979, 1.95469999}, //
+
24894 {4.5944252, 1.95610499}, //
+
24895 {4.59480143, 1.95805311}, //
+
24896 {4.59542799, 1.96054447}, //
+
24897 {4.59630489, 1.96357906}, //
+
24898 {4.59743261, 1.96715677}, //
+
24899 {4.59881115, 1.97127783}, //
+
24900 {4.60044003, 1.97594202}, //
+
24901 {4.60231972, 1.98114944}, //
+
24902 {4.60445023, 1.98689997}, //
+
24903 {4.60673714, 1.99369872}, //
+
24904 {4.60906458, 2.00053954}, //
+
24905 {4.61143351, 2.00742221}, //
+
24906 {4.61384249, 2.01434684}, //
+
24907 {4.61629248, 2.02131367}, //
+
24908 {4.61878347, 2.02832222}, //
+
24909 {4.621315, 2.03537273}, //
+
24910 {4.62388706, 2.04246545}, //
+
24911 {4.62650013, 2.04959989}, //
+
24912 {4.62903881, 2.05678701}, //
+
24913 {4.63136673, 2.06401491}, //
+
24914 {4.63348341, 2.07128334}, //
+
24915 {4.63538885, 2.07859254}, //
+
24916 {4.63708353, 2.08594251}, //
+
24917 {4.63856649, 2.09333324}, //
+
24918 {4.6398387, 2.10076475}, //
+
24919 {4.64090014, 2.10823703}, //
+
24920 {4.64174986, 2.11575007}, //
+
24921 {4.64311409, 2.12897968}, //
+
24922 {4.64418459, 2.14304638}, //
+
24923 {4.64496088, 2.15794992}, //
+
24924 {4.64544392, 2.1736908}, //
+
24925 {4.64563274, 2.19026852}, //
+
24926 {4.64552784, 2.20768332}, //
+
24927 {4.6451292, 2.22593522}, //
+
24928 {4.64443636, 2.24502397}, //
+
24929 {4.64344978, 2.26495004}, //
+
24930 {4.6418457, 2.28596425}, //
+
24931 {4.63927698, 2.3083179}, //
+
24932 {4.63574457, 2.33201122}, //
+
24933 {4.63124752, 2.35704374}, //
+
24934 {4.6257863, 2.38341594}, //
+
24935 {4.61936092, 2.41112781}, //
+
24936 {4.61197138, 2.44017911}, //
+
24937 {4.60361767, 2.47056985}, //
+
24938 {4.59429979, 2.50230002}, //
+
24939 {4.58241177, 2.5383327}, //
+
24940 {4.570858, 2.57260871}, //
+
24941 {4.55963898, 2.60512781}, //
+
24942 {4.54875422, 2.63589001}, //
+
24943 {4.53820419, 2.66489577}, //
+
24944 {4.52798891, 2.69214439}, //
+
24945 {4.51810789, 2.71763635}, //
+
24946 {4.50856161, 2.74137163}, //
+
24947 {4.49935007, 2.76335001}, //
+
24948 {4.49219322, 2.78076863}, //
+
24949 {4.4857893, 2.79684639}, //
+
24950 {4.48013878, 2.81158328}, //
+
24951 {4.47524118, 2.82497954}, //
+
24952 {4.47109699, 2.83703518}, //
+
24953 {4.46770573, 2.84774995}, //
+
24954 {4.46506739, 2.85712409}, //
+
24955 {4.46318197, 2.86515737}, //
+
24956 {4.46204996, 2.87185001}, //
+
24957 {4.46139956, 2.87574196}, //
+
24958 {4.46095848, 2.87988448}, //
+
24959 {4.46072769, 2.88427782}, //
+
24960 {4.46070671, 2.8889215}, //
+
24961 {4.46089554, 2.89381599}, //
+
24962 {4.46129465, 2.89896107}, //
+
24963 {4.4619031, 2.90435672}, //
+
24964 {4.46272182, 2.91000319}, //
+
24965 {4.46374989, 2.91589999}, //
+
24966 {4.46496677, 2.92191172}, //
+
24967 {4.46635008, 2.92788029}, //
+
24968 {4.4678998, 2.93380547}, //
+
24969 {4.46961689, 2.93968773}, //
+
24970 {4.47149992, 2.9455266}, //
+
24971 {4.47354984, 2.95132232}, //
+
24972 {4.47576666, 2.95707464}, //
+
24973 {4.47814989, 2.96278405}, //
+
24974 {4.48070002, 2.96845007}, //
+
24975 {4.48332262, 2.97391725}, //
+
24976 {4.48590231, 2.97900796}, //
+
24977 {4.48843908, 2.98372221}, //
+
24978 {4.49093199, 2.98805976}, //
+
24979 {4.49338198, 2.99202108}, //
+
24980 {4.49578905, 2.99560547}, //
+
24981 {4.49815226, 2.99881363}, //
+
24982 {4.50047302, 3.00164509}, //
+
24983 {4.50274992, 3.00410008}, //
+
24984 {4.50421858, 3.00567341}, //
+
24985 {4.50560188, 3.00737166}, //
+
24986 {4.50689983, 3.00919437}, //
+
24987 {4.50811291, 3.01114202}, //
+
24988 {4.50924063, 3.01321411}, //
+
24989 {4.51028347, 3.01541114}, //
+
24990 {4.51124096, 3.01773262}, //
+
24991 {4.51211309, 3.02017903}, //
+
24992 {4.51289988, 3.0227499}, //
+
24993 {4.5136137, 3.02548838}, //
+
24994 {4.51424313, 3.02843642}, //
+
24995 {4.5147891, 3.03159451}, //
+
24996 {4.51525068, 3.03496242}, //
+
24997 {4.51562834, 3.03854012}, //
+
24998 {4.51592207, 3.04232788}, //
+
24999 {4.51613188, 3.04632521}, //
+
25000 {4.51625824, 3.05053282}, //
+
25001 {4.5163002, 3.05495}, //
+
25002 {4.51713943, 3.06102467}, //
+
25003 {4.51814699, 3.06718206}, //
+
25004 {4.5193224, 3.07342219}, //
+
25005 {4.52066565, 3.07974505}, //
+
25006 {4.52217674, 3.08615065}, //
+
25007 {4.52385569, 3.09263897}, //
+
25008 {4.52570248, 3.09920979}, //
+
25009 {4.52771711, 3.10586357}, //
+
25010 {4.52990007, 3.11260009}, //
+
25011 {4.53215551, 3.1187067}, //
+
25012 {4.53441095, 3.12498283}, //
+
25013 {4.53666687, 3.13142776}, //
+
25014 {4.53892231, 3.13804197}, //
+
25015 {4.54117775, 3.14482522}, //
+
25016 {4.54343319, 3.15177774}, //
+
25017 {4.54568911, 3.15889931}, //
+
25018 {4.54794455, 3.16619015}, //
+
25019 {4.55019999, 3.17365003}, //
+
25020 {4.55405045, 3.18482399}, //
+
25021 {4.55806923, 3.19574618}, //
+
25022 {4.56225538, 3.20641661}, //
+
25023 {4.56660986, 3.21683526}, //
+
25024 {4.57113218, 3.22700191}, //
+
25025 {4.57582235, 3.23691678}, //
+
25026 {4.58068037, 3.24657965}, //
+
25027 {4.58570623, 3.25599074}, //
+
25028 {4.59089994, 3.26515007}, //
+
25029 {4.59085798, 3.26432109}, //
+
25030 {4.5907321, 3.26332283}, //
+
25031 {4.59052229, 3.26215553}, //
+
25032 {4.59022856, 3.2608192}, //
+
25033 {4.58985043, 3.25931358}, //
+
25034 {4.58938885, 3.25763893}, //
+
25035 {4.58884335, 3.255795}, //
+
25036 {4.58821344, 3.25378203}, //
+
25037 {4.5875001, 3.25160003}, //
+
25038 {4.58671284, 3.24766612}, //
+
25039 {4.5858407, 3.24339747}, //
+
25040 {4.58488321, 3.23879433}, //
+
25041 {4.58384085, 3.23385668}, //
+
25042 {4.58271313, 3.22858453}, //
+
25043 {4.58150005, 3.22297788}, //
+
25044 {4.58020163, 3.21703649}, //
+
25045 {4.57881832, 3.21076059}, //
+
25046 {4.57735014, 3.20414996}, //
+
25047 {4.57604885, 3.19741368}, //
+
25048 {4.57516718, 3.1907599}, //
+
25049 {4.5747056, 3.18418884}, //
+
25050 {4.57466364, 3.17770052}, //
+
25051 {4.57504129, 3.17129517}, //
+
25052 {4.57583904, 3.16497231}, //
+
25053 {4.57705641, 3.15873218}, //
+
25054 {4.57869339, 3.15257478}, //
+
25055 {4.58074999, 3.14650011}, //
+
25056 {4.58214569, 3.13768578}, //
+
25057 {4.58333254, 3.12933207}, //
+
25058 {4.58431101, 3.12143898}, //
+
25059 {4.5850811, 3.11400628}, //
+
25060 {4.58564186, 3.10703397}, //
+
25061 {4.58599424, 3.10052228}, //
+
25062 {4.58613825, 3.09447098}, //
+
25063 {4.5860734, 3.0888803}, //
+
25064 {4.58580017, 3.08375001}, //
+
25065 {4.5852437, 3.07875562}, //
+
25066 {4.58430862, 3.07354999}, //
+
25067 {4.58299446, 3.06813335}, //
+
25068 {4.58130121, 3.06250548}, //
+
25069 {4.57922888, 3.05666661}, //
+
25070 {4.57677794, 3.05061674}, //
+
25071 {4.57394743, 3.04435563}, //
+
25072 {4.57073832, 3.03788328}, //
+
25073 {4.56715012, 3.03119993}, //
+
25074 {4.56108379, 3.02023888}, //
+
25075 {4.55644131, 3.00693345}, //
+
25076 {4.55322218, 2.99128342}, //
+
25077 {4.55142641, 2.97328877}, //
+
25078 {4.55105448, 2.95295}, //
+
25079 {4.55210543, 2.93026662}, //
+
25080 {4.55458021, 2.90523887}, //
+
25081 {4.55847836, 2.87786674}, //
+
25082 {4.56379986, 2.84815001}, //
+
25083 {4.56622362, 2.83860302}, //
+
25084 {4.5689826, 2.82805133}, //
+
25085 {4.57207775, 2.81649446}, //
+
25086 {4.57550859, 2.80393267}, //
+
25087 {4.57927513, 2.79036593}, //
+
25088 {4.58337784, 2.77579451}, //
+
25089 {4.58781624, 2.76021791}, //
+
25090 {4.59259033, 2.74363637}, //
+
25091 {4.59770012, 2.7260499}, //
+
25092 {4.6037221, 2.70183396}, //
+
25093 {4.60974455, 2.67740798}, //
+
25094 {4.61576653, 2.65277219}, //
+
25095 {4.62178898, 2.62792659}, //
+
25096 {4.62781096, 2.60287094}, //
+
25097 {4.63383341, 2.57760549}, //
+
25098 {4.63985538, 2.55213022}, //
+
25099 {4.64587784, 2.52644515}, //
+
25100 {4.65189981, 2.50055003}, //
+
25101 {4.65763998, 2.47516799}, //
+
25102 {4.66279364, 2.4509995}, //
+
25103 {4.66736126, 2.42804456}, //
+
25104 {4.6713419, 2.40630317}, //
+
25105 {4.6747365, 2.38577533}, //
+
25106 {4.67754459, 2.36646104}, //
+
25107 {4.67976618, 2.34836054}, //
+
25108 {4.68140125, 2.33147335}, //
+
25109 {4.68244982, 2.31579995}, //
+
25110 {4.68297529, 2.29543447}, //
+
25111 {4.68304014, 2.27502728}, //
+
25112 {4.68264437, 2.25457788}, //
+
25113 {4.68178844, 2.23408651}, //
+
25114 {4.68047142, 2.21355319}, //
+
25115 {4.67869425, 2.19297767}, //
+
25116 {4.67645693, 2.17236042}, //
+
25117 {4.67375851, 2.15170121}, //
+
25118 {4.67059994, 2.13100004}, //
+
25119 {4.66689682, 2.11067581}, //
+
25120 {4.66256523, 2.09114814}, //
+
25121 {4.65760565, 2.07241678}, //
+
25122 {4.65201712, 2.05448151}, //
+
25123 {4.64580059, 2.03734255}, //
+
25124 {4.63895559, 2.02099991}, //
+
25125 {4.63148212, 2.00545359}, //
+
25126 {4.62338018, 1.9907037}, //
+
25127 {4.61464977, 1.97675002}, //
+
25128 {4.61037922, 1.97111487}, //
+
25129 {4.6066103, 1.96627593}, //
+
25130 {4.60334444, 1.9622333}, //
+
25131 {4.60058069, 1.958987}, //
+
25132 {4.59831953, 1.95653701}, //
+
25133 {4.59656096, 1.95488334}, //
+
25134 {4.59530497, 1.95402598}, //
+
25135 {4.59455109, 1.95396483}, //
+
25136 });
+
25137 polys.push_back({
+
25138 {0.220316052, 3.19059992}, //
+
25139 {0.220400006, 3.19059992}, //
+
25140 {0.22037901, 3.19059992}, //
+
25141 });
+
25142 polys.push_back({
+
25143 {0.342449993, 3.14989996}, //
+
25144 {0.342449993, 3.14784312}, //
+
25145 {0.342449993, 3.14752841}, //
+
25146 {0.342449993, 3.14725566}, //
+
25147 {0.342449993, 3.14647913}, //
+
25148 {0.342449993, 3.14641595}, //
+
25149 {0.342449993, 3.14631104}, //
+
25150 {0.342449993, 3.14479995}, //
+
25151 {0.342429012, 3.14444327}, //
+
25152 {0.34236604, 3.14412832}, //
+
25153 {0.342261106, 3.14385557}, //
+
25154 {0.34211421, 3.14362478}, //
+
25155 {0.341925323, 3.14343572}, //
+
25156 {0.341694444, 3.14328885}, //
+
25157 {0.341421604, 3.14318395}, //
+
25158 {0.341106802, 3.143121}, //
+
25159 {0.340750009, 3.14310002}, //
+
25160 {0.340393215, 3.14305806}, //
+
25161 {0.340078384, 3.14293218}, //
+
25162 {0.339805543, 3.14272213}, //
+
25163 {0.339574695, 3.1424284}, //
+
25164 {0.339385808, 3.1420505}, //
+
25165 {0.339238882, 3.14158893}, //
+
25166 {0.339133948, 3.14104319}, //
+
25167 {0.339070976, 3.14041352}, //
+
25168 {0.339049995, 3.13969994}, //
+
25169 {0.338336408, 3.13965869}, //
+
25170 {0.337706804, 3.13953447}, //
+
25171 {0.337161124, 3.13932776}, //
+
25172 {0.336699396, 3.13903832}, //
+
25173 {0.336321592, 3.13866615}, //
+
25174 {0.336027771, 3.13821101}, //
+
25175 {0.335817903, 3.13767338}, //
+
25176 {0.335691988, 3.13705301}, //
+
25177 {0.335649997, 3.13634992}, //
+
25178 {0.334841967, 3.13483882}, //
+
25179 {0.3339068, 3.13332772}, //
+
25180 {0.332844436, 3.13181663}, //
+
25181 {0.331654936, 3.13030553}, //
+
25182 {0.330338269, 3.12879443}, //
+
25183 {0.328894436, 3.12728333}, //
+
25184 {0.327323467, 3.12577224}, //
+
25185 {0.3256253, 3.12426114}, //
+
25186 {0.323799998, 3.12275004}, //
+
25187 {0.321942598, 3.12137532}, //
+
25188 {0.320125937, 3.12025118}, //
+
25189 {0.318349987, 3.11937785}, //
+
25190 {0.316614807, 3.11875486}, //
+
25191 {0.314920366, 3.11838269}, //
+
25192 {0.313266665, 3.1182611}, //
+
25193 {0.311653703, 3.11839008}, //
+
25194 {0.310081482, 3.11876965}, //
+
25195 {0.30855, 3.11940002}, //
+
25196 {0.307038903, 3.1216135}, //
+
25197 {0.305527776, 3.1237433}, //
+
25198 {0.30401668, 3.12578893}, //
+
25199 {0.302505553, 3.12775064}, //
+
25200 {0.300994456, 3.12962842}, //
+
25201 {0.299483329, 3.13142228}, //
+
25202 {0.297972232, 3.13313198}, //
+
25203 {0.296461105, 3.134758}, //
+
25204 {0.294950008, 3.13630009}, //
+
25205 {0.293491364, 3.13781047}, //
+
25206 {0.29211542, 3.13931966}, //
+
25207 {0.290822208, 3.14082789}, //
+
25208 {0.289611727, 3.14233446}, //
+
25209 {0.288483948, 3.14384007}, //
+
25210 {0.287438899, 3.1453445}, //
+
25211 {0.286476552, 3.14684749}, //
+
25212 {0.285596907, 3.14834929}, //
+
25213 {0.284799993, 3.14984989}, //
+
25214 {0.284086406, 3.15131903}, //
+
25215 {0.283456802, 3.15270424}, //
+
25216 {0.282911122, 3.15400553}, //
+
25217 {0.282449394, 3.15522289}, //
+
25218 {0.28207159, 3.1563561}, //
+
25219 {0.281777769, 3.15740561}, //
+
25220 {0.281567901, 3.15837097}, //
+
25221 {0.281441987, 3.15925241}, //
+
25222 {0.281399995, 3.16004992}, //
+
25223 {0.282134563, 3.16080546}, //
+
25224 {0.282827169, 3.16156101}, //
+
25225 {0.283477783, 3.16231656}, //
+
25226 {0.284086406, 3.16307211}, //
+
25227 {0.284653097, 3.1638279}, //
+
25228 {0.285177767, 3.16458344}, //
+
25229 {0.285660505, 3.16533899}, //
+
25230 {0.286101222, 3.16609454}, //
+
25231 {0.286500007, 3.16685009}, //
+
25232 {0.286898762, 3.16760492}, //
+
25233 {0.287339509, 3.16835856}, //
+
25234 {0.287822217, 3.16911101}, //
+
25235 {0.288346916, 3.16986227}, //
+
25236 {0.288913578, 3.17061234}, //
+
25237 {0.289522231, 3.17136121}, //
+
25238 {0.290172845, 3.17210865}, //
+
25239 {0.290865421, 3.1728549}, //
+
25240 {0.291599989, 3.17359996}, //
+
25241 {0.292354941, 3.17433453}, //
+
25242 {0.293108642, 3.17502713}, //
+
25243 {0.293861121, 3.17567778}, //
+
25244 {0.294612348, 3.17628646}, //
+
25245 {0.295362353, 3.17685318}, //
+
25246 {0.296111107, 3.1773777}, //
+
25247 {0.296858639, 3.1778605}, //
+
25248 {0.297604948, 3.17830133}, //
+
25249 {0.298350006, 3.17869997}, //
+
25250 {0.299063593, 3.17905688}, //
+
25251 {0.300238878, 3.17964435}, //
+
25252 {0.300700605, 3.17987537}, //
+
25253 {0.301078409, 3.1800642}, //
+
25254 {0.30137223, 3.18021107}, //
+
25255 {0.301582098, 3.18031597}, //
+
25256 {0.301708013, 3.18037891}, //
+
25257 {0.301750004, 3.18039989}, //
+
25258 {0.302546918, 3.17962337}, //
+
25259 {0.303426534, 3.17880487}, //
+
25260 {0.304388881, 3.17794442}, //
+
25261 {0.305433959, 3.17704201}, //
+
25262 {0.306561738, 3.17609763}, //
+
25263 {0.307772219, 3.17511106}, //
+
25264 {0.309065431, 3.17408276}, //
+
25265 {0.310441345, 3.17301226}, //
+
25266 {0.31189999, 3.17190003}, //
+
25267 {0.313411117, 3.17077708}, //
+
25268 {0.314922214, 3.16965318}, //
+
25269 {0.31643334, 3.16852784}, //
+
25270 {0.317944437, 3.16740131}, //
+
25271 {0.319455564, 3.16627336}, //
+
25272 {0.320966661, 3.16514444}, //
+
25273 {0.322477788, 3.1640141}, //
+
25274 {0.323988885, 3.1628828}, //
+
25275 {0.325500011, 3.16175008}, //
+
25276 {0.326989502, 3.16063762}, //
+
25277 {0.328435808, 3.15956736}, //
+
25278 {0.329838902, 3.15853882}, //
+
25279 {0.331198752, 3.15755248}, //
+
25280 {0.332515419, 3.1566081}, //
+
25281 {0.333788902, 3.15570545}, //
+
25282 {0.335019141, 3.154845}, //
+
25283 {0.336206168, 3.15402651}, //
+
25284 {0.337350011, 3.15324998}, //
+
25285 {0.340875924, 3.15093398}, //
+
25286 {0.341442585, 3.15056181}, //
+
25287 {0.341883332, 3.15027213}, //
+
25288 {0.34238705, 3.14994144}, //
+
25289 {0.342449993, 3.14989996}, //
+
25290 });
+
25291 polys.push_back({
+
25292 {5.3741498, 3.16556907}, //
+
25293 {5.3741498, 3.16601562}, //
+
25294 {5.3741498, 3.16514993}, //
+
25295 });
+
25296 polys.push_back({
+
25297 {4.87027216, 2.07844996}, //
+
25298 {4.86857224, 2.07844996}, //
+
25299 {4.86808968, 2.07844996}, //
+
25300 {4.8676486, 2.07844996}, //
+
25301 {4.86724997, 2.07844996}, //
+
25302 {4.86689329, 2.07849193}, //
+
25303 {4.86657858, 2.07861781}, //
+
25304 {4.86630535, 2.07882786}, //
+
25305 {4.86607456, 2.07912159}, //
+
25306 {4.86588573, 2.07949948}, //
+
25307 {4.86573887, 2.07996106}, //
+
25308 {4.86563396, 2.0805068}, //
+
25309 {4.86557102, 2.08113647}, //
+
25310 {4.86555004, 2.08185005}, //
+
25311 {4.86555004, 2.08193398}, //
+
25312 {4.86555004, 2.08203888}, //
+
25313 {4.86555004, 2.08287835}, //
+
25314 {4.86555004, 2.0831933}, //
+
25315 {4.86555004, 2.08354998}, //
+
25316 {4.86550808, 2.08390689}, //
+
25317 {4.86538219, 2.0842216}, //
+
25318 {4.86517239, 2.08449435}, //
+
25319 {4.86487818, 2.08472538}, //
+
25320 {4.86450052, 2.08491421}, //
+
25321 {4.86403894, 2.08506107}, //
+
25322 {4.86349344, 2.08516598}, //
+
25323 {4.86286354, 2.08522892}, //
+
25324 {4.86215019, 2.0852499}, //
+
25325 {4.8576169, 2.08749437}, //
+
25326 {4.85597944, 2.088305}, //
+
25327 {4.85409069, 2.08924007}, //
+
25328 {4.85195017, 2.09030008}, //
+
25329 {4.84965229, 2.09141231}, //
+
25330 {4.84727097, 2.09248281}, //
+
25331 {4.84480572, 2.0935111}, //
+
25332 {4.84225607, 2.09449744}, //
+
25333 {4.83962297, 2.09544206}, //
+
25334 {4.83690548, 2.09634447}, //
+
25335 {4.83410454, 2.09720492}, //
+
25336 {4.8312192, 2.09802341}, //
+
25337 {4.82824993, 2.09879994}, //
+
25338 {4.8252387, 2.09951353}, //
+
25339 {4.82222795, 2.10014319}, //
+
25340 {4.81921673, 2.10068893}, //
+
25341 {4.8162055, 2.10115051}, //
+
25342 {4.81319427, 2.10152841}, //
+
25343 {4.81018353, 2.10182214}, //
+
25344 {4.8071723, 2.10203218}, //
+
25345 {4.80416107, 2.10215807}, //
+
25346 {4.80114985, 2.10220003}, //
+
25347 {4.79974365, 2.10222101}, //
+
25348 {4.79854774, 2.10228395}, //
+
25349 {4.79756117, 2.10238886}, //
+
25350 {4.7967844, 2.10253572}, //
+
25351 {4.79621792, 2.10272479}, //
+
25352 {4.79586124, 2.10295558}, //
+
25353 {4.79571438, 2.10322833}, //
+
25354 {4.79577732, 2.10354328}, //
+
25355 {4.79605007, 2.10389996}, //
+
25356 {4.79651117, 2.10427713}, //
+
25357 {4.79713869, 2.10465312}, //
+
25358 {4.7979331, 2.10502768}, //
+
25359 {4.79889441, 2.10540128}, //
+
25360 {4.80002213, 2.10577345}, //
+
25361 {4.80131674, 2.10614443}, //
+
25362 {4.80277777, 2.10651422}, //
+
25363 {4.80440569, 2.10688281}, //
+
25364 {4.80620003, 2.10724998}, //
+
25365 {4.80810928, 2.10764885}, //
+
25366 {4.81005907, 2.10808945}, //
+
25367 {4.81204987, 2.10857224}, //
+
25368 {4.81408167, 2.109097}, //
+
25369 {4.81615353, 2.10966349}, //
+
25370 {4.81826687, 2.11027217}, //
+
25371 {4.82042027, 2.11092281}, //
+
25372 {4.82261467, 2.11161542}, //
+
25373 {4.82485008, 2.11234999}, //
+
25374 {4.82781982, 2.11239195}, //
+
25375 {4.8307066, 2.11251783}, //
+
25376 {4.83351088, 2.11272788}, //
+
25377 {4.83623266, 2.11302161}, //
+
25378 {4.83887148, 2.11339927}, //
+
25379 {4.8414278, 2.11386108}, //
+
25380 {4.84390116, 2.11440682}, //
+
25381 {4.84629202, 2.11503649}, //
+
25382 {4.84859991, 2.11575007}, //
+
25383 {4.85297537, 2.11740732}, //
+
25384 {4.85705662, 2.11935735}, //
+
25385 {4.86084461, 2.12159991}, //
+
25386 {4.8643384, 2.12413526}, //
+
25387 {4.86753845, 2.1269629}, //
+
25388 {4.8704443, 2.13008332}, //
+
25389 {4.87305689, 2.13349628}, //
+
25390 {4.87537527, 2.13720179}, //
+
25391 {4.87739992, 2.14120007}, //
+
25392 {4.87922573, 2.14544868}, //
+
25393 {4.88092613, 2.14990616}, //
+
25394 {4.88250017, 2.15457225}, //
+
25395 {4.88394833, 2.15944695}, //
+
25396 {4.8852706, 2.16453028}, //
+
25397 {4.8864665, 2.16982222}, //
+
25398 {4.887537, 2.17532277}, //
+
25399 {4.88848162, 2.18103218}, //
+
25400 {4.88929987, 2.18694997}, //
+
25401 {4.89004517, 2.18991923}, //
+
25402 {4.89079142, 2.19280434}, //
+
25403 {4.8915391, 2.19560552}, //
+
25404 {4.89228773, 2.19832277}, //
+
25405 {4.8930378, 2.20095611}, //
+
25406 {4.89378881, 2.20350552}, //
+
25407 {4.89454126, 2.205971}, //
+
25408 {4.89529514, 2.20835257}, //
+
25409 {4.89604998, 2.21064997}, //
+
25410 {4.89695168, 2.21300006}, //
+
25411 {4.89814615, 2.21551657}, //
+
25412 {4.89963341, 2.21819997}, //
+
25413 {4.90141296, 2.22105002}, //
+
25414 {4.9034853, 2.22406673}, //
+
25415 {4.90584993, 2.2272501}, //
+
25416 {4.90850735, 2.23060012}, //
+
25417 {4.91145754, 2.23411655}, //
+
25418 {4.91470003, 2.23779988}, //
+
25419 {4.91827774, 2.24181795}, //
+
25420 {4.9222331, 2.24633837}, //
+
25421 {4.9265666, 2.25136113}, //
+
25422 {4.93127775, 2.25688648}, //
+
25423 {4.93636656, 2.26291418}, //
+
25424 {4.9418335, 2.26944447}, //
+
25425 {4.94767761, 2.2764771}, //
+
25426 {4.95389986, 2.28401232}, //
+
25427 {4.96049976, 2.29204988}, //
+
25428 {4.9662919, 2.3006525}, //
+
25429 {4.97162342, 2.30988216}, //
+
25430 {4.97649431, 2.31973886}, //
+
25431 {4.98090506, 2.33022285}, //
+
25432 {4.98485518, 2.34133387}, //
+
25433 {4.98834467, 2.35307217}, //
+
25434 {4.99137354, 2.36543775}, //
+
25435 {4.99394178, 2.37843013}, //
+
25436 {4.99604988, 2.39205003}, //
+
25437 {4.99779177, 2.40593147}, //
+
25438 {4.99923992, 2.41968703}, //
+
25439 {5.00039434, 2.43331671}, //
+
25440 {5.00125504, 2.44682026}, //
+
25441 {5.00182152, 2.46019816}, //
+
25442 {5.00209427, 2.47344995}, //
+
25443 {5.00207329, 2.48657584}, //
+
25444 {5.00175858, 2.49957585}, //
+
25445 {5.00115013, 2.51244998}, //
+
25446 {5.00036287, 2.5248425}, //
+
25447 {4.99949074, 2.53639817}, //
+
25448 {4.99853325, 2.54711676}, //
+
25449 {4.99749088, 2.55699825}, //
+
25450 {4.99636316, 2.56604266}, //
+
25451 {4.99515009, 2.57424998}, //
+
25452 {4.99385166, 2.58162045}, //
+
25453 {4.99246836, 2.5881536}, //
+
25454 {4.99100018, 2.5938499}, //
+
25455 {4.99030733, 2.59827781}, //
+
25456 {4.98974085, 2.60253882}, //
+
25457 {4.98929977, 2.60663342}, //
+
25458 {4.98898506, 2.61056113}, //
+
25459 {4.98879623, 2.61432219}, //
+
25460 {4.98873329, 2.61791658}, //
+
25461 {4.98879623, 2.62134433}, //
+
25462 {4.98898506, 2.62460566}, //
+
25463 {4.98929977, 2.62770009}, //
+
25464 {4.98969889, 2.63076353}, //
+
25465 {4.99013948, 2.63390994}, //
+
25466 {4.99062204, 2.63713884}, //
+
25467 {4.99114704, 2.64045072}, //
+
25468 {4.99171352, 2.64384508}, //
+
25469 {4.99232244, 2.64732218}, //
+
25470 {4.99297285, 2.65088201}, //
+
25471 {4.99366522, 2.6545248}, //
+
25472 {4.99440002, 2.65825009}, //
+
25473 {4.99581671, 2.66382027}, //
+
25474 {4.9970665, 2.669976}, //
+
25475 {4.99814987, 2.67671657}, //
+
25476 {4.99906683, 2.68404269}, //
+
25477 {4.99981689, 2.69195366}, //
+
25478 {5.00040007, 2.70044994}, //
+
25479 {5.00081682, 2.70953155}, //
+
25480 {5.00106668, 2.71919823}, //
+
25481 {5.00115013, 2.72944999}, //
+
25482 {4.99948215, 2.74297476}, //
+
25483 {4.99747849, 2.75641537}, //
+
25484 {4.99513912, 2.76977229}, //
+
25485 {4.99246359, 2.78304505}, //
+
25486 {4.98945236, 2.79623389}, //
+
25487 {4.98610544, 2.80933881}, //
+
25488 {4.98242283, 2.8223598}, //
+
25489 {4.97840452, 2.83529687}, //
+
25490 {4.97405005, 2.84815001}, //
+
25491 {4.97036648, 2.85793948}, //
+
25492 {4.9668498, 2.86773014}, //
+
25493 {4.96350002, 2.87752223}, //
+
25494 {4.96031666, 2.88731551}, //
+
25495 {4.95730019, 2.89710999}, //
+
25496 {4.95445013, 2.90690565}, //
+
25497 {4.95176649, 2.91670251}, //
+
25498 {4.94925022, 2.92650056}, //
+
25499 {4.94689989, 2.93630004}, //
+
25500 {4.94481182, 2.94804144}, //
+
25501 {4.94305801, 2.95915437}, //
+
25502 {4.94163895, 2.96963882}, //
+
25503 {4.94055414, 2.97949505}, //
+
25504 {4.93980455, 2.9887228}, //
+
25505 {4.93938875, 2.99732232}, //
+
25506 {4.93930817, 3.00529313}, //
+
25507 {4.93956184, 3.01263571}, //
+
25508 {4.94014978, 3.01935005}, //
+
25509 {4.94094706, 3.02556229}, //
+
25510 {4.94182634, 3.03139949}, //
+
25511 {4.94278908, 3.03686118}, //
+
25512 {4.94383383, 3.0419476}, //
+
25513 {4.94496155, 3.04665875}, //
+
25514 {4.94617224, 3.0509944}, //
+
25515 {4.94746542, 3.05495501}, //
+
25516 {4.94884157, 3.05854011}, //
+
25517 {4.95030022, 3.06174994}, //
+
25518 {4.95034218, 3.06254697}, //
+
25519 {4.95046806, 3.06342649}, //
+
25520 {4.95067787, 3.06438899}, //
+
25521 {4.9509716, 3.06543398}, //
+
25522 {4.95134926, 3.0665617}, //
+
25523 {4.95181131, 3.06777215}, //
+
25524 {4.95235682, 3.06906533}, //
+
25525 {4.95298624, 3.07044125}, //
+
25526 {4.95370007, 3.07189989}, //
+
25527 {4.95437145, 3.07418704}, //
+
25528 {4.95487547, 3.07651472}, //
+
25529 {4.95521116, 3.07888341}, //
+
25530 {4.95537901, 3.08129263}, //
+
25531 {4.95537901, 3.08374262}, //
+
25532 {4.95521116, 3.08623338}, //
+
25533 {4.95487547, 3.08876491}, //
+
25534 {4.95437145, 3.09133697}, //
+
25535 {4.95370007, 3.09395003}, //
+
25536 {4.95290327, 3.09660482}, //
+
25537 {4.95202351, 3.09930301}, //
+
25538 {4.95106125, 3.10204434}, //
+
25539 {4.95001602, 3.10482907}, //
+
25540 {4.9488883, 3.10765672}, //
+
25541 {4.94767761, 3.11052775}, //
+
25542 {4.94638443, 3.11344194}, //
+
25543 {4.94500875, 3.11639929}, //
+
25544 {4.94355011, 3.11940002}, //
+
25545 {4.94128323, 3.12616658}, //
+
25546 {4.93977213, 3.1306777}, //
+
25547 {4.93901682, 3.13293338}, //
+
25548 {4.93826103, 3.13518882}, //
+
25549 {4.93674994, 3.13969994}, //
+
25550 {4.93607855, 3.14114809}, //
+
25551 {4.93557453, 3.14247036}, //
+
25552 {4.93523884, 3.14366674}, //
+
25553 {4.93507099, 3.14473701}, //
+
25554 {4.93507099, 3.14568138}, //
+
25555 {4.93523884, 3.14650011}, //
+
25556 {4.93557453, 3.14719248}, //
+
25557 {4.93607855, 3.1477592}, //
+
25558 {4.93674994, 3.14820004}, //
+
25559 {4.93754673, 3.14851475}, //
+
25560 {4.93842649, 3.14870381}, //
+
25561 {4.93938875, 3.14876676}, //
+
25562 {4.94043398, 3.14870381}, //
+
25563 {4.9415617, 3.14851475}, //
+
25564 {4.94277239, 3.14820004}, //
+
25565 {4.94406557, 3.1477592}, //
+
25566 {4.94544125, 3.14719248}, //
+
25567 {4.94689989, 3.14650011}, //
+
25568 {4.94845295, 3.14574456}, //
+
25569 {4.95008993, 3.14498878}, //
+
25570 {4.95181131, 3.14423323}, //
+
25571 {4.95361614, 3.14347768}, //
+
25572 {4.95550489, 3.14272213}, //
+
25573 {4.95747757, 3.14196658}, //
+
25574 {4.95953465, 3.14121103}, //
+
25575 {4.96167517, 3.14045548}, //
+
25576 {4.96390009, 3.13969994}, //
+
25577 {4.96535873, 3.13895488}, //
+
25578 {4.96673441, 3.13820863}, //
+
25579 {4.96802759, 3.13746119}, //
+
25580 {4.96923828, 3.13671231}, //
+
25581 {4.970366, 3.13596225}, //
+
25582 {4.97141123, 3.13521123}, //
+
25583 {4.97237349, 3.13445854}, //
+
25584 {4.97325325, 3.1337049}, //
+
25585 {4.97405005, 3.13295007}, //
+
25586 {4.97574854, 3.13204813}, //
+
25587 {4.97782278, 3.13085365}, //
+
25588 {4.98027229, 3.12936664}, //
+
25589 {4.98309708, 3.12758708}, //
+
25590 {4.98629713, 3.12551475}, //
+
25591 {4.98987246, 3.12315011}, //
+
25592 {4.99382305, 3.1204927}, //
+
25593 {4.99814892, 3.11754251}, //
+
25594 {5.00285006, 3.11430001}, //
+
25595 {5.00772905, 3.11089015}, //
+
25596 {5.01256609, 3.10743833}, //
+
25597 {5.01736116, 3.10394454}, //
+
25598 {5.02211428, 3.10040855}, //
+
25599 {5.02682543, 3.09683084}, //
+
25600 {5.03149462, 3.09321117}, //
+
25601 {5.03612137, 3.0895493}, //
+
25602 {5.04070663, 3.08584571}, //
+
25603 {5.04524994, 3.08209991}, //
+
25604 {5.04975128, 3.07835364}, //
+
25605 {5.05421066, 3.07464814}, //
+
25606 {5.05862761, 3.07098341}, //
+
25607 {5.06300306, 3.06735921}, //
+
25608 {5.06733656, 3.06377602}, //
+
25609 {5.07162762, 3.06023335}, //
+
25610 {5.07587719, 3.05673146}, //
+
25611 {5.0800848, 3.05327034}, //
+
25612 {5.08424997, 3.04984999}, //
+
25613 {5.09921598, 3.03761244}, //
+
25614 {5.10197878, 3.03535318}, //
+
25615 {5.10266972, 3.03478837}, //
+
25616 {5.10290003, 3.03460002}, //
+
25617 {5.10292101, 3.03455806}, //
+
25618 {5.10323572, 3.03392839}, //
+
25619 {5.10365534, 3.03308892}, //
+
25620 {5.10392857, 3.03254318}, //
+
25621 {5.10459995, 3.03119993}, //
+
25622 {5.10495663, 3.03041291}, //
+
25623 {5.10527182, 3.02954078}, //
+
25624 {5.10554457, 3.02858329}, //
+
25625 {5.10577536, 3.02754068}, //
+
25626 {5.10596418, 3.02641296}, //
+
25627 {5.10611105, 3.02519989}, //
+
25628 {5.10621595, 3.02390194}, //
+
25629 {5.1062789, 3.02251863}, //
+
25630 {5.10629988, 3.02104998}, //
+
25631 {5.10625792, 3.01949763}, //
+
25632 {5.10613203, 3.01786232}, //
+
25633 {5.10592222, 3.01614451}, //
+
25634 {5.10562849, 3.01434374}, //
+
25635 {5.10525084, 3.01246047}, //
+
25636 {5.10478878, 3.01049447}, //
+
25637 {5.10424328, 3.00844574}, //
+
25638 {5.10361338, 3.00631428}, //
+
25639 {5.10290003, 3.00410008}, //
+
25640 {5.10151482, 3.00248456}, //
+
25641 {5.10038137, 3.00066042}, //
+
25642 {5.09950018, 2.99862766}, //
+
25643 {5.09887028, 2.99638653}, //
+
25644 {5.09849262, 2.99393654}, //
+
25645 {5.09836674, 2.99127769}, //
+
25646 {5.09849262, 2.98841047}, //
+
25647 {5.09887028, 2.98533463}, //
+
25648 {5.09950018, 2.98204994}, //
+
25649 {5.10029697, 2.97847295}, //
+
25650 {5.10117674, 2.97451925}, //
+
25651 {5.102139, 2.97018886}, //
+
25652 {5.10318375, 2.965482}, //
+
25653 {5.10431194, 2.96039867}, //
+
25654 {5.10552216, 2.95493889}, //
+
25655 {5.10681534, 2.9491024}, //
+
25656 {5.10819149, 2.94288945}, //
+
25657 {5.10965014, 2.93630004}, //
+
25658 {5.11040545, 2.93323636}, //
+
25659 {5.11116123, 2.93009019}, //
+
25660 {5.11191654, 2.92686105}, //
+
25661 {5.11267233, 2.92354941}, //
+
25662 {5.11342764, 2.92015505}, //
+
25663 {5.11418343, 2.91667771}, //
+
25664 {5.11493874, 2.91311789}, //
+
25665 {5.11569452, 2.90947533}, //
+
25666 {5.11644983, 2.90575004}, //
+
25667 {5.11842299, 2.89608645}, //
+
25668 {5.1198082, 2.88667345}, //
+
25669 {5.12060547, 2.87751102}, //
+
25670 {5.12081528, 2.86859941}, //
+
25671 {5.12043762, 2.85993838}, //
+
25672 {5.11947203, 2.85152769}, //
+
25673 {5.11791897, 2.84336782}, //
+
25674 {5.11577845, 2.83545876}, //
+
25675 {5.11304998, 2.82780004}, //
+
25676 {5.11003876, 2.82047534}, //
+
25677 {5.10702801, 2.81356788}, //
+
25678 {5.10401678, 2.80707788}, //
+
25679 {5.10100555, 2.80100489}, //
+
25680 {5.09799433, 2.79534936}, //
+
25681 {5.0949831, 2.79011106}, //
+
25682 {5.09197235, 2.78529024}, //
+
25683 {5.08896112, 2.78088641}, //
+
25684 {5.0859499, 2.77690005}, //
+
25685 {5.08590794, 2.77619696}, //
+
25686 {5.08578205, 2.77557659}, //
+
25687 {5.08557224, 2.77503896}, //
+
25688 {5.08255005, 2.77355003}, //
+
25689 {5.0832634, 2.77359128}, //
+
25690 {5.0838933, 2.7737155}, //
+
25691 {5.0844388, 2.7739222}, //
+
25692 {5.08490038, 2.77421165}, //
+
25693 {5.08527851, 2.77458405}, //
+
25694 {5.08557224, 2.77503896}, //
+
25695 {5.08935022, 2.77690005}, //
+
25696 {5.08939123, 2.77669072}, //
+
25697 {5.08951521, 2.77606297}, //
+
25698 {5.09199715, 2.76350737}, //
+
25699 {5.0927, 2.75994992}, //
+
25700 {5.09345579, 2.75612044}, //
+
25701 {5.0942111, 2.75216484}, //
+
25702 {5.09496689, 2.74808335}, //
+
25703 {5.0957222, 2.74387598}, //
+
25704 {5.09647799, 2.73954248}, //
+
25705 {5.0972333, 2.73508334}, //
+
25706 {5.09798908, 2.73049808}, //
+
25707 {5.09874439, 2.72578692}, //
+
25708 {5.09950018, 2.72094989}, //
+
25709 {5.10025501, 2.7160604}, //
+
25710 {5.10100842, 2.71116972}, //
+
25711 {5.10176134, 2.70627785}, //
+
25712 {5.10251236, 2.70138454}, //
+
25713 {5.10326242, 2.69649005}, //
+
25714 {5.10401106, 2.69159436}, //
+
25715 {5.10475874, 2.68669748}, //
+
25716 {5.10550499, 2.68179941}, //
+
25717 {5.10624981, 2.67689991}, //
+
25718 {5.10696363, 2.6721468}, //
+
25719 {5.10759306, 2.66768765}, //
+
25720 {5.10813904, 2.66352224}, //
+
25721 {5.10860062, 2.65965056}, //
+
25722 {5.10897827, 2.65607285}, //
+
25723 {5.109272, 2.65278888}, //
+
25724 {5.10948229, 2.64979887}, //
+
25725 {5.10960817, 2.64710236}, //
+
25726 {5.10965014, 2.64470005}, //
+
25727 {5.10950375, 2.6400106}, //
+
25728 {5.10906458, 2.6349864}, //
+
25729 {5.10833311, 2.6296277}, //
+
25730 {5.10730934, 2.62393451}, //
+
25731 {5.10599279, 2.61790681}, //
+
25732 {5.10438347, 2.61154437}, //
+
25733 {5.10248137, 2.60484743}, //
+
25734 {5.10028696, 2.59781599}, //
+
25735 {5.09779978, 2.59045005}, //
+
25736 {5.09501982, 2.58253956}, //
+
25737 {5.09194565, 2.57387471}, //
+
25738 {5.08857775, 2.56445551}, //
+
25739 {5.08491611, 2.55428219}, //
+
25740 {5.08096027, 2.54335427}, //
+
25741 {5.07671118, 2.53167224}, //
+
25742 {5.07216787, 2.51923585}, //
+
25743 {5.06733084, 2.5060451}, //
+
25744 {5.06220007, 2.4921}, //
+
25745 {5.06011105, 2.48557281}, //
+
25746 {5.05835533, 2.47954702}, //
+
25747 {5.0569334, 2.47402215}, //
+
25748 {5.05584431, 2.46899867}, //
+
25749 {5.055089, 2.46447659}, //
+
25750 {5.05466652, 2.46045566}, //
+
25751 {5.05457783, 2.45693588}, //
+
25752 {5.05482244, 2.45391726}, //
+
25753 {5.05539989, 2.45140004}, //
+
25754 {5.05623865, 2.449332}, //
+
25755 {5.0572443, 2.44763947}, //
+
25756 {5.05841684, 2.4463222}, //
+
25757 {5.05975533, 2.44538021}, //
+
25758 {5.06126118, 2.44481349}, //
+
25759 {5.06293344, 2.44462228}, //
+
25760 {5.06477213, 2.4448061}, //
+
25761 {5.06677771, 2.44536543}, //
+
25762 {5.06895018, 2.44630003}, //
+
25763 {5.07123709, 2.44751668}, //
+
25764 {5.07356501, 2.44889998}, //
+
25765 {5.07593346, 2.45044994}, //
+
25766 {5.07834244, 2.45216656}, //
+
25767 {5.08079243, 2.45405006}, //
+
25768 {5.08328342, 2.45609999}, //
+
25769 {5.08581495, 2.45831656}, //
+
25770 {5.08838701, 2.46070004}, //
+
25771 {5.09100008, 2.46324992}, //
+
25772 {5.09358072, 2.46587348}, //
+
25773 {5.09603453, 2.46845484}, //
+
25774 {5.09836102, 2.47099447}, //
+
25775 {5.10056067, 2.47349191}, //
+
25776 {5.10263252, 2.47594762}, //
+
25777 {5.10457754, 2.47836113}, //
+
25778 {5.10639572, 2.48073268}, //
+
25779 {5.10808659, 2.48306227}, //
+
25780 {5.10965014, 2.48534989}, //
+
25781 {5.11038446, 2.48773146}, //
+
25782 {5.11107731, 2.49036479}, //
+
25783 {5.11172771, 2.49324989}, //
+
25784 {5.11233664, 2.496387}, //
+
25785 {5.11290312, 2.49977589}, //
+
25786 {5.11342764, 2.50341678}, //
+
25787 {5.11391068, 2.5073092}, //
+
25788 {5.11435127, 2.51145363}, //
+
25789 {5.11474991, 2.51585007}, //
+
25790 {5.11510658, 2.52037215}, //
+
25791 {5.11542177, 2.52489448}, //
+
25792 {5.11569452, 2.52941656}, //
+
25793 {5.11592531, 2.53393888}, //
+
25794 {5.11611414, 2.53846121}, //
+
25795 {5.11626101, 2.54298329}, //
+
25796 {5.11636591, 2.54750562}, //
+
25797 {5.11642885, 2.5520277}, //
+
25798 {5.11644983, 2.55655003}, //
+
25799 {5.11718464, 2.56177521}, //
+
25800 {5.11787701, 2.5669179}, //
+
25801 {5.11852789, 2.57197785}, //
+
25802 {5.11913633, 2.57695484}, //
+
25803 {5.11970329, 2.58184934}, //
+
25804 {5.12022781, 2.5866611}, //
+
25805 {5.12071037, 2.59139013}, //
+
25806 {5.12115145, 2.59603643}, //
+
25807 {5.12155008, 2.6006}, //
+
25808 {5.12194872, 2.60499692}, //
+
25809 {5.12238932, 2.60914326}, //
+
25810 {5.12287235, 2.61303878}, //
+
25811 {5.12339687, 2.61668396}, //
+
25812 {5.12396336, 2.62007833}, //
+
25813 {5.12457228, 2.62322211}, //
+
25814 {5.12522268, 2.62611532}, //
+
25815 {5.12591553, 2.62875795}, //
+
25816 {5.12664986, 2.63115001}, //
+
25817 {5.12741613, 2.63262963}, //
+
25818 {5.12822533, 2.63406849}, //
+
25819 {5.12907791, 2.63546658}, //
+
25820 {5.12997341, 2.63682413}, //
+
25821 {5.1309123, 2.63814068}, //
+
25822 {5.13189459, 2.63941669}, //
+
25823 {5.13291979, 2.64065194}, //
+
25824 {5.13398838, 2.64184618}, //
+
25825 {5.13509989, 2.64299989}, //
+
25826 {5.13617039, 2.64411163}, //
+
25827 {5.137115, 2.64518023}, //
+
25828 {5.13793325, 2.64620566}, //
+
25829 {5.1386261, 2.64718771}, //
+
25830 {5.13919258, 2.6481266}, //
+
25831 {5.13963318, 2.64902234}, //
+
25832 {5.13994837, 2.64987469}, //
+
25833 {5.1401372, 2.65068388}, //
+
25834 {5.14020014, 2.65144992}, //
+
25835 {5.14093399, 2.65149188}, //
+
25836 {5.14162493, 2.651618}, //
+
25837 {5.142272, 2.65182781}, //
+
25838 {5.14287663, 2.65212154}, //
+
25839 {5.14343786, 2.65249944}, //
+
25840 {5.14395571, 2.65296102}, //
+
25841 {5.14443016, 2.65350676}, //
+
25842 {5.1448617, 2.65413642}, //
+
25843 {5.14524984, 2.65485001}, //
+
25844 {5.14560699, 2.65560555}, //
+
25845 {5.14592171, 2.6563611}, //
+
25846 {5.14619446, 2.65711665}, //
+
25847 {5.14642525, 2.6578722}, //
+
25848 {5.14661407, 2.65862775}, //
+
25849 {5.14676094, 2.6593833}, //
+
25850 {5.14686584, 2.66013885}, //
+
25851 {5.14692879, 2.66089439}, //
+
25852 {5.14694977, 2.66164994}, //
+
25853 {5.14699221, 2.6633389}, //
+
25854 {5.14711809, 2.66540551}, //
+
25855 {5.1473279, 2.66785002}, //
+
25856 {5.14762163, 2.67067218}, //
+
25857 {5.14799929, 2.67387223}, //
+
25858 {5.14846134, 2.67744994}, //
+
25859 {5.14900684, 2.68140554}, //
+
25860 {5.14963627, 2.6857388}, //
+
25861 {5.15035009, 2.69044995}, //
+
25862 {5.15112591, 2.69534993}, //
+
25863 {5.15194273, 2.70024991}, //
+
25864 {5.15280008, 2.70514989}, //
+
25865 {5.15369797, 2.71005011}, //
+
25866 {5.15463686, 2.71495008}, //
+
25867 {5.15561676, 2.71985006}, //
+
25868 {5.15663719, 2.72475004}, //
+
25869 {5.15769815, 2.72965002}, //
+
25870 {5.15880013, 2.73455}, //
+
25871 {5.16008043, 2.73938704}, //
+
25872 {5.16165447, 2.74409819}, //
+
25873 {5.16352224, 2.74868321}, //
+
25874 {5.16568375, 2.7531426}, //
+
25875 {5.16813946, 2.75747585}, //
+
25876 {5.1708889, 2.76168323}, //
+
25877 {5.17393208, 2.76576471}, //
+
25878 {5.17726898, 2.76972032}, //
+
25879 {5.1809001, 2.77355003}, //
+
25880 {5.18231678, 2.776582}, //
+
25881 {5.18356657, 2.77965617}, //
+
25882 {5.18464994, 2.7827723}, //
+
25883 {5.1855669, 2.78593016}, //
+
25884 {5.18631649, 2.78913021}, //
+
25885 {5.18690014, 2.79237223}, //
+
25886 {5.18731689, 2.7956562}, //
+
25887 {5.18756676, 2.79898214}, //
+
25888 {5.1876502, 2.80235004}, //
+
25889 {5.1876502, 2.80921173}, //
+
25890 {5.1876502, 2.81270552}, //
+
25891 {5.1876502, 2.81624126}, //
+
25892 {5.1876502, 2.8345499}, //
+
25893 {5.18627453, 2.84058261}, //
+
25894 {5.18514872, 2.84661412}, //
+
25895 {5.18427229, 2.85264444}, //
+
25896 {5.18364525, 2.85867357}, //
+
25897 {5.18326712, 2.86470127}, //
+
25898 {5.18313885, 2.87072778}, //
+
25899 {5.18325996, 2.87675309}, //
+
25900 {5.18363047, 2.88277721}, //
+
25901 {5.18424988, 2.88879991}, //
+
25902 {5.18504715, 2.89177966}, //
+
25903 {5.18592644, 2.89467406}, //
+
25904 {5.18688869, 2.89748335}, //
+
25905 {5.18793392, 2.90020752}, //
+
25906 {5.18906164, 2.90284634}, //
+
25907 {5.19027233, 2.90540004}, //
+
25908 {5.19156551, 2.90786862}, //
+
25909 {5.19294119, 2.91025186}, //
+
25910 {5.19439983, 2.91254997}, //
+
25911 {5.19591093, 2.91474319}, //
+
25912 {5.19742203, 2.9168117}, //
+
25913 {5.19893312, 2.91875553}, //
+
25914 {5.20044422, 2.92057467}, //
+
25915 {5.20195532, 2.92226911}, //
+
25916 {5.20346689, 2.92383885}, //
+
25917 {5.20497799, 2.92528391}, //
+
25918 {5.20648909, 2.92660427}, //
+
25919 {5.20800018, 2.92779994}, //
+
25920 {5.20946836, 2.92889142}, //
+
25921 {5.21085167, 2.92989874}, //
+
25922 {5.2121501, 2.93082213}, //
+
25923 {5.21336317, 2.93166184}, //
+
25924 {5.21449089, 2.93241739}, //
+
25925 {5.21553326, 2.93308878}, //
+
25926 {5.21649075, 2.93367648}, //
+
25927 {5.21736288, 2.93418026}, //
+
25928 {5.21815014, 2.93460011}, //
+
25929 {5.21886349, 2.93495679}, //
+
25930 {5.22003889, 2.93554449}, //
+
25931 {5.22050047, 2.93577528}, //
+
25932 {5.2208786, 2.93596411}, //
+
25933 {5.22117233, 2.93611121}, //
+
25934 {5.22138214, 2.93621612}, //
+
25935 {5.22150803, 2.93627906}, //
+
25936 {5.22154999, 2.93630004}, //
+
25937 {5.22184324, 2.93602777}, //
+
25938 {5.22272301, 2.93521118}, //
+
25939 {5.24031544, 2.91887784}, //
+
25940 {5.24529982, 2.9142499}, //
+
25941 {5.2506609, 2.90922475}, //
+
25942 {5.25618887, 2.90394878}, //
+
25943 {5.26188326, 2.89842224}, //
+
25944 {5.26774454, 2.89264512}, //
+
25945 {5.27377224, 2.88661718}, //
+
25946 {5.27996683, 2.88033891}, //
+
25947 {5.28632784, 2.87380981}, //
+
25948 {5.29285574, 2.86703014}, //
+
25949 {5.29955006, 2.8599999}, //
+
25950 {5.3063283, 2.8528235}, //
+
25951 {5.31310797, 2.8456049}, //
+
25952 {5.31988907, 2.83834434}, //
+
25953 {5.32667112, 2.83104205}, //
+
25954 {5.33345413, 2.82369757}, //
+
25955 {5.34023905, 2.81631112}, //
+
25956 {5.34702492, 2.80888271}, //
+
25957 {5.35381174, 2.80141234}, //
+
25958 {5.36059999, 2.79390001}, //
+
25959 {5.36266708, 2.79081535}, //
+
25960 {5.36435795, 2.78760624}, //
+
25961 {5.36567211, 2.78427219}, //
+
25962 {5.36661005, 2.78081369}, //
+
25963 {5.36717081, 2.77723026}, //
+
25964 {5.36735535, 2.77352214}, //
+
25965 {5.36716366, 2.76968956}, //
+
25966 {5.36659527, 2.76573205}, //
+
25967 {5.36565018, 2.76165009}, //
+
25968 {5.36450624, 2.75752664}, //
+
25969 {5.36331892, 2.75344515}, //
+
25970 {5.36208868, 2.74940562}, //
+
25971 {5.36081553, 2.74540806}, //
+
25972 {5.35949898, 2.74145246}, //
+
25973 {5.35813904, 2.73753881}, //
+
25974 {5.35673571, 2.73366737}, //
+
25975 {5.35528946, 2.72983766}, //
+
25976 {5.35379982, 2.7260499}, //
+
25977 {5.35166979, 2.72308087}, //
+
25978 {5.3497901, 2.72019577}, //
+
25979 {5.34816122, 2.71739435}, //
+
25980 {5.34678268, 2.7146771}, //
+
25981 {5.34565496, 2.71204376}, //
+
25982 {5.34477758, 2.70949435}, //
+
25983 {5.34415102, 2.7070291}, //
+
25984 {5.34377527, 2.70464754}, //
+
25985 {5.34364986, 2.7023499}, //
+
25986 {5.34121609, 2.6915853}, //
+
25987 {5.33844757, 2.6804018}, //
+
25988 {5.33534431, 2.66880012}, //
+
25989 {5.3319068, 2.65677953}, //
+
25990 {5.32813454, 2.64434075}, //
+
25991 {5.32402802, 2.63148332}, //
+
25992 {5.31958628, 2.61820745}, //
+
25993 {5.31481028, 2.60451293}, //
+
25994 {5.30970001, 2.59039998}, //
+
25995 {5.30441189, 2.57621431}, //
+
25996 {5.29908037, 2.56227899}, //
+
25997 {5.29370546, 2.54859447}, //
+
25998 {5.28828764, 2.53516054}, //
+
25999 {5.28282642, 2.52197719}, //
+
26000 {5.27732229, 2.50904441}, //
+
26001 {5.27177477, 2.49636245}, //
+
26002 {5.26618385, 2.48393083}, //
+
26003 {5.26055002, 2.47175002}, //
+
26004 {5.2550931, 2.46023893}, //
+
26005 {5.25001192, 2.4498167}, //
+
26006 {5.24530554, 2.44048333}, //
+
26007 {5.2409749, 2.43223882}, //
+
26008 {5.23701906, 2.4250834}, //
+
26009 {5.23343897, 2.4190166}, //
+
26010 {5.23023415, 2.4140389}, //
+
26011 {5.22740412, 2.41015005}, //
+
26012 {5.22494984, 2.40735006}, //
+
26013 {5.22105742, 2.40412903}, //
+
26014 {5.21691275, 2.40048838}, //
+
26015 {5.21251678, 2.39642787}, //
+
26016 {5.20786858, 2.39194751}, //
+
26017 {5.2029686, 2.38704753}, //
+
26018 {5.19781685, 2.3817277}, //
+
26019 {5.19241285, 2.37598825}, //
+
26020 {5.18675756, 2.36982894}, //
+
26021 {5.18085003, 2.36325002}, //
+
26022 {5.17495298, 2.35659742}, //
+
26023 {5.16930676, 2.35019565}, //
+
26024 {5.16391134, 2.34404445}, //
+
26025 {5.15876627, 2.33814383}, //
+
26026 {5.15387154, 2.33249378}, //
+
26027 {5.14922762, 2.32709455}, //
+
26028 {5.14483452, 2.32194567}, //
+
26029 {5.14069176, 2.3170476}, //
+
26030 {5.13679981, 2.3124001}, //
+
26031 {5.13435555, 2.30926299}, //
+
26032 {5.13153315, 2.30587411}, //
+
26033 {5.12833357, 2.30223322}, //
+
26034 {5.12475538, 2.2983408}, //
+
26035 {5.12080002, 2.29419637}, //
+
26036 {5.11646652, 2.28979993}, //
+
26037 {5.11175537, 2.28515196}, //
+
26038 {5.10666656, 2.28025174}, //
+
26039 {5.1012001, 2.27509999}, //
+
26040 {5.09552336, 2.26987457}, //
+
26041 {5.08980513, 2.26473212}, //
+
26042 {5.08404446, 2.25967216}, //
+
26043 {5.07824183, 2.25469518}, //
+
26044 {5.07239771, 2.24980068}, //
+
26045 {5.06651115, 2.24498892}, //
+
26046 {5.06058264, 2.24025989}, //
+
26047 {5.05461216, 2.23561358}, //
+
26048 {5.0486002, 2.23105001}, //
+
26049 {5.04266119, 2.2266531}, //
+
26050 {5.03688908, 2.22250676}, //
+
26051 {5.03128338, 2.218611}, //
+
26052 {5.02584457, 2.21496606}, //
+
26053 {5.02057219, 2.21157169}, //
+
26054 {5.01546669, 2.20842767}, //
+
26055 {5.01052761, 2.20553446}, //
+
26056 {5.00575542, 2.20289207}, //
+
26057 {5.00115013, 2.20050001}, //
+
26058 {4.98947144, 2.19368029}, //
+
26059 {4.97854757, 2.18677664}, //
+
26060 {4.96837759, 2.17978883}, //
+
26061 {4.95896244, 2.17271733}, //
+
26062 {4.95030117, 2.16556168}, //
+
26063 {4.94239426, 2.15832233}, //
+
26064 {4.93524218, 2.15099883}, //
+
26065 {4.92884398, 2.1435914}, //
+
26066 {4.92320013, 2.13610005}, //
+
26067 {4.92309523, 2.13599515}, //
+
26068 {4.92278004, 2.1356802}, //
+
26069 {4.92225552, 2.13515544}, //
+
26070 {4.92152119, 2.13442087}, //
+
26071 {4.92057657, 2.1334765}, //
+
26072 {4.91942215, 2.13232231}, //
+
26073 {4.91470003, 2.12759995}, //
+
26074 {4.91282177, 2.12570071}, //
+
26075 {4.91094208, 2.12375808}, //
+
26076 {4.90906096, 2.12177229}, //
+
26077 {4.90717888, 2.11974311}, //
+
26078 {4.90529585, 2.11767101}, //
+
26079 {4.90341091, 2.11555552}, //
+
26080 {4.9015255, 2.11339688}, //
+
26081 {4.89963818, 2.11119509}, //
+
26082 {4.8977499, 2.1089499}, //
+
26083 {4.89587164, 2.10671473}, //
+
26084 {4.89399195, 2.10452032}, //
+
26085 {4.8921113, 2.10236669}, //
+
26086 {4.89022923, 2.10025382}, //
+
26087 {4.88834572, 2.09818149}, //
+
26088 {4.88646126, 2.09614992}, //
+
26089 {4.88457537, 2.09415936}, //
+
26090 {4.88268805, 2.09220934}, //
+
26091 {4.88079977, 2.09030008}, //
+
26092 {4.87902641, 2.08848453}, //
+
26093 {4.87746191, 2.0867939}, //
+
26094 {4.87610579, 2.08522773}, //
+
26095 {4.87495804, 2.08378649}, //
+
26096 {4.87401915, 2.0824697}, //
+
26097 {4.87328911, 2.08127785}, //
+
26098 {4.87276745, 2.08021045}, //
+
26099 {4.87245417, 2.07926798}, //
+
26100 {4.87235022, 2.07844996}, //
+
26101 {4.87092304, 2.07844996}, //
+
26102 });
+
26103 polys.push_back({
+
26104 {1.94620001, 2.36325002}, //
+
26105 {1.94620001, 2.3684814}, //
+
26106 {1.94620001, 2.37078333}, //
+
26107 {1.94620001, 2.37350368}, //
+
26108 {1.94620001, 2.3766427}, //
+
26109 {1.94620001, 2.38019991}, //
+
26110 {1.94617903, 2.38402963}, //
+
26111 {1.94611609, 2.38798523}, //
+
26112 {1.94601107, 2.39206672}, //
+
26113 {1.9458642, 2.39627409}, //
+
26114 {1.94567525, 2.40060735}, //
+
26115 {1.94544446, 2.40506673}, //
+
26116 {1.94517159, 2.40965176}, //
+
26117 {1.94485676, 2.41436291}, //
+
26118 {1.94449997, 2.41919994}, //
+
26119 {1.94406974, 2.42407894}, //
+
26120 {1.94351232, 2.42891598}, //
+
26121 {1.94282782, 2.43371105}, //
+
26122 {1.94201601, 2.43846416}, //
+
26123 {1.94107711, 2.44317532}, //
+
26124 {1.94001114, 2.44784451}, //
+
26125 {1.93881786, 2.45247149}, //
+
26126 {1.9374975, 2.45705676}, //
+
26127 {1.93605006, 2.46160007}, //
+
26128 {1.93352163, 2.46844077}, //
+
26129 {1.93044758, 2.47540736}, //
+
26130 {1.92682779, 2.48250008}, //
+
26131 {1.92266238, 2.48971844}, //
+
26132 {1.91795123, 2.49706292}, //
+
26133 {1.91269445, 2.50453329}, //
+
26134 {1.90689194, 2.51212955}, //
+
26135 {1.90054381, 2.51985192}, //
+
26136 {1.89365005, 2.52769995}, //
+
26137 {1.8862642, 2.53550673}, //
+
26138 {1.87841785, 2.54310489}, //
+
26139 {1.87011111, 2.55049443}, //
+
26140 {1.86134386, 2.55767536}, //
+
26141 {1.85211611, 2.56464744}, //
+
26142 {1.84242773, 2.57141113}, //
+
26143 {1.83227897, 2.57796597}, //
+
26144 {1.8216697, 2.58431244}, //
+
26145 {1.81060004, 2.59045005}, //
+
26146 {1.80984449, 2.59116364}, //
+
26147 {1.80908895, 2.5917933}, //
+
26148 {1.80833328, 2.5923388}, //
+
26149 {1.80757773, 2.59280062}, //
+
26150 {1.80682218, 2.59317851}, //
+
26151 {1.80606663, 2.59347224}, //
+
26152 {1.80531108, 2.59368205}, //
+
26153 {1.80455554, 2.59380794}, //
+
26154 {1.80379999, 2.5938499}, //
+
26155 {1.79296231, 2.60064888}, //
+
26156 {1.78153825, 2.60748959}, //
+
26157 {1.76952779, 2.61437225}, //
+
26158 {1.75693083, 2.62129688}, //
+
26159 {1.74374747, 2.62826347}, //
+
26160 {1.72997773, 2.63527226}, //
+
26161 {1.71562159, 2.64232278}, //
+
26162 {1.70067906, 2.64941549}, //
+
26163 {1.68515003, 2.65654993}, //
+
26164 {1.6693697, 2.66351724}, //
+
26165 {1.65367341, 2.67010808}, //
+
26166 {1.63806117, 2.67632222}, //
+
26167 {1.62253273, 2.6821599}, //
+
26168 {1.60708833, 2.68762088}, //
+
26169 {1.59172773, 2.69270563}, //
+
26170 {1.57645118, 2.69741368}, //
+
26171 {1.56125867, 2.70174503}, //
+
26172 {1.54614997, 2.70569992}, //
+
26173 {1.52890062, 2.70886779}, //
+
26174 {1.51181912, 2.71232724}, //
+
26175 {1.49490559, 2.7160778}, //
+
26176 {1.4781599, 2.72011971}, //
+
26177 {1.46158206, 2.72445297}, //
+
26178 {1.44517219, 2.72907782}, //
+
26179 {1.42893028, 2.73399377}, //
+
26180 {1.41285622, 2.73920131}, //
+
26181 {1.39695001, 2.74469995}, //
+
26182 {1.38167155, 2.75016665}, //
+
26183 {1.36748087, 2.75525546}, //
+
26184 {1.35437775, 2.75996661}, //
+
26185 {1.3423624, 2.76430011}, //
+
26186 {1.33143461, 2.76825547}, //
+
26187 {1.32159448, 2.77183342}, //
+
26188 {1.31284201, 2.77503324}, //
+
26189 {1.30517721, 2.77785563}, //
+
26190 {1.29859996, 2.7802999}, //
+
26191 {1.29403639, 2.78319573}, //
+
26192 {1.28939009, 2.78583837}, //
+
26193 {1.28466105, 2.7882278}, //
+
26194 {1.27984941, 2.79036427}, //
+
26195 {1.27495492, 2.79224753}, //
+
26196 {1.26997781, 2.79387784}, //
+
26197 {1.26491785, 2.79525495}, //
+
26198 {1.25977528, 2.79637909}, //
+
26199 {1.25454998, 2.79725003}, //
+
26200 {1.24834943, 2.79745936}, //
+
26201 {1.24181426, 2.79808712}, //
+
26202 {1.23494446, 2.7991333}, //
+
26203 {1.22774017, 2.80059814}, //
+
26204 {1.22020125, 2.80248141}, //
+
26205 {1.21232772, 2.80478334}, //
+
26206 {1.2041198, 2.8075037}, //
+
26207 {1.19557714, 2.81064248}, //
+
26208 {1.18669999, 2.81419992}, //
+
26209 {1.17594635, 2.81796718}, //
+
26210 {1.16477406, 2.82173586}, //
+
26211 {1.15318334, 2.8255055}, //
+
26212 {1.14117408, 2.82927656}, //
+
26213 {1.12874627, 2.83304882}, //
+
26214 {1.11590004, 2.83682227}, //
+
26215 {1.10263515, 2.84059691}, //
+
26216 {1.08895183, 2.84437275}, //
+
26217 {1.07484996, 2.84815001}, //
+
26218 {1.06664443, 2.851161}, //
+
26219 {1.05860555, 2.85417223}, //
+
26220 {1.05073333, 2.85718322}, //
+
26221 {1.04302776, 2.86019444}, //
+
26222 {1.03548884, 2.86320567}, //
+
26223 {1.0281167, 2.86621666}, //
+
26224 {1.0209111, 2.86922789}, //
+
26225 {1.01387227, 2.87223887}, //
+
26226 {1.00699997, 2.8752501}, //
+
26227 {1.00390494, 2.8760469}, //
+
26228 {1.00064194, 2.87692666}, //
+
26229 {0.997211099, 2.87788892}, //
+
26230 {0.993612349, 2.87893391}, //
+
26231 {0.989845693, 2.88006163}, //
+
26232 {0.985911131, 2.88127232}, //
+
26233 {0.981808662, 2.8825655}, //
+
26234 {0.977538288, 2.88394141}, //
+
26235 {0.973100007, 2.88540006}, //
+
26236 {0.960205555, 2.88926053}, //
+
26237 {0.947144449, 2.89328647}, //
+
26238 {0.933916688, 2.89747787}, //
+
26239 {0.920522213, 2.90183449}, //
+
26240 {0.906961083, 2.90635681}, //
+
26241 {0.893233359, 2.91104436}, //
+
26242 {0.879338861, 2.91589761}, //
+
26243 {0.865277767, 2.92091608}, //
+
26244 {0.851050019, 2.92610002}, //
+
26245 {0.837156773, 2.93129373}, //
+
26246 {0.824099362, 2.93631983}, //
+
26247 {0.811877787, 2.94117785}, //
+
26248 {0.800491989, 2.94586802}, //
+
26249 {0.789941967, 2.9503901}, //
+
26250 {0.78022778, 2.95474434}, //
+
26251 {0.77134937, 2.95893097}, //
+
26252 {0.763306797, 2.96294928}, //
+
26253 {0.756099999, 2.96679997}, //
+
26254 {0.751410484, 2.96905565}, //
+
26255 {0.746386409, 2.97131109}, //
+
26256 {0.741027772, 2.97356677}, //
+
26257 {0.735334575, 2.97582221}, //
+
26258 {0.729306817, 2.97807789}, //
+
26259 {0.722944438, 2.98033333}, //
+
26260 {0.716247559, 2.98258901}, //
+
26261 {0.709216058, 2.98484445}, //
+
26262 {0.701849997, 2.98709989}, //
+
26263 {0.694337666, 2.98932481}, //
+
26264 {0.686867297, 2.99146533}, //
+
26265 {0.679438889, 2.99352217}, //
+
26266 {0.672052443, 2.99549508}, //
+
26267 {0.664708018, 2.99738383}, //
+
26268 {0.657405555, 2.9991889}, //
+
26269 {0.650145054, 3.00090981}, //
+
26270 {0.642926514, 3.00254703}, //
+
26271 {0.635749996, 3.00410008}, //
+
26272 {0.628866076, 3.00552726}, //
+
26273 {0.622525334, 3.00678635}, //
+
26274 {0.616727769, 3.00787783}, //
+
26275 {0.611473441, 3.00880122}, //
+
26276 {0.60676235, 3.00955677}, //
+
26277 {0.602594435, 3.01014447}, //
+
26278 {0.598969758, 3.01056409}, //
+
26279 {0.595888257, 3.0108161}, //
+
26280 {0.593349993, 3.01090002}, //
+
26281 {0.587899983, 3.01090002}, //
+
26282 {0.585661113, 3.01090002}, //
+
26283 {0.580550015, 3.01090002}, //
+
26284 {0.577677786, 3.01090002}, //
+
26285 {0.574594438, 3.01090002}, //
+
26286 {0.5643543, 3.01090002}, //
+
26287 {0.560755551, 3.01090002}, //
+
26288 {0.549455583, 3.01090002}, //
+
26289 {0.545520961, 3.01090002}, //
+
26290 {0.541502476, 3.01090002}, //
+
26291 {0.537400007, 3.01090002}, //
+
26292 {0.52590555, 3.01090002}, //
+
26293 {0.522491336, 3.01090002}, //
+
26294 {0.516288877, 3.01090002}, //
+
26295 {0.513500631, 3.01090002}, //
+
26296 {0.510921001, 3.01090002}, //
+
26297 {0.504540145, 3.01090002}, //
+
26298 {0.502911091, 3.01090002}, //
+
26299 {0.499527782, 3.01090002}, //
+
26300 {0.498901248, 3.01090002}, //
+
26301 {0.498525321, 3.01090002}, //
+
26302 {0.498400003, 3.01090002}, //
+
26303 {0.500854313, 3.01242089}, //
+
26304 {0.503683925, 3.01398396}, //
+
26305 {0.506888866, 3.015589}, //
+
26306 {0.510469139, 3.01723576}, //
+
26307 {0.514424682, 3.01892471}, //
+
26308 {0.518755555, 3.02065563}, //
+
26309 {0.523461699, 3.02242851}, //
+
26310 {0.528543234, 3.02424312}, //
+
26311 {0.533999979, 3.02609992}, //
+
26312 {0.539676547, 3.02805114}, //
+
26313 {0.545395076, 3.03012705}, //
+
26314 {0.551155567, 3.03232789}, //
+
26315 {0.55695802, 3.03465319}, //
+
26316 {0.562802494, 3.03710318}, //
+
26317 {0.568688869, 3.03967786}, //
+
26318 {0.574617267, 3.04237723}, //
+
26319 {0.580587626, 3.0452013}, //
+
26320 {0.586600006, 3.04815006}, //
+
26321 {0.588142574, 3.04886365}, //
+
26322 {0.589770377, 3.04949331}, //
+
26323 {0.591483355, 3.05003881}, //
+
26324 {0.593281507, 3.05050063}, //
+
26325 {0.595164835, 3.05087829}, //
+
26326 {0.597133338, 3.05117226}, //
+
26327 {0.599187016, 3.05138206}, //
+
26328 {0.601325929, 3.05150795}, //
+
26329 {0.603550017, 3.05154991}, //
+
26330 {0.61016047, 3.05364871}, //
+
26331 {0.616436422, 3.05541182}, //
+
26332 {0.622377753, 3.05683899}, //
+
26333 {0.627984583, 3.05793023}, //
+
26334 {0.633256793, 3.05868578}, //
+
26335 {0.638194442, 3.05910563}, //
+
26336 {0.64279753, 3.05918956}, //
+
26337 {0.647066057, 3.05893755}, //
+
26338 {0.651000023, 3.05835009}, //
+
26339 {0.654850602, 3.05730176}, //
+
26340 {0.658869147, 3.05566859}, //
+
26341 {0.663055539, 3.05345011}, //
+
26342 {0.667409897, 3.05064631}, //
+
26343 {0.671932101, 3.04725742}, //
+
26344 {0.676622212, 3.04328322}, //
+
26345 {0.681480229, 3.03872418}, //
+
26346 {0.686506152, 3.03357959}, //
+
26347 {0.691699982, 3.02784991}, //
+
26348 {0.696242571, 3.02491164}, //
+
26349 {0.70082593, 3.02214146}, //
+
26350 {0.705449998, 3.01953888}, //
+
26351 {0.710114837, 3.01710439}, //
+
26352 {0.714820385, 3.01483774}, //
+
26353 {0.719566643, 3.01273894}, //
+
26354 {0.724353731, 3.01080799}, //
+
26355 {0.729181468, 3.00904512}, //
+
26356 {0.734049976, 3.0074501}, //
+
26357 {0.738970995, 3.00599146}, //
+
26358 {0.743933976, 3.00461555}, //
+
26359 {0.748938918, 3.00332212}, //
+
26360 {0.753985822, 3.00211167}, //
+
26361 {0.759074688, 3.00098395}, //
+
26362 {0.764205575, 2.99993896}, //
+
26363 {0.769378424, 2.99897647}, //
+
26364 {0.774593234, 2.99809694}, //
+
26365 {0.779850006, 2.99729991}, //
+
26366 {0.786544442, 2.99650311}, //
+
26367 {0.793072224, 2.99562335}, //
+
26368 {0.799433351, 2.99466109}, //
+
26369 {0.805627763, 2.9936161}, //
+
26370 {0.811655581, 2.99248838}, //
+
26371 {0.817516685, 2.99127769}, //
+
26372 {0.823211133, 2.98998451}, //
+
26373 {0.828738868, 2.9886086}, //
+
26374 {0.834100008, 2.98714995}, //
+
26375 {0.841884553, 2.98413825}, //
+
26376 {0.850171626, 2.98112535}, //
+
26377 {0.858961105, 2.97811103}, //
+
26378 {0.868253112, 2.97509575}, //
+
26379 {0.878047526, 2.97207904}, //
+
26380 {0.888344467, 2.96906114}, //
+
26381 {0.899143815, 2.96604204}, //
+
26382 {0.91044569, 2.96302152}, //
+
26383 {0.922249973, 2.96000004}, //
+
26384 {0.934138298, 2.95711422}, //
+
26385 {0.945692003, 2.95447898}, //
+
26386 {0.956911087, 2.95209455}, //
+
26387 {0.96779567, 2.94996047}, //
+
26388 {0.978345692, 2.9480772}, //
+
26389 {0.988561094, 2.94644451}, //
+
26390 {0.998441994, 2.9450624}, //
+
26391 {1.00798821, 2.94393086}, //
+
26392 {1.01719999, 2.94304991}, //
+
26393 {1.02553022, 2.94212723}, //
+
26394 {1.03394318, 2.94086981}, //
+
26395 {1.04243886, 2.93927789}, //
+
26396 {1.05101728, 2.93735123}, //
+
26397 {1.05967844, 2.93509007}, //
+
26398 {1.0684222, 2.9324944}, //
+
26399 {1.07724881, 2.92956424}, //
+
26400 {1.08615804, 2.92629933}, //
+
26401 {1.09514999, 2.92269993}, //
+
26402 {1.10650241, 2.91835546}, //
+
26403 {1.11793768, 2.91434455}, //
+
26404 {1.12945557, 2.9106667}, //
+
26405 {1.14105618, 2.90732217}, //
+
26406 {1.15273952, 2.90431118}, //
+
26407 {1.1645056, 2.90163326}, //
+
26408 {1.17635429, 2.89928889}, //
+
26409 {1.18828583, 2.89727783}, //
+
26410 {1.20029998, 2.89560008}, //
+
26411 {1.21210432, 2.89476061}, //
+
26412 {1.2234062, 2.89375305}, //
+
26413 {1.2342056, 2.89257789}, //
+
26414 {1.24450243, 2.89123464}, //
+
26415 {1.2542969, 2.88972354}, //
+
26416 {1.26358891, 2.88804436}, //
+
26417 {1.27237844, 2.88619757}, //
+
26418 {1.2806654, 2.88418269}, //
+
26419 {1.28845, 2.88199997}, //
+
26420 {1.29589939, 2.87966061}, //
+
26421 {1.30318081, 2.87715316}, //
+
26422 {1.31029439, 2.87447786}, //
+
26423 {1.31724012, 2.87163448}, //
+
26424 {1.32401788, 2.8686235}, //
+
26425 {1.3306278, 2.86544442}, //
+
26426 {1.33706975, 2.8620975}, //
+
26427 {1.34334385, 2.85858274}, //
+
26428 {1.34944999, 2.85489988}, //
+
26429 {1.35251355, 2.85339928}, //
+
26430 {1.35565984, 2.85189748}, //
+
26431 {1.35888886, 2.85039449}, //
+
26432 {1.36220062, 2.84889007}, //
+
26433 {1.3655951, 2.84738445}, //
+
26434 {1.3690722, 2.84587789}, //
+
26435 {1.37263215, 2.84436965}, //
+
26436 {1.3762747, 2.84286046}, //
+
26437 {1.38, 2.84135008}, //
+
26438 {1.38761663, 2.83756232}, //
+
26439 {1.39540005, 2.8337326}, //
+
26440 {1.40335, 2.82986116}, //
+
26441 {1.41146672, 2.82594752}, //
+
26442 {1.41974998, 2.82199192}, //
+
26443 {1.42820001, 2.81799436}, //
+
26444 {1.43681669, 2.81395483}, //
+
26445 {1.44560003, 2.80987334}, //
+
26446 {1.45455003, 2.80574989}, //
+
26447 {1.46359444, 2.80175185}, //
+
26448 {1.47263885, 2.79804635}, //
+
26449 {1.48168337, 2.79463339}, //
+
26450 {1.49072778, 2.79151297}, //
+
26451 {1.49977219, 2.78868508}, //
+
26452 {1.50881672, 2.78614998}, //
+
26453 {1.51786113, 2.78390741}, //
+
26454 {1.52690554, 2.78195739}, //
+
26455 {1.53594995, 2.7802999}, //
+
26456 {1.56010497, 2.77624011}, //
+
26457 {1.58283639, 2.77159381}, //
+
26458 {1.60414445, 2.766361}, //
+
26459 {1.62402904, 2.76054192}, //
+
26460 {1.64249015, 2.75413632}, //
+
26461 {1.65952778, 2.74714446}, //
+
26462 {1.67514193, 2.73956609}, //
+
26463 {1.68933272, 2.73140121}, //
+
26464 {1.70210004, 2.72265005}, //
+
26465 {1.70536232, 2.72022653}, //
+
26466 {1.70912719, 2.71746731}, //
+
26467 {1.7133944, 2.71437216}, //
+
26468 {1.71816421, 2.71094131}, //
+
26469 {1.72343647, 2.70717478}, //
+
26470 {1.72921109, 2.70307231}, //
+
26471 {1.7354883, 2.69863391}, //
+
26472 {1.74226785, 2.69385982}, //
+
26473 {1.74954998, 2.68875003}, //
+
26474 {1.75863576, 2.68268514}, //
+
26475 {1.76780427, 2.67653513}, //
+
26476 {1.7770555, 2.67030001}, //
+
26477 {1.78638947, 2.66397953}, //
+
26478 {1.79580617, 2.65757418}, //
+
26479 {1.8053056, 2.65108323}, //
+
26480 {1.81488764, 2.64450741}, //
+
26481 {1.82455242, 2.63784623}, //
+
26482 {1.83430004, 2.63109994}, //
+
26483 {1.84372282, 2.62448955}, //
+
26484 {1.85239136, 2.61821365}, //
+
26485 {1.86030555, 2.61227226}, //
+
26486 {1.86746538, 2.60666537}, //
+
26487 {1.87387097, 2.60139322}, //
+
26488 {1.8795222, 2.59645557}, //
+
26489 {1.88441908, 2.59185243}, //
+
26490 {1.88856173, 2.58758402}, //
+
26491 {1.89195001, 2.58365011}, //
+
26492 {1.89425802, 2.58139372}, //
+
26493 {1.89664876, 2.57913637}, //
+
26494 {1.89912224, 2.57687783}, //
+
26495 {1.90167844, 2.57461786}, //
+
26496 {1.90431726, 2.5723567}, //
+
26497 {1.90703893, 2.57009435}, //
+
26498 {1.90984321, 2.5678308}, //
+
26499 {1.91273022, 2.56556606}, //
+
26500 {1.91569996, 2.56329989}, //
+
26501 {1.91871107, 2.5594914}, //
+
26502 {1.92172217, 2.55559874}, //
+
26503 {1.92473328, 2.55162215}, //
+
26504 {1.92774439, 2.54756165}, //
+
26505 {1.9307555, 2.54341722}, //
+
26506 {1.93376672, 2.53918886}, //
+
26507 {1.93677783, 2.53487659}, //
+
26508 {1.93978894, 2.53048015}, //
+
26509 {1.94280005, 2.52600002}, //
+
26510 {1.94569635, 2.52147841}, //
+
26511 {1.94834077, 2.516958}, //
+
26512 {1.9507333, 2.51243877}, //
+
26513 {1.95287406, 2.50792098}, //
+
26514 {1.95476294, 2.50340438}, //
+
26515 {1.95640004, 2.49888897}, //
+
26516 {1.95778513, 2.49437475}, //
+
26517 {1.95891857, 2.48986173}, //
+
26518 {1.9598, 2.48534989}, //
+
26519 {1.95977902, 2.4829371}, //
+
26520 {1.95971608, 2.48023152}, //
+
26521 {1.95961106, 2.47723341}, //
+
26522 {1.95946419, 2.47394252}, //
+
26523 {1.95927536, 2.47035933}, //
+
26524 {1.95904446, 2.46648335}, //
+
26525 {1.95877159, 2.46231484}, //
+
26526 {1.95845675, 2.45785379}, //
+
26527 {1.95809996, 2.45309997}, //
+
26528 {1.95770121, 2.44823146}, //
+
26529 {1.95726049, 2.44340372}, //
+
26530 {1.95677781, 2.43861675}, //
+
26531 {1.95625305, 2.43387032}, //
+
26532 {1.95568645, 2.42916489}, //
+
26533 {1.95507777, 2.42449999}, //
+
26534 {1.95442712, 2.41987586}, //
+
26535 {1.95373452, 2.4152925}, //
+
26536 {1.95299995, 2.41074991}, //
+
26537 {1.95226538, 2.40631104}, //
+
26538 {1.9515729, 2.40203881}, //
+
26539 {1.95092225, 2.39793324}, //
+
26540 {1.95031357, 2.39399433}, //
+
26541 {1.94974697, 2.39022231}, //
+
26542 {1.94922221, 2.38661671}, //
+
26543 {1.94873953, 2.38317776}, //
+
26544 {1.94829881, 2.37990546}, //
+
26545 {1.94790006, 2.37680006}, //
+
26546 {1.94754326, 2.3739562}, //
+
26547 {1.94722843, 2.37144685}, //
+
26548 {1.94695556, 2.36927223}, //
+
26549 {1.94672465, 2.36743212}, //
+
26550 {1.94638884, 2.36475563}, //
+
26551 {1.94628394, 2.36391902}, //
+
26552 });
+
26553 polys.push_back({
+
26554 {0.227883339, 2.97694993}, //
+
26555 {0.226799995, 2.97694993}, //
+
26556 {0.223883331, 2.97694993}, //
+
26557 {0.223800004, 2.97694993}, //
+
26558 {0.223841354, 2.97699189}, //
+
26559 {0.223965436, 2.97711802}, //
+
26560 {0.22417222, 2.97732782}, //
+
26561 {0.224461734, 2.97762156}, //
+
26562 {0.22483395, 2.97799945}, //
+
26563 {0.225288883, 2.97846103}, //
+
26564 {0.225826547, 2.97900677}, //
+
26565 {0.226446912, 2.97963643}, //
+
26566 {0.227149993, 2.98035002}, //
+
26567 {0.227947533, 2.98110557}, //
+
26568 {0.228829011, 2.98186111}, //
+
26569 {0.229794443, 2.98261666}, //
+
26570 {0.230843827, 2.98337221}, //
+
26571 {0.231977165, 2.98412776}, //
+
26572 {0.233194441, 2.98488331}, //
+
26573 {0.234495685, 2.98563886}, //
+
26574 {0.235880867, 2.98639441}, //
+
26575 {0.237350002, 2.98714995}, //
+
26576 {0.23810555, 2.98719192}, //
+
26577 {0.238861114, 2.9873178}, //
+
26578 {0.239616662, 2.98752785}, //
+
26579 {0.240372226, 2.98782158}, //
+
26580 {0.241127774, 2.98819947}, //
+
26581 {0.241883337, 2.98866105}, //
+
26582 {0.242638886, 2.98920679}, //
+
26583 {0.243394449, 2.98983645}, //
+
26584 {0.244149998, 2.99055004}, //
+
26585 {0.24648951, 2.99213457}, //
+
26586 {0.248996913, 2.99388838}, //
+
26587 {0.251672208, 2.99581122}, //
+
26588 {0.254515439, 2.99790311}, //
+
26589 {0.257526547, 3.00016427}, //
+
26590 {0.26070556, 3.00259447}, //
+
26591 {0.26405248, 3.00519371}, //
+
26592 {0.267567277, 3.00796223}, //
+
26593 {0.27125001, 3.01090002}, //
+
26594 {0.273485184, 3.01313448}, //
+
26595 {0.275679618, 3.01532722}, //
+
26596 {0.277833343, 3.01747775}, //
+
26597 {0.279946297, 3.01958632}, //
+
26598 {0.282018512, 3.02165318}, //
+
26599 {0.284049988, 3.02367783}, //
+
26600 {0.286040753, 3.02566051}, //
+
26601 {0.287990749, 3.02760124}, //
+
26602 {0.289900005, 3.02950001}, //
+
26603 {0.291767269, 3.03136802}, //
+
26604 {0.29359135, 3.03319383}, //
+
26605 {0.295372218, 3.03497767}, //
+
26606 {0.297109872, 3.0367198}, //
+
26607 {0.298804313, 3.03841972}, //
+
26608 {0.30045557, 3.04007769}, //
+
26609 {0.302063584, 3.04169393}, //
+
26610 {0.303628385, 3.04326797}, //
+
26611 {0.305150002, 3.04480004}, //
+
26612 {0.305129021, 3.04471612}, //
+
26613 {0.304961115, 3.04404449}, //
+
26614 {0.30481419, 3.04345679}, //
+
26615 {0.304394454, 3.04177785}, //
+
26616 {0.304121614, 3.04068637}, //
+
26617 {0.303806782, 3.03942704}, //
+
26618 {0.303449988, 3.03800011}, //
+
26619 {0.303072214, 3.03648877}, //
+
26620 {0.30269444, 3.03497767}, //
+
26621 {0.302316666, 3.03346658}, //
+
26622 {0.301938891, 3.03195548}, //
+
26623 {0.300427765, 3.02591109}, //
+
26624 {0.30004999, 3.0244}, //
+
26625 {0.299661726, 3.0229001}, //
+
26626 {0.299230248, 3.02139997}, //
+
26627 {0.298755556, 3.01990008}, //
+
26628 {0.298237652, 3.01839995}, //
+
26629 {0.297676533, 3.01690006}, //
+
26630 {0.297072232, 3.01539993}, //
+
26631 {0.296424687, 3.01390004}, //
+
26632 {0.295733958, 3.01239991}, //
+
26633 {0.294999987, 3.01090002}, //
+
26634 {0.294098139, 3.00867534}, //
+
26635 {0.292903692, 3.00653458}, //
+
26636 {0.291416675, 3.00447774}, //
+
26637 {0.289637029, 3.00250483}, //
+
26638 {0.287564814, 3.00061607}, //
+
26639 {0.2852, 2.99881101}, //
+
26640 {0.282542586, 2.9970901}, //
+
26641 {0.279592603, 2.99545312}, //
+
26642 {0.276349992, 2.99390006}, //
+
26643 {0.273002476, 2.99242043}, //
+
26644 {0.269737661, 2.99098158}, //
+
26645 {0.266555548, 2.98958325}, //
+
26646 {0.263456166, 2.98822594}, //
+
26647 {0.260439515, 2.98690915}, //
+
26648 {0.257505566, 2.98563337}, //
+
26649 {0.254654318, 2.98439813}, //
+
26650 {0.251885802, 2.98320365}, //
+
26651 {0.249200001, 2.98204994}, //
+
26652 {0.246629015, 2.98097968}, //
+
26653 {0.244182721, 2.98003507}, //
+
26654 {0.241861105, 2.97921658}, //
+
26655 {0.239664197, 2.97852397}, //
+
26656 {0.237591982, 2.97795749}, //
+
26657 {0.235644445, 2.97751665}, //
+
26658 {0.233821601, 2.97720194}, //
+
26659 {0.232123449, 2.97701287}, //
+
26660 {0.230550006, 2.97694993}, //
+
26661 {0.229133338, 2.97694993}, //
+
26662 });
+
26663 polys.push_back({
+
26664 {5.4977107, 2.80765915}, //
+
26665 {5.49789762, 2.80828714}, //
+
26666 {5.49846125, 2.80933332}, //
+
26667 {5.49940109, 2.81079817}, //
+
26668 {5.50071812, 2.81268144}, //
+
26669 {5.50241089, 2.81498337}, //
+
26670 {5.50448084, 2.81770372}, //
+
26671 {5.50692701, 2.8208425}, //
+
26672 {5.50974989, 2.82439995}, //
+
26673 {5.51418829, 2.82883835}, //
+
26674 {5.51845884, 2.83310866}, //
+
26675 {5.52256107, 2.83721113}, //
+
26676 {5.52649546, 2.84114575}, //
+
26677 {5.53026247, 2.84491229}, //
+
26678 {5.53386116, 2.84851122}, //
+
26679 {5.537292, 2.85194206}, //
+
26680 {5.540555, 2.85520482}, //
+
26681 {5.54365015, 2.85829997}, //
+
26682 {5.54725933, 2.86194134}, //
+
26683 {5.55053139, 2.86533213}, //
+
26684 {5.5534668, 2.86847234}, //
+
26685 {5.55606461, 2.87136173}, //
+
26686 {5.55832577, 2.87400055}, //
+
26687 {5.56024981, 2.87638879}, //
+
26688 {5.5618372, 2.87852645}, //
+
26689 {5.56308699, 2.88041353}, //
+
26690 {5.56400013, 2.88205004}, //
+
26691 {5.56404209, 2.8827951}, //
+
26692 {5.56416798, 2.88354135}, //
+
26693 {5.56437778, 2.88428879}, //
+
26694 {5.56467152, 2.88503766}, //
+
26695 {5.56504917, 2.88578773}, //
+
26696 {5.56551123, 2.88653898}, //
+
26697 {5.56605673, 2.88729143}, //
+
26698 {5.56668663, 2.88804507}, //
+
26699 {5.56739998, 2.88879991}, //
+
26700 {5.56813478, 2.88957644}, //
+
26701 {5.56882715, 2.89039516}, //
+
26702 {5.56947756, 2.89125562}, //
+
26703 {5.57008648, 2.89215803}, //
+
26704 {5.57065296, 2.89310241}, //
+
26705 {5.57117796, 2.89408898}, //
+
26706 {5.57166052, 2.89511728}, //
+
26707 {5.57210112, 2.89618754}, //
+
26708 {5.57250023, 2.8973}, //
+
26709 {5.57283592, 2.89837027}, //
+
26710 {5.57308769, 2.89931488}, //
+
26711 {5.57325554, 2.90013337}, //
+
26712 {5.57333946, 2.90082598}, //
+
26713 {5.57333946, 2.9013927}, //
+
26714 {5.57325554, 2.9018333}, //
+
26715 {5.57308769, 2.90214825}, //
+
26716 {5.57283592, 2.90233707}, //
+
26717 {5.57250023, 2.90240002}, //
+
26718 {5.57205915, 2.90235806}, //
+
26719 {5.57149267, 2.90223217}, //
+
26720 {5.57079983, 2.90202212}, //
+
26721 {5.56998158, 2.90172839}, //
+
26722 {5.56903696, 2.9013505}, //
+
26723 {5.56796646, 2.90088892}, //
+
26724 {5.56677055, 2.90034318}, //
+
26725 {5.56544828, 2.89971352}, //
+
26726 {5.56400013, 2.89899993}, //
+
26727 {5.5625205, 2.89824438}, //
+
26728 {5.56108141, 2.89748883}, //
+
26729 {5.55968332, 2.89673328}, //
+
26730 {5.55832577, 2.89597774}, //
+
26731 {5.55700922, 2.89522219}, //
+
26732 {5.5557332, 2.89446664}, //
+
26733 {5.5544982, 2.89371109}, //
+
26734 {5.55330372, 2.89295554}, //
+
26735 {5.55214977, 2.89219999}, //
+
26736 {5.55103779, 2.89148641}, //
+
26737 {5.54996729, 2.89085674}, //
+
26738 {5.54893875, 2.890311}, //
+
26739 {5.54795265, 2.88984942}, //
+
26740 {5.54700804, 2.88947153}, //
+
26741 {5.54610538, 2.8891778}, //
+
26742 {5.54524517, 2.88896799}, //
+
26743 {5.54442644, 2.88884187}, //
+
26744 {5.54365015, 2.88879991}, //
+
26745 {5.5429883, 2.88884187}, //
+
26746 {5.54249191, 2.88896799}, //
+
26747 {5.54216099, 2.8891778}, //
+
26748 {5.54199553, 2.88947153}, //
+
26749 {5.54199553, 2.88984942}, //
+
26750 {5.54216099, 2.890311}, //
+
26751 {5.54249191, 2.89085674}, //
+
26752 {5.5429883, 2.89148641}, //
+
26753 {5.54365015, 2.89219999}, //
+
26754 {5.54448938, 2.89303899}, //
+
26755 {5.54549694, 2.8940444}, //
+
26756 {5.54667234, 2.8952167}, //
+
26757 {5.54801559, 2.89655566}, //
+
26758 {5.54952669, 2.89806104}, //
+
26759 {5.55120564, 2.8997333}, //
+
26760 {5.55305243, 2.90157223}, //
+
26761 {5.55506706, 2.9035778}, //
+
26762 {5.55725002, 2.90575004}, //
+
26763 {5.55875063, 2.90726113}, //
+
26764 {5.56025267, 2.90877223}, //
+
26765 {5.56175566, 2.91028333}, //
+
26766 {5.56326008, 2.91179442}, //
+
26767 {5.56476545, 2.91330552}, //
+
26768 {5.56627226, 2.91481662}, //
+
26769 {5.56778002, 2.91632771}, //
+
26770 {5.56928968, 2.91783881}, //
+
26771 {5.57079983, 2.91934991}, //
+
26772 {5.5765295, 2.92587662}, //
+
26773 {5.5816741, 2.9319005}, //
+
26774 {5.58623314, 2.93742228}, //
+
26775 {5.59020758, 2.94244146}, //
+
26776 {5.59359646, 2.94695807}, //
+
26777 {5.59639978, 2.95097232}, //
+
26778 {5.59861851, 2.95448399}, //
+
26779 {5.60025167, 2.95749331}, //
+
26780 {5.60129976, 2.96000004}, //
+
26781 {5.60197163, 2.96077657}, //
+
26782 {5.60247517, 2.96159506}, //
+
26783 {5.60281134, 2.96245551}, //
+
26784 {5.60297918, 2.96335793}, //
+
26785 {5.60297918, 2.96430254}, //
+
26786 {5.60281134, 2.96528888}, //
+
26787 {5.60247517, 2.96631718}, //
+
26788 {5.60197163, 2.96738768}, //
+
26789 {5.60129976, 2.9684999}, //
+
26790 {5.60054493, 2.9695704}, //
+
26791 {5.59979153, 2.97051477}, //
+
26792 {5.59903908, 2.97133327}, //
+
26793 {5.59828758, 2.97202587}, //
+
26794 {5.59753752, 2.97259259}, //
+
26795 {5.59678888, 2.97303343}, //
+
26796 {5.5960412, 2.97334814}, //
+
26797 {5.59529495, 2.97353697}, //
+
26798 {5.59455013, 2.97359991}, //
+
26799 {5.59446621, 2.97368145}, //
+
26800 {5.59436131, 2.97378325}, //
+
26801 {5.59320688, 2.97490382}, //
+
26802 {5.59285021, 2.97525001}, //
+
26803 {5.58321667, 2.98488331}, //
+
26804 {5.58246088, 2.98563886}, //
+
26805 {5.58170557, 2.98639441}, //
+
26806 {5.58094978, 2.98714995}, //
+
26807 {5.58020496, 2.98786354}, //
+
26808 {5.57945871, 2.9884932}, //
+
26809 {5.57871103, 2.98903894}, //
+
26810 {5.5779624, 2.98950052}, //
+
26811 {5.57721233, 2.98987842}, //
+
26812 {5.57646132, 2.99017215}, //
+
26813 {5.57570887, 2.99038219}, //
+
26814 {5.57495499, 2.99050808}, //
+
26815 {5.57420015, 2.99055004}, //
+
26816 {5.57344437, 2.98983645}, //
+
26817 {5.57268906, 2.98920679}, //
+
26818 {5.57193327, 2.98866105}, //
+
26819 {5.57117796, 2.98819947}, //
+
26820 {5.57042217, 2.98782158}, //
+
26821 {5.56966686, 2.98752785}, //
+
26822 {5.56891108, 2.9873178}, //
+
26823 {5.56815577, 2.98719192}, //
+
26824 {5.56739998, 2.98714995}, //
+
26825 {5.56589937, 2.98712897}, //
+
26826 {5.56439734, 2.98706603}, //
+
26827 {5.56289434, 2.98696113}, //
+
26828 {5.56138992, 2.98681426}, //
+
26829 {5.55988455, 2.98662519}, //
+
26830 {5.55837774, 2.98639441}, //
+
26831 {5.55686998, 2.98612165}, //
+
26832 {5.55536032, 2.9858067}, //
+
26833 {5.55385017, 2.98545003}, //
+
26834 {5.55233955, 2.98509312}, //
+
26835 {5.55083036, 2.9847784}, //
+
26836 {5.54932213, 2.98450565}, //
+
26837 {5.54781532, 2.98427463}, //
+
26838 {5.54630995, 2.9840858}, //
+
26839 {5.54480553, 2.98393893}, //
+
26840 {5.54330254, 2.98383403}, //
+
26841 {5.5418005, 2.98377109}, //
+
26842 {5.54029989, 2.9837501}, //
+
26843 {5.541821, 2.98450494}, //
+
26844 {5.54338408, 2.98525858}, //
+
26845 {5.54498911, 2.98601103}, //
+
26846 {5.54663563, 2.98676229}, //
+
26847 {5.54832458, 2.98751235}, //
+
26848 {5.5500555, 2.98826122}, //
+
26849 {5.55182838, 2.98900867}, //
+
26850 {5.55364323, 2.98975492}, //
+
26851 {5.55550003, 2.99049997}, //
+
26852 {5.55734682, 2.9912765}, //
+
26853 {5.55910969, 2.99209499}, //
+
26854 {5.56078911, 2.99295545}, //
+
26855 {5.56238413, 2.9938581}, //
+
26856 {5.56389523, 2.99480247}, //
+
26857 {5.5653224, 2.99578881}, //
+
26858 {5.56666565, 2.99681735}, //
+
26859 {5.5679245, 2.99788761}, //
+
26860 {5.5690999, 2.99900007}, //
+
26861 {5.57111502, 3.00101471}, //
+
26862 {5.57193327, 3.00183344}, //
+
26863 {5.57262611, 3.00252604}, //
+
26864 {5.57363319, 3.00353336}, //
+
26865 {5.57394838, 3.00384808}, //
+
26866 {5.57413721, 3.00403714}, //
+
26867 {5.57420015, 3.00410008}, //
+
26868 {5.57420015, 3.0007}, //
+
26869 {5.57422113, 2.99996543}, //
+
26870 {5.57428408, 2.99927282}, //
+
26871 {5.57438898, 2.99862218}, //
+
26872 {5.57453585, 2.9980135}, //
+
26873 {5.57472467, 2.99744701}, //
+
26874 {5.57495546, 2.99692225}, //
+
26875 {5.57522821, 2.99643946}, //
+
26876 {5.5755434, 2.99599886}, //
+
26877 {5.57590008, 2.99559999}, //
+
26878 {5.57627726, 2.99520135}, //
+
26879 {5.576653, 2.99476051}, //
+
26880 {5.5770278, 2.99427772}, //
+
26881 {5.57740116, 2.99375319}, //
+
26882 {5.57777357, 2.99318647}, //
+
26883 {5.57814455, 2.99257779}, //
+
26884 {5.5785141, 2.99192715}, //
+
26885 {5.57888269, 2.99123454}, //
+
26886 {5.57924986, 2.99049997}, //
+
26887 {5.57960701, 2.98979688}, //
+
26888 {5.57992172, 2.98917651}, //
+
26889 {5.58019447, 2.98863888}, //
+
26890 {5.58042526, 2.98818398}, //
+
26891 {5.58076096, 2.98752213}, //
+
26892 {5.58086586, 2.98731542}, //
+
26893 {5.5809288, 2.98719144}, //
+
26894 {5.58094978, 2.98714995}, //
+
26895 {5.58418226, 2.98714995}, //
+
26896 {5.58430815, 2.98714995}, //
+
26897 {5.58510542, 2.98714995}, //
+
26898 {5.58537817, 2.98714995}, //
+
26899 {5.58605003, 2.98714995}, //
+
26900 {5.58640671, 2.98712897}, //
+
26901 {5.58672142, 2.98706603}, //
+
26902 {5.58699465, 2.98696113}, //
+
26903 {5.58722544, 2.98681426}, //
+
26904 {5.58741426, 2.98662519}, //
+
26905 {5.58756113, 2.98639441}, //
+
26906 {5.58766603, 2.98612165}, //
+
26907 {5.58772898, 2.9858067}, //
+
26908 {5.58774996, 2.98545003}, //
+
26909 {5.58774996, 2.9837501}, //
+
26910 {5.59020567, 2.98129439}, //
+
26911 {5.59058332, 2.98091674}, //
+
26912 {5.59285021, 2.97865009}, //
+
26913 {5.59324837, 2.97829318}, //
+
26914 {5.59368706, 2.97797847}, //
+
26915 {5.59416676, 2.97770548}, //
+
26916 {5.59468699, 2.97747469}, //
+
26917 {5.59524822, 2.97728586}, //
+
26918 {5.59584999, 2.977139}, //
+
26919 {5.59649277, 2.97703385}, //
+
26920 {5.59717607, 2.97697091}, //
+
26921 {5.59789991, 2.97694993}, //
+
26922 {5.59863472, 2.97694993}, //
+
26923 {5.59932709, 2.97694993}, //
+
26924 {5.59997797, 2.97694993}, //
+
26925 {5.60216045, 2.97694993}, //
+
26926 {5.60260105, 2.97694993}, //
+
26927 {5.60335684, 2.97694993}, //
+
26928 {5.60367155, 2.97694993}, //
+
26929 {5.6039443, 2.97694993}, //
+
26930 {5.60417509, 2.97694993}, //
+
26931 {5.60461617, 2.97694993}, //
+
26932 {5.60467911, 2.97694993}, //
+
26933 {5.60472107, 2.97694993}, //
+
26934 {5.60478401, 2.97694993}, //
+
26935 {5.60488892, 2.97694993}, //
+
26936 {5.60572863, 2.97694993}, //
+
26937 {5.60604334, 2.97694993}, //
+
26938 {5.60640001, 2.97694993}, //
+
26939 {5.60675669, 2.97694993}, //
+
26940 {5.6070714, 2.97694993}, //
+
26941 {5.60734463, 2.97694993}, //
+
26942 {5.60801601, 2.97694993}, //
+
26943 {5.60807896, 2.97694993}, //
+
26944 {5.60809994, 2.97694993}, //
+
26945 {5.60809994, 2.97690868}, //
+
26946 {5.60809994, 2.97657776}, //
+
26947 {5.60809994, 2.97628832}, //
+
26948 {5.60809994, 2.97359991}, //
+
26949 {5.60952711, 2.97202587}, //
+
26950 {5.61078644, 2.97032595}, //
+
26951 {5.61187792, 2.9684999}, //
+
26952 {5.61280107, 2.9665482}, //
+
26953 {5.61355686, 2.96447039}, //
+
26954 {5.61414433, 2.96226668}, //
+
26955 {5.61456442, 2.9599371}, //
+
26956 {5.61481619, 2.95748138}, //
+
26957 {5.61490011, 2.95490003}, //
+
26958 {5.61481619, 2.95237088}, //
+
26959 {5.61456442, 2.95005059}, //
+
26960 {5.61414433, 2.94793892}, //
+
26961 {5.61355686, 2.94603586}, //
+
26962 {5.61280107, 2.94434142}, //
+
26963 {5.61187792, 2.9428556}, //
+
26964 {5.61078644, 2.94157839}, //
+
26965 {5.60952711, 2.9405098}, //
+
26966 {5.60809994, 2.93965006}, //
+
26967 {5.60730267, 2.93812847}, //
+
26968 {5.60642099, 2.93656349}, //
+
26969 {5.6054554, 2.9349556}, //
+
26970 {5.60440636, 2.93330431}, //
+
26971 {5.60327291, 2.93160987}, //
+
26972 {5.60205555, 2.92987227}, //
+
26973 {5.60075426, 2.92809129}, //
+
26974 {5.59936905, 2.92626739}, //
+
26975 {5.59789991, 2.92440009}, //
+
26976 {5.59639931, 2.92258453}, //
+
26977 {5.59489775, 2.92089391}, //
+
26978 {5.59339428, 2.91932774}, //
+
26979 {5.59189034, 2.9178865}, //
+
26980 {5.59038448, 2.91656971}, //
+
26981 {5.58887768, 2.91537786}, //
+
26982 {5.58736992, 2.91431046}, //
+
26983 {5.58586073, 2.91336799}, //
+
26984 {5.58435011, 2.91254997}, //
+
26985 {5.58430815, 2.91177344}, //
+
26986 {5.58418226, 2.91095495}, //
+
26987 {5.58397245, 2.9100945}, //
+
26988 {5.58367825, 2.90919209}, //
+
26989 {5.58330059, 2.90824747}, //
+
26990 {5.58283901, 2.90726113}, //
+
26991 {5.58229303, 2.90623283}, //
+
26992 {5.58166361, 2.90516233}, //
+
26993 {5.58094978, 2.90405011}, //
+
26994 {5.58020496, 2.90286422}, //
+
26995 {5.57945871, 2.90155125}, //
+
26996 {5.57871103, 2.9001112}, //
+
26997 {5.5779624, 2.89854383}, //
+
26998 {5.57721233, 2.89684939}, //
+
26999 {5.57646132, 2.89502788}, //
+
27000 {5.57570887, 2.89307904}, //
+
27001 {5.57495499, 2.89100313}, //
+
27002 {5.57420015, 2.88879991}, //
+
27003 {5.57344437, 2.88727832}, //
+
27004 {5.57268906, 2.88571358}, //
+
27005 {5.57193327, 2.88410544}, //
+
27006 {5.57117796, 2.8824544}, //
+
27007 {5.57042217, 2.88075995}, //
+
27008 {5.56966686, 2.87902212}, //
+
27009 {5.56891108, 2.87724137}, //
+
27010 {5.56815577, 2.87541723}, //
+
27011 {5.56739998, 2.87354994}, //
+
27012 {5.56668663, 2.87173462}, //
+
27013 {5.56605673, 2.87004375}, //
+
27014 {5.56551123, 2.86847782}, //
+
27015 {5.56504917, 2.86703634}, //
+
27016 {5.56467152, 2.8657198}, //
+
27017 {5.56437778, 2.8645277}, //
+
27018 {5.56416798, 2.86346054}, //
+
27019 {5.56404209, 2.86251783}, //
+
27020 {5.56400013, 2.86170006}, //
+
27021 {5.56321287, 2.86094451}, //
+
27022 {5.56234074, 2.86018896}, //
+
27023 {5.56138325, 2.85943341}, //
+
27024 {5.56034088, 2.85867786}, //
+
27025 {5.55921316, 2.85792232}, //
+
27026 {5.55800009, 2.85716677}, //
+
27027 {5.55670166, 2.85641122}, //
+
27028 {5.55531836, 2.85565567}, //
+
27029 {5.55385017, 2.85489988}, //
+
27030 {5.54999924, 2.8524766}, //
+
27031 {5.54598093, 2.84971738}, //
+
27032 {5.5417943, 2.84662223}, //
+
27033 {5.5374403, 2.84319139}, //
+
27034 {5.53291798, 2.83942461}, //
+
27035 {5.52822781, 2.83532214}, //
+
27036 {5.52336979, 2.83088398}, //
+
27037 {5.51834393, 2.82610989}, //
+
27038 {5.51315022, 2.8210001}, //
+
27039 {5.51028538, 2.81815624}, //
+
27040 {5.50771284, 2.81564689}, //
+
27041 {5.50543356, 2.81347227}, //
+
27042 {5.5034461, 2.81163216}, //
+
27043 {5.5017519, 2.81012654}, //
+
27044 {5.50035, 2.80895567}, //
+
27045 {5.49924088, 2.80811906}, //
+
27046 {5.49842405, 2.80761719}, //
+
27047 {5.49790001, 2.80745006}, //
+
27048 });
+
27049 polys.push_back({
+
27050 {5.58573532, 2.851542}, //
+
27051 {5.58554649, 2.85166788}, //
+
27052 {5.58548355, 2.85187769}, //
+
27053 {5.58554649, 2.85217166}, //
+
27054 {5.58573532, 2.85254931}, //
+
27055 {5.58605003, 2.85301113}, //
+
27056 {5.58649063, 2.85355687}, //
+
27057 {5.58705759, 2.85418653}, //
+
27058 {5.58774996, 2.85489988}, //
+
27059 {5.58926058, 2.85643148}, //
+
27060 {5.59076977, 2.85800362}, //
+
27061 {5.592278, 2.85961676}, //
+
27062 {5.59378433, 2.86127043}, //
+
27063 {5.59529018, 2.86296487}, //
+
27064 {5.59679461, 2.86470008}, //
+
27065 {5.5982976, 2.86647582}, //
+
27066 {5.59979916, 2.86829257}, //
+
27067 {5.60129976, 2.87015009}, //
+
27068 {5.60285234, 2.8719759}, //
+
27069 {5.60448742, 2.87367582}, //
+
27070 {5.60620546, 2.8752501}, //
+
27071 {5.608006, 2.87669826}, //
+
27072 {5.60988951, 2.87802029}, //
+
27073 {5.61185551, 2.87921667}, //
+
27074 {5.61390448, 2.88028693}, //
+
27075 {5.61603594, 2.88123155}, //
+
27076 {5.61824989, 2.88205004}, //
+
27077 {5.62047386, 2.88422227}, //
+
27078 {5.62261295, 2.88622785}, //
+
27079 {5.62466669, 2.88806677}, //
+
27080 {5.62663507, 2.8897388}, //
+
27081 {5.62851858, 2.89124441}, //
+
27082 {5.63031673, 2.89258337}, //
+
27083 {5.63202953, 2.89375567}, //
+
27084 {5.63365746, 2.89476109}, //
+
27085 {5.63520002, 2.89560008}, //
+
27086 {5.63593435, 2.89637589}, //
+
27087 {5.6366272, 2.89719248}, //
+
27088 {5.6372776, 2.89805007}, //
+
27089 {5.63788652, 2.89894819}, //
+
27090 {5.63845301, 2.89988708}, //
+
27091 {5.638978, 2.90086675}, //
+
27092 {5.63946056, 2.90188694}, //
+
27093 {5.63990116, 2.90294814}, //
+
27094 {5.6402998, 2.90405011}, //
+
27095 {5.64063597, 2.90514135}, //
+
27096 {5.64088774, 2.90614867}, //
+
27097 {5.64105558, 2.90707231}, //
+
27098 {5.64113951, 2.90791178}, //
+
27099 {5.64113951, 2.90866733}, //
+
27100 {5.64105558, 2.90933895}, //
+
27101 {5.64088774, 2.90992665}, //
+
27102 {5.64063597, 2.91043019}, //
+
27103 {5.6402998, 2.91085005}, //
+
27104 {5.63985968, 2.91116476}, //
+
27105 {5.6392951, 2.91135359}, //
+
27106 {5.63860559, 2.91141677}, //
+
27107 {5.63779116, 2.91135359}, //
+
27108 {5.63685226, 2.91116476}, //
+
27109 {5.63578892, 2.91085005}, //
+
27110 {5.63460064, 2.91040921}, //
+
27111 {5.63328743, 2.90984249}, //
+
27112 {5.63184977, 2.90914989}, //
+
27113 {5.63038063, 2.90773344}, //
+
27114 {5.6289959, 2.90648341}, //
+
27115 {5.62769461, 2.90540004}, //
+
27116 {5.62647724, 2.90448332}, //
+
27117 {5.6253438, 2.90373325}, //
+
27118 {5.62429428, 2.90315008}, //
+
27119 {5.62332916, 2.90273333}, //
+
27120 {5.62244749, 2.90248322}, //
+
27121 {5.62165022, 2.90240002}, //
+
27122 {5.62093639, 2.90242028}, //
+
27123 {5.62030697, 2.90248156}, //
+
27124 {5.61976099, 2.90258336}, //
+
27125 {5.61929941, 2.90272593}, //
+
27126 {5.61892176, 2.90290928}, //
+
27127 {5.61862755, 2.90313339}, //
+
27128 {5.61841774, 2.90339804}, //
+
27129 {5.61829185, 2.90370369}, //
+
27130 {5.61824989, 2.90405011}, //
+
27131 {5.61829185, 2.90440679}, //
+
27132 {5.61841774, 2.9047215}, //
+
27133 {5.61862755, 2.90499449}, //
+
27134 {5.61892176, 2.90522528}, //
+
27135 {5.61929941, 2.9054141}, //
+
27136 {5.61976099, 2.90556121}, //
+
27137 {5.62030697, 2.90566611}, //
+
27138 {5.62093639, 2.90572906}, //
+
27139 {5.62165022, 2.90575004}, //
+
27140 {5.62169218, 2.9064846}, //
+
27141 {5.62181807, 2.90717721}, //
+
27142 {5.62202787, 2.90782785}, //
+
27143 {5.62232161, 2.90843654}, //
+
27144 {5.62269926, 2.90900302}, //
+
27145 {5.62316132, 2.90952778}, //
+
27146 {5.62370682, 2.91001058}, //
+
27147 {5.62433624, 2.91045117}, //
+
27148 {5.62505007, 2.91085005}, //
+
27149 {5.62576342, 2.91120672}, //
+
27150 {5.62639332, 2.91152167}, //
+
27151 {5.62693882, 2.91179442}, //
+
27152 {5.6274004, 2.91202521}, //
+
27153 {5.62777853, 2.91221428}, //
+
27154 {5.62807226, 2.91236115}, //
+
27155 {5.62828207, 2.91246605}, //
+
27156 {5.62840796, 2.91252899}, //
+
27157 {5.62844992, 2.91254997}, //
+
27158 {5.62844992, 2.9142499}, //
+
27159 {5.62842894, 2.91458583}, //
+
27160 {5.62836599, 2.9148376}, //
+
27161 {5.62826109, 2.91500545}, //
+
27162 {5.62811422, 2.91508961}, //
+
27163 {5.6279254, 2.91508961}, //
+
27164 {5.62769461, 2.91500545}, //
+
27165 {5.62742138, 2.9148376}, //
+
27166 {5.62710667, 2.91458583}, //
+
27167 {5.62674999, 2.9142499}, //
+
27168 {5.62626791, 2.91385126}, //
+
27169 {5.62557697, 2.91341043}, //
+
27170 {5.62467766, 2.91292787}, //
+
27171 {5.62356997, 2.91240311}, //
+
27172 {5.62225294, 2.91183639}, //
+
27173 {5.62072802, 2.9112277}, //
+
27174 {5.61899376, 2.91057706}, //
+
27175 {5.61705112, 2.90988445}, //
+
27176 {5.61490011, 2.90914989}, //
+
27177 {5.60719681, 2.90643144}, //
+
27178 {5.60066557, 2.90429807}, //
+
27179 {5.59530544, 2.90275002}, //
+
27180 {5.59111738, 2.90178704}, //
+
27181 {5.58810043, 2.90140915}, //
+
27182 {5.58625555, 2.90161657}, //
+
27183 {5.58558226, 2.90240932}, //
+
27184 {5.58608007, 2.90378714}, //
+
27185 {5.58774996, 2.90575004}, //
+
27186 {5.58921862, 2.90650558}, //
+
27187 {5.59060192, 2.90726113}, //
+
27188 {5.59189987, 2.90801668}, //
+
27189 {5.59311295, 2.90877223}, //
+
27190 {5.59424067, 2.90952778}, //
+
27191 {5.59528351, 2.91028333}, //
+
27192 {5.59624052, 2.91103888}, //
+
27193 {5.59711313, 2.91179442}, //
+
27194 {5.59789991, 2.91254997}, //
+
27195 {5.59863472, 2.91328454}, //
+
27196 {5.59932709, 2.91397715}, //
+
27197 {5.6011529, 2.91580319}, //
+
27198 {5.60216045, 2.91681051}, //
+
27199 {5.60260105, 2.91725135}, //
+
27200 {5.60335684, 2.9180069}, //
+
27201 {5.60367155, 2.91832161}, //
+
27202 {5.6039443, 2.91859436}, //
+
27203 {5.6043644, 2.91901422}, //
+
27204 {5.60451126, 2.91916108}, //
+
27205 {5.60470009, 2.91934991}, //
+
27206 {5.60762787, 2.92085004}, //
+
27207 {5.61038876, 2.92234993}, //
+
27208 {5.61298323, 2.92385006}, //
+
27209 {5.61541128, 2.92534995}, //
+
27210 {5.61767244, 2.92685008}, //
+
27211 {5.61976671, 2.92834997}, //
+
27212 {5.62169456, 2.9298501}, //
+
27213 {5.62345552, 2.93134999}, //
+
27214 {5.62505007, 2.93284988}, //
+
27215 {5.62651873, 2.93436122}, //
+
27216 {5.62790203, 2.93587232}, //
+
27217 {5.62919998, 2.93738341}, //
+
27218 {5.63041306, 2.93889451}, //
+
27219 {5.63154078, 2.94040561}, //
+
27220 {5.63258314, 2.9419167}, //
+
27221 {5.63354063, 2.9434278}, //
+
27222 {5.63441277, 2.9449389}, //
+
27223 {5.63520002, 2.94645}, //
+
27224 {5.63593435, 2.94859076}, //
+
27225 {5.6366272, 2.95047975}, //
+
27226 {5.6372776, 2.95211673}, //
+
27227 {5.63788652, 2.95350194}, //
+
27228 {5.63845301, 2.95463514}, //
+
27229 {5.638978, 2.95551658}, //
+
27230 {5.63946056, 2.95614624}, //
+
27231 {5.63990116, 2.95652413}, //
+
27232 {5.6402998, 2.95665002}, //
+
27233 {5.64124441, 2.95665002}, //
+
27234 {5.6414752, 2.95665002}, //
+
27235 {5.64166403, 2.95665002}, //
+
27236 {5.6420002, 2.95665002}, //
+
27237 {5.64195824, 2.9544673}, //
+
27238 {5.64183187, 2.95245242}, //
+
27239 {5.64162207, 2.95060563}, //
+
27240 {5.64132833, 2.94892645}, //
+
27241 {5.64095068, 2.94741535}, //
+
27242 {5.6404891, 2.94607234}, //
+
27243 {5.63994312, 2.94489694}, //
+
27244 {5.6393137, 2.94388962}, //
+
27245 {5.63859987, 2.94304991}, //
+
27246 {5.63788652, 2.94229507}, //
+
27247 {5.63725662, 2.94154143}, //
+
27248 {5.63671112, 2.94078898}, //
+
27249 {5.63624954, 2.94003773}, //
+
27250 {5.63587141, 2.93928766}, //
+
27251 {5.63557768, 2.93853879}, //
+
27252 {5.63536787, 2.93779135}, //
+
27253 {5.63524199, 2.9370451}, //
+
27254 {5.63520002, 2.93630004}, //
+
27255 {5.63447571, 2.93485188}, //
+
27256 {5.6337924, 2.93352962}, //
+
27257 {5.6331501, 2.93233323}, //
+
27258 {5.63254833, 2.93126297}, //
+
27259 {5.63198709, 2.93031859}, //
+
27260 {5.63146687, 2.9295001}, //
+
27261 {5.63098717, 2.9288075}, //
+
27262 {5.630548, 2.92824078}, //
+
27263 {5.63014984, 2.92779994}, //
+
27264 {5.62987661, 2.92748523}, //
+
27265 {5.62981176, 2.9272964}, //
+
27266 {5.62995577, 2.92723322}, //
+
27267 {5.63030815, 2.9272964}, //
+
27268 {5.63086891, 2.92748523}, //
+
27269 {5.631639, 2.92779994}, //
+
27270 {5.63261747, 2.92824078}, //
+
27271 {5.63380432, 2.9288075}, //
+
27272 {5.63520002, 2.9295001}, //
+
27273 {5.63671112, 2.93096852}, //
+
27274 {5.63822222, 2.93235183}, //
+
27275 {5.63973331, 2.93365002}, //
+
27276 {5.64124441, 2.93486285}, //
+
27277 {5.64275551, 2.93599081}, //
+
27278 {5.64426661, 2.93703341}, //
+
27279 {5.6457777, 2.93799067}, //
+
27280 {5.6472888, 2.93886304}, //
+
27281 {5.6487999, 2.93965006}, //
+
27282 {5.65025854, 2.94038463}, //
+
27283 {5.65163469, 2.94107723}, //
+
27284 {5.65292788, 2.94172788}, //
+
27285 {5.65413809, 2.94233632}, //
+
27286 {5.65526628, 2.94290304}, //
+
27287 {5.65631104, 2.9434278}, //
+
27288 {5.65727329, 2.9439106}, //
+
27289 {5.65815306, 2.9443512}, //
+
27290 {5.65894985, 2.94475007}, //
+
27291 {5.65962172, 2.94506478}, //
+
27292 {5.66012526, 2.94525361}, //
+
27293 {5.66046095, 2.94531655}, //
+
27294 {5.6606288, 2.94525361}, //
+
27295 {5.6606288, 2.94506478}, //
+
27296 {5.66046095, 2.94475007}, //
+
27297 {5.66012526, 2.94430923}, //
+
27298 {5.65962172, 2.94374251}, //
+
27299 {5.65894985, 2.94304991}, //
+
27300 {5.65819454, 2.9415493}, //
+
27301 {5.65743876, 2.9400475}, //
+
27302 {5.65668344, 2.93854451}, //
+
27303 {5.65592766, 2.93704009}, //
+
27304 {5.65517235, 2.93553448}, //
+
27305 {5.65441656, 2.93402767}, //
+
27306 {5.65366125, 2.93251967}, //
+
27307 {5.65290546, 2.93101048}, //
+
27308 {5.65215015, 2.9295001}, //
+
27309 {5.65144682, 2.92874455}, //
+
27310 {5.65082645, 2.92798901}, //
+
27311 {5.65028906, 2.92723322}, //
+
27312 {5.64983416, 2.92647767}, //
+
27313 {5.64946175, 2.92572212}, //
+
27314 {5.64917231, 2.92496657}, //
+
27315 {5.64896536, 2.92421103}, //
+
27316 {5.64884138, 2.92345548}, //
+
27317 {5.6487999, 2.92269993}, //
+
27318 {5.64884138, 2.92199683}, //
+
27319 {5.64896536, 2.92137647}, //
+
27320 {5.64917231, 2.92083883}, //
+
27321 {5.64946175, 2.92038393}, //
+
27322 {5.64983416, 2.92001176}, //
+
27323 {5.65028906, 2.91972232}, //
+
27324 {5.65082645, 2.91951537}, //
+
27325 {5.65144682, 2.91939139}, //
+
27326 {5.65215015, 2.91934991}, //
+
27327 {5.65292645, 2.91937041}, //
+
27328 {5.65374517, 2.91943145}, //
+
27329 {5.65460539, 2.91953325}, //
+
27330 {5.65550804, 2.91967583}, //
+
27331 {5.65645266, 2.91985917}, //
+
27332 {5.65743876, 2.92008328}, //
+
27333 {5.65846729, 2.92034817}, //
+
27334 {5.65953779, 2.92065382}, //
+
27335 {5.66064978, 2.921}, //
+
27336 {5.66348314, 2.92194438}, //
+
27337 {5.66417599, 2.92217541}, //
+
27338 {5.66474247, 2.92236423}, //
+
27339 {5.66518354, 2.9225111}, //
+
27340 {5.66568708, 2.92267895}, //
+
27341 {5.66575003, 2.92269993}, //
+
27342 {5.66648388, 2.92339253}, //
+
27343 {5.66717482, 2.92395926}, //
+
27344 {5.66782236, 2.92440009}, //
+
27345 {5.66842651, 2.9247148}, //
+
27346 {5.66898775, 2.92490363}, //
+
27347 {5.6695056, 2.92496657}, //
+
27348 {5.66998005, 2.92490363}, //
+
27349 {5.67041159, 2.9247148}, //
+
27350 {5.67080021, 2.92440009}, //
+
27351 {5.6711154, 2.92404318}, //
+
27352 {5.67130613, 2.92372847}, //
+
27353 {5.67137241, 2.92345548}, //
+
27354 {5.67131376, 2.92322469}, //
+
27355 {5.67113018, 2.92303586}, //
+
27356 {5.67082214, 2.92288899}, //
+
27357 {5.67038965, 2.92278385}, //
+
27358 {5.66983223, 2.92272091}, //
+
27359 {5.66914988, 2.92269993}, //
+
27360 {5.66839457, 2.92119932}, //
+
27361 {5.66763878, 2.91969752}, //
+
27362 {5.66688347, 2.91819453}, //
+
27363 {5.66612768, 2.91669011}, //
+
27364 {5.66537237, 2.9151845}, //
+
27365 {5.66461658, 2.91367769}, //
+
27366 {5.66386127, 2.91216969}, //
+
27367 {5.66310549, 2.91066051}, //
+
27368 {5.66235018, 2.90914989}, //
+
27369 {5.66161537, 2.90837336}, //
+
27370 {5.660923, 2.90755486}, //
+
27371 {5.66027212, 2.90669441}, //
+
27372 {5.65966368, 2.905792}, //
+
27373 {5.65909672, 2.90484762}, //
+
27374 {5.6585722, 2.90386105}, //
+
27375 {5.65808964, 2.90283275}, //
+
27376 {5.65764856, 2.90176225}, //
+
27377 {5.65724993, 2.90065002}, //
+
27378 {5.65680981, 2.89950609}, //
+
27379 {5.65624523, 2.89831924}, //
+
27380 {5.65555573, 2.897089}, //
+
27381 {5.65474129, 2.89581537}, //
+
27382 {5.65380239, 2.89449883}, //
+
27383 {5.65273905, 2.89313889}, //
+
27384 {5.65155077, 2.89173579}, //
+
27385 {5.65023756, 2.89028955}, //
+
27386 {5.6487999, 2.88879991}, //
+
27387 {5.64657593, 2.88734126}, //
+
27388 {5.64443684, 2.88596535}, //
+
27389 {5.6423831, 2.88467216}, //
+
27390 {5.64041471, 2.88346171}, //
+
27391 {5.63853168, 2.88233399}, //
+
27392 {5.63673353, 2.88128901}, //
+
27393 {5.63502026, 2.88032651}, //
+
27394 {5.63339281, 2.87944698}, //
+
27395 {5.63184977, 2.87864995}, //
+
27396 {5.63038063, 2.8778944}, //
+
27397 {5.6289959, 2.87713885}, //
+
27398 {5.62769461, 2.8763833}, //
+
27399 {5.62647724, 2.87562776}, //
+
27400 {5.6253438, 2.87487221}, //
+
27401 {5.62429428, 2.87411666}, //
+
27402 {5.62332916, 2.87336111}, //
+
27403 {5.62244749, 2.87260556}, //
+
27404 {5.62165022, 2.87185001}, //
+
27405 {5.62156582, 2.87041235}, //
+
27406 {5.62131405, 2.86909938}, //
+
27407 {5.62089443, 2.8679111}, //
+
27408 {5.62030697, 2.86684752}, //
+
27409 {5.61955118, 2.86590862}, //
+
27410 {5.61862755, 2.86509442}, //
+
27411 {5.61753654, 2.86440492}, //
+
27412 {5.61627722, 2.8638401}, //
+
27413 {5.61485004, 2.86339998}, //
+
27414 {5.61337042, 2.86300135}, //
+
27415 {5.61193132, 2.86256051}, //
+
27416 {5.61053324, 2.86207771}, //
+
27417 {5.60917616, 2.86155319}, //
+
27418 {5.60785913, 2.86098647}, //
+
27419 {5.60658312, 2.86037779}, //
+
27420 {5.60534811, 2.85972714}, //
+
27421 {5.60415363, 2.85903454}, //
+
27422 {5.60300016, 2.85829997}, //
+
27423 {5.60186672, 2.8575654}, //
+
27424 {5.60073328, 2.8568728}, //
+
27425 {5.59959984, 2.85622215}, //
+
27426 {5.59846687, 2.85561347}, //
+
27427 {5.59733343, 2.85504699}, //
+
27428 {5.59619999, 2.85452223}, //
+
27429 {5.59506655, 2.85403943}, //
+
27430 {5.59393311, 2.85359883}, //
+
27431 {5.59280014, 2.85319996}, //
+
27432 {5.59171915, 2.85284328}, //
+
27433 {5.59072113, 2.85252833}, //
+
27434 {5.5898056, 2.85225558}, //
+
27435 {5.58897305, 2.85202479}, //
+
27436 {5.58822298, 2.85183573}, //
+
27437 {5.58755541, 2.85168886}, //
+
27438 {5.58697081, 2.85158396}, //
+
27439 {5.58646917, 2.85152102}, //
+
27440 {5.58605003, 2.85150003}, //
+
27441 });
+
27442 polys.push_back({
+
27443 {5.96221113, 2.52788877}, //
+
27444 {5.96523333, 2.52486658}, //
+
27445 {5.96598911, 2.52411103}, //
+
27446 {5.96674442, 2.52335548}, //
+
27447 {5.96750021, 2.52259994}, //
+
27448 {5.96825552, 2.52181292}, //
+
27449 {5.96901131, 2.52094078}, //
+
27450 {5.96976662, 2.51998329}, //
+
27451 {5.9705224, 2.51894069}, //
+
27452 {5.97127771, 2.51781297}, //
+
27453 {5.9720335, 2.51659989}, //
+
27454 {5.97278881, 2.51530194}, //
+
27455 {5.9735446, 2.5139184}, //
+
27456 {5.97429991, 2.51244998}, //
+
27457 {5.97434139, 2.51169443}, //
+
27458 {5.97446537, 2.51093888}, //
+
27459 {5.97467232, 2.51018333}, //
+
27460 {5.97496176, 2.50942779}, //
+
27461 {5.97533417, 2.50867224}, //
+
27462 {5.97578907, 2.50791669}, //
+
27463 {5.97632647, 2.50716114}, //
+
27464 {5.97694683, 2.50640559}, //
+
27465 {5.97765017, 2.50565004}, //
+
27466 {5.97844744, 2.50490499}, //
+
27467 {5.97932911, 2.50415874}, //
+
27468 {5.98029423, 2.50341105}, //
+
27469 {5.98134375, 2.50266242}, //
+
27470 {5.98247719, 2.50191236}, //
+
27471 {5.98369455, 2.5011611}, //
+
27472 {5.98499584, 2.50040865}, //
+
27473 {5.98638105, 2.49965501}, //
+
27474 {5.98785019, 2.49889994}, //
+
27475 {5.98931837, 2.49814439}, //
+
27476 {5.99070168, 2.49738884}, //
+
27477 {5.9920001, 2.49663329}, //
+
27478 {5.99321318, 2.49587774}, //
+
27479 {5.9943409, 2.49512219}, //
+
27480 {5.99538326, 2.49436665}, //
+
27481 {5.99634075, 2.4936111}, //
+
27482 {5.99721289, 2.49285555}, //
+
27483 {5.99800014, 2.4921}, //
+
27484 {5.99875546, 2.49134517}, //
+
27485 {5.99951124, 2.49059129}, //
+
27486 {6.00026655, 2.48983884}, //
+
27487 {6.00102234, 2.48908758}, //
+
27488 {6.00177765, 2.48833776}, //
+
27489 {6.00253344, 2.48758888}, //
+
27490 {6.00328875, 2.48684144}, //
+
27491 {6.00404453, 2.48609495}, //
+
27492 {6.00479984, 2.48534989}, //
+
27493 {6.00488377, 2.4838388}, //
+
27494 {6.00513601, 2.4823277}, //
+
27495 {6.00555563, 2.4808166}, //
+
27496 {6.00614309, 2.47930551}, //
+
27497 {6.00689888, 2.47779441}, //
+
27498 {6.00782204, 2.47628331}, //
+
27499 {6.00891352, 2.47477221}, //
+
27500 {6.01017284, 2.47326112}, //
+
27501 {6.01160002, 2.47175002}, //
+
27502 {6.01303768, 2.47098398}, //
+
27503 {6.01435041, 2.47017479}, //
+
27504 {6.01553869, 2.4693222}, //
+
27505 {6.01660252, 2.46842647}, //
+
27506 {6.01754141, 2.46748757}, //
+
27507 {6.01835537, 2.46650553}, //
+
27508 {6.01904488, 2.46548033}, //
+
27509 {6.01960993, 2.46441174}, //
+
27510 {6.02005005, 2.46329999}, //
+
27511 {6.02044868, 2.46218777}, //
+
27512 {6.02088928, 2.46111727}, //
+
27513 {6.02137232, 2.46008897}, //
+
27514 {6.02189684, 2.45910239}, //
+
27515 {6.0224638, 2.45815802}, //
+
27516 {6.02307224, 2.4572556}, //
+
27517 {6.02372265, 2.45639515}, //
+
27518 {6.02441549, 2.45557666}, //
+
27519 {6.02514982, 2.45479989}, //
+
27520 {6.02519178, 2.45404506}, //
+
27521 {6.02531767, 2.45329142}, //
+
27522 {6.02552795, 2.45253897}, //
+
27523 {6.02582169, 2.45178771}, //
+
27524 {6.02619934, 2.45103765}, //
+
27525 {6.02666092, 2.45028877}, //
+
27526 {6.0272069, 2.44954133}, //
+
27527 {6.02783632, 2.44879508}, //
+
27528 {6.02855015, 2.44805002}, //
+
27529 {6.02925301, 2.44729447}, //
+
27530 {6.02987337, 2.44653893}, //
+
27531 {6.03041124, 2.44578338}, //
+
27532 {6.03086615, 2.44502783}, //
+
27533 {6.03123808, 2.44427228}, //
+
27534 {6.031528, 2.44351673}, //
+
27535 {6.03173447, 2.44276118}, //
+
27536 {6.03185844, 2.44200563}, //
+
27537 {6.03189993, 2.44125009}, //
+
27538 {6.0326767, 2.43975997}, //
+
27539 {6.03349495, 2.43831182}, //
+
27540 {6.03435564, 2.43690562}, //
+
27541 {6.03525782, 2.43554139}, //
+
27542 {6.03620243, 2.43421912}, //
+
27543 {6.03718901, 2.43293881}, //
+
27544 {6.03821707, 2.43170071}, //
+
27545 {6.03928757, 2.43050432}, //
+
27546 {6.04040003, 2.4293499}, //
+
27547 {6.04151249, 2.42824817}, //
+
27548 {6.04258251, 2.42718697}, //
+
27549 {6.04361105, 2.42616677}, //
+
27550 {6.04459763, 2.42518711}, //
+
27551 {6.04554176, 2.42424822}, //
+
27552 {6.04644442, 2.4233501}, //
+
27553 {6.04730511, 2.4224925}, //
+
27554 {6.04812336, 2.42167592}, //
+
27555 {6.04890013, 2.42090011}, //
+
27556 {6.0489831, 2.41942048}, //
+
27557 {6.04923344, 2.41798139}, //
+
27558 {6.04965019, 2.4165833}, //
+
27559 {6.05023336, 2.41522598}, //
+
27560 {6.05098343, 2.4139092}, //
+
27561 {6.05189991, 2.41263342}, //
+
27562 {6.05298328, 2.41139817}, //
+
27563 {6.05423355, 2.4102037}, //
+
27564 {6.05565023, 2.40904999}, //
+
27565 {6.05716038, 2.40793777}, //
+
27566 {6.05866957, 2.40686727}, //
+
27567 {6.0601778, 2.40583897}, //
+
27568 {6.06168461, 2.40485239}, //
+
27569 {6.06318998, 2.40390801}, //
+
27570 {6.0646944, 2.4030056}, //
+
27571 {6.0661974, 2.40214515}, //
+
27572 {6.06769943, 2.40132666}, //
+
27573 {6.06920004, 2.40054989}, //
+
27574 {6.06917906, 2.39981532}, //
+
27575 {6.06911612, 2.39912295}, //
+
27576 {6.06901121, 2.39847231}, //
+
27577 {6.06886435, 2.39786363}, //
+
27578 {6.06867552, 2.39729691}, //
+
27579 {6.06844425, 2.39677215}, //
+
27580 {6.0681715, 2.39628959}, //
+
27581 {6.06785679, 2.39584875}, //
+
27582 {6.06750011, 2.39545012}, //
+
27583 {6.06711149, 2.39506173}, //
+
27584 {6.06668043, 2.39463019}, //
+
27585 {6.0662055, 2.3941555}, //
+
27586 {6.06512642, 2.39307666}, //
+
27587 {6.06452227, 2.39247227}, //
+
27588 {6.06387472, 2.39182472}, //
+
27589 {6.06318378, 2.39113402}, //
+
27590 {6.06244993, 2.39039993}, //
+
27591 {6.06167364, 2.38964438}, //
+
27592 {6.06085491, 2.38888884}, //
+
27593 {6.05999422, 2.38813329}, //
+
27594 {6.05909204, 2.38737774}, //
+
27595 {6.05814743, 2.38662219}, //
+
27596 {6.05716133, 2.38586664}, //
+
27597 {6.05613279, 2.38511109}, //
+
27598 {6.05506229, 2.38435555}, //
+
27599 {6.05394983, 2.3836}, //
+
27600 {6.05286932, 2.38286543}, //
+
27601 {6.05187082, 2.38217282}, //
+
27602 {6.05095577, 2.38152218}, //
+
27603 {6.05012274, 2.3809135}, //
+
27604 {6.04937267, 2.38034701}, //
+
27605 {6.04870558, 2.37982225}, //
+
27606 {6.04812098, 2.37933946}, //
+
27607 {6.04761934, 2.37889886}, //
+
27608 {6.0472002, 2.37849998}, //
+
27609 {6.04684305, 2.3781538}, //
+
27610 {6.04652834, 2.37784815}, //
+
27611 {6.04625559, 2.37758327}, //
+
27612 {6.0460248, 2.37735915}, //
+
27613 {6.04583597, 2.37717581}, //
+
27614 {6.04568911, 2.37703323}, //
+
27615 {6.04558372, 2.37693143}, //
+
27616 {6.04552078, 2.37687039}, //
+
27617 {6.0454998, 2.37684989}, //
+
27618 {6.04537392, 2.37693334}, //
+
27619 {6.04499626, 2.37718344}, //
+
27620 {6.04436684, 2.37759995}, //
+
27621 {6.04348516, 2.37818336}, //
+
27622 {6.04096651, 2.37984991}, //
+
27623 {6.03932953, 2.38093328}, //
+
27624 {6.03744078, 2.38218331}, //
+
27625 {6.03529978, 2.3836}, //
+
27626 {6.03444004, 2.38435555}, //
+
27627 {6.03337145, 2.38511109}, //
+
27628 {6.03209448, 2.38586664}, //
+
27629 {6.03060865, 2.38662219}, //
+
27630 {6.02891397, 2.38737774}, //
+
27631 {6.02701092, 2.38813329}, //
+
27632 {6.02489948, 2.38888884}, //
+
27633 {6.02257919, 2.38964438}, //
+
27634 {6.02005005, 2.39039993}, //
+
27635 {6.0173955, 2.39111352}, //
+
27636 {6.01469946, 2.39174318}, //
+
27637 {6.01196098, 2.39228892}, //
+
27638 {6.00918102, 2.3927505}, //
+
27639 {6.00635862, 2.3931284}, //
+
27640 {6.00349426, 2.39342213}, //
+
27641 {6.00058842, 2.39363217}, //
+
27642 {5.99764013, 2.39375806}, //
+
27643 {5.99464989, 2.39380002}, //
+
27644 {5.99240446, 2.39369512}, //
+
27645 {5.99020052, 2.39338017}, //
+
27646 {5.98803902, 2.39285564}, //
+
27647 {5.985919, 2.39212108}, //
+
27648 {5.98384142, 2.39117646}, //
+
27649 {5.98180532, 2.39002228}, //
+
27650 {5.97981167, 2.38865805}, //
+
27651 {5.97785997, 2.38708401}, //
+
27652 {5.97594976, 2.38529992}, //
+
27653 {5.97396708, 2.38344264}, //
+
27654 {5.97177458, 2.38162589}, //
+
27655 {5.96937227, 2.37984991}, //
+
27656 {5.96675968, 2.3781147}, //
+
27657 {5.96393776, 2.37642026}, //
+
27658 {5.96090555, 2.37476659}, //
+
27659 {5.95766354, 2.37315369}, //
+
27660 {5.95421171, 2.37158155}, //
+
27661 {5.95055008, 2.37004995}, //
+
27662 {5.94339991, 2.36290002}, //
+
27663 {5.94084644, 2.36034632}, //
+
27664 {5.93820763, 2.3577075}, //
+
27665 {5.93548346, 2.35498333}, //
+
27666 {5.93267393, 2.35217404}, //
+
27667 {5.92977953, 2.34927964}, //
+
27668 {5.92679977, 2.34629989}, //
+
27669 {5.92366314, 2.34391856}, //
+
27670 {5.92027426, 2.34128523}, //
+
27671 {5.91663313, 2.33839989}, //
+
27672 {5.91274071, 2.33526301}, //
+
27673 {5.90859652, 2.33187413}, //
+
27674 {5.90420008, 2.32823324}, //
+
27675 {5.89955187, 2.32434082}, //
+
27676 {5.89465189, 2.32019639}, //
+
27677 {5.88950014, 2.31579995}, //
+
27678 {5.88431644, 2.31125689}, //
+
27679 {5.87930012, 2.30667162}, //
+
27680 {5.87445021, 2.30204439}, //
+
27681 {5.86976671, 2.2973752}, //
+
27682 {5.86525011, 2.29266429}, //
+
27683 {5.86089993, 2.28791118}, //
+
27684 {5.85671663, 2.2831161}, //
+
27685 {5.85270023, 2.27827907}, //
+
27686 {5.84884977, 2.27340007}, //
+
27687 {5.84529257, 2.26874065}, //
+
27688 {5.84215355, 2.26454067}, //
+
27689 {5.83943319, 2.26079988}, //
+
27690 {5.83796692, 2.25870919}, //
+
27691 {5.83865023, 2.2581501}, //
+
27692 {5.83860779, 2.25808692}, //
+
27693 {5.8384819, 2.25789809}, //
+
27694 {5.83827209, 2.25758338}, //
+
27695 {5.83797836, 2.25714254}, //
+
27696 {5.83713865, 2.25588322}, //
+
27697 {5.83659315, 2.25506473}, //
+
27698 {5.8352499, 2.25305009}, //
+
27699 {5.83446312, 2.25190616}, //
+
27700 {5.83359051, 2.25071907}, //
+
27701 {5.8326335, 2.24948883}, //
+
27702 {5.83207035, 2.24880099}, //
+
27703 {5.83190012, 2.24799991}, //
+
27704 {5.83163214, 2.24826598}, //
+
27705 {5.83207035, 2.24880099}, //
+
27706 {5.83210945, 2.24898529}, //
+
27707 {5.83273697, 2.25042963}, //
+
27708 {5.83378315, 2.2523334}, //
+
27709 {5.83524799, 2.25469637}, //
+
27710 {5.8371315, 2.25751853}, //
+
27711 {5.83796692, 2.25870919}, //
+
27712 {5.80297184, 2.28734779}, //
+
27713 {5.80172205, 2.28924441}, //
+
27714 {5.79994154, 2.29188085}, //
+
27715 {5.79811716, 2.29451609}, //
+
27716 {5.79624987, 2.2971499}, //
+
27717 {5.7943716, 2.29974127}, //
+
27718 {5.79249191, 2.30224872}, //
+
27719 {5.79061127, 2.30467224}, //
+
27720 {5.78872919, 2.30701184}, //
+
27721 {5.78684568, 2.30926728}, //
+
27722 {5.78496122, 2.3114388}, //
+
27723 {5.78307533, 2.31352663}, //
+
27724 {5.78118849, 2.3155303}, //
+
27725 {5.77930021, 2.31745005}, //
+
27726 {5.77596188, 2.32080793}, //
+
27727 {5.77460575, 2.32217216}, //
+
27728 {5.77178907, 2.32500553}, //
+
27729 {5.77126741, 2.32553029}, //
+
27730 {5.77095413, 2.325845}, //
+
27731 {5.77085018, 2.32594991}, //
+
27732 {5.78779984, 2.33275008}, //
+
27733 {5.78796721, 2.33289623}, //
+
27734 {5.78846931, 2.33333516}, //
+
27735 {5.79047632, 2.33509064}, //
+
27736 {5.79382229, 2.33801675}, //
+
27737 {5.79599714, 2.33991861}, //
+
27738 {5.79850626, 2.34211302}, //
+
27739 {5.80135012, 2.34459996}, //
+
27740 {5.80440331, 2.34724379}, //
+
27741 {5.80753994, 2.34988642}, //
+
27742 {5.81076097, 2.35252786}, //
+
27743 {5.81406593, 2.35516787}, //
+
27744 {5.81745481, 2.35780668}, //
+
27745 {5.82092762, 2.36044455}, //
+
27746 {5.82448435, 2.36308098}, //
+
27747 {5.82812548, 2.36571598}, //
+
27748 {5.83185005, 2.36835003}, //
+
27749 {5.83564806, 2.37096238}, //
+
27750 {5.83948708, 2.37353277}, //
+
27751 {5.84336662, 2.3760612}, //
+
27752 {5.84728718, 2.37854743}, //
+
27753 {5.85124826, 2.38099194}, //
+
27754 {5.85524988, 2.38339448}, //
+
27755 {5.85929251, 2.38575482}, //
+
27756 {5.86337614, 2.38807344}, //
+
27757 {5.86749983, 2.3903501}, //
+
27758 {5.87153959, 2.39253283}, //
+
27759 {5.87536907, 2.39454746}, //
+
27760 {5.87898874, 2.39639449}, //
+
27761 {5.88239861, 2.39807343}, //
+
27762 {5.88559866, 2.39958453}, //
+
27763 {5.88858891, 2.40092778}, //
+
27764 {5.89136934, 2.40210319}, //
+
27765 {5.8939395, 2.4031105}, //
+
27766 {5.89629984, 2.40394998}, //
+
27767 {5.89855576, 2.40474701}, //
+
27768 {5.9008112, 2.40562654}, //
+
27769 {5.90306664, 2.40658879}, //
+
27770 {5.90532207, 2.40763402}, //
+
27771 {5.90757799, 2.40876174}, //
+
27772 {5.90983343, 2.40997219}, //
+
27773 {5.91208887, 2.41126537}, //
+
27774 {5.91434431, 2.41264129}, //
+
27775 {5.91660023, 2.41409993}, //
+
27776 {5.91886616, 2.41565251}, //
+
27777 {5.92113066, 2.41728759}, //
+
27778 {5.92339468, 2.41900563}, //
+
27779 {5.9256568, 2.42080617}, //
+
27780 {5.92791796, 2.42268944}, //
+
27781 {5.93017769, 2.42465544}, //
+
27782 {5.93243647, 2.42670441}, //
+
27783 {5.93469381, 2.42883587}, //
+
27784 {5.93695021, 2.43105006}, //
+
27785 {5.93919516, 2.43325305}, //
+
27786 {5.94139671, 2.43532896}, //
+
27787 {5.94355536, 2.43727779}, //
+
27788 {5.94567108, 2.43909931}, //
+
27789 {5.94774342, 2.44079375}, //
+
27790 {5.94977236, 2.44236112}, //
+
27791 {5.95175791, 2.44380116}, //
+
27792 {5.95370054, 2.44511414}, //
+
27793 {5.95559978, 2.44630003}, //
+
27794 {5.95738411, 2.44737029}, //
+
27795 {5.95895815, 2.44831491}, //
+
27796 {5.96368027, 2.45114803}, //
+
27797 {5.96409988, 2.45140004}, //
+
27798 {5.96401596, 2.45152521}, //
+
27799 {5.96376419, 2.4519012}, //
+
27800 {5.96334457, 2.45252776}, //
+
27801 {5.96275663, 2.4534049}, //
+
27802 {5.96107769, 2.45591116}, //
+
27803 {5.95998621, 2.45754004}, //
+
27804 {5.95872736, 2.45941973}, //
+
27805 {5.95730019, 2.46155}, //
+
27806 {5.95575809, 2.4638586}, //
+
27807 {5.95413208, 2.46625113}, //
+
27808 {5.95242214, 2.46872783}, //
+
27809 {5.95062828, 2.4712882}, //
+
27810 {5.9487505, 2.47393274}, //
+
27811 {5.94678879, 2.47666121}, //
+
27812 {5.94474316, 2.47947335}, //
+
27813 {5.9426136, 2.48236966}, //
+
27814 {5.94040012, 2.48534989}, //
+
27815 {5.93882608, 2.48817277}, //
+
27816 {5.93712616, 2.49061918}, //
+
27817 {5.93529987, 2.49268889}, //
+
27818 {5.93334818, 2.49438214}, //
+
27819 {5.9312706, 2.49569869}, //
+
27820 {5.92906666, 2.49663877}, //
+
27821 {5.92673683, 2.4972024}, //
+
27822 {5.9242816, 2.49738955}, //
+
27823 {5.9217, 2.49720001}, //
+
27824 {5.91904545, 2.49675918}, //
+
27825 {5.91634941, 2.49619269}, //
+
27826 {5.91361094, 2.49550009}, //
+
27827 {5.91083097, 2.4946816}, //
+
27828 {5.90800858, 2.49373698}, //
+
27829 {5.90514421, 2.49266672}, //
+
27830 {5.90223837, 2.49147034}, //
+
27831 {5.89929008, 2.49014807}, //
+
27832 {5.89629984, 2.48869991}, //
+
27833 {5.89485168, 2.48801732}, //
+
27834 {5.89352942, 2.48745799}, //
+
27835 {5.89233351, 2.48702216}, //
+
27836 {5.89126301, 2.48670983}, //
+
27837 {5.89031839, 2.48652101}, //
+
27838 {5.88950014, 2.48645544}, //
+
27839 {5.8888073, 2.48651361}, //
+
27840 {5.88824081, 2.48669505}, //
+
27841 {5.88780022, 2.48699999}, //
+
27842 {5.88751602, 2.48741984}, //
+
27843 {5.88739777, 2.48792338}, //
+
27844 {5.8874445, 2.48851109}, //
+
27845 {5.88765669, 2.48918271}, //
+
27846 {5.88803434, 2.48993826}, //
+
27847 {5.88857794, 2.49077773}, //
+
27848 {5.88928652, 2.49170113}, //
+
27849 {5.89016056, 2.49270868}, //
+
27850 {5.89120007, 2.49379992}, //
+
27851 {5.89235353, 2.49493265}, //
+
27852 {5.89354801, 2.49606419}, //
+
27853 {5.8947835, 2.49719453}, //
+
27854 {5.89605904, 2.49832344}, //
+
27855 {5.89737606, 2.49945116}, //
+
27856 {5.89873314, 2.50057769}, //
+
27857 {5.9001317, 2.50170302}, //
+
27858 {5.90157032, 2.50282717}, //
+
27859 {5.90304995, 2.50395012}, //
+
27860 {5.90451908, 2.5051043}, //
+
27861 {5.90590429, 2.50630069}, //
+
27862 {5.90720558, 2.5075388}, //
+
27863 {5.90842295, 2.5088191}, //
+
27864 {5.90955639, 2.51014137}, //
+
27865 {5.91060543, 2.5115056}, //
+
27866 {5.91157103, 2.5129118}, //
+
27867 {5.9124527, 2.51435995}, //
+
27868 {5.91324997, 2.51585007}, //
+
27869 {5.91329193, 2.51585007}, //
+
27870 {5.91341782, 2.51585007}, //
+
27871 {5.91362762, 2.51585007}, //
+
27872 {5.91429949, 2.51585007}, //
+
27873 {5.91476107, 2.51585007}, //
+
27874 {5.91664982, 2.51585007}, //
+
27875 {5.91802454, 2.5180223}, //
+
27876 {5.91914892, 2.52002788}, //
+
27877 {5.92002201, 2.52186656}, //
+
27878 {5.92064524, 2.52353883}, //
+
27879 {5.92101717, 2.52504444}, //
+
27880 {5.92113876, 2.5263834}, //
+
27881 {5.92101002, 2.52755547}, //
+
27882 {5.92063046, 2.52856112}, //
+
27883 {5.92000008, 2.52940011}, //
+
27884 {5.91919184, 2.5301137}, //
+
27885 {5.91825676, 2.53074312}, //
+
27886 {5.91719437, 2.53128886}, //
+
27887 {5.91600513, 2.53175068}, //
+
27888 {5.91468811, 2.53212833}, //
+
27889 {5.91324425, 2.5324223}, //
+
27890 {5.91167355, 2.53263211}, //
+
27891 {5.90997553, 2.532758}, //
+
27892 {5.9081502, 2.53279996}, //
+
27893 {5.90629244, 2.532758}, //
+
27894 {5.90447569, 2.53263211}, //
+
27895 {5.90269995, 2.5324223}, //
+
27896 {5.90096474, 2.53212833}, //
+
27897 {5.89927053, 2.53175068}, //
+
27898 {5.89761686, 2.53128886}, //
+
27899 {5.89600372, 2.53074312}, //
+
27900 {5.89443159, 2.5301137}, //
+
27901 {5.89289999, 2.52940011}, //
+
27902 {5.88733768, 2.52897954}, //
+
27903 {5.8826952, 2.52922964}, //
+
27904 {5.87897205, 2.53014994}, //
+
27905 {5.8761692, 2.53174067}, //
+
27906 {5.8742857, 2.53400183}, //
+
27907 {5.87332201, 2.53693342}, //
+
27908 {5.87327862, 2.54053521}, //
+
27909 {5.87415409, 2.54480743}, //
+
27910 {5.87594986, 2.54975009}, //
+
27911 {5.87586594, 2.55117726}, //
+
27912 {5.87561417, 2.55243635}, //
+
27913 {5.87519455, 2.55352783}, //
+
27914 {5.87460661, 2.55445123}, //
+
27915 {5.8738513, 2.55520678}, //
+
27916 {5.87292767, 2.55579448}, //
+
27917 {5.87183619, 2.55621409}, //
+
27918 {5.87057734, 2.5564661}, //
+
27919 {5.86915016, 2.55655003}, //
+
27920 {5.86762857, 2.5564661}, //
+
27921 {5.86606359, 2.55621409}, //
+
27922 {5.8644557, 2.55579448}, //
+
27923 {5.86280441, 2.55520678}, //
+
27924 {5.86110973, 2.55445123}, //
+
27925 {5.85937214, 2.55352783}, //
+
27926 {5.85759115, 2.55243635}, //
+
27927 {5.85576725, 2.55117726}, //
+
27928 {5.85389996, 2.54975009}, //
+
27929 {5.85200071, 2.54823899}, //
+
27930 {5.85005808, 2.5467279}, //
+
27931 {5.84807205, 2.54521656}, //
+
27932 {5.84604311, 2.54370546}, //
+
27933 {5.84397078, 2.54219437}, //
+
27934 {5.84185553, 2.54068327}, //
+
27935 {5.83969688, 2.53917217}, //
+
27936 {5.83749485, 2.53766108}, //
+
27937 {5.8352499, 2.53614998}, //
+
27938 {5.83307791, 2.53460813}, //
+
27939 {5.83107233, 2.53298211}, //
+
27940 {5.82923317, 2.53127217}, //
+
27941 {5.8275609, 2.52947831}, //
+
27942 {5.82605553, 2.52760053}, //
+
27943 {5.82471657, 2.52563882}, //
+
27944 {5.8235445, 2.52359319}, //
+
27945 {5.82253885, 2.52146363}, //
+
27946 {5.8217001, 2.51924992}, //
+
27947 {5.82008457, 2.51759267}, //
+
27948 {5.81826067, 2.51564264}, //
+
27949 {5.81622791, 2.51340008}, //
+
27950 {5.8139863, 2.51086473}, //
+
27951 {5.81153631, 2.50803709}, //
+
27952 {5.80887794, 2.50491667}, //
+
27953 {5.80601072, 2.50150371}, //
+
27954 {5.80293465, 2.4977982}, //
+
27955 {5.79965019, 2.49379992}, //
+
27956 {5.79624033, 2.48959255}, //
+
27957 {5.79278851, 2.48525929}, //
+
27958 {5.78929424, 2.48079991}, //
+
27959 {5.7857585, 2.47621489}, //
+
27960 {5.78218079, 2.47150373}, //
+
27961 {5.77856112, 2.4666667}, //
+
27962 {5.77489948, 2.46170378}, //
+
27963 {5.77119589, 2.45661473}, //
+
27964 {5.76744986, 2.45140004}, //
+
27965 {5.76374578, 2.44623709}, //
+
27966 {5.76016617, 2.44128156}, //
+
27967 {5.75671101, 2.43653345}, //
+
27968 {5.75338078, 2.43199253}, //
+
27969 {5.75017548, 2.42765927}, //
+
27970 {5.74709463, 2.42353344}, //
+
27971 {5.74413824, 2.41961479}, //
+
27972 {5.74130678, 2.41590381}, //
+
27973 {5.73859978, 2.41240001}, //
+
27974 {5.73611307, 2.40919948}, //
+
27975 {5.73391867, 2.40637541}, //
+
27976 {5.73201656, 2.4039278}, //
+
27977 {5.73040724, 2.4018569}, //
+
27978 {5.72806644, 2.39884448}, //
+
27979 {5.72733498, 2.3979032}, //
+
27980 {5.72689629, 2.39733839}, //
+
27981 {5.7267499, 2.39715004}, //
+
27982 {5.63859987, 2.48534989}, //
+
27983 {5.63937616, 2.48539138}, //
+
27984 {5.64019251, 2.48551536}, //
+
27985 {5.64104986, 2.4857223}, //
+
27986 {5.64194822, 2.48601174}, //
+
27987 {5.64288712, 2.48638391}, //
+
27988 {5.64386654, 2.48683882}, //
+
27989 {5.64488697, 2.48737645}, //
+
27990 {5.64594793, 2.48799682}, //
+
27991 {5.6470499, 2.48869991}, //
+
27992 {5.64826679, 2.48951793}, //
+
27993 {5.6496501, 2.4904604}, //
+
27994 {5.65119982, 2.4915278}, //
+
27995 {5.65291643, 2.49271965}, //
+
27996 {5.65479994, 2.49403644}, //
+
27997 {5.65684986, 2.49547768}, //
+
27998 {5.65906668, 2.49704385}, //
+
27999 {5.66144991, 2.49873447}, //
+
28000 {5.66400003, 2.50055003}, //
+
28001 {5.66679096, 2.50258517}, //
+
28002 {5.66987419, 2.50491285}, //
+
28003 {5.6732502, 2.50753331}, //
+
28004 {5.67691851, 2.51044631}, //
+
28005 {5.68087959, 2.51365185}, //
+
28006 {5.68513346, 2.51714993}, //
+
28007 {5.68967962, 2.52094078}, //
+
28008 {5.69451857, 2.52502418}, //
+
28009 {5.69964981, 2.52940011}, //
+
28010 {5.70257711, 2.53230667}, //
+
28011 {5.70533657, 2.53500485}, //
+
28012 {5.7079277, 2.53749442}, //
+
28013 {5.71035147, 2.53977537}, //
+
28014 {5.71260691, 2.54184747}, //
+
28015 {5.7146945, 2.54371119}, //
+
28016 {5.71661425, 2.54536605}, //
+
28017 {5.71836615, 2.5468123}, //
+
28018 {5.7199502, 2.54804993}, //
+
28019 {5.72141933, 2.54918265}, //
+
28020 {5.72280455, 2.55031419}, //
+
28021 {5.72410536, 2.55144453}, //
+
28022 {5.72532272, 2.55257344}, //
+
28023 {5.72645617, 2.55370116}, //
+
28024 {5.72750568, 2.55482769}, //
+
28025 {5.7284708, 2.55595303}, //
+
28026 {5.72935247, 2.55707717}, //
+
28027 {5.73015022, 2.55819988}, //
+
28028 {5.73090553, 2.55927038}, //
+
28029 {5.73166132, 2.56021476}, //
+
28030 {5.73241663, 2.56103325}, //
+
28031 {5.73317242, 2.56172585}, //
+
28032 {5.73392773, 2.56229258}, //
+
28033 {5.73468351, 2.56273341}, //
+
28034 {5.73543882, 2.56304812}, //
+
28035 {5.73619461, 2.56323695}, //
+
28036 {5.73694992, 2.56329989}, //
+
28037 {5.73699141, 2.56405544}, //
+
28038 {5.73711538, 2.56481123}, //
+
28039 {5.73732233, 2.56556678}, //
+
28040 {5.73761177, 2.56632233}, //
+
28041 {5.73798418, 2.56707788}, //
+
28042 {5.73843908, 2.56783342}, //
+
28043 {5.73897648, 2.56858897}, //
+
28044 {5.73959684, 2.56934452}, //
+
28045 {5.74030018, 2.57010007}, //
+
28046 {5.74105549, 2.57085562}, //
+
28047 {5.74181128, 2.57161117}, //
+
28048 {5.74256659, 2.57236671}, //
+
28049 {5.74332237, 2.57312226}, //
+
28050 {5.74407768, 2.57387781}, //
+
28051 {5.74483347, 2.57463336}, //
+
28052 {5.74634457, 2.57614446}, //
+
28053 {5.74709988, 2.57690001}, //
+
28054 {5.75237799, 2.58220935}, //
+
28055 {5.75765562, 2.58760381}, //
+
28056 {5.76293325, 2.59308338}, //
+
28057 {5.76821089, 2.59864807}, //
+
28058 {5.773489, 2.60429811}, //
+
28059 {5.77876663, 2.61003327}, //
+
28060 {5.78404427, 2.61585379}, //
+
28061 {5.78932238, 2.62175918}, //
+
28062 {5.79460001, 2.62774992}, //
+
28063 {5.79605865, 2.63006854}, //
+
28064 {5.79743433, 2.63251305}, //
+
28065 {5.79872799, 2.63508344}, //
+
28066 {5.7999382, 2.63777971}, //
+
28067 {5.80106592, 2.64060187}, //
+
28068 {5.80211115, 2.64354992}, //
+
28069 {5.80307341, 2.64662409}, //
+
28070 {5.80395317, 2.64982414}, //
+
28071 {5.80474997, 2.65315008}, //
+
28072 {5.80550575, 2.65656042}, //
+
28073 {5.80626106, 2.66001415}, //
+
28074 {5.80701685, 2.66351104}, //
+
28075 {5.80777216, 2.66705132}, //
+
28076 {5.80852795, 2.67063451}, //
+
28077 {5.80928326, 2.67426109}, //
+
28078 {5.81003904, 2.67793083}, //
+
28079 {5.81079435, 2.68164372}, //
+
28080 {5.81155014, 2.68540001}, //
+
28081 {5.812253, 2.68908262}, //
+
28082 {5.81287336, 2.69259763}, //
+
28083 {5.81341124, 2.69594455}, //
+
28084 {5.81386614, 2.69912338}, //
+
28085 {5.81423807, 2.70213461}, //
+
28086 {5.81452799, 2.70497775}, //
+
28087 {5.81473446, 2.70765305}, //
+
28088 {5.81483459, 2.70967627}, //
+
28089 {5.81452227, 2.71037459}, //
+
28090 {5.81376648, 2.71210551}, //
+
28091 {5.81301117, 2.71387839}, //
+
28092 {5.81225538, 2.71569324}, //
+
28093 {5.81150007, 2.71755004}, //
+
28094 {5.81071281, 2.71945977}, //
+
28095 {5.80984068, 2.72141171}, //
+
28096 {5.80888319, 2.7234056}, //
+
28097 {5.80784082, 2.72544146}, //
+
28098 {5.8067131, 2.72751904}, //
+
28099 {5.80550003, 2.72963881}, //
+
28100 {5.80420208, 2.73180056}, //
+
28101 {5.8028183, 2.73400426}, //
+
28102 {5.80135012, 2.73624992}, //
+
28103 {5.79700422, 2.74059558}, //
+
28104 {5.79110622, 2.74649382}, //
+
28105 {5.78930569, 2.74829435}, //
+
28106 {5.78439999, 2.75320005}, //
+
28107 {5.78222799, 2.75397587}, //
+
28108 {5.78022242, 2.75479269}, //
+
28109 {5.77838326, 2.75565004}, //
+
28110 {5.77671099, 2.75654817}, //
+
28111 {5.77520561, 2.75748706}, //
+
28112 {5.77386665, 2.75846672}, //
+
28113 {5.77269459, 2.75948715}, //
+
28114 {5.77168894, 2.76054811}, //
+
28115 {5.77085018, 2.76165009}, //
+
28116 {5.77013636, 2.76280427}, //
+
28117 {5.76950693, 2.76400065}, //
+
28118 {5.76896095, 2.765239}, //
+
28119 {5.76849937, 2.76651907}, //
+
28120 {5.76812172, 2.76784134}, //
+
28121 {5.76782799, 2.76920557}, //
+
28122 {5.7676177, 2.77061176}, //
+
28123 {5.76749182, 2.77205992}, //
+
28124 {5.76744986, 2.77355003}, //
+
28125 {5.76736593, 2.77635193}, //
+
28126 {5.76711416, 2.77873516}, //
+
28127 {5.76669455, 2.78069997}, //
+
28128 {5.76610661, 2.78224635}, //
+
28129 {5.7653513, 2.78337407}, //
+
28130 {5.76442766, 2.78408337}, //
+
28131 {5.76333618, 2.784374}, //
+
28132 {5.76207733, 2.78424621}, //
+
28133 {5.76065016, 2.78369999}, //
+
28134 {5.75910759, 2.78290319}, //
+
28135 {5.75747967, 2.78202343}, //
+
28136 {5.75576687, 2.78106117}, //
+
28137 {5.75396872, 2.78001595}, //
+
28138 {5.75208521, 2.77888823}, //
+
28139 {5.75011683, 2.77767777}, //
+
28140 {5.74806309, 2.77638459}, //
+
28141 {5.745924, 2.77500868}, //
+
28142 {5.74370003, 2.77355003}, //
+
28143 {5.74299669, 2.77279449}, //
+
28144 {5.74237633, 2.77203894}, //
+
28145 {5.74183893, 2.77128339}, //
+
28146 {5.74138403, 2.77052784}, //
+
28147 {5.74101162, 2.76977229}, //
+
28148 {5.74072218, 2.76901674}, //
+
28149 {5.74051523, 2.76826119}, //
+
28150 {5.74039125, 2.76750565}, //
+
28151 {5.74034977, 2.7667501}, //
+
28152 {5.73890162, 2.76603651}, //
+
28153 {5.73757982, 2.76540685}, //
+
28154 {5.73638344, 2.76486111}, //
+
28155 {5.73531294, 2.76439929}, //
+
28156 {5.73436832, 2.76402164}, //
+
28157 {5.73355007, 2.76372766}, //
+
28158 {5.73285723, 2.76351786}, //
+
28159 {5.73229074, 2.76339197}, //
+
28160 {5.73185015, 2.76335001}, //
+
28161 {5.731493, 2.76335001}, //
+
28162 {5.73117828, 2.76335001}, //
+
28163 {5.73015022, 2.76335001}, //
+
28164 {5.73015022, 2.76351786}, //
+
28165 {5.73015022, 2.76372766}, //
+
28166 {5.73015022, 2.76402164}, //
+
28167 {5.73015022, 2.7701056}, //
+
28168 {5.73015022, 2.77203321}, //
+
28169 {5.73015022, 2.77412772}, //
+
28170 {5.73015022, 2.78710008}, //
+
28171 {5.7300868, 2.78848529}, //
+
28172 {5.72989798, 2.78961849}, //
+
28173 {5.72958326, 2.79049993}, //
+
28174 {5.72914267, 2.79112959}, //
+
28175 {5.72857571, 2.79150748}, //
+
28176 {5.72788334, 2.79163337}, //
+
28177 {5.72706461, 2.79150748}, //
+
28178 {5.72612047, 2.79112959}, //
+
28179 {5.72504997, 2.79049993}, //
+
28180 {5.72390604, 2.78961921}, //
+
28181 {5.72271919, 2.78848767}, //
+
28182 {5.72148895, 2.78710556}, //
+
28183 {5.72021532, 2.78547287}, //
+
28184 {5.71889877, 2.7835896}, //
+
28185 {5.71753883, 2.78145552}, //
+
28186 {5.71613598, 2.77907109}, //
+
28187 {5.71468973, 2.77643585}, //
+
28188 {5.71320009, 2.77355003}, //
+
28189 {5.71090174, 2.77052832}, //
+
28190 {5.70851851, 2.76750803}, //
+
28191 {5.70604992, 2.76448894}, //
+
28192 {5.70349646, 2.76147103}, //
+
28193 {5.70085764, 2.75845432}, //
+
28194 {5.69813347, 2.7554388}, //
+
28195 {5.69532394, 2.75242472}, //
+
28196 {5.69242954, 2.74941182}, //
+
28197 {5.68944979, 2.74640012}, //
+
28198 {5.68493843, 2.74166846}, //
+
28199 {5.68042517, 2.73651862}, //
+
28200 {5.67591095, 2.73095012}, //
+
28201 {5.67139578, 2.72496295}, //
+
28202 {5.66687918, 2.71855736}, //
+
28203 {5.66236115, 2.71173334}, //
+
28204 {5.65784216, 2.70449066}, //
+
28205 {5.65332174, 2.69682956}, //
+
28206 {5.6487999, 2.68875003}, //
+
28207 {5.64276743, 2.68130064}, //
+
28208 {5.63673592, 2.6740191}, //
+
28209 {5.63070536, 2.66690564}, //
+
28210 {5.6246767, 2.65995979}, //
+
28211 {5.61864853, 2.65318203}, //
+
28212 {5.61262226, 2.64657211}, //
+
28213 {5.60659695, 2.64013028}, //
+
28214 {5.60057306, 2.63385606}, //
+
28215 {5.59455013, 2.62774992}, //
+
28216 {5.59163284, 2.62333202}, //
+
28217 {5.58892536, 2.61912274}, //
+
28218 {5.58642769, 2.61512232}, //
+
28219 {5.5841403, 2.61133027}, //
+
28220 {5.58206224, 2.60774684}, //
+
28221 {5.58019447, 2.60437226}, //
+
28222 {5.57853651, 2.60120606}, //
+
28223 {5.57708836, 2.59824872}, //
+
28224 {5.57585001, 2.59549999}, //
+
28225 {5.57476902, 2.59292912}, //
+
28226 {5.573771, 2.59048271}, //
+
28227 {5.57285547, 2.58816123}, //
+
28228 {5.57202291, 2.5859642}, //
+
28229 {5.57127285, 2.58389187}, //
+
28230 {5.57060575, 2.58194447}, //
+
28231 {5.57002115, 2.58012152}, //
+
28232 {5.56951904, 2.5784235}, //
+
28233 {5.5690999, 2.57684994}, //
+
28234 {5.56874323, 2.57543325}, //
+
28235 {5.56815577, 2.57310009}, //
+
28236 {5.56773567, 2.57143331}, //
+
28237 {5.56758881, 2.5708499}, //
+
28238 {5.5674839, 2.57043338}, //
+
28239 {5.56739998, 2.57010007}, //
+
28240 {5.45214987, 2.67860007}, //
+
28241 {5.45214987, 2.68199992}, //
+
28242 {5.45217037, 2.6820209}, //
+
28243 {5.45223141, 2.68208385}, //
+
28244 {5.45233345, 2.68218899}, //
+
28245 {5.45247602, 2.68233585}, //
+
28246 {5.45265913, 2.68252468}, //
+
28247 {5.45288324, 2.68275547}, //
+
28248 {5.45345354, 2.68334317}, //
+
28249 {5.4538002, 2.68370008}, //
+
28250 {5.45417786, 2.68407726}, //
+
28251 {5.45455551, 2.68445301}, //
+
28252 {5.45493317, 2.6848278}, //
+
28253 {5.4553113, 2.68520117}, //
+
28254 {5.45568895, 2.68557334}, //
+
28255 {5.45606661, 2.68594456}, //
+
28256 {5.45644426, 2.68631411}, //
+
28257 {5.4568224, 2.6866827}, //
+
28258 {5.45720005, 2.6870501}, //
+
28259 {5.45759869, 2.68746972}, //
+
28260 {5.45803928, 2.6879735}, //
+
28261 {5.45852232, 2.6885612}, //
+
28262 {5.45904684, 2.68923283}, //
+
28263 {5.4596138, 2.68998837}, //
+
28264 {5.46022224, 2.69082785}, //
+
28265 {5.46087265, 2.69175124}, //
+
28266 {5.46156549, 2.69275856}, //
+
28267 {5.46229982, 2.69385004}, //
+
28268 {5.46305513, 2.69496179}, //
+
28269 {5.46380854, 2.69603014}, //
+
28270 {5.46456099, 2.69705558}, //
+
28271 {5.46531248, 2.69803762}, //
+
28272 {5.46606255, 2.69897652}, //
+
28273 {5.46681118, 2.69987226}, //
+
28274 {5.46755886, 2.7007246}, //
+
28275 {5.46830511, 2.70153403}, //
+
28276 {5.46904993, 2.70230007}, //
+
28277 {5.46984768, 2.70309758}, //
+
28278 {5.47072887, 2.70397902}, //
+
28279 {5.47169447, 2.70494437}, //
+
28280 {5.47274399, 2.70599389}, //
+
28281 {5.47387695, 2.70712709}, //
+
28282 {5.47509432, 2.70834446}, //
+
28283 {5.47778082, 2.71103096}, //
+
28284 {5.47924995, 2.7125001}, //
+
28285 {5.48328876, 2.71567845}, //
+
28286 {5.48787212, 2.71919131}, //
+
28287 {5.49300003, 2.72303891}, //
+
28288 {5.49867201, 2.72722101}, //
+
28289 {5.50488901, 2.73173761}, //
+
28290 {5.51165009, 2.73658895}, //
+
28291 {5.51895571, 2.7417748}, //
+
28292 {5.5268054, 2.74729514}, //
+
28293 {5.53520012, 2.75314999}, //
+
28294 {5.54388714, 2.75916171}, //
+
28295 {5.55261469, 2.76513028}, //
+
28296 {5.56138325, 2.77105546}, //
+
28297 {5.57019281, 2.77693772}, //
+
28298 {5.57904243, 2.78277659}, //
+
28299 {5.58793354, 2.78857231}, //
+
28300 {5.5968647, 2.79432464}, //
+
28301 {5.60583687, 2.80003405}, //
+
28302 {5.61485004, 2.80570006}, //
+
28303 {5.62360144, 2.81116724}, //
+
28304 {5.63176584, 2.81625795}, //
+
28305 {5.63934422, 2.8209722}, //
+
28306 {5.64633656, 2.82530999}, //
+
28307 {5.65274191, 2.82927108}, //
+
28308 {5.65856123, 2.83285546}, //
+
28309 {5.66379404, 2.83606362}, //
+
28310 {5.66844034, 2.83889508}, //
+
28311 {5.67250013, 2.84135008}, //
+
28312 {5.67464066, 2.84210491}, //
+
28313 {5.67652941, 2.84285855}, //
+
28314 {5.67816687, 2.843611}, //
+
28315 {5.67955208, 2.84436226}, //
+
28316 {5.68068504, 2.84511232}, //
+
28317 {5.68156672, 2.8458612}, //
+
28318 {5.68219614, 2.84660864}, //
+
28319 {5.68257427, 2.84735489}, //
+
28320 {5.68270016, 2.84809995}, //
+
28321 {5.68261623, 2.8488555}, //
+
28322 {5.68236399, 2.84961104}, //
+
28323 {5.68194437, 2.85036659}, //
+
28324 {5.68135691, 2.85112214}, //
+
28325 {5.68060112, 2.85187769}, //
+
28326 {5.67967796, 2.85263324}, //
+
28327 {5.67858648, 2.85338879}, //
+
28328 {5.67732716, 2.85414433}, //
+
28329 {5.67589998, 2.85489988}, //
+
28330 {5.67439938, 2.85561347}, //
+
28331 {5.67289734, 2.85624313}, //
+
28332 {5.67139435, 2.85678887}, //
+
28333 {5.66988993, 2.85725069}, //
+
28334 {5.66838455, 2.85762835}, //
+
28335 {5.66687775, 2.85792232}, //
+
28336 {5.66536999, 2.85813212}, //
+
28337 {5.66386032, 2.85825801}, //
+
28338 {5.66235018, 2.85829997}, //
+
28339 {5.66159439, 2.85901356}, //
+
28340 {5.66083908, 2.85964322}, //
+
28341 {5.66008329, 2.86018896}, //
+
28342 {5.65932798, 2.86065054}, //
+
28343 {5.6585722, 2.86102843}, //
+
28344 {5.65781689, 2.86132216}, //
+
28345 {5.6570611, 2.86153221}, //
+
28346 {5.65630579, 2.8616581}, //
+
28347 {5.65555, 2.86170006}, //
+
28348 {5.6487999, 2.86170006}, //
+
28349 {5.64812756, 2.86247587}, //
+
28350 {5.64762211, 2.86329269}, //
+
28351 {5.64728355, 2.86415005}, //
+
28352 {5.64711094, 2.86504817}, //
+
28353 {5.64710569, 2.86598706}, //
+
28354 {5.64726686, 2.86696672}, //
+
28355 {5.64759445, 2.86798716}, //
+
28356 {5.64808893, 2.86904812}, //
+
28357 {5.64874983, 2.87015009}, //
+
28358 {5.64954758, 2.87126231}, //
+
28359 {5.65042925, 2.87233281}, //
+
28360 {5.65139437, 2.87336111}, //
+
28361 {5.65244389, 2.87434745}, //
+
28362 {5.65357733, 2.87529206}, //
+
28363 {5.65479422, 2.87619448}, //
+
28364 {5.6560955, 2.87705493}, //
+
28365 {5.65748072, 2.87787342}, //
+
28366 {5.65894985, 2.87864995}, //
+
28367 {5.66046047, 2.88015056}, //
+
28368 {5.66196966, 2.88165236}, //
+
28369 {5.6634779, 2.88315558}, //
+
28370 {5.6649847, 2.88465977}, //
+
28371 {5.66649008, 2.88616538}, //
+
28372 {5.6679945, 2.88767219}, //
+
28373 {5.66949749, 2.88918018}, //
+
28374 {5.67099953, 2.89068961}, //
+
28375 {5.67250013, 2.89219999}, //
+
28376 {5.67323446, 2.89293456}, //
+
28377 {5.67392731, 2.89362717}, //
+
28378 {5.67457771, 2.89427781}, //
+
28379 {5.67518663, 2.89488649}, //
+
28380 {5.67575312, 2.89545298}, //
+
28381 {5.67627764, 2.89597774}, //
+
28382 {5.67676067, 2.89646053}, //
+
28383 {5.67720127, 2.89690113}, //
+
28384 {5.67759991, 2.8973}, //
+
28385 {5.67795658, 2.89765668}, //
+
28386 {5.67827177, 2.89797163}, //
+
28387 {5.67854452, 2.89824438}, //
+
28388 {5.67896414, 2.89866424}, //
+
28389 {5.67921591, 2.89891601}, //
+
28390 {5.67927885, 2.89897895}, //
+
28391 {5.67929983, 2.89899993}, //
+
28392 {5.67892218, 2.89899993}, //
+
28393 {5.67862844, 2.89899993}, //
+
28394 {5.67825079, 2.89899993}, //
+
28395 {5.67778873, 2.89899993}, //
+
28396 {5.67724323, 2.89899993}, //
+
28397 {5.67661381, 2.89899993}, //
+
28398 {5.67589998, 2.89899993}, //
+
28399 {5.675879, 2.89971352}, //
+
28400 {5.67581606, 2.90034318}, //
+
28401 {5.67571115, 2.90088892}, //
+
28402 {5.67556429, 2.9013505}, //
+
28403 {5.67537546, 2.90172839}, //
+
28404 {5.67514467, 2.90202212}, //
+
28405 {5.67487144, 2.90223217}, //
+
28406 {5.67455673, 2.90235806}, //
+
28407 {5.67420006, 2.90240002}, //
+
28408 {5.67384338, 2.90244126}, //
+
28409 {5.67352819, 2.90256548}, //
+
28410 {5.67325544, 2.90277219}, //
+
28411 {5.67302465, 2.90306163}, //
+
28412 {5.67283583, 2.90343404}, //
+
28413 {5.67268896, 2.90388894}, //
+
28414 {5.67258406, 2.90442657}, //
+
28415 {5.67252111, 2.90504694}, //
+
28416 {5.67250013, 2.90575004}, //
+
28417 {5.67256308, 2.90646362}, //
+
28418 {5.6727519, 2.90709329}, //
+
28419 {5.67306662, 2.90763879}, //
+
28420 {5.67350721, 2.90810061}, //
+
28421 {5.67407417, 2.9084785}, //
+
28422 {5.67476654, 2.90877223}, //
+
28423 {5.67558527, 2.90898204}, //
+
28424 {5.67652941, 2.90910792}, //
+
28425 {5.67759991, 2.90914989}, //
+
28426 {5.67871189, 2.90908694}, //
+
28427 {5.67978048, 2.90889812}, //
+
28428 {5.68080568, 2.9085834}, //
+
28429 {5.68178749, 2.90814257}, //
+
28430 {5.68272638, 2.90757585}, //
+
28431 {5.68362236, 2.90688324}, //
+
28432 {5.68447447, 2.90606475}, //
+
28433 {5.68528414, 2.90512037}, //
+
28434 {5.68604994, 2.90405011}, //
+
28435 {5.68676376, 2.90290618}, //
+
28436 {5.68739319, 2.90171909}, //
+
28437 {5.68793869, 2.90048885}, //
+
28438 {5.68840075, 2.89921546}, //
+
28439 {5.6887784, 2.89789867}, //
+
28440 {5.68907213, 2.89653897}, //
+
28441 {5.68928194, 2.89513588}, //
+
28442 {5.68940783, 2.89368939}, //
+
28443 {5.68944979, 2.89219999}, //
+
28444 {5.68947077, 2.89009023}, //
+
28445 {5.68953419, 2.88827157}, //
+
28446 {5.68963909, 2.8867445}, //
+
28447 {5.68978596, 2.88550854}, //
+
28448 {5.68997478, 2.88456416}, //
+
28449 {5.69020557, 2.88391113}, //
+
28450 {5.69047832, 2.88354945}, //
+
28451 {5.69079304, 2.88347912}, //
+
28452 {5.69115019, 2.88369989}, //
+
28453 {5.69167423, 2.88422465}, //
+
28454 {5.69249058, 2.88504314}, //
+
28455 {5.69360018, 2.88615561}, //
+
28456 {5.69500208, 2.8875618}, //
+
28457 {5.69669628, 2.88926172}, //
+
28458 {5.69868326, 2.89125562}, //
+
28459 {5.70096302, 2.89354324}, //
+
28460 {5.70353508, 2.8961246}, //
+
28461 {5.70639992, 2.89899993}, //
+
28462 {5.7071557, 2.90039563}, //
+
28463 {5.70791101, 2.90158272}, //
+
28464 {5.7086668, 2.90256119}, //
+
28465 {5.70942211, 2.9033308}, //
+
28466 {5.7101779, 2.90389204}, //
+
28467 {5.71093321, 2.90424442}, //
+
28468 {5.711689, 2.90438819}, //
+
28469 {5.71244431, 2.90432334}, //
+
28470 {5.71320009, 2.90405011}, //
+
28471 {5.71389246, 2.90361977}, //
+
28472 {5.71445942, 2.90306234}, //
+
28473 {5.71490002, 2.90237784}, //
+
28474 {5.71521473, 2.90156603}, //
+
28475 {5.71540356, 2.90062714}, //
+
28476 {5.7154665, 2.89956117}, //
+
28477 {5.71540356, 2.89836788}, //
+
28478 {5.71521473, 2.89704752}, //
+
28479 {5.71490002, 2.89560008}, //
+
28480 {5.71450138, 2.8940475}, //
+
28481 {5.71406031, 2.89241242}, //
+
28482 {5.71357775, 2.89069438}, //
+
28483 {5.71305323, 2.88889384}, //
+
28484 {5.71248627, 2.88701057}, //
+
28485 {5.71187782, 2.88504434}, //
+
28486 {5.71122694, 2.88299561}, //
+
28487 {5.71053457, 2.88086414}, //
+
28488 {5.70979977, 2.87864995}, //
+
28489 {5.70912838, 2.87724376}, //
+
28490 {5.70862484, 2.87604761}, //
+
28491 {5.70828867, 2.87506104}, //
+
28492 {5.70812082, 2.87428451}, //
+
28493 {5.70812082, 2.87371778}, //
+
28494 {5.70828867, 2.87336111}, //
+
28495 {5.70862484, 2.87321424}, //
+
28496 {5.70912838, 2.87327719}, //
+
28497 {5.70979977, 2.87354994}, //
+
28498 {5.71059704, 2.87401104}, //
+
28499 {5.71147633, 2.8746388}, //
+
28500 {5.71243906, 2.87543344}, //
+
28501 {5.71348381, 2.87639451}, //
+
28502 {5.71461153, 2.87752223}, //
+
28503 {5.71582222, 2.8788166}, //
+
28504 {5.7171154, 2.88027787}, //
+
28505 {5.71849155, 2.88190556}, //
+
28506 {5.7199502, 2.88369989}, //
+
28507 {5.72148132, 2.88563013}, //
+
28508 {5.72305393, 2.8876431}, //
+
28509 {5.7246666, 2.8897388}, //
+
28510 {5.72632027, 2.89191723}, //
+
28511 {5.72801495, 2.89417839}, //
+
28512 {5.72975016, 2.89652228}, //
+
28513 {5.7315259, 2.89894867}, //
+
28514 {5.73334265, 2.90145802}, //
+
28515 {5.73519993, 2.90405011}, //
+
28516 {5.73702574, 2.90671492}, //
+
28517 {5.73872614, 2.90942025}, //
+
28518 {5.74030018, 2.9121666}, //
+
28519 {5.74174833, 2.91495371}, //
+
28520 {5.7430706, 2.91778159}, //
+
28521 {5.74426651, 2.92065001}, //
+
28522 {5.74533701, 2.92355919}, //
+
28523 {5.74628162, 2.92650914}, //
+
28524 {5.74709988, 2.9295001}, //
+
28525 {5.74924088, 2.93360305}, //
+
28526 {5.75112963, 2.93686795}, //
+
28527 {5.75276661, 2.93929434}, //
+
28528 {5.75415182, 2.94088268}, //
+
28529 {5.75528526, 2.94163275}, //
+
28530 {5.75616646, 2.94154453}, //
+
28531 {5.75679636, 2.9406178}, //
+
28532 {5.75717402, 2.93885303}, //
+
28533 {5.7572999, 2.93624997}, //
+
28534 {5.75713205, 2.93302965}, //
+
28535 {5.75662851, 2.92939067}, //
+
28536 {5.7557888, 2.92533326}, //
+
28537 {5.7546134, 2.92085743}, //
+
28538 {5.7531023, 2.91596293}, //
+
28539 {5.75125551, 2.91065001}, //
+
28540 {5.74907303, 2.90491843}, //
+
28541 {5.74655437, 2.89876842}, //
+
28542 {5.74370003, 2.89219999}, //
+
28543 {5.74230433, 2.887887}, //
+
28544 {5.74111748, 2.88399267}, //
+
28545 {5.74013901, 2.88051677}, //
+
28546 {5.73936892, 2.87745929}, //
+
28547 {5.73880816, 2.87482047}, //
+
28548 {5.73845577, 2.87260008}, //
+
28549 {5.73831177, 2.87079811}, //
+
28550 {5.73837662, 2.86941481}, //
+
28551 {5.73864985, 2.86844993}, //
+
28552 {5.73908997, 2.86787224}, //
+
28553 {5.73965502, 2.86762786}, //
+
28554 {5.74034452, 2.86771655}, //
+
28555 {5.74115849, 2.86813879}, //
+
28556 {5.74209738, 2.86889434}, //
+
28557 {5.7431612, 2.86998343}, //
+
28558 {5.74434948, 2.8714056}, //
+
28559 {5.74566221, 2.87316108}, //
+
28560 {5.74709988, 2.8752501}, //
+
28561 {5.7486105, 2.87754822}, //
+
28562 {5.75011969, 2.87993145}, //
+
28563 {5.75162792, 2.88240004}, //
+
28564 {5.75313473, 2.88495374}, //
+
28565 {5.7546401, 2.88759255}, //
+
28566 {5.75614452, 2.89031672}, //
+
28567 {5.75764751, 2.89312601}, //
+
28568 {5.75914955, 2.89602041}, //
+
28569 {5.76065016, 2.89899993}, //
+
28570 {5.76283264, 2.90184379}, //
+
28571 {5.76484776, 2.90435314}, //
+
28572 {5.76669455, 2.90652776}, //
+
28573 {5.76837349, 2.90836787}, //
+
28574 {5.76988459, 2.90987349}, //
+
28575 {5.77122784, 2.91104436}, //
+
28576 {5.77240324, 2.91188097}, //
+
28577 {5.77341032, 2.9123826}, //
+
28578 {5.77425003, 2.91254997}, //
+
28579 {5.77496338, 2.91244507}, //
+
28580 {5.77559328, 2.91213036}, //
+
28581 {5.77613878, 2.9116056}, //
+
28582 {5.77660084, 2.91087103}, //
+
28583 {5.77697849, 2.90992665}, //
+
28584 {5.77727222, 2.90877223}, //
+
28585 {5.77748203, 2.907408}, //
+
28586 {5.77760792, 2.90583396}, //
+
28587 {5.77764988, 2.90405011}, //
+
28588 {5.77752399, 2.90215063}, //
+
28589 {5.77714634, 2.900208}, //
+
28590 {5.77651644, 2.89822221}, //
+
28591 {5.77563524, 2.89619327}, //
+
28592 {5.7745018, 2.89412093}, //
+
28593 {5.77311659, 2.89200544}, //
+
28594 {5.77147961, 2.8898468}, //
+
28595 {5.76959085, 2.88764501}, //
+
28596 {5.76744986, 2.88540006}, //
+
28597 {5.76602268, 2.88389945}, //
+
28598 {5.76476336, 2.88239741}, //
+
28599 {5.76367235, 2.88089442}, //
+
28600 {5.76274872, 2.87939024}, //
+
28601 {5.76199341, 2.87788463}, //
+
28602 {5.76140547, 2.87637782}, //
+
28603 {5.76098585, 2.87486982}, //
+
28604 {5.76073408, 2.8733604}, //
+
28605 {5.76065016, 2.87185001}, //
+
28606 {5.76069212, 2.87043333}, //
+
28607 {5.760818, 2.8691833}, //
+
28608 {5.76102781, 2.86809993}, //
+
28609 {5.76132154, 2.86718345}, //
+
28610 {5.7616992, 2.86643338}, //
+
28611 {5.76216125, 2.86584997}, //
+
28612 {5.76270676, 2.86543322}, //
+
28613 {5.76333618, 2.86518335}, //
+
28614 {5.76405001, 2.86509991}, //
+
28615 {5.76482677, 2.86518335}, //
+
28616 {5.76564503, 2.86543322}, //
+
28617 {5.76650572, 2.86584997}, //
+
28618 {5.76740789, 2.86643338}, //
+
28619 {5.76835251, 2.86718345}, //
+
28620 {5.76933908, 2.86809993}, //
+
28621 {5.77036715, 2.8691833}, //
+
28622 {5.77143764, 2.87043333}, //
+
28623 {5.77255011, 2.87185001}, //
+
28624 {5.77370358, 2.87340236}, //
+
28625 {5.77489805, 2.87503767}, //
+
28626 {5.77613354, 2.87675548}, //
+
28627 {5.77740908, 2.87855625}, //
+
28628 {5.7787261, 2.88043952}, //
+
28629 {5.78008318, 2.88240552}, //
+
28630 {5.78148127, 2.88445425}, //
+
28631 {5.78292036, 2.88658571}, //
+
28632 {5.78439999, 2.88879991}, //
+
28633 {5.78446293, 2.89096165}, //
+
28634 {5.78465176, 2.89291358}, //
+
28635 {5.78496647, 2.89465547}, //
+
28636 {5.78540754, 2.89618754}, //
+
28637 {5.78597403, 2.89750981}, //
+
28638 {5.78666687, 2.89862227}, //
+
28639 {5.78748512, 2.89952469}, //
+
28640 {5.78842974, 2.90021729}, //
+
28641 {5.78950024, 2.90070009}, //
+
28642 {5.79061174, 2.90103579}, //
+
28643 {5.79168034, 2.90128756}, //
+
28644 {5.79270554, 2.90145564}, //
+
28645 {5.79368782, 2.90153956}, //
+
28646 {5.79462671, 2.90153956}, //
+
28647 {5.79552221, 2.90145564}, //
+
28648 {5.7963748, 2.90128756}, //
+
28649 {5.79718399, 2.90103579}, //
+
28650 {5.79794979, 2.90070009}, //
+
28651 {5.7986846, 2.90030122}, //
+
28652 {5.79937696, 2.89986038}, //
+
28653 {5.80002785, 2.89937782}, //
+
28654 {5.80063629, 2.89885306}, //
+
28655 {5.80120325, 2.89828634}, //
+
28656 {5.80172777, 2.89767766}, //
+
28657 {5.80221033, 2.89702725}, //
+
28658 {5.80265141, 2.89633465}, //
+
28659 {5.80305004, 2.89560008}, //
+
28660 {5.80340672, 2.89484453}, //
+
28661 {5.80372143, 2.89408898}, //
+
28662 {5.80399466, 2.89333344}, //
+
28663 {5.80422544, 2.89257789}, //
+
28664 {5.80441427, 2.89182234}, //
+
28665 {5.80456114, 2.89106655}, //
+
28666 {5.80466604, 2.890311}, //
+
28667 {5.80472898, 2.88955545}, //
+
28668 {5.80474997, 2.88879991}, //
+
28669 {5.80542183, 2.88709021}, //
+
28670 {5.80592537, 2.88496041}, //
+
28671 {5.80626106, 2.882411}, //
+
28672 {5.80642891, 2.87944198}, //
+
28673 {5.80642891, 2.87605309}, //
+
28674 {5.80626106, 2.87224436}, //
+
28675 {5.80592537, 2.868016}, //
+
28676 {5.80542183, 2.8633678}, //
+
28677 {5.80474997, 2.85829997}, //
+
28678 {5.80474997, 2.84875441}, //
+
28679 {5.80474997, 2.84360552}, //
+
28680 {5.80474997, 2.83820629}, //
+
28681 {5.80474997, 2.8345499}, //
+
28682 {5.80334377, 2.83383632}, //
+
28683 {5.80214739, 2.83320689}, //
+
28684 {5.80116129, 2.83266115}, //
+
28685 {5.80038452, 2.83219934}, //
+
28686 {5.79981804, 2.83182168}, //
+
28687 {5.79946089, 2.83152771}, //
+
28688 {5.79931402, 2.8313179}, //
+
28689 {5.79937696, 2.83119202}, //
+
28690 {5.79965019, 2.83115005}, //
+
28691 {5.80474997, 2.83115005}, //
+
28692 {5.80474997, 2.82665563}, //
+
28693 {5.80474997, 2.82050443}, //
+
28694 {5.80474997, 2.80524635}, //
+
28695 {5.80474997, 2.80316854}, //
+
28696 {5.80474997, 2.8012166}, //
+
28697 {5.80474997, 2.79939079}, //
+
28698 {5.80474997, 2.79611659}, //
+
28699 {5.80474997, 2.79466844}, //
+
28700 {5.80474997, 2.79390001}, //
+
28701 {5.8055048, 2.7947073}, //
+
28702 {5.80625868, 2.79564071}, //
+
28703 {5.80701113, 2.7967}, //
+
28704 {5.80776215, 2.79788518}, //
+
28705 {5.80851221, 2.79919624}, //
+
28706 {5.80926132, 2.80063343}, //
+
28707 {5.81000853, 2.80219626}, //
+
28708 {5.81075478, 2.80388522}, //
+
28709 {5.81150007, 2.80570006}, //
+
28710 {5.81229734, 2.80756783}, //
+
28711 {5.81317902, 2.80939388}, //
+
28712 {5.81414461, 2.81117773}, //
+
28713 {5.81519365, 2.81291986}, //
+
28714 {5.8163271, 2.81461978}, //
+
28715 {5.81754446, 2.81627774}, //
+
28716 {5.81884575, 2.81789374}, //
+
28717 {5.82023096, 2.81946778}, //
+
28718 {5.8217001, 2.8210001}, //
+
28719 {5.82312727, 2.82160854}, //
+
28720 {5.8243866, 2.82192349}, //
+
28721 {5.8254776, 2.82194448}, //
+
28722 {5.82640123, 2.82167149}, //
+
28723 {5.82715702, 2.821105}, //
+
28724 {5.82774448, 2.82024455}, //
+
28725 {5.8281641, 2.81909013}, //
+
28726 {5.82841587, 2.81764197}, //
+
28727 {5.82849979, 2.81590009}, //
+
28728 {5.82845783, 2.8139174}, //
+
28729 {5.82833195, 2.81172466}, //
+
28730 {5.82812214, 2.80932212}, //
+
28731 {5.82782841, 2.80670977}, //
+
28732 {5.82745075, 2.80388761}, //
+
28733 {5.8269887, 2.80085564}, //
+
28734 {5.8264432, 2.79761362}, //
+
28735 {5.82581377, 2.7941618}, //
+
28736 {5.82509995, 2.79049993}, //
+
28737 {5.82371473, 2.78212714}, //
+
28738 {5.82258129, 2.77358651}, //
+
28739 {5.8217001, 2.7648778}, //
+
28740 {5.82107019, 2.75600123}, //
+
28741 {5.82069254, 2.74695683}, //
+
28742 {5.82056665, 2.73774433}, //
+
28743 {5.82069254, 2.72836423}, //
+
28744 {5.82107019, 2.71881604}, //
+
28745 {5.82107258, 2.71878409}, //
+
28746 {5.82113314, 2.71873331}, //
+
28747 {5.82151127, 2.71829247}, //
+
28748 {5.82188892, 2.71772599}, //
+
28749 {5.82226658, 2.71703339}, //
+
28750 {5.82264423, 2.7162149}, //
+
28751 {5.82302237, 2.71527028}, //
+
28752 {5.82340002, 2.71420002}, //
+
28753 {5.82379866, 2.71304631}, //
+
28754 {5.82423973, 2.71185184}, //
+
28755 {5.82472229, 2.71061659}, //
+
28756 {5.82524681, 2.70934081}, //
+
28757 {5.82581377, 2.70802402}, //
+
28758 {5.82642221, 2.70666671}, //
+
28759 {5.82707262, 2.70526862}, //
+
28760 {5.82776546, 2.70382953}, //
+
28761 {5.82849979, 2.7023499}, //
+
28762 {5.82929707, 2.69866657}, //
+
28763 {5.83017635, 2.6951499}, //
+
28764 {5.83113909, 2.69180012}, //
+
28765 {5.83218384, 2.68861675}, //
+
28766 {5.83331156, 2.68560004}, //
+
28767 {5.83452225, 2.68274999}, //
+
28768 {5.83581543, 2.68006659}, //
+
28769 {5.83719158, 2.67755008}, //
+
28770 {5.83865023, 2.67519999}, //
+
28771 {5.83938456, 2.67446542}, //
+
28772 {5.84007692, 2.67377281}, //
+
28773 {5.84072781, 2.67312217}, //
+
28774 {5.84375, 2.67009997}, //
+
28775 {5.84412766, 2.6697433}, //
+
28776 {5.84450579, 2.66942835}, //
+
28777 {5.84488344, 2.6691556}, //
+
28778 {5.8452611, 2.66892481}, //
+
28779 {5.84563875, 2.66873574}, //
+
28780 {5.84601688, 2.66858888}, //
+
28781 {5.84639454, 2.66848397}, //
+
28782 {5.84677219, 2.66842103}, //
+
28783 {5.84714985, 2.66840005}, //
+
28784 {5.84798717, 2.66840005}, //
+
28785 {5.84846687, 2.66840005}, //
+
28786 {5.8489871, 2.66840005}, //
+
28787 {5.84954834, 2.66840005}, //
+
28788 {5.85015011, 2.66840005}, //
+
28789 {5.85079241, 2.66840005}, //
+
28790 {5.85220003, 2.66840005}, //
+
28791 {5.85312271, 2.66911364}, //
+
28792 {5.85438013, 2.6697433}, //
+
28793 {5.85597229, 2.6702888}, //
+
28794 {5.85789871, 2.67075062}, //
+
28795 {5.86015987, 2.67112851}, //
+
28796 {5.86275578, 2.67142224}, //
+
28797 {5.86568594, 2.67163205}, //
+
28798 {5.86895084, 2.67175794}, //
+
28799 {5.87255001, 2.6717999}, //
+
28800 {5.87487888, 2.67091918}, //
+
28801 {5.87733269, 2.66978765}, //
+
28802 {5.87991095, 2.66840553}, //
+
28803 {5.88261414, 2.66677284}, //
+
28804 {5.88544178, 2.66488957}, //
+
28805 {5.88839436, 2.66275549}, //
+
28806 {5.89147139, 2.66037107}, //
+
28807 {5.89467335, 2.65773582}, //
+
28808 {5.89799976, 2.65485001}, //
+
28809 {5.90136766, 2.65171289}, //
+
28810 {5.9046936, 2.64832401}, //
+
28811 {5.90797758, 2.64468336}, //
+
28812 {5.9112196, 2.6407907}, //
+
28813 {5.91441965, 2.63664627}, //
+
28814 {5.91757774, 2.63225007}, //
+
28815 {5.92069387, 2.62760186}, //
+
28816 {5.92376804, 2.62270188}, //
+
28817 {5.92679977, 2.6175499}, //
+
28818 {5.92902422, 2.61529374}, //
+
28819 {5.93116283, 2.61303639}, //
+
28820 {5.93321657, 2.61077785}, //
+
28821 {5.93518496, 2.60851789}, //
+
28822 {5.93706846, 2.60625672}, //
+
28823 {5.93886662, 2.60399437}, //
+
28824 {5.94057941, 2.60173082}, //
+
28825 {5.94220734, 2.59946609}, //
+
28826 {5.9437499, 2.59719992}, //
+
28827 {5.94664574, 2.59427214}, //
+
28828 {5.94928837, 2.59151101}, //
+
28829 {5.9516778, 2.58891678}, //
+
28830 {5.95381403, 2.58648896}, //
+
28831 {5.95569754, 2.5842278}, //
+
28832 {5.95732784, 2.58213329}, //
+
28833 {5.95870495, 2.58020544}, //
+
28834 {5.95982885, 2.57844448}, //
+
28835 {5.96070004, 2.57684994}, //
+
28836 {5.96141338, 2.57539129}, //
+
28837 {5.96204329, 2.57401538}, //
+
28838 {5.96258879, 2.5727222}, //
+
28839 {5.96305084, 2.57151175}, //
+
28840 {5.9634285, 2.57038403}, //
+
28841 {5.96372223, 2.5693388}, //
+
28842 {5.96393204, 2.56837654}, //
+
28843 {5.96405792, 2.56749701}, //
+
28844 {5.96409988, 2.56669998}, //
+
28845 {5.96405792, 2.56594443}, //
+
28846 {5.96393204, 2.56518888}, //
+
28847 {5.96372223, 2.56443334}, //
+
28848 {5.9634285, 2.56367779}, //
+
28849 {5.96305084, 2.56292224}, //
+
28850 {5.96258879, 2.56216669}, //
+
28851 {5.96204329, 2.56141114}, //
+
28852 {5.96141338, 2.56065559}, //
+
28853 {5.96070004, 2.55990005}, //
+
28854 {5.95991278, 2.55911303}, //
+
28855 {5.95904064, 2.55824065}, //
+
28856 {5.95808315, 2.5572834}, //
+
28857 {5.95704079, 2.5562408}, //
+
28858 {5.95591307, 2.55511308}, //
+
28859 {5.95469999, 2.5539}, //
+
28860 {5.95340204, 2.55260181}, //
+
28861 {5.95201874, 2.55121851}, //
+
28862 {5.95055008, 2.54975009}, //
+
28863 {5.94846106, 2.54755688}, //
+
28864 {5.94670534, 2.54548836}, //
+
28865 {5.94528341, 2.54354453}, //
+
28866 {5.94419432, 2.5417254}, //
+
28867 {5.94343901, 2.54003096}, //
+
28868 {5.94301653, 2.53846121}, //
+
28869 {5.94292784, 2.53701615}, //
+
28870 {5.94317245, 2.53569579}, //
+
28871 {5.9437499, 2.53449988}, //
+
28872 {5.9446311, 2.53342962}, //
+
28873 {5.94576216, 2.53248525}, //
+
28874 {5.94714451, 2.53166676}, //
+
28875 {5.9487772, 2.53097415}, //
+
28876 {5.95066071, 2.53040743}, //
+
28877 {5.95279455, 2.52996659}, //
+
28878 {5.95517921, 2.52965188}, //
+
28879 {5.95781422, 2.52946305}, //
+
28880 {5.96070004, 2.52940011}, //
+
28881 {5.96070004, 2.52940011}, //
+
28882 {5.96145535, 2.52864456}, //
+
28883 });
+
28884 polys.push_back({
+
28885 {5.82476425, 2.68422031}, //
+
28886 {5.82491112, 2.68461657}, //
+
28887 {5.82501602, 2.68522048}, //
+
28888 {5.82507896, 2.68603158}, //
+
28889 {5.82509995, 2.6870501}, //
+
28890 {5.82505798, 2.6883297}, //
+
28891 {5.8249321, 2.68990183}, //
+
28892 {5.82472229, 2.69176674}, //
+
28893 {5.82442856, 2.69392419}, //
+
28894 {5.82405043, 2.69637418}, //
+
28895 {5.82358885, 2.69911671}, //
+
28896 {5.82304335, 2.70215178}, //
+
28897 {5.82241344, 2.70547962}, //
+
28898 {5.8217001, 2.70910001}, //
+
28899 {5.82107258, 2.71878409}, //
+
28900 {5.82075548, 2.71904826}, //
+
28901 {5.82037783, 2.71923709}, //
+
28902 {5.82000017, 2.71930003}, //
+
28903 {5.81960106, 2.71921611}, //
+
28904 {5.81916046, 2.7189641}, //
+
28905 {5.8186779, 2.71854448}, //
+
28906 {5.8181529, 2.71795678}, //
+
28907 {5.81758642, 2.71720123}, //
+
28908 {5.81697798, 2.71627784}, //
+
28909 {5.8163271, 2.71518636}, //
+
28910 {5.81563473, 2.71392727}, //
+
28911 {5.81489992, 2.7125001}, //
+
28912 {5.81485844, 2.71016049}, //
+
28913 {5.81483459, 2.70967627}, //
+
28914 {5.81527758, 2.70868587}, //
+
28915 {5.81603336, 2.70703888}, //
+
28916 {5.81678867, 2.70543385}, //
+
28917 {5.81754446, 2.70387101}, //
+
28918 {5.81829977, 2.7023499}, //
+
28919 {5.81903458, 2.69945359}, //
+
28920 {5.81972694, 2.69680929}, //
+
28921 {5.82037783, 2.69441676}, //
+
28922 {5.82098627, 2.692276}, //
+
28923 {5.82155323, 2.69038701}, //
+
28924 {5.82207775, 2.68875003}, //
+
28925 {5.82256031, 2.68736482}, //
+
28926 {5.82300138, 2.68623137}, //
+
28927 {5.82340002, 2.68534994}, //
+
28928 {5.82375669, 2.68470931}, //
+
28929 {5.82407141, 2.68427587}, //
+
28930 {5.82434464, 2.68405008}, //
+
28931 {5.82457542, 2.68403149}, //
+
28932 });
+
28933 polys.push_back({
+
28934 {5.80474997, 2.7918222}, //
+
28935 {5.80474997, 2.79247284}, //
+
28936 {5.80474997, 2.79121351}, //
+
28937 });
+
28938 polys.push_back({
+
28939 {5.80474997, 2.79023886}, //
+
28940 {5.80474997, 2.78982043}, //
+
28941 {5.80474997, 2.78963947}, //
+
28942 {5.80474997, 2.78919888}, //
+
28943 {5.80474997, 2.78899455}, //
+
28944 {5.80474997, 2.78953338}, //
+
28945 {5.80474997, 2.78982043}, //
+
28946 {5.80474997, 2.79012227}, //
+
28947 {5.80474997, 2.79064703}, //
+
28948 });
+
28949 polys.push_back({
+
28950 {5.80474997, 2.78841662}, //
+
28951 {5.80474997, 2.78862214}, //
+
28952 {5.80474997, 2.78837776}, //
+
28953 });
+
28954 polys.push_back({
+
28955 {2.64470005, 2.01740003}, //
+
28956 {2.64528513, 2.01907396}, //
+
28957 {2.64704084, 2.02409625}, //
+
28958 {2.64996672, 2.03246665}, //
+
28959 {2.65186858, 2.03790736}, //
+
28960 {2.65406299, 2.04418516}, //
+
28961 {2.65654993, 2.05130005}, //
+
28962 {2.65941429, 2.05917835}, //
+
28963 {2.66274023, 2.0677247}, //
+
28964 {2.66652775, 2.07693887}, //
+
28965 {2.67077708, 2.08682108}, //
+
28966 {2.67548823, 2.0973711}, //
+
28967 {2.6806612, 2.10858893}, //
+
28968 {2.68629575, 2.12047458}, //
+
28969 {2.69239187, 2.13302851}, //
+
28970 {2.69895005, 2.14625001}, //
+
28971 {2.70332527, 2.15776968}, //
+
28972 {2.70740676, 2.16970682}, //
+
28973 {2.71119452, 2.1820612}, //
+
28974 {2.7146883, 2.1948328}, //
+
28975 {2.71788836, 2.20802164}, //
+
28976 {2.72079444, 2.22162771}, //
+
28977 {2.72340679, 2.23565125}, //
+
28978 {2.72572541, 2.25009203}, //
+
28979 {2.72775006, 2.26495004}, //
+
28980 {2.72957587, 2.27984929}, //
+
28981 {2.73127604, 2.29441428}, //
+
28982 {2.73285007, 2.30864453}, //
+
28983 {2.73429823, 2.32254004}, //
+
28984 {2.73562026, 2.33610129}, //
+
28985 {2.73681664, 2.3493278}, //
+
28986 {2.73788714, 2.36221981}, //
+
28987 {2.73883152, 2.37477708}, //
+
28988 {2.73965001, 2.38700008}, //
+
28989 {2.73965001, 2.39286542}, //
+
28990 {2.73965001, 2.39839506}, //
+
28991 {2.73965001, 2.40358877}, //
+
28992 {2.73965001, 2.42770004}, //
+
28993 {2.74035311, 2.42770004}, //
+
28994 {2.74097347, 2.42770004}, //
+
28995 {2.74151111, 2.42770004}, //
+
28996 {2.74233818, 2.42770004}, //
+
28997 {2.74262786, 2.42770004}, //
+
28998 {2.74295855, 2.42770004}, //
+
28999 {2.74300003, 2.42770004}, //
+
29000 {2.74375558, 2.4338901}, //
+
29001 {2.74451113, 2.4404161}, //
+
29002 {2.74526668, 2.44727778}, //
+
29003 {2.74602222, 2.4544754}, //
+
29004 {2.74677777, 2.46200871}, //
+
29005 {2.74753332, 2.46987772}, //
+
29006 {2.74828887, 2.47808266}, //
+
29007 {2.74904442, 2.48662353}, //
+
29008 {2.74979997, 2.49550009}, //
+
29009 {2.75051355, 2.50454378}, //
+
29010 {2.75114322, 2.51358652}, //
+
29011 {2.75168896, 2.52262783}, //
+
29012 {2.75215054, 2.53166795}, //
+
29013 {2.75252843, 2.54070687}, //
+
29014 {2.75282216, 2.54974437}, //
+
29015 {2.75303221, 2.55878091}, //
+
29016 {2.75315809, 2.56781602}, //
+
29017 {2.75320005, 2.57684994}, //
+
29018 {2.75311613, 2.58560133}, //
+
29019 {2.75286412, 2.59376597}, //
+
29020 {2.75244451, 2.60134435}, //
+
29021 {2.7518568, 2.60833645}, //
+
29022 {2.75110126, 2.61474204}, //
+
29023 {2.75017786, 2.62056112}, //
+
29024 {2.74908638, 2.62579393}, //
+
29025 {2.74782705, 2.63044024}, //
+
29026 {2.74640012, 2.63450003}, //
+
29027 {2.74406052, 2.63902211}, //
+
29028 {2.74155307, 2.64354444}, //
+
29029 {2.73887777, 2.64806676}, //
+
29030 {2.73603463, 2.65258884}, //
+
29031 {2.73302341, 2.65711117}, //
+
29032 {2.72984433, 2.66163325}, //
+
29033 {2.72649741, 2.66615558}, //
+
29034 {2.72298265, 2.67067766}, //
+
29035 {2.71930003, 2.67519999}, //
+
29036 {2.71636176, 2.67894578}, //
+
29037 {2.71359134, 2.68264937}, //
+
29038 {2.710989, 2.68631101}, //
+
29039 {2.70855427, 2.68993092}, //
+
29040 {2.70628762, 2.69350863}, //
+
29041 {2.70418882, 2.69704437}, //
+
29042 {2.70225811, 2.70053816}, //
+
29043 {2.700495, 2.70399022}, //
+
29044 {2.69889998, 2.70740008}, //
+
29045 {2.6974833, 2.7107265}, //
+
29046 {2.69623327, 2.71392846}, //
+
29047 {2.6951499, 2.71700549}, //
+
29048 {2.69423342, 2.71995807}, //
+
29049 {2.69348335, 2.72278571}, //
+
29050 {2.69289994, 2.7254889}, //
+
29051 {2.69248343, 2.7280674}, //
+
29052 {2.69223332, 2.73052096}, //
+
29053 {2.69215012, 2.73285007}, //
+
29054 {2.69361854, 2.73533583}, //
+
29055 {2.69500184, 2.7382822}, //
+
29056 {2.69630003, 2.74168897}, //
+
29057 {2.69751287, 2.74555612}, //
+
29058 {2.69864082, 2.74988389}, //
+
29059 {2.69968343, 2.75467229}, //
+
29060 {2.70064068, 2.75992107}, //
+
29061 {2.70151305, 2.76563025}, //
+
29062 {2.70230007, 2.77180004}, //
+
29063 {2.70305562, 2.77818942}, //
+
29064 {2.70381117, 2.78453588}, //
+
29065 {2.70456672, 2.79083896}, //
+
29066 {2.70532227, 2.79709888}, //
+
29067 {2.70607781, 2.8033154}, //
+
29068 {2.70683336, 2.80948877}, //
+
29069 {2.70758891, 2.81561923}, //
+
29070 {2.70834446, 2.82170606}, //
+
29071 {2.70910001, 2.82774997}, //
+
29072 {2.70977163, 2.8336575}, //
+
29073 {2.71027541, 2.83931303}, //
+
29074 {2.7106111, 2.84471655}, //
+
29075 {2.71077895, 2.84986854}, //
+
29076 {2.71077895, 2.85476851}, //
+
29077 {2.7106111, 2.85941672}, //
+
29078 {2.71027541, 2.86381292}, //
+
29079 {2.70977163, 2.86795735}, //
+
29080 {2.70910001, 2.87185001}, //
+
29081 {2.70836544, 2.87342334}, //
+
29082 {2.70767283, 2.87512159}, //
+
29083 {2.70702219, 2.87694454}, //
+
29084 {2.70641351, 2.87889194}, //
+
29085 {2.70584702, 2.88096428}, //
+
29086 {2.70532227, 2.88316107}, //
+
29087 {2.70483947, 2.88548279}, //
+
29088 {2.70439887, 2.88792896}, //
+
29089 {2.704, 2.89050007}, //
+
29090 {2.70361161, 2.89314389}, //
+
29091 {2.70318031, 2.89578652}, //
+
29092 {2.70270562, 2.89842772}, //
+
29093 {2.70218754, 2.90106797}, //
+
29094 {2.70162654, 2.90370679}, //
+
29095 {2.70102215, 2.90634441}, //
+
29096 {2.7003746, 2.90898085}, //
+
29097 {2.6996839, 2.91161609}, //
+
29098 {2.69895005, 2.9142499}, //
+
29099 {2.69821548, 2.91684127}, //
+
29100 {2.69752288, 2.91934872}, //
+
29101 {2.69687223, 2.92177224}, //
+
29102 {2.69626355, 2.92411184}, //
+
29103 {2.69569683, 2.92636728}, //
+
29104 {2.69517231, 2.9285388}, //
+
29105 {2.69468951, 2.93062663}, //
+
29106 {2.69424868, 2.9326303}, //
+
29107 {2.69385004, 2.93455005}, //
+
29108 {2.69248581, 2.94137096}, //
+
29109 {2.69248414, 2.94137907}, //
+
29110 {2.69248581, 2.94137335}, //
+
29111 {2.69290566, 2.94041109}, //
+
29112 {2.69349313, 2.9393661}, //
+
29113 {2.69424868, 2.93823838}, //
+
29114 {2.69517231, 2.93702769}, //
+
29115 {2.69626355, 2.93573451}, //
+
29116 {2.69752288, 2.9343586}, //
+
29117 {2.69895005, 2.93289995}, //
+
29118 {2.70202398, 2.92814755}, //
+
29119 {2.70522404, 2.92293453}, //
+
29120 {2.70854998, 2.91726112}, //
+
29121 {2.7120018, 2.91112709}, //
+
29122 {2.71557975, 2.90453267}, //
+
29123 {2.71928334, 2.89747787}, //
+
29124 {2.72311306, 2.88996243}, //
+
29125 {2.72706842, 2.88198638}, //
+
29126 {2.73114991, 2.87354994}, //
+
29127 {2.73510623, 2.86469507}, //
+
29128 {2.73868585, 2.8554635}, //
+
29129 {2.741889, 2.84585547}, //
+
29130 {2.74471545, 2.83587098}, //
+
29131 {2.74716544, 2.82550979}, //
+
29132 {2.74923897, 2.81477213}, //
+
29133 {2.75093579, 2.80365801}, //
+
29134 {2.75225616, 2.79216719}, //
+
29135 {2.75320005, 2.7802999}, //
+
29136 {2.75412273, 2.76816106}, //
+
29137 {2.75538015, 2.75585556}, //
+
29138 {2.75697231, 2.74338341}, //
+
29139 {2.75889874, 2.73074436}, //
+
29140 {2.7611599, 2.7179389}, //
+
29141 {2.76375556, 2.70496678}, //
+
29142 {2.76668572, 2.69182777}, //
+
29143 {2.76995063, 2.67852211}, //
+
29144 {2.77355003, 2.66505003}, //
+
29145 {2.77651906, 2.65332103}, //
+
29146 {2.7794044, 2.64075613}, //
+
29147 {2.78220558, 2.62735558}, //
+
29148 {2.78492284, 2.61311913}, //
+
29149 {2.78755617, 2.59804702}, //
+
29150 {2.79010558, 2.58213878}, //
+
29151 {2.79257107, 2.56539512}, //
+
29152 {2.79495239, 2.54781532}, //
+
29153 {2.79725003, 2.52940011}, //
+
29154 {2.79930687, 2.50757599}, //
+
29155 {2.80094385, 2.48579264}, //
+
29156 {2.80216122, 2.46405005}, //
+
29157 {2.80295873, 2.44234824}, //
+
29158 {2.80333638, 2.42068696}, //
+
29159 {2.80329442, 2.39906669}, //
+
29160 {2.8028326, 2.37748694}, //
+
29161 {2.80195117, 2.35594821}, //
+
29162 {2.80064988, 2.33445001}, //
+
29163 {2.79894018, 2.31362152}, //
+
29164 {2.79681039, 2.29409194}, //
+
29165 {2.79426122, 2.27586102}, //
+
29166 {2.79129195, 2.25892901}, //
+
29167 {2.78790307, 2.24329567}, //
+
29168 {2.78409433, 2.22896123}, //
+
29169 {2.77986598, 2.21592522}, //
+
29170 {2.77521801, 2.20418835}, //
+
29171 {2.77014995, 2.1937499}, //
+
29172 {2.76636243, 2.18840933}, //
+
29173 {2.76253271, 2.18294263}, //
+
29174 {2.75866103, 2.17735004}, //
+
29175 {2.75474763, 2.17163157}, //
+
29176 {2.75079203, 2.16578698}, //
+
29177 {2.74679446, 2.15981674}, //
+
29178 {2.74275494, 2.15372038}, //
+
29179 {2.73867345, 2.14749813}, //
+
29180 {2.73455, 2.14115}, //
+
29181 {2.73036361, 2.13474941}, //
+
29182 {2.72609329, 2.12834764}, //
+
29183 {2.72173882, 2.12194443}, //
+
29184 {2.71730065, 2.11554003}, //
+
29185 {2.71277833, 2.10913467}, //
+
29186 {2.70817232, 2.10272789}, //
+
29187 {2.70348215, 2.09631968}, //
+
29188 {2.69870806, 2.08991051}, //
+
29189 {2.69385004, 2.08349991}, //
+
29190 {2.68905497, 2.07722521}, //
+
29191 {2.6844697, 2.07120132}, //
+
29192 {2.68009448, 2.06542778}, //
+
29193 {2.67592907, 2.05990505}, //
+
29194 {2.67197347, 2.05463266}, //
+
29195 {2.66822767, 2.04961109}, //
+
29196 {2.66469193, 2.0448401}, //
+
29197 {2.66136599, 2.04031968}, //
+
29198 {2.65825009, 2.03605008}, //
+
29199 {2.65540624, 2.03213573}, //
+
29200 {2.65289688, 2.02868199}, //
+
29201 {2.65072227, 2.02568889}, //
+
29202 {2.64888215, 2.02315617}, //
+
29203 });
+
29204 polys.push_back({
+
29205 {0.217377782, 2.85114455}, //
+
29206 {0.216286421, 2.85153818}, //
+
29207 {0.215027153, 2.8522234}, //
+
29208 {0.213599995, 2.85319996}, //
+
29209 {0.212141365, 2.85437465}, //
+
29210 {0.210765436, 2.85563207}, //
+
29211 {0.209472224, 2.85697222}, //
+
29212 {0.208261728, 2.8583951}, //
+
29213 {0.207133949, 2.85990071}, //
+
29214 {0.206088886, 2.86148882}, //
+
29215 {0.205126539, 2.86315989}, //
+
29216 {0.204246908, 2.86491346}, //
+
29217 {0.203449994, 2.86675}, //
+
29218 {0.202736422, 2.86861801}, //
+
29219 {0.202106789, 2.87044382}, //
+
29220 {0.201561108, 2.87222767}, //
+
29221 {0.201099381, 2.87396979}, //
+
29222 {0.200721607, 2.87566972}, //
+
29223 {0.200427771, 2.87732768}, //
+
29224 {0.200217903, 2.87894392}, //
+
29225 {0.200091973, 2.88051796}, //
+
29226 {0.200049996, 2.88205004}, //
+
29227 {0.200196296, 2.88355064}, //
+
29228 {0.20063518, 2.88505244}, //
+
29229 {0.201366663, 2.88655567}, //
+
29230 {0.202390745, 2.88805985}, //
+
29231 {0.203707412, 2.88956547}, //
+
29232 {0.205316663, 2.89107227}, //
+
29233 {0.207218513, 2.89258027}, //
+
29234 {0.209412962, 2.89408946}, //
+
29235 {0.211899996, 2.89560008}, //
+
29236 {0.214585796, 2.89708948}, //
+
29237 {0.217354327, 2.89853573}, //
+
29238 {0.22020556, 2.89993882}, //
+
29239 {0.22313951, 2.90129876}, //
+
29240 {0.226156175, 2.90261555}, //
+
29241 {0.229255557, 2.90388894}, //
+
29242 {0.232437655, 2.90511918}, //
+
29243 {0.23570247, 2.90630627}, //
+
29244 {0.239050001, 2.90744996}, //
+
29245 {0.242417902, 2.90856242}, //
+
29246 {0.245743826, 2.90963268}, //
+
29247 {0.249027774, 2.91066122}, //
+
29248 {0.252269745, 2.91164756}, //
+
29249 {0.255469739, 2.91259193}, //
+
29250 {0.258627772, 2.91349435}, //
+
29251 {0.261743814, 2.91435504}, //
+
29252 {0.264817894, 2.91517353}, //
+
29253 {0.267850012, 2.91595006}, //
+
29254 {0.2707358, 2.91666365}, //
+
29255 {0.273370981, 2.91729331}, //
+
29256 {0.275755554, 2.91783881}, //
+
29257 {0.27788952, 2.91830063}, //
+
29258 {0.279772848, 2.91867828}, //
+
29259 {0.281405568, 2.91897225}, //
+
29260 {0.282787651, 2.91918206}, //
+
29261 {0.283919126, 2.91930795}, //
+
29262 {0.284799993, 2.91934991}, //
+
29263 {0.284674078, 2.9185524}, //
+
29264 {0.284296304, 2.91767097}, //
+
29265 {0.28366667, 2.91670561}, //
+
29266 {0.282785177, 2.91565609}, //
+
29267 {0.281651855, 2.91452289}, //
+
29268 {0.280266672, 2.91330552}, //
+
29269 {0.278629631, 2.91200423}, //
+
29270 {0.27674073, 2.91061902}, //
+
29271 {0.274599999, 2.90914989}, //
+
29272 {0.272323459, 2.90758634}, //
+
29273 {0.270004928, 2.90589571}, //
+
29274 {0.267644435, 2.90407777}, //
+
29275 {0.265241981, 2.90213275}, //
+
29276 {0.262797534, 2.90006042}, //
+
29277 {0.260311097, 2.897861}, //
+
29278 {0.257782727, 2.89553452}, //
+
29279 {0.255212337, 2.89308095}, //
+
29280 {0.252600014, 2.89050007}, //
+
29281 {0.250008017, 2.887887}, //
+
29282 {0.247498766, 2.8853147}, //
+
29283 {0.245072216, 2.88278341}, //
+
29284 {0.242728397, 2.88029265}, //
+
29285 {0.24046728, 2.87784266}, //
+
29286 {0.238288894, 2.87543344}, //
+
29287 {0.23619321, 2.87306476}, //
+
29288 {0.234180242, 2.87073708}, //
+
29289 {0.232250005, 2.86844993}, //
+
29290 {0.230434567, 2.86627769}, //
+
29291 {0.228743821, 2.86427212}, //
+
29292 {0.227177784, 2.86243343}, //
+
29293 {0.225736424, 2.86076117}, //
+
29294 {0.224419758, 2.85925555}, //
+
29295 {0.223227784, 2.85791659}, //
+
29296 {0.222160488, 2.85674453}, //
+
29297 {0.221217901, 2.85573888}, //
+
29298 {0.220400006, 2.85489988}, //
+
29299 {0.220316052, 2.85354567}, //
+
29300 {0.220064193, 2.8524828}, //
+
29301 {0.219644442, 2.85171103}, //
+
29302 {0.219056785, 2.85123086}, //
+
29303 {0.218301237, 2.85104203}, //
+
29304 });
+
29305 polys.push_back({
+
29306 {4.55359983, 1.9971}, //
+
29307 {4.55426931, 1.99885798}, //
+
29308 {4.56179714, 2.01863575}, //
+
29309 {4.56430626, 2.0252285}, //
+
29310 {4.56715012, 2.03270006}, //
+
29311 {4.5699625, 2.04096675}, //
+
29312 {4.57235479, 2.0499444}, //
+
29313 {4.57432795, 2.05963326}, //
+
29314 {4.575881, 2.07003331}, //
+
29315 {4.57701397, 2.08114433}, //
+
29316 {4.57772779, 2.09296656}, //
+
29317 {4.57802153, 2.10549998}, //
+
29318 {4.57789564, 2.11874437}, //
+
29319 {4.57735014, 2.13269997}, //
+
29320 {4.57621813, 2.14723086}, //
+
29321 {4.57433271, 2.16217899}, //
+
29322 {4.57169437, 2.17754436}, //
+
29323 {4.56830311, 2.19332719}, //
+
29324 {4.56415844, 2.20952725}, //
+
29325 {4.55926132, 2.22614455}, //
+
29326 {4.55361032, 2.24317908}, //
+
29327 {4.54720688, 2.26063085}, //
+
29328 {4.54005003, 2.27850008}, //
+
29329 {4.5313406, 2.29817462}, //
+
29330 {4.52330208, 2.31650996}, //
+
29331 {4.51593351, 2.33350563}, //
+
29332 {4.50923538, 2.34916162}, //
+
29333 {4.50320721, 2.36347842}, //
+
29334 {4.49784994, 2.37645555}, //
+
29335 {4.49316311, 2.38809323}, //
+
29336 {4.48914623, 2.39839125}, //
+
29337 {4.48579979, 2.40735006}, //
+
29338 {4.48285103, 2.41465306}, //
+
29339 {4.4800272, 2.42149568}, //
+
29340 {4.47732782, 2.42787766}, //
+
29341 {4.4747529, 2.43379927}, //
+
29342 {4.47230291, 2.43926048}, //
+
29343 {4.46997786, 2.44426107}, //
+
29344 {4.46777725, 2.44880128}, //
+
29345 {4.4657011, 2.45288086}, //
+
29346 {4.46374989, 2.45650005}, //
+
29347 {4.4617672, 2.45982647}, //
+
29348 {4.4595747, 2.46302843}, //
+
29349 {4.45717239, 2.46610546}, //
+
29350 {4.4545598, 2.46905804}, //
+
29351 {4.45173788, 2.47188592}, //
+
29352 {4.44870567, 2.47458887}, //
+
29353 {4.44546366, 2.47716737}, //
+
29354 {4.44201183, 2.47962093}, //
+
29355 {4.4383502, 2.48195004}, //
+
29356 {4.42940998, 2.48740554}, //
+
29357 {4.42067862, 2.49323893}, //
+
29358 {4.41215563, 2.49944997}, //
+
29359 {4.4038415, 2.5060389}, //
+
29360 {4.39573574, 2.5130055}, //
+
29361 {4.38783884, 2.52034998}, //
+
29362 {4.38015079, 2.52807212}, //
+
29363 {4.37267113, 2.53617215}, //
+
29364 {4.36539984, 2.54465008}, //
+
29365 {4.35872602, 2.5534215}, //
+
29366 {4.35301495, 2.5624032}, //
+
29367 {4.3482666, 2.57159448}, //
+
29368 {4.34448147, 2.5809958}, //
+
29369 {4.34165907, 2.59060669}, //
+
29370 {4.33979988, 2.60042787}, //
+
29371 {4.3389039, 2.61045861}, //
+
29372 {4.33897018, 2.62069941}, //
+
29373 {4.34000015, 2.63115001}, //
+
29374 {4.34004211, 2.63487458}, //
+
29375 {4.340168, 2.63851547}, //
+
29376 {4.34037781, 2.6420722}, //
+
29377 {4.34067154, 2.64554501}, //
+
29378 {4.34104919, 2.64893389}, //
+
29379 {4.34151125, 2.65223885}, //
+
29380 {4.34205675, 2.65545988}, //
+
29381 {4.34268665, 2.65859699}, //
+
29382 {4.3434, 2.66164994}, //
+
29383 {4.34417582, 2.6669271}, //
+
29384 {4.34499264, 2.67220306}, //
+
29385 {4.34584999, 2.67747784}, //
+
29386 {4.34674835, 2.68275118}, //
+
29387 {4.34768724, 2.68802357}, //
+
29388 {4.34866667, 2.69329453}, //
+
29389 {4.3496871, 2.69856429}, //
+
29390 {4.35074806, 2.70383263}, //
+
29391 {4.35185003, 2.70910001}, //
+
29392 {4.35317183, 2.71450305}, //
+
29393 {4.35486984, 2.72015691}, //
+
29394 {4.35694456, 2.72606111}, //
+
29395 {4.3593955, 2.73221612}, //
+
29396 {4.36222363, 2.73862171}, //
+
29397 {4.36542797, 2.74527788}, //
+
29398 {4.36900854, 2.75218463}, //
+
29399 {4.37296581, 2.75934196}, //
+
29400 {4.37729979, 2.7667501}, //
+
29401 {4.38251495, 2.77775669}, //
+
29402 {4.38760376, 2.78817725}, //
+
29403 {4.39256668, 2.79801106}, //
+
29404 {4.39740372, 2.80725861}, //
+
29405 {4.40211487, 2.81591964}, //
+
29406 {4.40670013, 2.8239944}, //
+
29407 {4.41115904, 2.83148265}, //
+
29408 {4.41549253, 2.83838463}, //
+
29409 {4.41970015, 2.8447001}, //
+
29410 {4.42361403, 2.85039806}, //
+
29411 {4.42706776, 2.85542583}, //
+
29412 {4.43006134, 2.85978341}, //
+
29413 {4.43259382, 2.86347032}, //
+
29414 {4.43466616, 2.86648703}, //
+
29415 {4.43627787, 2.8688333}, //
+
29416 {4.43742895, 2.87050915}, //
+
29417 {4.4383502, 2.87185001}, //
+
29418 {4.43830824, 2.87039137}, //
+
29419 {4.43818188, 2.86901546}, //
+
29420 {4.43797207, 2.86772227}, //
+
29421 {4.43767834, 2.86651182}, //
+
29422 {4.43730068, 2.86538386}, //
+
29423 {4.4368391, 2.86433887}, //
+
29424 {4.43629313, 2.86337662}, //
+
29425 {4.4356637, 2.86249685}, //
+
29426 {4.43494987, 2.86170006}, //
+
29427 {4.43264198, 2.85761905}, //
+
29428 {4.43025112, 2.8529098}, //
+
29429 {4.42777777, 2.84757233}, //
+
29430 {4.42522144, 2.84160614}, //
+
29431 {4.42258263, 2.83501172}, //
+
29432 {4.41986132, 2.82778883}, //
+
29433 {4.41705656, 2.81993771}, //
+
29434 {4.41416979, 2.81145811}, //
+
29435 {4.41120005, 2.80235004}, //
+
29436 {4.40860748, 2.79261422}, //
+
29437 {4.40685177, 2.78225112}, //
+
29438 {4.40593338, 2.77126122}, //
+
29439 {4.40585184, 2.75964379}, //
+
29440 {4.40660763, 2.74739933}, //
+
29441 {4.40819979, 2.73452783}, //
+
29442 {4.41062975, 2.72102904}, //
+
29443 {4.41389608, 2.70690298}, //
+
29444 {4.41800022, 2.69215012}, //
+
29445 {4.4247365, 2.67381859}, //
+
29446 {4.43139029, 2.6564908}, //
+
29447 {4.4379611, 2.64016676}, //
+
29448 {4.44444942, 2.62484622}, //
+
29449 {4.45085478, 2.61052966}, //
+
29450 {4.45717764, 2.59721661}, //
+
29451 {4.46341801, 2.58490729}, //
+
29452 {4.46957541, 2.57360196}, //
+
29453 {4.47564983, 2.56329989}, //
+
29454 {4.48146296, 2.55288076}, //
+
29455 {4.48685741, 2.54271245}, //
+
29456 {4.49183321, 2.53279448}, //
+
29457 {4.49639082, 2.52312708}, //
+
29458 {4.50052977, 2.5137105}, //
+
29459 {4.50425005, 2.5045445}, //
+
29460 {4.50755167, 2.49562907}, //
+
29461 {4.5104351, 2.48696423}, //
+
29462 {4.51289988, 2.47854996}, //
+
29463 {4.51600552, 2.46754265}, //
+
29464 {4.51927757, 2.45712042}, //
+
29465 {4.52271652, 2.44728327}, //
+
29466 {4.52632236, 2.43803144}, //
+
29467 {4.53009462, 2.42936492}, //
+
29468 {4.5340333, 2.42128325}, //
+
29469 {4.53813887, 2.41378713}, //
+
29470 {4.54241133, 2.40687585}, //
+
29471 {4.5468502, 2.40054989}, //
+
29472 {4.54977703, 2.39532471}, //
+
29473 {4.55253649, 2.39018202}, //
+
29474 {4.55512762, 2.3851223}, //
+
29475 {4.55755138, 2.38014507}, //
+
29476 {4.55980682, 2.37525058}, //
+
29477 {4.56189442, 2.37043881}, //
+
29478 {4.56381416, 2.36570978}, //
+
29479 {4.56556606, 2.36106348}, //
+
29480 {4.56715012, 2.35649991}, //
+
29481 {4.56868172, 2.35092902}, //
+
29482 {4.57025385, 2.34477162}, //
+
29483 {4.57186651, 2.33802772}, //
+
29484 {4.57352018, 2.33069754}, //
+
29485 {4.57521486, 2.32278085}, //
+
29486 {4.57695007, 2.31427789}, //
+
29487 {4.57872581, 2.30518818}, //
+
29488 {4.58054256, 2.29551244}, //
+
29489 {4.58239985, 2.28524995}, //
+
29490 {4.58424711, 2.27470565}, //
+
29491 {4.58600998, 2.26416111}, //
+
29492 {4.58768892, 2.25361657}, //
+
29493 {4.58928394, 2.24307227}, //
+
29494 {4.59079504, 2.23252773}, //
+
29495 {4.59222221, 2.22198343}, //
+
29496 {4.59356546, 2.21143889}, //
+
29497 {4.59482479, 2.20089436}, //
+
29498 {4.59600019, 2.19035006}, //
+
29499 {4.59707022, 2.1801815}, //
+
29500 {4.59801483, 2.17076492}, //
+
29501 {4.59883356, 2.16210008}, //
+
29502 {4.59952593, 2.15418696}, //
+
29503 {4.60009241, 2.14702582}, //
+
29504 {4.60053349, 2.14061666}, //
+
29505 {4.6008482, 2.13495922}, //
+
29506 {4.60103703, 2.13005376}, //
+
29507 {4.60109997, 2.12590003}, //
+
29508 {4.60101604, 2.12347651}, //
+
29509 {4.60076427, 2.12071729}, //
+
29510 {4.60034466, 2.11762214}, //
+
29511 {4.59975672, 2.11419129}, //
+
29512 {4.59900141, 2.11042476}, //
+
29513 {4.59807777, 2.10632229}, //
+
29514 {4.59698629, 2.10188389}, //
+
29515 {4.59572697, 2.09710979}, //
+
29516 {4.59429979, 2.09200001}, //
+
29517 {4.59274673, 2.08677459}, //
+
29518 {4.59110975, 2.08163214}, //
+
29519 {4.58938885, 2.07657218}, //
+
29520 {4.58758402, 2.07159495}, //
+
29521 {4.58569527, 2.0667007}, //
+
29522 {4.58372211, 2.06188893}, //
+
29523 {4.58166552, 2.0571599}, //
+
29524 {4.57952452, 2.0525136}, //
+
29525 {4.57730007, 2.04795003}, //
+
29526 {4.57508564, 2.04349065}, //
+
29527 {4.57295418, 2.03915739}, //
+
29528 {4.57090569, 2.03495002}, //
+
29529 {4.56893969, 2.03086853}, //
+
29530 {4.56705618, 2.02691293}, //
+
29531 {4.56525564, 2.02308345}, //
+
29532 {4.5635376, 2.01937962}, //
+
29533 {4.56190252, 2.01580191}, //
+
29534 {4.56034994, 2.01235008}, //
+
29535 });
+
29536 polys.push_back({
+
29537 {1.46356356, 2.66521358}, //
+
29538 {1.46149135, 2.66578031}, //
+
29539 {1.45853889, 2.6667223}, //
+
29540 {1.45470619, 2.66803956}, //
+
29541 {1.44999325, 2.66973209}, //
+
29542 {1.44439995, 2.6717999}, //
+
29543 {1.42782223, 2.67615485}, //
+
29544 {1.41124439, 2.6801753}, //
+
29545 {1.39466667, 2.68386102}, //
+
29546 {1.37808883, 2.68721223}, //
+
29547 {1.36151111, 2.69022894}, //
+
29548 {1.34493339, 2.69291115}, //
+
29549 {1.32835555, 2.69525862}, //
+
29550 {1.31177783, 2.69727159}, //
+
29551 {1.29519999, 2.69895005}, //
+
29552 {1.2832284, 2.69978881}, //
+
29553 {1.27142465, 2.70079446}, //
+
29554 {1.25978887, 2.70196676}, //
+
29555 {1.24832094, 2.70330548}, //
+
29556 {1.23702097, 2.7048111}, //
+
29557 {1.22588885, 2.70648336}, //
+
29558 {1.21492469, 2.70832229}, //
+
29559 {1.20412838, 2.71032786}, //
+
29560 {1.19350004, 2.7125001}, //
+
29561 {1.18178153, 2.71559501}, //
+
29562 {1.16922593, 2.718858}, //
+
29563 {1.15583336, 2.72228885}, //
+
29564 {1.14160371, 2.72588754}, //
+
29565 {1.12653708, 2.72965431}, //
+
29566 {1.11063337, 2.73358893}, //
+
29567 {1.09389257, 2.7376914}, //
+
29568 {1.07631481, 2.74196172}, //
+
29569 {1.05789995, 2.74640012}, //
+
29570 {1.04601169, 2.74936914}, //
+
29571 {1.03445804, 2.75225425}, //
+
29572 {1.0232389, 2.75505567}, //
+
29573 {1.01235437, 2.75777292}, //
+
29574 {1.00180435, 2.76040626}, //
+
29575 {0.991588891, 2.76295567}, //
+
29576 {0.98170805, 2.76542091}, //
+
29577 {0.97216171, 2.76780248}, //
+
29578 {0.962949991, 2.77010012}, //
+
29579 {0.954282701, 2.7723248}, //
+
29580 {0.946369767, 2.77446532}, //
+
29581 {0.93921113, 2.77652216}, //
+
29582 {0.93280679, 2.77849507}, //
+
29583 {0.927156806, 2.78038406}, //
+
29584 {0.922261119, 2.78218889}, //
+
29585 {0.918119729, 2.7839098}, //
+
29586 {0.914732695, 2.78554702}, //
+
29587 {0.912100017, 2.78710008}, //
+
29588 {0.907096267, 2.78858948}, //
+
29589 {0.901129603, 2.79003572}, //
+
29590 {0.894200027, 2.79143882}, //
+
29591 {0.886307418, 2.79279876}, //
+
29592 {0.877451837, 2.79411554}, //
+
29593 {0.867633343, 2.79538894}, //
+
29594 {0.856851876, 2.79661918}, //
+
29595 {0.845107436, 2.79780626}, //
+
29596 {0.832400024, 2.79894996}, //
+
29597 {0.81931603, 2.80002046}, //
+
29598 {0.806441963, 2.80096483}, //
+
29599 {0.793777764, 2.80178332}, //
+
29600 {0.781323433, 2.80247593}, //
+
29601 {0.76907903, 2.80304265}, //
+
29602 {0.757044435, 2.80348325}, //
+
29603 {0.745219767, 2.8037982}, //
+
29604 {0.733604968, 2.80398703}, //
+
29605 {0.722199976, 2.80404997}, //
+
29606 {0.713848174, 2.80402899}, //
+
29607 {0.705370367, 2.80396605}, //
+
29608 {0.696766675, 2.80386114}, //
+
29609 {0.688037038, 2.80371428}, //
+
29610 {0.679181457, 2.80352521}, //
+
29611 {0.67019999, 2.80329442}, //
+
29612 {0.661092579, 2.80302167}, //
+
29613 {0.651859283, 2.80270672}, //
+
29614 {0.642499983, 2.80235004}, //
+
29615 {0.633255541, 2.80195117}, //
+
29616 {0.624344468, 2.80151057}, //
+
29617 {0.615766644, 2.80102777}, //
+
29618 {0.607522249, 2.80050302}, //
+
29619 {0.599611104, 2.79993653}, //
+
29620 {0.592033327, 2.79932785}, //
+
29621 {0.584788918, 2.79867721}, //
+
29622 {0.57787776, 2.7979846}, //
+
29623 {0.57130003, 2.79725003}, //
+
29624 {0.565255582, 2.79654694}, //
+
29625 {0.55138886, 2.79493403}, //
+
29626 {0.548188865, 2.79456162}, //
+
29627 {0.545700014, 2.79427218}, //
+
29628 {0.542500019, 2.79390001}, //
+
29629 {0.544408023, 2.7947495}, //
+
29630 {0.547109902, 2.79580855}, //
+
29631 {0.550605536, 2.79707789}, //
+
29632 {0.554895043, 2.7985568}, //
+
29633 {0.559978366, 2.80024576}, //
+
29634 {0.565855563, 2.80214453}, //
+
29635 {0.572526515, 2.8042531}, //
+
29636 {0.579991341, 2.80657172}, //
+
29637 {0.588249981, 2.80909991}, //
+
29638 {0.596979022, 2.81170177}, //
+
29639 {0.605832696, 2.81421852}, //
+
29640 {0.614811122, 2.81664991}, //
+
29641 {0.623914182, 2.81899619}, //
+
29642 {0.633141994, 2.82125735}, //
+
29643 {0.64249444, 2.8234334}, //
+
29644 {0.651971579, 2.82552409}, //
+
29645 {0.66157347, 2.82752967}, //
+
29646 {0.671299994, 2.82944989}, //
+
29647 {0.680806816, 2.83123398}, //
+
29648 {0.689727187, 2.83280802}, //
+
29649 {0.698061109, 2.83417225}, //
+
29650 {0.70580864, 2.83532643}, //
+
29651 {0.71296978, 2.83627105}, //
+
29652 {0.71954447, 2.83700562}, //
+
29653 {0.725532711, 2.83753014}, //
+
29654 {0.73093456, 2.83784509}, //
+
29655 {0.73575002, 2.83794999}, //
+
29656 {0.744436443, 2.83709002}, //
+
29657 {0.753917873, 2.83602166}, //
+
29658 {0.764194429, 2.83474445}, //
+
29659 {0.775266051, 2.83325863}, //
+
29660 {0.78713274, 2.83156419}, //
+
29661 {0.799794436, 2.82966113}, //
+
29662 {0.813251257, 2.82754946}, //
+
29663 {0.827503085, 2.82522893}, //
+
29664 {0.84254998, 2.82270002}, //
+
29665 {0.857774675, 2.82004499}, //
+
29666 {0.872537673, 2.81734681}, //
+
29667 {0.886838913, 2.81460547}, //
+
29668 {0.900678396, 2.81182098}, //
+
29669 {0.914056182, 2.8089931}, //
+
29670 {0.92697221, 2.8061223}, //
+
29671 {0.939426541, 2.80320811}, //
+
29672 {0.951419115, 2.80025053}, //
+
29673 {0.962949991, 2.79725003}, //
+
29674 {0.971448123, 2.79579139}, //
+
29675 {0.980364799, 2.79441547}, //
+
29676 {0.989700019, 2.79312229}, //
+
29677 {0.999453723, 2.79191184}, //
+
29678 {1.00962591, 2.79078388}, //
+
29679 {1.0202167, 2.78973889}, //
+
29680 {1.03122592, 2.78877664}, //
+
29681 {1.04265368, 2.78789687}, //
+
29682 {1.05449998, 2.78710008}, //
+
29683 {1.06851852, 2.78756237}, //
+
29684 {1.08195186, 2.78743815}, //
+
29685 {1.0948, 2.78672767}, //
+
29686 {1.10706294, 2.78543091}, //
+
29687 {1.1187408, 2.78354764}, //
+
29688 {1.12983334, 2.78107786}, //
+
29689 {1.14034069, 2.77802157}, //
+
29690 {1.15026295, 2.77437901}, //
+
29691 {1.15960002, 2.77014995}, //
+
29692 {1.16740561, 2.76562786}, //
+
29693 {1.1757555, 2.76110554}, //
+
29694 {1.18464994, 2.75658345}, //
+
29695 {1.19408894, 2.75206113}, //
+
29696 {1.20407224, 2.74753881}, //
+
29697 {1.21459997, 2.74301672}, //
+
29698 {1.22567225, 2.7384944}, //
+
29699 {1.23728883, 2.73397231}, //
+
29700 {1.24944997, 2.72944999}, //
+
29701 {1.26182032, 2.72509575}, //
+
29702 {1.27406478, 2.7210772}, //
+
29703 {1.28618336, 2.71739435}, //
+
29704 {1.29817593, 2.71404743}, //
+
29705 {1.31004262, 2.71103644}, //
+
29706 {1.3217833, 2.70836115}, //
+
29707 {1.3333981, 2.70602155}, //
+
29708 {1.34488702, 2.70401788}, //
+
29709 {1.35625005, 2.7023499}, //
+
29710 {1.36514747, 2.70008326}, //
+
29711 {1.37375128, 2.69781661}, //
+
29712 {1.38206112, 2.69554996}, //
+
29713 {1.39007711, 2.69328332}, //
+
29714 {1.39779937, 2.69101667}, //
+
29715 {1.40522778, 2.68875003}, //
+
29716 {1.41236234, 2.68648338}, //
+
29717 {1.41920304, 2.68421674}, //
+
29718 {1.42575002, 2.68195009}, //
+
29719 {1.4319092, 2.67975688}, //
+
29720 {1.43756485, 2.67768836}, //
+
29721 {1.44271672, 2.67574453}, //
+
29722 {1.44736481, 2.6739254}, //
+
29723 {1.45150924, 2.67223096}, //
+
29724 {1.45515001, 2.67066121}, //
+
29725 {1.458287, 2.66921616}, //
+
29726 {1.46092033, 2.66789579}, //
+
29727 {1.46305001, 2.66669989}, //
+
29728 {1.46449876, 2.66576552}, //
+
29729 {1.46506727, 2.66520619}, //
+
29730 {1.46475554, 2.66502213}, //
+
29731 });
+
29732 polys.push_back({
+
29733 {0.217283949, 2.75489569}, //
+
29734 {0.216238886, 2.75506115}, //
+
29735 {0.215276539, 2.75539207}, //
+
29736 {0.214396909, 2.75588822}, //
+
29737 {0.213599995, 2.75655007}, //
+
29738 {0.212886423, 2.75734758}, //
+
29739 {0.212256789, 2.75822902}, //
+
29740 {0.211711109, 2.75919437}, //
+
29741 {0.211249381, 2.76024389}, //
+
29742 {0.210871607, 2.7613771}, //
+
29743 {0.210577771, 2.76259446}, //
+
29744 {0.210367903, 2.76389575}, //
+
29745 {0.210241973, 2.76528096}, //
+
29746 {0.210199997, 2.7667501}, //
+
29747 {0.21030432, 2.76758885}, //
+
29748 {0.210617289, 2.7685945}, //
+
29749 {0.211138889, 2.76976657}, //
+
29750 {0.211869135, 2.77110553}, //
+
29751 {0.212808028, 2.77261114}, //
+
29752 {0.213955551, 2.77428341}, //
+
29753 {0.215311721, 2.77612233}, //
+
29754 {0.216876537, 2.77812767}, //
+
29755 {0.218649998, 2.7802999}, //
+
29756 {0.220601857, 2.78252411}, //
+
29757 {0.22267963, 2.78466296}, //
+
29758 {0.224883333, 2.7867167}, //
+
29759 {0.227212965, 2.78868508}, //
+
29760 {0.229668513, 2.79056859}, //
+
29761 {0.232250005, 2.79236674}, //
+
29762 {0.234957412, 2.79407954}, //
+
29763 {0.237790734, 2.79570746}, //
+
29764 {0.24075, 2.79725003}, //
+
29765 {0.244474694, 2.80027151}, //
+
29766 {0.248115435, 2.80329204}, //
+
29767 {0.251672208, 2.80631113}, //
+
29768 {0.255145073, 2.80932903}, //
+
29769 {0.258533955, 2.81234574}, //
+
29770 {0.261838883, 2.81536102}, //
+
29771 {0.265059888, 2.81837535}, //
+
29772 {0.268196911, 2.82138824}, //
+
29773 {0.27125001, 2.82439995}, //
+
29774 {0.271438897, 2.82421112}, //
+
29775 {0.272278398, 2.82337165}, //
+
29776 {0.272949994, 2.82270002}, //
+
29777 {0.273327768, 2.82230115}, //
+
29778 {0.273705542, 2.82186055}, //
+
29779 {0.274083346, 2.82137775}, //
+
29780 {0.27446112, 2.82085299}, //
+
29781 {0.274838895, 2.82028651}, //
+
29782 {0.275216669, 2.81967783}, //
+
29783 {0.275594443, 2.81902719}, //
+
29784 {0.275972217, 2.81833458}, //
+
29785 {0.276349992, 2.81760001}, //
+
29786 {0.276748151, 2.81688643}, //
+
29787 {0.277187049, 2.81625676}, //
+
29788 {0.277666658, 2.81571102}, //
+
29789 {0.278187037, 2.81524944}, //
+
29790 {0.278748155, 2.81487155}, //
+
29791 {0.279350013, 2.81457782}, //
+
29792 {0.27999258, 2.81436801}, //
+
29793 {0.280675918, 2.81424189}, //
+
29794 {0.281399995, 2.81419992}, //
+
29795 {0.281358033, 2.81343389}, //
+
29796 {0.281232089, 2.81262469}, //
+
29797 {0.281022221, 2.81177211}, //
+
29798 {0.2807284, 2.81087661}, //
+
29799 {0.280350626, 2.80993772}, //
+
29800 {0.279888898, 2.80895567}, //
+
29801 {0.279343218, 2.80793023}, //
+
29802 {0.278713584, 2.80686164}, //
+
29803 {0.277999997, 2.80574989}, //
+
29804 {0.277170986, 2.80463767}, //
+
29805 {0.276172847, 2.80356717}, //
+
29806 {0.275005549, 2.80253887}, //
+
29807 {0.273669124, 2.80155253}, //
+
29808 {0.27216357, 2.80060792}, //
+
29809 {0.270488888, 2.79970551}, //
+
29810 {0.268645048, 2.79884505}, //
+
29811 {0.26663211, 2.79802656}, //
+
29812 {0.264450014, 2.79725003}, //
+
29813 {0.261480868, 2.79491043}, //
+
29814 {0.258595675, 2.79240298}, //
+
29815 {0.255794436, 2.78972769}, //
+
29816 {0.253077149, 2.78688455}, //
+
29817 {0.250443816, 2.78387356}, //
+
29818 {0.247894451, 2.78069448}, //
+
29819 {0.245429009, 2.77734756}, //
+
29820 {0.243047535, 2.7738328}, //
+
29821 {0.24075, 2.77014995}, //
+
29822 {0.238525301, 2.76796722}, //
+
29823 {0.236384571, 2.76595259}, //
+
29824 {0.234327778, 2.76410556}, //
+
29825 {0.232354939, 2.76242661}, //
+
29826 {0.230466053, 2.76091552}, //
+
29827 {0.228661105, 2.75957227}, //
+
29828 {0.226940125, 2.75839686}, //
+
29829 {0.225303084, 2.75738955}, //
+
29830 {0.223749995, 2.75655007}, //
+
29831 {0.222291365, 2.75588822}, //
+
29832 {0.220915437, 2.75539207}, //
+
29833 {0.219622225, 2.75506115}, //
+
29834 {0.218411729, 2.75489569}, //
+
29835 });
+
29836 polys.push_back({
+
29837 {0.214538887, 2.63997769}, //
+
29838 {0.214017287, 2.64020872}, //
+
29839 {0.213704318, 2.64064932}, //
+
29840 {0.213599995, 2.64129996}, //
+
29841 {0.214417905, 2.64218092}, //
+
29842 {0.215360492, 2.64331245}, //
+
29843 {0.216427773, 2.64469433}, //
+
29844 {0.217619747, 2.64632726}, //
+
29845 {0.218936414, 2.64821053}, //
+
29846 {0.220377773, 2.65034437}, //
+
29847 {0.221943825, 2.65272903}, //
+
29848 {0.223634571, 2.65536427}, //
+
29849 {0.225449994, 2.65825009}, //
+
29850 {0.227359265, 2.66128206}, //
+
29851 {0.229309261, 2.66435623}, //
+
29852 {0.231299996, 2.66747212}, //
+
29853 {0.233331487, 2.67063022}, //
+
29854 {0.235403702, 2.67383027}, //
+
29855 {0.237516671, 2.67707229}, //
+
29856 {0.239670366, 2.68035626}, //
+
29857 {0.241864815, 2.6836822}, //
+
29858 {0.244100004, 2.6870501}, //
+
29859 {0.246366054, 2.69040751}, //
+
29860 {0.248630866, 2.69367957}, //
+
29861 {0.250894457, 2.69686675}, //
+
29862 {0.253156781, 2.69996858}, //
+
29863 {0.255417913, 2.70298529}, //
+
29864 {0.257677764, 2.70591664}, //
+
29865 {0.259936422, 2.70876288}, //
+
29866 {0.262193829, 2.71152401}, //
+
29867 {0.264450014, 2.71420002}, //
+
29868 {0.266590744, 2.71672893}, //
+
29869 {0.268479615, 2.71904945}, //
+
29870 {0.270116657, 2.72116113}, //
+
29871 {0.271501839, 2.72306418}, //
+
29872 {0.272635192, 2.72475863}, //
+
29873 {0.273516655, 2.72624445}, //
+
29874 {0.274146289, 2.72752166}, //
+
29875 {0.274524063, 2.72859001}, //
+
29876 {0.274650007, 2.72944999}, //
+
29877 {0.276906163, 2.72580862}, //
+
29878 {0.279163569, 2.72241783}, //
+
29879 {0.281422228, 2.71927786}, //
+
29880 {0.283682108, 2.71638823}, //
+
29881 {0.28594321, 2.71374941}, //
+
29882 {0.288205564, 2.71136117}, //
+
29883 {0.29046914, 2.70922351}, //
+
29884 {0.292733938, 2.70733643}, //
+
29885 {0.294999987, 2.70569992}, //
+
29886 {0.29641667, 2.70493388}, //
+
29887 {0.297290057, 2.70436859}, //
+
29888 {0.297646999, 2.69147277}, //
+
29889 {0.297238886, 2.6912055}, //
+
29890 {0.295609891, 2.69034505}, //
+
29891 {0.293730259, 2.68952656}, //
+
29892 {0.291599989, 2.68875003}, //
+
29893 {0.290005565, 2.68794203}, //
+
29894 {0.288244456, 2.68700671}, //
+
29895 {0.286316663, 2.68594456}, //
+
29896 {0.284222215, 2.68475485}, //
+
29897 {0.281961113, 2.6834383}, //
+
29898 {0.279533327, 2.68199444}, //
+
29899 {0.276938885, 2.6804235}, //
+
29900 {0.27417779, 2.67872524}, //
+
29901 {0.27125001, 2.67689991}, //
+
29902 {0.268238902, 2.67499065}, //
+
29903 {0.265227765, 2.67304063}, //
+
29904 {0.262216657, 2.67105007}, //
+
29905 {0.25920555, 2.66901851}, //
+
29906 {0.256194443, 2.66694641}, //
+
29907 {0.253183335, 2.66483331}, //
+
29908 {0.250172228, 2.66267967}, //
+
29909 {0.247161105, 2.66048527}, //
+
29910 {0.244149998, 2.65825009}, //
+
29911 {0.241190746, 2.65605688}, //
+
29912 {0.23835741, 2.65398836}, //
+
29913 {0.235650003, 2.65204453}, //
+
29914 {0.233068526, 2.6502254}, //
+
29915 {0.230612963, 2.64853096}, //
+
29916 {0.228283331, 2.64696121}, //
+
29917 {0.226079628, 2.64551616}, //
+
29918 {0.224001855, 2.6441958}, //
+
29919 {0.222049996, 2.64299989}, //
+
29920 {0.220276549, 2.64197159}, //
+
29921 {0.218711734, 2.6411531}, //
+
29922 {0.217355549, 2.64054441}, //
+
29923 {0.216208026, 2.64014578}, //
+
29924 {0.215269133, 2.63995671}, //
+
29925 });
+
29926 polys.push_back({
+
29927 {1.86151302, 2.23117542}, //
+
29928 {1.86170185, 2.23155117}, //
+
29929 {1.86201668, 2.23217773}, //
+
29930 {1.86302412, 2.23418283}, //
+
29931 {1.86371672, 2.23556113}, //
+
29932 {1.86453521, 2.23719001}, //
+
29933 {1.86547959, 2.2390697}, //
+
29934 {1.86654997, 2.24119997}, //
+
29935 {1.86770368, 2.2435081}, //
+
29936 {1.86889815, 2.24589872}, //
+
29937 {1.87013328, 2.24837232}, //
+
29938 {1.8714093, 2.2509284}, //
+
29939 {1.87272596, 2.25356722}, //
+
29940 {1.87408328, 2.25628901}, //
+
29941 {1.87548149, 2.25909328}, //
+
29942 {1.87692034, 2.2619803}, //
+
29943 {1.87839997, 2.26495004}, //
+
29944 {1.87988949, 2.26796103}, //
+
29945 {1.88133585, 2.27097225}, //
+
29946 {1.88273895, 2.27398324}, //
+
29947 {1.88409877, 2.27699447}, //
+
29948 {1.88541543, 2.28000546}, //
+
29949 {1.88668895, 2.28301668}, //
+
29950 {1.88791919, 2.28602767}, //
+
29951 {1.88910615, 2.2890389}, //
+
29952 {1.89024997, 2.29204988}, //
+
29953 {1.89132035, 2.29502964}, //
+
29954 {1.89226484, 2.29792404}, //
+
29955 {1.89308333, 2.30073333}, //
+
29956 {1.89377594, 2.3034575}, //
+
29957 {1.89434254, 2.30609632}, //
+
29958 {1.89478338, 2.30865002}, //
+
29959 {1.89509809, 2.3111186}, //
+
29960 {1.89528704, 2.31350183}, //
+
29961 {1.89534998, 2.31579995}, //
+
29962 {1.89518273, 2.31822348}, //
+
29963 {1.89468086, 2.32098269}, //
+
29964 {1.89384449, 2.32407784}, //
+
29965 {1.89267349, 2.32750869}, //
+
29966 {1.89116788, 2.33127522}, //
+
29967 {1.88932776, 2.33537769}, //
+
29968 {1.88715303, 2.33981609}, //
+
29969 {1.88464379, 2.34459019}, //
+
29970 {1.88180006, 2.34969997}, //
+
29971 {1.87874687, 2.35493588}, //
+
29972 {1.87560987, 2.36008763}, //
+
29973 {1.87238884, 2.36515546}, //
+
29974 {1.869084, 2.3701396}, //
+
29975 {1.86569512, 2.37503958}, //
+
29976 {1.86222219, 2.37985563}, //
+
29977 {1.85866547, 2.38458776}, //
+
29978 {1.8550247, 2.38923573}, //
+
29979 {1.8513, 2.39380002}, //
+
29980 {1.84761667, 2.3981123}, //
+
29981 {1.8441, 2.40200496}, //
+
29982 {1.84074998, 2.40547776}, //
+
29983 {1.83756661, 2.40853095}, //
+
29984 {1.83455002, 2.41116428}, //
+
29985 {1.83169997, 2.41337776}, //
+
29986 {1.82901669, 2.41517162}, //
+
29987 {1.82650006, 2.41654563}, //
+
29988 {1.82414997, 2.41750002}, //
+
29989 {1.82090807, 2.41907334}, //
+
29990 {1.81720436, 2.4207716}, //
+
29991 {1.81303895, 2.42259455}, //
+
29992 {1.80841172, 2.42454195}, //
+
29993 {1.80332279, 2.42661428}, //
+
29994 {1.79777217, 2.42881107}, //
+
29995 {1.79175985, 2.43113279}, //
+
29996 {1.78528583, 2.43357897}, //
+
29997 {1.77835, 2.43615007}, //
+
29998 {1.77104819, 2.43881488}, //
+
29999 {1.76345372, 2.44152045}, //
+
30000 {1.75556672, 2.44426656}, //
+
30001 {1.74738705, 2.44705367}, //
+
30002 {1.73891485, 2.44988155}, //
+
30003 {1.73014998, 2.45274997}, //
+
30004 {1.72109258, 2.45565915}, //
+
30005 {1.71174264, 2.45860934}, //
+
30006 {1.70210004, 2.46160007}, //
+
30007 {1.69096732, 2.46528268}, //
+
30008 {1.68016911, 2.46879745}, //
+
30009 {1.66970551, 2.47214437}, //
+
30010 {1.65957654, 2.47532344}, //
+
30011 {1.64978206, 2.47833467}, //
+
30012 {1.64032221, 2.48117781}, //
+
30013 {1.63119686, 2.4838531}, //
+
30014 {1.62240613, 2.48636055}, //
+
30015 {1.61395001, 2.48869991}, //
+
30016 {1.61243951, 2.48945546}, //
+
30017 {1.6109302, 2.49021101}, //
+
30018 {1.60942221, 2.49096656}, //
+
30019 {1.6079154, 2.49172211}, //
+
30020 {1.60640991, 2.49247789}, //
+
30021 {1.60490561, 2.49323344}, //
+
30022 {1.6034025, 2.49398899}, //
+
30023 {1.60190058, 2.49474454}, //
+
30024 {1.60039997, 2.49550009}, //
+
30025 {1.58147228, 2.50274062}, //
+
30026 {1.56237781, 2.50939631}, //
+
30027 {1.54311669, 2.51546669}, //
+
30028 {1.52368891, 2.52095175}, //
+
30029 {1.50409448, 2.52585196}, //
+
30030 {1.48433328, 2.53016663}, //
+
30031 {1.46440554, 2.53389621}, //
+
30032 {1.44431114, 2.53704071}, //
+
30033 {1.42404997, 2.5395999}, //
+
30034 {1.41607714, 2.54038715}, //
+
30035 {1.40722525, 2.54125929}, //
+
30036 {1.39749444, 2.54221678}, //
+
30037 {1.38688457, 2.54325914}, //
+
30038 {1.37539566, 2.5443871}, //
+
30039 {1.36302781, 2.54559994}, //
+
30040 {1.34978092, 2.54689813}, //
+
30041 {1.33565497, 2.54828143}, //
+
30042 {1.32064998, 2.54975009}, //
+
30043 {1.30522597, 2.55130243}, //
+
30044 {1.28984261, 2.55293775}, //
+
30045 {1.27450001, 2.55465555}, //
+
30046 {1.25919819, 2.55645609}, //
+
30047 {1.24393702, 2.5583396}, //
+
30048 {1.22871661, 2.5603056}, //
+
30049 {1.21353698, 2.56235433}, //
+
30050 {1.19839811, 2.56448579}, //
+
30051 {1.18330002, 2.56669998}, //
+
30052 {1.16869378, 2.56892419}, //
+
30053 {1.15500867, 2.57106304}, //
+
30054 {1.14224446, 2.57311678}, //
+
30055 {1.13040125, 2.57508516}, //
+
30056 {1.11947906, 2.57696843}, //
+
30057 {1.10947776, 2.57876658}, //
+
30058 {1.10039759, 2.58047962}, //
+
30059 {1.09223831, 2.58210731}, //
+
30060 {1.08500004, 2.58365011}, //
+
30061 {1.07774007, 2.58604145}, //
+
30062 {1.06951606, 2.58868217}, //
+
30063 {1.06032777, 2.59157228}, //
+
30064 {1.05017531, 2.59471178}, //
+
30065 {1.03905869, 2.59810066}, //
+
30066 {1.02697778, 2.60173893}, //
+
30067 {1.0139327, 2.60562658}, //
+
30068 {0.999923468, 2.60976362}, //
+
30069 {0.984950006, 2.61415005}, //
+
30070 {0.969588876, 2.61860919}, //
+
30071 {0.95439446, 2.62294269}, //
+
30072 {0.939366639, 2.62715006}, //
+
30073 {0.924505532, 2.63123155}, //
+
30074 {0.909811139, 2.63518715}, //
+
30075 {0.895283341, 2.63901663}, //
+
30076 {0.880922198, 2.64272046}, //
+
30077 {0.866727769, 2.64629817}, //
+
30078 {0.852699995, 2.64974999}, //
+
30079 {0.839331508, 2.6530025}, //
+
30080 {0.827092588, 2.65595984}, //
+
30081 {0.815983355, 2.65862226}, //
+
30082 {0.80600369, 2.66098952}, //
+
30083 {0.797153711, 2.66306162}, //
+
30084 {0.78943336, 2.66483879}, //
+
30085 {0.782842577, 2.66632104}, //
+
30086 {0.77738148, 2.66750813}, //
+
30087 {0.77305001, 2.66840005}, //
+
30088 {0.770501256, 2.66844201}, //
+
30089 {0.767366052, 2.6685679}, //
+
30090 {0.763644457, 2.6687777}, //
+
30091 {0.759336412, 2.66907167}, //
+
30092 {0.754441977, 2.66944933}, //
+
30093 {0.748961091, 2.66991115}, //
+
30094 {0.742893815, 2.67045689}, //
+
30095 {0.736240149, 2.67108631}, //
+
30096 {0.728999972, 2.6717999}, //
+
30097 {0.721487045, 2.67253447}, //
+
30098 {0.714014828, 2.67322707}, //
+
30099 {0.706583321, 2.67387772}, //
+
30100 {0.699192584, 2.6744864}, //
+
30101 {0.691842616, 2.67505312}, //
+
30102 {0.684533358, 2.67557788}, //
+
30103 {0.67726481, 2.67606044}, //
+
30104 {0.670037031, 2.67650127}, //
+
30105 {0.662850022, 2.67689991}, //
+
30106 {0.655924678, 2.67721486}, //
+
30107 {0.649459898, 2.67740369}, //
+
30108 {0.643455565, 2.67746663}, //
+
30109 {0.637911737, 2.67740369}, //
+
30110 {0.632828414, 2.67721486}, //
+
30111 {0.628205538, 2.67689991}, //
+
30112 {0.624043226, 2.67645931}, //
+
30113 {0.620341361, 2.67589259}, //
+
30114 {0.6171, 2.67519999}, //
+
30115 {0.611234546, 2.67515802}, //
+
30116 {0.605704963, 2.67503214}, //
+
30117 {0.600511134, 2.67482233}, //
+
30118 {0.595653057, 2.67452836}, //
+
30119 {0.591130853, 2.67415071}, //
+
30120 {0.586944461, 2.67368889}, //
+
30121 {0.583093822, 2.67314315}, //
+
30122 {0.579578996, 2.67251348}, //
+
30123 {0.576399982, 2.6717999}, //
+
30124 {0.571046889, 2.67045689}, //
+
30125 {0.568872213, 2.66991115}, //
+
30126 {0.567032099, 2.66944933}, //
+
30127 {0.56351912, 2.6685679}, //
+
30128 {0.562849998, 2.66840005}, //
+
30129 {0.556050003, 2.69215012}, //
+
30130 {0.556805551, 2.69357705}, //
+
30131 {0.5575611, 2.69483638}, //
+
30132 {0.558316648, 2.69592786}, //
+
30133 {0.559072196, 2.69685125}, //
+
30134 {0.559827805, 2.6976068}, //
+
30135 {0.560583353, 2.6981945}, //
+
30136 {0.561338902, 2.69861412}, //
+
30137 {0.56209445, 2.69886613}, //
+
30138 {0.562849998, 2.69895005}, //
+
30139 {0.567434549, 2.70042968}, //
+
30140 {0.572143853, 2.70186853}, //
+
30141 {0.576977789, 2.70326662}, //
+
30142 {0.581936419, 2.70462418}, //
+
30143 {0.587019742, 2.70594072}, //
+
30144 {0.592227757, 2.70721674}, //
+
30145 {0.597560465, 2.70845175}, //
+
30146 {0.603017926, 2.70964622}, //
+
30147 {0.60860002, 2.71079993}, //
+
30148 {0.614443839, 2.71187043}, //
+
30149 {0.620664179, 2.71281481}, //
+
30150 {0.627261102, 2.7136333}, //
+
30151 {0.634234548, 2.7143259}, //
+
30152 {0.641584575, 2.71489263}, //
+
30153 {0.649311125, 2.71533322}, //
+
30154 {0.657414198, 2.71564817}, //
+
30155 {0.665893853, 2.715837}, //
+
30156 {0.67474997, 2.71589994}, //
+
30157 {0.678558648, 2.71589994}, //
+
30158 {0.686427772, 2.71589994}, //
+
30159 {0.690488279, 2.71589994}, //
+
30160 {0.712050021, 2.71589994}, //
+
30161 {0.719687641, 2.71587896}, //
+
30162 {0.727533937, 2.71581602}, //
+
30163 {0.735588908, 2.71571112}, //
+
30164 {0.743852496, 2.71556425}, //
+
30165 {0.7523247, 2.71537542}, //
+
30166 {0.76100558, 2.7151444}, //
+
30167 {0.769895077, 2.71487164}, //
+
30168 {0.778993189, 2.71455669}, //
+
30169 {0.788299978, 2.71420002}, //
+
30170 {0.797994435, 2.71359205}, //
+
30171 {0.808233321, 2.71252346}, //
+
30172 {0.819016695, 2.71099448}, //
+
30173 {0.830344439, 2.70900488}, //
+
30174 {0.842216671, 2.70655489}, //
+
30175 {0.854633331, 2.70364451}, //
+
30176 {0.867594421, 2.70027351}, //
+
30177 {0.881099999, 2.69644189}, //
+
30178 {0.895150006, 2.69215012}, //
+
30179 {0.907519162, 2.68987274}, //
+
30180 {0.920515418, 2.68755245}, //
+
30181 {0.934138894, 2.68518877}, //
+
30182 {0.94838953, 2.68278217}, //
+
30183 {0.963267267, 2.68033218}, //
+
30184 {0.978772223, 2.6778388}, //
+
30185 {0.994904339, 2.67530251}, //
+
30186 {1.01166356, 2.67272282}, //
+
30187 {1.02904999, 2.67009997}, //
+
30188 {1.04665613, 2.66752911}, //
+
30189 {1.06405246, 2.66508269}, //
+
30190 {1.08123887, 2.66276121}, //
+
30191 {1.09821546, 2.66056418}, //
+
30192 {1.11498213, 2.65849209}, //
+
30193 {1.13153887, 2.65654445}, //
+
30194 {1.1478858, 2.6547215}, //
+
30195 {1.1640228, 2.65302348}, //
+
30196 {1.17995, 2.65144992}, //
+
30197 {1.19598329, 2.64994931}, //
+
30198 {1.21092772, 2.64844751}, //
+
30199 {1.2247833, 2.64694452}, //
+
30200 {1.23755002, 2.6454401}, //
+
30201 {1.24922776, 2.64393449}, //
+
30202 {1.25981665, 2.64242768}, //
+
30203 {1.26931667, 2.64091969}, //
+
30204 {1.27772772, 2.6394105}, //
+
30205 {1.28505003, 2.63790011}, //
+
30206 {1.2922889, 2.63714504}, //
+
30207 {1.30044997, 2.6363914}, //
+
30208 {1.30953336, 2.63563895}, //
+
30209 {1.31953883, 2.6348877}, //
+
30210 {1.33046663, 2.63413763}, //
+
30211 {1.34231663, 2.633389}, //
+
30212 {1.35508883, 2.63264132}, //
+
30213 {1.36878335, 2.63189507}, //
+
30214 {1.38339996, 2.63115001}, //
+
30215 {1.39701855, 2.6303525}, //
+
30216 {1.41076291, 2.62947106}, //
+
30217 {1.42463338, 2.62850547}, //
+
30218 {1.43862963, 2.62745619}, //
+
30219 {1.45275187, 2.62632275}, //
+
30220 {1.46700001, 2.62510562}, //
+
30221 {1.48137403, 2.62380433}, //
+
30222 {1.49587405, 2.62241912}, //
+
30223 {1.51049995, 2.62094998}, //
+
30224 {1.52475989, 2.61931348}, //
+
30225 {1.53813946, 2.61742663}, //
+
30226 {1.55063891, 2.61528897}, //
+
30227 {1.56225801, 2.61290073}, //
+
30228 {1.57299685, 2.61026168}, //
+
30229 {1.58285558, 2.60737228}, //
+
30230 {1.59183395, 2.60423207}, //
+
30231 {1.59993207, 2.60084128}, //
+
30232 {1.60714996, 2.59719992}, //
+
30233 {1.61770558, 2.5926888}, //
+
30234 {1.62298334, 2.59043336}, //
+
30235 {1.63353884, 2.58592224}, //
+
30236 {1.63881671, 2.58366656}, //
+
30237 {1.65464997, 2.57690001}, //
+
30238 {1.6693821, 2.57032108}, //
+
30239 {1.6834451, 2.56416178}, //
+
30240 {1.69683886, 2.55842233}, //
+
30241 {1.70956361, 2.55310249}, //
+
30242 {1.72161913, 2.54820251}, //
+
30243 {1.73300552, 2.54372215}, //
+
30244 {1.7437228, 2.53966165}, //
+
30245 {1.75377095, 2.53602099}, //
+
30246 {1.76314998, 2.53279996}, //
+
30247 {1.77007413, 2.52964187}, //
+
30248 {1.7772907, 2.52619004}, //
+
30249 {1.78480005, 2.52244449}, //
+
30250 {1.79260182, 2.51840496}, //
+
30251 {1.80069625, 2.5140717}, //
+
30252 {1.80908334, 2.50944448}, //
+
30253 {1.81776297, 2.50452352}, //
+
30254 {1.82673514, 2.49930859}, //
+
30255 {1.83599997, 2.49379992}, //
+
30256 {1.84510803, 2.48821783}, //
+
30257 {1.85358763, 2.48276043}, //
+
30258 {1.86143887, 2.47742772}, //
+
30259 {1.86866176, 2.47221971}, //
+
30260 {1.87525618, 2.46713638}, //
+
30261 {1.88122225, 2.46217775}, //
+
30262 {1.88655984, 2.45734382}, //
+
30263 {1.89126909, 2.45263457}, //
+
30264 {1.89534998, 2.44805002}, //
+
30265 {1.89905369, 2.44197536}, //
+
30266 {1.90263152, 2.43581796}, //
+
30267 {1.90608335, 2.42957783}, //
+
30268 {1.90940928, 2.42325497}, //
+
30269 {1.91260922, 2.41684937}, //
+
30270 {1.91568339, 2.41036105}, //
+
30271 {1.91863143, 2.40379024}, //
+
30272 {1.92145371, 2.39713645}, //
+
30273 {1.92414999, 2.39039993}, //
+
30274 {1.92656362, 2.38374758}, //
+
30275 {1.92851543, 2.37734556}, //
+
30276 {1.93000555, 2.37119436}, //
+
30277 {1.93103397, 2.36529374}, //
+
30278 {1.93160057, 2.35964394}, //
+
30279 {1.93170559, 2.35424447}, //
+
30280 {1.9313488, 2.34909558}, //
+
30281 {1.93053019, 2.34419751}, //
+
30282 {1.92925, 2.33955002}, //
+
30283 {1.92840004, 2.33791351}, //
+
30284 {1.92733884, 2.33602643}, //
+
30285 {1.92606664, 2.33388901}, //
+
30286 {1.92458332, 2.33150053}, //
+
30287 {1.92288888, 2.32886171}, //
+
30288 {1.92098331, 2.32597232}, //
+
30289 {1.91886663, 2.32283211}, //
+
30290 {1.91653883, 2.31944132}, //
+
30291 {1.91400003, 2.31579995}, //
+
30292 {1.91136611, 2.31199145}, //
+
30293 {1.90873086, 2.30809879}, //
+
30294 {1.90609443, 2.30412221}, //
+
30295 {1.90345681, 2.3000617}, //
+
30296 {1.90081787, 2.29591727}, //
+
30297 {1.89817774, 2.29168892}, //
+
30298 {1.89553642, 2.28737664}, //
+
30299 {1.89289379, 2.2829802}, //
+
30300 {1.89024997, 2.27850008}, //
+
30301 {1.887658, 2.27406168}, //
+
30302 {1.88514876, 2.26979136}, //
+
30303 {1.88272226, 2.2656889}, //
+
30304 {1.88037837, 2.26175427}, //
+
30305 {1.87811732, 2.25798774}, //
+
30306 {1.87593889, 2.25438881}, //
+
30307 {1.87384319, 2.25095797}, //
+
30308 {1.87183022, 2.24769497}, //
+
30309 {1.86989999, 2.24460006}, //
+
30310 {1.86812651, 2.2417562}, //
+
30311 {1.86656177, 2.23924685}, //
+
30312 {1.86520553, 2.23707223}, //
+
30313 {1.86405802, 2.23523211}, //
+
30314 {1.86311913, 2.2337265}, //
+
30315 {1.86238885, 2.23255563}, //
+
30316 {1.86186731, 2.23171902}, //
+
30317 {1.86155427, 2.23121738}, //
+
30318 {1.86144996, 2.23105001}, //
+
30319 });
+
30320 polys.push_back({
+
30321 {5.16730022, 1.87164998}, //
+
30322 {5.16502285, 1.87388456}, //
+
30323 {5.16270256, 1.87607718}, //
+
30324 {5.16033888, 1.87822783}, //
+
30325 {5.15793228, 1.8803364}, //
+
30326 {5.15548229, 1.88240314}, //
+
30327 {5.15298891, 1.88442779}, //
+
30328 {5.15045261, 1.88641047}, //
+
30329 {5.14787292, 1.8883512}, //
+
30330 {5.14524984, 1.89024997}, //
+
30331 {5.14265823, 1.89211726}, //
+
30332 {5.14014864, 1.8939414}, //
+
30333 {5.13772202, 1.89572227}, //
+
30334 {5.13537836, 1.89745986}, //
+
30335 {5.1331172, 1.89915431}, //
+
30336 {5.13093901, 1.90080559}, //
+
30337 {5.12884331, 1.90241361}, //
+
30338 {5.1268301, 1.90397835}, //
+
30339 {5.12489986, 1.90550005}, //
+
30340 {5.11738873, 1.91154444}, //
+
30341 {5.11655426, 1.91221607}, //
+
30342 {5.11644983, 1.91229999}, //
+
30343 {5.11651278, 1.91236293}, //
+
30344 {5.11670208, 1.91255188}, //
+
30345 {5.11745739, 1.91330743}, //
+
30346 {5.11802387, 1.91387403}, //
+
30347 {5.11871672, 1.91456664}, //
+
30348 {5.11953497, 1.91538513}, //
+
30349 {5.12047958, 1.91632962}, //
+
30350 {5.12155008, 1.9174}, //
+
30351 {5.12270355, 1.91853273}, //
+
30352 {5.12389803, 1.91966414}, //
+
30353 {5.12513351, 1.92079449}, //
+
30354 {5.12640905, 1.9219234}, //
+
30355 {5.12772608, 1.92305124}, //
+
30356 {5.12908316, 1.92417777}, //
+
30357 {5.13048124, 1.9253031}, //
+
30358 {5.13192034, 1.92642713}, //
+
30359 {5.13339996, 1.92754996}, //
+
30360 {5.13495255, 1.9286623}, //
+
30361 {5.13658762, 1.92973268}, //
+
30362 {5.13830566, 1.9307611}, //
+
30363 {5.1401062, 1.93174756}, //
+
30364 {5.14198971, 1.93269193}, //
+
30365 {5.14395571, 1.93359447}, //
+
30366 {5.1460042, 1.93445492}, //
+
30367 {5.14813566, 1.93527341}, //
+
30368 {5.15035009, 1.93605006}, //
+
30369 {5.15209055, 1.93779075}, //
+
30370 {5.15695, 1.94264996}, //
+
30371 {5.16006851, 1.94576848}, //
+
30372 {5.16364622, 1.9493463}, //
+
30373 {5.16768312, 1.95338333}, //
+
30374 {5.1721797, 1.95787966}, //
+
30375 {5.18254995, 1.96825004}, //
+
30376 {5.18816376, 1.97398889}, //
+
30377 {5.19369316, 1.9798944}, //
+
30378 {5.19913912, 1.98596668}, //
+
30379 {5.20450068, 1.9922055}, //
+
30380 {5.20977831, 1.99861109}, //
+
30381 {5.21497202, 2.00518322}, //
+
30382 {5.22008228, 2.01192212}, //
+
30383 {5.22510815, 2.01882768}, //
+
30384 {5.23005009, 2.02589989}, //
+
30385 {5.2348032, 2.03286719}, //
+
30386 {5.23926258, 2.03945804}, //
+
30387 {5.24342775, 2.04567218}, //
+
30388 {5.24729919, 2.05150986}, //
+
30389 {5.25087738, 2.05697107}, //
+
30390 {5.25416088, 2.06205559}, //
+
30391 {5.25715113, 2.06676364}, //
+
30392 {5.25984764, 2.07109499}, //
+
30393 {5.26224995, 2.07505012}, //
+
30394 {5.26521921, 2.08030677}, //
+
30395 {5.26810455, 2.0855217}, //
+
30396 {5.27090549, 2.09069443}, //
+
30397 {5.27362299, 2.0958252}, //
+
30398 {5.27625608, 2.10091424}, //
+
30399 {5.27880573, 2.10596108}, //
+
30400 {5.28127098, 2.11096597}, //
+
30401 {5.28365231, 2.11592913}, //
+
30402 {5.28595018, 2.12085009}, //
+
30403 {5.28817415, 2.12568712}, //
+
30404 {5.29031277, 2.13039804}, //
+
30405 {5.2923665, 2.1349833}, //
+
30406 {5.29433537, 2.13944268}, //
+
30407 {5.2962184, 2.14377594}, //
+
30408 {5.29801655, 2.14798331}, //
+
30409 {5.29972982, 2.1520648}, //
+
30410 {5.30135727, 2.1560204}, //
+
30411 {5.30289984, 2.15984988}, //
+
30412 {5.30432701, 2.16349077}, //
+
30413 {5.30558634, 2.16687965}, //
+
30414 {5.30667782, 2.17001677}, //
+
30415 {5.30760145, 2.17290187}, //
+
30416 {5.30835676, 2.1755352}, //
+
30417 {5.30894423, 2.17791677}, //
+
30418 {5.30936432, 2.18004632}, //
+
30419 {5.30961609, 2.1819241}, //
+
30420 {5.30970001, 2.18354988}, //
+
30421 {5.30961609, 2.18348694}, //
+
30422 {5.30936432, 2.18329811}, //
+
30423 {5.30894423, 2.1829834}, //
+
30424 {5.30835676, 2.18254256}, //
+
30425 {5.30760145, 2.18197584}, //
+
30426 {5.30558634, 2.18046474}, //
+
30427 {5.30432701, 2.17952037}, //
+
30428 {5.30289984, 2.17845011}, //
+
30429 {5.30139923, 2.17732716}, //
+
30430 {5.29989767, 2.17620301}, //
+
30431 {5.29839468, 2.17507768}, //
+
30432 {5.29689026, 2.17395115}, //
+
30433 {5.29538441, 2.17282343}, //
+
30434 {5.2938776, 2.17169452}, //
+
30435 {5.29236984, 2.17056417}, //
+
30436 {5.29086065, 2.16943264}, //
+
30437 {5.28935003, 2.16829991}, //
+
30438 {5.28784943, 2.16714621}, //
+
30439 {5.28634739, 2.16595197}, //
+
30440 {5.2848444, 2.16471672}, //
+
30441 {5.28333998, 2.1634407}, //
+
30442 {5.2818346, 2.16212416}, //
+
30443 {5.2803278, 2.1607666}, //
+
30444 {5.27881956, 2.15936852}, //
+
30445 {5.27731037, 2.15792966}, //
+
30446 {5.27580023, 2.15645003}, //
+
30447 {5.27429914, 2.1555686}, //
+
30448 {5.27279758, 2.15443516}, //
+
30449 {5.27129459, 2.15304995}, //
+
30450 {5.26979017, 2.15141296}, //
+
30451 {5.2682848, 2.14952397}, //
+
30452 {5.26677799, 2.14738345}, //
+
30453 {5.26526976, 2.14499068}, //
+
30454 {5.26376057, 2.14234638}, //
+
30455 {5.26224995, 2.13945007}, //
+
30456 {5.26073933, 2.13643885}, //
+
30457 {5.25923014, 2.13342786}, //
+
30458 {5.25772238, 2.13041663}, //
+
30459 {5.25621557, 2.12740564}, //
+
30460 {5.25470972, 2.12439442}, //
+
30461 {5.25320578, 2.12138343}, //
+
30462 {5.25170231, 2.1183722}, //
+
30463 {5.25020075, 2.11536121}, //
+
30464 {5.24870014, 2.11234999}, //
+
30465 {5.2464757, 2.10724998}, //
+
30466 {5.24433708, 2.10248327}, //
+
30467 {5.24228334, 2.09805012}, //
+
30468 {5.24031496, 2.09395003}, //
+
30469 {5.23843145, 2.09018326}, //
+
30470 {5.2366333, 2.08675003}, //
+
30471 {5.2349205, 2.08365011}, //
+
30472 {5.23329258, 2.08088326}, //
+
30473 {5.23175001, 2.07844996}, //
+
30474 {5.23011351, 2.07608962}, //
+
30475 {5.22822666, 2.07351923}, //
+
30476 {5.226089, 2.07073879}, //
+
30477 {5.22370052, 2.06774879}, //
+
30478 {5.22106171, 2.06454873}, //
+
30479 {5.21817207, 2.06113887}, //
+
30480 {5.2150321, 2.0575192}, //
+
30481 {5.21164131, 2.05368948}, //
+
30482 {5.20800018, 2.04964995}, //
+
30483 {5.20414925, 2.04548454}, //
+
30484 {5.20013094, 2.04127717}, //
+
30485 {5.19594431, 2.03702784}, //
+
30486 {5.19159031, 2.0327363}, //
+
30487 {5.18706799, 2.02840304}, //
+
30488 {5.18237782, 2.02402782}, //
+
30489 {5.1775198, 2.0196104}, //
+
30490 {5.17249393, 2.01515126}, //
+
30491 {5.16730022, 2.01064992}, //
+
30492 {5.16211653, 2.00621176}, //
+
30493 {5.1571002, 2.00194144}, //
+
30494 {5.15224981, 1.99783885}, //
+
30495 {5.1475668, 1.99390435}, //
+
30496 {5.14305019, 1.9901377}, //
+
30497 {5.13870001, 1.98653889}, //
+
30498 {5.13451672, 1.98310804}, //
+
30499 {5.13049984, 1.97984505}, //
+
30500 {5.12664986, 1.97675002}, //
+
30501 {5.12442541, 1.97521794}, //
+
30502 {5.12228441, 1.97364378}, //
+
30503 {5.12022781, 1.97202778}, //
+
30504 {5.11825514, 1.9703697}, //
+
30505 {5.11636591, 1.96866977}, //
+
30506 {5.11456108, 1.96692777}, //
+
30507 {5.11284018, 1.9651438}, //
+
30508 {5.11120319, 1.96331787}, //
+
30509 {5.10965014, 1.96144998}, //
+
30510 {5.10821247, 1.95959258}, //
+
30511 {5.10689926, 1.95777595}, //
+
30512 {5.10571098, 1.95599997}, //
+
30513 {5.10464764, 1.95426476}, //
+
30514 {5.10370874, 1.95257032}, //
+
30515 {5.10289431, 1.95091665}, //
+
30516 {5.1022048, 1.94930375}, //
+
30517 {5.10164022, 1.94773149}, //
+
30518 {5.1012001, 1.94620001}, //
+
30519 {5.10082245, 1.94474137}, //
+
30520 {5.10044432, 1.94336545}, //
+
30521 {5.10006666, 1.94207227}, //
+
30522 {5.09968901, 1.9408617}, //
+
30523 {5.09931087, 1.93973398}, //
+
30524 {5.09893322, 1.93868887}, //
+
30525 {5.09855556, 1.9377265}, //
+
30526 {5.09817791, 1.93684697}, //
+
30527 {5.09779978, 1.93605006}, //
+
30528 {5.09628868, 1.93302774}, //
+
30529 {5.09609985, 1.93264997}, //
+
30530 {5.03170013, 1.97675002}, //
+
30531 {5.03170013, 2.02760005}, //
+
30532 {5.03195143, 2.03222656}, //
+
30533 {5.03270483, 2.03706169}, //
+
30534 {5.0339613, 2.04210567}, //
+
30535 {5.03571987, 2.04735804}, //
+
30536 {5.03798103, 2.05281925}, //
+
30537 {5.0407443, 2.05848885}, //
+
30538 {5.04401064, 2.06436729}, //
+
30539 {5.04777908, 2.07045436}, //
+
30540 {5.05205011, 2.07675004}, //
+
30541 {5.05673933, 2.08313942}, //
+
30542 {5.06176376, 2.08948588}, //
+
30543 {5.06712246, 2.09578896}, //
+
30544 {5.07281542, 2.10204887}, //
+
30545 {5.07884312, 2.1082654}, //
+
30546 {5.08520555, 2.11443877}, //
+
30547 {5.09190226, 2.12056923}, //
+
30548 {5.09893417, 2.12665606}, //
+
30549 {5.10629988, 2.13269997}, //
+
30550 {5.10945749, 2.13523817}, //
+
30551 {5.11290741, 2.13831973}, //
+
30552 {5.1166501, 2.14194441}, //
+
30553 {5.1206851, 2.14611244}, //
+
30554 {5.12501287, 2.15082335}, //
+
30555 {5.12963343, 2.15607786}, //
+
30556 {5.13454628, 2.16187525}, //
+
30557 {5.13975191, 2.16821599}, //
+
30558 {5.14524984, 2.17510009}, //
+
30559 {5.15096807, 2.18227649}, //
+
30560 {5.15681028, 2.18949509}, //
+
30561 {5.1627779, 2.19675565}, //
+
30562 {5.16886997, 2.20405793}, //
+
30563 {5.1750865, 2.21140242}, //
+
30564 {5.18142796, 2.21878886}, //
+
30565 {5.18789387, 2.22621727}, //
+
30566 {5.19448471, 2.23368764}, //
+
30567 {5.20120001, 2.24119997}, //
+
30568 {5.20719051, 2.24864936}, //
+
30569 {5.21309614, 2.2559309}, //
+
30570 {5.21891689, 2.26304436}, //
+
30571 {5.22465181, 2.26999021}, //
+
30572 {5.23030186, 2.27676797}, //
+
30573 {5.23586655, 2.28337789}, //
+
30574 {5.24134636, 2.28981972}, //
+
30575 {5.24674082, 2.29609394}, //
+
30576 {5.25204992, 2.30220008}, //
+
30577 {5.25720263, 2.30806541}, //
+
30578 {5.26210451, 2.31359506}, //
+
30579 {5.26675558, 2.31878901}, //
+
30580 {5.27115631, 2.32364702}, //
+
30581 {5.27530622, 2.32816911}, //
+
30582 {5.27920532, 2.3323555}, //
+
30583 {5.28285456, 2.3362062}, //
+
30584 {5.2862525, 2.33972096}, //
+
30585 {5.2894001, 2.34290004}, //
+
30586 {5.29239035, 2.34602594}, //
+
30587 {5.29533815, 2.34935927}, //
+
30588 {5.29824448, 2.35290003}, //
+
30589 {5.30110884, 2.35664821}, //
+
30590 {5.30393076, 2.36060381}, //
+
30591 {5.3067112, 2.3647666}, //
+
30592 {5.3094492, 2.36913705}, //
+
30593 {5.31214571, 2.37371492}, //
+
30594 {5.31479979, 2.37849998}, //
+
30595 {5.31745434, 2.38342094}, //
+
30596 {5.32015085, 2.38838387}, //
+
30597 {5.32288885, 2.39338899}, //
+
30598 {5.32566929, 2.39843583}, //
+
30599 {5.32849121, 2.40352464}, //
+
30600 {5.33135557, 2.40865564}, //
+
30601 {5.33426189, 2.41382837}, //
+
30602 {5.3372097, 2.4190433}, //
+
30603 {5.34019995, 2.42429996}, //
+
30604 {5.34313774, 2.4294939}, //
+
30605 {5.34590626, 2.43451977}, //
+
30606 {5.3485055, 2.43937778}, //
+
30607 {5.35093594, 2.44406796}, //
+
30608 {5.3531971, 2.44859004}, //
+
30609 {5.35528898, 2.45294452}, //
+
30610 {5.35721159, 2.45713091}, //
+
30611 {5.3589654, 2.46114945}, //
+
30612 {5.36054993, 2.46499991}, //
+
30613 {5.3619771, 2.46855736}, //
+
30614 {5.36323643, 2.47169638}, //
+
30615 {5.36525106, 2.47671843}, //
+
30616 {5.36600685, 2.47860193}, //
+
30617 {5.36659431, 2.48006678}, //
+
30618 {5.36726618, 2.48174071}, //
+
30619 {5.3673501, 2.48195004}, //
+
30620 {5.36820984, 2.48661852}, //
+
30621 {5.36927843, 2.49157953}, //
+
30622 {5.3705554, 2.49683332}, //
+
30623 {5.37204123, 2.50237966}, //
+
30624 {5.3737359, 2.50821853}, //
+
30625 {5.37563896, 2.51434994}, //
+
30626 {5.3777504, 2.52077413}, //
+
30627 {5.38007116, 2.52749085}, //
+
30628 {5.38259983, 2.53449988}, //
+
30629 {5.38528585, 2.54165554}, //
+
30630 {5.38805437, 2.5488112}, //
+
30631 {5.39090538, 2.55596662}, //
+
30632 {5.39383936, 2.56312227}, //
+
30633 {5.39685631, 2.57027769}, //
+
30634 {5.39995575, 2.57743335}, //
+
30635 {5.40313768, 2.584589}, //
+
30636 {5.40640259, 2.59174442}, //
+
30637 {5.40974998, 2.59890008}, //
+
30638 {5.4130969, 2.60591912}, //
+
30639 {5.4163599, 2.61264324}, //
+
30640 {5.41953897, 2.6190722}, //
+
30641 {5.42263412, 2.62520623}, //
+
30642 {5.42564487, 2.6310451}, //
+
30643 {5.42857218, 2.63658881}, //
+
30644 {5.43141556, 2.6418376}, //
+
30645 {5.43417454, 2.64679146}, //
+
30646 {5.43685007, 2.65144992}, //
+
30647 {5.43934774, 2.65572095}, //
+
30648 {5.44155121, 2.65948939}, //
+
30649 {5.44346094, 2.66275549}, //
+
30650 {5.44507694, 2.66551924}, //
+
30651 {5.44742775, 2.66953897}, //
+
30652 {5.44816256, 2.67079496}, //
+
30653 {5.44875002, 2.6717999}, //
+
30654 {5.55725002, 2.54635}, //
+
30655 {5.55725002, 2.54632902}, //
+
30656 {5.55725002, 2.54626608}, //
+
30657 {5.55725002, 2.54465008}, //
+
30658 {5.55725002, 2.54429317}, //
+
30659 {5.55725002, 2.54397845}, //
+
30660 {5.55725002, 2.54294991}, //
+
30661 {5.55722904, 2.54290795}, //
+
30662 {5.5571661, 2.54278207}, //
+
30663 {5.5570612, 2.54257226}, //
+
30664 {5.5567255, 2.54190063}, //
+
30665 {5.55622149, 2.54089332}, //
+
30666 {5.55590677, 2.54026365}, //
+
30667 {5.5555501, 2.53955007}, //
+
30668 {5.55519342, 2.53882599}, //
+
30669 {5.55487823, 2.53814268}, //
+
30670 {5.55460548, 2.5374999}, //
+
30671 {5.55437469, 2.53689814}, //
+
30672 {5.55418587, 2.53633714}, //
+
30673 {5.554039, 2.53581667}, //
+
30674 {5.5539341, 2.53533697}, //
+
30675 {5.55387115, 2.53489804}, //
+
30676 {5.55385017, 2.53449988}, //
+
30677 {5.55382919, 2.53405929}, //
+
30678 {5.55376625, 2.53349257}, //
+
30679 {5.55366135, 2.53279996}, //
+
30680 {5.553514, 2.53198147}, //
+
30681 {5.55332518, 2.53103709}, //
+
30682 {5.55309439, 2.52996659}, //
+
30683 {5.55282164, 2.52877045}, //
+
30684 {5.55250692, 2.52744818}, //
+
30685 {5.55214977, 2.52600002}, //
+
30686 {5.55177212, 2.5245204}, //
+
30687 {5.55139446, 2.52308154}, //
+
30688 {5.55101681, 2.52168322}, //
+
30689 {5.55063868, 2.5203259}, //
+
30690 {5.55026102, 2.51900935}, //
+
30691 {5.54988337, 2.51773334}, //
+
30692 {5.54950571, 2.51649809}, //
+
30693 {5.54912758, 2.51530361}, //
+
30694 {5.54874992, 2.5141499}, //
+
30695 {5.54837227, 2.5130167}, //
+
30696 {5.54799461, 2.51188326}, //
+
30697 {5.54761648, 2.51075006}, //
+
30698 {5.54723883, 2.50961661}, //
+
30699 {5.54686117, 2.50848341}, //
+
30700 {5.54648352, 2.50734997}, //
+
30701 {5.54535007, 2.50395012}, //
+
30702 {5.54495144, 2.50278521}, //
+
30703 {5.54451036, 2.50153518}, //
+
30704 {5.54402781, 2.50020003}, //
+
30705 {5.54350328, 2.49877954}, //
+
30706 {5.54293633, 2.49727416}, //
+
30707 {5.54232788, 2.49568343}, //
+
30708 {5.541677, 2.49400735}, //
+
30709 {5.54098463, 2.49224639}, //
+
30710 {5.54024982, 2.49040008}, //
+
30711 {5.53952599, 2.48852158}, //
+
30712 {5.53884268, 2.48664188}, //
+
30713 {5.5381999, 2.484761}, //
+
30714 {5.53759813, 2.48287892}, //
+
30715 {5.5370369, 2.48099566}, //
+
30716 {5.53651667, 2.47911119}, //
+
30717 {5.53603697, 2.4772253}, //
+
30718 {5.53559828, 2.47533822}, //
+
30719 {5.53520012, 2.47344995}, //
+
30720 {5.53475904, 2.4715507}, //
+
30721 {5.53419256, 2.46960807}, //
+
30722 {5.53350019, 2.46762228}, //
+
30723 {5.53268147, 2.4655931}, //
+
30724 {5.53173685, 2.463521}, //
+
30725 {5.53066683, 2.46140552}, //
+
30726 {5.52947044, 2.45924687}, //
+
30727 {5.52814817, 2.45704508}, //
+
30728 {5.52670002, 2.45479989}, //
+
30729 {5.52524137, 2.45250177}, //
+
30730 {5.52386522, 2.45011854}, //
+
30731 {5.52257204, 2.44764996}, //
+
30732 {5.52136183, 2.44509625}, //
+
30733 {5.52023411, 2.44245744}, //
+
30734 {5.51918888, 2.43973327}, //
+
30735 {5.51822662, 2.43692398}, //
+
30736 {5.51734686, 2.43402958}, //
+
30737 {5.51655006, 2.43105006}, //
+
30738 {5.5157733, 2.42803884}, //
+
30739 {5.51495504, 2.42502785}, //
+
30740 {5.51409435, 2.42201662}, //
+
30741 {5.51319218, 2.41900563}, //
+
30742 {5.51224756, 2.41599441}, //
+
30743 {5.51126099, 2.41298342}, //
+
30744 {5.51023293, 2.40997219}, //
+
30745 {5.50916243, 2.4069612}, //
+
30746 {5.50804996, 2.40394998}, //
+
30747 {5.50692701, 2.40089703}, //
+
30748 {5.50580311, 2.39775991}, //
+
30749 {5.50467777, 2.39453888}, //
+
30750 {5.50355101, 2.39123392}, //
+
30751 {5.50242329, 2.38784504}, //
+
30752 {5.50129461, 2.38437223}, //
+
30753 {5.50016403, 2.38081551}, //
+
30754 {5.4990325, 2.37717462}, //
+
30755 {5.49790001, 2.37345004}, //
+
30756 {5.49674606, 2.3696413}, //
+
30757 {5.49555206, 2.36574888}, //
+
30758 {5.49431658, 2.3617723}, //
+
30759 {5.49304056, 2.35771179}, //
+
30760 {5.49172401, 2.35356736}, //
+
30761 {5.49036646, 2.34933877}, //
+
30762 {5.48896837, 2.34502649}, //
+
30763 {5.48752975, 2.34063029}, //
+
30764 {5.48605013, 2.33614993}, //
+
30765 {5.47309256, 2.30107355}, //
+
30766 {5.45984268, 2.26666594}, //
+
30767 {5.44630003, 2.2329278}, //
+
30768 {5.4324646, 2.19985867}, //
+
30769 {5.41833687, 2.16745853}, //
+
30770 {5.40391684, 2.13572788}, //
+
30771 {5.38920355, 2.10466599}, //
+
30772 {5.37419796, 2.07427335}, //
+
30773 {5.35890007, 2.04454994}, //
+
30774 {5.3439784, 2.01641726}, //
+
30775 {5.33010244, 1.99079692}, //
+
30776 {5.31727219, 1.96768892}, //
+
30777 {5.30548763, 1.94709325}, //
+
30778 {5.29474878, 1.92900991}, //
+
30779 {5.28505564, 1.91343892}, //
+
30780 {5.2764082, 1.90038025}, //
+
30781 {5.26880598, 1.88983393}, //
+
30782 {5.26224995, 1.88180006}, //
+
30783 {5.25925922, 1.87822163}, //
+
30784 {5.25630903, 1.87501979}, //
+
30785 {5.25339985, 1.87219441}, //
+
30786 {5.25053167, 1.86974573}, //
+
30787 {5.24770355, 1.86767352}, //
+
30788 {5.24491644, 1.86597776}, //
+
30789 {5.24217033, 1.86465859}, //
+
30790 {5.23946476, 1.86371601}, //
+
30791 {5.23680019, 1.86315}, //
+
30792 {5.23422909, 1.86279321}, //
+
30793 {5.23178291, 1.86247838}, //
+
30794 {5.22946119, 1.86220551}, //
+
30795 {5.2272644, 1.86197472}, //
+
30796 {5.22519207, 1.86178577}, //
+
30797 {5.22324467, 1.8616389}, //
+
30798 {5.22142172, 1.861534}, //
+
30799 {5.21972322, 1.86147094}, //
+
30800 {5.21815014, 1.86144996}, //
+
30801 {5.21522284, 1.861408}, //
+
30802 {5.21246338, 1.86128211}, //
+
30803 {5.20987225, 1.86107218}, //
+
30804 {5.20744896, 1.86077845}, //
+
30805 {5.20519304, 1.86040068}, //
+
30806 {5.20310545, 1.85993886}, //
+
30807 {5.2011857, 1.85939324}, //
+
30808 {5.1994338, 1.85876358}, //
+
30809 {5.19785023, 1.85804999}, //
+
30810 {5.19711542, 1.8573364}, //
+
30811 {5.19642305, 1.85670674}, //
+
30812 {5.19577217, 1.85616112}, //
+
30813 {5.19516373, 1.85569942}, //
+
30814 {5.19459677, 1.85532165}, //
+
30815 {5.19407225, 1.85502779}, //
+
30816 {5.19358969, 1.85481787}, //
+
30817 {5.19314861, 1.85469198}, //
+
30818 {5.19274998, 1.85465002}, //
+
30819 {5.19237232, 1.85462904}, //
+
30820 {5.19199467, 1.8545661}, //
+
30821 {5.19161654, 1.85446107}, //
+
30822 {5.19123888, 1.85431421}, //
+
30823 {5.19086123, 1.85412526}, //
+
30824 {5.19048357, 1.85389447}, //
+
30825 {5.19010544, 1.8536216}, //
+
30826 {5.18972778, 1.85330677}, //
+
30827 {5.18935013, 1.85294998}, //
+
30828 {5.18924427, 1.85284734}, //
+
30829 });
+
30830 polys.push_back({
+
30831 {3.84159994, 2.13269997}, //
+
30832 {3.84057164, 2.13269997}, //
+
30833 {3.84084439, 2.13269997}, //
+
30834 {3.84107542, 2.13269997}, //
+
30835 {3.84126425, 2.13269997}, //
+
30836 {3.84141111, 2.13269997}, //
+
30837 {3.84151602, 2.13269997}, //
+
30838 {3.84159994, 2.13269997}, //
+
30839 {3.84159994, 2.13269997}, //
+
30840 {3.84159994, 2.13269997}, //
+
30841 {3.84159994, 2.13269997}, //
+
30842 {3.84159994, 2.13269997}, //
+
30843 {3.84141111, 2.13288879}, //
+
30844 {3.84126425, 2.1330359}, //
+
30845 {3.84107542, 2.13322473}, //
+
30846 {3.84057164, 2.1337285}, //
+
30847 {3.84025669, 2.13404322}, //
+
30848 {3.83990002, 2.13439989}, //
+
30849 {3.8395431, 2.13477778}, //
+
30850 {3.83922839, 2.13515544}, //
+
30851 {3.83895564, 2.13553333}, //
+
30852 {3.83872461, 2.13591123}, //
+
30853 {3.83853579, 2.13628888}, //
+
30854 {3.83838892, 2.13666677}, //
+
30855 {3.83828402, 2.13704443}, //
+
30856 {3.83822107, 2.13742232}, //
+
30857 {3.83820009, 2.13779998}, //
+
30858 {3.83820009, 2.13819814}, //
+
30859 {3.83820009, 2.13911676}, //
+
30860 {3.83820009, 2.13963699}, //
+
30861 {3.83820009, 2.1408}, //
+
30862 {3.83820009, 2.14144254}, //
+
30863 {3.83820009, 2.14212584}, //
+
30864 {3.83820009, 2.14284992}, //
+
30865 {3.83822107, 2.14362645}, //
+
30866 {3.83828402, 2.14444518}, //
+
30867 {3.83838892, 2.14530563}, //
+
30868 {3.83853579, 2.14620805}, //
+
30869 {3.83872461, 2.14715242}, //
+
30870 {3.83895564, 2.148139}, //
+
30871 {3.83922839, 2.1491673}, //
+
30872 {3.8395431, 2.15023756}, //
+
30873 {3.83990002, 2.15135002}, //
+
30874 {3.84027719, 2.15250373}, //
+
30875 {3.84065318, 2.15369821}, //
+
30876 {3.84102774, 2.15493321}, //
+
30877 {3.84140134, 2.15620923}, //
+
30878 {3.84177351, 2.15752602}, //
+
30879 {3.84214449, 2.15888333}, //
+
30880 {3.84251428, 2.16028142}, //
+
30881 {3.84288263, 2.16172028}, //
+
30882 {3.84325004, 2.1631999}, //
+
30883 {3.84366965, 2.16475248}, //
+
30884 {3.84417343, 2.16638756}, //
+
30885 {3.84476113, 2.1681056}, //
+
30886 {3.84543276, 2.16990614}, //
+
30887 {3.84618831, 2.17178941}, //
+
30888 {3.84702778, 2.17375565}, //
+
30889 {3.84795117, 2.17580438}, //
+
30890 {3.84895873, 2.17793584}, //
+
30891 {3.85004997, 2.18015003}, //
+
30892 {3.85120368, 2.18241596}, //
+
30893 {3.85239816, 2.18468094}, //
+
30894 {3.8536334, 2.18694448}, //
+
30895 {3.85490918, 2.18920684}, //
+
30896 {3.85622597, 2.191468}, //
+
30897 {3.85758328, 2.19372773}, //
+
30898 {3.85898137, 2.19598651}, //
+
30899 {3.86042047, 2.19824386}, //
+
30900 {3.86190009, 2.20050001}, //
+
30901 {3.86345315, 2.20280814}, //
+
30902 {3.86509013, 2.20519876}, //
+
30903 {3.86681104, 2.20767212}, //
+
30904 {3.8686161, 2.21022844}, //
+
30905 {3.87050486, 2.21286726}, //
+
30906 {3.87247777, 2.21558881}, //
+
30907 {3.87453461, 2.21839333}, //
+
30908 {3.87667537, 2.22128034}, //
+
30909 {3.87890005, 2.22425008}, //
+
30910 {3.88651657, 2.23452282}, //
+
30911 {3.89429998, 2.24425244}, //
+
30912 {3.90225005, 2.25343895}, //
+
30913 {3.91036677, 2.2620821}, //
+
30914 {3.91864991, 2.27018213}, //
+
30915 {3.92709994, 2.27773881}, //
+
30916 {3.93571663, 2.28475237}, //
+
30917 {3.94449997, 2.29122281}, //
+
30918 {3.95344996, 2.2971499}, //
+
30919 {3.96274567, 2.30295181}, //
+
30920 {3.97254372, 2.30904627}, //
+
30921 {3.98284435, 2.31543326}, //
+
30922 {3.99364758, 2.32211304}, //
+
30923 {4.00495291, 2.32908511}, //
+
30924 {4.0167613, 2.33634996}, //
+
30925 {4.02907181, 2.34390736}, //
+
30926 {4.04188442, 2.35175753}, //
+
30927 {4.0552001, 2.3599}, //
+
30928 {4.05661678, 2.3599}, //
+
30929 {4.05894995, 2.3599}, //
+
30930 {4.05986643, 2.3599}, //
+
30931 {4.06120014, 2.3599}, //
+
30932 {4.0616169, 2.3599}, //
+
30933 {4.06186676, 2.3599}, //
+
30934 {4.06195021, 2.3599}, //
+
30935 {4.08744812, 2.37366533}, //
+
30936 {4.11118698, 2.38785052}, //
+
30937 {4.13316679, 2.40245557}, //
+
30938 {4.15338707, 2.41748023}, //
+
30939 {4.1718483, 2.43292475}, //
+
30940 {4.18855, 2.44878888}, //
+
30941 {4.20349264, 2.46507287}, //
+
30942 {4.21667576, 2.48177648}, //
+
30943 {4.22809982, 2.49889994}, //
+
30944 {4.23028231, 2.50191116}, //
+
30945 {4.23229504, 2.50492215}, //
+
30946 {4.23413897, 2.50793338}, //
+
30947 {4.23581362, 2.51094437}, //
+
30948 {4.23731899, 2.51395559}, //
+
30949 {4.23865557, 2.51696658}, //
+
30950 {4.23982286, 2.51997781}, //
+
30951 {4.24082088, 2.5229888}, //
+
30952 {4.2416501, 2.52600002}, //
+
30953 {4.24232149, 2.52895856}, //
+
30954 {4.24282551, 2.53179002}, //
+
30955 {4.2431612, 2.5344944}, //
+
30956 {4.24332905, 2.5370717}, //
+
30957 {4.24332905, 2.53952169}, //
+
30958 {4.2431612, 2.54184437}, //
+
30959 {4.24282551, 2.5440402}, //
+
30960 {4.24232149, 2.54610872}, //
+
30961 {4.2416501, 2.54804993}, //
+
30962 {4.24088383, 2.54989624}, //
+
30963 {4.24007463, 2.55165744}, //
+
30964 {4.23922205, 2.55333328}, //
+
30965 {4.23832655, 2.55492401}, //
+
30966 {4.23738766, 2.55642962}, //
+
30967 {4.23640537, 2.55784988}, //
+
30968 {4.23538017, 2.55918527}, //
+
30969 {4.23431158, 2.5604353}, //
+
30970 {4.23320007, 2.56159997}, //
+
30971 {4.23206663, 2.56271243}, //
+
30972 {4.23093319, 2.56378269}, //
+
30973 {4.22980022, 2.56481123}, //
+
30974 {4.22866678, 2.56579757}, //
+
30975 {4.22753334, 2.56674194}, //
+
30976 {4.2263999, 2.56764436}, //
+
30977 {4.22526646, 2.56850505}, //
+
30978 {4.22413349, 2.56932354}, //
+
30979 {4.22300005, 2.57010007}, //
+
30980 {4.22194004, 2.57081366}, //
+
30981 {4.21801233, 2.57345796}, //
+
30982 {4.21794987, 2.57349992}, //
+
30983 {4.21811724, 2.57364631}, //
+
30984 {4.21861935, 2.57408524}, //
+
30985 {4.22062635, 2.57584071}, //
+
30986 {4.22213221, 2.5771575}, //
+
30987 {4.22397232, 2.57876658}, //
+
30988 {4.2261467, 2.58066845}, //
+
30989 {4.22865629, 2.58286285}, //
+
30990 {4.23150015, 2.58535004}, //
+
30991 {4.23453188, 2.58804631}, //
+
30992 {4.23760605, 2.59086847}, //
+
30993 {4.24072218, 2.59381676}, //
+
30994 {4.24388027, 2.59689069}, //
+
30995 {4.24708033, 2.60009074}, //
+
30996 {4.25032234, 2.60341668}, //
+
30997 {4.25360632, 2.60686851}, //
+
30998 {4.25693226, 2.61044621}, //
+
30999 {4.26030016, 2.61415005}, //
+
31000 {4.26365757, 2.61788511}, //
+
31001 {4.26692963, 2.6215353}, //
+
31002 {4.27011681, 2.6250999}, //
+
31003 {4.27321863, 2.62857962}, //
+
31004 {4.2762351, 2.63197398}, //
+
31005 {4.2791667, 2.63528323}, //
+
31006 {4.28201294, 2.63850737}, //
+
31007 {4.2847743, 2.64164639}, //
+
31008 {4.28744984, 2.64470005}, //
+
31009 {4.28993702, 2.64758587}, //
+
31010 {4.29213142, 2.65022087}, //
+
31011 {4.29403353, 2.65260553}, //
+
31012 {4.29564238, 2.65473962}, //
+
31013 {4.2969594, 2.65662289}, //
+
31014 {4.29798317, 2.65825558}, //
+
31015 {4.29871464, 2.65963769}, //
+
31016 {4.2991538, 2.66076922}, //
+
31017 {4.29930019, 2.66164994}, //
+
31018 {4.30315256, 2.63766241}, //
+
31019 {4.30566549, 2.61543274}, //
+
31020 {4.30683899, 2.59496117}, //
+
31021 {4.30667305, 2.57624745}, //
+
31022 {4.3051672, 2.55929208}, //
+
31023 {4.30232239, 2.54409456}, //
+
31024 {4.29813766, 2.53065491}, //
+
31025 {4.29261351, 2.51897335}, //
+
31026 {4.28574991, 2.50904989}, //
+
31027 {4.28353596, 2.50612211}, //
+
31028 {4.2814045, 2.50336123}, //
+
31029 {4.27935553, 2.50076675}, //
+
31030 {4.27738953, 2.49833894}, //
+
31031 {4.27550602, 2.49607778}, //
+
31032 {4.27370548, 2.49398327}, //
+
31033 {4.27198744, 2.49205565}, //
+
31034 {4.27035236, 2.49029446}, //
+
31035 {4.26879978, 2.48869991}, //
+
31036 {4.26733065, 2.48717833}, //
+
31037 {4.26594591, 2.48561358}, //
+
31038 {4.26464462, 2.48400545}, //
+
31039 {4.26342726, 2.4823544}, //
+
31040 {4.26229382, 2.48065996}, //
+
31041 {4.2612443, 2.47892213}, //
+
31042 {4.26027918, 2.47714138}, //
+
31043 {4.25939751, 2.47531724}, //
+
31044 {4.25860023, 2.47344995}, //
+
31045 {4.25793886, 2.4715507}, //
+
31046 {4.25744438, 2.46960807}, //
+
31047 {4.25711679, 2.46762228}, //
+
31048 {4.25695562, 2.4655931}, //
+
31049 {4.25696135, 2.463521}, //
+
31050 {4.25713348, 2.46140552}, //
+
31051 {4.25747204, 2.45924687}, //
+
31052 {4.25797796, 2.45704508}, //
+
31053 {4.25864983, 2.45479989}, //
+
31054 {4.25943708, 2.45260668}, //
+
31055 {4.26030922, 2.45053816}, //
+
31056 {4.26126671, 2.44859433}, //
+
31057 {4.26230907, 2.4467752}, //
+
31058 {4.26343727, 2.44508076}, //
+
31059 {4.26464987, 2.44351101}, //
+
31060 {4.2659483, 2.44206595}, //
+
31061 {4.2673316, 2.44074559}, //
+
31062 {4.26879978, 2.43954992}, //
+
31063 {4.27039433, 2.43843818}, //
+
31064 {4.27215576, 2.43736982}, //
+
31065 {4.27408314, 2.43634439}, //
+
31066 {4.27617788, 2.43536234}, //
+
31067 {4.27843904, 2.43442345}, //
+
31068 {4.28086662, 2.43352771}, //
+
31069 {4.28346109, 2.43267536}, //
+
31070 {4.28622246, 2.43186593}, //
+
31071 {4.28915024, 2.43109989}, //
+
31072 {4.29626274, 2.42988396}, //
+
31073 {4.30404615, 2.42774701}, //
+
31074 {4.3125, 2.42468882}, //
+
31075 {4.32162428, 2.42070985}, //
+
31076 {4.33141851, 2.41580987}, //
+
31077 {4.34188318, 2.40998888}, //
+
31078 {4.35301828, 2.40324688}, //
+
31079 {4.3648243, 2.39558387}, //
+
31080 {4.37729979, 2.38700008}, //
+
31081 {4.38483334, 2.38064265}, //
+
31082 {4.39236689, 2.37361479}, //
+
31083 {4.39989996, 2.36591673}, //
+
31084 {4.40743351, 2.35754824}, //
+
31085 {4.41496658, 2.34850931}, //
+
31086 {4.42250013, 2.33879995}, //
+
31087 {4.43003321, 2.3284204}, //
+
31088 {4.43756676, 2.31737041}, //
+
31089 {4.44509983, 2.30565}, //
+
31090 {4.45254993, 2.29363585}, //
+
31091 {4.45983315, 2.28170443}, //
+
31092 {4.46694994, 2.2698555}, //
+
31093 {4.47389984, 2.25808954}, //
+
31094 {4.48068333, 2.24640608}, //
+
31095 {4.48729992, 2.23480558}, //
+
31096 {4.4937501, 2.22328758}, //
+
31097 {4.50003338, 2.21185255}, //
+
31098 {4.50614977, 2.20050001}, //
+
31099 {4.50907707, 2.19281983}, //
+
31100 {4.51183653, 2.18484569}, //
+
31101 {4.51442766, 2.17657781}, //
+
31102 {4.51685143, 2.16801596}, //
+
31103 {4.51910686, 2.15916038}, //
+
31104 {4.52119446, 2.15001106}, //
+
31105 {4.5231142, 2.14056802}, //
+
31106 {4.5248661, 2.13083076}, //
+
31107 {4.52645016, 2.12080002}, //
+
31108 {4.52783585, 2.11086369}, //
+
31109 {4.5289712, 2.10138774}, //
+
31110 {4.52985573, 2.09237218}, //
+
31111 {4.53048944, 2.08381724}, //
+
31112 {4.53087282, 2.07572293}, //
+
31113 {4.53100538, 2.06808877}, //
+
31114 {4.5308876, 2.06091547}, //
+
31115 {4.53051901, 2.05420256}, //
+
31116 {4.52990007, 2.04795003}, //
+
31117 {4.52990007, 2.04643893}, //
+
31118 {4.52990007, 2.04568338}, //
+
31119 {4.52990007, 2.04492784}, //
+
31120 {4.52990007, 2.04417229}, //
+
31121 {4.52990007, 2.04341674}, //
+
31122 {4.52990007, 2.04266119}, //
+
31123 {4.52990007, 2.04115009}, //
+
31124 {4.52918625, 2.03973341}, //
+
31125 {4.52801132, 2.03740001}, //
+
31126 {4.52754927, 2.03648329}, //
+
31127 {4.52717161, 2.03573322}, //
+
31128 {4.52687788, 2.03515005}, //
+
31129 {4.52666807, 2.0347333}, //
+
31130 {4.52654219, 2.03448343}, //
+
31131 {4.52650023, 2.03439999}, //
+
31132 {4.52650023, 2.03444147}, //
+
31133 {4.52650023, 2.03456545}, //
+
31134 {4.52650023, 2.03775001}, //
+
31135 {4.52641582, 2.04102278}, //
+
31136 {4.52616405, 2.04479694}, //
+
31137 {4.52574444, 2.04907227}, //
+
31138 {4.52515697, 2.05384874}, //
+
31139 {4.52440119, 2.05912662}, //
+
31140 {4.52347755, 2.06490564}, //
+
31141 {4.52238655, 2.07118583}, //
+
31142 {4.52112722, 2.07796717}, //
+
31143 {4.51970005, 2.0852499}, //
+
31144 {4.51793766, 2.09288764}, //
+
31145 {4.51567268, 2.100734}, //
+
31146 {4.5129056, 2.10878897}, //
+
31147 {4.50963593, 2.11705256}, //
+
31148 {4.50586367, 2.12552476}, //
+
31149 {4.50158882, 2.13420558}, //
+
31150 {4.49681187, 2.14309502}, //
+
31151 {4.49153233, 2.15219331}, //
+
31152 {4.4857502, 2.16149998}, //
+
31153 {4.47972775, 2.17085934}, //
+
31154 {4.47370577, 2.18009257}, //
+
31155 {4.46768332, 2.18919992}, //
+
31156 {4.46166134, 2.19818139}, //
+
31157 {4.45563889, 2.20703697}, //
+
31158 {4.44961643, 2.21576667}, //
+
31159 {4.44359446, 2.22437048}, //
+
31160 {4.437572, 2.23284817}, //
+
31161 {4.43155003, 2.24119997}, //
+
31162 {4.43008137, 2.24275255}, //
+
31163 {4.42869806, 2.24438763}, //
+
31164 {4.42740011, 2.24610567}, //
+
31165 {4.42618704, 2.24790621}, //
+
31166 {4.42505932, 2.24978948}, //
+
31167 {4.42401648, 2.25175548}, //
+
31168 {4.42305946, 2.25380421}, //
+
31169 {4.42218685, 2.25593591}, //
+
31170 {4.42140007, 2.2581501}, //
+
31171 {4.40812826, 2.27435112}, //
+
31172 {4.39393568, 2.28979945}, //
+
31173 {4.37882233, 2.30449438}, //
+
31174 {4.36278772, 2.31843638}, //
+
31175 {4.34583187, 2.33162522}, //
+
31176 {4.32795572, 2.34406114}, //
+
31177 {4.30915785, 2.35574389}, //
+
31178 {4.28943968, 2.36667347}, //
+
31179 {4.26879978, 2.37684989}, //
+
31180 {4.26360607, 2.3789382}, //
+
31181 {4.25858021, 2.38069201}, //
+
31182 {4.25372219, 2.38211107}, //
+
31183 {4.24903202, 2.38319564}, //
+
31184 {4.2445097, 2.3839457}, //
+
31185 {4.2401557, 2.38436103}, //
+
31186 {4.23596907, 2.38444209}, //
+
31187 {4.23195076, 2.38418818}, //
+
31188 {4.22809982, 2.3836}, //
+
31189 {4.22437525, 2.382761}, //
+
31190 {4.2207346, 2.38175559}, //
+
31191 {4.21717787, 2.38058329}, //
+
31192 {4.21370506, 2.37924433}, //
+
31193 {4.21031618, 2.37773895}, //
+
31194 {4.20701122, 2.37606668}, //
+
31195 {4.20379019, 2.37422776}, //
+
31196 {4.20065308, 2.37222219}, //
+
31197 {4.19759989, 2.37004995}, //
+
31198 {4.19286871, 2.36632538}, //
+
31199 {4.18771839, 2.36268449}, //
+
31200 {4.18214989, 2.35912776}, //
+
31201 {4.1761632, 2.35565495}, //
+
31202 {4.16975737, 2.35226607}, //
+
31203 {4.16293335, 2.34896111}, //
+
31204 {4.15569067, 2.34574008}, //
+
31205 {4.1480298, 2.34260297}, //
+
31206 {4.1399498, 2.33955002}, //
+
31207 {4.13149405, 2.33703279}, //
+
31208 {4.12270308, 2.33401418}, //
+
31209 {4.11357784, 2.3304944}, //
+
31210 {4.10411787, 2.32647347}, //
+
31211 {4.09432364, 2.32195115}, //
+
31212 {4.08419466, 2.31692767}, //
+
31213 {4.07373095, 2.31140304}, //
+
31214 {4.06293249, 2.30537724}, //
+
31215 {4.05179977, 2.29885006}, //
+
31216 {4.04058313, 2.29202962}, //
+
31217 {4.02953339, 2.28512406}, //
+
31218 {4.01865005, 2.27813339}, //
+
31219 {4.00793314, 2.27105737}, //
+
31220 {3.99738336, 2.26389623}, //
+
31221 {3.98699999, 2.25664997}, //
+
31222 {3.97678328, 2.2493186}, //
+
31223 {3.96673322, 2.24190187}, //
+
31224 {3.95685005, 2.23440003}, //
+
31225 {3.95019746, 2.22925854}, //
+
31226 {3.94379568, 2.22436786}, //
+
31227 {3.93764448, 2.21972775}, //
+
31228 {3.93174386, 2.21533823}, //
+
31229 {3.92609382, 2.21119928}, //
+
31230 {3.92069435, 2.20731115}, //
+
31231 {3.9155457, 2.20367336}, //
+
31232 {3.91064763, 2.20028639}, //
+
31233 {3.9059999, 2.19714999}, //
+
31234 {3.90016532, 2.19408631}, //
+
31235 {3.89470625, 2.19094014}, //
+
31236 {3.88962221, 2.187711}, //
+
31237 {3.88491368, 2.18439937}, //
+
31238 {3.88058019, 2.181005}, //
+
31239 {3.8766222, 2.17752767}, //
+
31240 {3.87303948, 2.17396784}, //
+
31241 {3.86983204, 2.17032528}, //
+
31242 {3.8670001, 2.16659999}, //
+
31243 {3.864429, 2.16295934}, //
+
31244 {3.86198282, 2.15957046}, //
+
31245 {3.8596611, 2.15643334}, //
+
31246 {3.85746431, 2.15354824}, //
+
31247 {3.85539198, 2.15091491}, //
+
31248 {3.85344434, 2.14853334}, //
+
31249 {3.85162163, 2.14640379}, //
+
31250 {3.84992337, 2.144526}, //
+
31251 {3.84835005, 2.14289999}, //
+
31252 {3.84759498, 2.14075923}, //
+
31253 {3.84684134, 2.13887048}, //
+
31254 {3.84608889, 2.13723326}, //
+
31255 {3.84533763, 2.13584805}, //
+
31256 {3.84458756, 2.13471484}, //
+
31257 {3.84383893, 2.13383341}, //
+
31258 {3.84309125, 2.13320374}, //
+
31259 {3.842345, 2.13282585}, //
+
31260 {3.84159994, 2.13269997}, //
+
31261 {3.84159994, 2.13269997}, //
+
31262 });
+
31263 polys.push_back({
+
31264 {0.202861726, 2.53296733}, //
+
31265 {0.202608019, 2.5334692}, //
+
31266 {0.202688888, 2.53430557}, //
+
31267 {0.203104317, 2.53547645}, //
+
31268 {0.203854322, 2.53698206}, //
+
31269 {0.204938889, 2.53882217}, //
+
31270 {0.20635803, 2.54099703}, //
+
31271 {0.208111733, 2.54350615}, //
+
31272 {0.210199997, 2.54635}, //
+
31273 {0.212508023, 2.54940367}, //
+
31274 {0.214898765, 2.55254269}, //
+
31275 {0.217372224, 2.55576658}, //
+
31276 {0.219928399, 2.55907583}, //
+
31277 {0.22256729, 2.56247044}, //
+
31278 {0.225288883, 2.56594992}, //
+
31279 {0.228093207, 2.56951475}, //
+
31280 {0.230980247, 2.5731647}, //
+
31281 {0.233950004, 2.57690001}, //
+
31282 {0.236195058, 2.57919765}, //
+
31283 {0.238396913, 2.58157897}, //
+
31284 {0.240555555, 2.58404446}, //
+
31285 {0.242670983, 2.58659387}, //
+
31286 {0.244743213, 2.5892272}, //
+
31287 {0.24677223, 2.59194446}, //
+
31288 {0.248758018, 2.59474564}, //
+
31289 {0.250700623, 2.59763098}, //
+
31290 {0.252600014, 2.6006}, //
+
31291 {0.254425317, 2.60348582}, //
+
31292 {0.256123453, 2.60612106}, //
+
31293 {0.257694453, 2.60850549}, //
+
31294 {0.259138286, 2.61063957}, //
+
31295 {0.260454953, 2.61252284}, //
+
31296 {0.261644453, 2.61415553}, //
+
31297 {0.262706786, 2.61553764}, //
+
31298 {0.263641983, 2.61666918}, //
+
31299 {0.264450014, 2.6175499}, //
+
31300 {0.264450014, 2.61301661}, //
+
31301 {0.264450014, 2.61137962}, //
+
31302 {0.264450014, 2.60949063}, //
+
31303 {0.264450014, 2.59381676}, //
+
31304 {0.264450014, 2.59156108}, //
+
31305 {0.264450014, 2.58704996}, //
+
31306 {0.264324695, 2.58551788}, //
+
31307 {0.263948768, 2.58394384}, //
+
31308 {0.263322234, 2.58232784}, //
+
31309 {0.262445062, 2.58066964}, //
+
31310 {0.261317283, 2.57896972}, //
+
31311 {0.259938896, 2.57722783}, //
+
31312 {0.258309871, 2.57544374}, //
+
31313 {0.256430238, 2.57361794}, //
+
31314 {0.254299998, 2.57174993}, //
+
31315 {0.252043813, 2.56985068}, //
+
31316 {0.249786422, 2.56790805}, //
+
31317 {0.247527778, 2.56592226}, //
+
31318 {0.245267898, 2.56389332}, //
+
31319 {0.243006796, 2.56182098}, //
+
31320 {0.240744442, 2.5597055}, //
+
31321 {0.238480866, 2.55754685}, //
+
31322 {0.236216053, 2.55534506}, //
+
31323 {0.233950004, 2.55310011}, //
+
31324 {0.231693834, 2.5509069}, //
+
31325 {0.229436412, 2.54883838}, //
+
31326 {0.227177784, 2.54689455}, //
+
31327 {0.224917904, 2.54507542}, //
+
31328 {0.222656786, 2.54338098}, //
+
31329 {0.220394447, 2.54181123}, //
+
31330 {0.218130857, 2.54036593}, //
+
31331 {0.215866044, 2.53904557}, //
+
31332 {0.213599995, 2.5378499}, //
+
31333 {0.211469755, 2.53679013}, //
+
31334 {0.207961112, 2.53504443}, //
+
31335 {0.20658271, 2.53435874}, //
+
31336 {0.205454946, 2.5337975}, //
+
31337 {0.204577774, 2.5333612}, //
+
31338 {0.203449994, 2.53279996}, //
+
31339 });
+
31340 polys.push_back({
+
31341 {0.274650007, 2.55655003}, //
+
31342 {0.274838895, 2.55711102}, //
+
31343 {0.27498579, 2.55754757}, //
+
31344 {0.275174677, 2.55810857}, //
+
31345 {0.275405556, 2.5587945}, //
+
31346 {0.275678396, 2.55960488}, //
+
31347 {0.276349992, 2.56159997}, //
+
31348 {0.276748151, 2.56275368}, //
+
31349 {0.277187049, 2.56394815}, //
+
31350 {0.277666658, 2.5651834}, //
+
31351 {0.278187037, 2.56645918}, //
+
31352 {0.278748155, 2.56777596}, //
+
31353 {0.279350013, 2.56913328}, //
+
31354 {0.27999258, 2.57053137}, //
+
31355 {0.280675918, 2.57197046}, //
+
31356 {0.281399995, 2.57345009}, //
+
31357 {0.282155544, 2.57496119}, //
+
31358 {0.282911122, 2.57647228}, //
+
31359 {0.28366667, 2.57798338}, //
+
31360 {0.284422219, 2.57949448}, //
+
31361 {0.285933346, 2.58251667}, //
+
31362 {0.286688894, 2.58402777}, //
+
31363 {0.288199991, 2.58704996}, //
+
31364 {0.288913578, 2.58856058}, //
+
31365 {0.289543211, 2.59006977}, //
+
31366 {0.290088892, 2.59157777}, //
+
31367 {0.290550619, 2.59308457}, //
+
31368 {0.290928394, 2.59459019}, //
+
31369 {0.291222215, 2.59609437}, //
+
31370 {0.291432112, 2.5975976}, //
+
31371 {0.291558027, 2.5990994}, //
+
31372 {0.291599989, 2.6006}, //
+
31373 {0.293111116, 2.5915556}, //
+
31374 {0.293656796, 2.5882895}, //
+
31375 {0.29428643, 2.58452106}, //
+
31376 {0.294999987, 2.58025002}, //
+
31377 {0.294958025, 2.57948399}, //
+
31378 {0.29483211, 2.57867479}, //
+
31379 {0.294622213, 2.57782221}, //
+
31380 {0.294328392, 2.57692647}, //
+
31381 {0.293950617, 2.57598758}, //
+
31382 {0.29348889, 2.57500553}, //
+
31383 {0.292943209, 2.57398033}, //
+
31384 {0.292313576, 2.57291174}, //
+
31385 {0.291599989, 2.57179999}, //
+
31386 {0.29084444, 2.57070875}, //
+
31387 {0.290088892, 2.56970119}, //
+
31388 {0.289333344, 2.5687778}, //
+
31389 {0.288577765, 2.56793833}, //
+
31390 {0.287822217, 2.56718278}, //
+
31391 {0.287066668, 2.56651115}, //
+
31392 {0.28631112, 2.56592345}, //
+
31393 {0.285555542, 2.56541967}, //
+
31394 {0.284799993, 2.56500006}, //
+
31395 {0.284044445, 2.56460118}, //
+
31396 {0.283288896, 2.56416059}, //
+
31397 {0.282533348, 2.56367779}, //
+
31398 {0.281777769, 2.56315303}, //
+
31399 {0.281022221, 2.56258631}, //
+
31400 {0.280266672, 2.56197786}, //
+
31401 {0.279511124, 2.56132722}, //
+
31402 {0.278755546, 2.56063461}, //
+
31403 {0.277999997, 2.55990005}, //
+
31404 {0.277296901, 2.55919695}, //
+
31405 {0.276676536, 2.55857658}, //
+
31406 {0.276138902, 2.55803895}, //
+
31407 {0.275683939, 2.55758405}, //
+
31408 {0.275311738, 2.55721164}, //
+
31409 {0.275022209, 2.5569222}, //
+
31410 {0.27481544, 2.55671549}, //
+
31411 {0.274691343, 2.55659127}, //
+
31412 });
+
31413 polys.push_back({
+
31414 {1.70057774, 2.1040771}, //
+
31415 {1.70585561, 2.10935307}, //
+
31416 {1.71113336, 2.11462784}, //
+
31417 {1.71641111, 2.11990118}, //
+
31418 {1.72168887, 2.12517357}, //
+
31419 {1.72696662, 2.13044453}, //
+
31420 {1.73224449, 2.13571429}, //
+
31421 {1.73752224, 2.14098263}, //
+
31422 {1.7428, 2.14625001}, //
+
31423 {1.74465799, 2.15207338}, //
+
31424 {1.74572098, 2.15747714}, //
+
31425 {1.74598885, 2.16246104}, //
+
31426 {1.7454617, 2.16702533}, //
+
31427 {1.74413955, 2.17116976}, //
+
31428 {1.74202228, 2.17489433}, //
+
31429 {1.73910987, 2.17819929}, //
+
31430 {1.73540246, 2.18108463}, //
+
31431 {1.73090005, 2.18354988}, //
+
31432 {1.7259475, 2.1857326}, //
+
31433 {1.72086787, 2.18774748}, //
+
31434 {1.71566117, 2.18959451}, //
+
31435 {1.71032715, 2.19127345}, //
+
31436 {1.70486605, 2.19278455}, //
+
31437 {1.69927776, 2.1941278}, //
+
31438 {1.69356239, 2.1953032}, //
+
31439 {1.6877197, 2.19631052}, //
+
31440 {1.68175006, 2.19714999}, //
+
31441 {1.67806733, 2.19789505}, //
+
31442 {1.67455244, 2.1986413}, //
+
31443 {1.67120552, 2.19938898}, //
+
31444 {1.66802657, 2.20013762}, //
+
31445 {1.66501546, 2.20088768}, //
+
31446 {1.6621722, 2.20163894}, //
+
31447 {1.6594969, 2.20239139}, //
+
31448 {1.65698946, 2.20314503}, //
+
31449 {1.65464997, 2.2039001}, //
+
31450 {1.63584816, 2.20922089}, //
+
31451 {1.61713147, 2.21311736}, //
+
31452 {1.59850001, 2.21558881}, //
+
31453 {1.57995367, 2.2166357}, //
+
31454 {1.56149256, 2.21625805}, //
+
31455 {1.54311669, 2.2144556}, //
+
31456 {1.52482593, 2.21122837}, //
+
31457 {1.50662041, 2.20657659}, //
+
31458 {1.4885, 2.20050001}, //
+
31459 {1.46895242, 2.1951468}, //
+
31460 {1.44948769, 2.19113207}, //
+
31461 {1.43010557, 2.18845558}, //
+
31462 {1.41080618, 2.18711734}, //
+
31463 {1.39158952, 2.18711734}, //
+
31464 {1.3724556, 2.18845558}, //
+
31465 {1.35340428, 2.19113207}, //
+
31466 {1.33443582, 2.1951468}, //
+
31467 {1.31554997, 2.20050001}, //
+
31468 {1.29219449, 2.20289207}, //
+
31469 {1.26883888, 2.20553446}, //
+
31470 {1.24548328, 2.20842767}, //
+
31471 {1.2221278, 2.21157169}, //
+
31472 {1.19877219, 2.21496606}, //
+
31473 {1.17541671, 2.218611}, //
+
31474 {1.1520611, 2.22250676}, //
+
31475 {1.1287055, 2.2266531}, //
+
31476 {1.10535002, 2.23105001}, //
+
31477 {1.08496356, 2.23460746}, //
+
31478 {1.06449318, 2.23774624}, //
+
31479 {1.04393888, 2.24046659}, //
+
31480 {1.02330065, 2.24276853}, //
+
31481 {1.00257838, 2.24465179}, //
+
31482 {0.981772244, 2.24611664}, //
+
31483 {0.960882127, 2.24716306}, //
+
31484 {0.939908028, 2.24779081}, //
+
31485 {0.918850005, 2.24799991}, //
+
31486 {0.906080842, 2.24804187}, //
+
31487 {0.893395662, 2.24816799}, //
+
31488 {0.880794466, 2.2483778}, //
+
31489 {0.868277133, 2.24867153}, //
+
31490 {0.855843842, 2.24904943}, //
+
31491 {0.843494415, 2.249511}, //
+
31492 {0.831229031, 2.25005674}, //
+
31493 {0.819047511, 2.25068641}, //
+
31494 {0.806949973, 2.25139999}, //
+
31495 {0.805366039, 2.25214505}, //
+
31496 {0.803614199, 2.2528913}, //
+
31497 {0.801694453, 2.25363898}, //
+
31498 {0.7996068, 2.25438762}, //
+
31499 {0.797351241, 2.25513768}, //
+
31500 {0.794927776, 2.25588894}, //
+
31501 {0.792336404, 2.25664139}, //
+
31502 {0.789577186, 2.25739503}, //
+
31503 {0.786650002, 2.2581501}, //
+
31504 {0.782190144, 2.25823331}, //
+
31505 {0.777854919, 2.25848341}, //
+
31506 {0.773644447, 2.25889993}, //
+
31507 {0.769558668, 2.25948334}, //
+
31508 {0.765597522, 2.2602334}, //
+
31509 {0.761761129, 2.26114988}, //
+
31510 {0.758049369, 2.26223326}, //
+
31511 {0.754462361, 2.26348329}, //
+
31512 {0.750999987, 2.26489997}, //
+
31513 {0.747715414, 2.26641107}, //
+
31514 {0.744639516, 2.26792216}, //
+
31515 {0.741772234, 2.26943326}, //
+
31516 {0.739113569, 2.27094436}, //
+
31517 {0.73666358, 2.27245545}, //
+
31518 {0.734422207, 2.27396655}, //
+
31519 {0.73238951, 2.27547789}, //
+
31520 {0.730565429, 2.27698898}, //
+
31521 {0.728950024, 2.27850008}, //
+
31522 {0.727659285, 2.28005242}, //
+
31523 {0.726787031, 2.28168774}, //
+
31524 {0.72633332, 2.28340554}, //
+
31525 {0.726298153, 2.28520608}, //
+
31526 {0.726681471, 2.28708959}, //
+
31527 {0.727483332, 2.28905559}, //
+
31528 {0.728703678, 2.29110432}, //
+
31529 {0.730342567, 2.29323578}, //
+
31530 {0.7324, 2.29544997}, //
+
31531 {0.733249366, 2.29685616}, //
+
31532 {0.73430866, 2.29805255}, //
+
31533 {0.735577762, 2.29903889}, //
+
31534 {0.737056792, 2.29981542}, //
+
31535 {0.738745689, 2.30038214}, //
+
31536 {0.740644455, 2.30073881}, //
+
31537 {0.742753088, 2.30088592}, //
+
31538 {0.74507159, 2.30082273}, //
+
31539 {0.747600019, 2.30054998}, //
+
31540 {0.750222862, 2.30015135}, //
+
31541 {0.752802491, 2.29971051}, //
+
31542 {0.755338907, 2.29922771}, //
+
31543 {0.75783211, 2.29870319}, //
+
31544 {0.760282099, 2.29813647}, //
+
31545 {0.762688875, 2.29752779}, //
+
31546 {0.765052497, 2.29687715}, //
+
31547 {0.767372847, 2.29618454}, //
+
31548 {0.769649982, 2.29544997}, //
+
31549 {0.773364186, 2.29400182}, //
+
31550 {0.776951253, 2.29267955}, //
+
31551 {0.780411124, 2.2914834}, //
+
31552 {0.783743799, 2.2904129}, //
+
31553 {0.786949396, 2.28946853}, //
+
31554 {0.790027797, 2.28865004}, //
+
31555 {0.792979002, 2.28795743}, //
+
31556 {0.79580307, 2.28739071}, //
+
31557 {0.798500001, 2.28695011}, //
+
31558 {0.80111295, 2.28664517}, //
+
31559 {0.803685188, 2.2864635}, //
+
31560 {0.806216657, 2.28640556}, //
+
31561 {0.808707416, 2.28647089}, //
+
31562 {0.811157405, 2.28665996}, //
+
31563 {0.813566685, 2.28697228}, //
+
31564 {0.815935194, 2.28740811}, //
+
31565 {0.818262935, 2.28796721}, //
+
31566 {0.820550025, 2.28865004}, //
+
31567 {0.835533321, 2.28731656}, //
+
31568 {0.850350022, 2.28631663}, //
+
31569 {0.86500001, 2.28565001}, //
+
31570 {0.879483342, 2.28531671}, //
+
31571 {0.89380002, 2.28531671}, //
+
31572 {0.907949984, 2.28565001}, //
+
31573 {0.921933353, 2.28631663}, //
+
31574 {0.935750008, 2.28731656}, //
+
31575 {0.949400008, 2.28865004}, //
+
31576 {0.961413562, 2.29003525}, //
+
31577 {0.973343194, 2.29116845}, //
+
31578 {0.985188901, 2.29204988}, //
+
31579 {0.996950626, 2.29267955}, //
+
31580 {1.00862837, 2.29305744}, //
+
31581 {1.02022219, 2.29318333}, //
+
31582 {1.03173208, 2.29305744}, //
+
31583 {1.04315805, 2.29267955}, //
+
31584 {1.05449998, 2.29204988}, //
+
31585 {1.0583086, 2.29200792}, //
+
31586 {1.06220126, 2.29188204}, //
+
31587 {1.06617773, 2.29167223}, //
+
31588 {1.07023823, 2.2913785}, //
+
31589 {1.07438266, 2.2910006}, //
+
31590 {1.07861114, 2.29053879}, //
+
31591 {1.08292341, 2.28999329}, //
+
31592 {1.08731973, 2.28936362}, //
+
31593 {1.09179997, 2.28865004}, //
+
31594 {1.10381353, 2.28584814}, //
+
31595 {1.11574316, 2.28346491}, //
+
31596 {1.12758887, 2.2815001}, //
+
31597 {1.13935065, 2.27995372}, //
+
31598 {1.15102839, 2.278826}, //
+
31599 {1.16262221, 2.2781167}, //
+
31600 {1.17413211, 2.27782583}, //
+
31601 {1.18555808, 2.27795362}, //
+
31602 {1.19690001, 2.27850008}, //
+
31603 {1.31554997, 2.27850008}, //
+
31604 {1.33966112, 2.27787042}, //
+
31605 {1.36377227, 2.27749252}, //
+
31606 {1.38788331, 2.27736664}, //
+
31607 {1.41199446, 2.27749252}, //
+
31608 {1.43610561, 2.27787042}, //
+
31609 {1.46021664, 2.27850008}, //
+
31610 {1.48432779, 2.27938151}, //
+
31611 {1.50843894, 2.28051472}, //
+
31612 {1.53254998, 2.28189993}, //
+
31613 {1.53544569, 2.28280187}, //
+
31614 {1.53808832, 2.28399634}, //
+
31615 {1.54047775, 2.28548336}, //
+
31616 {1.54261422, 2.28726292}, //
+
31617 {1.54449749, 2.28933525}, //
+
31618 {1.5461278, 2.29169989}, //
+
31619 {1.5475049, 2.2943573}, //
+
31620 {1.54862905, 2.29730749}, //
+
31621 {1.54949999, 2.30054998}, //
+
31622 {1.55012965, 2.30398083}, //
+
31623 {1.55050743, 2.30749559}, //
+
31624 {1.55063331, 2.31109452}, //
+
31625 {1.55050743, 2.31477714}, //
+
31626 {1.55012965, 2.31854391}, //
+
31627 {1.54949999, 2.32239437}, //
+
31628 {1.54861856, 2.32632899}, //
+
31629 {1.54748523, 2.33034754}, //
+
31630 {1.54610002, 2.33445001}, //
+
31631 {1.54451549, 2.33848953}, //
+
31632 {1.54276168, 2.34231925}, //
+
31633 {1.54083884, 2.34593892}, //
+
31634 {1.53874695, 2.34934878}, //
+
31635 {1.53648579, 2.35254884}, //
+
31636 {1.53405559, 2.35553885}, //
+
31637 {1.53145623, 2.35831904}, //
+
31638 {1.5286876, 2.36088943}, //
+
31639 {1.52575004, 2.36325002}, //
+
31640 {1.52273893, 2.36530685}, //
+
31641 {1.51972783, 2.36694384}, //
+
31642 {1.51671672, 2.3681612}, //
+
31643 {1.51370561, 2.36895871}, //
+
31644 {1.5106945, 2.36933637}, //
+
31645 {1.50768328, 2.3692944}, //
+
31646 {1.50467217, 2.36883283}, //
+
31647 {1.50166106, 2.36795115}, //
+
31648 {1.49864995, 2.3666501}, //
+
31649 {1.49191356, 2.362463}, //
+
31650 {1.48525989, 2.35894632}, //
+
31651 {1.47868884, 2.35610008}, //
+
31652 {1.47220063, 2.35392404}, //
+
31653 {1.46579504, 2.35241842}, //
+
31654 {1.45947218, 2.35158324}, //
+
31655 {1.45323205, 2.3514185}, //
+
31656 {1.44707465, 2.35192418}, //
+
31657 {1.44099998, 2.35310006}, //
+
31658 {1.43493581, 2.3546524}, //
+
31659 {1.42878771, 2.35628772}, //
+
31660 {1.42255557, 2.35800552}, //
+
31661 {1.4162395, 2.35980606}, //
+
31662 {1.40983951, 2.36168957}, //
+
31663 {1.4033556, 2.36365557}, //
+
31664 {1.39678764, 2.3657043}, //
+
31665 {1.39013577, 2.36783576}, //
+
31666 {1.38339996, 2.37004995}, //
+
31667 {1.38113391, 2.3708055}, //
+
31668 {1.37886918, 2.37156105}, //
+
31669 {1.37660551, 2.3723166}, //
+
31670 {1.37434316, 2.37307215}, //
+
31671 {1.37208211, 2.3738277}, //
+
31672 {1.36982226, 2.37458324}, //
+
31673 {1.36756361, 2.37533879}, //
+
31674 {1.36530614, 2.37609434}, //
+
31675 {1.36304998, 2.37684989}, //
+
31676 {1.35161424, 2.38102722}, //
+
31677 {1.33992898, 2.3845365}, //
+
31678 {1.32799447, 2.38737774}, //
+
31679 {1.31581044, 2.38955116}, //
+
31680 {1.30337715, 2.39105678}, //
+
31681 {1.29069448, 2.39189434}, //
+
31682 {1.27776229, 2.39206409}, //
+
31683 {1.26458085, 2.39156604}, //
+
31684 {1.25115001, 2.39039993}, //
+
31685 {1.24658585, 2.39044189}, //
+
31686 {1.24193764, 2.39056802}, //
+
31687 {1.23720551, 2.39077783}, //
+
31688 {1.23238945, 2.39107156}, //
+
31689 {1.22748947, 2.39144945}, //
+
31690 {1.22250557, 2.39191103}, //
+
31691 {1.21743762, 2.39245677}, //
+
31692 {1.21228576, 2.39308643}, //
+
31693 {1.20704997, 2.39380002}, //
+
31694 {1.18760741, 2.39331675}, //
+
31695 {1.16845739, 2.39337778}, //
+
31696 {1.14960003, 2.39398336}, //
+
31697 {1.13103521, 2.39513326}, //
+
31698 {1.11276293, 2.3968277}, //
+
31699 {1.09478331, 2.39906669}, //
+
31700 {1.07709634, 2.40184999}, //
+
31701 {1.0597018, 2.40517783}, //
+
31702 {1.04260004, 2.40904999}, //
+
31703 {1.02580118, 2.41367602}, //
+
31704 {1.00929379, 2.41926479}, //
+
31705 {0.993077755, 2.42581677}, //
+
31706 {0.977153063, 2.43333149}, //
+
31707 {0.961519778, 2.44180918}, //
+
31708 {0.946177781, 2.45125008}, //
+
31709 {0.931127131, 2.46165371}, //
+
31710 {0.916367888, 2.47302032}, //
+
31711 {0.901899993, 2.48534989}, //
+
31712 {0.888134539, 2.49455309}, //
+
31713 {0.873949409, 2.50258446}, //
+
31714 {0.859344423, 2.50944448}, //
+
31715 {0.844319761, 2.51513267}, //
+
31716 {0.828875303, 2.51964927}, //
+
31717 {0.81301111, 2.52299452}, //
+
31718 {0.79672718, 2.52516794}, //
+
31719 {0.780023456, 2.52616978}, //
+
31720 {0.762899995, 2.52600002}, //
+
31721 {0.758293808, 2.52667165}, //
+
31722 {0.753519773, 2.52717543}, //
+
31723 {0.748577774, 2.52751112}, //
+
31724 {0.743467927, 2.52767897}, //
+
31725 {0.738190114, 2.52767897}, //
+
31726 {0.732744455, 2.52751112}, //
+
31727 {0.72713089, 2.52717543}, //
+
31728 {0.721349359, 2.52667165}, //
+
31729 {0.715399981, 2.52600002}, //
+
31730 {0.710195661, 2.52464557}, //
+
31731 {0.705116034, 2.5235827}, //
+
31732 {0.700161099, 2.52281117}, //
+
31733 {0.695330858, 2.52233076}, //
+
31734 {0.69062531, 2.52214193}, //
+
31735 {0.686044455, 2.52224445}, //
+
31736 {0.681588292, 2.52263832}, //
+
31737 {0.677256763, 2.52332354}, //
+
31738 {0.673049986, 2.5243001}, //
+
31739 {0.669009864, 2.52557969}, //
+
31740 {0.665178418, 2.52715182}, //
+
31741 {0.661555529, 2.52901673}, //
+
31742 {0.658141375, 2.53117418}, //
+
31743 {0.654935777, 2.53362417}, //
+
31744 {0.651938915, 2.5363667}, //
+
31745 {0.64915061, 2.53940177}, //
+
31746 {0.646570981, 2.54272962}, //
+
31747 {0.644200027, 2.54635}, //
+
31748 {0.645836413, 2.54777718}, //
+
31749 {0.647723436, 2.5490365}, //
+
31750 {0.649861097, 2.55012774}, //
+
31751 {0.652249396, 2.55105114}, //
+
31752 {0.654888272, 2.55180669}, //
+
31753 {0.657777786, 2.55239439}, //
+
31754 {0.660917878, 2.55281425}, //
+
31755 {0.664308667, 2.55306602}, //
+
31756 {0.667949975, 2.55314994}, //
+
31757 {0.671800613, 2.55310798}, //
+
31758 {0.675819159, 2.55298209}, //
+
31759 {0.68000555, 2.55277228}, //
+
31760 {0.684359848, 2.55247831}, //
+
31761 {0.688882113, 2.55210066}, //
+
31762 {0.693572223, 2.55163884}, //
+
31763 {0.69843024, 2.5510931}, //
+
31764 {0.703456163, 2.55046368}, //
+
31765 {0.708649993, 2.54975009}, //
+
31766 {0.713172197, 2.54975009}, //
+
31767 {0.722216666, 2.54975009}, //
+
31768 {0.72673887, 2.54975009}, //
+
31769 {0.749350011, 2.54975009}, //
+
31770 {0.753945708, 2.54907846}, //
+
31771 {0.758710504, 2.54857469}, //
+
31772 {0.763644457, 2.54823899}, //
+
31773 {0.768747509, 2.54807091}, //
+
31774 {0.774019778, 2.54807091}, //
+
31775 {0.779461086, 2.54823899}, //
+
31776 {0.785071611, 2.54857469}, //
+
31777 {0.790851235, 2.54907846}, //
+
31778 {0.796800017, 2.54975009}, //
+
31779 {0.803578377, 2.55029631}, //
+
31780 {0.810358047, 2.5504241}, //
+
31781 {0.81713891, 2.55013323}, //
+
31782 {0.823920965, 2.54942417}, //
+
31783 {0.830704331, 2.54829621}, //
+
31784 {0.83748889, 2.54675007}, //
+
31785 {0.8442747, 2.54478526}, //
+
31786 {0.851061702, 2.54240179}, //
+
31787 {0.857850015, 2.5395999}, //
+
31788 {0.870525301, 2.53348327}, //
+
31789 {0.88295126, 2.52719998}, //
+
31790 {0.895127773, 2.52075005}, //
+
31791 {0.907054961, 2.51413321}, //
+
31792 {0.918732703, 2.50734997}, //
+
31793 {0.930161119, 2.50040007}, //
+
31794 {0.941340148, 2.49328327}, //
+
31795 {0.952269733, 2.48600006}, //
+
31796 {0.962949991, 2.47854996}, //
+
31797 {0.972823441, 2.4777112}, //
+
31798 {0.982866049, 2.47670555}, //
+
31799 {0.993077755, 2.47553325}, //
+
31800 {1.00345862, 2.47419453}, //
+
31801 {1.01400864, 2.47268891}, //
+
31802 {1.02472782, 2.47101665}, //
+
31803 {1.03561604, 2.46917772}, //
+
31804 {1.04667342, 2.46717215}, //
+
31805 {1.05789995, 2.46499991}, //
+
31806 {1.06551671, 2.46281719}, //
+
31807 {1.0733, 2.46080256}, //
+
31808 {1.08124995, 2.45895553}, //
+
31809 {1.08936667, 2.45727658}, //
+
31810 {1.09765005, 2.45576549}, //
+
31811 {1.10609996, 2.45442224}, //
+
31812 {1.11471665, 2.45324683}, //
+
31813 {1.12349999, 2.45223951}, //
+
31814 {1.13244998, 2.45140004}, //
+
31815 {1.14157844, 2.45215559}, //
+
31816 {1.15087473, 2.45291114}, //
+
31817 {1.16033888, 2.45366669}, //
+
31818 {1.16997099, 2.45442224}, //
+
31819 {1.17977095, 2.45517778}, //
+
31820 {1.18973887, 2.45593333}, //
+
31821 {1.19987464, 2.45668888}, //
+
31822 {1.21017838, 2.45744443}, //
+
31823 {1.22064996, 2.45819998}, //
+
31824 {1.22972596, 2.45962715}, //
+
31825 {1.23888707, 2.46088648}, //
+
31826 {1.2481333, 2.46197772}, //
+
31827 {1.25746477, 2.46290112}, //
+
31828 {1.26688147, 2.4636569}, //
+
31829 {1.27638328, 2.46424437}, //
+
31830 {1.28597033, 2.46466422}, //
+
31831 {1.29564261, 2.46491599}, //
+
31832 {1.30540001, 2.46499991}, //
+
31833 {1.32720304, 2.46662784}, //
+
31834 {1.34892344, 2.46700001}, //
+
31835 {1.37056112, 2.46611667}, //
+
31836 {1.39211607, 2.46397781}, //
+
31837 {1.41358829, 2.46058345}, //
+
31838 {1.43497777, 2.45593333}, //
+
31839 {1.45628452, 2.4500277}, //
+
31840 {1.47750866, 2.44286656}, //
+
31841 {1.49864995, 2.43444991}, //
+
31842 {1.50626731, 2.43097663}, //
+
31843 {1.51405251, 2.42808962}, //
+
31844 {1.52200556, 2.42578888}, //
+
31845 {1.53012657, 2.42407465}, //
+
31846 {1.53841543, 2.42294693}, //
+
31847 {1.54687226, 2.42240548}, //
+
31848 {1.55549693, 2.42245054}, //
+
31849 {1.56428945, 2.42308211}, //
+
31850 {1.57325006, 2.42429996}, //
+
31851 {1.57848585, 2.42497158}, //
+
31852 {1.5836376, 2.42547536}, //
+
31853 {1.58870554, 2.42581105}, //
+
31854 {1.59368956, 2.4259789}, //
+
31855 {1.59858954, 2.4259789}, //
+
31856 {1.60340559, 2.42581105}, //
+
31857 {1.60813761, 2.42547536}, //
+
31858 {1.61278582, 2.42497158}, //
+
31859 {1.61734998, 2.42429996}, //
+
31860 {1.62642598, 2.419945}, //
+
31861 {1.6355871, 2.41592479}, //
+
31862 {1.64483333, 2.41223884}, //
+
31863 {1.65416479, 2.40888762}, //
+
31864 {1.66358149, 2.40587091}, //
+
31865 {1.67308331, 2.40318894}, //
+
31866 {1.68267035, 2.40084147}, //
+
31867 {1.69234264, 2.39882851}, //
+
31868 {1.70210004, 2.39715004}, //
+
31869 {1.71256113, 2.3954401}, //
+
31870 {1.72285557, 2.39331055}, //
+
31871 {1.73298335, 2.39076114}, //
+
31872 {1.74294448, 2.38779187}, //
+
31873 {1.75273883, 2.38440299}, //
+
31874 {1.76236665, 2.38059449}, //
+
31875 {1.77182782, 2.37636614}, //
+
31876 {1.78112221, 2.37171793}, //
+
31877 {1.79024994, 2.3666501}, //
+
31878 {1.7969445, 2.36054325}, //
+
31879 {1.80347228, 2.35426736}, //
+
31880 {1.80983329, 2.34782219}, //
+
31881 {1.81602776, 2.34120798}, //
+
31882 {1.82205558, 2.33442473}, //
+
31883 {1.82791662, 2.32747221}, //
+
31884 {1.83361113, 2.32035065}, //
+
31885 {1.83913887, 2.31305981}, //
+
31886 {1.84449995, 2.30559993}, //
+
31887 {1.84919131, 2.29802465}, //
+
31888 {1.85270989, 2.29036546}, //
+
31889 {1.85505557, 2.28262234}, //
+
31890 {1.85622835, 2.27479506}, //
+
31891 {1.85622835, 2.26688385}, //
+
31892 {1.85505557, 2.25888896}, //
+
31893 {1.85270989, 2.25080991}, //
+
31894 {1.84919131, 2.24264693}, //
+
31895 {1.84449995, 2.23440003}, //
+
31896 {1.84232783, 2.2322278}, //
+
31897 {1.84032226, 2.23022223}, //
+
31898 {1.83681107, 2.22671103}, //
+
31899 {1.83530557, 2.22520566}, //
+
31900 {1.83396661, 2.2238667}, //
+
31901 {1.83279443, 2.2226944}, //
+
31902 {1.83095002, 2.22084999}, //
+
31903 {1.83023643, 2.22019935}, //
+
31904 {1.82960677, 2.21975875}, //
+
31905 {1.82906115, 2.21952772}, //
+
31906 {1.82859933, 2.21950674}, //
+
31907 {1.82822156, 2.21969557}, //
+
31908 {1.82792783, 2.22009444}, //
+
31909 {1.8277179, 2.22070312}, //
+
31910 {1.82759202, 2.22152162}, //
+
31911 {1.82755005, 2.22254992}, //
+
31912 {1.82759202, 2.22370362}, //
+
31913 {1.8277179, 2.2248981}, //
+
31914 {1.82792783, 2.22613335}, //
+
31915 {1.82822156, 2.22740936}, //
+
31916 {1.82859933, 2.22872591}, //
+
31917 {1.82906115, 2.23008323}, //
+
31918 {1.82960677, 2.23148155}, //
+
31919 {1.83023643, 2.23292041}, //
+
31920 {1.83095002, 2.23440003}, //
+
31921 {1.83170497, 2.23668694}, //
+
31922 {1.83245862, 2.23901486}, //
+
31923 {1.83321106, 2.24138331}, //
+
31924 {1.83396232, 2.24379253}, //
+
31925 {1.83471239, 2.24624252}, //
+
31926 {1.83546114, 2.24873328}, //
+
31927 {1.8362087, 2.25126481}, //
+
31928 {1.83695495, 2.25383711}, //
+
31929 {1.83770001, 2.25644994}, //
+
31930 {1.8384136, 2.25903082}, //
+
31931 {1.83904326, 2.26148462}, //
+
31932 {1.83958888, 2.26381111}, //
+
31933 {1.84005058, 2.26601052}, //
+
31934 {1.84042835, 2.26808262}, //
+
31935 {1.8407222, 2.27002788}, //
+
31936 {1.84093213, 2.27184558}, //
+
31937 {1.84105802, 2.27353644}, //
+
31938 {1.84109998, 2.27509999}, //
+
31939 {1.83792102, 2.28092337}, //
+
31940 {1.83440614, 2.28632712}, //
+
31941 {1.83055556, 2.29131103}, //
+
31942 {1.82636917, 2.29587531}, //
+
31943 {1.82184696, 2.30001974}, //
+
31944 {1.81698895, 2.30374455}, //
+
31945 {1.81179512, 2.30704927}, //
+
31946 {1.80626547, 2.30993462}, //
+
31947 {1.80040002, 2.3124001}, //
+
31948 {1.79437721, 2.31458211}, //
+
31949 {1.78835309, 2.31659508}, //
+
31950 {1.78232777, 2.31843901}, //
+
31951 {1.77630126, 2.32011366}, //
+
31952 {1.77027345, 2.32161903}, //
+
31953 {1.76424444, 2.32295561}, //
+
31954 {1.75821424, 2.32412291}, //
+
31955 {1.75218272, 2.32512093}, //
+
31956 {1.74615002, 2.32594991}, //
+
31957 {1.7438525, 2.32599187}, //
+
31958 {1.74147093, 2.32611799}, //
+
31959 {1.73900557, 2.3263278}, //
+
31960 {1.73645616, 2.32662153}, //
+
31961 {1.73382282, 2.32699943}, //
+
31962 {1.73110557, 2.327461}, //
+
31963 {1.72830427, 2.32800674}, //
+
31964 {1.72541916, 2.32863641}, //
+
31965 {1.72245002, 2.32934999}, //
+
31966 {1.70884192, 2.33111167}, //
+
31967 {1.69515121, 2.33337474}, //
+
31968 {1.68137777, 2.33613896}, //
+
31969 {1.6675216, 2.33940434}, //
+
31970 {1.65358269, 2.34317088}, //
+
31971 {1.63956106, 2.34743881}, //
+
31972 {1.62545681, 2.35220814}, //
+
31973 {1.61126971, 2.35747838}, //
+
31974 {1.597, 2.36325002}, //
+
31975 {1.59544754, 2.36329198}, //
+
31976 {1.59381235, 2.36341786}, //
+
31977 {1.59209442, 2.36362767}, //
+
31978 {1.59029388, 2.36392164}, //
+
31979 {1.5884105, 2.3642993}, //
+
31980 {1.5864445, 2.36476111}, //
+
31981 {1.58439565, 2.36530685}, //
+
31982 {1.58226418, 2.36593652}, //
+
31983 {1.58004999, 2.3666501}, //
+
31984 {1.58007038, 2.36506534}, //
+
31985 {1.58013153, 2.36331177}, //
+
31986 {1.58023334, 2.36138892}, //
+
31987 {1.58037591, 2.3592968}, //
+
31988 {1.58055925, 2.35703588}, //
+
31989 {1.58078337, 2.35460567}, //
+
31990 {1.58104813, 2.3520062}, //
+
31991 {1.58135366, 2.34923768}, //
+
31992 {1.58169997, 2.34629989}, //
+
31993 {1.58209872, 2.3432889}, //
+
31994 {1.58253956, 2.34027767}, //
+
31995 {1.58302224, 2.33726668}, //
+
31996 {1.58354688, 2.33425546}, //
+
31997 {1.5841136, 2.33124447}, //
+
31998 {1.58472228, 2.32823324}, //
+
31999 {1.58537281, 2.32522225}, //
+
32000 {1.58606541, 2.32221103}, //
+
32001 {1.58679998, 2.31920004}, //
+
32002 {1.58757651, 2.31629324}, //
+
32003 {1.58839512, 2.31359506}, //
+
32004 {1.58925557, 2.31110549}, //
+
32005 {1.59015799, 2.30882478}, //
+
32006 {1.59110248, 2.30675244}, //
+
32007 {1.59208894, 2.30488896}, //
+
32008 {1.59311724, 2.30323386}, //
+
32009 {1.59418762, 2.30178761}, //
+
32010 {1.59529996, 2.30054998}, //
+
32011 {1.59649563, 2.29956365}, //
+
32012 {1.59781599, 2.29887104}, //
+
32013 {1.59926116, 2.29847217}, //
+
32014 {1.60083091, 2.29836726}, //
+
32015 {1.60252535, 2.29855609}, //
+
32016 {1.60434449, 2.29903889}, //
+
32017 {1.60628831, 2.29981542}, //
+
32018 {1.60835683, 2.30088592}, //
+
32019 {1.61055005, 2.30224991}, //
+
32020 {1.61732841, 2.30208206}, //
+
32021 {1.62410808, 2.30157828}, //
+
32022 {1.63088894, 2.30073881}, //
+
32023 {1.63767099, 2.29956365}, //
+
32024 {1.64445436, 2.29805255}, //
+
32025 {1.65123892, 2.29620552}, //
+
32026 {1.65802467, 2.2940228}, //
+
32027 {1.66481173, 2.29150438}, //
+
32028 {1.67159998, 2.28865004}, //
+
32029 {1.67846167, 2.28580618}, //
+
32030 {1.68549132, 2.28329682}, //
+
32031 {1.69268894, 2.28112221}, //
+
32032 {1.70005429, 2.27928209}, //
+
32033 {1.7075876, 2.27777648}, //
+
32034 {1.71528888, 2.27660561}, //
+
32035 {1.723158, 2.27576923}, //
+
32036 {1.73119509, 2.27526736}, //
+
32037 {1.73940003, 2.27509999}, //
+
32038 {1.74737465, 2.27541614}, //
+
32039 {1.75472105, 2.27485299}, //
+
32040 {1.76143885, 2.27341104}, //
+
32041 {1.76752841, 2.27109003}, //
+
32042 {1.77298951, 2.26789021}, //
+
32043 {1.77782226, 2.26381111}, //
+
32044 {1.78202653, 2.2588532}, //
+
32045 {1.78560245, 2.253016}, //
+
32046 {1.78855002, 2.24629998}, //
+
32047 {1.79099572, 2.23916483}, //
+
32048 {1.79306602, 2.23207045}, //
+
32049 {1.79476106, 2.22501659}, //
+
32050 {1.79608083, 2.21800375}, //
+
32051 {1.79702532, 2.21103144}, //
+
32052 {1.79759443, 2.20409989}, //
+
32053 {1.79778826, 2.19720936}, //
+
32054 {1.79760683, 2.19035935}, //
+
32055 {1.79705, 2.18354988}, //
+
32056 {1.78930676, 2.17325616}, //
+
32057 {1.78114378, 2.16346359}, //
+
32058 {1.77256107, 2.15417218}, //
+
32059 {1.76355863, 2.14538217}, //
+
32060 {1.75413644, 2.13709331}, //
+
32061 {1.7442944, 2.1293056}, //
+
32062 {1.73403275, 2.12201905}, //
+
32063 {1.72335124, 2.1152339}, //
+
32064 {1.71224999, 2.1089499}, //
+
32065 {1.7100358, 2.10816288}, //
+
32066 {1.70790434, 2.10729074}, //
+
32067 {1.70585561, 2.10633326}, //
+
32068 {1.70388949, 2.10529065}, //
+
32069 {1.70200622, 2.10416293}, //
+
32070 {1.70020556, 2.1029501}, //
+
32071 {1.69848764, 2.10165191}, //
+
32072 {1.69685245, 2.1002686}, //
+
32073 {1.69529998, 2.09879994}, //
+
32074 });
+
32075 polys.push_back({
+
32076 {0.226436421, 2.46586061}, //
+
32077 {0.225827783, 2.46594453}, //
+
32078 {0.225177154, 2.46611238}, //
+
32079 {0.224484563, 2.46636415}, //
+
32080 {0.223749995, 2.46670008}, //
+
32081 {0.223046914, 2.46709824}, //
+
32082 {0.222426549, 2.46753693}, //
+
32083 {0.221888885, 2.46801662}, //
+
32084 {0.221433952, 2.46853709}, //
+
32085 {0.221061721, 2.46909809}, //
+
32086 {0.220772222, 2.4697001}, //
+
32087 {0.220565438, 2.47034264}, //
+
32088 {0.220441356, 2.47102594}, //
+
32089 {0.220400006, 2.47175002}, //
+
32090 {0.220400006, 2.47342896}, //
+
32091 {0.220400006, 2.47439456}, //
+
32092 {0.220400006, 2.47544384}, //
+
32093 {0.220400006, 2.47779441}, //
+
32094 {0.220400006, 2.48195004}, //
+
32095 {0.221217901, 2.48347092}, //
+
32096 {0.222160488, 2.48503399}, //
+
32097 {0.223227784, 2.48663878}, //
+
32098 {0.224419758, 2.48828578}, //
+
32099 {0.225736424, 2.48997474}, //
+
32100 {0.227177784, 2.49170566}, //
+
32101 {0.228743821, 2.4934783}, //
+
32102 {0.230434567, 2.49529314}, //
+
32103 {0.232250005, 2.49714994}, //
+
32104 {0.234159261, 2.49908018}, //
+
32105 {0.236109257, 2.50109315}, //
+
32106 {0.238100007, 2.50318885}, //
+
32107 {0.240131482, 2.50536728}, //
+
32108 {0.242203698, 2.50762844}, //
+
32109 {0.244316667, 2.50997233}, //
+
32110 {0.246470377, 2.51239872}, //
+
32111 {0.248664811, 2.51490808}, //
+
32112 {0.2509, 2.51749992}, //
+
32113 {0.25316605, 2.52006054}, //
+
32114 {0.255430877, 2.52245307}, //
+
32115 {0.257694453, 2.52467775}, //
+
32116 {0.259956777, 2.52673459}, //
+
32117 {0.262217909, 2.52862334}, //
+
32118 {0.264477789, 2.53034449}, //
+
32119 {0.266736418, 2.53189754}, //
+
32120 {0.268993825, 2.53328276}, //
+
32121 {0.27125001, 2.53449988}, //
+
32122 {0.278267294, 2.53802586}, //
+
32123 {0.279395074, 2.53859258}, //
+
32124 {0.280272216, 2.53903341}, //
+
32125 {0.28089878, 2.53934813}, //
+
32126 {0.281274706, 2.53953695}, //
+
32127 {0.281399995, 2.5395999}, //
+
32128 {0.280612975, 2.53876042}, //
+
32129 {0.279740751, 2.53775311}, //
+
32130 {0.278783321, 2.5365777}, //
+
32131 {0.277740747, 2.53523445}, //
+
32132 {0.276612967, 2.53372335}, //
+
32133 {0.275400013, 2.53204441}, //
+
32134 {0.274101853, 2.53019762}, //
+
32135 {0.272718519, 2.52818274}, //
+
32136 {0.27125001, 2.52600002}, //
+
32137 {0.269014806, 2.5230093}, //
+
32138 {0.266820371, 2.52005935}, //
+
32139 {0.264666677, 2.51714993}, //
+
32140 {0.262553692, 2.51428151}, //
+
32141 {0.260481477, 2.51145363}, //
+
32142 {0.258450001, 2.50866675}, //
+
32143 {0.256459266, 2.50592041}, //
+
32144 {0.25450927, 2.50321484}, //
+
32145 {0.252600014, 2.50055003}, //
+
32146 {0.250742584, 2.49793768}, //
+
32147 {0.248925924, 2.49536729}, //
+
32148 {0.247150004, 2.49283886}, //
+
32149 {0.245414808, 2.49035239}, //
+
32150 {0.243720368, 2.48790812}, //
+
32151 {0.242066666, 2.48550558}, //
+
32152 {0.240453705, 2.483145}, //
+
32153 {0.238881484, 2.48082662}, //
+
32154 {0.237350002, 2.47854996}, //
+
32155 {0.233572215, 2.47291112}, //
+
32156 {0.23264876, 2.47153282}, //
+
32157 {0.231893212, 2.47040486}, //
+
32158 {0.230885804, 2.46890116}, //
+
32159 {0.230633944, 2.46852541}, //
+
32160 {0.230550006, 2.4684}, //
+
32161 {0.23052901, 2.46837902}, //
+
32162 {0.230466053, 2.46831608}, //
+
32163 {0.229521602, 2.4673717}, //
+
32164 {0.229206786, 2.46705675}, //
+
32165 {0.228850007, 2.46670008}, //
+
32166 {0.228451237, 2.46636415}, //
+
32167 {0.228010491, 2.46611238}, //
+
32168 {0.227527782, 2.46594453}, //
+
32169 {0.227003083, 2.46586061}, //
+
32170 });
+
32171 polys.push_back({
+
32172 {0.239061728, 2.41261554}, //
+
32173 {0.237705559, 2.41338897}, //
+
32174 {0.23655802, 2.41462278}, //
+
32175 {0.235619143, 2.41631722}, //
+
32176 {0.234888881, 2.41847229}, //
+
32177 {0.234367281, 2.42108774}, //
+
32178 {0.234054327, 2.42416358}, //
+
32179 {0.233950004, 2.42770004}, //
+
32180 {0.235439509, 2.43209624}, //
+
32181 {0.236885801, 2.43624067}, //
+
32182 {0.238288894, 2.44013333}, //
+
32183 {0.239648759, 2.44377398}, //
+
32184 {0.240965426, 2.44716287}, //
+
32185 {0.242238894, 2.45029998}, //
+
32186 {0.243469134, 2.45318508}, //
+
32187 {0.244656175, 2.45581841}, //
+
32188 {0.245800003, 2.45819998}, //
+
32189 {0.246954322, 2.46042418}, //
+
32190 {0.248150617, 2.46256304}, //
+
32191 {0.249388888, 2.46461678}, //
+
32192 {0.250669122, 2.46658516}, //
+
32193 {0.251991361, 2.46846843}, //
+
32194 {0.253355563, 2.47026658}, //
+
32195 {0.254761726, 2.47197962}, //
+
32196 {0.25620988, 2.4736073}, //
+
32197 {0.257699996, 2.47515011}, //
+
32198 {0.272818506, 2.49026847}, //
+
32199 {0.274701864, 2.49215174}, //
+
32200 {0.276166677, 2.49361658}, //
+
32201 {0.277212977, 2.494663}, //
+
32202 {0.277840734, 2.49529076}, //
+
32203 {0.278050005, 2.49550009}, //
+
32204 {0.278050005, 2.49398899}, //
+
32205 {0.278050005, 2.49344325}, //
+
32206 {0.278050005, 2.49281359}, //
+
32207 {0.278050005, 2.4921}, //
+
32208 {0.278795063, 2.48980188}, //
+
32209 {0.279541343, 2.48741841}, //
+
32210 {0.280288875, 2.48495007}, //
+
32211 {0.281037658, 2.48239636}, //
+
32212 {0.281787664, 2.47975731}, //
+
32213 {0.282538891, 2.47703338}, //
+
32214 {0.28329137, 2.47422409}, //
+
32215 {0.28404507, 2.47132969}, //
+
32216 {0.284799993, 2.46834993}, //
+
32217 {0.285429627, 2.46538091}, //
+
32218 {0.285807401, 2.46249557}, //
+
32219 {0.285933346, 2.45969439}, //
+
32220 {0.285807401, 2.45697713}, //
+
32221 {0.285429627, 2.4543438}, //
+
32222 {0.284799993, 2.45179439}, //
+
32223 {0.28391853, 2.4493289}, //
+
32224 {0.282785177, 2.44694757}, //
+
32225 {0.281399995, 2.44464993}, //
+
32226 {0.279836416, 2.44170117}, //
+
32227 {0.278145671, 2.43887711}, //
+
32228 {0.276327789, 2.43617773}, //
+
32229 {0.27438271, 2.43360305}, //
+
32230 {0.272310495, 2.43115306}, //
+
32231 {0.270111114, 2.42882776}, //
+
32232 {0.267784566, 2.42662716}, //
+
32233 {0.265330851, 2.42455125}, //
+
32234 {0.26275, 2.42260003}, //
+
32235 {0.260158032, 2.42080545}, //
+
32236 {0.257648766, 2.41917777}, //
+
32237 {0.255222231, 2.41771674}, //
+
32238 {0.252878398, 2.41642213}, //
+
32239 {0.250617296, 2.41529441}, //
+
32240 {0.248438895, 2.41433334}, //
+
32241 {0.24634321, 2.41353893}, //
+
32242 {0.244330242, 2.41291118}, //
+
32243 {0.242400005, 2.41245008}, //
+
32244 {0.240626544, 2.41230249}, //
+
32245 });
+
32246 polys.push_back({
+
32247 {1.91229999, 2.27169991}, //
+
32248 {1.91229999, 2.27169991}, //
+
32249 {1.91229999, 2.27169991}, //
+
32250 {1.91232097, 2.27172089}, //
+
32251 {1.91238391, 2.27178407}, //
+
32252 {1.91248894, 2.27188897}, //
+
32253 {1.9126358, 2.27203584}, //
+
32254 {1.91305554, 2.27245545}, //
+
32255 {1.91332841, 2.27272844}, //
+
32256 {1.91364324, 2.27304316}, //
+
32257 {1.91400003, 2.27340007}, //
+
32258 {1.91437781, 2.27375674}, //
+
32259 {1.91475558, 2.27407169}, //
+
32260 {1.91513336, 2.27434444}, //
+
32261 {1.91551113, 2.27457523}, //
+
32262 {1.91588891, 2.2747643}, //
+
32263 {1.91626668, 2.27491117}, //
+
32264 {1.91664445, 2.27501607}, //
+
32265 {1.91702223, 2.27507901}, //
+
32266 {1.9174, 2.27509999}, //
+
32267 {1.91777778, 2.27512097}, //
+
32268 {1.91815555, 2.27518392}, //
+
32269 {1.91853333, 2.27528882}, //
+
32270 {1.9189111, 2.27543569}, //
+
32271 {1.91928887, 2.27562475}, //
+
32272 {1.91966665, 2.27585554}, //
+
32273 {1.92004442, 2.27612829}, //
+
32274 {1.9204222, 2.27644324}, //
+
32275 {1.92079997, 2.27679992}, //
+
32276 {1.92115676, 2.27715683}, //
+
32277 {1.9214716, 2.27747154}, //
+
32278 {1.92174447, 2.27774453}, //
+
32279 {1.92197526, 2.27797532}, //
+
32280 {1.9221642, 2.27816415}, //
+
32281 {1.92231107, 2.27831101}, //
+
32282 {1.92241609, 2.27841616}, //
+
32283 {1.92250001, 2.27850008}, //
+
32284 {1.9226253, 2.27862525}, //
+
32285 {1.92300129, 2.27900124}, //
+
32286 {1.92362773, 2.2796278}, //
+
32287 {1.924505, 2.28050494}, //
+
32288 {1.92563272, 2.28163266}, //
+
32289 {1.92701113, 2.2830112}, //
+
32290 {1.92864013, 2.28464007}, //
+
32291 {1.9305197, 2.28651977}, //
+
32292 {1.93264997, 2.28865004}, //
+
32293 {1.93734872, 2.29334879}, //
+
32294 {1.9398222, 2.29582214}, //
+
32295 {1.9423784, 2.29837847}, //
+
32296 {1.94501734, 2.30101728}, //
+
32297 {1.94773889, 2.30373883}, //
+
32298 {1.95054317, 2.30654311}, //
+
32299 {1.95343029, 2.30943036}, //
+
32300 {1.95640004, 2.3124001}, //
+
32301 {1.95943213, 2.31543207}, //
+
32302 {1.96250618, 2.31850624}, //
+
32303 {1.96562219, 2.32162213}, //
+
32304 {1.96878028, 2.32478023}, //
+
32305 {1.97198021, 2.32798028}, //
+
32306 {1.97522223, 2.3312223}, //
+
32307 {1.97850621, 2.33450627}, //
+
32308 {1.98183215, 2.33783221}, //
+
32309 {1.98520005, 2.34120011}, //
+
32310 {1.98852658, 2.3444531}, //
+
32311 {1.99172843, 2.34741235}, //
+
32312 {1.99480557, 2.35007787}, //
+
32313 {1.99775803, 2.35244942}, //
+
32314 {2.00058579, 2.35452724}, //
+
32315 {2.00328898, 2.35631108}, //
+
32316 {2.00586724, 2.3578012}, //
+
32317 {2.00832105, 2.35899758}, //
+
32318 {2.01064992, 2.3599}, //
+
32319 {2.01370311, 2.36211419}, //
+
32320 {2.01684022, 2.36424565}, //
+
32321 {2.02006102, 2.36629438}, //
+
32322 {2.02336597, 2.36826038}, //
+
32323 {2.02675486, 2.37014389}, //
+
32324 {2.03022766, 2.37194443}, //
+
32325 {2.03378463, 2.37366223}, //
+
32326 {2.03742528, 2.37529755}, //
+
32327 {2.04115009, 2.37684989}, //
+
32328 {2.04487467, 2.37761617}, //
+
32329 {2.04851532, 2.37842536}, //
+
32330 {2.05207229, 2.37927771}, //
+
32331 {2.05554509, 2.38017344}, //
+
32332 {2.05893397, 2.38111234}, //
+
32333 {2.06223893, 2.38209438}, //
+
32334 {2.06545997, 2.38311982}, //
+
32335 {2.06859684, 2.38418818}, //
+
32336 {2.07165003, 2.38529992}, //
+
32337 {2.07458758, 2.38645363}, //
+
32338 {2.0773561, 2.38764811}, //
+
32339 {2.07995558, 2.38888335}, //
+
32340 {2.08238578, 2.39015937}, //
+
32341 {2.08464694, 2.39147592}, //
+
32342 {2.08673882, 2.39283323}, //
+
32343 {2.08866167, 2.39423156}, //
+
32344 {2.09041548, 2.39567041}, //
+
32345 {2.09200001, 2.39715004}, //
+
32346 {2.09342718, 2.39945793}, //
+
32347 {2.09468651, 2.40184879}, //
+
32348 {2.09577775, 2.40432215}, //
+
32349 {2.09670115, 2.40687847}, //
+
32350 {2.09745669, 2.40951729}, //
+
32351 {2.0980444, 2.41223884}, //
+
32352 {2.09846425, 2.41504312}, //
+
32353 {2.09871602, 2.41793036}, //
+
32354 {2.09879994, 2.42090011}, //
+
32355 {2.09875798, 2.42395306}, //
+
32356 {2.0986321, 2.42709017}, //
+
32357 {2.09842229, 2.4303112}, //
+
32358 {2.09812832, 2.43361616}, //
+
32359 {2.09775066, 2.43700504}, //
+
32360 {2.09728885, 2.44047785}, //
+
32361 {2.09674311, 2.44403458}, //
+
32362 {2.09611368, 2.44767523}, //
+
32363 {2.09540009, 2.45140004}, //
+
32364 {2.09540009, 2.45291114}, //
+
32365 {2.09540009, 2.45442224}, //
+
32366 {2.09540009, 2.46197772}, //
+
32367 {2.09540009, 2.46348882}, //
+
32368 {2.09540009, 2.46499991}, //
+
32369 {2.09552526, 2.46650052}, //
+
32370 {2.09590125, 2.46800256}, //
+
32371 {2.09652781, 2.46950555}, //
+
32372 {2.09740496, 2.47100997}, //
+
32373 {2.09853268, 2.47251534}, //
+
32374 {2.09991121, 2.47402215}, //
+
32375 {2.10154009, 2.47553015}, //
+
32376 {2.10341978, 2.47703958}, //
+
32377 {2.10555005, 2.47854996}, //
+
32378 {2.10783696, 2.48001862}, //
+
32379 {2.11016488, 2.48140192}, //
+
32380 {2.11253333, 2.48270011}, //
+
32381 {2.11494255, 2.48391294}, //
+
32382 {2.11739254, 2.48504066}, //
+
32383 {2.1198833, 2.48608327}, //
+
32384 {2.12241483, 2.48704076}, //
+
32385 {2.12498713, 2.48791289}, //
+
32386 {2.12759995, 2.48869991}, //
+
32387 {2.13018084, 2.4894135}, //
+
32388 {2.13263464, 2.49004316}, //
+
32389 {2.13496113, 2.4905889}, //
+
32390 {2.13716054, 2.49105072}, //
+
32391 {2.13923264, 2.49142838}, //
+
32392 {2.14117789, 2.49172211}, //
+
32393 {2.1429956, 2.49193215}, //
+
32394 {2.14468646, 2.49205804}, //
+
32395 {2.14625001, 2.4921}, //
+
32396 {2.14622903, 2.49124002}, //
+
32397 {2.14616609, 2.49017167}, //
+
32398 {2.14606118, 2.48889446}, //
+
32399 {2.14591432, 2.48740864}, //
+
32400 {2.14572525, 2.4857142}, //
+
32401 {2.14549446, 2.48381114}, //
+
32402 {2.14522171, 2.48169947}, //
+
32403 {2.14490676, 2.47937894}, //
+
32404 {2.14455009, 2.47685003}, //
+
32405 {2.14422417, 2.47413278}, //
+
32406 {2.14397955, 2.47124743}, //
+
32407 {2.14381671, 2.46819448}, //
+
32408 {2.14373517, 2.46497345}, //
+
32409 {2.14373517, 2.46158457}, //
+
32410 {2.14381671, 2.45802784}, //
+
32411 {2.14397955, 2.45430303}, //
+
32412 {2.14422417, 2.4504106}, //
+
32413 {2.14455009, 2.4463501}, //
+
32414 {2.14490676, 2.44226861}, //
+
32415 {2.14522171, 2.43831301}, //
+
32416 {2.14549446, 2.43448329}, //
+
32417 {2.14572525, 2.4307797}, //
+
32418 {2.14591432, 2.42720175}, //
+
32419 {2.14606118, 2.42374992}, //
+
32420 {2.14616609, 2.42042398}, //
+
32421 {2.14622903, 2.41722417}, //
+
32422 {2.14625001, 2.41415}, //
+
32423 {2.14690065, 2.41123271}, //
+
32424 {2.14734125, 2.40852523}, //
+
32425 {2.14757228, 2.40602779}, //
+
32426 {2.14759326, 2.40374017}, //
+
32427 {2.14740443, 2.40166235}, //
+
32428 {2.14700556, 2.39979434}, //
+
32429 {2.14639688, 2.39813638}, //
+
32430 {2.14557838, 2.39668822}, //
+
32431 {2.14455009, 2.39545012}, //
+
32432 {2.14332223, 2.39434814}, //
+
32433 {2.14188337, 2.39328694}, //
+
32434 {2.14023328, 2.39226675}, //
+
32435 {2.13837218, 2.39128709}, //
+
32436 {2.13630009, 2.3903482}, //
+
32437 {2.13401675, 2.38945007}, //
+
32438 {2.13152218, 2.38859248}, //
+
32439 {2.1288166, 2.3877759}, //
+
32440 {2.12590003, 2.38700008}, //
+
32441 {2.12284684, 2.38616109}, //
+
32442 {2.11970997, 2.38515544}, //
+
32443 {2.11648893, 2.38398337}, //
+
32444 {2.11318398, 2.38264441}, //
+
32445 {2.10979509, 2.3811388}, //
+
32446 {2.10632229, 2.37946677}, //
+
32447 {2.10276532, 2.37762785}, //
+
32448 {2.09912467, 2.37562227}, //
+
32449 {2.09540009, 2.37345004}, //
+
32450 {2.09245133, 2.37195992}, //
+
32451 {2.08962727, 2.37051177}, //
+
32452 {2.08692789, 2.36910558}, //
+
32453 {2.08435297, 2.36774135}, //
+
32454 {2.08190298, 2.36641908}, //
+
32455 {2.07957768, 2.36513901}, //
+
32456 {2.07737708, 2.36390066}, //
+
32457 {2.07530117, 2.36270428}, //
+
32458 {2.07334995, 2.36155009}, //
+
32459 {2.07155561, 2.36042714}, //
+
32460 {2.06992769, 2.359303}, //
+
32461 {2.06846666, 2.35817766}, //
+
32462 {2.06717229, 2.35705113}, //
+
32463 {2.06604433, 2.35592341}, //
+
32464 {2.06508327, 2.3547945}, //
+
32465 {2.06428885, 2.35366416}, //
+
32466 {2.0636611, 2.35253263}, //
+
32467 {2.0632, 2.3513999}, //
+
32468 {2.06280112, 2.35024619}, //
+
32469 {2.06236053, 2.34905195}, //
+
32470 {2.06187773, 2.34781671}, //
+
32471 {2.06135297, 2.34654069}, //
+
32472 {2.06078649, 2.34522414}, //
+
32473 {2.0601778, 2.34386659}, //
+
32474 {2.05952716, 2.3424685}, //
+
32475 {2.05883455, 2.34102964}, //
+
32476 {2.05809999, 2.33955002}, //
+
32477 {2.05734515, 2.33799744}, //
+
32478 {2.05659127, 2.33636236}, //
+
32479 {2.05583882, 2.33464456}, //
+
32480 {2.05508757, 2.33284378}, //
+
32481 {2.05433774, 2.33096051}, //
+
32482 {2.05358887, 2.32899451}, //
+
32483 {2.05284142, 2.32694578}, //
+
32484 {2.05209517, 2.32481408}, //
+
32485 {2.05135012, 2.32259989}, //
+
32486 {2.04885316, 2.31891656}, //
+
32487 {2.04589558, 2.31539989}, //
+
32488 {2.04247785, 2.3120501}, //
+
32489 {2.03859949, 2.30886674}, //
+
32490 {2.03426051, 2.30585003}, //
+
32491 {2.02946115, 2.30299997}, //
+
32492 {2.02420115, 2.30031657}, //
+
32493 {2.01848078, 2.29780006}, //
+
32494 {2.01230001, 2.29544997}, //
+
32495 {2.00587893, 2.29323578}, //
+
32496 {1.99941599, 2.29110432}, //
+
32497 {1.9929111, 2.28905559}, //
+
32498 {1.98636425, 2.28708959}, //
+
32499 {1.97977531, 2.28520608}, //
+
32500 {1.97314441, 2.28340554}, //
+
32501 {1.96647155, 2.28168774}, //
+
32502 {1.95975673, 2.28005242}, //
+
32503 {1.95299995, 2.27850008}, //
+
32504 {1.95007217, 2.27845812}, //
+
32505 {1.94731116, 2.278332}, //
+
32506 {1.94471669, 2.27812219}, //
+
32507 {1.94228888, 2.27782845}, //
+
32508 {1.94002783, 2.27745056}, //
+
32509 {1.93793333, 2.27698898}, //
+
32510 {1.93600559, 2.27644324}, //
+
32511 {1.93424439, 2.27581358}, //
+
32512 {1.93264997, 2.27509999}, //
+
32513 {1.93045676, 2.27438641}, //
+
32514 {1.92838824, 2.27375674}, //
+
32515 {1.92644441, 2.273211}, //
+
32516 {1.92462528, 2.27274942}, //
+
32517 {1.92293084, 2.27237153}, //
+
32518 {1.92136109, 2.2720778}, //
+
32519 {1.91991603, 2.27186799}, //
+
32520 {1.91859567, 2.27174187}, //
+
32521 {1.9174, 2.27169991}, //
+
32522 {1.91538513, 2.27169991}, //
+
32523 {1.91456664, 2.27169991}, //
+
32524 {1.91387403, 2.27169991}, //
+
32525 {1.91255188, 2.27169991}, //
+
32526 {1.91236293, 2.27169991}, //
+
32527 });
+
32528 polys.push_back({
+
32529 {5.42126465, 1.5973556}, //
+
32530 {5.42025948, 1.59842217}, //
+
32531 {5.41322041, 1.60588884}, //
+
32532 {5.4095335, 1.60979998}, //
+
32533 {5.40517616, 1.6144222}, //
+
32534 {5.40014791, 1.61975551}, //
+
32535 {5.39445019, 1.62580001}, //
+
32536 {5.3882184, 1.63239872}, //
+
32537 {5.38156843, 1.63937283}, //
+
32538 {5.3744998, 1.6467222}, //
+
32539 {5.36701298, 1.65444696}, //
+
32540 {5.35910749, 1.66254687}, //
+
32541 {5.35078335, 1.67102218}, //
+
32542 {5.34204054, 1.67987287}, //
+
32543 {5.33287954, 1.68909872}, //
+
32544 {5.32329988, 1.69869995}, //
+
32545 {5.27580023, 1.75635004}, //
+
32546 {5.27582121, 1.756392}, //
+
32547 {5.27588415, 1.75651789}, //
+
32548 {5.27598906, 1.75672781}, //
+
32549 {5.27613592, 1.75702155}, //
+
32550 {5.27632475, 1.75739944}, //
+
32551 {5.27655554, 1.75786114}, //
+
32552 {5.27682829, 1.75840676}, //
+
32553 {5.277143, 1.75903642}, //
+
32554 {5.27750015, 1.75975001}, //
+
32555 {5.27794027, 1.7605679}, //
+
32556 {5.27850485, 1.76151049}, //
+
32557 {5.27919436, 1.76257777}, //
+
32558 {5.28000879, 1.76376975}, //
+
32559 {5.28094769, 1.76508641}, //
+
32560 {5.28201103, 1.76652777}, //
+
32561 {5.28319931, 1.76809382}, //
+
32562 {5.28451252, 1.76978457}, //
+
32563 {5.28595018, 1.77160001}, //
+
32564 {5.28746128, 1.77359319}, //
+
32565 {5.28897238, 1.7757951}, //
+
32566 {5.29048347, 1.77820551}, //
+
32567 {5.29199457, 1.78082466}, //
+
32568 {5.29350567, 1.78365242}, //
+
32569 {5.29501677, 1.78668892}, //
+
32570 {5.29652786, 1.78993392}, //
+
32571 {5.29803896, 1.79338765}, //
+
32572 {5.29955006, 1.79705}, //
+
32573 {5.29967546, 1.79734254}, //
+
32574 {5.30067778, 1.79968333}, //
+
32575 {5.30155516, 1.80173147}, //
+
32576 {5.30406094, 1.80758333}, //
+
32577 {5.30569029, 1.81138706}, //
+
32578 {5.30756998, 1.81577587}, //
+
32579 {5.30970001, 1.82075}, //
+
32580 {5.31207085, 1.82604814}, //
+
32581 {5.31465054, 1.83138704}, //
+
32582 {5.31743908, 1.83676672}, //
+
32583 {5.320436, 1.84218705}, //
+
32584 {5.3236413, 1.84764814}, //
+
32585 {5.32705545, 1.85315001}, //
+
32586 {5.33067846, 1.85869265}, //
+
32587 {5.33450985, 1.86427593}, //
+
32588 {5.33855009, 1.86989999}, //
+
32589 {5.34263134, 1.87545061}, //
+
32590 {5.34658718, 1.88079131}, //
+
32591 {5.35041666, 1.88592219}, //
+
32592 {5.35412025, 1.89084315}, //
+
32593 {5.35769796, 1.8955543}, //
+
32594 {5.36114979, 1.90005553}, //
+
32595 {5.36447573, 1.90434694}, //
+
32596 {5.36767578, 1.90842843}, //
+
32597 {5.37074995, 1.91229999}, //
+
32598 {5.37594366, 1.9183327}, //
+
32599 {5.38096952, 1.92436421}, //
+
32600 {5.38582754, 1.93039441}, //
+
32601 {5.39051771, 1.93642342}, //
+
32602 {5.39504004, 1.94245124}, //
+
32603 {5.39939451, 1.94847775}, //
+
32604 {5.40358067, 1.95450306}, //
+
32605 {5.40759945, 1.96052718}, //
+
32606 {5.41144991, 1.96654999}, //
+
32607 {5.41525841, 1.97283399}, //
+
32608 {5.41915131, 1.97961915}, //
+
32609 {5.42312765, 1.98690557}, //
+
32610 {5.4271884, 1.99469316}, //
+
32611 {5.43133259, 2.00298214}, //
+
32612 {5.43556118, 2.01177216}, //
+
32613 {5.43987322, 2.02106357}, //
+
32614 {5.44426966, 2.03085613}, //
+
32615 {5.44875002, 2.04115009}, //
+
32616 {5.45458412, 2.05360484}, //
+
32617 {5.46004152, 2.06534743}, //
+
32618 {5.46512222, 2.07637787}, //
+
32619 {5.4698267, 2.08669567}, //
+
32620 {5.47415447, 2.09630132}, //
+
32621 {5.47810555, 2.10519433}, //
+
32622 {5.48168039, 2.11337543}, //
+
32623 {5.48487854, 2.12084389}, //
+
32624 {5.48769999, 2.12759995}, //
+
32625 {5.49025965, 2.13388515}, //
+
32626 {5.49265051, 2.13991857}, //
+
32627 {5.49487209, 2.14569998}, //
+
32628 {5.49692488, 2.15122962}, //
+
32629 {5.49880791, 2.15650749}, //
+
32630 {5.50052214, 2.16153336}, //
+
32631 {5.50206709, 2.16630745}, //
+
32632 {5.50344324, 2.17082953}, //
+
32633 {5.50465012, 2.17510009}, //
+
32634 {5.50580454, 2.17930675}, //
+
32635 {5.50700045, 2.18363833}, //
+
32636 {5.50823879, 2.18809438}, //
+
32637 {5.5095191, 2.19267535}, //
+
32638 {5.51084137, 2.19738078}, //
+
32639 {5.5122056, 2.20221114}, //
+
32640 {5.51361179, 2.20716596}, //
+
32641 {5.51505995, 2.2122457}, //
+
32642 {5.51655006, 2.2174499}, //
+
32643 {5.51738882, 2.21984196}, //
+
32644 {5.51839447, 2.22248459}, //
+
32645 {5.51956654, 2.2253778}, //
+
32646 {5.52090549, 2.22852159}, //
+
32647 {5.52241135, 2.23191595}, //
+
32648 {5.52408314, 2.23556113}, //
+
32649 {5.5259223, 2.23945689}, //
+
32650 {5.52792788, 2.24360299}, //
+
32651 {5.53009987, 2.24799991}, //
+
32652 {5.53319502, 2.26070619}, //
+
32653 {5.53645802, 2.27320242}, //
+
32654 {5.53988886, 2.28548884}, //
+
32655 {5.54348755, 2.29756546}, //
+
32656 {5.54725409, 2.30943203}, //
+
32657 {5.55118895, 2.32108879}, //
+
32658 {5.55529118, 2.33253574}, //
+
32659 {5.55956173, 2.34377289}, //
+
32660 {5.56400013, 2.35479999}, //
+
32661 {5.56881523, 2.36603642}, //
+
32662 {5.57421732, 2.37790132}, //
+
32663 {5.58020544, 2.39039445}, //
+
32664 {5.58678007, 2.40351605}, //
+
32665 {5.59394121, 2.41726613}, //
+
32666 {5.60168886, 2.43164444}, //
+
32667 {5.61002302, 2.44665122}, //
+
32668 {5.61894321, 2.46228647}, //
+
32669 {5.62844992, 2.47854996}, //
+
32670 {5.71999979, 2.38019991}, //
+
32671 {5.7169776, 2.3726666}, //
+
32672 {5.71320009, 2.36325002}, //
+
32673 {5.71148014, 2.35948324}, //
+
32674 {5.70934343, 2.35571671}, //
+
32675 {5.70678902, 2.35194993}, //
+
32676 {5.70381737, 2.34818339}, //
+
32677 {5.70042849, 2.34441662}, //
+
32678 {5.69662237, 2.34065008}, //
+
32679 {5.69239855, 2.33688331}, //
+
32680 {5.68775797, 2.33311677}, //
+
32681 {5.68270016, 2.32934999}, //
+
32682 {5.68001366, 2.32231784}, //
+
32683 {5.67850256, 2.31836224}, //
+
32684 {5.67665577, 2.31352782}, //
+
32685 {5.67447281, 2.30781412}, //
+
32686 {5.67195415, 2.30122161}, //
+
32687 {5.66909981, 2.29375005}, //
+
32688 {5.66587973, 2.28565073}, //
+
32689 {5.66224051, 2.27717471}, //
+
32690 {5.6581831, 2.26832223}, //
+
32691 {5.6537075, 2.25909328}, //
+
32692 {5.64881277, 2.24948764}, //
+
32693 {5.64349985, 2.23950553}, //
+
32694 {5.63776875, 2.22914696}, //
+
32695 {5.6316185, 2.21841168}, //
+
32696 {5.62505007, 2.20729995}, //
+
32697 {5.62492418, 2.20711184}, //
+
32698 {5.62454653, 2.20654702}, //
+
32699 {5.62303495, 2.20428777}, //
+
32700 {5.62190199, 2.20259333}, //
+
32701 {5.62051678, 2.20052218}, //
+
32702 {5.6188798, 2.19807458}, //
+
32703 {5.61699057, 2.19525051}, //
+
32704 {5.61485004, 2.19204998}, //
+
32705 {5.61261463, 2.18864012}, //
+
32706 {5.61042023, 2.18518829}, //
+
32707 {5.60826683, 2.18169451}, //
+
32708 {5.60615349, 2.17815876}, //
+
32709 {5.60408163, 2.17458081}, //
+
32710 {5.60204983, 2.17096114}, //
+
32711 {5.60005903, 2.16729927}, //
+
32712 {5.59810925, 2.16359568}, //
+
32713 {5.59619999, 2.15984988}, //
+
32714 {5.59432173, 2.15608263}, //
+
32715 {5.59244204, 2.15231419}, //
+
32716 {5.59056091, 2.14854455}, //
+
32717 {5.58867884, 2.14477348}, //
+
32718 {5.58679581, 2.14100122}, //
+
32719 {5.58491135, 2.13722777}, //
+
32720 {5.58302546, 2.13345313}, //
+
32721 {5.58113813, 2.12967706}, //
+
32722 {5.57924986, 2.12590003}, //
+
32723 {5.5774765, 2.12225938}, //
+
32724 {5.57591152, 2.11887026}, //
+
32725 {5.5745554, 2.11573339}, //
+
32726 {5.57340813, 2.11284804}, //
+
32727 {5.57246923, 2.11021471}, //
+
32728 {5.57173872, 2.10783339}, //
+
32729 {5.57121706, 2.10570359}, //
+
32730 {5.57090425, 2.10382581}, //
+
32731 {5.57079983, 2.10220003}, //
+
32732 {5.57079983, 2.08354998}, //
+
32733 {5.57084179, 2.08243775}, //
+
32734 {5.57096767, 2.08136725}, //
+
32735 {5.57117796, 2.08033895}, //
+
32736 {5.57147169, 2.07935238}, //
+
32737 {5.57184935, 2.078408}, //
+
32738 {5.57231092, 2.07750559}, //
+
32739 {5.5728569, 2.07664514}, //
+
32740 {5.57348633, 2.07582664}, //
+
32741 {5.57420015, 2.07505012}, //
+
32742 {5.57495499, 2.07442045}, //
+
32743 {5.57570887, 2.07404256}, //
+
32744 {5.57646132, 2.07391667}, //
+
32745 {5.57721233, 2.07404256}, //
+
32746 {5.5779624, 2.07442045}, //
+
32747 {5.57871103, 2.07505012}, //
+
32748 {5.57945871, 2.07593155}, //
+
32749 {5.58020496, 2.07706475}, //
+
32750 {5.58094978, 2.07844996}, //
+
32751 {5.58178949, 2.08012843}, //
+
32752 {5.58279705, 2.0821414}, //
+
32753 {5.58397245, 2.08448887}, //
+
32754 {5.58531523, 2.08717108}, //
+
32755 {5.58682632, 2.09018755}, //
+
32756 {5.58850574, 2.093539}, //
+
32757 {5.59035254, 2.09722471}, //
+
32758 {5.59236717, 2.10124516}, //
+
32759 {5.59455013, 2.10560012}, //
+
32760 {5.59990072, 2.11478019}, //
+
32761 {5.60541916, 2.12425423}, //
+
32762 {5.61110544, 2.13402224}, //
+
32763 {5.61696005, 2.14408398}, //
+
32764 {5.62298203, 2.15443945}, //
+
32765 {5.62917233, 2.16508889}, //
+
32766 {5.63553047, 2.17603207}, //
+
32767 {5.64205599, 2.18726921}, //
+
32768 {5.64874983, 2.19880009}, //
+
32769 {5.65541315, 2.21013212}, //
+
32770 {5.66182423, 2.22075057}, //
+
32771 {5.66798353, 2.23065567}, //
+
32772 {5.67389059, 2.23984694}, //
+
32773 {5.67954636, 2.24832463}, //
+
32774 {5.68494987, 2.25608897}, //
+
32775 {5.69010162, 2.26313949}, //
+
32776 {5.69500208, 2.26947665}, //
+
32777 {5.69964981, 2.27509999}, //
+
32778 {5.7011919, 2.27732396}, //
+
32779 {5.70281792, 2.27946305}, //
+
32780 {5.70452785, 2.28151655}, //
+
32781 {5.70632172, 2.28348517}, //
+
32782 {5.7081995, 2.28536844}, //
+
32783 {5.71016121, 2.2871666}, //
+
32784 {5.71220684, 2.28887963}, //
+
32785 {5.7143364, 2.29050732}, //
+
32786 {5.71654987, 2.29204988}, //
+
32787 {5.71881628, 2.2935605}, //
+
32788 {5.72108078, 2.29506969}, //
+
32789 {5.72334433, 2.29657769}, //
+
32790 {5.72560692, 2.2980845}, //
+
32791 {5.72786808, 2.29959011}, //
+
32792 {5.73012781, 2.30109453}, //
+
32793 {5.73238659, 2.30259752}, //
+
32794 {5.73464394, 2.30409932}, //
+
32795 {5.73689985, 2.30559993}, //
+
32796 {5.73914528, 2.30706906}, //
+
32797 {5.74134684, 2.30845428}, //
+
32798 {5.74350548, 2.30975556}, //
+
32799 {5.7456212, 2.31097293}, //
+
32800 {5.74769306, 2.31210613}, //
+
32801 {5.749722, 2.31315565}, //
+
32802 {5.75170803, 2.31412101}, //
+
32803 {5.75365067, 2.31500244}, //
+
32804 {5.75554991, 2.31579995}, //
+
32805 {5.75733376, 2.31651354}, //
+
32806 {5.75890779, 2.3171432}, //
+
32807 {5.76027203, 2.31768894}, //
+
32808 {5.76142645, 2.31815052}, //
+
32809 {5.76237106, 2.31852841}, //
+
32810 {5.76310539, 2.31882215}, //
+
32811 {5.76363039, 2.31903219}, //
+
32812 {5.7639451, 2.31915808}, //
+
32813 {5.76405001, 2.31920004}, //
+
32814 {5.80297184, 2.28734779}, //
+
32815 {5.80345964, 2.28660679}, //
+
32816 {5.80515432, 2.28396797}, //
+
32817 {5.80680561, 2.28132772}, //
+
32818 {5.80841351, 2.27868652}, //
+
32819 {5.80997849, 2.27604389}, //
+
32820 {5.81150007, 2.27340007}, //
+
32821 {5.81301117, 2.27082896}, //
+
32822 {5.81452227, 2.26838279}, //
+
32823 {5.81603336, 2.26606107}, //
+
32824 {5.81754446, 2.26386428}, //
+
32825 {5.81905556, 2.26179194}, //
+
32826 {5.82056665, 2.25984454}, //
+
32827 {5.82207775, 2.25802159}, //
+
32828 {5.82358885, 2.25632358}, //
+
32829 {5.82509995, 2.25475001}, //
+
32830 {5.82980108, 2.25008345}, //
+
32831 {5.83114433, 2.24874997}, //
+
32832 {5.83156443, 2.24833322}, //
+
32833 {5.83163214, 2.24826598}, //
+
32834 {5.83159065, 2.24821544}, //
+
32835 {5.83046293, 2.24689865}, //
+
32836 {5.82924986, 2.24553895}, //
+
32837 {5.82795191, 2.24413586}, //
+
32838 {5.8265686, 2.24268961}, //
+
32839 {5.82509995, 2.24119997}, //
+
32840 {5.8235054, 2.23964763}, //
+
32841 {5.82174444, 2.23801231}, //
+
32842 {5.81981659, 2.23629451}, //
+
32843 {5.81772232, 2.23449373}, //
+
32844 {5.81546116, 2.23261046}, //
+
32845 {5.8130331, 2.23064446}, //
+
32846 {5.81043911, 2.22859573}, //
+
32847 {5.80767775, 2.22646427}, //
+
32848 {5.80474997, 2.22425008}, //
+
32849 {5.80361652, 2.22292781}, //
+
32850 {5.80273533, 2.22189927}, //
+
32851 {5.79669094, 2.21484756}, //
+
32852 {5.79454994, 2.21234989}, //
+
32853 {5.79223156, 2.20965362}, //
+
32854 {5.78978682, 2.20683146}, //
+
32855 {5.78721666, 2.20388341}, //
+
32856 {5.78452015, 2.20080924}, //
+
32857 {5.78169823, 2.19760919}, //
+
32858 {5.77874994, 2.19428325}, //
+
32859 {5.77567577, 2.19083142}, //
+
32860 {5.77247572, 2.18725371}, //
+
32861 {5.76914978, 2.18354988}, //
+
32862 {5.76580238, 2.17982531}, //
+
32863 {5.76253748, 2.17618465}, //
+
32864 {5.75935555, 2.17262769}, //
+
32865 {5.7562561, 2.16915488}, //
+
32866 {5.75323963, 2.165766}, //
+
32867 {5.75030565, 2.16246104}, //
+
32868 {5.74745417, 2.15924001}, //
+
32869 {5.74468565, 2.15610313}, //
+
32870 {5.7420001, 2.15304995}, //
+
32871 {5.73942947, 2.15012217}, //
+
32872 {5.73698521, 2.14736104}, //
+
32873 {5.73466682, 2.14476657}, //
+
32874 {5.73247385, 2.14233899}, //
+
32875 {5.73040724, 2.14007783}, //
+
32876 {5.72846651, 2.13798332}, //
+
32877 {5.72665167, 2.13605547}, //
+
32878 {5.72496319, 2.13429451}, //
+
32879 {5.72340012, 2.13269997}, //
+
32880 {5.72340012, 2.12967777}, //
+
32881 {5.72340012, 2.12892222}, //
+
32882 {5.72340012, 2.12816668}, //
+
32883 {5.72340012, 2.12590003}, //
+
32884 {5.72113323, 2.12286782}, //
+
32885 {5.71886683, 2.11979389}, //
+
32886 {5.71659994, 2.11667776}, //
+
32887 {5.71433353, 2.11351967}, //
+
32888 {5.71206665, 2.11031985}, //
+
32889 {5.70979977, 2.10707784}, //
+
32890 {5.70753336, 2.10379386}, //
+
32891 {5.70526648, 2.10046792}, //
+
32892 {5.70300007, 2.09710002}, //
+
32893 {5.70074463, 2.09389949}, //
+
32894 {5.69848871, 2.09107542}, //
+
32895 {5.69623327, 2.08862782}, //
+
32896 {5.69397783, 2.08655667}, //
+
32897 {5.69172239, 2.08486223}, //
+
32898 {5.68946648, 2.08354449}, //
+
32899 {5.68721104, 2.08260298}, //
+
32900 {5.6849556, 2.08203816}, //
+
32901 {5.68270016, 2.08185005}, //
+
32902 {5.68179798, 2.08107352}, //
+
32903 {5.6806035, 2.08025503}, //
+
32904 {5.67911673, 2.07939434}, //
+
32905 {5.67733717, 2.07849193}, //
+
32906 {5.67526484, 2.07754755}, //
+
32907 {5.6729002, 2.07656121}, //
+
32908 {5.67024279, 2.07553267}, //
+
32909 {5.66729259, 2.07446241}, //
+
32910 {5.6640501, 2.07334995}, //
+
32911 {5.66068125, 2.07218528}, //
+
32912 {5.65735388, 2.07093525}, //
+
32913 {5.65406656, 2.06960011}, //
+
32914 {5.65082026, 2.06817961}, //
+
32915 {5.64761496, 2.06667399}, //
+
32916 {5.64445019, 2.06508327}, //
+
32917 {5.64132595, 2.06340742}, //
+
32918 {5.63824272, 2.06164622}, //
+
32919 {5.63520002, 2.05979991}, //
+
32920 {5.63235617, 2.05794263}, //
+
32921 {5.62984705, 2.05612588}, //
+
32922 {5.6276722, 2.0543499}, //
+
32923 {5.62583208, 2.05261493}, //
+
32924 {5.62432671, 2.05092049}, //
+
32925 {5.62315559, 2.04926658}, //
+
32926 {5.62231922, 2.04765368}, //
+
32927 {5.62181711, 2.04608154}, //
+
32928 {5.62165022, 2.04454994}, //
+
32929 {5.62144089, 2.0385592}, //
+
32930 {5.62081289, 2.03265381}, //
+
32931 {5.61976671, 2.0268333}, //
+
32932 {5.61830187, 2.02109814}, //
+
32933 {5.61641836, 2.01544809}, //
+
32934 {5.61411667, 2.0098834}, //
+
32935 {5.61139631, 2.00440359}, //
+
32936 {5.60825729, 1.99900925}, //
+
32937 {5.60470009, 1.99370003}, //
+
32938 {5.60302162, 1.99107778}, //
+
32939 {5.60100842, 1.98774445}, //
+
32940 {5.59866095, 1.98370004}, //
+
32941 {5.59597921, 1.97894442}, //
+
32942 {5.59296227, 1.97347772}, //
+
32943 {5.58961105, 1.96730006}, //
+
32944 {5.5859251, 1.96041107}, //
+
32945 {5.58190489, 1.95281112}, //
+
32946 {5.57754993, 1.94449997}, //
+
32947 {5.57301712, 1.93578088}, //
+
32948 {5.56844139, 1.9269346}, //
+
32949 {5.56382227, 1.91796112}, //
+
32950 {5.55915976, 1.90886045}, //
+
32951 {5.55445433, 1.89963269}, //
+
32952 {5.54970551, 1.89027774}, //
+
32953 {5.54491377, 1.88079572}, //
+
32954 {5.54007816, 1.87118638}, //
+
32955 {5.53520012, 1.86144996}, //
+
32956 {5.53044701, 1.85195374}, //
+
32957 {5.52598763, 1.84304261}, //
+
32958 {5.52182245, 1.83471668}, //
+
32959 {5.51795053, 1.82697594}, //
+
32960 {5.51437283, 1.8198204}, //
+
32961 {5.51108885, 1.81324995}, //
+
32962 {5.5080986, 1.8072648}, //
+
32963 {5.50540257, 1.80186486}, //
+
32964 {5.50299978, 1.79705}, //
+
32965 {5.49868727, 1.78516173}, //
+
32966 {5.49479246, 1.77360797}, //
+
32967 {5.4913168, 1.76238894}, //
+
32968 {5.48825932, 1.7515043}, //
+
32969 {5.4856205, 1.74095428}, //
+
32970 {5.48339987, 1.73073888}, //
+
32971 {5.48159838, 1.72085798}, //
+
32972 {5.4802146, 1.7113117}, //
+
32973 {5.47924995, 1.70210004}, //
+
32974 {5.47853661, 1.69983399}, //
+
32975 {5.4779067, 1.69756913}, //
+
32976 {5.4773612, 1.69530559}, //
+
32977 {5.47689915, 1.69304323}, //
+
32978 {5.47652149, 1.69078207}, //
+
32979 {5.47622776, 1.68852222}, //
+
32980 {5.47601795, 1.68626356}, //
+
32981 {5.47589207, 1.68400621}, //
+
32982 {5.47585011, 1.68175006}, //
+
32983 {5.47503138, 1.68011355}, //
+
32984 {5.47408724, 1.67822659}, //
+
32985 {5.47301674, 1.67608893}, //
+
32986 {5.47182035, 1.67370057}, //
+
32987 {5.47049809, 1.67106175}, //
+
32988 {5.46904993, 1.66817224}, //
+
32989 {5.46747589, 1.66503215}, //
+
32990 {5.46577597, 1.66164136}, //
+
32991 {5.46395016, 1.65799999}, //
+
32992 {5.46205044, 1.6542753}, //
+
32993 {5.4601078, 1.65063453}, //
+
32994 {5.45812225, 1.6470778}, //
+
32995 {5.45609331, 1.64360499}, //
+
32996 {5.45402098, 1.64021599}, //
+
32997 {5.45190573, 1.63691115}, //
+
32998 {5.44974709, 1.63369012}, //
+
32999 {5.44754505, 1.63055313}, //
+
33000 {5.4453001, 1.62750006}, //
+
33001 {5.44308567, 1.62455118}, //
+
33002 {5.44095421, 1.62172711}, //
+
33003 {5.43890572, 1.61902773}, //
+
33004 {5.43693972, 1.61645305}, //
+
33005 {5.43505621, 1.61400306}, //
+
33006 {5.43325567, 1.61167777}, //
+
33007 {5.43153763, 1.60947716}, //
+
33008 {5.42990255, 1.60740125}, //
+
33009 {5.42834997, 1.60545003}, //
+
33010 {5.42693329, 1.60367656}, //
+
33011 {5.42460012, 1.60075557}, //
+
33012 {5.42368317, 1.59960806}, //
+
33013 {5.42193317, 1.59741724}, //
+
33014 {5.42168331, 1.59710431}, //
+
33015 {5.42159986, 1.597}, //
+
33016 });
+
33017 polys.push_back({
+
33018 {0.269361109, 1.98150241}, //
+
33019 {0.26860556, 1.98225057}, //
+
33020 {0.267850012, 1.9835}, //
+
33021 {0.267199397, 1.98517835}, //
+
33022 {0.266758651, 1.98719132}, //
+
33023 {0.266527772, 1.98953891}, //
+
33024 {0.266506791, 1.992221}, //
+
33025 {0.266695678, 1.99523771}, //
+
33026 {0.267094433, 1.99858892}, //
+
33027 {0.267703086, 2.00227475}, //
+
33028 {0.268521607, 2.00629497}, //
+
33029 {0.269549996, 2.01064992}, //
+
33030 {0.270661741, 2.01521349}, //
+
33031 {0.271730244, 2.01985979}, //
+
33032 {0.272755563, 2.02458882}, //
+
33033 {0.273737669, 2.02940059}, //
+
33034 {0.274676532, 2.03429508}, //
+
33035 {0.275572211, 2.03927231}, //
+
33036 {0.276424706, 2.04433203}, //
+
33037 {0.277233958, 2.04947472}, //
+
33038 {0.277999997, 2.0546999}, //
+
33039 {0.278755546, 2.05997777}, //
+
33040 {0.279511124, 2.06525564}, //
+
33041 {0.280266672, 2.07053328}, //
+
33042 {0.281022221, 2.07581115}, //
+
33043 {0.281777769, 2.08108878}, //
+
33044 {0.282533348, 2.08636665}, //
+
33045 {0.284799993, 2.10220003}, //
+
33046 {0.286248147, 2.10659623}, //
+
33047 {0.287570357, 2.11074066}, //
+
33048 {0.288766652, 2.11463332}, //
+
33049 {0.289837033, 2.11827397}, //
+
33050 {0.290781468, 2.12166286}, //
+
33051 {0.291599989, 2.12479997}, //
+
33052 {0.292292595, 2.12768507}, //
+
33053 {0.292859256, 2.1303184}, //
+
33054 {0.293300003, 2.13269997}, //
+
33055 {0.293635815, 2.13490319}, //
+
33056 {0.293887645, 2.1369791}, //
+
33057 {0.294055551, 2.1389277}, //
+
33058 {0.294139504, 2.14074945}, //
+
33059 {0.294139504, 2.1424439}, //
+
33060 {0.294055551, 2.14401102}, //
+
33061 {0.293887645, 2.14545131}, //
+
33062 {0.293635815, 2.14676428}, //
+
33063 {0.293300003, 2.14794993}, //
+
33064 {0.292943209, 2.1490624}, //
+
33065 {0.292628407, 2.15013266}, //
+
33066 {0.292355567, 2.15116119}, //
+
33067 {0.292124689, 2.15214753}, //
+
33068 {0.291935802, 2.15309191}, //
+
33069 {0.291788876, 2.15399456}, //
+
33070 {0.291683942, 2.15485501}, //
+
33071 {0.291621, 2.1556735}, //
+
33072 {0.291599989, 2.15645003}, //
+
33073 {0.291599989, 2.15795875}, //
+
33074 {0.291599989, 2.15871119}, //
+
33075 {0.291599989, 2.15946245}, //
+
33076 {0.291599989, 2.16096115}, //
+
33077 {0.291599989, 2.16170859}, //
+
33078 {0.291599989, 2.164711}, //
+
33079 {0.291599989, 2.16546679}, //
+
33080 {0.291599989, 2.16622233}, //
+
33081 {0.291599989, 2.16697788}, //
+
33082 {0.291599989, 2.16773343}, //
+
33083 {0.291599989, 2.16848898}, //
+
33084 {0.291599989, 2.17000008}, //
+
33085 {0.291537046, 2.17546535}, //
+
33086 {0.291348159, 2.18130612}, //
+
33087 {0.291033328, 2.18752217}, //
+
33088 {0.290592581, 2.19411349}, //
+
33089 {0.29002592, 2.20108032}, //
+
33090 {0.289333344, 2.20842218}, //
+
33091 {0.288514823, 2.21613955}, //
+
33092 {0.287570357, 2.2242322}, //
+
33093 {0.286500007, 2.23270011}, //
+
33094 {0.285346299, 2.24109435}, //
+
33095 {0.284151852, 2.24894452}, //
+
33096 {0.282916665, 2.2562499}, //
+
33097 {0.281640738, 2.26301122}, //
+
33098 {0.280324072, 2.26922774}, //
+
33099 {0.278966665, 2.27489996}, //
+
33100 {0.277568519, 2.28002787}, //
+
33101 {0.276129633, 2.28461123}, //
+
33102 {0.274650007, 2.28865004}, //
+
33103 {0.273998767, 2.29331851}, //
+
33104 {0.273556173, 2.29827952}, //
+
33105 {0.273322225, 2.30353332}, //
+
33106 {0.273296922, 2.30907965}, //
+
33107 {0.273480237, 2.31491852}, //
+
33108 {0.273872226, 2.32104993}, //
+
33109 {0.274472833, 2.32747412}, //
+
33110 {0.275282085, 2.33419085}, //
+
33111 {0.276300013, 2.34120011}, //
+
33112 {0.277454317, 2.34821987}, //
+
33113 {0.278650612, 2.35494566}, //
+
33114 {0.279888898, 2.36137772}, //
+
33115 {0.281169146, 2.36751604}, //
+
33116 {0.282491356, 2.3733604}, //
+
33117 {0.283855557, 2.37891102}, //
+
33118 {0.28526172, 2.38416791}, //
+
33119 {0.286709875, 2.38913083}, //
+
33120 {0.288199991, 2.39380002}, //
+
33121 {0.288221002, 2.39377904}, //
+
33122 {0.288283944, 2.3937161}, //
+
33123 {0.288724691, 2.39327526}, //
+
33124 {0.288955569, 2.39304447}, //
+
33125 {0.28922841, 2.39277172}, //
+
33126 {0.289543211, 2.39245677}, //
+
33127 {0.289900005, 2.3921001}, //
+
33128 {0.290277779, 2.39168024}, //
+
33129 {0.290655553, 2.39117646}, //
+
33130 {0.291033328, 2.390589}, //
+
33131 {0.291411102, 2.38991737}, //
+
33132 {0.291788876, 2.38916183}, //
+
33133 {0.29216668, 2.38832211}, //
+
33134 {0.292544454, 2.38739872}, //
+
33135 {0.292922229, 2.3863914}, //
+
33136 {0.293300003, 2.38529992}, //
+
33137 {0.293656796, 2.38412476}, //
+
33138 {0.293971598, 2.38286543}, //
+
33139 {0.294244438, 2.38152218}, //
+
33140 {0.294475317, 2.38009501}, //
+
33141 {0.294664204, 2.37858391}, //
+
33142 {0.2948111, 2.37698889}, //
+
33143 {0.294916064, 2.37530994}, //
+
33144 {0.294979006, 2.37354684}, //
+
33145 {0.294999987, 2.37170005}, //
+
33146 {0.294958025, 2.36971736}, //
+
33147 {0.29483211, 2.36752462}, //
+
33148 {0.294622213, 2.36512232}, //
+
33149 {0.294328392, 2.36250997}, //
+
33150 {0.293950617, 2.35968757}, //
+
33151 {0.29348889, 2.3566556}, //
+
33152 {0.292943209, 2.35341358}, //
+
33153 {0.292313576, 2.34996176}, //
+
33154 {0.291599989, 2.34629989}, //
+
33155 {0.290886432, 2.34337211}, //
+
33156 {0.290256798, 2.34061122}, //
+
33157 {0.289711118, 2.33801675}, //
+
33158 {0.28924939, 2.33558893}, //
+
33159 {0.288871616, 2.33332777}, //
+
33160 {0.288577765, 2.33123326}, //
+
33161 {0.288367897, 2.32930565}, //
+
33162 {0.288241982, 2.32754445}, //
+
33163 {0.288199991, 2.32594991}, //
+
33164 {0.288241982, 2.3244493}, //
+
33165 {0.288367897, 2.3229475}, //
+
33166 {0.288577765, 2.32144451}, //
+
33167 {0.288871616, 2.31994009}, //
+
33168 {0.28924939, 2.31843448}, //
+
33169 {0.289711118, 2.31692767}, //
+
33170 {0.290256798, 2.31541967}, //
+
33171 {0.290886432, 2.31391048}, //
+
33172 {0.291599989, 2.3124001}, //
+
33173 {0.292334557, 2.31160235}, //
+
33174 {0.293027163, 2.31072092}, //
+
33175 {0.293677777, 2.30975556}, //
+
33176 {0.29428643, 2.30870628}, //
+
33177 {0.294853091, 2.30757284}, //
+
33178 {0.295377791, 2.30635548}, //
+
33179 {0.295860499, 2.30505443}, //
+
33180 {0.296301246, 2.30366921}, //
+
33181 {0.296700001, 2.30220008}, //
+
33182 {0.297056794, 2.30061603}, //
+
33183 {0.297371596, 2.29886413}, //
+
33184 {0.297644436, 2.29694438}, //
+
33185 {0.297875315, 2.29485679}, //
+
33186 {0.298064202, 2.29260135}, //
+
33187 {0.298211098, 2.29017782}, //
+
33188 {0.298316061, 2.28758645}, //
+
33189 {0.298379004, 2.28482723}, //
+
33190 {0.298400015, 2.28189993}, //
+
33191 {0.29844135, 2.27428269}, //
+
33192 {0.298565418, 2.26649761}, //
+
33193 {0.298772216, 2.25854445}, //
+
33194 {0.299061716, 2.25042343}, //
+
33195 {0.299433947, 2.24213457}, //
+
33196 {0.299888879, 2.23367786}, //
+
33197 {0.300426543, 2.22505307}, //
+
33198 {0.301046908, 2.21626043}, //
+
33199 {0.301750004, 2.20729995}, //
+
33200 {0.302463591, 2.20277786}, //
+
33201 {0.303093225, 2.19825554}, //
+
33202 {0.303638875, 2.19373322}, //
+
33203 {0.304100603, 2.18921113}, //
+
33204 {0.304478407, 2.18468881}, //
+
33205 {0.304772228, 2.18016672}, //
+
33206 {0.304982096, 2.1756444}, //
+
33207 {0.305108011, 2.17112231}, //
+
33208 {0.305150002, 2.16659999}, //
+
33209 {0.305150002, 2.13610005}, //
+
33210 {0.30508703, 2.13362408}, //
+
33211 {0.304898143, 2.13072968}, //
+
33212 {0.304583341, 2.12741661}, //
+
33213 {0.304142594, 2.12368512}, //
+
33214 {0.303575933, 2.11953521}, //
+
33215 {0.302883327, 2.11496663}, //
+
33216 {0.302064806, 2.10997963}, //
+
33217 {0.301120371, 2.10457397}, //
+
33218 {0.30004999, 2.09875011}, //
+
33219 {0.298906177, 2.09270668}, //
+
33220 {0.297719121, 2.08662152}, //
+
33221 {0.296488881, 2.0804944}, //
+
33222 {0.295215428, 2.07432532}, //
+
33223 {0.293898761, 2.06811428}, //
+
33224 {0.292538881, 2.06186104}, //
+
33225 {0.291135788, 2.05556607}, //
+
33226 {0.289689511, 2.04922891}, //
+
33227 {0.288199991, 2.04285002}, //
+
33228 {0.28668952, 2.03651237}, //
+
33229 {0.285180241, 2.03029943}, //
+
33230 {0.283672214, 2.02421117}, //
+
33231 {0.282165438, 2.0182476}, //
+
33232 {0.280659884, 2.01240873}, //
+
33233 {0.279155552, 2.00669456}, //
+
33234 {0.277652472, 2.00110483}, //
+
33235 {0.276150614, 1.99564016}, //
+
33236 {0.274650007, 1.99030006}, //
+
33237 {0.273894459, 1.98753953}, //
+
33238 {0.273138881, 1.98528028}, //
+
33239 {0.272383332, 1.98352218}, //
+
33240 {0.271627784, 1.98226547}, //
+
33241 {0.270872235, 1.98150992}, //
+
33242 {0.270116657, 1.98125553}, //
+
33243 });
+
33244 polys.push_back({
+
33245 {6.19670677, 1.82755005}, //
+
33246 {6.19616127, 1.82755005}, //
+
33247 {6.19502783, 1.82755005}, //
+
33248 {6.19465017, 1.82755005}, //
+
33249 {6.19465017, 1.82755005}, //
+
33250 {6.19465017, 1.82755005}, //
+
33251 {6.19465017, 1.82738209}, //
+
33252 {6.19465017, 1.82717228}, //
+
33253 {6.19465017, 1.82687843}, //
+
33254 {6.19465017, 1.82603884}, //
+
33255 {6.19465017, 1.82486355}, //
+
33256 {6.19465017, 1.82414997}, //
+
33257 {6.19394684, 1.82414997}, //
+
33258 {6.18995667, 1.82414997}, //
+
33259 {6.18790007, 1.82414997}, //
+
33260 {6.18718624, 1.82414997}, //
+
33261 {6.18450022, 1.82414997}, //
+
33262 {6.18445826, 1.8234154}, //
+
33263 {6.18433189, 1.82272279}, //
+
33264 {6.18412209, 1.82207227}, //
+
33265 {6.18382835, 1.82146358}, //
+
33266 {6.1834507, 1.82089686}, //
+
33267 {6.18298912, 1.82037222}, //
+
33268 {6.18244314, 1.81988955}, //
+
33269 {6.18181372, 1.81944871}, //
+
33270 {6.18109989, 1.81904995}, //
+
33271 {6.18034458, 1.81866169}, //
+
33272 {6.17958879, 1.81823027}, //
+
33273 {6.17883348, 1.81775558}, //
+
33274 {6.1780777, 1.81723762}, //
+
33275 {6.17732239, 1.8166765}, //
+
33276 {6.1765666, 1.81607223}, //
+
33277 {6.17581129, 1.81542468}, //
+
33278 {6.1750555, 1.81473398}, //
+
33279 {6.17430019, 1.81400001}, //
+
33280 {6.17351294, 1.81324446}, //
+
33281 {6.1726408, 1.81248891}, //
+
33282 {6.17168331, 1.81173337}, //
+
33283 {6.17064095, 1.81097782}, //
+
33284 {6.16951275, 1.81022227}, //
+
33285 {6.16830015, 1.80946672}, //
+
33286 {6.16700172, 1.80871105}, //
+
33287 {6.16561842, 1.8079555}, //
+
33288 {6.16415024, 1.80719995}, //
+
33289 {6.16341543, 1.80715799}, //
+
33290 {6.16272306, 1.80703211}, //
+
33291 {6.16207218, 1.80682218}, //
+
33292 {6.16146374, 1.80652845}, //
+
33293 {6.16089678, 1.80615067}, //
+
33294 {6.16037226, 1.80568886}, //
+
33295 {6.1598897, 1.80514324}, //
+
33296 {6.15944862, 1.80451357}, //
+
33297 {6.15904999, 1.80379999}, //
+
33298 {6.1587038, 1.8030864}, //
+
33299 {6.15839815, 1.80245674}, //
+
33300 {6.15813351, 1.80191112}, //
+
33301 {6.15790939, 1.80144942}, //
+
33302 {6.15758324, 1.80077779}, //
+
33303 {6.15748167, 1.80056787}, //
+
33304 {6.15742016, 1.80044198}, //
+
33305 {6.15740013, 1.80040002}, //
+
33306 {6.11329985, 1.76314998}, //
+
33307 {6.11334181, 1.76321232}, //
+
33308 {6.11367798, 1.76371109}, //
+
33309 {6.11535692, 1.76620495}, //
+
33310 {6.11598635, 1.76714015}, //
+
33311 {6.11670017, 1.76820004}, //
+
33312 {6.11753893, 1.76935434}, //
+
33313 {6.11854458, 1.77055061}, //
+
33314 {6.11971664, 1.77178884}, //
+
33315 {6.1210556, 1.77306914}, //
+
33316 {6.12256098, 1.77439141}, //
+
33317 {6.12423325, 1.77575552}, //
+
33318 {6.12607241, 1.77716172}, //
+
33319 {6.12807798, 1.77860987}, //
+
33320 {6.13024998, 1.78009999}, //
+
33321 {6.13248539, 1.78235555}, //
+
33322 {6.13467979, 1.78461111}, //
+
33323 {6.13683319, 1.78686666}, //
+
33324 {6.13894653, 1.78912222}, //
+
33325 {6.14101839, 1.79137778}, //
+
33326 {6.14305019, 1.79363334}, //
+
33327 {6.14504051, 1.7958889}, //
+
33328 {6.14699078, 1.79814446}, //
+
33329 {6.14890003, 1.80040002}, //
+
33330 {6.15072536, 1.80258274}, //
+
33331 {6.15242338, 1.8045975}, //
+
33332 {6.15399456, 1.80644441}, //
+
33333 {6.15543842, 1.80812347}, //
+
33334 {6.15675497, 1.80963457}, //
+
33335 {6.15794468, 1.81097782}, //
+
33336 {6.1590066, 1.8121531}, //
+
33337 {6.15994215, 1.81316054}, //
+
33338 {6.16074991, 1.81400001}, //
+
33339 {6.16085434, 1.81558394}, //
+
33340 {6.16116714, 1.81733584}, //
+
33341 {6.1616888, 1.81925559}, //
+
33342 {6.16241932, 1.82134318}, //
+
33343 {6.16335821, 1.82359874}, //
+
33344 {6.16450548, 1.82602227}, //
+
33345 {6.16586161, 1.82861364}, //
+
33346 {6.16742659, 1.83137286}, //
+
33347 {6.16919994, 1.83430004}, //
+
33348 {6.17108822, 1.8372587}, //
+
33349 {6.17297554, 1.84009016}, //
+
33350 {6.17486095, 1.84279442}, //
+
33351 {6.17674589, 1.8453716}, //
+
33352 {6.17862892, 1.84782159}, //
+
33353 {6.180511, 1.85014439}, //
+
33354 {6.18239212, 1.8523401}, //
+
33355 {6.18427181, 1.85440862}, //
+
33356 {6.18615007, 1.85634995}, //
+
33357 {6.18801785, 1.85813391}, //
+
33358 {6.18984365, 1.85970807}, //
+
33359 {6.19162798, 1.86107218}, //
+
33360 {6.19336987, 1.86222649}, //
+
33361 {6.19506979, 1.86317098}, //
+
33362 {6.19672775, 1.86390555}, //
+
33363 {6.19834375, 1.86443019}, //
+
33364 {6.19991779, 1.86474502}, //
+
33365 {6.20144987, 1.86485004}, //
+
33366 {6.20157528, 1.86558461}, //
+
33367 {6.20195103, 1.86627722}, //
+
33368 {6.20257759, 1.86692774}, //
+
33369 {6.20345497, 1.86753643}, //
+
33370 {6.20458269, 1.86810303}, //
+
33371 {6.20596123, 1.86862779}, //
+
33372 {6.2075901, 1.86911047}, //
+
33373 {6.2094698, 1.86955118}, //
+
33374 {6.21159983, 1.86995006}, //
+
33375 {6.21386623, 1.87039018}, //
+
33376 {6.21613073, 1.87095499}, //
+
33377 {6.21839428, 1.8716445}, //
+
33378 {6.22065687, 1.8724587}, //
+
33379 {6.22291803, 1.87339759}, //
+
33380 {6.22517776, 1.87446105}, //
+
33381 {6.22743654, 1.87564933}, //
+
33382 {6.22969389, 1.8769623}, //
+
33383 {6.23194981, 1.87839997}, //
+
33384 {6.23495054, 1.8791759}, //
+
33385 {6.23790789, 1.8799926}, //
+
33386 {6.24082232, 1.88084996}, //
+
33387 {6.24369335, 1.8817482}, //
+
33388 {6.246521, 1.88268709}, //
+
33389 {6.24930573, 1.88366663}, //
+
33390 {6.25204706, 1.88468707}, //
+
33391 {6.25474501, 1.88574815}, //
+
33392 {6.25740004, 1.88685}, //
+
33393 {6.25997114, 1.88792038}, //
+
33394 {6.26241732, 1.88886476}, //
+
33395 {6.26473904, 1.88968337}, //
+
33396 {6.26693583, 1.89037597}, //
+
33397 {6.26900816, 1.89094257}, //
+
33398 {6.27095556, 1.89138329}, //
+
33399 {6.27277851, 1.89169812}, //
+
33400 {6.27447653, 1.89188707}, //
+
33401 {6.27605009, 1.89195001}, //
+
33402 {6.27828455, 1.89272654}, //
+
33403 {6.28047705, 1.89354503}, //
+
33404 {6.28262758, 1.8944056}, //
+
33405 {6.28473663, 1.89530802}, //
+
33406 {6.28680325, 1.89625251}, //
+
33407 {6.2888279, 1.89723885}, //
+
33408 {6.29081059, 1.89826727}, //
+
33409 {6.29275131, 1.89933765}, //
+
33410 {6.29465008, 1.90044999}, //
+
33411 {6.29643393, 1.9016037}, //
+
33412 {6.29800797, 1.90279818}, //
+
33413 {6.2993722, 1.9040333}, //
+
33414 {6.30052662, 1.9053092}, //
+
33415 {6.30147076, 1.90662587}, //
+
33416 {6.30220556, 1.9079833}, //
+
33417 {6.30273008, 1.90938151}, //
+
33418 {6.30304527, 1.91082036}, //
+
33419 {6.30315018, 1.91229999}, //
+
33420 {6.30306625, 1.91307652}, //
+
33421 {6.30281401, 1.91389501}, //
+
33422 {6.30239439, 1.91475558}, //
+
33423 {6.30180693, 1.915658}, //
+
33424 {6.30105114, 1.91660249}, //
+
33425 {6.30012798, 1.91758883}, //
+
33426 {6.2990365, 1.91861725}, //
+
33427 {6.29777718, 1.91968763}, //
+
33428 {6.29635, 1.92079997}, //
+
33429 {6.29476595, 1.92182839}, //
+
33430 {6.29301405, 1.92264688}, //
+
33431 {6.2910943, 1.92325556}, //
+
33432 {6.28900671, 1.92365432}, //
+
33433 {6.28675127, 1.92384326}, //
+
33434 {6.28432798, 1.92382216}, //
+
33435 {6.28173637, 1.92359138}, //
+
33436 {6.27897739, 1.92315066}, //
+
33437 {6.27605009, 1.92250001}, //
+
33438 {6.27295494, 1.92098892}, //
+
33439 {6.26969194, 1.91947782}, //
+
33440 {6.2662611, 1.91796672}, //
+
33441 {6.26266241, 1.91645551}, //
+
33442 {6.25889587, 1.91494441}, //
+
33443 {6.25496101, 1.91343331}, //
+
33444 {6.25085878, 1.91192222}, //
+
33445 {6.24658823, 1.91041112}, //
+
33446 {6.24214983, 1.90890002}, //
+
33447 {6.23771191, 1.90744138}, //
+
33448 {6.23344135, 1.90606546}, //
+
33449 {6.22933912, 1.90477228}, //
+
33450 {6.22540426, 1.90356171}, //
+
33451 {6.22163773, 1.90243399}, //
+
33452 {6.21803904, 1.90138888}, //
+
33453 {6.21460819, 1.90042651}, //
+
33454 {6.2113452, 1.89954686}, //
+
33455 {6.20825005, 1.89874995}, //
+
33456 {6.20675993, 1.89801538}, //
+
33457 {6.20531178, 1.89732289}, //
+
33458 {6.20390558, 1.89667225}, //
+
33459 {6.20254135, 1.89606357}, //
+
33460 {6.20121908, 1.89549696}, //
+
33461 {6.19993877, 1.89497221}, //
+
33462 {6.19870043, 1.89448953}, //
+
33463 {6.19750452, 1.89404881}, //
+
33464 {6.1963501, 1.89365005}, //
+
33465 {6.19526911, 1.89331424}, //
+
33466 {6.19427109, 1.89306235}, //
+
33467 {6.19335556, 1.89289439}, //
+
33468 {6.192523, 1.89281046}, //
+
33469 {6.19177294, 1.89281046}, //
+
33470 {6.19110537, 1.89289439}, //
+
33471 {6.19052076, 1.89306235}, //
+
33472 {6.19001913, 1.89331424}, //
+
33473 {6.18959999, 1.89365005}, //
+
33474 {6.18932676, 1.89409077}, //
+
33475 {6.18926191, 1.89465737}, //
+
33476 {6.18940544, 1.89534998}, //
+
33477 {6.18975782, 1.89616847}, //
+
33478 {6.19031906, 1.89711297}, //
+
33479 {6.19108868, 1.89818335}, //
+
33480 {6.19206715, 1.89937961}, //
+
33481 {6.19325447, 1.90070188}, //
+
33482 {6.19465017, 1.90215003}, //
+
33483 {6.19702101, 1.90371299}, //
+
33484 {6.1996007, 1.90540183}, //
+
33485 {6.20238876, 1.90721667}, //
+
33486 {6.20538568, 1.9091574}, //
+
33487 {6.20859146, 1.91122413}, //
+
33488 {6.21200562, 1.91341662}, //
+
33489 {6.21562862, 1.91573524}, //
+
33490 {6.21946001, 1.91817963}, //
+
33491 {6.22349977, 1.92075002}, //
+
33492 {6.2275815, 1.92328954}, //
+
33493 {6.23153687, 1.92561913}, //
+
33494 {6.23536682, 1.9277389}, //
+
33495 {6.23907042, 1.92964876}, //
+
33496 {6.24264812, 1.9313488}, //
+
33497 {6.24609995, 1.93283892}, //
+
33498 {6.24942589, 1.93411911}, //
+
33499 {6.25262594, 1.93518949}, //
+
33500 {6.25570011, 1.93605006}, //
+
33501 {6.25721073, 1.93680561}, //
+
33502 {6.25871992, 1.93756115}, //
+
33503 {6.26022768, 1.9383167}, //
+
33504 {6.26173449, 1.93907225}, //
+
33505 {6.26324034, 1.9398278}, //
+
33506 {6.26474428, 1.94058335}, //
+
33507 {6.26624775, 1.9413389}, //
+
33508 {6.26774931, 1.94209445}, //
+
33509 {6.26924992, 1.94284999}, //
+
33510 {6.27149487, 1.94430864}, //
+
33511 {6.2736969, 1.94568455}, //
+
33512 {6.27585554, 1.94697773}, //
+
33513 {6.27797079, 1.9481883}, //
+
33514 {6.28004313, 1.94931602}, //
+
33515 {6.28207207, 1.95036113}, //
+
33516 {6.28405809, 1.95132351}, //
+
33517 {6.28600073, 1.95220304}, //
+
33518 {6.28789997, 1.95299995}, //
+
33519 {6.28976727, 1.95379686}, //
+
33520 {6.29159117, 1.95467651}, //
+
33521 {6.29337215, 1.95563889}, //
+
33522 {6.29510975, 1.95668399}, //
+
33523 {6.29680443, 1.95781171}, //
+
33524 {6.29845572, 1.95902216}, //
+
33525 {6.30006361, 1.96031547}, //
+
33526 {6.30162859, 1.96169138}, //
+
33527 {6.30315018, 1.96315002}, //
+
33528 {6.303339, 1.96371663}, //
+
33529 {6.30348587, 1.96415746}, //
+
33530 {6.3048501, 1.96825004}, //
+
33531 {6.30514383, 1.9693414}, //
+
33532 {6.30526972, 1.97034872}, //
+
33533 {6.30522776, 1.97127223}, //
+
33534 {6.30501795, 1.9721117}, //
+
33535 {6.30464029, 1.97286725}, //
+
33536 {6.30409431, 1.97353888}, //
+
33537 {6.30338097, 1.97412658}, //
+
33538 {6.30249929, 1.97463024}, //
+
33539 {6.30144978, 1.97504997}, //
+
33540 {6.30026436, 1.9753648}, //
+
33541 {6.29895115, 1.97555375}, //
+
33542 {6.2975111, 1.97561669}, //
+
33543 {6.29594374, 1.97555375}, //
+
33544 {6.29424953, 1.9753648}, //
+
33545 {6.29242754, 1.97504997}, //
+
33546 {6.29047918, 1.97460926}, //
+
33547 {6.28840303, 1.97404253}, //
+
33548 {6.28620005, 1.97335005}, //
+
33549 {6.28327227, 1.9726994}, //
+
33550 {6.2805109, 1.97225869}, //
+
33551 {6.27791643, 1.97202778}, //
+
33552 {6.27548885, 1.9720068}, //
+
33553 {6.27322769, 1.97219563}, //
+
33554 {6.27113342, 1.9725945}, //
+
33555 {6.26920557, 1.97320306}, //
+
33556 {6.26744461, 1.97402155}, //
+
33557 {6.26585007, 1.97504997}, //
+
33558 {6.26455879, 1.97620368}, //
+
33559 {6.26368475, 1.97739816}, //
+
33560 {6.26322794, 1.97863328}, //
+
33561 {6.26318836, 1.9799093}, //
+
33562 {6.26356602, 1.98122597}, //
+
33563 {6.2643609, 1.98258328}, //
+
33564 {6.2655735, 1.98398149}, //
+
33565 {6.26720285, 1.98542035}, //
+
33566 {6.26924992, 1.98689997}, //
+
33567 {6.27073956, 1.98767591}, //
+
33568 {6.2721858, 1.98849261}, //
+
33569 {6.27358866, 1.98934996}, //
+
33570 {6.2749486, 1.9902482}, //
+
33571 {6.27626562, 1.9911871}, //
+
33572 {6.27753878, 1.99216664}, //
+
33573 {6.27876902, 1.99318707}, //
+
33574 {6.27995634, 1.99424815}, //
+
33575 {6.2810998, 1.99535}, //
+
33576 {6.28219128, 1.99650431}, //
+
33577 {6.28319883, 1.99770057}, //
+
33578 {6.28412199, 1.99893892}, //
+
33579 {6.2849617, 2.00021911}, //
+
33580 {6.28571749, 2.00154138}, //
+
33581 {6.28638887, 2.00290561}, //
+
33582 {6.28697634, 2.0043118}, //
+
33583 {6.28748035, 2.00575995}, //
+
33584 {6.28789997, 2.00725007}, //
+
33585 {6.28817368, 2.00863528}, //
+
33586 {6.28823805, 2.00976849}, //
+
33587 {6.28809452, 2.01064992}, //
+
33588 {6.28774214, 2.01127958}, //
+
33589 {6.2871809, 2.01165748}, //
+
33590 {6.28641129, 2.01178336}, //
+
33591 {6.28543282, 2.01165748}, //
+
33592 {6.28424549, 2.01127958}, //
+
33593 {6.28284979, 2.01064992}, //
+
33594 {6.28129673, 2.00911784}, //
+
33595 {6.27965975, 2.0075438}, //
+
33596 {6.27793884, 2.0059278}, //
+
33597 {6.27613401, 2.00426984}, //
+
33598 {6.27424526, 2.00256968}, //
+
33599 {6.27227211, 2.00082779}, //
+
33600 {6.27021551, 1.99904382}, //
+
33601 {6.26807451, 1.99721789}, //
+
33602 {6.26585007, 1.99535}, //
+
33603 {6.26359463, 1.99345124}, //
+
33604 {6.26133871, 1.99151051}, //
+
33605 {6.25908327, 1.98952782}, //
+
33606 {6.25682783, 1.98750305}, //
+
33607 {6.25457239, 1.98543644}, //
+
33608 {6.25231647, 1.98332775}, //
+
33609 {6.25006104, 1.98117721}, //
+
33610 {6.2478056, 1.97898459}, //
+
33611 {6.24555016, 1.97675002}, //
+
33612 {6.24035597, 1.97239506}, //
+
33613 {6.2353301, 1.96837473}, //
+
33614 {6.23047209, 1.9646889}, //
+
33615 {6.22578192, 1.96133769}, //
+
33616 {6.22126007, 1.95832098}, //
+
33617 {6.21690559, 1.95563889}, //
+
33618 {6.21271896, 1.95329142}, //
+
33619 {6.20870066, 1.95127845}, //
+
33620 {6.2048502, 1.94959998}, //
+
33621 {6.2013135, 1.94755304}, //
+
33622 {6.19823742, 1.94592345}, //
+
33623 {6.19562244, 1.94471109}, //
+
33624 {6.19346714, 1.94391608}, //
+
33625 {6.19177294, 1.94353831}, //
+
33626 {6.19053888, 1.94357777}, //
+
33627 {6.18976545, 1.94403458}, //
+
33628 {6.18945265, 1.94490862}, //
+
33629 {6.18959999, 1.94620001}, //
+
33630 {6.190166, 1.94779444}, //
+
33631 {6.1911087, 1.94955552}, //
+
33632 {6.19242764, 1.95148337}, //
+
33633 {6.19412327, 1.95357776}, //
+
33634 {6.1961956, 1.95583892}, //
+
33635 {6.19864464, 1.95826662}, //
+
33636 {6.2014699, 1.96086109}, //
+
33637 {6.20467138, 1.96362221}, //
+
33638 {6.20825005, 1.96654999}, //
+
33639 {6.21052647, 1.96808147}, //
+
33640 {6.21284485, 1.96965373}, //
+
33641 {6.21520567, 1.97126663}, //
+
33642 {6.21760798, 1.97292042}, //
+
33643 {6.22005224, 1.97461486}, //
+
33644 {6.22253895, 1.97634995}, //
+
33645 {6.22506714, 1.97812593}, //
+
33646 {6.22763777, 1.97994256}, //
+
33647 {6.23024988, 1.98179996}, //
+
33648 {6.23285198, 1.9837302}, //
+
33649 {6.23536873, 1.98574317}, //
+
33650 {6.23780012, 1.98783886}, //
+
33651 {6.24014616, 1.99001729}, //
+
33652 {6.24240732, 1.99227834}, //
+
33653 {6.24458313, 1.99462223}, //
+
33654 {6.24667406, 1.99704874}, //
+
33655 {6.24867964, 1.99955797}, //
+
33656 {6.25059986, 2.00215006}, //
+
33657 {6.25244617, 2.00473094}, //
+
33658 {6.25420761, 2.00718451}, //
+
33659 {6.25588322, 2.00951099}, //
+
33660 {6.25747395, 2.01171041}, //
+
33661 {6.2589798, 2.01378274}, //
+
33662 {6.26039982, 2.01572776}, //
+
33663 {6.26173496, 2.0175457}, //
+
33664 {6.26298523, 2.01923633}, //
+
33665 {6.26415014, 2.02080011}, //
+
33666 {6.26522017, 2.02222705}, //
+
33667 {6.26899815, 2.02726412}, //
+
33668 {6.26918697, 2.02751613}, //
+
33669 {6.26924992, 2.02760005}, //
+
33670 {6.2692709, 2.02764201}, //
+
33671 {6.26933384, 2.0277679}, //
+
33672 {6.26958561, 2.02827168}, //
+
33673 {6.26977491, 2.02864933}, //
+
33674 {6.27094984, 2.0309999}, //
+
33675 {6.27130699, 2.03177595}, //
+
33676 {6.2716217, 2.03259254}, //
+
33677 {6.27189445, 2.03344989}, //
+
33678 {6.27212524, 2.03434825}, //
+
33679 {6.27231407, 2.03528714}, //
+
33680 {6.27246094, 2.03626657}, //
+
33681 {6.27256584, 2.037287}, //
+
33682 {6.27262878, 2.0383482}, //
+
33683 {6.27264977, 2.03944993}, //
+
33684 {6.27264977, 2.04056239}, //
+
33685 {6.27264977, 2.04266119}, //
+
33686 {6.27264977, 2.04364753}, //
+
33687 {6.27264977, 2.04795003}, //
+
33688 {6.27262878, 2.04866362}, //
+
33689 {6.27256584, 2.04929328}, //
+
33690 {6.27246094, 2.04983878}, //
+
33691 {6.27231407, 2.0503006}, //
+
33692 {6.27212524, 2.05067849}, //
+
33693 {6.27189445, 2.05097222}, //
+
33694 {6.2716217, 2.05118203}, //
+
33695 {6.27130699, 2.05130792}, //
+
33696 {6.27094984, 2.05135012}, //
+
33697 {6.27055168, 2.05130792}, //
+
33698 {6.27011299, 2.05118203}, //
+
33699 {6.26963329, 2.05097222}, //
+
33700 {6.26911306, 2.05067849}, //
+
33701 {6.26855183, 2.0503006}, //
+
33702 {6.26795006, 2.04983878}, //
+
33703 {6.26730728, 2.04929328}, //
+
33704 {6.26662397, 2.04866362}, //
+
33705 {6.26590014, 2.04795003}, //
+
33706 {6.26506042, 2.04715252}, //
+
33707 {6.26405287, 2.04627109}, //
+
33708 {6.26287794, 2.04530549}, //
+
33709 {6.26153469, 2.04425621}, //
+
33710 {6.26002359, 2.04312277}, //
+
33711 {6.25834465, 2.04190564}, //
+
33712 {6.25649738, 2.04060435}, //
+
33713 {6.25448275, 2.03921914}, //
+
33714 {6.25229979, 2.03775001}, //
+
33715 {6.25000191, 2.0362494}, //
+
33716 {6.24761868, 2.0347476}, //
+
33717 {6.24515009, 2.03324437}, //
+
33718 {6.24259615, 2.03174019}, //
+
33719 {6.23995733, 2.03023458}, //
+
33720 {6.23723316, 2.02872777}, //
+
33721 {6.23442411, 2.02721977}, //
+
33722 {6.23152971, 2.02571058}, //
+
33723 {6.22854996, 2.02419996}, //
+
33724 {6.22555971, 2.02268887}, //
+
33725 {6.2226119, 2.02117777}, //
+
33726 {6.21970558, 2.01966667}, //
+
33727 {6.21684122, 2.01815557}, //
+
33728 {6.2140193, 2.01664448}, //
+
33729 {6.21123886, 2.01513338}, //
+
33730 {6.20850039, 2.01362228}, //
+
33731 {6.20580435, 2.01211119}, //
+
33732 {6.2031498, 2.01060009}, //
+
33733 {6.20062113, 2.00916243}, //
+
33734 {6.19830084, 2.00784945}, //
+
33735 {6.19618893, 2.00666118}, //
+
33736 {6.19428587, 2.00559759}, //
+
33737 {6.19259119, 2.0046587}, //
+
33738 {6.19110537, 2.0038445}, //
+
33739 {6.1898284, 2.00315499}, //
+
33740 {6.1887598, 2.00259018}, //
+
33741 {6.18790007, 2.00215006}, //
+
33742 {6.1872282, 2.00183511}, //
+
33743 {6.18672466, 2.00164628}, //
+
33744 {6.18638897, 2.00158334}, //
+
33745 {6.18622112, 2.00164628}, //
+
33746 {6.18622112, 2.00183511}, //
+
33747 {6.18638897, 2.00215006}, //
+
33748 {6.18672466, 2.00259066}, //
+
33749 {6.1872282, 2.00315738}, //
+
33750 {6.18790007, 2.00384998}, //
+
33751 {6.19021845, 2.00611615}, //
+
33752 {6.19266319, 2.00838089}, //
+
33753 {6.19523335, 2.01064444}, //
+
33754 {6.19792986, 2.01290679}, //
+
33755 {6.20075178, 2.01516795}, //
+
33756 {6.20370007, 2.01742768}, //
+
33757 {6.20677423, 2.01968646}, //
+
33758 {6.20997429, 2.02194381}, //
+
33759 {6.21330023, 2.02419996}, //
+
33760 {6.21663666, 2.02646613}, //
+
33761 {6.21984577, 2.02873087}, //
+
33762 {6.22292757, 2.03099442}, //
+
33763 {6.22588253, 2.03325677}, //
+
33764 {6.22871065, 2.03551793}, //
+
33765 {6.23141098, 2.03777766}, //
+
33766 {6.23398447, 2.04003644}, //
+
33767 {6.23643064, 2.04229379}, //
+
33768 {6.23874998, 2.04454994}, //
+
33769 {6.24092245, 2.04676414}, //
+
33770 {6.24292755, 2.0488956}, //
+
33771 {6.24476671, 2.05094433}, //
+
33772 {6.24643898, 2.05291057}, //
+
33773 {6.24794436, 2.05479383}, //
+
33774 {6.24928331, 2.05659437}, //
+
33775 {6.25045538, 2.05831242}, //
+
33776 {6.25146103, 2.05994749}, //
+
33777 {6.25229979, 2.06150007}, //
+
33778 {6.25232077, 2.06298947}, //
+
33779 {6.25238419, 2.06443572}, //
+
33780 {6.25248909, 2.06583881}, //
+
33781 {6.25263596, 2.06719875}, //
+
33782 {6.25282478, 2.06851554}, //
+
33783 {6.25305557, 2.06978893}, //
+
33784 {6.25332832, 2.07101917}, //
+
33785 {6.25364304, 2.07220626}, //
+
33786 {6.25400019, 2.07334995}, //
+
33787 {6.25439882, 2.07450438}, //
+
33788 {6.25483942, 2.07570052}, //
+
33789 {6.25532246, 2.07693887}, //
+
33790 {6.25584698, 2.07821918}, //
+
33791 {6.25641346, 2.07954144}, //
+
33792 {6.25702238, 2.08090544}, //
+
33793 {6.25767279, 2.08231163}, //
+
33794 {6.25836563, 2.08375978}, //
+
33795 {6.25909996, 2.0852499}, //
+
33796 {6.25981379, 2.08602595}, //
+
33797 {6.26044321, 2.08684254}, //
+
33798 {6.26098871, 2.08769989}, //
+
33799 {6.26145077, 2.08859825}, //
+
33800 {6.26182842, 2.08953714}, //
+
33801 {6.26212215, 2.09051657}, //
+
33802 {6.26233196, 2.091537}, //
+
33803 {6.26245785, 2.0925982}, //
+
33804 {6.26249981, 2.09369993}, //
+
33805 {6.26241589, 2.09464502}, //
+
33806 {6.26216412, 2.09521365}, //
+
33807 {6.2617445, 2.09540558}, //
+
33808 {6.26115656, 2.09522104}, //
+
33809 {6.26040125, 2.09465981}, //
+
33810 {6.25947762, 2.09372211}, //
+
33811 {6.25838661, 2.09240794}, //
+
33812 {6.25712729, 2.09071732}, //
+
33813 {6.25570011, 2.08864999}, //
+
33814 {6.25406361, 2.08709693}, //
+
33815 {6.25217676, 2.08545995}, //
+
33816 {6.2500391, 2.0837388}, //
+
33817 {6.24765062, 2.08193398}, //
+
33818 {6.24501181, 2.08004498}, //
+
33819 {6.24212217, 2.07807231}, //
+
33820 {6.2389822, 2.07601547}, //
+
33821 {6.23559141, 2.07387471}, //
+
33822 {6.23194981, 2.07165003}, //
+
33823 {6.22889709, 2.06865978}, //
+
33824 {6.22575998, 2.06571174}, //
+
33825 {6.22253895, 2.06280565}, //
+
33826 {6.21923399, 2.05994129}, //
+
33827 {6.21584511, 2.05711913}, //
+
33828 {6.2123723, 2.05433893}, //
+
33829 {6.20881557, 2.05160069}, //
+
33830 {6.20517492, 2.04890442}, //
+
33831 {6.20144987, 2.0462501}, //
+
33832 {6.19776726, 2.043679}, //
+
33833 {6.19425249, 2.04123282}, //
+
33834 {6.19090557, 2.0389111}, //
+
33835 {6.1877265, 2.03671432}, //
+
33836 {6.18471527, 2.03464198}, //
+
33837 {6.18187237, 2.03269434}, //
+
33838 {6.17919683, 2.03087163}, //
+
33839 {6.17668962, 2.02917337}, //
+
33840 {6.17434978, 2.02760005}, //
+
33841 {6.17285967, 2.02543831}, //
+
33842 {6.17141151, 2.02348638}, //
+
33843 {6.17000532, 2.02174449}, //
+
33844 {6.16864157, 2.02021241}, //
+
33845 {6.1673193, 2.01889014}, //
+
33846 {6.16603899, 2.01777768}, //
+
33847 {6.16480064, 2.01687527}, //
+
33848 {6.16360426, 2.01618266}, //
+
33849 {6.16244984, 2.0157001}, //
+
33850 {6.16143131, 2.01539516}, //
+
33851 {6.16062021, 2.01521349}, //
+
33852 {6.16001654, 2.01515555}, //
+
33853 {6.15962029, 2.01522088}, //
+
33854 {6.15943146, 2.01540995}, //
+
33855 {6.15945005, 2.01572227}, //
+
33856 {6.15967607, 2.0161581}, //
+
33857 {6.16010904, 2.0167172}, //
+
33858 {6.16074991, 2.01740003}, //
+
33859 {6.16163063, 2.0182395}, //
+
33860 {6.16276217, 2.01924682}, //
+
33861 {6.16414452, 2.02042222}, //
+
33862 {6.16577721, 2.02176547}, //
+
33863 {6.16766071, 2.02327657}, //
+
33864 {6.16979456, 2.02495551}, //
+
33865 {6.17217922, 2.02680254}, //
+
33866 {6.17481422, 2.02881718}, //
+
33867 {6.17770004, 2.0309999}, //
+
33868 {6.1821804, 2.03476667}, //
+
33869 {6.18657637, 2.03853345}, //
+
33870 {6.19088888, 2.04229999}, //
+
33871 {6.19511747, 2.04606676}, //
+
33872 {6.19926167, 2.0498333}, //
+
33873 {6.20332241, 2.05360007}, //
+
33874 {6.20729876, 2.05736661}, //
+
33875 {6.21119118, 2.06113338}, //
+
33876 {6.21500015, 2.06489992}, //
+
33877 {6.21864128, 2.06854129}, //
+
33878 {6.22203207, 2.07193208}, //
+
33879 {6.22517204, 2.07507229}, //
+
33880 {6.23522663, 2.08512664}, //
+
33881 {6.23711348, 2.08701348}, //
+
33882 {6.23874998, 2.08864999}, //
+
33883 {6.24019766, 2.09084249}, //
+
33884 {6.24151802, 2.09290934}, //
+
33885 {6.24271107, 2.09485006}, //
+
33886 {6.24377728, 2.09666491}, //
+
33887 {6.24471617, 2.09835362}, //
+
33888 {6.24552774, 2.0999167}, //
+
33889 {6.24621248, 2.10135365}, //
+
33890 {6.24676991, 2.10266471}, //
+
33891 {6.24720001, 2.10384989}, //
+
33892 {6.24753571, 2.10498333}, //
+
33893 {6.24778748, 2.10611677}, //
+
33894 {6.24795532, 2.10724998}, //
+
33895 {6.24803972, 2.10838342}, //
+
33896 {6.24803972, 2.10951662}, //
+
33897 {6.24795532, 2.11065006}, //
+
33898 {6.24778748, 2.11178327}, //
+
33899 {6.24753571, 2.11291671}, //
+
33900 {6.24720001, 2.11404991}, //
+
33901 {6.24676991, 2.11512041}, //
+
33902 {6.24621248, 2.11606479}, //
+
33903 {6.24552774, 2.11688328}, //
+
33904 {6.24471617, 2.11757588}, //
+
33905 {6.24377728, 2.1181426}, //
+
33906 {6.24271107, 2.11858344}, //
+
33907 {6.24151802, 2.11889815}, //
+
33908 {6.24019766, 2.11908698}, //
+
33909 {6.23874998, 2.11914992}, //
+
33910 {6.23723888, 2.11914992}, //
+
33911 {6.23421669, 2.11914992}, //
+
33912 {6.23270559, 2.11914992}, //
+
33913 {6.2311945, 2.11914992}, //
+
33914 {6.2296834, 2.11914992}, //
+
33915 {6.22515011, 2.11914992}, //
+
33916 {6.22367048, 2.11919141}, //
+
33917 {6.22223139, 2.11931539}, //
+
33918 {6.2208333, 2.11952233}, //
+
33919 {6.21947575, 2.11981177}, //
+
33920 {6.2181592, 2.12018394}, //
+
33921 {6.21688318, 2.12063885}, //
+
33922 {6.21564817, 2.12117648}, //
+
33923 {6.2144537, 2.12179685}, //
+
33924 {6.21330023, 2.12249994}, //
+
33925 {6.21240759, 2.12329745}, //
+
33926 {6.21197414, 2.12417912}, //
+
33927 {6.21199989, 2.12514448}, //
+
33928 {6.21248531, 2.12619376}, //
+
33929 {6.21342945, 2.1273272}, //
+
33930 {6.21483326, 2.12854433}, //
+
33931 {6.21669626, 2.12984562}, //
+
33932 {6.21901846, 2.13123083}, //
+
33933 {6.22179985, 2.13269997}, //
+
33934 {6.22401428, 2.13412714}, //
+
33935 {6.22614574, 2.13538647}, //
+
33936 {6.22819424, 2.13647771}, //
+
33937 {6.23016071, 2.13740134}, //
+
33938 {6.23204374, 2.13815689}, //
+
33939 {6.23384428, 2.13874435}, //
+
33940 {6.23556232, 2.13916421}, //
+
33941 {6.2371974, 2.13941598}, //
+
33942 {6.23874998, 2.1394999}, //
+
33943 {6.23948479, 2.13952088}, //
+
33944 {6.24017715, 2.13958406}, //
+
33945 {6.24082756, 2.13968897}, //
+
33946 {6.24143648, 2.13983583}, //
+
33947 {6.24200296, 2.14002466}, //
+
33948 {6.24252796, 2.14025545}, //
+
33949 {6.24301052, 2.14052844}, //
+
33950 {6.24345112, 2.14084315}, //
+
33951 {6.24385023, 2.14120007}, //
+
33952 {6.24412298, 2.14159822}, //
+
33953 {6.24418592, 2.14203715}, //
+
33954 {6.24403906, 2.14251661}, //
+
33955 {6.24368191, 2.14303708}, //
+
33956 {6.24311543, 2.14359808}, //
+
33957 {6.24233866, 2.14420009}, //
+
33958 {6.24135256, 2.14484262}, //
+
33959 {6.24015617, 2.14552593}, //
+
33960 {6.23874998, 2.14625001}, //
+
33961 {6.23803663, 2.14698458}, //
+
33962 {6.23740673, 2.14767718}, //
+
33963 {6.23686123, 2.14832783}, //
+
33964 {6.23639917, 2.14893651}, //
+
33965 {6.23602152, 2.14950299}, //
+
33966 {6.23572779, 2.15002775}, //
+
33967 {6.23551798, 2.15051055}, //
+
33968 {6.23539209, 2.15095115}, //
+
33969 {6.23535013, 2.15135002}, //
+
33970 {6.23535013, 2.16149998}, //
+
33971 {6.23530817, 2.16185689}, //
+
33972 {6.23518229, 2.1621716}, //
+
33973 {6.234972, 2.16244435}, //
+
33974 {6.23467827, 2.16267538}, //
+
33975 {6.23430061, 2.16286421}, //
+
33976 {6.23383904, 2.16301107}, //
+
33977 {6.23329306, 2.16311598}, //
+
33978 {6.23266363, 2.16317892}, //
+
33979 {6.23194981, 2.1631999}, //
+
33980 {6.23116302, 2.16315866}, //
+
33981 {6.23029089, 2.16303468}, //
+
33982 {6.2293334, 2.16282773}, //
+
33983 {6.22829056, 2.16253829}, //
+
33984 {6.22716284, 2.16216612}, //
+
33985 {6.22594976, 2.16171122}, //
+
33986 {6.22465181, 2.16117334}, //
+
33987 {6.22326851, 2.16055298}, //
+
33988 {6.22179985, 2.15984988}, //
+
33989 {6.21885109, 2.15821362}, //
+
33990 {6.21602726, 2.15632653}, //
+
33991 {6.21332788, 2.15418887}, //
+
33992 {6.21075296, 2.15180063}, //
+
33993 {6.20830297, 2.14916182}, //
+
33994 {6.20597792, 2.14627218}, //
+
33995 {6.20377731, 2.14313221}, //
+
33996 {6.20170116, 2.13974142}, //
+
33997 {6.19974995, 2.13610005}, //
+
33998 {6.19789267, 2.13229132}, //
+
33999 {6.19607592, 2.12839866}, //
+
34000 {6.19430017, 2.12442231}, //
+
34001 {6.19256496, 2.1203618}, //
+
34002 {6.19087029, 2.11621737}, //
+
34003 {6.18921661, 2.11198878}, //
+
34004 {6.18760347, 2.10767651}, //
+
34005 {6.18603134, 2.10328031}, //
+
34006 {6.18450022, 2.09879994}, //
+
34007 {6.18370295, 2.09515858}, //
+
34008 {6.18282366, 2.09176779}, //
+
34009 {6.18186092, 2.08862782}, //
+
34010 {6.18081617, 2.08573818}, //
+
34011 {6.17968845, 2.08309937}, //
+
34012 {6.17847776, 2.08071113}, //
+
34013 {6.17718458, 2.07857347}, //
+
34014 {6.17580843, 2.07668638}, //
+
34015 {6.17434978, 2.07505012}, //
+
34016 {6.17279768, 2.0721643}, //
+
34017 {6.17116213, 2.06952906}, //
+
34018 {6.16944456, 2.06714439}, //
+
34019 {6.16764402, 2.06501055}, //
+
34020 {6.16576052, 2.06312728}, //
+
34021 {6.16379452, 2.06149435}, //
+
34022 {6.16174555, 2.06011224}, //
+
34023 {6.15961409, 2.05898094}, //
+
34024 {6.15740013, 2.05809999}, //
+
34025 {6.15425301, 2.05639005}, //
+
34026 {6.15085697, 2.05426049}, //
+
34027 {6.14721107, 2.05171108}, //
+
34028 {6.14331627, 2.04874206}, //
+
34029 {6.1391716, 2.04535317}, //
+
34030 {6.13477755, 2.04154444}, //
+
34031 {6.13013458, 2.03731608}, //
+
34032 {6.12524176, 2.03266788}, //
+
34033 {6.12010002, 2.02760005}, //
+
34034 {6.11795902, 2.02232289}, //
+
34035 {6.11607027, 2.01704693}, //
+
34036 {6.11443329, 2.01177216}, //
+
34037 {6.11304808, 2.00649881}, //
+
34038 {6.11191463, 2.00122643}, //
+
34039 {6.11103344, 1.99595559}, //
+
34040 {6.11040354, 1.99068582}, //
+
34041 {6.11002588, 1.98541725}, //
+
34042 {6.1099, 1.98014998}, //
+
34043 {6.10983706, 1.97712839}, //
+
34044 {6.10964823, 1.97410798}, //
+
34045 {6.10933352, 1.97108889}, //
+
34046 {6.10889244, 1.96807098}, //
+
34047 {6.10832596, 1.96505427}, //
+
34048 {6.10763311, 1.96203887}, //
+
34049 {6.10681486, 1.95902467}, //
+
34050 {6.10587025, 1.95601177}, //
+
34051 {6.10480022, 1.95299995}, //
+
34052 {6.10348892, 1.95003021}, //
+
34053 {6.10179996, 1.9471432}, //
+
34054 {6.09973335, 1.94433892}, //
+
34055 {6.09728909, 1.94161725}, //
+
34056 {6.09446669, 1.93897843}, //
+
34057 {6.09126663, 1.93642223}, //
+
34058 {6.08768892, 1.93394876}, //
+
34059 {6.08373356, 1.93155801}, //
+
34060 {6.07940006, 1.92925}, //
+
34061 {6.0705018, 1.92489505}, //
+
34062 {6.06189632, 1.92087471}, //
+
34063 {6.05358315, 1.91718888}, //
+
34064 {6.04556274, 1.91383767}, //
+
34065 {6.03783512, 1.91082096}, //
+
34066 {6.0303998, 1.90813887}, //
+
34067 {6.02325726, 1.9057914}, //
+
34068 {6.01640749, 1.90377843}, //
+
34069 {6.00985003, 1.90209997}, //
+
34070 {6.00380564, 1.90072536}, //
+
34071 {5.99847221, 1.89960122}, //
+
34072 {5.99385023, 1.89872777}, //
+
34073 {5.98993874, 1.89810491}, //
+
34074 {5.98673868, 1.89773273}, //
+
34075 {5.98425007, 1.89761114}, //
+
34076 {5.98247242, 1.89774013}, //
+
34077 {5.98140574, 1.89811981}, //
+
34078 {5.98105001, 1.89874995}, //
+
34079 {5.97897243, 1.89874995}, //
+
34080 {5.97727203, 1.89874995}, //
+
34081 {5.97678947, 1.89874995}, //
+
34082 {5.97634888, 1.89874995}, //
+
34083 {5.97513008, 1.89874995}, //
+
34084 {5.97465563, 1.89874995}, //
+
34085 {5.97413778, 1.89874995}, //
+
34086 {5.97357655, 1.89874995}, //
+
34087 {5.97297239, 1.89874995}, //
+
34088 {5.97232485, 1.89874995}, //
+
34089 {5.97081614, 1.89874995}, //
+
34090 {5.97071123, 1.89874995}, //
+
34091 {5.97056437, 1.89874995}, //
+
34092 {5.97037554, 1.89874995}, //
+
34093 {5.97014427, 1.89874995}, //
+
34094 {5.96987152, 1.89874995}, //
+
34095 {5.96693325, 1.89874995}, //
+
34096 {5.9665556, 1.89874995}, //
+
34097 {5.96579981, 1.89874995}, //
+
34098 {5.9654851, 1.89877093}, //
+
34099 {5.96529627, 1.89883399}, //
+
34100 {5.96523333, 1.89893889}, //
+
34101 {5.96529627, 1.89908576}, //
+
34102 {5.9654851, 1.89927471}, //
+
34103 {5.96579981, 1.8995055}, //
+
34104 {5.96624088, 1.89977837}, //
+
34105 {5.96680737, 1.9000932}, //
+
34106 {5.96750021, 1.90044999}, //
+
34107 {5.96827602, 1.90086913}, //
+
34108 {5.96909237, 1.901371}, //
+
34109 {5.9699502, 1.9019556}, //
+
34110 {5.97084808, 1.90262282}, //
+
34111 {5.97178698, 1.90337288}, //
+
34112 {5.97276688, 1.90420556}, //
+
34113 {5.97378683, 1.90512097}, //
+
34114 {5.97484827, 1.90611911}, //
+
34115 {5.97594976, 1.90719998}, //
+
34116 {5.97714615, 1.90843832}, //
+
34117 {5.97846842, 1.90988636}, //
+
34118 {5.97991657, 1.91154444}, //
+
34119 {5.98149061, 1.91341233}, //
+
34120 {5.98319054, 1.91549015}, //
+
34121 {5.98501682, 1.91777778}, //
+
34122 {5.98696852, 1.92027533}, //
+
34123 {5.9890461, 1.92298269}, //
+
34124 {5.99125004, 1.92589998}, //
+
34125 {6.00280285, 1.93484998}, //
+
34126 {6.01335144, 1.94363332}, //
+
34127 {6.02289438, 1.95225}, //
+
34128 {6.03143263, 1.96070004}, //
+
34129 {6.03896618, 1.96898329}, //
+
34130 {6.04549456, 1.97710001}, //
+
34131 {6.05101776, 1.98504996}, //
+
34132 {6.05553627, 1.99283338}, //
+
34133 {6.05905008, 2.0004499}, //
+
34134 {6.0605607, 2.00413322}, //
+
34135 {6.06206989, 2.0076499}, //
+
34136 {6.06357765, 2.01099992}, //
+
34137 {6.06508446, 2.01418328}, //
+
34138 {6.06659031, 2.01719999}, //
+
34139 {6.06809425, 2.02005005}, //
+
34140 {6.06959772, 2.02273345}, //
+
34141 {6.07109928, 2.02524996}, //
+
34142 {6.07259989, 2.02760005}, //
+
34143 {6.07552767, 2.03124142}, //
+
34144 {6.07828903, 2.03463221}, //
+
34145 {6.0808835, 2.03777218}, //
+
34146 {6.08331108, 2.04066181}, //
+
34147 {6.08557224, 2.04330063}, //
+
34148 {6.08766651, 2.04568887}, //
+
34149 {6.08959436, 2.04782653}, //
+
34150 {6.09135532, 2.04971361}, //
+
34151 {6.09294987, 2.05135012}, //
+
34152 {6.09368467, 2.05207396}, //
+
34153 {6.09437704, 2.0527575}, //
+
34154 {6.09502792, 2.05340004}, //
+
34155 {6.09563637, 2.05400181}, //
+
34156 {6.09620285, 2.05456305}, //
+
34157 {6.09672785, 2.05508327}, //
+
34158 {6.09721041, 2.05556297}, //
+
34159 {6.097651, 2.0560019}, //
+
34160 {6.09805012, 2.05640006}, //
+
34161 {6.09844875, 2.0567987}, //
+
34162 {6.09888935, 2.05723953}, //
+
34163 {6.09937239, 2.05772233}, //
+
34164 {6.09989691, 2.05824685}, //
+
34165 {6.10046339, 2.05881357}, //
+
34166 {6.10107231, 2.05942225}, //
+
34167 {6.10172272, 2.0600729}, //
+
34168 {6.10241556, 2.0607655}, //
+
34169 {6.10314989, 2.06150007}, //
+
34170 {6.10393715, 2.06305242}, //
+
34171 {6.10480928, 2.06468773}, //
+
34172 {6.10576677, 2.06640553}, //
+
34173 {6.10680914, 2.06820607}, //
+
34174 {6.10793686, 2.07008958}, //
+
34175 {6.10914993, 2.07205558}, //
+
34176 {6.11044836, 2.07410431}, //
+
34177 {6.11183167, 2.07623577}, //
+
34178 {6.11329985, 2.07844996}, //
+
34179 {6.11555624, 2.08080006}, //
+
34180 {6.11781359, 2.08331656}, //
+
34181 {6.12007236, 2.08599997}, //
+
34182 {6.1223321, 2.08885002}, //
+
34183 {6.12459326, 2.09186673}, //
+
34184 {6.12685537, 2.0950501}, //
+
34185 {6.12911892, 2.09840012}, //
+
34186 {6.1313839, 2.10191655}, //
+
34187 {6.13364983, 2.10560012}, //
+
34188 {6.14367962, 2.11562967}, //
+
34189 {6.14650202, 2.11845183}, //
+
34190 {6.14944983, 2.12140012}, //
+
34191 {6.15252399, 2.12447405}, //
+
34192 {6.15572405, 2.1276741}, //
+
34193 {6.15904999, 2.13100004}, //
+
34194 {6.16238642, 2.13432646}, //
+
34195 {6.16559553, 2.13752842}, //
+
34196 {6.16867781, 2.14060545}, //
+
34197 {6.17163277, 2.14355803}, //
+
34198 {6.17446041, 2.14638591}, //
+
34199 {6.17716122, 2.14908886}, //
+
34200 {6.17973471, 2.15166736}, //
+
34201 {6.18218088, 2.15412092}, //
+
34202 {6.18450022, 2.15645003}, //
+
34203 {6.1859684, 2.15716362}, //
+
34204 {6.1873517, 2.15779328}, //
+
34205 {6.18865013, 2.15833879}, //
+
34206 {6.18986273, 2.1588006}, //
+
34207 {6.19099092, 2.1591785}, //
+
34208 {6.19203329, 2.15947223}, //
+
34209 {6.19299078, 2.15968204}, //
+
34210 {6.19386292, 2.15980792}, //
+
34211 {6.19465017, 2.15984988}, //
+
34212 {6.19611931, 2.16059518}, //
+
34213 {6.19750452, 2.16134143}, //
+
34214 {6.19880533, 2.16208887}, //
+
34215 {6.2000227, 2.16283774}, //
+
34216 {6.20115614, 2.16358757}, //
+
34217 {6.20220566, 2.16433883}, //
+
34218 {6.20317078, 2.16509128}, //
+
34219 {6.20405245, 2.16584516}, //
+
34220 {6.2048502, 2.16659999}, //
+
34221 {6.20564699, 2.1673975}, //
+
34222 {6.20652676, 2.16827893}, //
+
34223 {6.20748901, 2.16924453}, //
+
34224 {6.20853376, 2.17029381}, //
+
34225 {6.20966196, 2.17142725}, //
+
34226 {6.21087217, 2.17264438}, //
+
34227 {6.21216536, 2.17394567}, //
+
34228 {6.21354151, 2.17533088}, //
+
34229 {6.21500015, 2.17680001}, //
+
34230 {6.21493721, 2.17832088}, //
+
34231 {6.21474838, 2.17988396}, //
+
34232 {6.21443319, 2.18148899}, //
+
34233 {6.2139926, 2.18313575}, //
+
34234 {6.21342611, 2.18482471}, //
+
34235 {6.21273327, 2.18655562}, //
+
34236 {6.21191502, 2.1883285}, //
+
34237 {6.2109704, 2.19014311}, //
+
34238 {6.2098999, 2.19199991}, //
+
34239 {6.20877695, 2.19384694}, //
+
34240 {6.20765305, 2.19560981}, //
+
34241 {6.20652771, 2.19728899}, //
+
34242 {6.20540142, 2.19888401}, //
+
34243 {6.20427322, 2.20039511}, //
+
34244 {6.20314455, 2.20182228}, //
+
34245 {6.20201397, 2.20316553}, //
+
34246 {6.20088291, 2.20442462}, //
+
34247 {6.19974995, 2.20560002}, //
+
34248 {6.19859648, 2.20667028}, //
+
34249 {6.197402, 2.2076149}, //
+
34250 {6.19616652, 2.20843339}, //
+
34251 {6.19489098, 2.209126}, //
+
34252 {6.19357395, 2.20969248}, //
+
34253 {6.19221687, 2.21013331}, //
+
34254 {6.19081831, 2.21044827}, //
+
34255 {6.18937969, 2.21063709}, //
+
34256 {6.18790007, 2.21070004}, //
+
34257 {6.18622112, 2.20902109}, //
+
34258 {6.18525553, 2.2080555}, //
+
34259 {6.18420601, 2.20700622}, //
+
34260 {6.18185568, 2.20465565}, //
+
34261 {6.17916918, 2.20196915}, //
+
34262 {6.17770004, 2.20050001}, //
+
34263 {6.1762414, 2.1989994}, //
+
34264 {6.17486525, 2.19749761}, //
+
34265 {6.17357206, 2.19599438}, //
+
34266 {6.17236185, 2.19449019}, //
+
34267 {6.17123413, 2.19298458}, //
+
34268 {6.1701889, 2.19147778}, //
+
34269 {6.16922665, 2.18996978}, //
+
34270 {6.16834688, 2.18846059}, //
+
34271 {6.16755009, 2.18694997}, //
+
34272 {6.1667943, 2.18477774}, //
+
34273 {6.16603899, 2.18277216}, //
+
34274 {6.1652832, 2.18093324}, //
+
34275 {6.16452789, 2.17926121}, //
+
34276 {6.16377211, 2.17775559}, //
+
34277 {6.1630168, 2.17641664}, //
+
34278 {6.16226101, 2.17524433}, //
+
34279 {6.1615057, 2.17423892}, //
+
34280 {6.16074991, 2.17339993}, //
+
34281 {6.16066599, 2.17323208}, //
+
34282 {6.16056108, 2.17302227}, //
+
34283 {6.16041422, 2.1727283}, //
+
34284 {6.15904999, 2.17000008}, //
+
34285 {6.15866184, 2.16924453}, //
+
34286 {6.1582303, 2.16848898}, //
+
34287 {6.15775537, 2.16773343}, //
+
34288 {6.15723753, 2.16697788}, //
+
34289 {6.15667677, 2.16622233}, //
+
34290 {6.15607214, 2.16546679}, //
+
34291 {6.15542459, 2.164711}, //
+
34292 {6.15473413, 2.16395545}, //
+
34293 {6.15399981, 2.1631999}, //
+
34294 {6.15399981, 2.16659999}, //
+
34295 {6.15408325, 2.17032528}, //
+
34296 {6.15433311, 2.17396784}, //
+
34297 {6.15474987, 2.17752767}, //
+
34298 {6.15533352, 2.181005}, //
+
34299 {6.15608311, 2.18439937}, //
+
34300 {6.15700006, 2.187711}, //
+
34301 {6.15808344, 2.19094014}, //
+
34302 {6.15933323, 2.19408631}, //
+
34303 {6.16074991, 2.19714999}, //
+
34304 {6.16146374, 2.19936419}, //
+
34305 {6.16209316, 2.20149565}, //
+
34306 {6.16263866, 2.20354438}, //
+
34307 {6.16310072, 2.20551038}, //
+
34308 {6.16347837, 2.20739388}, //
+
34309 {6.16377211, 2.20919442}, //
+
34310 {6.16398191, 2.21091223}, //
+
34311 {6.1641078, 2.21254754}, //
+
34312 {6.16415024, 2.21409988}, //
+
34313 {6.16412878, 2.21492839}, //
+
34314 {6.16406584, 2.21592474}, //
+
34315 {6.16396093, 2.21708894}, //
+
34316 {6.16381407, 2.21842098}, //
+
34317 {6.16362524, 2.21992087}, //
+
34318 {6.16339445, 2.22158885}, //
+
34319 {6.1631217, 2.22342467}, //
+
34320 {6.16280699, 2.22542834}, //
+
34321 {6.16244984, 2.2276001}, //
+
34322 {6.1620512, 2.22982478}, //
+
34323 {6.1616106, 2.23196554}, //
+
34324 {6.16112757, 2.23402214}, //
+
34325 {6.16060305, 2.23599505}, //
+
34326 {6.16003656, 2.23788404}, //
+
34327 {6.15942764, 2.23968887}, //
+
34328 {6.15877724, 2.24140978}, //
+
34329 {6.15808439, 2.243047}, //
+
34330 {6.15735006, 2.24460006}, //
+
34331 {6.15660477, 2.24606848}, //
+
34332 {6.15585852, 2.24745178}, //
+
34333 {6.15511131, 2.24874997}, //
+
34334 {6.1543622, 2.24996305}, //
+
34335 {6.15361214, 2.25109076}, //
+
34336 {6.15286112, 2.25213337}, //
+
34337 {6.15210867, 2.25309086}, //
+
34338 {6.15135479, 2.25396299}, //
+
34339 {6.15059996, 2.25475001}, //
+
34340 {6.1487112, 2.256639}, //
+
34341 {6.14824915, 2.25710058}, //
+
34342 {6.14736795, 2.25798202}, //
+
34343 {6.14724207, 2.25810814}, //
+
34344 {6.14720011, 2.2581501}, //
+
34345 {6.14566803, 2.25890565}, //
+
34346 {6.14409399, 2.2596612}, //
+
34347 {6.14247799, 2.26041675}, //
+
34348 {6.14081955, 2.26117229}, //
+
34349 {6.13911963, 2.26192784}, //
+
34350 {6.13737774, 2.26268339}, //
+
34351 {6.13559389, 2.26343894}, //
+
34352 {6.13376808, 2.26419449}, //
+
34353 {6.13189983, 2.26495004}, //
+
34354 {6.13000107, 2.2655797}, //
+
34355 {6.12806034, 2.26595736}, //
+
34356 {6.12607765, 2.26608324}, //
+
34357 {6.124053, 2.26595736}, //
+
34358 {6.12198639, 2.2655797}, //
+
34359 {6.11987782, 2.26495004}, //
+
34360 {6.11772728, 2.2640686}, //
+
34361 {6.11553478, 2.26293516}, //
+
34362 {6.11329985, 2.26154995}, //
+
34363 {6.11106491, 2.26081538}, //
+
34364 {6.10887051, 2.26012278}, //
+
34365 {6.10671663, 2.25947213}, //
+
34366 {6.10460377, 2.25886369}, //
+
34367 {6.10253143, 2.25829697}, //
+
34368 {6.10050011, 2.25777221}, //
+
34369 {6.09850931, 2.25728941}, //
+
34370 {6.09655905, 2.25684881}, //
+
34371 {6.09464979, 2.25644994}, //
+
34372 {6.09278202, 2.25607228}, //
+
34373 {6.09095621, 2.25569439}, //
+
34374 {6.08917236, 2.25531673}, //
+
34375 {6.08743048, 2.25493884}, //
+
34376 {6.08573008, 2.25456119}, //
+
34377 {6.08407211, 2.25418329}, //
+
34378 {6.08245611, 2.25380564}, //
+
34379 {6.08088207, 2.25342774}, //
+
34380 {6.07934999, 2.25305009}, //
+
34381 {6.07793331, 2.25274515}, //
+
34382 {6.07668352, 2.25256348}, //
+
34383 {6.07560015, 2.25250554}, //
+
34384 {6.07468319, 2.25257111}, //
+
34385 {6.07393312, 2.25275993}, //
+
34386 {6.07334995, 2.25307226}, //
+
34387 {6.0729332, 2.25350809}, //
+
34388 {6.07268333, 2.25406718}, //
+
34389 {6.07259989, 2.25475001}, //
+
34390 {6.07259989, 2.25617719}, //
+
34391 {6.07259989, 2.25682783}, //
+
34392 {6.07259989, 2.25852776}, //
+
34393 {6.07259989, 2.25945115}, //
+
34394 {6.07259989, 2.25985003}, //
+
34395 {6.07255793, 2.2602067}, //
+
34396 {6.07243204, 2.26052165}, //
+
34397 {6.07222223, 2.2607944}, //
+
34398 {6.0719285, 2.26102519}, //
+
34399 {6.07155085, 2.26121426}, //
+
34400 {6.07108879, 2.26136112}, //
+
34401 {6.07054329, 2.26146603}, //
+
34402 {6.06991339, 2.26152897}, //
+
34403 {6.06920004, 2.26154995}, //
+
34404 {6.06845474, 2.26146603}, //
+
34405 {6.06770849, 2.26121426}, //
+
34406 {6.06696129, 2.2607944}, //
+
34407 {6.06621218, 2.2602067}, //
+
34408 {6.06546211, 2.25945115}, //
+
34409 {6.06471109, 2.25852776}, //
+
34410 {6.06395864, 2.25743651}, //
+
34411 {6.06320477, 2.25617719}, //
+
34412 {6.06244993, 2.25475001}, //
+
34413 {6.06083441, 2.25241041}, //
+
34414 {6.05901051, 2.2499032}, //
+
34415 {6.05697775, 2.24722767}, //
+
34416 {6.05473661, 2.24438453}, //
+
34417 {6.05228662, 2.24137354}, //
+
34418 {6.04962778, 2.23819447}, //
+
34419 {6.04676056, 2.23484755}, //
+
34420 {6.04368448, 2.23133278}, //
+
34421 {6.04040003, 2.22764993}, //
+
34422 {6.03699017, 2.22392535}, //
+
34423 {6.03353834, 2.22028446}, //
+
34424 {6.03004456, 2.21672773}, //
+
34425 {6.02650881, 2.21325493}, //
+
34426 {6.0229311, 2.20986605}, //
+
34427 {6.01931095, 2.20656109}, //
+
34428 {6.01564932, 2.20334005}, //
+
34429 {6.01194572, 2.20020318}, //
+
34430 {6.00820017, 2.19714999}, //
+
34431 {6.00439119, 2.19396114}, //
+
34432 {6.00049877, 2.19043899}, //
+
34433 {5.99652243, 2.18658328}, //
+
34434 {5.99246168, 2.1823945}, //
+
34435 {5.98831749, 2.17787218}, //
+
34436 {5.9840889, 2.17301655}, //
+
34437 {5.97977638, 2.16782784}, //
+
34438 {5.97538042, 2.16230559}, //
+
34439 {5.97090006, 2.15645003}, //
+
34440 {5.96428871, 2.14987087}, //
+
34441 {5.95801115, 2.14371181}, //
+
34442 {5.9520669, 2.13797212}, //
+
34443 {5.94645548, 2.13265252}, //
+
34444 {5.94117785, 2.12775254}, //
+
34445 {5.93623352, 2.12327218}, //
+
34446 {5.93162203, 2.11921167}, //
+
34447 {5.92734432, 2.11557102}, //
+
34448 {5.92339993, 2.11234999}, //
+
34449 {5.91318989, 2.10704064}, //
+
34450 {5.90364933, 2.10164618}, //
+
34451 {5.89477777, 2.09616661}, //
+
34452 {5.88657522, 2.09060192}, //
+
34453 {5.87904215, 2.08495188}, //
+
34454 {5.8721776, 2.07921672}, //
+
34455 {5.86598253, 2.07339621}, //
+
34456 {5.86045694, 2.06749082}, //
+
34457 {5.85559988, 2.06150007}, //
+
34458 {5.85128784, 2.05560255}, //
+
34459 {5.84739494, 2.04995441}, //
+
34460 {5.84392214, 2.04455566}, //
+
34461 {5.84086895, 2.03940606}, //
+
34462 {5.83823586, 2.03450608}, //
+
34463 {5.83602238, 2.02985549}, //
+
34464 {5.83422852, 2.02545428}, //
+
34465 {5.83285427, 2.02130246}, //
+
34466 {5.83190012, 2.01740003}, //
+
34467 {5.83114433, 2.01589942}, //
+
34468 {5.83038902, 2.01439762}, //
+
34469 {5.82963324, 2.01289439}, //
+
34470 {5.82887793, 2.01139021}, //
+
34471 {5.82812214, 2.0098846}, //
+
34472 {5.82736683, 2.00837779}, //
+
34473 {5.82661104, 2.00686979}, //
+
34474 {5.82585573, 2.0053606}, //
+
34475 {5.82509995, 2.00384998}, //
+
34476 {5.82434464, 2.00247478}, //
+
34477 {5.82358885, 2.00134873}, //
+
34478 {5.82283354, 2.00047231}, //
+
34479 {5.82207775, 1.99984503}, //
+
34480 {5.82132244, 1.99946725}, //
+
34481 {5.82056665, 1.99933887}, //
+
34482 {5.81981134, 1.99945986}, //
+
34483 {5.81905556, 1.99983025}, //
+
34484 {5.81829977, 2.0004499}, //
+
34485 {5.79460001, 2.0309999}, //
+
34486 {5.7505002, 2.06150007}, //
+
34487 {5.75336504, 2.06371427}, //
+
34488 {5.7559371, 2.06584573}, //
+
34489 {5.75821686, 2.06789446}, //
+
34490 {5.76020384, 2.06986046}, //
+
34491 {5.76189804, 2.07174373}, //
+
34492 {5.76329994, 2.0735445}, //
+
34493 {5.76440907, 2.07526231}, //
+
34494 {5.76522589, 2.07689762}, //
+
34495 {5.76574993, 2.07844996}, //
+
34496 {5.76610661, 2.08000255}, //
+
34497 {5.76642179, 2.08163762}, //
+
34498 {5.76669455, 2.08335567}, //
+
34499 {5.76692533, 2.0851562}, //
+
34500 {5.76711416, 2.08703947}, //
+
34501 {5.76726103, 2.08900547}, //
+
34502 {5.76736593, 2.09105444}, //
+
34503 {5.76742887, 2.0931859}, //
+
34504 {5.76744986, 2.09540009}, //
+
34505 {5.76675749, 2.09691048}, //
+
34506 {5.76619053, 2.09841967}, //
+
34507 {5.76574993, 2.09992766}, //
+
34508 {5.76543522, 2.10143447}, //
+
34509 {5.76524639, 2.10294008}, //
+
34510 {5.76518345, 2.1044445}, //
+
34511 {5.76524639, 2.10594749}, //
+
34512 {5.76543522, 2.10744929}, //
+
34513 {5.76574993, 2.1089499}, //
+
34514 {5.76619053, 2.110461}, //
+
34515 {5.76675749, 2.11197233}, //
+
34516 {5.76744986, 2.11348343}, //
+
34517 {5.76826859, 2.11499453}, //
+
34518 {5.7692132, 2.11650562}, //
+
34519 {5.77028322, 2.11801672}, //
+
34520 {5.77147961, 2.11952782}, //
+
34521 {5.77280188, 2.12103891}, //
+
34522 {5.77425003, 2.12255001}, //
+
34523 {5.77951717, 2.12711358}, //
+
34524 {5.78478575, 2.13175988}, //
+
34525 {5.79005575, 2.13648891}, //
+
34526 {5.79532671, 2.14130068}, //
+
34527 {5.80059862, 2.14619517}, //
+
34528 {5.80587244, 2.15117216}, //
+
34529 {5.81114674, 2.15623212}, //
+
34530 {5.81642294, 2.16137481}, //
+
34531 {5.8217001, 2.16659999}, //
+
34532 {5.82693577, 2.17170978}, //
+
34533 {5.83208752, 2.17648387}, //
+
34534 {5.83715534, 2.18092227}, //
+
34535 {5.84213972, 2.18502474}, //
+
34536 {5.8470397, 2.18879128}, //
+
34537 {5.85185575, 2.19222212}, //
+
34538 {5.85658789, 2.19531727}, //
+
34539 {5.86123562, 2.19807649}, //
+
34540 {5.8657999, 2.20050001}, //
+
34541 {5.87044764, 2.2028501}, //
+
34542 {5.87534571, 2.20536661}, //
+
34543 {5.88049459, 2.20805001}, //
+
34544 {5.88589382, 2.21090007}, //
+
34545 {5.89154387, 2.21391678}, //
+
34546 {5.89744425, 2.21709991}, //
+
34547 {5.90359545, 2.22044992}, //
+
34548 {5.90999746, 2.2239666}, //
+
34549 {5.91664982, 2.22764993}, //
+
34550 {5.92113018, 2.22990561}, //
+
34551 {5.92552662, 2.23216105}, //
+
34552 {5.92983866, 2.23441672}, //
+
34553 {5.93406725, 2.23667216}, //
+
34554 {5.93821192, 2.23892784}, //
+
34555 {5.94227219, 2.24118328}, //
+
34556 {5.94624853, 2.24343896}, //
+
34557 {5.95014143, 2.2456944}, //
+
34558 {5.95394993, 2.24795008}, //
+
34559 {5.95763254, 2.2501328}, //
+
34560 {5.96114731, 2.25214744}, //
+
34561 {5.96449423, 2.25399446}, //
+
34562 {5.9676733, 2.25567341}, //
+
34563 {5.97068453, 2.25718451}, //
+
34564 {5.97352791, 2.25852776}, //
+
34565 {5.97620296, 2.25970316}, //
+
34566 {5.97871065, 2.26071048}, //
+
34567 {5.98105001, 2.26154995}, //
+
34568 {5.98337889, 2.26310253}, //
+
34569 {5.98583269, 2.26473761}, //
+
34570 {5.98841095, 2.26645565}, //
+
34571 {5.99111414, 2.26825619}, //
+
34572 {5.99394178, 2.27013946}, //
+
34573 {5.99689436, 2.27210546}, //
+
34574 {5.99997139, 2.27415442}, //
+
34575 {6.00317335, 2.27628589}, //
+
34576 {6.00649977, 2.27850008}, //
+
34577 {6.00988913, 2.28075552}, //
+
34578 {6.01666689, 2.28526664}, //
+
34579 {6.02005577, 2.28752232}, //
+
34580 {6.02344465, 2.28977776}, //
+
34581 {6.02683353, 2.29203343}, //
+
34582 {6.03022242, 2.29428887}, //
+
34583 {6.0336113, 2.29654455}, //
+
34584 {6.03700018, 2.29879999}, //
+
34585 {6.04024267, 2.30098271}, //
+
34586 {6.04319239, 2.30299759}, //
+
34587 {6.0458498, 2.30484438}, //
+
34588 {6.04821491, 2.30652356}, //
+
34589 {6.05028725, 2.30803466}, //
+
34590 {6.0520668, 2.30937767}, //
+
34591 {6.05355358, 2.31055307}, //
+
34592 {6.05474806, 2.31156039}, //
+
34593 {6.05565023, 2.3124001}, //
+
34594 {6.0556922, 2.31315565}, //
+
34595 {6.05581808, 2.3139112}, //
+
34596 {6.05602789, 2.31466675}, //
+
34597 {6.05632162, 2.3154223}, //
+
34598 {6.05669928, 2.31617785}, //
+
34599 {6.05716133, 2.31693339}, //
+
34600 {6.05770683, 2.31768894}, //
+
34601 {6.05833626, 2.31844449}, //
+
34602 {6.05905008, 2.31920004}, //
+
34603 {6.05978441, 2.32065868}, //
+
34604 {6.06047726, 2.3220346}, //
+
34605 {6.06112766, 2.32332778}, //
+
34606 {6.06173658, 2.32453823}, //
+
34607 {6.06230307, 2.32566595}, //
+
34608 {6.06282759, 2.32671118}, //
+
34609 {6.06331062, 2.32767344}, //
+
34610 {6.06375122, 2.3285532}, //
+
34611 {6.06414986, 2.32934999}, //
+
34612 {6.06438065, 2.33002162}, //
+
34613 {6.0643177, 2.3305254}, //
+
34614 {6.06396103, 2.33086109}, //
+
34615 {6.06331062, 2.33102894}, //
+
34616 {6.06236601, 2.33102894}, //
+
34617 {6.06112766, 2.33086109}, //
+
34618 {6.05959558, 2.3305254}, //
+
34619 {6.05776978, 2.33002162}, //
+
34620 {6.05565023, 2.32934999}, //
+
34621 {6.05341482, 2.32863641}, //
+
34622 {6.05122042, 2.32800674}, //
+
34623 {6.04906654, 2.327461}, //
+
34624 {6.04695368, 2.32699943}, //
+
34625 {6.04488134, 2.32662153}, //
+
34626 {6.04285002, 2.3263278}, //
+
34627 {6.04085922, 2.32611799}, //
+
34628 {6.03890944, 2.32599187}, //
+
34629 {6.03700018, 2.32594991}, //
+
34630 {6.03518438, 2.32597089}, //
+
34631 {6.033494, 2.32603407}, //
+
34632 {6.03192759, 2.32613897}, //
+
34633 {6.03048658, 2.32628584}, //
+
34634 {6.02916956, 2.32647467}, //
+
34635 {6.02797794, 2.32670546}, //
+
34636 {6.02691031, 2.32697845}, //
+
34637 {6.02596807, 2.32729316}, //
+
34638 {6.02514982, 2.32765007}, //
+
34639 {6.0245204, 2.32804871}, //
+
34640 {6.02414274, 2.32848954}, //
+
34641 {6.02401686, 2.32897234}, //
+
34642 {6.02414274, 2.32949686}, //
+
34643 {6.0245204, 2.33006358}, //
+
34644 {6.02514982, 2.33067226}, //
+
34645 {6.02603149, 2.33132291}, //
+
34646 {6.02716494, 2.33201551}, //
+
34647 {6.02855015, 2.33275008}, //
+
34648 {6.02927399, 2.3335259}, //
+
34649 {6.02995729, 2.33434248}, //
+
34650 {6.03060007, 2.33520007}, //
+
34651 {6.03120184, 2.33609819}, //
+
34652 {6.03176308, 2.33703709}, //
+
34653 {6.03228331, 2.33801675}, //
+
34654 {6.032763, 2.33903694}, //
+
34655 {6.03320169, 2.34009814}, //
+
34656 {6.03359985, 2.34120011}, //
+
34657 {6.03397799, 2.3423748}, //
+
34658 {6.03435564, 2.34363198}, //
+
34659 {6.0347333, 2.34497213}, //
+
34660 {6.03511095, 2.34639502}, //
+
34661 {6.03548908, 2.34790063}, //
+
34662 {6.03586674, 2.34948897}, //
+
34663 {6.03624439, 2.35115981}, //
+
34664 {6.03662205, 2.35291362}, //
+
34665 {6.03700018, 2.35474992}, //
+
34666 {6.03735685, 2.35657597}, //
+
34667 {6.03767157, 2.35827589}, //
+
34668 {6.03794432, 2.35984993}, //
+
34669 {6.03817511, 2.36129808}, //
+
34670 {6.03836441, 2.36262035}, //
+
34671 {6.03851128, 2.36381674}, //
+
34672 {6.03861618, 2.364887}, //
+
34673 {6.03867912, 2.36583138}, //
+
34674 {6.0387001, 2.3666501}, //
+
34675 {6.0387001, 2.3696723}, //
+
34676 {6.0387001, 2.36988211}, //
+
34677 {6.0387001, 2.37000799}, //
+
34678 {6.0387001, 2.37004995}, //
+
34679 {6.03876305, 2.37009192}, //
+
34680 {6.03895187, 2.3702178}, //
+
34681 {6.03926659, 2.37042785}, //
+
34682 {6.03970718, 2.37072158}, //
+
34683 {6.04027414, 2.37109947}, //
+
34684 {6.04178524, 2.37210679}, //
+
34685 {6.04272985, 2.37273645}, //
+
34686 {6.04379988, 2.37345004}, //
+
34687 {6.04493284, 2.37420487}, //
+
34688 {6.04606438, 2.37495875}, //
+
34689 {6.04719448, 2.3757112}, //
+
34690 {6.04832363, 2.37646246}, //
+
34691 {6.04945135, 2.37721229}, //
+
34692 {6.05057764, 2.37796116}, //
+
34693 {6.05170298, 2.3787086}, //
+
34694 {6.05282736, 2.37945485}, //
+
34695 {6.05394983, 2.38019991}, //
+
34696 {6.0550828, 2.38095546}, //
+
34697 {6.05621433, 2.38171101}, //
+
34698 {6.05734444, 2.38246655}, //
+
34699 {6.05847359, 2.3832221}, //
+
34700 {6.05960131, 2.38397789}, //
+
34701 {6.0607276, 2.38473344}, //
+
34702 {6.06185293, 2.38548899}, //
+
34703 {6.06297731, 2.38624454}, //
+
34704 {6.06409979, 2.38700008}, //
+
34705 {6.06521225, 2.38773465}, //
+
34706 {6.06628275, 2.38842726}, //
+
34707 {6.06731129, 2.38907766}, //
+
34708 {6.06829739, 2.38968635}, //
+
34709 {6.069242, 2.39025307}, //
+
34710 {6.07014465, 2.39077783}, //
+
34711 {6.07100487, 2.39126039}, //
+
34712 {6.0718236, 2.39170122}, //
+
34713 {6.07259989, 2.3921001}, //
+
34714 {6.07331371, 2.39245677}, //
+
34715 {6.07394314, 2.39277172}, //
+
34716 {6.07448912, 2.39304447}, //
+
34717 {6.0749507, 2.39327526}, //
+
34718 {6.07532835, 2.39346409}, //
+
34719 {6.07600021, 2.39380002}, //
+
34720 {6.07604218, 2.39306545}, //
+
34721 {6.07616806, 2.39237285}, //
+
34722 {6.07637787, 2.3917222}, //
+
34723 {6.0766716, 2.39111352}, //
+
34724 {6.07704926, 2.3905468}, //
+
34725 {6.07751131, 2.39002228}, //
+
34726 {6.07805681, 2.38953948}, //
+
34727 {6.07868624, 2.38909888}, //
+
34728 {6.07940006, 2.38870001}, //
+
34729 {6.0801549, 2.38830113}, //
+
34730 {6.08090878, 2.38786054}, //
+
34731 {6.08166122, 2.38737774}, //
+
34732 {6.08241224, 2.38685298}, //
+
34733 {6.08316231, 2.3862865}, //
+
34734 {6.08391094, 2.38567781}, //
+
34735 {6.08465862, 2.38502717}, //
+
34736 {6.08540487, 2.38433456}, //
+
34737 {6.08615017, 2.3836}, //
+
34738 {6.08837414, 2.38280249}, //
+
34739 {6.09051275, 2.38192105}, //
+
34740 {6.09256649, 2.38095546}, //
+
34741 {6.09453535, 2.37990618}, //
+
34742 {6.09641838, 2.37877274}, //
+
34743 {6.09821653, 2.37755561}, //
+
34744 {6.09992981, 2.37625432}, //
+
34745 {6.10155725, 2.37486911}, //
+
34746 {6.10309982, 2.37339997}, //
+
34747 {6.10448503, 2.37190008}, //
+
34748 {6.10561848, 2.37039995}, //
+
34749 {6.10650015, 2.36890006}, //
+
34750 {6.10712957, 2.36739993}, //
+
34751 {6.10750723, 2.36590004}, //
+
34752 {6.10763311, 2.36439991}, //
+
34753 {6.10750723, 2.36290002}, //
+
34754 {6.10712957, 2.36139989}, //
+
34755 {6.10650015, 2.3599}, //
+
34756 {6.10645866, 2.35906053}, //
+
34757 {6.10633469, 2.35805297}, //
+
34758 {6.10612774, 2.3568778}, //
+
34759 {6.1058383, 2.35553455}, //
+
34760 {6.10546589, 2.35402346}, //
+
34761 {6.10501099, 2.35234451}, //
+
34762 {6.10447359, 2.35049748}, //
+
34763 {6.10385323, 2.34848261}, //
+
34764 {6.10314989, 2.34629989}, //
+
34765 {6.10172272, 2.34554434}, //
+
34766 {6.10046339, 2.34478879}, //
+
34767 {6.09937239, 2.34403324}, //
+
34768 {6.09844875, 2.34327769}, //
+
34769 {6.09769344, 2.34252214}, //
+
34770 {6.0971055, 2.3417666}, //
+
34771 {6.09668589, 2.34101105}, //
+
34772 {6.09643412, 2.3402555}, //
+
34773 {6.09635019, 2.33949995}, //
+
34774 {6.09647512, 2.33875489}, //
+
34775 {6.09685135, 2.33800864}, //
+
34776 {6.09747791, 2.3372612}, //
+
34777 {6.09835482, 2.33651233}, //
+
34778 {6.09948254, 2.33576226}, //
+
34779 {6.10086107, 2.33501101}, //
+
34780 {6.10248995, 2.33425856}, //
+
34781 {6.10436964, 2.33350492}, //
+
34782 {6.10650015, 2.33275008}, //
+
34783 {6.10805225, 2.3320365}, //
+
34784 {6.10968781, 2.33140683}, //
+
34785 {6.11140537, 2.33086109}, //
+
34786 {6.11320639, 2.33039927}, //
+
34787 {6.11508942, 2.33002162}, //
+
34788 {6.11705542, 2.32972789}, //
+
34789 {6.11910439, 2.32951784}, //
+
34790 {6.12123585, 2.32939196}, //
+
34791 {6.1234498, 2.32934999}, //
+
34792 {6.12798071, 2.32934999}, //
+
34793 {6.13250685, 2.32934999}, //
+
34794 {6.14379978, 2.32934999}, //
+
34795 {6.14604521, 2.3300426}, //
+
34796 {6.14824677, 2.33060932}, //
+
34797 {6.15040541, 2.33104992}, //
+
34798 {6.15252113, 2.33136487}, //
+
34799 {6.15459299, 2.3315537}, //
+
34800 {6.15662241, 2.33161664}, //
+
34801 {6.15860796, 2.3315537}, //
+
34802 {6.16055059, 2.33136487}, //
+
34803 {6.16244984, 2.33104992}, //
+
34804 {6.16423416, 2.33069324}, //
+
34805 {6.16717243, 2.33010554}, //
+
34806 {6.17000532, 2.32953882}, //
+
34807 {6.17053032, 2.32943392}, //
+
34808 {6.17084503, 2.32937098}, //
+
34809 {6.17094994, 2.32934999}, //
+
34810 {6.17170477, 2.32784939}, //
+
34811 {6.17245865, 2.32634759}, //
+
34812 {6.1732111, 2.32484436}, //
+
34813 {6.17396212, 2.32334018}, //
+
34814 {6.17471218, 2.32183456}, //
+
34815 {6.17546129, 2.32032776}, //
+
34816 {6.1762085, 2.31881976}, //
+
34817 {6.17695475, 2.31731057}, //
+
34818 {6.17770004, 2.31579995}, //
+
34819 {6.17845535, 2.3150444}, //
+
34820 {6.17996645, 2.31353331}, //
+
34821 {6.18072224, 2.31277776}, //
+
34822 {6.18298912, 2.31051111}, //
+
34823 {6.18374443, 2.30975556}, //
+
34824 {6.18450022, 2.30900002}, //
+
34825 {6.18521357, 2.30825496}, //
+
34826 {6.18584299, 2.30750871}, //
+
34827 {6.18638897, 2.30676103}, //
+
34828 {6.18685055, 2.30601239}, //
+
34829 {6.1872282, 2.30526233}, //
+
34830 {6.18752241, 2.30451107}, //
+
34831 {6.18773222, 2.30375862}, //
+
34832 {6.1878581, 2.30300498}, //
+
34833 {6.18790007, 2.30224991}, //
+
34834 {6.18792105, 2.30149436}, //
+
34835 {6.18798399, 2.30073881}, //
+
34836 {6.18808889, 2.29998326}, //
+
34837 {6.18823576, 2.29922771}, //
+
34838 {6.18842459, 2.29847217}, //
+
34839 {6.18865538, 2.29771662}, //
+
34840 {6.1889286, 2.29696107}, //
+
34841 {6.18924332, 2.29620552}, //
+
34842 {6.18959999, 2.29544997}, //
+
34843 {6.18999815, 2.29469442}, //
+
34844 {6.19043684, 2.29393888}, //
+
34845 {6.19091654, 2.29318333}, //
+
34846 {6.19143724, 2.29242778}, //
+
34847 {6.191998, 2.29167223}, //
+
34848 {6.19259977, 2.29091668}, //
+
34849 {6.19324255, 2.29016113}, //
+
34850 {6.19392586, 2.28940558}, //
+
34851 {6.19465017, 2.28865004}, //
+
34852 {6.19536352, 2.28790498}, //
+
34853 {6.19599342, 2.28715873}, //
+
34854 {6.19653893, 2.28641105}, //
+
34855 {6.1970005, 2.28566241}, //
+
34856 {6.19737816, 2.28491235}, //
+
34857 {6.19767237, 2.28416109}, //
+
34858 {6.19788218, 2.28340864}, //
+
34859 {6.19800806, 2.282655}, //
+
34860 {6.19805002, 2.28189993}, //
+
34861 {6.20031643, 2.27963328}, //
+
34862 {6.20107222, 2.27887774}, //
+
34863 {6.201828, 2.27812219}, //
+
34864 {6.20258331, 2.27736664}, //
+
34865 {6.2033391, 2.27661109}, //
+
34866 {6.2048502, 2.27509999}, //
+
34867 {6.20702219, 2.27421904}, //
+
34868 {6.20902777, 2.27308774}, //
+
34869 {6.21086645, 2.27170563}, //
+
34870 {6.21253872, 2.27007294}, //
+
34871 {6.21404457, 2.26818943}, //
+
34872 {6.21538353, 2.26605558}, //
+
34873 {6.2165556, 2.26367092}, //
+
34874 {6.21756124, 2.26103592}, //
+
34875 {6.2184, 2.2581501}, //
+
34876 {6.21988964, 2.25667048}, //
+
34877 {6.22133589, 2.25523138}, //
+
34878 {6.22273874, 2.25383329}, //
+
34879 {6.22409868, 2.25247598}, //
+
34880 {6.22541523, 2.25115919}, //
+
34881 {6.22668886, 2.24988341}, //
+
34882 {6.2279191, 2.24864817}, //
+
34883 {6.22910595, 2.24745369}, //
+
34884 {6.23024988, 2.24629998}, //
+
34885 {6.2314043, 2.24518776}, //
+
34886 {6.23260069, 2.24411726}, //
+
34887 {6.23383904, 2.24308896}, //
+
34888 {6.23511934, 2.24210238}, //
+
34889 {6.23644114, 2.24115801}, //
+
34890 {6.23780537, 2.24025559}, //
+
34891 {6.23921156, 2.23939514}, //
+
34892 {6.24065971, 2.23857665}, //
+
34893 {6.24214983, 2.23779988}, //
+
34894 {6.24288416, 2.23708653}, //
+
34895 {6.24357462, 2.23645687}, //
+
34896 {6.24422216, 2.23591113}, //
+
34897 {6.24482632, 2.23544931}, //
+
34898 {6.24538755, 2.23507166}, //
+
34899 {6.2459054, 2.23477769}, //
+
34900 {6.24638033, 2.23456788}, //
+
34901 {6.24681187, 2.234442}, //
+
34902 {6.24720001, 2.23440003}, //
+
34903 {6.24803972, 2.23440003}, //
+
34904 {6.24852228, 2.23440003}, //
+
34905 {6.2490468, 2.23440003}, //
+
34906 {6.25238419, 2.23440003}, //
+
34907 {6.25248909, 2.23440003}, //
+
34908 {6.25263596, 2.23440003}, //
+
34909 {6.25400019, 2.23440003}, //
+
34910 {6.2544198, 2.23435807}, //
+
34911 {6.25492334, 2.23423219}, //
+
34912 {6.25551128, 2.23402214}, //
+
34913 {6.25618267, 2.23372841}, //
+
34914 {6.25693846, 2.23335052}, //
+
34915 {6.25777769, 2.23288894}, //
+
34916 {6.25870132, 2.2323432}, //
+
34917 {6.2597084, 2.23171353}, //
+
34918 {6.26079988, 2.23099995}, //
+
34919 {6.26191187, 2.23021293}, //
+
34920 {6.26298046, 2.22934079}, //
+
34921 {6.26400566, 2.2283833}, //
+
34922 {6.26498747, 2.2273407}, //
+
34923 {6.26592636, 2.22621298}, //
+
34924 {6.26682234, 2.2249999}, //
+
34925 {6.26767492, 2.22370195}, //
+
34926 {6.26848412, 2.22231841}, //
+
34927 {6.26924992, 2.22084999}, //
+
34928 {6.27282858, 2.21710443}, //
+
34929 {6.27603006, 2.2134006}, //
+
34930 {6.27885532, 2.20973897}, //
+
34931 {6.28130436, 2.20611906}, //
+
34932 {6.28337669, 2.20254135}, //
+
34933 {6.28507233, 2.1990056}, //
+
34934 {6.28639126, 2.19551182}, //
+
34935 {6.28733397, 2.19205999}, //
+
34936 {6.28789997, 2.18864989}, //
+
34937 {6.28825665, 2.18528199}, //
+
34938 {6.28857183, 2.18195629}, //
+
34939 {6.28884459, 2.17867231}, //
+
34940 {6.28907537, 2.1754303}, //
+
34941 {6.2892642, 2.17223024}, //
+
34942 {6.28941107, 2.16907215}, //
+
34943 {6.28951597, 2.16595626}, //
+
34944 {6.28957891, 2.16288209}, //
+
34945 {6.2895999, 2.15984988}, //
+
34946 {6.2895999, 2.15380549}, //
+
34947 {6.2895999, 2.15212655}, //
+
34948 {6.2895999, 2.14625001}, //
+
34949 {6.28888655, 2.14550495}, //
+
34950 {6.28825665, 2.1447587}, //
+
34951 {6.28771114, 2.14401102}, //
+
34952 {6.28724957, 2.14326239}, //
+
34953 {6.28687143, 2.14251232}, //
+
34954 {6.2865777, 2.14176106}, //
+
34955 {6.28636789, 2.14100862}, //
+
34956 {6.28624201, 2.14025497}, //
+
34957 {6.28620005, 2.1394999}, //
+
34958 {6.28622103, 2.13872337}, //
+
34959 {6.28628397, 2.13790488}, //
+
34960 {6.28638887, 2.13704443}, //
+
34961 {6.28653574, 2.13614202}, //
+
34962 {6.28672457, 2.13519764}, //
+
34963 {6.28695536, 2.13421106}, //
+
34964 {6.28722858, 2.13318276}, //
+
34965 {6.2875433, 2.13211226}, //
+
34966 {6.28789997, 2.13100004}, //
+
34967 {6.28829861, 2.12980437}, //
+
34968 {6.28873968, 2.12848401}, //
+
34969 {6.28922224, 2.12703896}, //
+
34970 {6.28974676, 2.12546921}, //
+
34971 {6.29031372, 2.12377477}, //
+
34972 {6.29092216, 2.12195563}, //
+
34973 {6.29157305, 2.12001181}, //
+
34974 {6.29226542, 2.11794329}, //
+
34975 {6.29300022, 2.11575007}, //
+
34976 {6.29515123, 2.11206675}, //
+
34977 {6.29709387, 2.10855007}, //
+
34978 {6.29882765, 2.10520005}, //
+
34979 {6.30035305, 2.10201669}, //
+
34980 {6.3016696, 2.09899998}, //
+
34981 {6.30277777, 2.09614992}, //
+
34982 {6.30367708, 2.09346676}, //
+
34983 {6.30436802, 2.09095001}, //
+
34984 {6.3048501, 2.08859992}, //
+
34985 {6.30520678, 2.08642769}, //
+
34986 {6.30552149, 2.08442211}, //
+
34987 {6.30579424, 2.08258343}, //
+
34988 {6.30602551, 2.08091116}, //
+
34989 {6.30621433, 2.07940555}, //
+
34990 {6.3063612, 2.07806659}, //
+
34991 {6.3064661, 2.07689452}, //
+
34992 {6.30652905, 2.07588887}, //
+
34993 {6.30655003, 2.07505012}, //
+
34994 {6.30655003, 2.07370687}, //
+
34995 {6.30655003, 2.07316113}, //
+
34996 {6.30655003, 2.07269931}, //
+
34997 {6.30655003, 2.07165003}, //
+
34998 {6.30659199, 2.07012844}, //
+
34999 {6.30671787, 2.06856346}, //
+
35000 {6.30692768, 2.06695557}, //
+
35001 {6.30722141, 2.06530428}, //
+
35002 {6.30759954, 2.06360984}, //
+
35003 {6.30806112, 2.06187224}, //
+
35004 {6.30860662, 2.06009126}, //
+
35005 {6.30923653, 2.05826735}, //
+
35006 {6.30994987, 2.05640006}, //
+
35007 {6.31070566, 2.05454254}, //
+
35008 {6.31146097, 2.05272603}, //
+
35009 {6.31221676, 2.05095005}, //
+
35010 {6.31297207, 2.04921484}, //
+
35011 {6.31372786, 2.0475204}, //
+
35012 {6.31448317, 2.04586673}, //
+
35013 {6.31523895, 2.04425359}, //
+
35014 {6.31599426, 2.04268146}, //
+
35015 {6.31675005, 2.04115009}, //
+
35016 {6.31750488, 2.03973341}, //
+
35017 {6.31825876, 2.03848338}, //
+
35018 {6.31901121, 2.03740001}, //
+
35019 {6.31976223, 2.03648329}, //
+
35020 {6.32051229, 2.03573322}, //
+
35021 {6.32126093, 2.03515005}, //
+
35022 {6.32200861, 2.0347333}, //
+
35023 {6.32275486, 2.03448343}, //
+
35024 {6.32350016, 2.03439999}, //
+
35025 {6.32425547, 2.03514504}, //
+
35026 {6.32501125, 2.03589129}, //
+
35027 {6.32576656, 2.03663898}, //
+
35028 {6.32652235, 2.03738761}, //
+
35029 {6.32727766, 2.03813767}, //
+
35030 {6.32803345, 2.03888893}, //
+
35031 {6.32878876, 2.03964138}, //
+
35032 {6.32954454, 2.04039502}, //
+
35033 {6.33029985, 2.04115009}, //
+
35034 {6.33107615, 2.04192591}, //
+
35035 {6.33274984, 2.04360008}, //
+
35036 {6.33658695, 2.04743695}, //
+
35037 {6.33764791, 2.04849815}, //
+
35038 {6.33874989, 2.04959989}, //
+
35039 {6.33986235, 2.05067039}, //
+
35040 {6.34093285, 2.05161476}, //
+
35041 {6.34196091, 2.05243325}, //
+
35042 {6.34294748, 2.05312586}, //
+
35043 {6.3438921, 2.05369258}, //
+
35044 {6.34479427, 2.05413342}, //
+
35045 {6.34565496, 2.05444813}, //
+
35046 {6.34647369, 2.05463696}, //
+
35047 {6.34724998, 2.0546999}, //
+
35048 {6.34796381, 2.05461669}, //
+
35049 {6.34859324, 2.05436659}, //
+
35050 {6.34913874, 2.05395007}, //
+
35051 {6.34960079, 2.05336666}, //
+
35052 {6.34997845, 2.0526166}, //
+
35053 {6.35027218, 2.05170012}, //
+
35054 {6.35048199, 2.05061674}, //
+
35055 {6.35060787, 2.04936671}, //
+
35056 {6.35064983, 2.04795003}, //
+
35057 {6.34934855, 2.0415802}, //
+
35058 {6.34846735, 2.03604865}, //
+
35059 {6.34800577, 2.03135562}, //
+
35060 {6.34796381, 2.02750063}, //
+
35061 {6.34834146, 2.02448392}, //
+
35062 {6.34913874, 2.02230549}, //
+
35063 {6.3503561, 2.02096534}, //
+
35064 {6.35199308, 2.02046347}, //
+
35065 {6.35405016, 2.02080011}, //
+
35066 {6.35405016, 2.02419996}, //
+
35067 {6.35479498, 2.02422094}, //
+
35068 {6.35554123, 2.02428389}, //
+
35069 {6.35628891, 2.02438879}, //
+
35070 {6.35703754, 2.02453589}, //
+
35071 {6.35778761, 2.02472472}, //
+
35072 {6.3585391, 2.02495551}, //
+
35073 {6.35929155, 2.0252285}, //
+
35074 {6.36004496, 2.02554321}, //
+
35075 {6.36079979, 2.02589989}, //
+
35076 {6.3615346, 2.0262568}, //
+
35077 {6.36222696, 2.02657151}, //
+
35078 {6.36287785, 2.0268445}, //
+
35079 {6.36348629, 2.02707529}, //
+
35080 {6.36405325, 2.02726412}, //
+
35081 {6.36457777, 2.02741122}, //
+
35082 {6.36506033, 2.02751613}, //
+
35083 {6.3655014, 2.02757907}, //
+
35084 {6.36590004, 2.02760005}, //
+
35085 {6.36625671, 2.02755809}, //
+
35086 {6.36657143, 2.0274322}, //
+
35087 {6.36684465, 2.02722216}, //
+
35088 {6.36707544, 2.02692842}, //
+
35089 {6.36726427, 2.02655053}, //
+
35090 {6.36741114, 2.02608895}, //
+
35091 {6.36751604, 2.02554321}, //
+
35092 {6.36757898, 2.02491355}, //
+
35093 {6.36759996, 2.02419996}, //
+
35094 {6.367558, 2.02340317}, //
+
35095 {6.36743212, 2.0225234}, //
+
35096 {6.36722231, 2.02156115}, //
+
35097 {6.36692858, 2.02051616}, //
+
35098 {6.36655045, 2.0193882}, //
+
35099 {6.36608887, 2.01817775}, //
+
35100 {6.36554337, 2.01688457}, //
+
35101 {6.36491346, 2.01550865}, //
+
35102 {6.36420012, 2.01405001}, //
+
35103 {6.36219501, 2.00763822}, //
+
35104 {6.36069155, 2.00198078}, //
+
35105 {6.35968876, 1.99707782}, //
+
35106 {6.3591876, 1.99292898}, //
+
35107 {6.3591876, 1.98953462}, //
+
35108 {6.35968876, 1.98689449}, //
+
35109 {6.36069155, 1.9850086}, //
+
35110 {6.36219501, 1.98387718}, //
+
35111 {6.36420012, 1.9835}, //
+
35112 {6.3656683, 1.98345804}, //
+
35113 {6.36705208, 1.98333216}, //
+
35114 {6.36835003, 1.98312223}, //
+
35115 {6.3695631, 1.98282838}, //
+
35116 {6.37069082, 1.9824506}, //
+
35117 {6.37173319, 1.98198891}, //
+
35118 {6.37269068, 1.98144317}, //
+
35119 {6.37356281, 1.98081362}, //
+
35120 {6.37435007, 1.98010004}, //
+
35121 {6.37506342, 1.97927094}, //
+
35122 {6.37569332, 1.9782728}, //
+
35123 {6.37623882, 1.9771055}, //
+
35124 {6.3767004, 1.97576916}, //
+
35125 {6.37707853, 1.97426355}, //
+
35126 {6.37737226, 1.9725889}, //
+
35127 {6.37758207, 1.97074509}, //
+
35128 {6.37770796, 1.96873212}, //
+
35129 {6.37774992, 1.96654999}, //
+
35130 {6.37783384, 1.96581542}, //
+
35131 {6.37808561, 1.96512282}, //
+
35132 {6.37850571, 1.96447217}, //
+
35133 {6.37909317, 1.96386361}, //
+
35134 {6.37984896, 1.96329689}, //
+
35135 {6.38077211, 1.96277225}, //
+
35136 {6.38186359, 1.96228945}, //
+
35137 {6.38312292, 1.96184874}, //
+
35138 {6.38455009, 1.96144998}, //
+
35139 {6.38601875, 1.96110368}, //
+
35140 {6.38740206, 1.96079814}, //
+
35141 {6.38870001, 1.96053338}, //
+
35142 {6.38991308, 1.96030927}, //
+
35143 {6.3910408, 1.96012592}, //
+
35144 {6.39208317, 1.95998335}, //
+
35145 {6.39304066, 1.95988142}, //
+
35146 {6.39391279, 1.95982039}, //
+
35147 {6.39470005, 1.9598}, //
+
35148 {6.39545536, 1.95908642}, //
+
35149 {6.39621115, 1.95845675}, //
+
35150 {6.39696646, 1.95791113}, //
+
35151 {6.39772224, 1.95744944}, //
+
35152 {6.39847755, 1.95707166}, //
+
35153 {6.39923334, 1.95677781}, //
+
35154 {6.39998865, 1.95656788}, //
+
35155 {6.40074444, 1.956442}, //
+
35156 {6.40150023, 1.95640004}, //
+
35157 {6.40221357, 1.95635808}, //
+
35158 {6.402843, 1.95623207}, //
+
35159 {6.40338898, 1.95602226}, //
+
35160 {6.40385056, 1.95572841}, //
+
35161 {6.40422821, 1.95535064}, //
+
35162 {6.40452242, 1.95488894}, //
+
35163 {6.40473223, 1.9543432}, //
+
35164 {6.40485811, 1.95371354}, //
+
35165 {6.40490007, 1.95299995}, //
+
35166 {6.40492105, 1.95226538}, //
+
35167 {6.404984, 1.9515729}, //
+
35168 {6.4050889, 1.95092225}, //
+
35169 {6.40523577, 1.95031357}, //
+
35170 {6.40542459, 1.94974697}, //
+
35171 {6.40565538, 1.94922221}, //
+
35172 {6.40592861, 1.94873953}, //
+
35173 {6.40624332, 1.94829881}, //
+
35174 {6.4066, 1.94790006}, //
+
35175 {6.40699816, 1.94752216}, //
+
35176 {6.40743685, 1.94714439}, //
+
35177 {6.40791655, 1.94676661}, //
+
35178 {6.40843725, 1.94638884}, //
+
35179 {6.40899801, 1.94601107}, //
+
35180 {6.40959978, 1.94563329}, //
+
35181 {6.41024256, 1.94525552}, //
+
35182 {6.41092587, 1.94487774}, //
+
35183 {6.41165018, 1.94449997}, //
+
35184 {6.41240549, 1.94415367}, //
+
35185 {6.41316128, 1.94384813}, //
+
35186 {6.41391659, 1.94358337}, //
+
35187 {6.41467237, 1.94335926}, //
+
35188 {6.41542768, 1.94317591}, //
+
35189 {6.41618347, 1.94303334}, //
+
35190 {6.41693878, 1.94293153}, //
+
35191 {6.41769457, 1.94287038}, //
+
35192 {6.41844988, 1.94284999}, //
+
35193 {6.42694998, 1.94284999}, //
+
35194 {6.42730665, 1.94282901}, //
+
35195 {6.42762184, 1.94276607}, //
+
35196 {6.42789459, 1.94266117}, //
+
35197 {6.42812538, 1.94251418}, //
+
35198 {6.42831421, 1.94232535}, //
+
35199 {6.42846107, 1.94209445}, //
+
35200 {6.42856598, 1.94182158}, //
+
35201 {6.42862892, 1.94150674}, //
+
35202 {6.4286499, 1.94114995}, //
+
35203 {6.42867041, 1.94079316}, //
+
35204 {6.42873144, 1.94047844}, //
+
35205 {6.42883348, 1.94020557}, //
+
35206 {6.42897606, 1.93997467}, //
+
35207 {6.42915916, 1.93978584}, //
+
35208 {6.42938328, 1.93963885}, //
+
35209 {6.42964792, 1.93953395}, //
+
35210 {6.42995358, 1.93947101}, //
+
35211 {6.43030024, 1.93945003}, //
+
35212 {6.43113947, 1.93945003}, //
+
35213 {6.43162203, 1.93945003}, //
+
35214 {6.43332243, 1.93945003}, //
+
35215 {6.43397284, 1.93945003}, //
+
35216 {6.43691111, 1.93945003}, //
+
35217 {6.43766689, 1.93945003}, //
+
35218 {6.4399333, 1.93945003}, //
+
35219 {6.4414444, 1.93945003}, //
+
35220 {6.44370842, 1.93945003}, //
+
35221 {6.44446135, 1.93945003}, //
+
35222 {6.44671106, 1.93945003}, //
+
35223 {6.44745874, 1.93945003}, //
+
35224 {6.44820499, 1.93945003}, //
+
35225 {6.44894981, 1.93945003}, //
+
35226 {6.45205545, 1.9402889}, //
+
35227 {6.45532799, 1.94129443}, //
+
35228 {6.45876646, 1.94246662}, //
+
35229 {6.4623723, 1.94380558}, //
+
35230 {6.46614456, 1.94531107}, //
+
35231 {6.47008324, 1.94698334}, //
+
35232 {6.4741888, 1.94882226}, //
+
35233 {6.47846127, 1.95082784}, //
+
35234 {6.48290014, 1.95299995}, //
+
35235 {6.48586893, 1.95446849}, //
+
35236 {6.48875427, 1.95585179}, //
+
35237 {6.49155569, 1.95714998}, //
+
35238 {6.49427271, 1.95836294}, //
+
35239 {6.49690628, 1.95949078}, //
+
35240 {6.49945545, 1.96053338}, //
+
35241 {6.50192118, 1.96149075}, //
+
35242 {6.5043025, 1.962363}, //
+
35243 {6.5065999, 1.96315002}, //
+
35244 {6.5087409, 1.96373832}, //
+
35245 {6.51062965, 1.963992}, //
+
35246 {6.51226664, 1.96391106}, //
+
35247 {6.51365185, 1.96349573}, //
+
35248 {6.51478529, 1.96274567}, //
+
35249 {6.51566648, 1.9616611}, //
+
35250 {6.51629639, 1.96024203}, //
+
35251 {6.51667404, 1.95848823}, //
+
35252 {6.51679993, 1.95640004}, //
+
35253 {6.51654863, 1.95254934}, //
+
35254 {6.51579523, 1.94853091}, //
+
35255 {6.51453876, 1.9443444}, //
+
35256 {6.51278019, 1.93999016}, //
+
35257 {6.51051903, 1.93546796}, //
+
35258 {6.50775576, 1.93077779}, //
+
35259 {6.50448942, 1.92591977}, //
+
35260 {6.50072098, 1.92089379}, //
+
35261 {6.49644995, 1.91569996}, //
+
35262 {6.49339628, 1.91117775}, //
+
35263 {6.49025726, 1.90665555}, //
+
35264 {6.48703337, 1.90213335}, //
+
35265 {6.48372412, 1.89761114}, //
+
35266 {6.48032951, 1.89308894}, //
+
35267 {6.47685003, 1.88856661}, //
+
35268 {6.4732852, 1.88404441}, //
+
35269 {6.46963501, 1.8795222}, //
+
35270 {6.46589994, 1.875}, //
+
35271 {6.46439934, 1.87205124}, //
+
35272 {6.4628973, 1.86922717}, //
+
35273 {6.46139431, 1.8665278}, //
+
35274 {6.45988989, 1.86395311}, //
+
35275 {6.45838451, 1.86150312}, //
+
35276 {6.45687771, 1.85917783}, //
+
35277 {6.45536995, 1.85697711}, //
+
35278 {6.45386028, 1.85490119}, //
+
35279 {6.45235014, 1.85294998}, //
+
35280 {6.45084953, 1.85113454}, //
+
35281 {6.4493475, 1.84944379}, //
+
35282 {6.44784451, 1.84787774}, //
+
35283 {6.44634008, 1.84643638}, //
+
35284 {6.44483471, 1.84511971}, //
+
35285 {6.4433279, 1.84392774}, //
+
35286 {6.44181967, 1.84286046}, //
+
35287 {6.44031048, 1.84191787}, //
+
35288 {6.43879986, 1.84109998}, //
+
35289 {6.43808651, 1.84030306}, //
+
35290 {6.43745661, 1.83942342}, //
+
35291 {6.43691111, 1.83846116}, //
+
35292 {6.43644953, 1.83741605}, //
+
35293 {6.4360714, 1.83628821}, //
+
35294 {6.43577766, 1.83507776}, //
+
35295 {6.43556786, 1.83378458}, //
+
35296 {6.43544197, 1.83240867}, //
+
35297 {6.43540001, 1.83095002}, //
+
35298 {6.43540001, 1.82935488}, //
+
35299 {6.43540001, 1.82849443}, //
+
35300 {6.43540001, 1.82759202}, //
+
35301 {6.43540001, 1.82463276}, //
+
35302 {6.43540001, 1.82356238}, //
+
35303 {6.43540001, 1.82245004}, //
+
35304 {6.43540001, 1.82028699}, //
+
35305 {6.43540001, 1.81926668}, //
+
35306 {6.43540001, 1.81828701}, //
+
35307 {6.43540001, 1.81559265}, //
+
35308 {6.43540001, 1.81477594}, //
+
35309 {6.43540001, 1.81400001}, //
+
35310 {6.43540001, 1.81114566}, //
+
35311 {6.43540001, 1.80984449}, //
+
35312 {6.43540001, 1.80862713}, //
+
35313 {6.43540001, 1.80547905}, //
+
35314 {6.43540001, 1.8045975}, //
+
35315 {6.43540001, 1.80379999}, //
+
35316 {6.43537903, 1.80377901}, //
+
35317 {6.43531609, 1.80371606}, //
+
35318 {6.43521118, 1.80361116}, //
+
35319 {6.43286276, 1.80126297}, //
+
35320 {6.43238354, 1.80078328}, //
+
35321 {6.43130207, 1.79970181}, //
+
35322 {6.43005753, 1.79845738}, //
+
35323 {6.4286499, 1.79705}, //
+
35324 {6.42791557, 1.79700804}, //
+
35325 {6.42722273, 1.79688215}, //
+
35326 {6.42657232, 1.79667222}, //
+
35327 {6.4259634, 1.79637837}, //
+
35328 {6.42539692, 1.7960006}, //
+
35329 {6.4248724, 1.7955389}, //
+
35330 {6.42438936, 1.79499316}, //
+
35331 {6.42394876, 1.79436362}, //
+
35332 {6.42355013, 1.79365003}, //
+
35333 {6.42319298, 1.79291546}, //
+
35334 {6.42287827, 1.79222286}, //
+
35335 {6.42260551, 1.79157221}, //
+
35336 {6.42237473, 1.79096353}, //
+
35337 {6.4221859, 1.79039693}, //
+
35338 {6.42203903, 1.78987217}, //
+
35339 {6.42193413, 1.78938949}, //
+
35340 {6.42187119, 1.78894877}, //
+
35341 {6.4218502, 1.78855002}, //
+
35342 {6.42193413, 1.78819323}, //
+
35343 {6.4221859, 1.78787839}, //
+
35344 {6.42260551, 1.78760552}, //
+
35345 {6.42319298, 1.78737473}, //
+
35346 {6.42394876, 1.78718579}, //
+
35347 {6.4248724, 1.78703892}, //
+
35348 {6.4259634, 1.7869339}, //
+
35349 {6.42722273, 1.78687096}, //
+
35350 {6.4286499, 1.78684998}, //
+
35351 {6.43019247, 1.78613639}, //
+
35352 {6.43182039, 1.78550684}, //
+
35353 {6.43353319, 1.7849611}, //
+
35354 {6.43533134, 1.78449941}, //
+
35355 {6.43721485, 1.78412163}, //
+
35356 {6.43918324, 1.78382778}, //
+
35357 {6.44123697, 1.78361785}, //
+
35358 {6.44337606, 1.78349197}, //
+
35359 {6.44560003, 1.78345001}, //
+
35360 {6.44779253, 1.78272593}, //
+
35361 {6.44985914, 1.78204262}, //
+
35362 {6.45179987, 1.78139997}, //
+
35363 {6.45361471, 1.7807982}, //
+
35364 {6.45530367, 1.78023708}, //
+
35365 {6.45686674, 1.77971661}, //
+
35366 {6.45830393, 1.77923703}, //
+
35367 {6.45961475, 1.7787981}, //
+
35368 {6.46080017, 1.77839994}, //
+
35369 {6.46182919, 1.77804315}, //
+
35370 {6.46264935, 1.77772844}, //
+
35371 {6.46326113, 1.77745557}, //
+
35372 {6.46366405, 1.77722466}, //
+
35373 {6.4638586, 1.77703583}, //
+
35374 {6.4638443, 1.77688885}, //
+
35375 {6.46362162, 1.77678394}, //
+
35376 {6.46319008, 1.776721}, //
+
35377 {6.46255016, 1.77670002}, //
+
35378 {6.46110201, 1.77594447}, //
+
35379 {6.45977974, 1.77518892}, //
+
35380 {6.45858335, 1.77443337}, //
+
35381 {6.45751286, 1.77367783}, //
+
35382 {6.45656872, 1.77292228}, //
+
35383 {6.45574999, 1.77216661}, //
+
35384 {6.45505762, 1.77141106}, //
+
35385 {6.45449066, 1.77065551}, //
+
35386 {6.45405006, 1.76989996}, //
+
35387 {6.45369339, 1.76914442}, //
+
35388 {6.4533782, 1.76838887}, //
+
35389 {6.45310545, 1.76763332}, //
+
35390 {6.45287466, 1.76687777}, //
+
35391 {6.45268583, 1.76612222}, //
+
35392 {6.45253897, 1.76536667}, //
+
35393 {6.45243406, 1.76461112}, //
+
35394 {6.45237112, 1.76385558}, //
+
35395 {6.45235014, 1.76310003}, //
+
35396 {6.4523921, 1.76235497}, //
+
35397 {6.45251799, 1.7616086}, //
+
35398 {6.45272779, 1.76086116}, //
+
35399 {6.45302153, 1.7601124}, //
+
35400 {6.45339918, 1.75936234}, //
+
35401 {6.45386124, 1.75861108}, //
+
35402 {6.45440674, 1.75785863}, //
+
35403 {6.45503664, 1.75710499}, //
+
35404 {6.45574999, 1.75635004}, //
+
35405 {6.45648479, 1.75557351}, //
+
35406 {6.45717716, 1.7547549}, //
+
35407 {6.45782757, 1.75389445}, //
+
35408 {6.45843649, 1.75299203}, //
+
35409 {6.45900297, 1.75204754}, //
+
35410 {6.45952797, 1.75106108}, //
+
35411 {6.46001053, 1.75003266}, //
+
35412 {6.46045113, 1.7489624}, //
+
35413 {6.46084976, 1.74784994}, //
+
35414 {6.46118593, 1.74676919}, //
+
35415 {6.4614377, 1.74577093}, //
+
35416 {6.46160555, 1.74485552}, //
+
35417 {6.46168947, 1.74402285}, //
+
35418 {6.46168947, 1.74327278}, //
+
35419 {6.46160555, 1.74260557}, //
+
35420 {6.4614377, 1.74202096}, //
+
35421 {6.46118593, 1.74151909}, //
+
35422 {6.46084976, 1.74109995}, //
+
35423 {6.46040916, 1.74074316}, //
+
35424 {6.45984268, 1.74042845}, //
+
35425 {6.45914984, 1.74015558}, //
+
35426 {6.45833158, 1.73992467}, //
+
35427 {6.45738697, 1.73973584}, //
+
35428 {6.45631647, 1.73958886}, //
+
35429 {6.45512056, 1.73948395}, //
+
35430 {6.45379829, 1.73942101}, //
+
35431 {6.45235014, 1.73940003}, //
+
35432 {6.45159483, 1.73940003}, //
+
35433 {6.45084143, 1.73940003}, //
+
35434 {6.45008898, 1.73940003}, //
+
35435 {6.44709158, 1.73940003}, //
+
35436 {6.44634485, 1.73940003}, //
+
35437 {6.44560003, 1.73940003}, //
+
35438 {6.4441309, 1.73937905}, //
+
35439 {6.44274569, 1.73931611}, //
+
35440 {6.4414444, 1.73921108}, //
+
35441 {6.44022703, 1.73906422}, //
+
35442 {6.43909359, 1.73887527}, //
+
35443 {6.43804455, 1.73864448}, //
+
35444 {6.43707895, 1.73837161}, //
+
35445 {6.43619776, 1.73805678}, //
+
35446 {6.43540001, 1.73769999}, //
+
35447 {6.4346652, 1.73734319}, //
+
35448 {6.43397284, 1.73702836}, //
+
35449 {6.43332243, 1.73675561}, //
+
35450 {6.43271351, 1.7365247}, //
+
35451 {6.43214703, 1.73633575}, //
+
35452 {6.43162203, 1.73618889}, //
+
35453 {6.43113947, 1.73608398}, //
+
35454 {6.43069887, 1.73602104}, //
+
35455 {6.43030024, 1.73599994}, //
+
35456 {6.43003702, 1.73591602}, //
+
35457 {6.42998171, 1.73566425}, //
+
35458 {6.43013334, 1.73524439}, //
+
35459 {6.4304924, 1.73465681}, //
+
35460 {6.43105936, 1.73390126}, //
+
35461 {6.43183327, 1.73297775}, //
+
35462 {6.4328146, 1.73188639}, //
+
35463 {6.43400383, 1.73062718}, //
+
35464 {6.43540001, 1.72920001}, //
+
35465 {6.437603, 1.72841299}, //
+
35466 {6.43967915, 1.72754073}, //
+
35467 {6.44162798, 1.72658336}, //
+
35468 {6.4434495, 1.72554076}, //
+
35469 {6.4451437, 1.72441292}, //
+
35470 {6.44671106, 1.72319996}, //
+
35471 {6.44815111, 1.72190189}, //
+
35472 {6.44946432, 1.72051847}, //
+
35473 {6.45065022, 1.71905005}, //
+
35474 {6.45174122, 1.71758091}, //
+
35475 {6.45274878, 1.7161957}, //
+
35476 {6.45367241, 1.71489441}, //
+
35477 {6.45451164, 1.71367717}, //
+
35478 {6.45526743, 1.71254385}, //
+
35479 {6.45593882, 1.71149445}, //
+
35480 {6.45652676, 1.71052897}, //
+
35481 {6.4570303, 1.70964754}, //
+
35482 {6.45744991, 1.70885003}, //
+
35483 {6.45896101, 1.70587218}, //
+
35484 {6.45914984, 1.70550001}, //
+
35485 {6.45841551, 1.70547903}, //
+
35486 {6.45772266, 1.70541608}, //
+
35487 {6.45707226, 1.70531106}, //
+
35488 {6.45646381, 1.70516419}, //
+
35489 {6.45589685, 1.70497537}, //
+
35490 {6.45537233, 1.70474446}, //
+
35491 {6.4548893, 1.70447159}, //
+
35492 {6.4544487, 1.70415676}, //
+
35493 {6.45405006, 1.70379996}, //
+
35494 {6.45365143, 1.70342219}, //
+
35495 {6.45321035, 1.70304441}, //
+
35496 {6.45272779, 1.70266664}, //
+
35497 {6.45220327, 1.70228887}, //
+
35498 {6.45163631, 1.70191109}, //
+
35499 {6.45102787, 1.70153332}, //
+
35500 {6.45037699, 1.70115554}, //
+
35501 {6.44968462, 1.70077777}, //
+
35502 {6.44894981, 1.70039999}, //
+
35503 {6.44824696, 1.7000432}, //
+
35504 {6.44708872, 1.6994555}, //
+
35505 {6.44663382, 1.69922471}, //
+
35506 {6.44626188, 1.69903576}, //
+
35507 {6.44597244, 1.6988889}, //
+
35508 {6.4457655, 1.69878399}, //
+
35509 {6.44564152, 1.69872093}, //
+
35510 {6.44560003, 1.69869995}, //
+
35511 {6.44564152, 1.69865799}, //
+
35512 {6.44663382, 1.69765067}, //
+
35513 {6.44894981, 1.69529998}, //
+
35514 {6.44897079, 1.695279}, //
+
35515 {6.44903374, 1.69521606}, //
+
35516 {6.45065022, 1.69360006}, //
+
35517 {6.45098591, 1.69322217}, //
+
35518 {6.45123768, 1.69284439}, //
+
35519 {6.45140553, 1.69246662}, //
+
35520 {6.45148945, 1.69208884}, //
+
35521 {6.45148945, 1.69171107}, //
+
35522 {6.45140553, 1.69133329}, //
+
35523 {6.45123768, 1.69095552}, //
+
35524 {6.45098591, 1.69057775}, //
+
35525 {6.45065022, 1.69019997}, //
+
35526 {6.45029306, 1.68985367}, //
+
35527 {6.44997835, 1.68954813}, //
+
35528 {6.44947481, 1.68905926}, //
+
35529 {6.44894981, 1.68855}, //
+
35530 {6.44824696, 1.68852901}, //
+
35531 {6.44762659, 1.68846607}, //
+
35532 {6.44708872, 1.68836117}, //
+
35533 {6.44663382, 1.68821418}, //
+
35534 {6.44626188, 1.68802536}, //
+
35535 {6.44597244, 1.68779445}, //
+
35536 {6.4457655, 1.68752158}, //
+
35537 {6.44564152, 1.68720675}, //
+
35538 {6.44560003, 1.68684995}, //
+
35539 {6.44560003, 1.6864512}, //
+
35540 {6.44560003, 1.68601048}, //
+
35541 {6.44560003, 1.68175006}, //
+
35542 {6.44291353, 1.68175006}, //
+
35543 {6.44220018, 1.68175006}, //
+
35544 {6.4421792, 1.68172896}, //
+
35545 {6.44211626, 1.68166602}, //
+
35546 {6.44201088, 1.68156111}, //
+
35547 {6.44186401, 1.68141425}, //
+
35548 {6.44167519, 1.6812253}, //
+
35549 {6.44049978, 1.68005002}, //
+
35550 {6.44014311, 1.67969322}, //
+
35551 {6.4398284, 1.67937839}, //
+
35552 {6.43955564, 1.67910552}, //
+
35553 {6.43932486, 1.67887473}, //
+
35554 {6.43898869, 1.67853892}, //
+
35555 {6.43888378, 1.6784339}, //
+
35556 {6.43882084, 1.67837095}, //
+
35557 {6.43879986, 1.67834997}, //
+
35558 {6.44049978, 1.67665005}, //
+
35559 {6.4409399, 1.67625189}, //
+
35560 {6.44150496, 1.67581296}, //
+
35561 {6.44219446, 1.67533338}, //
+
35562 {6.44300842, 1.67481291}, //
+
35563 {6.44394732, 1.67425179}, //
+
35564 {6.44501114, 1.67365003}, //
+
35565 {6.44619942, 1.67300737}, //
+
35566 {6.44751215, 1.67232406}, //
+
35567 {6.44894981, 1.67159998}, //
+
35568 {6.45121622, 1.67080247}, //
+
35569 {6.45348072, 1.66992104}, //
+
35570 {6.45574427, 1.66895556}, //
+
35571 {6.45800686, 1.66790617}, //
+
35572 {6.46026802, 1.66677284}, //
+
35573 {6.46252775, 1.6655556}, //
+
35574 {6.46478653, 1.66425431}, //
+
35575 {6.46704388, 1.6628691}, //
+
35576 {6.46929979, 1.66139996}, //
+
35577 {6.47146177, 1.65994132}, //
+
35578 {6.47341347, 1.6585654}, //
+
35579 {6.47515535, 1.65727222}, //
+
35580 {6.47668743, 1.65606177}, //
+
35581 {6.4780097, 1.65493393}, //
+
35582 {6.47912216, 1.65388894}, //
+
35583 {6.48002481, 1.65292656}, //
+
35584 {6.48071718, 1.65204692}, //
+
35585 {6.48120022, 1.65125}, //
+
35586 {6.48147297, 1.65053642}, //
+
35587 {6.48153591, 1.64990675}, //
+
35588 {6.48138905, 1.64936113}, //
+
35589 {6.48103189, 1.64889944}, //
+
35590 {6.48046541, 1.64852166}, //
+
35591 {6.47968912, 1.64822781}, //
+
35592 {6.47870255, 1.64801788}, //
+
35593 {6.47750616, 1.647892}, //
+
35594 {6.47609997, 1.64785004}, //
+
35595 {6.473876, 1.64856362}, //
+
35596 {6.47173691, 1.64919317}, //
+
35597 {6.46968317, 1.64973891}, //
+
35598 {6.46771479, 1.65020061}, //
+
35599 {6.46583128, 1.65057838}, //
+
35600 {6.46403313, 1.65087223}, //
+
35601 {6.46232033, 1.65108216}, //
+
35602 {6.46069241, 1.65120804}, //
+
35603 {6.45914984, 1.65125}, //
+
35604 {6.45615911, 1.65202594}, //
+
35605 {6.4532094, 1.65284264}, //
+
35606 {6.45030022, 1.65369999}, //
+
35607 {6.44743156, 1.65459812}, //
+
35608 {6.44460392, 1.65553701}, //
+
35609 {6.44181681, 1.65651667}, //
+
35610 {6.43907022, 1.65753698}, //
+
35611 {6.43636465, 1.65859818}, //
+
35612 {6.43370008, 1.65970004}, //
+
35613 {6.43112898, 1.66085434}, //
+
35614 {6.4286828, 1.6620506}, //
+
35615 {6.42636108, 1.66328883}, //
+
35616 {6.4241643, 1.66456914}, //
+
35617 {6.42209196, 1.66589141}, //
+
35618 {6.42014456, 1.66725552}, //
+
35619 {6.41832161, 1.66866171}, //
+
35620 {6.41662359, 1.67010987}, //
+
35621 {6.41505003, 1.67159998}, //
+
35622 {6.41425323, 1.672387}, //
+
35623 {6.41337347, 1.67325926}, //
+
35624 {6.41241121, 1.67421663}, //
+
35625 {6.41136599, 1.67525923}, //
+
35626 {6.41023827, 1.67638707}, //
+
35627 {6.40902758, 1.67760003}, //
+
35628 {6.40773439, 1.6788981}, //
+
35629 {6.40635872, 1.68028152}, //
+
35630 {6.40490007, 1.68175006}, //
+
35631 {6.4025712, 1.68404758}, //
+
35632 {6.4001174, 1.68642902}, //
+
35633 {6.39753866, 1.68889439}, //
+
35634 {6.39483595, 1.6914438}, //
+
35635 {6.39200783, 1.69407713}, //
+
35636 {6.38905573, 1.69679439}, //
+
35637 {6.38597822, 1.69959569}, //
+
35638 {6.38277674, 1.70248091}, //
+
35639 {6.37944984, 1.70545006}, //
+
35640 {6.37599802, 1.70834625}, //
+
35641 {6.37242031, 1.71099079}, //
+
35642 {6.36871672, 1.71338332}, //
+
35643 {6.36488724, 1.71552408}, //
+
35644 {6.3609314, 1.71741295}, //
+
35645 {6.35685015, 1.71905005}, //
+
35646 {6.35264254, 1.72043514}, //
+
35647 {6.34830904, 1.72156847}, //
+
35648 {6.34385014, 1.72245002}, //
+
35649 {6.34075499, 1.72318399}, //
+
35650 {6.33749199, 1.72387469}, //
+
35651 {6.33406115, 1.72452223}, //
+
35652 {6.33046246, 1.7251265}, //
+
35653 {6.32669544, 1.72568762}, //
+
35654 {6.32276106, 1.72620559}, //
+
35655 {6.31865883, 1.72668028}, //
+
35656 {6.31438828, 1.7271117}, //
+
35657 {6.30994987, 1.72749996}, //
+
35658 {6.30553293, 1.72785676}, //
+
35659 {6.30132532, 1.72817159}, //
+
35660 {6.297328, 1.72844446}, //
+
35661 {6.29354, 1.72867537}, //
+
35662 {6.28996229, 1.72886419}, //
+
35663 {6.28659439, 1.72901106}, //
+
35664 {6.2834363, 1.72911608}, //
+
35665 {6.28048849, 1.72917902}, //
+
35666 {6.27775002, 1.72920001}, //
+
35667 {6.27526283, 1.72920001}, //
+
35668 {6.26955748, 1.72920001}, //
+
35669 {6.26721668, 1.72920001}, //
+
35670 {6.26648521, 1.72920001}, //
+
35671 {6.26590014, 1.72920001}, //
+
35672 {6.26604652, 1.72924197}, //
+
35673 {6.26648521, 1.72936785}, //
+
35674 {6.26721668, 1.72957778}, //
+
35675 {6.26824093, 1.72987163}, //
+
35676 {6.26955748, 1.7302494}, //
+
35677 {6.2711668, 1.7307111}, //
+
35678 {6.27306843, 1.73125684}, //
+
35679 {6.27526283, 1.73188639}, //
+
35680 {6.27775002, 1.73259997}, //
+
35681 {6.28048849, 1.73333454}, //
+
35682 {6.2834363, 1.73402715}, //
+
35683 {6.28659439, 1.73467779}, //
+
35684 {6.28996229, 1.73528647}, //
+
35685 {6.29354, 1.73585308}, //
+
35686 {6.297328, 1.73637784}, //
+
35687 {6.30132532, 1.73686051}, //
+
35688 {6.30553293, 1.73730123}, //
+
35689 {6.30994987, 1.73769999}, //
+
35690 {6.3144722, 1.73797286}, //
+
35691 {6.31899452, 1.7380358}, //
+
35692 {6.32351685, 1.73788893}, //
+
35693 {6.32803869, 1.73753214}, //
+
35694 {6.33256102, 1.73696542}, //
+
35695 {6.33708334, 1.73618889}, //
+
35696 {6.34160566, 1.73520243}, //
+
35697 {6.34612799, 1.73400617}, //
+
35698 {6.35064983, 1.73259997}, //
+
35699 {6.35713434, 1.73053205}, //
+
35700 {6.36303282, 1.72883952}, //
+
35701 {6.36834431, 1.72752225}, //
+
35702 {6.37306976, 1.72658026}, //
+
35703 {6.37720871, 1.72601354}, //
+
35704 {6.38076115, 1.72582221}, //
+
35705 {6.38372707, 1.72600615}, //
+
35706 {6.38610697, 1.72656548}, //
+
35707 {6.38789988, 1.72749996}, //
+
35708 {6.38899279, 1.72865427}, //
+
35709 {6.38924837, 1.72985065}, //
+
35710 {6.38866663, 1.73108888}, //
+
35711 {6.38724804, 1.73236918}, //
+
35712 {6.3849926, 1.73369133}, //
+
35713 {6.38189983, 1.73505557}, //
+
35714 {6.37797022, 1.73646176}, //
+
35715 {6.37320375, 1.73790991}, //
+
35716 {6.36759996, 1.73940003}, //
+
35717 {6.36255264, 1.74092162}, //
+
35718 {6.35796547, 1.74248648}, //
+
35719 {6.35383892, 1.74409449}, //
+
35720 {6.350173, 1.74574566}, //
+
35721 {6.34696722, 1.7474401}, //
+
35722 {6.34422207, 1.74917781}, //
+
35723 {6.34193754, 1.75095868}, //
+
35724 {6.34011364, 1.7527827}, //
+
35725 {6.33874989, 1.75465}, //
+
35726 {6.33781528, 1.75655925}, //
+
35727 {6.33725595, 1.75850928}, //
+
35728 {6.33707237, 1.76049995}, //
+
35729 {6.33726358, 1.76253152}, //
+
35730 {6.33783007, 1.76460373}, //
+
35731 {6.3387723, 1.76671672}, //
+
35732 {6.34008932, 1.76887035}, //
+
35733 {6.34178209, 1.77106476}, //
+
35734 {6.34385014, 1.77330005}, //
+
35735 {6.34531832, 1.77478945}, //
+
35736 {6.34670162, 1.77623582}, //
+
35737 {6.34800005, 1.77763891}, //
+
35738 {6.34921312, 1.77899873}, //
+
35739 {6.35034084, 1.7803154}, //
+
35740 {6.35138321, 1.78158891}, //
+
35741 {6.3523407, 1.78281915}, //
+
35742 {6.35321283, 1.78400612}, //
+
35743 {6.35400009, 1.78515005}, //
+
35744 {6.35471344, 1.78624141}, //
+
35745 {6.35534334, 1.78724873}, //
+
35746 {6.35588884, 1.78817225}, //
+
35747 {6.35635042, 1.78901172}, //
+
35748 {6.35672855, 1.78976727}, //
+
35749 {6.35702229, 1.79043889}, //
+
35750 {6.35723209, 1.79102659}, //
+
35751 {6.35735798, 1.79153025}, //
+
35752 {6.35739994, 1.79194999}, //
+
35753 {6.357337, 1.79230678}, //
+
35754 {6.35714817, 1.79262161}, //
+
35755 {6.35683346, 1.79289448}, //
+
35756 {6.35639238, 1.79312527}, //
+
35757 {6.3558259, 1.79331422}, //
+
35758 {6.35513353, 1.79346108}, //
+
35759 {6.3543148, 1.79356611}, //
+
35760 {6.35337019, 1.79362905}, //
+
35761 {6.35230017, 1.79365003}, //
+
35762 {6.35107279, 1.79356611}, //
+
35763 {6.3496356, 1.79331422}, //
+
35764 {6.34798908, 1.79289448}, //
+
35765 {6.34613228, 1.79230678}, //
+
35766 {6.34406567, 1.79155123}, //
+
35767 {6.34178877, 1.79062784}, //
+
35768 {6.33930254, 1.78953648}, //
+
35769 {6.33660603, 1.78827715}, //
+
35770 {6.33370018, 1.78684998}, //
+
35771 {6.32999563, 1.78474069}, //
+
35772 {6.32641602, 1.78292406}, //
+
35773 {6.32296133, 1.78139997}, //
+
35774 {6.3196311, 1.78016853}, //
+
35775 {6.31642532, 1.77922964}, //
+
35776 {6.31334448, 1.77858329}, //
+
35777 {6.31038809, 1.77822959}, //
+
35778 {6.30755663, 1.77816856}, //
+
35779 {6.3048501, 1.77839994}, //
+
35780 {6.30242538, 1.77884007}, //
+
35781 {6.3004179, 1.779405}, //
+
35782 {6.29882765, 1.78009439}, //
+
35783 {6.29765511, 1.78090858}, //
+
35784 {6.29689932, 1.78184748}, //
+
35785 {6.29656124, 1.78291106}, //
+
35786 {6.29663992, 1.78409934}, //
+
35787 {6.29713631, 1.78541231}, //
+
35788 {6.29804993, 1.78684998}, //
+
35789 {6.29937172, 1.78836048}, //
+
35790 {6.30106974, 1.78986979}, //
+
35791 {6.30314445, 1.79137778}, //
+
35792 {6.30559587, 1.79288459}, //
+
35793 {6.30842352, 1.79439008}, //
+
35794 {6.31162786, 1.7958945}, //
+
35795 {6.31520844, 1.79739749}, //
+
35796 {6.31916618, 1.79889941}, //
+
35797 {6.32350016, 1.80040002}, //
+
35798 {6.32777119, 1.80191052}, //
+
35799 {6.33153963, 1.80341971}, //
+
35800 {6.33480549, 1.80492783}, //
+
35801 {6.33756924, 1.80643451}, //
+
35802 {6.3398304, 1.80794013}, //
+
35803 {6.34158897, 1.80944443}, //
+
35804 {6.34284496, 1.81094754}, //
+
35805 {6.34359884, 1.81244934}, //
+
35806 {6.34385014, 1.81394994}, //
+
35807 {6.34370375, 1.81541908}, //
+
35808 {6.34326458, 1.81680429}, //
+
35809 {6.34253311, 1.81810558}, //
+
35810 {6.34150934, 1.81932282}, //
+
35811 {6.34019279, 1.82045615}, //
+
35812 {6.33858347, 1.82150555}, //
+
35813 {6.33668137, 1.82247102}, //
+
35814 {6.33448696, 1.82335246}, //
+
35815 {6.33199978, 1.82414997}, //
+
35816 {6.32934523, 1.82482159}, //
+
35817 {6.3266468, 1.82532525}, //
+
35818 {6.32390547, 1.82566106}, //
+
35819 {6.32112122, 1.82582903}, //
+
35820 {6.31829309, 1.82582903}, //
+
35821 {6.31542206, 1.82566106}, //
+
35822 {6.31250811, 1.82532525}, //
+
35823 {6.30955076, 1.82482159}, //
+
35824 {6.30655003, 1.82414997}, //
+
35825 {6.30427265, 1.82339442}, //
+
35826 {6.30195236, 1.82263887}, //
+
35827 {6.29958868, 1.82188332}, //
+
35828 {6.29718208, 1.82112777}, //
+
35829 {6.29473209, 1.82037222}, //
+
35830 {6.29223871, 1.81961668}, //
+
35831 {6.28970242, 1.81886113}, //
+
35832 {6.28712273, 1.81810558}, //
+
35833 {6.28450012, 1.81735003}, //
+
35834 {6.28192902, 1.81664693}, //
+
35835 {6.27948284, 1.81602657}, //
+
35836 {6.27716112, 1.81548893}, //
+
35837 {6.27496433, 1.81503391}, //
+
35838 {6.272892, 1.81466174}, //
+
35839 {6.2709446, 1.81437218}, //
+
35840 {6.26912165, 1.81416547}, //
+
35841 {6.26742363, 1.81404138}, //
+
35842 {6.26585007, 1.81400001}, //
+
35843 {6.2644124, 1.81400001}, //
+
35844 {6.26191092, 1.81400001}, //
+
35845 {6.26084757, 1.81400001}, //
+
35846 {6.25740004, 1.81400001}, //
+
35847 {6.25716925, 1.81404197}, //
+
35848 {6.25723219, 1.81416786}, //
+
35849 {6.25758886, 1.81437778}, //
+
35850 {6.25823927, 1.81467164}, //
+
35851 {6.25918388, 1.81504941}, //
+
35852 {6.26042223, 1.81551111}, //
+
35853 {6.26195431, 1.81605685}, //
+
35854 {6.26378012, 1.81668639}, //
+
35855 {6.26590014, 1.81739998}, //
+
35856 {6.26970816, 1.81814504}, //
+
35857 {6.27359867, 1.81889141}, //
+
35858 {6.27757215, 1.81963885}, //
+
35859 {6.28162861, 1.8203876}, //
+
35860 {6.28576708, 1.82113767}, //
+
35861 {6.28998899, 1.82188892}, //
+
35862 {6.2942934, 1.82264137}, //
+
35863 {6.29868031, 1.82339501}, //
+
35864 {6.30315018, 1.82414997}, //
+
35865 {6.30834389, 1.82494688}, //
+
35866 {6.31336975, 1.82582653}, //
+
35867 {6.31822777, 1.8267889}, //
+
35868 {6.32291794, 1.82783401}, //
+
35869 {6.32744026, 1.82896173}, //
+
35870 {6.33179426, 1.83017218}, //
+
35871 {6.33598089, 1.83146548}, //
+
35872 {6.3399992, 1.8328414}, //
+
35873 {6.34385014, 1.83430004}, //
+
35874 {6.3474493, 1.83576918}, //
+
35875 {6.35071421, 1.83715427}, //
+
35876 {6.35364437, 1.83845556}, //
+
35877 {6.35624027, 1.8396728}, //
+
35878 {6.35850143, 1.84080613}, //
+
35879 {6.36042786, 1.84185553}, //
+
35880 {6.36201954, 1.842821}, //
+
35881 {6.36327696, 1.84370244}, //
+
35882 {6.36420012, 1.84449995}, //
+
35883 {6.36411619, 1.84601045}, //
+
35884 {6.36386442, 1.84751976}, //
+
35885 {6.36344433, 1.84902775}, //
+
35886 {6.36285686, 1.85053456}, //
+
35887 {6.36210108, 1.85204017}, //
+
35888 {6.36117792, 1.85354447}, //
+
35889 {6.36008644, 1.85504758}, //
+
35890 {6.35882711, 1.85654938}, //
+
35891 {6.35739994, 1.85804999}, //
+
35892 {6.35589933, 1.85951912}, //
+
35893 {6.3543973, 1.86090434}, //
+
35894 {6.35289431, 1.86220551}, //
+
35895 {6.35139036, 1.86342287}, //
+
35896 {6.34988451, 1.86455619}, //
+
35897 {6.3483777, 1.86560559}, //
+
35898 {6.34686995, 1.86657095}, //
+
35899 {6.34536028, 1.8674525}, //
+
35900 {6.34385014, 1.86825001}, //
+
35901 {6.34250689, 1.86825001}, //
+
35902 {6.34196091, 1.86825001}, //
+
35903 {6.34112167, 1.86825001}, //
+
35904 {6.34082794, 1.86825001}, //
+
35905 {6.34061813, 1.86825001}, //
+
35906 {6.34049177, 1.86825001}, //
+
35907 {6.34044981, 1.86825001}, //
+
35908 {6.33904266, 1.86825001}, //
+
35909 {6.33839989, 1.86825001}, //
+
35910 {6.33623695, 1.86825001}, //
+
35911 {6.33579826, 1.86825001}, //
+
35912 {6.3354001, 1.86825001}, //
+
35913 {6.33500147, 1.86822903}, //
+
35914 {6.33456039, 1.86816609}, //
+
35915 {6.33407784, 1.86806107}, //
+
35916 {6.33355331, 1.8679142}, //
+
35917 {6.33298635, 1.86772525}, //
+
35918 {6.33237791, 1.86749446}, //
+
35919 {6.33172703, 1.86722159}, //
+
35920 {6.33103466, 1.86690676}, //
+
35921 {6.33029985, 1.86654997}, //
+
35922 {6.32950306, 1.86615121}, //
+
35923 {6.32862329, 1.8657105}, //
+
35924 {6.32766104, 1.86522782}, //
+
35925 {6.32661629, 1.86470306}, //
+
35926 {6.32548809, 1.86413646}, //
+
35927 {6.32427788, 1.86352777}, //
+
35928 {6.3229847, 1.86287713}, //
+
35929 {6.32160854, 1.86218452}, //
+
35930 {6.3201499, 1.86144996}, //
+
35931 {6.31939459, 1.86142898}, //
+
35932 {6.3186388, 1.86136603}, //
+
35933 {6.31788349, 1.86126113}, //
+
35934 {6.3171277, 1.86111414}, //
+
35935 {6.31637239, 1.86092532}, //
+
35936 {6.31561661, 1.86069441}, //
+
35937 {6.3148613, 1.86042166}, //
+
35938 {6.31410551, 1.86010683}, //
+
35939 {6.3133502, 1.85975003}, //
+
35940 {6.31261539, 1.85939324}, //
+
35941 {6.31192303, 1.85907841}, //
+
35942 {6.31127214, 1.85880554}, //
+
35943 {6.3106637, 1.85857475}, //
+
35944 {6.31009674, 1.8583858}, //
+
35945 {6.30957222, 1.85823894}, //
+
35946 {6.30908966, 1.85813391}, //
+
35947 {6.30864859, 1.85807097}, //
+
35948 {6.30824995, 1.85804999}, //
+
35949 {6.30789328, 1.85807097}, //
+
35950 {6.30757856, 1.85813391}, //
+
35951 {6.30730534, 1.85823894}, //
+
35952 {6.30707455, 1.8583858}, //
+
35953 {6.30688572, 1.85857475}, //
+
35954 {6.30673885, 1.85880554}, //
+
35955 {6.30663395, 1.85907841}, //
+
35956 {6.30657101, 1.85939324}, //
+
35957 {6.30652905, 1.86010683}, //
+
35958 {6.3064661, 1.86042166}, //
+
35959 {6.3063612, 1.86069441}, //
+
35960 {6.30621433, 1.86092532}, //
+
35961 {6.30602551, 1.86111414}, //
+
35962 {6.30579424, 1.86126113}, //
+
35963 {6.30552149, 1.86136603}, //
+
35964 {6.30520678, 1.86142898}, //
+
35965 {6.30449343, 1.86147094}, //
+
35966 {6.30417824, 1.861534}, //
+
35967 {6.30390549, 1.8616389}, //
+
35968 {6.3036747, 1.86178577}, //
+
35969 {6.30348587, 1.86197472}, //
+
35970 {6.303339, 1.86220551}, //
+
35971 {6.3032341, 1.86247838}, //
+
35972 {6.30317116, 1.86279321}, //
+
35973 {6.30315018, 1.86315}, //
+
35974 {6.30315018, 1.86382163}, //
+
35975 {6.30315018, 1.8640945}, //
+
35976 {6.30315018, 1.86485004}, //
+
35977 {6.303339, 1.86503887}, //
+
35978 {6.30348587, 1.86518586}, //
+
35979 {6.3036747, 1.86537468}, //
+
35980 {6.30390549, 1.86560559}, //
+
35981 {6.3048501, 1.86654997}, //
+
35982 {6.30520678, 1.86690676}, //
+
35983 {6.30552149, 1.86722159}, //
+
35984 {6.30602551, 1.86772525}, //
+
35985 {6.30621433, 1.8679142}, //
+
35986 {6.3063612, 1.86806107}, //
+
35987 {6.3064661, 1.86816609}, //
+
35988 {6.30657101, 1.86827099}, //
+
35989 {6.30663395, 1.86833394}, //
+
35990 {6.30673885, 1.86843884}, //
+
35991 {6.30707455, 1.86877465}, //
+
35992 {6.30757856, 1.86927843}, //
+
35993 {6.30789328, 1.86959326}, //
+
35994 {6.30860662, 1.87030685}, //
+
35995 {6.30919456, 1.87089443}, //
+
35996 {6.30976105, 1.87146115}, //
+
35997 {6.30986595, 1.87156606}, //
+
35998 {6.30992889, 1.871629}, //
+
35999 {6.30994987, 1.87164998}, //
+
36000 {6.30892181, 1.87164998}, //
+
36001 {6.30860662, 1.87164998}, //
+
36002 {6.3048501, 1.87164998}, //
+
36003 {6.30436802, 1.87160802}, //
+
36004 {6.30367708, 1.87148213}, //
+
36005 {6.30277777, 1.87127221}, //
+
36006 {6.3016696, 1.87097836}, //
+
36007 {6.30035305, 1.87060058}, //
+
36008 {6.29882765, 1.87013888}, //
+
36009 {6.29709387, 1.86959326}, //
+
36010 {6.29515123, 1.8689636}, //
+
36011 {6.29300022, 1.86825001}, //
+
36012 {6.29148912, 1.86682284}, //
+
36013 {6.28997755, 1.86556363}, //
+
36014 {6.28846645, 1.86447227}, //
+
36015 {6.28695536, 1.86354876}, //
+
36016 {6.28544426, 1.86279321}, //
+
36017 {6.28393316, 1.86220551}, //
+
36018 {6.28242207, 1.86178577}, //
+
36019 {6.28091097, 1.861534}, //
+
36020 {6.27939987, 1.86144996}, //
+
36021 {6.27264977, 1.86144996}, //
+
36022 {6.27256584, 1.861408}, //
+
36023 {6.27231407, 1.86128211}, //
+
36024 {6.27189445, 1.86107218}, //
+
36025 {6.27130699, 1.86077845}, //
+
36026 {6.26962757, 1.85993886}, //
+
36027 {6.26585007, 1.85804999}, //
+
36028 {6.26432848, 1.85729444}, //
+
36029 {6.2627635, 1.85653889}, //
+
36030 {6.26115561, 1.85578334}, //
+
36031 {6.25950432, 1.85502779}, //
+
36032 {6.25780964, 1.85427225}, //
+
36033 {6.25607204, 1.8535167}, //
+
36034 {6.25429153, 1.85276115}, //
+
36035 {6.25246716, 1.8520056}, //
+
36036 {6.25059986, 1.85125005}, //
+
36037 {6.24870062, 1.85048389}, //
+
36038 {6.24675798, 1.8496747}, //
+
36039 {6.24477243, 1.84882224}, //
+
36040 {6.24274302, 1.8479265}, //
+
36041 {6.24067116, 1.84698761}, //
+
36042 {6.23855543, 1.84600556}, //
+
36043 {6.23639679, 1.84498024}, //
+
36044 {6.23419523, 1.84391177}, //
+
36045 {6.23194981, 1.84280002}, //
+
36046 {6.2296524, 1.84172964}, //
+
36047 {6.22727108, 1.84078515}, //
+
36048 {6.22480536, 1.83996665}, //
+
36049 {6.22225618, 1.83927405}, //
+
36050 {6.21962261, 1.83870745}, //
+
36051 {6.21690559, 1.83826661}, //
+
36052 {6.21410418, 1.8379519}, //
+
36053 {6.21121931, 1.83776295}, //
+
36054 {6.20825005, 1.83770001}, //
+
36055 {6.2048502, 1.83770001}, //
+
36056 {6.2048502, 1.83095002}, //
+
36057 {6.20413637, 1.83095002}, //
+
36058 {6.20149183, 1.83095002}, //
+
36059 {6.20144987, 1.83095002}, //
+
36060 {6.20144987, 1.82755005}, //
+
36061 {6.20073652, 1.82755005}, //
+
36062 {6.20010662, 1.82755005}, //
+
36063 {6.19956112, 1.82755005}, //
+
36064 {6.19909954, 1.82755005}, //
+
36065 {6.19872141, 1.82755005}, //
+
36066 {6.19842768, 1.82755005}, //
+
36067 {6.19805002, 1.82755005}, //
+
36068 {6.1973362, 1.82755005}, //
+
36069 });
+
36070 polys.push_back({
+
36071 {6.19805002, 1.82755005}, //
+
36072 {6.19805002, 1.82755005}, //
+
36073 {6.19805002, 1.82755005}, //
+
36074 });
+
36075 polys.push_back({
+
36076 {4.41270542, 2.20805001}, //
+
36077 {4.40822458, 2.20901108}, //
+
36078 {4.40181923, 2.21089435}, //
+
36079 {4.39348888, 2.21370006}, //
+
36080 {4.38323402, 2.21742773}, //
+
36081 {4.37105417, 2.22207785}, //
+
36082 {4.35694981, 2.22764993}, //
+
36083 {4.35543966, 2.22769189}, //
+
36084 {4.35393047, 2.22781801}, //
+
36085 {4.35242224, 2.22802782}, //
+
36086 {4.35091543, 2.22832155}, //
+
36087 {4.34941006, 2.22869945}, //
+
36088 {4.34790564, 2.22916102}, //
+
36089 {4.34640265, 2.22970676}, //
+
36090 {4.34490061, 2.23033643}, //
+
36091 {4.3434, 2.23105001}, //
+
36092 {4.32737017, 2.23979068}, //
+
36093 {4.30941486, 2.24794626}, //
+
36094 {4.28953314, 2.25551677}, //
+
36095 {4.26772594, 2.26250196}, //
+
36096 {4.24399281, 2.26890182}, //
+
36097 {4.21833324, 2.27471662}, //
+
36098 {4.19074821, 2.27994633}, //
+
36099 {4.16123724, 2.28459072}, //
+
36100 {4.12979984, 2.28865004}, //
+
36101 {4.13067102, 2.28940558}, //
+
36102 {4.13179493, 2.29016113}, //
+
36103 {4.13317204, 2.29091668}, //
+
36104 {4.13480234, 2.29167223}, //
+
36105 {4.13668585, 2.29242778}, //
+
36106 {4.13882208, 2.29318333}, //
+
36107 {4.14121151, 2.29393888}, //
+
36108 {4.14385414, 2.29469442}, //
+
36109 {4.14674997, 2.29544997}, //
+
36110 {4.15062094, 2.29624701}, //
+
36111 {4.15470076, 2.29712653}, //
+
36112 {4.15898895, 2.29808879}, //
+
36113 {4.163486, 2.29913402}, //
+
36114 {4.16819143, 2.30026174}, //
+
36115 {4.17310572, 2.30147219}, //
+
36116 {4.17822838, 2.30276537}, //
+
36117 {4.18355989, 2.30414128}, //
+
36118 {4.18909979, 2.30559993}, //
+
36119 {4.1947341, 2.30709004}, //
+
36120 {4.20032454, 2.3085382}, //
+
36121 {4.20587206, 2.30994439}, //
+
36122 {4.21137667, 2.31130862}, //
+
36123 {4.21683788, 2.31263089}, //
+
36124 {4.22225571, 2.3139112}, //
+
36125 {4.22763014, 2.31514931}, //
+
36126 {4.23296165, 2.31634569}, //
+
36127 {4.23824978, 2.31750011}, //
+
36128 {4.24331856, 2.31852841}, //
+
36129 {4.24796867, 2.3193469}, //
+
36130 {4.25220013, 2.31995559}, //
+
36131 {4.25601292, 2.32035422}, //
+
36132 {4.25940752, 2.32054329}, //
+
36133 {4.26238346, 2.32052231}, //
+
36134 {4.26494074, 2.32029128}, //
+
36135 {4.26707983, 2.31985068}, //
+
36136 {4.26879978, 2.31920004}, //
+
36137 {4.27049875, 2.3182981}, //
+
36138 {4.27257299, 2.31710362}, //
+
36139 {4.27502203, 2.31561661}, //
+
36140 {4.27784681, 2.31383705}, //
+
36141 {4.28104687, 2.31176472}, //
+
36142 {4.28462219, 2.30940008}, //
+
36143 {4.28857279, 2.30674267}, //
+
36144 {4.29289865, 2.30379248}, //
+
36145 {4.29759979, 2.30054998}, //
+
36146 {4.30254126, 2.29709816}, //
+
36147 {4.30756521, 2.29352045}, //
+
36148 {4.31267214, 2.28981662}, //
+
36149 {4.31786156, 2.28598714}, //
+
36150 {4.32313395, 2.28203154}, //
+
36151 {4.32848883, 2.27795005}, //
+
36152 {4.33392668, 2.27374268}, //
+
36153 {4.33944702, 2.26940918}, //
+
36154 {4.34504986, 2.26495004}, //
+
36155 {4.35064268, 2.26049066}, //
+
36156 {4.35610914, 2.2561574}, //
+
36157 {4.3614502, 2.25195003}, //
+
36158 {4.36666489, 2.24786854}, //
+
36159 {4.37175369, 2.24391294}, //
+
36160 {4.37671661, 2.24008322}, //
+
36161 {4.38155365, 2.23637962}, //
+
36162 {4.3862648, 2.23280191}, //
+
36163 {4.39085007, 2.22935009}, //
+
36164 {4.39516306, 2.22610736}, //
+
36165 {4.39905739, 2.22315741}, //
+
36166 {4.40253353, 2.22049999}, //
+
36167 {4.40559053, 2.21813512}, //
+
36168 {4.40822983, 2.21606302}, //
+
36169 {4.41044998, 2.21428323}, //
+
36170 {4.41225195, 2.21279621}, //
+
36171 {4.41363525, 2.21160173}, //
+
36172 {4.4145999, 2.21070004}, //
+
36173 {4.41589308, 2.20889449}, //
+
36174 {4.41526175, 2.20801115}, //
+
36175 });
+
36176 polys.push_back({
+
36177 {0.347720385, 2.11243343}, //
+
36178 {0.346281469, 2.1126833}, //
+
36179 {0.344883323, 2.11310005}, //
+
36180 {0.343525916, 2.11368322}, //
+
36181 {0.34220925, 2.11443329}, //
+
36182 {0.340933323, 2.11535001}, //
+
36183 {0.339698136, 2.11643338}, //
+
36184 {0.338503718, 2.11768341}, //
+
36185 {0.337350011, 2.11910009}, //
+
36186 {0.336227149, 2.12065244}, //
+
36187 {0.335103095, 2.12228775}, //
+
36188 {0.333977789, 2.12400556}, //
+
36189 {0.332851231, 2.12580609}, //
+
36190 {0.331723452, 2.1276896}, //
+
36191 {0.33059445, 2.1296556}, //
+
36192 {0.329464197, 2.13170433}, //
+
36193 {0.328332722, 2.13383579}, //
+
36194 {0.327199996, 2.13604999}, //
+
36195 {0.326087654, 2.13831663}, //
+
36196 {0.325017273, 2.14058328}, //
+
36197 {0.323988885, 2.14284992}, //
+
36198 {0.323002458, 2.14511657}, //
+
36199 {0.322058022, 2.14738345}, //
+
36200 {0.321155548, 2.1496501}, //
+
36201 {0.320295066, 2.15191674}, //
+
36202 {0.319476545, 2.15418339}, //
+
36203 {0.318699986, 2.15645003}, //
+
36204 {0.317996919, 2.1623888}, //
+
36205 {0.317376554, 2.16816115}, //
+
36206 {0.31683889, 2.17376661}, //
+
36207 {0.316383958, 2.17920566}, //
+
36208 {0.316011727, 2.18447781}, //
+
36209 {0.315722227, 2.1895833}, //
+
36210 {0.315515429, 2.19452214}, //
+
36211 {0.315391362, 2.19929433}, //
+
36212 {0.315349996, 2.2039001}, //
+
36213 {0.315308034, 2.20833826}, //
+
36214 {0.31518209, 2.21260858}, //
+
36215 {0.314972222, 2.21671104}, //
+
36216 {0.314678401, 2.22064567}, //
+
36217 {0.314300627, 2.22441244}, //
+
36218 {0.313838899, 2.22801113}, //
+
36219 {0.313293219, 2.23144197}, //
+
36220 {0.312663585, 2.23470497}, //
+
36221 {0.311949998, 2.23779988}, //
+
36222 {0.311970979, 2.2378211}, //
+
36223 {0.312033951, 2.23788404}, //
+
36224 {0.312138885, 2.23798895}, //
+
36225 {0.312285811, 2.23813581}, //
+
36226 {0.312705547, 2.23855567}, //
+
36227 {0.312978387, 2.23882842}, //
+
36228 {0.313293219, 2.23914313}, //
+
36229 {0.313650012, 2.23950005}, //
+
36230 {0.31402716, 2.23991966}, //
+
36231 {0.314403087, 2.24042344}, //
+
36232 {0.314777792, 2.24101114}, //
+
36233 {0.315151244, 2.24168277}, //
+
36234 {0.315523446, 2.24243832}, //
+
36235 {0.315894455, 2.24327779}, //
+
36236 {0.316264212, 2.24420118}, //
+
36237 {0.316632718, 2.24520874}, //
+
36238 {0.317000002, 2.24629998}, //
+
36239 {0.317356795, 2.24745369}, //
+
36240 {0.317671597, 2.24864817}, //
+
36241 {0.317944437, 2.24988341}, //
+
36242 {0.318175316, 2.25115919}, //
+
36243 {0.318364203, 2.25247598}, //
+
36244 {0.318511099, 2.25383329}, //
+
36245 {0.318616062, 2.25523138}, //
+
36246 {0.318679005, 2.25667048}, //
+
36247 {0.318699986, 2.2581501}, //
+
36248 {0.319434553, 2.25882149}, //
+
36249 {0.320127159, 2.25932527}, //
+
36250 {0.320777774, 2.2596612}, //
+
36251 {0.321386427, 2.25982904}, //
+
36252 {0.321953088, 2.25982904}, //
+
36253 {0.322477788, 2.2596612}, //
+
36254 {0.322960496, 2.25932527}, //
+
36255 {0.323401242, 2.25882149}, //
+
36256 {0.323799998, 2.2581501}, //
+
36257 {0.324177772, 2.25733137}, //
+
36258 {0.324555546, 2.256387}, //
+
36259 {0.32493332, 2.25531673}, //
+
36260 {0.325311124, 2.25412035}, //
+
36261 {0.325688899, 2.25279808}, //
+
36262 {0.326066673, 2.25134993}, //
+
36263 {0.326444447, 2.24977589}, //
+
36264 {0.326822221, 2.24807596}, //
+
36265 {0.327199996, 2.24624991}, //
+
36266 {0.327598751, 2.24430919}, //
+
36267 {0.328039497, 2.24224257}, //
+
36268 {0.328522235, 2.24005008}, //
+
36269 {0.329046905, 2.23773146}, //
+
36270 {0.329613566, 2.23528695}, //
+
36271 {0.330222219, 2.23271656}, //
+
36272 {0.330872834, 2.23002028}, //
+
36273 {0.33156544, 2.22719812}, //
+
36274 {0.332300007, 2.22425008}, //
+
36275 {0.333045065, 2.218889}, //
+
36276 {0.333791345, 2.21336102}, //
+
36277 {0.334538877, 2.20766664}, //
+
36278 {0.33528766, 2.20180559}, //
+
36279 {0.336037666, 2.19577789}, //
+
36280 {0.336788893, 2.1895833}, //
+
36281 {0.337541372, 2.18322229}, //
+
36282 {0.338295072, 2.17669439}, //
+
36283 {0.339049995, 2.17000008}, //
+
36284 {0.34051913, 2.16543579}, //
+
36285 {0.341904312, 2.16078758}, //
+
36286 {0.343205541, 2.15605545}, //
+
36287 {0.344422847, 2.1512394}, //
+
36288 {0.34555617, 2.14633942}, //
+
36289 {0.346605569, 2.14135551}, //
+
36290 {0.347570986, 2.13628769}, //
+
36291 {0.348452479, 2.1311357}, //
+
36292 {0.349249989, 2.12590003}, //
+
36293 {0.350582719, 2.12305617}, //
+
36294 {0.351580858, 2.12054682}, //
+
36295 {0.352244437, 2.1183722}, //
+
36296 {0.352573454, 2.11653209}, //
+
36297 {0.352567911, 2.11502647}, //
+
36298 {0.352227777, 2.1138556}, //
+
36299 {0.351553082, 2.11301923}, //
+
36300 {0.350543827, 2.11251736}, //
+
36301 {0.34920001, 2.11234999}, //
+
36302 });
+
36303 polys.push_back({
+
36304 {6.53517485, 1.98597407}, //
+
36305 {6.53448391, 1.98629069}, //
+
36306 {6.53375006, 1.98689997}, //
+
36307 {6.53375006, 1.98786485}, //
+
36308 {6.53375006, 2.01519251}, //
+
36309 {6.53375006, 2.01977587}, //
+
36310 {6.53375006, 2.05299997}, //
+
36311 {6.53366613, 2.0577538}, //
+
36312 {6.53341436, 2.06221485}, //
+
36313 {6.53299427, 2.06638336}, //
+
36314 {6.53240681, 2.07025933}, //
+
36315 {6.53165102, 2.07384253}, //
+
36316 {6.53072786, 2.07713342}, //
+
36317 {6.52963638, 2.08013153}, //
+
36318 {6.52837706, 2.0828371}, //
+
36319 {6.52694988, 2.0852499}, //
+
36320 {6.5254817, 2.08746409}, //
+
36321 {6.52409792, 2.08959579}, //
+
36322 {6.52279997, 2.09164453}, //
+
36323 {6.52158689, 2.09361053}, //
+
36324 {6.52045918, 2.09549379}, //
+
36325 {6.51941681, 2.09729433}, //
+
36326 {6.51845932, 2.09901237}, //
+
36327 {6.51758718, 2.10064745}, //
+
36328 {6.51679993, 2.10220003}, //
+
36329 {6.51604462, 2.10295486}, //
+
36330 {6.51528883, 2.10370874}, //
+
36331 {6.51453352, 2.10446119}, //
+
36332 {6.51377773, 2.10521245}, //
+
36333 {6.51302242, 2.10596228}, //
+
36334 {6.51226664, 2.10671115}, //
+
36335 {6.51151133, 2.10745859}, //
+
36336 {6.51075554, 2.10820484}, //
+
36337 {6.51000023, 2.1089499}, //
+
36338 {6.50924444, 2.10962152}, //
+
36339 {6.50848866, 2.1101253}, //
+
36340 {6.50773335, 2.110461}, //
+
36341 {6.50697756, 2.11062908}, //
+
36342 {6.50622225, 2.11062908}, //
+
36343 {6.50546646, 2.110461}, //
+
36344 {6.50471115, 2.1101253}, //
+
36345 {6.50395536, 2.10962152}, //
+
36346 {6.50320005, 2.1089499}, //
+
36347 {6.50245476, 2.10826731}, //
+
36348 {6.50170851, 2.10770798}, //
+
36349 {6.5009613, 2.10727215}, //
+
36350 {6.50021219, 2.10695982}, //
+
36351 {6.49946213, 2.10677099}, //
+
36352 {6.49871111, 2.10670567}, //
+
36353 {6.49795866, 2.1067636}, //
+
36354 {6.49720478, 2.10694504}, //
+
36355 {6.49644995, 2.10724998}, //
+
36356 {6.49569464, 2.10769081}, //
+
36357 {6.49493885, 2.10825729}, //
+
36358 {6.49418354, 2.1089499}, //
+
36359 {6.49342775, 2.10976863}, //
+
36360 {6.49267244, 2.11071301}, //
+
36361 {6.49191666, 2.11178327}, //
+
36362 {6.49116135, 2.11297965}, //
+
36363 {6.49040556, 2.11430192}, //
+
36364 {6.48964977, 2.11575007}, //
+
36365 {6.48952484, 2.11922336}, //
+
36366 {6.48914862, 2.12211061}, //
+
36367 {6.48852205, 2.12441111}, //
+
36368 {6.48764515, 2.12612534}, //
+
36369 {6.48651743, 2.12725306}, //
+
36370 {6.48513889, 2.1277945}, //
+
36371 {6.48351002, 2.12774944}, //
+
36372 {6.48163033, 2.12711787}, //
+
36373 {6.47949982, 2.12590003}, //
+
36374 {6.47868156, 2.12519693}, //
+
36375 {6.47773695, 2.12457657}, //
+
36376 {6.47666645, 2.12403893}, //
+
36377 {6.47547054, 2.12358403}, //
+
36378 {6.47414827, 2.12321162}, //
+
36379 {6.47270012, 2.12292218}, //
+
36380 {6.47112608, 2.12271547}, //
+
36381 {6.46942616, 2.12259126}, //
+
36382 {6.46759987, 2.12255001}, //
+
36383 {6.46578455, 2.12259126}, //
+
36384 {6.46409369, 2.12271547}, //
+
36385 {6.46252775, 2.12292218}, //
+
36386 {6.46108627, 2.12321162}, //
+
36387 {6.45976973, 2.12358403}, //
+
36388 {6.45857763, 2.12403893}, //
+
36389 {6.45751047, 2.12457657}, //
+
36390 {6.45656776, 2.12519693}, //
+
36391 {6.45574999, 2.12590003}, //
+
36392 {6.45503664, 2.12665558}, //
+
36393 {6.45440674, 2.12741113}, //
+
36394 {6.45386124, 2.12816668}, //
+
36395 {6.45339918, 2.12892222}, //
+
36396 {6.45302153, 2.12967777}, //
+
36397 {6.45272779, 2.13043332}, //
+
36398 {6.45251799, 2.13118887}, //
+
36399 {6.4523921, 2.13194442}, //
+
36400 {6.45235014, 2.13269997}, //
+
36401 {6.45226622, 2.13269997}, //
+
36402 {6.45216131, 2.13269997}, //
+
36403 {6.45201397, 2.13269997}, //
+
36404 {6.45182514, 2.13269997}, //
+
36405 {6.45159435, 2.13269997}, //
+
36406 {6.4513216, 2.13269997}, //
+
36407 {6.45100689, 2.13269997}, //
+
36408 {6.44972658, 2.13269997}, //
+
36409 {6.44913912, 2.13269997}, //
+
36410 {6.44846725, 2.13269997}, //
+
36411 {6.44771194, 2.13269997}, //
+
36412 {6.44687223, 2.13269997}, //
+
36413 {6.4459486, 2.13269997}, //
+
36414 {6.44494152, 2.13269997}, //
+
36415 {6.44160318, 2.13269997}, //
+
36416 {6.44047785, 2.13269997}, //
+
36417 {6.43935108, 2.13269997}, //
+
36418 {6.43822336, 2.13269997}, //
+
36419 {6.43709421, 2.13269997}, //
+
36420 {6.43596411, 2.13269997}, //
+
36421 {6.43483257, 2.13269997}, //
+
36422 {6.43370008, 2.13269997}, //
+
36423 {6.43153715, 2.13269997}, //
+
36424 {6.43051672, 2.13269997}, //
+
36425 {6.42953682, 2.13269997}, //
+
36426 {6.42859793, 2.13269997}, //
+
36427 {6.42684269, 2.13269997}, //
+
36428 {6.42602587, 2.13269997}, //
+
36429 {6.42525005, 2.13269997}, //
+
36430 {6.42453623, 2.13202834}, //
+
36431 {6.4239068, 2.1315248}, //
+
36432 {6.4233613, 2.13118887}, //
+
36433 {6.42289925, 2.13102102}, //
+
36434 {6.42252159, 2.13102102}, //
+
36435 {6.42222786, 2.13118887}, //
+
36436 {6.42201805, 2.1315248}, //
+
36437 {6.42189217, 2.13202834}, //
+
36438 {6.4218502, 2.13269997}, //
+
36439 {6.4218502, 2.13496661}, //
+
36440 {6.4218502, 2.13572216}, //
+
36441 {6.4218502, 2.13647771}, //
+
36442 {6.4218502, 2.14627218}, //
+
36443 {6.4218502, 2.14853215}, //
+
36444 {6.4218502, 2.15984988}, //
+
36445 {6.42180824, 2.16057396}, //
+
36446 {6.42168188, 2.16125751}, //
+
36447 {6.42147207, 2.16190004}, //
+
36448 {6.42117834, 2.16250181}, //
+
36449 {6.42080069, 2.16306305}, //
+
36450 {6.42033911, 2.16358328}, //
+
36451 {6.41979313, 2.16406298}, //
+
36452 {6.4191637, 2.16450191}, //
+
36453 {6.41844988, 2.16490006}, //
+
36454 {6.41765308, 2.16521478}, //
+
36455 {6.41677332, 2.1654036}, //
+
36456 {6.41581106, 2.16546679}, //
+
36457 {6.41476583, 2.1654036}, //
+
36458 {6.41363811, 2.16521478}, //
+
36459 {6.4124279, 2.16490006}, //
+
36460 {6.41113472, 2.16445923}, //
+
36461 {6.40975857, 2.16389251}, //
+
36462 {6.40829992, 2.1631999}, //
+
36463 {6.39979982, 2.1631999}, //
+
36464 {6.39868832, 2.16324186}, //
+
36465 {6.39761972, 2.16336799}, //
+
36466 {6.39659452, 2.1635778}, //
+
36467 {6.39561224, 2.16387153}, //
+
36468 {6.39467335, 2.16424942}, //
+
36469 {6.39377785, 2.164711}, //
+
36470 {6.39292526, 2.16525674}, //
+
36471 {6.39211607, 2.1658864}, //
+
36472 {6.39134979, 2.16659999}, //
+
36473 {6.38916731, 2.16727161}, //
+
36474 {6.38715267, 2.16777539}, //
+
36475 {6.3853054, 2.16811109}, //
+
36476 {6.38362646, 2.16827893}, //
+
36477 {6.38211536, 2.16827893}, //
+
36478 {6.38077211, 2.16811109}, //
+
36479 {6.37959671, 2.16777539}, //
+
36480 {6.37858963, 2.16727161}, //
+
36481 {6.37791729, 2.16673398}, //
+
36482 {6.38090849, 2.17282581}, //
+
36483 {6.38455009, 2.18015003}, //
+
36484 {6.38840055, 2.18756795}, //
+
36485 {6.39241934, 2.19473267}, //
+
36486 {6.39660549, 2.20164442}, //
+
36487 {6.40095997, 2.20830297}, //
+
36488 {6.40548229, 2.21470857}, //
+
36489 {6.41017199, 2.2208612}, //
+
36490 {6.41503048, 2.22676039}, //
+
36491 {6.42005634, 2.23240685}, //
+
36492 {6.42525005, 2.23779988}, //
+
36493 {6.42613077, 2.2393105}, //
+
36494 {6.42726231, 2.24081969}, //
+
36495 {6.42864466, 2.24232769}, //
+
36496 {6.43027735, 2.2438345}, //
+
36497 {6.43216038, 2.24534011}, //
+
36498 {6.43429422, 2.24684453}, //
+
36499 {6.43667889, 2.24834752}, //
+
36500 {6.43931437, 2.24984932}, //
+
36501 {6.44220018, 2.25134993}, //
+
36502 {6.44527388, 2.25273514}, //
+
36503 {6.44847393, 2.25386858}, //
+
36504 {6.45179987, 2.25475001}, //
+
36505 {6.45525169, 2.25537968}, //
+
36506 {6.4588294, 2.25575733}, //
+
36507 {6.46253347, 2.25588322}, //
+
36508 {6.46636295, 2.25575733}, //
+
36509 {6.47031832, 2.25537968}, //
+
36510 {6.47440004, 2.25475001}, //
+
36511 {6.47848129, 2.25379562}, //
+
36512 {6.48243713, 2.25242162}, //
+
36513 {6.48626661, 2.25062776}, //
+
36514 {6.48997021, 2.24841428}, //
+
36515 {6.49354792, 2.24578094}, //
+
36516 {6.49700022, 2.24272776}, //
+
36517 {6.50032616, 2.23925495}, //
+
36518 {6.50352573, 2.23536229}, //
+
36519 {6.5065999, 2.23105001}, //
+
36520 {6.51108027, 2.22261429}, //
+
36521 {6.5154767, 2.21388459}, //
+
36522 {6.51978874, 2.20486116}, //
+
36523 {6.52401733, 2.19554377}, //
+
36524 {6.52816153, 2.18593264}, //
+
36525 {6.53222227, 2.17602777}, //
+
36526 {6.53619862, 2.16582894}, //
+
36527 {6.54009151, 2.15533638}, //
+
36528 {6.54390001, 2.14455009}, //
+
36529 {6.54745722, 2.13389993}, //
+
36530 {6.55059624, 2.12379456}, //
+
36531 {6.55331659, 2.11423326}, //
+
36532 {6.55561829, 2.10521674}, //
+
36533 {6.55750179, 2.09674454}, //
+
36534 {6.55896664, 2.08881664}, //
+
36535 {6.56001282, 2.0814333}, //
+
36536 {6.56064081, 2.0745945}, //
+
36537 {6.56085014, 2.06830001}, //
+
36538 {6.5607872, 2.06599188}, //
+
36539 {6.56059837, 2.06360126}, //
+
36540 {6.56028318, 2.06112766}, //
+
36541 {6.55984259, 2.05857158}, //
+
36542 {6.5592761, 2.05593276}, //
+
36543 {6.55858326, 2.05321121}, //
+
36544 {6.55776501, 2.05040669}, //
+
36545 {6.55682039, 2.04751968}, //
+
36546 {6.55574989, 2.04454994}, //
+
36547 {6.55462694, 2.04151726}, //
+
36548 {6.55350304, 2.03844142}, //
+
36549 {6.5523777, 2.03532219}, //
+
36550 {6.55125141, 2.03215981}, //
+
36551 {6.55012369, 2.02895427}, //
+
36552 {6.54899454, 2.02570558}, //
+
36553 {6.54786396, 2.02241349}, //
+
36554 {6.5467329, 2.01907849}, //
+
36555 {6.54559994, 2.0157001}, //
+
36556 {6.54450846, 2.01239443}, //
+
36557 {6.54350138, 2.00925565}, //
+
36558 {6.54257774, 2.00628328}, //
+
36559 {6.54173803, 2.00347781}, //
+
36560 {6.54098272, 2.00083899}, //
+
36561 {6.54031134, 1.99836671}, //
+
36562 {6.5397234, 1.99606109}, //
+
36563 {6.53921986, 1.99392223}, //
+
36564 {6.53879976, 1.99195004}, //
+
36565 {6.53841162, 1.99021852}, //
+
36566 {6.53798008, 1.98877966}, //
+
36567 {6.53750563, 1.98763335}, //
+
36568 {6.53698778, 1.98677957}, //
+
36569 {6.53642654, 1.98621857}, //
+
36570 {6.53582239, 1.98594999}, //
+
36571 });
+
36572 polys.push_back({
+
36573 {2.04893708, 2.19041228}, //
+
36574 {2.04623151, 2.19059944}, //
+
36575 {2.04323339, 2.19091105}, //
+
36576 {2.0399425, 2.1913476}, //
+
36577 {2.03635931, 2.1919086}, //
+
36578 {2.03248334, 2.19259453}, //
+
36579 {2.02831483, 2.19340491}, //
+
36580 {2.02385378, 2.19434023}, //
+
36581 {2.01909995, 2.1954}, //
+
36582 {2.0141685, 2.19655442}, //
+
36583 {2.00915194, 2.19775057}, //
+
36584 {2.00405002, 2.19898891}, //
+
36585 {1.99886298, 2.20026922}, //
+
36586 {1.99359071, 2.20159125}, //
+
36587 {1.98823333, 2.20295548}, //
+
36588 {1.98279071, 2.20436168}, //
+
36589 {1.97726297, 2.20580983}, //
+
36590 {1.97165, 2.20729995}, //
+
36591 {1.96609938, 2.20878959}, //
+
36592 {1.96075869, 2.21023583}, //
+
36593 {1.9556278, 2.21163893}, //
+
36594 {1.95070684, 2.21299887}, //
+
36595 {1.94599569, 2.21431541}, //
+
36596 {1.94149446, 2.21558881}, //
+
36597 {1.93720305, 2.21681905}, //
+
36598 {1.93312156, 2.21800613}, //
+
36599 {1.92925, 2.21915007}, //
+
36600 {1.92255366, 2.2211647}, //
+
36601 {1.9198333, 2.22198343}, //
+
36602 {1.91229999, 2.22425008}, //
+
36603 {1.91259325, 2.22420812}, //
+
36604 {1.91699135, 2.22357845}, //
+
36605 {1.93106544, 2.22156358}, //
+
36606 {1.93605006, 2.22084999}, //
+
36607 {1.94162035, 2.22017837}, //
+
36608 {1.94777596, 2.21967459}, //
+
36609 {1.95451665, 2.21933889}, //
+
36610 {1.96184254, 2.21917105}, //
+
36611 {1.96975374, 2.21917105}, //
+
36612 {1.97825003, 2.21933889}, //
+
36613 {1.98733151, 2.21967459}, //
+
36614 {1.99699819, 2.22017837}, //
+
36615 {2.00725007, 2.22084999}, //
+
36616 {2.01694512, 2.22087097}, //
+
36617 {2.02643013, 2.22093391}, //
+
36618 {2.03570557, 2.22103882}, //
+
36619 {2.04477096, 2.22118568}, //
+
36620 {2.05362654, 2.22137475}, //
+
36621 {2.06227231, 2.22160554}, //
+
36622 {2.07070804, 2.22187829}, //
+
36623 {2.07893395, 2.22219324}, //
+
36624 {2.08695006, 2.22254992}, //
+
36625 {2.09450483, 2.22294879}, //
+
36626 {2.10134745, 2.22338939}, //
+
36627 {2.10747766, 2.22387218}, //
+
36628 {2.11289573, 2.22439694}, //
+
36629 {2.11760116, 2.22496367}, //
+
36630 {2.12159443, 2.22557211}, //
+
36631 {2.12487531, 2.22622275}, //
+
36632 {2.12744379, 2.22691536}, //
+
36633 {2.12930012, 2.22764993}, //
+
36634 {2.12896419, 2.22739816}, //
+
36635 {2.12854433, 2.22708344}, //
+
36636 {2.12795687, 2.22664261}, //
+
36637 {2.12720132, 2.22607589}, //
+
36638 {2.12627769, 2.22538328}, //
+
36639 {2.12518644, 2.22456479}, //
+
36640 {2.12392712, 2.22362041}, //
+
36641 {2.12249994, 2.22254992}, //
+
36642 {2.12093639, 2.22139573}, //
+
36643 {2.11924577, 2.22019935}, //
+
36644 {2.11742783, 2.218961}, //
+
36645 {2.11548281, 2.21768093}, //
+
36646 {2.11341047, 2.21635866}, //
+
36647 {2.11121106, 2.21499443}, //
+
36648 {2.10888457, 2.21358824}, //
+
36649 {2.10643077, 2.21214008}, //
+
36650 {2.10384989, 2.21064997}, //
+
36651 {2.10117459, 2.20917034}, //
+
36652 {2.09841537, 2.20773149}, //
+
36653 {2.09557223, 2.2063334}, //
+
36654 {2.09264517, 2.20497584}, //
+
36655 {2.08963394, 2.2036593}, //
+
36656 {2.08653879, 2.20238328}, //
+
36657 {2.08335996, 2.20114803}, //
+
36658 {2.08009696, 2.19995379}, //
+
36659 {2.07675004, 2.19880009}, //
+
36660 {2.0734241, 2.19769812}, //
+
36661 {2.07022405, 2.19663715}, //
+
36662 {2.06715012, 2.19561672}, //
+
36663 {2.06420183, 2.19463706}, //
+
36664 {2.06137967, 2.19369817}, //
+
36665 {2.0586834, 2.19280005}, //
+
36666 {2.056113, 2.19194269}, //
+
36667 {2.0536685, 2.19112587}, //
+
36668 {2.05135012, 2.19035006}, //
+
36669 });
+
36670 polys.push_back({
+
36671 {5.90985012, 1.94284999}, //
+
36672 {5.90541172, 1.94573522}, //
+
36673 {5.90114117, 1.94836855}, //
+
36674 {5.89703894, 1.95074999}, //
+
36675 {5.89310455, 1.95287967}, //
+
36676 {5.88933754, 1.95475745}, //
+
36677 {5.88573885, 1.95638335}, //
+
36678 {5.88230801, 1.95775735}, //
+
36679 {5.87904501, 1.95887959}, //
+
36680 {5.87594986, 1.95975006}, //
+
36681 {5.86306906, 1.96298206}, //
+
36682 {5.86240005, 1.96315002}, //
+
36683 {5.86240005, 1.96654999}, //
+
36684 {5.86416054, 1.96831048}, //
+
36685 {5.87424994, 1.97839999}, //
+
36686 {5.87611723, 1.98030984}, //
+
36687 {5.87794113, 1.98226178}, //
+
36688 {5.87972212, 1.98425555}, //
+
36689 {5.88145971, 1.98629141}, //
+
36690 {5.88315439, 1.98836911}, //
+
36691 {5.88480568, 1.99048889}, //
+
36692 {5.88641357, 1.99265063}, //
+
36693 {5.88797855, 1.99485433}, //
+
36694 {5.88950014, 1.9971}, //
+
36695 {5.89035988, 1.99797034}, //
+
36696 {5.89142847, 1.99909258}, //
+
36697 {5.89270544, 2.00046659}, //
+
36698 {5.89419127, 2.0020926}, //
+
36699 {5.89588594, 2.00397038}, //
+
36700 {5.897789, 2.00609994}, //
+
36701 {5.89990044, 2.0084815}, //
+
36702 {5.9022212, 2.01111484}, //
+
36703 {5.90474987, 2.01399994}, //
+
36704 {5.90739393, 2.01700068}, //
+
36705 {5.91003656, 2.01995802}, //
+
36706 {5.91267776, 2.02287221}, //
+
36707 {5.91531801, 2.02574325}, //
+
36708 {5.91795683, 2.02857089}, //
+
36709 {5.92059422, 2.03135562}, //
+
36710 {5.92323065, 2.03409696}, //
+
36711 {5.92586613, 2.03679514}, //
+
36712 {5.92850018, 2.03944993}, //
+
36713 {5.93108082, 2.04198885}, //
+
36714 {5.93353462, 2.04431677}, //
+
36715 {5.93586111, 2.04643345}, //
+
36716 {5.93806028, 2.04833889}, //
+
36717 {5.94013262, 2.05003333}, //
+
36718 {5.94207764, 2.05151677}, //
+
36719 {5.94389582, 2.05278897}, //
+
36720 {5.9455862, 2.05384994}, //
+
36721 {5.94715023, 2.0546999}, //
+
36722 {5.9502449, 2.05642033}, //
+
36723 {5.9535079, 2.05855918}, //
+
36724 {5.95693874, 2.0611167}, //
+
36725 {5.96053743, 2.06409264}, //
+
36726 {5.96430445, 2.067487}, //
+
36727 {5.96823883, 2.07130003}, //
+
36728 {5.97234154, 2.07553148}, //
+
36729 {5.97661161, 2.0801816}, //
+
36730 {5.98105001, 2.0852499}, //
+
36731 {5.98477459, 2.0896883}, //
+
36732 {5.98841524, 2.09395862}, //
+
36733 {5.99197245, 2.09806108}, //
+
36734 {5.99544525, 2.10199571}, //
+
36735 {5.99883413, 2.10576224}, //
+
36736 {6.00213909, 2.10936117}, //
+
36737 {6.00535965, 2.11279202}, //
+
36738 {6.00849676, 2.11605501}, //
+
36739 {6.01154995, 2.11914992}, //
+
36740 {6.01452971, 2.12203574}, //
+
36741 {6.01742411, 2.12467098}, //
+
36742 {6.02023315, 2.12705564}, //
+
36743 {6.02295732, 2.12918949}, //
+
36744 {6.02559614, 2.13107276}, //
+
36745 {6.02815008, 2.13270545}, //
+
36746 {6.03061867, 2.13408756}, //
+
36747 {6.0330019, 2.1352191}, //
+
36748 {6.03529978, 2.13610005}, //
+
36749 {6.03906679, 2.13771534}, //
+
36750 {6.04283333, 2.13953948}, //
+
36751 {6.04659986, 2.14157224}, //
+
36752 {6.05036688, 2.14381361}, //
+
36753 {6.05413342, 2.1462636}, //
+
36754 {6.05789995, 2.1489222}, //
+
36755 {6.06166649, 2.15178943}, //
+
36756 {6.0654335, 2.1548655}, //
+
36757 {6.06920004, 2.15814996}, //
+
36758 {6.07292509, 2.16155982}, //
+
36759 {6.07656813, 2.16501164}, //
+
36760 {6.08012772, 2.16850567}, //
+
36761 {6.08360481, 2.17204142}, //
+
36762 {6.08699942, 2.17561913}, //
+
36763 {6.09031105, 2.1792388}, //
+
36764 {6.09354019, 2.18290067}, //
+
36765 {6.09668636, 2.18660426}, //
+
36766 {6.09975004, 2.19035006}, //
+
36767 {6.09991789, 2.1905179}, //
+
36768 {6.1001277, 2.19072771}, //
+
36769 {6.10079956, 2.19139934}, //
+
36770 {6.10243654, 2.19303632}, //
+
36771 {6.10314989, 2.1937499}, //
+
36772 {6.10469198, 2.19525051}, //
+
36773 {6.106318, 2.19675255}, //
+
36774 {6.10802794, 2.19825554}, //
+
36775 {6.1098218, 2.19975996}, //
+
36776 {6.11169958, 2.20126534}, //
+
36777 {6.11366129, 2.20277214}, //
+
36778 {6.11570692, 2.20428014}, //
+
36779 {6.11783648, 2.20578957}, //
+
36780 {6.12004995, 2.20729995}, //
+
36781 {6.1222949, 2.20876861}, //
+
36782 {6.12449694, 2.21015191}, //
+
36783 {6.12665558, 2.2114501}, //
+
36784 {6.12877083, 2.21266294}, //
+
36785 {6.13084316, 2.21379066}, //
+
36786 {6.1328721, 2.21483326}, //
+
36787 {6.13485813, 2.21579075}, //
+
36788 {6.13680077, 2.21666288}, //
+
36789 {6.13870001, 2.2174499}, //
+
36790 {6.14048386, 2.21816349}, //
+
36791 {6.1420579, 2.21879315}, //
+
36792 {6.14342213, 2.21933889}, //
+
36793 {6.14457655, 2.21980071}, //
+
36794 {6.14552116, 2.22017837}, //
+
36795 {6.14625549, 2.22047234}, //
+
36796 {6.14678001, 2.22068214}, //
+
36797 {6.1470952, 2.22080803}, //
+
36798 {6.14720011, 2.22084999}, //
+
36799 {6.14717913, 2.22076607}, //
+
36800 {6.14711618, 2.2205143}, //
+
36801 {6.14701128, 2.22009444}, //
+
36802 {6.14686441, 2.21950674}, //
+
36803 {6.14644432, 2.2178278}, //
+
36804 {6.14617157, 2.21673632}, //
+
36805 {6.14585686, 2.21547723}, //
+
36806 {6.14550018, 2.21405005}, //
+
36807 {6.14510107, 2.21250749}, //
+
36808 {6.14466047, 2.21087956}, //
+
36809 {6.14417791, 2.20916677}, //
+
36810 {6.14365292, 2.20736861}, //
+
36811 {6.14308643, 2.20548511}, //
+
36812 {6.14247799, 2.20351672}, //
+
36813 {6.14182711, 2.20146298}, //
+
36814 {6.14113474, 2.19932413}, //
+
36815 {6.14039993, 2.19709992}, //
+
36816 {6.13961315, 2.19482279}, //
+
36817 {6.13874054, 2.1925025}, //
+
36818 {6.13778353, 2.19013882}, //
+
36819 {6.13674068, 2.18773198}, //
+
36820 {6.13561296, 2.18528199}, //
+
36821 {6.13439989, 2.18278885}, //
+
36822 {6.13310194, 2.18025255}, //
+
36823 {6.13171864, 2.17767286}, //
+
36824 {6.13024998, 2.17505002}, //
+
36825 {6.12873936, 2.17252159}, //
+
36826 {6.12723017, 2.17020297}, //
+
36827 {6.12572241, 2.1680944}, //
+
36828 {6.1242156, 2.16619563}, //
+
36829 {6.12270975, 2.16450667}, //
+
36830 {6.12120533, 2.16302776}, //
+
36831 {6.11970234, 2.16175866}, //
+
36832 {6.11820078, 2.16069937}, //
+
36833 {6.11670017, 2.15984988}, //
+
36834 {6.11451721, 2.15835977}, //
+
36835 {6.11250257, 2.15691161}, //
+
36836 {6.11065578, 2.15550566}, //
+
36837 {6.10897636, 2.15414143}, //
+
36838 {6.10746527, 2.15281916}, //
+
36839 {6.10612202, 2.15153885}, //
+
36840 {6.10494709, 2.1503005}, //
+
36841 {6.10393953, 2.14910436}, //
+
36842 {6.10309982, 2.14794993}, //
+
36843 {6.102355, 2.1468482}, //
+
36844 {6.10160875, 2.145787}, //
+
36845 {6.10086107, 2.14476657}, //
+
36846 {6.10011244, 2.14378715}, //
+
36847 {6.09936237, 2.14284825}, //
+
36848 {6.09861088, 2.14194989}, //
+
36849 {6.09785843, 2.14109254}, //
+
36850 {6.09710503, 2.14027596}, //
+
36851 {6.09635019, 2.1394999}, //
+
36852 {6.09630823, 2.13872337}, //
+
36853 {6.09618187, 2.13790488}, //
+
36854 {6.09597206, 2.13704443}, //
+
36855 {6.09567833, 2.13614202}, //
+
36856 {6.09530067, 2.13519764}, //
+
36857 {6.0948391, 2.13421106}, //
+
36858 {6.09429312, 2.13318276}, //
+
36859 {6.09366369, 2.13211226}, //
+
36860 {6.09294987, 2.13100004}, //
+
36861 {6.09215307, 2.1298883}, //
+
36862 {6.09127331, 2.1288197}, //
+
36863 {6.09031105, 2.1277945}, //
+
36864 {6.08926582, 2.12681246}, //
+
36865 {6.0881381, 2.12587357}, //
+
36866 {6.08692789, 2.12497783}, //
+
36867 {6.08563471, 2.12412524}, //
+
36868 {6.08425856, 2.12331605}, //
+
36869 {6.08279991, 2.12255001}, //
+
36870 {6.07969427, 2.11938143}, //
+
36871 {6.07642221, 2.11592031}, //
+
36872 {6.07298326, 2.11216664}, //
+
36873 {6.0693779, 2.10812044}, //
+
36874 {6.06560564, 2.10378146}, //
+
36875 {6.06166649, 2.09914994}, //
+
36876 {6.05756092, 2.09422588}, //
+
36877 {6.05328894, 2.08900928}, //
+
36878 {6.04885006, 2.08349991}, //
+
36879 {6.04442167, 2.07787657}, //
+
36880 {6.04015875, 2.07229495}, //
+
36881 {6.03606129, 2.06675553}, //
+
36882 {6.03212881, 2.06125808}, //
+
36883 {6.02836227, 2.05580258}, //
+
36884 {6.0247612, 2.05038881}, //
+
36885 {6.02132511, 2.04501724}, //
+
36886 {6.01805496, 2.03968763}, //
+
36887 {6.0149498, 2.03439999}, //
+
36888 {6.01420498, 2.03293085}, //
+
36889 {6.01345873, 2.03154564}, //
+
36890 {6.01271105, 2.03024435}, //
+
36891 {6.01196241, 2.02902722}, //
+
36892 {6.01121235, 2.02789378}, //
+
36893 {6.01046133, 2.0268445}, //
+
36894 {6.0097084, 2.02587891}, //
+
36895 {6.008955, 2.02499747}, //
+
36896 {6.00820017, 2.02419996}, //
+
36897 {6.00593328, 2.02114701}, //
+
36898 {6.00366688, 2.0180099}, //
+
36899 {6.00139999, 2.01478887}, //
+
36900 {5.99913311, 2.01148391}, //
+
36901 {5.9968667, 2.00809503}, //
+
36902 {5.99459982, 2.00462222}, //
+
36903 {5.99233341, 2.00106549}, //
+
36904 {5.99006653, 1.99742472}, //
+
36905 {5.98780012, 1.99370003}, //
+
36906 {5.98554468, 1.98993337}, //
+
36907 {5.98328876, 1.98616672}, //
+
36908 {5.97877789, 1.97863328}, //
+
36909 {5.97652245, 1.97486663}, //
+
36910 {5.97426653, 1.97109997}, //
+
36911 {5.96975565, 1.96356666}, //
+
36912 {5.96750021, 1.9598}, //
+
36913 {5.9652648, 1.95611668}, //
+
36914 {5.96307039, 1.9526}, //
+
36915 {5.96091652, 1.94924998}, //
+
36916 {5.95880365, 1.94606662}, //
+
36917 {5.95673132, 1.94305003}, //
+
36918 {5.95469999, 1.94019997}, //
+
36919 {5.9527092, 1.93751669}, //
+
36920 {5.95075941, 1.93499994}, //
+
36921 {5.94885015, 1.93264997}, //
+
36922 {5.94707632, 1.9305197}, //
+
36923 {5.94551182, 1.92864013}, //
+
36924 {5.94415569, 1.92701113}, //
+
36925 {5.94300795, 1.92563272}, //
+
36926 {5.94206905, 1.924505}, //
+
36927 {5.94133902, 1.92362773}, //
+
36928 {5.94081736, 1.92300129}, //
+
36929 {5.94040012, 1.92250001}, //
+
36930 });
+
36931 polys.push_back({
+
36932 {4.53560066, 1.95132101}, //
+
36933 {4.53513908, 1.95148885}, //
+
36934 {4.53459311, 1.95182467}, //
+
36935 {4.53396368, 1.95232844}, //
+
36936 {4.53324986, 1.95299995}, //
+
36937 {4.52743816, 1.96078455}, //
+
36938 {4.52053642, 1.96907163}, //
+
36939 {4.51254463, 1.97786117}, //
+
36940 {4.50346231, 1.98715305}, //
+
36941 {4.49328995, 1.99694753}, //
+
36942 {4.48202801, 2.00724435}, //
+
36943 {4.46967554, 2.01804376}, //
+
36944 {4.45623255, 2.02934575}, //
+
36945 {4.44169998, 2.04115009}, //
+
36946 {4.43381071, 2.0479908}, //
+
36947 {4.42520857, 2.05495739}, //
+
36948 {4.41589451, 2.0620501}, //
+
36949 {4.40586805, 2.06926847}, //
+
36950 {4.3951292, 2.07661295}, //
+
36951 {4.38367796, 2.08408332}, //
+
36952 {4.37151432, 2.09167957}, //
+
36953 {4.35863829, 2.09940195}, //
+
36954 {4.34504986, 2.10724998}, //
+
36955 {4.33117914, 2.1146481}, //
+
36956 {4.31743288, 2.12099814}, //
+
36957 {4.30381107, 2.1263001}, //
+
36958 {4.2903142, 2.13055372}, //
+
36959 {4.27694178, 2.13375926}, //
+
36960 {4.26369429, 2.13591671}, //
+
36961 {4.25057173, 2.13702583}, //
+
36962 {4.23757362, 2.13708711}, //
+
36963 {4.22469997, 2.13610005}, //
+
36964 {4.21415567, 2.13383389}, //
+
36965 {4.2036109, 2.13156915}, //
+
36966 {4.1930666, 2.1293056}, //
+
36967 {4.1825223, 2.12704325}, //
+
36968 {4.171978, 2.12478209}, //
+
36969 {4.16143322, 2.12252212}, //
+
36970 {4.15088892, 2.12026358}, //
+
36971 {4.14034462, 2.11800623}, //
+
36972 {4.12979984, 2.11575007}, //
+
36973 {4.11581278, 2.11147904}, //
+
36974 {4.10249615, 2.1077106}, //
+
36975 {4.08984995, 2.1044445}, //
+
36976 {4.07787418, 2.10168076}, //
+
36977 {4.06656837, 2.09941983}, //
+
36978 {4.05593348, 2.09766102}, //
+
36979 {4.04596853, 2.09640503}, //
+
36980 {4.03667402, 2.09565115}, //
+
36981 {4.02804995, 2.09540009}, //
+
36982 {4.0212512, 2.09529495}, //
+
36983 {4.0144105, 2.09498024}, //
+
36984 {4.00752783, 2.09445548}, //
+
36985 {4.0006032, 2.09372091}, //
+
36986 {3.99363637, 2.09277654}, //
+
36987 {3.98662782, 2.09162211}, //
+
36988 {3.97957706, 2.09025812}, //
+
36989 {3.97248459, 2.08868384}, //
+
36990 {3.96534991, 2.0869}, //
+
36991 {3.95825672, 2.08487535}, //
+
36992 {3.95128822, 2.08255672}, //
+
36993 {3.94444442, 2.07994437}, //
+
36994 {3.93772531, 2.07703829}, //
+
36995 {3.93113089, 2.07383823}, //
+
36996 {3.92466116, 2.07034445}, //
+
36997 {3.91831613, 2.06655669}, //
+
36998 {3.91209579, 2.0624752}, //
+
36999 {3.9059999, 2.05809999}, //
+
37000 {3.89938951, 2.05293703}, //
+
37001 {3.89311361, 2.0479815}, //
+
37002 {3.88717222, 2.04323339}, //
+
37003 {3.88156533, 2.03869247}, //
+
37004 {3.87629318, 2.03435922}, //
+
37005 {3.87135553, 2.03023338}, //
+
37006 {3.86675239, 2.02631474}, //
+
37007 {3.86248398, 2.02260375}, //
+
37008 {3.85855007, 2.01909995}, //
+
37009 {3.85495067, 2.01585746}, //
+
37010 {3.85168576, 2.01290751}, //
+
37011 {3.8487556, 2.01025009}, //
+
37012 {3.84615993, 2.00788522}, //
+
37013 {3.84389877, 2.00581288}, //
+
37014 {3.84197211, 2.00403333}, //
+
37015 {3.84038019, 2.00254631}, //
+
37016 {3.83912277, 2.00135183}, //
+
37017 {3.83820009, 2.0004499}, //
+
37018 {3.8382833, 2.00353456}, //
+
37019 {3.8385334, 2.00674391}, //
+
37020 {3.83894992, 2.01007771}, //
+
37021 {3.83953333, 2.01353645}, //
+
37022 {3.84028339, 2.01711965}, //
+
37023 {3.84120011, 2.02082777}, //
+
37024 {3.84228325, 2.02466059}, //
+
37025 {3.84353328, 2.02861786}, //
+
37026 {3.84494996, 2.03270006}, //
+
37027 {3.84650254, 2.03680253}, //
+
37028 {3.84813762, 2.04082108}, //
+
37029 {3.84985566, 2.04475546}, //
+
37030 {3.8516562, 2.04860616}, //
+
37031 {3.85353947, 2.05237293}, //
+
37032 {3.85550547, 2.05605555}, //
+
37033 {3.85755444, 2.05965424}, //
+
37034 {3.8596859, 2.06316924}, //
+
37035 {3.86190009, 2.06660008}, //
+
37036 {3.86412477, 2.06988454}, //
+
37037 {3.86626554, 2.07296038}, //
+
37038 {3.86832213, 2.07582784}, //
+
37039 {3.87029505, 2.07848644}, //
+
37040 {3.87218404, 2.08093643}, //
+
37041 {3.87398887, 2.0831778}, //
+
37042 {3.87570977, 2.08521056}, //
+
37043 {3.87734699, 2.08703446}, //
+
37044 {3.87890005, 2.08864999}, //
+
37045 {3.88203645, 2.09088469}, //
+
37046 {3.88542342, 2.09307718}, //
+
37047 {3.88906121, 2.09522772}, //
+
37048 {3.89294934, 2.09733653}, //
+
37049 {3.89708829, 2.09940314}, //
+
37050 {3.90147781, 2.10142779}, //
+
37051 {3.90611792, 2.10341048}, //
+
37052 {3.9110086, 2.10535121}, //
+
37053 {3.91615009, 2.10724998}, //
+
37054 {3.92151117, 2.10911798}, //
+
37055 {3.92703891, 2.11094379}, //
+
37056 {3.9327333, 2.11272788}, //
+
37057 {3.93859434, 2.11446977}, //
+
37058 {3.94462228, 2.11616969}, //
+
37059 {3.95081663, 2.11782789}, //
+
37060 {3.95717788, 2.11944389}, //
+
37061 {3.96370554, 2.12101793}, //
+
37062 {3.97040009, 2.12255001}, //
+
37063 {3.9822464, 2.125561}, //
+
37064 {3.99367404, 2.12857223}, //
+
37065 {4.00468349, 2.13158345}, //
+
37066 {4.01527405, 2.13459444}, //
+
37067 {4.02544641, 2.13760567}, //
+
37068 {4.03520012, 2.14061666}, //
+
37069 {4.04453516, 2.14362788}, //
+
37070 {4.05345201, 2.14663887}, //
+
37071 {4.06195021, 2.1496501}, //
+
37072 {4.06647205, 2.1512444}, //
+
37073 {4.07099438, 2.1530056}, //
+
37074 {4.0755167, 2.15493321}, //
+
37075 {4.08003902, 2.15702772}, //
+
37076 {4.08456135, 2.15928888}, //
+
37077 {4.08908319, 2.1617167}, //
+
37078 {4.09360552, 2.16431117}, //
+
37079 {4.09812784, 2.1670723}, //
+
37080 {4.10265017, 2.17000008}, //
+
37081 {4.10951185, 2.17441726}, //
+
37082 {4.11654139, 2.17862463}, //
+
37083 {4.12373877, 2.18262219}, //
+
37084 {4.13110447, 2.18640995}, //
+
37085 {4.13863754, 2.18998766}, //
+
37086 {4.14633894, 2.19335556}, //
+
37087 {4.15420818, 2.19651365}, //
+
37088 {4.16224527, 2.1994617}, //
+
37089 {4.17045021, 2.20219994}, //
+
37090 {4.17869711, 2.20461369}, //
+
37091 {4.18686008, 2.20656538}, //
+
37092 {4.19493866, 2.2080555}, //
+
37093 {4.20293379, 2.20908403}, //
+
37094 {4.21084499, 2.20965052}, //
+
37095 {4.21867228, 2.20975566}, //
+
37096 {4.22641563, 2.20939875}, //
+
37097 {4.23407459, 2.20858026}, //
+
37098 {4.2416501, 2.20729995}, //
+
37099 {4.25149155, 2.20409989}, //
+
37100 {4.26141548, 2.20052218}, //
+
37101 {4.27142239, 2.19656658}, //
+
37102 {4.28151178, 2.19223332}, //
+
37103 {4.29168415, 2.18752217}, //
+
37104 {4.30193901, 2.18243337}, //
+
37105 {4.31227636, 2.17696667}, //
+
37106 {4.32269669, 2.17112231}, //
+
37107 {4.33319998, 2.16490006}, //
+
37108 {4.34358788, 2.15856242}, //
+
37109 {4.3536396, 2.15234947}, //
+
37110 {4.36335564, 2.14626122}, //
+
37111 {4.37273598, 2.14029741}, //
+
37112 {4.38178015, 2.13445854}, //
+
37113 {4.3904891, 2.12874436}, //
+
37114 {4.39886189, 2.12315488}, //
+
37115 {4.40689898, 2.11769009}, //
+
37116 {4.4145999, 2.11234999}, //
+
37117 {4.41908026, 2.10862541}, //
+
37118 {4.4234767, 2.10498452}, //
+
37119 {4.42778873, 2.10142779}, //
+
37120 {4.43201733, 2.09795499}, //
+
37121 {4.43616152, 2.09456611}, //
+
37122 {4.44022226, 2.09126115}, //
+
37123 {4.44419861, 2.08804011}, //
+
37124 {4.44809151, 2.084903}, //
+
37125 {4.45190001, 2.08185005}, //
+
37126 {4.45767164, 2.07812524}, //
+
37127 {4.46294212, 2.07448459}, //
+
37128 {4.46771097, 2.07092786}, //
+
37129 {4.47197914, 2.06745505}, //
+
37130 {4.47574568, 2.06406593}, //
+
37131 {4.47901106, 2.06076121}, //
+
37132 {4.48177528, 2.05754018}, //
+
37133 {4.48403835, 2.05440307}, //
+
37134 {4.48579979, 2.05135012}, //
+
37135 {4.48588324, 2.05051041}, //
+
37136 {4.4861331, 2.04950309}, //
+
37137 {4.48654985, 2.04832768}, //
+
37138 {4.4871335, 2.04698467}, //
+
37139 {4.48788357, 2.04547358}, //
+
37140 {4.48880005, 2.04379439}, //
+
37141 {4.48988342, 2.0419476}, //
+
37142 {4.49113321, 2.03993273}, //
+
37143 {4.4925499, 2.03775001}, //
+
37144 {4.49406099, 2.03545237}, //
+
37145 {4.49557209, 2.03307104}, //
+
37146 {4.49708319, 2.03060555}, //
+
37147 {4.49859428, 2.02805614}, //
+
37148 {4.50010538, 2.02542281}, //
+
37149 {4.50161648, 2.02270555}, //
+
37150 {4.50312757, 2.01990438}, //
+
37151 {4.50463867, 2.01701903}, //
+
37152 {4.50614977, 2.01405001}, //
+
37153 {4.50765085, 2.01104927}, //
+
37154 {4.50915241, 2.00809193}, //
+
37155 {4.5106554, 2.00517774}, //
+
37156 {4.51215982, 2.0023067}, //
+
37157 {4.5136652, 1.99947906}, //
+
37158 {4.515172, 1.99669445}, //
+
37159 {4.51668024, 1.99395311}, //
+
37160 {4.51818943, 1.99125493}, //
+
37161 {4.51970005, 1.98860002}, //
+
37162 {4.52118969, 1.98598707}, //
+
37163 {4.52263594, 1.98341477}, //
+
37164 {4.52403879, 1.98088336}, //
+
37165 {4.52539873, 1.9783926}, //
+
37166 {4.52671528, 1.97594261}, //
+
37167 {4.52798891, 1.97353339}, //
+
37168 {4.52921915, 1.97116482}, //
+
37169 {4.530406, 1.96883702}, //
+
37170 {4.53154993, 1.96654999}, //
+
37171 {4.53262043, 1.96437776}, //
+
37172 {4.53356504, 1.96237218}, //
+
37173 {4.5343833, 1.96053338}, //
+
37174 {4.53507614, 1.95886111}, //
+
37175 {4.53564262, 1.9573555}, //
+
37176 {4.53608322, 1.95601666}, //
+
37177 {4.53639793, 1.95484447}, //
+
37178 {4.53658724, 1.95383894}, //
+
37179 {4.53665018, 1.95299995}, //
+
37180 {4.53660822, 1.95232844}, //
+
37181 {4.53648233, 1.95182467}, //
+
37182 {4.53627205, 1.95148885}, //
+
37183 {4.53597832, 1.95132101}, //
+
37184 });
+
37185 polys.push_back({
+
37186 {1.57325006, 1.94620001}, //
+
37187 {1.57253647, 1.94850802}, //
+
37188 {1.57190681, 1.95089877}, //
+
37189 {1.57136106, 1.95337224}, //
+
37190 {1.57089937, 1.95592844}, //
+
37191 {1.57052159, 1.95856726}, //
+
37192 {1.57022774, 1.96128893}, //
+
37193 {1.57001793, 1.96409321}, //
+
37194 {1.56989193, 1.96698022}, //
+
37195 {1.56984997, 1.96994996}, //
+
37196 {1.56982899, 1.97221601}, //
+
37197 {1.56976604, 1.97448087}, //
+
37198 {1.56966114, 1.97674441}, //
+
37199 {1.56951416, 1.97900677}, //
+
37200 {1.56932533, 1.98126793}, //
+
37201 {1.56909442, 1.98352778}, //
+
37202 {1.56882155, 1.98578644}, //
+
37203 {1.56850684, 1.98804379}, //
+
37204 {1.56815004, 1.99030006}, //
+
37205 {1.56775188, 1.99255621}, //
+
37206 {1.56731296, 1.99481356}, //
+
37207 {1.56683338, 1.99707222}, //
+
37208 {1.56631291, 1.99933207}, //
+
37209 {1.56575191, 2.00159311}, //
+
37210 {1.56515002, 2.00385547}, //
+
37211 {1.56450737, 2.00611925}, //
+
37212 {1.56382406, 2.00838399}, //
+
37213 {1.56309998, 2.01064992}, //
+
37214 {1.56167281, 2.01069188}, //
+
37215 {1.5604136, 2.010818}, //
+
37216 {1.55932224, 2.01102781}, //
+
37217 {1.55839872, 2.01132154}, //
+
37218 {1.55764318, 2.01169944}, //
+
37219 {1.55705559, 2.01216102}, //
+
37220 {1.55663586, 2.01270676}, //
+
37221 {1.55638397, 2.01333642}, //
+
37222 {1.55630004, 2.01405001}, //
+
37223 {1.55476785, 2.01550865}, //
+
37224 {1.55319381, 2.01688457}, //
+
37225 {1.55157781, 2.01817775}, //
+
37226 {1.54991972, 2.0193882}, //
+
37227 {1.5482198, 2.02051616}, //
+
37228 {1.54647779, 2.02156115}, //
+
37229 {1.54469383, 2.0225234}, //
+
37230 {1.5428679, 2.02340317}, //
+
37231 {1.54100001, 2.02419996}, //
+
37232 {1.53897536, 2.02482963}, //
+
37233 {1.53665674, 2.02520752}, //
+
37234 {1.53404438, 2.0253334}, //
+
37235 {1.5311383, 2.02520752}, //
+
37236 {1.52793825, 2.02482963}, //
+
37237 {1.52444446, 2.02419996}, //
+
37238 {1.52065682, 2.02331853}, //
+
37239 {1.51657534, 2.02218509}, //
+
37240 {1.5122, 2.02080011}, //
+
37241 {1.50902164, 2.02008653}, //
+
37242 {1.50550866, 2.01945686}, //
+
37243 {1.50166106, 2.01891112}, //
+
37244 {1.49747896, 2.01844931}, //
+
37245 {1.49296236, 2.01807165}, //
+
37246 {1.48811114, 2.01777768}, //
+
37247 {1.4829253, 2.01756787}, //
+
37248 {1.47740495, 2.01744199}, //
+
37249 {1.47154999, 2.01740003}, //
+
37250 {1.46852839, 2.01667595}, //
+
37251 {1.46550798, 2.01599264}, //
+
37252 {1.46248889, 2.0153501}, //
+
37253 {1.45947099, 2.0147481}, //
+
37254 {1.45645428, 2.0141871}, //
+
37255 {1.45343888, 2.01366663}, //
+
37256 {1.45042467, 2.01318693}, //
+
37257 {1.44741178, 2.01274824}, //
+
37258 {1.44439995, 2.01235008}, //
+
37259 {1.44145119, 2.01193023}, //
+
37260 {1.43862712, 2.01142645}, //
+
37261 {1.43592775, 2.01083899}, //
+
37262 {1.43335307, 2.01016736}, //
+
37263 {1.43090308, 2.00941181}, //
+
37264 {1.42857778, 2.00857234}, //
+
37265 {1.42637718, 2.00764871}, //
+
37266 {1.42430127, 2.00664139}, //
+
37267 {1.42235005, 2.00554991}, //
+
37268 {1.42061853, 2.00443816}, //
+
37269 {1.41917968, 2.00336981}, //
+
37270 {1.41803336, 2.00234437}, //
+
37271 {1.41717958, 2.00136232}, //
+
37272 {1.41661847, 2.00042343}, //
+
37273 {1.41635001, 1.99952781}, //
+
37274 {1.41637409, 1.99867535}, //
+
37275 {1.41669071, 1.99786603}, //
+
37276 {1.41729999, 1.9971}, //
+
37277 {1.41800308, 1.9955889}, //
+
37278 {1.41862345, 1.9940778}, //
+
37279 {1.41916108, 1.9925667}, //
+
37280 {1.4196161, 1.99105561}, //
+
37281 {1.41998827, 1.98954439}, //
+
37282 {1.42027783, 1.98803329}, //
+
37283 {1.42048454, 1.9865222}, //
+
37284 {1.42060864, 1.9850111}, //
+
37285 {1.42065001, 1.9835}, //
+
37286 {1.42138457, 1.98275495}, //
+
37287 {1.42207718, 1.9820087}, //
+
37288 {1.42272782, 1.98126113}, //
+
37289 {1.42333639, 1.98051238}, //
+
37290 {1.42390311, 1.97976232}, //
+
37291 {1.42442775, 1.97901106}, //
+
37292 {1.42491055, 1.97825861}, //
+
37293 {1.42535126, 1.97750497}, //
+
37294 {1.42575002, 1.97675002}, //
+
37295 {1.42621112, 1.97603643}, //
+
37296 {1.42683887, 1.97540677}, //
+
37297 {1.42763329, 1.97486115}, //
+
37298 {1.42859447, 1.97439933}, //
+
37299 {1.42972219, 1.97402155}, //
+
37300 {1.43101668, 1.97372782}, //
+
37301 {1.43247783, 1.97351789}, //
+
37302 {1.43410552, 1.97339201}, //
+
37303 {1.43589997, 1.97335005}, //
+
37304 {1.43789315, 1.97339201}, //
+
37305 {1.44009507, 1.97351789}, //
+
37306 {1.4425056, 1.97372782}, //
+
37307 {1.44512475, 1.97402155}, //
+
37308 {1.44795251, 1.97439933}, //
+
37309 {1.45098889, 1.97486115}, //
+
37310 {1.454234, 1.97540677}, //
+
37311 {1.45768762, 1.97603643}, //
+
37312 {1.46134996, 1.97675002}, //
+
37313 {1.47008026, 1.97885931}, //
+
37314 {1.47818208, 1.98067594}, //
+
37315 {1.48565555, 1.98220003}, //
+
37316 {1.49250066, 1.98343146}, //
+
37317 {1.49871731, 1.98437035}, //
+
37318 {1.5043056, 1.9850167}, //
+
37319 {1.50926542, 1.9853704}, //
+
37320 {1.51359689, 1.98543143}, //
+
37321 {1.51730001, 1.98520005}, //
+
37322 {1.52050066, 1.98463392}, //
+
37323 {1.52332473, 1.98369133}, //
+
37324 {1.52577221, 1.98237216}, //
+
37325 {1.52784324, 1.98067653}, //
+
37326 {1.52953768, 1.97860432}, //
+
37327 {1.53085554, 1.97615552}, //
+
37328 {1.53179693, 1.97333026}, //
+
37329 {1.53236175, 1.97012842}, //
+
37330 {1.53254998, 1.96654999}, //
+
37331 {1.53250802, 1.96427286}, //
+
37332 {1.53238213, 1.96195245}, //
+
37333 {1.5321722, 1.95958889}, //
+
37334 {1.53187835, 1.95718205}, //
+
37335 {1.53150058, 1.95473206}, //
+
37336 {1.53103888, 1.95223892}, //
+
37337 {1.53049326, 1.9497025}, //
+
37338 {1.5298636, 1.94712281}, //
+
37339 {1.52915001, 1.94449997}, //
+
37340 {1.52836299, 1.94197094}, //
+
37341 {1.52749074, 1.93965065}, //
+
37342 {1.52653337, 1.93753886}, //
+
37343 {1.52549076, 1.93563581}, //
+
37344 {1.52436292, 1.93394136}, //
+
37345 {1.52314997, 1.93245554}, //
+
37346 {1.5218519, 1.93117845}, //
+
37347 {1.52046847, 1.93010986}, //
+
37348 {1.51900005, 1.92925}, //
+
37349 {1.51744747, 1.92863023}, //
+
37350 {1.5158124, 1.92825985}, //
+
37351 {1.51409447, 1.92813885}, //
+
37352 {1.51229382, 1.92826724}, //
+
37353 {1.51041055, 1.92864501}, //
+
37354 {1.50844443, 1.92927217}, //
+
37355 {1.5063957, 1.93014872}, //
+
37356 {1.50426424, 1.93127465}, //
+
37357 {1.50205004, 1.93264997}, //
+
37358 {1.49815738, 1.93557775}, //
+
37359 {1.49401295, 1.93833888}, //
+
37360 {1.48961663, 1.94093335}, //
+
37361 {1.48496854, 1.94336116}, //
+
37362 {1.48006856, 1.94562221}, //
+
37363 {1.4749167, 1.94771671}, //
+
37364 {1.46951294, 1.94964445}, //
+
37365 {1.46385741, 1.95140553}, //
+
37366 {1.45795, 1.95299995}, //
+
37367 {1.4542253, 1.95451045}, //
+
37368 {1.45058453, 1.95601976}, //
+
37369 {1.4470278, 1.95752776}, //
+
37370 {1.443555, 1.95903456}, //
+
37371 {1.440166, 1.96054018}, //
+
37372 {1.43686116, 1.96204448}, //
+
37373 {1.43364012, 1.96354759}, //
+
37374 {1.43050313, 1.96504939}, //
+
37375 {1.42744994, 1.96654999}, //
+
37376 {1.42598081, 1.96732652}, //
+
37377 {1.42459571, 1.96814501}, //
+
37378 {1.42329443, 1.96900558}, //
+
37379 {1.42207718, 1.969908}, //
+
37380 {1.42094386, 1.97085249}, //
+
37381 {1.41989446, 1.97183883}, //
+
37382 {1.41892898, 1.97286725}, //
+
37383 {1.41804755, 1.97393763}, //
+
37384 {1.41725004, 1.97504997}, //
+
37385 {1.41654694, 1.97616172}, //
+
37386 {1.41592658, 1.97723019}, //
+
37387 {1.41538894, 1.97825551}, //
+
37388 {1.41493392, 1.97923768}, //
+
37389 {1.41456175, 1.98017657}, //
+
37390 {1.41427219, 1.98107219}, //
+
37391 {1.41406548, 1.98192465}, //
+
37392 {1.41394138, 1.98273396}, //
+
37393 {1.41390002, 1.9835}, //
+
37394 {1.41314447, 1.98496914}, //
+
37395 {1.41238892, 1.98635435}, //
+
37396 {1.41163337, 1.98765552}, //
+
37397 {1.41087782, 1.98887289}, //
+
37398 {1.41012228, 1.99000621}, //
+
37399 {1.40936661, 1.99105561}, //
+
37400 {1.40861106, 1.99202096}, //
+
37401 {1.40785551, 1.99290252}, //
+
37402 {1.40709996, 1.99370003}, //
+
37403 {1.40626109, 1.99445498}, //
+
37404 {1.40525556, 1.99520862}, //
+
37405 {1.40408337, 1.99596107}, //
+
37406 {1.40274441, 1.99671233}, //
+
37407 {1.40123892, 1.99746239}, //
+
37408 {1.39956665, 1.99821115}, //
+
37409 {1.39772773, 1.99895859}, //
+
37410 {1.39572227, 1.99970496}, //
+
37411 {1.39355004, 2.0004499}, //
+
37412 {1.38961542, 2.00128889}, //
+
37413 {1.3853451, 2.00229454}, //
+
37414 {1.38073885, 2.00346661}, //
+
37415 {1.37579691, 2.00480556}, //
+
37416 {1.37051916, 2.00631118}, //
+
37417 {1.3649056, 2.00798345}, //
+
37418 {1.35895622, 2.00982213}, //
+
37419 {1.35267103, 2.01182771}, //
+
37420 {1.34605002, 2.01399994}, //
+
37421 {1.33929265, 2.01626611}, //
+
37422 {1.33257592, 2.01853085}, //
+
37423 {1.32589996, 2.02079439}, //
+
37424 {1.31926477, 2.02305675}, //
+
37425 {1.31267035, 2.02531791}, //
+
37426 {1.3061167, 2.02757788}, //
+
37427 {1.2996037, 2.02983642}, //
+
37428 {1.29313147, 2.03209376}, //
+
37429 {1.28670001, 2.03434992}, //
+
37430 {1.28057218, 2.0365746}, //
+
37431 {1.27498889, 2.03871536}, //
+
37432 {1.26995003, 2.0407722}, //
+
37433 {1.2654556, 2.04274511}, //
+
37434 {1.2615056, 2.04463387}, //
+
37435 {1.25810003, 2.04643893}, //
+
37436 {1.25523889, 2.04815984}, //
+
37437 {1.25292218, 2.04979682}, //
+
37438 {1.25115001, 2.05135012}, //
+
37439 {1.24846363, 2.0539968}, //
+
37440 {1.24775004, 2.0546999}, //
+
37441 {1.24693143, 2.05618954}, //
+
37442 {1.24598706, 2.05763578}, //
+
37443 {1.24491668, 2.05903888}, //
+
37444 {1.24372041, 2.06039882}, //
+
37445 {1.24239814, 2.06171536}, //
+
37446 {1.24094999, 2.062989}, //
+
37447 {1.23937595, 2.06421924}, //
+
37448 {1.23767591, 2.06540608}, //
+
37449 {1.23584998, 2.06655002}, //
+
37450 {1.23378336, 2.06762028}, //
+
37451 {1.23133886, 2.06856489}, //
+
37452 {1.2285167, 2.06938338}, //
+
37453 {1.22531664, 2.07007599}, //
+
37454 {1.22173893, 2.07064271}, //
+
37455 {1.21778333, 2.07108331}, //
+
37456 {1.21344995, 2.07139826}, //
+
37457 {1.20873892, 2.07158709}, //
+
37458 {1.20365, 2.07165003}, //
+
37459 {1.19977844, 2.07175493}, //
+
37460 {1.19569695, 2.07206964}, //
+
37461 {1.19140553, 2.0725944}, //
+
37462 {1.18690431, 2.07332897}, //
+
37463 {1.18219316, 2.07427335}, //
+
37464 {1.1772722, 2.07542777}, //
+
37465 {1.17214131, 2.076792}, //
+
37466 {1.16680062, 2.07836604}, //
+
37467 {1.16125, 2.08014989}, //
+
37468 {1.15550065, 2.08214331}, //
+
37469 {1.14954138, 2.0843451}, //
+
37470 {1.14337218, 2.08675551}, //
+
37471 {1.13699317, 2.08937478}, //
+
37472 {1.13040435, 2.09220243}, //
+
37473 {1.12360561, 2.09523892}, //
+
37474 {1.11659694, 2.09848404}, //
+
37475 {1.10937834, 2.10193777}, //
+
37476 {1.10195005, 2.10560012}, //
+
37477 {1.09319878, 2.10852718}, //
+
37478 {1.08503389, 2.1112864}, //
+
37479 {1.07745552, 2.11387777}, //
+
37480 {1.07046354, 2.1163013}, //
+
37481 {1.06405807, 2.11855674}, //
+
37482 {1.05823886, 2.12064433}, //
+
37483 {1.05300617, 2.12256432}, //
+
37484 {1.04835987, 2.12431598}, //
+
37485 {1.04429996, 2.12590003}, //
+
37486 {1.03075004, 2.12590003}, //
+
37487 {1.02522099, 2.12667656}, //
+
37488 {1.01918948, 2.12749505}, //
+
37489 {1.0126555, 2.1283555}, //
+
37490 {1.00561917, 2.12925792}, //
+
37491 {0.998080254, 2.13020253}, //
+
37492 {0.990038872, 2.13118887}, //
+
37493 {0.981495082, 2.13221717}, //
+
37494 {0.972448766, 2.13328767}, //
+
37495 {0.962899983, 2.13439989}, //
+
37496 {0.953194439, 2.13547039}, //
+
37497 {0.94365555, 2.13641477}, //
+
37498 {0.934283316, 2.13723326}, //
+
37499 {0.925077796, 2.13792586}, //
+
37500 {0.916038871, 2.13849258}, //
+
37501 {0.90716666, 2.13893342}, //
+
37502 {0.898461103, 2.13924813}, //
+
37503 {0.889922202, 2.13943696}, //
+
37504 {0.881550014, 2.1394999}, //
+
37505 {0.871906817, 2.13956237}, //
+
37506 {0.862554967, 2.13974929}, //
+
37507 {0.853494465, 2.14006114}, //
+
37508 {0.844725311, 2.14049745}, //
+
37509 {0.836247504, 2.14105868}, //
+
37510 {0.828061104, 2.14174438}, //
+
37511 {0.820166051, 2.142555}, //
+
37512 {0.812562346, 2.14349008}, //
+
37513 {0.805249989, 2.14455009}, //
+
37514 {0.798491955, 2.14562035}, //
+
37515 {0.792528987, 2.14656472}, //
+
37516 {0.78298825, 2.14807582}, //
+
37517 {0.779410481, 2.14864254}, //
+
37518 {0.776627779, 2.14908338}, //
+
37519 {0.774640143, 2.14939809}, //
+
37520 {0.773447514, 2.14958715}, //
+
37521 {0.77305001, 2.1496501}, //
+
37522 {0.773280263, 2.14967108}, //
+
37523 {0.773970962, 2.14973402}, //
+
37524 {0.775122225, 2.14983892}, //
+
37525 {0.776733935, 2.14998579}, //
+
37526 {0.791700006, 2.15135002}, //
+
37527 {0.795907378, 2.15172768}, //
+
37528 {0.800240755, 2.15210557}, //
+
37529 {0.804700017, 2.15248322}, //
+
37530 {0.809285164, 2.15286112}, //
+
37531 {0.813996315, 2.15323877}, //
+
37532 {0.818833351, 2.15361667}, //
+
37533 {0.823796272, 2.15399456}, //
+
37534 {0.828885198, 2.15437222}, //
+
37535 {0.834100008, 2.15475011}, //
+
37536 {0.839440107, 2.15512776}, //
+
37537 {0.844904959, 2.15550566}, //
+
37538 {0.850494444, 2.15588331}, //
+
37539 {0.856208622, 2.15626121}, //
+
37540 {0.862047553, 2.15663886}, //
+
37541 {0.868011117, 2.15701675}, //
+
37542 {0.874099374, 2.15739441}, //
+
37543 {0.880312324, 2.1577723}, //
+
37544 {0.886650026, 2.15814996}, //
+
37545 {0.892903686, 2.15850687}, //
+
37546 {0.898864806, 2.15882158}, //
+
37547 {0.904533327, 2.15909433}, //
+
37548 {0.909909248, 2.15932536}, //
+
37549 {0.914992571, 2.15951419}, //
+
37550 {0.919783354, 2.15966105}, //
+
37551 {0.924281478, 2.15976596}, //
+
37552 {0.928487062, 2.1598289}, //
+
37553 {0.932399988, 2.15984988}, //
+
37554 {0.941569746, 2.15978694}, //
+
37555 {0.95099014, 2.15959811}, //
+
37556 {0.960661113, 2.1592834}, //
+
37557 {0.970582724, 2.15884256}, //
+
37558 {0.980754912, 2.15827584}, //
+
37559 {0.991177797, 2.15758324}, //
+
37560 {1.0018512, 2.15676475}, //
+
37561 {1.0127753, 2.15582037}, //
+
37562 {1.02394998, 2.15475011}, //
+
37563 {1.03513455, 2.15363765}, //
+
37564 {1.04606605, 2.15256739}, //
+
37565 {1.05674446, 2.15153885}, //
+
37566 {1.06716979, 2.15055251}, //
+
37567 {1.07734203, 2.14960814}, //
+
37568 {1.08726108, 2.14870548}, //
+
37569 {1.09692717, 2.14784503}, //
+
37570 {1.10634017, 2.14702654}, //
+
37571 {1.11549997, 2.14625001}, //
+
37572 {1.12517405, 2.14466548}, //
+
37573 {1.13459635, 2.14291167}, //
+
37574 {1.14376664, 2.14098883}, //
+
37575 {1.15268517, 2.13889694}, //
+
37576 {1.1613518, 2.13663578}, //
+
37577 {1.16976666, 2.13420558}, //
+
37578 {1.17792964, 2.1316061}, //
+
37579 {1.18584073, 2.12883759}, //
+
37580 {1.19350004, 2.12590003}, //
+
37581 {1.1987772, 2.12368584}, //
+
37582 {1.20405304, 2.12155437}, //
+
37583 {1.20932782, 2.11950564}, //
+
37584 {1.21460128, 2.11753941}, //
+
37585 {1.21987343, 2.11565614}, //
+
37586 {1.22514439, 2.1138556}, //
+
37587 {1.23041415, 2.11213756}, //
+
37588 {1.23568273, 2.11050248}, //
+
37589 {1.24094999, 2.1089499}, //
+
37590 {1.24618578, 2.10732412}, //
+
37591 {1.25133765, 2.10544634}, //
+
37592 {1.25640559, 2.10331678}, //
+
37593 {1.26138949, 2.10093522}, //
+
37594 {1.26628947, 2.09830189}, //
+
37595 {1.27110553, 2.09541678}, //
+
37596 {1.27583766, 2.09227967}, //
+
37597 {1.28048575, 2.08889079}, //
+
37598 {1.28505003, 2.0852499}, //
+
37599 {1.29333889, 2.08097911}, //
+
37600 {1.30162776, 2.07721043}, //
+
37601 {1.30991662, 2.07394433}, //
+
37602 {1.3182056, 2.07118082}, //
+
37603 {1.32649446, 2.06891966}, //
+
37604 {1.33478332, 2.06716108}, //
+
37605 {1.34307218, 2.06590486}, //
+
37606 {1.35136116, 2.06515121}, //
+
37607 {1.35965002, 2.06489992}, //
+
37608 {1.36672103, 2.06485796}, //
+
37609 {1.37437844, 2.06473207}, //
+
37610 {1.38262224, 2.06452227}, //
+
37611 {1.39145243, 2.0642283}, //
+
37612 {1.40086913, 2.06385064}, //
+
37613 {1.41087222, 2.06338882}, //
+
37614 {1.4214617, 2.06284332}, //
+
37615 {1.43263769, 2.06221366}, //
+
37616 {1.44439995, 2.06150007}, //
+
37617 {1.45256293, 2.0607655}, //
+
37618 {1.46047413, 2.0600729}, //
+
37619 {1.46813333, 2.05942225}, //
+
37620 {1.47554076, 2.05881357}, //
+
37621 {1.48269629, 2.05824685}, //
+
37622 {1.48959994, 2.05772233}, //
+
37623 {1.49625182, 2.05723953}, //
+
37624 {1.50265181, 2.0567987}, //
+
37625 {1.50880003, 2.05640006}, //
+
37626 {1.51462412, 2.05608511}, //
+
37627 {1.52002966, 2.05589628}, //
+
37628 {1.52501667, 2.05583334}, //
+
37629 {1.52958524, 2.05589628}, //
+
37630 {1.53373516, 2.05608511}, //
+
37631 {1.53746665, 2.05640006}, //
+
37632 {1.54077959, 2.05684066}, //
+
37633 {1.54367411, 2.05740738}, //
+
37634 {1.54614997, 2.05809999}, //
+
37635 {1.54769254, 2.05809999}, //
+
37636 {1.54932034, 2.05809999}, //
+
37637 {1.56309998, 2.05809999}, //
+
37638 {1.56680369, 2.05883455}, //
+
37639 {1.57038152, 2.05952716}, //
+
37640 {1.57383335, 2.0601778}, //
+
37641 {1.57715929, 2.06078649}, //
+
37642 {1.58035922, 2.06135297}, //
+
37643 {1.58343339, 2.06187773}, //
+
37644 {1.58638144, 2.06236053}, //
+
37645 {1.58920372, 2.06280112}, //
+
37646 {1.59189999, 2.0632}, //
+
37647 {1.59438705, 2.06364012}, //
+
37648 {1.59658146, 2.06420493}, //
+
37649 {1.59848332, 2.06489444}, //
+
37650 {1.60009265, 2.06570864}, //
+
37651 {1.60140932, 2.06664753}, //
+
37652 {1.60243332, 2.06771111}, //
+
37653 {1.60316479, 2.06889939}, //
+
37654 {1.60360372, 2.07021236}, //
+
37655 {1.60374999, 2.07165003}, //
+
37656 {1.60374999, 2.07240558}, //
+
37657 {1.60374999, 2.07316113}, //
+
37658 {1.60374999, 2.07391667}, //
+
37659 {1.60374999, 2.07844996}, //
+
37660 {1.6044426, 2.08000255}, //
+
37661 {1.60500932, 2.08163762}, //
+
37662 {1.60545003, 2.08335567}, //
+
37663 {1.60576487, 2.0851562}, //
+
37664 {1.60595369, 2.08703947}, //
+
37665 {1.60601664, 2.08900547}, //
+
37666 {1.60595369, 2.09105444}, //
+
37667 {1.60576487, 2.0931859}, //
+
37668 {1.60545003, 2.09540009}, //
+
37669 {1.60496795, 2.09754086}, //
+
37670 {1.60427713, 2.09942961}, //
+
37671 {1.60337782, 2.10106659}, //
+
37672 {1.60226977, 2.1024518}, //
+
37673 {1.6009531, 2.10358524}, //
+
37674 {1.59942782, 2.10446668}, //
+
37675 {1.5976938, 2.10509634}, //
+
37676 {1.59575129, 2.105474}, //
+
37677 {1.59360003, 2.10560012}, //
+
37678 {1.59116602, 2.10562038}, //
+
37679 {1.5883975, 2.10568142}, //
+
37680 {1.58529449, 2.10578322}, //
+
37681 {1.58185685, 2.10592604}, //
+
37682 {1.57808459, 2.10610914}, //
+
37683 {1.57397783, 2.10633326}, //
+
37684 {1.56953645, 2.10659814}, //
+
37685 {1.56476045, 2.10690379}, //
+
37686 {1.55964994, 2.10724998}, //
+
37687 {1.55442464, 2.10762787}, //
+
37688 {1.54928207, 2.10800552}, //
+
37689 {1.54422224, 2.10838342}, //
+
37690 {1.53924501, 2.10876107}, //
+
37691 {1.53435063, 2.10913897}, //
+
37692 {1.52953887, 2.10951662}, //
+
37693 {1.52480984, 2.10989451}, //
+
37694 {1.52016354, 2.11027217}, //
+
37695 {1.51559997, 2.11065006}, //
+
37696 {1.51124573, 2.1110487}, //
+
37697 {1.50722718, 2.11148953}, //
+
37698 {1.50354445, 2.11197233}, //
+
37699 {1.50019753, 2.11249685}, //
+
37700 {1.49718642, 2.11306357}, //
+
37701 {1.49451113, 2.11367226}, //
+
37702 {1.49217165, 2.1143229}, //
+
37703 {1.49016786, 2.11501551}, //
+
37704 {1.4885, 2.11575007}, //
+
37705 {1.48686361, 2.11652589}, //
+
37706 {1.48497653, 2.11734271}, //
+
37707 {1.48283887, 2.11820006}, //
+
37708 {1.48045063, 2.11909819}, //
+
37709 {1.47781169, 2.12003708}, //
+
37710 {1.47492218, 2.12101674}, //
+
37711 {1.47178209, 2.12203693}, //
+
37712 {1.4683913, 2.12309813}, //
+
37713 {1.46475005, 2.12420011}, //
+
37714 {1.46102464, 2.12533331}, //
+
37715 {1.45738208, 2.12646675}, //
+
37716 {1.45382226, 2.12759995}, //
+
37717 {1.45034504, 2.1287334}, //
+
37718 {1.44695067, 2.1298666}, //
+
37719 {1.44363892, 2.13100004}, //
+
37720 {1.4404099, 2.13213325}, //
+
37721 {1.43726361, 2.13326669}, //
+
37722 {1.43420005, 2.13439989}, //
+
37723 {1.43127286, 2.13547039}, //
+
37724 {1.42851353, 2.13641477}, //
+
37725 {1.42592227, 2.13723326}, //
+
37726 {1.42349875, 2.13792586}, //
+
37727 {1.42124319, 2.13849258}, //
+
37728 {1.4191556, 2.13893342}, //
+
37729 {1.41723585, 2.13924813}, //
+
37730 {1.41548395, 2.13943696}, //
+
37731 {1.41390002, 2.1394999}, //
+
37732 {1.41293514, 2.13954139}, //
+
37733 {1.41155183, 2.13966537}, //
+
37734 {1.40974998, 2.13987231}, //
+
37735 {1.40752959, 2.14016175}, //
+
37736 {1.40489078, 2.14053392}, //
+
37737 {1.4018333, 2.14098883}, //
+
37738 {1.39835739, 2.14152646}, //
+
37739 {1.39446294, 2.14214683}, //
+
37740 {1.39014995, 2.14284992}, //
+
37741 {1.38562775, 2.14360547}, //
+
37742 {1.38110554, 2.14436102}, //
+
37743 {1.37658334, 2.14511657}, //
+
37744 {1.36753893, 2.14662766}, //
+
37745 {1.36301672, 2.14738345}, //
+
37746 {1.3584944, 2.148139}, //
+
37747 {1.3539722, 2.14889455}, //
+
37748 {1.34944999, 2.1496501}, //
+
37749 {1.34497964, 2.15036368}, //
+
37750 {1.34059072, 2.15099311}, //
+
37751 {1.33628333, 2.15153885}, //
+
37752 {1.33205736, 2.15200067}, //
+
37753 {1.32791293, 2.15237832}, //
+
37754 {1.32385004, 2.15267229}, //
+
37755 {1.31986856, 2.1528821}, //
+
37756 {1.31596851, 2.15300798}, //
+
37757 {1.31215, 2.15304995}, //
+
37758 {1.31060743, 2.15376353}, //
+
37759 {1.30897963, 2.1543932}, //
+
37760 {1.30726671, 2.15493894}, //
+
37761 {1.30546856, 2.15540051}, //
+
37762 {1.30358517, 2.15577841}, //
+
37763 {1.30161667, 2.15607214}, //
+
37764 {1.29956293, 2.15628219}, //
+
37765 {1.29742408, 2.15640807}, //
+
37766 {1.29519999, 2.15645003}, //
+
37767 {1.29357409, 2.15651226}, //
+
37768 {1.29169631, 2.15669942}, //
+
37769 {1.28956664, 2.15701103}, //
+
37770 {1.28718519, 2.15744758}, //
+
37771 {1.28455186, 2.15800858}, //
+
37772 {1.28166664, 2.15869451}, //
+
37773 {1.27852964, 2.15950489}, //
+
37774 {1.27514076, 2.16044021}, //
+
37775 {1.27149999, 2.16149998}, //
+
37776 {1.26775372, 2.16263342}, //
+
37777 {1.2640481, 2.16376662}, //
+
37778 {1.26038337, 2.16490006}, //
+
37779 {1.25675929, 2.16603327}, //
+
37780 {1.25317597, 2.16716671}, //
+
37781 {1.24963331, 2.16829991}, //
+
37782 {1.24613154, 2.16943336}, //
+
37783 {1.24267042, 2.17056656}, //
+
37784 {1.23924994, 2.1717}, //
+
37785 {1.23588204, 2.17285371}, //
+
37786 {1.23255622, 2.17404819}, //
+
37787 {1.22927225, 2.17528343}, //
+
37788 {1.22603023, 2.17655921}, //
+
37789 {1.2228303, 2.177876}, //
+
37790 {1.2196722, 2.17923331}, //
+
37791 {1.21656501, 2.18062758}, //
+
37792 {1.22063577, 2.17930317}, //
+
37793 {1.22930253, 2.17685318}, //
+
37794 {1.23872221, 2.17452788}, //
+
37795 {1.24889505, 2.17232704}, //
+
37796 {1.25982094, 2.17025113}, //
+
37797 {1.27149999, 2.16829991}, //
+
37798 {1.2833463, 2.16652656}, //
+
37799 {1.29477406, 2.16496181}, //
+
37800 {1.30578339, 2.16360545}, //
+
37801 {1.31637406, 2.16245794}, //
+
37802 {1.32654631, 2.16151905}, //
+
37803 {1.33630002, 2.16078877}, //
+
37804 {1.34563518, 2.16026735}, //
+
37805 {1.35455191, 2.15995431}, //
+
37806 {1.36304998, 2.15984988}, //
+
37807 {1.36911416, 2.15989137}, //
+
37808 {1.37526238, 2.16001534}, //
+
37809 {1.3814944, 2.16022229}, //
+
37810 {1.38781047, 2.16051173}, //
+
37811 {1.39421046, 2.1608839}, //
+
37812 {1.40069449, 2.16133881}, //
+
37813 {1.40726233, 2.16187644}, //
+
37814 {1.4139142, 2.16249681}, //
+
37815 {1.42065001, 2.1631999}, //
+
37816 {1.43175125, 2.16450191}, //
+
37817 {1.44243276, 2.16538525}, //
+
37818 {1.45269442, 2.16584992}, //
+
37819 {1.46253645, 2.16589618}, //
+
37820 {1.47195864, 2.16552401}, //
+
37821 {1.48096108, 2.16473341}, //
+
37822 {1.4895438, 2.16352415}, //
+
37823 {1.49770677, 2.16189623}, //
+
37824 {1.50545001, 2.15984988}, //
+
37825 {1.50932097, 2.1576252}, //
+
37826 {1.51340067, 2.15548468}, //
+
37827 {1.51768887, 2.15342784}, //
+
37828 {1.5221858, 2.15145493}, //
+
37829 {1.52689135, 2.14956594}, //
+
37830 {1.53180552, 2.14776111}, //
+
37831 {1.53692842, 2.1460402}, //
+
37832 {1.54225993, 2.14440298}, //
+
37833 {1.54779994, 2.14284992}, //
+
37834 {1.55335057, 2.14143324}, //
+
37835 {1.55869138, 2.14018345}, //
+
37836 {1.56382227, 2.13910007}, //
+
37837 {1.56874323, 2.13818336}, //
+
37838 {1.57345438, 2.13743329}, //
+
37839 {1.5779556, 2.13685012}, //
+
37840 {1.5822469, 2.13643336}, //
+
37841 {1.58632839, 2.13618326}, //
+
37842 {1.59019995, 2.13610005}, //
+
37843 {1.59179449, 2.13605809}, //
+
37844 {1.59355557, 2.13593221}, //
+
37845 {1.5954833, 2.13572216}, //
+
37846 {1.59757781, 2.13542843}, //
+
37847 {1.59983885, 2.13505054}, //
+
37848 {1.60226667, 2.13458896}, //
+
37849 {1.60486114, 2.13404322}, //
+
37850 {1.60762227, 2.13341355}, //
+
37851 {1.61055005, 2.13269997}, //
+
37852 {1.6143167, 2.13267899}, //
+
37853 {1.61808336, 2.13261604}, //
+
37854 {1.62185001, 2.13251114}, //
+
37855 {1.62561667, 2.13236427}, //
+
37856 {1.62938333, 2.13217521}, //
+
37857 {1.63314998, 2.13194442}, //
+
37858 {1.63691664, 2.13167167}, //
+
37859 {1.64068329, 2.13135672}, //
+
37860 {1.64444995, 2.13100004}, //
+
37861 {1.64800739, 2.13076925}, //
+
37862 {1.65114629, 2.1308322}, //
+
37863 {1.65386665, 2.13118887}, //
+
37864 {1.65616846, 2.13183951}, //
+
37865 {1.65805185, 2.13278389}, //
+
37866 {1.65951669, 2.13402224}, //
+
37867 {1.66056299, 2.13555431}, //
+
37868 {1.66119075, 2.13738036}, //
+
37869 {1.66139996, 2.1394999}, //
+
37870 {1.661358, 2.1403389}, //
+
37871 {1.66123211, 2.14134455}, //
+
37872 {1.66102219, 2.14251661}, //
+
37873 {1.66072845, 2.14385557}, //
+
37874 {1.66035056, 2.14536119}, //
+
37875 {1.65988886, 2.14703321}, //
+
37876 {1.65934324, 2.14887214}, //
+
37877 {1.65871358, 2.15087771}, //
+
37878 {1.65799999, 2.15304995}, //
+
37879 {1.65725493, 2.15530562}, //
+
37880 {1.65650868, 2.15756106}, //
+
37881 {1.65576112, 2.15981674}, //
+
37882 {1.65501237, 2.16207218}, //
+
37883 {1.6542623, 2.16432786}, //
+
37884 {1.65351117, 2.1665833}, //
+
37885 {1.6527586, 2.16883898}, //
+
37886 {1.65200496, 2.17109442}, //
+
37887 {1.65125, 2.1733501}, //
+
37888 {1.65047348, 2.17557478}, //
+
37889 {1.64965498, 2.17771554}, //
+
37890 {1.64879441, 2.17977214}, //
+
37891 {1.647892, 2.18174505}, //
+
37892 {1.6469475, 2.18363404}, //
+
37893 {1.64596117, 2.18543887}, //
+
37894 {1.64493275, 2.18715978}, //
+
37895 {1.64386237, 2.188797}, //
+
37896 {1.64275002, 2.19035006}, //
+
37897 {1.64073515, 2.19303632}, //
+
37898 {1.63991666, 2.1941278}, //
+
37899 {1.63765001, 2.19714999}, //
+
37900 {1.64302289, 2.19312048}, //
+
37901 {1.64444995, 2.19204998}, //
+
37902 {1.64596045, 2.19087458}, //
+
37903 {1.64746976, 2.18961549}, //
+
37904 {1.64897776, 2.18827224}, //
+
37905 {1.65048456, 2.18684506}, //
+
37906 {1.65199018, 2.18533397}, //
+
37907 {1.65349448, 2.18373895}, //
+
37908 {1.65499759, 2.18205976}, //
+
37909 {1.65649939, 2.1802969}, //
+
37910 {1.65799999, 2.17845011}, //
+
37911 {1.65951049, 2.17659259}, //
+
37912 {1.6610198, 2.17477584}, //
+
37913 {1.6625278, 2.1730001}, //
+
37914 {1.66403461, 2.17126489}, //
+
37915 {1.6655401, 2.16957045}, //
+
37916 {1.6670444, 2.16791677}, //
+
37917 {1.66854751, 2.16630363}, //
+
37918 {1.67004943, 2.1647315}, //
+
37919 {1.67155004, 2.1631999}, //
+
37920 {1.67306113, 2.16174126}, //
+
37921 {1.67457223, 2.16036534}, //
+
37922 {1.67608333, 2.15907216}, //
+
37923 {1.67759442, 2.15786171}, //
+
37924 {1.67910552, 2.15673399}, //
+
37925 {1.68061662, 2.155689}, //
+
37926 {1.68212783, 2.15472651}, //
+
37927 {1.68363893, 2.15384698}, //
+
37928 {1.68515003, 2.15304995}, //
+
37929 {1.68515003, 2.15304995}, //
+
37930 {1.68515003, 2.15304995}, //
+
37931 {1.68738461, 2.15155983}, //
+
37932 {1.6895771, 2.15011168}, //
+
37933 {1.69172776, 2.14870548}, //
+
37934 {1.69383645, 2.14734125}, //
+
37935 {1.69590306, 2.14601922}, //
+
37936 {1.69792783, 2.14473891}, //
+
37937 {1.69991052, 2.14350057}, //
+
37938 {1.70185125, 2.14230442}, //
+
37939 {1.70375001, 2.14115}, //
+
37940 {1.70545065, 2.14000607}, //
+
37941 {1.70677471, 2.13881922}, //
+
37942 {1.70772219, 2.13758898}, //
+
37943 {1.7082932, 2.13631535}, //
+
37944 {1.70848763, 2.1349988}, //
+
37945 {1.7083056, 2.13363886}, //
+
37946 {1.70774686, 2.13223577}, //
+
37947 {1.70681179, 2.13078952}, //
+
37948 {1.70550001, 2.12930012}, //
+
37949 {1.70466053, 2.12704372}, //
+
37950 {1.7036531, 2.12478638}, //
+
37951 {1.70247781, 2.12252784}, //
+
37952 {1.70113456, 2.12026787}, //
+
37953 {1.69962347, 2.11800671}, //
+
37954 {1.6979444, 2.11574435}, //
+
37955 {1.69609749, 2.11348081}, //
+
37956 {1.69408274, 2.11121607}, //
+
37957 {1.69190001, 2.1089499}, //
+
37958 {1.69039941, 2.10669374}, //
+
37959 {1.68889749, 2.1044364}, //
+
37960 {1.6873945, 2.10217786}, //
+
37961 {1.68589008, 2.09991789}, //
+
37962 {1.68438458, 2.09765673}, //
+
37963 {1.68287778, 2.09539437}, //
+
37964 {1.68136978, 2.09313083}, //
+
37965 {1.67986047, 2.09086609}, //
+
37966 {1.67834997, 2.08859992}, //
+
37967 {1.67689133, 2.08638573}, //
+
37968 {1.67551541, 2.08425426}, //
+
37969 {1.67422223, 2.08220553}, //
+
37970 {1.67301178, 2.08023953}, //
+
37971 {1.67188394, 2.07835627}, //
+
37972 {1.67083883, 2.07655549}, //
+
37973 {1.66987658, 2.07483768}, //
+
37974 {1.66899693, 2.07320237}, //
+
37975 {1.66820002, 2.07165003}, //
+
37976 {1.66742349, 2.0701704}, //
+
37977 {1.666605, 2.06873155}, //
+
37978 {1.66574442, 2.06733322}, //
+
37979 {1.66484201, 2.0659759}, //
+
37980 {1.66389751, 2.06465936}, //
+
37981 {1.66291106, 2.06338334}, //
+
37982 {1.66188276, 2.06214809}, //
+
37983 {1.66081238, 2.06095362}, //
+
37984 {1.65970004, 2.05979991}, //
+
37985 {1.65859818, 2.05870867}, //
+
37986 {1.65753698, 2.05770135}, //
+
37987 {1.65651667, 2.05677772}, //
+
37988 {1.65553701, 2.05593824}, //
+
37989 {1.65459812, 2.0551827}, //
+
37990 {1.65369999, 2.05451107}, //
+
37991 {1.65284264, 2.05392337}, //
+
37992 {1.65202594, 2.05341983}, //
+
37993 {1.65125, 2.05299997}, //
+
37994 {1.65053642, 2.05282092}, //
+
37995 {1.64990675, 2.05301738}, //
+
37996 {1.64936113, 2.05358887}, //
+
37997 {1.64889944, 2.05453587}, //
+
37998 {1.64852166, 2.05585814}, //
+
37999 {1.64822781, 2.05755544}, //
+
38000 {1.64801788, 2.05962849}, //
+
38001 {1.647892, 2.06207657}, //
+
38002 {1.64785004, 2.06489992}, //
+
38003 {1.647892, 2.06795311}, //
+
38004 {1.64801788, 2.07109022}, //
+
38005 {1.64822781, 2.07431102}, //
+
38006 {1.64852166, 2.07761598}, //
+
38007 {1.64889944, 2.08100486}, //
+
38008 {1.64936113, 2.08447766}, //
+
38009 {1.64990675, 2.08803463}, //
+
38010 {1.65053642, 2.09167528}, //
+
38011 {1.65125, 2.09540009}, //
+
38012 {1.65196359, 2.09760308}, //
+
38013 {1.65259326, 2.09967899}, //
+
38014 {1.65313888, 2.10162783}, //
+
38015 {1.65360057, 2.10344934}, //
+
38016 {1.65397835, 2.10514379}, //
+
38017 {1.6542722, 2.10671115}, //
+
38018 {1.65448213, 2.1081512}, //
+
38019 {1.65460801, 2.10946417}, //
+
38020 {1.65464997, 2.11065006}, //
+
38021 {1.65460801, 2.11172032}, //
+
38022 {1.65448213, 2.1126647}, //
+
38023 {1.6542722, 2.11348343}, //
+
38024 {1.65397835, 2.11417603}, //
+
38025 {1.65360057, 2.11474252}, //
+
38026 {1.65313888, 2.11518335}, //
+
38027 {1.65259326, 2.11549807}, //
+
38028 {1.65196359, 2.11568713}, //
+
38029 {1.65125, 2.11575007}, //
+
38030 {1.65125, 2.11843634}, //
+
38031 {1.65125, 2.11914992}, //
+
38032 {1.65045249, 2.1191709}, //
+
38033 {1.64957094, 2.11923385}, //
+
38034 {1.64860559, 2.11933899}, //
+
38035 {1.64755619, 2.11948586}, //
+
38036 {1.64642286, 2.11967468}, //
+
38037 {1.6452055, 2.11990547}, //
+
38038 {1.64390433, 2.12017846}, //
+
38039 {1.64251912, 2.12049317}, //
+
38040 {1.64104998, 2.12085009}, //
+
38041 {1.63959134, 2.12118578}, //
+
38042 {1.63821542, 2.12143755}, //
+
38043 {1.63692224, 2.12160563}, //
+
38044 {1.63571167, 2.12168956}, //
+
38045 {1.63458395, 2.12168956}, //
+
38046 {1.63353884, 2.12160563}, //
+
38047 {1.63257658, 2.12143755}, //
+
38048 {1.63169694, 2.12118578}, //
+
38049 {1.63090003, 2.12085009}, //
+
38050 {1.63014448, 2.12036729}, //
+
38051 {1.62938893, 2.11967468}, //
+
38052 {1.62863338, 2.11877227}, //
+
38053 {1.62787783, 2.11765981}, //
+
38054 {1.62712216, 2.11633754}, //
+
38055 {1.62636662, 2.11480546}, //
+
38056 {1.62561107, 2.11306357}, //
+
38057 {1.62485552, 2.11111164}, //
+
38058 {1.62409997, 2.1089499}, //
+
38059 {1.62409997, 2.10427094}, //
+
38060 {1.62409997, 2.10180545}, //
+
38061 {1.62409997, 2.09925628}, //
+
38062 {1.62409997, 2.0852499}, //
+
38063 {1.62405801, 2.08227038}, //
+
38064 {1.62393212, 2.07937598}, //
+
38065 {1.6237222, 2.0765667}, //
+
38066 {1.62342834, 2.07384253}, //
+
38067 {1.62305057, 2.07120371}, //
+
38068 {1.62258887, 2.06865001}, //
+
38069 {1.62204325, 2.06618142}, //
+
38070 {1.62141359, 2.06379819}, //
+
38071 {1.6207, 2.06150007}, //
+
38072 {1.61999691, 2.06147909}, //
+
38073 {1.61937654, 2.06141615}, //
+
38074 {1.61883891, 2.06131101}, //
+
38075 {1.618384, 2.06116414}, //
+
38076 {1.61801171, 2.06097531}, //
+
38077 {1.61772227, 2.06074452}, //
+
38078 {1.61751544, 2.06047153}, //
+
38079 {1.61739135, 2.06015682}, //
+
38080 {1.61734998, 2.05979991}, //
+
38081 {1.61730802, 2.05944324}, //
+
38082 {1.61718214, 2.05912828}, //
+
38083 {1.61697221, 2.05885553}, //
+
38084 {1.61667836, 2.05862474}, //
+
38085 {1.61630058, 2.05843592}, //
+
38086 {1.61583889, 2.05828881}, //
+
38087 {1.61529326, 2.05818391}, //
+
38088 {1.6146636, 2.05812097}, //
+
38089 {1.61395001, 2.05809999}, //
+
38090 {1.61386609, 2.05801606}, //
+
38091 {1.61376107, 2.05791116}, //
+
38092 {1.6136142, 2.05776429}, //
+
38093 {1.61342525, 2.05757523}, //
+
38094 {1.6129216, 2.05707169}, //
+
38095 {1.61224997, 2.05640006}, //
+
38096 {1.61189318, 2.05600119}, //
+
38097 {1.61157835, 2.05556059}, //
+
38098 {1.61130559, 2.05507779}, //
+
38099 {1.61107469, 2.05455303}, //
+
38100 {1.61088586, 2.05398631}, //
+
38101 {1.61073887, 2.05337787}, //
+
38102 {1.61063397, 2.05272722}, //
+
38103 {1.61057103, 2.05203462}, //
+
38104 {1.61055005, 2.05130005}, //
+
38105 {1.61055005, 2.05051303}, //
+
38106 {1.61055005, 2.04964066}, //
+
38107 {1.61055005, 2.0486834}, //
+
38108 {1.61055005, 2.0476408}, //
+
38109 {1.61055005, 2.04651308}, //
+
38110 {1.61055005, 2.04115009}, //
+
38111 {1.61059201, 2.03666973}, //
+
38112 {1.61071789, 2.03227353}, //
+
38113 {1.61092782, 2.02796102}, //
+
38114 {1.61122155, 2.02373266}, //
+
38115 {1.61159933, 2.01958823}, //
+
38116 {1.61206114, 2.01552773}, //
+
38117 {1.61260676, 2.01155114}, //
+
38118 {1.61323643, 2.00765872}, //
+
38119 {1.61395001, 2.00384998}, //
+
38120 {1.61395001, 1.99816108}, //
+
38121 {1.61395001, 1.99556673}, //
+
38122 {1.61395001, 1.99313891}, //
+
38123 {1.61395001, 1.9835}, //
+
38124 {1.61317348, 1.98335373}, //
+
38125 {1.61235499, 1.98291481}, //
+
38126 {1.61149442, 1.98218334}, //
+
38127 {1.61059201, 1.98115921}, //
+
38128 {1.60964751, 1.97984254}, //
+
38129 {1.60866106, 1.97823334}, //
+
38130 {1.60763276, 1.97633147}, //
+
38131 {1.60656238, 1.97413707}, //
+
38132 {1.60545003, 1.97165}, //
+
38133 {1.60430622, 1.96901608}, //
+
38134 {1.60311913, 1.96638083}, //
+
38135 {1.6018889, 1.9637444}, //
+
38136 {1.60061538, 1.96110678}, //
+
38137 {1.59929872, 1.95846796}, //
+
38138 {1.5979389, 1.95582783}, //
+
38139 {1.5965358, 1.95318639}, //
+
38140 {1.59508955, 1.95054388}, //
+
38141 {1.59360003, 1.94790006}, //
+
38142 {1.59208894, 1.94528699}, //
+
38143 {1.59057772, 1.94271481}, //
+
38144 {1.58906662, 1.94018328}, //
+
38145 {1.58755553, 1.93769264}, //
+
38146 {1.58604443, 1.93524253}, //
+
38147 {1.58453333, 1.93283331}, //
+
38148 {1.58302224, 1.93046486}, //
+
38149 {1.58151114, 1.92813706}, //
+
38150 {1.58000004, 1.92585003}, //
+
38151 {1.57858336, 1.92371976}, //
+
38152 {1.57733333, 1.92184007}, //
+
38153 {1.57624996, 1.92021108}, //
+
38154 {1.57533336, 1.91883266}, //
+
38155 {1.57458329, 1.91770494}, //
+
38156 {1.574, 1.9168278}, //
+
38157 {1.57358336, 1.91620123}, //
+
38158 {1.57333338, 1.91582537}, //
+
38159 {1.57325006, 1.91569996}, //
+
38160 });
+
38161 polys.push_back({
+
38162 {6.3574419, 2.11927533}, //
+
38163 {6.35756779, 2.11965132}, //
+
38164 {6.3577776, 2.12027788}, //
+
38165 {6.3580718, 2.12115502}, //
+
38166 {6.35844946, 2.12228274}, //
+
38167 {6.35891104, 2.12366104}, //
+
38168 {6.35945702, 2.12529016}, //
+
38169 {6.36008644, 2.12716985}, //
+
38170 {6.36079979, 2.12930012}, //
+
38171 {6.36243629, 2.13327599}, //
+
38172 {6.36432362, 2.13767028}, //
+
38173 {6.36646128, 2.14248323}, //
+
38174 {6.36854076, 2.14703846}, //
+
38175 {6.36827183, 2.14583588}, //
+
38176 {6.36797762, 2.14418888}, //
+
38177 {6.36776781, 2.14258385}, //
+
38178 {6.36764193, 2.14102101}, //
+
38179 {6.36759996, 2.1394999}, //
+
38180 {6.36333942, 2.12671852}, //
+
38181 {6.36289883, 2.12539625}, //
+
38182 {6.36250019, 2.12420011}, //
+
38183 {6.36210108, 2.1231401}, //
+
38184 {6.36166048, 2.12220502}, //
+
38185 {6.36117792, 2.1213944}, //
+
38186 {6.36065292, 2.1207087}, //
+
38187 {6.36008644, 2.12014747}, //
+
38188 {6.359478, 2.11971116}, //
+
38189 {6.35882711, 2.11939931}, //
+
38190 {6.35813475, 2.11921239}, //
+
38191 {6.35739994, 2.11914992}, //
+
38192 });
+
38193 polys.push_back({
+
38194 {3.83918786, 2.13269997}, //
+
38195 {3.83959866, 2.13269997}, //
+
38196 {3.83924937, 2.13269997}, //
+
38197 });
+
38198 polys.push_back({
+
38199 {3.83838892, 2.13269997}, //
+
38200 {3.83853579, 2.13269997}, //
+
38201 {3.83872461, 2.13269997}, //
+
38202 {3.83857775, 2.13269997}, //
+
38203 {3.83830905, 2.13269997}, //
+
38204 });
+
38205 polys.push_back({
+
38206 {4.77400017, 2.11234999}, //
+
38207 {4.77400017, 2.11234999}, //
+
38208 {4.77400017, 2.11234999}, //
+
38209 });
+
38210 polys.push_back({
+
38211 {0.349612355, 1.906721}, //
+
38212 {0.34886235, 1.90690982}, //
+
38213 {0.348111123, 1.90722227}, //
+
38214 {0.347358644, 1.90765798}, //
+
38215 {0.346604943, 1.90821731}, //
+
38216 {0.345849991, 1.90890002}, //
+
38217 {0.345094442, 1.90971792}, //
+
38218 {0.344338894, 1.91066051}, //
+
38219 {0.343583345, 1.91172779}, //
+
38220 {0.342827767, 1.91291976}, //
+
38221 {0.342072219, 1.91423643}, //
+
38222 {0.34131667, 1.91567779}, //
+
38223 {0.340561122, 1.91724384}, //
+
38224 {0.339805543, 1.91893458}, //
+
38225 {0.339049995, 1.92075002}, //
+
38226 {0.338295072, 1.92265987}, //
+
38227 {0.337541372, 1.92461169}, //
+
38228 {0.336788893, 1.92660558}, //
+
38229 {0.336037666, 1.92864132}, //
+
38230 {0.33528766, 1.93071914}, //
+
38231 {0.334538877, 1.93283892}, //
+
38232 {0.333791345, 1.93500066}, //
+
38233 {0.333045065, 1.93720436}, //
+
38234 {0.332300007, 1.93945003}, //
+
38235 {0.330830872, 1.94555616}, //
+
38236 {0.32944569, 1.95183027}, //
+
38237 {0.328144431, 1.95827222}, //
+
38238 {0.326927155, 1.96488214}, //
+
38239 {0.325793833, 1.9716599}, //
+
38240 {0.324744433, 1.97860551}, //
+
38241 {0.323779017, 1.98571908}, //
+
38242 {0.322897524, 1.99300063}, //
+
38243 {0.322100013, 2.0004499}, //
+
38244 {0.321386427, 2.00786781}, //
+
38245 {0.320756793, 2.01503277}, //
+
38246 {0.320211112, 2.02194452}, //
+
38247 {0.319749385, 2.02860308}, //
+
38248 {0.319371611, 2.03500867}, //
+
38249 {0.31907779, 2.04116106}, //
+
38250 {0.318867892, 2.04706049}, //
+
38251 {0.318741977, 2.05270672}, //
+
38252 {0.318699986, 2.05809999}, //
+
38253 {0.318699986, 2.06748271}, //
+
38254 {0.318699986, 2.07129455}, //
+
38255 {0.318699986, 2.08067727}, //
+
38256 {0.318699986, 2.0815568}, //
+
38257 {0.318699986, 2.08185005}, //
+
38258 {0.3194969, 2.07869196}, //
+
38259 {0.320376545, 2.07524014}, //
+
38260 {0.321338892, 2.07149434}, //
+
38261 {0.32238394, 2.06745505}, //
+
38262 {0.32351172, 2.06312156}, //
+
38263 {0.32472223, 2.05849433}, //
+
38264 {0.326015443, 2.05357337}, //
+
38265 {0.327391356, 2.04835868}, //
+
38266 {0.328850001, 2.04285002}, //
+
38267 {0.330340117, 2.03717351}, //
+
38268 {0.331788272, 2.03145504}, //
+
38269 {0.333194435, 2.02569437}, //
+
38270 {0.334558636, 2.01989198}, //
+
38271 {0.335880876, 2.01404762}, //
+
38272 {0.337161124, 2.00816107}, //
+
38273 {0.33839938, 2.00223279}, //
+
38274 {0.339595675, 1.99626231}, //
+
38275 {0.340750009, 1.99024999}, //
+
38276 {0.341903716, 1.98433208}, //
+
38277 {0.343098134, 1.97862279}, //
+
38278 {0.344333321, 1.97312224}, //
+
38279 {0.345609248, 1.9678303}, //
+
38280 {0.346925914, 1.96274686}, //
+
38281 {0.348283321, 1.95787227}, //
+
38282 {0.349681467, 1.95320618}, //
+
38283 {0.351120383, 1.94874871}, //
+
38284 {0.352600008, 1.94449997}, //
+
38285 {0.354027152, 1.94059634}, //
+
38286 {0.355286419, 1.93715191}, //
+
38287 {0.35637778, 1.93416667}, //
+
38288 {0.359400004, 1.92589998}, //
+
38289 {0.359400004, 1.92420006}, //
+
38290 {0.359379023, 1.9237802}, //
+
38291 {0.359316051, 1.92327654}, //
+
38292 {0.359211117, 1.92268884}, //
+
38293 {0.359064192, 1.92201734}, //
+
38294 {0.358875304, 1.92126179}, //
+
38295 {0.358644456, 1.9204222}, //
+
38296 {0.358371615, 1.9194988}, //
+
38297 {0.358056784, 1.91849136}, //
+
38298 {0.357343197, 1.91630864}, //
+
38299 {0.357028395, 1.9153012}, //
+
38300 {0.356755555, 1.91437781}, //
+
38301 {0.356524706, 1.91353822}, //
+
38302 {0.356335789, 1.91278267}, //
+
38303 {0.356188893, 1.91211116}, //
+
38304 {0.356083959, 1.91152346}, //
+
38305 {0.356020987, 1.9110198}, //
+
38306 {0.356000006, 1.91059995}, //
+
38307 {0.355958015, 1.91022217}, //
+
38308 {0.3558321, 1.9098444}, //
+
38309 {0.355622232, 1.90946662}, //
+
38310 {0.355328381, 1.90908885}, //
+
38311 {0.354950607, 1.90871108}, //
+
38312 {0.354488879, 1.9083333}, //
+
38313 {0.353943199, 1.90795553}, //
+
38314 {0.353313595, 1.90757775}, //
+
38315 {0.352600008, 1.90719998}, //
+
38316 {0.35185495, 1.90689504}, //
+
38317 {0.35110864, 1.9067136}, //
+
38318 {0.350361109, 1.90665555}, //
+
38319 });
+
38320 polys.push_back({
+
38321 {5.74129772, 1.75473273}, //
+
38322 {5.73860121, 1.75705862}, //
+
38323 {5.73561096, 1.75992775}, //
+
38324 {5.73232698, 1.76334012}, //
+
38325 {5.72874928, 1.76729572}, //
+
38326 {5.72487783, 1.77179444}, //
+
38327 {5.72071218, 1.7768364}, //
+
38328 {5.71625328, 1.78242159}, //
+
38329 {5.71150017, 1.78855002}, //
+
38330 {5.70660019, 1.79514873}, //
+
38331 {5.70170021, 1.80212283}, //
+
38332 {5.69680023, 1.8094722}, //
+
38333 {5.69189978, 1.81719697}, //
+
38334 {5.6869998, 1.82529688}, //
+
38335 {5.68209982, 1.83377218}, //
+
38336 {5.67719984, 1.84262288}, //
+
38337 {5.67229986, 1.85184872}, //
+
38338 {5.66739988, 1.86144996}, //
+
38339 {5.66269875, 1.87124944}, //
+
38340 {5.65837288, 1.88104749}, //
+
38341 {5.65442228, 1.89084446}, //
+
38342 {5.65084696, 1.90064013}, //
+
38343 {5.6476469, 1.9104346}, //
+
38344 {5.64482212, 1.92022777}, //
+
38345 {5.64237261, 1.93001974}, //
+
38346 {5.64029884, 1.93981051}, //
+
38347 {5.63859987, 1.94959998}, //
+
38348 {5.63790751, 1.95912719}, //
+
38349 {5.63734055, 1.96810865}, //
+
38350 {5.63689995, 1.9765445}, //
+
38351 {5.63658524, 1.9844346}, //
+
38352 {5.63639641, 1.99177897}, //
+
38353 {5.63633347, 1.99857783}, //
+
38354 {5.63639641, 2.00483084}, //
+
38355 {5.63658524, 2.01053834}, //
+
38356 {5.63689995, 2.0157001}, //
+
38357 {5.63731956, 2.020432}, //
+
38358 {5.63782358, 2.02482843}, //
+
38359 {5.63841105, 2.02888894}, //
+
38360 {5.63908291, 2.03261352}, //
+
38361 {5.63983822, 2.0360024}, //
+
38362 {5.64067793, 2.03905559}, //
+
38363 {5.64160109, 2.04177284}, //
+
38364 {5.64260864, 2.04415441}, //
+
38365 {5.64370012, 2.04620004}, //
+
38366 {5.64489555, 2.04798388}, //
+
38367 {5.64621592, 2.04955792}, //
+
38368 {5.64766121, 2.05092216}, //
+
38369 {5.64923096, 2.05207658}, //
+
38370 {5.65092516, 2.05302095}, //
+
38371 {5.65274429, 2.05375552}, //
+
38372 {5.65468836, 2.05428028}, //
+
38373 {5.65675688, 2.05459499}, //
+
38374 {5.65894985, 2.0546999}, //
+
38375 {5.66058636, 2.05397582}, //
+
38376 {5.66247368, 2.05329251}, //
+
38377 {5.66461134, 2.05264997}, //
+
38378 {5.66699934, 2.05204821}, //
+
38379 {5.66963816, 2.05148697}, //
+
38380 {5.67252779, 2.05096674}, //
+
38381 {5.67566776, 2.05048704}, //
+
38382 {5.67905855, 2.05004811}, //
+
38383 {5.68270016, 2.04964995}, //
+
38384 {5.68638277, 2.04925132}, //
+
38385 {5.68989754, 2.04881048}, //
+
38386 {5.69324446, 2.04832768}, //
+
38387 {5.69642353, 2.04780316}, //
+
38388 {5.69943476, 2.04723644}, //
+
38389 {5.70227766, 2.04662776}, //
+
38390 {5.70495319, 2.04597712}, //
+
38391 {5.7074604, 2.04528451}, //
+
38392 {5.70979977, 2.04454994}, //
+
38393 {5.71659994, 2.04454994}, //
+
38394 {5.71827793, 2.04444504}, //
+
38395 {5.72028875, 2.04413033}, //
+
38396 {5.72263336, 2.04360557}, //
+
38397 {5.72531128, 2.042871}, //
+
38398 {5.72832203, 2.04192662}, //
+
38399 {5.73166656, 2.0407722}, //
+
38400 {5.73534441, 2.03940797}, //
+
38401 {5.73935556, 2.03783393}, //
+
38402 {5.74370003, 2.03605008}, //
+
38403 {5.74830627, 2.03398323}, //
+
38404 {5.75308037, 2.03153896}, //
+
38405 {5.75802231, 2.02871656}, //
+
38406 {5.7631321, 2.02551675}, //
+
38407 {5.76840973, 2.0219388}, //
+
38408 {5.77385569, 2.01798344}, //
+
38409 {5.77946901, 2.01364994}, //
+
38410 {5.78525066, 2.00893879}, //
+
38411 {5.79120016, 2.00384998}, //
+
38412 {5.79494572, 1.9999994}, //
+
38413 {5.79864931, 1.99598086}, //
+
38414 {5.80231094, 1.99179447}, //
+
38415 {5.80593109, 1.98744011}, //
+
38416 {5.8095088, 1.9829179}, //
+
38417 {5.81304455, 1.97822773}, //
+
38418 {5.81653833, 1.97336972}, //
+
38419 {5.81999016, 1.96834385}, //
+
38420 {5.82340002, 1.96315002}, //
+
38421 {5.82672596, 1.95790374}, //
+
38422 {5.82992601, 1.95269811}, //
+
38423 {5.83300018, 1.94753337}, //
+
38424 {5.83594799, 1.94240928}, //
+
38425 {5.83877039, 1.93732595}, //
+
38426 {5.8414669, 1.93228328}, //
+
38427 {5.84403706, 1.9272815}, //
+
38428 {5.84648132, 1.92232037}, //
+
38429 {5.84880018, 1.9174}, //
+
38430 {5.8509407, 1.91273022}, //
+
38431 {5.85282946, 1.90852094}, //
+
38432 {5.85446644, 1.90477228}, //
+
38433 {5.85585165, 1.90148389}, //
+
38434 {5.85698509, 1.89865613}, //
+
38435 {5.85786676, 1.89628887}, //
+
38436 {5.85849619, 1.89438212}, //
+
38437 {5.85887384, 1.89293575}, //
+
38438 {5.85900021, 1.89195001}, //
+
38439 {5.85895824, 1.89124691}, //
+
38440 {5.85883188, 1.89062655}, //
+
38441 {5.85862207, 1.89008892}, //
+
38442 {5.85832834, 1.88963389}, //
+
38443 {5.85795069, 1.88926172}, //
+
38444 {5.85748911, 1.88897216}, //
+
38445 {5.85694313, 1.88876545}, //
+
38446 {5.85631371, 1.88864136}, //
+
38447 {5.85559988, 1.88859999}, //
+
38448 {5.8555789, 1.88715184}, //
+
38449 {5.85551596, 1.88582969}, //
+
38450 {5.85541105, 1.8846333}, //
+
38451 {5.85526419, 1.88356292}, //
+
38452 {5.85507536, 1.88261855}, //
+
38453 {5.85484457, 1.88180006}, //
+
38454 {5.85457182, 1.88110745}, //
+
38455 {5.85425663, 1.88054073}, //
+
38456 {5.85389996, 1.88010001}, //
+
38457 {5.85350132, 1.8797642}, //
+
38458 {5.85306072, 1.87951231}, //
+
38459 {5.85257769, 1.87934446}, //
+
38460 {5.85205317, 1.87926054}, //
+
38461 {5.85148621, 1.87926054}, //
+
38462 {5.85087776, 1.87934446}, //
+
38463 {5.85022736, 1.87951231}, //
+
38464 {5.84953451, 1.8797642}, //
+
38465 {5.84880018, 1.88010001}, //
+
38466 {5.84805489, 1.88058209}, //
+
38467 {5.84730864, 1.88127279}, //
+
38468 {5.84656096, 1.88217223}, //
+
38469 {5.84581232, 1.88328028}, //
+
38470 {5.84506226, 1.88459694}, //
+
38471 {5.84431124, 1.88612223}, //
+
38472 {5.84355879, 1.88785613}, //
+
38473 {5.84280491, 1.88979876}, //
+
38474 {5.84205008, 1.89195001}, //
+
38475 {5.83895493, 1.89729011}, //
+
38476 {5.83569193, 1.9027549}, //
+
38477 {5.83226109, 1.90834439}, //
+
38478 {5.8286624, 1.91405869}, //
+
38479 {5.82489586, 1.91989756}, //
+
38480 {5.820961, 1.92586112}, //
+
38481 {5.81685877, 1.93194938}, //
+
38482 {5.81258821, 1.93816233}, //
+
38483 {5.80814981, 1.94449997}, //
+
38484 {5.80362797, 1.95076418}, //
+
38485 {5.79910564, 1.95673454}, //
+
38486 {5.79458332, 1.96241117}, //
+
38487 {5.790061, 1.96779382}, //
+
38488 {5.78553867, 1.97288275}, //
+
38489 {5.78101683, 1.97767782}, //
+
38490 {5.7764945, 1.98217905}, //
+
38491 {5.77197218, 1.98638642}, //
+
38492 {5.76744986, 1.99030006}, //
+
38493 {5.76104879, 1.99657595}, //
+
38494 {5.75540066, 2.00184822}, //
+
38495 {5.75050545, 2.00611663}, //
+
38496 {5.74636364, 2.00938153}, //
+
38497 {5.74297476, 2.01164269}, //
+
38498 {5.7403388, 2.01290011}, //
+
38499 {5.73845625, 2.01315379}, //
+
38500 {5.73732662, 2.01240373}, //
+
38501 {5.73694992, 2.01064992}, //
+
38502 {5.7369709, 2.00844622}, //
+
38503 {5.73703384, 2.00636864}, //
+
38504 {5.73713875, 2.0044167}, //
+
38505 {5.73728561, 2.00259066}, //
+
38506 {5.73747492, 2.00089073}, //
+
38507 {5.73770571, 1.99931669}, //
+
38508 {5.73797846, 1.99786854}, //
+
38509 {5.73829317, 1.99654627}, //
+
38510 {5.73864985, 1.99535}, //
+
38511 {5.73908997, 1.99420619}, //
+
38512 {5.73965502, 1.9930191}, //
+
38513 {5.74034452, 1.99178886}, //
+
38514 {5.74115849, 1.99051547}, //
+
38515 {5.74209738, 1.9891988}, //
+
38516 {5.7431612, 1.98783886}, //
+
38517 {5.74434948, 1.98643577}, //
+
38518 {5.74566221, 1.98498952}, //
+
38519 {5.74709988, 1.9835}, //
+
38520 {5.74785566, 1.98128581}, //
+
38521 {5.74861097, 1.97915435}, //
+
38522 {5.74936676, 1.9771055}, //
+
38523 {5.75012207, 1.9751395}, //
+
38524 {5.75087786, 1.97325623}, //
+
38525 {5.75163317, 1.97145557}, //
+
38526 {5.75238895, 1.96973765}, //
+
38527 {5.75314426, 1.96810246}, //
+
38528 {5.75390005, 1.96654999}, //
+
38529 {5.75457144, 1.96513331}, //
+
38530 {5.75507545, 1.96388328}, //
+
38531 {5.75541115, 1.96280003}, //
+
38532 {5.75557899, 1.96188331}, //
+
38533 {5.75557899, 1.96113336}, //
+
38534 {5.75541115, 1.96054995}, //
+
38535 {5.75507545, 1.96013331}, //
+
38536 {5.75457144, 1.95988333}, //
+
38537 {5.75390005, 1.9598}, //
+
38538 {5.75314426, 1.95982039}, //
+
38539 {5.75238895, 1.95988142}, //
+
38540 {5.75163317, 1.95998335}, //
+
38541 {5.75087786, 1.96012592}, //
+
38542 {5.75012207, 1.96030927}, //
+
38543 {5.74936676, 1.96053338}, //
+
38544 {5.74861097, 1.96079814}, //
+
38545 {5.74785566, 1.96110368}, //
+
38546 {5.74709988, 1.96144998}, //
+
38547 {5.74630308, 1.96180677}, //
+
38548 {5.74542332, 1.96212161}, //
+
38549 {5.74446106, 1.96239448}, //
+
38550 {5.74341583, 1.96262527}, //
+
38551 {5.74228811, 1.96281421}, //
+
38552 {5.7410779, 1.96296108}, //
+
38553 {5.73978472, 1.9630661}, //
+
38554 {5.73840857, 1.96312904}, //
+
38555 {5.73694992, 1.96315002}, //
+
38556 {5.7354598, 1.96388459}, //
+
38557 {5.73401165, 1.9645772}, //
+
38558 {5.73260546, 1.96522772}, //
+
38559 {5.73124123, 1.96583641}, //
+
38560 {5.72991896, 1.96640313}, //
+
38561 {5.72863913, 1.96692777}, //
+
38562 {5.72740078, 1.96741045}, //
+
38563 {5.7262044, 1.96785128}, //
+
38564 {5.72504997, 1.96825004}, //
+
38565 {5.72396898, 1.96858585}, //
+
38566 {5.72297096, 1.96883762}, //
+
38567 {5.72205544, 1.96900558}, //
+
38568 {5.72122288, 1.96908951}, //
+
38569 {5.72047281, 1.96908951}, //
+
38570 {5.71980572, 1.96900558}, //
+
38571 {5.71922112, 1.96883762}, //
+
38572 {5.71871901, 1.96858585}, //
+
38573 {5.71829987, 1.96825004}, //
+
38574 {5.71798515, 1.96780992}, //
+
38575 {5.71779633, 1.9672451}, //
+
38576 {5.71773338, 1.9665556}, //
+
38577 {5.71779633, 1.9657414}, //
+
38578 {5.71798515, 1.9648025}, //
+
38579 {5.71829987, 1.96373892}, //
+
38580 {5.71874094, 1.96255064}, //
+
38581 {5.71930742, 1.96123767}, //
+
38582 {5.71999979, 1.9598}, //
+
38583 {5.72079706, 1.95753396}, //
+
38584 {5.72167635, 1.9552691}, //
+
38585 {5.72263908, 1.95300555}, //
+
38586 {5.72368383, 1.9507432}, //
+
38587 {5.72481155, 1.94848216}, //
+
38588 {5.72602224, 1.94622219}, //
+
38589 {5.72731543, 1.94396353}, //
+
38590 {5.72869158, 1.94170618}, //
+
38591 {5.73015022, 1.93945003}, //
+
38592 {5.73163939, 1.93643832}, //
+
38593 {5.73308563, 1.93342531}, //
+
38594 {5.73448896, 1.9304111}, //
+
38595 {5.7358489, 1.9273957}, //
+
38596 {5.73716545, 1.92437899}, //
+
38597 {5.73843908, 1.92136109}, //
+
38598 {5.73966932, 1.91834199}, //
+
38599 {5.74085617, 1.91532159}, //
+
38600 {5.7420001, 1.91229999}, //
+
38601 {5.74315453, 1.90941417}, //
+
38602 {5.74435043, 1.90677905}, //
+
38603 {5.74558878, 1.90439439}, //
+
38604 {5.74686909, 1.90226054}, //
+
38605 {5.74819136, 1.90037715}, //
+
38606 {5.74955559, 1.89874446}, //
+
38607 {5.75096178, 1.89736235}, //
+
38608 {5.75240993, 1.89623082}, //
+
38609 {5.75390005, 1.89534998}, //
+
38610 {5.75542164, 1.89457345}, //
+
38611 {5.75698662, 1.89375496}, //
+
38612 {5.75859451, 1.89289439}, //
+
38613 {5.7602458, 1.89199197}, //
+
38614 {5.76194, 1.89104748}, //
+
38615 {5.7636776, 1.89006114}, //
+
38616 {5.76545858, 1.88903272}, //
+
38617 {5.76728249, 1.88796234}, //
+
38618 {5.76914978, 1.88685}, //
+
38619 {5.77101707, 1.88574815}, //
+
38620 {5.77284145, 1.88468707}, //
+
38621 {5.77462244, 1.88366663}, //
+
38622 {5.77636003, 1.88268709}, //
+
38623 {5.77805424, 1.8817482}, //
+
38624 {5.77970552, 1.88084996}, //
+
38625 {5.78131342, 1.8799926}, //
+
38626 {5.7828784, 1.8791759}, //
+
38627 {5.78439999, 1.87839997}, //
+
38628 {5.7857852, 1.87768638}, //
+
38629 {5.78691864, 1.87705684}, //
+
38630 {5.78779984, 1.8765111}, //
+
38631 {5.78842974, 1.8760494}, //
+
38632 {5.78880739, 1.87567163}, //
+
38633 {5.78893328, 1.87537777}, //
+
38634 {5.78880739, 1.87516785}, //
+
38635 {5.78842974, 1.87504196}, //
+
38636 {5.78779984, 1.875}, //
+
38637 {5.78702354, 1.8742969}, //
+
38638 {5.78620481, 1.87367654}, //
+
38639 {5.7853446, 1.8731389}, //
+
38640 {5.78444195, 1.872684}, //
+
38641 {5.78349733, 1.87231171}, //
+
38642 {5.78251123, 1.87202227}, //
+
38643 {5.7814827, 1.87181544}, //
+
38644 {5.7804122, 1.87169135}, //
+
38645 {5.77930021, 1.87164998}, //
+
38646 {5.75390005, 1.87164998}, //
+
38647 {5.75465536, 1.87013888}, //
+
38648 {5.7552433, 1.8689636}, //
+
38649 {5.75559998, 1.86825001}, //
+
38650 {5.75599813, 1.86749446}, //
+
38651 {5.75643682, 1.86673892}, //
+
38652 {5.75691652, 1.86598337}, //
+
38653 {5.75743723, 1.86522782}, //
+
38654 {5.75799799, 1.86447227}, //
+
38655 {5.75860023, 1.86371672}, //
+
38656 {5.75924253, 1.86296105}, //
+
38657 {5.75992584, 1.86220551}, //
+
38658 {5.76065016, 1.86144996}, //
+
38659 {5.76140547, 1.86067343}, //
+
38660 {5.76216125, 1.85985494}, //
+
38661 {5.76291656, 1.85899448}, //
+
38662 {5.76367235, 1.85809195}, //
+
38663 {5.76442766, 1.85714757}, //
+
38664 {5.76518345, 1.85616112}, //
+
38665 {5.76593876, 1.8551327}, //
+
38666 {5.76669455, 1.85406232}, //
+
38667 {5.76744986, 1.85294998}, //
+
38668 {5.76816368, 1.85184813}, //
+
38669 {5.76879311, 1.85078704}, //
+
38670 {5.76933908, 1.84976661}, //
+
38671 {5.76980066, 1.84878707}, //
+
38672 {5.77017832, 1.84784818}, //
+
38673 {5.77047205, 1.84695005}, //
+
38674 {5.77068233, 1.84609258}, //
+
38675 {5.77080822, 1.84527588}, //
+
38676 {5.77085018, 1.84449995}, //
+
38677 {5.77085018, 1.84315681}, //
+
38678 {5.77085018, 1.84261107}, //
+
38679 {5.77085018, 1.84214938}, //
+
38680 {5.77085018, 1.84109998}, //
+
38681 {5.76950693, 1.84109998}, //
+
38682 {5.76896095, 1.84109998}, //
+
38683 {5.76849937, 1.84109998}, //
+
38684 {5.76744986, 1.84109998}, //
+
38685 {5.76671553, 1.84038639}, //
+
38686 {5.76602268, 1.83975685}, //
+
38687 {5.76537228, 1.83921111}, //
+
38688 {5.76476336, 1.83874941}, //
+
38689 {5.76419687, 1.83837163}, //
+
38690 {5.76367235, 1.83807778}, //
+
38691 {5.76318932, 1.83786786}, //
+
38692 {5.76274872, 1.83774197}, //
+
38693 {5.76235008, 1.83770001}, //
+
38694 {5.76195145, 1.83772099}, //
+
38695 {5.76151037, 1.83778393}, //
+
38696 {5.76102781, 1.83788884}, //
+
38697 {5.76050329, 1.83803582}, //
+
38698 {5.75993633, 1.83822465}, //
+
38699 {5.75932789, 1.83845556}, //
+
38700 {5.75867701, 1.83872843}, //
+
38701 {5.75798464, 1.83904326}, //
+
38702 {5.75724983, 1.83940005}, //
+
38703 {5.75646305, 1.83975685}, //
+
38704 {5.75559092, 1.84007156}, //
+
38705 {5.75463343, 1.84034443}, //
+
38706 {5.75359058, 1.84057534}, //
+
38707 {5.75246286, 1.84076416}, //
+
38708 {5.75124979, 1.84091115}, //
+
38709 {5.74995184, 1.84101605}, //
+
38710 {5.74856853, 1.841079}, //
+
38711 {5.74709988, 1.84109998}, //
+
38712 {5.74634504, 1.84181356}, //
+
38713 {5.74559116, 1.84244323}, //
+
38714 {5.74483871, 1.84298885}, //
+
38715 {5.7440877, 1.84345067}, //
+
38716 {5.74333763, 1.84382844}, //
+
38717 {5.742589, 1.84412217}, //
+
38718 {5.74184132, 1.8443321}, //
+
38719 {5.74109507, 1.84445798}, //
+
38720 {5.74034977, 1.84449995}, //
+
38721 {5.73959446, 1.84521353}, //
+
38722 {5.73883867, 1.8458432}, //
+
38723 {5.73808336, 1.84638894}, //
+
38724 {5.73732758, 1.84685063}, //
+
38725 {5.73657227, 1.84722841}, //
+
38726 {5.73581648, 1.84752226}, //
+
38727 {5.73506117, 1.84773207}, //
+
38728 {5.73430538, 1.84785807}, //
+
38729 {5.73355007, 1.84790003}, //
+
38730 {5.73015022, 1.84790003}, //
+
38731 {5.72947836, 1.84722841}, //
+
38732 {5.7291007, 1.84685063}, //
+
38733 {5.72809315, 1.8458432}, //
+
38734 {5.72746372, 1.84521353}, //
+
38735 {5.7267499, 1.84449995}, //
+
38736 {5.72679186, 1.84370244}, //
+
38737 {5.72691774, 1.842821}, //
+
38738 {5.72712755, 1.84185553}, //
+
38739 {5.72742176, 1.84080613}, //
+
38740 {5.72779942, 1.8396728}, //
+
38741 {5.72826099, 1.83845556}, //
+
38742 {5.72880697, 1.83715427}, //
+
38743 {5.7294364, 1.83576918}, //
+
38744 {5.73015022, 1.83430004}, //
+
38745 {5.73090553, 1.83279943}, //
+
38746 {5.73166132, 1.83129752}, //
+
38747 {5.73241663, 1.82979441}, //
+
38748 {5.73317242, 1.8282901}, //
+
38749 {5.73392773, 1.82678461}, //
+
38750 {5.73468351, 1.82527781}, //
+
38751 {5.73543882, 1.82376981}, //
+
38752 {5.73619461, 1.8222605}, //
+
38753 {5.73694992, 1.82075}, //
+
38754 {5.73694992, 1.8200469}, //
+
38755 {5.73694992, 1.81942654}, //
+
38756 {5.73694992, 1.8188889}, //
+
38757 {5.73694992, 1.818434}, //
+
38758 {5.73694992, 1.81806171}, //
+
38759 {5.73694992, 1.81777227}, //
+
38760 {5.73694992, 1.81739998}, //
+
38761 {5.73770475, 1.81664443}, //
+
38762 {5.73845863, 1.81588888}, //
+
38763 {5.73921108, 1.81513333}, //
+
38764 {5.73996258, 1.81437778}, //
+
38765 {5.74071217, 1.81362224}, //
+
38766 {5.74146128, 1.81286669}, //
+
38767 {5.74220848, 1.81211114}, //
+
38768 {5.74295473, 1.81135559}, //
+
38769 {5.74370003, 1.81060004}, //
+
38770 {5.74445534, 1.80908895}, //
+
38771 {5.74596643, 1.80606663}, //
+
38772 {5.74898911, 1.80002224}, //
+
38773 {5.7505002, 1.79700005}, //
+
38774 {5.75121355, 1.79545808}, //
+
38775 {5.75184298, 1.79383206}, //
+
38776 {5.75238895, 1.79212224}, //
+
38777 {5.75285053, 1.79032838}, //
+
38778 {5.75322819, 1.7884506}, //
+
38779 {5.7535224, 1.78648889}, //
+
38780 {5.7537322, 1.78444326}, //
+
38781 {5.75385809, 1.78231359}, //
+
38782 {5.75390005, 1.78009999}, //
+
38783 {5.75385809, 1.77858889}, //
+
38784 {5.7537322, 1.77707779}, //
+
38785 {5.7535224, 1.7755667}, //
+
38786 {5.75322819, 1.7740556}, //
+
38787 {5.75285053, 1.7725445}, //
+
38788 {5.75238895, 1.77103329}, //
+
38789 {5.75184298, 1.76952219}, //
+
38790 {5.75121355, 1.76801109}, //
+
38791 {5.7505002, 1.7665}, //
+
38792 {5.7497654, 1.76504135}, //
+
38793 {5.74907303, 1.76366544}, //
+
38794 {5.74842215, 1.76237226}, //
+
38795 {5.7478137, 1.76116168}, //
+
38796 {5.74724674, 1.76003397}, //
+
38797 {5.74672222, 1.75898886}, //
+
38798 {5.74623966, 1.7580266}, //
+
38799 {5.74579859, 1.75714695}, //
+
38800 {5.74539995, 1.75635004}, //
+
38801 {5.74504328, 1.75563645}, //
+
38802 {5.74472857, 1.75500679}, //
+
38803 {5.74445534, 1.75446117}, //
+
38804 {5.74422455, 1.75399935}, //
+
38805 {5.74403572, 1.75362158}, //
+
38806 {5.74388885, 1.75332773}, //
+
38807 {5.74370003, 1.75294995}, //
+
38808 });
+
38809 polys.push_back({
+
38810 {3.63472891, 1.88872528}, //
+
38811 {3.63466597, 1.88910127}, //
+
38812 {3.63456106, 1.88972783}, //
+
38813 {3.6344142, 1.89060497}, //
+
38814 {3.63422537, 1.89173269}, //
+
38815 {3.63399434, 1.89311111}, //
+
38816 {3.63304996, 1.89874995}, //
+
38817 {3.63265133, 1.90108955}, //
+
38818 {3.63221049, 1.90359688}, //
+
38819 {3.6317277, 1.90627217}, //
+
38820 {3.63120317, 1.90911543}, //
+
38821 {3.63063645, 1.91212654}, //
+
38822 {3.63002777, 1.91530561}, //
+
38823 {3.62937713, 1.91865242}, //
+
38824 {3.62868452, 1.9221673}, //
+
38825 {3.62794995, 1.92585003}, //
+
38826 {3.62724686, 1.9296062}, //
+
38827 {3.62662649, 1.93331909}, //
+
38828 {3.62608886, 1.93698883}, //
+
38829 {3.62563396, 1.94061542}, //
+
38830 {3.62526178, 1.94419873}, //
+
38831 {3.62497211, 1.94773889}, //
+
38832 {3.6247654, 1.95123577}, //
+
38833 {3.62464142, 1.9546895}, //
+
38834 {3.62459993, 1.95809996}, //
+
38835 {3.62457895, 1.9614259}, //
+
38836 {3.62451601, 1.96462595}, //
+
38837 {3.62441111, 1.9677}, //
+
38838 {3.62426424, 1.97064817}, //
+
38839 {3.62407541, 1.97347033}, //
+
38840 {3.62384439, 1.97616673}, //
+
38841 {3.62357163, 1.978737}, //
+
38842 {3.62325668, 1.9811815}, //
+
38843 {3.62290001, 1.9835}, //
+
38844 {3.6225431, 1.98564076}, //
+
38845 {3.62195563, 1.98916662}, //
+
38846 {3.62153578, 1.99168515}, //
+
38847 {3.62138891, 1.9925667}, //
+
38848 {3.62120008, 1.99370003}, //
+
38849 {3.6233933, 1.99599755}, //
+
38850 {3.62546182, 1.99837899}, //
+
38851 {3.62740564, 2.00084448}, //
+
38852 {3.62922478, 2.00339389}, //
+
38853 {3.63091922, 2.00602722}, //
+
38854 {3.63248897, 2.00874448}, //
+
38855 {3.63393402, 2.01154566}, //
+
38856 {3.63525438, 2.01443076}, //
+
38857 {3.63645005, 2.01740003}, //
+
38858 {3.63758278, 2.02037954}, //
+
38859 {3.63871431, 2.02327418}, //
+
38860 {3.63984442, 2.02608323}, //
+
38861 {3.64097357, 2.0288074}, //
+
38862 {3.64210129, 2.03144622}, //
+
38863 {3.64322782, 2.03399992}, //
+
38864 {3.64435315, 2.03646851}, //
+
38865 {3.64547706, 2.03885174}, //
+
38866 {3.64660001, 2.04115009}, //
+
38867 {3.64861488, 2.04517961}, //
+
38868 {3.64943337, 2.04681659}, //
+
38869 {3.6506927, 2.04933524}, //
+
38870 {3.6511333, 2.05021667}, //
+
38871 {3.65144825, 2.05084634}, //
+
38872 {3.65163708, 2.05122399}, //
+
38873 {3.65170002, 2.05135012}, //
+
38874 {3.63809824, 1.92074811}, //
+
38875 {3.63558698, 1.89663708}, //
+
38876 {3.63495922, 1.89060926}, //
+
38877 {3.63474989, 1.88859999}, //
+
38878 });
+
38879 polys.push_back({
+
38880 {0.766300023, 2.01167846}, //
+
38881 {0.766300023, 2.01140547}, //
+
38882 {0.766300023, 2.01117468}, //
+
38883 });
+
38884 polys.push_back({
+
38885 {4.52139997, 1.86315}, //
+
38886 {4.52100134, 1.86363208}, //
+
38887 {4.52056026, 1.86432278}, //
+
38888 {4.52007771, 1.86522222}, //
+
38889 {4.51955318, 1.86633027}, //
+
38890 {4.51898623, 1.86764693}, //
+
38891 {4.51837778, 1.86917222}, //
+
38892 {4.51772738, 1.87090611}, //
+
38893 {4.51703453, 1.87284875}, //
+
38894 {4.5163002, 1.875}, //
+
38895 {4.51400232, 1.87806356}, //
+
38896 {4.511621, 1.88120985}, //
+
38897 {4.50915575, 1.88443887}, //
+
38898 {4.5066061, 1.88775063}, //
+
38899 {4.50397301, 1.89114511}, //
+
38900 {4.50125551, 1.89462221}, //
+
38901 {4.49845409, 1.89818215}, //
+
38902 {4.49556923, 1.90182471}, //
+
38903 {4.49259996, 1.90555}, //
+
38904 {4.49018717, 1.90778458}, //
+
38905 {4.48748159, 1.9099772}, //
+
38906 {4.48448324, 1.91212773}, //
+
38907 {4.48119259, 1.91423643}, //
+
38908 {4.47760916, 1.91630304}, //
+
38909 {4.47373343, 1.91832781}, //
+
38910 {4.46956491, 1.9203105}, //
+
38911 {4.46510363, 1.92225122}, //
+
38912 {4.46035004, 1.92414999}, //
+
38913 {4.45543957, 1.92597592}, //
+
38914 {4.45048571, 1.92767596}, //
+
38915 {4.44548893, 1.92925}, //
+
38916 {4.44044876, 1.93069816}, //
+
38917 {4.4353652, 1.93202043}, //
+
38918 {4.43023872, 1.93321669}, //
+
38919 {4.42506933, 1.93428707}, //
+
38920 {4.41985607, 1.93523145}, //
+
38921 {4.4145999, 1.93605006}, //
+
38922 {4.4079895, 1.93756044}, //
+
38923 {4.40171337, 1.93906975}, //
+
38924 {4.39577246, 1.94057775}, //
+
38925 {4.39016533, 1.94208455}, //
+
38926 {4.38489342, 1.94359016}, //
+
38927 {4.37995577, 1.94509447}, //
+
38928 {4.37535238, 1.94659758}, //
+
38929 {4.37108374, 1.94809937}, //
+
38930 {4.36714983, 1.94959998}, //
+
38931 {4.36170483, 1.95176113}, //
+
38932 {4.35592508, 1.95371115}, //
+
38933 {4.34981108, 1.95545006}, //
+
38934 {4.34336233, 1.95697773}, //
+
38935 {4.33657885, 1.95829439}, //
+
38936 {4.3294611, 1.95940006}, //
+
38937 {4.32200861, 1.96029449}, //
+
38938 {4.31422138, 1.96097779}, //
+
38939 {4.30609989, 1.96144998}, //
+
38940 {4.29793644, 1.96180677}, //
+
38941 {4.29002333, 1.96212161}, //
+
38942 {4.28236103, 1.96239448}, //
+
38943 {4.27494955, 1.96262527}, //
+
38944 {4.26778841, 1.96281421}, //
+
38945 {4.26087761, 1.96296108}, //
+
38946 {4.2542181, 1.9630661}, //
+
38947 {4.24780846, 1.96312904}, //
+
38948 {4.2416501, 1.96315002}, //
+
38949 {4.10689116, 1.96315002}, //
+
38950 {4.08026743, 1.96315002}, //
+
38951 {4.05179977, 1.96315002}, //
+
38952 {4.03835917, 1.96213269}, //
+
38953 {4.02517033, 1.96056974}, //
+
38954 {4.01223326, 1.95846117}, //
+
38955 {3.9995482, 1.95580673}, //
+
38956 {3.98711491, 1.9526068}, //
+
38957 {3.97493339, 1.94886112}, //
+
38958 {3.96300364, 1.94456971}, //
+
38959 {3.95132589, 1.93973267}, //
+
38960 {3.93989992, 1.93435001}, //
+
38961 {3.92906046, 1.92875803}, //
+
38962 {3.91914201, 1.92329323}, //
+
38963 {3.91014433, 1.91795552}, //
+
38964 {3.9020679, 1.91274512}, //
+
38965 {3.89491224, 1.90766168}, //
+
38966 {3.88867784, 1.90270555}, //
+
38967 {3.8833642, 1.8978765}, //
+
38968 {3.87897158, 1.89317465}, //
+
38969 {3.87549996, 1.88859999}, //
+
38970 {3.87415671, 1.88591361}, //
+
38971 {3.87361121, 1.88482225}, //
+
38972 {3.8727715, 1.88314319}, //
+
38973 {3.87247777, 1.8825556}, //
+
38974 {3.87226796, 1.88213575}, //
+
38975 {3.87210011, 1.88180006}, //
+
38976 {3.87210011, 1.8819679}, //
+
38977 {3.87210011, 1.88217783}, //
+
38978 {3.87210011, 1.88247156}, //
+
38979 {3.87210011, 1.88385677}, //
+
38980 {3.87210011, 1.88448644}, //
+
38981 {3.87210011, 1.88520002}, //
+
38982 {3.87365246, 1.8868469}, //
+
38983 {3.87528777, 1.88878763}, //
+
38984 {3.87700558, 1.89102221}, //
+
38985 {3.87880611, 1.89355063}, //
+
38986 {3.88068962, 1.8963728}, //
+
38987 {3.88265562, 1.89948893}, //
+
38988 {3.88470435, 1.90289879}, //
+
38989 {3.88683581, 1.9066025}, //
+
38990 {3.88905001, 1.91059995}, //
+
38991 {3.8912642, 1.91459811}, //
+
38992 {3.89339566, 1.91830373}, //
+
38993 {3.89544439, 1.92171669}, //
+
38994 {3.89741039, 1.92483699}, //
+
38995 {3.8992939, 1.92766476}, //
+
38996 {3.90109444, 1.93019998}, //
+
38997 {3.90281224, 1.93244255}, //
+
38998 {3.90444756, 1.93439257}, //
+
38999 {3.9059999, 1.93605006}, //
+
39000 {3.90767789, 1.93834758}, //
+
39001 {3.90968895, 1.94072902}, //
+
39002 {3.91203332, 1.94319439}, //
+
39003 {3.914711, 1.9457438}, //
+
39004 {3.91772223, 1.94837713}, //
+
39005 {3.92106676, 1.95109439}, //
+
39006 {3.92474437, 1.95389569}, //
+
39007 {3.92875552, 1.95678091}, //
+
39008 {3.93309999, 1.95975006}, //
+
39009 {3.93766427, 1.96275067}, //
+
39010 {3.94231224, 1.96570802}, //
+
39011 {3.94704437, 1.96862221}, //
+
39012 {3.95186043, 1.97149324}, //
+
39013 {3.95676041, 1.97432101}, //
+
39014 {3.96174455, 1.9771055}, //
+
39015 {3.96681237, 1.97984695}, //
+
39016 {3.97196412, 1.98254502}, //
+
39017 {3.97720003, 1.98520005}, //
+
39018 {3.98239374, 1.98773885}, //
+
39019 {3.98741984, 1.99006665}, //
+
39020 {3.99227786, 1.99218333}, //
+
39021 {3.99696779, 1.99408889}, //
+
39022 {4.00149012, 1.99578333}, //
+
39023 {4.00584459, 1.99726665}, //
+
39024 {4.01003075, 1.99853885}, //
+
39025 {4.01404953, 1.99960005}, //
+
39026 {4.01789999, 2.0004499}, //
+
39027 {4.02476168, 2.00250673}, //
+
39028 {4.03179121, 2.00414371}, //
+
39029 {4.03898907, 2.00536108}, //
+
39030 {4.04635429, 2.00615859}, //
+
39031 {4.05388784, 2.00653648}, //
+
39032 {4.06158876, 2.00649452}, //
+
39033 {4.06945801, 2.00603271}, //
+
39034 {4.0774951, 2.00515127}, //
+
39035 {4.08570004, 2.00384998}, //
+
39036 {4.11116648, 2.00384998}, //
+
39037 {4.11794996, 2.00384998}, //
+
39038 {4.12489986, 2.00384998}, //
+
39039 {4.14674997, 2.00384998}, //
+
39040 {4.15487099, 2.00527716}, //
+
39041 {4.16265631, 2.00653648}, //
+
39042 {4.17010546, 2.00762773}, //
+
39043 {4.17721891, 2.00855112}, //
+
39044 {4.18399668, 2.00930691}, //
+
39045 {4.19043875, 2.00989437}, //
+
39046 {4.19654512, 2.01031423}, //
+
39047 {4.20231533, 2.010566}, //
+
39048 {4.20774984, 2.01064992}, //
+
39049 {4.21382475, 2.01136351}, //
+
39050 {4.21998215, 2.01199317}, //
+
39051 {4.22622204, 2.01253891}, //
+
39052 {4.2325449, 2.01300073}, //
+
39053 {4.23895073, 2.01337838}, //
+
39054 {4.24543905, 2.01367211}, //
+
39055 {4.25200987, 2.01388216}, //
+
39056 {4.25866365, 2.01400805}, //
+
39057 {4.26539993, 2.01405001}, //
+
39058 {4.26579762, 2.01392412}, //
+
39059 {4.26699018, 2.01354623}, //
+
39060 {4.26897764, 2.01291656}, //
+
39061 {4.27176046, 2.01203513}, //
+
39062 {4.29084206, 2.00599074}, //
+
39063 {4.29759979, 2.00384998}, //
+
39064 {4.30480814, 2.00159383}, //
+
39065 {4.31209898, 1.99933636}, //
+
39066 {4.31947231, 1.99707782}, //
+
39067 {4.32692862, 1.99481785}, //
+
39068 {4.33446741, 1.99255681}, //
+
39069 {4.3420887, 1.99029446}, //
+
39070 {4.34979343, 1.98803091}, //
+
39071 {4.35758018, 1.98576605}, //
+
39072 {4.36544991, 1.9835}, //
+
39073 {4.37329817, 1.98128581}, //
+
39074 {4.38102055, 1.97915435}, //
+
39075 {4.38861656, 1.9771055}, //
+
39076 {4.39608717, 1.9751395}, //
+
39077 {4.40343142, 1.97325623}, //
+
39078 {4.41064978, 1.97145557}, //
+
39079 {4.41774273, 1.96973765}, //
+
39080 {4.42470932, 1.96810246}, //
+
39081 {4.43155003, 1.96654999}, //
+
39082 {4.43960857, 1.96479809}, //
+
39083 {4.44720697, 1.96254253}, //
+
39084 {4.45434427, 1.95978332}, //
+
39085 {4.46102142, 1.95652032}, //
+
39086 {4.46723843, 1.95275366}, //
+
39087 {4.47299433, 1.94848335}, //
+
39088 {4.47829008, 1.94370925}, //
+
39089 {4.48312521, 1.9384315}, //
+
39090 {4.48750019, 1.93264997}, //
+
39091 {4.49153948, 1.92666912}, //
+
39092 {4.49536896, 1.920771}, //
+
39093 {4.49898911, 1.9149555}, //
+
39094 {4.50239897, 1.90922284}, //
+
39095 {4.50559855, 1.9035728}, //
+
39096 {4.50858879, 1.8980056}, //
+
39097 {4.51136923, 1.89252102}, //
+
39098 {4.51393938, 1.88711917}, //
+
39099 {4.5163002, 1.88180006}, //
+
39100 {4.51634216, 1.88104439}, //
+
39101 {4.51646805, 1.88028884}, //
+
39102 {4.51667786, 1.87953329}, //
+
39103 {4.51697159, 1.87877774}, //
+
39104 {4.51734924, 1.87802219}, //
+
39105 {4.5178113, 1.87726665}, //
+
39106 {4.5183568, 1.8765111}, //
+
39107 {4.51898623, 1.87575555}, //
+
39108 {4.51970005, 1.875}, //
+
39109 {4.52039242, 1.87217712}, //
+
39110 {4.52095938, 1.86973083}, //
+
39111 {4.52139997, 1.86766112}, //
+
39112 {4.52171469, 1.86596787}, //
+
39113 {4.52190351, 1.8646512}, //
+
39114 {4.52196646, 1.86371112}, //
+
39115 {4.52190351, 1.8631475}, //
+
39116 {4.52171469, 1.86296046}, //
+
39117 });
+
39118 polys.push_back({
+
39119 {0.766300023, 2.01396608}, //
+
39120 {0.766300023, 2.01386118}, //
+
39121 {0.766300023, 2.01371431}, //
+
39122 });
+
39123 polys.push_back({
+
39124 {0.300426543, 1.95585179}, //
+
39125 {0.299888879, 1.95714998}, //
+
39126 {0.299433947, 1.95836294}, //
+
39127 {0.299061716, 1.95949078}, //
+
39128 {0.298772216, 1.96053338}, //
+
39129 {0.298565418, 1.96149075}, //
+
39130 {0.29844135, 1.962363}, //
+
39131 {0.298400015, 1.96315002}, //
+
39132 {0.298400015, 1.96466112}, //
+
39133 {0.298400015, 1.96541667}, //
+
39134 {0.298400015, 1.96994996}, //
+
39135 {0.298400015, 1.97072589}, //
+
39136 {0.298400015, 1.97239995}, //
+
39137 {0.298400015, 1.97839999}, //
+
39138 {0.298358023, 1.9795543}, //
+
39139 {0.298232108, 1.98075056}, //
+
39140 {0.298022211, 1.98198891}, //
+
39141 {0.29772839, 1.9832691}, //
+
39142 {0.297350615, 1.98459136}, //
+
39143 {0.296888888, 1.9859556}, //
+
39144 {0.296343207, 1.98736167}, //
+
39145 {0.295713574, 1.98880982}, //
+
39146 {0.294999987, 1.99030006}, //
+
39147 {0.296700001, 1.98689997}, //
+
39148 {0.297077149, 1.98608148}, //
+
39149 {0.297453076, 1.98513699}, //
+
39150 {0.29782778, 1.98406672}, //
+
39151 {0.298201233, 1.98287034}, //
+
39152 {0.298573464, 1.98154819}, //
+
39153 {0.298944443, 1.98010004}, //
+
39154 {0.299314201, 1.97852588}, //
+
39155 {0.299682707, 1.97682595}, //
+
39156 {0.30004999, 1.97500002}, //
+
39157 {0.300406784, 1.9731636}, //
+
39158 {0.300721616, 1.97140992}, //
+
39159 {0.300994456, 1.96973884}, //
+
39160 {0.301225305, 1.96815062}, //
+
39161 {0.301414192, 1.966645}, //
+
39162 {0.301561117, 1.96522224}, //
+
39163 {0.301666051, 1.96388209}, //
+
39164 {0.301729023, 1.96262467}, //
+
39165 {0.301750004, 1.96144998}, //
+
39166 {0.301750004, 1.95545006}, //
+
39167 {0.301750004, 1.95459259}, //
+
39168 {0.301750004, 1.95377588}, //
+
39169 {0.301750004, 1.95299995}, //
+
39170 {0.301046908, 1.95446849}, //
+
39171 });
+
39172 polys.push_back({
+
39173 {0.242093205, 1.73264194}, //
+
39174 {0.241778389, 1.73276794}, //
+
39175 {0.241505548, 1.73297775}, //
+
39176 {0.241274685, 1.7332716}, //
+
39177 {0.241085798, 1.73364937}, //
+
39178 {0.240938887, 1.73411107}, //
+
39179 {0.240833953, 1.73465681}, //
+
39180 {0.240770981, 1.73528647}, //
+
39181 {0.24075, 1.73599994}, //
+
39182 {0.24075, 1.73834813}, //
+
39183 {0.24075, 1.74014997}, //
+
39184 {0.24075, 1.74237037}, //
+
39185 {0.24075, 1.75975001}, //
+
39186 {0.240729019, 1.76431358}, //
+
39187 {0.240666047, 1.76895988}, //
+
39188 {0.240561113, 1.77368891}, //
+
39189 {0.240414202, 1.77850068}, //
+
39190 {0.240225315, 1.78339505}, //
+
39191 {0.239994451, 1.78837228}, //
+
39192 {0.239721611, 1.79343212}, //
+
39193 {0.239406794, 1.79857469}, //
+
39194 {0.239050001, 1.80379999}, //
+
39195 {0.238735184, 1.80895185}, //
+
39196 {0.238546297, 1.81385183}, //
+
39197 {0.23848334, 1.81850004}, //
+
39198 {0.238546297, 1.82289624}, //
+
39199 {0.238735184, 1.82704079}, //
+
39200 {0.239050001, 1.83093333}, //
+
39201 {0.239490747, 1.8345741}, //
+
39202 {0.240057409, 1.83796299}, //
+
39203 {0.24075, 1.84109998}, //
+
39204 {0.24075, 1.8471247}, //
+
39205 {0.24075, 1.8501389}, //
+
39206 {0.24075, 1.8531543}, //
+
39207 {0.24075, 1.87427223}, //
+
39208 {0.24075, 1.87728333}, //
+
39209 {0.24075, 1.88029444}, //
+
39210 {0.24075, 1.89534998}, //
+
39211 {0.240833327, 1.89850807}, //
+
39212 {0.241083339, 1.9019599}, //
+
39213 {0.241500005, 1.90570557}, //
+
39214 {0.242083326, 1.9097451}, //
+
39215 {0.242833331, 1.91407835}, //
+
39216 {0.243750006, 1.91870558}, //
+
39217 {0.244833335, 1.92362654}, //
+
39218 {0.246083334, 1.92884135}, //
+
39219 {0.247500002, 1.93435001}, //
+
39220 {0.248969138, 1.93985868}, //
+
39221 {0.25035432, 1.94507349}, //
+
39222 {0.251655549, 1.94999444}, //
+
39223 {0.252872825, 1.95462155}, //
+
39224 {0.254006177, 1.95895493}, //
+
39225 {0.255055547, 1.96299446}, //
+
39226 {0.256020993, 1.96674013}, //
+
39227 {0.256902456, 1.97019196}, //
+
39228 {0.257699996, 1.97335005}, //
+
39229 {0.264450014, 1.96994996}, //
+
39230 {0.264450014, 1.93264997}, //
+
39231 {0.265814185, 1.92816973}, //
+
39232 {0.266884565, 1.92377341}, //
+
39233 {0.267661124, 1.91946113}, //
+
39234 {0.268143833, 1.91523266}, //
+
39235 {0.26833272, 1.91108823}, //
+
39236 {0.268227786, 1.90702772}, //
+
39237 {0.267829001, 1.90305126}, //
+
39238 {0.267136425, 1.8991586}, //
+
39239 {0.266149998, 1.89534998}, //
+
39240 {0.265048146, 1.89166725}, //
+
39241 {0.263987035, 1.88815248}, //
+
39242 {0.262966663, 1.88480556}, //
+
39243 {0.261987031, 1.88162649}, //
+
39244 {0.261048138, 1.87861538}, //
+
39245 {0.260149986, 1.87577224}, //
+
39246 {0.259292603, 1.87309694}, //
+
39247 {0.258475929, 1.87058949}, //
+
39248 {0.257699996, 1.86825001}, //
+
39249 {0.256251842, 1.86501908}, //
+
39250 {0.254929632, 1.86137104}, //
+
39251 {0.253733337, 1.85730553}, //
+
39252 {0.252662957, 1.85282278}, //
+
39253 {0.251718521, 1.8479228}, //
+
39254 {0.2509, 1.84260559}, //
+
39255 {0.250207394, 1.83687103}, //
+
39256 {0.249640748, 1.83071911}, //
+
39257 {0.249200001, 1.82414997}, //
+
39258 {0.248843208, 1.81741357}, //
+
39259 {0.248528391, 1.8107599}, //
+
39260 {0.248255551, 1.80418885}, //
+
39261 {0.248024687, 1.79770064}, //
+
39262 {0.2478358, 1.79129505}, //
+
39263 {0.24768889, 1.78497219}, //
+
39264 {0.247583956, 1.77873206}, //
+
39265 {0.247520983, 1.77257466}, //
+
39266 {0.247500002, 1.7665}, //
+
39267 {0.247479007, 1.76214504}, //
+
39268 {0.247416049, 1.75812471}, //
+
39269 {0.247311115, 1.75443888}, //
+
39270 {0.247164205, 1.75108767}, //
+
39271 {0.246975303, 1.74807096}, //
+
39272 {0.246744439, 1.74538887}, //
+
39273 {0.246471599, 1.7430414}, //
+
39274 {0.246156797, 1.74102843}, //
+
39275 {0.245800003, 1.73934996}, //
+
39276 {0.24543272, 1.73793328}, //
+
39277 {0.245064199, 1.73668337}, //
+
39278 {0.244694442, 1.73559999}, //
+
39279 {0.244323462, 1.73468328}, //
+
39280 {0.243951231, 1.73393333}, //
+
39281 {0.243577778, 1.73335004}, //
+
39282 {0.243203089, 1.73293328}, //
+
39283 {0.242827162, 1.7326833}, //
+
39284 {0.242449999, 1.73259997}, //
+
39285 });
+
39286 polys.push_back({
+
39287 {0.367543221, 1.72913575}, //
+
39288 {0.366913587, 1.73240066}, //
+
39289 {0.3662, 1.73599994}, //
+
39290 {0.363975912, 1.74286175}, //
+
39291 {0.361837029, 1.7498914}, //
+
39292 {0.359783322, 1.7570889}, //
+
39293 {0.357814819, 1.76445436}, //
+
39294 {0.355931491, 1.77198768}, //
+
39295 {0.354133338, 1.77968884}, //
+
39296 {0.35242036, 1.78755808}, //
+
39297 {0.350792587, 1.79559505}, //
+
39298 {0.349249989, 1.80379999}, //
+
39299 {0.348369122, 1.81004202}, //
+
39300 {0.347237647, 1.81670129}, //
+
39301 {0.345855564, 1.82377779}, //
+
39302 {0.344222844, 1.83127165}, //
+
39303 {0.342339516, 1.83918273}, //
+
39304 {0.34020555, 1.84751105}, //
+
39305 {0.337820977, 1.85625684}, //
+
39306 {0.335185796, 1.86541975}, //
+
39307 {0.332300007, 1.875}, //
+
39308 {0.330159247, 1.88244998}, //
+
39309 {0.328270376, 1.88973331}, //
+
39310 {0.326633334, 1.89684999}, //
+
39311 {0.325248152, 1.90380001}, //
+
39312 {0.324114829, 1.91058338}, //
+
39313 {0.323233336, 1.91719997}, //
+
39314 {0.322603703, 1.92365003}, //
+
39315 {0.322225928, 1.92993331}, //
+
39316 {0.322100013, 1.93605006}, //
+
39317 {0.322162956, 1.93590307}, //
+
39318 {0.322666675, 1.93472779}, //
+
39319 {0.32518518, 1.92885125}, //
+
39320 {0.326129615, 1.92664754}, //
+
39321 {0.327199996, 1.92414999}, //
+
39322 {0.328332722, 1.9214747}, //
+
39323 {0.329464197, 1.91871548}, //
+
39324 {0.33059445, 1.91587222}, //
+
39325 {0.331723452, 1.91294503}, //
+
39326 {0.332851231, 1.90993392}, //
+
39327 {0.333977789, 1.90683889}, //
+
39328 {0.335103095, 1.90365982}, //
+
39329 {0.336227149, 1.90039694}, //
+
39330 {0.337350011, 1.89705002}, //
+
39331 {0.338462353, 1.8935982}, //
+
39332 {0.339532703, 1.89002037}, //
+
39333 {0.340561122, 1.88631666}, //
+
39334 {0.341547519, 1.88248706}, //
+
39335 {0.342491984, 1.87853146}, //
+
39336 {0.343394458, 1.87444997}, //
+
39337 {0.344254941, 1.8702426}, //
+
39338 {0.345073462, 1.86590922}, //
+
39339 {0.345849991, 1.86144996}, //
+
39340 {0.346625924, 1.85829198}, //
+
39341 {0.347442597, 1.85484016}, //
+
39342 {0.34830001, 1.85109448}, //
+
39343 {0.349198163, 1.84705496}, //
+
39344 {0.350137025, 1.84272158}, //
+
39345 {0.351116657, 1.83809447}, //
+
39346 {0.352137029, 1.83317351}, //
+
39347 {0.353198141, 1.82795858}, //
+
39348 {0.354299992, 1.82245004}, //
+
39349 {0.355412334, 1.81678391}, //
+
39350 {0.356482714, 1.81107473}, //
+
39351 {0.357511103, 1.80532217}, //
+
39352 {0.35849753, 1.79952657}, //
+
39353 {0.359441966, 1.7936877}, //
+
39354 {0.36034444, 1.78780556}, //
+
39355 {0.361204952, 1.78188026}, //
+
39356 {0.362023443, 1.77591169}, //
+
39357 {0.362800002, 1.76989996}, //
+
39358 {0.36353457, 1.76402342}, //
+
39359 {0.364227146, 1.75843823}, //
+
39360 {0.36487779, 1.7531445}, //
+
39361 {0.365486413, 1.748142}, //
+
39362 {0.366053075, 1.74343085}, //
+
39363 {0.366577774, 1.73901117}, //
+
39364 {0.367060483, 1.73488271}, //
+
39365 {0.367501229, 1.73104572}, //
+
39366 {0.367900014, 1.72749996}, //
+
39367 {0.367980421, 1.72678804}, //
+
39368 });
+
39369 polys.push_back({
+
39370 {0.339049995, 1.71224999}, //
+
39371 {0.337538898, 1.71751666}, //
+
39372 {0.336993217, 1.71941853}, //
+
39373 {0.336363584, 1.72161293}, //
+
39374 {0.335649997, 1.72409999}, //
+
39375 {0.334883958, 1.72680676}, //
+
39376 {0.334074706, 1.72963822}, //
+
39377 {0.33322221, 1.73259449}, //
+
39378 {0.332326531, 1.73567533}, //
+
39379 {0.331387669, 1.73888087}, //
+
39380 {0.330405563, 1.7422111}, //
+
39381 {0.329380244, 1.74566603}, //
+
39382 {0.328311741, 1.74924564}, //
+
39383 {0.327199996, 1.75294995}, //
+
39384 {0.326046288, 1.75667465}, //
+
39385 {0.324851841, 1.76031542}, //
+
39386 {0.323616654, 1.76387227}, //
+
39387 {0.322340727, 1.76734507}, //
+
39388 {0.32102406, 1.77073395}, //
+
39389 {0.319666654, 1.77403891}, //
+
39390 {0.318268508, 1.77725983}, //
+
39391 {0.316829622, 1.78039694}, //
+
39392 {0.315349996, 1.78345001}, //
+
39393 {0.313125312, 1.78828585}, //
+
39394 {0.310984582, 1.79374874}, //
+
39395 {0.308927774, 1.7998389}, //
+
39396 {0.30695495, 1.80655622}, //
+
39397 {0.305066049, 1.81390059}, //
+
39398 {0.303261101, 1.82187223}, //
+
39399 {0.301540136, 1.83047104}, //
+
39400 {0.299903095, 1.83969688}, //
+
39401 {0.298350006, 1.84955001}, //
+
39402 {0.296975315, 1.85958087}, //
+
39403 {0.295851231, 1.86931789}, //
+
39404 {0.294977784, 1.87876105}, //
+
39405 {0.294354945, 1.88791049}, //
+
39406 {0.293982714, 1.89676607}, //
+
39407 {0.293861121, 1.9053278}, //
+
39408 {0.293990135, 1.91359568}, //
+
39409 {0.294369757, 1.92156971}, //
+
39410 {0.294999987, 1.92925}, //
+
39411 {0.297004938, 1.9235611}, //
+
39412 {0.305150002, 1.90044999}, //
+
39413 {0.307332098, 1.89381909}, //
+
39414 {0.309345067, 1.8867265}, //
+
39415 {0.311188877, 1.87917221}, //
+
39416 {0.312863588, 1.87115622}, //
+
39417 {0.314369142, 1.86267841}, //
+
39418 {0.315705568, 1.8537389}, //
+
39419 {0.316872835, 1.8443377}, //
+
39420 {0.317870975, 1.83447468}, //
+
39421 {0.318699986, 1.82414997}, //
+
39422 {0.320211112, 1.81607032}, //
+
39423 {0.321722209, 1.80840921}, //
+
39424 {0.323233336, 1.80116665}, //
+
39425 {0.324744433, 1.79434264}, //
+
39426 {0.32625556, 1.78793705}, //
+
39427 {0.327766657, 1.78195}, //
+
39428 {0.329277784, 1.77638149}, //
+
39429 {0.330788881, 1.77123153}, //
+
39430 {0.332300007, 1.7665}, //
+
39431 {0.333716661, 1.76047719}, //
+
39432 {0.33496666, 1.75445306}, //
+
39433 {0.336050004, 1.74842775}, //
+
39434 {0.336966664, 1.74240124}, //
+
39435 {0.337716669, 1.73637342}, //
+
39436 {0.33829999, 1.73034441}, //
+
39437 {0.338716656, 1.72431421}, //
+
39438 {0.338966668, 1.7182827}, //
+
39439 });
+
39440 polys.push_back({
+
39441 {0.202127784, 1.70012653}, //
+
39442 {0.201749995, 1.70039999}, //
+
39443 {0.201393217, 1.70079875}, //
+
39444 {0.2010784, 1.70123947}, //
+
39445 {0.20080556, 1.70172226}, //
+
39446 {0.200574696, 1.7022469}, //
+
39447 {0.200385809, 1.70281363}, //
+
39448 {0.200238883, 1.70342219}, //
+
39449 {0.20013395, 1.70407283}, //
+
39450 {0.200070992, 1.70476544}, //
+
39451 {0.200049996, 1.70550001}, //
+
39452 {0.200029016, 1.70629692}, //
+
39453 {0.199966043, 1.70717657}, //
+
39454 {0.199861109, 1.70813894}, //
+
39455 {0.199714199, 1.70918393}, //
+
39456 {0.199525312, 1.71031177}, //
+
39457 {0.199294448, 1.71152222}, //
+
39458 {0.199021608, 1.7128154}, //
+
39459 {0.198706791, 1.71419132}, //
+
39460 {0.198349997, 1.71564996}, //
+
39461 {0.197993204, 1.71716046}, //
+
39462 {0.197678402, 1.71866977}, //
+
39463 {0.197405562, 1.72017777}, //
+
39464 {0.197174698, 1.72168458}, //
+
39465 {0.196985796, 1.72319007}, //
+
39466 {0.196838886, 1.72469449}, //
+
39467 {0.196733952, 1.72619748}, //
+
39468 {0.196670994, 1.7276994}, //
+
39469 {0.196649998, 1.72920001}, //
+
39470 {0.197363585, 1.73167527}, //
+
39471 {0.197993204, 1.73456788}, //
+
39472 {0.198538885, 1.73787773}, //
+
39473 {0.199000612, 1.74160492}, //
+
39474 {0.199378401, 1.74574935}, //
+
39475 {0.199672222, 1.75031114}, //
+
39476 {0.199882105, 1.75529015}, //
+
39477 {0.20000802, 1.7606864}, //
+
39478 {0.200049996, 1.7665}, //
+
39479 {0.200070992, 1.7748518}, //
+
39480 {0.20013395, 1.78332961}, //
+
39481 {0.200238883, 1.7919333}, //
+
39482 {0.200385809, 1.80066299}, //
+
39483 {0.200574696, 1.80951858}, //
+
39484 {0.20080556, 1.81850004}, //
+
39485 {0.2010784, 1.82760739}, //
+
39486 {0.201393217, 1.83684075}, //
+
39487 {0.201749995, 1.84619999}, //
+
39488 {0.202148765, 1.85534942}, //
+
39489 {0.202589512, 1.86395311}, //
+
39490 {0.20307222, 1.87201107}, //
+
39491 {0.20359692, 1.87952352}, //
+
39492 {0.204163581, 1.88649011}, //
+
39493 {0.204772219, 1.89291108}, //
+
39494 {0.205422834, 1.89878643}, //
+
39495 {0.20611544, 1.90411603}, //
+
39496 {0.206850007, 1.90890002}, //
+
39497 {0.208499998, 1.91059995}, //
+
39498 {0.209171608, 1.91127157}, //
+
39499 {0.209444448, 1.91154444}, //
+
39500 {0.209675312, 1.91177535}, //
+
39501 {0.21001111, 1.91211116}, //
+
39502 {0.210199997, 1.91229999}, //
+
39503 {0.21028395, 1.91221607}, //
+
39504 {0.210535809, 1.91196418}, //
+
39505 {0.210724697, 1.91177535}, //
+
39506 {0.2112284, 1.91127157}, //
+
39507 {0.211543217, 1.91095674}, //
+
39508 {0.212256789, 1.91024315}, //
+
39509 {0.212571606, 1.90992844}, //
+
39510 {0.212844446, 1.90965557}, //
+
39511 {0.213579014, 1.908921}, //
+
39512 {0.213599995, 1.90890002}, //
+
39513 {0.215299994, 1.90550005}, //
+
39514 {0.215656787, 1.904755}, //
+
39515 {0.215971604, 1.90400863}, //
+
39516 {0.216244444, 1.90326107}, //
+
39517 {0.216475308, 1.90251231}, //
+
39518 {0.216664195, 1.90176237}, //
+
39519 {0.216811106, 1.90101111}, //
+
39520 {0.216916054, 1.90025866}, //
+
39521 {0.216979012, 1.8995049}, //
+
39522 {0.216999993, 1.89874995}, //
+
39523 {0.216958031, 1.89611733}, //
+
39524 {0.216832101, 1.89273024}, //
+
39525 {0.216622218, 1.88858891}, //
+
39526 {0.216328397, 1.88369322}, //
+
39527 {0.215950623, 1.87804317}, //
+
39528 {0.215488896, 1.87163889}, //
+
39529 {0.214943215, 1.86448026}, //
+
39530 {0.214313582, 1.85656726}, //
+
39531 {0.213599995, 1.84790003}, //
+
39532 {0.212865427, 1.84112155}, //
+
39533 {0.212172836, 1.834342}, //
+
39534 {0.211522222, 1.82756114}, //
+
39535 {0.210913584, 1.82077897}, //
+
39536 {0.210346907, 1.81399572}, //
+
39537 {0.209822223, 1.80721116}, //
+
39538 {0.209339499, 1.80042529}, //
+
39539 {0.208898768, 1.79363823}, //
+
39540 {0.208499998, 1.78684998}, //
+
39541 {0.20815371, 1.78011358}, //
+
39542 {0.207848147, 1.77345991}, //
+
39543 {0.207583338, 1.76688886}, //
+
39544 {0.207359254, 1.76040065}, //
+
39545 {0.207175925, 1.75399506}, //
+
39546 {0.207033336, 1.7476722}, //
+
39547 {0.206931487, 1.74143207}, //
+
39548 {0.206870377, 1.73527467}, //
+
39549 {0.206850007, 1.72920001}, //
+
39550 {0.206829011, 1.72555864}, //
+
39551 {0.206766054, 1.72216785}, //
+
39552 {0.206661105, 1.71902776}, //
+
39553 {0.206514195, 1.71613824}, //
+
39554 {0.206325307, 1.71349943}, //
+
39555 {0.206094444, 1.71111107}, //
+
39556 {0.205821604, 1.70897341}, //
+
39557 {0.205506787, 1.70708644}, //
+
39558 {0.205149993, 1.70545006}, //
+
39559 {0.204772219, 1.70405436}, //
+
39560 {0.204394445, 1.70286727}, //
+
39561 {0.204016671, 1.70188892}, //
+
39562 {0.203638881, 1.70111918}, //
+
39563 {0.203261107, 1.70055807}, //
+
39564 {0.202883333, 1.70020556}, //
+
39565 {0.202505559, 1.70006168}, //
+
39566 });
+
39567 polys.push_back({
+
39568 {0.395398766, 1.71653092}, //
+
39569 {0.395000011, 1.71735001}, //
+
39570 {0.394622236, 1.71867156}, //
+
39571 {0.394244432, 1.7203697}, //
+
39572 {0.393866658, 1.72244442}, //
+
39573 {0.393488884, 1.72489572}, //
+
39574 {0.39311111, 1.72772348}, //
+
39575 {0.392733335, 1.73092782}, //
+
39576 {0.392355561, 1.73450863}, //
+
39577 {0.391977787, 1.73846602}, //
+
39578 {0.391600013, 1.7428}, //
+
39579 {0.391243219, 1.74736357}, //
+
39580 {0.390928388, 1.75200987}, //
+
39581 {0.390655547, 1.7567389}, //
+
39582 {0.390424699, 1.76155066}, //
+
39583 {0.390235811, 1.76644504}, //
+
39584 {0.390088886, 1.77142227}, //
+
39585 {0.389983952, 1.77648211}, //
+
39586 {0.38992098, 1.78162467}, //
+
39587 {0.389899999, 1.78684998}, //
+
39588 {0.389112949, 1.80288339}, //
+
39589 {0.388240755, 1.81782782}, //
+
39590 {0.387283325, 1.83168328}, //
+
39591 {0.386240751, 1.84445}, //
+
39592 {0.385112971, 1.85612774}, //
+
39593 {0.383899987, 1.86671662}, //
+
39594 {0.382601857, 1.87621665}, //
+
39595 {0.381218523, 1.88462782}, //
+
39596 {0.379750013, 1.89195001}, //
+
39597 {0.379791975, 1.8917408}, //
+
39598 {0.37991789, 1.89111292}, //
+
39599 {0.380421609, 1.8886019}, //
+
39600 {0.380799383, 1.88671851}, //
+
39601 {0.383150011, 1.875}, //
+
39602 {0.383925915, 1.87110746}, //
+
39603 {0.384742588, 1.86696291}, //
+
39604 {0.385600001, 1.86256671}, //
+
39605 {0.386498153, 1.8579185}, //
+
39606 {0.387437046, 1.85301852}, //
+
39607 {0.388416678, 1.84786665}, //
+
39608 {0.38943705, 1.84246302}, //
+
39609 {0.390498161, 1.83680737}, //
+
39610 {0.391600013, 1.83089995}, //
+
39611 {0.392691344, 1.82489812}, //
+
39612 {0.393698752, 1.81893706}, //
+
39613 {0.394622236, 1.81301665}, //
+
39614 {0.395461738, 1.80713701}, //
+
39615 {0.396217287, 1.80129814}, //
+
39616 {0.396888882, 1.79550004}, //
+
39617 {0.397476554, 1.78974259}, //
+
39618 {0.397980243, 1.78402591}, //
+
39619 {0.398400009, 1.77835}, //
+
39620 {0.398756802, 1.7727679}, //
+
39621 {0.399071604, 1.7673105}, //
+
39622 {0.399344444, 1.76197779}, //
+
39623 {0.399575323, 1.75676978}, //
+
39624 {0.39976421, 1.75168645}, //
+
39625 {0.399911106, 1.74672782}, //
+
39626 {0.40001604, 1.74189377}, //
+
39627 {0.400079012, 1.73718452}, //
+
39628 {0.400099993, 1.73259997}, //
+
39629 {0.399365425, 1.728392}, //
+
39630 {0.398672849, 1.72481239}, //
+
39631 {0.398022234, 1.72186112}, //
+
39632 {0.397413582, 1.71953833}, //
+
39633 {0.39684692, 1.71784377}, //
+
39634 {0.396322221, 1.7167778}, //
+
39635 {0.395839512, 1.71634007}, //
+
39636 });
+
39637 polys.push_back({
+
39638 {5.62251043, 1.26300001}, //
+
39639 {5.62202787, 1.26356661}, //
+
39640 {5.62150288, 1.26451111}, //
+
39641 {5.62093639, 1.26583338}, //
+
39642 {5.62032795, 1.2675333}, //
+
39643 {5.61967707, 1.26961112}, //
+
39644 {5.6189847, 1.27206671}, //
+
39645 {5.61824989, 1.27489996}, //
+
39646 {5.61574316, 1.28916979}, //
+
39647 {5.61273384, 1.30335677}, //
+
39648 {5.60922241, 1.31746113}, //
+
39649 {5.60520792, 1.33148277}, //
+
39650 {5.60069132, 1.34542155}, //
+
39651 {5.59567213, 1.35927773}, //
+
39652 {5.59015083, 1.37305129}, //
+
39653 {5.58412647, 1.386742}, //
+
39654 {5.5776, 1.40034997}, //
+
39655 {5.57466221, 1.40477836}, //
+
39656 {5.57189369, 1.4090414}, //
+
39657 {5.56929445, 1.41313887}, //
+
39658 {5.56686401, 1.41707098}, //
+
39659 {5.56460285, 1.42083764}, //
+
39660 {5.56251097, 1.42443883}, //
+
39661 {5.56058836, 1.42787468}, //
+
39662 {5.55883455, 1.43114507}, //
+
39663 {5.55725002, 1.43425}, //
+
39664 {5.55293703, 1.4400636}, //
+
39665 {5.5490427, 1.44545984}, //
+
39666 {5.54556656, 1.45043886}, //
+
39667 {5.54250908, 1.45500064}, //
+
39668 {5.53987026, 1.45914507}, //
+
39669 {5.53765011, 1.46287227}, //
+
39670 {5.53584814, 1.46618211}, //
+
39671 {5.53446484, 1.46907473}, //
+
39672 {5.53350019, 1.47154999}, //
+
39673 {5.53350019, 1.47416663}, //
+
39674 {5.53350019, 1.48169994}, //
+
39675 {5.53421354, 1.48396599}, //
+
39676 {5.53484344, 1.48623085}, //
+
39677 {5.53538895, 1.4884944}, //
+
39678 {5.53585052, 1.49075675}, //
+
39679 {5.53622818, 1.49301791}, //
+
39680 {5.53652239, 1.49527776}, //
+
39681 {5.5367322, 1.49753642}, //
+
39682 {5.53685808, 1.49979377}, //
+
39683 {5.53690004, 1.50205004}, //
+
39684 {5.53681612, 1.50434816}, //
+
39685 {5.53656435, 1.50673151}, //
+
39686 {5.53614426, 1.50919998}, //
+
39687 {5.53555679, 1.51175368}, //
+
39688 {5.53480101, 1.51439261}, //
+
39689 {5.53387785, 1.51711667}, //
+
39690 {5.53278637, 1.51992595}, //
+
39691 {5.53152704, 1.52282035}, //
+
39692 {5.53009987, 1.52579999}, //
+
39693 {5.52792788, 1.52725863}, //
+
39694 {5.5259223, 1.52863455}, //
+
39695 {5.52408314, 1.52992773}, //
+
39696 {5.52241135, 1.5311383}, //
+
39697 {5.52090549, 1.53226602}, //
+
39698 {5.51956654, 1.53331113}, //
+
39699 {5.51839447, 1.53427351}, //
+
39700 {5.51738882, 1.53515303}, //
+
39701 {5.51655006, 1.53594995}, //
+
39702 {5.51583624, 1.53670561}, //
+
39703 {5.51520681, 1.53746116}, //
+
39704 {5.51466131, 1.53821671}, //
+
39705 {5.51419926, 1.53897226}, //
+
39706 {5.5138216, 1.53972781}, //
+
39707 {5.51352787, 1.54048336}, //
+
39708 {5.51331806, 1.5412389}, //
+
39709 {5.51319218, 1.54199445}, //
+
39710 {5.51315022, 1.54275}, //
+
39711 {5.51243639, 1.54275}, //
+
39712 {5.51180696, 1.54275}, //
+
39713 {5.50974989, 1.54275}, //
+
39714 {5.50974989, 1.54610002}, //
+
39715 {5.50977087, 1.54687655}, //
+
39716 {5.50983381, 1.54769504}, //
+
39717 {5.50993872, 1.54855561}, //
+
39718 {5.51008558, 1.54945803}, //
+
39719 {5.51027489, 1.55040252}, //
+
39720 {5.51050568, 1.55138886}, //
+
39721 {5.51077843, 1.55241728}, //
+
39722 {5.51109314, 1.55348766}, //
+
39723 {5.51144981, 1.5546}, //
+
39724 {5.51184893, 1.55575371}, //
+
39725 {5.51228952, 1.55694818}, //
+
39726 {5.51277208, 1.55818331}, //
+
39727 {5.51329708, 1.55945921}, //
+
39728 {5.51386356, 1.56077588}, //
+
39729 {5.51447201, 1.56213331}, //
+
39730 {5.51512289, 1.56353152}, //
+
39731 {5.51581526, 1.56497037}, //
+
39732 {5.51655006, 1.56645}, //
+
39733 {5.51870108, 1.57082534}, //
+
39734 {5.52064371, 1.57490683}, //
+
39735 {5.52237797, 1.57869446}, //
+
39736 {5.52390289, 1.58218825}, //
+
39737 {5.52521992, 1.5853883}, //
+
39738 {5.52632761, 1.58829439}, //
+
39739 {5.52722692, 1.59090674}, //
+
39740 {5.52791786, 1.59322536}, //
+
39741 {5.52839994, 1.59525001}, //
+
39742 {5.52875662, 1.5971179}, //
+
39743 {5.52907181, 1.59894383}, //
+
39744 {5.52934456, 1.6007278}, //
+
39745 {5.52957535, 1.6024698}, //
+
39746 {5.52976418, 1.60416973}, //
+
39747 {5.52991104, 1.60582781}, //
+
39748 {5.53001595, 1.60744381}, //
+
39749 {5.53007889, 1.60901785}, //
+
39750 {5.53009987, 1.61055005}, //
+
39751 {5.53018379, 1.61301541}, //
+
39752 {5.53043604, 1.61590064}, //
+
39753 {5.53085566, 1.61920559}, //
+
39754 {5.53144312, 1.62293029}, //
+
39755 {5.53219891, 1.62707472}, //
+
39756 {5.53312206, 1.63163888}, //
+
39757 {5.53421354, 1.63662279}, //
+
39758 {5.53547287, 1.64202654}, //
+
39759 {5.53690004, 1.64785004}, //
+
39760 {5.53761339, 1.65228832}, //
+
39761 {5.53824329, 1.65655863}, //
+
39762 {5.5387888, 1.6606611}, //
+
39763 {5.53925085, 1.66459572}, //
+
39764 {5.53962851, 1.66836238}, //
+
39765 {5.53992224, 1.67196107}, //
+
39766 {5.54013205, 1.67539203}, //
+
39767 {5.54025793, 1.67865491}, //
+
39768 {5.54029989, 1.68175006}, //
+
39769 {5.54188442, 1.68999696}, //
+
39770 {5.54363823, 1.69815993}, //
+
39771 {5.54556131, 1.70623887}, //
+
39772 {5.5476532, 1.71423399}, //
+
39773 {5.54991436, 1.72214508}, //
+
39774 {5.55234432, 1.72997224}, //
+
39775 {5.55494404, 1.73771548}, //
+
39776 {5.55771255, 1.74537468}, //
+
39777 {5.56064987, 1.75294995}, //
+
39778 {5.56221294, 1.75606608}, //
+
39779 {5.5639019, 1.75939202}, //
+
39780 {5.56571674, 1.76292777}, //
+
39781 {5.56765747, 1.76667345}, //
+
39782 {5.56972408, 1.77062905}, //
+
39783 {5.57191658, 1.77479446}, //
+
39784 {5.57423496, 1.7791698}, //
+
39785 {5.57667971, 1.78375494}, //
+
39786 {5.57924986, 1.78855002}, //
+
39787 {5.58195686, 1.79349136}, //
+
39788 {5.58478832, 1.79851544}, //
+
39789 {5.58774424, 1.80362225}, //
+
39790 {5.59082508, 1.80881178}, //
+
39791 {5.59403086, 1.81408393}, //
+
39792 {5.59736109, 1.81943893}, //
+
39793 {5.60081625, 1.82487655}, //
+
39794 {5.60439587, 1.83039689}, //
+
39795 {5.60809994, 1.83599997}, //
+
39796 {5.61176157, 1.84152961}, //
+
39797 {5.61521339, 1.84680736}, //
+
39798 {5.61845541, 1.85183334}, //
+
39799 {5.62148762, 1.85660744}, //
+
39800 {5.62431002, 1.86112964}, //
+
39801 {5.62692213, 1.86539996}, //
+
39802 {5.62932491, 1.8694185}, //
+
39803 {5.63151741, 1.87318516}, //
+
39804 {5.6335001, 1.87670004}, //
+
39805 {5.63528395, 1.87985921}, //
+
39806 {5.63685799, 1.8825593}, //
+
39807 {5.63822222, 1.88479996}, //
+
39808 {5.63937664, 1.88658154}, //
+
39809 {5.64032078, 1.88790369}, //
+
39810 {5.64105558, 1.88876665}, //
+
39811 {5.6415801, 1.88917041}, //
+
39812 {5.64189529, 1.88911486}, //
+
39813 {5.6420002, 1.88859999}, //
+
39814 {5.64208317, 1.88698459}, //
+
39815 {5.64233351, 1.88516045}, //
+
39816 {5.64274979, 1.88312781}, //
+
39817 {5.64333344, 1.88088644}, //
+
39818 {5.6440835, 1.87843645}, //
+
39819 {5.64499998, 1.87577772}, //
+
39820 {5.64608335, 1.8729105}, //
+
39821 {5.64733315, 1.86983454}, //
+
39822 {5.64874983, 1.86654997}, //
+
39823 {5.65028143, 1.86309814}, //
+
39824 {5.65185356, 1.85952032}, //
+
39825 {5.6534667, 1.85581672}, //
+
39826 {5.65512037, 1.851987}, //
+
39827 {5.65681505, 1.84803152}, //
+
39828 {5.65854979, 1.84395003}, //
+
39829 {5.660326, 1.83974254}, //
+
39830 {5.66214275, 1.83540928}, //
+
39831 {5.66400003, 1.83095002}, //
+
39832 {5.66590977, 1.82651174}, //
+
39833 {5.66786194, 1.82224131}, //
+
39834 {5.66985559, 1.81813884}, //
+
39835 {5.67189121, 1.81420434}, //
+
39836 {5.67396927, 1.81043768}, //
+
39837 {5.67608881, 1.80683887}, //
+
39838 {5.67825079, 1.80340803}, //
+
39839 {5.68045425, 1.80014503}, //
+
39840 {5.68270016, 1.79705}, //
+
39841 {5.68345499, 1.79629445}, //
+
39842 {5.68420887, 1.7955389}, //
+
39843 {5.68496132, 1.79478335}, //
+
39844 {5.68571234, 1.79402781}, //
+
39845 {5.6864624, 1.79327226}, //
+
39846 {5.68721104, 1.79251671}, //
+
39847 {5.68795872, 1.79176116}, //
+
39848 {5.68870497, 1.79100561}, //
+
39849 {5.68944979, 1.79024994}, //
+
39850 {5.69020557, 1.78951538}, //
+
39851 {5.69096088, 1.78882289}, //
+
39852 {5.69171667, 1.78817225}, //
+
39853 {5.69247246, 1.78756356}, //
+
39854 {5.69322777, 1.78699696}, //
+
39855 {5.69398355, 1.7864722}, //
+
39856 {5.69473886, 1.78598952}, //
+
39857 {5.69549465, 1.78554881}, //
+
39858 {5.69624996, 1.78515005}, //
+
39859 {5.69698477, 1.78477228}, //
+
39860 {5.69767714, 1.7843945}, //
+
39861 {5.69832754, 1.78401661}, //
+
39862 {5.69893646, 1.78363883}, //
+
39863 {5.69950294, 1.78326106}, //
+
39864 {5.70002794, 1.78288329}, //
+
39865 {5.7005105, 1.78250551}, //
+
39866 {5.7009511, 1.78212774}, //
+
39867 {5.70135021, 1.78174996}, //
+
39868 {5.70170689, 1.78138268}, //
+
39869 {5.7020216, 1.7810142}, //
+
39870 {5.70229435, 1.78064442}, //
+
39871 {5.70252514, 1.78027344}, //
+
39872 {5.70271397, 1.77990127}, //
+
39873 {5.70286131, 1.77952778}, //
+
39874 {5.70296621, 1.77915311}, //
+
39875 {5.70302916, 1.77877712}, //
+
39876 {5.70305014, 1.77839994}, //
+
39877 {5.70305014, 1.77688885}, //
+
39878 {5.70305014, 1.77678394}, //
+
39879 {5.70305014, 1.776721}, //
+
39880 {5.70305014, 1.77670002}, //
+
39881 {5.70305014, 1.77594447}, //
+
39882 {5.70305014, 1.7756716}, //
+
39883 {5.70305014, 1.77535677}, //
+
39884 {5.70305014, 1.77499998}, //
+
39885 {5.70305014, 1.77338398}, //
+
39886 {5.70305014, 1.77332103}, //
+
39887 {5.70305014, 1.77330005}, //
+
39888 {5.70302916, 1.77321601}, //
+
39889 {5.70296621, 1.77296424}, //
+
39890 {5.70286131, 1.7725445}, //
+
39891 {5.70271397, 1.7719568}, //
+
39892 {5.7020216, 1.76918638}, //
+
39893 {5.70135021, 1.7665}, //
+
39894 {5.70093012, 1.76491547}, //
+
39895 {5.70042658, 1.76316178}, //
+
39896 {5.69983912, 1.76123893}, //
+
39897 {5.69916725, 1.75914693}, //
+
39898 {5.69841194, 1.75688577}, //
+
39899 {5.69757223, 1.75445557}, //
+
39900 {5.6966486, 1.75185621}, //
+
39901 {5.69564152, 1.74908769}, //
+
39902 {5.69455004, 1.74615002}, //
+
39903 {5.69335413, 1.74313891}, //
+
39904 {5.69203377, 1.7401278}, //
+
39905 {5.69058895, 1.73711669}, //
+
39906 {5.6890192, 1.73410559}, //
+
39907 {5.68732452, 1.73109448}, //
+
39908 {5.68550539, 1.72808337}, //
+
39909 {5.6835618, 1.72507226}, //
+
39910 {5.68149328, 1.72206116}, //
+
39911 {5.67929983, 1.71905005}, //
+
39912 {5.67778969, 1.71608019}, //
+
39913 {5.67628002, 1.71319318}, //
+
39914 {5.67477226, 1.7103889}, //
+
39915 {5.67326546, 1.70766723}, //
+
39916 {5.67176008, 1.70502841}, //
+
39917 {5.67025566, 1.70247221}, //
+
39918 {5.66875267, 1.69999874}, //
+
39919 {5.66725063, 1.69760799}, //
+
39920 {5.66575003, 1.69529998}, //
+
39921 {5.66335821, 1.69069445}, //
+
39922 {5.66071558, 1.68592227}, //
+
39923 {5.65782213, 1.6809833}, //
+
39924 {5.65467834, 1.67587781}, //
+
39925 {5.65128374, 1.67060554}, //
+
39926 {5.6476388, 1.66516662}, //
+
39927 {5.64374304, 1.65956116}, //
+
39928 {5.63959694, 1.65378892}, //
+
39929 {5.63520002, 1.64785004}, //
+
39930 {5.63214684, 1.64307654}, //
+
39931 {5.62900972, 1.63780057}, //
+
39932 {5.62578869, 1.63202226}, //
+
39933 {5.62248373, 1.62574136}, //
+
39934 {5.61909485, 1.618958}, //
+
39935 {5.61562204, 1.61167216}, //
+
39936 {5.61206532, 1.60388398}, //
+
39937 {5.60842466, 1.59559321}, //
+
39938 {5.60470009, 1.58679998}, //
+
39939 {5.60105848, 1.57789135}, //
+
39940 {5.59766769, 1.56923211}, //
+
39941 {5.59452772, 1.56082225}, //
+
39942 {5.59163809, 1.55266178}, //
+
39943 {5.58899927, 1.54475057}, //
+
39944 {5.58661127, 1.53708887}, //
+
39945 {5.58447361, 1.52967656}, //
+
39946 {5.58258629, 1.52251363}, //
+
39947 {5.58094978, 1.51559997}, //
+
39948 {5.58028841, 1.50747836}, //
+
39949 {5.57979202, 1.49969137}, //
+
39950 {5.5794611, 1.49223888}, //
+
39951 {5.57929564, 1.48512101}, //
+
39952 {5.57929564, 1.47833765}, //
+
39953 {5.5794611, 1.4718889}, //
+
39954 {5.57979202, 1.46577466}, //
+
39955 {5.58028841, 1.45999503}, //
+
39956 {5.58094978, 1.45455003}, //
+
39957 {5.58178949, 1.4495759}, //
+
39958 {5.58279705, 1.44518709}, //
+
39959 {5.58397245, 1.44138336}, //
+
39960 {5.58531523, 1.43816483}, //
+
39961 {5.58682632, 1.4355315}, //
+
39962 {5.58850574, 1.43348336}, //
+
39963 {5.59035254, 1.43202043}, //
+
39964 {5.59236717, 1.43114257}, //
+
39965 {5.59455013, 1.43085003}, //
+
39966 {5.59607077, 1.43097532}, //
+
39967 {5.59763384, 1.43135118}, //
+
39968 {5.59923887, 1.43197775}, //
+
39969 {5.60088587, 1.43285489}, //
+
39970 {5.60257483, 1.43398273}, //
+
39971 {5.60430574, 1.43536115}, //
+
39972 {5.60607862, 1.43699014}, //
+
39973 {5.60789299, 1.43886971}, //
+
39974 {5.60974979, 1.44099998}, //
+
39975 {5.61161804, 1.443308}, //
+
39976 {5.61344385, 1.44569874}, //
+
39977 {5.6152277, 1.44817221}, //
+
39978 {5.61696959, 1.45072842}, //
+
39979 {5.61866999, 1.45336723}, //
+
39980 {5.62032795, 1.4560889}, //
+
39981 {5.62194395, 1.45889318}, //
+
39982 {5.62351799, 1.46178019}, //
+
39983 {5.62505007, 1.46475005}, //
+
39984 {5.62668657, 1.47078276}, //
+
39985 {5.62857342, 1.47681415}, //
+
39986 {5.63071108, 1.48284447}, //
+
39987 {5.63309956, 1.48887348}, //
+
39988 {5.63573837, 1.49490118}, //
+
39989 {5.63862801, 1.50092781}, //
+
39990 {5.64176798, 1.50695312}, //
+
39991 {5.64515877, 1.51297712}, //
+
39992 {5.6487999, 1.51900005}, //
+
39993 {5.65185308, 1.52352226}, //
+
39994 {5.6549902, 1.52804446}, //
+
39995 {5.65821123, 1.53256667}, //
+
39996 {5.66151619, 1.53708887}, //
+
39997 {5.66490507, 1.54161108}, //
+
39998 {5.66837788, 1.54613328}, //
+
39999 {5.6719346, 1.5506556}, //
+
40000 {5.67557526, 1.55517781}, //
+
40001 {5.67929983, 1.55970001}, //
+
40002 {5.68373823, 1.56565988}, //
+
40003 {5.68800879, 1.57149506}, //
+
40004 {5.69211102, 1.57720554}, //
+
40005 {5.69604588, 1.58279133}, //
+
40006 {5.69981241, 1.58825243}, //
+
40007 {5.7034111, 1.59358895}, //
+
40008 {5.70684195, 1.59880066}, //
+
40009 {5.71010494, 1.60388768}, //
+
40010 {5.71320009, 1.60885}, //
+
40011 {5.71608591, 1.61368704}, //
+
40012 {5.71872091, 1.61839819}, //
+
40013 {5.72110558, 1.62298334}, //
+
40014 {5.72323942, 1.6274426}, //
+
40015 {5.72512293, 1.63177598}, //
+
40016 {5.72675562, 1.63598335}, //
+
40017 {5.72813749, 1.64006484}, //
+
40018 {5.72926903, 1.64402032}, //
+
40019 {5.73015022, 1.64785004}, //
+
40020 {5.73019218, 1.65016854}, //
+
40021 {5.73031807, 1.65261292}, //
+
40022 {5.73052788, 1.65518332}, //
+
40023 {5.73082161, 1.65787959}, //
+
40024 {5.73119926, 1.66070187}, //
+
40025 {5.73166132, 1.66365004}, //
+
40026 {5.73220682, 1.66672409}, //
+
40027 {5.73283625, 1.66992402}, //
+
40028 {5.73355007, 1.67324996}, //
+
40029 {5.7343049, 1.67662835}, //
+
40030 {5.73505878, 1.67996359}, //
+
40031 {5.73581123, 1.68325555}, //
+
40032 {5.73656225, 1.68650436}, //
+
40033 {5.73731232, 1.6897099}, //
+
40034 {5.73806095, 1.69287217}, //
+
40035 {5.73880863, 1.6959914}, //
+
40036 {5.73955488, 1.69906723}, //
+
40037 {5.74030018, 1.70210004}, //
+
40038 {5.74103451, 1.7050482}, //
+
40039 {5.74172735, 1.70787036}, //
+
40040 {5.74237776, 1.71056664}, //
+
40041 {5.7429862, 1.71313703}, //
+
40042 {5.74355316, 1.71558154}, //
+
40043 {5.74407768, 1.71790004}, //
+
40044 {5.74456072, 1.72009254}, //
+
40045 {5.74500132, 1.72215927}, //
+
40046 {5.74539995, 1.72409999}, //
+
40047 {5.74657536, 1.72997653}, //
+
40048 {5.74701595, 1.73218024}, //
+
40049 {5.74709988, 1.73259997}, //
+
40050 {5.74718332, 1.73251605}, //
+
40051 {5.74743319, 1.73226416}, //
+
40052 {5.74784994, 1.73184443}, //
+
40053 {5.74843311, 1.73125684}, //
+
40054 {5.74918318, 1.73050129}, //
+
40055 {5.75010014, 1.72957778}, //
+
40056 {5.75118351, 1.72848642}, //
+
40057 {5.7524333, 1.72722721}, //
+
40058 {5.75384998, 1.72580004}, //
+
40059 {5.75538206, 1.72427845}, //
+
40060 {5.7569561, 1.72271359}, //
+
40061 {5.7585721, 1.72110558}, //
+
40062 {5.76023006, 1.71945429}, //
+
40063 {5.76193047, 1.71775985}, //
+
40064 {5.76367235, 1.71602225}, //
+
40065 {5.7654562, 1.71424139}, //
+
40066 {5.76728201, 1.71241724}, //
+
40067 {5.76914978, 1.71054995}, //
+
40068 {5.77105904, 1.70867157}, //
+
40069 {5.7730093, 1.706792}, //
+
40070 {5.7750001, 1.70491111}, //
+
40071 {5.77703142, 1.70302904}, //
+
40072 {5.77910376, 1.70114565}, //
+
40073 {5.78121662, 1.69926107}, //
+
40074 {5.78337049, 1.6973753}, //
+
40075 {5.7855649, 1.69548821}, //
+
40076 {5.78779984, 1.69360006}, //
+
40077 {5.79001427, 1.69182658}, //
+
40078 {5.79214573, 1.69026172}, //
+
40079 {5.79419422, 1.6889056}, //
+
40080 {5.7961607, 1.68775797}, //
+
40081 {5.79804373, 1.68681908}, //
+
40082 {5.79984426, 1.68608892}, //
+
40083 {5.80156231, 1.68556726}, //
+
40084 {5.80319738, 1.68525434}, //
+
40085 {5.80474997, 1.68515003}, //
+
40086 {5.80483389, 1.68515003}, //
+
40087 {5.80493879, 1.68515003}, //
+
40088 {5.80508566, 1.68515003}, //
+
40089 {5.8057785, 1.68515003}, //
+
40090 {5.80609322, 1.68515003}, //
+
40091 {5.80644989, 1.68515003}, //
+
40092 {5.80682755, 1.68512905}, //
+
40093 {5.80720568, 1.6850661}, //
+
40094 {5.80758333, 1.68496108}, //
+
40095 {5.80796099, 1.68481421}, //
+
40096 {5.80833912, 1.68462527}, //
+
40097 {5.80871677, 1.68439448}, //
+
40098 {5.80909443, 1.68412161}, //
+
40099 {5.80947208, 1.68380678}, //
+
40100 {5.80985022, 1.68344998}, //
+
40101 {5.81024837, 1.68309319}, //
+
40102 {5.81068707, 1.68277836}, //
+
40103 {5.81116676, 1.68250561}, //
+
40104 {5.81168699, 1.6822747}, //
+
40105 {5.81224823, 1.68208575}, //
+
40106 {5.81285, 1.68193889}, //
+
40107 {5.81349277, 1.68183398}, //
+
40108 {5.81417608, 1.68177104}, //
+
40109 {5.81489992, 1.68175006}, //
+
40110 {5.81916046, 1.68175006}, //
+
40111 {5.81960106, 1.68175006}, //
+
40112 {5.82000017, 1.68175006}, //
+
40113 {5.8217001, 1.68175006}, //
+
40114 {5.81968498, 1.67806602}, //
+
40115 {5.81855202, 1.6759938}, //
+
40116 {5.81364059, 1.66701424}, //
+
40117 {5.81150007, 1.6631}, //
+
40118 {5.80920267, 1.65889263}, //
+
40119 {5.80682087, 1.65455925}, //
+
40120 {5.80435562, 1.65009999}, //
+
40121 {5.80180597, 1.64551485}, //
+
40122 {5.79917288, 1.64080369}, //
+
40123 {5.79645538, 1.63596666}, //
+
40124 {5.79365444, 1.63100374}, //
+
40125 {5.7907691, 1.62591481}, //
+
40126 {5.78779984, 1.6207}, //
+
40127 {5.78480911, 1.61545372}, //
+
40128 {5.7818594, 1.61024809}, //
+
40129 {5.77895021, 1.60508335}, //
+
40130 {5.77608156, 1.59995925}, //
+
40131 {5.77325392, 1.59487593}, //
+
40132 {5.7704668, 1.58983338}, //
+
40133 {5.76772022, 1.58483148}, //
+
40134 {5.76501465, 1.57987034}, //
+
40135 {5.76235008, 1.57494998}, //
+
40136 {5.75982094, 1.57019687}, //
+
40137 {5.75750065, 1.56573761}, //
+
40138 {5.75538874, 1.56157219}, //
+
40139 {5.75348568, 1.55770063}, //
+
40140 {5.75179148, 1.55412281}, //
+
40141 {5.75030565, 1.55083895}, //
+
40142 {5.74902821, 1.54784882}, //
+
40143 {5.74796009, 1.54515243}, //
+
40144 {5.74709988, 1.54275}, //
+
40145 {5.74492788, 1.53960311}, //
+
40146 {5.74292231, 1.53620684}, //
+
40147 {5.74108315, 1.53256106}, //
+
40148 {5.73941088, 1.52866602}, //
+
40149 {5.7379055, 1.52452159}, //
+
40150 {5.73656654, 1.52012777}, //
+
40151 {5.73539448, 1.51548457}, //
+
40152 {5.73438883, 1.51059198}, //
+
40153 {5.73355007, 1.50545001}, //
+
40154 {5.73191357, 1.49857843}, //
+
40155 {5.73002672, 1.49154139}, //
+
40156 {5.72788906, 1.48433888}, //
+
40157 {5.72550058, 1.47697103}, //
+
40158 {5.72286177, 1.4694376}, //
+
40159 {5.71997213, 1.46173894}, //
+
40160 {5.71683216, 1.45387471}, //
+
40161 {5.71344137, 1.44584501}, //
+
40162 {5.70979977, 1.43764997}, //
+
40163 {5.70754385, 1.43237221}, //
+
40164 {5.7052865, 1.42709446}, //
+
40165 {5.70302773, 1.42181671}, //
+
40166 {5.70076799, 1.41653883}, //
+
40167 {5.69850683, 1.41126108}, //
+
40168 {5.69624424, 1.40598333}, //
+
40169 {5.69398069, 1.40070558}, //
+
40170 {5.69171619, 1.39542782}, //
+
40171 {5.68944979, 1.39014995}, //
+
40172 {5.6879282, 1.3849982}, //
+
40173 {5.6863637, 1.3800981}, //
+
40174 {5.68475533, 1.37545002}, //
+
40175 {5.68310452, 1.3710537}, //
+
40176 {5.68140984, 1.36690927}, //
+
40177 {5.67967224, 1.36301672}, //
+
40178 {5.67789125, 1.35937595}, //
+
40179 {5.67606735, 1.35598707}, //
+
40180 {5.67420006, 1.35284996}, //
+
40181 {5.67230082, 1.35004818}, //
+
40182 {5.67035818, 1.34766483}, //
+
40183 {5.66837215, 1.34570003}, //
+
40184 {5.66634321, 1.34415376}, //
+
40185 {5.66427088, 1.34302592}, //
+
40186 {5.66215563, 1.34231663}, //
+
40187 {5.65999699, 1.34202588}, //
+
40188 {5.65779495, 1.34215367}, //
+
40189 {5.65555, 1.3427}, //
+
40190 {5.65266418, 1.34267902}, //
+
40191 {5.65002918, 1.34261608}, //
+
40192 {5.64764452, 1.34251106}, //
+
40193 {5.64551067, 1.34236419}, //
+
40194 {5.64362717, 1.34217536}, //
+
40195 {5.64199448, 1.34194446}, //
+
40196 {5.64061213, 1.34167159}, //
+
40197 {5.63948107, 1.34135675}, //
+
40198 {5.63859987, 1.34099996}, //
+
40199 {5.63788652, 1.34051788}, //
+
40200 {5.63725662, 1.33982718}, //
+
40201 {5.63671112, 1.33892775}, //
+
40202 {5.63624954, 1.3378197}, //
+
40203 {5.63587141, 1.33650303}, //
+
40204 {5.63557768, 1.33497775}, //
+
40205 {5.63536787, 1.33324385}, //
+
40206 {5.63524199, 1.33130121}, //
+
40207 {5.63520002, 1.32914996}, //
+
40208 {5.63515854, 1.32835245}, //
+
40209 {5.63503456, 1.32747102}, //
+
40210 {5.63482761, 1.32650554}, //
+
40211 {5.63453817, 1.32545614}, //
+
40212 {5.63416624, 1.32432282}, //
+
40213 {5.63371134, 1.32310557}, //
+
40214 {5.63317347, 1.32180429}, //
+
40215 {5.6325531, 1.32041919}, //
+
40216 {5.63184977, 1.31895006}, //
+
40217 {5.63184977, 1.29859996}, //
+
40218 {5.63111544, 1.29632282}, //
+
40219 {5.63042307, 1.29400241}, //
+
40220 {5.62977219, 1.29163885}, //
+
40221 {5.62916374, 1.28923213}, //
+
40222 {5.62859678, 1.28678215}, //
+
40223 {5.62807226, 1.28428888}, //
+
40224 {5.6275897, 1.28175247}, //
+
40225 {5.62714863, 1.2791729}, //
+
40226 {5.62674999, 1.27655005}, //
+
40227 {5.62637234, 1.27404201}, //
+
40228 {5.62599468, 1.27178454}, //
+
40229 {5.62561655, 1.26977777}, //
+
40230 {5.6252389, 1.26802158}, //
+
40231 {5.62486124, 1.26651609}, //
+
40232 {5.62448311, 1.26526105}, //
+
40233 {5.62410545, 1.26425683}, //
+
40234 {5.6237278, 1.26350307}, //
+
40235 {5.62335014, 1.26300001}, //
+
40236 {5.62295103, 1.26281106}, //
+
40237 });
+
40238 polys.push_back({
+
40239 {6.09975004, 1.80040002}, //
+
40240 {6.09983397, 1.80056787}, //
+
40241 {6.10027456, 1.80144942}, //
+
40242 {6.10050535, 1.80191112}, //
+
40243 {6.10077858, 1.80245674}, //
+
40244 {6.10109329, 1.8030864}, //
+
40245 {6.10144997, 1.80379999}, //
+
40246 {6.10178566, 1.8045969}, //
+
40247 {6.10203743, 1.80547655}, //
+
40248 {6.10220575, 1.80643892}, //
+
40249 {6.10228968, 1.80748391}, //
+
40250 {6.10228968, 1.80861175}, //
+
40251 {6.10220575, 1.8098222}, //
+
40252 {6.10203743, 1.81111538}, //
+
40253 {6.10178566, 1.81249142}, //
+
40254 {6.10144997, 1.81394994}, //
+
40255 {6.10107231, 1.81548142}, //
+
40256 {6.10069466, 1.81705368}, //
+
40257 {6.10031652, 1.8186667}, //
+
40258 {6.09993887, 1.82032037}, //
+
40259 {6.09956121, 1.82201481}, //
+
40260 {6.09918356, 1.82375002}, //
+
40261 {6.09880543, 1.82552588}, //
+
40262 {6.09842777, 1.82734263}, //
+
40263 {6.09805012, 1.82920003}, //
+
40264 {6.09758806, 1.83106792}, //
+
40265 {6.09695864, 1.83289385}, //
+
40266 {6.09616089, 1.83467782}, //
+
40267 {6.09519577, 1.8364197}, //
+
40268 {6.09406233, 1.83811975}, //
+
40269 {6.09276104, 1.83977783}, //
+
40270 {6.0912919, 1.84139383}, //
+
40271 {6.08965492, 1.84296787}, //
+
40272 {6.08785009, 1.84449995}, //
+
40273 {6.08592939, 1.84603143}, //
+
40274 {6.08392429, 1.84760368}, //
+
40275 {6.08183336, 1.8492167}, //
+
40276 {6.07965755, 1.85087037}, //
+
40277 {6.07739639, 1.85256481}, //
+
40278 {6.07504988, 1.85430002}, //
+
40279 {6.07261848, 1.85607588}, //
+
40280 {6.07010174, 1.85789263}, //
+
40281 {6.06750011, 1.85975003}, //
+
40282 {6.06467819, 1.86157596}, //
+
40283 {6.06148005, 1.86327589}, //
+
40284 {6.05790567, 1.86485004}, //
+
40285 {6.05395412, 1.8662982}, //
+
40286 {6.04962635, 1.86762035}, //
+
40287 {6.04492235, 1.86881661}, //
+
40288 {6.03984118, 1.86988699}, //
+
40289 {6.03438377, 1.87083149}, //
+
40290 {6.02855015, 1.87164998}, //
+
40291 {6.02869606, 1.87169135}, //
+
40292 {6.02913523, 1.87181544}, //
+
40293 {6.0298667, 1.87202227}, //
+
40294 {6.03089094, 1.87231171}, //
+
40295 {6.03220749, 1.872684}, //
+
40296 {6.03381681, 1.8731389}, //
+
40297 {6.03571844, 1.87367654}, //
+
40298 {6.03791285, 1.8742969}, //
+
40299 {6.04040003, 1.875}, //
+
40300 {6.04303312, 1.87573457}, //
+
40301 {6.04566669, 1.87642717}, //
+
40302 {6.04829979, 1.87707782}, //
+
40303 {6.05093336, 1.87768638}, //
+
40304 {6.05356646, 1.8782531}, //
+
40305 {6.05620003, 1.87877774}, //
+
40306 {6.05883312, 1.87926054}, //
+
40307 {6.06146669, 1.87970126}, //
+
40308 {6.06409979, 1.88010001}, //
+
40309 {6.06676483, 1.88045681}, //
+
40310 {6.06947041, 1.88077164}, //
+
40311 {6.07221651, 1.88104439}, //
+
40312 {6.07500362, 1.8812753}, //
+
40313 {6.07783127, 1.88146424}, //
+
40314 {6.08069992, 1.88161111}, //
+
40315 {6.0836091, 1.88171601}, //
+
40316 {6.0865593, 1.88177896}, //
+
40317 {6.08955002, 1.88180006}, //
+
40318 {6.09250879, 1.88175797}, //
+
40319 {6.09534025, 1.88163209}, //
+
40320 {6.0980444, 1.88142228}, //
+
40321 {6.1006217, 1.88112843}, //
+
40322 {6.10307169, 1.88075066}, //
+
40323 {6.10539436, 1.88028884}, //
+
40324 {6.1075902, 1.87974322}, //
+
40325 {6.10965872, 1.87911355}, //
+
40326 {6.11159992, 1.87839997}, //
+
40327 {6.11338377, 1.87756109}, //
+
40328 {6.11495781, 1.87655556}, //
+
40329 {6.11632204, 1.87538338}, //
+
40330 {6.11747646, 1.87404442}, //
+
40331 {6.11842108, 1.87253892}, //
+
40332 {6.11915541, 1.87086666}, //
+
40333 {6.1196804, 1.86902773}, //
+
40334 {6.11999512, 1.86702228}, //
+
40335 {6.12010002, 1.86485004}, //
+
40336 {6.12003708, 1.86039078}, //
+
40337 {6.11984825, 1.85605741}, //
+
40338 {6.11953354, 1.85185003}, //
+
40339 {6.11909246, 1.84776855}, //
+
40340 {6.11852598, 1.84381294}, //
+
40341 {6.11783314, 1.83998334}, //
+
40342 {6.11701488, 1.83627963}, //
+
40343 {6.11607027, 1.8327018}, //
+
40344 {6.11499977, 1.82924998}, //
+
40345 {6.11386681, 1.8259654}, //
+
40346 {6.11273336, 1.82288945}, //
+
40347 {6.11159992, 1.82002223}, //
+
40348 {6.11046648, 1.81736362}, //
+
40349 {6.10933352, 1.81491363}, //
+
40350 {6.10820007, 1.81267226}, //
+
40351 {6.10706663, 1.8106395}, //
+
40352 {6.10593319, 1.80881548}, //
+
40353 {6.10480022, 1.80719995}, //
+
40354 {6.10280514, 1.80451357}, //
+
40355 {6.10199451, 1.80342221}, //
+
40356 {6.09999943, 1.80073583}, //
+
40357 {6.09981251, 1.80048394}, //
+
40358 });
+
40359 polys.push_back({
+
40360 {3.90953708, 1.77756047}, //
+
40361 {3.90901661, 1.7776444}, //
+
40362 {3.90853715, 1.77781236}, //
+
40363 {3.90809822, 1.77806425}, //
+
40364 {3.90770006, 1.77839994}, //
+
40365 {3.9059999, 1.78009999}, //
+
40366 {3.90618896, 1.78009999}, //
+
40367 {3.90633583, 1.78009999}, //
+
40368 {3.90770006, 1.78009999}, //
+
40369 {3.90805674, 1.78012037}, //
+
40370 {3.90837169, 1.78018153}, //
+
40371 {3.90864444, 1.78028333}, //
+
40372 {3.90887523, 1.78042591}, //
+
40373 {3.90906429, 1.78060925}, //
+
40374 {3.90921116, 1.78083336}, //
+
40375 {3.90931606, 1.78109813}, //
+
40376 {3.90937901, 1.78140366}, //
+
40377 {3.90939999, 1.78174996}, //
+
40378 {3.90942097, 1.78210676}, //
+
40379 {3.90948391, 1.78242159}, //
+
40380 {3.90958881, 1.78269446}, //
+
40381 {3.90973592, 1.78292537}, //
+
40382 {3.90992475, 1.78311419}, //
+
40383 {3.91015553, 1.78326106}, //
+
40384 {3.91042829, 1.78336608}, //
+
40385 {3.91074324, 1.78342903}, //
+
40386 {3.91109991, 1.78345001}, //
+
40387 {3.91145682, 1.78345001}, //
+
40388 {3.91280007, 1.78345001}, //
+
40389 {3.91309261, 1.78359628}, //
+
40390 {3.91397047, 1.78403521}, //
+
40391 {3.91543341, 1.78476667}, //
+
40392 {3.91748142, 1.78579068}, //
+
40393 {3.92011476, 1.78710735}, //
+
40394 {3.92333341, 1.78871667}, //
+
40395 {3.92713714, 1.79061854}, //
+
40396 {3.93152595, 1.79281294}, //
+
40397 {3.93650007, 1.79530001}, //
+
40398 {3.94188213, 1.79800677}, //
+
40399 {3.94747281, 1.80083823}, //
+
40400 {3.9532721, 1.8037945}, //
+
40401 {3.95928025, 1.80687535}, //
+
40402 {3.96549702, 1.81008089}, //
+
40403 {3.97192216, 1.81341112}, //
+
40404 {3.97855616, 1.81686604}, //
+
40405 {3.98539877, 1.82044566}, //
+
40406 {3.99245, 1.82414997}, //
+
40407 {3.99956369, 1.82785368}, //
+
40408 {4.00659323, 1.83143151}, //
+
40409 {4.01353884, 1.83488333}, //
+
40410 {4.02040052, 1.83820927}, //
+
40411 {4.02717829, 1.84140921}, //
+
40412 {4.03387213, 1.84448338}, //
+
40413 {4.04048204, 1.84743154}, //
+
40414 {4.04700804, 1.8502537}, //
+
40415 {4.05345011, 1.85294998}, //
+
40416 {4.05967283, 1.85548949}, //
+
40417 {4.06551933, 1.85781908}, //
+
40418 {4.07098866, 1.85993886}, //
+
40419 {4.07608223, 1.86184871}, //
+
40420 {4.08079863, 1.86354876}, //
+
40421 {4.0851388, 1.86503887}, //
+
40422 {4.08910227, 1.86631918}, //
+
40423 {4.09268951, 1.86738956}, //
+
40424 {4.09590006, 1.86825001}, //
+
40425 {4.10447979, 1.86945736}, //
+
40426 {4.11515188, 1.87007964}, //
+
40427 {4.12791681, 1.87011671}, //
+
40428 {4.14277411, 1.86956847}, //
+
40429 {4.15972424, 1.86843514}, //
+
40430 {4.17876673, 1.86671662}, //
+
40431 {4.19990206, 1.8644129}, //
+
40432 {4.22312975, 1.86152411}, //
+
40433 {4.2484498, 1.85804999}, //
+
40434 {4.25686407, 1.85654938}, //
+
40435 {4.26552916, 1.85504758}, //
+
40436 {4.27444458, 1.85354447}, //
+
40437 {4.28361034, 1.85204017}, //
+
40438 {4.29302692, 1.85053456}, //
+
40439 {4.30269432, 1.84902775}, //
+
40440 {4.31261253, 1.84751976}, //
+
40441 {4.32278109, 1.84601045}, //
+
40442 {4.33319998, 1.84449995}, //
+
40443 {4.35000992, 1.84311485}, //
+
40444 {4.36577272, 1.84198153}, //
+
40445 {4.38048887, 1.84109998}, //
+
40446 {4.39415789, 1.84047031}, //
+
40447 {4.40678024, 1.84009254}, //
+
40448 {4.41835546, 1.83996665}, //
+
40449 {4.42888403, 1.84009254}, //
+
40450 {4.43836546, 1.84047031}, //
+
40451 {4.44680023, 1.84109998}, //
+
40452 {4.45443869, 1.84189749}, //
+
40453 {4.46153355, 1.84277904}, //
+
40454 {4.46808338, 1.8437444}, //
+
40455 {4.47408867, 1.8447938}, //
+
40456 {4.47954988, 1.84592712}, //
+
40457 {4.48446655, 1.84714448}, //
+
40458 {4.48883867, 1.84844565}, //
+
40459 {4.49266672, 1.84983087}, //
+
40460 {4.49595022, 1.8513}, //
+
40461 {4.49670553, 1.85134137}, //
+
40462 {4.49746132, 1.85146546}, //
+
40463 {4.49821663, 1.85167217}, //
+
40464 {4.49897242, 1.85196173}, //
+
40465 {4.49972773, 1.8523339}, //
+
40466 {4.50048351, 1.85278893}, //
+
40467 {4.50123882, 1.85332656}, //
+
40468 {4.50199461, 1.85394692}, //
+
40469 {4.50274992, 1.85465002}, //
+
40470 {4.50546789, 1.85239387}, //
+
40471 {4.50759935, 1.8501364}, //
+
40472 {4.50914431, 1.84787774}, //
+
40473 {4.51010323, 1.84561789}, //
+
40474 {4.51047516, 1.84335685}, //
+
40475 {4.51026106, 1.84109449}, //
+
40476 {4.50946045, 1.83883083}, //
+
40477 {4.50807333, 1.83656609}, //
+
40478 {4.50610018, 1.83430004}, //
+
40479 {4.50376034, 1.83204448}, //
+
40480 {4.50125313, 1.82978892}, //
+
40481 {4.49857759, 1.82753336}, //
+
40482 {4.49573469, 1.82527781}, //
+
40483 {4.49272346, 1.82302225}, //
+
40484 {4.48954439, 1.82076669}, //
+
40485 {4.48619747, 1.81851113}, //
+
40486 {4.4826827, 1.81625557}, //
+
40487 {4.47900009, 1.81400001}, //
+
40488 {4.47678566, 1.81253088}, //
+
40489 {4.4746542, 1.81114566}, //
+
40490 {4.47260571, 1.80984449}, //
+
40491 {4.47063971, 1.80862713}, //
+
40492 {4.4687562, 1.80749381}, //
+
40493 {4.46695566, 1.80644441}, //
+
40494 {4.46523762, 1.80547905}, //
+
40495 {4.46360254, 1.8045975}, //
+
40496 {4.46204996, 1.80379999}, //
+
40497 {4.45790625, 1.8023833}, //
+
40498 {4.45300817, 1.80113328}, //
+
40499 {4.44735575, 1.80005002}, //
+
40500 {4.44094896, 1.7991333}, //
+
40501 {4.43378782, 1.79838336}, //
+
40502 {4.42587233, 1.79779994}, //
+
40503 {4.41720247, 1.79738331}, //
+
40504 {4.40777826, 1.79713333}, //
+
40505 {4.39760017, 1.79705}, //
+
40506 {4.38695049, 1.79715431}, //
+
40507 {4.37609148, 1.79746723}, //
+
40508 {4.36502218, 1.79798889}, //
+
40509 {4.35374308, 1.79871917}, //
+
40510 {4.34225416, 1.79965806}, //
+
40511 {4.33055544, 1.80080557}, //
+
40512 {4.31864691, 1.80216169}, //
+
40513 {4.30652857, 1.80372655}, //
+
40514 {4.29419994, 1.80550003}, //
+
40515 {4.28200722, 1.80745125}, //
+
40516 {4.27027416, 1.80952716}, //
+
40517 {4.25899982, 1.81172776}, //
+
40518 {4.24818516, 1.81405306}, //
+
40519 {4.23782969, 1.81650305}, //
+
40520 {4.22793341, 1.81907773}, //
+
40521 {4.21849632, 1.82177711}, //
+
40522 {4.20951843, 1.82460129}, //
+
40523 {4.20100021, 1.82755005}, //
+
40524 {4.19250202, 1.83094013}, //
+
40525 {4.18358517, 1.83357716}, //
+
40526 {4.17425013, 1.83546114}, //
+
40527 {4.16449642, 1.83659196}, //
+
40528 {4.15432405, 1.83696973}, //
+
40529 {4.1437335, 1.83659446}, //
+
40530 {4.13272429, 1.83546603}, //
+
40531 {4.12129641, 1.83358455}, //
+
40532 {4.10944986, 1.83095002}, //
+
40533 {4.09747791, 1.82789624}, //
+
40534 {4.08567238, 1.82475746}, //
+
40535 {4.07403326, 1.82153332}, //
+
40536 {4.06256104, 1.81822407}, //
+
40537 {4.0512557, 1.81482959}, //
+
40538 {4.04011679, 1.81134999}, //
+
40539 {4.02914429, 1.80778515}, //
+
40540 {4.01833868, 1.8041352}, //
+
40541 {4.00769997, 1.80040002}, //
+
40542 {3.99816179, 1.7975142}, //
+
40543 {3.98912477, 1.79487896}, //
+
40544 {3.98058891, 1.79249442}, //
+
40545 {3.97255421, 1.79036045}, //
+
40546 {3.9650209, 1.78847718}, //
+
40547 {3.95798898, 1.78684449}, //
+
40548 {3.95145798, 1.78546238}, //
+
40549 {3.94542837, 1.78433084}, //
+
40550 {3.93989992, 1.78345001}, //
+
40551 {3.93768573, 1.78274691}, //
+
40552 {3.93555427, 1.78212655}, //
+
40553 {3.93350554, 1.78158891}, //
+
40554 {3.93153954, 1.78113401}, //
+
40555 {3.92965627, 1.78076172}, //
+
40556 {3.92785549, 1.78047228}, //
+
40557 {3.92613769, 1.78026545}, //
+
40558 {3.92450237, 1.78014135}, //
+
40559 {3.92295003, 1.78009999}, //
+
40560 {3.92148089, 1.78007901}, //
+
40561 {3.92009568, 1.78001606}, //
+
40562 {3.91879439, 1.77991116}, //
+
40563 {3.91757727, 1.77976418}, //
+
40564 {3.91644382, 1.77957535}, //
+
40565 {3.91539454, 1.77934444}, //
+
40566 {3.91442895, 1.77907157}, //
+
40567 {3.91354752, 1.77875674}, //
+
40568 {3.91275001, 1.77839994}, //
+
40569 {3.91202593, 1.77806425}, //
+
40570 {3.91134262, 1.77781236}, //
+
40571 {3.91070008, 1.7776444}, //
+
40572 {3.91009808, 1.77756047}, //
+
40573 });
+
40574 polys.push_back({
+
40575 {3.90251613, 1.76989996}, //
+
40576 {3.90241122, 1.76989996}, //
+
40577 {3.90050125, 1.76989996}, //
+
40578 {3.89957786, 1.76989996}, //
+
40579 {3.8990531, 1.76989996}, //
+
40580 {3.89580011, 1.76989996}, //
+
40581 {3.89497089, 1.76989996}, //
+
40582 {3.89280558, 1.76989996}, //
+
40583 {3.89146924, 1.76989996}, //
+
40584 {3.88225007, 1.76989996}, //
+
40585 {3.87683654, 1.76989996}, //
+
40586 {3.87112904, 1.76989996}, //
+
40587 {3.8651278, 1.76989996}, //
+
40588 {3.8588326, 1.76989996}, //
+
40589 {3.82294989, 1.76989996}, //
+
40590 {3.81518507, 1.76989996}, //
+
40591 {3.80053329, 1.76989996}, //
+
40592 {3.79364634, 1.76989996}, //
+
40593 {3.76360011, 1.76989996}, //
+
40594 {3.76065135, 1.76989996}, //
+
40595 {3.75512767, 1.76989996}, //
+
40596 {3.75255299, 1.76989996}, //
+
40597 {3.74154997, 1.76989996}, //
+
40598 {3.73960853, 1.76996291}, //
+
40599 {3.73754001, 1.77015185}, //
+
40600 {3.73534441, 1.77046669}, //
+
40601 {3.7330215, 1.7709074}, //
+
40602 {3.73057151, 1.77147412}, //
+
40603 {3.72799444, 1.77216661}, //
+
40604 {3.72529006, 1.77298522}, //
+
40605 {3.7224586, 1.7739296}, //
+
40606 {3.71950006, 1.77499998}, //
+
40607 {3.71644688, 1.77619565}, //
+
40608 {3.71330976, 1.77751601}, //
+
40609 {3.71008897, 1.77896106}, //
+
40610 {3.70678401, 1.78053081}, //
+
40611 {3.70339513, 1.78222525}, //
+
40612 {3.69992232, 1.78404438}, //
+
40613 {3.69636536, 1.78598833}, //
+
40614 {3.6927247, 1.78805673}, //
+
40615 {3.68899989, 1.79024994}, //
+
40616 {3.67940998, 1.7946049}, //
+
40617 {3.67023945, 1.79862535}, //
+
40618 {3.66148877, 1.80231106}, //
+
40619 {3.65315795, 1.80566239}, //
+
40620 {3.64524698, 1.80867898}, //
+
40621 {3.63775563, 1.81136107}, //
+
40622 {3.6306839, 1.81370866}, //
+
40623 {3.62403202, 1.81572163}, //
+
40624 {3.6178, 1.81739998}, //
+
40625 {3.61628962, 1.81814504}, //
+
40626 {3.61478019, 1.81889141}, //
+
40627 {3.61327219, 1.81963885}, //
+
40628 {3.61176538, 1.8203876}, //
+
40629 {3.61025977, 1.82113767}, //
+
40630 {3.60875559, 1.82188892}, //
+
40631 {3.60725236, 1.82264137}, //
+
40632 {3.60575056, 1.82339501}, //
+
40633 {3.60424995, 1.82414997}, //
+
40634 {3.60202527, 1.82494688}, //
+
40635 {3.59988451, 1.82582653}, //
+
40636 {3.59782767, 1.8267889}, //
+
40637 {3.595855, 1.82783401}, //
+
40638 {3.59396601, 1.82896173}, //
+
40639 {3.59216118, 1.83017218}, //
+
40640 {3.59044003, 1.83146548}, //
+
40641 {3.58880305, 1.8328414}, //
+
40642 {3.58724999, 1.83430004}, //
+
40643 {3.58577037, 1.83579016}, //
+
40644 {3.58433151, 1.83723831}, //
+
40645 {3.58293343, 1.83864439}, //
+
40646 {3.58157587, 1.84000862}, //
+
40647 {3.58025932, 1.84133089}, //
+
40648 {3.57898331, 1.84261107}, //
+
40649 {3.57774806, 1.84384942}, //
+
40650 {3.57655382, 1.84504569}, //
+
40651 {3.57540011, 1.84619999}, //
+
40652 {3.57434011, 1.84727037}, //
+
40653 {3.57059932, 1.85104811}, //
+
40654 {3.57034993, 1.8513}, //
+
40655 {3.57130432, 1.85134137}, //
+
40656 {3.57267833, 1.85146546}, //
+
40657 {3.57447219, 1.85167217}, //
+
40658 {3.57668591, 1.85196173}, //
+
40659 {3.57931924, 1.8523339}, //
+
40660 {3.58237219, 1.85278893}, //
+
40661 {3.58584499, 1.85332656}, //
+
40662 {3.58973765, 1.85394692}, //
+
40663 {3.59404993, 1.85465002}, //
+
40664 {3.59863448, 1.85538459}, //
+
40665 {3.60334373, 1.85607719}, //
+
40666 {3.60817766, 1.85672772}, //
+
40667 {3.61313653, 1.8573364}, //
+
40668 {3.61821985, 1.85790312}, //
+
40669 {3.62342787, 1.85842776}, //
+
40670 {3.62876058, 1.85891044}, //
+
40671 {3.63421798, 1.85935128}, //
+
40672 {3.63980007, 1.85975003}, //
+
40673 {3.64530921, 1.86006486}, //
+
40674 {3.65052581, 1.86025369}, //
+
40675 {3.65545011, 1.86031663}, //
+
40676 {3.66008139, 1.86025369}, //
+
40677 {3.66442037, 1.86006486}, //
+
40678 {3.66846657, 1.85975003}, //
+
40679 {3.67222047, 1.85930932}, //
+
40680 {3.67568159, 1.85874259}, //
+
40681 {3.67884994, 1.85804999}, //
+
40682 {3.68428469, 1.85721111}, //
+
40683 {3.69005489, 1.85620558}, //
+
40684 {3.69616103, 1.85503328}, //
+
40685 {3.7026031, 1.85369444}, //
+
40686 {3.70938087, 1.85218894}, //
+
40687 {3.71649456, 1.85051668}, //
+
40688 {3.72394371, 1.84867775}, //
+
40689 {3.73172903, 1.84667218}, //
+
40690 {3.73985004, 1.84449995}, //
+
40691 {3.74437213, 1.84298956}, //
+
40692 {3.74889445, 1.84148026}, //
+
40693 {3.75341678, 1.83997226}, //
+
40694 {3.75793886, 1.83846545}, //
+
40695 {3.76246119, 1.83695984}, //
+
40696 {3.76698327, 1.83545554}, //
+
40697 {3.77150559, 1.83395243}, //
+
40698 {3.77602768, 1.83245063}, //
+
40699 {3.78055, 1.83095002}, //
+
40700 {3.78595304, 1.83015251}, //
+
40701 {3.7916069, 1.82927096}, //
+
40702 {3.7975111, 1.8283056}, //
+
40703 {3.80366611, 1.8272562}, //
+
40704 {3.81007171, 1.82612288}, //
+
40705 {3.81672788, 1.82490551}, //
+
40706 {3.82363462, 1.82360435}, //
+
40707 {3.83079195, 1.82221913}, //
+
40708 {3.83820009, 1.82075}, //
+
40709 {3.84265924, 1.82072902}, //
+
40710 {3.84699249, 1.82066607}, //
+
40711 {3.8512001, 1.82056117}, //
+
40712 {3.85528159, 1.82041419}, //
+
40713 {3.85923696, 1.82022536}, //
+
40714 {3.86306667, 1.81999445}, //
+
40715 {3.86677027, 1.81972158}, //
+
40716 {3.87034822, 1.81940675}, //
+
40717 {3.87380004, 1.81904995}, //
+
40718 {3.87700057, 1.81866169}, //
+
40719 {3.87982464, 1.81823027}, //
+
40720 {3.88227224, 1.81775558}, //
+
40721 {3.88434315, 1.81723762}, //
+
40722 {3.88603759, 1.8166765}, //
+
40723 {3.88735557, 1.81607223}, //
+
40724 {3.88829684, 1.81542468}, //
+
40725 {3.88886166, 1.81473398}, //
+
40726 {3.88905001, 1.81400001}, //
+
40727 {3.88909197, 1.8132025}, //
+
40728 {3.88921785, 1.81232095}, //
+
40729 {3.88942766, 1.81135559}, //
+
40730 {3.88972163, 1.81030619}, //
+
40731 {3.89009929, 1.80917287}, //
+
40732 {3.8905611, 1.8079555}, //
+
40733 {3.89110684, 1.80665433}, //
+
40734 {3.89173651, 1.80526912}, //
+
40735 {3.89245009, 1.80379999}, //
+
40736 {3.89247108, 1.80229938}, //
+
40737 {3.89253402, 1.80079758}, //
+
40738 {3.89263892, 1.79929447}, //
+
40739 {3.89278579, 1.79779017}, //
+
40740 {3.89297462, 1.79628456}, //
+
40741 {3.89320564, 1.79477775}, //
+
40742 {3.89347839, 1.79326975}, //
+
40743 {3.89379311, 1.79176044}, //
+
40744 {3.89415002, 1.79024994}, //
+
40745 {3.89450669, 1.78878152}, //
+
40746 {3.89482164, 1.7873981}, //
+
40747 {3.89509439, 1.78610003}, //
+
40748 {3.89532542, 1.78488708}, //
+
40749 {3.89551425, 1.78375924}, //
+
40750 {3.89566112, 1.78271663}, //
+
40751 {3.89576602, 1.78175926}, //
+
40752 {3.89582896, 1.78088701}, //
+
40753 {3.89584994, 1.78009999}, //
+
40754 {3.89587045, 1.77936542}, //
+
40755 {3.89593148, 1.77867281}, //
+
40756 {3.89603329, 1.77802217}, //
+
40757 {3.89617586, 1.77741361}, //
+
40758 {3.89635921, 1.77684689}, //
+
40759 {3.89658332, 1.77632225}, //
+
40760 {3.8968482, 1.77583945}, //
+
40761 {3.89715362, 1.77539873}, //
+
40762 {3.89750004, 1.77499998}, //
+
40763 {3.89844441, 1.7740556}, //
+
40764 {3.89991355, 1.77258646}, //
+
40765 {3.90108895, 1.77141106}, //
+
40766 {3.90222216, 1.77027774}, //
+
40767 {3.9024322, 1.77006793}, //
+
40768 {3.90255809, 1.76994193}, //
+
40769 {3.90260005, 1.76989996}, //
+
40770 });
+
40771 polys.push_back({
+
40772 {5.94869328, 1.72471237}, //
+
40773 {5.94525576, 1.72544444}, //
+
40774 {5.9421525, 1.72671974}, //
+
40775 {5.93938398, 1.72853827}, //
+
40776 {5.93695021, 1.73090005}, //
+
40777 {5.93477774, 1.73364818}, //
+
40778 {5.93277216, 1.73660374}, //
+
40779 {5.93093348, 1.73976672}, //
+
40780 {5.92926121, 1.743137}, //
+
40781 {5.92775536, 1.74671483}, //
+
40782 {5.92641687, 1.75049996}, //
+
40783 {5.92524433, 1.75449264}, //
+
40784 {5.92423868, 1.75869262}, //
+
40785 {5.92339993, 1.76310003}, //
+
40786 {5.92265511, 1.76753891}, //
+
40787 {5.92190886, 1.77181113}, //
+
40788 {5.92116117, 1.7759167}, //
+
40789 {5.92041254, 1.77985561}, //
+
40790 {5.91966248, 1.78362775}, //
+
40791 {5.91891098, 1.78723335}, //
+
40792 {5.91815853, 1.79067218}, //
+
40793 {5.91740513, 1.79394448}, //
+
40794 {5.91664982, 1.79705}, //
+
40795 {5.91673326, 1.80069077}, //
+
40796 {5.91698313, 1.80407965}, //
+
40797 {5.91739988, 1.80721664}, //
+
40798 {5.91798353, 1.81010187}, //
+
40799 {5.91873312, 1.8127352}, //
+
40800 {5.91965008, 1.81511664}, //
+
40801 {5.92073345, 1.81724632}, //
+
40802 {5.92198324, 1.8191241}, //
+
40803 {5.92339993, 1.82075}, //
+
40804 {5.92499447, 1.82221913}, //
+
40805 {5.92675543, 1.82360435}, //
+
40806 {5.92868328, 1.82490551}, //
+
40807 {5.93077755, 1.82612288}, //
+
40808 {5.93303871, 1.8272562}, //
+
40809 {5.93546677, 1.8283056}, //
+
40810 {5.93806124, 1.82927096}, //
+
40811 {5.94082212, 1.83015251}, //
+
40812 {5.9437499, 1.83095002}, //
+
40813 {5.94379187, 1.83103335}, //
+
40814 {5.94391775, 1.83128333}, //
+
40815 {5.94412756, 1.83169997}, //
+
40816 {5.94442177, 1.83228338}, //
+
40817 {5.94479942, 1.83303332}, //
+
40818 {5.945261, 1.83395004}, //
+
40819 {5.94580698, 1.8350333}, //
+
40820 {5.94643641, 1.83628333}, //
+
40821 {5.94715023, 1.83770001}, //
+
40822 {5.94941616, 1.83774197}, //
+
40823 {5.95168066, 1.83786786}, //
+
40824 {5.95394421, 1.83807778}, //
+
40825 {5.9562068, 1.83837163}, //
+
40826 {5.95846796, 1.83874941}, //
+
40827 {5.96072769, 1.83921111}, //
+
40828 {5.96298647, 1.83975685}, //
+
40829 {5.96524382, 1.84038639}, //
+
40830 {5.96750021, 1.84109998}, //
+
40831 {5.97269392, 1.84265244}, //
+
40832 {5.97771978, 1.84428763}, //
+
40833 {5.9825778, 1.84600556}, //
+
40834 {5.98726797, 1.84780622}, //
+
40835 {5.99179029, 1.84968948}, //
+
40836 {5.99614429, 1.8516556}, //
+
40837 {6.00033092, 1.85370433}, //
+
40838 {6.00434923, 1.8558358}, //
+
40839 {6.00820017, 1.85804999}, //
+
40840 {6.00913906, 1.85786116}, //
+
40841 {6.0098691, 1.85771418}, //
+
40842 {6.0166502, 1.85634995}, //
+
40843 {6.01858044, 1.85595119}, //
+
40844 {6.02059317, 1.85551047}, //
+
40845 {6.02268887, 1.85502779}, //
+
40846 {6.02486706, 1.85450304}, //
+
40847 {6.02712822, 1.85393643}, //
+
40848 {6.02947235, 1.85332775}, //
+
40849 {6.03189898, 1.85267711}, //
+
40850 {6.03440809, 1.85198462}, //
+
40851 {6.03700018, 1.85125005}, //
+
40852 {6.03962278, 1.85048389}, //
+
40853 {6.04220247, 1.8496747}, //
+
40854 {6.04473877, 1.84882224}, //
+
40855 {6.04723215, 1.8479265}, //
+
40856 {6.04968214, 1.84698761}, //
+
40857 {6.05208874, 1.84600556}, //
+
40858 {6.05445242, 1.84498024}, //
+
40859 {6.05677271, 1.84391177}, //
+
40860 {6.05905008, 1.84280002}, //
+
40861 {6.06122208, 1.84160435}, //
+
40862 {6.06322765, 1.84028399}, //
+
40863 {6.06506681, 1.83883893}, //
+
40864 {6.06673908, 1.83726919}, //
+
40865 {6.06824446, 1.83557475}, //
+
40866 {6.06958342, 1.83375561}, //
+
40867 {6.07075548, 1.83181179}, //
+
40868 {6.07176113, 1.82974327}, //
+
40869 {6.07259989, 1.82755005}, //
+
40870 {6.07333469, 1.82677341}, //
+
40871 {6.07402706, 1.82595491}, //
+
40872 {6.07467794, 1.82509446}, //
+
40873 {6.07528639, 1.82419193}, //
+
40874 {6.07585287, 1.82324755}, //
+
40875 {6.07637787, 1.8222611}, //
+
40876 {6.07686043, 1.82123268}, //
+
40877 {6.07730103, 1.8201623}, //
+
40878 {6.07770014, 1.81904995}, //
+
40879 {6.07805681, 1.81792712}, //
+
40880 {6.07837152, 1.8168031}, //
+
40881 {6.07864428, 1.81567776}, //
+
40882 {6.07887554, 1.81455123}, //
+
40883 {6.07906437, 1.81342351}, //
+
40884 {6.07921124, 1.81229448}, //
+
40885 {6.07931614, 1.81116414}, //
+
40886 {6.07937908, 1.81003273}, //
+
40887 {6.07940006, 1.8089}, //
+
40888 {6.07940006, 1.80671728}, //
+
40889 {6.07940006, 1.80568886}, //
+
40890 {6.07940006, 1.79969692}, //
+
40891 {6.07940006, 1.79907656}, //
+
40892 {6.07940006, 1.79853892}, //
+
40893 {6.07940006, 1.79771173}, //
+
40894 {6.07940006, 1.79742217}, //
+
40895 {6.07940006, 1.79721546}, //
+
40896 {6.07940006, 1.79705}, //
+
40897 {6.07990456, 1.79547596}, //
+
40898 {6.07990599, 1.79377592}, //
+
40899 {6.07940578, 1.79194999}, //
+
40900 {6.07840252, 1.78999817}, //
+
40901 {6.07689714, 1.78792036}, //
+
40902 {6.07488871, 1.78571665}, //
+
40903 {6.07237816, 1.78338706}, //
+
40904 {6.0693655, 1.78093147}, //
+
40905 {6.06584978, 1.77835}, //
+
40906 {6.06193638, 1.77569568}, //
+
40907 {6.05772924, 1.77299941}, //
+
40908 {6.0532279, 1.77026117}, //
+
40909 {6.04843283, 1.76748085}, //
+
40910 {6.04334402, 1.76465869}, //
+
40911 {6.03796101, 1.76179445}, //
+
40912 {6.03228474, 1.75888824}, //
+
40913 {6.02631426, 1.75594008}, //
+
40914 {6.02005005, 1.75294995}, //
+
40915 {6.01375437, 1.74998021}, //
+
40916 {6.00766706, 1.7470932}, //
+
40917 {6.00178909, 1.74428892}, //
+
40918 {5.99611902, 1.74156725}, //
+
40919 {5.99065781, 1.73892844}, //
+
40920 {5.98540545, 1.73637223}, //
+
40921 {5.98036194, 1.73389876}, //
+
40922 {5.97552633, 1.73150802}, //
+
40923 {5.97090006, 1.72920001}, //
+
40924 {5.96578932, 1.72721601}, //
+
40925 {5.96101379, 1.72577536}, //
+
40926 {5.95657206, 1.72487783}, //
+
40927 {5.95246553, 1.72452343}, //
+
40928 });
+
40929 polys.push_back({
+
40930 {0.288577765, 1.63032782}, //
+
40931 {0.288053095, 1.63089013}, //
+
40932 {0.287486434, 1.63182902}, //
+
40933 {0.286877781, 1.6331445}, //
+
40934 {0.286227167, 1.63483644}, //
+
40935 {0.285534561, 1.63690495}, //
+
40936 {0.284799993, 1.63935006}, //
+
40937 {0.28404507, 1.64209878}, //
+
40938 {0.28329137, 1.64505613}, //
+
40939 {0.282538891, 1.64822221}, //
+
40940 {0.281787664, 1.6515969}, //
+
40941 {0.281037658, 1.65518022}, //
+
40942 {0.280288875, 1.65897226}, //
+
40943 {0.279541343, 1.66297281}, //
+
40944 {0.278795063, 1.66718209}, //
+
40945 {0.278050005, 1.67159998}, //
+
40946 {0.277252465, 1.67844069}, //
+
40947 {0.276371002, 1.6854074}, //
+
40948 {0.275405556, 1.6925}, //
+
40949 {0.274356186, 1.69971848}, //
+
40950 {0.273222834, 1.70706296}, //
+
40951 {0.272005558, 1.71453333}, //
+
40952 {0.270704329, 1.72212958}, //
+
40953 {0.269319147, 1.72985184}, //
+
40954 {0.267850012, 1.73769999}, //
+
40955 {0.266391367, 1.74559009}, //
+
40956 {0.265015423, 1.75343823}, //
+
40957 {0.263722211, 1.76124442}, //
+
40958 {0.26251173, 1.76900864}, //
+
40959 {0.261383951, 1.7767309}, //
+
40960 {0.260338902, 1.78441107}, //
+
40961 {0.259376556, 1.79204941}, //
+
40962 {0.25849691, 1.79964566}, //
+
40963 {0.257699996, 1.80719995}, //
+
40964 {0.257720977, 1.80726302}, //
+
40965 {0.257783949, 1.80745184}, //
+
40966 {0.257888883, 1.80776668}, //
+
40967 {0.25940001, 1.81229997}, //
+
40968 {0.259777158, 1.81345367}, //
+
40969 {0.260153085, 1.81464815}, //
+
40970 {0.26052779, 1.81588328}, //
+
40971 {0.260901242, 1.8171593}, //
+
40972 {0.261273444, 1.81847596}, //
+
40973 {0.261644453, 1.81983328}, //
+
40974 {0.26201421, 1.82123148}, //
+
40975 {0.262382716, 1.82267034}, //
+
40976 {0.26275, 1.82414997}, //
+
40977 {0.263106793, 1.82568145}, //
+
40978 {0.263421595, 1.8272537}, //
+
40979 {0.263694435, 1.82886672}, //
+
40980 {0.263925314, 1.83052039}, //
+
40981 {0.264114201, 1.83221483}, //
+
40982 {0.264261097, 1.83395004}, //
+
40983 {0.26436606, 1.8357259}, //
+
40984 {0.264429003, 1.83754253}, //
+
40985 {0.264450014, 1.83940005}, //
+
40986 {0.264533937, 1.84126723}, //
+
40987 {0.264785796, 1.84309137}, //
+
40988 {0.265205562, 1.84487224}, //
+
40989 {0.265793204, 1.84660983}, //
+
40990 {0.266548753, 1.84830427}, //
+
40991 {0.267472208, 1.84995556}, //
+
40992 {0.268563569, 1.85156357}, //
+
40993 {0.269822836, 1.85312843}, //
+
40994 {0.27125001, 1.85465002}, //
+
40995 {0.271291971, 1.8558259}, //
+
40996 {0.271417916, 1.85633147}, //
+
40997 {0.271627784, 1.85616672}, //
+
40998 {0.271921605, 1.85533154}, //
+
40999 {0.272299379, 1.85382593}, //
+
41000 {0.272761106, 1.85165}, //
+
41001 {0.273306787, 1.84880376}, //
+
41002 {0.273936421, 1.84528708}, //
+
41003 {0.274650007, 1.84109998}, //
+
41004 {0.27540493, 1.83645248}, //
+
41005 {0.276158631, 1.83155429}, //
+
41006 {0.27691111, 1.82640553}, //
+
41007 {0.277662337, 1.82100618}, //
+
41008 {0.278412342, 1.81535614}, //
+
41009 {0.279161125, 1.80945551}, //
+
41010 {0.279908627, 1.80330431}, //
+
41011 {0.280654937, 1.79690242}, //
+
41012 {0.281399995, 1.79024994}, //
+
41013 {0.281441987, 1.78648329}, //
+
41014 {0.281567901, 1.78271663}, //
+
41015 {0.281777769, 1.77894998}, //
+
41016 {0.28207159, 1.77518332}, //
+
41017 {0.282449394, 1.77141666}, //
+
41018 {0.282911122, 1.76765001}, //
+
41019 {0.283456802, 1.76388335}, //
+
41020 {0.284086406, 1.7601167}, //
+
41021 {0.284799993, 1.75635004}, //
+
41022 {0.286898762, 1.74642467}, //
+
41023 {0.288661718, 1.73624873}, //
+
41024 {0.290088892, 1.72582221}, //
+
41025 {0.291180253, 1.71514511}, //
+
41026 {0.291935802, 1.70421731}, //
+
41027 {0.292355567, 1.69303894}, //
+
41028 {0.29243952, 1.68160987}, //
+
41029 {0.292187661, 1.66993022}, //
+
41030 {0.291599989, 1.65799999}, //
+
41031 {0.291579008, 1.6529839}, //
+
41032 {0.291516036, 1.64846909}, //
+
41033 {0.291411102, 1.64445555}, //
+
41034 {0.291264206, 1.64094317}, //
+
41035 {0.291075319, 1.63793206}, //
+
41036 {0.29084444, 1.63542223}, //
+
41037 {0.2905716, 1.63341355}, //
+
41038 {0.290256798, 1.63190615}, //
+
41039 {0.289900005, 1.63090003}, //
+
41040 {0.28950122, 1.63033271}, //
+
41041 {0.289060503, 1.63014197}, //
+
41042 });
+
41043 polys.push_back({
+
41044 {5.1876502, 1.8513}, //
+
41045 {5.1876502, 1.8513}, //
+
41046 {5.1876502, 1.8513}, //
+
41047 });
+
41048 polys.push_back({
+
41049 {5.78532362, 0.676970363}, //
+
41050 {5.78364468, 0.677366674}, //
+
41051 {5.78179741, 0.67797035}, //
+
41052 {5.77978277, 0.678781509}, //
+
41053 {5.77759981, 0.679799974}, //
+
41054 {5.77536488, 0.680995703}, //
+
41055 {5.77317047, 0.682316065}, //
+
41056 {5.7710166, 0.68376112}, //
+
41057 {5.76890373, 0.685330868}, //
+
41058 {5.7668314, 0.687025309}, //
+
41059 {5.76480007, 0.688844442}, //
+
41060 {5.76280928, 0.690788269}, //
+
41061 {5.76085949, 0.692856789}, //
+
41062 {5.75895023, 0.695050001}, //
+
41063 {5.75705147, 0.697274685}, //
+
41064 {5.75511026, 0.699415445}, //
+
41065 {5.75312757, 0.701472223}, //
+
41066 {5.75110292, 0.703445077}, //
+
41067 {5.74903631, 0.705333948}, //
+
41068 {5.74692774, 0.707138896}, //
+
41069 {5.7447772, 0.708859861}, //
+
41070 {5.74258471, 0.710496902}, //
+
41071 {5.74034977, 0.712050021}, //
+
41072 {5.74030781, 0.713508666}, //
+
41073 {5.74018192, 0.714884579}, //
+
41074 {5.73997211, 0.716177762}, //
+
41075 {5.73967838, 0.717388272}, //
+
41076 {5.73930073, 0.718516052}, //
+
41077 {5.73883867, 0.7195611}, //
+
41078 {5.73829317, 0.720523477}, //
+
41079 {5.73766375, 0.721403062}, //
+
41080 {5.73694992, 0.722199976}, //
+
41081 {5.73686409, 0.740866065}, //
+
41082 {5.73811769, 0.759197533}, //
+
41083 {5.74071121, 0.77719444}, //
+
41084 {5.74464369, 0.794856787}, //
+
41085 {5.74991608, 0.812184572}, //
+
41086 {5.7565279, 0.829177797}, //
+
41087 {5.76447916, 0.845836401}, //
+
41088 {5.77376986, 0.862160504}, //
+
41089 {5.78439999, 0.878149986}, //
+
41090 {5.79528952, 0.896700621}, //
+
41091 {5.8068471, 0.914663553}, //
+
41092 {5.81907225, 0.932038903}, //
+
41093 {5.83196545, 0.948826551}, //
+
41094 {5.8455267, 0.965026557}, //
+
41095 {5.85975552, 0.980638862}, //
+
41096 {5.87465239, 0.995663583}, //
+
41097 {5.8902173, 1.0101006}, //
+
41098 {5.90644979, 1.02394998}, //
+
41099 {5.9125247, 1.02931106}, //
+
41100 {5.9186821, 1.03483891}, //
+
41101 {5.92492199, 1.0405333}, //
+
41102 {5.93124485, 1.04639447}, //
+
41103 {5.93765068, 1.05242217}, //
+
41104 {5.944139, 1.05861664}, //
+
41105 {5.95070982, 1.06497777}, //
+
41106 {5.95736361, 1.07150555}, //
+
41107 {5.96409988, 1.07819998}, //
+
41108 {5.96923065, 1.08286858}, //
+
41109 {5.97406769, 1.08782959}, //
+
41110 {5.97861099, 1.09308338}, //
+
41111 {5.98286057, 1.09862959}, //
+
41112 {5.98681593, 1.10446846}, //
+
41113 {5.99047756, 1.11059999}, //
+
41114 {5.99384546, 1.11702406}, //
+
41115 {5.99691963, 1.12374079}, //
+
41116 {5.99970007, 1.13074994}, //
+
41117 {6.00202942, 1.13789511}, //
+
41118 {6.00372982, 1.14499688}, //
+
41119 {6.00479984, 1.1520555}, //
+
41120 {6.00524092, 1.15907097}, //
+
41121 {6.00505209, 1.16604316}, //
+
41122 {6.00423336, 1.1729722}, //
+
41123 {6.00278521, 1.17985797}, //
+
41124 {6.00070763, 1.18670058}, //
+
41125 {5.99800014, 1.19350004}, //
+
41126 {5.99649954, 1.19810557}, //
+
41127 {5.9949975, 1.20287776}, //
+
41128 {5.99349451, 1.20781672}, //
+
41129 {5.99199009, 1.21292222}, //
+
41130 {5.99048471, 1.21819448}, //
+
41131 {5.98897791, 1.22363329}, //
+
41132 {5.98746967, 1.22923887}, //
+
41133 {5.98596048, 1.2350111}, //
+
41134 {5.98444986, 1.24094999}, //
+
41135 {5.98367357, 1.24540925}, //
+
41136 {5.98285484, 1.24974263}, //
+
41137 {5.98199463, 1.25395}, //
+
41138 {5.98109198, 1.25803149}, //
+
41139 {5.98014736, 1.26198709}, //
+
41140 {5.97916126, 1.26581669}, //
+
41141 {5.97813272, 1.2695204}, //
+
41142 {5.97706223, 1.27309811}, //
+
41143 {5.97594976, 1.27655005}, //
+
41144 {5.97480631, 1.2798444}, //
+
41145 {5.97361898, 1.28292775}, //
+
41146 {5.97238874, 1.28579998}, //
+
41147 {5.97111559, 1.28846109}, //
+
41148 {5.96979856, 1.29091108}, //
+
41149 {5.9684391, 1.29314995}, //
+
41150 {5.96703577, 1.29517782}, //
+
41151 {5.96558952, 1.29699445}, //
+
41152 {5.96409988, 1.29859996}, //
+
41153 {5.96338654, 1.29411972}, //
+
41154 {5.96275663, 1.28972352}, //
+
41155 {5.96221113, 1.28541112}, //
+
41156 {5.96174955, 1.28118277}, //
+
41157 {5.96137142, 1.27703822}, //
+
41158 {5.96107769, 1.27297783}, //
+
41159 {5.96086788, 1.26900125}, //
+
41160 {5.960742, 1.26510859}, //
+
41161 {5.96070004, 1.26129997}, //
+
41162 {5.95806742, 1.24259198}, //
+
41163 {5.95468044, 1.22413456}, //
+
41164 {5.95053911, 1.20592773}, //
+
41165 {5.94564342, 1.18797159}, //
+
41166 {5.93999338, 1.17026603}, //
+
41167 {5.93358898, 1.15281117}, //
+
41168 {5.92643023, 1.13560677}, //
+
41169 {5.91851711, 1.11865306}, //
+
41170 {5.90985012, 1.10195005}, //
+
41171 {5.89511967, 1.08370245}, //
+
41172 {5.87955141, 1.06662655}, //
+
41173 {5.8631444, 1.05072224}, //
+
41174 {5.84589958, 1.03598952}, //
+
41175 {5.82781601, 1.02242839}, //
+
41176 {5.80889463, 1.01003885}, //
+
41177 {5.7891345, 0.998820961}, //
+
41178 {5.76853657, 0.988774717}, //
+
41179 {5.74709988, 0.979900002}, //
+
41180 {5.73971319, 0.977466047}, //
+
41181 {5.73261833, 0.97469753}, //
+
41182 {5.72581673, 0.971594453}, //
+
41183 {5.71930742, 0.968156815}, //
+
41184 {5.7130909, 0.964384556}, //
+
41185 {5.70716667, 0.960277796}, //
+
41186 {5.70153522, 0.955836415}, //
+
41187 {5.69619608, 0.951060474}, //
+
41188 {5.69115019, 0.945949972}, //
+
41189 {5.68640661, 0.94055742}, //
+
41190 {5.68195486, 0.93491298}, //
+
41191 {5.67779446, 0.92901665}, //
+
41192 {5.6739254, 0.92286849}, //
+
41193 {5.67034769, 0.916468501}, //
+
41194 {5.66706133, 0.909816682}, //
+
41195 {5.66406584, 0.902912974}, //
+
41196 {5.66136217, 0.895757437}, //
+
41197 {5.65894985, 0.88835001}, //
+
41198 {5.65817356, 0.888517261}, //
+
41199 {5.65735483, 0.889019132}, //
+
41200 {5.65649462, 0.889855564}, //
+
41201 {5.65559196, 0.891026556}, //
+
41202 {5.65464735, 0.89253211}, //
+
41203 {5.65366125, 0.894372225}, //
+
41204 {5.65263271, 0.8965469}, //
+
41205 {5.65156221, 0.899056196}, //
+
41206 {5.65045023, 0.901899993}, //
+
41207 {5.64934826, 0.904953063}, //
+
41208 {5.64828682, 0.908090115}, //
+
41209 {5.64726686, 0.91131109}, //
+
41210 {5.64628696, 0.914616048}, //
+
41211 {5.64534807, 0.91800493}, //
+
41212 {5.64445019, 0.921477795}, //
+
41213 {5.64359236, 0.925034583}, //
+
41214 {5.64277601, 0.928675294}, //
+
41215 {5.6420002, 0.932399988}, //
+
41216 {5.64124441, 0.936156154}, //
+
41217 {5.6404891, 0.939869165}, //
+
41218 {5.63973331, 0.943538904}, //
+
41219 {5.638978, 0.94716543}, //
+
41220 {5.63822222, 0.950748742}, //
+
41221 {5.63746643, 0.9542889}, //
+
41222 {5.63671112, 0.957785785}, //
+
41223 {5.63595533, 0.961239517}, //
+
41224 {5.63520002, 0.964649975}, //
+
41225 {5.63449669, 0.967850626}, //
+
41226 {5.63333893, 0.973122239}, //
+
41227 {5.63288403, 0.975193202}, //
+
41228 {5.63251162, 0.976887643}, //
+
41229 {5.63234329, 0.977654815}, //
+
41230 {5.63208103, 0.980749249}, //
+
41231 {5.63265753, 0.982869148}, //
+
41232 {5.6335907, 0.985754311}, //
+
41233 {5.63465023, 0.988555551}, //
+
41234 {5.63583517, 0.991272867}, //
+
41235 {5.63714647, 0.9939062}, //
+
41236 {5.63858318, 0.99645555}, //
+
41237 {5.64014626, 0.998920977}, //
+
41238 {5.64183521, 1.00130248}, //
+
41239 {5.64365005, 1.0036}, //
+
41240 {5.64560127, 1.00578272}, //
+
41241 {5.64767694, 1.00779748}, //
+
41242 {5.64987755, 1.00964439}, //
+
41243 {5.65220308, 1.01132345}, //
+
41244 {5.65465307, 1.01283455}, //
+
41245 {5.65722799, 1.0141778}, //
+
41246 {5.65992737, 1.01535308}, //
+
41247 {5.6627512, 1.01636052}, //
+
41248 {5.66569996, 1.01719999}, //
+
41249 {5.66874266, 1.01795495}, //
+
41250 {5.67182589, 1.01870859}, //
+
41251 {5.67495012, 1.01946115}, //
+
41252 {5.67811489, 1.02021229}, //
+
41253 {5.68132019, 1.02096236}, //
+
41254 {5.6845665, 1.02171111}, //
+
41255 {5.68785381, 1.02245867}, //
+
41256 {5.69118166, 1.02320492}, //
+
41257 {5.69455004, 1.02394998}, //
+
41258 {5.697855, 1.02466357}, //
+
41259 {5.70099211, 1.02529323}, //
+
41260 {5.7039609, 1.02583885}, //
+
41261 {5.70676231, 1.02630067}, //
+
41262 {5.70939589, 1.02667844}, //
+
41263 {5.71186113, 1.02697217}, //
+
41264 {5.71415854, 1.0271821}, //
+
41265 {5.71628809, 1.02730799}, //
+
41266 {5.7182498, 1.02734995}, //
+
41267 {5.7267499, 1.02734995}, //
+
41268 {5.73419952, 1.02894449}, //
+
41269 {5.74148083, 1.03070557}, //
+
41270 {5.74859428, 1.0326333}, //
+
41271 {5.75553989, 1.03472781}, //
+
41272 {5.76231813, 1.03698885}, //
+
41273 {5.76892757, 1.03941667}, //
+
41274 {5.77536964, 1.04201114}, //
+
41275 {5.78164387, 1.04477227}, //
+
41276 {5.78774977, 1.04770005}, //
+
41277 {5.79374123, 1.05092096}, //
+
41278 {5.79964876, 1.05456173}, //
+
41279 {5.80547237, 1.05862224}, //
+
41280 {5.81121159, 1.06310248}, //
+
41281 {5.81686735, 1.06800246}, //
+
41282 {5.82243872, 1.07332218}, //
+
41283 {5.82792664, 1.07906175}, //
+
41284 {5.83333015, 1.08522093}, //
+
41285 {5.83865023, 1.09179997}, //
+
41286 {5.84591103, 1.09569192}, //
+
41287 {5.85262775, 1.09983456}, //
+
41288 {5.85879993, 1.10422778}, //
+
41289 {5.86442757, 1.10887158}, //
+
41290 {5.86951113, 1.11376607}, //
+
41291 {5.87405014, 1.11891115}, //
+
41292 {5.87804461, 1.1243068}, //
+
41293 {5.88149452, 1.12995315}, //
+
41294 {5.88439989, 1.13584995}, //
+
41295 {5.88693953, 1.1419667}, //
+
41296 {5.88926935, 1.14824998}, //
+
41297 {5.89138889, 1.15470004}, //
+
41298 {5.89329863, 1.16131663}, //
+
41299 {5.89499855, 1.1681}, //
+
41300 {5.89648867, 1.17505002}, //
+
41301 {5.89776897, 1.1821667}, //
+
41302 {5.89883947, 1.18945003}, //
+
41303 {5.89970016, 1.19690001}, //
+
41304 {5.900455, 1.19923949}, //
+
41305 {5.90120888, 1.20174694}, //
+
41306 {5.90196133, 1.20442224}, //
+
41307 {5.90271235, 1.20726538}, //
+
41308 {5.90346241, 1.21027648}, //
+
41309 {5.90421104, 1.21345556}, //
+
41310 {5.90495872, 1.21680248}, //
+
41311 {5.90570498, 1.22031724}, //
+
41312 {5.90644979, 1.22399998}, //
+
41313 {5.91427851, 1.24141669}, //
+
41314 {5.92118597, 1.25899994}, //
+
41315 {5.92717218, 1.27674997}, //
+
41316 {5.93223763, 1.29466665}, //
+
41317 {5.93638229, 1.31274998}, //
+
41318 {5.93960571, 1.33099997}, //
+
41319 {5.94190788, 1.34941661}, //
+
41320 {5.94328928, 1.36800003}, //
+
41321 {5.9437499, 1.38674998}, //
+
41322 {5.9514513, 1.40395737}, //
+
41323 {5.95948839, 1.42091298}, //
+
41324 {5.96786118, 1.43761671}, //
+
41325 {5.97656965, 1.45406854}, //
+
41326 {5.9856143, 1.47026849}, //
+
41327 {5.99499464, 1.48621666}, //
+
41328 {6.00471067, 1.50191295}, //
+
41329 {6.0147624, 1.51735735}, //
+
41330 {6.02514982, 1.53254998}, //
+
41331 {6.03094196, 1.53793216}, //
+
41332 {6.03627348, 1.54352283}, //
+
41333 {6.04114437, 1.54932225}, //
+
41334 {6.04555511, 1.55533028}, //
+
41335 {6.04950476, 1.56154692}, //
+
41336 {6.05299425, 1.56797218}, //
+
41337 {6.0560236, 1.57460618}, //
+
41338 {6.05859184, 1.58144879}, //
+
41339 {6.06069994, 1.58850002}, //
+
41340 {6.06227446, 1.59563518}, //
+
41341 {6.06322098, 1.60272968}, //
+
41342 {6.06353903, 1.60978329}, //
+
41343 {6.06322861, 1.61679626}, //
+
41344 {6.06228971, 1.62376857}, //
+
41345 {6.06072235, 1.63069999}, //
+
41346 {6.05852652, 1.63759077}, //
+
41347 {6.05570269, 1.64444077}, //
+
41348 {6.05224991, 1.65125}, //
+
41349 {6.05382347, 1.65489078}, //
+
41350 {6.05552149, 1.65827966}, //
+
41351 {6.05734444, 1.66141665}, //
+
41352 {6.05929184, 1.66430187}, //
+
41353 {6.06136417, 1.66693521}, //
+
41354 {6.06356096, 1.66931665}, //
+
41355 {6.06588268, 1.67144632}, //
+
41356 {6.06832886, 1.67332411}, //
+
41357 {6.07089996, 1.67495}, //
+
41358 {6.07356501, 1.67641914}, //
+
41359 {6.07627058, 1.67780435}, //
+
41360 {6.07901669, 1.67910552}, //
+
41361 {6.0818038, 1.68032289}, //
+
41362 {6.08463144, 1.68145621}, //
+
41363 {6.0875001, 1.68250561}, //
+
41364 {6.09040928, 1.68347096}, //
+
41365 {6.09335947, 1.68435252}, //
+
41366 {6.09635019, 1.68515003}, //
+
41367 {6.10009575, 1.68667161}, //
+
41368 {6.10379934, 1.68823647}, //
+
41369 {6.10746098, 1.68984449}, //
+
41370 {6.11108065, 1.69149566}, //
+
41371 {6.11465883, 1.6931901}, //
+
41372 {6.11819458, 1.69492781}, //
+
41373 {6.12168837, 1.69670868}, //
+
41374 {6.12514019, 1.6985327}, //
+
41375 {6.12855005, 1.70039999}, //
+
41376 {6.13170862, 1.7024765}, //
+
41377 {6.13440657, 1.7049284}, //
+
41378 {6.13664436, 1.70775557}, //
+
41379 {6.13842154, 1.710958}, //
+
41380 {6.13973808, 1.71453583}, //
+
41381 {6.14059448, 1.71848893}, //
+
41382 {6.14099026, 1.7228173}, //
+
41383 {6.14092541, 1.72752094}, //
+
41384 {6.14039993, 1.73259997}, //
+
41385 {6.14285421, 1.73848641}, //
+
41386 {6.14568377, 1.74407899}, //
+
41387 {6.14888906, 1.74937773}, //
+
41388 {6.15246916, 1.75438273}, //
+
41389 {6.15642452, 1.75909388}, //
+
41390 {6.16075563, 1.76351106}, //
+
41391 {6.16546154, 1.76763451}, //
+
41392 {6.17054319, 1.77146423}, //
+
41393 {6.17600012, 1.77499998}, //
+
41394 {6.18167639, 1.77836788}, //
+
41395 {6.1873951, 1.78169382}, //
+
41396 {6.19315577, 1.78497779}, //
+
41397 {6.19895792, 1.78821981}, //
+
41398 {6.20480251, 1.79141974}, //
+
41399 {6.21068907, 1.79457784}, //
+
41400 {6.21661711, 1.79769385}, //
+
41401 {6.22258759, 1.8007679}, //
+
41402 {6.22860003, 1.80379999}, //
+
41403 {6.23081398, 1.80455554}, //
+
41404 {6.23294544, 1.80531108}, //
+
41405 {6.23499441, 1.80606663}, //
+
41406 {6.23696041, 1.80682218}, //
+
41407 {6.23884392, 1.80757773}, //
+
41408 {6.24064445, 1.80833328}, //
+
41409 {6.2423625, 1.80908895}, //
+
41410 {6.24399757, 1.80984449}, //
+
41411 {6.24555016, 1.81060004}, //
+
41412 {6.24468946, 1.80765128}, //
+
41413 {6.24361897, 1.80482721}, //
+
41414 {6.24233866, 1.80212772}, //
+
41415 {6.24084854, 1.79955304}, //
+
41416 {6.23914862, 1.79710305}, //
+
41417 {6.23723888, 1.79477775}, //
+
41418 {6.23511934, 1.79257715}, //
+
41419 {6.23278952, 1.79050124}, //
+
41420 {6.23024988, 1.78855002}, //
+
41421 {6.22751188, 1.78669262}, //
+
41422 {6.2245636, 1.78487587}, //
+
41423 {6.22140551, 1.78310001}, //
+
41424 {6.21803761, 1.7813648}, //
+
41425 {6.2144599, 1.77967036}, //
+
41426 {6.21067238, 1.77801669}, //
+
41427 {6.20667458, 1.77640367}, //
+
41428 {6.20246744, 1.77483153}, //
+
41429 {6.19805002, 1.77330005}, //
+
41430 {6.19284582, 1.77022588}, //
+
41431 {6.18776608, 1.76702595}, //
+
41432 {6.18281126, 1.76370001}, //
+
41433 {6.1779809, 1.76024818}, //
+
41434 {6.17327547, 1.75667036}, //
+
41435 {6.1686945, 1.75296664}, //
+
41436 {6.16423845, 1.74913704}, //
+
41437 {6.15990686, 1.74518144}, //
+
41438 {6.15570021, 1.74109995}, //
+
41439 {6.1518693, 1.73680866}, //
+
41440 {6.14866543, 1.73222351}, //
+
41441 {6.14608908, 1.72734439}, //
+
41442 {6.14413929, 1.72217166}, //
+
41443 {6.1428175, 1.71670496}, //
+
41444 {6.14212227, 1.71094441}, //
+
41445 {6.14205456, 1.70489013}, //
+
41446 {6.14261341, 1.698542}, //
+
41447 {6.14379978, 1.69190001}, //
+
41448 {6.14242458, 1.68730438}, //
+
41449 {6.14129877, 1.68253946}, //
+
41450 {6.14042234, 1.67760551}, //
+
41451 {6.13979483, 1.67250252}, //
+
41452 {6.13941717, 1.66723025}, //
+
41453 {6.1392889, 1.66178894}, //
+
41454 {6.13941002, 1.65617836}, //
+
41455 {6.13978004, 1.65039873}, //
+
41456 {6.14039993, 1.64444995}, //
+
41457 {6.14035797, 1.63923514}, //
+
41458 {6.14023209, 1.63414633}, //
+
41459 {6.14002228, 1.62918329}, //
+
41460 {6.13972855, 1.62434626}, //
+
41461 {6.13935041, 1.61963522}, //
+
41462 {6.13888884, 1.61504996}, //
+
41463 {6.13834333, 1.6105907}, //
+
41464 {6.13771343, 1.60625744}, //
+
41465 {6.13700008, 1.60204995}, //
+
41466 {6.13600349, 1.5979265}, //
+
41467 {6.13450384, 1.59384501}, //
+
41468 {6.13250017, 1.5898056}, //
+
41469 {6.12999249, 1.58580804}, //
+
41470 {6.12698126, 1.58185244}, //
+
41471 {6.12346649, 1.57793891}, //
+
41472 {6.11944818, 1.57406723}, //
+
41473 {6.11492586, 1.57023764}, //
+
41474 {6.1099, 1.56645}, //
+
41475 {6.09943867, 1.55870736}, //
+
41476 {6.08914423, 1.55054629}, //
+
41477 {6.07901669, 1.54196668}, //
+
41478 {6.06905556, 1.53296852}, //
+
41479 {6.05926132, 1.52355182}, //
+
41480 {6.0496335, 1.5137167}, //
+
41481 {6.0401721, 1.50346291}, //
+
41482 {6.03087759, 1.4927907}, //
+
41483 {6.02174997, 1.48169994}, //
+
41484 {6.01316595, 1.47019076}, //
+
41485 {6.00550318, 1.45826292}, //
+
41486 {5.99876118, 1.44591665}, //
+
41487 {5.99293995, 1.43315184}, //
+
41488 {5.98803997, 1.41996849}, //
+
41489 {5.98406124, 1.40636671}, //
+
41490 {5.98100328, 1.39234626}, //
+
41491 {5.9788661, 1.3779074}, //
+
41492 {5.97765017, 1.36304998}, //
+
41493 {5.97673559, 1.34818208}, //
+
41494 {5.97699308, 1.33373392}, //
+
41495 {5.97842216, 1.31970561}, //
+
41496 {5.98102283, 1.30609691}, //
+
41497 {5.98479509, 1.29290807}, //
+
41498 {5.98973894, 1.28013885}, //
+
41499 {5.99585438, 1.26778948}, //
+
41500 {6.0031414, 1.25585985}, //
+
41501 {6.01160002, 1.24434996}, //
+
41502 {6.01581907, 1.22848582}, //
+
41503 {6.01945448, 1.21253765}, //
+
41504 {6.02250576, 1.19650555}, //
+
41505 {6.02497292, 1.18038952}, //
+
41506 {6.02685595, 1.16418946}, //
+
41507 {6.02815533, 1.14790559}, //
+
41508 {6.02887106, 1.13153768}, //
+
41509 {6.02900267, 1.11508584}, //
+
41510 {6.02855015, 1.09854996}, //
+
41511 {6.02310514, 1.08594882}, //
+
41512 {6.0173254, 1.0737673}, //
+
41513 {6.01121092, 1.06200552}, //
+
41514 {6.00476217, 1.05066359}, //
+
41515 {5.99797916, 1.0397414}, //
+
41516 {5.99086094, 1.02923894}, //
+
41517 {5.98340845, 1.01915622}, //
+
41518 {5.9756217, 1.00949323}, //
+
41519 {5.96750021, 1.00024998}, //
+
41520 {5.96520185, 0.997186422}, //
+
41521 {5.96281862, 0.994040132}, //
+
41522 {5.96035004, 0.99081111}, //
+
41523 {5.9577961, 0.987499356}, //
+
41524 {5.95515728, 0.984104931}, //
+
41525 {5.95243311, 0.980627775}, //
+
41526 {5.94962406, 0.977067888}, //
+
41527 {5.94672966, 0.973425329}, //
+
41528 {5.9437499, 0.969699979}, //
+
41529 {5.93693018, 0.961411715}, //
+
41530 {5.93002653, 0.953124702}, //
+
41531 {5.92303896, 0.944838881}, //
+
41532 {5.91596746, 0.936554313}, //
+
41533 {5.90881157, 0.928270996}, //
+
41534 {5.90157223, 0.919988871}, //
+
41535 {5.89424896, 0.911707997}, //
+
41536 {5.8868413, 0.903428376}, //
+
41537 {5.87935019, 0.895150006}, //
+
41538 {5.87118626, 0.887564182}, //
+
41539 {5.86327362, 0.879895687}, //
+
41540 {5.85561132, 0.872144461}, //
+
41541 {5.84819937, 0.864310503}, //
+
41542 {5.84103823, 0.856393814}, //
+
41543 {5.8341279, 0.848394454}, //
+
41544 {5.82746792, 0.840312362}, //
+
41545 {5.82105875, 0.832147539}, //
+
41546 {5.81489992, 0.823899984}, //
+
41547 {5.8059063, 0.810973465}, //
+
41548 {5.79850245, 0.797793806}, //
+
41549 {5.79268885, 0.784361124}, //
+
41550 {5.7884655, 0.770675302}, //
+
41551 {5.78583193, 0.756736398}, //
+
41552 {5.78478909, 0.742544472}, //
+
41553 {5.78533602, 0.728099406}, //
+
41554 {5.78747272, 0.713401258}, //
+
41555 {5.79120016, 0.698450029}, //
+
41556 {5.79187155, 0.694850624}, //
+
41557 {5.79237509, 0.691585779}, //
+
41558 {5.79271126, 0.688655555}, //
+
41559 {5.7928791, 0.686059892}, //
+
41560 {5.7928791, 0.68379879}, //
+
41561 {5.79271126, 0.681872249}, //
+
41562 {5.79237509, 0.680280268}, //
+
41563 {5.79187155, 0.679022849}, //
+
41564 {5.79120016, 0.67809999}, //
+
41565 {5.79036045, 0.67745924}, //
+
41566 {5.78935289, 0.677025914}, //
+
41567 {5.78817797, 0.676800013}, //
+
41568 {5.78683472, 0.676781476}, //
+
41569 });
+
41570 polys.push_back({
+
41571 {6.13678265, 1.22335303}, //
+
41572 {6.13471031, 1.22391975}, //
+
41573 {6.13251114, 1.22477782}, //
+
41574 {6.13018465, 1.22592711}, //
+
41575 {6.12773085, 1.22736788}, //
+
41576 {6.1251502, 1.22909999}, //
+
41577 {6.1225791, 1.23096728}, //
+
41578 {6.12013292, 1.2327913}, //
+
41579 {6.1178112, 1.23457217}, //
+
41580 {6.11561441, 1.23630989}, //
+
41581 {6.11354208, 1.23800433}, //
+
41582 {6.11159468, 1.23965561}, //
+
41583 {6.10977173, 1.24126363}, //
+
41584 {6.10807323, 1.24282837}, //
+
41585 {6.10650015, 1.24434996}, //
+
41586 {6.10579681, 1.24602842}, //
+
41587 {6.10517645, 1.24804139}, //
+
41588 {6.10463905, 1.25038886}, //
+
41589 {6.10418415, 1.25307095}, //
+
41590 {6.10381174, 1.25608766}, //
+
41591 {6.1035223, 1.25943887}, //
+
41592 {6.10331535, 1.2631247}, //
+
41593 {6.10319138, 1.26714504}, //
+
41594 {6.10314989, 1.27149999}, //
+
41595 {6.10319138, 1.27606356}, //
+
41596 {6.10331535, 1.28070986}, //
+
41597 {6.1035223, 1.2854389}, //
+
41598 {6.10381174, 1.29025066}, //
+
41599 {6.10418415, 1.29514503}, //
+
41600 {6.10463905, 1.30012226}, //
+
41601 {6.10517645, 1.3051821}, //
+
41602 {6.10579681, 1.31032467}, //
+
41603 {6.10650015, 1.31554997}, //
+
41604 {6.10725546, 1.32070184}, //
+
41605 {6.10801125, 1.32560182}, //
+
41606 {6.10876656, 1.33025002}, //
+
41607 {6.10952234, 1.33464634}, //
+
41608 {6.11027765, 1.33879077}, //
+
41609 {6.11103344, 1.34268332}, //
+
41610 {6.11178875, 1.34632409}, //
+
41611 {6.11254454, 1.34971297}, //
+
41612 {6.11329985, 1.35284996}, //
+
41613 {6.11474752, 1.35513699}, //
+
41614 {6.11606789, 1.35746479}, //
+
41615 {6.11726093, 1.35983336}, //
+
41616 {6.11832714, 1.36224258}, //
+
41617 {6.11926603, 1.36469257}, //
+
41618 {6.12007761, 1.36718333}, //
+
41619 {6.12076235, 1.36971486}, //
+
41620 {6.12131977, 1.37228703}, //
+
41621 {6.12174988, 1.37489998}, //
+
41622 {6.12219095, 1.37763822}, //
+
41623 {6.12275743, 1.38058639}, //
+
41624 {6.1234498, 1.38374448}, //
+
41625 {6.12426853, 1.38711238}, //
+
41626 {6.12521315, 1.39069009}, //
+
41627 {6.12628317, 1.39447773}, //
+
41628 {6.12747955, 1.39847529}, //
+
41629 {6.12880182, 1.40268266}, //
+
41630 {6.13024998, 1.40709996}, //
+
41631 {6.13029194, 1.41178954}, //
+
41632 {6.13041782, 1.41681361}, //
+
41633 {6.13062763, 1.42217219}, //
+
41634 {6.13092184, 1.42786539}, //
+
41635 {6.1312995, 1.4338932}, //
+
41636 {6.13176107, 1.44025552}, //
+
41637 {6.13230658, 1.44695246}, //
+
41638 {6.13293648, 1.4539839}, //
+
41639 {6.13364983, 1.46134996}, //
+
41640 {6.13529682, 1.47260797}, //
+
41641 {6.13723755, 1.48378205}, //
+
41642 {6.13947201, 1.49487221}, //
+
41643 {6.14200068, 1.50587845}, //
+
41644 {6.14482307, 1.51680064}, //
+
41645 {6.14793873, 1.52763891}, //
+
41646 {6.15134859, 1.53839326}, //
+
41647 {6.15505266, 1.54906356}, //
+
41648 {6.15904999, 1.55964994}, //
+
41649 {6.16304827, 1.56978643}, //
+
41650 {6.16675377, 1.57908452}, //
+
41651 {6.17016649, 1.58754444}, //
+
41652 {6.17328691, 1.59516609}, //
+
41653 {6.17611504, 1.60194933}, //
+
41654 {6.1786499, 1.60789442}, //
+
41655 {6.18089247, 1.61300123}, //
+
41656 {6.18284273, 1.61726975}, //
+
41657 {6.18450022, 1.6207}, //
+
41658 {6.18521357, 1.62218952}, //
+
41659 {6.18584299, 1.62363577}, //
+
41660 {6.18638897, 1.62503886}, //
+
41661 {6.18685055, 1.6263988}, //
+
41662 {6.1872282, 1.62771547}, //
+
41663 {6.18752241, 1.62898886}, //
+
41664 {6.18773222, 1.6302191}, //
+
41665 {6.1878581, 1.63140619}, //
+
41666 {6.18790007, 1.63255}, //
+
41667 {6.1878581, 1.63362038}, //
+
41668 {6.18773222, 1.63456476}, //
+
41669 {6.18752241, 1.63538337}, //
+
41670 {6.1872282, 1.63607597}, //
+
41671 {6.18685055, 1.63664258}, //
+
41672 {6.18638897, 1.63708329}, //
+
41673 {6.18584299, 1.63739812}, //
+
41674 {6.18521357, 1.63758707}, //
+
41675 {6.18450022, 1.63765001}, //
+
41676 {6.18374443, 1.63844752}, //
+
41677 {6.18298912, 1.63932896}, //
+
41678 {6.18223333, 1.64029443}, //
+
41679 {6.18147755, 1.64134383}, //
+
41680 {6.18072224, 1.64247715}, //
+
41681 {6.17996645, 1.6436944}, //
+
41682 {6.17921114, 1.64499569}, //
+
41683 {6.17845535, 1.6463809}, //
+
41684 {6.17770004, 1.64785004}, //
+
41685 {6.17699671, 1.64875185}, //
+
41686 {6.17637634, 1.64994633}, //
+
41687 {6.17583895, 1.65143335}, //
+
41688 {6.17538404, 1.6532129}, //
+
41689 {6.17501163, 1.65528524}, //
+
41690 {6.17472219, 1.65764999}, //
+
41691 {6.17451525, 1.66030741}, //
+
41692 {6.17439127, 1.66325736}, //
+
41693 {6.17434978, 1.66649997}, //
+
41694 {6.17439127, 1.66988885}, //
+
41695 {6.17451525, 1.67327774}, //
+
41696 {6.17472219, 1.67666662}, //
+
41697 {6.17501163, 1.6800555}, //
+
41698 {6.17538404, 1.6834445}, //
+
41699 {6.17583895, 1.68683338}, //
+
41700 {6.17637634, 1.69022226}, //
+
41701 {6.17699671, 1.69361115}, //
+
41702 {6.17770004, 1.69700003}, //
+
41703 {6.17845535, 1.70036852}, //
+
41704 {6.17921114, 1.70369625}, //
+
41705 {6.17996645, 1.70698333}, //
+
41706 {6.18072224, 1.71022964}, //
+
41707 {6.18147755, 1.71343517}, //
+
41708 {6.18223333, 1.71659994}, //
+
41709 {6.18298912, 1.71972406}, //
+
41710 {6.18374443, 1.72280741}, //
+
41711 {6.18450022, 1.72584999}, //
+
41712 {6.18538094, 1.72812653}, //
+
41713 {6.18651247, 1.73044503}, //
+
41714 {6.18789434, 1.73280561}, //
+
41715 {6.18952703, 1.73520803}, //
+
41716 {6.19141054, 1.73765242}, //
+
41717 {6.19354439, 1.74013889}, //
+
41718 {6.19592905, 1.74266732}, //
+
41719 {6.19856405, 1.74523771}, //
+
41720 {6.20144987, 1.74784994}, //
+
41721 {6.2044611, 1.7504518}, //
+
41722 {6.20747232, 1.75296855}, //
+
41723 {6.21048355, 1.75539994}, //
+
41724 {6.2134943, 1.75774634}, //
+
41725 {6.21650553, 1.76000738}, //
+
41726 {6.21951675, 1.76218331}, //
+
41727 {6.22252798, 1.76427412}, //
+
41728 {6.22553873, 1.76627958}, //
+
41729 {6.22854996, 1.76820004}, //
+
41730 {6.23148775, 1.77002597}, //
+
41731 {6.23425627, 1.77172589}, //
+
41732 {6.23685551, 1.77330005}, //
+
41733 {6.23928595, 1.77474821}, //
+
41734 {6.24154711, 1.77607036}, //
+
41735 {6.24363899, 1.77726662}, //
+
41736 {6.2455616, 1.778337}, //
+
41737 {6.24731541, 1.7792815}, //
+
41738 {6.24889994, 1.78009999}, //
+
41739 {6.24969769, 1.78009999}, //
+
41740 {6.25154448, 1.78009999}, //
+
41741 {6.25259399, 1.78009999}, //
+
41742 {6.25909996, 1.78009999}, //
+
41743 {6.26278257, 1.78160059}, //
+
41744 {6.26629734, 1.78310251}, //
+
41745 {6.26964426, 1.7846055}, //
+
41746 {6.27282333, 1.78610992}, //
+
41747 {6.27583456, 1.78761542}, //
+
41748 {6.27867794, 1.78912222}, //
+
41749 {6.281353, 1.79063022}, //
+
41750 {6.28386068, 1.79213953}, //
+
41751 {6.28620005, 1.79365003}, //
+
41752 {6.27963161, 1.78770065}, //
+
41753 {6.27348137, 1.78191912}, //
+
41754 {6.26774979, 1.77630556}, //
+
41755 {6.26243687, 1.77085984}, //
+
41756 {6.25754261, 1.76558208}, //
+
41757 {6.25306654, 1.76047218}, //
+
41758 {6.24900913, 1.75553024}, //
+
41759 {6.24537039, 1.75075614}, //
+
41760 {6.24214983, 1.74615002}, //
+
41761 {6.23922205, 1.74168026}, //
+
41762 {6.23646116, 1.73729324}, //
+
41763 {6.23386669, 1.73298883}, //
+
41764 {6.23143911, 1.72876728}, //
+
41765 {6.22917795, 1.72462845}, //
+
41766 {6.22708321, 1.72057223}, //
+
41767 {6.22515535, 1.71659875}, //
+
41768 {6.22339439, 1.712708}, //
+
41769 {6.22179985, 1.70889997}, //
+
41770 {6.22039366, 1.70437777}, //
+
41771 {6.21919775, 1.69985557}, //
+
41772 {6.21821117, 1.69533336}, //
+
41773 {6.21743441, 1.69081116}, //
+
41774 {6.21686792, 1.68628883}, //
+
41775 {6.21651125, 1.68176663}, //
+
41776 {6.21636438, 1.67724442}, //
+
41777 {6.21642733, 1.67272222}, //
+
41778 {6.21670008, 1.66820002}, //
+
41779 {6.21709871, 1.66367781}, //
+
41780 {6.21753931, 1.65915561}, //
+
41781 {6.21802235, 1.65463328}, //
+
41782 {6.21854687, 1.65011108}, //
+
41783 {6.21911335, 1.64558887}, //
+
41784 {6.21972227, 1.64106667}, //
+
41785 {6.22037268, 1.63654447}, //
+
41786 {6.22106552, 1.63202226}, //
+
41787 {6.22179985, 1.62750006}, //
+
41788 {6.22179985, 1.62733209}, //
+
41789 {6.22179985, 1.62712216}, //
+
41790 {6.22179985, 1.62409997}, //
+
41791 {6.22232485, 1.6201241}, //
+
41792 {6.22238779, 1.61572957}, //
+
41793 {6.22198868, 1.61091661}, //
+
41794 {6.22112846, 1.60568523}, //
+
41795 {6.21980619, 1.60003519}, //
+
41796 {6.21802235, 1.59396672}, //
+
41797 {6.21577644, 1.58747959}, //
+
41798 {6.21306896, 1.58057404}, //
+
41799 {6.2098999, 1.57325006}, //
+
41800 {6.206532, 1.56584203}, //
+
41801 {6.20320606, 1.55868459}, //
+
41802 {6.19992208, 1.55177772}, //
+
41803 {6.19668007, 1.54512155}, //
+
41804 {6.19348001, 1.53871608}, //
+
41805 {6.1903224, 1.53256106}, //
+
41806 {6.18720627, 1.52665675}, //
+
41807 {6.1841321, 1.52100313}, //
+
41808 {6.18109989, 1.51559997}, //
+
41809 {6.17968321, 1.51342773}, //
+
41810 {6.17843342, 1.51142228}, //
+
41811 {6.17735004, 1.50958335}, //
+
41812 {6.17643356, 1.50791109}, //
+
41813 {6.1756835, 1.50640559}, //
+
41814 {6.17509985, 1.50506663}, //
+
41815 {6.17468357, 1.50389445}, //
+
41816 {6.17443323, 1.50288892}, //
+
41817 {6.17434978, 1.50205004}, //
+
41818 {6.17229319, 1.49597526}, //
+
41819 {6.1706562, 1.48981786}, //
+
41820 {6.16943884, 1.48357773}, //
+
41821 {6.16864157, 1.47725499}, //
+
41822 {6.16826344, 1.47084939}, //
+
41823 {6.1683054, 1.46436107}, //
+
41824 {6.16876745, 1.45779014}, //
+
41825 {6.16964865, 1.45113647}, //
+
41826 {6.17094994, 1.44439995}, //
+
41827 {6.17166376, 1.43983638}, //
+
41828 {6.17229319, 1.43519008}, //
+
41829 {6.17283869, 1.43046117}, //
+
41830 {6.17330074, 1.4256494}, //
+
41831 {6.1736784, 1.42075491}, //
+
41832 {6.17397213, 1.4157778}, //
+
41833 {6.17418194, 1.41071784}, //
+
41834 {6.17430782, 1.40557528}, //
+
41835 {6.17434978, 1.40034997}, //
+
41836 {6.17351055, 1.3959111}, //
+
41837 {6.17250299, 1.39163888}, //
+
41838 {6.17132759, 1.38753331}, //
+
41839 {6.16998434, 1.38359439}, //
+
41840 {6.16847324, 1.37982225}, //
+
41841 {6.1667943, 1.37621665}, //
+
41842 {6.16494751, 1.37277782}, //
+
41843 {6.16293287, 1.36950552}, //
+
41844 {6.16074991, 1.3664}, //
+
41845 {6.16002607, 1.3648994}, //
+
41846 {6.15934277, 1.36339748}, //
+
41847 {6.15869999, 1.36189449}, //
+
41848 {6.15809822, 1.36039007}, //
+
41849 {6.15753698, 1.35888457}, //
+
41850 {6.15701675, 1.35737777}, //
+
41851 {6.15653706, 1.35586977}, //
+
41852 {6.15609837, 1.35436046}, //
+
41853 {6.15570021, 1.35284996}, //
+
41854 {6.15534306, 1.35130739}, //
+
41855 {6.15502834, 1.34967959}, //
+
41856 {6.15475559, 1.34796667}, //
+
41857 {6.1545248, 1.34616852}, //
+
41858 {6.15433598, 1.34428513}, //
+
41859 {6.15418911, 1.34231663}, //
+
41860 {6.15408373, 1.34026301}, //
+
41861 {6.15402079, 1.33812404}, //
+
41862 {6.15399981, 1.33589995}, //
+
41863 {6.15469265, 1.33274198}, //
+
41864 {6.15525913, 1.32929015}, //
+
41865 {6.15570021, 1.32554448}, //
+
41866 {6.15601492, 1.32150495}, //
+
41867 {6.15620375, 1.31717157}, //
+
41868 {6.15626669, 1.31254447}, //
+
41869 {6.15620375, 1.30762351}, //
+
41870 {6.15601492, 1.3024087}, //
+
41871 {6.15570021, 1.29690003}, //
+
41872 {6.15530109, 1.29129696}, //
+
41873 {6.1548605, 1.2857765}, //
+
41874 {6.15437794, 1.28033888}, //
+
41875 {6.15385294, 1.274984}, //
+
41876 {6.15328646, 1.26971173}, //
+
41877 {6.15267801, 1.26452219}, //
+
41878 {6.15202713, 1.25941539}, //
+
41879 {6.15133476, 1.25439131}, //
+
41880 {6.15059996, 1.24944997}, //
+
41881 {6.14984465, 1.2447803}, //
+
41882 {6.14908886, 1.24057102}, //
+
41883 {6.14833355, 1.23682225}, //
+
41884 {6.14757776, 1.23353398}, //
+
41885 {6.14682245, 1.23070621}, //
+
41886 {6.14606667, 1.22833884}, //
+
41887 {6.14531088, 1.22643209}, //
+
41888 {6.14455557, 1.22498584}, //
+
41889 {6.14379978, 1.22399998}, //
+
41890 {6.14223623, 1.22340119}, //
+
41891 {6.14054585, 1.22309387}, //
+
41892 {6.13872766, 1.22307777}, //
+
41893 });
+
41894 polys.push_back({
+
41895 {4.35661316, 1.6058315}, //
+
41896 {4.3487072, 1.60696483}, //
+
41897 {4.34038353, 1.60868335}, //
+
41898 {4.33164072, 1.61098707}, //
+
41899 {4.32247972, 1.61387599}, //
+
41900 {4.31290007, 1.61734998}, //
+
41901 {4.28807354, 1.62948084}, //
+
41902 {4.26483822, 1.64027345}, //
+
41903 {4.24319458, 1.64972782}, //
+
41904 {4.22314215, 1.65784383}, //
+
41905 {4.20468092, 1.66462159}, //
+
41906 {4.1878109, 1.67006111}, //
+
41907 {4.17253256, 1.67416239}, //
+
41908 {4.1588459, 1.6769253}, //
+
41909 {4.14674997, 1.67834997}, //
+
41910 {4.14377022, 1.67906356}, //
+
41911 {4.14087582, 1.67969322}, //
+
41912 {4.13806677, 1.68023884}, //
+
41913 {4.1353426, 1.68070066}, //
+
41914 {4.13270378, 1.68107843}, //
+
41915 {4.13014984, 1.68137217}, //
+
41916 {4.12768126, 1.68158209}, //
+
41917 {4.12529802, 1.68170798}, //
+
41918 {4.12300014, 1.68175006}, //
+
41919 {4.11328459, 1.68321848}, //
+
41920 {4.10373831, 1.6846019}, //
+
41921 {4.09436131, 1.68589997}, //
+
41922 {4.0851531, 1.68711293}, //
+
41923 {4.07611418, 1.68824077}, //
+
41924 {4.06724453, 1.68928337}, //
+
41925 {4.05854368, 1.69024074}, //
+
41926 {4.05001211, 1.691113}, //
+
41927 {4.04164982, 1.69190001}, //
+
41928 {4.04009676, 1.69187903}, //
+
41929 {4.03845978, 1.69181609}, //
+
41930 {4.03673887, 1.69171107}, //
+
41931 {4.03493404, 1.6915642}, //
+
41932 {4.03304529, 1.69137526}, //
+
41933 {4.03107214, 1.69114447}, //
+
41934 {4.02901554, 1.6908716}, //
+
41935 {4.02687454, 1.69055676}, //
+
41936 {4.0246501, 1.69019997}, //
+
41937 {4.02239466, 1.68981171}, //
+
41938 {4.02013874, 1.68938029}, //
+
41939 {4.0178833, 1.6889056}, //
+
41940 {4.01562786, 1.68838763}, //
+
41941 {4.01337242, 1.68782651}, //
+
41942 {4.0111165, 1.68722224}, //
+
41943 {4.00886106, 1.6865747}, //
+
41944 {4.00660563, 1.685884}, //
+
41945 {4.00435019, 1.68515003}, //
+
41946 {4.00214624, 1.68512905}, //
+
41947 {4.00006866, 1.6850661}, //
+
41948 {3.99811673, 1.68496108}, //
+
41949 {3.99629068, 1.68481421}, //
+
41950 {3.99459076, 1.68462527}, //
+
41951 {3.99301672, 1.68439448}, //
+
41952 {3.99156857, 1.68412161}, //
+
41953 {3.9902463, 1.68380678}, //
+
41954 {3.98904991, 1.68344998}, //
+
41955 {3.98796916, 1.68311417}, //
+
41956 {3.9869709, 1.6828624}, //
+
41957 {3.98605561, 1.68269444}, //
+
41958 {3.98522282, 1.68261051}, //
+
41959 {3.98447275, 1.68261051}, //
+
41960 {3.98380566, 1.68269444}, //
+
41961 {3.98322105, 1.6828624}, //
+
41962 {3.98271918, 1.68311417}, //
+
41963 {3.98230004, 1.68344998}, //
+
41964 {3.98198509, 1.68380678}, //
+
41965 {3.98179626, 1.68412161}, //
+
41966 {3.98173332, 1.68439448}, //
+
41967 {3.98179626, 1.68462527}, //
+
41968 {3.98198509, 1.68481421}, //
+
41969 {3.98230004, 1.68496108}, //
+
41970 {3.98274064, 1.6850661}, //
+
41971 {3.98330736, 1.68512905}, //
+
41972 {3.98399997, 1.68515003}, //
+
41973 {3.985605, 1.68596792}, //
+
41974 {3.98741984, 1.68691051}, //
+
41975 {3.98944449, 1.68797779}, //
+
41976 {3.99167895, 1.68916976}, //
+
41977 {3.99412346, 1.69048643}, //
+
41978 {3.99677777, 1.69192779}, //
+
41979 {3.9996419, 1.69349384}, //
+
41980 {4.00271606, 1.69518459}, //
+
41981 {4.00600004, 1.69700003}, //
+
41982 {4.00942039, 1.69884634}, //
+
41983 {4.01288128, 1.70060742}, //
+
41984 {4.01638317, 1.70228338}, //
+
41985 {4.01992607, 1.70387411}, //
+
41986 {4.02350903, 1.70537961}, //
+
41987 {4.02713346, 1.70679998}, //
+
41988 {4.03079796, 1.70813513}, //
+
41989 {4.03450394, 1.70938516}, //
+
41990 {4.03824997, 1.71054995}, //
+
41991 {4.04201651, 1.71166229}, //
+
41992 {4.04578352, 1.71273267}, //
+
41993 {4.04955006, 1.71376109}, //
+
41994 {4.05331659, 1.71474755}, //
+
41995 {4.05708313, 1.71569192}, //
+
41996 {4.06085014, 1.71659446}, //
+
41997 {4.06461668, 1.71745491}, //
+
41998 {4.06838322, 1.7182734}, //
+
41999 {4.07215023, 1.71905005}, //
+
42000 {4.07440615, 1.71905005}, //
+
42001 {4.07892227, 1.71905005}, //
+
42002 {4.08344316, 1.71905005}, //
+
42003 {4.08570576, 1.71905005}, //
+
42004 {4.0879693, 1.71905005}, //
+
42005 {4.09250021, 1.71905005}, //
+
42006 {4.09704256, 1.71976364}, //
+
42007 {4.10162592, 1.72039318}, //
+
42008 {4.10624981, 1.72093892}, //
+
42009 {4.11091471, 1.72140062}, //
+
42010 {4.11562014, 1.72177839}, //
+
42011 {4.12036657, 1.72207224}, //
+
42012 {4.12515354, 1.72228205}, //
+
42013 {4.12998152, 1.72240806}, //
+
42014 {4.13485003, 1.72245002}, //
+
42015 {4.13968706, 1.72240806}, //
+
42016 {4.14439821, 1.72228205}, //
+
42017 {4.14898348, 1.72207224}, //
+
42018 {4.15344238, 1.72177839}, //
+
42019 {4.15777588, 1.72140062}, //
+
42020 {4.16198349, 1.72093892}, //
+
42021 {4.16606474, 1.72039318}, //
+
42022 {4.17002058, 1.71976364}, //
+
42023 {4.17385006, 1.71905005}, //
+
42024 {4.17686176, 1.7182945}, //
+
42025 {4.1798749, 1.71753883}, //
+
42026 {4.18288898, 1.71678329}, //
+
42027 {4.1859045, 1.71602774}, //
+
42028 {4.18892097, 1.71527219}, //
+
42029 {4.19193888, 1.71451664}, //
+
42030 {4.19495821, 1.71376109}, //
+
42031 {4.1979785, 1.71300554}, //
+
42032 {4.20100021, 1.71224999}, //
+
42033 {4.20635128, 1.71083331}, //
+
42034 {4.21187162, 1.70958328}, //
+
42035 {4.21756124, 1.70850003}, //
+
42036 {4.22341967, 1.70758331}, //
+
42037 {4.22944736, 1.70683336}, //
+
42038 {4.23564434, 1.70624995}, //
+
42039 {4.24201059, 1.70583332}, //
+
42040 {4.24854565, 1.70558333}, //
+
42041 {4.25524998, 1.70550001}, //
+
42042 {4.25920486, 1.70629692}, //
+
42043 {4.26353645, 1.70717657}, //
+
42044 {4.26824427, 1.70813894}, //
+
42045 {4.27332878, 1.70918393}, //
+
42046 {4.27879, 1.71031177}, //
+
42047 {4.28462791, 1.71152222}, //
+
42048 {4.29084206, 1.7128154}, //
+
42049 {4.2974329, 1.71419132}, //
+
42050 {4.30439997, 1.71564996}, //
+
42051 {4.31149244, 1.71716046}, //
+
42052 {4.31845903, 1.71866977}, //
+
42053 {4.32530022, 1.72017777}, //
+
42054 {4.33201504, 1.72168458}, //
+
42055 {4.3386035, 1.72319007}, //
+
42056 {4.34506655, 1.72469449}, //
+
42057 {4.35140371, 1.72619748}, //
+
42058 {4.35761499, 1.7276994}, //
+
42059 {4.36369991, 1.72920001}, //
+
42060 {4.36960745, 1.73066914}, //
+
42061 {4.37526274, 1.73205435}, //
+
42062 {4.38066673, 1.73335552}, //
+
42063 {4.38581848, 1.73457289}, //
+
42064 {4.39071846, 1.73570621}, //
+
42065 {4.39536667, 1.73675561}, //
+
42066 {4.39976311, 1.73772097}, //
+
42067 {4.4039073, 1.73860252}, //
+
42068 {4.4078002, 1.73940003}, //
+
42069 {4.40941525, 1.74019694}, //
+
42070 {4.41123962, 1.74107659}, //
+
42071 {4.41327238, 1.74203885}, //
+
42072 {4.41551352, 1.74308395}, //
+
42073 {4.4179635, 1.74421167}, //
+
42074 {4.42062235, 1.74542224}, //
+
42075 {4.42348957, 1.74671543}, //
+
42076 {4.42656565, 1.74809134}, //
+
42077 {4.4298501, 1.74954998}, //
+
42078 {4.43323898, 1.75101912}, //
+
42079 {4.43662786, 1.75240433}, //
+
42080 {4.44001675, 1.7537055}, //
+
42081 {4.44340563, 1.75492287}, //
+
42082 {4.44679451, 1.75605619}, //
+
42083 {4.45018339, 1.75710559}, //
+
42084 {4.45357227, 1.75807095}, //
+
42085 {4.45696115, 1.7589525}, //
+
42086 {4.46035004, 1.75975001}, //
+
42087 {4.46370745, 1.76050496}, //
+
42088 {4.4669795, 1.7612586}, //
+
42089 {4.47016668, 1.76201117}, //
+
42090 {4.47326851, 1.76276231}, //
+
42091 {4.47628498, 1.76351237}, //
+
42092 {4.47921658, 1.76426113}, //
+
42093 {4.48206282, 1.76500869}, //
+
42094 {4.48482418, 1.76575494}, //
+
42095 {4.48750019, 1.7665}, //
+
42096 {4.4899869, 1.76721358}, //
+
42097 {4.4921813, 1.76784325}, //
+
42098 {4.4940834, 1.76838887}, //
+
42099 {4.49569273, 1.76885056}, //
+
42100 {4.49700928, 1.76922834}, //
+
42101 {4.49803352, 1.76952219}, //
+
42102 {4.49876499, 1.76973212}, //
+
42103 {4.49920368, 1.769858}, //
+
42104 {4.49935007, 1.76989996}, //
+
42105 {4.49259996, 1.73940003}, //
+
42106 {4.49192858, 1.73906422}, //
+
42107 {4.49108887, 1.73864448}, //
+
42108 {4.48991346, 1.73805678}, //
+
42109 {4.48840237, 1.73730123}, //
+
42110 {4.48655558, 1.73637784}, //
+
42111 {4.48437262, 1.73528647}, //
+
42112 {4.48185444, 1.73402715}, //
+
42113 {4.47900009, 1.73259997}, //
+
42114 {4.4759469, 1.73109937}, //
+
42115 {4.47280979, 1.72959757}, //
+
42116 {4.46958876, 1.72809446}, //
+
42117 {4.4662838, 1.72659016}, //
+
42118 {4.46289492, 1.72508454}, //
+
42119 {4.45942211, 1.72357774}, //
+
42120 {4.45586538, 1.72206974}, //
+
42121 {4.45222473, 1.72056055}, //
+
42122 {4.44850016, 1.71905005}, //
+
42123 {4.44471216, 1.71753883}, //
+
42124 {4.44088268, 1.71602774}, //
+
42125 {4.43701124, 1.71451664}, //
+
42126 {4.43309736, 1.71300554}, //
+
42127 {4.429142, 1.71149445}, //
+
42128 {4.42514467, 1.70998335}, //
+
42129 {4.42110491, 1.70847225}, //
+
42130 {4.41702366, 1.70696115}, //
+
42131 {4.41289997, 1.70545006}, //
+
42132 {4.40890169, 1.70403337}, //
+
42133 {4.40519619, 1.70278335}, //
+
42134 {4.40178347, 1.70169997}, //
+
42135 {4.39866304, 1.70078337}, //
+
42136 {4.3958354, 1.70003331}, //
+
42137 {4.39330006, 1.69945002}, //
+
42138 {4.39105749, 1.69903338}, //
+
42139 {4.38910723, 1.69878328}, //
+
42140 {4.38745022, 1.69869995}, //
+
42141 {4.3858242, 1.69867897}, //
+
42142 {4.38394642, 1.69861603}, //
+
42143 {4.38181686, 1.69851112}, //
+
42144 {4.37943506, 1.69836414}, //
+
42145 {4.37680197, 1.69817531}, //
+
42146 {4.37391663, 1.6979444}, //
+
42147 {4.37077951, 1.69767165}, //
+
42148 {4.36739063, 1.69735682}, //
+
42149 {4.36374998, 1.69700003}, //
+
42150 {4.35994148, 1.69660127}, //
+
42151 {4.35604858, 1.69616044}, //
+
42152 {4.35207224, 1.69567776}, //
+
42153 {4.34801149, 1.69515312}, //
+
42154 {4.3438673, 1.6945864}, //
+
42155 {4.33963871, 1.69397783}, //
+
42156 {4.33532667, 1.69332719}, //
+
42157 {4.33093023, 1.69263458}, //
+
42158 {4.32644987, 1.69190001}, //
+
42159 {4.32203197, 1.69113398}, //
+
42160 {4.31782293, 1.69032466}, //
+
42161 {4.31382227, 1.6894722}, //
+
42162 {4.31003046, 1.68857658}, //
+
42163 {4.30644703, 1.68763769}, //
+
42164 {4.30307245, 1.68665552}, //
+
42165 {4.29990625, 1.6856302}, //
+
42166 {4.29694891, 1.68456173}, //
+
42167 {4.29419994, 1.68344998}, //
+
42168 {4.2916708, 1.6823796}, //
+
42169 {4.28935051, 1.68143523}, //
+
42170 {4.28723907, 1.68061662}, //
+
42171 {4.28533602, 1.67992413}, //
+
42172 {4.28364134, 1.67935741}, //
+
42173 {4.28215551, 1.67891669}, //
+
42174 {4.28087854, 1.67860186}, //
+
42175 {4.27980995, 1.67841291}, //
+
42176 {4.27895021, 1.67834997}, //
+
42177 {4.2789712, 1.67759442}, //
+
42178 {4.27903414, 1.67683887}, //
+
42179 {4.27913904, 1.67608333}, //
+
42180 {4.27928591, 1.67532778}, //
+
42181 {4.27947474, 1.67457223}, //
+
42182 {4.27970552, 1.67381668}, //
+
42183 {4.27997828, 1.67306113}, //
+
42184 {4.28029299, 1.67230558}, //
+
42185 {4.28065014, 1.67155004}, //
+
42186 {4.28104877, 1.670784}, //
+
42187 {4.28148937, 1.66997468}, //
+
42188 {4.28197241, 1.66912222}, //
+
42189 {4.28249693, 1.6682266}, //
+
42190 {4.28306341, 1.66728771}, //
+
42191 {4.28367233, 1.66630554}, //
+
42192 {4.28432274, 1.66528022}, //
+
42193 {4.28501558, 1.66421175}, //
+
42194 {4.28574991, 1.6631}, //
+
42195 {4.28658867, 1.66200864}, //
+
42196 {4.28759432, 1.66100121}, //
+
42197 {4.28876686, 1.66007781}, //
+
42198 {4.29010534, 1.65923822}, //
+
42199 {4.29161119, 1.65848267}, //
+
42200 {4.29328346, 1.65781116}, //
+
42201 {4.29512215, 1.65722346}, //
+
42202 {4.29712772, 1.6567198}, //
+
42203 {4.29930019, 1.65629995}, //
+
42204 {4.30173349, 1.65595365}, //
+
42205 {4.3045001, 1.65564811}, //
+
42206 {4.30760002, 1.65538335}, //
+
42207 {4.31103325, 1.65515924}, //
+
42208 {4.31479979, 1.65497589}, //
+
42209 {4.31890011, 1.65483332}, //
+
42210 {4.32333326, 1.65473151}, //
+
42211 {4.3281002, 1.65467036}, //
+
42212 {4.33319998, 1.65464997}, //
+
42213 {4.33933783, 1.65545738}, //
+
42214 {4.34568405, 1.65639079}, //
+
42215 {4.35223866, 1.65744996}, //
+
42216 {4.35900259, 1.65863514}, //
+
42217 {4.3659749, 1.65994632}, //
+
42218 {4.37315559, 1.66138339}, //
+
42219 {4.38054514, 1.66294634}, //
+
42220 {4.38814306, 1.66463518}, //
+
42221 {4.39594984, 1.66645002}, //
+
42222 {4.40371418, 1.6683383}, //
+
42223 {4.41118479, 1.67022526}, //
+
42224 {4.41836119, 1.67211115}, //
+
42225 {4.42524385, 1.67399573}, //
+
42226 {4.43183279, 1.675879}, //
+
42227 {4.43812799, 1.67776108}, //
+
42228 {4.44412899, 1.67964196}, //
+
42229 {4.44983625, 1.68152165}, //
+
42230 {4.45524979, 1.68340003}, //
+
42231 {4.46023464, 1.685184}, //
+
42232 {4.46463251, 1.68675804}, //
+
42233 {4.46844435, 1.68812227}, //
+
42234 {4.47166967, 1.68927658}, //
+
42235 {4.47430849, 1.69022095}, //
+
42236 {4.47636127, 1.69095552}, //
+
42237 {4.47782707, 1.69148028}, //
+
42238 {4.47870684, 1.69179511}, //
+
42239 {4.47900009, 1.69190001}, //
+
42240 {4.47224998, 1.65125}, //
+
42241 {4.47122145, 1.65125}, //
+
42242 {4.47090673, 1.65125}, //
+
42243 {4.47055006, 1.65125}, //
+
42244 {4.47019339, 1.65122902}, //
+
42245 {4.4698782, 1.65116608}, //
+
42246 {4.46960545, 1.65106106}, //
+
42247 {4.46937466, 1.65091419}, //
+
42248 {4.46918583, 1.65072536}, //
+
42249 {4.46903896, 1.65049446}, //
+
42250 {4.46893406, 1.65022159}, //
+
42251 {4.46887112, 1.64990675}, //
+
42252 {4.46882915, 1.64919317}, //
+
42253 {4.46876621, 1.64887834}, //
+
42254 {4.46866131, 1.64860559}, //
+
42255 {4.46851397, 1.64837468}, //
+
42256 {4.46832514, 1.64818585}, //
+
42257 {4.46809435, 1.64803886}, //
+
42258 {4.4678216, 1.64793396}, //
+
42259 {4.46750689, 1.64787102}, //
+
42260 {4.46715021, 1.64785004}, //
+
42261 {4.46601677, 1.64785004}, //
+
42262 {4.46563911, 1.64785004}, //
+
42263 {4.46488333, 1.64785004}, //
+
42264 {4.46450567, 1.64785004}, //
+
42265 {4.46412754, 1.64785004}, //
+
42266 {4.46374989, 1.64785004}, //
+
42267 {4.46337223, 1.64782906}, //
+
42268 {4.46299458, 1.64776599}, //
+
42269 {4.46261644, 1.64766109}, //
+
42270 {4.46223879, 1.64751422}, //
+
42271 {4.46186113, 1.64732528}, //
+
42272 {4.46148348, 1.64709449}, //
+
42273 {4.46110535, 1.64682162}, //
+
42274 {4.46072769, 1.64650679}, //
+
42275 {4.46035004, 1.64614999}, //
+
42276 {4.4599514, 1.64577222}, //
+
42277 {4.45951033, 1.64539444}, //
+
42278 {4.45902777, 1.64501667}, //
+
42279 {4.45850325, 1.6446389}, //
+
42280 {4.45793629, 1.64426112}, //
+
42281 {4.45732784, 1.64388335}, //
+
42282 {4.45667696, 1.64350557}, //
+
42283 {4.45598459, 1.6431278}, //
+
42284 {4.45524979, 1.64275002}, //
+
42285 {4.45450497, 1.64239323}, //
+
42286 {4.45375872, 1.6420784}, //
+
42287 {4.45301104, 1.64180553}, //
+
42288 {4.4522624, 1.64157474}, //
+
42289 {4.45151234, 1.64138579}, //
+
42290 {4.45076132, 1.64123893}, //
+
42291 {4.45000887, 1.6411339}, //
+
42292 {4.44925499, 1.64107096}, //
+
42293 {4.44850016, 1.64104998}, //
+
42294 {4.44624376, 1.64021111}, //
+
42295 {4.44398642, 1.63920557}, //
+
42296 {4.44172764, 1.63803339}, //
+
42297 {4.43946791, 1.63669443}, //
+
42298 {4.43720675, 1.63518894}, //
+
42299 {4.43494463, 1.63351667}, //
+
42300 {4.43268108, 1.63167775}, //
+
42301 {4.43041611, 1.62967217}, //
+
42302 {4.42815018, 1.62750006}, //
+
42303 {4.42425728, 1.62457228}, //
+
42304 {4.42011309, 1.62181115}, //
+
42305 {4.41571665, 1.61921668}, //
+
42306 {4.41106844, 1.61678886}, //
+
42307 {4.40616846, 1.61452782}, //
+
42308 {4.40101671, 1.61243331}, //
+
42309 {4.39561319, 1.61050558}, //
+
42310 {4.38995743, 1.6087445}, //
+
42311 {4.38404989, 1.60714996}, //
+
42312 {4.37781858, 1.60594261}, //
+
42313 {4.37116861, 1.60532033}, //
+
42314 {4.36409998, 1.60528338}, //
+
42315 });
+
42316 polys.push_back({
+
42317 {1.35853767, 1.55147278}, //
+
42318 {1.35828578, 1.55216539}, //
+
42319 {1.35794997, 1.55289996}, //
+
42320 {1.3575722, 1.55365551}, //
+
42321 {1.35719442, 1.55441105}, //
+
42322 {1.3560611, 1.55667782}, //
+
42323 {1.35568333, 1.55743337}, //
+
42324 {1.35530555, 1.55818892}, //
+
42325 {1.35492778, 1.55894446}, //
+
42326 {1.35455, 1.55970001}, //
+
42327 {1.35415125, 1.56049693}, //
+
42328 {1.35371053, 1.56137657}, //
+
42329 {1.35322773, 1.56233895}, //
+
42330 {1.35270309, 1.56338394}, //
+
42331 {1.35213637, 1.56451178}, //
+
42332 {1.35152781, 1.56572223}, //
+
42333 {1.35087717, 1.56701541}, //
+
42334 {1.35018456, 1.56839132}, //
+
42335 {1.34944999, 1.56984997}, //
+
42336 {1.34786546, 1.57205307}, //
+
42337 {1.34611177, 1.57412899}, //
+
42338 {1.34418893, 1.57607782}, //
+
42339 {1.34209692, 1.57789934}, //
+
42340 {1.33983576, 1.57959378}, //
+
42341 {1.33740556, 1.58116114}, //
+
42342 {1.3348062, 1.58260119}, //
+
42343 {1.33203769, 1.58391416}, //
+
42344 {1.32910001, 1.58510005}, //
+
42345 {1.32583761, 1.58629632}, //
+
42346 {1.32207286, 1.58761847}, //
+
42347 {1.31780553, 1.58906662}, //
+
42348 {1.31303585, 1.59064078}, //
+
42349 {1.30776358, 1.59234071}, //
+
42350 {1.30198884, 1.59416664}, //
+
42351 {1.29571176, 1.59611857}, //
+
42352 {1.28893209, 1.59819627}, //
+
42353 {1.28164995, 1.60039997}, //
+
42354 {1.28127217, 1.60077226}, //
+
42355 {1.28097844, 1.6010617}, //
+
42356 {1.27896357, 1.60304689}, //
+
42357 {1.27824998, 1.60374999}, //
+
42358 {1.27080059, 1.60593271}, //
+
42359 {1.26351917, 1.60794759}, //
+
42360 {1.25640559, 1.6097945}, //
+
42361 {1.24945986, 1.61147344}, //
+
42362 {1.2426821, 1.61298454}, //
+
42363 {1.23607218, 1.61432779}, //
+
42364 {1.22963023, 1.61550307}, //
+
42365 {1.22335613, 1.61651051}, //
+
42366 {1.21724999, 1.61734998}, //
+
42367 {1.21197224, 1.618137}, //
+
42368 {1.20669448, 1.61900926}, //
+
42369 {1.20141661, 1.61996663}, //
+
42370 {1.19613886, 1.62100923}, //
+
42371 {1.19086111, 1.62213707}, //
+
42372 {1.18558335, 1.62335002}, //
+
42373 {1.1803056, 1.62464809}, //
+
42374 {1.17502773, 1.62603152}, //
+
42375 {1.16974998, 1.62750006}, //
+
42376 {1.16410613, 1.62909448}, //
+
42377 {1.15770805, 1.63085556}, //
+
42378 {1.15055561, 1.63278329}, //
+
42379 {1.14264882, 1.6348778}, //
+
42380 {1.13398767, 1.63713884}, //
+
42381 {1.12457228, 1.63956666}, //
+
42382 {1.11440241, 1.64216113}, //
+
42383 {1.10347843, 1.64492226}, //
+
42384 {1.09179997, 1.64785004}, //
+
42385 {1.08499074, 1.6494025}, //
+
42386 {1.07814074, 1.65103769}, //
+
42387 {1.07124996, 1.6527555}, //
+
42388 {1.06431854, 1.65455616}, //
+
42389 {1.05734634, 1.65643954}, //
+
42390 {1.05033338, 1.65840554}, //
+
42391 {1.04327965, 1.66045427}, //
+
42392 {1.03618515, 1.66258585}, //
+
42393 {1.02904999, 1.66480005}, //
+
42394 {1.02212465, 1.66697228}, //
+
42395 {1.01565993, 1.66897774}, //
+
42396 {1.00965559, 1.67081666}, //
+
42397 {1.00411177, 1.67248893}, //
+
42398 {0.999028385, 1.67399442}, //
+
42399 {0.994405568, 1.67533338}, //
+
42400 {0.990243196, 1.67650557}, //
+
42401 {0.986541331, 1.6775111}, //
+
42402 {0.983299971, 1.67834997}, //
+
42403 {0.974339485, 1.68119383}, //
+
42404 {0.965546906, 1.68370306}, //
+
42405 {0.956922233, 1.6858778}, //
+
42406 {0.948465407, 1.68771791}, //
+
42407 {0.940176547, 1.68922341}, //
+
42408 {0.932055533, 1.6903944}, //
+
42409 {0.924102485, 1.69123089}, //
+
42410 {0.916317284, 1.69173276}, //
+
42411 {0.908699989, 1.69190001}, //
+
42412 {0.905688286, 1.69194198}, //
+
42413 {0.902675331, 1.69206786}, //
+
42414 {0.899661124, 1.69227779}, //
+
42415 {0.896645665, 1.69257164}, //
+
42416 {0.893629014, 1.69294941}, //
+
42417 {0.890611112, 1.69341111}, //
+
42418 {0.887591958, 1.69395673}, //
+
42419 {0.884571612, 1.6945864}, //
+
42420 {0.881550014, 1.69529998}, //
+
42421 {0.877783358, 1.69542587}, //
+
42422 {0.874016643, 1.69580376}, //
+
42423 {0.870249987, 1.69643331}, //
+
42424 {0.866483331, 1.69731486}, //
+
42425 {0.862716675, 1.69844818}, //
+
42426 {0.858950019, 1.69983327}, //
+
42427 {0.855183363, 1.70147038}, //
+
42428 {0.851416647, 1.70335925}, //
+
42429 {0.847649992, 1.70550001}, //
+
42430 {0.845372856, 1.70697963}, //
+
42431 {0.843052447, 1.70841849}, //
+
42432 {0.840688884, 1.70981669}, //
+
42433 {0.838282108, 1.71117413}, //
+
42434 {0.835832119, 1.7124908}, //
+
42435 {0.833338916, 1.71376669}, //
+
42436 {0.830802441, 1.71500182}, //
+
42437 {0.828222811, 1.7161963}, //
+
42438 {0.825600028, 1.71735001}, //
+
42439 {0.822903693, 1.71833646}, //
+
42440 {0.820081472, 1.71902907}, //
+
42441 {0.817133307, 1.71942782}, //
+
42442 {0.814059258, 1.71953273}, //
+
42443 {0.810859263, 1.71934378}, //
+
42444 {0.807533324, 1.7188611}, //
+
42445 {0.8040815, 1.71808457}, //
+
42446 {0.800503731, 1.71701419}, //
+
42447 {0.796800017, 1.71564996}, //
+
42448 {0.795040309, 1.73143554}, //
+
42449 {0.793861747, 1.74735498}, //
+
42450 {0.79339999, 1.75263429}, //
+
42451 {0.79339999, 1.7665}, //
+
42452 {0.797083974, 1.76515675}, //
+
42453 {0.812049985, 1.75969994}, //
+
42454 {0.816340744, 1.75815797}, //
+
42455 {0.820924103, 1.75653207}, //
+
42456 {0.825800002, 1.75482225}, //
+
42457 {0.830968499, 1.75302839}, //
+
42458 {0.836429656, 1.75115061}, //
+
42459 {0.842183352, 1.7491889}, //
+
42460 {0.848229647, 1.74714327}, //
+
42461 {0.854568541, 1.74501359}, //
+
42462 {0.861199975, 1.7428}, //
+
42463 {0.869509876, 1.74130988}, //
+
42464 {0.877861738, 1.73986173}, //
+
42465 {0.886255562, 1.73845553}, //
+
42466 {0.894691348, 1.7370913}, //
+
42467 {0.903169155, 1.73576915}, //
+
42468 {0.911688864, 1.73448884}, //
+
42469 {0.920250595, 1.73325062}, //
+
42470 {0.928854346, 1.73205435}, //
+
42471 {0.9375, 1.73090005}, //
+
42472 {0.94606173, 1.7297982}, //
+
42473 {0.954413593, 1.728737}, //
+
42474 {0.962555528, 1.72771668}, //
+
42475 {0.970487654, 1.72673702}, //
+
42476 {0.978209853, 1.72579813}, //
+
42477 {0.985722244, 1.72490001}, //
+
42478 {0.993024707, 1.72404253}, //
+
42479 {1.0001173, 1.72322595}, //
+
42480 {1.00699997, 1.72245002}, //
+
42481 {1.010934, 1.72236609}, //
+
42482 {1.01520252, 1.72211421}, //
+
42483 {1.01980555, 1.72169447}, //
+
42484 {1.0247432, 1.72110677}, //
+
42485 {1.03001547, 1.72035122}, //
+
42486 {1.03562224, 1.71942782}, //
+
42487 {1.04156363, 1.71833646}, //
+
42488 {1.04783952, 1.71707714}, //
+
42489 {1.05445004, 1.71564996}, //
+
42490 {1.06128025, 1.71414936}, //
+
42491 {1.0681932, 1.71264756}, //
+
42492 {1.07518888, 1.71114445}, //
+
42493 {1.08226728, 1.70964015}, //
+
42494 {1.08942842, 1.70813453}, //
+
42495 {1.09667218, 1.70662773}, //
+
42496 {1.10399878, 1.70511973}, //
+
42497 {1.111408, 1.70361054}, //
+
42498 {1.11889994, 1.70210004}, //
+
42499 {1.12924564, 1.69987595}, //
+
42500 {1.1391716, 1.69773698}, //
+
42501 {1.14867783, 1.69568336}, //
+
42502 {1.1577642, 1.69371486}, //
+
42503 {1.16643083, 1.69183147}, //
+
42504 {1.17467773, 1.69003332}, //
+
42505 {1.18250489, 1.6883204}, //
+
42506 {1.18991232, 1.6866926}, //
+
42507 {1.19690001, 1.68515003}, //
+
42508 {1.20523024, 1.68349254}, //
+
42509 {1.21364319, 1.68154263}, //
+
42510 {1.22213888, 1.67929995}, //
+
42511 {1.2307173, 1.67676485}, //
+
42512 {1.23937845, 1.67393708}, //
+
42513 {1.24812222, 1.67081666}, //
+
42514 {1.25694871, 1.6674037}, //
+
42515 {1.26585805, 1.6636982}, //
+
42516 {1.27485001, 1.65970004}, //
+
42517 {1.28360128, 1.65566051}, //
+
42518 {1.29176605, 1.65183091}, //
+
42519 {1.29934442, 1.64821112}, //
+
42520 {1.3063364, 1.64480126}, //
+
42521 {1.31274199, 1.6416012}, //
+
42522 {1.31856108, 1.63861108}, //
+
42523 {1.32379377, 1.63583088}, //
+
42524 {1.32844007, 1.63326049}, //
+
42525 {1.33249998, 1.63090003}, //
+
42526 {1.33474505, 1.62932658}, //
+
42527 {1.33694696, 1.62762845}, //
+
42528 {1.33910561, 1.6258055}, //
+
42529 {1.34122097, 1.62385798}, //
+
42530 {1.34329319, 1.62178576}, //
+
42531 {1.34532225, 1.61958885}, //
+
42532 {1.34730804, 1.61726725}, //
+
42533 {1.34925067, 1.61482096}, //
+
42534 {1.35115004, 1.61224997}, //
+
42535 {1.35301733, 1.609658}, //
+
42536 {1.35484135, 1.60714877}, //
+
42537 {1.35662222, 1.60472226}, //
+
42538 {1.35835993, 1.60237837}, //
+
42539 {1.36005437, 1.60011733}, //
+
42540 {1.36170554, 1.5979389}, //
+
42541 {1.36331356, 1.5958432}, //
+
42542 {1.36487842, 1.59383023}, //
+
42543 {1.3664, 1.59189999}, //
+
42544 {1.36782718, 1.59011602}, //
+
42545 {1.36908638, 1.58854198}, //
+
42546 {1.37110126, 1.58602345}, //
+
42547 {1.37320006, 1.58340001}, //
+
42548 {1.35858631, 1.55128431}, //
+
42549 });
+
42550 polys.push_back({
+
42551 {5.78851366, 1.71224999}, //
+
42552 {5.78779984, 1.71224999}, //
+
42553 {5.78702354, 1.71227098}, //
+
42554 {5.78620481, 1.71233392}, //
+
42555 {5.7853446, 1.71243894}, //
+
42556 {5.78444195, 1.71258581}, //
+
42557 {5.78349733, 1.71277463}, //
+
42558 {5.78251123, 1.71300554}, //
+
42559 {5.7814827, 1.71327841}, //
+
42560 {5.7804122, 1.71359324}, //
+
42561 {5.77930021, 1.71395004}, //
+
42562 {5.77821922, 1.71434879}, //
+
42563 {5.7772212, 1.71478951}, //
+
42564 {5.77630568, 1.71527219}, //
+
42565 {5.77547264, 1.71579695}, //
+
42566 {5.77472305, 1.71636355}, //
+
42567 {5.77405548, 1.71697223}, //
+
42568 {5.77347088, 1.71762288}, //
+
42569 {5.77296925, 1.71831548}, //
+
42570 {5.77255011, 1.71905005}, //
+
42571 {5.77217245, 1.71980488}, //
+
42572 {5.77179432, 1.72055864}, //
+
42573 {5.77141666, 1.72131109}, //
+
42574 {5.77103901, 1.72206235}, //
+
42575 {5.77066088, 1.72281229}, //
+
42576 {5.77028322, 1.72356117}, //
+
42577 {5.76990557, 1.72430861}, //
+
42578 {5.76952791, 1.72505498}, //
+
42579 {5.76914978, 1.72580004}, //
+
42580 {5.76883507, 1.72655559}, //
+
42581 {5.76864624, 1.72731113}, //
+
42582 {5.7685833, 1.72806668}, //
+
42583 {5.76864624, 1.72882223}, //
+
42584 {5.76883507, 1.72957778}, //
+
42585 {5.76914978, 1.73033333}, //
+
42586 {5.76959085, 1.73108888}, //
+
42587 {5.77015734, 1.73184443}, //
+
42588 {5.77085018, 1.73259997}, //
+
42589 {5.77240229, 1.73411047}, //
+
42590 {5.77403784, 1.73561978}, //
+
42591 {5.77575541, 1.73712778}, //
+
42592 {5.77755594, 1.73863459}, //
+
42593 {5.77943945, 1.74014008}, //
+
42594 {5.78140545, 1.7416445}, //
+
42595 {5.78345442, 1.74314749}, //
+
42596 {5.78558588, 1.74464941}, //
+
42597 {5.78779984, 1.74615002}, //
+
42598 {5.79007673, 1.74761915}, //
+
42599 {5.79239511, 1.74900436}, //
+
42600 {5.79475546, 1.75030553}, //
+
42601 {5.79715824, 1.7515229}, //
+
42602 {5.79960251, 1.75265622}, //
+
42603 {5.80208874, 1.7537055}, //
+
42604 {5.8046174, 1.75467098}, //
+
42605 {5.80718756, 1.75555241}, //
+
42606 {5.80980015, 1.75635004}, //
+
42607 {5.81238079, 1.75708461}, //
+
42608 {5.81483459, 1.75777721}, //
+
42609 {5.81716108, 1.75842774}, //
+
42610 {5.81936026, 1.75903642}, //
+
42611 {5.82143259, 1.75960314}, //
+
42612 {5.82337761, 1.76012778}, //
+
42613 {5.82519579, 1.76061046}, //
+
42614 {5.82688665, 1.76105118}, //
+
42615 {5.8284502, 1.76145005}, //
+
42616 {5.82987738, 1.76180685}, //
+
42617 {5.83113623, 1.76212156}, //
+
42618 {5.83222771, 1.76239443}, //
+
42619 {5.83390665, 1.76281416}, //
+
42620 {5.83449459, 1.76296115}, //
+
42621 {5.83491421, 1.76306605}, //
+
42622 {5.83516598, 1.763129}, //
+
42623 {5.8352499, 1.76314998}, //
+
42624 {5.83590078, 1.76308703}, //
+
42625 {5.83634138, 1.76289821}, //
+
42626 {5.83657217, 1.76258337}, //
+
42627 {5.83659315, 1.76214254}, //
+
42628 {5.83640432, 1.76157594}, //
+
42629 {5.83600569, 1.76088333}, //
+
42630 {5.83539677, 1.76006484}, //
+
42631 {5.83457851, 1.75912035}, //
+
42632 {5.83354998, 1.75804996}, //
+
42633 {5.83238506, 1.75691664}, //
+
42634 {5.83113527, 1.75578332}, //
+
42635 {5.82980013, 1.75465}, //
+
42636 {5.82837963, 1.75351667}, //
+
42637 {5.82687426, 1.75238335}, //
+
42638 {5.82528353, 1.75125003}, //
+
42639 {5.82360744, 1.75011671}, //
+
42640 {5.82184649, 1.74898338}, //
+
42641 {5.82000017, 1.74784994}, //
+
42642 {5.81818438, 1.74674809}, //
+
42643 {5.81649399, 1.74568701}, //
+
42644 {5.81492758, 1.7446667}, //
+
42645 {5.81348658, 1.74368703}, //
+
42646 {5.81216955, 1.74274814}, //
+
42647 {5.81097794, 1.74185002}, //
+
42648 {5.8099103, 1.74099255}, //
+
42649 {5.80896807, 1.74017596}, //
+
42650 {5.80814981, 1.73940003}, //
+
42651 {5.80670166, 1.73933709}, //
+
42652 {5.80537987, 1.73914814}, //
+
42653 {5.80418348, 1.73883331}, //
+
42654 {5.80311298, 1.73839259}, //
+
42655 {5.80216837, 1.73782587}, //
+
42656 {5.80135012, 1.73713338}, //
+
42657 {5.80065727, 1.73631477}, //
+
42658 {5.80009079, 1.7353704}, //
+
42659 {5.79965019, 1.73430002}, //
+
42660 {5.79925108, 1.73316669}, //
+
42661 {5.79881048, 1.73203337}, //
+
42662 {5.79832792, 1.73090005}, //
+
42663 {5.79780293, 1.72976661}, //
+
42664 {5.79723644, 1.72863328}, //
+
42665 {5.796628, 1.72749996}, //
+
42666 {5.79597712, 1.72636664}, //
+
42667 {5.79528475, 1.72523332}, //
+
42668 {5.79454994, 1.72409999}, //
+
42669 {5.79384708, 1.72299814}, //
+
42670 {5.79322672, 1.72193706}, //
+
42671 {5.79268885, 1.72091663}, //
+
42672 {5.79223394, 1.71993709}, //
+
42673 {5.79186153, 1.71899819}, //
+
42674 {5.79157209, 1.71809995}, //
+
42675 {5.79136562, 1.7172426}, //
+
42676 {5.79124117, 1.7164259}, //
+
42677 {5.79120016, 1.71564996}, //
+
42678 {5.79120016, 1.71493638}, //
+
42679 {5.79120016, 1.71430683}, //
+
42680 {5.79120016, 1.71376109}, //
+
42681 {5.79120016, 1.71224999}, //
+
42682 {5.79015064, 1.71224999}, //
+
42683 {5.78914309, 1.71224999}, //
+
42684 });
+
42685 polys.push_back({
+
42686 {0.212886423, 1.60801053}, //
+
42687 {0.212277785, 1.60809445}, //
+
42688 {0.211627156, 1.6082623}, //
+
42689 {0.210934564, 1.60851419}, //
+
42690 {0.210199997, 1.60885}, //
+
42691 {0.206891358, 1.61052907}, //
+
42692 {0.206850007, 1.61055005}, //
+
42693 {0.206870377, 1.6114099}, //
+
42694 {0.206931487, 1.61247838}, //
+
42695 {0.207033336, 1.61375558}, //
+
42696 {0.207175925, 1.61524141}, //
+
42697 {0.207359254, 1.61693585}, //
+
42698 {0.207583338, 1.61883891}, //
+
42699 {0.207848147, 1.62095058}, //
+
42700 {0.20815371, 1.62327099}, //
+
42701 {0.208499998, 1.62580001}, //
+
42702 {0.208898768, 1.62849689}, //
+
42703 {0.209339499, 1.63132095}, //
+
42704 {0.209822223, 1.63427222}, //
+
42705 {0.210346907, 1.63735056}, //
+
42706 {0.210913584, 1.64055622}, //
+
42707 {0.211522222, 1.64388883}, //
+
42708 {0.212172836, 1.64734876}, //
+
42709 {0.212865427, 1.65093577}, //
+
42710 {0.213599995, 1.65464997}, //
+
42711 {0.214355558, 1.66069317}, //
+
42712 {0.215111107, 1.66677845}, //
+
42713 {0.21586667, 1.67290556}, //
+
42714 {0.216622218, 1.67907465}, //
+
42715 {0.217377782, 1.68528581}, //
+
42716 {0.21813333, 1.69153893}, //
+
42717 {0.218888894, 1.6978339}, //
+
42718 {0.219644442, 1.70417094}, //
+
42719 {0.220400006, 1.71054995}, //
+
42720 {0.220694274, 1.7131505}, //
+
42721 {0.220588893, 1.70924449}, //
+
42722 {0.220483944, 1.70363081}, //
+
42723 {0.220420986, 1.69784939}, //
+
42724 {0.220400006, 1.69190001}, //
+
42725 {0.220400006, 1.68002093}, //
+
42726 {0.220400006, 1.67420554}, //
+
42727 {0.220400006, 1.65725553}, //
+
42728 {0.220400006, 1.65177095}, //
+
42729 {0.220400006, 1.64104998}, //
+
42730 {0.221071601, 1.63740861}, //
+
42731 {0.221575305, 1.63401794}, //
+
42732 {0.221911117, 1.63087773}, //
+
42733 {0.222079009, 1.62798822}, //
+
42734 {0.222079009, 1.6253494}, //
+
42735 {0.221911117, 1.62296116}, //
+
42736 {0.221575305, 1.6208235}, //
+
42737 {0.221071601, 1.61893642}, //
+
42738 {0.220400006, 1.61730003}, //
+
42739 {0.219665438, 1.61586237}, //
+
42740 {0.218972847, 1.6145494}, //
+
42741 {0.218322217, 1.61336112}, //
+
42742 {0.21771358, 1.61229753}, //
+
42743 {0.217146918, 1.61135864}, //
+
42744 {0.216622218, 1.61054444}, //
+
42745 {0.21613951, 1.60985494}, //
+
42746 {0.215698764, 1.60929012}, //
+
42747 {0.215299994, 1.60885}, //
+
42748 {0.214901239, 1.60851419}, //
+
42749 {0.214460492, 1.6082623}, //
+
42750 {0.213977784, 1.60809445}, //
+
42751 {0.213453084, 1.60801053}, //
+
42752 });
+
42753 polys.push_back({
+
42754 {3.8348, 1.67159998}, //
+
42755 {3.83442211, 1.67178333}, //
+
42756 {3.83274317, 1.67259812}, //
+
42757 {3.8321135, 1.67290366}, //
+
42758 {3.83139992, 1.67324996}, //
+
42759 {3.83062339, 1.67364872}, //
+
42760 {3.8298049, 1.67408955}, //
+
42761 {3.82894444, 1.67457223}, //
+
42762 {3.82804203, 1.67509687}, //
+
42763 {3.82709742, 1.67566359}, //
+
42764 {3.82611108, 1.67627227}, //
+
42765 {3.82508278, 1.6769228}, //
+
42766 {3.82401228, 1.6776154}, //
+
42767 {3.82290006, 1.67834997}, //
+
42768 {3.82175612, 1.67908454}, //
+
42769 {3.82056904, 1.67977715}, //
+
42770 {3.8193388, 1.68042779}, //
+
42771 {3.8180654, 1.68103647}, //
+
42772 {3.81674886, 1.68160307}, //
+
42773 {3.81538892, 1.68212783}, //
+
42774 {3.81398582, 1.68261051}, //
+
42775 {3.81253958, 1.68305123}, //
+
42776 {3.81104994, 1.68344998}, //
+
42777 {3.80954933, 1.68380678}, //
+
42778 {3.80804753, 1.68412161}, //
+
42779 {3.80654454, 1.68439448}, //
+
42780 {3.80504012, 1.68462527}, //
+
42781 {3.80353451, 1.68481421}, //
+
42782 {3.8020277, 1.68496108}, //
+
42783 {3.8005197, 1.6850661}, //
+
42784 {3.79901052, 1.68512905}, //
+
42785 {3.7974999, 1.68515003}, //
+
42786 {3.7971642, 1.6850661}, //
+
42787 {3.79674435, 1.68496108}, //
+
42788 {3.79615688, 1.68481421}, //
+
42789 {3.79540133, 1.68462527}, //
+
42790 {3.7944777, 1.68439448}, //
+
42791 {3.79338646, 1.68412161}, //
+
42792 {3.79069996, 1.68344998}, //
+
42793 {3.78917837, 1.68303025}, //
+
42794 {3.78761363, 1.68252659}, //
+
42795 {3.7860055, 1.68193889}, //
+
42796 {3.78435421, 1.68126726}, //
+
42797 {3.78265977, 1.68051171}, //
+
42798 {3.78092217, 1.67967224}, //
+
42799 {3.77914143, 1.67874873}, //
+
42800 {3.77731729, 1.67774141}, //
+
42801 {3.77544999, 1.67665005}, //
+
42802 {3.77357149, 1.6755482}, //
+
42803 {3.77169204, 1.67448699}, //
+
42804 {3.76981115, 1.67346668}, //
+
42805 {3.76792908, 1.67248702}, //
+
42806 {3.76604557, 1.67154813}, //
+
42807 {3.76416111, 1.67065001}, //
+
42808 {3.76227522, 1.66979265}, //
+
42809 {3.76038837, 1.66897595}, //
+
42810 {3.7585001, 1.66820002}, //
+
42811 {3.75664258, 1.66748643}, //
+
42812 {3.75482583, 1.66685677}, //
+
42813 {3.75305009, 1.66631114}, //
+
42814 {3.75131488, 1.66584933}, //
+
42815 {3.74962044, 1.66547155}, //
+
42816 {3.74796677, 1.66517782}, //
+
42817 {3.74635363, 1.66496789}, //
+
42818 {3.74478149, 1.66484201}, //
+
42819 {3.74324989, 1.66480005}, //
+
42820 {3.74247336, 1.66484201}, //
+
42821 {3.74165487, 1.66496789}, //
+
42822 {3.74079442, 1.66517782}, //
+
42823 {3.73989201, 1.66547155}, //
+
42824 {3.73894763, 1.66584933}, //
+
42825 {3.73796105, 1.66631114}, //
+
42826 {3.73693275, 1.66685677}, //
+
42827 {3.73586226, 1.66748643}, //
+
42828 {3.73475003, 1.66820002}, //
+
42829 {3.73364806, 1.66895497}, //
+
42830 {3.7325871, 1.66970861}, //
+
42831 {3.73156667, 1.67046106}, //
+
42832 {3.73058701, 1.67121232}, //
+
42833 {3.72964811, 1.67196238}, //
+
42834 {3.72874999, 1.67271113}, //
+
42835 {3.72789264, 1.6734587}, //
+
42836 {3.72707582, 1.67420495}, //
+
42837 {3.7263, 1.67495}, //
+
42838 {3.72400188, 1.67641914}, //
+
42839 {3.72161841, 1.67780435}, //
+
42840 {3.71915007, 1.67910552}, //
+
42841 {3.71659636, 1.68032289}, //
+
42842 {3.71395731, 1.68145621}, //
+
42843 {3.71123338, 1.68250561}, //
+
42844 {3.70842409, 1.68347096}, //
+
42845 {3.70552969, 1.68435252}, //
+
42846 {3.70254993, 1.68515003}, //
+
42847 {3.69869995, 1.68582165}, //
+
42848 {3.69468331, 1.68632531}, //
+
42849 {3.69050002, 1.68666112}, //
+
42850 {3.68615007, 1.68682897}, //
+
42851 {3.68163323, 1.68682897}, //
+
42852 {3.67694998, 1.68666112}, //
+
42853 {3.67210007, 1.68632531}, //
+
42854 {3.66708326, 1.68582165}, //
+
42855 {3.66190004, 1.68515003}, //
+
42856 {3.66034698, 1.68443644}, //
+
42857 {3.65870976, 1.68380678}, //
+
42858 {3.65698886, 1.68326116}, //
+
42859 {3.65518403, 1.68279934}, //
+
42860 {3.65329504, 1.68242157}, //
+
42861 {3.65132213, 1.68212783}, //
+
42862 {3.64926553, 1.68191791}, //
+
42863 {3.64712477, 1.68179202}, //
+
42864 {3.64490008, 1.68175006}, //
+
42865 {3.59635806, 1.68175006}, //
+
42866 {3.59404993, 1.68175006}, //
+
42867 {3.59183574, 1.68177104}, //
+
42868 {3.58970428, 1.68183398}, //
+
42869 {3.58765554, 1.68193889}, //
+
42870 {3.58568954, 1.68208575}, //
+
42871 {3.58380628, 1.6822747}, //
+
42872 {3.5820055, 1.68250561}, //
+
42873 {3.58028769, 1.68277836}, //
+
42874 {3.57865238, 1.68309319}, //
+
42875 {3.57710004, 1.68344998}, //
+
42876 {3.5757246, 1.68380678}, //
+
42877 {3.57459879, 1.68412161}, //
+
42878 {3.57372212, 1.68439448}, //
+
42879 {3.57309508, 1.68462527}, //
+
42880 {3.57271719, 1.68481421}, //
+
42881 {3.57258892, 1.68496108}, //
+
42882 {3.5727098, 1.6850661}, //
+
42883 {3.5730803, 1.68512905}, //
+
42884 {3.57369995, 1.68515003}, //
+
42885 {3.57747221, 1.68515003}, //
+
42886 {3.57939887, 1.68515003}, //
+
42887 {3.58718586, 1.68515003}, //
+
42888 {3.59045053, 1.68515003}, //
+
42889 {3.59404993, 1.68515003}, //
+
42890 {3.59794188, 1.685884}, //
+
42891 {3.60208464, 1.6865747}, //
+
42892 {3.60647774, 1.68722224}, //
+
42893 {3.61112165, 1.68782651}, //
+
42894 {3.61601615, 1.68838763}, //
+
42895 {3.62116122, 1.6889056}, //
+
42896 {3.62655687, 1.68938029}, //
+
42897 {3.6322031, 1.68981171}, //
+
42898 {3.63809991, 1.69019997}, //
+
42899 {3.64396596, 1.69059873}, //
+
42900 {3.64949751, 1.69103956}, //
+
42901 {3.65469456, 1.69152224}, //
+
42902 {3.65955687, 1.69204688}, //
+
42903 {3.66408467, 1.6926136}, //
+
42904 {3.66827774, 1.69322217}, //
+
42905 {3.67213631, 1.69387281}, //
+
42906 {3.67566061, 1.69456542}, //
+
42907 {3.67884994, 1.69529998}, //
+
42908 {3.68692899, 1.69584632}, //
+
42909 {3.69458818, 1.69597411}, //
+
42910 {3.70182776, 1.69568336}, //
+
42911 {3.70864749, 1.69497406}, //
+
42912 {3.7150476, 1.69384634}, //
+
42913 {3.72102785, 1.69229996}, //
+
42914 {3.72658825, 1.69033515}, //
+
42915 {3.73172903, 1.6879518}, //
+
42916 {3.73644996, 1.68515003}, //
+
42917 {3.73798156, 1.68441546}, //
+
42918 {3.73955369, 1.68372285}, //
+
42919 {3.74116659, 1.68307221}, //
+
42920 {3.74282026, 1.68246353}, //
+
42921 {3.7445147, 1.68189692}, //
+
42922 {3.74624991, 1.68137217}, //
+
42923 {3.74802589, 1.68088949}, //
+
42924 {3.74984264, 1.68044877}, //
+
42925 {3.75169992, 1.68005002}, //
+
42926 {3.7536099, 1.67981911}, //
+
42927 {3.75556183, 1.67988205}, //
+
42928 {3.75755548, 1.68023884}, //
+
42929 {3.75959134, 1.68088949}, //
+
42930 {3.76166916, 1.68183398}, //
+
42931 {3.76378894, 1.68307221}, //
+
42932 {3.76595068, 1.68460429}, //
+
42933 {3.76815438, 1.68643022}, //
+
42934 {3.77040005, 1.68855}, //
+
42935 {3.77114511, 1.68859136}, //
+
42936 {3.77189136, 1.68871546}, //
+
42937 {3.7726388, 1.68892217}, //
+
42938 {3.77338767, 1.68921173}, //
+
42939 {3.77413774, 1.6895839}, //
+
42940 {3.77488899, 1.69003892}, //
+
42941 {3.77564144, 1.69057655}, //
+
42942 {3.77639508, 1.69119692}, //
+
42943 {3.77714992, 1.69190001}, //
+
42944 {3.7787025, 1.69339013}, //
+
42945 {3.78033757, 1.69483829}, //
+
42946 {3.78205562, 1.69624448}, //
+
42947 {3.78385615, 1.69760859}, //
+
42948 {3.78573942, 1.69893086}, //
+
42949 {3.78770566, 1.70021117}, //
+
42950 {3.78975439, 1.70144939}, //
+
42951 {3.79188585, 1.70264566}, //
+
42952 {3.79410005, 1.70379996}, //
+
42953 {3.79636598, 1.70487034}, //
+
42954 {3.79863095, 1.70581484}, //
+
42955 {3.8008945, 1.70663333}, //
+
42956 {3.80315685, 1.70732594}, //
+
42957 {3.80541801, 1.70789254}, //
+
42958 {3.80767775, 1.70833337}, //
+
42959 {3.80993652, 1.7086482}, //
+
42960 {3.81219387, 1.70883703}, //
+
42961 {3.81445003, 1.70889997}, //
+
42962 {3.81593943, 1.70885801}, //
+
42963 {3.81738591, 1.70873213}, //
+
42964 {3.81878901, 1.7085222}, //
+
42965 {3.82014871, 1.70822835}, //
+
42966 {3.82146549, 1.70785058}, //
+
42967 {3.82273889, 1.70738888}, //
+
42968 {3.82396913, 1.70684326}, //
+
42969 {3.82515621, 1.70621359}, //
+
42970 {3.82629991, 1.70550001}, //
+
42971 {3.82743335, 1.70476544}, //
+
42972 {3.82856655, 1.70407283}, //
+
42973 {3.82969999, 1.70342219}, //
+
42974 {3.83083344, 1.70281363}, //
+
42975 {3.83196664, 1.7022469}, //
+
42976 {3.83310008, 1.70172226}, //
+
42977 {3.83423328, 1.70123947}, //
+
42978 {3.83536673, 1.70079875}, //
+
42979 {3.83649993, 1.70039999}, //
+
42980 {3.83761168, 1.70000124}, //
+
42981 {3.83868027, 1.69956052}, //
+
42982 {3.83970547, 1.69907773}, //
+
42983 {3.84068775, 1.69855309}, //
+
42984 {3.84162664, 1.69798636}, //
+
42985 {3.84252214, 1.6973778}, //
+
42986 {3.84337473, 1.69672716}, //
+
42987 {3.84418392, 1.69603455}, //
+
42988 {3.84494996, 1.69529998}, //
+
42989 {3.84566355, 1.6945864}, //
+
42990 {3.84683895, 1.69341111}, //
+
42991 {3.84767842, 1.69257164}, //
+
42992 {3.84797215, 1.69227779}, //
+
42993 {3.8481822, 1.69206786}, //
+
42994 {3.84830809, 1.69194198}, //
+
42995 {3.84835005, 1.69190001}, //
+
42996 });
+
42997 polys.push_back({
+
42998 {6.19825935, 1.21187711}, //
+
42999 {6.1963501, 1.21214998}, //
+
43000 {6.1945138, 1.21263206}, //
+
43001 {6.19275999, 1.21332288}, //
+
43002 {6.19108868, 1.21422219}, //
+
43003 {6.18950081, 1.21533024}, //
+
43004 {6.18799496, 1.21664691}, //
+
43005 {6.18657207, 1.21817219}, //
+
43006 {6.18523216, 1.21990621}, //
+
43007 {6.18397474, 1.22184873}, //
+
43008 {6.18279982, 1.22399998}, //
+
43009 {6.18177176, 1.22626603}, //
+
43010 {6.18095303, 1.22853088}, //
+
43011 {6.18034458, 1.23079443}, //
+
43012 {6.17994547, 1.23305678}, //
+
43013 {6.17975664, 1.23531795}, //
+
43014 {6.17977762, 1.2375778}, //
+
43015 {6.18000841, 1.23983645}, //
+
43016 {6.18044949, 1.2420938}, //
+
43017 {6.18109989, 1.24434996}, //
+
43018 {6.17980862, 1.25042474}, //
+
43019 {6.17893457, 1.25658214}, //
+
43020 {6.17847776, 1.26282227}, //
+
43021 {6.17843819, 1.26914501}, //
+
43022 {6.17881584, 1.2755506}, //
+
43023 {6.17961121, 1.28203893}, //
+
43024 {6.18082333, 1.28860986}, //
+
43025 {6.18245316, 1.29526353}, //
+
43026 {6.18450022, 1.30200005}, //
+
43027 {6.18598938, 1.30574572}, //
+
43028 {6.18743563, 1.30944943}, //
+
43029 {6.18883896, 1.31311107}, //
+
43030 {6.1901989, 1.31673086}, //
+
43031 {6.19151545, 1.32030869}, //
+
43032 {6.19278908, 1.32384443}, //
+
43033 {6.19401932, 1.32733822}, //
+
43034 {6.19520617, 1.33079016}, //
+
43035 {6.1963501, 1.33420002}, //
+
43036 {6.19737816, 1.33760989}, //
+
43037 {6.19819689, 1.34106171}, //
+
43038 {6.19880533, 1.3445555}, //
+
43039 {6.19920444, 1.34809136}, //
+
43040 {6.19939327, 1.35166919}, //
+
43041 {6.19937229, 1.35528886}, //
+
43042 {6.1991415, 1.35895061}, //
+
43043 {6.19870043, 1.36265433}, //
+
43044 {6.19805002, 1.3664}, //
+
43045 {6.19796658, 1.36866605}, //
+
43046 {6.19771671, 1.37093091}, //
+
43047 {6.19729996, 1.37319446}, //
+
43048 {6.19671679, 1.37545681}, //
+
43049 {6.19596672, 1.37771785}, //
+
43050 {6.19504976, 1.37997782}, //
+
43051 {6.19396687, 1.38223636}, //
+
43052 {6.1927166, 1.38449383}, //
+
43053 {6.19129992, 1.38674998}, //
+
43054 {6.19058657, 1.38830245}, //
+
43055 {6.18995667, 1.38993764}, //
+
43056 {6.18941116, 1.39165556}, //
+
43057 {6.18894958, 1.39345622}, //
+
43058 {6.18857145, 1.39533949}, //
+
43059 {6.18827772, 1.39730561}, //
+
43060 {6.18806791, 1.39935434}, //
+
43061 {6.18794203, 1.4014858}, //
+
43062 {6.18790007, 1.40369999}, //
+
43063 {6.18794203, 1.40592408}, //
+
43064 {6.18806791, 1.40806293}, //
+
43065 {6.18827772, 1.41011667}, //
+
43066 {6.18857145, 1.41208518}, //
+
43067 {6.18894958, 1.41396856}, //
+
43068 {6.18941116, 1.41576672}, //
+
43069 {6.18995667, 1.41747963}, //
+
43070 {6.19058657, 1.41910744}, //
+
43071 {6.19129992, 1.42065001}, //
+
43072 {6.19347239, 1.42073393}, //
+
43073 {6.19547796, 1.42098582}, //
+
43074 {6.19731665, 1.42140555}, //
+
43075 {6.19898891, 1.42199326}, //
+
43076 {6.20049429, 1.4227488}, //
+
43077 {6.20183325, 1.4236722}, //
+
43078 {6.20300579, 1.42476356}, //
+
43079 {6.20401096, 1.42602289}, //
+
43080 {6.2048502, 1.42744994}, //
+
43081 {6.20564699, 1.42900252}, //
+
43082 {6.20652676, 1.4306376}, //
+
43083 {6.20748901, 1.43235552}, //
+
43084 {6.20853376, 1.43415618}, //
+
43085 {6.20966196, 1.43603945}, //
+
43086 {6.21087217, 1.43800557}, //
+
43087 {6.21216536, 1.4400543}, //
+
43088 {6.21354151, 1.44218576}, //
+
43089 {6.21500015, 1.44439995}, //
+
43090 {6.21504211, 1.44662404}, //
+
43091 {6.215168, 1.44876301}, //
+
43092 {6.21537781, 1.45081663}, //
+
43093 {6.21567154, 1.45278513}, //
+
43094 {6.21604919, 1.45466852}, //
+
43095 {6.21651125, 1.45646667}, //
+
43096 {6.21705675, 1.45817959}, //
+
43097 {6.21768665, 1.4598074}, //
+
43098 {6.2184, 1.46134996}, //
+
43099 {6.21911335, 1.46286047}, //
+
43100 {6.21974325, 1.46436977}, //
+
43101 {6.22028875, 1.46587777}, //
+
43102 {6.22075081, 1.46738458}, //
+
43103 {6.22112846, 1.46889007}, //
+
43104 {6.2214222, 1.47039449}, //
+
43105 {6.221632, 1.47189748}, //
+
43106 {6.22175789, 1.4733994}, //
+
43107 {6.22179985, 1.47490001}, //
+
43108 {6.22682571, 1.49307227}, //
+
43109 {6.23134804, 1.51141107}, //
+
43110 {6.23536682, 1.52991664}, //
+
43111 {6.23888159, 1.54858887}, //
+
43112 {6.24189281, 1.56742775}, //
+
43113 {6.24440002, 1.58643329}, //
+
43114 {6.24640369, 1.6056056}, //
+
43115 {6.24790382, 1.62494445}, //
+
43116 {6.24889994, 1.64444995}, //
+
43117 {6.24896288, 1.64748216}, //
+
43118 {6.24915171, 1.65055621}, //
+
43119 {6.2494669, 1.65367222}, //
+
43120 {6.24990749, 1.65683019}, //
+
43121 {6.25047398, 1.66003025}, //
+
43122 {6.25116682, 1.66327226}, //
+
43123 {6.25198507, 1.66655612}, //
+
43124 {6.25292969, 1.66988206}, //
+
43125 {6.25400019, 1.67324996}, //
+
43126 {6.25523758, 1.67650247}, //
+
43127 {6.25668383, 1.67945993}, //
+
43128 {6.25833893, 1.68212223}, //
+
43129 {6.26020241, 1.68448949}, //
+
43130 {6.26227474, 1.6865617}, //
+
43131 {6.26455545, 1.68833888}, //
+
43132 {6.26704502, 1.689821}, //
+
43133 {6.26974344, 1.69100797}, //
+
43134 {6.27264977, 1.69190001}, //
+
43135 {6.27643776, 1.69336915}, //
+
43136 {6.28026724, 1.69475436}, //
+
43137 {6.28413868, 1.69605553}, //
+
43138 {6.28805256, 1.6972729}, //
+
43139 {6.29200792, 1.69840622}, //
+
43140 {6.29600573, 1.6994555}, //
+
43141 {6.30004501, 1.70042098}, //
+
43142 {6.30412674, 1.70130253}, //
+
43143 {6.30824995, 1.70210004}, //
+
43144 {6.31233168, 1.70268762}, //
+
43145 {6.31628704, 1.70293951}, //
+
43146 {6.32011652, 1.70285559}, //
+
43147 {6.32382059, 1.70243585}, //
+
43148 {6.3273983, 1.7016803}, //
+
43149 {6.33085012, 1.70058894}, //
+
43150 {6.33417606, 1.69916177}, //
+
43151 {6.33737612, 1.69739878}, //
+
43152 {6.34044981, 1.69529998}, //
+
43153 {6.34793091, 1.68666363}, //
+
43154 {6.35528469, 1.67882097}, //
+
43155 {6.36251116, 1.67177224}, //
+
43156 {6.36961031, 1.66551733}, //
+
43157 {6.37658262, 1.66005611}, //
+
43158 {6.38342762, 1.65538883}, //
+
43159 {6.39014578, 1.65151548}, //
+
43160 {6.39673662, 1.64843583}, //
+
43161 {6.40320015, 1.64614999}, //
+
43162 {6.40941238, 1.64440799}, //
+
43163 {6.41524935, 1.64295983}, //
+
43164 {6.42071104, 1.64180553}, //
+
43165 {6.42579746, 1.64094508}, //
+
43166 {6.43050861, 1.64037836}, //
+
43167 {6.43484449, 1.64010561}, //
+
43168 {6.4388051, 1.64012659}, //
+
43169 {6.44238997, 1.6404413}, //
+
43170 {6.44560003, 1.64104998}, //
+
43171 {6.44634485, 1.64033639}, //
+
43172 {6.44709158, 1.63970673}, //
+
43173 {6.44783878, 1.63916111}, //
+
43174 {6.44858742, 1.63869941}, //
+
43175 {6.44933748, 1.63832164}, //
+
43176 {6.45008898, 1.63802779}, //
+
43177 {6.45084143, 1.63781786}, //
+
43178 {6.45159483, 1.63769197}, //
+
43179 {6.45235014, 1.63765001}, //
+
43180 {6.45243406, 1.63175309}, //
+
43181 {6.45268583, 1.62610674}, //
+
43182 {6.45310545, 1.62071109}, //
+
43183 {6.45369339, 1.61556602}, //
+
43184 {6.4544487, 1.61067164}, //
+
43185 {6.45537233, 1.60602772}, //
+
43186 {6.45646381, 1.60163462}, //
+
43187 {6.45772266, 1.59749198}, //
+
43188 {6.45914984, 1.59360003}, //
+
43189 {6.45990515, 1.59124994}, //
+
43190 {6.46065855, 1.58873332}, //
+
43191 {6.461411, 1.58605003}, //
+
43192 {6.46216249, 1.58319998}, //
+
43193 {6.46291256, 1.58018339}, //
+
43194 {6.46366119, 1.57700002}, //
+
43195 {6.46440887, 1.57365}, //
+
43196 {6.46515512, 1.57013333}, //
+
43197 {6.46589994, 1.56645}, //
+
43198 {6.465837, 1.56578827}, //
+
43199 {6.46564817, 1.565292}, //
+
43200 {6.46533346, 1.56496108}, //
+
43201 {6.46489239, 1.56479573}, //
+
43202 {6.4643259, 1.56479573}, //
+
43203 {6.46363354, 1.56496108}, //
+
43204 {6.46281481, 1.565292}, //
+
43205 {6.46187019, 1.56578827}, //
+
43206 {6.46080017, 1.56645}, //
+
43207 {6.45963526, 1.56726789}, //
+
43208 {6.45838499, 1.56821048}, //
+
43209 {6.45704985, 1.56927776}, //
+
43210 {6.45562983, 1.57046974}, //
+
43211 {6.45412397, 1.5717864}, //
+
43212 {6.45253325, 1.57322776}, //
+
43213 {6.45085764, 1.57479382}, //
+
43214 {6.4490962, 1.57648456}, //
+
43215 {6.44724989, 1.5783}, //
+
43216 {6.44535112, 1.58020985}, //
+
43217 {6.4434104, 1.58216178}, //
+
43218 {6.44142771, 1.58415556}, //
+
43219 {6.43940306, 1.58619142}, //
+
43220 {6.43733644, 1.58826911}, //
+
43221 {6.43522787, 1.59038889}, //
+
43222 {6.43307734, 1.59255064}, //
+
43223 {6.43088436, 1.59475434}, //
+
43224 {6.4286499, 1.597}, //
+
43225 {6.42564917, 1.59999013}, //
+
43226 {6.42269182, 1.60293829}, //
+
43227 {6.41977787, 1.6058445}, //
+
43228 {6.41690683, 1.60870862}, //
+
43229 {6.41407919, 1.6115309}, //
+
43230 {6.41129446, 1.6143111}, //
+
43231 {6.40855312, 1.61704934}, //
+
43232 {6.4058547, 1.61974573}, //
+
43233 {6.40320015, 1.62240005}, //
+
43234 {6.40058708, 1.62493885}, //
+
43235 {6.39801502, 1.62726665}, //
+
43236 {6.39548349, 1.62938333}, //
+
43237 {6.3929925, 1.63128889}, //
+
43238 {6.39054251, 1.63298333}, //
+
43239 {6.38813353, 1.63446665}, //
+
43240 {6.3857646, 1.63573885}, //
+
43241 {6.38343716, 1.63680005}, //
+
43242 {6.38114977, 1.63765001}, //
+
43243 {6.37969112, 1.63832164}, //
+
43244 {6.37831545, 1.6388253}, //
+
43245 {6.37702227, 1.63916111}, //
+
43246 {6.37581158, 1.63932896}, //
+
43247 {6.37468386, 1.63932896}, //
+
43248 {6.37363911, 1.63916111}, //
+
43249 {6.37267637, 1.6388253}, //
+
43250 {6.37179708, 1.63832164}, //
+
43251 {6.37099981, 1.63765001}, //
+
43252 {6.37028646, 1.63686299}, //
+
43253 {6.36965656, 1.63599074}, //
+
43254 {6.36911106, 1.63503337}, //
+
43255 {6.36864948, 1.63399076}, //
+
43256 {6.36827183, 1.63286293}, //
+
43257 {6.36797762, 1.63164997}, //
+
43258 {6.36776781, 1.6303519}, //
+
43259 {6.36764193, 1.62896848}, //
+
43260 {6.367558, 1.62603152}, //
+
43261 {6.36743212, 1.62464809}, //
+
43262 {6.36722231, 1.62335002}, //
+
43263 {6.36692858, 1.62213707}, //
+
43264 {6.36655045, 1.62100923}, //
+
43265 {6.36608887, 1.61996663}, //
+
43266 {6.36554337, 1.61900926}, //
+
43267 {6.36491346, 1.618137}, //
+
43268 {6.36420012, 1.61734998}, //
+
43269 {6.36420012, 1.61659443}, //
+
43270 {6.36420012, 1.61508334}, //
+
43271 {6.36420012, 1.61432779}, //
+
43272 {6.36420012, 1.61055005}, //
+
43273 {6.36417913, 1.60985744}, //
+
43274 {6.36411619, 1.60929072}, //
+
43275 {6.36401129, 1.60885}, //
+
43276 {6.36386442, 1.60853517}, //
+
43277 {6.36367512, 1.60834634}, //
+
43278 {6.36344433, 1.60828328}, //
+
43279 {6.36317158, 1.60834634}, //
+
43280 {6.36285686, 1.60853517}, //
+
43281 {6.36250019, 1.60885}, //
+
43282 {6.36214304, 1.60929072}, //
+
43283 {6.36182833, 1.60985744}, //
+
43284 {6.36155558, 1.61055005}, //
+
43285 {6.36132479, 1.61136854}, //
+
43286 {6.36113596, 1.61231291}, //
+
43287 {6.36098909, 1.61338329}, //
+
43288 {6.36088371, 1.61457968}, //
+
43289 {6.36082077, 1.61590183}, //
+
43290 {6.36079979, 1.61734998}, //
+
43291 {6.36077881, 1.61811602}, //
+
43292 {6.36071587, 1.61892533}, //
+
43293 {6.36061096, 1.6197778}, //
+
43294 {6.3604641, 1.62067342}, //
+
43295 {6.36027527, 1.62161231}, //
+
43296 {6.36004448, 1.62259448}, //
+
43297 {6.35977173, 1.62361979}, //
+
43298 {6.35945702, 1.62468827}, //
+
43299 {6.35909986, 1.62580001}, //
+
43300 {6.35872221, 1.62693274}, //
+
43301 {6.35834455, 1.62806416}, //
+
43302 {6.3579669, 1.6291945}, //
+
43303 {6.35758877, 1.63032341}, //
+
43304 {6.35721111, 1.63145125}, //
+
43305 {6.35683346, 1.63257778}, //
+
43306 {6.35645533, 1.63370311}, //
+
43307 {6.35607767, 1.63482714}, //
+
43308 {6.35570002, 1.63594997}, //
+
43309 {6.35535383, 1.63699937}, //
+
43310 {6.35504818, 1.63788092}, //
+
43311 {6.35478354, 1.63859439}, //
+
43312 {6.35455942, 1.63914013}, //
+
43313 {6.35437584, 1.6395179}, //
+
43314 {6.35423326, 1.63972783}, //
+
43315 {6.3541317, 1.63976979}, //
+
43316 {6.35407019, 1.63964379}, //
+
43317 {6.35405016, 1.63935006}, //
+
43318 {6.3540082, 1.63890994}, //
+
43319 {6.35388231, 1.638345}, //
+
43320 {6.35367203, 1.6376555}, //
+
43321 {6.3533783, 1.63684142}, //
+
43322 {6.35300064, 1.63590252}, //
+
43323 {6.35253906, 1.63483894}, //
+
43324 {6.35199308, 1.63365066}, //
+
43325 {6.35136366, 1.63233769}, //
+
43326 {6.35064983, 1.63090003}, //
+
43327 {6.3499155, 1.62947285}, //
+
43328 {6.34922266, 1.62821352}, //
+
43329 {6.34857225, 1.62712216}, //
+
43330 {6.34796381, 1.62619877}, //
+
43331 {6.34739685, 1.62544322}, //
+
43332 {6.34687233, 1.62485552}, //
+
43333 {6.34638929, 1.62443578}, //
+
43334 {6.3459487, 1.62418389}, //
+
43335 {6.34555006, 1.62409997}, //
+
43336 {6.34519339, 1.62412095}, //
+
43337 {6.3448782, 1.62418389}, //
+
43338 {6.34460545, 1.62428892}, //
+
43339 {6.34437466, 1.62443578}, //
+
43340 {6.34418583, 1.62462473}, //
+
43341 {6.34403896, 1.62485552}, //
+
43342 {6.34393406, 1.62512839}, //
+
43343 {6.34387112, 1.62544322}, //
+
43344 {6.34385014, 1.62580001}, //
+
43345 {6.34385014, 1.62680745}, //
+
43346 {6.34385014, 1.62750006}, //
+
43347 {6.34385014, 1.62831855}, //
+
43348 {6.34385014, 1.64785004}, //
+
43349 {6.34380817, 1.64927721}, //
+
43350 {6.34368229, 1.65053642}, //
+
43351 {6.343472, 1.65162778}, //
+
43352 {6.34317827, 1.65255129}, //
+
43353 {6.34280062, 1.65330684}, //
+
43354 {6.34233904, 1.65389442}, //
+
43355 {6.34179306, 1.65431416}, //
+
43356 {6.34116364, 1.65456605}, //
+
43357 {6.34044981, 1.65464997}, //
+
43358 {6.33970499, 1.65253019}, //
+
43359 {6.33895874, 1.65070426}, //
+
43360 {6.33821106, 1.64917219}, //
+
43361 {6.33746243, 1.64793396}, //
+
43362 {6.33671236, 1.64698946}, //
+
43363 {6.33596134, 1.64633894}, //
+
43364 {6.33520842, 1.64598215}, //
+
43365 {6.33445501, 1.64591908}, //
+
43366 {6.33370018, 1.64614999}, //
+
43367 {6.33290243, 1.64659071}, //
+
43368 {6.33202076, 1.64715743}, //
+
43369 {6.33105564, 1.64785004}, //
+
43370 {6.33000612, 1.64866853}, //
+
43371 {6.32887268, 1.6496129}, //
+
43372 {6.32765579, 1.65068328}, //
+
43373 {6.3263545, 1.65187967}, //
+
43374 {6.32496929, 1.65320182}, //
+
43375 {6.32350016, 1.65464997}, //
+
43376 {6.32275486, 1.65684259}, //
+
43377 {6.32200861, 1.6589092}, //
+
43378 {6.32126093, 1.66085005}, //
+
43379 {6.32051229, 1.66266477}, //
+
43380 {6.31976223, 1.66435373}, //
+
43381 {6.31901121, 1.66591668}, //
+
43382 {6.31825876, 1.66735375}, //
+
43383 {6.31750488, 1.66866481}, //
+
43384 {6.31675005, 1.66984999}, //
+
43385 {6.3159523, 1.67087901}, //
+
43386 {6.31507111, 1.6716994}, //
+
43387 {6.31410551, 1.67231107}, //
+
43388 {6.31305599, 1.67271423}, //
+
43389 {6.31192303, 1.67290866}, //
+
43390 {6.31070566, 1.67289448}, //
+
43391 {6.30940437, 1.67267156}, //
+
43392 {6.30801916, 1.67224014}, //
+
43393 {6.30655003, 1.67159998}, //
+
43394 {6.304461, 1.67004693}, //
+
43395 {6.30270576, 1.66840982}, //
+
43396 {6.30128336, 1.66668892}, //
+
43397 {6.30019426, 1.66488397}, //
+
43398 {6.29943895, 1.6629951}, //
+
43399 {6.29901648, 1.66102219}, //
+
43400 {6.29892778, 1.65896547}, //
+
43401 {6.2991724, 1.65682471}, //
+
43402 {6.29974985, 1.65460002}, //
+
43403 {6.30352783, 1.64332223}, //
+
43404 {6.30428314, 1.64106667}, //
+
43405 {6.30503893, 1.63881111}, //
+
43406 {6.30655003, 1.63429999}, //
+
43407 {6.30730534, 1.6327889}, //
+
43408 {6.30881643, 1.6297667}, //
+
43409 {6.31032801, 1.62674439}, //
+
43410 {6.31108332, 1.62523329}, //
+
43411 {6.3118391, 1.6237222}, //
+
43412 {6.31259441, 1.6222111}, //
+
43413 {6.3133502, 1.6207}, //
+
43414 {6.31259441, 1.61924136}, //
+
43415 {6.3118391, 1.61786544}, //
+
43416 {6.31108332, 1.61657226}, //
+
43417 {6.31032801, 1.61536169}, //
+
43418 {6.30957222, 1.61423397}, //
+
43419 {6.30881643, 1.61318886}, //
+
43420 {6.30806112, 1.61222649}, //
+
43421 {6.30730534, 1.61134696}, //
+
43422 {6.30655003, 1.61055005}, //
+
43423 {6.30575323, 1.60983646}, //
+
43424 {6.30487347, 1.6092068}, //
+
43425 {6.30391121, 1.60866106}, //
+
43426 {6.30286598, 1.60819936}, //
+
43427 {6.30173826, 1.60782158}, //
+
43428 {6.30052757, 1.60752773}, //
+
43429 {6.29923439, 1.60731792}, //
+
43430 {6.29785872, 1.60719192}, //
+
43431 {6.29640007, 1.60714996}, //
+
43432 {6.2956233, 1.60637343}, //
+
43433 {6.29480505, 1.60555494}, //
+
43434 {6.29304218, 1.60379195}, //
+
43435 {6.29209757, 1.60284758}, //
+
43436 {6.29008293, 1.6008327}, //
+
43437 {6.28901243, 1.59976232}, //
+
43438 {6.28789997, 1.59864998}, //
+
43439 {6.28683996, 1.59754813}, //
+
43440 {6.28590488, 1.59648705}, //
+
43441 {6.28509426, 1.59546661}, //
+
43442 {6.28440857, 1.59448707}, //
+
43443 {6.28384733, 1.59354818}, //
+
43444 {6.28341103, 1.59265006}, //
+
43445 {6.28309917, 1.59179258}, //
+
43446 {6.28291225, 1.59097588}, //
+
43447 {6.28284979, 1.59019995}, //
+
43448 {6.28150702, 1.58500612}, //
+
43449 {6.28049946, 1.57998025}, //
+
43450 {6.27982759, 1.57512224}, //
+
43451 {6.2794919, 1.57043207}, //
+
43452 {6.2794919, 1.56590986}, //
+
43453 {6.27982759, 1.5615555}, //
+
43454 {6.28049946, 1.55736911}, //
+
43455 {6.28150702, 1.55335057}, //
+
43456 {6.28284979, 1.54949999}, //
+
43457 {6.28284979, 1.54498637}, //
+
43458 {6.28284979, 1.54272783}, //
+
43459 {6.28284979, 1.53820682}, //
+
43460 {6.28284979, 1.52915001}, //
+
43461 {6.28280783, 1.52689445}, //
+
43462 {6.28268194, 1.52463889}, //
+
43463 {6.28247213, 1.52238333}, //
+
43464 {6.2821784, 1.52012777}, //
+
43465 {6.28180075, 1.51787221}, //
+
43466 {6.28133869, 1.51561666}, //
+
43467 {6.28079319, 1.5133611}, //
+
43468 {6.28016376, 1.51110554}, //
+
43469 {6.27944994, 1.50884998}, //
+
43470 {6.27735138, 1.50361419}, //
+
43471 {6.27558804, 1.49846232}, //
+
43472 {6.27416134, 1.49339449}, //
+
43473 {6.27306986, 1.48841047}, //
+
43474 {6.27231407, 1.48351049}, //
+
43475 {6.27189445, 1.47869444}, //
+
43476 {6.27181053, 1.47396231}, //
+
43477 {6.2720623, 1.46931422}, //
+
43478 {6.27264977, 1.46475005}, //
+
43479 {6.2726078, 1.46178019}, //
+
43480 {6.27248192, 1.45889318}, //
+
43481 {6.27227211, 1.4560889}, //
+
43482 {6.27197838, 1.45336723}, //
+
43483 {6.27160072, 1.45072842}, //
+
43484 {6.27113867, 1.44817221}, //
+
43485 {6.27059317, 1.44569874}, //
+
43486 {6.26996374, 1.443308}, //
+
43487 {6.26924992, 1.44099998}, //
+
43488 {6.26711988, 1.4356488}, //
+
43489 {6.26524019, 1.43012834}, //
+
43490 {6.26361132, 1.42443883}, //
+
43491 {6.26223278, 1.41858029}, //
+
43492 {6.26110506, 1.41255248}, //
+
43493 {6.26022768, 1.4063555}, //
+
43494 {6.25960112, 1.39998949}, //
+
43495 {6.25922537, 1.39345431}, //
+
43496 {6.25909996, 1.38674998}, //
+
43497 {6.25909996, 1.36304998}, //
+
43498 {6.25977182, 1.35924137}, //
+
43499 {6.26027536, 1.35534871}, //
+
43500 {6.26061106, 1.35137224}, //
+
43501 {6.2607789, 1.34731174}, //
+
43502 {6.2607789, 1.3431673}, //
+
43503 {6.26061106, 1.33893883}, //
+
43504 {6.26027536, 1.33462656}, //
+
43505 {6.25977182, 1.33023024}, //
+
43506 {6.25909996, 1.32574999}, //
+
43507 {6.25750542, 1.32122779}, //
+
43508 {6.25574446, 1.31670558}, //
+
43509 {6.2538166, 1.31218338}, //
+
43510 {6.25172234, 1.30766106}, //
+
43511 {6.24946117, 1.30313885}, //
+
43512 {6.24703312, 1.29861665}, //
+
43513 {6.24443913, 1.29409444}, //
+
43514 {6.24167776, 1.28957224}, //
+
43515 {6.23874998, 1.28505003}, //
+
43516 {6.23510885, 1.27818823}, //
+
43517 {6.23171806, 1.2711587}, //
+
43518 {6.22857761, 1.26396108}, //
+
43519 {6.22568846, 1.25659573}, //
+
43520 {6.22304916, 1.2490623}, //
+
43521 {6.22066116, 1.24136114}, //
+
43522 {6.2185235, 1.23349202}, //
+
43523 {6.21663666, 1.22545493}, //
+
43524 {6.21500015, 1.21724999}, //
+
43525 {6.21276474, 1.2158438}, //
+
43526 {6.21057034, 1.21464753}, //
+
43527 {6.20841646, 1.21366107}, //
+
43528 {6.2063036, 1.21288455}, //
+
43529 {6.20423126, 1.21231794}, //
+
43530 {6.20219994, 1.21196115}, //
+
43531 {6.20020914, 1.21181417}, //
+
43532 });
+
43533 polys.push_back({
+
43534 {0.3662, 1.54275}, //
+
43535 {0.35769999, 1.55799997}, //
+
43536 {0.35584259, 1.56149316}, //
+
43537 {0.35402593, 1.56519508}, //
+
43538 {0.35225001, 1.56910551}, //
+
43539 {0.350514829, 1.57322466}, //
+
43540 {0.348820359, 1.57755244}, //
+
43541 {0.347166657, 1.58208895}, //
+
43542 {0.345553696, 1.58683395}, //
+
43543 {0.343981475, 1.5917877}, //
+
43544 {0.342449993, 1.59695005}, //
+
43545 {0.341022849, 1.60218585}, //
+
43546 {0.339763582, 1.60733771}, //
+
43547 {0.338672221, 1.61240554}, //
+
43548 {0.337748766, 1.61738956}, //
+
43549 {0.336993217, 1.62228954}, //
+
43550 {0.336405545, 1.62710559}, //
+
43551 {0.33598581, 1.63183761}, //
+
43552 {0.33573395, 1.63648582}, //
+
43553 {0.335649997, 1.64104998}, //
+
43554 {0.335691988, 1.6440506}, //
+
43555 {0.335817903, 1.64700806}, //
+
43556 {0.336027771, 1.64992225}, //
+
43557 {0.336321592, 1.65279317}, //
+
43558 {0.336699396, 1.65562093}, //
+
43559 {0.337161124, 1.65840554}, //
+
43560 {0.337706804, 1.66114688}, //
+
43561 {0.338336408, 1.66384506}, //
+
43562 {0.339049995, 1.66649997}, //
+
43563 {0.339846909, 1.66904998}, //
+
43564 {0.340726554, 1.67143333}, //
+
43565 {0.341688901, 1.67365003}, //
+
43566 {0.342733949, 1.67569995}, //
+
43567 {0.343861729, 1.67758334}, //
+
43568 {0.34507221, 1.67929995}, //
+
43569 {0.346365422, 1.68085003}, //
+
43570 {0.347741365, 1.68223333}, //
+
43571 {0.34920001, 1.68344998}, //
+
43572 {0.350648135, 1.68456173}, //
+
43573 {0.351970375, 1.6856302}, //
+
43574 {0.35316667, 1.68665552}, //
+
43575 {0.35423705, 1.68763769}, //
+
43576 {0.355181485, 1.68857658}, //
+
43577 {0.356000006, 1.6894722}, //
+
43578 {0.356692582, 1.69032466}, //
+
43579 {0.357259274, 1.69113398}, //
+
43580 {0.35769999, 1.69190001}, //
+
43581 {0.358371615, 1.69324327}, //
+
43582 {0.358644456, 1.69378889}, //
+
43583 {0.358875304, 1.69425058}, //
+
43584 {0.359379023, 1.69525802}, //
+
43585 {0.359400004, 1.69529998}, //
+
43586 {0.367419749, 1.6845938}, //
+
43587 {0.36954999, 1.68175006}, //
+
43588 {0.369589269, 1.68169641}, //
+
43589 {0.369516045, 1.6813302}, //
+
43590 {0.369264185, 1.680071}, //
+
43591 {0.369075298, 1.6791265}, //
+
43592 {0.368571609, 1.67660797}, //
+
43593 {0.368256778, 1.67503393}, //
+
43594 {0.367900014, 1.67324996}, //
+
43595 {0.367501229, 1.67126727}, //
+
43596 {0.367060483, 1.66907465}, //
+
43597 {0.366577774, 1.66667223}, //
+
43598 {0.366053075, 1.66405988}, //
+
43599 {0.365486413, 1.6612376}, //
+
43600 {0.36487779, 1.65820551}, //
+
43601 {0.364227146, 1.65496361}, //
+
43602 {0.36353457, 1.65151167}, //
+
43603 {0.362800002, 1.64785004}, //
+
43604 {0.362065434, 1.64414573}, //
+
43605 {0.361372828, 1.64056599}, //
+
43606 {0.360722214, 1.63711107}, //
+
43607 {0.360113591, 1.63378084}, //
+
43608 {0.3595469, 1.6305753}, //
+
43609 {0.35902223, 1.62749445}, //
+
43610 {0.358539492, 1.6245383}, //
+
43611 {0.358098775, 1.62170684}, //
+
43612 {0.35769999, 1.61899996}, //
+
43613 {0.357343197, 1.61647093}, //
+
43614 {0.357028395, 1.61415064}, //
+
43615 {0.356755555, 1.61203885}, //
+
43616 {0.356524706, 1.61013579}, //
+
43617 {0.356335789, 1.60844135}, //
+
43618 {0.356188893, 1.60695553}, //
+
43619 {0.356083959, 1.60567844}, //
+
43620 {0.356020987, 1.60460985}, //
+
43621 {0.356000006, 1.60374999}, //
+
43622 {0.356713593, 1.6022284}, //
+
43623 {0.357343197, 1.60066354}, //
+
43624 {0.357888877, 1.59905553}, //
+
43625 {0.358350605, 1.59740436}, //
+
43626 {0.358728409, 1.59570992}, //
+
43627 {0.35902223, 1.59397221}, //
+
43628 {0.359232098, 1.59219134}, //
+
43629 {0.359358013, 1.59036732}, //
+
43630 {0.359400004, 1.58850002}, //
+
43631 {0.359420985, 1.58657968}, //
+
43632 {0.359483957, 1.5845741}, //
+
43633 {0.359588891, 1.58248329}, //
+
43634 {0.359735817, 1.58030736}, //
+
43635 {0.359924704, 1.57804632}, //
+
43636 {0.360155553, 1.57570004}, //
+
43637 {0.360428393, 1.57326853}, //
+
43638 {0.360743225, 1.57075191}, //
+
43639 {0.361099988, 1.56815004}, //
+
43640 {0.361477792, 1.56557906}, //
+
43641 {0.361855567, 1.56313276}, //
+
43642 {0.362233341, 1.56081116}, //
+
43643 {0.362611115, 1.55861425}, //
+
43644 {0.362988889, 1.55654192}, //
+
43645 {0.363366663, 1.5545944}, //
+
43646 {0.363744438, 1.55277157}, //
+
43647 {0.364122212, 1.55107343}, //
+
43648 {0.364499986, 1.54949999}, //
+
43649 {0.365864187, 1.54408336}, //
+
43650 {0.366116047, 1.54308331}, //
+
43651 {0.366179019, 1.54283333}, //
+
43652 });
+
43653 polys.push_back({
+
43654 {0.399344444, 1.4361167}, //
+
43655 {0.399071604, 1.4364444}, //
+
43656 {0.398756802, 1.43693888}, //
+
43657 {0.398400009, 1.43760002}, //
+
43658 {0.398043215, 1.43843889}, //
+
43659 {0.397728384, 1.43944442}, //
+
43660 {0.397455543, 1.44061661}, //
+
43661 {0.397224694, 1.44195557}, //
+
43662 {0.397035807, 1.44346106}, //
+
43663 {0.396888882, 1.44513333}, //
+
43664 {0.396783948, 1.44697225}, //
+
43665 {0.396720976, 1.44897783}, //
+
43666 {0.396699995, 1.45114994}, //
+
43667 {0.396699995, 1.47319996}, //
+
43668 {0.396741986, 1.47586477}, //
+
43669 {0.396867901, 1.47857034}, //
+
43670 {0.397077769, 1.48131669}, //
+
43671 {0.39737159, 1.48410368}, //
+
43672 {0.397749394, 1.48693144}, //
+
43673 {0.398211122, 1.48979998}, //
+
43674 {0.398756802, 1.49270928}, //
+
43675 {0.399386406, 1.49565923}, //
+
43676 {0.400099993, 1.49864995}, //
+
43677 {0.401317298, 1.50828207}, //
+
43678 {0.401946902, 1.51757836}, //
+
43679 {0.401988894, 1.52653885}, //
+
43680 {0.401443213, 1.53516352}, //
+
43681 {0.400309891, 1.5434525}, //
+
43682 {0.398588896, 1.55140555}, //
+
43683 {0.396280259, 1.55902278}, //
+
43684 {0.39338395, 1.56630433}, //
+
43685 {0.389899999, 1.57325006}, //
+
43686 {0.388441354, 1.57636607}, //
+
43687 {0.38706544, 1.57969201}, //
+
43688 {0.385772228, 1.58322775}, //
+
43689 {0.384561718, 1.58697343}, //
+
43690 {0.383433938, 1.59092903}, //
+
43691 {0.38238889, 1.59509444}, //
+
43692 {0.381426543, 1.59946978}, //
+
43693 {0.380546927, 1.60405493}, //
+
43694 {0.379750013, 1.60885}, //
+
43695 {0.378994435, 1.61377037}, //
+
43696 {0.378238887, 1.6187315}, //
+
43697 {0.377483338, 1.62373328}, //
+
43698 {0.37672779, 1.62877595}, //
+
43699 {0.375972211, 1.63385928}, //
+
43700 {0.375216663, 1.63898337}, //
+
43701 {0.374461114, 1.64414811}, //
+
43702 {0.373705566, 1.64935374}, //
+
43703 {0.372949988, 1.65460002}, //
+
43704 {0.372246921, 1.65962648}, //
+
43705 {0.371626556, 1.6641506}, //
+
43706 {0.371088892, 1.66817224}, //
+
43707 {0.37063396, 1.6716913}, //
+
43708 {0.370261729, 1.67470801}, //
+
43709 {0.369972229, 1.67722225}, //
+
43710 {0.369765431, 1.67923391}, //
+
43711 {0.369641364, 1.68074322}, //
+
43712 {0.369602978, 1.6816777}, //
+
43713 {0.371816039, 1.67865491}, //
+
43714 {0.374080867, 1.67539203}, //
+
43715 {0.376344442, 1.67196107}, //
+
43716 {0.378606796, 1.66836238}, //
+
43717 {0.380867898, 1.66459572}, //
+
43718 {0.383127779, 1.6606611}, //
+
43719 {0.385386407, 1.65655863}, //
+
43720 {0.387643814, 1.65228832}, //
+
43721 {0.389899999, 1.64785004}, //
+
43722 {0.392082721, 1.64332783}, //
+
43723 {0.394097537, 1.63880551}, //
+
43724 {0.395944446, 1.6342833}, //
+
43725 {0.39762345, 1.6297611}, //
+
43726 {0.399134576, 1.6252389}, //
+
43727 {0.400477767, 1.62071669}, //
+
43728 {0.401653081, 1.61619449}, //
+
43729 {0.402660489, 1.61167216}, //
+
43730 {0.403499991, 1.60714996}, //
+
43731 {0.404213578, 1.60241854}, //
+
43732 {0.404843211, 1.59726846}, //
+
43733 {0.405388892, 1.59169996}, //
+
43734 {0.405850619, 1.58571291}, //
+
43735 {0.406228393, 1.57930744}, //
+
43736 {0.406522214, 1.5724833}, //
+
43737 {0.406732112, 1.56524074}, //
+
43738 {0.406858027, 1.55757964}, //
+
43739 {0.406899989, 1.54949999}, //
+
43740 {0.406879008, 1.54125309}, //
+
43741 {0.406816036, 1.53309011}, //
+
43742 {0.406711102, 1.52501106}, //
+
43743 {0.406564206, 1.51701605}, //
+
43744 {0.406375319, 1.50910497}, //
+
43745 {0.40614444, 1.5012778}, //
+
43746 {0.4058716, 1.49353456}, //
+
43747 {0.405556798, 1.48587537}, //
+
43748 {0.405200005, 1.47829998}, //
+
43749 {0.40480122, 1.47110188}, //
+
43750 {0.404360503, 1.4645741}, //
+
43751 {0.403877765, 1.45871663}, //
+
43752 {0.403353095, 1.4535296}, //
+
43753 {0.402786434, 1.44901299}, //
+
43754 {0.402177781, 1.44516671}, //
+
43755 {0.401527166, 1.44199073}, //
+
43756 {0.40083456, 1.43948519}, //
+
43757 {0.400099993, 1.43764997}, //
+
43758 {0.400079012, 1.43697774}, //
+
43759 {0.40001604, 1.43647218}, //
+
43760 {0.399911106, 1.43613338}, //
+
43761 {0.39976421, 1.43596113}, //
+
43762 {0.399575323, 1.43595552}, //
+
43763 });
+
43764 polys.push_back({
+
43765 {5.63859987, 1.1494}, //
+
43766 {5.63851595, 1.14956784}, //
+
43767 {5.63841105, 1.14977777}, //
+
43768 {5.63826418, 1.15007162}, //
+
43769 {5.63784456, 1.15091109}, //
+
43770 {5.63757181, 1.15145683}, //
+
43771 {5.63689995, 1.15279996}, //
+
43772 {5.63652229, 1.15361786}, //
+
43773 {5.63614464, 1.15456045}, //
+
43774 {5.63576651, 1.15562773}, //
+
43775 {5.63538885, 1.1568197}, //
+
43776 {5.6350112, 1.15813637}, //
+
43777 {5.63463354, 1.15957773}, //
+
43778 {5.63425541, 1.16114378}, //
+
43779 {5.63387775, 1.16283453}, //
+
43780 {5.6335001, 1.16464996}, //
+
43781 {5.63315392, 1.16653824}, //
+
43782 {5.63284826, 1.16842532}, //
+
43783 {5.63258314, 1.17031109}, //
+
43784 {5.63235903, 1.17219567}, //
+
43785 {5.63217592, 1.17407906}, //
+
43786 {5.63203335, 1.17596114}, //
+
43787 {5.6319313, 1.17784202}, //
+
43788 {5.63187027, 1.17972159}, //
+
43789 {5.63184977, 1.18159997}, //
+
43790 {5.63184977, 1.20029998}, //
+
43791 {5.63189125, 1.20104504}, //
+
43792 {5.63201523, 1.20179141}, //
+
43793 {5.63222218, 1.20253885}, //
+
43794 {5.63251162, 1.2032876}, //
+
43795 {5.63288403, 1.20403767}, //
+
43796 {5.63333893, 1.20478892}, //
+
43797 {5.63387632, 1.20554137}, //
+
43798 {5.63449669, 1.20629501}, //
+
43799 {5.63520002, 1.20704997}, //
+
43800 {5.63595533, 1.20778453}, //
+
43801 {5.63671112, 1.20847714}, //
+
43802 {5.63746643, 1.20912778}, //
+
43803 {5.63822222, 1.20973647}, //
+
43804 {5.638978, 1.21030307}, //
+
43805 {5.63973331, 1.21082783}, //
+
43806 {5.6404891, 1.21131051}, //
+
43807 {5.64124441, 1.21175122}, //
+
43808 {5.6420002, 1.21214998}, //
+
43809 {5.64275503, 1.21250677}, //
+
43810 {5.64350843, 1.2128216}, //
+
43811 {5.64426088, 1.21309447}, //
+
43812 {5.64501238, 1.21332526}, //
+
43813 {5.64576244, 1.21351421}, //
+
43814 {5.64651108, 1.21366107}, //
+
43815 {5.64725876, 1.2137661}, //
+
43816 {5.64800501, 1.21382904}, //
+
43817 {5.64874983, 1.21385002}, //
+
43818 {5.64950562, 1.21385002}, //
+
43819 {5.65026093, 1.21385002}, //
+
43820 {5.65101671, 1.21385002}, //
+
43821 {5.65252781, 1.21385002}, //
+
43822 {5.65328312, 1.21385002}, //
+
43823 {5.65403891, 1.21385002}, //
+
43824 {5.65479422, 1.21385002}, //
+
43825 {5.65555, 1.21385002}, //
+
43826 {5.65626335, 1.21385002}, //
+
43827 {5.65689325, 1.21385002}, //
+
43828 {5.65743876, 1.21385002}, //
+
43829 {5.65827847, 1.21385002}, //
+
43830 {5.6585722, 1.21385002}, //
+
43831 {5.65890789, 1.21385002}, //
+
43832 {5.65894985, 1.21385002}, //
+
43833 {5.65969992, 1.21441114}, //
+
43834 {5.66103315, 1.21540868}, //
+
43835 {5.66303349, 1.216905}, //
+
43836 {5.66428328, 1.21784008}, //
+
43837 {5.66569996, 1.21889997}, //
+
43838 {5.66723156, 1.22011662}, //
+
43839 {5.66880369, 1.22150004}, //
+
43840 {5.67041683, 1.22305}, //
+
43841 {5.6720705, 1.22476661}, //
+
43842 {5.67376471, 1.22665}, //
+
43843 {5.67549992, 1.22870004}, //
+
43844 {5.67727613, 1.23091662}, //
+
43845 {5.67909241, 1.23329997}, //
+
43846 {5.68095016, 1.23584998}, //
+
43847 {5.6828804, 1.23845184}, //
+
43848 {5.68489313, 1.24096847}, //
+
43849 {5.68698883, 1.24339998}, //
+
43850 {5.6891675, 1.24574625}, //
+
43851 {5.69142818, 1.24800742}, //
+
43852 {5.69377232, 1.25018334}, //
+
43853 {5.69619894, 1.25227404}, //
+
43854 {5.69870806, 1.25427961}, //
+
43855 {5.70130014, 1.25619996}, //
+
43856 {5.70388126, 1.25806785}, //
+
43857 {5.70633698, 1.25989377}, //
+
43858 {5.7086668, 1.26167774}, //
+
43859 {5.71087027, 1.26341975}, //
+
43860 {5.71294832, 1.26511979}, //
+
43861 {5.71490002, 1.26677775}, //
+
43862 {5.71672583, 1.26839387}, //
+
43863 {5.71842575, 1.26996791}, //
+
43864 {5.71999979, 1.27149999}, //
+
43865 {5.72217226, 1.27375555}, //
+
43866 {5.72417784, 1.27601111}, //
+
43867 {5.72601652, 1.27826667}, //
+
43868 {5.72768879, 1.28052223}, //
+
43869 {5.72919464, 1.28277779}, //
+
43870 {5.73053312, 1.28503335}, //
+
43871 {5.73170567, 1.2872889}, //
+
43872 {5.73271132, 1.28954446}, //
+
43873 {5.73355007, 1.29180002}, //
+
43874 {5.73430538, 1.29414999}, //
+
43875 {5.73506117, 1.29666662}, //
+
43876 {5.73581648, 1.29935002}, //
+
43877 {5.73657227, 1.30219996}, //
+
43878 {5.73732758, 1.30521667}, //
+
43879 {5.73808336, 1.30840003}, //
+
43880 {5.73883867, 1.31175005}, //
+
43881 {5.73959446, 1.31526661}, //
+
43882 {5.74034977, 1.31895006}, //
+
43883 {5.74113703, 1.32204509}, //
+
43884 {5.74200916, 1.32530797}, //
+
43885 {5.74296665, 1.32873893}, //
+
43886 {5.74400949, 1.33233762}, //
+
43887 {5.74513721, 1.33610427}, //
+
43888 {5.74634981, 1.3400389}, //
+
43889 {5.74764824, 1.34414136}, //
+
43890 {5.74903154, 1.34841168}, //
+
43891 {5.7505002, 1.35284996}, //
+
43892 {5.75281858, 1.35907102}, //
+
43893 {5.75526285, 1.36566734}, //
+
43894 {5.75783348, 1.37263894}, //
+
43895 {5.76052952, 1.37998581}, //
+
43896 {5.76335192, 1.38770807}, //
+
43897 {5.7663002, 1.3958056}, //
+
43898 {5.76937389, 1.4042784}, //
+
43899 {5.77257395, 1.41312659}, //
+
43900 {5.77589989, 1.42235005}, //
+
43901 {5.77927828, 1.431584}, //
+
43902 {5.78261375, 1.44044137}, //
+
43903 {5.78590536, 1.44892228}, //
+
43904 {5.78915453, 1.4570266}, //
+
43905 {5.79235983, 1.46475434}, //
+
43906 {5.79552221, 1.4721055}, //
+
43907 {5.7986412, 1.4790802}, //
+
43908 {5.80171728, 1.48567843}, //
+
43909 {5.80474997, 1.49189997}, //
+
43910 {5.80617714, 1.49712527}, //
+
43911 {5.80743647, 1.50226796}, //
+
43912 {5.80852795, 1.5073278}, //
+
43913 {5.8094511, 1.5123049}, //
+
43914 {5.81020689, 1.5171994}, //
+
43915 {5.81079435, 1.52201116}, //
+
43916 {5.81121397, 1.52674007}, //
+
43917 {5.81146622, 1.53138638}, //
+
43918 {5.81155014, 1.53594995}, //
+
43919 {5.81091976, 1.54059756}, //
+
43920 {5.8105402, 1.54549563}, //
+
43921 {5.81041098, 1.5506444}, //
+
43922 {5.81053257, 1.55604386}, //
+
43923 {5.81090498, 1.56169379}, //
+
43924 {5.81152773, 1.56759441}, //
+
43925 {5.81240129, 1.57374573}, //
+
43926 {5.8135252, 1.5801475}, //
+
43927 {5.81489992, 1.58679998}, //
+
43928 {5.81718683, 1.594208}, //
+
43929 {5.81951475, 1.60136545}, //
+
43930 {5.8218832, 1.60827219}, //
+
43931 {5.82429266, 1.61492836}, //
+
43932 {5.82674265, 1.62133396}, //
+
43933 {5.82923317, 1.62748885}, //
+
43934 {5.8317647, 1.63339317}, //
+
43935 {5.83433723, 1.63904691}, //
+
43936 {5.83694983, 1.64444995}, //
+
43937 {5.8394475, 1.64943457}, //
+
43938 {5.84165144, 1.65383267}, //
+
43939 {5.84356117, 1.65764439}, //
+
43940 {5.84517717, 1.66086972}, //
+
43941 {5.84649944, 1.66350865}, //
+
43942 {5.84826231, 1.66702712}, //
+
43943 {5.84870291, 1.66790676}, //
+
43944 {5.84884977, 1.66820002}, //
+
43945 {5.85220003, 1.63765001}, //
+
43946 {5.85211658, 1.63589811}, //
+
43947 {5.85186672, 1.63364255}, //
+
43948 {5.85144997, 1.63088334}, //
+
43949 {5.85086679, 1.62762034}, //
+
43950 {5.85011673, 1.62385368}, //
+
43951 {5.84919977, 1.61958337}, //
+
43952 {5.84811687, 1.61480927}, //
+
43953 {5.84686661, 1.60953152}, //
+
43954 {5.84544992, 1.60374999}, //
+
43955 {5.84256411, 1.5953778}, //
+
43956 {5.8399291, 1.58683884}, //
+
43957 {5.83754444, 1.57813334}, //
+
43958 {5.83541059, 1.56926107}, //
+
43959 {5.83352709, 1.56022227}, //
+
43960 {5.8318944, 1.55101669}, //
+
43961 {5.83051252, 1.54164445}, //
+
43962 {5.82938099, 1.53210557}, //
+
43963 {5.82849979, 1.52240002}, //
+
43964 {5.82606649, 1.50891733}, //
+
43965 {5.82329988, 1.49560249}, //
+
43966 {5.82019997, 1.48245561}, //
+
43967 {5.81676674, 1.46947658}, //
+
43968 {5.8130002, 1.4566654}, //
+
43969 {5.80889988, 1.44402218}, //
+
43970 {5.80446672, 1.43154693}, //
+
43971 {5.79969978, 1.41923952}, //
+
43972 {5.79460001, 1.40709996}, //
+
43973 {5.79313087, 1.40337527}, //
+
43974 {5.79174566, 1.39973462}, //
+
43975 {5.79044437, 1.39617777}, //
+
43976 {5.78922701, 1.39270496}, //
+
43977 {5.78809404, 1.38931608}, //
+
43978 {5.78704453, 1.38601112}, //
+
43979 {5.78607893, 1.38279009}, //
+
43980 {5.78519773, 1.3796531}, //
+
43981 {5.78439999, 1.37660003}, //
+
43982 {5.78143024, 1.37119687}, //
+
43983 {5.778543, 1.36554325}, //
+
43984 {5.77573872, 1.35963893}, //
+
43985 {5.77301741, 1.35348392}, //
+
43986 {5.77037859, 1.34707844}, //
+
43987 {5.76782227, 1.34042227}, //
+
43988 {5.76534891, 1.33351541}, //
+
43989 {5.76295805, 1.32635808}, //
+
43990 {5.76065016, 1.31895006}, //
+
43991 {5.75680017, 1.30342102}, //
+
43992 {5.7527833, 1.28847837}, //
+
43993 {5.74860001, 1.27412224}, //
+
43994 {5.74424982, 1.26035249}, //
+
43995 {5.73973322, 1.24716914}, //
+
43996 {5.7350502, 1.23457217}, //
+
43997 {5.73019981, 1.22256172}, //
+
43998 {5.72518349, 1.21113765}, //
+
43999 {5.71999979, 1.20029998}, //
+
44000 {5.71691561, 1.19661665}, //
+
44001 {5.71370602, 1.19309998}, //
+
44002 {5.71037245, 1.18974996}, //
+
44003 {5.70691347, 1.18656671}, //
+
44004 {5.70333004, 1.18355}, //
+
44005 {5.69962215, 1.18069994}, //
+
44006 {5.69578934, 1.17801666}, //
+
44007 {5.69183207, 1.17550004}, //
+
44008 {5.68774986, 1.17314994}, //
+
44009 {5.68367863, 1.17097783}, //
+
44010 {5.67973042, 1.16897225}, //
+
44011 {5.6759057, 1.16713333}, //
+
44012 {5.67220449, 1.16546106}, //
+
44013 {5.66862631, 1.16395557}, //
+
44014 {5.6651721, 1.16261661}, //
+
44015 {5.66184139, 1.16144443}, //
+
44016 {5.65863419, 1.1604389}, //
+
44017 {5.65555, 1.15960002}, //
+
44018 {5.65333557, 1.15813088}, //
+
44019 {5.65120411, 1.15674567}, //
+
44020 {5.64915562, 1.1554445}, //
+
44021 {5.64718962, 1.15422714}, //
+
44022 {5.64530611, 1.15309381}, //
+
44023 {5.64350557, 1.15204442}, //
+
44024 {5.64178753, 1.15107906}, //
+
44025 {5.64015245, 1.15019751}, //
+
44026 });
+
44027 polys.push_back({
+
44028 {3.83752608, 1.66547382}, //
+
44029 {3.8371973, 1.66580272}, //
+
44030 {3.83744454, 1.6655556}, //
+
44031 });
+
44032 polys.push_back({
+
44033 {3.83811593, 1.66488397}, //
+
44034 {3.83774471, 1.66525519}, //
+
44035 {3.83786416, 1.66513586}, //
+
44036 });
+
44037 polys.push_back({
+
44038 {3.75005007, 1.54949999}, //
+
44039 {3.75005007, 1.54949999}, //
+
44040 {3.75002909, 1.55023456}, //
+
44041 {3.74996614, 1.55092716}, //
+
44042 {3.749861, 1.55157781}, //
+
44043 {3.74971414, 1.55218637}, //
+
44044 {3.74952531, 1.55275309}, //
+
44045 {3.74929452, 1.55327773}, //
+
44046 {3.74902153, 1.55376053}, //
+
44047 {3.74870682, 1.55420125}, //
+
44048 {3.74834991, 1.5546}, //
+
44049 {3.74751043, 1.55543947}, //
+
44050 {3.74702787, 1.55592227}, //
+
44051 {3.74650311, 1.55644691}, //
+
44052 {3.74398446, 1.55896544}, //
+
44053 {3.74324989, 1.55970001}, //
+
44054 {3.74249434, 1.56045496}, //
+
44055 {3.7417388, 1.56120861}, //
+
44056 {3.74098325, 1.56196105}, //
+
44057 {3.7402277, 1.56271231}, //
+
44058 {3.73947215, 1.56346238}, //
+
44059 {3.7387166, 1.56421113}, //
+
44060 {3.73796105, 1.56495869}, //
+
44061 {3.73720551, 1.56570494}, //
+
44062 {3.73644996, 1.56645}, //
+
44063 {3.73495865, 1.56645}, //
+
44064 {3.73421121, 1.56645}, //
+
44065 {3.73346233, 1.56645}, //
+
44066 {3.73271227, 1.56645}, //
+
44067 {3.73196101, 1.56645}, //
+
44068 {3.73120856, 1.56645}, //
+
44069 {3.72802091, 1.56645}, //
+
44070 {3.72705555, 1.56645}, //
+
44071 {3.72600627, 1.56645}, //
+
44072 {3.72487283, 1.56645}, //
+
44073 {3.72365546, 1.56645}, //
+
44074 {3.71515441, 1.56645}, //
+
44075 {3.70925617, 1.56645}, //
+
44076 {3.70745564, 1.56645}, //
+
44077 {3.70573759, 1.56645}, //
+
44078 {3.70254993, 1.56645}, //
+
44079 {3.7002728, 1.56638706}, //
+
44080 {3.69795251, 1.56619811}, //
+
44081 {3.69558883, 1.56588328}, //
+
44082 {3.69318199, 1.56544256}, //
+
44083 {3.690732, 1.56487596}, //
+
44084 {3.68823886, 1.56418335}, //
+
44085 {3.68570256, 1.56336486}, //
+
44086 {3.68312287, 1.56242037}, //
+
44087 {3.68050003, 1.56134999}, //
+
44088 {3.67788768, 1.56020617}, //
+
44089 {3.67531729, 1.55901909}, //
+
44090 {3.67278886, 1.55778885}, //
+
44091 {3.67030239, 1.55651546}, //
+
44092 {3.66785812, 1.55519879}, //
+
44093 {3.66545558, 1.55383885}, //
+
44094 {3.663095, 1.55243576}, //
+
44095 {3.66077662, 1.55098951}, //
+
44096 {3.65849996, 1.54949999}, //
+
44097 {3.65552044, 1.54808331}, //
+
44098 {3.65262604, 1.54683328}, //
+
44099 {3.64981675, 1.54575002}, //
+
44100 {3.64709258, 1.5448333}, //
+
44101 {3.64445376, 1.54408336}, //
+
44102 {3.64190006, 1.54349995}, //
+
44103 {3.63943148, 1.54308331}, //
+
44104 {3.63704824, 1.54283333}, //
+
44105 {3.63474989, 1.54275}, //
+
44106 {3.6325357, 1.54220366}, //
+
44107 {3.63040423, 1.54207587}, //
+
44108 {3.6283555, 1.54236662}, //
+
44109 {3.6263895, 1.54307592}, //
+
44110 {3.62450624, 1.54420376}, //
+
44111 {3.62270546, 1.54575002}, //
+
44112 {3.62098765, 1.54771483}, //
+
44113 {3.61935258, 1.55009818}, //
+
44114 {3.6178, 1.55289996}, //
+
44115 {3.61633158, 1.55603707}, //
+
44116 {3.61494803, 1.55942595}, //
+
44117 {3.61365008, 1.56306672}, //
+
44118 {3.61243701, 1.56695926}, //
+
44119 {3.61130929, 1.57110369}, //
+
44120 {3.61026669, 1.57550001}, //
+
44121 {3.6093092, 1.5801481}, //
+
44122 {3.60843706, 1.5850482}, //
+
44123 {3.60765004, 1.59019995}, //
+
44124 {3.60615993, 1.59388268}, //
+
44125 {3.60471177, 1.59739757}, //
+
44126 {3.60330558, 1.60074449}, //
+
44127 {3.60194135, 1.60392344}, //
+
44128 {3.60061908, 1.60693455}, //
+
44129 {3.59933877, 1.60977781}, //
+
44130 {3.59810066, 1.6124531}, //
+
44131 {3.59690428, 1.61496055}, //
+
44132 {3.59575009, 1.61730003}, //
+
44133 {3.59459639, 1.61944079}, //
+
44134 {3.59340191, 1.62132967}, //
+
44135 {3.59216666, 1.62296665}, //
+
44136 {3.59089065, 1.62435186}, //
+
44137 {3.5895741, 1.62548518}, //
+
44138 {3.58821678, 1.62636662}, //
+
44139 {3.58681846, 1.62699628}, //
+
44140 {3.5853796, 1.62737405}, //
+
44141 {3.58389997, 1.62750006}, //
+
44142 {3.58371162, 1.62823462}, //
+
44143 {3.58314681, 1.62892711}, //
+
44144 {3.58220553, 1.62957776}, //
+
44145 {3.58088756, 1.63018644}, //
+
44146 {3.57919312, 1.63075304}, //
+
44147 {3.57712221, 1.6312778}, //
+
44148 {3.57467461, 1.63176048}, //
+
44149 {3.57185054, 1.63220119}, //
+
44150 {3.56865001, 1.63259995}, //
+
44151 {3.56511426, 1.63299811}, //
+
44152 {3.56128454, 1.63343704}, //
+
44153 {3.55716109, 1.63391662}, //
+
44154 {3.55274391, 1.63443708}, //
+
44155 {3.54803276, 1.6349982}, //
+
44156 {3.54302788, 1.63559997}, //
+
44157 {3.53772902, 1.63624263}, //
+
44158 {3.53213644, 1.63692594}, //
+
44159 {3.52624989, 1.63765001}, //
+
44160 {3.51945066, 1.63840556}, //
+
44161 {3.51260805, 1.63916111}, //
+
44162 {3.50572228, 1.63991666}, //
+
44163 {3.49879313, 1.64067221}, //
+
44164 {3.49182105, 1.64142776}, //
+
44165 {3.48480558, 1.6421833}, //
+
44166 {3.47774696, 1.64293885}, //
+
44167 {3.47064495, 1.6436944}, //
+
44168 {3.46350002, 1.64444995}, //
+
44169 {3.45657468, 1.6452055}, //
+
44170 {3.45010996, 1.64596117}, //
+
44171 {3.44410563, 1.64671671}, //
+
44172 {3.43856168, 1.64747226}, //
+
44173 {3.43347836, 1.64822781}, //
+
44174 {3.42885566, 1.64898336}, //
+
44175 {3.42469311, 1.64973891}, //
+
44176 {3.42099142, 1.65049446}, //
+
44177 {3.41774988, 1.65125}, //
+
44178 {3.41423464, 1.65266669}, //
+
44179 {3.4112215, 1.65391672}, //
+
44180 {3.40871119, 1.65499997}, //
+
44181 {3.406703, 1.65591669}, //
+
44182 {3.40519762, 1.65666664}, //
+
44183 {3.40419436, 1.65725005}, //
+
44184 {3.40369391, 1.65766668}, //
+
44185 {3.40369558, 1.65791667}, //
+
44186 {3.40420008, 1.65799999}, //
+
44187 {3.4050808, 1.65795863}, //
+
44188 {3.40621233, 1.65783453}, //
+
44189 {3.40759444, 1.65762782}, //
+
44190 {3.40922713, 1.65733826}, //
+
44191 {3.4111104, 1.65696609}, //
+
44192 {3.41324449, 1.65651107}, //
+
44193 {3.41562891, 1.65597343}, //
+
44194 {3.41826415, 1.65535307}, //
+
44195 {3.42114997, 1.65464997}, //
+
44196 {3.42420316, 1.65389442}, //
+
44197 {3.42734003, 1.65313888}, //
+
44198 {3.43056107, 1.65238333}, //
+
44199 {3.43386602, 1.65162778}, //
+
44200 {3.43725491, 1.65087223}, //
+
44201 {3.44072771, 1.65011668}, //
+
44202 {3.44428468, 1.64936113}, //
+
44203 {3.44792533, 1.64860559}, //
+
44204 {3.4516499, 1.64785004}, //
+
44205 {3.45922542, 1.64709449}, //
+
44206 {3.46688461, 1.64633894}, //
+
44207 {3.47462773, 1.64558339}, //
+
44208 {3.48245502, 1.64482772}, //
+
44209 {3.49036598, 1.64407218}, //
+
44210 {3.49836111, 1.64331663}, //
+
44211 {3.50644016, 1.64256108}, //
+
44212 {3.51460314, 1.64180553}, //
+
44213 {3.52285004, 1.64104998}, //
+
44214 {3.53021598, 1.64100802}, //
+
44215 {3.53724742, 1.64088213}, //
+
44216 {3.54394436, 1.64067221}, //
+
44217 {3.5503068, 1.64037836}, //
+
44218 {3.5563345, 1.64000058}, //
+
44219 {3.56202769, 1.63953888}, //
+
44220 {3.56738639, 1.63899326}, //
+
44221 {3.57241058, 1.6383636}, //
+
44222 {3.57710004, 1.63765001}, //
+
44223 {3.58218884, 1.63677907}, //
+
44224 {3.5869, 1.63565493}, //
+
44225 {3.59123325, 1.63427782}, //
+
44226 {3.59518886, 1.63264751}, //
+
44227 {3.59876657, 1.63076425}, //
+
44228 {3.60196662, 1.62862778}, //
+
44229 {3.60478878, 1.62623823}, //
+
44230 {3.60723329, 1.62359571}, //
+
44231 {3.6092999, 1.6207}, //
+
44232 {3.61108398, 1.61768889}, //
+
44233 {3.61265802, 1.61467779}, //
+
44234 {3.61402225, 1.61166668}, //
+
44235 {3.61517644, 1.60865557}, //
+
44236 {3.61612105, 1.60564446}, //
+
44237 {3.61685562, 1.60263336}, //
+
44238 {3.61738014, 1.59962225}, //
+
44239 {3.61769509, 1.59661114}, //
+
44240 {3.6178, 1.59360003}, //
+
44241 {3.61712837, 1.591313}, //
+
44242 {3.61662459, 1.5889852}, //
+
44243 {3.6162889, 1.58661664}, //
+
44244 {3.61612105, 1.58420742}, //
+
44245 {3.61612105, 1.58175743}, //
+
44246 {3.6162889, 1.57926667}, //
+
44247 {3.61662459, 1.57673514}, //
+
44248 {3.61712837, 1.57416296}, //
+
44249 {3.6178, 1.57155001}, //
+
44250 {3.61855555, 1.56902099}, //
+
44251 {3.61931109, 1.56670058}, //
+
44252 {3.62006664, 1.5645889}, //
+
44253 {3.62082219, 1.56268585}, //
+
44254 {3.62157774, 1.56099141}, //
+
44255 {3.62233329, 1.55950558}, //
+
44256 {3.62308884, 1.55822837}, //
+
44257 {3.62384439, 1.5571599}, //
+
44258 {3.62459993, 1.55630004}, //
+
44259 {3.6246624, 1.55630004}, //
+
44260 {3.62484932, 1.55630004}, //
+
44261 {3.62965012, 1.55630004}, //
+
44262 {3.63072038, 1.55634201}, //
+
44263 {3.63166475, 1.55646789}, //
+
44264 {3.63248324, 1.55667782}, //
+
44265 {3.63317585, 1.55697155}, //
+
44266 {3.63374257, 1.55734932}, //
+
44267 {3.63418341, 1.55781114}, //
+
44268 {3.63449812, 1.55835676}, //
+
44269 {3.63468695, 1.55898643}, //
+
44270 {3.63474989, 1.55970001}, //
+
44271 {3.63554692, 1.55974197}, //
+
44272 {3.63642645, 1.55986786}, //
+
44273 {3.63738894, 1.56007779}, //
+
44274 {3.63843393, 1.56037164}, //
+
44275 {3.63956165, 1.56074941}, //
+
44276 {3.6407721, 1.56121111}, //
+
44277 {3.64206553, 1.56175685}, //
+
44278 {3.64344144, 1.56238639}, //
+
44279 {3.64490008, 1.56309998}, //
+
44280 {3.64657831, 1.56314135}, //
+
44281 {3.64859128, 1.56326544}, //
+
44282 {3.65093899, 1.56347227}, //
+
44283 {3.65362096, 1.56376171}, //
+
44284 {3.65663767, 1.564134}, //
+
44285 {3.65998888, 1.5645889}, //
+
44286 {3.66367459, 1.56512654}, //
+
44287 {3.66769505, 1.5657469}, //
+
44288 {3.67205, 1.56645}, //
+
44289 {3.67661357, 1.56722653}, //
+
44290 {3.68125987, 1.56804502}, //
+
44291 {3.6859889, 1.56890559}, //
+
44292 {3.69080067, 1.56980801}, //
+
44293 {3.69569516, 1.5707525}, //
+
44294 {3.70067215, 1.57173884}, //
+
44295 {3.70573211, 1.57276726}, //
+
44296 {3.7108748, 1.57383764}, //
+
44297 {3.71609998, 1.57494998}, //
+
44298 {3.72121048, 1.57602036}, //
+
44299 {3.72598648, 1.57696486}, //
+
44300 {3.73042774, 1.57778335}, //
+
44301 {3.7345345, 1.57847595}, //
+
44302 {3.73830676, 1.57904255}, //
+
44303 {3.74174452, 1.57948339}, //
+
44304 {3.74484754, 1.5797981}, //
+
44305 {3.74761605, 1.57998705}, //
+
44306 {3.75005007, 1.58004999}, //
+
44307 {3.77040005, 1.58004999}, //
+
44308 {3.75005007, 1.54949999}, //
+
44309 {3.75005007, 1.54949999}, //
+
44310 });
+
44311 polys.push_back({
+
44312 {5.87650633, 1.25029874}, //
+
44313 {5.87399673, 1.25343394}, //
+
44314 {5.87182236, 1.25715554}, //
+
44315 {5.86998224, 1.26146352}, //
+
44316 {5.86847639, 1.26635802}, //
+
44317 {5.86730576, 1.2718389}, //
+
44318 {5.86646891, 1.27790618}, //
+
44319 {5.86596727, 1.28455985}, //
+
44320 {5.8657999, 1.29180002}, //
+
44321 {5.86590433, 1.29946911}, //
+
44322 {5.86621714, 1.30738771}, //
+
44323 {5.8667388, 1.31555557}, //
+
44324 {5.86746931, 1.32397282}, //
+
44325 {5.8684082, 1.33263946}, //
+
44326 {5.86955547, 1.3415556}, //
+
44327 {5.8709116, 1.350721}, //
+
44328 {5.87247658, 1.36013579}, //
+
44329 {5.87424994, 1.36979997}, //
+
44330 {5.87611723, 1.37930679}, //
+
44331 {5.87794113, 1.38822711}, //
+
44332 {5.87972212, 1.39656115}, //
+
44333 {5.88145971, 1.40430868}, //
+
44334 {5.88315439, 1.4114697}, //
+
44335 {5.88480568, 1.41804445}, //
+
44336 {5.88641357, 1.42403269}, //
+
44337 {5.88797855, 1.42943454}, //
+
44338 {5.88950014, 1.43425}, //
+
44339 {5.89318323, 1.44290745}, //
+
44340 {5.89669991, 1.45081294}, //
+
44341 {5.90005016, 1.45796669}, //
+
44342 {5.90323353, 1.46436846}, //
+
44343 {5.90625, 1.47001851}, //
+
44344 {5.90910006, 1.4749167}, //
+
44345 {5.91178322, 1.47906291}, //
+
44346 {5.91429996, 1.4824574}, //
+
44347 {5.91664982, 1.48510003}, //
+
44348 {5.91736364, 1.48656857}, //
+
44349 {5.91799307, 1.48795187}, //
+
44350 {5.91853905, 1.48924994}, //
+
44351 {5.91900063, 1.49046302}, //
+
44352 {5.91937828, 1.49159074}, //
+
44353 {5.91967201, 1.49263334}, //
+
44354 {5.9198823, 1.49359071}, //
+
44355 {5.92000818, 1.49446297}, //
+
44356 {5.92005014, 1.49524999}, //
+
44357 {5.920753, 1.49671912}, //
+
44358 {5.92137337, 1.49810433}, //
+
44359 {5.92191124, 1.4994055}, //
+
44360 {5.92236614, 1.50062287}, //
+
44361 {5.92273808, 1.50175619}, //
+
44362 {5.92302799, 1.50280559}, //
+
44363 {5.92323446, 1.50377095}, //
+
44364 {5.92335844, 1.5046525}, //
+
44365 {5.92339993, 1.50545001}, //
+
44366 {5.92344189, 1.50622594}, //
+
44367 {5.92356777, 1.50704265}, //
+
44368 {5.92377758, 1.5079}, //
+
44369 {5.92407179, 1.50879812}, //
+
44370 {5.92444944, 1.50973701}, //
+
44371 {5.92491102, 1.51071668}, //
+
44372 {5.925457, 1.51173699}, //
+
44373 {5.92608643, 1.51279819}, //
+
44374 {5.92679977, 1.51390004}, //
+
44375 {5.92755556, 1.51501238}, //
+
44376 {5.92831135, 1.51608276}, //
+
44377 {5.92906666, 1.51711106}, //
+
44378 {5.92982244, 1.51809752}, //
+
44379 {5.93057775, 1.51904202}, //
+
44380 {5.93133354, 1.51994443}, //
+
44381 {5.93208885, 1.52080488}, //
+
44382 {5.93284464, 1.52162349}, //
+
44383 {5.93359995, 1.52240002}, //
+
44384 {5.93521547, 1.52321792}, //
+
44385 {5.93703938, 1.5241605}, //
+
44386 {5.93907213, 1.52522779}, //
+
44387 {5.94131374, 1.52641976}, //
+
44388 {5.94376373, 1.52773643}, //
+
44389 {5.9464221, 1.52917778}, //
+
44390 {5.94928932, 1.53074384}, //
+
44391 {5.9523654, 1.53243458}, //
+
44392 {5.95564985, 1.53425002}, //
+
44393 {5.95897579, 1.53618026}, //
+
44394 {5.96217585, 1.53819323}, //
+
44395 {5.96525002, 1.54028893}, //
+
44396 {5.9681983, 1.54246724}, //
+
44397 {5.97102022, 1.5447284}, //
+
44398 {5.97371674, 1.54707217}, //
+
44399 {5.97628689, 1.5494988}, //
+
44400 {5.97873163, 1.55200803}, //
+
44401 {5.98105001, 1.5546}, //
+
44402 {5.9832325, 1.55717099}, //
+
44403 {5.98524761, 1.55961728}, //
+
44404 {5.9870944, 1.56193888}, //
+
44405 {5.98877335, 1.56413579}, //
+
44406 {5.99028444, 1.566208}, //
+
44407 {5.99162769, 1.56815553}, //
+
44408 {5.9928031, 1.56997836}, //
+
44409 {5.99381065, 1.57167649}, //
+
44410 {5.99464989, 1.57325006}, //
+
44411 {5.9953742, 1.57473946}, //
+
44412 {5.99605751, 1.57618582}, //
+
44413 {5.99669981, 1.57758892}, //
+
44414 {5.99730206, 1.57894874}, //
+
44415 {5.99786282, 1.5802654}, //
+
44416 {5.99838352, 1.58153892}, //
+
44417 {5.99886274, 1.58276916}, //
+
44418 {5.99930191, 1.58395612}, //
+
44419 {5.99970007, 1.58510005}, //
+
44420 {6.00005674, 1.5862124}, //
+
44421 {6.00037146, 1.58728266}, //
+
44422 {6.00064421, 1.58831108}, //
+
44423 {6.00087547, 1.58929753}, //
+
44424 {6.0010643, 1.59024203}, //
+
44425 {6.00121117, 1.59114444}, //
+
44426 {6.00131607, 1.5920049}, //
+
44427 {6.00137901, 1.59282351}, //
+
44428 {6.00139999, 1.59360003}, //
+
44429 {6.00137901, 1.59431362}, //
+
44430 {6.00131607, 1.59494317}, //
+
44431 {6.00121117, 1.59548891}, //
+
44432 {6.0010643, 1.5959506}, //
+
44433 {6.00087547, 1.59632838}, //
+
44434 {6.00064421, 1.59662223}, //
+
44435 {6.00037146, 1.59683216}, //
+
44436 {6.00005674, 1.59695804}, //
+
44437 {5.99970007, 1.597}, //
+
44438 {5.99921799, 1.59691608}, //
+
44439 {5.99852705, 1.59666419}, //
+
44440 {5.99762774, 1.59624445}, //
+
44441 {5.99651957, 1.59565675}, //
+
44442 {5.99520302, 1.5949012}, //
+
44443 {5.99367762, 1.59397781}, //
+
44444 {5.99194384, 1.59288645}, //
+
44445 {5.9900012, 1.59162712}, //
+
44446 {5.98785019, 1.59019995}, //
+
44447 {5.98399925, 1.58796477}, //
+
44448 {5.97998095, 1.58577037}, //
+
44449 {5.97579432, 1.58361661}, //
+
44450 {5.97144032, 1.58150375}, //
+
44451 {5.96691799, 1.57943153}, //
+
44452 {5.96222782, 1.57739997}, //
+
44453 {5.9573698, 1.57540929}, //
+
44454 {5.95234394, 1.57345927}, //
+
44455 {5.94715023, 1.57155001}, //
+
44456 {5.94191504, 1.5698179}, //
+
44457 {5.93676472, 1.56837714}, //
+
44458 {5.93170023, 1.56722772}, //
+
44459 {5.92672014, 1.56636977}, //
+
44460 {5.92182589, 1.56580305}, //
+
44461 {5.91701651, 1.5655278}, //
+
44462 {5.91229248, 1.56554377}, //
+
44463 {5.90765381, 1.56585121}, //
+
44464 {5.90310001, 1.56645}, //
+
44465 {5.90009928, 1.56733084}, //
+
44466 {5.89714193, 1.56846237}, //
+
44467 {5.89422798, 1.56984448}, //
+
44468 {5.89135695, 1.57147717}, //
+
44469 {5.88852882, 1.57336044}, //
+
44470 {5.88574457, 1.57549441}, //
+
44471 {5.88300323, 1.57787907}, //
+
44472 {5.88030481, 1.58051419}, //
+
44473 {5.87764978, 1.58340001}, //
+
44474 {5.87516308, 1.58644259}, //
+
44475 {5.87296867, 1.58952594}, //
+
44476 {5.87106657, 1.59265006}, //
+
44477 {5.86945724, 1.59581482}, //
+
44478 {5.8681407, 1.59902036}, //
+
44479 {5.86711645, 1.60226667}, //
+
44480 {5.86638498, 1.60555375}, //
+
44481 {5.86594629, 1.60888147}, //
+
44482 {5.8657999, 1.61224997}, //
+
44483 {5.86600924, 1.61553454}, //
+
44484 {5.86663723, 1.6186105}, //
+
44485 {5.86768341, 1.62147772}, //
+
44486 {5.86914825, 1.62413645}, //
+
44487 {5.87103128, 1.62658644}, //
+
44488 {5.87333345, 1.62882781}, //
+
44489 {5.87605381, 1.63086045}, //
+
44490 {5.87919283, 1.63268459}, //
+
44491 {5.88275003, 1.63429999}, //
+
44492 {5.88279152, 1.63346052}, //
+
44493 {5.8829155, 1.63245308}, //
+
44494 {5.88312244, 1.6312778}, //
+
44495 {5.88341188, 1.62993455}, //
+
44496 {5.88378382, 1.62842345}, //
+
44497 {5.88423872, 1.62674439}, //
+
44498 {5.88477659, 1.62489748}, //
+
44499 {5.88539696, 1.62288272}, //
+
44500 {5.88609982, 1.6207}, //
+
44501 {5.88687658, 1.61848581}, //
+
44502 {5.88769484, 1.61635435}, //
+
44503 {5.88855553, 1.6143055}, //
+
44504 {5.88945818, 1.6123395}, //
+
44505 {5.89040232, 1.61045623}, //
+
44506 {5.89138889, 1.60865557}, //
+
44507 {5.89241743, 1.60693765}, //
+
44508 {5.89348745, 1.60530245}, //
+
44509 {5.89459991, 1.60374999}, //
+
44510 {5.89575386, 1.60229135}, //
+
44511 {5.89694834, 1.60091543}, //
+
44512 {5.89818335, 1.59962225}, //
+
44513 {5.89945936, 1.59841168}, //
+
44514 {5.90077591, 1.59728396}, //
+
44515 {5.90213346, 1.59623885}, //
+
44516 {5.90353155, 1.59527659}, //
+
44517 {5.90497017, 1.59439695}, //
+
44518 {5.90644979, 1.59360003}, //
+
44519 {5.90877914, 1.593642}, //
+
44520 {5.91123295, 1.59376788}, //
+
44521 {5.91381121, 1.59397781}, //
+
44522 {5.9165144, 1.59427166}, //
+
44523 {5.91934204, 1.59464943}, //
+
44524 {5.92229462, 1.59511113}, //
+
44525 {5.92537165, 1.59565675}, //
+
44526 {5.92857361, 1.59628642}, //
+
44527 {5.93190002, 1.597}, //
+
44528 {5.93522644, 1.59779692}, //
+
44529 {5.9384284, 1.59867656}, //
+
44530 {5.94150543, 1.59963894}, //
+
44531 {5.94445801, 1.60068393}, //
+
44532 {5.94728565, 1.60181177}, //
+
44533 {5.94998884, 1.60302222}, //
+
44534 {5.9525671, 1.6043154}, //
+
44535 {5.9550209, 1.60569131}, //
+
44536 {5.95734978, 1.60714996}, //
+
44537 {5.95813704, 1.60790551}, //
+
44538 {5.95900917, 1.60866106}, //
+
44539 {5.95996666, 1.60941672}, //
+
44540 {5.96100903, 1.61017227}, //
+
44541 {5.96213722, 1.61092782}, //
+
44542 {5.96334982, 1.61168337}, //
+
44543 {5.96464825, 1.61243892}, //
+
44544 {5.96603155, 1.61319447}, //
+
44545 {5.96750021, 1.61395001}, //
+
44546 {5.96905231, 1.61545062}, //
+
44547 {5.97068787, 1.61695242}, //
+
44548 {5.97240543, 1.61845553}, //
+
44549 {5.97420597, 1.61995983}, //
+
44550 {5.97608948, 1.62146544}, //
+
44551 {5.97805548, 1.62297225}, //
+
44552 {5.98010445, 1.62448025}, //
+
44553 {5.98223591, 1.62598956}, //
+
44554 {5.98444986, 1.62750006}, //
+
44555 {5.98671627, 1.62892711}, //
+
44556 {5.98898077, 1.63018644}, //
+
44557 {5.99124432, 1.6312778}, //
+
44558 {5.99350691, 1.63220119}, //
+
44559 {5.99576807, 1.63295674}, //
+
44560 {5.9980278, 1.63354445}, //
+
44561 {6.00028658, 1.63396418}, //
+
44562 {6.00254393, 1.63421607}, //
+
44563 {6.00479984, 1.63429999}, //
+
44564 {6.00772715, 1.63346052}, //
+
44565 {6.0104866, 1.63245308}, //
+
44566 {6.01307774, 1.6312778}, //
+
44567 {6.01550102, 1.62993455}, //
+
44568 {6.01775694, 1.62842345}, //
+
44569 {6.01984453, 1.62674439}, //
+
44570 {6.02176428, 1.62489748}, //
+
44571 {6.02351618, 1.62288272}, //
+
44572 {6.02510023, 1.6207}, //
+
44573 {6.02648592, 1.61848581}, //
+
44574 {6.02762079, 1.61635435}, //
+
44575 {6.02850533, 1.6143055}, //
+
44576 {6.02913952, 1.6123395}, //
+
44577 {6.0295229, 1.61045623}, //
+
44578 {6.02965546, 1.60865557}, //
+
44579 {6.02953768, 1.60693765}, //
+
44580 {6.02916908, 1.60530245}, //
+
44581 {6.02855015, 1.60374999}, //
+
44582 {6.02855015, 1.597}, //
+
44583 {6.02777338, 1.59469199}, //
+
44584 {6.02695513, 1.59230125}, //
+
44585 {6.02609444, 1.58982778}, //
+
44586 {6.02519178, 1.58727157}, //
+
44587 {6.02424765, 1.58463275}, //
+
44588 {6.02326107, 1.58191109}, //
+
44589 {6.02223253, 1.57910681}, //
+
44590 {6.02116251, 1.5762198}, //
+
44591 {6.02005005, 1.57325006}, //
+
44592 {6.0188961, 1.57032228}, //
+
44593 {6.01770163, 1.56756115}, //
+
44594 {6.01646662, 1.56496668}, //
+
44595 {6.0151906, 1.56253886}, //
+
44596 {6.01387405, 1.56027782}, //
+
44597 {6.0125165, 1.55818331}, //
+
44598 {6.01111841, 1.55625558}, //
+
44599 {6.00967979, 1.5544945}, //
+
44600 {6.00820017, 1.55289996}, //
+
44601 {6.00597525, 1.55133641}, //
+
44602 {6.00383472, 1.54964566}, //
+
44603 {6.00177765, 1.54782772}, //
+
44604 {5.99980497, 1.5458827}, //
+
44605 {5.99791622, 1.54381049}, //
+
44606 {5.99611092, 1.54161108}, //
+
44607 {5.99439001, 1.53928459}, //
+
44608 {5.99275303, 1.5368309}, //
+
44609 {5.99119997, 1.53425002}, //
+
44610 {5.98978329, 1.531721}, //
+
44611 {5.9885335, 1.52940059}, //
+
44612 {5.98745012, 1.52728891}, //
+
44613 {5.98653316, 1.52538586}, //
+
44614 {5.9857831, 1.52369142}, //
+
44615 {5.98519993, 1.52220559}, //
+
44616 {5.98478317, 1.52092838}, //
+
44617 {5.98453331, 1.51985991}, //
+
44618 {5.98444986, 1.51900005}, //
+
44619 {5.9844079, 1.51826549}, //
+
44620 {5.98428202, 1.51757288}, //
+
44621 {5.98407221, 1.51692224}, //
+
44622 {5.98377848, 1.51631355}, //
+
44623 {5.98340082, 1.51574695}, //
+
44624 {5.98293877, 1.51522219}, //
+
44625 {5.98239326, 1.51473951}, //
+
44626 {5.98176336, 1.5142988}, //
+
44627 {5.98105001, 1.51390004}, //
+
44628 {5.98029518, 1.51354325}, //
+
44629 {5.9795413, 1.51322842}, //
+
44630 {5.97878885, 1.51295555}, //
+
44631 {5.97803783, 1.51272464}, //
+
44632 {5.97728777, 1.51253581}, //
+
44633 {5.97653866, 1.51238894}, //
+
44634 {5.97579145, 1.51228392}, //
+
44635 {5.9750452, 1.51222098}, //
+
44636 {5.97280979, 1.51215804}, //
+
44637 {5.97136164, 1.51203215}, //
+
44638 {5.96995544, 1.51182222}, //
+
44639 {5.96859121, 1.51152837}, //
+
44640 {5.96726894, 1.5111506}, //
+
44641 {5.96598911, 1.5106889}, //
+
44642 {5.96475077, 1.51014316}, //
+
44643 {5.96355438, 1.50951362}, //
+
44644 {5.96239996, 1.50880003}, //
+
44645 {5.96125603, 1.50805497}, //
+
44646 {5.96006918, 1.5073086}, //
+
44647 {5.95883894, 1.50656116}, //
+
44648 {5.95756531, 1.50581229}, //
+
44649 {5.95624876, 1.50506234}, //
+
44650 {5.95488882, 1.50431108}, //
+
44651 {5.95348597, 1.50355864}, //
+
44652 {5.95203972, 1.50280499}, //
+
44653 {5.95055008, 1.50205004}, //
+
44654 {5.94899702, 1.49960554}, //
+
44655 {5.94736004, 1.49678338}, //
+
44656 {5.94563866, 1.49358332}, //
+
44657 {5.94383383, 1.49000561}, //
+
44658 {5.94194508, 1.48605001}, //
+
44659 {5.9399724, 1.48171663}, //
+
44660 {5.93791533, 1.4770056}, //
+
44661 {5.9357748, 1.47191668}, //
+
44662 {5.93354988, 1.46644998}, //
+
44663 {5.9313364, 1.46077406}, //
+
44664 {5.92920685, 1.45505738}, //
+
44665 {5.92716122, 1.44930005}, //
+
44666 {5.92519951, 1.44350183}, //
+
44667 {5.92332172, 1.43766296}, //
+
44668 {5.92152786, 1.43178332}, //
+
44669 {5.91981792, 1.42586291}, //
+
44670 {5.91819191, 1.41990185}, //
+
44671 {5.91664982, 1.41390002}, //
+
44672 {5.91589451, 1.41238952}, //
+
44673 {5.91513872, 1.41088021}, //
+
44674 {5.91438341, 1.40937221}, //
+
44675 {5.91362762, 1.40786541}, //
+
44676 {5.91287231, 1.40635991}, //
+
44677 {5.91211653, 1.40485561}, //
+
44678 {5.91136122, 1.4033525}, //
+
44679 {5.91060543, 1.40185058}, //
+
44680 {5.90985012, 1.40034997}, //
+
44681 {5.90911531, 1.39810431}, //
+
44682 {5.90842295, 1.39590061}, //
+
44683 {5.90777206, 1.39373887}, //
+
44684 {5.90716362, 1.39161909}, //
+
44685 {5.90659714, 1.38954139}, //
+
44686 {5.90607214, 1.38750553}, //
+
44687 {5.90558958, 1.38551176}, //
+
44688 {5.90514898, 1.38355982}, //
+
44689 {5.90474987, 1.38164997}, //
+
44690 {5.90436172, 1.37975061}, //
+
44691 {5.90393019, 1.37780797}, //
+
44692 {5.90345573, 1.37582219}, //
+
44693 {5.90293789, 1.37379324}, //
+
44694 {5.90237665, 1.37172103}, //
+
44695 {5.90177202, 1.36960554}, //
+
44696 {5.90112448, 1.3674469}, //
+
44697 {5.90043402, 1.3652451}, //
+
44698 {5.89970016, 1.36300004}, //
+
44699 {5.89894438, 1.36061847}, //
+
44700 {5.89818907, 1.35798514}, //
+
44701 {5.89743328, 1.35510004}, //
+
44702 {5.89667797, 1.35196292}, //
+
44703 {5.89592218, 1.34857404}, //
+
44704 {5.89516687, 1.34493339}, //
+
44705 {5.89441109, 1.34104073}, //
+
44706 {5.89365578, 1.3368963}, //
+
44707 {5.89289999, 1.33249998}, //
+
44708 {5.89218664, 1.32513392}, //
+
44709 {5.89155674, 1.31810248}, //
+
44710 {5.89101124, 1.31140554}, //
+
44711 {5.89054918, 1.30504322}, //
+
44712 {5.89017153, 1.2990154}, //
+
44713 {5.8898778, 1.29332221}, //
+
44714 {5.88966799, 1.28796363}, //
+
44715 {5.8895421, 1.28293955}, //
+
44716 {5.88950014, 1.27824998}, //
+
44717 {5.88947916, 1.27530122}, //
+
44718 {5.88941622, 1.27247715}, //
+
44719 {5.88931131, 1.26977777}, //
+
44720 {5.88916397, 1.26720309}, //
+
44721 {5.88897514, 1.2647531}, //
+
44722 {5.88874435, 1.26242781}, //
+
44723 {5.8884716, 1.2602272}, //
+
44724 {5.88815689, 1.25815129}, //
+
44725 {5.88780022, 1.25619996}, //
+
44726 {5.88736963, 1.2544266}, //
+
44727 {5.88681221, 1.25286174}, //
+
44728 {5.88612795, 1.25150561}, //
+
44729 {5.8853159, 1.25035799}, //
+
44730 {5.884377, 1.24941909}, //
+
44731 {5.88331127, 1.24868894}, //
+
44732 {5.88211775, 1.24816728}, //
+
44733 {5.88079739, 1.24785435}, //
+
44734 {5.87935019, 1.24775004}, //
+
44735 });
+
44736 polys.push_back({
+
44737 {0.29508394, 1.607234}, //
+
44738 {0.295188874, 1.60733891}, //
+
44739 {0.295335799, 1.60748577}, //
+
44740 {0.295524687, 1.60767472}, //
+
44741 {0.295755565, 1.60790551}, //
+
44742 {0.296343207, 1.60849321}, //
+
44743 {0.296700001, 1.60885}, //
+
44744 {0.297077149, 1.60922778}, //
+
44745 {0.297453076, 1.60960555}, //
+
44746 {0.29782778, 1.60998333}, //
+
44747 {0.298201233, 1.6103611}, //
+
44748 {0.298573464, 1.61073887}, //
+
44749 {0.298944443, 1.61111665}, //
+
44750 {0.299314201, 1.61149442}, //
+
44751 {0.299682707, 1.6118722}, //
+
44752 {0.30004999, 1.61224997}, //
+
44753 {0.300406784, 1.61262774}, //
+
44754 {0.300721616, 1.61300552}, //
+
44755 {0.300994456, 1.61338329}, //
+
44756 {0.301225305, 1.61376107}, //
+
44757 {0.301414192, 1.61413884}, //
+
44758 {0.301561117, 1.61451662}, //
+
44759 {0.301666051, 1.61489439}, //
+
44760 {0.301729023, 1.61527216}, //
+
44761 {0.301750004, 1.61565006}, //
+
44762 {0.301750004, 1.61929262}, //
+
44763 {0.301750004, 1.61997592}, //
+
44764 {0.301750004, 1.6207}, //
+
44765 {0.301770985, 1.62132967}, //
+
44766 {0.301833957, 1.62170744}, //
+
44767 {0.301938891, 1.62183332}, //
+
44768 {0.302085817, 1.62170744}, //
+
44769 {0.302274704, 1.62132967}, //
+
44770 {0.302505553, 1.6207}, //
+
44771 {0.302778393, 1.61981857}, //
+
44772 {0.303093225, 1.61868513}, //
+
44773 {0.303449988, 1.61730003}, //
+
44774 {0.303848773, 1.61573637}, //
+
44775 {0.30428952, 1.61404562}, //
+
44776 {0.304772228, 1.6122278}, //
+
44777 {0.305296928, 1.61028266}, //
+
44778 {0.305863589, 1.60821044}, //
+
44779 {0.306472212, 1.60601115}, //
+
44780 {0.307122827, 1.60368454}, //
+
44781 {0.307815433, 1.60123086}, //
+
44782 {0.30855, 1.59864998}, //
+
44783 {0.309305549, 1.59591174}, //
+
44784 {0.310061097, 1.59296358}, //
+
44785 {0.310816675, 1.5898056}, //
+
44786 {0.311572224, 1.5864377}, //
+
44787 {0.312327772, 1.58285987}, //
+
44788 {0.313083321, 1.57907224}, //
+
44789 {0.313838899, 1.57507467}, //
+
44790 {0.314594448, 1.5708673}, //
+
44791 {0.315349996, 1.56645}, //
+
44792 {0.316808641, 1.56197965}, //
+
44793 {0.318184555, 1.55759072}, //
+
44794 {0.319477767, 1.55328333}, //
+
44795 {0.320688277, 1.54905736}, //
+
44796 {0.321816057, 1.54491293}, //
+
44797 {0.322861105, 1.54085004}, //
+
44798 {0.323823452, 1.53686857}, //
+
44799 {0.324703097, 1.53296852}, //
+
44800 {0.325500011, 1.52915001}, //
+
44801 {0.32625556, 1.52546728}, //
+
44802 {0.327011108, 1.52195251}, //
+
44803 {0.327766657, 1.51860559}, //
+
44804 {0.328522235, 1.51542652}, //
+
44805 {0.329277784, 1.51241541}, //
+
44806 {0.330033332, 1.50957227}, //
+
44807 {0.330788881, 1.50689697}, //
+
44808 {0.331544459, 1.50438952}, //
+
44809 {0.332300007, 1.50205004}, //
+
44810 {0.332961112, 1.5000031}, //
+
44811 {0.333455563, 1.49837351}, //
+
44812 {0.333783329, 1.49716115}, //
+
44813 {0.33394444, 1.49636602}, //
+
44814 {0.333938897, 1.49598825}, //
+
44815 {0.333766669, 1.49602783}, //
+
44816 {0.333427787, 1.49648452}, //
+
44817 {0.33292222, 1.49735868}, //
+
44818 {0.332249999, 1.49864995}, //
+
44819 {0.331441969, 1.50030744}, //
+
44820 {0.330506802, 1.50225747}, //
+
44821 {0.329444438, 1.50450003}, //
+
44822 {0.328254938, 1.50703514}, //
+
44823 {0.326938272, 1.50986302}, //
+
44824 {0.325494438, 1.51298332}, //
+
44825 {0.323923469, 1.51639628}, //
+
44826 {0.322225302, 1.5201019}, //
+
44827 {0.3204, 1.52409995}, //
+
44828 {0.3185426, 1.52830684}, //
+
44829 {0.31672594, 1.53263831}, //
+
44830 {0.314949989, 1.53709447}, //
+
44831 {0.313214809, 1.54167533}, //
+
44832 {0.311520368, 1.54638088}, //
+
44833 {0.309866667, 1.55121112}, //
+
44834 {0.308253706, 1.55616605}, //
+
44835 {0.306681484, 1.56124568}, //
+
44836 {0.305150002, 1.56645}, //
+
44837 {0.303691357, 1.57164383}, //
+
44838 {0.302315444, 1.57666981}, //
+
44839 {0.301022232, 1.58152783}, //
+
44840 {0.299811721, 1.58621788}, //
+
44841 {0.298683941, 1.59074008}, //
+
44842 {0.297638893, 1.59509444}, //
+
44843 {0.296676546, 1.59928083}, //
+
44844 {0.295796901, 1.60329938}, //
+
44845 {0.294999987, 1.60714996}, //
+
44846 {0.294999987, 1.60714996}, //
+
44847 {0.294999987, 1.60714996}, //
+
44848 });
+
44849 polys.push_back({
+
44850 {6.37770844, 1.59208953}, //
+
44851 {6.37758446, 1.59058022}, //
+
44852 {6.37737799, 1.58907223}, //
+
44853 {6.37708807, 1.58756542}, //
+
44854 {6.37671614, 1.58605993}, //
+
44855 {6.37626123, 1.58455551}, //
+
44856 {6.37572336, 1.58305252}, //
+
44857 {6.375103, 1.5815506}, //
+
44858 {6.37440014, 1.58004999}, //
+
44859 {6.37442017, 1.57784629}, //
+
44860 {6.37448168, 1.57576847}, //
+
44861 {6.37458324, 1.57381666}, //
+
44862 {6.37472582, 1.57199073}, //
+
44863 {6.3749094, 1.57029068}, //
+
44864 {6.37513351, 1.56871665}, //
+
44865 {6.37539816, 1.56726849}, //
+
44866 {6.37570381, 1.56594634}, //
+
44867 {6.37605, 1.56474996}, //
+
44868 {6.37644863, 1.5636481}, //
+
44869 {6.37688971, 1.56258702}, //
+
44870 {6.37737226, 1.56156671}, //
+
44871 {6.37789679, 1.56058705}, //
+
44872 {6.37846375, 1.55964816}, //
+
44873 {6.37907219, 1.55875003}, //
+
44874 {6.37972307, 1.55789256}, //
+
44875 {6.38041544, 1.55707598}, //
+
44876 {6.38114977, 1.55630004}, //
+
44877 {6.38333225, 1.5547055}, //
+
44878 {6.38534498, 1.55294442}, //
+
44879 {6.38718891, 1.55101669}, //
+
44880 {6.38886356, 1.54892218}, //
+
44881 {6.39036894, 1.54666114}, //
+
44882 {6.39170551, 1.54423332}, //
+
44883 {6.39287281, 1.54163885}, //
+
44884 {6.39387083, 1.53887773}, //
+
44885 {6.39470005, 1.53594995}, //
+
44886 {6.39461613, 1.53363085}, //
+
44887 {6.39436436, 1.53118455}, //
+
44888 {6.39394426, 1.52861106}, //
+
44889 {6.3933568, 1.5259105}, //
+
44890 {6.39260101, 1.52308273}, //
+
44891 {6.39167786, 1.52012777}, //
+
44892 {6.39058638, 1.51704574}, //
+
44893 {6.38932705, 1.51383638}, //
+
44894 {6.38789988, 1.51049995}, //
+
44895 {6.38644123, 1.50709009}, //
+
44896 {6.38506556, 1.50363827}, //
+
44897 {6.38377237, 1.50014448}, //
+
44898 {6.38256168, 1.49660861}, //
+
44899 {6.38143396, 1.49303091}, //
+
44900 {6.38038874, 1.48941112}, //
+
44901 {6.37942648, 1.48574936}, //
+
44902 {6.37854671, 1.48204565}, //
+
44903 {6.37774992, 1.47829998}, //
+
44904 {6.37633324, 1.47612774}, //
+
44905 {6.37577248, 1.47522771}, //
+
44906 {6.37605, 1.47660005}, //
+
44907 {6.37642765, 1.47850931}, //
+
44908 {6.37680578, 1.48045921}, //
+
44909 {6.37718344, 1.48245001}, //
+
44910 {6.37756109, 1.48448145}, //
+
44911 {6.37793875, 1.48655367}, //
+
44912 {6.37831688, 1.48866665}, //
+
44913 {6.37869453, 1.49082041}, //
+
44914 {6.37907219, 1.49301481}, //
+
44915 {6.37944984, 1.49524999}, //
+
44916 {6.379807, 1.49747407}, //
+
44917 {6.38012171, 1.49961293}, //
+
44918 {6.38039446, 1.50166667}, //
+
44919 {6.38062525, 1.50363517}, //
+
44920 {6.38081408, 1.50551856}, //
+
44921 {6.38096094, 1.50731671}, //
+
44922 {6.38106585, 1.50902963}, //
+
44923 {6.38112879, 1.51065743}, //
+
44924 {6.38114977, 1.5122}, //
+
44925 {6.3810668, 1.51592529}, //
+
44926 {6.38081646, 1.51956785}, //
+
44927 {6.38040018, 1.52312779}, //
+
44928 {6.37981653, 1.52660489}, //
+
44929 {6.37906647, 1.52999938}, //
+
44930 {6.37814999, 1.53331113}, //
+
44931 {6.37706661, 1.53654015}, //
+
44932 {6.37581682, 1.53968644}, //
+
44933 {6.37440014, 1.54275}, //
+
44934 {6.37297297, 1.54576111}, //
+
44935 {6.37171364, 1.54877222}, //
+
44936 {6.37062216, 1.55178332}, //
+
44937 {6.369699, 1.55479443}, //
+
44938 {6.36894321, 1.55780554}, //
+
44939 {6.36835575, 1.56081665}, //
+
44940 {6.36793566, 1.56382775}, //
+
44941 {6.36768389, 1.56683886}, //
+
44942 {6.36759996, 1.56984997}, //
+
44943 {6.36762094, 1.57277775}, //
+
44944 {6.36768389, 1.57553887}, //
+
44945 {6.36778879, 1.57813334}, //
+
44946 {6.36793566, 1.58056116}, //
+
44947 {6.36812449, 1.5828222}, //
+
44948 {6.36835575, 1.58491671}, //
+
44949 {6.3686285, 1.58684444}, //
+
44950 {6.36894321, 1.58860552}, //
+
44951 {6.36929989, 1.59019995}, //
+
44952 {6.369699, 1.59166908}, //
+
44953 {6.3701396, 1.59305429}, //
+
44954 {6.37062216, 1.59435558}, //
+
44955 {6.37114668, 1.59557283}, //
+
44956 {6.37171364, 1.59670615}, //
+
44957 {6.37232208, 1.59775555}, //
+
44958 {6.37297297, 1.59872103}, //
+
44959 {6.37366533, 1.59960246}, //
+
44960 {6.37440014, 1.60039997}, //
+
44961 {6.37444115, 1.60114503}, //
+
44962 {6.3745656, 1.6018914}, //
+
44963 {6.37477207, 1.60263884}, //
+
44964 {6.37506151, 1.60338771}, //
+
44965 {6.37543392, 1.60413766}, //
+
44966 {6.37588882, 1.60488892}, //
+
44967 {6.3764267, 1.60564137}, //
+
44968 {6.37704706, 1.60639501}, //
+
44969 {6.37774992, 1.60714996}, //
+
44970 {6.37774992, 1.59360003}, //
+
44971 });
+
44972 polys.push_back({
+
44973 {4.21662092, 1.50897527}, //
+
44974 {4.20896196, 1.50935125}, //
+
44975 {4.20172215, 1.50997782}, //
+
44976 {4.19490242, 1.51085496}, //
+
44977 {4.18850231, 1.51198268}, //
+
44978 {4.1825223, 1.5133611}, //
+
44979 {4.1769619, 1.51499009}, //
+
44980 {4.17182112, 1.51686978}, //
+
44981 {4.16709995, 1.51900005}, //
+
44982 {4.16324949, 1.5197556}, //
+
44983 {4.15923071, 1.52051115}, //
+
44984 {4.15504456, 1.5212667}, //
+
44985 {4.15069008, 1.52202225}, //
+
44986 {4.14616776, 1.5227778}, //
+
44987 {4.14147758, 1.52353334}, //
+
44988 {4.13661957, 1.52428889}, //
+
44989 {4.1315937, 1.52504444}, //
+
44990 {4.12639999, 1.52579999}, //
+
44991 {4.12334633, 1.52654505}, //
+
44992 {4.12020731, 1.52729142}, //
+
44993 {4.11698341, 1.52803886}, //
+
44994 {4.11367416, 1.52878761}, //
+
44995 {4.11027956, 1.52953768}, //
+
44996 {4.10680008, 1.53028893}, //
+
44997 {4.10323524, 1.53104138}, //
+
44998 {4.09958506, 1.53179502}, //
+
44999 {4.09584999, 1.53254998}, //
+
45000 {4.09206247, 1.53332651}, //
+
45001 {4.08823252, 1.53414512}, //
+
45002 {4.08436108, 1.53500557}, //
+
45003 {4.08044767, 1.53590798}, //
+
45004 {4.07649183, 1.53685248}, //
+
45005 {4.07249451, 1.53783894}, //
+
45006 {4.06845474, 1.53886724}, //
+
45007 {4.06437349, 1.53993762}, //
+
45008 {4.06024981, 1.54104996}, //
+
45009 {4.05622053, 1.5421617}, //
+
45010 {4.0523982, 1.5432303}, //
+
45011 {4.0487833, 1.54425561}, //
+
45012 {4.04537582, 1.54523766}, //
+
45013 {4.04217577, 1.54617655}, //
+
45014 {4.03918314, 1.54707217}, //
+
45015 {4.03639793, 1.54792464}, //
+
45016 {4.03382015, 1.54873395}, //
+
45017 {4.03144979, 1.54949999}, //
+
45018 {4.02931976, 1.55021358}, //
+
45019 {4.0258112, 1.55138886}, //
+
45020 {4.02443266, 1.55185068}, //
+
45021 {4.02330494, 1.55222845}, //
+
45022 {4.02242756, 1.55252218}, //
+
45023 {4.02129984, 1.55289996}, //
+
45024 {4.02200317, 1.55289996}, //
+
45025 {4.02262354, 1.55289996}, //
+
45026 {4.02448463, 1.55289996}, //
+
45027 {4.02460861, 1.55289996}, //
+
45028 {4.0246501, 1.55289996}, //
+
45029 {4.0246501, 1.55289996}, //
+
45030 {4.0246501, 1.55289996}, //
+
45031 {4.0246501, 1.55289996}, //
+
45032 {4.02540541, 1.55363452}, //
+
45033 {4.02616119, 1.55432713}, //
+
45034 {4.0269165, 1.55497777}, //
+
45035 {4.02767229, 1.55558646}, //
+
45036 {4.0284276, 1.55615306}, //
+
45037 {4.02918339, 1.55667782}, //
+
45038 {4.0299387, 1.5571605}, //
+
45039 {4.03069448, 1.55760121}, //
+
45040 {4.03144979, 1.55799997}, //
+
45041 {4.03228903, 1.55837774}, //
+
45042 {4.03329468, 1.55875552}, //
+
45043 {4.03446674, 1.55913329}, //
+
45044 {4.0358057, 1.55951107}, //
+
45045 {4.03731108, 1.55988884}, //
+
45046 {4.03898335, 1.56026661}, //
+
45047 {4.04082203, 1.56064439}, //
+
45048 {4.04282761, 1.56102228}, //
+
45049 {4.04500008, 1.56140006}, //
+
45050 {4.04743338, 1.56175685}, //
+
45051 {4.05019999, 1.56207156}, //
+
45052 {4.0532999, 1.56234443}, //
+
45053 {4.05673313, 1.56257534}, //
+
45054 {4.06050014, 1.56276417}, //
+
45055 {4.06459999, 1.56291115}, //
+
45056 {4.06903315, 1.56301606}, //
+
45057 {4.07380009, 1.563079}, //
+
45058 {4.07889986, 1.56309998}, //
+
45059 {4.0887866, 1.56309998}, //
+
45060 {4.09322786, 1.56309998}, //
+
45061 {4.09733438, 1.56309998}, //
+
45062 {4.11601782, 1.56309998}, //
+
45063 {4.11772776, 1.56309998}, //
+
45064 {4.11952162, 1.56309998}, //
+
45065 {4.13461685, 1.56309998}, //
+
45066 {4.13730001, 1.56309998}, //
+
45067 {4.14015007, 1.56309998}, //
+
45068 {4.15689993, 1.56309998}, //
+
45069 {4.16079283, 1.56305802}, //
+
45070 {4.16493702, 1.56293213}, //
+
45071 {4.16933346, 1.56272221}, //
+
45072 {4.17398167, 1.56242836}, //
+
45073 {4.17888165, 1.56205058}, //
+
45074 {4.18403339, 1.56158888}, //
+
45075 {4.18943691, 1.56104326}, //
+
45076 {4.19509268, 1.5604136}, //
+
45077 {4.20100021, 1.55970001}, //
+
45078 {4.22871256, 1.55986726}, //
+
45079 {4.25458288, 1.56036913}, //
+
45080 {4.27861118, 1.56120551}, //
+
45081 {4.30079746, 1.5623765}, //
+
45082 {4.3211422, 1.56388211}, //
+
45083 {4.33964443, 1.56572223}, //
+
45084 {4.35630512, 1.56789696}, //
+
45085 {4.37112331, 1.5704062}, //
+
45086 {4.38409996, 1.57325006}, //
+
45087 {4.39424992, 1.57325006}, //
+
45088 {4.39868832, 1.57473946}, //
+
45089 {4.40295887, 1.57618582}, //
+
45090 {4.4070611, 1.57758892}, //
+
45091 {4.41099548, 1.57894874}, //
+
45092 {4.4147625, 1.5802654}, //
+
45093 {4.41836119, 1.58153892}, //
+
45094 {4.42179203, 1.58276916}, //
+
45095 {4.42505503, 1.58395612}, //
+
45096 {4.42815018, 1.58510005}, //
+
45097 {4.43111897, 1.58623338}, //
+
45098 {4.43400431, 1.5873667}, //
+
45099 {4.43680573, 1.58850002}, //
+
45100 {4.43952274, 1.58963335}, //
+
45101 {4.44215631, 1.59076667}, //
+
45102 {4.44470549, 1.59189999}, //
+
45103 {4.44717121, 1.59303331}, //
+
45104 {4.44955254, 1.59416664}, //
+
45105 {4.45184994, 1.59529996}, //
+
45106 {4.45587969, 1.59731483}, //
+
45107 {4.45751667, 1.59813333}, //
+
45108 {4.45890188, 1.59882593}, //
+
45109 {4.46003532, 1.59939253}, //
+
45110 {4.46154642, 1.6001482}, //
+
45111 {4.46204996, 1.60039997}, //
+
45112 {4.45529985, 1.56309998}, //
+
45113 {4.45548344, 1.56309998}, //
+
45114 {4.45562601, 1.56309998}, //
+
45115 {4.4577055, 1.56309998}, //
+
45116 {4.45808315, 1.56309998}, //
+
45117 {4.45846128, 1.56309998}, //
+
45118 {4.45934057, 1.56309998}, //
+
45119 {4.45883751, 1.56032884}, //
+
45120 {4.45836592, 1.56022465}, //
+
45121 {4.4572382, 1.56003582}, //
+
45122 {4.45602798, 1.55988884}, //
+
45123 {4.4547348, 1.55978394}, //
+
45124 {4.45335865, 1.55972099}, //
+
45125 {4.45190001, 1.55970001}, //
+
45126 {4.44830084, 1.55898643}, //
+
45127 {4.44503593, 1.55835676}, //
+
45128 {4.44210577, 1.55781114}, //
+
45129 {4.43950987, 1.55734932}, //
+
45130 {4.43724871, 1.55697155}, //
+
45131 {4.43532228, 1.55667782}, //
+
45132 {4.43373013, 1.55646789}, //
+
45133 {4.43247271, 1.55634201}, //
+
45134 {4.43155003, 1.55630004}, //
+
45135 {4.43010187, 1.55630004}, //
+
45136 {4.4287796, 1.55630004}, //
+
45137 {4.42304993, 1.55630004}, //
+
45138 {4.42261982, 1.55627906}, //
+
45139 {4.4220624, 1.556216}, //
+
45140 {4.42137766, 1.5561111}, //
+
45141 {4.42056608, 1.55596423}, //
+
45142 {4.41962719, 1.55577528}, //
+
45143 {4.41856098, 1.5555445}, //
+
45144 {4.41736794, 1.55527163}, //
+
45145 {4.41604757, 1.55495679}, //
+
45146 {4.4145999, 1.5546}, //
+
45147 {4.41304731, 1.55420125}, //
+
45148 {4.41141224, 1.55376053}, //
+
45149 {4.40969467, 1.55327773}, //
+
45150 {4.40789366, 1.55275309}, //
+
45151 {4.40601063, 1.55218637}, //
+
45152 {4.40404463, 1.55157781}, //
+
45153 {4.40199566, 1.55092716}, //
+
45154 {4.3998642, 1.55023456}, //
+
45155 {4.39764977, 1.54949999}, //
+
45156 {4.39128208, 1.54718149}, //
+
45157 {4.38424492, 1.54473698}, //
+
45158 {4.37653875, 1.54216671}, //
+
45159 {4.36816359, 1.53947031}, //
+
45160 {4.35911894, 1.53664815}, //
+
45161 {4.34940577, 1.53369999}, //
+
45162 {4.33902264, 1.53062594}, //
+
45163 {4.32797098, 1.52742589}, //
+
45164 {4.31624985, 1.52409995}, //
+
45165 {4.30440378, 1.52089942}, //
+
45166 {4.2929759, 1.51807535}, //
+
45167 {4.28196669, 1.51562774}, //
+
45168 {4.27137613, 1.51355684}, //
+
45169 {4.26120377, 1.5118624}, //
+
45170 {4.25145006, 1.51054442}, //
+
45171 {4.24211502, 1.50960314}, //
+
45172 {4.23319817, 1.50903833}, //
+
45173 {4.22469997, 1.50884998}, //
+
45174 });
+
45175 polys.push_back({
+
45176 {6.35739994, 1.53746116}, //
+
45177 {6.35739994, 1.53662157}, //
+
45178 {6.35739994, 1.53712535}, //
+
45179 });
+
45180 polys.push_back({
+
45181 {3.40339255, 1.32067096}, //
+
45182 {3.40098333, 1.32083893}, //
+
45183 {3.39861488, 1.32117474}, //
+
45184 {3.39628696, 1.3216784}, //
+
45185 {3.39400005, 1.32235003}, //
+
45186 {3.39111423, 1.32327282}, //
+
45187 {3.38847899, 1.32453024}, //
+
45188 {3.38609433, 1.32612216}, //
+
45189 {3.38396049, 1.32804871}, //
+
45190 {3.38207722, 1.33030987}, //
+
45191 {3.38044453, 1.33290553}, //
+
45192 {3.37906241, 1.33583581}, //
+
45193 {3.37793088, 1.3391006}, //
+
45194 {3.37704992, 1.3427}, //
+
45195 {3.37633634, 1.34655058}, //
+
45196 {3.37570667, 1.35056913}, //
+
45197 {3.37516117, 1.35475552}, //
+
45198 {3.37469935, 1.35910988}, //
+
45199 {3.3743217, 1.36363208}, //
+
45200 {3.37402773, 1.36832225}, //
+
45201 {3.37381792, 1.37318027}, //
+
45202 {3.37369204, 1.37820613}, //
+
45203 {3.37365007, 1.38339996}, //
+
45204 {3.37369204, 1.38868761}, //
+
45205 {3.37381792, 1.39401734}, //
+
45206 {3.37402773, 1.39938891}, //
+
45207 {3.3743217, 1.40480244}, //
+
45208 {3.37469935, 1.41025805}, //
+
45209 {3.37516117, 1.41575551}, //
+
45210 {3.37570667, 1.42129505}, //
+
45211 {3.37633634, 1.42687654}, //
+
45212 {3.37704992, 1.4325}, //
+
45213 {3.37784743, 1.43800926}, //
+
45214 {3.3787291, 1.44322598}, //
+
45215 {3.37969446, 1.44815004}, //
+
45216 {3.38074374, 1.45278144}, //
+
45217 {3.38187718, 1.45712042}, //
+
45218 {3.38309455, 1.46116662}, //
+
45219 {3.3843956, 1.4649204}, //
+
45220 {3.38578081, 1.46838152}, //
+
45221 {3.38724995, 1.47154999}, //
+
45222 {3.38739634, 1.47391045}, //
+
45223 {3.38783526, 1.47648084}, //
+
45224 {3.38856673, 1.47926116}, //
+
45225 {3.38959074, 1.48225129}, //
+
45226 {3.39090753, 1.48545122}, //
+
45227 {3.39251661, 1.48886108}, //
+
45228 {3.39441848, 1.49248087}, //
+
45229 {3.39661288, 1.49631047}, //
+
45230 {3.39910007, 1.50035}, //
+
45231 {3.40179634, 1.50449443}, //
+
45232 {3.4046185, 1.50863886}, //
+
45233 {3.40756679, 1.51278329}, //
+
45234 {3.41064072, 1.51692772}, //
+
45235 {3.41384077, 1.52107227}, //
+
45236 {3.41716671, 1.5252167}, //
+
45237 {3.42061853, 1.52936113}, //
+
45238 {3.42419624, 1.53350556}, //
+
45239 {3.42790008, 1.53764999}, //
+
45240 {3.4316771, 1.54164815}, //
+
45241 {3.43545318, 1.54535365}, //
+
45242 {3.43922782, 1.54876661}, //
+
45243 {3.44300127, 1.55188704}, //
+
45244 {3.44677353, 1.5547148}, //
+
45245 {3.45054436, 1.55725002}, //
+
45246 {3.45431423, 1.55949259}, //
+
45247 {3.45808268, 1.56144261}, //
+
45248 {3.46184993, 1.56309998}, //
+
45249 {3.46634078, 1.56527221}, //
+
45250 {3.47079062, 1.56727779}, //
+
45251 {3.47519994, 1.56911671}, //
+
45252 {3.47956848, 1.57078886}, //
+
45253 {3.48389626, 1.57229447}, //
+
45254 {3.48818326, 1.57363331}, //
+
45255 {3.49242973, 1.5748055}, //
+
45256 {3.4966352, 1.57581115}, //
+
45257 {3.50079989, 1.57665002}, //
+
45258 {3.5048821, 1.57736361}, //
+
45259 {3.50883961, 1.57799315}, //
+
45260 {3.51267219, 1.57853889}, //
+
45261 {3.51638031, 1.57900059}, //
+
45262 {3.5199635, 1.57937837}, //
+
45263 {3.52342224, 1.57967222}, //
+
45264 {3.52675629, 1.57988214}, //
+
45265 {3.5299654, 1.58000803}, //
+
45266 {3.53305006, 1.58004999}, //
+
45267 {3.54830003, 1.58004999}, //
+
45268 {3.54867768, 1.58000803}, //
+
45269 {3.54905558, 1.57988214}, //
+
45270 {3.54943323, 1.57967222}, //
+
45271 {3.54981112, 1.57937837}, //
+
45272 {3.55018878, 1.57900059}, //
+
45273 {3.55056667, 1.57853889}, //
+
45274 {3.55094433, 1.57799315}, //
+
45275 {3.55132222, 1.57736361}, //
+
45276 {3.55170012, 1.57665002}, //
+
45277 {3.55207705, 1.57593644}, //
+
45278 {3.55245304, 1.57530677}, //
+
45279 {3.55282784, 1.57476115}, //
+
45280 {3.5532012, 1.57429934}, //
+
45281 {3.55357337, 1.57392156}, //
+
45282 {3.55394435, 1.57362783}, //
+
45283 {3.55431414, 1.5734179}, //
+
45284 {3.55468273, 1.57329202}, //
+
45285 {3.5550499, 1.57325006}, //
+
45286 {3.55540681, 1.57320797}, //
+
45287 {3.55572152, 1.57308209}, //
+
45288 {3.55599451, 1.57287228}, //
+
45289 {3.5562253, 1.57257843}, //
+
45290 {3.55641413, 1.57220066}, //
+
45291 {3.55656099, 1.57173884}, //
+
45292 {3.55666614, 1.57119322}, //
+
45293 {3.55672908, 1.57056355}, //
+
45294 {3.55675006, 1.56984997}, //
+
45295 {3.55744267, 1.56978703}, //
+
45296 {3.55800915, 1.5695982}, //
+
45297 {3.55844998, 1.56928337}, //
+
45298 {3.5587647, 1.56884265}, //
+
45299 {3.55895376, 1.56827593}, //
+
45300 {3.5590167, 1.56758332}, //
+
45301 {3.55895376, 1.56676483}, //
+
45302 {3.5587647, 1.56582034}, //
+
45303 {3.55844998, 1.56474996}, //
+
45304 {3.55805135, 1.56362712}, //
+
45305 {3.55761051, 1.5625031}, //
+
45306 {3.55712771, 1.56137776}, //
+
45307 {3.55660319, 1.56025124}, //
+
45308 {3.55603647, 1.55912352}, //
+
45309 {3.55542779, 1.55799448}, //
+
45310 {3.55477715, 1.55686414}, //
+
45311 {3.55408454, 1.55573273}, //
+
45312 {3.55334997, 1.5546}, //
+
45313 {3.55260491, 1.55348825}, //
+
45314 {3.55185866, 1.55241978}, //
+
45315 {3.55111122, 1.55139446}, //
+
45316 {3.55036235, 1.5504123}, //
+
45317 {3.54961228, 1.5494734}, //
+
45318 {3.54886103, 1.54857779}, //
+
45319 {3.54810858, 1.54772532}, //
+
45320 {3.54735494, 1.54691601}, //
+
45321 {3.5466001, 1.54614997}, //
+
45322 {3.54651594, 1.54610801}, //
+
45323 {3.54626417, 1.54598212}, //
+
45324 {3.54584455, 1.54577219}, //
+
45325 {3.54525685, 1.54547834}, //
+
45326 {3.5445013, 1.54510057}, //
+
45327 {3.54357767, 1.54463887}, //
+
45328 {3.54248643, 1.54409325}, //
+
45329 {3.53979993, 1.54275}, //
+
45330 {3.53914928, 1.54111362}, //
+
45331 {3.53870869, 1.53922653}, //
+
45332 {3.53847766, 1.53708887}, //
+
45333 {3.53845668, 1.53470063}, //
+
45334 {3.53864574, 1.5320617}, //
+
45335 {3.53904438, 1.52917218}, //
+
45336 {3.53965306, 1.52603209}, //
+
45337 {3.54047155, 1.5226413}, //
+
45338 {3.54150009, 1.51900005}, //
+
45339 {3.54265428, 1.51514935}, //
+
45340 {3.54385066, 1.51113081}, //
+
45341 {3.54508901, 1.50694442}, //
+
45342 {3.54636908, 1.50259018}, //
+
45343 {3.54769135, 1.49806786}, //
+
45344 {3.54905558, 1.4933778}, //
+
45345 {3.55046177, 1.48851979}, //
+
45346 {3.55190992, 1.4834938}, //
+
45347 {3.55340004, 1.47829998}, //
+
45348 {3.55404019, 1.47535121}, //
+
45349 {3.55447149, 1.47252715}, //
+
45350 {3.55469441, 1.46982777}, //
+
45351 {3.55470872, 1.46725309}, //
+
45352 {3.55451417, 1.4648031}, //
+
45353 {3.554111, 1.4624778}, //
+
45354 {3.55349946, 1.4602772}, //
+
45355 {3.55267906, 1.45820129}, //
+
45356 {3.55165005, 1.45624995}, //
+
45357 {3.55042291, 1.45435119}, //
+
45358 {3.54898572, 1.45241046}, //
+
45359 {3.54733896, 1.45042777}, //
+
45360 {3.54548216, 1.44840312}, //
+
45361 {3.54341555, 1.44633639}, //
+
45362 {3.54113889, 1.44422781}, //
+
45363 {3.53865242, 1.44207716}, //
+
45364 {3.53595614, 1.43988454}, //
+
45365 {3.53305006, 1.43764997}, //
+
45366 {3.53002787, 1.43462777}, //
+
45367 {3.52851677, 1.43311667}, //
+
45368 {3.52700567, 1.43160558}, //
+
45369 {3.52549434, 1.43009448}, //
+
45370 {3.52398324, 1.42858338}, //
+
45371 {3.52247214, 1.42707217}, //
+
45372 {3.52096105, 1.42556107}, //
+
45373 {3.51944995, 1.42404997}, //
+
45374 {3.51723576, 1.42171049}, //
+
45375 {3.51510429, 1.41920304}, //
+
45376 {3.51305556, 1.41652775}, //
+
45377 {3.51108956, 1.41368461}, //
+
45378 {3.50920606, 1.4106735}, //
+
45379 {3.50740552, 1.40749443}, //
+
45380 {3.50568771, 1.40414751}, //
+
45381 {3.5040524, 1.40063274}, //
+
45382 {3.50250006, 1.39695001}, //
+
45383 {3.4978106, 1.39024568}, //
+
45384 {3.49278641, 1.3837105}, //
+
45385 {3.48742771, 1.37734449}, //
+
45386 {3.48173451, 1.37114751}, //
+
45387 {3.47570682, 1.3651197}, //
+
45388 {3.46934438, 1.35926116}, //
+
45389 {3.46264744, 1.35357165}, //
+
45390 {3.455616, 1.34805119}, //
+
45391 {3.44825006, 1.3427}, //
+
45392 {3.44383264, 1.3391006}, //
+
45393 {3.43962526, 1.33583581}, //
+
45394 {3.4356277, 1.33290553}, //
+
45395 {3.43184018, 1.33030987}, //
+
45396 {3.42826223, 1.32804871}, //
+
45397 {3.42489433, 1.32612216}, //
+
45398 {3.42173648, 1.32453024}, //
+
45399 {3.41878819, 1.32327282}, //
+
45400 {3.41604996, 1.32235003}, //
+
45401 {3.41343713, 1.3216784}, //
+
45402 {3.41086483, 1.32117474}, //
+
45403 {3.4083333, 1.32083893}, //
+
45404 {3.40584254, 1.32067096}, //
+
45405 });
+
45406 polys.push_back({
+
45407 {0.313844442, 1.35474443}, //
+
45408 {0.312527776, 1.35531664}, //
+
45409 {0.31099999, 1.35643339}, //
+
45410 {0.309261113, 1.35809445}, //
+
45411 {0.307311118, 1.36029994}, //
+
45412 {0.305150002, 1.36304998}, //
+
45413 {0.302914828, 1.3678019}, //
+
45414 {0.300720364, 1.37301302}, //
+
45415 {0.298566669, 1.37868333}, //
+
45416 {0.296453714, 1.38481295}, //
+
45417 {0.294381469, 1.39140189}, //
+
45418 {0.292349994, 1.39845002}, //
+
45419 {0.290359259, 1.40595746}, //
+
45420 {0.288409263, 1.4139241}, //
+
45421 {0.286500007, 1.42235005}, //
+
45422 {0.284684569, 1.43097472}, //
+
45423 {0.282993823, 1.43951547}, //
+
45424 {0.281427771, 1.44797218}, //
+
45425 {0.279986411, 1.45634508}, //
+
45426 {0.278669745, 1.46463394}, //
+
45427 {0.277477771, 1.47283888}, //
+
45428 {0.27641049, 1.48095989}, //
+
45429 {0.275467902, 1.48899686}, //
+
45430 {0.274650007, 1.49695003}, //
+
45431 {0.273936421, 1.50454748}, //
+
45432 {0.273306787, 1.51151788}, //
+
45433 {0.272761106, 1.51786113}, //
+
45434 {0.272299379, 1.52357721}, //
+
45435 {0.271921605, 1.52866602}, //
+
45436 {0.271627784, 1.53312778}, //
+
45437 {0.271417916, 1.53696239}, //
+
45438 {0.271291971, 1.54016972}, //
+
45439 {0.27125001, 1.54275}, //
+
45440 {0.271963567, 1.54425061}, //
+
45441 {0.2725932, 1.54575253}, //
+
45442 {0.273138881, 1.54725552}, //
+
45443 {0.273600608, 1.54875982}, //
+
45444 {0.273978382, 1.55026543}, //
+
45445 {0.274272233, 1.55177224}, //
+
45446 {0.274482101, 1.55328023}, //
+
45447 {0.274608016, 1.55478954}, //
+
45448 {0.274650007, 1.55630004}, //
+
45449 {0.274650007, 1.55915189}, //
+
45450 {0.274650007, 1.56166291}, //
+
45451 {0.274650007, 1.56279075}, //
+
45452 {0.274650007, 1.56383336}, //
+
45453 {0.274650007, 1.56779325}, //
+
45454 {0.274650007, 1.56880057}, //
+
45455 {0.274650007, 1.56917834}, //
+
45456 {0.274650007, 1.56947219}, //
+
45457 {0.274650007, 1.56968212}, //
+
45458 {0.274650007, 1.56984997}, //
+
45459 {0.276108652, 1.56591606}, //
+
45460 {0.277484566, 1.56164753}, //
+
45461 {0.278777778, 1.55704439}, //
+
45462 {0.279988259, 1.55210674}, //
+
45463 {0.281116039, 1.54683459}, //
+
45464 {0.282161117, 1.54122782}, //
+
45465 {0.283123463, 1.53528643}, //
+
45466 {0.284003079, 1.52901053}, //
+
45467 {0.284799993, 1.52240002}, //
+
45468 {0.28568086, 1.51335561}, //
+
45469 {0.286812335, 1.50431108}, //
+
45470 {0.288194448, 1.49526668}, //
+
45471 {0.289827168, 1.48622227}, //
+
45472 {0.291710496, 1.47717774}, //
+
45473 {0.293844432, 1.46813333}, //
+
45474 {0.296229005, 1.45908892}, //
+
45475 {0.298864186, 1.45004439}, //
+
45476 {0.301750004, 1.44099998}, //
+
45477 {0.303239495, 1.43501914}, //
+
45478 {0.304685801, 1.42912102}, //
+
45479 {0.306088895, 1.42330551}, //
+
45480 {0.307448775, 1.41757286}, //
+
45481 {0.308765441, 1.41192281}, //
+
45482 {0.310038894, 1.4063555}, //
+
45483 {0.311269134, 1.40087104}, //
+
45484 {0.312456161, 1.39546919}, //
+
45485 {0.313600004, 1.39014995}, //
+
45486 {0.314649373, 1.38506055}, //
+
45487 {0.315530866, 1.38034749}, //
+
45488 {0.316244453, 1.37601113}, //
+
45489 {0.316790134, 1.37205124}, //
+
45490 {0.317167908, 1.36846793}, //
+
45491 {0.317377776, 1.36526108}, //
+
45492 {0.317419767, 1.36243081}, //
+
45493 {0.317293823, 1.35997713}, //
+
45494 {0.317000002, 1.35790002}, //
+
45495 {0.316527784, 1.35629439}, //
+
45496 {0.315844446, 1.35523331}, //
+
45497 {0.314949989, 1.35471666}, //
+
45498 });
+
45499 polys.push_back({
+
45500 {5.731493, 1.09857094}, //
+
45501 {5.73117828, 1.098634}, //
+
45502 {5.73090553, 1.09873891}, //
+
45503 {5.73067474, 1.09888577}, //
+
45504 {5.73048592, 1.09907472}, //
+
45505 {5.73033905, 1.09930551}, //
+
45506 {5.73023415, 1.09957838}, //
+
45507 {5.7301712, 1.09989321}, //
+
45508 {5.73015022, 1.10025001}, //
+
45509 {5.7301712, 1.1006068}, //
+
45510 {5.73023415, 1.10092163}, //
+
45511 {5.73033905, 1.1011945}, //
+
45512 {5.73048592, 1.10142529}, //
+
45513 {5.73067474, 1.10161424}, //
+
45514 {5.73090553, 1.1017611}, //
+
45515 {5.73117828, 1.10186601}, //
+
45516 {5.731493, 1.10192907}, //
+
45517 {5.73185015, 1.10195005}, //
+
45518 {5.73220682, 1.10197103}, //
+
45519 {5.73252153, 1.10203397}, //
+
45520 {5.73279428, 1.10213888}, //
+
45521 {5.73302507, 1.10228586}, //
+
45522 {5.73321438, 1.10247469}, //
+
45523 {5.73336124, 1.1027056}, //
+
45524 {5.73346615, 1.10297835}, //
+
45525 {5.73352909, 1.10329318}, //
+
45526 {5.73355007, 1.10364997}, //
+
45527 {5.73355007, 1.10400677}, //
+
45528 {5.73355007, 1.1043216}, //
+
45529 {5.73355007, 1.10482526}, //
+
45530 {5.73355007, 1.1050142}, //
+
45531 {5.73355007, 1.10526609}, //
+
45532 {5.73355007, 1.10535002}, //
+
45533 {5.73806095, 1.11061668}, //
+
45534 {5.7396903, 1.11251855}, //
+
45535 {5.74156952, 1.11471295}, //
+
45536 {5.74370003, 1.11720002}, //
+
45537 {5.7460289, 1.11992776}, //
+
45538 {5.7484827, 1.12282217}, //
+
45539 {5.75106096, 1.12588334}, //
+
45540 {5.75376415, 1.12911105}, //
+
45541 {5.7565918, 1.13250554}, //
+
45542 {5.75954437, 1.13606668}, //
+
45543 {5.7626214, 1.13979447}, //
+
45544 {5.76582336, 1.14368892}, //
+
45545 {5.76914978, 1.14775002}, //
+
45546 {5.77251768, 1.15191483}, //
+
45547 {5.77584362, 1.15612042}, //
+
45548 {5.7791276, 1.16036665}, //
+
45549 {5.78236961, 1.16465366}, //
+
45550 {5.78556967, 1.16898143}, //
+
45551 {5.78872776, 1.17334998}, //
+
45552 {5.79184389, 1.17775929}, //
+
45553 {5.79491806, 1.18220925}, //
+
45554 {5.79794979, 1.18669999}, //
+
45555 {5.8008666, 1.19376051}, //
+
45556 {5.80357218, 1.20136416}, //
+
45557 {5.80606651, 1.20951116}, //
+
45558 {5.80835009, 1.21820128}, //
+
45559 {5.81042242, 1.22743452}, //
+
45560 {5.81228352, 1.23721111}, //
+
45561 {5.81393337, 1.24753082}, //
+
45562 {5.81537199, 1.25839388}, //
+
45563 {5.81659985, 1.26979995}, //
+
45564 {5.81767035, 1.28112221}, //
+
45565 {5.81861496, 1.29173338}, //
+
45566 {5.81943321, 1.30163336}, //
+
45567 {5.82012606, 1.31082225}, //
+
45568 {5.82069254, 1.31930006}, //
+
45569 {5.82113314, 1.32706666}, //
+
45570 {5.82144833, 1.33412218}, //
+
45571 {5.82163715, 1.34046662}, //
+
45572 {5.8217001, 1.34609997}, //
+
45573 {5.82178354, 1.35233152}, //
+
45574 {5.82203341, 1.35898149}, //
+
45575 {5.82245016, 1.36605}, //
+
45576 {5.82303333, 1.37353706}, //
+
45577 {5.8237834, 1.38144255}, //
+
45578 {5.82469988, 1.38976669}, //
+
45579 {5.82578325, 1.39850926}, //
+
45580 {5.82703352, 1.40767038}, //
+
45581 {5.8284502, 1.41725004}, //
+
45582 {5.8299613, 1.42679882}, //
+
45583 {5.8314724, 1.43584502}, //
+
45584 {5.83298349, 1.44438887}, //
+
45585 {5.83449459, 1.45243025}, //
+
45586 {5.83600569, 1.45996916}, //
+
45587 {5.83751678, 1.46700561}, //
+
45588 {5.83902788, 1.47353947}, //
+
45589 {5.84053898, 1.47957098}, //
+
45590 {5.84205008, 1.48510003}, //
+
45591 {5.84364462, 1.48882473}, //
+
45592 {5.84540558, 1.49246538}, //
+
45593 {5.84733343, 1.49602222}, //
+
45594 {5.8494277, 1.49949503}, //
+
45595 {5.85168886, 1.50288391}, //
+
45596 {5.85411644, 1.50618887}, //
+
45597 {5.85671091, 1.5094099}, //
+
45598 {5.85947227, 1.5125469}, //
+
45599 {5.86240005, 1.51559997}, //
+
45600 {5.86541128, 1.51854873}, //
+
45601 {5.86842203, 1.5213728}, //
+
45602 {5.87143326, 1.52407217}, //
+
45603 {5.87444448, 1.52664697}, //
+
45604 {5.87745571, 1.52909696}, //
+
45605 {5.88046646, 1.53142226}, //
+
45606 {5.88347769, 1.53362286}, //
+
45607 {5.88648891, 1.53569877}, //
+
45608 {5.88950014, 1.53764999}, //
+
45609 {5.89243746, 1.53943396}, //
+
45610 {5.89520597, 1.541008}, //
+
45611 {5.89780569, 1.54237223}, //
+
45612 {5.90023565, 1.54352653}, //
+
45613 {5.90249681, 1.54447103}, //
+
45614 {5.9045887, 1.54520559}, //
+
45615 {5.90651178, 1.54573023}, //
+
45616 {5.90826559, 1.54604506}, //
+
45617 {5.90985012, 1.54614997}, //
+
45618 {5.91052151, 1.54463887}, //
+
45619 {5.91102552, 1.54312778}, //
+
45620 {5.91136122, 1.54161668}, //
+
45621 {5.91152906, 1.54010558}, //
+
45622 {5.91152906, 1.53859448}, //
+
45623 {5.91136122, 1.53708339}, //
+
45624 {5.91102552, 1.53557217}, //
+
45625 {5.91052151, 1.53406107}, //
+
45626 {5.90985012, 1.53254998}, //
+
45627 {5.90905285, 1.53109133}, //
+
45628 {5.90817356, 1.52971542}, //
+
45629 {5.9072113, 1.52842224}, //
+
45630 {5.90616608, 1.52721179}, //
+
45631 {5.90503836, 1.52608395}, //
+
45632 {5.90382767, 1.52503884}, //
+
45633 {5.90253448, 1.52407658}, //
+
45634 {5.90115881, 1.52319694}, //
+
45635 {5.89970016, 1.52240002}, //
+
45636 {5.89814711, 1.52072155}, //
+
45637 {5.89650965, 1.51870859}, //
+
45638 {5.89478874, 1.51636112}, //
+
45639 {5.89298391, 1.51367903}, //
+
45640 {5.89109516, 1.51066232}, //
+
45641 {5.88912201, 1.50731111}, //
+
45642 {5.88706541, 1.50362527}, //
+
45643 {5.88492489, 1.49960494}, //
+
45644 {5.88269997, 1.49524999}, //
+
45645 {5.88040257, 1.49072838}, //
+
45646 {5.87802076, 1.48620808}, //
+
45647 {5.87555552, 1.48168886}, //
+
45648 {5.87300634, 1.47717094}, //
+
45649 {5.87037277, 1.47265434}, //
+
45650 {5.86765575, 1.46813893}, //
+
45651 {5.86485434, 1.46362472}, //
+
45652 {5.86196899, 1.45911169}, //
+
45653 {5.85900021, 1.45459998}, //
+
45654 {5.85753107, 1.45045614}, //
+
45655 {5.85614586, 1.44555807}, //
+
45656 {5.85484457, 1.43990552}, //
+
45657 {5.8536272, 1.43349874}, //
+
45658 {5.85249376, 1.4263376}, //
+
45659 {5.85144424, 1.41842222}, //
+
45660 {5.85047913, 1.40975249}, //
+
45661 {5.84959745, 1.4003284}, //
+
45662 {5.84880018, 1.39014995}, //
+
45663 {5.84809685, 1.37956297}, //
+
45664 {5.84747648, 1.36889076}, //
+
45665 {5.84693909, 1.35813332}, //
+
45666 {5.84648418, 1.34729075}, //
+
45667 {5.84611177, 1.33636296}, //
+
45668 {5.84582233, 1.32535005}, //
+
45669 {5.84561539, 1.3142519}, //
+
45670 {5.84549141, 1.30306852}, //
+
45671 {5.84544992, 1.29180002}, //
+
45672 {5.84544992, 1.28087711}, //
+
45673 {5.84544992, 1.27070868}, //
+
45674 {5.84544992, 1.26129448}, //
+
45675 {5.84544992, 1.25263453}, //
+
45676 {5.84544992, 1.24472904}, //
+
45677 {5.84544992, 1.22064996}, //
+
45678 {5.84524059, 1.21610677}, //
+
45679 {5.84461308, 1.21152163}, //
+
45680 {5.84356689, 1.2068944}, //
+
45681 {5.84210205, 1.20222533}, //
+
45682 {5.84021854, 1.19751418}, //
+
45683 {5.83791685, 1.19276106}, //
+
45684 {5.8351965, 1.18796611}, //
+
45685 {5.83205748, 1.18312895}, //
+
45686 {5.82849979, 1.17824996}, //
+
45687 {5.82464933, 1.17337096}, //
+
45688 {5.82063103, 1.16853392}, //
+
45689 {5.8164444, 1.16373885}, //
+
45690 {5.81208992, 1.15898585}, //
+
45691 {5.80756807, 1.1542747}, //
+
45692 {5.8028779, 1.14960551}, //
+
45693 {5.79801989, 1.1449784}, //
+
45694 {5.79299402, 1.14039326}, //
+
45695 {5.78779984, 1.13584995}, //
+
45696 {5.78264809, 1.13145375}, //
+
45697 {5.77774811, 1.1273092}, //
+
45698 {5.7730999, 1.12341666}, //
+
45699 {5.76870394, 1.11977589}, //
+
45700 {5.76455927, 1.11638701}, //
+
45701 {5.76066685, 1.11325002}, //
+
45702 {5.75702572, 1.11036479}, //
+
45703 {5.75363684, 1.10773146}, //
+
45704 {5.7505002, 1.10535002}, //
+
45705 {5.74903107, 1.10532904}, //
+
45706 {5.74764585, 1.10526609}, //
+
45707 {5.74634457, 1.10516107}, //
+
45708 {5.7451272, 1.1050142}, //
+
45709 {5.74399376, 1.10482526}, //
+
45710 {5.74294424, 1.10459447}, //
+
45711 {5.74197912, 1.1043216}, //
+
45712 {5.74109745, 1.10400677}, //
+
45713 {5.74030018, 1.10364997}, //
+
45714 {5.73957586, 1.1032722}, //
+
45715 {5.73889256, 1.10289443}, //
+
45716 {5.73824978, 1.10251665}, //
+
45717 {5.73764801, 1.10213888}, //
+
45718 {5.73708725, 1.1017611}, //
+
45719 {5.73656654, 1.10138333}, //
+
45720 {5.73608685, 1.10100555}, //
+
45721 {5.73564816, 1.10062778}, //
+
45722 {5.73525, 1.10025001}, //
+
45723 {5.73487234, 1.09989321}, //
+
45724 {5.73449421, 1.09957838}, //
+
45725 {5.73411655, 1.09930551}, //
+
45726 {5.7337389, 1.09907472}, //
+
45727 {5.73336124, 1.09888577}, //
+
45728 {5.73298311, 1.09873891}, //
+
45729 {5.73260546, 1.098634}, //
+
45730 {5.7322278, 1.09857094}, //
+
45731 {5.73185015, 1.09854996}, //
+
45732 });
+
45733 polys.push_back({
+
45734 {6.09294987, 1.22471356}, //
+
45735 {6.09294987, 1.2251333}, //
+
45736 {6.09294987, 1.22431481}, //
+
45737 });
+
45738 polys.push_back({
+
45739 {4.27137709, 1.421808}, //
+
45740 {4.2654109, 1.42293894}, //
+
45741 {4.25931787, 1.42482281}, //
+
45742 {4.25309753, 1.42745984}, //
+
45743 {4.24674988, 1.43085003}, //
+
45744 {4.2404542, 1.43465865}, //
+
45745 {4.23436737, 1.43855119}, //
+
45746 {4.22848892, 1.44252777}, //
+
45747 {4.22281933, 1.44658828}, //
+
45748 {4.21735811, 1.45073271}, //
+
45749 {4.21210575, 1.45496106}, //
+
45750 {4.20706177, 1.45927346}, //
+
45751 {4.20222664, 1.46366978}, //
+
45752 {4.19759989, 1.46815002}, //
+
45753 {4.19543839, 1.46958768}, //
+
45754 {4.19348621, 1.47090065}, //
+
45755 {4.19174433, 1.47208893}, //
+
45756 {4.19021225, 1.47315252}, //
+
45757 {4.18888998, 1.47409141}, //
+
45758 {4.187778, 1.47490561}, //
+
45759 {4.18687534, 1.47559512}, //
+
45760 {4.1861825, 1.47615993}, //
+
45761 {4.18569994, 1.47660005}, //
+
45762 {4.18609858, 1.47624326}, //
+
45763 {4.18653965, 1.47592843}, //
+
45764 {4.18702221, 1.47565556}, //
+
45765 {4.18754673, 1.47542465}, //
+
45766 {4.18811369, 1.47523582}, //
+
45767 {4.18872213, 1.47508883}, //
+
45768 {4.18937302, 1.47498393}, //
+
45769 {4.19006538, 1.47492099}, //
+
45770 {4.19080019, 1.47490001}, //
+
45771 {4.19228935, 1.47415495}, //
+
45772 {4.1937356, 1.4734087}, //
+
45773 {4.19513893, 1.47266114}, //
+
45774 {4.19649887, 1.47191238}, //
+
45775 {4.19781542, 1.47116232}, //
+
45776 {4.19908905, 1.47041106}, //
+
45777 {4.20031929, 1.46965861}, //
+
45778 {4.20150614, 1.46890497}, //
+
45779 {4.20265007, 1.46815002}, //
+
45780 {4.20380449, 1.46743643}, //
+
45781 {4.2050004, 1.46680677}, //
+
45782 {4.20623875, 1.46626115}, //
+
45783 {4.20751905, 1.46579933}, //
+
45784 {4.20884132, 1.46542156}, //
+
45785 {4.21020555, 1.46512783}, //
+
45786 {4.21161175, 1.4649179}, //
+
45787 {4.2130599, 1.46479201}, //
+
45788 {4.21455002, 1.46475005}, //
+
45789 {4.2169795, 1.46475005}, //
+
45790 {4.21888351, 1.46475005}, //
+
45791 {4.22124624, 1.46475005}, //
+
45792 {4.22406864, 1.46475005}, //
+
45793 {4.22735023, 1.46475005}, //
+
45794 {4.23529053, 1.46475005}, //
+
45795 {4.23995018, 1.46475005}, //
+
45796 {4.24485016, 1.46479201}, //
+
45797 {4.24975014, 1.4649179}, //
+
45798 {4.25465012, 1.46512783}, //
+
45799 {4.25955009, 1.46542156}, //
+
45800 {4.26445007, 1.46579933}, //
+
45801 {4.26935005, 1.46626115}, //
+
45802 {4.27425003, 1.46680677}, //
+
45803 {4.27915001, 1.46743643}, //
+
45804 {4.28404999, 1.46815002}, //
+
45805 {4.28892899, 1.46886361}, //
+
45806 {4.29376602, 1.46949315}, //
+
45807 {4.2985611, 1.47003889}, //
+
45808 {4.30331421, 1.47050059}, //
+
45809 {4.30802536, 1.47087836}, //
+
45810 {4.31269455, 1.47117221}, //
+
45811 {4.31732178, 1.47138214}, //
+
45812 {4.32190657, 1.47150803}, //
+
45813 {4.32644987, 1.47154999}, //
+
45814 {4.33161211, 1.4731549}, //
+
45815 {4.33656597, 1.47496974}, //
+
45816 {4.34131098, 1.4769944}, //
+
45817 {4.34584761, 1.47922897}, //
+
45818 {4.35017538, 1.48167348}, //
+
45819 {4.3542943, 1.48432779}, //
+
45820 {4.35820484, 1.48719203}, //
+
45821 {4.36190701, 1.49026608}, //
+
45822 {4.36539984, 1.49354994}, //
+
45823 {4.36869431, 1.49688637}, //
+
45824 {4.37177801, 1.50009573}, //
+
45825 {4.37465, 1.50317776}, //
+
45826 {4.37731123, 1.50613272}, //
+
45827 {4.37976122, 1.50896049}, //
+
45828 {4.38199997, 1.51166105}, //
+
45829 {4.38402796, 1.51423454}, //
+
45830 {4.38584423, 1.51668084}, //
+
45831 {4.38745022, 1.51900005}, //
+
45832 {4.3890233, 1.52044749}, //
+
45833 {4.3907218, 1.52176785}, //
+
45834 {4.39254427, 1.52296114}, //
+
45835 {4.39449215, 1.52402711}, //
+
45836 {4.39656401, 1.524966}, //
+
45837 {4.39876127, 1.52577782}, //
+
45838 {4.40108252, 1.52646232}, //
+
45839 {4.40352917, 1.52701974}, //
+
45840 {4.4060998, 1.52744997}, //
+
45841 {4.40872288, 1.5277648}, //
+
45842 {4.41130257, 1.52795374}, //
+
45843 {4.41383886, 1.52801669}, //
+
45844 {4.41633224, 1.52795374}, //
+
45845 {4.41878223, 1.5277648}, //
+
45846 {4.42118883, 1.52744997}, //
+
45847 {4.42355251, 1.52700925}, //
+
45848 {4.4258728, 1.52644265}, //
+
45849 {4.42815018, 1.52575004}, //
+
45850 {4.43037415, 1.52500498}, //
+
45851 {4.43251276, 1.52425861}, //
+
45852 {4.4345665, 1.52351105}, //
+
45853 {4.43653536, 1.5227623}, //
+
45854 {4.43841839, 1.52201235}, //
+
45855 {4.44021654, 1.5212611}, //
+
45856 {4.44192982, 1.52050865}, //
+
45857 {4.44355726, 1.51975489}, //
+
45858 {4.44509983, 1.51900005}, //
+
45859 {4.44169998, 1.49189997}, //
+
45860 {4.44038343, 1.49189997}, //
+
45861 {4.43935919, 1.49189997}, //
+
45862 {4.4298501, 1.49189997}, //
+
45863 {4.42711163, 1.49181604}, //
+
45864 {4.42416382, 1.49156415}, //
+
45865 {4.42100573, 1.49114442}, //
+
45866 {4.41763783, 1.49055684}, //
+
45867 {4.41405964, 1.48980129}, //
+
45868 {4.41027212, 1.48887777}, //
+
45869 {4.4062748, 1.48778641}, //
+
45870 {4.40206718, 1.4865272}, //
+
45871 {4.39764977, 1.48510003}, //
+
45872 {4.39461708, 1.48497403}, //
+
45873 {4.39154148, 1.48459625}, //
+
45874 {4.38842201, 1.48396671}, //
+
45875 {4.38526011, 1.48308516}, //
+
45876 {4.38205433, 1.48195183}, //
+
45877 {4.37880564, 1.48056662}, //
+
45878 {4.37551355, 1.47892964}, //
+
45879 {4.37217855, 1.47704077}, //
+
45880 {4.36880016, 1.47490001}, //
+
45881 {4.3653903, 1.47260249}, //
+
45882 {4.36193848, 1.47022104}, //
+
45883 {4.35844421, 1.46775556}, //
+
45884 {4.35490847, 1.46520615}, //
+
45885 {4.35133076, 1.46257281}, //
+
45886 {4.34771109, 1.45985556}, //
+
45887 {4.34404945, 1.45705438}, //
+
45888 {4.34034586, 1.45416915}, //
+
45889 {4.33659983, 1.45120001}, //
+
45890 {4.33145809, 1.44823027}, //
+
45891 {4.32656527, 1.44534326}, //
+
45892 {4.3219223, 1.44253886}, //
+
45893 {4.31752825, 1.43981731}, //
+
45894 {4.31338406, 1.43717837}, //
+
45895 {4.30948877, 1.43462217}, //
+
45896 {4.30584335, 1.43214881}, //
+
45897 {4.30244684, 1.42975807}, //
+
45898 {4.29930019, 1.42744994}, //
+
45899 {4.29396963, 1.42481542}, //
+
45900 {4.28851223, 1.42293394}, //
+
45901 {4.28292799, 1.4218055}, //
+
45902 {4.27721596, 1.42143023}, //
+
45903 });
+
45904 polys.push_back({
+
45905 {1.17559445, 1.34533894}, //
+
45906 {1.17097163, 1.34575427}, //
+
45907 {1.16588831, 1.34650433}, //
+
45908 {1.16034448, 1.3475889}, //
+
45909 {1.15434015, 1.34900808}, //
+
45910 {1.14787531, 1.35076177}, //
+
45911 {1.14094996, 1.35284996}, //
+
45912 {1.13379383, 1.35513699}, //
+
45913 {1.12663639, 1.35746479}, //
+
45914 {1.11947775, 1.35983336}, //
+
45915 {1.11231792, 1.36224258}, //
+
45916 {1.10515678, 1.36469257}, //
+
45917 {1.09799445, 1.36718333}, //
+
45918 {1.09083092, 1.36971486}, //
+
45919 {1.08366609, 1.37228703}, //
+
45920 {1.07650006, 1.37489998}, //
+
45921 {1.06949079, 1.37751293}, //
+
45922 {1.06277406, 1.38008523}, //
+
45923 {1.05634999, 1.38261664}, //
+
45924 {1.05021846, 1.3851074}, //
+
45925 {1.04437959, 1.38755739}, //
+
45926 {1.03883338, 1.38996661}, //
+
45927 {1.03357959, 1.39233518}, //
+
45928 {1.02861857, 1.39466298}, //
+
45929 {1.02394998, 1.39695001}, //
+
45930 {1.01920807, 1.3991636}, //
+
45931 {1.01400435, 1.40129316}, //
+
45932 {1.00833893, 1.40333891}, //
+
45933 {1.00221169, 1.40530062}, //
+
45934 {0.995622814, 1.4071784}, //
+
45935 {0.98857224, 1.40897226}, //
+
45936 {0.981059849, 1.41068208}, //
+
45937 {0.973085821, 1.41230798}, //
+
45938 {0.964649975, 1.41384995}, //
+
45939 {0.956046283, 1.41531909}, //
+
45940 {0.947568536, 1.4167043}, //
+
45941 {0.939216673, 1.41800559}, //
+
45942 {0.930990756, 1.41922283}, //
+
45943 {0.922890723, 1.42035615}, //
+
45944 {0.914916694, 1.42140555}, //
+
45945 {0.907068491, 1.42237103}, //
+
45946 {0.899346292, 1.42325246}, //
+
45947 {0.891749978, 1.42404997}, //
+
45948 {0.888024688, 1.42480552}, //
+
45949 {0.884382069, 1.42556107}, //
+
45950 {0.880822241, 1.42631662}, //
+
45951 {0.877345085, 1.42707217}, //
+
45952 {0.873950601, 1.42782784}, //
+
45953 {0.870638907, 1.42858338}, //
+
45954 {0.867409885, 1.42933893}, //
+
45955 {0.864263594, 1.43009448}, //
+
45956 {0.861199975, 1.43085003}, //
+
45957 {0.853792608, 1.43156362}, //
+
45958 {0.846637011, 1.43219316}, //
+
45959 {0.839733362, 1.4327389}, //
+
45960 {0.833081484, 1.4332006}, //
+
45961 {0.826681495, 1.43357837}, //
+
45962 {0.820533335, 1.43387222}, //
+
45963 {0.814637065, 1.43408215}, //
+
45964 {0.808992565, 1.43420804}, //
+
45965 {0.803600013, 1.43425}, //
+
45966 {0.801292002, 1.43429196}, //
+
45967 {0.79890126, 1.43441784}, //
+
45968 {0.796427786, 1.43462777}, //
+
45969 {0.793871582, 1.43492162}, //
+
45970 {0.791232705, 1.4352994}, //
+
45971 {0.788511097, 1.43576109}, //
+
45972 {0.785706818, 1.43630683}, //
+
45973 {0.782819748, 1.43693638}, //
+
45974 {0.779850006, 1.43764997}, //
+
45975 {0.777562976, 1.43771231}, //
+
45976 {0.775235176, 1.43789935}, //
+
45977 {0.772866666, 1.43821108}, //
+
45978 {0.770457387, 1.43864751}, //
+
45979 {0.768007398, 1.43920863}, //
+
45980 {0.765516639, 1.43989444}, //
+
45981 {0.76298517, 1.44070494}, //
+
45982 {0.760412991, 1.44164014}, //
+
45983 {0.757799983, 1.44270003}, //
+
45984 {0.755228996, 1.44383276}, //
+
45985 {0.752782702, 1.44496417}, //
+
45986 {0.750461102, 1.44609439}, //
+
45987 {0.748264194, 1.44722342}, //
+
45988 {0.746191978, 1.44835126}, //
+
45989 {0.744244456, 1.44947779}, //
+
45990 {0.742421627, 1.45060313}, //
+
45991 {0.740723431, 1.45172715}, //
+
45992 {0.739149988, 1.45284998}, //
+
45993 {0.737733305, 1.45392036}, //
+
45994 {0.734483361, 1.45637596}, //
+
45995 {0.733150005, 1.45738328}, //
+
45996 {0.732733309, 1.45769811}, //
+
45997 {0.732483327, 1.45788705}, //
+
45998 {0.7324, 1.45795}, //
+
45999 {0.749459565, 1.5063976}, //
+
46000 {0.752592564, 1.51299381}, //
+
46001 {0.75378716, 1.51559997}, //
+
46002 {0.754376531, 1.51559997}, //
+
46003 {0.762849987, 1.51559997}, //
+
46004 {0.76444447, 1.51562095}, //
+
46005 {0.766205549, 1.51568401}, //
+
46006 {0.768133342, 1.51578891}, //
+
46007 {0.77022779, 1.51593578}, //
+
46008 {0.772488892, 1.51612473}, //
+
46009 {0.774916649, 1.51635551}, //
+
46010 {0.77751112, 1.51662838}, //
+
46011 {0.780272245, 1.51694322}, //
+
46012 {0.783200026, 1.51730001}, //
+
46013 {0.786221623, 1.5176568}, //
+
46014 {0.78924197, 1.51797163}, //
+
46015 {0.792261124, 1.51824439}, //
+
46016 {0.795279026, 1.51847529}, //
+
46017 {0.798295677, 1.51866424}, //
+
46018 {0.801311135, 1.51881111}, //
+
46019 {0.804325283, 1.51891601}, //
+
46020 {0.807338297, 1.51897895}, //
+
46021 {0.810350001, 1.51900005}, //
+
46022 {0.812553108, 1.51897895}, //
+
46023 {0.814629018, 1.51891601}, //
+
46024 {0.816577792, 1.51881111}, //
+
46025 {0.81839937, 1.51866424}, //
+
46026 {0.820093811, 1.51847529}, //
+
46027 {0.821661115, 1.51824439}, //
+
46028 {0.823101223, 1.51797163}, //
+
46029 {0.824414194, 1.5176568}, //
+
46030 {0.825600028, 1.51730001}, //
+
46031 {0.826796293, 1.51690125}, //
+
46032 {0.828118503, 1.51646054}, //
+
46033 {0.829566658, 1.51597774}, //
+
46034 {0.832840741, 1.51488638}, //
+
46035 {0.834666669, 1.51427782}, //
+
46036 {0.836618543, 1.51362717}, //
+
46037 {0.838696301, 1.51293457}, //
+
46038 {0.840900004, 1.5122}, //
+
46039 {0.843364835, 1.51141298}, //
+
46040 {0.84624815, 1.51054072}, //
+
46041 {0.849550009, 1.50958335}, //
+
46042 {0.853270352, 1.50854075}, //
+
46043 {0.857409239, 1.50741291}, //
+
46044 {0.86196667, 1.50619996}, //
+
46045 {0.866942585, 1.50490189}, //
+
46046 {0.872337043, 1.50351846}, //
+
46047 {0.878149986, 1.50205004}, //
+
46048 {0.885609865, 1.49983585}, //
+
46049 {0.892900646, 1.49770427}, //
+
46050 {0.900022209, 1.49565554}, //
+
46051 {0.906974673, 1.49368954}, //
+
46052 {0.913758039, 1.49180615}, //
+
46053 {0.920372248, 1.49000561}, //
+
46054 {0.926817298, 1.48828769}, //
+
46055 {0.93309319, 1.48665249}, //
+
46056 {0.939199984, 1.48510003}, //
+
46057 {0.946020365, 1.48430252}, //
+
46058 {0.95292592, 1.48342097}, //
+
46059 {0.959916651, 1.48245561}, //
+
46060 {0.966992617, 1.48140621}, //
+
46061 {0.974153697, 1.48027289}, //
+
46062 {0.981400013, 1.47905552}, //
+
46063 {0.988731503, 1.47775435}, //
+
46064 {0.996148169, 1.47636914}, //
+
46065 {1.00364995, 1.47490001}, //
+
46066 {1.00729072, 1.47348332}, //
+
46067 {1.0106796, 1.4722333}, //
+
46068 {1.01381671, 1.47115004}, //
+
46069 {1.01670182, 1.47023332}, //
+
46070 {1.01933515, 1.46948338}, //
+
46071 {1.02171671, 1.46889997}, //
+
46072 {1.02384627, 1.46848333}, //
+
46073 {1.02572405, 1.46823335}, //
+
46074 {1.02734995, 1.46815002}, //
+
46075 {1.02890241, 1.46815002}, //
+
46076 {1.03053761, 1.46815002}, //
+
46077 {1.03225553, 1.46815002}, //
+
46078 {1.03790557, 1.46815002}, //
+
46079 {1.0399543, 1.46815002}, //
+
46080 {1.04429996, 1.46815002}, //
+
46081 {1.04505551, 1.46812904}, //
+
46082 {1.04581106, 1.4680661}, //
+
46083 {1.04656672, 1.46796107}, //
+
46084 {1.04732227, 1.46781421}, //
+
46085 {1.04807782, 1.46762526}, //
+
46086 {1.04883337, 1.46739447}, //
+
46087 {1.04958892, 1.4671216}, //
+
46088 {1.05034447, 1.46680677}, //
+
46089 {1.05110002, 1.46644998}, //
+
46090 {1.05189693, 1.46605122}, //
+
46091 {1.05277658, 1.4656105}, //
+
46092 {1.05373883, 1.46512783}, //
+
46093 {1.05478394, 1.46460307}, //
+
46094 {1.05591178, 1.46403646}, //
+
46095 {1.05712223, 1.46342778}, //
+
46096 {1.05841541, 1.46277714}, //
+
46097 {1.05979133, 1.46208453}, //
+
46098 {1.06124997, 1.46134996}, //
+
46099 {1.06288648, 1.46057343}, //
+
46100 {1.06477344, 1.45975494}, //
+
46101 {1.0669111, 1.45889449}, //
+
46102 {1.06929934, 1.45799196}, //
+
46103 {1.07193828, 1.45704758}, //
+
46104 {1.07482779, 1.45606112}, //
+
46105 {1.07796788, 1.45503271}, //
+
46106 {1.08135867, 1.45396233}, //
+
46107 {1.08500004, 1.45284998}, //
+
46108 {1.08882964, 1.45174813}, //
+
46109 {1.09278524, 1.45068705}, //
+
46110 {1.09686661, 1.44966662}, //
+
46111 {1.1010741, 1.44868708}, //
+
46112 {1.10540736, 1.44774818}, //
+
46113 {1.10986662, 1.44684994}, //
+
46114 {1.11445189, 1.44599259}, //
+
46115 {1.11916292, 1.44517589}, //
+
46116 {1.12399995, 1.44439995}, //
+
46117 {1.12879503, 1.44366539}, //
+
46118 {1.13338029, 1.4429729}, //
+
46119 {1.13775551, 1.44232225}, //
+
46120 {1.14192104, 1.44171357}, //
+
46121 {1.14587653, 1.44114697}, //
+
46122 {1.1496222, 1.44062221}, //
+
46123 {1.15315807, 1.44013953}, //
+
46124 {1.15648401, 1.43969882}, //
+
46125 {1.15960002, 1.43929994}, //
+
46126 {1.16244388, 1.43895376}, //
+
46127 {1.16712773, 1.43838334}, //
+
46128 {1.16896784, 1.43815923}, //
+
46129 {1.17164445, 1.43783331}, //
+
46130 {1.17248082, 1.4377315}, //
+
46131 {1.17298269, 1.43767035}, //
+
46132 {1.17314994, 1.43764997}, //
+
46133 {1.17687464, 1.43693638}, //
+
46134 {1.18051541, 1.43630683}, //
+
46135 {1.18407226, 1.43576109}, //
+
46136 {1.18754506, 1.4352994}, //
+
46137 {1.19093394, 1.43492162}, //
+
46138 {1.1942389, 1.43462777}, //
+
46139 {1.19745994, 1.43441784}, //
+
46140 {1.20059693, 1.43429196}, //
+
46141 {1.20365, 1.43425}, //
+
46142 {1.20658767, 1.43422902}, //
+
46143 {1.20935619, 1.43416607}, //
+
46144 {1.21195555, 1.43406117}, //
+
46145 {1.21438575, 1.43391418}, //
+
46146 {1.21664691, 1.43372536}, //
+
46147 {1.21873891, 1.43349445}, //
+
46148 {1.22066176, 1.43322158}, //
+
46149 {1.22241545, 1.43290675}, //
+
46150 {1.22399998, 1.43254995}, //
+
46151 {1.22544813, 1.43217218}, //
+
46152 {1.2267704, 1.4317944}, //
+
46153 {1.22796667, 1.43141663}, //
+
46154 {1.22903705, 1.43103886}, //
+
46155 {1.22998142, 1.43066108}, //
+
46156 {1.23080003, 1.43028331}, //
+
46157 {1.23149264, 1.42990553}, //
+
46158 {1.23205924, 1.42952776}, //
+
46159 {1.23249996, 1.42914999}, //
+
46160 {1.23401105, 1.42763889}, //
+
46161 {1.23411608, 1.42753398}, //
+
46162 {1.23417902, 1.42747104}, //
+
46163 {1.2342, 1.42744994}, //
+
46164 {1.23649752, 1.42665243}, //
+
46165 {1.23887897, 1.425771}, //
+
46166 {1.24134445, 1.42480552}, //
+
46167 {1.24389386, 1.42375612}, //
+
46168 {1.24652719, 1.4226228}, //
+
46169 {1.24924445, 1.42140555}, //
+
46170 {1.25204563, 1.42010427}, //
+
46171 {1.25493085, 1.41871917}, //
+
46172 {1.2579, 1.41725004}, //
+
46173 {1.26087964, 1.41577041}, //
+
46174 {1.26377404, 1.41433144}, //
+
46175 {1.26658332, 1.41293335}, //
+
46176 {1.26930737, 1.41157591}, //
+
46177 {1.27194631, 1.41025925}, //
+
46178 {1.27450001, 1.40898335}, //
+
46179 {1.27696848, 1.4077481}, //
+
46180 {1.27935183, 1.40655375}, //
+
46181 {1.28164995, 1.40540004}, //
+
46182 {1.28731668, 1.40259445}, //
+
46183 {1.28746104, 1.40252292}, //
+
46184 {1.28731418, 1.40208828}, //
+
46185 {1.28599381, 1.39756787}, //
+
46186 {1.28505003, 1.39355004}, //
+
46187 {1.28425312, 1.39108455}, //
+
46188 {1.28337348, 1.38819933}, //
+
46189 {1.28247952, 1.38512945}, //
+
46190 {1.26470006, 1.35625005}, //
+
46191 {1.26455307, 1.35622907}, //
+
46192 {1.26411235, 1.35616601}, //
+
46193 {1.26337779, 1.3560611}, //
+
46194 {1.26234937, 1.35591424}, //
+
46195 {1.25750124, 1.35522163}, //
+
46196 {1.25529754, 1.3549068}, //
+
46197 {1.25279999, 1.35455}, //
+
46198 {1.25008273, 1.35415125}, //
+
46199 {1.24719751, 1.35371053}, //
+
46200 {1.24414444, 1.35322773}, //
+
46201 {1.2409234, 1.35270309}, //
+
46202 {1.23753452, 1.35213637}, //
+
46203 {1.23397779, 1.35152781}, //
+
46204 {1.2302531, 1.35087717}, //
+
46205 {1.22636044, 1.35018456}, //
+
46206 {1.22230005, 1.34944999}, //
+
46207 {1.21817648, 1.3487469}, //
+
46208 {1.21409512, 1.34812653}, //
+
46209 {1.21005559, 1.3475889}, //
+
46210 {1.20605803, 1.34713399}, //
+
46211 {1.20210242, 1.3467617}, //
+
46212 {1.1981889, 1.34647226}, //
+
46213 {1.19431734, 1.34626544}, //
+
46214 {1.19048762, 1.34614134}, //
+
46215 {1.18669999, 1.34609997}, //
+
46216 {1.18345869, 1.34551167}, //
+
46217 {1.17975676, 1.345258}, //
+
46218 });
+
46219 polys.push_back({
+
46220 {3.69580007, 1.45459998}, //
+
46221 {3.6940999, 1.45624995}, //
+
46222 {3.69374323, 1.45662773}, //
+
46223 {3.69342828, 1.4570055}, //
+
46224 {3.69315553, 1.45738328}, //
+
46225 {3.69292474, 1.45776117}, //
+
46226 {3.69273591, 1.45813894}, //
+
46227 {3.69258881, 1.45851672}, //
+
46228 {3.6924839, 1.45889449}, //
+
46229 {3.69242096, 1.45927227}, //
+
46230 {3.69239998, 1.45965004}, //
+
46231 {3.69235802, 1.46000683}, //
+
46232 {3.69223213, 1.46032155}, //
+
46233 {3.69202232, 1.46059442}, //
+
46234 {3.69172835, 1.46082532}, //
+
46235 {3.6913507, 1.46101415}, //
+
46236 {3.69088888, 1.46116114}, //
+
46237 {3.69034314, 1.46126604}, //
+
46238 {3.68971348, 1.46132898}, //
+
46239 {3.68899989, 1.46134996}, //
+
46240 {3.68820238, 1.46353209}, //
+
46241 {3.68732095, 1.46554506}, //
+
46242 {3.68635559, 1.46738887}, //
+
46243 {3.68530607, 1.46906364}, //
+
46244 {3.68417287, 1.47056913}, //
+
46245 {3.6829555, 1.47190559}, //
+
46246 {3.68165421, 1.47307289}, //
+
46247 {3.68026924, 1.47407103}, //
+
46248 {3.67880011, 1.47490001}, //
+
46249 {3.67734146, 1.47561359}, //
+
46250 {3.67596555, 1.47624326}, //
+
46251 {3.67467213, 1.47678888}, //
+
46252 {3.67346168, 1.47725058}, //
+
46253 {3.67233396, 1.47762835}, //
+
46254 {3.67128897, 1.4779222}, //
+
46255 {3.67032647, 1.47813213}, //
+
46256 {3.66944695, 1.47825801}, //
+
46257 {3.66864991, 1.47829998}, //
+
46258 {3.66846108, 1.47848892}, //
+
46259 {3.66831422, 1.47863579}, //
+
46260 {3.66762161, 1.47932839}, //
+
46261 {3.6673069, 1.47964323}, //
+
46262 {3.66694999, 1.48000002}, //
+
46263 {3.66657233, 1.48035681}, //
+
46264 {3.66619444, 1.48067164}, //
+
46265 {3.66581678, 1.4809444}, //
+
46266 {3.66543889, 1.4811753}, //
+
46267 {3.665061, 1.48136425}, //
+
46268 {3.66468334, 1.48151112}, //
+
46269 {3.66430545, 1.48161602}, //
+
46270 {3.66392779, 1.48167896}, //
+
46271 {3.6635499, 1.48169994}, //
+
46272 {3.66244435, 1.48169994}, //
+
46273 {3.66207337, 1.48169994}, //
+
46274 {3.66132784, 1.48169994}, //
+
46275 {3.66095304, 1.48169994}, //
+
46276 {3.66020012, 1.48169994}, //
+
46277 {3.65988445, 1.48172104}, //
+
46278 {3.65969372, 1.48178399}, //
+
46279 {3.65962768, 1.48188889}, //
+
46280 {3.65968633, 1.48203576}, //
+
46281 {3.65986967, 1.4822247}, //
+
46282 {3.66017771, 1.48245561}, //
+
46283 {3.66061044, 1.48272836}, //
+
46284 {3.66116786, 1.48304319}, //
+
46285 {3.66184998, 1.48339999}, //
+
46286 {3.66260552, 1.48375678}, //
+
46287 {3.66336107, 1.48407161}, //
+
46288 {3.66411662, 1.48434448}, //
+
46289 {3.66487217, 1.48457527}, //
+
46290 {3.66562772, 1.48476422}, //
+
46291 {3.66638327, 1.48491108}, //
+
46292 {3.66713881, 1.48501611}, //
+
46293 {3.66789436, 1.48507905}, //
+
46294 {3.66864991, 1.48510003}, //
+
46295 {3.6829834, 1.48510003}, //
+
46296 {3.68551493, 1.48510003}, //
+
46297 {3.70056176, 1.48510003}, //
+
46298 {3.70498896, 1.48510003}, //
+
46299 {3.71855545, 1.48510003}, //
+
46300 {3.71908021, 1.48510003}, //
+
46301 {3.71950006, 1.48510003}, //
+
46302 {3.71943712, 1.48503709}, //
+
46303 {3.71924806, 1.48484814}, //
+
46304 {3.71893334, 1.48453331}, //
+
46305 {3.71849251, 1.48409259}, //
+
46306 {3.71792603, 1.48352587}, //
+
46307 {3.71641493, 1.48201478}, //
+
46308 {3.71547031, 1.4810704}, //
+
46309 {3.71440005, 1.48000002}, //
+
46310 {3.71329808, 1.4788667}, //
+
46311 {3.71223712, 1.47773337}, //
+
46312 {3.71121669, 1.47660005}, //
+
46313 {3.71023703, 1.47546661}, //
+
46314 {3.70929813, 1.47433329}, //
+
46315 {3.70840001, 1.47319996}, //
+
46316 {3.70754266, 1.47206664}, //
+
46317 {3.70672584, 1.47093332}, //
+
46318 {3.70595002, 1.4698}, //
+
46319 {3.70519447, 1.46867716}, //
+
46320 {3.70443892, 1.46755314}, //
+
46321 {3.70368338, 1.4664278}, //
+
46322 {3.70292783, 1.46530128}, //
+
46323 {3.70217228, 1.46417344}, //
+
46324 {3.70141673, 1.4630444}, //
+
46325 {3.70066118, 1.46191418}, //
+
46326 {3.69990563, 1.46078277}, //
+
46327 {3.69915009, 1.45965004}, //
+
46328 {3.69782662, 1.45765495}, //
+
46329 {3.69728899, 1.45684445}, //
+
46330 {3.69646168, 1.45559752}, //
+
46331 {3.69584131, 1.45466232}, //
+
46332 });
+
46333 polys.push_back({
+
46334 {6.44899178, 1.32541728}, //
+
46335 {6.44911814, 1.32322466}, //
+
46336 {6.44932795, 1.32082224}, //
+
46337 {6.44962168, 1.31820989}, //
+
46338 {6.44999933, 1.31538761}, //
+
46339 {6.45046091, 1.31235552}, //
+
46340 {6.45100689, 1.30911362}, //
+
46341 {6.45163631, 1.30566168}, //
+
46342 {6.45235014, 1.30200005}, //
+
46343 {6.4523921, 1.29821229}, //
+
46344 {6.45251799, 1.29438269}, //
+
46345 {6.45272779, 1.29051113}, //
+
46346 {6.45302153, 1.28659749}, //
+
46347 {6.45339918, 1.28264201}, //
+
46348 {6.45386124, 1.27864444}, //
+
46349 {6.45440674, 1.27460492}, //
+
46350 {6.45503664, 1.27052343}, //
+
46351 {6.45574999, 1.26639998}, //
+
46352 {6.45646381, 1.26231849}, //
+
46353 {6.45709324, 1.25836301}, //
+
46354 {6.45763874, 1.25453329}, //
+
46355 {6.4581008, 1.25082958}, //
+
46356 {6.45847845, 1.24725187}, //
+
46357 {6.45877218, 1.24380004}, //
+
46358 {6.45898199, 1.2404741}, //
+
46359 {6.45910788, 1.23727405}, //
+
46360 {6.45914984, 1.2342}, //
+
46361 {6.45929623, 1.22739077}, //
+
46362 {6.45973539, 1.22054076}, //
+
46363 {6.46046686, 1.21364999}, //
+
46364 {6.46149063, 1.20671856}, //
+
46365 {6.46280718, 1.19974625}, //
+
46366 {6.4644165, 1.19273329}, //
+
46367 {6.46631861, 1.18567967}, //
+
46368 {6.46851301, 1.17858517}, //
+
46369 {6.47100019, 1.17145002}, //
+
46370 {6.4736228, 1.16444075}, //
+
46371 {6.47620249, 1.15772402}, //
+
46372 {6.47873878, 1.15129995}, //
+
46373 {6.48123217, 1.14516854}, //
+
46374 {6.48368216, 1.13932967}, //
+
46375 {6.48608875, 1.13378334}, //
+
46376 {6.48845243, 1.12852967}, //
+
46377 {6.49077272, 1.12356853}, //
+
46378 {6.4930501, 1.11889994}, //
+
46379 {6.49309206, 1.11744142}, //
+
46380 {6.49321795, 1.11606538}, //
+
46381 {6.49342775, 1.1147722}, //
+
46382 {6.49372149, 1.11356175}, //
+
46383 {6.49409962, 1.11243391}, //
+
46384 {6.4945612, 1.11138892}, //
+
46385 {6.4951067, 1.11042655}, //
+
46386 {6.4957366, 1.1095469}, //
+
46387 {6.49644995, 1.10874999}, //
+
46388 {6.49724674, 1.10692525}, //
+
46389 {6.49812651, 1.10447347}, //
+
46390 {6.49908876, 1.10139441}, //
+
46391 {6.50013399, 1.09768832}, //
+
46392 {6.50126171, 1.09335494}, //
+
46393 {6.5024724, 1.0883944}, //
+
46394 {6.50376558, 1.08280683}, //
+
46395 {6.50514126, 1.07659197}, //
+
46396 {6.5065999, 1.06974995}, //
+
46397 {6.5081315, 1.06251049}, //
+
46398 {6.50970364, 1.05510306}, //
+
46399 {6.51131678, 1.04752779}, //
+
46400 {6.51297045, 1.03978455}, //
+
46401 {6.51466465, 1.03187346}, //
+
46402 {6.51639986, 1.02379441}, //
+
46403 {6.51817608, 1.01554751}, //
+
46404 {6.51999283, 1.00713277}, //
+
46405 {6.52185011, 0.998549998}, //
+
46406 {6.52367592, 0.990029633}, //
+
46407 {6.52537584, 0.981801867}, //
+
46408 {6.52694988, 0.973866642}, //
+
46409 {6.52839804, 0.966224074}, //
+
46410 {6.52972031, 0.958874047}, //
+
46411 {6.53091669, 0.951816678}, //
+
46412 {6.53198719, 0.945051849}, //
+
46413 {6.53293133, 0.938579619}, //
+
46414 {6.53375006, 0.932399988}, //
+
46415 {6.53450489, 0.928013563}, //
+
46416 {6.53525877, 0.923876524}, //
+
46417 {6.53601122, 0.919988871}, //
+
46418 {6.53676224, 0.916350603}, //
+
46419 {6.5375123, 0.912961721}, //
+
46420 {6.53826094, 0.909822226}, //
+
46421 {6.53900862, 0.906932116}, //
+
46422 {6.53975487, 0.904291332}, //
+
46423 {6.54050016, 0.901899993}, //
+
46424 {6.54219961, 0.895458639}, //
+
46425 {6.54427528, 0.888179004}, //
+
46426 {6.54672766, 0.88006109}, //
+
46427 {6.54955673, 0.871104956}, //
+
46428 {6.55276251, 0.861310482}, //
+
46429 {6.55634451, 0.850677788}, //
+
46430 {6.56030321, 0.839206815}, //
+
46431 {6.56463814, 0.826897502}, //
+
46432 {6.56934977, 0.813750029}, //
+
46433 {6.57422829, 0.800225914}, //
+
46434 {6.57906342, 0.786787033}, //
+
46435 {6.58385563, 0.773433328}, //
+
46436 {6.58860445, 0.760164797}, //
+
46437 {6.59330988, 0.746981502}, //
+
46438 {6.59797239, 0.733883321}, //
+
46439 {6.60259151, 0.720870376}, //
+
46440 {6.60716724, 0.707942605}, //
+
46441 {6.61170006, 0.695100009}, //
+
46442 {6.61463785, 0.686390758}, //
+
46443 {6.61740637, 0.678351879}, //
+
46444 {6.62000561, 0.670983315}, //
+
46445 {6.62243557, 0.664285183}, //
+
46446 {6.62469673, 0.658257425}, //
+
46447 {6.62678909, 0.652899981}, //
+
46448 {6.6287117, 0.648212969}, //
+
46449 {6.63046551, 0.644196272}, //
+
46450 {6.63205004, 0.640850008}, //
+
46451 {6.63284683, 0.63704133}, //
+
46452 {6.6337266, 0.633148789}, //
+
46453 {6.63468885, 0.629172206}, //
+
46454 {6.63573408, 0.625111699}, //
+
46455 {6.6368618, 0.620967269}, //
+
46456 {6.63807201, 0.616738915}, //
+
46457 {6.6393652, 0.612426519}, //
+
46458 {6.64074135, 0.60803026}, //
+
46459 {6.64219999, 0.603550017}, //
+
46460 {6.64369011, 0.599006772}, //
+
46461 {6.64513826, 0.594421625}, //
+
46462 {6.64654446, 0.589794457}, //
+
46463 {6.64790869, 0.585125327}, //
+
46464 {6.64923096, 0.580414176}, //
+
46465 {6.65051126, 0.575661123}, //
+
46466 {6.65174961, 0.570866048}, //
+
46467 {6.65294552, 0.566029012}, //
+
46468 {6.65409994, 0.561150014}, //
+
46469 {6.65523291, 0.556333959}, //
+
46470 {6.65636396, 0.55168581}, //
+
46471 {6.65749454, 0.547205567}, //
+
46472 {6.65862322, 0.542893231}, //
+
46473 {6.65975142, 0.538748741}, //
+
46474 {6.6608777, 0.534772217}, //
+
46475 {6.66200304, 0.5309636}, //
+
46476 {6.66312695, 0.527322829}, //
+
46477 {6.6642499, 0.523850024}, //
+
46478 {6.66777611, 0.513306797}, //
+
46479 {6.66878319, 0.510294437}, //
+
46480 {6.66935015, 0.508599997}, //
+
46481 {6.66926622, 0.508788288}, //
+
46482 {6.66901398, 0.509353101}, //
+
46483 {6.66725111, 0.513306797}, //
+
46484 {6.66632795, 0.51537776}, //
+
46485 {6.66523647, 0.517825305}, //
+
46486 {6.66254997, 0.523850024}, //
+
46487 {6.6610074, 0.527322829}, //
+
46488 {6.65937948, 0.5309636}, //
+
46489 {6.65766668, 0.534772217}, //
+
46490 {6.65586853, 0.538748741}, //
+
46491 {6.65398502, 0.542893231}, //
+
46492 {6.65201664, 0.547205567}, //
+
46493 {6.6499629, 0.55168581}, //
+
46494 {6.64782429, 0.556333959}, //
+
46495 {6.64559984, 0.561150014}, //
+
46496 {6.64338589, 0.565987051}, //
+
46497 {6.64125443, 0.570698142}, //
+
46498 {6.63920546, 0.575283349}, //
+
46499 {6.63723946, 0.57974261}, //
+
46500 {6.63535595, 0.584075928}, //
+
46501 {6.63355541, 0.58828336}, //
+
46502 {6.63183784, 0.592364788}, //
+
46503 {6.63020229, 0.596320391}, //
+
46504 {6.62865019, 0.600149989}, //
+
46505 {6.62704515, 0.604230225}, //
+
46506 {6.62523031, 0.608937681}, //
+
46507 {6.62320566, 0.614272237}, //
+
46508 {6.6209712, 0.620233953}, //
+
46509 {6.61852646, 0.626822829}, //
+
46510 {6.61587238, 0.634038866}, //
+
46511 {6.61300802, 0.641882122}, //
+
46512 {6.60993385, 0.650352478}, //
+
46513 {6.60664988, 0.659449995}, //
+
46514 {6.6032815, 0.668892622}, //
+
46515 {6.59995365, 0.6783759}, //
+
46516 {6.59666681, 0.687900007}, //
+
46517 {6.59342051, 0.697464824}, //
+
46518 {6.59021473, 0.707070351}, //
+
46519 {6.58704996, 0.716716647}, //
+
46520 {6.58392572, 0.726403713}, //
+
46521 {6.58084249, 0.736131489}, //
+
46522 {6.5777998, 0.745899975}, //
+
46523 {6.57483101, 0.755406797}, //
+
46524 {6.57194567, 0.764327168}, //
+
46525 {6.56914425, 0.77266109}, //
+
46526 {6.56642723, 0.780408621}, //
+
46527 {6.56379366, 0.787569761}, //
+
46528 {6.56124449, 0.794144452}, //
+
46529 {6.55877924, 0.800132692}, //
+
46530 {6.55639744, 0.805534542}, //
+
46531 {6.55410004, 0.810350001}, //
+
46532 {6.55410004, 0.810391963}, //
+
46533 {6.55410004, 0.810517907}, //
+
46534 {6.55410004, 0.810727775}, //
+
46535 {6.55410004, 0.811021626}, //
+
46536 {6.55410004, 0.8113994}, //
+
46537 {6.55410004, 0.811861098}, //
+
46538 {6.55410004, 0.813750029}, //
+
46539 {6.55323935, 0.816445053}, //
+
46540 {6.55216932, 0.820019126}, //
+
46541 {6.55088902, 0.824472249}, //
+
46542 {6.5493989, 0.829804301}, //
+
46543 {6.54769897, 0.836015403}, //
+
46544 {6.54578876, 0.843105555}, //
+
46545 {6.54366922, 0.851074696}, //
+
46546 {6.5413394, 0.859922826}, //
+
46547 {6.53879976, 0.869650006}, //
+
46548 {6.53616619, 0.879848123}, //
+
46549 {6.53353071, 0.890087008}, //
+
46550 {6.53089428, 0.900366664}, //
+
46551 {6.52825689, 0.910687029}, //
+
46552 {6.52561808, 0.921048164}, //
+
46553 {6.52297783, 0.931450009}, //
+
46554 {6.52033663, 0.941892564}, //
+
46555 {6.517694, 0.952375948}, //
+
46556 {6.51504993, 0.962899983}, //
+
46557 {6.51252174, 0.973036408}, //
+
46558 {6.51020288, 0.982334554}, //
+
46559 {6.50809431, 0.99079442}, //
+
46560 {6.50619555, 0.998416066}, //
+
46561 {6.50450659, 1.00519943}, //
+
46562 {6.50302792, 1.0111444}, //
+
46563 {6.50175858, 1.01625121}, //
+
46564 {6.50069952, 1.02051973}, //
+
46565 {6.4998498, 1.02394998}, //
+
46566 {6.49896908, 1.02809381}, //
+
46567 {6.49783754, 1.03299201}, //
+
46568 {6.49645567, 1.03864443}, //
+
46569 {6.49482298, 1.04505122}, //
+
46570 {6.49293947, 1.05221236}, //
+
46571 {6.49080563, 1.06012774}, //
+
46572 {6.48842096, 1.06879759}, //
+
46573 {6.48578596, 1.07822156}, //
+
46574 {6.48290014, 1.08840001}, //
+
46575 {6.47994089, 1.09593332}, //
+
46576 {6.47710752, 1.10346663}, //
+
46577 {6.47440004, 1.11099994}, //
+
46578 {6.47181845, 1.11853337}, //
+
46579 {6.46936274, 1.12606668}, //
+
46580 {6.46703339, 1.1336}, //
+
46581 {6.46482944, 1.14113331}, //
+
46582 {6.46275187, 1.14866662}, //
+
46583 {6.46080017, 1.15620005}, //
+
46584 {6.45898438, 1.16348207}, //
+
46585 {6.45729399, 1.17026174}, //
+
46586 {6.45572758, 1.17653894}, //
+
46587 {6.45428658, 1.18231356}, //
+
46588 {6.45296955, 1.18758583}, //
+
46589 {6.45177794, 1.19235551}, //
+
46590 {6.4507103, 1.19662285}, //
+
46591 {6.44976807, 1.2003876}, //
+
46592 {6.44894981, 1.20365}, //
+
46593 {6.44820499, 1.2067759}, //
+
46594 {6.44745874, 1.21010923}, //
+
46595 {6.44671106, 1.21364999}, //
+
46596 {6.44596243, 1.21739817}, //
+
46597 {6.44521236, 1.22135365}, //
+
46598 {6.44446135, 1.22551668}, //
+
46599 {6.44370842, 1.22988701}, //
+
46600 {6.44295502, 1.23446476}, //
+
46601 {6.44220018, 1.23924994}, //
+
46602 {6.44140244, 1.24408698}, //
+
46603 {6.44052076, 1.24879813}, //
+
46604 {6.43955564, 1.25338328}, //
+
46605 {6.43850613, 1.25784254}, //
+
46606 {6.43737268, 1.26217592}, //
+
46607 {6.43615532, 1.26638329}, //
+
46608 {6.43485451, 1.27046478}, //
+
46609 {6.4334693, 1.27442038}, //
+
46610 {6.43200016, 1.27824998}, //
+
46611 {6.43127584, 1.28122962}, //
+
46612 {6.43059254, 1.28412402}, //
+
46613 {6.42995024, 1.2869333}, //
+
46614 {6.42934799, 1.28965735}, //
+
46615 {6.42878723, 1.29229629}, //
+
46616 {6.42826653, 1.29484999}, //
+
46617 {6.42778683, 1.29731858}, //
+
46618 {6.42734814, 1.29970181}, //
+
46619 {6.42694998, 1.30200005}, //
+
46620 {6.42525005, 1.31215}, //
+
46621 {6.42522907, 1.31429076}, //
+
46622 {6.42516613, 1.31617963}, //
+
46623 {6.42506123, 1.31781662}, //
+
46624 {6.42491436, 1.31920183}, //
+
46625 {6.42472553, 1.32033515}, //
+
46626 {6.42449427, 1.3212167}, //
+
46627 {6.42422152, 1.32184625}, //
+
46628 {6.4239068, 1.32222402}, //
+
46629 {6.42355013, 1.32235003}, //
+
46630 {6.42310905, 1.32222402}, //
+
46631 {6.42254257, 1.32184625}, //
+
46632 {6.4218502, 1.3212167}, //
+
46633 {6.42103148, 1.32033515}, //
+
46634 {6.42008686, 1.31920183}, //
+
46635 {6.41901684, 1.31781662}, //
+
46636 {6.41782045, 1.31617963}, //
+
46637 {6.41649818, 1.31429076}, //
+
46638 {6.41505003, 1.31215}, //
+
46639 {6.41507101, 1.31119573}, //
+
46640 {6.41513395, 1.30982161}, //
+
46641 {6.41523886, 1.30802774}, //
+
46642 {6.41538572, 1.30581415}, //
+
46643 {6.41557455, 1.30318081}, //
+
46644 {6.41580534, 1.30012774}, //
+
46645 {6.41607857, 1.29665494}, //
+
46646 {6.41639328, 1.2927624}, //
+
46647 {6.41674995, 1.28845}, //
+
46648 {6.41714859, 1.28384387}, //
+
46649 {6.41758966, 1.27906978}, //
+
46650 {6.41807222, 1.27412772}, //
+
46651 {6.41859674, 1.26901793}, //
+
46652 {6.4191637, 1.26374018}, //
+
46653 {6.41977215, 1.25829446}, //
+
46654 {6.42042303, 1.2526809}, //
+
46655 {6.4211154, 1.24689937}, //
+
46656 {6.4218502, 1.24094999}, //
+
46657 {6.42260551, 1.2350111}, //
+
46658 {6.4233613, 1.22923887}, //
+
46659 {6.42411661, 1.22363329}, //
+
46660 {6.4248724, 1.21819448}, //
+
46661 {6.42562771, 1.21292222}, //
+
46662 {6.4263835, 1.20781672}, //
+
46663 {6.42713881, 1.20287776}, //
+
46664 {6.42789459, 1.19810557}, //
+
46665 {6.4286499, 1.19350004}, //
+
46666 {6.43019199, 1.18733084}, //
+
46667 {6.43181801, 1.18086791}, //
+
46668 {6.43352795, 1.17411113}, //
+
46669 {6.43532181, 1.16706049}, //
+
46670 {6.43719959, 1.15971601}, //
+
46671 {6.4391613, 1.15207779}, //
+
46672 {6.44120693, 1.14414573}, //
+
46673 {6.44333649, 1.13591981}, //
+
46674 {6.44554996, 1.12740004}, //
+
46675 {6.4478159, 1.1189636}, //
+
46676 {6.45008087, 1.11098766}, //
+
46677 {6.45234442, 1.10347223}, //
+
46678 {6.45460701, 1.09641731}, //
+
46679 {6.45686769, 1.08982289}, //
+
46680 {6.4591279, 1.08368886}, //
+
46681 {6.4613862, 1.07801545}, //
+
46682 {6.46364403, 1.07280242}, //
+
46683 {6.46589994, 1.06805003}, //
+
46684 {6.46816587, 1.06403208}, //
+
46685 {6.47043085, 1.05951178}, //
+
46686 {6.4726944, 1.0544889}, //
+
46687 {6.47495699, 1.04896355}, //
+
46688 {6.47721767, 1.04293585}, //
+
46689 {6.47947788, 1.03640556}, //
+
46690 {6.48173618, 1.02937281}, //
+
46691 {6.48399401, 1.02183771}, //
+
46692 {6.48624992, 1.01380002}, //
+
46693 {6.48855782, 1.00538576}, //
+
46694 {6.49094868, 0.99672097}, //
+
46695 {6.49342203, 0.987805545}, //
+
46696 {6.49597836, 0.978639483}, //
+
46697 {6.49861717, 0.969222844}, //
+
46698 {6.50133896, 0.959555566}, //
+
46699 {6.50414324, 0.949637651}, //
+
46700 {6.50703001, 0.939469159}, //
+
46701 {6.51000023, 0.929050028}, //
+
46702 {6.51296997, 0.917203724}, //
+
46703 {6.51585674, 0.905775905}, //
+
46704 {6.51866102, 0.894766688}, //
+
46705 {6.52138281, 0.884175897}, //
+
46706 {6.52402163, 0.874003708}, //
+
46707 {6.52657795, 0.864250004}, //
+
46708 {6.5290513, 0.854914844}, //
+
46709 {6.53144217, 0.845998168}, //
+
46710 {6.53375006, 0.837499976}, //
+
46711 {6.53588009, 0.830217302}, //
+
46712 {6.53775978, 0.823435783}, //
+
46713 {6.53938866, 0.81715554}, //
+
46714 {6.54076719, 0.811376572}, //
+
46715 {6.54189491, 0.806098759}, //
+
46716 {6.54277229, 0.801322222}, //
+
46717 {6.54339886, 0.7970469}, //
+
46718 {6.5437746, 0.793272853}, //
+
46719 {6.54390001, 0.790000021}, //
+
46720 {6.54463434, 0.788520396}, //
+
46721 {6.54532719, 0.78708148}, //
+
46722 {6.54597759, 0.785683334}, //
+
46723 {6.54658651, 0.784325898}, //
+
46724 {6.547153, 0.783009231}, //
+
46725 {6.54767799, 0.781733334}, //
+
46726 {6.54816055, 0.780498147}, //
+
46727 {6.54860115, 0.77930373}, //
+
46728 {6.54899979, 0.778150022}, //
+
46729 {6.54941893, 0.776995659}, //
+
46730 {6.54992104, 0.775799394}, //
+
46731 {6.55050564, 0.774561107}, //
+
46732 {6.55117273, 0.773280859}, //
+
46733 {6.5519228, 0.771958649}, //
+
46734 {6.55275536, 0.770594418}, //
+
46735 {6.55367088, 0.769188285}, //
+
46736 {6.5546689, 0.76774013}, //
+
46737 {6.55574989, 0.766250014}, //
+
46738 {6.55686235, 0.764624059}, //
+
46739 {6.55793285, 0.762746274}, //
+
46740 {6.55896091, 0.76061666}, //
+
46741 {6.55994749, 0.758235157}, //
+
46742 {6.56089211, 0.755601823}, //
+
46743 {6.56179428, 0.75271666}, //
+
46744 {6.56265497, 0.749579608}, //
+
46745 {6.56347322, 0.746190727}, //
+
46746 {6.56424999, 0.742550015}, //
+
46747 {6.5666008, 0.742550015}, //
+
46748 {6.56727219, 0.742550015}, //
+
46749 {6.56748199, 0.742550015}, //
+
46750 {6.56764984, 0.742550015}, //
+
46751 {6.57497406, 0.723295689}, //
+
46752 {6.58187962, 0.704710484}, //
+
46753 {6.58836651, 0.68679446}, //
+
46754 {6.59443521, 0.669547558}, //
+
46755 {6.60008526, 0.652969778}, //
+
46756 {6.60531664, 0.637061119}, //
+
46757 {6.61012983, 0.621821582}, //
+
46758 {6.61452389, 0.607251227}, //
+
46759 {6.61850023, 0.593349993}, //
+
46760 {6.61925554, 0.591052473}, //
+
46761 {6.62001133, 0.588670969}, //
+
46762 {6.62076664, 0.586205542}, //
+
46763 {6.62152243, 0.583656192}, //
+
46764 {6.62227774, 0.581022859}, //
+
46765 {6.62303352, 0.578305542}, //
+
46766 {6.62378883, 0.575504303}, //
+
46767 {6.62454462, 0.57261914}, //
+
46768 {6.62529993, 0.569649994}, //
+
46769 {6.62755537, 0.564309239}, //
+
46770 {6.62981129, 0.558842599}, //
+
46771 {6.63206673, 0.553250015}, //
+
46772 {6.63432217, 0.547531486}, //
+
46773 {6.63657761, 0.541687012}, //
+
46774 {6.63883352, 0.535716653}, //
+
46775 {6.64108896, 0.529620349}, //
+
46776 {6.6433444, 0.523398161}, //
+
46777 {6.64559984, 0.517050028}, //
+
46778 {6.64782429, 0.510691345}, //
+
46779 {6.6499629, 0.504415452}, //
+
46780 {6.65201664, 0.498222232}, //
+
46781 {6.65398502, 0.492111742}, //
+
46782 {6.65586853, 0.486083955}, //
+
46783 {6.65766668, 0.480138898}, //
+
46784 {6.65937948, 0.474276543}, //
+
46785 {6.6610074, 0.468496919}, //
+
46786 {6.66254997, 0.462799996}, //
+
46787 {6.66397715, 0.457385182}, //
+
46788 {6.66523647, 0.452429622}, //
+
46789 {6.66632795, 0.447933346}, //
+
46790 {6.66725111, 0.443896294}, //
+
46791 {6.6680069, 0.440318525}, //
+
46792 {6.66859436, 0.43720001}, //
+
46793 {6.66901398, 0.434540749}, //
+
46794 {6.66926622, 0.432340741}, //
+
46795 {6.66935015, 0.430599988}, //
+
46796 {6.66932917, 0.42986542}, //
+
46797 {6.66926622, 0.429172844}, //
+
46798 {6.66916132, 0.428522229}, //
+
46799 {6.66901398, 0.427913576}, //
+
46800 {6.66882515, 0.427346915}, //
+
46801 {6.66859436, 0.426822215}, //
+
46802 {6.66832161, 0.426339507}, //
+
46803 {6.6680069, 0.425898761}, //
+
46804 {6.66765022, 0.425500005}, //
+
46805 {6.66729307, 0.425174087}, //
+
46806 {6.66697836, 0.424929619}, //
+
46807 {6.66670561, 0.42476666}, //
+
46808 {6.66647482, 0.42468518}, //
+
46809 {6.66628599, 0.42468518}, //
+
46810 {6.66613913, 0.42476666}, //
+
46811 {6.66603374, 0.424929619}, //
+
46812 {6.6659708, 0.425174087}, //
+
46813 {6.66594982, 0.425500005}, //
+
46814 {6.66592884, 0.42587778}, //
+
46815 {6.6658659, 0.426255554}, //
+
46816 {6.66576099, 0.426633328}, //
+
46817 {6.66561413, 0.427011102}, //
+
46818 {6.6654253, 0.427388877}, //
+
46819 {6.66519451, 0.427766681}, //
+
46820 {6.66492176, 0.428144455}, //
+
46821 {6.66460657, 0.428522229}, //
+
46822 {6.6642499, 0.428900003}, //
+
46823 {6.66390371, 0.429298759}, //
+
46824 {6.66359806, 0.429739505}, //
+
46825 {6.66333342, 0.430222213}, //
+
46826 {6.6631093, 0.430746913}, //
+
46827 {6.66292572, 0.431313574}, //
+
46828 {6.66278315, 0.431922227}, //
+
46829 {6.66268158, 0.432572842}, //
+
46830 {6.66262054, 0.433265418}, //
+
46831 {6.66260004, 0.433999985}, //
+
46832 {6.66188622, 0.434167296}, //
+
46833 {6.66125679, 0.434669137}, //
+
46834 {6.66071129, 0.435505569}, //
+
46835 {6.66024923, 0.436676532}, //
+
46836 {6.65987158, 0.438182086}, //
+
46837 {6.65957785, 0.44002223}, //
+
46838 {6.65936804, 0.442196906}, //
+
46839 {6.65924215, 0.444706172}, //
+
46840 {6.65920019, 0.447549999}, //
+
46841 {6.6584444, 0.450592607}, //
+
46842 {6.65768909, 0.453675926}, //
+
46843 {6.65693331, 0.456800014}, //
+
46844 {6.656178, 0.459964812}, //
+
46845 {6.65542221, 0.463170379}, //
+
46846 {6.6546669, 0.466416657}, //
+
46847 {6.65391111, 0.469703704}, //
+
46848 {6.65315533, 0.473031491}, //
+
46849 {6.65240002, 0.476399988}, //
+
46850 {6.65160322, 0.479683965}, //
+
46851 {6.65072346, 0.482758015}, //
+
46852 {6.6497612, 0.485622227}, //
+
46853 {6.64871597, 0.488276541}, //
+
46854 {6.64758825, 0.490720987}, //
+
46855 {6.64637756, 0.492955565}, //
+
46856 {6.64508438, 0.494980246}, //
+
46857 {6.64370871, 0.496795058}, //
+
46858 {6.64225006, 0.498400003}, //
+
46859 {6.63655138, 0.515496314}, //
+
46860 {6.63169432, 0.530066669}, //
+
46861 {6.62549925, 0.548651874}, //
+
46862 {6.62190008, 0.559449971}, //
+
46863 {6.61884642, 0.568535805}, //
+
46864 {6.6157074, 0.57770431}, //
+
46865 {6.6124835, 0.586955547}, //
+
46866 {6.60917425, 0.596289515}, //
+
46867 {6.60577965, 0.605706155}, //
+
46868 {6.60230017, 0.615205526}, //
+
46869 {6.59873533, 0.624787629}, //
+
46870 {6.59508514, 0.634452462}, //
+
46871 {6.59135008, 0.644200027}, //
+
46872 {6.58766747, 0.653832078}, //
+
46873 {6.5841527, 0.663128376}, //
+
46874 {6.58080578, 0.672088861}, //
+
46875 {6.57762671, 0.680713594}, //
+
46876 {6.57461548, 0.689002454}, //
+
46877 {6.5717721, 0.696955562}, //
+
46878 {6.56909704, 0.704572856}, //
+
46879 {6.56658936, 0.711854339}, //
+
46880 {6.56424999, 0.718800008}, //
+
46881 {6.55893087, 0.72956419}, //
+
46882 {6.55352879, 0.740745664}, //
+
46883 {6.54804468, 0.752344429}, //
+
46884 {6.54247713, 0.764360487}, //
+
46885 {6.53682709, 0.776793838}, //
+
46886 {6.53109455, 0.78964442}, //
+
46887 {6.52527905, 0.802912354}, //
+
46888 {6.51938105, 0.816597521}, //
+
46889 {6.51340008, 0.83069998}, //
+
46890 {6.51043034, 0.837415457}, //
+
46891 {6.50754309, 0.844006181}, //
+
46892 {6.50473881, 0.850472212}, //
+
46893 {6.5020175, 0.85681361}, //
+
46894 {6.4993782, 0.863030255}, //
+
46895 {6.49682236, 0.869122207}, //
+
46896 {6.494349, 0.875089526}, //
+
46897 {6.49195814, 0.880932093}, //
+
46898 {6.48964977, 0.886650026}, //
+
46899 {6.48747778, 0.892074704}, //
+
46900 {6.4854722, 0.897037625}, //
+
46901 {6.48363352, 0.901538908}, //
+
46902 {6.48196125, 0.905578375}, //
+
46903 {6.4804554, 0.909156144}, //
+
46904 {6.47911644, 0.912272215}, //
+
46905 {6.47794437, 0.914926529}, //
+
46906 {6.47693872, 0.917119145}, //
+
46907 {6.47609997, 0.918850005}, //
+
46908 {6.47597408, 0.921325326}, //
+
46909 {6.47559643, 0.92421788}, //
+
46910 {6.47496653, 0.927527785}, //
+
46911 {6.47408533, 0.931254923}, //
+
46912 {6.47295189, 0.935399354}, //
+
46913 {6.47156668, 0.939961135}, //
+
46914 {6.4699297, 0.94494015}, //
+
46915 {6.46804094, 0.950336397}, //
+
46916 {6.46589994, 0.956149995}, //
+
46917 {6.46362305, 0.966012359}, //
+
46918 {6.46130228, 0.975999355}, //
+
46919 {6.45893908, 0.986111104}, //
+
46920 {6.456532, 0.996347547}, //
+
46921 {6.45408201, 1.00670862}, //
+
46922 {6.45158911, 1.01719439}, //
+
46923 {6.44905233, 1.02780497}, //
+
46924 {6.44647264, 1.03854012}, //
+
46925 {6.44385004, 1.04939997}, //
+
46926 {6.44127941, 1.05996668}, //
+
46927 {6.43883514, 1.06982219}, //
+
46928 {6.43651676, 1.07896662}, //
+
46929 {6.43432426, 1.08739996}, //
+
46930 {6.43225718, 1.09512222}, //
+
46931 {6.43031645, 1.10213327}, //
+
46932 {6.42850208, 1.10843337}, //
+
46933 {6.42681313, 1.11402225}, //
+
46934 {6.42525005, 1.11889994}, //
+
46935 {6.42310905, 1.1255945}, //
+
46936 {6.4212203, 1.13212228}, //
+
46937 {6.41958332, 1.13848329}, //
+
46938 {6.41819811, 1.14467776}, //
+
46939 {6.41706467, 1.15070558}, //
+
46940 {6.41618347, 1.15656662}, //
+
46941 {6.41555357, 1.16226113}, //
+
46942 {6.41517591, 1.16778886}, //
+
46943 {6.41505003, 1.17314994}, //
+
46944 {6.41425323, 1.17775619}, //
+
46945 {6.41337347, 1.18253028}, //
+
46946 {6.41241121, 1.18747222}, //
+
46947 {6.41136599, 1.19258213}, //
+
46948 {6.41023827, 1.19785988}, //
+
46949 {6.40902758, 1.2033056}, //
+
46950 {6.40773439, 1.20891917}, //
+
46951 {6.40635872, 1.21470058}, //
+
46952 {6.40490007, 1.22064996}, //
+
46953 {6.4034729, 1.2259376}, //
+
46954 {6.40221357, 1.23126733}, //
+
46955 {6.40112209, 1.2366389}, //
+
46956 {6.40019894, 1.24205244}, //
+
46957 {6.39944315, 1.24750805}, //
+
46958 {6.39885569, 1.2530055}, //
+
46959 {6.39843559, 1.25854504}, //
+
46960 {6.39818382, 1.26412654}, //
+
46961 {6.3980999, 1.26975}, //
+
46962 {6.3980999, 1.27530062}, //
+
46963 {6.3980999, 1.28064132}, //
+
46964 {6.3980999, 1.29069316}, //
+
46965 {6.3980999, 1.31584322}, //
+
46966 {6.3980999, 1.31936729}, //
+
46967 {6.3980999, 1.3227222}, //
+
46968 {6.3980999, 1.32590806}, //
+
46969 {6.3980999, 1.33930004}, //
+
46970 {6.39807892, 1.34070623}, //
+
46971 {6.39801598, 1.34190249}, //
+
46972 {6.39791107, 1.34288883}, //
+
46973 {6.39776421, 1.34366548}, //
+
46974 {6.39757538, 1.34423208}, //
+
46975 {6.39734459, 1.34458888}, //
+
46976 {6.39707184, 1.34473586}, //
+
46977 {6.39675665, 1.3446728}, //
+
46978 {6.39639997, 1.34440005}, //
+
46979 {6.3960433, 1.34391725}, //
+
46980 {6.39572859, 1.34322464}, //
+
46981 {6.39545536, 1.34232223}, //
+
46982 {6.39522457, 1.34120989}, //
+
46983 {6.39503574, 1.33988762}, //
+
46984 {6.39488888, 1.33835554}, //
+
46985 {6.39478397, 1.33661354}, //
+
46986 {6.39472103, 1.33466172}, //
+
46987 {6.39470005, 1.33249998}, //
+
46988 {6.39470005, 1.32936299}, //
+
46989 {6.39470005, 1.32597411}, //
+
46990 {6.39470005, 1.31844079}, //
+
46991 {6.39470005, 1.29519999}, //
+
46992 {6.3940382, 1.28695309}, //
+
46993 {6.39354181, 1.27879012}, //
+
46994 {6.39321089, 1.27071106}, //
+
46995 {6.3930459, 1.26271605}, //
+
46996 {6.3930459, 1.25480497}, //
+
46997 {6.39321089, 1.24697781}, //
+
46998 {6.39354181, 1.23923457}, //
+
46999 {6.3940382, 1.23157525}, //
+
47000 {6.39470005, 1.22399998}, //
+
47001 {6.39470005, 1.22249937}, //
+
47002 {6.39470005, 1.22099757}, //
+
47003 {6.39470005, 1.21949446}, //
+
47004 {6.39470005, 1.21799016}, //
+
47005 {6.39470005, 1.21045005}, //
+
47006 {6.39470005, 1.20580244}, //
+
47007 {6.39470005, 1.20090437}, //
+
47008 {6.39470005, 1.15960002}, //
+
47009 {6.39465857, 1.15298951}, //
+
47010 {6.39453459, 1.14671361}, //
+
47011 {6.39432764, 1.14077222}, //
+
47012 {6.3940382, 1.13516545}, //
+
47013 {6.39366627, 1.12989318}, //
+
47014 {6.39321089, 1.12495553}, //
+
47015 {6.39267349, 1.12035251}, //
+
47016 {6.39205313, 1.11608398}, //
+
47017 {6.39134979, 1.11214995}, //
+
47018 {6.38958597, 1.10511053}, //
+
47019 {6.38882637, 1.0975697}, //
+
47020 {6.38907242, 1.08952773}, //
+
47021 {6.39032269, 1.08098459}, //
+
47022 {6.3925786, 1.07194006}, //
+
47023 {6.39583874, 1.0623945}, //
+
47024 {6.40010452, 1.05234754}, //
+
47025 {6.40537453, 1.04179943}, //
+
47026 {6.41165018, 1.03075004}, //
+
47027 {6.4131813, 1.02757096}, //
+
47028 {6.41475391, 1.0240562}, //
+
47029 {6.41636658, 1.0202055}, //
+
47030 {6.41802025, 1.01601911}, //
+
47031 {6.41971493, 1.0114969}, //
+
47032 {6.42145014, 1.00663888}, //
+
47033 {6.42322588, 1.00144506}, //
+
47034 {6.42504263, 0.995915413}, //
+
47035 {6.42689991, 0.990050018}, //
+
47036 {6.42880964, 0.983985186}, //
+
47037 {6.43076181, 0.977835178}, //
+
47038 {6.43275547, 0.971599996}, //
+
47039 {6.43479156, 0.965279639}, //
+
47040 {6.43686914, 0.958874047}, //
+
47041 {6.43898869, 0.952383339}, //
+
47042 {6.44115067, 0.945807397}, //
+
47043 {6.44335413, 0.93914628}, //
+
47044 {6.44560003, 0.932399988}, //
+
47045 {6.44945002, 0.918381453}, //
+
47046 {6.45346689, 0.904948175}, //
+
47047 {6.45765018, 0.892099977}, //
+
47048 {6.46199989, 0.879837036}, //
+
47049 {6.46651649, 0.868159235}, //
+
47050 {6.47119999, 0.857066691}, //
+
47051 {6.4760499, 0.846559286}, //
+
47052 {6.4810667, 0.83663702}, //
+
47053 {6.48624992, 0.827300012}, //
+
47054 {6.48784447, 0.822694421}, //
+
47055 {6.48960543, 0.817922235}, //
+
47056 {6.49153328, 0.812983334}, //
+
47057 {6.49362755, 0.807877779}, //
+
47058 {6.49588871, 0.802605569}, //
+
47059 {6.49831676, 0.797166646}, //
+
47060 {6.50091124, 0.791561127}, //
+
47061 {6.50367212, 0.785788894}, //
+
47062 {6.5065999, 0.779850006}, //
+
47063 {6.51110125, 0.771519125}, //
+
47064 {6.51556063, 0.76310432}, //
+
47065 {6.51997757, 0.754605532}, //
+
47066 {6.52435303, 0.74602282}, //
+
47067 {6.52868652, 0.737356186}, //
+
47068 {6.53297758, 0.728605568}, //
+
47069 {6.53722715, 0.719770968}, //
+
47070 {6.54143476, 0.710852444}, //
+
47071 {6.54559994, 0.701849997}, //
+
47072 {6.54955626, 0.692973435}, //
+
47073 {6.55313587, 0.684432745}, //
+
47074 {6.55633879, 0.676227748}, //
+
47075 {6.55916548, 0.668358624}, //
+
47076 {6.56161547, 0.660825312}, //
+
47077 {6.56368876, 0.653627753}, //
+
47078 {6.56538582, 0.646766067}, //
+
47079 {6.56670618, 0.640240133}, //
+
47080 {6.56764984, 0.634050012}, //
+
47081 {6.56921291, 0.627933323}, //
+
47082 {6.57090187, 0.621649981}, //
+
47083 {6.57271671, 0.615199983}, //
+
47084 {6.57465744, 0.608583331}, //
+
47085 {6.57672405, 0.601800025}, //
+
47086 {6.57891655, 0.594850004}, //
+
47087 {6.58123541, 0.587733328}, //
+
47088 {6.58367968, 0.580449998}, //
+
47089 {6.58624983, 0.573000014}, //
+
47090 {6.58889389, 0.56557101}, //
+
47091 {6.59153652, 0.558350623}, //
+
47092 {6.59417772, 0.551338911}, //
+
47093 {6.59681797, 0.544535816}, //
+
47094 {6.59945679, 0.537941337}, //
+
47095 {6.60209465, 0.531555533}, //
+
47096 {6.60473108, 0.525378406}, //
+
47097 {6.60736609, 0.519409895}, //
+
47098 {6.61000013, 0.51365}, //
+
47099 {6.61253929, 0.508235157}, //
+
47100 {6.61486912, 0.503279626}, //
+
47101 {6.61698866, 0.49878332}, //
+
47102 {6.61889887, 0.494746298}, //
+
47103 {6.62059879, 0.491168529}, //
+
47104 {6.62135077, 0.489594251}, //
+
47105 {6.62076664, 0.49049443}, //
+
47106 {6.61912966, 0.492879003}, //
+
47107 {6.61724091, 0.495514184}, //
+
47108 {6.61509991, 0.498400003}, //
+
47109 {6.61280203, 0.5015679}, //
+
47110 {6.61041832, 0.505027175}, //
+
47111 {6.60795021, 0.508777797}, //
+
47112 {6.60539627, 0.512819767}, //
+
47113 {6.60275745, 0.517153084}, //
+
47114 {6.60003328, 0.521777749}, //
+
47115 {6.59722424, 0.526693821}, //
+
47116 {6.59432983, 0.53190124}, //
+
47117 {6.59135008, 0.537400007}, //
+
47118 {6.58833885, 0.543075919}, //
+
47119 {6.58532763, 0.548792601}, //
+
47120 {6.58231688, 0.554549992}, //
+
47121 {6.57930565, 0.560348153}, //
+
47122 {6.57629442, 0.566187024}, //
+
47123 {6.5732832, 0.572066665}, //
+
47124 {6.57027245, 0.577987015}, //
+
47125 {6.56726122, 0.583948135}, //
+
47126 {6.56424999, 0.589950025}, //
+
47127 {6.55839443, 0.604650617}, //
+
47128 {6.55287218, 0.618596911}, //
+
47129 {6.54768324, 0.631788909}, //
+
47130 {6.54282761, 0.644226551}, //
+
47131 {6.53830576, 0.655909896}, //
+
47132 {6.53411674, 0.666838884}, //
+
47133 {6.53026104, 0.677013576}, //
+
47134 {6.52673912, 0.686433971}, //
+
47135 {6.52355003, 0.695100009}, //
+
47136 {6.5227952, 0.698069155}, //
+
47137 {6.52204132, 0.700954318}, //
+
47138 {6.52128887, 0.703755558}, //
+
47139 {6.52053785, 0.706472814}, //
+
47140 {6.51978779, 0.709106147}, //
+
47141 {6.51903868, 0.711655557}, //
+
47142 {6.51829147, 0.714120984}, //
+
47143 {6.51754522, 0.716502488}, //
+
47144 {6.51679993, 0.718800008}, //
+
47145 {6.51596069, 0.721233308}, //
+
47146 {6.51495314, 0.723999977}, //
+
47147 {6.51377773, 0.727100015}, //
+
47148 {6.51243448, 0.730533361}, //
+
47149 {6.51092339, 0.734300017}, //
+
47150 {6.50924444, 0.738399982}, //
+
47151 {6.50739765, 0.742833316}, //
+
47152 {6.50538254, 0.747600019}, //
+
47153 {6.50320005, 0.752699971}, //
+
47154 {6.49864626, 0.761953712}, //
+
47155 {6.49400759, 0.771625936}, //
+
47156 {6.48928356, 0.781716645}, //
+
47157 {6.48447418, 0.792225897}, //
+
47158 {6.47957945, 0.803153694}, //
+
47159 {6.47459984, 0.814499974}, //
+
47160 {6.46953535, 0.826264799}, //
+
47161 {6.46438503, 0.838448167}, //
+
47162 {6.45914984, 0.851050019}, //
+
47163 {6.45673704, 0.857282102}, //
+
47164 {6.45403147, 0.863933921}, //
+
47165 {6.45103312, 0.871005535}, //
+
47166 {6.44774246, 0.878496885}, //
+
47167 {6.44415903, 0.886408031}, //
+
47168 {6.4402833, 0.894738913}, //
+
47169 {6.43611479, 0.90348953}, //
+
47170 {6.4316535, 0.912659883}, //
+
47171 {6.42689991, 0.922249973}, //
+
47172 {6.42201042, 0.932007432}, //
+
47173 {6.41711998, 0.941679657}, //
+
47174 {6.41222763, 0.951266646}, //
+
47175 {6.4073348, 0.960768521}, //
+
47176 {6.40244007, 0.970185161}, //
+
47177 {6.39754438, 0.979516685}, //
+
47178 {6.39264774, 0.988762975}, //
+
47179 {6.3877492, 0.997924089}, //
+
47180 {6.38285017, 1.00699997}, //
+
47181 {6.37809706, 1.0157932}, //
+
47182 {6.37363768, 1.02408397}, //
+
47183 {6.36947203, 1.03187227}, //
+
47184 {6.36560059, 1.03915799}, //
+
47185 {6.36202288, 1.04594135}, //
+
47186 {6.3587389, 1.05222225}, //
+
47187 {6.35574865, 1.05800056}, //
+
47188 {6.35305262, 1.06327653}, //
+
47189 {6.35064983, 1.06805003}, //
+
47190 {6.34786844, 1.0733062}, //
+
47191 {6.34554625, 1.07851911}, //
+
47192 {6.34368324, 1.08368886}, //
+
47193 {6.34227943, 1.08881545}, //
+
47194 {6.3413353, 1.09389877}, //
+
47195 {6.34084988, 1.09893894}, //
+
47196 {6.34082413, 1.10393584}, //
+
47197 {6.34125757, 1.10888946}, //
+
47198 {6.34215021, 1.11380005}, //
+
47199 {6.34334564, 1.11876297}, //
+
47200 {6.344666, 1.1238519}, //
+
47201 {6.3461113, 1.12906671}, //
+
47202 {6.34768105, 1.1344074}, //
+
47203 {6.34937525, 1.1398741}, //
+
47204 {6.35119438, 1.14546669}, //
+
47205 {6.35313845, 1.15118515}, //
+
47206 {6.35520697, 1.15702963}, //
+
47207 {6.35739994, 1.16299999}, //
+
47208 {6.35815573, 1.16445863}, //
+
47209 {6.35891104, 1.16583455}, //
+
47210 {6.35966682, 1.16712773}, //
+
47211 {6.36042213, 1.1683383}, //
+
47212 {6.36117792, 1.16946602}, //
+
47213 {6.36193323, 1.17051113}, //
+
47214 {6.36268902, 1.1714735}, //
+
47215 {6.36344433, 1.17235303}, //
+
47216 {6.36420012, 1.17314994}, //
+
47217 {6.36560631, 1.17691672}, //
+
47218 {6.36680269, 1.18068337}, //
+
47219 {6.36778879, 1.18445003}, //
+
47220 {6.36856556, 1.18821669}, //
+
47221 {6.36913204, 1.19198334}, //
+
47222 {6.36948872, 1.19575}, //
+
47223 {6.36963558, 1.19951665}, //
+
47224 {6.36957264, 1.20328331}, //
+
47225 {6.36929989, 1.20704997}, //
+
47226 {6.36890125, 1.21081662}, //
+
47227 {6.36846066, 1.21458328}, //
+
47228 {6.36797762, 1.21835005}, //
+
47229 {6.3674531, 1.22211671}, //
+
47230 {6.36688662, 1.22588336}, //
+
47231 {6.36627769, 1.22965002}, //
+
47232 {6.36562729, 1.23341668}, //
+
47233 {6.36493444, 1.23718333}, //
+
47234 {6.36420012, 1.24094999}, //
+
47235 {6.36348629, 1.24471724}, //
+
47236 {6.36285686, 1.2484858}, //
+
47237 {6.36231089, 1.25225556}, //
+
47238 {6.36184931, 1.25602651}, //
+
47239 {6.36147165, 1.25979877}, //
+
47240 {6.36117792, 1.26357222}, //
+
47241 {6.36096811, 1.26734686}, //
+
47242 {6.36084175, 1.27112281}, //
+
47243 {6.36079979, 1.27489996}, //
+
47244 {6.36088371, 1.28104818}, //
+
47245 {6.36113596, 1.28744817}, //
+
47246 {6.36155558, 1.29410005}, //
+
47247 {6.36214304, 1.30100369}, //
+
47248 {6.36289883, 1.30815923}, //
+
47249 {6.36382246, 1.31556666}, //
+
47250 {6.36491346, 1.32322598}, //
+
47251 {6.36617279, 1.33113706}, //
+
47252 {6.36759996, 1.33930004}, //
+
47253 {6.36902714, 1.3444519}, //
+
47254 {6.37028646, 1.34935188}, //
+
47255 {6.37137794, 1.35399997}, //
+
47256 {6.3723011, 1.35839629}, //
+
47257 {6.37305689, 1.36254072}, //
+
47258 {6.37364435, 1.36643338}, //
+
47259 {6.37406397, 1.37007403}, //
+
47260 {6.37431622, 1.37346292}, //
+
47261 {6.37440014, 1.37660003}, //
+
47262 {6.37437916, 1.38049197}, //
+
47263 {6.37431622, 1.38463461}, //
+
47264 {6.37421131, 1.38902783}, //
+
47265 {6.37406397, 1.39367163}, //
+
47266 {6.37387514, 1.39856601}, //
+
47267 {6.37364435, 1.40371108}, //
+
47268 {6.3733716, 1.40910673}, //
+
47269 {6.37305689, 1.41475308}, //
+
47270 {6.37270021, 1.42065001}, //
+
47271 {6.37234306, 1.42659938}, //
+
47272 {6.37202835, 1.43238091}, //
+
47273 {6.3717556, 1.43799448}, //
+
47274 {6.37152481, 1.44344008}, //
+
47275 {6.37133598, 1.44871795}, //
+
47276 {6.37118912, 1.45382774}, //
+
47277 {6.37108374, 1.4587698}, //
+
47278 {6.37102079, 1.46354377}, //
+
47279 {6.37101793, 1.46416962}, //
+
47280 {6.37102079, 1.46407843}, //
+
47281 {6.37108374, 1.46357465}, //
+
47282 {6.37118912, 1.46323884}, //
+
47283 {6.37133598, 1.46307099}, //
+
47284 {6.37152481, 1.46307099}, //
+
47285 {6.3717556, 1.46323884}, //
+
47286 {6.37202835, 1.46357465}, //
+
47287 {6.37234306, 1.46407843}, //
+
47288 {6.37270021, 1.46475005}, //
+
47289 {6.37307739, 1.46556795}, //
+
47290 {6.37345314, 1.46651053}, //
+
47291 {6.37382793, 1.46757782}, //
+
47292 {6.3742013, 1.46876979}, //
+
47293 {6.37457323, 1.47008646}, //
+
47294 {6.37494421, 1.47152781}, //
+
47295 {6.37531424, 1.47309387}, //
+
47296 {6.37537193, 1.47335887}, //
+
47297 {6.37551117, 1.47339439}, //
+
47298 {6.37714005, 1.47353828}, //
+
47299 {6.37901974, 1.47347343}, //
+
47300 {6.38114977, 1.47319996}, //
+
47301 {6.38341618, 1.47272778}, //
+
47302 {6.38568068, 1.47204447}, //
+
47303 {6.38794422, 1.47115004}, //
+
47304 {6.39020681, 1.47004449}, //
+
47305 {6.39246798, 1.46872783}, //
+
47306 {6.39472771, 1.46720004}, //
+
47307 {6.39698648, 1.46546113}, //
+
47308 {6.39924383, 1.46351111}, //
+
47309 {6.40150023, 1.46134996}, //
+
47310 {6.4037981, 1.45905244}, //
+
47311 {6.40618134, 1.456671}, //
+
47312 {6.40864992, 1.45420551}, //
+
47313 {6.41120386, 1.45165622}, //
+
47314 {6.41384268, 1.44902289}, //
+
47315 {6.41656685, 1.44630551}, //
+
47316 {6.4193759, 1.44350433}, //
+
47317 {6.4222703, 1.44061911}, //
+
47318 {6.42525005, 1.43764997}, //
+
47319 {6.42675066, 1.43618083}, //
+
47320 {6.4282527, 1.43479574}, //
+
47321 {6.42975569, 1.43349445}, //
+
47322 {6.43126011, 1.4322772}, //
+
47323 {6.43276548, 1.43114388}, //
+
47324 {6.43427229, 1.43009448}, //
+
47325 {6.43578005, 1.429129}, //
+
47326 {6.43728971, 1.42824757}, //
+
47327 {6.43879986, 1.42744994}, //
+
47328 {6.43879986, 1.42404997}, //
+
47329 {6.44026852, 1.42329443}, //
+
47330 {6.44165182, 1.42253888}, //
+
47331 {6.44294977, 1.42178333}, //
+
47332 {6.44416285, 1.42102778}, //
+
47333 {6.44529057, 1.42027223}, //
+
47334 {6.44633341, 1.41951668}, //
+
47335 {6.4472909, 1.41876113}, //
+
47336 {6.44816303, 1.41800559}, //
+
47337 {6.44894981, 1.41725004}, //
+
47338 {6.44968462, 1.41652596}, //
+
47339 {6.45037699, 1.41584253}, //
+
47340 {6.45102787, 1.4152}, //
+
47341 {6.45163631, 1.41459811}, //
+
47342 {6.45220327, 1.41403699}, //
+
47343 {6.45272779, 1.41351664}, //
+
47344 {6.45321035, 1.41303706}, //
+
47345 {6.45365143, 1.41259813}, //
+
47346 {6.45405006, 1.41219997}, //
+
47347 {6.45438576, 1.4118222}, //
+
47348 {6.45463753, 1.41144443}, //
+
47349 {6.45480537, 1.41106665}, //
+
47350 {6.4548893, 1.41068888}, //
+
47351 {6.4548893, 1.4103111}, //
+
47352 {6.45480537, 1.40993333}, //
+
47353 {6.45463753, 1.40955555}, //
+
47354 {6.45438576, 1.40917778}, //
+
47355 {6.45405006, 1.40880001}, //
+
47356 {6.45268583, 1.40743577}, //
+
47357 {6.45243406, 1.407184}, //
+
47358 {6.45237112, 1.40712094}, //
+
47359 {6.45235014, 1.40709996}, //
+
47360 {6.45226622, 1.40693212}, //
+
47361 {6.45216131, 1.40672219}, //
+
47362 {6.45159435, 1.40558887}, //
+
47363 {6.4513216, 1.40504324}, //
+
47364 {6.45065022, 1.40369999}, //
+
47365 {6.45025206, 1.40295494}, //
+
47366 {6.44981289, 1.40220869}, //
+
47367 {6.44933319, 1.40146112}, //
+
47368 {6.44881296, 1.40071237}, //
+
47369 {6.44825172, 1.39996231}, //
+
47370 {6.44764996, 1.39921117}, //
+
47371 {6.44700718, 1.3984586}, //
+
47372 {6.44632387, 1.39770496}, //
+
47373 {6.44560003, 1.39695001}, //
+
47374 {6.44417286, 1.39552283}, //
+
47375 {6.44352245, 1.39487219}, //
+
47376 {6.44234705, 1.3936969}, //
+
47377 {6.44049978, 1.39184999}, //
+
47378 {6.44010115, 1.3914932}, //
+
47379 {6.43966055, 1.39117837}, //
+
47380 {6.43917799, 1.3909055}, //
+
47381 {6.43865299, 1.39067471}, //
+
47382 {6.43808651, 1.39048576}, //
+
47383 {6.43747759, 1.3903389}, //
+
47384 {6.43682718, 1.39023399}, //
+
47385 {6.43613434, 1.39017093}, //
+
47386 {6.43540001, 1.39014995}, //
+
47387 {6.43537903, 1.39012897}, //
+
47388 {6.43531609, 1.39006603}, //
+
47389 {6.43521118, 1.38996112}, //
+
47390 {6.43506432, 1.38981414}, //
+
47391 {6.43370008, 1.38845003}, //
+
47392 {6.43334341, 1.38805187}, //
+
47393 {6.43302822, 1.38761294}, //
+
47394 {6.43275547, 1.38713336}, //
+
47395 {6.43252468, 1.38661301}, //
+
47396 {6.43233585, 1.38605189}, //
+
47397 {6.43218899, 1.38545001}, //
+
47398 {6.43208408, 1.38480735}, //
+
47399 {6.43202114, 1.38412404}, //
+
47400 {6.43200016, 1.38339996}, //
+
47401 {6.43135929, 1.38193083}, //
+
47402 {6.43092585, 1.38054574}, //
+
47403 {6.43069983, 1.37924445}, //
+
47404 {6.43068171, 1.3780272}, //
+
47405 {6.43087053, 1.37689388}, //
+
47406 {6.43126678, 1.37584448}, //
+
47407 {6.43187046, 1.374879}, //
+
47408 {6.43268156, 1.37399757}, //
+
47409 {6.43370008, 1.37320006}, //
+
47410 {6.43489552, 1.37248647}, //
+
47411 {6.43621588, 1.37185681}, //
+
47412 {6.43766117, 1.37131107}, //
+
47413 {6.43923092, 1.37084937}, //
+
47414 {6.44092512, 1.3704716}, //
+
47415 {6.44274426, 1.37017775}, //
+
47416 {6.44468832, 1.36996794}, //
+
47417 {6.44675684, 1.36984193}, //
+
47418 {6.44894981, 1.36979997}, //
+
47419 {6.45111179, 1.36973703}, //
+
47420 {6.45306349, 1.3695482}, //
+
47421 {6.45480537, 1.36923337}, //
+
47422 {6.45633745, 1.36879253}, //
+
47423 {6.45765972, 1.36822593}, //
+
47424 {6.45877218, 1.36753333}, //
+
47425 {6.45967484, 1.36671484}, //
+
47426 {6.4603672, 1.36577034}, //
+
47427 {6.46084976, 1.36469996}, //
+
47428 {6.46124792, 1.36355615}, //
+
47429 {6.46168709, 1.36236918}, //
+
47430 {6.46216679, 1.36113894}, //
+
47431 {6.46268702, 1.35986543}, //
+
47432 {6.46324825, 1.35854876}, //
+
47433 {6.46385002, 1.35718894}, //
+
47434 {6.4644928, 1.35578585}, //
+
47435 {6.46517611, 1.35433948}, //
+
47436 {6.46589994, 1.35284996}, //
+
47437 {6.46594191, 1.35134935}, //
+
47438 {6.46606779, 1.34984756}, //
+
47439 {6.4662776, 1.34834445}, //
+
47440 {6.46657181, 1.34684014}, //
+
47441 {6.46694946, 1.34533453}, //
+
47442 {6.46741104, 1.34382772}, //
+
47443 {6.46795702, 1.34231973}, //
+
47444 {6.46858644, 1.34081054}, //
+
47445 {6.46929979, 1.33930004}, //
+
47446 {6.47219563, 1.33214509}, //
+
47447 {6.47483826, 1.3242358}, //
+
47448 {6.47722769, 1.31557226}, //
+
47449 {6.4793644, 1.30615437}, //
+
47450 {6.48124743, 1.29598212}, //
+
47451 {6.48287773, 1.28505552}, //
+
47452 {6.48425484, 1.27337468}, //
+
47453 {6.48537922, 1.26093948}, //
+
47454 {6.48624992, 1.24775004}, //
+
47455 {6.48637533, 1.24179018}, //
+
47456 {6.48675108, 1.23595488}, //
+
47457 {6.48737764, 1.2302444}, //
+
47458 {6.48825502, 1.22465861}, //
+
47459 {6.48938274, 1.21919751}, //
+
47460 {6.49076128, 1.21386111}, //
+
47461 {6.49239016, 1.2086494}, //
+
47462 {6.49426985, 1.20356238}, //
+
47463 {6.49639988, 1.19860005}, //
+
47464 {6.49870825, 1.19372094}, //
+
47465 {6.50109863, 1.1888839}, //
+
47466 {6.50357199, 1.18408895}, //
+
47467 {6.50612831, 1.17933583}, //
+
47468 {6.50876713, 1.17462468}, //
+
47469 {6.51148891, 1.16995561}, //
+
47470 {6.51429319, 1.16532838}, //
+
47471 {6.51718044, 1.16074324}, //
+
47472 {6.52015018, 1.15620005}, //
+
47473 {6.52090549, 1.15327227}, //
+
47474 {6.52166128, 1.15051115}, //
+
47475 {6.52241659, 1.14791667}, //
+
47476 {6.52317238, 1.14548886}, //
+
47477 {6.52392769, 1.14322782}, //
+
47478 {6.52468348, 1.14113331}, //
+
47479 {6.52543879, 1.13920557}, //
+
47480 {6.52619457, 1.1374445}, //
+
47481 {6.52694988, 1.13584995}, //
+
47482 {6.52917385, 1.13181114}, //
+
47483 {6.53131294, 1.12722778}, //
+
47484 {6.53336668, 1.1221}, //
+
47485 {6.53533506, 1.11642778}, //
+
47486 {6.53721857, 1.11021113}, //
+
47487 {6.53901672, 1.10344994}, //
+
47488 {6.54072952, 1.09614444}, //
+
47489 {6.54235744, 1.08829439}, //
+
47490 {6.54390001, 1.07990003}, //
+
47491 {6.54536915, 1.07138026}, //
+
47492 {6.54675436, 1.06315434}, //
+
47493 {6.54805565, 1.05522227}, //
+
47494 {6.54927301, 1.04758394}, //
+
47495 {6.55040598, 1.04023945}, //
+
47496 {6.55063868, 1.0386771}, //
+
47497 {6.55065823, 1.03804195}, //
+
47498 {6.55070019, 1.03415}, //
+
47499 {6.55141354, 1.03192592}, //
+
47500 {6.55184603, 1.03045762}, //
+
47501 {6.55242109, 1.02643216}, //
+
47502 {6.55330229, 1.01996911}, //
+
47503 {6.55410004, 1.01380002}, //
+
47504 {6.55418348, 1.01087224}, //
+
47505 {6.55443335, 1.00811112}, //
+
47506 {6.5548501, 1.00551665}, //
+
47507 {6.55543327, 1.00308883}, //
+
47508 {6.55618334, 1.00082779}, //
+
47509 {6.55709982, 0.998733342}, //
+
47510 {6.55818319, 0.996805549}, //
+
47511 {6.55943346, 0.99504447}, //
+
47512 {6.56060505, 0.993725538}, //
+
47513 {6.5607667, 0.991046906}, //
+
47514 {6.56085014, 0.98664999}, //
+
47515 {6.5611043, 0.986107886}, //
+
47516 {6.5612278, 0.983855546}, //
+
47517 {6.56152153, 0.979400635}, //
+
47518 {6.56189919, 0.974317312}, //
+
47519 {6.56236124, 0.968605578}, //
+
47520 {6.56290674, 0.962265432}, //
+
47521 {6.56353664, 0.955296934}, //
+
47522 {6.56424999, 0.947700024}, //
+
47523 {6.56500578, 0.939809263}, //
+
47524 {6.56576109, 0.931959271}, //
+
47525 {6.56651688, 0.92414999}, //
+
47526 {6.56727219, 0.916381478}, //
+
47527 {6.5680027, 0.908911645}, //
+
47528 {6.56781769, 0.905172825}, //
+
47529 {6.5676918, 0.900965452}, //
+
47530 {6.56764984, 0.896799982}, //
+
47531 {6.56777525, 0.892551243}, //
+
47532 {6.568151, 0.888093829}, //
+
47533 {6.56877756, 0.883427799}, //
+
47534 {6.56965494, 0.878553092}, //
+
47535 {6.57078266, 0.87346977}, //
+
47536 {6.5721612, 0.868177772}, //
+
47537 {6.57321215, 0.864629209}, //
+
47538 {6.57370186, 0.861429036}, //
+
47539 {6.5742631, 0.85766232}, //
+
47540 {6.57478333, 0.854061127}, //
+
47541 {6.57526302, 0.850625336}, //
+
47542 {6.57570171, 0.847354949}, //
+
47543 {6.57609987, 0.844250023}, //
+
47544 {6.57677174, 0.83889693}, //
+
47545 {6.57704449, 0.836722195}, //
+
47546 {6.57727528, 0.834882081}, //
+
47547 {6.57761097, 0.832205534}, //
+
47548 {6.57771587, 0.831369162}, //
+
47549 {6.57777882, 0.83086729}, //
+
47550 {6.5777998, 0.83069998}, //
+
47551 {6.57775784, 0.830111742}, //
+
47552 {6.57763195, 0.829858005}, //
+
47553 {6.57742214, 0.829938889}, //
+
47554 {6.57712841, 0.830354333}, //
+
47555 {6.57675076, 0.831104338}, //
+
47556 {6.5762887, 0.832188904}, //
+
47557 {6.5757432, 0.833608031}, //
+
47558 {6.57511377, 0.835361719}, //
+
47559 {6.57439995, 0.837450027}, //
+
47560 {6.57363415, 0.839779019}, //
+
47561 {6.57282448, 0.842232704}, //
+
47562 {6.57197237, 0.844811082}, //
+
47563 {6.57107639, 0.847514212}, //
+
47564 {6.5701375, 0.850341976}, //
+
47565 {6.56915569, 0.853294432}, //
+
47566 {6.56813002, 0.856371582}, //
+
47567 {6.5670619, 0.859573483}, //
+
47568 {6.56594992, 0.862900019}, //
+
47569 {6.56479549, 0.866309881}, //
+
47570 {6.56359959, 0.869761705}, //
+
47571 {6.56236124, 0.873255551}, //
+
47572 {6.56108093, 0.876791358}, //
+
47573 {6.55975866, 0.880369127}, //
+
47574 {6.55839443, 0.883988917}, //
+
47575 {6.55698824, 0.887650609}, //
+
47576 {6.55554008, 0.891354322}, //
+
47577 {6.55404997, 0.895099998}, //
+
47578 {6.55263329, 0.898751259}, //
+
47579 {6.5513835, 0.902149379}, //
+
47580 {6.55030012, 0.905294418}, //
+
47581 {6.54938316, 0.908186436}, //
+
47582 {6.5486331, 0.910825312}, //
+
47583 {6.54804993, 0.913211107}, //
+
47584 {6.54763317, 0.915343821}, //
+
47585 {6.54738331, 0.917223454}, //
+
47586 {6.54729986, 0.918850005}, //
+
47587 {6.5472579, 0.920528412}, //
+
47588 {6.54713202, 0.92254138}, //
+
47589 {6.54692221, 0.924888909}, //
+
47590 {6.54662848, 0.927570999}, //
+
47591 {6.54625082, 0.930587649}, //
+
47592 {6.54578876, 0.933938861}, //
+
47593 {6.54524326, 0.937624693}, //
+
47594 {6.54461336, 0.941645086}, //
+
47595 {6.54390001, 0.94599998}, //
+
47596 {6.54310322, 0.950647533}, //
+
47597 {6.54222345, 0.955545664}, //
+
47598 {6.5412612, 0.960694432}, //
+
47599 {6.54021597, 0.966093838}, //
+
47600 {6.53908825, 0.971743822}, //
+
47601 {6.53787756, 0.977644444}, //
+
47602 {6.53658438, 0.983795702}, //
+
47603 {6.5352087, 0.990197539}, //
+
47604 {6.53375006, 0.996850014}, //
+
47605 {6.53297329, 1.00358582}, //
+
47606 {6.53215504, 1.01023769}, //
+
47607 {6.53129435, 1.01680553}, //
+
47608 {6.53039217, 1.02328956}, //
+
47609 {6.52944756, 1.02968955}, //
+
47610 {6.52846098, 1.0360055}, //
+
47611 {6.52743292, 1.04223764}, //
+
47612 {6.52636242, 1.04838586}, //
+
47613 {6.52524996, 1.05445004}, //
+
47614 {6.52417946, 1.06027412}, //
+
47615 {6.52323532, 1.06567967}, //
+
47616 {6.52241659, 1.07066667}, //
+
47617 {6.52172422, 1.07523513}, //
+
47618 {6.52115726, 1.07938516}, //
+
47619 {6.52071667, 1.08311665}, //
+
47620 {6.52040195, 1.0864296}, //
+
47621 {6.52021313, 1.08932412}, //
+
47622 {6.52015018, 1.09179997}, //
+
47623 {6.52004528, 1.09564996}, //
+
47624 {6.51973009, 1.09966671}, //
+
47625 {6.51920557, 1.10385001}, //
+
47626 {6.51847076, 1.10819995}, //
+
47627 {6.51752663, 1.11271667}, //
+
47628 {6.5163722, 1.11740005}, //
+
47629 {6.51500797, 1.12224996}, //
+
47630 {6.51343393, 1.12726665}, //
+
47631 {6.51165009, 1.13244998}, //
+
47632 {6.50983524, 1.13756049}, //
+
47633 {6.50814629, 1.14233637}, //
+
47634 {6.50658321, 1.14677775}, //
+
47635 {6.5051465, 1.15088451}, //
+
47636 {6.5038352, 1.15465677}, //
+
47637 {6.50264978, 1.15809441}, //
+
47638 {6.50159073, 1.16119754}, //
+
47639 {6.50065756, 1.16396606}, //
+
47640 {6.4998498, 1.16639996}, //
+
47641 {6.49831772, 1.16953647}, //
+
47642 {6.49674368, 1.17292345}, //
+
47643 {6.49512768, 1.17656112}, //
+
47644 {6.49346972, 1.18044937}, //
+
47645 {6.49176979, 1.18458831}, //
+
47646 {6.4900279, 1.18897772}, //
+
47647 {6.48824406, 1.19361794}, //
+
47648 {6.48641777, 1.19850862}, //
+
47649 {6.48455, 1.20365}, //
+
47650 {6.48269272, 1.20901108}, //
+
47651 {6.48087597, 1.21453893}, //
+
47652 {6.47910023, 1.22023332}, //
+
47653 {6.47736502, 1.22609448}, //
+
47654 {6.47567034, 1.23212218}, //
+
47655 {6.47401667, 1.23831666}, //
+
47656 {6.47240353, 1.24467778}, //
+
47657 {6.47083139, 1.25120556}, //
+
47658 {6.46929979, 1.2579}, //
+
47659 {6.4685235, 1.26307285}, //
+
47660 {6.46770477, 1.26803577}, //
+
47661 {6.46684456, 1.27278888}, //
+
47662 {6.46594191, 1.27733207}, //
+
47663 {6.46499777, 1.28166544}, //
+
47664 {6.46401119, 1.28578889}, //
+
47665 {6.46298265, 1.28970242}, //
+
47666 {6.46191216, 1.29340613}, //
+
47667 {6.46080017, 1.29690003}, //
+
47668 {6.45965624, 1.30031049}, //
+
47669 {6.45846891, 1.30376422}, //
+
47670 {6.45723867, 1.30726111}, //
+
47671 {6.45596552, 1.31080127}, //
+
47672 {6.45464897, 1.31438458}, //
+
47673 {6.45328903, 1.31801116}, //
+
47674 {6.4518857, 1.3216809}, //
+
47675 {6.45043945, 1.3253938}, //
+
47676 {6.44894981, 1.32914996}, //
+
47677 {6.44894981, 1.3309679}, //
+
47678 {6.44894981, 1.33139694}, //
+
47679 {6.44894981, 1.33195555}, //
+
47680 {6.44894981, 1.3309679}, //
+
47681 {6.44894981, 1.33046174}, //
+
47682 {6.44894981, 1.32739997}, //
+
47683 });
+
47684 polys.push_back({
+
47685 {6.37099981, 1.46815002}, //
+
47686 {6.37112522, 1.46954572}, //
+
47687 {6.37150145, 1.47073269}, //
+
47688 {6.37212801, 1.47171116}, //
+
47689 {6.37300491, 1.47248089}, //
+
47690 {6.37413263, 1.47304201}, //
+
47691 {6.37450266, 1.47313654}, //
+
47692 {6.37400007, 1.47228336}, //
+
47693 {6.37308311, 1.4706111}, //
+
47694 {6.37233353, 1.4691056}, //
+
47695 {6.37174988, 1.46776664}, //
+
47696 {6.37133312, 1.46659446}, //
+
47697 {6.37108326, 1.46558893}, //
+
47698 {6.3710146, 1.46489906}, //
+
47699 });
+
47700 polys.push_back({
+
47701 {4.2263999, 1.38845003}, //
+
47702 {4.22077608, 1.38884878}, //
+
47703 {4.21519279, 1.3892895}, //
+
47704 {4.20965004, 1.38977218}, //
+
47705 {4.20414829, 1.39029694}, //
+
47706 {4.19868708, 1.39086354}, //
+
47707 {4.19326687, 1.39147222}, //
+
47708 {4.18788719, 1.39212286}, //
+
47709 {4.18254805, 1.39281547}, //
+
47710 {4.17724991, 1.39355004}, //
+
47711 {4.17122698, 1.39430559}, //
+
47712 {4.16520309, 1.39506114}, //
+
47713 {4.15917778, 1.39581668}, //
+
47714 {4.15315104, 1.39657223}, //
+
47715 {4.14712334, 1.39732778}, //
+
47716 {4.14109421, 1.39808333}, //
+
47717 {4.13506413, 1.39883888}, //
+
47718 {4.12903261, 1.39959443}, //
+
47719 {4.12300014, 1.40034997}, //
+
47720 {4.10725975, 1.40197587}, //
+
47721 {4.09319496, 1.40385365}, //
+
47722 {4.08080578, 1.40598333}, //
+
47723 {4.07009125, 1.40836477}, //
+
47724 {4.06105232, 1.41099811}, //
+
47725 {4.053689, 1.41388333}, //
+
47726 {4.04800081, 1.41702032}, //
+
47727 {4.04398775, 1.4204092}, //
+
47728 {4.04164982, 1.42404997}, //
+
47729 {4.04093647, 1.42551911}, //
+
47730 {4.04030657, 1.42690432}, //
+
47731 {4.03976107, 1.42820561}, //
+
47732 {4.03929949, 1.42942286}, //
+
47733 {4.03892183, 1.43055618}, //
+
47734 {4.03862762, 1.43160558}, //
+
47735 {4.03841782, 1.43257093}, //
+
47736 {4.03829193, 1.43345249}, //
+
47737 {4.03824997, 1.43425}, //
+
47738 {4.03824997, 1.43575859}, //
+
47739 {4.03824997, 1.43651116}, //
+
47740 {4.03824997, 1.4372623}, //
+
47741 {4.03824997, 1.44234324}, //
+
47742 {4.03824997, 1.44288886}, //
+
47743 {4.03824997, 1.44335067}, //
+
47744 {4.03824997, 1.44439995}, //
+
47745 {4.04151249, 1.44358146}, //
+
47746 {4.04527712, 1.44263709}, //
+
47747 {4.04954433, 1.44156671}, //
+
47748 {4.05431414, 1.44037032}, //
+
47749 {4.05958652, 1.43904817}, //
+
47750 {4.06536102, 1.43760002}, //
+
47751 {4.07163811, 1.43602598}, //
+
47752 {4.07841778, 1.43432593}, //
+
47753 {4.08570004, 1.4325}, //
+
47754 {4.09323311, 1.43068457}, //
+
47755 {4.10076666, 1.42899382}, //
+
47756 {4.10830021, 1.42742777}, //
+
47757 {4.11583328, 1.42598641}, //
+
47758 {4.12336683, 1.42466974}, //
+
47759 {4.13089991, 1.42347777}, //
+
47760 {4.13843346, 1.42241049}, //
+
47761 {4.14596653, 1.4214679}, //
+
47762 {4.15350008, 1.42065001}, //
+
47763 {4.15953255, 1.41919136}, //
+
47764 {4.16556406, 1.41781545}, //
+
47765 {4.17159462, 1.41652226}, //
+
47766 {4.17762327, 1.41531169}, //
+
47767 {4.18365145, 1.41418397}, //
+
47768 {4.18967772, 1.41313887}, //
+
47769 {4.19570303, 1.41217649}, //
+
47770 {4.20172739, 1.41129696}, //
+
47771 {4.20774984, 1.41050005}, //
+
47772 {4.21499062, 1.40836978}, //
+
47773 {4.22164631, 1.40649009}, //
+
47774 {4.22771645, 1.40486109}, //
+
47775 {4.23320198, 1.40348268}, //
+
47776 {4.23810196, 1.40235496}, //
+
47777 {4.24241686, 1.40147781}, //
+
47778 {4.2461462, 1.40085125}, //
+
47779 {4.24929094, 1.40047526}, //
+
47780 {4.25185013, 1.40034997}, //
+
47781 {4.25260496, 1.40039134}, //
+
47782 {4.25335884, 1.40051544}, //
+
47783 {4.25411129, 1.40072227}, //
+
47784 {4.25486231, 1.40101171}, //
+
47785 {4.25561237, 1.401384}, //
+
47786 {4.25636101, 1.4018389}, //
+
47787 {4.25710869, 1.40237653}, //
+
47788 {4.25785494, 1.4029969}, //
+
47789 {4.25860023, 1.40369999}, //
+
47790 {4.25935555, 1.40441358}, //
+
47791 {4.26011133, 1.40504324}, //
+
47792 {4.26086664, 1.40558887}, //
+
47793 {4.26162243, 1.40605056}, //
+
47794 {4.26237774, 1.40642834}, //
+
47795 {4.26313353, 1.40672219}, //
+
47796 {4.26388884, 1.40693212}, //
+
47797 {4.26464462, 1.407058}, //
+
47798 {4.26539993, 1.40709996}, //
+
47799 {4.26613474, 1.40781355}, //
+
47800 {4.26682711, 1.40844321}, //
+
47801 {4.26747799, 1.40898883}, //
+
47802 {4.26808643, 1.40945065}, //
+
47803 {4.26865292, 1.40982842}, //
+
47804 {4.26917791, 1.41012228}, //
+
47805 {4.26966047, 1.41033208}, //
+
47806 {4.27010107, 1.41045797}, //
+
47807 {4.27050018, 1.41050005}, //
+
47808 {4.27083588, 1.41047907}, //
+
47809 {4.27108765, 1.41041601}, //
+
47810 {4.27125549, 1.4103111}, //
+
47811 {4.27133942, 1.41016424}, //
+
47812 {4.27133942, 1.40997529}, //
+
47813 {4.27125549, 1.4097445}, //
+
47814 {4.27108765, 1.40947163}, //
+
47815 {4.27083588, 1.4091568}, //
+
47816 {4.27050018, 1.40880001}, //
+
47817 {4.27005911, 1.40831792}, //
+
47818 {4.26949263, 1.40762711}, //
+
47819 {4.26879978, 1.40672779}, //
+
47820 {4.26798153, 1.40561974}, //
+
47821 {4.26703691, 1.40430307}, //
+
47822 {4.26596689, 1.40277779}, //
+
47823 {4.26477051, 1.40104377}, //
+
47824 {4.26344824, 1.39910126}, //
+
47825 {4.26200008, 1.39695001}, //
+
47826 {4.25955534, 1.39483023}, //
+
47827 {4.25673342, 1.3930043}, //
+
47828 {4.25353336, 1.39147222}, //
+
47829 {4.24995565, 1.39023399}, //
+
47830 {4.24599981, 1.3892895}, //
+
47831 {4.24166679, 1.38863885}, //
+
47832 {4.23695564, 1.38828206}, //
+
47833 {4.23186684, 1.38821912}, //
+
47834 });
+
47835 polys.push_back({
+
47836 {0.437022209, 1.22532225}, //
+
47837 {0.436728388, 1.22553205}, //
+
47838 {0.436350614, 1.22590983}, //
+
47839 {0.435888886, 1.22645557}, //
+
47840 {0.435343206, 1.22716916}, //
+
47841 {0.434713572, 1.22805059}, //
+
47842 {0.433999985, 1.22909999}, //
+
47843 {0.433223456, 1.23029566}, //
+
47844 {0.432404935, 1.23161602}, //
+
47845 {0.431544453, 1.23306108}, //
+
47846 {0.430641979, 1.23463082}, //
+
47847 {0.429697543, 1.23632526}, //
+
47848 {0.428711116, 1.2381444}, //
+
47849 {0.427682728, 1.24008822}, //
+
47850 {0.426612347, 1.24215674}, //
+
47851 {0.425500005, 1.24434996}, //
+
47852 {0.424314201, 1.24674201}, //
+
47853 {0.42300123, 1.24938452}, //
+
47854 {0.421561122, 1.25227773}, //
+
47855 {0.419993818, 1.25542164}, //
+
47856 {0.418299377, 1.258816}, //
+
47857 {0.41647777, 1.26246107}, //
+
47858 {0.414529026, 1.26635683}, //
+
47859 {0.412453085, 1.27050304}, //
+
47860 {0.410250008, 1.27489996}, //
+
47861 {0.405832708, 1.28319943}, //
+
47862 {0.401625305, 1.29154193}, //
+
47863 {0.397627771, 1.29992783}, //
+
47864 {0.393840134, 1.30835676}, //
+
47865 {0.390262336, 1.31682897}, //
+
47866 {0.386894435, 1.32534444}, //
+
47867 {0.383736432, 1.33390307}, //
+
47868 {0.380788267, 1.34250498}, //
+
47869 {0.378049999, 1.35115004}, //
+
47870 {0.375458032, 1.3596698}, //
+
47871 {0.372948766, 1.36789572}, //
+
47872 {0.370522231, 1.37582779}, //
+
47873 {0.368178397, 1.38346601}, //
+
47874 {0.365917295, 1.39081049}, //
+
47875 {0.363738894, 1.39786112}, //
+
47876 {0.361643195, 1.40461791}, //
+
47877 {0.359630257, 1.41108084}, //
+
47878 {0.35769999, 1.41725004}, //
+
47879 {0.355926543, 1.42294812}, //
+
47880 {0.354361743, 1.42797589}, //
+
47881 {0.353005558, 1.43233335}, //
+
47882 {0.35185802, 1.43602037}, //
+
47883 {0.349667281, 1.44305921}, //
+
47884 {0.349249989, 1.44439995}, //
+
47885 {0.353730261, 1.43747532}, //
+
47886 {0.358126551, 1.43025684}, //
+
47887 {0.362438887, 1.42274439}, //
+
47888 {0.366667271, 1.41493833}, //
+
47889 {0.370811731, 1.4068383}, //
+
47890 {0.374872208, 1.39844441}, //
+
47891 {0.378848761, 1.3897568}, //
+
47892 {0.382741362, 1.38077533}, //
+
47893 {0.386550009, 1.37150002}, //
+
47894 {0.390295684, 1.36217165}, //
+
47895 {0.393999368, 1.35300863}, //
+
47896 {0.39766112, 1.34401107}, //
+
47897 {0.40128085, 1.33517897}, //
+
47898 {0.404858649, 1.32651234}, //
+
47899 {0.408394456, 1.31801116}, //
+
47900 {0.411888272, 1.30967534}, //
+
47901 {0.415340126, 1.30150497}, //
+
47902 {0.418749988, 1.29349995}, //
+
47903 {0.421950608, 1.28594506}, //
+
47904 {0.424774677, 1.27910244}, //
+
47905 {0.427222222, 1.27297223}, //
+
47906 {0.429293215, 1.26755428}, //
+
47907 {0.430987656, 1.26284873}, //
+
47908 {0.432305545, 1.25885558}, //
+
47909 {0.433246911, 1.2555747}, //
+
47910 {0.433811724, 1.25300622}, //
+
47911 {0.433999985, 1.25115001}, //
+
47912 {0.433999985, 1.25039446}, //
+
47913 {0.433999985, 1.24963892}, //
+
47914 {0.433999985, 1.24434996}, //
+
47915 {0.434713572, 1.24355245}, //
+
47916 {0.435343206, 1.24267101}, //
+
47917 {0.435888886, 1.24170554}, //
+
47918 {0.436350614, 1.24065614}, //
+
47919 {0.436728388, 1.23952281}, //
+
47920 {0.437022209, 1.23830557}, //
+
47921 {0.437232107, 1.23700428}, //
+
47922 {0.437358022, 1.23561919}, //
+
47923 {0.437400013, 1.23415005}, //
+
47924 {0.437400013, 1.23139942}, //
+
47925 {0.437400013, 1.23021114}, //
+
47926 {0.437400013, 1.22570002}, //
+
47927 {0.437358022, 1.22540617}, //
+
47928 {0.437232107, 1.22528028}, //
+
47929 });
+
47930 polys.push_back({
+
47931 {3.58389997, 1.26470006}, //
+
47932 {3.58389997, 1.26604319}, //
+
47933 {3.58389997, 1.26639998}, //
+
47934 {3.58387899, 1.26677775}, //
+
47935 {3.58381605, 1.26715553}, //
+
47936 {3.58371115, 1.2675333}, //
+
47937 {3.58356428, 1.26791108}, //
+
47938 {3.58337522, 1.26828885}, //
+
47939 {3.58314443, 1.26866663}, //
+
47940 {3.58287168, 1.2690444}, //
+
47941 {3.58255672, 1.26942217}, //
+
47942 {3.58220005, 1.26979995}, //
+
47943 {3.58184314, 1.27019882}, //
+
47944 {3.58152843, 1.27063954}, //
+
47945 {3.58125567, 1.27112222}, //
+
47946 {3.58102465, 1.27164686}, //
+
47947 {3.58083582, 1.27221358}, //
+
47948 {3.58068895, 1.27282226}, //
+
47949 {3.58058405, 1.27347279}, //
+
47950 {3.58052111, 1.27416539}, //
+
47951 {3.58049989, 1.27489996}, //
+
47952 {3.58049989, 1.27560306}, //
+
47953 {3.58049989, 1.27676105}, //
+
47954 {3.58049989, 1.27721608}, //
+
47955 {3.58049989, 1.27824998}, //
+
47956 {3.58047891, 1.27971911}, //
+
47957 {3.58041596, 1.28110433}, //
+
47958 {3.58031106, 1.28240561}, //
+
47959 {3.58016419, 1.28362286}, //
+
47960 {3.57997537, 1.28475618}, //
+
47961 {3.57974434, 1.28580558}, //
+
47962 {3.57947159, 1.28677094}, //
+
47963 {3.57915688, 1.28765249}, //
+
47964 {3.57879996, 1.28845}, //
+
47965 {3.57835984, 1.28912163}, //
+
47966 {3.57779503, 1.28962529}, //
+
47967 {3.57710552, 1.2899611}, //
+
47968 {3.57629132, 1.29012907}, //
+
47969 {3.57535243, 1.29012907}, //
+
47970 {3.57428885, 1.2899611}, //
+
47971 {3.57310057, 1.28962529}, //
+
47972 {3.5717876, 1.28912163}, //
+
47973 {3.57034993, 1.28845}, //
+
47974 {3.56885982, 1.28773642}, //
+
47975 {3.56741166, 1.28710675}, //
+
47976 {3.56600547, 1.28656113}, //
+
47977 {3.56464148, 1.28609943}, //
+
47978 {3.56331921, 1.28572166}, //
+
47979 {3.5620389, 1.28542781}, //
+
47980 {3.56080055, 1.28521788}, //
+
47981 {3.55960441, 1.285092}, //
+
47982 {3.55844998, 1.28505003}, //
+
47983 {3.55736923, 1.28507102}, //
+
47984 {3.55637097, 1.28513396}, //
+
47985 {3.55545545, 1.28523886}, //
+
47986 {3.55462289, 1.28538585}, //
+
47987 {3.55387282, 1.28557467}, //
+
47988 {3.55320549, 1.28580558}, //
+
47989 {3.55262089, 1.28607845}, //
+
47990 {3.55211902, 1.28639317}, //
+
47991 {3.55170012, 1.28674996}, //
+
47992 {3.55142665, 1.28714871}, //
+
47993 {3.5513618, 1.28758955}, //
+
47994 {3.55150557, 1.28807223}, //
+
47995 {3.55185795, 1.28859687}, //
+
47996 {3.55241919, 1.28916359}, //
+
47997 {3.5531888, 1.28977227}, //
+
47998 {3.55416727, 1.2904228}, //
+
47999 {3.55535436, 1.2911154}, //
+
48000 {3.55675006, 1.29184997}, //
+
48001 {3.55972958, 1.2940222}, //
+
48002 {3.56262398, 1.29602778}, //
+
48003 {3.56543326, 1.2978667}, //
+
48004 {3.56815743, 1.29953885}, //
+
48005 {3.57079625, 1.30104446}, //
+
48006 {3.57334995, 1.3023833}, //
+
48007 {3.57581854, 1.30355561}, //
+
48008 {3.57820177, 1.30456114}, //
+
48009 {3.58049989, 1.30540001}, //
+
48010 {3.58121347, 1.30540001}, //
+
48011 {3.58184314, 1.30540001}, //
+
48012 {3.58285069, 1.30540001}, //
+
48013 {3.58322835, 1.30540001}, //
+
48014 {3.58389997, 1.30540001}, //
+
48015 {3.58461356, 1.30544198}, //
+
48016 {3.58524323, 1.30556786}, //
+
48017 {3.58578897, 1.30577779}, //
+
48018 {3.58625054, 1.30607164}, //
+
48019 {3.58662844, 1.30644941}, //
+
48020 {3.58692217, 1.30691111}, //
+
48021 {3.58713222, 1.30745673}, //
+
48022 {3.5872581, 1.3080864}, //
+
48023 {3.58730006, 1.30879998}, //
+
48024 {3.59065008, 1.30879998}, //
+
48025 {3.59065008, 1.30863214}, //
+
48026 {3.59065008, 1.30842221}, //
+
48027 {3.59065008, 1.30775058}, //
+
48028 {3.59065008, 1.30728889}, //
+
48029 {3.59065008, 1.30674326}, //
+
48030 {3.59065008, 1.3061136}, //
+
48031 {3.59065008, 1.30540001}, //
+
48032 {3.59067106, 1.30468643}, //
+
48033 {3.590734, 1.30405676}, //
+
48034 {3.59083891, 1.30351114}, //
+
48035 {3.59098577, 1.30304933}, //
+
48036 {3.5911746, 1.30267155}, //
+
48037 {3.59140563, 1.30237782}, //
+
48038 {3.59167838, 1.30216789}, //
+
48039 {3.59199309, 1.30204201}, //
+
48040 {3.59235001, 1.30200005}, //
+
48041 {3.59274888, 1.30204201}, //
+
48042 {3.59318948, 1.30216789}, //
+
48043 {3.59367228, 1.30237782}, //
+
48044 {3.5941968, 1.30267155}, //
+
48045 {3.59476352, 1.30304933}, //
+
48046 {3.5953722, 1.30351114}, //
+
48047 {3.59602284, 1.30405676}, //
+
48048 {3.59671545, 1.30468643}, //
+
48049 {3.59745002, 1.30540001}, //
+
48050 {3.59820557, 1.30623889}, //
+
48051 {3.59896111, 1.30724442}, //
+
48052 {3.59971666, 1.30841672}, //
+
48053 {3.60047221, 1.30975556}, //
+
48054 {3.60122776, 1.31126106}, //
+
48055 {3.60198331, 1.31293333}, //
+
48056 {3.60273886, 1.31477225}, //
+
48057 {3.60349441, 1.31677783}, //
+
48058 {3.60424995, 1.31895006}, //
+
48059 {3.60498405, 1.32050252}, //
+
48060 {3.60567474, 1.32213771}, //
+
48061 {3.60632229, 1.32385552}, //
+
48062 {3.60692644, 1.32565618}, //
+
48063 {3.60748768, 1.32753956}, //
+
48064 {3.60800552, 1.32950556}, //
+
48065 {3.60848022, 1.33155429}, //
+
48066 {3.60891175, 1.33368576}, //
+
48067 {3.6092999, 1.33589995}, //
+
48068 {3.60961533, 1.33825004}, //
+
48069 {3.60980606, 1.34076667}, //
+
48070 {3.60987234, 1.34344995}, //
+
48071 {3.60981369, 1.34630001}, //
+
48072 {3.60963035, 1.34931672}, //
+
48073 {3.60932231, 1.35249996}, //
+
48074 {3.60888958, 1.35584998}, //
+
48075 {3.60833216, 1.35936666}, //
+
48076 {3.60765004, 1.36304998}, //
+
48077 {3.60765004, 1.3675611}, //
+
48078 {3.60765004, 1.36981666}, //
+
48079 {3.60765004, 1.38788092}, //
+
48080 {3.60765004, 1.39240682}, //
+
48081 {3.60765004, 1.40369999}, //
+
48082 {3.60765004, 1.40584075}, //
+
48083 {3.60765004, 1.40772963}, //
+
48084 {3.60765004, 1.40936661}, //
+
48085 {3.60765004, 1.41075182}, //
+
48086 {3.60765004, 1.41390002}, //
+
48087 {3.60769129, 1.41303957}, //
+
48088 {3.6078155, 1.41196918}, //
+
48089 {3.60802221, 1.41068888}, //
+
48090 {3.60831165, 1.40919876}, //
+
48091 {3.60868406, 1.40749872}, //
+
48092 {3.60913897, 1.40558887}, //
+
48093 {3.6096766, 1.40346909}, //
+
48094 {3.61029696, 1.4011395}, //
+
48095 {3.61100006, 1.39859998}, //
+
48096 {3.61175561, 1.39602959}, //
+
48097 {3.61251116, 1.39358521}, //
+
48098 {3.61326671, 1.3912667}, //
+
48099 {3.61402225, 1.38907409}, //
+
48100 {3.6147778, 1.38700736}, //
+
48101 {3.61553335, 1.38506663}, //
+
48102 {3.6162889, 1.38325191}, //
+
48103 {3.61704445, 1.38156295}, //
+
48104 {3.6178, 1.38}, //
+
48105 {3.61784196, 1.37781727}, //
+
48106 {3.61796784, 1.37580252}, //
+
48107 {3.61817789, 1.37395561}, //
+
48108 {3.61847162, 1.37227654}, //
+
48109 {3.61884928, 1.37076545}, //
+
48110 {3.61931109, 1.3694222}, //
+
48111 {3.61985683, 1.36824691}, //
+
48112 {3.6204865, 1.36723948}, //
+
48113 {3.62120008, 1.3664}, //
+
48114 {3.62124205, 1.36561298}, //
+
48115 {3.62136793, 1.36474073}, //
+
48116 {3.62157774, 1.36378336}, //
+
48117 {3.62187171, 1.36274076}, //
+
48118 {3.62224936, 1.36161292}, //
+
48119 {3.62271118, 1.36039996}, //
+
48120 {3.62325668, 1.35910189}, //
+
48121 {3.62388635, 1.35771847}, //
+
48122 {3.62459993, 1.35625005}, //
+
48123 {3.62464142, 1.3554734}, //
+
48124 {3.6247654, 1.35465491}, //
+
48125 {3.62497211, 1.35379446}, //
+
48126 {3.62526178, 1.35289192}, //
+
48127 {3.62563396, 1.35194755}, //
+
48128 {3.62608886, 1.35096109}, //
+
48129 {3.62662649, 1.34993267}, //
+
48130 {3.62724686, 1.34886229}, //
+
48131 {3.62794995, 1.34774995}, //
+
48132 {3.62858033, 1.3466481}, //
+
48133 {3.62895989, 1.34558702}, //
+
48134 {3.62908888, 1.3445667}, //
+
48135 {3.62896729, 1.34358704}, //
+
48136 {3.62859511, 1.34264815}, //
+
48137 {3.62797213, 1.34175003}, //
+
48138 {3.6270988, 1.34089255}, //
+
48139 {3.62597466, 1.34007597}, //
+
48140 {3.62459993, 1.33930004}, //
+
48141 {3.62455797, 1.33850312}, //
+
48142 {3.62443209, 1.33762348}, //
+
48143 {3.62422228, 1.3366611}, //
+
48144 {3.62392831, 1.33561599}, //
+
48145 {3.62355065, 1.33448827}, //
+
48146 {3.62308884, 1.33327782}, //
+
48147 {3.6225431, 1.33198452}, //
+
48148 {3.62191367, 1.33060861}, //
+
48149 {3.62120008, 1.32914996}, //
+
48150 {3.61970997, 1.3275969}, //
+
48151 {3.61826181, 1.32595992}, //
+
48152 {3.61685562, 1.3242389}, //
+
48153 {3.61549139, 1.32243395}, //
+
48154 {3.61416912, 1.32054508}, //
+
48155 {3.61288881, 1.31857216}, //
+
48156 {3.61165071, 1.31651545}, //
+
48157 {3.61045432, 1.31437469}, //
+
48158 {3.6092999, 1.31215}, //
+
48159 {3.60819817, 1.30997777}, //
+
48160 {3.60713696, 1.30797219}, //
+
48161 {3.60611677, 1.30613339}, //
+
48162 {3.60513711, 1.30446112}, //
+
48163 {3.60419822, 1.30295551}, //
+
48164 {3.60330009, 1.30161667}, //
+
48165 {3.6024425, 1.30044448}, //
+
48166 {3.60162592, 1.29943883}, //
+
48167 {3.60085011, 1.29859996}, //
+
48168 {3.60011554, 1.29780245}, //
+
48169 {3.59942293, 1.29692101}, //
+
48170 {3.59877229, 1.29595554}, //
+
48171 {3.5981636, 1.29490614}, //
+
48172 {3.59759688, 1.29377282}, //
+
48173 {3.59707212, 1.29255557}, //
+
48174 {3.59658957, 1.29125428}, //
+
48175 {3.59614873, 1.28986919}, //
+
48176 {3.59575009, 1.28840005}, //
+
48177 {3.59535122, 1.28692043}, //
+
48178 {3.59491038, 1.28548145}, //
+
48179 {3.59442782, 1.28408337}, //
+
48180 {3.59390306, 1.28272593}, //
+
48181 {3.59333634, 1.28140926}, //
+
48182 {3.59272766, 1.28013337}, //
+
48183 {3.59207726, 1.27889812}, //
+
48184 {3.59138465, 1.27770376}, //
+
48185 {3.59065008, 1.27655005}, //
+
48186 {3.589926, 1.2754482}, //
+
48187 {3.5892427, 1.274387}, //
+
48188 {3.58859992, 1.27336669}, //
+
48189 {3.58799815, 1.27238703}, //
+
48190 {3.58743715, 1.27144814}, //
+
48191 {3.58691669, 1.27055001}, //
+
48192 {3.58643699, 1.26969254}, //
+
48193 {3.58599806, 1.26887596}, //
+
48194 {3.5855999, 1.26810002}, //
+
48195 {3.58492851, 1.26675677}, //
+
48196 {3.58465552, 1.26621115}, //
+
48197 {3.58442473, 1.26574934}, //
+
48198 {3.5840888, 1.26507783}, //
+
48199 {3.5839839, 1.2648679}, //
+
48200 });
+
48201 polys.push_back({
+
48202 {3.47880006, 1.25454998}, //
+
48203 {3.47634506, 1.255337}, //
+
48204 {3.4735136, 1.25620925}, //
+
48205 {3.47030544, 1.25716662}, //
+
48206 {3.46672106, 1.25820923}, //
+
48207 {3.46275997, 1.25933707}, //
+
48208 {3.45842218, 1.26055002}, //
+
48209 {3.45370793, 1.26184809}, //
+
48210 {3.44861722, 1.26323152}, //
+
48211 {3.44315004, 1.26470006}, //
+
48212 {3.43754697, 1.26623154}, //
+
48213 {3.43202662, 1.26780367}, //
+
48214 {3.42658877, 1.26941669}, //
+
48215 {3.42123389, 1.27107036}, //
+
48216 {3.41596174, 1.2727648}, //
+
48217 {3.41077232, 1.27450001}, //
+
48218 {3.4056654, 1.27627587}, //
+
48219 {3.40064144, 1.27809262}, //
+
48220 {3.39569998, 1.27995002}, //
+
48221 {3.39094687, 1.28181732}, //
+
48222 {3.38648772, 1.28364134}, //
+
48223 {3.38232231, 1.28542221}, //
+
48224 {3.37845063, 1.28715992}, //
+
48225 {3.37487292, 1.28885436}, //
+
48226 {3.37158895, 1.29050553}, //
+
48227 {3.3685987, 1.29211354}, //
+
48228 {3.36590242, 1.2936784}, //
+
48229 {3.36350012, 1.29519999}, //
+
48230 {3.36128569, 1.29754996}, //
+
48231 {3.35915422, 1.30006671}, //
+
48232 {3.35710549, 1.30274999}, //
+
48233 {3.35513949, 1.30560005}, //
+
48234 {3.35325623, 1.30861664}, //
+
48235 {3.35145545, 1.3118}, //
+
48236 {3.34973764, 1.31515002}, //
+
48237 {3.34810257, 1.3186667}, //
+
48238 {3.34654999, 1.32235003}, //
+
48239 {3.34579444, 1.32456422}, //
+
48240 {3.34503889, 1.32669568}, //
+
48241 {3.34428334, 1.32874441}, //
+
48242 {3.34352779, 1.33071053}, //
+
48243 {3.34277225, 1.3325938}, //
+
48244 {3.3420167, 1.33439445}, //
+
48245 {3.34126115, 1.33611238}, //
+
48246 {3.3405056, 1.33774757}, //
+
48247 {3.33975005, 1.33930004}, //
+
48248 {3.33900499, 1.34064317}, //
+
48249 {3.33825874, 1.34165061}, //
+
48250 {3.33751106, 1.34232223}, //
+
48251 {3.33676243, 1.34265804}, //
+
48252 {3.33601236, 1.34265804}, //
+
48253 {3.33526111, 1.34232223}, //
+
48254 {3.33450866, 1.34165061}, //
+
48255 {3.33375502, 1.34064317}, //
+
48256 {3.33299994, 1.33930004}, //
+
48257 {3.33150983, 1.33852351}, //
+
48258 {3.33006167, 1.3377049}, //
+
48259 {3.32865548, 1.33684444}, //
+
48260 {3.32729125, 1.33594203}, //
+
48261 {3.32596922, 1.33499753}, //
+
48262 {3.32468891, 1.33401108}, //
+
48263 {3.32345057, 1.33298266}, //
+
48264 {3.32225442, 1.3319124}, //
+
48265 {3.3211, 1.33080006}, //
+
48266 {3.31997705, 1.32971919}, //
+
48267 {3.31885314, 1.32872105}, //
+
48268 {3.3177278, 1.32780552}, //
+
48269 {3.31660128, 1.32697284}, //
+
48270 {3.31547356, 1.3262229}, //
+
48271 {3.31434441, 1.32555556}, //
+
48272 {3.3132143, 1.32497096}, //
+
48273 {3.31208277, 1.32446909}, //
+
48274 {3.31095004, 1.32404995}, //
+
48275 {3.30985856, 1.32369316}, //
+
48276 {3.30885124, 1.32337844}, //
+
48277 {3.30792785, 1.32310557}, //
+
48278 {3.30708838, 1.32287467}, //
+
48279 {3.30633283, 1.32268584}, //
+
48280 {3.3056612, 1.32253885}, //
+
48281 {3.3050735, 1.32243395}, //
+
48282 {3.30456972, 1.32237101}, //
+
48283 {3.3041501, 1.32235003}, //
+
48284 {3.30383515, 1.32239199}, //
+
48285 {3.30364633, 1.32251787}, //
+
48286 {3.30358338, 1.3227278}, //
+
48287 {3.30364633, 1.32302165}, //
+
48288 {3.30383515, 1.32339942}, //
+
48289 {3.3041501, 1.32386112}, //
+
48290 {3.3045907, 1.32440674}, //
+
48291 {3.30515742, 1.32503641}, //
+
48292 {3.30585003, 1.32574999}, //
+
48293 {3.30660558, 1.32650495}, //
+
48294 {3.30736113, 1.32725859}, //
+
48295 {3.30811667, 1.32801116}, //
+
48296 {3.30887222, 1.32876229}, //
+
48297 {3.30962777, 1.32951236}, //
+
48298 {3.31038332, 1.33026111}, //
+
48299 {3.31113887, 1.33100867}, //
+
48300 {3.31189442, 1.33175492}, //
+
48301 {3.31264997, 1.33249998}, //
+
48302 {3.31480122, 1.33327651}, //
+
48303 {3.31674385, 1.33409512}, //
+
48304 {3.31847787, 1.33495557}, //
+
48305 {3.32000303, 1.33585799}, //
+
48306 {3.32131982, 1.33680248}, //
+
48307 {3.32242775, 1.33778894}, //
+
48308 {3.32332706, 1.33881724}, //
+
48309 {3.324018, 1.33988762}, //
+
48310 {3.32450008, 1.34099996}, //
+
48311 {3.3248148, 1.34219563}, //
+
48312 {3.32500362, 1.34351599}, //
+
48313 {3.32506657, 1.34496117}, //
+
48314 {3.32500362, 1.34653091}, //
+
48315 {3.3248148, 1.34822536}, //
+
48316 {3.32450008, 1.35004449}, //
+
48317 {3.32405925, 1.35198832}, //
+
48318 {3.32349253, 1.35405684}, //
+
48319 {3.32279992, 1.35625005}, //
+
48320 {3.32138324, 1.35704696}, //
+
48321 {3.32013345, 1.35792649}, //
+
48322 {3.31905007, 1.35888886}, //
+
48323 {3.31813335, 1.35993397}, //
+
48324 {3.31738329, 1.36106169}, //
+
48325 {3.31680012, 1.36227226}, //
+
48326 {3.31638336, 1.36356544}, //
+
48327 {3.31613326, 1.36494136}, //
+
48328 {3.31605005, 1.3664}, //
+
48329 {3.31605005, 1.36933827}, //
+
48330 {3.31605005, 1.3721087}, //
+
48331 {3.31605005, 1.37343085}, //
+
48332 {3.31605005, 1.37471116}, //
+
48333 {3.31605005, 1.37594938}, //
+
48334 {3.31605005, 1.38048029}, //
+
48335 {3.31605005, 1.38150561}, //
+
48336 {3.31605005, 1.38248765}, //
+
48337 {3.31605005, 1.38342655}, //
+
48338 {3.31605005, 1.38432217}, //
+
48339 {3.31605005, 1.38517463}, //
+
48340 {3.31605005, 1.38809323}, //
+
48341 {3.31605005, 1.38863885}, //
+
48342 {3.31605005, 1.38910067}, //
+
48343 {3.31605005, 1.38947845}, //
+
48344 {3.31605005, 1.38977218}, //
+
48345 {3.31605005, 1.3899821}, //
+
48346 {3.31605005, 1.39014995}, //
+
48347 {3.31755066, 1.38787282}, //
+
48348 {3.31905246, 1.38555253}, //
+
48349 {3.32055545, 1.38318884}, //
+
48350 {3.32205987, 1.38078213}, //
+
48351 {3.32356548, 1.37833214}, //
+
48352 {3.32507229, 1.37583888}, //
+
48353 {3.32658029, 1.37330246}, //
+
48354 {3.32808948, 1.37072289}, //
+
48355 {3.3296001, 1.36810005}, //
+
48356 {3.33123636, 1.36536169}, //
+
48357 {3.33312345, 1.36241353}, //
+
48358 {3.33526111, 1.35925555}, //
+
48359 {3.33764935, 1.35588765}, //
+
48360 {3.34028816, 1.35230982}, //
+
48361 {3.3431778, 1.34852219}, //
+
48362 {3.34631801, 1.34452474}, //
+
48363 {3.34970856, 1.34031725}, //
+
48364 {3.35334992, 1.33589995}, //
+
48365 {3.35552216, 1.33368576}, //
+
48366 {3.35752773, 1.33155429}, //
+
48367 {3.35936666, 1.32950556}, //
+
48368 {3.36103892, 1.32753956}, //
+
48369 {3.36254454, 1.32565618}, //
+
48370 {3.36388326, 1.32385552}, //
+
48371 {3.36505556, 1.32213771}, //
+
48372 {3.36606121, 1.32050252}, //
+
48373 {3.36689997, 1.31895006}, //
+
48374 {3.36911416, 1.31673574}, //
+
48375 {3.37329435, 1.31255555}, //
+
48376 {3.38066244, 1.3051877}, //
+
48377 {3.38229752, 1.30355251}, //
+
48378 {3.3838501, 1.30200005}, //
+
48379 {3.3854444, 1.30044758}, //
+
48380 {3.3872056, 1.29881239}, //
+
48381 {3.38913321, 1.29709446}, //
+
48382 {3.39122772, 1.29529381}, //
+
48383 {3.39348888, 1.29341054}, //
+
48384 {3.3959167, 1.29144442}, //
+
48385 {3.39851117, 1.28939569}, //
+
48386 {3.4012723, 1.28726423}, //
+
48387 {3.40420008, 1.28505003}, //
+
48388 {3.40802908, 1.28283584}, //
+
48389 {3.41198277, 1.28070438}, //
+
48390 {3.41606116, 1.27865553}, //
+
48391 {3.42026424, 1.27668953}, //
+
48392 {3.42459202, 1.27480614}, //
+
48393 {3.42904449, 1.2730056}, //
+
48394 {3.43362164, 1.27128768}, //
+
48395 {3.4383235, 1.26965249}, //
+
48396 {3.44315004, 1.26810002}, //
+
48397 {3.44790363, 1.26663089}, //
+
48398 {3.45236492, 1.26524568}, //
+
48399 {3.45653343, 1.26394439}, //
+
48400 {3.46040916, 1.26272714}, //
+
48401 {3.4639926, 1.26159382}, //
+
48402 {3.46728325, 1.26054442}, //
+
48403 {3.47028136, 1.25957906}, //
+
48404 {3.47298694, 1.25869751}, //
+
48405 {3.47539997, 1.2579}, //
+
48406 {3.48215008, 1.25454998}, //
+
48407 {3.48210859, 1.25454998}, //
+
48408 {3.48198462, 1.25454998}, //
+
48409 {3.48177767, 1.25454998}, //
+
48410 });
+
48411 polys.push_back({
+
48412 {1.09031916, 1.12645745}, //
+
48413 {1.08500004, 1.12734997}, //
+
48414 {1.07972288, 1.12862968}, //
+
48415 {1.07444692, 1.13020182}, //
+
48416 {1.06917226, 1.13206661}, //
+
48417 {1.0638988, 1.13422406}, //
+
48418 {1.05862653, 1.13667405}, //
+
48419 {1.05335557, 1.13941669}, //
+
48420 {1.04808581, 1.14245188}, //
+
48421 {1.04281723, 1.14577961}, //
+
48422 {1.03754997, 1.1494}, //
+
48423 {1.03524196, 1.15086913}, //
+
48424 {1.03285122, 1.15225434}, //
+
48425 {1.03037775, 1.15355551}, //
+
48426 {1.02782166, 1.15477288}, //
+
48427 {1.02518272, 1.1559062}, //
+
48428 {1.02246106, 1.1569556}, //
+
48429 {1.01965678, 1.15792096}, //
+
48430 {1.01676977, 1.15880251}, //
+
48431 {1.01380002, 1.15960002}, //
+
48432 {1.00858521, 1.16181421}, //
+
48433 {1.00349629, 1.16394567}, //
+
48434 {0.998533309, 1.16599441}, //
+
48435 {0.993696272, 1.16796052}, //
+
48436 {0.988985181, 1.16984379}, //
+
48437 {0.984399974, 1.17164445}, //
+
48438 {0.979940712, 1.17336237}, //
+
48439 {0.975607395, 1.17499757}, //
+
48440 {0.971400023, 1.17655003}, //
+
48441 {0.967276514, 1.17801857}, //
+
48442 {0.963195086, 1.17940187}, //
+
48443 {0.95915556, 1.18069994}, //
+
48444 {0.955157995, 1.18191302}, //
+
48445 {0.951202452, 1.18304074}, //
+
48446 {0.947288871, 1.18408334}, //
+
48447 {0.943417311, 1.18504071}, //
+
48448 {0.939587653, 1.18591297}, //
+
48449 {0.935800016, 1.18669999}, //
+
48450 {0.935758054, 1.18669999}, //
+
48451 {0.93563211, 1.18669999}, //
+
48452 {0.935422242, 1.18669999}, //
+
48453 {0.935128391, 1.18669999}, //
+
48454 {0.932399988, 1.18669999}, //
+
48455 {0.929725289, 1.18753886}, //
+
48456 {0.92621237, 1.18854439}, //
+
48457 {0.921861112, 1.1897167}, //
+
48458 {0.916671634, 1.19105554}, //
+
48459 {0.910643816, 1.19256115}, //
+
48460 {0.903777778, 1.1942333}, //
+
48461 {0.896073461, 1.19607222}, //
+
48462 {0.887530863, 1.1980778}, //
+
48463 {0.878149986, 1.20025003}, //
+
48464 {0.868277133, 1.2024951}, //
+
48465 {0.858236432, 1.20469689}, //
+
48466 {0.848027766, 1.20685554}, //
+
48467 {0.837651253, 1.20897102}, //
+
48468 {0.827106774, 1.21104324}, //
+
48469 {0.816394448, 1.21307218}, //
+
48470 {0.805514216, 1.21505797}, //
+
48471 {0.794466078, 1.2170006}, //
+
48472 {0.783249974, 1.21889997}, //
+
48473 {0.772200644, 1.22062099}, //
+
48474 {0.76165247, 1.2220062}, //
+
48475 {0.75160557, 1.2230556}, //
+
48476 {0.742059886, 1.22376919}, //
+
48477 {0.733015418, 1.22414696}, //
+
48478 {0.724472225, 1.22418892}, //
+
48479 {0.716430247, 1.22389507}, //
+
48480 {0.708889484, 1.22326541}, //
+
48481 {0.701849997, 1.22230005}, //
+
48482 {0.695616066, 1.22090495}, //
+
48483 {0.690469742, 1.21896422}, //
+
48484 {0.686411083, 1.21647775}, //
+
48485 {0.68567723, 1.21572876}, //
+
48486 {0.683783352, 1.21649444}, //
+
48487 {0.680772245, 1.21779573}, //
+
48488 {0.677761137, 1.21918082}, //
+
48489 {0.67474997, 1.22064996}, //
+
48490 {0.620500028, 1.24094999}, //
+
48491 {0.664550006, 1.29519999}, //
+
48492 {0.666244447, 1.29538894}, //
+
48493 {0.669256806, 1.29572475}, //
+
48494 {0.67132777, 1.29595554}, //
+
48495 {0.673775315, 1.29622841}, //
+
48496 {0.676599383, 1.29654324}, //
+
48497 {0.679799974, 1.29690003}, //
+
48498 {0.683282733, 1.29727781}, //
+
48499 {0.686930835, 1.29765558}, //
+
48500 {0.69074446, 1.29803336}, //
+
48501 {0.694723427, 1.29841113}, //
+
48502 {0.698867917, 1.29878891}, //
+
48503 {0.70317775, 1.29916668}, //
+
48504 {0.707653105, 1.29954445}, //
+
48505 {0.712293804, 1.29992223}, //
+
48506 {0.717100024, 1.3003}, //
+
48507 {0.72193706, 1.30067778}, //
+
48508 {0.726648152, 1.30105555}, //
+
48509 {0.731233358, 1.30143332}, //
+
48510 {0.73569262, 1.3018111}, //
+
48511 {0.740025938, 1.30218887}, //
+
48512 {0.74423331, 1.30256665}, //
+
48513 {0.748314798, 1.30294442}, //
+
48514 {0.752270341, 1.3033222}, //
+
48515 {0.756099999, 1.30369997}, //
+
48516 {0.759699404, 1.30405676}, //
+
48517 {0.762964189, 1.3043716}, //
+
48518 {0.765894473, 1.30464447}, //
+
48519 {0.768490136, 1.30487525}, //
+
48520 {0.770751238, 1.3050642}, //
+
48521 {0.772677779, 1.30521107}, //
+
48522 {0.77426976, 1.30531609}, //
+
48523 {0.775527179, 1.30537903}, //
+
48524 {0.776449978, 1.30540001}, //
+
48525 {0.777478397, 1.3043716}, //
+
48526 {0.777793229, 1.30405676}, //
+
48527 {0.778150022, 1.30369997}, //
+
48528 {0.778506815, 1.30330122}, //
+
48529 {0.778821588, 1.3028605}, //
+
48530 {0.779094458, 1.30237782}, //
+
48531 {0.779325306, 1.30185306}, //
+
48532 {0.779514194, 1.30128646}, //
+
48533 {0.779661119, 1.30067778}, //
+
48534 {0.779766023, 1.30002713}, //
+
48535 {0.779829025, 1.29933453}, //
+
48536 {0.779850006, 1.29859996}, //
+
48537 {0.781318545, 1.29784441}, //
+
48538 {0.78270185, 1.29708886}, //
+
48539 {0.783999979, 1.29633331}, //
+
48540 {0.785212934, 1.29557776}, //
+
48541 {0.786340714, 1.29482222}, //
+
48542 {0.787383318, 1.29406667}, //
+
48543 {0.788340747, 1.29331112}, //
+
48544 {0.789212942, 1.29255557}, //
+
48545 {0.790000021, 1.29180002}, //
+
48546 {0.790838897, 1.29103398}, //
+
48547 {0.791844428, 1.29022467}, //
+
48548 {0.793016672, 1.28937221}, //
+
48549 {0.794355571, 1.28847659}, //
+
48550 {0.795861125, 1.28753769}, //
+
48551 {0.797533333, 1.28655553}, //
+
48552 {0.799372196, 1.28553021}, //
+
48553 {0.801377773, 1.28446174}, //
+
48554 {0.803550005, 1.28334999}, //
+
48555 {0.805941999, 1.28223825}, //
+
48556 {0.808584571, 1.28116977}, //
+
48557 {0.81147778, 1.28014445}, //
+
48558 {0.814621627, 1.27916229}, //
+
48559 {0.818016052, 1.27822351}, //
+
48560 {0.821661115, 1.27732778}, //
+
48561 {0.825556815, 1.27647531}, //
+
48562 {0.829703093, 1.275666}, //
+
48563 {0.834100008, 1.27489996}, //
+
48564 {0.852431476, 1.27246606}, //
+
48565 {0.869759262, 1.26969755}, //
+
48566 {0.886083305, 1.26659441}, //
+
48567 {0.901403725, 1.26315677}, //
+
48568 {0.915720344, 1.25938451}, //
+
48569 {0.929033339, 1.25527775}, //
+
48570 {0.941342592, 1.25083637}, //
+
48571 {0.952648163, 1.24606049}, //
+
48572 {0.962949991, 1.24094999}, //
+
48573 {0.96614939, 1.23934448}, //
+
48574 {0.969725311, 1.23752773}, //
+
48575 {0.973677754, 1.23549998}, //
+
48576 {0.97800678, 1.23326111}, //
+
48577 {0.982712328, 1.23081112}, //
+
48578 {0.987794459, 1.22815001}, //
+
48579 {0.993253112, 1.22527778}, //
+
48580 {0.999088287, 1.22219443}, //
+
48581 {1.00530005, 1.21889997}, //
+
48582 {1.01175249, 1.21557403}, //
+
48583 {1.01828766, 1.21237409}, //
+
48584 {1.02490556, 1.20930004}, //
+
48585 {1.0316062, 1.20635188}, //
+
48586 {1.03838956, 1.2035296}, //
+
48587 {1.04525554, 1.20083332}, //
+
48588 {1.05220437, 1.19826293}, //
+
48589 {1.05923581, 1.19581854}, //
+
48590 {1.06634998, 1.19350004}, //
+
48591 {1.07331729, 1.19136977}, //
+
48592 {1.07990801, 1.18949008}, //
+
48593 {1.08612227, 1.18786108}, //
+
48594 {1.09195983, 1.18648267}, //
+
48595 {1.09742093, 1.18535495}, //
+
48596 {1.10250556, 1.18447781}, //
+
48597 {1.10721362, 1.18385124}, //
+
48598 {1.11154509, 1.18347526}, //
+
48599 {1.11549997, 1.18334997}, //
+
48600 {1.11920369, 1.18337035}, //
+
48601 {1.12278152, 1.18343151}, //
+
48602 {1.12623334, 1.18353331}, //
+
48603 {1.12955928, 1.18367589}, //
+
48604 {1.13275921, 1.18385923}, //
+
48605 {1.13583338, 1.18408334}, //
+
48606 {1.13878143, 1.18434811}, //
+
48607 {1.14160371, 1.18465376}, //
+
48608 {1.14429998, 1.18499994}, //
+
48609 {1.14688087, 1.18539882}, //
+
48610 {1.14933455, 1.18583953}, //
+
48611 {1.15166116, 1.18632221}, //
+
48612 {1.15386045, 1.18684697}, //
+
48613 {1.15593266, 1.18741357}, //
+
48614 {1.1578778, 1.18802226}, //
+
48615 {1.15969563, 1.18867278}, //
+
48616 {1.16138637, 1.18936539}, //
+
48617 {1.16295004, 1.19009995}, //
+
48618 {1.16437721, 1.19081354}, //
+
48619 {1.16563642, 1.1914432}, //
+
48620 {1.16899443, 1.19312227}, //
+
48621 {1.16941416, 1.19333208}, //
+
48622 {1.16974998, 1.19350004}, //
+
48623 {1.13584995, 1.13584995}, //
+
48624 {1.1298691, 1.13306856}, //
+
48625 {1.12397099, 1.13074625}, //
+
48626 {1.1181556, 1.12888336}, //
+
48627 {1.11242282, 1.12747967}, //
+
48628 {1.10677278, 1.12653518}, //
+
48629 {1.10120559, 1.12605}, //
+
48630 {1.09572101, 1.12602413}, //
+
48631 });
+
48632 polys.push_back({
+
48633 {4.42472887, 1.24777102}, //
+
48634 {4.42466593, 1.24783397}, //
+
48635 {4.42456102, 1.24793887}, //
+
48636 {4.42441416, 1.24808586}, //
+
48637 {4.42422533, 1.24827468}, //
+
48638 {4.42372179, 1.24877834}, //
+
48639 {4.4234066, 1.24909317}, //
+
48640 {4.42304993, 1.24944997}, //
+
48641 {4.4226408, 1.24982774}, //
+
48642 {4.42214632, 1.25020552}, //
+
48643 {4.42156649, 1.25058329}, //
+
48644 {4.42090178, 1.25096107}, //
+
48645 {4.42015171, 1.25133884}, //
+
48646 {4.41931677, 1.25171661}, //
+
48647 {4.41839647, 1.25209439}, //
+
48648 {4.41739082, 1.25247228}, //
+
48649 {4.41629982, 1.25285006}, //
+
48650 {4.41516685, 1.25320685}, //
+
48651 {4.41403341, 1.25352156}, //
+
48652 {4.41289997, 1.25379443}, //
+
48653 {4.41176653, 1.25402534}, //
+
48654 {4.41063356, 1.25421417}, //
+
48655 {4.40950012, 1.25436115}, //
+
48656 {4.40836668, 1.25446606}, //
+
48657 {4.40723324, 1.254529}, //
+
48658 {4.4060998, 1.25454998}, //
+
48659 {4.4049983, 1.25454998}, //
+
48660 {4.40393686, 1.25454998}, //
+
48661 {4.40291643, 1.25454998}, //
+
48662 {4.39764977, 1.25454998}, //
+
48663 {4.39689445, 1.25457036}, //
+
48664 {4.39613867, 1.25463152}, //
+
48665 {4.39538336, 1.25473332}, //
+
48666 {4.39462757, 1.2548759}, //
+
48667 {4.39387226, 1.25505924}, //
+
48668 {4.39311647, 1.25528336}, //
+
48669 {4.39236116, 1.25554812}, //
+
48670 {4.39160538, 1.25585365}, //
+
48671 {4.39085007, 1.25619996}, //
+
48672 {4.39013624, 1.25659871}, //
+
48673 {4.38950682, 1.25703955}, //
+
48674 {4.38896132, 1.25752223}, //
+
48675 {4.38849926, 1.25804687}, //
+
48676 {4.3881216, 1.25861359}, //
+
48677 {4.38782787, 1.25922227}, //
+
48678 {4.38761806, 1.25987279}, //
+
48679 {4.38749218, 1.2605654}, //
+
48680 {4.38745022, 1.26129997}, //
+
48681 {4.38749218, 1.26209748}, //
+
48682 {4.38761806, 1.26297903}, //
+
48683 {4.38782787, 1.26394439}, //
+
48684 {4.3881216, 1.26499379}, //
+
48685 {4.38849926, 1.26612711}, //
+
48686 {4.38896132, 1.26734447}, //
+
48687 {4.38950682, 1.26864564}, //
+
48688 {4.39013624, 1.27003086}, //
+
48689 {4.39085007, 1.27149999}, //
+
48690 {4.39160538, 1.27295864}, //
+
48691 {4.39236116, 1.27433455}, //
+
48692 {4.39311647, 1.27562773}, //
+
48693 {4.39387226, 1.2768383}, //
+
48694 {4.39462757, 1.27796602}, //
+
48695 {4.39538336, 1.27901113}, //
+
48696 {4.39613867, 1.27997351}, //
+
48697 {4.39689445, 1.28085303}, //
+
48698 {4.39764977, 1.28164995}, //
+
48699 {4.39842606, 1.28313947}, //
+
48700 {4.3992424, 1.28458583}, //
+
48701 {4.40010023, 1.28598893}, //
+
48702 {4.40099812, 1.28734875}, //
+
48703 {4.40193701, 1.28866541}, //
+
48704 {4.40291643, 1.28993893}, //
+
48705 {4.40393686, 1.29116917}, //
+
48706 {4.4049983, 1.29235613}, //
+
48707 {4.4060998, 1.29349995}, //
+
48708 {4.40721226, 1.29452837}, //
+
48709 {4.40828276, 1.29534686}, //
+
48710 {4.40931129, 1.29595554}, //
+
48711 {4.41029739, 1.29635429}, //
+
48712 {4.41124201, 1.29654324}, //
+
48713 {4.41214466, 1.29652226}, //
+
48714 {4.41300488, 1.29629135}, //
+
48715 {4.4138236, 1.29585063}, //
+
48716 {4.4145999, 1.29519999}, //
+
48717 {4.41464186, 1.29447591}, //
+
48718 {4.41476774, 1.29379261}, //
+
48719 {4.41497755, 1.29314995}, //
+
48720 {4.41527176, 1.29254818}, //
+
48721 {4.41564941, 1.29198706}, //
+
48722 {4.41611099, 1.29146671}, //
+
48723 {4.41665697, 1.29098701}, //
+
48724 {4.4172864, 1.29054821}, //
+
48725 {4.41800022, 1.29015005}, //
+
48726 {4.41873407, 1.28977227}, //
+
48727 {4.41942453, 1.2893945}, //
+
48728 {4.42007208, 1.28901672}, //
+
48729 {4.42067671, 1.28863883}, //
+
48730 {4.42123747, 1.28826106}, //
+
48731 {4.42175579, 1.28788328}, //
+
48732 {4.42223024, 1.28750551}, //
+
48733 {4.42266178, 1.28712773}, //
+
48734 {4.42304993, 1.28674996}, //
+
48735 {4.42342758, 1.28639317}, //
+
48736 {4.42380571, 1.28607845}, //
+
48737 {4.42418337, 1.28580558}, //
+
48738 {4.42456102, 1.28557467}, //
+
48739 {4.42493868, 1.28538585}, //
+
48740 {4.42531681, 1.28523886}, //
+
48741 {4.42569447, 1.28513396}, //
+
48742 {4.42607212, 1.28507102}, //
+
48743 {4.42644978, 1.28505003}, //
+
48744 {4.42796135, 1.28505003}, //
+
48745 {4.42806625, 1.28505003}, //
+
48746 {4.42815018, 1.28505003}, //
+
48747 {4.42474985, 1.24775004}, //
+
48748 });
+
48749 polys.push_back({
+
48750 {3.53979993, 1.24094999}, //
+
48751 {3.52285004, 1.17995}, //
+
48752 {3.52285004, 1.18229079}, //
+
48753 {3.52285004, 1.18711853}, //
+
48754 {3.52285004, 1.1918}, //
+
48755 {3.52287102, 1.19451725}, //
+
48756 {3.52293396, 1.19740248}, //
+
48757 {3.52303886, 1.20045555}, //
+
48758 {3.52318573, 1.20367658}, //
+
48759 {3.5233748, 1.20706546}, //
+
48760 {3.52360559, 1.21062219}, //
+
48761 {3.52387834, 1.21434689}, //
+
48762 {3.52419329, 1.21823955}, //
+
48763 {3.52454996, 1.22230005}, //
+
48764 {3.52492785, 1.22640252}, //
+
48765 {3.52530551, 1.23042095}, //
+
48766 {3.5256834, 1.23435557}, //
+
48767 {3.52606106, 1.23820615}, //
+
48768 {3.52643895, 1.2419728}, //
+
48769 {3.52681661, 1.24565554}, //
+
48770 {3.5271945, 1.24925435}, //
+
48771 {3.52757215, 1.25276911}, //
+
48772 {3.52795005, 1.25619996}, //
+
48773 {3.52826476, 1.25949442}, //
+
48774 {3.52845359, 1.26257777}, //
+
48775 {3.52851677, 1.26545}, //
+
48776 {3.52845359, 1.26811111}, //
+
48777 {3.52826476, 1.2705611}, //
+
48778 {3.52795005, 1.27279997}, //
+
48779 {3.52750921, 1.27482772}, //
+
48780 {3.52694249, 1.27664447}, //
+
48781 {3.52624989, 1.27824998}, //
+
48782 {3.52633405, 1.27816606}, //
+
48783 {3.52643895, 1.27806115}, //
+
48784 {3.52658582, 1.27791417}, //
+
48785 {3.52700567, 1.27749443}, //
+
48786 {3.52727842, 1.27722156}, //
+
48787 {3.52759314, 1.27690685}, //
+
48788 {3.52795005, 1.27655005}, //
+
48789 {3.5283277, 1.27618277}, //
+
48790 {3.5287056, 1.27581418}, //
+
48791 {3.52908325, 1.27544439}, //
+
48792 {3.52946115, 1.27507341}, //
+
48793 {3.5298388, 1.27470124}, //
+
48794 {3.53021669, 1.27432775}, //
+
48795 {3.53059435, 1.27395308}, //
+
48796 {3.53097224, 1.27357721}, //
+
48797 {3.5313499, 1.27320004}, //
+
48798 {3.5325253, 1.27202475}, //
+
48799 {3.53271413, 1.2718358}, //
+
48800 {3.53286099, 1.27168894}, //
+
48801 {3.53296614, 1.27158391}, //
+
48802 {3.53302908, 1.27152097}, //
+
48803 {3.53305006, 1.27149999}, //
+
48804 {3.53307033, 1.27076542}, //
+
48805 {3.5331316, 1.27007282}, //
+
48806 {3.5332334, 1.26942217}, //
+
48807 {3.53337598, 1.26881361}, //
+
48808 {3.53355932, 1.26824689}, //
+
48809 {3.53378344, 1.26772225}, //
+
48810 {3.53404808, 1.26723945}, //
+
48811 {3.53435373, 1.26679873}, //
+
48812 {3.53469992, 1.26639998}, //
+
48813 {3.53518271, 1.26604319}, //
+
48814 {3.53587532, 1.26572835}, //
+
48815 {3.53677773, 1.2654556}, //
+
48816 {3.5378902, 1.2652247}, //
+
48817 {3.53921223, 1.26503575}, //
+
48818 {3.54074454, 1.26488888}, //
+
48819 {3.54248643, 1.26478398}, //
+
48820 {3.54443836, 1.26472104}, //
+
48821 {3.5466001, 1.26470006}, //
+
48822 {3.54731369, 1.2653296}, //
+
48823 {3.54794312, 1.26570737}, //
+
48824 {3.54848886, 1.26583338}, //
+
48825 {3.54895067, 1.26570737}, //
+
48826 {3.54932833, 1.2653296}, //
+
48827 {3.5496223, 1.26470006}, //
+
48828 {3.54983211, 1.2638185}, //
+
48829 {3.54995799, 1.26268518}, //
+
48830 {3.54999995, 1.26129997}, //
+
48831 {3.54999995, 1.25641668}, //
+
48832 {3.54999995, 1.25461853}, //
+
48833 {3.54999995, 1.24101174}, //
+
48834 {3.54999995, 1.23908889}, //
+
48835 {3.54999995, 1.23699689}, //
+
48836 {3.54999995, 1.22399998}, //
+
48837 {3.55002093, 1.22325492}, //
+
48838 {3.55008388, 1.22250867}, //
+
48839 {3.55018878, 1.22176111}, //
+
48840 {3.55033588, 1.22101235}, //
+
48841 {3.55052471, 1.22026229}, //
+
48842 {3.5507555, 1.21951115}, //
+
48843 {3.55102849, 1.21875858}, //
+
48844 {3.5513432, 1.21800494}, //
+
48845 {3.55170012, 1.21724999}, //
+
48846 {3.55205679, 1.21655738}, //
+
48847 {3.5523715, 1.21599078}, //
+
48848 {3.55264449, 1.21554995}, //
+
48849 {3.55287528, 1.21523523}, //
+
48850 {3.55306411, 1.21504629}, //
+
48851 {3.55321121, 1.21498334}, //
+
48852 {3.55331612, 1.21504629}, //
+
48853 {3.55337906, 1.21523523}, //
+
48854 {3.55340004, 1.21554995}, //
+
48855 {3.55344129, 1.21594882}, //
+
48856 {3.5535655, 1.21638954}, //
+
48857 {3.55377221, 1.21687222}, //
+
48858 {3.55406165, 1.21739686}, //
+
48859 {3.55443406, 1.21796358}, //
+
48860 {3.55488896, 1.21857226}, //
+
48861 {3.5554266, 1.21922278}, //
+
48862 {3.55604696, 1.21991539}, //
+
48863 {3.55675006, 1.22064996}, //
+
48864 {3.55679202, 1.221416}, //
+
48865 {3.55691791, 1.22222531}, //
+
48866 {3.55712771, 1.22307777}, //
+
48867 {3.55742168, 1.22397351}, //
+
48868 {3.55779934, 1.22491241}, //
+
48869 {3.55826116, 1.22589445}, //
+
48870 {3.5588069, 1.22691977}, //
+
48871 {3.55943632, 1.22798824}, //
+
48872 {3.56014991, 1.22909999}, //
+
48873 {3.56090546, 1.23021233}, //
+
48874 {3.56166101, 1.23128271}, //
+
48875 {3.56241655, 1.23231113}, //
+
48876 {3.56317234, 1.23329759}, //
+
48877 {3.56392789, 1.23424196}, //
+
48878 {3.56468344, 1.2351445}, //
+
48879 {3.56543899, 1.23600495}, //
+
48880 {3.56619453, 1.23682344}, //
+
48881 {3.56695008, 1.23759997}, //
+
48882 {3.56768394, 1.23830307}, //
+
48883 {3.56837463, 1.23892343}, //
+
48884 {3.56902218, 1.23946106}, //
+
48885 {3.56962657, 1.23991609}, //
+
48886 {3.57018757, 1.24028826}, //
+
48887 {3.57070565, 1.24057782}, //
+
48888 {3.57118034, 1.24078453}, //
+
48889 {3.57161164, 1.24090862}, //
+
48890 {3.57200003, 1.24094999}, //
+
48891 {3.5723567, 1.24094999}, //
+
48892 {3.57317519, 1.24094999}, //
+
48893 {3.57336426, 1.24094999}, //
+
48894 {3.57351112, 1.24094999}, //
+
48895 {3.57361603, 1.24094999}, //
+
48896 {3.57367897, 1.24094999}, //
+
48897 {3.57369995, 1.24094999}, //
+
48898 {3.57369995, 1.24094999}, //
+
48899 {3.57369995, 1.24094999}, //
+
48900 {3.57369995, 1.24094999}, //
+
48901 {3.57369995, 1.24094999}, //
+
48902 {3.57351112, 1.24076116}, //
+
48903 {3.57336426, 1.24061418}, //
+
48904 {3.57317519, 1.24042535}, //
+
48905 {3.5729444, 1.24019444}, //
+
48906 {3.5723567, 1.23960674}, //
+
48907 {3.57200003, 1.23924994}, //
+
48908 {3.57163262, 1.23890376}, //
+
48909 {3.57126427, 1.23859811}, //
+
48910 {3.57089448, 1.23833334}, //
+
48911 {3.5705235, 1.23810923}, //
+
48912 {3.57015133, 1.23792589}, //
+
48913 {3.56977773, 1.23778331}, //
+
48914 {3.56940317, 1.23768151}, //
+
48915 {3.56902719, 1.23762035}, //
+
48916 {3.56865001, 1.23759997}, //
+
48917 {3.5674746, 1.23759997}, //
+
48918 {3.56728578, 1.23759997}, //
+
48919 {3.56695008, 1.23759997}, //
+
48920 {3.56619453, 1.23466229}, //
+
48921 {3.56543899, 1.23189378}, //
+
48922 {3.56468344, 1.22929442}, //
+
48923 {3.56392789, 1.22686422}, //
+
48924 {3.56317234, 1.22460306}, //
+
48925 {3.56241655, 1.22251105}, //
+
48926 {3.56166101, 1.22058833}, //
+
48927 {3.56090546, 1.21883452}, //
+
48928 {3.56014991, 1.21724999}, //
+
48929 {3.55718017, 1.21041977}, //
+
48930 {3.55429316, 1.20350683}, //
+
48931 {3.55148888, 1.19651115}, //
+
48932 {3.54876733, 1.18943274}, //
+
48933 {3.54612851, 1.1822716}, //
+
48934 {3.54357219, 1.17502773}, //
+
48935 {3.54109883, 1.16770124}, //
+
48936 {3.53870797, 1.16029203}, //
+
48937 {3.53640008, 1.15279996}, //
+
48938 });
+
48939 polys.push_back({
+
48940 {4.4179368, 1.16974998}, //
+
48941 {4.41743326, 1.16974998}, //
+
48942 {4.41289997, 1.16974998}, //
+
48943 {4.41166258, 1.16979194}, //
+
48944 {4.41021585, 1.16991794}, //
+
48945 {4.40856123, 1.17012775}, //
+
48946 {4.40669775, 1.1704216}, //
+
48947 {4.40462542, 1.17079937}, //
+
48948 {4.40234423, 1.17126107}, //
+
48949 {4.39985514, 1.17180681}, //
+
48950 {4.39715672, 1.17243648}, //
+
48951 {4.39424992, 1.17314994}, //
+
48952 {4.39203596, 1.17319202}, //
+
48953 {4.3899045, 1.17331791}, //
+
48954 {4.38785553, 1.17352784}, //
+
48955 {4.38588953, 1.17382157}, //
+
48956 {4.38400602, 1.17419934}, //
+
48957 {4.38220549, 1.17466116}, //
+
48958 {4.38048744, 1.17520678}, //
+
48959 {4.37885237, 1.17583644}, //
+
48960 {4.37729979, 1.17655003}, //
+
48961 {4.37570572, 1.17734694}, //
+
48962 {4.37394428, 1.17822659}, //
+
48963 {4.37201643, 1.17918885}, //
+
48964 {4.36992216, 1.18023396}, //
+
48965 {4.367661, 1.18136168}, //
+
48966 {4.36523342, 1.18257225}, //
+
48967 {4.36263895, 1.18386543}, //
+
48968 {4.35987759, 1.18524134}, //
+
48969 {4.35694981, 1.18669999}, //
+
48970 {4.35690784, 1.18669999}, //
+
48971 {4.35657215, 1.18669999}, //
+
48972 {4.35627842, 1.18669999}, //
+
48973 {4.35354996, 1.18669999}, //
+
48974 {4.34957409, 1.18879879}, //
+
48975 {4.34517956, 1.19056177}, //
+
48976 {4.34036684, 1.19198895}, //
+
48977 {4.33513498, 1.19308031}, //
+
48978 {4.32948542, 1.19383585}, //
+
48979 {4.32341671, 1.19425559}, //
+
48980 {4.31692982, 1.19433951}, //
+
48981 {4.31002426, 1.19408762}, //
+
48982 {4.30270004, 1.19350004}, //
+
48983 {4.29721355, 1.19358397}, //
+
48984 {4.29130983, 1.19383585}, //
+
48985 {4.28498888, 1.19425559}, //
+
48986 {4.27825069, 1.19484317}, //
+
48987 {4.27109528, 1.19559872}, //
+
48988 {4.26352215, 1.19652224}, //
+
48989 {4.25553226, 1.1976136}, //
+
48990 {4.24712467, 1.1988728}, //
+
48991 {4.23829985, 1.20029998}, //
+
48992 {4.2280798, 1.20184195}, //
+
48993 {4.2185297, 1.20346785}, //
+
48994 {4.20965004, 1.20517778}, //
+
48995 {4.20144081, 1.20697165}, //
+
48996 {4.19390202, 1.20884943}, //
+
48997 {4.18703318, 1.21081114}, //
+
48998 {4.18083525, 1.21285677}, //
+
48999 {4.17530727, 1.21498644}, //
+
49000 {4.17045021, 1.21720004}, //
+
49001 {4.16597986, 1.21963394}, //
+
49002 {4.16159058, 1.22240245}, //
+
49003 {4.15728331, 1.22550559}, //
+
49004 {4.15305758, 1.22894323}, //
+
49005 {4.14891291, 1.23271549}, //
+
49006 {4.14484978, 1.23682225}, //
+
49007 {4.14086866, 1.24126363}, //
+
49008 {4.13696861, 1.24603951}, //
+
49009 {4.1331501, 1.25115001}, //
+
49010 {4.13116598, 1.25397289}, //
+
49011 {4.12972546, 1.25641918}, //
+
49012 {4.12882757, 1.25848889}, //
+
49013 {4.12847328, 1.26018214}, //
+
49014 {4.12866211, 1.26149881}, //
+
49015 {4.12939453, 1.26243889}, //
+
49016 {4.13066959, 1.26300251}, //
+
49017 {4.13248825, 1.26318955}, //
+
49018 {4.13485003, 1.26300001}, //
+
49019 {4.13759899, 1.26247597}, //
+
49020 {4.14055634, 1.26165926}, //
+
49021 {4.14372206, 1.26055002}, //
+
49022 {4.14709711, 1.25914812}, //
+
49023 {4.15068007, 1.25745368}, //
+
49024 {4.15447235, 1.2554667}, //
+
49025 {4.15847301, 1.25318706}, //
+
49026 {4.16268206, 1.25061476}, //
+
49027 {4.16709995, 1.24775004}, //
+
49028 {4.17169571, 1.24545181}, //
+
49029 {4.17646027, 1.24306858}, //
+
49030 {4.18139458, 1.24059999}, //
+
49031 {4.18649769, 1.23804629}, //
+
49032 {4.1917696, 1.23540735}, //
+
49033 {4.19721127, 1.2326833}, //
+
49034 {4.20282173, 1.22987401}, //
+
49035 {4.208601, 1.22697961}, //
+
49036 {4.21455002, 1.22399998}, //
+
49037 {4.22038412, 1.22256231}, //
+
49038 {4.22584152, 1.22124934}, //
+
49039 {4.23092222, 1.22006106}, //
+
49040 {4.2356267, 1.21899748}, //
+
49041 {4.23995447, 1.21805859}, //
+
49042 {4.24390554, 1.21724439}, //
+
49043 {4.24748039, 1.21655488}, //
+
49044 {4.25067854, 1.21599007}, //
+
49045 {4.25349998, 1.21554995}, //
+
49046 {4.25612354, 1.21523523}, //
+
49047 {4.25870514, 1.21504629}, //
+
49048 {4.2612443, 1.21498334}, //
+
49049 {4.26374197, 1.21504629}, //
+
49050 {4.26619768, 1.21523523}, //
+
49051 {4.26861095, 1.21554995}, //
+
49052 {4.27098274, 1.21599078}, //
+
49053 {4.27331257, 1.21655738}, //
+
49054 {4.27559996, 1.21724999}, //
+
49055 {4.27789736, 1.21729195}, //
+
49056 {4.28027916, 1.21741796}, //
+
49057 {4.28274441, 1.21762776}, //
+
49058 {4.28529406, 1.21792161}, //
+
49059 {4.28792715, 1.21829939}, //
+
49060 {4.29064465, 1.21876109}, //
+
49061 {4.29344559, 1.21930683}, //
+
49062 {4.29633093, 1.21993637}, //
+
49063 {4.29930019, 1.22064996}, //
+
49064 {4.30440998, 1.22062898}, //
+
49065 {4.30918407, 1.22056603}, //
+
49066 {4.313622, 1.22046113}, //
+
49067 {4.3177247, 1.22031415}, //
+
49068 {4.32149124, 1.22012532}, //
+
49069 {4.32492208, 1.21989441}, //
+
49070 {4.32801723, 1.21962166}, //
+
49071 {4.33077669, 1.21930683}, //
+
49072 {4.33319998, 1.21895003}, //
+
49073 {4.33542395, 1.21855128}, //
+
49074 {4.33756304, 1.21811044}, //
+
49075 {4.33961678, 1.21762776}, //
+
49076 {4.34158516, 1.21710312}, //
+
49077 {4.34346867, 1.2165364}, //
+
49078 {4.34526682, 1.21592772}, //
+
49079 {4.34697962, 1.21527719}, //
+
49080 {4.34860754, 1.21458459}, //
+
49081 {4.35015011, 1.21385002}, //
+
49082 {4.35090542, 1.21313643}, //
+
49083 {4.35166121, 1.21250677}, //
+
49084 {4.35241652, 1.21196115}, //
+
49085 {4.3531723, 1.21149933}, //
+
49086 {4.35392761, 1.21112156}, //
+
49087 {4.3546834, 1.21082783}, //
+
49088 {4.35543871, 1.2106179}, //
+
49089 {4.3561945, 1.21049201}, //
+
49090 {4.35694981, 1.21045005}, //
+
49091 {4.35985661, 1.20973647}, //
+
49092 {4.36255503, 1.2091068}, //
+
49093 {4.36504459, 1.20856106}, //
+
49094 {4.36732531, 1.20809937}, //
+
49095 {4.36939764, 1.20772159}, //
+
49096 {4.37126112, 1.20742774}, //
+
49097 {4.37291622, 1.20721793}, //
+
49098 {4.37436247, 1.20709193}, //
+
49099 {4.37559986, 1.20704997}, //
+
49100 {4.37679577, 1.20709193}, //
+
49101 {4.37811613, 1.20721793}, //
+
49102 {4.37956095, 1.20742774}, //
+
49103 {4.3811307, 1.20772159}, //
+
49104 {4.38282537, 1.20809937}, //
+
49105 {4.38464451, 1.20856106}, //
+
49106 {4.3865881, 1.2091068}, //
+
49107 {4.38865662, 1.20973647}, //
+
49108 {4.39085007, 1.21045005}, //
+
49109 {4.39160538, 1.21049201}, //
+
49110 {4.39236116, 1.2106179}, //
+
49111 {4.39311647, 1.21082783}, //
+
49112 {4.39387226, 1.21112156}, //
+
49113 {4.39462757, 1.21149933}, //
+
49114 {4.39538336, 1.21196115}, //
+
49115 {4.39613867, 1.21250677}, //
+
49116 {4.39689445, 1.21313643}, //
+
49117 {4.39764977, 1.21385002}, //
+
49118 {4.39842606, 1.21385002}, //
+
49119 {4.3992424, 1.21385002}, //
+
49120 {4.40193701, 1.21385002}, //
+
49121 {4.40291643, 1.21385002}, //
+
49122 {4.4049983, 1.21385002}, //
+
49123 {4.40719128, 1.21385002}, //
+
49124 {4.40819883, 1.21385002}, //
+
49125 {4.40912199, 1.21385002}, //
+
49126 {4.41071749, 1.21385002}, //
+
49127 {4.41138887, 1.21385002}, //
+
49128 {4.41248035, 1.21385002}, //
+
49129 {4.41327763, 1.21385002}, //
+
49130 {4.41365576, 1.21385002}, //
+
49131 {4.41403341, 1.21385002}, //
+
49132 {4.41478872, 1.21385002}, //
+
49133 {4.41516685, 1.21385002}, //
+
49134 {4.41554451, 1.21385002}, //
+
49135 {4.41592216, 1.21385002}, //
+
49136 {4.41629982, 1.21385002}, //
+
49137 {4.41665697, 1.21382904}, //
+
49138 {4.41697168, 1.2137661}, //
+
49139 {4.41724443, 1.21366107}, //
+
49140 {4.41747522, 1.21351421}, //
+
49141 {4.41766405, 1.21332526}, //
+
49142 {4.41781092, 1.21309447}, //
+
49143 {4.41791582, 1.2128216}, //
+
49144 {4.41797924, 1.21250677}, //
+
49145 {4.41800022, 1.21214998}, //
+
49146 {4.41800022, 1.21179318}, //
+
49147 {4.41800022, 1.2112056}, //
+
49148 {4.41800022, 1.21097469}, //
+
49149 {4.41800022, 1.21045005}, //
+
49150 {4.41800022, 1.21042895}, //
+
49151 {4.41800022, 1.21036601}, //
+
49152 {4.41800022, 1.21026111}, //
+
49153 {4.41800022, 1.21011424}, //
+
49154 {4.41800022, 1.20875001}, //
+
49155 {4.41800022, 1.20839322}, //
+
49156 {4.41800022, 1.20780551}, //
+
49157 {4.41800022, 1.20757473}, //
+
49158 {4.41800022, 1.20704997}, //
+
49159 {4.41800022, 1.20698702}, //
+
49160 {4.41800022, 1.20648336}, //
+
49161 {4.41800022, 1.20604265}, //
+
49162 {4.41800022, 1.20194995}, //
+
49163 {4.41800022, 1.20080614}, //
+
49164 {4.41800022, 1.19838893}, //
+
49165 {4.41800022, 1.19711542}, //
+
49166 {4.41800022, 1.19009995}, //
+
49167 {4.41800022, 1.18862033}, //
+
49168 {4.41800022, 1.18578339}, //
+
49169 {4.41800022, 1.18442595}, //
+
49170 {4.41800022, 1.17824996}, //
+
49171 {4.41800022, 1.17713761}, //
+
49172 {4.41800022, 1.17503893}, //
+
49173 {4.41800022, 1.17405248}, //
+
49174 {4.41800022, 1.16974998}, //
+
49175 });
+
49176 polys.push_back({
+
49177 {6.09294987, 1.2272321}, //
+
49178 {6.09294987, 1.227337}, //
+
49179 {6.09294987, 1.22708523}, //
+
49180 });
+
49181 polys.push_back({
+
49182 {4.41789627, 1.09075987}, //
+
49183 {4.41475725, 1.09113026}, //
+
49184 {4.41120005, 1.09175003}, //
+
49185 {4.40739155, 1.09250557}, //
+
49186 {4.40349865, 1.09326112}, //
+
49187 {4.3995223, 1.09401667}, //
+
49188 {4.39546156, 1.09477222}, //
+
49189 {4.39131737, 1.09552777}, //
+
49190 {4.38708878, 1.09628332}, //
+
49191 {4.38277674, 1.09703887}, //
+
49192 {4.3783803, 1.09779441}, //
+
49193 {4.37389994, 1.09854996}, //
+
49194 {4.36941957, 1.1000191}, //
+
49195 {4.36502361, 1.10140431}, //
+
49196 {4.3607111, 1.1027056}, //
+
49197 {4.35648251, 1.10392284}, //
+
49198 {4.35233831, 1.10505617}, //
+
49199 {4.34827757, 1.10610557}, //
+
49200 {4.34430122, 1.10707104}, //
+
49201 {4.3404088, 1.10795248}, //
+
49202 {4.33659983, 1.10874999}, //
+
49203 {4.26539993, 1.10874999}, //
+
49204 {4.25213718, 1.10958886}, //
+
49205 {4.23945904, 1.11059439}, //
+
49206 {4.22736645, 1.1117667}, //
+
49207 {4.21585941, 1.11310554}, //
+
49208 {4.20493698, 1.11461115}, //
+
49209 {4.19460011, 1.1162833}, //
+
49210 {4.18484831, 1.11812222}, //
+
49211 {4.17568159, 1.1201278}, //
+
49212 {4.16709995, 1.12230003}, //
+
49213 {4.16266108, 1.1237272}, //
+
49214 {4.15838909, 1.12498641}, //
+
49215 {4.15428352, 1.12607777}, //
+
49216 {4.15034437, 1.12700129}, //
+
49217 {4.14657211, 1.12775683}, //
+
49218 {4.14296675, 1.12834442}, //
+
49219 {4.1395278, 1.12876415}, //
+
49220 {4.13625574, 1.12901604}, //
+
49221 {4.1331501, 1.12909997}, //
+
49222 {4.13158655, 1.12916231}, //
+
49223 {4.12989569, 1.12934935}, //
+
49224 {4.12807798, 1.12966108}, //
+
49225 {4.12613249, 1.13009751}, //
+
49226 {4.12406063, 1.13065863}, //
+
49227 {4.12186098, 1.13134444}, //
+
49228 {4.11953449, 1.13215494}, //
+
49229 {4.11708069, 1.13309014}, //
+
49230 {4.11450005, 1.13415003}, //
+
49231 {4.111866, 1.13532472}, //
+
49232 {4.109231, 1.13658214}, //
+
49233 {4.10659456, 1.13792217}, //
+
49234 {4.1039567, 1.13934505}, //
+
49235 {4.10131788, 1.14085066}, //
+
49236 {4.09867764, 1.14243889}, //
+
49237 {4.09603643, 1.14410985}, //
+
49238 {4.0933938, 1.14586353}, //
+
49239 {4.09075022, 1.14769995}, //
+
49240 {4.08815813, 1.14952588}, //
+
49241 {4.08564854, 1.15122592}, //
+
49242 {4.08322239, 1.15279996}, //
+
49243 {4.08087826, 1.15424812}, //
+
49244 {4.0786171, 1.15557039}, //
+
49245 {4.07804728, 1.15588331}, //
+
49246 {4.07647896, 1.16498804}, //
+
49247 {4.07677889, 1.16505682}, //
+
49248 {4.07941437, 1.16568637}, //
+
49249 {4.08230019, 1.16639996}, //
+
49250 {4.08536339, 1.16714501}, //
+
49251 {4.08851004, 1.16789138}, //
+
49252 {4.0917387, 1.16863894}, //
+
49253 {4.09505081, 1.1693877}, //
+
49254 {4.09844494, 1.17013764}, //
+
49255 {4.10192204, 1.1708889}, //
+
49256 {4.1054821, 1.17164135}, //
+
49257 {4.10912466, 1.17239511}, //
+
49258 {4.11285019, 1.17314994}, //
+
49259 {4.11428785, 1.17317104}, //
+
49260 {4.11560059, 1.17323399}, //
+
49261 {4.11678886, 1.17333889}, //
+
49262 {4.11785269, 1.17348576}, //
+
49263 {4.11879158, 1.1736747}, //
+
49264 {4.11960554, 1.17390561}, //
+
49265 {4.12029505, 1.17417836}, //
+
49266 {4.1208601, 1.17449319}, //
+
49267 {4.12130022, 1.17484999}, //
+
49268 {4.12165689, 1.17524874}, //
+
49269 {4.12197161, 1.17568946}, //
+
49270 {4.12224436, 1.17617226}, //
+
49271 {4.12247515, 1.1766969}, //
+
49272 {4.12266397, 1.17726362}, //
+
49273 {4.12281132, 1.17787218}, //
+
49274 {4.12291622, 1.17852283}, //
+
49275 {4.12297916, 1.17921543}, //
+
49276 {4.12300014, 1.17995}, //
+
49277 {4.12302113, 1.18068397}, //
+
49278 {4.12308407, 1.18137467}, //
+
49279 {4.12318897, 1.18202221}, //
+
49280 {4.12333584, 1.18262649}, //
+
49281 {4.12352467, 1.1831876}, //
+
49282 {4.12375546, 1.18370557}, //
+
49283 {4.12402821, 1.18418026}, //
+
49284 {4.1243434, 1.18461168}, //
+
49285 {4.12470007, 1.18499994}, //
+
49286 {4.12509823, 1.18535674}, //
+
49287 {4.12553692, 1.18567157}, //
+
49288 {4.12601662, 1.18594444}, //
+
49289 {4.12653685, 1.18617535}, //
+
49290 {4.12709808, 1.18636417}, //
+
49291 {4.12769985, 1.18651116}, //
+
49292 {4.12834263, 1.18661606}, //
+
49293 {4.12902594, 1.18667901}, //
+
49294 {4.12974977, 1.18669999}, //
+
49295 {4.13060999, 1.18665802}, //
+
49296 {4.13167858, 1.18653214}, //
+
49297 {4.13295555, 1.18632221}, //
+
49298 {4.13444138, 1.18602836}, //
+
49299 {4.13613558, 1.18565059}, //
+
49300 {4.13803911, 1.18518889}, //
+
49301 {4.14015055, 1.18464327}, //
+
49302 {4.14247084, 1.18401361}, //
+
49303 {4.14499998, 1.18330002}, //
+
49304 {4.14766502, 1.18255496}, //
+
49305 {4.1503706, 1.18180859}, //
+
49306 {4.1531167, 1.18106115}, //
+
49307 {4.15590382, 1.1803124}, //
+
49308 {4.15873146, 1.17956233}, //
+
49309 {4.16160011, 1.17881107}, //
+
49310 {4.1645093, 1.17805862}, //
+
49311 {4.16745949, 1.17730498}, //
+
49312 {4.17045021, 1.17655003}, //
+
49313 {4.18167639, 1.17219508}, //
+
49314 {4.19273376, 1.16817474}, //
+
49315 {4.20362234, 1.16448891}, //
+
49316 {4.21434116, 1.1611377}, //
+
49317 {4.22489119, 1.15812099}, //
+
49318 {4.23527241, 1.1554389}, //
+
49319 {4.24548388, 1.15309131}, //
+
49320 {4.25552654, 1.15107834}, //
+
49321 {4.26539993, 1.1494}, //
+
49322 {4.27494812, 1.14794135}, //
+
49323 {4.28399277, 1.14656544}, //
+
49324 {4.2925334, 1.14527225}, //
+
49325 {4.30057049, 1.14406168}, //
+
49326 {4.30810356, 1.14293396}, //
+
49327 {4.31513357, 1.14188886}, //
+
49328 {4.32165909, 1.1409266}, //
+
49329 {4.32768154, 1.14004695}, //
+
49330 {4.33319998, 1.13925004}, //
+
49331 {4.37729979, 1.13925004}, //
+
49332 {4.37809706, 1.13922906}, //
+
49333 {4.37897635, 1.139166}, //
+
49334 {4.37993908, 1.13906109}, //
+
49335 {4.38098383, 1.13891423}, //
+
49336 {4.38211155, 1.13872528}, //
+
49337 {4.38332224, 1.13849449}, //
+
49338 {4.38461542, 1.13822162}, //
+
49339 {4.38599157, 1.13790679}, //
+
49340 {4.38745022, 1.13755}, //
+
49341 {4.38900232, 1.13717222}, //
+
49342 {4.39063787, 1.13679445}, //
+
49343 {4.39235544, 1.13641667}, //
+
49344 {4.39415598, 1.1360389}, //
+
49345 {4.39603949, 1.13566113}, //
+
49346 {4.39800549, 1.13528335}, //
+
49347 {4.40005445, 1.13490558}, //
+
49348 {4.40218592, 1.1345278}, //
+
49349 {4.40439987, 1.13415003}, //
+
49350 {4.40660286, 1.13377225}, //
+
49351 {4.40867901, 1.13339448}, //
+
49352 {4.41062784, 1.13301671}, //
+
49353 {4.41244936, 1.13263893}, //
+
49354 {4.41414404, 1.13226116}, //
+
49355 {4.41571093, 1.13188338}, //
+
49356 {4.41715145, 1.13150561}, //
+
49357 {4.41846418, 1.13112783}, //
+
49358 {4.41965008, 1.13074994}, //
+
49359 {4.42248344, 1.12983334}, //
+
49360 {4.42317581, 1.12960923}, //
+
49361 {4.42374277, 1.12942588}, //
+
49362 {4.42418337, 1.12928331}, //
+
49363 {4.42449808, 1.1291815}, //
+
49364 {4.42474985, 1.12909997}, //
+
49365 {4.42815018, 1.09514999}, //
+
49366 {4.42794085, 1.09377468}, //
+
49367 {4.42731285, 1.09264874}, //
+
49368 {4.42626667, 1.0917722}, //
+
49369 {4.42480183, 1.09114504}, //
+
49370 {4.42291832, 1.09076726}, //
+
49371 {4.42061663, 1.09063888}, //
+
49372 });
+
49373 polys.push_back({
+
49374 {1.12230003, 1.10195005}, //
+
49375 {1.12248886, 1.10232782}, //
+
49376 {1.12263584, 1.10262156}, //
+
49377 {1.12282467, 1.10299933}, //
+
49378 {1.12305558, 1.10346115}, //
+
49379 {1.12332845, 1.10400677}, //
+
49380 {1.12364316, 1.10463643}, //
+
49381 {1.12399995, 1.10535002}, //
+
49382 {1.12441909, 1.10608459}, //
+
49383 {1.12492096, 1.10677719}, //
+
49384 {1.12550557, 1.10742784}, //
+
49385 {1.12617278, 1.1080364}, //
+
49386 {1.12692285, 1.10860312}, //
+
49387 {1.12775552, 1.10912776}, //
+
49388 {1.12867093, 1.10961044}, //
+
49389 {1.12966919, 1.11005127}, //
+
49390 {1.13074994, 1.11045003}, //
+
49391 {1.1318624, 1.11080682}, //
+
49392 {1.13293266, 1.11112165}, //
+
49393 {1.13396108, 1.11139441}, //
+
49394 {1.13494754, 1.11162531}, //
+
49395 {1.13589203, 1.11181414}, //
+
49396 {1.13679445, 1.11196113}, //
+
49397 {1.1376549, 1.11206603}, //
+
49398 {1.13847351, 1.11212897}, //
+
49399 {1.13925004, 1.11214995}, //
+
49400 {1.1408025, 1.11293709}, //
+
49401 {1.1424377, 1.11380923}, //
+
49402 {1.1441555, 1.11476672}, //
+
49403 {1.14595616, 1.1158092}, //
+
49404 {1.14783955, 1.11693704}, //
+
49405 {1.14980555, 1.11815}, //
+
49406 {1.15185428, 1.11944818}, //
+
49407 {1.15398586, 1.12083149}, //
+
49408 {1.15620005, 1.12230003}, //
+
49409 {1.15701795, 1.12307596}, //
+
49410 {1.15796053, 1.12389255}, //
+
49411 {1.15902781, 1.12475002}, //
+
49412 {1.16021979, 1.12564814}, //
+
49413 {1.16153646, 1.12658703}, //
+
49414 {1.16297781, 1.1275667}, //
+
49415 {1.16454387, 1.12858701}, //
+
49416 {1.16623461, 1.12964809}, //
+
49417 {1.16805005, 1.13074994}, //
+
49418 {1.16991794, 1.13182032}, //
+
49419 {1.17174387, 1.13276482}, //
+
49420 {1.17352784, 1.13358331}, //
+
49421 {1.17526972, 1.13427591}, //
+
49422 {1.17696977, 1.13484263}, //
+
49423 {1.17862773, 1.13528335}, //
+
49424 {1.18024385, 1.13559818}, //
+
49425 {1.18181789, 1.13578701}, //
+
49426 {1.18334997, 1.13584995}, //
+
49427 {1.1866858, 1.13584995}, //
+
49428 {1.18860555, 1.13584995}, //
+
49429 {1.19069326, 1.13584995}, //
+
49430 {1.1979636, 1.13584995}, //
+
49431 {1.20072281, 1.13584995}, //
+
49432 {1.20365, 1.13584995}, //
+
49433 {1.20660865, 1.13587093}, //
+
49434 {1.20944011, 1.135934}, //
+
49435 {1.21214449, 1.1360389}, //
+
49436 {1.21472156, 1.13618577}, //
+
49437 {1.21717155, 1.13637471}, //
+
49438 {1.21949446, 1.1366055}, //
+
49439 {1.22169018, 1.13687837}, //
+
49440 {1.2237587, 1.1371932}, //
+
49441 {1.22570002, 1.13755}, //
+
49442 {1.22748399, 1.13790679}, //
+
49443 {1.22905803, 1.13822162}, //
+
49444 {1.23325551, 1.13906109}, //
+
49445 {1.23378026, 1.139166}, //
+
49446 {1.2340951, 1.13922906}, //
+
49447 {1.2342, 1.13925004}, //
+
49448 {1.23491359, 1.13847351}, //
+
49449 {1.23554325, 1.1376549}, //
+
49450 {1.23608887, 1.13679445}, //
+
49451 {1.23655057, 1.13589203}, //
+
49452 {1.23692834, 1.13494754}, //
+
49453 {1.23722219, 1.13396108}, //
+
49454 {1.23728895, 1.13363385}, //
+
49455 {1.23759997, 1.12644875}, //
+
49456 {1.23759997, 1.12591541}, //
+
49457 {1.23759997, 1.12459874}, //
+
49458 {1.23759997, 1.12323892}, //
+
49459 {1.23759997, 1.11322594}, //
+
49460 {1.23759997, 1.11190927}, //
+
49461 {1.23759997, 1.11063337}, //
+
49462 {1.23759997, 1.10352409}, //
+
49463 {1.23759997, 1.10295737}, //
+
49464 {1.23759997, 1.10195005}, //
+
49465 {1.22064996, 1.09854996}, //
+
49466 {1.21976852, 1.09859192}, //
+
49467 {1.2186352, 1.09871793}, //
+
49468 {1.21724999, 1.09892774}, //
+
49469 {1.21561301, 1.09922159}, //
+
49470 {1.21372402, 1.09959936}, //
+
49471 {1.21158338, 1.10006106}, //
+
49472 {1.20919073, 1.1006068}, //
+
49473 {1.20654631, 1.10123646}, //
+
49474 {1.20365, 1.10195005}, //
+
49475 {1.20208645, 1.10266364}, //
+
49476 {1.2003957, 1.10329318}, //
+
49477 {1.19857776, 1.10383892}, //
+
49478 {1.19663274, 1.10430062}, //
+
49479 {1.19456053, 1.10467839}, //
+
49480 {1.19236112, 1.10497224}, //
+
49481 {1.19003451, 1.10518205}, //
+
49482 {1.18758082, 1.10530806}, //
+
49483 {1.18499994, 1.10535002}, //
+
49484 {1.18242967, 1.10526609}, //
+
49485 {1.17998517, 1.1050142}, //
+
49486 {1.17766666, 1.10459447}, //
+
49487 {1.17547405, 1.10400677}, //
+
49488 {1.17340744, 1.10325122}, //
+
49489 {1.17146671, 1.10232782}, //
+
49490 {1.16965187, 1.10123646}, //
+
49491 {1.16796291, 1.09997714}, //
+
49492 {1.16639996, 1.09854996}, //
+
49493 {1.16564441, 1.09779501}, //
+
49494 {1.16488886, 1.09704137}, //
+
49495 {1.16413331, 1.09628892}, //
+
49496 {1.16337776, 1.09553766}, //
+
49497 {1.16262221, 1.0947876}, //
+
49498 {1.16186666, 1.09403884}, //
+
49499 {1.16111112, 1.0932914}, //
+
49500 {1.16035557, 1.09254503}, //
+
49501 {1.15960002, 1.09179997}, //
+
49502 {1.15737534, 1.09030986}, //
+
49503 {1.15523458, 1.0888617}, //
+
49504 {1.15317774, 1.08745551}, //
+
49505 {1.15120494, 1.0860914}, //
+
49506 {1.14931607, 1.08476913}, //
+
49507 {1.14751112, 1.08348894}, //
+
49508 {1.1457901, 1.0822506}, //
+
49509 {1.14415312, 1.08105433}, //
+
49510 {1.14260006, 1.07990003}, //
+
49511 {1.14101601, 1.07884014}, //
+
49512 {1.13926423, 1.07790494}, //
+
49513 {1.13734448, 1.07709444}, //
+
49514 {1.13525677, 1.07640862}, //
+
49515 {1.13300121, 1.07584751}, //
+
49516 {1.1305778, 1.07541108}, //
+
49517 {1.12798643, 1.07509935}, //
+
49518 {1.12522721, 1.07491231}, //
+
49519 {1.12230003, 1.07484996}, //
+
49520 {1.10364997, 1.07484996}, //
+
49521 {1.1032722, 1.07482898}, //
+
49522 {1.10289443, 1.07476604}, //
+
49523 {1.10251665, 1.07466114}, //
+
49524 {1.10213888, 1.07451415}, //
+
49525 {1.1017611, 1.07432532}, //
+
49526 {1.10138333, 1.07409441}, //
+
49527 {1.10100555, 1.07382166}, //
+
49528 {1.10062778, 1.07350683}, //
+
49529 {1.10025001, 1.07315004}, //
+
49530 {1.09854996, 1.07145}, //
+
49531 });
+
49532 polys.push_back({
+
49533 {3.44298887, 0.937311113}, //
+
49534 {3.44253397, 0.937667906}, //
+
49535 {3.4421618, 0.938234568}, //
+
49536 {3.44187212, 0.939011097}, //
+
49537 {3.44166541, 0.939997554}, //
+
49538 {3.44154143, 0.941193819}, //
+
49539 {3.44149995, 0.942600012}, //
+
49540 {3.44149995, 0.945599973}, //
+
49541 {3.44149995, 0.946683347}, //
+
49542 {3.44149995, 0.947933316}, //
+
49543 {3.44149995, 0.949349999}, //
+
49544 {3.44145799, 0.950923443}, //
+
49545 {3.4413321, 0.952621579}, //
+
49546 {3.44112229, 0.954444468}, //
+
49547 {3.44082832, 0.95639199}, //
+
49548 {3.44045067, 0.958464205}, //
+
49549 {3.43998885, 0.960661113}, //
+
49550 {3.43944311, 0.962982714}, //
+
49551 {3.43881369, 0.965429008}, //
+
49552 {3.4381001, 0.967999995}, //
+
49553 {3.43734455, 0.970580876}, //
+
49554 {3.436589, 0.973034561}, //
+
49555 {3.43583322, 0.975361109}, //
+
49556 {3.43507767, 0.97756052}, //
+
49557 {3.43432212, 0.979632735}, //
+
49558 {3.43356657, 0.981577754}, //
+
49559 {3.43281102, 0.983395696}, //
+
49560 {3.43205547, 0.985086441}, //
+
49561 {3.43129992, 0.98664999}, //
+
49562 {3.43054509, 0.988077164}, //
+
49563 {3.42979145, 0.989336431}, //
+
49564 {3.429039, 0.990427792}, //
+
49565 {3.42828774, 0.991351247}, //
+
49566 {3.42753768, 0.992106795}, //
+
49567 {3.42678881, 0.992694438}, //
+
49568 {3.42604136, 0.993114173}, //
+
49569 {3.42529511, 0.993366063}, //
+
49570 {3.42455006, 0.993449986}, //
+
49571 {3.42297602, 0.993974686}, //
+
49572 {3.42228341, 0.994205534}, //
+
49573 {3.42146492, 0.994478405}, //
+
49574 {3.41945004, 0.99515003}, //
+
49575 {3.41829562, 0.995548785}, //
+
49576 {3.41709948, 0.995989501}, //
+
49577 {3.41586113, 0.996472239}, //
+
49578 {3.41458082, 0.996996939}, //
+
49579 {3.41325855, 0.997563601}, //
+
49580 {3.41189456, 0.998172224}, //
+
49581 {3.41048837, 0.998822868}, //
+
49582 {3.40904021, 0.999515414}, //
+
49583 {3.4075501, 1.00024998}, //
+
49584 {3.40602851, 1.00100493}, //
+
49585 {3.40446353, 1.00175869}, //
+
49586 {3.40285563, 1.00251114}, //
+
49587 {3.40120435, 1.0032624}, //
+
49588 {3.39950991, 1.00401235}, //
+
49589 {3.39777231, 1.0047611}, //
+
49590 {3.39599133, 1.00550866}, //
+
49591 {3.39416718, 1.00625491}, //
+
49592 {3.39229989, 1.00699997}, //
+
49593 {3.39044261, 1.00771356}, //
+
49594 {3.38862586, 1.00834322}, //
+
49595 {3.38685012, 1.00888884}, //
+
49596 {3.38511491, 1.00935066}, //
+
49597 {3.38342047, 1.00972843}, //
+
49598 {3.38176656, 1.01002216}, //
+
49599 {3.38015366, 1.01023209}, //
+
49600 {3.37858152, 1.01035798}, //
+
49601 {3.37704992, 1.01040006}, //
+
49602 {3.37646484, 1.01031601}, //
+
49603 {3.37573338, 1.01021111}, //
+
49604 {3.37470937, 1.01006424}, //
+
49605 {3.37178326, 1.00964439}, //
+
49606 {3.36988139, 1.00937164}, //
+
49607 {3.36768699, 1.00905681}, //
+
49608 {3.36520004, 1.00870001}, //
+
49609 {3.36254501, 1.00834322}, //
+
49610 {3.35984683, 1.00802839}, //
+
49611 {3.35710549, 1.00775552}, //
+
49612 {3.354321, 1.00752473}, //
+
49613 {3.35149312, 1.00733578}, //
+
49614 {3.34862232, 1.00718892}, //
+
49615 {3.34570813, 1.00708389}, //
+
49616 {3.34275055, 1.00702095}, //
+
49617 {3.33975005, 1.00699997}, //
+
49618 {3.3310945, 1.00699997}, //
+
49619 {3.32574391, 1.00699997}, //
+
49620 {3.3231945, 1.00699997}, //
+
49621 {3.32072902, 1.00699997}, //
+
49622 {3.31834745, 1.00699997}, //
+
49623 {3.3156302, 1.00699997}, //
+
49624 {3.31510544, 1.00699997}, //
+
49625 {3.31437087, 1.00699997}, //
+
49626 {3.31342649, 1.00699997}, //
+
49627 {3.31227231, 1.00699997}, //
+
49628 {3.31090808, 1.00699997}, //
+
49629 {3.30933404, 1.00699997}, //
+
49630 {3.30754995, 1.00699997}, //
+
49631 {3.30560875, 1.00702095}, //
+
49632 {3.30354023, 1.00708389}, //
+
49633 {3.30134439, 1.00718892}, //
+
49634 {3.29902172, 1.00733578}, //
+
49635 {3.29657149, 1.00752473}, //
+
49636 {3.29399443, 1.00775552}, //
+
49637 {3.29129004, 1.00802839}, //
+
49638 {3.28845859, 1.00834322}, //
+
49639 {3.28550005, 1.00870001}, //
+
49640 {3.28255129, 1.00907779}, //
+
49641 {3.27972722, 1.00945556}, //
+
49642 {3.27702785, 1.00983334}, //
+
49643 {3.27445316, 1.01021111}, //
+
49644 {3.27200317, 1.01058888}, //
+
49645 {3.26967788, 1.01096666}, //
+
49646 {3.26747727, 1.01134443}, //
+
49647 {3.26540112, 1.01172221}, //
+
49648 {3.26344991, 1.01209998}, //
+
49649 {3.26163459, 1.01249874}, //
+
49650 {3.25994372, 1.01293945}, //
+
49651 {3.25837779, 1.01342225}, //
+
49652 {3.25693631, 1.01394689}, //
+
49653 {3.25561976, 1.01451361}, //
+
49654 {3.25442767, 1.01512218}, //
+
49655 {3.25336051, 1.01577282}, //
+
49656 {3.2524178, 1.01646543}, //
+
49657 {3.25160003, 1.01719999}, //
+
49658 {3.25084448, 1.01795495}, //
+
49659 {3.25008893, 1.01870859}, //
+
49660 {3.24933338, 1.01946115}, //
+
49661 {3.24857783, 1.02021229}, //
+
49662 {3.24782228, 1.02096236}, //
+
49663 {3.24706674, 1.02171111}, //
+
49664 {3.24631119, 1.02245867}, //
+
49665 {3.24555564, 1.02320492}, //
+
49666 {3.24480009, 1.02394998}, //
+
49667 {3.24403405, 1.02468455}, //
+
49668 {3.24322462, 1.02537715}, //
+
49669 {3.24237227, 1.0260278}, //
+
49670 {3.24147654, 1.02663636}, //
+
49671 {3.24053764, 1.02720308}, //
+
49672 {3.2395556, 1.02772772}, //
+
49673 {3.23853016, 1.02821052}, //
+
49674 {3.23746181, 1.02865124}, //
+
49675 {3.23635006, 1.02904999}, //
+
49676 {3.23515439, 1.02940679}, //
+
49677 {3.23383403, 1.02972162}, //
+
49678 {3.23238897, 1.02999449}, //
+
49679 {3.23081923, 1.03022528}, //
+
49680 {3.22912478, 1.03041422}, //
+
49681 {3.22730565, 1.03056109}, //
+
49682 {3.22536182, 1.03066599}, //
+
49683 {3.2232933, 1.03072906}, //
+
49684 {3.22110009, 1.03075004}, //
+
49685 {3.21877098, 1.03077102}, //
+
49686 {3.21631718, 1.03083396}, //
+
49687 {3.21373892, 1.03093886}, //
+
49688 {3.21103573, 1.03108585}, //
+
49689 {3.20820808, 1.03127468}, //
+
49690 {3.20525551, 1.03150558}, //
+
49691 {3.20217848, 1.03177834}, //
+
49692 {3.19897652, 1.03209317}, //
+
49693 {3.1956501, 1.03244996}, //
+
49694 {3.19230247, 1.03284812}, //
+
49695 {3.18903756, 1.03328705}, //
+
49696 {3.18585563, 1.03376663}, //
+
49697 {3.18275619, 1.0342871}, //
+
49698 {3.17973948, 1.03484809}, //
+
49699 {3.1768055, 1.03544998}, //
+
49700 {3.17395425, 1.03609264}, //
+
49701 {3.17118573, 1.03677595}, //
+
49702 {3.16849995, 1.03750002}, //
+
49703 {3.1659081, 1.03823459}, //
+
49704 {3.16339874, 1.0389272}, //
+
49705 {3.16097212, 1.03957772}, //
+
49706 {3.15862846, 1.04018641}, //
+
49707 {3.1563673, 1.04075313}, //
+
49708 {3.15418887, 1.04127777}, //
+
49709 {3.15209317, 1.04176044}, //
+
49710 {3.1500802, 1.04220128}, //
+
49711 {3.14814997, 1.04260004}, //
+
49712 {3.14637661, 1.04295683}, //
+
49713 {3.14481163, 1.04327166}, //
+
49714 {3.13969994, 1.04429996}, //
+
49715 {3.13969994, 1.04497159}, //
+
49716 {3.13969994, 1.04534936}, //
+
49717 {3.13969994, 1.0463568}, //
+
49718 {3.13969994, 1.04770005}, //
+
49719 {3.13972092, 1.04849696}, //
+
49720 {3.13978386, 1.04937649}, //
+
49721 {3.139889, 1.05033886}, //
+
49722 {3.14003587, 1.05138397}, //
+
49723 {3.1402247, 1.05251169}, //
+
49724 {3.14045548, 1.05372226}, //
+
49725 {3.14072847, 1.05501544}, //
+
49726 {3.14104319, 1.05639136}, //
+
49727 {3.1414001, 1.05785}, //
+
49728 {3.14177775, 1.05931914}, //
+
49729 {3.14215565, 1.06070435}, //
+
49730 {3.1425333, 1.06200552}, //
+
49731 {3.1429112, 1.06322289}, //
+
49732 {3.14328885, 1.06435621}, //
+
49733 {3.14366674, 1.06540561}, //
+
49734 {3.1440444, 1.06637096}, //
+
49735 {3.14442229, 1.06725252}, //
+
49736 {3.14479995, 1.06805003}, //
+
49737 {3.14519882, 1.06876361}, //
+
49738 {3.14563942, 1.06939316}, //
+
49739 {3.14612222, 1.0699389}, //
+
49740 {3.14664698, 1.0704006}, //
+
49741 {3.1472137, 1.07077837}, //
+
49742 {3.14782214, 1.07107222}, //
+
49743 {3.14847279, 1.07128215}, //
+
49744 {3.14916539, 1.07140803}, //
+
49745 {3.14989996, 1.07145}, //
+
49746 {3.15178895, 1.07145}, //
+
49747 {3.15225053, 1.07145}, //
+
49748 {3.15262842, 1.07145}, //
+
49749 {3.1531322, 1.07145}, //
+
49750 {3.15325809, 1.07145}, //
+
49751 {3.15330005, 1.07145}, //
+
49752 {3.15400314, 1.07069445}, //
+
49753 {3.15462351, 1.0699389}, //
+
49754 {3.15516114, 1.06918335}, //
+
49755 {3.15561604, 1.0684278}, //
+
49756 {3.15598822, 1.06767225}, //
+
49757 {3.15627789, 1.0669167}, //
+
49758 {3.1564846, 1.06616116}, //
+
49759 {3.15660858, 1.06540561}, //
+
49760 {3.15665007, 1.06465006}, //
+
49761 {3.15746784, 1.06245685}, //
+
49762 {3.15841055, 1.06038833}, //
+
49763 {3.15947771, 1.0584445}, //
+
49764 {3.1606698, 1.05662537}, //
+
49765 {3.16198635, 1.05493081}, //
+
49766 {3.16342783, 1.05336106}, //
+
49767 {3.16499376, 1.051916}, //
+
49768 {3.16668463, 1.05059564}, //
+
49769 {3.16849995, 1.04939997}, //
+
49770 {3.17049313, 1.04837155}, //
+
49771 {3.17269516, 1.04755306}, //
+
49772 {3.17510557, 1.0469445}, //
+
49773 {3.1777246, 1.04654562}, //
+
49774 {3.18055248, 1.0463568}, //
+
49775 {3.18358898, 1.04637778}, //
+
49776 {3.18683386, 1.04660869}, //
+
49777 {3.19028759, 1.0470494}, //
+
49778 {3.19394994, 1.04770005}, //
+
49779 {3.19690871, 1.04770005}, //
+
49780 {3.19974017, 1.04770005}, //
+
49781 {3.20979452, 1.04770005}, //
+
49782 {3.21199012, 1.04770005}, //
+
49783 {3.21600008, 1.04770005}, //
+
49784 {3.21786737, 1.04770005}, //
+
49785 {3.21969128, 1.04770005}, //
+
49786 {3.22655559, 1.04770005}, //
+
49787 {3.22816348, 1.04770005}, //
+
49788 {3.23125005, 1.04770005}, //
+
49789 {3.2344389, 1.04770005}, //
+
49790 {3.23796105, 1.04770005}, //
+
49791 {3.25538325, 1.04770005}, //
+
49792 {3.2605722, 1.04770005}, //
+
49793 {3.26609445, 1.04770005}, //
+
49794 {3.27195001, 1.04770005}, //
+
49795 {3.27858138, 1.04767907}, //
+
49796 {3.28492045, 1.047616}, //
+
49797 {3.29096675, 1.0475111}, //
+
49798 {3.29672027, 1.04736423}, //
+
49799 {3.30218148, 1.04717529}, //
+
49800 {3.30734992, 1.0469445}, //
+
49801 {3.31222582, 1.04667163}, //
+
49802 {3.31680918, 1.0463568}, //
+
49803 {3.3211, 1.046}, //
+
49804 {3.32522345, 1.04560125}, //
+
49805 {3.32930493, 1.04516053}, //
+
49806 {3.33334446, 1.04467773}, //
+
49807 {3.33734202, 1.04415309}, //
+
49808 {3.34129763, 1.04358637}, //
+
49809 {3.34521103, 1.04297781}, //
+
49810 {3.34908271, 1.04232717}, //
+
49811 {3.35291243, 1.04163456}, //
+
49812 {3.35669994, 1.04089999}, //
+
49813 {3.35745549, 1.0401969}, //
+
49814 {3.35821104, 1.03957653}, //
+
49815 {3.35896659, 1.0390389}, //
+
49816 {3.35972214, 1.03858399}, //
+
49817 {3.36047769, 1.0382117}, //
+
49818 {3.36123323, 1.03792226}, //
+
49819 {3.36198878, 1.03771544}, //
+
49820 {3.36274433, 1.03759134}, //
+
49821 {3.36350012, 1.03754997}, //
+
49822 {3.36642766, 1.03750801}, //
+
49823 {3.36918879, 1.03738213}, //
+
49824 {3.37178326, 1.0371722}, //
+
49825 {3.37421107, 1.03687835}, //
+
49826 {3.37647223, 1.03650057}, //
+
49827 {3.37856674, 1.03603888}, //
+
49828 {3.38049436, 1.03549325}, //
+
49829 {3.38225555, 1.03486359}, //
+
49830 {3.3838501, 1.03415}, //
+
49831 {3.38757467, 1.03339446}, //
+
49832 {3.39121532, 1.03263891}, //
+
49833 {3.39477229, 1.03188336}, //
+
49834 {3.3982451, 1.03112781}, //
+
49835 {3.40163398, 1.03037226}, //
+
49836 {3.40493894, 1.02961671}, //
+
49837 {3.40815997, 1.02886117}, //
+
49838 {3.41129684, 1.0281055}, //
+
49839 {3.41435003, 1.02734995}, //
+
49840 {3.41723585, 1.02651107}, //
+
49841 {3.41987109, 1.02550554}, //
+
49842 {3.42225552, 1.02433336}, //
+
49843 {3.4243896, 1.0229944}, //
+
49844 {3.42627287, 1.0214889}, //
+
49845 {3.42790556, 1.01981664}, //
+
49846 {3.42928767, 1.01797783}, //
+
49847 {3.43041921, 1.01597226}, //
+
49848 {3.43129992, 1.01380002}, //
+
49849 {3.43276906, 1.01226795}, //
+
49850 {3.43415427, 1.01069379}, //
+
49851 {3.43545556, 1.00907779}, //
+
49852 {3.43667293, 1.00741971}, //
+
49853 {3.43780613, 1.00571978}, //
+
49854 {3.43885565, 1.00397778}, //
+
49855 {3.439821, 1.00219381}, //
+
49856 {3.44070244, 1.00036788}, //
+
49857 {3.44149995, 0.99849999}, //
+
49858 {3.44225502, 0.99664259}, //
+
49859 {3.44300866, 0.9948259}, //
+
49860 {3.44376111, 0.993049979}, //
+
49861 {3.44451237, 0.991314828}, //
+
49862 {3.44526243, 0.989620388}, //
+
49863 {3.44601107, 0.987966657}, //
+
49864 {3.44675875, 0.986353695}, //
+
49865 {3.447505, 0.984781504}, //
+
49866 {3.44825006, 0.983250022}, //
+
49867 {3.44959331, 0.98058331}, //
+
49868 {3.45013881, 0.979499996}, //
+
49869 {3.45097828, 0.977833331}, //
+
49870 {3.45127225, 0.97724998}, //
+
49871 {3.45148206, 0.976833344}, //
+
49872 {3.45160794, 0.976583362}, //
+
49873 {3.4516499, 0.976499975}, //
+
49874 {3.45190191, 0.976749361}, //
+
49875 {3.45221663, 0.977061093}, //
+
49876 {3.45322418, 0.978058636}, //
+
49877 {3.45391655, 0.978744447}, //
+
49878 {3.45567966, 0.980490148}, //
+
49879 {3.45674992, 0.981549978}, //
+
49880 {3.45788264, 0.982725322}, //
+
49881 {3.45901418, 0.98398459}, //
+
49882 {3.46014452, 0.98532778}, //
+
49883 {3.46127343, 0.986754954}, //
+
49884 {3.46240115, 0.988266051}, //
+
49885 {3.46352768, 0.989861131}, //
+
49886 {3.46465302, 0.991540134}, //
+
49887 {3.46577716, 0.993303061}, //
+
49888 {3.46690011, 0.99515003}, //
+
49889 {3.46801233, 0.997017264}, //
+
49890 {3.46908283, 0.998841345}, //
+
49891 {3.47011113, 1.00062227}, //
+
49892 {3.47109747, 1.00235987}, //
+
49893 {3.47204208, 1.00405431}, //
+
49894 {3.4729445, 1.0057056}, //
+
49895 {3.47380495, 1.00731361}, //
+
49896 {3.47462344, 1.00887835}, //
+
49897 {3.47539997, 1.01040006}, //
+
49898 {3.47611356, 1.01186919}, //
+
49899 {3.47674322, 1.01325428}, //
+
49900 {3.47728896, 1.01455557}, //
+
49901 {3.47775054, 1.01577282}, //
+
49902 {3.47812843, 1.01690614}, //
+
49903 {3.47842216, 1.01795554}, //
+
49904 {3.47863221, 1.01892102}, //
+
49905 {3.4787581, 1.01980245}, //
+
49906 {3.47880006, 1.02059996}, //
+
49907 {3.47871614, 1.02212095}, //
+
49908 {3.47846413, 1.02368391}, //
+
49909 {3.47804451, 1.02528894}, //
+
49910 {3.47745681, 1.02693582}, //
+
49911 {3.47670126, 1.02862465}, //
+
49912 {3.47577786, 1.03035557}, //
+
49913 {3.47468638, 1.03212845}, //
+
49914 {3.47342706, 1.03394318}, //
+
49915 {3.47199988, 1.03579998}, //
+
49916 {3.4704895, 1.03766787}, //
+
49917 {3.46898031, 1.0394938}, //
+
49918 {3.46747231, 1.04127777}, //
+
49919 {3.46596551, 1.04301977}, //
+
49920 {3.4644599, 1.0447197}, //
+
49921 {3.46295547, 1.04637778}, //
+
49922 {3.46145248, 1.04799378}, //
+
49923 {3.45995069, 1.04956794}, //
+
49924 {3.45845008, 1.05110002}, //
+
49925 {3.45630932, 1.05193889}, //
+
49926 {3.45442033, 1.05294442}, //
+
49927 {3.45278335, 1.05411673}, //
+
49928 {3.45139813, 1.05545557}, //
+
49929 {3.45026493, 1.05696106}, //
+
49930 {3.44938326, 1.05863333}, //
+
49931 {3.4487536, 1.06047225}, //
+
49932 {3.44837594, 1.06247783}, //
+
49933 {3.44825006, 1.06465006}, //
+
49934 {3.447505, 1.06538463}, //
+
49935 {3.44675875, 1.06607711}, //
+
49936 {3.44601107, 1.06672776}, //
+
49937 {3.44526243, 1.06733644}, //
+
49938 {3.44451237, 1.06790304}, //
+
49939 {3.44376111, 1.0684278}, //
+
49940 {3.44300866, 1.06891048}, //
+
49941 {3.44225502, 1.0693512}, //
+
49942 {3.44149995, 1.06974995}, //
+
49943 {3.44070244, 1.07006478}, //
+
49944 {3.439821, 1.07025373}, //
+
49945 {3.43885565, 1.07031667}, //
+
49946 {3.43780613, 1.07025373}, //
+
49947 {3.43667293, 1.07006478}, //
+
49948 {3.43545556, 1.06974995}, //
+
49949 {3.43415427, 1.06930923}, //
+
49950 {3.43276906, 1.06874263}, //
+
49951 {3.43129992, 1.06805003}, //
+
49952 {3.42527723, 1.06465983}, //
+
49953 {3.41925311, 1.06202281}, //
+
49954 {3.4132278, 1.06013894}, //
+
49955 {3.40720129, 1.059008}, //
+
49956 {3.40117335, 1.05863023}, //
+
49957 {3.39514446, 1.0590055}, //
+
49958 {3.38911414, 1.06013393}, //
+
49959 {3.38308263, 1.06201541}, //
+
49960 {3.37704992, 1.06465006}, //
+
49961 {3.37402773, 1.06465006}, //
+
49962 {3.37381792, 1.06465006}, //
+
49963 {3.37365007, 1.06465006}, //
+
49964 {3.3690753, 1.06613946}, //
+
49965 {3.36437345, 1.06758583}, //
+
49966 {3.35954452, 1.06898892}, //
+
49967 {3.35458827, 1.07034874}, //
+
49968 {3.34950495, 1.07166541}, //
+
49969 {3.34429455, 1.07293892}, //
+
49970 {3.33895683, 1.07416916}, //
+
49971 {3.33349204, 1.07535613}, //
+
49972 {3.32789993, 1.07650006}, //
+
49973 {3.3222661, 1.07752836}, //
+
49974 {3.31667542, 1.07834697}, //
+
49975 {3.31112766, 1.07895553}, //
+
49976 {3.30562353, 1.07935429}, //
+
49977 {3.30016232, 1.07954323}, //
+
49978 {3.29474449, 1.07952225}, //
+
49979 {3.28936982, 1.07929134}, //
+
49980 {3.28403831, 1.07885063}, //
+
49981 {3.27874994, 1.07819998}, //
+
49982 {3.26832032, 1.07539821}, //
+
49983 {3.25814271, 1.07301486}, //
+
49984 {3.24821663, 1.07105005}, //
+
49985 {3.23854256, 1.06950366}, //
+
49986 {3.22912025, 1.06837595}, //
+
49987 {3.21994996, 1.06766665}, //
+
49988 {3.21103144, 1.0673759}, //
+
49989 {3.20236492, 1.06750369}, //
+
49990 {3.19394994, 1.06805003}, //
+
49991 {3.19169378, 1.06880498}, //
+
49992 {3.18943644, 1.06955862}, //
+
49993 {3.1871779, 1.07031107}, //
+
49994 {3.18491793, 1.07106233}, //
+
49995 {3.18265676, 1.07181239}, //
+
49996 {3.18039441, 1.07256114}, //
+
49997 {3.17813087, 1.07330859}, //
+
49998 {3.17586613, 1.07405496}, //
+
49999 {3.17359996, 1.07480001}, //
+
50000 {3.17140675, 1.07557654}, //
+
50001 {3.16933823, 1.07639503}, //
+
50002 {3.1673944, 1.07725561}, //
+
50003 {3.16557527, 1.07815802}, //
+
50004 {3.16388083, 1.07910252}, //
+
50005 {3.16231108, 1.08008885}, //
+
50006 {3.16086602, 1.08111727}, //
+
50007 {3.15954566, 1.08218765}, //
+
50008 {3.15834999, 1.08329999}, //
+
50009 {3.1563549, 1.08531487}, //
+
50010 {3.15554452, 1.08613336}, //
+
50011 {3.15429759, 1.08739257}, //
+
50012 {3.15386105, 1.08783329}, //
+
50013 {3.15354943, 1.08814812}, //
+
50014 {3.15336227, 1.08833706}, //
+
50015 {3.15330005, 1.08840001}, //
+
50016 {3.16004992, 1.10535002}, //
+
50017 {3.16063523, 1.10535002}, //
+
50018 {3.1613667, 1.10535002}, //
+
50019 {3.17190003, 1.10535002}, //
+
50020 {3.17462778, 1.10532904}, //
+
50021 {3.17752218, 1.10526609}, //
+
50022 {3.18058324, 1.10516107}, //
+
50023 {3.18381119, 1.1050142}, //
+
50024 {3.18720555, 1.10482526}, //
+
50025 {3.19076657, 1.10459447}, //
+
50026 {3.19449449, 1.1043216}, //
+
50027 {3.19838881, 1.10400677}, //
+
50028 {3.20245004, 1.10364997}, //
+
50029 {3.20653152, 1.10325122}, //
+
50030 {3.21048713, 1.1028105}, //
+
50031 {3.21431661, 1.10232782}, //
+
50032 {3.21802044, 1.10180306}, //
+
50033 {3.22159815, 1.10123646}, //
+
50034 {3.22504997, 1.10062778}, //
+
50035 {3.22837591, 1.09997714}, //
+
50036 {3.23157597, 1.09928453}, //
+
50037 {3.2346499, 1.09854996}, //
+
50038 {3.23906732, 1.0971123}, //
+
50039 {3.24327469, 1.09579933}, //
+
50040 {3.24727225, 1.09461117}, //
+
50041 {3.25105977, 1.09354758}, //
+
50042 {3.25463772, 1.09260869}, //
+
50043 {3.25800562, 1.09179449}, //
+
50044 {3.26116347, 1.09110498}, //
+
50045 {3.26411176, 1.09054017}, //
+
50046 {3.26684999, 1.09010005}, //
+
50047 {3.27874994, 1.08840001}, //
+
50048 {3.27864504, 1.08915496}, //
+
50049 {3.27833033, 1.0899086}, //
+
50050 {3.27780557, 1.09066117}, //
+
50051 {3.277071, 1.09141231}, //
+
50052 {3.27612662, 1.09216237}, //
+
50053 {3.2749722, 1.09291112}, //
+
50054 {3.27360797, 1.09365869}, //
+
50055 {3.27203393, 1.09440494}, //
+
50056 {3.27025008, 1.09514999}, //
+
50057 {3.2683506, 1.09590554}, //
+
50058 {3.26640797, 1.09666109}, //
+
50059 {3.26442218, 1.09741664}, //
+
50060 {3.26239324, 1.09817219}, //
+
50061 {3.2603209, 1.09892774}, //
+
50062 {3.25820565, 1.09968328}, //
+
50063 {3.25604701, 1.10043883}, //
+
50064 {3.25384498, 1.1011945}, //
+
50065 {3.25160003, 1.10195005}, //
+
50066 {3.24932289, 1.10268462}, //
+
50067 {3.24700236, 1.1033771}, //
+
50068 {3.24463892, 1.10402775}, //
+
50069 {3.24223208, 1.10463643}, //
+
50070 {3.23978209, 1.10520303}, //
+
50071 {3.23728895, 1.10572779}, //
+
50072 {3.23475242, 1.10621047}, //
+
50073 {3.23217273, 1.10665119}, //
+
50074 {3.22954988, 1.10704994}, //
+
50075 {3.22702098, 1.10740674}, //
+
50076 {3.22470069, 1.10772157}, //
+
50077 {3.22258878, 1.10799444}, //
+
50078 {3.22068572, 1.10822535}, //
+
50079 {3.21899128, 1.10841417}, //
+
50080 {3.21750546, 1.10856116}, //
+
50081 {3.21622849, 1.10866606}, //
+
50082 {3.21515989, 1.108729}, //
+
50083 {3.21429992, 1.10874999}, //
+
50084 {3.21275735, 1.10948396}, //
+
50085 {3.21112967, 1.11017466}, //
+
50086 {3.20941663, 1.1108222}, //
+
50087 {3.20761847, 1.11142659}, //
+
50088 {3.20573521, 1.11198771}, //
+
50089 {3.20376658, 1.11250556}, //
+
50090 {3.20171285, 1.11298025}, //
+
50091 {3.19957399, 1.11341178}, //
+
50092 {3.19735003, 1.11380005}, //
+
50093 {3.19513583, 1.11421978}, //
+
50094 {3.19300437, 1.11472344}, //
+
50095 {3.19095564, 1.11531115}, //
+
50096 {3.1889894, 1.11598277}, //
+
50097 {3.18710613, 1.11673832}, //
+
50098 {3.1853056, 1.11757779}, //
+
50099 {3.18358755, 1.11850119}, //
+
50100 {3.18195248, 1.11950862}, //
+
50101 {3.18039989, 1.12059999}, //
+
50102 {3.17892027, 1.12169135}, //
+
50103 {3.17748141, 1.12269878}, //
+
50104 {3.17608333, 1.12362218}, //
+
50105 {3.17472601, 1.12446177}, //
+
50106 {3.17340922, 1.12521732}, //
+
50107 {3.17213345, 1.12588894}, //
+
50108 {3.1708982, 1.12647653}, //
+
50109 {3.16970372, 1.1269803}, //
+
50110 {3.16855001, 1.12740004}, //
+
50111 {3.16571665, 1.12834442}, //
+
50112 {3.16370177, 1.12901604}, //
+
50113 {3.16351295, 1.12907898}, //
+
50114 {3.16345, 1.12909997}, //
+
50115 {3.21429992, 1.12909997}, //
+
50116 {3.21373272, 1.129058}, //
+
50117 {3.21354198, 1.12893212}, //
+
50118 {3.21372771, 1.12872219}, //
+
50119 {3.21429014, 1.12842834}, //
+
50120 {3.21522903, 1.12805057}, //
+
50121 {3.21654439, 1.12758887}, //
+
50122 {3.21823645, 1.12704325}, //
+
50123 {3.22030497, 1.12641358}, //
+
50124 {3.22274995, 1.1257}, //
+
50125 {3.22545671, 1.12490249}, //
+
50126 {3.22828817, 1.12402093}, //
+
50127 {3.23124433, 1.12305558}, //
+
50128 {3.23432541, 1.12200618}, //
+
50129 {3.23753095, 1.12087286}, //
+
50130 {3.24086118, 1.11965561}, //
+
50131 {3.2443161, 1.11835432}, //
+
50132 {3.24789572, 1.11696911}, //
+
50133 {3.25160003, 1.11549997}, //
+
50134 {3.2568562, 1.11399937}, //
+
50135 {3.26206923, 1.11249757}, //
+
50136 {3.26723886, 1.11099446}, //
+
50137 {3.27236533, 1.10949016}, //
+
50138 {3.27744865, 1.10798454}, //
+
50139 {3.28248882, 1.10647774}, //
+
50140 {3.28748584, 1.10496974}, //
+
50141 {3.29243946, 1.10346055}, //
+
50142 {3.29734993, 1.10195005}, //
+
50143 {3.30210376, 1.10048151}, //
+
50144 {3.30656481, 1.09909821}, //
+
50145 {3.31073332, 1.09780002}, //
+
50146 {3.31460929, 1.09658706}, //
+
50147 {3.31819248, 1.09545922}, //
+
50148 {3.32148337, 1.09441662}, //
+
50149 {3.32448149, 1.09345925}, //
+
50150 {3.32718706, 1.09258699}, //
+
50151 {3.3296001, 1.09179997}, //
+
50152 {3.33299994, 1.09179997}, //
+
50153 {3.33889699, 1.08824265}, //
+
50154 {3.34454322, 1.08510375}, //
+
50155 {3.34993887, 1.08238328}, //
+
50156 {3.35508394, 1.08008146}, //
+
50157 {3.35997844, 1.07819819}, //
+
50158 {3.36462212, 1.07673335}, //
+
50159 {3.36901546, 1.07568705}, //
+
50160 {3.37315798, 1.07505929}, //
+
50161 {3.37704992, 1.07484996}, //
+
50162 {3.39065003, 1.07484996}, //
+
50163 {3.3920877, 1.07482898}, //
+
50164 {3.39340067, 1.07476604}, //
+
50165 {3.39458895, 1.07466114}, //
+
50166 {3.39565253, 1.07451415}, //
+
50167 {3.39659142, 1.07432532}, //
+
50168 {3.39740562, 1.07409441}, //
+
50169 {3.39809513, 1.07382166}, //
+
50170 {3.39865994, 1.07350683}, //
+
50171 {3.39910007, 1.07315004}, //
+
50172 {3.39945674, 1.07283521}, //
+
50173 {3.39977169, 1.07264626}, //
+
50174 {3.40004444, 1.07258332}, //
+
50175 {3.40027523, 1.07264626}, //
+
50176 {3.4004643, 1.07283521}, //
+
50177 {3.40061116, 1.07315004}, //
+
50178 {3.40071607, 1.07359076}, //
+
50179 {3.40077901, 1.07415736}, //
+
50180 {3.40079999, 1.07484996}, //
+
50181 {3.40090442, 1.07487035}, //
+
50182 {3.40173888, 1.07503331}, //
+
50183 {3.40246916, 1.07517588}, //
+
50184 {3.40340805, 1.07535923}, //
+
50185 {3.40455556, 1.07558334}, //
+
50186 {3.40591168, 1.0758481}, //
+
50187 {3.40747643, 1.07615376}, //
+
50188 {3.40925002, 1.07650006}, //
+
50189 {3.41115928, 1.07687783}, //
+
50190 {3.4131093, 1.07725561}, //
+
50191 {3.4151001, 1.07763338}, //
+
50192 {3.41713142, 1.07801116}, //
+
50193 {3.41920376, 1.07838893}, //
+
50194 {3.42131662, 1.0787667}, //
+
50195 {3.42347026, 1.07914448}, //
+
50196 {3.4256649, 1.07952225}, //
+
50197 {3.42790008, 1.07990003}, //
+
50198 {3.43012404, 1.08025682}, //
+
50199 {3.4322629, 1.08057165}, //
+
50200 {3.43431664, 1.0808444}, //
+
50201 {3.43628526, 1.08107531}, //
+
50202 {3.43816853, 1.08126414}, //
+
50203 {3.43996668, 1.08141112}, //
+
50204 {3.44167972, 1.08151603}, //
+
50205 {3.4433074, 1.08157897}, //
+
50206 {3.44484997, 1.08159995}, //
+
50207 {3.45845008, 1.08159995}, //
+
50208 {3.45920491, 1.08153701}, //
+
50209 {3.45995855, 1.08134818}, //
+
50210 {3.460711, 1.08103335}, //
+
50211 {3.46146226, 1.08059263}, //
+
50212 {3.46221232, 1.08002591}, //
+
50213 {3.4629612, 1.07933331}, //
+
50214 {3.46370864, 1.07851481}, //
+
50215 {3.46445489, 1.07757032}, //
+
50216 {3.46519995, 1.07650006}, //
+
50217 {3.4659555, 1.07531416}, //
+
50218 {3.46671104, 1.07400119}, //
+
50219 {3.46746659, 1.07256114}, //
+
50220 {3.46822214, 1.07099378}, //
+
50221 {3.46897769, 1.06929934}, //
+
50222 {3.46973324, 1.06747782}, //
+
50223 {3.47048879, 1.06552899}, //
+
50224 {3.47124434, 1.06345308}, //
+
50225 {3.47199988, 1.06124997}, //
+
50226 {3.47275496, 1.05905676}, //
+
50227 {3.4735086, 1.05698824}, //
+
50228 {3.47426105, 1.05504441}, //
+
50229 {3.4750123, 1.05322528}, //
+
50230 {3.47576237, 1.05153084}, //
+
50231 {3.476511, 1.04996109}, //
+
50232 {3.47725868, 1.04851604}, //
+
50233 {3.47800493, 1.04719567}, //
+
50234 {3.47874999, 1.046}, //
+
50235 {3.48009324, 1.04398513}, //
+
50236 {3.48063898, 1.04316664}, //
+
50237 {3.48147845, 1.04190743}, //
+
50238 {3.48210812, 1.04096293}, //
+
50239 {3.48215008, 1.04089999}, //
+
50240 {3.48888111, 1.0274874}, //
+
50241 {3.48868084, 1.02699101}, //
+
50242 {3.48838329, 1.0265944}, //
+
50243 {3.4879427, 1.02600682}, //
+
50244 {3.48737597, 1.02525127}, //
+
50245 {3.48586488, 1.02323639}, //
+
50246 {3.48492026, 1.02197719}, //
+
50247 {3.48385, 1.02055001}, //
+
50248 {3.48272705, 1.01900744}, //
+
50249 {3.48160315, 1.01737964}, //
+
50250 {3.48047781, 1.01566672}, //
+
50251 {3.47935128, 1.01386857}, //
+
50252 {3.47822356, 1.01198518}, //
+
50253 {3.47709441, 1.01001668}, //
+
50254 {3.47596431, 1.00796294}, //
+
50255 {3.47483277, 1.00582409}, //
+
50256 {3.47370005, 1.0036}, //
+
50257 {3.47258759, 1.00134444}, //
+
50258 {3.47151732, 0.999088883}, //
+
50259 {3.47048879, 0.996833324}, //
+
50260 {3.46950245, 0.994577765}, //
+
50261 {3.46855807, 0.992322206}, //
+
50262 {3.46765566, 0.990066648}, //
+
50263 {3.46679497, 0.987811089}, //
+
50264 {3.46597648, 0.98555553}, //
+
50265 {3.46519995, 0.983299971}, //
+
50266 {3.46511602, 0.982964218}, //
+
50267 {3.46501112, 0.982544422}, //
+
50268 {3.46486425, 0.98195678}, //
+
50269 {3.46467543, 0.981201231}, //
+
50270 {3.4644444, 0.980277777}, //
+
50271 {3.46350002, 0.976499975}, //
+
50272 {3.46309066, 0.974967897}, //
+
50273 {3.46259618, 0.973393798}, //
+
50274 {3.46201658, 0.971777797}, //
+
50275 {3.46135187, 0.970119774}, //
+
50276 {3.46060181, 0.968419731}, //
+
50277 {3.45976663, 0.966677785}, //
+
50278 {3.45884633, 0.964893818}, //
+
50279 {3.45784068, 0.963067889}, //
+
50280 {3.45674992, 0.961199999}, //
+
50281 {3.45565867, 0.959342599}, //
+
50282 {3.45465112, 0.957525909}, //
+
50283 {3.45372772, 0.955749989}, //
+
50284 {3.45288825, 0.954014838}, //
+
50285 {3.4521327, 0.952320397}, //
+
50286 {3.45146108, 0.950666666}, //
+
50287 {3.45087337, 0.949053705}, //
+
50288 {3.45036983, 0.947481453}, //
+
50289 {3.44994998, 0.945949972}, //
+
50290 {3.44955134, 0.944512367}, //
+
50291 {3.44911051, 0.943199396}, //
+
50292 {3.44862771, 0.942011118}, //
+
50293 {3.44810319, 0.940947533}, //
+
50294 {3.44753647, 0.94000864}, //
+
50295 {3.44692779, 0.939194441}, //
+
50296 {3.44627714, 0.938504934}, //
+
50297 {3.44558454, 0.937940121}, //
+
50298 {3.44484997, 0.9375}, //
+
50299 {3.44414687, 0.93722719}, //
+
50300 {3.44352651, 0.937164187}, //
+
50301 });
+
50302 polys.push_back({
+
50303 {4.4383502, 0.956149995}, //
+
50304 {4.43667078, 0.957483351}, //
+
50305 {4.43572664, 0.958233356}, //
+
50306 {4.43457222, 0.959150016}, //
+
50307 {4.43320799, 0.960233331}, //
+
50308 {4.43163395, 0.961483359}, //
+
50309 {4.4298501, 0.962899983}, //
+
50310 {4.42788744, 0.964452446}, //
+
50311 {4.42575598, 0.966087639}, //
+
50312 {4.42345572, 0.967805564}, //
+
50313 {4.4209857, 0.969606161}, //
+
50314 {4.41834688, 0.971489489}, //
+
50315 {4.41553879, 0.973455548}, //
+
50316 {4.41256189, 0.975504339}, //
+
50317 {4.40941525, 0.977635801}, //
+
50318 {4.4060998, 0.979849994}, //
+
50319 {4.4027319, 0.982074678}, //
+
50320 {4.39940596, 0.984215438}, //
+
50321 {4.39612246, 0.986272216}, //
+
50322 {4.39288044, 0.98824507}, //
+
50323 {4.38968039, 0.990133941}, //
+
50324 {4.38652229, 0.991938889}, //
+
50325 {4.38340616, 0.993659854}, //
+
50326 {4.38033199, 0.995296896}, //
+
50327 {4.37729979, 0.996850014}, //
+
50328 {4.36833954, 1.00257969}, //
+
50329 {4.35954714, 1.00772405}, //
+
50330 {4.35092211, 1.01228333}, //
+
50331 {4.3424654, 1.01625741}, //
+
50332 {4.33417654, 1.01964629}, //
+
50333 {4.32605553, 1.02244997}, //
+
50334 {4.31810236, 1.02466857}, //
+
50335 {4.31031752, 1.02630186}, //
+
50336 {4.30270004, 1.02734995}, //
+
50337 {4.30044365, 1.02797961}, //
+
50338 {4.2981863, 1.02835739}, //
+
50339 {4.295928, 1.02848339}, //
+
50340 {4.29366779, 1.02835739}, //
+
50341 {4.29140663, 1.02797961}, //
+
50342 {4.28914452, 1.02734995}, //
+
50343 {4.28688097, 1.02646852}, //
+
50344 {4.28461599, 1.02533519}, //
+
50345 {4.28235006, 1.02394998}, //
+
50346 {4.28009367, 1.02244937}, //
+
50347 {4.27783632, 1.02094758}, //
+
50348 {4.27557755, 1.01944447}, //
+
50349 {4.27331781, 1.01794016}, //
+
50350 {4.27105665, 1.01643455}, //
+
50351 {4.26879454, 1.01492774}, //
+
50352 {4.26653099, 1.01341975}, //
+
50353 {4.26426601, 1.01191044}, //
+
50354 {4.26200008, 1.01040006}, //
+
50355 {4.2605834, 1.00898337}, //
+
50356 {4.25933313, 1.00773335}, //
+
50357 {4.25658321, 1.00498331}, //
+
50358 {4.25600004, 1.00440001}, //
+
50359 {4.25558329, 1.00398338}, //
+
50360 {4.25533342, 1.00373328}, //
+
50361 {4.25524998, 1.00364995}, //
+
50362 {4.25352955, 1.00293636}, //
+
50363 {4.25139093, 1.00230682}, //
+
50364 {4.24883318, 1.00176108}, //
+
50365 {4.24585724, 1.00129938}, //
+
50366 {4.24246311, 1.00092161}, //
+
50367 {4.23864985, 1.00062776}, //
+
50368 {4.23441839, 1.00041795}, //
+
50369 {4.22976875, 1.00029194}, //
+
50370 {4.22469997, 1.00024998}, //
+
50371 {4.21796417, 1.00092161}, //
+
50372 {4.21131229, 1.00142527}, //
+
50373 {4.20474434, 1.00176108}, //
+
50374 {4.19826031, 1.00192904}, //
+
50375 {4.19186068, 1.00192904}, //
+
50376 {4.18554449, 1.00176108}, //
+
50377 {4.17931223, 1.00142527}, //
+
50378 {4.17316437, 1.00092161}, //
+
50379 {4.16709995, 1.00024998}, //
+
50380 {4.16331244, 1.00027096}, //
+
50381 {4.15948248, 1.00033391}, //
+
50382 {4.15561104, 1.00043893}, //
+
50383 {4.15169764, 1.00058579}, //
+
50384 {4.14774179, 1.00077474}, //
+
50385 {4.14374447, 1.00100553}, //
+
50386 {4.1397047, 1.0012784}, //
+
50387 {4.13562346, 1.00159323}, //
+
50388 {4.13149977, 1.00195003}, //
+
50389 {4.12743902, 1.00236917}, //
+
50390 {4.12354422, 1.00287104}, //
+
50391 {4.11981678, 1.00345552}, //
+
50392 {4.11625576, 1.00412285}, //
+
50393 {4.11286116, 1.0048728}, //
+
50394 {4.10963345, 1.0057056}, //
+
50395 {4.10657215, 1.006621}, //
+
50396 {4.10367775, 1.00761914}, //
+
50397 {4.10094976, 1.00870001}, //
+
50398 {4.09846306, 1.00977039}, //
+
50399 {4.09669209, 1.0105325}, //
+
50400 {4.09624767, 1.01462281}, //
+
50401 {4.09474468, 1.0281055}, //
+
50402 {4.09465456, 1.02889228}, //
+
50403 {4.09570551, 1.02942777}, //
+
50404 {4.09719133, 1.03003645}, //
+
50405 {4.09888601, 1.03060305}, //
+
50406 {4.10078907, 1.03112781}, //
+
50407 {4.10290051, 1.03161049}, //
+
50408 {4.10522079, 1.03205121}, //
+
50409 {4.10774994, 1.03244996}, //
+
50410 {4.11048841, 1.03284872}, //
+
50411 {4.11343622, 1.03328955}, //
+
50412 {4.11659431, 1.03377223}, //
+
50413 {4.11996222, 1.03429687}, //
+
50414 {4.12353992, 1.03486359}, //
+
50415 {4.12732792, 1.03547227}, //
+
50416 {4.13132524, 1.0361228}, //
+
50417 {4.13553286, 1.0368154}, //
+
50418 {4.1399498, 1.03754997}, //
+
50419 {4.1466856, 1.03907096}, //
+
50420 {4.15333748, 1.04063392}, //
+
50421 {4.15990543, 1.04223883}, //
+
50422 {4.16638947, 1.04388583}, //
+
50423 {4.17278957, 1.04557467}, //
+
50424 {4.17910576, 1.04730558}, //
+
50425 {4.18533754, 1.04907835}, //
+
50426 {4.19148588, 1.05089319}, //
+
50427 {4.19754982, 1.05274999}, //
+
50428 {4.20349932, 1.05457592}, //
+
50429 {4.20928097, 1.05627596}, //
+
50430 {4.21489429, 1.05785}, //
+
50431 {4.22034025, 1.05929816}, //
+
50432 {4.22561789, 1.06062043}, //
+
50433 {4.23072767, 1.06181669}, //
+
50434 {4.23566961, 1.06288707}, //
+
50435 {4.24044371, 1.06383145}, //
+
50436 {4.24504995, 1.06465006}, //
+
50437 {4.24950933, 1.06536353}, //
+
50438 {4.25384283, 1.06599319}, //
+
50439 {4.25804996, 1.06653893}, //
+
50440 {4.26213169, 1.06700063}, //
+
50441 {4.26608706, 1.0673784}, //
+
50442 {4.26991653, 1.06767225}, //
+
50443 {4.27362061, 1.06788206}, //
+
50444 {4.27719831, 1.06800807}, //
+
50445 {4.28065014, 1.06805003}, //
+
50446 {4.28401852, 1.06800807}, //
+
50447 {4.28734636, 1.06788206}, //
+
50448 {4.2906332, 1.06767225}, //
+
50449 {4.29387951, 1.0673784}, //
+
50450 {4.29708529, 1.06700063}, //
+
50451 {4.30025005, 1.06653893}, //
+
50452 {4.30337429, 1.06599319}, //
+
50453 {4.30645752, 1.06536353}, //
+
50454 {4.30950022, 1.06465006}, //
+
50455 {4.31406355, 1.06251979}, //
+
50456 {4.31870985, 1.0606401}, //
+
50457 {4.32343912, 1.0590111}, //
+
50458 {4.32825041, 1.05763268}, //
+
50459 {4.33314514, 1.05650496}, //
+
50460 {4.33812237, 1.05562782}, //
+
50461 {4.34318209, 1.05500126}, //
+
50462 {4.34832478, 1.05462527}, //
+
50463 {4.35354996, 1.05449998}, //
+
50464 {4.35721159, 1.05456233}, //
+
50465 {4.36066341, 1.05474937}, //
+
50466 {4.36390543, 1.0550611}, //
+
50467 {4.36693764, 1.05549753}, //
+
50468 {4.36976004, 1.05605865}, //
+
50469 {4.37237215, 1.05674446}, //
+
50470 {4.37477446, 1.05755496}, //
+
50471 {4.37696743, 1.05849016}, //
+
50472 {4.37895012, 1.05955005}, //
+
50473 {4.38077593, 1.06066239}, //
+
50474 {4.38247585, 1.06173277}, //
+
50475 {4.38404989, 1.06276107}, //
+
50476 {4.38549805, 1.06374753}, //
+
50477 {4.38682032, 1.06469202}, //
+
50478 {4.3880167, 1.06559443}, //
+
50479 {4.3890872, 1.06645489}, //
+
50480 {4.39003134, 1.0672735}, //
+
50481 {4.39085007, 1.06805003}, //
+
50482 {4.39227724, 1.0694772}, //
+
50483 {4.39292765, 1.07012773}, //
+
50484 {4.39410305, 1.07130313}, //
+
50485 {4.39462757, 1.07182777}, //
+
50486 {4.39594984, 1.07315004}, //
+
50487 {4.39634895, 1.07350683}, //
+
50488 {4.39678955, 1.07382166}, //
+
50489 {4.39727211, 1.07409441}, //
+
50490 {4.39779711, 1.07432532}, //
+
50491 {4.39836359, 1.07451415}, //
+
50492 {4.39897203, 1.07466114}, //
+
50493 {4.39962292, 1.07476604}, //
+
50494 {4.40031528, 1.07482898}, //
+
50495 {4.40105009, 1.07484996}, //
+
50496 {4.40324306, 1.07482898}, //
+
50497 {4.40531158, 1.07476604}, //
+
50498 {4.40725565, 1.07466114}, //
+
50499 {4.40907478, 1.07451415}, //
+
50500 {4.41076899, 1.07432532}, //
+
50501 {4.41233873, 1.07409441}, //
+
50502 {4.41378403, 1.07382166}, //
+
50503 {4.41510439, 1.07350683}, //
+
50504 {4.41629982, 1.07315004}, //
+
50505 {4.41743279, 1.07275128}, //
+
50506 {4.41856432, 1.07231045}, //
+
50507 {4.41969442, 1.07182777}, //
+
50508 {4.42082357, 1.07130313}, //
+
50509 {4.42195129, 1.07073641}, //
+
50510 {4.42307758, 1.07012773}, //
+
50511 {4.42420292, 1.0694772}, //
+
50512 {4.4253273, 1.06878459}, //
+
50513 {4.42644978, 1.06805003}, //
+
50514 {4.42756224, 1.06731546}, //
+
50515 {4.42863274, 1.06662285}, //
+
50516 {4.42966127, 1.06597221}, //
+
50517 {4.43064737, 1.06536353}, //
+
50518 {4.43159199, 1.06479692}, //
+
50519 {4.43249464, 1.06427217}, //
+
50520 {4.43335485, 1.06378949}, //
+
50521 {4.43417358, 1.06334877}, //
+
50522 {4.43494987, 1.06295002}, //
+
50523 {4.4356637, 1.06259322}, //
+
50524 {4.43629313, 1.06227839}, //
+
50525 {4.4368391, 1.06200552}, //
+
50526 {4.43730068, 1.06177473}, //
+
50527 {4.43830824, 1.06127095}, //
+
50528 {4.4383502, 1.06124997}, //
+
50529 {4.44169998, 1.02734995}, //
+
50530 {4.43867779, 1.02886117}, //
+
50531 {4.43758631, 1.02940679}, //
+
50532 {4.43489981, 1.03075004}, //
+
50533 {4.43337822, 1.03150499}, //
+
50534 {4.43181372, 1.03225863}, //
+
50535 {4.43020535, 1.03301108}, //
+
50536 {4.42855453, 1.03376234}, //
+
50537 {4.42685986, 1.0345124}, //
+
50538 {4.42512226, 1.03526115}, //
+
50539 {4.42334127, 1.0360086}, //
+
50540 {4.42151737, 1.03675497}, //
+
50541 {4.41965008, 1.03750002}, //
+
50542 {4.41772985, 1.03823459}, //
+
50543 {4.41572428, 1.0389272}, //
+
50544 {4.41363335, 1.03957772}, //
+
50545 {4.41145754, 1.04018641}, //
+
50546 {4.40919638, 1.04075313}, //
+
50547 {4.40684986, 1.04127777}, //
+
50548 {4.40441847, 1.04176044}, //
+
50549 {4.40190172, 1.04220128}, //
+
50550 {4.3993001, 1.04260004}, //
+
50551 {4.39672947, 1.04295683}, //
+
50552 {4.3942852, 1.04327166}, //
+
50553 {4.39196682, 1.04354441}, //
+
50554 {4.38977385, 1.04377532}, //
+
50555 {4.38770723, 1.04396415}, //
+
50556 {4.38576651, 1.04411113}, //
+
50557 {4.38395166, 1.04421604}, //
+
50558 {4.38226318, 1.04427898}, //
+
50559 {4.38070011, 1.04429996}, //
+
50560 {4.37843323, 1.044258}, //
+
50561 {4.37616682, 1.04413211}, //
+
50562 {4.37389994, 1.04392219}, //
+
50563 {4.37163353, 1.04362845}, //
+
50564 {4.36936665, 1.04325056}, //
+
50565 {4.36709976, 1.04278886}, //
+
50566 {4.36483335, 1.04224324}, //
+
50567 {4.36256647, 1.04161358}, //
+
50568 {4.36030006, 1.04089999}, //
+
50569 {4.35816956, 1.04015493}, //
+
50570 {4.35629034, 1.03940868}, //
+
50571 {4.35466099, 1.03866112}, //
+
50572 {4.35328293, 1.03791237}, //
+
50573 {4.35215473, 1.0371623}, //
+
50574 {4.35127783, 1.03641117}, //
+
50575 {4.35065126, 1.0356586}, //
+
50576 {4.35027552, 1.03490496}, //
+
50577 {4.35015011, 1.03415}, //
+
50578 {4.35096788, 1.03339446}, //
+
50579 {4.35191059, 1.03263891}, //
+
50580 {4.35297775, 1.03188336}, //
+
50581 {4.35416985, 1.03112781}, //
+
50582 {4.35548639, 1.03037226}, //
+
50583 {4.35692787, 1.02961671}, //
+
50584 {4.3584938, 1.02886117}, //
+
50585 {4.36018467, 1.0281055}, //
+
50586 {4.36199999, 1.02734995}, //
+
50587 {4.36390924, 1.0265944}, //
+
50588 {4.36585903, 1.02583885}, //
+
50589 {4.36784983, 1.0250833}, //
+
50590 {4.36988163, 1.02432775}, //
+
50591 {4.37195349, 1.02357221}, //
+
50592 {4.37406683, 1.02281666}, //
+
50593 {4.37622023, 1.02206111}, //
+
50594 {4.37841463, 1.02130556}, //
+
50595 {4.38065004, 1.02055001}, //
+
50596 {4.38287449, 1.01984692}, //
+
50597 {4.38501549, 1.01922655}, //
+
50598 {4.38707209, 1.01868892}, //
+
50599 {4.38904524, 1.0182339}, //
+
50600 {4.39093399, 1.01786172}, //
+
50601 {4.39273882, 1.01757216}, //
+
50602 {4.39445972, 1.01736546}, //
+
50603 {4.39609671, 1.01724136}, //
+
50604 {4.39764977, 1.01719999}, //
+
50605 {4.39984322, 1.01715803}, //
+
50606 {4.40191174, 1.01703215}, //
+
50607 {4.40385532, 1.01682222}, //
+
50608 {4.40567446, 1.01652837}, //
+
50609 {4.40736914, 1.01615059}, //
+
50610 {4.40893888, 1.0156889}, //
+
50611 {4.41038418, 1.01514316}, //
+
50612 {4.41170454, 1.01451361}, //
+
50613 {4.41289997, 1.01380002}, //
+
50614 {4.41405392, 1.01304448}, //
+
50615 {4.41524792, 1.01228893}, //
+
50616 {4.4164834, 1.01153338}, //
+
50617 {4.41775942, 1.01077783}, //
+
50618 {4.41907597, 1.01002216}, //
+
50619 {4.42043352, 1.00926661}, //
+
50620 {4.42183161, 1.00851107}, //
+
50621 {4.42327023, 1.00775552}, //
+
50622 {4.42474985, 1.00699997}, //
+
50623 {4.42621899, 1.00625491}, //
+
50624 {4.4276042, 1.00550866}, //
+
50625 {4.42890549, 1.0047611}, //
+
50626 {4.43012285, 1.00401235}, //
+
50627 {4.43125629, 1.0032624}, //
+
50628 {4.43230534, 1.00251114}, //
+
50629 {4.43327093, 1.00175869}, //
+
50630 {4.4341526, 1.00100493}, //
+
50631 {4.43494987, 1.00024998}, //
+
50632 {4.4356637, 0.999536395}, //
+
50633 {4.43629313, 0.998906791}, //
+
50634 {4.4368391, 0.998361111}, //
+
50635 {4.43818188, 0.99701792}, //
+
50636 {4.43830824, 0.996891975}, //
+
50637 {4.4383502, 0.996850014}, //
+
50638 });
+
50639 polys.push_back({
+
50640 {6.53035021, 0.484849989}, //
+
50641 {6.53032923, 0.484996289}, //
+
50642 {6.53026628, 0.485435188}, //
+
50643 {6.5301609, 0.486166656}, //
+
50644 {6.53001404, 0.487190753}, //
+
50645 {6.52864981, 0.496699989}, //
+
50646 {6.52823019, 0.499385804}, //
+
50647 {6.52772665, 0.50215435}, //
+
50648 {6.52713871, 0.505005538}, //
+
50649 {6.52646732, 0.507939517}, //
+
50650 {6.52571154, 0.510956168}, //
+
50651 {6.5248723, 0.51405555}, //
+
50652 {6.52394867, 0.517237663}, //
+
50653 {6.52294159, 0.520502448}, //
+
50654 {6.52185011, 0.523850024}, //
+
50655 {6.52074814, 0.527259886}, //
+
50656 {6.51968718, 0.53071171}, //
+
50657 {6.51866674, 0.534205556}, //
+
50658 {6.51768684, 0.537741363}, //
+
50659 {6.51674795, 0.541319132}, //
+
50660 {6.51585007, 0.544938862}, //
+
50661 {6.51499271, 0.548600614}, //
+
50662 {6.51417589, 0.552304327}, //
+
50663 {6.51340008, 0.556050003}, //
+
50664 {6.51260233, 0.559733331}, //
+
50665 {6.51172113, 0.563250005}, //
+
50666 {6.51075554, 0.566600025}, //
+
50667 {6.50970602, 0.56978333}, //
+
50668 {6.50857306, 0.572799981}, //
+
50669 {6.50735569, 0.575649977}, //
+
50670 {6.5060544, 0.578333318}, //
+
50671 {6.50466919, 0.580850005}, //
+
50672 {6.50320005, 0.583199978}, //
+
50673 {6.50237083, 0.586357415}, //
+
50674 {6.50137281, 0.589807391}, //
+
50675 {6.50020552, 0.593550026}, //
+
50676 {6.49886894, 0.597585201}, //
+
50677 {6.49736357, 0.601912975}, //
+
50678 {6.49568892, 0.606533349}, //
+
50679 {6.49384499, 0.611446321}, //
+
50680 {6.49183226, 0.616651833}, //
+
50681 {6.48964977, 0.622150004}, //
+
50682 {6.48739386, 0.627804935}, //
+
50683 {6.48513651, 0.633458614}, //
+
50684 {6.48287773, 0.639111102}, //
+
50685 {6.480618, 0.644762337}, //
+
50686 {6.47835684, 0.650412321}, //
+
50687 {6.47609425, 0.656061113}, //
+
50688 {6.4738307, 0.661708653}, //
+
50689 {6.4715662, 0.667354941}, //
+
50690 {6.46929979, 0.672999978}, //
+
50691 {6.4671278, 0.678509235}, //
+
50692 {6.46512222, 0.683725953}, //
+
50693 {6.46328354, 0.688650012}, //
+
50694 {6.46161127, 0.693281472}, //
+
50695 {6.46010542, 0.697620392}, //
+
50696 {6.45876646, 0.701666653}, //
+
50697 {6.45759439, 0.705420375}, //
+
50698 {6.45658875, 0.708881497}, //
+
50699 {6.45574999, 0.712050021}, //
+
50700 {6.45503664, 0.714306176}, //
+
50701 {6.45440674, 0.716563582}, //
+
50702 {6.45386124, 0.718822241}, //
+
50703 {6.45339918, 0.721082091}, //
+
50704 {6.45302153, 0.723343194}, //
+
50705 {6.45272779, 0.725605547}, //
+
50706 {6.45251799, 0.727869153}, //
+
50707 {6.4523921, 0.730133951}, //
+
50708 {6.45235014, 0.7324}, //
+
50709 {6.45034695, 0.742566049}, //
+
50710 {6.44733763, 0.753486395}, //
+
50711 {6.44332218, 0.765161097}, //
+
50712 {6.43830061, 0.777590096}, //
+
50713 {6.43227291, 0.790773451}, //
+
50714 {6.42523909, 0.804711103}, //
+
50715 {6.41719866, 0.819403112}, //
+
50716 {6.40815258, 0.834849358}, //
+
50717 {6.3980999, 0.851050019}, //
+
50718 {6.38450003, 0.869885802}, //
+
50719 {6.37232208, 0.887215436}, //
+
50720 {6.36156654, 0.903038859}, //
+
50721 {6.35223341, 0.917356193}, //
+
50722 {6.3443222, 0.930167258}, //
+
50723 {6.3378334, 0.941472232}, //
+
50724 {6.33276653, 0.951270998}, //
+
50725 {6.32912207, 0.959563553}, //
+
50726 {6.32690001, 0.966350019}, //
+
50727 {6.32687902, 0.96864754}, //
+
50728 {6.32681608, 0.971028984}, //
+
50729 {6.32671118, 0.97349447}, //
+
50730 {6.32656431, 0.97604382}, //
+
50731 {6.32637548, 0.978677154}, //
+
50732 {6.32614422, 0.98139447}, //
+
50733 {6.32587147, 0.98419565}, //
+
50734 {6.32555676, 0.987080872}, //
+
50735 {6.32520008, 0.990050018}, //
+
50736 {6.32484341, 0.993050635}, //
+
50737 {6.32452822, 0.996008039}, //
+
50738 {6.32425547, 0.998922229}, //
+
50739 {6.32402468, 1.00179327}, //
+
50740 {6.32383585, 1.00462103}, //
+
50741 {6.32368898, 1.00740552}, //
+
50742 {6.32358408, 1.01014686}, //
+
50743 {6.32352114, 1.01284504}, //
+
50744 {6.32350016, 1.01549995}, //
+
50745 {6.32350016, 1.0290556}, //
+
50746 {6.32350016, 1.03087842}, //
+
50747 {6.32350016, 1.03582656}, //
+
50748 {6.32350016, 1.03783393}, //
+
50749 {6.32350016, 1.03896177}, //
+
50750 {6.32350016, 1.0414654}, //
+
50751 {6.32350016, 1.04429996}, //
+
50752 {6.32347918, 1.04581046}, //
+
50753 {6.32341623, 1.04731977}, //
+
50754 {6.32331133, 1.04882777}, //
+
50755 {6.32316399, 1.05033457}, //
+
50756 {6.32297516, 1.05184007}, //
+
50757 {6.32274437, 1.05334449}, //
+
50758 {6.32247162, 1.05484748}, //
+
50759 {6.32215691, 1.0563494}, //
+
50760 {6.32180023, 1.05785}, //
+
50761 {6.32065916, 1.06255126}, //
+
50762 {6.32047606, 1.06330681}, //
+
50763 {6.32033348, 1.06389439}, //
+
50764 {6.3201499, 1.06465006}, //
+
50765 {6.32160854, 1.06231046}, //
+
50766 {6.3229847, 1.05980313}, //
+
50767 {6.32427788, 1.05712783}, //
+
50768 {6.32548809, 1.05428457}, //
+
50769 {6.32661629, 1.05127347}, //
+
50770 {6.32766104, 1.04809439}, //
+
50771 {6.32862329, 1.04474747}, //
+
50772 {6.32950306, 1.04123271}, //
+
50773 {6.33029985, 1.03754997}, //
+
50774 {6.33109713, 1.03378332}, //
+
50775 {6.33197641, 1.03001666}, //
+
50776 {6.33293867, 1.02625}, //
+
50777 {6.3339839, 1.02248335}, //
+
50778 {6.33511162, 1.01871669}, //
+
50779 {6.33632231, 1.01495004}, //
+
50780 {6.33761549, 1.01118338}, //
+
50781 {6.33899117, 1.00741673}, //
+
50782 {6.34044981, 1.00364995}, //
+
50783 {6.34280014, 0.99828887}, //
+
50784 {6.34531689, 0.992761135}, //
+
50785 {6.34800005, 0.987066686}, //
+
50786 {6.35085011, 0.981205583}, //
+
50787 {6.35386658, 0.975177765}, //
+
50788 {6.35704994, 0.968983352}, //
+
50789 {6.3604002, 0.962622225}, //
+
50790 {6.36391687, 0.956094444}, //
+
50791 {6.36759996, 0.949400008}, //
+
50792 {6.36835575, 0.948644459}, //
+
50793 {6.36911106, 0.947888911}, //
+
50794 {6.36986685, 0.947133362}, //
+
50795 {6.37062216, 0.946377754}, //
+
50796 {6.37213326, 0.944866657}, //
+
50797 {6.37288904, 0.944111109}, //
+
50798 {6.37364435, 0.94335556}, //
+
50799 {6.37440014, 0.942600012}, //
+
50800 {6.37440014, 0.941256762}, //
+
50801 {6.37440014, 0.940711141}, //
+
50802 {6.37440014, 0.940249383}, //
+
50803 {6.37440014, 0.939199984}, //
+
50804 {6.38033867, 0.932003081}, //
+
50805 {6.38611126, 0.923967898}, //
+
50806 {6.39171648, 0.915094435}, //
+
50807 {6.39715576, 0.905382693}, //
+
50808 {6.40242767, 0.89483273}, //
+
50809 {6.40753317, 0.883444428}, //
+
50810 {6.41247225, 0.871217906}, //
+
50811 {6.41724443, 0.858153105}, //
+
50812 {6.4218502, 0.844250023}, //
+
50813 {6.42570066, 0.833159268}, //
+
50814 {6.42971897, 0.822487056}, //
+
50815 {6.4339056, 0.812233329}, //
+
50816 {6.43826008, 0.802398145}, //
+
50817 {6.44278193, 0.792981505}, //
+
50818 {6.4474721, 0.78398335}, //
+
50819 {6.45233011, 0.775403678}, //
+
50820 {6.45735598, 0.76724261}, //
+
50821 {6.46255016, 0.759500027}, //
+
50822 {6.46543598, 0.755817294}, //
+
50823 {6.46807098, 0.752302468}, //
+
50824 {6.47045565, 0.748955548}, //
+
50825 {6.47258949, 0.745776534}, //
+
50826 {6.474473, 0.742765427}, //
+
50827 {6.47610569, 0.739922225}, //
+
50828 {6.47748756, 0.737246931}, //
+
50829 {6.4786191, 0.734739482}, //
+
50830 {6.47949982, 0.7324}, //
+
50831 {6.48097944, 0.730008006}, //
+
50832 {6.48241854, 0.727365434}, //
+
50833 {6.48381662, 0.724472225}, //
+
50834 {6.48517418, 0.721328378}, //
+
50835 {6.48649073, 0.717933953}, //
+
50836 {6.48776674, 0.71428889}, //
+
50837 {6.48900175, 0.71039319}, //
+
50838 {6.49019623, 0.706246912}, //
+
50839 {6.49135017, 0.701849997}, //
+
50840 {6.49246216, 0.697369754}, //
+
50841 {6.49353266, 0.692973435}, //
+
50842 {6.4945612, 0.688661098}, //
+
50843 {6.49554729, 0.684432745}, //
+
50844 {6.49649191, 0.680288255}, //
+
50845 {6.49739456, 0.676227748}, //
+
50846 {6.49825478, 0.672251225}, //
+
50847 {6.49907351, 0.668358624}, //
+
50848 {6.4998498, 0.664550006}, //
+
50849 {6.50130844, 0.657981455}, //
+
50850 {6.50268459, 0.651831508}, //
+
50851 {6.50397778, 0.646099985}, //
+
50852 {6.50518847, 0.640787065}, //
+
50853 {6.50631618, 0.63589257}, //
+
50854 {6.50736094, 0.631416678}, //
+
50855 {6.50832367, 0.627359271}, //
+
50856 {6.50920296, 0.623720348}, //
+
50857 {6.51000023, 0.620500028}, //
+
50858 {6.51077604, 0.618779659}, //
+
50859 {6.51159239, 0.616640747}, //
+
50860 {6.51245022, 0.61408335}, //
+
50861 {6.5133481, 0.611107409}, //
+
50862 {6.51428699, 0.607712984}, //
+
50863 {6.5152669, 0.603900015}, //
+
50864 {6.51628685, 0.599668503}, //
+
50865 {6.51734829, 0.595018506}, //
+
50866 {6.51844978, 0.589950025}, //
+
50867 {6.51960421, 0.58459878}, //
+
50868 {6.52080059, 0.579078376}, //
+
50869 {6.52203894, 0.573388875}, //
+
50870 {6.52331924, 0.567530274}, //
+
50871 {6.52464151, 0.561502457}, //
+
50872 {6.52600574, 0.555305541}, //
+
50873 {6.52741194, 0.548939526}, //
+
50874 {6.52886009, 0.542404294}, //
+
50875 {6.53035021, 0.535700023}, //
+
50876 {6.53110504, 0.531975329}, //
+
50877 {6.53185844, 0.528334558}, //
+
50878 {6.53261089, 0.52477777}, //
+
50879 {6.53336239, 0.521304965}, //
+
50880 {6.53411245, 0.517916024}, //
+
50881 {6.53486109, 0.514611125}, //
+
50882 {6.53560877, 0.51139015}, //
+
50883 {6.53635502, 0.508253098}, //
+
50884 {6.53709984, 0.505200028}, //
+
50885 {6.53781366, 0.502356172}, //
+
50886 {6.5404582, 0.491817296}, //
+
50887 {6.54050016, 0.491649985}, //
+
50888 {6.54119253, 0.490936428}, //
+
50889 {6.54175949, 0.490306795}, //
+
50890 {6.54220009, 0.489761114}, //
+
50891 {6.5425148, 0.489299387}, //
+
50892 {6.54270363, 0.488921613}, //
+
50893 {6.54276657, 0.488627791}, //
+
50894 {6.54270363, 0.488417894}, //
+
50895 {6.5425148, 0.488291979}, //
+
50896 {6.54220009, 0.488249987}, //
+
50897 {6.54182243, 0.488229007}, //
+
50898 {6.5414443, 0.488166064}, //
+
50899 {6.54106665, 0.4880611}, //
+
50900 {6.54068899, 0.487914205}, //
+
50901 {6.54031134, 0.487725317}, //
+
50902 {6.5399332, 0.487494439}, //
+
50903 {6.53955555, 0.487221599}, //
+
50904 {6.53917789, 0.486906797}, //
+
50905 {6.53879976, 0.486550003}, //
+
50906 {6.5384326, 0.48619321}, //
+
50907 {6.538064, 0.485878408}, //
+
50908 {6.53769445, 0.485605568}, //
+
50909 {6.53732347, 0.485374689}, //
+
50910 {6.53695107, 0.485185802}, //
+
50911 {6.5365777, 0.485038877}, //
+
50912 {6.53620291, 0.484933943}, //
+
50913 {6.53582716, 0.484871}, //
+
50914 {6.53544998, 0.484849989}, //
+
50915 });
+
50916 polys.push_back({
+
50917 {1.04770005, 0.962949991}, //
+
50918 {1.04778337, 0.962991357}, //
+
50919 {1.04803336, 0.963115454}, //
+
50920 {1.04844999, 0.963322222}, //
+
50921 {1.04903328, 0.963611722}, //
+
50922 {1.05445004, 0.966300011}, //
+
50923 {1.05602348, 0.967097521}, //
+
50924 {1.05772161, 0.967979014}, //
+
50925 {1.05954444, 0.96894443}, //
+
50926 {1.06149197, 0.96999383}, //
+
50927 {1.06356418, 0.971127152}, //
+
50928 {1.06576109, 0.972344458}, //
+
50929 {1.06808269, 0.973645687}, //
+
50930 {1.07052898, 0.975030839}, //
+
50931 {1.07309997, 0.976499975}, //
+
50932 {1.07574379, 0.977989495}, //
+
50933 {1.07838643, 0.979435802}, //
+
50934 {1.08102775, 0.980838895}, //
+
50935 {1.08366787, 0.982198775}, //
+
50936 {1.08630681, 0.983515441}, //
+
50937 {1.08894444, 0.984788895}, //
+
50938 {1.09158087, 0.986019135}, //
+
50939 {1.09421611, 0.987206161}, //
+
50940 {1.09685004, 0.988349974}, //
+
50941 {1.09947288, 0.989462316}, //
+
50942 {1.10205245, 0.990532696}, //
+
50943 {1.10458887, 0.991561115}, //
+
50944 {1.10708213, 0.992547512}, //
+
50945 {1.10953212, 0.993491948}, //
+
50946 {1.11193883, 0.994394422}, //
+
50947 {1.11430252, 0.995254934}, //
+
50948 {1.11662281, 0.996073484}, //
+
50949 {1.11889994, 0.996850014}, //
+
50950 {1.12421918, 0.998235166}, //
+
50951 {1.12962103, 0.999368489}, //
+
50952 {1.13510561, 1.00024998}, //
+
50953 {1.1406728, 1.00087965}, //
+
50954 {1.14632285, 1.00125742}, //
+
50955 {1.1520555, 1.0013833}, //
+
50956 {1.15787101, 1.00125742}, //
+
50957 {1.16376913, 1.00087965}, //
+
50958 {1.16974998, 1.00024998}, //
+
50959 {1.17281353, 0.999578416}, //
+
50960 {1.17595983, 0.999074697}, //
+
50961 {1.17918885, 0.998738885}, //
+
50962 {1.1825006, 0.998570979}, //
+
50963 {1.18589509, 0.998570979}, //
+
50964 {1.18937218, 0.998738885}, //
+
50965 {1.19293213, 0.999074697}, //
+
50966 {1.19657469, 0.999578416}, //
+
50967 {1.20029998, 1.00024998}, //
+
50968 {1.20542037, 1.00020802}, //
+
50969 {1.21024811, 1.00008214}, //
+
50970 {1.21478331, 0.999872208}, //
+
50971 {1.21902597, 0.999578416}, //
+
50972 {1.22297597, 0.999200642}, //
+
50973 {1.22663331, 0.998738885}, //
+
50974 {1.22999811, 0.998193204}, //
+
50975 {1.23307037, 0.997563601}, //
+
50976 {1.23584998, 0.996850014}, //
+
50977 {1.24775004, 0.993449986}, //
+
50978 {1.25454998, 0.959550023}, //
+
50979 {1.25421417, 0.959550023}, //
+
50980 {1.25379443, 0.959550023}, //
+
50981 {1.25320685, 0.959550023}, //
+
50982 {1.25245118, 0.959550023}, //
+
50983 {1.25152779, 0.959550023}, //
+
50984 {1.25043643, 0.959550023}, //
+
50985 {1.24775004, 0.959550023}, //
+
50986 {1.2461766, 0.959571004}, //
+
50987 {1.24447834, 0.959633946}, //
+
50988 {1.24265552, 0.95973891}, //
+
50989 {1.24070799, 0.959885776}, //
+
50990 {1.23863578, 0.960074663}, //
+
50991 {1.23643887, 0.960305572}, //
+
50992 {1.23411727, 0.960578382}, //
+
50993 {1.23167098, 0.960893214}, //
+
50994 {1.22909999, 0.961250007}, //
+
50995 {1.22644508, 0.961606801}, //
+
50996 {1.2237469, 0.961921632}, //
+
50997 {1.22100556, 0.962194443}, //
+
50998 {1.21822095, 0.962425292}, //
+
50999 {1.21539319, 0.962614179}, //
+
51000 {1.21252227, 0.962761104}, //
+
51001 {1.20960808, 0.962866068}, //
+
51002 {1.20665061, 0.96292901}, //
+
51003 {1.20365, 0.962949991}, //
+
51004 {1.20072281, 0.962991953}, //
+
51005 {1.1979636, 0.963117898}, //
+
51006 {1.19537222, 0.963327765}, //
+
51007 {1.19294882, 0.963621616}, //
+
51008 {1.19069326, 0.963999391}, //
+
51009 {1.18860555, 0.964461088}, //
+
51010 {1.1866858, 0.965006769}, //
+
51011 {1.1849339, 0.965636432}, //
+
51012 {1.18334997, 0.966350019}, //
+
51013 {1.18181789, 0.966350019}, //
+
51014 {1.18024385, 0.966350019}, //
+
51015 {1.17862773, 0.966350019}, //
+
51016 {1.17526972, 0.966350019}, //
+
51017 {1.17352784, 0.966350019}, //
+
51018 {1.16615057, 0.966350019}, //
+
51019 {1.16420805, 0.966350019}, //
+
51020 {1.16222227, 0.966350019}, //
+
51021 {1.15812099, 0.966350019}, //
+
51022 {1.1560055, 0.966350019}, //
+
51023 {1.1471858, 0.966350019}, //
+
51024 {1.14505434, 0.966350019}, //
+
51025 {1.14300561, 0.966350019}, //
+
51026 {1.14103949, 0.966350019}, //
+
51027 {1.1310333, 0.966350019}, //
+
51028 {1.12978339, 0.966350019}, //
+
51029 {1.12870002, 0.966350019}, //
+
51030 {1.1277833, 0.966350019}, //
+
51031 {1.12703335, 0.966350019}, //
+
51032 {1.12644994, 0.966350019}, //
+
51033 {1.1257, 0.966350019}, //
+
51034 {1.12268829, 0.966287017}, //
+
51035 {1.11967528, 0.96609813}, //
+
51036 {1.11666107, 0.965783358}, //
+
51037 {1.11364567, 0.965342581}, //
+
51038 {1.11062896, 0.96477592}, //
+
51039 {1.10761106, 0.964083314}, //
+
51040 {1.10459197, 0.963264823}, //
+
51041 {1.10157156, 0.962320387}, //
+
51042 {1.09854996, 0.961250007}, //
+
51043 {1.09558022, 0.960137665}, //
+
51044 {1.09269321, 0.959067285}, //
+
51045 {1.08988893, 0.958038867}, //
+
51046 {1.08716726, 0.957052469}, //
+
51047 {1.08452845, 0.956108034}, //
+
51048 {1.08197224, 0.95520556}, //
+
51049 {1.07949877, 0.954345047}, //
+
51050 {1.07710803, 0.953526556}, //
+
51051 {1.07480001, 0.952750027}, //
+
51052 {1.06916106, 0.950888872}, //
+
51053 {1.06778276, 0.950433969}, //
+
51054 {1.06665492, 0.950061738}, //
+
51055 {1.06477535, 0.949441373}, //
+
51056 {1.06465006, 0.949400008}, //
+
51057 {1.06241477, 0.947909892}, //
+
51058 {1.06022036, 0.946461737}, //
+
51059 {1.05806673, 0.945055544}, //
+
51060 {1.05595374, 0.943691373}, //
+
51061 {1.05388153, 0.942369163}, //
+
51062 {1.05184996, 0.941088915}, //
+
51063 {1.04985929, 0.939850628}, //
+
51064 {1.04790926, 0.938654304}, //
+
51065 {1.046, 0.9375}, //
+
51066 {1.04418457, 0.936387658}, //
+
51067 {1.04249382, 0.935317278}, //
+
51068 {1.04092777, 0.934288859}, //
+
51069 {1.03948641, 0.933302462}, //
+
51070 {1.03816974, 0.932358027}, //
+
51071 {1.03697777, 0.931455553}, //
+
51072 {1.03591049, 0.93059504}, //
+
51073 {1.0349679, 0.929776549}, //
+
51074 {1.03415, 0.92900002}, //
+
51075 {1.03343642, 0.928296924}, //
+
51076 {1.03280675, 0.927676558}, //
+
51077 {1.03226113, 0.927138865}, //
+
51078 {1.03179944, 0.926683962}, //
+
51079 {1.03142166, 0.926311731}, //
+
51080 {1.03112781, 0.926022232}, //
+
51081 {1.03091788, 0.925815403}, //
+
51082 {1.030792, 0.925691366}, //
+
51083 {1.03075004, 0.925650001}, //
+
51084 });
+
51085 polys.push_back({
+
51086 {0.471717298, 0.874881506}, //
+
51087 {0.472969145, 0.875125945}, //
+
51088 {0.473908037, 0.875309289}, //
+
51089 {0.475055546, 0.875533342}, //
+
51090 {0.47641173, 0.875798166}, //
+
51091 {0.479750007, 0.876450002}, //
+
51092 {0.481701225, 0.876869738}, //
+
51093 {0.483777165, 0.877373457}, //
+
51094 {0.485977769, 0.877961099}, //
+
51095 {0.488303095, 0.878632724}, //
+
51096 {0.490753084, 0.879388273}, //
+
51097 {0.493327767, 0.880227804}, //
+
51098 {0.496027172, 0.881151259}, //
+
51099 {0.49885124, 0.882158637}, //
+
51100 {0.501800001, 0.883249998}, //
+
51101 {0.504842579, 0.88436234}, //
+
51102 {0.507925928, 0.88543272}, //
+
51103 {0.511049986, 0.886461139}, //
+
51104 {0.514214814, 0.887447536}, //
+
51105 {0.517420352, 0.888391972}, //
+
51106 {0.520666659, 0.889294446}, //
+
51107 {0.523953676, 0.890154958}, //
+
51108 {0.527281463, 0.890973449}, //
+
51109 {0.53065002, 0.891749978}, //
+
51110 {0.533933938, 0.89250493}, //
+
51111 {0.537008047, 0.893258631}, //
+
51112 {0.539872229, 0.89401114}, //
+
51113 {0.542526543, 0.894762337}, //
+
51114 {0.544970989, 0.895512342}, //
+
51115 {0.547205567, 0.896261096}, //
+
51116 {0.549230218, 0.897008657}, //
+
51117 {0.55104506, 0.897754967}, //
+
51118 {0.552649975, 0.898500025}, //
+
51119 {0.555104315, 0.89931792}, //
+
51120 {0.557933927, 0.900260508}, //
+
51121 {0.561138868, 0.901327789}, //
+
51122 {0.564719141, 0.902519763}, //
+
51123 {0.568674684, 0.903836429}, //
+
51124 {0.573005557, 0.905277789}, //
+
51125 {0.577711701, 0.906843841}, //
+
51126 {0.582793236, 0.908534586}, //
+
51127 {0.588249981, 0.910350025}, //
+
51128 {0.593925953, 0.912280262}, //
+
51129 {0.599642575, 0.91429323}, //
+
51130 {0.605400026, 0.916388869}, //
+
51131 {0.611198127, 0.9185673}, //
+
51132 {0.617037058, 0.920828402}, //
+
51133 {0.622916639, 0.923172235}, //
+
51134 {0.628837049, 0.925598741}, //
+
51135 {0.634798169, 0.928108037}, //
+
51136 {0.640799999, 0.930700004}, //
+
51137 {0.646770358, 0.933301866}, //
+
51138 {0.652614832, 0.935818493}, //
+
51139 {0.658333361, 0.938250005}, //
+
51140 {0.663925946, 0.940596282}, //
+
51141 {0.669392586, 0.942857385}, //
+
51142 {0.674733341, 0.945033312}, //
+
51143 {0.679948151, 0.947124064}, //
+
51144 {0.685037017, 0.949129641}, //
+
51145 {0.689999998, 0.951049984}, //
+
51146 {0.698711097, 0.95440805}, //
+
51147 {0.702250004, 0.955772221}, //
+
51148 {0.705244422, 0.956926525}, //
+
51149 {0.707694471, 0.95787096}, //
+
51150 {0.710961103, 0.959130228}, //
+
51151 {0.712050021, 0.959550023}, //
+
51152 {0.71510309, 0.960304916}, //
+
51153 {0.718240142, 0.961058617}, //
+
51154 {0.721461117, 0.961811125}, //
+
51155 {0.724766076, 0.962562323}, //
+
51156 {0.728154957, 0.963312328}, //
+
51157 {0.731627762, 0.964061081}, //
+
51158 {0.73518455, 0.964808643}, //
+
51159 {0.738825321, 0.965554953}, //
+
51160 {0.742550015, 0.966300011}, //
+
51161 {0.746379614, 0.96707654}, //
+
51162 {0.750335157, 0.967895091}, //
+
51163 {0.754416645, 0.968755543}, //
+
51164 {0.758624077, 0.969658017}, //
+
51165 {0.762957394, 0.970602453}, //
+
51166 {0.767416656, 0.97158891}, //
+
51167 {0.772001863, 0.972617269}, //
+
51168 {0.776712954, 0.973687649}, //
+
51169 {0.78154999, 0.974799991}, //
+
51170 {0.786345065, 0.975891352}, //
+
51171 {0.790930271, 0.976898789}, //
+
51172 {0.79530555, 0.977822244}, //
+
51173 {0.799470961, 0.978661716}, //
+
51174 {0.803426564, 0.979417264}, //
+
51175 {0.807172239, 0.98008889}, //
+
51176 {0.810708046, 0.980676532}, //
+
51177 {0.814033926, 0.981180251}, //
+
51178 {0.817149997, 0.981599987}, //
+
51179 {0.819993854, 0.98195678}, //
+
51180 {0.82250309, 0.982271612}, //
+
51181 {0.828023434, 0.982964218}, //
+
51182 {0.83053273, 0.98327899}, //
+
51183 {0.83069998, 0.983299971}, //
+
51184 {0.833091378, 0.983940125}, //
+
51185 {0.835732102, 0.984371603}, //
+
51186 {0.838622212, 0.984594464}, //
+
51187 {0.841761708, 0.98460865}, //
+
51188 {0.84515059, 0.98441422}, //
+
51189 {0.848788917, 0.984011114}, //
+
51190 {0.85267657, 0.983399391}, //
+
51191 {0.85681361, 0.982578993}, //
+
51192 {0.861199975, 0.981549978}, //
+
51193 {0.86574322, 0.980406165}, //
+
51194 {0.870328367, 0.979219139}, //
+
51195 {0.874955535, 0.977988899}, //
+
51196 {0.879624665, 0.976715446}, //
+
51197 {0.884335816, 0.975398779}, //
+
51198 {0.889088869, 0.974038899}, //
+
51199 {0.893883944, 0.972635806}, //
+
51200 {0.89872098, 0.971189499}, //
+
51201 {0.903599977, 0.969699979}, //
+
51202 {0.908437014, 0.968220353}, //
+
51203 {0.913148165, 0.966781497}, //
+
51204 {0.917733312, 0.965383351}, //
+
51205 {0.922192574, 0.964025915}, //
+
51206 {0.92652595, 0.962709248}, //
+
51207 {0.930733323, 0.961433351}, //
+
51208 {0.934814811, 0.960198164}, //
+
51209 {0.938770354, 0.959003687}, //
+
51210 {0.942600012, 0.957849979}, //
+
51211 {0.952016652, 0.955016673}, //
+
51212 {0.959550023, 0.952750027}, //
+
51213 {0.961784542, 0.950472832}, //
+
51214 {0.963977158, 0.948152483}, //
+
51215 {0.966127753, 0.94578886}, //
+
51216 {0.968236446, 0.943382084}, //
+
51217 {0.970303059, 0.940932095}, //
+
51218 {0.972327769, 0.938438892}, //
+
51219 {0.974310517, 0.935902476}, //
+
51220 {0.976251245, 0.933322847}, //
+
51221 {0.97815001, 0.930700004}, //
+
51222 {0.980038881, 0.92804569}, //
+
51223 {0.981927752, 0.925349355}, //
+
51224 {0.983816683, 0.922611117}, //
+
51225 {0.985705554, 0.919830859}, //
+
51226 {0.987594426, 0.917008638}, //
+
51227 {0.989483356, 0.914144456}, //
+
51228 {0.991372228, 0.911238253}, //
+
51229 {0.993261099, 0.908290148}, //
+
51230 {0.99515003, 0.905300021}, //
+
51231 {0.996975303, 0.90233022}, //
+
51232 {0.998673439, 0.899443209}, //
+
51233 {1.0002445, 0.89663887}, //
+
51234 {1.00168824, 0.893917263}, //
+
51235 {1.00300491, 0.891278386}, //
+
51236 {1.0041945, 0.888722241}, //
+
51237 {1.00525677, 0.886248767}, //
+
51238 {1.00619197, 0.883858025}, //
+
51239 {1.00699997, 0.881550014}, //
+
51240 {1.00888884, 0.875911117}, //
+
51241 {1.00972843, 0.87340492}, //
+
51242 {1.01002216, 0.872527778}, //
+
51243 {1.01023209, 0.871901214}, //
+
51244 {1.01035798, 0.871525288}, //
+
51245 {1.01040006, 0.871399999}, //
+
51246 {1.00024998, 0.851050019}, //
+
51247 {1.000229, 0.851091981}, //
+
51248 {1.00006115, 0.851427794}, //
+
51249 {0.999914169, 0.851721585}, //
+
51250 {0.999725282, 0.852099359}, //
+
51251 {0.999494433, 0.852561116}, //
+
51252 {0.998906791, 0.853736401}, //
+
51253 {0.998549998, 0.854449987}, //
+
51254 {0.998172224, 0.855225921}, //
+
51255 {0.997794449, 0.856042564}, //
+
51256 {0.997416675, 0.856899977}, //
+
51257 {0.997038901, 0.857798159}, //
+
51258 {0.996661127, 0.858737051}, //
+
51259 {0.996283352, 0.859716654}, //
+
51260 {0.995905578, 0.860737026}, //
+
51261 {0.995527804, 0.861798167}, //
+
51262 {0.99515003, 0.862900019}, //
+
51263 {0.994751215, 0.864032745}, //
+
51264 {0.994310498, 0.86516422}, //
+
51265 {0.99382776, 0.866294444}, //
+
51266 {0.993303061, 0.867423475}, //
+
51267 {0.992736399, 0.868551254}, //
+
51268 {0.992127776, 0.869677782}, //
+
51269 {0.991477132, 0.870803058}, //
+
51270 {0.990784585, 0.871927142}, //
+
51271 {0.990050018, 0.873049974}, //
+
51272 {0.989295065, 0.874162316}, //
+
51273 {0.988541365, 0.875232697}, //
+
51274 {0.987788916, 0.876261115}, //
+
51275 {0.987037659, 0.877247512}, //
+
51276 {0.986287653, 0.878191948}, //
+
51277 {0.9855389, 0.879094422}, //
+
51278 {0.984791338, 0.879954934}, //
+
51279 {0.984045088, 0.880773485}, //
+
51280 {0.983299971, 0.881550014}, //
+
51281 {0.98233521, 0.883795083}, //
+
51282 {0.980951846, 0.885996938}, //
+
51283 {0.979149997, 0.88815558}, //
+
51284 {0.976929605, 0.890271008}, //
+
51285 {0.974290729, 0.892343223}, //
+
51286 {0.971233308, 0.894372225}, //
+
51287 {0.967757404, 0.896358013}, //
+
51288 {0.963862956, 0.898300588}, //
+
51289 {0.959550023, 0.900200009}, //
+
51290 {0.955006778, 0.902088284}, //
+
51291 {0.950421631, 0.903975308}, //
+
51292 {0.945794463, 0.905861139}, //
+
51293 {0.941125333, 0.907745659}, //
+
51294 {0.936414182, 0.909628987}, //
+
51295 {0.931661129, 0.911511123}, //
+
51296 {0.926866055, 0.913391948}, //
+
51297 {0.922029018, 0.91527158}, //
+
51298 {0.917150021, 0.917150021}, //
+
51299 {0.912322819, 0.918933928}, //
+
51300 {0.907619119, 0.920508027}, //
+
51301 {0.903038859, 0.921872199}, //
+
51302 {0.898582101, 0.923026562}, //
+
51303 {0.894248784, 0.923970997}, //
+
51304 {0.890038908, 0.924705565}, //
+
51305 {0.885952473, 0.925230265}, //
+
51306 {0.881989479, 0.925545037}, //
+
51307 {0.878149986, 0.925650001}, //
+
51308 {0.871204317, 0.925440729}, //
+
51309 {0.863922834, 0.924812973}, //
+
51310 {0.85630554, 0.923766673}, //
+
51311 {0.848352492, 0.922301829}, //
+
51312 {0.840063572, 0.920418501}, //
+
51313 {0.831438899, 0.918116689}, //
+
51314 {0.822478414, 0.915396273}, //
+
51315 {0.813182116, 0.912257433}, //
+
51316 {0.803550005, 0.908699989}, //
+
51317 {0.793844461, 0.9046821}, //
+
51318 {0.784305573, 0.900161743}, //
+
51319 {0.774933338, 0.89513886}, //
+
51320 {0.765727758, 0.889613569}, //
+
51321 {0.756688893, 0.883585811}, //
+
51322 {0.747816682, 0.877055526}, //
+
51323 {0.739111125, 0.870022833}, //
+
51324 {0.730572224, 0.862487674}, //
+
51325 {0.722199976, 0.854449987}, //
+
51326 {0.717572868, 0.851480246}, //
+
51327 {0.712735832, 0.848593235}, //
+
51328 {0.707688868, 0.845788896}, //
+
51329 {0.702432096, 0.843067288}, //
+
51330 {0.696965456, 0.840428412}, //
+
51331 {0.691288888, 0.837872207}, //
+
51332 {0.685402453, 0.835398793}, //
+
51333 {0.679306149, 0.833008051}, //
+
51334 {0.672999978, 0.83069998}, //
+
51335 {0.666620374, 0.828506768}, //
+
51336 {0.660281479, 0.826438248}, //
+
51337 {0.653983355, 0.824494421}, //
+
51338 {0.64772594, 0.822675288}, //
+
51339 {0.641509235, 0.820980847}, //
+
51340 {0.635333359, 0.819411099}, //
+
51341 {0.629198134, 0.817966044}, //
+
51342 {0.623103678, 0.816645682}, //
+
51343 {0.617049992, 0.815450013}, //
+
51344 {0.611132085, 0.814337671}, //
+
51345 {0.605422854, 0.813267291}, //
+
51346 {0.59992224, 0.812238872}, //
+
51347 {0.594630241, 0.811252475}, //
+
51348 {0.589546919, 0.810308039}, //
+
51349 {0.584672213, 0.809405565}, //
+
51350 {0.580006182, 0.808545053}, //
+
51351 {0.575548768, 0.807726562}, //
+
51352 {0.57130003, 0.806949973}, //
+
51353 {0.560938895, 0.805088878}, //
+
51354 {0.556333959, 0.804261744}, //
+
51355 {0.552649975, 0.803600013}, //
+
51356 {0.550456762, 0.803600013}, //
+
51357 {0.546444416, 0.803600013}, //
+
51358 {0.544625282, 0.803600013}, //
+
51359 {0.542930841, 0.803600013}, //
+
51360 {0.539916039, 0.803600013}, //
+
51361 {0.538595676, 0.803600013}, //
+
51362 {0.537400007, 0.803600013}, //
+
51363 {0.536256194, 0.803558052}, //
+
51364 {0.535069108, 0.803432107}, //
+
51365 {0.533838868, 0.803222239}, //
+
51366 {0.532565415, 0.802928388}, //
+
51367 {0.531248748, 0.802550614}, //
+
51368 {0.529888868, 0.802088916}, //
+
51369 {0.528485775, 0.801543236}, //
+
51370 {0.527039528, 0.800913572}, //
+
51371 {0.525550008, 0.800199986}, //
+
51372 {0.524101853, 0.799465418}, //
+
51373 {0.522779644, 0.798772812}, //
+
51374 {0.521583319, 0.798122227}, //
+
51375 {0.520512938, 0.797513604}, //
+
51376 {0.519568503, 0.796946943}, //
+
51377 {0.518750012, 0.796422243}, //
+
51378 {0.518057406, 0.795939505}, //
+
51379 {0.517490745, 0.795498788}, //
+
51380 {0.517050028, 0.795099974}, //
+
51381 {0.516682744, 0.794722199}, //
+
51382 {0.516314209, 0.794344425}, //
+
51383 {0.515944421, 0.793966651}, //
+
51384 {0.515573442, 0.793588877}, //
+
51385 {0.515201211, 0.793211102}, //
+
51386 {0.514827788, 0.792833328}, //
+
51387 {0.514453113, 0.792455554}, //
+
51388 {0.514077187, 0.79207778}, //
+
51389 {0.513700008, 0.791700006}, //
+
51390 {0.513343215, 0.791322231}, //
+
51391 {0.513150334, 0.791090786}, //
+
51392 {0.508599997, 0.806949973}, //
+
51393 {0.510656774, 0.80900681}, //
+
51394 {0.512000024, 0.810350001}, //
+
51395 {0.512817919, 0.811125934}, //
+
51396 {0.513760507, 0.811942577}, //
+
51397 {0.514827788, 0.81279999}, //
+
51398 {0.516019762, 0.813698173}, //
+
51399 {0.517336428, 0.814637065}, //
+
51400 {0.518777788, 0.815616667}, //
+
51401 {0.52034384, 0.816637039}, //
+
51402 {0.522034585, 0.817698121}, //
+
51403 {0.523850024, 0.818799973}, //
+
51404 {0.525675297, 0.819912374}, //
+
51405 {0.527373433, 0.820982695}, //
+
51406 {0.528944433, 0.822011113}, //
+
51407 {0.530388296, 0.82299751}, //
+
51408 {0.531704962, 0.823941946}, //
+
51409 {0.532894433, 0.82484442}, //
+
51410 {0.533956766, 0.825704932}, //
+
51411 {0.534891963, 0.826523483}, //
+
51412 {0.535700023, 0.827300012}, //
+
51413 {0.536580861, 0.828055561}, //
+
51414 {0.537712336, 0.828811109}, //
+
51415 {0.539094448, 0.829566658}, //
+
51416 {0.540727139, 0.830322206}, //
+
51417 {0.542610466, 0.831077754}, //
+
51418 {0.544744432, 0.831833363}, //
+
51419 {0.547129035, 0.832588911}, //
+
51420 {0.549764216, 0.83334446}, //
+
51421 {0.552649975, 0.834100008}, //
+
51422 {0.555713594, 0.834855556}, //
+
51423 {0.558859885, 0.835611105}, //
+
51424 {0.562088907, 0.836366653}, //
+
51425 {0.5654006, 0.837122202}, //
+
51426 {0.568795085, 0.83787775}, //
+
51427 {0.572272241, 0.838633358}, //
+
51428 {0.575832129, 0.839388907}, //
+
51429 {0.579474688, 0.840144455}, //
+
51430 {0.583199978, 0.840900004}, //
+
51431 {0.588509262, 0.841645062}, //
+
51432 {0.59390372, 0.842391372}, //
+
51433 {0.599383354, 0.843138874}, //
+
51434 {0.604948163, 0.843887627}, //
+
51435 {0.610598147, 0.844637632}, //
+
51436 {0.616333306, 0.845388889}, //
+
51437 {0.622153699, 0.846141338}, //
+
51438 {0.628059268, 0.846895039}, //
+
51439 {0.634050012, 0.847649992}, //
+
51440 {0.640072823, 0.85004133}, //
+
51441 {0.646096885, 0.852682114}, //
+
51442 {0.6521222, 0.855572224}, //
+
51443 {0.658148766, 0.85871172}, //
+
51444 {0.664176524, 0.862100601}, //
+
51445 {0.670205534, 0.865738869}, //
+
51446 {0.676235795, 0.869626522}, //
+
51447 {0.682267308, 0.873763561}, //
+
51448 {0.688300014, 0.878149986}, //
+
51449 {0.692905545, 0.881171584}, //
+
51450 {0.697677791, 0.88419199}, //
+
51451 {0.702616692, 0.887211084}, //
+
51452 {0.707722247, 0.890228987}, //
+
51453 {0.712994456, 0.893245697}, //
+
51454 {0.718433321, 0.896261096}, //
+
51455 {0.724038899, 0.899275303}, //
+
51456 {0.729811132, 0.902288258}, //
+
51457 {0.73575002, 0.905300021}, //
+
51458 {0.739370346, 0.907493234}, //
+
51459 {0.742698133, 0.909561753}, //
+
51460 {0.745733321, 0.91150558}, //
+
51461 {0.748475909, 0.913324714}, //
+
51462 {0.750925899, 0.915019155}, //
+
51463 {0.753083348, 0.916588902}, //
+
51464 {0.754948139, 0.918033957}, //
+
51465 {0.756520391, 0.91935432}, //
+
51466 {0.757799983, 0.920549989}, //
+
51467 {0.758849382, 0.921661735}, //
+
51468 {0.759730875, 0.922730267}, //
+
51469 {0.760444462, 0.923755527}, //
+
51470 {0.760990143, 0.924737632}, //
+
51471 {0.761367917, 0.925676525}, //
+
51472 {0.761577785, 0.926572204}, //
+
51473 {0.761619747, 0.927424669}, //
+
51474 {0.761493802, 0.928233922}, //
+
51475 {0.761200011, 0.92900002}, //
+
51476 {0.760801256, 0.929755569}, //
+
51477 {0.760360479, 0.930511117}, //
+
51478 {0.759877801, 0.931266665}, //
+
51479 {0.759353101, 0.932022214}, //
+
51480 {0.75878644, 0.932777762}, //
+
51481 {0.758177757, 0.933533311}, //
+
51482 {0.757527173, 0.934288859}, //
+
51483 {0.756834567, 0.935044467}, //
+
51484 {0.756099999, 0.935800016}, //
+
51485 {0.754641354, 0.936555564}, //
+
51486 {0.75326544, 0.937311113}, //
+
51487 {0.751972198, 0.938066661}, //
+
51488 {0.750761747, 0.93882221}, //
+
51489 {0.749633968, 0.939577758}, //
+
51490 {0.74858886, 0.940333307}, //
+
51491 {0.747626543, 0.941088915}, //
+
51492 {0.746746898, 0.941844463}, //
+
51493 {0.745949984, 0.942600012}, //
+
51494 {0.745110512, 0.943964183}, //
+
51495 {0.744103074, 0.945034564}, //
+
51496 {0.74292779, 0.945811093}, //
+
51497 {0.741584539, 0.946293831}, //
+
51498 {0.740073442, 0.946482718}, //
+
51499 {0.738394439, 0.946377754}, //
+
51500 {0.73654753, 0.945978999}, //
+
51501 {0.734532714, 0.945286393}, //
+
51502 {0.732349992, 0.944299996}, //
+
51503 {0.730052471, 0.943104327}, //
+
51504 {0.727670968, 0.941783965}, //
+
51505 {0.725205541, 0.94033891}, //
+
51506 {0.72265619, 0.938769162}, //
+
51507 {0.720022857, 0.937074721}, //
+
51508 {0.717305541, 0.935255527}, //
+
51509 {0.714504302, 0.933311701}, //
+
51510 {0.711619139, 0.931243181}, //
+
51511 {0.708649993, 0.929050028}, //
+
51512 {0.702575326, 0.925408661}, //
+
51513 {0.696417928, 0.922017872}, //
+
51514 {0.690177798, 0.91887778}, //
+
51515 {0.683854938, 0.915988266}, //
+
51516 {0.677449405, 0.91334939}, //
+
51517 {0.670961082, 0.910961092}, //
+
51518 {0.664390147, 0.908823431}, //
+
51519 {0.657736421, 0.906936407}, //
+
51520 {0.651000023, 0.905300021}, //
+
51521 {0.647316694, 0.903809905}, //
+
51522 {0.64380002, 0.902361751}, //
+
51523 {0.640450001, 0.900955558}, //
+
51524 {0.637266695, 0.899591386}, //
+
51525 {0.634249985, 0.898269117}, //
+
51526 {0.631399989, 0.896988869}, //
+
51527 {0.628716648, 0.895750642}, //
+
51528 {0.62620002, 0.894554317}, //
+
51529 {0.623849988, 0.893400013}, //
+
51530 {0.621594429, 0.892214179}, //
+
51531 {0.61933887, 0.890901208}, //
+
51532 {0.617083311, 0.8894611}, //
+
51533 {0.614827752, 0.887893856}, //
+
51534 {0.612572193, 0.886199355}, //
+
51535 {0.610316694, 0.884377778}, //
+
51536 {0.608061135, 0.882429004}, //
+
51537 {0.605805576, 0.880353093}, //
+
51538 {0.603550017, 0.878149986}, //
+
51539 {0.601241946, 0.876691341}, //
+
51540 {0.598851264, 0.875315428}, //
+
51541 {0.59637779, 0.874022245}, //
+
51542 {0.593821585, 0.872811735}, //
+
51543 {0.591182709, 0.871683955}, //
+
51544 {0.588461101, 0.870638907}, //
+
51545 {0.585656762, 0.86967653}, //
+
51546 {0.582769752, 0.868796885}, //
+
51547 {0.57980001, 0.867999971}, //
+
51548 {0.577501833, 0.867286444}, //
+
51549 {0.575118542, 0.86665678}, //
+
51550 {0.572650015, 0.8661111}, //
+
51551 {0.570096314, 0.865649402}, //
+
51552 {0.567457378, 0.865271628}, //
+
51553 {0.564733326, 0.864977777}, //
+
51554 {0.5619241, 0.864767909}, //
+
51555 {0.559029639, 0.864641964}, //
+
51556 {0.556050003, 0.864600003}, //
+
51557 {0.552871585, 0.864641964}, //
+
51558 {0.549358666, 0.864767909}, //
+
51559 {0.545511127, 0.864977777}, //
+
51560 {0.541329026, 0.865271628}, //
+
51561 {0.536812365, 0.865649402}, //
+
51562 {0.531961083, 0.8661111}, //
+
51563 {0.526775301, 0.86665678}, //
+
51564 {0.521254957, 0.867286444}, //
+
51565 {0.515399992, 0.867999971}, //
+
51566 {0.513888896, 0.868041992}, //
+
51567 {0.512377799, 0.868167877}, //
+
51568 {0.510866642, 0.868377805}, //
+
51569 {0.509355545, 0.868671596}, //
+
51570 {0.507844448, 0.86904937}, //
+
51571 {0.506333351, 0.869511127}, //
+
51572 {0.504822195, 0.870056808}, //
+
51573 {0.503311098, 0.870686412}, //
+
51574 {0.501800001, 0.871399999}, //
+
51575 {0.500341356, 0.871399999}, //
+
51576 {0.49767223, 0.871399999}, //
+
51577 {0.496461719, 0.871399999}, //
+
51578 {0.491649985, 0.871399999}, //
+
51579 {0.490894437, 0.871399999}, //
+
51580 {0.488627791, 0.871399999}, //
+
51581 {0.484849989, 0.871399999}, //
+
51582 {0.484094441, 0.871420979}, //
+
51583 {0.483338892, 0.871483922}, //
+
51584 {0.482583344, 0.871588886}, //
+
51585 {0.481827766, 0.871735811}, //
+
51586 {0.481072217, 0.871924698}, //
+
51587 {0.480316669, 0.872155547}, //
+
51588 {0.47956112, 0.872428417}, //
+
51589 {0.478805542, 0.872743189}, //
+
51590 {0.478049994, 0.873099983}, //
+
51591 {0.477325916, 0.873456776}, //
+
51592 {0.476642579, 0.873771608}, //
+
51593 {0.476000011, 0.874044418}, //
+
51594 {0.475398153, 0.874275327}, //
+
51595 {0.474837035, 0.874464214}, //
+
51596 {0.474316657, 0.874611139}, //
+
51597 {0.473837048, 0.874716043}, //
+
51598 {0.473398149, 0.874778986}, //
+
51599 {0.47299999, 0.874800026}, //
+
51600 {0.472328395, 0.874800026}, //
+
51601 {0.472055554, 0.874800026}, //
+
51602 {0.471300006, 0.874800026}, //
+
51603 {0.471300006, 0.874800026}, //
+
51604 {0.471300006, 0.874800026}, //
+
51605 });
+
51606 polys.push_back({
+
51607 {4.43822384, 0.875670373}, //
+
51608 {4.43784618, 0.87679261}, //
+
51609 {4.43721676, 0.878166676}, //
+
51610 {4.43633509, 0.879792571}, //
+
51611 {4.43520164, 0.881670356}, //
+
51612 {4.43381643, 0.88380003}, //
+
51613 {4.43217945, 0.886181474}, //
+
51614 {4.4302907, 0.888814807}, //
+
51615 {4.42815018, 0.891700029}, //
+
51616 {4.42583084, 0.894700646}, //
+
51617 {4.42338467, 0.89765805}, //
+
51618 {4.42081118, 0.90057224}, //
+
51619 {4.41811037, 0.903443217}, //
+
51620 {4.41528273, 0.906270981}, //
+
51621 {4.41232777, 0.909055531}, //
+
51622 {4.40924549, 0.911796927}, //
+
51623 {4.40603638, 0.914495051}, //
+
51624 {4.40269995, 0.917150021}, //
+
51625 {4.39937401, 0.91968888}, //
+
51626 {4.39617395, 0.92201668}, //
+
51627 {4.39309978, 0.92413336}, //
+
51628 {4.39015198, 0.926038861}, //
+
51629 {4.38732958, 0.927733362}, //
+
51630 {4.38463354, 0.929216683}, //
+
51631 {4.38206291, 0.930488884}, //
+
51632 {4.37961864, 0.931550026}, //
+
51633 {4.37729979, 0.932399988}, //
+
51634 {4.37495995, 0.933827162}, //
+
51635 {4.37245083, 0.935086429}, //
+
51636 {4.36977243, 0.93617779}, //
+
51637 {4.36692476, 0.937101245}, //
+
51638 {4.36390781, 0.937856793}, //
+
51639 {4.36072206, 0.938444436}, //
+
51640 {4.35736752, 0.938864172}, //
+
51641 {4.35384321, 0.939116061}, //
+
51642 {4.35015011, 0.939199984}, //
+
51643 {4.34634209, 0.939283967}, //
+
51644 {4.3424511, 0.939535797}, //
+
51645 {4.33847761, 0.939955533}, //
+
51646 {4.33442163, 0.940543234}, //
+
51647 {4.33028269, 0.941298783}, //
+
51648 {4.32606125, 0.942222238}, //
+
51649 {4.32175684, 0.943313599}, //
+
51650 {4.31736994, 0.944572866}, //
+
51651 {4.31290007, 0.94599998}, //
+
51652 {4.31065416, 0.946796894}, //
+
51653 {4.3084507, 0.947676539}, //
+
51654 {4.30628872, 0.948638916}, //
+
51655 {4.30416918, 0.949683964}, //
+
51656 {4.30209112, 0.950811744}, //
+
51657 {4.3000555, 0.952022195}, //
+
51658 {4.29806185, 0.953315437}, //
+
51659 {4.29610968, 0.95469135}, //
+
51660 {4.29419994, 0.956149995}, //
+
51661 {4.29238462, 0.957681477}, //
+
51662 {4.29069376, 0.959253728}, //
+
51663 {4.28912783, 0.96086669}, //
+
51664 {4.28768635, 0.962520361}, //
+
51665 {4.2863698, 0.964214802}, //
+
51666 {4.28517771, 0.965950012}, //
+
51667 {4.28411055, 0.967725933}, //
+
51668 {4.28316784, 0.969542563}, //
+
51669 {4.28235006, 0.971400023}, //
+
51670 {4.28100681, 0.974758029}, //
+
51671 {4.28046131, 0.9761222}, //
+
51672 {4.27899218, 0.979795039}, //
+
51673 {4.27895021, 0.979900002}, //
+
51674 {4.28058624, 0.979186416}, //
+
51675 {4.28247356, 0.978556812}, //
+
51676 {4.28461123, 0.978011131}, //
+
51677 {4.28699923, 0.977549374}, //
+
51678 {4.28963804, 0.9771716}, //
+
51679 {4.29252768, 0.976877749}, //
+
51680 {4.29566813, 0.976667881}, //
+
51681 {4.29905844, 0.976541996}, //
+
51682 {4.30270004, 0.976499975}, //
+
51683 {4.30646658, 0.976416051}, //
+
51684 {4.31023312, 0.976164222}, //
+
51685 {4.31400013, 0.975744426}, //
+
51686 {4.31776667, 0.975156784}, //
+
51687 {4.3215332, 0.974401236}, //
+
51688 {4.32530022, 0.973477781}, //
+
51689 {4.32906675, 0.97238642}, //
+
51690 {4.33283329, 0.971127152}, //
+
51691 {4.33659983, 0.969699979}, //
+
51692 {4.36714983, 0.969699979}, //
+
51693 {4.36787415, 0.971085191}, //
+
51694 {4.36855745, 0.972218513}, //
+
51695 {4.36920023, 0.973100007}, //
+
51696 {4.369802, 0.97372961}, //
+
51697 {4.37036276, 0.974107385}, //
+
51698 {4.37088346, 0.974233329}, //
+
51699 {4.37136316, 0.974107385}, //
+
51700 {4.37180185, 0.97372961}, //
+
51701 {4.37220001, 0.973100007}, //
+
51702 {4.37257767, 0.97238642}, //
+
51703 {4.37295532, 0.971756816}, //
+
51704 {4.37333345, 0.971211135}, //
+
51705 {4.37371111, 0.970749378}, //
+
51706 {4.37408876, 0.970371604}, //
+
51707 {4.3744669, 0.970077753}, //
+
51708 {4.37484455, 0.969867885}, //
+
51709 {4.37522221, 0.969742}, //
+
51710 {4.37559986, 0.969699979}, //
+
51711 {4.37599897, 0.969658017}, //
+
51712 {4.37643957, 0.969532073}, //
+
51713 {4.37692213, 0.969322205}, //
+
51714 {4.37744713, 0.969028413}, //
+
51715 {4.37801361, 0.968650639}, //
+
51716 {4.37862206, 0.968188882}, //
+
51717 {4.37927294, 0.967643201}, //
+
51718 {4.37996531, 0.967013597}, //
+
51719 {4.38070011, 0.966300011}, //
+
51720 {4.38145494, 0.965554953}, //
+
51721 {4.38220882, 0.964808643}, //
+
51722 {4.38296127, 0.964061081}, //
+
51723 {4.38371229, 0.963312328}, //
+
51724 {4.38446236, 0.962562323}, //
+
51725 {4.38521099, 0.961811125}, //
+
51726 {4.38595867, 0.961058617}, //
+
51727 {4.38670492, 0.960304916}, //
+
51728 {4.38745022, 0.959550023}, //
+
51729 {4.38820553, 0.958794415}, //
+
51730 {4.38971663, 0.957283318}, //
+
51731 {4.39122772, 0.955772221}, //
+
51732 {4.39198351, 0.955016673}, //
+
51733 {4.39273882, 0.954261124}, //
+
51734 {4.39424992, 0.952750027}, //
+
51735 {4.39938068, 0.949025333}, //
+
51736 {4.40421772, 0.945384562}, //
+
51737 {4.40876102, 0.941827774}, //
+
51738 {4.4130106, 0.938354909}, //
+
51739 {4.41696596, 0.934966028}, //
+
51740 {4.42062759, 0.931661129}, //
+
51741 {4.42399549, 0.928440094}, //
+
51742 {4.42706966, 0.925303102}, //
+
51743 {4.4298501, 0.922249973}, //
+
51744 {4.43233681, 0.919406176}, //
+
51745 {4.43453169, 0.916896939}, //
+
51746 {4.43804264, 0.91288209}, //
+
51747 {4.43935919, 0.911376536}, //
+
51748 {4.44038343, 0.910205543}, //
+
51749 {4.4411149, 0.909369111}, //
+
51750 {4.44155359, 0.9088673}, //
+
51751 {4.44169998, 0.908699989}, //
+
51752 {4.44169998, 0.908532083}, //
+
51753 {4.44169998, 0.908322215}, //
+
51754 {4.44169998, 0.907188892}, //
+
51755 {4.44169998, 0.906643212}, //
+
51756 {4.44169998, 0.906013608}, //
+
51757 {4.44169998, 0.903704941}, //
+
51758 {4.44169998, 0.902844429}, //
+
51759 {4.44169998, 0.900011122}, //
+
51760 {4.44169998, 0.898982704}, //
+
51761 {4.44169998, 0.897912323}, //
+
51762 {4.44169998, 0.896799982}, //
+
51763 {4.441679, 0.895656168}, //
+
51764 {4.44161606, 0.894469142}, //
+
51765 {4.44151115, 0.893238902}, //
+
51766 {4.44136429, 0.891965449}, //
+
51767 {4.44117546, 0.890648782}, //
+
51768 {4.44094467, 0.889288902}, //
+
51769 {4.44067144, 0.887885809}, //
+
51770 {4.44035673, 0.886439502}, //
+
51771 {4.44000006, 0.884949982}, //
+
51772 {4.43965387, 0.883480847}, //
+
51773 {4.43934822, 0.882095695}, //
+
51774 {4.4390831, 0.880794466}, //
+
51775 {4.43885946, 0.87957716}, //
+
51776 {4.43867588, 0.878443837}, //
+
51777 {4.43853331, 0.877394438}, //
+
51778 {4.43843126, 0.876429021}, //
+
51779 {4.43837023, 0.875547528}, //
+
51780 {4.4383502, 0.874750018}, //
+
51781 {4.4383502, 0.874800026}, //
+
51782 });
+
51783 polys.push_back({
+
51784 {3.39813447, 0.848730266}, //
+
51785 {3.39882708, 0.853126526}, //
+
51786 {3.39947772, 0.857438862}, //
+
51787 {3.4000864, 0.861667275}, //
+
51788 {3.40065312, 0.865811706}, //
+
51789 {3.40117788, 0.869872212}, //
+
51790 {3.40166044, 0.873848736}, //
+
51791 {3.40210128, 0.877741337}, //
+
51792 {3.40249991, 0.881550014}, //
+
51793 {3.40281487, 0.885191381}, //
+
51794 {3.40300369, 0.88858211}, //
+
51795 {3.40306664, 0.891722202}, //
+
51796 {3.40300369, 0.894611716}, //
+
51797 {3.40281487, 0.897250593}, //
+
51798 {3.40249991, 0.899638891}, //
+
51799 {3.40205932, 0.901776552}, //
+
51800 {3.4014926, 0.903663576}, //
+
51801 {3.40079999, 0.905300021}, //
+
51802 {3.39996052, 0.906013608}, //
+
51803 {3.3989532, 0.906643212}, //
+
51804 {3.3977778, 0.907188892}, //
+
51805 {3.39643455, 0.90765059}, //
+
51806 {3.39492345, 0.908028424}, //
+
51807 {3.3932445, 0.908322215}, //
+
51808 {3.39139748, 0.908532083}, //
+
51809 {3.3893826, 0.908658028}, //
+
51810 {3.38720012, 0.908699989}, //
+
51811 {3.38494372, 0.908658028}, //
+
51812 {3.38268638, 0.908532083}, //
+
51813 {3.38042784, 0.908322215}, //
+
51814 {3.37816787, 0.908028424}, //
+
51815 {3.37590671, 0.90765059}, //
+
51816 {3.37364435, 0.907188892}, //
+
51817 {3.37138081, 0.906643212}, //
+
51818 {3.36911607, 0.906013608}, //
+
51819 {3.3668499, 0.905300021}, //
+
51820 {3.36467838, 0.904586434}, //
+
51821 {3.36267471, 0.903956771}, //
+
51822 {3.36083889, 0.90341109}, //
+
51823 {3.35917091, 0.902949393}, //
+
51824 {3.35767102, 0.902571619}, //
+
51825 {3.35633898, 0.902277768}, //
+
51826 {3.35517478, 0.9020679}, //
+
51827 {3.35417843, 0.901941955}, //
+
51828 {3.35334992, 0.901899993}, //
+
51829 {3.35248947, 0.901165426}, //
+
51830 {3.35141921, 0.90047282}, //
+
51831 {3.3501389, 0.899822235}, //
+
51832 {3.34864879, 0.899213552}, //
+
51833 {3.34694886, 0.898646891}, //
+
51834 {3.34503889, 0.898122251}, //
+
51835 {3.34291911, 0.897639513}, //
+
51836 {3.34058952, 0.897198737}, //
+
51837 {3.33804989, 0.896799982}, //
+
51838 {3.33547902, 0.896453679}, //
+
51839 {3.33303261, 0.896148145}, //
+
51840 {3.33071113, 0.895883322}, //
+
51841 {3.3285141, 0.895659268}, //
+
51842 {3.326442, 0.895475924}, //
+
51843 {3.32449436, 0.89533335}, //
+
51844 {3.32267165, 0.895231485}, //
+
51845 {3.3209734, 0.895170391}, //
+
51846 {3.31940007, 0.895150006}, //
+
51847 {3.31798339, 0.895150006}, //
+
51848 {3.31264997, 0.895150006}, //
+
51849 {3.31099248, 0.895170391}, //
+
51850 {3.30904269, 0.895231485}, //
+
51851 {3.30679989, 0.89533335}, //
+
51852 {3.30426478, 0.895475924}, //
+
51853 {3.30143714, 0.895659268}, //
+
51854 {3.29831672, 0.895883322}, //
+
51855 {3.29490376, 0.896148145}, //
+
51856 {3.29119825, 0.896453679}, //
+
51857 {3.28719997, 0.896799982}, //
+
51858 {3.28301358, 0.897177756}, //
+
51859 {3.27874327, 0.89755553}, //
+
51860 {3.27438879, 0.897933304}, //
+
51861 {3.26995063, 0.898311138}, //
+
51862 {3.2654283, 0.898688912}, //
+
51863 {3.2608223, 0.899066687}, //
+
51864 {3.25613213, 0.899444461}, //
+
51865 {3.25135803, 0.899822235}, //
+
51866 {3.24650002, 0.900200009}, //
+
51867 {3.24171472, 0.900640726}, //
+
51868 {3.23713708, 0.901207387}, //
+
51869 {3.23276663, 0.901899993}, //
+
51870 {3.2286036, 0.902718544}, //
+
51871 {3.22464824, 0.90366298}, //
+
51872 {3.22090006, 0.90473336}, //
+
51873 {3.2173593, 0.905929625}, //
+
51874 {3.21402597, 0.907251835}, //
+
51875 {3.21090007, 0.908699989}, //
+
51876 {3.20868587, 0.90872097}, //
+
51877 {3.20655441, 0.908783972}, //
+
51878 {3.20450544, 0.908888876}, //
+
51879 {3.20253944, 0.909035802}, //
+
51880 {3.20065618, 0.909224689}, //
+
51881 {3.19885564, 0.909455538}, //
+
51882 {3.19713759, 0.909728408}, //
+
51883 {3.19550252, 0.91004324}, //
+
51884 {3.19394994, 0.910399973}, //
+
51885 {3.19249129, 0.910777152}, //
+
51886 {3.19111538, 0.911153078}, //
+
51887 {3.1898222, 0.911527753}, //
+
51888 {3.18861175, 0.911901236}, //
+
51889 {3.18748403, 0.912273467}, //
+
51890 {3.1864388, 0.912644446}, //
+
51891 {3.18547654, 0.913014174}, //
+
51892 {3.18459702, 0.913382709}, //
+
51893 {3.18379998, 0.913749993}, //
+
51894 {3.1830864, 0.914148748}, //
+
51895 {3.18245673, 0.914589524}, //
+
51896 {3.18191123, 0.915072203}, //
+
51897 {3.18144941, 0.915596902}, //
+
51898 {3.18107152, 0.916163564}, //
+
51899 {3.18077779, 0.916772246}, //
+
51900 {3.18056798, 0.917422831}, //
+
51901 {3.18044186, 0.918115437}, //
+
51902 {3.18039989, 0.918850005}, //
+
51903 {3.17700005, 0.918850005}, //
+
51904 {3.17623401, 0.919563591}, //
+
51905 {3.17542458, 0.920193195}, //
+
51906 {3.17457223, 0.920738876}, //
+
51907 {3.17367649, 0.921200633}, //
+
51908 {3.1727376, 0.921578407}, //
+
51909 {3.17175555, 0.921872199}, //
+
51910 {3.17073035, 0.922082126}, //
+
51911 {3.16966176, 0.922208011}, //
+
51912 {3.16855001, 0.922249973}, //
+
51913 {3.16739559, 0.922291994}, //
+
51914 {3.16619945, 0.922417879}, //
+
51915 {3.1649611, 0.922627807}, //
+
51916 {3.16368079, 0.922921598}, //
+
51917 {3.16235876, 0.923299372}, //
+
51918 {3.16099453, 0.923761129}, //
+
51919 {3.15958834, 0.92430681}, //
+
51920 {3.15814018, 0.924936414}, //
+
51921 {3.15665007, 0.925650001}, //
+
51922 {3.15443587, 0.925691962}, //
+
51923 {3.15230441, 0.925817907}, //
+
51924 {3.15025544, 0.926027775}, //
+
51925 {3.14828944, 0.926321626}, //
+
51926 {3.14640617, 0.9266994}, //
+
51927 {3.14460564, 0.927161098}, //
+
51928 {3.14288759, 0.927706778}, //
+
51929 {3.14125252, 0.928336442}, //
+
51930 {3.13969994, 0.929050028}, //
+
51931 {3.1389339, 0.929070354}, //
+
51932 {3.1381247, 0.929131508}, //
+
51933 {3.13727212, 0.929233313}, //
+
51934 {3.13637662, 0.929375947}, //
+
51935 {3.13543773, 0.929559231}, //
+
51936 {3.13445544, 0.929783344}, //
+
51937 {3.13343024, 0.930048168}, //
+
51938 {3.13236165, 0.930353701}, //
+
51939 {3.1312499, 0.930700004}, //
+
51940 {3.12898326, 0.931455553}, //
+
51941 {3.12785006, 0.931833327}, //
+
51942 {3.12331676, 0.933344424}, //
+
51943 {3.12218332, 0.933722198}, //
+
51944 {3.12104988, 0.934099972}, //
+
51945 {3.11992717, 0.934477806}, //
+
51946 {3.11880302, 0.93485558}, //
+
51947 {3.11767769, 0.935233355}, //
+
51948 {3.11655116, 0.935611129}, //
+
51949 {3.11542344, 0.935988903}, //
+
51950 {3.11429453, 0.936366677}, //
+
51951 {3.11316419, 0.936744452}, //
+
51952 {3.11203265, 0.937122226}, //
+
51953 {3.11089993, 0.9375}, //
+
51954 {3.10982966, 0.937856793}, //
+
51955 {3.10888529, 0.938171625}, //
+
51956 {3.10641313, 0.938995659}, //
+
51957 {3.10641789, 0.939024687}, //
+
51958 {3.10738134, 0.943928659}, //
+
51959 {3.11599994, 0.969699979}, //
+
51960 {3.11604142, 0.969658017}, //
+
51961 {3.11802649, 0.967643201}, //
+
51962 {3.11864686, 0.967013597}, //
+
51963 {3.11934996, 0.966300011}, //
+
51964 {3.12014747, 0.965533972}, //
+
51965 {3.1210289, 0.96472472}, //
+
51966 {3.1219945, 0.963872194}, //
+
51967 {3.12304378, 0.962976515}, //
+
51968 {3.12417722, 0.962037683}, //
+
51969 {3.12539434, 0.961055577}, //
+
51970 {3.12669563, 0.960030258}, //
+
51971 {3.12808084, 0.958961725}, //
+
51972 {3.12954998, 0.957849979}, //
+
51973 {3.13103962, 0.956716657}, //
+
51974 {3.13248587, 0.955583334}, //
+
51975 {3.13388896, 0.954450011}, //
+
51976 {3.13524866, 0.953316689}, //
+
51977 {3.13656545, 0.952183306}, //
+
51978 {3.13783884, 0.951049984}, //
+
51979 {3.13906908, 0.949916661}, //
+
51980 {3.14025617, 0.948783338}, //
+
51981 {3.1414001, 0.947650015}, //
+
51982 {3.14255428, 0.946590126}, //
+
51983 {3.14375067, 0.945654929}, //
+
51984 {3.14498878, 0.944844425}, //
+
51985 {3.14626908, 0.944158614}, //
+
51986 {3.14759135, 0.943597555}, //
+
51987 {3.14895558, 0.94316113}, //
+
51988 {3.15036178, 0.942849398}, //
+
51989 {3.15180993, 0.942662358}, //
+
51990 {3.15330005, 0.942600012}, //
+
51991 {3.15475869, 0.941886425}, //
+
51992 {3.15613461, 0.941256762}, //
+
51993 {3.15742779, 0.940711141}, //
+
51994 {3.15863824, 0.940249383}, //
+
51995 {3.15976596, 0.939871609}, //
+
51996 {3.16081119, 0.939577758}, //
+
51997 {3.16177344, 0.93936789}, //
+
51998 {3.16265297, 0.939241946}, //
+
51999 {3.16345, 0.939199984}, //
+
52000 {3.16416359, 0.939179003}, //
+
52001 {3.16479325, 0.939116061}, //
+
52002 {3.16533899, 0.939011097}, //
+
52003 {3.16580057, 0.938864172}, //
+
52004 {3.16617846, 0.938675284}, //
+
52005 {3.1664722, 0.938444436}, //
+
52006 {3.166682, 0.938171625}, //
+
52007 {3.16680813, 0.937856793}, //
+
52008 {3.16685009, 0.9375}, //
+
52009 {3.16685009, 0.936660469}, //
+
52010 {3.16685009, 0.93617779}, //
+
52011 {3.16685009, 0.93565309}, //
+
52012 {3.16685009, 0.933134556}, //
+
52013 {3.16685009, 0.932399988}, //
+
52014 {3.16689205, 0.93165493}, //
+
52015 {3.16701794, 0.93090862}, //
+
52016 {3.16722775, 0.930161119}, //
+
52017 {3.16752172, 0.929412365}, //
+
52018 {3.16789937, 0.92866236}, //
+
52019 {3.16836119, 0.927911103}, //
+
52020 {3.16890669, 0.927158654}, //
+
52021 {3.16953635, 0.926404953}, //
+
52022 {3.17024994, 0.925650001}, //
+
52023 {3.17100501, 0.924936414}, //
+
52024 {3.17175865, 0.92430681}, //
+
52025 {3.1725111, 0.923761129}, //
+
52026 {3.17326236, 0.923299372}, //
+
52027 {3.17401242, 0.922921598}, //
+
52028 {3.17476106, 0.922627807}, //
+
52029 {3.17550874, 0.922417879}, //
+
52030 {3.17625499, 0.922291994}, //
+
52031 {3.17700005, 0.922249973}, //
+
52032 {3.17775559, 0.922291994}, //
+
52033 {3.17851114, 0.922417879}, //
+
52034 {3.17926669, 0.922627807}, //
+
52035 {3.18002224, 0.922921598}, //
+
52036 {3.18077779, 0.923299372}, //
+
52037 {3.18153334, 0.923761129}, //
+
52038 {3.18228889, 0.92430681}, //
+
52039 {3.18304443, 0.924936414}, //
+
52040 {3.18379998, 0.925650001}, //
+
52041 {3.18455553, 0.925691962}, //
+
52042 {3.18531108, 0.925817907}, //
+
52043 {3.18606663, 0.926027775}, //
+
52044 {3.18682218, 0.926321626}, //
+
52045 {3.18757772, 0.9266994}, //
+
52046 {3.18833327, 0.927161098}, //
+
52047 {3.18908882, 0.927706778}, //
+
52048 {3.18984437, 0.928336442}, //
+
52049 {3.19059992, 0.929050028}, //
+
52050 {3.19904995, 0.929050028}, //
+
52051 {3.20020366, 0.929008007}, //
+
52052 {3.20139813, 0.928882122}, //
+
52053 {3.20263338, 0.928672194}, //
+
52054 {3.20390916, 0.928378403}, //
+
52055 {3.20522594, 0.928000629}, //
+
52056 {3.20658326, 0.927538872}, //
+
52057 {3.20798159, 0.926993191}, //
+
52058 {3.20942044, 0.926363587}, //
+
52059 {3.21090007, 0.925650001}, //
+
52060 {3.21245313, 0.924936414}, //
+
52061 {3.21409011, 0.92430681}, //
+
52062 {3.21581101, 0.923761129}, //
+
52063 {3.21761608, 0.923299372}, //
+
52064 {3.21950483, 0.922921598}, //
+
52065 {3.22147775, 0.922627807}, //
+
52066 {3.22353458, 0.922417879}, //
+
52067 {3.22567534, 0.922291994}, //
+
52068 {3.22790003, 0.922249973}, //
+
52069 {3.23467588, 0.920990765}, //
+
52070 {3.24295926, 0.920235157}, //
+
52071 {3.25274992, 0.919983327}, //
+
52072 {3.2640481, 0.920235157}, //
+
52073 {3.2768538, 0.920990765}, //
+
52074 {3.29116678, 0.922249973}, //
+
52075 {3.30698705, 0.924012959}, //
+
52076 {3.32431483, 0.926279604}, //
+
52077 {3.3431499, 0.929050028}, //
+
52078 {3.34654999, 0.929050028}, //
+
52079 {3.34951925, 0.929753065}, //
+
52080 {3.35240436, 0.93037343}, //
+
52081 {3.35520554, 0.930911124}, //
+
52082 {3.35792279, 0.931366026}, //
+
52083 {3.36055613, 0.931738257}, //
+
52084 {3.36310554, 0.932027757}, //
+
52085 {3.36557102, 0.932234585}, //
+
52086 {3.36795259, 0.932358623}, //
+
52087 {3.37024999, 0.932399988}, //
+
52088 {3.38000917, 0.932399988}, //
+
52089 {3.38555002, 0.932399988}, //
+
52090 {3.38664079, 0.932379007}, //
+
52091 {3.3876462, 0.932316065}, //
+
52092 {3.38856673, 0.932211101}, //
+
52093 {3.38940191, 0.932064176}, //
+
52094 {3.39015174, 0.931875288}, //
+
52095 {3.39081669, 0.93164444}, //
+
52096 {3.39139628, 0.931371629}, //
+
52097 {3.39189076, 0.931056798}, //
+
52098 {3.39229989, 0.930700004}, //
+
52099 {3.39269876, 0.930353701}, //
+
52100 {3.3931396, 0.930048168}, //
+
52101 {3.39362216, 0.929783344}, //
+
52102 {3.39414692, 0.929559231}, //
+
52103 {3.39471364, 0.929375947}, //
+
52104 {3.39532232, 0.929233313}, //
+
52105 {3.39597273, 0.929131508}, //
+
52106 {3.39666533, 0.929070354}, //
+
52107 {3.3973999, 0.929050028}, //
+
52108 {3.39744186, 0.928315461}, //
+
52109 {3.39756799, 0.927622855}, //
+
52110 {3.3977778, 0.92697221}, //
+
52111 {3.39807153, 0.926363587}, //
+
52112 {3.39844942, 0.925796926}, //
+
52113 {3.398911, 0.925272226}, //
+
52114 {3.39945674, 0.924789488}, //
+
52115 {3.4000864, 0.924348772}, //
+
52116 {3.40079999, 0.923950016}, //
+
52117 {3.40155554, 0.923551261}, //
+
52118 {3.40231109, 0.923110485}, //
+
52119 {3.40306664, 0.922627807}, //
+
52120 {3.40382218, 0.922103107}, //
+
52121 {3.40457773, 0.921536446}, //
+
52122 {3.40533328, 0.920927763}, //
+
52123 {3.40608883, 0.920277178}, //
+
52124 {3.40684438, 0.919584572}, //
+
52125 {3.40759993, 0.918850005}, //
+
52126 {3.40977216, 0.918094456}, //
+
52127 {3.41177773, 0.917338908}, //
+
52128 {3.41361666, 0.916583359}, //
+
52129 {3.41528893, 0.915827751}, //
+
52130 {3.41679454, 0.915072203}, //
+
52131 {3.41813326, 0.914316654}, //
+
52132 {3.41930556, 0.913561106}, //
+
52133 {3.42031121, 0.912805557}, //
+
52134 {3.42114997, 0.912050009}, //
+
52135 {3.42184258, 0.91128397}, //
+
52136 {3.4224093, 0.910474718}, //
+
52137 {3.42284989, 0.909622252}, //
+
52138 {3.42316484, 0.908726573}, //
+
52139 {3.42335367, 0.907787681}, //
+
52140 {3.42341661, 0.906805575}, //
+
52141 {3.42335367, 0.905780256}, //
+
52142 {3.42316484, 0.904711723}, //
+
52143 {3.42284989, 0.903599977}, //
+
52144 {3.42245126, 0.902529657}, //
+
52145 {3.42201042, 0.901585162}, //
+
52146 {3.42152786, 0.900766671}, //
+
52147 {3.4210031, 0.900074065}, //
+
52148 {3.42043638, 0.899507403}, //
+
52149 {3.4198277, 0.899066687}, //
+
52150 {3.41917706, 0.898751855}, //
+
52151 {3.41848445, 0.898562968}, //
+
52152 {3.41774988, 0.898500025}, //
+
52153 {3.41774988, 0.897796929}, //
+
52154 {3.41774988, 0.897176564}, //
+
52155 {3.41774988, 0.89663887}, //
+
52156 {3.41774988, 0.896183968}, //
+
52157 {3.41774988, 0.895811737}, //
+
52158 {3.41774988, 0.895150006}, //
+
52159 {3.4177289, 0.895066023}, //
+
52160 {3.41766596, 0.894814193}, //
+
52161 {3.41741419, 0.893806815}, //
+
52162 {3.41722536, 0.893051207}, //
+
52163 {3.41699433, 0.892127752}, //
+
52164 {3.41672158, 0.891036391}, //
+
52165 {3.41640687, 0.889777184}, //
+
52166 {3.41604996, 0.88835001}, //
+
52167 {3.41565132, 0.886839509}, //
+
52168 {3.41521049, 0.88533026}, //
+
52169 {3.41472769, 0.883822203}, //
+
52170 {3.41420317, 0.882315457}, //
+
52171 {3.41363645, 0.880809903}, //
+
52172 {3.41302776, 0.879305542}, //
+
52173 {3.41237712, 0.877802491}, //
+
52174 {3.41168451, 0.876300633}, //
+
52175 {3.41094995, 0.874800026}, //
+
52176 {3.4094913, 0.872554302}, //
+
52177 {3.40811539, 0.870350599}, //
+
52178 {3.4068222, 0.868188918}, //
+
52179 {3.40561175, 0.866069138}, //
+
52180 {3.40448403, 0.86399138}, //
+
52181 {3.40343881, 0.861955583}, //
+
52182 {3.40247655, 0.859961748}, //
+
52183 {3.40159702, 0.858009875}, //
+
52184 {3.40079999, 0.856100023}, //
+
52185 {3.4000864, 0.854284585}, //
+
52186 {3.39945674, 0.852593839}, //
+
52187 {3.398911, 0.851027787}, //
+
52188 {3.39844942, 0.849586427}, //
+
52189 {3.39807153, 0.848269761}, //
+
52190 {3.3980341, 0.848117888}, //
+
52191 });
+
52192 polys.push_back({
+
52193 {0.984297514, 0.781570971}, //
+
52194 {0.983861089, 0.781738877}, //
+
52195 {0.983549356, 0.78207469}, //
+
52196 {0.983362317, 0.782578409}, //
+
52197 {0.983299971, 0.783249974}, //
+
52198 {0.984024048, 0.784067929}, //
+
52199 {0.984707415, 0.785010517}, //
+
52200 {0.985350013, 0.786077797}, //
+
52201 {0.985951841, 0.787269771}, //
+
52202 {0.986512959, 0.788586438}, //
+
52203 {0.987033308, 0.790027797}, //
+
52204 {0.987512946, 0.79159385}, //
+
52205 {0.987951875, 0.793284595}, //
+
52206 {0.988349974, 0.795099974}, //
+
52207 {0.988748789, 0.79700923}, //
+
52208 {0.989189506, 0.798959255}, //
+
52209 {0.989672244, 0.800949991}, //
+
52210 {0.990196943, 0.802981496}, //
+
52211 {0.990763605, 0.805053711}, //
+
52212 {0.991372228, 0.807166696}, //
+
52213 {0.992022812, 0.80932039}, //
+
52214 {0.992715418, 0.811514795}, //
+
52215 {0.993449986, 0.813750029}, //
+
52216 {0.994205534, 0.815964222}, //
+
52217 {0.994961083, 0.818095684}, //
+
52218 {0.995716691, 0.820144415}, //
+
52219 {0.996472239, 0.822110474}, //
+
52220 {0.997227788, 0.823993802}, //
+
52221 {0.997983336, 0.825794458}, //
+
52222 {0.998738885, 0.827512324}, //
+
52223 {0.999494433, 0.829147518}, //
+
52224 {1.00024998, 0.83069998}, //
+
52225 {1.00096357, 0.832127154}, //
+
52226 {1.00159323, 0.833386421}, //
+
52227 {1.00213885, 0.834477782}, //
+
52228 {1.00260067, 0.835401237}, //
+
52229 {1.00327218, 0.836744428}, //
+
52230 {1.0034821, 0.837164223}, //
+
52231 {1.00364995, 0.837499976}, //
+
52232 {1.00449944, 0.837541342}, //
+
52233 {1.00555861, 0.837665439}, //
+
52234 {1.00682783, 0.837872207}, //
+
52235 {1.00830674, 0.838161707}, //
+
52236 {1.0099957, 0.838533938}, //
+
52237 {1.01189446, 0.8389889}, //
+
52238 {1.01400304, 0.839526534}, //
+
52239 {1.01632166, 0.840146899}, //
+
52240 {1.01884997, 0.840849996}, //
+
52241 {1.02155674, 0.841647506}, //
+
52242 {1.02438831, 0.842528999}, //
+
52243 {1.02734447, 0.843494415}, //
+
52244 {1.03042531, 0.844543815}, //
+
52245 {1.03363085, 0.845677137}, //
+
52246 {1.03696108, 0.846894443}, //
+
52247 {1.040416, 0.848195672}, //
+
52248 {1.04399574, 0.849580884}, //
+
52249 {1.04770005, 0.851050019}, //
+
52250 {1.05134141, 0.851805568}, //
+
52251 {1.05473208, 0.852561116}, //
+
52252 {1.05787218, 0.853316665}, //
+
52253 {1.06076169, 0.854072213}, //
+
52254 {1.06340063, 0.854827762}, //
+
52255 {1.06578887, 0.85558331}, //
+
52256 {1.06792653, 0.856338918}, //
+
52257 {1.06981361, 0.857094467}, //
+
52258 {1.07145, 0.857850015}, //
+
52259 {1.07224691, 0.857891381}, //
+
52260 {1.07312655, 0.858015418}, //
+
52261 {1.07408893, 0.858222246}, //
+
52262 {1.07513392, 0.858511746}, //
+
52263 {1.07626176, 0.858883977}, //
+
52264 {1.07747221, 0.85933888}, //
+
52265 {1.07876539, 0.859876513}, //
+
52266 {1.08014131, 0.860496938}, //
+
52267 {1.08159995, 0.861199975}, //
+
52268 {1.08708704, 0.862711132}, //
+
52269 {1.09299254, 0.864222229}, //
+
52270 {1.09931672, 0.865733325}, //
+
52271 {1.10605931, 0.867244422}, //
+
52272 {1.11322033, 0.868755579}, //
+
52273 {1.12080002, 0.870266676}, //
+
52274 {1.12879813, 0.871777773}, //
+
52275 {1.13721478, 0.87328887}, //
+
52276 {1.14604998, 0.874800026}, //
+
52277 {1.15341604, 0.875545084}, //
+
52278 {1.16044748, 0.876291335}, //
+
52279 {1.16714442, 0.877038896}, //
+
52280 {1.17350674, 0.87778765}, //
+
52281 {1.17953455, 0.878537655}, //
+
52282 {1.18522775, 0.879288912}, //
+
52283 {1.19058645, 0.880041361}, //
+
52284 {1.19561052, 0.880795062}, //
+
52285 {1.20029998, 0.881550014}, //
+
52286 {1.21159315, 0.881550014}, //
+
52287 {1.21611917, 0.881550014}, //
+
52288 {1.21838391, 0.881550014}, //
+
52289 {1.22064996, 0.881550014}, //
+
52290 {1.22217095, 0.882998168}, //
+
52291 {1.2237339, 0.884320378}, //
+
52292 {1.22533894, 0.885516644}, //
+
52293 {1.22698581, 0.886587024}, //
+
52294 {1.22867465, 0.887531459}, //
+
52295 {1.23040557, 0.88835001}, //
+
52296 {1.23217845, 0.889042616}, //
+
52297 {1.23399317, 0.889609277}, //
+
52298 {1.23584998, 0.890049994}, //
+
52299 {1.23771727, 0.890448153}, //
+
52300 {1.23954141, 0.890887022}, //
+
52301 {1.24132228, 0.891366661}, //
+
52302 {1.24305987, 0.891887009}, //
+
52303 {1.24475431, 0.892448127}, //
+
52304 {1.2464056, 0.893050015}, //
+
52305 {1.24801362, 0.893692613}, //
+
52306 {1.24957836, 0.89437592}, //
+
52307 {1.25109994, 0.895099998}, //
+
52308 {1.25256908, 0.895855546}, //
+
52309 {1.25395429, 0.896611094}, //
+
52310 {1.25525558, 0.897366643}, //
+
52311 {1.25647283, 0.898122251}, //
+
52312 {1.25760615, 0.8988778}, //
+
52313 {1.25865555, 0.899633348}, //
+
52314 {1.25962102, 0.900388896}, //
+
52315 {1.26050246, 0.901144445}, //
+
52316 {1.26129997, 0.901899993}, //
+
52317 {1.26201355, 0.90261358}, //
+
52318 {1.26264322, 0.903243184}, //
+
52319 {1.26318884, 0.903788865}, //
+
52320 {1.26365066, 0.904250622}, //
+
52321 {1.26402843, 0.904628396}, //
+
52322 {1.26432228, 0.904922247}, //
+
52323 {1.26453209, 0.905132115}, //
+
52324 {1.26465797, 0.905258}, //
+
52325 {1.26470006, 0.905300021}, //
+
52326 {1.26810002, 0.874800026}, //
+
52327 {1.26810002, 0.861199975}, //
+
52328 {1.26730251, 0.863319755}, //
+
52329 {1.26642096, 0.865145683}, //
+
52330 {1.2654556, 0.866677761}, //
+
52331 {1.2644062, 0.867916048}, //
+
52332 {1.26327288, 0.868860483}, //
+
52333 {1.26205552, 0.869511127}, //
+
52334 {1.26075435, 0.869867921}, //
+
52335 {1.25936913, 0.869930863}, //
+
52336 {1.2579, 0.869700015}, //
+
52337 {1.25635743, 0.86930126}, //
+
52338 {1.25472963, 0.868860483}, //
+
52339 {1.25301671, 0.868377805}, //
+
52340 {1.25121856, 0.867853105}, //
+
52341 {1.24933517, 0.867286444}, //
+
52342 {1.24736667, 0.866677761}, //
+
52343 {1.24531293, 0.866027176}, //
+
52344 {1.24317408, 0.86533457}, //
+
52345 {1.24094999, 0.864600003}, //
+
52346 {1.23940742, 0.86384505}, //
+
52347 {1.23777962, 0.86309135}, //
+
52348 {1.2360667, 0.862338901}, //
+
52349 {1.23426855, 0.861587644}, //
+
52350 {1.23238516, 0.860837638}, //
+
52351 {1.23041666, 0.860088885}, //
+
52352 {1.22836292, 0.859341383}, //
+
52353 {1.22622406, 0.858595073}, //
+
52354 {1.22399998, 0.857850015}, //
+
52355 {1.21262717, 0.857850015}, //
+
52356 {1.20029998, 0.857850015}, //
+
52357 {1.19878888, 0.858553112}, //
+
52358 {1.19727778, 0.859173477}, //
+
52359 {1.19576669, 0.859711111}, //
+
52360 {1.19425559, 0.860166073}, //
+
52361 {1.19274449, 0.860538244}, //
+
52362 {1.19123328, 0.860827804}, //
+
52363 {1.18972218, 0.861034572}, //
+
52364 {1.18821108, 0.861158669}, //
+
52365 {1.18669999, 0.861199975}, //
+
52366 {1.18352962, 0.861199975}, //
+
52367 {1.1818167, 0.861199975}, //
+
52368 {1.18001854, 0.861199975}, //
+
52369 {1.16974998, 0.861199975}, //
+
52370 {1.166592, 0.859699368}, //
+
52371 {1.16314018, 0.85819751}, //
+
52372 {1.1593945, 0.85669446}, //
+
52373 {1.15535498, 0.855190098}, //
+
52374 {1.1510216, 0.853684545}, //
+
52375 {1.14639449, 0.852177799}, //
+
52376 {1.14147341, 0.850669742}, //
+
52377 {1.1362586, 0.849160492}, //
+
52378 {1.13074994, 0.847649992}, //
+
52379 {1.12514687, 0.846128404}, //
+
52380 {1.11962652, 0.844563603}, //
+
52381 {1.11418891, 0.84295553}, //
+
52382 {1.10883391, 0.841304302}, //
+
52383 {1.10356176, 0.839609861}, //
+
52384 {1.09837222, 0.837872207}, //
+
52385 {1.09326541, 0.83609134}, //
+
52386 {1.08824134, 0.834267259}, //
+
52387 {1.08329999, 0.832400024}, //
+
52388 {1.07858884, 0.830574691}, //
+
52389 {1.07425559, 0.828876555}, //
+
52390 {1.07029998, 0.827305555}, //
+
52391 {1.06672227, 0.825861752}, //
+
52392 {1.06352222, 0.824545085}, //
+
52393 {1.06070006, 0.823355556}, //
+
52394 {1.05825555, 0.822293222}, //
+
52395 {1.05618894, 0.821358025}, //
+
52396 {1.05449998, 0.820550025}, //
+
52397 {1.05370247, 0.820466042}, //
+
52398 {1.05282104, 0.820214212}, //
+
52399 {1.05185556, 0.819794416}, //
+
52400 {1.05080616, 0.819206774}, //
+
52401 {1.04967284, 0.818451226}, //
+
52402 {1.0484556, 0.817527771}, //
+
52403 {1.04715431, 0.81643641}, //
+
52404 {1.0457691, 0.815177143}, //
+
52405 {1.04429996, 0.813750029}, //
+
52406 {1.04204381, 0.812952459}, //
+
52407 {1.03978646, 0.812070966}, //
+
52408 {1.0375278, 0.811105549}, //
+
52409 {1.03526795, 0.81005615}, //
+
52410 {1.03300679, 0.808922827}, //
+
52411 {1.03074443, 0.807705581}, //
+
52412 {1.02848089, 0.806404293}, //
+
52413 {1.02621603, 0.80501914}, //
+
52414 {1.02394998, 0.803550005}, //
+
52415 {1.02169383, 0.802070379}, //
+
52416 {1.01943648, 0.800631464}, //
+
52417 {1.01717782, 0.799233317}, //
+
52418 {1.01491785, 0.797875941}, //
+
52419 {1.01265681, 0.796559274}, //
+
52420 {1.01039445, 0.795283318}, //
+
52421 {1.00813091, 0.794048131}, //
+
52422 {1.00586605, 0.792853713}, //
+
52423 {1.0036, 0.791700006}, //
+
52424 {1.00140679, 0.790598154}, //
+
52425 {0.999338269, 0.789537013}, //
+
52426 {0.997394443, 0.788516641}, //
+
52427 {0.995575309, 0.787537038}, //
+
52428 {0.993880868, 0.786598146}, //
+
52429 {0.99231112, 0.785700023}, //
+
52430 {0.990866065, 0.78484261}, //
+
52431 {0.989545703, 0.784025908}, //
+
52432 {0.988349974, 0.783249974}, //
+
52433 {0.987290144, 0.782578409}, //
+
52434 {0.986354947, 0.78207469}, //
+
52435 {0.985544443, 0.781738877}, //
+
52436 {0.984858632, 0.781570971}, //
+
52437 });
+
52438 polys.push_back({
+
52439 {6.46120691, 0.428627163}, //
+
52440 {6.46084976, 0.428900003}, //
+
52441 {6.46045113, 0.429361105}, //
+
52442 {6.46001053, 0.429988891}, //
+
52443 {6.45952797, 0.430783331}, //
+
52444 {6.45900297, 0.431744456}, //
+
52445 {6.45843649, 0.432872236}, //
+
52446 {6.45782757, 0.43416667}, //
+
52447 {6.45717716, 0.435627788}, //
+
52448 {6.45648479, 0.437255561}, //
+
52449 {6.45574999, 0.439049989}, //
+
52450 {6.45501566, 0.440959245}, //
+
52451 {6.45432281, 0.442909271}, //
+
52452 {6.45367241, 0.444900006}, //
+
52453 {6.45306349, 0.446931481}, //
+
52454 {6.45249701, 0.449003696}, //
+
52455 {6.45197201, 0.451116681}, //
+
52456 {6.45148945, 0.453270376}, //
+
52457 {6.45104885, 0.45546481}, //
+
52458 {6.45065022, 0.457700014}, //
+
52459 {6.45027208, 0.459945053}, //
+
52460 {6.44989443, 0.462146908}, //
+
52461 {6.44951677, 0.46430555}, //
+
52462 {6.44913912, 0.466420978}, //
+
52463 {6.44876099, 0.468493223}, //
+
52464 {6.44838333, 0.470522225}, //
+
52465 {6.44800568, 0.472508013}, //
+
52466 {6.44762754, 0.474450618}, //
+
52467 {6.44724989, 0.476350009}, //
+
52468 {6.44686174, 0.478175938}, //
+
52469 {6.44643021, 0.479875922}, //
+
52470 {6.44595575, 0.481449991}, //
+
52471 {6.44543743, 0.482898146}, //
+
52472 {6.44487667, 0.484220356}, //
+
52473 {6.44427204, 0.485416681}, //
+
52474 {6.4436245, 0.486487031}, //
+
52475 {6.44293404, 0.487431496}, //
+
52476 {6.44220018, 0.488249987}, //
+
52477 {6.44211626, 0.489948779}, //
+
52478 {6.44186401, 0.492022842}, //
+
52479 {6.4414444, 0.494472235}, //
+
52480 {6.44085693, 0.4972969}, //
+
52481 {6.44010115, 0.500496924}, //
+
52482 {6.43917799, 0.504072249}, //
+
52483 {6.43808651, 0.508022845}, //
+
52484 {6.43682718, 0.512348771}, //
+
52485 {6.43540001, 0.517050028}, //
+
52486 {6.43385744, 0.522012353}, //
+
52487 {6.43222952, 0.527099371}, //
+
52488 {6.43051672, 0.532311082}, //
+
52489 {6.42871857, 0.537647545}, //
+
52490 {6.42683506, 0.543108642}, //
+
52491 {6.42486668, 0.548694432}, //
+
52492 {6.42281294, 0.554404914}, //
+
52493 {6.42067385, 0.560240149}, //
+
52494 {6.41844988, 0.566200018}, //
+
52495 {6.41623592, 0.572024047}, //
+
52496 {6.41410446, 0.577429652}, //
+
52497 {6.41205549, 0.582416654}, //
+
52498 {6.41008949, 0.586985171}, //
+
52499 {6.40820599, 0.591135204}, //
+
52500 {6.40640545, 0.594866693}, //
+
52501 {6.40468788, 0.598179638}, //
+
52502 {6.40305233, 0.6010741}, //
+
52503 {6.40150023, 0.603550017}, //
+
52504 {6.39840508, 0.60723269}, //
+
52505 {6.39514208, 0.610747516}, //
+
52506 {6.39171124, 0.614094436}, //
+
52507 {6.38811255, 0.61727345}, //
+
52508 {6.38434553, 0.620284557}, //
+
52509 {6.38041115, 0.623127759}, //
+
52510 {6.37630844, 0.625803113}, //
+
52511 {6.37203836, 0.628310502}, //
+
52512 {6.36759996, 0.630649984}, //
+
52513 {6.3631196, 0.632790744}, //
+
52514 {6.35872364, 0.634679615}, //
+
52515 {6.35441113, 0.636316657}, //
+
52516 {6.35018253, 0.637701869}, //
+
52517 {6.34603834, 0.638835192}, //
+
52518 {6.3419776, 0.639716685}, //
+
52519 {6.33800125, 0.640346289}, //
+
52520 {6.33410883, 0.640724063}, //
+
52521 {6.33029985, 0.640850008}, //
+
52522 {6.32733011, 0.640808046}, //
+
52523 {6.32444334, 0.640682101}, //
+
52524 {6.32163906, 0.640472233}, //
+
52525 {6.31891727, 0.640178382}, //
+
52526 {6.31627846, 0.639800608}, //
+
52527 {6.31372213, 0.639338911}, //
+
52528 {6.31124878, 0.63879323}, //
+
52529 {6.30885792, 0.638163567}, //
+
52530 {6.30655003, 0.63744998}, //
+
52531 {6.30429363, 0.636757433}, //
+
52532 {6.30203629, 0.636190712}, //
+
52533 {6.29977798, 0.635749996}, //
+
52534 {6.29751778, 0.635435164}, //
+
52535 {6.29525661, 0.635246277}, //
+
52536 {6.2929945, 0.635183334}, //
+
52537 {6.29073095, 0.635246277}, //
+
52538 {6.28846598, 0.635435164}, //
+
52539 {6.28620005, 0.635749996}, //
+
52540 {6.28390265, 0.636190116}, //
+
52541 {6.28152084, 0.63675493}, //
+
52542 {6.2790556, 0.637444437}, //
+
52543 {6.27650595, 0.638258636}, //
+
52544 {6.27387285, 0.639197528}, //
+
52545 {6.27115536, 0.640261114}, //
+
52546 {6.26835442, 0.641449392}, //
+
52547 {6.26546907, 0.642762363}, //
+
52548 {6.26249981, 0.644200027}, //
+
52549 {6.25789404, 0.646256804}, //
+
52550 {6.25311995, 0.647893846}, //
+
52551 {6.24817801, 0.649111092}, //
+
52552 {6.24306774, 0.649908662}, //
+
52553 {6.23779011, 0.650286436}, //
+
52554 {6.23234463, 0.650244415}, //
+
52555 {6.22673082, 0.649782717}, //
+
52556 {6.22094917, 0.648901224}, //
+
52557 {6.21500015, 0.647599995}, //
+
52558 {6.20901918, 0.646057427}, //
+
52559 {6.20312119, 0.644429624}, //
+
52560 {6.19730568, 0.642716646}, //
+
52561 {6.19157267, 0.640918493}, //
+
52562 {6.18592262, 0.639035165}, //
+
52563 {6.18035555, 0.637066662}, //
+
52564 {6.17487097, 0.635012984}, //
+
52565 {6.16946936, 0.632874072}, //
+
52566 {6.16415024, 0.630649984}, //
+
52567 {6.15954447, 0.628477752}, //
+
52568 {6.15477228, 0.626472235}, //
+
52569 {6.1498332, 0.624633312}, //
+
52570 {6.14472771, 0.622961104}, //
+
52571 {6.13945532, 0.62145555}, //
+
52572 {6.13401651, 0.620116651}, //
+
52573 {6.12841129, 0.618944466}, //
+
52574 {6.1226387, 0.617938876}, //
+
52575 {6.11670017, 0.6171}, //
+
52576 {6.11058331, 0.616219163}, //
+
52577 {6.10430002, 0.615087628}, //
+
52578 {6.09784985, 0.613705575}, //
+
52579 {6.09123325, 0.612072825}, //
+
52580 {6.08444977, 0.610189497}, //
+
52581 {6.07749987, 0.608055532}, //
+
52582 {6.07038355, 0.605670989}, //
+
52583 {6.06309986, 0.603035808}, //
+
52584 {6.05565023, 0.600149989}, //
+
52585 {6.05058146, 0.597653687}, //
+
52586 {6.04593134, 0.594698131}, //
+
52587 {6.04169989, 0.591283321}, //
+
52588 {6.0378871, 0.587409258}, //
+
52589 {6.03449249, 0.583075941}, //
+
52590 {6.03151655, 0.57828331}, //
+
52591 {6.02895927, 0.573031485}, //
+
52592 {6.02682018, 0.567320347}, //
+
52593 {6.02510023, 0.561150014}, //
+
52594 {6.02370453, 0.55477035}, //
+
52595 {6.0225172, 0.548431456}, //
+
52596 {6.02153873, 0.542133331}, //
+
52597 {6.02076912, 0.535875916}, //
+
52598 {6.02020788, 0.529659271}, //
+
52599 {6.0198555, 0.523483336}, //
+
52600 {6.01971149, 0.51734817}, //
+
52601 {6.01977634, 0.511253715}, //
+
52602 {6.02005005, 0.505200028}, //
+
52603 {6.02044868, 0.499303073}, //
+
52604 {6.02088928, 0.493656784}, //
+
52605 {6.02137232, 0.488261104}, //
+
52606 {6.02189684, 0.48311606}, //
+
52607 {6.0224638, 0.478221595}, //
+
52608 {6.02307224, 0.473577768}, //
+
52609 {6.02372265, 0.469184577}, //
+
52610 {6.02441549, 0.465041965}, //
+
52611 {6.02514982, 0.461149991}, //
+
52612 {6.02512884, 0.459051222}, //
+
52613 {6.0250659, 0.457288265}, //
+
52614 {6.02496099, 0.455861121}, //
+
52615 {6.02481413, 0.45476976}, //
+
52616 {6.0246253, 0.454014212}, //
+
52617 {6.02439451, 0.453594446}, //
+
52618 {6.02412176, 0.453510493}, //
+
52619 {6.02380657, 0.453762352}, //
+
52620 {6.0234499, 0.454349995}, //
+
52621 {6.02303028, 0.455125928}, //
+
52622 {6.02252674, 0.455942601}, //
+
52623 {6.0219388, 0.456800014}, //
+
52624 {6.02126741, 0.457698137}, //
+
52625 {6.02051163, 0.458637029}, //
+
52626 {6.01967239, 0.459616661}, //
+
52627 {6.01874876, 0.460637033}, //
+
52628 {6.0177412, 0.461698145}, //
+
52629 {6.0166502, 0.462799996}, //
+
52630 {6.01552725, 0.463953704}, //
+
52631 {6.01440287, 0.465148151}, //
+
52632 {6.01327801, 0.466383338}, //
+
52633 {6.01215124, 0.467659265}, //
+
52634 {6.01102352, 0.468975931}, //
+
52635 {6.00989437, 0.470333338}, //
+
52636 {6.00876427, 0.471731484}, //
+
52637 {6.00763273, 0.47317037}, //
+
52638 {6.00649977, 0.474649996}, //
+
52639 {6.00538778, 0.476140112}, //
+
52640 {6.00431728, 0.477588266}, //
+
52641 {6.00328875, 0.478994459}, //
+
52642 {6.00230265, 0.48035863}, //
+
52643 {6.00135803, 0.48168087}, //
+
52644 {6.00045538, 0.482961118}, //
+
52645 {5.99959517, 0.484199375}, //
+
52646 {5.99877644, 0.48539567}, //
+
52647 {5.99800014, 0.486550003}, //
+
52648 {5.99729681, 0.487620384}, //
+
52649 {5.99613905, 0.48938334}, //
+
52650 {5.99481535, 0.491398156}, //
+
52651 {5.99469137, 0.491587043}, //
+
52652 {5.99464989, 0.491649985}, //
+
52653 {5.99483347, 0.492588878}, //
+
52654 {5.99630022, 0.500100017}, //
+
52655 {5.99667788, 0.501988292}, //
+
52656 {5.99705553, 0.503875315}, //
+
52657 {5.99743319, 0.505761087}, //
+
52658 {5.99781132, 0.507645667}, //
+
52659 {5.99818897, 0.509528995}, //
+
52660 {5.99856663, 0.51141113}, //
+
52661 {5.99894428, 0.513291955}, //
+
52662 {5.99932241, 0.515171587}, //
+
52663 {5.99970007, 0.517050028}, //
+
52664 {6.00009871, 0.518959284}, //
+
52665 {6.0005393, 0.52090925}, //
+
52666 {6.00102234, 0.522899985}, //
+
52667 {6.00154686, 0.52493149}, //
+
52668 {6.00211334, 0.527003706}, //
+
52669 {6.00272226, 0.52911669}, //
+
52670 {6.00337267, 0.531270385}, //
+
52671 {6.00406551, 0.533464789}, //
+
52672 {6.00479984, 0.535700023}, //
+
52673 {6.00559711, 0.53884691}, //
+
52674 {6.0064764, 0.542243183}, //
+
52675 {6.00743866, 0.545888901}, //
+
52676 {6.00848389, 0.549783945}, //
+
52677 {6.00961161, 0.553928375}, //
+
52678 {6.0108223, 0.558322251}, //
+
52679 {6.01211548, 0.562965453}, //
+
52680 {6.01349115, 0.56785804}, //
+
52681 {6.0149498, 0.573000014}, //
+
52682 {6.01643944, 0.577501237}, //
+
52683 {6.01788568, 0.581960499}, //
+
52684 {6.01928902, 0.5863778}, //
+
52685 {6.02064896, 0.590753078}, //
+
52686 {6.0219655, 0.595086396}, //
+
52687 {6.02323866, 0.599377751}, //
+
52688 {6.0244689, 0.603627145}, //
+
52689 {6.02565622, 0.607834578}, //
+
52690 {6.02680016, 0.611999989}, //
+
52691 {6.0279541, 0.616081476}, //
+
52692 {6.02915049, 0.620037019}, //
+
52693 {6.03038883, 0.623866677}, //
+
52694 {6.03166914, 0.627570391}, //
+
52695 {6.03299141, 0.63114816}, //
+
52696 {6.03435564, 0.634599984}, //
+
52697 {6.03576183, 0.637925923}, //
+
52698 {6.03720999, 0.641125917}, //
+
52699 {6.0387001, 0.644200027}, //
+
52700 {6.04196215, 0.648722231}, //
+
52701 {6.04572725, 0.653244436}, //
+
52702 {6.04999447, 0.65776664}, //
+
52703 {6.05476427, 0.662288904}, //
+
52704 {6.06003618, 0.666811109}, //
+
52705 {6.06581116, 0.671333313}, //
+
52706 {6.07208824, 0.675855577}, //
+
52707 {6.07886791, 0.680377781}, //
+
52708 {6.08615017, 0.684899986}, //
+
52709 {6.09360981, 0.68925494}, //
+
52710 {6.10090065, 0.693275332}, //
+
52711 {6.10802221, 0.696961105}, //
+
52712 {6.1149745, 0.700312316}, //
+
52713 {6.12175798, 0.703329027}, //
+
52714 {6.12837219, 0.706011117}, //
+
52715 {6.13481712, 0.708358645}, //
+
52716 {6.14109325, 0.710371614}, //
+
52717 {6.14720011, 0.712050021}, //
+
52718 {6.15100861, 0.713466644}, //
+
52719 {6.15490103, 0.714716673}, //
+
52720 {6.15887785, 0.715799987}, //
+
52721 {6.16293812, 0.716716647}, //
+
52722 {6.16708279, 0.717466652}, //
+
52723 {6.1713109, 0.718050003}, //
+
52724 {6.17562342, 0.71846664}, //
+
52725 {6.18001986, 0.718716681}, //
+
52726 {6.18450022, 0.718800008}, //
+
52727 {6.18902206, 0.718716681}, //
+
52728 {6.19354439, 0.71846664}, //
+
52729 {6.19806671, 0.718050003}, //
+
52730 {6.20258904, 0.717466652}, //
+
52731 {6.20711088, 0.716716647}, //
+
52732 {6.21163321, 0.715799987}, //
+
52733 {6.21615553, 0.714716673}, //
+
52734 {6.22067785, 0.713466644}, //
+
52735 {6.22520018, 0.712050021}, //
+
52736 {6.22932768, 0.712050021}, //
+
52737 {6.23053837, 0.712050021}, //
+
52738 {6.23271132, 0.712050021}, //
+
52739 {6.23367357, 0.712050021}, //
+
52740 {6.23455286, 0.712050021}, //
+
52741 {6.23535013, 0.712050021}, //
+
52742 {6.23774147, 0.71123147}, //
+
52743 {6.24038219, 0.710287035}, //
+
52744 {6.2432723, 0.709216654}, //
+
52745 {6.2464118, 0.708020389}, //
+
52746 {6.24980068, 0.70669812}, //
+
52747 {6.25343895, 0.705250025}, //
+
52748 {6.2573266, 0.703675926}, //
+
52749 {6.26146364, 0.701975942}, //
+
52750 {6.26585007, 0.700150013}, //
+
52751 {6.27041435, 0.698250592}, //
+
52752 {6.27506256, 0.696308017}, //
+
52753 {6.27979422, 0.694322228}, //
+
52754 {6.28461027, 0.692293227}, //
+
52755 {6.28951073, 0.690221012}, //
+
52756 {6.29449463, 0.688105583}, //
+
52757 {6.29956245, 0.685946941}, //
+
52758 {6.3047142, 0.683745086}, //
+
52759 {6.30994987, 0.681500018}, //
+
52760 {6.31291914, 0.680020392}, //
+
52761 {6.31580448, 0.678581476}, //
+
52762 {6.31860542, 0.67718333}, //
+
52763 {6.32132292, 0.675825953}, //
+
52764 {6.32395601, 0.674509287}, //
+
52765 {6.32650566, 0.67323333}, //
+
52766 {6.32897091, 0.671998143}, //
+
52767 {6.33135223, 0.670803726}, //
+
52768 {6.33365011, 0.669650018}, //
+
52769 {6.3358326, 0.668579638}, //
+
52770 {6.33784771, 0.667635202}, //
+
52771 {6.3396945, 0.666816652}, //
+
52772 {6.34137344, 0.666124046}, //
+
52773 {6.34288454, 0.665557384}, //
+
52774 {6.34422779, 0.665116668}, //
+
52775 {6.34540319, 0.664801836}, //
+
52776 {6.34641027, 0.664612949}, //
+
52777 {6.34724998, 0.664550006}, //
+
52778 {6.34867716, 0.664570987}, //
+
52779 {6.34993649, 0.66463393}, //
+
52780 {6.35102797, 0.664738894}, //
+
52781 {6.35195112, 0.664885819}, //
+
52782 {6.35270691, 0.665074706}, //
+
52783 {6.35329437, 0.665305555}, //
+
52784 {6.35371399, 0.665578365}, //
+
52785 {6.35396624, 0.665893197}, //
+
52786 {6.35405016, 0.66624999}, //
+
52787 {6.35402918, 0.666669726}, //
+
52788 {6.35396624, 0.667173445}, //
+
52789 {6.35386133, 0.667761087}, //
+
52790 {6.35371399, 0.668432713}, //
+
52791 {6.35352516, 0.669188261}, //
+
52792 {6.35329437, 0.670027792}, //
+
52793 {6.35302162, 0.670951247}, //
+
52794 {6.35270691, 0.671958625}, //
+
52795 {6.35235023, 0.673049986}, //
+
52796 {6.35195112, 0.674161732}, //
+
52797 {6.35151052, 0.675230265}, //
+
52798 {6.35102797, 0.676255584}, //
+
52799 {6.35050297, 0.67723763}, //
+
52800 {6.34993649, 0.678176522}, //
+
52801 {6.34932756, 0.679072201}, //
+
52802 {6.34867716, 0.679924667}, //
+
52803 {6.34798479, 0.680733979}, //
+
52804 {6.34724998, 0.681500018}, //
+
52805 {6.34643126, 0.682296932}, //
+
52806 {6.34548712, 0.683176517}, //
+
52807 {6.34441662, 0.684138894}, //
+
52808 {6.34322023, 0.685183942}, //
+
52809 {6.34189796, 0.686311722}, //
+
52810 {6.34044981, 0.687522233}, //
+
52811 {6.33887577, 0.688815415}, //
+
52812 {6.33717585, 0.690191329}, //
+
52813 {6.33535004, 0.691649973}, //
+
52814 {6.33340931, 0.693203092}, //
+
52815 {6.3313427, 0.694840133}, //
+
52816 {6.3291502, 0.696561098}, //
+
52817 {6.32683134, 0.698366046}, //
+
52818 {6.32438707, 0.700254917}, //
+
52819 {6.32181644, 0.702227771}, //
+
52820 {6.31912041, 0.704284549}, //
+
52821 {6.31629801, 0.706425309}, //
+
52822 {6.3133502, 0.708649993}, //
+
52823 {6.30960417, 0.712374687}, //
+
52824 {6.30590057, 0.716015458}, //
+
52825 {6.30223894, 0.719572246}, //
+
52826 {6.29861927, 0.723045051}, //
+
52827 {6.29504156, 0.726433933}, //
+
52828 {6.29150534, 0.729738891}, //
+
52829 {6.28801155, 0.732959867}, //
+
52830 {6.28455973, 0.736096919}, //
+
52831 {6.28114986, 0.739149988}, //
+
52832 {6.27782345, 0.74211973}, //
+
52833 {6.27462149, 0.7450068}, //
+
52834 {6.27154446, 0.747811139}, //
+
52835 {6.26859188, 0.750532687}, //
+
52836 {6.26576424, 0.753171623}, //
+
52837 {6.26306105, 0.755727768}, //
+
52838 {6.26048279, 0.758201241}, //
+
52839 {6.25802898, 0.760591984}, //
+
52840 {6.25570011, 0.762899995}, //
+
52841 {6.25329733, 0.765176535}, //
+
52842 {6.25060129, 0.767495036}, //
+
52843 {6.24761105, 0.769855559}, //
+
52844 {6.24432707, 0.772258043}, //
+
52845 {6.24074936, 0.774702489}, //
+
52846 {6.23687792, 0.777188897}, //
+
52847 {6.23271227, 0.779717267}, //
+
52848 {6.22825289, 0.782287657}, //
+
52849 {6.22349977, 0.78490001}, //
+
52850 {6.21862078, 0.787522852}, //
+
52851 {6.21378374, 0.790102482}, //
+
52852 {6.20898867, 0.792638898}, //
+
52853 {6.20423603, 0.795132101}, //
+
52854 {6.19952488, 0.79758209}, //
+
52855 {6.19485569, 0.799988866}, //
+
52856 {6.19022846, 0.802352488}, //
+
52857 {6.1856432, 0.804672837}, //
+
52858 {6.18109989, 0.806949973}, //
+
52859 {6.17670393, 0.809090734}, //
+
52860 {6.17255926, 0.810979605}, //
+
52861 {6.16866684, 0.812616646}, //
+
52862 {6.16502571, 0.814001858}, //
+
52863 {6.16163683, 0.815135181}, //
+
52864 {6.15850019, 0.816016674}, //
+
52865 {6.15561485, 0.816646278}, //
+
52866 {6.15298128, 0.817024052}, //
+
52867 {6.15059996, 0.817149997}, //
+
52868 {6.14752579, 0.817695677}, //
+
52869 {6.14432573, 0.817821622}, //
+
52870 {6.14099979, 0.817527771}, //
+
52871 {6.13754797, 0.816814184}, //
+
52872 {6.13397026, 0.815680861}, //
+
52873 {6.13026667, 0.814127803}, //
+
52874 {6.12643719, 0.812154949}, //
+
52875 {6.12248135, 0.809762359}, //
+
52876 {6.1184001, 0.806949973}, //
+
52877 {6.11431789, 0.803980887}, //
+
52878 {6.11036062, 0.801095665}, //
+
52879 {6.10652781, 0.798294425}, //
+
52880 {6.10281992, 0.795577168}, //
+
52881 {6.09923649, 0.792943835}, //
+
52882 {6.09577799, 0.790394425}, //
+
52883 {6.09244394, 0.787928998}, //
+
52884 {6.08923435, 0.785547554}, //
+
52885 {6.08615017, 0.783249974}, //
+
52886 {6.08610868, 0.782536447}, //
+
52887 {6.08598471, 0.781906784}, //
+
52888 {6.08577776, 0.781361103}, //
+
52889 {6.08548832, 0.780899405}, //
+
52890 {6.08511591, 0.780521631}, //
+
52891 {6.08466101, 0.78022778}, //
+
52892 {6.08412361, 0.780017912}, //
+
52893 {6.08350325, 0.779891968}, //
+
52894 {6.08279991, 0.779850006}, //
+
52895 {6.08118439, 0.778338909}, //
+
52896 {6.07936049, 0.776827753}, //
+
52897 {6.07732773, 0.775316656}, //
+
52898 {6.07508659, 0.773805559}, //
+
52899 {6.0726366, 0.772294462}, //
+
52900 {6.06997776, 0.770783305}, //
+
52901 {6.06711054, 0.769272208}, //
+
52902 {6.06403446, 0.767761111}, //
+
52903 {6.06075001, 0.766250014}, //
+
52904 {6.05738163, 0.764791369}, //
+
52905 {6.05405378, 0.763415456}, //
+
52906 {6.05076647, 0.762122214}, //
+
52907 {6.04752016, 0.760911703}, //
+
52908 {6.04431486, 0.759783924}, //
+
52909 {6.04115009, 0.758738875}, //
+
52910 {6.03802586, 0.757776558}, //
+
52911 {6.03494263, 0.756896913}, //
+
52912 {6.03189993, 0.756099999}, //
+
52913 {6.03115511, 0.756058037}, //
+
52914 {6.03040886, 0.755932093}, //
+
52915 {6.02966118, 0.755722225}, //
+
52916 {6.02891254, 0.755428374}, //
+
52917 {6.02816248, 0.7550506}, //
+
52918 {6.02741098, 0.754588902}, //
+
52919 {6.02665854, 0.754043221}, //
+
52920 {6.02590513, 0.753413558}, //
+
52921 {6.02514982, 0.752699971}, //
+
52922 {6.02363873, 0.751745701}, //
+
52923 {6.02212763, 0.750371575}, //
+
52924 {6.02061653, 0.748577774}, //
+
52925 {6.01910543, 0.746364176}, //
+
52926 {6.01759434, 0.743730843}, //
+
52927 {6.01608324, 0.740677774}, //
+
52928 {6.01457214, 0.737204909}, //
+
52929 {6.01306105, 0.733312368}, //
+
52930 {6.01154995, 0.728999972}, //
+
52931 {6.01007032, 0.724456787}, //
+
52932 {6.00863171, 0.719871581}, //
+
52933 {6.00723314, 0.715244472}, //
+
52934 {6.00587606, 0.710575283}, //
+
52935 {6.00455904, 0.705864191}, //
+
52936 {6.0032835, 0.701111138}, //
+
52937 {6.00204802, 0.696316063}, //
+
52938 {6.00085354, 0.691479027}, //
+
52939 {5.99970007, 0.686600029}, //
+
52940 {5.9985981, 0.681846917}, //
+
52941 {5.99753714, 0.677387655}, //
+
52942 {5.9965167, 0.673222244}, //
+
52943 {5.9955368, 0.669350624}, //
+
52944 {5.99459791, 0.665772855}, //
+
52945 {5.99370003, 0.662488878}, //
+
52946 {5.99284267, 0.659498751}, //
+
52947 {5.99202585, 0.656802475}, //
+
52948 {5.99125004, 0.654399991}, //
+
52949 {5.9911871, 0.652007997}, //
+
52950 {5.99099827, 0.649365425}, //
+
52951 {5.99068356, 0.646472216}, //
+
52952 {5.99024248, 0.643328369}, //
+
52953 {5.989676, 0.639933944}, //
+
52954 {5.98898315, 0.636288881}, //
+
52955 {5.9881649, 0.632393181}, //
+
52956 {5.98722029, 0.628246903}, //
+
52957 {5.98614979, 0.623849988}, //
+
52958 {5.98499632, 0.619338274}, //
+
52959 {5.98380184, 0.614825308}, //
+
52960 {5.98256683, 0.610311091}, //
+
52961 {5.98129082, 0.605795681}, //
+
52962 {5.97997427, 0.60127902}, //
+
52963 {5.97861671, 0.596761107}, //
+
52964 {5.97721863, 0.592242002}, //
+
52965 {5.97577953, 0.587721586}, //
+
52966 {5.97429991, 0.583199978}, //
+
52967 {5.9735446, 0.579453707}, //
+
52968 {5.97278881, 0.575748146}, //
+
52969 {5.9720335, 0.572083354}, //
+
52970 {5.97127771, 0.568459272}, //
+
52971 {5.9705224, 0.564875901}, //
+
52972 {5.96976662, 0.561333358}, //
+
52973 {5.96901131, 0.557831466}, //
+
52974 {5.96825552, 0.554370344}, //
+
52975 {5.96750021, 0.550949991}, //
+
52976 {5.96678638, 0.547708035}, //
+
52977 {5.96615696, 0.54475987}, //
+
52978 {5.96561098, 0.542105556}, //
+
52979 {5.9651494, 0.539745033}, //
+
52980 {5.96477175, 0.537678421}, //
+
52981 {5.96447802, 0.53590554}, //
+
52982 {5.96426773, 0.53442657}, //
+
52983 {5.96414185, 0.533241332}, //
+
52984 {5.96409988, 0.532350004}, //
+
52985 {5.9640789, 0.531677783}, //
+
52986 {5.96401596, 0.531172216}, //
+
52987 {5.96391106, 0.530833304}, //
+
52988 {5.96376419, 0.530661106}, //
+
52989 {5.96357536, 0.530655563}, //
+
52990 {5.96334457, 0.530816674}, //
+
52991 {5.96307182, 0.53114444}, //
+
52992 {5.96275663, 0.531638861}, //
+
52993 {5.96239996, 0.532299995}, //
+
52994 {5.9620018, 0.533139527}, //
+
52995 {5.96156311, 0.534146905}, //
+
52996 {5.96108341, 0.535322249}, //
+
52997 {5.96056318, 0.53666544}, //
+
52998 {5.96000195, 0.538176537}, //
+
52999 {5.95940018, 0.53985554}, //
+
53000 {5.9587574, 0.541702449}, //
+
53001 {5.95807409, 0.543717265}, //
+
53002 {5.95734978, 0.545899987}, //
+
53003 {5.95579767, 0.547484577}, //
+
53004 {5.95416212, 0.549238265}, //
+
53005 {5.95244455, 0.55116111}, //
+
53006 {5.95064402, 0.553253114}, //
+
53007 {5.94876051, 0.555514216}, //
+
53008 {5.94679451, 0.557944417}, //
+
53009 {5.94474554, 0.560543835}, //
+
53010 {5.94261408, 0.563312352}, //
+
53011 {5.94040012, 0.566250026}, //
+
53012 {5.93821716, 0.570016682}, //
+
53013 {5.93620253, 0.573783338}, //
+
53014 {5.93435574, 0.577549994}, //
+
53015 {5.93267632, 0.58131665}, //
+
53016 {5.93116522, 0.585083306}, //
+
53017 {5.92982244, 0.588850021}, //
+
53018 {5.92864704, 0.592616677}, //
+
53019 {5.92763948, 0.596383333}, //
+
53020 {5.92679977, 0.600149989}, //
+
53021 {5.92600298, 0.602364182}, //
+
53022 {5.92512369, 0.604495704}, //
+
53023 {5.92416096, 0.606544435}, //
+
53024 {5.92311621, 0.608510494}, //
+
53025 {5.92198849, 0.610393822}, //
+
53026 {5.9207778, 0.612194419}, //
+
53027 {5.91948462, 0.613912344}, //
+
53028 {5.91810846, 0.615547538}, //
+
53029 {5.91664982, 0.6171}, //
+
53030 {5.92134142, 0.625139534}, //
+
53031 {5.92398024, 0.629661739}, //
+
53032 {5.92720556, 0.635188878}, //
+
53033 {5.9310174, 0.64172101}, //
+
53034 {5.93541527, 0.649258018}, //
+
53035 {5.94040012, 0.657800019}, //
+
53036 {5.94265556, 0.661650002}, //
+
53037 {5.944911, 0.66566664}, //
+
53038 {5.94716644, 0.669849992}, //
+
53039 {5.94942236, 0.674199998}, //
+
53040 {5.9516778, 0.67871666}, //
+
53041 {5.95393324, 0.683399975}, //
+
53042 {5.95618868, 0.688250005}, //
+
53043 {5.9584446, 0.69326669}, //
+
53044 {5.96070004, 0.698450029}, //
+
53045 {5.96233654, 0.705993831}, //
+
53046 {5.96422338, 0.713536441}, //
+
53047 {5.96636105, 0.7210778}, //
+
53048 {5.96874952, 0.728617907}, //
+
53049 {5.97138834, 0.736156762}, //
+
53050 {5.97427797, 0.743694425}, //
+
53051 {5.97741795, 0.751230836}, //
+
53052 {5.98080873, 0.758766055}, //
+
53053 {5.98444986, 0.766300023}, //
+
53054 {5.98836279, 0.772427142}, //
+
53055 {5.99256849, 0.778764188}, //
+
53056 {5.9970665, 0.785311103}, //
+
53057 {6.00185728, 0.792067885}, //
+
53058 {6.00694084, 0.799034595}, //
+
53059 {6.0123167, 0.806211114}, //
+
53060 {6.01798534, 0.81359756}, //
+
53061 {6.02394629, 0.821193814}, //
+
53062 {6.0302, 0.828999996}, //
+
53063 {6.03663158, 0.836764812}, //
+
53064 {6.04310369, 0.84423703}, //
+
53065 {6.04961681, 0.851416647}, //
+
53066 {6.05617046, 0.858303726}, //
+
53067 {6.06276464, 0.864898145}, //
+
53068 {6.06939983, 0.871200025}, //
+
53069 {6.07607603, 0.877209246}, //
+
53070 {6.08279276, 0.882925928}, //
+
53071 {6.08955002, 0.88835001}, //
+
53072 {6.09712553, 0.89180249}, //
+
53073 {6.10478449, 0.894626558}, //
+
53074 {6.11252785, 0.896822214}, //
+
53075 {6.12035513, 0.898389518}, //
+
53076 {6.12826586, 0.899328411}, //
+
53077 {6.13626099, 0.899638891}, //
+
53078 {6.14434004, 0.89932096}, //
+
53079 {6.15250301, 0.898374677}, //
+
53080 {6.16074991, 0.896799982}, //
+
53081 {6.1688714, 0.894608021}, //
+
53082 {6.17665863, 0.891787648}, //
+
53083 {6.18411112, 0.888338864}, //
+
53084 {6.19122887, 0.884261727}, //
+
53085 {6.19801235, 0.879556179}, //
+
53086 {6.2044611, 0.874222219}, //
+
53087 {6.2105751, 0.868259847}, //
+
53088 {6.21635485, 0.861669123}, //
+
53089 {6.22179985, 0.854449987}, //
+
53090 {6.22644758, 0.847703695}, //
+
53091 {6.23134565, 0.841042578}, //
+
53092 {6.23649454, 0.834466696}, //
+
53093 {6.24189377, 0.827975929}, //
+
53094 {6.24754381, 0.821570396}, //
+
53095 {6.25344467, 0.815249979}, //
+
53096 {6.25959587, 0.809014797}, //
+
53097 {6.26599741, 0.80286479}, //
+
53098 {6.27264977, 0.796800017}, //
+
53099 {6.27951193, 0.791271627}, //
+
53100 {6.28654146, 0.785241961}, //
+
53101 {6.29373884, 0.77871114}, //
+
53102 {6.30110455, 0.771678984}, //
+
53103 {6.30863762, 0.764145672}, //
+
53104 {6.31633902, 0.756111085}, //
+
53105 {6.32420826, 0.747575283}, //
+
53106 {6.33224487, 0.738538265}, //
+
53107 {6.34044981, 0.728999972}, //
+
53108 {6.3577013, 0.70631355}, //
+
53109 {6.37327719, 0.684965432}, //
+
53110 {6.38717794, 0.664955556}, //
+
53111 {6.3994031, 0.646283925}, //
+
53112 {6.40995312, 0.628950596}, //
+
53113 {6.41882801, 0.61295557}, //
+
53114 {6.4260273, 0.598298788}, //
+
53115 {6.43155146, 0.584980249}, //
+
53116 {6.43540001, 0.573000014}, //
+
53117 {6.43688965, 0.569086432}, //
+
53118 {6.4383359, 0.564879}, //
+
53119 {6.43973875, 0.560377777}, //
+
53120 {6.44109869, 0.555582702}, //
+
53121 {6.44241524, 0.550493836}, //
+
53122 {6.44368887, 0.54511112}, //
+
53123 {6.44491911, 0.539434552}, //
+
53124 {6.44610596, 0.533464193}, //
+
53125 {6.44724989, 0.527199984}, //
+
53126 {6.45518351, 0.4824}, //
+
53127 {6.45744991, 0.469599992}, //
+
53128 {6.45852041, 0.463471591}, //
+
53129 {6.45946503, 0.457886428}, //
+
53130 {6.46028328, 0.452844441}, //
+
53131 {6.46097612, 0.448345691}, //
+
53132 {6.46154261, 0.444390118}, //
+
53133 {6.4619832, 0.440977782}, //
+
53134 {6.46229792, 0.438108653}, //
+
53135 {6.46248722, 0.435782731}, //
+
53136 {6.46255016, 0.433999985}, //
+
53137 {6.46252918, 0.432593822}, //
+
53138 {6.46246624, 0.431397527}, //
+
53139 {6.46236134, 0.4304111}, //
+
53140 {6.46221399, 0.429634571}, //
+
53141 {6.46202517, 0.42906791}, //
+
53142 {6.46179438, 0.428711116}, //
+
53143 {6.46152163, 0.428564191}, //
+
53144 });
+
53145 polys.push_back({
+
53146 {0.470271617, 0.874800026}, //
+
53147 {0.470544457, 0.874800026}, //
+
53148 {0.470775306, 0.874800026}, //
+
53149 {0.470932603, 0.874800026}, //
+
53150 {0.470775306, 0.874800026}, //
+
53151 });
+
53152 polys.push_back({
+
53153 {4.4383502, 0.873266637}, //
+
53154 {4.4383502, 0.873535156}, //
+
53155 {4.4383502, 0.873168945}, //
+
53156 });
+
53157 polys.push_back({
+
53158 {0.566200018, 0.710349977}, //
+
53159 {0.563230872, 0.710811138}, //
+
53160 {0.56034565, 0.711438894}, //
+
53161 {0.55754447, 0.712233305}, //
+
53162 {0.554827154, 0.71319443}, //
+
53163 {0.55219382, 0.714322209}, //
+
53164 {0.54964447, 0.715616643}, //
+
53165 {0.547178984, 0.717077792}, //
+
53166 {0.54479754, 0.718705535}, //
+
53167 {0.542500019, 0.720499992}, //
+
53168 {0.540285826, 0.722346306}, //
+
53169 {0.538154304, 0.724107385}, //
+
53170 {0.536105573, 0.725783348}, //
+
53171 {0.534139514, 0.727374077}, //
+
53172 {0.532256186, 0.728879631}, //
+
53173 {0.53045553, 0.730300009}, //
+
53174 {0.528737664, 0.731635213}, //
+
53175 {0.52710247, 0.732885182}, //
+
53176 {0.525550008, 0.734049976}, //
+
53177 {0.524122834, 0.735120356}, //
+
53178 {0.521995246, 0.736716032}, //
+
53179 {0.521217346, 0.739768326}, //
+
53180 {0.525030851, 0.740724087}, //
+
53181 {0.534829021, 0.743179619}, //
+
53182 {0.539099991, 0.74425}, //
+
53183 {0.543747544, 0.745382726}, //
+
53184 {0.548645675, 0.746514201}, //
+
53185 {0.553794444, 0.747644424}, //
+
53186 {0.55919385, 0.748773456}, //
+
53187 {0.564843833, 0.749901235}, //
+
53188 {0.570744455, 0.751027763}, //
+
53189 {0.576895654, 0.752153099}, //
+
53190 {0.583297551, 0.753277183}, //
+
53191 {0.589950025, 0.754400015}, //
+
53192 {0.596738279, 0.755512357}, //
+
53193 {0.603525281, 0.756582737}, //
+
53194 {0.610311091, 0.757611096}, //
+
53195 {0.617095649, 0.758597553}, //
+
53196 {0.623879015, 0.759541988}, //
+
53197 {0.63066113, 0.760444462}, //
+
53198 {0.637441993, 0.761304915}, //
+
53199 {0.644221604, 0.762123466}, //
+
53200 {0.651000023, 0.762899995}, //
+
53201 {0.658491373, 0.76452595}, //
+
53202 {0.66589874, 0.766403675}, //
+
53203 {0.673222244, 0.768533349}, //
+
53204 {0.680461705, 0.770914793}, //
+
53205 {0.687617302, 0.773548126}, //
+
53206 {0.694688916, 0.776433349}, //
+
53207 {0.701676548, 0.779570341}, //
+
53208 {0.708580256, 0.782959282}, //
+
53209 {0.715399981, 0.786599994}, //
+
53210 {0.722062945, 0.79037714}, //
+
53211 {0.728474081, 0.794153094}, //
+
53212 {0.734633327, 0.797927797}, //
+
53213 {0.740540743, 0.801701248}, //
+
53214 {0.74619627, 0.805473447}, //
+
53215 {0.751600027, 0.809244454}, //
+
53216 {0.756751835, 0.813014209}, //
+
53217 {0.761651874, 0.816782713}, //
+
53218 {0.766300023, 0.820550025}, //
+
53219 {0.76931113, 0.822764218}, //
+
53220 {0.772322237, 0.82489568}, //
+
53221 {0.775333345, 0.82694447}, //
+
53222 {0.778344452, 0.82891047}, //
+
53223 {0.78135556, 0.830793798}, //
+
53224 {0.784366667, 0.832594454}, //
+
53225 {0.787377775, 0.83431232}, //
+
53226 {0.790388882, 0.835947514}, //
+
53227 {0.79339999, 0.837499976}, //
+
53228 {0.798907399, 0.840469122}, //
+
53229 {0.804874063, 0.843354344}, //
+
53230 {0.81129998, 0.846155584}, //
+
53231 {0.81818521, 0.84887284}, //
+
53232 {0.825529635, 0.851506174}, //
+
53233 {0.833333313, 0.854055583}, //
+
53234 {0.841596305, 0.85652101}, //
+
53235 {0.850318491, 0.858902454}, //
+
53236 {0.859499991, 0.861199975}, //
+
53237 {0.868691981, 0.863298774}, //
+
53238 {0.877423465, 0.8650617}, //
+
53239 {0.885694444, 0.866488874}, //
+
53240 {0.893504918, 0.867580235}, //
+
53241 {0.900854945, 0.868335783}, //
+
53242 {0.907744467, 0.868755579}, //
+
53243 {0.914173484, 0.868839502}, //
+
53244 {0.920141995, 0.868587673}, //
+
53245 {0.925650001, 0.867999971}, //
+
53246 {0.92792654, 0.867874086}, //
+
53247 {0.930245042, 0.867496312}, //
+
53248 {0.932605565, 0.866866648}, //
+
53249 {0.935008049, 0.865985215}, //
+
53250 {0.937452495, 0.864851832}, //
+
53251 {0.939938903, 0.86346668}, //
+
53252 {0.942467272, 0.861829638}, //
+
53253 {0.945037663, 0.859940767}, //
+
53254 {0.947650015, 0.857800007}, //
+
53255 {0.950230837, 0.855543852}, //
+
53256 {0.952684581, 0.853286445}, //
+
53257 {0.955011129, 0.851027787}, //
+
53258 {0.957210481, 0.848767877}, //
+
53259 {0.959282696, 0.846506774}, //
+
53260 {0.961227775, 0.844244421}, //
+
53261 {0.963045657, 0.841980875}, //
+
53262 {0.964736402, 0.839716077}, //
+
53263 {0.966300011, 0.837450027}, //
+
53264 {0.967769146, 0.835193813}, //
+
53265 {0.969154298, 0.832936406}, //
+
53266 {0.970455527, 0.830677807}, //
+
53267 {0.971672833, 0.828417897}, //
+
53268 {0.972806156, 0.826156795}, //
+
53269 {0.973855555, 0.823894441}, //
+
53270 {0.974820971, 0.821630836}, //
+
53271 {0.975702465, 0.819366038}, //
+
53272 {0.976499975, 0.817099988}, //
+
53273 {0.977213562, 0.814969778}, //
+
53274 {0.979900002, 0.806949973}, //
+
53275 {0.966350019, 0.756099999}, //
+
53276 {0.966350019, 0.756855547}, //
+
53277 {0.966350019, 0.757611096}, //
+
53278 {0.966350019, 0.758366644}, //
+
53279 {0.966350019, 0.760633349}, //
+
53280 {0.966350019, 0.762899995}, //
+
53281 {0.964796901, 0.766666651}, //
+
53282 {0.963159859, 0.770433307}, //
+
53283 {0.961438894, 0.774200022}, //
+
53284 {0.959633946, 0.777966678}, //
+
53285 {0.957745075, 0.781733334}, //
+
53286 {0.955772221, 0.78549999}, //
+
53287 {0.953715444, 0.789266646}, //
+
53288 {0.951574683, 0.793033361}, //
+
53289 {0.949349999, 0.796800017}, //
+
53290 {0.946968496, 0.80048269}, //
+
53291 {0.944335163, 0.803997517}, //
+
53292 {0.94145, 0.807344437}, //
+
53293 {0.938312948, 0.81052345}, //
+
53294 {0.934924066, 0.813534558}, //
+
53295 {0.931283355, 0.816377759}, //
+
53296 {0.927390754, 0.819053113}, //
+
53297 {0.923246324, 0.821560502}, //
+
53298 {0.918850005, 0.823899984}, //
+
53299 {0.911295652, 0.82654506}, //
+
53300 {0.903699398, 0.828435779}, //
+
53301 {0.896061122, 0.829572201}, //
+
53302 {0.888380885, 0.829954326}, //
+
53303 {0.880658627, 0.829582095}, //
+
53304 {0.872894466, 0.828455567}, //
+
53305 {0.865088284, 0.826574683}, //
+
53306 {0.85724014, 0.823939502}, //
+
53307 {0.849349976, 0.820550025}, //
+
53308 {0.841585159, 0.816741347}, //
+
53309 {0.834112942, 0.812848747}, //
+
53310 {0.826933324, 0.808872223}, //
+
53311 {0.820046306, 0.804811716}, //
+
53312 {0.813451827, 0.800667286}, //
+
53313 {0.807150006, 0.796438873}, //
+
53314 {0.801140726, 0.792126536}, //
+
53315 {0.795424104, 0.787730277}, //
+
53316 {0.790000021, 0.783249974}, //
+
53317 {0.789958656, 0.783208013}, //
+
53318 {0.789834559, 0.783082128}, //
+
53319 {0.78962779, 0.7828722}, //
+
53320 {0.789338291, 0.782578409}, //
+
53321 {0.78896606, 0.782200634}, //
+
53322 {0.788511097, 0.781738877}, //
+
53323 {0.787973464, 0.781193197}, //
+
53324 {0.787353098, 0.780563593}, //
+
53325 {0.786650002, 0.779850006}, //
+
53326 {0.780995667, 0.777499974}, //
+
53327 {0.774588287, 0.774983346}, //
+
53328 {0.767427802, 0.772300005}, //
+
53329 {0.759514213, 0.769450009}, //
+
53330 {0.750847518, 0.766433358}, //
+
53331 {0.741427779, 0.763249993}, //
+
53332 {0.731254935, 0.759899974}, //
+
53333 {0.720328987, 0.756383359}, //
+
53334 {0.708649993, 0.752699971}, //
+
53335 {0.695209265, 0.74960494}, //
+
53336 {0.682020366, 0.746342003}, //
+
53337 {0.669083357, 0.7429111}, //
+
53338 {0.656398177, 0.739312351}, //
+
53339 {0.643964827, 0.735545695}, //
+
53340 {0.631783307, 0.731611133}, //
+
53341 {0.619853675, 0.727508664}, //
+
53342 {0.608175933, 0.723238289}, //
+
53343 {0.596750021, 0.718800008}, //
+
53344 {0.593024671, 0.716690719}, //
+
53345 {0.589382112, 0.714874089}, //
+
53346 {0.585822225, 0.713349998}, //
+
53347 {0.582345068, 0.712118506}, //
+
53348 {0.578950644, 0.711179614}, //
+
53349 {0.57563889, 0.710533321}, //
+
53350 {0.572409868, 0.710179627}, //
+
53351 {0.569263577, 0.710118532}, //
+
53352 });
+
53353 polys.push_back({
+
53354 {4.43490791, 0.701387644}, //
+
53355 {4.43478203, 0.702833951}, //
+
53356 {4.43457222, 0.704488873}, //
+
53357 {4.43427849, 0.706352472}, //
+
53358 {4.43390083, 0.708424687}, //
+
53359 {4.43343878, 0.710705578}, //
+
53360 {4.43289328, 0.713195086}, //
+
53361 {4.43226337, 0.715893209}, //
+
53362 {4.43155003, 0.718800008}, //
+
53363 {4.4307313, 0.721149981}, //
+
53364 {4.42978716, 0.723666668}, //
+
53365 {4.42871666, 0.726350009}, //
+
53366 {4.42752028, 0.729200006}, //
+
53367 {4.42619801, 0.732216656}, //
+
53368 {4.42474985, 0.735400021}, //
+
53369 {4.42317581, 0.738749981}, //
+
53370 {4.42147589, 0.742266655}, //
+
53371 {4.41965008, 0.745949984}, //
+
53372 {4.41762543, 0.749590755}, //
+
53373 {4.41530657, 0.752979636}, //
+
53374 {4.41269445, 0.756116688}, //
+
53375 {4.40978813, 0.759001851}, //
+
53376 {4.40658808, 0.761635184}, //
+
53377 {4.40309429, 0.764016688}, //
+
53378 {4.39930677, 0.766146302}, //
+
53379 {4.39522552, 0.768024087}, //
+
53380 {4.39085007, 0.769649982}, //
+
53381 {4.39085007, 0.770363569}, //
+
53382 {4.39085007, 0.770993233}, //
+
53383 {4.39085007, 0.772672236}, //
+
53384 {4.39085007, 0.772882104}, //
+
53385 {4.39085007, 0.77305001}, //
+
53386 {4.38853073, 0.773846924}, //
+
53387 {4.38608456, 0.77472657}, //
+
53388 {4.38351107, 0.775688887}, //
+
53389 {4.38081026, 0.776733935}, //
+
53390 {4.37798262, 0.777861714}, //
+
53391 {4.37502766, 0.779072225}, //
+
53392 {4.37194586, 0.780365407}, //
+
53393 {4.36873627, 0.781741381}, //
+
53394 {4.36539984, 0.783200026}, //
+
53395 {4.36201096, 0.784669161}, //
+
53396 {4.35862207, 0.786054313}, //
+
53397 {4.35523319, 0.787355542}, //
+
53398 {4.35184431, 0.788572848}, //
+
53399 {4.34845543, 0.789706171}, //
+
53400 {4.34506655, 0.79075557}, //
+
53401 {4.34167767, 0.791720986}, //
+
53402 {4.33828878, 0.792602479}, //
+
53403 {4.3348999, 0.79339999}, //
+
53404 {4.33157396, 0.794071615}, //
+
53405 {4.32837391, 0.794575334}, //
+
53406 {4.32530022, 0.794911087}, //
+
53407 {4.32235193, 0.795078993}, //
+
53408 {4.31952953, 0.795078993}, //
+
53409 {4.3168335, 0.794911087}, //
+
53410 {4.31426287, 0.794575334}, //
+
53411 {4.3118186, 0.794071615}, //
+
53412 {4.30950022, 0.79339999}, //
+
53413 {4.30780077, 0.792602479}, //
+
53414 {4.30572462, 0.791720986}, //
+
53415 {4.30327225, 0.79075557}, //
+
53416 {4.30044317, 0.789706171}, //
+
53417 {4.29723787, 0.788572848}, //
+
53418 {4.2936554, 0.787355542}, //
+
53419 {4.28969669, 0.786054313}, //
+
53420 {4.28536177, 0.784669161}, //
+
53421 {4.28065014, 0.783200026}, //
+
53422 {4.27569771, 0.781699359}, //
+
53423 {4.27061796, 0.780197501}, //
+
53424 {4.2654109, 0.778694451}, //
+
53425 {4.260077, 0.777190149}, //
+
53426 {4.25461626, 0.775684595}, //
+
53427 {4.24902773, 0.77417779}, //
+
53428 {4.24331236, 0.772669733}, //
+
53429 {4.23746967, 0.771160483}, //
+
53430 {4.23150015, 0.769649982}, //
+
53431 {4.22564459, 0.768275321}, //
+
53432 {4.22012234, 0.767151237}, //
+
53433 {4.2149334, 0.76627779}, //
+
53434 {4.21007776, 0.765654922}, //
+
53435 {4.20555544, 0.765282691}, //
+
53436 {4.2013669, 0.765161097}, //
+
53437 {4.1975112, 0.765290141}, //
+
53438 {4.1939888, 0.765669763}, //
+
53439 {4.19080019, 0.766300023}, //
+
53440 {4.18776798, 0.767087042}, //
+
53441 {4.18469381, 0.767959237}, //
+
53442 {4.18157768, 0.768916667}, //
+
53443 {4.17841959, 0.769959271}, //
+
53444 {4.17521954, 0.77108705}, //
+
53445 {4.171978, 0.772300005}, //
+
53446 {4.16869402, 0.773598135}, //
+
53447 {4.16536808, 0.774981499}, //
+
53448 {4.16200018, 0.776449978}, //
+
53449 {4.15865231, 0.777960479}, //
+
53450 {4.15538788, 0.779469728}, //
+
53451 {4.15220547, 0.780977786}, //
+
53452 {4.14910603, 0.782484591}, //
+
53453 {4.14608955, 0.783990145}, //
+
53454 {4.14315557, 0.785494447}, //
+
53455 {4.14030409, 0.786997557}, //
+
53456 {4.13753557, 0.788499355}, //
+
53457 {4.13485003, 0.790000021}, //
+
53458 {4.13236284, 0.791427135}, //
+
53459 {4.12826681, 0.793777764}, //
+
53460 {4.12708616, 0.794455111}, //
+
53461 {4.12707138, 0.794543207}, //
+
53462 {4.12677765, 0.796805561}, //
+
53463 {4.12677479, 0.796839297}, //
+
53464 {4.12899065, 0.796862364}, //
+
53465 {4.13489628, 0.797049403}, //
+
53466 {4.14071655, 0.797361135}, //
+
53467 {4.14645195, 0.797797501}, //
+
53468 {4.15210199, 0.798358619}, //
+
53469 {4.15766668, 0.79904443}, //
+
53470 {4.1631465, 0.799854934}, //
+
53471 {4.16854095, 0.800790131}, //
+
53472 {4.17385006, 0.801850021}, //
+
53473 {4.17906475, 0.802983344}, //
+
53474 {4.18415356, 0.804116666}, //
+
53475 {4.18911648, 0.805249989}, //
+
53476 {4.19395351, 0.806383312}, //
+
53477 {4.19866467, 0.807516694}, //
+
53478 {4.20324993, 0.808650017}, //
+
53479 {4.20770931, 0.80978334}, //
+
53480 {4.21204281, 0.810916662}, //
+
53481 {4.21624994, 0.812049985}, //
+
53482 {4.2201643, 0.813120365}, //
+
53483 {4.22361803, 0.814064801}, //
+
53484 {4.22661114, 0.814883351}, //
+
53485 {4.22914362, 0.815575898}, //
+
53486 {4.23121595, 0.816142619}, //
+
53487 {4.23397923, 0.816898167}, //
+
53488 {4.23466969, 0.817087054}, //
+
53489 {4.2349, 0.817149997}, //
+
53490 {4.23565006, 0.81696111}, //
+
53491 {4.2369833, 0.816625297}, //
+
53492 {4.23789978, 0.816394448}, //
+
53493 {4.23898315, 0.816121578}, //
+
53494 {4.2416501, 0.815450013}, //
+
53495 {4.24318171, 0.815093219}, //
+
53496 {4.24475384, 0.814778388}, //
+
53497 {4.2463665, 0.814505577}, //
+
53498 {4.24802017, 0.814274669}, //
+
53499 {4.24971485, 0.814085782}, //
+
53500 {4.25145006, 0.813938916}, //
+
53501 {4.2532258, 0.813833952}, //
+
53502 {4.25504255, 0.813771009}, //
+
53503 {4.25689983, 0.813750029}, //
+
53504 {4.25872612, 0.81379199}, //
+
53505 {4.26042604, 0.813917875}, //
+
53506 {4.26200008, 0.814127803}, //
+
53507 {4.26344824, 0.814421594}, //
+
53508 {4.26477051, 0.814799368}, //
+
53509 {4.26596689, 0.815261126}, //
+
53510 {4.26703691, 0.815806806}, //
+
53511 {4.26798153, 0.81643641}, //
+
53512 {4.26879978, 0.817149997}, //
+
53513 {4.27106667, 0.817149997}, //
+
53514 {4.27257776, 0.817149997}, //
+
53515 {4.27333355, 0.817149997}, //
+
53516 {4.27408886, 0.817149997}, //
+
53517 {4.27559996, 0.817149997}, //
+
53518 {4.27720499, 0.81792593}, //
+
53519 {4.27901983, 0.818742573}, //
+
53520 {4.28104448, 0.819599986}, //
+
53521 {4.28327894, 0.820498168}, //
+
53522 {4.28572369, 0.821437061}, //
+
53523 {4.28837776, 0.822416663}, //
+
53524 {4.29124212, 0.823437035}, //
+
53525 {4.29431581, 0.824498177}, //
+
53526 {4.29759979, 0.825600028}, //
+
53527 {4.30102015, 0.826691329}, //
+
53528 {4.30448151, 0.827698767}, //
+
53529 {4.3079834, 0.828622222}, //
+
53530 {4.31152582, 0.829461753}, //
+
53531 {4.31510925, 0.830217302}, //
+
53532 {4.31873322, 0.830888867}, //
+
53533 {4.32239819, 0.831476569}, //
+
53534 {4.32610369, 0.831980228}, //
+
53535 {4.3298502, 0.832400024}, //
+
53536 {4.33353281, 0.832714796}, //
+
53537 {4.33704758, 0.832903683}, //
+
53538 {4.3403945, 0.832966685}, //
+
53539 {4.34357357, 0.832903683}, //
+
53540 {4.3465848, 0.832714796}, //
+
53541 {4.3494277, 0.832400024}, //
+
53542 {4.35210323, 0.831959248}, //
+
53543 {4.35461044, 0.831392586}, //
+
53544 {4.35694981, 0.83069998}, //
+
53545 {4.35927916, 0.829860508}, //
+
53546 {4.36173248, 0.828853071}, //
+
53547 {4.36431122, 0.827677786}, //
+
53548 {4.36701441, 0.826334596}, //
+
53549 {4.36984205, 0.824823439}, //
+
53550 {4.37279463, 0.823144436}, //
+
53551 {4.37587166, 0.821297526}, //
+
53552 {4.37907362, 0.819282711}, //
+
53553 {4.38240004, 0.817099988}, //
+
53554 {4.3858099, 0.814802468}, //
+
53555 {4.38926172, 0.812420964}, //
+
53556 {4.39275551, 0.809955537}, //
+
53557 {4.39629126, 0.807406187}, //
+
53558 {4.39986897, 0.804772854}, //
+
53559 {4.40348911, 0.802055538}, //
+
53560 {4.40715075, 0.799254298}, //
+
53561 {4.41085434, 0.796369135}, //
+
53562 {4.4145999, 0.79339999}, //
+
53563 {4.41815758, 0.790472209}, //
+
53564 {4.42129612, 0.787711084}, //
+
53565 {4.42401648, 0.785116673}, //
+
53566 {4.42631865, 0.782688916}, //
+
53567 {4.42820168, 0.780427754}, //
+
53568 {4.42966652, 0.778333306}, //
+
53569 {4.43071318, 0.776405573}, //
+
53570 {4.43134069, 0.774644434}, //
+
53571 {4.43155003, 0.77305001}, //
+
53572 {4.43157101, 0.771486402}, //
+
53573 {4.43163395, 0.769795656}, //
+
53574 {4.43173885, 0.767977774}, //
+
53575 {4.43188572, 0.766032696}, //
+
53576 {4.43207455, 0.763960481}, //
+
53577 {4.43230534, 0.761761129}, //
+
53578 {4.43257856, 0.759434581}, //
+
53579 {4.43289328, 0.756980836}, //
+
53580 {4.43324995, 0.754400015}, //
+
53581 {4.43360662, 0.751766026}, //
+
53582 {4.43392181, 0.749130845}, //
+
53583 {4.43419456, 0.746494472}, //
+
53584 {4.43442535, 0.743856788}, //
+
53585 {4.43461418, 0.741217911}, //
+
53586 {4.43476105, 0.738577783}, //
+
53587 {4.43486595, 0.735936403}, //
+
53588 {4.43492889, 0.733293831}, //
+
53589 {4.43494987, 0.730650008}, //
+
53590 {4.43494987, 0.712216675}, //
+
53591 {4.43494987, 0.709583342}, //
+
53592 {4.43494987, 0.706950009}, //
+
53593 {4.43494987, 0.700150013}, //
+
53594 });
+
53595 polys.push_back({
+
53596 {0.997351229, 0.709846318}, //
+
53597 {0.996975303, 0.710035205}, //
+
53598 {0.996850014, 0.710349977}, //
+
53599 {0.996933341, 0.710769117}, //
+
53600 {0.997183323, 0.711270988}, //
+
53601 {0.997600019, 0.711855531}, //
+
53602 {0.99818331, 0.712522864}, //
+
53603 {0.998933315, 0.71327281}, //
+
53604 {0.999849975, 0.714105546}, //
+
53605 {1.00093329, 0.715021014}, //
+
53606 {1.00218332, 0.716019154}, //
+
53607 {1.0036, 0.717100024}, //
+
53608 {1.00517344, 0.718233347}, //
+
53609 {1.00687158, 0.71936667}, //
+
53610 {1.00869441, 0.720499992}, //
+
53611 {1.01064193, 0.721633315}, //
+
53612 {1.01271415, 0.722766638}, //
+
53613 {1.01491106, 0.72390002}, //
+
53614 {1.01723266, 0.725033343}, //
+
53615 {1.01967907, 0.726166666}, //
+
53616 {1.02225006, 0.727299988}, //
+
53617 {1.0248729, 0.728411734}, //
+
53618 {1.02745247, 0.729480267}, //
+
53619 {1.02998888, 0.730505526}, //
+
53620 {1.03248215, 0.731487632}, //
+
53621 {1.03493214, 0.732426524}, //
+
53622 {1.03733885, 0.733322203}, //
+
53623 {1.03970242, 0.734174669}, //
+
53624 {1.04202282, 0.734983921}, //
+
53625 {1.04429996, 0.73575002}, //
+
53626 {1.04730058, 0.736567914}, //
+
53627 {1.05025804, 0.737510502}, //
+
53628 {1.05317223, 0.738577783}, //
+
53629 {1.05604327, 0.739769757}, //
+
53630 {1.05887103, 0.741086423}, //
+
53631 {1.06165552, 0.742527783}, //
+
53632 {1.06439686, 0.744093835}, //
+
53633 {1.06709504, 0.745784581}, //
+
53634 {1.06974995, 0.747600019}, //
+
53635 {1.07236302, 0.749509871}, //
+
53636 {1.0749352, 0.751461744}, //
+
53637 {1.07746661, 0.753455579}, //
+
53638 {1.07995737, 0.755491376}, //
+
53639 {1.08240736, 0.757569134}, //
+
53640 {1.08481669, 0.759688914}, //
+
53641 {1.08718514, 0.761850595}, //
+
53642 {1.08951294, 0.764054298}, //
+
53643 {1.09179997, 0.766300023}, //
+
53644 {1.09472775, 0.768514216}, //
+
53645 {1.09748888, 0.770645678}, //
+
53646 {1.10008335, 0.772694468}, //
+
53647 {1.10251117, 0.774660468}, //
+
53648 {1.10477221, 0.776543856}, //
+
53649 {1.10686672, 0.778344452}, //
+
53650 {1.10879445, 0.780062318}, //
+
53651 {1.11055553, 0.781697512}, //
+
53652 {1.11214995, 0.783249974}, //
+
53653 {1.11214995, 0.783208013}, //
+
53654 {1.11214995, 0.7828722}, //
+
53655 {1.11214995, 0.782578409}, //
+
53656 {1.11214995, 0.782200634}, //
+
53657 {1.11214995, 0.781738877}, //
+
53658 {1.11214995, 0.779850006}, //
+
53659 {1.11212897, 0.779073477}, //
+
53660 {1.11206603, 0.778254926}, //
+
53661 {1.11196113, 0.777394474}, //
+
53662 {1.11181414, 0.776492}, //
+
53663 {1.11162531, 0.775547504}, //
+
53664 {1.11139441, 0.774561107}, //
+
53665 {1.11112165, 0.773532689}, //
+
53666 {1.11080682, 0.772462368}, //
+
53667 {1.11045003, 0.771350026}, //
+
53668 {1.11007226, 0.770227134}, //
+
53669 {1.10969448, 0.76910311}, //
+
53670 {1.10931671, 0.767977774}, //
+
53671 {1.10893893, 0.766851246}, //
+
53672 {1.10856116, 0.765723467}, //
+
53673 {1.10818338, 0.764594436}, //
+
53674 {1.10780561, 0.763464212}, //
+
53675 {1.10742784, 0.762332737}, //
+
53676 {1.10704994, 0.761200011}, //
+
53677 {1.10665119, 0.760087669}, //
+
53678 {1.10621047, 0.759017289}, //
+
53679 {1.10572779, 0.75798887}, //
+
53680 {1.10520303, 0.757002473}, //
+
53681 {1.10463643, 0.756058037}, //
+
53682 {1.10402775, 0.755155563}, //
+
53683 {1.1033771, 0.754295051}, //
+
53684 {1.10268462, 0.75347656}, //
+
53685 {1.10195005, 0.752699971}, //
+
53686 {1.1017617, 0.751912951}, //
+
53687 {1.10119689, 0.751040757}, //
+
53688 {1.10025561, 0.750083327}, //
+
53689 {1.09893763, 0.749040723}, //
+
53690 {1.09724319, 0.747912943}, //
+
53691 {1.09517217, 0.746699989}, //
+
53692 {1.09272468, 0.745401859}, //
+
53693 {1.08990061, 0.744018495}, //
+
53694 {1.08669996, 0.742550015}, //
+
53695 {1.08322716, 0.741038918}, //
+
53696 {1.07958639, 0.739527762}, //
+
53697 {1.07577777, 0.738016665}, //
+
53698 {1.07180119, 0.736505568}, //
+
53699 {1.06765676, 0.734994471}, //
+
53700 {1.06334448, 0.733483315}, //
+
53701 {1.05886424, 0.731972218}, //
+
53702 {1.05421603, 0.730461121}, //
+
53703 {1.04939997, 0.728950024}, //
+
53704 {1.04452097, 0.727408051}, //
+
53705 {1.03968394, 0.725782096}, //
+
53706 {1.03488886, 0.724072218}, //
+
53707 {1.03013575, 0.722278416}, //
+
53708 {1.02542472, 0.720400631}, //
+
53709 {1.02075553, 0.718438864}, //
+
53710 {1.01612842, 0.716393232}, //
+
53711 {1.01154315, 0.714263558}, //
+
53712 {1.00699997, 0.712050021}, //
+
53713 {1.0048697, 0.711357415}, //
+
53714 {1.00299013, 0.710790753}, //
+
53715 {1.00136113, 0.710349977}, //
+
53716 {0.999982715, 0.710035205}, //
+
53717 {0.998854935, 0.709846318}, //
+
53718 {0.997977793, 0.709783316}, //
+
53719 });
+
53720 polys.push_back({
+
53721 {1.17167032, 0.742612362}, //
+
53722 {1.17023146, 0.742799401}, //
+
53723 {1.16883337, 0.743111134}, //
+
53724 {1.16747594, 0.743547559}, //
+
53725 {1.16615927, 0.744108617}, //
+
53726 {1.16488338, 0.744794428}, //
+
53727 {1.16364813, 0.745604932}, //
+
53728 {1.16245365, 0.746540129}, //
+
53729 {1.16129994, 0.747600019}, //
+
53730 {1.1601876, 0.748712361}, //
+
53731 {1.15911734, 0.749782741}, //
+
53732 {1.15615797, 0.752741992}, //
+
53733 {1.15525556, 0.753644466}, //
+
53734 {1.1543951, 0.754504919}, //
+
53735 {1.15279996, 0.756099999}, //
+
53736 {1.15204501, 0.757527173}, //
+
53737 {1.15129137, 0.75878644}, //
+
53738 {1.15053892, 0.759877801}, //
+
53739 {1.14978766, 0.760801256}, //
+
53740 {1.1490376, 0.761556804}, //
+
53741 {1.14828885, 0.762144446}, //
+
53742 {1.1475414, 0.762564182}, //
+
53743 {1.14679503, 0.762816072}, //
+
53744 {1.14604998, 0.762899995}, //
+
53745 {1.14611232, 0.762899995}, //
+
53746 {1.14629936, 0.762899995}, //
+
53747 {1.15110004, 0.762899995}, //
+
53748 {1.15225375, 0.762920976}, //
+
53749 {1.1534481, 0.762983978}, //
+
53750 {1.15468335, 0.763088882}, //
+
53751 {1.15595925, 0.763235807}, //
+
53752 {1.15727592, 0.763424695}, //
+
53753 {1.15863335, 0.763655543}, //
+
53754 {1.16003144, 0.763928413}, //
+
53755 {1.16147041, 0.764243186}, //
+
53756 {1.16295004, 0.764599979}, //
+
53757 {1.16446114, 0.764956772}, //
+
53758 {1.16597223, 0.765271604}, //
+
53759 {1.16748333, 0.765544474}, //
+
53760 {1.16899443, 0.765775323}, //
+
53761 {1.17050552, 0.76596421}, //
+
53762 {1.17201662, 0.766111135}, //
+
53763 {1.17352784, 0.76621604}, //
+
53764 {1.17503893, 0.766279042}, //
+
53765 {1.17655003, 0.766300023}, //
+
53766 {1.17806053, 0.766300023}, //
+
53767 {1.17956972, 0.766300023}, //
+
53768 {1.18107772, 0.766300023}, //
+
53769 {1.18258452, 0.766300023}, //
+
53770 {1.19009995, 0.766300023}, //
+
53771 {1.1931951, 0.767045081}, //
+
53772 {1.19645798, 0.767791331}, //
+
53773 {1.19988894, 0.768538892}, //
+
53774 {1.20348763, 0.769287646}, //
+
53775 {1.20725429, 0.770037651}, //
+
53776 {1.21118891, 0.770788908}, //
+
53777 {1.21529138, 0.771541357}, //
+
53778 {1.2195617, 0.772295058}, //
+
53779 {1.22399998, 0.77305001}, //
+
53780 {1.23738766, 0.77305001}, //
+
53781 {1.24282217, 0.77305001}, //
+
53782 {1.24522471, 0.77305001}, //
+
53783 {1.24741733, 0.77305001}, //
+
53784 {1.24940002, 0.77305001}, //
+
53785 {1.25279999, 0.77305001}, //
+
53786 {1.25169814, 0.768695652}, //
+
53787 {1.25063705, 0.764677167}, //
+
53788 {1.24961662, 0.760994434}, //
+
53789 {1.24863708, 0.757647514}, //
+
53790 {1.24769819, 0.754636407}, //
+
53791 {1.24679995, 0.751961112}, //
+
53792 {1.24594259, 0.74962163}, //
+
53793 {1.24583185, 0.749350011}, //
+
53794 {1.22064996, 0.749350011}, //
+
53795 {1.21767032, 0.74930805}, //
+
53796 {1.21477592, 0.749182105}, //
+
53797 {1.21196663, 0.748972237}, //
+
53798 {1.20924258, 0.748678386}, //
+
53799 {1.20660365, 0.748300612}, //
+
53800 {1.20404994, 0.747838914}, //
+
53801 {1.20158148, 0.747293234}, //
+
53802 {1.19919813, 0.74666357}, //
+
53803 {1.19690001, 0.745949984}, //
+
53804 {1.194592, 0.745908022}, //
+
53805 {1.19220126, 0.745782077}, //
+
53806 {1.18972778, 0.745572209}, //
+
53807 {1.18717158, 0.745278418}, //
+
53808 {1.18453276, 0.744900644}, //
+
53809 {1.18181109, 0.744438887}, //
+
53810 {1.17900681, 0.743893206}, //
+
53811 {1.1761198, 0.743263602}, //
+
53812 {1.17314994, 0.742550015}, //
+
53813 });
+
53814 polys.push_back({
+
53815 {4.1637001, 0.722199976}, //
+
53816 {4.16445494, 0.722955585}, //
+
53817 {4.16520882, 0.723711133}, //
+
53818 {4.16596127, 0.724466681}, //
+
53819 {4.16671228, 0.72522223}, //
+
53820 {4.16746235, 0.725977778}, //
+
53821 {4.16821098, 0.726733327}, //
+
53822 {4.16895866, 0.727488875}, //
+
53823 {4.16970491, 0.728244424}, //
+
53824 {4.17045021, 0.728999972}, //
+
53825 {4.17120552, 0.729775906}, //
+
53826 {4.17196131, 0.730592608}, //
+
53827 {4.17271662, 0.731450021}, //
+
53828 {4.1734724, 0.732348144}, //
+
53829 {4.17422771, 0.733287036}, //
+
53830 {4.1749835, 0.734266639}, //
+
53831 {4.17573881, 0.735287011}, //
+
53832 {4.1764946, 0.736348152}, //
+
53833 {4.17724991, 0.737450004}, //
+
53834 {4.17798471, 0.738562346}, //
+
53835 {4.17867708, 0.739632726}, //
+
53836 {4.17932796, 0.740661085}, //
+
53837 {4.17993641, 0.741647542}, //
+
53838 {4.18050289, 0.742591977}, //
+
53839 {4.18102789, 0.743494451}, //
+
53840 {4.18151045, 0.744354963}, //
+
53841 {4.18195105, 0.745173454}, //
+
53842 {4.18235016, 0.745949984}, //
+
53843 {4.18302155, 0.747293234}, //
+
53844 {4.1832943, 0.747838914}, //
+
53845 {4.18352509, 0.748300612}, //
+
53846 {4.18386126, 0.748972237}, //
+
53847 {4.18396616, 0.749182105}, //
+
53848 {4.18405008, 0.749350011}, //
+
53849 {4.18739986, 0.722199976}, //
+
53850 {4.17045021, 0.691699982}, //
+
53851 });
+
53852 polys.push_back({
+
53853 {3.21134186, 0.7324}, //
+
53854 {3.18379998, 0.7324}, //
+
53855 {3.18003345, 0.732441366}, //
+
53856 {3.17626667, 0.732565403}, //
+
53857 {3.1724999, 0.732772231}, //
+
53858 {3.16873336, 0.733061731}, //
+
53859 {3.16496658, 0.733433962}, //
+
53860 {3.16120005, 0.733888865}, //
+
53861 {3.15743327, 0.734426558}, //
+
53862 {3.15366673, 0.735046923}, //
+
53863 {3.14989996, 0.73575002}, //
+
53864 {3.14763403, 0.735771}, //
+
53865 {3.14536905, 0.735833943}, //
+
53866 {3.14310551, 0.735938907}, //
+
53867 {3.14084315, 0.736085832}, //
+
53868 {3.13858199, 0.736274719}, //
+
53869 {3.13632226, 0.736505568}, //
+
53870 {3.13406348, 0.736778378}, //
+
53871 {3.13180614, 0.73709321}, //
+
53872 {3.12954998, 0.737450004}, //
+
53873 {3.12733579, 0.737848759}, //
+
53874 {3.12520432, 0.738289535}, //
+
53875 {3.12315559, 0.738772213}, //
+
53876 {3.12118959, 0.739296913}, //
+
53877 {3.11930609, 0.739863575}, //
+
53878 {3.11750555, 0.740472198}, //
+
53879 {3.11578774, 0.741122842}, //
+
53880 {3.11415243, 0.741815448}, //
+
53881 {3.11260009, 0.742550015}, //
+
53882 {3.11117291, 0.743263602}, //
+
53883 {3.10882211, 0.744438887}, //
+
53884 {3.10588384, 0.745908022}, //
+
53885 {3.10579991, 0.745949984}, //
+
53886 {3.10726905, 0.745949984}, //
+
53887 {3.10995555, 0.745949984}, //
+
53888 {3.11117291, 0.745949984}, //
+
53889 {3.11599994, 0.745949984}, //
+
53890 {3.11899018, 0.745929003}, //
+
53891 {3.12193823, 0.74586606}, //
+
53892 {3.12484455, 0.745761096}, //
+
53893 {3.12770867, 0.745614171}, //
+
53894 {3.13053083, 0.745425284}, //
+
53895 {3.13331103, 0.745194435}, //
+
53896 {3.13604927, 0.744921625}, //
+
53897 {3.13874578, 0.744606793}, //
+
53898 {3.1414001, 0.74425}, //
+
53899 {3.14402294, 0.743893206}, //
+
53900 {3.14660239, 0.743578374}, //
+
53901 {3.14913893, 0.743305564}, //
+
53902 {3.15163207, 0.743074715}, //
+
53903 {3.15408206, 0.742885828}, //
+
53904 {3.1564889, 0.742738903}, //
+
53905 {3.15885258, 0.742633939}, //
+
53906 {3.16117287, 0.742570996}, //
+
53907 {3.16345, 0.742550015}, //
+
53908 {3.1642468, 0.743242621}, //
+
53909 {3.16512656, 0.743809283}, //
+
53910 {3.16608882, 0.74425}, //
+
53911 {3.16713405, 0.744564831}, //
+
53912 {3.16826177, 0.744753718}, //
+
53913 {3.16947222, 0.744816661}, //
+
53914 {3.1707654, 0.744753718}, //
+
53915 {3.17214131, 0.744564831}, //
+
53916 {3.17359996, 0.74425}, //
+
53917 {3.17515254, 0.743872225}, //
+
53918 {3.17678761, 0.743494451}, //
+
53919 {3.17850566, 0.743116677}, //
+
53920 {3.1803062, 0.742738903}, //
+
53921 {3.18218946, 0.742361128}, //
+
53922 {3.18415546, 0.741983354}, //
+
53923 {3.18620443, 0.74160558}, //
+
53924 {3.1883359, 0.741227806}, //
+
53925 {3.19055009, 0.740849972}, //
+
53926 {3.19277406, 0.740472198}, //
+
53927 {3.19491291, 0.740094423}, //
+
53928 {3.19696665, 0.739716649}, //
+
53929 {3.19893527, 0.739338875}, //
+
53930 {3.20081854, 0.738961101}, //
+
53931 {3.20261669, 0.738583326}, //
+
53932 {3.20432973, 0.738205552}, //
+
53933 {3.20595741, 0.737827778}, //
+
53934 {3.20749998, 0.737450004}, //
+
53935 {3.20896912, 0.737072229}, //
+
53936 {3.21035433, 0.736694455}, //
+
53937 {3.21165562, 0.736316681}, //
+
53938 {3.21287274, 0.735938907}, //
+
53939 {3.21400619, 0.735561132}, //
+
53940 {3.21505547, 0.735183358}, //
+
53941 {3.21602106, 0.734805584}, //
+
53942 {3.21690249, 0.73442775}, //
+
53943 {3.2177, 0.734049976}, //
+
53944 {3.21837163, 0.733703732}, //
+
53945 {3.21887541, 0.733398139}, //
+
53946 {3.2192111, 0.733133316}, //
+
53947 {3.21937895, 0.732909262}, //
+
53948 {3.21937895, 0.732725918}, //
+
53949 {3.2192111, 0.732583344}, //
+
53950 {3.21887541, 0.73248148}, //
+
53951 {3.21837163, 0.732420385}, //
+
53952 {3.2177, 0.7324}, //
+
53953 {3.21460485, 0.7324}, //
+
53954 });
+
53955 polys.push_back({
+
53956 {0.559491992, 0.535804331}, //
+
53957 {0.559617877, 0.536117256}, //
+
53958 {0.559827805, 0.536638916}, //
+
53959 {0.560961127, 0.539455533}, //
+
53960 {0.561506808, 0.540811718}, //
+
53961 {0.562136412, 0.542376518}, //
+
53962 {0.562849998, 0.544149995}, //
+
53963 {0.563604951, 0.546017885}, //
+
53964 {0.564358652, 0.547843814}, //
+
53965 {0.565111101, 0.549627781}, //
+
53966 {0.565862358, 0.551369727}, //
+
53967 {0.566612363, 0.55306977}, //
+
53968 {0.567361116, 0.554727793}, //
+
53969 {0.568108618, 0.556343853}, //
+
53970 {0.568854928, 0.557917893}, //
+
53971 {0.569599986, 0.559449971}, //
+
53972 {0.570376515, 0.560960472}, //
+
53973 {0.571195066, 0.56246978}, //
+
53974 {0.572055578, 0.563977778}, //
+
53975 {0.572958052, 0.565484583}, //
+
53976 {0.573902488, 0.566990137}, //
+
53977 {0.574888885, 0.568494439}, //
+
53978 {0.575917304, 0.569997549}, //
+
53979 {0.576987684, 0.571499407}, //
+
53980 {0.578100026, 0.573000014}, //
+
53981 {0.579253733, 0.574427187}, //
+
53982 {0.580448151, 0.575686395}, //
+
53983 {0.581683338, 0.576777756}, //
+
53984 {0.582959235, 0.577701211}, //
+
53985 {0.584275901, 0.578456819}, //
+
53986 {0.585633337, 0.579044461}, //
+
53987 {0.587031484, 0.579464197}, //
+
53988 {0.588470399, 0.579716027}, //
+
53989 {0.589950025, 0.57980001}, //
+
53990 {0.590830863, 0.579758048}, //
+
53991 {0.591962337, 0.579632103}, //
+
53992 {0.59334445, 0.579422235}, //
+
53993 {0.59497714, 0.579128385}, //
+
53994 {0.596860468, 0.57875061}, //
+
53995 {0.598994434, 0.578288913}, //
+
53996 {0.601379037, 0.577743232}, //
+
53997 {0.604014218, 0.577113569}, //
+
53998 {0.606899977, 0.576399982}, //
+
53999 {0.611443222, 0.576379001}, //
+
54000 {0.616028368, 0.576316059}, //
+
54001 {0.620655537, 0.576211095}, //
+
54002 {0.625324667, 0.576064169}, //
+
54003 {0.630035818, 0.575875282}, //
+
54004 {0.634788871, 0.575644433}, //
+
54005 {0.639583945, 0.575371623}, //
+
54006 {0.644420981, 0.575056791}, //
+
54007 {0.649299979, 0.574699998}, //
+
54008 {0.654179037, 0.574364185}, //
+
54009 {0.659016073, 0.574112356}, //
+
54010 {0.663811088, 0.573944449}, //
+
54011 {0.6685642, 0.573860466}, //
+
54012 {0.673275292, 0.573860466}, //
+
54013 {0.677944422, 0.573944449}, //
+
54014 {0.68257159, 0.574112356}, //
+
54015 {0.687156796, 0.574364185}, //
+
54016 {0.691699982, 0.574699998}, //
+
54017 {0.696012318, 0.575182736}, //
+
54018 {0.699904919, 0.575875282}, //
+
54019 {0.703377783, 0.576777756}, //
+
54020 {0.706430852, 0.577890098}, //
+
54021 {0.709064186, 0.579212368}, //
+
54022 {0.711277783, 0.580744445}, //
+
54023 {0.713071585, 0.582486391}, //
+
54024 {0.714445651, 0.584438264}, //
+
54025 {0.715399981, 0.586600006}, //
+
54026 {0.715442002, 0.587345064}, //
+
54027 {0.715567887, 0.588091373}, //
+
54028 {0.715777755, 0.588838875}, //
+
54029 {0.716071606, 0.589587629}, //
+
54030 {0.71644938, 0.590337634}, //
+
54031 {0.716911137, 0.591088891}, //
+
54032 {0.717456818, 0.59184134}, //
+
54033 {0.718086421, 0.592595041}, //
+
54034 {0.718800008, 0.593349993}, //
+
54035 {0.71884197, 0.595574081}, //
+
54036 {0.718967915, 0.597712934}, //
+
54037 {0.719177783, 0.599766672}, //
+
54038 {0.719471633, 0.601735175}, //
+
54039 {0.719849408, 0.603618503}, //
+
54040 {0.720311105, 0.605416656}, //
+
54041 {0.720856786, 0.607129633}, //
+
54042 {0.721486449, 0.608757436}, //
+
54043 {0.722199976, 0.610300004}, //
+
54044 {0.723038912, 0.611852467}, //
+
54045 {0.724044442, 0.613487661}, //
+
54046 {0.725216687, 0.615205526}, //
+
54047 {0.726555526, 0.617006183}, //
+
54048 {0.72806114, 0.618889511}, //
+
54049 {0.729733348, 0.62085557}, //
+
54050 {0.731572211, 0.622904301}, //
+
54051 {0.733577788, 0.625035822}, //
+
54052 {0.73575002, 0.627250016}, //
+
54053 {0.73818332, 0.629558027}, //
+
54054 {0.740949988, 0.631948769}, //
+
54055 {0.744050026, 0.634422243}, //
+
54056 {0.747483313, 0.636978388}, //
+
54057 {0.751250029, 0.639617264}, //
+
54058 {0.755349994, 0.642338872}, //
+
54059 {0.759783328, 0.645143211}, //
+
54060 {0.764549971, 0.648030221}, //
+
54061 {0.769649982, 0.651000023}, //
+
54062 {0.778778374, 0.655647516}, //
+
54063 {0.788074672, 0.660545707}, //
+
54064 {0.797538877, 0.665694416}, //
+
54065 {0.807170987, 0.671093822}, //
+
54066 {0.816971004, 0.676743805}, //
+
54067 {0.826938868, 0.682644427}, //
+
54068 {0.837074697, 0.688795686}, //
+
54069 {0.847378373, 0.695197523}, //
+
54070 {0.857850015, 0.701849997}, //
+
54071 {0.863033354, 0.706246316}, //
+
54072 {0.868049979, 0.710390747}, //
+
54073 {0.872900009, 0.714283347}, //
+
54074 {0.877583325, 0.717924058}, //
+
54075 {0.882099986, 0.72131294}, //
+
54076 {0.886449993, 0.724449992}, //
+
54077 {0.890633345, 0.727335215}, //
+
54078 {0.894649982, 0.729968548}, //
+
54079 {0.898500025, 0.732349992}, //
+
54080 {0.902057409, 0.734490752}, //
+
54081 {0.905196309, 0.736379623}, //
+
54082 {0.907916665, 0.738016665}, //
+
54083 {0.910218537, 0.739401877}, //
+
54084 {0.912101865, 0.7405352}, //
+
54085 {0.913566649, 0.741416693}, //
+
54086 {0.914612949, 0.742046297}, //
+
54087 {0.915240765, 0.742424071}, //
+
54088 {0.915449977, 0.742550015}, //
+
54089 {0.916226566, 0.742508054}, //
+
54090 {0.917045057, 0.742382109}, //
+
54091 {0.917905569, 0.742172241}, //
+
54092 {0.918808043, 0.74187839}, //
+
54093 {0.919752479, 0.741500616}, //
+
54094 {0.920738876, 0.741038918}, //
+
54095 {0.921767294, 0.740493238}, //
+
54096 {0.922837675, 0.739863575}, //
+
54097 {0.923950016, 0.739149988}, //
+
54098 {0.925103724, 0.738394439}, //
+
54099 {0.926298141, 0.737638891}, //
+
54100 {0.927533329, 0.736883342}, //
+
54101 {0.928809285, 0.736127794}, //
+
54102 {0.930125952, 0.735372245}, //
+
54103 {0.931483328, 0.734616637}, //
+
54104 {0.932881474, 0.733861089}, //
+
54105 {0.93432039, 0.73310554}, //
+
54106 {0.935800016, 0.732349992}, //
+
54107 {0.937269151, 0.731604934}, //
+
54108 {0.938654304, 0.730858624}, //
+
54109 {0.939955533, 0.730111122}, //
+
54110 {0.941172838, 0.729362369}, //
+
54111 {0.942306161, 0.728612363}, //
+
54112 {0.94335556, 0.727861106}, //
+
54113 {0.944320977, 0.727108657}, //
+
54114 {0.94520247, 0.726354957}, //
+
54115 {0.94599998, 0.725600004}, //
+
54116 {0.949232101, 0.722367883}, //
+
54117 {0.949358046, 0.722241998}, //
+
54118 {0.949400008, 0.722199976}, //
+
54119 {0.929050028, 0.661149979}, //
+
54120 {0.929050028, 0.693400025}, //
+
54121 {0.929028988, 0.693777144}, //
+
54122 {0.928966045, 0.69415307}, //
+
54123 {0.928861082, 0.694527805}, //
+
54124 {0.928714216, 0.694901228}, //
+
54125 {0.928525329, 0.695273459}, //
+
54126 {0.92829442, 0.695644438}, //
+
54127 {0.92802161, 0.696014225}, //
+
54128 {0.927706778, 0.696382701}, //
+
54129 {0.927349985, 0.696749985}, //
+
54130 {0.92695123, 0.697127759}, //
+
54131 {0.926510513, 0.697505534}, //
+
54132 {0.926027775, 0.697883308}, //
+
54133 {0.925503075, 0.698261082}, //
+
54134 {0.924936414, 0.698638916}, //
+
54135 {0.924327791, 0.69901669}, //
+
54136 {0.923677146, 0.699394464}, //
+
54137 {0.92298454, 0.699772239}, //
+
54138 {0.922249973, 0.700150013}, //
+
54139 {0.921494424, 0.700485826}, //
+
54140 {0.920738876, 0.700737655}, //
+
54141 {0.919983327, 0.700905561}, //
+
54142 {0.919227779, 0.700989485}, //
+
54143 {0.91847223, 0.700989485}, //
+
54144 {0.917716682, 0.700905561}, //
+
54145 {0.916961133, 0.700737655}, //
+
54146 {0.916205585, 0.700485826}, //
+
54147 {0.915449977, 0.700150013}, //
+
54148 {0.914662957, 0.699751854}, //
+
54149 {0.913790762, 0.699312985}, //
+
54150 {0.912833333, 0.698833346}, //
+
54151 {0.911790729, 0.698312938}, //
+
54152 {0.910662949, 0.69775188}, //
+
54153 {0.909449995, 0.697149992}, //
+
54154 {0.908151865, 0.696507394}, //
+
54155 {0.906768501, 0.695824087}, //
+
54156 {0.905300021, 0.695100009}, //
+
54157 {0.902100027, 0.692749977}, //
+
54158 {0.898522198, 0.69023335}, //
+
54159 {0.894566655, 0.687550008}, //
+
54160 {0.890233338, 0.684700012}, //
+
54161 {0.885522246, 0.681683362}, //
+
54162 {0.880433321, 0.678499997}, //
+
54163 {0.874966681, 0.675149977}, //
+
54164 {0.869122207, 0.671633363}, //
+
54165 {0.862900019, 0.667949975}, //
+
54166 {0.856520355, 0.664141357}, //
+
54167 {0.85018146, 0.660248756}, //
+
54168 {0.843883336, 0.656272233}, //
+
54169 {0.837625921, 0.652211726}, //
+
54170 {0.831409276, 0.648067296}, //
+
54171 {0.82523334, 0.643838882}, //
+
54172 {0.819098175, 0.639526546}, //
+
54173 {0.813003719, 0.635130227}, //
+
54174 {0.806949973, 0.630649984}, //
+
54175 {0.801136434, 0.626253724}, //
+
54176 {0.795740128, 0.622109234}, //
+
54177 {0.790761113, 0.618216693}, //
+
54178 {0.786199391, 0.614575922}, //
+
54179 {0.782054961, 0.611187041}, //
+
54180 {0.778327763, 0.608049989}, //
+
54181 {0.775017917, 0.605164826}, //
+
54182 {0.772125304, 0.602531493}, //
+
54183 {0.769649982, 0.600149989}, //
+
54184 {0.765012324, 0.596383333}, //
+
54185 {0.760121584, 0.592616677}, //
+
54186 {0.754977763, 0.588850021}, //
+
54187 {0.74958086, 0.585083306}, //
+
54188 {0.743930876, 0.58131665}, //
+
54189 {0.738027751, 0.577549994}, //
+
54190 {0.731871605, 0.573783338}, //
+
54191 {0.725462317, 0.570016682}, //
+
54192 {0.718800008, 0.566250026}, //
+
54193 {0.712105572, 0.562650621}, //
+
54194 {0.705577791, 0.559385777}, //
+
54195 {0.699216664, 0.556455553}, //
+
54196 {0.693022251, 0.55385989}, //
+
54197 {0.686994433, 0.551598787}, //
+
54198 {0.68113333, 0.549672246}, //
+
54199 {0.675438881, 0.548080266}, //
+
54200 {0.669911087, 0.546822846}, //
+
54201 {0.664550006, 0.545899987}, //
+
54202 {0.661517918, 0.545858026}, //
+
54203 {0.658443809, 0.545732081}, //
+
54204 {0.655327797, 0.545522213}, //
+
54205 {0.652169764, 0.545228422}, //
+
54206 {0.648969769, 0.544850588}, //
+
54207 {0.645727754, 0.54438889}, //
+
54208 {0.642443836, 0.54384321}, //
+
54209 {0.639117897, 0.543213606}, //
+
54210 {0.635749996, 0.542500019}, //
+
54211 {0.632319152, 0.541786432}, //
+
54212 {0.628804326, 0.541156769}, //
+
54213 {0.625205576, 0.540611088}, //
+
54214 {0.621522844, 0.540149391}, //
+
54215 {0.617756188, 0.539771616}, //
+
54216 {0.613905549, 0.539477766}, //
+
54217 {0.609970987, 0.539267898}, //
+
54218 {0.605952442, 0.539141953}, //
+
54219 {0.601849973, 0.539099991}, //
+
54220 {0.59778887, 0.53907901}, //
+
54221 {0.593894422, 0.539016068}, //
+
54222 {0.590166688, 0.538911104}, //
+
54223 {0.586605549, 0.538764179}, //
+
54224 {0.583211124, 0.538575292}, //
+
54225 {0.579983354, 0.538344443}, //
+
54226 {0.576922238, 0.538071632}, //
+
54227 {0.574027777, 0.537756801}, //
+
54228 {0.57130003, 0.537400007}, //
+
54229 {0.564716637, 0.536455572}, //
+
54230 {0.563107431, 0.536224663}, //
+
54231 {0.561790764, 0.536035776}, //
+
54232 {0.560766637, 0.53588891}, //
+
54233 {0.560035169, 0.535783947}, //
+
54234 {0.5595963, 0.535721004}, //
+
54235 {0.559449971, 0.535700023}, //
+
54236 });
+
54237 polys.push_back({
+
54238 {4.18219948, 0.600680113}, //
+
54239 {4.18157291, 0.60743767}, //
+
54240 {4.18151379, 0.608276546}, //
+
54241 {4.18215084, 0.609291971}, //
+
54242 {4.1836524, 0.611934543}, //
+
54243 {4.18515539, 0.614827752}, //
+
54244 {4.18665981, 0.617971599}, //
+
54245 {4.18816566, 0.621366024}, //
+
54246 {4.18967199, 0.625011086}, //
+
54247 {4.19118023, 0.628906786}, //
+
54248 {4.19268942, 0.633053064}, //
+
54249 {4.19420004, 0.63744998}, //
+
54250 {4.1957736, 0.641216695}, //
+
54251 {4.19747162, 0.644983351}, //
+
54252 {4.19929457, 0.648750007}, //
+
54253 {4.20124197, 0.652516663}, //
+
54254 {4.2033143, 0.656283319}, //
+
54255 {4.20551109, 0.660049975}, //
+
54256 {4.20783281, 0.66381669}, //
+
54257 {4.21027899, 0.667583346}, //
+
54258 {4.21285009, 0.671350002}, //
+
54259 {4.21554613, 0.674949408}, //
+
54260 {4.21836853, 0.678214192}, //
+
54261 {4.22131681, 0.681144416}, //
+
54262 {4.22439051, 0.683740139}, //
+
54263 {4.22759056, 0.686001241}, //
+
54264 {4.2309165, 0.687927783}, //
+
54265 {4.23436832, 0.689519763}, //
+
54266 {4.23794651, 0.690777183}, //
+
54267 {4.2416501, 0.691699982}, //
+
54268 {4.24479675, 0.691783309}, //
+
54269 {4.24819326, 0.69203335}, //
+
54270 {4.25183868, 0.692449987}, //
+
54271 {4.25573397, 0.693033338}, //
+
54272 {4.25987816, 0.693783343}, //
+
54273 {4.26427221, 0.694700003}, //
+
54274 {4.26891565, 0.695783317}, //
+
54275 {4.273808, 0.697033346}, //
+
54276 {4.27895021, 0.698450029}, //
+
54277 {4.28422785, 0.699961126}, //
+
54278 {4.28950548, 0.701472223}, //
+
54279 {4.29478312, 0.70298332}, //
+
54280 {4.30006123, 0.704494417}, //
+
54281 {4.32644987, 0.712050021}, //
+
54282 {4.32933569, 0.714180231}, //
+
54283 {4.33197117, 0.716059864}, //
+
54284 {4.33435535, 0.717688918}, //
+
54285 {4.33648968, 0.719067276}, //
+
54286 {4.33837271, 0.720195055}, //
+
54287 {4.3400054, 0.721072197}, //
+
54288 {4.34138775, 0.721698761}, //
+
54289 {4.34251928, 0.722074687}, //
+
54290 {4.3434, 0.722199976}, //
+
54291 {4.34490061, 0.722955585}, //
+
54292 {4.34640265, 0.723711133}, //
+
54293 {4.34790564, 0.724466681}, //
+
54294 {4.34941006, 0.72522223}, //
+
54295 {4.35091543, 0.725977778}, //
+
54296 {4.35242224, 0.726733327}, //
+
54297 {4.35393047, 0.727488875}, //
+
54298 {4.35543966, 0.728244424}, //
+
54299 {4.35694981, 0.728999972}, //
+
54300 {4.35919523, 0.730437636}, //
+
54301 {4.36139679, 0.731750607}, //
+
54302 {4.36355543, 0.732938886}, //
+
54303 {4.36567116, 0.734002471}, //
+
54304 {4.36774302, 0.734941363}, //
+
54305 {4.36977243, 0.735755563}, //
+
54306 {4.37175798, 0.736445069}, //
+
54307 {4.37370062, 0.737009883}, //
+
54308 {4.37559986, 0.737450004}, //
+
54309 {4.37746716, 0.737681508}, //
+
54310 {4.37929153, 0.737620354}, //
+
54311 {4.38107204, 0.73726666}, //
+
54312 {4.38280964, 0.736620367}, //
+
54313 {4.38450432, 0.735681474}, //
+
54314 {4.38615561, 0.734449983}, //
+
54315 {4.3877635, 0.732925951}, //
+
54316 {4.38932848, 0.731109262}, //
+
54317 {4.39085007, 0.728999972}, //
+
54318 {4.39305305, 0.72667098}, //
+
54319 {4.3951292, 0.724217296}, //
+
54320 {4.39707756, 0.721638918}, //
+
54321 {4.39889956, 0.718935788}, //
+
54322 {4.40059376, 0.716108024}, //
+
54323 {4.40216112, 0.713155568}, //
+
54324 {4.40360117, 0.710078418}, //
+
54325 {4.40491438, 0.706876516}, //
+
54326 {4.4060998, 0.703549981}, //
+
54327 {4.40721226, 0.700224102}, //
+
54328 {4.40828276, 0.697024047}, //
+
54329 {4.40931129, 0.693949997}, //
+
54330 {4.41029739, 0.691001832}, //
+
54331 {4.41124201, 0.688179612}, //
+
54332 {4.41214466, 0.685483336}, //
+
54333 {4.41300488, 0.682912946}, //
+
54334 {4.4138236, 0.6804685}, //
+
54335 {4.4145999, 0.678149998}, //
+
54336 {4.41535568, 0.675170362}, //
+
54337 {4.41611099, 0.672275901}, //
+
54338 {4.41686678, 0.669466674}, //
+
54339 {4.41762209, 0.666742563}, //
+
54340 {4.41837788, 0.664103687}, //
+
54341 {4.41913319, 0.661549985}, //
+
54342 {4.41988897, 0.659081459}, //
+
54343 {4.42064428, 0.656698167}, //
+
54344 {4.42140007, 0.654399991}, //
+
54345 {4.42144156, 0.653602481}, //
+
54346 {4.42156553, 0.652720988}, //
+
54347 {4.421772, 0.651755571}, //
+
54348 {4.42206192, 0.650706172}, //
+
54349 {4.42243385, 0.649572849}, //
+
54350 {4.42288876, 0.648355544}, //
+
54351 {4.42342663, 0.647054315}, //
+
54352 {4.42404699, 0.645669162}, //
+
54353 {4.42474985, 0.644200027}, //
+
54354 {4.42548466, 0.64267838}, //
+
54355 {4.42617702, 0.641113579}, //
+
54356 {4.42682791, 0.639505565}, //
+
54357 {4.42743635, 0.637854338}, //
+
54358 {4.42800331, 0.636159897}, //
+
54359 {4.42852783, 0.634422243}, //
+
54360 {4.42901039, 0.632641375}, //
+
54361 {4.42945147, 0.630817294}, //
+
54362 {4.4298501, 0.62895}, //
+
54363 {4.43020678, 0.627113581}, //
+
54364 {4.43052149, 0.625359893}, //
+
54365 {4.43079424, 0.623688877}, //
+
54366 {4.43102551, 0.622100592}, //
+
54367 {4.43121433, 0.620595038}, //
+
54368 {4.4313612, 0.619172215}, //
+
54369 {4.4314661, 0.617832124}, //
+
54370 {4.43152905, 0.616574705}, //
+
54371 {4.43155003, 0.615400016}, //
+
54372 {4.43155003, 0.614329636}, //
+
54373 {4.43155003, 0.613385201}, //
+
54374 {4.43155003, 0.610866666}, //
+
54375 {4.43155003, 0.610551834}, //
+
54376 {4.43155003, 0.610300004}, //
+
54377 {4.43003893, 0.613322198}, //
+
54378 {4.42949343, 0.614413559}, //
+
54379 {4.42886353, 0.615672827}, //
+
54380 {4.42815018, 0.6171}, //
+
54381 {4.42739439, 0.618673444}, //
+
54382 {4.42663908, 0.62037158}, //
+
54383 {4.42588329, 0.622194469}, //
+
54384 {4.42512798, 0.624141991}, //
+
54385 {4.4243722, 0.626214206}, //
+
54386 {4.42361689, 0.628411114}, //
+
54387 {4.4228611, 0.630732715}, //
+
54388 {4.42210579, 0.633179009}, //
+
54389 {4.42135, 0.635749996}, //
+
54390 {4.42058372, 0.638362348}, //
+
54391 {4.41977453, 0.640932739}, //
+
54392 {4.41892242, 0.643461108}, //
+
54393 {4.41802645, 0.645947516}, //
+
54394 {4.41708755, 0.648391962}, //
+
54395 {4.41610575, 0.650794446}, //
+
54396 {4.41508007, 0.65315491}, //
+
54397 {4.41401196, 0.655473471}, //
+
54398 {4.41289997, 0.65775001}, //
+
54399 {4.4117465, 0.659932733}, //
+
54400 {4.41055202, 0.661947548}, //
+
54401 {4.40931654, 0.663794458}, //
+
54402 {4.40804052, 0.665473461}, //
+
54403 {4.40672398, 0.666984558}, //
+
54404 {4.4053669, 0.668327749}, //
+
54405 {4.40396833, 0.669503093}, //
+
54406 {4.40252972, 0.670510471}, //
+
54407 {4.40105009, 0.671350002}, //
+
54408 {4.40033627, 0.672860503}, //
+
54409 {4.39970684, 0.674369752}, //
+
54410 {4.39916134, 0.67587775}, //
+
54411 {4.39869928, 0.677384555}, //
+
54412 {4.39832163, 0.678890109}, //
+
54413 {4.3980279, 0.680394471}, //
+
54414 {4.39781809, 0.681897521}, //
+
54415 {4.3976922, 0.683399379}, //
+
54416 {4.39764977, 0.684899986}, //
+
54417 {4.3976078, 0.686368525}, //
+
54418 {4.39748192, 0.68775183}, //
+
54419 {4.39727211, 0.689050019}, //
+
54420 {4.39697838, 0.690262973}, //
+
54421 {4.39660072, 0.691390753}, //
+
54422 {4.39613867, 0.692433357}, //
+
54423 {4.39559317, 0.693390727}, //
+
54424 {4.39496374, 0.694262981}, //
+
54425 {4.39424992, 0.695050001}, //
+
54426 {4.3933692, 0.695680261}, //
+
54427 {4.39223766, 0.696059883}, //
+
54428 {4.39085579, 0.696188867}, //
+
54429 {4.38922262, 0.696067274}, //
+
54430 {4.38733959, 0.695695043}, //
+
54431 {4.38520575, 0.695072234}, //
+
54432 {4.38282108, 0.694198787}, //
+
54433 {4.3801856, 0.693074703}, //
+
54434 {4.37729979, 0.691699982}, //
+
54435 {4.37583065, 0.690923452}, //
+
54436 {4.37444592, 0.690104961}, //
+
54437 {4.37314463, 0.689244449}, //
+
54438 {4.37192726, 0.688341975}, //
+
54439 {4.37079382, 0.68739754}, //
+
54440 {4.3697443, 0.686411083}, //
+
54441 {4.36877918, 0.685382724}, //
+
54442 {4.36789751, 0.684312344}, //
+
54443 {4.36709976, 0.683200002}, //
+
54444 {4.3663969, 0.68209815}, //
+
54445 {4.36577654, 0.681037009}, //
+
54446 {4.36523867, 0.680016696}, //
+
54447 {4.36478376, 0.679037035}, //
+
54448 {4.36441183, 0.678098142}, //
+
54449 {4.36412239, 0.677200019}, //
+
54450 {4.36391544, 0.676342607}, //
+
54451 {4.36379147, 0.675525904}, //
+
54452 {4.36374998, 0.67474997}, //
+
54453 {4.3614831, 0.672483325}, //
+
54454 {4.359972, 0.670972228}, //
+
54455 {4.35694981, 0.667949975}, //
+
54456 {4.35611105, 0.667236447}, //
+
54457 {4.3551054, 0.666606784}, //
+
54458 {4.35393333, 0.666061103}, //
+
54459 {4.35259438, 0.665599406}, //
+
54460 {4.351089, 0.665221632}, //
+
54461 {4.34941673, 0.664927781}, //
+
54462 {4.34757757, 0.664717913}, //
+
54463 {4.34557199, 0.664591968}, //
+
54464 {4.3434, 0.664550006}, //
+
54465 {4.33898211, 0.664508045}, //
+
54466 {4.33477306, 0.6643821}, //
+
54467 {4.3307724, 0.664172232}, //
+
54468 {4.32698011, 0.663878381}, //
+
54469 {4.32339668, 0.663500607}, //
+
54470 {4.32002211, 0.663038909}, //
+
54471 {4.31685638, 0.662493229}, //
+
54472 {4.31389856, 0.661863565}, //
+
54473 {4.31115007, 0.661149979}, //
+
54474 {4.30845356, 0.660362959}, //
+
54475 {4.30563164, 0.659490764}, //
+
54476 {4.30268335, 0.658533335}, //
+
54477 {4.29960918, 0.65749073}, //
+
54478 {4.29640913, 0.656362951}, //
+
54479 {4.29308319, 0.655149996}, //
+
54480 {4.28963137, 0.653851867}, //
+
54481 {4.28605366, 0.652468503}, //
+
54482 {4.28235006, 0.651000023}, //
+
54483 {4.28087044, 0.650286436}, //
+
54484 {4.27943134, 0.649656773}, //
+
54485 {4.27803326, 0.649111092}, //
+
54486 {4.2766757, 0.648649395}, //
+
54487 {4.27535915, 0.64827162}, //
+
54488 {4.27408314, 0.647977769}, //
+
54489 {4.27284813, 0.647767901}, //
+
54490 {4.27165365, 0.647641957}, //
+
54491 {4.27050018, 0.647599995}, //
+
54492 {4.26200008, 0.647599995}, //
+
54493 {4.26123381, 0.648292601}, //
+
54494 {4.26042461, 0.648859262}, //
+
54495 {4.25957203, 0.649299979}, //
+
54496 {4.25867653, 0.649614811}, //
+
54497 {4.25773764, 0.649803698}, //
+
54498 {4.25675535, 0.649866641}, //
+
54499 {4.25573015, 0.649803698}, //
+
54500 {4.25466156, 0.649614811}, //
+
54501 {4.25355005, 0.649299979}, //
+
54502 {4.25239563, 0.648859859}, //
+
54503 {4.25119925, 0.648295045}, //
+
54504 {4.2499609, 0.647605538}, //
+
54505 {4.24868107, 0.646791339}, //
+
54506 {4.2473588, 0.645852447}, //
+
54507 {4.24599457, 0.644788861}, //
+
54508 {4.24458838, 0.643600643}, //
+
54509 {4.24314022, 0.642287672}, //
+
54510 {4.2416501, 0.640850008}, //
+
54511 {4.24010754, 0.638583362}, //
+
54512 {4.23847961, 0.636316657}, //
+
54513 {4.23676682, 0.634050012}, //
+
54514 {4.23496866, 0.631783307}, //
+
54515 {4.23308516, 0.629516661}, //
+
54516 {4.23111677, 0.627250016}, //
+
54517 {4.22906303, 0.624983311}, //
+
54518 {4.22692394, 0.622716665}, //
+
54519 {4.22469997, 0.62045002}, //
+
54520 {4.21811676, 0.613866687}, //
+
54521 {4.21600389, 0.611753702}, //
+
54522 {4.20604992, 0.601800025}, //
+
54523 {4.20421362, 0.599942565}, //
+
54524 {4.20245981, 0.598125935}, //
+
54525 {4.20078897, 0.596350014}, //
+
54526 {4.19920063, 0.594614804}, //
+
54527 {4.19769526, 0.592920363}, //
+
54528 {4.19627237, 0.591266692}, //
+
54529 {4.19493198, 0.58965373}, //
+
54530 {4.19367456, 0.588081479}, //
+
54531 {4.19250011, 0.586549997}, //
+
54532 {4.190485, 0.583883345}, //
+
54533 {4.18966675, 0.582799971}, //
+
54534 {4.18746281, 0.579883337}, //
+
54535 {4.18739986, 0.57980001}, //
+
54536 });
+
54537 polys.push_back({
+
54538 {3.22479439, 0.671433926}, //
+
54539 {3.22152233, 0.671685815}, //
+
54540 {3.21808338, 0.672105551}, //
+
54541 {3.21447778, 0.672693193}, //
+
54542 {3.21070552, 0.673448741}, //
+
54543 {3.20676661, 0.674372196}, //
+
54544 {3.20266104, 0.675463557}, //
+
54545 {3.19838881, 0.676722825}, //
+
54546 {3.19394994, 0.678149998}, //
+
54547 {3.1916945, 0.679608643}, //
+
54548 {3.18943882, 0.680984557}, //
+
54549 {3.18718338, 0.682277799}, //
+
54550 {3.1849277, 0.68348825}, //
+
54551 {3.18267226, 0.684616029}, //
+
54552 {3.18041658, 0.685661137}, //
+
54553 {3.17816114, 0.686623454}, //
+
54554 {3.17590547, 0.687503099}, //
+
54555 {3.17365003, 0.688300014}, //
+
54556 {3.17075372, 0.689055562}, //
+
54557 {3.16810918, 0.68981111}, //
+
54558 {3.16571665, 0.690566659}, //
+
54559 {3.16357589, 0.691322207}, //
+
54560 {3.16168714, 0.692077756}, //
+
54561 {3.16004992, 0.692833304}, //
+
54562 {3.1586647, 0.693588912}, //
+
54563 {3.1575315, 0.694344461}, //
+
54564 {3.15665007, 0.695100009}, //
+
54565 {3.15517044, 0.695120394}, //
+
54566 {3.15373158, 0.695181489}, //
+
54567 {3.15233326, 0.695283353}, //
+
54568 {3.15097594, 0.695425928}, //
+
54569 {3.14965916, 0.695609272}, //
+
54570 {3.14838338, 0.695833325}, //
+
54571 {3.14714813, 0.696098149}, //
+
54572 {3.14595366, 0.696403682}, //
+
54573 {3.14479995, 0.696749985}, //
+
54574 {3.14360428, 0.697190762}, //
+
54575 {3.14228392, 0.697757423}, //
+
54576 {3.14083886, 0.698450029}, //
+
54577 {3.13926911, 0.69926852}, //
+
54578 {3.13757467, 0.700212955}, //
+
54579 {3.13575554, 0.701283336}, //
+
54580 {3.13381171, 0.702479601}, //
+
54581 {3.13174319, 0.70380187}, //
+
54582 {3.12954998, 0.705250025}, //
+
54583 {3.12727284, 0.706823468}, //
+
54584 {3.12495255, 0.708521605}, //
+
54585 {3.12258887, 0.710344434}, //
+
54586 {3.12048125, 0.712050021}, //
+
54587 {3.1212914, 0.712050021}, //
+
54588 {3.12275004, 0.712050021}, //
+
54589 {3.1257925, 0.712091386}, //
+
54590 {3.12887597, 0.712215424}, //
+
54591 {3.13199997, 0.712422252}, //
+
54592 {3.13516474, 0.712711751}, //
+
54593 {3.13837028, 0.713083923}, //
+
54594 {3.14161658, 0.713538885}, //
+
54595 {3.14490366, 0.714076519}, //
+
54596 {3.14823151, 0.714696884}, //
+
54597 {3.15159988, 0.715399981}, //
+
54598 {3.15492582, 0.71603024}, //
+
54599 {3.15812588, 0.716409862}, //
+
54600 {3.16120005, 0.716538906}, //
+
54601 {3.16414809, 0.716417313}, //
+
54602 {3.16697025, 0.716045082}, //
+
54603 {3.16966677, 0.715422213}, //
+
54604 {3.17223692, 0.714548767}, //
+
54605 {3.17468143, 0.713424683}, //
+
54606 {3.17700005, 0.712050021}, //
+
54607 {3.17704201, 0.711336434}, //
+
54608 {3.17716789, 0.71070677}, //
+
54609 {3.1773777, 0.71016109}, //
+
54610 {3.17767167, 0.709699392}, //
+
54611 {3.17804933, 0.709321618}, //
+
54612 {3.17851114, 0.709027767}, //
+
54613 {3.17905688, 0.708817899}, //
+
54614 {3.17968631, 0.708691955}, //
+
54615 {3.18039989, 0.708649993}, //
+
54616 {3.18571925, 0.706341982}, //
+
54617 {3.1911211, 0.70395124}, //
+
54618 {3.19660544, 0.701477766}, //
+
54619 {3.20217276, 0.698921621}, //
+
54620 {3.2078228, 0.696282744}, //
+
54621 {3.21355557, 0.693561137}, //
+
54622 {3.21937108, 0.690756798}, //
+
54623 {3.22526908, 0.687869728}, //
+
54624 {3.23125005, 0.684899986}, //
+
54625 {3.23425055, 0.684186399}, //
+
54626 {3.23720813, 0.683556795}, //
+
54627 {3.24012232, 0.683011115}, //
+
54628 {3.24299312, 0.682549357}, //
+
54629 {3.245821, 0.682171583}, //
+
54630 {3.24860549, 0.681877792}, //
+
54631 {3.25134683, 0.681667924}, //
+
54632 {3.25404501, 0.681541979}, //
+
54633 {3.25670004, 0.681500018}, //
+
54634 {3.25929141, 0.681520998}, //
+
54635 {3.26179886, 0.681583941}, //
+
54636 {3.26422215, 0.681688905}, //
+
54637 {3.26656175, 0.68183583}, //
+
54638 {3.26881719, 0.682024717}, //
+
54639 {3.27098894, 0.682255566}, //
+
54640 {3.27307653, 0.682528377}, //
+
54641 {3.2750802, 0.682843208}, //
+
54642 {3.27699995, 0.683200002}, //
+
54643 {3.27878404, 0.683556795}, //
+
54644 {3.28172231, 0.684144437}, //
+
54645 {3.28287649, 0.684375286}, //
+
54646 {3.28382111, 0.684564173}, //
+
54647 {3.28455567, 0.684711099}, //
+
54648 {3.28508019, 0.684816062}, //
+
54649 {3.28539515, 0.684879005}, //
+
54650 {3.28550005, 0.684899986}, //
+
54651 {3.28316045, 0.683441341}, //
+
54652 {3.280653, 0.682065427}, //
+
54653 {3.27797771, 0.680772245}, //
+
54654 {3.27513456, 0.679561734}, //
+
54655 {3.27212358, 0.678433955}, //
+
54656 {3.2689445, 0.677388906}, //
+
54657 {3.26559758, 0.67642653}, //
+
54658 {3.26208282, 0.675546885}, //
+
54659 {3.25839996, 0.67474997}, //
+
54660 {3.25467539, 0.674036443}, //
+
54661 {3.2510345, 0.67340678}, //
+
54662 {3.24747777, 0.672861099}, //
+
54663 {3.24400496, 0.672399402}, //
+
54664 {3.24061608, 0.672021627}, //
+
54665 {3.23731112, 0.671727777}, //
+
54666 {3.23409009, 0.671517909}, //
+
54667 {3.23095298, 0.671391964}, //
+
54668 {3.22790003, 0.671350002}, //
+
54669 });
+
54670 polys.push_back({
+
54671 {4.43494987, 0.695685208}, //
+
54672 {4.43494987, 0.695246279}, //
+
54673 {4.43494987, 0.695100009}, //
+
54674 });
+
54675 polys.push_back({
+
54676 {0.598646939, 0.643209875}, //
+
54677 {0.592622817, 0.643580258}, //
+
54678 {0.586600006, 0.644200027}, //
+
54679 {0.585046887, 0.644913554}, //
+
54680 {0.583409905, 0.645543218}, //
+
54681 {0.581688881, 0.646088898}, //
+
54682 {0.579883933, 0.646550596}, //
+
54683 {0.577995062, 0.64692837}, //
+
54684 {0.576022208, 0.647222221}, //
+
54685 {0.57396543, 0.647432089}, //
+
54686 {0.57182467, 0.647558033}, //
+
54687 {0.569599986, 0.647599995}, //
+
54688 {0.542500019, 0.647599995}, //
+
54689 {0.535779357, 0.67107296}, //
+
54690 {0.535730362, 0.671350002}, //
+
54691 {0.535867929, 0.671350002}, //
+
54692 {0.536077797, 0.671350002}, //
+
54693 {0.536371589, 0.671350002}, //
+
54694 {0.539099991, 0.671350002}, //
+
54695 {0.539875925, 0.671370983}, //
+
54696 {0.540692568, 0.671433926}, //
+
54697 {0.541549981, 0.671538889}, //
+
54698 {0.542448163, 0.671685815}, //
+
54699 {0.543387055, 0.671874702}, //
+
54700 {0.544366658, 0.672105551}, //
+
54701 {0.54538703, 0.672378421}, //
+
54702 {0.546448171, 0.672693193}, //
+
54703 {0.547550023, 0.673049986}, //
+
54704 {0.548683345, 0.67340678}, //
+
54705 {0.549816668, 0.673721611}, //
+
54706 {0.550949991, 0.673994422}, //
+
54707 {0.552083313, 0.67422533}, //
+
54708 {0.553216696, 0.674414217}, //
+
54709 {0.554350019, 0.674561083}, //
+
54710 {0.555483341, 0.674666047}, //
+
54711 {0.556616664, 0.67472899}, //
+
54712 {0.557749987, 0.67474997}, //
+
54713 {0.55890435, 0.674708009}, //
+
54714 {0.560100615, 0.674582124}, //
+
54715 {0.561338902, 0.674372196}, //
+
54716 {0.56261915, 0.674078405}, //
+
54717 {0.56394136, 0.673700631}, //
+
54718 {0.565305531, 0.673238873}, //
+
54719 {0.566711724, 0.672693193}, //
+
54720 {0.568159878, 0.672063589}, //
+
54721 {0.569649994, 0.671350002}, //
+
54722 {0.570395052, 0.671308041}, //
+
54723 {0.571141362, 0.671182096}, //
+
54724 {0.571888864, 0.670972228}, //
+
54725 {0.572637677, 0.670678377}, //
+
54726 {0.573387682, 0.670300603}, //
+
54727 {0.57413888, 0.669838905}, //
+
54728 {0.574891329, 0.669293225}, //
+
54729 {0.575645089, 0.668663561}, //
+
54730 {0.576399982, 0.667949975}, //
+
54731 {0.577931464, 0.667215407}, //
+
54732 {0.579503715, 0.666522861}, //
+
54733 {0.581116676, 0.665872216}, //
+
54734 {0.582770348, 0.665263593}, //
+
54735 {0.584464788, 0.664696932}, //
+
54736 {0.586199999, 0.664172232}, //
+
54737 {0.587975919, 0.663689494}, //
+
54738 {0.589792609, 0.663248777}, //
+
54739 {0.591650009, 0.662850022}, //
+
54740 {0.593643188, 0.662451863}, //
+
54741 {0.595845044, 0.662012935}, //
+
54742 {0.598255575, 0.661533356}, //
+
54743 {0.600874662, 0.661012948}, //
+
54744 {0.603702486, 0.660451829}, //
+
54745 {0.606738865, 0.659850001}, //
+
54746 {0.609983921, 0.659207404}, //
+
54747 {0.613437653, 0.658524096}, //
+
54748 {0.6171, 0.657800019}, //
+
54749 {0.620132089, 0.657841384}, //
+
54750 {0.623206198, 0.657965422}, //
+
54751 {0.62632221, 0.65817225}, //
+
54752 {0.629480243, 0.65846175}, //
+
54753 {0.632680237, 0.658833921}, //
+
54754 {0.635922194, 0.659288883}, //
+
54755 {0.639206171, 0.659826517}, //
+
54756 {0.64253211, 0.660446942}, //
+
54757 {0.645900011, 0.661149979}, //
+
54758 {0.64922595, 0.661884546}, //
+
54759 {0.652425945, 0.662577152}, //
+
54760 {0.655499995, 0.663227797}, //
+
54761 {0.65844816, 0.66383642}, //
+
54762 {0.66127038, 0.664403081}, //
+
54763 {0.663966656, 0.664927781}, //
+
54764 {0.666537046, 0.665410519}, //
+
54765 {0.668981493, 0.665851235}, //
+
54766 {0.671299994, 0.66624999}, //
+
54767 {0.681500018, 0.667949975}, //
+
54768 {0.679925919, 0.667425334}, //
+
54769 {0.679233313, 0.667194426}, //
+
54770 {0.678414822, 0.666921616}, //
+
54771 {0.676400006, 0.66624999}, //
+
54772 {0.675277174, 0.665830255}, //
+
54773 {0.67415309, 0.665326536}, //
+
54774 {0.673027754, 0.664738894}, //
+
54775 {0.671901226, 0.664067268}, //
+
54776 {0.670773447, 0.66331172}, //
+
54777 {0.669644415, 0.662472248}, //
+
54778 {0.668514192, 0.661548793}, //
+
54779 {0.667382717, 0.660541356}, //
+
54780 {0.66624999, 0.659449995}, //
+
54781 {0.665074706, 0.658348143}, //
+
54782 {0.663815439, 0.657287061}, //
+
54783 {0.662472248, 0.656266689}, //
+
54784 {0.661045074, 0.655287027}, //
+
54785 {0.659533978, 0.654348135}, //
+
54786 {0.657938898, 0.653450012}, //
+
54787 {0.656259894, 0.652592599}, //
+
54788 {0.654496908, 0.651775897}, //
+
54789 {0.652649999, 0.651000023}, //
+
54790 {0.650835156, 0.650286436}, //
+
54791 {0.649146318, 0.649656773}, //
+
54792 {0.647583306, 0.649111092}, //
+
54793 {0.646146297, 0.648649395}, //
+
54794 {0.644835174, 0.64827162}, //
+
54795 {0.643649995, 0.647977769}, //
+
54796 {0.642590761, 0.647767901}, //
+
54797 {0.641657412, 0.647641957}, //
+
54798 {0.640850008, 0.647599995}, //
+
54799 {0.634817302, 0.646224678}, //
+
54800 {0.628785789, 0.645098746}, //
+
54801 {0.622755527, 0.6442222}, //
+
54802 {0.616726518, 0.64359504}, //
+
54803 {0.61069876, 0.643217266}, //
+
54804 {0.604672194, 0.643088877}, //
+
54805 });
+
54806 polys.push_back({
+
54807 {1.22050309, 0.623983324}, //
+
54808 {1.21932781, 0.624650002}, //
+
54809 {1.21829939, 0.625233352}, //
+
54810 {1.20875001, 0.630649984}, //
+
54811 {1.20605373, 0.632077157}, //
+
54812 {1.20323145, 0.633336425}, //
+
54813 {1.20028329, 0.634427786}, //
+
54814 {1.19720924, 0.635351241}, //
+
54815 {1.1940093, 0.636106789}, //
+
54816 {1.19068336, 0.636694431}, //
+
54817 {1.18723154, 0.637114227}, //
+
54818 {1.18365371, 0.637366056}, //
+
54819 {1.17995, 0.63744998}, //
+
54820 {1.17768395, 0.638163567}, //
+
54821 {1.17541909, 0.63879323}, //
+
54822 {1.17315555, 0.639338911}, //
+
54823 {1.17089319, 0.639800608}, //
+
54824 {1.16863215, 0.640178382}, //
+
54825 {1.16637218, 0.640472233}, //
+
54826 {1.16411352, 0.640682101}, //
+
54827 {1.16185617, 0.640808046}, //
+
54828 {1.15960002, 0.640850008}, //
+
54829 {1.1542809, 0.642183304}, //
+
54830 {1.14887905, 0.643183351}, //
+
54831 {1.14339447, 0.643850029}, //
+
54832 {1.13782716, 0.644183338}, //
+
54833 {1.13217711, 0.644183338}, //
+
54834 {1.12644446, 0.643850029}, //
+
54835 {1.12062895, 0.643183351}, //
+
54836 {1.11473083, 0.642183304}, //
+
54837 {1.10874999, 0.640850008}, //
+
54838 {1.10577035, 0.640136421}, //
+
54839 {1.10287595, 0.639506817}, //
+
54840 {1.10006666, 0.638961136}, //
+
54841 {1.09734261, 0.638499379}, //
+
54842 {1.09470367, 0.638121605}, //
+
54843 {1.09214997, 0.637827754}, //
+
54844 {1.08968151, 0.637617886}, //
+
54845 {1.08729815, 0.637492001}, //
+
54846 {1.08500004, 0.63744998}, //
+
54847 {1.08282781, 0.637491345}, //
+
54848 {1.08082223, 0.637615442}, //
+
54849 {1.07898331, 0.637822211}, //
+
54850 {1.07731116, 0.638111711}, //
+
54851 {1.07580554, 0.638483942}, //
+
54852 {1.07446671, 0.638938904}, //
+
54853 {1.0732944, 0.639476538}, //
+
54854 {1.07228887, 0.640096903}, //
+
54855 {1.07145, 0.640799999}, //
+
54856 {1.0708617, 0.641555548}, //
+
54857 {1.07060802, 0.642311096}, //
+
54858 {1.07068884, 0.643066645}, //
+
54859 {1.07110429, 0.643822193}, //
+
54860 {1.07185435, 0.644577801}, //
+
54861 {1.07293892, 0.64533335}, //
+
54862 {1.07435799, 0.646088898}, //
+
54863 {1.07611167, 0.646844447}, //
+
54864 {1.07819998, 0.647599995}, //
+
54865 {1.07966912, 0.648355544}, //
+
54866 {1.08105433, 0.649111092}, //
+
54867 {1.0823555, 0.649866641}, //
+
54868 {1.08357286, 0.650622249}, //
+
54869 {1.08470619, 0.651377797}, //
+
54870 {1.08575559, 0.652133346}, //
+
54871 {1.08672094, 0.652888894}, //
+
54872 {1.0876025, 0.653644443}, //
+
54873 {1.08840001, 0.654399991}, //
+
54874 {1.09065557, 0.655154943}, //
+
54875 {1.09291112, 0.655908644}, //
+
54876 {1.09516668, 0.656661093}, //
+
54877 {1.09742224, 0.65741235}, //
+
54878 {1.0996778, 0.658162355}, //
+
54879 {1.10193336, 0.658911109}, //
+
54880 {1.10418892, 0.65965867}, //
+
54881 {1.10644448, 0.660404921}, //
+
54882 {1.10870004, 0.661149979}, //
+
54883 {1.11113393, 0.661863565}, //
+
54884 {1.11390245, 0.662493229}, //
+
54885 {1.11700559, 0.663038909}, //
+
54886 {1.12044322, 0.663500607}, //
+
54887 {1.12421548, 0.663878381}, //
+
54888 {1.12832224, 0.664172232}, //
+
54889 {1.13276362, 0.6643821}, //
+
54890 {1.13753951, 0.664508045}, //
+
54891 {1.14265001, 0.664550006}, //
+
54892 {1.14641666, 0.664570987}, //
+
54893 {1.15018332, 0.66463393}, //
+
54894 {1.15394998, 0.664738894}, //
+
54895 {1.15771663, 0.664885819}, //
+
54896 {1.16148329, 0.665074706}, //
+
54897 {1.16524994, 0.665305555}, //
+
54898 {1.16901672, 0.665578365}, //
+
54899 {1.17278337, 0.665893197}, //
+
54900 {1.17655003, 0.66624999}, //
+
54901 {1.18029571, 0.666627765}, //
+
54902 {1.18399942, 0.667005539}, //
+
54903 {1.18766105, 0.667383313}, //
+
54904 {1.19128084, 0.667761087}, //
+
54905 {1.19485867, 0.668138862}, //
+
54906 {1.19839442, 0.668516695}, //
+
54907 {1.20188832, 0.66889447}, //
+
54908 {1.20534015, 0.669272244}, //
+
54909 {1.20875001, 0.669650018}, //
+
54910 {1.21477473, 0.670321584}, //
+
54911 {1.21722221, 0.670594454}, //
+
54912 {1.21929324, 0.670825303}, //
+
54913 {1.22399998, 0.671350002}, //
+
54914 {1.22399998, 0.670552492}, //
+
54915 {1.22399998, 0.668705583}, //
+
54916 {1.22399998, 0.665305555}, //
+
54917 {1.22399998, 0.664004326}, //
+
54918 {1.22399998, 0.662619114}, //
+
54919 {1.22399998, 0.661149979}, //
+
54920 {1.223979, 0.659649372}, //
+
54921 {1.22391605, 0.658147514}, //
+
54922 {1.22381115, 0.656644464}, //
+
54923 {1.22366416, 0.655140102}, //
+
54924 {1.22347534, 0.653634548}, //
+
54925 {1.22324443, 0.652127802}, //
+
54926 {1.22297156, 0.650619745}, //
+
54927 {1.22265685, 0.649110496}, //
+
54928 {1.22230005, 0.647599995}, //
+
54929 {1.22195375, 0.646078408}, //
+
54930 {1.2216481, 0.644513607}, //
+
54931 {1.22138333, 0.642905533}, //
+
54932 {1.22115922, 0.641254306}, //
+
54933 {1.22097588, 0.639559865}, //
+
54934 {1.2208333, 0.637822211}, //
+
54935 {1.2207315, 0.636041343}, //
+
54936 {1.22067034, 0.634217262}, //
+
54937 {1.22064996, 0.632350028}, //
+
54938 {1.22064996, 0.62901175}, //
+
54939 {1.22064996, 0.627655566}, //
+
54940 {1.22064996, 0.626507998}, //
+
54941 {1.22064996, 0.623899996}, //
+
54942 });
+
54943 polys.push_back({
+
54944 {0.966127753, 0.571699977}, //
+
54945 {0.963977158, 0.571925938}, //
+
54946 {0.961784542, 0.572359264}, //
+
54947 {0.959814489, 0.572924197}, //
+
54948 {0.958029032, 0.578497529}, //
+
54949 {0.955011129, 0.587327778}, //
+
54950 {0.951991975, 0.595571578}, //
+
54951 {0.948971629, 0.603228986}, //
+
54952 {0.947319031, 0.607096255}, //
+
54953 {0.951078415, 0.607655585}, //
+
54954 {0.955780268, 0.608411133}, //
+
54955 {0.960105538, 0.609166682}, //
+
54956 {0.964054346, 0.60992223}, //
+
54957 {0.967626572, 0.610677779}, //
+
54958 {0.970822215, 0.611433327}, //
+
54959 {0.973641336, 0.612188876}, //
+
54960 {0.976083934, 0.612944424}, //
+
54961 {0.97815001, 0.613699973}, //
+
54962 {0.980059862, 0.614455581}, //
+
54963 {0.982011735, 0.615211129}, //
+
54964 {0.98400557, 0.615966678}, //
+
54965 {0.986041367, 0.616722226}, //
+
54966 {0.988119125, 0.617477775}, //
+
54967 {0.990238905, 0.618233323}, //
+
54968 {0.992400646, 0.618988872}, //
+
54969 {0.994604349, 0.61974442}, //
+
54970 {0.996850014, 0.620500028}, //
+
54971 {0.9984864, 0.621296942}, //
+
54972 {1.00037348, 0.622176528}, //
+
54973 {1.00251114, 0.623138905}, //
+
54974 {1.00489938, 0.624183953}, //
+
54975 {1.00753832, 0.625311732}, //
+
54976 {1.01042783, 0.626522243}, //
+
54977 {1.01356792, 0.627815425}, //
+
54978 {1.01695859, 0.629191339}, //
+
54979 {1.02059996, 0.630649984}, //
+
54980 {1.02207959, 0.631384552}, //
+
54981 {1.02351856, 0.632077157}, //
+
54982 {1.02491665, 0.632727802}, //
+
54983 {1.02627409, 0.633336425}, //
+
54984 {1.02759075, 0.633903086}, //
+
54985 {1.02886665, 0.634427786}, //
+
54986 {1.0301019, 0.634910464}, //
+
54987 {1.03129625, 0.635351241}, //
+
54988 {1.03244996, 0.635749996}, //
+
54989 {1.03358269, 0.636085808}, //
+
54990 {1.03471422, 0.636337638}, //
+
54991 {1.03584445, 0.636505544}, //
+
54992 {1.03697348, 0.636589527}, //
+
54993 {1.0381012, 0.636589527}, //
+
54994 {1.03922772, 0.636505544}, //
+
54995 {1.04035306, 0.636337638}, //
+
54996 {1.0414772, 0.636085808}, //
+
54997 {1.04260004, 0.635749996}, //
+
54998 {1.0436914, 0.635372221}, //
+
54999 {1.04469872, 0.634994447}, //
+
55000 {1.04562223, 0.634616673}, //
+
55001 {1.0464617, 0.634238899}, //
+
55002 {1.04721725, 0.633861125}, //
+
55003 {1.04788888, 0.63348335}, //
+
55004 {1.04847658, 0.633105576}, //
+
55005 {1.04898024, 0.632727802}, //
+
55006 {1.04939997, 0.632350028}, //
+
55007 {1.04977775, 0.631993234}, //
+
55008 {1.05015552, 0.631678402}, //
+
55009 {1.05053329, 0.631405532}, //
+
55010 {1.05091107, 0.631174684}, //
+
55011 {1.05128884, 0.630985796}, //
+
55012 {1.05166662, 0.630838871}, //
+
55013 {1.05204439, 0.630733967}, //
+
55014 {1.05242217, 0.630670965}, //
+
55015 {1.05280006, 0.630649984}, //
+
55016 {1.05315673, 0.630649984}, //
+
55017 {1.05347157, 0.630649984}, //
+
55018 {1.05449998, 0.630649984}, //
+
55019 {1.05443704, 0.630587041}, //
+
55020 {1.05424809, 0.630398154}, //
+
55021 {1.05393338, 0.630083323}, //
+
55022 {1.05223334, 0.628383338}, //
+
55023 {1.05141485, 0.627564788}, //
+
55024 {1.05047035, 0.626620352}, //
+
55025 {1.04939997, 0.625549972}, //
+
55026 {1.04820371, 0.624448121}, //
+
55027 {1.04688144, 0.623387039}, //
+
55028 {1.04543328, 0.622366667}, //
+
55029 {1.04385924, 0.621387064}, //
+
55030 {1.0421592, 0.620448172}, //
+
55031 {1.04033339, 0.61954999}, //
+
55032 {1.03838146, 0.618692577}, //
+
55033 {1.03630376, 0.617875934}, //
+
55034 {1.03410006, 0.6171}, //
+
55035 {1.03186476, 0.616323471}, //
+
55036 {1.02967036, 0.61550492}, //
+
55037 {1.02751672, 0.614644468}, //
+
55038 {1.02540374, 0.613741994}, //
+
55039 {1.02333152, 0.612797558}, //
+
55040 {1.02129996, 0.611811101}, //
+
55041 {1.01930928, 0.610782743}, //
+
55042 {1.01735926, 0.609712362}, //
+
55043 {1.01545, 0.60860002}, //
+
55044 {1.01363516, 0.607498169}, //
+
55045 {1.01194632, 0.606437027}, //
+
55046 {1.01038337, 0.605416656}, //
+
55047 {1.0089463, 0.604437053}, //
+
55048 {1.00763524, 0.603498161}, //
+
55049 {1.00645006, 0.602599978}, //
+
55050 {1.00539076, 0.601742566}, //
+
55051 {1.00445735, 0.600925922}, //
+
55052 {1.00364995, 0.600149989}, //
+
55053 {1.00213885, 0.599352479}, //
+
55054 {1.00062776, 0.598470986}, //
+
55055 {0.999116659, 0.597505569}, //
+
55056 {0.997605562, 0.59645617}, //
+
55057 {0.996094465, 0.595322847}, //
+
55058 {0.994583309, 0.594105542}, //
+
55059 {0.993072212, 0.592804313}, //
+
55060 {0.991561115, 0.59141916}, //
+
55061 {0.990050018, 0.589950025}, //
+
55062 {0.989231467, 0.587756813}, //
+
55063 {0.988287032, 0.585688293}, //
+
55064 {0.987216651, 0.583744466}, //
+
55065 {0.986020386, 0.581925333}, //
+
55066 {0.984698176, 0.580230892}, //
+
55067 {0.983250022, 0.578661084}, //
+
55068 {0.981675923, 0.577216029}, //
+
55069 {0.979975939, 0.575895667}, //
+
55070 {0.97815001, 0.574699998}, //
+
55071 {0.976251245, 0.573681474}, //
+
55072 {0.974310517, 0.572870374}, //
+
55073 {0.972327769, 0.572266638}, //
+
55074 {0.970303059, 0.571870387}, //
+
55075 {0.968236446, 0.571681499}, //
+
55076 });
+
55077 polys.push_back({
+
55078 {4.27600145, 0.532391369}, //
+
55079 {4.27317715, 0.532515407}, //
+
55080 {4.27047777, 0.532722235}, //
+
55081 {4.26790285, 0.533011734}, //
+
55082 {4.26545286, 0.533383965}, //
+
55083 {4.2631278, 0.533838868}, //
+
55084 {4.2609272, 0.534376562}, //
+
55085 {4.25885105, 0.534996927}, //
+
55086 {4.25689983, 0.535700023}, //
+
55087 {4.2551055, 0.536476552}, //
+
55088 {4.25347757, 0.537295043}, //
+
55089 {4.25201654, 0.538155556}, //
+
55090 {4.25072241, 0.53905803}, //
+
55091 {4.24959421, 0.540002465}, //
+
55092 {4.24863338, 0.540988863}, //
+
55093 {4.24783897, 0.542017281}, //
+
55094 {4.24721098, 0.543087661}, //
+
55095 {4.24674988, 0.544200003}, //
+
55096 {4.24647713, 0.545311749}, //
+
55097 {4.24641418, 0.546380222}, //
+
55098 {4.24656105, 0.547405541}, //
+
55099 {4.24691772, 0.548387647}, //
+
55100 {4.24748468, 0.549326539}, //
+
55101 {4.24826097, 0.550222218}, //
+
55102 {4.24924755, 0.551074684}, //
+
55103 {4.25044394, 0.551883936}, //
+
55104 {4.25185013, 0.552649975}, //
+
55105 {4.25427341, 0.554181457}, //
+
55106 {4.25703287, 0.555753708}, //
+
55107 {4.26012754, 0.557366669}, //
+
55108 {4.26355886, 0.5590204}, //
+
55109 {4.2673254, 0.560714841}, //
+
55110 {4.27142763, 0.562449992}, //
+
55111 {4.27586603, 0.564225912}, //
+
55112 {4.28064013, 0.566042602}, //
+
55113 {4.28574991, 0.567900002}, //
+
55114 {4.29106903, 0.569725931}, //
+
55115 {4.29647112, 0.571425915}, //
+
55116 {4.3019557, 0.573000014}, //
+
55117 {4.30752277, 0.574448168}, //
+
55118 {4.31317282, 0.575770378}, //
+
55119 {4.31890535, 0.576966643}, //
+
55120 {4.32472086, 0.578037024}, //
+
55121 {4.33061934, 0.578981459}, //
+
55122 {4.33659983, 0.57980001}, //
+
55123 {4.34183598, 0.581331491}, //
+
55124 {4.34698772, 0.582903683}, //
+
55125 {4.35205555, 0.584516644}, //
+
55126 {4.35703945, 0.586170375}, //
+
55127 {4.36193943, 0.587864816}, //
+
55128 {4.36675549, 0.589600027}, //
+
55129 {4.37148762, 0.591375947}, //
+
55130 {4.37613583, 0.593192577}, //
+
55131 {4.38070011, 0.595049977}, //
+
55132 {4.38505411, 0.59687531}, //
+
55133 {4.3890729, 0.598573446}, //
+
55134 {4.39275551, 0.600144446}, //
+
55135 {4.39610243, 0.601588249}, //
+
55136 {4.39911366, 0.602904916}, //
+
55137 {4.40178871, 0.604094446}, //
+
55138 {4.40412855, 0.605156779}, //
+
55139 {4.40613222, 0.606091976}, //
+
55140 {4.4078002, 0.606899977}, //
+
55141 {4.4078002, 0.60832715}, //
+
55142 {4.4078002, 0.609586418}, //
+
55143 {4.4078002, 0.610153079}, //
+
55144 {4.4078002, 0.612671614}, //
+
55145 {4.4078002, 0.612944424}, //
+
55146 {4.4078002, 0.61336422}, //
+
55147 {4.4078002, 0.615127146}, //
+
55148 {4.4078002, 0.615777791}, //
+
55149 {4.4078002, 0.616386414}, //
+
55150 {4.4078002, 0.616953075}, //
+
55151 {4.4078002, 0.618799984}, //
+
55152 {4.40784216, 0.618443191}, //
+
55153 {4.40796804, 0.618128419}, //
+
55154 {4.40817785, 0.617855549}, //
+
55155 {4.40847158, 0.6176247}, //
+
55156 {4.40884924, 0.617435813}, //
+
55157 {4.40931129, 0.617288888}, //
+
55158 {4.4098568, 0.617183924}, //
+
55159 {4.41048622, 0.617120981}, //
+
55160 {4.41120005, 0.6171}, //
+
55161 {4.41197586, 0.616281509}, //
+
55162 {4.41279268, 0.615337014}, //
+
55163 {4.41365004, 0.614266694}, //
+
55164 {4.41454792, 0.613070369}, //
+
55165 {4.41548681, 0.611748159}, //
+
55166 {4.41646671, 0.610300004}, //
+
55167 {4.41748714, 0.608725905}, //
+
55168 {4.41854811, 0.607025921}, //
+
55169 {4.41965008, 0.605199993}, //
+
55170 {4.42074156, 0.603300631}, //
+
55171 {4.42174864, 0.601357996}, //
+
55172 {4.42267227, 0.599372208}, //
+
55173 {4.42351151, 0.597343206}, //
+
55174 {4.42426729, 0.595270991}, //
+
55175 {4.42493868, 0.593155563}, //
+
55176 {4.42552662, 0.590996921}, //
+
55177 {4.42603016, 0.588795066}, //
+
55178 {4.42644978, 0.586549997}, //
+
55179 {4.42682791, 0.584335804}, //
+
55180 {4.42720556, 0.582204342}, //
+
55181 {4.42758322, 0.580155551}, //
+
55182 {4.42796135, 0.578189492}, //
+
55183 {4.428339, 0.576306164}, //
+
55184 {4.42844152, 0.575816929}, //
+
55185 {4.42644978, 0.57980001}, //
+
55186 {4.42603016, 0.580554962}, //
+
55187 {4.42552662, 0.581308663}, //
+
55188 {4.42493868, 0.582061112}, //
+
55189 {4.42426729, 0.582812369}, //
+
55190 {4.42351151, 0.583562374}, //
+
55191 {4.42267227, 0.584311128}, //
+
55192 {4.42174864, 0.58505863}, //
+
55193 {4.42074156, 0.585804939}, //
+
55194 {4.41965008, 0.586549997}, //
+
55195 {4.41850615, 0.587222219}, //
+
55196 {4.4173193, 0.587727785}, //
+
55197 {4.41608906, 0.588066638}, //
+
55198 {4.41481543, 0.588238895}, //
+
55199 {4.41349888, 0.588244438}, //
+
55200 {4.41213894, 0.588083327}, //
+
55201 {4.41073561, 0.587755561}, //
+
55202 {4.40928936, 0.58726114}, //
+
55203 {4.4078002, 0.586600006}, //
+
55204 {4.40562773, 0.586558044}, //
+
55205 {4.40362215, 0.586432099}, //
+
55206 {4.40178347, 0.586222231}, //
+
55207 {4.4001112, 0.58592838}, //
+
55208 {4.39860535, 0.585550606}, //
+
55209 {4.39726686, 0.585088909}, //
+
55210 {4.39609432, 0.584543228}, //
+
55211 {4.39508867, 0.583913565}, //
+
55212 {4.39424992, 0.583199978}, //
+
55213 {4.39201498, 0.583158016}, //
+
55214 {4.38982058, 0.583032072}, //
+
55215 {4.3876667, 0.582822204}, //
+
55216 {4.38555384, 0.582528412}, //
+
55217 {4.3834815, 0.582150638}, //
+
55218 {4.38145018, 0.581688881}, //
+
55219 {4.37945938, 0.5811432}, //
+
55220 {4.37750912, 0.580513597}, //
+
55221 {4.37559986, 0.57980001}, //
+
55222 {4.37378454, 0.579003096}, //
+
55223 {4.37209368, 0.57812345}, //
+
55224 {4.37052774, 0.577161133}, //
+
55225 {4.36908627, 0.576116025}, //
+
55226 {4.36776972, 0.574988246}, //
+
55227 {4.36657763, 0.573777795}, //
+
55228 {4.36551046, 0.572484553}, //
+
55229 {4.36456776, 0.571108639}, //
+
55230 {4.36374998, 0.569649994}, //
+
55231 {4.36370802, 0.568894446}, //
+
55232 {4.36358213, 0.568138897}, //
+
55233 {4.36337233, 0.567383349}, //
+
55234 {4.36307859, 0.5666278}, //
+
55235 {4.36270046, 0.565872252}, //
+
55236 {4.36223888, 0.565116644}, //
+
55237 {4.36169338, 0.564361095}, //
+
55238 {4.36106348, 0.563605547}, //
+
55239 {4.36035013, 0.562849998}, //
+
55240 {4.35959435, 0.562115431}, //
+
55241 {4.35883904, 0.561422825}, //
+
55242 {4.35808325, 0.56077224}, //
+
55243 {4.35732794, 0.560163558}, //
+
55244 {4.35657215, 0.559596896}, //
+
55245 {4.35581684, 0.559072196}, //
+
55246 {4.35506105, 0.558589518}, //
+
55247 {4.35430574, 0.558148742}, //
+
55248 {4.35354996, 0.557749987}, //
+
55249 {4.35279465, 0.557393193}, //
+
55250 {4.35203886, 0.557078421}, //
+
55251 {4.35128355, 0.556805551}, //
+
55252 {4.35052776, 0.556574702}, //
+
55253 {4.34977245, 0.556385815}, //
+
55254 {4.34901667, 0.55623889}, //
+
55255 {4.34826088, 0.556133926}, //
+
55256 {4.34750557, 0.556070983}, //
+
55257 {4.34674978, 0.556050003}, //
+
55258 {4.3434, 0.556050003}, //
+
55259 {4.3417635, 0.555253088}, //
+
55260 {4.33987665, 0.554373443}, //
+
55261 {4.33773899, 0.553411126}, //
+
55262 {4.33535051, 0.552366078}, //
+
55263 {4.3327117, 0.551238298}, //
+
55264 {4.32982206, 0.550027788}, //
+
55265 {4.32668209, 0.548734546}, //
+
55266 {4.3232913, 0.547358632}, //
+
55267 {4.31965017, 0.545899987}, //
+
55268 {4.31445599, 0.54305619}, //
+
55269 {4.30943012, 0.540546894}, //
+
55270 {4.30457211, 0.538372219}, //
+
55271 {4.29988194, 0.536532104}, //
+
55272 {4.29536009, 0.53502655}, //
+
55273 {4.29100561, 0.533855557}, //
+
55274 {4.28681898, 0.533019125}, //
+
55275 {4.28280067, 0.532517254}, //
+
55276 {4.27895021, 0.532350004}, //
+
55277 });
+
55278 polys.push_back({
+
55279 {3.22790003, 0.576567888}, //
+
55280 {3.22790003, 0.576777756}, //
+
55281 {3.22790003, 0.577071607}, //
+
55282 {3.22790003, 0.57980001}, //
+
55283 {3.22792029, 0.580575943}, //
+
55284 {3.22798157, 0.581392586}, //
+
55285 {3.22808337, 0.582249999}, //
+
55286 {3.22822595, 0.583148122}, //
+
55287 {3.22840929, 0.584087014}, //
+
55288 {3.2286334, 0.585066676}, //
+
55289 {3.22889805, 0.586087048}, //
+
55290 {3.2292037, 0.58714813}, //
+
55291 {3.22954988, 0.588249981}, //
+
55292 {3.2299068, 0.589362323}, //
+
55293 {3.23022151, 0.590432703}, //
+
55294 {3.2304945, 0.591461122}, //
+
55295 {3.23072529, 0.592447519}, //
+
55296 {3.23091412, 0.593391955}, //
+
55297 {3.23106122, 0.594294429}, //
+
55298 {3.23116612, 0.595154941}, //
+
55299 {3.23122907, 0.595973432}, //
+
55300 {3.23125005, 0.596750021}, //
+
55301 {3.23125005, 0.597505569}, //
+
55302 {3.23125005, 0.599016666}, //
+
55303 {3.23125005, 0.599772215}, //
+
55304 {3.23125005, 0.603550017}, //
+
55305 {3.22525001, 0.603550017}, //
+
55306 {3.22395182, 0.603550017}, //
+
55307 {3.22256851, 0.603550017}, //
+
55308 {3.22110009, 0.603550017}, //
+
55309 {3.21954679, 0.603550017}, //
+
55310 {3.21790981, 0.603550017}, //
+
55311 {3.21052217, 0.603550017}, //
+
55312 {3.20846534, 0.603550017}, //
+
55313 {3.20632458, 0.603550017}, //
+
55314 {3.20409989, 0.603550017}, //
+
55315 {3.20184445, 0.603550017}, //
+
55316 {3.19958878, 0.603550017}, //
+
55317 {3.19056678, 0.603550017}, //
+
55318 {3.1883111, 0.603550017}, //
+
55319 {3.18605566, 0.603550017}, //
+
55320 {3.18379998, 0.603550017}, //
+
55321 {3.18304443, 0.603550017}, //
+
55322 {3.18228889, 0.603550017}, //
+
55323 {3.17926669, 0.603550017}, //
+
55324 {3.17851114, 0.603550017}, //
+
55325 {3.17700005, 0.603550017}, //
+
55326 {3.171, 0.603550017}, //
+
55327 {3.16970181, 0.603550017}, //
+
55328 {3.16831851, 0.603550017}, //
+
55329 {3.16685009, 0.603550017}, //
+
55330 {3.16304135, 0.603591383}, //
+
55331 {3.15914869, 0.60371542}, //
+
55332 {3.15517211, 0.603922248}, //
+
55333 {3.15111184, 0.604211748}, //
+
55334 {3.14696717, 0.604583979}, //
+
55335 {3.14273882, 0.605038881}, //
+
55336 {3.13842654, 0.605576515}, //
+
55337 {3.13403034, 0.60619694}, //
+
55338 {3.1326046, 0.606420636}, //
+
55339 {3.13474941, 0.606564224}, //
+
55340 {3.13727784, 0.60671109}, //
+
55341 {3.1395123, 0.606816053}, //
+
55342 {3.14145303, 0.606878996}, //
+
55343 {3.14310002, 0.606899977}, //
+
55344 {3.14314198, 0.607613564}, //
+
55345 {3.14326787, 0.608243227}, //
+
55346 {3.14347768, 0.608788908}, //
+
55347 {3.14377165, 0.609250605}, //
+
55348 {3.1441493, 0.609628379}, //
+
55349 {3.14461112, 0.60992223}, //
+
55350 {3.14515686, 0.610132098}, //
+
55351 {3.14578652, 0.610258043}, //
+
55352 {3.14650011, 0.610300004}, //
+
55353 {3.14725494, 0.611013591}, //
+
55354 {3.14800858, 0.611643195}, //
+
55355 {3.14876103, 0.612188876}, //
+
55356 {3.14951229, 0.612650633}, //
+
55357 {3.15026236, 0.613028407}, //
+
55358 {3.15101123, 0.613322198}, //
+
55359 {3.15175867, 0.613532126}, //
+
55360 {3.15250492, 0.613658011}, //
+
55361 {3.15324998, 0.613699973}, //
+
55362 {3.15404749, 0.613741994}, //
+
55363 {3.15492892, 0.613867879}, //
+
55364 {3.15589452, 0.614077806}, //
+
55365 {3.1569438, 0.614371598}, //
+
55366 {3.15807724, 0.614749372}, //
+
55367 {3.15929437, 0.615211129}, //
+
55368 {3.16059566, 0.61575681}, //
+
55369 {3.16198087, 0.616386414}, //
+
55370 {3.16345, 0.6171}, //
+
55371 {3.16514874, 0.61707902}, //
+
55372 {3.16722274, 0.617016077}, //
+
55373 {3.16967225, 0.616911113}, //
+
55374 {3.1724968, 0.616764188}, //
+
55375 {3.17569685, 0.616575301}, //
+
55376 {3.17927217, 0.616344452}, //
+
55377 {3.18322277, 0.616071582}, //
+
55378 {3.18754888, 0.61575681}, //
+
55379 {3.19225001, 0.615400016}, //
+
55380 {3.19708705, 0.615001261}, //
+
55381 {3.2017982, 0.614560485}, //
+
55382 {3.20638323, 0.614077806}, //
+
55383 {3.21084261, 0.613553107}, //
+
55384 {3.21517587, 0.612986445}, //
+
55385 {3.21938324, 0.612377763}, //
+
55386 {3.22346473, 0.611727178}, //
+
55387 {3.22742033, 0.611034572}, //
+
55388 {3.23125005, 0.610300004}, //
+
55389 {3.2326982, 0.609586418}, //
+
55390 {3.23402047, 0.608956814}, //
+
55391 {3.23521662, 0.608411133}, //
+
55392 {3.23628712, 0.607949376}, //
+
55393 {3.23723149, 0.607571602}, //
+
55394 {3.23804998, 0.607277751}, //
+
55395 {3.23874259, 0.607067883}, //
+
55396 {3.23930931, 0.606941998}, //
+
55397 {3.23974991, 0.606899977}, //
+
55398 {3.2401278, 0.606878996}, //
+
55399 {3.24050546, 0.606816053}, //
+
55400 {3.24088335, 0.60671109}, //
+
55401 {3.24126101, 0.606564224}, //
+
55402 {3.2416389, 0.606375337}, //
+
55403 {3.24201655, 0.606144428}, //
+
55404 {3.24239445, 0.605871618}, //
+
55405 {3.24277234, 0.605556786}, //
+
55406 {3.24315, 0.605199993}, //
+
55407 {3.24350691, 0.60485369}, //
+
55408 {3.24475074, 0.603646219}, //
+
55409 {3.24458098, 0.603280902}, //
+
55410 {3.24451423, 0.603214204}, //
+
55411 {3.24409437, 0.602794468}, //
+
55412 {3.24382162, 0.602521598}, //
+
55413 {3.24350691, 0.602206767}, //
+
55414 {3.24315, 0.601849973}, //
+
55415 {3.24279332, 0.601493239}, //
+
55416 {3.24247837, 0.601178408}, //
+
55417 {3.24220562, 0.600905538}, //
+
55418 {3.24178576, 0.600485802}, //
+
55419 {3.24145007, 0.600149989}, //
+
55420 {3.24042153, 0.600149989}, //
+
55421 {3.24010682, 0.600149989}, //
+
55422 {3.23974991, 0.600149989}, //
+
55423 {3.23813391, 0.600149989}, //
+
55424 {3.23807096, 0.600149989}, //
+
55425 {3.23804998, 0.600149989}, //
+
55426 {3.22790003, 0.576399982}, //
+
55427 });
+
55428 polys.push_back({
+
55429 {0.888287008, 0.373033941}, //
+
55430 {0.888098121, 0.3732858}, //
+
55431 {0.887783349, 0.373705566}, //
+
55432 {0.885264814, 0.377063572}, //
+
55433 {0.884320378, 0.37832284}, //
+
55434 {0.883249998, 0.379750013}, //
+
55435 {0.882095695, 0.381323457}, //
+
55436 {0.88089937, 0.383021593}, //
+
55437 {0.879661083, 0.384844452}, //
+
55438 {0.878380835, 0.386791974}, //
+
55439 {0.877058625, 0.388864189}, //
+
55440 {0.875694454, 0.391061097}, //
+
55441 {0.874288261, 0.393382728}, //
+
55442 {0.872840106, 0.395829022}, //
+
55443 {0.87134999, 0.398400009}, //
+
55444 {0.869933307, 0.401054949}, //
+
55445 {0.868683338, 0.403753072}, //
+
55446 {0.867600024, 0.406494439}, //
+
55447 {0.866683304, 0.409279019}, //
+
55448 {0.865933359, 0.412106782}, //
+
55449 {0.865350008, 0.414977789}, //
+
55450 {0.864933312, 0.417891979}, //
+
55451 {0.86468333, 0.420849383}, //
+
55452 {0.864600003, 0.42385}, //
+
55453 {0.864600003, 0.428696901}, //
+
55454 {0.864600003, 0.434215426}, //
+
55455 {0.864600003, 0.443752468}, //
+
55456 {0.864600003, 0.447267294}, //
+
55457 {0.864600003, 0.450949997}, //
+
55458 {0.865292609, 0.455430239}, //
+
55459 {0.86585927, 0.459826529}, //
+
55460 {0.866299987, 0.464138895}, //
+
55461 {0.866614819, 0.468367279}, //
+
55462 {0.866803706, 0.472511739}, //
+
55463 {0.866866648, 0.476572216}, //
+
55464 {0.866803706, 0.480548769}, //
+
55465 {0.866614819, 0.48444137}, //
+
55466 {0.866299987, 0.488249987}, //
+
55467 {0.865901232, 0.492016673}, //
+
55468 {0.865460515, 0.495783329}, //
+
55469 {0.864977777, 0.499550015}, //
+
55470 {0.864453077, 0.503316641}, //
+
55471 {0.863886416, 0.507083356}, //
+
55472 {0.863277793, 0.510850012}, //
+
55473 {0.862627149, 0.514616668}, //
+
55474 {0.861934543, 0.518383324}, //
+
55475 {0.861199975, 0.52214998}, //
+
55476 {0.85974133, 0.524395049}, //
+
55477 {0.858365417, 0.526596904}, //
+
55478 {0.857072234, 0.528755546}, //
+
55479 {0.855861723, 0.530870974}, //
+
55480 {0.854733944, 0.532943189}, //
+
55481 {0.853688896, 0.53497225}, //
+
55482 {0.852726519, 0.536958039}, //
+
55483 {0.851846933, 0.538900614}, //
+
55484 {0.851050019, 0.540799975}, //
+
55485 {0.850315452, 0.542625308}, //
+
55486 {0.849622846, 0.544323444}, //
+
55487 {0.848972201, 0.545894444}, //
+
55488 {0.848363578, 0.547338247}, //
+
55489 {0.847796917, 0.548654914}, //
+
55490 {0.847272217, 0.549844444}, //
+
55491 {0.846789479, 0.550906777}, //
+
55492 {0.846348763, 0.551841974}, //
+
55493 {0.845950007, 0.552649975}, //
+
55494 {0.845551848, 0.553405583}, //
+
55495 {0.845112979, 0.554161131}, //
+
55496 {0.844633341, 0.55491668}, //
+
55497 {0.844112992, 0.555672228}, //
+
55498 {0.843551874, 0.556427777}, //
+
55499 {0.842949986, 0.557183325}, //
+
55500 {0.842307389, 0.557938874}, //
+
55501 {0.841624081, 0.558694422}, //
+
55502 {0.840900004, 0.559449971}, //
+
55503 {0.840858042, 0.560205579}, //
+
55504 {0.840732098, 0.560961127}, //
+
55505 {0.84052223, 0.561716676}, //
+
55506 {0.840228379, 0.562472224}, //
+
55507 {0.839850605, 0.563227773}, //
+
55508 {0.839388907, 0.563983321}, //
+
55509 {0.838843226, 0.56473887}, //
+
55510 {0.838213563, 0.565494418}, //
+
55511 {0.837499976, 0.566250026}, //
+
55512 {0.836744428, 0.567004919}, //
+
55513 {0.835988879, 0.56775862}, //
+
55514 {0.835233331, 0.568511128}, //
+
55515 {0.834477782, 0.569262326}, //
+
55516 {0.833722234, 0.570012331}, //
+
55517 {0.832966685, 0.570761085}, //
+
55518 {0.832211137, 0.571508646}, //
+
55519 {0.831455529, 0.572254956}, //
+
55520 {0.83069998, 0.573000014}, //
+
55521 {0.829965413, 0.574427187}, //
+
55522 {0.829272866, 0.575686395}, //
+
55523 {0.828622222, 0.576777756}, //
+
55524 {0.828013599, 0.577701211}, //
+
55525 {0.827446938, 0.578456819}, //
+
55526 {0.826922238, 0.579044461}, //
+
55527 {0.8264395, 0.579464197}, //
+
55528 {0.825998783, 0.579716027}, //
+
55529 {0.825600028, 0.57980001}, //
+
55530 {0.825243235, 0.579716027}, //
+
55531 {0.824928403, 0.579464197}, //
+
55532 {0.824655533, 0.579044461}, //
+
55533 {0.824424684, 0.578456819}, //
+
55534 {0.824235797, 0.577701211}, //
+
55535 {0.824088871, 0.576777756}, //
+
55536 {0.823983967, 0.575686395}, //
+
55537 {0.823920965, 0.574427187}, //
+
55538 {0.823899984, 0.573000014}, //
+
55539 {0.823238254, 0.571499407}, //
+
55540 {0.822741985, 0.569997549}, //
+
55541 {0.82241112, 0.568494439}, //
+
55542 {0.822245657, 0.566990137}, //
+
55543 {0.822245657, 0.565484583}, //
+
55544 {0.82241112, 0.563977778}, //
+
55545 {0.822741985, 0.56246978}, //
+
55546 {0.823238254, 0.560960472}, //
+
55547 {0.823899984, 0.559449971}, //
+
55548 {0.823899984, 0.557938874}, //
+
55549 {0.823899984, 0.556427777}, //
+
55550 {0.823899984, 0.55491668}, //
+
55551 {0.823899984, 0.553405583}, //
+
55552 {0.823899984, 0.545849979}, //
+
55553 {0.823816061, 0.544391334}, //
+
55554 {0.823564172, 0.54301542}, //
+
55555 {0.823144436, 0.541722238}, //
+
55556 {0.822556794, 0.540511727}, //
+
55557 {0.821801245, 0.539383948}, //
+
55558 {0.82087779, 0.5383389}, //
+
55559 {0.819786429, 0.537376523}, //
+
55560 {0.818527162, 0.536496937}, //
+
55561 {0.817099988, 0.535700023}, //
+
55562 {0.815474093, 0.534954965}, //
+
55563 {0.813596308, 0.534208655}, //
+
55564 {0.811466694, 0.533461094}, //
+
55565 {0.80908519, 0.53271234}, //
+
55566 {0.806451857, 0.531962335}, //
+
55567 {0.803566694, 0.531211138}, //
+
55568 {0.800429642, 0.530458629}, //
+
55569 {0.797040761, 0.529704928}, //
+
55570 {0.79339999, 0.528949976}, //
+
55571 {0.789717257, 0.528194427}, //
+
55572 {0.78620249, 0.527438879}, //
+
55573 {0.78285557, 0.526683331}, //
+
55574 {0.779676557, 0.525927782}, //
+
55575 {0.776665449, 0.525172234}, //
+
55576 {0.773822248, 0.524416685}, //
+
55577 {0.771146894, 0.523661137}, //
+
55578 {0.768639505, 0.522905529}, //
+
55579 {0.766300023, 0.52214998}, //
+
55580 {0.76181978, 0.520691335}, //
+
55581 {0.75742346, 0.519315422}, //
+
55582 {0.753111124, 0.518022239}, //
+
55583 {0.748882711, 0.516811728}, //
+
55584 {0.744738281, 0.515683949}, //
+
55585 {0.740677774, 0.514638901}, //
+
55586 {0.73670125, 0.513676524}, //
+
55587 {0.73280865, 0.512796938}, //
+
55588 {0.728999972, 0.512000024}, //
+
55589 {0.725316644, 0.511286438}, //
+
55590 {0.721800029, 0.510656774}, //
+
55591 {0.71845001, 0.510111094}, //
+
55592 {0.715266645, 0.509649396}, //
+
55593 {0.712249994, 0.509271622}, //
+
55594 {0.709399998, 0.508977771}, //
+
55595 {0.706716657, 0.508767903}, //
+
55596 {0.704200029, 0.508641958}, //
+
55597 {0.701849997, 0.508599997}, //
+
55598 {0.699845076, 0.50868398}, //
+
55599 {0.69834137, 0.508935809}, //
+
55600 {0.697338879, 0.509355545}, //
+
55601 {0.696837664, 0.509943187}, //
+
55602 {0.696837664, 0.510698736}, //
+
55603 {0.697338879, 0.51162225}, //
+
55604 {0.69834137, 0.512713552}, //
+
55605 {0.699845076, 0.513972819}, //
+
55606 {0.701849997, 0.515399992}, //
+
55607 {0.704241991, 0.517614186}, //
+
55608 {0.706884563, 0.519745708}, //
+
55609 {0.709777772, 0.521794438}, //
+
55610 {0.712921619, 0.523760498}, //
+
55611 {0.716316044, 0.525643826}, //
+
55612 {0.719961107, 0.527444422}, //
+
55613 {0.723856807, 0.529162347}, //
+
55614 {0.728003085, 0.530797541}, //
+
55615 {0.7324, 0.532350004}, //
+
55616 {0.736249983, 0.53401792}, //
+
55617 {0.740266681, 0.53602159}, //
+
55618 {0.744449973, 0.538361132}, //
+
55619 {0.74879998, 0.541036427}, //
+
55620 {0.753316641, 0.544047534}, //
+
55621 {0.758000016, 0.547394454}, //
+
55622 {0.762849987, 0.551077187}, //
+
55623 {0.767866671, 0.555095673}, //
+
55624 {0.77305001, 0.559449971}, //
+
55625 {0.78037405, 0.563216686}, //
+
55626 {0.787279606, 0.566983342}, //
+
55627 {0.793766677, 0.570749998}, //
+
55628 {0.799835205, 0.574516654}, //
+
55629 {0.805485189, 0.57828331}, //
+
55630 {0.810716689, 0.582050025}, //
+
55631 {0.815529644, 0.585816681}, //
+
55632 {0.819924057, 0.589583337}, //
+
55633 {0.823899984, 0.593349993}, //
+
55634 {0.826837659, 0.595532119}, //
+
55635 {0.829606175, 0.597545087}, //
+
55636 {0.832205534, 0.599388897}, //
+
55637 {0.834635794, 0.601063609}, //
+
55638 {0.836896896, 0.602569163}, //
+
55639 {0.8389889, 0.603905559}, //
+
55640 {0.840911746, 0.605072856}, //
+
55641 {0.842665434, 0.606070995}, //
+
55642 {0.844250023, 0.606899977}, //
+
55643 {0.846537054, 0.607592583}, //
+
55644 {0.848864794, 0.608159244}, //
+
55645 {0.851233304, 0.60860002}, //
+
55646 {0.853642583, 0.608914793}, //
+
55647 {0.856092572, 0.60910368}, //
+
55648 {0.858583331, 0.609166682}, //
+
55649 {0.8611148, 0.60910368}, //
+
55650 {0.863687038, 0.608914793}, //
+
55651 {0.866299987, 0.60860002}, //
+
55652 {0.868829012, 0.6081599}, //
+
55653 {0.871149361, 0.607595086}, //
+
55654 {0.873261094, 0.60690558}, //
+
55655 {0.875164211, 0.60609138}, //
+
55656 {0.876858652, 0.605152488}, //
+
55657 {0.878344417, 0.604088902}, //
+
55658 {0.879621625, 0.602900624}, //
+
55659 {0.880690098, 0.601587653}, //
+
55660 {0.881550014, 0.600149989}, //
+
55661 {0.883816659, 0.595616639}, //
+
55662 {0.884572208, 0.594105542}, //
+
55663 {0.886083305, 0.591083348}, //
+
55664 {0.886838913, 0.589572251}, //
+
55665 {0.88835001, 0.586549997}, //
+
55666 {0.889104962, 0.585049391}, //
+
55667 {0.889858663, 0.583547533}, //
+
55668 {0.890611112, 0.582044423}, //
+
55669 {0.891362369, 0.580540121}, //
+
55670 {0.892112374, 0.579034567}, //
+
55671 {0.892861128, 0.577527761}, //
+
55672 {0.89360863, 0.576019764}, //
+
55673 {0.894354939, 0.574510515}, //
+
55674 {0.895099998, 0.573000014}, //
+
55675 {0.895834565, 0.571520388}, //
+
55676 {0.896527171, 0.570081472}, //
+
55677 {0.897177756, 0.568683326}, //
+
55678 {0.897786438, 0.56732595}, //
+
55679 {0.8983531, 0.566009283}, //
+
55680 {0.8988778, 0.564733326}, //
+
55681 {0.899360478, 0.563498139}, //
+
55682 {0.899801254, 0.562303722}, //
+
55683 {0.900200009, 0.561150014}, //
+
55684 {0.900556803, 0.560079634}, //
+
55685 {0.900871634, 0.559135199}, //
+
55686 {0.901879013, 0.556112945}, //
+
55687 {0.901899993, 0.556050003}, //
+
55688 {0.891749978, 0.52214998}, //
+
55689 {0.89101541, 0.521227181}, //
+
55690 {0.890322864, 0.519969761}, //
+
55691 {0.88967222, 0.518377781}, //
+
55692 {0.889063597, 0.51645124}, //
+
55693 {0.888496935, 0.514190137}, //
+
55694 {0.887972236, 0.511594415}, //
+
55695 {0.887489498, 0.508664191}, //
+
55696 {0.887048781, 0.505399406}, //
+
55697 {0.886650026, 0.501800001}, //
+
55698 {0.886293232, 0.497991353}, //
+
55699 {0.885978401, 0.494098753}, //
+
55700 {0.885705531, 0.490122229}, //
+
55701 {0.885474682, 0.486061722}, //
+
55702 {0.885285795, 0.481917292}, //
+
55703 {0.885138869, 0.477688879}, //
+
55704 {0.885033965, 0.473376542}, //
+
55705 {0.884970963, 0.468980253}, //
+
55706 {0.884949982, 0.46450001}, //
+
55707 {0.884949982, 0.460145682}, //
+
55708 {0.884949982, 0.452444434}, //
+
55709 {0.884949982, 0.449097544}, //
+
55710 {0.884949982, 0.437400013}, //
+
55711 {0.884970963, 0.435846925}, //
+
55712 {0.885033965, 0.434209883}, //
+
55713 {0.885138869, 0.432488889}, //
+
55714 {0.885285795, 0.430683941}, //
+
55715 {0.885474682, 0.428795069}, //
+
55716 {0.885705531, 0.426822215}, //
+
55717 {0.885978401, 0.424765438}, //
+
55718 {0.886293232, 0.422624677}, //
+
55719 {0.886650026, 0.420399994}, //
+
55720 {0.887006819, 0.418123454}, //
+
55721 {0.887321591, 0.415804952}, //
+
55722 {0.887594461, 0.41344443}, //
+
55723 {0.88782531, 0.411041975}, //
+
55724 {0.888014197, 0.408597529}, //
+
55725 {0.888161123, 0.406111121}, //
+
55726 {0.888266027, 0.403582722}, //
+
55727 {0.888329029, 0.401012331}, //
+
55728 {0.88835001, 0.398400009}, //
+
55729 {0.88835001, 0.372949988}, //
+
55730 });
+
55731 polys.push_back({
+
55732 {6.07940006, 0.396699995}, //
+
55733 {6.07906437, 0.396951854}, //
+
55734 {6.07864428, 0.397266656}, //
+
55735 {6.07528639, 0.399785191}, //
+
55736 {6.07402706, 0.400729626}, //
+
55737 {6.07259989, 0.401800007}, //
+
55738 {6.07109928, 0.402932703}, //
+
55739 {6.06959772, 0.404064208}, //
+
55740 {6.06809425, 0.405194432}, //
+
55741 {6.06659031, 0.406323463}, //
+
55742 {6.06508446, 0.407451242}, //
+
55743 {6.06357765, 0.40857777}, //
+
55744 {6.06206989, 0.409703076}, //
+
55745 {6.0605607, 0.41082716}, //
+
55746 {6.05905008, 0.411949992}, //
+
55747 {6.05758095, 0.413124681}, //
+
55748 {6.05619574, 0.4143821}, //
+
55749 {6.05489445, 0.415722221}, //
+
55750 {6.05367708, 0.417145073}, //
+
55751 {6.05254364, 0.418650627}, //
+
55752 {6.0514946, 0.420238882}, //
+
55753 {6.050529, 0.421909869}, //
+
55754 {6.04964733, 0.423663586}, //
+
55755 {6.04885006, 0.425500005}, //
+
55756 {6.04814672, 0.427367896}, //
+
55757 {6.04752636, 0.429193825}, //
+
55758 {6.04698896, 0.430977792}, //
+
55759 {6.04653406, 0.432719767}, //
+
55760 {6.04616165, 0.434419751}, //
+
55761 {6.04587221, 0.436077774}, //
+
55762 {6.04566526, 0.437693834}, //
+
55763 {6.04554129, 0.439267904}, //
+
55764 {6.0454998, 0.440800011}, //
+
55765 {6.0454998, 0.440965444}, //
+
55766 {6.0454998, 0.441172212}, //
+
55767 {6.0454998, 0.441461742}, //
+
55768 {6.0454998, 0.444150001}, //
+
55769 {6.04552078, 0.447906166}, //
+
55770 {6.04558372, 0.451619148}, //
+
55771 {6.04568911, 0.455288887}, //
+
55772 {6.04583597, 0.458915442}, //
+
55773 {6.0460248, 0.462498754}, //
+
55774 {6.04625559, 0.466038883}, //
+
55775 {6.04652834, 0.469535798}, //
+
55776 {6.04684305, 0.4729895}, //
+
55777 {6.0472002, 0.476399988}, //
+
55778 {6.04768229, 0.479725927}, //
+
55779 {6.04837275, 0.482925922}, //
+
55780 {6.04927206, 0.486000001}, //
+
55781 {6.05038023, 0.488948137}, //
+
55782 {6.05169678, 0.491770357}, //
+
55783 {6.05322218, 0.494466662}, //
+
55784 {6.05495596, 0.497037023}, //
+
55785 {6.05689859, 0.499481469}, //
+
55786 {6.05905008, 0.501800001}, //
+
55787 {6.06051874, 0.503311098}, //
+
55788 {6.06190205, 0.504822195}, //
+
55789 {6.0632, 0.506333351}, //
+
55790 {6.06441307, 0.507844448}, //
+
55791 {6.06554079, 0.509355545}, //
+
55792 {6.06658316, 0.510866642}, //
+
55793 {6.06754065, 0.512377799}, //
+
55794 {6.06841278, 0.513888896}, //
+
55795 {6.06920004, 0.515399992}, //
+
55796 {6.07148695, 0.5184111}, //
+
55797 {6.07381487, 0.521422207}, //
+
55798 {6.07618332, 0.524433315}, //
+
55799 {6.07859278, 0.527444422}, //
+
55800 {6.08104277, 0.53045553}, //
+
55801 {6.08353329, 0.533466637}, //
+
55802 {6.08606482, 0.536477804}, //
+
55803 {6.08863688, 0.539488912}, //
+
55804 {6.09124994, 0.542500019}, //
+
55805 {6.09391499, 0.545343816}, //
+
55806 {6.09662056, 0.547853112}, //
+
55807 {6.09936666, 0.550027788}, //
+
55808 {6.10215378, 0.551867902}, //
+
55809 {6.10498142, 0.553373456}, //
+
55810 {6.10785007, 0.554544449}, //
+
55811 {6.11075926, 0.555380881}, //
+
55812 {6.11370945, 0.555882692}, //
+
55813 {6.11670017, 0.556050003}, //
+
55814 {6.14720011, 0.556050003}, //
+
55815 {6.15720844, 0.555378377}, //
+
55816 {6.16763449, 0.554874718}, //
+
55817 {6.17847776, 0.554538906}, //
+
55818 {6.18973827, 0.554370999}, //
+
55819 {6.20141602, 0.554370999}, //
+
55820 {6.21351099, 0.554538906}, //
+
55821 {6.22602367, 0.554874718}, //
+
55822 {6.23895311, 0.555378377}, //
+
55823 {6.25229979, 0.556050003}, //
+
55824 {6.25829077, 0.556133926}, //
+
55825 {6.2641964, 0.556385815}, //
+
55826 {6.27001667, 0.556805551}, //
+
55827 {6.27575207, 0.557393193}, //
+
55828 {6.28140163, 0.558148742}, //
+
55829 {6.2869668, 0.559072196}, //
+
55830 {6.29244614, 0.560163558}, //
+
55831 {6.2978406, 0.561422825}, //
+
55832 {6.30315018, 0.562849998}, //
+
55833 {6.3069272, 0.564297557}, //
+
55834 {6.31070328, 0.565617919}, //
+
55835 {6.31447792, 0.566811085}, //
+
55836 {6.31825113, 0.567877173}, //
+
55837 {6.32202339, 0.568816066}, //
+
55838 {6.32579422, 0.569627762}, //
+
55839 {6.32956409, 0.570312321}, //
+
55840 {6.33333254, 0.570869744}, //
+
55841 {6.33710003, 0.57130003}, //
+
55842 {6.34086657, 0.571489513}, //
+
55843 {6.3446331, 0.571302474}, //
+
55844 {6.34840012, 0.570738912}, //
+
55845 {6.35216665, 0.569798768}, //
+
55846 {6.35593319, 0.568482101}, //
+
55847 {6.3597002, 0.566788912}, //
+
55848 {6.36346674, 0.564719141}, //
+
55849 {6.36723328, 0.562272847}, //
+
55850 {6.37099981, 0.559449971}, //
+
55851 {6.3775897, 0.554172218}, //
+
55852 {6.38380241, 0.548894465}, //
+
55853 {6.3896389, 0.543616652}, //
+
55854 {6.39509869, 0.5383389}, //
+
55855 {6.40018225, 0.533061087}, //
+
55856 {6.40488911, 0.527783334}, //
+
55857 {6.40921926, 0.522505581}, //
+
55858 {6.41317272, 0.517227769}, //
+
55859 {6.41674995, 0.511950016}, //
+
55860 {6.41995049, 0.506724715}, //
+
55861 {6.42277479, 0.501582086}, //
+
55862 {6.4252224, 0.496522218}, //
+
55863 {6.4272933, 0.491545051}, //
+
55864 {6.4289875, 0.486650616}, //
+
55865 {6.43030548, 0.481838882}, //
+
55866 {6.43124676, 0.477109879}, //
+
55867 {6.43181181, 0.472463578}, //
+
55868 {6.43200016, 0.467900008}, //
+
55869 {6.43204212, 0.465601861}, //
+
55870 {6.43216801, 0.46321851}, //
+
55871 {6.43237782, 0.460750014}, //
+
55872 {6.43267155, 0.458196282}, //
+
55873 {6.4330492, 0.455557406}, //
+
55874 {6.43351126, 0.452833325}, //
+
55875 {6.43405676, 0.450024068}, //
+
55876 {6.43468618, 0.447129637}, //
+
55877 {6.43481636, 0.446587443}, //
+
55878 {6.43408012, 0.448165447}, //
+
55879 {6.43200541, 0.451722234}, //
+
55880 {6.42955446, 0.455195069}, //
+
55881 {6.42672634, 0.458583951}, //
+
55882 {6.423522, 0.46188888}, //
+
55883 {6.41994143, 0.465109885}, //
+
55884 {6.41598415, 0.468246907}, //
+
55885 {6.41165018, 0.471300006}, //
+
55886 {6.39901686, 0.477701247}, //
+
55887 {6.38671684, 0.483349383}, //
+
55888 {6.37475014, 0.488244444}, //
+
55889 {6.36311674, 0.492386431}, //
+
55890 {6.35181665, 0.495775312}, //
+
55891 {6.34084988, 0.498411119}, //
+
55892 {6.33021688, 0.500293851}, //
+
55893 {6.31991673, 0.501423478}, //
+
55894 {6.30994987, 0.501800001}, //
+
55895 {6.29989815, 0.501800001}, //
+
55896 {6.29524994, 0.501800001}, //
+
55897 {6.2908535, 0.501800001}, //
+
55898 {6.2693119, 0.501800001}, //
+
55899 {6.26738882, 0.501800001}, //
+
55900 {6.26529694, 0.501800001}, //
+
55901 {6.24594212, 0.501800001}, //
+
55902 {6.24251127, 0.501800001}, //
+
55903 {6.2184, 0.501800001}, //
+
55904 {6.21391964, 0.502555549}, //
+
55905 {6.20952368, 0.503311098}, //
+
55906 {6.20521116, 0.504066646}, //
+
55907 {6.20098257, 0.504822195}, //
+
55908 {6.19683838, 0.505577803}, //
+
55909 {6.19277763, 0.506333351}, //
+
55910 {6.18880129, 0.5070889}, //
+
55911 {6.18490887, 0.507844448}, //
+
55912 {6.18109989, 0.508599997}, //
+
55913 {6.17666149, 0.509313583}, //
+
55914 {6.17239141, 0.509943187}, //
+
55915 {6.16828871, 0.510488868}, //
+
55916 {6.16435432, 0.510950625}, //
+
55917 {6.16058779, 0.511328399}, //
+
55918 {6.1569891, 0.51162225}, //
+
55919 {6.15355825, 0.511832118}, //
+
55920 {6.15029526, 0.511958003}, //
+
55921 {6.14720011, 0.512000024}, //
+
55922 {6.14418888, 0.511916041}, //
+
55923 {6.14117765, 0.511664212}, //
+
55924 {6.1381669, 0.511244416}, //
+
55925 {6.13515568, 0.510656774}, //
+
55926 {6.13214445, 0.509901226}, //
+
55927 {6.12913322, 0.508977771}, //
+
55928 {6.126122, 0.50788641}, //
+
55929 {6.12311125, 0.506627142}, //
+
55930 {6.12010002, 0.505200028}, //
+
55931 {6.1178751, 0.502880871}, //
+
55932 {6.11573458, 0.500434577}, //
+
55933 {6.11367798, 0.497861117}, //
+
55934 {6.11170483, 0.49516049}, //
+
55935 {6.10981607, 0.492332727}, //
+
55936 {6.10801125, 0.489377767}, //
+
55937 {6.10629034, 0.48629567}, //
+
55938 {6.10465288, 0.483086407}, //
+
55939 {6.10309982, 0.479750007}, //
+
55940 {6.1016202, 0.476382107}, //
+
55941 {6.10018158, 0.473056167}, //
+
55942 {6.09878349, 0.46977222}, //
+
55943 {6.09742594, 0.466530234}, //
+
55944 {6.09610939, 0.463330239}, //
+
55945 {6.09483337, 0.460172236}, //
+
55946 {6.09359837, 0.457056165}, //
+
55947 {6.09240389, 0.453982085}, //
+
55948 {6.09124994, 0.450949997}, //
+
55949 {6.09017944, 0.448064208}, //
+
55950 {6.08923531, 0.445429027}, //
+
55951 {6.08841658, 0.443044454}, //
+
55952 {6.08772421, 0.440910488}, //
+
55953 {6.08715725, 0.43902716}, //
+
55954 {6.08671665, 0.43739444}, //
+
55955 {6.08640194, 0.436012357}, //
+
55956 {6.08621311, 0.434880853}, //
+
55957 {6.08615017, 0.433999985}, //
+
55958 {6.08615017, 0.432488889}, //
+
55959 {6.08615017, 0.43173334}, //
+
55960 {6.08615017, 0.430977792}, //
+
55961 {6.08615017, 0.430222213}, //
+
55962 {6.08615017, 0.429466665}, //
+
55963 {6.08615017, 0.428711116}, //
+
55964 {6.08615017, 0.42719999}, //
+
55965 {6.08686352, 0.425699383}, //
+
55966 {6.08749342, 0.424197525}, //
+
55967 {6.08803892, 0.422694445}, //
+
55968 {6.0885005, 0.421190113}, //
+
55969 {6.08887863, 0.419684559}, //
+
55970 {6.08917236, 0.418177783}, //
+
55971 {6.08938217, 0.416669756}, //
+
55972 {6.08950806, 0.415160507}, //
+
55973 {6.08955002, 0.413650006}, //
+
55974 {6.08942461, 0.412107408}, //
+
55975 {6.08904886, 0.410479635}, //
+
55976 {6.0884223, 0.408766657}, //
+
55977 {6.08754492, 0.406968504}, //
+
55978 {6.0864172, 0.405085176}, //
+
55979 {6.08503866, 0.403116673}, //
+
55980 {6.08340979, 0.401062965}, //
+
55981 {6.08153009, 0.398924083}, //
+
55982 });
+
55983 polys.push_back({
+
55984 {3.18379998, 0.505200028}, //
+
55985 {3.1830864, 0.505913556}, //
+
55986 {3.18245673, 0.506543219}, //
+
55987 {3.18191123, 0.5070889}, //
+
55988 {3.18107152, 0.507928371}, //
+
55989 {3.18077779, 0.508222222}, //
+
55990 {3.18039989, 0.508599997}, //
+
55991 {3.17962337, 0.509334564}, //
+
55992 {3.17880487, 0.51002717}, //
+
55993 {3.17794442, 0.510677755}, //
+
55994 {3.17704201, 0.511286438}, //
+
55995 {3.17609763, 0.511853099}, //
+
55996 {3.17511106, 0.512377799}, //
+
55997 {3.17408276, 0.512860477}, //
+
55998 {3.17301226, 0.513301253}, //
+
55999 {3.17190003, 0.513700008}, //
+
56000 {3.17079806, 0.514056802}, //
+
56001 {3.1697371, 0.514371634}, //
+
56002 {3.16871667, 0.514644444}, //
+
56003 {3.16773701, 0.514875293}, //
+
56004 {3.16679811, 0.51506418}, //
+
56005 {3.16589999, 0.515211105}, //
+
56006 {3.16504264, 0.515316069}, //
+
56007 {3.16422582, 0.515379012}, //
+
56008 {3.16345, 0.515399992}, //
+
56009 {3.16340804, 0.515399992}, //
+
56010 {3.16328216, 0.515399992}, //
+
56011 {3.16004992, 0.515399992}, //
+
56012 {3.15929437, 0.514686406}, //
+
56013 {3.15853882, 0.514056802}, //
+
56014 {3.15778327, 0.513511121}, //
+
56015 {3.15702772, 0.513049364}, //
+
56016 {3.15627217, 0.51267159}, //
+
56017 {3.15551662, 0.512377799}, //
+
56018 {3.15476108, 0.512167931}, //
+
56019 {3.15400553, 0.512041986}, //
+
56020 {3.15324998, 0.512000024}, //
+
56021 {3.15250492, 0.512083352}, //
+
56022 {3.15175867, 0.512333333}, //
+
56023 {3.15101123, 0.51275003}, //
+
56024 {3.15026236, 0.513333321}, //
+
56025 {3.14951229, 0.514083326}, //
+
56026 {3.14876103, 0.514999986}, //
+
56027 {3.14800858, 0.51608336}, //
+
56028 {3.14725494, 0.517333329}, //
+
56029 {3.14650011, 0.518750012}, //
+
56030 {3.14112711, 0.521436393}, //
+
56031 {3.13999391, 0.522003114}, //
+
56032 {3.13894439, 0.522527754}, //
+
56033 {3.13630009, 0.523850024}, //
+
56034 {3.13547111, 0.524206817}, //
+
56035 {3.13447285, 0.524521589}, //
+
56036 {3.13330555, 0.524794459}, //
+
56037 {3.13196921, 0.525025308}, //
+
56038 {3.1304636, 0.525214195}, //
+
56039 {3.12878895, 0.525361121}, //
+
56040 {3.12694502, 0.525466025}, //
+
56041 {3.12493205, 0.525529027}, //
+
56042 {3.12275004, 0.525550008}, //
+
56043 {3.12051487, 0.526263595}, //
+
56044 {3.11832047, 0.526893198}, //
+
56045 {3.11616659, 0.527438879}, //
+
56046 {3.11405373, 0.527900636}, //
+
56047 {3.11198139, 0.52827841}, //
+
56048 {3.10995007, 0.528572202}, //
+
56049 {3.10795927, 0.52878207}, //
+
56050 {3.10600924, 0.528908014}, //
+
56051 {3.10409999, 0.528949976}, //
+
56052 {3.10220051, 0.528949976}, //
+
56053 {3.10025811, 0.528949976}, //
+
56054 {3.09827232, 0.528949976}, //
+
56055 {3.09624314, 0.528949976}, //
+
56056 {3.09417105, 0.528949976}, //
+
56057 {3.08544993, 0.528949976}, //
+
56058 {3.08540869, 0.528949976}, //
+
56059 {3.08507776, 0.528949976}, //
+
56060 {3.08478832, 0.528949976}, //
+
56061 {3.08441615, 0.528949976}, //
+
56062 {3.08209991, 0.528949976}, //
+
56063 {3.08063078, 0.528971016}, //
+
56064 {3.07924557, 0.529033959}, //
+
56065 {3.07794452, 0.529138863}, //
+
56066 {3.07672715, 0.529285789}, //
+
56067 {3.07559371, 0.529474676}, //
+
56068 {3.07454443, 0.529705584}, //
+
56069 {3.07357907, 0.529978395}, //
+
56070 {3.07269764, 0.530293226}, //
+
56071 {3.07189989, 0.53065002}, //
+
56072 {3.07116532, 0.531006813}, //
+
56073 {3.07047296, 0.531321585}, //
+
56074 {3.06982231, 0.531594455}, //
+
56075 {3.06921363, 0.531825304}, //
+
56076 {3.06864691, 0.532014191}, //
+
56077 {3.06812215, 0.532161117}, //
+
56078 {3.06763959, 0.532266021}, //
+
56079 {3.06719875, 0.532329023}, //
+
56080 {3.06680012, 0.532350004}, //
+
56081 {3.0664537, 0.532350004}, //
+
56082 {3.06614804, 0.532350004}, //
+
56083 {3.06561923, 0.532350004}, //
+
56084 {3.06581163, 0.532350004}, //
+
56085 {3.06618404, 0.532350004}, //
+
56086 {3.06663895, 0.532350004}, //
+
56087 {3.06717658, 0.532350004}, //
+
56088 {3.06779695, 0.532350004}, //
+
56089 {3.06850004, 0.532350004}, //
+
56090 {3.07078695, 0.533116043}, //
+
56091 {3.07311487, 0.533925295}, //
+
56092 {3.07548332, 0.534777761}, //
+
56093 {3.07789254, 0.53567344}, //
+
56094 {3.08034253, 0.536612332}, //
+
56095 {3.08283329, 0.537594438}, //
+
56096 {3.08536482, 0.538619757}, //
+
56097 {3.08793712, 0.539688289}, //
+
56098 {3.09054995, 0.540799975}, //
+
56099 {3.09316301, 0.541870356}, //
+
56100 {3.09573507, 0.542814791}, //
+
56101 {3.0982666, 0.543633342}, //
+
56102 {3.10075736, 0.544325948}, //
+
56103 {3.10320735, 0.544892609}, //
+
56104 {3.10561657, 0.545333326}, //
+
56105 {3.10798526, 0.545648158}, //
+
56106 {3.11031294, 0.545837045}, //
+
56107 {3.11260009, 0.545899987}, //
+
56108 {3.12614989, 0.545899987}, //
+
56109 {3.12766051, 0.546613574}, //
+
56110 {3.1291697, 0.547243237}, //
+
56111 {3.1306777, 0.547788918}, //
+
56112 {3.13218451, 0.548250616}, //
+
56113 {3.13369012, 0.54862839}, //
+
56114 {3.13519454, 0.548922241}, //
+
56115 {3.13669753, 0.549132109}, //
+
56116 {3.13819933, 0.549258053}, //
+
56117 {3.13969994, 0.549300015}, //
+
56118 {3.14116907, 0.549258053}, //
+
56119 {3.14255428, 0.549132109}, //
+
56120 {3.14385557, 0.548922241}, //
+
56121 {3.14507294, 0.54862839}, //
+
56122 {3.14620614, 0.548250616}, //
+
56123 {3.14725566, 0.547788918}, //
+
56124 {3.14822102, 0.547243237}, //
+
56125 {3.14910245, 0.546613574}, //
+
56126 {3.14989996, 0.545899987}, //
+
56127 {3.1513586, 0.543717265}, //
+
56128 {3.15273452, 0.541702449}, //
+
56129 {3.1540277, 0.53985554}, //
+
56130 {3.15523839, 0.538176537}, //
+
56131 {3.15636611, 0.53666544}, //
+
56132 {3.1574111, 0.535322249}, //
+
56133 {3.15837336, 0.534146905}, //
+
56134 {3.15925312, 0.533139527}, //
+
56135 {3.16004992, 0.532299995}, //
+
56136 {3.16080546, 0.531596899}, //
+
56137 {3.16156101, 0.530976534}, //
+
56138 {3.16231656, 0.5304389}, //
+
56139 {3.16307211, 0.529983938}, //
+
56140 {3.1638279, 0.529611707}, //
+
56141 {3.16458344, 0.529322207}, //
+
56142 {3.16533899, 0.529115438}, //
+
56143 {3.16609454, 0.528991342}, //
+
56144 {3.16685009, 0.528949976}, //
+
56145 {3.1676259, 0.528949976}, //
+
56146 {3.16844249, 0.528949976}, //
+
56147 {3.16930008, 0.528949976}, //
+
56148 {3.1701982, 0.528949976}, //
+
56149 {3.17113709, 0.528949976}, //
+
56150 {3.17529988, 0.528949976}, //
+
56151 {3.17641234, 0.528949976}, //
+
56152 {3.17851114, 0.528949976}, //
+
56153 {3.17949748, 0.528949976}, //
+
56154 {3.18044186, 0.528949976}, //
+
56155 {3.18379998, 0.528949976}, //
+
56156 {3.18455505, 0.528928995}, //
+
56157 {3.18530869, 0.528866053}, //
+
56158 {3.18606114, 0.528761089}, //
+
56159 {3.1868124, 0.528614223}, //
+
56160 {3.18756223, 0.528425336}, //
+
56161 {3.1883111, 0.528194427}, //
+
56162 {3.18905854, 0.527921617}, //
+
56163 {3.18980503, 0.527606785}, //
+
56164 {3.19055009, 0.527249992}, //
+
56165 {3.19126368, 0.526893198}, //
+
56166 {3.1918931, 0.526578367}, //
+
56167 {3.19290066, 0.526074708}, //
+
56168 {3.19327831, 0.52588582}, //
+
56169 {3.19357228, 0.525738895}, //
+
56170 {3.19378209, 0.525633931}, //
+
56171 {3.19390798, 0.525570989}, //
+
56172 {3.19394994, 0.525550008}, //
+
56173 {3.20075011, 0.525550008}, //
+
56174 {3.18720007, 0.508599997}, //
+
56175 {3.18889999, 0.508599997}, //
+
56176 {3.18925691, 0.508579016}, //
+
56177 {3.18957162, 0.508516073}, //
+
56178 {3.18984437, 0.508411109}, //
+
56179 {3.1900754, 0.508264184}, //
+
56180 {3.19026423, 0.508075297}, //
+
56181 {3.19041109, 0.507844448}, //
+
56182 {3.190516, 0.507571578}, //
+
56183 {3.19057894, 0.507256806}, //
+
56184 {3.19059992, 0.506900012}, //
+
56185 {3.19057894, 0.506543219}, //
+
56186 {3.190516, 0.506228387}, //
+
56187 {3.19041109, 0.505955577}, //
+
56188 {3.19026423, 0.505724669}, //
+
56189 {3.1900754, 0.505535781}, //
+
56190 {3.18984437, 0.505388916}, //
+
56191 {3.18957162, 0.505283952}, //
+
56192 {3.18925691, 0.505221009}, //
+
56193 {3.18889999, 0.505200028}, //
+
56194 {3.18822837, 0.505200028}, //
+
56195 {3.18795562, 0.505200028}, //
+
56196 {3.18772459, 0.505200028}, //
+
56197 {3.18753576, 0.505200028}, //
+
56198 {3.1873889, 0.505200028}, //
+
56199 {3.18728399, 0.505200028}, //
+
56200 {3.18711615, 0.505200028}, //
+
56201 {3.187011, 0.505200028}, //
+
56202 {3.18686414, 0.505200028}, //
+
56203 {3.18644452, 0.505200028}, //
+
56204 {3.18617153, 0.505200028}, //
+
56205 {3.18482828, 0.505200028}, //
+
56206 {3.18455553, 0.505200028}, //
+
56207 {3.18413591, 0.505200028}, //
+
56208 {3.18398881, 0.505200028}, //
+
56209 {3.18388391, 0.505200028}, //
+
56210 });
+
56211 polys.push_back({
+
56212 {3.06547594, 0.532350004}, //
+
56213 {3.06552219, 0.532350004}, //
+
56214 {3.06559014, 0.532350004}, //
+
56215 });
+
56216 polys.push_back({
+
56217 {1.21687222, 0.476566672}, //
+
56218 {1.21550798, 0.476894438}, //
+
56219 {1.21393394, 0.477388889}, //
+
56220 {1.21214998, 0.478049994}, //
+
56221 {1.21019876, 0.478847533}, //
+
56222 {1.20812285, 0.479729027}, //
+
56223 {1.20592225, 0.480694443}, //
+
56224 {1.20359695, 0.481743813}, //
+
56225 {1.20114696, 0.482877165}, //
+
56226 {1.19857228, 0.484094441}, //
+
56227 {1.19587278, 0.48539567}, //
+
56228 {1.19304872, 0.486780852}, //
+
56229 {1.19009995, 0.488249987}, //
+
56230 {1.18780184, 0.489739507}, //
+
56231 {1.18541849, 0.491185814}, //
+
56232 {1.18295002, 0.492588878}, //
+
56233 {1.18039632, 0.493948758}, //
+
56234 {1.17775738, 0.495265424}, //
+
56235 {1.17503333, 0.496538877}, //
+
56236 {1.17222404, 0.497769147}, //
+
56237 {1.16932964, 0.498956174}, //
+
56238 {1.16635001, 0.500100017}, //
+
56239 {1.16342282, 0.501170397}, //
+
56240 {1.1606636, 0.502114832}, //
+
56241 {1.15807223, 0.502933323}, //
+
56242 {1.15564871, 0.503625929}, //
+
56243 {1.15339327, 0.504192591}, //
+
56244 {1.15130556, 0.504633307}, //
+
56245 {1.14938581, 0.504948139}, //
+
56246 {1.14763391, 0.505137026}, //
+
56247 {1.14604998, 0.505200028}, //
+
56248 {1.14252651, 0.505200028}, //
+
56249 {1.14038885, 0.505200028}, //
+
56250 {1.13536167, 0.505200028}, //
+
56251 {1.13247228, 0.505200028}, //
+
56252 {1.12933207, 0.505200028}, //
+
56253 {1.12230003, 0.505200028}, //
+
56254 {1.11851239, 0.505913556}, //
+
56255 {1.11468267, 0.506543219}, //
+
56256 {1.11081111, 0.5070889}, //
+
56257 {1.10689747, 0.507550597}, //
+
56258 {1.10294199, 0.507928371}, //
+
56259 {1.09894443, 0.508222222}, //
+
56260 {1.0949049, 0.50843209}, //
+
56261 {1.09082341, 0.508558035}, //
+
56262 {1.08669996, 0.508599997}, //
+
56263 {1.08266044, 0.508558035}, //
+
56264 {1.07883084, 0.50843209}, //
+
56265 {1.07521117, 0.508222222}, //
+
56266 {1.07180119, 0.507928371}, //
+
56267 {1.06860125, 0.507550597}, //
+
56268 {1.06561112, 0.5070889}, //
+
56269 {1.06283081, 0.506543219}, //
+
56270 {1.06026053, 0.505913556}, //
+
56271 {1.05789995, 0.505200028}, //
+
56272 {1.05630493, 0.504486442}, //
+
56273 {1.05454195, 0.503856778}, //
+
56274 {1.05261111, 0.503311098}, //
+
56275 {1.05051231, 0.5028494}, //
+
56276 {1.04824567, 0.502471626}, //
+
56277 {1.04581106, 0.502177775}, //
+
56278 {1.0432086, 0.501967907}, //
+
56279 {1.04043829, 0.501841962}, //
+
56280 {1.03750002, 0.501800001}, //
+
56281 {1.03455126, 0.50177902}, //
+
56282 {1.03172719, 0.501716077}, //
+
56283 {1.02902782, 0.501611114}, //
+
56284 {1.02645314, 0.501464188}, //
+
56285 {1.02400303, 0.501275301}, //
+
56286 {1.02167773, 0.501044452}, //
+
56287 {1.01947713, 0.500771582}, //
+
56288 {1.01740122, 0.50045681}, //
+
56289 {1.01545, 0.500100017}, //
+
56290 {1.01367652, 0.499743223}, //
+
56291 {1.00866914, 0.498735815}, //
+
56292 {1.00793886, 0.49858889}, //
+
56293 {1.00741732, 0.498483956}, //
+
56294 {1.00710428, 0.498420984}, //
+
56295 {1.00699997, 0.498400003}, //
+
56296 {1.00699997, 0.498483956}, //
+
56297 {1.00699997, 0.49858889}, //
+
56298 {1.00699997, 0.498735815}, //
+
56299 {1.00699997, 0.499155551}, //
+
56300 {1.00699997, 0.499428391}, //
+
56301 {1.00699997, 0.499743223}, //
+
56302 {1.00699997, 0.500100017}, //
+
56303 {1.00702095, 0.50045681}, //
+
56304 {1.00708389, 0.500771582}, //
+
56305 {1.00718892, 0.501044452}, //
+
56306 {1.00733578, 0.501275301}, //
+
56307 {1.00752473, 0.501464188}, //
+
56308 {1.00775552, 0.501611114}, //
+
56309 {1.00802839, 0.501716077}, //
+
56310 {1.00834322, 0.50177902}, //
+
56311 {1.00905681, 0.501820982}, //
+
56312 {1.00937164, 0.501883924}, //
+
56313 {1.00964439, 0.501988888}, //
+
56314 {1.0098753, 0.502135813}, //
+
56315 {1.01006424, 0.5023247}, //
+
56316 {1.01021111, 0.502555549}, //
+
56317 {1.01031601, 0.502828419}, //
+
56318 {1.01037896, 0.503143191}, //
+
56319 {1.01040006, 0.503499985}, //
+
56320 {1.01042104, 0.503877759}, //
+
56321 {1.01048398, 0.504255533}, //
+
56322 {1.01058888, 0.504633307}, //
+
56323 {1.01073575, 0.505011082}, //
+
56324 {1.0109247, 0.505388916}, //
+
56325 {1.01115561, 0.50576669}, //
+
56326 {1.01142836, 0.506144464}, //
+
56327 {1.01174319, 0.506522238}, //
+
56328 {1.01209998, 0.506900012}, //
+
56329 {1.01247776, 0.507256806}, //
+
56330 {1.01285553, 0.507571578}, //
+
56331 {1.0132333, 0.507844448}, //
+
56332 {1.01361108, 0.508075297}, //
+
56333 {1.01398885, 0.508264184}, //
+
56334 {1.01436663, 0.508411109}, //
+
56335 {1.0147444, 0.508516073}, //
+
56336 {1.01512218, 0.508579016}, //
+
56337 {1.01549995, 0.508599997}, //
+
56338 {1.01591909, 0.508620977}, //
+
56339 {1.01642096, 0.50868398}, //
+
56340 {1.01700556, 0.508788884}, //
+
56341 {1.0176729, 0.508935809}, //
+
56342 {1.01842284, 0.509124696}, //
+
56343 {1.01925552, 0.509355545}, //
+
56344 {1.02017105, 0.509628415}, //
+
56345 {1.02116919, 0.509943187}, //
+
56346 {1.02225006, 0.510299981}, //
+
56347 {1.0233624, 0.510698736}, //
+
56348 {1.02443266, 0.511139512}, //
+
56349 {1.02546108, 0.51162225}, //
+
56350 {1.02644753, 0.51214689}, //
+
56351 {1.02739203, 0.512713552}, //
+
56352 {1.02829444, 0.513322234}, //
+
56353 {1.0291549, 0.513972819}, //
+
56354 {1.02997351, 0.514665425}, //
+
56355 {1.03075004, 0.515399992}, //
+
56356 {1.03150558, 0.515399992}, //
+
56357 {1.03226113, 0.515399992}, //
+
56358 {1.03754997, 0.515399992}, //
+
56359 {1.04290056, 0.516166031}, //
+
56360 {1.04841912, 0.516975284}, //
+
56361 {1.05410552, 0.517827749}, //
+
56362 {1.05995989, 0.518723428}, //
+
56363 {1.0659821, 0.519662321}, //
+
56364 {1.07217216, 0.520644426}, //
+
56365 {1.07853019, 0.521669745}, //
+
56366 {1.08505619, 0.522738278}, //
+
56367 {1.09175003, 0.523850024}, //
+
56368 {1.09858024, 0.524836421}, //
+
56369 {1.10549319, 0.525529027}, //
+
56370 {1.11248887, 0.525927782}, //
+
56371 {1.11956728, 0.526032746}, //
+
56372 {1.12672842, 0.525843799}, //
+
56373 {1.13397217, 0.525361121}, //
+
56374 {1.14129877, 0.524584591}, //
+
56375 {1.14870799, 0.523514211}, //
+
56376 {1.15620005, 0.52214998}, //
+
56377 {1.16278946, 0.520733356}, //
+
56378 {1.16900241, 0.519483328}, //
+
56379 {1.1748389, 0.518400013}, //
+
56380 {1.18029881, 0.517483354}, //
+
56381 {1.18538213, 0.516733348}, //
+
56382 {1.19008887, 0.516149998}, //
+
56383 {1.19441915, 0.515733361}, //
+
56384 {1.19837284, 0.51548332}, //
+
56385 {1.20194995, 0.515399992}, //
+
56386 {1.20516109, 0.515399992}, //
+
56387 {1.21724999, 0.515399992}, //
+
56388 {1.22064996, 0.478100002}, //
+
56389 {1.22054505, 0.477427781}, //
+
56390 {1.22023022, 0.476922214}, //
+
56391 {1.21970558, 0.476583332}, //
+
56392 {1.21897101, 0.476411104}, //
+
56393 {1.21802652, 0.476405561}, //
+
56394 });
+
56395 polys.push_back({
+
56396 {4.21115017, 0.440800011}, //
+
56397 {4.21152782, 0.441172212}, //
+
56398 {4.21182156, 0.441461742}, //
+
56399 {4.21219921, 0.441833943}, //
+
56400 {4.21266127, 0.442288876}, //
+
56401 {4.21383619, 0.443446904}, //
+
56402 {4.21455002, 0.444150001}, //
+
56403 {4.21532583, 0.444967896}, //
+
56404 {4.21614265, 0.445910484}, //
+
56405 {4.21700001, 0.446977764}, //
+
56406 {4.21789837, 0.448169768}, //
+
56407 {4.21883726, 0.449486434}, //
+
56408 {4.21981668, 0.450927764}, //
+
56409 {4.22083712, 0.452493817}, //
+
56410 {4.22189808, 0.454184562}, //
+
56411 {4.22300005, 0.456}, //
+
56412 {4.2241745, 0.457825929}, //
+
56413 {4.22543192, 0.459525913}, //
+
56414 {4.22677231, 0.461100012}, //
+
56415 {4.22819519, 0.462548137}, //
+
56416 {4.22970057, 0.463870376}, //
+
56417 {4.23128891, 0.465066671}, //
+
56418 {4.23295975, 0.466137052}, //
+
56419 {4.23471355, 0.467081487}, //
+
56420 {4.23654985, 0.467900008}, //
+
56421 {4.2384181, 0.468613595}, //
+
56422 {4.24024391, 0.469243199}, //
+
56423 {4.24202776, 0.469788879}, //
+
56424 {4.24376965, 0.470250607}, //
+
56425 {4.24546957, 0.470628381}, //
+
56426 {4.24712801, 0.470922232}, //
+
56427 {4.24874401, 0.4711321}, //
+
56428 {4.25031805, 0.471258014}, //
+
56429 {4.25185013, 0.471300006}, //
+
56430 {4.25316668, 0.471300006}, //
+
56431 {4.25419092, 0.471300006}, //
+
56432 {4.25550747, 0.471300006}, //
+
56433 {4.25711679, 0.471300006}, //
+
56434 {4.25901842, 0.471300006}, //
+
56435 {4.26121283, 0.471300006}, //
+
56436 {4.26370001, 0.471300006}, //
+
56437 {4.26638603, 0.471320987}, //
+
56438 {4.26915455, 0.471383959}, //
+
56439 {4.27200556, 0.471488893}, //
+
56440 {4.27493954, 0.471635789}, //
+
56441 {4.27795601, 0.471824706}, //
+
56442 {4.28105545, 0.472055554}, //
+
56443 {4.28423786, 0.472328395}, //
+
56444 {4.28750229, 0.472643197}, //
+
56445 {4.29085016, 0.47299999}, //
+
56446 {4.29423904, 0.473377764}, //
+
56447 {4.29762793, 0.473755568}, //
+
56448 {4.30101681, 0.474133343}, //
+
56449 {4.31118345, 0.475266665}, //
+
56450 {4.31457233, 0.475644439}, //
+
56451 {4.31796122, 0.476022214}, //
+
56452 {4.3213501, 0.476399988}, //
+
56453 {4.32467651, 0.476756781}, //
+
56454 {4.32787848, 0.477071613}, //
+
56455 {4.33095551, 0.477344453}, //
+
56456 {4.33390808, 0.477575302}, //
+
56457 {4.33673573, 0.477764189}, //
+
56458 {4.33943892, 0.477911115}, //
+
56459 {4.34201717, 0.478016049}, //
+
56460 {4.34447098, 0.478079021}, //
+
56461 {4.34679985, 0.478100002}, //
+
56462 {4.34834194, 0.478887051}, //
+
56463 {4.34996796, 0.479759246}, //
+
56464 {4.35167789, 0.480716676}, //
+
56465 {4.35347176, 0.48175925}, //
+
56466 {4.35534954, 0.48288703}, //
+
56467 {4.35731125, 0.484100014}, //
+
56468 {4.35935688, 0.485398144}, //
+
56469 {4.36148643, 0.486781478}, //
+
56470 {4.36369991, 0.488249987}, //
+
56471 {4.3659668, 0.489760488}, //
+
56472 {4.3682332, 0.491269767}, //
+
56473 {4.37050009, 0.492777765}, //
+
56474 {4.37276649, 0.49428457}, //
+
56475 {4.37503338, 0.495790124}, //
+
56476 {4.37729979, 0.497294456}, //
+
56477 {4.37956667, 0.498797536}, //
+
56478 {4.38183355, 0.500299394}, //
+
56479 {4.38409996, 0.501800001}, //
+
56480 {4.38778257, 0.503982723}, //
+
56481 {4.39129734, 0.505997539}, //
+
56482 {4.39464426, 0.507844448}, //
+
56483 {4.39782333, 0.509523451}, //
+
56484 {4.40083456, 0.511034548}, //
+
56485 {4.40367794, 0.512377799}, //
+
56486 {4.406353, 0.513553083}, //
+
56487 {4.40886068, 0.514560521}, //
+
56488 {4.41120005, 0.515399992}, //
+
56489 {4.41342402, 0.516103089}, //
+
56490 {4.41556311, 0.516723454}, //
+
56491 {4.41761684, 0.517261088}, //
+
56492 {4.41958523, 0.51771605}, //
+
56493 {4.42146873, 0.518088281}, //
+
56494 {4.42326689, 0.518377781}, //
+
56495 {4.42497969, 0.518584549}, //
+
56496 {4.42660761, 0.518708646}, //
+
56497 {4.42815018, 0.518750012}, //
+
56498 {4.42961931, 0.518666685}, //
+
56499 {4.43100452, 0.518416643}, //
+
56500 {4.43230534, 0.518000007}, //
+
56501 {4.4335227, 0.517416656}, //
+
56502 {4.43465614, 0.516666651}, //
+
56503 {4.43570566, 0.515749991}, //
+
56504 {4.43667078, 0.514666677}, //
+
56505 {4.43755245, 0.513416648}, //
+
56506 {4.4383502, 0.512000024}, //
+
56507 {4.4383502, 0.511202455}, //
+
56508 {4.4383502, 0.509355545}, //
+
56509 {4.4383502, 0.508306146}, //
+
56510 {4.4383502, 0.507172823}, //
+
56511 {4.4383502, 0.501800001}, //
+
56512 {4.43837023, 0.500257432}, //
+
56513 {4.43843126, 0.49862963}, //
+
56514 {4.43853331, 0.496916682}, //
+
56515 {4.43867588, 0.495118529}, //
+
56516 {4.43885946, 0.493235171}, //
+
56517 {4.4390831, 0.491266668}, //
+
56518 {4.43934822, 0.48921296}, //
+
56519 {4.43965387, 0.487074077}, //
+
56520 {4.44000006, 0.484849989}, //
+
56521 {4.44037771, 0.482635796}, //
+
56522 {4.44075537, 0.480504334}, //
+
56523 {4.4411335, 0.478455544}, //
+
56524 {4.44151115, 0.476489514}, //
+
56525 {4.44188881, 0.474606186}, //
+
56526 {4.44226646, 0.47280556}, //
+
56527 {4.4426446, 0.471087664}, //
+
56528 {4.44302225, 0.469452471}, //
+
56529 {4.44339991, 0.467900008}, //
+
56530 {4.44375658, 0.466483325}, //
+
56531 {4.44434452, 0.464150012}, //
+
56532 {4.44457531, 0.463233322}, //
+
56533 {4.444911, 0.461899996}, //
+
56534 {4.44507885, 0.461233348}, //
+
56535 {4.44509983, 0.461149991}, //
+
56536 {4.44501591, 0.461066037}, //
+
56537 {4.444911, 0.460961103}, //
+
56538 {4.44457531, 0.460625321}, //
+
56539 {4.44375658, 0.4598068}, //
+
56540 {4.44339991, 0.459450006}, //
+
56541 {4.44304323, 0.459030241}, //
+
56542 {4.44272852, 0.458526552}, //
+
56543 {4.44245577, 0.45793888}, //
+
56544 {4.4422245, 0.457267284}, //
+
56545 {4.44203568, 0.456511736}, //
+
56546 {4.44188881, 0.455672234}, //
+
56547 {4.44178391, 0.45474878}, //
+
56548 {4.44172096, 0.453741372}, //
+
56549 {4.441679, 0.45155865}, //
+
56550 {4.44161606, 0.450551242}, //
+
56551 {4.44151115, 0.449627787}, //
+
56552 {4.44136429, 0.448788285}, //
+
56553 {4.44117546, 0.448032707}, //
+
56554 {4.44094467, 0.447361112}, //
+
56555 {4.44067144, 0.446773469}, //
+
56556 {4.44035673, 0.446269751}, //
+
56557 {4.44000006, 0.445850015}, //
+
56558 {4.43963289, 0.445493221}, //
+
56559 {4.4392643, 0.44517839}, //
+
56560 {4.43889427, 0.444905549}, //
+
56561 {4.43852329, 0.4446747}, //
+
56562 {4.43815136, 0.444485813}, //
+
56563 {4.437778, 0.444338888}, //
+
56564 {4.4374032, 0.444233954}, //
+
56565 {4.43702698, 0.444170982}, //
+
56566 {4.4366498, 0.444150001}, //
+
56567 {4.43633509, 0.444191962}, //
+
56568 {4.43614626, 0.444317907}, //
+
56569 {4.43608332, 0.444527775}, //
+
56570 {4.43614626, 0.444821596}, //
+
56571 {4.43633509, 0.44519937}, //
+
56572 {4.4366498, 0.445661098}, //
+
56573 {4.43709087, 0.446206778}, //
+
56574 {4.43765736, 0.446836412}, //
+
56575 {4.4383502, 0.447549999}, //
+
56576 {4.4383502, 0.449837029}, //
+
56577 {4.4383502, 0.454533339}, //
+
56578 {4.4383502, 0.456942588}, //
+
56579 {4.4383502, 0.459392607}, //
+
56580 {4.4383502, 0.469599992}, //
+
56581 {4.43830824, 0.472212344}, //
+
56582 {4.43818188, 0.474782705}, //
+
56583 {4.43797207, 0.477311105}, //
+
56584 {4.43767834, 0.479797542}, //
+
56585 {4.43730068, 0.482241988}, //
+
56586 {4.4368391, 0.484644443}, //
+
56587 {4.43629313, 0.487004936}, //
+
56588 {4.4356637, 0.489323467}, //
+
56589 {4.43494987, 0.491600007}, //
+
56590 {4.4341526, 0.493740737}, //
+
56591 {4.43327093, 0.495629638}, //
+
56592 {4.43230534, 0.49726668}, //
+
56593 {4.43125629, 0.498651862}, //
+
56594 {4.43012285, 0.499785185}, //
+
56595 {4.42890549, 0.500666678}, //
+
56596 {4.4276042, 0.501296282}, //
+
56597 {4.42621899, 0.501674056}, //
+
56598 {4.42474985, 0.501800001}, //
+
56599 {4.42400503, 0.501758039}, //
+
56600 {4.42325878, 0.501632094}, //
+
56601 {4.4225111, 0.501422226}, //
+
56602 {4.42176247, 0.501128376}, //
+
56603 {4.4210124, 0.500750601}, //
+
56604 {4.42026091, 0.500288904}, //
+
56605 {4.41950846, 0.499743223}, //
+
56606 {4.41875505, 0.49911359}, //
+
56607 {4.41800022, 0.498400003}, //
+
56608 {4.41724443, 0.497696906}, //
+
56609 {4.41648912, 0.497076541}, //
+
56610 {4.41573334, 0.496538877}, //
+
56611 {4.41497755, 0.496083945}, //
+
56612 {4.41422224, 0.495711714}, //
+
56613 {4.41346645, 0.495422214}, //
+
56614 {4.41271114, 0.495215446}, //
+
56615 {4.41195536, 0.495091349}, //
+
56616 {4.41120005, 0.495050013}, //
+
56617 {4.41031933, 0.493538886}, //
+
56618 {4.40918779, 0.492027789}, //
+
56619 {4.40780544, 0.490516663}, //
+
56620 {4.40617275, 0.489005566}, //
+
56621 {4.40428972, 0.487494439}, //
+
56622 {4.4021554, 0.485983342}, //
+
56623 {4.39977121, 0.484472215}, //
+
56624 {4.39713573, 0.482961118}, //
+
56625 {4.39424992, 0.481449991}, //
+
56626 {4.3927393, 0.480662972}, //
+
56627 {4.39123011, 0.479790747}, //
+
56628 {4.38972235, 0.478833348}, //
+
56629 {4.38821554, 0.477790743}, //
+
56630 {4.38670969, 0.476662964}, //
+
56631 {4.38520575, 0.475450009}, //
+
56632 {4.38370228, 0.47415185}, //
+
56633 {4.38220072, 0.472768515}, //
+
56634 {4.38070011, 0.471300006}, //
+
56635 {4.37839174, 0.469767898}, //
+
56636 {4.37600136, 0.468193829}, //
+
56637 {4.373528, 0.466577768}, //
+
56638 {4.37097168, 0.464919746}, //
+
56639 {4.36833286, 0.463219762}, //
+
56640 {4.36561108, 0.461477786}, //
+
56641 {4.3628068, 0.459693819}, //
+
56642 {4.35991955, 0.457867891}, //
+
56643 {4.35694981, 0.456}, //
+
56644 {4.35385513, 0.454226553}, //
+
56645 {4.35059214, 0.452661723}, //
+
56646 {4.34716129, 0.451305568}, //
+
56647 {4.34356213, 0.45015803}, //
+
56648 {4.33979559, 0.449219137}, //
+
56649 {4.33586121, 0.448488891}, //
+
56650 {4.3317585, 0.447967291}, //
+
56651 {4.32748842, 0.447654307}, //
+
56652 {4.32305002, 0.447549999}, //
+
56653 {4.31165504, 0.447549999}, //
+
56654 {4.30646133, 0.447549999}, //
+
56655 {4.28235006, 0.447549999}, //
+
56656 {4.27724981, 0.449564815}, //
+
56657 {4.27248335, 0.451075912}, //
+
56658 {4.26805019, 0.452083319}, //
+
56659 {4.26394987, 0.452587038}, //
+
56660 {4.26018333, 0.452587038}, //
+
56661 {4.25675011, 0.452083319}, //
+
56662 {4.25365019, 0.451075912}, //
+
56663 {4.2508831, 0.449564815}, //
+
56664 {4.2484498, 0.447549999}, //
+
56665 {4.24763155, 0.446773469}, //
+
56666 {4.24668694, 0.445954949}, //
+
56667 {4.24561644, 0.445094436}, //
+
56668 {4.24442053, 0.444191962}, //
+
56669 {4.24309826, 0.443247527}, //
+
56670 {4.2416501, 0.4422611}, //
+
56671 {4.24007607, 0.441232711}, //
+
56672 {4.23837614, 0.440162331}, //
+
56673 {4.23654985, 0.439049989}, //
+
56674 {4.23473454, 0.437927157}, //
+
56675 {4.23304367, 0.436803073}, //
+
56676 {4.23147774, 0.435677767}, //
+
56677 {4.23003626, 0.434551239}, //
+
56678 {4.22871971, 0.43342346}, //
+
56679 {4.22752762, 0.432294458}, //
+
56680 {4.22646046, 0.431164205}, //
+
56681 {4.22551775, 0.43003273}, //
+
56682 {4.22469997, 0.428900003}, //
+
56683 {4.22395515, 0.427798152}, //
+
56684 {4.22320843, 0.42673704}, //
+
56685 {4.22246122, 0.425716668}, //
+
56686 {4.22171211, 0.424737036}, //
+
56687 {4.22096252, 0.423798144}, //
+
56688 {4.22021103, 0.422899991}, //
+
56689 {4.21945858, 0.422042578}, //
+
56690 {4.2187047, 0.421225935}, //
+
56691 {4.21794987, 0.420450002}, //
+
56692 {4.21559954, 0.418099374}, //
+
56693 {4.21522141, 0.417721599}, //
+
56694 {4.21492767, 0.417427778}, //
+
56695 {4.21459198, 0.417091966}, //
+
56696 {4.21455002, 0.417050004}, //
+
56697 });
+
56698 polys.push_back({
+
56699 {0.692072213, 0.225850001}, //
+
56700 {0.689598739, 0.226075932}, //
+
56701 {0.687207997, 0.226509258}, //
+
56702 {0.684899986, 0.227149993}, //
+
56703 {0.682580888, 0.227926537}, //
+
56704 {0.680134594, 0.228745058}, //
+
56705 {0.677561104, 0.229605556}, //
+
56706 {0.674860477, 0.230508029}, //
+
56707 {0.672032714, 0.231452465}, //
+
56708 {0.669077754, 0.232438892}, //
+
56709 {0.665995657, 0.233467281}, //
+
56710 {0.662786424, 0.234537661}, //
+
56711 {0.659449995, 0.235650003}, //
+
56712 {0.656061113, 0.236761734}, //
+
56713 {0.652672231, 0.237830251}, //
+
56714 {0.64928335, 0.238855556}, //
+
56715 {0.645894468, 0.239837661}, //
+
56716 {0.642505527, 0.240776539}, //
+
56717 {0.639116645, 0.241672218}, //
+
56718 {0.635727763, 0.242524698}, //
+
56719 {0.632338881, 0.243333951}, //
+
56720 {0.62895, 0.244100004}, //
+
56721 {0.625602484, 0.244855553}, //
+
56722 {0.622337639, 0.245611116}, //
+
56723 {0.619155526, 0.246366665}, //
+
56724 {0.616056144, 0.247122228}, //
+
56725 {0.613039494, 0.247877777}, //
+
56726 {0.610105574, 0.24863334}, //
+
56727 {0.607254326, 0.249388888}, //
+
56728 {0.60448581, 0.250144452}, //
+
56729 {0.601800025, 0.2509}, //
+
56730 {0.589950025, 0.254299998}, //
+
56731 {0.589950025, 0.254677773}, //
+
56732 {0.589950025, 0.254971594}, //
+
56733 {0.589950025, 0.255811125}, //
+
56734 {0.589950025, 0.256356776}, //
+
56735 {0.589950025, 0.256986409}, //
+
56736 {0.589950025, 0.257699996}, //
+
56737 {0.589928985, 0.258475929}, //
+
56738 {0.589866042, 0.259292603}, //
+
56739 {0.589761138, 0.260149986}, //
+
56740 {0.589614213, 0.261048138}, //
+
56741 {0.589425325, 0.261987031}, //
+
56742 {0.589194417, 0.262966663}, //
+
56743 {0.588921607, 0.263987035}, //
+
56744 {0.588606775, 0.265048146}, //
+
56745 {0.588249981, 0.266149998}, //
+
56746 {0.587903678, 0.26726234}, //
+
56747 {0.587598145, 0.26833272}, //
+
56748 {0.587409616, 0.269064873}, //
+
56749 {0.586600006, 0.276913136}, //
+
56750 {0.586600006, 0.279916674}, //
+
56751 {0.586600006, 0.280937046}, //
+
56752 {0.586600006, 0.283100009}, //
+
56753 {0.586600006, 0.284170359}, //
+
56754 {0.586600006, 0.285114825}, //
+
56755 {0.586600006, 0.28763333}, //
+
56756 {0.586600006, 0.287948161}, //
+
56757 {0.586600006, 0.288137048}, //
+
56758 {0.586600006, 0.288199991}, //
+
56759 {0.58740741, 0.287402481}, //
+
56760 {0.588340759, 0.286520988}, //
+
56761 {0.589399993, 0.285555542}, //
+
56762 {0.590585172, 0.284506172}, //
+
56763 {0.591896296, 0.283372849}, //
+
56764 {0.593333304, 0.282155544}, //
+
56765 {0.594896317, 0.280854315}, //
+
56766 {0.596585214, 0.279469132}, //
+
56767 {0.598399997, 0.277999997}, //
+
56768 {0.600309253, 0.276520371}, //
+
56769 {0.602259278, 0.275081486}, //
+
56770 {0.604250014, 0.273683339}, //
+
56771 {0.606281459, 0.272325933}, //
+
56772 {0.608353674, 0.271009266}, //
+
56773 {0.610466659, 0.26973334}, //
+
56774 {0.612620354, 0.268498152}, //
+
56775 {0.614814818, 0.267303705}, //
+
56776 {0.617049992, 0.266149998}, //
+
56777 {0.619274676, 0.265090138}, //
+
56778 {0.621415436, 0.264154941}, //
+
56779 {0.623472214, 0.263344437}, //
+
56780 {0.625445068, 0.262658656}, //
+
56781 {0.627333939, 0.262097538}, //
+
56782 {0.629138887, 0.261661112}, //
+
56783 {0.630859852, 0.26134938}, //
+
56784 {0.632496893, 0.261162341}, //
+
56785 {0.634050012, 0.261099994}, //
+
56786 {0.635477185, 0.261845052}, //
+
56787 {0.636736393, 0.262591362}, //
+
56788 {0.637827754, 0.263338894}, //
+
56789 {0.638751209, 0.264087647}, //
+
56790 {0.639506817, 0.264837652}, //
+
56791 {0.640094459, 0.26558888}, //
+
56792 {0.640514195, 0.266341358}, //
+
56793 {0.640766025, 0.267095059}, //
+
56794 {0.640850008, 0.267850012}, //
+
56795 {0.640850008, 0.269361109}, //
+
56796 {0.640850008, 0.270116657}, //
+
56797 {0.640850008, 0.270872235}, //
+
56798 {0.640850008, 0.274650007}, //
+
56799 {0.640870392, 0.276822209}, //
+
56800 {0.640931487, 0.278827786}, //
+
56801 {0.641033351, 0.280666679}, //
+
56802 {0.641175926, 0.282338887}, //
+
56803 {0.64135927, 0.283844441}, //
+
56804 {0.641583323, 0.28518334}, //
+
56805 {0.641848147, 0.286355555}, //
+
56806 {0.64215368, 0.287361115}, //
+
56807 {0.642499983, 0.288199991}, //
+
56808 {0.642982721, 0.288871616}, //
+
56809 {0.643675327, 0.289375305}, //
+
56810 {0.644577801, 0.289711118}, //
+
56811 {0.645690143, 0.289879024}, //
+
56812 {0.647012353, 0.289879024}, //
+
56813 {0.648544431, 0.289711118}, //
+
56814 {0.650286436, 0.289375305}, //
+
56815 {0.65223825, 0.288871616}, //
+
56816 {0.654399991, 0.288199991}, //
+
56817 {0.656614184, 0.288158029}, //
+
56818 {0.658745706, 0.288032085}, //
+
56819 {0.660794437, 0.287822217}, //
+
56820 {0.662760496, 0.287528396}, //
+
56821 {0.664643824, 0.287150621}, //
+
56822 {0.666444421, 0.286688894}, //
+
56823 {0.668162346, 0.286143214}, //
+
56824 {0.66979754, 0.28551358}, //
+
56825 {0.671350002, 0.284799993}, //
+
56826 {0.673668504, 0.283341348}, //
+
56827 {0.67611295, 0.281965435}, //
+
56828 {0.678683341, 0.280672222}, //
+
56829 {0.681379616, 0.279461741}, //
+
56830 {0.684201837, 0.278333962}, //
+
56831 {0.687150002, 0.277288884}, //
+
56832 {0.690224051, 0.276326537}, //
+
56833 {0.693424046, 0.275446922}, //
+
56834 {0.696749985, 0.274650007}, //
+
56835 {0.700212359, 0.274020374}, //
+
56836 {0.703799367, 0.2736426}, //
+
56837 {0.707511127, 0.273516655}, //
+
56838 {0.71134752, 0.2736426}, //
+
56839 {0.715308666, 0.274020374}, //
+
56840 {0.719394445, 0.274650007}, //
+
56841 {0.723604918, 0.275531471}, //
+
56842 {0.727940142, 0.276664823}, //
+
56843 {0.7324, 0.278050005}, //
+
56844 {0.736270964, 0.280305564}, //
+
56845 {0.740350604, 0.282561123}, //
+
56846 {0.74463886, 0.284816653}, //
+
56847 {0.749135792, 0.287072212}, //
+
56848 {0.753841341, 0.28932777}, //
+
56849 {0.758755565, 0.291583329}, //
+
56850 {0.763878405, 0.293838888}, //
+
56851 {0.769209862, 0.296094447}, //
+
56852 {0.774749994, 0.298350006}, //
+
56853 {0.780300617, 0.300678998}, //
+
56854 {0.785641372, 0.303132713}, //
+
56855 {0.7907722, 0.30571112}, //
+
56856 {0.795693219, 0.308414191}, //
+
56857 {0.80040431, 0.311241984}, //
+
56858 {0.804905534, 0.314194441}, //
+
56859 {0.809196889, 0.31727159}, //
+
56860 {0.813278377, 0.320473462}, //
+
56861 {0.817149997, 0.323799998}, //
+
56862 {0.820665419, 0.327126533}, //
+
56863 {0.823678374, 0.330328405}, //
+
56864 {0.826188862, 0.333405554}, //
+
56865 {0.828196943, 0.336358011}, //
+
56866 {0.829702497, 0.339185804}, //
+
56867 {0.830705583, 0.341888875}, //
+
56868 {0.831206203, 0.344467282}, //
+
56869 {0.831204295, 0.346920997}, //
+
56870 {0.83069998, 0.349249989}, //
+
56871 {0.829881489, 0.352345049}, //
+
56872 {0.828937054, 0.355608016}, //
+
56873 {0.827866673, 0.359038889}, //
+
56874 {0.826670349, 0.362637669}, //
+
56875 {0.825348139, 0.366404325}, //
+
56876 {0.823899984, 0.370338887}, //
+
56877 {0.822325945, 0.374441355}, //
+
56878 {0.820625901, 0.37871173}, //
+
56879 {0.818799973, 0.383150011}, //
+
56880 {0.816880226, 0.387567282}, //
+
56881 {0.814876556, 0.391774684}, //
+
56882 {0.812788904, 0.395772219}, //
+
56883 {0.810617268, 0.399559885}, //
+
56884 {0.808361709, 0.403137654}, //
+
56885 {0.806022227, 0.406505555}, //
+
56886 {0.803598762, 0.409663588}, //
+
56887 {0.801091373, 0.412611723}, //
+
56888 {0.798500001, 0.41534999}, //
+
56889 {0.79580307, 0.417837024}, //
+
56890 {0.792979002, 0.420031488}, //
+
56891 {0.790027797, 0.421933323}, //
+
56892 {0.786949396, 0.423542589}, //
+
56893 {0.783743799, 0.424859256}, //
+
56894 {0.780411124, 0.425883323}, //
+
56895 {0.776951253, 0.426614821}, //
+
56896 {0.773364186, 0.42705369}, //
+
56897 {0.769649982, 0.42719999}, //
+
56898 {0.764549971, 0.42641297}, //
+
56899 {0.759783328, 0.425540745}, //
+
56900 {0.755349994, 0.424583346}, //
+
56901 {0.751250029, 0.423540741}, //
+
56902 {0.747483313, 0.422412962}, //
+
56903 {0.744050026, 0.421200007}, //
+
56904 {0.740949988, 0.419901848}, //
+
56905 {0.73818332, 0.418518513}, //
+
56906 {0.73575002, 0.417050004}, //
+
56907 {0.734249353, 0.41562283}, //
+
56908 {0.732747555, 0.414363593}, //
+
56909 {0.731244445, 0.413272232}, //
+
56910 {0.729740143, 0.412348777}, //
+
56911 {0.728234589, 0.411593199}, //
+
56912 {0.726727784, 0.411005557}, //
+
56913 {0.725219727, 0.410585791}, //
+
56914 {0.723710477, 0.410333961}, //
+
56915 {0.722199976, 0.410250008}, //
+
56916 {0.719062984, 0.410921603}, //
+
56917 {0.715674102, 0.411425322}, //
+
56918 {0.712033331, 0.411761105}, //
+
56919 {0.708140731, 0.411929011}, //
+
56920 {0.703996301, 0.411929011}, //
+
56921 {0.699599981, 0.411761105}, //
+
56922 {0.694951832, 0.411425322}, //
+
56923 {0.690051854, 0.410921603}, //
+
56924 {0.684899986, 0.410250008}, //
+
56925 {0.68262285, 0.409525931}, //
+
56926 {0.680302441, 0.408842593}, //
+
56927 {0.677938879, 0.408199996}, //
+
56928 {0.675532103, 0.407598138}, //
+
56929 {0.673082113, 0.40703705}, //
+
56930 {0.670588911, 0.406516671}, //
+
56931 {0.668052495, 0.406037033}, //
+
56932 {0.665472865, 0.405598134}, //
+
56933 {0.662850022, 0.405200005}, //
+
56934 {0.66023767, 0.404885173}, //
+
56935 {0.657667279, 0.404696286}, //
+
56936 {0.65513891, 0.404633343}, //
+
56937 {0.652652442, 0.404696286}, //
+
56938 {0.650207996, 0.404885173}, //
+
56939 {0.647805572, 0.405200005}, //
+
56940 {0.645445049, 0.405640751}, //
+
56941 {0.643126547, 0.406207412}, //
+
56942 {0.640850008, 0.406899989}, //
+
56943 {0.637827754, 0.406899989}, //
+
56944 {0.636484563, 0.406899989}, //
+
56945 {0.634973466, 0.406899989}, //
+
56946 {0.629432738, 0.406899989}, //
+
56947 {0.627250016, 0.406899989}, //
+
56948 {0.62497282, 0.406879008}, //
+
56949 {0.622652471, 0.406816036}, //
+
56950 {0.620288908, 0.406711102}, //
+
56951 {0.617882073, 0.406564206}, //
+
56952 {0.615432084, 0.406375319}, //
+
56953 {0.612938881, 0.40614444}, //
+
56954 {0.610402465, 0.4058716}, //
+
56955 {0.607822835, 0.405556798}, //
+
56956 {0.605199993, 0.405200005}, //
+
56957 {0.602608025, 0.40482223}, //
+
56958 {0.600098789, 0.404444456}, //
+
56959 {0.597672224, 0.404066652}, //
+
56960 {0.595328391, 0.403688878}, //
+
56961 {0.593067288, 0.403311104}, //
+
56962 {0.590888917, 0.402933329}, //
+
56963 {0.588793218, 0.402555555}, //
+
56964 {0.58678025, 0.402177781}, //
+
56965 {0.584850013, 0.401800007}, //
+
56966 {0.583076537, 0.401443213}, //
+
56967 {0.580155551, 0.400855541}, //
+
56968 {0.579008043, 0.400624692}, //
+
56969 {0.57806915, 0.400435805}, //
+
56970 {0.577338874, 0.40028888}, //
+
56971 {0.576817274, 0.400183946}, //
+
56972 {0.57650435, 0.400120974}, //
+
56973 {0.576399982, 0.400099993}, //
+
56974 {0.573000014, 0.42719999}, //
+
56975 {0.57316792, 0.427116036}, //
+
56976 {0.573377788, 0.427011102}, //
+
56977 {0.573671579, 0.426864207}, //
+
56978 {0.575056791, 0.426171601}, //
+
56979 {0.576399982, 0.425500005}, //
+
56980 {0.577217877, 0.425153702}, //
+
56981 {0.578160465, 0.424848139}, //
+
56982 {0.579227805, 0.424583346}, //
+
56983 {0.580419779, 0.424359262}, //
+
56984 {0.581736445, 0.424175918}, //
+
56985 {0.583177805, 0.424033344}, //
+
56986 {0.584743798, 0.423931479}, //
+
56987 {0.586434543, 0.423870385}, //
+
56988 {0.588249981, 0.42385}, //
+
56989 {0.59024322, 0.423891366}, //
+
56990 {0.592445076, 0.424015433}, //
+
56991 {0.594855547, 0.424222231}, //
+
56992 {0.597474694, 0.424511731}, //
+
56993 {0.600302458, 0.424883962}, //
+
56994 {0.603338897, 0.425338894}, //
+
56995 {0.606583953, 0.425876558}, //
+
56996 {0.610037625, 0.426496923}, //
+
56997 {0.613699973, 0.42719999}, //
+
56998 {0.61734134, 0.427955568}, //
+
56999 {0.620732069, 0.428711116}, //
+
57000 {0.623872221, 0.429466665}, //
+
57001 {0.626761734, 0.430222213}, //
+
57002 {0.629400611, 0.430977792}, //
+
57003 {0.631788909, 0.43173334}, //
+
57004 {0.63392657, 0.432488889}, //
+
57005 {0.635813594, 0.433244437}, //
+
57006 {0.63744998, 0.433999985}, //
+
57007 {0.638929605, 0.434020996}, //
+
57008 {0.640368521, 0.434083939}, //
+
57009 {0.641766667, 0.434188902}, //
+
57010 {0.643124104, 0.434335798}, //
+
57011 {0.64444077, 0.434524685}, //
+
57012 {0.645716667, 0.434755564}, //
+
57013 {0.646951854, 0.435028404}, //
+
57014 {0.648146272, 0.435343206}, //
+
57015 {0.649299979, 0.435699999}, //
+
57016 {0.650495708, 0.436098754}, //
+
57017 {0.65181607, 0.436539501}, //
+
57018 {0.653261125, 0.437022209}, //
+
57019 {0.654830873, 0.437546909}, //
+
57020 {0.656525314, 0.43811357}, //
+
57021 {0.658344448, 0.438722223}, //
+
57022 {0.660288274, 0.439372838}, //
+
57023 {0.662356794, 0.440065444}, //
+
57024 {0.664550006, 0.440800011}, //
+
57025 {0.669083357, 0.440800011}, //
+
57026 {0.678149998, 0.440800011}, //
+
57027 {0.684802473, 0.441670984}, //
+
57028 {0.691204309, 0.442795068}, //
+
57029 {0.697355568, 0.444172233}, //
+
57030 {0.70325619, 0.44580248}, //
+
57031 {0.708906174, 0.447685808}, //
+
57032 {0.71430558, 0.449822217}, //
+
57033 {0.719454348, 0.452211738}, //
+
57034 {0.724352479, 0.45485431}, //
+
57035 {0.728999972, 0.457749993}, //
+
57036 {0.731339514, 0.459250629}, //
+
57037 {0.733846903, 0.460752457}, //
+
57038 {0.736522198, 0.462255567}, //
+
57039 {0.739365458, 0.463759869}, //
+
57040 {0.742376566, 0.465265423}, //
+
57041 {0.74555558, 0.466772228}, //
+
57042 {0.74890244, 0.468280256}, //
+
57043 {0.752417266, 0.469789505}, //
+
57044 {0.756099999, 0.471300006}, //
+
57045 {0.759866655, 0.472789496}, //
+
57046 {0.763633311, 0.474235803}, //
+
57047 {0.767400026, 0.475638896}, //
+
57048 {0.771166682, 0.476998776}, //
+
57049 {0.774933338, 0.478315443}, //
+
57050 {0.778699994, 0.479588896}, //
+
57051 {0.78246665, 0.480819136}, //
+
57052 {0.786233306, 0.482006162}, //
+
57053 {0.790000021, 0.483150005}, //
+
57054 {0.793599367, 0.484178394}, //
+
57055 {0.796864212, 0.484996915}, //
+
57056 {0.799794436, 0.485605568}, //
+
57057 {0.802390099, 0.486004323}, //
+
57058 {0.80465126, 0.48619321}, //
+
57059 {0.806577802, 0.486172229}, //
+
57060 {0.808169782, 0.48594135}, //
+
57061 {0.809427142, 0.485500604}, //
+
57062 {0.810350001, 0.484849989}, //
+
57063 {0.810391963, 0.483969122}, //
+
57064 {0.810517907, 0.482837647}, //
+
57065 {0.810727775, 0.481455564}, //
+
57066 {0.811021626, 0.479822844}, //
+
57067 {0.8113994, 0.477939516}, //
+
57068 {0.811861098, 0.475805551}, //
+
57069 {0.812406778, 0.473420978}, //
+
57070 {0.813036442, 0.470785797}, //
+
57071 {0.813750029, 0.467900008}, //
+
57072 {0.814504921, 0.463398755}, //
+
57073 {0.815258622, 0.458939493}, //
+
57074 {0.816011131, 0.454522222}, //
+
57075 {0.816762328, 0.450146914}, //
+
57076 {0.817512333, 0.445813566}, //
+
57077 {0.818261087, 0.441522211}, //
+
57078 {0.819008648, 0.437272847}, //
+
57079 {0.819754958, 0.433065444}, //
+
57080 {0.820500016, 0.428900003}, //
+
57081 {0.821297526, 0.424818516}, //
+
57082 {0.822179019, 0.420862973}, //
+
57083 {0.823144436, 0.417033345}, //
+
57084 {0.824193835, 0.413329631}, //
+
57085 {0.825327158, 0.409751862}, //
+
57086 {0.826544464, 0.406300008}, //
+
57087 {0.827845693, 0.402974069}, //
+
57088 {0.829230845, 0.399774075}, //
+
57089 {0.83069998, 0.396699995}, //
+
57090 {0.832273483, 0.392891347}, //
+
57091 {0.83397162, 0.388998777}, //
+
57092 {0.835794449, 0.385022223}, //
+
57093 {0.837741971, 0.380961716}, //
+
57094 {0.839814186, 0.376817286}, //
+
57095 {0.842011094, 0.372588903}, //
+
57096 {0.844332695, 0.368276536}, //
+
57097 {0.846778989, 0.363880247}, //
+
57098 {0.849349976, 0.359400004}, //
+
57099 {0.852004945, 0.355045676}, //
+
57100 {0.854703069, 0.351027161}, //
+
57101 {0.857444465, 0.347344458}, //
+
57102 {0.860229015, 0.343997538}, //
+
57103 {0.863056779, 0.340986431}, //
+
57104 {0.865927756, 0.338311106}, //
+
57105 {0.868841946, 0.335971594}, //
+
57106 {0.871799409, 0.333967894}, //
+
57107 {0.874800026, 0.332300007}, //
+
57108 {0.875545084, 0.331586421}, //
+
57109 {0.876291335, 0.330956787}, //
+
57110 {0.877038896, 0.330411106}, //
+
57111 {0.87778765, 0.329949379}, //
+
57112 {0.878537655, 0.329571605}, //
+
57113 {0.879288912, 0.329277784}, //
+
57114 {0.880041361, 0.329067916}, //
+
57115 {0.880795062, 0.328941971}, //
+
57116 {0.881550014, 0.328900009}, //
+
57117 {0.882305562, 0.328900009}, //
+
57118 {0.883061111, 0.328900009}, //
+
57119 {0.883816659, 0.328900009}, //
+
57120 {0.884572208, 0.328900009}, //
+
57121 {0.889104962, 0.328900009}, //
+
57122 {0.890611112, 0.328900009}, //
+
57123 {0.891362369, 0.328900009}, //
+
57124 {0.895813584, 0.328900009}, //
+
57125 {0.896988869, 0.328900009}, //
+
57126 {0.897450626, 0.328900009}, //
+
57127 {0.898500025, 0.328900009}, //
+
57128 {0.901899993, 0.284799993}, //
+
57129 {0.881550014, 0.278050005}, //
+
57130 {0.881508052, 0.278133333}, //
+
57131 {0.881382108, 0.278383344}, //
+
57132 {0.88117224, 0.278800011}, //
+
57133 {0.880878389, 0.279383332}, //
+
57134 {0.880500615, 0.280133337}, //
+
57135 {0.878149986, 0.284799993}, //
+
57136 {0.877362967, 0.286310494}, //
+
57137 {0.876490712, 0.287819743}, //
+
57138 {0.875533342, 0.28932777}, //
+
57139 {0.874490738, 0.290834576}, //
+
57140 {0.873362958, 0.29234013}, //
+
57141 {0.872150004, 0.293844432}, //
+
57142 {0.870851874, 0.295347542}, //
+
57143 {0.86946851, 0.29684937}, //
+
57144 {0.867999971, 0.298350006}, //
+
57145 {0.866488874, 0.299840122}, //
+
57146 {0.864977777, 0.301288277}, //
+
57147 {0.86346668, 0.30269444}, //
+
57148 {0.861955583, 0.304058641}, //
+
57149 {0.860444427, 0.305380851}, //
+
57150 {0.85893333, 0.306661099}, //
+
57151 {0.857422233, 0.307899386}, //
+
57152 {0.855911136, 0.309095681}, //
+
57153 {0.854399979, 0.310250014}, //
+
57154 {0.852899373, 0.311340749}, //
+
57155 {0.851397514, 0.312346309}, //
+
57156 {0.849894464, 0.313266665}, //
+
57157 {0.848390102, 0.314101845}, //
+
57158 {0.846884549, 0.31485185}, //
+
57159 {0.845377803, 0.31551668}, //
+
57160 {0.843869746, 0.316096306}, //
+
57161 {0.842360497, 0.316590726}, //
+
57162 {0.840849996, 0.317000002}, //
+
57163 {0.839391351, 0.317315429}, //
+
57164 {0.838015437, 0.317506164}, //
+
57165 {0.836722195, 0.317572236}, //
+
57166 {0.835511744, 0.317513585}, //
+
57167 {0.834383965, 0.317330241}, //
+
57168 {0.833338916, 0.317022234}, //
+
57169 {0.83237654, 0.316589504}, //
+
57170 {0.831496894, 0.316032112}, //
+
57171 {0.83069998, 0.315349996}, //
+
57172 {0.830595076, 0.315266043}, //
+
57173 {0.830280244, 0.315014184}, //
+
57174 {0.829755545, 0.314594448}, //
+
57175 {0.828076541, 0.313251227}, //
+
57176 {0.825558007, 0.311236411}, //
+
57177 {0.823983967, 0.309977174}, //
+
57178 {0.8222, 0.30855}, //
+
57179 {0.820279658, 0.306976557}, //
+
57180 {0.818274081, 0.305278391}, //
+
57181 {0.816183329, 0.303455561}, //
+
57182 {0.814007401, 0.301508039}, //
+
57183 {0.811746299, 0.299435794}, //
+
57184 {0.809400022, 0.297238886}, //
+
57185 {0.80696851, 0.294917285}, //
+
57186 {0.804451823, 0.292470992}, //
+
57187 {0.801850021, 0.289900005}, //
+
57188 {0.799216688, 0.287329018}, //
+
57189 {0.796583354, 0.284882724}, //
+
57190 {0.793950021, 0.282561123}, //
+
57191 {0.791316688, 0.280364186}, //
+
57192 {0.788683355, 0.27829197}, //
+
57193 {0.786050022, 0.276344448}, //
+
57194 {0.783416688, 0.274521619}, //
+
57195 {0.780783355, 0.272823453}, //
+
57196 {0.778150022, 0.27125001}, //
+
57197 {0.775620997, 0.26978147}, //
+
57198 {0.773300588, 0.268398136}, //
+
57199 {0.771188915, 0.267100006}, //
+
57200 {0.769285798, 0.265887052}, //
+
57201 {0.767591357, 0.264759272}, //
+
57202 {0.766105533, 0.263716668}, //
+
57203 {0.764828384, 0.262759268}, //
+
57204 {0.763759851, 0.261887044}, //
+
57205 {0.762899995, 0.261099994}, //
+
57206 {0.762480259, 0.260764211}, //
+
57207 {0.761955559, 0.260344446}, //
+
57208 {0.761220992, 0.259756804}, //
+
57209 {0.760276556, 0.259001225}, //
+
57210 {0.759122193, 0.25807777}, //
+
57211 {0.754400015, 0.254299998}, //
+
57212 {0.752479613, 0.252788901}, //
+
57213 {0.750474095, 0.251277775}, //
+
57214 {0.748383343, 0.249766663}, //
+
57215 {0.746207416, 0.248255551}, //
+
57216 {0.743946314, 0.246744439}, //
+
57217 {0.741599977, 0.245233327}, //
+
57218 {0.739168525, 0.243722215}, //
+
57219 {0.736651838, 0.242211118}, //
+
57220 {0.734049976, 0.240700006}, //
+
57221 {0.731395662, 0.239220366}, //
+
57222 {0.728699386, 0.23778148}, //
+
57223 {0.725961089, 0.236383334}, //
+
57224 {0.72318089, 0.235025927}, //
+
57225 {0.72035867, 0.233709261}, //
+
57226 {0.717494428, 0.232433334}, //
+
57227 {0.714588284, 0.231198147}, //
+
57228 {0.71164012, 0.2300037}, //
+
57229 {0.708649993, 0.228850007}, //
+
57230 {0.705680251, 0.227831483}, //
+
57231 {0.702793181, 0.227020368}, //
+
57232 {0.699988902, 0.226416662}, //
+
57233 {0.697267294, 0.226020366}, //
+
57234 {0.694628417, 0.225831479}, //
+
57235 });
+
57236 polys.push_back({
+
57237 {6.62529993, 0.481449991}, //
+
57238 {6.62529993, 0.481449991}, //
+
57239 {6.62529993, 0.481449991}, //
+
57240 });
+
57241 polys.push_back({
+
57242 {3.16672397, 0.440820366}, //
+
57243 {3.16571665, 0.440983325}, //
+
57244 {3.15665007, 0.442449987}, //
+
57245 {3.15435243, 0.442848772}, //
+
57246 {3.1519711, 0.443289518}, //
+
57247 {3.14950562, 0.443772227}, //
+
57248 {3.14695621, 0.444296926}, //
+
57249 {3.14432287, 0.444863588}, //
+
57250 {3.14160562, 0.445472211}, //
+
57251 {3.13880444, 0.446122825}, //
+
57252 {3.13591909, 0.446815431}, //
+
57253 {3.13295007, 0.447549999}, //
+
57254 {3.12993836, 0.448305547}, //
+
57255 {3.12692523, 0.449061126}, //
+
57256 {3.12391114, 0.449816674}, //
+
57257 {3.12089562, 0.450572222}, //
+
57258 {3.11787891, 0.451327771}, //
+
57259 {3.11486101, 0.452083319}, //
+
57260 {3.11184192, 0.452838898}, //
+
57261 {3.10882163, 0.453594446}, //
+
57262 {3.10579991, 0.454349995}, //
+
57263 {3.10287213, 0.455063581}, //
+
57264 {3.10011101, 0.455693215}, //
+
57265 {3.09751678, 0.456238896}, //
+
57266 {3.09508896, 0.456700623}, //
+
57267 {3.0928278, 0.457078397}, //
+
57268 {3.09073329, 0.457372218}, //
+
57269 {3.08880544, 0.457582086}, //
+
57270 {3.08704448, 0.457708031}, //
+
57271 {3.08544993, 0.457749993}, //
+
57272 {3.0852828, 0.457749993}, //
+
57273 {3.08478093, 0.457749993}, //
+
57274 {3.08277345, 0.457749993}, //
+
57275 {3.08126783, 0.457749993}, //
+
57276 {3.07942772, 0.457749993}, //
+
57277 {3.0772531, 0.457749993}, //
+
57278 {3.07474375, 0.457749993}, //
+
57279 {3.07189989, 0.457749993}, //
+
57280 {3.06882596, 0.457770973}, //
+
57281 {3.06562591, 0.457833946}, //
+
57282 {3.06229997, 0.45793888}, //
+
57283 {3.05884814, 0.458085805}, //
+
57284 {3.05527043, 0.458274692}, //
+
57285 {3.0515666, 0.458505541}, //
+
57286 {3.04773712, 0.458778381}, //
+
57287 {3.04378152, 0.459093213}, //
+
57288 {3.03970003, 0.459450006}, //
+
57289 {3.03559756, 0.4598068}, //
+
57290 {3.03157902, 0.460121602}, //
+
57291 {3.0276444, 0.460394442}, //
+
57292 {3.02379394, 0.460625321}, //
+
57293 {3.02002716, 0.460814208}, //
+
57294 {3.01634455, 0.460961103}, //
+
57295 {3.01274562, 0.461066037}, //
+
57296 {3.00923085, 0.46112901}, //
+
57297 {3.00580001, 0.461149991}, //
+
57298 {3.00251532, 0.461149991}, //
+
57299 {2.99943948, 0.461149991}, //
+
57300 {2.9837501, 0.461149991}, //
+
57301 {2.97952104, 0.460519761}, //
+
57302 {2.97587848, 0.460140109}, //
+
57303 {2.97282219, 0.460011125}, //
+
57304 {2.97035241, 0.460132718}, //
+
57305 {2.96846914, 0.460504949}, //
+
57306 {2.96748972, 0.460975319}, //
+
57307 {2.96921039, 0.464769185}, //
+
57308 {2.96948647, 0.464835793}, //
+
57309 {2.9700532, 0.46502468}, //
+
57310 {2.97057772, 0.465255558}, //
+
57311 {2.97106051, 0.465528399}, //
+
57312 {2.97150135, 0.465843201}, //
+
57313 {2.97189999, 0.466199994}, //
+
57314 {2.97227716, 0.466556787}, //
+
57315 {2.97265315, 0.466871619}, //
+
57316 {2.97302771, 0.46714443}, //
+
57317 {2.97340131, 0.467375308}, //
+
57318 {2.97377348, 0.467564195}, //
+
57319 {2.97414446, 0.467711121}, //
+
57320 {2.97451425, 0.467816055}, //
+
57321 {2.9748826, 0.467879027}, //
+
57322 {2.97525001, 0.467900008}, //
+
57323 {2.97592163, 0.467900008}, //
+
57324 {2.97619438, 0.467900008}, //
+
57325 {2.97642541, 0.467900008}, //
+
57326 {2.97694993, 0.467900008}, //
+
57327 {2.97787285, 0.46794197}, //
+
57328 {2.97913027, 0.468067914}, //
+
57329 {2.98072219, 0.468277782}, //
+
57330 {2.98264885, 0.468571603}, //
+
57331 {2.98490977, 0.468949378}, //
+
57332 {2.98750567, 0.469411105}, //
+
57333 {2.99043584, 0.469956785}, //
+
57334 {2.9937005, 0.470586419}, //
+
57335 {2.99729991, 0.471300006}, //
+
57336 {3.00115061, 0.472013593}, //
+
57337 {3.00516915, 0.472643197}, //
+
57338 {3.00935555, 0.473188877}, //
+
57339 {3.01370978, 0.473650604}, //
+
57340 {3.01823211, 0.474028409}, //
+
57341 {3.02292228, 0.47432223}, //
+
57342 {3.02778029, 0.474532098}, //
+
57343 {3.03280616, 0.474658012}, //
+
57344 {3.03800011, 0.474700004}, //
+
57345 {3.04323578, 0.474700004}, //
+
57346 {3.04838777, 0.474700004}, //
+
57347 {3.08209991, 0.474700004}, //
+
57348 {3.08299136, 0.474658012}, //
+
57349 {3.08417654, 0.474532098}, //
+
57350 {3.08565545, 0.47432223}, //
+
57351 {3.08742833, 0.474028409}, //
+
57352 {3.08949494, 0.473650604}, //
+
57353 {3.09185553, 0.473188877}, //
+
57354 {3.09450984, 0.472643197}, //
+
57355 {3.09745812, 0.472013593}, //
+
57356 {3.1006999, 0.471300006}, //
+
57357 {3.10409927, 0.470544457}, //
+
57358 {3.10749745, 0.469788879}, //
+
57359 {3.11089444, 0.469033331}, //
+
57360 {3.11429024, 0.468277782}, //
+
57361 {3.1176846, 0.467522234}, //
+
57362 {3.12107778, 0.466766655}, //
+
57363 {3.12446976, 0.466011107}, //
+
57364 {3.12786055, 0.465255558}, //
+
57365 {3.1312499, 0.46450001}, //
+
57366 {3.13459682, 0.463733941}, //
+
57367 {3.13785982, 0.462924689}, //
+
57368 {3.14103889, 0.462072223}, //
+
57369 {3.14413404, 0.461176544}, //
+
57370 {3.14714503, 0.460237652}, //
+
57371 {3.15007234, 0.459255546}, //
+
57372 {3.15291548, 0.458230257}, //
+
57373 {3.1556747, 0.457161725}, //
+
57374 {3.15834999, 0.456050009}, //
+
57375 {3.16305113, 0.454035193}, //
+
57376 {3.1649611, 0.453216672}, //
+
57377 {3.16789937, 0.451957405}, //
+
57378 {3.16892767, 0.451516658}, //
+
57379 {3.16966224, 0.451201856}, //
+
57380 {3.17010307, 0.451012969}, //
+
57381 {3.17024994, 0.450949997}, //
+
57382 {3.16685009, 0.440800011}, //
+
57383 });
+
57384 polys.push_back({
+
57385 {6.54814768, -0.0111598764}, //
+
57386 {6.54111624, -0.0107802469}, //
+
57387 {6.53375006, -0.0101500005}, //
+
57388 {6.52855635, -0.00936296303}, //
+
57389 {6.52353048, -0.00849074032}, //
+
57390 {6.51867199, -0.00753333326}, //
+
57391 {6.5139823, -0.00649074093}, //
+
57392 {6.50945997, -0.00536296284}, //
+
57393 {6.5051055, -0.00414999994}, //
+
57394 {6.50091934, -0.00285185175}, //
+
57395 {6.49690056, -0.00146851852}, //
+
57396 {6.4930501, 0}, //
+
57397 {6.48932552, 0.00167839509}, //
+
57398 {6.48568439, 0.00369135803}, //
+
57399 {6.48212767, 0.00603888882}, //
+
57400 {6.47865486, 0.00872098748}, //
+
57401 {6.47526598, 0.011737654}, //
+
57402 {6.47196102, 0.0150888888}, //
+
57403 {6.46873999, 0.018774692}, //
+
57404 {6.46560287, 0.0227950625}, //
+
57405 {6.46255016, 0.0271499995}, //
+
57406 {6.46179438, 0.0278950613}, //
+
57407 {6.46103907, 0.028641358}, //
+
57408 {6.46028328, 0.0293888897}, //
+
57409 {6.45952797, 0.0301376544}, //
+
57410 {6.45877218, 0.0308876541}, //
+
57411 {6.45801687, 0.0316388905}, //
+
57412 {6.45726109, 0.0323913582}, //
+
57413 {6.45650578, 0.0331450626}, //
+
57414 {6.45574999, 0.0339000002}, //
+
57415 {6.45499468, 0.036124073}, //
+
57416 {6.45423889, 0.0382629633}, //
+
57417 {6.4534831, 0.0403166674}, //
+
57418 {6.45272779, 0.0422851853}, //
+
57419 {6.45197201, 0.044168517}, //
+
57420 {6.4512167, 0.0459666662}, //
+
57421 {6.45046091, 0.0476796292}, //
+
57422 {6.4497056, 0.0493074059}, //
+
57423 {6.44894981, 0.0508500002}, //
+
57424 {6.44822598, 0.0522771589}, //
+
57425 {6.44754267, 0.0535364188}, //
+
57426 {6.44689989, 0.0546277761}, //
+
57427 {6.44629812, 0.0555512346}, //
+
57428 {6.44573689, 0.0563067906}, //
+
57429 {6.44521666, 0.0568944439}, //
+
57430 {6.44473696, 0.0573141985}, //
+
57431 {6.44429827, 0.0575660504}, //
+
57432 {6.44390011, 0.0576499999}, //
+
57433 {6.4435854, 0.0575240739}, //
+
57434 {6.44339609, 0.0571462959}, //
+
57435 {6.44333315, 0.056516666}, //
+
57436 {6.44339609, 0.055635184}, //
+
57437 {6.4435854, 0.0545018502}, //
+
57438 {6.44390011, 0.053116668}, //
+
57439 {6.44434071, 0.0514796302}, //
+
57440 {6.44490719, 0.0495907404}, //
+
57441 {6.44560003, 0.0474499986}, //
+
57442 {6.44638681, 0.0451944433}, //
+
57443 {6.44725943, 0.0429388881}, //
+
57444 {6.44821644, 0.0406833328}, //
+
57445 {6.44925928, 0.0384277776}, //
+
57446 {6.450387, 0.0361722223}, //
+
57447 {6.45160007, 0.0339166671}, //
+
57448 {6.45289803, 0.0316611119}, //
+
57449 {6.45428133, 0.0294055548}, //
+
57450 {6.45574999, 0.0271499995}, //
+
57451 {6.45648479, 0.0249253083}, //
+
57452 {6.45717716, 0.0227845684}, //
+
57453 {6.45782757, 0.0207277779}, //
+
57454 {6.45843649, 0.0187549386}, //
+
57455 {6.45900297, 0.0168660488}, //
+
57456 {6.45952797, 0.0150611112}, //
+
57457 {6.46001053, 0.013340123}, //
+
57458 {6.46045113, 0.0117030861}, //
+
57459 {6.46084976, 0.0101500005}, //
+
57460 {6.45914984, 0.0101500005}, //
+
57461 {6.46101618, 0.00940124132}, //
+
57462 {6.46116495, 0.00873333309}, //
+
57463 {6.46135378, 0.00748333335}, //
+
57464 {6.46141672, 0.00639999984}, //
+
57465 {6.46135378, 0.00548333349}, //
+
57466 {6.46116495, 0.00473333336}, //
+
57467 {6.46084976, 0.00414999994}, //
+
57468 {6.46040916, 0.00373333343}, //
+
57469 {6.45984268, 0.00348333339}, //
+
57470 {6.45914984, 0.00340000005}, //
+
57471 {6.45831108, 0.00348333339}, //
+
57472 {6.45730543, 0.00373333343}, //
+
57473 {6.45613337, 0.00414999994}, //
+
57474 {6.45479441, 0.00473333336}, //
+
57475 {6.45328903, 0.00548333349}, //
+
57476 {6.45161676, 0.00639999984}, //
+
57477 {6.4497776, 0.00748333335}, //
+
57478 {6.44777203, 0.00873333309}, //
+
57479 {6.44560003, 0.0101500005}, //
+
57480 {6.44046831, 0.0138432095}, //
+
57481 {6.43562984, 0.0173672847}, //
+
57482 {6.4310832, 0.0207222216}, //
+
57483 {6.42682981, 0.0239080247}, //
+
57484 {6.42286873, 0.0269246921}, //
+
57485 {6.41919994, 0.029772222}, //
+
57486 {6.41582394, 0.0324506164}, //
+
57487 {6.41274071, 0.034959875}, //
+
57488 {6.40994978, 0.0373000018}, //
+
57489 {6.40735817, 0.0395345688}, //
+
57490 {6.40484858, 0.0417271592}, //
+
57491 {6.40242243, 0.0438777767}, //
+
57492 {6.4000783, 0.0459864214}, //
+
57493 {6.39781713, 0.0480530858}, //
+
57494 {6.39563894, 0.0500777774}, //
+
57495 {6.39354324, 0.0520604923}, //
+
57496 {6.39153004, 0.0540012345}, //
+
57497 {6.3895998, 0.0559}, //
+
57498 {6.387743, 0.0577679016}, //
+
57499 {6.38592863, 0.0595938265}, //
+
57500 {6.38415575, 0.0613777786}, //
+
57501 {6.38242483, 0.0631197542}, //
+
57502 {6.38073587, 0.0648197532}, //
+
57503 {6.37908888, 0.0664777756}, //
+
57504 {6.37748384, 0.0680938289}, //
+
57505 {6.37592077, 0.0696678981}, //
+
57506 {6.37440014, 0.0711999983}, //
+
57507 {6.37364435, 0.0727104917}, //
+
57508 {6.37288904, 0.0742197558}, //
+
57509 {6.37213326, 0.0757277757}, //
+
57510 {6.37137794, 0.0772345662}, //
+
57511 {6.37062216, 0.0787401199}, //
+
57512 {6.36986685, 0.0802444443}, //
+
57513 {6.36911106, 0.0817475319}, //
+
57514 {6.36835575, 0.0832493827}, //
+
57515 {6.36759996, 0.0847499967}, //
+
57516 {6.365376, 0.0877296329}, //
+
57517 {6.3632369, 0.0906240717}, //
+
57518 {6.36118317, 0.0934333354}, //
+
57519 {6.35921478, 0.0961574093}, //
+
57520 {6.35733128, 0.0987962931}, //
+
57521 {6.35553312, 0.101350002}, //
+
57522 {6.35382032, 0.103818521}, //
+
57523 {6.3521924, 0.10620185}, //
+
57524 {6.35064983, 0.108499996}, //
+
57525 {6.34759712, 0.115110494}, //
+
57526 {6.34446001, 0.121386416}, //
+
57527 {6.34123898, 0.127327785}, //
+
57528 {6.33793402, 0.13293457}, //
+
57529 {6.33454514, 0.138206795}, //
+
57530 {6.33107233, 0.143144444}, //
+
57531 {6.3275156, 0.147747532}, //
+
57532 {6.32387447, 0.152016044}, //
+
57533 {6.3201499, 0.155949995}, //
+
57534 {6.31285763, 0.161732092}, //
+
57535 {6.30606842, 0.167011723}, //
+
57536 {6.29978323, 0.171788886}, //
+
57537 {6.29400206, 0.176063582}, //
+
57538 {6.28872395, 0.179835796}, //
+
57539 {6.28394985, 0.183105558}, //
+
57540 {6.27967978, 0.185872838}, //
+
57541 {6.27591276, 0.18813765}, //
+
57542 {6.27264977, 0.189899996}, //
+
57543 {6.26972198, 0.192155555}, //
+
57544 {6.2669611, 0.194411114}, //
+
57545 {6.26436663, 0.196666673}, //
+
57546 {6.26193905, 0.198922217}, //
+
57547 {6.25967789, 0.201177776}, //
+
57548 {6.25758314, 0.203433335}, //
+
57549 {6.25565577, 0.205688894}, //
+
57550 {6.25389433, 0.207944438}, //
+
57551 {6.25229979, 0.210199997}, //
+
57552 {6.24686337, 0.214470983}, //
+
57553 {6.24259853, 0.218239501}, //
+
57554 {6.23950577, 0.221505553}, //
+
57555 {6.23758411, 0.224269137}, //
+
57556 {6.23683405, 0.226530254}, //
+
57557 {6.23725557, 0.228288889}, //
+
57558 {6.23884869, 0.229545057}, //
+
57559 {6.24161339, 0.230298772}, //
+
57560 {6.24555016, 0.230550006}, //
+
57561 {6.24788952, 0.230424076}, //
+
57562 {6.25039673, 0.230046302}, //
+
57563 {6.25307226, 0.229416668}, //
+
57564 {6.25591564, 0.22853519}, //
+
57565 {6.25892639, 0.227401853}, //
+
57566 {6.26210546, 0.22601667}, //
+
57567 {6.26545238, 0.224379629}, //
+
57568 {6.26896715, 0.222490743}, //
+
57569 {6.27264977, 0.220349997}, //
+
57570 {6.27641678, 0.217969134}, //
+
57571 {6.28018332, 0.215337649}, //
+
57572 {6.28394985, 0.212455556}, //
+
57573 {6.28771687, 0.20932284}, //
+
57574 {6.2914834, 0.205939502}, //
+
57575 {6.29524994, 0.202305555}, //
+
57576 {6.29901648, 0.198420987}, //
+
57577 {6.30278349, 0.194285795}, //
+
57578 {6.30655003, 0.189899996}, //
+
57579 {6.30740976, 0.188535184}, //
+
57580 {6.30847836, 0.187462956}, //
+
57581 {6.30975533, 0.186683327}, //
+
57582 {6.31124115, 0.186196297}, //
+
57583 {6.31293583, 0.186001852}, //
+
57584 {6.31483889, 0.186100006}, //
+
57585 {6.3169508, 0.186490744}, //
+
57586 {6.31927109, 0.187174067}, //
+
57587 {6.32180023, 0.188150004}, //
+
57588 {6.3244648, 0.189346299}, //
+
57589 {6.32717037, 0.190668523}, //
+
57590 {6.32991648, 0.192116663}, //
+
57591 {6.33270359, 0.193690747}, //
+
57592 {6.33553171, 0.195390746}, //
+
57593 {6.33839989, 0.19721666}, //
+
57594 {6.33929396, 0.197816387}, //
+
57595 {6.33874989, 0.198349997}, //
+
57596 {6.33764791, 0.199461728}, //
+
57597 {6.33658695, 0.200530246}, //
+
57598 {6.33556652, 0.20155555}, //
+
57599 {6.3345871, 0.202537656}, //
+
57600 {6.3336482, 0.203476548}, //
+
57601 {6.33274984, 0.204372227}, //
+
57602 {6.33189249, 0.205224693}, //
+
57603 {6.33107615, 0.206033945}, //
+
57604 {6.33029985, 0.206799999}, //
+
57605 {6.32954454, 0.207555562}, //
+
57606 {6.32878876, 0.208311111}, //
+
57607 {6.32501125, 0.212088883}, //
+
57608 {6.32425547, 0.212844446}, //
+
57609 {6.32350016, 0.213599995}, //
+
57610 {6.32217646, 0.214943215}, //
+
57611 {6.32163906, 0.215488896}, //
+
57612 {6.32081175, 0.216328397}, //
+
57613 {6.3201499, 0.216999993}, //
+
57614 {6.31777906, 0.218636423}, //
+
57615 {6.31519938, 0.220523462}, //
+
57616 {6.31241131, 0.222661108}, //
+
57617 {6.30941439, 0.225049376}, //
+
57618 {6.30620861, 0.227688268}, //
+
57619 {6.30279446, 0.230577782}, //
+
57620 {6.29917145, 0.233717903}, //
+
57621 {6.29534006, 0.237108648}, //
+
57622 {6.29129982, 0.24075}, //
+
57623 {6.28715563, 0.244579017}, //
+
57624 {6.28301096, 0.248532712}, //
+
57625 {6.27886677, 0.252611101}, //
+
57626 {6.2747221, 0.256814212}, //
+
57627 {6.27057791, 0.261141986}, //
+
57628 {6.26643324, 0.265594453}, //
+
57629 {6.26228905, 0.270171613}, //
+
57630 {6.25814438, 0.274873465}, //
+
57631 {6.25400019, 0.279700011}, //
+
57632 {6.24991846, 0.284495056}, //
+
57633 {6.2459631, 0.289080232}, //
+
57634 {6.24213314, 0.293455541}, //
+
57635 {6.23842955, 0.297620982}, //
+
57636 {6.23485184, 0.301576555}, //
+
57637 {6.23140001, 0.30532223}, //
+
57638 {6.22807407, 0.308858037}, //
+
57639 {6.22487402, 0.312183946}, //
+
57640 {6.22179985, 0.315299988}, //
+
57641 {6.21895599, 0.318154335}, //
+
57642 {6.21644688, 0.32067284}, //
+
57643 {6.21427202, 0.322855562}, //
+
57644 {6.21243191, 0.324702471}, //
+
57645 {6.20891905, 0.328228384}, //
+
57646 {6.20841742, 0.328732103}, //
+
57647 {6.20825005, 0.328900009}, //
+
57648 {6.20678091, 0.33025369}, //
+
57649 {6.2053957, 0.331314802}, //
+
57650 {6.20409441, 0.332083344}, //
+
57651 {6.20287704, 0.332559258}, //
+
57652 {6.2017436, 0.332742602}, //
+
57653 {6.20069456, 0.332633346}, //
+
57654 {6.19972897, 0.332231492}, //
+
57655 {6.19884729, 0.331537038}, //
+
57656 {6.19805002, 0.330549985}, //
+
57657 {6.1973362, 0.329385191}, //
+
57658 {6.19670677, 0.328135192}, //
+
57659 {6.19616127, 0.326799989}, //
+
57660 {6.19569921, 0.32537964}, //
+
57661 {6.19532156, 0.323874086}, //
+
57662 {6.19502783, 0.322283328}, //
+
57663 {6.19481802, 0.320607394}, //
+
57664 {6.19469213, 0.318846285}, //
+
57665 {6.19465017, 0.317000002}, //
+
57666 {6.19467115, 0.315079629}, //
+
57667 {6.1947341, 0.313074082}, //
+
57668 {6.194839, 0.31098333}, //
+
57669 {6.19498587, 0.308807403}, //
+
57670 {6.19517469, 0.306546301}, //
+
57671 {6.19540548, 0.304199994}, //
+
57672 {6.19567823, 0.301768512}, //
+
57673 {6.19599342, 0.299251854}, //
+
57674 {6.1963501, 0.296649992}, //
+
57675 {6.19670677, 0.294058025}, //
+
57676 {6.19702148, 0.291548759}, //
+
57677 {6.19729424, 0.289122224}, //
+
57678 {6.1975255, 0.28677839}, //
+
57679 {6.19771433, 0.284517288}, //
+
57680 {6.19786119, 0.282338887}, //
+
57681 {6.1979661, 0.280243218}, //
+
57682 {6.19802904, 0.27823025}, //
+
57683 {6.19805002, 0.276300013}, //
+
57684 {6.19805002, 0.274526536}, //
+
57685 {6.19805002, 0.271605551}, //
+
57686 {6.19805002, 0.270458013}, //
+
57687 {6.19805002, 0.26951915}, //
+
57688 {6.19805002, 0.267850012}, //
+
57689 {6.19802904, 0.267178386}, //
+
57690 {6.1979661, 0.266674697}, //
+
57691 {6.19786119, 0.266338885}, //
+
57692 {6.19771433, 0.266170979}, //
+
57693 {6.1975255, 0.266170979}, //
+
57694 {6.19729424, 0.266338885}, //
+
57695 {6.19702148, 0.266674697}, //
+
57696 {6.19670677, 0.267178386}, //
+
57697 {6.1963501, 0.267850012}, //
+
57698 {6.19595146, 0.268646926}, //
+
57699 {6.19551039, 0.269526541}, //
+
57700 {6.19502783, 0.270488888}, //
+
57701 {6.19450331, 0.271533936}, //
+
57702 {6.19393635, 0.272661716}, //
+
57703 {6.1933279, 0.273872226}, //
+
57704 {6.19267702, 0.275165439}, //
+
57705 {6.19198465, 0.276541352}, //
+
57706 {6.19124985, 0.277999997}, //
+
57707 {6.19050503, 0.279511124}, //
+
57708 {6.18975878, 0.281022221}, //
+
57709 {6.1890111, 0.282533348}, //
+
57710 {6.18826246, 0.284044445}, //
+
57711 {6.1875124, 0.285555542}, //
+
57712 {6.1867609, 0.287066668}, //
+
57713 {6.18600845, 0.288577765}, //
+
57714 {6.18525505, 0.290088892}, //
+
57715 {6.18450022, 0.291599989}, //
+
57716 {6.18374443, 0.293089509}, //
+
57717 {6.18298912, 0.294535816}, //
+
57718 {6.18223333, 0.295938879}, //
+
57719 {6.18147755, 0.297298759}, //
+
57720 {6.18072224, 0.298615426}, //
+
57721 {6.17996645, 0.299888879}, //
+
57722 {6.17921114, 0.301119149}, //
+
57723 {6.17845535, 0.302306175}, //
+
57724 {6.17770004, 0.303449988}, //
+
57725 {6.17699671, 0.304520369}, //
+
57726 {6.17637634, 0.305464804}, //
+
57727 {6.17538404, 0.306975931}, //
+
57728 {6.17472219, 0.307983339}, //
+
57729 {6.17451525, 0.308298141}, //
+
57730 {6.17439127, 0.308487028}, //
+
57731 {6.17434978, 0.30855}, //
+
57732 {6.17434978, 0.312725931}, //
+
57733 {6.17434978, 0.313542604}, //
+
57734 {6.17434978, 0.314399987}, //
+
57735 {6.17434978, 0.321512341}, //
+
57736 {6.17434978, 0.322582722}, //
+
57737 {6.17434978, 0.32361111}, //
+
57738 {6.17434978, 0.329613566}, //
+
57739 {6.17434978, 0.3302432}, //
+
57740 {6.17434978, 0.330788881}, //
+
57741 {6.17434978, 0.332300007}, //
+
57742 {6.17437029, 0.333820999}, //
+
57743 {6.17443132, 0.335383952}, //
+
57744 {6.17453337, 0.336988896}, //
+
57745 {6.17467594, 0.338635802}, //
+
57746 {6.17485905, 0.3403247}, //
+
57747 {6.17508316, 0.342055559}, //
+
57748 {6.17534828, 0.34382841}, //
+
57749 {6.17565393, 0.345643222}, //
+
57750 {6.17600012, 0.347499996}, //
+
57751 {6.17637777, 0.349388272}, //
+
57752 {6.17675543, 0.351275295}, //
+
57753 {6.17713356, 0.353161097}, //
+
57754 {6.17751122, 0.355045676}, //
+
57755 {6.17788887, 0.356929004}, //
+
57756 {6.17826653, 0.35881111}, //
+
57757 {6.17864466, 0.360691965}, //
+
57758 {6.17902231, 0.362571597}, //
+
57759 {6.17939997, 0.364450008}, //
+
57760 {6.1797986, 0.366233945}, //
+
57761 {6.18023968, 0.367808014}, //
+
57762 {6.18072224, 0.369172215}, //
+
57763 {6.18124676, 0.370326549}, //
+
57764 {6.18181372, 0.371270984}, //
+
57765 {6.18242216, 0.372005552}, //
+
57766 {6.18307304, 0.372530252}, //
+
57767 {6.18376541, 0.372845054}, //
+
57768 {6.18450022, 0.372949988}, //
+
57769 {6.18533897, 0.372803718}, //
+
57770 {6.18634462, 0.372364819}, //
+
57771 {6.18751669, 0.371633321}, //
+
57772 {6.18885565, 0.370609254}, //
+
57773 {6.19036102, 0.369292587}, //
+
57774 {6.19203329, 0.367683321}, //
+
57775 {6.19387245, 0.365781486}, //
+
57776 {6.19587755, 0.363587052}, //
+
57777 {6.19805002, 0.361099988}, //
+
57778 {6.20037889, 0.358403713}, //
+
57779 {6.2028327, 0.355581492}, //
+
57780 {6.20541096, 0.352633327}, //
+
57781 {6.20811415, 0.349559247}, //
+
57782 {6.21094179, 0.346359253}, //
+
57783 {6.21389437, 0.343033344}, //
+
57784 {6.2169714, 0.33958149}, //
+
57785 {6.22017336, 0.336003691}, //
+
57786 {6.22349977, 0.332300007}, //
+
57787 {6.22682571, 0.32849136}, //
+
57788 {6.23002577, 0.324598759}, //
+
57789 {6.23309994, 0.320622236}, //
+
57790 {6.23604822, 0.316561729}, //
+
57791 {6.23887014, 0.312417299}, //
+
57792 {6.24156666, 0.308188885}, //
+
57793 {6.24413681, 0.303876549}, //
+
57794 {6.24658155, 0.299480259}, //
+
57795 {6.24889994, 0.294999987}, //
+
57796 {6.25124979, 0.29056111}, //
+
57797 {6.25376654, 0.286288887}, //
+
57798 {6.25645018, 0.282183319}, //
+
57799 {6.25930023, 0.278244436}, //
+
57800 {6.2623167, 0.274472237}, //
+
57801 {6.26550007, 0.270866662}, //
+
57802 {6.26884985, 0.267427772}, //
+
57803 {6.27236652, 0.264155567}, //
+
57804 {6.27605009, 0.261049986}, //
+
57805 {6.27987957, 0.258059889}, //
+
57806 {6.28383541, 0.255111724}, //
+
57807 {6.28791666, 0.252205551}, //
+
57808 {6.29212427, 0.249341354}, //
+
57809 {6.29645729, 0.246519133}, //
+
57810 {6.30091667, 0.24373889}, //
+
57811 {6.30550194, 0.241000623}, //
+
57812 {6.31021309, 0.238304317}, //
+
57813 {6.31505013, 0.235650003}, //
+
57814 {6.3198452, 0.233099997}, //
+
57815 {6.32443047, 0.230716661}, //
+
57816 {6.32880545, 0.228499994}, //
+
57817 {6.3329711, 0.226449996}, //
+
57818 {6.33692646, 0.224566668}, //
+
57819 {6.34067202, 0.222849995}, //
+
57820 {6.34420824, 0.221300006}, //
+
57821 {6.34753418, 0.219916672}, //
+
57822 {6.35064983, 0.218700007}, //
+
57823 {6.36354494, 0.21384652}, //
+
57824 {6.36125612, 0.212644443}, //
+
57825 {6.35862303, 0.211138889}, //
+
57826 {6.35590553, 0.209466666}, //
+
57827 {6.35310411, 0.207627773}, //
+
57828 {6.35021925, 0.205622226}, //
+
57829 {6.34724998, 0.203449994}, //
+
57830 {6.34425926, 0.201246291}, //
+
57831 {6.34130907, 0.199168518}, //
+
57832 {6.33929396, 0.197816387}, //
+
57833 {6.33986235, 0.197258636}, //
+
57834 {6.34093285, 0.196251228}, //
+
57835 {6.34196091, 0.195327774}, //
+
57836 {6.34294748, 0.194488272}, //
+
57837 {6.3438921, 0.193732709}, //
+
57838 {6.34479427, 0.193061113}, //
+
57839 {6.34565496, 0.192473456}, //
+
57840 {6.34647369, 0.191969752}, //
+
57841 {6.34724998, 0.191550002}, //
+
57842 {6.35064983, 0.189899996}, //
+
57843 {6.35073376, 0.189981475}, //
+
57844 {6.35083866, 0.19008334}, //
+
57845 {6.35117483, 0.190409258}, //
+
57846 {6.35140562, 0.190633327}, //
+
57847 {6.35167837, 0.19089815}, //
+
57848 {6.35235023, 0.191550002}, //
+
57849 {6.35274792, 0.191948771}, //
+
57850 {6.35318708, 0.192389503}, //
+
57851 {6.35366678, 0.192872226}, //
+
57852 {6.35418701, 0.193396911}, //
+
57853 {6.35474825, 0.193963587}, //
+
57854 {6.35535002, 0.194572225}, //
+
57855 {6.35599279, 0.19522284}, //
+
57856 {6.3566761, 0.195915431}, //
+
57857 {6.35739994, 0.196649998}, //
+
57858 {6.35815573, 0.197384566}, //
+
57859 {6.35891104, 0.198077157}, //
+
57860 {6.35966682, 0.198727772}, //
+
57861 {6.36042213, 0.199336424}, //
+
57862 {6.36117792, 0.199903086}, //
+
57863 {6.36193323, 0.200427771}, //
+
57864 {6.36268902, 0.200910494}, //
+
57865 {6.36344433, 0.20135124}, //
+
57866 {6.36420012, 0.201749995}, //
+
57867 {6.36491346, 0.202148154}, //
+
57868 {6.36554337, 0.202587038}, //
+
57869 {6.36608887, 0.203066662}, //
+
57870 {6.36655045, 0.20358704}, //
+
57871 {6.36692858, 0.204148144}, //
+
57872 {6.36722231, 0.204750001}, //
+
57873 {6.36743212, 0.205392599}, //
+
57874 {6.367558, 0.206075922}, //
+
57875 {6.36759996, 0.206799999}, //
+
57876 {6.367558, 0.207555562}, //
+
57877 {6.36743212, 0.208311111}, //
+
57878 {6.36722231, 0.209066674}, //
+
57879 {6.36692858, 0.209822223}, //
+
57880 {6.36655045, 0.210577771}, //
+
57881 {6.36608887, 0.211333334}, //
+
57882 {6.36554337, 0.212088883}, //
+
57883 {6.36491346, 0.212844446}, //
+
57884 {6.36420012, 0.213599995}, //
+
57885 {6.36403275, 0.213662967}, //
+
57886 {6.36354494, 0.21384652}, //
+
57887 {6.36380577, 0.213983327}, //
+
57888 {6.36627102, 0.215155557}, //
+
57889 {6.36865234, 0.216161117}, //
+
57890 {6.37095022, 0.216999993}, //
+
57891 {6.37321663, 0.217629626}, //
+
57892 {6.37548351, 0.218007401}, //
+
57893 {6.37774992, 0.21813333}, //
+
57894 {6.3800168, 0.218007401}, //
+
57895 {6.38228321, 0.217629626}, //
+
57896 {6.38455009, 0.216999993}, //
+
57897 {6.3868165, 0.216118515}, //
+
57898 {6.38908339, 0.214985192}, //
+
57899 {6.39134979, 0.213599995}, //
+
57900 {6.39442396, 0.207661107}, //
+
57901 {6.39762402, 0.201888889}, //
+
57902 {6.40094995, 0.19628334}, //
+
57903 {6.40440178, 0.190844446}, //
+
57904 {6.40797949, 0.185572222}, //
+
57905 {6.41168356, 0.180466667}, //
+
57906 {6.41551304, 0.175527781}, //
+
57907 {6.4194684, 0.17075555}, //
+
57908 {6.42355013, 0.166150004}, //
+
57909 {6.42769432, 0.161774069}, //
+
57910 {6.43183899, 0.157690734}, //
+
57911 {6.43598318, 0.153899997}, //
+
57912 {6.44012785, 0.150401846}, //
+
57913 {6.44427204, 0.147196293}, //
+
57914 {6.44841671, 0.144283339}, //
+
57915 {6.4525609, 0.14166297}, //
+
57916 {6.45670557, 0.139335185}, //
+
57917 {6.46084976, 0.1373}, //
+
57918 {6.46484756, 0.135610491}, //
+
57919 {6.46855116, 0.134297535}, //
+
57920 {6.47196102, 0.133361116}, //
+
57921 {6.47507715, 0.132801235}, //
+
57922 {6.47789955, 0.132617906}, //
+
57923 {6.48042774, 0.132811114}, //
+
57924 {6.4826622, 0.13338086}, //
+
57925 {6.48460293, 0.134327158}, //
+
57926 {6.48624992, 0.135649994}, //
+
57927 {6.48618698, 0.13571234}, //
+
57928 {6.48599815, 0.13589938}, //
+
57929 {6.48568344, 0.136211112}, //
+
57930 {6.48524237, 0.136647537}, //
+
57931 {6.48398352, 0.137894452}, //
+
57932 {6.48316479, 0.138704941}, //
+
57933 {6.48222017, 0.139640123}, //
+
57934 {6.48115015, 0.140699998}, //
+
57935 {6.47996426, 0.141895682}, //
+
57936 {6.47865105, 0.143216044}, //
+
57937 {6.477211, 0.144661114}, //
+
57938 {6.47564363, 0.146230862}, //
+
57939 {6.47394943, 0.147925302}, //
+
57940 {6.47212791, 0.149744451}, //
+
57941 {6.47017908, 0.151688278}, //
+
57942 {6.46810293, 0.153756797}, //
+
57943 {6.46589994, 0.155949995}, //
+
57944 {6.46368599, 0.158299997}, //
+
57945 {6.46155453, 0.160816669}, //
+
57946 {6.45950556, 0.163499996}, //
+
57947 {6.45753956, 0.166350007}, //
+
57948 {6.45565605, 0.169366673}, //
+
57949 {6.45385551, 0.172549993}, //
+
57950 {6.45213747, 0.175899997}, //
+
57951 {6.4505024, 0.179416671}, //
+
57952 {6.44894981, 0.1831}, //
+
57953 {6.44173002, 0.188933954}, //
+
57954 {6.43513775, 0.194391355}, //
+
57955 {6.42917204, 0.199472219}, //
+
57956 {6.42383385, 0.204176545}, //
+
57957 {6.4191227, 0.208504319}, //
+
57958 {6.41503906, 0.212455556}, //
+
57959 {6.41158199, 0.21603024}, //
+
57960 {6.40875244, 0.219228402}, //
+
57961 {6.40654993, 0.222049996}, //
+
57962 {6.40486002, 0.224610493}, //
+
57963 {6.4035449, 0.227003083}, //
+
57964 {6.40260553, 0.229227781}, //
+
57965 {6.40204144, 0.231284574}, //
+
57966 {6.40185261, 0.23317346}, //
+
57967 {6.40203905, 0.23489444}, //
+
57968 {6.40260077, 0.236447528}, //
+
57969 {6.40353775, 0.23783271}, //
+
57970 {6.40485001, 0.239050001}, //
+
57971 {6.40644503, 0.240120366}, //
+
57972 {6.40820789, 0.241064817}, //
+
57973 {6.41013908, 0.241883337}, //
+
57974 {6.41223764, 0.242575929}, //
+
57975 {6.41450453, 0.24314259}, //
+
57976 {6.41693878, 0.243583336}, //
+
57977 {6.41954136, 0.243898153}, //
+
57978 {6.42231178, 0.24408704}, //
+
57979 {6.42525005, 0.244149998}, //
+
57980 {6.42821932, 0.244895056}, //
+
57981 {6.43110418, 0.245641351}, //
+
57982 {6.4339056, 0.246388882}, //
+
57983 {6.43662262, 0.247137651}, //
+
57984 {6.43925619, 0.247887656}, //
+
57985 {6.44180536, 0.248638883}, //
+
57986 {6.44427109, 0.249391362}, //
+
57987 {6.44665241, 0.250145048}, //
+
57988 {6.44894981, 0.2509}, //
+
57989 {6.45109081, 0.251738876}, //
+
57990 {6.45297956, 0.252744436}, //
+
57991 {6.45461655, 0.253916681}, //
+
57992 {6.45600176, 0.25525555}, //
+
57993 {6.4571352, 0.256761104}, //
+
57994 {6.45801687, 0.258433342}, //
+
57995 {6.4586463, 0.260272235}, //
+
57996 {6.45902395, 0.262277782}, //
+
57997 {6.45914984, 0.264450014}, //
+
57998 {6.45910788, 0.26688394}, //
+
57999 {6.45898199, 0.269652456}, //
+
58000 {6.45877218, 0.272755563}, //
+
58001 {6.45847845, 0.276193202}, //
+
58002 {6.4581008, 0.27996543}, //
+
58003 {6.45763874, 0.28407222}, //
+
58004 {6.45754957, 0.284799993}, //
+
58005 {6.45574999, 0.284799993}, //
+
58006 {6.45419741, 0.284820974}, //
+
58007 {6.45256233, 0.284883946}, //
+
58008 {6.45084429, 0.28498888}, //
+
58009 {6.44904375, 0.285135806}, //
+
58010 {6.44716072, 0.285324693}, //
+
58011 {6.44519424, 0.285555542}, //
+
58012 {6.44314575, 0.285828382}, //
+
58013 {6.44101429, 0.286143214}, //
+
58014 {6.43879986, 0.286500007}, //
+
58015 {6.43654394, 0.286877781}, //
+
58016 {6.43428659, 0.287255555}, //
+
58017 {6.43202782, 0.28763333}, //
+
58018 {6.42976809, 0.288011104}, //
+
58019 {6.42750692, 0.288388878}, //
+
58020 {6.42524433, 0.288766652}, //
+
58021 {6.42298079, 0.289144456}, //
+
58022 {6.42071629, 0.289522231}, //
+
58023 {6.41844988, 0.289900005}, //
+
58024 {6.41627789, 0.29029876}, //
+
58025 {6.41427231, 0.290739506}, //
+
58026 {6.41243315, 0.291222215}, //
+
58027 {6.41076088, 0.291746914}, //
+
58028 {6.4092555, 0.292313576}, //
+
58029 {6.40791655, 0.292922229}, //
+
58030 {6.40674448, 0.293572843}, //
+
58031 {6.40573883, 0.294265419}, //
+
58032 {6.40490007, 0.294999987}, //
+
58033 {6.40167904, 0.297318518}, //
+
58034 {6.39803839, 0.299762964}, //
+
58035 {6.39397764, 0.302333325}, //
+
58036 {6.38949776, 0.305029631}, //
+
58037 {6.3845973, 0.307851851}, //
+
58038 {6.37927771, 0.310799986}, //
+
58039 {6.37353849, 0.313874066}, //
+
58040 {6.36737919, 0.31707406}, //
+
58041 {6.36079979, 0.3204}, //
+
58042 {6.3539381, 0.323726535}, //
+
58043 {6.34690857, 0.326928407}, //
+
58044 {6.33971119, 0.330005556}, //
+
58045 {6.33234549, 0.332958013}, //
+
58046 {6.32481241, 0.335785806}, //
+
58047 {6.31711102, 0.338488877}, //
+
58048 {6.30924177, 0.341067284}, //
+
58049 {6.30120516, 0.343520999}, //
+
58050 {6.29300022, 0.345849991}, //
+
58051 {6.2914896, 0.346605569}, //
+
58052 {6.28998041, 0.347361118}, //
+
58053 {6.28847218, 0.348116666}, //
+
58054 {6.28696537, 0.348872215}, //
+
58055 {6.28546, 0.349627763}, //
+
58056 {6.28395557, 0.350383341}, //
+
58057 {6.28245258, 0.35113889}, //
+
58058 {6.28095055, 0.351894438}, //
+
58059 {6.27944994, 0.352649987}, //
+
58060 {6.26751995, 0.355870366}, //
+
58061 {6.2558403, 0.359509259}, //
+
58062 {6.24441099, 0.363566667}, //
+
58063 {6.2332325, 0.368042588}, //
+
58064 {6.22230482, 0.372937024}, //
+
58065 {6.21162796, 0.378250003}, //
+
58066 {6.20120144, 0.383981496}, //
+
58067 {6.19102526, 0.390131474}, //
+
58068 {6.18109989, 0.396699995}, //
+
58069 {6.17819309, 0.39886111}, //
+
58070 {6.17549515, 0.400811106}, //
+
58071 {6.17300558, 0.402550012}, //
+
58072 {6.17072487, 0.404077768}, //
+
58073 {6.16865253, 0.405394435}, //
+
58074 {6.16678905, 0.406500012}, //
+
58075 {6.16513395, 0.407394439}, //
+
58076 {6.16368771, 0.408077776}, //
+
58077 {6.16244984, 0.408549994}, //
+
58078 {6.16134834, 0.408843815}, //
+
58079 {6.1602869, 0.40896976}, //
+
58080 {6.15926647, 0.408927768}, //
+
58081 {6.15828705, 0.408717901}, //
+
58082 {6.15734816, 0.408340126}, //
+
58083 {6.15644979, 0.407794446}, //
+
58084 {6.15559244, 0.407080859}, //
+
58085 {6.1547761, 0.406199396}, //
+
58086 {6.15399981, 0.405149996}, //
+
58087 {6.15328646, 0.404048145}, //
+
58088 {6.15265656, 0.402987033}, //
+
58089 {6.15211105, 0.401966661}, //
+
58090 {6.15164948, 0.400987029}, //
+
58091 {6.15127182, 0.400048137}, //
+
58092 {6.15097761, 0.399150014}, //
+
58093 {6.1507678, 0.398292601}, //
+
58094 {6.15064192, 0.397475928}, //
+
58095 {6.15059996, 0.396699995}, //
+
58096 {6.14988661, 0.395944446}, //
+
58097 {6.14925671, 0.395188898}, //
+
58098 {6.1487112, 0.39443332}, //
+
58099 {6.14824915, 0.393677771}, //
+
58100 {6.14787149, 0.392922223}, //
+
58101 {6.14757776, 0.392166674}, //
+
58102 {6.14736795, 0.391411126}, //
+
58103 {6.14724207, 0.390655547}, //
+
58104 {6.14720011, 0.389899999}, //
+
58105 {6.1464653, 0.389112949}, //
+
58106 {6.14577293, 0.388240755}, //
+
58107 {6.14512205, 0.387283325}, //
+
58108 {6.14451361, 0.386240751}, //
+
58109 {6.14394712, 0.385112971}, //
+
58110 {6.14342213, 0.383899987}, //
+
58111 {6.14293957, 0.382601857}, //
+
58112 {6.14249897, 0.381218523}, //
+
58113 {6.14209986, 0.379750013}, //
+
58114 {6.14134455, 0.37672779}, //
+
58115 {6.14096689, 0.375216663}, //
+
58116 {6.14058876, 0.373705566}, //
+
58117 {6.14021111, 0.372194439}, //
+
58118 {6.13945532, 0.369172215}, //
+
58119 {6.13907766, 0.367661119}, //
+
58120 {6.13870001, 0.366149992}, //
+
58121 {6.13835382, 0.364691347}, //
+
58122 {6.13804817, 0.363315433}, //
+
58123 {6.13778353, 0.362022221}, //
+
58124 {6.13755941, 0.36081174}, //
+
58125 {6.13737583, 0.359683961}, //
+
58126 {6.13723326, 0.358638883}, //
+
58127 {6.13713169, 0.357676536}, //
+
58128 {6.13707018, 0.35679692}, //
+
58129 {6.13705015, 0.356000006}, //
+
58130 {6.13705015, 0.352649987}, //
+
58131 {6.09975004, 0.376349986}, //
+
58132 {6.09979153, 0.376454324}, //
+
58133 {6.0999155, 0.376767278}, //
+
58134 {6.10123873, 0.380105555}, //
+
58135 {6.1017766, 0.38146174}, //
+
58136 {6.10239697, 0.38302654}, //
+
58137 {6.10309982, 0.384799987}, //
+
58138 {6.10389757, 0.386709273}, //
+
58139 {6.10477924, 0.388659269}, //
+
58140 {6.10574436, 0.390650004}, //
+
58141 {6.10679388, 0.392681479}, //
+
58142 {6.10792732, 0.394753695}, //
+
58143 {6.10914421, 0.396866679}, //
+
58144 {6.1104455, 0.399020374}, //
+
58145 {6.11183071, 0.401214808}, //
+
58146 {6.11329985, 0.403450012}, //
+
58147 {6.11481047, 0.405716062}, //
+
58148 {6.11631966, 0.407980859}, //
+
58149 {6.11782789, 0.410244435}, //
+
58150 {6.1193347, 0.412506789}, //
+
58151 {6.12084007, 0.414767891}, //
+
58152 {6.12234449, 0.417027771}, //
+
58153 {6.12384748, 0.41928643}, //
+
58154 {6.12534952, 0.421543837}, //
+
58155 {6.12685013, 0.423799992}, //
+
58156 {6.12831926, 0.425982714}, //
+
58157 {6.12970448, 0.42799753}, //
+
58158 {6.13100576, 0.429844439}, //
+
58159 {6.13222265, 0.431523442}, //
+
58160 {6.13335609, 0.433034569}, //
+
58161 {6.13440561, 0.434377789}, //
+
58162 {6.13537121, 0.435553074}, //
+
58163 {6.1362524, 0.436560482}, //
+
58164 {6.13705015, 0.437400013}, //
+
58165 {6.13863373, 0.438092589}, //
+
58166 {6.14038563, 0.438659251}, //
+
58167 {6.14230537, 0.439099997}, //
+
58168 {6.14439344, 0.439414829}, //
+
58169 {6.14664888, 0.439603716}, //
+
58170 {6.14907217, 0.439666659}, //
+
58171 {6.15166378, 0.439603716}, //
+
58172 {6.15442276, 0.439414829}, //
+
58173 {6.15735006, 0.439099997}, //
+
58174 {6.16032982, 0.438701242}, //
+
58175 {6.16322422, 0.438260496}, //
+
58176 {6.16603327, 0.437777787}, //
+
58177 {6.16875744, 0.437253088}, //
+
58178 {6.17139626, 0.436686426}, //
+
58179 {6.1739502, 0.436077774}, //
+
58180 {6.1764183, 0.435427159}, //
+
58181 {6.17880201, 0.434734553}, //
+
58182 {6.18109989, 0.433999985}, //
+
58183 {6.18244314, 0.433999985}, //
+
58184 {6.18450022, 0.433999985}, //
+
58185 {6.18609428, 0.433244437}, //
+
58186 {6.18785572, 0.432488889}, //
+
58187 {6.1897831, 0.43173334}, //
+
58188 {6.19187784, 0.430977792}, //
+
58189 {6.194139, 0.430222213}, //
+
58190 {6.19656658, 0.429466665}, //
+
58191 {6.19916105, 0.428711116}, //
+
58192 {6.20192242, 0.427955568}, //
+
58193 {6.2048502, 0.42719999}, //
+
58194 {6.20798683, 0.426454931}, //
+
58195 {6.21137571, 0.425708652}, //
+
58196 {6.21501684, 0.42496112}, //
+
58197 {6.21890926, 0.424212337}, //
+
58198 {6.22305393, 0.423462331}, //
+
58199 {6.22744989, 0.422711104}, //
+
58200 {6.2320981, 0.421958655}, //
+
58201 {6.23699808, 0.421204925}, //
+
58202 {6.24214983, 0.420450002}, //
+
58203 {6.24772024, 0.419694453}, //
+
58204 {6.25387573, 0.418938875}, //
+
58205 {6.26061678, 0.418183327}, //
+
58206 {6.26794243, 0.417427778}, //
+
58207 {6.27585363, 0.41667223}, //
+
58208 {6.28434992, 0.415916681}, //
+
58209 {6.29343128, 0.415161103}, //
+
58210 {6.3030982, 0.414405555}, //
+
58211 {6.3133502, 0.413650006}, //
+
58212 {6.32507038, 0.411961108}, //
+
58213 {6.33612061, 0.409894437}, //
+
58214 {6.34649992, 0.407449991}, //
+
58215 {6.35620928, 0.40462777}, //
+
58216 {6.3652482, 0.401427776}, //
+
58217 {6.3736167, 0.397850007}, //
+
58218 {6.38131475, 0.393894434}, //
+
58219 {6.38834238, 0.389561117}, //
+
58220 {6.39470005, 0.384849995}, //
+
58221 {6.40048218, 0.380012959}, //
+
58222 {6.40576172, 0.375301838}, //
+
58223 {6.41053867, 0.370716661}, //
+
58224 {6.41481352, 0.366257399}, //
+
58225 {6.41858578, 0.361924082}, //
+
58226 {6.42185545, 0.35771668}, //
+
58227 {6.42462301, 0.353635192}, //
+
58228 {6.42688751, 0.349679619}, //
+
58229 {6.4286499, 0.345849991}, //
+
58230 {6.43010855, 0.343667895}, //
+
58231 {6.4314847, 0.341654927}, //
+
58232 {6.43277788, 0.339811116}, //
+
58233 {6.43398809, 0.338136435}, //
+
58234 {6.43511581, 0.336630851}, //
+
58235 {6.43616104, 0.335294455}, //
+
58236 {6.4371233, 0.334127158}, //
+
58237 {6.43800306, 0.333129019}, //
+
58238 {6.43879986, 0.332300007}, //
+
58239 {6.44099331, 0.330033332}, //
+
58240 {6.44306183, 0.327766657}, //
+
58241 {6.44500542, 0.325500011}, //
+
58242 {6.44682455, 0.323233336}, //
+
58243 {6.44851923, 0.320966661}, //
+
58244 {6.45008898, 0.318699986}, //
+
58245 {6.45153379, 0.31643334}, //
+
58246 {6.45285416, 0.314166665}, //
+
58247 {6.45405006, 0.31189999}, //
+
58248 {6.45514154, 0.309664816}, //
+
58249 {6.45574999, 0.308339}, //
+
58250 {6.45574999, 0.306750625}, //
+
58251 {6.45574999, 0.304788888}, //
+
58252 {6.45574999, 0.298400015}, //
+
58253 {6.45646381, 0.293289512}, //
+
58254 {6.45709324, 0.288513571}, //
+
58255 {6.45754957, 0.284799993}, //
+
58256 {6.46221399, 0.284799993}, //
+
58257 {6.46246624, 0.284799993}, //
+
58258 {6.46255016, 0.284799993}, //
+
58259 {6.46246624, 0.285217285}, //
+
58260 {6.46236134, 0.285738885}, //
+
58261 {6.46221399, 0.286469132}, //
+
58262 {6.46120691, 0.291476548}, //
+
58263 {6.46084976, 0.293249995}, //
+
58264 {6.46043015, 0.29515925}, //
+
58265 {6.45992661, 0.297109246}, //
+
58266 {6.45933867, 0.299100012}, //
+
58267 {6.45866728, 0.301131487}, //
+
58268 {6.45791149, 0.303203702}, //
+
58269 {6.45707226, 0.305316657}, //
+
58270 {6.45614862, 0.307470381}, //
+
58271 {6.45574999, 0.308339}, //
+
58272 {6.45574999, 0.31907779}, //
+
58273 {6.45574999, 0.320001245}, //
+
58274 {6.45574999, 0.322100013}, //
+
58275 {6.45650482, 0.321407408}, //
+
58276 {6.4572587, 0.320840746}, //
+
58277 {6.45801115, 0.3204}, //
+
58278 {6.45876217, 0.320085198}, //
+
58279 {6.45951223, 0.319896311}, //
+
58280 {6.46026134, 0.319833338}, //
+
58281 {6.46100855, 0.319896311}, //
+
58282 {6.4617548, 0.320085198}, //
+
58283 {6.4625001, 0.3204}, //
+
58284 {6.46323442, 0.320798755}, //
+
58285 {6.46392727, 0.321239501}, //
+
58286 {6.46457767, 0.321722209}, //
+
58287 {6.4651866, 0.322246909}, //
+
58288 {6.46575308, 0.32281357}, //
+
58289 {6.4662776, 0.323422223}, //
+
58290 {6.46676064, 0.324072838}, //
+
58291 {6.46720123, 0.324765444}, //
+
58292 {6.46759987, 0.325500011}, //
+
58293 {6.46787357, 0.326296926}, //
+
58294 {6.46793842, 0.327176541}, //
+
58295 {6.46779442, 0.328138888}, //
+
58296 {6.46744204, 0.329183936}, //
+
58297 {6.4668808, 0.330311716}, //
+
58298 {6.46611118, 0.331522226}, //
+
58299 {6.46513271, 0.332815439}, //
+
58300 {6.46394587, 0.334191352}, //
+
58301 {6.46255016, 0.335649997}, //
+
58302 {6.46181536, 0.33722347}, //
+
58303 {6.46112299, 0.338921607}, //
+
58304 {6.46047211, 0.340744436}, //
+
58305 {6.45986366, 0.342691988}, //
+
58306 {6.4592967, 0.344764203}, //
+
58307 {6.45877218, 0.346961111}, //
+
58308 {6.45828962, 0.349282712}, //
+
58309 {6.45784855, 0.351729006}, //
+
58310 {6.45744991, 0.354299992}, //
+
58311 {6.45709324, 0.356922835}, //
+
58312 {6.45677853, 0.359502465}, //
+
58313 {6.45650578, 0.362038881}, //
+
58314 {6.45627451, 0.364532113}, //
+
58315 {6.45608568, 0.366982102}, //
+
58316 {6.45593882, 0.369388878}, //
+
58317 {6.45583391, 0.371752471}, //
+
58318 {6.45577097, 0.37407285}, //
+
58319 {6.45574999, 0.376349986}, //
+
58320 {6.45579195, 0.378490746}, //
+
58321 {6.45591784, 0.380379617}, //
+
58322 {6.45612764, 0.382016659}, //
+
58323 {6.45642138, 0.383401841}, //
+
58324 {6.45679951, 0.384535193}, //
+
58325 {6.45726109, 0.385416657}, //
+
58326 {6.45780659, 0.38604629}, //
+
58327 {6.45843649, 0.386424065}, //
+
58328 {6.45914984, 0.386550009}, //
+
58329 {6.46062946, 0.386570364}, //
+
58330 {6.46206856, 0.386631489}, //
+
58331 {6.46346664, 0.386733323}, //
+
58332 {6.4648242, 0.386875927}, //
+
58333 {6.46614075, 0.387059271}, //
+
58334 {6.46741676, 0.387283325}, //
+
58335 {6.46865177, 0.387548149}, //
+
58336 {6.46984625, 0.387853712}, //
+
58337 {6.47100019, 0.388200015}, //
+
58338 {6.47207022, 0.388640732}, //
+
58339 {6.47301483, 0.389207393}, //
+
58340 {6.47383356, 0.389899999}, //
+
58341 {6.47452593, 0.39071852}, //
+
58342 {6.47509241, 0.391662955}, //
+
58343 {6.47553349, 0.392733335}, //
+
58344 {6.4758482, 0.393929631}, //
+
58345 {6.47603703, 0.39525184}, //
+
58346 {6.47609997, 0.396699995}, //
+
58347 {6.47681379, 0.396741986}, //
+
58348 {6.47744322, 0.396867901}, //
+
58349 {6.47798872, 0.397077769}, //
+
58350 {6.47845078, 0.39737159}, //
+
58351 {6.47882843, 0.397749394}, //
+
58352 {6.47912216, 0.398211122}, //
+
58353 {6.47933197, 0.398756802}, //
+
58354 {6.47945786, 0.399386406}, //
+
58355 {6.47949982, 0.400099993}, //
+
58356 {6.4795208, 0.400854945}, //
+
58357 {6.47958374, 0.401608646}, //
+
58358 {6.47968912, 0.402361125}, //
+
58359 {6.47983599, 0.403112352}, //
+
58360 {6.48002481, 0.403862357}, //
+
58361 {6.4802556, 0.404611111}, //
+
58362 {6.48052835, 0.405358642}, //
+
58363 {6.48084307, 0.406104952}, //
+
58364 {6.48120022, 0.40685001}, //
+
58365 {6.48155689, 0.407605559}, //
+
58366 {6.4818716, 0.408361107}, //
+
58367 {6.48214436, 0.409116656}, //
+
58368 {6.48237514, 0.409872234}, //
+
58369 {6.48256397, 0.410627782}, //
+
58370 {6.48271132, 0.411383331}, //
+
58371 {6.48281622, 0.412138879}, //
+
58372 {6.48287916, 0.412894458}, //
+
58373 {6.48290014, 0.413650006}, //
+
58374 {6.4822073, 0.414405555}, //
+
58375 {6.48164082, 0.415161103}, //
+
58376 {6.48120022, 0.415916681}, //
+
58377 {6.48088503, 0.41667223}, //
+
58378 {6.4806962, 0.417427778}, //
+
58379 {6.48063326, 0.418183327}, //
+
58380 {6.4806962, 0.418938875}, //
+
58381 {6.48088503, 0.419694453}, //
+
58382 {6.48120022, 0.420450002}, //
+
58383 {6.48155689, 0.421183944}, //
+
58384 {6.4818716, 0.421874702}, //
+
58385 {6.48214436, 0.422522217}, //
+
58386 {6.48237514, 0.423126549}, //
+
58387 {6.48256397, 0.423687667}, //
+
58388 {6.48271132, 0.424205542}, //
+
58389 {6.48281622, 0.424680233}, //
+
58390 {6.48287916, 0.425111741}, //
+
58391 {6.48290014, 0.425500005}, //
+
58392 {6.48294115, 0.425815433}, //
+
58393 {6.48306561, 0.426006168}, //
+
58394 {6.48327208, 0.42607221}, //
+
58395 {6.48356152, 0.426013589}, //
+
58396 {6.48393393, 0.425830245}, //
+
58397 {6.48438883, 0.425522208}, //
+
58398 {6.4849267, 0.425089508}, //
+
58399 {6.48554707, 0.424532086}, //
+
58400 {6.48624992, 0.42385}, //
+
58401 {6.48698473, 0.423094451}, //
+
58402 {6.4876771, 0.422338903}, //
+
58403 {6.48832798, 0.421583325}, //
+
58404 {6.48893642, 0.420827776}, //
+
58405 {6.48950291, 0.420072228}, //
+
58406 {6.4900279, 0.419316679}, //
+
58407 {6.49051046, 0.418561101}, //
+
58408 {6.49095106, 0.417805552}, //
+
58409 {6.49135017, 0.417050004}, //
+
58410 {6.49170685, 0.416294456}, //
+
58411 {6.49202156, 0.415538877}, //
+
58412 {6.49229431, 0.414783329}, //
+
58413 {6.4925251, 0.41402778}, //
+
58414 {6.49271441, 0.413272232}, //
+
58415 {6.49286127, 0.412516654}, //
+
58416 {6.49296618, 0.411761105}, //
+
58417 {6.49302912, 0.411005557}, //
+
58418 {6.4930501, 0.410250008}, //
+
58419 {6.4930501, 0.408388883}, //
+
58420 {6.4930501, 0.406899989}, //
+
58421 {6.49313402, 0.406981468}, //
+
58422 {6.49323893, 0.407083333}, //
+
58423 {6.49357462, 0.407409251}, //
+
58424 {6.49407816, 0.407898158}, //
+
58425 {6.49439335, 0.408203691}, //
+
58426 {6.49475002, 0.408549994}, //
+
58427 {6.49911547, 0.412915438}, //
+
58428 {6.4998498, 0.413650006}, //
+
58429 {6.50059509, 0.415119141}, //
+
58430 {6.50134134, 0.416504323}, //
+
58431 {6.50208902, 0.417805552}, //
+
58432 {6.50283766, 0.419022828}, //
+
58433 {6.50358772, 0.420156181}, //
+
58434 {6.50433874, 0.42120555}, //
+
58435 {6.50509119, 0.422170997}, //
+
58436 {6.50584507, 0.42305246}, //
+
58437 {6.5065999, 0.42385}, //
+
58438 {6.5065999, 0.42719999}, //
+
58439 {6.50678873, 0.42719999}, //
+
58440 {6.50794315, 0.42719999}, //
+
58441 {6.50829983, 0.42719999}, //
+
58442 {6.50869894, 0.427158654}, //
+
58443 {6.50913954, 0.427034557}, //
+
58444 {6.5096221, 0.426827788}, //
+
58445 {6.51014709, 0.426538259}, //
+
58446 {6.51071358, 0.426166058}, //
+
58447 {6.51132202, 0.425711125}, //
+
58448 {6.5119729, 0.425173461}, //
+
58449 {6.51266527, 0.424553096}, //
+
58450 {6.51340008, 0.42385}, //
+
58451 {6.51411343, 0.42385}, //
+
58452 {6.51474333, 0.42385}, //
+
58453 {6.51528883, 0.42385}, //
+
58454 {6.51575041, 0.42385}, //
+
58455 {6.51612854, 0.42385}, //
+
58456 {6.51642227, 0.42385}, //
+
58457 {6.51679993, 0.42385}, //
+
58458 {6.51825857, 0.423177779}, //
+
58459 {6.51963472, 0.422672212}, //
+
58460 {6.52092791, 0.42233333}, //
+
58461 {6.52213812, 0.422161102}, //
+
58462 {6.52326584, 0.422155559}, //
+
58463 {6.52431107, 0.42231667}, //
+
58464 {6.52527332, 0.422644436}, //
+
58465 {6.52615309, 0.423138887}, //
+
58466 {6.52694988, 0.423799992}, //
+
58467 {6.52766371, 0.42455557}, //
+
58468 {6.52829313, 0.425311118}, //
+
58469 {6.52883911, 0.426066667}, //
+
58470 {6.52930069, 0.426822215}, //
+
58471 {6.52967834, 0.427577764}, //
+
58472 {6.52997208, 0.428333342}, //
+
58473 {6.53018188, 0.429088891}, //
+
58474 {6.53030825, 0.429844439}, //
+
58475 {6.53035021, 0.430599988}, //
+
58476 {6.53177738, 0.432027161}, //
+
58477 {6.53242779, 0.432677776}, //
+
58478 {6.53303623, 0.433286428}, //
+
58479 {6.53412771, 0.434377789}, //
+
58480 {6.53461027, 0.434860498}, //
+
58481 {6.53544998, 0.435699999}, //
+
58482 {6.53582716, 0.436056793}, //
+
58483 {6.53620291, 0.436371595}, //
+
58484 {6.5365777, 0.436644435}, //
+
58485 {6.53695107, 0.436875314}, //
+
58486 {6.53732347, 0.437064201}, //
+
58487 {6.53769445, 0.437211096}, //
+
58488 {6.538064, 0.43731606}, //
+
58489 {6.5384326, 0.437379003}, //
+
58490 {6.53879976, 0.437400013}, //
+
58491 {6.53919888, 0.437358022}, //
+
58492 {6.53963947, 0.437232107}, //
+
58493 {6.54012203, 0.437022209}, //
+
58494 {6.54064703, 0.436728388}, //
+
58495 {6.54121351, 0.436350614}, //
+
58496 {6.54182243, 0.435888886}, //
+
58497 {6.54247284, 0.435343206}, //
+
58498 {6.54316521, 0.434713572}, //
+
58499 {6.54390001, 0.433999985}, //
+
58500 {6.54465532, 0.432531476}, //
+
58501 {6.54541111, 0.431148142}, //
+
58502 {6.5461669, 0.429850012}, //
+
58503 {6.54692221, 0.428637028}, //
+
58504 {6.54767799, 0.427509248}, //
+
58505 {6.5484333, 0.426466674}, //
+
58506 {6.54918909, 0.425509274}, //
+
58507 {6.5499444, 0.424637049}, //
+
58508 {6.55070019, 0.42385}, //
+
58509 {6.55362701, 0.421625316}, //
+
58510 {6.55638647, 0.419484556}, //
+
58511 {6.5589776, 0.417427778}, //
+
58512 {6.56140137, 0.415454924}, //
+
58513 {6.56365681, 0.413566053}, //
+
58514 {6.5657444, 0.411761105}, //
+
58515 {6.56766415, 0.41004011}, //
+
58516 {6.56941605, 0.408403099}, //
+
58517 {6.5710001, 0.40685001}, //
+
58518 {6.5725112, 0.405558646}, //
+
58519 {6.57402229, 0.404684573}, //
+
58520 {6.57553339, 0.404227763}, //
+
58521 {6.57704449, 0.404188275}, //
+
58522 {6.57855558, 0.40456605}, //
+
58523 {6.58006668, 0.405361116}, //
+
58524 {6.58157778, 0.406573445}, //
+
58525 {6.58308887, 0.408203095}, //
+
58526 {6.58459997, 0.410250008}, //
+
58527 {6.58529282, 0.411067903}, //
+
58528 {6.5858593, 0.412010491}, //
+
58529 {6.5862999, 0.413077772}, //
+
58530 {6.58661461, 0.414269745}, //
+
58531 {6.58680391, 0.415586412}, //
+
58532 {6.58686686, 0.417027771}, //
+
58533 {6.58680391, 0.418593824}, //
+
58534 {6.58661461, 0.420284569}, //
+
58535 {6.5862999, 0.422100008}, //
+
58536 {6.58594322, 0.424009889}, //
+
58537 {6.58562851, 0.425961733}, //
+
58538 {6.58535576, 0.427955568}, //
+
58539 {6.58512449, 0.429991364}, //
+
58540 {6.58493567, 0.432069123}, //
+
58541 {6.5847888, 0.434188902}, //
+
58542 {6.5846839, 0.436350614}, //
+
58543 {6.58462095, 0.438554317}, //
+
58544 {6.58459997, 0.440800011}, //
+
58545 {6.58388662, 0.442300618}, //
+
58546 {6.58325672, 0.443802476}, //
+
58547 {6.58271122, 0.445305556}, //
+
58548 {6.58224916, 0.446809888}, //
+
58549 {6.58187151, 0.448315442}, //
+
58550 {6.58157778, 0.449822217}, //
+
58551 {6.58136797, 0.451330245}, //
+
58552 {6.58124208, 0.452839494}, //
+
58553 {6.58120012, 0.454349995}, //
+
58554 {6.5812211, 0.455777168}, //
+
58555 {6.58128405, 0.457036406}, //
+
58556 {6.58138895, 0.458127767}, //
+
58557 {6.58153582, 0.459051222}, //
+
58558 {6.58172464, 0.4598068}, //
+
58559 {6.58195543, 0.460394442}, //
+
58560 {6.58222818, 0.460814208}, //
+
58561 {6.58254337, 0.461066037}, //
+
58562 {6.58290005, 0.461149991}, //
+
58563 {6.58334064, 0.461108029}, //
+
58564 {6.5839076, 0.460982084}, //
+
58565 {6.58459997, 0.460772216}, //
+
58566 {6.5854187, 0.460478395}, //
+
58567 {6.58636284, 0.460100621}, //
+
58568 {6.58743334, 0.459638894}, //
+
58569 {6.58862972, 0.459093213}, //
+
58570 {6.58995199, 0.458463579}, //
+
58571 {6.59140015, 0.457749993}, //
+
58572 {6.59872389, 0.448872834}, //
+
58573 {6.60562944, 0.440330237}, //
+
58574 {6.61211681, 0.432122231}, //
+
58575 {6.61818504, 0.424248755}, //
+
58576 {6.62383509, 0.41670987}, //
+
58577 {6.62906647, 0.409505546}, //
+
58578 {6.63387966, 0.402635813}, //
+
58579 {6.63827419, 0.39610061}, //
+
58580 {6.64225006, 0.389899999}, //
+
58581 {6.64370871, 0.387727767}, //
+
58582 {6.64508438, 0.38572222}, //
+
58583 {6.64637756, 0.383883327}, //
+
58584 {6.64758825, 0.382211119}, //
+
58585 {6.64871597, 0.380705565}, //
+
58586 {6.6497612, 0.379366666}, //
+
58587 {6.65072346, 0.378194451}, //
+
58588 {6.65160322, 0.377188891}, //
+
58589 {6.65240002, 0.376349986}, //
+
58590 {6.652421, 0.375594437}, //
+
58591 {6.65248394, 0.374838889}, //
+
58592 {6.65258884, 0.37408334}, //
+
58593 {6.65273571, 0.373327792}, //
+
58594 {6.65292454, 0.372572213}, //
+
58595 {6.65315533, 0.371816665}, //
+
58596 {6.65342855, 0.371061116}, //
+
58597 {6.65374327, 0.370305568}, //
+
58598 {6.65409994, 0.36954999}, //
+
58599 {6.6544776, 0.368846923}, //
+
58600 {6.65485573, 0.368226558}, //
+
58601 {6.65523338, 0.367688894}, //
+
58602 {6.65561104, 0.367233962}, //
+
58603 {6.65598869, 0.366861731}, //
+
58604 {6.65636683, 0.366572231}, //
+
58605 {6.65674448, 0.366365433}, //
+
58606 {6.65712214, 0.366241366}, //
+
58607 {6.65749979, 0.3662}, //
+
58608 {6.6578989, 0.3662}, //
+
58609 {6.66260004, 0.3662}, //
+
58610 {6.66334486, 0.366262347}, //
+
58611 {6.66409159, 0.366449386}, //
+
58612 {6.66483879, 0.366761118}, //
+
58613 {6.66558743, 0.367197543}, //
+
58614 {6.66633749, 0.367758632}, //
+
58615 {6.66708899, 0.368444443}, //
+
58616 {6.66784143, 0.369254947}, //
+
58617 {6.66859484, 0.370190114}, //
+
58618 {6.66935015, 0.371250004}, //
+
58619 {6.67010546, 0.372362345}, //
+
58620 {6.67086124, 0.373432726}, //
+
58621 {6.67161655, 0.374461114}, //
+
58622 {6.67237234, 0.375447541}, //
+
58623 {6.67312765, 0.376391977}, //
+
58624 {6.67388344, 0.377294451}, //
+
58625 {6.67463875, 0.378154933}, //
+
58626 {6.67539454, 0.378973454}, //
+
58627 {6.67614985, 0.379750013}, //
+
58628 {6.67694712, 0.381922215}, //
+
58629 {6.6778264, 0.383927792}, //
+
58630 {6.67878866, 0.385766655}, //
+
58631 {6.67983389, 0.387438893}, //
+
58632 {6.68096161, 0.388944447}, //
+
58633 {6.6821723, 0.390283346}, //
+
58634 {6.68346548, 0.391455561}, //
+
58635 {6.68484116, 0.392461121}, //
+
58636 {6.6862998, 0.393299997}, //
+
58637 {6.68776894, 0.393929631}, //
+
58638 {6.68915415, 0.394307405}, //
+
58639 {6.69045544, 0.39443332}, //
+
58640 {6.6916728, 0.394307405}, //
+
58641 {6.69280624, 0.393929631}, //
+
58642 {6.69385576, 0.393299997}, //
+
58643 {6.69482088, 0.392418504}, //
+
58644 {6.69570255, 0.391285181}, //
+
58645 {6.69649982, 0.389899999}, //
+
58646 {6.69793749, 0.386302471}, //
+
58647 {6.6992507, 0.381532103}, //
+
58648 {6.70043898, 0.375588894}, //
+
58649 {6.70150232, 0.368472844}, //
+
58650 {6.70244122, 0.360183954}, //
+
58651 {6.70325565, 0.350722224}, //
+
58652 {6.70394516, 0.340087652}, //
+
58653 {6.70450974, 0.32828024}, //
+
58654 {6.70494986, 0.315299988}, //
+
58655 {6.70509768, 0.301492602}, //
+
58656 {6.70478439, 0.287181467}, //
+
58657 {6.70401096, 0.272366673}, //
+
58658 {6.70277739, 0.25704816}, //
+
58659 {6.70108271, 0.241225928}, //
+
58660 {6.69892788, 0.224900007}, //
+
58661 {6.69631243, 0.208070368}, //
+
58662 {6.69323635, 0.190737039}, //
+
58663 {6.68970013, 0.172900006}, //
+
58664 {6.68818903, 0.164767906}, //
+
58665 {6.68667793, 0.156927153}, //
+
58666 {6.68516684, 0.149377778}, //
+
58667 {6.68365574, 0.14211975}, //
+
58668 {6.68214464, 0.135153085}, //
+
58669 {6.68063354, 0.128477782}, //
+
58670 {6.67912245, 0.122093827}, //
+
58671 {6.67761087, 0.116001233}, //
+
58672 {6.67609978, 0.110200003}, //
+
58673 {6.67462015, 0.104732715}, //
+
58674 {6.67318153, 0.0996419787}, //
+
58675 {6.67178345, 0.0949277803}, //
+
58676 {6.67042589, 0.0905901268}, //
+
58677 {6.66910934, 0.0866290107}, //
+
58678 {6.66783333, 0.083044447}, //
+
58679 {6.66659832, 0.0798364207}, //
+
58680 {6.66540384, 0.0770049393}, //
+
58681 {6.6642499, 0.0745500028}, //
+
58682 {6.66314793, 0.0723364204}, //
+
58683 {6.66208696, 0.0702067912}, //
+
58684 {6.66106653, 0.0681611076}, //
+
58685 {6.66008711, 0.0661993846}, //
+
58686 {6.65914822, 0.0643216074}, //
+
58687 {6.65824986, 0.0625277758}, //
+
58688 {6.6573925, 0.060817901}, //
+
58689 {6.65657616, 0.0591919757}, //
+
58690 {6.65579987, 0.0576499999}, //
+
58691 {6.65508652, 0.0561808646}, //
+
58692 {6.65445662, 0.0547956787}, //
+
58693 {6.65391111, 0.053494446}, //
+
58694 {6.65344954, 0.0522771589}, //
+
58695 {6.6530714, 0.0511438288}, //
+
58696 {6.65277767, 0.0500944443}, //
+
58697 {6.65256786, 0.049129013}, //
+
58698 {6.65244198, 0.0482475311}, //
+
58699 {6.65240002, 0.0474499986}, //
+
58700 {6.65154028, 0.0451518521}, //
+
58701 {6.65047169, 0.0427685194}, //
+
58702 {6.64919424, 0.0403000005}, //
+
58703 {6.64770842, 0.0377462953}, //
+
58704 {6.64601421, 0.0351074077}, //
+
58705 {6.64411116, 0.0323833339}, //
+
58706 {6.64199924, 0.0295740739}, //
+
58707 {6.63967896, 0.0266796295}, //
+
58708 {6.63714981, 0.0237000007}, //
+
58709 {6.6345582, 0.0207512341}, //
+
58710 {6.63204861, 0.0179271605}, //
+
58711 {6.62962246, 0.0152277779}, //
+
58712 {6.62727833, 0.0126530863}, //
+
58713 {6.62501717, 0.0102030868}, //
+
58714 {6.62283897, 0.00787777733}, //
+
58715 {6.62074327, 0.00567716034}, //
+
58716 {6.61873007, 0.00360123464}, //
+
58717 {6.61679983, 0.00164999999}, //
+
58718 {6.61494255, -0.00012345679}, //
+
58719 {6.6131258, -0.00168827164}, //
+
58720 {6.61135006, -0.00304444437}, //
+
58721 {6.60961485, -0.00419197511}, //
+
58722 {6.60792017, -0.00513086421}, //
+
58723 {6.6062665, -0.00586111099}, //
+
58724 {6.60465384, -0.00638271589}, //
+
58725 {6.6030817, -0.00669567892}, //
+
58726 {6.6015501, -0.00680000009}, //
+
58727 {6.58799982, -0.00680000009}, //
+
58728 {6.5833106, -0.00817469135}, //
+
58729 {6.57828665, -0.0092987651}, //
+
58730 {6.57292795, -0.0101722218}, //
+
58731 {6.56723452, -0.0107950615}, //
+
58732 {6.56120682, -0.0111672841}, //
+
58733 {6.55484438, -0.0112888888}, //
+
58734 });
+
58735 polys.push_back({
+
58736 {6.45182514, 0.3738105}, //
+
58737 {6.45159435, 0.373894453}, //
+
58738 {6.4513216, 0.374062359}, //
+
58739 {6.45100689, 0.374314189}, //
+
58740 {6.45065022, 0.374650002}, //
+
58741 {6.45025206, 0.375090748}, //
+
58742 {6.44981289, 0.375657409}, //
+
58743 {6.44933319, 0.376349986}, //
+
58744 {6.44881296, 0.377168506}, //
+
58745 {6.44825172, 0.378112972}, //
+
58746 {6.44764996, 0.379183322}, //
+
58747 {6.44700718, 0.380379617}, //
+
58748 {6.44632387, 0.381701857}, //
+
58749 {6.44560003, 0.383150011}, //
+
58750 {6.44488621, 0.386161119}, //
+
58751 {6.44425678, 0.389172226}, //
+
58752 {6.44371128, 0.392183334}, //
+
58753 {6.44324923, 0.395194441}, //
+
58754 {6.44287157, 0.398205549}, //
+
58755 {6.44257784, 0.401216656}, //
+
58756 {6.44236803, 0.404227763}, //
+
58757 {6.44224215, 0.407238901}, //
+
58758 {6.44220018, 0.410250008}, //
+
58759 {6.44213724, 0.413313568}, //
+
58760 {6.44194794, 0.416459888}, //
+
58761 {6.44163322, 0.41968888}, //
+
58762 {6.44136953, 0.421672165}, //
+
58763 {6.4414444, 0.421404332}, //
+
58764 {6.44220018, 0.418749988}, //
+
58765 {6.44295502, 0.41615802}, //
+
58766 {6.44370842, 0.413648754}, //
+
58767 {6.44446135, 0.411222219}, //
+
58768 {6.44521236, 0.408878386}, //
+
58769 {6.44596243, 0.406617284}, //
+
58770 {6.44671106, 0.404438883}, //
+
58771 {6.44745874, 0.402343214}, //
+
58772 {6.44820499, 0.400330245}, //
+
58773 {6.44894981, 0.398400009}, //
+
58774 {6.45029306, 0.395041972}, //
+
58775 {6.45083904, 0.393677771}, //
+
58776 {6.45130062, 0.392523468}, //
+
58777 {6.45167828, 0.391579002}, //
+
58778 {6.45230818, 0.390004933}, //
+
58779 {6.45235014, 0.389899999}, //
+
58780 {6.45235014, 0.388556778}, //
+
58781 {6.45235014, 0.388200015}, //
+
58782 {6.45235014, 0.378889501}, //
+
58783 {6.45235014, 0.378448755}, //
+
58784 {6.45235014, 0.378049999}, //
+
58785 {6.45235014, 0.37540555}, //
+
58786 {6.45235014, 0.375027776}, //
+
58787 {6.45235014, 0.374650002}, //
+
58788 {6.45232916, 0.374314189}, //
+
58789 {6.45226622, 0.374062359}, //
+
58790 {6.45216131, 0.373894453}, //
+
58791 {6.45201397, 0.3738105}, //
+
58792 });
+
58793 polys.push_back({
+
58794 {3.13961601, 0.372949988}, //
+
58795 {3.13951111, 0.372949988}, //
+
58796 {3.13936424, 0.372949988}, //
+
58797 {3.13917542, 0.372949988}, //
+
58798 {3.13894439, 0.372949988}, //
+
58799 {3.13867164, 0.372949988}, //
+
58800 {3.13800001, 0.372949988}, //
+
58801 {3.13763261, 0.372970998}, //
+
58802 {3.13726425, 0.373033941}, //
+
58803 {3.13689446, 0.373138875}, //
+
58804 {3.13652349, 0.3732858}, //
+
58805 {3.13615131, 0.373474687}, //
+
58806 {3.13577771, 0.373705566}, //
+
58807 {3.13540316, 0.373978406}, //
+
58808 {3.13502717, 0.374293208}, //
+
58809 {3.13464999, 0.374650002}, //
+
58810 {3.13351655, 0.375783324}, //
+
58811 {3.13200545, 0.377294451}, //
+
58812 {3.1316278, 0.377672225}, //
+
58813 {3.12898326, 0.380316675}, //
+
58814 {3.1286056, 0.380694449}, //
+
58815 {3.12822771, 0.381072223}, //
+
58816 {3.12785006, 0.381449997}, //
+
58817 {3.12745118, 0.381806791}, //
+
58818 {3.12701058, 0.382121593}, //
+
58819 {3.12652779, 0.382394433}, //
+
58820 {3.12600303, 0.382625312}, //
+
58821 {3.12543631, 0.382814199}, //
+
58822 {3.12482786, 0.382961124}, //
+
58823 {3.12417722, 0.383066058}, //
+
58824 {3.12348461, 0.383129001}, //
+
58825 {3.12275004, 0.383150011}, //
+
58826 {3.1226871, 0.382394433}, //
+
58827 {3.12249804, 0.381638885}, //
+
58828 {3.12218332, 0.380883336}, //
+
58829 {3.12174249, 0.380127788}, //
+
58830 {3.121176, 0.379372209}, //
+
58831 {3.1204834, 0.378616661}, //
+
58832 {3.11966491, 0.377861112}, //
+
58833 {3.11872029, 0.377105564}, //
+
58834 {3.11765003, 0.376349986}, //
+
58835 {3.11648512, 0.375636429}, //
+
58836 {3.11523509, 0.375006795}, //
+
58837 {3.11389995, 0.374461114}, //
+
58838 {3.11247969, 0.373999387}, //
+
58839 {3.11097407, 0.373621613}, //
+
58840 {3.10938334, 0.373327792}, //
+
58841 {3.1077075, 0.373117894}, //
+
58842 {3.1059463, 0.372991979}, //
+
58843 {3.10409999, 0.372949988}, //
+
58844 {3.10224271, 0.372991979}, //
+
58845 {3.10042596, 0.373117894}, //
+
58846 {3.09864998, 0.373327792}, //
+
58847 {3.09691477, 0.373621613}, //
+
58848 {3.09522033, 0.373999387}, //
+
58849 {3.09356666, 0.374461114}, //
+
58850 {3.09195375, 0.375006795}, //
+
58851 {3.09038138, 0.375636429}, //
+
58852 {3.08885002, 0.376349986}, //
+
58853 {3.08803153, 0.377105564}, //
+
58854 {3.08708715, 0.377861112}, //
+
58855 {3.08601665, 0.378616661}, //
+
58856 {3.08482027, 0.379372209}, //
+
58857 {3.08349824, 0.380127788}, //
+
58858 {3.08205009, 0.380883336}, //
+
58859 {3.08047581, 0.381638885}, //
+
58860 {3.07877588, 0.382394433}, //
+
58861 {3.07695007, 0.383150011}, //
+
58862 {3.07511353, 0.383883953}, //
+
58863 {3.07335997, 0.384574682}, //
+
58864 {3.07168889, 0.385222226}, //
+
58865 {3.07010055, 0.385826558}, //
+
58866 {3.06859517, 0.386387646}, //
+
58867 {3.06717229, 0.386905551}, //
+
58868 {3.06583214, 0.387380242}, //
+
58869 {3.06457472, 0.38781172}, //
+
58870 {3.06340003, 0.388200015}, //
+
58871 {3.06234002, 0.388556778}, //
+
58872 {3.06059456, 0.38914445}, //
+
58873 {3.05990863, 0.389375299}, //
+
58874 {3.05859947, 0.389816046}, //
+
58875 {3.05841231, 0.389879018}, //
+
58876 {3.05835009, 0.389899999}, //
+
58877 {3.05835009, 0.393299997}, //
+
58878 {3.06056428, 0.393258035}, //
+
58879 {3.06269574, 0.393132091}, //
+
58880 {3.06474447, 0.392922223}, //
+
58881 {3.06671047, 0.392628402}, //
+
58882 {3.06859374, 0.392250627}, //
+
58883 {3.07039452, 0.3917889}, //
+
58884 {3.07211232, 0.391243219}, //
+
58885 {3.07374763, 0.390613586}, //
+
58886 {3.07529998, 0.389899999}, //
+
58887 {3.07751417, 0.389879018}, //
+
58888 {3.07964563, 0.389816046}, //
+
58889 {3.08169436, 0.389711112}, //
+
58890 {3.0836606, 0.389564186}, //
+
58891 {3.08554387, 0.389375299}, //
+
58892 {3.08734441, 0.38914445}, //
+
58893 {3.08906245, 0.38887161}, //
+
58894 {3.09069753, 0.388556778}, //
+
58895 {3.09225011, 0.388200015}, //
+
58896 {3.09388638, 0.387853712}, //
+
58897 {3.09577346, 0.387548149}, //
+
58898 {3.09791112, 0.387283325}, //
+
58899 {3.10029936, 0.387059271}, //
+
58900 {3.10293818, 0.386875927}, //
+
58901 {3.10582781, 0.386733323}, //
+
58902 {3.10896802, 0.386631489}, //
+
58903 {3.11235857, 0.386570364}, //
+
58904 {3.11599994, 0.386550009}, //
+
58905 {3.11964083, 0.387253076}, //
+
58906 {3.12302971, 0.387873471}, //
+
58907 {3.12616658, 0.388411105}, //
+
58908 {3.12905192, 0.388866037}, //
+
58909 {3.13168526, 0.389238268}, //
+
58910 {3.13406658, 0.389527768}, //
+
58911 {3.13619637, 0.389734566}, //
+
58912 {3.13807416, 0.389858633}, //
+
58913 {3.13969994, 0.389899999}, //
+
58914 {3.14650011, 0.389899999}, //
+
58915 {3.14597535, 0.388850629}, //
+
58916 {3.14574456, 0.388388902}, //
+
58917 {3.14547157, 0.387843221}, //
+
58918 {3.14479995, 0.386500001}, //
+
58919 {3.14442229, 0.385754943}, //
+
58920 {3.1440444, 0.385008633}, //
+
58921 {3.14366674, 0.384261101}, //
+
58922 {3.14328885, 0.383512348}, //
+
58923 {3.1429112, 0.382762343}, //
+
58924 {3.1425333, 0.382011116}, //
+
58925 {3.14215565, 0.381258637}, //
+
58926 {3.14177775, 0.380504936}, //
+
58927 {3.1414001, 0.379750013}, //
+
58928 {3.14104319, 0.379015446}, //
+
58929 {3.14072847, 0.37832284}, //
+
58930 {3.14045548, 0.377672225}, //
+
58931 {3.1402247, 0.377063572}, //
+
58932 {3.14003587, 0.376496911}, //
+
58933 {3.139889, 0.375972211}, //
+
58934 {3.13978386, 0.375489503}, //
+
58935 {3.13972092, 0.375048757}, //
+
58936 {3.13969994, 0.374650002}, //
+
58937 {3.13969994, 0.373138875}, //
+
58938 {3.13969994, 0.373033941}, //
+
58939 {3.13969994, 0.372949988}, //
+
58940 {3.13967896, 0.372949988}, //
+
58941 });
+
58942 polys.push_back({
+
58943 {1.25115001, 0.298400015}, //
+
58944 {1.24265003, 0.303449988}, //
+
58945 {1.24068761, 0.304603696}, //
+
58946 {1.23855615, 0.305798143}, //
+
58947 {1.23625553, 0.30703333}, //
+
58948 {1.23378575, 0.308309257}, //
+
58949 {1.23114693, 0.309625924}, //
+
58950 {1.22833884, 0.31098333}, //
+
58951 {1.2253617, 0.312381476}, //
+
58952 {1.22221541, 0.313820362}, //
+
58953 {1.21889997, 0.315299988}, //
+
58954 {1.21555305, 0.316810489}, //
+
58955 {1.21229017, 0.318319768}, //
+
58956 {1.20911109, 0.319827765}, //
+
58957 {1.20601606, 0.321334571}, //
+
58958 {1.20300496, 0.322840124}, //
+
58959 {1.20007777, 0.324344456}, //
+
58960 {1.19723451, 0.325847536}, //
+
58961 {1.19447529, 0.327349395}, //
+
58962 {1.1918, 0.328850001}, //
+
58963 {1.18918705, 0.330319136}, //
+
58964 {1.18661487, 0.331704319}, //
+
58965 {1.18408334, 0.333005548}, //
+
58966 {1.18159258, 0.334222853}, //
+
58967 {1.17914259, 0.335356176}, //
+
58968 {1.17673337, 0.336405545}, //
+
58969 {1.17436481, 0.337370992}, //
+
58970 {1.17203701, 0.338252455}, //
+
58971 {1.16974998, 0.339049995}, //
+
58972 {1.16816545, 0.339805543}, //
+
58973 {1.16641176, 0.340561122}, //
+
58974 {1.16448891, 0.34131667}, //
+
58975 {1.16239691, 0.342072219}, //
+
58976 {1.16013575, 0.342827767}, //
+
58977 {1.15770555, 0.343583345}, //
+
58978 {1.15510619, 0.344338894}, //
+
58979 {1.15233767, 0.345094442}, //
+
58980 {1.1494, 0.345849991}, //
+
58981 {1.14638889, 0.346604943}, //
+
58982 {1.14337778, 0.347358644}, //
+
58983 {1.14036667, 0.348111123}, //
+
58984 {1.13735557, 0.34886235}, //
+
58985 {1.13434446, 0.349612355}, //
+
58986 {1.13133335, 0.350361109}, //
+
58987 {1.12832224, 0.35110864}, //
+
58988 {1.12531114, 0.35185495}, //
+
58989 {1.12230003, 0.352600008}, //
+
58990 {1.11935127, 0.353334576}, //
+
58991 {1.1165272, 0.354027152}, //
+
58992 {1.11382782, 0.354677767}, //
+
58993 {1.11125314, 0.355286419}, //
+
58994 {1.10880303, 0.355853081}, //
+
58995 {1.10647774, 0.35637778}, //
+
58996 {1.10427713, 0.356860489}, //
+
58997 {1.10220122, 0.357301235}, //
+
58998 {1.10025001, 0.35769999}, //
+
58999 {1.09847653, 0.358056784}, //
+
59000 {1.09691179, 0.358371615}, //
+
59001 {1.09440804, 0.358875304}, //
+
59002 {1.09179997, 0.359400004}, //
+
59003 {1.09190428, 0.359441966}, //
+
59004 {1.09221733, 0.35956791}, //
+
59005 {1.09273887, 0.359777778}, //
+
59006 {1.09346914, 0.360071599}, //
+
59007 {1.09440804, 0.360449374}, //
+
59008 {1.09555554, 0.360911101}, //
+
59009 {1.09691179, 0.361456782}, //
+
59010 {1.09847653, 0.362086415}, //
+
59011 {1.10025001, 0.362800002}, //
+
59012 {1.10224319, 0.363554925}, //
+
59013 {1.1044451, 0.364308655}, //
+
59014 {1.10685551, 0.365061104}, //
+
59015 {1.10947466, 0.365812331}, //
+
59016 {1.11230242, 0.366562337}, //
+
59017 {1.11533892, 0.36731112}, //
+
59018 {1.11858392, 0.368058652}, //
+
59019 {1.12203765, 0.368804932}, //
+
59020 {1.1257, 0.36954999}, //
+
59021 {1.12942469, 0.370263577}, //
+
59022 {1.13306546, 0.37089321}, //
+
59023 {1.13662219, 0.371438891}, //
+
59024 {1.14009511, 0.371900618}, //
+
59025 {1.143484, 0.372278392}, //
+
59026 {1.14678884, 0.372572213}, //
+
59027 {1.15000987, 0.372782111}, //
+
59028 {1.15314686, 0.372908026}, //
+
59029 {1.15620005, 0.372949988}, //
+
59030 {1.16097343, 0.373412341}, //
+
59031 {1.16624939, 0.373288274}, //
+
59032 {1.17202783, 0.372577786}, //
+
59033 {1.17830861, 0.371280879}, //
+
59034 {1.18509197, 0.369397521}, //
+
59035 {1.19237781, 0.366927773}, //
+
59036 {1.20016611, 0.363871604}, //
+
59037 {1.20845675, 0.360229015}, //
+
59038 {1.21724999, 0.356000006}, //
+
59039 {1.22030306, 0.35449937}, //
+
59040 {1.22344017, 0.352997541}, //
+
59041 {1.22666109, 0.351494431}, //
+
59042 {1.22996604, 0.349990129}, //
+
59043 {1.23335493, 0.348484576}, //
+
59044 {1.23682773, 0.34697777}, //
+
59045 {1.24038458, 0.345469743}, //
+
59046 {1.24402535, 0.343960494}, //
+
59047 {1.24775004, 0.342449993}, //
+
59048 });
+
59049 polys.push_back({
+
59050 {1.0355469, 0.288199991}, //
+
59051 {1.02734995, 0.288199991}, //
+
59052 {1.02394998, 0.311949998}, //
+
59053 {1.0240339, 0.311949998}, //
+
59054 {1.02428579, 0.311949998}, //
+
59055 {1.02470553, 0.311949998}, //
+
59056 {1.02529323, 0.311949998}, //
+
59057 {1.03075004, 0.311949998}, //
+
59058 {1.03232348, 0.311949998}, //
+
59059 {1.03584445, 0.311949998}, //
+
59060 {1.03779197, 0.311949998}, //
+
59061 {1.04939997, 0.311949998}, //
+
59062 {1.05201292, 0.31199199}, //
+
59063 {1.05458522, 0.312117904}, //
+
59064 {1.05711663, 0.312327772}, //
+
59065 {1.05960739, 0.312621593}, //
+
59066 {1.06205738, 0.312999398}, //
+
59067 {1.06446671, 0.313461125}, //
+
59068 {1.06683517, 0.314006776}, //
+
59069 {1.06916296, 0.314636409}, //
+
59070 {1.07145, 0.315349996}, //
+
59071 {1.07366359, 0.316074073}, //
+
59072 {1.07579327, 0.316757411}, //
+
59073 {1.0778389, 0.317400008}, //
+
59074 {1.07980061, 0.318001866}, //
+
59075 {1.08167839, 0.318562955}, //
+
59076 {1.08347225, 0.319083333}, //
+
59077 {1.08518207, 0.319562972}, //
+
59078 {1.08680797, 0.320001841}, //
+
59079 {1.08835006, 0.3204}, //
+
59080 {1.08986115, 0.320777774}, //
+
59081 {1.09137225, 0.321155548}, //
+
59082 {1.09288335, 0.321533322}, //
+
59083 {1.09439445, 0.321911097}, //
+
59084 {1.09590554, 0.322288901}, //
+
59085 {1.09741664, 0.322666675}, //
+
59086 {1.09892774, 0.323044449}, //
+
59087 {1.10195005, 0.323799998}, //
+
59088 {1.1033771, 0.324156791}, //
+
59089 {1.10463643, 0.324471593}, //
+
59090 {1.10572779, 0.324744433}, //
+
59091 {1.10665119, 0.324975312}, //
+
59092 {1.10740674, 0.325164199}, //
+
59093 {1.10799444, 0.325311124}, //
+
59094 {1.10841417, 0.325416058}, //
+
59095 {1.10866606, 0.325479001}, //
+
59096 {1.10874999, 0.325500011}, //
+
59097 {1.10870802, 0.325437039}, //
+
59098 {1.10858214, 0.325248152}, //
+
59099 {1.10770059, 0.323925912}, //
+
59100 {1.10669327, 0.322414815}, //
+
59101 {1.1060636, 0.32147038}, //
+
59102 {1.10535002, 0.3204}, //
+
59103 {1.10453153, 0.319256186}, //
+
59104 {1.10358703, 0.31806913}, //
+
59105 {1.10251665, 0.31683889}, //
+
59106 {1.10132039, 0.315565437}, //
+
59107 {1.09999812, 0.31424877}, //
+
59108 {1.09854996, 0.312888891}, //
+
59109 {1.09697592, 0.311485797}, //
+
59110 {1.09527588, 0.31003952}, //
+
59111 {1.09344995, 0.30855}, //
+
59112 {1.09155118, 0.307039499}, //
+
59113 {1.08961046, 0.30553025}, //
+
59114 {1.08762777, 0.304022223}, //
+
59115 {1.08560312, 0.302515417}, //
+
59116 {1.08353639, 0.301009864}, //
+
59117 {1.08142781, 0.299505562}, //
+
59118 {1.07927716, 0.298002481}, //
+
59119 {1.07708454, 0.296500623}, //
+
59120 {1.07484996, 0.294999987}, //
+
59121 {1.07041109, 0.293572843}, //
+
59122 {1.06613886, 0.292313576}, //
+
59123 {1.0620333, 0.291222215}, //
+
59124 {1.0580945, 0.29029876}, //
+
59125 {1.05432224, 0.289543211}, //
+
59126 {1.05071664, 0.288955569}, //
+
59127 {1.04727781, 0.288535804}, //
+
59128 {1.04400551, 0.288283944}, //
+
59129 {1.04089999, 0.288199991}, //
+
59130 {1.03805614, 0.288199991}, //
+
59131 });
+
59132 polys.push_back({
+
59133 {3.03657293, 0.295041978}, //
+
59134 {3.03531361, 0.295167893}, //
+
59135 {3.03422213, 0.295377791}, //
+
59136 {3.03329873, 0.295671612}, //
+
59137 {3.03254318, 0.296049386}, //
+
59138 {3.03195548, 0.296511114}, //
+
59139 {3.03153586, 0.297056794}, //
+
59140 {3.03128386, 0.297686428}, //
+
59141 {3.03119993, 0.298400015}, //
+
59142 {3.03049684, 0.299145073}, //
+
59143 {3.02987647, 0.299891353}, //
+
59144 {3.02933884, 0.300638884}, //
+
59145 {3.02888393, 0.301387668}, //
+
59146 {3.02851176, 0.302137643}, //
+
59147 {3.02822232, 0.3028889}, //
+
59148 {3.02801538, 0.303641349}, //
+
59149 {3.0278914, 0.30439505}, //
+
59150 {3.02784991, 0.305150002}, //
+
59151 {3.02784991, 0.308927774}, //
+
59152 {3.02784991, 0.309683323}, //
+
59153 {3.02784991, 0.310438901}, //
+
59154 {3.02784991, 0.31119445}, //
+
59155 {3.02784991, 0.314022213}, //
+
59156 {3.02784991, 0.314626545}, //
+
59157 {3.02784991, 0.315187663}, //
+
59158 {3.02784991, 0.315705568}, //
+
59159 {3.02784991, 0.316180259}, //
+
59160 {3.02784991, 0.316611737}, //
+
59161 {3.02784991, 0.317000002}, //
+
59162 {3.02784991, 0.317671597}, //
+
59163 {3.02784991, 0.317944437}, //
+
59164 {3.02784991, 0.318364203}, //
+
59165 {3.02784991, 0.318511099}, //
+
59166 {3.02784991, 0.318616062}, //
+
59167 {3.02784991, 0.318679005}, //
+
59168 {3.02784991, 0.318699986}, //
+
59169 {3.0278914, 0.317996919}, //
+
59170 {3.02801538, 0.317376554}, //
+
59171 {3.02822232, 0.31683889}, //
+
59172 {3.02851176, 0.316383958}, //
+
59173 {3.02888393, 0.316011727}, //
+
59174 {3.02933884, 0.315722227}, //
+
59175 {3.02987647, 0.315515429}, //
+
59176 {3.03049684, 0.315391362}, //
+
59177 {3.03119993, 0.315349996}, //
+
59178 {3.03119993, 0.314636409}, //
+
59179 {3.03119993, 0.314006776}, //
+
59180 {3.03119993, 0.312327772}, //
+
59181 {3.03119993, 0.312117904}, //
+
59182 {3.03119993, 0.311949998}, //
+
59183 {3.03124189, 0.311929017}, //
+
59184 {3.03157783, 0.311761111}, //
+
59185 {3.03460002, 0.310250014}, //
+
59186 {3.03539753, 0.309893221}, //
+
59187 {3.03627896, 0.309578389}, //
+
59188 {3.03724456, 0.309305549}, //
+
59189 {3.03829384, 0.3090747}, //
+
59190 {3.03942704, 0.308885813}, //
+
59191 {3.04064441, 0.308738887}, //
+
59192 {3.0419457, 0.308633953}, //
+
59193 {3.04333091, 0.308570981}, //
+
59194 {3.04480004, 0.30855}, //
+
59195 {3.05495, 0.30855}, //
+
59196 {3.05779386, 0.308508039}, //
+
59197 {3.06030297, 0.308382094}, //
+
59198 {3.06247783, 0.308172226}, //
+
59199 {3.06431794, 0.307878405}, //
+
59200 {3.06582355, 0.307500631}, //
+
59201 {3.06699443, 0.307038903}, //
+
59202 {3.0678308, 0.306493223}, //
+
59203 {3.06833267, 0.305863589}, //
+
59204 {3.06850004, 0.305150002}, //
+
59205 {3.06824803, 0.305066049}, //
+
59206 {3.06793332, 0.304961115}, //
+
59207 {3.06749249, 0.30481419}, //
+
59208 {3.0662334, 0.304394454}, //
+
59209 {3.06541491, 0.304121614}, //
+
59210 {3.06447029, 0.303806782}, //
+
59211 {3.06340003, 0.303449988}, //
+
59212 {3.0622561, 0.303051233}, //
+
59213 {3.06106925, 0.302610487}, //
+
59214 {3.05983877, 0.302127779}, //
+
59215 {3.05856538, 0.301603079}, //
+
59216 {3.05724883, 0.301036417}, //
+
59217 {3.05588889, 0.300427765}, //
+
59218 {3.0544858, 0.29977715}, //
+
59219 {3.05303955, 0.299084574}, //
+
59220 {3.05154991, 0.298350006}, //
+
59221 {3.0500493, 0.29764691}, //
+
59222 {3.04854751, 0.297026545}, //
+
59223 {3.04704452, 0.296488881}, //
+
59224 {3.04554009, 0.296033949}, //
+
59225 {3.04403448, 0.295661718}, //
+
59226 {3.04252768, 0.295372218}, //
+
59227 {3.04101968, 0.29516542}, //
+
59228 {3.03951049, 0.295041353}, //
+
59229 {3.03800011, 0.294999987}, //
+
59230 });
+
59231 polys.push_back({
+
59232 {3.09734988, 0.27125001}, //
+
59233 {3.09699321, 0.271291971}, //
+
59234 {3.0966785, 0.271417916}, //
+
59235 {3.09640551, 0.271627784}, //
+
59236 {3.09617472, 0.271921605}, //
+
59237 {3.09598589, 0.272299379}, //
+
59238 {3.09583879, 0.272761106}, //
+
59239 {3.09573388, 0.273306787}, //
+
59240 {3.09567094, 0.273936421}, //
+
59241 {3.09564996, 0.274650007}, //
+
59242 {3.09418082, 0.275446922}, //
+
59243 {3.09279561, 0.276326537}, //
+
59244 {3.09149456, 0.277288884}, //
+
59245 {3.09027719, 0.278333962}, //
+
59246 {3.08914375, 0.279461741}, //
+
59247 {3.08809447, 0.280672222}, //
+
59248 {3.08712912, 0.281965435}, //
+
59249 {3.08624744, 0.283341348}, //
+
59250 {3.08544993, 0.284799993}, //
+
59251 {3.08474684, 0.284841985}, //
+
59252 {3.08412647, 0.284967899}, //
+
59253 {3.08358884, 0.285177767}, //
+
59254 {3.08313394, 0.285471618}, //
+
59255 {3.08276176, 0.285849392}, //
+
59256 {3.08247232, 0.28631112}, //
+
59257 {3.08226538, 0.2868568}, //
+
59258 {3.0821414, 0.287486434}, //
+
59259 {3.08209991, 0.288199991}, //
+
59260 {3.08209991, 0.305150002}, //
+
59261 {3.08544993, 0.305150002}, //
+
59262 {3.08767414, 0.304353088}, //
+
59263 {3.08981299, 0.303473443}, //
+
59264 {3.09186673, 0.302511126}, //
+
59265 {3.09383512, 0.301466048}, //
+
59266 {3.09571862, 0.300338268}, //
+
59267 {3.09751678, 0.299127787}, //
+
59268 {3.09922957, 0.297834575}, //
+
59269 {3.1008575, 0.296458632}, //
+
59270 {3.10240006, 0.294999987}, //
+
59271 {3.10454082, 0.293572843}, //
+
59272 {3.11247396, 0.288283944}, //
+
59273 {3.11260009, 0.288199991}, //
+
59274 {3.10240006, 0.27125001}, //
+
59275 {3.10231614, 0.27125001}, //
+
59276 {3.102211, 0.27125001}, //
+
59277 {3.10206413, 0.27125001}, //
+
59278 {3.10187531, 0.27125001}, //
+
59279 {3.10164452, 0.27125001}, //
+
59280 {3.10137153, 0.27125001}, //
+
59281 {3.09996414, 0.27125001}, //
+
59282 {3.09959435, 0.27125001}, //
+
59283 {3.09922338, 0.27125001}, //
+
59284 {3.09847784, 0.27125001}, //
+
59285 });
+
59286 polys.push_back({
+
59287 {4.2709527, 0.24075}, //
+
59288 {4.26618195, 0.24075}, //
+
59289 {4.25092983, 0.24075}, //
+
59290 {4.24848509, 0.24075}, //
+
59291 {4.24616671, 0.24075}, //
+
59292 {4.24397421, 0.24075}, //
+
59293 {4.23347282, 0.24075}, //
+
59294 {4.2322135, 0.24075}, //
+
59295 {4.23112202, 0.24075}, //
+
59296 {4.23019886, 0.24075}, //
+
59297 {4.22809982, 0.24075}, //
+
59298 {4.22744942, 0.240770981}, //
+
59299 {4.22700882, 0.240833953}, //
+
59300 {4.22677755, 0.240938887}, //
+
59301 {4.22675657, 0.241085798}, //
+
59302 {4.22694588, 0.241274685}, //
+
59303 {4.22734451, 0.241505548}, //
+
59304 {4.22795296, 0.241778389}, //
+
59305 {4.22877169, 0.242093205}, //
+
59306 {4.22980022, 0.242449999}, //
+
59307 {4.23097467, 0.242848143}, //
+
59308 {4.23223209, 0.243287042}, //
+
59309 {4.23357201, 0.243766665}, //
+
59310 {4.23499489, 0.244287044}, //
+
59311 {4.23650074, 0.244848147}, //
+
59312 {4.23808908, 0.245450005}, //
+
59313 {4.23975992, 0.246092588}, //
+
59314 {4.24151373, 0.246775925}, //
+
59315 {4.24335003, 0.247500002}, //
+
59316 {4.24521732, 0.24823457}, //
+
59317 {4.24704123, 0.248927161}, //
+
59318 {4.24882221, 0.249577776}, //
+
59319 {4.25055981, 0.250186414}, //
+
59320 {4.25225449, 0.250753075}, //
+
59321 {4.25390577, 0.251277775}, //
+
59322 {4.25551367, 0.251760483}, //
+
59323 {4.25707817, 0.252201229}, //
+
59324 {4.25860023, 0.252600014}, //
+
59325 {4.26011133, 0.252998769}, //
+
59326 {4.26162243, 0.253439516}, //
+
59327 {4.26313353, 0.253922224}, //
+
59328 {4.26464462, 0.254446924}, //
+
59329 {4.26615572, 0.255013585}, //
+
59330 {4.26766682, 0.255622208}, //
+
59331 {4.26917791, 0.256272852}, //
+
59332 {4.27068901, 0.256965429}, //
+
59333 {4.27220011, 0.257699996}, //
+
59334 {4.27370071, 0.25849691}, //
+
59335 {4.27520227, 0.259376556}, //
+
59336 {4.27670574, 0.260338902}, //
+
59337 {4.27820969, 0.261383951}, //
+
59338 {4.27971554, 0.26251173}, //
+
59339 {4.28122234, 0.263722211}, //
+
59340 {4.2827301, 0.265015423}, //
+
59341 {4.28423929, 0.266391367}, //
+
59342 {4.28574991, 0.267850012}, //
+
59343 {4.28579187, 0.267870992}, //
+
59344 {4.28612757, 0.268038899}, //
+
59345 {4.28915024, 0.269549996}, //
+
59346 {4.28990507, 0.269906789}, //
+
59347 {4.29065847, 0.270221591}, //
+
59348 {4.29141092, 0.270494431}, //
+
59349 {4.29216242, 0.27072531}, //
+
59350 {4.29291248, 0.270914197}, //
+
59351 {4.29366112, 0.271061122}, //
+
59352 {4.2944088, 0.271166056}, //
+
59353 {4.29515505, 0.271228999}, //
+
59354 {4.29589987, 0.27125001}, //
+
59355 {4.29900551, 0.271459252}, //
+
59356 {4.30227757, 0.272087038}, //
+
59357 {4.30571651, 0.273133337}, //
+
59358 {4.30932236, 0.274598151}, //
+
59359 {4.31309462, 0.276481479}, //
+
59360 {4.31703329, 0.278783321}, //
+
59361 {4.32113886, 0.281503707}, //
+
59362 {4.32541132, 0.284642607}, //
+
59363 {4.3298502, 0.288199991}, //
+
59364 {4.33059502, 0.288913578}, //
+
59365 {4.33134127, 0.289543211}, //
+
59366 {4.33208895, 0.290088892}, //
+
59367 {4.33283758, 0.290550619}, //
+
59368 {4.33358765, 0.290928394}, //
+
59369 {4.33433867, 0.291222215}, //
+
59370 {4.33509159, 0.291432112}, //
+
59371 {4.33584499, 0.291558027}, //
+
59372 {4.33659983, 0.291599989}, //
+
59373 {4.33659983, 0.291579008}, //
+
59374 {4.33659983, 0.291516036}, //
+
59375 {4.33659983, 0.291411102}, //
+
59376 {4.33659983, 0.291264206}, //
+
59377 {4.33659983, 0.291075319}, //
+
59378 {4.33659983, 0.2905716}, //
+
59379 {4.33659983, 0.290256798}, //
+
59380 {4.33659983, 0.289543211}, //
+
59381 {4.33659983, 0.28922841}, //
+
59382 {4.33659983, 0.288955569}, //
+
59383 {4.33659983, 0.288724691}, //
+
59384 {4.33659983, 0.288535804}, //
+
59385 {4.33659983, 0.288283944}, //
+
59386 {4.33659983, 0.288221002}, //
+
59387 {4.33659983, 0.28817901}, //
+
59388 {4.33659983, 0.288116038}, //
+
59389 {4.33659983, 0.287675321}, //
+
59390 {4.33659983, 0.287171602}, //
+
59391 {4.33659983, 0.2868568}, //
+
59392 {4.33659983, 0.286500007}, //
+
59393 {4.33655787, 0.286143214}, //
+
59394 {4.33643198, 0.285828382}, //
+
59395 {4.33622217, 0.285555542}, //
+
59396 {4.33592844, 0.285324693}, //
+
59397 {4.33555079, 0.285135806}, //
+
59398 {4.33508873, 0.28498888}, //
+
59399 {4.33454323, 0.284883946}, //
+
59400 {4.3339138, 0.284820974}, //
+
59401 {4.33319998, 0.284799993}, //
+
59402 {4.3324132, 0.283257395}, //
+
59403 {4.33154058, 0.281629622}, //
+
59404 {4.3305831, 0.279916674}, //
+
59405 {4.32954073, 0.278118521}, //
+
59406 {4.32841301, 0.276235193}, //
+
59407 {4.32719994, 0.27426666}, //
+
59408 {4.32590199, 0.272212952}, //
+
59409 {4.32451868, 0.270074069}, //
+
59410 {4.32305002, 0.267850012}, //
+
59411 {4.32081461, 0.266328394}, //
+
59412 {4.3186202, 0.264763594}, //
+
59413 {4.31646681, 0.26315555}, //
+
59414 {4.31435347, 0.261504322}, //
+
59415 {4.31228161, 0.259809881}, //
+
59416 {4.31024981, 0.258072227}, //
+
59417 {4.30825949, 0.25629136}, //
+
59418 {4.30630922, 0.254467279}, //
+
59419 {4.30439997, 0.252600014}, //
+
59420 {4.30257463, 0.250826538}, //
+
59421 {4.30087662, 0.249261722}, //
+
59422 {4.29930544, 0.247905552}, //
+
59423 {4.29786158, 0.246758029}, //
+
59424 {4.29654503, 0.245819137}, //
+
59425 {4.29535532, 0.24508889}, //
+
59426 {4.2942934, 0.24456729}, //
+
59427 {4.29335785, 0.244254321}, //
+
59428 {4.29255009, 0.244149998}, //
+
59429 {4.29099703, 0.243436426}, //
+
59430 {4.28936005, 0.242806792}, //
+
59431 {4.28763866, 0.242261112}, //
+
59432 {4.28583384, 0.241799384}, //
+
59433 {4.28394508, 0.24142161}, //
+
59434 {4.28197241, 0.241127774}, //
+
59435 {4.27991533, 0.240917906}, //
+
59436 {4.27777481, 0.240791976}, //
+
59437 {4.27554989, 0.24075}, //
+
59438 });
+
59439 polys.push_back({
+
59440 {1.27824998, 0.172900006}, //
+
59441 {1.27672839, 0.172920987}, //
+
59442 {1.27516353, 0.172983944}, //
+
59443 {1.27355552, 0.173088893}, //
+
59444 {1.27190435, 0.173235804}, //
+
59445 {1.27020991, 0.173424691}, //
+
59446 {1.26847219, 0.173655555}, //
+
59447 {1.26669133, 0.173928395}, //
+
59448 {1.26486731, 0.174243212}, //
+
59449 {1.26300001, 0.174600005}, //
+
59450 {1.26112163, 0.17499876}, //
+
59451 {1.25924194, 0.175439507}, //
+
59452 {1.25736105, 0.175922215}, //
+
59453 {1.25547898, 0.176446915}, //
+
59454 {1.25359571, 0.177013576}, //
+
59455 {1.25171113, 0.177622229}, //
+
59456 {1.24982536, 0.178272843}, //
+
59457 {1.24793828, 0.178965434}, //
+
59458 {1.24605, 0.179700002}, //
+
59459 {1.24423456, 0.180455551}, //
+
59460 {1.24254382, 0.181211114}, //
+
59461 {1.24097776, 0.181966662}, //
+
59462 {1.2395364, 0.182722226}, //
+
59463 {1.23821974, 0.183477774}, //
+
59464 {1.23702776, 0.184233338}, //
+
59465 {1.23596048, 0.184988886}, //
+
59466 {1.2350179, 0.185744449}, //
+
59467 {1.2342, 0.186499998}, //
+
59468 {1.23256361, 0.187464193}, //
+
59469 {1.23067653, 0.188845679}, //
+
59470 {1.22853887, 0.190644443}, //
+
59471 {1.22615063, 0.192860499}, //
+
59472 {1.2235117, 0.195493832}, //
+
59473 {1.22062218, 0.198544443}, //
+
59474 {1.21748209, 0.202012345}, //
+
59475 {1.2140913, 0.205897525}, //
+
59476 {1.21045005, 0.210199997}, //
+
59477 {1.20741785, 0.21322161}, //
+
59478 {1.2043438, 0.216241971}, //
+
59479 {1.20122778, 0.21926111}, //
+
59480 {1.19806981, 0.222279012}, //
+
59481 {1.19486976, 0.225295678}, //
+
59482 {1.19162774, 0.228311107}, //
+
59483 {1.18834388, 0.231325313}, //
+
59484 {1.18501794, 0.234338269}, //
+
59485 {1.18165004, 0.237350002}, //
+
59486 {1.17836547, 0.240277782}, //
+
59487 {1.17528951, 0.243038893}, //
+
59488 {1.17242217, 0.245633334}, //
+
59489 {1.16976357, 0.248061106}, //
+
59490 {1.16731358, 0.250322223}, //
+
59491 {1.1650722, 0.25241667}, //
+
59492 {1.16303957, 0.254344434}, //
+
59493 {1.16121542, 0.256105542}, //
+
59494 {1.15960002, 0.257699996}, //
+
59495 {1.15727103, 0.258475929}, //
+
59496 {1.15481734, 0.259292603}, //
+
59497 {1.15223885, 0.260149986}, //
+
59498 {1.14953578, 0.261048138}, //
+
59499 {1.14670801, 0.261987031}, //
+
59500 {1.14375556, 0.262966663}, //
+
59501 {1.14067841, 0.263987035}, //
+
59502 {1.13747656, 0.265048146}, //
+
59503 {1.13415003, 0.266149998}, //
+
59504 {1.13082349, 0.26726234}, //
+
59505 {1.12762165, 0.26833272}, //
+
59506 {1.1245445, 0.269361109}, //
+
59507 {1.12159193, 0.270347536}, //
+
59508 {1.11876416, 0.271291971}, //
+
59509 {1.11606109, 0.272194445}, //
+
59510 {1.11348271, 0.273054928}, //
+
59511 {1.11102903, 0.273873448}, //
+
59512 {1.10870004, 0.274650007}, //
+
59513 {1.10656977, 0.275363594}, //
+
59514 {1.10469007, 0.275993198}, //
+
59515 {1.10306108, 0.276538879}, //
+
59516 {1.10168266, 0.277000606}, //
+
59517 {1.0996778, 0.277672231}, //
+
59518 {1.09905124, 0.277882099}, //
+
59519 {1.09867525, 0.278008014}, //
+
59520 {1.09854996, 0.278050005}, //
+
59521 {1.09869635, 0.278029025}, //
+
59522 {1.09986663, 0.277861118}, //
+
59523 {1.10089076, 0.277714193}, //
+
59524 {1.11039996, 0.276349992}, //
+
59525 {1.11310685, 0.275972217}, //
+
59526 {1.11593831, 0.275594443}, //
+
59527 {1.11889446, 0.275216669}, //
+
59528 {1.1219753, 0.274838895}, //
+
59529 {1.12518084, 0.27446112}, //
+
59530 {1.12851107, 0.274083346}, //
+
59531 {1.13196599, 0.273705542}, //
+
59532 {1.13554573, 0.273327768}, //
+
59533 {1.13925004, 0.272949994}, //
+
59534 {1.14289141, 0.272509247}, //
+
59535 {1.14628208, 0.271942586}, //
+
59536 {1.14942217, 0.27125001}, //
+
59537 {1.15231168, 0.270431489}, //
+
59538 {1.15495062, 0.269487023}, //
+
59539 {1.15733886, 0.268416673}, //
+
59540 {1.15947652, 0.267220378}, //
+
59541 {1.1613636, 0.265898138}, //
+
59542 {1.16299999, 0.264450014}, //
+
59543 {1.16454256, 0.262949377}, //
+
59544 {1.16617036, 0.261447519}, //
+
59545 {1.16788328, 0.259944439}, //
+
59546 {1.16968143, 0.258440137}, //
+
59547 {1.17156482, 0.256934553}, //
+
59548 {1.17353332, 0.255427778}, //
+
59549 {1.17558706, 0.25391975}, //
+
59550 {1.17772591, 0.252410501}, //
+
59551 {1.17995, 0.2509}, //
+
59552 {1.18367469, 0.247930244}, //
+
59553 {1.18731546, 0.245043203}, //
+
59554 {1.19087219, 0.242238894}, //
+
59555 {1.19434512, 0.239517286}, //
+
59556 {1.197734, 0.236878395}, //
+
59557 {1.20103884, 0.23432222}, //
+
59558 {1.20425987, 0.231848761}, //
+
59559 {1.20739686, 0.229458019}, //
+
59560 {1.21045005, 0.227149993}, //
+
59561 {1.2127161, 0.225712344}, //
+
59562 {1.21498084, 0.224399388}, //
+
59563 {1.21724439, 0.22321111}, //
+
59564 {1.21950674, 0.222147524}, //
+
59565 {1.2217679, 0.221208647}, //
+
59566 {1.22402775, 0.220394447}, //
+
59567 {1.22628641, 0.219704941}, //
+
59568 {1.22854388, 0.219140127}, //
+
59569 {1.23080003, 0.218700007}, //
+
59570 {1.23305559, 0.218301237}, //
+
59571 {1.23531115, 0.21786049}, //
+
59572 {1.23756671, 0.217377782}, //
+
59573 {1.23982227, 0.216853082}, //
+
59574 {1.24207783, 0.216286421}, //
+
59575 {1.24433339, 0.215677783}, //
+
59576 {1.24658895, 0.215027153}, //
+
59577 {1.24884439, 0.214334562}, //
+
59578 {1.25109994, 0.213599995}, //
+
59579 {1.25334501, 0.212886423}, //
+
59580 {1.25554693, 0.212256789}, //
+
59581 {1.25770557, 0.211711109}, //
+
59582 {1.25982094, 0.211249381}, //
+
59583 {1.26189315, 0.210871607}, //
+
59584 {1.26392221, 0.210577771}, //
+
59585 {1.265908, 0.210367903}, //
+
59586 {1.26785064, 0.210241973}, //
+
59587 {1.26975, 0.210199997}, //
+
59588 {1.27310801, 0.210199997}, //
+
59589 {1.27562654, 0.210199997}, //
+
59590 {1.27657104, 0.210199997}, //
+
59591 {1.2773056, 0.210199997}, //
+
59592 {1.27783024, 0.210199997}, //
+
59593 {1.27814507, 0.210199997}, //
+
59594 {1.27824998, 0.210199997}, //
+
59595 {1.28505003, 0.172900006}, //
+
59596 });
+
59597 polys.push_back({
+
59598 {3.08141923, 0.230550006}, //
+
59599 {3.08018899, 0.230550006}, //
+
59600 {3.07891536, 0.230550006}, //
+
59601 {3.07189989, 0.230550006}, //
+
59602 {3.07044125, 0.230570987}, //
+
59603 {3.06906533, 0.230633944}, //
+
59604 {3.06777215, 0.230738893}, //
+
59605 {3.0665617, 0.230885804}, //
+
59606 {3.06543398, 0.231074691}, //
+
59607 {3.06438899, 0.231305555}, //
+
59608 {3.06342649, 0.231578395}, //
+
59609 {3.06254697, 0.231893212}, //
+
59610 {3.06174994, 0.232250005}, //
+
59611 {3.06099439, 0.232606784}, //
+
59612 {3.06023884, 0.2329216}, //
+
59613 {3.05948329, 0.233194441}, //
+
59614 {3.05872774, 0.233425304}, //
+
59615 {3.05797219, 0.233614191}, //
+
59616 {3.05721664, 0.233761117}, //
+
59617 {3.0564611, 0.233866051}, //
+
59618 {3.05570555, 0.233929008}, //
+
59619 {3.05495, 0.233950004}, //
+
59620 {3.054111, 0.234663576}, //
+
59621 {3.05310559, 0.23529321}, //
+
59622 {3.05193329, 0.23583889}, //
+
59623 {3.05059433, 0.236300617}, //
+
59624 {3.04908895, 0.236678392}, //
+
59625 {3.04741669, 0.236972228}, //
+
59626 {3.04557776, 0.237182096}, //
+
59627 {3.04357219, 0.237308025}, //
+
59628 {3.04139996, 0.237350002}, //
+
59629 {3.03909206, 0.236678392}, //
+
59630 {3.0367012, 0.236174688}, //
+
59631 {3.03422785, 0.23583889}, //
+
59632 {3.03167152, 0.235670984}, //
+
59633 {3.02903271, 0.235670984}, //
+
59634 {3.02631116, 0.23583889}, //
+
59635 {3.02350688, 0.236174688}, //
+
59636 {3.02061987, 0.236678392}, //
+
59637 {3.01764989, 0.237350002}, //
+
59638 {3.01617026, 0.238042593}, //
+
59639 {3.01473141, 0.238609254}, //
+
59640 {3.01333332, 0.239050001}, //
+
59641 {3.011976, 0.239364818}, //
+
59642 {3.01065922, 0.239553705}, //
+
59643 {3.00938344, 0.239616662}, //
+
59644 {3.00814819, 0.239553705}, //
+
59645 {3.00695372, 0.239364818}, //
+
59646 {3.00580001, 0.239050001}, //
+
59647 {3.00378513, 0.238378391}, //
+
59648 {3.00296664, 0.23810555}, //
+
59649 {3.00227404, 0.237874687}, //
+
59650 {3.00170732, 0.2376858}, //
+
59651 {3.00076294, 0.237370983}, //
+
59652 {3.0007, 0.237350002}, //
+
59653 {2.99994445, 0.237308025}, //
+
59654 {2.9991889, 0.237182096}, //
+
59655 {2.99843335, 0.236972228}, //
+
59656 {2.9976778, 0.236678392}, //
+
59657 {2.99692225, 0.236300617}, //
+
59658 {2.99616671, 0.23583889}, //
+
59659 {2.99541116, 0.23529321}, //
+
59660 {2.99465561, 0.234663576}, //
+
59661 {2.99390006, 0.233950004}, //
+
59662 {2.99237847, 0.233991981}, //
+
59663 {2.99081349, 0.234117895}, //
+
59664 {2.9892056, 0.234327778}, //
+
59665 {2.98755431, 0.234621599}, //
+
59666 {2.98585987, 0.234999388}, //
+
59667 {2.98412228, 0.235461116}, //
+
59668 {2.98234129, 0.236006796}, //
+
59669 {2.98051739, 0.236636415}, //
+
59670 {2.97865009, 0.237350002}, //
+
59671 {2.97675061, 0.238146916}, //
+
59672 {2.97480798, 0.239026546}, //
+
59673 {2.97282219, 0.239988893}, //
+
59674 {2.97079325, 0.241033956}, //
+
59675 {2.96872091, 0.242161721}, //
+
59676 {2.96660566, 0.243372217}, //
+
59677 {2.96444702, 0.244665429}, //
+
59678 {2.96224499, 0.246041358}, //
+
59679 {2.96000004, 0.247500002}, //
+
59680 {2.95854139, 0.248927161}, //
+
59681 {2.95716548, 0.250186414}, //
+
59682 {2.9558723, 0.251277775}, //
+
59683 {2.95466185, 0.252201229}, //
+
59684 {2.95353389, 0.252956778}, //
+
59685 {2.9524889, 0.25354445}, //
+
59686 {2.95152664, 0.253964186}, //
+
59687 {2.95064688, 0.254216045}, //
+
59688 {2.94985008, 0.254299998}, //
+
59689 {2.93289995, 0.254299998}, //
+
59690 {2.93134761, 0.254258037}, //
+
59691 {2.9297123, 0.254132092}, //
+
59692 {2.92799449, 0.253922224}, //
+
59693 {2.92619371, 0.253628403}, //
+
59694 {2.92431045, 0.253250629}, //
+
59695 {2.92234445, 0.252788901}, //
+
59696 {2.92029572, 0.252243221}, //
+
59697 {2.91816425, 0.251613587}, //
+
59698 {2.91595006, 0.2509}, //
+
59699 {2.9112277, 0.2509}, //
+
59700 {2.89714384, 0.2509}, //
+
59701 {2.89557767, 0.2509}, //
+
59702 {2.89413643, 0.2509}, //
+
59703 {2.88879991, 0.2509}, //
+
59704 {2.88808632, 0.250920981}, //
+
59705 {2.88745689, 0.250983953}, //
+
59706 {2.88691115, 0.251088887}, //
+
59707 {2.88644934, 0.251235813}, //
+
59708 {2.88607168, 0.2514247}, //
+
59709 {2.88577771, 0.251655549}, //
+
59710 {2.8855679, 0.251928389}, //
+
59711 {2.88544202, 0.252243221}, //
+
59712 {2.88540006, 0.252600014}, //
+
59713 {2.88544202, 0.252956778}, //
+
59714 {2.8855679, 0.25327161}, //
+
59715 {2.88577771, 0.25354445}, //
+
59716 {2.88607168, 0.253775299}, //
+
59717 {2.88644934, 0.253964186}, //
+
59718 {2.88691115, 0.254111111}, //
+
59719 {2.88745689, 0.254216045}, //
+
59720 {2.88808632, 0.254279017}, //
+
59721 {2.88879991, 0.254299998}, //
+
59722 {2.89560008, 0.254299998}, //
+
59723 {2.8971734, 0.25434199}, //
+
59724 {2.89887166, 0.254467905}, //
+
59725 {2.90069437, 0.254677773}, //
+
59726 {2.90264201, 0.254971594}, //
+
59727 {2.90471411, 0.255349368}, //
+
59728 {2.90691113, 0.255811125}, //
+
59729 {2.90923262, 0.256356776}, //
+
59730 {2.91167903, 0.256986409}, //
+
59731 {2.9142499, 0.257699996}, //
+
59732 {2.916821, 0.258454949}, //
+
59733 {2.91926718, 0.259208649}, //
+
59734 {2.9215889, 0.259961098}, //
+
59735 {2.92378569, 0.260712355}, //
+
59736 {2.92585802, 0.261462331}, //
+
59737 {2.92780566, 0.262211114}, //
+
59738 {2.92962837, 0.262958646}, //
+
59739 {2.93132663, 0.263704926}, //
+
59740 {2.93289995, 0.264450014}, //
+
59741 {2.93511415, 0.264429003}, //
+
59742 {2.93724561, 0.26436606}, //
+
59743 {2.93929434, 0.264261097}, //
+
59744 {2.94126058, 0.264114201}, //
+
59745 {2.94314384, 0.263925314}, //
+
59746 {2.94494438, 0.263694435}, //
+
59747 {2.94666243, 0.263421595}, //
+
59748 {2.9482975, 0.263106793}, //
+
59749 {2.94985008, 0.26275}, //
+
59750 {2.95136046, 0.262361735}, //
+
59751 {2.95286965, 0.261930257}, //
+
59752 {2.95437789, 0.261455566}, //
+
59753 {2.95588446, 0.260937661}, //
+
59754 {2.95739007, 0.260376543}, //
+
59755 {2.95889449, 0.259772211}, //
+
59756 {2.96039748, 0.259124696}, //
+
59757 {2.96189928, 0.258433938}, //
+
59758 {2.96339989, 0.257699996}, //
+
59759 {2.96415567, 0.256986409}, //
+
59760 {2.96491122, 0.256356776}, //
+
59761 {2.96566677, 0.255811125}, //
+
59762 {2.96642232, 0.255349368}, //
+
59763 {2.96717787, 0.254971594}, //
+
59764 {2.96793342, 0.254677773}, //
+
59765 {2.96868896, 0.254467905}, //
+
59766 {2.96944451, 0.25434199}, //
+
59767 {2.97020006, 0.254299998}, //
+
59768 {2.97321105, 0.253586411}, //
+
59769 {2.97622228, 0.252956778}, //
+
59770 {2.97923326, 0.252411097}, //
+
59771 {2.98224449, 0.25194937}, //
+
59772 {2.98525548, 0.251571596}, //
+
59773 {2.98826671, 0.251277775}, //
+
59774 {2.99127769, 0.251067907}, //
+
59775 {2.99428892, 0.250941962}, //
+
59776 {2.99729991, 0.2509}, //
+
59777 {2.99994445, 0.2509}, //
+
59778 {3.00099373, 0.2509}, //
+
59779 {3.00749993, 0.2509}, //
+
59780 {3.00979757, 0.250858039}, //
+
59781 {3.0121789, 0.250732094}, //
+
59782 {3.01464438, 0.250522226}, //
+
59783 {3.01719379, 0.250228405}, //
+
59784 {3.01982713, 0.249850616}, //
+
59785 {3.02254438, 0.249388888}, //
+
59786 {3.02534556, 0.248843208}, //
+
59787 {3.02823091, 0.248213574}, //
+
59788 {3.03119993, 0.247500002}, //
+
59789 {3.03195548, 0.246796921}, //
+
59790 {3.03271103, 0.246176541}, //
+
59791 {3.03346658, 0.245638892}, //
+
59792 {3.03422213, 0.245183945}, //
+
59793 {3.03497767, 0.244811729}, //
+
59794 {3.03573322, 0.244522229}, //
+
59795 {3.03648877, 0.244315431}, //
+
59796 {3.03724456, 0.244191363}, //
+
59797 {3.03800011, 0.244149998}, //
+
59798 {3.04101181, 0.244066045}, //
+
59799 {3.04402471, 0.2438142}, //
+
59800 {3.04703879, 0.243394449}, //
+
59801 {3.05005431, 0.242806792}, //
+
59802 {3.05307102, 0.242051229}, //
+
59803 {3.05608892, 0.241127774}, //
+
59804 {3.05910802, 0.240036413}, //
+
59805 {3.06212831, 0.238777161}, //
+
59806 {3.06515002, 0.237350002}, //
+
59807 {3.06595731, 0.236636415}, //
+
59808 {3.06689072, 0.236006796}, //
+
59809 {3.06795001, 0.235461116}, //
+
59810 {3.06913519, 0.234999388}, //
+
59811 {3.07044625, 0.234621599}, //
+
59812 {3.07188344, 0.234327778}, //
+
59813 {3.07344627, 0.234117895}, //
+
59814 {3.07513523, 0.233991981}, //
+
59815 {3.07695007, 0.233950004}, //
+
59816 {3.08064389, 0.233950004}, //
+
59817 {3.08242774, 0.233950004}, //
+
59818 {3.08416986, 0.233950004}, //
+
59819 {3.09225011, 0.233950004}, //
+
59820 {3.09222913, 0.233929008}, //
+
59821 {3.09216595, 0.233866051}, //
+
59822 {3.09191418, 0.233614191}, //
+
59823 {3.09172535, 0.233425304}, //
+
59824 {3.09149456, 0.233194441}, //
+
59825 {3.09054995, 0.232250005}, //
+
59826 {3.09013033, 0.231893212}, //
+
59827 {3.08962655, 0.231578395}, //
+
59828 {3.08903885, 0.231305555}, //
+
59829 {3.08836722, 0.231074691}, //
+
59830 {3.08761168, 0.230885804}, //
+
59831 {3.0867722, 0.230738893}, //
+
59832 {3.08584881, 0.230633944}, //
+
59833 {3.08484125, 0.230570987}, //
+
59834 {3.08375001, 0.230550006}, //
+
59835 });
+
59836 polys.push_back({
+
59837 {0.912079036, 0.162791982}, //
+
59838 {0.912016034, 0.162917897}, //
+
59839 {0.910756767, 0.165436417}, //
+
59840 {0.910399973, 0.166150004}, //
+
59841 {0.910001218, 0.166904941}, //
+
59842 {0.909560502, 0.167658642}, //
+
59843 {0.909077764, 0.168411106}, //
+
59844 {0.908553064, 0.169162348}, //
+
59845 {0.907986403, 0.169912338}, //
+
59846 {0.907377779, 0.170661107}, //
+
59847 {0.906727135, 0.171408638}, //
+
59848 {0.906034589, 0.172154933}, //
+
59849 {0.905300021, 0.172900006}, //
+
59850 {0.904523432, 0.173655555}, //
+
59851 {0.903704941, 0.174411118}, //
+
59852 {0.902844429, 0.175166667}, //
+
59853 {0.901941955, 0.175922215}, //
+
59854 {0.900997519, 0.176677778}, //
+
59855 {0.900011122, 0.177433327}, //
+
59856 {0.898982704, 0.17818889}, //
+
59857 {0.897912323, 0.178944439}, //
+
59858 {0.896799982, 0.179700002}, //
+
59859 {0.89569813, 0.180455551}, //
+
59860 {0.894637048, 0.181211114}, //
+
59861 {0.893616676, 0.181966662}, //
+
59862 {0.892637014, 0.182722226}, //
+
59863 {0.891698122, 0.183477774}, //
+
59864 {0.890799999, 0.184233338}, //
+
59865 {0.889942586, 0.184988886}, //
+
59866 {0.889125943, 0.185744449}, //
+
59867 {0.88835001, 0.186499998}, //
+
59868 {0.886838913, 0.186499998}, //
+
59869 {0.886083305, 0.186499998}, //
+
59870 {0.885327756, 0.186499998}, //
+
59871 {0.881550014, 0.186499998}, //
+
59872 {0.880049407, 0.187213585}, //
+
59873 {0.878547549, 0.187843204}, //
+
59874 {0.877044439, 0.188388884}, //
+
59875 {0.875540137, 0.188850611}, //
+
59876 {0.874034584, 0.189228401}, //
+
59877 {0.872527778, 0.189522222}, //
+
59878 {0.871019781, 0.189732105}, //
+
59879 {0.869510472, 0.189858019}, //
+
59880 {0.867999971, 0.189899996}, //
+
59881 {0.86648953, 0.189899996}, //
+
59882 {0.864980221, 0.189899996}, //
+
59883 {0.863472223, 0.189899996}, //
+
59884 {0.854449987, 0.189899996}, //
+
59885 {0.85291791, 0.189920366}, //
+
59886 {0.851343811, 0.189981475}, //
+
59887 {0.84972775, 0.19008334}, //
+
59888 {0.848069727, 0.190225929}, //
+
59889 {0.846369743, 0.190409258}, //
+
59890 {0.844627798, 0.190633327}, //
+
59891 {0.842843831, 0.19089815}, //
+
59892 {0.841017902, 0.191203699}, //
+
59893 {0.839150012, 0.191550002}, //
+
59894 {0.837334573, 0.191990748}, //
+
59895 {0.835643828, 0.192557409}, //
+
59896 {0.834077775, 0.19325}, //
+
59897 {0.832636416, 0.194068521}, //
+
59898 {0.831319749, 0.195012957}, //
+
59899 {0.830127776, 0.196083337}, //
+
59900 {0.829060495, 0.197279632}, //
+
59901 {0.828117907, 0.198601857}, //
+
59902 {0.827300012, 0.200049996}, //
+
59903 {0.827300012, 0.200427771}, //
+
59904 {0.827300012, 0.200721607}, //
+
59905 {0.827300012, 0.203449994}, //
+
59906 {0.826565444, 0.20347099}, //
+
59907 {0.825872838, 0.203533947}, //
+
59908 {0.825222194, 0.203638881}, //
+
59909 {0.824613571, 0.203785807}, //
+
59910 {0.82404691, 0.203974694}, //
+
59911 {0.82352221, 0.204205558}, //
+
59912 {0.823039532, 0.204478398}, //
+
59913 {0.822598755, 0.204793215}, //
+
59914 {0.8222, 0.205149993}, //
+
59915 {0.821811736, 0.205506787}, //
+
59916 {0.821380258, 0.205821604}, //
+
59917 {0.820905566, 0.206094444}, //
+
59918 {0.820387661, 0.206325307}, //
+
59919 {0.819826543, 0.206514195}, //
+
59920 {0.819222212, 0.206661105}, //
+
59921 {0.818574667, 0.206766054}, //
+
59922 {0.817883968, 0.206829011}, //
+
59923 {0.817149997, 0.206850007}, //
+
59924 {0.816311121, 0.206850007}, //
+
59925 {0.815305531, 0.206850007}, //
+
59926 {0.814133346, 0.206850007}, //
+
59927 {0.812794447, 0.206850007}, //
+
59928 {0.811288893, 0.206850007}, //
+
59929 {0.809616685, 0.206850007}, //
+
59930 {0.807777762, 0.206850007}, //
+
59931 {0.803600013, 0.206850007}, //
+
59932 {0.802046895, 0.206850007}, //
+
59933 {0.798688889, 0.206850007}, //
+
59934 {0.796883941, 0.206850007}, //
+
59935 {0.79499507, 0.206850007}, //
+
59936 {0.793022215, 0.206850007}, //
+
59937 {0.790965438, 0.206850007}, //
+
59938 {0.788824677, 0.206850007}, //
+
59939 {0.786599994, 0.206850007}, //
+
59940 {0.7843858, 0.206870377}, //
+
59941 {0.782254338, 0.206931487}, //
+
59942 {0.780205548, 0.207033336}, //
+
59943 {0.778239489, 0.207175925}, //
+
59944 {0.776356161, 0.207359254}, //
+
59945 {0.774555564, 0.207583338}, //
+
59946 {0.772837639, 0.207848147}, //
+
59947 {0.771202445, 0.20815371}, //
+
59948 {0.769649982, 0.208499998}, //
+
59949 {0.768212318, 0.208898768}, //
+
59950 {0.766899407, 0.209339499}, //
+
59951 {0.765711129, 0.209822223}, //
+
59952 {0.764647543, 0.210346907}, //
+
59953 {0.763708651, 0.210913584}, //
+
59954 {0.762894452, 0.211522222}, //
+
59955 {0.762204945, 0.212172836}, //
+
59956 {0.761640131, 0.212865427}, //
+
59957 {0.761200011, 0.213599995}, //
+
59958 {0.760968506, 0.214355558}, //
+
59959 {0.761029601, 0.215111107}, //
+
59960 {0.761383355, 0.21586667}, //
+
59961 {0.762029648, 0.216622218}, //
+
59962 {0.76296854, 0.217377782}, //
+
59963 {0.764199972, 0.21813333}, //
+
59964 {0.765724063, 0.218888894}, //
+
59965 {0.767540753, 0.219644442}, //
+
59966 {0.769649982, 0.220400006}, //
+
59967 {0.774214208, 0.221900612}, //
+
59968 {0.778862357, 0.22340247}, //
+
59969 {0.783594429, 0.22490555}, //
+
59970 {0.788410485, 0.226409882}, //
+
59971 {0.793310523, 0.227915436}, //
+
59972 {0.798294425, 0.229422227}, //
+
59973 {0.80336237, 0.230930254}, //
+
59974 {0.808514178, 0.232439503}, //
+
59975 {0.813750029, 0.233950004}, //
+
59976 {0.818901837, 0.23529321}, //
+
59977 {0.823801875, 0.236300617}, //
+
59978 {0.828450024, 0.236972228}, //
+
59979 {0.832846284, 0.237308025}, //
+
59980 {0.836990714, 0.237308025}, //
+
59981 {0.840883315, 0.236972228}, //
+
59982 {0.844524086, 0.236300617}, //
+
59983 {0.847912967, 0.23529321}, //
+
59984 {0.851050019, 0.233950004}, //
+
59985 {0.854019165, 0.233299389}, //
+
59986 {0.856904328, 0.232858643}, //
+
59987 {0.859705567, 0.232627779}, //
+
59988 {0.862422824, 0.232606784}, //
+
59989 {0.865056157, 0.232795686}, //
+
59990 {0.867605567, 0.233194441}, //
+
59991 {0.870070994, 0.233803093}, //
+
59992 {0.872452497, 0.234621599}, //
+
59993 {0.874750018, 0.235650003}, //
+
59994 {0.87693274, 0.236762345}, //
+
59995 {0.878947556, 0.23783271}, //
+
59996 {0.880794466, 0.238861114}, //
+
59997 {0.882473469, 0.239847526}, //
+
59998 {0.883984566, 0.240791976}, //
+
59999 {0.885327756, 0.24169445}, //
+
60000 {0.8865031, 0.242554933}, //
+
60001 {0.887510478, 0.243373454}, //
+
60002 {0.88835001, 0.244149998}, //
+
60003 {0.889104962, 0.244874075}, //
+
60004 {0.889858663, 0.245557413}, //
+
60005 {0.890611112, 0.246199995}, //
+
60006 {0.891362369, 0.246801853}, //
+
60007 {0.892112374, 0.247362956}, //
+
60008 {0.892861128, 0.247883335}, //
+
60009 {0.89360863, 0.248362958}, //
+
60010 {0.894354939, 0.248801857}, //
+
60011 {0.895099998, 0.249200001}, //
+
60012 {0.895855546, 0.249577776}, //
+
60013 {0.896611094, 0.24995555}, //
+
60014 {0.897366643, 0.250333339}, //
+
60015 {0.898122251, 0.250711113}, //
+
60016 {0.8988778, 0.251088887}, //
+
60017 {0.900388896, 0.251844436}, //
+
60018 {0.901144445, 0.25222221}, //
+
60019 {0.901899993, 0.252600014}, //
+
60020 {0.90261358, 0.252956778}, //
+
60021 {0.905132115, 0.254216045}, //
+
60022 {0.905258, 0.254279017}, //
+
60023 {0.905300021, 0.254299998}, //
+
60024 {0.905300021, 0.25354445}, //
+
60025 {0.905300021, 0.252033323}, //
+
60026 {0.905300021, 0.251277775}, //
+
60027 {0.905300021, 0.247500002}, //
+
60028 {0.905300021, 0.246754944}, //
+
60029 {0.905300021, 0.246008635}, //
+
60030 {0.905300021, 0.245261118}, //
+
60031 {0.905300021, 0.244512349}, //
+
60032 {0.905300021, 0.239994451}, //
+
60033 {0.905300021, 0.23848334}, //
+
60034 {0.905300021, 0.237727776}, //
+
60035 {0.905300021, 0.233950004}, //
+
60036 {0.905300021, 0.233236417}, //
+
60037 {0.905300021, 0.232061118}, //
+
60038 {0.905300021, 0.231599376}, //
+
60039 {0.905300021, 0.230550006}, //
+
60040 {0.905111134, 0.230550006}, //
+
60041 {0.904964209, 0.230550006}, //
+
60042 {0.903201222, 0.230550006}, //
+
60043 {0.902760506, 0.230550006}, //
+
60044 {0.902277768, 0.230550006}, //
+
60045 {0.901753068, 0.230550006}, //
+
60046 {0.898500025, 0.230550006}, //
+
60047 {0.897775948, 0.23052901}, //
+
60048 {0.897092581, 0.230466053}, //
+
60049 {0.896449983, 0.230361104}, //
+
60050 {0.895848155, 0.230214193}, //
+
60051 {0.895287037, 0.230025306}, //
+
60052 {0.894766688, 0.229794443}, //
+
60053 {0.89428705, 0.229521602}, //
+
60054 {0.893848121, 0.229206786}, //
+
60055 {0.893450022, 0.228850007}, //
+
60056 {0.893093228, 0.228472218}, //
+
60057 {0.892778397, 0.228094444}, //
+
60058 {0.892505527, 0.227716669}, //
+
60059 {0.892274678, 0.227338895}, //
+
60060 {0.892085791, 0.226961106}, //
+
60061 {0.891938865, 0.226583332}, //
+
60062 {0.891833961, 0.226205558}, //
+
60063 {0.891770959, 0.225827783}, //
+
60064 {0.891749978, 0.225449994}, //
+
60065 {0.891749978, 0.224630252}, //
+
60066 {0.891749978, 0.22415556}, //
+
60067 {0.891749978, 0.220400006}, //
+
60068 {0.892525911, 0.218909875}, //
+
60069 {0.893342614, 0.217461735}, //
+
60070 {0.894200027, 0.216055557}, //
+
60071 {0.89509815, 0.214691356}, //
+
60072 {0.896037042, 0.213369131}, //
+
60073 {0.897016644, 0.212088883}, //
+
60074 {0.898037016, 0.210850611}, //
+
60075 {0.899098158, 0.209654316}, //
+
60076 {0.900200009, 0.208499998}, //
+
60077 {0.901312351, 0.207377166}, //
+
60078 {0.902382731, 0.206253082}, //
+
60079 {0.90341109, 0.205127776}, //
+
60080 {0.904397547, 0.204001233}, //
+
60081 {0.905341983, 0.202873453}, //
+
60082 {0.906244457, 0.201744437}, //
+
60083 {0.907104909, 0.200614199}, //
+
60084 {0.90792346, 0.199482709}, //
+
60085 {0.908699989, 0.198349997}, //
+
60086 {0.91004324, 0.196335182}, //
+
60087 {0.910588861, 0.195516661}, //
+
60088 {0.912100017, 0.19325}, //
+
60089 {0.912100017, 0.162750006}, //
+
60090 });
+
60091 polys.push_back({
+
60092 {4.41010666, 0.244149998}, //
+
60093 {4.41015053, 0.244149998}, //
+
60094 {4.41082239, 0.244149998}, //
+
60095 {4.41115808, 0.244149998}, //
+
60096 {4.41082239, 0.244149998}, //
+
60097 });
+
60098 polys.push_back({
+
60099 {4.3629427, 0.232270986}, //
+
60100 {4.36053324, 0.232438892}, //
+
60101 {4.35816479, 0.23277469}, //
+
60102 {4.35583687, 0.233278394}, //
+
60103 {4.35354996, 0.233950004}, //
+
60104 {4.35209131, 0.233970985}, //
+
60105 {4.35071564, 0.234033957}, //
+
60106 {4.34942245, 0.234138891}, //
+
60107 {4.34821177, 0.234285802}, //
+
60108 {4.34708405, 0.234474689}, //
+
60109 {4.34603882, 0.234705552}, //
+
60110 {4.34507656, 0.234978393}, //
+
60111 {4.3441968, 0.23529321}, //
+
60112 {4.3434, 0.235650003}, //
+
60113 {4.34264421, 0.236006796}, //
+
60114 {4.3418889, 0.236321598}, //
+
60115 {4.34113312, 0.236594439}, //
+
60116 {4.34037781, 0.236825302}, //
+
60117 {4.33962202, 0.237014204}, //
+
60118 {4.33886671, 0.237161115}, //
+
60119 {4.33811092, 0.237266049}, //
+
60120 {4.33735561, 0.237329006}, //
+
60121 {4.33659983, 0.237350002}, //
+
60122 {4.33588648, 0.237370983}, //
+
60123 {4.33525658, 0.237433955}, //
+
60124 {4.33471107, 0.237538889}, //
+
60125 {4.3342495, 0.2376858}, //
+
60126 {4.33387184, 0.237874687}, //
+
60127 {4.33357763, 0.23810555}, //
+
60128 {4.33336782, 0.238378391}, //
+
60129 {4.33324194, 0.238693208}, //
+
60130 {4.33319998, 0.239050001}, //
+
60131 {4.33319998, 0.239721611}, //
+
60132 {4.33319998, 0.239994451}, //
+
60133 {4.33319998, 0.240225315}, //
+
60134 {4.33319998, 0.240561113}, //
+
60135 {4.33319998, 0.240666047}, //
+
60136 {4.33319998, 0.240729019}, //
+
60137 {4.33319998, 0.24075}, //
+
60138 {4.34483719, 0.240791976}, //
+
60139 {4.35563707, 0.240917906}, //
+
60140 {4.36560011, 0.241127774}, //
+
60141 {4.37472582, 0.24142161}, //
+
60142 {4.38301468, 0.241799384}, //
+
60143 {4.39046669, 0.242261112}, //
+
60144 {4.39708138, 0.242806792}, //
+
60145 {4.40285921, 0.243436426}, //
+
60146 {4.4078002, 0.244149998}, //
+
60147 {4.40634155, 0.243436426}, //
+
60148 {4.4049654, 0.242806792}, //
+
60149 {4.40367222, 0.242261112}, //
+
60150 {4.40246153, 0.241799384}, //
+
60151 {4.40133381, 0.24142161}, //
+
60152 {4.40028906, 0.241127774}, //
+
60153 {4.39932632, 0.240917906}, //
+
60154 {4.39844704, 0.240791976}, //
+
60155 {4.39764977, 0.24075}, //
+
60156 {4.39536285, 0.239994451}, //
+
60157 {4.39303541, 0.239238888}, //
+
60158 {4.39066648, 0.23848334}, //
+
60159 {4.3882575, 0.237727776}, //
+
60160 {4.38580751, 0.236972228}, //
+
60161 {4.38331652, 0.236216664}, //
+
60162 {4.38078499, 0.235461116}, //
+
60163 {4.37821293, 0.234705552}, //
+
60164 {4.37559986, 0.233950004}, //
+
60165 {4.37298727, 0.233278394}, //
+
60166 {4.37041473, 0.23277469}, //
+
60167 {4.36788321, 0.232438892}, //
+
60168 {4.36539268, 0.232270986}, //
+
60169 });
+
60170 polys.push_back({
+
60171 {4.4381609, 0.210199997}, //
+
60172 {4.43801403, 0.210199997}, //
+
60173 {4.4378252, 0.210199997}, //
+
60174 {4.43759441, 0.210199997}, //
+
60175 {4.43732166, 0.210199997}, //
+
60176 {4.43700695, 0.210199997}, //
+
60177 {4.4366498, 0.210199997}, //
+
60178 {4.43629313, 0.210179016}, //
+
60179 {4.43597841, 0.210116044}, //
+
60180 {4.43570566, 0.21001111}, //
+
60181 {4.43547487, 0.209864199}, //
+
60182 {4.43528557, 0.209675312}, //
+
60183 {4.4351387, 0.209444448}, //
+
60184 {4.4350338, 0.209171608}, //
+
60185 {4.43497086, 0.208856791}, //
+
60186 {4.43494987, 0.208499998}, //
+
60187 {4.43492889, 0.20815371}, //
+
60188 {4.43486595, 0.207848147}, //
+
60189 {4.43476105, 0.207583338}, //
+
60190 {4.43461418, 0.207359254}, //
+
60191 {4.43442535, 0.207175925}, //
+
60192 {4.43419456, 0.207033336}, //
+
60193 {4.43392181, 0.206931487}, //
+
60194 {4.43360662, 0.206870377}, //
+
60195 {4.43324995, 0.206850007}, //
+
60196 {4.4328723, 0.206829011}, //
+
60197 {4.43249464, 0.206766054}, //
+
60198 {4.43211651, 0.206661105}, //
+
60199 {4.43173885, 0.206514195}, //
+
60200 {4.4313612, 0.206325307}, //
+
60201 {4.43098354, 0.206094444}, //
+
60202 {4.43060541, 0.205821604}, //
+
60203 {4.43022776, 0.205506787}, //
+
60204 {4.4298501, 0.205149993}, //
+
60205 {4.42901039, 0.204310492}, //
+
60206 {4.42852783, 0.203827783}, //
+
60207 {4.42743635, 0.202736422}, //
+
60208 {4.42682791, 0.202127784}, //
+
60209 {4.42617702, 0.201477155}, //
+
60210 {4.42548466, 0.200784564}, //
+
60211 {4.42474985, 0.200049996}, //
+
60212 {4.42157078, 0.197772846}, //
+
60213 {4.41805601, 0.195452467}, //
+
60214 {4.41420555, 0.193088889}, //
+
60215 {4.41001892, 0.190682098}, //
+
60216 {4.40549707, 0.188232094}, //
+
60217 {4.40063906, 0.185738891}, //
+
60218 {4.39544487, 0.183202475}, //
+
60219 {4.38991547, 0.180622846}, //
+
60220 {4.38404989, 0.178000003}, //
+
60221 {4.37815332, 0.175512969}, //
+
60222 {4.37250662, 0.17331852}, //
+
60223 {4.36711121, 0.17141667}, //
+
60224 {4.36196613, 0.169807404}, //
+
60225 {4.3570714, 0.168490738}, //
+
60226 {4.35242796, 0.16746667}, //
+
60227 {4.34803438, 0.166735187}, //
+
60228 {4.3438921, 0.166296303}, //
+
60229 {4.34000015, 0.166150004}, //
+
60230 {4.33619118, 0.16619198}, //
+
60231 {4.33229876, 0.166317895}, //
+
60232 {4.32832241, 0.166527778}, //
+
60233 {4.32426167, 0.166821599}, //
+
60234 {4.32011747, 0.167199388}, //
+
60235 {4.31588888, 0.167661116}, //
+
60236 {4.31157637, 0.168206796}, //
+
60237 {4.3071804, 0.168836415}, //
+
60238 {4.30270004, 0.169550002}, //
+
60239 {4.29977226, 0.170253083}, //
+
60240 {4.2970109, 0.170873463}, //
+
60241 {4.2944169, 0.171411112}, //
+
60242 {4.29198885, 0.171866044}, //
+
60243 {4.28972769, 0.172238275}, //
+
60244 {4.28763342, 0.172527775}, //
+
60245 {4.28570557, 0.172734573}, //
+
60246 {4.28394461, 0.172858641}, //
+
60247 {4.28235006, 0.172900006}, //
+
60248 {4.25524998, 0.172900006}, //
+
60249 {4.26089382, 0.175040737}, //
+
60250 {4.26729202, 0.176929623}, //
+
60251 {4.27444458, 0.178566664}, //
+
60252 {4.28235102, 0.179951847}, //
+
60253 {4.29101229, 0.181085184}, //
+
60254 {4.30042791, 0.181966662}, //
+
60255 {4.31059742, 0.182596296}, //
+
60256 {4.32152176, 0.18297407}, //
+
60257 {4.33319998, 0.1831}, //
+
60258 {4.33837271, 0.182449386}, //
+
60259 {4.34333563, 0.182008639}, //
+
60260 {4.34808874, 0.181777775}, //
+
60261 {4.35263205, 0.181756794}, //
+
60262 {4.35696554, 0.181945682}, //
+
60263 {4.36108875, 0.182344452}, //
+
60264 {4.36500263, 0.182953089}, //
+
60265 {4.36870623, 0.18377161}, //
+
60266 {4.37220001, 0.184799999}, //
+
60267 {4.37552643, 0.18603766}, //
+
60268 {4.37872839, 0.187483951}, //
+
60269 {4.38180542, 0.189138889}, //
+
60270 {4.384758, 0.191002473}, //
+
60271 {4.38758564, 0.193074688}, //
+
60272 {4.39028883, 0.195355549}, //
+
60273 {4.39286709, 0.197845057}, //
+
60274 {4.39532089, 0.20054321}, //
+
60275 {4.39764977, 0.203449994}, //
+
60276 {4.39846802, 0.204183951}, //
+
60277 {4.39941072, 0.204874694}, //
+
60278 {4.40047789, 0.205522224}, //
+
60279 {4.40166998, 0.206126541}, //
+
60280 {4.40298653, 0.206687659}, //
+
60281 {4.40442801, 0.207205549}, //
+
60282 {4.40599394, 0.20768024}, //
+
60283 {4.4076848, 0.208111733}, //
+
60284 {4.40950012, 0.208499998}, //
+
60285 {4.41134644, 0.208877772}, //
+
60286 {4.4131074, 0.209255561}, //
+
60287 {4.41478348, 0.209633335}, //
+
60288 {4.41637421, 0.21001111}, //
+
60289 {4.41787958, 0.210388884}, //
+
60290 {4.41930008, 0.210766673}, //
+
60291 {4.42063522, 0.211144447}, //
+
60292 {4.42188501, 0.211522222}, //
+
60293 {4.42304993, 0.211899996}, //
+
60294 {4.42418337, 0.212235808}, //
+
60295 {4.42531681, 0.212487653}, //
+
60296 {4.42644978, 0.212655559}, //
+
60297 {4.42758322, 0.212739512}, //
+
60298 {4.42871666, 0.212739512}, //
+
60299 {4.4298501, 0.212655559}, //
+
60300 {4.43098354, 0.212487653}, //
+
60301 {4.43211651, 0.212235808}, //
+
60302 {4.43324995, 0.211899996}, //
+
60303 {4.43432045, 0.211543217}, //
+
60304 {4.43608332, 0.21095556}, //
+
60305 {4.43778324, 0.210388884}, //
+
60306 {4.43809795, 0.21028395}, //
+
60307 {4.43828726, 0.210220993}, //
+
60308 {4.4383502, 0.210199997}, //
+
60309 {4.4383502, 0.210199997}, //
+
60310 {4.4383502, 0.210199997}, //
+
60311 {4.43826628, 0.210199997}, //
+
60312 });
+
60313 polys.push_back({
+
60314 {4.25496626, 0.0930814818}, //
+
60315 {4.2582922, 0.0946537033}, //
+
60316 {4.26182795, 0.0962666646}, //
+
60317 {4.2655735, 0.0979203731}, //
+
60318 {4.26952887, 0.0996148139}, //
+
60319 {4.27369452, 0.101350002}, //
+
60320 {4.27806997, 0.103125922}, //
+
60321 {4.28265476, 0.10494259}, //
+
60322 {4.28744984, 0.106799997}, //
+
60323 {4.29230785, 0.108625308}, //
+
60324 {4.29708195, 0.110323459}, //
+
60325 {4.30177212, 0.111894444}, //
+
60326 {4.30637836, 0.113338269}, //
+
60327 {4.31090069, 0.114654936}, //
+
60328 {4.31533909, 0.115844443}, //
+
60329 {4.31969309, 0.116906792}, //
+
60330 {4.32396364, 0.117841974}, //
+
60331 {4.3281498, 0.118649997}, //
+
60332 {4.33218956, 0.119363584}, //
+
60333 {4.33601904, 0.11999321}, //
+
60334 {4.33963871, 0.12053889}, //
+
60335 {4.34304857, 0.121000618}, //
+
60336 {4.34624863, 0.121378392}, //
+
60337 {4.34923887, 0.121672221}, //
+
60338 {4.35201931, 0.121882096}, //
+
60339 {4.35458946, 0.122008026}, //
+
60340 {4.35694981, 0.122050002}, //
+
60341 {4.35858631, 0.122175306}, //
+
60342 {4.36047363, 0.122551233}, //
+
60343 {4.36261129, 0.123177774}, //
+
60344 {4.36499929, 0.124054939}, //
+
60345 {4.36763811, 0.125182718}, //
+
60346 {4.37052774, 0.126561105}, //
+
60347 {4.37366772, 0.12819013}, //
+
60348 {4.37705851, 0.130069748}, //
+
60349 {4.38070011, 0.132200003}, //
+
60350 {4.38446665, 0.134487033}, //
+
60351 {4.38823318, 0.136814818}, //
+
60352 {4.3920002, 0.139183328}, //
+
60353 {4.39576674, 0.141592592}, //
+
60354 {4.39953327, 0.144042596}, //
+
60355 {4.40329981, 0.14653334}, //
+
60356 {4.40706682, 0.149064809}, //
+
60357 {4.41083336, 0.151637033}, //
+
60358 {4.4145999, 0.154249996}, //
+
60359 {4.41819954, 0.156789511}, //
+
60360 {4.42146397, 0.159119129}, //
+
60361 {4.42439461, 0.161238894}, //
+
60362 {4.42699003, 0.163148761}, //
+
60363 {4.42925119, 0.16484876}, //
+
60364 {4.43117762, 0.166338891}, //
+
60365 {4.43276978, 0.167619139}, //
+
60366 {4.43402719, 0.168689504}, //
+
60367 {4.43494987, 0.169550002}, //
+
60368 {4.43572569, 0.169591352}, //
+
60369 {4.43654251, 0.169715434}, //
+
60370 {4.43739986, 0.169922218}, //
+
60371 {4.43829823, 0.170211732}, //
+
60372 {4.43923712, 0.170583948}, //
+
60373 {4.44021654, 0.171038896}, //
+
60374 {4.44123697, 0.171576545}, //
+
60375 {4.44229794, 0.17219691}, //
+
60376 {4.44339991, 0.172900006}, //
+
60377 {4.44453287, 0.173634574}, //
+
60378 {4.44566441, 0.174327165}, //
+
60379 {4.44679451, 0.174977779}, //
+
60380 {4.44792366, 0.175586417}, //
+
60381 {4.44905138, 0.176153094}, //
+
60382 {4.45017767, 0.176677778}, //
+
60383 {4.45130301, 0.177160487}, //
+
60384 {4.45242739, 0.177601233}, //
+
60385 {4.45354986, 0.178000003}, //
+
60386 {4.45466232, 0.178356797}, //
+
60387 {4.45573282, 0.178671598}, //
+
60388 {4.45676088, 0.178944439}, //
+
60389 {4.45774746, 0.179175302}, //
+
60390 {4.45869207, 0.179364204}, //
+
60391 {4.45959425, 0.179511115}, //
+
60392 {4.46045494, 0.179616049}, //
+
60393 {4.46127367, 0.179679006}, //
+
60394 {4.46204996, 0.179700002}, //
+
60395 {4.46276379, 0.179658026}, //
+
60396 {4.46339321, 0.179532096}, //
+
60397 {4.46393871, 0.179322228}, //
+
60398 {4.46440077, 0.179028392}, //
+
60399 {4.46477842, 0.178650618}, //
+
60400 {4.46507215, 0.17818889}, //
+
60401 {4.46528196, 0.17764321}, //
+
60402 {4.46540785, 0.177013576}, //
+
60403 {4.46544981, 0.176300004}, //
+
60404 {4.46532488, 0.17550309}, //
+
60405 {4.46494865, 0.17462346}, //
+
60406 {4.46432209, 0.173661113}, //
+
60407 {4.46344519, 0.17261605}, //
+
60408 {4.46231747, 0.17148827}, //
+
60409 {4.46093893, 0.170277774}, //
+
60410 {4.45931005, 0.168984562}, //
+
60411 {4.45743036, 0.167608649}, //
+
60412 {4.45529985, 0.166150004}, //
+
60413 {4.44925547, 0.160105556}, //
+
60414 {4.44795418, 0.158804327}, //
+
60415 {4.44656897, 0.15741913}, //
+
60416 {4.44509983, 0.155949995}, //
+
60417 {4.44131231, 0.152959257}, //
+
60418 {4.43748283, 0.15000926}, //
+
60419 {4.43361092, 0.147100002}, //
+
60420 {4.42969751, 0.144231483}, //
+
60421 {4.42574215, 0.141403705}, //
+
60422 {4.42174435, 0.138616666}, //
+
60423 {4.41770506, 0.135870367}, //
+
60424 {4.41362333, 0.133164808}, //
+
60425 {4.40950012, 0.130500004}, //
+
60426 {4.40525103, 0.127887651}, //
+
60427 {4.40079403, 0.12531729}, //
+
60428 {4.3961277, 0.122788891}, //
+
60429 {4.39125299, 0.120302469}, //
+
60430 {4.38616991, 0.117858022}, //
+
60431 {4.38087797, 0.115455553}, //
+
60432 {4.37537718, 0.11309506}, //
+
60433 {4.36966801, 0.110776544}, //
+
60434 {4.36374998, 0.108499996}, //
+
60435 {4.35916471, 0.107744448}, //
+
60436 {4.35445356, 0.106988892}, //
+
60437 {4.34961653, 0.106233336}, //
+
60438 {4.34465361, 0.10547778}, //
+
60439 {4.3395648, 0.104722224}, //
+
60440 {4.33435011, 0.103966668}, //
+
60441 {4.32900906, 0.103211112}, //
+
60442 {4.32354259, 0.102455556}, //
+
60443 {4.31794977, 0.1017}, //
+
60444 {4.3123889, 0.100954935}, //
+
60445 {4.30699444, 0.10020864}, //
+
60446 {4.30176687, 0.0994611084}, //
+
60447 {4.29670572, 0.0987123474}, //
+
60448 {4.29181099, 0.0979623422}, //
+
60449 {4.28708315, 0.0972111076}, //
+
60450 {4.2825222, 0.0964586437}, //
+
60451 {4.27812767, 0.0957049355}, //
+
60452 {4.27390003, 0.094949998}, //
+
60453 {4.26994371, 0.0942364186}, //
+
60454 {4.2663641, 0.0936067924}, //
+
60455 {4.26316118, 0.0930611119}, //
+
60456 {4.26033449, 0.0925993845}, //
+
60457 {4.2578845, 0.0922216028}, //
+
60458 {4.25581121, 0.0919277743}, //
+
60459 {4.25411415, 0.0917178988}, //
+
60460 {4.25279379, 0.0915919766}, //
+
60461 {4.25185013, 0.09155}, //
+
60462 });
+
60463 polys.push_back({
+
60464 {4.41420555, 0.0781777799}, //
+
60465 {4.42068958, 0.0815901235}, //
+
60466 {4.42708969, 0.0855456814}, //
+
60467 {4.4334054, 0.0900444463}, //
+
60468 {4.43963766, 0.0950864181}, //
+
60469 {4.445786, 0.100671604}, //
+
60470 {4.45184994, 0.106799997}, //
+
60471 {4.45771599, 0.113105558}, //
+
60472 {4.4632473, 0.119199999}, //
+
60473 {4.46844435, 0.125083327}, //
+
60474 {4.47330666, 0.130755559}, //
+
60475 {4.4778347, 0.13621667}, //
+
60476 {4.48202801, 0.141466662}, //
+
60477 {4.48588657, 0.14650555}, //
+
60478 {4.4894104, 0.151333332}, //
+
60479 {4.49259996, 0.155949995}, //
+
60480 {4.49324036, 0.155100003}, //
+
60481 {4.49367142, 0.154038891}, //
+
60482 {4.49389458, 0.15276666}, //
+
60483 {4.49390841, 0.151283339}, //
+
60484 {4.49371433, 0.149588883}, //
+
60485 {4.49331093, 0.147683337}, //
+
60486 {4.49269915, 0.145566672}, //
+
60487 {4.49187899, 0.143238887}, //
+
60488 {4.49084997, 0.140699998}, //
+
60489 {4.48966503, 0.138045684}, //
+
60490 {4.48835373, 0.135349378}, //
+
60491 {4.48691654, 0.132611111}, //
+
60492 {4.48535347, 0.129830867}, //
+
60493 {4.48366499, 0.127008647}, //
+
60494 {4.48185015, 0.124144442}, //
+
60495 {4.47990942, 0.121238269}, //
+
60496 {4.47784281, 0.118290126}, //
+
60497 {4.47564983, 0.1153}, //
+
60498 {4.47390842, 0.112299383}, //
+
60499 {4.47170687, 0.109341979}, //
+
60500 {4.46904421, 0.106427781}, //
+
60501 {4.4659214, 0.103556789}, //
+
60502 {4.46233845, 0.100729011}, //
+
60503 {4.45829439, 0.0979444459}, //
+
60504 {4.45379019, 0.0952030867}, //
+
60505 {4.44882536, 0.0925049409}, //
+
60506 {4.44339991, 0.089850001}, //
+
60507 {4.43771315, 0.087258026}, //
+
60508 {4.43194056, 0.0847487673}, //
+
60509 {4.42608356, 0.082322225}, //
+
60510 {4.42014074, 0.0799783915}, //
+
60511 {4.41411304, 0.0777172819}, //
+
60512 {4.40889406, 0.0758574978}, //
+
60513 });
+
60514 polys.push_back({
+
60515 {1.06465006, 0.132249996}, //
+
60516 {1.0654, 0.132438883}, //
+
60517 {1.0659833, 0.132585809}, //
+
60518 {1.06673336, 0.132774696}, //
+
60519 {1.06764996, 0.133005559}, //
+
60520 {1.06998336, 0.133593217}, //
+
60521 {1.07140005, 0.133949995}, //
+
60522 {1.07291114, 0.134327158}, //
+
60523 {1.07442224, 0.134703085}, //
+
60524 {1.07593334, 0.135077775}, //
+
60525 {1.07744443, 0.135451227}, //
+
60526 {1.07895553, 0.135823458}, //
+
60527 {1.08046663, 0.136194438}, //
+
60528 {1.08197773, 0.136564195}, //
+
60529 {1.08348894, 0.136932716}, //
+
60530 {1.08500004, 0.1373}, //
+
60531 {1.08651054, 0.137656793}, //
+
60532 {1.08801973, 0.13797161}, //
+
60533 {1.08952773, 0.13824445}, //
+
60534 {1.09103453, 0.138475314}, //
+
60535 {1.09254014, 0.138664201}, //
+
60536 {1.09404445, 0.138811111}, //
+
60537 {1.09554756, 0.138916045}, //
+
60538 {1.09704936, 0.138979018}, //
+
60539 {1.09854996, 0.138999999}, //
+
60540 {1.10006046, 0.13969259}, //
+
60541 {1.10156977, 0.140259266}, //
+
60542 {1.10307777, 0.140699998}, //
+
60543 {1.10458457, 0.141014814}, //
+
60544 {1.10609007, 0.141203701}, //
+
60545 {1.10759449, 0.141266674}, //
+
60546 {1.10909748, 0.141203701}, //
+
60547 {1.1105994, 0.141014814}, //
+
60548 {1.11210001, 0.140699998}, //
+
60549 {1.11356914, 0.140343204}, //
+
60550 {1.11495435, 0.140028402}, //
+
60551 {1.11625552, 0.139755562}, //
+
60552 {1.11747289, 0.139524698}, //
+
60553 {1.11860621, 0.139335796}, //
+
60554 {1.11965561, 0.139188886}, //
+
60555 {1.12062097, 0.139083952}, //
+
60556 {1.12150252, 0.139020994}, //
+
60557 {1.12230003, 0.138999999}, //
+
60558 {1.12526977, 0.138958648}, //
+
60559 {1.12815678, 0.138834566}, //
+
60560 {1.13096106, 0.138627782}, //
+
60561 {1.13368273, 0.138338268}, //
+
60562 {1.13632166, 0.137966052}, //
+
60563 {1.13887775, 0.137511104}, //
+
60564 {1.14135122, 0.136973456}, //
+
60565 {1.14374197, 0.13635309}, //
+
60566 {1.14604998, 0.135649994}, //
+
60567 {1.15031171, 0.135649994}, //
+
60568 {1.15225554, 0.135649994}, //
+
60569 {1.16129994, 0.135649994}, //
+
60570 {1.16241169, 0.13569136}, //
+
60571 {1.16348028, 0.135815427}, //
+
60572 {1.1645056, 0.136022225}, //
+
60573 {1.16548765, 0.136311725}, //
+
60574 {1.16642654, 0.136683956}, //
+
60575 {1.16732228, 0.137138888}, //
+
60576 {1.16817474, 0.137676537}, //
+
60577 {1.16898394, 0.138296917}, //
+
60578 {1.16974998, 0.138999999}, //
+
60579 {1.16991794, 0.138999999}, //
+
60580 {1.17012775, 0.138999999}, //
+
60581 {1.1704216, 0.138999999}, //
+
60582 {1.17079937, 0.138999999}, //
+
60583 {1.17466116, 0.138999999}, //
+
60584 {1.17617226, 0.138999999}, //
+
60585 {1.1769278, 0.138999999}, //
+
60586 {1.17995, 0.138999999}, //
+
60587 {1.17988706, 0.138958022}, //
+
60588 {1.17837596, 0.137950614}, //
+
60589 {1.17686486, 0.136943206}, //
+
60590 {1.17592037, 0.136313587}, //
+
60591 {1.17484999, 0.135600001}, //
+
60592 {1.1736747, 0.134833947}, //
+
60593 {1.17241538, 0.134024695}, //
+
60594 {1.17107224, 0.133172229}, //
+
60595 {1.16964507, 0.13227655}, //
+
60596 {1.16813397, 0.131337658}, //
+
60597 {1.16653883, 0.130355552}, //
+
60598 {1.16485989, 0.129330248}, //
+
60599 {1.1630969, 0.12826173}, //
+
60600 {1.16125, 0.127149999}, //
+
60601 {1.15930927, 0.126079634}, //
+
60602 {1.15724254, 0.125135183}, //
+
60603 {1.15505004, 0.12431667}, //
+
60604 {1.15273154, 0.123624071}, //
+
60605 {1.15028703, 0.12305741}, //
+
60606 {1.14771664, 0.122616664}, //
+
60607 {1.14502037, 0.122301854}, //
+
60608 {1.1421982, 0.12211296}, //
+
60609 {1.13925004, 0.122050002}, //
+
60610 {1.13632226, 0.122050002}, //
+
60611 {1.13096666, 0.122050002}, //
+
60612 {1.12853885, 0.122050002}, //
+
60613 {1.11889994, 0.122050002}, //
+
60614 {1.11742032, 0.122029014}, //
+
60615 {1.11598146, 0.121966049}, //
+
60616 {1.11458337, 0.121861108}, //
+
60617 {1.11322594, 0.121714197}, //
+
60618 {1.11190927, 0.12152531}, //
+
60619 {1.11063337, 0.121294446}, //
+
60620 {1.10939813, 0.121021606}, //
+
60621 {1.10820365, 0.120706789}, //
+
60622 {1.10704994, 0.120350003}, //
+
60623 {1.10589564, 0.119951852}, //
+
60624 {1.10469937, 0.11951296}, //
+
60625 {1.10346115, 0.119033337}, //
+
60626 {1.10218084, 0.118512966}, //
+
60627 {1.10085869, 0.117951855}, //
+
60628 {1.09949446, 0.117349997}, //
+
60629 {1.09808826, 0.116707407}, //
+
60630 {1.09664011, 0.116024077}, //
+
60631 {1.09514999, 0.1153}, //
+
60632 {1.09224319, 0.113809876}, //
+
60633 {1.08954501, 0.112361729}, //
+
60634 {1.08705556, 0.110955559}, //
+
60635 {1.08477473, 0.109591357}, //
+
60636 {1.08270252, 0.108269133}, //
+
60637 {1.08083892, 0.106988892}, //
+
60638 {1.07918394, 0.10575062}, //
+
60639 {1.07773769, 0.104554318}, //
+
60640 {1.07650006, 0.103399999}, //
+
60641 {1.07300866, 0.0999086425}, //
+
60642 {1.07244754, 0.0993475318}, //
+
60643 {1.07201111, 0.098911114}, //
+
60644 {1.07169938, 0.0985993817}, //
+
60645 {1.07145, 0.0983500034}, //
+
60646 });
+
60647 polys.push_back({
+
60648 {0.91393888, 0.0610500015}, //
+
60649 {0.912050009, 0.0610500015}, //
+
60650 {0.91128397, 0.0610913597}, //
+
60651 {0.910474718, 0.0612154305}, //
+
60652 {0.909622252, 0.0614222214}, //
+
60653 {0.908726573, 0.0617117286}, //
+
60654 {0.907787681, 0.0620839521}, //
+
60655 {0.906805575, 0.062538892}, //
+
60656 {0.905780256, 0.0630765408}, //
+
60657 {0.904711723, 0.0636969134}, //
+
60658 {0.903599977, 0.0644000024}, //
+
60659 {0.902487636, 0.0651555583}, //
+
60660 {0.901417255, 0.0659111142}, //
+
60661 {0.900388896, 0.0666666701}, //
+
60662 {0.89940244, 0.0674222186}, //
+
60663 {0.898458004, 0.0681777745}, //
+
60664 {0.89755553, 0.0689333305}, //
+
60665 {0.896695077, 0.0696888864}, //
+
60666 {0.895876527, 0.0704444423}, //
+
60667 {0.895099998, 0.0711999983}, //
+
60668 {0.894354939, 0.0719555542}, //
+
60669 {0.89360863, 0.0727111101}, //
+
60670 {0.892861128, 0.073466666}, //
+
60671 {0.892112374, 0.074222222}, //
+
60672 {0.891362369, 0.0749777779}, //
+
60673 {0.890611112, 0.0757333338}, //
+
60674 {0.889858663, 0.0764888898}, //
+
60675 {0.889104962, 0.0772444457}, //
+
60676 {0.88835001, 0.0780000016}, //
+
60677 {0.88835001, 0.0888635814}, //
+
60678 {0.88835001, 0.09155}, //
+
60679 {0.884194434, 0.09155}, //
+
60680 {0.883438885, 0.09155}, //
+
60681 {0.878149986, 0.09155}, //
+
60682 {0.871372223, 0.0909203738}, //
+
60683 {0.86459446, 0.0905425921}, //
+
60684 {0.857816696, 0.0904166698}, //
+
60685 {0.851038873, 0.0905425921}, //
+
60686 {0.84426111, 0.0909203738}, //
+
60687 {0.837483346, 0.09155}, //
+
60688 {0.830705583, 0.0924314782}, //
+
60689 {0.82392776, 0.0935648158}, //
+
60690 {0.817149997, 0.094949998}, //
+
60691 {0.808903098, 0.0969969109}, //
+
60692 {0.800740123, 0.0986265466}, //
+
60693 {0.79266113, 0.0998388901}, //
+
60694 {0.784666061, 0.100633949}, //
+
60695 {0.776754916, 0.101011731}, //
+
60696 {0.768927753, 0.10097222}, //
+
60697 {0.761184573, 0.100515433}, //
+
60698 {0.753525317, 0.0996413603}, //
+
60699 {0.745949984, 0.0983500034}, //
+
60700 {0.743683934, 0.0975524709}, //
+
60701 {0.741419137, 0.0966709852}, //
+
60702 {0.739155531, 0.0957055539}, //
+
60703 {0.736893237, 0.0946561694}, //
+
60704 {0.734632075, 0.0935228392}, //
+
60705 {0.732372224, 0.0923055559}, //
+
60706 {0.730113566, 0.0910043195}, //
+
60707 {0.727856159, 0.0896191373}, //
+
60708 {0.725600004, 0.0881500021}, //
+
60709 {0.723291993, 0.0873944461}, //
+
60710 {0.720901251, 0.0866388902}, //
+
60711 {0.718427777, 0.0858833343}, //
+
60712 {0.715871632, 0.0851277784}, //
+
60713 {0.713232696, 0.0843722224}, //
+
60714 {0.710511088, 0.0836166665}, //
+
60715 {0.707706809, 0.0828611106}, //
+
60716 {0.704819739, 0.0821055546}, //
+
60717 {0.701849997, 0.0813499987}, //
+
60718 {0.698880851, 0.0806888863}, //
+
60719 {0.695995688, 0.0801944435}, //
+
60720 {0.693194449, 0.0798666701}, //
+
60721 {0.690477133, 0.0797055587}, //
+
60722 {0.6878438, 0.0797111094}, //
+
60723 {0.685294449, 0.079883337}, //
+
60724 {0.682829022, 0.0802222192}, //
+
60725 {0.680447519, 0.0807277784}, //
+
60726 {0.678149998, 0.0813999996}, //
+
60727 {0.679650605, 0.0814413577}, //
+
60728 {0.681152463, 0.0815654323}, //
+
60729 {0.682655573, 0.0817722231}, //
+
60730 {0.684159875, 0.0820617303}, //
+
60731 {0.685665429, 0.0824339539}, //
+
60732 {0.687172234, 0.0828888863}, //
+
60733 {0.688680232, 0.0834265426}, //
+
60734 {0.690189481, 0.0840469152}, //
+
60735 {0.691699982, 0.0847499967}, //
+
60736 {0.694711089, 0.0855265409}, //
+
60737 {0.697722197, 0.0863450617}, //
+
60738 {0.700733304, 0.087205559}, //
+
60739 {0.703744471, 0.0881080255}, //
+
60740 {0.706755579, 0.0890524685}, //
+
60741 {0.709766686, 0.0900388882}, //
+
60742 {0.712777793, 0.0910672843}, //
+
60743 {0.715788901, 0.0921376571}, //
+
60744 {0.718800008, 0.093249999}, //
+
60745 {0.721737683, 0.0944037065}, //
+
60746 {0.724506199, 0.0955981463}, //
+
60747 {0.727105558, 0.0968333334}, //
+
60748 {0.729535818, 0.0981092602}, //
+
60749 {0.73179692, 0.0994259268}, //
+
60750 {0.733888865, 0.100783333}, //
+
60751 {0.73581171, 0.102181479}, //
+
60752 {0.737565458, 0.103620373}, //
+
60753 {0.739149988, 0.105099998}, //
+
60754 {0.740009904, 0.105938889}, //
+
60755 {0.741078377, 0.106944442}, //
+
60756 {0.742355585, 0.108116664}, //
+
60757 {0.74384135, 0.109455556}, //
+
60758 {0.745535791, 0.110961109}, //
+
60759 {0.747438908, 0.112633333}, //
+
60760 {0.749550641, 0.114472225}, //
+
60761 {0.75187099, 0.11647778}, //
+
60762 {0.754400015, 0.118649997}, //
+
60763 {0.7570858, 0.120853089}, //
+
60764 {0.759854317, 0.122929014}, //
+
60765 {0.762705564, 0.124877781}, //
+
60766 {0.765639484, 0.126699388}, //
+
60767 {0.768656194, 0.128393829}, //
+
60768 {0.771755576, 0.129961118}, //
+
60769 {0.77493763, 0.131401241}, //
+
60770 {0.778202474, 0.132714197}, //
+
60771 {0.78154999, 0.133900002}, //
+
60772 {0.784792602, 0.134929016}, //
+
60773 {0.787742615, 0.135749385}, //
+
60774 {0.790400028, 0.136361107}, //
+
60775 {0.792764843, 0.136764199}, //
+
60776 {0.794837058, 0.136958644}, //
+
60777 {0.796616673, 0.136944443}, //
+
60778 {0.79810369, 0.136721611}, //
+
60779 {0.799298167, 0.136290118}, //
+
60780 {0.800199986, 0.135649994}, //
+
60781 {0.806768537, 0.134222835}, //
+
60782 {0.812918544, 0.132963583}, //
+
60783 {0.818650007, 0.131872222}, //
+
60784 {0.823962986, 0.130948767}, //
+
60785 {0.828857422, 0.130193204}, //
+
60786 {0.833333313, 0.129605561}, //
+
60787 {0.837390721, 0.129185796}, //
+
60788 {0.841029644, 0.128933951}, //
+
60789 {0.844250023, 0.128849998}, //
+
60790 {0.846453071, 0.128849998}, //
+
60791 {0.848529041, 0.128849998}, //
+
60792 {0.859499991, 0.128849998}, //
+
60793 {0.860612333, 0.128766045}, //
+
60794 {0.861682713, 0.1285142}, //
+
60795 {0.862711132, 0.12809445}, //
+
60796 {0.863697529, 0.127506793}, //
+
60797 {0.864641964, 0.126751229}, //
+
60798 {0.865544438, 0.125827774}, //
+
60799 {0.866404951, 0.124736421}, //
+
60800 {0.867223442, 0.123477161}, //
+
60801 {0.867999971, 0.122050002}, //
+
60802 {0.86946851, 0.121336423}, //
+
60803 {0.870851874, 0.120706789}, //
+
60804 {0.872150004, 0.120161109}, //
+
60805 {0.873362958, 0.119699381}, //
+
60806 {0.874490738, 0.119321607}, //
+
60807 {0.875533342, 0.119027779}, //
+
60808 {0.876490712, 0.118817903}, //
+
60809 {0.877362967, 0.118691973}, //
+
60810 {0.878149986, 0.118649997}, //
+
60811 {0.878149986, 0.1153}, //
+
60812 {0.878233969, 0.115132101}, //
+
60813 {0.878485799, 0.114628397}, //
+
60814 {0.87984997, 0.111900002}, //
+
60815 {0.880290747, 0.111144446}, //
+
60816 {0.880857408, 0.11038889}, //
+
60817 {0.881550014, 0.109633334}, //
+
60818 {0.882368505, 0.108877778}, //
+
60819 {0.883312941, 0.108122222}, //
+
60820 {0.884383321, 0.107366666}, //
+
60821 {0.885579646, 0.10661111}, //
+
60822 {0.886901855, 0.105855554}, //
+
60823 {0.88835001, 0.105099998}, //
+
60824 {0.891277134, 0.103662349}, //
+
60825 {0.894036412, 0.102349386}, //
+
60826 {0.896627784, 0.101161107}, //
+
60827 {0.899051249, 0.10009753}, //
+
60828 {0.901306808, 0.0991586447}, //
+
60829 {0.903394461, 0.0983444452}, //
+
60830 {0.905314207, 0.0976549387}, //
+
60831 {0.907066047, 0.0970901251}, //
+
60832 {0.908649981, 0.0966499969}, //
+
60833 {0.914106786, 0.0952858031}, //
+
60834 {0.915114224, 0.0950339511}, //
+
60835 {0.915366054, 0.0949709862}, //
+
60836 {0.915449977, 0.094949998}, //
+
60837 {0.915449977, 0.0610500015}, //
+
60838 {0.914778411, 0.0610500015}, //
+
60839 {0.914400637, 0.0610500015}, //
+
60840 });
+
60841 polys.push_back({
+
60842 {1.25904381, 0.0441833325}, //
+
60843 {1.25678647, 0.044433333}, //
+
60844 {1.25452781, 0.0448499992}, //
+
60845 {1.25226796, 0.045433335}, //
+
60846 {1.25000679, 0.0461833328}, //
+
60847 {1.24774444, 0.0471000001}, //
+
60848 {1.2454809, 0.0481833331}, //
+
60849 {1.24321604, 0.0494333319}, //
+
60850 {1.24094999, 0.0508500002}, //
+
60851 {1.23714137, 0.0515635796}, //
+
60852 {1.23324871, 0.0521932095}, //
+
60853 {1.22927225, 0.0527388901}, //
+
60854 {1.22521174, 0.0532006174}, //
+
60855 {1.22106731, 0.0535783954}, //
+
60856 {1.21683884, 0.0538722239}, //
+
60857 {1.21252656, 0.0540820993}, //
+
60858 {1.20813024, 0.0542080253}, //
+
60859 {1.20365, 0.0542499982}, //
+
60860 {1.19915926, 0.0549635813}, //
+
60861 {1.1947093, 0.0555932112}, //
+
60862 {1.19029999, 0.056138888}, //
+
60863 {1.18593144, 0.0566006191}, //
+
60864 {1.18160367, 0.0569783933}, //
+
60865 {1.17731667, 0.0572722219}, //
+
60866 {1.17307031, 0.0574820973}, //
+
60867 {1.16886485, 0.0576080233}, //
+
60868 {1.16470003, 0.0576499999}, //
+
60869 {1.16061795, 0.0576499999}, //
+
60870 {1.15666044, 0.0576499999}, //
+
60871 {1.13244998, 0.0576499999}, //
+
60872 {1.1260556, 0.0576499999}, //
+
60873 {1.12408948, 0.0576499999}, //
+
60874 {1.12220621, 0.0576499999}, //
+
60875 {1.12040555, 0.0576499999}, //
+
60876 {1.11868763, 0.0576499999}, //
+
60877 {1.11549997, 0.0576499999}, //
+
60878 {1.11404133, 0.0576290116}, //
+
60879 {1.11266541, 0.0575660504}, //
+
60880 {1.11137223, 0.0574611127}, //
+
60881 {1.11016178, 0.0573141985}, //
+
60882 {1.10903394, 0.0571253076}, //
+
60883 {1.10798883, 0.0568944439}, //
+
60884 {1.10702658, 0.0566216037}, //
+
60885 {1.10614693, 0.0563067906}, //
+
60886 {1.10535002, 0.0559500009}, //
+
60887 {1.10465741, 0.0556141958}, //
+
60888 {1.10409069, 0.0553623475}, //
+
60889 {1.10364997, 0.055194445}, //
+
60890 {1.10333514, 0.0551104955}, //
+
60891 {1.10314631, 0.0551104955}, //
+
60892 {1.10308337, 0.055194445}, //
+
60893 {1.10314631, 0.0553623475}, //
+
60894 {1.10333514, 0.0556141958}, //
+
60895 {1.10364997, 0.0559500009}, //
+
60896 {1.10413206, 0.0563487671}, //
+
60897 {1.10482287, 0.0567895062}, //
+
60898 {1.10572219, 0.0572722219}, //
+
60899 {1.10683024, 0.0577969141}, //
+
60900 {1.10814691, 0.0583635792}, //
+
60901 {1.10967219, 0.0589722209}, //
+
60902 {1.11140621, 0.0596228391}, //
+
60903 {1.11334872, 0.0603154339}, //
+
60904 {1.11549997, 0.0610500015}, //
+
60905 {1.12081909, 0.0617950633}, //
+
60906 {1.12622094, 0.0625413582}, //
+
60907 {1.13170552, 0.0632888898}, //
+
60908 {1.13727283, 0.0640376508}, //
+
60909 {1.14292288, 0.0647876561}, //
+
60910 {1.14865553, 0.0655388907}, //
+
60911 {1.15447104, 0.0662913546}, //
+
60912 {1.16036916, 0.0670450628}, //
+
60913 {1.16635001, 0.0678000003}, //
+
60914 {1.17242467, 0.0684716031}, //
+
60915 {1.17858207, 0.068975307}, //
+
60916 {1.1848222, 0.0693111122}, //
+
60917 {1.19114506, 0.069479011}, //
+
60918 {1.19755065, 0.069479011}, //
+
60919 {1.20403886, 0.0693111122}, //
+
60920 {1.21060991, 0.068975307}, //
+
60921 {1.21726358, 0.0684716031}, //
+
60922 {1.22399998, 0.0678000003}, //
+
60923 {1.22630799, 0.0678629652}, //
+
60924 {1.22869873, 0.0680518523}, //
+
60925 {1.2311722, 0.0683666691}, //
+
60926 {1.23372841, 0.0688074082}, //
+
60927 {1.23636723, 0.069374077}, //
+
60928 {1.23908889, 0.0700666681}, //
+
60929 {1.24189317, 0.0708851889}, //
+
60930 {1.2447803, 0.0718296319}, //
+
60931 {1.24775004, 0.0728999972}, //
+
60932 {1.25074017, 0.0740327165}, //
+
60933 {1.25368822, 0.0751641989}, //
+
60934 {1.25659442, 0.0762944445}, //
+
60935 {1.25945866, 0.0774234533}, //
+
60936 {1.26228082, 0.0785512328}, //
+
60937 {1.26506114, 0.0796777755}, //
+
60938 {1.26779938, 0.0808030888}, //
+
60939 {1.27049565, 0.0819271579}, //
+
60940 {1.27314997, 0.0830499977}, //
+
60941 {1.27573085, 0.0841833353}, //
+
60942 {1.27818453, 0.0853166655}, //
+
60943 {1.28051114, 0.0864500031}, //
+
60944 {1.28271055, 0.0875833333}, //
+
60945 {1.28478277, 0.0887166634}, //
+
60946 {1.28672779, 0.089850001}, //
+
60947 {1.28854573, 0.0909833312}, //
+
60948 {1.29023647, 0.0921166688}, //
+
60949 {1.29180002, 0.093249999}, //
+
60950 {1.2944864, 0.0952648148}, //
+
60951 {1.29557776, 0.0960833356}, //
+
60952 {1.29650128, 0.0967759266}, //
+
60953 {1.29725683, 0.0973425955}, //
+
60954 {1.29784441, 0.0977833346}, //
+
60955 {1.29826415, 0.0980981514}, //
+
60956 {1.29859996, 0.0983500034}, //
+
60957 {1.31215, 0.0644000024}, //
+
60958 {1.30846727, 0.0636129603}, //
+
60959 {1.3049525, 0.0627407432}, //
+
60960 {1.30160558, 0.0617833324}, //
+
60961 {1.29842651, 0.0607407391}, //
+
60962 {1.2954154, 0.0596129633}, //
+
60963 {1.29257226, 0.0584000014}, //
+
60964 {1.28989697, 0.0571018532}, //
+
60965 {1.28738952, 0.0557185188}, //
+
60966 {1.28505003, 0.0542499982}, //
+
60967 {1.28425252, 0.0535154305}, //
+
60968 {1.28337097, 0.0528228395}, //
+
60969 {1.28240561, 0.0521722212}, //
+
60970 {1.28135622, 0.0515635796}, //
+
60971 {1.28022289, 0.0509969145}, //
+
60972 {1.27900553, 0.0504722223}, //
+
60973 {1.27770436, 0.0499895066}, //
+
60974 {1.27631915, 0.0495487638}, //
+
60975 {1.27485001, 0.0491500013}, //
+
60976 {1.2733494, 0.0487518534}, //
+
60977 {1.27184749, 0.0483129621}, //
+
60978 {1.2703445, 0.0478333347}, //
+
60979 {1.26884007, 0.0473129638}, //
+
60980 {1.26733458, 0.0467518531}, //
+
60981 {1.26582778, 0.0461499989}, //
+
60982 {1.26431978, 0.0455074087}, //
+
60983 {1.26281047, 0.044824075}, //
+
60984 {1.26129997, 0.0441000015}, //
+
60985 });
+
60986 polys.push_back({
+
60987 {4.33941221, 0.0610500015}, //
+
60988 {4.34000015, 0.0610500015}, //
+
60989 {4.34088087, 0.0610913597}, //
+
60990 {4.34201241, 0.0612154305}, //
+
60991 {4.34339428, 0.0614222214}, //
+
60992 {4.34502697, 0.0617117286}, //
+
60993 {4.34691048, 0.0620839521}, //
+
60994 {4.34904432, 0.062538892}, //
+
60995 {4.35142899, 0.0630765408}, //
+
60996 {4.35406399, 0.0636969134}, //
+
60997 {4.35694981, 0.0644000024}, //
+
60998 {4.36075878, 0.0644839481}, //
+
60999 {4.3646512, 0.0647358}, //
+
61000 {4.36862755, 0.0651555583}, //
+
61001 {4.37268829, 0.0657432079}, //
+
61002 {4.37683249, 0.0664987639}, //
+
61003 {4.38106108, 0.0674222186}, //
+
61004 {4.38537359, 0.0685135797}, //
+
61005 {4.38976955, 0.0697728395}, //
+
61006 {4.39424992, 0.0711999983}, //
+
61007 {4.3974123, 0.0720369145}, //
+
61008 {4.3955183, 0.0714302436}, //
+
61009 {4.38915014, 0.0694999993}, //
+
61010 {4.38293839, 0.067726545}, //
+
61011 {4.37710285, 0.0661617294}, //
+
61012 {4.3716445, 0.0648055524}, //
+
61013 {4.36656237, 0.0636580214}, //
+
61014 {4.36185694, 0.0627191365}, //
+
61015 {4.35752773, 0.0619888902}, //
+
61016 {4.35357523, 0.0614672825}, //
+
61017 {4.34999943, 0.0611543208}, //
+
61018 {4.34679985, 0.0610500015}, //
+
61019 {4.34151125, 0.0610500015}, //
+
61020 {4.34041977, 0.0610500015}, //
+
61021 {4.33966398, 0.0610500015}, //
+
61022 });
+
61023 polys.push_back({
+
61024 {0.758194447, -0.0286333337}, //
+
61025 {0.755288243, -0.0283055548}, //
+
61026 {0.752340138, -0.0278111119}, //
+
61027 {0.749350011, -0.0271499995}, //
+
61028 {0.746349394, -0.0263104942}, //
+
61029 {0.743391991, -0.0253030863}, //
+
61030 {0.7404778, -0.0241277777}, //
+
61031 {0.737606764, -0.0227845684}, //
+
61032 {0.734779, -0.0212734565}, //
+
61033 {0.73199445, -0.019594444}, //
+
61034 {0.729253113, -0.0177475307}, //
+
61035 {0.72655493, -0.0157327168}, //
+
61036 {0.72390002, -0.0135500003}, //
+
61037 {0.721287012, -0.0112524694}, //
+
61038 {0.718714833, -0.00887098722}, //
+
61039 {0.716183305, -0.00640555564}, //
+
61040 {0.713692605, -0.00385617279}, //
+
61041 {0.711242616, -0.00122283946}, //
+
61042 {0.708833337, 0.00149444444}, //
+
61043 {0.706464827, 0.00429567881}, //
+
61044 {0.704137027, 0.00718086399}, //
+
61045 {0.701849997, 0.0101500005}, //
+
61046 {0.699635804, 0.0116814813}, //
+
61047 {0.697504342, 0.0132537037}, //
+
61048 {0.695455551, 0.0148666669}, //
+
61049 {0.693489492, 0.0165203698}, //
+
61050 {0.691606164, 0.0182148144}, //
+
61051 {0.689805567, 0.0199500006}, //
+
61052 {0.688087642, 0.0217259265}, //
+
61053 {0.686452448, 0.0235425923}, //
+
61054 {0.684899986, 0.0253999997}, //
+
61055 {0.683441341, 0.0271839499}, //
+
61056 {0.682065427, 0.0287580248}, //
+
61057 {0.680772245, 0.0301222224}, //
+
61058 {0.679561734, 0.0312765427}, //
+
61059 {0.678433955, 0.0322209895}, //
+
61060 {0.677388906, 0.0329555571}, //
+
61061 {0.67642653, 0.0334802456}, //
+
61062 {0.675546885, 0.0337950625}, //
+
61063 {0.67474997, 0.0339000002}, //
+
61064 {0.673910499, 0.0338790119}, //
+
61065 {0.672903061, 0.0338160507}, //
+
61066 {0.671727777, 0.0337111093}, //
+
61067 {0.670384586, 0.0335641988}, //
+
61068 {0.668873429, 0.0333753079}, //
+
61069 {0.667194426, 0.0331444442}, //
+
61070 {0.665347517, 0.032871604}, //
+
61071 {0.663332701, 0.0325567909}, //
+
61072 {0.661149979, 0.0322000012}, //
+
61073 {0.658893824, 0.0318222232}, //
+
61074 {0.656636417, 0.0314444453}, //
+
61075 {0.654377759, 0.0310666673}, //
+
61076 {0.652117908, 0.0306888893}, //
+
61077 {0.649856806, 0.0303111114}, //
+
61078 {0.647594452, 0.0299333334}, //
+
61079 {0.645330846, 0.0295555554}, //
+
61080 {0.643066049, 0.0291777775}, //
+
61081 {0.640799999, 0.0287999995}, //
+
61082 {0.638585806, 0.028453704}, //
+
61083 {0.636454344, 0.0281481482}, //
+
61084 {0.634405553, 0.0278833341}, //
+
61085 {0.632439494, 0.0276592597}, //
+
61086 {0.630556166, 0.0274759252}, //
+
61087 {0.628755569, 0.0273333341}, //
+
61088 {0.627037644, 0.0272314809}, //
+
61089 {0.625402451, 0.0271703713}, //
+
61090 {0.623849988, 0.0271499995}, //
+
61091 {0.622433305, 0.0271499995}, //
+
61092 {0.620100021, 0.0271499995}, //
+
61093 {0.619183362, 0.0271499995}, //
+
61094 {0.618433356, 0.0271499995}, //
+
61095 {0.61743331, 0.0271499995}, //
+
61096 {0.6171, 0.0271499995}, //
+
61097 {0.615215838, 0.034659043}, //
+
61098 {0.614911735, 0.0369160511}, //
+
61099 {0.614393294, 0.0408746041}, //
+
61100 {0.62045002, 0.0423999988}, //
+
61101 {0.621981502, 0.0427981466}, //
+
61102 {0.623553693, 0.043237038}, //
+
61103 {0.625166655, 0.0437166654}, //
+
61104 {0.626820385, 0.0442370363}, //
+
61105 {0.628514826, 0.0447981469}, //
+
61106 {0.630249977, 0.0454000011}, //
+
61107 {0.632025898, 0.0460425913}, //
+
61108 {0.633842587, 0.0467259251}, //
+
61109 {0.635699987, 0.0474499986}, //
+
61110 {0.637588263, 0.0481845662}, //
+
61111 {0.639475286, 0.048877161}, //
+
61112 {0.641361117, 0.0495277792}, //
+
61113 {0.643245697, 0.0501364209}, //
+
61114 {0.645129025, 0.050703086}, //
+
61115 {0.647011101, 0.0512277782}, //
+
61116 {0.648891985, 0.0517104939}, //
+
61117 {0.650771618, 0.052151233}, //
+
61118 {0.652649999, 0.0525499992}, //
+
61119 {0.654475927, 0.0529067889}, //
+
61120 {0.656175911, 0.0532216057}, //
+
61121 {0.65775001, 0.053494446}, //
+
61122 {0.659198165, 0.0537253097}, //
+
61123 {0.660520375, 0.0539141968}, //
+
61124 {0.66171664, 0.0540611111}, //
+
61125 {0.66278702, 0.0541660488}, //
+
61126 {0.663731456, 0.0542290136}, //
+
61127 {0.664550006, 0.0542499982}, //
+
61128 {0.666165411, 0.0534524694}, //
+
61129 {0.667989492, 0.0525709875}, //
+
61130 {0.670022249, 0.0516055562}, //
+
61131 {0.672263563, 0.0505561717}, //
+
61132 {0.674713552, 0.0494228378}, //
+
61133 {0.677372217, 0.0482055545}, //
+
61134 {0.680239499, 0.0469043218}, //
+
61135 {0.683315456, 0.0455191359}, //
+
61136 {0.686600029, 0.0440500006}, //
+
61137 {0.689926565, 0.0425080247}, //
+
61138 {0.693128407, 0.0408820994}, //
+
61139 {0.696205556, 0.039172221}, //
+
61140 {0.699158013, 0.0373783968}, //
+
61141 {0.701985776, 0.0355006158}, //
+
61142 {0.704688907, 0.0335388891}, //
+
61143 {0.707267284, 0.0314932093}, //
+
61144 {0.709720969, 0.02936358}, //
+
61145 {0.712050021, 0.0271499995}, //
+
61146 {0.713550627, 0.0256808642}, //
+
61147 {0.715052485, 0.0242956784}, //
+
61148 {0.716555536, 0.0229944438}, //
+
61149 {0.718059897, 0.0217771605}, //
+
61150 {0.719565451, 0.0206438266}, //
+
61151 {0.721072197, 0.019594444}, //
+
61152 {0.722580254, 0.0186290126}, //
+
61153 {0.724089503, 0.0177475307}, //
+
61154 {0.725600004, 0.0169500001}, //
+
61155 {0.731748164, 0.0133925928}, //
+
61156 {0.738148153, 0.0102537042}, //
+
61157 {0.744799972, 0.00753333326}, //
+
61158 {0.75170368, 0.00523148151}, //
+
61159 {0.758859277, 0.0033481482}, //
+
61160 {0.766266644, 0.00188333332}, //
+
61161 {0.7739259, 0.000837037049}, //
+
61162 {0.781837046, 0.000209259262}, //
+
61163 {0.790000021, 0}, //
+
61164 {0.793871582, 0.000734567875}, //
+
61165 {0.797953069, 0.00142716046}, //
+
61166 {0.802244425, 0.00207777787}, //
+
61167 {0.806745708, 0.00268641976}, //
+
61168 {0.8114568, 0.00325308647}, //
+
61169 {0.816377759, 0.00377777778}, //
+
61170 {0.821508646, 0.00426049391}, //
+
61171 {0.826849401, 0.0047012344}, //
+
61172 {0.832400024, 0.00510000018}, //
+
61173 {0.837950647, 0.00545679033}, //
+
61174 {0.843291342, 0.00577160483}, //
+
61175 {0.848422229, 0.00604444463}, //
+
61176 {0.853343189, 0.00627530878}, //
+
61177 {0.85805434, 0.0064641973}, //
+
61178 {0.862555563, 0.00661111111}, //
+
61179 {0.866846919, 0.00671604928}, //
+
61180 {0.870928407, 0.00677901227}, //
+
61181 {0.874800026, 0.00680000009}, //
+
61182 {0.876341999, 0.00682037044}, //
+
61183 {0.877967894, 0.0068814815}, //
+
61184 {0.879677773, 0.00698333327}, //
+
61185 {0.881471634, 0.00712592574}, //
+
61186 {0.883349359, 0.00730925938}, //
+
61187 {0.885311127, 0.00753333326}, //
+
61188 {0.887356818, 0.00779814832}, //
+
61189 {0.889486432, 0.00810370408}, //
+
61190 {0.891700029, 0.00844999962}, //
+
61191 {0.893945038, 0.00882777758}, //
+
61192 {0.896146894, 0.00920555554}, //
+
61193 {0.898305535, 0.00958333351}, //
+
61194 {0.900420964, 0.00996111147}, //
+
61195 {0.902493238, 0.0103388885}, //
+
61196 {0.90452224, 0.0107166665}, //
+
61197 {0.906508029, 0.0110944444}, //
+
61198 {0.908450603, 0.0114722224}, //
+
61199 {0.910350025, 0.0118500004}, //
+
61200 {0.917171001, 0.0132141979}, //
+
61201 {0.917905569, 0.0133611113}, //
+
61202 {0.918430269, 0.013466049}, //
+
61203 {0.918850005, 0.0135500003}, //
+
61204 {0.918850005, -0.0101500005}, //
+
61205 {0.881550014, -0.0101500005}, //
+
61206 {0.878517926, -0.0101709878}, //
+
61207 {0.875443816, -0.0102339508}, //
+
61208 {0.872327805, -0.0103388885}, //
+
61209 {0.869169772, -0.0104858028}, //
+
61210 {0.865969777, -0.0106746918}, //
+
61211 {0.862727761, -0.0109055554}, //
+
61212 {0.859443843, -0.0111783948}, //
+
61213 {0.856117904, -0.0114932097}, //
+
61214 {0.852750003, -0.0118500004}, //
+
61215 {0.849381506, -0.0122277774}, //
+
61216 {0.84605372, -0.0126055554}, //
+
61217 {0.842766643, -0.0129833333}, //
+
61218 {0.839520395, -0.0133611113}, //
+
61219 {0.836314797, -0.0137388892}, //
+
61220 {0.833150029, -0.0141166663}, //
+
61221 {0.830025911, -0.0144944442}, //
+
61222 {0.826942563, -0.0148722222}, //
+
61223 {0.823899984, -0.0152500002}, //
+
61224 {0.82097286, -0.0156067898}, //
+
61225 {0.818213582, -0.0159216058}, //
+
61226 {0.815622211, -0.0161944441}, //
+
61227 {0.813198745, -0.0164253078}, //
+
61228 {0.810943186, -0.0166141968}, //
+
61229 {0.808855534, -0.0167611111}, //
+
61230 {0.806935787, -0.0168660488}, //
+
61231 {0.805183947, -0.0169290118}, //
+
61232 {0.803600013, -0.0169500001}, //
+
61233 {0.802802444, -0.0169919748}, //
+
61234 {0.80192101, -0.0171179008}, //
+
61235 {0.800955534, -0.017327778}, //
+
61236 {0.799906194, -0.0176216047}, //
+
61237 {0.798772812, -0.0179993827}, //
+
61238 {0.797555566, -0.0184611119}, //
+
61239 {0.796254337, -0.0190067906}, //
+
61240 {0.794869125, -0.0196364205}, //
+
61241 {0.79339999, -0.0203499999}, //
+
61242 {0.791836441, -0.0211049374}, //
+
61243 {0.790145695, -0.0218586419}, //
+
61244 {0.788327754, -0.0226111114}, //
+
61245 {0.786382735, -0.023362346}, //
+
61246 {0.78431052, -0.0241123457}, //
+
61247 {0.782111108, -0.0248611104}, //
+
61248 {0.77978456, -0.025608642}, //
+
61249 {0.777330875, -0.0263549387}, //
+
61250 {0.774749994, -0.0271000005}, //
+
61251 {0.77209568, -0.0277722217}, //
+
61252 {0.769399405, -0.0282777771}, //
+
61253 {0.766661108, -0.0286166668}, //
+
61254 {0.763880849, -0.0287888888}, //
+
61255 {0.761058629, -0.0287944451}, //
+
61256 });
+
61257 polys.push_back({
+
61258 {4.2349, -0.00340000005}, //
+
61259 {4.2349, -0.00323209865}, //
+
61260 {4.2349, -0.00272839516}, //
+
61261 {4.2349, -0.0023506172}, //
+
61262 {4.2349, 0}, //
+
61263 {4.23563385, 0.00151049381}, //
+
61264 {4.23632479, 0.00301975315}, //
+
61265 {4.23697233, 0.0045277779}, //
+
61266 {4.23757648, 0.00603456795}, //
+
61267 {4.23813772, 0.00754012354}, //
+
61268 {4.23865557, 0.00904444419}, //
+
61269 {4.23913002, 0.0105475308}, //
+
61270 {4.23956156, 0.0120493826}, //
+
61271 {4.23995018, 0.0135500003}, //
+
61272 {4.24030685, 0.0151444441}, //
+
61273 {4.24062157, 0.0169055555}, //
+
61274 {4.24089432, 0.0188333336}, //
+
61275 {4.24112511, 0.0209277775}, //
+
61276 {4.24131441, 0.023188889}, //
+
61277 {4.24146128, 0.0256166663}, //
+
61278 {4.24156618, 0.0282111112}, //
+
61279 {4.24162912, 0.0309722219}, //
+
61280 {4.2416501, 0.0339000002}, //
+
61281 {4.24185944, 0.0367648154}, //
+
61282 {4.24248695, 0.0393370353}, //
+
61283 {4.24353313, 0.0416166671}, //
+
61284 {4.24499798, 0.0436037034}, //
+
61285 {4.24688148, 0.0452981479}, //
+
61286 {4.24918318, 0.0467000008}, //
+
61287 {4.25190353, 0.0478092581}, //
+
61288 {4.25504255, 0.0486259274}, //
+
61289 {4.25860023, 0.0491500013}, //
+
61290 {4.26241875, 0.0495067909}, //
+
61291 {4.26631832, 0.049821604}, //
+
61292 {4.27029991, 0.0500944443}, //
+
61293 {4.27436304, 0.050325308}, //
+
61294 {4.27850723, 0.0505141988}, //
+
61295 {4.28273344, 0.0506611094}, //
+
61296 {4.28704071, 0.0507660508}, //
+
61297 {4.29142952, 0.0508290119}, //
+
61298 {4.29589987, 0.0508500002}, //
+
61299 {4.29892159, 0.0508500002}, //
+
61300 {4.30194187, 0.0508500002}, //
+
61301 {4.3049612, 0.0508500002}, //
+
61302 {4.30797911, 0.0508500002}, //
+
61303 {4.32305002, 0.0508500002}, //
+
61304 {4.32147598, 0.0498006158}, //
+
61305 {4.31996489, 0.0487932116}, //
+
61306 {4.31902027, 0.0481635816}, //
+
61307 {4.31794977, 0.0474499986}, //
+
61308 {4.31684828, 0.0467049368}, //
+
61309 {4.31578684, 0.0459586419}, //
+
61310 {4.31476688, 0.0452111103}, //
+
61311 {4.31378698, 0.0444623455}, //
+
61312 {4.31284809, 0.043712344}, //
+
61313 {4.31195021, 0.0429611094}, //
+
61314 {4.31109238, 0.0422086418}, //
+
61315 {4.31027603, 0.0414549373}, //
+
61316 {4.30950022, 0.0406999998}, //
+
61317 {4.30872345, 0.0399444439}, //
+
61318 {4.30790472, 0.0391888879}, //
+
61319 {4.30704451, 0.038433332}, //
+
61320 {4.30614185, 0.0376777761}, //
+
61321 {4.30519772, 0.0369222239}, //
+
61322 {4.30421114, 0.0361666679}, //
+
61323 {4.3031826, 0.035411112}, //
+
61324 {4.30211258, 0.0346555561}, //
+
61325 {4.30100012, 0.0339000002}, //
+
61326 {4.29988813, 0.0331864208}, //
+
61327 {4.29881954, 0.0325567909}, //
+
61328 {4.29779434, 0.0320111103}, //
+
61329 {4.29681253, 0.031549383}, //
+
61330 {4.29587364, 0.031171605}, //
+
61331 {4.29497766, 0.0308777783}, //
+
61332 {4.29412508, 0.030667901}, //
+
61333 {4.29331589, 0.0305419751}, //
+
61334 {4.29255009, 0.0305000003}, //
+
61335 {4.2902422, 0.0296919756}, //
+
61336 {4.28785133, 0.0287567899}, //
+
61337 {4.28537798, 0.0276944451}, //
+
61338 {4.28282166, 0.0265049376}, //
+
61339 {4.28018284, 0.025188271}, //
+
61340 {4.27746105, 0.0237444453}, //
+
61341 {4.27465677, 0.0221734568}, //
+
61342 {4.27176952, 0.0204753093}, //
+
61343 {4.26879978, 0.0186500009}, //
+
61344 {4.26578808, 0.0167407412}, //
+
61345 {4.26277542, 0.0147907408}, //
+
61346 {4.25976133, 0.0127999997}, //
+
61347 {4.25674582, 0.0107685188}, //
+
61348 {4.25372887, 0.00869629625}, //
+
61349 {4.25071096, 0.00658333348}, //
+
61350 {4.24769211, 0.00442962954}, //
+
61351 {4.2455492, 0.00287268125}, //
+
61352 {4.2349, 0}, //
+
61353 {4.23565006, -0.00169444445}, //
+
61354 {4.23613071, -0.00278016087}, //
+
61355 });
+
61356 polys.push_back({
+
61357 {1.23560059, -0.0530537032}, //
+
61358 {1.23202288, -0.052864816}, //
+
61359 {1.2287389, -0.0525499992}, //
+
61360 {1.22574878, -0.0521092601}, //
+
61361 {1.2230525, -0.0515425913}, //
+
61362 {1.22064996, -0.0508500002}, //
+
61363 {1.21762836, -0.0508290119}, //
+
61364 {1.21460807, -0.0507660508}, //
+
61365 {1.21158886, -0.0506611094}, //
+
61366 {1.20857096, -0.0505141988}, //
+
61367 {1.20555437, -0.050325308}, //
+
61368 {1.20253885, -0.0500944443}, //
+
61369 {1.19952464, -0.049821604}, //
+
61370 {1.19651175, -0.0495067909}, //
+
61371 {1.19350004, -0.0491500013}, //
+
61372 {1.1905092, -0.0487932116}, //
+
61373 {1.18755925, -0.0484783947}, //
+
61374 {1.18464994, -0.0482055545}, //
+
61375 {1.18178153, -0.0479746908}, //
+
61376 {1.17895365, -0.0477858037}, //
+
61377 {1.17616665, -0.0476388894}, //
+
61378 {1.17342043, -0.0475339517}, //
+
61379 {1.17071486, -0.0474709868}, //
+
61380 {1.16805005, -0.0474499986}, //
+
61381 {1.16320062, -0.0474499986}, //
+
61382 {1.16108894, -0.0474499986}, //
+
61383 {1.15137279, -0.0474499986}, //
+
61384 {1.15072227, -0.0474499986}, //
+
61385 {1.14704812, -0.0474499986}, //
+
61386 {1.14678335, -0.0474499986}, //
+
61387 {1.14655924, -0.0474499986}, //
+
61388 {1.14604998, -0.0474499986}, //
+
61389 {1.14531541, -0.0481635816}, //
+
61390 {1.1446228, -0.0487932116}, //
+
61391 {1.14397228, -0.0493388884}, //
+
61392 {1.1433636, -0.0498006158}, //
+
61393 {1.14279687, -0.0501783937}, //
+
61394 {1.14227223, -0.0504722223}, //
+
61395 {1.14178956, -0.0506820977}, //
+
61396 {1.14134872, -0.0508080237}, //
+
61397 {1.14094996, -0.0508500002}, //
+
61398 {1.14061415, -0.0508290119}, //
+
61399 {1.14036238, -0.0507660508}, //
+
61400 {1.14019442, -0.0506611094}, //
+
61401 {1.14011049, -0.0505141988}, //
+
61402 {1.14011049, -0.050325308}, //
+
61403 {1.14019442, -0.0500944443}, //
+
61404 {1.14036238, -0.049821604}, //
+
61405 {1.14061415, -0.0495067909}, //
+
61406 {1.14094996, -0.0491500013}, //
+
61407 {1.14134872, -0.0487932116}, //
+
61408 {1.14178956, -0.0484783947}, //
+
61409 {1.14227223, -0.0482055545}, //
+
61410 {1.14279687, -0.0479746908}, //
+
61411 {1.1433636, -0.0477858037}, //
+
61412 {1.14397228, -0.0476388894}, //
+
61413 {1.1446228, -0.0475339517}, //
+
61414 {1.14531541, -0.0474709868}, //
+
61415 {1.14604998, -0.0474499986}, //
+
61416 {1.14679503, -0.0467469133}, //
+
61417 {1.1475414, -0.0461265445}, //
+
61418 {1.14828885, -0.0455888882}, //
+
61419 {1.1490376, -0.0451339521}, //
+
61420 {1.14978766, -0.0447617285}, //
+
61421 {1.15053892, -0.0444722213}, //
+
61422 {1.15129137, -0.0442654304}, //
+
61423 {1.15204501, -0.0441413596}, //
+
61424 {1.15279996, -0.0441000015}, //
+
61425 {1.15588391, -0.0425888896}, //
+
61426 {1.15909135, -0.0410777777}, //
+
61427 {1.16242218, -0.0395666659}, //
+
61428 {1.16587651, -0.038055554}, //
+
61429 {1.16945434, -0.0365444459}, //
+
61430 {1.17315555, -0.035033334}, //
+
61431 {1.17698026, -0.0335222222}, //
+
61432 {1.18092835, -0.0320111103}, //
+
61433 {1.18499994, -0.0305000003}, //
+
61434 {1.18908215, -0.0290833339}, //
+
61435 {1.19303954, -0.0278333332}, //
+
61436 {1.19687223, -0.0267500002}, //
+
61437 {1.20058024, -0.0258333329}, //
+
61438 {1.20416355, -0.0250833333}, //
+
61439 {1.20762217, -0.0244999994}, //
+
61440 {1.21095622, -0.0240833331}, //
+
61441 {1.21416545, -0.0238333326}, //
+
61442 {1.21724999, -0.0237499997}, //
+
61443 {1.22264326, -0.0257969145}, //
+
61444 {1.22828948, -0.0274265427}, //
+
61445 {1.23418891, -0.0286388882}, //
+
61446 {1.24034131, -0.0294339508}, //
+
61447 {1.2467469, -0.0298117287}, //
+
61448 {1.25340557, -0.029772222}, //
+
61449 {1.26031733, -0.0293154325}, //
+
61450 {1.26748204, -0.0284413584}, //
+
61451 {1.27489996, -0.0271499995}, //
+
61452 {1.27719748, -0.0256388895}, //
+
61453 {1.27957904, -0.0241277777}, //
+
61454 {1.28204441, -0.0226166658}, //
+
61455 {1.28459382, -0.0211055558}, //
+
61456 {1.28722715, -0.019594444}, //
+
61457 {1.28994441, -0.018083334}, //
+
61458 {1.29274571, -0.0165722221}, //
+
61459 {1.29563081, -0.0150611112}, //
+
61460 {1.29859996, -0.0135500003}, //
+
61461 {1.30154872, -0.0120493826}, //
+
61462 {1.30437279, -0.0105475308}, //
+
61463 {1.30707216, -0.00904444419}, //
+
61464 {1.30964696, -0.00754012354}, //
+
61465 {1.31209695, -0.00603456795}, //
+
61466 {1.31442225, -0.0045277779}, //
+
61467 {1.31662285, -0.00301975315}, //
+
61468 {1.31869876, -0.00151049381}, //
+
61469 {1.32064998, 0}, //
+
61470 {1.32652652, 0.0047012344}, //
+
61471 {1.32747102, 0.00545679033}, //
+
61472 {1.32820559, 0.00604444463}, //
+
61473 {1.32873023, 0.0064641973}, //
+
61474 {1.32904506, 0.00671604928}, //
+
61475 {1.32914996, 0.00680000009}, //
+
61476 {1.33589995, -0.0169500001}, //
+
61477 {1.33589995, -0.0186500009}, //
+
61478 {1.33587897, -0.0190067906}, //
+
61479 {1.33581603, -0.0193216056}, //
+
61480 {1.33571112, -0.019594444}, //
+
61481 {1.33556426, -0.0198253095}, //
+
61482 {1.33537531, -0.0200141966}, //
+
61483 {1.3351444, -0.0201611109}, //
+
61484 {1.33487165, -0.0202660486}, //
+
61485 {1.33455682, -0.0203290116}, //
+
61486 {1.33384323, -0.0203709882}, //
+
61487 {1.3335284, -0.0204339512}, //
+
61488 {1.33325553, -0.0205388889}, //
+
61489 {1.33302474, -0.0206858031}, //
+
61490 {1.33283579, -0.0208746921}, //
+
61491 {1.33268893, -0.0211055558}, //
+
61492 {1.3325839, -0.0213783942}, //
+
61493 {1.33252096, -0.0216932092}, //
+
61494 {1.33249998, -0.0220500007}, //
+
61495 {1.33245802, -0.0224277787}, //
+
61496 {1.33233213, -0.0228055548}, //
+
61497 {1.33212221, -0.0231833328}, //
+
61498 {1.33182836, -0.0235611107}, //
+
61499 {1.33145058, -0.0239388887}, //
+
61500 {1.33098888, -0.0243166666}, //
+
61501 {1.33044326, -0.0246944446}, //
+
61502 {1.3298136, -0.0250722226}, //
+
61503 {1.32910001, -0.0254500005}, //
+
61504 {1.32835495, -0.0258481484}, //
+
61505 {1.32760859, -0.0262870379}, //
+
61506 {1.32686114, -0.0267666671}, //
+
61507 {1.32611239, -0.0272870362}, //
+
61508 {1.32536232, -0.0278481487}, //
+
61509 {1.32461107, -0.0284499992}, //
+
61510 {1.32385862, -0.0290925931}, //
+
61511 {1.32310498, -0.0297759268}, //
+
61512 {1.32235003, -0.0305000003}, //
+
61513 {1.32159448, -0.031234568}, //
+
61514 {1.32083893, -0.0319271609}, //
+
61515 {1.32008338, -0.0325777791}, //
+
61516 {1.31932783, -0.0331864208}, //
+
61517 {1.31857216, -0.0337530859}, //
+
61518 {1.31781662, -0.0342777781}, //
+
61519 {1.31706107, -0.0347604938}, //
+
61520 {1.31630552, -0.0352012329}, //
+
61521 {1.31554997, -0.0355999991}, //
+
61522 {1.31215, -0.0373000018}, //
+
61523 {1.31212902, -0.0373209864}, //
+
61524 {1.31206608, -0.0373839512}, //
+
61525 {1.31181419, -0.0376358032}, //
+
61526 {1.31139445, -0.038055554}, //
+
61527 {1.31112158, -0.0383283943}, //
+
61528 {1.31080675, -0.0386432111}, //
+
61529 {1.31044996, -0.0390000008}, //
+
61530 {1.31004071, -0.0393777788}, //
+
61531 {1.30954635, -0.0397555567}, //
+
61532 {1.30896664, -0.0401333347}, //
+
61533 {1.30830181, -0.0405111127}, //
+
61534 {1.30755186, -0.0408888906}, //
+
61535 {1.30671668, -0.0412666649}, //
+
61536 {1.30579627, -0.0416444428}, //
+
61537 {1.30479074, -0.0420222208}, //
+
61538 {1.30369997, -0.0423999988}, //
+
61539 {1.30254626, -0.0427567884}, //
+
61540 {1.3013519, -0.0430716053}, //
+
61541 {1.30011666, -0.0433444455}, //
+
61542 {1.29884076, -0.0435753092}, //
+
61543 {1.29752409, -0.0437641963}, //
+
61544 {1.29616666, -0.0439111106}, //
+
61545 {1.29476857, -0.0440160483}, //
+
61546 {1.2933296, -0.0440790132}, //
+
61547 {1.29184997, -0.0441000015}, //
+
61548 {1.28802037, -0.0455376543}, //
+
61549 {1.28406477, -0.046850618}, //
+
61550 {1.27998328, -0.0480388887}, //
+
61551 {1.27577591, -0.0491024703}, //
+
61552 {1.27144265, -0.0500413589}, //
+
61553 {1.26698339, -0.0508555546}, //
+
61554 {1.26239812, -0.0515450612}, //
+
61555 {1.25768709, -0.0521098748}, //
+
61556 {1.25285006, -0.0525499992}, //
+
61557 {1.24809694, -0.052864816}, //
+
61558 {1.24363768, -0.0530537032}, //
+
61559 {1.23947227, -0.053116668}, //
+
61560 });
+
61561 polys.push_back({
+
61562 {1.20704997, -0.0678000003}, //
+
61563 {1.207008, -0.0678000003}, //
+
61564 {1.20688212, -0.0678000003}, //
+
61565 {1.20667219, -0.0678000003}, //
+
61566 {1.20365, -0.0678000003}, //
+
61567 {1.20135248, -0.0685975328}, //
+
61568 {1.19897103, -0.069479011}, //
+
61569 {1.19650555, -0.0704444423}, //
+
61570 {1.19395614, -0.0714938268}, //
+
61571 {1.1913228, -0.072627157}, //
+
61572 {1.18860555, -0.0738444477}, //
+
61573 {1.18580437, -0.0751456767}, //
+
61574 {1.18291914, -0.0765308663}, //
+
61575 {1.17995, -0.0780000016}, //
+
61576 {1.1784395, -0.0788388923}, //
+
61577 {1.17693019, -0.079844445}, //
+
61578 {1.17542219, -0.0810166672}, //
+
61579 {1.17391539, -0.0823555589}, //
+
61580 {1.17240989, -0.0838611126}, //
+
61581 {1.17090559, -0.0855333358}, //
+
61582 {1.16940248, -0.0873722211}, //
+
61583 {1.16790056, -0.0893777758}, //
+
61584 {1.16639996, -0.09155}, //
+
61585 {1.16337836, -0.0937642008}, //
+
61586 {1.16035807, -0.0958956778}, //
+
61587 {1.15733886, -0.0979444459}, //
+
61588 {1.15432096, -0.0999104902}, //
+
61589 {1.15130436, -0.101793826}, //
+
61590 {1.14828885, -0.103594445}, //
+
61591 {1.14527464, -0.105312347}, //
+
61592 {1.14226174, -0.106947534}, //
+
61593 {1.13925004, -0.108499996}, //
+
61594 {1.13847351, -0.109192595}, //
+
61595 {1.1376549, -0.109759256}, //
+
61596 {1.13679445, -0.110200003}, //
+
61597 {1.13589203, -0.110514812}, //
+
61598 {1.13494754, -0.110703707}, //
+
61599 {1.13396108, -0.110766664}, //
+
61600 {1.13293266, -0.110703707}, //
+
61601 {1.1318624, -0.110514812}, //
+
61602 {1.13074994, -0.110200003}, //
+
61603 {1.12964809, -0.109759256}, //
+
61604 {1.12858701, -0.109192595}, //
+
61605 {1.1275667, -0.108499996}, //
+
61606 {1.12658703, -0.107681483}, //
+
61607 {1.12564814, -0.10673704}, //
+
61608 {1.12475002, -0.105666667}, //
+
61609 {1.12389255, -0.104470372}, //
+
61610 {1.12307596, -0.103148147}, //
+
61611 {1.12230003, -0.1017}, //
+
61612 {1.12217474, -0.100870989}, //
+
61613 {1.12179875, -0.0998728424}, //
+
61614 {1.12117219, -0.0987055525}, //
+
61615 {1.12029505, -0.0973691344}, //
+
61616 {1.11916733, -0.0958635807}, //
+
61617 {1.11778891, -0.0941888914}, //
+
61618 {1.11615992, -0.0923450589}, //
+
61619 {1.11428022, -0.0903320983}, //
+
61620 {1.11214995, -0.0881500021}, //
+
61621 {1.11141539, -0.0874154344}, //
+
61622 {1.10946357, -0.0854635835}, //
+
61623 {1.10889697, -0.0848969147}, //
+
61624 {1.10837221, -0.0843722224}, //
+
61625 {1.10788953, -0.0838895068}, //
+
61626 {1.10744882, -0.0834487677}, //
+
61627 {1.10704994, -0.0830499977}, //
+
61628 {1.10667217, -0.0826827139}, //
+
61629 {1.10629439, -0.0823142007}, //
+
61630 {1.10591662, -0.0819444433}, //
+
61631 {1.10553885, -0.0815734565}, //
+
61632 {1.10516107, -0.081201233}, //
+
61633 {1.1047833, -0.0808277801}, //
+
61634 {1.10440552, -0.0804530829}, //
+
61635 {1.10402775, -0.0800771639}, //
+
61636 {1.10364997, -0.0797000006}, //
+
61637 {1.10329318, -0.0793641955}, //
+
61638 {1.10297835, -0.0791123435}, //
+
61639 {1.1027056, -0.0789444447}, //
+
61640 {1.10247469, -0.0788604915}, //
+
61641 {1.10228586, -0.0788604915}, //
+
61642 {1.10213888, -0.0789444447}, //
+
61643 {1.10203397, -0.0791123435}, //
+
61644 {1.10197103, -0.0793641955}, //
+
61645 {1.10195005, -0.0797000006}, //
+
61646 {1.10192907, -0.0800567865}, //
+
61647 {1.10186601, -0.0803716034}, //
+
61648 {1.1017611, -0.0806444436}, //
+
61649 {1.10161424, -0.0808753073}, //
+
61650 {1.10142529, -0.0810641944}, //
+
61651 {1.1011945, -0.0812111124}, //
+
61652 {1.10092163, -0.0813160464}, //
+
61653 {1.1006068, -0.0813790113}, //
+
61654 {1.10025001, -0.0813999996}, //
+
61655 {1.09989321, -0.0814203694}, //
+
61656 {1.09957838, -0.0814814791}, //
+
61657 {1.09930551, -0.081583336}, //
+
61658 {1.09907472, -0.0817259252}, //
+
61659 {1.09888577, -0.0819092616}, //
+
61660 {1.09873891, -0.0821333304}, //
+
61661 {1.098634, -0.0823981464}, //
+
61662 {1.09857094, -0.0827037022}, //
+
61663 {1.09854996, -0.0830499977}, //
+
61664 {1.09854996, -0.0508500002}, //
+
61665 {1.09911668, -0.0516000018}, //
+
61666 {1.0995574, -0.0521833338}, //
+
61667 {1.10012412, -0.0529333316}, //
+
61668 {1.10081661, -0.0538499989}, //
+
61669 {1.10163522, -0.0549333319}, //
+
61670 {1.10257959, -0.0561833344}, //
+
61671 {1.10364997, -0.057599999}, //
+
61672 {1.10480368, -0.0590901226}, //
+
61673 {1.10599816, -0.0605382733}, //
+
61674 {1.10723329, -0.0619444437}, //
+
61675 {1.1085093, -0.0633086413}, //
+
61676 {1.10982597, -0.0646308661}, //
+
61677 {1.11118329, -0.0659111142}, //
+
61678 {1.11258149, -0.0671493858}, //
+
61679 {1.11402035, -0.0683456808}, //
+
61680 {1.11549997, -0.0694999993}, //
+
61681 {1.11703146, -0.0706123486}, //
+
61682 {1.11860371, -0.0716827139}, //
+
61683 {1.12021661, -0.0727111101}, //
+
61684 {1.1218704, -0.0736975297}, //
+
61685 {1.12356484, -0.0746419728}, //
+
61686 {1.12530005, -0.0755444467}, //
+
61687 {1.12707591, -0.0764049366}, //
+
61688 {1.12889254, -0.0772234574}, //
+
61689 {1.13074994, -0.0780000016}, //
+
61690 {1.13257587, -0.078713581}, //
+
61691 {1.13427591, -0.0793432072}, //
+
61692 {1.13584995, -0.0798888877}, //
+
61693 {1.13729811, -0.0803506151}, //
+
61694 {1.13862038, -0.0807283968}, //
+
61695 {1.13981664, -0.0810222253}, //
+
61696 {1.14088702, -0.0812321007}, //
+
61697 {1.14183152, -0.081358023}, //
+
61698 {1.14265001, -0.0813999996}, //
+
61699 {1.14708829, -0.0812740773}, //
+
61700 {1.1513586, -0.0808962956}, //
+
61701 {1.15546107, -0.0802666694}, //
+
61702 {1.15939569, -0.0793851838}, //
+
61703 {1.16316235, -0.0782518536}, //
+
61704 {1.16676116, -0.076866664}, //
+
61705 {1.170192, -0.0752296299}, //
+
61706 {1.17345488, -0.0733407438}, //
+
61707 {1.17655003, -0.0711999983}, //
+
61708 {1.17659199, -0.0711999983}, //
+
61709 {1.17671788, -0.0711999983}, //
+
61710 {1.17995, -0.0711999983}, //
+
61711 {1.18070495, -0.07117901}, //
+
61712 {1.18145859, -0.0711160526}, //
+
61713 {1.18221116, -0.0710111111}, //
+
61714 {1.1829623, -0.0708642006}, //
+
61715 {1.18371236, -0.070675306}, //
+
61716 {1.18446112, -0.0704444423}, //
+
61717 {1.18520868, -0.0701716021}, //
+
61718 {1.18595493, -0.0698567927}, //
+
61719 {1.18669999, -0.0694999993}, //
+
61720 {1.18747652, -0.069122225}, //
+
61721 {1.18829501, -0.0687444434}, //
+
61722 {1.18915558, -0.0683666691}, //
+
61723 {1.19005799, -0.0679888874}, //
+
61724 {1.19100249, -0.0676111132}, //
+
61725 {1.19198895, -0.0672333315}, //
+
61726 {1.19301724, -0.0668555573}, //
+
61727 {1.19408762, -0.0664777756}, //
+
61728 {1.19519997, -0.0661000013}, //
+
61729 {1.19627035, -0.0657432079}, //
+
61730 {1.19721484, -0.0654283985}, //
+
61731 {1.19803333, -0.0651555583}, //
+
61732 {1.19872594, -0.0649246946}, //
+
61733 {1.19929254, -0.0647358}, //
+
61734 {1.20004809, -0.0644839481}, //
+
61735 {1.20023704, -0.0644209906}, //
+
61736 {1.20029998, -0.0644000024}, //
+
61737 {1.20194685, -0.0644839481}, //
+
61738 {1.2038877, -0.0647358}, //
+
61739 {1.20612228, -0.0651555583}, //
+
61740 {1.20704997, -0.065371193}, //
+
61741 {1.20704997, -0.0678000003}, //
+
61742 {1.20704997, -0.0678000003}, //
+
61743 });
+
61744 polys.push_back({
+
61745 {1.16013396, -0.144981489}, //
+
61746 {1.16440248, -0.144037038}, //
+
61747 {1.16900551, -0.142966673}, //
+
61748 {1.17394316, -0.141770378}, //
+
61749 {1.17921543, -0.140448153}, //
+
61750 {1.1848222, -0.138999999}, //
+
61751 {1.19076359, -0.137425929}, //
+
61752 {1.19703948, -0.13572593}, //
+
61753 {1.20365, -0.133900002}, //
+
61754 {1.210271, -0.132001236}, //
+
61755 {1.21655619, -0.130060494}, //
+
61756 {1.22250557, -0.128077775}, //
+
61757 {1.22811913, -0.12605308}, //
+
61758 {1.23339689, -0.123986423}, //
+
61759 {1.23833895, -0.121877775}, //
+
61760 {1.24294508, -0.119727157}, //
+
61761 {1.24721539, -0.11753457}, //
+
61762 {1.25115001, -0.1153}, //
+
61763 {1.25123334, -0.113851853}, //
+
61764 {1.25148332, -0.112529628}, //
+
61765 {1.25189996, -0.111333333}, //
+
61766 {1.25248337, -0.11026296}, //
+
61767 {1.25323331, -0.109318517}, //
+
61768 {1.25415003, -0.108499996}, //
+
61769 {1.25523329, -0.107807405}, //
+
61770 {1.25648332, -0.107240744}, //
+
61771 {1.2579, -0.106799997}, //
+
61772 {1.25945306, -0.106443211}, //
+
61773 {1.26109016, -0.106128395}, //
+
61774 {1.26281106, -0.105855554}, //
+
61775 {1.26461601, -0.105624691}, //
+
61776 {1.26650488, -0.105435804}, //
+
61777 {1.2684778, -0.105288886}, //
+
61778 {1.27053452, -0.105183952}, //
+
61779 {1.27267528, -0.105120987}, //
+
61780 {1.27489996, -0.105099998}, //
+
61781 {1.27715552, -0.105058022}, //
+
61782 {1.27941108, -0.1049321}, //
+
61783 {1.28166664, -0.104722224}, //
+
61784 {1.2839222, -0.104428396}, //
+
61785 {1.28617775, -0.104050614}, //
+
61786 {1.28843331, -0.103588887}, //
+
61787 {1.29068887, -0.103043213}, //
+
61788 {1.29294443, -0.10241358}, //
+
61789 {1.29519999, -0.1017}, //
+
61790 {1.29746604, -0.101616047}, //
+
61791 {1.2997309, -0.101364195}, //
+
61792 {1.30199444, -0.100944445}, //
+
61793 {1.3042568, -0.100356787}, //
+
61794 {1.30651796, -0.0996012315}, //
+
61795 {1.30877781, -0.0986777768}, //
+
61796 {1.31103647, -0.0975864232}, //
+
61797 {1.31329381, -0.0963271633}, //
+
61798 {1.31554997, -0.0948999971}, //
+
61799 {1.31779504, -0.0933783948}, //
+
61800 {1.31999695, -0.0918135792}, //
+
61801 {1.32215559, -0.0902055576}, //
+
61802 {1.32427096, -0.0885543227}, //
+
61803 {1.32634318, -0.0868598744}, //
+
61804 {1.32837224, -0.0851222202}, //
+
61805 {1.33035803, -0.0833413601}, //
+
61806 {1.33230066, -0.0815172866}, //
+
61807 {1.33420002, -0.0796499997}, //
+
61808 {1.33606732, -0.0777716041}, //
+
61809 {1.33789134, -0.0758919716}, //
+
61810 {1.33967221, -0.0740111098}, //
+
61811 {1.34140992, -0.0721290112}, //
+
61812 {1.34310436, -0.0702456757}, //
+
61813 {1.34475553, -0.068361111}, //
+
61814 {1.34636354, -0.0664753094}, //
+
61815 {1.3479284, -0.0645882711}, //
+
61816 {1.34944999, -0.0627000034}, //
+
61817 {1.35625005, -0.0542499982}, //
+
61818 {1.3664, -0.0780000016}, //
+
61819 {1.36583328, -0.0787499994}, //
+
61820 {1.36413336, -0.0810000002}, //
+
61821 {1.36237037, -0.0833333358}, //
+
61822 {1.36129999, -0.0847499967}, //
+
61823 {1.36015618, -0.0863024667}, //
+
61824 {1.35896909, -0.0879376531}, //
+
61825 {1.35773885, -0.0896555558}, //
+
61826 {1.35646546, -0.0914561749}, //
+
61827 {1.35514879, -0.0933395028}, //
+
61828 {1.35378885, -0.0953055546}, //
+
61829 {1.35238576, -0.0973543227}, //
+
61830 {1.35093951, -0.0994857997}, //
+
61831 {1.34944999, -0.1017}, //
+
61832 {1.3479284, -0.103924073}, //
+
61833 {1.34636354, -0.106062964}, //
+
61834 {1.34475553, -0.108116664}, //
+
61835 {1.34310436, -0.110085182}, //
+
61836 {1.34140992, -0.111968517}, //
+
61837 {1.33967221, -0.11376667}, //
+
61838 {1.33789134, -0.115479633}, //
+
61839 {1.33606732, -0.117107406}, //
+
61840 {1.33420002, -0.118649997}, //
+
61841 {1.33234262, -0.120077163}, //
+
61842 {1.33052588, -0.121336423}, //
+
61843 {1.32875001, -0.122427776}, //
+
61844 {1.3270148, -0.123351231}, //
+
61845 {1.32532036, -0.124106787}, //
+
61846 {1.32366669, -0.124694444}, //
+
61847 {1.32205367, -0.125114202}, //
+
61848 {1.32048154, -0.125366047}, //
+
61849 {1.31895006, -0.12545}, //
+
61850 {1.31890798, -0.125429019}, //
+
61851 {1.31878209, -0.125366047}, //
+
61852 {1.31857216, -0.125261113}, //
+
61853 {1.31827843, -0.125114202}, //
+
61854 {1.31790066, -0.124925308}, //
+
61855 {1.31689322, -0.124421604}, //
+
61856 {1.31554997, -0.123750001}, //
+
61857 {1.31473148, -0.12337222}, //
+
61858 {1.31378698, -0.122994445}, //
+
61859 {1.31271672, -0.122616664}, //
+
61860 {1.31152034, -0.122238889}, //
+
61861 {1.31019819, -0.121861108}, //
+
61862 {1.30875003, -0.121483333}, //
+
61863 {1.30717587, -0.121105559}, //
+
61864 {1.30547595, -0.120727777}, //
+
61865 {1.30365002, -0.120350003}, //
+
61866 {1.3018136, -0.11999321}, //
+
61867 {1.30005991, -0.119678393}, //
+
61868 {1.29838884, -0.119405553}, //
+
61869 {1.29680061, -0.119174689}, //
+
61870 {1.29529512, -0.118985802}, //
+
61871 {1.29387224, -0.118838891}, //
+
61872 {1.29253209, -0.11873395}, //
+
61873 {1.29127467, -0.118670985}, //
+
61874 {1.29009998, -0.118649997}, //
+
61875 {1.28394878, -0.118649997}, //
+
61876 {1.27824998, -0.118649997}, //
+
61877 {1.27824998, -0.118566051}, //
+
61878 {1.27824998, -0.11846111}, //
+
61879 {1.27824998, -0.118314199}, //
+
61880 {1.27824998, -0.118125312}, //
+
61881 {1.27824998, -0.117894441}, //
+
61882 {1.27824998, -0.117621608}, //
+
61883 {1.27824998, -0.116949998}, //
+
61884 {1.278229, -0.116603702}, //
+
61885 {1.27816606, -0.116298147}, //
+
61886 {1.27806115, -0.116033331}, //
+
61887 {1.27791417, -0.115809262}, //
+
61888 {1.27772534, -0.115625925}, //
+
61889 {1.27749443, -0.115483336}, //
+
61890 {1.27722156, -0.115381479}, //
+
61891 {1.27690685, -0.11532037}, //
+
61892 {1.27655005, -0.1153}, //
+
61893 {1.27618277, -0.11532037}, //
+
61894 {1.27581418, -0.115381479}, //
+
61895 {1.27544439, -0.115483336}, //
+
61896 {1.27507341, -0.115625925}, //
+
61897 {1.27470124, -0.115809262}, //
+
61898 {1.27432775, -0.116033331}, //
+
61899 {1.27395308, -0.116298147}, //
+
61900 {1.27357721, -0.116603702}, //
+
61901 {1.27320004, -0.116949998}, //
+
61902 {1.27280128, -0.11732778}, //
+
61903 {1.27236044, -0.117705554}, //
+
61904 {1.27187777, -0.118083335}, //
+
61905 {1.27135313, -0.11846111}, //
+
61906 {1.2707864, -0.118838891}, //
+
61907 {1.27017772, -0.119216666}, //
+
61908 {1.2695272, -0.119594447}, //
+
61909 {1.26883459, -0.119972222}, //
+
61910 {1.26810002, -0.120350003}, //
+
61911 {1.26738644, -0.120748766}, //
+
61912 {1.26675677, -0.121189505}, //
+
61913 {1.26621115, -0.121672221}, //
+
61914 {1.26574934, -0.122196913}, //
+
61915 {1.26537156, -0.122763582}, //
+
61916 {1.26507783, -0.12337222}, //
+
61917 {1.2648679, -0.124022841}, //
+
61918 {1.26474202, -0.124715433}, //
+
61919 {1.26470006, -0.12545}, //
+
61920 {1.26318955, -0.127674073}, //
+
61921 {1.26168025, -0.129812956}, //
+
61922 {1.26017225, -0.131866664}, //
+
61923 {1.25866544, -0.133835182}, //
+
61924 {1.25715983, -0.135718524}, //
+
61925 {1.25565553, -0.137516662}, //
+
61926 {1.25415242, -0.139229625}, //
+
61927 {1.25265062, -0.140857413}, //
+
61928 {1.25115001, -0.142399997}, //
+
61929 {1.24900925, -0.145327777}, //
+
61930 {1.24712038, -0.148088887}, //
+
61931 {1.24548328, -0.150683329}, //
+
61932 {1.24409819, -0.153111115}, //
+
61933 {1.24296486, -0.155372217}, //
+
61934 {1.24208331, -0.157466665}, //
+
61935 {1.24145365, -0.159394443}, //
+
61936 {1.24107587, -0.161155552}, //
+
61937 {1.24094999, -0.162750006}, //
+
61938 {1.24088705, -0.164302468}, //
+
61939 {1.2406981, -0.165937647}, //
+
61940 {1.24038339, -0.167655557}, //
+
61941 {1.23994255, -0.169456169}, //
+
61942 {1.23937595, -0.171339512}, //
+
61943 {1.23868334, -0.173305556}, //
+
61944 {1.23786485, -0.175354317}, //
+
61945 {1.23692036, -0.177485809}, //
+
61946 {1.23584998, -0.179700002}, //
+
61947 {1.23470616, -0.181924075}, //
+
61948 {1.23351908, -0.184062958}, //
+
61949 {1.23228884, -0.186116666}, //
+
61950 {1.23101544, -0.188085184}, //
+
61951 {1.22969878, -0.189968511}, //
+
61952 {1.22833884, -0.191766664}, //
+
61953 {1.22693574, -0.193479627}, //
+
61954 {1.2254895, -0.1951074}, //
+
61955 {1.22399998, -0.196649998}, //
+
61956 {1.22245741, -0.197425932}, //
+
61957 {1.22082961, -0.19824259}, //
+
61958 {1.21911669, -0.199100003}, //
+
61959 {1.21731853, -0.199998155}, //
+
61960 {1.21543515, -0.200937033}, //
+
61961 {1.21346664, -0.201916665}, //
+
61962 {1.21141291, -0.202937037}, //
+
61963 {1.20927405, -0.203998148}, //
+
61964 {1.20704997, -0.2051}, //
+
61965 {1.20483577, -0.206254318}, //
+
61966 {1.20270431, -0.207450613}, //
+
61967 {1.20065558, -0.208688885}, //
+
61968 {1.19868946, -0.209969133}, //
+
61969 {1.19680619, -0.211291358}, //
+
61970 {1.19500554, -0.212655559}, //
+
61971 {1.19328761, -0.214061722}, //
+
61972 {1.19165242, -0.215509877}, //
+
61973 {1.19009995, -0.216999993}, //
+
61974 {1.19003701, -0.217041969}, //
+
61975 {1.18909264, -0.217671603}, //
+
61976 {1.18499994, -0.220400006}, //
+
61977 {1.18389809, -0.221133947}, //
+
61978 {1.18283701, -0.221824691}, //
+
61979 {1.1818167, -0.222472221}, //
+
61980 {1.18083704, -0.223076537}, //
+
61981 {1.17989814, -0.223637655}, //
+
61982 {1.17900002, -0.22415556}, //
+
61983 {1.17814255, -0.224630252}, //
+
61984 {1.17732596, -0.22506173}, //
+
61985 {1.17655003, -0.225449994}, //
+
61986 {1.17581546, -0.225827783}, //
+
61987 {1.17512286, -0.226205558}, //
+
61988 {1.17447221, -0.226583332}, //
+
61989 {1.17386353, -0.226961106}, //
+
61990 {1.17329693, -0.227338895}, //
+
61991 {1.17277217, -0.227716669}, //
+
61992 {1.17228949, -0.228094444}, //
+
61993 {1.17184877, -0.228472218}, //
+
61994 {1.17145002, -0.228850007}, //
+
61995 {1.17077839, -0.229521602}, //
+
61996 {1.17050552, -0.229794443}, //
+
61997 {1.17027473, -0.230025306}, //
+
61998 {1.1698339, -0.230466053}, //
+
61999 {1.16977096, -0.23052901}, //
+
62000 {1.16974998, -0.230550006}, //
+
62001 {1.16974998, -0.23052901}, //
+
62002 {1.16974998, -0.230466053}, //
+
62003 {1.16974998, -0.230361104}, //
+
62004 {1.16974998, -0.228850007}, //
+
62005 {1.16974998, -0.228178397}, //
+
62006 {1.16974998, -0.227149993}, //
+
62007 {1.16974998, -0.227129012}, //
+
62008 {1.16974998, -0.226961106}, //
+
62009 {1.16974998, -0.225449994}, //
+
62010 {1.16972899, -0.22508271}, //
+
62011 {1.16966605, -0.224714205}, //
+
62012 {1.16956115, -0.224344447}, //
+
62013 {1.16941416, -0.223973453}, //
+
62014 {1.16922534, -0.223601237}, //
+
62015 {1.16899443, -0.223227784}, //
+
62016 {1.16872156, -0.222853079}, //
+
62017 {1.16840684, -0.222477168}, //
+
62018 {1.16805005, -0.222100005}, //
+
62019 {1.16768277, -0.221743211}, //
+
62020 {1.16731417, -0.221428394}, //
+
62021 {1.1669445, -0.221155554}, //
+
62022 {1.16657341, -0.22092469}, //
+
62023 {1.16620123, -0.220735803}, //
+
62024 {1.16582775, -0.220588893}, //
+
62025 {1.16545308, -0.220483944}, //
+
62026 {1.16507721, -0.220420986}, //
+
62027 {1.16470003, -0.220400006}, //
+
62028 {1.16337776, -0.220400006}, //
+
62029 {1.16285312, -0.220400006}, //
+
62030 {1.1622864, -0.220400006}, //
+
62031 {1.15922225, -0.220400006}, //
+
62032 {1.15620005, -0.220400006}, //
+
62033 {1.15470994, -0.221092597}, //
+
62034 {1.15326178, -0.221659258}, //
+
62035 {1.15185559, -0.222100005}, //
+
62036 {1.15049136, -0.222414821}, //
+
62037 {1.14916909, -0.222603709}, //
+
62038 {1.1478889, -0.222666666}, //
+
62039 {1.14665067, -0.222603709}, //
+
62040 {1.14545429, -0.222414821}, //
+
62041 {1.14429998, -0.222100005}, //
+
62042 {1.14315617, -0.221659258}, //
+
62043 {1.14196908, -0.221092597}, //
+
62044 {1.14073884, -0.220400006}, //
+
62045 {1.13946545, -0.219581485}, //
+
62046 {1.13814878, -0.218637034}, //
+
62047 {1.13678885, -0.217566669}, //
+
62048 {1.13538575, -0.216370374}, //
+
62049 {1.1339395, -0.215048149}, //
+
62050 {1.13244998, -0.213599995}, //
+
62051 {1.13099134, -0.212845057}, //
+
62052 {1.12961543, -0.212091357}, //
+
62053 {1.12832224, -0.211338893}, //
+
62054 {1.12711167, -0.210587651}, //
+
62055 {1.12598395, -0.20983766}, //
+
62056 {1.12493885, -0.209088892}, //
+
62057 {1.12397659, -0.20834136}, //
+
62058 {1.12309694, -0.207595065}, //
+
62059 {1.12230003, -0.206850007}, //
+
62060 {1.12080991, -0.206073463}, //
+
62061 {1.11936176, -0.205254942}, //
+
62062 {1.11795557, -0.204394445}, //
+
62063 {1.11659133, -0.203491971}, //
+
62064 {1.11526918, -0.202547535}, //
+
62065 {1.11398888, -0.201561108}, //
+
62066 {1.11275065, -0.200532719}, //
+
62067 {1.11155427, -0.199462339}, //
+
62068 {1.11039996, -0.198349997}, //
+
62069 {1.10934007, -0.197258636}, //
+
62070 {1.10840499, -0.196251228}, //
+
62071 {1.10759449, -0.195327774}, //
+
62072 {1.10690868, -0.194488272}, //
+
62073 {1.10634756, -0.193732709}, //
+
62074 {1.10591114, -0.193061113}, //
+
62075 {1.1055994, -0.192473456}, //
+
62076 {1.10541236, -0.191969752}, //
+
62077 {1.10535002, -0.191550002}, //
+
62078 {1.10539198, -0.191203699}, //
+
62079 {1.10551786, -0.19089815}, //
+
62080 {1.10572779, -0.190633327}, //
+
62081 {1.10602164, -0.190409258}, //
+
62082 {1.10639942, -0.190225929}, //
+
62083 {1.10686111, -0.19008334}, //
+
62084 {1.10740674, -0.189981475}, //
+
62085 {1.1080364, -0.189920366}, //
+
62086 {1.10874999, -0.189899996}, //
+
62087 {1.10948396, -0.189920366}, //
+
62088 {1.11017466, -0.189981475}, //
+
62089 {1.1108222, -0.19008334}, //
+
62090 {1.11142659, -0.190225929}, //
+
62091 {1.11198771, -0.190409258}, //
+
62092 {1.11250556, -0.190633327}, //
+
62093 {1.11298025, -0.19089815}, //
+
62094 {1.11341178, -0.191203699}, //
+
62095 {1.11380005, -0.191550002}, //
+
62096 {1.1141988, -0.191906795}, //
+
62097 {1.11463952, -0.192221612}, //
+
62098 {1.1151222, -0.192494437}, //
+
62099 {1.11564696, -0.192725316}, //
+
62100 {1.11621356, -0.192914203}, //
+
62101 {1.11682224, -0.193061113}, //
+
62102 {1.11747289, -0.193166047}, //
+
62103 {1.11816537, -0.19322902}, //
+
62104 {1.11889994, -0.19325}, //
+
62105 {1.11894202, -0.193984568}, //
+
62106 {1.11906791, -0.194677159}, //
+
62107 {1.11927783, -0.195327774}, //
+
62108 {1.11957157, -0.195936427}, //
+
62109 {1.11994934, -0.196503088}, //
+
62110 {1.12041116, -0.197027773}, //
+
62111 {1.12095678, -0.197510496}, //
+
62112 {1.12158644, -0.197951227}, //
+
62113 {1.12230003, -0.198349997}, //
+
62114 {1.12318087, -0.198706791}, //
+
62115 {1.1243124, -0.199021608}, //
+
62116 {1.12569439, -0.199294448}, //
+
62117 {1.1273272, -0.199525312}, //
+
62118 {1.12921047, -0.199714199}, //
+
62119 {1.13134444, -0.199861109}, //
+
62120 {1.13372898, -0.199966043}, //
+
62121 {1.13636422, -0.200029016}, //
+
62122 {1.13925004, -0.200049996}, //
+
62123 {1.14532471, -0.200637653}, //
+
62124 {1.15148211, -0.200889513}, //
+
62125 {1.15772223, -0.20080556}, //
+
62126 {1.1640451, -0.200385809}, //
+
62127 {1.17045057, -0.199630246}, //
+
62128 {1.17693889, -0.198538885}, //
+
62129 {1.18350983, -0.197111726}, //
+
62130 {1.19016361, -0.195348769}, //
+
62131 {1.19690001, -0.19325}, //
+
62132 {1.19984818, -0.191707402}, //
+
62133 {1.20267034, -0.190079629}, //
+
62134 {1.20536661, -0.188366666}, //
+
62135 {1.207937, -0.186568514}, //
+
62136 {1.21038151, -0.184685186}, //
+
62137 {1.21270001, -0.182716668}, //
+
62138 {1.21489263, -0.18066296}, //
+
62139 {1.21695924, -0.178524077}, //
+
62140 {1.21889997, -0.176300004}, //
+
62141 {1.22076786, -0.174043834}, //
+
62142 {1.22259378, -0.171786413}, //
+
62143 {1.22437775, -0.169527784}, //
+
62144 {1.22611976, -0.167267904}, //
+
62145 {1.2278198, -0.165006787}, //
+
62146 {1.22947776, -0.162744448}, //
+
62147 {1.23109388, -0.160480857}, //
+
62148 {1.23266792, -0.158216044}, //
+
62149 {1.2342, -0.155949995}, //
+
62150 {1.2342, -0.152600005}, //
+
62151 {1.23495495, -0.151151851}, //
+
62152 {1.23570859, -0.149829626}, //
+
62153 {1.23646116, -0.148633331}, //
+
62154 {1.2372123, -0.147562966}, //
+
62155 {1.23796237, -0.146618515}, //
+
62156 {1.23871112, -0.145799994}, //
+
62157 {1.23945868, -0.145107403}, //
+
62158 {1.24020493, -0.144540742}, //
+
62159 {1.24094999, -0.144099995}, //
+
62160 {1.24170554, -0.14370124}, //
+
62161 {1.24246109, -0.143260494}, //
+
62162 {1.24321663, -0.142777771}, //
+
62163 {1.24397218, -0.142253086}, //
+
62164 {1.24472773, -0.141686425}, //
+
62165 {1.24548328, -0.141077772}, //
+
62166 {1.24623895, -0.140427157}, //
+
62167 {1.2469945, -0.139734566}, //
+
62168 {1.24775004, -0.138999999}, //
+
62169 {1.24775004, -0.138999999}, //
+
62170 {1.24775004, -0.138811111}, //
+
62171 {1.24775004, -0.138664201}, //
+
62172 {1.24775004, -0.138475314}, //
+
62173 {1.24775004, -0.13824445}, //
+
62174 {1.24775004, -0.13797161}, //
+
62175 {1.24775004, -0.137656793}, //
+
62176 {1.24775004, -0.1373}, //
+
62177 {1.24770808, -0.136953697}, //
+
62178 {1.24758208, -0.136648148}, //
+
62179 {1.24737227, -0.13638334}, //
+
62180 {1.24707842, -0.136159256}, //
+
62181 {1.24670064, -0.135975927}, //
+
62182 {1.24623895, -0.135833338}, //
+
62183 {1.24569321, -0.135731488}, //
+
62184 {1.24506354, -0.135670364}, //
+
62185 {1.24434996, -0.135649994}, //
+
62186 {1.23342657, -0.137108639}, //
+
62187 {1.22325623, -0.138484567}, //
+
62188 {1.21383893, -0.13977778}, //
+
62189 {1.20517468, -0.140988275}, //
+
62190 {1.1972636, -0.142116055}, //
+
62191 {1.19010556, -0.143161118}, //
+
62192 {1.18370056, -0.14412345}, //
+
62193 {1.17804873, -0.14500308}, //
+
62194 {1.17314994, -0.145799994}, //
+
62195 {1.16502655, -0.145799994}, //
+
62196 {1.16165555, -0.145799994}, //
+
62197 {1.15874505, -0.145799994}, //
+
62198 {1.15629506, -0.145799994}, //
+
62199 {1.15430558, -0.145799994}, //
+
62200 {1.15340996, -0.145799994}, //
+
62201 {1.15620005, -0.145799994}, //
+
62202 });
+
62203 polys.push_back({
+
62204 {1.26455307, -0.1017}, //
+
62205 {1.25995684, -0.1017}, //
+
62206 {1.2594111, -0.1017}, //
+
62207 {1.2589494, -0.1017}, //
+
62208 {1.2579, -0.1017}, //
+
62209 {1.25646234, -0.101679012}, //
+
62210 {1.25514936, -0.101616047}, //
+
62211 {1.25396109, -0.101511113}, //
+
62212 {1.2528975, -0.101364195}, //
+
62213 {1.25195861, -0.101175308}, //
+
62214 {1.25114441, -0.100944445}, //
+
62215 {1.2504549, -0.100671604}, //
+
62216 {1.24989009, -0.100356787}, //
+
62217 {1.24944997, -0.100000001}, //
+
62218 {1.24905121, -0.0996117294}, //
+
62219 {1.2486105, -0.0991802439}, //
+
62220 {1.24812782, -0.0987055525}, //
+
62221 {1.24760306, -0.0981876552}, //
+
62222 {1.24703646, -0.0976265445}, //
+
62223 {1.24642777, -0.0970222205}, //
+
62224 {1.24577713, -0.0963746905}, //
+
62225 {1.24508452, -0.0956839472}, //
+
62226 {1.24434996, -0.094949998}, //
+
62227 {1.24428701, -0.0941734537}, //
+
62228 {1.24409819, -0.0933549404}, //
+
62229 {1.24378335, -0.0924944431}, //
+
62230 {1.24334264, -0.0915919766}, //
+
62231 {1.24277592, -0.0906475335}, //
+
62232 {1.24208331, -0.0896611139}, //
+
62233 {1.24126482, -0.0886327177}, //
+
62234 {1.24032032, -0.087562345}, //
+
62235 {1.23924994, -0.0864500031}, //
+
62236 {1.23810613, -0.0853271633}, //
+
62237 {1.23691916, -0.0842030868}, //
+
62238 {1.23568892, -0.0830777809}, //
+
62239 {1.23441541, -0.0819512382}, //
+
62240 {1.23309875, -0.0808234587}, //
+
62241 {1.23173892, -0.0796944425}, //
+
62242 {1.23033583, -0.0785641968}, //
+
62243 {1.22888947, -0.0774327144}, //
+
62244 {1.22739995, -0.0763000026}, //
+
62245 {1.22585738, -0.0751876533}, //
+
62246 {1.22422957, -0.0741172805}, //
+
62247 {1.22251666, -0.0730888918}, //
+
62248 {1.2207185, -0.0721024722}, //
+
62249 {1.21883523, -0.0711580217}, //
+
62250 {1.21686661, -0.0702555552}, //
+
62251 {1.21481299, -0.0693950653}, //
+
62252 {1.21267402, -0.0685765445}, //
+
62253 {1.21045005, -0.0678000003}, //
+
62254 {1.21042895, -0.067779012}, //
+
62255 {1.21036601, -0.0677160472}, //
+
62256 {1.21026111, -0.0676111132}, //
+
62257 {1.21011424, -0.0674641952}, //
+
62258 {1.20969439, -0.0670444444}, //
+
62259 {1.2091068, -0.0664567873}, //
+
62260 {1.20831525, -0.0656652674}, //
+
62261 {1.20865059, -0.0657432079}, //
+
62262 {1.21147287, -0.0664987639}, //
+
62263 {1.21458888, -0.0674222186}, //
+
62264 {1.21799874, -0.0685135797}, //
+
62265 {1.22170246, -0.0697728395}, //
+
62266 {1.22570002, -0.0711999983}, //
+
62267 {1.22982347, -0.0727944449}, //
+
62268 {1.23390496, -0.0745555535}, //
+
62269 {1.23794448, -0.0764833316}, //
+
62270 {1.24194193, -0.0785777792}, //
+
62271 {1.24589753, -0.0808388889}, //
+
62272 {1.24981105, -0.083266668}, //
+
62273 {1.25368273, -0.0858611092}, //
+
62274 {1.25751233, -0.0886222199}, //
+
62275 {1.26129997, -0.09155}, //
+
62276 {1.26203454, -0.0923049375}, //
+
62277 {1.26272714, -0.0930586383}, //
+
62278 {1.26337779, -0.0938111097}, //
+
62279 {1.26398647, -0.0945623443}, //
+
62280 {1.26455307, -0.095312342}, //
+
62281 {1.26507783, -0.0960611105}, //
+
62282 {1.26556051, -0.0968086421}, //
+
62283 {1.26600122, -0.097554937}, //
+
62284 {1.26639998, -0.0983000025}, //
+
62285 {1.26673579, -0.0990135819}, //
+
62286 {1.26698768, -0.0996432081}, //
+
62287 {1.26715553, -0.100188889}, //
+
62288 {1.26723945, -0.100650616}, //
+
62289 {1.26723945, -0.101028398}, //
+
62290 {1.26715553, -0.101322219}, //
+
62291 {1.26698768, -0.101532102}, //
+
62292 {1.26673579, -0.101658024}, //
+
62293 {1.26639998, -0.1017}, //
+
62294 {1.26600122, -0.1017}, //
+
62295 {1.26507783, -0.1017}, //
+
62296 });
+
62297 polys.push_back({
+
62298 {1.15095866, -0.145799994}, //
+
62299 {1.15183461, -0.145799994}, //
+
62300 {1.15236294, -0.145799994}, //
+
62301 {1.15261114, -0.145799994}, //
+
62302 {1.15279996, -0.145799994}, //
+
62303 {1.15282094, -0.145841971}, //
+
62304 {1.15288401, -0.145967901}, //
+
62305 {1.15313578, -0.146471605}, //
+
62306 {1.15332472, -0.146849379}, //
+
62307 {1.15355551, -0.147311106}, //
+
62308 {1.15414321, -0.148486421}, //
+
62309 {1.15450001, -0.149200007}, //
+
62310 {1.15481484, -0.149954945}, //
+
62311 {1.15500367, -0.150708646}, //
+
62312 {1.15506661, -0.15146111}, //
+
62313 {1.15500367, -0.152212352}, //
+
62314 {1.15481484, -0.152962342}, //
+
62315 {1.15450001, -0.15371111}, //
+
62316 {1.15405929, -0.154458642}, //
+
62317 {1.15349257, -0.155204937}, //
+
62318 {1.15279996, -0.155949995}, //
+
62319 {1.15277898, -0.156726539}, //
+
62320 {1.15271604, -0.15754506}, //
+
62321 {1.15261114, -0.158405557}, //
+
62322 {1.15246415, -0.159308031}, //
+
62323 {1.15227532, -0.160252467}, //
+
62324 {1.15204442, -0.161238894}, //
+
62325 {1.15177155, -0.162267283}, //
+
62326 {1.15145683, -0.163337648}, //
+
62327 {1.15110004, -0.164450005}, //
+
62328 {1.15070128, -0.165582716}, //
+
62329 {1.15026045, -0.166714191}, //
+
62330 {1.14977777, -0.167844445}, //
+
62331 {1.14925313, -0.168973461}, //
+
62332 {1.14868641, -0.17010124}, //
+
62333 {1.14807773, -0.171227783}, //
+
62334 {1.1474272, -0.172353089}, //
+
62335 {1.1467346, -0.173477158}, //
+
62336 {1.14600003, -0.174600005}, //
+
62337 {1.14527595, -0.175712347}, //
+
62338 {1.14459264, -0.176782712}, //
+
62339 {1.14394999, -0.177811116}, //
+
62340 {1.1433481, -0.178797528}, //
+
62341 {1.14278698, -0.179741979}, //
+
62342 {1.14226663, -0.180644438}, //
+
62343 {1.14178705, -0.181504935}, //
+
62344 {1.14134812, -0.182323456}, //
+
62345 {1.14094996, -0.1831}, //
+
62346 {1.13933396, -0.186332092}, //
+
62347 {1.13927102, -0.186458021}, //
+
62348 {1.13925004, -0.186499998}, //
+
62349 {1.13906109, -0.186122224}, //
+
62350 {1.13891423, -0.185828388}, //
+
62351 {1.13872528, -0.185450613}, //
+
62352 {1.13822162, -0.184443206}, //
+
62353 {1.13790679, -0.183813587}, //
+
62354 {1.13755, -0.1831}, //
+
62355 {1.13717222, -0.182302475}, //
+
62356 {1.13679445, -0.181420982}, //
+
62357 {1.13641667, -0.180455551}, //
+
62358 {1.1360389, -0.179406166}, //
+
62359 {1.13566113, -0.178272843}, //
+
62360 {1.13528335, -0.177055553}, //
+
62361 {1.13490558, -0.175754324}, //
+
62362 {1.1345278, -0.174369141}, //
+
62363 {1.13415003, -0.172900006}, //
+
62364 {1.13375127, -0.171441361}, //
+
62365 {1.13331044, -0.170065433}, //
+
62366 {1.13282776, -0.168772221}, //
+
62367 {1.13230312, -0.167561725}, //
+
62368 {1.1317364, -0.166433945}, //
+
62369 {1.13112783, -0.165388882}, //
+
62370 {1.13047719, -0.16442655}, //
+
62371 {1.12978458, -0.16354692}, //
+
62372 {1.12905002, -0.162750006}, //
+
62373 {1.128263, -0.162036419}, //
+
62374 {1.12739074, -0.161406785}, //
+
62375 {1.12643337, -0.160861105}, //
+
62376 {1.12539077, -0.160399377}, //
+
62377 {1.12426293, -0.160021603}, //
+
62378 {1.12304997, -0.159727782}, //
+
62379 {1.1217519, -0.159517899}, //
+
62380 {1.12036848, -0.159391969}, //
+
62381 {1.11889994, -0.159349993}, //
+
62382 {1.1147722, -0.159349993}, //
+
62383 {1.11042655, -0.159349993}, //
+
62384 {1.1095469, -0.159349993}, //
+
62385 {1.10874999, -0.159349993}, //
+
62386 {1.10732281, -0.159349993}, //
+
62387 {1.10667217, -0.159349993}, //
+
62388 {1.10497224, -0.159349993}, //
+
62389 {1.10448956, -0.159349993}, //
+
62390 {1.10404873, -0.159349993}, //
+
62391 {1.10364997, -0.159349993}, //
+
62392 {1.10297835, -0.159349993}, //
+
62393 {1.1027056, -0.159349993}, //
+
62394 {1.10247469, -0.159349993}, //
+
62395 {1.10213888, -0.159349993}, //
+
62396 {1.10203397, -0.159349993}, //
+
62397 {1.10197103, -0.159349993}, //
+
62398 {1.10195005, -0.159349993}, //
+
62399 {1.10195005, -0.158972219}, //
+
62400 {1.10195005, -0.158300623}, //
+
62401 {1.10195005, -0.154290736}, //
+
62402 {1.10195005, -0.153333336}, //
+
62403 {1.10195005, -0.145799994}, //
+
62404 {1.10197103, -0.144330859}, //
+
62405 {1.10203397, -0.142945677}, //
+
62406 {1.10213888, -0.141644448}, //
+
62407 {1.10228586, -0.140427157}, //
+
62408 {1.10247469, -0.139293835}, //
+
62409 {1.1027056, -0.13824445}, //
+
62410 {1.10297835, -0.137279019}, //
+
62411 {1.10329318, -0.136397526}, //
+
62412 {1.10364997, -0.135600001}, //
+
62413 {1.10526609, -0.132415429}, //
+
62414 {1.10532904, -0.132291362}, //
+
62415 {1.10535002, -0.132249996}, //
+
62416 {1.10690248, -0.133004934}, //
+
62417 {1.10853767, -0.133758649}, //
+
62418 {1.1102556, -0.134511113}, //
+
62419 {1.11205614, -0.13526234}, //
+
62420 {1.11393952, -0.136012346}, //
+
62421 {1.11590552, -0.136761114}, //
+
62422 {1.11795437, -0.137508646}, //
+
62423 {1.12008584, -0.138254941}, //
+
62424 {1.12230003, -0.138999999}, //
+
62425 {1.12451422, -0.139734566}, //
+
62426 {1.12664568, -0.140427157}, //
+
62427 {1.12869442, -0.141077772}, //
+
62428 {1.13066053, -0.141686425}, //
+
62429 {1.1325438, -0.142253086}, //
+
62430 {1.13434446, -0.142777771}, //
+
62431 {1.13606238, -0.143260494}, //
+
62432 {1.13769758, -0.14370124}, //
+
62433 {1.13925004, -0.144099995}, //
+
62434 {1.14071846, -0.144456789}, //
+
62435 {1.14210188, -0.144771606}, //
+
62436 {1.14339995, -0.145044446}, //
+
62437 {1.14461291, -0.14527531}, //
+
62438 {1.14574075, -0.145464197}, //
+
62439 {1.14678335, -0.145611107}, //
+
62440 {1.14774072, -0.145716056}, //
+
62441 {1.14861298, -0.145779014}, //
+
62442 {1.1494, -0.145799994}, //
+
62443 {1.15074325, -0.145799994}, //
+
62444 });
+
62445 polys.push_back({
+
62446 {1.1494, -0.145799994}, //
+
62447 {1.1494, -0.145799994}, //
+
62448 {1.1494, -0.145799994}, //
+
62449 });
+
62450 polys.push_back({
+
62451 {0.970676541, 1.95792162}, //
+
62452 {0.967917264, 1.95948637}, //
+
62453 {0.964822233, 1.9610945}, //
+
62454 {0.96139133, 1.96274567}, //
+
62455 {0.957624674, 1.96444011}, //
+
62456 {0.953522205, 1.96617782}, //
+
62457 {0.949083924, 1.96795869}, //
+
62458 {0.94430989, 1.96978271}, //
+
62459 {0.939199984, 1.97165}, //
+
62460 {0.933922231, 1.9735173}, //
+
62461 {0.928644419, 1.97534132}, //
+
62462 {0.923366666, 1.97712219}, //
+
62463 {0.918088913, 1.9788599}, //
+
62464 {0.9128111, 1.98055434}, //
+
62465 {0.907533348, 1.98220551}, //
+
62466 {0.902255535, 1.98381352}, //
+
62467 {0.896977782, 1.98537838}, //
+
62468 {0.891700029, 1.98689997}, //
+
62469 {0.886641979, 1.98832715}, //
+
62470 {0.882001221, 1.98958647}, //
+
62471 {0.877777755, 1.99067783}, //
+
62472 {0.873971581, 1.99160123}, //
+
62473 {0.8705827, 1.99235678}, //
+
62474 {0.86761111, 1.99294448}, //
+
62475 {0.865056813, 1.99336421}, //
+
62476 {0.862919748, 1.9936161}, //
+
62477 {0.861199975, 1.99370003}, //
+
62478 {0.858985782, 1.99363708}, //
+
62479 {0.85685432, 1.99344814}, //
+
62480 {0.854805529, 1.99313331}, //
+
62481 {0.85283953, 1.99269259}, //
+
62482 {0.850956202, 1.99212587}, //
+
62483 {0.849155545, 1.99143338}, //
+
62484 {0.84743768, 1.99061477}, //
+
62485 {0.845802486, 1.9896704}, //
+
62486 {0.844250023, 1.98860002}, //
+
62487 {0.842749357, 1.98748827}, //
+
62488 {0.841247559, 1.9864198}, //
+
62489 {0.839744449, 1.98539448}, //
+
62490 {0.838240147, 1.98441231}, //
+
62491 {0.836734593, 1.98347342}, //
+
62492 {0.835227787, 1.9825778}, //
+
62493 {0.83371973, 1.98172534}, //
+
62494 {0.832210481, 1.98091602}, //
+
62495 {0.83069998, 1.98014998}, //
+
62496 {0.829231501, 1.97939444}, //
+
62497 {0.827848136, 1.97863889}, //
+
62498 {0.826550007, 1.97788334}, //
+
62499 {0.825337052, 1.97712779}, //
+
62500 {0.824209273, 1.97637224}, //
+
62501 {0.823166668, 1.97561669}, //
+
62502 {0.822209239, 1.97486115}, //
+
62503 {0.821337044, 1.9741056}, //
+
62504 {0.820550025, 1.97335005}, //
+
62505 {0.819038868, 1.97265744}, //
+
62506 {0.817527771, 1.97209072}, //
+
62507 {0.816016674, 1.97165}, //
+
62508 {0.814505577, 1.97133517}, //
+
62509 {0.812994421, 1.97114635}, //
+
62510 {0.811483324, 1.97108328}, //
+
62511 {0.809972227, 1.97114635}, //
+
62512 {0.80846113, 1.97133517}, //
+
62513 {0.806949973, 1.97165}, //
+
62514 {0.805407405, 1.97202778}, //
+
62515 {0.803779602, 1.97240555}, //
+
62516 {0.802066684, 1.97278333}, //
+
62517 {0.800268531, 1.9731611}, //
+
62518 {0.798385203, 1.97353888}, //
+
62519 {0.79641664, 1.97391665}, //
+
62520 {0.794362962, 1.97429442}, //
+
62521 {0.79222405, 1.9746722}, //
+
62522 {0.790000021, 1.97504997}, //
+
62523 {0.787785828, 1.97542775}, //
+
62524 {0.785654306, 1.97580552}, //
+
62525 {0.783605576, 1.9761833}, //
+
62526 {0.781639516, 1.97656107}, //
+
62527 {0.779756188, 1.97693884}, //
+
62528 {0.777955532, 1.97731662}, //
+
62529 {0.776237667, 1.97769439}, //
+
62530 {0.774602473, 1.97807217}, //
+
62531 {0.77305001, 1.97844994}, //
+
62532 {0.767050028, 1.97996116}, //
+
62533 {0.766633332, 1.98006606}, //
+
62534 {0.766300023, 1.98014998}, //
+
62535 {0.766300023, 2.01064992}, //
+
62536 {0.776449978, 2.01064992}, //
+
62537 {0.777225912, 2.0106709}, //
+
62538 {0.778042614, 2.01073384}, //
+
62539 {0.778900027, 2.01083899}, //
+
62540 {0.77979815, 2.01098585}, //
+
62541 {0.780737042, 2.01117468}, //
+
62542 {0.781716645, 2.01140547}, //
+
62543 {0.782737017, 2.01167846}, //
+
62544 {0.783798158, 2.01199317}, //
+
62545 {0.78490001, 2.01235008}, //
+
62546 {0.786054313, 2.01270676}, //
+
62547 {0.787250638, 2.01302171}, //
+
62548 {0.788488865, 2.01329446}, //
+
62549 {0.789769113, 2.01352525}, //
+
62550 {0.791091383, 2.01371431}, //
+
62551 {0.792455554, 2.01386118}, //
+
62552 {0.793861747, 2.01396608}, //
+
62553 {0.795309901, 2.01402903}, //
+
62554 {0.796800017, 2.01405001}, //
+
62555 {0.800566673, 2.01479506}, //
+
62556 {0.804333329, 2.01554132}, //
+
62557 {0.808099985, 2.016289}, //
+
62558 {0.811866641, 2.01703763}, //
+
62559 {0.815633357, 2.01778769}, //
+
62560 {0.819400012, 2.01853895}, //
+
62561 {0.823166668, 2.0192914}, //
+
62562 {0.826933324, 2.02004504}, //
+
62563 {0.83069998, 2.02080011}, //
+
62564 {0.833753109, 2.02153468}, //
+
62565 {0.836890101, 2.02222705}, //
+
62566 {0.840111136, 2.02287769}, //
+
62567 {0.843416035, 2.02348638}, //
+
62568 {0.846804917, 2.0240531}, //
+
62569 {0.850277781, 2.02457786}, //
+
62570 {0.853834569, 2.02506042}, //
+
62571 {0.857475281, 2.02550125}, //
+
62572 {0.861199975, 2.02589989}, //
+
62573 {0.865050614, 2.02621484}, //
+
62574 {0.869069159, 2.02640367}, //
+
62575 {0.873255551, 2.02646661}, //
+
62576 {0.877609849, 2.02640367}, //
+
62577 {0.882132113, 2.02621484}, //
+
62578 {0.886822224, 2.02589989}, //
+
62579 {0.891680241, 2.02545929}, //
+
62580 {0.896706164, 2.02489257}, //
+
62581 {0.901899993, 2.02419996}, //
+
62582 {0.9106704, 2.02254248}, //
+
62583 {0.920403719, 2.02059269}, //
+
62584 {0.931100011, 2.01834989}, //
+
62585 {0.942759275, 2.01581478}, //
+
62586 {0.955381453, 2.01298714}, //
+
62587 {0.968966663, 2.00986671}, //
+
62588 {0.983514786, 2.00645375}, //
+
62589 {0.999025941, 2.00274825}, //
+
62590 {1.01549995, 1.99874997}, //
+
62591 {1.03209937, 1.99467838}, //
+
62592 {1.04798639, 1.99073029}, //
+
62593 {1.06316113, 1.98690557}, //
+
62594 {1.07762349, 1.98320436}, //
+
62595 {1.09137344, 1.97962654}, //
+
62596 {1.10441113, 1.97617221}, //
+
62597 {1.11673641, 1.97284138}, //
+
62598 {1.12834942, 1.96963394}, //
+
62599 {1.13925004, 1.96654999}, //
+
62600 {1.14858699, 1.96353889}, //
+
62601 {1.15850925, 1.96052778}, //
+
62602 {1.16901672, 1.95751667}, //
+
62603 {1.18010926, 1.95450556}, //
+
62604 {1.191787, 1.95149446}, //
+
62605 {1.20404994, 1.94848335}, //
+
62606 {1.2168982, 1.94547224}, //
+
62607 {1.23033154, 1.94246113}, //
+
62608 {1.24434996, 1.93945003}, //
+
62609 {1.25833702, 1.93648028}, //
+
62610 {1.27165365, 1.93359315}, //
+
62611 {1.28429997, 1.93078887}, //
+
62612 {1.29627597, 1.92806733}, //
+
62613 {1.30758142, 1.92542839}, //
+
62614 {1.31821668, 1.92287219}, //
+
62615 {1.32818151, 1.92039871}, //
+
62616 {1.3374759, 1.91800797}, //
+
62617 {1.34609997, 1.91569996}, //
+
62618 {1.35145128, 1.91427279}, //
+
62619 {1.35697162, 1.91301358}, //
+
62620 {1.36266112, 1.91192222}, //
+
62621 {1.36851978, 1.91099882}, //
+
62622 {1.37454748, 1.91024315}, //
+
62623 {1.38074446, 1.90965557}, //
+
62624 {1.38711047, 1.90923584}, //
+
62625 {1.39364564, 1.90898395}, //
+
62626 {1.40034997, 1.90890002}, //
+
62627 {1.4092586, 1.90936232}, //
+
62628 {1.41791785, 1.90923822}, //
+
62629 {1.42632782, 1.90852773}, //
+
62630 {1.4344883, 1.90723085}, //
+
62631 {1.44239938, 1.90534759}, //
+
62632 {1.45006108, 1.90287781}, //
+
62633 {1.4574734, 1.89982164}, //
+
62634 {1.46463645, 1.89617896}, //
+
62635 {1.47154999, 1.89195001}, //
+
62636 {1.4752537, 1.88965189}, //
+
62637 {1.47883153, 1.88726854}, //
+
62638 {1.48228335, 1.88479996}, //
+
62639 {1.48560929, 1.88224626}, //
+
62640 {1.48880923, 1.87960744}, //
+
62641 {1.49188328, 1.87688339}, //
+
62642 {1.49483144, 1.8740741}, //
+
62643 {1.49765372, 1.87117958}, //
+
62644 {1.50035, 1.86819994}, //
+
62645 {1.50292099, 1.86525118}, //
+
62646 {1.50536728, 1.86242712}, //
+
62647 {1.50768888, 1.85972774}, //
+
62648 {1.50988579, 1.85715306}, //
+
62649 {1.511958, 1.85470307}, //
+
62650 {1.51390553, 1.85237777}, //
+
62651 {1.51572835, 1.85017717}, //
+
62652 {1.51742649, 1.84810126}, //
+
62653 {1.51900005, 1.84615004}, //
+
62654 {1.52042711, 1.84437656}, //
+
62655 {1.52168643, 1.8428117}, //
+
62656 {1.52579999, 1.83770001}, //
+
62657 {1.5122, 1.81060004}, //
+
62658 {1.5112555, 1.81153893}, //
+
62659 {1.51052094, 1.81226909}, //
+
62660 {1.50957656, 1.81320798}, //
+
62661 {1.50370002, 1.81904995}, //
+
62662 {1.50175929, 1.82095921}, //
+
62663 {1.49969256, 1.82290924}, //
+
62664 {1.49749994, 1.82490003}, //
+
62665 {1.49518144, 1.82693148}, //
+
62666 {1.49273705, 1.82900369}, //
+
62667 {1.49016666, 1.83111668}, //
+
62668 {1.48747039, 1.83327031}, //
+
62669 {1.48464811, 1.83546484}, //
+
62670 {1.48169994, 1.83770001}, //
+
62671 {1.4787302, 1.83988273}, //
+
62672 {1.47584319, 1.84189749}, //
+
62673 {1.47303891, 1.8437444}, //
+
62674 {1.47031724, 1.84542346}, //
+
62675 {1.46767843, 1.84693456}, //
+
62676 {1.46512222, 1.84827781}, //
+
62677 {1.46264875, 1.84945309}, //
+
62678 {1.46025801, 1.85046053}, //
+
62679 {1.45795, 1.8513}, //
+
62680 {1.45403707, 1.85202408}, //
+
62681 {1.44983149, 1.85270739}, //
+
62682 {1.44533336, 1.85335004}, //
+
62683 {1.44054258, 1.85395181}, //
+
62684 {1.43545926, 1.85451293}, //
+
62685 {1.43008327, 1.85503328}, //
+
62686 {1.42441487, 1.85551298}, //
+
62687 {1.41845369, 1.85595191}, //
+
62688 {1.41219997, 1.85634995}, //
+
62689 {1.40582037, 1.85670674}, //
+
62690 {1.39948153, 1.85702157}, //
+
62691 {1.39318335, 1.85729444}, //
+
62692 {1.38692594, 1.85752535}, //
+
62693 {1.38070929, 1.85771418}, //
+
62694 {1.3745333, 1.85786116}, //
+
62695 {1.36839819, 1.85796607}, //
+
62696 {1.36230373, 1.85802901}, //
+
62697 {1.35625005, 1.85804999}, //
+
62698 {1.34871662, 1.85804999}, //
+
62699 {1.34494996, 1.85804999}, //
+
62700 {1.3411833, 1.85804999}, //
+
62701 {1.32235003, 1.85804999}, //
+
62702 {1.31837404, 1.85886788}, //
+
62703 {1.31397963, 1.85981047}, //
+
62704 {1.30916667, 1.86087775}, //
+
62705 {1.30393517, 1.86206973}, //
+
62706 {1.29828513, 1.86338639}, //
+
62707 {1.29221666, 1.86482775}, //
+
62708 {1.28572965, 1.8663938}, //
+
62709 {1.27882409, 1.86808455}, //
+
62710 {1.27149999, 1.86989999}, //
+
62711 {1.26392472, 1.87180924}, //
+
62712 {1.2562654, 1.87375927}, //
+
62713 {1.24852228, 1.87574995}, //
+
62714 {1.24069512, 1.87778151}, //
+
62715 {1.23278391, 1.87985373}, //
+
62716 {1.2247889, 1.88196671}, //
+
62717 {1.21670985, 1.88412035}, //
+
62718 {1.20854688, 1.88631487}, //
+
62719 {1.20029998, 1.88855004}, //
+
62720 {1.19222033, 1.89077473}, //
+
62721 {1.18455923, 1.89291549}, //
+
62722 {1.17731667, 1.89497221}, //
+
62723 {1.17049265, 1.89694512}, //
+
62724 {1.16408706, 1.89883399}, //
+
62725 {1.15810001, 1.90063894}, //
+
62726 {1.1525315, 1.90235984}, //
+
62727 {1.14738142, 1.90399694}, //
+
62728 {1.14265001, 1.90555}, //
+
62729 {1.14042592, 1.90629506}, //
+
62730 {1.13828707, 1.90704131}, //
+
62731 {1.13623333, 1.90778887}, //
+
62732 {1.13426483, 1.90853763}, //
+
62733 {1.13238144, 1.90928769}, //
+
62734 {1.13058329, 1.91003895}, //
+
62735 {1.12887037, 1.9107914}, //
+
62736 {1.12724257, 1.91154504}, //
+
62737 {1.1257, 1.91229999}, //
+
62738 {1.122437, 1.91313946}, //
+
62739 {1.11867034, 1.9141469}, //
+
62740 {1.11440003, 1.91532218}, //
+
62741 {1.10962594, 1.91666543}, //
+
62742 {1.10434818, 1.91817653}, //
+
62743 {1.09856665, 1.91985559}, //
+
62744 {1.09228146, 1.9217025}, //
+
62745 {1.08549261, 1.92371726}, //
+
62746 {1.07819998, 1.92589998}, //
+
62747 {1.07364631, 1.92739999}, //
+
62748 {1.0690074, 1.9289}, //
+
62749 {1.06428337, 1.93040001}, //
+
62750 {1.05947411, 1.93190002}, //
+
62751 {1.05457962, 1.93340003}, //
+
62752 {1.04960001, 1.93490005}, //
+
62753 {1.04453516, 1.93640006}, //
+
62754 {1.0393852, 1.93789995}, //
+
62755 {1.03415, 1.93939996}, //
+
62756 {1.02895617, 1.94089007}, //
+
62757 {1.02393019, 1.94233823}, //
+
62758 {1.01907218, 1.94374442}, //
+
62759 {1.01438212, 1.94510865}, //
+
62760 {1.00985992, 1.94643092}, //
+
62761 {1.00550556, 1.94771111}, //
+
62762 {1.00131917, 1.94894934}, //
+
62763 {0.997300625, 1.95014572}, //
+
62764 {0.993449986, 1.95130002}, //
+
62765 {0.98985064, 1.95237041}, //
+
62766 {0.986585796, 1.95331478}, //
+
62767 {0.983655572, 1.95413339}, //
+
62768 {0.981059849, 1.95482588}, //
+
62769 {0.978798747, 1.9553926}, //
+
62770 {0.976872206, 1.95583332}, //
+
62771 {0.975280225, 1.95614815}, //
+
62772 {0.974022865, 1.95633709}, //
+
62773 {0.973100007, 1.95640004}, //
+
62774 });
+
62775 polys.push_back({
+
62776 {0.301750004, 1.95182467}, //
+
62777 {0.301750004, 1.95232844}, //
+
62778 {0.301750004, 1.95148885}, //
+
62779 });
+
62780 polys.push_back({
+
62781 {6.35748386, 1.53410304}, //
+
62782 {6.35758877, 1.53292775}, //
+
62783 {6.35773563, 1.53158462}, //
+
62784 {6.35792446, 1.5300734}, //
+
62785 {6.35815573, 1.52839446}, //
+
62786 {6.35842848, 1.52654755}, //
+
62787 {6.35874319, 1.52453268}, //
+
62788 {6.35909986, 1.52234995}, //
+
62789 {6.35945702, 1.52005243}, //
+
62790 {6.35977173, 1.51767099}, //
+
62791 {6.36004448, 1.5152055}, //
+
62792 {6.36027527, 1.51265621}, //
+
62793 {6.3604641, 1.51002288}, //
+
62794 {6.36061096, 1.5073055}, //
+
62795 {6.36071587, 1.50450432}, //
+
62796 {6.36077881, 1.5016191}, //
+
62797 {6.36079979, 1.49864995}, //
+
62798 {6.36075783, 1.49568021}, //
+
62799 {6.36063194, 1.4927932}, //
+
62800 {6.36042213, 1.48998892}, //
+
62801 {6.3601284, 1.48726726}, //
+
62802 {6.35975075, 1.48462844}, //
+
62803 {6.35928869, 1.48207223}, //
+
62804 {6.35874319, 1.47959876}, //
+
62805 {6.35811377, 1.47720802}, //
+
62806 {6.35739994, 1.47490001}, //
+
62807 {6.35669708, 1.46820557}, //
+
62808 {6.35607672, 1.46167779}, //
+
62809 {6.35553885, 1.45531666}, //
+
62810 {6.35508394, 1.44912219}, //
+
62811 {6.35471153, 1.44309449}, //
+
62812 {6.35442209, 1.43723333}, //
+
62813 {6.35421562, 1.43153894}, //
+
62814 {6.35409117, 1.42601109}, //
+
62815 {6.35405016, 1.42065001}, //
+
62816 {6.35405016, 1.39355004}, //
+
62817 {6.3540082, 1.39191353}, //
+
62818 {6.35388231, 1.39002657}, //
+
62819 {6.35367203, 1.38788891}, //
+
62820 {6.3533783, 1.38550067}, //
+
62821 {6.35300064, 1.38286173}, //
+
62822 {6.35253906, 1.37997222}, //
+
62823 {6.35199308, 1.37683213}, //
+
62824 {6.35136366, 1.37344134}, //
+
62825 {6.35064983, 1.36979997}, //
+
62826 {6.34989452, 1.36444879}, //
+
62827 {6.34913874, 1.35892844}, //
+
62828 {6.34838343, 1.35323894}, //
+
62829 {6.34762764, 1.34738028}, //
+
62830 {6.34687233, 1.34135246}, //
+
62831 {6.34611654, 1.33515561}, //
+
62832 {6.34536123, 1.32878947}, //
+
62833 {6.34460545, 1.3222543}, //
+
62834 {6.34385014, 1.31554997}, //
+
62835 {6.34313631, 1.30881357}, //
+
62836 {6.34250689, 1.30215991}, //
+
62837 {6.34196091, 1.29558885}, //
+
62838 {6.34149933, 1.28910065}, //
+
62839 {6.34112167, 1.28269506}, //
+
62840 {6.34082794, 1.27637219}, //
+
62841 {6.34061813, 1.27013206}, //
+
62842 {6.34049177, 1.26397467}, //
+
62843 {6.34044981, 1.2579}, //
+
62844 {6.33970499, 1.24913824}, //
+
62845 {6.33895874, 1.24091971}, //
+
62846 {6.33821106, 1.23324442}, //
+
62847 {6.33746243, 1.22611237}, //
+
62848 {6.33671236, 1.21952343}, //
+
62849 {6.33596134, 1.21347773}, //
+
62850 {6.33520842, 1.20797527}, //
+
62851 {6.33445501, 1.20301604}, //
+
62852 {6.33370018, 1.19860005}, //
+
62853 {6.33281898, 1.19451857}, //
+
62854 {6.33168745, 1.19056296}, //
+
62855 {6.33030558, 1.18673337}, //
+
62856 {6.32867289, 1.18302965}, //
+
62857 {6.32678938, 1.17945182}, //
+
62858 {6.32465553, 1.176}, //
+
62859 {6.32227087, 1.17267406}, //
+
62860 {6.31963587, 1.16947412}, //
+
62861 {6.31675005, 1.16639996}, //
+
62862 {6.31458807, 1.16337836}, //
+
62863 {6.31263638, 1.16035807}, //
+
62864 {6.31089449, 1.15733886}, //
+
62865 {6.30936241, 1.15432096}, //
+
62866 {6.30804014, 1.15130436}, //
+
62867 {6.30692768, 1.14828885}, //
+
62868 {6.30602551, 1.14527464}, //
+
62869 {6.30533266, 1.14226174}, //
+
62870 {6.3048501, 1.13925004}, //
+
62871 {6.30453539, 1.1362803}, //
+
62872 {6.30434608, 1.13339317}, //
+
62873 {6.30428314, 1.13058889}, //
+
62874 {6.30434608, 1.12786734}, //
+
62875 {6.30453539, 1.1252284}, //
+
62876 {6.3048501, 1.1226722}, //
+
62877 {6.3052907, 1.12019873}, //
+
62878 {6.30585718, 1.11780798}, //
+
62879 {6.30655003, 1.11549997}, //
+
62880 {6.30655003, 1.1132611}, //
+
62881 {6.30655003, 1.11251235}, //
+
62882 {6.30655003, 1.11214995}, //
+
62883 {6.30579424, 1.11371291}, //
+
62884 {6.30503893, 1.11540186}, //
+
62885 {6.30428314, 1.11721671}, //
+
62886 {6.30352783, 1.11915743}, //
+
62887 {6.30277205, 1.12122405}, //
+
62888 {6.30201674, 1.12341666}, //
+
62889 {6.30126095, 1.12573516}, //
+
62890 {6.30050564, 1.12817967}, //
+
62891 {6.29974985, 1.13074994}, //
+
62892 {6.29896307, 1.13341486}, //
+
62893 {6.29809093, 1.13612032}, //
+
62894 {6.29713345, 1.13886666}, //
+
62895 {6.2960906, 1.14165366}, //
+
62896 {6.29496288, 1.14448154}, //
+
62897 {6.29374981, 1.14734995}, //
+
62898 {6.29245186, 1.15025926}, //
+
62899 {6.29106855, 1.15320921}, //
+
62900 {6.2895999, 1.15620005}, //
+
62901 {6.28738594, 1.16130984}, //
+
62902 {6.28525448, 1.16608393}, //
+
62903 {6.28320551, 1.17052221}, //
+
62904 {6.28123951, 1.17462468}, //
+
62905 {6.279356, 1.17839134}, //
+
62906 {6.27755547, 1.18182218}, //
+
62907 {6.27583742, 1.18491733}, //
+
62908 {6.27420235, 1.18767655}, //
+
62909 {6.27264977, 1.19009995}, //
+
62910 {6.27123356, 1.19161046}, //
+
62911 {6.26998329, 1.19311976}, //
+
62912 {6.26889992, 1.19462776}, //
+
62913 {6.26798344, 1.19613457}, //
+
62914 {6.26723337, 1.19764018}, //
+
62915 {6.2666502, 1.19914448}, //
+
62916 {6.26623344, 1.20064747}, //
+
62917 {6.2659831, 1.20214939}, //
+
62918 {6.26590014, 1.20365}, //
+
62919 {6.26447296, 1.20514011}, //
+
62920 {6.26321363, 1.20658827}, //
+
62921 {6.26212215, 1.20799446}, //
+
62922 {6.261199, 1.20935869}, //
+
62923 {6.26044321, 1.21068084}, //
+
62924 {6.25985575, 1.21196115}, //
+
62925 {6.25943565, 1.21319938}, //
+
62926 {6.25918388, 1.21439564}, //
+
62927 {6.25909996, 1.21554995}, //
+
62928 {6.25909996, 1.22399998}, //
+
62929 {6.25918388, 1.22488081}, //
+
62930 {6.25943565, 1.22601235}, //
+
62931 {6.25985575, 1.22739446}, //
+
62932 {6.26044321, 1.22902715}, //
+
62933 {6.261199, 1.23091054}, //
+
62934 {6.26212215, 1.23304439}, //
+
62935 {6.26321363, 1.23542905}, //
+
62936 {6.26447296, 1.23806417}, //
+
62937 {6.26590014, 1.24094999}, //
+
62938 {6.26664495, 1.24392962}, //
+
62939 {6.2673912, 1.24682403}, //
+
62940 {6.26813889, 1.24963331}, //
+
62941 {6.26888752, 1.25235736}, //
+
62942 {6.26963758, 1.2549963}, //
+
62943 {6.27038908, 1.25755}, //
+
62944 {6.27114153, 1.26001847}, //
+
62945 {6.27189493, 1.26240182}, //
+
62946 {6.27264977, 1.26470006}, //
+
62947 {6.27340555, 1.26700807}, //
+
62948 {6.27416134, 1.26939881}, //
+
62949 {6.27491665, 1.27187216}, //
+
62950 {6.27567244, 1.27442837}, //
+
62951 {6.27642775, 1.2770673}, //
+
62952 {6.27718353, 1.27978885}, //
+
62953 {6.27793884, 1.28259325}, //
+
62954 {6.27869463, 1.28548026}, //
+
62955 {6.27944994, 1.28845}, //
+
62956 {6.2794919, 1.29221666}, //
+
62957 {6.27961779, 1.29598331}, //
+
62958 {6.27982759, 1.29974997}, //
+
62959 {6.2801218, 1.30351663}, //
+
62960 {6.28049946, 1.30728328}, //
+
62961 {6.28096104, 1.31105006}, //
+
62962 {6.28150702, 1.31481671}, //
+
62963 {6.28213644, 1.31858337}, //
+
62964 {6.28284979, 1.32235003}, //
+
62965 {6.28359509, 1.32464755}, //
+
62966 {6.28434134, 1.32702899}, //
+
62967 {6.28508902, 1.32949448}, //
+
62968 {6.28583765, 1.33204389}, //
+
62969 {6.28658772, 1.33467722}, //
+
62970 {6.28733873, 1.33739448}, //
+
62971 {6.28809118, 1.34019566}, //
+
62972 {6.28884506, 1.34308088}, //
+
62973 {6.2895999, 1.34605002}, //
+
62974 {6.29035568, 1.34923887}, //
+
62975 {6.29111099, 1.35276115}, //
+
62976 {6.29186678, 1.35661662}, //
+
62977 {6.29262209, 1.36080551}, //
+
62978 {6.29337788, 1.36532784}, //
+
62979 {6.29413319, 1.37018335}, //
+
62980 {6.29488897, 1.37537217}, //
+
62981 {6.29564428, 1.38089442}, //
+
62982 {6.29640007, 1.38674998}, //
+
62983 {6.29781675, 1.39428401}, //
+
62984 {6.29906654, 1.40181911}, //
+
62985 {6.30014992, 1.40935552}, //
+
62986 {6.30106688, 1.41689324}, //
+
62987 {6.30181646, 1.42443204}, //
+
62988 {6.30240011, 1.43197227}, //
+
62989 {6.30281687, 1.43951356}, //
+
62990 {6.30306673, 1.44705617}, //
+
62991 {6.30315018, 1.45459998}, //
+
62992 {6.30315018, 1.46230125}, //
+
62993 {6.30315018, 1.46627772}, //
+
62994 {6.30315018, 1.47033823}, //
+
62995 {6.30315018, 1.49189997}, //
+
62996 {6.30319214, 1.49699938}, //
+
62997 {6.30331802, 1.50176418}, //
+
62998 {6.30352783, 1.50619447}, //
+
62999 {6.30382156, 1.51029015}, //
+
63000 {6.30419922, 1.5140512}, //
+
63001 {6.30466127, 1.51747775}, //
+
63002 {6.30520678, 1.5205698}, //
+
63003 {6.3058362, 1.52332711}, //
+
63004 {6.30655003, 1.52575004}, //
+
63005 {6.30730534, 1.52797472}, //
+
63006 {6.30806112, 1.53011549}, //
+
63007 {6.30881643, 1.5321722}, //
+
63008 {6.30957222, 1.53414512}, //
+
63009 {6.31032801, 1.53603399}, //
+
63010 {6.31108332, 1.53783894}, //
+
63011 {6.3118391, 1.53955984}, //
+
63012 {6.31259441, 1.54119694}, //
+
63013 {6.3133502, 1.54275}, //
+
63014 {6.31548023, 1.54576111}, //
+
63015 {6.31735992, 1.54877222}, //
+
63016 {6.3189888, 1.55178332}, //
+
63017 {6.32036734, 1.55479443}, //
+
63018 {6.32149506, 1.55780554}, //
+
63019 {6.32237244, 1.56081665}, //
+
63020 {6.322999, 1.56382775}, //
+
63021 {6.32337475, 1.56683886}, //
+
63022 {6.32350016, 1.56984997}, //
+
63023 {6.32431793, 1.57277775}, //
+
63024 {6.32526064, 1.57553887}, //
+
63025 {6.3263278, 1.57813334}, //
+
63026 {6.32751989, 1.58056116}, //
+
63027 {6.32883644, 1.5828222}, //
+
63028 {6.33027792, 1.58491671}, //
+
63029 {6.33184385, 1.58684444}, //
+
63030 {6.33353472, 1.58860552}, //
+
63031 {6.33535004, 1.59019995}, //
+
63032 {6.33721781, 1.59166908}, //
+
63033 {6.33904362, 1.59305429}, //
+
63034 {6.34082794, 1.59435558}, //
+
63035 {6.34256983, 1.59557283}, //
+
63036 {6.34426975, 1.59670615}, //
+
63037 {6.34592772, 1.59775555}, //
+
63038 {6.34754372, 1.59872103}, //
+
63039 {6.34911776, 1.59960246}, //
+
63040 {6.35064983, 1.60039997}, //
+
63041 {6.35062885, 1.60035801}, //
+
63042 {6.35031414, 1.59972835}, //
+
63043 {6.35012531, 1.59935057}, //
+
63044 {6.34989452, 1.59888887}, //
+
63045 {6.34962177, 1.59834325}, //
+
63046 {6.34930658, 1.59771359}, //
+
63047 {6.34894991, 1.597}, //
+
63048 {6.34857225, 1.59620249}, //
+
63049 {6.3481946, 1.59532094}, //
+
63050 {6.34781647, 1.59435558}, //
+
63051 {6.34743881, 1.59330618}, //
+
63052 {6.34706116, 1.59217286}, //
+
63053 {6.3466835, 1.59095562}, //
+
63054 {6.34630537, 1.58965433}, //
+
63055 {6.34592772, 1.58826911}, //
+
63056 {6.34555006, 1.58679998}, //
+
63057 {6.34515142, 1.58529937}, //
+
63058 {6.34471035, 1.58379757}, //
+
63059 {6.34422779, 1.58229446}, //
+
63060 {6.34370327, 1.58079016}, //
+
63061 {6.34313631, 1.57928455}, //
+
63062 {6.34252787, 1.57777774}, //
+
63063 {6.34187698, 1.57626975}, //
+
63064 {6.34118462, 1.57476044}, //
+
63065 {6.34044981, 1.57325006}, //
+
63066 {6.33970499, 1.57173955}, //
+
63067 {6.33895874, 1.57023025}, //
+
63068 {6.33821106, 1.56872225}, //
+
63069 {6.33746243, 1.56721544}, //
+
63070 {6.33671236, 1.56570983}, //
+
63071 {6.33596134, 1.56420553}, //
+
63072 {6.33520842, 1.56270242}, //
+
63073 {6.33445501, 1.56120062}, //
+
63074 {6.33370018, 1.55970001}, //
+
63075 {6.33370018, 1.55667782}, //
+
63076 {6.33370018, 1.55533457}, //
+
63077 {6.33370018, 1.5502975}, //
+
63078 {6.33370018, 1.54828274}, //
+
63079 {6.33370018, 1.54610002}, //
+
63080 {6.33370018, 1.5415889}, //
+
63081 {6.33370018, 1.53933334}, //
+
63082 {6.33370018, 1.53707778}, //
+
63083 {6.33370018, 1.53031111}, //
+
63084 {6.33370018, 1.52805555}, //
+
63085 {6.33370018, 1.52126908}, //
+
63086 {6.33370018, 1.51900554}, //
+
63087 {6.33370018, 1.51674318}, //
+
63088 {6.33370018, 1.50996363}, //
+
63089 {6.33370018, 1.50770617}, //
+
63090 {6.33370018, 1.50545001}, //
+
63091 {6.33361626, 1.50235498}, //
+
63092 {6.33336401, 1.49909198}, //
+
63093 {6.33294439, 1.49566114}, //
+
63094 {6.33235693, 1.49206233}, //
+
63095 {6.33160114, 1.48829567}, //
+
63096 {6.33067799, 1.48436105}, //
+
63097 {6.32958651, 1.48025858}, //
+
63098 {6.32832718, 1.47598827}, //
+
63099 {6.32690001, 1.47154999}, //
+
63100 {6.32614517, 1.4678247}, //
+
63101 {6.32539129, 1.46418214}, //
+
63102 {6.32463884, 1.46062219}, //
+
63103 {6.32388783, 1.45714509}, //
+
63104 {6.32313776, 1.45375061}, //
+
63105 {6.32238913, 1.45043886}, //
+
63106 {6.32164145, 1.44720984}, //
+
63107 {6.3208952, 1.44406354}, //
+
63108 {6.3201499, 1.44099998}, //
+
63109 {6.3201704, 1.43721235}, //
+
63110 {6.32023144, 1.43338275}, //
+
63111 {6.32033348, 1.42951107}, //
+
63112 {6.32047606, 1.42559755}, //
+
63113 {6.32065916, 1.42164195}, //
+
63114 {6.32088327, 1.4176445}, //
+
63115 {6.32114792, 1.41360497}, //
+
63116 {6.32145357, 1.40952349}, //
+
63117 {6.32180023, 1.40540004}, //
+
63118 {6.32219887, 1.40136051}, //
+
63119 {6.32263947, 1.39753091}, //
+
63120 {6.32312202, 1.39391112}, //
+
63121 {6.32364702, 1.39050126}, //
+
63122 {6.3242135, 1.38730121}, //
+
63123 {6.32482243, 1.38431108}, //
+
63124 {6.32547283, 1.38153088}, //
+
63125 {6.3261652, 1.37896049}, //
+
63126 {6.32690001, 1.37660003}, //
+
63127 {6.32763433, 1.3759284}, //
+
63128 {6.32832718, 1.37542474}, //
+
63129 {6.32897758, 1.37508893}, //
+
63130 {6.32958651, 1.37492096}, //
+
63131 {6.33015299, 1.37492096}, //
+
63132 {6.33067799, 1.37508893}, //
+
63133 {6.33116055, 1.37542474}, //
+
63134 {6.33160114, 1.3759284}, //
+
63135 {6.33199978, 1.37660003}, //
+
63136 {6.33235693, 1.3774389}, //
+
63137 {6.33267164, 1.37844443}, //
+
63138 {6.33294439, 1.37961662}, //
+
63139 {6.33317518, 1.38095558}, //
+
63140 {6.33336401, 1.38246107}, //
+
63141 {6.33351088, 1.38413334}, //
+
63142 {6.33361626, 1.38597226}, //
+
63143 {6.3336792, 1.38797772}, //
+
63144 {6.33370018, 1.39014995}, //
+
63145 {6.33441353, 1.39170241}, //
+
63146 {6.33504343, 1.39333761}, //
+
63147 {6.33558893, 1.39505553}, //
+
63148 {6.33605051, 1.39685619}, //
+
63149 {6.33642817, 1.39873946}, //
+
63150 {6.33672237, 1.40070558}, //
+
63151 {6.33693218, 1.40275431}, //
+
63152 {6.33705807, 1.40488577}, //
+
63153 {6.33710003, 1.40709996}, //
+
63154 {6.33780289, 1.41174757}, //
+
63155 {6.33842325, 1.41664565}, //
+
63156 {6.33896112, 1.42179441}, //
+
63157 {6.33941603, 1.42719388}, //
+
63158 {6.33978844, 1.4328438}, //
+
63159 {6.34007788, 1.43874443}, //
+
63160 {6.34028435, 1.44489563}, //
+
63161 {6.3404088, 1.45129752}, //
+
63162 {6.34044981, 1.45795}, //
+
63163 {6.34044981, 1.46285558}, //
+
63164 {6.34044981, 1.46465611}, //
+
63165 {6.34044981, 1.47490001}, //
+
63166 {6.34124756, 1.4801358}, //
+
63167 {6.34212923, 1.48528767}, //
+
63168 {6.34309435, 1.49035561}, //
+
63169 {6.34414387, 1.49533951}, //
+
63170 {6.34527731, 1.50023949}, //
+
63171 {6.34649467, 1.50505555}, //
+
63172 {6.34779549, 1.50978768}, //
+
63173 {6.3491807, 1.51443577}, //
+
63174 {6.35064983, 1.51900005}, //
+
63175 {6.35140514, 1.52121425}, //
+
63176 {6.35215855, 1.52334571}, //
+
63177 {6.352911, 1.52539444}, //
+
63178 {6.35366249, 1.52736044}, //
+
63179 {6.35441256, 1.52924383}, //
+
63180 {6.35516119, 1.53104448}, //
+
63181 {6.35590887, 1.53276229}, //
+
63182 {6.35665512, 1.53439748}, //
+
63183 {6.35739994, 1.53594995}, //
+
63184 {6.35742092, 1.53511047}, //
+
63185 });
+
63186 polys.push_back({
+
63187 {6.45574999, 1.45231116}, //
+
63188 {6.45574999, 1.4515624}, //
+
63189 {6.45574999, 1.44478023}, //
+
63190 {6.45574999, 1.44327223}, //
+
63191 {6.45574999, 1.44176543}, //
+
63192 {6.45574999, 1.43425}, //
+
63193 {6.45499468, 1.43355739}, //
+
63194 {6.45423889, 1.43299079}, //
+
63195 {6.4534831, 1.43254995}, //
+
63196 {6.45272779, 1.43223524}, //
+
63197 {6.45197201, 1.43204629}, //
+
63198 {6.4512167, 1.43198335}, //
+
63199 {6.45046091, 1.43204629}, //
+
63200 {6.4497056, 1.43223524}, //
+
63201 {6.44894981, 1.43254995}, //
+
63202 {6.44818401, 1.43301105}, //
+
63203 {6.44737482, 1.43363893}, //
+
63204 {6.44652224, 1.43443334}, //
+
63205 {6.44562674, 1.43539441}, //
+
63206 {6.44468784, 1.43652225}, //
+
63207 {6.44370556, 1.43781662}, //
+
63208 {6.44268036, 1.43927777}, //
+
63209 {6.44161177, 1.44090557}, //
+
63210 {6.44049978, 1.44270003}, //
+
63211 {6.43936682, 1.44456732}, //
+
63212 {6.43823338, 1.44639134}, //
+
63213 {6.43709993, 1.44817221}, //
+
63214 {6.43596649, 1.44990993}, //
+
63215 {6.43483353, 1.45160437}, //
+
63216 {6.43370008, 1.45325553}, //
+
63217 {6.43256664, 1.45486355}, //
+
63218 {6.4314332, 1.45642841}, //
+
63219 {6.43030024, 1.45795}, //
+
63220 {6.42919827, 1.45946109}, //
+
63221 {6.42813683, 1.46097219}, //
+
63222 {6.42711687, 1.46248329}, //
+
63223 {6.42613697, 1.4639945}, //
+
63224 {6.42519808, 1.4655056}, //
+
63225 {6.42430019, 1.4670167}, //
+
63226 {6.42344236, 1.46852779}, //
+
63227 {6.42262602, 1.47003889}, //
+
63228 {6.4218502, 1.47154999}, //
+
63229 {6.42042303, 1.47460306}, //
+
63230 {6.4191637, 1.47774017}, //
+
63231 {6.41807222, 1.48096108}, //
+
63232 {6.41714859, 1.48426604}, //
+
63233 {6.41639328, 1.48765492}, //
+
63234 {6.41580534, 1.49112773}, //
+
63235 {6.41538572, 1.49468458}, //
+
63236 {6.41513395, 1.49832535}, //
+
63237 {6.41505003, 1.50205004}, //
+
63238 {6.41509199, 1.50577474}, //
+
63239 {6.41521788, 1.50941539}, //
+
63240 {6.41542768, 1.51297224}, //
+
63241 {6.41572142, 1.51644504}, //
+
63242 {6.41609955, 1.51983392}, //
+
63243 {6.41656113, 1.52313888}, //
+
63244 {6.41710663, 1.52635992}, //
+
63245 {6.41773653, 1.52949691}, //
+
63246 {6.41844988, 1.53254998}, //
+
63247 {6.41855431, 1.53466976}, //
+
63248 {6.41886711, 1.53649569}, //
+
63249 {6.41938877, 1.53802776}, //
+
63250 {6.42011929, 1.53926599}, //
+
63251 {6.42105818, 1.54021049}, //
+
63252 {6.42220545, 1.54086113}, //
+
63253 {6.42356157, 1.54121792}, //
+
63254 {6.42512655, 1.54128087}, //
+
63255 {6.42689991, 1.54104996}, //
+
63256 {6.42872572, 1.54052591}, //
+
63257 {6.43042612, 1.53970921}, //
+
63258 {6.43200016, 1.53859997}, //
+
63259 {6.43344831, 1.53719819}, //
+
63260 {6.43477058, 1.53550375}, //
+
63261 {6.43596649, 1.53351665}, //
+
63262 {6.43703699, 1.53123701}, //
+
63263 {6.43798161, 1.52866483}, //
+
63264 {6.43879986, 1.52579999}, //
+
63265 {6.43953466, 1.52365923}, //
+
63266 {6.44022703, 1.52177036}, //
+
63267 {6.44087791, 1.52013338}, //
+
63268 {6.44148636, 1.51874816}, //
+
63269 {6.44205332, 1.51761484}, //
+
63270 {6.44257784, 1.51673329}, //
+
63271 {6.4430604, 1.51610374}, //
+
63272 {6.44350147, 1.51572597}, //
+
63273 {6.44390011, 1.51559997}, //
+
63274 {6.44425678, 1.51568329}, //
+
63275 {6.4445715, 1.51593328}, //
+
63276 {6.44484425, 1.51635003}, //
+
63277 {6.44507551, 1.51693332}, //
+
63278 {6.44526434, 1.51768339}, //
+
63279 {6.44541121, 1.51859999}, //
+
63280 {6.44551611, 1.51968336}, //
+
63281 {6.44557905, 1.52093339}, //
+
63282 {6.44560003, 1.52234995}, //
+
63283 {6.44560003, 1.52386117}, //
+
63284 {6.44560003, 1.52537227}, //
+
63285 {6.44560003, 1.53594995}, //
+
63286 {6.44564152, 1.53733516}, //
+
63287 {6.4457655, 1.53846848}, //
+
63288 {6.44597244, 1.53935003}, //
+
63289 {6.44626188, 1.53997958}, //
+
63290 {6.44663382, 1.54035735}, //
+
63291 {6.44708872, 1.54048336}, //
+
63292 {6.44762659, 1.54035735}, //
+
63293 {6.44824696, 1.53997958}, //
+
63294 {6.44894981, 1.53935003}, //
+
63295 {6.44972658, 1.53855252}, //
+
63296 {6.45054483, 1.53767097}, //
+
63297 {6.45140553, 1.53670561}, //
+
63298 {6.45230818, 1.53565621}, //
+
63299 {6.45325232, 1.53452289}, //
+
63300 {6.45423889, 1.53330553}, //
+
63301 {6.45526743, 1.53200436}, //
+
63302 {6.45633745, 1.53061914}, //
+
63303 {6.45744991, 1.52915001}, //
+
63304 {6.4585619, 1.5276494}, //
+
63305 {6.45963001, 1.52614748}, //
+
63306 {6.46065569, 1.52464449}, //
+
63307 {6.4616375, 1.52314007}, //
+
63308 {6.46257639, 1.52163458}, //
+
63309 {6.46347237, 1.52012777}, //
+
63310 {6.46432447, 1.51861978}, //
+
63311 {6.46513414, 1.51711047}, //
+
63312 {6.46589994, 1.51559997}, //
+
63313 {6.46592093, 1.5134697}, //
+
63314 {6.46598387, 1.51159012}, //
+
63315 {6.46608877, 1.50996113}, //
+
63316 {6.46623564, 1.50858271}, //
+
63317 {6.46642447, 1.50745499}, //
+
63318 {6.46665573, 1.50657773}, //
+
63319 {6.46692848, 1.50595129}, //
+
63320 {6.46724319, 1.5055753}, //
+
63321 {6.46759987, 1.50545001}, //
+
63322 {6.46795702, 1.50551236}, //
+
63323 {6.46827173, 1.5056994}, //
+
63324 {6.46854448, 1.50601113}, //
+
63325 {6.46877527, 1.50644755}, //
+
63326 {6.4689641, 1.50700867}, //
+
63327 {6.46911097, 1.50769448}, //
+
63328 {6.46921587, 1.50850499}, //
+
63329 {6.46927881, 1.50944006}, //
+
63330 {6.46929979, 1.51049995}, //
+
63331 {6.46929979, 1.528687}, //
+
63332 {6.46929979, 1.5297482}, //
+
63333 {6.46929979, 1.53085005}, //
+
63334 {6.46934175, 1.53196239}, //
+
63335 {6.46946812, 1.53303277}, //
+
63336 {6.46967793, 1.53406107}, //
+
63337 {6.46997166, 1.53504753}, //
+
63338 {6.47034931, 1.53599203}, //
+
63339 {6.47081089, 1.53689444}, //
+
63340 {6.47135687, 1.53775489}, //
+
63341 {6.47198629, 1.5385735}, //
+
63342 {6.47270012, 1.53935003}, //
+
63343 {6.47343445, 1.5400846}, //
+
63344 {6.47412729, 1.54077721}, //
+
63345 {6.4747777, 1.54142773}, //
+
63346 {6.47538662, 1.54203641}, //
+
63347 {6.47647762, 1.54312778}, //
+
63348 {6.47696066, 1.54361045}, //
+
63349 {6.47740126, 1.54405129}, //
+
63350 {6.47779989, 1.54445004}, //
+
63351 {6.47815657, 1.54476476}, //
+
63352 {6.47847176, 1.5449537}, //
+
63353 {6.47874451, 1.54501665}, //
+
63354 {6.4789753, 1.5449537}, //
+
63355 {6.47916412, 1.54476476}, //
+
63356 {6.47931099, 1.54445004}, //
+
63357 {6.47941589, 1.54400921}, //
+
63358 {6.47947884, 1.54344261}, //
+
63359 {6.47949982, 1.54275}, //
+
63360 {6.48171425, 1.53530002}, //
+
63361 {6.48384571, 1.52801669}, //
+
63362 {6.48589468, 1.52090001}, //
+
63363 {6.48786068, 1.51394999}, //
+
63364 {6.48974371, 1.50716662}, //
+
63365 {6.49154425, 1.50055003}, //
+
63366 {6.49326229, 1.49409997}, //
+
63367 {6.49489737, 1.48781669}, //
+
63368 {6.49644995, 1.48169994}, //
+
63369 {6.498034, 1.47782838}, //
+
63370 {6.4997859, 1.4737469}, //
+
63371 {6.50170565, 1.4694556}, //
+
63372 {6.50379324, 1.46495438}, //
+
63373 {6.50604868, 1.46024323}, //
+
63374 {6.50847244, 1.45532227}, //
+
63375 {6.51106358, 1.45019138}, //
+
63376 {6.51382303, 1.44485056}, //
+
63377 {6.51674986, 1.43929994}, //
+
63378 {6.51968813, 1.43375993}, //
+
63379 {6.52245855, 1.42842841}, //
+
63380 {6.52506113, 1.42330551}, //
+
63381 {6.52749586, 1.41839135}, //
+
63382 {6.52976227, 1.4136858}, //
+
63383 {6.53186131, 1.40918887}, //
+
63384 {6.53379202, 1.40490067}, //
+
63385 {6.53555489, 1.40082097}, //
+
63386 {6.53714991, 1.39695001}, //
+
63387 {6.54434824, 1.3860265}, //
+
63388 {6.55087614, 1.37585616}, //
+
63389 {6.55673313, 1.36643887}, //
+
63390 {6.56192017, 1.35777473}, //
+
63391 {6.56643724, 1.34986353}, //
+
63392 {6.57028341, 1.34270561}, //
+
63393 {6.57345915, 1.33630061}, //
+
63394 {6.57596493, 1.33064878}, //
+
63395 {6.5777998, 1.32574999}, //
+
63396 {6.57926893, 1.32277036}, //
+
63397 {6.58065414, 1.31987596}, //
+
63398 {6.58195543, 1.31706667}, //
+
63399 {6.5831728, 1.31434262}, //
+
63400 {6.58430624, 1.31170368}, //
+
63401 {6.58535576, 1.30914998}, //
+
63402 {6.58632088, 1.30668151}, //
+
63403 {6.58720255, 1.30429816}, //
+
63404 {6.58799982, 1.30200005}, //
+
63405 {6.59090614, 1.2975198}, //
+
63406 {6.59360266, 1.29312348}, //
+
63407 {6.59608889, 1.28881109}, //
+
63408 {6.59836531, 1.28458273}, //
+
63409 {6.60043192, 1.2804383}, //
+
63410 {6.60228872, 1.2763778}, //
+
63411 {6.60393572, 1.27240121}, //
+
63412 {6.60537291, 1.26850867}, //
+
63413 {6.60659981, 1.26470006}, //
+
63414 {6.60764933, 1.26099563}, //
+
63415 {6.608531, 1.25741601}, //
+
63416 {6.60924435, 1.25396109}, //
+
63417 {6.60979033, 1.25063086}, //
+
63418 {6.61016798, 1.24742532}, //
+
63419 {6.61037779, 1.24434447}, //
+
63420 {6.61041975, 1.24138832}, //
+
63421 {6.61029387, 1.23855674}, //
+
63422 {6.61000013, 1.23584998}, //
+
63423 {6.60965347, 1.23336291}, //
+
63424 {6.6093483, 1.23116851}, //
+
63425 {6.60885906, 1.22765744}, //
+
63426 {6.60867596, 1.22634077}, //
+
63427 {6.60853338, 1.22531664}, //
+
63428 {6.60843134, 1.22458518}, //
+
63429 {6.6083498, 1.22399998}, //
+
63430 {6.60797215, 1.22512782}, //
+
63431 {6.60730076, 1.22713268}, //
+
63432 {6.6062932, 1.23014009}, //
+
63433 {6.60494995, 1.23415005}, //
+
63434 {6.60419464, 1.23645806}, //
+
63435 {6.60343885, 1.23884881}, //
+
63436 {6.60268354, 1.24132228}, //
+
63437 {6.60192776, 1.24387836}, //
+
63438 {6.60117245, 1.2465173}, //
+
63439 {6.60041666, 1.24923885}, //
+
63440 {6.59966087, 1.25204325}, //
+
63441 {6.59890556, 1.25493026}, //
+
63442 {6.59814978, 1.2579}, //
+
63443 {6.59660721, 1.26100492}, //
+
63444 {6.59497976, 1.26427531}, //
+
63445 {6.59326649, 1.26771116}, //
+
63446 {6.59146833, 1.27131236}, //
+
63447 {6.5895853, 1.27507901}, //
+
63448 {6.58761644, 1.27901113}, //
+
63449 {6.58556318, 1.28310859}, //
+
63450 {6.58342409, 1.28737164}, //
+
63451 {6.58120012, 1.29180002}, //
+
63452 {6.57894373, 1.29628086}, //
+
63453 {6.57668638, 1.30067897}, //
+
63454 {6.5744276, 1.30499446}, //
+
63455 {6.57216787, 1.30922711}, //
+
63456 {6.56990671, 1.31337714}, //
+
63457 {6.5676446, 1.31744444}, //
+
63458 {6.56538105, 1.32142901}, //
+
63459 {6.56311607, 1.32533085}, //
+
63460 {6.56085014, 1.32914996}, //
+
63461 {6.55777597, 1.33241236}, //
+
63462 {6.55457592, 1.33617711}, //
+
63463 {6.55124998, 1.34044445}, //
+
63464 {6.54779816, 1.34521425}, //
+
63465 {6.54422045, 1.3504864}, //
+
63466 {6.54051685, 1.35626113}, //
+
63467 {6.5366869, 1.36253822}, //
+
63468 {6.53273153, 1.36931789}, //
+
63469 {6.52864981, 1.37660003}, //
+
63470 {6.52461052, 1.38405001}, //
+
63471 {6.52078104, 1.39133334}, //
+
63472 {6.51716089, 1.39845002}, //
+
63473 {6.51375103, 1.40540004}, //
+
63474 {6.51055145, 1.41218328}, //
+
63475 {6.50756121, 1.4188}, //
+
63476 {6.50478077, 1.42525005}, //
+
63477 {6.50221062, 1.43153334}, //
+
63478 {6.4998498, 1.43764997}, //
+
63479 {6.49842262, 1.44049382}, //
+
63480 {6.49716377, 1.44300306}, //
+
63481 {6.49607229, 1.44517779}, //
+
63482 {6.49514866, 1.44701791}, //
+
63483 {6.49313402, 1.45103276}, //
+
63484 {6.4930501, 1.45120001}, //
+
63485 {6.49321795, 1.4508642}, //
+
63486 {6.49342775, 1.45044446}, //
+
63487 {6.49409962, 1.44910121}, //
+
63488 {6.4945612, 1.44817781}, //
+
63489 {6.4951067, 1.44708645}, //
+
63490 {6.49644995, 1.44439995}, //
+
63491 {6.49720478, 1.44210184}, //
+
63492 {6.49795866, 1.43971848}, //
+
63493 {6.49871111, 1.43725002}, //
+
63494 {6.49946213, 1.43469632}, //
+
63495 {6.50021219, 1.43205738}, //
+
63496 {6.5009613, 1.42933333}, //
+
63497 {6.50170851, 1.42652404}, //
+
63498 {6.50245476, 1.42362964}, //
+
63499 {6.50320005, 1.42065001}, //
+
63500 {6.5039134, 1.41759694}, //
+
63501 {6.5045433, 1.41445982}, //
+
63502 {6.50508881, 1.41123891}, //
+
63503 {6.50555038, 1.40793395}, //
+
63504 {6.50592852, 1.40454507}, //
+
63505 {6.50622225, 1.40107226}, //
+
63506 {6.50643206, 1.39751542}, //
+
63507 {6.50655794, 1.39387465}, //
+
63508 {6.5065999, 1.39014995}, //
+
63509 {6.5090332, 1.37901723}, //
+
63510 {6.51179981, 1.36821914}, //
+
63511 {6.51490021, 1.35775554}, //
+
63512 {6.51833344, 1.34762657}, //
+
63513 {6.52209997, 1.33783209}, //
+
63514 {6.52619982, 1.32837224}, //
+
63515 {6.53063345, 1.31924689}, //
+
63516 {6.53539991, 1.31045616}, //
+
63517 {6.54050016, 1.30200005}, //
+
63518 {6.54285002, 1.29800308}, //
+
63519 {6.54536676, 1.29354572}, //
+
63520 {6.54804993, 1.28862774}, //
+
63521 {6.55089998, 1.28324938}, //
+
63522 {6.55391645, 1.27741051}, //
+
63523 {6.55709982, 1.27111113}, //
+
63524 {6.56045008, 1.26435125}, //
+
63525 {6.56396675, 1.25713086}, //
+
63526 {6.56764984, 1.24944997}, //
+
63527 {6.57129145, 1.24164319}, //
+
63528 {6.57468224, 1.23404503}, //
+
63529 {6.57782221, 1.2266556}, //
+
63530 {6.58071184, 1.21947467}, //
+
63531 {6.58335066, 1.21250248}, //
+
63532 {6.58573866, 1.2057389}, //
+
63533 {6.58787632, 1.19918394}, //
+
63534 {6.58976364, 1.1928376}, //
+
63535 {6.59140015, 1.18669999}, //
+
63536 {6.59275389, 1.18153703}, //
+
63537 {6.59381485, 1.1765815}, //
+
63538 {6.59458351, 1.17183328}, //
+
63539 {6.59505939, 1.16729259}, //
+
63540 {6.5952425, 1.16295922}, //
+
63541 {6.5951333, 1.15883338}, //
+
63542 {6.59473133, 1.15491486}, //
+
63543 {6.59403706, 1.15120375}, //
+
63544 {6.59305, 1.14769995}, //
+
63545 {6.59194803, 1.14437413}, //
+
63546 {6.59088707, 1.14117408}, //
+
63547 {6.58986664, 1.13810003}, //
+
63548 {6.58888721, 1.13515186}, //
+
63549 {6.58794832, 1.13232958}, //
+
63550 {6.58704996, 1.12963331}, //
+
63551 {6.58619261, 1.12706292}, //
+
63552 {6.58537579, 1.12461853}, //
+
63553 {6.58459997, 1.12230003}, //
+
63554 {6.58388662, 1.12160742}, //
+
63555 {6.58325672, 1.1210407}, //
+
63556 {6.58271122, 1.12059999}, //
+
63557 {6.58224916, 1.12028515}, //
+
63558 {6.58187151, 1.12009633}, //
+
63559 {6.58157778, 1.12003338}, //
+
63560 {6.58136797, 1.12009633}, //
+
63561 {6.58124208, 1.12028515}, //
+
63562 {6.58120012, 1.12059999}, //
+
63563 {6.58120012, 1.12192225}, //
+
63564 {6.58120012, 1.12244689}, //
+
63565 {6.58120012, 1.12796116}, //
+
63566 {6.58120012, 1.1287123}, //
+
63567 {6.58120012, 1.13546979}, //
+
63568 {6.58120012, 1.13697779}, //
+
63569 {6.58120012, 1.15960002}, //
+
63570 {6.58033991, 1.16202343}, //
+
63571 {6.57927179, 1.16478276}, //
+
63572 {6.57799435, 1.16787779}, //
+
63573 {6.57650852, 1.17130864}, //
+
63574 {6.57481432, 1.17507529}, //
+
63575 {6.57291126, 1.17917776}, //
+
63576 {6.57079935, 1.18361604}, //
+
63577 {6.56847906, 1.18839014}, //
+
63578 {6.56594992, 1.19350004}, //
+
63579 {6.56333685, 1.19873583}, //
+
63580 {6.56076479, 1.2038877}, //
+
63581 {6.55823326, 1.20895553}, //
+
63582 {6.55574274, 1.21393955}, //
+
63583 {6.55329275, 1.21883953}, //
+
63584 {6.55088329, 1.22365558}, //
+
63585 {6.54851484, 1.22838771}, //
+
63586 {6.54618692, 1.2330358}, //
+
63587 {6.54390001, 1.23759997}, //
+
63588 {6.54097223, 1.24215364}, //
+
63589 {6.53821135, 1.24679255}, //
+
63590 {6.53561687, 1.2515167}, //
+
63591 {6.53318882, 1.25632596}, //
+
63592 {6.53092766, 1.26122034}, //
+
63593 {6.52883339, 1.26619995}, //
+
63594 {6.52690554, 1.27126479}, //
+
63595 {6.52514458, 1.27641487}, //
+
63596 {6.52355003, 1.28164995}, //
+
63597 {6.52275324, 1.28529131}, //
+
63598 {6.52187347, 1.2886821}, //
+
63599 {6.52091122, 1.2918222}, //
+
63600 {6.51986599, 1.29471171}, //
+
63601 {6.51873827, 1.29735065}, //
+
63602 {6.51752758, 1.29973888}, //
+
63603 {6.5162344, 1.30187654}, //
+
63604 {6.51485872, 1.30376363}, //
+
63605 {6.51340008, 1.30540001}, //
+
63606 {6.5133791, 1.30609262}, //
+
63607 {6.51331615, 1.30665922}, //
+
63608 {6.51321125, 1.30710006}, //
+
63609 {6.51306438, 1.30741477}, //
+
63610 {6.51287508, 1.30760372}, //
+
63611 {6.51264429, 1.30766666}, //
+
63612 {6.51237154, 1.30760372}, //
+
63613 {6.51205683, 1.30741477}, //
+
63614 {6.51170015, 1.30710006}, //
+
63615 {6.51136398, 1.30665922}, //
+
63616 {6.51111221, 1.30609262}, //
+
63617 {6.51094437, 1.30540001}, //
+
63618 {6.51086044, 1.30458152}, //
+
63619 {6.51086044, 1.30363703}, //
+
63620 {6.51094437, 1.30256665}, //
+
63621 {6.51111221, 1.30137038}, //
+
63622 {6.51136398, 1.30004811}, //
+
63623 {6.51170015, 1.29859996}, //
+
63624 {6.51205683, 1.29709935}, //
+
63625 {6.51237154, 1.29559755}, //
+
63626 {6.51264429, 1.29409444}, //
+
63627 {6.51287508, 1.29259014}, //
+
63628 {6.51306438, 1.29108453}, //
+
63629 {6.51321125, 1.28957772}, //
+
63630 {6.51331615, 1.28806973}, //
+
63631 {6.5133791, 1.28656054}, //
+
63632 {6.51340008, 1.28505003}, //
+
63633 {6.51411343, 1.28283584}, //
+
63634 {6.51474333, 1.28070438}, //
+
63635 {6.51528883, 1.27865553}, //
+
63636 {6.51575041, 1.27668953}, //
+
63637 {6.51612854, 1.27480614}, //
+
63638 {6.51642227, 1.2730056}, //
+
63639 {6.51663208, 1.27128768}, //
+
63640 {6.51675797, 1.26965249}, //
+
63641 {6.51679993, 1.26810002}, //
+
63642 {6.51686239, 1.26644254}, //
+
63643 {6.51704931, 1.26449263}, //
+
63644 {6.51736116, 1.26224995}, //
+
63645 {6.51779747, 1.25971484}, //
+
63646 {6.51835871, 1.25688708}, //
+
63647 {6.5190444, 1.25376666}, //
+
63648 {6.51985502, 1.25035369}, //
+
63649 {6.5207901, 1.24664819}, //
+
63650 {6.52185011, 1.24265003}, //
+
63651 {6.52300358, 1.23854756}, //
+
63652 {6.52419806, 1.23452902}, //
+
63653 {6.52543354, 1.2305944}, //
+
63654 {6.52670908, 1.22674382}, //
+
63655 {6.5280261, 1.22297716}, //
+
63656 {6.52938318, 1.21929443}, //
+
63657 {6.53078127, 1.21569562}, //
+
63658 {6.53222036, 1.21218085}, //
+
63659 {6.53369999, 1.20875001}, //
+
63660 {6.53516912, 1.20546544}, //
+
63661 {6.53655434, 1.20238948}, //
+
63662 {6.53785563, 1.19952226}, //
+
63663 {6.53907299, 1.19686353}, //
+
63664 {6.54020596, 1.19441354}, //
+
63665 {6.54125547, 1.19217217}, //
+
63666 {6.54222107, 1.19013953}, //
+
63667 {6.54310226, 1.18831539}, //
+
63668 {6.54390001, 1.18669999}, //
+
63669 {6.54471779, 1.18494821}, //
+
63670 {6.5456605, 1.18269265}, //
+
63671 {6.54672766, 1.17993331}, //
+
63672 {6.54791975, 1.17667031}, //
+
63673 {6.5492363, 1.17290366}, //
+
63674 {6.55067778, 1.16863334}, //
+
63675 {6.55224371, 1.16385925}, //
+
63676 {6.55393457, 1.1585815}, //
+
63677 {6.55574989, 1.15279996}, //
+
63678 {6.55759621, 1.14677715}, //
+
63679 {6.55935764, 1.14075303}, //
+
63680 {6.56103325, 1.13472784}, //
+
63681 {6.56262398, 1.12870121}, //
+
63682 {6.56412983, 1.12267351}, //
+
63683 {6.56554985, 1.1166445}, //
+
63684 {6.56688499, 1.11061418}, //
+
63685 {6.56813526, 1.10458267}, //
+
63686 {6.56930017, 1.09854996}, //
+
63687 {6.5703702, 1.09273636}, //
+
63688 {6.57131481, 1.08734012}, //
+
63689 {6.57213354, 1.0823611}, //
+
63690 {6.57282591, 1.07779944}, //
+
63691 {6.57339239, 1.07365489}, //
+
63692 {6.57383347, 1.06992781}, //
+
63693 {6.57414818, 1.06661785}, //
+
63694 {6.57433701, 1.06372535}, //
+
63695 {6.57439995, 1.06124997}, //
+
63696 {6.57437897, 1.05821788}, //
+
63697 {6.57431602, 1.05514383}, //
+
63698 {6.57421112, 1.05202782}, //
+
63699 {6.57406425, 1.04886973}, //
+
63700 {6.57387543, 1.04566979}, //
+
63701 {6.57364464, 1.04242778}, //
+
63702 {6.57337141, 1.0391438}, //
+
63703 {6.5730567, 1.03581786}, //
+
63704 {6.57270002, 1.03244996}, //
+
63705 {6.57233286, 1.0290401}, //
+
63706 {6.57196426, 1.02558827}, //
+
63707 {6.57159424, 1.02209449}, //
+
63708 {6.57122326, 1.01855862}, //
+
63709 {6.57085133, 1.01498091}, //
+
63710 {6.57047796, 1.01136112}, //
+
63711 {6.57010317, 1.00769937}, //
+
63712 {6.56972694, 1.00399566}, //
+
63713 {6.56934977, 1.00024998}, //
+
63714 {6.56899309, 0.996524692}, //
+
63715 {6.56867838, 0.992882073}, //
+
63716 {6.56840563, 0.989322245}, //
+
63717 {6.56817484, 0.985845089}, //
+
63718 {6.56798601, 0.982450604}, //
+
63719 {6.56783867, 0.979138911}, //
+
63720 {6.56773376, 0.975909889}, //
+
63721 {6.56767082, 0.972763598}, //
+
63722 {6.56764984, 0.969699979}, //
+
63723 {6.56764984, 0.956149995}, //
+
63724 {6.56762886, 0.955499411}, //
+
63725 {6.56756592, 0.955058634}, //
+
63726 {6.56746101, 0.954827785}, //
+
63727 {6.56731415, 0.954806805}, //
+
63728 {6.56712532, 0.954995692}, //
+
63729 {6.56689453, 0.955394447}, //
+
63730 {6.56662178, 0.95600307}, //
+
63731 {6.56630659, 0.95682162}, //
+
63732 {6.56594992, 0.957849979}, //
+
63733 {6.56559324, 0.959024668}, //
+
63734 {6.56527853, 0.960282087}, //
+
63735 {6.56500578, 0.961622238}, //
+
63736 {6.56477451, 0.963045061}, //
+
63737 {6.56458569, 0.964550614}, //
+
63738 {6.56443882, 0.966138899}, //
+
63739 {6.56433392, 0.967809856}, //
+
63740 {6.56427097, 0.969563603}, //
+
63741 {6.56424999, 0.971400023}, //
+
63742 {6.56420803, 0.973267257}, //
+
63743 {6.56408215, 0.975091338}, //
+
63744 {6.56387234, 0.976872206}, //
+
63745 {6.56357861, 0.97860986}, //
+
63746 {6.56320047, 0.980304301}, //
+
63747 {6.5627389, 0.981955528}, //
+
63748 {6.56219339, 0.983563602}, //
+
63749 {6.56156349, 0.985128403}, //
+
63750 {6.5611043, 0.986107886}, //
+
63751 {6.56101799, 0.987682104}, //
+
63752 {6.56089211, 0.990880251}, //
+
63753 {6.56085014, 0.993449986}, //
+
63754 {6.56060505, 0.993725538}, //
+
63755 {6.56051683, 0.995193183}, //
+
63756 {6.56010008, 0.999088883}, //
+
63757 {6.55951643, 1.00273395}, //
+
63758 {6.55876684, 1.00612843}, //
+
63759 {6.55784988, 1.00927222}, //
+
63760 {6.55676651, 1.01216543}, //
+
63761 {6.55551672, 1.01480806}, //
+
63762 {6.55410004, 1.01719999}, //
+
63763 {6.55405807, 1.01874256}, //
+
63764 {6.55393219, 1.02037036}, //
+
63765 {6.55372238, 1.02208328}, //
+
63766 {6.55342817, 1.02388144}, //
+
63767 {6.55305052, 1.02576482}, //
+
63768 {6.55258894, 1.02773333}, //
+
63769 {6.55204344, 1.02978706}, //
+
63770 {6.55184603, 1.03045762}, //
+
63771 {6.5514555, 1.03318894}, //
+
63772 {6.55063868, 1.0386771}, //
+
63773 {6.55053186, 1.04218459}, //
+
63774 {6.55032206, 1.04657781}, //
+
63775 {6.55002832, 1.05122161}, //
+
63776 {6.54965067, 1.0561161}, //
+
63777 {6.54918909, 1.06126106}, //
+
63778 {6.54864311, 1.06665683}, //
+
63779 {6.54801369, 1.07230306}, //
+
63780 {6.54729986, 1.07819998}, //
+
63781 {6.54650307, 1.08419132}, //
+
63782 {6.5456233, 1.09009874}, //
+
63783 {6.54466105, 1.09592223}, //
+
63784 {6.54361582, 1.10166168}, //
+
63785 {6.5424881, 1.10731733}, //
+
63786 {6.54127789, 1.11288893}, //
+
63787 {6.5399847, 1.11837649}, //
+
63788 {6.53860855, 1.12378025}, //
+
63789 {6.53714991, 1.12909997}, //
+
63790 {6.53490448, 1.13665438}, //
+
63791 {6.53270054, 1.14425063}, //
+
63792 {6.53053904, 1.15188885}, //
+
63793 {6.52841902, 1.15956914}, //
+
63794 {6.52634144, 1.1672914}, //
+
63795 {6.52430534, 1.1750555}, //
+
63796 {6.52231169, 1.18286169}, //
+
63797 {6.52035999, 1.19070983}, //
+
63798 {6.51844978, 1.19860005}, //
+
63799 {6.5165925, 1.20636415}, //
+
63800 {6.51477575, 1.21383452}, //
+
63801 {6.51300001, 1.22101116}, //
+
63802 {6.5112648, 1.22789383}, //
+
63803 {6.5095706, 1.23448277}, //
+
63804 {6.50791645, 1.24077773}, //
+
63805 {6.50630379, 1.24677896}, //
+
63806 {6.50473166, 1.25248647}, //
+
63807 {6.50320005, 1.2579}, //
+
63808 {6.50245476, 1.26016605}, //
+
63809 {6.50170851, 1.26243091}, //
+
63810 {6.5009613, 1.26469445}, //
+
63811 {6.50021219, 1.26695681}, //
+
63812 {6.49946213, 1.26921785}, //
+
63813 {6.49871111, 1.27147782}, //
+
63814 {6.49795866, 1.27373648}, //
+
63815 {6.49720478, 1.27599382}, //
+
63816 {6.49644995, 1.27824998}, //
+
63817 {6.49502277, 1.28289819}, //
+
63818 {6.49376345, 1.28779817}, //
+
63819 {6.49267244, 1.29295003}, //
+
63820 {6.49174881, 1.29835367}, //
+
63821 {6.49099302, 1.30400932}, //
+
63822 {6.49040556, 1.30991662}, //
+
63823 {6.48998594, 1.31607592}, //
+
63824 {6.48973417, 1.322487}, //
+
63825 {6.48964977, 1.32914996}, //
+
63826 {6.48964977, 1.33634758}, //
+
63827 {6.48964977, 1.3396945}, //
+
63828 {6.48964977, 1.34287345}, //
+
63829 {6.48964977, 1.35625005}, //
+
63830 {6.4903636, 1.35778153}, //
+
63831 {6.49099302, 1.35935366}, //
+
63832 {6.491539, 1.36096668}, //
+
63833 {6.49200058, 1.36262035}, //
+
63834 {6.49237823, 1.36431479}, //
+
63835 {6.49267244, 1.36605}, //
+
63836 {6.49288225, 1.36782598}, //
+
63837 {6.49300814, 1.36964262}, //
+
63838 {6.4930501, 1.37150002}, //
+
63839 {6.49300814, 1.37336731}, //
+
63840 {6.49288225, 1.37519133}, //
+
63841 {6.49267244, 1.3769722}, //
+
63842 {6.49237823, 1.37870991}, //
+
63843 {6.49200058, 1.38040435}, //
+
63844 {6.491539, 1.38205552}, //
+
63845 {6.49099302, 1.38366354}, //
+
63846 {6.4903636, 1.3852284}, //
+
63847 {6.48964977, 1.38674998}, //
+
63848 {6.48889446, 1.38968766}, //
+
63849 {6.48813868, 1.39245617}, //
+
63850 {6.48738337, 1.39505553}, //
+
63851 {6.48662758, 1.39748585}, //
+
63852 {6.48587227, 1.39974689}, //
+
63853 {6.48511648, 1.4018389}, //
+
63854 {6.48436117, 1.40376174}, //
+
63855 {6.48360538, 1.40551543}, //
+
63856 {6.48285007, 1.40709996}, //
+
63857 {6.48202085, 1.4085691}, //
+
63858 {6.48102283, 1.40995431}, //
+
63859 {6.47985554, 1.4112556}, //
+
63860 {6.47851896, 1.41247284}, //
+
63861 {6.47701359, 1.41360617}, //
+
63862 {6.47533894, 1.41465557}, //
+
63863 {6.47349501, 1.41562104}, //
+
63864 {6.47148228, 1.41650248}, //
+
63865 {6.46929979, 1.41729999}, //
+
63866 {6.46925783, 1.41800308}, //
+
63867 {6.46913195, 1.41862345}, //
+
63868 {6.46892214, 1.41916108}, //
+
63869 {6.46862841, 1.4196161}, //
+
63870 {6.46825075, 1.41998827}, //
+
63871 {6.4677887, 1.42027783}, //
+
63872 {6.46724319, 1.42048454}, //
+
63873 {6.46661377, 1.42060864}, //
+
63874 {6.46589994, 1.42065001}, //
+
63875 {6.46517611, 1.42216051}, //
+
63876 {6.4644928, 1.4236697}, //
+
63877 {6.46385002, 1.42517781}, //
+
63878 {6.46324825, 1.42668462}, //
+
63879 {6.46268702, 1.42819011}, //
+
63880 {6.46216679, 1.42969441}, //
+
63881 {6.46168709, 1.43119752}, //
+
63882 {6.46124792, 1.43269944}, //
+
63883 {6.46084976, 1.43420005}, //
+
63884 {6.46049309, 1.43571115}, //
+
63885 {6.46017838, 1.43722224}, //
+
63886 {6.45990562, 1.43873334}, //
+
63887 {6.45967484, 1.44024444}, //
+
63888 {6.45948601, 1.44175553}, //
+
63889 {6.45933867, 1.44326663}, //
+
63890 {6.45923376, 1.44477773}, //
+
63891 {6.45917082, 1.44628894}, //
+
63892 {6.45914984, 1.44780004}, //
+
63893 {6.45910788, 1.44855559}, //
+
63894 {6.45898199, 1.44931114}, //
+
63895 {6.45877218, 1.45006669}, //
+
63896 {6.45847845, 1.45082223}, //
+
63897 {6.4581008, 1.45157778}, //
+
63898 {6.45763874, 1.45233333}, //
+
63899 {6.45709324, 1.45308888}, //
+
63900 {6.45646381, 1.45384443}, //
+
63901 {6.45574999, 1.45459998}, //
+
63902 {6.45574999, 1.4530586}, //
+
63903 });
+
63904 polys.push_back({
+
63905 {6.45574999, 1.45778215}, //
+
63906 {6.45574999, 1.45727837}, //
+
63907 {6.45574999, 1.45757222}, //
+
63908 });
+
63909 polys.push_back({
+
63910 {6.45574999, 1.45592344}, //
+
63911 {6.45574999, 1.45691609}, //
+
63912 {6.45574999, 1.45646107}, //
+
63913 });
+
63914 polys.push_back({
+
63915 {6.09294987, 1.220137}, //
+
63916 {6.09294987, 1.21911669}, //
+
63917 {6.09294987, 1.21719813}, //
+
63918 {6.09294987, 1.21630001}, //
+
63919 {6.09294987, 1.21544254}, //
+
63920 {6.09294987, 1.21385002}, //
+
63921 {6.09223652, 1.21233892}, //
+
63922 {6.09160662, 1.21082783}, //
+
63923 {6.09106112, 1.20931661}, //
+
63924 {6.09059954, 1.20780551}, //
+
63925 {6.09022141, 1.20629442}, //
+
63926 {6.08992767, 1.20478332}, //
+
63927 {6.08971786, 1.20327222}, //
+
63928 {6.08959198, 1.20176113}, //
+
63929 {6.08955002, 1.20025003}, //
+
63930 {6.08955002, 1.19879138}, //
+
63931 {6.08955002, 1.19741547}, //
+
63932 {6.08955002, 1.19612217}, //
+
63933 {6.08955002, 1.19177651}, //
+
63934 {6.08955002, 1.19089687}, //
+
63935 {6.08955002, 1.19009995}, //
+
63936 {6.08961296, 1.18938637}, //
+
63937 {6.08980179, 1.18875682}, //
+
63938 {6.0901165, 1.18821108}, //
+
63939 {6.09055758, 1.18774939}, //
+
63940 {6.09112406, 1.18737161}, //
+
63941 {6.0918169, 1.18707776}, //
+
63942 {6.09263515, 1.18686795}, //
+
63943 {6.09357977, 1.18674195}, //
+
63944 {6.09464979, 1.18669999}, //
+
63945 {6.09582472, 1.18669999}, //
+
63946 {6.09842205, 1.18669999}, //
+
63947 {6.09984493, 1.18669999}, //
+
63948 {6.10820007, 1.18669999}, //
+
63949 {6.11015129, 1.18674195}, //
+
63950 {6.11222696, 1.18686795}, //
+
63951 {6.11442757, 1.18707776}, //
+
63952 {6.1167531, 1.18737161}, //
+
63953 {6.11920309, 1.18774939}, //
+
63954 {6.12177801, 1.18821108}, //
+
63955 {6.12447739, 1.18875682}, //
+
63956 {6.12730122, 1.18938637}, //
+
63957 {6.13024998, 1.19009995}, //
+
63958 {6.13029194, 1.19009995}, //
+
63959 {6.13041782, 1.19009995}, //
+
63960 {6.13364983, 1.19009995}, //
+
63961 {6.13680744, 1.19081354}, //
+
63962 {6.14025736, 1.1914432}, //
+
63963 {6.14400005, 1.19198895}, //
+
63964 {6.14803505, 1.19245064}, //
+
63965 {6.15236282, 1.19282842}, //
+
63966 {6.15698338, 1.19312227}, //
+
63967 {6.16189623, 1.19333208}, //
+
63968 {6.16710186, 1.19345808}, //
+
63969 {6.17259979, 1.19350004}, //
+
63970 {6.17840195, 1.19333267}, //
+
63971 {6.1844964, 1.19283092}, //
+
63972 {6.19088316, 1.19199443}, //
+
63973 {6.19756317, 1.19082344}, //
+
63974 {6.20453501, 1.18931794}, //
+
63975 {6.2118001, 1.18747783}, //
+
63976 {6.21935749, 1.18530309}, //
+
63977 {6.22720718, 1.18279386}, //
+
63978 {6.23535013, 1.17995}, //
+
63979 {6.24263191, 1.17591107}, //
+
63980 {6.24941158, 1.17132783}, //
+
63981 {6.25568867, 1.16620004}, //
+
63982 {6.26146364, 1.16052783}, //
+
63983 {6.26673603, 1.15431106}, //
+
63984 {6.27150536, 1.14754999}, //
+
63985 {6.27577305, 1.14024448}, //
+
63986 {6.27953768, 1.13239443}, //
+
63987 {6.2828002, 1.12399995}, //
+
63988 {6.28561258, 1.11531234}, //
+
63989 {6.28800488, 1.10658276}, //
+
63990 {6.28997755, 1.0978111}, //
+
63991 {6.29153109, 1.08899748}, //
+
63992 {6.29266405, 1.08014202}, //
+
63993 {6.29337788, 1.07124448}, //
+
63994 {6.29367161, 1.06230497}, //
+
63995 {6.29354572, 1.05332351}, //
+
63996 {6.29300022, 1.04429996}, //
+
63997 {6.29312515, 1.03463638}, //
+
63998 {6.29350138, 1.02522349}, //
+
63999 {6.29412794, 1.01606107}, //
+
64000 {6.29500484, 1.00714934}, //
+
64001 {6.29613256, 0.998488247}, //
+
64002 {6.2975111, 0.990077794}, //
+
64003 {6.29913998, 0.981917918}, //
+
64004 {6.30101967, 0.97400862}, //
+
64005 {6.30315018, 0.966350019}, //
+
64006 {6.30457735, 0.96266669}, //
+
64007 {6.3058362, 0.959150016}, //
+
64008 {6.30692768, 0.955799997}, //
+
64009 {6.30785131, 0.952616692}, //
+
64010 {6.30860662, 0.949599981}, //
+
64011 {6.30919456, 0.946749985}, //
+
64012 {6.30961418, 0.944066644}, //
+
64013 {6.30986595, 0.941550016}, //
+
64014 {6.30994987, 0.939199984}, //
+
64015 {6.30994987, 0.935800016}, //
+
64016 {6.31051683, 0.934666693}, //
+
64017 {6.31095743, 0.9337852}, //
+
64018 {6.31505013, 0.925599992}, //
+
64019 {6.31620359, 0.92326051}, //
+
64020 {6.31739807, 0.920753062}, //
+
64021 {6.31863356, 0.918077767}, //
+
64022 {6.3199091, 0.915234566}, //
+
64023 {6.32122612, 0.912223458}, //
+
64024 {6.3225832, 0.909044445}, //
+
64025 {6.32398129, 0.905697525}, //
+
64026 {6.32542038, 0.902182698}, //
+
64027 {6.32690001, 0.898500025}, //
+
64028 {6.32841063, 0.894775331}, //
+
64029 {6.32991982, 0.89113456}, //
+
64030 {6.33142757, 0.887577772}, //
+
64031 {6.33293438, 0.884104967}, //
+
64032 {6.33444023, 0.880716026}, //
+
64033 {6.33594465, 0.877411127}, //
+
64034 {6.33744764, 0.874190152}, //
+
64035 {6.3389492, 0.8710531}, //
+
64036 {6.34044981, 0.867999971}, //
+
64037 {6.34196091, 0.865701854}, //
+
64038 {6.343472, 0.863318503}, //
+
64039 {6.3449831, 0.860849977}, //
+
64040 {6.34649467, 0.858296275}, //
+
64041 {6.34800577, 0.855657399}, //
+
64042 {6.34951687, 0.852933347}, //
+
64043 {6.35102797, 0.850124061}, //
+
64044 {6.35253906, 0.8472296}, //
+
64045 {6.35405016, 0.844250023}, //
+
64046 {6.36007261, 0.832949996}, //
+
64047 {6.36609697, 0.821650028}, //
+
64048 {6.37212229, 0.810350001}, //
+
64049 {6.37814856, 0.799049973}, //
+
64050 {6.38417673, 0.787750006}, //
+
64051 {6.39020538, 0.776449978}, //
+
64052 {6.39623594, 0.765150011}, //
+
64053 {6.40226746, 0.753849983}, //
+
64054 {6.40829992, 0.742550015}, //
+
64055 {6.40900326, 0.741794467}, //
+
64056 {6.40962362, 0.741038918}, //
+
64057 {6.41016102, 0.74028331}, //
+
64058 {6.41061592, 0.739527762}, //
+
64059 {6.41098833, 0.738772213}, //
+
64060 {6.41127777, 0.738016665}, //
+
64061 {6.41148472, 0.737261117}, //
+
64062 {6.4116087, 0.736505568}, //
+
64063 {6.41165018, 0.73575002}, //
+
64064 {6.41827106, 0.722823441}, //
+
64065 {6.42455626, 0.709643841}, //
+
64066 {6.43050575, 0.6962111}, //
+
64067 {6.43611908, 0.682525337}, //
+
64068 {6.44139671, 0.668586433}, //
+
64069 {6.44633865, 0.654394448}, //
+
64070 {6.4509449, 0.639949381}, //
+
64071 {6.45521545, 0.625251234}, //
+
64072 {6.45914984, 0.610300004}, //
+
64073 {6.45994711, 0.60496974}, //
+
64074 {6.4608264, 0.599512339}, //
+
64075 {6.46178865, 0.593927801}, //
+
64076 {6.46283388, 0.588216066}, //
+
64077 {6.4639616, 0.582377136}, //
+
64078 {6.46517229, 0.576411128}, //
+
64079 {6.46646547, 0.570317924}, //
+
64080 {6.46784115, 0.564097524}, //
+
64081 {6.46929979, 0.557749987}, //
+
64082 {6.47074795, 0.551496267}, //
+
64083 {6.47207022, 0.545535207}, //
+
64084 {6.4732666, 0.539866686}, //
+
64085 {6.4743371, 0.534490764}, //
+
64086 {6.47528172, 0.529407382}, //
+
64087 {6.47609997, 0.524616659}, //
+
64088 {6.47679281, 0.520118535}, //
+
64089 {6.47735929, 0.51591295}, //
+
64090 {6.47779989, 0.512000024}, //
+
64091 {6.47847176, 0.505303681}, //
+
64092 {6.47874451, 0.502583325}, //
+
64093 {6.47916412, 0.498398155}, //
+
64094 {6.47941589, 0.495887041}, //
+
64095 {6.47947884, 0.495259255}, //
+
64096 {6.47949982, 0.495050013}, //
+
64097 {6.47949982, 0.46450001}, //
+
64098 {6.47609997, 0.46450001}, //
+
64099 {6.47603703, 0.464709252}, //
+
64100 {6.4758482, 0.465337038}, //
+
64101 {6.47452593, 0.46973148}, //
+
64102 {6.47301483, 0.474753708}, //
+
64103 {6.47207022, 0.477892607}, //
+
64104 {6.47100019, 0.481449991}, //
+
64105 {6.46986675, 0.48530063}, //
+
64106 {6.46873331, 0.489319146}, //
+
64107 {6.46759987, 0.493505567}, //
+
64108 {6.4664669, 0.497859865}, //
+
64109 {6.46533346, 0.5023821}, //
+
64110 {6.46420002, 0.50707221}, //
+
64111 {6.46306658, 0.511930227}, //
+
64112 {6.46193314, 0.516956151}, //
+
64113 {6.46080017, 0.52214998}, //
+
64114 {6.4596982, 0.527406156}, //
+
64115 {6.45863724, 0.532619119}, //
+
64116 {6.45761681, 0.537788868}, //
+
64117 {6.45663691, 0.542915404}, //
+
64118 {6.45569801, 0.547998786}, //
+
64119 {6.45480013, 0.553038895}, //
+
64120 {6.45394278, 0.558035791}, //
+
64121 {6.45312595, 0.562989533}, //
+
64122 {6.45235014, 0.567900002}, //
+
64123 {6.45159483, 0.572695673}, //
+
64124 {6.45084143, 0.577282727}, //
+
64125 {6.45008898, 0.581661105}, //
+
64126 {6.44933748, 0.585830867}, //
+
64127 {6.44858742, 0.589791954}, //
+
64128 {6.44783878, 0.593544424}, //
+
64129 {6.44709158, 0.597088277}, //
+
64130 {6.44634485, 0.600423455}, //
+
64131 {6.44560003, 0.603550017}, //
+
64132 {6.44320822, 0.610516071}, //
+
64133 {6.44056559, 0.617858648}, //
+
64134 {6.43767214, 0.625577807}, //
+
64135 {6.43452835, 0.633673429}, //
+
64136 {6.43113375, 0.642145693}, //
+
64137 {6.4274888, 0.65099442}, //
+
64138 {6.42359304, 0.660219729}, //
+
64139 {6.41944695, 0.66982162}, //
+
64140 {6.41505003, 0.679799974}, //
+
64141 {6.41052818, 0.689663589}, //
+
64142 {6.40600824, 0.698898792}, //
+
64143 {6.40148878, 0.707505584}, //
+
64144 {6.39697123, 0.715483963}, //
+
64145 {6.39245415, 0.722833931}, //
+
64146 {6.38793898, 0.729555547}, //
+
64147 {6.38342476, 0.735648751}, //
+
64148 {6.3789115, 0.741113603}, //
+
64149 {6.37440014, 0.745949984}, //
+
64150 {6.37045574, 0.750743806}, //
+
64151 {6.36617756, 0.756080866}, //
+
64152 {6.36156654, 0.761961102}, //
+
64153 {6.35662222, 0.768384576}, //
+
64154 {6.35134459, 0.775351226}, //
+
64155 {6.34573317, 0.782861114}, //
+
64156 {6.33978891, 0.790914178}, //
+
64157 {6.33351088, 0.799510479}, //
+
64158 {6.32690001, 0.808650017}, //
+
64159 {6.32028961, 0.817841947}, //
+
64160 {6.31401348, 0.826573431}, //
+
64161 {6.30807209, 0.83484447}, //
+
64162 {6.30246544, 0.842654943}, //
+
64163 {6.29719305, 0.850004911}, //
+
64164 {6.2922554, 0.856894433}, //
+
64165 {6.28765249, 0.86332345}, //
+
64166 {6.28338385, 0.869291961}, //
+
64167 {6.27944994, 0.874800026}, //
+
64168 {6.27572489, 0.879899979}, //
+
64169 {6.27208233, 0.884666681}, //
+
64170 {6.26852226, 0.889100015}, //
+
64171 {6.26504517, 0.89319998}, //
+
64172 {6.26165056, 0.896966696}, //
+
64173 {6.25833893, 0.900399983}, //
+
64174 {6.25510979, 0.903500021}, //
+
64175 {6.25196362, 0.906266689}, //
+
64176 {6.24889994, 0.908699989}, //
+
64177 {6.24593067, 0.911039531}, //
+
64178 {6.24304581, 0.91354692}, //
+
64179 {6.24024439, 0.916222215}, //
+
64180 {6.23752737, 0.919065416}, //
+
64181 {6.2348938, 0.922076523}, //
+
64182 {6.23234463, 0.925255537}, //
+
64183 {6.2298789, 0.928602457}, //
+
64184 {6.22749758, 0.932117283}, //
+
64185 {6.22520018, 0.935800016}, //
+
64186 {6.22291279, 0.938674688}, //
+
64187 {6.22058535, 0.941254318}, //
+
64188 {6.2182169, 0.943538904}, //
+
64189 {6.21580744, 0.945528388}, //
+
64190 {6.21335745, 0.947222829}, //
+
64191 {6.21086645, 0.948622227}, //
+
64192 {6.2083354, 0.949726522}, //
+
64193 {6.20576286, 0.950535774}, //
+
64194 {6.2031498, 0.951049984}, //
+
64195 {6.20049524, 0.951406777}, //
+
64196 {6.19779682, 0.951721609}, //
+
64197 {6.19505548, 0.951994419}, //
+
64198 {6.19227076, 0.952225327}, //
+
64199 {6.18944311, 0.952414215}, //
+
64200 {6.18657207, 0.95256114}, //
+
64201 {6.18365812, 0.952666044}, //
+
64202 {6.18070078, 0.952728987}, //
+
64203 {6.17770004, 0.952750027}, //
+
64204 {6.17615747, 0.952046931}, //
+
64205 {6.17452955, 0.951426566}, //
+
64206 {6.17281675, 0.950888872}, //
+
64207 {6.1710186, 0.950433969}, //
+
64208 {6.16913509, 0.950061738}, //
+
64209 {6.16716671, 0.949772239}, //
+
64210 {6.16511297, 0.949565411}, //
+
64211 {6.16297388, 0.949441373}, //
+
64212 {6.16074991, 0.949400008}, //
+
64213 {6.15773869, 0.949462354}, //
+
64214 {6.15472794, 0.949649394}, //
+
64215 {6.15171671, 0.949961126}, //
+
64216 {6.14870548, 0.950397551}, //
+
64217 {6.14569426, 0.950958669}, //
+
64218 {6.14268351, 0.951644421}, //
+
64219 {6.13967228, 0.952454925}, //
+
64220 {6.13666105, 0.953390121}, //
+
64221 {6.13364983, 0.954450011}, //
+
64222 {6.13068008, 0.955604315}, //
+
64223 {6.12779331, 0.95680064}, //
+
64224 {6.12498903, 0.958038867}, //
+
64225 {6.12226725, 0.959319115}, //
+
64226 {6.11962843, 0.960641384}, //
+
64227 {6.11707211, 0.962005556}, //
+
64228 {6.11459875, 0.963411748}, //
+
64229 {6.11220789, 0.964859903}, //
+
64230 {6.1099, 0.966350019}, //
+
64231 {6.10688877, 0.969277143}, //
+
64232 {6.10387754, 0.972036421}, //
+
64233 {6.10086679, 0.974627793}, //
+
64234 {6.09785557, 0.977051258}, //
+
64235 {6.09484434, 0.979306817}, //
+
64236 {6.09183311, 0.98139447}, //
+
64237 {6.08882236, 0.983314216}, //
+
64238 {6.08581114, 0.985066056}, //
+
64239 {6.08279991, 0.98664999}, //
+
64240 {6.0813098, 0.987363577}, //
+
64241 {6.07986164, 0.987993181}, //
+
64242 {6.07845545, 0.988538861}, //
+
64243 {6.07709122, 0.989000618}, //
+
64244 {6.07576895, 0.989378393}, //
+
64245 {6.07448912, 0.989672244}, //
+
64246 {6.07325077, 0.989882112}, //
+
64247 {6.07205439, 0.990007997}, //
+
64248 {6.07089996, 0.990050018}, //
+
64249 {6.06983995, 0.990029037}, //
+
64250 {6.06890488, 0.989966035}, //
+
64251 {6.06809425, 0.989861131}, //
+
64252 {6.06740856, 0.989714205}, //
+
64253 {6.06684732, 0.989525318}, //
+
64254 {6.06641102, 0.989294469}, //
+
64255 {6.06609917, 0.989021599}, //
+
64256 {6.06591225, 0.988706768}, //
+
64257 {6.06584978, 0.988349974}, //
+
64258 {6.06584978, 0.987951875}, //
+
64259 {6.06584978, 0.987512946}, //
+
64260 {6.06584978, 0.987033308}, //
+
64261 {6.06584978, 0.982523441}, //
+
64262 {6.06584978, 0.98170495}, //
+
64263 {6.06584978, 0.980844438}, //
+
64264 {6.06584978, 0.974799991}, //
+
64265 {6.06580782, 0.97372961}, //
+
64266 {6.06568193, 0.972785175}, //
+
64267 {6.06547213, 0.971966684}, //
+
64268 {6.06517839, 0.971274078}, //
+
64269 {6.06480074, 0.970707417}, //
+
64270 {6.06433868, 0.97026664}, //
+
64271 {6.06379318, 0.969951868}, //
+
64272 {6.06316376, 0.969762981}, //
+
64273 {6.06244993, 0.969699979}, //
+
64274 {6.06161118, 0.968074083}, //
+
64275 {6.06060553, 0.966196299}, //
+
64276 {6.05943346, 0.964066684}, //
+
64277 {6.0580945, 0.961685181}, //
+
64278 {6.05658913, 0.959051847}, //
+
64279 {6.05491686, 0.956166685}, //
+
64280 {6.0530777, 0.953029633}, //
+
64281 {6.05107212, 0.949640751}, //
+
64282 {6.04890013, 0.94599998}, //
+
64283 {6.04594088, 0.942253709}, //
+
64284 {6.04310751, 0.938548148}, //
+
64285 {6.04040003, 0.934883356}, //
+
64286 {6.03781843, 0.931259274}, //
+
64287 {6.0353632, 0.927675903}, //
+
64288 {6.03303337, 0.92413336}, //
+
64289 {6.03082943, 0.920631468}, //
+
64290 {6.02875185, 0.917170346}, //
+
64291 {6.02680016, 0.913749993}, //
+
64292 {6.02494335, 0.910466075}, //
+
64293 {6.02312851, 0.907391965}, //
+
64294 {6.02135563, 0.904527783}, //
+
64295 {6.01962471, 0.901873469}, //
+
64296 {6.01793575, 0.899429023}, //
+
64297 {6.01628876, 0.897194445}, //
+
64298 {6.01468372, 0.895169735}, //
+
64299 {6.01312113, 0.893354952}, //
+
64300 {6.01160002, 0.891749978}, //
+
64301 {6.00996351, 0.890827179}, //
+
64302 {6.00807667, 0.889569759}, //
+
64303 {6.00593901, 0.887977779}, //
+
64304 {6.00355053, 0.886051238}, //
+
64305 {6.00091171, 0.883790135}, //
+
64306 {5.99802208, 0.881194472}, //
+
64307 {5.99488211, 0.878264189}, //
+
64308 {5.99149132, 0.874999404}, //
+
64309 {5.98785019, 0.871399999}, //
+
64310 {5.98408318, 0.867591381}, //
+
64311 {5.98031664, 0.863698781}, //
+
64312 {5.9765501, 0.859722197}, //
+
64313 {5.97278357, 0.85566175}, //
+
64314 {5.96901655, 0.85151726}, //
+
64315 {5.96525002, 0.847288907}, //
+
64316 {5.96148348, 0.84297657}, //
+
64317 {5.95771646, 0.838580251}, //
+
64318 {5.95394993, 0.834100008}, //
+
64319 {5.95035076, 0.829577804}, //
+
64320 {5.94708586, 0.82505554}, //
+
64321 {5.94415569, 0.820533335}, //
+
64322 {5.94155979, 0.816011131}, //
+
64323 {5.93929863, 0.811488867}, //
+
64324 {5.93737221, 0.806966662}, //
+
64325 {5.93578005, 0.802444458}, //
+
64326 {5.93452263, 0.797922194}, //
+
64327 {5.93359995, 0.79339999}, //
+
64328 {5.93353701, 0.791185796}, //
+
64329 {5.93334818, 0.789054334}, //
+
64330 {5.93303347, 0.787005544}, //
+
64331 {5.93259239, 0.785039485}, //
+
64332 {5.93202591, 0.783156157}, //
+
64333 {5.93133354, 0.78135556}, //
+
64334 {5.93051481, 0.779637635}, //
+
64335 {5.9295702, 0.778002441}, //
+
64336 {5.92850018, 0.776449978}, //
+
64337 {5.92734623, 0.774897516}, //
+
64338 {5.92615175, 0.773262322}, //
+
64339 {5.92491674, 0.771544456}, //
+
64340 {5.92364073, 0.7697438}, //
+
64341 {5.92232418, 0.767860472}, //
+
64342 {5.92096663, 0.765894473}, //
+
64343 {5.91956854, 0.763845682}, //
+
64344 {5.91812944, 0.76171422}, //
+
64345 {5.91664982, 0.759500027}, //
+
64346 {5.91507673, 0.757905543}, //
+
64347 {5.91337824, 0.756144464}, //
+
64348 {5.91155577, 0.754216671}, //
+
64349 {5.90960789, 0.752122223}, //
+
64350 {5.90753603, 0.749861121}, //
+
64351 {5.90533876, 0.747433305}, //
+
64352 {5.90301752, 0.744838893}, //
+
64353 {5.90057087, 0.742077768}, //
+
64354 {5.89799976, 0.739149988}, //
+
64355 {5.89534521, 0.735929608}, //
+
64356 {5.89264679, 0.732290745}, //
+
64357 {5.88990545, 0.728233337}, //
+
64358 {5.8871212, 0.723757386}, //
+
64359 {5.88429308, 0.718862951}, //
+
64360 {5.88142204, 0.713549972}, //
+
64361 {5.87850809, 0.707818508}, //
+
64362 {5.87555075, 0.701668501}, //
+
64363 {5.87255001, 0.695100009}, //
+
64364 {5.87035656, 0.692854345}, //
+
64365 {5.86828804, 0.690650642}, //
+
64366 {5.86634445, 0.688488901}, //
+
64367 {5.86452532, 0.686369121}, //
+
64368 {5.86283064, 0.684291363}, //
+
64369 {5.86126089, 0.682255566}, //
+
64370 {5.85981607, 0.680261731}, //
+
64371 {5.85849571, 0.678309858}, //
+
64372 {5.8572998, 0.676400006}, //
+
64373 {5.85618782, 0.674542606}, //
+
64374 {5.85511732, 0.672725916}, //
+
64375 {5.85408878, 0.670949996}, //
+
64376 {5.85310268, 0.669214785}, //
+
64377 {5.85215807, 0.667520344}, //
+
64378 {5.85125542, 0.665866673}, //
+
64379 {5.8503952, 0.664253712}, //
+
64380 {5.84957647, 0.66268146}, //
+
64381 {5.84880018, 0.661149979}, //
+
64382 {5.84807587, 0.659691334}, //
+
64383 {5.84739256, 0.65831542}, //
+
64384 {5.84674978, 0.657022238}, //
+
64385 {5.84614801, 0.655811727}, //
+
64386 {5.84558725, 0.654683948}, //
+
64387 {5.84506655, 0.653638899}, //
+
64388 {5.84458685, 0.652676523}, //
+
64389 {5.84414816, 0.651796937}, //
+
64390 {5.84375, 0.651000023}, //
+
64391 {5.84339333, 0.650244415}, //
+
64392 {5.84307861, 0.649488866}, //
+
64393 {5.84280539, 0.648733318}, //
+
64394 {5.8425746, 0.647977769}, //
+
64395 {5.84238577, 0.647222221}, //
+
64396 {5.8422389, 0.646466672}, //
+
64397 {5.842134, 0.645711124}, //
+
64398 {5.84207106, 0.644955575}, //
+
64399 {5.84205008, 0.644200027}, //
+
64400 {5.84202909, 0.64347595}, //
+
64401 {5.84196615, 0.642792583}, //
+
64402 {5.84193516, 0.642603099}, //
+
64403 {5.82509995, 0.651000023}, //
+
64404 {5.80814981, 0.661149979}, //
+
64405 {5.80852222, 0.662094474}, //
+
64406 {5.80881166, 0.662829041}, //
+
64407 {5.81017637, 0.666291952}, //
+
64408 {5.81079674, 0.667866051}, //
+
64409 {5.81150007, 0.669650018}, //
+
64410 {5.81225538, 0.671559274}, //
+
64411 {5.81301117, 0.67350924}, //
+
64412 {5.81376648, 0.675499976}, //
+
64413 {5.81452227, 0.677531481}, //
+
64414 {5.81527758, 0.679603696}, //
+
64415 {5.81603336, 0.681716681}, //
+
64416 {5.81678867, 0.683870375}, //
+
64417 {5.81754446, 0.686064839}, //
+
64418 {5.81829977, 0.688300014}, //
+
64419 {5.82056665, 0.69506669}, //
+
64420 {5.82132244, 0.697322249}, //
+
64421 {5.82207775, 0.699577749}, //
+
64422 {5.82283354, 0.701833308}, //
+
64423 {5.82509995, 0.708599985}, //
+
64424 {5.82581377, 0.710782707}, //
+
64425 {5.8264432, 0.712797523}, //
+
64426 {5.8269887, 0.714644432}, //
+
64427 {5.82745075, 0.716323435}, //
+
64428 {5.82782841, 0.717834592}, //
+
64429 {5.82812214, 0.719177783}, //
+
64430 {5.82833195, 0.720353067}, //
+
64431 {5.82845783, 0.721360505}, //
+
64432 {5.82849979, 0.722199976}, //
+
64433 {5.82931805, 0.723919749}, //
+
64434 {5.83026028, 0.726056814}, //
+
64435 {5.83132792, 0.728611112}, //
+
64436 {5.83251953, 0.731582701}, //
+
64437 {5.83383656, 0.734971583}, //
+
64438 {5.83527756, 0.738777757}, //
+
64439 {5.83684397, 0.743001223}, //
+
64440 {5.83853436, 0.747641981}, //
+
64441 {5.84035015, 0.752699971}, //
+
64442 {5.84225941, 0.757935822}, //
+
64443 {5.84420919, 0.76308763}, //
+
64444 {5.84619999, 0.768155575}, //
+
64445 {5.84823132, 0.773139477}, //
+
64446 {5.85030365, 0.778039515}, //
+
64447 {5.85241652, 0.78285557}, //
+
64448 {5.85457039, 0.787587643}, //
+
64449 {5.85676479, 0.792235792}, //
+
64450 {5.85900021, 0.796800017}, //
+
64451 {5.86213684, 0.800650001}, //
+
64452 {5.86552572, 0.804666638}, //
+
64453 {5.86916685, 0.80884999}, //
+
64454 {5.87305927, 0.813199997}, //
+
64455 {5.87720394, 0.817716658}, //
+
64456 {5.8815999, 0.822399974}, //
+
64457 {5.88624811, 0.827250004}, //
+
64458 {5.89114809, 0.832266688}, //
+
64459 {5.89629984, 0.837450027}, //
+
64460 {5.90163994, 0.842769146}, //
+
64461 {5.90710497, 0.848170996}, //
+
64462 {5.91269445, 0.853655577}, //
+
64463 {5.91840887, 0.859222829}, //
+
64464 {5.92424774, 0.864872813}, //
+
64465 {5.93021107, 0.870605528}, //
+
64466 {5.93629932, 0.876420975}, //
+
64467 {5.94251251, 0.882319152}, //
+
64468 {5.94885015, 0.888300002}, //
+
64469 {5.95506239, 0.894166052}, //
+
64470 {5.96089935, 0.899697542}, //
+
64471 {5.96636105, 0.904894471}, //
+
64472 {5.97144747, 0.90975678}, //
+
64473 {5.97615862, 0.914284587}, //
+
64474 {5.9804945, 0.918477774}, //
+
64475 {5.98445511, 0.9223364}, //
+
64476 {5.98803997, 0.925860465}, //
+
64477 {5.99125004, 0.929050028}, //
+
64478 {5.99568844, 0.932858646}, //
+
64479 {5.99995852, 0.936751246}, //
+
64480 {6.00406122, 0.94072777}, //
+
64481 {6.00799561, 0.944788277}, //
+
64482 {6.01176214, 0.948932707}, //
+
64483 {6.01536131, 0.95316112}, //
+
64484 {6.01879215, 0.957473457}, //
+
64485 {6.02205515, 0.961869776}, //
+
64486 {6.02514982, 0.966350019}, //
+
64487 {6.02814007, 0.970735788}, //
+
64488 {6.03108835, 0.97487098}, //
+
64489 {6.03399467, 0.978755534}, //
+
64490 {6.03685856, 0.98238951}, //
+
64491 {6.03968096, 0.985772848}, //
+
64492 {6.04246092, 0.988905549}, //
+
64493 {6.04519939, 0.991787672}, //
+
64494 {6.04789591, 0.994419158}, //
+
64495 {6.05054998, 0.996800005}, //
+
64496 {6.05317307, 0.998982728}, //
+
64497 {6.05575228, 1.00099754}, //
+
64498 {6.05828905, 1.00284445}, //
+
64499 {6.06078196, 1.00452352}, //
+
64500 {6.06323195, 1.00603461}, //
+
64501 {6.06563902, 1.00737774}, //
+
64502 {6.0680027, 1.00855303}, //
+
64503 {6.07032299, 1.00956047}, //
+
64504 {6.07259989, 1.01040006}, //
+
64505 {6.07259989, 1.01048398}, //
+
64506 {6.07259989, 1.01058888}, //
+
64507 {6.07259989, 1.0109247}, //
+
64508 {6.07259989, 1.01115561}, //
+
64509 {6.07259989, 1.01142836}, //
+
64510 {6.07259989, 1.01174319}, //
+
64511 {6.07259989, 1.01209998}, //
+
64512 {6.07257891, 1.01247776}, //
+
64513 {6.07251596, 1.01285553}, //
+
64514 {6.07241106, 1.0132333}, //
+
64515 {6.07226419, 1.01361108}, //
+
64516 {6.07207537, 1.01398885}, //
+
64517 {6.07184458, 1.01436663}, //
+
64518 {6.07157183, 1.0147444}, //
+
64519 {6.07125664, 1.01512218}, //
+
64520 {6.07089996, 1.01549995}, //
+
64521 {6.07054329, 1.01591909}, //
+
64522 {6.07022858, 1.01642096}, //
+
64523 {6.06995535, 1.01700556}, //
+
64524 {6.06972456, 1.0176729}, //
+
64525 {6.06953573, 1.01842284}, //
+
64526 {6.06938887, 1.01925552}, //
+
64527 {6.06928396, 1.02017105}, //
+
64528 {6.06922102, 1.02116919}, //
+
64529 {6.06920004, 1.02225006}, //
+
64530 {6.06917906, 1.02338338}, //
+
64531 {6.06911612, 1.0245167}, //
+
64532 {6.06901121, 1.02565002}, //
+
64533 {6.06886435, 1.02678335}, //
+
64534 {6.06867552, 1.02791667}, //
+
64535 {6.06844425, 1.02904999}, //
+
64536 {6.0681715, 1.03018332}, //
+
64537 {6.06785679, 1.03131664}, //
+
64538 {6.06750011, 1.03244996}, //
+
64539 {6.06713295, 1.03360367}, //
+
64540 {6.06676435, 1.03479815}, //
+
64541 {6.06639433, 1.03603339}, //
+
64542 {6.06602335, 1.03730929}, //
+
64543 {6.06565142, 1.03862596}, //
+
64544 {6.06527758, 1.03998339}, //
+
64545 {6.06490326, 1.04138148}, //
+
64546 {6.06452703, 1.04282033}, //
+
64547 {6.06414986, 1.04429996}, //
+
64548 {6.06375122, 1.0458945}, //
+
64549 {6.06331062, 1.04765558}, //
+
64550 {6.06282759, 1.04958332}, //
+
64551 {6.06230307, 1.05167782}, //
+
64552 {6.06173658, 1.05393887}, //
+
64553 {6.06112766, 1.05636668}, //
+
64554 {6.06047726, 1.05896115}, //
+
64555 {6.05978441, 1.06172228}, //
+
64556 {6.05905008, 1.06465006}, //
+
64557 {6.05833626, 1.0691092}, //
+
64558 {6.05770683, 1.07344258}, //
+
64559 {6.05716133, 1.07764995}, //
+
64560 {6.05669928, 1.08173144}, //
+
64561 {6.05632162, 1.08568704}, //
+
64562 {6.05602789, 1.08951664}, //
+
64563 {6.05581808, 1.09322035}, //
+
64564 {6.0556922, 1.09679818}, //
+
64565 {6.05565023, 1.10025001}, //
+
64566 {6.05565023, 1.10694635}, //
+
64567 {6.05565023, 1.11023331}, //
+
64568 {6.05565023, 1.11347961}, //
+
64569 {6.05565023, 1.11668515}, //
+
64570 {6.05565023, 1.11985004}, //
+
64571 {6.05565023, 1.12297404}, //
+
64572 {6.05565023, 1.12605739}, //
+
64573 {6.05565023, 1.12909997}, //
+
64574 {6.05632162, 1.13449264}, //
+
64575 {6.05682516, 1.14013708}, //
+
64576 {6.05716133, 1.14603329}, //
+
64577 {6.05732918, 1.15218151}, //
+
64578 {6.05732918, 1.1585815}, //
+
64579 {6.05716133, 1.16523337}, //
+
64580 {6.05682516, 1.17213702}, //
+
64581 {6.05632162, 1.17929256}, //
+
64582 {6.05565023, 1.18669999}, //
+
64583 {6.05485249, 1.19185185}, //
+
64584 {6.05397081, 1.19675183}, //
+
64585 {6.0530057, 1.20140004}, //
+
64586 {6.05195618, 1.20579624}, //
+
64587 {6.05082273, 1.20994079}, //
+
64588 {6.04960537, 1.21383333}, //
+
64589 {6.04830456, 1.2174741}, //
+
64590 {6.04691935, 1.22086298}, //
+
64591 {6.04545021, 1.22399998}, //
+
64592 {6.04399157, 1.22693765}, //
+
64593 {6.04261541, 1.22970617}, //
+
64594 {6.04132223, 1.23230553}, //
+
64595 {6.04011154, 1.23473585}, //
+
64596 {6.03898382, 1.23699689}, //
+
64597 {6.03793907, 1.23908889}, //
+
64598 {6.03697634, 1.24101174}, //
+
64599 {6.03609705, 1.24276543}, //
+
64600 {6.03529978, 1.24434996}, //
+
64601 {6.03454494, 1.24518883}, //
+
64602 {6.03379154, 1.24619448}, //
+
64603 {6.03303909, 1.24736667}, //
+
64604 {6.0322876, 1.24870551}, //
+
64605 {6.03153753, 1.25021112}, //
+
64606 {6.0307889, 1.25188339}, //
+
64607 {6.03004122, 1.25372219}, //
+
64608 {6.02929497, 1.25572777}, //
+
64609 {6.02855015, 1.2579}, //
+
64610 {6.02857018, 1.25949442}, //
+
64611 {6.02863169, 1.2612555}, //
+
64612 {6.02873325, 1.26318336}, //
+
64613 {6.02887583, 1.26527774}, //
+
64614 {6.02905941, 1.26753891}, //
+
64615 {6.02928352, 1.26996672}, //
+
64616 {6.02954817, 1.27256107}, //
+
64617 {6.02985382, 1.2753222}, //
+
64618 {6.0302, 1.27824998}, //
+
64619 {6.03059864, 1.28127158}, //
+
64620 {6.03103971, 1.28429198}, //
+
64621 {6.03152227, 1.28731108}, //
+
64622 {6.03204679, 1.29032898}, //
+
64623 {6.03261375, 1.29334569}, //
+
64624 {6.0332222, 1.29636109}, //
+
64625 {6.0338726, 1.2993753}, //
+
64626 {6.03456545, 1.30238831}, //
+
64627 {6.03529978, 1.30540001}, //
+
64628 {6.03815413, 1.3113389}, //
+
64629 {6.04067278, 1.31711113}, //
+
64630 {6.04285574, 1.32271671}, //
+
64631 {6.04470253, 1.32815552}, //
+
64632 {6.04621363, 1.33342779}, //
+
64633 {6.04738903, 1.33853328}, //
+
64634 {6.04822826, 1.34347224}, //
+
64635 {6.04873228, 1.34824443}, //
+
64636 {6.04890013, 1.35284996}, //
+
64637 {6.04892015, 1.35753953}, //
+
64638 {6.04898167, 1.36256361}, //
+
64639 {6.04908323, 1.36792219}, //
+
64640 {6.04922581, 1.37361538}, //
+
64641 {6.04940939, 1.3796432}, //
+
64642 {6.0496335, 1.38600552}, //
+
64643 {6.04989815, 1.39270246}, //
+
64644 {6.0502038, 1.3997339}, //
+
64645 {6.05054998, 1.40709996}, //
+
64646 {6.05094862, 1.41454995}, //
+
64647 {6.05138969, 1.42183328}, //
+
64648 {6.05187225, 1.42894995}, //
+
64649 {6.05239677, 1.43589997}, //
+
64650 {6.05296373, 1.44268334}, //
+
64651 {6.05357218, 1.44930005}, //
+
64652 {6.05422306, 1.45574999}, //
+
64653 {6.05491543, 1.46203339}, //
+
64654 {6.05565023, 1.46815002}, //
+
64655 {6.05653095, 1.47189569}, //
+
64656 {6.05766249, 1.47559941}, //
+
64657 {6.05904436, 1.47926116}, //
+
64658 {6.06067705, 1.48288083}, //
+
64659 {6.06256056, 1.48645866}, //
+
64660 {6.0646944, 1.48999441}, //
+
64661 {6.06707907, 1.49348831}, //
+
64662 {6.06971407, 1.49694014}, //
+
64663 {6.07259989, 1.50035}, //
+
64664 {6.0756321, 1.50367594}, //
+
64665 {6.07870626, 1.50687587}, //
+
64666 {6.0818224, 1.50995004}, //
+
64667 {6.08498001, 1.51289821}, //
+
64668 {6.08818007, 1.51572037}, //
+
64669 {6.09142208, 1.51841664}, //
+
64670 {6.09470606, 1.52098703}, //
+
64671 {6.098032, 1.52343154}, //
+
64672 {6.1013999, 1.52575004}, //
+
64673 {6.10469437, 1.52793276}, //
+
64674 {6.1077776, 1.52994752}, //
+
64675 {6.11065006, 1.53179443}, //
+
64676 {6.11331129, 1.53347349}, //
+
64677 {6.11576128, 1.53498459}, //
+
64678 {6.11800003, 1.53632772}, //
+
64679 {6.12002754, 1.53750312}, //
+
64680 {6.12184429, 1.53851044}, //
+
64681 {6.1234498, 1.53935003}, //
+
64682 {6.12353373, 1.54006362}, //
+
64683 {6.12378597, 1.54069316}, //
+
64684 {6.12420559, 1.5412389}, //
+
64685 {6.12479305, 1.5417006}, //
+
64686 {6.12554884, 1.54207838}, //
+
64687 {6.126472, 1.54237223}, //
+
64688 {6.12756348, 1.54258215}, //
+
64689 {6.1288228, 1.54270804}, //
+
64690 {6.13024998, 1.54275}, //
+
64691 {6.13705015, 1.53935003}, //
+
64692 {6.13696623, 1.53926599}, //
+
64693 {6.13671398, 1.53901422}, //
+
64694 {6.13629436, 1.53859448}, //
+
64695 {6.13024998, 1.53254998}, //
+
64696 {6.12873888, 1.53100741}, //
+
64697 {6.12722778, 1.52937961}, //
+
64698 {6.12571669, 1.52766669}, //
+
64699 {6.12420559, 1.52586854}, //
+
64700 {6.12269449, 1.52398515}, //
+
64701 {6.1211834, 1.52201664}, //
+
64702 {6.1196723, 1.51996291}, //
+
64703 {6.1181612, 1.51782405}, //
+
64704 {6.1166501, 1.51559997}, //
+
64705 {6.11519146, 1.51330245}, //
+
64706 {6.11381531, 1.510921}, //
+
64707 {6.11252213, 1.50845551}, //
+
64708 {6.11131191, 1.50590622}, //
+
64709 {6.11018372, 1.50327289}, //
+
64710 {6.10913897, 1.50055552}, //
+
64711 {6.10817671, 1.49775434}, //
+
64712 {6.10729694, 1.49486911}, //
+
64713 {6.10650015, 1.49189997}, //
+
64714 {6.10571289, 1.48879445}, //
+
64715 {6.10484076, 1.48552227}, //
+
64716 {6.10388327, 1.48208332}, //
+
64717 {6.1028409, 1.47847784}, //
+
64718 {6.10171318, 1.47470558}, //
+
64719 {6.10050011, 1.47076666}, //
+
64720 {6.09920168, 1.4666611}, //
+
64721 {6.09781837, 1.46238887}, //
+
64722 {6.09635019, 1.45795}, //
+
64723 {6.0948391, 1.45261979}, //
+
64724 {6.093328, 1.44716239}, //
+
64725 {6.0918169, 1.44157779}, //
+
64726 {6.09030533, 1.435866}, //
+
64727 {6.08879423, 1.43002713}, //
+
64728 {6.08728313, 1.42406106}, //
+
64729 {6.08577204, 1.41796792}, //
+
64730 {6.08426094, 1.41174757}, //
+
64731 {6.08274984, 1.40540004}, //
+
64732 {6.08133316, 1.39918828}, //
+
64733 {6.08008337, 1.3933531}, //
+
64734 {6.079, 1.38789439}, //
+
64735 {6.07808352, 1.38281238}, //
+
64736 {6.07733345, 1.37810683}, //
+
64737 {6.0767498, 1.37377775}, //
+
64738 {6.07633352, 1.36982536}, //
+
64739 {6.07608318, 1.36624944}, //
+
64740 {6.07600021, 1.36304998}, //
+
64741 {6.07597923, 1.35992348}, //
+
64742 {6.07591581, 1.35658824}, //
+
64743 {6.07581091, 1.35304439}, //
+
64744 {6.07566404, 1.34929192}, //
+
64745 {6.07547522, 1.34533083}, //
+
64746 {6.07524443, 1.34116113}, //
+
64747 {6.07497168, 1.33678269}, //
+
64748 {6.07465696, 1.33219564}, //
+
64749 {6.07429981, 1.32739997}, //
+
64750 {6.07394314, 1.32257342}, //
+
64751 {6.07362843, 1.31787157}, //
+
64752 {6.07335567, 1.31329441}, //
+
64753 {6.07312489, 1.30884194}, //
+
64754 {6.07293558, 1.30451417}, //
+
64755 {6.07278872, 1.30031109}, //
+
64756 {6.07268381, 1.2962327}, //
+
64757 {6.07262087, 1.29227901}, //
+
64758 {6.07259989, 1.28845}, //
+
64759 {6.07188654, 1.28191292}, //
+
64760 {6.07125664, 1.27587962}, //
+
64761 {6.07071114, 1.27034998}, //
+
64762 {6.07024956, 1.26532412}, //
+
64763 {6.06987143, 1.26080191}, //
+
64764 {6.06957769, 1.25678337}, //
+
64765 {6.06936789, 1.25326848}, //
+
64766 {6.069242, 1.25025737}, //
+
64767 {6.06920004, 1.24775004}, //
+
64768 {6.06920004, 1.24094999}, //
+
64769 {6.06922102, 1.23473895}, //
+
64770 {6.06928396, 1.22815001}, //
+
64771 {6.06938887, 1.2211833}, //
+
64772 {6.06953573, 1.21383893}, //
+
64773 {6.06972456, 1.20611668}, //
+
64774 {6.06995535, 1.19801664}, //
+
64775 {6.07022858, 1.18953884}, //
+
64776 {6.07054329, 1.18068337}, //
+
64777 {6.07089996, 1.17145002}, //
+
64778 {6.07138252, 1.16231048}, //
+
64779 {6.07207537, 1.15371418}, //
+
64780 {6.07297754, 1.14566112}, //
+
64781 {6.07409, 1.13815129}, //
+
64782 {6.07541227, 1.13118458}, //
+
64783 {6.07694435, 1.1247611}, //
+
64784 {6.07868624, 1.11888087}, //
+
64785 {6.08063841, 1.11354387}, //
+
64786 {6.08279991, 1.10874999}, //
+
64787 {6.08421659, 1.10494137}, //
+
64788 {6.08546686, 1.10104871}, //
+
64789 {6.08655024, 1.09707224}, //
+
64790 {6.08746672, 1.09301174}, //
+
64791 {6.08821678, 1.08886731}, //
+
64792 {6.08879995, 1.08463883}, //
+
64793 {6.08921671, 1.08032656}, //
+
64794 {6.08946657, 1.07593024}, //
+
64795 {6.08955002, 1.07145}, //
+
64796 {6.08965445, 1.06623518}, //
+
64797 {6.08996725, 1.06114626}, //
+
64798 {6.09048891, 1.05618334}, //
+
64799 {6.09121895, 1.0513463}, //
+
64800 {6.09215784, 1.04663515}, //
+
64801 {6.09330559, 1.04205}, //
+
64802 {6.09466171, 1.03759074}, //
+
64803 {6.09622669, 1.03325737}, //
+
64804 {6.09800005, 1.02904999}, //
+
64805 {6.10028648, 1.02501047}, //
+
64806 {6.10336781, 1.02118087}, //
+
64807 {6.10724449, 1.01756108}, //
+
64808 {6.11191607, 1.01415122}, //
+
64809 {6.11738253, 1.01095128}, //
+
64810 {6.12364435, 1.00796115}, //
+
64811 {6.13070107, 1.00518084}, //
+
64812 {6.13855314, 1.00261045}, //
+
64813 {6.14720011, 1.00024998}, //
+
64814 {6.15310764, 0.998109281}, //
+
64815 {6.15876293, 0.99622035}, //
+
64816 {6.16416645, 0.994583309}, //
+
64817 {6.16931868, 0.993198156}, //
+
64818 {6.17421865, 0.992064834}, //
+
64819 {6.17886686, 0.991183341}, //
+
64820 {6.18326283, 0.990553677}, //
+
64821 {6.18740749, 0.990175903}, //
+
64822 {6.19129992, 0.990050018}, //
+
64823 {6.19506645, 0.99009198}, //
+
64824 {6.19883347, 0.990217924}, //
+
64825 {6.2026, 0.990427792}, //
+
64826 {6.20636654, 0.990721583}, //
+
64827 {6.21013355, 0.991099358}, //
+
64828 {6.21390009, 0.991561115}, //
+
64829 {6.21766663, 0.992106795}, //
+
64830 {6.22143316, 0.992736399}, //
+
64831 {6.22520018, 0.993449986}, //
+
64832 {6.22741413, 0.994163573}, //
+
64833 {6.22954559, 0.994793236}, //
+
64834 {6.23159456, 0.995338917}, //
+
64835 {6.23356056, 0.995800614}, //
+
64836 {6.23544359, 0.996178389}, //
+
64837 {6.23724461, 0.996472239}, //
+
64838 {6.23896217, 0.996682107}, //
+
64839 {6.24059772, 0.996808052}, //
+
64840 {6.24214983, 0.996850014}, //
+
64841 {6.24514008, 0.995906174}, //
+
64842 {6.24808836, 0.994585812}, //
+
64843 {6.25099468, 0.992888868}, //
+
64844 {6.25385857, 0.990815461}, //
+
64845 {6.25668097, 0.988365412}, //
+
64846 {6.25946093, 0.9855389}, //
+
64847 {6.2621994, 0.982335806}, //
+
64848 {6.26489592, 0.978756189}, //
+
64849 {6.26754999, 0.974799991}, //
+
64850 {6.27013063, 0.970718503}, //
+
64851 {6.27258444, 0.96676296}, //
+
64852 {6.27491093, 0.962933362}, //
+
64853 {6.27711058, 0.959229648}, //
+
64854 {6.27918291, 0.955651879}, //
+
64855 {6.28112793, 0.952199996}, //
+
64856 {6.28294563, 0.948874056}, //
+
64857 {6.2846365, 0.945674062}, //
+
64858 {6.28620005, 0.942600012}, //
+
64859 {6.28620005, 0.940711141}, //
+
64860 {6.28620005, 0.940249383}, //
+
64861 {6.28620005, 0.939871609}, //
+
64862 {6.28620005, 0.939199984}, //
+
64863 {6.28691339, 0.93857038}, //
+
64864 {6.2875433, 0.938192606}, //
+
64865 {6.2880888, 0.938066661}, //
+
64866 {6.28855085, 0.938192606}, //
+
64867 {6.28892851, 0.93857038}, //
+
64868 {6.28922224, 0.939199984}, //
+
64869 {6.28943205, 0.940081477}, //
+
64870 {6.28955793, 0.9412148}, //
+
64871 {6.2895999, 0.942600012}, //
+
64872 {6.2895999, 0.947883308}, //
+
64873 {6.2895999, 0.949977756}, //
+
64874 {6.2895999, 0.962949991}, //
+
64875 {6.28955793, 0.965961099}, //
+
64876 {6.28943205, 0.968972206}, //
+
64877 {6.28922224, 0.971983314}, //
+
64878 {6.28892851, 0.974994421}, //
+
64879 {6.28855085, 0.978005528}, //
+
64880 {6.2880888, 0.981016695}, //
+
64881 {6.2875433, 0.984027803}, //
+
64882 {6.28691339, 0.98703891}, //
+
64883 {6.28620005, 0.990050018}, //
+
64884 {6.28620005, 0.996466696}, //
+
64885 {6.28620005, 0.998435199}, //
+
64886 {6.28620005, 1.00031853}, //
+
64887 {6.28620005, 1.00699997}, //
+
64888 {6.2861371, 1.00922406}, //
+
64889 {6.28594828, 1.01136291}, //
+
64890 {6.28563356, 1.01341665}, //
+
64891 {6.28519249, 1.01538515}, //
+
64892 {6.28462601, 1.01726854}, //
+
64893 {6.28393316, 1.01906669}, //
+
64894 {6.28311491, 1.02077961}, //
+
64895 {6.2821703, 1.02240741}, //
+
64896 {6.2810998, 1.02394998}, //
+
64897 {6.2799983, 1.02541912}, //
+
64898 {6.27893686, 1.02680433}, //
+
64899 {6.27791643, 1.0281055}, //
+
64900 {6.27693701, 1.02932286}, //
+
64901 {6.27599812, 1.03045619}, //
+
64902 {6.27510023, 1.03150558}, //
+
64903 {6.2742424, 1.03247094}, //
+
64904 {6.27342606, 1.03335249}, //
+
64905 {6.27264977, 1.03415}, //
+
64906 {6.2726078, 1.03419197}, //
+
64907 {6.27248192, 1.03431785}, //
+
64908 {6.27227211, 1.03452778}, //
+
64909 {6.27197838, 1.03482163}, //
+
64910 {6.26924992, 1.03754997}, //
+
64911 {6.2685051, 1.03823209}, //
+
64912 {6.26775885, 1.03878951}, //
+
64913 {6.26701117, 1.03922224}, //
+
64914 {6.26626253, 1.03953028}, //
+
64915 {6.26551247, 1.03971362}, //
+
64916 {6.26476097, 1.03977227}, //
+
64917 {6.26400852, 1.03970623}, //
+
64918 {6.26325512, 1.03951538}, //
+
64919 {6.26249981, 1.03919995}, //
+
64920 {6.2617445, 1.03881168}, //
+
64921 {6.26098871, 1.03838027}, //
+
64922 {6.2602334, 1.03790557}, //
+
64923 {6.25947762, 1.03738761}, //
+
64924 {6.25872231, 1.03682649}, //
+
64925 {6.25796652, 1.03622222}, //
+
64926 {6.25721121, 1.03557467}, //
+
64927 {6.25645542, 1.03488398}, //
+
64928 {6.25570011, 1.03415}, //
+
64929 {6.25490332, 1.03339446}, //
+
64930 {6.25402355, 1.03263891}, //
+
64931 {6.25306129, 1.03188336}, //
+
64932 {6.25201607, 1.03112781}, //
+
64933 {6.25088835, 1.03037226}, //
+
64934 {6.24967766, 1.02961671}, //
+
64935 {6.24838448, 1.02886117}, //
+
64936 {6.2470088, 1.0281055}, //
+
64937 {6.24555016, 1.02734995}, //
+
64938 {6.244627, 1.02665746}, //
+
64939 {6.24336958, 1.02609074}, //
+
64940 {6.2417779, 1.02565002}, //
+
64941 {6.239851, 1.02533519}, //
+
64942 {6.23759031, 1.02514625}, //
+
64943 {6.23499441, 1.0250833}, //
+
64944 {6.23206425, 1.02514625}, //
+
64945 {6.22879934, 1.02533519}, //
+
64946 {6.22520018, 1.02565002}, //
+
64947 {6.21766663, 1.02640557}, //
+
64948 {6.21013355, 1.02716112}, //
+
64949 {6.20636654, 1.0275389}, //
+
64950 {6.19129992, 1.02904999}, //
+
64951 {6.18761683, 1.02940679}, //
+
64952 {6.18410015, 1.02972162}, //
+
64953 {6.18074989, 1.02999449}, //
+
64954 {6.17756653, 1.03022528}, //
+
64955 {6.17455006, 1.03041422}, //
+
64956 {6.1717, 1.03056109}, //
+
64957 {6.16901684, 1.03066599}, //
+
64958 {6.16650009, 1.03072906}, //
+
64959 {6.16415024, 1.03075004}, //
+
64960 {6.15956497, 1.03177714}, //
+
64961 {6.15485382, 1.03334749}, //
+
64962 {6.15001678, 1.03546107}, //
+
64963 {6.14505386, 1.03811789}, //
+
64964 {6.13996458, 1.04131794}, //
+
64965 {6.13474989, 1.04506111}, //
+
64966 {6.12940931, 1.04934752}, //
+
64967 {6.12394238, 1.05417717}, //
+
64968 {6.11835003, 1.05955005}, //
+
64969 {6.11306095, 1.06530988}, //
+
64970 {6.10848331, 1.07127845}, //
+
64971 {6.10461664, 1.07745552}, //
+
64972 {6.10146093, 1.08384132}, //
+
64973 {6.09901667, 1.09043574}, //
+
64974 {6.09728336, 1.0972389}, //
+
64975 {6.09626102, 1.10425067}, //
+
64976 {6.09595013, 1.11147094}, //
+
64977 {6.09635019, 1.11889994}, //
+
64978 {6.09672785, 1.11795557}, //
+
64979 {6.09702158, 1.117221}, //
+
64980 {6.09739923, 1.1162765}, //
+
64981 {6.09840679, 1.11375797}, //
+
64982 {6.09903622, 1.11218393}, //
+
64983 {6.09975004, 1.11039996}, //
+
64984 {6.1005888, 1.10845923}, //
+
64985 {6.10159445, 1.10639262}, //
+
64986 {6.10276651, 1.10420001}, //
+
64987 {6.10410547, 1.1018815}, //
+
64988 {6.10561132, 1.099437}, //
+
64989 {6.10728312, 1.09686661}, //
+
64990 {6.10912228, 1.09417033}, //
+
64991 {6.11112785, 1.09134817}, //
+
64992 {6.11329985, 1.08840001}, //
+
64993 {6.11568165, 1.08540928}, //
+
64994 {6.11831474, 1.08245921}, //
+
64995 {6.12120008, 1.07955003}, //
+
64996 {6.1243372, 1.07668149}, //
+
64997 {6.12772608, 1.07385373}, //
+
64998 {6.13136673, 1.07106662}, //
+
64999 {6.13525915, 1.06832039}, //
+
65000 {6.13940382, 1.06561482}, //
+
65001 {6.14379978, 1.06295002}, //
+
65002 {6.14840603, 1.06046295}, //
+
65003 {6.15318012, 1.05826855}, //
+
65004 {6.15812206, 1.05636668}, //
+
65005 {6.16323233, 1.05475736}, //
+
65006 {6.16850996, 1.05344069}, //
+
65007 {6.17395544, 1.05241668}, //
+
65008 {6.17956924, 1.05168521}, //
+
65009 {6.18535042, 1.05124629}, //
+
65010 {6.19129992, 1.05110002}, //
+
65011 {6.19275856, 1.05110002}, //
+
65012 {6.19413471, 1.05110002}, //
+
65013 {6.19542789, 1.05110002}, //
+
65014 {6.19663811, 1.05110002}, //
+
65015 {6.19776583, 1.05110002}, //
+
65016 {6.19977331, 1.05110002}, //
+
65017 {6.20065308, 1.05110002}, //
+
65018 {6.20144987, 1.05110002}, //
+
65019 {6.20222616, 1.051121}, //
+
65020 {6.20304251, 1.05118394}, //
+
65021 {6.20389986, 1.05128884}, //
+
65022 {6.20479822, 1.05143583}, //
+
65023 {6.20573711, 1.05162466}, //
+
65024 {6.20671654, 1.05185556}, //
+
65025 {6.20773697, 1.05212843}, //
+
65026 {6.20879793, 1.05244327}, //
+
65027 {6.2098999, 1.05280006}, //
+
65028 {6.21099138, 1.0531981}, //
+
65029 {6.21199894, 1.05363703}, //
+
65030 {6.2129221, 1.05411673}, //
+
65031 {6.21376181, 1.05463707}, //
+
65032 {6.21451712, 1.05519819}, //
+
65033 {6.21518898, 1.05579996}, //
+
65034 {6.21577644, 1.05644262}, //
+
65035 {6.21628046, 1.05712593}, //
+
65036 {6.21670008, 1.05785}, //
+
65037 {6.21705675, 1.05856359}, //
+
65038 {6.21764421, 1.05973887}, //
+
65039 {6.21787548, 1.06020057}, //
+
65040 {6.21806431, 1.06057835}, //
+
65041 {6.21821117, 1.0608722}, //
+
65042 {6.21831608, 1.06108212}, //
+
65043 {6.21837902, 1.06120801}, //
+
65044 {6.2184, 1.06124997}, //
+
65045 {6.21543026, 1.06196356}, //
+
65046 {6.21254301, 1.06259322}, //
+
65047 {6.20973873, 1.06313884}, //
+
65048 {6.20701742, 1.06360066}, //
+
65049 {6.2043786, 1.06397843}, //
+
65050 {6.20182228, 1.06427217}, //
+
65051 {6.19934893, 1.06448209}, //
+
65052 {6.19695807, 1.06460798}, //
+
65053 {6.19465017, 1.06465006}, //
+
65054 {6.18948698, 1.06544697}, //
+
65055 {6.18453169, 1.0663265}, //
+
65056 {6.17978334, 1.06728888}, //
+
65057 {6.17524242, 1.06833398}, //
+
65058 {6.1709094, 1.0694617}, //
+
65059 {6.16678333, 1.07067227}, //
+
65060 {6.16286469, 1.07196546}, //
+
65061 {6.15915394, 1.07334137}, //
+
65062 {6.15565014, 1.07480001}, //
+
65063 {6.15226126, 1.07645738}, //
+
65064 {6.14887238, 1.07840741}, //
+
65065 {6.14548349, 1.08064997}, //
+
65066 {6.14209461, 1.0831852}, //
+
65067 {6.13870573, 1.08601296}, //
+
65068 {6.13531685, 1.08913338}, //
+
65069 {6.13192797, 1.09254634}, //
+
65070 {6.12853909, 1.09625185}, //
+
65071 {6.1251502, 1.10025001}, //
+
65072 {6.12165594, 1.10475063}, //
+
65073 {6.11795235, 1.10996354}, //
+
65074 {6.11403894, 1.11588883}, //
+
65075 {6.10991526, 1.12252653}, //
+
65076 {6.10558224, 1.12987649}, //
+
65077 {6.10103893, 1.13793886}, //
+
65078 {6.09628582, 1.14671361}, //
+
65079 {6.0913229, 1.15620065}, //
+
65080 {6.08615017, 1.16639996}, //
+
65081 {6.08477449, 1.16945314}, //
+
65082 {6.08364868, 1.17259014}, //
+
65083 {6.08277225, 1.17581105}, //
+
65084 {6.08214521, 1.17911601}, //
+
65085 {6.08176708, 1.18250489}, //
+
65086 {6.08163881, 1.18597782}, //
+
65087 {6.08175993, 1.18953454}, //
+
65088 {6.08213043, 1.19317532}, //
+
65089 {6.08274984, 1.19690001}, //
+
65090 {6.08354759, 1.20058274}, //
+
65091 {6.08442879, 1.20409751}, //
+
65092 {6.08539438, 1.20744443}, //
+
65093 {6.0864439, 1.2106235}, //
+
65094 {6.08757734, 1.21363461}, //
+
65095 {6.08879423, 1.21647775}, //
+
65096 {6.09009552, 1.21915305}, //
+
65097 {6.09148073, 1.22166049}, //
+
65098 {6.09294987, 1.22399998}, //
+
65099 {6.09294987, 1.2211982}, //
+
65100 });
+
65101 polys.push_back({
+
65102 {6.08128881, 1.01040006}, //
+
65103 {6.08074331, 1.01040006}, //
+
65104 {6.08175039, 1.01040006}, //
+
65105 });
+
65106 polys.push_back({
+
65107 {6.07486677, 1.01040006}, //
+
65108 {6.07411098, 1.01040006}, //
+
65109 {6.07514429, 1.01040006}, //
+
65110 });
+
65111 polys.push_back({
+
65112 {6.08279991, 1.01040006}, //
+
65113 {6.08279991, 1.01040006}, //
+
65114 {6.08279991, 1.01040006}, //
+
65115 });
+
65116 polys.push_back({
+
65117 {6.08209324, 1.01040006}, //
+
65118 {6.08177137, 1.01040006}, //
+
65119 {6.08212852, 1.01040006}, //
+
65120 });
+
65121 polys.push_back({
+
65122 {6.08015537, 1.01040006}, //
+
65123 {6.07992458, 1.01040006}, //
+
65124 {6.07958889, 1.01040006}, //
+
65125 {6.07948399, 1.01040006}, //
+
65126 {6.07931614, 1.01040006}, //
+
65127 {6.07921124, 1.01040006}, //
+
65128 {6.07906437, 1.01040006}, //
+
65129 {6.07887554, 1.01040006}, //
+
65130 {6.07864428, 1.01040006}, //
+
65131 {6.07837152, 1.01040006}, //
+
65132 {6.0804286, 1.01040006}, //
+
65133 });
+
65134 polys.push_back({
+
65135 {6.07713318, 1.01040006}, //
+
65136 {6.07705164, 1.01040006}, //
+
65137 {6.07788897, 1.01040006}, //
+
65138 });
+
65139 polys.push_back({
+
65140 {6.07278872, 1.01040006}, //
+
65141 {6.07268381, 1.01040006}, //
+
65142 {6.07293558, 1.01040006}, //
+
65143 });
+
65144 polys.push_back({
+
65145 {6.08242226, 1.01040006}, //
+
65146 {6.08209324, 1.01040006}, //
+
65147 {6.08227539, 1.01040006}, //
+
65148 {6.08251667, 1.01040006}, //
+
65149 });
+
65150 polys.push_back({
+
65151 {6.07335567, 1.01040006}, //
+
65152 {6.07312489, 1.01040006}, //
+
65153 {6.07362843, 1.01040006}, //
+
65154 });
+
65155 polys.push_back({
+
65156 {6.0765667, 1.01040006}, //
+
65157 {6.07618904, 1.01040006}, //
+
65158 {6.07705164, 1.01040006}, //
+
65159 });
+
65160 polys.push_back({
+
65161 {6.08261108, 1.01040006}, //
+
65162 {6.08251667, 1.01040006}, //
+
65163 {6.08271599, 1.01040006}, //
+
65164 });
+
65165 polys.push_back({
+
65166 {6.07543325, 1.01040006}, //
+
65167 {6.07514429, 1.01040006}, //
+
65168 {6.07581091, 1.01040006}, //
+
65169 });
+
65170 polys.push_back({
+
65171 {3.18728328, 1.19690001}, //
+
65172 {3.18753338, 1.19690001}, //
+
65173 {3.18853331, 1.19690001}, //
+
65174 {3.19128323, 1.19690001}, //
+
65175 {3.19253325, 1.19690001}, //
+
65176 {3.19546056, 1.19690001}, //
+
65177 {3.19696975, 1.19690001}, //
+
65178 {3.19847775, 1.19690001}, //
+
65179 {3.19998455, 1.19690001}, //
+
65180 {3.20449758, 1.19690001}, //
+
65181 {3.20599937, 1.19690001}, //
+
65182 {3.20749998, 1.19690001}, //
+
65183 {3.20896912, 1.19685805}, //
+
65184 {3.21035433, 1.19673204}, //
+
65185 {3.21165562, 1.19652224}, //
+
65186 {3.21287274, 1.19622838}, //
+
65187 {3.21400619, 1.19585061}, //
+
65188 {3.21505547, 1.19538891}, //
+
65189 {3.21602106, 1.19484317}, //
+
65190 {3.21690249, 1.19421363}, //
+
65191 {3.2177, 1.19350004}, //
+
65192 {3.21925259, 1.19276547}, //
+
65193 {3.22088766, 1.19207287}, //
+
65194 {3.22260547, 1.19142222}, //
+
65195 {3.22440624, 1.19081354}, //
+
65196 {3.22628951, 1.19024694}, //
+
65197 {3.22825551, 1.18972218}, //
+
65198 {3.23030424, 1.1892395}, //
+
65199 {3.2324357, 1.18879879}, //
+
65200 {3.2346499, 1.18840003}, //
+
65201 {3.23695803, 1.18804324}, //
+
65202 {3.23934865, 1.1877284}, //
+
65203 {3.24182224, 1.18745553}, //
+
65204 {3.24437833, 1.18722475}, //
+
65205 {3.24701738, 1.1870358}, //
+
65206 {3.24973893, 1.18688893}, //
+
65207 {3.25254321, 1.18678391}, //
+
65208 {3.25543022, 1.18672097}, //
+
65209 {3.25839996, 1.18669999}, //
+
65210 {3.26065612, 1.18599689}, //
+
65211 {3.26291347, 1.18537652}, //
+
65212 {3.26517224, 1.18483889}, //
+
65213 {3.26743221, 1.18438399}, //
+
65214 {3.26969314, 1.1840117}, //
+
65215 {3.27195549, 1.18372226}, //
+
65216 {3.27421904, 1.18351543}, //
+
65217 {3.27648401, 1.18339133}, //
+
65218 {3.27874994, 1.18334997}, //
+
65219 {3.28085923, 1.18267775}, //
+
65220 {3.28267598, 1.18217218}, //
+
65221 {3.28419995, 1.18183339}, //
+
65222 {3.28543139, 1.18166113}, //
+
65223 {3.28637028, 1.18165553}, //
+
65224 {3.28701663, 1.1818167}, //
+
65225 {3.28737044, 1.1821444}, //
+
65226 {3.28743148, 1.18263888}, //
+
65227 {3.28719997, 1.18330002}, //
+
65228 {3.28671789, 1.18409753}, //
+
65229 {3.28602719, 1.18497896}, //
+
65230 {3.28512788, 1.18594444}, //
+
65231 {3.28401971, 1.18699384}, //
+
65232 {3.28270316, 1.18812716}, //
+
65233 {3.28117776, 1.18934441}, //
+
65234 {3.27944374, 1.19064569}, //
+
65235 {3.27750134, 1.19203091}, //
+
65236 {3.27535009, 1.19350004}, //
+
65237 {3.27455258, 1.19427598}, //
+
65238 {3.27367091, 1.19509256}, //
+
65239 {3.27270555, 1.19595003}, //
+
65240 {3.27165627, 1.19684815}, //
+
65241 {3.27052283, 1.19778705}, //
+
65242 {3.26930547, 1.19876671}, //
+
65243 {3.26800442, 1.19978702}, //
+
65244 {3.26661921, 1.2008481}, //
+
65245 {3.26515007, 1.20194995}, //
+
65246 {3.26369143, 1.20310438}, //
+
65247 {3.26231551, 1.20430064}, //
+
65248 {3.26102233, 1.20553887}, //
+
65249 {3.25981164, 1.20681918}, //
+
65250 {3.25868392, 1.20814133}, //
+
65251 {3.25763893, 1.20950556}, //
+
65252 {3.25667644, 1.21091175}, //
+
65253 {3.25579691, 1.21235991}, //
+
65254 {3.25500011, 1.21385002}, //
+
65255 {3.25357294, 1.21696603}, //
+
65256 {3.25231361, 1.22029197}, //
+
65257 {3.25122213, 1.22382772}, //
+
65258 {3.25029874, 1.22757351}, //
+
65259 {3.24954319, 1.231529}, //
+
65260 {3.24895549, 1.23569441}, //
+
65261 {3.24853587, 1.24006975}, //
+
65262 {3.24828386, 1.24465489}, //
+
65263 {3.24819994, 1.24944997}, //
+
65264 {3.24832582, 1.25420308}, //
+
65265 {3.24870372, 1.25866234}, //
+
65266 {3.24933338, 1.26282775}, //
+
65267 {3.25021482, 1.26669943}, //
+
65268 {3.25134826, 1.27027714}, //
+
65269 {3.25273323, 1.27356112}, //
+
65270 {3.25437045, 1.27655125}, //
+
65271 {3.2562592, 1.27924752}, //
+
65272 {3.25839996, 1.28164995}, //
+
65273 {3.25925994, 1.28227961}, //
+
65274 {3.26032829, 1.28265738}, //
+
65275 {3.2616055, 1.28278339}, //
+
65276 {3.26309133, 1.28265738}, //
+
65277 {3.26478577, 1.28227961}, //
+
65278 {3.26668882, 1.28164995}, //
+
65279 {3.26880074, 1.28076851}, //
+
65280 {3.27112103, 1.27963519}, //
+
65281 {3.27364993, 1.27824998}, //
+
65282 {3.276263, 1.27666545}, //
+
65283 {3.2788353, 1.27491176}, //
+
65284 {3.28136659, 1.27298892}, //
+
65285 {3.28385735, 1.27089691}, //
+
65286 {3.28630733, 1.26863575}, //
+
65287 {3.28871655, 1.26620555}, //
+
65288 {3.29108524, 1.26360619}, //
+
65289 {3.29341292, 1.26083767}, //
+
65290 {3.29570007, 1.2579}, //
+
65291 {3.2986691, 1.25497282}, //
+
65292 {3.3015542, 1.2522136}, //
+
65293 {3.30435562, 1.24962223}, //
+
65294 {3.30707288, 1.24719882}, //
+
65295 {3.30970621, 1.24494326}, //
+
65296 {3.31225562, 1.24285555}, //
+
65297 {3.31472087, 1.2409358}, //
+
65298 {3.31710243, 1.2391839}, //
+
65299 {3.31940007, 1.23759997}, //
+
65300 {3.32300925, 1.23464072}, //
+
65301 {3.32628155, 1.23180735}, //
+
65302 {3.32921672, 1.22909999}, //
+
65303 {3.33181477, 1.22651851}, //
+
65304 {3.33407593, 1.22406292}, //
+
65305 {3.33599997, 1.22173333}, //
+
65306 {3.33758712, 1.21952963}, //
+
65307 {3.33883715, 1.21745181}, //
+
65308 {3.33975005, 1.2155}, //
+
65309 {3.34042168, 1.21351731}, //
+
65310 {3.34092522, 1.21132469}, //
+
65311 {3.34126115, 1.20892227}, //
+
65312 {3.341429, 1.20630991}, //
+
65313 {3.341429, 1.20348763}, //
+
65314 {3.34126115, 1.20045555}, //
+
65315 {3.34092522, 1.19721353}, //
+
65316 {3.34042168, 1.19376171}, //
+
65317 {3.33975005, 1.19009995}, //
+
65318 {3.33915114, 1.18790674}, //
+
65319 {3.33884382, 1.18583822}, //
+
65320 {3.33882785, 1.1838944}, //
+
65321 {3.33910298, 1.18207526}, //
+
65322 {3.3396697, 1.18038082}, //
+
65323 {3.34052777, 1.17881107}, //
+
65324 {3.34167719, 1.17736602}, //
+
65325 {3.34311795, 1.17604566}, //
+
65326 {3.34485006, 1.17484999}, //
+
65327 {3.34675932, 1.17377961}, //
+
65328 {3.34870934, 1.17283523}, //
+
65329 {3.3506999, 1.17201662}, //
+
65330 {3.35273147, 1.17132401}, //
+
65331 {3.3548038, 1.17075741}, //
+
65332 {3.35691667, 1.1703167}, //
+
65333 {3.3590703, 1.17000186}, //
+
65334 {3.36126471, 1.16981292}, //
+
65335 {3.36350012, 1.16974998}, //
+
65336 {3.36646986, 1.16900492}, //
+
65337 {3.36935687, 1.16825867}, //
+
65338 {3.37216115, 1.16751111}, //
+
65339 {3.3748827, 1.16676235}, //
+
65340 {3.37752151, 1.16601229}, //
+
65341 {3.38007784, 1.16526115}, //
+
65342 {3.38255119, 1.1645087}, //
+
65343 {3.38494205, 1.16375494}, //
+
65344 {3.38724995, 1.16299999}, //
+
65345 {3.3894012, 1.16222346}, //
+
65346 {3.39134383, 1.16140497}, //
+
65347 {3.39307785, 1.1605444}, //
+
65348 {3.39460301, 1.15964198}, //
+
65349 {3.3959198, 1.15869749}, //
+
65350 {3.39702773, 1.15771115}, //
+
65351 {3.39792705, 1.15668273}, //
+
65352 {3.39861798, 1.15561235}, //
+
65353 {3.39910007, 1.15450001}, //
+
65354 {3.39941478, 1.15336668}, //
+
65355 {3.39960361, 1.15223336}, //
+
65356 {3.39966655, 1.15110004}, //
+
65357 {3.39960361, 1.14996672}, //
+
65358 {3.39941478, 1.14883327}, //
+
65359 {3.39910007, 1.14769995}, //
+
65360 {3.39865923, 1.14656663}, //
+
65361 {3.39809251, 1.14543331}, //
+
65362 {3.3973999, 1.14429998}, //
+
65363 {3.39664507, 1.14319813}, //
+
65364 {3.39589143, 1.14213705}, //
+
65365 {3.39513898, 1.14111662}, //
+
65366 {3.39438772, 1.14013708}, //
+
65367 {3.39363766, 1.13919818}, //
+
65368 {3.39288878, 1.13829994}, //
+
65369 {3.39214134, 1.13744259}, //
+
65370 {3.39139509, 1.13662589}, //
+
65371 {3.39065003, 1.13584995}, //
+
65372 {3.38993645, 1.13509512}, //
+
65373 {3.38930678, 1.13434136}, //
+
65374 {3.38876104, 1.13358891}, //
+
65375 {3.38829947, 1.13283765}, //
+
65376 {3.38792157, 1.13208771}, //
+
65377 {3.38762784, 1.13133883}, //
+
65378 {3.38741779, 1.13059139}, //
+
65379 {3.38729191, 1.12984502}, //
+
65380 {3.38724995, 1.12909997}, //
+
65381 {3.38651538, 1.12834442}, //
+
65382 {3.38582277, 1.12758887}, //
+
65383 {3.38517213, 1.12683332}, //
+
65384 {3.38456368, 1.12607777}, //
+
65385 {3.38399696, 1.12532222}, //
+
65386 {3.3834722, 1.12456667}, //
+
65387 {3.38298941, 1.12381113}, //
+
65388 {3.38254881, 1.12305558}, //
+
65389 {3.38214993, 1.12230003}, //
+
65390 {3.3817513, 1.1215235}, //
+
65391 {3.38131046, 1.12070489}, //
+
65392 {3.38082767, 1.11984444}, //
+
65393 {3.38030314, 1.11894202}, //
+
65394 {3.37973642, 1.11799753}, //
+
65395 {3.37912774, 1.11701107}, //
+
65396 {3.3784771, 1.11598277}, //
+
65397 {3.37778449, 1.11491239}, //
+
65398 {3.37704992, 1.11380005}, //
+
65399 {3.37629437, 1.11271918}, //
+
65400 {3.37553883, 1.11172104}, //
+
65401 {3.37478328, 1.11080551}, //
+
65402 {3.37402773, 1.10997283}, //
+
65403 {3.37327218, 1.10922289}, //
+
65404 {3.37251663, 1.10855556}, //
+
65405 {3.37176108, 1.10797095}, //
+
65406 {3.37100554, 1.10746908}, //
+
65407 {3.37024999, 1.10704994}, //
+
65408 {3.36954689, 1.10669327}, //
+
65409 {3.36892653, 1.10637844}, //
+
65410 {3.36838889, 1.10610557}, //
+
65411 {3.36756182, 1.10568583}, //
+
65412 {3.36706543, 1.10543394}, //
+
65413 {3.36694145, 1.105371}, //
+
65414 {3.36689997, 1.10535002}, //
+
65415 {3.36689997, 1.10541236}, //
+
65416 {3.36689997, 1.11039996}, //
+
65417 {3.36685801, 1.11155427}, //
+
65418 {3.36673212, 1.11275065}, //
+
65419 {3.36652231, 1.11398888}, //
+
65420 {3.36622834, 1.11526918}, //
+
65421 {3.36585069, 1.11659133}, //
+
65422 {3.36538887, 1.11795557}, //
+
65423 {3.36484313, 1.11936176}, //
+
65424 {3.36421347, 1.12080991}, //
+
65425 {3.36350012, 1.12230003}, //
+
65426 {3.36274433, 1.12385249}, //
+
65427 {3.36198878, 1.12548769}, //
+
65428 {3.36123323, 1.12720561}, //
+
65429 {3.36047769, 1.12900615}, //
+
65430 {3.35972214, 1.13088953}, //
+
65431 {3.35896659, 1.13285553}, //
+
65432 {3.35821104, 1.13490427}, //
+
65433 {3.35745549, 1.13703585}, //
+
65434 {3.35669994, 1.13925004}, //
+
65435 {3.35591292, 1.14146423}, //
+
65436 {3.35504079, 1.1435957}, //
+
65437 {3.3540833, 1.14564443}, //
+
65438 {3.3530407, 1.14761055}, //
+
65439 {3.35191298, 1.14949381}, //
+
65440 {3.3506999, 1.15129447}, //
+
65441 {3.34940195, 1.15301239}, //
+
65442 {3.34801841, 1.15464759}, //
+
65443 {3.34654999, 1.15620005}, //
+
65444 {3.34650803, 1.15691364}, //
+
65445 {3.34638214, 1.15754318}, //
+
65446 {3.34617233, 1.15808892}, //
+
65447 {3.34587836, 1.15855062}, //
+
65448 {3.34550071, 1.15892839}, //
+
65449 {3.34503889, 1.15922225}, //
+
65450 {3.34449315, 1.15943205}, //
+
65451 {3.34386349, 1.15955806}, //
+
65452 {3.3431499, 1.15960002}, //
+
65453 {3.34097767, 1.16179323}, //
+
65454 {3.33897233, 1.16386175}, //
+
65455 {3.33713341, 1.16580558}, //
+
65456 {3.33546114, 1.16762471}, //
+
65457 {3.33395553, 1.16931915}, //
+
65458 {3.33261657, 1.1708889}, //
+
65459 {3.3314445, 1.17233396}, //
+
65460 {3.33043885, 1.17365432}, //
+
65461 {3.3296001, 1.17484999}, //
+
65462 {3.32884455, 1.17612958}, //
+
65463 {3.328089, 1.17770183}, //
+
65464 {3.32733345, 1.17956662}, //
+
65465 {3.32657766, 1.18172407}, //
+
65466 {3.32582211, 1.18417406}, //
+
65467 {3.32506657, 1.18691671}, //
+
65468 {3.32431102, 1.1899519}, //
+
65469 {3.32355547, 1.19327962}, //
+
65470 {3.32279992, 1.19690001}, //
+
65471 {3.32206535, 1.19837964}, //
+
65472 {3.32137275, 1.19981849}, //
+
65473 {3.3207221, 1.2012167}, //
+
65474 {3.32011366, 1.20257401}, //
+
65475 {3.31954694, 1.20389068}, //
+
65476 {3.31902218, 1.2051667}, //
+
65477 {3.31853962, 1.20640182}, //
+
65478 {3.31809878, 1.2075963}, //
+
65479 {3.31769991, 1.20875001}, //
+
65480 {3.31733274, 1.20984137}, //
+
65481 {3.31696415, 1.21084881}, //
+
65482 {3.31659436, 1.2117722}, //
+
65483 {3.31622338, 1.21261168}, //
+
65484 {3.31585121, 1.21336734}, //
+
65485 {3.31547785, 1.21403885}, //
+
65486 {3.31510305, 1.21462655}, //
+
65487 {3.31472707, 1.21513021}, //
+
65488 {3.31434989, 1.21554995}, //
+
65489 {3.31395125, 1.21590674}, //
+
65490 {3.31351042, 1.21622157}, //
+
65491 {3.31302786, 1.21649444}, //
+
65492 {3.3125031, 1.21672535}, //
+
65493 {3.31193638, 1.21691418}, //
+
65494 {3.3113277, 1.21706116}, //
+
65495 {3.31067705, 1.21716607}, //
+
65496 {3.30998468, 1.21722901}, //
+
65497 {3.30925012, 1.21724999}, //
+
65498 {3.30849433, 1.21796358}, //
+
65499 {3.30773878, 1.21859324}, //
+
65500 {3.30698323, 1.21913886}, //
+
65501 {3.30622768, 1.21960056}, //
+
65502 {3.30547214, 1.21997845}, //
+
65503 {3.30471659, 1.22027218}, //
+
65504 {3.30396104, 1.22048211}, //
+
65505 {3.30320549, 1.220608}, //
+
65506 {3.30244994, 1.22064996}, //
+
65507 {3.30092835, 1.22214997}, //
+
65508 {3.29936361, 1.22364998}, //
+
65509 {3.29775548, 1.22514999}, //
+
65510 {3.29610443, 1.22665}, //
+
65511 {3.29440999, 1.22815001}, //
+
65512 {3.29267216, 1.22965002}, //
+
65513 {3.29089141, 1.23115003}, //
+
65514 {3.28906727, 1.23265004}, //
+
65515 {3.28719997, 1.23415005}, //
+
65516 {3.28530073, 1.23574507}, //
+
65517 {3.2833581, 1.23750806}, //
+
65518 {3.28137231, 1.23943889}, //
+
65519 {3.27934313, 1.24153769}, //
+
65520 {3.27727103, 1.24380434}, //
+
65521 {3.27515554, 1.24623895}, //
+
65522 {3.2729969, 1.2488414}, //
+
65523 {3.27079511, 1.25161171}, //
+
65524 {3.26854992, 1.25454998}, //
+
65525 {3.26711226, 1.25521111}, //
+
65526 {3.26579928, 1.2557056}, //
+
65527 {3.26461101, 1.2560333}, //
+
65528 {3.26354742, 1.25619447}, //
+
65529 {3.26260853, 1.25618887}, //
+
65530 {3.26179433, 1.25601661}, //
+
65531 {3.26110482, 1.25567782}, //
+
65532 {3.26054001, 1.25517225}, //
+
65533 {3.26009989, 1.25450003}, //
+
65534 {3.25976419, 1.25371301}, //
+
65535 {3.25951242, 1.25284076}, //
+
65536 {3.25934434, 1.25188339}, //
+
65537 {3.25926042, 1.25084078}, //
+
65538 {3.25926042, 1.24971294}, //
+
65539 {3.25934434, 1.24849999}, //
+
65540 {3.25951242, 1.2472018}, //
+
65541 {3.25976419, 1.2458185}, //
+
65542 {3.26009989, 1.24434996}, //
+
65543 {3.26049805, 1.24280739}, //
+
65544 {3.26093698, 1.24117959}, //
+
65545 {3.26141667, 1.23946667}, //
+
65546 {3.26193714, 1.23766851}, //
+
65547 {3.26249814, 1.23578513}, //
+
65548 {3.26309991, 1.23381662}, //
+
65549 {3.26374269, 1.23176301}, //
+
65550 {3.26442599, 1.22962403}, //
+
65551 {3.26515007, 1.22739995}, //
+
65552 {3.26515007, 1.22664511}, //
+
65553 {3.26515007, 1.22589135}, //
+
65554 {3.26515007, 1.22064996}, //
+
65555 {3.26600981, 1.21907592}, //
+
65556 {3.2670784, 1.21737587}, //
+
65557 {3.26835561, 1.21554995}, //
+
65558 {3.26984143, 1.21359813}, //
+
65559 {3.27153587, 1.21152031}, //
+
65560 {3.27343893, 1.20931661}, //
+
65561 {3.2755506, 1.20698702}, //
+
65562 {3.27787089, 1.20453143}, //
+
65563 {3.28040004, 1.20194995}, //
+
65564 {3.2829814, 1.19942093}, //
+
65565 {3.28543711, 1.19710064}, //
+
65566 {3.2877667, 1.19498885}, //
+
65567 {3.2899704, 1.19308579}, //
+
65568 {3.29204822, 1.19139135}, //
+
65569 {3.29399991, 1.18990552}, //
+
65570 {3.29582596, 1.18862844}, //
+
65571 {3.29752588, 1.18755984}, //
+
65572 {3.29909992, 1.18669999}, //
+
65573 {3.29980302, 1.18597591}, //
+
65574 {3.30042338, 1.1852926}, //
+
65575 {3.30096102, 1.18464994}, //
+
65576 {3.30141616, 1.18404818}, //
+
65577 {3.30178833, 1.18348706}, //
+
65578 {3.30207777, 1.18296671}, //
+
65579 {3.30228448, 1.18248701}, //
+
65580 {3.3024087, 1.1820482}, //
+
65581 {3.30244994, 1.18165004}, //
+
65582 {3.30240798, 1.18129325}, //
+
65583 {3.30228209, 1.18097842}, //
+
65584 {3.30207229, 1.18070555}, //
+
65585 {3.30177832, 1.18047464}, //
+
65586 {3.30140066, 1.18028581}, //
+
65587 {3.30093884, 1.18013895}, //
+
65588 {3.3003931, 1.18003392}, //
+
65589 {3.29976368, 1.17997098}, //
+
65590 {3.29905009, 1.17995}, //
+
65591 {3.29832602, 1.17992902}, //
+
65592 {3.29764271, 1.17986608}, //
+
65593 {3.29699993, 1.17976105}, //
+
65594 {3.29639816, 1.17961419}, //
+
65595 {3.29583693, 1.17942536}, //
+
65596 {3.2953167, 1.17919445}, //
+
65597 {3.294837, 1.17892158}, //
+
65598 {3.29439807, 1.17860675}, //
+
65599 {3.29399991, 1.17824996}, //
+
65600 {3.29362226, 1.17789316}, //
+
65601 {3.29324436, 1.17757845}, //
+
65602 {3.29286671, 1.17730558}, //
+
65603 {3.29248881, 1.17707467}, //
+
65604 {3.29211116, 1.17688584}, //
+
65605 {3.29173326, 1.17673886}, //
+
65606 {3.29135561, 1.17663395}, //
+
65607 {3.29097772, 1.17657101}, //
+
65608 {3.29060006, 1.17655003}, //
+
65609 {3.29024315, 1.17655003}, //
+
65610 {3.28965545, 1.17655003}, //
+
65611 {3.28942466, 1.17655003}, //
+
65612 {3.28908896, 1.17655003}, //
+
65613 {3.28898406, 1.17655003}, //
+
65614 {3.28892088, 1.17655003}, //
+
65615 {3.2888999, 1.17655003}, //
+
65616 {3.28806043, 1.17657101}, //
+
65617 {3.28705311, 1.17663395}, //
+
65618 {3.2858777, 1.17673886}, //
+
65619 {3.28453445, 1.17688584}, //
+
65620 {3.28302336, 1.17707467}, //
+
65621 {3.28134441, 1.17730558}, //
+
65622 {3.27949762, 1.17757845}, //
+
65623 {3.27748275, 1.17789316}, //
+
65624 {3.27530003, 1.17824996}, //
+
65625 {3.27304435, 1.17860675}, //
+
65626 {3.27078891, 1.17892158}, //
+
65627 {3.26853323, 1.17919445}, //
+
65628 {3.26627779, 1.17942536}, //
+
65629 {3.26402211, 1.17961419}, //
+
65630 {3.26176667, 1.17976105}, //
+
65631 {3.25951099, 1.17986608}, //
+
65632 {3.25725555, 1.17992902}, //
+
65633 {3.25500011, 1.17995}, //
+
65634 {3.25278592, 1.17997098}, //
+
65635 {3.25065422, 1.18003392}, //
+
65636 {3.24860549, 1.18013895}, //
+
65637 {3.24663949, 1.18028581}, //
+
65638 {3.24475622, 1.18047464}, //
+
65639 {3.24295545, 1.18070555}, //
+
65640 {3.24123764, 1.18097842}, //
+
65641 {3.23960257, 1.18129325}, //
+
65642 {3.23804998, 1.18165004}, //
+
65643 {3.23662281, 1.18200684}, //
+
65644 {3.23427224, 1.18259442}, //
+
65645 {3.2325933, 1.18301415}, //
+
65646 {3.23158574, 1.18326604}, //
+
65647 {3.23133397, 1.18332899}, //
+
65648 {3.23125005, 1.18334997}, //
+
65649 {3.22899389, 1.18330801}, //
+
65650 {3.22673631, 1.18318212}, //
+
65651 {3.22447777, 1.18297219}, //
+
65652 {3.2222178, 1.18267834}, //
+
65653 {3.21995687, 1.18230057}, //
+
65654 {3.21769452, 1.18183887}, //
+
65655 {3.21543097, 1.18129325}, //
+
65656 {3.213166, 1.18066359}, //
+
65657 {3.21090007, 1.17995}, //
+
65658 {3.20866489, 1.17919445}, //
+
65659 {3.20647049, 1.1784389}, //
+
65660 {3.20431662, 1.17768335}, //
+
65661 {3.20220375, 1.1769278}, //
+
65662 {3.20013142, 1.17617226}, //
+
65663 {3.19810009, 1.17541671}, //
+
65664 {3.19610929, 1.17466116}, //
+
65665 {3.19415927, 1.17390561}, //
+
65666 {3.19225001, 1.17314994}, //
+
65667 {3.19047666, 1.17243648}, //
+
65668 {3.18891168, 1.17180681}, //
+
65669 {3.18755555, 1.17126107}, //
+
65670 {3.18640804, 1.17079937}, //
+
65671 {3.18546915, 1.1704216}, //
+
65672 {3.18473887, 1.17012775}, //
+
65673 {3.18421721, 1.16991794}, //
+
65674 {3.18390441, 1.16979194}, //
+
65675 {3.18379998, 1.16974998}, //
+
65676 {3.183779, 1.16974998}, //
+
65677 {3.18371606, 1.16974998}, //
+
65678 {3.18361115, 1.16974998}, //
+
65679 {3.18210006, 1.16974998}, //
+
65680 {3.18172216, 1.16972899}, //
+
65681 {3.18134451, 1.16966605}, //
+
65682 {3.18096662, 1.16956115}, //
+
65683 {3.18058896, 1.16941416}, //
+
65684 {3.18021107, 1.16922534}, //
+
65685 {3.17983341, 1.16899443}, //
+
65686 {3.17945552, 1.16872156}, //
+
65687 {3.17907786, 1.16840684}, //
+
65688 {3.17869997, 1.16805005}, //
+
65689 {3.1783433, 1.16770375}, //
+
65690 {3.17802835, 1.1673981}, //
+
65691 {3.17700005, 1.16639996}, //
+
65692 {3.18720007, 1.19690001}, //
+
65693 });
+
65694 polys.push_back({
+
65695 {1.09854996, -0.0839944407}, //
+
65696 {1.09854996, -0.0842253119}, //
+
65697 {1.09854996, -0.084414199}, //
+
65698 {1.09854996, -0.084666051}, //
+
65699 {1.09854996, -0.0847290158}, //
+
65700 {1.09854996, -0.0847499967}, //
+
65701 {1.09854996, -0.0837216079}, //
+
65702 });
+
65703 polys.push_back({
+
65704 {0.468655556, 0.874800026}, //
+
65705 {0.468202323, 0.874800026}, //
+
65706 {0.468928397, 0.874800026}, //
+
65707 });
+
65708 TestPoly(polys, 65467);
+
65709}
+
+
+ + + + diff --git a/docs/html/zebra_8cpp_source.html b/docs/html/zebra_8cpp_source.html new file mode 100644 index 000000000..9e706fd10 --- /dev/null +++ b/docs/html/zebra_8cpp_source.html @@ -0,0 +1,63333 @@ + + + + + + + +Manifold: zebra.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Manifold 1.0 +
+
Robust computational geometry
+
+ +   + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
zebra.cpp
+
+
+
1// Copyright 2024 The Manifold Authors.
+
2//
+
3// Licensed under the Apache License, Version 2.0 (the "License");
+
4// you may not use this file except in compliance with the License.
+
5// You may obtain a copy of the License at
+
6//
+
7// http://www.apache.org/licenses/LICENSE-2.0
+
8//
+
9// Unless required by applicable law or agreed to in writing, software
+
10// distributed under the License is distributed on an "AS IS" BASIS,
+
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
12// See the License for the specific language governing permissions and
+
13// limitations under the License.
+
14
+
15TEST(Polygon, Zebra) {
+
16 Polygons polys;
+
17 polys.push_back({
+
18 {0.784366012, 10.550477}, //
+
19 {0.796800017, 10.5507498}, //
+
20 {0.809569001, 10.5511703}, //
+
21 {0.822254002, 10.5516729}, //
+
22 {0.834855974, 10.5522614}, //
+
23 {0.847373009, 10.5529327}, //
+
24 {0.859806001, 10.553688}, //
+
25 {0.872156024, 10.5545282}, //
+
26 {0.884420991, 10.5554514}, //
+
27 {0.896601975, 10.5564594}, //
+
28 {0.908699989, 10.5575504}, //
+
29 {0.920252979, 10.5586519}, //
+
30 {0.930800974, 10.5597134}, //
+
31 {0.940343976, 10.5607328}, //
+
32 {0.948882997, 10.5617132}, //
+
33 {0.956416011, 10.5626516}, //
+
34 {0.962943971, 10.56355}, //
+
35 {0.96846801, 10.5644073}, //
+
36 {0.972985983, 10.5652237}, //
+
37 {0.976499975, 10.566}, //
+
38 {0.980183005, 10.5669231}, //
+
39 {0.98369801, 10.5681801}, //
+
40 {0.987043977, 10.5697718}, //
+
41 {0.990222991, 10.5716991}, //
+
42 {0.993234992, 10.5739603}, //
+
43 {0.996078014, 10.5765562}, //
+
44 {0.998753011, 10.5794859}, //
+
45 {1.00126004, 10.5827513}, //
+
46 {1.0036, 10.5863504}, //
+
47 {1.00580001, 10.5901594}, //
+
48 {1.00787997, 10.5940514}, //
+
49 {1.00983, 10.5980282}, //
+
50 {1.01164997, 10.602088}, //
+
51 {1.01334, 10.6062326}, //
+
52 {1.01490998, 10.6104612}, //
+
53 {1.01635003, 10.6147728}, //
+
54 {1.01766002, 10.6191702}, //
+
55 {1.01884997, 10.6236496}, //
+
56 {1.01988006, 10.628046}, //
+
57 {1.02069998, 10.6321907}, //
+
58 {1.02130997, 10.6360826}, //
+
59 {1.02171004, 10.6397238}, //
+
60 {1.02190995, 10.6431131}, //
+
61 {1.02189004, 10.6462498}, //
+
62 {1.02166998, 10.6491346}, //
+
63 {1.02124, 10.6517687}, //
+
64 {1.02059996, 10.65415}, //
+
65 {1.01971996, 10.6573706}, //
+
66 {1.01858997, 10.6610117}, //
+
67 {1.01719999, 10.6650724}, //
+
68 {1.01556003, 10.6695518}, //
+
69 {1.01366997, 10.6744518}, //
+
70 {1.01153004, 10.6797724}, //
+
71 {1.00914001, 10.6855116}, //
+
72 {1.00650001, 10.6916714}, //
+
73 {1.0036, 10.6982498}, //
+
74 {1.00057006, 10.7049856}, //
+
75 {0.997493982, 10.7116404}, //
+
76 {0.994377971, 10.7182112}, //
+
77 {0.991219997, 10.724699}, //
+
78 {0.988020003, 10.7311049}, //
+
79 {0.984777987, 10.7374277}, //
+
80 {0.981494009, 10.7436676}, //
+
81 {0.978168011, 10.7498245}, //
+
82 {0.974799991, 10.7559004}, //
+
83 {0.971473992, 10.7616301}, //
+
84 {0.968273997, 10.7667742}, //
+
85 {0.965200007, 10.7713327}, //
+
86 {0.962252021, 10.7753067}, //
+
87 {0.959429979, 10.7786961}, //
+
88 {0.956732988, 10.7814999}, //
+
89 {0.954163015, 10.7837191}, //
+
90 {0.951718986, 10.7853518}, //
+
91 {0.949400008, 10.7863998}, //
+
92 {0.948623002, 10.7880058}, //
+
93 {0.947804987, 10.7898216}, //
+
94 {0.946943998, 10.7918501}, //
+
95 {0.946042001, 10.7940893}, //
+
96 {0.945097983, 10.7965393}, //
+
97 {0.94411099, 10.7992001}, //
+
98 {0.943082988, 10.8020716}, //
+
99 {0.942012012, 10.8051558}, //
+
100 {0.940900028, 10.8084497}, //
+
101 {0.939787984, 10.8118811}, //
+
102 {0.938717008, 10.8153963}, //
+
103 {0.937689006, 10.8189936}, //
+
104 {0.936702013, 10.8226767}, //
+
105 {0.935757995, 10.8264437}, //
+
106 {0.934855998, 10.8302937}, //
+
107 {0.933995008, 10.8342295}, //
+
108 {0.933176994, 10.8382483}, //
+
109 {0.932399988, 10.84235}, //
+
110 {0.93165499, 10.8464308}, //
+
111 {0.930908978, 10.8503866}, //
+
112 {0.930160999, 10.8542166}, //
+
113 {0.929412007, 10.8579197}, //
+
114 {0.928662002, 10.8614979}, //
+
115 {0.928220987, 10.8635254}, //
+
116 {0.928924024, 10.8642254}, //
+
117 {0.929050028, 10.8643503}, //
+
118 {0.929050028, 10.8779497}, //
+
119 {0.925646007, 10.8753977}, //
+
120 {0.925650001, 10.8745499}, //
+
121 {0.926405013, 10.8714762}, //
+
122 {0.927159011, 10.8682756}, //
+
123 {0.927910984, 10.8649502}, //
+
124 {0.928220987, 10.8635254}, //
+
125 {0.924516976, 10.8598394}, //
+
126 {0.922879994, 10.8582096}, //
+
127 {0.920991004, 10.8563299}, //
+
128 {0.918850005, 10.8542004}, //
+
129 {0.916552007, 10.851944}, //
+
130 {0.91417098, 10.8496857}, //
+
131 {0.911705971, 10.8474283}, //
+
132 {0.909156024, 10.8451681}, //
+
133 {0.906522989, 10.842907}, //
+
134 {0.903805971, 10.8406439}, //
+
135 {0.901004016, 10.8383808}, //
+
136 {0.898118973, 10.8361158}, //
+
137 {0.895150006, 10.8338499}, //
+
138 {0.891771972, 10.8315306}, //
+
139 {0.887682974, 10.8290873}, //
+
140 {0.882883012, 10.8265171}, //
+
141 {0.877372026, 10.8238201}, //
+
142 {0.871150017, 10.8209982}, //
+
143 {0.864216983, 10.8180504}, //
+
144 {0.856571972, 10.8149757}, //
+
145 {0.84821701, 10.8117762}, //
+
146 {0.839150012, 10.8084497}, //
+
147 {0.82971698, 10.8050508}, //
+
148 {0.820240974, 10.801652}, //
+
149 {0.810721993, 10.7982559}, //
+
150 {0.801159978, 10.7948599}, //
+
151 {0.791553974, 10.7914648}, //
+
152 {0.781906009, 10.7880716}, //
+
153 {0.772213995, 10.7846804}, //
+
154 {0.762477994, 10.7812901}, //
+
155 {0.752699971, 10.7778997}, //
+
156 {0.743203998, 10.7746572}, //
+
157 {0.734292984, 10.7717066}, //
+
158 {0.72596699, 10.7690496}, //
+
159 {0.718226016, 10.7666845}, //
+
160 {0.711070001, 10.7646132}, //
+
161 {0.70450002, 10.7628326}, //
+
162 {0.698514998, 10.7613459}, //
+
163 {0.693114996, 10.7601519}, //
+
164 {0.688300014, 10.7592497}, //
+
165 {0.686085999, 10.7591877}, //
+
166 {0.683954, 10.7590008}, //
+
167 {0.681905985, 10.7586889}, //
+
168 {0.679939985, 10.7582521}, //
+
169 {0.678056002, 10.7576914}, //
+
170 {0.676256001, 10.7570057}, //
+
171 {0.674538016, 10.7561951}, //
+
172 {0.672901988, 10.7552605}, //
+
173 {0.671350002, 10.7542}, //
+
174 {0.669880986, 10.753046}, //
+
175 {0.668496013, 10.751852}, //
+
176 {0.667194009, 10.750617}, //
+
177 {0.665977001, 10.749341}, //
+
178 {0.664843976, 10.748024}, //
+
179 {0.663793981, 10.7466669}, //
+
180 {0.662828982, 10.7452688}, //
+
181 {0.661948025, 10.7438297}, //
+
182 {0.661149979, 10.7423496}, //
+
183 {0.660426021, 10.74086}, //
+
184 {0.659743011, 10.7394123}, //
+
185 {0.659099996, 10.7380056}, //
+
186 {0.658497989, 10.7366409}, //
+
187 {0.65793699, 10.7353191}, //
+
188 {0.657416999, 10.7340393}, //
+
189 {0.656937003, 10.7328014}, //
+
190 {0.656498015, 10.7316036}, //
+
191 {0.656099975, 10.7304497}, //
+
192 {0.655156016, 10.7276173}, //
+
193 {0.654924989, 10.7269239}, //
+
194 {0.654735982, 10.7263575}, //
+
195 {0.654483974, 10.7256021}, //
+
196 {0.654420972, 10.7254133}, //
+
197 {0.654399991, 10.7253504}, //
+
198 {0.651000023, 10.72365}, //
+
199 {0.650243998, 10.7232933}, //
+
200 {0.649488986, 10.7229776}, //
+
201 {0.64873302, 10.7227058}, //
+
202 {0.647978008, 10.7224751}, //
+
203 {0.647221982, 10.7222862}, //
+
204 {0.64646697, 10.7221394}, //
+
205 {0.645711005, 10.7220345}, //
+
206 {0.644955993, 10.7219706}, //
+
207 {0.644200027, 10.7219496}, //
+
208 {0.630649984, 10.7219496}, //
+
209 {0.631531, 10.7249508}, //
+
210 {0.632661998, 10.7279081}, //
+
211 {0.634043992, 10.7308216}, //
+
212 {0.63567698, 10.7336931}, //
+
213 {0.63756001, 10.7365208}, //
+
214 {0.639693975, 10.7393064}, //
+
215 {0.642078996, 10.7420473}, //
+
216 {0.644713998, 10.7447453}, //
+
217 {0.647599995, 10.7474003}, //
+
218 {0.650716007, 10.7500134}, //
+
219 {0.654042006, 10.7525854}, //
+
220 {0.657577991, 10.7551174}, //
+
221 {0.661323011, 10.7576075}, //
+
222 {0.665278971, 10.7600574}, //
+
223 {0.669444025, 10.7624674}, //
+
224 {0.673820019, 10.7648354}, //
+
225 {0.678404987, 10.7671633}, //
+
226 {0.683200002, 10.7694502}, //
+
227 {0.687995017, 10.7716217}, //
+
228 {0.692579985, 10.7736282}, //
+
229 {0.696955979, 10.7754669}, //
+
230 {0.701120973, 10.7771387}, //
+
231 {0.705076993, 10.7786436}, //
+
232 {0.708822012, 10.7799826}, //
+
233 {0.712357998, 10.7811556}, //
+
234 {0.715683997, 10.7821608}, //
+
235 {0.718800008, 10.783}, //
+
236 {0.721653998, 10.7837143}, //
+
237 {0.724173009, 10.7843428}, //
+
238 {0.728201985, 10.7853508}, //
+
239 {0.730889022, 10.7860222}, //
+
240 {0.7324, 10.7863998}, //
+
241 {0.742944002, 10.7887812}, //
+
242 {0.753489017, 10.7914152}, //
+
243 {0.76403302, 10.7943001}, //
+
244 {0.774577975, 10.7974367}, //
+
245 {0.785121977, 10.8008261}, //
+
246 {0.79302597, 10.8035545}, //
+
247 {0.794533014, 10.8039169}, //
+
248 {0.79598099, 10.8042936}, //
+
249 {0.797303975, 10.8046722}, //
+
250 {0.798500001, 10.8050499}, //
+
251 {0.799570024, 10.8054066}, //
+
252 {0.800514996, 10.8057222}, //
+
253 {0.803600013, 10.8067503}, //
+
254 {0.801851988, 10.8067503}, //
+
255 {0.806210995, 10.8083591}, //
+
256 {0.81675601, 10.8125038}, //
+
257 {0.827300012, 10.8169003}, //
+
258 {0.837603986, 10.8214216}, //
+
259 {0.847404003, 10.8259439}, //
+
260 {0.856700003, 10.8304672}, //
+
261 {0.865493, 10.8349886}, //
+
262 {0.873781025, 10.8395109}, //
+
263 {0.881567001, 10.8440332}, //
+
264 {0.888848007, 10.8485556}, //
+
265 {0.895626009, 10.8530779}, //
+
266 {0.901899993, 10.8576002}, //
+
267 {0.920669973, 10.8716688}, //
+
268 {0.923686981, 10.87393}, //
+
269 {0.925646007, 10.8753977}, //
+
270 {0.92562902, 10.8786726}, //
+
271 {0.925566018, 10.8835077}, //
+
272 {0.925460994, 10.8890562}, //
+
273 {0.925314009, 10.8953152}, //
+
274 {0.925125003, 10.9022875}, //
+
275 {0.924893975, 10.9099722}, //
+
276 {0.924621999, 10.9183693}, //
+
277 {0.924306989, 10.9274788}, //
+
278 {0.923950016, 10.9372997}, //
+
279 {0.923592985, 10.9475298}, //
+
280 {0.923277974, 10.9578848}, //
+
281 {0.923005998, 10.9683666}, //
+
282 {0.922774971, 10.9789743}, //
+
283 {0.922586024, 10.989707}, //
+
284 {0.922438979, 11.0005665}, //
+
285 {0.922334015, 11.0115519}, //
+
286 {0.922271013, 11.0226631}, //
+
287 {0.922249973, 11.0339003}, //
+
288 {0.922208011, 11.0409918}, //
+
289 {0.922082007, 11.0487127}, //
+
290 {0.92187202, 11.0570612}, //
+
291 {0.92157799, 11.0660381}, //
+
292 {0.921200991, 11.0756435}, //
+
293 {0.920738995, 11.0858774}, //
+
294 {0.920193017, 11.0967398}, //
+
295 {0.919564009, 11.1082306}, //
+
296 {0.918850005, 11.1203499}, //
+
297 {0.918093979, 11.132678}, //
+
298 {0.917339027, 11.1447973}, //
+
299 {0.916583002, 11.1567059}, //
+
300 {0.91582799, 11.1684036}, //
+
301 {0.915072024, 11.1798925}, //
+
302 {0.914317012, 11.1911716}, //
+
303 {0.913560987, 11.2022409}, //
+
304 {0.912805974, 11.2131014}, //
+
305 {0.912050009, 11.2237501}, //
+
306 {0.911346972, 11.2339277}, //
+
307 {0.910727024, 11.2433519}, //
+
308 {0.910188973, 11.2520218}, //
+
309 {0.909734011, 11.2599382}, //
+
310 {0.909362018, 11.2670994}, //
+
311 {0.909071982, 11.2735062}, //
+
312 {0.908864975, 11.2791576}, //
+
313 {0.908740997, 11.2840557}, //
+
314 {0.908699989, 11.2882004}, //
+
315 {0.907944024, 11.2915878}, //
+
316 {0.907189012, 11.2957277}, //
+
317 {0.906432986, 11.300622}, //
+
318 {0.905677974, 11.3062687}, //
+
319 {0.904922009, 11.3126688}, //
+
320 {0.904166996, 11.3198223}, //
+
321 {0.903410971, 11.3277283}, //
+
322 {0.902656019, 11.3363876}, //
+
323 {0.901899993, 11.3458004}, //
+
324 {0.901165009, 11.3557253}, //
+
325 {0.900472999, 11.365901}, //
+
326 {0.899821997, 11.3763285}, //
+
327 {0.899214029, 11.3870049}, //
+
328 {0.89864701, 11.397933}, //
+
329 {0.898122013, 11.409111}, //
+
330 {0.89763999, 11.4205399}, //
+
331 {0.897198975, 11.4322205}, //
+
332 {0.896799982, 11.44415}, //
+
333 {0.896537006, 11.4559546}, //
+
334 {0.896480978, 11.4672594}, //
+
335 {0.896633029, 11.4780607}, //
+
336 {0.896992981, 11.4883623}, //
+
337 {0.897558987, 11.4981623}, //
+
338 {0.898333013, 11.5074606}, //
+
339 {0.899315, 11.5162592}, //
+
340 {0.900503993, 11.5245552}, //
+
341 {0.901899993, 11.5323496}, //
+
342 {0.90347302, 11.5440702}, //
+
343 {0.90517199, 11.5551205}, //
+
344 {0.906993985, 11.5655003}, //
+
345 {0.908941984, 11.5752087}, //
+
346 {0.91101402, 11.5842476}, //
+
347 {0.913210988, 11.592617}, //
+
348 {0.915533006, 11.6003151}, //
+
349 {0.917979002, 11.6073427}, //
+
350 {0.920549989, 11.6136999}, //
+
351 {0.923036993, 11.6193981}, //
+
352 {0.927133024, 11.6287832}, //
+
353 {0.930059016, 11.6354866}, //
+
354 {0.931083024, 11.6378326}, //
+
355 {0.931815028, 11.6395092}, //
+
356 {0.932254016, 11.6405153}, //
+
357 {0.932399988, 11.6408501}, //
+
358 {0.940596998, 11.6223688}, //
+
359 {0.943105996, 11.6167116}, //
+
360 {0.945949972, 11.6103001}, //
+
361 {0.947318971, 11.6070957}, //
+
362 {0.94599998, 11.6069002}, //
+
363 {0.959550023, 11.573}, //
+
364 {0.959814012, 11.5729237}, //
+
365 {0.96104598, 11.5690813}, //
+
366 {0.964061022, 11.5590782}, //
+
367 {0.96707499, 11.5484877}, //
+
368 {0.970088005, 11.5373116}, //
+
369 {0.973100007, 11.5255499}, //
+
370 {0.975986004, 11.5157928}, //
+
371 {0.978621006, 11.5061197}, //
+
372 {0.981006026, 11.4965334}, //
+
373 {0.983139992, 11.487031}, //
+
374 {0.985023022, 11.4776154}, //
+
375 {0.98665601, 11.4682827}, //
+
376 {0.988038003, 11.4590368}, //
+
377 {0.988197029, 11.4577503}, //
+
378 {1.02059996, 11.4577503}, //
+
379 {1.02067995, 11.4577913}, //
+
380 {1.02093005, 11.4579153}, //
+
381 {1.02135003, 11.4581223}, //
+
382 {1.02192998, 11.4584122}, //
+
383 {1.02268004, 11.4587841}, //
+
384 {1.02359998, 11.459239}, //
+
385 {1.02468002, 11.4597769}, //
+
386 {1.02593005, 11.4603968}, //
+
387 {1.02734995, 11.4610996}, //
+
388 {1.02890003, 11.4618349}, //
+
389 {1.03053999, 11.4625273}, //
+
390 {1.03225994, 11.4631777}, //
+
391 {1.03406, 11.4637861}, //
+
392 {1.03594005, 11.4643526}, //
+
393 {1.03790998, 11.4648781}, //
+
394 {1.03995001, 11.4653597}, //
+
395 {1.04209006, 11.4658012}, //
+
396 {1.04429996, 11.4661999}, //
+
397 {1.04651999, 11.4665775}, //
+
398 {1.04866004, 11.4669561}, //
+
399 {1.05071998, 11.4673328}, //
+
400 {1.05269003, 11.4677114}, //
+
401 {1.05456996, 11.4680891}, //
+
402 {1.05637002, 11.4684668}, //
+
403 {1.05807996, 11.4688444}, //
+
404 {1.05971003, 11.4692221}, //
+
405 {1.06124997, 11.4695997}, //
+
406 {1.06502998, 11.4705439}, //
+
407 {1.06595004, 11.4707747}, //
+
408 {1.06671, 11.4709644}, //
+
409 {1.06805003, 11.4713001}, //
+
410 {1.07145, 11.44415}, //
+
411 {1.07086003, 11.4439821}, //
+
412 {1.07012999, 11.4437723}, //
+
413 {1.06910002, 11.4434776}, //
+
414 {1.06778002, 11.4431009}, //
+
415 {1.06615996, 11.4426394}, //
+
416 {1.06424999, 11.4420929}, //
+
417 {1.06204998, 11.4414644}, //
+
418 {1.05955005, 11.4407501}, //
+
419 {1.05681002, 11.4400473}, //
+
420 {1.05385995, 11.4394274}, //
+
421 {1.05070996, 11.4388885}, //
+
422 {1.04734004, 11.4384336}, //
+
423 {1.04375994, 11.4380617}, //
+
424 {1.03997004, 11.4377718}, //
+
425 {1.03596997, 11.4375648}, //
+
426 {1.03176999, 11.4374409}, //
+
427 {1.02734995, 11.4373999}, //
+
428 {1.02709997, 11.4374838}, //
+
429 {1.02331996, 11.4387426}, //
+
430 {1.02225006, 11.4391003}, //
+
431 {1.02111006, 11.439477}, //
+
432 {1.01991999, 11.4398527}, //
+
433 {1.01868999, 11.4402285}, //
+
434 {1.01742005, 11.4406013}, //
+
435 {1.01610005, 11.4409733}, //
+
436 {1.01473999, 11.4413443}, //
+
437 {1.01334, 11.4417143}, //
+
438 {1.01189005, 11.4420834}, //
+
439 {1.01040006, 11.4424496}, //
+
440 {1.00891995, 11.4428492}, //
+
441 {1.00748003, 11.4432898}, //
+
442 {1.00608003, 11.4437723}, //
+
443 {1.00472999, 11.4442968}, //
+
444 {1.00340998, 11.4448643}, //
+
445 {1.00213003, 11.4454718}, //
+
446 {1.00090003, 11.4461231}, //
+
447 {0.999704003, 11.4468145}, //
+
448 {0.998549998, 11.4475498}, //
+
449 {0.99515003, 11.4498167}, //
+
450 {0.992883027, 11.4513283}, //
+
451 {0.991750002, 11.4520826}, //
+
452 {0.990616977, 11.4528389}, //
+
453 {0.989482999, 11.4535942}, //
+
454 {0.98864001, 11.4541559}, //
+
455 {0.988197029, 11.4577503}, //
+
456 {0.983299971, 11.4577503}, //
+
457 {0.983548999, 11.4575825}, //
+
458 {0.983861029, 11.4573717}, //
+
459 {0.984297991, 11.457078}, //
+
460 {0.987290025, 11.4550638}, //
+
461 {0.988349974, 11.4543505}, //
+
462 {0.98864001, 11.4541559}, //
+
463 {0.989169002, 11.4498758}, //
+
464 {0.990050018, 11.4407997}, //
+
465 {0.991728008, 11.4313374}, //
+
466 {0.993740976, 11.4210367}, //
+
467 {0.996088982, 11.4098997}, //
+
468 {0.998771012, 11.3979263}, //
+
469 {1.00179005, 11.3851147}, //
+
470 {1.00513995, 11.3714666}, //
+
471 {1.00882006, 11.3569813}, //
+
472 {1.01285005, 11.3416586}, //
+
473 {1.01719999, 11.3254995}, //
+
474 {1.02384996, 11.2992592}, //
+
475 {1.03024995, 11.2732677}, //
+
476 {1.03640997, 11.2475281}, //
+
477 {1.04231, 11.2220383}, //
+
478 {1.04796004, 11.1967993}, //
+
479 {1.05335999, 11.1718111}, //
+
480 {1.05850005, 11.1470728}, //
+
481 {1.06340003, 11.1225863}, //
+
482 {1.06805003, 11.0983496}, //
+
483 {1.06956005, 11.09027}, //
+
484 {1.07106996, 11.0826092}, //
+
485 {1.07257998, 11.075367}, //
+
486 {1.07407999, 11.0685425}, //
+
487 {1.07559001, 11.0621367}, //
+
488 {1.07709002, 11.0561504}, //
+
489 {1.07860005, 11.0505819}, //
+
490 {1.08010006, 11.0454311}, //
+
491 {1.08159995, 11.0407}, //
+
492 {1.08236003, 11.0337448}, //
+
493 {1.08310997, 11.0264559}, //
+
494 {1.08387005, 11.0188332}, //
+
495 {1.08462, 11.0108776}, //
+
496 {1.08537996, 11.0025892}, //
+
497 {1.08613002, 10.9939671}, //
+
498 {1.08688998, 10.9850111}, //
+
499 {1.08764005, 10.9757223}, //
+
500 {1.08840001, 10.9660997}, //
+
501 {1.08913004, 10.9563637}, //
+
502 {1.08982003, 10.9467545}, //
+
503 {1.09046996, 10.9372721}, //
+
504 {1.09107995, 10.9279175}, //
+
505 {1.09164, 10.9186897}, //
+
506 {1.09215999, 10.9095888}, //
+
507 {1.09263003, 10.9006157}, //
+
508 {1.09306002, 10.8917694}, //
+
509 {1.09344995, 10.88305}, //
+
510 {1.09380996, 10.8747387}, //
+
511 {1.09412003, 10.8671389}, //
+
512 {1.09439003, 10.8602505}, //
+
513 {1.09463, 10.8540716}, //
+
514 {1.09481001, 10.8486061}, //
+
515 {1.09495997, 10.8438501}, //
+
516 {1.09507, 10.8398056}, //
+
517 {1.09512997, 10.8364716}, //
+
518 {1.09514999, 10.8338499}, //
+
519 {1.09539998, 10.829937}, //
+
520 {1.09615004, 10.8257313}, //
+
521 {1.09740996, 10.8212328}, //
+
522 {1.09916997, 10.8164434}, //
+
523 {1.10143006, 10.8113594}, //
+
524 {1.10418999, 10.8059826}, //
+
525 {1.10746002, 10.8003149}, //
+
526 {1.11123002, 10.7943544}, //
+
527 {1.11549997, 10.7881002}, //
+
528 {1.12002003, 10.7817516}, //
+
529 {1.12453997, 10.7755318}, //
+
530 {1.12907004, 10.7694387}, //
+
531 {1.13358998, 10.7634726}, //
+
532 {1.13811004, 10.7576342}, //
+
533 {1.14262998, 10.7519217}, //
+
534 {1.14716005, 10.7463379}, //
+
535 {1.15167999, 10.74088}, //
+
536 {1.15620005, 10.7355499}, //
+
537 {1.15761006, 10.7325487}, //
+
538 {1.15880001, 10.7295923}, //
+
539 {1.15979004, 10.7266779}, //
+
540 {1.16057003, 10.7238073}, //
+
541 {1.16112995, 10.7209787}, //
+
542 {1.16148996, 10.718194}, //
+
543 {1.16164005, 10.7154531}, //
+
544 {1.16156995, 10.7127552}, //
+
545 {1.16129994, 10.7101002}, //
+
546 {1.16085994, 10.7075291}, //
+
547 {1.16029, 10.7050829}, //
+
548 {1.15960002, 10.7027607}, //
+
549 {1.15877998, 10.7005644}, //
+
550 {1.15784001, 10.6984921}, //
+
551 {1.15676999, 10.6965437}, //
+
552 {1.15557003, 10.6947222}, //
+
553 {1.15425003, 10.6930227}, //
+
554 {1.15279996, 10.6914501}, //
+
555 {1.15207005, 10.6899195}, //
+
556 {1.15137005, 10.6883459}, //
+
557 {1.15072, 10.6867332}, //
+
558 {1.15011001, 10.6850796}, //
+
559 {1.14954996, 10.6833849}, //
+
560 {1.14901996, 10.6816502}, //
+
561 {1.14854002, 10.6798744}, //
+
562 {1.14810002, 10.6780567}, //
+
563 {1.14769995, 10.6761999}, //
+
564 {1.14740002, 10.6743746}, //
+
565 {1.14721, 10.672677}, //
+
566 {1.14716005, 10.6711063}, //
+
567 {1.14722002, 10.6696625}, //
+
568 {1.14741004, 10.6683455}, //
+
569 {1.14771998, 10.6671562}, //
+
570 {1.14815998, 10.6660929}, //
+
571 {1.14872003, 10.6651583}, //
+
572 {1.1494, 10.6643496}, //
+
573 {1.15052998, 10.6628809}, //
+
574 {1.15242004, 10.6614962}, //
+
575 {1.15506005, 10.6601944}, //
+
576 {1.15845001, 10.6589766}, //
+
577 {1.16259003, 10.6578436}, //
+
578 {1.16749001, 10.6567936}, //
+
579 {1.17314005, 10.6558294}, //
+
580 {1.17954004, 10.6549482}, //
+
581 {1.18669999, 10.65415}, //
+
582 {1.19437003, 10.6534147}, //
+
583 {1.20229006, 10.6527233}, //
+
584 {1.21045995, 10.652072}, //
+
585 {1.21887004, 10.6514645}, //
+
586 {1.22754002, 10.650897}, //
+
587 {1.23645997, 10.6503716}, //
+
588 {1.24562001, 10.6498899}, //
+
589 {1.25504005, 10.6494493}, //
+
590 {1.26470006, 10.6490498}, //
+
591 {1.27450001, 10.6486521}, //
+
592 {1.28429997, 10.6482134}, //
+
593 {1.29409003, 10.6477327}, //
+
594 {1.30388999, 10.647213}, //
+
595 {1.31368005, 10.6466522}, //
+
596 {1.32348001, 10.6460505}, //
+
597 {1.33326995, 10.6454067}, //
+
598 {1.34306002, 10.6447239}, //
+
599 {1.35284996, 10.6440001}, //
+
600 {1.37671006, 10.6448708}, //
+
601 {1.39856005, 10.6459951}, //
+
602 {1.41840994, 10.6473722}, //
+
603 {1.43623996, 10.6490021}, //
+
604 {1.45205998, 10.6508856}, //
+
605 {1.46587002, 10.6530218}, //
+
606 {1.47766995, 10.6554117}, //
+
607 {1.48747003, 10.6580544}, //
+
608 {1.49524999, 10.6609497}, //
+
609 {1.49659002, 10.6622934}, //
+
610 {1.49714005, 10.6628389}, //
+
611 {1.49864995, 10.6643496}, //
+
612 {1.50010002, 10.6651793}, //
+
613 {1.50142002, 10.6661768}, //
+
614 {1.50261998, 10.6673441}, //
+
615 {1.50369, 10.6686811}, //
+
616 {1.50462997, 10.670186}, //
+
617 {1.50545001, 10.6718607}, //
+
618 {1.50613999, 10.6737051}, //
+
619 {1.50671005, 10.6757183}, //
+
620 {1.50715005, 10.6779003}, //
+
621 {1.50750995, 10.6801558}, //
+
622 {1.50782001, 10.6824141}, //
+
623 {1.50809002, 10.6846724}, //
+
624 {1.50832999, 10.6869316}, //
+
625 {1.50850999, 10.6891928}, //
+
626 {1.50865996, 10.6914558}, //
+
627 {1.50876999, 10.6937189}, //
+
628 {1.50882995, 10.6959839}, //
+
629 {1.50884998, 10.6982498}, //
+
630 {1.50881004, 10.7004642}, //
+
631 {1.50867999, 10.7025957}, //
+
632 {1.50847006, 10.7046442}, //
+
633 {1.50818002, 10.7066097}, //
+
634 {1.50779998, 10.7084942}, //
+
635 {1.50733995, 10.7102938}, //
+
636 {1.50679004, 10.7120123}, //
+
637 {1.50616002, 10.7136478}, //
+
638 {1.50545001, 10.7152004}, //
+
639 {1.50454998, 10.7161646}, //
+
640 {1.50335002, 10.7175484}, //
+
641 {1.50187004, 10.7193499}, //
+
642 {1.50009, 10.72157}, //
+
643 {1.49801004, 10.7242088}, //
+
644 {1.49565005, 10.7272673}, //
+
645 {1.49299002, 10.7307434}, //
+
646 {1.49003994, 10.7346373}, //
+
647 {1.48679996, 10.7389498}, //
+
648 {1.48336995, 10.7435455}, //
+
649 {1.47985005, 10.7483101}, //
+
650 {1.47625995, 10.7532444}, //
+
651 {1.47256994, 10.7583485}, //
+
652 {1.46880996, 10.7636204}, //
+
653 {1.46495998, 10.7690611}, //
+
654 {1.46101999, 10.7746716}, //
+
655 {1.45700002, 10.7804508}, //
+
656 {1.45290005, 10.7863998}, //
+
657 {1.44877994, 10.7924023}, //
+
658 {1.4447, 10.7983627}, //
+
659 {1.44066, 10.8042831}, //
+
660 {1.43666005, 10.8101625}, //
+
661 {1.43270004, 10.8160019}, //
+
662 {1.42878997, 10.8218002}, //
+
663 {1.42491996, 10.8275566}, //
+
664 {1.42109001, 10.8332739}, //
+
665 {1.41729999, 10.8389502}, //
+
666 {1.41366005, 10.8444071}, //
+
667 {1.41026998, 10.8494883}, //
+
668 {1.40713, 10.8541937}, //
+
669 {1.40424001, 10.8585253}, //
+
670 {1.4016, 10.8624811}, //
+
671 {1.39920998, 10.8660612}, //
+
672 {1.39707005, 10.8692656}, //
+
673 {1.39519, 10.8720961}, //
+
674 {1.39355004, 10.8745499}, //
+
675 {1.38990998, 10.8784838}, //
+
676 {1.38652003, 10.8827524}, //
+
677 {1.38338006, 10.8873558}, //
+
678 {1.38048995, 10.892293}, //
+
679 {1.37785006, 10.8975649}, //
+
680 {1.37546003, 10.9031725}, //
+
681 {1.37331998, 10.9091139}, //
+
682 {1.37144005, 10.9153891}, //
+
683 {1.36979997, 10.9219999}, //
+
684 {1.36749995, 10.9287882}, //
+
685 {1.36512005, 10.9355755}, //
+
686 {1.36266005, 10.9423609}, //
+
687 {1.36011004, 10.9491453}, //
+
688 {1.35747004, 10.9559288}, //
+
689 {1.35476005, 10.9627113}, //
+
690 {1.35195005, 10.969492}, //
+
691 {1.34906995, 10.9762716}, //
+
692 {1.34609997, 10.9830503}, //
+
693 {1.34377003, 10.9894705}, //
+
694 {1.34132004, 10.9966869}, //
+
695 {1.33873999, 11.0046997}, //
+
696 {1.33604002, 11.0135098}, //
+
697 {1.33320999, 11.0231152}, //
+
698 {1.33026004, 11.0335169}, //
+
699 {1.32718003, 11.0447149}, //
+
700 {1.32397997, 11.0567093}, //
+
701 {1.32064998, 11.0695}, //
+
702 {1.31724, 11.0825844}, //
+
703 {1.31378996, 11.095458}, //
+
704 {1.31028998, 11.1081219}, //
+
705 {1.30675995, 11.1205769}, //
+
706 {1.30317998, 11.1328211}, //
+
707 {1.29955995, 11.1448565}, //
+
708 {1.29589999, 11.1566801}, //
+
709 {1.29219997, 11.1682949}, //
+
710 {1.28845, 11.1796999}, //
+
711 {1.28622997, 11.1912947}, //
+
712 {1.28409004, 11.2019691}, //
+
713 {1.28202999, 11.2117224}, //
+
714 {1.28006005, 11.2205544}, //
+
715 {1.27818, 11.2284651}, //
+
716 {1.27637994, 11.2354565}, //
+
717 {1.27467, 11.2415247}, //
+
718 {1.27304006, 11.2466726}, //
+
719 {1.27149999, 11.2509003}, //
+
720 {1.26993001, 11.2585802}, //
+
721 {1.26822996, 11.266552}, //
+
722 {1.26639998, 11.2748175}, //
+
723 {1.26444995, 11.2833738}, //
+
724 {1.26236999, 11.2922239}, //
+
725 {1.26016998, 11.3013668}, //
+
726 {1.25784004, 11.3108025}, //
+
727 {1.25538003, 11.3205299}, //
+
728 {1.25279999, 11.3305502}, //
+
729 {1.25022995, 11.3406649}, //
+
730 {1.24778998, 11.3506536}, //
+
731 {1.24547005, 11.3605165}, //
+
732 {1.24327004, 11.3702536}, //
+
733 {1.24120998, 11.3798647}, //
+
734 {1.23926997, 11.3893499}, //
+
735 {1.23745, 11.3987093}, //
+
736 {1.23575997, 11.4079428}, //
+
737 {1.2342, 11.4170504}, //
+
738 {1.23273003, 11.4284964}, //
+
739 {1.23134995, 11.4402351}, //
+
740 {1.23003995, 11.4522667}, //
+
741 {1.22882998, 11.464591}, //
+
742 {1.22768998, 11.4772072}, //
+
743 {1.22663999, 11.4901171}, //
+
744 {1.22567999, 11.5033188}, //
+
745 {1.22479999, 11.5168133}, //
+
746 {1.22399998, 11.5305996}, //
+
747 {1.22334003, 11.5442305}, //
+
748 {1.22283995, 11.5572319}, //
+
749 {1.22250998, 11.5696058}, //
+
750 {1.22235, 11.5813513}, //
+
751 {1.22235, 11.5924673}, //
+
752 {1.22250998, 11.6029558}, //
+
753 {1.22283995, 11.6128149}, //
+
754 {1.22334003, 11.6220474}, //
+
755 {1.22399998, 11.6306496}, //
+
756 {1.22479999, 11.6381826}, //
+
757 {1.22567999, 11.6457167}, //
+
758 {1.22663999, 11.6532497}, //
+
759 {1.22767997, 11.6607828}, //
+
760 {1.22880995, 11.6683168}, //
+
761 {1.23002005, 11.6758499}, //
+
762 {1.23132002, 11.683383}, //
+
763 {1.23268998, 11.690917}, //
+
764 {1.23415005, 11.6984501}, //
+
765 {1.23562002, 11.7057428}, //
+
766 {1.23699999, 11.7125311}, //
+
767 {1.23830998, 11.7188168}, //
+
768 {1.23951995, 11.7245979}, //
+
769 {1.24065995, 11.7298756}, //
+
770 {1.24170995, 11.7346497}, //
+
771 {1.24267006, 11.7389202}, //
+
772 {1.24354994, 11.7426872}, //
+
773 {1.24434996, 11.7459497}, //
+
774 {1.24512994, 11.7476177}, //
+
775 {1.24583006, 11.7493496}, //
+
776 {1.24775004, 11.7493496}, //
+
777 {1.2579, 11.7730503}, //
+
778 {1.25279999, 11.7730503}, //
+
779 {1.25395, 11.7775927}, //
+
780 {1.25514996, 11.7821779}, //
+
781 {1.25638998, 11.7868061}, //
+
782 {1.25767004, 11.7914753}, //
+
783 {1.25899005, 11.7961864}, //
+
784 {1.26036, 11.8009386}, //
+
785 {1.26176, 11.8057337}, //
+
786 {1.26321006, 11.8105707}, //
+
787 {1.26470006, 11.8154497}, //
+
788 {1.26612997, 11.8202448}, //
+
789 {1.26739001, 11.8248301}, //
+
790 {1.26847994, 11.8292065}, //
+
791 {1.2694, 11.8333712}, //
+
792 {1.27015996, 11.837327}, //
+
793 {1.27074003, 11.8410721}, //
+
794 {1.27116001, 11.8446083}, //
+
795 {1.27142, 11.8479338}, //
+
796 {1.27149999, 11.8510504}, //
+
797 {1.27210999, 11.8559914}, //
+
798 {1.27242005, 11.8617687}, //
+
799 {1.27243996, 11.8683834}, //
+
800 {1.27216995, 11.8758354}, //
+
801 {1.27160001, 11.8841238}, //
+
802 {1.27074003, 11.8932505}, //
+
803 {1.26959002, 11.9032125}, //
+
804 {1.26813996, 11.9140129}, //
+
805 {1.26639998, 11.9256496}, //
+
806 {1.26452994, 11.9375801}, //
+
807 {1.26270998, 11.9492569}, //
+
808 {1.26092994, 11.9606829}, //
+
809 {1.25918996, 11.9718571}, //
+
810 {1.25750005, 11.9827805}, //
+
811 {1.25583994, 11.9934502}, //
+
812 {1.25424004, 12.00387}, //
+
813 {1.25267005, 12.01404}, //
+
814 {1.25115001, 12.0239496}, //
+
815 {1.25039005, 12.0276804}, //
+
816 {1.24963999, 12.0313196}, //
+
817 {1.24888003, 12.0348797}, //
+
818 {1.24812996, 12.0383501}, //
+
819 {1.24737, 12.04175}, //
+
820 {1.24662006, 12.0450602}, //
+
821 {1.24585998, 12.0482903}, //
+
822 {1.24511003, 12.0514402}, //
+
823 {1.24434996, 12.0544996}, //
+
824 {1.24225998, 12.06915}, //
+
825 {1.24050999, 12.0844603}, //
+
826 {1.23908997, 12.1004496}, //
+
827 {1.23800004, 12.1171103}, //
+
828 {1.23759997, 12.1264496}, //
+
829 {1.23759997, 12.1307497}, //
+
830 {1.23756003, 12.1318598}, //
+
831 {1.23742998, 12.1329298}, //
+
832 {1.23729002, 12.1336298}, //
+
833 {1.23724997, 12.1344404}, //
+
834 {1.23684001, 12.1524296}, //
+
835 {1.23676002, 12.1710997}, //
+
836 {1.23701, 12.1904402}, //
+
837 {1.23759997, 12.2104502}, //
+
838 {1.23845005, 12.21807}, //
+
839 {1.23951006, 12.2258501}, //
+
840 {1.24078, 12.2338104}, //
+
841 {1.24225998, 12.24193}, //
+
842 {1.24395001, 12.2502203}, //
+
843 {1.24583995, 12.2586699}, //
+
844 {1.24794996, 12.2672997}, //
+
845 {1.25027001, 12.2760897}, //
+
846 {1.25279999, 12.2850504}, //
+
847 {1.25541997, 12.2939701}, //
+
848 {1.25800002, 12.30264}, //
+
849 {1.26054001, 12.3110504}, //
+
850 {1.26303995, 12.3192101}, //
+
851 {1.26549995, 12.3271198}, //
+
852 {1.26791, 12.3347797}, //
+
853 {1.27028, 12.3421898}, //
+
854 {1.27260995, 12.34935}, //
+
855 {1.27489996, 12.3562498}, //
+
856 {1.27636003, 12.3620701}, //
+
857 {1.27772999, 12.3674803}, //
+
858 {1.27902997, 12.3724604}, //
+
859 {1.28024006, 12.3770304}, //
+
860 {1.28137004, 12.3811703}, //
+
861 {1.28241003, 12.3848896}, //
+
862 {1.28248, 12.3851299}, //
+
863 {1.29184997, 12.4003496}, //
+
864 {1.28745997, 12.4025202}, //
+
865 {1.28901005, 12.4071102}, //
+
866 {1.29108, 12.4126396}, //
+
867 {1.29352999, 12.4186602}, //
+
868 {1.29636002, 12.42519}, //
+
869 {1.29955995, 12.43223}, //
+
870 {1.30314004, 12.4397602}, //
+
871 {1.30710006, 12.4477997}, //
+
872 {1.31125998, 12.45613}, //
+
873 {1.31546998, 12.4645395}, //
+
874 {1.31972003, 12.4730396}, //
+
875 {1.324, 12.4816198}, //
+
876 {1.32833004, 12.4902802}, //
+
877 {1.33270001, 12.4990196}, //
+
878 {1.33711004, 12.5078497}, //
+
879 {1.34156001, 12.5167599}, //
+
880 {1.34605002, 12.5257502}, //
+
881 {1.35039997, 12.5345001}, //
+
882 {1.35442996, 12.5426702}, //
+
883 {1.358096, 12.550211}, //
+
884 {1.35815001, 12.5503302}, //
+
885 {1.35810995, 12.5502396}, //
+
886 {1.358096, 12.550211}, //
+
887 {1.35625005, 12.5461502}, //
+
888 {1.35626996, 12.5461702}, //
+
889 {1.35633004, 12.5462303}, //
+
890 {1.35643995, 12.5463305}, //
+
891 {1.35659003, 12.5464802}, //
+
892 {1.35677004, 12.5466604}, //
+
893 {1.35701001, 12.5468798}, //
+
894 {1.35728002, 12.5471497}, //
+
895 {1.35758996, 12.5474501}, //
+
896 {1.35794997, 12.5478001}, //
+
897 {1.35828996, 12.5481997}, //
+
898 {1.35854006, 12.5486403}, //
+
899 {1.35871005, 12.5491199}, //
+
900 {1.35879004, 12.5496502}, //
+
901 {1.35879004, 12.55021}, //
+
902 {1.35871005, 12.5508204}, //
+
903 {1.35859001, 12.5512505}, //
+
904 {1.36145997, 12.5572395}, //
+
905 {1.36448002, 12.5636396}, //
+
906 {1.36715996, 12.5694599}, //
+
907 {1.36951005, 12.5746899}, //
+
908 {1.37152004, 12.57934}, //
+
909 {1.37320006, 12.5833998}, //
+
910 {1.37487996, 12.5858803}, //
+
911 {1.37688994, 12.5887699}, //
+
912 {1.37924004, 12.5920801}, //
+
913 {1.38191998, 12.5958004}, //
+
914 {1.38494003, 12.5999498}, //
+
915 {1.38829005, 12.6045103}, //
+
916 {1.39197004, 12.6094904}, //
+
917 {1.39600003, 12.6148901}, //
+
918 {1.40034997, 12.6206999}, //
+
919 {1.40577996, 12.6306696}, //
+
920 {1.41155005, 12.6409702}, //
+
921 {1.41766, 12.6516104}, //
+
922 {1.42410004, 12.6625795}, //
+
923 {1.43087995, 12.6738796}, //
+
924 {1.43798995, 12.6855202}, //
+
925 {1.44159997, 12.69133}, //
+
926 {1.43760002, 12.6953001}, //
+
927 {1.43605995, 12.6968498}, //
+
928 {1.43443, 12.6984901}, //
+
929 {1.43271995, 12.7002096}, //
+
930 {1.43092, 12.7020102}, //
+
931 {1.42707002, 12.7058601}, //
+
932 {1.42500997, 12.7079}, //
+
933 {1.42287004, 12.7100401}, //
+
934 {1.42065001, 12.7122498}, //
+
935 {1.41839004, 12.7145004}, //
+
936 {1.41613996, 12.7166996}, //
+
937 {1.41387999, 12.7188597}, //
+
938 {1.41162002, 12.7209702}, //
+
939 {1.40936005, 12.7230396}, //
+
940 {1.40708995, 12.72507}, //
+
941 {1.40482998, 12.7270603}, //
+
942 {1.40257001, 12.7290001}, //
+
943 {1.40030003, 12.7308998}, //
+
944 {1.39804006, 12.7327299}, //
+
945 {1.39578998, 12.7344303}, //
+
946 {1.39353001, 12.7360001}, //
+
947 {1.39128006, 12.7374496}, //
+
948 {1.38901997, 12.7387695}, //
+
949 {1.38677001, 12.7399702}, //
+
950 {1.38451004, 12.7410402}, //
+
951 {1.38225996, 12.7419796}, //
+
952 {1.38, 12.7427998}, //
+
953 {1.37489998, 12.7444496}, //
+
954 {1.37372005, 12.7448502}, //
+
955 {1.37247002, 12.7452898}, //
+
956 {1.37111998, 12.7457705}, //
+
957 {1.36969995, 12.7462997}, //
+
958 {1.36818004, 12.7468596}, //
+
959 {1.36659002, 12.7474699}, //
+
960 {1.36491001, 12.7481203}, //
+
961 {1.36315, 12.7488203}, //
+
962 {1.36129999, 12.7495499}, //
+
963 {1.35943997, 12.7502604}, //
+
964 {1.35763001, 12.7508898}, //
+
965 {1.35585999, 12.75144}, //
+
966 {1.35412002, 12.7518997}, //
+
967 {1.35244, 12.7522802}, //
+
968 {1.35079002, 12.7525702}, //
+
969 {1.34917998, 12.75278}, //
+
970 {1.34762001, 12.7529097}, //
+
971 {1.34609997, 12.7529497}, //
+
972 {1.34379005, 12.7530298}, //
+
973 {1.34140003, 12.7532902}, //
+
974 {1.33893001, 12.7537098}, //
+
975 {1.33636999, 12.7542896}, //
+
976 {1.33372998, 12.7550497}, //
+
977 {1.33100998, 12.75597}, //
+
978 {1.32821, 12.7570601}, //
+
979 {1.32532001, 12.7583199}, //
+
980 {1.32235003, 12.7597504}, //
+
981 {1.31936002, 12.7604799}, //
+
982 {1.31640995, 12.7611704}, //
+
983 {1.31350005, 12.7618198}, //
+
984 {1.31062996, 12.7624302}, //
+
985 {1.30780005, 12.76299}, //
+
986 {1.30501997, 12.7635098}, //
+
987 {1.30227005, 12.7639799}, //
+
988 {1.29955995, 12.76441}, //
+
989 {1.29690003, 12.7648001}, //
+
990 {1.29440999, 12.76507}, //
+
991 {1.29222, 12.7651396}, //
+
992 {1.29032004, 12.7649899}, //
+
993 {1.28871, 12.7646399}, //
+
994 {1.28738999, 12.76408}, //
+
995 {1.28637004, 12.7633104}, //
+
996 {1.28564, 12.7623301}, //
+
997 {1.2852, 12.7611504}, //
+
998 {1.28505003, 12.7597504}, //
+
999 {1.28420997, 12.7583199}, //
+
1000 {1.28320003, 12.7570601}, //
+
1001 {1.28202999, 12.75597}, //
+
1002 {1.28067994, 12.7550497}, //
+
1003 {1.27917004, 12.7542896}, //
+
1004 {1.27749002, 12.7537098}, //
+
1005 {1.27565002, 12.7532902}, //
+
1006 {1.27363002, 12.7530298}, //
+
1007 {1.27145004, 12.7529497}, //
+
1008 {1.26917005, 12.7529697}, //
+
1009 {1.26684999, 12.7530298}, //
+
1010 {1.26449001, 12.7531404}, //
+
1011 {1.26208997, 12.7532902}, //
+
1012 {1.25964999, 12.7534704}, //
+
1013 {1.25715995, 12.7537098}, //
+
1014 {1.25462997, 12.7539797}, //
+
1015 {1.25206006, 12.7542896}, //
+
1016 {1.24944997, 12.7546501}, //
+
1017 {1.24688005, 12.7550497}, //
+
1018 {1.24442995, 12.7554903}, //
+
1019 {1.24211001, 12.75597}, //
+
1020 {1.23991001, 12.7565002}, //
+
1021 {1.23784006, 12.7570601}, //
+
1022 {1.23589003, 12.7576704}, //
+
1023 {1.23406994, 12.7583199}, //
+
1024 {1.23237002, 12.7590199}, //
+
1025 {1.23080003, 12.7597504}, //
+
1026 {1.22899997, 12.7612495}, //
+
1027 {1.22660995, 12.7627497}, //
+
1028 {1.22362995, 12.7642603}, //
+
1029 {1.22007, 12.7657604}, //
+
1030 {1.21592999, 12.7672701}, //
+
1031 {1.2112, 12.7687702}, //
+
1032 {1.20589006, 12.7702799}, //
+
1033 {1.19999003, 12.7717896}, //
+
1034 {1.19350004, 12.7733002}, //
+
1035 {1.18973005, 12.7740803}, //
+
1036 {1.18596995, 12.7748899}, //
+
1037 {1.18219995, 12.7757502}, //
+
1038 {1.17842996, 12.7766504}, //
+
1039 {1.17466998, 12.7775898}, //
+
1040 {1.17089999, 12.7785702}, //
+
1041 {1.16712999, 12.7795897}, //
+
1042 {1.16337001, 12.7806501}, //
+
1043 {1.15960002, 12.7817497}, //
+
1044 {1.15583003, 12.7828999}, //
+
1045 {1.15207005, 12.7840996}, //
+
1046 {1.14830005, 12.7853403}, //
+
1047 {1.14453006, 12.7866201}, //
+
1048 {1.14076996, 12.78794}, //
+
1049 {1.13699996, 12.7893105}, //
+
1050 {1.13322997, 12.7907104}, //
+
1051 {1.12946999, 12.79216}, //
+
1052 {1.1257, 12.7936497}, //
+
1053 {1.12494004, 12.7943602}, //
+
1054 {1.12418997, 12.7949896}, //
+
1055 {1.12343001, 12.7955399}, //
+
1056 {1.12267995, 12.7959995}, //
+
1057 {1.12191999, 12.79638}, //
+
1058 {1.12117004, 12.79667}, //
+
1059 {1.12040997, 12.7968798}, //
+
1060 {1.11966002, 12.7970104}, //
+
1061 {1.11889994, 12.7970505}, //
+
1062 {1.11423004, 12.8001003}, //
+
1063 {1.10926998, 12.8032398}, //
+
1064 {1.10402, 12.8064604}, //
+
1065 {1.09846997, 12.8097696}, //
+
1066 {1.09263003, 12.8131504}, //
+
1067 {1.08650005, 12.8166304}, //
+
1068 {1.08008003, 12.8201799}, //
+
1069 {1.07335997, 12.8238297}, //
+
1070 {1.06634998, 12.8275499}, //
+
1071 {1.05929995, 12.83111}, //
+
1072 {1.05245996, 12.8342505}, //
+
1073 {1.04582, 12.8369703}, //
+
1074 {1.03939998, 12.8392696}, //
+
1075 {1.03318, 12.8411503}, //
+
1076 {1.02716994, 12.8426199}, //
+
1077 {1.02137005, 12.8436604}, //
+
1078 {1.01577997, 12.8442898}, //
+
1079 {1.01040006, 12.8444996}, //
+
1080 {1.00590003, 12.8445797}, //
+
1081 {1.00144005, 12.8448296}, //
+
1082 {0.997021973, 12.8452501}, //
+
1083 {0.992646992, 12.84583}, //
+
1084 {0.988313973, 12.8465796}, //
+
1085 {0.984022021, 12.8474998}, //
+
1086 {0.979772985, 12.8485804}, //
+
1087 {0.975565016, 12.8498297}, //
+
1088 {0.971400023, 12.8512497}, //
+
1089 {0.967319012, 12.8527603}, //
+
1090 {0.963362992, 12.85427}, //
+
1091 {0.959532976, 12.8557796}, //
+
1092 {0.955829978, 12.8572903}, //
+
1093 {0.952251971, 12.8588104}, //
+
1094 {0.948800027, 12.8603201}, //
+
1095 {0.945474029, 12.8618298}, //
+
1096 {0.942273974, 12.8633404}, //
+
1097 {0.939199984, 12.86485}, //
+
1098 {0.936356008, 12.8662796}, //
+
1099 {0.931671977, 12.8686304}, //
+
1100 {0.928327024, 12.8703098}, //
+
1101 {0.925650001, 12.8716497}, //
+
1102 {0.925858974, 12.8716297}, //
+
1103 {0.926487029, 12.8715696}, //
+
1104 {0.930881023, 12.87113}, //
+
1105 {0.933183014, 12.8708897}, //
+
1106 {0.935904026, 12.8706198}, //
+
1107 {0.939042985, 12.8703098}, //
+
1108 {0.942600012, 12.8699503}, //
+
1109 {0.946408987, 12.8695498}, //
+
1110 {0.950300992, 12.8691101}, //
+
1111 {0.954277992, 12.8686304}, //
+
1112 {0.958338022, 12.8681002}, //
+
1113 {0.962482989, 12.8675404}, //
+
1114 {0.966710985, 12.86693}, //
+
1115 {0.971023023, 12.8662796}, //
+
1116 {0.975419998, 12.8655796}, //
+
1117 {0.979900002, 12.86485}, //
+
1118 {0.984422028, 12.8640499}, //
+
1119 {0.988943994, 12.8631697}, //
+
1120 {0.993466973, 12.8622103}, //
+
1121 {0.997988999, 12.8611603}, //
+
1122 {1.00250995, 12.8600197}, //
+
1123 {1.00703001, 12.8588104}, //
+
1124 {1.01155996, 12.8575001}, //
+
1125 {1.01608002, 12.8561201}, //
+
1126 {1.02059996, 12.8546495}, //
+
1127 {1.02449, 12.8539495}, //
+
1128 {1.02863002, 12.8533297}, //
+
1129 {1.03303003, 12.8527899}, //
+
1130 {1.03767002, 12.8523302}, //
+
1131 {1.04256999, 12.8519602}, //
+
1132 {1.04770994, 12.8516703}, //
+
1133 {1.05311, 12.85147}, //
+
1134 {1.05875003, 12.8513403}, //
+
1135 {1.06465006, 12.8513002}, //
+
1136 {1.07578003, 12.8497105}, //
+
1137 {1.08658004, 12.8479404}, //
+
1138 {1.09704006, 12.8460197}, //
+
1139 {1.10716999, 12.8439198}, //
+
1140 {1.11696994, 12.8416595}, //
+
1141 {1.12643003, 12.8392296}, //
+
1142 {1.13555002, 12.8366404}, //
+
1143 {1.14434004, 12.8338804}, //
+
1144 {1.15279996, 12.8309498}, //
+
1145 {1.15749002, 12.82796}, //
+
1146 {1.16251004, 12.8250103}, //
+
1147 {1.16787004, 12.8220997}, //
+
1148 {1.17357004, 12.8192301}, //
+
1149 {1.17958999, 12.8163996}, //
+
1150 {1.18596005, 12.8136196}, //
+
1151 {1.19264996, 12.8108702}, //
+
1152 {1.19967997, 12.8081598}, //
+
1153 {1.20704997, 12.8055}, //
+
1154 {1.21441996, 12.8029699}, //
+
1155 {1.22144997, 12.8006496}, //
+
1156 {1.22814, 12.7985401}, //
+
1157 {1.23450994, 12.7966404}, //
+
1158 {1.24053001, 12.79494}, //
+
1159 {1.24623001, 12.7934599}, //
+
1160 {1.25159001, 12.7921801}, //
+
1161 {1.25661004, 12.79111}, //
+
1162 {1.26129997, 12.7902498}, //
+
1163 {1.26599002, 12.7895803}, //
+
1164 {1.27101004, 12.7890701}, //
+
1165 {1.27637005, 12.7887402}, //
+
1166 {1.28207004, 12.7885704}, //
+
1167 {1.28808999, 12.7885704}, //
+
1168 {1.29446006, 12.7887402}, //
+
1169 {1.30114996, 12.7890701}, //
+
1170 {1.30817997, 12.7895803}, //
+
1171 {1.31554997, 12.7902498}, //
+
1172 {1.3664, 12.7902498}, //
+
1173 {1.36943996, 12.7894697}, //
+
1174 {1.37252998, 12.7886496}, //
+
1175 {1.37565005, 12.7877903}, //
+
1176 {1.37881005, 12.78689}, //
+
1177 {1.38202, 12.7859497}, //
+
1178 {1.38527, 12.7849598}, //
+
1179 {1.38855004, 12.7839298}, //
+
1180 {1.39188004, 12.7828598}, //
+
1181 {1.39524996, 12.7817497}, //
+
1182 {1.39862001, 12.7805204}, //
+
1183 {1.40193999, 12.7790899}, //
+
1184 {1.40523005, 12.7774401}, //
+
1185 {1.40847003, 12.7755804}, //
+
1186 {1.41166997, 12.7735205}, //
+
1187 {1.41482997, 12.7712402}, //
+
1188 {1.41794002, 12.7687502}, //
+
1189 {1.42102003, 12.7660599}, //
+
1190 {1.42404997, 12.7631502}, //
+
1191 {1.42560005, 12.7615805}, //
+
1192 {1.42724001, 12.7598801}, //
+
1193 {1.42895997, 12.75805}, //
+
1194 {1.43076003, 12.7560997}, //
+
1195 {1.43263996, 12.7540197}, //
+
1196 {1.43461001, 12.7518196}, //
+
1197 {1.43665004, 12.7494898}, //
+
1198 {1.43878996, 12.7470303}, //
+
1199 {1.44099998, 12.7444496}, //
+
1200 {1.44322002, 12.7418804}, //
+
1201 {1.44535995, 12.7394304}, //
+
1202 {1.44742, 12.7371101}, //
+
1203 {1.44939005, 12.73491}, //
+
1204 {1.45126998, 12.7328396}, //
+
1205 {1.45307004, 12.7308903}, //
+
1206 {1.45477998, 12.7290697}, //
+
1207 {1.45641005, 12.7273703}, //
+
1208 {1.45795, 12.7257996}, //
+
1209 {1.46133995, 12.7224302}, //
+
1210 {1.45323002, 12.7098103}, //
+
1211 {1.44544005, 12.6975002}, //
+
1212 {1.44159997, 12.69133}, //
+
1213 {1.44439995, 12.68855}, //
+
1214 {1.46475005, 12.7190504}, //
+
1215 {1.46133995, 12.7224302}, //
+
1216 {1.46134996, 12.7224503}, //
+
1217 {1.46959996, 12.7351398}, //
+
1218 {1.47775996, 12.74757}, //
+
1219 {1.48583996, 12.7597504}, //
+
1220 {1.49382997, 12.7716799}, //
+
1221 {1.50174999, 12.7833595}, //
+
1222 {1.50957, 12.7947798}, //
+
1223 {1.51732004, 12.8059597}, //
+
1224 {1.52497005, 12.8168802}, //
+
1225 {1.53254998, 12.8275499}, //
+
1226 {1.54282999, 12.8417397}, //
+
1227 {1.55256999, 12.85567}, //
+
1228 {1.56175995, 12.86936}, //
+
1229 {1.57041001, 12.8827896}, //
+
1230 {1.57851005, 12.8959703}, //
+
1231 {1.58606005, 12.9089098}, //
+
1232 {1.59307003, 12.9215899}, //
+
1233 {1.59952998, 12.93402}, //
+
1234 {1.60545003, 12.9462004}, //
+
1235 {1.61091995, 12.95788}, //
+
1236 {1.61600995, 12.9687996}, //
+
1237 {1.62072003, 12.9789801}, //
+
1238 {1.62504995, 12.9884005}, //
+
1239 {1.62900996, 12.9970598}, //
+
1240 {1.63258004, 13.0049801}, //
+
1241 {1.63577998, 13.0121403}, //
+
1242 {1.63861001, 13.0185499}, //
+
1243 {1.64104998, 13.0242004}, //
+
1244 {1.64112997, 13.0249596}, //
+
1245 {1.64138997, 13.0257101}, //
+
1246 {1.64181006, 13.0264702}, //
+
1247 {1.64239001, 13.0272198}, //
+
1248 {1.64314997, 13.0279799}, //
+
1249 {1.64407003, 13.0287304}, //
+
1250 {1.64515996, 13.0294905}, //
+
1251 {1.64642, 13.0302401}, //
+
1252 {1.64785004, 13.0310001}, //
+
1253 {1.64876997, 13.03263}, //
+
1254 {1.65003002, 13.0345001}, //
+
1255 {1.65162003, 13.0366297}, //
+
1256 {1.65355003, 13.03901}, //
+
1257 {1.65581, 13.0416498}, //
+
1258 {1.65840995, 13.0445299}, //
+
1259 {1.66134, 13.0476704}, //
+
1260 {1.66460001, 13.0510597}, //
+
1261 {1.66820002, 13.0546999}, //
+
1262 {1.67581999, 13.0623198}, //
+
1263 {1.67969, 13.0661898}, //
+
1264 {1.68359995, 13.0700998}, //
+
1265 {1.68755996, 13.0740604}, //
+
1266 {1.70379996, 13.0902996}, //
+
1267 {1.70788002, 13.0943003}, //
+
1268 {1.71184003, 13.0979996}, //
+
1269 {1.71566999, 13.1014204}, //
+
1270 {1.71937001, 13.1045399}, //
+
1271 {1.72294998, 13.1073599}, //
+
1272 {1.72640002, 13.1099005}, //
+
1273 {1.72973001, 13.1121397}, //
+
1274 {1.73292994, 13.11409}, //
+
1275 {1.73599994, 13.1157503}, //
+
1276 {1.73750997, 13.1165104}, //
+
1277 {1.73901999, 13.11726}, //
+
1278 {1.74053001, 13.1180201}, //
+
1279 {1.74203002, 13.1187696}, //
+
1280 {1.74354005, 13.1195297}, //
+
1281 {1.74504006, 13.1202803}, //
+
1282 {1.74654996, 13.1210403}, //
+
1283 {1.74804997, 13.1217899}, //
+
1284 {1.74954998, 13.12255}, //
+
1285 {1.75179994, 13.1240301}, //
+
1286 {1.75399995, 13.1254702}, //
+
1287 {1.75616002, 13.1268702}, //
+
1288 {1.75827003, 13.1282196}, //
+
1289 {1.76033998, 13.1295404}, //
+
1290 {1.76236999, 13.1308203}, //
+
1291 {1.76435995, 13.1320496}, //
+
1292 {1.76629996, 13.1332502}, //
+
1293 {1.76820004, 13.1344004}, //
+
1294 {1.77003002, 13.1354704}, //
+
1295 {1.77172995, 13.1364098}, //
+
1296 {1.77330005, 13.1372299}, //
+
1297 {1.77474999, 13.1379299}, //
+
1298 {1.77607, 13.1384897}, //
+
1299 {1.77726996, 13.1389303}, //
+
1300 {1.77833998, 13.1392498}, //
+
1301 {1.77927995, 13.1394396}, //
+
1302 {1.78009999, 13.1394997}, //
+
1303 {1.78128004, 13.13906}, //
+
1304 {1.78334999, 13.1377401}, //
+
1305 {1.78629005, 13.13554}, //
+
1306 {1.79012001, 13.1324701}, //
+
1307 {1.79482996, 13.1285105}, //
+
1308 {1.80026996, 13.1238003}, //
+
1309 {1.80035996, 13.1232996}, //
+
1310 {1.80040002, 13.12255}, //
+
1311 {1.80084002, 13.1221304}, //
+
1312 {1.80436003, 13.1187801}, //
+
1313 {1.80743003, 13.11584}, //
+
1314 {1.81139004, 13.1120701}, //
+
1315 {1.82852995, 13.0957298}, //
+
1316 {1.83599997, 13.0886002}, //
+
1317 {1.84406996, 13.0809603}, //
+
1318 {1.85242999, 13.0731096}, //
+
1319 {1.86108005, 13.0650597}, //
+
1320 {1.87002003, 13.0567904}, //
+
1321 {1.87925005, 13.0483103}, //
+
1322 {1.88878, 13.0396204}, //
+
1323 {1.89858997, 13.0307198}, //
+
1324 {1.90869999, 13.0216198}, //
+
1325 {1.91910005, 13.0122995}, //
+
1326 {1.92964995, 13.0030804}, //
+
1327 {1.94018996, 12.9942303}, //
+
1328 {1.95073998, 12.9857597}, //
+
1329 {1.95967996, 12.9789}, //
+
1330 {1.96020997, 12.9784098}, //
+
1331 {1.96921003, 12.9703302}, //
+
1332 {1.97779, 12.9628401}, //
+
1333 {1.98596001, 12.9559298}, //
+
1334 {1.99370003, 12.9496002}, //
+
1335 {1.99917996, 12.9451199}, //
+
1336 {2.00506997, 12.9407196}, //
+
1337 {2.01138997, 12.93641}, //
+
1338 {2.01812005, 12.9321804}, //
+
1339 {2.02528, 12.9280396}, //
+
1340 {2.03286004, 12.9239798}, //
+
1341 {2.04084992, 12.9200001}, //
+
1342 {2.04926991, 12.91611}, //
+
1343 {2.05809999, 12.9123001}, //
+
1344 {2.0675199, 12.9084902}, //
+
1345 {2.0776999, 12.9046001}, //
+
1346 {2.08861995, 12.9006205}, //
+
1347 {2.10030007, 12.8965597}, //
+
1348 {2.11274004, 12.8924198}, //
+
1349 {2.12592006, 12.8881903}, //
+
1350 {2.13930988, 12.8840504}, //
+
1351 {2.15980005, 12.8767004}, //
+
1352 {2.18234992, 12.8688297}, //
+
1353 {2.20477009, 12.8610497}, //
+
1354 {2.22706008, 12.8533401}, //
+
1355 {2.24922991, 12.8457298}, //
+
1356 {2.27127004, 12.8381901}, //
+
1357 {2.29317999, 12.83074}, //
+
1358 {2.31496, 12.8233805}, //
+
1359 {2.33662009, 12.8161001}, //
+
1360 {2.35815001, 12.8088999}, //
+
1361 {2.37890005, 12.8021002}, //
+
1362 {2.39816999, 12.79601}, //
+
1363 {2.41599011, 12.7906303}, //
+
1364 {2.41631007, 12.7905397}, //
+
1365 {2.42539001, 12.7876196}, //
+
1366 {2.43530989, 12.7845402}, //
+
1367 {2.44464993, 12.7817497}, //
+
1368 {2.45348001, 12.7791796}, //
+
1369 {2.4619, 12.7767296}, //
+
1370 {2.46989012, 12.7744102}, //
+
1371 {2.47746992, 12.7722101}, //
+
1372 {2.48463011, 12.7701397}, //
+
1373 {2.49135995, 12.7681904}, //
+
1374 {2.49767995, 12.7663698}, //
+
1375 {2.50357008, 12.7646704}, //
+
1376 {2.50904989, 12.7630997}, //
+
1377 {2.51415992, 12.7616796}, //
+
1378 {2.51892996, 12.7604303}, //
+
1379 {2.52337003, 12.7593498}, //
+
1380 {2.52747011, 12.7584295}, //
+
1381 {2.53123999, 12.7576799}, //
+
1382 {2.53467011, 12.7571001}, //
+
1383 {2.53777003, 12.7566795}, //
+
1384 {2.54052997, 12.7564297}, //
+
1385 {2.54294991, 12.7563496}, //
+
1386 {2.55655003, 12.7563496}, //
+
1387 {2.55733991, 12.7563105}, //
+
1388 {2.5582099, 12.7561798}, //
+
1389 {2.55917001, 12.75597}, //
+
1390 {2.56020999, 12.7556801}, //
+
1391 {2.56134009, 12.7552996}, //
+
1392 {2.56255007, 12.7548399}, //
+
1393 {2.56384993, 12.7542896}, //
+
1394 {2.56522989, 12.7536602}, //
+
1395 {2.56669998, 12.7529497}, //
+
1396 {2.56862998, 12.7529097}, //
+
1397 {2.57138991, 12.75278}, //
+
1398 {2.57499003, 12.7525702}, //
+
1399 {2.5794301, 12.7522802}, //
+
1400 {2.58470011, 12.7518997}, //
+
1401 {2.59081006, 12.75144}, //
+
1402 {2.59774995, 12.7508898}, //
+
1403 {2.60553002, 12.7502604}, //
+
1404 {2.61415005, 12.7495499}, //
+
1405 {2.62345004, 12.7488003}, //
+
1406 {2.63323998, 12.7480402}, //
+
1407 {2.64353991, 12.7472897}, //
+
1408 {2.65435004, 12.7465401}, //
+
1409 {2.66564989, 12.7457895}, //
+
1410 {2.67745996, 12.7450399}, //
+
1411 {2.68976998, 12.7442904}, //
+
1412 {2.70257998, 12.7435503}, //
+
1413 {2.71589994, 12.7427998}, //
+
1414 {2.74369001, 12.7420397}, //
+
1415 {2.7713201, 12.7412901}, //
+
1416 {2.79877996, 12.74053}, //
+
1417 {2.82607007, 12.7397804}, //
+
1418 {2.85318995, 12.7390203}, //
+
1419 {2.88014007, 12.7382698}, //
+
1420 {2.90692997, 12.7375097}, //
+
1421 {2.93354988, 12.7367601}, //
+
1422 {2.96000004, 12.7360001}, //
+
1423 {2.98136997, 12.7356195}, //
+
1424 {3.00328994, 12.7360001}, //
+
1425 {3.02573991, 12.7371197}, //
+
1426 {3.04874992, 12.7390003}, //
+
1427 {3.07228994, 12.7416401}, //
+
1428 {3.09638, 12.7450199}, //
+
1429 {3.12101007, 12.7491598}, //
+
1430 {3.14617991, 12.7540503}, //
+
1431 {3.17190003, 12.7596998}, //
+
1432 {3.19712996, 12.7656097}, //
+
1433 {3.22079992, 12.7712603}, //
+
1434 {3.24292994, 12.7766705}, //
+
1435 {3.26349998, 12.7818203}, //
+
1436 {3.28253007, 12.7867203}, //
+
1437 {3.30000997, 12.7913704}, //
+
1438 {3.3159399, 12.7957602}, //
+
1439 {3.33031988, 12.7999096}, //
+
1440 {3.3431499, 12.8037996}, //
+
1441 {3.35957003, 12.8085003}, //
+
1442 {3.36221004, 12.8092604}, //
+
1443 {3.36425996, 12.8098402}, //
+
1444 {3.36573005, 12.8102598}, //
+
1445 {3.36661005, 12.8105202}, //
+
1446 {3.36689997, 12.8106003}, //
+
1447 {3.36881995, 12.8098898}, //
+
1448 {3.37006998, 12.8077497}, //
+
1449 {3.37066007, 12.8041897}, //
+
1450 {3.37056994, 12.7992096}, //
+
1451 {3.3698101, 12.7928104}, //
+
1452 {3.36953998, 12.7913198}, //
+
1453 {3.37027001, 12.7910099}, //
+
1454 {3.37252998, 12.7899599}, //
+
1455 {3.37478995, 12.7888203}, //
+
1456 {3.37705994, 12.7876101}, //
+
1457 {3.37931991, 12.7862997}, //
+
1458 {3.38158011, 12.7849197}, //
+
1459 {3.3838501, 12.7834501}, //
+
1460 {3.38689995, 12.7812405}, //
+
1461 {3.39003992, 12.7791004}, //
+
1462 {3.39326, 12.7770596}, //
+
1463 {3.39656997, 12.7750902}, //
+
1464 {3.39995003, 12.7732096}, //
+
1465 {3.40342999, 12.77141}, //
+
1466 {3.40698004, 12.7696896}, //
+
1467 {3.41062999, 12.7680502}, //
+
1468 {3.41435003, 12.7665005}, //
+
1469 {3.42130995, 12.7621498}, //
+
1470 {3.42859006, 12.7581301}, //
+
1471 {3.43621993, 12.7544403}, //
+
1472 {3.44417, 12.7510996}, //
+
1473 {3.45246005, 12.7480898}, //
+
1474 {3.46108007, 12.74541}, //
+
1475 {3.47004008, 12.7430696}, //
+
1476 {3.47933006, 12.7410698}, //
+
1477 {3.48895001, 12.7393999}, //
+
1478 {3.49418998, 12.7386904}, //
+
1479 {3.49934006, 12.73806}, //
+
1480 {3.50441003, 12.7375097}, //
+
1481 {3.50939012, 12.7370501}, //
+
1482 {3.51429009, 12.7366695}, //
+
1483 {3.51910996, 12.7363796}, //
+
1484 {3.52383995, 12.7361698}, //
+
1485 {3.52849007, 12.7360401}, //
+
1486 {3.53305006, 12.7360001}, //
+
1487 {3.56355, 12.7360001}, //
+
1488 {3.56581998, 12.7337303}, //
+
1489 {3.57034993, 12.7292004}, //
+
1490 {3.57112002, 12.7277403}, //
+
1491 {3.57192993, 12.7263699}, //
+
1492 {3.57277989, 12.72507}, //
+
1493 {3.57366991, 12.7238598}, //
+
1494 {3.57460999, 12.7227297}, //
+
1495 {3.5755899, 12.7216902}, //
+
1496 {3.5766201, 12.7207298}, //
+
1497 {3.57768989, 12.7198496}, //
+
1498 {3.57879996, 12.7190504}, //
+
1499 {3.57995009, 12.7183399}, //
+
1500 {3.58115005, 12.7177095}, //
+
1501 {3.58238006, 12.7171602}, //
+
1502 {3.58365989, 12.7166996}, //
+
1503 {3.58498001, 12.71632}, //
+
1504 {3.58632994, 12.7160301}, //
+
1505 {3.58772993, 12.7158203}, //
+
1506 {3.58916998, 12.7156897}, //
+
1507 {3.59065008, 12.7156496}, //
+
1508 {3.59521008, 12.7157297}, //
+
1509 {3.59985995, 12.7159901}, //
+
1510 {3.60458994, 12.7164097}, //
+
1511 {3.60941005, 12.7169905}, //
+
1512 {3.61431003, 12.7177496}, //
+
1513 {3.61929011, 12.7186699}, //
+
1514 {3.62436008, 12.7197599}, //
+
1515 {3.62950993, 12.7210197}, //
+
1516 {3.63474989, 12.7224503}, //
+
1517 {3.63775992, 12.7231598}, //
+
1518 {3.64076996, 12.7237902}, //
+
1519 {3.64379001, 12.7243404}, //
+
1520 {3.64680004, 12.7248001}, //
+
1521 {3.64982009, 12.7251797}, //
+
1522 {3.6528399, 12.7254696}, //
+
1523 {3.65585995, 12.7256804}, //
+
1524 {3.65888, 12.7258101}, //
+
1525 {3.66190004, 12.7258501}, //
+
1526 {3.66638994, 12.7265501}, //
+
1527 {3.67084002, 12.72717}, //
+
1528 {3.67525005, 12.7277098}, //
+
1529 {3.67962003, 12.7281704}, //
+
1530 {3.68394995, 12.7285404}, //
+
1531 {3.68823004, 12.7288303}, //
+
1532 {3.69248009, 12.7290297}, //
+
1533 {3.69669008, 12.7291603}, //
+
1534 {3.70085001, 12.7292004}, //
+
1535 {3.72970009, 12.7292004}, //
+
1536 {3.73042989, 12.7284803}, //
+
1537 {3.73112011, 12.7277899}, //
+
1538 {3.73177004, 12.72715}, //
+
1539 {3.73237991, 12.7265501}, //
+
1540 {3.73345995, 12.7254696}, //
+
1541 {3.73393011, 12.7249899}, //
+
1542 {3.73435998, 12.7245502}, //
+
1543 {3.73475003, 12.7241497}, //
+
1544 {3.73983002, 12.7190704}, //
+
1545 {3.73985004, 12.7190504}, //
+
1546 {3.67205, 12.7190504}, //
+
1547 {3.66820002, 12.7190104}, //
+
1548 {3.66418004, 12.7188797}, //
+
1549 {3.65999007, 12.7186699}, //
+
1550 {3.65563989, 12.71838}, //
+
1551 {3.65111995, 12.7180004}, //
+
1552 {3.64643002, 12.7175398}, //
+
1553 {3.64157009, 12.7169905}, //
+
1554 {3.63653994, 12.7163601}, //
+
1555 {3.63135004, 12.7156496}, //
+
1556 {3.62695003, 12.7149401}, //
+
1557 {3.62280989, 12.7143097}, //
+
1558 {3.61892009, 12.7137604}, //
+
1559 {3.61527991, 12.7132998}, //
+
1560 {3.61189008, 12.7129202}, //
+
1561 {3.6087501, 12.7126303}, //
+
1562 {3.60585999, 12.7124205}, //
+
1563 {3.60323, 12.7122898}, //
+
1564 {3.60085011, 12.7122498}, //
+
1565 {3.59862995, 12.7115898}, //
+
1566 {3.59647989, 12.7110901}, //
+
1567 {3.59442997, 12.7107601}, //
+
1568 {3.5924499, 12.7105999}, //
+
1569 {3.59056997, 12.7105999}, //
+
1570 {3.5887599, 12.7107601}, //
+
1571 {3.58703995, 12.7110901}, //
+
1572 {3.5854001, 12.7115898}, //
+
1573 {3.58384991, 12.7122498}, //
+
1574 {3.58239007, 12.7130098}, //
+
1575 {3.58102012, 12.7137604}, //
+
1576 {3.57972002, 12.7145205}, //
+
1577 {3.57851005, 12.71527}, //
+
1578 {3.57737994, 12.7160301}, //
+
1579 {3.57633996, 12.7167797}, //
+
1580 {3.57538009, 12.7175398}, //
+
1581 {3.57450008, 12.7182903}, //
+
1582 {3.57369995, 12.7190504}, //
+
1583 {3.57291007, 12.7190905}, //
+
1584 {3.57204008, 12.7192202}, //
+
1585 {3.57107997, 12.71943}, //
+
1586 {3.57003999, 12.7197199}, //
+
1587 {3.56890988, 12.7201004}, //
+
1588 {3.56769991, 12.7205601}, //
+
1589 {3.56640005, 12.7211103}, //
+
1590 {3.56502008, 12.7217398}, //
+
1591 {3.56355, 12.7224503}, //
+
1592 {3.56271005, 12.7224703}, //
+
1593 {3.56170011, 12.7225304}, //
+
1594 {3.56052995, 12.72264}, //
+
1595 {3.55918002, 12.7227898}, //
+
1596 {3.55767012, 12.72297}, //
+
1597 {3.55598998, 12.7232103}, //
+
1598 {3.5541501, 12.7234802}, //
+
1599 {3.55212998, 12.7237902}, //
+
1600 {3.54994988, 12.7241497}, //
+
1601 {3.5476501, 12.7245102}, //
+
1602 {3.54526997, 12.7248201}, //
+
1603 {3.54280996, 12.72509}, //
+
1604 {3.54026008, 12.7253304}, //
+
1605 {3.53762007, 12.7255096}, //
+
1606 {3.53490996, 12.7256603}, //
+
1607 {3.53209996, 12.72577}, //
+
1608 {3.5292201, 12.7258301}, //
+
1609 {3.52624989, 12.7258501}, //
+
1610 {3.52391005, 12.7265501}, //
+
1611 {3.52139997, 12.72717}, //
+
1612 {3.51872993, 12.7277098}, //
+
1613 {3.51588011, 12.7281704}, //
+
1614 {3.51287007, 12.7285404}, //
+
1615 {3.50969005, 12.7288303}, //
+
1616 {3.50635004, 12.7290297}, //
+
1617 {3.50283003, 12.7291603}, //
+
1618 {3.49915004, 12.7292004}, //
+
1619 {3.49838996, 12.7292404}, //
+
1620 {3.49763989, 12.7293701}, //
+
1621 {3.49688005, 12.7295799}, //
+
1622 {3.49612999, 12.7298698}, //
+
1623 {3.49536991, 12.7302504}, //
+
1624 {3.49462008, 12.73071}, //
+
1625 {3.49386001, 12.7312603}, //
+
1626 {3.49310994, 12.7318897}, //
+
1627 {3.4923501, 12.7326002}, //
+
1628 {3.48713994, 12.7326403}, //
+
1629 {3.48204994, 12.73277}, //
+
1630 {3.47708011, 12.7329798}, //
+
1631 {3.47224998, 12.7332697}, //
+
1632 {3.46754003, 12.7336502}, //
+
1633 {3.46294999, 12.7341099}, //
+
1634 {3.45848989, 12.7346601}, //
+
1635 {3.45415998, 12.7352896}, //
+
1636 {3.44994998, 12.7360001}, //
+
1637 {3.44583011, 12.7368803}, //
+
1638 {3.44175005, 12.7380104}, //
+
1639 {3.43771005, 12.7393904}, //
+
1640 {3.4337101, 12.7410297}, //
+
1641 {3.42974997, 12.7429104}, //
+
1642 {3.4258399, 12.7450399}, //
+
1643 {3.42196989, 12.7474298}, //
+
1644 {3.41813993, 12.7500601}, //
+
1645 {3.41435003, 12.7529497}, //
+
1646 {3.40918994, 12.7552404}, //
+
1647 {3.40423012, 12.7575598}, //
+
1648 {3.3994801, 12.7599297}, //
+
1649 {3.3949399, 12.7623396}, //
+
1650 {3.39060998, 12.7647896}, //
+
1651 {3.38648009, 12.7672796}, //
+
1652 {3.38256001, 12.7698097}, //
+
1653 {3.37884998, 12.7723904}, //
+
1654 {3.37535, 12.7749996}, //
+
1655 {3.37214994, 12.7774897}, //
+
1656 {3.36932993, 12.7796803}, //
+
1657 {3.36751008, 12.7810898}, //
+
1658 {3.36839008, 12.7849798}, //
+
1659 {3.36953998, 12.7913198}, //
+
1660 {3.36801004, 12.7919703}, //
+
1661 {3.36576009, 12.7928495}, //
+
1662 {3.36350012, 12.7936497}, //
+
1663 {3.36010003, 12.78685}, //
+
1664 {3.36751008, 12.7810898}, //
+
1665 {3.36630011, 12.7757301}, //
+
1666 {3.36352992, 12.7650499}, //
+
1667 {3.36010003, 12.7529497}, //
+
1668 {3.35627007, 12.7398701}, //
+
1669 {3.35230994, 12.7262402}, //
+
1670 {3.34822989, 12.7120705}, //
+
1671 {3.3440299, 12.6973495}, //
+
1672 {3.33968997, 12.6820898}, //
+
1673 {3.33523011, 12.6662798}, //
+
1674 {3.33065009, 12.64993}, //
+
1675 {3.32593989, 12.6330404}, //
+
1676 {3.3211, 12.6155996}, //
+
1677 {3.31614995, 12.5979204}, //
+
1678 {3.31106997, 12.5802803}, //
+
1679 {3.30586004, 12.5626802}, //
+
1680 {3.30052996, 12.5451298}, //
+
1681 {3.29506993, 12.5276098}, //
+
1682 {3.28947997, 12.5101299}, //
+
1683 {3.28376007, 12.4926996}, //
+
1684 {3.27792001, 12.4752998}, //
+
1685 {3.27195001, 12.4579496}, //
+
1686 {3.26370001, 12.4324598}, //
+
1687 {3.25553989, 12.4072304}, //
+
1688 {3.24745989, 12.3822403}, //
+
1689 {3.23947001, 12.3575096}, //
+
1690 {3.23154998, 12.3330297}, //
+
1691 {3.2307899, 12.3306599}, //
+
1692 {3.22943997, 12.3299398}, //
+
1693 {3.22790003, 12.3291502}, //
+
1694 {3.22642994, 12.3277197}, //
+
1695 {3.22504997, 12.3264599}, //
+
1696 {3.2237401, 12.3253698}, //
+
1697 {3.22252989, 12.3244495}, //
+
1698 {3.22139001, 12.3236904}, //
+
1699 {3.22034001, 12.3231096}, //
+
1700 {3.2193799, 12.32269}, //
+
1701 {3.2184999, 12.3224297}, //
+
1702 {3.2177, 12.3223495}, //
+
1703 {3.21090007, 12.2918501}, //
+
1704 {3.21319008, 12.2933102}, //
+
1705 {3.21550989, 12.2946796}, //
+
1706 {3.21788001, 12.2959805}, //
+
1707 {3.21991992, 12.2969999}, //
+
1708 {3.22373009, 12.3087902}, //
+
1709 {3.2307899, 12.3306599}, //
+
1710 {3.23107004, 12.3308096}, //
+
1711 {3.23277998, 12.3317699}, //
+
1712 {3.23457003, 12.3328104}, //
+
1713 {3.23644996, 12.3339396}, //
+
1714 {3.23841, 12.3351498}, //
+
1715 {3.24045992, 12.3364496}, //
+
1716 {3.24258995, 12.3378296}, //
+
1717 {3.24480009, 12.3393002}, //
+
1718 {3.24697995, 12.3407297}, //
+
1719 {3.24900007, 12.3419905}, //
+
1720 {3.25083995, 12.3430796}, //
+
1721 {3.25252008, 12.3439999}, //
+
1722 {3.25402999, 12.3447599}, //
+
1723 {3.25537992, 12.3453398}, //
+
1724 {3.25655007, 12.3457603}, //
+
1725 {3.25756001, 12.3460197}, //
+
1726 {3.25839996, 12.3460999}, //
+
1727 {3.25995994, 12.3452396}, //
+
1728 {3.26165009, 12.3441696}, //
+
1729 {3.26346993, 12.3428898}, //
+
1730 {3.26540995, 12.3414001}, //
+
1731 {3.26746988, 12.3396997}, //
+
1732 {3.26967001, 12.3377895}, //
+
1733 {3.27199006, 12.3356705}, //
+
1734 {3.27443004, 12.3333397}, //
+
1735 {3.27699995, 12.3308001}, //
+
1736 {3.27961993, 12.3281498}, //
+
1737 {3.2822001, 12.3254499}, //
+
1738 {3.28473997, 12.32271}, //
+
1739 {3.28724003, 12.3199301}, //
+
1740 {3.28970003, 12.3171101}, //
+
1741 {3.29210997, 12.3142405}, //
+
1742 {3.29448009, 12.3113403}, //
+
1743 {3.29680991, 12.3083897}, //
+
1744 {3.29909992, 12.3053999}, //
+
1745 {3.30298996, 12.30021}, //
+
1746 {3.3071301, 12.2951803}, //
+
1747 {3.31153011, 12.2903204}, //
+
1748 {3.31616998, 12.2856302}, //
+
1749 {3.32106996, 12.2811098}, //
+
1750 {3.32621002, 12.2767601}, //
+
1751 {3.33160996, 12.2725697}, //
+
1752 {3.33724999, 12.2685499}, //
+
1753 {3.3431499, 12.2646999}, //
+
1754 {3.34395003, 12.2639399}, //
+
1755 {3.34483004, 12.2631903}, //
+
1756 {3.34578991, 12.2624302}, //
+
1757 {3.3468399, 12.2616796}, //
+
1758 {3.34798002, 12.2609196}, //
+
1759 {3.34919, 12.26017}, //
+
1760 {3.35050011, 12.2594099}, //
+
1761 {3.35188007, 12.2586603}, //
+
1762 {3.35334992, 12.2579002}, //
+
1763 {3.35786009, 12.25632}, //
+
1764 {3.36237001, 12.2545605}, //
+
1765 {3.36688995, 12.2526398}, //
+
1766 {3.37140012, 12.2505503}, //
+
1767 {3.37592006, 12.2482901}, //
+
1768 {3.38044, 12.2458601}, //
+
1769 {3.38495994, 12.2432604}, //
+
1770 {3.38948011, 12.24049}, //
+
1771 {3.39400005, 12.2375498}, //
+
1772 {3.39843988, 12.2346201}, //
+
1773 {3.40270996, 12.2318602}, //
+
1774 {3.40681005, 12.22927}, //
+
1775 {3.41074991, 12.2268496}, //
+
1776 {3.41451001, 12.2245903}, //
+
1777 {3.41810989, 12.2225103}, //
+
1778 {3.42154002, 12.2205896}, //
+
1779 {3.42479992, 12.2188301}, //
+
1780 {3.42790008, 12.2172499}, //
+
1781 {3.42953992, 12.2156601}, //
+
1782 {3.43142009, 12.2138901}, //
+
1783 {3.43355989, 12.2119703}, //
+
1784 {3.43595004, 12.2098703}, //
+
1785 {3.43859005, 12.2076101}, //
+
1786 {3.44147992, 12.2051802}, //
+
1787 {3.44461989, 12.20259}, //
+
1788 {3.44800997, 12.1998301}, //
+
1789 {3.4516499, 12.1969004}, //
+
1790 {3.45684004, 12.1938896}, //
+
1791 {3.46186996, 12.1908798}, //
+
1792 {3.46673012, 12.1878595}, //
+
1793 {3.47142005, 12.1848497}, //
+
1794 {3.47593999, 12.1818304}, //
+
1795 {3.48028994, 12.1788101}, //
+
1796 {3.4844799, 12.1757898}, //
+
1797 {3.48850012, 12.1727695}, //
+
1798 {3.4923501, 12.1697502}, //
+
1799 {3.49594998, 12.1668596}, //
+
1800 {3.49920988, 12.1642303}, //
+
1801 {3.50214005, 12.1618404}, //
+
1802 {3.50474, 12.1597099}, //
+
1803 {3.50699997, 12.1578302}, //
+
1804 {3.50892997, 12.1561899}, //
+
1805 {3.51051998, 12.15481}, //
+
1806 {3.51178002, 12.1536798}, //
+
1807 {3.51270008, 12.1527996}, //
+
1808 {3.51270008, 12.1392498}, //
+
1809 {3.51272011, 12.1370096}, //
+
1810 {3.51277995, 12.13482}, //
+
1811 {3.5128901, 12.1326704}, //
+
1812 {3.51304007, 12.1305504}, //
+
1813 {3.51322007, 12.12848}, //
+
1814 {3.51345992, 12.1264496}, //
+
1815 {3.51373005, 12.1244602}, //
+
1816 {3.51403999, 12.12251}, //
+
1817 {3.51440001, 12.1205997}, //
+
1818 {3.51476002, 12.1187201}, //
+
1819 {3.51506996, 12.1168404}, //
+
1820 {3.51534009, 12.1149597}, //
+
1821 {3.51557994, 12.11308}, //
+
1822 {3.51575994, 12.1112003}, //
+
1823 {3.51590991, 12.1093102}, //
+
1824 {3.51602006, 12.1074305}, //
+
1825 {3.5160799, 12.1055403}, //
+
1826 {3.51609993, 12.1036501}, //
+
1827 {3.51609993, 12.0969105}, //
+
1828 {3.51493001, 12.0940199}, //
+
1829 {3.51448011, 12.0928898}, //
+
1830 {3.49915004, 12.0714502}, //
+
1831 {3.49915004, 12.0798998}, //
+
1832 {3.49917006, 12.0803204}, //
+
1833 {3.49922991, 12.0808201}, //
+
1834 {3.49933004, 12.0814104}, //
+
1835 {3.49948001, 12.0820799}, //
+
1836 {3.49966002, 12.08284}, //
+
1837 {3.49988008, 12.0836802}, //
+
1838 {3.50014997, 12.0846004}, //
+
1839 {3.5004499, 12.0856104}, //
+
1840 {3.50079989, 12.0867004}, //
+
1841 {3.50115991, 12.0878096}, //
+
1842 {3.50147009, 12.0888796}, //
+
1843 {3.50173998, 12.0899096}, //
+
1844 {3.50198007, 12.0908899}, //
+
1845 {3.50216007, 12.0918303}, //
+
1846 {3.50231004, 12.09272}, //
+
1847 {3.50241995, 12.0935698}, //
+
1848 {3.50248003, 12.0943804}, //
+
1849 {3.50250006, 12.09515}, //
+
1850 {3.50239992, 12.0988598}, //
+
1851 {3.50207996, 12.1024504}, //
+
1852 {3.50155997, 12.1059103}, //
+
1853 {3.50081992, 12.1092396}, //
+
1854 {3.49988008, 12.1124496}, //
+
1855 {3.49871993, 12.11553}, //
+
1856 {3.49735999, 12.1184797}, //
+
1857 {3.49577999, 12.1212997}, //
+
1858 {3.49399996, 12.1239996}, //
+
1859 {3.49205995, 12.1266499}, //
+
1860 {3.48999, 12.1293497}, //
+
1861 {3.48779988, 12.1320896}, //
+
1862 {3.48548007, 12.1348696}, //
+
1863 {3.48304009, 12.1376896}, //
+
1864 {3.48046994, 12.1405602}, //
+
1865 {3.47777009, 12.1434603}, //
+
1866 {3.47495008, 12.14641}, //
+
1867 {3.47199988, 12.1493998}, //
+
1868 {3.46895003, 12.1517096}, //
+
1869 {3.46581006, 12.1541004}, //
+
1870 {3.46258998, 12.1565704}, //
+
1871 {3.45928001, 12.1591301}, //
+
1872 {3.45589995, 12.1617699}, //
+
1873 {3.45242, 12.1644897}, //
+
1874 {3.44886994, 12.1672897}, //
+
1875 {3.44521999, 12.1701803}, //
+
1876 {3.44149995, 12.1731501}, //
+
1877 {3.4207201, 12.1939297}, //
+
1878 {3.41774988, 12.1969004}, //
+
1879 {3.41623998, 12.1983604}, //
+
1880 {3.41473007, 12.1997299}, //
+
1881 {3.41321993, 12.2010298}, //
+
1882 {3.41172004, 12.20224}, //
+
1883 {3.41020989, 12.2033701}, //
+
1884 {3.40871, 12.2044096}, //
+
1885 {3.4072001, 12.2053699}, //
+
1886 {3.40569997, 12.2062502}, //
+
1887 {3.40420008, 12.2070503}, //
+
1888 {3.39933991, 12.2130404}, //
+
1889 {3.39382005, 12.2189503}, //
+
1890 {3.38761997, 12.2247696}, //
+
1891 {3.38075995, 12.2305002}, //
+
1892 {3.37321997, 12.2361498}, //
+
1893 {3.36502004, 12.2417202}, //
+
1894 {3.35614991, 12.2472}, //
+
1895 {3.34661007, 12.2525902}, //
+
1896 {3.33640003, 12.2579002}, //
+
1897 {3.33195996, 12.2601204}, //
+
1898 {3.32768989, 12.26227}, //
+
1899 {3.32358003, 12.2643204}, //
+
1900 {3.31963992, 12.2663002}, //
+
1901 {3.31587005, 12.2681799}, //
+
1902 {3.31226993, 12.26999}, //
+
1903 {3.30883002, 12.2717104}, //
+
1904 {3.30556011, 12.2733498}, //
+
1905 {3.30244994, 12.2749004}, //
+
1906 {3.29601002, 12.2771997}, //
+
1907 {3.29023004, 12.2795801}, //
+
1908 {3.28513002, 12.2820396}, //
+
1909 {3.28068995, 12.2845898}, //
+
1910 {3.27693009, 12.2872295}, //
+
1911 {3.27382994, 12.2899399}, //
+
1912 {3.27139997, 12.2927504}, //
+
1913 {3.26963997, 12.2956305}, //
+
1914 {3.26854992, 12.2986002}, //
+
1915 {3.26770997, 12.3000298}, //
+
1916 {3.26671004, 12.3012896}, //
+
1917 {3.26553011, 12.3023796}, //
+
1918 {3.26418996, 12.3032999}, //
+
1919 {3.26269007, 12.30406}, //
+
1920 {3.26101995, 12.3046398}, //
+
1921 {3.25918007, 12.3050604}, //
+
1922 {3.25716996, 12.3053198}, //
+
1923 {3.25500011, 12.3053999}, //
+
1924 {3.25272012, 12.3053598}, //
+
1925 {3.25040007, 12.3052301}, //
+
1926 {3.24803996, 12.3050203}, //
+
1927 {3.24563003, 12.3047304}, //
+
1928 {3.24318004, 12.3043499}, //
+
1929 {3.24068999, 12.3038902}, //
+
1930 {3.23814988, 12.30334}, //
+
1931 {3.23556995, 12.3027096}, //
+
1932 {3.23294997, 12.302}, //
+
1933 {3.23034, 12.3011999}, //
+
1934 {3.22776008, 12.3003197}, //
+
1935 {3.22522998, 12.2993603}, //
+
1936 {3.22273993, 12.2983198}, //
+
1937 {3.22028995, 12.2971897}, //
+
1938 {3.21991992, 12.2969999}, //
+
1939 {3.21598005, 12.2848101}, //
+
1940 {3.20832992, 12.2610798}, //
+
1941 {3.20075011, 12.2376003}, //
+
1942 {3.19325995, 12.2180004}, //
+
1943 {3.18584991, 12.1983995}, //
+
1944 {3.17852998, 12.1788101}, //
+
1945 {3.17128992, 12.1592102}, //
+
1946 {3.16412997, 12.1396198}, //
+
1947 {3.15705991, 12.1200199}, //
+
1948 {3.15006995, 12.1004295}, //
+
1949 {3.14317012, 12.0808401}, //
+
1950 {3.13634992, 12.0612497}, //
+
1951 {3.12852001, 12.0334501}, //
+
1952 {3.12160993, 12.0073299}, //
+
1953 {3.11562991, 11.9828892}, //
+
1954 {3.11055994, 11.9601192}, //
+
1955 {3.10737991, 11.9439287}, //
+
1956 {3.10579991, 11.9392004}, //
+
1957 {3.10585999, 11.9391794}, //
+
1958 {3.10641003, 11.9389963}, //
+
1959 {3.10318995, 11.9196062}, //
+
1960 {3.10088992, 11.9018621}, //
+
1961 {3.09963012, 11.8871593}, //
+
1962 {3.09978008, 11.8868389}, //
+
1963 {3.10004997, 11.8862934}, //
+
1964 {3.1003499, 11.885664}, //
+
1965 {3.1006999, 11.8849497}, //
+
1966 {3.10409999, 11.87815}, //
+
1967 {3.10454011, 11.8774052}, //
+
1968 {3.10510993, 11.8766594}, //
+
1969 {3.10579991, 11.8759108}, //
+
1970 {3.10662007, 11.8751621}, //
+
1971 {3.10755992, 11.8744116}, //
+
1972 {3.10862994, 11.873661}, //
+
1973 {3.1098299, 11.8729086}, //
+
1974 {3.11115003, 11.8721552}, //
+
1975 {3.11260009, 11.8713999}, //
+
1976 {3.11473989, 11.8697643}, //
+
1977 {3.11812997, 11.867877}, //
+
1978 {3.12278008, 11.8657389}, //
+
1979 {3.12867999, 11.8633509}, //
+
1980 {3.13582993, 11.8607121}, //
+
1981 {3.1442399, 11.8578224}, //
+
1982 {3.15390992, 11.854682}, //
+
1983 {3.16482997, 11.8512907}, //
+
1984 {3.17700005, 11.8476496}, //
+
1985 {3.17991996, 11.8469152}, //
+
1986 {3.18262005, 11.8462229}, //
+
1987 {3.18512011, 11.8455725}, //
+
1988 {3.1874001, 11.844964}, //
+
1989 {3.18947005, 11.8443966}, //
+
1990 {3.19132996, 11.8438721}, //
+
1991 {3.19298005, 11.8433905}, //
+
1992 {3.1944201, 11.8429489}, //
+
1993 {3.1956501, 11.8425503}, //
+
1994 {3.19671988, 11.8421831}, //
+
1995 {3.19765997, 11.841814}, //
+
1996 {3.19847989, 11.841444}, //
+
1997 {3.19917989, 11.841073}, //
+
1998 {3.19973993, 11.8407011}, //
+
1999 {3.20018005, 11.8403282}, //
+
2000 {3.20050001, 11.8399534}, //
+
2001 {3.20069003, 11.8395767}, //
+
2002 {3.20075011, 11.8392}, //
+
2003 {3.20069003, 11.8388433}, //
+
2004 {3.20050001, 11.8385277}, //
+
2005 {3.20018005, 11.8382559}, //
+
2006 {3.19973993, 11.8380251}, //
+
2007 {3.19917989, 11.8378363}, //
+
2008 {3.19847989, 11.8376894}, //
+
2009 {3.19765997, 11.8375835}, //
+
2010 {3.19671988, 11.8375206}, //
+
2011 {3.1956501, 11.8374996}, //
+
2012 {3.18720007, 11.8374996}, //
+
2013 {3.18643999, 11.8374577}, //
+
2014 {3.18568993, 11.8373318}, //
+
2015 {3.18493009, 11.837122}, //
+
2016 {3.18418002, 11.8368282}, //
+
2017 {3.18341994, 11.8364506}, //
+
2018 {3.18267012, 11.835989}, //
+
2019 {3.18191004, 11.8354425}, //
+
2020 {3.18115997, 11.8348141}, //
+
2021 {3.18039989, 11.8340998}, //
+
2022 {3.17951989, 11.8341417}, //
+
2023 {3.17839003, 11.8342676}, //
+
2024 {3.17701006, 11.8344784}, //
+
2025 {3.17536998, 11.8347721}, //
+
2026 {3.17349005, 11.8351488}, //
+
2027 {3.17136002, 11.8356113}, //
+
2028 {3.16897011, 11.8361568}, //
+
2029 {3.16634011, 11.8367863}, //
+
2030 {3.16345, 11.8374996}, //
+
2031 {3.16043997, 11.8382549}, //
+
2032 {3.15742993, 11.8390093}, //
+
2033 {3.15440989, 11.8397608}, //
+
2034 {3.15140009, 11.8405123}, //
+
2035 {3.14838004, 11.8412619}, //
+
2036 {3.14535999, 11.8420115}, //
+
2037 {3.14233994, 11.8427591}, //
+
2038 {3.1393199, 11.8435049}, //
+
2039 {3.13630009, 11.8442497}, //
+
2040 {3.13340998, 11.845006}, //
+
2041 {3.13077998, 11.8457613}, //
+
2042 {3.12840009, 11.8465166}, //
+
2043 {3.12627006, 11.8472719}, //
+
2044 {3.12438989, 11.8480282}, //
+
2045 {3.12277007, 11.8487825}, //
+
2046 {3.1213901, 11.8495388}, //
+
2047 {3.12027001, 11.8502941}, //
+
2048 {3.11940002, 11.8510504}, //
+
2049 {3.11973, 11.8500433}, //
+
2050 {3.12013006, 11.8487825}, //
+
2051 {3.12069988, 11.8470201}, //
+
2052 {3.12104988, 11.8459501}, //
+
2053 {3.12149, 11.8448267}, //
+
2054 {3.12206006, 11.8437033}, //
+
2055 {3.12275004, 11.8425779}, //
+
2056 {3.12356997, 11.8414507}, //
+
2057 {3.12451005, 11.8403234}, //
+
2058 {3.12558007, 11.8391943}, //
+
2059 {3.12678003, 11.8380642}, //
+
2060 {3.12809992, 11.8369331}, //
+
2061 {3.12954998, 11.8358002}, //
+
2062 {3.13105989, 11.8346672}, //
+
2063 {3.13257003, 11.8335333}, //
+
2064 {3.13407993, 11.8324003}, //
+
2065 {3.13558006, 11.8312674}, //
+
2066 {3.13708997, 11.8301334}, //
+
2067 {3.1385901, 11.8290005}, //
+
2068 {3.1401, 11.8278666}, //
+
2069 {3.14159989, 11.8267326}, //
+
2070 {3.14310002, 11.8255997}, //
+
2071 {3.14457011, 11.8245401}, //
+
2072 {3.14595008, 11.8236046}, //
+
2073 {3.14725995, 11.822794}, //
+
2074 {3.14846992, 11.8221092}, //
+
2075 {3.14961004, 11.8215485}, //
+
2076 {3.15066004, 11.8211107}, //
+
2077 {3.15161991, 11.8207989}, //
+
2078 {3.15249991, 11.820612}, //
+
2079 {3.15330005, 11.82055}, //
+
2080 {3.20075011, 11.82055}, //
+
2081 {3.2030499, 11.820591}, //
+
2082 {3.20543003, 11.820715}, //
+
2083 {3.20790005, 11.8209219}, //
+
2084 {3.21044993, 11.8212118}, //
+
2085 {3.21308994, 11.8215837}, //
+
2086 {3.21582007, 11.8220387}, //
+
2087 {3.21863008, 11.8225775}, //
+
2088 {3.22151995, 11.8231974}, //
+
2089 {3.22449994, 11.8239002}, //
+
2090 {3.23635006, 11.8239002}, //
+
2091 {3.23744011, 11.8238792}, //
+
2092 {3.23845005, 11.8238163}, //
+
2093 {3.23937011, 11.8237114}, //
+
2094 {3.24021006, 11.8235636}, //
+
2095 {3.2409699, 11.8233747}, //
+
2096 {3.24164009, 11.823144}, //
+
2097 {3.24222994, 11.8228722}, //
+
2098 {3.2427299, 11.8225574}, //
+
2099 {3.24315, 11.8221998}, //
+
2100 {3.24355006, 11.8218536}, //
+
2101 {3.24398994, 11.8215485}, //
+
2102 {3.24446988, 11.8212833}, //
+
2103 {3.24499011, 11.8210592}, //
+
2104 {3.24554992, 11.8208761}, //
+
2105 {3.24615002, 11.8207331}, //
+
2106 {3.24678993, 11.820631}, //
+
2107 {3.24747992, 11.82057}, //
+
2108 {3.24819994, 11.82055}, //
+
2109 {3.24896002, 11.8198357}, //
+
2110 {3.24971008, 11.8192072}, //
+
2111 {3.25046992, 11.8186607}, //
+
2112 {3.25121999, 11.8181992}, //
+
2113 {3.25198007, 11.8178225}, //
+
2114 {3.25272989, 11.8175278}, //
+
2115 {3.25348997, 11.817318}, //
+
2116 {3.25424004, 11.8171921}, //
+
2117 {3.25500011, 11.8171501}, //
+
2118 {3.25728011, 11.8164358}, //
+
2119 {3.25959992, 11.8158073}, //
+
2120 {3.26196003, 11.8152609}, //
+
2121 {3.26435995, 11.8147993}, //
+
2122 {3.26679993, 11.8144217}, //
+
2123 {3.26928997, 11.8141279}, //
+
2124 {3.27182007, 11.8139181}, //
+
2125 {3.27438998, 11.8137922}, //
+
2126 {3.27699995, 11.8137503}, //
+
2127 {3.27965999, 11.8138342}, //
+
2128 {3.28237009, 11.814086}, //
+
2129 {3.28512001, 11.8145056}, //
+
2130 {3.28789997, 11.815093}, //
+
2131 {3.29073, 11.8158493}, //
+
2132 {3.29360008, 11.8167725}, //
+
2133 {3.29650998, 11.8178644}, //
+
2134 {3.29945993, 11.8191233}, //
+
2135 {3.30244994, 11.82055}, //
+
2136 {3.30538988, 11.8212738}, //
+
2137 {3.30816007, 11.8219566}, //
+
2138 {3.31076002, 11.8226004}, //
+
2139 {3.31318998, 11.8232021}, //
+
2140 {3.31544995, 11.8237629}, //
+
2141 {3.31753993, 11.8242826}, //
+
2142 {3.31945992, 11.8247633}, //
+
2143 {3.32121992, 11.825202}, //
+
2144 {3.32279992, 11.8255997}, //
+
2145 {3.32435012, 11.8259573}, //
+
2146 {3.32598996, 11.826272}, //
+
2147 {3.32770991, 11.8265438}, //
+
2148 {3.32950997, 11.8267746}, //
+
2149 {3.3313899, 11.8269644}, //
+
2150 {3.33335996, 11.8271112}, //
+
2151 {3.3354001, 11.8272161}, //
+
2152 {3.33753991, 11.8272791}, //
+
2153 {3.33975005, 11.8273001}, //
+
2154 {3.34050989, 11.8272791}, //
+
2155 {3.34125996, 11.8272161}, //
+
2156 {3.34202003, 11.8271112}, //
+
2157 {3.3427701, 11.8269644}, //
+
2158 {3.34352994, 11.8267746}, //
+
2159 {3.34428, 11.8265438}, //
+
2160 {3.34504008, 11.826272}, //
+
2161 {3.34578991, 11.8259573}, //
+
2162 {3.34654999, 11.8255997}, //
+
2163 {3.34730005, 11.825201}, //
+
2164 {3.34805989, 11.8247604}, //
+
2165 {3.34880996, 11.8242779}, //
+
2166 {3.34956002, 11.8237534}, //
+
2167 {3.35031009, 11.8231859}, //
+
2168 {3.35105991, 11.8225784}, //
+
2169 {3.35180998, 11.8219271}, //
+
2170 {3.35255003, 11.8212347}, //
+
2171 {3.35330009, 11.8205004}, //
+
2172 {3.35401011, 11.8197756}, //
+
2173 {3.35464001, 11.8190928}, //
+
2174 {3.35519004, 11.81845}, //
+
2175 {3.35564995, 11.8178482}, //
+
2176 {3.35602999, 11.8172874}, //
+
2177 {3.3563199, 11.8167667}, //
+
2178 {3.35652995, 11.816287}, //
+
2179 {3.35665989, 11.8158484}, //
+
2180 {3.35669994, 11.8154497}, //
+
2181 {3.35669994, 11.8137503}, //
+
2182 {3.3566401, 11.8137293}, //
+
2183 {3.35645008, 11.8136663}, //
+
2184 {3.35612988, 11.8135614}, //
+
2185 {3.35569, 11.8134136}, //
+
2186 {3.35512996, 11.8132248}, //
+
2187 {3.35442996, 11.812994}, //
+
2188 {3.35361004, 11.8127222}, //
+
2189 {3.35266995, 11.8124065}, //
+
2190 {3.35159993, 11.8120499}, //
+
2191 {3.35046005, 11.8116722}, //
+
2192 {3.34927011, 11.8112936}, //
+
2193 {3.3480401, 11.8109169}, //
+
2194 {3.34677005, 11.8105392}, //
+
2195 {3.34544992, 11.8101606}, //
+
2196 {3.34408998, 11.809783}, //
+
2197 {3.34268999, 11.8094063}, //
+
2198 {3.34123993, 11.8090277}, //
+
2199 {3.33975005, 11.80865}, //
+
2200 {3.33824992, 11.8082523}, //
+
2201 {3.33675003, 11.8078127}, //
+
2202 {3.33523989, 11.807333}, //
+
2203 {3.33374, 11.8068132}, //
+
2204 {3.33223009, 11.8062515}, //
+
2205 {3.33072996, 11.8056498}, //
+
2206 {3.32922006, 11.805007}, //
+
2207 {3.32770991, 11.8043242}, //
+
2208 {3.32620001, 11.8036003}, //
+
2209 {3.32455993, 11.8021307}, //
+
2210 {3.32268, 11.800746}, //
+
2211 {3.32053995, 11.7994442}, //
+
2212 {3.31815004, 11.7982273}, //
+
2213 {3.31551003, 11.7970943}, //
+
2214 {3.31261992, 11.7960443}, //
+
2215 {3.30947995, 11.7950792}, //
+
2216 {3.30609012, 11.794198}, //
+
2217 {3.30244994, 11.7933998}, //
+
2218 {3.29868007, 11.7926865}, //
+
2219 {3.29491997, 11.792057}, //
+
2220 {3.29115009, 11.7915106}, //
+
2221 {3.28737998, 11.791049}, //
+
2222 {3.28362012, 11.7906723}, //
+
2223 {3.27985001, 11.7903776}, //
+
2224 {3.27607989, 11.7901678}, //
+
2225 {3.27232003, 11.7900419}, //
+
2226 {3.26854992, 11.79}, //
+
2227 {3.26486993, 11.7907562}, //
+
2228 {3.26134992, 11.7915106}, //
+
2229 {3.25800991, 11.7922668}, //
+
2230 {3.25482988, 11.7930222}, //
+
2231 {3.25182009, 11.7937784}, //
+
2232 {3.24897003, 11.7945328}, //
+
2233 {3.24629998, 11.795289}, //
+
2234 {3.24378991, 11.7960443}, //
+
2235 {3.24145007, 11.7967997}, //
+
2236 {3.23918009, 11.7988892}, //
+
2237 {3.23692012, 11.8006439}, //
+
2238 {3.23465991, 11.8020668}, //
+
2239 {3.23238993, 11.8031559}, //
+
2240 {3.23012996, 11.8039112}, //
+
2241 {3.22786999, 11.8043327}, //
+
2242 {3.22561002, 11.8044224}, //
+
2243 {3.22336006, 11.8041782}, //
+
2244 {3.22110009, 11.8036003}, //
+
2245 {3.2177, 11.8036003}, //
+
2246 {3.21546006, 11.8035583}, //
+
2247 {3.21326995, 11.8034325}, //
+
2248 {3.21111989, 11.8032217}, //
+
2249 {3.20900011, 11.802928}, //
+
2250 {3.20692992, 11.8025513}, //
+
2251 {3.20490003, 11.8020887}, //
+
2252 {3.20290995, 11.8015432}, //
+
2253 {3.20095992, 11.8009138}, //
+
2254 {3.19904995, 11.8002005}, //
+
2255 {3.19710994, 11.7995701}, //
+
2256 {3.19503999, 11.7991934}, //
+
2257 {3.1928401, 11.7990665}, //
+
2258 {3.19052005, 11.7991934}, //
+
2259 {3.18807006, 11.7995701}, //
+
2260 {3.18548989, 11.8002005}, //
+
2261 {3.18279004, 11.8010807}, //
+
2262 {3.17996001, 11.8022146}, //
+
2263 {3.17700005, 11.8036003}, //
+
2264 {3.17553997, 11.8036203}, //
+
2265 {3.17417002, 11.8036814}, //
+
2266 {3.17286992, 11.8037834}, //
+
2267 {3.17165995, 11.8039265}, //
+
2268 {3.17053008, 11.8041086}, //
+
2269 {3.1694901, 11.8043327}, //
+
2270 {3.16852999, 11.8045979}, //
+
2271 {3.16764998, 11.804904}, //
+
2272 {3.16685009, 11.8052502}, //
+
2273 {3.16609001, 11.8056488}, //
+
2274 {3.16533995, 11.8060904}, //
+
2275 {3.16458011, 11.806572}, //
+
2276 {3.16383004, 11.8070974}, //
+
2277 {3.16306996, 11.8076639}, //
+
2278 {3.1623199, 11.8082724}, //
+
2279 {3.16156006, 11.8089228}, //
+
2280 {3.16080999, 11.8096151}, //
+
2281 {3.16004992, 11.8103504}, //
+
2282 {3.1600101, 11.8110638}, //
+
2283 {3.15987992, 11.8116932}, //
+
2284 {3.15967011, 11.8122387}, //
+
2285 {3.15937996, 11.8127012}, //
+
2286 {3.15899992, 11.8130779}, //
+
2287 {3.15854001, 11.8133717}, //
+
2288 {3.15798998, 11.8135824}, //
+
2289 {3.15736008, 11.8137083}, //
+
2290 {3.15665007, 11.8137503}, //
+
2291 {3.14989996, 11.8137503}, //
+
2292 {3.14765, 11.8137922}, //
+
2293 {3.14545012, 11.8139181}, //
+
2294 {3.14329004, 11.8141279}, //
+
2295 {3.14117002, 11.8144217}, //
+
2296 {3.13909006, 11.8147993}, //
+
2297 {3.13705993, 11.8152609}, //
+
2298 {3.13506007, 11.8158073}, //
+
2299 {3.13311005, 11.8164358}, //
+
2300 {3.13120008, 11.8171501}, //
+
2301 {3.12922001, 11.8179893}, //
+
2302 {3.12701988, 11.8189936}, //
+
2303 {3.12461996, 11.8201666}, //
+
2304 {3.12200999, 11.8215055}, //
+
2305 {3.11918998, 11.8230114}, //
+
2306 {3.11615992, 11.8246832}, //
+
2307 {3.11291003, 11.8265219}, //
+
2308 {3.10946012, 11.8285284}, //
+
2309 {3.10579991, 11.8306999}, //
+
2310 {3.10562992, 11.8308678}, //
+
2311 {3.10474992, 11.831749}, //
+
2312 {3.10373998, 11.832757}, //
+
2313 {3.10240006, 11.8340998}, //
+
2314 {3.0990901, 11.8374577}, //
+
2315 {3.09905005, 11.8374996}, //
+
2316 {3.09905005, 11.8409004}, //
+
2317 {3.10240006, 11.8409004}, //
+
2318 {3.10240006, 11.8628998}, //
+
2319 {3.10238004, 11.8647881}, //
+
2320 {3.10231996, 11.8666754}, //
+
2321 {3.10221004, 11.8685608}, //
+
2322 {3.10206008, 11.8704462}, //
+
2323 {3.10188007, 11.8723288}, //
+
2324 {3.10163999, 11.8742113}, //
+
2325 {3.1013701, 11.876092}, //
+
2326 {3.10105991, 11.8779716}, //
+
2327 {3.1006999, 11.8798504}, //
+
2328 {3.1003499, 11.8816338}, //
+
2329 {3.09978008, 11.884572}, //
+
2330 {3.09951997, 11.8859205}, //
+
2331 {3.09963012, 11.8871593}, //
+
2332 {3.09907007, 11.8883076}, //
+
2333 {3.09905005, 11.8883495}, //
+
2334 {3.09938002, 11.8866711}, //
+
2335 {3.09951997, 11.8859205}, //
+
2336 {3.09950995, 11.8857927}, //
+
2337 {3.09905005, 11.8713999}, //
+
2338 {3.09896994, 11.8654509}, //
+
2339 {3.09871006, 11.8596687}, //
+
2340 {3.09828997, 11.8540564}, //
+
2341 {3.09770989, 11.8486099}, //
+
2342 {3.09695005, 11.8433323}, //
+
2343 {3.09603, 11.8382215}, //
+
2344 {3.09493995, 11.8332796}, //
+
2345 {3.0936799, 11.8285065}, //
+
2346 {3.09225011, 11.8239002}, //
+
2347 {3.09140992, 11.8191786}, //
+
2348 {3.09039998, 11.8140383}, //
+
2349 {3.08923006, 11.8084784}, //
+
2350 {3.0878799, 11.8024979}, //
+
2351 {3.08636999, 11.7960978}, //
+
2352 {3.08469009, 11.789278}, //
+
2353 {3.08284998, 11.7820377}, //
+
2354 {3.0808301, 11.7743788}, //
+
2355 {3.07865, 11.7663002}, //
+
2356 {3.07639003, 11.7580109}, //
+
2357 {3.07414007, 11.7497215}, //
+
2358 {3.0718801, 11.7414331}, //
+
2359 {3.06961989, 11.7331438}, //
+
2360 {3.06735992, 11.7248564}, //
+
2361 {3.06508994, 11.716567}, //
+
2362 {3.06057, 11.6999893}, //
+
2363 {3.05830002, 11.6917}, //
+
2364 {3.05609012, 11.6836624}, //
+
2365 {3.05396008, 11.6761274}, //
+
2366 {3.05190992, 11.6690941}, //
+
2367 {3.04994988, 11.6625643}, //
+
2368 {3.04806995, 11.6565361}, //
+
2369 {3.04627991, 11.6510115}, //
+
2370 {3.04456997, 11.6459885}, //
+
2371 {3.0429399, 11.641468}, //
+
2372 {3.04139996, 11.6374502}, //
+
2373 {3.03865004, 11.6289749}, //
+
2374 {3.03494, 11.6186152}, //
+
2375 {3.0302701, 11.6063719}, //
+
2376 {3.02464008, 11.5922451}, //
+
2377 {3.01804996, 11.5762339}, //
+
2378 {3.01048994, 11.5583391}, //
+
2379 {3.00197005, 11.5385599}, //
+
2380 {2.99249005, 11.5168972}, //
+
2381 {2.98204994, 11.49335}, //
+
2382 {2.97097993, 11.4686728}, //
+
2383 {2.96920991, 11.4647694}, //
+
2384 {2.96887994, 11.4646893}, //
+
2385 {2.96823001, 11.4645844}, //
+
2386 {2.96753001, 11.4645214}, //
+
2387 {2.96679997, 11.4645004}, //
+
2388 {2.96634007, 11.4631252}, //
+
2389 {2.96645999, 11.4620008}, //
+
2390 {2.96717, 11.4611282}, //
+
2391 {2.96748996, 11.4609747}, //
+
2392 {2.95962, 11.4436188}, //
+
2393 {2.9479599, 11.418189}, //
+
2394 {2.93600988, 11.3923817}, //
+
2395 {2.92376995, 11.3661985}, //
+
2396 {2.91123009, 11.3396387}, //
+
2397 {2.89840007, 11.3127022}, //
+
2398 {2.88527012, 11.2853899}, //
+
2399 {2.87185001, 11.2577}, //
+
2400 {2.86458993, 11.2437344}, //
+
2401 {2.8578701, 11.2304802}, //
+
2402 {2.85362005, 11.2218418}, //
+
2403 {2.85429001, 11.2216587}, //
+
2404 {2.85616994, 11.2210932}, //
+
2405 {2.85829997, 11.2203999}, //
+
2406 {2.85988998, 11.2188473}, //
+
2407 {2.86166, 11.2172098}, //
+
2408 {2.86357999, 11.2154894}, //
+
2409 {2.86567998, 11.2136841}, //
+
2410 {2.86793995, 11.2117949}, //
+
2411 {2.87036991, 11.2098217}, //
+
2412 {2.87296009, 11.2077646}, //
+
2413 {2.87572002, 11.2056246}, //
+
2414 {2.87864995, 11.2033997}, //
+
2415 {2.88170004, 11.2012701}, //
+
2416 {2.88484001, 11.1993904}, //
+
2417 {2.88806009, 11.1977606}, //
+
2418 {2.89137006, 11.1963835}, //
+
2419 {2.89475012, 11.1952553}, //
+
2420 {2.89823008, 11.1943779}, //
+
2421 {2.90177989, 11.1937513}, //
+
2422 {2.90543008, 11.1933746}, //
+
2423 {2.90914989, 11.1932497}, //
+
2424 {2.91145992, 11.1946774}, //
+
2425 {2.91385007, 11.1959362}, //
+
2426 {2.91632009, 11.1970282}, //
+
2427 {2.91887999, 11.1979513}, //
+
2428 {2.92151999, 11.1987066}, //
+
2429 {2.92424011, 11.1992941}, //
+
2430 {2.9270401, 11.1997137}, //
+
2431 {2.92992997, 11.1999664}, //
+
2432 {2.93289995, 11.2000504}, //
+
2433 {2.93951011, 11.2007217}, //
+
2434 {2.94579005, 11.2012253}, //
+
2435 {2.95173001, 11.201561}, //
+
2436 {2.95732999, 11.2017288}, //
+
2437 {2.96261001, 11.2017288}, //
+
2438 {2.96754003, 11.201561}, //
+
2439 {2.97215009, 11.2012253}, //
+
2440 {2.97641993, 11.2007217}, //
+
2441 {2.98035002, 11.2000504}, //
+
2442 {2.98262, 11.1985807}, //
+
2443 {2.98487997, 11.197196}, //
+
2444 {2.98713994, 11.1958942}, //
+
2445 {2.98940992, 11.1946774}, //
+
2446 {2.99166989, 11.1935444}, //
+
2447 {2.9939301, 11.1924944}, //
+
2448 {2.99619007, 11.1915293}, //
+
2449 {2.99844003, 11.1906481}, //
+
2450 {3.0007, 11.1898499}, //
+
2451 {3.00296998, 11.189147}, //
+
2452 {3.00522995, 11.1885271}, //
+
2453 {3.00748992, 11.1879892}, //
+
2454 {3.0097599, 11.1875343}, //
+
2455 {3.01202011, 11.1871624}, //
+
2456 {3.01428008, 11.1868715}, //
+
2457 {3.01654005, 11.1866646}, //
+
2458 {3.01879001, 11.1865406}, //
+
2459 {3.02104998, 11.1864996}, //
+
2460 {3.03119993, 11.1864996}, //
+
2461 {3.03269005, 11.1857862}, //
+
2462 {3.03414011, 11.1851568}, //
+
2463 {3.0355401, 11.1846113}, //
+
2464 {3.03690004, 11.1841488}, //
+
2465 {3.03821993, 11.1837721}, //
+
2466 {3.03948998, 11.1834784}, //
+
2467 {3.04071999, 11.1832676}, //
+
2468 {3.04190993, 11.1831417}, //
+
2469 {3.04305005, 11.1830997}, //
+
2470 {3.04419994, 11.1831417}, //
+
2471 {3.0453999, 11.1832676}, //
+
2472 {3.04663992, 11.1834784}, //
+
2473 {3.04791999, 11.1837721}, //
+
2474 {3.04924011, 11.1841488}, //
+
2475 {3.05061007, 11.1846113}, //
+
2476 {3.05201006, 11.1851568}, //
+
2477 {3.05345988, 11.1857862}, //
+
2478 {3.05495, 11.1864996}, //
+
2479 {3.06515002, 11.1864996}, //
+
2480 {3.0666101, 11.1872139}, //
+
2481 {3.06798005, 11.1878433}, //
+
2482 {3.06927991, 11.1883888}, //
+
2483 {3.07048988, 11.1888514}, //
+
2484 {3.07161999, 11.1892281}, //
+
2485 {3.07265997, 11.1895218}, //
+
2486 {3.07362008, 11.1897316}, //
+
2487 {3.07450008, 11.1898584}, //
+
2488 {3.07529998, 11.1899004}, //
+
2489 {3.08375001, 11.1899004}, //
+
2490 {3.08411002, 11.1898584}, //
+
2491 {3.08441997, 11.1897316}, //
+
2492 {3.08469009, 11.1895218}, //
+
2493 {3.08492994, 11.1892281}, //
+
2494 {3.08510995, 11.1888514}, //
+
2495 {3.08525991, 11.1883888}, //
+
2496 {3.08537006, 11.1878433}, //
+
2497 {3.08542991, 11.1872139}, //
+
2498 {3.08544993, 11.1864996}, //
+
2499 {3.08544993, 11.1830997}, //
+
2500 {3.08542991, 11.1823864}, //
+
2501 {3.08537006, 11.181757}, //
+
2502 {3.08525991, 11.1812115}, //
+
2503 {3.08510995, 11.1807489}, //
+
2504 {3.08492994, 11.1803722}, //
+
2505 {3.08469009, 11.1800776}, //
+
2506 {3.08441997, 11.1798677}, //
+
2507 {3.08411002, 11.1797419}, //
+
2508 {3.08375001, 11.1796999}, //
+
2509 {3.08337998, 11.1796789}, //
+
2510 {3.08300996, 11.179616}, //
+
2511 {3.08263993, 11.1795111}, //
+
2512 {3.08226991, 11.1793642}, //
+
2513 {3.08189988, 11.1791754}, //
+
2514 {3.08153009, 11.1789436}, //
+
2515 {3.08115005, 11.1786718}, //
+
2516 {3.08078003, 11.1783571}, //
+
2517 {3.08039999, 11.1780005}, //
+
2518 {3.07999992, 11.1776009}, //
+
2519 {3.07956004, 11.1771603}, //
+
2520 {3.0790801, 11.1766777}, //
+
2521 {3.07799006, 11.1755857}, //
+
2522 {3.07737994, 11.1749783}, //
+
2523 {3.07529998, 11.1729002}, //
+
2524 {3.07456994, 11.1728792}, //
+
2525 {3.07386994, 11.1728163}, //
+
2526 {3.07322001, 11.1727114}, //
+
2527 {3.0726099, 11.1725636}, //
+
2528 {3.07205009, 11.1723747}, //
+
2529 {3.07152009, 11.1721439}, //
+
2530 {3.07103992, 11.1718721}, //
+
2531 {3.07060003, 11.1715574}, //
+
2532 {3.07019997, 11.1711998}, //
+
2533 {3.06983995, 11.1708117}, //
+
2534 {3.06953001, 11.1703796}, //
+
2535 {3.06925988, 11.1699057}, //
+
2536 {3.06902003, 11.1693878}, //
+
2537 {3.06884003, 11.1688271}, //
+
2538 {3.06869006, 11.1682224}, //
+
2539 {3.06857991, 11.1675749}, //
+
2540 {3.06852007, 11.1668844}, //
+
2541 {3.06850004, 11.1661501}, //
+
2542 {3.06774998, 11.1654148}, //
+
2543 {3.06700993, 11.1647234}, //
+
2544 {3.0662601, 11.164072}, //
+
2545 {3.06551003, 11.1634636}, //
+
2546 {3.06475997, 11.1628971}, //
+
2547 {3.0640099, 11.1623716}, //
+
2548 {3.06326008, 11.16189}, //
+
2549 {3.0625, 11.1614494}, //
+
2550 {3.06174994, 11.1610498}, //
+
2551 {3.06095004, 11.1606932}, //
+
2552 {3.06007004, 11.1603785}, //
+
2553 {3.05910993, 11.1601057}, //
+
2554 {3.05805993, 11.1598749}, //
+
2555 {3.05692005, 11.1596861}, //
+
2556 {3.05571008, 11.1595392}, //
+
2557 {3.05439997, 11.1594343}, //
+
2558 {3.05302, 11.1593714}, //
+
2559 {3.05154991, 11.1593504}, //
+
2560 {3.04996991, 11.1593924}, //
+
2561 {3.04820991, 11.1595182}, //
+
2562 {3.04628992, 11.1597281}, //
+
2563 {3.04419994, 11.1600218}, //
+
2564 {3.04193997, 11.1603994}, //
+
2565 {3.03951001, 11.160861}, //
+
2566 {3.03691006, 11.1614075}, //
+
2567 {3.03414011, 11.1620359}, //
+
2568 {3.03119993, 11.1627502}, //
+
2569 {3.0281899, 11.1635466}, //
+
2570 {3.0251801, 11.1644268}, //
+
2571 {3.02217007, 11.1653891}, //
+
2572 {3.01916003, 11.1664343}, //
+
2573 {3.01613998, 11.1675615}, //
+
2574 {3.01312995, 11.1687717}, //
+
2575 {3.01011992, 11.1700649}, //
+
2576 {3.00711012, 11.1714411}, //
+
2577 {3.00410008, 11.1729002}, //
+
2578 {3.00114989, 11.1736565}, //
+
2579 {2.99833012, 11.1744108}, //
+
2580 {2.99563003, 11.1751671}, //
+
2581 {2.9930501, 11.1759224}, //
+
2582 {2.99060011, 11.1766777}, //
+
2583 {2.98828006, 11.177433}, //
+
2584 {2.98607993, 11.1781893}, //
+
2585 {2.98399997, 11.1789436}, //
+
2586 {2.98204994, 11.1796999}, //
+
2587 {2.98023009, 11.1804142}, //
+
2588 {2.97853994, 11.1810427}, //
+
2589 {2.97697997, 11.1815891}, //
+
2590 {2.97553992, 11.1820507}, //
+
2591 {2.97422004, 11.1824284}, //
+
2592 {2.97303009, 11.1827221}, //
+
2593 {2.97196007, 11.1829319}, //
+
2594 {2.97101998, 11.1830578}, //
+
2595 {2.97020006, 11.1830997}, //
+
2596 {2.96339989, 11.1830997}, //
+
2597 {2.96262002, 11.1823654}, //
+
2598 {2.9618001, 11.181673}, //
+
2599 {2.96093988, 11.1810217}, //
+
2600 {2.96004009, 11.1804142}, //
+
2601 {2.95910001, 11.1798468}, //
+
2602 {2.95811009, 11.1793222}, //
+
2603 {2.95707989, 11.1788397}, //
+
2604 {2.9560101, 11.1783991}, //
+
2605 {2.95490003, 11.1780005}, //
+
2606 {2.95379996, 11.1776009}, //
+
2607 {2.95273995, 11.1771603}, //
+
2608 {2.95172, 11.1766777}, //
+
2609 {2.9507401, 11.1761532}, //
+
2610 {2.94980001, 11.1755857}, //
+
2611 {2.94889998, 11.1749783}, //
+
2612 {2.94804001, 11.1743269}, //
+
2613 {2.9472301, 11.1736345}, //
+
2614 {2.94645, 11.1729002}, //
+
2615 {2.94642997, 11.1721344}, //
+
2616 {2.94636989, 11.1713247}, //
+
2617 {2.94625998, 11.1704721}, //
+
2618 {2.94611001, 11.1695766}, //
+
2619 {2.94593, 11.1686382}, //
+
2620 {2.94568992, 11.1676559}, //
+
2621 {2.94542003, 11.1666298}, //
+
2622 {2.94511008, 11.1655617}, //
+
2623 {2.94475007, 11.1644497}, //
+
2624 {2.94435, 11.1633377}, //
+
2625 {2.94390988, 11.1622667}, //
+
2626 {2.94342995, 11.1612387}, //
+
2627 {2.94289994, 11.1602516}, //
+
2628 {2.9423399, 11.1593084}, //
+
2629 {2.94173002, 11.1584063}, //
+
2630 {2.94108009, 11.1575451}, //
+
2631 {2.9403801, 11.1567268}, //
+
2632 {2.93965006, 11.1559496}, //
+
2633 {2.93902993, 11.1552467}, //
+
2634 {2.93865991, 11.1546268}, //
+
2635 {2.93853998, 11.154089}, //
+
2636 {2.93866992, 11.1536341}, //
+
2637 {2.93904996, 11.1532621}, //
+
2638 {2.93967009, 11.1529722}, //
+
2639 {2.94055009, 11.1527653}, //
+
2640 {2.94166994, 11.1526413}, //
+
2641 {2.94304991, 11.1526003}, //
+
2642 {2.94306993, 11.151886}, //
+
2643 {2.94313002, 11.1512566}, //
+
2644 {2.94323993, 11.1507111}, //
+
2645 {2.94338989, 11.1502485}, //
+
2646 {2.9435699, 11.1498718}, //
+
2647 {2.94380999, 11.1495781}, //
+
2648 {2.94408011, 11.1493683}, //
+
2649 {2.94439006, 11.1492424}, //
+
2650 {2.94475007, 11.1492004}, //
+
2651 {2.94985008, 11.1492004}, //
+
2652 {2.94998002, 11.1484442}, //
+
2653 {2.95035005, 11.1476889}, //
+
2654 {2.95097995, 11.1469326}, //
+
2655 {2.95184994, 11.1461782}, //
+
2656 {2.95298004, 11.145422}, //
+
2657 {2.95436001, 11.1446667}, //
+
2658 {2.95599008, 11.1439114}, //
+
2659 {2.95787001, 11.1431561}, //
+
2660 {2.96000004, 11.1423998}, //
+
2661 {2.96227002, 11.1416864}, //
+
2662 {2.96452999, 11.141057}, //
+
2663 {2.96678996, 11.1405106}, //
+
2664 {2.96905994, 11.140049}, //
+
2665 {2.97131991, 11.1396723}, //
+
2666 {2.97357988, 11.1393776}, //
+
2667 {2.97584009, 11.1391678}, //
+
2668 {2.97809005, 11.1390419}, //
+
2669 {2.98035002, 11.1389999}, //
+
2670 {2.99390006, 11.1389999}, //
+
2671 {2.99540997, 11.138917}, //
+
2672 {2.99692011, 11.1386671}, //
+
2673 {2.99833012, 11.1382771}, //
+
2674 {2.99466991, 11.1356335}, //
+
2675 {2.9899199, 11.1315517}, //
+
2676 {2.98520994, 11.1268406}, //
+
2677 {2.98055005, 11.1215}, //
+
2678 {2.97592998, 11.11553}, //
+
2679 {2.97329998, 11.1117544}, //
+
2680 {2.97263002, 11.112278}, //
+
2681 {2.9712801, 11.1132011}, //
+
2682 {2.96995997, 11.1139574}, //
+
2683 {2.9686799, 11.1145439}, //
+
2684 {2.9674499, 11.1149635}, //
+
2685 {2.96624994, 11.1152163}, //
+
2686 {2.96510005, 11.1153002}, //
+
2687 {2.96398997, 11.1152582}, //
+
2688 {2.96291995, 11.1151323}, //
+
2689 {2.96188998, 11.1149216}, //
+
2690 {2.96090007, 11.1146278}, //
+
2691 {2.95995998, 11.1142511}, //
+
2692 {2.95905995, 11.1137886}, //
+
2693 {2.95819998, 11.1132431}, //
+
2694 {2.95738006, 11.1126137}, //
+
2695 {2.95659995, 11.1119003}, //
+
2696 {2.95581007, 11.1111441}, //
+
2697 {2.95494008, 11.1103888}, //
+
2698 {2.95397997, 11.1096334}, //
+
2699 {2.95293999, 11.1088781}, //
+
2700 {2.95180988, 11.1081219}, //
+
2701 {2.95059991, 11.1073666}, //
+
2702 {2.94930005, 11.1066113}, //
+
2703 {2.94792008, 11.1058559}, //
+
2704 {2.94645, 11.1050997}, //
+
2705 {2.94352007, 11.1043453}, //
+
2706 {2.9407599, 11.103591}, //
+
2707 {2.93816996, 11.1028395}, //
+
2708 {2.93573999, 11.102088}, //
+
2709 {2.93348002, 11.1013384}, //
+
2710 {2.93138003, 11.1005888}, //
+
2711 {2.92946005, 11.0998411}, //
+
2712 {2.92769003, 11.0990953}, //
+
2713 {2.92610002, 11.0983496}, //
+
2714 {2.92313004, 11.0962095}, //
+
2715 {2.92024994, 11.0943203}, //
+
2716 {2.91743994, 11.0926828}, //
+
2717 {2.91473007, 11.0912981}, //
+
2718 {2.91209006, 11.0901651}, //
+
2719 {2.90953994, 11.089283}, //
+
2720 {2.90707994, 11.0886536}, //
+
2721 {2.90470004, 11.0882759}, //
+
2722 {2.90240002, 11.08815}, //
+
2723 {2.89896011, 11.0873528}, //
+
2724 {2.89618993, 11.0864735}, //
+
2725 {2.89408994, 11.0855112}, //
+
2726 {2.8926599, 11.084466}, //
+
2727 {2.89191008, 11.0833387}, //
+
2728 {2.89181995, 11.0821276}, //
+
2729 {2.89241004, 11.0808344}, //
+
2730 {2.89367008, 11.0794582}, //
+
2731 {2.89560008, 11.0780001}, //
+
2732 {2.89633012, 11.0772238}, //
+
2733 {2.89703012, 11.0764046}, //
+
2734 {2.89768004, 11.0755444}, //
+
2735 {2.89828992, 11.0746422}, //
+
2736 {2.89884996, 11.0736971}, //
+
2737 {2.89937997, 11.072711}, //
+
2738 {2.89985991, 11.0716829}, //
+
2739 {2.90030003, 11.070612}, //
+
2740 {2.90070009, 11.0695}, //
+
2741 {2.90101004, 11.068409}, //
+
2742 {2.90120006, 11.0674009}, //
+
2743 {2.90126991, 11.0664778}, //
+
2744 {2.90120006, 11.0656385}, //
+
2745 {2.90101004, 11.0648823}, //
+
2746 {2.90070009, 11.0642109}, //
+
2747 {2.90025997, 11.0636234}, //
+
2748 {2.89968991, 11.0631199}, //
+
2749 {2.89899993, 11.0627003}, //
+
2750 {2.89815998, 11.0623541}, //
+
2751 {2.89715004, 11.062048}, //
+
2752 {2.89597988, 11.0617828}, //
+
2753 {2.89462996, 11.0615597}, //
+
2754 {2.89312005, 11.0613756}, //
+
2755 {2.89143991, 11.0612335}, //
+
2756 {2.88960004, 11.0611315}, //
+
2757 {2.88757992, 11.0610704}, //
+
2758 {2.88540006, 11.0610504}, //
+
2759 {2.88170004, 11.0603781}, //
+
2760 {2.87811995, 11.0598726}, //
+
2761 {2.87467003, 11.0595331}, //
+
2762 {2.87134004, 11.0593615}, //
+
2763 {2.86813998, 11.0593557}, //
+
2764 {2.8650701, 11.0595169}, //
+
2765 {2.86211991, 11.059844}, //
+
2766 {2.8592999, 11.060339}, //
+
2767 {2.85660005, 11.0609999}, //
+
2768 {2.85415006, 11.0617552}, //
+
2769 {2.85208988, 11.0625114}, //
+
2770 {2.85038996, 11.0632668}, //
+
2771 {2.84908009, 11.0640221}, //
+
2772 {2.84814, 11.0647774}, //
+
2773 {2.84757996, 11.0655336}, //
+
2774 {2.84738994, 11.0662889}, //
+
2775 {2.84757996, 11.0670443}, //
+
2776 {2.84815001, 11.0677996}, //
+
2777 {2.84959006, 11.0685768}, //
+
2778 {2.85089993, 11.0693951}, //
+
2779 {2.85208988, 11.0702553}, //
+
2780 {2.85314989, 11.0711584}, //
+
2781 {2.85408998, 11.0721025}, //
+
2782 {2.8549099, 11.0730886}, //
+
2783 {2.85560012, 11.0741177}, //
+
2784 {2.85615993, 11.0751877}, //
+
2785 {2.85660005, 11.0762997}, //
+
2786 {2.85694003, 11.0773907}, //
+
2787 {2.85718989, 11.0783958}, //
+
2788 {2.85735989, 11.0793171}, //
+
2789 {2.85743999, 11.0801516}, //
+
2790 {2.85743999, 11.0809021}, //
+
2791 {2.85735989, 11.0815668}, //
+
2792 {2.85718989, 11.0821466}, //
+
2793 {2.85694003, 11.0826406}, //
+
2794 {2.85660005, 11.0830498}, //
+
2795 {2.85612011, 11.0834064}, //
+
2796 {2.85542989, 11.0837212}, //
+
2797 {2.8545301, 11.0839949}, //
+
2798 {2.85342002, 11.0842257}, //
+
2799 {2.8520999, 11.0844145}, //
+
2800 {2.85057998, 11.0845613}, //
+
2801 {2.84884, 11.0846663}, //
+
2802 {2.84689999, 11.0847292}, //
+
2803 {2.84474993, 11.0847502}, //
+
2804 {2.84395003, 11.0840473}, //
+
2805 {2.84307003, 11.0834265}, //
+
2806 {2.84210992, 11.0828886}, //
+
2807 {2.84105992, 11.0824337}, //
+
2808 {2.83992004, 11.0820618}, //
+
2809 {2.83871007, 11.0817719}, //
+
2810 {2.83739996, 11.0815659}, //
+
2811 {2.83601999, 11.0814409}, //
+
2812 {2.8345499, 11.0813999}, //
+
2813 {2.83311009, 11.0814199}, //
+
2814 {2.83179998, 11.0814819}, //
+
2815 {2.83061004, 11.081583}, //
+
2816 {2.82955003, 11.0817261}, //
+
2817 {2.82860994, 11.0819092}, //
+
2818 {2.82779002, 11.0821333}, //
+
2819 {2.82710004, 11.0823984}, //
+
2820 {2.82653999, 11.0827036}, //
+
2821 {2.82610011, 11.0830498}, //
+
2822 {2.82582998, 11.0834484}, //
+
2823 {2.82575989, 11.08389}, //
+
2824 {2.82591009, 11.0843725}, //
+
2825 {2.82626009, 11.084897}, //
+
2826 {2.8268199, 11.0854635}, //
+
2827 {2.82758999, 11.086072}, //
+
2828 {2.82856989, 11.0867224}, //
+
2829 {2.82975006, 11.0874157}, //
+
2830 {2.83115005, 11.08815}, //
+
2831 {2.8332901, 11.0896397}, //
+
2832 {2.83518004, 11.0910854}, //
+
2833 {2.83681989, 11.0924892}, //
+
2834 {2.83820009, 11.0938492}, //
+
2835 {2.83933997, 11.0951653}, //
+
2836 {2.84021997, 11.0964394}, //
+
2837 {2.84085011, 11.0976686}, //
+
2838 {2.8412199, 11.098856}, //
+
2839 {2.84135008, 11.1000004}, //
+
2840 {2.84126997, 11.1010704}, //
+
2841 {2.84101009, 11.1020145}, //
+
2842 {2.84059, 11.1028328}, //
+
2843 {2.84000993, 11.1035261}, //
+
2844 {2.83925009, 11.1040926}, //
+
2845 {2.83833003, 11.1045332}, //
+
2846 {2.83723998, 11.1048479}, //
+
2847 {2.83597994, 11.1050367}, //
+
2848 {2.8345499, 11.1050997}, //
+
2849 {2.83307004, 11.1051626}, //
+
2850 {2.83162999, 11.1053524}, //
+
2851 {2.83023, 11.1056671}, //
+
2852 {2.82888007, 11.1061068}, //
+
2853 {2.82755995, 11.1066742}, //
+
2854 {2.82628012, 11.1073666}, //
+
2855 {2.82505012, 11.1081848}, //
+
2856 {2.82384992, 11.1091299}, //
+
2857 {2.82270002, 11.1101999}, //
+
2858 {2.82163, 11.1113539}, //
+
2859 {2.82068992, 11.1125479}, //
+
2860 {2.81987, 11.1137829}, //
+
2861 {2.81917, 11.1150589}, //
+
2862 {2.81860995, 11.1163759}, //
+
2863 {2.81817007, 11.117733}, //
+
2864 {2.81785011, 11.1191311}, //
+
2865 {2.81766009, 11.1205702}, //
+
2866 {2.81760001, 11.1220503}, //
+
2867 {2.81831002, 11.1221132}, //
+
2868 {2.81893992, 11.1223021}, //
+
2869 {2.81948996, 11.1226168}, //
+
2870 {2.8199501, 11.1230574}, //
+
2871 {2.8203299, 11.1236238}, //
+
2872 {2.82062006, 11.1243172}, //
+
2873 {2.82083011, 11.1251354}, //
+
2874 {2.82096004, 11.1260796}, //
+
2875 {2.8210001, 11.1271496}, //
+
2876 {2.82103992, 11.1283035}, //
+
2877 {2.82117009, 11.1294975}, //
+
2878 {2.8213799, 11.1307325}, //
+
2879 {2.82167006, 11.1320086}, //
+
2880 {2.82205009, 11.1333256}, //
+
2881 {2.82251, 11.1346827}, //
+
2882 {2.82306004, 11.1360807}, //
+
2883 {2.82368994, 11.1375198}, //
+
2884 {2.82439995, 11.1389999}, //
+
2885 {2.82444, 11.1412239}, //
+
2886 {2.82456994, 11.143363}, //
+
2887 {2.82476997, 11.1454172}, //
+
2888 {2.82505989, 11.1473846}, //
+
2889 {2.82542992, 11.1492691}, //
+
2890 {2.82589006, 11.1510668}, //
+
2891 {2.82643008, 11.1527796}, //
+
2892 {2.82704997, 11.1544065}, //
+
2893 {2.82774997, 11.1559496}, //
+
2894 {2.82848001, 11.1574402}, //
+
2895 {2.82918, 11.158886}, //
+
2896 {2.82982993, 11.1602888}, //
+
2897 {2.83044004, 11.1616488}, //
+
2898 {2.83100009, 11.1629648}, //
+
2899 {2.83153009, 11.1642389}, //
+
2900 {2.83201003, 11.1654692}, //
+
2901 {2.83244991, 11.1666555}, //
+
2902 {2.83284998, 11.1677999}, //
+
2903 {2.8345499, 11.1729002}, //
+
2904 {2.8345499, 11.1627502}, //
+
2905 {2.83456993, 11.162015}, //
+
2906 {2.83463001, 11.1613226}, //
+
2907 {2.83473992, 11.1606722}, //
+
2908 {2.83488989, 11.1600637}, //
+
2909 {2.83506989, 11.1594973}, //
+
2910 {2.83530998, 11.1589718}, //
+
2911 {2.83558011, 11.1584902}, //
+
2912 {2.83589005, 11.1580486}, //
+
2913 {2.83625007, 11.15765}, //
+
2914 {2.83664989, 11.1572933}, //
+
2915 {2.83709002, 11.1569777}, //
+
2916 {2.83756995, 11.1567059}, //
+
2917 {2.83809996, 11.1564751}, //
+
2918 {2.83866, 11.1562862}, //
+
2919 {2.83927011, 11.1561394}, //
+
2920 {2.83992004, 11.1560345}, //
+
2921 {2.84062004, 11.1559706}, //
+
2922 {2.84135008, 11.1559496}, //
+
2923 {2.84285998, 11.1559916}, //
+
2924 {2.84436989, 11.1561184}, //
+
2925 {2.84588003, 11.1563282}, //
+
2926 {2.84737992, 11.1566219}, //
+
2927 {2.84889007, 11.1569986}, //
+
2928 {2.85038996, 11.1574612}, //
+
2929 {2.8519001, 11.1580067}, //
+
2930 {2.85339999, 11.1586361}, //
+
2931 {2.85489988, 11.1593504}, //
+
2932 {2.85639, 11.1593714}, //
+
2933 {2.85784006, 11.1594343}, //
+
2934 {2.85924006, 11.1595392}, //
+
2935 {2.86059999, 11.1596861}, //
+
2936 {2.86192012, 11.1598749}, //
+
2937 {2.86318994, 11.1601057}, //
+
2938 {2.86441994, 11.1603785}, //
+
2939 {2.86560988, 11.1606932}, //
+
2940 {2.86675, 11.1610498}, //
+
2941 {2.86794996, 11.1613646}, //
+
2942 {2.86927009, 11.1615543}, //
+
2943 {2.87071991, 11.1616173}, //
+
2944 {2.8722899, 11.1615543}, //
+
2945 {2.87399006, 11.1613646}, //
+
2946 {2.87581992, 11.1610498}, //
+
2947 {2.87776995, 11.1606092}, //
+
2948 {2.87984991, 11.1600428}, //
+
2949 {2.88205004, 11.1593504}, //
+
2950 {2.88431001, 11.1579123}, //
+
2951 {2.88655996, 11.156599}, //
+
2952 {2.88881993, 11.1554108}, //
+
2953 {2.89106989, 11.1543484}, //
+
2954 {2.8933301, 11.153409}, //
+
2955 {2.89558005, 11.1525936}, //
+
2956 {2.89784002, 11.1519051}, //
+
2957 {2.90008998, 11.1513395}, //
+
2958 {2.90234995, 11.1508999}, //
+
2959 {2.90459991, 11.1505642}, //
+
2960 {2.90680003, 11.1503124}, //
+
2961 {2.9089601, 11.1501436}, //
+
2962 {2.91107011, 11.1500597}, //
+
2963 {2.91314006, 11.1500597}, //
+
2964 {2.91516995, 11.1501436}, //
+
2965 {2.91716003, 11.1503124}, //
+
2966 {2.91910005, 11.1505642}, //
+
2967 {2.921, 11.1508999}, //
+
2968 {2.92273998, 11.1512976}, //
+
2969 {2.92419004, 11.1517372}, //
+
2970 {2.92533994, 11.1522169}, //
+
2971 {2.92619991, 11.1527367}, //
+
2972 {2.92676997, 11.1532984}, //
+
2973 {2.9270401, 11.1539001}, //
+
2974 {2.92702007, 11.1545429}, //
+
2975 {2.92670989, 11.1552258}, //
+
2976 {2.92610002, 11.1559496}, //
+
2977 {2.92610002, 11.1593504}, //
+
2978 {2.92607999, 11.1600847}, //
+
2979 {2.92601991, 11.1607771}, //
+
2980 {2.92591, 11.1614285}, //
+
2981 {2.92576003, 11.1620359}, //
+
2982 {2.92558002, 11.1626034}, //
+
2983 {2.92533994, 11.1631279}, //
+
2984 {2.92507005, 11.1636105}, //
+
2985 {2.9247601, 11.1640511}, //
+
2986 {2.92440009, 11.1644497}, //
+
2987 {2.92398, 11.1648283}, //
+
2988 {2.92348003, 11.165206}, //
+
2989 {2.92288995, 11.1655827}, //
+
2990 {2.92221999, 11.1659613}, //
+
2991 {2.92145991, 11.1663389}, //
+
2992 {2.92061996, 11.1667166}, //
+
2993 {2.91969991, 11.1670942}, //
+
2994 {2.91868997, 11.1674719}, //
+
2995 {2.91759992, 11.1678495}, //
+
2996 {2.91640997, 11.1682072}, //
+
2997 {2.9151001, 11.1685219}, //
+
2998 {2.91367006, 11.1687937}, //
+
2999 {2.91210008, 11.1690254}, //
+
3000 {2.91040993, 11.1692142}, //
+
3001 {2.90860009, 11.1693611}, //
+
3002 {2.90666008, 11.169466}, //
+
3003 {2.90458989, 11.169529}, //
+
3004 {2.90240002, 11.1695499}, //
+
3005 {2.89937997, 11.169591}, //
+
3006 {2.89635992, 11.1697149}, //
+
3007 {2.89334011, 11.1699219}, //
+
3008 {2.89032006, 11.1702118}, //
+
3009 {2.88730001, 11.1705837}, //
+
3010 {2.88428998, 11.1710386}, //
+
3011 {2.88126993, 11.1715775}, //
+
3012 {2.8782599, 11.1721973}, //
+
3013 {2.8752501, 11.1729002}, //
+
3014 {2.87226009, 11.1736345}, //
+
3015 {2.8693099, 11.1743269}, //
+
3016 {2.8664, 11.1749783}, //
+
3017 {2.86352992, 11.1755857}, //
+
3018 {2.86069989, 11.1761532}, //
+
3019 {2.85791993, 11.1766777}, //
+
3020 {2.85517001, 11.1771603}, //
+
3021 {2.85245991, 11.1776009}, //
+
3022 {2.84980011, 11.1780005}, //
+
3023 {2.84511995, 11.1786718}, //
+
3024 {2.84322, 11.1789436}, //
+
3025 {2.83794999, 11.1796999}, //
+
3026 {2.83797002, 11.1797209}, //
+
3027 {2.83814001, 11.1798887}, //
+
3028 {2.83828998, 11.1800356}, //
+
3029 {2.83871007, 11.1804562}, //
+
3030 {2.8404901, 11.1822395}, //
+
3031 {2.84097004, 11.1827221}, //
+
3032 {2.84474993, 11.1864996}, //
+
3033 {2.84545994, 11.1872759}, //
+
3034 {2.84609008, 11.1880932}, //
+
3035 {2.84664011, 11.1889496}, //
+
3036 {2.84710002, 11.1898479}, //
+
3037 {2.84748006, 11.1907873}, //
+
3038 {2.84776998, 11.1917667}, //
+
3039 {2.84798002, 11.1927872}, //
+
3040 {2.84810996, 11.1938477}, //
+
3041 {2.84815001, 11.1949501}, //
+
3042 {2.84815001, 11.210495}, //
+
3043 {2.85169005, 11.2179394}, //
+
3044 {2.85362005, 11.2218418}, //
+
3045 {2.85265994, 11.2221003}, //
+
3046 {2.85127997, 11.222415}, //
+
3047 {2.85015011, 11.2226038}, //
+
3048 {2.84928012, 11.2226667}, //
+
3049 {2.84864998, 11.2226038}, //
+
3050 {2.84827995, 11.222415}, //
+
3051 {2.84815001, 11.2221003}, //
+
3052 {2.84815001, 11.210495}, //
+
3053 {2.84606004, 11.20611}, //
+
3054 {2.84097004, 11.194993}, //
+
3055 {2.83643007, 11.1845894}, //
+
3056 {2.83242989, 11.1748972}, //
+
3057 {2.82896996, 11.1659174}, //
+
3058 {2.82605004, 11.15765}, //
+
3059 {2.82353997, 11.1499481}, //
+
3060 {2.82128, 11.1426649}, //
+
3061 {2.81927991, 11.1358004}, //
+
3062 {2.8175199, 11.1293535}, //
+
3063 {2.81602001, 11.1233263}, //
+
3064 {2.81475997, 11.1177168}, //
+
3065 {2.81376004, 11.1125259}, //
+
3066 {2.81299996, 11.1077538}, //
+
3067 {2.8125, 11.1034002}, //
+
3068 {2.81220007, 11.0993605}, //
+
3069 {2.81201005, 11.0955305}, //
+
3070 {2.81195998, 11.0919113}, //
+
3071 {2.81202006, 11.088501}, //
+
3072 {2.81221008, 11.0853014}, //
+
3073 {2.81252003, 11.0823107}, //
+
3074 {2.81295991, 11.0795307}, //
+
3075 {2.81351995, 11.0769606}, //
+
3076 {2.81419992, 11.0746002}, //
+
3077 {2.81419992, 11.0610504}, //
+
3078 {2.81485009, 11.0574293}, //
+
3079 {2.81528997, 11.0541019}, //
+
3080 {2.81552005, 11.0510664}, //
+
3081 {2.81554008, 11.0483236}, //
+
3082 {2.81535006, 11.0458736}, //
+
3083 {2.81496, 11.0437164}, //
+
3084 {2.81434989, 11.041852}, //
+
3085 {2.81352997, 11.0402794}, //
+
3086 {2.8125, 11.0389996}, //
+
3087 {2.81135988, 11.0378876}, //
+
3088 {2.81016994, 11.0368176}, //
+
3089 {2.80893993, 11.0357885}, //
+
3090 {2.80767012, 11.0348024}, //
+
3091 {2.80634999, 11.0338583}, //
+
3092 {2.80499005, 11.0329552}, //
+
3093 {2.80359006, 11.032095}, //
+
3094 {2.80214, 11.0312767}, //
+
3095 {2.80064988, 11.0305004}, //
+
3096 {2.79990005, 11.0304585}, //
+
3097 {2.79913998, 11.0303345}, //
+
3098 {2.79838991, 11.0301275}, //
+
3099 {2.79764009, 11.0298386}, //
+
3100 {2.79689002, 11.0294657}, //
+
3101 {2.79613996, 11.0290108}, //
+
3102 {2.79538989, 11.0284739}, //
+
3103 {2.79465008, 11.027853}, //
+
3104 {2.79390001, 11.0271502}, //
+
3105 {2.7924099, 11.0256176}, //
+
3106 {2.79096007, 11.024044}, //
+
3107 {2.78956008, 11.0224276}, //
+
3108 {2.78818989, 11.0207701}, //
+
3109 {2.78687, 11.0190697}, //
+
3110 {2.78558993, 11.0173283}, //
+
3111 {2.78434992, 11.0155439}, //
+
3112 {2.78314996, 11.0137177}, //
+
3113 {2.78200006, 11.0118504}, //
+
3114 {2.78095007, 11.0098886}, //
+
3115 {2.78007007, 11.0077591}, //
+
3116 {2.77936006, 11.0054607}, //
+
3117 {2.77881002, 11.0029955}, //
+
3118 {2.77842999, 11.0003624}, //
+
3119 {2.77821994, 10.9975615}, //
+
3120 {2.77817988, 10.9945917}, //
+
3121 {2.77831006, 10.9914551}, //
+
3122 {2.77859998, 10.9881496}, //
+
3123 {2.77911997, 10.9846888}, //
+
3124 {2.77993989, 10.9811029}, //
+
3125 {2.78105998, 10.9773941}, //
+
3126 {2.78245997, 10.9735622}, //
+
3127 {2.7841599, 10.9696064}, //
+
3128 {2.78615999, 10.9655275}, //
+
3129 {2.78843999, 10.9613256}, //
+
3130 {2.79101992, 10.9569998}, //
+
3131 {2.79390001, 10.9525499}, //
+
3132 {2.79703999, 10.9475021}, //
+
3133 {2.80042005, 10.942915}, //
+
3134 {2.80405998, 10.9387894}, //
+
3135 {2.80795002, 10.9351225}, //
+
3136 {2.81208992, 10.9319172}, //
+
3137 {2.81647992, 10.9291725}, //
+
3138 {2.82112002, 10.9268875}, //
+
3139 {2.82600999, 10.9250631}, //
+
3140 {2.83115005, 10.9237003}, //
+
3141 {2.8368001, 10.9226713}, //
+
3142 {2.84320998, 10.9218531}, //
+
3143 {2.85036993, 10.9212446}, //
+
3144 {2.85828996, 10.920846}, //
+
3145 {2.86695004, 10.9206572}, //
+
3146 {2.87636995, 10.9206781}, //
+
3147 {2.88654995, 10.9209089}, //
+
3148 {2.89747, 10.9213495}, //
+
3149 {2.90914989, 10.9219999}, //
+
3150 {2.92098999, 10.9226713}, //
+
3151 {2.93392992, 10.9231749}, //
+
3152 {2.94794989, 10.9235115}, //
+
3153 {2.9630599, 10.9236794}, //
+
3154 {2.97925997, 10.9236794}, //
+
3155 {2.99655008, 10.9235115}, //
+
3156 {3.01493001, 10.9231749}, //
+
3157 {3.03438997, 10.9226713}, //
+
3158 {3.05495, 10.9219999}, //
+
3159 {3.12104988, 10.9219999}, //
+
3160 {3.12651992, 10.9220209}, //
+
3161 {3.13160992, 10.9220839}, //
+
3162 {3.13632011, 10.9221888}, //
+
3163 {3.14065003, 10.9223356}, //
+
3164 {3.14460993, 10.9225245}, //
+
3165 {3.14818001, 10.9227552}, //
+
3166 {3.15138006, 10.923028}, //
+
3167 {3.15421009, 10.9233437}, //
+
3168 {3.15665007, 10.9237003}, //
+
3169 {3.15879011, 10.924078}, //
+
3170 {3.16068006, 10.9244556}, //
+
3171 {3.1623199, 10.9248333}, //
+
3172 {3.1637001, 10.925211}, //
+
3173 {3.16483998, 10.9255886}, //
+
3174 {3.16571999, 10.9259663}, //
+
3175 {3.16634989, 10.9263449}, //
+
3176 {3.16671991, 10.9267225}, //
+
3177 {3.16685009, 10.9271002}, //
+
3178 {3.16676998, 10.9274778}, //
+
3179 {3.16651011, 10.9278555}, //
+
3180 {3.16609001, 10.9282331}, //
+
3181 {3.16550994, 10.9286108}, //
+
3182 {3.1647501, 10.9289885}, //
+
3183 {3.16383004, 10.9293671}, //
+
3184 {3.16273999, 10.9297447}, //
+
3185 {3.16147995, 10.9301224}, //
+
3186 {3.16004992, 10.9305}, //
+
3187 {3.15850997, 10.9308777}, //
+
3188 {3.1568799, 10.9312553}, //
+
3189 {3.15516996, 10.931633}, //
+
3190 {3.1533699, 10.9320107}, //
+
3191 {3.15148997, 10.9323893}, //
+
3192 {3.14951992, 10.9327669}, //
+
3193 {3.14745998, 10.9331446}, //
+
3194 {3.14531994, 10.9335222}, //
+
3195 {3.14310002, 10.9338999}, //
+
3196 {3.14088988, 10.9342566}, //
+
3197 {3.13875008, 10.9345713}, //
+
3198 {3.13670993, 10.934844}, //
+
3199 {3.13474011, 10.9350758}, //
+
3200 {3.13285995, 10.9352646}, //
+
3201 {3.13105989, 10.9354115}, //
+
3202 {3.12933993, 10.9355164}, //
+
3203 {3.12770009, 10.9355793}, //
+
3204 {3.12614989, 10.9356003}, //
+
3205 {3.11940002, 10.9356003}, //
+
3206 {3.12039995, 10.9369431}, //
+
3207 {3.12096, 10.9376984}, //
+
3208 {3.12338996, 10.9409723}, //
+
3209 {3.12444997, 10.9424}, //
+
3210 {3.12568998, 10.9438581}, //
+
3211 {3.12713003, 10.9452343}, //
+
3212 {3.1287899, 10.9465275}, //
+
3213 {3.13065004, 10.9477386}, //
+
3214 {3.13271999, 10.9488659}, //
+
3215 {3.13501, 10.9499111}, //
+
3216 {3.13750005, 10.9508734}, //
+
3217 {3.14018989, 10.9517527}, //
+
3218 {3.14310002, 10.9525499}, //
+
3219 {3.14455009, 10.9534206}, //
+
3220 {3.14586997, 10.954545}, //
+
3221 {3.14706993, 10.9559221}, //
+
3222 {3.14813995, 10.9575529}, //
+
3223 {3.14908004, 10.9594355}, //
+
3224 {3.14989996, 10.9615726}, //
+
3225 {3.15058994, 10.9639616}, //
+
3226 {3.15116, 10.9666042}, //
+
3227 {3.15159988, 10.9694996}, //
+
3228 {3.1519599, 10.9725113}, //
+
3229 {3.15227008, 10.975522}, //
+
3230 {3.15253997, 10.9785337}, //
+
3231 {3.15278006, 10.9815445}, //
+
3232 {3.15296006, 10.9845552}, //
+
3233 {3.15311003, 10.9875669}, //
+
3234 {3.15321994, 10.9905777}, //
+
3235 {3.15328002, 10.9935884}, //
+
3236 {3.15330005, 10.9966002}, //
+
3237 {3.15330005, 11.0271502}, //
+
3238 {3.15244007, 11.0296354}, //
+
3239 {3.15137005, 11.0325823}, //
+
3240 {3.15008998, 11.0359888}, //
+
3241 {3.1486001, 11.039856}, //
+
3242 {3.14689994, 11.0441837}, //
+
3243 {3.14498997, 11.0489721}, //
+
3244 {3.14286995, 11.0542212}, //
+
3245 {3.14053988, 11.0599298}, //
+
3246 {3.13800001, 11.0661001}, //
+
3247 {3.13531995, 11.0725107}, //
+
3248 {3.13257003, 11.0789194}, //
+
3249 {3.12971997, 11.0853281}, //
+
3250 {3.12680006, 11.0917349}, //
+
3251 {3.12378001, 11.0981398}, //
+
3252 {3.12069011, 11.1045437}, //
+
3253 {3.11751008, 11.1109476}, //
+
3254 {3.11424994, 11.1173487}, //
+
3255 {3.11089993, 11.1237497}, //
+
3256 {3.10762, 11.1299725}, //
+
3257 {3.10454011, 11.1358166}, //
+
3258 {3.10167003, 11.141283}, //
+
3259 {3.09900999, 11.1463718}, //
+
3260 {3.09656, 11.151083}, //
+
3261 {3.09432006, 11.1554174}, //
+
3262 {3.09228992, 11.1593723}, //
+
3263 {3.09047008, 11.1629496}, //
+
3264 {3.08885002, 11.1661501}, //
+
3265 {3.08820009, 11.1685734}, //
+
3266 {3.08775997, 11.1713333}, //
+
3267 {3.0875299, 11.174428}, //
+
3268 {3.08751011, 11.1778593}, //
+
3269 {3.08769989, 11.1816254}, //
+
3270 {3.08808994, 11.1857281}, //
+
3271 {3.08870006, 11.1901665}, //
+
3272 {3.08951998, 11.1949396}, //
+
3273 {3.09054995, 11.2000504}, //
+
3274 {3.09166002, 11.2052441}, //
+
3275 {3.09273005, 11.2102699}, //
+
3276 {3.09376001, 11.2151279}, //
+
3277 {3.09474993, 11.2198181}, //
+
3278 {3.09569001, 11.2243404}, //
+
3279 {3.09659004, 11.228694}, //
+
3280 {3.09745002, 11.2328806}, //
+
3281 {3.09826994, 11.2368994}, //
+
3282 {3.09905005, 11.2407503}, //
+
3283 {3.0990901, 11.2414637}, //
+
3284 {3.09922004, 11.2420931}, //
+
3285 {3.09942007, 11.2426386}, //
+
3286 {3.09970999, 11.2431011}, //
+
3287 {3.10008001, 11.2434778}, //
+
3288 {3.10053992, 11.2437716}, //
+
3289 {3.10107994, 11.2439823}, //
+
3290 {3.10170007, 11.2441082}, //
+
3291 {3.10240006, 11.2441502}, //
+
3292 {3.10335994, 11.2484188}, //
+
3293 {3.10474992, 11.2536907}, //
+
3294 {3.10654998, 11.2599669}, //
+
3295 {3.10876989, 11.2672462}, //
+
3296 {3.1114099, 11.2755299}, //
+
3297 {3.11447001, 11.2848167}, //
+
3298 {3.11793995, 11.2951069}, //
+
3299 {3.12184, 11.3064022}, //
+
3300 {3.12614989, 11.3186998}, //
+
3301 {3.13067007, 11.3314896}, //
+
3302 {3.13519001, 11.3442383}, //
+
3303 {3.13971996, 11.3569441}, //
+
3304 {3.1442399, 11.3696089}, //
+
3305 {3.14876008, 11.3822308}, //
+
3306 {3.15328002, 11.3948107}, //
+
3307 {3.15780997, 11.4073486}, //
+
3308 {3.16232991, 11.4198456}, //
+
3309 {3.16685009, 11.4322996}, //
+
3310 {3.17120004, 11.444252}, //
+
3311 {3.17522001, 11.4552412}, //
+
3312 {3.17891002, 11.4652672}, //
+
3313 {3.18225002, 11.4743299}, //
+
3314 {3.18526006, 11.4824305}, //
+
3315 {3.18793988, 11.4895668}, //
+
3316 {3.19027996, 11.4957409}, //
+
3317 {3.19228005, 11.5009518}, //
+
3318 {3.19394994, 11.5052004}, //
+
3319 {3.19709992, 11.5087137}, //
+
3320 {3.20049, 11.5132322}, //
+
3321 {3.20413995, 11.5187559}, //
+
3322 {3.20802999, 11.5252838}, //
+
3323 {3.2121799, 11.5328169}, //
+
3324 {3.2165699, 11.5413561}, //
+
3325 {3.22122002, 11.5508986}, //
+
3326 {3.22610998, 11.5614471}, //
+
3327 {3.23125005, 11.573}, //
+
3328 {3.23508, 11.5820436}, //
+
3329 {3.2390399, 11.5910892}, //
+
3330 {3.24311996, 11.6001329}, //
+
3331 {3.24458003, 11.603281}, //
+
3332 {3.24484992, 11.60355}, //
+
3333 {3.24475002, 11.6036463}, //
+
3334 {3.24731994, 11.6091776}, //
+
3335 {3.25166011, 11.6182222}, //
+
3336 {3.25611997, 11.6272669}, //
+
3337 {3.26069999, 11.6363106}, //
+
3338 {3.26540995, 11.6453562}, //
+
3339 {3.27025008, 11.6543999}, //
+
3340 {3.2750001, 11.6631088}, //
+
3341 {3.27945995, 11.6711483}, //
+
3342 {3.28362989, 11.6785173}, //
+
3343 {3.2873199, 11.6849003}, //
+
3344 {3.29060006, 11.6849003}, //
+
3345 {3.29096007, 11.6849213}, //
+
3346 {3.29127002, 11.6849842}, //
+
3347 {3.29153991, 11.6850891}, //
+
3348 {3.29177999, 11.685236}, //
+
3349 {3.29196, 11.6854248}, //
+
3350 {3.29210997, 11.6856556}, //
+
3351 {3.29222012, 11.6859283}, //
+
3352 {3.29227996, 11.6862431}, //
+
3353 {3.29229999, 11.6865997}, //
+
3354 {3.29229999, 11.6883001}, //
+
3355 {3.29196, 11.6879644}, //
+
3356 {3.29177999, 11.6877747}, //
+
3357 {3.29153991, 11.6875439}, //
+
3358 {3.29096007, 11.6869574}, //
+
3359 {3.29060006, 11.6865997}, //
+
3360 {3.2902, 11.6862431}, //
+
3361 {3.28976011, 11.6859283}, //
+
3362 {3.28927994, 11.6856556}, //
+
3363 {3.28874993, 11.6854248}, //
+
3364 {3.28818989, 11.685236}, //
+
3365 {3.28758001, 11.6850891}, //
+
3366 {3.28741002, 11.6850624}, //
+
3367 {3.2874999, 11.685215}, //
+
3368 {3.29108, 11.6912432}, //
+
3369 {3.29435992, 11.6966}, //
+
3370 {3.29734993, 11.7012873}, //
+
3371 {3.30005002, 11.7053041}, //
+
3372 {3.30244994, 11.7086496}, //
+
3373 {3.30409002, 11.7124786}, //
+
3374 {3.30596995, 11.7164326}, //
+
3375 {3.30811, 11.7205114}, //
+
3376 {3.31049991, 11.7247143}, //
+
3377 {3.31313992, 11.7290421}, //
+
3378 {3.31603003, 11.7334938}, //
+
3379 {3.31917, 11.7380724}, //
+
3380 {3.32256007, 11.7427731}, //
+
3381 {3.32620001, 11.7475996}, //
+
3382 {3.33000994, 11.7525635}, //
+
3383 {3.33389997, 11.7576523}, //
+
3384 {3.3378799, 11.762867}, //
+
3385 {3.34193993, 11.7682066}, //
+
3386 {3.34608006, 11.773674}, //
+
3387 {3.35031009, 11.7792673}, //
+
3388 {3.35461998, 11.7849846}, //
+
3389 {3.35901999, 11.7908297}, //
+
3390 {3.36350012, 11.7967997}, //
+
3391 {3.36795998, 11.8027391}, //
+
3392 {3.3722899, 11.8085108}, //
+
3393 {3.37649989, 11.8141174}, //
+
3394 {3.38057995, 11.8195562}, //
+
3395 {3.38454008, 11.8248281}, //
+
3396 {3.38837004, 11.8299332}, //
+
3397 {3.39207006, 11.8348722}, //
+
3398 {3.39564991, 11.8396444}, //
+
3399 {3.39910007, 11.8442497}, //
+
3400 {3.40237999, 11.8486881}, //
+
3401 {3.40545988, 11.8529587}, //
+
3402 {3.40832996, 11.8570614}, //
+
3403 {3.41099, 11.8609962}, //
+
3404 {3.41343999, 11.8647623}, //
+
3405 {3.41567993, 11.8683615}, //
+
3406 {3.41771007, 11.8717918}, //
+
3407 {3.41952991, 11.8750553}, //
+
3408 {3.42114997, 11.87815}, //
+
3409 {3.42356992, 11.883049}, //
+
3410 {3.42633009, 11.8887014}, //
+
3411 {3.42943001, 11.8951063}, //
+
3412 {3.4328599, 11.9022636}, //
+
3413 {3.43663001, 11.9101753}, //
+
3414 {3.44073009, 11.9188395}, //
+
3415 {3.44516993, 11.928256}, //
+
3416 {3.44993997, 11.938427}, //
+
3417 {3.45504999, 11.9493504}, //
+
3418 {3.46030998, 11.9607439}, //
+
3419 {3.46551991, 11.9723034}, //
+
3420 {3.47069001, 11.9840279}, //
+
3421 {3.47582006, 11.9959183}, //
+
3422 {3.48090005, 12.0079699}, //
+
3423 {3.48593998, 12.0201902}, //
+
3424 {3.48867989, 12.0269899}, //
+
3425 {3.48895001, 12.0273504}, //
+
3426 {3.48887992, 12.0274897}, //
+
3427 {3.49094009, 12.0325804}, //
+
3428 {3.4958899, 12.0451298}, //
+
3429 {3.50079989, 12.0578499}, //
+
3430 {3.50564003, 12.0704098}, //
+
3431 {3.51034999, 12.0824699}, //
+
3432 {3.51448011, 12.0928898}, //
+
3433 {3.51609993, 12.09515}, //
+
3434 {3.51609993, 12.0969105}, //
+
3435 {3.51939011, 12.1050701}, //
+
3436 {3.52373004, 12.1156197}, //
+
3437 {3.52793002, 12.1256704}, //
+
3438 {3.53201008, 12.1352196}, //
+
3439 {3.53596997, 12.1442604}, //
+
3440 {3.53979993, 12.1527996}, //
+
3441 {3.54127002, 12.1557398}, //
+
3442 {3.54264998, 12.1585102}, //
+
3443 {3.54396009, 12.1611099}, //
+
3444 {3.54517007, 12.1635399}, //
+
3445 {3.54630995, 12.1658001}, //
+
3446 {3.54735994, 12.1678896}, //
+
3447 {3.54832006, 12.1698103}, //
+
3448 {3.54920006, 12.1715698}, //
+
3449 {3.54999995, 12.1731501}, //
+
3450 {3.55238008, 12.1793699}, //
+
3451 {3.55501008, 12.1859703}, //
+
3452 {3.55789995, 12.1929398}, //
+
3453 {3.56103992, 12.2002897}, //
+
3454 {3.56443, 12.2080097}, //
+
3455 {3.56806993, 12.2161102}, //
+
3456 {3.57195997, 12.2245798}, //
+
3457 {3.57610011, 12.2334299}, //
+
3458 {3.58049989, 12.24265}, //
+
3459 {3.58504009, 12.2520304}, //
+
3460 {3.58962989, 12.2613297}, //
+
3461 {3.59424996, 12.2705402}, //
+
3462 {3.59891009, 12.2796698}, //
+
3463 {3.60362005, 12.2887096}, //
+
3464 {3.60837007, 12.2976704}, //
+
3465 {3.61314988, 12.30655}, //
+
3466 {3.61798, 12.31534}, //
+
3467 {3.62284994, 12.3240499}, //
+
3468 {3.62759995, 12.3324404}, //
+
3469 {3.63206005, 12.3402901}, //
+
3470 {3.63622999, 12.3476}, //
+
3471 {3.64011002, 12.3543596}, //
+
3472 {3.64369011, 12.3605804}, //
+
3473 {3.64698005, 12.36625}, //
+
3474 {3.64998007, 12.3713799}, //
+
3475 {3.65268993, 12.3759604}, //
+
3476 {3.65510011, 12.3800001}, //
+
3477 {3.65769005, 12.3835802}, //
+
3478 {3.66094995, 12.3882799}, //
+
3479 {3.66488004, 12.3941202}, //
+
3480 {3.6694901, 12.4010801}, //
+
3481 {3.6747601, 12.4091797}, //
+
3482 {3.68070006, 12.4183998}, //
+
3483 {3.68730998, 12.42875}, //
+
3484 {3.69460011, 12.4402399}, //
+
3485 {3.70254993, 12.4528503}, //
+
3486 {3.71093988, 12.4661598}, //
+
3487 {3.71954989, 12.4797297}, //
+
3488 {3.72835994, 12.4935398}, //
+
3489 {3.73737001, 12.5076103}, //
+
3490 {3.74659991, 12.5219297}, //
+
3491 {3.7560401, 12.5364904}, //
+
3492 {3.76568007, 12.5513096}, //
+
3493 {3.77554011, 12.5663795}, //
+
3494 {3.78559995, 12.5817003}, //
+
3495 {3.79565001, 12.5969896}, //
+
3496 {3.80544996, 12.6119404}, //
+
3497 {3.81500006, 12.6265602}, //
+
3498 {3.82430005, 12.6408396}, //
+
3499 {3.83333993, 12.6547804}, //
+
3500 {3.84212995, 12.6683903}, //
+
3501 {3.8506701, 12.6816597}, //
+
3502 {3.85895991, 12.6946001}, //
+
3503 {3.8670001, 12.7072001}, //
+
3504 {3.87456012, 12.7189798}, //
+
3505 {3.88140011, 12.7294703}, //
+
3506 {3.88753009, 12.7386599}, //
+
3507 {3.89296007, 12.7465401}, //
+
3508 {3.89767003, 12.75313}, //
+
3509 {3.90166998, 12.75842}, //
+
3510 {3.90495992, 12.7624102}, //
+
3511 {3.90753007, 12.76511}, //
+
3512 {3.90939999, 12.7665005}, //
+
3513 {3.91020012, 12.7671499}, //
+
3514 {3.91107988, 12.7675896}, //
+
3515 {3.91204, 12.7678204}, //
+
3516 {3.91307998, 12.7678404}, //
+
3517 {3.91421008, 12.7676497}, //
+
3518 {3.91542006, 12.7672596}, //
+
3519 {3.91671991, 12.7666502}, //
+
3520 {3.91809011, 12.76583}, //
+
3521 {3.91954994, 12.7648001}, //
+
3522 {3.92106009, 12.7635298}, //
+
3523 {3.92256999, 12.7619696}, //
+
3524 {3.9240799, 12.7601099}, //
+
3525 {3.92559004, 12.7579603}, //
+
3526 {3.92710996, 12.7555199}, //
+
3527 {3.9286201, 12.75278}, //
+
3528 {3.93013, 12.7497501}, //
+
3529 {3.93163991, 12.7464199}, //
+
3530 {3.93315005, 12.7427998}, //
+
3531 {3.93615007, 12.7397804}, //
+
3532 {3.93765998, 12.7382698}, //
+
3533 {3.93916011, 12.7367601}, //
+
3534 {3.94067001, 12.73524}, //
+
3535 {3.9421699, 12.7337303}, //
+
3536 {3.94518995, 12.73071}, //
+
3537 {3.9467001, 12.7292004}, //
+
3538 {3.94832993, 12.72575}, //
+
3539 {3.95020008, 12.7214203}, //
+
3540 {3.95233011, 12.7162104}, //
+
3541 {3.95471001, 12.7101202}, //
+
3542 {3.95735002, 12.7031603}, //
+
3543 {3.96023011, 12.6953096}, //
+
3544 {3.96337008, 12.6865902}, //
+
3545 {3.96675992, 12.67698}, //
+
3546 {3.97040009, 12.6665001}, //
+
3547 {3.97415996, 12.6554298}, //
+
3548 {3.97786999, 12.6440697}, //
+
3549 {3.98153996, 12.63241}, //
+
3550 {3.98516989, 12.6204596}, //
+
3551 {3.98874998, 12.6082201}, //
+
3552 {3.99229002, 12.5956802}, //
+
3553 {3.99579, 12.5828505}, //
+
3554 {3.99923992, 12.5697203}, //
+
3555 {4.00264978, 12.5563002}, //
+
3556 {4.00592995, 12.5429001}, //
+
3557 {4.00900984, 12.5298405}, //
+
3558 {4.01186991, 12.5171099}, //
+
3559 {4.01453018, 12.5047197}, //
+
3560 {4.01697016, 12.4926596}, //
+
3561 {4.01920986, 12.4809399}, //
+
3562 {4.02123022, 12.4695597}, //
+
3563 {4.02304983, 12.4585104}, //
+
3564 {4.0246501, 12.4477997}, //
+
3565 {4.02704, 12.4308004}, //
+
3566 {4.02967978, 12.4129696}, //
+
3567 {4.0325799, 12.3943005}, //
+
3568 {4.03571987, 12.3747902}, //
+
3569 {4.0391202, 12.3544502}, //
+
3570 {4.04258013, 12.3343496}, //
+
3571 {4.04330015, 12.3341999}, //
+
3572 {4.04526997, 12.3338003}, //
+
3573 {4.04741001, 12.3333597}, //
+
3574 {4.04971981, 12.33288}, //
+
3575 {4.05218983, 12.3323498}, //
+
3576 {4.05483007, 12.33179}, //
+
3577 {4.05763006, 12.3311796}, //
+
3578 {4.06060982, 12.3305302}, //
+
3579 {4.06373978, 12.3298302}, //
+
3580 {4.06704998, 12.3290997}, //
+
3581 {4.07041979, 12.3283997}, //
+
3582 {4.07375002, 12.3277798}, //
+
3583 {4.07703018, 12.32724}, //
+
3584 {4.08027983, 12.3267803}, //
+
3585 {4.08348989, 12.3264103}, //
+
3586 {4.08664989, 12.3261204}, //
+
3587 {4.08976984, 12.3259201}, //
+
3588 {4.09286022, 12.3257904}, //
+
3589 {4.09590006, 12.3257504}, //
+
3590 {4.10001993, 12.3257704}, //
+
3591 {4.10485983, 12.3258305}, //
+
3592 {4.1104002, 12.3259401}, //
+
3593 {4.11666012, 12.3260899}, //
+
3594 {4.12362003, 12.3262701}, //
+
3595 {4.13129997, 12.3265104}, //
+
3596 {4.13968992, 12.3267803}, //
+
3597 {4.14878988, 12.3270903}, //
+
3598 {4.15859985, 12.3274498}, //
+
3599 {4.16859007, 12.3278503}, //
+
3600 {4.17819977, 12.32829}, //
+
3601 {4.1874299, 12.3287697}, //
+
3602 {4.19629002, 12.3292904}, //
+
3603 {4.20477009, 12.3298502}, //
+
3604 {4.21287012, 12.3304501}, //
+
3605 {4.22059011, 12.33109}, //
+
3606 {4.22793007, 12.3317804}, //
+
3607 {4.2349, 12.3325005}, //
+
3608 {4.23854017, 12.3333197}, //
+
3609 {4.24193001, 12.33426}, //
+
3610 {4.24506998, 12.33533}, //
+
3611 {4.24795008, 12.3365202}, //
+
3612 {4.25058985, 12.3378401}, //
+
3613 {4.25297022, 12.3392801}, //
+
3614 {4.25509977, 12.3408403}, //
+
3615 {4.25696993, 12.3425303}, //
+
3616 {4.25860023, 12.3443499}, //
+
3617 {4.26006985, 12.3462601}, //
+
3618 {4.26144981, 12.3482103}, //
+
3619 {4.26276016, 12.3502102}, //
+
3620 {4.2639699, 12.3522396}, //
+
3621 {4.26511002, 12.3543196}, //
+
3622 {4.26616001, 12.3564396}, //
+
3623 {4.26711988, 12.3585997}, //
+
3624 {4.26800013, 12.3607998}, //
+
3625 {4.26879978, 12.3630505}, //
+
3626 {4.26883984, 12.3652201}, //
+
3627 {4.26897001, 12.3672304}, //
+
3628 {4.26917982, 12.3690701}, //
+
3629 {4.26947021, 12.3707399}, //
+
3630 {4.26984978, 12.3722401}, //
+
3631 {4.27030993, 12.37358}, //
+
3632 {4.2708602, 12.3747597}, //
+
3633 {4.2714901, 12.3757601}, //
+
3634 {4.27220011, 12.3766003}, //
+
3635 {4.27386999, 12.3774405}, //
+
3636 {4.27586985, 12.3784399}, //
+
3637 {4.27821016, 12.3796196}, //
+
3638 {4.28088999, 12.3809605}, //
+
3639 {4.28389978, 12.3824596}, //
+
3640 {4.28724003, 12.3841295}, //
+
3641 {4.29092979, 12.3859701}, //
+
3642 {4.29495001, 12.3879805}, //
+
3643 {4.29930019, 12.3901501}, //
+
3644 {4.30670977, 12.39254}, //
+
3645 {4.31386995, 12.3951797}, //
+
3646 {4.32076979, 12.3980703}, //
+
3647 {4.32742977, 12.4012098}, //
+
3648 {4.33382988, 12.4046001}, //
+
3649 {4.33999014, 12.4082403}, //
+
3650 {4.34589005, 12.4121304}, //
+
3651 {4.3515501, 12.4162598}, //
+
3652 {4.35694981, 12.4206495}, //
+
3653 {4.35770988, 12.4206896}, //
+
3654 {4.35845995, 12.4208202}, //
+
3655 {4.35922003, 12.42103}, //
+
3656 {4.35997009, 12.42132}, //
+
3657 {4.36073017, 12.4216995}, //
+
3658 {4.36148024, 12.4221601}, //
+
3659 {4.36223984, 12.4227104}, //
+
3660 {4.3629899, 12.4233398}, //
+
3661 {4.36374998, 12.4240503}, //
+
3662 {4.36828995, 12.4270697}, //
+
3663 {4.37287998, 12.43009}, //
+
3664 {4.37750006, 12.4331102}, //
+
3665 {4.38216019, 12.4361296}, //
+
3666 {4.38686991, 12.4391499}, //
+
3667 {4.39162016, 12.4421597}, //
+
3668 {4.39639997, 12.4451799}, //
+
3669 {4.40122986, 12.4481897}, //
+
3670 {4.4060998, 12.4511995}, //
+
3671 {4.41085005, 12.4540901}, //
+
3672 {4.41530991, 12.4567204}, //
+
3673 {4.41947985, 12.4591103}, //
+
3674 {4.42335987, 12.4612398}, //
+
3675 {4.42693996, 12.4631205}, //
+
3676 {4.43023014, 12.4647598}, //
+
3677 {4.43322992, 12.4661398}, //
+
3678 {4.43593979, 12.4672699}, //
+
3679 {4.4383502, 12.4681501}, //
+
3680 {4.43155003, 12.4376497}, //
+
3681 {4.43150997, 12.4376297}, //
+
3682 {4.4313798, 12.4375696}, //
+
3683 {4.43116999, 12.4374599}, //
+
3684 {4.43050003, 12.43713}, //
+
3685 {4.43003988, 12.4368896}, //
+
3686 {4.42949009, 12.4366198}, //
+
3687 {4.42886019, 12.4363098}, //
+
3688 {4.42815018, 12.4359503}, //
+
3689 {4.42737007, 12.4355698}, //
+
3690 {4.42654991, 12.4351902}, //
+
3691 {4.42569017, 12.4348202}, //
+
3692 {4.42478991, 12.4344397}, //
+
3693 {4.42385006, 12.4340601}, //
+
3694 {4.42286015, 12.4336796}, //
+
3695 {4.42183018, 12.4333096}, //
+
3696 {4.42076015, 12.43293}, //
+
3697 {4.41965008, 12.4325504}, //
+
3698 {4.41855001, 12.4321499}, //
+
3699 {4.41749001, 12.4317102}, //
+
3700 {4.41647005, 12.4312296}, //
+
3701 {4.41549015, 12.4307003}, //
+
3702 {4.41454983, 12.4301395}, //
+
3703 {4.41365004, 12.4295301}, //
+
3704 {4.41278982, 12.4288797}, //
+
3705 {4.41198015, 12.4281797}, //
+
3706 {4.41120005, 12.4274502}, //
+
3707 {4.40902996, 12.42661}, //
+
3708 {4.40702009, 12.4256096}, //
+
3709 {4.40517998, 12.4244299}, //
+
3710 {4.40351009, 12.42309}, //
+
3711 {4.40200996, 12.4215899}, //
+
3712 {4.40067005, 12.41992}, //
+
3713 {4.39948988, 12.4180803}, //
+
3714 {4.39848995, 12.41607}, //
+
3715 {4.39764977, 12.4139004}, //
+
3716 {4.3961401, 12.4123497}, //
+
3717 {4.39462996, 12.4107103}, //
+
3718 {4.39311981, 12.4089899}, //
+
3719 {4.39161015, 12.4071798}, //
+
3720 {4.39008999, 12.4053001}, //
+
3721 {4.38857985, 12.4033203}, //
+
3722 {4.38707018, 12.4012699}, //
+
3723 {4.38556004, 12.3991203}, //
+
3724 {4.38404989, 12.3969002}, //
+
3725 {4.38254976, 12.3947296}, //
+
3726 {4.38105011, 12.3927202}, //
+
3727 {4.37953997, 12.3908901}, //
+
3728 {4.37803984, 12.3892202}, //
+
3729 {4.37653017, 12.3877201}, //
+
3730 {4.37503004, 12.3863897}, //
+
3731 {4.3735199, 12.3852196}, //
+
3732 {4.37201023, 12.3842297}, //
+
3733 {4.37050009, 12.3834}, //
+
3734 {4.36667013, 12.3818302}, //
+
3735 {4.36271, 12.3801298}, //
+
3736 {4.35863018, 12.3782997}, //
+
3737 {4.3544302, 12.3763504}, //
+
3738 {4.35009003, 12.3742704}, //
+
3739 {4.34563017, 12.3720703}, //
+
3740 {4.34105015, 12.3697395}, //
+
3741 {4.33633995, 12.36728}, //
+
3742 {4.33150005, 12.3647003}, //
+
3743 {4.32675982, 12.3620901}, //
+
3744 {4.32229996, 12.35952}, //
+
3745 {4.31814003, 12.3569899}, //
+
3746 {4.31428003, 12.3544998}, //
+
3747 {4.31069994, 12.3520603}, //
+
3748 {4.30740976, 12.3496599}, //
+
3749 {4.30441999, 12.3472996}, //
+
3750 {4.30171013, 12.3449802}, //
+
3751 {4.29930019, 12.3427}, //
+
3752 {4.29606009, 12.3404102}, //
+
3753 {4.29235983, 12.3380899}, //
+
3754 {4.28818989, 12.3357201}, //
+
3755 {4.28356981, 12.3333101}, //
+
3756 {4.27849007, 12.3308601}, //
+
3757 {4.27294016, 12.3283701}, //
+
3758 {4.26694012, 12.32584}, //
+
3759 {4.26047993, 12.3232603}, //
+
3760 {4.25355005, 12.3206501}, //
+
3761 {4.24658012, 12.31812}, //
+
3762 {4.23999023, 12.3157997}, //
+
3763 {4.23377991, 12.3136902}, //
+
3764 {4.22794008, 12.3117905}, //
+
3765 {4.22247982, 12.3100901}, //
+
3766 {4.21739006, 12.30861}, //
+
3767 {4.21268988, 12.3073301}, //
+
3768 {4.20835018, 12.3062601}, //
+
3769 {4.20440006, 12.3053999}, //
+
3770 {4.20297003, 12.3053598}, //
+
3771 {4.20171022, 12.3052301}, //
+
3772 {4.20062017, 12.3050203}, //
+
3773 {4.19969988, 12.3047304}, //
+
3774 {4.1989398, 12.3043499}, //
+
3775 {4.19835997, 12.3038902}, //
+
3776 {4.19793987, 12.30334}, //
+
3777 {4.19768, 12.3027096}, //
+
3778 {4.19759989, 12.302}, //
+
3779 {4.19768, 12.3012199}, //
+
3780 {4.19792986, 12.3003998}, //
+
3781 {4.19834995, 12.2995396}, //
+
3782 {4.19892979, 12.2986403}, //
+
3783 {4.19967985, 12.2976999}, //
+
3784 {4.20060015, 12.29671}, //
+
3785 {4.20168018, 12.29568}, //
+
3786 {4.20292997, 12.29461}, //
+
3787 {4.20434999, 12.2934999}, //
+
3788 {4.20588017, 12.2924204}, //
+
3789 {4.20744991, 12.29142}, //
+
3790 {4.20907021, 12.2905102}, //
+
3791 {4.21072006, 12.28967}, //
+
3792 {4.21240997, 12.2889204}, //
+
3793 {4.21414995, 12.2882605}, //
+
3794 {4.21592999, 12.2876701}, //
+
3795 {4.21774006, 12.2871704}, //
+
3796 {4.2196002, 12.2867498}, //
+
3797 {4.22150993, 12.2863903}, //
+
3798 {4.2234602, 12.2860804}, //
+
3799 {4.22546005, 12.2858105}, //
+
3800 {4.22748995, 12.2855701}, //
+
3801 {4.22956991, 12.2853899}, //
+
3802 {4.23168993, 12.2852402}, //
+
3803 {4.23385, 12.2851295}, //
+
3804 {4.23605013, 12.2850704}, //
+
3805 {4.23829985, 12.2850504}, //
+
3806 {4.23995018, 12.2851105}, //
+
3807 {4.24188995, 12.2853003}, //
+
3808 {4.24412012, 12.2856102}, //
+
3809 {4.24665022, 12.2860498}, //
+
3810 {4.24947023, 12.2866096}, //
+
3811 {4.25259018, 12.2872896}, //
+
3812 {4.25600004, 12.2881002}, //
+
3813 {4.25969982, 12.2890396}, //
+
3814 {4.26370001, 12.2901001}, //
+
3815 {4.26786995, 12.2912502}, //
+
3816 {4.27206993, 12.29245}, //
+
3817 {4.27631998, 12.2936897}, //
+
3818 {4.28061008, 12.2949696}, //
+
3819 {4.28494978, 12.2962904}, //
+
3820 {4.28931999, 12.2976599}, //
+
3821 {4.2937398, 12.2990599}, //
+
3822 {4.29820013, 12.3005104}, //
+
3823 {4.30270004, 12.302}, //
+
3824 {4.30705023, 12.3034697}, //
+
3825 {4.31107998, 12.3048496}, //
+
3826 {4.31476021, 12.3061504}, //
+
3827 {4.31810999, 12.3073597}, //
+
3828 {4.3211298, 12.3084898}, //
+
3829 {4.3238101, 12.3095303}, //
+
3830 {4.32615995, 12.3104897}, //
+
3831 {4.32816982, 12.3113604}, //
+
3832 {4.3298502, 12.31215}, //
+
3833 {4.33210993, 12.3143301}, //
+
3834 {4.33436012, 12.31635}, //
+
3835 {4.33661985, 12.3181896}, //
+
3836 {4.33887005, 12.31987}, //
+
3837 {4.34112978, 12.3213797}, //
+
3838 {4.34337997, 12.3227301}, //
+
3839 {4.34564018, 12.3239002}, //
+
3840 {4.3478899, 12.3249102}, //
+
3841 {4.35015011, 12.3257504}, //
+
3842 {4.35164022, 12.3257704}, //
+
3843 {4.35308981, 12.3258305}, //
+
3844 {4.3544898, 12.3259401}, //
+
3845 {4.35586023, 12.3260899}, //
+
3846 {4.35718012, 12.3262701}, //
+
3847 {4.35845995, 12.3265104}, //
+
3848 {4.3597002, 12.3267803}, //
+
3849 {4.36089993, 12.3270903}, //
+
3850 {4.36205006, 12.3274498}, //
+
3851 {4.36312008, 12.3278503}, //
+
3852 {4.36405993, 12.32829}, //
+
3853 {4.36488008, 12.3287697}, //
+
3854 {4.36558008, 12.3292904}, //
+
3855 {4.36613989, 12.3298502}, //
+
3856 {4.36658001, 12.3304501}, //
+
3857 {4.36689997, 12.33109}, //
+
3858 {4.36709023, 12.3317804}, //
+
3859 {4.36714983, 12.3325005}, //
+
3860 {4.36789989, 12.3332596}, //
+
3861 {4.36863995, 12.3340101}, //
+
3862 {4.36939001, 12.3347702}, //
+
3863 {4.37014008, 12.3355198}, //
+
3864 {4.37089014, 12.3362799}, //
+
3865 {4.37164021, 12.3370304}, //
+
3866 {4.37238979, 12.3377895}, //
+
3867 {4.37314987, 12.3385401}, //
+
3868 {4.37389994, 12.3393002}, //
+
3869 {4.37468004, 12.3400497}, //
+
3870 {4.37549019, 12.3408098}, //
+
3871 {4.37634993, 12.3415604}, //
+
3872 {4.37725019, 12.34231}, //
+
3873 {4.37819004, 12.3430595}, //
+
3874 {4.37916994, 12.3438101}, //
+
3875 {4.3801899, 12.3445597}, //
+
3876 {4.3812499, 12.3452997}, //
+
3877 {4.38234997, 12.3460503}, //
+
3878 {4.38346004, 12.3467598}, //
+
3879 {4.38453007, 12.3473902}, //
+
3880 {4.38556004, 12.3479404}, //
+
3881 {4.38654995, 12.3484001}, //
+
3882 {4.3874898, 12.3487797}, //
+
3883 {4.38839006, 12.3490696}, //
+
3884 {4.3892498, 12.3492804}, //
+
3885 {4.39006996, 12.3494101}, //
+
3886 {4.39085007, 12.3494501}, //
+
3887 {4.39424992, 12.3494501}, //
+
3888 {4.39424992, 12.3545504}, //
+
3889 {4.39433002, 12.3556995}, //
+
3890 {4.39457989, 12.3569002}, //
+
3891 {4.39499998, 12.3581305}, //
+
3892 {4.39557981, 12.3594103}, //
+
3893 {4.39632988, 12.3607302}, //
+
3894 {4.39725018, 12.3620796}, //
+
3895 {4.39833021, 12.3634796}, //
+
3896 {4.39958, 12.3649197}, //
+
3897 {4.40100002, 12.3663998}, //
+
3898 {4.40251017, 12.3679104}, //
+
3899 {4.40704012, 12.3724403}, //
+
3900 {4.41158009, 12.3769798}, //
+
3901 {4.4145999, 12.3800001}, //
+
3902 {4.41532993, 12.3807297}, //
+
3903 {4.41602993, 12.3814201}, //
+
3904 {4.41667986, 12.3820696}, //
+
3905 {4.41729021, 12.3826799}, //
+
3906 {4.41785002, 12.3832397}, //
+
3907 {4.41837978, 12.3837605}, //
+
3908 {4.41885996, 12.3842297}, //
+
3909 {4.41930008, 12.3846598}, //
+
3910 {4.41970015, 12.3850498}, //
+
3911 {4.42010021, 12.3854103}, //
+
3912 {4.42053986, 12.3857203}, //
+
3913 {4.42102003, 12.3859901}, //
+
3914 {4.42153978, 12.3862305}, //
+
3915 {4.42210007, 12.3864098}, //
+
3916 {4.42269993, 12.3865604}, //
+
3917 {4.42333984, 12.3866701}, //
+
3918 {4.42402983, 12.3867302}, //
+
3919 {4.42474985, 12.3867502}, //
+
3920 {4.42547989, 12.3867302}, //
+
3921 {4.42617989, 12.3866701}, //
+
3922 {4.42682981, 12.3865604}, //
+
3923 {4.42744017, 12.3864098}, //
+
3924 {4.42799997, 12.3862305}, //
+
3925 {4.42853022, 12.3859901}, //
+
3926 {4.42900991, 12.3857203}, //
+
3927 {4.42945004, 12.3854103}, //
+
3928 {4.4298501, 12.3850498}, //
+
3929 {4.43021011, 12.3846798}, //
+
3930 {4.43052006, 12.3843098}, //
+
3931 {4.43078995, 12.3839397}, //
+
3932 {4.4310298, 12.3835697}, //
+
3933 {4.43121004, 12.3831997}, //
+
3934 {4.43135977, 12.3828297}, //
+
3935 {4.43146992, 12.3824501}, //
+
3936 {4.43153, 12.3820801}, //
+
3937 {4.43155003, 12.3816996}, //
+
3938 {4.43155003, 12.3766003}, //
+
3939 {4.42474985, 12.3427}, //
+
3940 {4.42418003, 12.3421297}, //
+
3941 {4.4231801, 12.3411303}, //
+
3942 {4.42248011, 12.3404303}, //
+
3943 {4.42165995, 12.3396101}, //
+
3944 {4.41965008, 12.3375998}, //
+
3945 {4.41845989, 12.3364496}, //
+
3946 {4.41715002, 12.3352499}, //
+
3947 {4.41570997, 12.3340101}, //
+
3948 {4.41414022, 12.3327303}, //
+
3949 {4.41244984, 12.3314104}, //
+
3950 {4.41063023, 12.33004}, //
+
3951 {4.40867996, 12.32864}, //
+
3952 {4.4066, 12.3271904}, //
+
3953 {4.40439987, 12.3256998}, //
+
3954 {4.40221024, 12.3241796}, //
+
3955 {4.40013981, 12.3226099}, //
+
3956 {4.39819002, 12.3210096}, //
+
3957 {4.39637995, 12.3193502}, //
+
3958 {4.39468002, 12.3176603}, //
+
3959 {4.3931098, 12.3159199}, //
+
3960 {4.39167023, 12.3141403}, //
+
3961 {4.39034986, 12.3123198}, //
+
3962 {4.38915014, 12.3104496}, //
+
3963 {4.38805008, 12.3085899}, //
+
3964 {4.38699007, 12.3067799}, //
+
3965 {4.38597012, 12.3050003}, //
+
3966 {4.38499022, 12.3032598}, //
+
3967 {4.38404989, 12.3015699}, //
+
3968 {4.3831501, 12.2999201}, //
+
3969 {4.38228989, 12.2982998}, //
+
3970 {4.38148022, 12.29673}, //
+
3971 {4.38070011, 12.2952003}, //
+
3972 {4.37992001, 12.2944498}, //
+
3973 {4.37909985, 12.2937098}, //
+
3974 {4.37824011, 12.2929602}, //
+
3975 {4.37733984, 12.2922096}, //
+
3976 {4.37639999, 12.29146}, //
+
3977 {4.37541008, 12.2907104}, //
+
3978 {4.37438011, 12.2899599}, //
+
3979 {4.37331009, 12.2891998}, //
+
3980 {4.37220001, 12.2884502}, //
+
3981 {4.37096977, 12.2876501}, //
+
3982 {4.3695302, 12.2867699}, //
+
3983 {4.36787987, 12.2858105}, //
+
3984 {4.3660202, 12.2847605}, //
+
3985 {4.36394978, 12.2836199}, //
+
3986 {4.36167002, 12.2824097}, //
+
3987 {4.35916996, 12.2811003}, //
+
3988 {4.35647011, 12.2797203}, //
+
3989 {4.35354996, 12.2782497}, //
+
3990 {4.35028982, 12.2773399}, //
+
3991 {4.34651995, 12.2760897}, //
+
3992 {4.34225988, 12.2744999}, //
+
3993 {4.33749008, 12.2725801}, //
+
3994 {4.33221006, 12.2703104}, //
+
3995 {4.32643986, 12.2677202}, //
+
3996 {4.32015991, 12.26478}, //
+
3997 {4.31337976, 12.2615099}, //
+
3998 {4.30609989, 12.2579002}, //
+
3999 {4.30014992, 12.2557898}, //
+
4000 {4.29437017, 12.2539701}, //
+
4001 {4.28876019, 12.25245}, //
+
4002 {4.28330994, 12.2512197}, //
+
4003 {4.27802992, 12.2502804}, //
+
4004 {4.27292013, 12.24963}, //
+
4005 {4.2679801, 12.24928}, //
+
4006 {4.26320982, 12.2492199}, //
+
4007 {4.25860023, 12.2494497}, //
+
4008 {4.25412989, 12.2499104}, //
+
4009 {4.24974012, 12.2505398}, //
+
4010 {4.24544001, 12.2513304}, //
+
4011 {4.24122, 12.2522898}, //
+
4012 {4.2370801, 12.2534199}, //
+
4013 {4.23301983, 12.2547197}, //
+
4014 {4.22905016, 12.2561798}, //
+
4015 {4.22516012, 12.2578096}, //
+
4016 {4.22135019, 12.2595997}, //
+
4017 {4.21775007, 12.2614698}, //
+
4018 {4.21448994, 12.2632904}, //
+
4019 {4.21155977, 12.2650805}, //
+
4020 {4.20896006, 12.26682}, //
+
4021 {4.20669985, 12.2685204}, //
+
4022 {4.20477009, 12.2701797}, //
+
4023 {4.20317984, 12.2717896}, //
+
4024 {4.20192003, 12.2733698}, //
+
4025 {4.20100021, 12.2749004}, //
+
4026 {4.19937992, 12.2756205}, //
+
4027 {4.19755983, 12.27631}, //
+
4028 {4.19552994, 12.2769499}, //
+
4029 {4.19329023, 12.2775497}, //
+
4030 {4.19083977, 12.2781096}, //
+
4031 {4.18817997, 12.2786303}, //
+
4032 {4.18530989, 12.27911}, //
+
4033 {4.18223, 12.2795496}, //
+
4034 {4.17894983, 12.2799501}, //
+
4035 {4.17545986, 12.2803097}, //
+
4036 {4.17175007, 12.2806196}, //
+
4037 {4.16784, 12.2808905}, //
+
4038 {4.16372013, 12.2811298}, //
+
4039 {4.15937996, 12.2813101}, //
+
4040 {4.15483999, 12.2814598}, //
+
4041 {4.15009022, 12.2815704}, //
+
4042 {4.14512014, 12.2816296}, //
+
4043 {4.1399498, 12.2816496}, //
+
4044 {4.1361599, 12.2823801}, //
+
4045 {4.13232994, 12.2830801}, //
+
4046 {4.12845993, 12.2837296}, //
+
4047 {4.12454987, 12.2843399}, //
+
4048 {4.12059021, 12.2848997}, //
+
4049 {4.11659002, 12.28543}, //
+
4050 {4.11254978, 12.2859097}, //
+
4051 {4.10846996, 12.2863503}, //
+
4052 {4.10435009, 12.2867498}, //
+
4053 {4.10026979, 12.2871504}, //
+
4054 {4.09631014, 12.28759}, //
+
4055 {4.09248018, 12.2880697}, //
+
4056 {4.08877993, 12.2886}, //
+
4057 {4.08519983, 12.2891598}, //
+
4058 {4.08174992, 12.2897701}, //
+
4059 {4.07842016, 12.2904196}, //
+
4060 {4.07522011, 12.2911196}, //
+
4061 {4.07215023, 12.2918501}, //
+
4062 {4.06990004, 12.2933502}, //
+
4063 {4.06769991, 12.2948503}, //
+
4064 {4.06553984, 12.2963495}, //
+
4065 {4.06341982, 12.2978497}, //
+
4066 {4.06133986, 12.2993498}, //
+
4067 {4.05930996, 12.3008499}, //
+
4068 {4.0573101, 12.30235}, //
+
4069 {4.05535984, 12.3038502}, //
+
4070 {4.05345011, 12.3053503}, //
+
4071 {4.05163002, 12.30688}, //
+
4072 {4.04994011, 12.3084602}, //
+
4073 {4.0483799, 12.31007}, //
+
4074 {4.04693985, 12.3117304}, //
+
4075 {4.04646015, 12.3123398}, //
+
4076 {4.0427599, 12.3332701}, //
+
4077 {4.04258013, 12.3343496}, //
+
4078 {4.03652, 12.3355598}, //
+
4079 {4.03578997, 12.3357096}, //
+
4080 {4.03527021, 12.3358202}, //
+
4081 {4.03494978, 12.3358803}, //
+
4082 {4.03485012, 12.3359003}, //
+
4083 {4.03619003, 12.33321}, //
+
4084 {4.03655005, 12.3325005}, //
+
4085 {4.03695011, 12.3316898}, //
+
4086 {4.03739023, 12.33076}, //
+
4087 {4.03786993, 12.32969}, //
+
4088 {4.03839016, 12.3284998}, //
+
4089 {4.03894997, 12.3271904}, //
+
4090 {4.03954983, 12.3257399}, //
+
4091 {4.04019022, 12.3241701}, //
+
4092 {4.0408802, 12.3224802}, //
+
4093 {4.04160023, 12.3206501}, //
+
4094 {4.04241991, 12.3187799}, //
+
4095 {4.04336023, 12.3169603}, //
+
4096 {4.04442978, 12.3151703}, //
+
4097 {4.04561996, 12.3134298}, //
+
4098 {4.04646015, 12.3123398}, //
+
4099 {4.04665995, 12.3112497}, //
+
4100 {4.05079985, 12.2883902}, //
+
4101 {4.0552001, 12.2646999}, //
+
4102 {4.06025982, 12.2432699}, //
+
4103 {4.06489992, 12.2226801}, //
+
4104 {4.06911993, 12.2029305}, //
+
4105 {4.07292986, 12.1840096}, //
+
4106 {4.07632017, 12.1659298}, //
+
4107 {4.07647991, 12.1649904}, //
+
4108 {4.07438993, 12.1645098}, //
+
4109 {4.0722599, 12.1640501}, //
+
4110 {4.07038021, 12.1636696}, //
+
4111 {4.06873989, 12.1633797}, //
+
4112 {4.06735992, 12.1631699}, //
+
4113 {4.06622982, 12.1630402}, //
+
4114 {4.06535006, 12.1630001}, //
+
4115 {4.06474018, 12.1629601}, //
+
4116 {4.06442022, 12.1628304}, //
+
4117 {4.0644002, 12.1626196}, //
+
4118 {4.06467009, 12.1623297}, //
+
4119 {4.06522989, 12.1619501}, //
+
4120 {4.06608009, 12.1614904}, //
+
4121 {4.06723022, 12.1609402}, //
+
4122 {4.0686698, 12.1603098}, //
+
4123 {4.07040024, 12.1596003}, //
+
4124 {4.07233, 12.1587801}, //
+
4125 {4.07433987, 12.1578398}, //
+
4126 {4.07643986, 12.1567698}, //
+
4127 {4.07805014, 12.15588}, //
+
4128 {4.07928991, 12.1486797}, //
+
4129 {4.08184004, 12.1322699}, //
+
4130 {4.08398008, 12.1166897}, //
+
4131 {4.08570004, 12.1019497}, //
+
4132 {4.08721018, 12.0904799}, //
+
4133 {4.08871984, 12.07868}, //
+
4134 {4.09022999, 12.0665398}, //
+
4135 {4.09173012, 12.05406}, //
+
4136 {4.09323978, 12.0412502}, //
+
4137 {4.09464979, 12.0288897}, //
+
4138 {4.09442997, 12.02878}, //
+
4139 {4.09335995, 12.02808}, //
+
4140 {4.09250021, 12.0273504}, //
+
4141 {4.09146976, 12.0263205}, //
+
4142 {4.09115982, 12.0260096}, //
+
4143 {4.09079981, 12.02565}, //
+
4144 {4.0904398, 12.0252504}, //
+
4145 {4.09012985, 12.0248098}, //
+
4146 {4.08985996, 12.0243301}, //
+
4147 {4.08962011, 12.0237999}, //
+
4148 {4.08943987, 12.0232401}, //
+
4149 {4.08929014, 12.0226297}, //
+
4150 {4.08917999, 12.0219803}, //
+
4151 {4.08911991, 12.0212803}, //
+
4152 {4.08909988, 12.0205498}, //
+
4153 {4.08909988, 12.0137997}, //
+
4154 {4.08969021, 12.0135498}, //
+
4155 {4.09041977, 12.0132303}, //
+
4156 {4.09669018, 12.0105305}, //
+
4157 {4.09775019, 12.0008001}, //
+
4158 {4.09924984, 11.9866505}, //
+
4159 {4.10075998, 11.9724846}, //
+
4160 {4.10227013, 11.9586134}, //
+
4161 {4.10377979, 11.9450331}, //
+
4162 {4.10527992, 11.9317455}, //
+
4163 {4.10679007, 11.9187517}, //
+
4164 {4.10756016, 11.9122629}, //
+
4165 {4.10680008, 11.9121809}, //
+
4166 {4.1062398, 11.9121199}, //
+
4167 {4.10605001, 11.9120998}, //
+
4168 {4.10605001, 11.8832502}, //
+
4169 {4.10607004, 11.8814354}, //
+
4170 {4.10613012, 11.8797436}, //
+
4171 {4.1062398, 11.8781776}, //
+
4172 {4.10639, 11.8767357}, //
+
4173 {4.10656977, 11.8754196}, //
+
4174 {4.10681009, 11.8742275}, //
+
4175 {4.10707998, 11.8731604}, //
+
4176 {4.10738993, 11.8722181}, //
+
4177 {4.10774994, 11.8713999}, //
+
4178 {4.1084199, 11.8700571}, //
+
4179 {4.10868979, 11.8695107}, //
+
4180 {4.10893011, 11.8690491}, //
+
4181 {4.10910988, 11.8686724}, //
+
4182 {4.10926008, 11.8683777}, //
+
4183 {4.10944986, 11.868}, //
+
4184 {4.1104598, 11.868062}, //
+
4185 {4.11195993, 11.8682489}, //
+
4186 {4.11296988, 11.8684063}, //
+
4187 {4.11280012, 11.8697004}, //
+
4188 {4.11129999, 11.8815241}, //
+
4189 {4.10979986, 11.8936415}, //
+
4190 {4.1082902, 11.9060497}, //
+
4191 {4.10756016, 11.9122629}, //
+
4192 {4.11528015, 11.9130983}, //
+
4193 {4.12130022, 11.9137497}, //
+
4194 {4.12473011, 11.9141493}, //
+
4195 {4.12825012, 11.9145899}, //
+
4196 {4.13184023, 11.9150724}, //
+
4197 {4.13552999, 11.915597}, //
+
4198 {4.13928986, 11.9161644}, //
+
4199 {4.14313984, 11.9167719}, //
+
4200 {4.14707994, 11.9174232}, //
+
4201 {4.15110016, 11.9181147}, //
+
4202 {4.1552, 11.9188499}, //
+
4203 {4.15931988, 11.9196482}, //
+
4204 {4.16340017, 11.9205294}, //
+
4205 {4.16743994, 11.9214935}, //
+
4206 {4.17144012, 11.9225435}, //
+
4207 {4.17539978, 11.9236774}, //
+
4208 {4.17930984, 11.9248943}, //
+
4209 {4.18317986, 11.9261961}, //
+
4210 {4.18700981, 11.9275808}, //
+
4211 {4.19080019, 11.9290504}, //
+
4212 {4.19384003, 11.9304667}, //
+
4213 {4.19692993, 11.9317169}, //
+
4214 {4.20004988, 11.9328003}, //
+
4215 {4.20320988, 11.9337168}, //
+
4216 {4.20641994, 11.9344673}, //
+
4217 {4.20967007, 11.93505}, //
+
4218 {4.21295023, 11.9354668}, //
+
4219 {4.21627998, 11.9357166}, //
+
4220 {4.21964979, 11.9357996}, //
+
4221 {4.22302008, 11.9357576}, //
+
4222 {4.22633982, 11.9356318}, //
+
4223 {4.22962999, 11.9354219}, //
+
4224 {4.2328701, 11.9351282}, //
+
4225 {4.23607016, 11.9347506}, //
+
4226 {4.23923016, 11.934289}, //
+
4227 {4.24234009, 11.9337425}, //
+
4228 {4.24541998, 11.9331141}, //
+
4229 {4.2484498, 11.9323997}, //
+
4230 {4.25076008, 11.9323587}, //
+
4231 {4.25314999, 11.9322348}, //
+
4232 {4.25562, 11.9320278}, //
+
4233 {4.25818014, 11.9317379}, //
+
4234 {4.26081991, 11.931366}, //
+
4235 {4.26353979, 11.9309111}, //
+
4236 {4.26633978, 11.9303732}, //
+
4237 {4.26922989, 11.9297533}, //
+
4238 {4.27220011, 11.9290504}, //
+
4239 {4.27510977, 11.9290295}, //
+
4240 {4.27780008, 11.9289656}, //
+
4241 {4.28029013, 11.9288607}, //
+
4242 {4.28256989, 11.9287138}, //
+
4243 {4.28462982, 11.928525}, //
+
4244 {4.28648996, 11.9282942}, //
+
4245 {4.28813982, 11.9280224}, //
+
4246 {4.28956985, 11.9277067}, //
+
4247 {4.29080009, 11.92735}, //
+
4248 {4.29191017, 11.9269934}, //
+
4249 {4.29298019, 11.9266777}, //
+
4250 {4.29401016, 11.9264059}, //
+
4251 {4.29500008, 11.9261751}, //
+
4252 {4.29593992, 11.9259863}, //
+
4253 {4.29684019, 11.9258394}, //
+
4254 {4.29769993, 11.9257336}, //
+
4255 {4.29852009, 11.9256706}, //
+
4256 {4.29930019, 11.9256496}, //
+
4257 {4.3000598, 11.9256077}, //
+
4258 {4.30080986, 11.9254818}, //
+
4259 {4.30156994, 11.925272}, //
+
4260 {4.30232, 11.9249783}, //
+
4261 {4.30308008, 11.9246006}, //
+
4262 {4.30383015, 11.924139}, //
+
4263 {4.30459023, 11.9235926}, //
+
4264 {4.30533981, 11.9229641}, //
+
4265 {4.30609989, 11.9222498}, //
+
4266 {4.30694008, 11.9214935}, //
+
4267 {4.30794001, 11.9207392}, //
+
4268 {4.30912018, 11.9199829}, //
+
4269 {4.31046009, 11.9192276}, //
+
4270 {4.31196022, 11.9184723}, //
+
4271 {4.3136301, 11.917717}, //
+
4272 {4.31547022, 11.9169607}, //
+
4273 {4.31748009, 11.9162064}, //
+
4274 {4.31965017, 11.9154501}, //
+
4275 {4.32186985, 11.9147472}, //
+
4276 {4.3240099, 11.9141273}, //
+
4277 {4.32606983, 11.9135885}, //
+
4278 {4.32804012, 11.9131336}, //
+
4279 {4.32991982, 11.9127617}, //
+
4280 {4.33171988, 11.9124718}, //
+
4281 {4.33342981, 11.9122648}, //
+
4282 {4.33506012, 11.9121408}, //
+
4283 {4.33659983, 11.9120998}, //
+
4284 {4.33810997, 11.9121408}, //
+
4285 {4.33962011, 11.9122648}, //
+
4286 {4.34112978, 11.9124718}, //
+
4287 {4.34262991, 11.9127617}, //
+
4288 {4.34414005, 11.9131336}, //
+
4289 {4.34564018, 11.9135885}, //
+
4290 {4.34714985, 11.9141273}, //
+
4291 {4.34864998, 11.9147472}, //
+
4292 {4.35015011, 11.9154501}, //
+
4293 {4.35354996, 11.9154501}, //
+
4294 {4.35437012, 11.9154081}, //
+
4295 {4.35530996, 11.9152822}, //
+
4296 {4.35637999, 11.9150724}, //
+
4297 {4.35757017, 11.9147778}, //
+
4298 {4.35889006, 11.9144011}, //
+
4299 {4.3603301, 11.9139395}, //
+
4300 {4.36188984, 11.913393}, //
+
4301 {4.36358023, 11.9127636}, //
+
4302 {4.36539984, 11.9120502}, //
+
4303 {4.36729002, 11.9112844}, //
+
4304 {4.3691802, 11.9104748}, //
+
4305 {4.37105989, 11.9096222}, //
+
4306 {4.37295008, 11.9087267}, //
+
4307 {4.37482977, 11.9077883}, //
+
4308 {4.37670994, 11.906806}, //
+
4309 {4.37859011, 11.9057798}, //
+
4310 {4.3804698, 11.9047117}, //
+
4311 {4.38234997, 11.9035997}, //
+
4312 {4.3842001, 11.9024668}, //
+
4313 {4.3859601, 11.9013329}, //
+
4314 {4.38764, 11.9001999}, //
+
4315 {4.38922977, 11.8990669}, //
+
4316 {4.39074993, 11.897933}, //
+
4317 {4.39216995, 11.8968}, //
+
4318 {4.39351988, 11.8956671}, //
+
4319 {4.39477015, 11.8945332}, //
+
4320 {4.39594984, 11.8934002}, //
+
4321 {4.40004015, 11.889348}, //
+
4322 {4.40099001, 11.8884125}, //
+
4323 {4.40105009, 11.8883495}, //
+
4324 {4.4032402, 11.8861036}, //
+
4325 {4.40531015, 11.8839006}, //
+
4326 {4.40725994, 11.8817387}, //
+
4327 {4.40907001, 11.8796186}, //
+
4328 {4.41076994, 11.8775406}, //
+
4329 {4.41234016, 11.8755064}, //
+
4330 {4.41378021, 11.8735123}, //
+
4331 {4.4151001, 11.8715601}, //
+
4332 {4.41629982, 11.8696499}, //
+
4333 {4.41742992, 11.8677511}, //
+
4334 {4.41856003, 11.8658104}, //
+
4335 {4.41969013, 11.8638277}, //
+
4336 {4.42082024, 11.8618031}, //
+
4337 {4.42194986, 11.8597364}, //
+
4338 {4.42307997, 11.8576279}, //
+
4339 {4.42420006, 11.8554773}, //
+
4340 {4.42533016, 11.8532848}, //
+
4341 {4.42644978, 11.8510504}, //
+
4342 {4.42755985, 11.8488359}, //
+
4343 {4.42862988, 11.8467035}, //
+
4344 {4.42965984, 11.844656}, //
+
4345 {4.43065023, 11.8426905}, //
+
4346 {4.43159008, 11.840806}, //
+
4347 {4.43248987, 11.8390064}, //
+
4348 {4.43335009, 11.8372879}, //
+
4349 {4.43416977, 11.8356524}, //
+
4350 {4.43494987, 11.8340998}, //
+
4351 {4.43565989, 11.8326731}, //
+
4352 {4.43628979, 11.8314142}, //
+
4353 {4.43684006, 11.8303223}, //
+
4354 {4.43817997, 11.8276358}, //
+
4355 {4.43831015, 11.827384}, //
+
4356 {4.4383502, 11.8273001}, //
+
4357 {4.4383502, 11.79}, //
+
4358 {4.43797016, 11.7907562}, //
+
4359 {4.43767977, 11.7913427}, //
+
4360 {4.43730021, 11.792099}, //
+
4361 {4.43628979, 11.7941141}, //
+
4362 {4.43494987, 11.7967997}, //
+
4363 {4.4341898, 11.7983313}, //
+
4364 {4.43344021, 11.7999039}, //
+
4365 {4.43268013, 11.8015165}, //
+
4366 {4.43193007, 11.8031702}, //
+
4367 {4.43116999, 11.8048649}, //
+
4368 {4.43041992, 11.8065996}, //
+
4369 {4.42965984, 11.8083763}, //
+
4370 {4.42890978, 11.8101931}, //
+
4371 {4.42815018, 11.8120499}, //
+
4372 {4.42737007, 11.8139172}, //
+
4373 {4.42654991, 11.8157406}, //
+
4374 {4.42569017, 11.817522}, //
+
4375 {4.42478991, 11.8192596}, //
+
4376 {4.42385006, 11.8209543}, //
+
4377 {4.42286015, 11.8226061}, //
+
4378 {4.42183018, 11.824214}, //
+
4379 {4.42076015, 11.825778}, //
+
4380 {4.41965008, 11.8273001}, //
+
4381 {4.41855001, 11.8287687}, //
+
4382 {4.41749001, 11.8301544}, //
+
4383 {4.41647005, 11.8314562}, //
+
4384 {4.41549015, 11.8326731}, //
+
4385 {4.41454983, 11.833806}, //
+
4386 {4.41365004, 11.834856}, //
+
4387 {4.41278982, 11.8358212}, //
+
4388 {4.41198015, 11.8367023}, //
+
4389 {4.41120005, 11.8374996}, //
+
4390 {4.41041994, 11.8389378}, //
+
4391 {4.40959978, 11.840251}, //
+
4392 {4.40874004, 11.8414392}, //
+
4393 {4.40783978, 11.8425016}, //
+
4394 {4.40689993, 11.843441}, //
+
4395 {4.40591002, 11.8442564}, //
+
4396 {4.40488005, 11.844945}, //
+
4397 {4.40381002, 11.8455095}, //
+
4398 {4.40269995, 11.8459501}, //
+
4399 {4.40155983, 11.8463068}, //
+
4400 {4.40037012, 11.8466225}, //
+
4401 {4.39913988, 11.8468943}, //
+
4402 {4.39787006, 11.8471251}, //
+
4403 {4.39655018, 11.8473139}, //
+
4404 {4.39518976, 11.8474607}, //
+
4405 {4.39378977, 11.8475657}, //
+
4406 {4.39234018, 11.8476286}, //
+
4407 {4.39085007, 11.8476496}, //
+
4408 {4.39004993, 11.8483639}, //
+
4409 {4.38917017, 11.8489933}, //
+
4410 {4.38820982, 11.8495388}, //
+
4411 {4.38716984, 11.8500013}, //
+
4412 {4.38604021, 11.850378}, //
+
4413 {4.38483, 11.8506718}, //
+
4414 {4.38353014, 11.8508816}, //
+
4415 {4.38216019, 11.8510084}, //
+
4416 {4.38070011, 11.8510504}, //
+
4417 {4.37914991, 11.85256}, //
+
4418 {4.37751007, 11.8540697}, //
+
4419 {4.37579012, 11.8555784}, //
+
4420 {4.37399006, 11.8570852}, //
+
4421 {4.37210989, 11.8585901}, //
+
4422 {4.37014008, 11.8600941}, //
+
4423 {4.36810017, 11.861598}, //
+
4424 {4.36596012, 11.8630991}, //
+
4425 {4.36374998, 11.8646002}, //
+
4426 {4.36144018, 11.8667822}, //
+
4427 {4.3590498, 11.8687954}, //
+
4428 {4.35657978, 11.8706388}, //
+
4429 {4.35402012, 11.8723145}, //
+
4430 {4.35137987, 11.8738194}, //
+
4431 {4.34865999, 11.8751564}, //
+
4432 {4.34586, 11.8763227}, //
+
4433 {4.34296989, 11.8773212}, //
+
4434 {4.34000015, 11.87815}, //
+
4435 {4.33830023, 11.8789062}, //
+
4436 {4.33621979, 11.8796606}, //
+
4437 {4.3337698, 11.8804169}, //
+
4438 {4.33093977, 11.8811722}, //
+
4439 {4.32774019, 11.8819284}, //
+
4440 {4.3241601, 11.8826828}, //
+
4441 {4.32019997, 11.8834391}, //
+
4442 {4.31585979, 11.8841944}, //
+
4443 {4.31115007, 11.8849497}, //
+
4444 {4.30624008, 11.885685}, //
+
4445 {4.30129004, 11.8863773}, //
+
4446 {4.29628992, 11.8870277}, //
+
4447 {4.29125023, 11.8876362}, //
+
4448 {4.28617001, 11.8882027}, //
+
4449 {4.28104019, 11.8887281}, //
+
4450 {4.27586985, 11.8892097}, //
+
4451 {4.27065992, 11.8896513}, //
+
4452 {4.26539993, 11.8900499}, //
+
4453 {4.26025009, 11.8904066}, //
+
4454 {4.25535011, 11.8907223}, //
+
4455 {4.2507, 11.8909941}, //
+
4456 {4.24630022, 11.8912249}, //
+
4457 {4.24215984, 11.8914137}, //
+
4458 {4.23826981, 11.8915606}, //
+
4459 {4.23463011, 11.8916664}, //
+
4460 {4.2312398, 11.8917294}, //
+
4461 {4.22809982, 11.8917503}, //
+
4462 {4.2249198, 11.8916664}, //
+
4463 {4.2214098, 11.8914137}, //
+
4464 {4.21755981, 11.8909941}, //
+
4465 {4.21336985, 11.8904066}, //
+
4466 {4.20884991, 11.8896513}, //
+
4467 {4.20398998, 11.8887281}, //
+
4468 {4.19880009, 11.8876362}, //
+
4469 {4.19327021, 11.8863773}, //
+
4470 {4.18739986, 11.8849497}, //
+
4471 {4.18141985, 11.88346}, //
+
4472 {4.17551994, 11.8820124}, //
+
4473 {4.16971016, 11.8806057}, //
+
4474 {4.16396999, 11.879241}, //
+
4475 {4.15831995, 11.8779192}, //
+
4476 {4.15276003, 11.8766394}, //
+
4477 {4.1472702, 11.8754005}, //
+
4478 {4.14187002, 11.8742037}, //
+
4479 {4.13654995, 11.8730497}, //
+
4480 {4.13152981, 11.8719902}, //
+
4481 {4.12701988, 11.8710546}, //
+
4482 {4.12301016, 11.870244}, //
+
4483 {4.11949015, 11.8695593}, //
+
4484 {4.11647987, 11.8689976}, //
+
4485 {4.1139698, 11.8685608}, //
+
4486 {4.11296988, 11.8684063}, //
+
4487 {4.11430979, 11.8585043}, //
+
4488 {4.11581993, 11.8482704}, //
+
4489 {4.11733007, 11.8389997}, //
+
4490 {4.11884022, 11.8306932}, //
+
4491 {4.1203599, 11.823348}, //
+
4492 {4.12187004, 11.816967}, //
+
4493 {4.12338018, 11.8115482}, //
+
4494 {4.12488985, 11.8070927}, //
+
4495 {4.12639999, 11.8036003}, //
+
4496 {4.12644005, 11.8013344}, //
+
4497 {4.12657022, 11.7990694}, //
+
4498 {4.12677002, 11.7968388}, //
+
4499 {4.12300014, 11.7967997}, //
+
4500 {4.12314987, 11.7967157}, //
+
4501 {4.12358999, 11.796464}, //
+
4502 {4.12708998, 11.7944546}, //
+
4503 {4.12744999, 11.7922821}, //
+
4504 {4.12791014, 11.7900219}, //
+
4505 {4.12845993, 11.7877636}, //
+
4506 {4.12908983, 11.7855062}, //
+
4507 {4.12979984, 11.7832499}, //
+
4508 {4.13355017, 11.7762728}, //
+
4509 {4.13724995, 11.768919}, //
+
4510 {4.14091015, 11.7611895}, //
+
4511 {4.14452982, 11.7530823}, //
+
4512 {4.14810991, 11.7445993}, //
+
4513 {4.15163994, 11.7357388}, //
+
4514 {4.15513992, 11.7265024}, //
+
4515 {4.15858984, 11.7168903}, //
+
4516 {4.16200018, 11.7068996}, //
+
4517 {4.16523981, 11.6967964}, //
+
4518 {4.16819, 11.6868191}, //
+
4519 {4.1708498, 11.6769667}, //
+
4520 {4.17321014, 11.6672411}, //
+
4521 {4.17529011, 11.6576414}, //
+
4522 {4.17707014, 11.6481667}, //
+
4523 {4.17854977, 11.6388187}, //
+
4524 {4.17974997, 11.6295958}, //
+
4525 {4.18065023, 11.6204996}, //
+
4526 {4.18150997, 11.6082773}, //
+
4527 {4.18065023, 11.6069002}, //
+
4528 {4.18219995, 11.6006804}, //
+
4529 {4.18282986, 11.593873}, //
+
4530 {4.18442011, 11.5798063}, //
+
4531 {4.18634987, 11.5652361}, //
+
4532 {4.18861008, 11.5501642}, //
+
4533 {4.19120979, 11.5345888}, //
+
4534 {4.19413996, 11.5185118}, //
+
4535 {4.19740009, 11.5019321}, //
+
4536 {4.20100021, 11.4848499}, //
+
4537 {4.20249987, 11.4752703}, //
+
4538 {4.204, 11.4661074}, //
+
4539 {4.20551014, 11.4573612}, //
+
4540 {4.20700979, 11.4490328}, //
+
4541 {4.20851994, 11.4411221}, //
+
4542 {4.21002007, 11.4336281}, //
+
4543 {4.21153021, 11.4265509}, //
+
4544 {4.21303988, 11.4198923}, //
+
4545 {4.21455002, 11.4136496}, //
+
4546 {4.21533012, 11.4027281}, //
+
4547 {4.21613979, 11.3910522}, //
+
4548 {4.21700001, 11.3786221}, //
+
4549 {4.2178998, 11.3654385}, //
+
4550 {4.21884012, 11.3514986}, //
+
4551 {4.21982002, 11.3368063}, //
+
4552 {4.22036982, 11.3284044}, //
+
4553 {4.21990013, 11.3281651}, //
+
4554 {4.21857977, 11.3274727}, //
+
4555 {4.21738005, 11.3268223}, //
+
4556 {4.21631002, 11.3262138}, //
+
4557 {4.21537018, 11.3256474}, //
+
4558 {4.21455002, 11.3251219}, //
+
4559 {4.21386003, 11.3246403}, //
+
4560 {4.21329021, 11.3241987}, //
+
4561 {4.21285009, 11.3238001}, //
+
4562 {4.21249008, 11.3234224}, //
+
4563 {4.21218014, 11.3230438}, //
+
4564 {4.21190977, 11.3226671}, //
+
4565 {4.21166992, 11.3222895}, //
+
4566 {4.21149015, 11.3219109}, //
+
4567 {4.21133995, 11.3215332}, //
+
4568 {4.2112298, 11.3211555}, //
+
4569 {4.2111702, 11.3207779}, //
+
4570 {4.21115017, 11.3204002}, //
+
4571 {4.2111702, 11.3200216}, //
+
4572 {4.2112298, 11.319644}, //
+
4573 {4.21133995, 11.3192673}, //
+
4574 {4.21149015, 11.3188887}, //
+
4575 {4.21166992, 11.318511}, //
+
4576 {4.21190977, 11.3181334}, //
+
4577 {4.21218014, 11.3177557}, //
+
4578 {4.21249008, 11.317378}, //
+
4579 {4.21285009, 11.3170004}, //
+
4580 {4.21323013, 11.3166542}, //
+
4581 {4.21361017, 11.3163481}, //
+
4582 {4.2139802, 11.316083}, //
+
4583 {4.21436024, 11.3158588}, //
+
4584 {4.2147398, 11.3156757}, //
+
4585 {4.21511984, 11.3155327}, //
+
4586 {4.21548986, 11.3154306}, //
+
4587 {4.2158699, 11.3153696}, //
+
4588 {4.21624994, 11.3153496}, //
+
4589 {4.21662998, 11.3153286}, //
+
4590 {4.21701002, 11.3152657}, //
+
4591 {4.21738005, 11.3151608}, //
+
4592 {4.21776009, 11.3150139}, //
+
4593 {4.21814013, 11.3148251}, //
+
4594 {4.21852016, 11.3145943}, //
+
4595 {4.21889019, 11.3143225}, //
+
4596 {4.21927023, 11.3140068}, //
+
4597 {4.21964979, 11.3136501}, //
+
4598 {4.2200098, 11.3132935}, //
+
4599 {4.22032022, 11.3129778}, //
+
4600 {4.22101021, 11.3122864}, //
+
4601 {4.22115993, 11.3121386}, //
+
4602 {4.22133017, 11.3119707}, //
+
4603 {4.22135019, 11.3119497}, //
+
4604 {4.22144985, 11.3120089}, //
+
4605 {4.22083998, 11.3213577}, //
+
4606 {4.22036982, 11.3284044}, //
+
4607 {4.22135019, 11.3289003}, //
+
4608 {4.22594976, 11.3312397}, //
+
4609 {4.23071003, 11.3337469}, //
+
4610 {4.23564005, 11.336422}, //
+
4611 {4.24073982, 11.3392649}, //
+
4612 {4.24599981, 11.3422766}, //
+
4613 {4.25144005, 11.3454561}, //
+
4614 {4.25704002, 11.3488016}, //
+
4615 {4.26281023, 11.3523169}, //
+
4616 {4.26875019, 11.3559999}, //
+
4617 {4.27474022, 11.3595572}, //
+
4618 {4.28065014, 11.3626957}, //
+
4619 {4.28646994, 11.3654165}, //
+
4620 {4.2922101, 11.3677187}, //
+
4621 {4.29787016, 11.3696022}, //
+
4622 {4.30344009, 11.371067}, //
+
4623 {4.30892992, 11.3721132}, //
+
4624 {4.3143301, 11.3727407}, //
+
4625 {4.31965017, 11.3729496}, //
+
4626 {4.32352018, 11.3737059}, //
+
4627 {4.3276, 11.3744612}, //
+
4628 {4.33189011, 11.3752174}, //
+
4629 {4.33639002, 11.3759718}, //
+
4630 {4.3410902, 11.3767281}, //
+
4631 {4.34601021, 11.3774834}, //
+
4632 {4.35113001, 11.3782387}, //
+
4633 {4.35646009, 11.378994}, //
+
4634 {4.36199999, 11.3797503}, //
+
4635 {4.36750984, 11.3805466}, //
+
4636 {4.37272978, 11.3814268}, //
+
4637 {4.37764978, 11.3823891}, //
+
4638 {4.38227987, 11.3834343}, //
+
4639 {4.38662004, 11.3845615}, //
+
4640 {4.39066982, 11.3857718}, //
+
4641 {4.39442015, 11.3870649}, //
+
4642 {4.39788008, 11.3884411}, //
+
4643 {4.40105009, 11.3899002}, //
+
4644 {4.40326023, 11.3906984}, //
+
4645 {4.40538979, 11.3915787}, //
+
4646 {4.40744019, 11.3925438}, //
+
4647 {4.40939999, 11.3935938}, //
+
4648 {4.41128016, 11.3947268}, //
+
4649 {4.4130702, 11.3959436}, //
+
4650 {4.41478014, 11.3972464}, //
+
4651 {4.41640997, 11.3986311}, //
+
4652 {4.41795015, 11.4000998}, //
+
4653 {4.41943979, 11.4016314}, //
+
4654 {4.42088985, 11.403204}, //
+
4655 {4.42228985, 11.4048166}, //
+
4656 {4.4236598, 11.4064703}, //
+
4657 {4.42498016, 11.408165}, //
+
4658 {4.42625999, 11.4098997}, //
+
4659 {4.42749977, 11.4116764}, //
+
4660 {4.42869997, 11.4134932}, //
+
4661 {4.4298501, 11.41535}, //
+
4662 {4.43096018, 11.4171963}, //
+
4663 {4.4320302, 11.4189568}, //
+
4664 {4.43306017, 11.4206333}, //
+
4665 {4.43404007, 11.422224}, //
+
4666 {4.43497992, 11.4237299}, //
+
4667 {4.43587017, 11.4251499}, //
+
4668 {4.43671989, 11.4264851}, //
+
4669 {4.43753004, 11.4277353}, //
+
4670 {4.43830013, 11.4288998}, //
+
4671 {4.43964005, 11.4309149}, //
+
4672 {4.44018984, 11.4317331}, //
+
4673 {4.44064999, 11.4324265}, //
+
4674 {4.44103003, 11.4329929}, //
+
4675 {4.44131994, 11.4334326}, //
+
4676 {4.44153023, 11.4337482}, //
+
4677 {4.44165993, 11.4339371}, //
+
4678 {4.44169998, 11.434}, //
+
4679 {4.44172001, 11.4332228}, //
+
4680 {4.44178009, 11.4324055}, //
+
4681 {4.44188976, 11.4315443}, //
+
4682 {4.44203997, 11.4306421}, //
+
4683 {4.44222021, 11.429698}, //
+
4684 {4.44246006, 11.4287109}, //
+
4685 {4.44272995, 11.4276829}, //
+
4686 {4.44303989, 11.4266119}, //
+
4687 {4.44339991, 11.4254999}, //
+
4688 {4.44375992, 11.4243565}, //
+
4689 {4.44406986, 11.4231691}, //
+
4690 {4.44434023, 11.4219389}, //
+
4691 {4.44458008, 11.4206648}, //
+
4692 {4.44475985, 11.4193487}, //
+
4693 {4.44491005, 11.4179888}, //
+
4694 {4.4450202, 11.4165859}, //
+
4695 {4.4450798, 11.4151402}, //
+
4696 {4.44509983, 11.4136496}, //
+
4697 {4.44509983, 11.3966999}, //
+
4698 {4.4450202, 11.3967838}, //
+
4699 {4.44491005, 11.3968887}, //
+
4700 {4.44458008, 11.3972254}, //
+
4701 {4.44339991, 11.3984003}, //
+
4702 {4.44299984, 11.398757}, //
+
4703 {4.4425602, 11.3990717}, //
+
4704 {4.44208002, 11.3993444}, //
+
4705 {4.44154978, 11.3995752}, //
+
4706 {4.44098997, 11.3997641}, //
+
4707 {4.4403801, 11.3999109}, //
+
4708 {4.43973017, 11.4000158}, //
+
4709 {4.43903017, 11.4000788}, //
+
4710 {4.43830013, 11.4000998}, //
+
4711 {4.43155003, 11.4000998}, //
+
4712 {4.43084002, 11.4000578}, //
+
4713 {4.43021011, 11.3999319}, //
+
4714 {4.42965984, 11.3997221}, //
+
4715 {4.42920017, 11.3994284}, //
+
4716 {4.42882013, 11.3990507}, //
+
4717 {4.42853022, 11.3985891}, //
+
4718 {4.42831993, 11.3980427}, //
+
4719 {4.42819023, 11.3974142}, //
+
4720 {4.42815018, 11.3966999}, //
+
4721 {4.42744017, 11.3966579}, //
+
4722 {4.42680979, 11.3965321}, //
+
4723 {4.42625999, 11.3963223}, //
+
4724 {4.42579985, 11.3960276}, //
+
4725 {4.42541981, 11.3956509}, //
+
4726 {4.42512989, 11.3951893}, //
+
4727 {4.42492008, 11.3946428}, //
+
4728 {4.42478991, 11.3940144}, //
+
4729 {4.42474985, 11.3933001}, //
+
4730 {4.42312002, 11.391715}, //
+
4731 {4.42124987, 11.3899622}, //
+
4732 {4.41911983, 11.3880386}, //
+
4733 {4.41673994, 11.3859472}, //
+
4734 {4.41410017, 11.3836861}, //
+
4735 {4.41122007, 11.3812561}, //
+
4736 {4.4080801, 11.3786564}, //
+
4737 {4.40468979, 11.3758879}, //
+
4738 {4.40105009, 11.3729496}, //
+
4739 {4.39724016, 11.3701057}, //
+
4740 {4.39335012, 11.3675966}, //
+
4741 {4.38936996, 11.3654222}, //
+
4742 {4.38531017, 11.3635817}, //
+
4743 {4.3811698, 11.3620768}, //
+
4744 {4.37693977, 11.3609056}, //
+
4745 {4.37263012, 11.3600693}, //
+
4746 {4.36822987, 11.3595667}, //
+
4747 {4.36374998, 11.3593998}, //
+
4748 {4.36067009, 11.3593788}, //
+
4749 {4.35746002, 11.3593159}, //
+
4750 {4.35411978, 11.359211}, //
+
4751 {4.35065985, 11.3590641}, //
+
4752 {4.34708023, 11.3588753}, //
+
4753 {4.34336996, 11.3586435}, //
+
4754 {4.33954, 11.3583717}, //
+
4755 {4.33557987, 11.358057}, //
+
4756 {4.33150005, 11.3577003}, //
+
4757 {4.32742977, 11.3573217}, //
+
4758 {4.32348013, 11.3569441}, //
+
4759 {4.31966019, 11.3565674}, //
+
4760 {4.31594992, 11.3561888}, //
+
4761 {4.31237984, 11.3558111}, //
+
4762 {4.30891991, 11.3554335}, //
+
4763 {4.30559015, 11.3550558}, //
+
4764 {4.30238008, 11.3546782}, //
+
4765 {4.29930019, 11.3542995}, //
+
4766 {4.29637003, 11.3539124}, //
+
4767 {4.2936101, 11.3534803}, //
+
4768 {4.29101992, 11.3530064}, //
+
4769 {4.28858995, 11.3524876}, //
+
4770 {4.28633022, 11.3519268}, //
+
4771 {4.28423023, 11.3513222}, //
+
4772 {4.28231001, 11.3506746}, //
+
4773 {4.28053999, 11.3499842}, //
+
4774 {4.27895021, 11.3492498}, //
+
4775 {4.27814007, 11.3491659}, //
+
4776 {4.27721024, 11.3489141}, //
+
4777 {4.27614021, 11.3484936}, //
+
4778 {4.27495003, 11.3479071}, //
+
4779 {4.27364016, 11.3471508}, //
+
4780 {4.27219009, 11.3462276}, //
+
4781 {4.27061987, 11.3451357}, //
+
4782 {4.26892996, 11.3438768}, //
+
4783 {4.26709986, 11.3424501}, //
+
4784 {4.26520014, 11.3409386}, //
+
4785 {4.26325989, 11.3394279}, //
+
4786 {4.26127005, 11.3379173}, //
+
4787 {4.25924015, 11.3364058}, //
+
4788 {4.2571702, 11.3348942}, //
+
4789 {4.2550602, 11.3333826}, //
+
4790 {4.25290012, 11.331872}, //
+
4791 {4.2507, 11.3303614}, //
+
4792 {4.2484498, 11.3288498}, //
+
4793 {4.2462101, 11.3273697}, //
+
4794 {4.24401999, 11.3259306}, //
+
4795 {4.24186993, 11.3245335}, //
+
4796 {4.23974991, 11.3231764}, //
+
4797 {4.23767996, 11.3218594}, //
+
4798 {4.23565006, 11.3205833}, //
+
4799 {4.23366022, 11.3193483}, //
+
4800 {4.23170996, 11.3181543}, //
+
4801 {4.22980022, 11.3170004}, //
+
4802 {4.2280302, 11.3159399}, //
+
4803 {4.22511005, 11.3141937}, //
+
4804 {4.22395992, 11.313509}, //
+
4805 {4.22302008, 11.3129482}, //
+
4806 {4.22229004, 11.3125114}, //
+
4807 {4.22176981, 11.3121986}, //
+
4808 {4.22144985, 11.3120117}, //
+
4809 {4.22144985, 11.3120089}, //
+
4810 {4.22189999, 11.3051558}, //
+
4811 {4.22300005, 11.2882004}, //
+
4812 {4.22407007, 11.271244}, //
+
4813 {4.22500992, 11.2550421}, //
+
4814 {4.22583008, 11.2395945}, //
+
4815 {4.22653008, 11.2249012}, //
+
4816 {4.22708988, 11.2109623}, //
+
4817 {4.22753, 11.1977777}, //
+
4818 {4.22784996, 11.1853476}, //
+
4819 {4.22804022, 11.1736717}, //
+
4820 {4.22809982, 11.1627502}, //
+
4821 {4.2294898, 11.1565809}, //
+
4822 {4.23061991, 11.1501179}, //
+
4823 {4.23150015, 11.1433611}, //
+
4824 {4.23213005, 11.1363096}, //
+
4825 {4.23251009, 11.1289663}, //
+
4826 {4.23262978, 11.1213284}, //
+
4827 {4.23251009, 11.1133957}, //
+
4828 {4.23213005, 11.1051702}, //
+
4829 {4.23150015, 11.0966501}, //
+
4830 {4.23077011, 11.088109}, //
+
4831 {4.23007011, 11.0798178}, //
+
4832 {4.22942019, 11.0717773}, //
+
4833 {4.22880983, 11.0639887}, //
+
4834 {4.22825003, 11.0564489}, //
+
4835 {4.22771978, 11.049161}, //
+
4836 {4.22724009, 11.0421238}, //
+
4837 {4.22679996, 11.0353365}, //
+
4838 {4.2263999, 11.0288}, //
+
4839 {4.22603989, 11.0227137}, //
+
4840 {4.22572994, 11.0172539}, //
+
4841 {4.22546005, 11.0124226}, //
+
4842 {4.2252202, 11.0082169}, //
+
4843 {4.22503996, 11.0046396}, //
+
4844 {4.22489023, 11.001689}, //
+
4845 {4.22478008, 10.9993658}, //
+
4846 {4.22472, 10.9976692}, //
+
4847 {4.22469997, 10.9966002}, //
+
4848 {4.22483015, 10.995698}, //
+
4849 {4.22520018, 10.994504}, //
+
4850 {4.22583008, 10.9930162}, //
+
4851 {4.22669983, 10.9912367}, //
+
4852 {4.22782993, 10.9891644}, //
+
4853 {4.2292099, 10.9868002}, //
+
4854 {4.23084021, 10.9841423}, //
+
4855 {4.2327199, 10.9811926}, //
+
4856 {4.23484993, 10.9779501}, //
+
4857 {4.23716021, 10.9745188}, //
+
4858 {4.23955011, 10.9710045}, //
+
4859 {4.24202013, 10.9674053}, //
+
4860 {4.24457979, 10.9637232}, //
+
4861 {4.24504995, 10.9630499}, //
+
4862 {4.24504995, 10.9593}, //
+
4863 {4.24506998, 10.9585447}, //
+
4864 {4.24513006, 10.9577913}, //
+
4865 {4.24524021, 10.9570389}, //
+
4866 {4.24538994, 10.9562874}, //
+
4867 {4.24557018, 10.9555378}, //
+
4868 {4.24581003, 10.9547892}, //
+
4869 {4.24607992, 10.9540415}, //
+
4870 {4.24638987, 10.9532948}, //
+
4871 {4.24674988, 10.9525499}, //
+
4872 {4.24710989, 10.9518156}, //
+
4873 {4.24741983, 10.9511232}, //
+
4874 {4.2476902, 10.9504719}, //
+
4875 {4.24793005, 10.9498634}, //
+
4876 {4.24810982, 10.949297}, //
+
4877 {4.24826002, 10.9487724}, //
+
4878 {4.24837017, 10.9482899}, //
+
4879 {4.24842978, 10.9478493}, //
+
4880 {4.2484498, 10.9474497}, //
+
4881 {4.24848986, 10.947093}, //
+
4882 {4.24862003, 10.9467783}, //
+
4883 {4.24882984, 10.9465055}, //
+
4884 {4.24912024, 10.9462748}, //
+
4885 {4.2494998, 10.9460859}, //
+
4886 {4.24995995, 10.9459391}, //
+
4887 {4.25051022, 10.9458342}, //
+
4888 {4.25114012, 10.9457712}, //
+
4889 {4.25185013, 10.9457502}, //
+
4890 {4.25219011, 10.9459181}, //
+
4891 {4.25261021, 10.9461279}, //
+
4892 {4.25395012, 10.9467993}, //
+
4893 {4.25486994, 10.9472609}, //
+
4894 {4.25589991, 10.9477758}, //
+
4895 {4.25860023, 10.9440498}, //
+
4896 {4.26157999, 10.9400101}, //
+
4897 {4.2644701, 10.9361811}, //
+
4898 {4.2672801, 10.9325609}, //
+
4899 {4.27000999, 10.9291515}, //
+
4900 {4.27264977, 10.925951}, //
+
4901 {4.27519989, 10.9229612}, //
+
4902 {4.27766991, 10.9201813}, //
+
4903 {4.27772999, 10.9201097}, //
+
4904 {4.27554989, 10.9186497}, //
+
4905 {4.26990986, 10.9148722}, //
+
4906 {4.26852989, 10.913949}, //
+
4907 {4.26739979, 10.9131927}, //
+
4908 {4.26653004, 10.9126053}, //
+
4909 {4.26590014, 10.9121857}, //
+
4910 {4.26539993, 10.91185}, //
+
4911 {4.26539993, 10.9101496}, //
+
4912 {4.26541996, 10.9097719}, //
+
4913 {4.26548004, 10.9093943}, //
+
4914 {4.26559019, 10.9090166}, //
+
4915 {4.26573992, 10.908639}, //
+
4916 {4.26592016, 10.9082613}, //
+
4917 {4.26616001, 10.9078836}, //
+
4918 {4.2664299, 10.907506}, //
+
4919 {4.26673985, 10.9071274}, //
+
4920 {4.26709986, 10.9067497}, //
+
4921 {4.26785994, 10.9059944}, //
+
4922 {4.26822996, 10.9056168}, //
+
4923 {4.26937008, 10.9044828}, //
+
4924 {4.2697401, 10.9041052}, //
+
4925 {4.27050018, 10.9033499}, //
+
4926 {4.27089977, 10.9029732}, //
+
4927 {4.27133989, 10.9025965}, //
+
4928 {4.27182007, 10.9022226}, //
+
4929 {4.27233982, 10.9018488}, //
+
4930 {4.2729001, 10.9014769}, //
+
4931 {4.27349997, 10.9011059}, //
+
4932 {4.27413988, 10.9007359}, //
+
4933 {4.27482986, 10.9003677}, //
+
4934 {4.27554989, 10.8999996}, //
+
4935 {4.27630997, 10.8996639}, //
+
4936 {4.27706003, 10.8994122}, //
+
4937 {4.27782011, 10.8992443}, //
+
4938 {4.27857018, 10.8991604}, //
+
4939 {4.27932978, 10.8991604}, //
+
4940 {4.28007984, 10.8992443}, //
+
4941 {4.28083992, 10.8994122}, //
+
4942 {4.28158998, 10.8996639}, //
+
4943 {4.28235006, 10.8999996}, //
+
4944 {4.2831502, 10.9003887}, //
+
4945 {4.28402996, 10.9008198}, //
+
4946 {4.28498983, 10.9012947}, //
+
4947 {4.28603983, 10.9018126}, //
+
4948 {4.28717995, 10.9023733}, //
+
4949 {4.28839016, 10.9029779}, //
+
4950 {4.28970003, 10.9036255}, //
+
4951 {4.29108, 10.9043159}, //
+
4952 {4.29255009, 10.9050503}, //
+
4953 {4.29531002, 10.9082756}, //
+
4954 {4.29561996, 10.9080725}, //
+
4955 {4.29665995, 10.9073172}, //
+
4956 {4.29761982, 10.9065609}, //
+
4957 {4.29850006, 10.9058056}, //
+
4958 {4.29930019, 10.9050503}, //
+
4959 {4.3001399, 10.904295}, //
+
4960 {4.30113983, 10.9035416}, //
+
4961 {4.30232, 10.9027891}, //
+
4962 {4.30365992, 10.9020376}, //
+
4963 {4.30516005, 10.901288}, //
+
4964 {4.30682993, 10.9005384}, //
+
4965 {4.30867004, 10.8997908}, //
+
4966 {4.31067991, 10.899045}, //
+
4967 {4.31285, 10.8983002}, //
+
4968 {4.31512022, 10.8975439}, //
+
4969 {4.31737995, 10.8967886}, //
+
4970 {4.31964016, 10.8960333}, //
+
4971 {4.3219099, 10.895278}, //
+
4972 {4.32417011, 10.8945217}, //
+
4973 {4.32642984, 10.8937674}, //
+
4974 {4.32869005, 10.8930111}, //
+
4975 {4.33093977, 10.8922558}, //
+
4976 {4.33319998, 10.8915005}, //
+
4977 {4.3385601, 10.8908281}, //
+
4978 {4.34408998, 10.8903246}, //
+
4979 {4.34978008, 10.8899889}, //
+
4980 {4.35563993, 10.8898211}, //
+
4981 {4.36167002, 10.8898211}, //
+
4982 {4.36786985, 10.8899889}, //
+
4983 {4.37422991, 10.8903246}, //
+
4984 {4.38076019, 10.8908281}, //
+
4985 {4.38745022, 10.8915005}, //
+
4986 {4.39508009, 10.8929272}, //
+
4987 {4.40287018, 10.894186}, //
+
4988 {4.41083002, 10.895278}, //
+
4989 {4.41895008, 10.8962011}, //
+
4990 {4.42723989, 10.8969574}, //
+
4991 {4.43568993, 10.8975439}, //
+
4992 {4.44431019, 10.8979635}, //
+
4993 {4.4531002, 10.8982162}, //
+
4994 {4.46204996, 10.8983002}, //
+
4995 {4.46952009, 10.8977537}, //
+
4996 {4.47686005, 10.8976259}, //
+
4997 {4.48407984, 10.8979168}, //
+
4998 {4.49117994, 10.8986263}, //
+
4999 {4.49813986, 10.8997536}, //
+
5000 {4.50498009, 10.9013004}, //
+
5001 {4.51170015, 10.903265}, //
+
5002 {4.51829004, 10.9056482}, //
+
5003 {4.52475023, 10.9084501}, //
+
5004 {4.53106022, 10.9115238}, //
+
5005 {4.53714991, 10.9147243}, //
+
5006 {4.5430398, 10.9180498}, //
+
5007 {4.54871988, 10.9215021}, //
+
5008 {4.55418015, 10.9250793}, //
+
5009 {4.55944014, 10.9287834}, //
+
5010 {4.56448984, 10.9326134}, //
+
5011 {4.5693202, 10.9365683}, //
+
5012 {4.57394981, 10.94065}, //
+
5013 {4.57821989, 10.9446058}, //
+
5014 {4.58198977, 10.9481859}, //
+
5015 {4.58525991, 10.9513893}, //
+
5016 {4.58801985, 10.954215}, //
+
5017 {4.59028006, 10.956665}, //
+
5018 {4.59204006, 10.9587393}, //
+
5019 {4.59329987, 10.9604359}, //
+
5020 {4.59404993, 10.9617558}, //
+
5021 {4.59429979, 10.9626999}, //
+
5022 {4.59422016, 10.9635181}, //
+
5023 {4.59395981, 10.9644632}, //
+
5024 {4.59354019, 10.9655333}, //
+
5025 {4.59295988, 10.9667292}, //
+
5026 {4.5921998, 10.9680519}, //
+
5027 {4.59127998, 10.9694996}, //
+
5028 {4.59018993, 10.9710741}, //
+
5029 {4.58893013, 10.9727745}, //
+
5030 {4.5875001, 10.9745998}, //
+
5031 {4.58591986, 10.9764576}, //
+
5032 {4.58415985, 10.9782743}, //
+
5033 {4.5822401, 10.9800501}, //
+
5034 {4.58015013, 10.9817848}, //
+
5035 {4.57788992, 10.9834795}, //
+
5036 {4.57545996, 10.9851332}, //
+
5037 {4.57285976, 10.9867458}, //
+
5038 {4.57008982, 10.9883184}, //
+
5039 {4.56715012, 10.98985}, //
+
5040 {4.56493998, 10.9921055}, //
+
5041 {4.56279993, 10.9943609}, //
+
5042 {4.56076002, 10.9966164}, //
+
5043 {4.55879021, 10.9988718}, //
+
5044 {4.55691004, 11.0011282}, //
+
5045 {4.55510998, 11.0033836}, //
+
5046 {4.55339003, 11.0056391}, //
+
5047 {4.55175018, 11.0078945}, //
+
5048 {4.55019999, 11.01015}, //
+
5049 {4.54947996, 11.0110102}, //
+
5050 {4.54878998, 11.0120783}, //
+
5051 {4.54815006, 11.0133553}, //
+
5052 {4.5475502, 11.0148411}, //
+
5053 {4.54698992, 11.0165358}, //
+
5054 {4.54647017, 11.0184393}, //
+
5055 {4.54598999, 11.0205507}, //
+
5056 {4.54554987, 11.022871}, //
+
5057 {4.5451498, 11.0254002}, //
+
5058 {4.54491997, 11.0271502}, //
+
5059 {4.5468502, 11.0271502}, //
+
5060 {4.54413986, 11.0343618}, //
+
5061 {4.54397011, 11.0363035}, //
+
5062 {4.54378986, 11.0391312}, //
+
5063 {4.54364014, 11.0419998}, //
+
5064 {4.54352999, 11.0449095}, //
+
5065 {4.54346991, 11.0478592}, //
+
5066 {4.54344988, 11.0508499}, //
+
5067 {4.54411983, 11.0530739}, //
+
5068 {4.54463005, 11.055213}, //
+
5069 {4.54496002, 11.0572662}, //
+
5070 {4.54512978, 11.0592356}, //
+
5071 {4.54512978, 11.0611181}, //
+
5072 {4.54496002, 11.0629168}, //
+
5073 {4.54463005, 11.0646296}, //
+
5074 {4.54411983, 11.0662575}, //
+
5075 {4.54344988, 11.0677996}, //
+
5076 {4.54255009, 11.0704012}, //
+
5077 {4.54134989, 11.0736713}, //
+
5078 {4.53986979, 11.077611}, //
+
5079 {4.53809023, 11.0822201}, //
+
5080 {4.53600979, 11.0874977}, //
+
5081 {4.53364992, 11.0934448}, //
+
5082 {4.53099012, 11.1000605}, //
+
5083 {4.52803993, 11.1073456}, //
+
5084 {4.52479982, 11.1153002}, //
+
5085 {4.52138996, 11.1235886}, //
+
5086 {4.51794004, 11.1318779}, //
+
5087 {4.51444006, 11.1401672}, //
+
5088 {4.51091003, 11.1484556}, //
+
5089 {4.50732994, 11.156744}, //
+
5090 {4.50370979, 11.1650333}, //
+
5091 {4.50005007, 11.1733217}, //
+
5092 {4.49634981, 11.1816111}, //
+
5093 {4.49259996, 11.1899004}, //
+
5094 {4.48820019, 11.2000237}, //
+
5095 {4.48405981, 11.2108192}, //
+
5096 {4.48016024, 11.2222834}, //
+
5097 {4.47652006, 11.2344189}, //
+
5098 {4.47312021, 11.2472239}, //
+
5099 {4.46997976, 11.2607002}, //
+
5100 {4.46708012, 11.2748461}, //
+
5101 {4.46443987, 11.2896633}, //
+
5102 {4.46204996, 11.30515}, //
+
5103 {4.45987988, 11.3205538}, //
+
5104 {4.45787001, 11.3351202}, //
+
5105 {4.45602989, 11.3488503}, //
+
5106 {4.45436001, 11.361743}, //
+
5107 {4.45285988, 11.3737984}, //
+
5108 {4.45151997, 11.3850174}, //
+
5109 {4.45033979, 11.3953981}, //
+
5110 {4.44933987, 11.4049435}, //
+
5111 {4.44850016, 11.4136496}, //
+
5112 {4.44774008, 11.4238472}, //
+
5113 {4.44699001, 11.4348383}, //
+
5114 {4.44622993, 11.4466219}, //
+
5115 {4.44547987, 11.4592009}, //
+
5116 {4.44471979, 11.4725733}, //
+
5117 {4.4439702, 11.4867392}, //
+
5118 {4.44321012, 11.5016994}, //
+
5119 {4.44246006, 11.5174522}, //
+
5120 {4.44169998, 11.5340004}, //
+
5121 {4.44099998, 11.5506411}, //
+
5122 {4.4403801, 11.5666542}, //
+
5123 {4.43983984, 11.5820389}, //
+
5124 {4.43938017, 11.5967951}, //
+
5125 {4.43901014, 11.6109228}, //
+
5126 {4.43872023, 11.6244221}, //
+
5127 {4.43851995, 11.6372929}, //
+
5128 {4.43838978, 11.6495361}, //
+
5129 {4.4383502, 11.66115}, //
+
5130 {4.43837023, 11.6684198}, //
+
5131 {4.43842983, 11.676651}, //
+
5132 {4.43852997, 11.6858444}, //
+
5133 {4.43868017, 11.6959991}, //
+
5134 {4.43885994, 11.7071161}, //
+
5135 {4.43908024, 11.7191944}, //
+
5136 {4.43935013, 11.732235}, //
+
5137 {4.43965006, 11.7462358}, //
+
5138 {4.44000006, 11.7612}, //
+
5139 {4.4403801, 11.7766018}, //
+
5140 {4.44076014, 11.7919207}, //
+
5141 {4.44113016, 11.8071556}, //
+
5142 {4.4415102, 11.8223057}, //
+
5143 {4.44188976, 11.8373728}, //
+
5144 {4.4422698, 11.852356}, //
+
5145 {4.44263983, 11.8672543}, //
+
5146 {4.44301987, 11.8820686}, //
+
5147 {4.44339991, 11.8968}, //
+
5148 {4.44379997, 11.9110603}, //
+
5149 {4.44424009, 11.9244404}, //
+
5150 {4.44471979, 11.9369392}, //
+
5151 {4.44525003, 11.9485579}, //
+
5152 {4.44580984, 11.9592972}, //
+
5153 {4.44642019, 11.9691563}, //
+
5154 {4.44707012, 11.9781342}, //
+
5155 {4.44777012, 11.9862318}, //
+
5156 {4.44850016, 11.9934502}, //
+
5157 {4.44842005, 11.999692}, //
+
5158 {4.44816017, 12.0063496}, //
+
5159 {4.44774008, 12.0134296}, //
+
5160 {4.44715977, 12.0209198}, //
+
5161 {4.44640017, 12.0288296}, //
+
5162 {4.44547987, 12.0371599}, //
+
5163 {4.44438982, 12.0459099}, //
+
5164 {4.44313002, 12.0550699}, //
+
5165 {4.44169998, 12.0646496}, //
+
5166 {4.43889999, 12.0775404}, //
+
5167 {4.43651009, 12.0921097}, //
+
5168 {4.43454981, 12.1083498}, //
+
5169 {4.43300009, 12.1262598}, //
+
5170 {4.43188, 12.1458502}, //
+
5171 {4.43116999, 12.16712}, //
+
5172 {4.43088007, 12.1900501}, //
+
5173 {4.43100023, 12.2146597}, //
+
5174 {4.43155003, 12.2409496}, //
+
5175 {4.43155003, 12.2749004}, //
+
5176 {4.43242979, 12.2951202}, //
+
5177 {4.43355989, 12.3165903}, //
+
5178 {4.43493986, 12.3393202}, //
+
5179 {4.43658018, 12.3633003}, //
+
5180 {4.43845987, 12.3885403}, //
+
5181 {4.4405899, 12.4150295}, //
+
5182 {4.44297981, 12.4427795}, //
+
5183 {4.44561005, 12.4717903}, //
+
5184 {4.44850016, 12.5020504}, //
+
5185 {4.45229006, 12.5237999}, //
+
5186 {4.45612001, 12.5453396}, //
+
5187 {4.45883989, 12.5603304}, //
+
5188 {4.45941019, 12.5604601}, //
+
5189 {4.46037006, 12.56073}, //
+
5190 {4.46124983, 12.5610399}, //
+
5191 {4.46204996, 12.5614004}, //
+
5192 {4.46338987, 12.5620699}, //
+
5193 {4.46394014, 12.5623398}, //
+
5194 {4.46439981, 12.5625801}, //
+
5195 {4.46477985, 12.5627604}, //
+
5196 {4.46506977, 12.5629101}, //
+
5197 {4.46528006, 12.5630198}, //
+
5198 {4.46541023, 12.5630798}, //
+
5199 {4.46544981, 12.5630999}, //
+
5200 {4.4593401, 12.5630999}, //
+
5201 {4.45999002, 12.5666704}, //
+
5202 {4.46390009, 12.5877895}, //
+
5203 {4.46786022, 12.6086998}, //
+
5204 {4.47185993, 12.6294098}, //
+
5205 {4.47590017, 12.6499004}, //
+
5206 {4.47997999, 12.6701803}, //
+
5207 {4.48409986, 12.6902504}, //
+
5208 {4.48818016, 12.7098198}, //
+
5209 {4.49213982, 12.72859}, //
+
5210 {4.49596977, 12.7465696}, //
+
5211 {4.49967003, 12.7637501}, //
+
5212 {4.50325012, 12.7801304}, //
+
5213 {4.50670004, 12.7957201}, //
+
5214 {4.51002979, 12.8105097}, //
+
5215 {4.51322985, 12.8245001}, //
+
5216 {4.5163002, 12.8376999}, //
+
5217 {4.52166986, 12.8604803}, //
+
5218 {4.52385998, 12.86973}, //
+
5219 {4.52570009, 12.8775597}, //
+
5220 {4.52721024, 12.8839598}, //
+
5221 {4.52838993, 12.8889399}, //
+
5222 {4.52923012, 12.8924999}, //
+
5223 {4.52972984, 12.89464}, //
+
5224 {4.52990007, 12.8953505}, //
+
5225 {4.53021002, 12.8954296}, //
+
5226 {4.53114986, 12.8956804}, //
+
5227 {4.53272009, 12.8961}, //
+
5228 {4.53492022, 12.8966799}, //
+
5229 {4.55530024, 12.9020996}, //
+
5230 {4.56099987, 12.9037399}, //
+
5231 {4.56678009, 12.9056196}, //
+
5232 {4.57263994, 12.9077597}, //
+
5233 {4.5785799, 12.9101496}, //
+
5234 {4.58460999, 12.9127903}, //
+
5235 {4.59072018, 12.9156799}, //
+
5236 {4.59692001, 12.9188204}, //
+
5237 {4.60318995, 12.9222097}, //
+
5238 {4.60955, 12.9258499}, //
+
5239 {4.61594009, 12.9296703}, //
+
5240 {4.62229013, 12.9335699}, //
+
5241 {4.62859011, 12.9375496}, //
+
5242 {4.63485003, 12.9416103}, //
+
5243 {4.64106989, 12.9457598}, //
+
5244 {4.64724016, 12.9499798}, //
+
5245 {4.6533699, 12.9542904}, //
+
5246 {4.65946007, 12.9586802}, //
+
5247 {4.66550016, 12.96315}, //
+
5248 {4.66714001, 12.9648705}, //
+
5249 {4.66902018, 12.9670095}, //
+
5250 {4.67116022, 12.9695597}, //
+
5251 {4.67355013, 12.9725304}, //
+
5252 {4.6761899, 12.9759197}, //
+
5253 {4.67908001, 12.9797297}, //
+
5254 {4.68221998, 12.9839497}, //
+
5255 {4.68560982, 12.9885902}, //
+
5256 {4.68924999, 12.9936504}, //
+
5257 {4.69303989, 12.99895}, //
+
5258 {4.69686985, 13.0042896}, //
+
5259 {4.70073986, 13.0096703}, //
+
5260 {4.70464993, 13.0150995}, //
+
5261 {4.70861006, 13.0205603}, //
+
5262 {4.71260977, 13.0260696}, //
+
5263 {4.71665001, 13.03162}, //
+
5264 {4.72072983, 13.03722}, //
+
5265 {4.72485018, 13.0428495}, //
+
5266 {4.72895002, 13.04846}, //
+
5267 {4.73297024, 13.0539904}, //
+
5268 {4.73690987, 13.0594301}, //
+
5269 {4.74075985, 13.0647898}, //
+
5270 {4.74452019, 13.0700598}, //
+
5271 {4.74820995, 13.0752497}, //
+
5272 {4.75180006, 13.0803499}, //
+
5273 {4.75532007, 13.0853701}, //
+
5274 {4.75874996, 13.0902996}, //
+
5275 {4.76195002, 13.0949297}, //
+
5276 {4.76477003, 13.0990105}, //
+
5277 {4.76722002, 13.1025496}, //
+
5278 {4.76928997, 13.1055403}, //
+
5279 {4.77098989, 13.1079903}, //
+
5280 {4.77230978, 13.1099005}, //
+
5281 {4.7732501, 13.1112604}, //
+
5282 {4.77400017, 13.1123505}, //
+
5283 {4.77489996, 13.1115704}, //
+
5284 {4.77610016, 13.1107502}, //
+
5285 {4.77757978, 13.10989}, //
+
5286 {4.77935982, 13.1089897}, //
+
5287 {4.78143978, 13.1080503}, //
+
5288 {4.78380013, 13.1070604}, //
+
5289 {4.78645992, 13.1060305}, //
+
5290 {4.78941011, 13.1049604}, //
+
5291 {4.79265022, 13.1038504}, //
+
5292 {4.79606009, 13.1026602}, //
+
5293 {4.79951, 13.1013498}, //
+
5294 {4.80300999, 13.0999203}, //
+
5295 {4.80654001, 13.0983496}, //
+
5296 {4.81012011, 13.0966597}, //
+
5297 {4.81373978, 13.0948496}, //
+
5298 {4.81739998, 13.0929098}, //
+
5299 {4.82110023, 13.0908403}, //
+
5300 {4.82485008, 13.0886497}, //
+
5301 {4.83503008, 13.08601}, //
+
5302 {4.84596014, 13.0826101}, //
+
5303 {4.85763979, 13.0784597}, //
+
5304 {4.87006998, 13.0735598}, //
+
5305 {4.88325977, 13.0678997}, //
+
5306 {4.89721012, 13.0614901}, //
+
5307 {4.91190004, 13.0543299}, //
+
5308 {4.92735004, 13.0464201}, //
+
5309 {4.94355011, 13.0377502}, //
+
5310 {4.95038986, 13.0331202}, //
+
5311 {4.95735979, 13.0282898}, //
+
5312 {4.96444988, 13.0232401}, //
+
5313 {4.97167015, 13.0179901}, //
+
5314 {4.97901011, 13.0125303}, //
+
5315 {4.98648024, 13.0068598}, //
+
5316 {4.99408007, 13.0009804}, //
+
5317 {5.00180006, 12.9948997}, //
+
5318 {5.00965023, 12.9885998}, //
+
5319 {5.0174098, 12.9822998}, //
+
5320 {5.02488995, 12.9762201}, //
+
5321 {5.03207016, 12.9703398}, //
+
5322 {5.03894997, 12.9646702}, //
+
5323 {5.04554987, 12.9592104}, //
+
5324 {5.05184984, 12.9539604}, //
+
5325 {5.0578599, 12.9489098}, //
+
5326 {5.06358004, 12.9440804}, //
+
5327 {5.06899977, 12.9394503}, //
+
5328 {5.0704999, 12.9379797}, //
+
5329 {5.07200003, 12.9365997}, //
+
5330 {5.07351017, 12.9352903}, //
+
5331 {5.07500982, 12.9340801}, //
+
5332 {5.07651997, 12.9329395}, //
+
5333 {5.0780201, 12.9318895}, //
+
5334 {5.07952976, 12.9309301}, //
+
5335 {5.08103991, 12.9300499}, //
+
5336 {5.08255005, 12.9292498}, //
+
5337 {5.0855999, 12.92624}, //
+
5338 {5.08873987, 12.9232302}, //
+
5339 {5.09195995, 12.9202204}, //
+
5340 {5.09527016, 12.9172096}, //
+
5341 {5.09864998, 12.9141903}, //
+
5342 {5.10212994, 12.9111795}, //
+
5343 {5.10567999, 12.9081697}, //
+
5344 {5.10933018, 12.90516}, //
+
5345 {5.11304998, 12.9021502}, //
+
5346 {5.11839008, 12.8976097}, //
+
5347 {5.12384987, 12.8930197}, //
+
5348 {5.12943983, 12.8883896}, //
+
5349 {5.13515997, 12.8837299}, //
+
5350 {5.14099979, 12.8790102}, //
+
5351 {5.14695978, 12.8742599}, //
+
5352 {5.15304995, 12.8694696}, //
+
5353 {5.1592598, 12.8646297}, //
+
5354 {5.16559982, 12.8597498}, //
+
5355 {5.17182016, 12.8548698}, //
+
5356 {5.17767, 12.8500404}, //
+
5357 {5.18312979, 12.8452396}, //
+
5358 {5.18822002, 12.8404999}, //
+
5359 {5.19293022, 12.8357897}, //
+
5360 {5.19726992, 12.83113}, //
+
5361 {5.20122004, 12.8265104}, //
+
5362 {5.20480013, 12.8219299}, //
+
5363 {5.20800018, 12.8174}, //
+
5364 {5.21276999, 12.8132896}, //
+
5365 {5.21805, 12.8085098}, //
+
5366 {5.22383022, 12.8030596}, //
+
5367 {5.23011017, 12.7969503}, //
+
5368 {5.23688984, 12.7901602}, //
+
5369 {5.2441802, 12.7827101}, //
+
5370 {5.25196981, 12.7745895}, //
+
5371 {5.26026011, 12.7658005}, //
+
5372 {5.26905012, 12.7563496}, //
+
5373 {5.28038979, 12.7421503}, //
+
5374 {5.29182005, 12.7282104}, //
+
5375 {5.30332994, 12.7145205}, //
+
5376 {5.31491995, 12.7010803}, //
+
5377 {5.32660007, 12.6878901}, //
+
5378 {5.33835983, 12.6749496}, //
+
5379 {5.35021019, 12.6622601}, //
+
5380 {5.36214018, 12.6498299}, //
+
5381 {5.3741498, 12.6376495}, //
+
5382 {5.38771009, 12.6225405}, //
+
5383 {5.4012599, 12.6073503}, //
+
5384 {5.41482019, 12.5920696}, //
+
5385 {5.42838001, 12.5767097}, //
+
5386 {5.44193983, 12.5612698}, //
+
5387 {5.45551014, 12.5457401}, //
+
5388 {5.46906996, 12.5301304}, //
+
5389 {5.48262978, 12.51443}, //
+
5390 {5.49620008, 12.4986496}, //
+
5391 {5.50934982, 12.4829998}, //
+
5392 {5.52165985, 12.4676704}, //
+
5393 {5.53313017, 12.4526901}, //
+
5394 {5.54375982, 12.4380398}, //
+
5395 {5.55354977, 12.4237204}, //
+
5396 {5.56251001, 12.4097404}, //
+
5397 {5.57063007, 12.3960896}, //
+
5398 {5.57790995, 12.3827801}, //
+
5399 {5.58435011, 12.3697996}, //
+
5400 {5.59158993, 12.3514299}, //
+
5401 {5.59824991, 12.3309698}, //
+
5402 {5.60432005, 12.3084097}, //
+
5403 {5.60979986, 12.2837601}, //
+
5404 {5.61469984, 12.25702}, //
+
5405 {5.61901999, 12.2281799}, //
+
5406 {5.62274981, 12.1972504}, //
+
5407 {5.62588978, 12.1642199}, //
+
5408 {5.62844992, 12.1290998}, //
+
5409 {5.62915993, 12.11938}, //
+
5410 {5.62978983, 12.1098404}, //
+
5411 {5.6303401, 12.1004601}, //
+
5412 {5.63079977, 12.0912399}, //
+
5413 {5.63117981, 12.0822001}, //
+
5414 {5.6314702, 12.0733204}, //
+
5415 {5.63168001, 12.0646095}, //
+
5416 {5.63181019, 12.0560703}, //
+
5417 {5.63184977, 12.0476999}, //
+
5418 {5.63119984, 12.0393295}, //
+
5419 {5.63076019, 12.0307903}, //
+
5420 {5.63051987, 12.0220804}, //
+
5421 {5.63049984, 12.0131998}, //
+
5422 {5.63068008, 12.0041599}, //
+
5423 {5.63107014, 11.9949436}, //
+
5424 {5.63167, 11.9855642}, //
+
5425 {5.63208008, 11.9807491}, //
+
5426 {5.63184977, 11.9799004}, //
+
5427 {5.63188982, 11.9797115}, //
+
5428 {5.63202, 11.979147}, //
+
5429 {5.63221979, 11.9782057}, //
+
5430 {5.63233995, 11.9776554}, //
+
5431 {5.63248014, 11.976016}, //
+
5432 {5.6335001, 11.9663}, //
+
5433 {5.63491011, 11.9560919}, //
+
5434 {5.63685989, 11.9450464}, //
+
5435 {5.63934994, 11.9331608}, //
+
5436 {5.64238977, 11.9204378}, //
+
5437 {5.64596987, 11.9068766}, //
+
5438 {5.65010023, 11.892478}, //
+
5439 {5.6547699, 11.8772402}, //
+
5440 {5.65998983, 11.8611641}, //
+
5441 {5.66575003, 11.8442497}, //
+
5442 {5.67466021, 11.8245754}, //
+
5443 {5.68332005, 11.8062401}, //
+
5444 {5.69172001, 11.7892437}, //
+
5445 {5.69988012, 11.7735882}, //
+
5446 {5.70777988, 11.7592716}, //
+
5447 {5.7154398, 11.746294}, //
+
5448 {5.72283983, 11.7346573}, //
+
5449 {5.73000002, 11.7243586}, //
+
5450 {5.73689985, 11.7153997}, //
+
5451 {5.74364996, 11.7074137}, //
+
5452 {5.75030994, 11.7000122}, //
+
5453 {5.75688982, 11.6931944}, //
+
5454 {5.76338005, 11.6869602}, //
+
5455 {5.76980019, 11.6813097}, //
+
5456 {5.77612019, 11.6762438}, //
+
5457 {5.78237009, 11.6717625}, //
+
5458 {5.78851986, 11.6678638}, //
+
5459 {5.79460001, 11.6645498}, //
+
5460 {5.79614019, 11.6637526}, //
+
5461 {5.79777002, 11.6628733}, //
+
5462 {5.79947996, 11.661911}, //
+
5463 {5.80128002, 11.6608658}, //
+
5464 {5.80316019, 11.6597376}, //
+
5465 {5.80513, 11.6585283}, //
+
5466 {5.80718994, 11.6572351}, //
+
5467 {5.80932999, 11.655859}, //
+
5468 {5.81155014, 11.6543999}, //
+
5469 {5.81675005, 11.6507378}, //
+
5470 {5.8218298, 11.6472836}, //
+
5471 {5.82678986, 11.6440392}, //
+
5472 {5.83162022, 11.6410017}, //
+
5473 {5.83631992, 11.638175}, //
+
5474 {5.84090996, 11.6355562}, //
+
5475 {5.8453598, 11.6331453}, //
+
5476 {5.84968996, 11.6309433}, //
+
5477 {5.85389996, 11.6289501}, //
+
5478 {5.85801983, 11.6271772}, //
+
5479 {5.86210012, 11.6256123}, //
+
5480 {5.86613989, 11.6242561}, //
+
5481 {5.87014008, 11.6231079}, //
+
5482 {5.87410021, 11.6221685}, //
+
5483 {5.8780098, 11.621439}, //
+
5484 {5.88187981, 11.6209173}, //
+
5485 {5.88570976, 11.6206036}, //
+
5486 {5.88950014, 11.6204996}, //
+
5487 {5.89026022, 11.6197863}, //
+
5488 {5.89100981, 11.6191568}, //
+
5489 {5.89176989, 11.6186113}, //
+
5490 {5.89251995, 11.6181488}, //
+
5491 {5.89328003, 11.6177721}, //
+
5492 {5.89403009, 11.6174784}, //
+
5493 {5.89479017, 11.6172676}, //
+
5494 {5.89554024, 11.6171417}, //
+
5495 {5.89629984, 11.6170998}, //
+
5496 {5.89923, 11.6162806}, //
+
5497 {5.90198994, 11.6153374}, //
+
5498 {5.90458012, 11.6142673}, //
+
5499 {5.90700006, 11.6130695}, //
+
5500 {5.9092598, 11.6117477}, //
+
5501 {5.91134024, 11.6103001}, //
+
5502 {5.91325998, 11.6087255}, //
+
5503 {5.91501999, 11.6070261}, //
+
5504 {5.91660023, 11.6051998}, //
+
5505 {5.91810989, 11.6032591}, //
+
5506 {5.91962004, 11.6011934}, //
+
5507 {5.92113018, 11.599}, //
+
5508 {5.92263985, 11.5966806}, //
+
5509 {5.92416, 11.5942373}, //
+
5510 {5.92567015, 11.5916672}, //
+
5511 {5.92717981, 11.5889702}, //
+
5512 {5.92868996, 11.5861483}, //
+
5513 {5.9302001, 11.5832005}, //
+
5514 {5.93100023, 11.5808916}, //
+
5515 {5.93188, 11.5785007}, //
+
5516 {5.93283987, 11.5760279}, //
+
5517 {5.93388987, 11.573472}, //
+
5518 {5.93502998, 11.5708332}, //
+
5519 {5.9362402, 11.5681114}, //
+
5520 {5.93755007, 11.5653067}, //
+
5521 {5.93893003, 11.5624199}, //
+
5522 {5.94040012, 11.5594501}, //
+
5523 {5.94511986, 11.5524197}, //
+
5524 {5.95026016, 11.5448866}, //
+
5525 {5.95582008, 11.53685}, //
+
5526 {5.9618001, 11.5283089}, //
+
5527 {5.96820021, 11.5192652}, //
+
5528 {5.97501993, 11.509717}, //
+
5529 {5.98226023, 11.4996653}, //
+
5530 {5.98992014, 11.489109}, //
+
5531 {5.99800014, 11.4780502}, //
+
5532 {6.0062499, 11.467001}, //
+
5533 {6.01441002, 11.4564552}, //
+
5534 {6.02249002, 11.4464111}, //
+
5535 {6.03047991, 11.4368696}, //
+
5536 {6.03840017, 11.4278307}, //
+
5537 {6.04621983, 11.4192944}, //
+
5538 {6.05396986, 11.4112597}, //
+
5539 {6.06162024, 11.4037294}, //
+
5540 {6.06920004, 11.3966999}, //
+
5541 {6.07287979, 11.3937302}, //
+
5542 {6.0763998, 11.3908434}, //
+
5543 {6.07974005, 11.3880386}, //
+
5544 {6.08292007, 11.3853168}, //
+
5545 {6.08592987, 11.382678}, //
+
5546 {6.08877993, 11.3801222}, //
+
5547 {6.09145021, 11.3776493}, //
+
5548 {6.09395981, 11.3752584}, //
+
5549 {6.09630013, 11.3729496}, //
+
5550 {6.09856987, 11.3707361}, //
+
5551 {6.10083008, 11.3686037}, //
+
5552 {6.10309982, 11.3665562}, //
+
5553 {6.10537004, 11.3645897}, //
+
5554 {6.10762978, 11.3627062}, //
+
5555 {6.1099, 11.3609056}, //
+
5556 {6.11217022, 11.3591881}, //
+
5557 {6.11442995, 11.3575516}, //
+
5558 {6.11670017, 11.3559999}, //
+
5559 {6.12041998, 11.3543739}, //
+
5560 {6.12407017, 11.3524961}, //
+
5561 {6.12762022, 11.3503666}, //
+
5562 {6.13110018, 11.3479853}, //
+
5563 {6.13448, 11.3453522}, //
+
5564 {6.1377902, 11.3424673}, //
+
5565 {6.14100981, 11.3393297}, //
+
5566 {6.14414978, 11.3359413}, //
+
5567 {6.14720011, 11.3323002}, //
+
5568 {6.15159988, 11.3284492}, //
+
5569 {6.15573978, 11.3244314}, //
+
5570 {6.15962982, 11.3202438}, //
+
5571 {6.16327, 11.3158903}, //
+
5572 {6.16665983, 11.311368}, //
+
5573 {6.1697998, 11.3066778}, //
+
5574 {6.17268991, 11.3018198}, //
+
5575 {6.17532015, 11.2967939}, //
+
5576 {6.17770004, 11.2916002}, //
+
5577 {6.17937994, 11.2863636}, //
+
5578 {6.18138981, 11.2812119}, //
+
5579 {6.18374014, 11.276144}, //
+
5580 {6.18641996, 11.2711601}, //
+
5581 {6.18943977, 11.2662601}, //
+
5582 {6.19279003, 11.2614441}, //
+
5583 {6.19646978, 11.256712}, //
+
5584 {6.20050001, 11.2520638}, //
+
5585 {6.2048502, 11.2475004}, //
+
5586 {6.21095991, 11.241436}, //
+
5587 {6.21722984, 11.2352877}, //
+
5588 {6.22368002, 11.2290564}, //
+
5589 {6.23028994, 11.2227402}, //
+
5590 {6.2370801, 11.2163401}, //
+
5591 {6.24403, 11.209856}, //
+
5592 {6.25115013, 11.2032881}, //
+
5593 {6.25844002, 11.1966362}, //
+
5594 {6.26590014, 11.1899004}, //
+
5595 {6.2718401, 11.1839933}, //
+
5596 {6.27760983, 11.1783371}, //
+
5597 {6.28321981, 11.1729326}, //
+
5598 {6.28866005, 11.1677809}, //
+
5599 {6.29393005, 11.1628809}, //
+
5600 {6.29902983, 11.1582327}, //
+
5601 {6.30396986, 11.1538372}, //
+
5602 {6.30874014, 11.1496925}, //
+
5603 {6.3133502, 11.1457996}, //
+
5604 {6.3213501, 11.1361256}, //
+
5605 {6.32875013, 11.1267042}, //
+
5606 {6.33557987, 11.1175327}, //
+
5607 {6.34181023, 11.1086149}, //
+
5608 {6.34745979, 11.0999479}, //
+
5609 {6.35253, 11.0915337}, //
+
5610 {6.35699987, 11.0833702}, //
+
5611 {6.36089993, 11.0754595}, //
+
5612 {6.36420012, 11.0677996}, //
+
5613 {6.36585999, 11.0654812}, //
+
5614 {6.36780977, 11.0630369}, //
+
5615 {6.37004995, 11.0604668}, //
+
5616 {6.37259007, 11.0577707}, //
+
5617 {6.37541008, 11.0549479}, //
+
5618 {6.37853003, 11.052}, //
+
5619 {6.3819499, 11.0489264}, //
+
5620 {6.38565016, 11.0457258}, //
+
5621 {6.38964987, 11.0424004}, //
+
5622 {6.39378977, 11.039031}, //
+
5623 {6.39794016, 11.0357037}, //
+
5624 {6.40208006, 11.0324163}, //
+
5625 {6.40622997, 11.02917}, //
+
5626 {6.41036987, 11.0259647}, //
+
5627 {6.41451979, 11.0228004}, //
+
5628 {6.41866016, 11.0196762}, //
+
5629 {6.42281008, 11.016593}, //
+
5630 {6.42694998, 11.0135498}, //
+
5631 {6.4310298, 11.0107059}, //
+
5632 {6.43498993, 11.0081968}, //
+
5633 {6.43881989, 11.0060225}, //
+
5634 {6.44252014, 11.0041819}, //
+
5635 {6.44610023, 11.002677}, //
+
5636 {6.44955015, 11.0015059}, //
+
5637 {6.45287991, 11.0006695}, //
+
5638 {6.45607996, 11.0001669}, //
+
5639 {6.45914984, 11}, //
+
5640 {6.46062994, 10.9993076}, //
+
5641 {6.46206999, 10.9987411}, //
+
5642 {6.46346998, 10.9982996}, //
+
5643 {6.46481991, 10.9979849}, //
+
5644 {6.46613979, 10.9977961}, //
+
5645 {6.4674201, 10.9977331}, //
+
5646 {6.46864986, 10.9977961}, //
+
5647 {6.46985006, 10.9979849}, //
+
5648 {6.47100019, 10.9982996}, //
+
5649 {6.47509003, 10.9996643}, //
+
5650 {6.47553015, 10.9998112}, //
+
5651 {6.47585011, 10.9999161}, //
+
5652 {6.47609997, 11}, //
+
5653 {6.47404003, 11.0010281}, //
+
5654 {6.47341013, 11.0013428}, //
+
5655 {6.47270012, 11.0017004}, //
+
5656 {6.47194004, 11.0020981}, //
+
5657 {6.47118998, 11.0025368}, //
+
5658 {6.4704299, 11.0030165}, //
+
5659 {6.46967983, 11.0035372}, //
+
5660 {6.46892023, 11.0040979}, //
+
5661 {6.46817017, 11.0046997}, //
+
5662 {6.46741009, 11.0053425}, //
+
5663 {6.46666002, 11.0060263}, //
+
5664 {6.46589994, 11.0067501}, //
+
5665 {6.46517992, 11.0074635}, //
+
5666 {6.46466017, 11.0079403}, //
+
5667 {6.46668005, 11.0071278}, //
+
5668 {6.46939993, 11.0060368}, //
+
5669 {6.47609997, 11.0033503}, //
+
5670 {6.47994995, 11.0018291}, //
+
5671 {6.48397017, 11.0002661}, //
+
5672 {6.48815012, 10.998661}, //
+
5673 {6.49249983, 10.997014}, //
+
5674 {6.49701977, 10.9953251}, //
+
5675 {6.50169992, 10.9935942}, //
+
5676 {6.50654984, 10.9918213}, //
+
5677 {6.51156998, 10.9900064}, //
+
5678 {6.51674986, 10.9881496}, //
+
5679 {6.52206993, 10.9863243}, //
+
5680 {6.52747011, 10.9846239}, //
+
5681 {6.53295994, 10.9830503}, //
+
5682 {6.53852987, 10.9816017}, //
+
5683 {6.54418993, 10.9802799}, //
+
5684 {6.5499301, 10.9790831}, //
+
5685 {6.55574989, 10.978013}, //
+
5686 {6.56165981, 10.9770689}, //
+
5687 {6.56764984, 10.9762497}, //
+
5688 {6.57499981, 10.9764595}, //
+
5689 {6.5819602, 10.977087}, //
+
5690 {6.5885601, 10.9781332}, //
+
5691 {6.59476995, 10.979598}, //
+
5692 {6.60060978, 10.9814816}, //
+
5693 {6.60607004, 10.9837837}, //
+
5694 {6.6111598, 10.9865036}, //
+
5695 {6.61587, 10.9896421}, //
+
5696 {6.62020016, 10.9932003}, //
+
5697 {6.62432003, 10.9970922}, //
+
5698 {6.62839985, 11.0012369}, //
+
5699 {6.63244009, 11.0056334}, //
+
5700 {6.6364398, 11.0102816}, //
+
5701 {6.64039993, 11.0151815}, //
+
5702 {6.64431, 11.0203333}, //
+
5703 {6.64818001, 11.0257368}, //
+
5704 {6.65200996, 11.0313931}, //
+
5705 {6.65579987, 11.0373001}, //
+
5706 {6.65655994, 11.0380964}, //
+
5707 {6.65731001, 11.0389767}, //
+
5708 {6.65807009, 11.0399389}, //
+
5709 {6.65882015, 11.0409842}, //
+
5710 {6.65958023, 11.0421114}, //
+
5711 {6.66032982, 11.0433226}, //
+
5712 {6.6610899, 11.0446157}, //
+
5713 {6.66183996, 11.0459909}, //
+
5714 {6.66260004, 11.0474501}, //
+
5715 {6.66481018, 11.05128}, //
+
5716 {6.66694021, 11.0552349}, //
+
5717 {6.66899014, 11.0593166}, //
+
5718 {6.67094994, 11.0635242}, //
+
5719 {6.6728301, 11.0678577}, //
+
5720 {6.67462015, 11.0723171}, //
+
5721 {6.67633009, 11.0769014}, //
+
5722 {6.67795992, 11.0816126}, //
+
5723 {6.6795001, 11.0864496}, //
+
5724 {6.68097019, 11.0913706}, //
+
5725 {6.68235016, 11.0963345}, //
+
5726 {6.68366003, 11.1013393}, //
+
5727 {6.68486977, 11.1063862}, //
+
5728 {6.68600988, 11.111475}, //
+
5729 {6.68705988, 11.1166058}, //
+
5730 {6.68802023, 11.1217775}, //
+
5731 {6.68889999, 11.1269932}, //
+
5732 {6.68970013, 11.1322498}, //
+
5733 {6.69046021, 11.1344643}, //
+
5734 {6.69120979, 11.1365957}, //
+
5735 {6.69196987, 11.1386442}, //
+
5736 {6.69271994, 11.1406097}, //
+
5737 {6.69348001, 11.1424942}, //
+
5738 {6.69423008, 11.1442938}, //
+
5739 {6.69499016, 11.1460123}, //
+
5740 {6.69574022, 11.1476479}, //
+
5741 {6.69649982, 11.1492004}, //
+
5742 {6.69729996, 11.1539097}, //
+
5743 {6.6981802, 11.1589975}, //
+
5744 {6.69914007, 11.1644611}, //
+
5745 {6.70018005, 11.1703014}, //
+
5746 {6.70131016, 11.1765184}, //
+
5747 {6.70251989, 11.1831112}, //
+
5748 {6.70382023, 11.1900806}, //
+
5749 {6.70519018, 11.1974268}, //
+
5750 {6.70664978, 11.2051497}, //
+
5751 {6.70807981, 11.2129145}, //
+
5752 {6.7093401, 11.2203846}, //
+
5753 {6.71043015, 11.227561}, //
+
5754 {6.71134996, 11.2344437}, //
+
5755 {6.71211004, 11.2410326}, //
+
5756 {6.71268988, 11.2473278}, //
+
5757 {6.71310997, 11.2533293}, //
+
5758 {6.71336985, 11.2590361}, //
+
5759 {6.71344995, 11.2644501}, //
+
5760 {6.71344995, 11.2865}, //
+
5761 {6.71349001, 11.2883673}, //
+
5762 {6.71362019, 11.2901907}, //
+
5763 {6.71382999, 11.2919722}, //
+
5764 {6.71411991, 11.2937098}, //
+
5765 {6.71449995, 11.2954044}, //
+
5766 {6.7149601, 11.2970562}, //
+
5767 {6.71550989, 11.2986641}, //
+
5768 {6.71613979, 11.3002281}, //
+
5769 {6.7168498, 11.3017502}, //
+
5770 {6.71686983, 11.3025274}, //
+
5771 {6.71692991, 11.3033447}, //
+
5772 {6.71703005, 11.3042059}, //
+
5773 {6.71717978, 11.3051081}, //
+
5774 {6.71736002, 11.3060522}, //
+
5775 {6.71757984, 11.3070393}, //
+
5776 {6.71785021, 11.3080673}, //
+
5777 {6.71815014, 11.3091383}, //
+
5778 {6.71850014, 11.3102503}, //
+
5779 {6.71886015, 11.3114042}, //
+
5780 {6.71917009, 11.3125982}, //
+
5781 {6.71943998, 11.3138332}, //
+
5782 {6.71967983, 11.3151093}, //
+
5783 {6.71986008, 11.3164263}, //
+
5784 {6.7200098, 11.3177834}, //
+
5785 {6.72011995, 11.3191814}, //
+
5786 {6.72018003, 11.3206196}, //
+
5787 {6.72020006, 11.3220997}, //
+
5788 {6.71945, 11.3245754}, //
+
5789 {6.71870995, 11.3274679}, //
+
5790 {6.71795988, 11.3307781}, //
+
5791 {6.71720982, 11.3345051}, //
+
5792 {6.71646023, 11.3386488}, //
+
5793 {6.71571016, 11.3432112}, //
+
5794 {6.7149601, 11.3481903}, //
+
5795 {6.71420002, 11.3535862}, //
+
5796 {6.71344995, 11.3593998}, //
+
5797 {6.71264982, 11.3654327}, //
+
5798 {6.71177006, 11.3714638}, //
+
5799 {6.71081018, 11.3774939}, //
+
5800 {6.70976019, 11.383523}, //
+
5801 {6.70862007, 11.3895512}, //
+
5802 {6.70740986, 11.3955784}, //
+
5803 {6.70609999, 11.4016027}, //
+
5804 {6.70472002, 11.4076271}, //
+
5805 {6.70324993, 11.4136496}, //
+
5806 {6.70178986, 11.4195986}, //
+
5807 {6.7004199, 11.4253807}, //
+
5808 {6.69912004, 11.430994}, //
+
5809 {6.69790983, 11.4364405}, //
+
5810 {6.6967802, 11.4417181}, //
+
5811 {6.69574022, 11.4468279}, //
+
5812 {6.69477987, 11.4517698}, //
+
5813 {6.69390011, 11.4565439}, //
+
5814 {6.69309998, 11.4611502}, //
+
5815 {6.69207001, 11.4664364}, //
+
5816 {6.69049978, 11.4732714}, //
+
5817 {6.68837976, 11.4816561}, //
+
5818 {6.68571997, 11.4915895}, //
+
5819 {6.68251991, 11.5030727}, //
+
5820 {6.67877007, 11.5161057}, //
+
5821 {6.67446995, 11.5306883}, //
+
5822 {6.66963005, 11.5468187}, //
+
5823 {6.6642499, 11.5644999}, //
+
5824 {6.65862989, 11.5830078}, //
+
5825 {6.65303993, 11.6015987}, //
+
5826 {6.64750004, 11.6202717}, //
+
5827 {6.6420002, 11.6390276}, //
+
5828 {6.63653994, 11.6578674}, //
+
5829 {6.6311202, 11.6767893}, //
+
5830 {6.62574005, 11.6957932}, //
+
5831 {6.62039995, 11.71488}, //
+
5832 {6.61509991, 11.7340498}, //
+
5833 {6.60996008, 11.7525806}, //
+
5834 {6.60507011, 11.7697287}, //
+
5835 {6.60042, 11.7854939}, //
+
5836 {6.59603024, 11.7998772}, //
+
5837 {6.59187984, 11.8128767}, //
+
5838 {6.58798981, 11.8244944}, //
+
5839 {6.5843401, 11.8347292}, //
+
5840 {6.58094978, 11.8435812}, //
+
5841 {6.5777998, 11.8510504}, //
+
5842 {6.57566977, 11.8569679}, //
+
5843 {6.57379007, 11.8626766}, //
+
5844 {6.57320976, 11.8646288}, //
+
5845 {6.57310009, 11.8653612}, //
+
5846 {6.57246017, 11.8694592}, //
+
5847 {6.57177019, 11.8737221}, //
+
5848 {6.57105017, 11.87815}, //
+
5849 {6.57029009, 11.8857145}, //
+
5850 {6.56954002, 11.8933201}, //
+
5851 {6.56877995, 11.9009666}, //
+
5852 {6.56802988, 11.9086542}, //
+
5853 {6.56799984, 11.9089117}, //
+
5854 {6.56802988, 11.9094219}, //
+
5855 {6.5683198, 11.9137144}, //
+
5856 {6.56869984, 11.918047}, //
+
5857 {6.56915998, 11.9224224}, //
+
5858 {6.56970978, 11.9268398}, //
+
5859 {6.57034016, 11.9312992}, //
+
5860 {6.57105017, 11.9357996}, //
+
5861 {6.57180023, 11.9381504}, //
+
5862 {6.57253981, 11.9406672}, //
+
5863 {6.57328987, 11.9433498}, //
+
5864 {6.57403994, 11.9462004}, //
+
5865 {6.57479, 11.9492168}, //
+
5866 {6.57554007, 11.9524002}, //
+
5867 {6.57629013, 11.9557505}, //
+
5868 {6.57705021, 11.9592667}, //
+
5869 {6.5777998, 11.9629498}, //
+
5870 {6.57855988, 11.9698544}, //
+
5871 {6.57930994, 11.9770088}, //
+
5872 {6.58007002, 11.984417}, //
+
5873 {6.58082008, 11.9920759}, //
+
5874 {6.58158016, 11.9999866}, //
+
5875 {6.58233023, 12.0081501}, //
+
5876 {6.58308983, 12.0165596}, //
+
5877 {6.58383989, 12.0252304}, //
+
5878 {6.58459997, 12.0341501}, //
+
5879 {6.58462, 12.0408401}, //
+
5880 {6.58468008, 12.04737}, //
+
5881 {6.58479023, 12.05373}, //
+
5882 {6.58493996, 12.0599298}, //
+
5883 {6.5851202, 12.0659599}, //
+
5884 {6.58536005, 12.0718203}, //
+
5885 {6.58562994, 12.0775099}, //
+
5886 {6.58593988, 12.0830402}, //
+
5887 {6.5862999, 12.0883999}, //
+
5888 {6.58669996, 12.0935097}, //
+
5889 {6.58714008, 12.09828}, //
+
5890 {6.58761978, 12.1027203}, //
+
5891 {6.58815002, 12.1068201}, //
+
5892 {6.58870983, 12.11059}, //
+
5893 {6.58932018, 12.1140203}, //
+
5894 {6.58997011, 12.1171198}, //
+
5895 {6.59067011, 12.1198797}, //
+
5896 {6.59140015, 12.1223001}, //
+
5897 {6.59436989, 12.1307602}, //
+
5898 {6.59724998, 12.1395502}, //
+
5899 {6.60005999, 12.1486702}, //
+
5900 {6.60276985, 12.1581297}, //
+
5901 {6.6054101, 12.1679296}, //
+
5902 {6.60796022, 12.1780596}, //
+
5903 {6.61042023, 12.1885204}, //
+
5904 {6.61280012, 12.1993198}, //
+
5905 {6.61509991, 12.2104502}, //
+
5906 {6.61690998, 12.2223396}, //
+
5907 {6.61779022, 12.2338896}, //
+
5908 {6.61775017, 12.2451096}, //
+
5909 {6.61678982, 12.2559996}, //
+
5910 {6.61491013, 12.2665501}, //
+
5911 {6.61210012, 12.2767601}, //
+
5912 {6.60836983, 12.2866402}, //
+
5913 {6.60372019, 12.2961903}, //
+
5914 {6.59814978, 12.3053999}, //
+
5915 {6.59433985, 12.3115902}, //
+
5916 {6.59044981, 12.31812}, //
+
5917 {6.58647013, 12.3249798}, //
+
5918 {6.58240986, 12.33218}, //
+
5919 {6.57826996, 12.3397102}, //
+
5920 {6.57403994, 12.34758}, //
+
5921 {6.5697298, 12.3557796}, //
+
5922 {6.56533003, 12.3643198}, //
+
5923 {6.56085014, 12.3732004}, //
+
5924 {6.55640984, 12.38204}, //
+
5925 {6.55214024, 12.3904495}, //
+
5926 {6.54803991, 12.3984499}, //
+
5927 {6.54409981, 12.4060297}, //
+
5928 {6.54033995, 12.4131899}, //
+
5929 {6.53673983, 12.4199305}, //
+
5930 {6.53330994, 12.42626}, //
+
5931 {6.5300498, 12.4321604}, //
+
5932 {6.52694988, 12.4376497}, //
+
5933 {6.52260017, 12.4452696}, //
+
5934 {6.51857996, 12.4530497}, //
+
5935 {6.51489019, 12.4610004}, //
+
5936 {6.51154995, 12.46912}, //
+
5937 {6.50854015, 12.4773998}, //
+
5938 {6.50585985, 12.4858503}, //
+
5939 {6.50352001, 12.4944696}, //
+
5940 {6.50152016, 12.5032501}, //
+
5941 {6.4998498, 12.5122004}, //
+
5942 {6.49838018, 12.5158796}, //
+
5943 {6.49700022, 12.5193996}, //
+
5944 {6.49568987, 12.5227499}, //
+
5945 {6.49448013, 12.5259304}, //
+
5946 {6.49334002, 12.5289497}, //
+
5947 {6.49229002, 12.5318003}, //
+
5948 {6.49133015, 12.5344801}, //
+
5949 {6.49044991, 12.5369997}, //
+
5950 {6.48964977, 12.5393496}, //
+
5951 {6.48659992, 12.5457497}, //
+
5952 {6.48345995, 12.5529003}, //
+
5953 {6.48023987, 12.5608101}, //
+
5954 {6.47693014, 12.5694704}, //
+
5955 {6.47354984, 12.5788898}, //
+
5956 {6.47006989, 12.5890598}, //
+
5957 {6.46651983, 12.5999899}, //
+
5958 {6.46287012, 12.6116695}, //
+
5959 {6.45914984, 12.6240997}, //
+
5960 {6.45914984, 12.6376495}, //
+
5961 {6.45918989, 12.63836}, //
+
5962 {6.45932007, 12.6389904}, //
+
5963 {6.45951986, 12.6395397}, //
+
5964 {6.45980978, 12.6400003}, //
+
5965 {6.46017981, 12.6403799}, //
+
5966 {6.46063995, 12.6406698}, //
+
5967 {6.46118021, 12.6408796}, //
+
5968 {6.4618001, 12.6410103}, //
+
5969 {6.4625001, 12.6410503}, //
+
5970 {6.46929979, 12.6410503}, //
+
5971 {6.47074986, 12.6410303}, //
+
5972 {6.47207022, 12.6409702}, //
+
5973 {6.47326994, 12.6408596}, //
+
5974 {6.47433996, 12.6407099}, //
+
5975 {6.47527981, 12.6405296}, //
+
5976 {6.47609997, 12.6402903}, //
+
5977 {6.47678995, 12.6400204}, //
+
5978 {6.47735977, 12.6397104}, //
+
5979 {6.47779989, 12.6393499}, //
+
5980 {6.47819996, 12.6389904}, //
+
5981 {6.47864008, 12.6386805}, //
+
5982 {6.47911978, 12.6384096}, //
+
5983 {6.47965002, 12.6381702}, //
+
5984 {6.48020983, 12.63799}, //
+
5985 {6.48082018, 12.6378403}, //
+
5986 {6.48147011, 12.6377296}, //
+
5987 {6.4821701, 12.6376696}, //
+
5988 {6.48290014, 12.6376495}, //
+
5989 {6.48430014, 12.6391401}, //
+
5990 {6.48547983, 12.6405897}, //
+
5991 {6.48646021, 12.6419897}, //
+
5992 {6.48722982, 12.6433601}, //
+
5993 {6.48779011, 12.64468}, //
+
5994 {6.48814011, 12.6459599}, //
+
5995 {6.48828983, 12.6471996}, //
+
5996 {6.48822021, 12.6484003}, //
+
5997 {6.48794985, 12.6495504}, //
+
5998 {6.48749018, 12.6506996}, //
+
5999 {6.4868598, 12.6519003}, //
+
6000 {6.48606014, 12.6531296}, //
+
6001 {6.48509979, 12.6544104}, //
+
6002 {6.48396015, 12.6557302}, //
+
6003 {6.48265982, 12.6570797}, //
+
6004 {6.4811902, 12.6584797}, //
+
6005 {6.47954988, 12.6599197}, //
+
6006 {6.47774982, 12.6613998}, //
+
6007 {6.47589016, 12.6628704}, //
+
6008 {6.47408009, 12.6642504}, //
+
6009 {6.47231007, 12.6655598}, //
+
6010 {6.47057009, 12.66677}, //
+
6011 {6.46889019, 12.6679096}, //
+
6012 {6.46723986, 12.6689596}, //
+
6013 {6.46563005, 12.66992}, //
+
6014 {6.46406984, 12.6708002}, //
+
6015 {6.46255016, 12.6716003}, //
+
6016 {6.46114016, 12.67237}, //
+
6017 {6.45994997, 12.6731796}, //
+
6018 {6.45896006, 12.6740303}, //
+
6019 {6.45817995, 12.6749201}, //
+
6020 {6.45762014, 12.6758604}, //
+
6021 {6.45726013, 12.6768398}, //
+
6022 {6.45710993, 12.6778698}, //
+
6023 {6.45718002, 12.6789398}, //
+
6024 {6.45744991, 12.6800499}, //
+
6025 {6.45784998, 12.6812}, //
+
6026 {6.4582901, 12.6823997}, //
+
6027 {6.4587698, 12.68363}, //
+
6028 {6.45930004, 12.6849098}, //
+
6029 {6.45985985, 12.6862297}, //
+
6030 {6.4604702, 12.6875801}, //
+
6031 {6.46112013, 12.6889801}, //
+
6032 {6.46182013, 12.6904202}, //
+
6033 {6.46255016, 12.6919003}, //
+
6034 {6.46255016, 12.6987}, //
+
6035 {6.46259022, 12.6994104}, //
+
6036 {6.46271992, 12.7000399}, //
+
6037 {6.46292019, 12.7005901}, //
+
6038 {6.46321011, 12.7010498}, //
+
6039 {6.46358013, 12.7014303}, //
+
6040 {6.4640398, 12.7017202}, //
+
6041 {6.46458006, 12.70193}, //
+
6042 {6.46519995, 12.7020597}, //
+
6043 {6.46589994, 12.7020998}, //
+
6044 {6.46589994, 12.7088499}, //
+
6045 {6.46585989, 12.70961}, //
+
6046 {6.46573019, 12.7103596}, //
+
6047 {6.46551991, 12.7111197}, //
+
6048 {6.46522999, 12.7118702}, //
+
6049 {6.46484995, 12.7126303}, //
+
6050 {6.4643898, 12.7133799}, //
+
6051 {6.46384001, 12.7141399}, //
+
6052 {6.46321011, 12.7148895}, //
+
6053 {6.4625001, 12.7156496}, //
+
6054 {6.46170998, 12.7164097}, //
+
6055 {6.46084023, 12.7171602}, //
+
6056 {6.45987988, 12.7179203}, //
+
6057 {6.45883989, 12.7186699}, //
+
6058 {6.45770979, 12.71943}, //
+
6059 {6.45650005, 12.7201796}, //
+
6060 {6.4552002, 12.7209396}, //
+
6061 {6.45382023, 12.7216902}, //
+
6062 {6.45235014, 12.7224503}, //
+
6063 {6.4516201, 12.7231798}, //
+
6064 {6.4509201, 12.7238703}, //
+
6065 {6.44910002, 12.7256899}, //
+
6066 {6.44856977, 12.7262096}, //
+
6067 {6.44809008, 12.7266798}, //
+
6068 {6.44764996, 12.7271099}, //
+
6069 {6.44724989, 12.7275}, //
+
6070 {6.44689989, 12.7278795}, //
+
6071 {6.44659996, 12.72826}, //
+
6072 {6.44633007, 12.7286301}, //
+
6073 {6.44610977, 12.7290096}, //
+
6074 {6.44593, 12.7293901}, //
+
6075 {6.4457798, 12.7297697}, //
+
6076 {6.44568014, 12.7301397}, //
+
6077 {6.44562006, 12.7305202}, //
+
6078 {6.44560003, 12.7308998}, //
+
6079 {6.44564009, 12.7312603}, //
+
6080 {6.44576979, 12.7315702}, //
+
6081 {6.44597006, 12.7318401}, //
+
6082 {6.44625998, 12.7320805}, //
+
6083 {6.44663, 12.7322598}, //
+
6084 {6.44709015, 12.7324104}, //
+
6085 {6.44762993, 12.7325201}, //
+
6086 {6.44824982, 12.7325802}, //
+
6087 {6.44894981, 12.7326002}, //
+
6088 {6.44972992, 12.7326202}, //
+
6089 {6.45055008, 12.7326803}, //
+
6090 {6.45140982, 12.73279}, //
+
6091 {6.45231009, 12.7329397}, //
+
6092 {6.45324993, 12.73312}, //
+
6093 {6.45423985, 12.7333603}, //
+
6094 {6.45526981, 12.7336302}, //
+
6095 {6.45633984, 12.7339401}, //
+
6096 {6.45744991, 12.7342997}, //
+
6097 {6.45855999, 12.7347002}, //
+
6098 {6.45963001, 12.7351398}, //
+
6099 {6.46065998, 12.7356195}, //
+
6100 {6.46163988, 12.7361498}, //
+
6101 {6.4625802, 12.7367096}, //
+
6102 {6.46346998, 12.7373199}, //
+
6103 {6.46432018, 12.7379704}, //
+
6104 {6.46512985, 12.7386703}, //
+
6105 {6.46589994, 12.7393999}, //
+
6106 {6.46660995, 12.74018}, //
+
6107 {6.46723986, 12.7409897}, //
+
6108 {6.46779013, 12.7418499}, //
+
6109 {6.4682498, 12.7427502}, //
+
6110 {6.46862984, 12.7436895}, //
+
6111 {6.46892023, 12.7446699}, //
+
6112 {6.46913004, 12.7456903}, //
+
6113 {6.46926022, 12.7467499}, //
+
6114 {6.46929979, 12.7478504}, //
+
6115 {6.46927977, 12.7489405}, //
+
6116 {6.46922016, 12.7499504}, //
+
6117 {6.46911001, 12.7508698}, //
+
6118 {6.46895981, 12.7517099}, //
+
6119 {6.46878004, 12.75247}, //
+
6120 {6.46854019, 12.7531404}, //
+
6121 {6.46826982, 12.7537298}, //
+
6122 {6.46795988, 12.7542295}, //
+
6123 {6.46759987, 12.7546501}, //
+
6124 {6.4671998, 12.7550297}, //
+
6125 {6.46676016, 12.7554102}, //
+
6126 {6.46627998, 12.7557802}, //
+
6127 {6.46575022, 12.7561598}, //
+
6128 {6.46518993, 12.7565403}, //
+
6129 {6.46458006, 12.7569199}, //
+
6130 {6.46393013, 12.7572899}, //
+
6131 {6.46323013, 12.7576704}, //
+
6132 {6.4625001, 12.75805}, //
+
6133 {6.46178007, 12.7584295}, //
+
6134 {6.46109009, 12.75881}, //
+
6135 {6.46045017, 12.7591801}, //
+
6136 {6.45984983, 12.7595596}, //
+
6137 {6.45929003, 12.7599401}, //
+
6138 {6.4587698, 12.7603197}, //
+
6139 {6.4582901, 12.7606897}, //
+
6140 {6.45784998, 12.7610703}, //
+
6141 {6.45744991, 12.7614498}, //
+
6142 {6.45574999, 12.7631502}, //
+
6143 {6.45577002, 12.7631702}, //
+
6144 {6.4558301, 12.7632303}, //
+
6145 {6.45593977, 12.7633305}, //
+
6146 {6.45627022, 12.7636604}, //
+
6147 {6.45651007, 12.7638798}, //
+
6148 {6.45677996, 12.7641497}, //
+
6149 {6.4570899, 12.7644501}, //
+
6150 {6.45744991, 12.7648001}, //
+
6151 {6.45784998, 12.7651796}, //
+
6152 {6.4582901, 12.7655602}, //
+
6153 {6.4587698, 12.7659302}, //
+
6154 {6.45929003, 12.7663097}, //
+
6155 {6.45984983, 12.7666903}, //
+
6156 {6.46045017, 12.7670698}, //
+
6157 {6.46109009, 12.7674398}, //
+
6158 {6.46178007, 12.7678204}, //
+
6159 {6.4625001, 12.7681999}, //
+
6160 {6.46323013, 12.7685804}, //
+
6161 {6.46393013, 12.76896}, //
+
6162 {6.46458006, 12.76933}, //
+
6163 {6.46518993, 12.7697096}, //
+
6164 {6.46575022, 12.7700901}, //
+
6165 {6.46627998, 12.7704697}, //
+
6166 {6.46676016, 12.7708397}, //
+
6167 {6.4671998, 12.7712202}, //
+
6168 {6.46799994, 12.7719803}, //
+
6169 {6.46844006, 12.7723598}, //
+
6170 {6.46892023, 12.7727299}, //
+
6171 {6.46945, 12.7731104}, //
+
6172 {6.4700098, 12.77349}, //
+
6173 {6.47062016, 12.7738705}, //
+
6174 {6.47127008, 12.7742395}, //
+
6175 {6.47197008, 12.7746201}, //
+
6176 {6.47270012, 12.7749996}, //
+
6177 {6.47341013, 12.7754002}, //
+
6178 {6.47404003, 12.7758398}, //
+
6179 {6.47458982, 12.7763205}, //
+
6180 {6.47504997, 12.7768497}, //
+
6181 {6.47543001, 12.7774096}, //
+
6182 {6.47571993, 12.7780199}, //
+
6183 {6.47593021, 12.7786703}, //
+
6184 {6.47605991, 12.7793703}, //
+
6185 {6.47609997, 12.7800999}, //
+
6186 {6.46929979, 12.7817497}, //
+
6187 {6.46776009, 12.7821102}, //
+
6188 {6.46612978, 12.7824202}, //
+
6189 {6.46441984, 12.78269}, //
+
6190 {6.46261978, 12.7829304}, //
+
6191 {6.46074009, 12.7831097}, //
+
6192 {6.4587698, 12.7832603}, //
+
6193 {6.45670986, 12.78337}, //
+
6194 {6.45456982, 12.7834301}, //
+
6195 {6.45235014, 12.7834501}, //
+
6196 {6.45082998, 12.7842102}, //
+
6197 {6.44926023, 12.7849598}, //
+
6198 {6.44765997, 12.7857199}, //
+
6199 {6.4460001, 12.7864704}, //
+
6200 {6.44431019, 12.7872295}, //
+
6201 {6.44257021, 12.7879801}, //
+
6202 {6.44079018, 12.7887402}, //
+
6203 {6.43897009, 12.7894897}, //
+
6204 {6.43709993, 12.7902498}, //
+
6205 {6.43530989, 12.7909803}, //
+
6206 {6.43368006, 12.7916803}, //
+
6207 {6.43221998, 12.7923298}, //
+
6208 {6.43092012, 12.7929401}, //
+
6209 {6.42979002, 12.7934999}, //
+
6210 {6.42883015, 12.7940302}, //
+
6211 {6.42804003, 12.7945099}, //
+
6212 {6.42741013, 12.7949495}, //
+
6213 {6.42694998, 12.7953501}, //
+
6214 {6.4267602, 12.7957096}, //
+
6215 {6.42694998, 12.7960196}, //
+
6216 {6.42750978, 12.7962904}, //
+
6217 {6.42845011, 12.7965298}, //
+
6218 {6.42976999, 12.79671}, //
+
6219 {6.4314599, 12.7968597}, //
+
6220 {6.43352985, 12.7969704}, //
+
6221 {6.43597984, 12.7970304}, //
+
6222 {6.43879986, 12.7970505}, //
+
6223 {6.43950987, 12.7971096}, //
+
6224 {6.44013977, 12.7973003}, //
+
6225 {6.44069004, 12.7976103}, //
+
6226 {6.44115019, 12.7980499}, //
+
6227 {6.44153023, 12.7986097}, //
+
6228 {6.44182014, 12.7992897}, //
+
6229 {6.44202995, 12.8001003}, //
+
6230 {6.44216013, 12.8010397}, //
+
6231 {6.44220018, 12.8021002}, //
+
6232 {6.44220018, 12.8258495}, //
+
6233 {6.44224024, 12.8269997}, //
+
6234 {6.44236994, 12.8282003}, //
+
6235 {6.44258022, 12.8294296}, //
+
6236 {6.44287014, 12.8307104}, //
+
6237 {6.44325018, 12.8320303}, //
+
6238 {6.44370985, 12.8333797}, //
+
6239 {6.44426012, 12.8347797}, //
+
6240 {6.44489002, 12.8362198}, //
+
6241 {6.44560003, 12.8376999}, //
+
6242 {6.44864988, 12.8394604}, //
+
6243 {6.45178986, 12.8417301}, //
+
6244 {6.45500994, 12.8444901}, //
+
6245 {6.45832014, 12.8477602}, //
+
6246 {6.46169996, 12.8515396}, //
+
6247 {6.46517992, 12.8558102}, //
+
6248 {6.46872997, 12.86059}, //
+
6249 {6.47238016, 12.8658705}, //
+
6250 {6.47609997, 12.8716497}, //
+
6251 {6.47694016, 12.87395}, //
+
6252 {6.47794008, 12.8763304}, //
+
6253 {6.47911978, 12.8787899}, //
+
6254 {6.48046017, 12.88134}, //
+
6255 {6.48195982, 12.8839798}, //
+
6256 {6.48363018, 12.8866901}, //
+
6257 {6.48546982, 12.8894997}, //
+
6258 {6.48748016, 12.8923798}, //
+
6259 {6.48964977, 12.8953505}, //
+
6260 {6.49337006, 12.9013395}, //
+
6261 {6.49701977, 12.9072504}, //
+
6262 {6.50056982, 12.9130697}, //
+
6263 {6.50404978, 12.9188004}, //
+
6264 {6.50743008, 12.9244499}, //
+
6265 {6.5107398, 12.9300203}, //
+
6266 {6.51395988, 12.9355001}, //
+
6267 {6.51709986, 12.9408903}, //
+
6268 {6.52015018, 12.9462004}, //
+
6269 {6.52308989, 12.9513502}, //
+
6270 {6.52585983, 12.9562502}, //
+
6271 {6.52846003, 12.9609003}, //
+
6272 {6.53088999, 12.9652996}, //
+
6273 {6.5331502, 12.9694405}, //
+
6274 {6.53524017, 12.9733295}, //
+
6275 {6.53715992, 12.9769697}, //
+
6276 {6.53891993, 12.98036}, //
+
6277 {6.54050016, 12.9834995}, //
+
6278 {6.54343987, 12.9895296}, //
+
6279 {6.54620981, 12.9955597}, //
+
6280 {6.54881001, 13.0015898}, //
+
6281 {6.55123997, 13.0076199}, //
+
6282 {6.55350018, 13.0136499}, //
+
6283 {6.55559015, 13.01968}, //
+
6284 {6.5575099, 13.0256996}, //
+
6285 {6.55926991, 13.0317297}, //
+
6286 {6.56085014, 13.0377502}, //
+
6287 {6.56228018, 13.0436201}, //
+
6288 {6.56353998, 13.0491505}, //
+
6289 {6.56463003, 13.0543404}, //
+
6290 {6.56554985, 13.0592003}, //
+
6291 {6.56630993, 13.0637197}, //
+
6292 {6.56688976, 13.0679102}, //
+
6293 {6.56730986, 13.0717602}, //
+
6294 {6.56757021, 13.0752697}, //
+
6295 {6.56764984, 13.0784502}, //
+
6296 {6.56748009, 13.0824499}, //
+
6297 {6.56697989, 13.0868998}, //
+
6298 {6.56614017, 13.0918198}, //
+
6299 {6.56496, 13.0972004}, //
+
6300 {6.56344986, 13.1030397}, //
+
6301 {6.56161022, 13.1093397}, //
+
6302 {6.55942011, 13.1161003}, //
+
6303 {6.55690002, 13.1233196}, //
+
6304 {6.55404997, 13.1309996}, //
+
6305 {6.55095005, 13.13902}, //
+
6306 {6.54768991, 13.1472397}, //
+
6307 {6.54426003, 13.1556797}, //
+
6308 {6.5406599, 13.16432}, //
+
6309 {6.53690004, 13.1731796}, //
+
6310 {6.53295994, 13.1822395}, //
+
6311 {6.52886009, 13.1915197}, //
+
6312 {6.52459002, 13.2010002}, //
+
6313 {6.52015018, 13.2107}, //
+
6314 {6.51794004, 13.2157803}, //
+
6315 {6.5158, 13.22048}, //
+
6316 {6.51376009, 13.2248096}, //
+
6317 {6.5117898, 13.2287598}, //
+
6318 {6.50991011, 13.2323399}, //
+
6319 {6.50811005, 13.2355404}, //
+
6320 {6.50639009, 13.2383699}, //
+
6321 {6.50474977, 13.2408199}, //
+
6322 {6.50320005, 13.2428999}, //
+
6323 {6.50169992, 13.24473}, //
+
6324 {6.50019979, 13.2464199}, //
+
6325 {6.49869013, 13.2479897}, //
+
6326 {6.49719, 13.2494402}, //
+
6327 {6.49567986, 13.2507496}, //
+
6328 {6.4941802, 13.2519398}, //
+
6329 {6.49267006, 13.2530098}, //
+
6330 {6.49115992, 13.2539396}, //
+
6331 {6.48964977, 13.2547503}, //
+
6332 {6.48807001, 13.2554598}, //
+
6333 {6.48631001, 13.2560902}, //
+
6334 {6.48438978, 13.2566404}, //
+
6335 {6.4822998, 13.2571001}, //
+
6336 {6.48004007, 13.2574797}, //
+
6337 {6.47761011, 13.2577696}, //
+
6338 {6.47500992, 13.2579803}, //
+
6339 {6.47223997, 13.25811}, //
+
6340 {6.46929979, 13.2581501}, //
+
6341 {6.46850014, 13.2581902}, //
+
6342 {6.4676199, 13.2583199}, //
+
6343 {6.46666002, 13.2585297}, //
+
6344 {6.46562004, 13.2588196}, //
+
6345 {6.46448994, 13.2592001}, //
+
6346 {6.4632802, 13.2596598}, //
+
6347 {6.46197987, 13.26021}, //
+
6348 {6.46060991, 13.2608404}, //
+
6349 {6.45914984, 13.2615499}, //
+
6350 {6.45682001, 13.2614202}, //
+
6351 {6.45437002, 13.2610502}, //
+
6352 {6.45178986, 13.2604198}, //
+
6353 {6.44909, 13.2595396}, //
+
6354 {6.44625998, 13.2584}, //
+
6355 {6.44330978, 13.25702}, //
+
6356 {6.44022989, 13.2553797}, //
+
6357 {6.43702984, 13.2534904}, //
+
6358 {6.43370008, 13.2513504}, //
+
6359 {6.43034983, 13.2490301}, //
+
6360 {6.42709017, 13.2465897}, //
+
6361 {6.42391014, 13.2440205}, //
+
6362 {6.42081022, 13.2413197}, //
+
6363 {6.41778994, 13.2384996}, //
+
6364 {6.41485977, 13.2355499}, //
+
6365 {6.41200018, 13.23248}, //
+
6366 {6.40923977, 13.2292805}, //
+
6367 {6.40654993, 13.2259502}, //
+
6368 {6.40401983, 13.2226696}, //
+
6369 {6.40170002, 13.2195902}, //
+
6370 {6.39959002, 13.2167196}, //
+
6371 {6.39769983, 13.2140598}, //
+
6372 {6.39600992, 13.2116098}, //
+
6373 {6.39452982, 13.2093697}, //
+
6374 {6.39326, 13.2073402}, //
+
6375 {6.39219999, 13.2055197}, //
+
6376 {6.39134979, 13.2039003}, //
+
6377 {6.38903999, 13.2013903}, //
+
6378 {6.38665009, 13.1983805}, //
+
6379 {6.38418007, 13.19487}, //
+
6380 {6.38161993, 13.1908503}, //
+
6381 {6.37898016, 13.1863298}, //
+
6382 {6.3762598, 13.1813002}, //
+
6383 {6.37345982, 13.1757698}, //
+
6384 {6.37057018, 13.1697397}, //
+
6385 {6.36759996, 13.1632004}, //
+
6386 {6.3646102, 13.1563997}, //
+
6387 {6.36166, 13.14956}, //
+
6388 {6.35874987, 13.1426802}, //
+
6389 {6.35587978, 13.1357498}, //
+
6390 {6.35305023, 13.1287899}, //
+
6391 {6.35026979, 13.1217804}, //
+
6392 {6.34751987, 13.1147299}, //
+
6393 {6.34481001, 13.1076298}, //
+
6394 {6.34215021, 13.1005001}, //
+
6395 {6.33962011, 13.0935297}, //
+
6396 {6.33729982, 13.0869398}, //
+
6397 {6.33518982, 13.0807304}, //
+
6398 {6.3332901, 13.0748901}, //
+
6399 {6.33159018, 13.0694304}, //
+
6400 {6.33011007, 13.0643396}, //
+
6401 {6.32882977, 13.0596399}, //
+
6402 {6.32776022, 13.0552998}, //
+
6403 {6.32690001, 13.0513496}, //
+
6404 {6.32616997, 13.0492697}, //
+
6405 {6.32546997, 13.0475702}, //
+
6406 {6.32482004, 13.0462503}, //
+
6407 {6.32421017, 13.04531}, //
+
6408 {6.32364988, 13.0447397}, //
+
6409 {6.32312012, 13.0445499}, //
+
6410 {6.32263994, 13.0447397}, //
+
6411 {6.32219982, 13.04531}, //
+
6412 {6.32180023, 13.0462503}, //
+
6413 {6.32141018, 13.0474501}, //
+
6414 {6.32098007, 13.04877}, //
+
6415 {6.32050991, 13.05021}, //
+
6416 {6.31999016, 13.0517797}, //
+
6417 {6.31942987, 13.0534801}, //
+
6418 {6.31882, 13.0552902}, //
+
6419 {6.31675005, 13.0614996}, //
+
6420 {6.31604004, 13.0637999}, //
+
6421 {6.31541014, 13.0661802}, //
+
6422 {6.31485987, 13.0686502}, //
+
6423 {6.3144002, 13.0712004}, //
+
6424 {6.31402016, 13.0738401}, //
+
6425 {6.31372976, 13.0765696}, //
+
6426 {6.31351995, 13.07938}, //
+
6427 {6.31338978, 13.0822697}, //
+
6428 {6.3133502, 13.0852499}, //
+
6429 {6.31262016, 13.0889101}, //
+
6430 {6.31192017, 13.0923595}, //
+
6431 {6.31127024, 13.0956097}, //
+
6432 {6.31065989, 13.0986404}, //
+
6433 {6.31010008, 13.1014605}, //
+
6434 {6.30956984, 13.1040697}, //
+
6435 {6.30865002, 13.1086702}, //
+
6436 {6.30824995, 13.1106501}, //
+
6437 {6.30784988, 13.1124802}, //
+
6438 {6.30740976, 13.1141796}, //
+
6439 {6.30693007, 13.1157503}, //
+
6440 {6.30639982, 13.1171999}, //
+
6441 {6.30584002, 13.1185198}, //
+
6442 {6.30523014, 13.1197205}, //
+
6443 {6.30458021, 13.1207895}, //
+
6444 {6.30388021, 13.1217299}, //
+
6445 {6.30315018, 13.12255}, //
+
6446 {6.30173016, 13.1256905}, //
+
6447 {6.30047989, 13.1290798}, //
+
6448 {6.29939985, 13.13272}, //
+
6449 {6.29848003, 13.13661}, //
+
6450 {6.29772997, 13.1407499}, //
+
6451 {6.29715014, 13.1451502}, //
+
6452 {6.29673004, 13.1498003}, //
+
6453 {6.29648018, 13.1547003}, //
+
6454 {6.29640007, 13.1598501}, //
+
6455 {6.29636002, 13.16366}, //
+
6456 {6.29622984, 13.1675501}, //
+
6457 {6.29602003, 13.1715298}, //
+
6458 {6.29573011, 13.1755896}, //
+
6459 {6.29535007, 13.1797304}, //
+
6460 {6.29488993, 13.18396}, //
+
6461 {6.29434013, 13.1882696}, //
+
6462 {6.29371023, 13.1926699}, //
+
6463 {6.29300022, 13.1971502}, //
+
6464 {6.29209995, 13.2008305}, //
+
6465 {6.29090023, 13.2043505}, //
+
6466 {6.28942013, 13.2076902}, //
+
6467 {6.28764009, 13.2108698}, //
+
6468 {6.28556013, 13.2138796}, //
+
6469 {6.28319979, 13.2167301}, //
+
6470 {6.28053999, 13.2194004}, //
+
6471 {6.2775898, 13.2219105}, //
+
6472 {6.27435017, 13.2242498}, //
+
6473 {6.27101994, 13.2264605}, //
+
6474 {6.26781988, 13.2285995}, //
+
6475 {6.26473999, 13.2306404}, //
+
6476 {6.2617898, 13.2326097}, //
+
6477 {6.25895977, 13.2344904}, //
+
6478 {6.25368023, 13.2380104}, //
+
6479 {6.25122976, 13.2396498}, //
+
6480 {6.24889994, 13.2412004}, //
+
6481 {6.24518013, 13.2435904}, //
+
6482 {6.24152994, 13.2462301}, //
+
6483 {6.23797989, 13.2491198}, //
+
6484 {6.23449993, 13.2522602}, //
+
6485 {6.23112011, 13.2556496}, //
+
6486 {6.22780991, 13.2592897}, //
+
6487 {6.22458982, 13.2631798}, //
+
6488 {6.22144985, 13.2673101}, //
+
6489 {6.2184, 13.2716999}, //
+
6490 {6.21613979, 13.2740097}, //
+
6491 {6.21389008, 13.2763996}, //
+
6492 {6.21162987, 13.2788696}, //
+
6493 {6.20937014, 13.2814302}, //
+
6494 {6.20710993, 13.28407}, //
+
6495 {6.20484018, 13.2867899}, //
+
6496 {6.20257998, 13.2895899}, //
+
6497 {6.20031977, 13.2924805}, //
+
6498 {6.19805002, 13.2954502}, //
+
6499 {6.19583988, 13.2985001}, //
+
6500 {6.19369984, 13.3016396}, //
+
6501 {6.19165993, 13.3048601}, //
+
6502 {6.18969011, 13.3081703}, //
+
6503 {6.18780994, 13.3115501}, //
+
6504 {6.18600988, 13.3150301}, //
+
6505 {6.18428993, 13.3185797}, //
+
6506 {6.18265009, 13.3222303}, //
+
6507 {6.18109989, 13.3259497}, //
+
6508 {6.17956018, 13.3295498}, //
+
6509 {6.17792988, 13.3328104}, //
+
6510 {6.17621994, 13.3357401}, //
+
6511 {6.17441988, 13.3383398}, //
+
6512 {6.17254019, 13.3406}, //
+
6513 {6.1705699, 13.3425303}, //
+
6514 {6.16850996, 13.34412}, //
+
6515 {6.16636992, 13.3453798}, //
+
6516 {6.16415024, 13.3463001}, //
+
6517 {6.16339016, 13.3477697}, //
+
6518 {6.16264009, 13.3491497}, //
+
6519 {6.16188002, 13.3504601}, //
+
6520 {6.16112995, 13.3516703}, //
+
6521 {6.16036987, 13.3528099}, //
+
6522 {6.15961981, 13.3538599}, //
+
6523 {6.15886021, 13.3548203}, //
+
6524 {6.15811014, 13.3556995}, //
+
6525 {6.15735006, 13.3564997}, //
+
6526 {6.15665007, 13.3572502}, //
+
6527 {6.15603018, 13.3580103}, //
+
6528 {6.15548992, 13.3587599}, //
+
6529 {6.15502977, 13.3595104}, //
+
6530 {6.15466022, 13.36026}, //
+
6531 {6.15436983, 13.3610096}, //
+
6532 {6.15417004, 13.3617601}, //
+
6533 {6.15403986, 13.3625002}, //
+
6534 {6.15399981, 13.3632498}, //
+
6535 {6.15390015, 13.3653698}, //
+
6536 {6.15358019, 13.3671999}, //
+
6537 {6.15305996, 13.3687296}, //
+
6538 {6.15231991, 13.3699703}, //
+
6539 {6.15138006, 13.3709097}, //
+
6540 {6.15021992, 13.3715601}, //
+
6541 {6.14885998, 13.3719196}, //
+
6542 {6.14728022, 13.3719797}, //
+
6543 {6.14550018, 13.3717499}, //
+
6544 {6.14355993, 13.3712702}, //
+
6545 {6.14148998, 13.3705797}, //
+
6546 {6.13928986, 13.3696804}, //
+
6547 {6.13697004, 13.3685703}, //
+
6548 {6.13452005, 13.3672504}, //
+
6549 {6.13193989, 13.3657303}, //
+
6550 {6.12924004, 13.3639898}, //
+
6551 {6.12641001, 13.3620501}, //
+
6552 {6.1234498, 13.3599005}, //
+
6553 {6.12201023, 13.35851}, //
+
6554 {6.12069988, 13.3573799}, //
+
6555 {6.11951017, 13.3564997}, //
+
6556 {6.11845016, 13.3558702}, //
+
6557 {6.11750984, 13.3554897}, //
+
6558 {6.11669016, 13.3553696}, //
+
6559 {6.11600018, 13.3554897}, //
+
6560 {6.11543989, 13.3558702}, //
+
6561 {6.11499977, 13.3564997}, //
+
6562 {6.11468983, 13.3572998}, //
+
6563 {6.11450005, 13.35818}, //
+
6564 {6.11442995, 13.3591404}, //
+
6565 {6.11450005, 13.3601799}, //
+
6566 {6.11468983, 13.36131}, //
+
6567 {6.11499977, 13.3625202}, //
+
6568 {6.11543989, 13.3638201}, //
+
6569 {6.11601019, 13.3651896}, //
+
6570 {6.11670017, 13.3666496}, //
+
6571 {6.11741018, 13.3681602}, //
+
6572 {6.11804008, 13.3696699}, //
+
6573 {6.11858988, 13.3711796}, //
+
6574 {6.11905003, 13.3726797}, //
+
6575 {6.11943007, 13.3741903}, //
+
6576 {6.11971998, 13.3756905}, //
+
6577 {6.11992979, 13.3772001}, //
+
6578 {6.12005997, 13.3787003}, //
+
6579 {6.12010002, 13.3802004}, //
+
6580 {6.12001991, 13.3823404}, //
+
6581 {6.11976004, 13.3842297}, //
+
6582 {6.11933994, 13.38587}, //
+
6583 {6.11876011, 13.3872499}, //
+
6584 {6.11800003, 13.3883896}, //
+
6585 {6.11708021, 13.3892698}, //
+
6586 {6.11599016, 13.3899002}, //
+
6587 {6.11472988, 13.3902702}, //
+
6588 {6.11329985, 13.3903999}, //
+
6589 {6.09975004, 13.3903999}, //
+
6590 {6.09898996, 13.3903599}, //
+
6591 {6.0982399, 13.3902302}, //
+
6592 {6.09747982, 13.3900204}, //
+
6593 {6.09673023, 13.3897305}, //
+
6594 {6.09597015, 13.3893499}, //
+
6595 {6.09522009, 13.3888903}, //
+
6596 {6.09446001, 13.38834}, //
+
6597 {6.09370995, 13.3877096}, //
+
6598 {6.09294987, 13.3870001}, //
+
6599 {6.09223986, 13.3870201}, //
+
6600 {6.09160995, 13.3870802}, //
+
6601 {6.09106016, 13.3871899}, //
+
6602 {6.09060001, 13.3873396}, //
+
6603 {6.09021997, 13.3875198}, //
+
6604 {6.08993006, 13.3877602}, //
+
6605 {6.08971977, 13.3880301}, //
+
6606 {6.08959007, 13.38834}, //
+
6607 {6.08955002, 13.3886995}, //
+
6608 {6.08955002, 13.3937998}, //
+
6609 {6.09102011, 13.3945904}, //
+
6610 {6.09240007, 13.3954601}, //
+
6611 {6.09370995, 13.3964195}, //
+
6612 {6.09492016, 13.39746}, //
+
6613 {6.0960598, 13.3985901}, //
+
6614 {6.09710979, 13.3998003}, //
+
6615 {6.09807014, 13.4011002}, //
+
6616 {6.09894991, 13.4024801}, //
+
6617 {6.09975004, 13.4039497}, //
+
6618 {6.10044003, 13.4053802}, //
+
6619 {6.10100985, 13.4066401}, //
+
6620 {6.10144997, 13.4077301}, //
+
6621 {6.10175991, 13.4086504}, //
+
6622 {6.10195017, 13.4094105}, //
+
6623 {6.10201979, 13.4099903}, //
+
6624 {6.10195017, 13.4104099}, //
+
6625 {6.10175991, 13.4106703}, //
+
6626 {6.10144997, 13.4107504}, //
+
6627 {6.10100985, 13.4107304}, //
+
6628 {6.10044003, 13.4106703}, //
+
6629 {6.09975004, 13.4105597}, //
+
6630 {6.09892988, 13.4104099}, //
+
6631 {6.09799004, 13.4102297}, //
+
6632 {6.09692001, 13.4099903}, //
+
6633 {6.09571981, 13.4097204}, //
+
6634 {6.09439993, 13.4094105}, //
+
6635 {6.09294987, 13.40905}, //
+
6636 {6.09147978, 13.4086504}, //
+
6637 {6.09009981, 13.4082098}, //
+
6638 {6.08878994, 13.4077301}, //
+
6639 {6.0875802, 13.4071999}, //
+
6640 {6.08644009, 13.4066401}, //
+
6641 {6.08539009, 13.4060297}, //
+
6642 {6.08443022, 13.4053802}, //
+
6643 {6.08354998, 13.4046803}, //
+
6644 {6.08274984, 13.4039497}, //
+
6645 {6.08199978, 13.4031897}, //
+
6646 {6.0812602, 13.4024401}, //
+
6647 {6.08051014, 13.40168}, //
+
6648 {6.07976007, 13.4009304}, //
+
6649 {6.07901001, 13.4001703}, //
+
6650 {6.07825994, 13.3994198}, //
+
6651 {6.07750988, 13.3986597}, //
+
6652 {6.0767498, 13.3979101}, //
+
6653 {6.07600021, 13.39715}, //
+
6654 {6.07594013, 13.3965101}, //
+
6655 {6.07574987, 13.39608}, //
+
6656 {6.07542992, 13.3958502}, //
+
6657 {6.0749898, 13.3958302}, //
+
6658 {6.07442999, 13.3960199}, //
+
6659 {6.07372999, 13.3964195}, //
+
6660 {6.07290983, 13.3970203}, //
+
6661 {6.07196999, 13.39783}, //
+
6662 {6.07089996, 13.3988504}, //
+
6663 {6.06977987, 13.3999996}, //
+
6664 {6.06864977, 13.4012003}, //
+
6665 {6.06753016, 13.4024296}, //
+
6666 {6.06640005, 13.4037104}, //
+
6667 {6.06526995, 13.4050303}, //
+
6668 {6.06413984, 13.4063797}, //
+
6669 {6.06301022, 13.4077797}, //
+
6670 {6.06188011, 13.4092197}, //
+
6671 {6.06075001, 13.4106998}, //
+
6672 {6.0596199, 13.4122295}, //
+
6673 {6.05847979, 13.4138002}, //
+
6674 {6.05735016, 13.4154196}, //
+
6675 {6.05622005, 13.4170704}, //
+
6676 {6.05507994, 13.4187603}, //
+
6677 {6.05394983, 13.4204998}, //
+
6678 {6.05282021, 13.4222803}, //
+
6679 {6.05168009, 13.4240904}, //
+
6680 {6.05054998, 13.4259501}, //
+
6681 {6.04948997, 13.4278603}, //
+
6682 {6.04855013, 13.4298096}, //
+
6683 {6.04773998, 13.4318104}, //
+
6684 {6.04706001, 13.4338398}, //
+
6685 {6.04650021, 13.4359198}, //
+
6686 {6.04606009, 13.4380398}, //
+
6687 {6.04575014, 13.4401999}, //
+
6688 {6.04555988, 13.4424}, //
+
6689 {6.0454998, 13.4446497}, //
+
6690 {6.04410982, 13.4461098}, //
+
6691 {6.04298019, 13.4474802}, //
+
6692 {6.04209995, 13.4487801}, //
+
6693 {6.04147005, 13.4499903}, //
+
6694 {6.04109001, 13.4511204}, //
+
6695 {6.04096985, 13.4521599}, //
+
6696 {6.04109001, 13.4531202}, //
+
6697 {6.04147005, 13.4540005}, //
+
6698 {6.04209995, 13.4547997}, //
+
6699 {6.04286003, 13.4555597}, //
+
6700 {6.04587984, 13.45858}, //
+
6701 {6.04890013, 13.4616003}, //
+
6702 {6.04965019, 13.4623604}, //
+
6703 {6.05038977, 13.46311}, //
+
6704 {6.05113983, 13.46387}, //
+
6705 {6.0518899, 13.4646196}, //
+
6706 {6.05263996, 13.4653797}, //
+
6707 {6.05339003, 13.4661303}, //
+
6708 {6.05414009, 13.4668903}, //
+
6709 {6.05490017, 13.4676399}, //
+
6710 {6.05565023, 13.4684}, //
+
6711 {6.05552006, 13.46912}, //
+
6712 {6.05515003, 13.4698095}, //
+
6713 {6.05452013, 13.4704504}, //
+
6714 {6.05363989, 13.4710503}, //
+
6715 {6.05249977, 13.4716101}, //
+
6716 {6.0511198, 13.4721298}, //
+
6717 {6.04947996, 13.4726105}, //
+
6718 {6.04758978, 13.4730501}, //
+
6719 {6.04545021, 13.4734497}, //
+
6720 {6.04319, 13.4737597}, //
+
6721 {6.04093981, 13.4739504}, //
+
6722 {6.03868008, 13.47402}, //
+
6723 {6.03642988, 13.4739504}, //
+
6724 {6.03417015, 13.4737597}, //
+
6725 {6.03191996, 13.4734497}, //
+
6726 {6.02966022, 13.4730101}, //
+
6727 {6.02741003, 13.4724398}, //
+
6728 {6.02514982, 13.4717503}, //
+
6729 {6.02371979, 13.4717703}, //
+
6730 {6.02245998, 13.4718304}, //
+
6731 {6.02136993, 13.47194}, //
+
6732 {6.02045012, 13.4720898}, //
+
6733 {6.01969004, 13.47227}, //
+
6734 {6.0191102, 13.4725103}, //
+
6735 {6.01869011, 13.4727802}, //
+
6736 {6.01843023, 13.4730902}, //
+
6737 {6.01835012, 13.4734497}, //
+
6738 {6.01839018, 13.4738703}, //
+
6739 {6.01851988, 13.47437}, //
+
6740 {6.01873016, 13.4749603}, //
+
6741 {6.01902008, 13.4756298}, //
+
6742 {6.01940012, 13.4763899}, //
+
6743 {6.01985979, 13.4772301}, //
+
6744 {6.02041006, 13.4781504}, //
+
6745 {6.02103996, 13.4791603}, //
+
6746 {6.02174997, 13.4802504}, //
+
6747 {6.02251005, 13.4813995}, //
+
6748 {6.02326012, 13.4826002}, //
+
6749 {6.0240202, 13.4838305}, //
+
6750 {6.02476978, 13.4851103}, //
+
6751 {6.02552986, 13.4864302}, //
+
6752 {6.02627993, 13.4877796}, //
+
6753 {6.02704, 13.4891796}, //
+
6754 {6.02779007, 13.4906197}, //
+
6755 {6.02855015, 13.4920998}, //
+
6756 {6.03189993, 13.4920998}, //
+
6757 {6.03258991, 13.4928102}, //
+
6758 {6.03316021, 13.4934397}, //
+
6759 {6.03359985, 13.4939899}, //
+
6760 {6.0339098, 13.4944496}, //
+
6761 {6.03410006, 13.4948301}, //
+
6762 {6.03417015, 13.49512}, //
+
6763 {6.03410006, 13.4953299}, //
+
6764 {6.0339098, 13.4954596}, //
+
6765 {6.03359985, 13.4954996}, //
+
6766 {6.0302, 13.4954996}, //
+
6767 {6.0297699, 13.4954596}, //
+
6768 {6.02921009, 13.4953299}, //
+
6769 {6.02853012, 13.49512}, //
+
6770 {6.02771997, 13.4948301}, //
+
6771 {6.02678013, 13.4944496}, //
+
6772 {6.02571011, 13.4939899}, //
+
6773 {6.02451992, 13.4934397}, //
+
6774 {6.02320004, 13.4928102}, //
+
6775 {6.02174997, 13.4920998}, //
+
6776 {6.02027988, 13.4920597}, //
+
6777 {6.01889992, 13.49193}, //
+
6778 {6.01760006, 13.4917202}, //
+
6779 {6.01638985, 13.4914303}, //
+
6780 {6.01526022, 13.4910498}, //
+
6781 {6.01422024, 13.4905901}, //
+
6782 {6.01325989, 13.4900398}, //
+
6783 {6.01239014, 13.4894104}, //
+
6784 {6.01160002, 13.4886999}, //
+
6785 {6.01086998, 13.48878}, //
+
6786 {6.01016998, 13.4890404}, //
+
6787 {6.00952005, 13.48946}, //
+
6788 {6.00891018, 13.4900398}, //
+
6789 {6.0083499, 13.4907999}, //
+
6790 {6.00782013, 13.4917202}, //
+
6791 {6.00733995, 13.4928102}, //
+
6792 {6.00689983, 13.4940701}, //
+
6793 {6.00649977, 13.4954996}, //
+
6794 {6.00615978, 13.4970303}, //
+
6795 {6.00590992, 13.4986}, //
+
6796 {6.00574017, 13.5002203}, //
+
6797 {6.00566006, 13.5018702}, //
+
6798 {6.00566006, 13.5035601}, //
+
6799 {6.00574017, 13.5052996}, //
+
6800 {6.00590992, 13.5070801}, //
+
6801 {6.00615978, 13.5088902}, //
+
6802 {6.00649977, 13.5107498}, //
+
6803 {6.00685978, 13.51262}, //
+
6804 {6.0071702, 13.5144396}, //
+
6805 {6.00744009, 13.5162201}, //
+
6806 {6.00767994, 13.5179596}, //
+
6807 {6.00786018, 13.5196505}, //
+
6808 {6.00800991, 13.5213099}, //
+
6809 {6.00812006, 13.5229101}, //
+
6810 {6.00818014, 13.5244799}, //
+
6811 {6.00820017, 13.526}, //
+
6812 {6.0088501, 13.5267801}, //
+
6813 {6.00929022, 13.5276003}, //
+
6814 {6.00952005, 13.5284595}, //
+
6815 {6.00954008, 13.5293598}, //
+
6816 {6.00934982, 13.5303001}, //
+
6817 {6.00895977, 13.5312901}, //
+
6818 {6.0083499, 13.53232}, //
+
6819 {6.00753021, 13.53339}, //
+
6820 {6.00649977, 13.5345001}, //
+
6821 {6.00414991, 13.53685}, //
+
6822 {5.99464989, 13.5463495}, //
+
6823 {5.99243021, 13.5485697}, //
+
6824 {5.99028015, 13.5507097}, //
+
6825 {5.98823023, 13.5527697}, //
+
6826 {5.98624992, 13.55474}, //
+
6827 {5.98437023, 13.5566196}, //
+
6828 {5.98256016, 13.5584202}, //
+
6829 {5.98084021, 13.5601301}, //
+
6830 {5.97919989, 13.5617599}, //
+
6831 {5.97765017, 13.5633001}, //
+
6832 {5.97463989, 13.5671101}, //
+
6833 {5.9716301, 13.5710001}, //
+
6834 {5.96861982, 13.5749798}, //
+
6835 {5.96561003, 13.5790396}, //
+
6836 {5.96259022, 13.5831804}, //
+
6837 {5.95957994, 13.58741}, //
+
6838 {5.95657015, 13.5917196}, //
+
6839 {5.95355988, 13.5961199}, //
+
6840 {5.95055008, 13.6006002}, //
+
6841 {5.94907999, 13.6035299}, //
+
6842 {5.94770002, 13.6062899}, //
+
6843 {5.94640017, 13.60888}, //
+
6844 {5.94518995, 13.61131}, //
+
6845 {5.94405985, 13.6135702}, //
+
6846 {5.94301987, 13.6156702}, //
+
6847 {5.94205999, 13.61759}, //
+
6848 {5.94118977, 13.61936}, //
+
6849 {5.94040012, 13.6209497}, //
+
6850 {5.93804979, 13.6239996}, //
+
6851 {5.93553019, 13.62714}, //
+
6852 {5.93284988, 13.6303596}, //
+
6853 {5.92999983, 13.6336699}, //
+
6854 {5.92698002, 13.6370497}, //
+
6855 {5.92379999, 13.6405296}, //
+
6856 {5.92045021, 13.6440802}, //
+
6857 {5.9169302, 13.6477299}, //
+
6858 {5.91324997, 13.6514502}, //
+
6859 {5.90957022, 13.6550903}, //
+
6860 {5.90605021, 13.6584797}, //
+
6861 {5.90270996, 13.6616201}, //
+
6862 {5.89952993, 13.6645098}, //
+
6863 {5.89652014, 13.6671495}, //
+
6864 {5.89367008, 13.6695404}, //
+
6865 {5.89099979, 13.6716805}, //
+
6866 {5.8884902, 13.6735601}, //
+
6867 {5.88614988, 13.6752005}, //
+
6868 {5.8853898, 13.67591}, //
+
6869 {5.88464022, 13.6765404}, //
+
6870 {5.88388014, 13.6770897}, //
+
6871 {5.88313007, 13.6775503}, //
+
6872 {5.88237, 13.6779299}, //
+
6873 {5.88161993, 13.6782198}, //
+
6874 {5.88085985, 13.6784296}, //
+
6875 {5.88010979, 13.6785603}, //
+
6876 {5.87935019, 13.6786003}, //
+
6877 {5.87639999, 13.68015}, //
+
6878 {5.87357998, 13.6817904}, //
+
6879 {5.87088013, 13.6835098}, //
+
6880 {5.86829996, 13.6853104}, //
+
6881 {5.86584997, 13.6871901}, //
+
6882 {5.86353016, 13.6891603}, //
+
6883 {5.86133003, 13.6912003}, //
+
6884 {5.85925007, 13.6933403}, //
+
6885 {5.8572998, 13.69555}, //
+
6886 {5.85548019, 13.6977596}, //
+
6887 {5.85378981, 13.6998997}, //
+
6888 {5.85223007, 13.7019396}, //
+
6889 {5.85079002, 13.7039099}, //
+
6890 {5.84947014, 13.7057896}, //
+
6891 {5.84827995, 13.7075901}, //
+
6892 {5.84720993, 13.7093096}, //
+
6893 {5.84627008, 13.7109499}, //
+
6894 {5.84544992, 13.7124996}, //
+
6895 {5.84544992, 13.7159004}, //
+
6896 {5.84405994, 13.7210903}, //
+
6897 {5.84292984, 13.7276201}, //
+
6898 {5.84205008, 13.7354898}, //
+
6899 {5.84142017, 13.7447004}, //
+
6900 {5.84104013, 13.75525}, //
+
6901 {5.84091997, 13.7671404}, //
+
6902 {5.84104013, 13.7803698}, //
+
6903 {5.84142017, 13.79494}, //
+
6904 {5.84205008, 13.8108501}, //
+
6905 {5.84205008, 13.8379498}, //
+
6906 {5.84198999, 13.8393803}, //
+
6907 {5.84180021, 13.8406401}, //
+
6908 {5.84147978, 13.8417301}, //
+
6909 {5.84104013, 13.8426504}, //
+
6910 {5.84047985, 13.8434095}, //
+
6911 {5.83977985, 13.8439903}, //
+
6912 {5.83896017, 13.8444099}, //
+
6913 {5.83801985, 13.8446703}, //
+
6914 {5.83694983, 13.8447504}, //
+
6915 {5.83581018, 13.8447104}, //
+
6916 {5.83462, 13.8445797}, //
+
6917 {5.83339024, 13.8443699}, //
+
6918 {5.83211994, 13.84408}, //
+
6919 {5.83080006, 13.8437004}, //
+
6920 {5.82944012, 13.8432398}, //
+
6921 {5.82804012, 13.8426905}, //
+
6922 {5.82659006, 13.8420601}, //
+
6923 {5.82509995, 13.8413496}, //
+
6924 {5.8235898, 13.83988}, //
+
6925 {5.82208014, 13.8385}, //
+
6926 {5.82056999, 13.8371897}, //
+
6927 {5.81906986, 13.8359804}, //
+
6928 {5.8175602, 13.8348398}, //
+
6929 {5.81606007, 13.8337898}, //
+
6930 {5.81454992, 13.8328304}, //
+
6931 {5.81304979, 13.8319502}, //
+
6932 {5.81155014, 13.8311501}, //
+
6933 {5.80474997, 13.8311501}, //
+
6934 {5.80474997, 13.8345499}, //
+
6935 {5.80634022, 13.8362303}, //
+
6936 {5.80811024, 13.8382397}, //
+
6937 {5.81002998, 13.8405895}, //
+
6938 {5.81212997, 13.8432703}, //
+
6939 {5.81439018, 13.8462896}, //
+
6940 {5.81682014, 13.8496399}, //
+
6941 {5.81940985, 13.8533201}, //
+
6942 {5.82216978, 13.8573503}, //
+
6943 {5.82509995, 13.8617001}, //
+
6944 {5.82712984, 13.8660803}, //
+
6945 {5.82869005, 13.8701601}, //
+
6946 {5.82979012, 13.8739405}, //
+
6947 {5.83044004, 13.8774405}, //
+
6948 {5.83061981, 13.88064}, //
+
6949 {5.83033991, 13.8835402}, //
+
6950 {5.82960987, 13.8861599}, //
+
6951 {5.82841015, 13.8884802}, //
+
6952 {5.8267498, 13.8905001}, //
+
6953 {5.82467985, 13.8923702}, //
+
6954 {5.82223988, 13.8941898}, //
+
6955 {5.81941986, 13.8959703}, //
+
6956 {5.81622982, 13.8977098}, //
+
6957 {5.8126502, 13.8993998}, //
+
6958 {5.8087101, 13.9010601}, //
+
6959 {5.80437994, 13.9026604}, //
+
6960 {5.79968023, 13.9042301}, //
+
6961 {5.79460001, 13.9057503}, //
+
6962 {5.77930021, 13.9108496}, //
+
6963 {5.77826023, 13.9112101}, //
+
6964 {5.77739, 13.91152}, //
+
6965 {5.77667999, 13.9117899}, //
+
6966 {5.77614021, 13.9120302}, //
+
6967 {5.77577019, 13.9122105}, //
+
6968 {5.77556992, 13.9123602}, //
+
6969 {5.77552986, 13.9124699}, //
+
6970 {5.77566004, 13.9125299}, //
+
6971 {5.77594995, 13.91255}, //
+
6972 {5.77764988, 13.91255}, //
+
6973 {5.77912998, 13.91257}, //
+
6974 {5.78057003, 13.9126301}, //
+
6975 {5.78197002, 13.9127398}, //
+
6976 {5.78331995, 13.9128904}, //
+
6977 {5.78463984, 13.9130697}, //
+
6978 {5.78592014, 13.9133101}, //
+
6979 {5.78714991, 13.9135799}, //
+
6980 {5.78835011, 13.9138899}, //
+
6981 {5.78950024, 13.9142504}, //
+
6982 {5.79060984, 13.91465}, //
+
6983 {5.79167986, 13.9150896}, //
+
6984 {5.79270983, 13.9155703}, //
+
6985 {5.7936902, 13.9160995}, //
+
6986 {5.79463005, 13.9166603}, //
+
6987 {5.79551983, 13.9172697}, //
+
6988 {5.79637003, 13.9179201}, //
+
6989 {5.79718018, 13.9186201}, //
+
6990 {5.79794979, 13.9193497}, //
+
6991 {5.79789019, 13.9207897}, //
+
6992 {5.79769993, 13.9221001}, //
+
6993 {5.79737997, 13.9232903}, //
+
6994 {5.79693985, 13.9243498}, //
+
6995 {5.79638004, 13.9252901}, //
+
6996 {5.79568005, 13.9261103}, //
+
6997 {5.79485989, 13.9267998}, //
+
6998 {5.79392004, 13.9273596}, //
+
6999 {5.79285002, 13.9278002}, //
+
7000 {5.79168987, 13.9281397}, //
+
7001 {5.79044008, 13.9283895}, //
+
7002 {5.78910017, 13.9285603}, //
+
7003 {5.78768015, 13.9286404}, //
+
7004 {5.78617001, 13.9286404}, //
+
7005 {5.78458023, 13.9285603}, //
+
7006 {5.78290987, 13.9283895}, //
+
7007 {5.78114986, 13.9281397}, //
+
7008 {5.77930021, 13.9278002}, //
+
7009 {5.77744007, 13.9273195}, //
+
7010 {5.77563, 13.92663}, //
+
7011 {5.77384996, 13.9257298}, //
+
7012 {5.77210999, 13.9246197}, //
+
7013 {5.77042007, 13.9232998}, //
+
7014 {5.76877022, 13.9217796}, //
+
7015 {5.76714993, 13.9200401}, //
+
7016 {5.76558018, 13.9181004}, //
+
7017 {5.76405001, 13.9159498}, //
+
7018 {5.76081991, 13.9127197}, //
+
7019 {5.76065016, 13.91255}, //
+
7020 {5.76065016, 13.9175997}, //
+
7021 {5.76069021, 13.9187298}, //
+
7022 {5.76081991, 13.9198704}, //
+
7023 {5.7610302, 13.9209995}, //
+
7024 {5.76132011, 13.9221296}, //
+
7025 {5.76170015, 13.9232702}, //
+
7026 {5.76215982, 13.9244003}, //
+
7027 {5.76271009, 13.9255304}, //
+
7028 {5.76334, 13.9266701}, //
+
7029 {5.76405001, 13.9278002}, //
+
7030 {5.76476002, 13.9289103}, //
+
7031 {5.76538992, 13.9299803}, //
+
7032 {5.76594019, 13.9310102}, //
+
7033 {5.76639986, 13.9320002}, //
+
7034 {5.7667799, 13.9329395}, //
+
7035 {5.76706982, 13.9338398}, //
+
7036 {5.7672801, 13.9347}, //
+
7037 {5.7674098, 13.9355202}, //
+
7038 {5.76744986, 13.9363003}, //
+
7039 {5.76815987, 13.9370499}, //
+
7040 {5.76878977, 13.9377899}, //
+
7041 {5.76934004, 13.9385405}, //
+
7042 {5.76980019, 13.93929}, //
+
7043 {5.77018023, 13.9400396}, //
+
7044 {5.77047014, 13.9407902}, //
+
7045 {5.77067995, 13.9415398}, //
+
7046 {5.77081013, 13.9422998}, //
+
7047 {5.77085018, 13.9430504}, //
+
7048 {5.77081013, 13.9437799}, //
+
7049 {5.77067995, 13.9444799}, //
+
7050 {5.77047014, 13.9451303}, //
+
7051 {5.77018023, 13.9457397}, //
+
7052 {5.76980019, 13.9462996}, //
+
7053 {5.76934004, 13.9468298}, //
+
7054 {5.76878977, 13.9473104}, //
+
7055 {5.76815987, 13.9477501}, //
+
7056 {5.76744986, 13.9481497}, //
+
7057 {5.7666502, 13.9484901}, //
+
7058 {5.76576996, 13.94874}, //
+
7059 {5.76481009, 13.9489098}, //
+
7060 {5.76376009, 13.9489899}, //
+
7061 {5.76261997, 13.9489899}, //
+
7062 {5.76141024, 13.9489098}, //
+
7063 {5.76009989, 13.94874}, //
+
7064 {5.75871992, 13.9484901}, //
+
7065 {5.75724983, 13.9481497}, //
+
7066 {5.75575018, 13.9477301}, //
+
7067 {5.75425005, 13.9472303}, //
+
7068 {5.75273991, 13.94664}, //
+
7069 {5.75123978, 13.9459696}, //
+
7070 {5.74973011, 13.9452105}, //
+
7071 {5.74822998, 13.9443703}, //
+
7072 {5.74671984, 13.94345}, //
+
7073 {5.74521017, 13.94244}, //
+
7074 {5.74370003, 13.94135}, //
+
7075 {5.74223995, 13.9402103}, //
+
7076 {5.74087, 13.9390202}, //
+
7077 {5.73957014, 13.9377899}, //
+
7078 {5.73835993, 13.9365196}, //
+
7079 {5.73722982, 13.9351997}, //
+
7080 {5.73618984, 13.9338398}, //
+
7081 {5.73522997, 13.9324398}, //
+
7082 {5.7343502, 13.9309902}, //
+
7083 {5.73355007, 13.9294996}, //
+
7084 {5.73203993, 13.9266996}, //
+
7085 {5.73052979, 13.9243097}, //
+
7086 {5.72902012, 13.9223404}, //
+
7087 {5.72750998, 13.9207897}, //
+
7088 {5.72598982, 13.9196596}, //
+
7089 {5.72448015, 13.9189396}, //
+
7090 {5.72297001, 13.9186497}, //
+
7091 {5.72145987, 13.9187603}, //
+
7092 {5.7199502, 13.9193001}, //
+
7093 {5.71836996, 13.9202204}, //
+
7094 {5.71660995, 13.9214802}, //
+
7095 {5.71469021, 13.92307}, //
+
7096 {5.71260977, 13.9250002}, //
+
7097 {5.71035004, 13.9272604}, //
+
7098 {5.70793009, 13.9298601}, //
+
7099 {5.70533991, 13.9327898}, //
+
7100 {5.70257998, 13.9360504}, //
+
7101 {5.69964981, 13.9396496}, //
+
7102 {5.69609022, 13.9447603}, //
+
7103 {5.69294977, 13.9495296}, //
+
7104 {5.69022989, 13.95397}, //
+
7105 {5.68793011, 13.9580698}, //
+
7106 {5.68604994, 13.9618397}, //
+
7107 {5.68457985, 13.96527}, //
+
7108 {5.68353987, 13.9683704}, //
+
7109 {5.68290997, 13.9711304}, //
+
7110 {5.68270016, 13.9735498}, //
+
7111 {5.68282986, 13.9759398}, //
+
7112 {5.68319988, 13.9785805}, //
+
7113 {5.68382978, 13.9814796}, //
+
7114 {5.68470001, 13.9846201}, //
+
7115 {5.68583012, 13.9880199}, //
+
7116 {5.68721008, 13.9916601}, //
+
7117 {5.68883991, 13.9955597}, //
+
7118 {5.69072008, 13.9996996}, //
+
7119 {5.69285011, 14.0040998}, //
+
7120 {5.69493008, 14.0070295}, //
+
7121 {5.69663, 14.0097904}, //
+
7122 {5.69794989, 14.0123796}, //
+
7123 {5.69889021, 14.0148001}, //
+
7124 {5.69946003, 14.0170603}, //
+
7125 {5.69964981, 14.0191402}, //
+
7126 {5.69946003, 14.02106}, //
+
7127 {5.69889021, 14.0228205}, //
+
7128 {5.69794989, 14.0243998}, //
+
7129 {5.69675016, 14.0258303}, //
+
7130 {5.6954298, 14.0270901}, //
+
7131 {5.69398022, 14.0281801}, //
+
7132 {5.69240999, 14.0291004}, //
+
7133 {5.69071007, 14.0298595}, //
+
7134 {5.68887997, 14.0304403}, //
+
7135 {5.68693018, 14.0308599}, //
+
7136 {5.68485022, 14.0311203}, //
+
7137 {5.68265009, 14.0312004}, //
+
7138 {5.68048, 14.0311203}, //
+
7139 {5.67847013, 14.0308704}, //
+
7140 {5.67664003, 14.0304499}, //
+
7141 {5.67497015, 14.02987}, //
+
7142 {5.67347002, 14.0291204}, //
+
7143 {5.67214012, 14.0282001}, //
+
7144 {5.67096996, 14.0271196}, //
+
7145 {5.66998005, 14.0258703}, //
+
7146 {5.66914988, 14.0244503}, //
+
7147 {5.6668601, 14.0229797}, //
+
7148 {5.6645298, 14.0215998}, //
+
7149 {5.66215992, 14.0202904}, //
+
7150 {5.65974998, 14.0190802}, //
+
7151 {5.65728998, 14.0179396}, //
+
7152 {5.65478992, 14.0168896}, //
+
7153 {5.65224981, 14.0159302}, //
+
7154 {5.64967012, 14.0150499}, //
+
7155 {5.6470499, 14.0142498}, //
+
7156 {5.64444017, 14.01367}, //
+
7157 {5.64187002, 14.0134296}, //
+
7158 {5.63933992, 14.0135202}, //
+
7159 {5.63684988, 14.0139399}, //
+
7160 {5.6344099, 14.0146904}, //
+
7161 {5.63200998, 14.0157804}, //
+
7162 {5.62965012, 14.01721}, //
+
7163 {5.62732983, 14.01896}, //
+
7164 {5.62505007, 14.0210505}, //
+
7165 {5.62355995, 14.02244}, //
+
7166 {5.62210989, 14.0235701}, //
+
7167 {5.6207099, 14.0244503}, //
+
7168 {5.61933994, 14.0250797}, //
+
7169 {5.61802006, 14.0254602}, //
+
7170 {5.61674023, 14.0255804}, //
+
7171 {5.61549997, 14.0254602}, //
+
7172 {5.61429977, 14.0250797}, //
+
7173 {5.61315012, 14.0244503}, //
+
7174 {5.61205006, 14.0236502}, //
+
7175 {5.61099005, 14.0227699}, //
+
7176 {5.60997009, 14.0218096}, //
+
7177 {5.60899019, 14.0207596}, //
+
7178 {5.60804987, 14.0196199}, //
+
7179 {5.60715008, 14.0184097}, //
+
7180 {5.60628986, 14.0171003}, //
+
7181 {5.60548019, 14.0157204}, //
+
7182 {5.60470009, 14.0142498}, //
+
7183 {5.60389996, 14.0127897}, //
+
7184 {5.60302019, 14.0114202}, //
+
7185 {5.60205984, 14.0101204}, //
+
7186 {5.60101986, 14.0089102}, //
+
7187 {5.59989023, 14.0077801}, //
+
7188 {5.59868002, 14.0067396}, //
+
7189 {5.59738016, 14.0057802}, //
+
7190 {5.59601021, 14.0049}, //
+
7191 {5.59455013, 14.0040998}, //
+
7192 {5.5931201, 14.0034904}, //
+
7193 {5.59185982, 14.00317}, //
+
7194 {5.59097004, 14.00315}, //
+
7195 {5.59089994, 14.0023003}, //
+
7196 {5.59057999, 14.0003204}, //
+
7197 {5.59013987, 13.9987698}, //
+
7198 {5.58958006, 13.9976397}, //
+
7199 {5.58888006, 13.9969196}, //
+
7200 {5.5880599, 13.9966297}, //
+
7201 {5.58712006, 13.9967499}, //
+
7202 {5.58605003, 13.9973001}, //
+
7203 {5.5848999, 13.9981604}, //
+
7204 {5.58370018, 13.9992304}, //
+
7205 {5.58245993, 14.0005102}, //
+
7206 {5.5811801, 14.0019903}, //
+
7207 {5.57986021, 14.0036898}, //
+
7208 {5.57848978, 14.0055904}, //
+
7209 {5.57708979, 14.0077}, //
+
7210 {5.5756402, 14.0100203}, //
+
7211 {5.57415009, 14.0125504}, //
+
7212 {5.57269001, 14.0151701}, //
+
7213 {5.57132006, 14.0177498}, //
+
7214 {5.5700202, 14.0202904}, //
+
7215 {5.56880999, 14.0227804}, //
+
7216 {5.56767988, 14.0252304}, //
+
7217 {5.5666399, 14.0276403}, //
+
7218 {5.56568003, 14.0299997}, //
+
7219 {5.56479979, 14.03232}, //
+
7220 {5.56400013, 14.0346003}, //
+
7221 {5.56323004, 14.0373802}, //
+
7222 {5.56241989, 14.0396996}, //
+
7223 {5.56157017, 14.0415602}, //
+
7224 {5.56067991, 14.0429602}, //
+
7225 {5.55974007, 14.0438995}, //
+
7226 {5.55876017, 14.0443802}, //
+
7227 {5.5577302, 14.0444002}, //
+
7228 {5.55666018, 14.0439501}, //
+
7229 {5.5555501, 14.0430498}, //
+
7230 {5.5543499, 14.0419102}, //
+
7231 {5.55303001, 14.04072}, //
+
7232 {5.55158997, 14.0394897}, //
+
7233 {5.55002022, 14.0382204}, //
+
7234 {5.54831982, 14.0368996}, //
+
7235 {5.54651022, 14.0355396}, //
+
7236 {5.54455996, 14.0341396}, //
+
7237 {5.54249001, 14.03269}, //
+
7238 {5.54029989, 14.0312004}, //
+
7239 {5.5370698, 14.0281897}, //
+
7240 {5.53342009, 14.0251799}, //
+
7241 {5.52935982, 14.0221701}, //
+
7242 {5.52486992, 14.0191603}, //
+
7243 {5.51996994, 14.01614}, //
+
7244 {5.51465988, 14.0131302}, //
+
7245 {5.50892019, 14.0101204}, //
+
7246 {5.50276995, 14.0071096}, //
+
7247 {5.49620008, 14.0040998}, //
+
7248 {5.48808002, 13.99786}, //
+
7249 {5.48028994, 13.9912004}, //
+
7250 {5.47283983, 13.9841204}, //
+
7251 {5.46572018, 13.9766302}, //
+
7252 {5.45894003, 13.9687204}, //
+
7253 {5.45248985, 13.9603901}, //
+
7254 {5.44637012, 13.9516401}, //
+
7255 {5.44059992, 13.9424801}, //
+
7256 {5.43515015, 13.9329004}, //
+
7257 {5.43280983, 13.92838}, //
+
7258 {5.43030024, 13.9238596}, //
+
7259 {5.42762995, 13.9193296}, //
+
7260 {5.42477989, 13.9148102}, //
+
7261 {5.4217701, 13.9102898}, //
+
7262 {5.41859007, 13.9057703}, //
+
7263 {5.41524982, 13.9012403}, //
+
7264 {5.41172981, 13.8967199}, //
+
7265 {5.40805006, 13.8922005}, //
+
7266 {5.40507984, 13.88906}, //
+
7267 {5.40219021, 13.8856697}, //
+
7268 {5.39939022, 13.8820295}, //
+
7269 {5.39666986, 13.8781404}, //
+
7270 {5.39403009, 13.8739996}, //
+
7271 {5.39146996, 13.8696003}, //
+
7272 {5.38899994, 13.8649502}, //
+
7273 {5.38661003, 13.8600502}, //
+
7274 {5.38430023, 13.8549004}, //
+
7275 {5.38211012, 13.8497105}, //
+
7276 {5.38004017, 13.8446798}, //
+
7277 {5.3780899, 13.8398199}, //
+
7278 {5.37627983, 13.8351297}, //
+
7279 {5.37457991, 13.8306103}, //
+
7280 {5.37301016, 13.8262596}, //
+
7281 {5.37157011, 13.8220701}, //
+
7282 {5.37025023, 13.8180504}, //
+
7283 {5.36905003, 13.8142004}, //
+
7284 {5.36452007, 13.7991304}, //
+
7285 {5.36420012, 13.79809}, //
+
7286 {5.36400986, 13.7974596}, //
+
7287 {5.36394978, 13.7972498}, //
+
7288 {5.22154999, 13.9498501}, //
+
7289 {5.22230005, 13.9506903}, //
+
7290 {5.22455978, 13.9532003}, //
+
7291 {5.22626019, 13.95508}, //
+
7292 {5.23078012, 13.9601002}, //
+
7293 {5.23360014, 13.9632397}, //
+
7294 {5.23680019, 13.9667997}, //
+
7295 {5.24026012, 13.9706097}, //
+
7296 {5.24385023, 13.9744997}, //
+
7297 {5.24756002, 13.9784803}, //
+
7298 {5.25138998, 13.9825401}, //
+
7299 {5.2553401, 13.98668}, //
+
7300 {5.25941992, 13.9909096}, //
+
7301 {5.2636199, 13.9952202}, //
+
7302 {5.26795006, 13.9996204}, //
+
7303 {5.2723999, 14.0040998}, //
+
7304 {5.27686024, 14.0086403}, //
+
7305 {5.28118992, 14.0132303}, //
+
7306 {5.28539991, 14.0178499}, //
+
7307 {5.28948021, 14.0225096}, //
+
7308 {5.29343987, 14.0272198}, //
+
7309 {5.29726982, 14.03197}, //
+
7310 {5.30097008, 14.0367498}, //
+
7311 {5.30455017, 14.0415802}, //
+
7312 {5.30800009, 14.0464497}, //
+
7313 {5.31128979, 14.0511599}, //
+
7314 {5.31438017, 14.0555}, //
+
7315 {5.31724977, 14.0594597}, //
+
7316 {5.31991005, 14.0630398}, //
+
7317 {5.32236004, 14.0662403}, //
+
7318 {5.32460022, 14.0690699}, //
+
7319 {5.32663012, 14.0715199}, //
+
7320 {5.32844019, 14.0735998}, //
+
7321 {5.33004999, 14.0753002}, //
+
7322 {5.33158016, 14.0786505}, //
+
7323 {5.33314991, 14.0826597}, //
+
7324 {5.3347702, 14.0873499}, //
+
7325 {5.33642006, 14.0927095}, //
+
7326 {5.33810997, 14.0987396}, //
+
7327 {5.33984995, 14.1054296}, //
+
7328 {5.34162998, 14.1127996}, //
+
7329 {5.34344006, 14.1208401}, //
+
7330 {5.3453002, 14.12955}, //
+
7331 {5.34712982, 14.1385698}, //
+
7332 {5.34883022, 14.1475496}, //
+
7333 {5.35039997, 14.1564903}, //
+
7334 {5.35185003, 14.1653795}, //
+
7335 {5.35316992, 14.1742296}, //
+
7336 {5.35437012, 14.1830397}, //
+
7337 {5.35544014, 14.1918001}, //
+
7338 {5.35637999, 14.2005196}, //
+
7339 {5.35720015, 14.2091999}, //
+
7340 {5.35795021, 14.2175503}, //
+
7341 {5.35870981, 14.2252798}, //
+
7342 {5.35945988, 14.2323799}, //
+
7343 {5.36020994, 14.2388496}, //
+
7344 {5.36096001, 14.2446899}, //
+
7345 {5.36171007, 14.2499104}, //
+
7346 {5.36246014, 14.2545004}, //
+
7347 {5.36320019, 14.25846}, //
+
7348 {5.36394978, 14.2617998}, //
+
7349 {5.36394978, 14.2584}, //
+
7350 {5.3639698, 14.25737}, //
+
7351 {5.36402988, 14.2558002}, //
+
7352 {5.36414003, 14.2536802}, //
+
7353 {5.36429024, 14.2510204}, //
+
7354 {5.36447001, 14.2478199}, //
+
7355 {5.36470985, 14.2440701}, //
+
7356 {5.36498022, 14.2397699}, //
+
7357 {5.36529016, 14.23493}, //
+
7358 {5.36565018, 14.2295504}, //
+
7359 {5.36601019, 14.2238398}, //
+
7360 {5.36632013, 14.2180099}, //
+
7361 {5.36659002, 14.2120399}, //
+
7362 {5.36682987, 14.2059498}, //
+
7363 {5.36701012, 14.1997404}, //
+
7364 {5.36715984, 14.1933899}, //
+
7365 {5.36726999, 14.1869202}, //
+
7366 {5.36733007, 14.1803303}, //
+
7367 {5.3673501, 14.1736002}, //
+
7368 {5.3673501, 14.1160002}, //
+
7369 {5.36737013, 14.1131697}, //
+
7370 {5.36743021, 14.1107101}, //
+
7371 {5.36753988, 14.1086302}, //
+
7372 {5.36769009, 14.1069298}, //
+
7373 {5.36786985, 14.1056099}, //
+
7374 {5.36811018, 14.1046696}, //
+
7375 {5.36838007, 14.1041002}, //
+
7376 {5.36869001, 14.1039104}, //
+
7377 {5.36905003, 14.1041002}, //
+
7378 {5.36943007, 14.1046495}, //
+
7379 {5.3698101, 14.1055202}, //
+
7380 {5.37018013, 14.10674}, //
+
7381 {5.37056017, 14.1082897}, //
+
7382 {5.37094021, 14.1101704}, //
+
7383 {5.37131977, 14.1123896}, //
+
7384 {5.3716898, 14.1149397}, //
+
7385 {5.37206984, 14.1178303}, //
+
7386 {5.37244987, 14.1210499}, //
+
7387 {5.37284994, 14.1244297}, //
+
7388 {5.37329006, 14.1277599}, //
+
7389 {5.37377024, 14.1310596}, //
+
7390 {5.3743, 14.1343002}, //
+
7391 {5.37485981, 14.1375103}, //
+
7392 {5.37547016, 14.1406698}, //
+
7393 {5.37612009, 14.1437902}, //
+
7394 {5.37682009, 14.1468697}, //
+
7395 {5.37755013, 14.1499004}, //
+
7396 {5.37827015, 14.1528502}, //
+
7397 {5.37896013, 14.1556702}, //
+
7398 {5.37960005, 14.15837}, //
+
7399 {5.38019991, 14.1609402}, //
+
7400 {5.38076019, 14.1633797}, //
+
7401 {5.38127995, 14.1657}, //
+
7402 {5.38176012, 14.1678896}, //
+
7403 {5.38219976, 14.16996}, //
+
7404 {5.38259983, 14.1718998}, //
+
7405 {5.38295984, 14.1737299}, //
+
7406 {5.38326979, 14.1754303}, //
+
7407 {5.38354015, 14.177}, //
+
7408 {5.38378, 14.1784496}, //
+
7409 {5.38395977, 14.1797705}, //
+
7410 {5.38410997, 14.1809702}, //
+
7411 {5.38422012, 14.1820402}, //
+
7412 {5.3842802, 14.1829796}, //
+
7413 {5.38430023, 14.1837997}, //
+
7414 {5.38430023, 14.1752996}, //
+
7415 {5.38426018, 14.1725597}, //
+
7416 {5.38413, 14.16961}, //
+
7417 {5.38392019, 14.16646}, //
+
7418 {5.3836298, 14.1630898}, //
+
7419 {5.38325024, 14.1595097}, //
+
7420 {5.38279009, 14.1557198}, //
+
7421 {5.38223982, 14.15172}, //
+
7422 {5.38160992, 14.1475201}, //
+
7423 {5.38089991, 14.1430998}, //
+
7424 {5.38087988, 14.1400499}, //
+
7425 {5.3808198, 14.1369104}, //
+
7426 {5.38071012, 14.1336899}, //
+
7427 {5.38055992, 14.1303797}, //
+
7428 {5.38038015, 14.1269999}, //
+
7429 {5.38013983, 14.1235199}, //
+
7430 {5.37986994, 14.1199703}, //
+
7431 {5.37955999, 14.1163197}, //
+
7432 {5.37919998, 14.1126003}, //
+
7433 {5.37884998, 14.1089201}, //
+
7434 {5.37855005, 14.1054001}, //
+
7435 {5.37828016, 14.1020498}, //
+
7436 {5.37805986, 14.0988703}, //
+
7437 {5.3778801, 14.09585}, //
+
7438 {5.37772989, 14.0930004}, //
+
7439 {5.37763023, 14.0903196}, //
+
7440 {5.37757015, 14.0878}, //
+
7441 {5.37755013, 14.0854502}, //
+
7442 {5.37763023, 14.0833998}, //
+
7443 {5.3778801, 14.0817699}, //
+
7444 {5.37830019, 14.0805597}, //
+
7445 {5.37888002, 14.0797701}, //
+
7446 {5.37963009, 14.0793896}, //
+
7447 {5.38054991, 14.0794296}, //
+
7448 {5.38162994, 14.0798798}, //
+
7449 {5.38288021, 14.08076}, //
+
7450 {5.38430023, 14.0820503}, //
+
7451 {5.38582993, 14.0836401}, //
+
7452 {5.38740015, 14.0854101}, //
+
7453 {5.38901997, 14.0873299}, //
+
7454 {5.39066982, 14.0894299}, //
+
7455 {5.39236021, 14.0916901}, //
+
7456 {5.39410019, 14.09412}, //
+
7457 {5.39588022, 14.0967102}, //
+
7458 {5.39768982, 14.0994701}, //
+
7459 {5.39954996, 14.1023998}, //
+
7460 {5.40140009, 14.1055002}, //
+
7461 {5.4031601, 14.1087799}, //
+
7462 {5.40482998, 14.1122103}, //
+
7463 {5.40642023, 14.1158104}, //
+
7464 {5.4079299, 14.1195803}, //
+
7465 {5.40934992, 14.1235104}, //
+
7466 {5.41068983, 14.1276102}, //
+
7467 {5.4119401, 14.1318703}, //
+
7468 {5.41309977, 14.1363001}, //
+
7469 {5.41416979, 14.1407804}, //
+
7470 {5.41511011, 14.1451797}, //
+
7471 {5.41592979, 14.1494904}, //
+
7472 {5.41662979, 14.1537304}, //
+
7473 {5.41719007, 14.1578798}, //
+
7474 {5.4176302, 14.1619396}, //
+
7475 {5.41795015, 14.1659298}, //
+
7476 {5.41813993, 14.1698303}, //
+
7477 {5.41820002, 14.1736498}, //
+
7478 {5.41896009, 14.1764097}, //
+
7479 {5.41971016, 14.1786699}, //
+
7480 {5.42047024, 14.1804199}, //
+
7481 {5.42121983, 14.1816702}, //
+
7482 {5.4219799, 14.1824198}, //
+
7483 {5.42272997, 14.1826696}, //
+
7484 {5.42349005, 14.1824198}, //
+
7485 {5.42424011, 14.1816597}, //
+
7486 {5.42500019, 14.1803999}, //
+
7487 {5.42574978, 14.17873}, //
+
7488 {5.42650986, 14.1767302}, //
+
7489 {5.42725992, 14.1743898}, //
+
7490 {5.42800999, 14.17171}, //
+
7491 {5.42876005, 14.1687002}, //
+
7492 {5.42951012, 14.1653605}, //
+
7493 {5.43026018, 14.1616697}, //
+
7494 {5.43100023, 14.15765}, //
+
7495 {5.43174982, 14.1533003}, //
+
7496 {5.43245983, 14.1487398}, //
+
7497 {5.43309021, 14.1440897}, //
+
7498 {5.43364, 14.1393604}, //
+
7499 {5.43410015, 14.1345396}, //
+
7500 {5.43448019, 14.1296396}, //
+
7501 {5.43477011, 14.1246595}, //
+
7502 {5.43497992, 14.1195898}, //
+
7503 {5.43511009, 14.11444}, //
+
7504 {5.43515015, 14.1091995}, //
+
7505 {5.43511009, 14.10396}, //
+
7506 {5.43497992, 14.0988102}, //
+
7507 {5.43478012, 14.09375}, //
+
7508 {5.4344902, 14.0887699}, //
+
7509 {5.43412018, 14.0838804}, //
+
7510 {5.43366003, 14.0790701}, //
+
7511 {5.43311977, 14.0743399}, //
+
7512 {5.43249989, 14.0697002}, //
+
7513 {5.43179989, 14.0651503}, //
+
7514 {5.43112993, 14.0615997}, //
+
7515 {5.43062019, 14.0585203}, //
+
7516 {5.43028021, 14.0558901}, //
+
7517 {5.43010998, 14.05373}, //
+
7518 {5.43010998, 14.0520296}, //
+
7519 {5.4302702, 14.0507898}, //
+
7520 {5.43059015, 14.0500202}, //
+
7521 {5.43108988, 14.0496998}, //
+
7522 {5.43174982, 14.0498505}, //
+
7523 {5.43259001, 14.0503302}, //
+
7524 {5.43358994, 14.0510197}, //
+
7525 {5.43477011, 14.0519199}, //
+
7526 {5.43611002, 14.05303}, //
+
7527 {5.43761015, 14.0543499}, //
+
7528 {5.43928003, 14.0558701}, //
+
7529 {5.44112015, 14.0576096}, //
+
7530 {5.44313002, 14.0595503}, //
+
7531 {5.4453001, 14.0616999}, //
+
7532 {5.44751978, 14.0640497}, //
+
7533 {5.44966984, 14.0665703}, //
+
7534 {5.45172024, 14.0692501}, //
+
7535 {5.45370007, 14.0720997}, //
+
7536 {5.45558023, 14.07512}, //
+
7537 {5.45738983, 14.0783005}, //
+
7538 {5.45910978, 14.0816498}, //
+
7539 {5.4607501, 14.0851698}, //
+
7540 {5.46229982, 14.08885}, //
+
7541 {5.46380997, 14.0925798}, //
+
7542 {5.46532011, 14.09622}, //
+
7543 {5.46682978, 14.0997801}, //
+
7544 {5.46832991, 14.1032495}, //
+
7545 {5.46984005, 14.1066504}, //
+
7546 {5.47134018, 14.1099596}, //
+
7547 {5.47284985, 14.1131897}, //
+
7548 {5.47434998, 14.1163397}, //
+
7549 {5.47585011, 14.1194}, //
+
7550 {5.47728014, 14.1229401}, //
+
7551 {5.47853994, 14.1260099}, //
+
7552 {5.47962999, 14.1286297}, //
+
7553 {5.48054981, 14.1307802}, //
+
7554 {5.48130989, 14.1324797}, //
+
7555 {5.4818902, 14.1337099}, //
+
7556 {5.48230982, 14.1344805}, //
+
7557 {5.48257017, 14.1348}, //
+
7558 {5.4826498, 14.1346502}, //
+
7559 {5.48262978, 14.1341295}, //
+
7560 {5.48257017, 14.1333103}, //
+
7561 {5.48246002, 14.1321898}, //
+
7562 {5.48230982, 14.1307898}, //
+
7563 {5.48213005, 14.1290903}, //
+
7564 {5.4818902, 14.1270905}, //
+
7565 {5.48161983, 14.1248102}, //
+
7566 {5.48130989, 14.1222296}, //
+
7567 {5.48094988, 14.1193504}, //
+
7568 {5.48054981, 14.1162996}, //
+
7569 {5.48011017, 14.1131601}, //
+
7570 {5.47962999, 14.1099396}, //
+
7571 {5.47910023, 14.1066303}, //
+
7572 {5.47853994, 14.1032495}, //
+
7573 {5.47793007, 14.0997696}, //
+
7574 {5.47728014, 14.09622}, //
+
7575 {5.47658014, 14.0925703}, //
+
7576 {5.47585011, 14.08885}, //
+
7577 {5.47504997, 14.0851297}, //
+
7578 {5.47417021, 14.08148}, //
+
7579 {5.47320986, 14.0779305}, //
+
7580 {5.47216988, 14.0744495}, //
+
7581 {5.47103977, 14.0710697}, //
+
7582 {5.46983004, 14.0677605}, //
+
7583 {5.46853018, 14.0645399}, //
+
7584 {5.46716022, 14.0614004}, //
+
7585 {5.46570015, 14.0583496}, //
+
7586 {5.46431017, 14.0562296}, //
+
7587 {5.46318007, 14.0544004}, //
+
7588 {5.46229982, 14.0528698}, //
+
7589 {5.46166992, 14.05163}, //
+
7590 {5.46128988, 14.0506897}, //
+
7591 {5.4611702, 14.0500402}, //
+
7592 {5.46128988, 14.0496798}, //
+
7593 {5.46166992, 14.0496197}, //
+
7594 {5.46229982, 14.0498505}, //
+
7595 {5.46311998, 14.0503302}, //
+
7596 {5.46405983, 14.0510197}, //
+
7597 {5.46512985, 14.0519199}, //
+
7598 {5.46632004, 14.05303}, //
+
7599 {5.46763992, 14.0543499}, //
+
7600 {5.46907997, 14.0558701}, //
+
7601 {5.47064018, 14.0576096}, //
+
7602 {5.47233009, 14.0595503}, //
+
7603 {5.47415018, 14.0616999}, //
+
7604 {5.47605991, 14.0640497}, //
+
7605 {5.47801018, 14.0665703}, //
+
7606 {5.48000002, 14.0692501}, //
+
7607 {5.48202991, 14.0720997}, //
+
7608 {5.48409986, 14.07512}, //
+
7609 {5.48621988, 14.0783005}, //
+
7610 {5.48836994, 14.0816498}, //
+
7611 {5.49056005, 14.0851698}, //
+
7612 {5.49280024, 14.08885}, //
+
7613 {5.49511003, 14.0925798}, //
+
7614 {5.49749994, 14.09622}, //
+
7615 {5.49996996, 14.0997801}, //
+
7616 {5.5025301, 14.1032495}, //
+
7617 {5.50516987, 14.1066504}, //
+
7618 {5.50789022, 14.1099596}, //
+
7619 {5.51069021, 14.1131897}, //
+
7620 {5.51357985, 14.1163397}, //
+
7621 {5.51655006, 14.1194}, //
+
7622 {5.51948023, 14.1236401}, //
+
7623 {5.52224016, 14.1273403}, //
+
7624 {5.52482986, 14.1304903}, //
+
7625 {5.52724981, 14.1330996}, //
+
7626 {5.52951002, 14.13517}, //
+
7627 {5.53158998, 14.1366901}, //
+
7628 {5.53351021, 14.1376696}, //
+
7629 {5.53527021, 14.1381102}, //
+
7630 {5.53684998, 14.1379995}, //
+
7631 {5.53823996, 14.1374598}, //
+
7632 {5.53937006, 14.13659}, //
+
7633 {5.54024982, 14.1353798}, //
+
7634 {5.5408802, 14.1338396}, //
+
7635 {5.54125977, 14.1319504}, //
+
7636 {5.54137993, 14.1297302}, //
+
7637 {5.54125977, 14.1271801}, //
+
7638 {5.5408802, 14.12428}, //
+
7639 {5.54024982, 14.1210499}, //
+
7640 {5.53942013, 14.1176395}, //
+
7641 {5.5384202, 14.1141901}, //
+
7642 {5.53726006, 14.1106901}, //
+
7643 {5.53592014, 14.1071596}, //
+
7644 {5.53441, 14.1035805}, //
+
7645 {5.53274012, 14.0999603}, //
+
7646 {5.5309, 14.0963001}, //
+
7647 {5.52888012, 14.0925999}, //
+
7648 {5.52670002, 14.08885}, //
+
7649 {5.52388, 14.08531}, //
+
7650 {5.52143002, 14.0822401}, //
+
7651 {5.51936007, 14.0796204}, //
+
7652 {5.51767015, 14.0774698}, //
+
7653 {5.51634979, 14.0757704}, //
+
7654 {5.51540995, 14.0745401}, //
+
7655 {5.51485014, 14.0737696}, //
+
7656 {5.51465988, 14.0734501}, //
+
7657 {5.51485014, 14.0735998}, //
+
7658 {5.51532984, 14.0740995}, //
+
7659 {5.51601982, 14.0748596}, //
+
7660 {5.51692009, 14.07586}, //
+
7661 {5.51803017, 14.0771198}, //
+
7662 {5.51935005, 14.07862}, //
+
7663 {5.52087021, 14.0803804}, //
+
7664 {5.52261019, 14.0823803}, //
+
7665 {5.52454996, 14.0846395}, //
+
7666 {5.52670002, 14.0871496}, //
+
7667 {5.52892017, 14.0898104}, //
+
7668 {5.53106022, 14.0925198}, //
+
7669 {5.53312016, 14.0952702}, //
+
7670 {5.53508997, 14.0980501}, //
+
7671 {5.53697014, 14.1008797}, //
+
7672 {5.5387702, 14.1037502}, //
+
7673 {5.54048014, 14.1066599}, //
+
7674 {5.54210997, 14.1096096}, //
+
7675 {5.54365015, 14.1126003}, //
+
7676 {5.54582977, 14.1168499}, //
+
7677 {5.54785013, 14.1205597}, //
+
7678 {5.54968977, 14.1237202}, //
+
7679 {5.55137014, 14.1263304}, //
+
7680 {5.55287981, 14.1284103}, //
+
7681 {5.55423021, 14.1299295}, //
+
7682 {5.55539989, 14.1309204}, //
+
7683 {5.55640984, 14.1313601}, //
+
7684 {5.55725002, 14.1312504}, //
+
7685 {5.55796003, 14.1307497}, //
+
7686 {5.55858994, 14.1299896}, //
+
7687 {5.55914021, 14.1289797}, //
+
7688 {5.55959988, 14.1277199}, //
+
7689 {5.55997992, 14.1262102}, //
+
7690 {5.56026983, 14.1244497}, //
+
7691 {5.56048012, 14.1224403}, //
+
7692 {5.56060982, 14.1201696}, //
+
7693 {5.56064987, 14.11765}, //
+
7694 {5.56060982, 14.1150398}, //
+
7695 {5.56048012, 14.1124697}, //
+
7696 {5.56026983, 14.1099396}, //
+
7697 {5.55997992, 14.1074495}, //
+
7698 {5.55959988, 14.10501}, //
+
7699 {5.55914021, 14.1026096}, //
+
7700 {5.55858994, 14.1002502}, //
+
7701 {5.55796003, 14.09793}, //
+
7702 {5.55725002, 14.0956497}, //
+
7703 {5.55658007, 14.0935297}, //
+
7704 {5.55606985, 14.0916996}, //
+
7705 {5.55573988, 14.0901699}, //
+
7706 {5.55557013, 14.0889301}, //
+
7707 {5.55557013, 14.0879898}, //
+
7708 {5.55573988, 14.0873404}, //
+
7709 {5.55606985, 14.0869799}, //
+
7710 {5.55658007, 14.0869198}, //
+
7711 {5.55725002, 14.0871496}, //
+
7712 {5.55803013, 14.0875902}, //
+
7713 {5.5588398, 14.08815}, //
+
7714 {5.55970001, 14.0888395}, //
+
7715 {5.5605998, 14.0896597}, //
+
7716 {5.56154013, 14.0906}, //
+
7717 {5.56252003, 14.0916595}, //
+
7718 {5.56353998, 14.0928497}, //
+
7719 {5.56459999, 14.0941601}, //
+
7720 {5.56570005, 14.0956001}, //
+
7721 {5.56685019, 14.0971098}, //
+
7722 {5.56804991, 14.0986204}, //
+
7723 {5.56929016, 14.1001301}, //
+
7724 {5.57056999, 14.1016397}, //
+
7725 {5.57188988, 14.1031599}, //
+
7726 {5.57325983, 14.1046696}, //
+
7727 {5.57465982, 14.1061802}, //
+
7728 {5.57610989, 14.1076899}, //
+
7729 {5.5776, 14.1091995}, //
+
7730 {5.5782299, 14.1103296}, //
+
7731 {5.5781498, 14.1103497}, //
+
7732 {5.57702017, 14.1105404}, //
+
7733 {5.57589006, 14.1105204}, //
+
7734 {5.57475996, 14.1102896}, //
+
7735 {5.57362986, 14.1098499}, //
+
7736 {5.57250023, 14.1091995}, //
+
7737 {5.57139015, 14.1084404}, //
+
7738 {5.57032013, 14.1076899}, //
+
7739 {5.56929016, 14.1069298}, //
+
7740 {5.56829977, 14.1061802}, //
+
7741 {5.56735992, 14.1054201}, //
+
7742 {5.56646013, 14.1046696}, //
+
7743 {5.56559992, 14.1039104}, //
+
7744 {5.56478024, 14.1031599}, //
+
7745 {5.56400013, 14.1023998}, //
+
7746 {5.56064987, 14.0990496}, //
+
7747 {5.56064987, 14.1091995}, //
+
7748 {5.56134987, 14.1099596}, //
+
7749 {5.56197023, 14.1107101}, //
+
7750 {5.56251001, 14.1114702}, //
+
7751 {5.56297016, 14.1122198}, //
+
7752 {5.56334019, 14.1129799}, //
+
7753 {5.5636301, 14.1137304}, //
+
7754 {5.5638299, 14.1144896}, //
+
7755 {5.56396008, 14.1152401}, //
+
7756 {5.56400013, 14.1160002}, //
+
7757 {5.5639801, 14.1167803}, //
+
7758 {5.56392002, 14.11759}, //
+
7759 {5.56380987, 14.1184502}, //
+
7760 {5.56366014, 14.1193504}, //
+
7761 {5.5634799, 14.1202898}, //
+
7762 {5.56324005, 14.1212702}, //
+
7763 {5.56297016, 14.1222897}, //
+
7764 {5.56266022, 14.1233501}, //
+
7765 {5.56230021, 14.1244497}, //
+
7766 {5.56189013, 14.1255598}, //
+
7767 {5.56139994, 14.1266298}, //
+
7768 {5.5608201, 14.1276598}, //
+
7769 {5.56015015, 14.1286497}, //
+
7770 {5.55940008, 14.12959}, //
+
7771 {5.55856991, 14.1304903}, //
+
7772 {5.55765009, 14.1313496}, //
+
7773 {5.55664015, 14.1321697}, //
+
7774 {5.5555501, 14.1329498}, //
+
7775 {5.55444002, 14.1335802}, //
+
7776 {5.55337, 14.1339598}, //
+
7777 {5.55234003, 14.1340799}, //
+
7778 {5.55135012, 14.1339598}, //
+
7779 {5.55040979, 14.1335802}, //
+
7780 {5.54951, 14.1329498}, //
+
7781 {5.54864979, 14.1320696}, //
+
7782 {5.5478301, 14.1309404}, //
+
7783 {5.54705, 14.12955}, //
+
7784 {5.54633999, 14.12819}, //
+
7785 {5.54571009, 14.12712}, //
+
7786 {5.54515982, 14.1263399}, //
+
7787 {5.54470015, 14.1258602}, //
+
7788 {5.54432011, 14.1256704}, //
+
7789 {5.54403019, 14.1257696}, //
+
7790 {5.5438199, 14.1261702}, //
+
7791 {5.5436902, 14.1268597}, //
+
7792 {5.54365015, 14.1278496}, //
+
7793 {5.54365015, 14.1363497}, //
+
7794 {5.54436016, 14.1378098}, //
+
7795 {5.54499006, 14.1391802}, //
+
7796 {5.54553986, 14.14048}, //
+
7797 {5.546, 14.1416903}, //
+
7798 {5.54638004, 14.1428204}, //
+
7799 {5.54666996, 14.1438599}, //
+
7800 {5.54687977, 14.1448202}, //
+
7801 {5.54700994, 14.1457005}, //
+
7802 {5.54705, 14.1464996}, //
+
7803 {5.54702997, 14.1479101}, //
+
7804 {5.54696989, 14.1491003}, //
+
7805 {5.54686022, 14.1500902}, //
+
7806 {5.54671001, 14.1508703}, //
+
7807 {5.54652977, 14.1514301}, //
+
7808 {5.54628992, 14.1517897}, //
+
7809 {5.54602003, 14.1519403}, //
+
7810 {5.54571009, 14.1518698}, //
+
7811 {5.54535007, 14.1515999}, //
+
7812 {5.54490995, 14.1512003}, //
+
7813 {5.54435015, 14.1507597}, //
+
7814 {5.54366016, 14.15028}, //
+
7815 {5.54284, 14.1497498}, //
+
7816 {5.54190016, 14.1491899}, //
+
7817 {5.54084015, 14.1485796}, //
+
7818 {5.53964996, 14.1479301}, //
+
7819 {5.53834009, 14.1472301}, //
+
7820 {5.53690004, 14.1464996}, //
+
7821 {5.5352602, 14.1457005}, //
+
7822 {5.53338003, 14.1448202}, //
+
7823 {5.53123999, 14.1438599}, //
+
7824 {5.52885008, 14.1428204}, //
+
7825 {5.52620983, 14.1416903}, //
+
7826 {5.5233202, 14.14048}, //
+
7827 {5.52018023, 14.1391802}, //
+
7828 {5.51678991, 14.1378098}, //
+
7829 {5.51315022, 14.1363497}, //
+
7830 {5.51169014, 14.1362495}, //
+
7831 {5.51032019, 14.1359301}, //
+
7832 {5.50901985, 14.1354103}, //
+
7833 {5.50781012, 14.1346703}, //
+
7834 {5.50668001, 14.1337299}, //
+
7835 {5.50564003, 14.1325703}, //
+
7836 {5.50468016, 14.1312103}, //
+
7837 {5.50379992, 14.1296301}, //
+
7838 {5.50299978, 14.1278496}, //
+
7839 {5.50224018, 14.1259899}, //
+
7840 {5.50149012, 14.1241798}, //
+
7841 {5.50073004, 14.1224003}, //
+
7842 {5.49997997, 14.1206598}, //
+
7843 {5.49921989, 14.1189699}, //
+
7844 {5.49846983, 14.1173201}, //
+
7845 {5.49771023, 14.1156998}, //
+
7846 {5.49696016, 14.11413}, //
+
7847 {5.49620008, 14.1126003}, //
+
7848 {5.49606991, 14.1102896}, //
+
7849 {5.49569988, 14.1078997}, //
+
7850 {5.49506998, 14.1054296}, //
+
7851 {5.49420023, 14.10287}, //
+
7852 {5.49307013, 14.1002302}, //
+
7853 {5.49169016, 14.0975103}, //
+
7854 {5.49005985, 14.0947104}, //
+
7855 {5.48818016, 14.0918198}, //
+
7856 {5.48605013, 14.08885}, //
+
7857 {5.48532009, 14.0874996}, //
+
7858 {5.48462009, 14.0864296}, //
+
7859 {5.48397017, 14.08566}, //
+
7860 {5.48335981, 14.0851803}, //
+
7861 {5.48280001, 14.0849895}, //
+
7862 {5.48226976, 14.0850897}, //
+
7863 {5.48179007, 14.0854902}, //
+
7864 {5.48134995, 14.0861702}, //
+
7865 {5.48094988, 14.0871496}, //
+
7866 {5.48060989, 14.0883503}, //
+
7867 {5.48036003, 14.0896702}, //
+
7868 {5.4801898, 14.0911102}, //
+
7869 {5.48011017, 14.09268}, //
+
7870 {5.48011017, 14.0943804}, //
+
7871 {5.4801898, 14.0961905}, //
+
7872 {5.48036003, 14.0981398}, //
+
7873 {5.48060989, 14.1002102}, //
+
7874 {5.48094988, 14.1023998}, //
+
7875 {5.48130989, 14.1047497}, //
+
7876 {5.48161983, 14.1072702}, //
+
7877 {5.4818902, 14.1099501}, //
+
7878 {5.48213005, 14.1127996}, //
+
7879 {5.48230982, 14.1158199}, //
+
7880 {5.48246002, 14.1190004}, //
+
7881 {5.48257017, 14.1223497}, //
+
7882 {5.48262978, 14.1258698}, //
+
7883 {5.4826498, 14.12955}, //
+
7884 {5.48335981, 14.1324396}, //
+
7885 {5.48399019, 14.1350698}, //
+
7886 {5.48453999, 14.1374598}, //
+
7887 {5.48500013, 14.1395903}, //
+
7888 {5.48538017, 14.14147}, //
+
7889 {5.48567009, 14.1431103}, //
+
7890 {5.4858799, 14.1444902}, //
+
7891 {5.48601007, 14.1456203}, //
+
7892 {5.48605013, 14.1464996}, //
+
7893 {5.48601007, 14.1471701}, //
+
7894 {5.4858799, 14.1476803}, //
+
7895 {5.48567009, 14.1480103}, //
+
7896 {5.48538017, 14.14818}, //
+
7897 {5.48500013, 14.14818}, //
+
7898 {5.48453999, 14.1480103}, //
+
7899 {5.48399019, 14.1476803}, //
+
7900 {5.48335981, 14.1471701}, //
+
7901 {5.4826498, 14.1464996}, //
+
7902 {5.48187017, 14.1456604}, //
+
7903 {5.48105001, 14.1446505}, //
+
7904 {5.4801898, 14.1434803}, //
+
7905 {5.47929001, 14.1421299}, //
+
7906 {5.47835016, 14.1406202}, //
+
7907 {5.47735977, 14.1389399}, //
+
7908 {5.4763298, 14.1371002}, //
+
7909 {5.47525978, 14.1350803}, //
+
7910 {5.47415018, 14.1329002}, //
+
7911 {5.47301006, 14.1306896}, //
+
7912 {5.47181988, 14.1285601}, //
+
7913 {5.47059011, 14.1265097}, //
+
7914 {5.46931982, 14.1245499}, //
+
7915 {5.46799994, 14.1226702}, //
+
7916 {5.46664, 14.1208801}, //
+
7917 {5.46524, 14.1191702}, //
+
7918 {5.46378994, 14.1175404}, //
+
7919 {5.46229982, 14.1160002}, //
+
7920 {5.46009016, 14.1123199}, //
+
7921 {5.45795012, 14.1087999}, //
+
7922 {5.45591021, 14.1054497}, //
+
7923 {5.45393991, 14.1022701}, //
+
7924 {5.45206022, 14.0992498}, //
+
7925 {5.45026016, 14.0964003}, //
+
7926 {5.44854021, 14.0937204}, //
+
7927 {5.44689989, 14.0911999}, //
+
7928 {5.44535017, 14.08885}, //
+
7929 {5.44459009, 14.08743}, //
+
7930 {5.44384003, 14.0861797}, //
+
7931 {5.44307995, 14.0851002}, //
+
7932 {5.44232988, 14.0841799}, //
+
7933 {5.44156981, 14.0834303}, //
+
7934 {5.44082022, 14.0828505}, //
+
7935 {5.44006014, 14.0824299}, //
+
7936 {5.43931007, 14.08218}, //
+
7937 {5.43855, 14.0820999}, //
+
7938 {5.43515015, 14.0820999}, //
+
7939 {5.43522978, 14.08214}, //
+
7940 {5.43549013, 14.0822697}, //
+
7941 {5.43591022, 14.0824699}, //
+
7942 {5.43649006, 14.0827599}, //
+
7943 {5.43725014, 14.0831299}, //
+
7944 {5.43816996, 14.0835896}, //
+
7945 {5.43926001, 14.0841303}, //
+
7946 {5.44051981, 14.0847502}, //
+
7947 {5.44194984, 14.0854502}, //
+
7948 {5.44196987, 14.0862503}, //
+
7949 {5.44202995, 14.0871296}, //
+
7950 {5.4421401, 14.0880899}, //
+
7951 {5.44228983, 14.0891304}, //
+
7952 {5.44247007, 14.0902596}, //
+
7953 {5.44270992, 14.0914698}, //
+
7954 {5.44297981, 14.0927696}, //
+
7955 {5.44329023, 14.0941401}, //
+
7956 {5.44364977, 14.0956001}, //
+
7957 {5.44400978, 14.0971098}, //
+
7958 {5.4443202, 14.0986204}, //
+
7959 {5.44459009, 14.1001301}, //
+
7960 {5.44482994, 14.1016397}, //
+
7961 {5.44501019, 14.1031599}, //
+
7962 {5.44515991, 14.1046696}, //
+
7963 {5.44527006, 14.1061802}, //
+
7964 {5.44533014, 14.1076899}, //
+
7965 {5.44535017, 14.1091995}, //
+
7966 {5.44529009, 14.1108799}, //
+
7967 {5.44509983, 14.1128902}, //
+
7968 {5.44477987, 14.1152296}, //
+
7969 {5.44434023, 14.1179104}, //
+
7970 {5.44377995, 14.1209202}, //
+
7971 {5.44307995, 14.1242704}, //
+
7972 {5.44225979, 14.1279402}, //
+
7973 {5.44131994, 14.1319599}, //
+
7974 {5.44024992, 14.1363001}, //
+
7975 {5.43911982, 14.1407804}, //
+
7976 {5.43798018, 14.1451797}, //
+
7977 {5.43685007, 14.1494904}, //
+
7978 {5.43571997, 14.1537199}, //
+
7979 {5.43457985, 14.1578598}, //
+
7980 {5.43345022, 14.1619196}, //
+
7981 {5.43232012, 14.1659002}, //
+
7982 {5.43118, 14.1697903}, //
+
7983 {5.4300499, 14.1736002}, //
+
7984 {5.42894983, 14.1772499}, //
+
7985 {5.42788982, 14.1806498}, //
+
7986 {5.42686987, 14.1837902}, //
+
7987 {5.42588997, 14.1866903}, //
+
7988 {5.42495012, 14.1893301}, //
+
7989 {5.42404985, 14.1917105}, //
+
7990 {5.42319012, 14.19384}, //
+
7991 {5.42237997, 14.1957197}, //
+
7992 {5.42159986, 14.1973495}, //
+
7993 {5.42155981, 14.1979799}, //
+
7994 {5.42143011, 14.1983604}, //
+
7995 {5.42121983, 14.1984797}, //
+
7996 {5.42092991, 14.1983604}, //
+
7997 {5.42054987, 14.1979799}, //
+
7998 {5.4200902, 14.1973495}, //
+
7999 {5.41953993, 14.1964703}, //
+
8000 {5.41891003, 14.1953402}, //
+
8001 {5.41820002, 14.1939497}, //
+
8002 {5.41744995, 14.1924105}, //
+
8003 {5.4167099, 14.1907797}, //
+
8004 {5.41595984, 14.1890697}, //
+
8005 {5.41520977, 14.1872702}, //
+
8006 {5.41446018, 14.1853905}, //
+
8007 {5.41371012, 14.1834202}, //
+
8008 {5.41296005, 14.1813602}, //
+
8009 {5.41219997, 14.1792202}, //
+
8010 {5.41144991, 14.177}, //
+
8011 {5.40993977, 14.1724796}, //
+
8012 {5.4084301, 14.1679602}, //
+
8013 {5.40691996, 14.1634398}, //
+
8014 {5.40541983, 14.1589203}, //
+
8015 {5.40391016, 14.1543999}, //
+
8016 {5.40241003, 14.1498899}, //
+
8017 {5.40089989, 14.1453695}, //
+
8018 {5.3979001, 14.1363497}, //
+
8019 {5.39645004, 14.1328497}, //
+
8020 {5.39513016, 14.1299}, //
+
8021 {5.39392996, 14.12749}, //
+
8022 {5.39285994, 14.1256304}, //
+
8023 {5.39192009, 14.1243095}, //
+
8024 {5.39109993, 14.1235304}, //
+
8025 {5.39040995, 14.1232901}, //
+
8026 {5.38984013, 14.1236}, //
+
8027 {5.38940001, 14.1244497}, //
+
8028 {5.38909006, 14.1256905}, //
+
8029 {5.3888998, 14.1271296}, //
+
8030 {5.38883018, 14.1287899}, //
+
8031 {5.3888998, 14.1306496}, //
+
8032 {5.38909006, 14.13272}, //
+
8033 {5.38940001, 14.1350098}, //
+
8034 {5.38984013, 14.1374998}, //
+
8035 {5.39040995, 14.1401901}, //
+
8036 {5.39109993, 14.1430998}, //
+
8037 {5.39109993, 14.1837997}, //
+
8038 {5.3910799, 14.1866903}, //
+
8039 {5.39101982, 14.1893196}, //
+
8040 {5.39091015, 14.1917105}, //
+
8041 {5.39075994, 14.19384}, //
+
8042 {5.39058018, 14.1957197}, //
+
8043 {5.39033985, 14.19736}, //
+
8044 {5.39006996, 14.19874}, //
+
8045 {5.38976002, 14.1998701}, //
+
8046 {5.38940001, 14.2007504}, //
+
8047 {5.38899994, 14.2013998}, //
+
8048 {5.38855982, 14.2018404}, //
+
8049 {5.38808012, 14.2020702}, //
+
8050 {5.38754988, 14.2020903}, //
+
8051 {5.38699007, 14.2018995}, //
+
8052 {5.3863802, 14.2015104}, //
+
8053 {5.38572979, 14.2009001}, //
+
8054 {5.38502979, 14.2000799}, //
+
8055 {5.38430023, 14.1990499}, //
+
8056 {5.38354015, 14.1978703}, //
+
8057 {5.38279009, 14.19662}, //
+
8058 {5.38203001, 14.1952696}, //
+
8059 {5.38127995, 14.1938496}, //
+
8060 {5.38051987, 14.1923304}, //
+
8061 {5.3797698, 14.1907396}, //
+
8062 {5.3790102, 14.1890602}, //
+
8063 {5.37826014, 14.1872997}, //
+
8064 {5.37750006, 14.1854496}, //
+
8065 {5.37680006, 14.1835899}, //
+
8066 {5.37618017, 14.1817799}, //
+
8067 {5.37563992, 14.1800098}, //
+
8068 {5.37517977, 14.1782703}, //
+
8069 {5.37481022, 14.17659}, //
+
8070 {5.37451982, 14.1749401}, //
+
8071 {5.37432003, 14.1733303}, //
+
8072 {5.37418985, 14.1717701}, //
+
8073 {5.3741498, 14.1702499}, //
+
8074 {5.3741498, 14.2380505}, //
+
8075 {5.37411022, 14.2419004}, //
+
8076 {5.37398005, 14.2459202}, //
+
8077 {5.37377024, 14.2501097}, //
+
8078 {5.37347984, 14.2544603}, //
+
8079 {5.3730998, 14.2589798}, //
+
8080 {5.37264013, 14.26367}, //
+
8081 {5.37208986, 14.2685299}, //
+
8082 {5.37145996, 14.2735596}, //
+
8083 {5.37074995, 14.2787504}, //
+
8084 {5.37003994, 14.2854404}, //
+
8085 {5.36941004, 14.2919703}, //
+
8086 {5.36885977, 14.2983303}, //
+
8087 {5.3684001, 14.3045301}, //
+
8088 {5.36802006, 14.3105602}, //
+
8089 {5.36773014, 14.3164196}, //
+
8090 {5.36751986, 14.3221102}, //
+
8091 {5.36739016, 14.3276396}, //
+
8092 {5.3673501, 14.3330002}, //
+
8093 {5.3673501, 14.3448496}, //
+
8094 {5.36733007, 14.3452101}, //
+
8095 {5.36726999, 14.34552}, //
+
8096 {5.36715984, 14.3457899}, //
+
8097 {5.36701012, 14.3460302}, //
+
8098 {5.36682987, 14.3462095}, //
+
8099 {5.36659002, 14.3463602}, //
+
8100 {5.36632013, 14.3464699}, //
+
8101 {5.36601019, 14.34653}, //
+
8102 {5.36565018, 14.34655}, //
+
8103 {5.36529016, 14.3464899}, //
+
8104 {5.36498022, 14.3463001}, //
+
8105 {5.36470985, 14.3459797}, //
+
8106 {5.36447001, 14.34554}, //
+
8107 {5.36429024, 14.3449802}, //
+
8108 {5.36414003, 14.3442802}, //
+
8109 {5.36402988, 14.3434601}, //
+
8110 {5.3639698, 14.3425198}, //
+
8111 {5.36394978, 14.3414497}, //
+
8112 {5.3639102, 14.3403502}, //
+
8113 {5.36378002, 14.3392897}, //
+
8114 {5.36358023, 14.3382702}, //
+
8115 {5.36328983, 14.3372898}, //
+
8116 {5.36291981, 14.3363504}, //
+
8117 {5.36246014, 14.3354502}, //
+
8118 {5.36191988, 14.33459}, //
+
8119 {5.36129999, 14.3337803}, //
+
8120 {5.36059999, 14.3330002}, //
+
8121 {5.35988998, 14.3314896}, //
+
8122 {5.35926008, 14.3299799}, //
+
8123 {5.35870981, 14.3284702}, //
+
8124 {5.35825014, 14.3269596}, //
+
8125 {5.3578701, 14.3254404}, //
+
8126 {5.35758018, 14.3239298}, //
+
8127 {5.3573699, 14.3224201}, //
+
8128 {5.3572402, 14.3209105}, //
+
8129 {5.35720015, 14.3193998}, //
+
8130 {5.35649014, 14.3187599}, //
+
8131 {5.35586023, 14.3183298}, //
+
8132 {5.35530996, 14.3181}, //
+
8133 {5.35484982, 14.3180799}, //
+
8134 {5.35446978, 14.3182697}, //
+
8135 {5.35417986, 14.3186703}, //
+
8136 {5.35397005, 14.3192701}, //
+
8137 {5.35383987, 14.3200798}, //
+
8138 {5.35379982, 14.3211002}, //
+
8139 {5.35375977, 14.3223}, //
+
8140 {5.35363007, 14.3236198}, //
+
8141 {5.35341978, 14.3250599}, //
+
8142 {5.35312986, 14.3266296}, //
+
8143 {5.35274982, 14.32833}, //
+
8144 {5.35229015, 14.3301401}, //
+
8145 {5.35173988, 14.3320904}, //
+
8146 {5.35110998, 14.3341599}, //
+
8147 {5.35039997, 14.3363504}, //
+
8148 {5.34968996, 14.3386202}, //
+
8149 {5.34906006, 14.3408804}, //
+
8150 {5.34850979, 14.3431396}, //
+
8151 {5.34805012, 14.3454103}, //
+
8152 {5.34767008, 14.3476696}, //
+
8153 {5.34738016, 14.3499298}, //
+
8154 {5.34716988, 14.35219}, //
+
8155 {5.34704018, 14.3544397}, //
+
8156 {5.34700012, 14.3566999}, //
+
8157 {5.34700012, 14.3804502}, //
+
8158 {5.34220982, 14.3833399}, //
+
8159 {5.34259987, 14.3847704}, //
+
8160 {5.34297991, 14.3862801}, //
+
8161 {5.34326982, 14.3876305}, //
+
8162 {5.34348011, 14.3887997}, //
+
8163 {5.34360981, 14.3898096}, //
+
8164 {5.34364986, 14.3906498}, //
+
8165 {5.34362984, 14.3906698}, //
+
8166 {5.34362411, 14.3906755}, //
+
8167 {5.34063005, 14.39363}, //
+
8168 {5.34041977, 14.3938303}, //
+
8169 {5.34194994, 14.3922997}, //
+
8170 {5.34288979, 14.3913803}, //
+
8171 {5.34330988, 14.3909798}, //
+
8172 {5.34346008, 14.39083}, //
+
8173 {5.34362411, 14.3906755}, //
+
8174 {5.34364986, 14.3906498}, //
+
8175 {5.34360981, 14.3905897}, //
+
8176 {5.34348011, 14.3903999}, //
+
8177 {5.34326982, 14.3900805}, //
+
8178 {5.34297991, 14.3896399}, //
+
8179 {5.3421402, 14.3883801}, //
+
8180 {5.34158993, 14.3875599}, //
+
8181 {5.34096003, 14.3866196}, //
+
8182 {5.34025002, 14.3855495}, //
+
8183 {5.33974981, 14.3848104}, //
+
8184 {5.33004999, 14.3906498}, //
+
8185 {5.33011007, 14.3907499}, //
+
8186 {5.33061981, 14.3915901}, //
+
8187 {5.33162022, 14.39326}, //
+
8188 {5.3331399, 14.3957596}, //
+
8189 {5.33408022, 14.3973303}, //
+
8190 {5.33514977, 14.3991003}, //
+
8191 {5.3362999, 14.4010496}, //
+
8192 {5.3375001, 14.4031296}, //
+
8193 {5.33872986, 14.4053297}, //
+
8194 {5.34001017, 14.40765}, //
+
8195 {5.34133005, 14.4101}, //
+
8196 {5.34267998, 14.4126797}, //
+
8197 {5.34407997, 14.4153795}, //
+
8198 {5.34552002, 14.4181995}, //
+
8199 {5.34700012, 14.4211502}, //
+
8200 {5.34845018, 14.42414}, //
+
8201 {5.34977007, 14.4270897}, //
+
8202 {5.35096979, 14.4299898}, //
+
8203 {5.35203981, 14.4328604}, //
+
8204 {5.35298014, 14.4356804}, //
+
8205 {5.35379982, 14.4384604}, //
+
8206 {5.3544898, 14.4412003}, //
+
8207 {5.3550601, 14.4439001}, //
+
8208 {5.35550022, 14.4465504}, //
+
8209 {5.35581017, 14.44909}, //
+
8210 {5.35599995, 14.4514198}, //
+
8211 {5.35607004, 14.4535398}, //
+
8212 {5.35599995, 14.4554501}, //
+
8213 {5.35581017, 14.4571505}, //
+
8214 {5.35550022, 14.4586401}, //
+
8215 {5.3550601, 14.4599199}, //
+
8216 {5.3544898, 14.46099}, //
+
8217 {5.35379982, 14.4618502}, //
+
8218 {5.35227013, 14.4624701}, //
+
8219 {5.35068989, 14.4628401}, //
+
8220 {5.34908009, 14.4629602}, //
+
8221 {5.34742022, 14.4628201}, //
+
8222 {5.34571981, 14.4624395}, //
+
8223 {5.34397984, 14.4618101}, //
+
8224 {5.34218979, 14.4609203}, //
+
8225 {5.34037018, 14.4597902}, //
+
8226 {5.33850002, 14.4583998}, //
+
8227 {5.3365798, 14.4568396}, //
+
8228 {5.33457994, 14.4551497}, //
+
8229 {5.33248997, 14.45333}, //
+
8230 {5.33031988, 14.4513798}, //
+
8231 {5.32806015, 14.4493103}, //
+
8232 {5.32571983, 14.4471102}, //
+
8233 {5.32329988, 14.4447803}, //
+
8234 {5.32078981, 14.4423304}, //
+
8235 {5.31820011, 14.4397497}, //
+
8236 {5.31560993, 14.4371405}, //
+
8237 {5.31309986, 14.4345703}, //
+
8238 {5.3106699, 14.4320402}, //
+
8239 {5.30833006, 14.4295502}, //
+
8240 {5.30606985, 14.4271097}, //
+
8241 {5.30389023, 14.4247103}, //
+
8242 {5.30179024, 14.4223499}, //
+
8243 {5.29977989, 14.4200296}, //
+
8244 {5.29785013, 14.4177504}, //
+
8245 {5.29608011, 14.4155798}, //
+
8246 {5.29450989, 14.4135704}, //
+
8247 {5.29315996, 14.4117298}, //
+
8248 {5.29200983, 14.4100599}, //
+
8249 {5.29106998, 14.4085598}, //
+
8250 {5.29033995, 14.4072199}, //
+
8251 {5.28982019, 14.4060402}, //
+
8252 {5.28950024, 14.4050398}, //
+
8253 {5.2894001, 14.4041996}, //
+
8254 {5.2894001, 14.4092503}, //
+
8255 {5.28942013, 14.41045}, //
+
8256 {5.28948021, 14.4117699}, //
+
8257 {5.28957987, 14.4132099}, //
+
8258 {5.28973007, 14.4147797}, //
+
8259 {5.28990984, 14.4164801}, //
+
8260 {5.29013014, 14.4182901}, //
+
8261 {5.29040003, 14.4202404}, //
+
8262 {5.29069996, 14.4223099}, //
+
8263 {5.29104996, 14.4245005}, //
+
8264 {5.29145002, 14.4267702}, //
+
8265 {5.29189014, 14.4290304}, //
+
8266 {5.29236984, 14.4312897}, //
+
8267 {5.29290009, 14.4335604}, //
+
8268 {5.29345989, 14.4358196}, //
+
8269 {5.29406977, 14.4380798}, //
+
8270 {5.29472017, 14.44034}, //
+
8271 {5.29542017, 14.4425898}, //
+
8272 {5.29615021, 14.44485}, //
+
8273 {5.29686022, 14.4470701}, //
+
8274 {5.29749012, 14.4492197}, //
+
8275 {5.29803991, 14.4512701}, //
+
8276 {5.29850006, 14.4532499}, //
+
8277 {5.2988801, 14.4551296}, //
+
8278 {5.29917002, 14.4569397}, //
+
8279 {5.29937983, 14.4586601}, //
+
8280 {5.29951, 14.4603004}, //
+
8281 {5.29955006, 14.4618502}, //
+
8282 {5.29959011, 14.4633503}, //
+
8283 {5.29971981, 14.4648504}, //
+
8284 {5.2999301, 14.4663601}, //
+
8285 {5.30022001, 14.4678602}, //
+
8286 {5.30060005, 14.4693699}, //
+
8287 {5.3010602, 14.47087}, //
+
8288 {5.30160999, 14.4723797}, //
+
8289 {5.30223989, 14.4738903}, //
+
8290 {5.30294991, 14.4754}, //
+
8291 {5.30288982, 14.4760904}, //
+
8292 {5.30270004, 14.4766598}, //
+
8293 {5.30238008, 14.4771004}, //
+
8294 {5.30193996, 14.4774103}, //
+
8295 {5.30138016, 14.4776001}, //
+
8296 {5.30068016, 14.4776697}, //
+
8297 {5.29986, 14.4776001}, //
+
8298 {5.29892015, 14.4774103}, //
+
8299 {5.29785013, 14.4771004}, //
+
8300 {5.2967, 14.4766998}, //
+
8301 {5.2954998, 14.4762602}, //
+
8302 {5.29426003, 14.4757795}, //
+
8303 {5.29298019, 14.4752502}, //
+
8304 {5.29165983, 14.4746904}, //
+
8305 {5.29028988, 14.4740801}, //
+
8306 {5.28888988, 14.4734297}, //
+
8307 {5.28743982, 14.4727297}, //
+
8308 {5.28665018, 14.4723396}, //
+
8309 {5.28765011, 14.4720001}, //
+
8310 {5.2887001, 14.4711199}, //
+
8311 {5.28957987, 14.4699898}, //
+
8312 {5.29028988, 14.4686098}, //
+
8313 {5.29084015, 14.4669704}, //
+
8314 {5.29122019, 14.4650898}, //
+
8315 {5.29143, 14.4629602}, //
+
8316 {5.29147005, 14.4605703}, //
+
8317 {5.29133987, 14.4579401}, //
+
8318 {5.29104996, 14.4550505}, //
+
8319 {5.2906599, 14.4519997}, //
+
8320 {5.2902298, 14.4488602}, //
+
8321 {5.28976011, 14.4456396}, //
+
8322 {5.28923988, 14.4423304}, //
+
8323 {5.28868008, 14.4389496}, //
+
8324 {5.2880702, 14.4354696}, //
+
8325 {5.2874198, 14.4319201}, //
+
8326 {5.28672981, 14.4282703}, //
+
8327 {5.28599977, 14.4245501}, //
+
8328 {5.28457022, 14.4208202}, //
+
8329 {5.28330994, 14.4171801}, //
+
8330 {5.28221989, 14.41362}, //
+
8331 {5.28130007, 14.4101496}, //
+
8332 {5.28053999, 14.4067497}, //
+
8333 {5.27996016, 14.4034405}, //
+
8334 {5.27954006, 14.4002104}, //
+
8335 {5.27928019, 14.3970604}, //
+
8336 {5.27920008, 14.3940001}, //
+
8337 {5.27851009, 14.39044}, //
+
8338 {5.2779398, 14.3872995}, //
+
8339 {5.27750015, 14.3845797}, //
+
8340 {5.27719021, 14.3822803}, //
+
8341 {5.27699995, 14.3803997}, //
+
8342 {5.27692986, 14.3789301}, //
+
8343 {5.27699995, 14.3778896}, //
+
8344 {5.27719021, 14.3772602}, //
+
8345 {5.27750015, 14.3770504}, //
+
8346 {5.2779398, 14.3772202}, //
+
8347 {5.27851009, 14.3777199}, //
+
8348 {5.27920008, 14.3785601}, //
+
8349 {5.28002024, 14.3797398}, //
+
8350 {5.28096008, 14.3812504}, //
+
8351 {5.28203011, 14.38309}, //
+
8352 {5.28322983, 14.3852797}, //
+
8353 {5.28455019, 14.3878002}, //
+
8354 {5.28599977, 14.3906498}, //
+
8355 {5.28753996, 14.3929701}, //
+
8356 {5.28916979, 14.3954096}, //
+
8357 {5.2908802, 14.3979797}, //
+
8358 {5.29266977, 14.4006796}, //
+
8359 {5.29454994, 14.4034996}, //
+
8360 {5.29651022, 14.4064503}, //
+
8361 {5.29856014, 14.4095201}, //
+
8362 {5.30069017, 14.4127197}, //
+
8363 {5.30289984, 14.41605}, //
+
8364 {5.30521011, 14.4194202}, //
+
8365 {5.30760002, 14.4227505}, //
+
8366 {5.31007004, 14.4260302}, //
+
8367 {5.31263018, 14.4292803}, //
+
8368 {5.31526995, 14.4324903}, //
+
8369 {5.31798983, 14.4356499}, //
+
8370 {5.32078981, 14.4387703}, //
+
8371 {5.32367992, 14.4418602}, //
+
8372 {5.32665014, 14.4448996}, //
+
8373 {5.32954979, 14.4470501}, //
+
8374 {5.33219004, 14.4489899}, //
+
8375 {5.33457994, 14.4507303}, //
+
8376 {5.33670998, 14.4522495}, //
+
8377 {5.33860016, 14.4535704}, //
+
8378 {5.34022999, 14.4546804}, //
+
8379 {5.34159994, 14.4555798}, //
+
8380 {5.34273005, 14.4562702}, //
+
8381 {5.3435998, 14.4567499}, //
+
8382 {5.34427023, 14.4570198}, //
+
8383 {5.34477997, 14.4570904}, //
+
8384 {5.34510994, 14.4569397}, //
+
8385 {5.34528017, 14.4565802}, //
+
8386 {5.34528017, 14.4560204}, //
+
8387 {5.34510994, 14.4552402}, //
+
8388 {5.34477997, 14.4542503}, //
+
8389 {5.34427023, 14.4530602}, //
+
8390 {5.3435998, 14.4516497}, //
+
8391 {5.34285021, 14.4501104}, //
+
8392 {5.34211016, 14.4484797}, //
+
8393 {5.34136009, 14.4467697}, //
+
8394 {5.34061003, 14.4449701}, //
+
8395 {5.33985996, 14.4430904}, //
+
8396 {5.3391099, 14.4411201}, //
+
8397 {5.33835983, 14.4390602}, //
+
8398 {5.33760023, 14.4369202}, //
+
8399 {5.33685017, 14.4347}, //
+
8400 {5.33607006, 14.4324398}, //
+
8401 {5.3352499, 14.4301901}, //
+
8402 {5.33439016, 14.4279299}, //
+
8403 {5.33348989, 14.4256697}, //
+
8404 {5.33255005, 14.4234104}, //
+
8405 {5.33156013, 14.4211397}, //
+
8406 {5.33053017, 14.4188805}, //
+
8407 {5.32946014, 14.4166203}, //
+
8408 {5.32835007, 14.4143496}, //
+
8409 {5.32729006, 14.4121399}, //
+
8410 {5.32635021, 14.4099998}, //
+
8411 {5.32554007, 14.4079599}, //
+
8412 {5.3248601, 14.4059896}, //
+
8413 {5.32429981, 14.40411}, //
+
8414 {5.32386017, 14.4023104}, //
+
8415 {5.32355022, 14.4005899}, //
+
8416 {5.32335997, 14.3989496}, //
+
8417 {5.32329988, 14.3973999}, //
+
8418 {5.32240009, 14.39363}, //
+
8419 {5.32119989, 14.3898697}, //
+
8420 {5.31971979, 14.3860998}, //
+
8421 {5.31794024, 14.3823299}, //
+
8422 {5.31585979, 14.3785696}, //
+
8423 {5.31349993, 14.3747997}, //
+
8424 {5.31084013, 14.3710299}, //
+
8425 {5.30788994, 14.3672705}, //
+
8426 {5.30464983, 14.3634996}, //
+
8427 {5.30119991, 14.3596897}, //
+
8428 {5.29761982, 14.3557997}, //
+
8429 {5.29392004, 14.35182}, //
+
8430 {5.29009008, 14.3477602}, //
+
8431 {5.28612995, 14.3436203}, //
+
8432 {5.28205013, 14.3393898}, //
+
8433 {5.27784014, 14.3350801}, //
+
8434 {5.27350998, 14.3306799}, //
+
8435 {5.26905012, 14.3261995}, //
+
8436 {5.26457024, 14.3231001}, //
+
8437 {5.26016998, 14.3198404}, //
+
8438 {5.25585985, 14.3164101}, //
+
8439 {5.25162983, 14.3128099}, //
+
8440 {5.24748993, 14.3090496}, //
+
8441 {5.24343014, 14.30511}, //
+
8442 {5.23944998, 14.3010101}, //
+
8443 {5.23555994, 14.2967396}, //
+
8444 {5.23175001, 14.2923002}, //
+
8445 {5.22944021, 14.2891197}, //
+
8446 {5.22704983, 14.2856102}, //
+
8447 {5.22457981, 14.2817602}, //
+
8448 {5.22202015, 14.2775698}, //
+
8449 {5.2193799, 14.2730503}, //
+
8450 {5.21666002, 14.2681904}, //
+
8451 {5.21386003, 14.2629995}, //
+
8452 {5.21096992, 14.2574701}, //
+
8453 {5.20800018, 14.2516003}, //
+
8454 {5.20500994, 14.2455597}, //
+
8455 {5.20206022, 14.2394695}, //
+
8456 {5.19915009, 14.2333403}, //
+
8457 {5.19628, 14.22717}, //
+
8458 {5.19344997, 14.2209501}, //
+
8459 {5.19067001, 14.2146902}, //
+
8460 {5.18792009, 14.2083902}, //
+
8461 {5.18521023, 14.2020397}, //
+
8462 {5.18254995, 14.1956501}, //
+
8463 {5.1799798, 14.1893797}, //
+
8464 {5.17752981, 14.1833496}, //
+
8465 {5.17521, 14.1775799}, //
+
8466 {5.17300987, 14.1720505}, //
+
8467 {5.17093992, 14.1667805}, //
+
8468 {5.16899014, 14.1617603}, //
+
8469 {5.16717005, 14.1569901}, //
+
8470 {5.16547012, 14.1524696}, //
+
8471 {5.1638999, 14.1482}, //
+
8472 {5.16123009, 14.14083}, //
+
8473 {5.16015005, 14.1378403}, //
+
8474 {5.15923023, 14.1353102}, //
+
8475 {5.15848017, 14.1332302}, //
+
8476 {5.15789986, 14.1316204}, //
+
8477 {5.15747976, 14.1304703}, //
+
8478 {5.1572299, 14.1297798}, //
+
8479 {5.15714979, 14.12955}, //
+
8480 {5.15132999, 14.12006}, //
+
8481 {5.1459198, 14.1112099}, //
+
8482 {5.14093018, 14.1029797}, //
+
8483 {5.13636017, 14.0953798}, //
+
8484 {5.13220978, 14.0883999}, //
+
8485 {5.12847996, 14.0820599}, //
+
8486 {5.12517023, 14.0763502}, //
+
8487 {5.12228012, 14.0712605}, //
+
8488 {5.11980009, 14.0668001}, //
+
8489 {5.11767006, 14.0628901}, //
+
8490 {5.11578989, 14.0594301}, //
+
8491 {5.11416006, 14.0564404}, //
+
8492 {5.11278009, 14.0539103}, //
+
8493 {5.11014986, 14.0490704}, //
+
8494 {5.10977983, 14.0483799}, //
+
8495 {5.10965014, 14.0481501}, //
+
8496 {4.98085022, 14.1566496}, //
+
8497 {4.98210001, 14.1565704}, //
+
8498 {4.9843502, 14.1578398}, //
+
8499 {4.98760986, 14.1604404}, //
+
8500 {4.99187994, 14.1643801}, //
+
8501 {4.99714994, 14.1696596}, //
+
8502 {5.00342989, 14.1762695}, //
+
8503 {5.01070976, 14.1842299}, //
+
8504 {5.01900005, 14.1935196}, //
+
8505 {5.02829981, 14.2041502}, //
+
8506 {5.03361988, 14.2126503}, //
+
8507 {5.03902006, 14.2215595}, //
+
8508 {5.04450989, 14.2308998}, //
+
8509 {5.05006981, 14.2406502}, //
+
8510 {5.05571985, 14.2508297}, //
+
8511 {5.06146002, 14.2614202}, //
+
8512 {5.0672698, 14.2724304}, //
+
8513 {5.07317019, 14.2838497}, //
+
8514 {5.0791502, 14.2957001}, //
+
8515 {5.08443022, 14.3040304}, //
+
8516 {5.08971024, 14.3124399}, //
+
8517 {5.09497976, 14.32094}, //
+
8518 {5.10025978, 14.3295202}, //
+
8519 {5.1055398, 14.3381796}, //
+
8520 {5.11081982, 14.34692}, //
+
8521 {5.11608982, 14.3557501}, //
+
8522 {5.12136984, 14.3646603}, //
+
8523 {5.12664986, 14.3736496}, //
+
8524 {5.13024998, 14.3807802}, //
+
8525 {5.13351011, 14.3870602}, //
+
8526 {5.1364398, 14.3925104}, //
+
8527 {5.13902998, 14.3971205}, //
+
8528 {5.14129019, 14.4008904}, //
+
8529 {5.14320993, 14.4038296}, //
+
8530 {5.14479017, 14.40592}, //
+
8531 {5.14603996, 14.4071798}, //
+
8532 {5.14694977, 14.4076004}, //
+
8533 {5.14758015, 14.4073496}, //
+
8534 {5.14796019, 14.4066}, //
+
8535 {5.14807987, 14.4053402}, //
+
8536 {5.14796019, 14.4035797}, //
+
8537 {5.14758015, 14.4013205}, //
+
8538 {5.14694977, 14.3985596}, //
+
8539 {5.14607, 14.3952904}, //
+
8540 {5.1449399, 14.3915195}, //
+
8541 {5.14354992, 14.3872499}, //
+
8542 {5.14197016, 14.3826399}, //
+
8543 {5.14021015, 14.3778696}, //
+
8544 {5.13828993, 14.3729296}, //
+
8545 {5.13620996, 14.3678198}, //
+
8546 {5.13395023, 14.3625402}, //
+
8547 {5.13152981, 14.35709}, //
+
8548 {5.12894011, 14.3514795}, //
+
8549 {5.12618017, 14.3457003}, //
+
8550 {5.12325001, 14.3397503}, //
+
8551 {5.12248993, 14.3375397}, //
+
8552 {5.12173986, 14.3353996}, //
+
8553 {5.12097979, 14.3333597}, //
+
8554 {5.1202302, 14.3313904}, //
+
8555 {5.11947012, 14.3295097}, //
+
8556 {5.11872005, 14.3277102}, //
+
8557 {5.11795998, 14.3259897}, //
+
8558 {5.11720991, 14.3243504}, //
+
8559 {5.11644983, 14.3227997}, //
+
8560 {5.1157198, 14.3213396}, //
+
8561 {5.1150198, 14.3199701}, //
+
8562 {5.11436987, 14.3186703}, //
+
8563 {5.11375999, 14.3174601}, //
+
8564 {5.11320019, 14.31633}, //
+
8565 {5.11266994, 14.3152905}, //
+
8566 {5.11218977, 14.3143301}, //
+
8567 {5.11135006, 14.3126497}, //
+
8568 {5.11099005, 14.3119202}, //
+
8569 {5.1106801, 14.3112202}, //
+
8570 {5.11041021, 14.3105698}, //
+
8571 {5.11016989, 14.3099604}, //
+
8572 {5.10999012, 14.3093996}, //
+
8573 {5.10983992, 14.3088703}, //
+
8574 {5.10972977, 14.3083897}, //
+
8575 {5.10967016, 14.30795}, //
+
8576 {5.10965014, 14.3075504}, //
+
8577 {5.10965014, 14.30585}, //
+
8578 {5.11135006, 14.30585}, //
+
8579 {5.11171007, 14.3058701}, //
+
8580 {5.11202002, 14.3059301}, //
+
8581 {5.11228991, 14.3060398}, //
+
8582 {5.11253023, 14.3061895}, //
+
8583 {5.11271, 14.3063698}, //
+
8584 {5.1128602, 14.3066101}, //
+
8585 {5.11296988, 14.30688}, //
+
8586 {5.11302996, 14.3071899}, //
+
8587 {5.11304998, 14.3075504}, //
+
8588 {5.11307001, 14.30793}, //
+
8589 {5.11313009, 14.3083096}, //
+
8590 {5.11323977, 14.3086796}, //
+
8591 {5.11338997, 14.3090601}, //
+
8592 {5.11357021, 14.3094397}, //
+
8593 {5.11381006, 14.3098202}, //
+
8594 {5.11407995, 14.3101902}, //
+
8595 {5.1143899, 14.3105698}, //
+
8596 {5.11474991, 14.3109503}, //
+
8597 {5.11510992, 14.3113098}, //
+
8598 {5.11541986, 14.3116198}, //
+
8599 {5.11569023, 14.3118896}, //
+
8600 {5.11626005, 14.3124599}, //
+
8601 {5.1163702, 14.3125696}, //
+
8602 {5.11642981, 14.3126297}, //
+
8603 {5.11644983, 14.3126497}, //
+
8604 {5.11660004, 14.3128796}, //
+
8605 {5.11704016, 14.31357}, //
+
8606 {5.1177702, 14.3147202}, //
+
8607 {5.11879015, 14.31633}, //
+
8608 {5.12011003, 14.3184099}, //
+
8609 {5.12171984, 14.32094}, //
+
8610 {5.12362003, 14.3239298}, //
+
8611 {5.12830019, 14.3312998}, //
+
8612 {5.13105011, 14.3355703}, //
+
8613 {5.13400984, 14.3400898}, //
+
8614 {5.13716984, 14.3448601}, //
+
8615 {5.14055014, 14.3498802}, //
+
8616 {5.14413023, 14.3551502}, //
+
8617 {5.14792013, 14.3606796}, //
+
8618 {5.15191984, 14.3664503}, //
+
8619 {5.15612984, 14.3724804}, //
+
8620 {5.16055012, 14.3787498}, //
+
8621 {5.16500998, 14.3851004}, //
+
8622 {5.16934013, 14.3913202}, //
+
8623 {5.17355013, 14.3974104}, //
+
8624 {5.17762995, 14.4033804}, //
+
8625 {5.18159008, 14.4092197}, //
+
8626 {5.18542004, 14.4149303}, //
+
8627 {5.18911982, 14.4205103}, //
+
8628 {5.19269991, 14.4259701}, //
+
8629 {5.19614983, 14.4313002}, //
+
8630 {5.19948006, 14.43641}, //
+
8631 {5.20268011, 14.4411802}, //
+
8632 {5.20574999, 14.4456196}, //
+
8633 {5.20870018, 14.4497204}, //
+
8634 {5.2115202, 14.4534903}, //
+
8635 {5.21422005, 14.4569197}, //
+
8636 {5.2167902, 14.4600201}, //
+
8637 {5.21923018, 14.46278}, //
+
8638 {5.22154999, 14.4652004}, //
+
8639 {5.22300005, 14.4679298}, //
+
8640 {5.22431993, 14.4700699}, //
+
8641 {5.22552013, 14.4716196}, //
+
8642 {5.22659016, 14.4725904}, //
+
8643 {5.22753, 14.47297}, //
+
8644 {5.22835016, 14.4727602}, //
+
8645 {5.22904015, 14.4719601}, //
+
8646 {5.22960997, 14.4705696}, //
+
8647 {5.23005009, 14.4686003}, //
+
8648 {5.23034, 14.4662399}, //
+
8649 {5.23047018, 14.4636698}, //
+
8650 {5.23043013, 14.4608898}, //
+
8651 {5.23021984, 14.4579}, //
+
8652 {5.2298398, 14.4547005}, //
+
8653 {5.22929001, 14.4512901}, //
+
8654 {5.22858, 14.44767}, //
+
8655 {5.22770023, 14.44384}, //
+
8656 {5.22665024, 14.4398003}, //
+
8657 {5.22550011, 14.4355698}, //
+
8658 {5.22429991, 14.43118}, //
+
8659 {5.22306013, 14.42661}, //
+
8660 {5.22177982, 14.4218798}, //
+
8661 {5.22045994, 14.4169798}, //
+
8662 {5.21908998, 14.4119101}, //
+
8663 {5.21768999, 14.4066801}, //
+
8664 {5.21623993, 14.4012699}, //
+
8665 {5.21474981, 14.3957005}, //
+
8666 {5.21317005, 14.3901596}, //
+
8667 {5.21141005, 14.3848305}, //
+
8668 {5.20948982, 14.3797102}, //
+
8669 {5.20740986, 14.3747902}, //
+
8670 {5.20515013, 14.3700895}, //
+
8671 {5.20273018, 14.3655901}, //
+
8672 {5.20014, 14.3613005}, //
+
8673 {5.19738007, 14.3572197}, //
+
8674 {5.1944499, 14.3533497}, //
+
8675 {5.19234991, 14.3498096}, //
+
8676 {5.1905899, 14.3467398}, //
+
8677 {5.18915987, 14.34412}, //
+
8678 {5.18806982, 14.34196}, //
+
8679 {5.18731022, 14.3402596}, //
+
8680 {5.18689013, 14.3390198}, //
+
8681 {5.18681002, 14.3382397}, //
+
8682 {5.18705988, 14.3379097}, //
+
8683 {5.1876502, 14.3380499}, //
+
8684 {5.18850994, 14.3386202}, //
+
8685 {5.18957996, 14.3395596}, //
+
8686 {5.19085979, 14.3408804}, //
+
8687 {5.1923399, 14.3425703}, //
+
8688 {5.19403982, 14.3446503}, //
+
8689 {5.19594002, 14.3470898}, //
+
8690 {5.19805002, 14.3499203}, //
+
8691 {5.20036983, 14.3531199}, //
+
8692 {5.20289993, 14.3566999}, //
+
8693 {5.2056098, 14.36059}, //
+
8694 {5.20843983, 14.3647404}, //
+
8695 {5.21139002, 14.3691301}, //
+
8696 {5.21447992, 14.3737803}, //
+
8697 {5.21767998, 14.3786802}, //
+
8698 {5.22101021, 14.3838301}, //
+
8699 {5.22447014, 14.3892403}, //
+
8700 {5.22805023, 14.3948898}, //
+
8701 {5.23175001, 14.4007998}, //
+
8702 {5.23555994, 14.4067802}, //
+
8703 {5.23944998, 14.4126797}, //
+
8704 {5.24343014, 14.4184904}, //
+
8705 {5.24748993, 14.4242296}, //
+
8706 {5.25162983, 14.4298801}, //
+
8707 {5.25585985, 14.4354401}, //
+
8708 {5.26016998, 14.4409304}, //
+
8709 {5.26457024, 14.4463301}, //
+
8710 {5.26905012, 14.4516497}, //
+
8711 {5.27195978, 14.4565897}, //
+
8712 {5.2746501, 14.4608603}, //
+
8713 {5.27714014, 14.4644699}, //
+
8714 {5.2794199, 14.4673996}, //
+
8715 {5.28147984, 14.4696598}, //
+
8716 {5.28218985, 14.4702702}, //
+
8717 {5.28312016, 14.4706602}, //
+
8718 {5.28449011, 14.4712896}, //
+
8719 {5.28595018, 14.4720001}, //
+
8720 {5.28665018, 14.4723396}, //
+
8721 {5.28641987, 14.4724197}, //
+
8722 {5.28498983, 14.4721699}, //
+
8723 {5.28333998, 14.4712496}, //
+
8724 {5.28218985, 14.4702702}, //
+
8725 {5.28181982, 14.4701099}, //
+
8726 {5.28061008, 14.4696503}, //
+
8727 {5.27947998, 14.4692698}, //
+
8728 {5.27844, 14.4689798}, //
+
8729 {5.27748013, 14.46877}, //
+
8730 {5.27659988, 14.4686403}, //
+
8731 {5.27580023, 14.4686003}, //
+
8732 {5.27306986, 14.4658699}, //
+
8733 {5.27277994, 14.46558}, //
+
8734 {5.27257013, 14.4653702}, //
+
8735 {5.2723999, 14.4652004}, //
+
8736 {5.27162981, 14.4651403}, //
+
8737 {5.27082014, 14.4649496}, //
+
8738 {5.26996994, 14.4646301}, //
+
8739 {5.26908016, 14.4641895}, //
+
8740 {5.26813984, 14.4636297}, //
+
8741 {5.26715994, 14.4629297}, //
+
8742 {5.26612997, 14.4621096}, //
+
8743 {5.26505995, 14.4611702}, //
+
8744 {5.26394987, 14.4601002}, //
+
8745 {5.26280022, 14.4589596}, //
+
8746 {5.26160002, 14.4577703}, //
+
8747 {5.26036978, 14.4565401}, //
+
8748 {5.25908995, 14.4552698}, //
+
8749 {5.25777006, 14.4539499}, //
+
8750 {5.25642014, 14.45259}, //
+
8751 {5.25502014, 14.45119}, //
+
8752 {5.25358009, 14.4497404}, //
+
8753 {5.25209999, 14.4482498}, //
+
8754 {5.25131989, 14.4467697}, //
+
8755 {5.2505002, 14.4453297}, //
+
8756 {5.24963999, 14.4439297}, //
+
8757 {5.2487402, 14.4425802}, //
+
8758 {5.24779987, 14.4412603}, //
+
8759 {5.24680996, 14.4399796}, //
+
8760 {5.24577999, 14.4387503}, //
+
8761 {5.24470997, 14.4375496}, //
+
8762 {5.24359989, 14.4364004}, //
+
8763 {5.24250984, 14.4353304}, //
+
8764 {5.2414999, 14.4343901}, //
+
8765 {5.24058008, 14.4335699}, //
+
8766 {5.23973989, 14.4328699}, //
+
8767 {5.23897982, 14.4323101}, //
+
8768 {5.23830986, 14.4318705}, //
+
8769 {5.23772001, 14.43155}, //
+
8770 {5.23721981, 14.4313602}, //
+
8771 {5.23680019, 14.4313002}, //
+
8772 {5.23649979, 14.4314299}, //
+
8773 {5.23631001, 14.4317999}, //
+
8774 {5.23625994, 14.4324303}, //
+
8775 {5.23632002, 14.4333096}, //
+
8776 {5.2365098, 14.4344501}, //
+
8777 {5.23682022, 14.4358301}, //
+
8778 {5.23725986, 14.4374704}, //
+
8779 {5.23782015, 14.4393597}, //
+
8780 {5.23850012, 14.4414997}, //
+
8781 {5.2391901, 14.44592}, //
+
8782 {5.23975992, 14.45012}, //
+
8783 {5.24020004, 14.4541197}, //
+
8784 {5.24050999, 14.4579096}, //
+
8785 {5.24069977, 14.4614897}, //
+
8786 {5.24076986, 14.46486}, //
+
8787 {5.24069977, 14.4680099}, //
+
8788 {5.24050999, 14.4709597}, //
+
8789 {5.24020004, 14.4736996}, //
+
8790 {5.23975992, 14.4762297}, //
+
8791 {5.23920012, 14.47855}, //
+
8792 {5.23851013, 14.4806604}, //
+
8793 {5.23768997, 14.4825602}, //
+
8794 {5.23675013, 14.4842596}, //
+
8795 {5.23569012, 14.4857397}, //
+
8796 {5.23449993, 14.4870195}, //
+
8797 {5.23319006, 14.4880896}, //
+
8798 {5.23175001, 14.4889498}, //
+
8799 {5.23092985, 14.4895201}, //
+
8800 {5.22999001, 14.4897099}, //
+
8801 {5.22891998, 14.4895201}, //
+
8802 {5.22771978, 14.4889498}, //
+
8803 {5.2263999, 14.4880104}, //
+
8804 {5.22494984, 14.48668}, //
+
8805 {5.22338009, 14.4849796}, //
+
8806 {5.22168016, 14.4829102}, //
+
8807 {5.21985006, 14.4804497}, //
+
8808 {5.21792984, 14.4777699}, //
+
8809 {5.21591997, 14.4750204}, //
+
8810 {5.21382999, 14.4721699}, //
+
8811 {5.21165991, 14.4692497}, //
+
8812 {5.20940018, 14.4662304}, //
+
8813 {5.20704985, 14.4631395}, //
+
8814 {5.20461988, 14.45996}, //
+
8815 {5.2020998, 14.4567003}, //
+
8816 {5.19950008, 14.4533501}, //
+
8817 {5.19686985, 14.4499397}, //
+
8818 {5.19423008, 14.4464903}, //
+
8819 {5.19158983, 14.4429903}, //
+
8820 {5.18896008, 14.4394598}, //
+
8821 {5.18631983, 14.4358797}, //
+
8822 {5.18368006, 14.4322596}, //
+
8823 {5.18103981, 14.4286003}, //
+
8824 {5.17839003, 14.4249001}, //
+
8825 {5.17574978, 14.4211502}, //
+
8826 {5.17322016, 14.41747}, //
+
8827 {5.17089987, 14.41395}, //
+
8828 {5.16878986, 14.4105997}, //
+
8829 {5.16690016, 14.4074202}, //
+
8830 {5.16520977, 14.4043999}, //
+
8831 {5.16373014, 14.4015503}, //
+
8832 {5.16245985, 14.3988705}, //
+
8833 {5.16139984, 14.3963499}, //
+
8834 {5.16055012, 14.3940001}, //
+
8835 {5.15986013, 14.3926497}, //
+
8836 {5.15928984, 14.3915796}, //
+
8837 {5.15885019, 14.39081}, //
+
8838 {5.15853977, 14.3903303}, //
+
8839 {5.15834999, 14.3901396}, //
+
8840 {5.1582799, 14.3902397}, //
+
8841 {5.15834999, 14.3906403}, //
+
8842 {5.15853977, 14.3913202}, //
+
8843 {5.15885019, 14.3922997}, //
+
8844 {5.15923023, 14.3935604}, //
+
8845 {5.15959978, 14.3950701}, //
+
8846 {5.15997982, 14.3968296}, //
+
8847 {5.16034985, 14.39884}, //
+
8848 {5.16071987, 14.4011002}, //
+
8849 {5.1610899, 14.4036102}, //
+
8850 {5.16145992, 14.4063702}, //
+
8851 {5.16182995, 14.4093904}, //
+
8852 {5.16219997, 14.4126501}, //
+
8853 {5.16264009, 14.4160604}, //
+
8854 {5.16320992, 14.4195099}, //
+
8855 {5.1638999, 14.4230099}, //
+
8856 {5.16472006, 14.4265499}, //
+
8857 {5.1656599, 14.43013}, //
+
8858 {5.16672993, 14.4337597}, //
+
8859 {5.16793013, 14.4374304}, //
+
8860 {5.16925001, 14.4411402}, //
+
8861 {5.17070007, 14.4448996}, //
+
8862 {5.17150021, 14.4516096}, //
+
8863 {5.17237997, 14.4582005}, //
+
8864 {5.17333984, 14.4646702}, //
+
8865 {5.17437983, 14.4709997}, //
+
8866 {5.17550993, 14.47721}, //
+
8867 {5.17672014, 14.4833002}, //
+
8868 {5.17802, 14.4892597}, //
+
8869 {5.17938995, 14.4950895}, //
+
8870 {5.18085003, 14.5008001}, //
+
8871 {5.18228006, 14.5062304}, //
+
8872 {5.18353987, 14.5111904}, //
+
8873 {5.18462992, 14.5156898}, //
+
8874 {5.18555021, 14.5197401}, //
+
8875 {5.18630981, 14.5233202}, //
+
8876 {5.18689013, 14.5264397}, //
+
8877 {5.18731022, 14.52911}, //
+
8878 {5.1875701, 14.5313101}, //
+
8879 {5.1876502, 14.5330496}, //
+
8880 {5.18747997, 14.5351801}, //
+
8881 {5.18697977, 14.5370598}, //
+
8882 {5.18614006, 14.5386896}, //
+
8883 {5.1849699, 14.5400696}, //
+
8884 {5.18346977, 14.5411997}, //
+
8885 {5.18163013, 14.5420704}, //
+
8886 {5.17945004, 14.5426998}, //
+
8887 {5.17693996, 14.5430698}, //
+
8888 {5.17409992, 14.5431995}, //
+
8889 {5.17111015, 14.5431204}, //
+
8890 {5.16815996, 14.54286}, //
+
8891 {5.16524982, 14.5424404}, //
+
8892 {5.16238022, 14.5418596}, //
+
8893 {5.15955019, 14.5410995}, //
+
8894 {5.15677023, 14.5401802}, //
+
8895 {5.15401983, 14.5390902}, //
+
8896 {5.15130997, 14.5378304}, //
+
8897 {5.14865017, 14.5363998}, //
+
8898 {5.14608002, 14.5348196}, //
+
8899 {5.14363003, 14.5330601}, //
+
8900 {5.14131021, 14.5311403}, //
+
8901 {5.13911009, 14.5290604}, //
+
8902 {5.13704014, 14.5268002}, //
+
8903 {5.13508987, 14.5243797}, //
+
8904 {5.13326979, 14.5217896}, //
+
8905 {5.13156986, 14.5190296}, //
+
8906 {5.13000011, 14.5160999}, //
+
8907 {5.12854004, 14.5131197}, //
+
8908 {5.12717009, 14.5102196}, //
+
8909 {5.12587023, 14.50741}, //
+
8910 {5.12466002, 14.5046797}, //
+
8911 {5.12352991, 14.5020399}, //
+
8912 {5.12248993, 14.4994802}, //
+
8913 {5.12153006, 14.4969997}, //
+
8914 {5.12064981, 14.4946098}, //
+
8915 {5.11985016, 14.4923}, //
+
8916 {5.11909008, 14.4899597}, //
+
8917 {5.11834002, 14.4874496}, //
+
8918 {5.11757994, 14.4847803}, //
+
8919 {5.11682987, 14.4819298}, //
+
8920 {5.11606979, 14.47892}, //
+
8921 {5.11532021, 14.4757404}, //
+
8922 {5.11456013, 14.4723997}, //
+
8923 {5.11381006, 14.4688797}, //
+
8924 {5.11304998, 14.4652004}, //
+
8925 {5.11229992, 14.4637003}, //
+
8926 {5.11153984, 14.4622002}, //
+
8927 {5.11078978, 14.4606895}, //
+
8928 {5.11004019, 14.4591904}, //
+
8929 {5.10929012, 14.4576797}, //
+
8930 {5.10854006, 14.4561796}, //
+
8931 {5.10778999, 14.45467}, //
+
8932 {5.10704994, 14.4531603}, //
+
8933 {5.10629988, 14.4516497}, //
+
8934 {5.10556984, 14.4495602}, //
+
8935 {5.10486984, 14.4478102}, //
+
8936 {5.10421991, 14.4463797}, //
+
8937 {5.10361004, 14.4452896}, //
+
8938 {5.10305023, 14.44454}, //
+
8939 {5.10251999, 14.4441204}, //
+
8940 {5.10203981, 14.4440298}, //
+
8941 {5.10160017, 14.4442701}, //
+
8942 {5.1012001, 14.44485}, //
+
8943 {5.10082006, 14.4456701}, //
+
8944 {5.10044003, 14.4466105}, //
+
8945 {5.10007, 14.4476805}, //
+
8946 {5.09968996, 14.4488697}, //
+
8947 {5.09930992, 14.4501896}, //
+
8948 {5.09892988, 14.4516296}, //
+
8949 {5.09855986, 14.4531898}, //
+
8950 {5.09817982, 14.4548798}, //
+
8951 {5.09779978, 14.4567003}, //
+
8952 {5.09743977, 14.4586496}, //
+
8953 {5.09712982, 14.4607296}, //
+
8954 {5.09685993, 14.4629297}, //
+
8955 {5.09662008, 14.4652596}, //
+
8956 {5.09643984, 14.46772}, //
+
8957 {5.09629011, 14.4702997}, //
+
8958 {5.09617996, 14.4730101}, //
+
8959 {5.09611988, 14.4758396}, //
+
8960 {5.09609985, 14.4787998}, //
+
8961 {5.09463978, 14.4832001}, //
+
8962 {5.09326982, 14.48734}, //
+
8963 {5.09196997, 14.49123}, //
+
8964 {5.09076023, 14.4948702}, //
+
8965 {5.08963013, 14.4982595}, //
+
8966 {5.08859015, 14.5014}, //
+
8967 {5.0876298, 14.5042896}, //
+
8968 {5.08675003, 14.5069199}, //
+
8969 {5.0859499, 14.5093002}, //
+
8970 {5.08514977, 14.5115995}, //
+
8971 {5.08427, 14.5139799}, //
+
8972 {5.08331013, 14.5164499}, //
+
8973 {5.08226013, 14.5190001}, //
+
8974 {5.08112001, 14.5216398}, //
+
8975 {5.0799098, 14.5243702}, //
+
8976 {5.07859993, 14.5271797}, //
+
8977 {5.07721996, 14.5300703}, //
+
8978 {5.07574987, 14.5330496}, //
+
8979 {5.07345009, 14.5380297}, //
+
8980 {5.07107019, 14.5439301}, //
+
8981 {5.06861019, 14.5507603}, //
+
8982 {5.06606007, 14.5585003}, //
+
8983 {5.06341982, 14.5671597}, //
+
8984 {5.06070995, 14.5767403}, //
+
8985 {5.05789995, 14.5872402}, //
+
8986 {5.05501986, 14.5986605}, //
+
8987 {5.05205011, 14.6110001}, //
+
8988 {5.05129004, 14.6146803}, //
+
8989 {5.05053997, 14.6182003}, //
+
8990 {5.04977989, 14.6215401}, //
+
8991 {5.04902983, 14.6247196}, //
+
8992 {5.04827023, 14.6277304}, //
+
8993 {5.04752016, 14.6305799}, //
+
8994 {5.04676008, 14.6332502}, //
+
8995 {5.04601002, 14.6357603}, //
+
8996 {5.04524994, 14.6380997}, //
+
8997 {5.0445199, 14.6402798}, //
+
8998 {5.0438199, 14.6422997}, //
+
8999 {5.04316998, 14.6441402}, //
+
9000 {5.0425601, 14.6458197}, //
+
9001 {5.04199982, 14.6473303}, //
+
9002 {5.04147005, 14.6486797}, //
+
9003 {5.04098988, 14.6498499}, //
+
9004 {5.04055023, 14.6508598}, //
+
9005 {5.04015017, 14.6517}, //
+
9006 {5.03977013, 14.6523895}, //
+
9007 {5.03939009, 14.6529598}, //
+
9008 {5.03902006, 14.6534004}, //
+
9009 {5.03864002, 14.6537104}, //
+
9010 {5.03825998, 14.6539001}, //
+
9011 {5.03787994, 14.6539698}, //
+
9012 {5.03750992, 14.6539001}, //
+
9013 {5.03712988, 14.6537104}, //
+
9014 {5.03674984, 14.6534004}, //
+
9015 {5.03635979, 14.6529999}, //
+
9016 {5.03593016, 14.6525602}, //
+
9017 {5.03546, 14.6520796}, //
+
9018 {5.03493977, 14.6515503}, //
+
9019 {5.03377008, 14.6503801}, //
+
9020 {5.03312016, 14.6497297}, //
+
9021 {5.03243017, 14.6490297}, //
+
9022 {5.03170013, 14.6483002}, //
+
9023 {5.03166008, 14.6468801}, //
+
9024 {5.0315299, 14.6456299}, //
+
9025 {5.0313201, 14.6445503}, //
+
9026 {5.03130007, 14.6444902}, //
+
9027 {5.0302701, 14.6443195}, //
+
9028 {5.02905989, 14.6434202}, //
+
9029 {5.02775002, 14.6418104}, //
+
9030 {5.02637005, 14.6394796}, //
+
9031 {5.02489996, 14.6364498}, //
+
9032 {5.0233798, 14.6328897}, //
+
9033 {5.02181005, 14.6289997}, //
+
9034 {5.02020979, 14.6247702}, //
+
9035 {5.01854992, 14.6202097}, //
+
9036 {5.01686001, 14.6153097}, //
+
9037 {5.01512003, 14.6100702}, //
+
9038 {5.01334, 14.6044998}, //
+
9039 {5.01151991, 14.5985899}, //
+
9040 {5.00965023, 14.59235}, //
+
9041 {5.00778008, 14.5858898}, //
+
9042 {5.00595999, 14.5792999}, //
+
9043 {5.00417995, 14.5725803}, //
+
9044 {5.00243998, 14.5657396}, //
+
9045 {5.00075006, 14.5587797}, //
+
9046 {5.00047016, 14.5575895}, //
+
9047 {4.99982977, 14.5552197}, //
+
9048 {4.99720001, 14.5450897}, //
+
9049 {4.99456978, 14.5346298}, //
+
9050 {4.99193001, 14.5238304}, //
+
9051 {4.98929977, 14.5127001}, //
+
9052 {4.9867301, 14.5016499}, //
+
9053 {4.98428011, 14.4911003}, //
+
9054 {4.98195982, 14.48106}, //
+
9055 {4.97976017, 14.4715099}, //
+
9056 {4.97769022, 14.4624701}, //
+
9057 {4.97573996, 14.4539204}, //
+
9058 {4.97391987, 14.4458799}, //
+
9059 {4.9730401, 14.4419498}, //
+
9060 {4.9725399, 14.4405899}, //
+
9061 {4.97177982, 14.4386396}, //
+
9062 {4.97103024, 14.4368296}, //
+
9063 {4.97027016, 14.4351301}, //
+
9064 {4.96952009, 14.4335604}, //
+
9065 {4.96876001, 14.4321203}, //
+
9066 {4.96800995, 14.4308004}, //
+
9067 {4.96724987, 14.4295998}, //
+
9068 {4.96649981, 14.4285002}, //
+
9069 {4.96576023, 14.4274397}, //
+
9070 {4.96501017, 14.4264202}, //
+
9071 {4.9642601, 14.4254398}, //
+
9072 {4.96351004, 14.4245005}, //
+
9073 {4.96275997, 14.4236002}, //
+
9074 {4.96200991, 14.42274}, //
+
9075 {4.96124983, 14.4219303}, //
+
9076 {4.96049976, 14.4211502}, //
+
9077 {4.9589901, 14.4203501}, //
+
9078 {4.95747995, 14.4194698}, //
+
9079 {4.95596981, 14.4185104}, //
+
9080 {4.95446014, 14.4174604}, //
+
9081 {4.95293999, 14.4163198}, //
+
9082 {4.95142984, 14.4151096}, //
+
9083 {4.94992018, 14.4138002}, //
+
9084 {4.94841003, 14.4124203}, //
+
9085 {4.94689989, 14.4109497}, //
+
9086 {4.94532013, 14.4093199}, //
+
9087 {4.94356012, 14.4074497}, //
+
9088 {4.9416399, 14.4053202}, //
+
9089 {4.93955994, 14.4029398}, //
+
9090 {4.93730021, 14.4003}, //
+
9091 {4.93487978, 14.3974199}, //
+
9092 {4.93229008, 14.3942804}, //
+
9093 {4.92953014, 14.3908901}, //
+
9094 {4.92659998, 14.3872499}, //
+
9095 {4.92230988, 14.3822403}, //
+
9096 {4.91883993, 14.3781996}, //
+
9097 {4.91787004, 14.3777599}, //
+
9098 {4.91639996, 14.3770504}, //
+
9099 {4.91575003, 14.3771801}, //
+
9100 {4.91530991, 14.3775501}, //
+
9101 {4.91508007, 14.3781796}, //
+
9102 {4.91506004, 14.3790503}, //
+
9103 {4.91524982, 14.3801804}, //
+
9104 {4.91563988, 14.3815603}, //
+
9105 {4.91625023, 14.3831902}, //
+
9106 {4.91706991, 14.3850698}, //
+
9107 {4.91809988, 14.3872004}, //
+
9108 {4.91920996, 14.3895102}, //
+
9109 {4.92027998, 14.3919001}, //
+
9110 {4.92130995, 14.3943701}, //
+
9111 {4.92229986, 14.3969297}, //
+
9112 {4.92324018, 14.3995705}, //
+
9113 {4.92413998, 14.4022903}, //
+
9114 {4.92500019, 14.4050903}, //
+
9115 {4.92581987, 14.40798}, //
+
9116 {4.92659998, 14.4109497}, //
+
9117 {4.92883015, 14.4170504}, //
+
9118 {4.9310298, 14.4232702}, //
+
9119 {4.93317986, 14.4296103}, //
+
9120 {4.93528986, 14.43608}, //
+
9121 {4.9373498, 14.4426804}, //
+
9122 {4.93938017, 14.4493904}, //
+
9123 {4.94136, 14.4562397}, //
+
9124 {4.94329977, 14.4632101}, //
+
9125 {4.94519997, 14.4702997}, //
+
9126 {4.94703007, 14.4773502}, //
+
9127 {4.94872999, 14.48419}, //
+
9128 {4.95030022, 14.4908304}, //
+
9129 {4.9517498, 14.4972496}, //
+
9130 {4.95307016, 14.5034704}, //
+
9131 {4.95426989, 14.5094805}, //
+
9132 {4.95533991, 14.5152798}, //
+
9133 {4.95628023, 14.5208702}, //
+
9134 {4.95709991, 14.5262499}, //
+
9135 {4.95707989, 14.5297899}, //
+
9136 {4.95701981, 14.5328598}, //
+
9137 {4.95691013, 14.5354795}, //
+
9138 {4.95675993, 14.5376301}, //
+
9139 {4.95658016, 14.5393295}, //
+
9140 {4.95633984, 14.5405598}, //
+
9141 {4.95606995, 14.5413303}, //
+
9142 {4.95576, 14.5416498}, //
+
9143 {4.95539999, 14.5415001}, //
+
9144 {4.95499992, 14.5410004}, //
+
9145 {4.9545598, 14.5402403}, //
+
9146 {4.9540801, 14.5392399}, //
+
9147 {4.95354986, 14.5379801}, //
+
9148 {4.95299006, 14.5364799}, //
+
9149 {4.95238018, 14.5347204}, //
+
9150 {4.95172977, 14.5327196}, //
+
9151 {4.95102978, 14.5304604}, //
+
9152 {4.95030022, 14.5279503}, //
+
9153 {4.94954014, 14.5252504}, //
+
9154 {4.94879007, 14.5224304}, //
+
9155 {4.94802999, 14.5194798}, //
+
9156 {4.94727993, 14.5164003}, //
+
9157 {4.94651985, 14.5131903}, //
+
9158 {4.94576979, 14.50986}, //
+
9159 {4.94501019, 14.5064001}, //
+
9160 {4.94426012, 14.5028095}, //
+
9161 {4.94350004, 14.4990997}, //
+
9162 {4.94341993, 14.4986601}, //
+
9163 {4.94347, 14.4994097}, //
+
9164 {4.94353008, 14.5009804}, //
+
9165 {4.94355011, 14.5024996}, //
+
9166 {4.94355011, 14.5042}, //
+
9167 {4.94347, 14.5021801}, //
+
9168 {4.94321012, 14.4998598}, //
+
9169 {4.94279003, 14.4972401}, //
+
9170 {4.9422102, 14.4943399}, //
+
9171 {4.94145012, 14.4911404}, //
+
9172 {4.94052982, 14.4876404}, //
+
9173 {4.93943977, 14.48386}, //
+
9174 {4.93817997, 14.4797802}, //
+
9175 {4.93674994, 14.4754}, //
+
9176 {4.93374014, 14.4600801}, //
+
9177 {4.93209982, 14.4522696}, //
+
9178 {4.93165016, 14.4516497}, //
+
9179 {4.93049002, 14.4501495}, //
+
9180 {4.92924023, 14.4486504}, //
+
9181 {4.92789984, 14.4471397}, //
+
9182 {4.92647982, 14.4456396}, //
+
9183 {4.92497015, 14.4441299}, //
+
9184 {4.9233799, 14.4426298}, //
+
9185 {4.92171001, 14.4411201}, //
+
9186 {4.91995001, 14.4396095}, //
+
9187 {4.91809988, 14.4380999}, //
+
9188 {4.91625977, 14.4366302}, //
+
9189 {4.91450977, 14.4352503}, //
+
9190 {4.91283989, 14.4339399}, //
+
9191 {4.91125011, 14.4327297}, //
+
9192 {4.90974998, 14.4315901}, //
+
9193 {4.90831995, 14.4305401}, //
+
9194 {4.90698004, 14.4295797}, //
+
9195 {4.90572023, 14.4287004}, //
+
9196 {4.90455008, 14.4279003}, //
+
9197 {4.90348005, 14.4272003}, //
+
9198 {4.90254021, 14.4265804}, //
+
9199 {4.90172005, 14.4260397}, //
+
9200 {4.90102005, 14.42558}, //
+
9201 {4.90045977, 14.42521}, //
+
9202 {4.90002012, 14.4249201}, //
+
9203 {4.89970016, 14.4247198}, //
+
9204 {4.89950991, 14.4245901}, //
+
9205 {4.89944983, 14.4245501}, //
+
9206 {4.89970016, 14.4256401}, //
+
9207 {4.90002012, 14.4269896}, //
+
9208 {4.90045977, 14.4288998}, //
+
9209 {4.90102005, 14.4313402}, //
+
9210 {4.90172005, 14.43433}, //
+
9211 {4.90254021, 14.4378595}, //
+
9212 {4.90348005, 14.4419298}, //
+
9213 {4.90455008, 14.4465504}, //
+
9214 {4.90570021, 14.4515305}, //
+
9215 {4.90689993, 14.4566803}, //
+
9216 {4.90813017, 14.4619999}, //
+
9217 {4.90941, 14.4674797}, //
+
9218 {4.91072989, 14.4731302}, //
+
9219 {4.91207981, 14.4789495}, //
+
9220 {4.9134798, 14.48493}, //
+
9221 {4.91491985, 14.4910803}, //
+
9222 {4.91639996, 14.4974003}, //
+
9223 {4.91787004, 14.5037498}, //
+
9224 {4.91925001, 14.5099697}, //
+
9225 {4.92054987, 14.5160599}, //
+
9226 {4.92176008, 14.5220299}, //
+
9227 {4.92289019, 14.5278702}, //
+
9228 {4.92393017, 14.5335798}, //
+
9229 {4.92489004, 14.5391598}, //
+
9230 {4.92575979, 14.5446196}, //
+
9231 {4.92654991, 14.5499496}, //
+
9232 {4.92725992, 14.5549803}, //
+
9233 {4.92788982, 14.5594997}, //
+
9234 {4.92844009, 14.5635204}, //
+
9235 {4.92889977, 14.5670404}, //
+
9236 {4.9292798, 14.5700598}, //
+
9237 {4.9295702, 14.5725698}, //
+
9238 {4.92978001, 14.5745802}, //
+
9239 {4.92991018, 14.5760899}, //
+
9240 {4.92995024, 14.5770998}, //
+
9241 {4.92991018, 14.57798}, //
+
9242 {4.92978001, 14.5791101}, //
+
9243 {4.9295702, 14.5804901}, //
+
9244 {4.9292798, 14.5821304}, //
+
9245 {4.92889977, 14.5840101}, //
+
9246 {4.92844009, 14.5861397}, //
+
9247 {4.92788982, 14.5885296}, //
+
9248 {4.92725992, 14.5911598}, //
+
9249 {4.92654991, 14.5940504}, //
+
9250 {4.92575979, 14.5971098}, //
+
9251 {4.92489004, 14.6002598}, //
+
9252 {4.92393017, 14.6034899}, //
+
9253 {4.92289019, 14.6068001}, //
+
9254 {4.92176008, 14.6101999}, //
+
9255 {4.92054987, 14.6136703}, //
+
9256 {4.91925001, 14.6172304}, //
+
9257 {4.91787004, 14.6208696}, //
+
9258 {4.91639996, 14.6246004}, //
+
9259 {4.91491985, 14.6320295}, //
+
9260 {4.9134798, 14.6392498}, //
+
9261 {4.91207981, 14.6462603}, //
+
9262 {4.91072989, 14.6530504}, //
+
9263 {4.90941, 14.6596403}, //
+
9264 {4.90813017, 14.6660204}, //
+
9265 {4.90689993, 14.6721897}, //
+
9266 {4.90570021, 14.6781502}, //
+
9267 {4.90455008, 14.6838999}, //
+
9268 {4.90344, 14.6893301}, //
+
9269 {4.90236998, 14.6942902}, //
+
9270 {4.90134001, 14.6987896}, //
+
9271 {4.90035009, 14.7028399}, //
+
9272 {4.89940977, 14.7064199}, //
+
9273 {4.89850998, 14.7095404}, //
+
9274 {4.89764977, 14.7122097}, //
+
9275 {4.89683008, 14.7144098}, //
+
9276 {4.89604998, 14.7161503}, //
+
9277 {4.89435005, 14.7161503}, //
+
9278 {4.89394999, 14.7161102}, //
+
9279 {4.89350986, 14.7159796}, //
+
9280 {4.89303017, 14.7157698}, //
+
9281 {4.89249992, 14.7154799}, //
+
9282 {4.89194012, 14.7151003}, //
+
9283 {4.89132977, 14.7146397}, //
+
9284 {4.89067984, 14.7140903}, //
+
9285 {4.88997984, 14.71346}, //
+
9286 {4.8892498, 14.7127504}, //
+
9287 {4.88852978, 14.7119904}, //
+
9288 {4.88783979, 14.7112398}, //
+
9289 {4.88719988, 14.7104797}, //
+
9290 {4.88660002, 14.7097301}, //
+
9291 {4.88604021, 14.7089701}, //
+
9292 {4.88551998, 14.7082195}, //
+
9293 {4.88503981, 14.7074604}, //
+
9294 {4.88460016, 14.7067099}, //
+
9295 {4.8842001, 14.7059498}, //
+
9296 {4.88384008, 14.7051897}, //
+
9297 {4.88353014, 14.7044401}, //
+
9298 {4.88325977, 14.70368}, //
+
9299 {4.88301992, 14.7029305}, //
+
9300 {4.88284016, 14.7021704}, //
+
9301 {4.88268995, 14.7014198}, //
+
9302 {4.8825798, 14.7006598}, //
+
9303 {4.8825202, 14.6999102}, //
+
9304 {4.88250017, 14.6991501}, //
+
9305 {4.88250017, 14.6957998}, //
+
9306 {4.87846994, 14.7011299}, //
+
9307 {4.87739992, 14.7025499}, //
+
9308 {4.8762598, 14.7040796}, //
+
9309 {4.8750701, 14.7056503}, //
+
9310 {4.87383986, 14.7072697}, //
+
9311 {4.87257004, 14.7089195}, //
+
9312 {4.87125015, 14.7106104}, //
+
9313 {4.86989021, 14.7123499}, //
+
9314 {4.86849022, 14.7141304}, //
+
9315 {4.86780024, 14.7149897}, //
+
9316 {4.86724997, 14.7160997}, //
+
9317 {4.86611986, 14.7182999}, //
+
9318 {4.86498022, 14.7203798}, //
+
9319 {4.86385012, 14.7223301}, //
+
9320 {4.86272001, 14.7241497}, //
+
9321 {4.8615799, 14.7258396}, //
+
9322 {4.86044979, 14.7274103}, //
+
9323 {4.85932016, 14.7288504}, //
+
9324 {4.85818005, 14.7301598}, //
+
9325 {4.85704994, 14.7313499}, //
+
9326 {4.85594988, 14.7322102}, //
+
9327 {4.85488987, 14.7325296}, //
+
9328 {4.85469007, 14.73248}, //
+
9329 {4.85500002, 14.7320204}, //
+
9330 {4.85651016, 14.7298698}, //
+
9331 {4.85800982, 14.7277498}, //
+
9332 {4.85951996, 14.7256804}, //
+
9333 {4.86102009, 14.72365}, //
+
9334 {4.86253023, 14.7216597}, //
+
9335 {4.8640399, 14.7197104}, //
+
9336 {4.86555004, 14.7178001}, //
+
9337 {4.86704016, 14.7159405}, //
+
9338 {4.86780024, 14.7149897}, //
+
9339 {4.86836004, 14.7138395}, //
+
9340 {4.86943007, 14.7115898}, //
+
9341 {4.87046003, 14.7093296}, //
+
9342 {4.87143993, 14.7070799}, //
+
9343 {4.87237978, 14.7048197}, //
+
9344 {4.87327003, 14.70257}, //
+
9345 {4.87412024, 14.7003098}, //
+
9346 {4.8749299, 14.69806}, //
+
9347 {4.8757, 14.6957998}, //
+
9348 {4.87641001, 14.6943302}, //
+
9349 {4.87703991, 14.6929502}, //
+
9350 {4.87759018, 14.6916399}, //
+
9351 {4.87804985, 14.6904297}, //
+
9352 {4.87842989, 14.68929}, //
+
9353 {4.87871981, 14.6882401}, //
+
9354 {4.87893009, 14.6872797}, //
+
9355 {4.87905979, 14.6864004}, //
+
9356 {4.87909985, 14.6856003}, //
+
9357 {4.87982988, 14.6849098}, //
+
9358 {4.88052988, 14.6843395}, //
+
9359 {4.88117981, 14.6838999}, //
+
9360 {4.88179016, 14.6835899}, //
+
9361 {4.88234997, 14.6834002}, //
+
9362 {4.88288021, 14.6833296}, //
+
9363 {4.88335991, 14.6834002}, //
+
9364 {4.88380003, 14.6835899}, //
+
9365 {4.8842001, 14.6838999}, //
+
9366 {4.88458014, 14.6843204}, //
+
9367 {4.88496017, 14.6848202}, //
+
9368 {4.8853302, 14.6854095}, //
+
9369 {4.88570976, 14.68608}, //
+
9370 {4.8860898, 14.6868401}, //
+
9371 {4.88646984, 14.6876802}, //
+
9372 {4.88683987, 14.6885996}, //
+
9373 {4.88721991, 14.6896095}, //
+
9374 {4.88759995, 14.6906996}, //
+
9375 {4.88795996, 14.6918097}, //
+
9376 {4.8882699, 14.6928797}, //
+
9377 {4.88853979, 14.6939096}, //
+
9378 {4.88878012, 14.69489}, //
+
9379 {4.88895988, 14.6958303}, //
+
9380 {4.88911009, 14.6967201}, //
+
9381 {4.88922024, 14.6975698}, //
+
9382 {4.88927984, 14.6983805}, //
+
9383 {4.88929987, 14.6991501}, //
+
9384 {4.89004993, 14.7013302}, //
+
9385 {4.89078999, 14.7033501}, //
+
9386 {4.89154005, 14.7051897}, //
+
9387 {4.89229012, 14.7068701}, //
+
9388 {4.89304018, 14.7083797}, //
+
9389 {4.89378977, 14.7097301}, //
+
9390 {4.89453983, 14.7109003}, //
+
9391 {4.89529991, 14.7119102}, //
+
9392 {4.89604998, 14.7127504}, //
+
9393 {4.89607, 14.7133799}, //
+
9394 {4.89613008, 14.7137604}, //
+
9395 {4.89624023, 14.7138796}, //
+
9396 {4.89638996, 14.7137604}, //
+
9397 {4.89657021, 14.7133799}, //
+
9398 {4.89681005, 14.7127504}, //
+
9399 {4.89707994, 14.7118702}, //
+
9400 {4.89738989, 14.7107401}, //
+
9401 {4.8977499, 14.7093496}, //
+
9402 {4.89812994, 14.7077799}, //
+
9403 {4.89850998, 14.7060804}, //
+
9404 {4.89888, 14.7042599}, //
+
9405 {4.89926004, 14.7023096}, //
+
9406 {4.89964008, 14.7002401}, //
+
9407 {4.90002012, 14.69804}, //
+
9408 {4.90039015, 14.6957197}, //
+
9409 {4.90077019, 14.6932697}, //
+
9410 {4.90115023, 14.6906996}, //
+
9411 {4.90152979, 14.6880503}, //
+
9412 {4.90190983, 14.6853504}, //
+
9413 {4.90227985, 14.6826096}, //
+
9414 {4.90265989, 14.6798201}, //
+
9415 {4.90303993, 14.6769896}, //
+
9416 {4.90341997, 14.6741199}, //
+
9417 {4.90379, 14.6712103}, //
+
9418 {4.90417004, 14.6682501}, //
+
9419 {4.90455008, 14.6652498}, //
+
9420 {4.90491009, 14.6622801}, //
+
9421 {4.90522003, 14.6594}, //
+
9422 {4.90548992, 14.6565905}, //
+
9423 {4.90572977, 14.6538801}, //
+
9424 {4.90591002, 14.6512403}, //
+
9425 {4.90606022, 14.6486902}, //
+
9426 {4.90616989, 14.6462297}, //
+
9427 {4.90622997, 14.6438503}, //
+
9428 {4.90625, 14.6415501}, //
+
9429 {4.90633011, 14.6363096}, //
+
9430 {4.90657997, 14.6311598}, //
+
9431 {4.90700006, 14.62609}, //
+
9432 {4.9075799, 14.62111}, //
+
9433 {4.90832996, 14.61621}, //
+
9434 {4.90924978, 14.6113901}, //
+
9435 {4.91032982, 14.6066599}, //
+
9436 {4.91158009, 14.6020098}, //
+
9437 {4.91300011, 14.5974503}, //
+
9438 {4.91518021, 14.59373}, //
+
9439 {4.91720009, 14.5900803}, //
+
9440 {4.9190402, 14.5865297}, //
+
9441 {4.9207201, 14.5830498}, //
+
9442 {4.92222977, 14.57967}, //
+
9443 {4.92358017, 14.5763597}, //
+
9444 {4.92474985, 14.5731401}, //
+
9445 {4.92575979, 14.5699997}, //
+
9446 {4.92659998, 14.5669498}, //
+
9447 {4.92649984, 14.5633297}, //
+
9448 {4.92617989, 14.5600004}, //
+
9449 {4.92566013, 14.5569696}, //
+
9450 {4.92492008, 14.5542202}, //
+
9451 {4.92398024, 14.5517702}, //
+
9452 {4.92282009, 14.5496197}, //
+
9453 {4.92146015, 14.5477505}, //
+
9454 {4.91987991, 14.5461798}, //
+
9455 {4.91809988, 14.5448999}, //
+
9456 {4.91616011, 14.5437498}, //
+
9457 {4.91409016, 14.5425501}, //
+
9458 {4.91189003, 14.5413198}, //
+
9459 {4.90957022, 14.54004}, //
+
9460 {4.90712023, 14.5387201}, //
+
9461 {4.90454006, 14.5373697}, //
+
9462 {4.90184021, 14.5359697}, //
+
9463 {4.89901018, 14.5345297}, //
+
9464 {4.89801979, 14.5340405}, //
+
9465 {4.88250017, 14.3973999}, //
+
9466 {4.88262987, 14.3975}, //
+
9467 {4.8829999, 14.3978205}, //
+
9468 {4.8836298, 14.3983402}, //
+
9469 {4.88450003, 14.3990698}, //
+
9470 {4.88563013, 14.4000101}, //
+
9471 {4.8870101, 14.4011602}, //
+
9472 {4.88863993, 14.4025097}, //
+
9473 {4.8905201, 14.4040804}, //
+
9474 {4.89265013, 14.4058504}, //
+
9475 {4.89495993, 14.4077997}, //
+
9476 {4.89734983, 14.4098797}, //
+
9477 {4.89981985, 14.4120798}, //
+
9478 {4.90237999, 14.4144001}, //
+
9479 {4.90502024, 14.4168501}, //
+
9480 {4.90774012, 14.4194298}, //
+
9481 {4.9105401, 14.4221296}, //
+
9482 {4.91343021, 14.4249496}, //
+
9483 {4.91639996, 14.4279003}, //
+
9484 {4.91933012, 14.4310102}, //
+
9485 {4.92209005, 14.4342804}, //
+
9486 {4.92468023, 14.4377203}, //
+
9487 {4.9271102, 14.4413204}, //
+
9488 {4.92936993, 14.4450903}, //
+
9489 {4.9313798, 14.4488697}, //
+
9490 {4.93072987, 14.4457598}, //
+
9491 {4.92772007, 14.4324503}, //
+
9492 {4.9247098, 14.4201403}, //
+
9493 {4.92168999, 14.4088402}, //
+
9494 {4.91868019, 14.39853}, //
+
9495 {4.91566992, 14.3892403}, //
+
9496 {4.91266012, 14.3809404}, //
+
9497 {4.90964985, 14.3736496}, //
+
9498 {4.90823984, 14.3708296}, //
+
9499 {4.90705013, 14.3683796}, //
+
9500 {4.90606022, 14.3663101}, //
+
9501 {4.90528011, 14.3646202}, //
+
9502 {4.90471983, 14.3633003}, //
+
9503 {4.90435982, 14.36236}, //
+
9504 {4.90421009, 14.3618002}, //
+
9505 {4.90428019, 14.3616104}, //
+
9506 {4.90455008, 14.3618002}, //
+
9507 {4.90515995, 14.3624496}, //
+
9508 {4.90622997, 14.3636398}, //
+
9509 {4.90776014, 14.3653803}, //
+
9510 {4.90974998, 14.3676701}, //
+
9511 {4.91219997, 14.3704901}, //
+
9512 {4.91511011, 14.3738699}, //
+
9513 {4.91847992, 14.37778}, //
+
9514 {4.91883993, 14.3781996}, //
+
9515 {4.91925001, 14.3783903}, //
+
9516 {4.92055988, 14.3789396}, //
+
9517 {4.9217701, 14.3794003}, //
+
9518 {4.92291021, 14.3797798}, //
+
9519 {4.92396021, 14.3800697}, //
+
9520 {4.92492008, 14.3802795}, //
+
9521 {4.92579985, 14.3804102}, //
+
9522 {4.92659998, 14.3804502}, //
+
9523 {4.92812014, 14.3805103}, //
+
9524 {4.92967987, 14.3807001}, //
+
9525 {4.93129015, 14.3810196}, //
+
9526 {4.93294001, 14.3814602}, //
+
9527 {4.9346199, 14.38202}, //
+
9528 {4.93635988, 14.38272}, //
+
9529 {4.9381299, 14.3835402}, //
+
9530 {4.93993998, 14.3844805}, //
+
9531 {4.94180012, 14.3855495}, //
+
9532 {4.94368982, 14.3867502}, //
+
9533 {4.94558001, 14.3880701}, //
+
9534 {4.94746017, 14.3895102}, //
+
9535 {4.94934988, 14.3910799}, //
+
9536 {4.95123005, 14.3927803}, //
+
9537 {4.95311022, 14.3945904}, //
+
9538 {4.95498991, 14.3965397}, //
+
9539 {4.95687008, 14.3986101}, //
+
9540 {4.95874977, 14.4007998}, //
+
9541 {4.96057987, 14.4031801}, //
+
9542 {4.9622798, 14.4058104}, //
+
9543 {4.96385002, 14.4087}, //
+
9544 {4.96530008, 14.4118404}, //
+
9545 {4.96661997, 14.4152298}, //
+
9546 {4.96782017, 14.41887}, //
+
9547 {4.96889019, 14.42276}, //
+
9548 {4.96983004, 14.4268999}, //
+
9549 {4.9706502, 14.4313002}, //
+
9550 {4.97221994, 14.4383402}, //
+
9551 {4.9730401, 14.4419498}, //
+
9552 {4.97328997, 14.4426603}, //
+
9553 {4.97405005, 14.44485}, //
+
9554 {4.97485018, 14.4473305}, //
+
9555 {4.97572994, 14.4502201}, //
+
9556 {4.97668982, 14.4535303}, //
+
9557 {4.9777298, 14.4572496}, //
+
9558 {4.9788599, 14.4614}, //
+
9559 {4.98007011, 14.4659595}, //
+
9560 {4.98136997, 14.4709396}, //
+
9561 {4.98273993, 14.4763403}, //
+
9562 {4.9842, 14.4821501}, //
+
9563 {4.98500013, 14.4867601}, //
+
9564 {4.9858799, 14.4915304}, //
+
9565 {4.98683977, 14.4964705}, //
+
9566 {4.98788977, 14.5015802}, //
+
9567 {4.98902988, 14.5068598}, //
+
9568 {4.9902401, 14.51231}, //
+
9569 {4.99154997, 14.5179195}, //
+
9570 {4.99292994, 14.5236998}, //
+
9571 {4.99440002, 14.5296497}, //
+
9572 {4.99592018, 14.5371199}, //
+
9573 {4.99748993, 14.5444603}, //
+
9574 {4.99909019, 14.5516796}, //
+
9575 {5.00047016, 14.5575895}, //
+
9576 {5.00247002, 14.5650196}, //
+
9577 {5.00509977, 14.5744801}, //
+
9578 {5.00773001, 14.5836}, //
+
9579 {5.01036978, 14.5923901}, //
+
9580 {5.01300001, 14.6008501}, //
+
9581 {5.01554012, 14.6087198}, //
+
9582 {5.01786995, 14.6157503}, //
+
9583 {5.01998997, 14.6219501}, //
+
9584 {5.02190018, 14.6273098}, //
+
9585 {5.0236001, 14.6318302}, //
+
9586 {5.02509022, 14.63552}, //
+
9587 {5.02637005, 14.63836}, //
+
9588 {5.02744007, 14.6403799}, //
+
9589 {5.02829981, 14.6415501}, //
+
9590 {5.02900982, 14.6416302}, //
+
9591 {5.0296402, 14.64188}, //
+
9592 {5.03018999, 14.6422997}, //
+
9593 {5.03065014, 14.6428804}, //
+
9594 {5.03103018, 14.64363}, //
+
9595 {5.03130007, 14.6444902}, //
+
9596 {5.03141022, 14.6445103}, //
+
9597 {5.03246021, 14.64398}, //
+
9598 {5.03342009, 14.6427498}, //
+
9599 {5.03429985, 14.64081}, //
+
9600 {5.03509998, 14.6381502}, //
+
9601 {5.03731012, 14.6328697}, //
+
9602 {5.03944016, 14.6275902}, //
+
9603 {5.04149008, 14.6223202}, //
+
9604 {5.04344988, 14.6170397}, //
+
9605 {5.04533005, 14.6117601}, //
+
9606 {5.04712009, 14.6064796}, //
+
9607 {5.04883003, 14.6012096}, //
+
9608 {5.05045986, 14.5959301}, //
+
9609 {5.05200005, 14.5906496}, //
+
9610 {5.05351019, 14.5854197}, //
+
9611 {5.05501986, 14.5802803}, //
+
9612 {5.05653, 14.5752201}, //
+
9613 {5.05804014, 14.5702496}, //
+
9614 {5.05955982, 14.5653496}, //
+
9615 {5.06106997, 14.5605402}, //
+
9616 {5.06258011, 14.55581}, //
+
9617 {5.06408978, 14.5511599}, //
+
9618 {5.06559992, 14.5466003}, //
+
9619 {5.06640005, 14.5436697}, //
+
9620 {5.06727982, 14.5409098}, //
+
9621 {5.06824017, 14.5383196}, //
+
9622 {5.06922007, 14.5360403}, //
+
9623 {5.06838989, 14.5362997}, //
+
9624 {5.06729984, 14.5363998}, //
+
9625 {5.06610012, 14.5362701}, //
+
9626 {5.06478024, 14.5359001}, //
+
9627 {5.06334019, 14.5352697}, //
+
9628 {5.06176996, 14.5344}, //
+
9629 {5.06007004, 14.5332699}, //
+
9630 {5.05825996, 14.5318899}, //
+
9631 {5.05631018, 14.5302601}, //
+
9632 {5.05424023, 14.5283804}, //
+
9633 {5.05205011, 14.5262499}, //
+
9634 {5.04979992, 14.5232201}, //
+
9635 {5.04759979, 14.5201397}, //
+
9636 {5.0454402, 14.5170202}, //
+
9637 {5.04332018, 14.5138597}, //
+
9638 {5.04124022, 14.5106497}, //
+
9639 {5.03920984, 14.50741}, //
+
9640 {5.03720999, 14.5041103}, //
+
9641 {5.0352602, 14.5007801}, //
+
9642 {5.03334999, 14.4974003}, //
+
9643 {5.03148985, 14.49403}, //
+
9644 {5.02967978, 14.4907103}, //
+
9645 {5.02791023, 14.4874201}, //
+
9646 {5.02616978, 14.4841805}, //
+
9647 {5.02448988, 14.4809799}, //
+
9648 {5.02284002, 14.4778204}, //
+
9649 {5.02123022, 14.4747105}, //
+
9650 {5.01967001, 14.4716301}, //
+
9651 {5.01814985, 14.4686003}, //
+
9652 {5.0152998, 14.4657602}, //
+
9653 {5.01278019, 14.4632502}, //
+
9654 {5.01059008, 14.4610701}, //
+
9655 {5.00874996, 14.4592304}, //
+
9656 {5.00723982, 14.4577303}, //
+
9657 {5.00606012, 14.4565601}, //
+
9658 {5.00454998, 14.4550505}, //
+
9659 {5.00472021, 14.4553404}, //
+
9660 {5.00521994, 14.4562197}, //
+
9661 {5.00606012, 14.4576902}, //
+
9662 {5.00723982, 14.4597397}, //
+
9663 {5.00874996, 14.4623804}, //
+
9664 {5.01059008, 14.4656096}, //
+
9665 {5.01278019, 14.4694204}, //
+
9666 {5.0152998, 14.4738197}, //
+
9667 {5.01814985, 14.4787998}, //
+
9668 {5.02033997, 14.4848604}, //
+
9669 {5.02240992, 14.4910097}, //
+
9670 {5.02435017, 14.4972401}, //
+
9671 {5.02615976, 14.5035601}, //
+
9672 {5.02785015, 14.5099602}, //
+
9673 {5.0294199, 14.5164404}, //
+
9674 {5.03084993, 14.5230103}, //
+
9675 {5.03215981, 14.5296602}, //
+
9676 {5.03334999, 14.5363998}, //
+
9677 {5.03439999, 14.5429201}, //
+
9678 {5.03528023, 14.5488901}, //
+
9679 {5.03599024, 14.5543098}, //
+
9680 {5.03654003, 14.5591898}, //
+
9681 {5.03692007, 14.5635204}, //
+
9682 {5.03712988, 14.5673103}, //
+
9683 {5.03716993, 14.57055}, //
+
9684 {5.03704023, 14.5732498}, //
+
9685 {5.03674984, 14.5754004}, //
+
9686 {5.03628016, 14.5768099}, //
+
9687 {5.03559017, 14.5772495}, //
+
9688 {5.03469992, 14.5767298}, //
+
9689 {5.03358984, 14.5752497}, //
+
9690 {5.03227997, 14.5728102}, //
+
9691 {5.0307498, 14.5693998}, //
+
9692 {5.02900982, 14.5650301}, //
+
9693 {5.02706003, 14.5597}, //
+
9694 {5.02489996, 14.5534}, //
+
9695 {5.02042007, 14.5431805}, //
+
9696 {5.01601982, 14.5321302}, //
+
9697 {5.01171017, 14.5202303}, //
+
9698 {5.00748014, 14.5074997}, //
+
9699 {5.00333977, 14.4939404}, //
+
9700 {4.99927998, 14.4795303}, //
+
9701 {4.99529982, 14.4642897}, //
+
9702 {4.99140978, 14.4482098}, //
+
9703 {4.98759985, 14.4313002}, //
+
9704 {4.98534012, 14.4216204}, //
+
9705 {4.98308992, 14.4121399}, //
+
9706 {4.98083019, 14.4028702}, //
+
9707 {4.97856998, 14.3938103}, //
+
9708 {4.97630978, 14.3849602}, //
+
9709 {4.97404003, 14.3763199}, //
+
9710 {4.97177982, 14.3678904}, //
+
9711 {4.96952009, 14.3596697}, //
+
9712 {4.96724987, 14.3516502}, //
+
9713 {4.96504021, 14.3440504}, //
+
9714 {4.96290016, 14.33708}, //
+
9715 {4.96085978, 14.33074}, //
+
9716 {4.95888996, 14.3250198}, //
+
9717 {4.95700979, 14.3199301}, //
+
9718 {4.95521021, 14.3154697}, //
+
9719 {4.95348978, 14.3116398}, //
+
9720 {4.95184994, 14.3084297}, //
+
9721 {4.95030022, 14.30585}, //
+
9722 {4.94804001, 14.3020802}, //
+
9723 {4.94578981, 14.2983198}, //
+
9724 {4.94353008, 14.2945499}, //
+
9725 {4.94126987, 14.2907801}, //
+
9726 {4.93901014, 14.2870197}, //
+
9727 {4.93673992, 14.2832499}, //
+
9728 {4.93448019, 14.27948}, //
+
9729 {4.93221998, 14.2757196}, //
+
9730 {4.92995024, 14.2719498}, //
+
9731 {4.92702007, 14.2682695}, //
+
9732 {4.92426014, 14.2647495}, //
+
9733 {4.92166996, 14.2614002}, //
+
9734 {4.91924, 14.2582197}, //
+
9735 {4.91697979, 14.2552004}, //
+
9736 {4.9148798, 14.2523499}, //
+
9737 {4.91296005, 14.24967}, //
+
9738 {4.91119003, 14.2471504}, //
+
9739 {4.90959978, 14.2447996}, //
+
9740 {4.90810013, 14.24263}, //
+
9741 {4.9066, 14.2406197}, //
+
9742 {4.90508986, 14.23878}, //
+
9743 {4.9035902, 14.2371101}, //
+
9744 {4.90208006, 14.23561}, //
+
9745 {4.90057993, 14.2342701}, //
+
9746 {4.89906979, 14.2330904}, //
+
9747 {4.89756012, 14.23209}, //
+
9748 {4.89604998, 14.2312498}, //
+
9749 {4.89311981, 14.2312098}, //
+
9750 {4.89035988, 14.2310801}, //
+
9751 {4.88777018, 14.2308702}, //
+
9752 {4.88534021, 14.2305803}, //
+
9753 {4.88308001, 14.2301998}, //
+
9754 {4.88098001, 14.2297401}, //
+
9755 {4.87905979, 14.2291899}, //
+
9756 {4.87728977, 14.2285604}, //
+
9757 {4.8757, 14.22785}, //
+
9758 {4.87427998, 14.22715}, //
+
9759 {4.87303019, 14.2265301}, //
+
9760 {4.87102985, 14.2255297}, //
+
9761 {4.87027979, 14.2251596}, //
+
9762 {4.86969995, 14.2248697}, //
+
9763 {4.86927986, 14.2246704}, //
+
9764 {4.86903, 14.2245398}, //
+
9765 {4.86894989, 14.2244997}, //
+
9766 {4.77059984, 14.2957001}, //
+
9767 {4.77511978, 14.2973299}, //
+
9768 {4.7796402, 14.2992001}, //
+
9769 {4.78417015, 14.3013296}, //
+
9770 {4.78869009, 14.30371}, //
+
9771 {4.79321003, 14.3063498}, //
+
9772 {4.79772997, 14.3092299}, //
+
9773 {4.80225992, 14.3123703}, //
+
9774 {4.80677986, 14.3157597}, //
+
9775 {4.8112998, 14.3193998}, //
+
9776 {4.81574011, 14.32339}, //
+
9777 {4.82001019, 14.3277903}, //
+
9778 {4.82411003, 14.3326101}, //
+
9779 {4.82805014, 14.3378496}, //
+
9780 {4.83181, 14.3435001}, //
+
9781 {4.83541012, 14.3495798}, //
+
9782 {4.83884001, 14.3560696}, //
+
9783 {4.84210014, 14.3629799}, //
+
9784 {4.84520006, 14.3703003}, //
+
9785 {4.84603977, 14.3749304}, //
+
9786 {4.84704018, 14.3797598}, //
+
9787 {4.84821987, 14.3848104}, //
+
9788 {4.84955978, 14.3900604}, //
+
9789 {4.85105991, 14.3955202}, //
+
9790 {4.8527298, 14.4011898}, //
+
9791 {4.85456991, 14.4070702}, //
+
9792 {4.85657978, 14.4131498}, //
+
9793 {4.85874987, 14.4194498}, //
+
9794 {4.86100006, 14.4258499}, //
+
9795 {4.86320019, 14.43225}, //
+
9796 {4.86535978, 14.4386501}, //
+
9797 {4.86746979, 14.4450502}, //
+
9798 {4.86954021, 14.4514503}, //
+
9799 {4.87157011, 14.4578505}, //
+
9800 {4.87355995, 14.4642496}, //
+
9801 {4.8755002, 14.4706497}, //
+
9802 {4.87739992, 14.4770498}, //
+
9803 {4.87927008, 14.4833603}, //
+
9804 {4.88109016, 14.4894505}, //
+
9805 {4.8828702, 14.4953403}, //
+
9806 {4.88461018, 14.5010204}, //
+
9807 {4.88630009, 14.5064802}, //
+
9808 {4.88795996, 14.5117397}, //
+
9809 {4.88956022, 14.5167904}, //
+
9810 {4.89112997, 14.5216198}, //
+
9811 {4.89265013, 14.5262499}, //
+
9812 {4.89408016, 14.5305204}, //
+
9813 {4.89477015, 14.5325899}, //
+
9814 {4.89604998, 14.5330496}, //
+
9815 {4.89801979, 14.5340405}, //
+
9816 {4.89944983, 14.5466003}, //
+
9817 {4.89937019, 14.5463495}, //
+
9818 {4.89910984, 14.5455999}, //
+
9819 {4.89869022, 14.5443401}, //
+
9820 {4.89810991, 14.5425797}, //
+
9821 {4.89643002, 14.5375605}, //
+
9822 {4.89533997, 14.5342903}, //
+
9823 {4.89477015, 14.5325899}, //
+
9824 {4.89371014, 14.5322104}, //
+
9825 {4.89120007, 14.5312004}, //
+
9826 {4.88852978, 14.5300303}, //
+
9827 {4.8856802, 14.5286798}, //
+
9828 {4.88266993, 14.5271702}, //
+
9829 {4.8794899, 14.5254898}, //
+
9830 {4.87615013, 14.5236502}, //
+
9831 {4.87263012, 14.5216303}, //
+
9832 {4.86894989, 14.5194502}, //
+
9833 {4.86749983, 14.5180702}, //
+
9834 {4.86617994, 14.5169497}, //
+
9835 {4.86498022, 14.5160704}, //
+
9836 {4.8639102, 14.5154495}, //
+
9837 {4.86296988, 14.51507}, //
+
9838 {4.86215019, 14.5149403}, //
+
9839 {4.86146021, 14.5150604}, //
+
9840 {4.86088991, 14.5154305}, //
+
9841 {4.86044979, 14.5160503}, //
+
9842 {4.86015987, 14.5168695}, //
+
9843 {4.86003017, 14.5178099}, //
+
9844 {4.86007023, 14.5188799}, //
+
9845 {4.86028004, 14.5200701}, //
+
9846 {4.86066008, 14.52139}, //
+
9847 {4.86120987, 14.52283}, //
+
9848 {4.86191988, 14.5243902}, //
+
9849 {4.86280012, 14.5260801}, //
+
9850 {4.86385012, 14.5278997}, //
+
9851 {4.86499977, 14.52981}, //
+
9852 {4.86619997, 14.5317602}, //
+
9853 {4.86743021, 14.5337601}, //
+
9854 {4.86871004, 14.5357904}, //
+
9855 {4.87002993, 14.5378704}, //
+
9856 {4.87137985, 14.5399904}, //
+
9857 {4.87277985, 14.5421495}, //
+
9858 {4.87421989, 14.5443497}, //
+
9859 {4.8757, 14.5466003}, //
+
9860 {4.87723017, 14.5503197}, //
+
9861 {4.87879992, 14.5539703}, //
+
9862 {4.88042021, 14.5575199}, //
+
9863 {4.88207006, 14.5609999}, //
+
9864 {4.88375998, 14.5643797}, //
+
9865 {4.88549995, 14.5676899}, //
+
9866 {4.88727999, 14.5709105}, //
+
9867 {4.88909006, 14.5740499}, //
+
9868 {4.8909502, 14.5770998}, //
+
9869 {4.89277983, 14.5801096}, //
+
9870 {4.89448023, 14.5831203}, //
+
9871 {4.89604998, 14.5861397}, //
+
9872 {4.89750004, 14.5891504}, //
+
9873 {4.89881992, 14.5921698}, //
+
9874 {4.90002012, 14.59519}, //
+
9875 {4.90109015, 14.5982103}, //
+
9876 {4.90202999, 14.6012297}, //
+
9877 {4.90285015, 14.60425}, //
+
9878 {4.90354013, 14.6064396}, //
+
9879 {4.90410995, 14.60851}, //
+
9880 {4.90455008, 14.6104603}, //
+
9881 {4.90486002, 14.6122704}, //
+
9882 {4.9050498, 14.6139698}, //
+
9883 {4.9051199, 14.6155396}, //
+
9884 {4.9050498, 14.6169796}, //
+
9885 {4.90486002, 14.6183004}, //
+
9886 {4.90455008, 14.6195002}, //
+
9887 {4.90415001, 14.6205502}, //
+
9888 {4.90370989, 14.6214304}, //
+
9889 {4.90323019, 14.6221399}, //
+
9890 {4.90269995, 14.6226902}, //
+
9891 {4.90214014, 14.6230698}, //
+
9892 {4.90152979, 14.6232796}, //
+
9893 {4.90087986, 14.6233196}, //
+
9894 {4.90017986, 14.6231899}, //
+
9895 {4.89944983, 14.6229}, //
+
9896 {4.89865017, 14.6225405}, //
+
9897 {4.89776993, 14.6222296}, //
+
9898 {4.89681005, 14.6219597}, //
+
9899 {4.89577007, 14.6217203}, //
+
9900 {4.89463997, 14.6215401}, //
+
9901 {4.89343023, 14.6213903}, //
+
9902 {4.8921299, 14.6212797}, //
+
9903 {4.89075994, 14.6212196}, //
+
9904 {4.88929987, 14.6211996}, //
+
9905 {4.8877902, 14.6204395}, //
+
9906 {4.88628006, 14.6196899}, //
+
9907 {4.88476992, 14.6189299}, //
+
9908 {4.88325977, 14.6181803}, //
+
9909 {4.88174009, 14.6174202}, //
+
9910 {4.88022995, 14.6166697}, //
+
9911 {4.87871981, 14.6159096}, //
+
9912 {4.87721014, 14.61516}, //
+
9913 {4.8757, 14.6143999}, //
+
9914 {4.87427998, 14.61444}, //
+
9915 {4.87303019, 14.6145697}, //
+
9916 {4.87195015, 14.6147804}, //
+
9917 {4.87102985, 14.6150703}, //
+
9918 {4.87027979, 14.6154499}, //
+
9919 {4.86969995, 14.6159096}, //
+
9920 {4.86927986, 14.6164598}, //
+
9921 {4.86903, 14.6170902}, //
+
9922 {4.86894989, 14.6177998}, //
+
9923 {4.86894989, 14.6246004}, //
+
9924 {4.8696599, 14.6260595}, //
+
9925 {4.8702898, 14.62743}, //
+
9926 {4.87084007, 14.6287298}, //
+
9927 {4.87130022, 14.62994}, //
+
9928 {4.87167978, 14.6310701}, //
+
9929 {4.87197018, 14.6321096}, //
+
9930 {4.87217999, 14.63307}, //
+
9931 {4.87231016, 14.6339502}, //
+
9932 {4.87235022, 14.6347504}, //
+
9933 {4.87229013, 14.6361599}, //
+
9934 {4.87209988, 14.6373501}, //
+
9935 {4.87177992, 14.63834}, //
+
9936 {4.8713398, 14.6391201}, //
+
9937 {4.87077999, 14.6396799}, //
+
9938 {4.87007999, 14.6400404}, //
+
9939 {4.86925983, 14.6401901}, //
+
9940 {4.86831999, 14.6401196}, //
+
9941 {4.86724997, 14.6398497}, //
+
9942 {4.86611986, 14.6394501}, //
+
9943 {4.86498022, 14.6390104}, //
+
9944 {4.86385012, 14.6385298}, //
+
9945 {4.86272001, 14.6379995}, //
+
9946 {4.8615799, 14.6374397}, //
+
9947 {4.86044979, 14.6368303}, //
+
9948 {4.85932016, 14.6361799}, //
+
9949 {4.85818005, 14.6354799}, //
+
9950 {4.85704994, 14.6347504}, //
+
9951 {4.85594988, 14.6339502}, //
+
9952 {4.85488987, 14.63307}, //
+
9953 {4.85386992, 14.6321096}, //
+
9954 {4.85289001, 14.6310701}, //
+
9955 {4.85195017, 14.62994}, //
+
9956 {4.8510499, 14.6287298}, //
+
9957 {4.85019016, 14.62743}, //
+
9958 {4.84938002, 14.6260595}, //
+
9959 {4.84859991, 14.6246004}, //
+
9960 {4.84772015, 14.6221704}, //
+
9961 {4.84659004, 14.6194}, //
+
9962 {4.84521008, 14.6162901}, //
+
9963 {4.84357023, 14.6128597}, //
+
9964 {4.84169006, 14.6090803}, //
+
9965 {4.83956003, 14.6049805}, //
+
9966 {4.83717012, 14.6005402}, //
+
9967 {4.83453989, 14.5957603}, //
+
9968 {4.83164978, 14.5906496}, //
+
9969 {4.82929993, 14.5822897}, //
+
9970 {4.82677984, 14.57376}, //
+
9971 {4.82410002, 14.5650597}, //
+
9972 {4.82124996, 14.5561895}, //
+
9973 {4.81823015, 14.5471497}, //
+
9974 {4.81505013, 14.53794}, //
+
9975 {4.81169987, 14.5285597}, //
+
9976 {4.80817986, 14.5190201}, //
+
9977 {4.8045001, 14.5093002}, //
+
9978 {4.80073023, 14.4997902}, //
+
9979 {4.79696989, 14.49088}, //
+
9980 {4.79320002, 14.4825401}, //
+
9981 {4.78943014, 14.4748001}, //
+
9982 {4.7856698, 14.4676504}, //
+
9983 {4.78189993, 14.4610796}, //
+
9984 {4.77813005, 14.4551001}, //
+
9985 {4.77437019, 14.4497004}, //
+
9986 {4.77059984, 14.4448996}, //
+
9987 {4.76757002, 14.4404001}, //
+
9988 {4.76449013, 14.4359398}, //
+
9989 {4.7613802, 14.4315205}, //
+
9990 {4.7582202, 14.4271498}, //
+
9991 {4.75502014, 14.4228096}, //
+
9992 {4.75178003, 14.41852}, //
+
9993 {4.74848986, 14.4142704}, //
+
9994 {4.74517012, 14.4100704}, //
+
9995 {4.74179983, 14.4059}, //
+
9996 {4.7384901, 14.4018002}, //
+
9997 {4.73536015, 14.3977804}, //
+
9998 {4.73237991, 14.3938398}, //
+
9999 {4.72957993, 14.3899803}, //
+
10000 {4.72694016, 14.3862104}, //
+
10001 {4.72447014, 14.3825197}, //
+
10002 {4.72215986, 14.3789196}, //
+
10003 {4.72001982, 14.3753901}, //
+
10004 {4.71805, 14.3719501}, //
+
10005 {4.71627998, 14.3687496}, //
+
10006 {4.71471024, 14.3659296}, //
+
10007 {4.71335983, 14.3634796}, //
+
10008 {4.7130599, 14.3629503}, //
+
10009 {4.71198988, 14.36378}, //
+
10010 {4.71049023, 14.3649101}, //
+
10011 {4.70881987, 14.3661203}, //
+
10012 {4.70698023, 14.3674202}, //
+
10013 {4.70496988, 14.3687897}, //
+
10014 {4.7027998, 14.3702497}, //
+
10015 {4.70050001, 14.3718004}, //
+
10016 {4.69812012, 14.3734398}, //
+
10017 {4.6956501, 14.3751602}, //
+
10018 {4.69309998, 14.3769703}, //
+
10019 {4.69046021, 14.37885}, //
+
10020 {4.68772984, 14.3808298}, //
+
10021 {4.68491983, 14.3828802}, //
+
10022 {4.6820302, 14.3850298}, //
+
10023 {4.67904997, 14.3872499}, //
+
10024 {4.6760602, 14.3887501}, //
+
10025 {4.67311001, 14.3902502}, //
+
10026 {4.67019987, 14.3917599}, //
+
10027 {4.66732979, 14.39326}, //
+
10028 {4.66450024, 14.3947697}, //
+
10029 {4.6617198, 14.3962698}, //
+
10030 {4.65896988, 14.3977804}, //
+
10031 {4.65626001, 14.3992901}, //
+
10032 {4.65542984, 14.3997602}, //
+
10033 {4.64174986, 14.4109497}, //
+
10034 {4.64192009, 14.4093304}, //
+
10035 {4.64211988, 14.4079504}, //
+
10036 {4.64306021, 14.4072905}, //
+
10037 {4.64475012, 14.4061604}, //
+
10038 {4.64663982, 14.4049501}, //
+
10039 {4.64874983, 14.4036503}, //
+
10040 {4.65107012, 14.4022703}, //
+
10041 {4.65360022, 14.4007998}, //
+
10042 {4.65542984, 14.3997602}, //
+
10043 {4.71635008, 14.3499498}, //
+
10044 {4.7169199, 14.3478804}, //
+
10045 {4.71736002, 14.3462696}, //
+
10046 {4.71791983, 14.3441896}, //
+
10047 {4.72144985, 14.3312998}, //
+
10048 {4.72259998, 14.3270702}, //
+
10049 {4.72380018, 14.3226805}, //
+
10050 {4.72502995, 14.3181105}, //
+
10051 {4.72630978, 14.3133802}, //
+
10052 {4.72763014, 14.3084803}, //
+
10053 {4.72898006, 14.3034096}, //
+
10054 {4.73038006, 14.2981796}, //
+
10055 {4.73182011, 14.2927704}, //
+
10056 {4.73330021, 14.2872}, //
+
10057 {4.73478985, 14.2815304}, //
+
10058 {4.73623991, 14.2758198}, //
+
10059 {4.7376399, 14.2700701}, //
+
10060 {4.73899984, 14.2642803}, //
+
10061 {4.74032021, 14.25844}, //
+
10062 {4.74159002, 14.2525597}, //
+
10063 {4.74281979, 14.2466297}, //
+
10064 {4.74400997, 14.2406597}, //
+
10065 {4.74515009, 14.2346497}, //
+
10066 {4.74622011, 14.2287502}, //
+
10067 {4.74715996, 14.2231102}, //
+
10068 {4.74798012, 14.2177095}, //
+
10069 {4.74868011, 14.2125702}, //
+
10070 {4.74923992, 14.2076702}, //
+
10071 {4.74968004, 14.2030296}, //
+
10072 {4.75, 14.1986303}, //
+
10073 {4.75018978, 14.1944904}, //
+
10074 {4.75024986, 14.1906004}, //
+
10075 {4.74882984, 14.1889601}, //
+
10076 {4.74758005, 14.1870804}, //
+
10077 {4.74650002, 14.1849403}, //
+
10078 {4.7455802, 14.1825504}, //
+
10079 {4.74483013, 14.1799097}, //
+
10080 {4.74424982, 14.1770201}, //
+
10081 {4.7438302, 14.1738796}, //
+
10082 {4.74357986, 14.1704903}, //
+
10083 {4.74350023, 14.1668501}, //
+
10084 {4.74130011, 14.1558905}, //
+
10085 {4.73922014, 14.1440802}, //
+
10086 {4.73726988, 14.1314402}, //
+
10087 {4.73543978, 14.1179705}, //
+
10088 {4.73373985, 14.1036501}, //
+
10089 {4.7321701, 14.0884895}, //
+
10090 {4.73072004, 14.0725002}, //
+
10091 {4.72940016, 14.0556698}, //
+
10092 {4.72819996, 14.0380001}, //
+
10093 {4.72735023, 14.0195503}, //
+
10094 {4.72703981, 14.0003405}, //
+
10095 {4.72728014, 13.9803696}, //
+
10096 {4.72805977, 13.95965}, //
+
10097 {4.72938013, 13.93818}, //
+
10098 {4.7312398, 13.9159603}, //
+
10099 {4.73365021, 13.8929701}, //
+
10100 {4.73659992, 13.8692398}, //
+
10101 {4.74009991, 13.8447504}, //
+
10102 {4.74385023, 13.8248301}, //
+
10103 {4.74755001, 13.8042297}, //
+
10104 {4.75121021, 13.7829704}, //
+
10105 {4.75482988, 13.7610302}, //
+
10106 {4.75840998, 13.73843}, //
+
10107 {4.76194, 13.7151499}, //
+
10108 {4.76543999, 13.6912003}, //
+
10109 {4.7688899, 13.6665897}, //
+
10110 {4.77229977, 13.6413002}, //
+
10111 {4.77559996, 13.6158895}, //
+
10112 {4.77873993, 13.5908899}, //
+
10113 {4.78171015, 13.5663204}, //
+
10114 {4.78451014, 13.54216}, //
+
10115 {4.78714991, 13.5184202}, //
+
10116 {4.78960991, 13.4951}, //
+
10117 {4.79191017, 13.4722004}, //
+
10118 {4.7940402, 13.4497099}, //
+
10119 {4.796, 13.4276505}, //
+
10120 {4.79769993, 13.4067297}, //
+
10121 {4.79901981, 13.3876495}, //
+
10122 {4.79997015, 13.37041}, //
+
10123 {4.80053997, 13.35501}, //
+
10124 {4.80073977, 13.3414497}, //
+
10125 {4.80056, 13.3297396}, //
+
10126 {4.80000019, 13.31987}, //
+
10127 {4.79905987, 13.3118401}, //
+
10128 {4.79775, 13.3056498}, //
+
10129 {4.79616022, 13.2987099}, //
+
10130 {4.7943902, 13.2914896}, //
+
10131 {4.79246998, 13.2839699}, //
+
10132 {4.79036999, 13.2761497}, //
+
10133 {4.78810978, 13.2680502}, //
+
10134 {4.78567982, 13.2596502}, //
+
10135 {4.78309011, 13.2509604}, //
+
10136 {4.78033018, 13.2419796}, //
+
10137 {4.77740002, 13.2327003}, //
+
10138 {4.7744298, 13.2233896}, //
+
10139 {4.77154016, 13.2143002}, //
+
10140 {4.76874018, 13.20541}, //
+
10141 {4.76601982, 13.1967201}, //
+
10142 {4.76338005, 13.1882496}, //
+
10143 {4.76081991, 13.1799898}, //
+
10144 {4.7583499, 13.1719303}, //
+
10145 {4.75595999, 13.1640902}, //
+
10146 {4.75365019, 13.1564503}, //
+
10147 {4.75285006, 13.1541796}, //
+
10148 {4.75196981, 13.1519203}, //
+
10149 {4.75100994, 13.1496601}, //
+
10150 {4.74996996, 13.1473904}, //
+
10151 {4.74883986, 13.1451302}, //
+
10152 {4.74763012, 13.1428699}, //
+
10153 {4.74632978, 13.1406097}, //
+
10154 {4.74495983, 13.13836}, //
+
10155 {4.74350023, 13.1360998}, //
+
10156 {4.7391901, 13.1258097}, //
+
10157 {4.73529005, 13.1160097}, //
+
10158 {4.73182011, 13.10672}, //
+
10159 {4.72875977, 13.09793}, //
+
10160 {4.72612, 13.0896397}, //
+
10161 {4.72389984, 13.0818596}, //
+
10162 {4.72209978, 13.0745697}, //
+
10163 {4.7207098, 13.0677795}, //
+
10164 {4.71974993, 13.0614996}, //
+
10165 {4.71962023, 13.0598803}, //
+
10166 {4.7192502, 13.0580597}, //
+
10167 {4.71861982, 13.0560303}, //
+
10168 {4.71774006, 13.0537901}, //
+
10169 {4.71659994, 13.0513401}, //
+
10170 {4.71521997, 13.0486803}, //
+
10171 {4.71358013, 13.0458097}, //
+
10172 {4.71168995, 13.0427303}, //
+
10173 {4.7095499, 13.0394497}, //
+
10174 {4.70725012, 13.0360403}, //
+
10175 {4.70487022, 13.0325899}, //
+
10176 {4.70241022, 13.0290899}, //
+
10177 {4.6998601, 13.0255604}, //
+
10178 {4.69721985, 13.0219803}, //
+
10179 {4.69450998, 13.0183601}, //
+
10180 {4.69169998, 13.0146999}, //
+
10181 {4.68881989, 13.0109997}, //
+
10182 {4.68585014, 13.0072498}, //
+
10183 {4.6828599, 13.0035496}, //
+
10184 {4.67991018, 12.9999704}, //
+
10185 {4.67700005, 12.9965096}, //
+
10186 {4.67412996, 12.9931803}, //
+
10187 {4.67129993, 12.9899797}, //
+
10188 {4.66851997, 12.9868898}, //
+
10189 {4.66577005, 12.9839401}, //
+
10190 {4.66306019, 12.9811096}, //
+
10191 {4.66039991, 12.9784002}, //
+
10192 {4.65790987, 12.9759102}, //
+
10193 {4.64855003, 12.9665499}, //
+
10194 {4.64865017, 12.9666796}, //
+
10195 {4.65115976, 12.9696798}, //
+
10196 {4.65365982, 12.9726896}, //
+
10197 {4.65523005, 12.9745703}, //
+
10198 {4.65700006, 12.9766998}, //
+
10199 {4.65887022, 12.9790897}, //
+
10200 {4.66068983, 12.9817305}, //
+
10201 {4.66246986, 12.9846296}, //
+
10202 {4.66420984, 12.9877701}, //
+
10203 {4.66590023, 12.9911699}, //
+
10204 {4.6675601, 12.9948101}, //
+
10205 {4.66915989, 12.9987097}, //
+
10206 {4.67073011, 13.0028496}, //
+
10207 {4.67224979, 13.0072498}, //
+
10208 {4.67371988, 13.0118103}, //
+
10209 {4.67509985, 13.0164604}, //
+
10210 {4.6764102, 13.0211897}, //
+
10211 {4.67761993, 13.0260096}, //
+
10212 {4.67876005, 13.0309095}, //
+
10213 {4.67981005, 13.0358896}, //
+
10214 {4.68076992, 13.0409603}, //
+
10215 {4.68165016, 13.0461102}, //
+
10216 {4.68244982, 13.0513496}, //
+
10217 {4.68322992, 13.0550699}, //
+
10218 {4.68404007, 13.0587196}, //
+
10219 {4.68489981, 13.0622702}, //
+
10220 {4.68580008, 13.0657501}, //
+
10221 {4.68673992, 13.0691299}, //
+
10222 {4.68771982, 13.0724401}, //
+
10223 {4.68873978, 13.0756598}, //
+
10224 {4.68979979, 13.0788002}, //
+
10225 {4.69089985, 13.0818501}, //
+
10226 {4.69204998, 13.0848198}, //
+
10227 {4.69325018, 13.0877104}, //
+
10228 {4.69448996, 13.0905104}, //
+
10229 {4.69576979, 13.0932302}, //
+
10230 {4.69709015, 13.09587}, //
+
10231 {4.6984601, 13.0984297}, //
+
10232 {4.6998601, 13.1008997}, //
+
10233 {4.70131016, 13.1032896}, //
+
10234 {4.7027998, 13.1056004}, //
+
10235 {4.70432997, 13.1086502}, //
+
10236 {4.70590019, 13.1117897}, //
+
10237 {4.70752001, 13.1150103}, //
+
10238 {4.70916986, 13.1183205}, //
+
10239 {4.71260023, 13.1251802}, //
+
10240 {4.71437979, 13.1287298}, //
+
10241 {4.71618986, 13.1323795}, //
+
10242 {4.71805, 13.1360998}, //
+
10243 {4.7198801, 13.1400805}, //
+
10244 {4.72157001, 13.1444702}, //
+
10245 {4.72313976, 13.1492796}, //
+
10246 {4.72458982, 13.1545095}, //
+
10247 {4.72590017, 13.1601601}, //
+
10248 {4.72708988, 13.1662302}, //
+
10249 {4.7281599, 13.17272}, //
+
10250 {4.72909021, 13.1796303}, //
+
10251 {4.72989988, 13.1869497}, //
+
10252 {4.73170996, 13.2153301}, //
+
10253 {4.7325902, 13.2462196}, //
+
10254 {4.73255014, 13.2796202}, //
+
10255 {4.73158979, 13.3155403}, //
+
10256 {4.7297101, 13.3539696}, //
+
10257 {4.7269001, 13.3949099}, //
+
10258 {4.7231698, 13.4383602}, //
+
10259 {4.71852016, 13.4843197}, //
+
10260 {4.71295023, 13.5327997}, //
+
10261 {4.70746994, 13.5745296}, //
+
10262 {4.70158005, 13.6153402}, //
+
10263 {4.69526005, 13.6552296}, //
+
10264 {4.68852997, 13.6941996}, //
+
10265 {4.68136978, 13.7322502}, //
+
10266 {4.67378998, 13.7693796}, //
+
10267 {4.66580009, 13.8055897}, //
+
10268 {4.6573801, 13.8408804}, //
+
10269 {4.64855003, 13.8752499}, //
+
10270 {4.64850998, 13.8782196}, //
+
10271 {4.6483798, 13.8811102}, //
+
10272 {4.64816999, 13.8839102}, //
+
10273 {4.64788008, 13.8866301}, //
+
10274 {4.64750004, 13.8892698}, //
+
10275 {4.64703989, 13.8918304}, //
+
10276 {4.6464901, 13.8943005}, //
+
10277 {4.6458602, 13.8966904}, //
+
10278 {4.64515018, 13.8990002}, //
+
10279 {4.64229012, 13.9136696}, //
+
10280 {4.63970995, 13.9275398}, //
+
10281 {4.63743019, 13.9406204}, //
+
10282 {4.63544989, 13.9529104}, //
+
10283 {4.63374996, 13.9644003}, //
+
10284 {4.63234997, 13.97509}, //
+
10285 {4.63123989, 13.9849901}, //
+
10286 {4.63042021, 13.9940901}, //
+
10287 {4.62989998, 14.0024004}, //
+
10288 {4.62959003, 14.0104599}, //
+
10289 {4.62939978, 14.0188103}, //
+
10290 {4.62933016, 14.0274496}, //
+
10291 {4.62939978, 14.0363903}, //
+
10292 {4.62959003, 14.0456104}, //
+
10293 {4.62989998, 14.05513}, //
+
10294 {4.6303401, 14.06495}, //
+
10295 {4.63090992, 14.0750504}, //
+
10296 {4.6315999, 14.0854502}, //
+
10297 {4.63230991, 14.0901003}, //
+
10298 {4.63293982, 14.0950003}, //
+
10299 {4.63349009, 14.1001501}, //
+
10300 {4.63395023, 14.1055498}, //
+
10301 {4.6343298, 14.1112099}, //
+
10302 {4.63462019, 14.1171198}, //
+
10303 {4.63483, 14.1232796}, //
+
10304 {4.63496017, 14.1296902}, //
+
10305 {4.63500023, 14.1363497}, //
+
10306 {4.63583994, 14.1518402}, //
+
10307 {4.63683987, 14.1666498}, //
+
10308 {4.63802004, 14.1808004}, //
+
10309 {4.63935995, 14.1942797}, //
+
10310 {4.64086008, 14.2070799}, //
+
10311 {4.64252996, 14.2192202}, //
+
10312 {4.64437008, 14.2306805}, //
+
10313 {4.64637995, 14.2414799}, //
+
10314 {4.64855003, 14.2516003}, //
+
10315 {4.65064001, 14.2613201}, //
+
10316 {4.65239, 14.2708597}, //
+
10317 {4.65382004, 14.2802401}, //
+
10318 {4.65491009, 14.2894602}, //
+
10319 {4.65566015, 14.2985001}, //
+
10320 {4.65607977, 14.3073797}, //
+
10321 {4.65616989, 14.3160896}, //
+
10322 {4.65593004, 14.3246298}, //
+
10323 {4.65535021, 14.3330002}, //
+
10324 {4.65250015, 14.3486996}, //
+
10325 {4.64998007, 14.3626404}, //
+
10326 {4.64778996, 14.3748198}, //
+
10327 {4.64594984, 14.3852396}, //
+
10328 {4.64444017, 14.3938999}, //
+
10329 {4.64326, 14.4007998}, //
+
10330 {4.64241982, 14.4059401}, //
+
10331 {4.64211988, 14.4079504}, //
+
10332 {4.6415801, 14.40833}, //
+
10333 {4.64030981, 14.4092903}, //
+
10334 {4.6392498, 14.4101601}, //
+
10335 {4.63840008, 14.4109497}, //
+
10336 {4.63989019, 14.4184799}, //
+
10337 {4.64042997, 14.4211998}, //
+
10338 {4.64104986, 14.4243402}, //
+
10339 {4.64174986, 14.4279003}, //
+
10340 {4.6424799, 14.4317598}, //
+
10341 {4.64317989, 14.4357901}, //
+
10342 {4.64382982, 14.4399796}, //
+
10343 {4.64444017, 14.4443302}, //
+
10344 {4.64499998, 14.4488602}, //
+
10345 {4.64553022, 14.4535398}, //
+
10346 {4.64600992, 14.4583998}, //
+
10347 {4.64645004, 14.4634199}, //
+
10348 {4.64685011, 14.4686003}, //
+
10349 {4.64723015, 14.4738398}, //
+
10350 {4.64761019, 14.4789896}, //
+
10351 {4.64798021, 14.4840603}, //
+
10352 {4.64835978, 14.4890404}, //
+
10353 {4.64873981, 14.4939404}, //
+
10354 {4.64911985, 14.4987602}, //
+
10355 {4.64948988, 14.5034904}, //
+
10356 {4.64986992, 14.5081396}, //
+
10357 {4.65024996, 14.5127001}, //
+
10358 {4.65060997, 14.5171003}, //
+
10359 {4.65091991, 14.5212402}, //
+
10360 {4.6511898, 14.5251303}, //
+
10361 {4.65143013, 14.5287704}, //
+
10362 {4.6516099, 14.5321598}, //
+
10363 {4.6517601, 14.5353003}, //
+
10364 {4.65186977, 14.5381899}, //
+
10365 {4.65192986, 14.5408201}, //
+
10366 {4.65194988, 14.5431995}, //
+
10367 {4.65202999, 14.5457201}, //
+
10368 {4.65227985, 14.5487404}, //
+
10369 {4.65269995, 14.5522604}, //
+
10370 {4.65327978, 14.5562801}, //
+
10371 {4.65402985, 14.5607996}, //
+
10372 {4.65495014, 14.5658197}, //
+
10373 {4.65603018, 14.5713501}, //
+
10374 {4.65727997, 14.5773697}, //
+
10375 {4.65869999, 14.5839005}, //
+
10376 {4.66019011, 14.5906801}, //
+
10377 {4.66164017, 14.5974598}, //
+
10378 {4.66304016, 14.6042299}, //
+
10379 {4.6644001, 14.6110096}, //
+
10380 {4.66571999, 14.6177902}, //
+
10381 {4.6669898, 14.6245699}, //
+
10382 {4.66822004, 14.63134}, //
+
10383 {4.66941023, 14.6381197}, //
+
10384 {4.67054987, 14.6449003}, //
+
10385 {4.67165995, 14.6514797}, //
+
10386 {4.67272997, 14.6576405}, //
+
10387 {4.67375994, 14.6633797}, //
+
10388 {4.67474985, 14.6687002}, //
+
10389 {4.67569017, 14.6736002}, //
+
10390 {4.67658997, 14.6780796}, //
+
10391 {4.67745018, 14.6821404}, //
+
10392 {4.67826986, 14.6857796}, //
+
10393 {4.67904997, 14.6890001}, //
+
10394 {4.67983007, 14.6911697}, //
+
10395 {4.68065023, 14.6931801}, //
+
10396 {4.68150997, 14.6950197}, //
+
10397 {4.68240976, 14.6966896}, //
+
10398 {4.68335009, 14.6981897}, //
+
10399 {4.68434, 14.6995296}, //
+
10400 {4.68536997, 14.7007103}, //
+
10401 {4.68643999, 14.7017097}, //
+
10402 {4.68755007, 14.7025499}, //
+
10403 {4.6887002, 14.7032204}, //
+
10404 {4.68989992, 14.7037296}, //
+
10405 {4.69113016, 14.7040596}, //
+
10406 {4.69240999, 14.7042303}, //
+
10407 {4.69372988, 14.7042303}, //
+
10408 {4.6950798, 14.7040596}, //
+
10409 {4.6964798, 14.7037296}, //
+
10410 {4.69791985, 14.7032204}, //
+
10411 {4.69939995, 14.7025499}, //
+
10412 {4.70016003, 14.70257}, //
+
10413 {4.70091009, 14.70263}, //
+
10414 {4.70167017, 14.7027397}, //
+
10415 {4.70242023, 14.7028904}, //
+
10416 {4.70317984, 14.7030697}, //
+
10417 {4.7039299, 14.70331}, //
+
10418 {4.70468998, 14.7035799}, //
+
10419 {4.70544004, 14.7038898}, //
+
10420 {4.70620012, 14.7042503}, //
+
10421 {4.70695019, 14.7046499}, //
+
10422 {4.70770979, 14.7050896}, //
+
10423 {4.70845985, 14.7055702}, //
+
10424 {4.70920992, 14.7061005}, //
+
10425 {4.70995998, 14.7066603}, //
+
10426 {4.71071005, 14.7072697}, //
+
10427 {4.71146011, 14.7079201}, //
+
10428 {4.71220016, 14.7086201}, //
+
10429 {4.71295023, 14.7093496}, //
+
10430 {4.71367979, 14.70998}, //
+
10431 {4.71437979, 14.7103596}, //
+
10432 {4.71503019, 14.7104797}, //
+
10433 {4.71564007, 14.7103596}, //
+
10434 {4.71619987, 14.70998}, //
+
10435 {4.71673012, 14.7093496}, //
+
10436 {4.71720982, 14.7084703}, //
+
10437 {4.71764994, 14.7073402}, //
+
10438 {4.71805, 14.7059498}, //
+
10439 {4.71845007, 14.70438}, //
+
10440 {4.71889019, 14.7026796}, //
+
10441 {4.71936989, 14.70086}, //
+
10442 {4.71990013, 14.6989098}, //
+
10443 {4.72045994, 14.6968403}, //
+
10444 {4.72106981, 14.6946402}, //
+
10445 {4.72172022, 14.6923199}, //
+
10446 {4.72242022, 14.6898699}, //
+
10447 {4.72314978, 14.6872997}, //
+
10448 {4.72387981, 14.6846704}, //
+
10449 {4.7245698, 14.6820297}, //
+
10450 {4.7252202, 14.67939}, //
+
10451 {4.72583008, 14.6767597}, //
+
10452 {4.72638988, 14.6741199}, //
+
10453 {4.72691011, 14.6714802}, //
+
10454 {4.7273798, 14.6688404}, //
+
10455 {4.72780991, 14.6661901}, //
+
10456 {4.72819996, 14.6635504}, //
+
10457 {4.72855997, 14.6609402}, //
+
10458 {4.72886992, 14.6583595}, //
+
10459 {4.7291398, 14.6558304}, //
+
10460 {4.72938013, 14.6533403}, //
+
10461 {4.7295599, 14.6508904}, //
+
10462 {4.7297101, 14.6484804}, //
+
10463 {4.72981977, 14.6461096}, //
+
10464 {4.72987986, 14.6437902}, //
+
10465 {4.72989988, 14.6415005}, //
+
10466 {4.72989988, 14.6313496}, //
+
10467 {4.73027992, 14.6323099}, //
+
10468 {4.73141003, 14.6351995}, //
+
10469 {4.7332902, 14.6400204}, //
+
10470 {4.73592997, 14.64676}, //
+
10471 {4.73932981, 14.6554203}, //
+
10472 {4.74348021, 14.6660204}, //
+
10473 {4.75403976, 14.6929798}, //
+
10474 {4.76044989, 14.7093496}, //
+
10475 {4.76119995, 14.7115803}, //
+
10476 {4.76196003, 14.7137804}, //
+
10477 {4.76271009, 14.71593}, //
+
10478 {4.76346016, 14.7180405}, //
+
10479 {4.76421022, 14.7201004}, //
+
10480 {4.76495981, 14.7221298}, //
+
10481 {4.76570988, 14.7241096}, //
+
10482 {4.76644993, 14.7260504}, //
+
10483 {4.76719999, 14.7279501}, //
+
10484 {4.76796007, 14.7297297}, //
+
10485 {4.76871014, 14.7313099}, //
+
10486 {4.76947021, 14.7326698}, //
+
10487 {4.7702198, 14.7338305}, //
+
10488 {4.77097988, 14.7347698}, //
+
10489 {4.77172995, 14.7355099}, //
+
10490 {4.77249002, 14.7360296}, //
+
10491 {4.77324009, 14.7363501}, //
+
10492 {4.77400017, 14.7364502}, //
+
10493 {4.77475023, 14.7364302}, //
+
10494 {4.77550983, 14.7363701}, //
+
10495 {4.7762599, 14.7362604}, //
+
10496 {4.77700996, 14.7361097}, //
+
10497 {4.77776003, 14.7359304}, //
+
10498 {4.77851009, 14.7356901}, //
+
10499 {4.77926016, 14.7354202}, //
+
10500 {4.78000021, 14.7351103}, //
+
10501 {4.7807498, 14.7347498}, //
+
10502 {4.78147984, 14.7343597}, //
+
10503 {4.78217983, 14.7339296}, //
+
10504 {4.78283024, 14.7334604}, //
+
10505 {4.78344011, 14.7329397}, //
+
10506 {4.78399992, 14.7323799}, //
+
10507 {4.78453016, 14.7317696}, //
+
10508 {4.78500986, 14.7311201}, //
+
10509 {4.78544998, 14.7304296}, //
+
10510 {4.78585005, 14.7297001}, //
+
10511 {4.78623009, 14.7289696}, //
+
10512 {4.78661013, 14.7282696}, //
+
10513 {4.78698015, 14.7276201}, //
+
10514 {4.78736019, 14.7270098}, //
+
10515 {4.78774023, 14.72645}, //
+
10516 {4.78811979, 14.7259197}, //
+
10517 {4.78848982, 14.72544}, //
+
10518 {4.78886986, 14.7250004}, //
+
10519 {4.7892499, 14.7245998}, //
+
10520 {4.79043007, 14.7234201}, //
+
10521 {4.79076004, 14.7230902}, //
+
10522 {4.79087019, 14.7229795}, //
+
10523 {4.79094982, 14.7229004}, //
+
10524 {4.79102993, 14.7229204}, //
+
10525 {4.79503012, 14.7239304}, //
+
10526 {4.79627991, 14.7242403}, //
+
10527 {4.79769993, 14.7245998}, //
+
10528 {4.7992301, 14.7250204}, //
+
10529 {4.80079985, 14.7255201}, //
+
10530 {4.80242014, 14.7261105}, //
+
10531 {4.80407, 14.7267704}, //
+
10532 {4.80575991, 14.72752}, //
+
10533 {4.80749989, 14.7283602}, //
+
10534 {4.80927992, 14.72927}, //
+
10535 {4.81108999, 14.7302704}, //
+
10536 {4.81295013, 14.7313499}, //
+
10537 {4.81478024, 14.73246}, //
+
10538 {4.81648016, 14.73353}, //
+
10539 {4.81677008, 14.7337303}, //
+
10540 {4.81697989, 14.73382}, //
+
10541 {4.82145023, 14.7364502}, //
+
10542 {4.82220984, 14.7364902}, //
+
10543 {4.8229599, 14.7366199}, //
+
10544 {4.82371998, 14.7368298}, //
+
10545 {4.82447004, 14.7371197}, //
+
10546 {4.82523012, 14.7375002}, //
+
10547 {4.82598019, 14.7379599}, //
+
10548 {4.82673979, 14.7385101}, //
+
10549 {4.82748985, 14.7391396}, //
+
10550 {4.82824993, 14.73985}, //
+
10551 {4.83029985, 14.7405195}, //
+
10552 {4.83028984, 14.7405195}, //
+
10553 {4.82771015, 14.7404003}, //
+
10554 {4.82485008, 14.73985}, //
+
10555 {4.82402992, 14.7390699}, //
+
10556 {4.82309008, 14.7382498}, //
+
10557 {4.82202005, 14.7373896}, //
+
10558 {4.82081985, 14.7364902}, //
+
10559 {4.81949997, 14.7355499}, //
+
10560 {4.81804991, 14.73456}, //
+
10561 {4.81677008, 14.7337303}, //
+
10562 {4.81259012, 14.7319298}, //
+
10563 {4.80827999, 14.7308102}, //
+
10564 {4.80405998, 14.7304296}, //
+
10565 {4.79991007, 14.7308102}, //
+
10566 {4.7958498, 14.7319403}, //
+
10567 {4.79187012, 14.73382}, //
+
10568 {4.78797007, 14.7364597}, //
+
10569 {4.78415012, 14.73985}, //
+
10570 {4.78340006, 14.7405396}, //
+
10571 {4.78266001, 14.7411098}, //
+
10572 {4.78190994, 14.7415504}, //
+
10573 {4.78115988, 14.7418604}, //
+
10574 {4.78040981, 14.7420502}, //
+
10575 {4.77966022, 14.7421198}, //
+
10576 {4.77891016, 14.7420502}, //
+
10577 {4.77815008, 14.7418604}, //
+
10578 {4.77740002, 14.7415504}, //
+
10579 {4.77661991, 14.7411499}, //
+
10580 {4.77580023, 14.7407103}, //
+
10581 {4.77494001, 14.7402296}, //
+
10582 {4.77404022, 14.7397003}, //
+
10583 {4.7730999, 14.7391396}, //
+
10584 {4.77210999, 14.7385302}, //
+
10585 {4.77108002, 14.7378798}, //
+
10586 {4.77000999, 14.7371798}, //
+
10587 {4.76889992, 14.7364502}, //
+
10588 {4.76779985, 14.7356796}, //
+
10589 {4.76673985, 14.73487}, //
+
10590 {4.76571989, 14.7340202}, //
+
10591 {4.76473999, 14.7331305}, //
+
10592 {4.76380014, 14.7321901}, //
+
10593 {4.76289988, 14.7312098}, //
+
10594 {4.76204014, 14.7301798}, //
+
10595 {4.76122999, 14.7291098}, //
+
10596 {4.76044989, 14.7279997}, //
+
10597 {4.75968981, 14.7268896}, //
+
10598 {4.75894022, 14.7258196}, //
+
10599 {4.75818014, 14.7247896}, //
+
10600 {4.75743008, 14.7237997}, //
+
10601 {4.75667, 14.7228603}, //
+
10602 {4.75591993, 14.7219601}, //
+
10603 {4.75515985, 14.7210999}, //
+
10604 {4.75440979, 14.7202797}, //
+
10605 {4.75365019, 14.7194996}, //
+
10606 {4.75294018, 14.7187996}, //
+
10607 {4.7523098, 14.7181797}, //
+
10608 {4.75176001, 14.7176399}, //
+
10609 {4.75129986, 14.7171803}, //
+
10610 {4.75091982, 14.7168102}, //
+
10611 {4.7506299, 14.7165203}, //
+
10612 {4.75042009, 14.71632}, //
+
10613 {4.75028992, 14.7161903}, //
+
10614 {4.75024986, 14.7161503}, //
+
10615 {4.74004984, 14.7161503}, //
+
10616 {4.73777008, 14.7161303}, //
+
10617 {4.73544979, 14.7160702}, //
+
10618 {4.73308992, 14.7159595}, //
+
10619 {4.73069, 14.7158098}, //
+
10620 {4.72825003, 14.7156296}, //
+
10621 {4.72575998, 14.7153902}, //
+
10622 {4.72322989, 14.7151203}, //
+
10623 {4.72066021, 14.7148104}, //
+
10624 {4.71805, 14.7144499}, //
+
10625 {4.71541977, 14.7140903}, //
+
10626 {4.71278, 14.7137804}, //
+
10627 {4.71014023, 14.7135096}, //
+
10628 {4.70750999, 14.7132702}, //
+
10629 {4.70487022, 14.7130899}, //
+
10630 {4.70222998, 14.7129402}, //
+
10631 {4.69959021, 14.7128296}, //
+
10632 {4.69693995, 14.7127705}, //
+
10633 {4.69430017, 14.7127504}, //
+
10634 {4.67565012, 14.7127504}, //
+
10635 {4.6749301, 14.71206}, //
+
10636 {4.67424011, 14.7114897}, //
+
10637 {4.6736002, 14.71105}, //
+
10638 {4.67299986, 14.7107401}, //
+
10639 {4.67244005, 14.7105503}, //
+
10640 {4.67191982, 14.7104797}, //
+
10641 {4.67144012, 14.7105503}, //
+
10642 {4.671, 14.7107401}, //
+
10643 {4.67059994, 14.71105}, //
+
10644 {4.67025995, 14.7114096}, //
+
10645 {4.67001009, 14.7117205}, //
+
10646 {4.66983986, 14.7119904}, //
+
10647 {4.66976023, 14.7122297}, //
+
10648 {4.66976023, 14.71241}, //
+
10649 {4.66983986, 14.7125597}, //
+
10650 {4.67001009, 14.7126703}, //
+
10651 {4.67025995, 14.7127304}, //
+
10652 {4.67059994, 14.7127504}, //
+
10653 {4.67095995, 14.7127895}, //
+
10654 {4.67126989, 14.7129202}, //
+
10655 {4.67153978, 14.71313}, //
+
10656 {4.67178011, 14.7134199}, //
+
10657 {4.67195988, 14.7138004}, //
+
10658 {4.67211008, 14.7142601}, //
+
10659 {4.67222023, 14.7148104}, //
+
10660 {4.67227983, 14.7154398}, //
+
10661 {4.67229986, 14.7161503}, //
+
10662 {4.67301989, 14.7161903}, //
+
10663 {4.67370987, 14.71632}, //
+
10664 {4.67434978, 14.7165203}, //
+
10665 {4.67495012, 14.7168102}, //
+
10666 {4.67550993, 14.7171803}, //
+
10667 {4.67603016, 14.7176399}, //
+
10668 {4.67650986, 14.7181797}, //
+
10669 {4.67694998, 14.7187996}, //
+
10670 {4.67735004, 14.7194996}, //
+
10671 {4.67771006, 14.7202597}, //
+
10672 {4.67802, 14.7210102}, //
+
10673 {4.67828989, 14.7217703}, //
+
10674 {4.67853022, 14.7225199}, //
+
10675 {4.67870998, 14.72328}, //
+
10676 {4.67886019, 14.7240295}, //
+
10677 {4.67896986, 14.7247896}, //
+
10678 {4.67902994, 14.7255402}, //
+
10679 {4.67904997, 14.7263002}, //
+
10680 {4.67896986, 14.7284498}, //
+
10681 {4.67870998, 14.7303896}, //
+
10682 {4.67828989, 14.7321301}, //
+
10683 {4.67771006, 14.7336502}, //
+
10684 {4.67694998, 14.7349701}, //
+
10685 {4.67603016, 14.7360802}, //
+
10686 {4.67494011, 14.7369804}, //
+
10687 {4.67367983, 14.7376699}, //
+
10688 {4.67224979, 14.7381496}, //
+
10689 {4.67061996, 14.7385101}, //
+
10690 {4.66874981, 14.7388201}, //
+
10691 {4.66661978, 14.73909}, //
+
10692 {4.66423988, 14.7393303}, //
+
10693 {4.66160011, 14.7395096}, //
+
10694 {4.65872002, 14.7396603}, //
+
10695 {4.65558004, 14.7397699}, //
+
10696 {4.65219021, 14.73983}, //
+
10697 {4.64855003, 14.73985}, //
+
10698 {4.63840008, 14.73985}, //
+
10699 {4.63764, 14.7398701}, //
+
10700 {4.63688993, 14.7399302}, //
+
10701 {4.63612986, 14.7400398}, //
+
10702 {4.63537979, 14.7401896}, //
+
10703 {4.63462019, 14.7403698}, //
+
10704 {4.63387012, 14.7406101}, //
+
10705 {4.63311005, 14.74088}, //
+
10706 {4.63235998, 14.74119}, //
+
10707 {4.6315999, 14.7415504}, //
+
10708 {4.63086987, 14.74193}, //
+
10709 {4.63016987, 14.7423096}, //
+
10710 {4.62951994, 14.7426796}, //
+
10711 {4.62891006, 14.7430601}, //
+
10712 {4.62834978, 14.7434397}, //
+
10713 {4.62782001, 14.7438202}, //
+
10714 {4.62733984, 14.7441902}, //
+
10715 {4.6269002, 14.7445698}, //
+
10716 {4.62650013, 14.7449503}, //
+
10717 {4.62614012, 14.7453499}, //
+
10718 {4.62583017, 14.7457895}, //
+
10719 {4.62555981, 14.7462702}, //
+
10720 {4.62531996, 14.7467899}, //
+
10721 {4.62514019, 14.7473497}, //
+
10722 {4.62498999, 14.7479496}, //
+
10723 {4.62487984, 14.7485905}, //
+
10724 {4.62482023, 14.74928}, //
+
10725 {4.62480021, 14.75}, //
+
10726 {4.62480021, 14.7567997}, //
+
10727 {4.62462997, 14.7567196}, //
+
10728 {4.61878014, 14.7537804}, //
+
10729 {4.61660004, 14.7526903}, //
+
10730 {4.61408997, 14.7514296}, //
+
10731 {4.61352015, 14.7511396}, //
+
10732 {4.61381006, 14.7509899}, //
+
10733 {4.61443996, 14.7499199}, //
+
10734 {4.61464977, 14.7482996}, //
+
10735 {4.61450005, 14.7462301}, //
+
10736 {4.61405993, 14.7437897}, //
+
10737 {4.61332989, 14.7409697}, //
+
10738 {4.61229992, 14.7377701}, //
+
10739 {4.61098003, 14.73419}, //
+
10740 {4.60936022, 14.7302303}, //
+
10741 {4.60745001, 14.7258997}, //
+
10742 {4.60524988, 14.7211905}, //
+
10743 {4.60274982, 14.7160997}, //
+
10744 {4.60000992, 14.7109203}, //
+
10745 {4.5970602, 14.7059002}, //
+
10746 {4.59391022, 14.7010498}, //
+
10747 {4.59053993, 14.6963701}, //
+
10748 {4.58695984, 14.6918497}, //
+
10749 {4.58316994, 14.6875}, //
+
10750 {4.57917023, 14.68332}, //
+
10751 {4.57496977, 14.6793003}, //
+
10752 {4.57054996, 14.6754503}, //
+
10753 {4.56607008, 14.6716805}, //
+
10754 {4.56166983, 14.6679201}, //
+
10755 {4.55736017, 14.6641502}, //
+
10756 {4.55313015, 14.6603804}, //
+
10757 {4.54898977, 14.65662}, //
+
10758 {4.54492998, 14.6528502}, //
+
10759 {4.54094982, 14.6490803}, //
+
10760 {4.53705978, 14.6453199}, //
+
10761 {4.53324986, 14.6415501}, //
+
10762 {4.52885008, 14.6385298}, //
+
10763 {4.52471018, 14.6355104}, //
+
10764 {4.52082014, 14.6324902}, //
+
10765 {4.51717997, 14.6294699}, //
+
10766 {4.51379013, 14.6264496}, //
+
10767 {4.51065016, 14.6234398}, //
+
10768 {4.50776005, 14.6204205}, //
+
10769 {4.50512981, 14.6174097}, //
+
10770 {4.50274992, 14.6143999}, //
+
10771 {4.50212002, 14.6122904}, //
+
10772 {4.50173998, 14.6104698}, //
+
10773 {4.5016098, 14.6089497}, //
+
10774 {4.50172997, 14.6077204}, //
+
10775 {4.50209999, 14.6067801}, //
+
10776 {4.50272989, 14.6061296}, //
+
10777 {4.50360012, 14.6057796}, //
+
10778 {4.50473022, 14.6057196}, //
+
10779 {4.50610018, 14.6059504}, //
+
10780 {4.50769997, 14.60639}, //
+
10781 {4.50945997, 14.6069498}, //
+
10782 {4.51139021, 14.6076403}, //
+
10783 {4.5134902, 14.6084604}, //
+
10784 {4.51574993, 14.6093998}, //
+
10785 {4.51818991, 14.6104603}, //
+
10786 {4.5207901, 14.6116505}, //
+
10787 {4.52356005, 14.6129599}, //
+
10788 {4.52650023, 14.6143999}, //
+
10789 {4.53106022, 14.6166697}, //
+
10790 {4.53570986, 14.6189299}, //
+
10791 {4.54044008, 14.6211901}, //
+
10792 {4.54524994, 14.6234598}, //
+
10793 {4.55014992, 14.62572}, //
+
10794 {4.55511999, 14.6279802}, //
+
10795 {4.56018019, 14.6302404}, //
+
10796 {4.56532001, 14.6324902}, //
+
10797 {4.57054996, 14.6347504}, //
+
10798 {4.57496977, 14.6363697}, //
+
10799 {4.57917023, 14.6381903}, //
+
10800 {4.58316994, 14.6402197}, //
+
10801 {4.58695984, 14.6424599}, //
+
10802 {4.59053993, 14.6449099}, //
+
10803 {4.59391022, 14.6475697}, //
+
10804 {4.5970602, 14.6504402}, //
+
10805 {4.60000992, 14.6535196}, //
+
10806 {4.60274982, 14.6568003}, //
+
10807 {4.60532999, 14.6601696}, //
+
10808 {4.60777998, 14.6634903}, //
+
10809 {4.61010981, 14.6667805}, //
+
10810 {4.61230993, 14.6700201}, //
+
10811 {4.61437988, 14.6732197}, //
+
10812 {4.61633015, 14.6763802}, //
+
10813 {4.61815023, 14.6794901}, //
+
10814 {4.61984015, 14.6825705}, //
+
10815 {4.62139988, 14.6856003}, //
+
10816 {4.62375021, 14.6893702}, //
+
10817 {4.62626982, 14.6931295}, //
+
10818 {4.62895012, 14.6969004}, //
+
10819 {4.63180017, 14.7006702}, //
+
10820 {4.63481998, 14.7044296}, //
+
10821 {4.63800001, 14.7082005}, //
+
10822 {4.64134979, 14.7119703}, //
+
10823 {4.6448698, 14.7157297}, //
+
10824 {4.64855003, 14.7194996}, //
+
10825 {4.6493001, 14.7202797}, //
+
10826 {4.65006018, 14.7210999}, //
+
10827 {4.65080976, 14.7219601}, //
+
10828 {4.65155983, 14.7228603}, //
+
10829 {4.65230989, 14.7237997}, //
+
10830 {4.65305996, 14.7247896}, //
+
10831 {4.65381002, 14.7258196}, //
+
10832 {4.65455008, 14.7268896}, //
+
10833 {4.65530014, 14.7279997}, //
+
10834 {4.65607977, 14.7290897}, //
+
10835 {4.65689993, 14.7300997}, //
+
10836 {4.65776014, 14.73102}, //
+
10837 {4.65865993, 14.7318497}, //
+
10838 {4.65959978, 14.7326002}, //
+
10839 {4.66059017, 14.7332697}, //
+
10840 {4.66162014, 14.7338495}, //
+
10841 {4.66269016, 14.7343397}, //
+
10842 {4.66379976, 14.7347498}, //
+
10843 {4.66488981, 14.7351103}, //
+
10844 {4.66590023, 14.7354202}, //
+
10845 {4.66682005, 14.7356901}, //
+
10846 {4.66766024, 14.7359304}, //
+
10847 {4.66841984, 14.7361097}, //
+
10848 {4.66908979, 14.7362604}, //
+
10849 {4.66968012, 14.7363701}, //
+
10850 {4.67017984, 14.7364302}, //
+
10851 {4.67059994, 14.7364502}, //
+
10852 {4.67097998, 14.7364302}, //
+
10853 {4.67135, 14.7363701}, //
+
10854 {4.67173004, 14.7362604}, //
+
10855 {4.67210007, 14.7361097}, //
+
10856 {4.67247009, 14.7359304}, //
+
10857 {4.67284012, 14.7356901}, //
+
10858 {4.67321014, 14.7354202}, //
+
10859 {4.67358017, 14.7351103}, //
+
10860 {4.6739502, 14.7347498}, //
+
10861 {4.67431021, 14.7343998}, //
+
10862 {4.67489004, 14.7338305}, //
+
10863 {4.67512989, 14.7336102}, //
+
10864 {4.67531013, 14.7334299}, //
+
10865 {4.67557001, 14.73318}, //
+
10866 {4.67565012, 14.7330999}, //
+
10867 {4.67565012, 14.7263002}, //
+
10868 {4.67514992, 14.7255497}, //
+
10869 {4.67364979, 14.7232904}, //
+
10870 {4.67114019, 14.7195196}, //
+
10871 {4.66950989, 14.7170696}, //
+
10872 {4.66550016, 14.71105}, //
+
10873 {4.66323996, 14.7075996}, //
+
10874 {4.66099024, 14.7040195}, //
+
10875 {4.65873003, 14.7003202}, //
+
10876 {4.65646982, 14.6964903}, //
+
10877 {4.65421009, 14.6925297}, //
+
10878 {4.65193987, 14.6884499}, //
+
10879 {4.64968014, 14.6842403}, //
+
10880 {4.64741993, 14.6799097}, //
+
10881 {4.64515018, 14.6754503}, //
+
10882 {4.64284992, 14.6709299}, //
+
10883 {4.64047003, 14.6664104}, //
+
10884 {4.63800001, 14.6618795}, //
+
10885 {4.63544989, 14.6573601}, //
+
10886 {4.63281012, 14.6528397}, //
+
10887 {4.63008022, 14.6483202}, //
+
10888 {4.62727022, 14.6437902}, //
+
10889 {4.62438011, 14.6392698}, //
+
10890 {4.62139988, 14.6347504}, //
+
10891 {4.61847019, 14.6303501}, //
+
10892 {4.61570978, 14.6262102}, //
+
10893 {4.61312008, 14.6223202}, //
+
10894 {4.61070013, 14.61868}, //
+
10895 {4.60843992, 14.6152897}, //
+
10896 {4.60635996, 14.6121502}, //
+
10897 {4.60444021, 14.6092596}, //
+
10898 {4.60268021, 14.6066303}, //
+
10899 {4.60109997, 14.60425}, //
+
10900 {4.5980401, 14.6019201}, //
+
10901 {4.59489012, 14.5994701}, //
+
10902 {4.59166002, 14.5968904}, //
+
10903 {4.58834982, 14.5941896}, //
+
10904 {4.58494997, 14.5913601}, //
+
10905 {4.58148003, 14.5884104}, //
+
10906 {4.57791996, 14.58533}, //
+
10907 {4.57427979, 14.5821304}, //
+
10908 {4.57054996, 14.5788002}, //
+
10909 {4.56685019, 14.5753698}, //
+
10910 {4.56327009, 14.5718498}, //
+
10911 {4.55982018, 14.5682602}, //
+
10912 {4.55648994, 14.5645704}, //
+
10913 {4.55328989, 14.5608101}, //
+
10914 {4.55022001, 14.5569601}, //
+
10915 {4.54726982, 14.5530195}, //
+
10916 {4.54444981, 14.5489998}, //
+
10917 {4.54174995, 14.5448999}, //
+
10918 {4.53925991, 14.5408602}, //
+
10919 {4.5370698, 14.5370302}, //
+
10920 {4.53517008, 14.5334101}, //
+
10921 {4.5335598, 14.5299997}, //
+
10922 {4.53223991, 14.5268002}, //
+
10923 {4.53121996, 14.5238104}, //
+
10924 {4.53048992, 14.5210304}, //
+
10925 {4.53400993, 14.5179701}, //
+
10926 {4.53585005, 14.5163603}, //
+
10927 {4.53736019, 14.5150404}, //
+
10928 {4.54005003, 14.5127001}, //
+
10929 {4.54038, 14.5117798}, //
+
10930 {4.54080009, 14.5106297}, //
+
10931 {4.54137993, 14.5090199}, //
+
10932 {4.54212999, 14.5069399}, //
+
10933 {4.54412985, 14.50142}, //
+
10934 {4.54538012, 14.4979601}, //
+
10935 {4.54680014, 14.49405}, //
+
10936 {4.54832983, 14.4897604}, //
+
10937 {4.54990005, 14.4851704}, //
+
10938 {4.55151987, 14.4802904}, //
+
10939 {4.5531702, 14.4751196}, //
+
10940 {4.55486012, 14.4696503}, //
+
10941 {4.55660009, 14.4638901}, //
+
10942 {4.55838013, 14.45784}, //
+
10943 {4.5601902, 14.4514904}, //
+
10944 {4.56204987, 14.44485}, //
+
10945 {4.56392002, 14.4380903}, //
+
10946 {4.56574011, 14.4313803}, //
+
10947 {4.56753016, 14.4246998}, //
+
10948 {4.56927013, 14.4180603}, //
+
10949 {4.57097006, 14.4114704}, //
+
10950 {4.57262993, 14.4049196}, //
+
10951 {4.57424021, 14.3984003}, //
+
10952 {4.57581997, 14.3919296}, //
+
10953 {4.57735014, 14.3855}, //
+
10954 {4.57865, 14.3792}, //
+
10955 {4.57952976, 14.3731203}, //
+
10956 {4.57998991, 14.36724}, //
+
10957 {4.58003998, 14.3615799}, //
+
10958 {4.57965994, 14.3561201}, //
+
10959 {4.57885981, 14.3508797}, //
+
10960 {4.57764006, 14.3458405}, //
+
10961 {4.57601023, 14.3410196}, //
+
10962 {4.57394981, 14.3364}, //
+
10963 {4.5714798, 14.3284798}, //
+
10964 {4.56860018, 14.3198099}, //
+
10965 {4.56528997, 14.31038}, //
+
10966 {4.56157017, 14.30021}, //
+
10967 {4.55742979, 14.2892799}, //
+
10968 {4.55285978, 14.2776003}, //
+
10969 {4.54788017, 14.2651701}, //
+
10970 {4.54246998, 14.2519903}, //
+
10971 {4.53665018, 14.2380505}, //
+
10972 {4.52916002, 14.2228603}, //
+
10973 {4.52174997, 14.2074099}, //
+
10974 {4.51443005, 14.19172}, //
+
10975 {4.50719023, 14.1757698}, //
+
10976 {4.50003004, 14.1595697}, //
+
10977 {4.49295998, 14.1431198}, //
+
10978 {4.48597002, 14.1264095}, //
+
10979 {4.47907019, 14.1094599}, //
+
10980 {4.47224998, 14.0922499}, //
+
10981 {4.46927023, 14.0839596}, //
+
10982 {4.46638012, 14.0756702}, //
+
10983 {4.46357012, 14.06738}, //
+
10984 {4.46084023, 14.0590897}, //
+
10985 {4.45819998, 14.0508099}, //
+
10986 {4.45564985, 14.0425196}, //
+
10987 {4.45317984, 14.0342302}, //
+
10988 {4.45079994, 14.0259399}, //
+
10989 {4.44850016, 14.0176497}, //
+
10990 {4.44181013, 13.9950895}, //
+
10991 {4.43527985, 13.9741201}, //
+
10992 {4.42891979, 13.9547396}, //
+
10993 {4.42271996, 13.9369497}, //
+
10994 {4.41668987, 13.9207497}, //
+
10995 {4.41083002, 13.9061403}, //
+
10996 {4.40513992, 13.8931198}, //
+
10997 {4.39961004, 13.88169}, //
+
10998 {4.39424992, 13.87185}, //
+
10999 {4.39189005, 13.8680201}, //
+
11000 {4.3893199, 13.8640604}, //
+
11001 {4.38653994, 13.8599796}, //
+
11002 {4.38355017, 13.8557796}, //
+
11003 {4.38035011, 13.8514404}, //
+
11004 {4.37693977, 13.8469801}, //
+
11005 {4.3733201, 13.8423996}, //
+
11006 {4.36949015, 13.8376904}, //
+
11007 {4.36544991, 13.8328505}, //
+
11008 {4.36127996, 13.8278599}, //
+
11009 {4.35707998, 13.82265}, //
+
11010 {4.35282993, 13.8172302}, //
+
11011 {4.34853983, 13.8116102}, //
+
11012 {4.34420013, 13.8057699}, //
+
11013 {4.33982992, 13.7997198}, //
+
11014 {4.33541012, 13.7934599}, //
+
11015 {4.33094978, 13.7869797}, //
+
11016 {4.32644987, 13.7803001}, //
+
11017 {4.3169899, 13.7707195}, //
+
11018 {4.30818987, 13.7615604}, //
+
11019 {4.30006981, 13.7528095}, //
+
11020 {4.29261017, 13.7444801}, //
+
11021 {4.28583002, 13.7365704}, //
+
11022 {4.27971983, 13.7290802}, //
+
11023 {4.27427006, 13.7220001}, //
+
11024 {4.26949978, 13.7153397}, //
+
11025 {4.26539993, 13.7090998}, //
+
11026 {4.2638998, 13.7075195}, //
+
11027 {4.26240015, 13.70576}, //
+
11028 {4.26089001, 13.7038403}, //
+
11029 {4.25938988, 13.7017498}, //
+
11030 {4.25788021, 13.6994896}, //
+
11031 {4.25638008, 13.6970596}, //
+
11032 {4.25486994, 13.6944599}, //
+
11033 {4.25335979, 13.6916904}, //
+
11034 {4.25185013, 13.6887503}, //
+
11035 {4.24505997, 13.6772003}, //
+
11036 {4.23677015, 13.6651497}, //
+
11037 {4.2269702, 13.6525898}, //
+
11038 {4.21567011, 13.6395302}, //
+
11039 {4.20285988, 13.6259699}, //
+
11040 {4.18853998, 13.6119099}, //
+
11041 {4.17271996, 13.5973396}, //
+
11042 {4.15538979, 13.5822697}, //
+
11043 {4.13654995, 13.5667}, //
+
11044 {4.12482977, 13.5592899}, //
+
11045 {4.11378002, 13.5521297}, //
+
11046 {4.10339022, 13.5452299}, //
+
11047 {4.0936799, 13.5385704}, //
+
11048 {4.08464003, 13.5321703}, //
+
11049 {4.07626009, 13.5260096}, //
+
11050 {4.06855011, 13.5201101}, //
+
11051 {4.0615201, 13.5144501}, //
+
11052 {4.05515003, 13.5090504}, //
+
11053 {4.04917002, 13.5037804}, //
+
11054 {4.04327011, 13.4985104}, //
+
11055 {4.03745985, 13.4932404}, //
+
11056 {4.03173018, 13.4879704}, //
+
11057 {4.02609015, 13.4827003}, //
+
11058 {4.02053022, 13.4774303}, //
+
11059 {4.01504993, 13.4721498}, //
+
11060 {4.00965977, 13.4668798}, //
+
11061 {4.00435019, 13.4616003}, //
+
11062 {4.00035, 13.4575396}, //
+
11063 {3.9958899, 13.4528904}, //
+
11064 {3.9909699, 13.4476604}, //
+
11065 {3.98558998, 13.4418402}, //
+
11066 {3.97974992, 13.4354401}, //
+
11067 {3.97343993, 13.4284401}, //
+
11068 {3.96667004, 13.4208698}, //
+
11069 {3.95943999, 13.4126997}, //
+
11070 {3.95175004, 13.4039497}, //
+
11071 {3.94390011, 13.3949099}, //
+
11072 {3.93618011, 13.3858604}, //
+
11073 {3.92858005, 13.3768196}, //
+
11074 {3.92110991, 13.3677702}, //
+
11075 {3.91376996, 13.3587303}, //
+
11076 {3.90654993, 13.3496799}, //
+
11077 {3.89946008, 13.3406401}, //
+
11078 {3.89248991, 13.3315897}, //
+
11079 {3.88564992, 13.3225498}, //
+
11080 {3.87915993, 13.3137302}, //
+
11081 {3.87326002, 13.3053198}, //
+
11082 {3.86794996, 13.2973299}, //
+
11083 {3.86321998, 13.2897501}, //
+
11084 {3.85908008, 13.2826004}, //
+
11085 {3.85552001, 13.2758598}, //
+
11086 {3.85254002, 13.2695398}, //
+
11087 {3.85015011, 13.2636404}, //
+
11088 {3.84835005, 13.2581501}, //
+
11089 {3.84688997, 13.2528696}, //
+
11090 {3.84552002, 13.2475996}, //
+
11091 {3.84421992, 13.2423201}, //
+
11092 {3.84300995, 13.2370501}, //
+
11093 {3.84188008, 13.2317801}, //
+
11094 {3.8408401, 13.22651}, //
+
11095 {3.83987999, 13.22124}, //
+
11096 {3.83899999, 13.21597}, //
+
11097 {3.83820009, 13.2107}, //
+
11098 {3.83749008, 13.20784}, //
+
11099 {3.83685994, 13.2052603}, //
+
11100 {3.83630991, 13.20298}, //
+
11101 {3.83585, 13.2010002}, //
+
11102 {3.83546996, 13.1992998}, //
+
11103 {3.83518004, 13.1978998}, //
+
11104 {3.83497, 13.1967897}, //
+
11105 {3.83484006, 13.1959696}, //
+
11106 {3.8348, 13.1954498}, //
+
11107 {3.8348, 13.2140999}, //
+
11108 {3.83497, 13.2197199}, //
+
11109 {3.83546996, 13.2260599}, //
+
11110 {3.83630991, 13.2331104}, //
+
11111 {3.83748007, 13.2408705}, //
+
11112 {3.83897996, 13.2493401}, //
+
11113 {3.84082007, 13.2585201}, //
+
11114 {3.84299994, 13.2684202}, //
+
11115 {3.84551001, 13.2790298}, //
+
11116 {3.84835005, 13.29035}, //
+
11117 {3.85170007, 13.3022203}, //
+
11118 {3.85571003, 13.3144598}, //
+
11119 {3.86039996, 13.3270798}, //
+
11120 {3.86576009, 13.3400698}, //
+
11121 {3.87178993, 13.3534498}, //
+
11122 {3.87847996, 13.3671904}, //
+
11123 {3.88584995, 13.38132}, //
+
11124 {3.8938899, 13.3958197}, //
+
11125 {3.90260005, 13.4106998}, //
+
11126 {3.91201997, 13.4258204}, //
+
11127 {3.92219996, 13.44102}, //
+
11128 {3.93312001, 13.4563103}, //
+
11129 {3.9447999, 13.4716702}, //
+
11130 {3.9572401, 13.4871197}, //
+
11131 {3.97041988, 13.5026598}, //
+
11132 {3.98435998, 13.5182695}, //
+
11133 {3.9990499, 13.5339699}, //
+
11134 {4.01450014, 13.5497503}, //
+
11135 {4.04090977, 13.5753899}, //
+
11136 {4.06739998, 13.6025801}, //
+
11137 {4.09397984, 13.63132}, //
+
11138 {4.1206398, 13.6616001}, //
+
11139 {4.14737988, 13.6934404}, //
+
11140 {4.17421007, 13.72682}, //
+
11141 {4.2011199, 13.7617502}, //
+
11142 {4.22811985, 13.7982197}, //
+
11143 {4.25519991, 13.8362503}, //
+
11144 {4.28107977, 13.8742905}, //
+
11145 {4.30444002, 13.9107704}, //
+
11146 {4.3252902, 13.9457102}, //
+
11147 {4.34362984, 13.9790897}, //
+
11148 {4.35945988, 14.0109196}, //
+
11149 {4.37277985, 14.0412102}, //
+
11150 {4.38358021, 14.0699396}, //
+
11151 {4.39187002, 14.0971203}, //
+
11152 {4.39764977, 14.1227503}, //
+
11153 {4.40128994, 14.15172}, //
+
11154 {4.40467978, 14.1813602}, //
+
11155 {4.40782022, 14.2116699}, //
+
11156 {4.41070986, 14.24265}, //
+
11157 {4.41335011, 14.2742996}, //
+
11158 {4.41574001, 14.3066196}, //
+
11159 {4.41788006, 14.3396101}, //
+
11160 {4.41976023, 14.37327}, //
+
11161 {4.42140007, 14.4076004}, //
+
11162 {4.42222977, 14.4348497}, //
+
11163 {4.42323017, 14.4608402}, //
+
11164 {4.42438984, 14.4855804}, //
+
11165 {4.42573023, 14.5090704}, //
+
11166 {4.42723989, 14.5312901}, //
+
11167 {4.42890978, 14.5522699}, //
+
11168 {4.43074989, 14.5719805}, //
+
11169 {4.43276978, 14.5904398}, //
+
11170 {4.43494987, 14.6076498}, //
+
11171 {4.43655014, 14.6067495}, //
+
11172 {4.43837023, 14.6055498}, //
+
11173 {4.44039011, 14.6040602}, //
+
11174 {4.44262981, 14.6022797}, //
+
11175 {4.44506979, 14.6001997}, //
+
11176 {4.44773006, 14.5978298}, //
+
11177 {4.45059013, 14.5951595}, //
+
11178 {4.45367002, 14.5922003}, //
+
11179 {4.45695019, 14.5889502}, //
+
11180 {4.46041012, 14.5855198}, //
+
11181 {4.46400023, 14.5819998}, //
+
11182 {4.46771002, 14.5784101}, //
+
11183 {4.47153997, 14.5747204}, //
+
11184 {4.47549009, 14.57096}, //
+
11185 {4.47956991, 14.5671101}, //
+
11186 {4.48376989, 14.5631704}, //
+
11187 {4.48810005, 14.5591497}, //
+
11188 {4.4925499, 14.5550499}, //
+
11189 {4.4969902, 14.5509901}, //
+
11190 {4.5012598, 14.5471001}, //
+
11191 {4.50536013, 14.5433702}, //
+
11192 {4.50930023, 14.5398197}, //
+
11193 {4.51306009, 14.5364304}, //
+
11194 {4.51311016, 14.5363798}, //
+
11195 {4.5151, 14.5342999}, //
+
11196 {4.51741982, 14.5319099}, //
+
11197 {4.51970005, 14.5296001}, //
+
11198 {4.5218401, 14.5274296}, //
+
11199 {4.5237298, 14.5254202}, //
+
11200 {4.52537012, 14.5235901}, //
+
11201 {4.52675009, 14.5219202}, //
+
11202 {4.52789021, 14.5204201}, //
+
11203 {4.52876997, 14.5190897}, //
+
11204 {4.52939987, 14.5179195}, //
+
11205 {4.5297699, 14.5169296}, //
+
11206 {4.52990007, 14.5160999}, //
+
11207 {4.5300498, 14.5184603}, //
+
11208 {4.53048992, 14.5210304}, //
+
11209 {4.52930021, 14.5220604}, //
+
11210 {4.52645016, 14.5245504}, //
+
11211 {4.52334976, 14.5272703}, //
+
11212 {4.5200901, 14.5301504}, //
+
11213 {4.51666021, 14.5332098}, //
+
11214 {4.51311016, 14.5363798}, //
+
11215 {4.51274014, 14.5367699}, //
+
11216 {4.5103302, 14.5393295}, //
+
11217 {4.50788021, 14.5419703}, //
+
11218 {4.50539017, 14.5446901}, //
+
11219 {4.50285006, 14.5474901}, //
+
11220 {4.50026989, 14.5503798}, //
+
11221 {4.49765015, 14.5533504}, //
+
11222 {4.49507999, 14.5562897}, //
+
11223 {4.49263, 14.5590601}, //
+
11224 {4.49031019, 14.5616598}, //
+
11225 {4.48811007, 14.5640898}, //
+
11226 {4.48604012, 14.56635}, //
+
11227 {4.48408985, 14.5684404}, //
+
11228 {4.48226976, 14.5703602}, //
+
11229 {4.48056984, 14.5721197}, //
+
11230 {4.47900009, 14.5737}, //
+
11231 {4.47816992, 14.5745201}, //
+
11232 {4.47716999, 14.5754604}, //
+
11233 {4.47600985, 14.5765305}, //
+
11234 {4.47466993, 14.5777197}, //
+
11235 {4.47315979, 14.5790396}, //
+
11236 {4.47148991, 14.5804796}, //
+
11237 {4.46964979, 14.5820398}, //
+
11238 {4.46762991, 14.5837297}, //
+
11239 {4.46544981, 14.5855503}, //
+
11240 {4.46317005, 14.5874596}, //
+
11241 {4.46084976, 14.5894098}, //
+
11242 {4.45848989, 14.5914001}, //
+
11243 {4.45607996, 14.5934296}, //
+
11244 {4.45362997, 14.5955}, //
+
11245 {4.45113993, 14.59762}, //
+
11246 {4.44859982, 14.5997696}, //
+
11247 {4.44602013, 14.6019602}, //
+
11248 {4.44339991, 14.6042004}, //
+
11249 {4.4408102, 14.6064196}, //
+
11250 {4.43830013, 14.6085596}, //
+
11251 {4.43587017, 14.6106195}, //
+
11252 {4.43352985, 14.6125898}, //
+
11253 {4.43127012, 14.6144695}, //
+
11254 {4.42909002, 14.6162701}, //
+
11255 {4.42699003, 14.61798}, //
+
11256 {4.42498016, 14.6196098}, //
+
11257 {4.42304993, 14.62115}, //
+
11258 {4.42127991, 14.6225796}, //
+
11259 {4.4172101, 14.6258497}, //
+
11260 {4.41626978, 14.6266098}, //
+
11261 {4.41554022, 14.6271896}, //
+
11262 {4.41501999, 14.6276102}, //
+
11263 {4.41470003, 14.6278696}, //
+
11264 {4.4145999, 14.6279497}, //
+
11265 {4.41800022, 14.6313496}, //
+
11266 {4.41782999, 14.6315002}, //
+
11267 {4.41649008, 14.6326704}, //
+
11268 {4.40439987, 14.6431999}, //
+
11269 {4.40137005, 14.6458397}, //
+
11270 {4.39829016, 14.64849}, //
+
11271 {4.39518023, 14.6511297}, //
+
11272 {4.39202023, 14.6537704}, //
+
11273 {4.38882017, 14.6564102}, //
+
11274 {4.38558006, 14.6590405}, //
+
11275 {4.38228989, 14.6616802}, //
+
11276 {4.37897015, 14.66432}, //
+
11277 {4.37559986, 14.6669502}, //
+
11278 {4.37223005, 14.66959}, //
+
11279 {4.36889982, 14.6722403}, //
+
11280 {4.36562014, 14.67488}, //
+
11281 {4.36237001, 14.6775198}, //
+
11282 {4.35915995, 14.6801596}, //
+
11283 {4.35599995, 14.6827898}, //
+
11284 {4.35288, 14.6854296}, //
+
11285 {4.3497901, 14.6880703}, //
+
11286 {4.34674978, 14.6906996}, //
+
11287 {4.34386015, 14.6932297}, //
+
11288 {4.34122992, 14.69555}, //
+
11289 {4.33885002, 14.6976604}, //
+
11290 {4.33671999, 14.6995602}, //
+
11291 {4.33483982, 14.7012596}, //
+
11292 {4.33322001, 14.7027397}, //
+
11293 {4.33184004, 14.7040195}, //
+
11294 {4.33071995, 14.7050896}, //
+
11295 {4.3298502, 14.7059498}, //
+
11296 {4.32836008, 14.7074203}, //
+
11297 {4.32691002, 14.7088003}, //
+
11298 {4.32551003, 14.7101002}, //
+
11299 {4.32414007, 14.7113104}, //
+
11300 {4.32282019, 14.7124395}, //
+
11301 {4.32153988, 14.71348}, //
+
11302 {4.3203001, 14.7144403}, //
+
11303 {4.3190999, 14.7153101}, //
+
11304 {4.31794977, 14.7160997}, //
+
11305 {4.31685019, 14.7168999}, //
+
11306 {4.31579018, 14.7177801}, //
+
11307 {4.31477022, 14.7187405}, //
+
11308 {4.31378984, 14.7197905}, //
+
11309 {4.31285, 14.7209301}, //
+
11310 {4.31195021, 14.7221403}, //
+
11311 {4.31108999, 14.7234497}, //
+
11312 {4.31027985, 14.7248297}, //
+
11313 {4.30950022, 14.7263002}, //
+
11314 {4.30799007, 14.7293196}, //
+
11315 {4.3068099, 14.7316704}, //
+
11316 {4.30609989, 14.7330999}, //
+
11317 {4.30605984, 14.7337999}, //
+
11318 {4.30593014, 14.7344198}, //
+
11319 {4.30571985, 14.7349596}, //
+
11320 {4.30542994, 14.7354202}, //
+
11321 {4.3050499, 14.7357903}, //
+
11322 {4.30459023, 14.7360802}, //
+
11323 {4.30403996, 14.7362804}, //
+
11324 {4.30341005, 14.7364101}, //
+
11325 {4.30270004, 14.7364502}, //
+
11326 {4.30268002, 14.7371597}, //
+
11327 {4.30261993, 14.7377901}, //
+
11328 {4.30250978, 14.7383404}, //
+
11329 {4.30236006, 14.7388}, //
+
11330 {4.30217981, 14.7391796}, //
+
11331 {4.30193996, 14.7394695}, //
+
11332 {4.30167007, 14.7396803}, //
+
11333 {4.30136013, 14.73981}, //
+
11334 {4.30100012, 14.73985}, //
+
11335 {4.29930019, 14.73985}, //
+
11336 {4.29424, 14.7347898}, //
+
11337 {4.29111004, 14.7316599}, //
+
11338 {4.28989983, 14.7304497}, //
+
11339 {4.28859997, 14.7291498}, //
+
11340 {4.28722, 14.7277699}, //
+
11341 {4.28574991, 14.7263002}, //
+
11342 {4.28431988, 14.7248898}, //
+
11343 {4.28306007, 14.7236996}, //
+
11344 {4.28197002, 14.7227097}, //
+
11345 {4.28105021, 14.7219296}, //
+
11346 {4.28029013, 14.7213697}, //
+
11347 {4.27970982, 14.7210102}, //
+
11348 {4.2792902, 14.7208595}, //
+
11349 {4.27902985, 14.7209301}, //
+
11350 {4.27895021, 14.7212}, //
+
11351 {4.27895021, 14.7330999}, //
+
11352 {4.27962017, 14.7354803}, //
+
11353 {4.28012991, 14.7381096}, //
+
11354 {4.28045988, 14.7410002}, //
+
11355 {4.28063011, 14.7441397}, //
+
11356 {4.28063011, 14.74753}, //
+
11357 {4.28045988, 14.7511702}, //
+
11358 {4.28012991, 14.7550602}, //
+
11359 {4.27962017, 14.7592001}, //
+
11360 {4.27895021, 14.7636003}, //
+
11361 {4.27652979, 14.7730999}, //
+
11362 {4.27376986, 14.7820101}, //
+
11363 {4.27066994, 14.7903299}, //
+
11364 {4.26724005, 14.79807}, //
+
11365 {4.26347017, 14.8052301}, //
+
11366 {4.25936985, 14.8118}, //
+
11367 {4.25493002, 14.81779}, //
+
11368 {4.25016022, 14.8231897}, //
+
11369 {4.24504995, 14.8280001}, //
+
11370 {4.2416501, 14.8313999}, //
+
11371 {4.23995018, 14.8313999}, //
+
11372 {4.23960018, 14.8313599}, //
+
11373 {4.23929977, 14.8312302}, //
+
11374 {4.23902988, 14.8310204}, //
+
11375 {4.23881006, 14.8307304}, //
+
11376 {4.23862982, 14.8303499}, //
+
11377 {4.23848009, 14.8298903}, //
+
11378 {4.23837996, 14.82934}, //
+
11379 {4.23831987, 14.8287096}, //
+
11380 {4.23829985, 14.8280001}, //
+
11381 {4.23695993, 14.8266602}, //
+
11382 {4.23659992, 14.8262997}, //
+
11383 {4.23619986, 14.8259497}, //
+
11384 {4.23576021, 14.8256502}, //
+
11385 {4.23528004, 14.8253803}, //
+
11386 {4.23474979, 14.82516}, //
+
11387 {4.23418999, 14.8249798}, //
+
11388 {4.23358011, 14.8248301}, //
+
11389 {4.23293018, 14.8247299}, //
+
11390 {4.23223019, 14.8246698}, //
+
11391 {4.23150015, 14.8246498}, //
+
11392 {4.21455002, 14.8246498}, //
+
11393 {4.21384001, 14.8239603}, //
+
11394 {4.21321011, 14.82339}, //
+
11395 {4.21265984, 14.8229504}, //
+
11396 {4.21220016, 14.8226404}, //
+
11397 {4.21182013, 14.8224497}, //
+
11398 {4.21153021, 14.8223801}, //
+
11399 {4.21131992, 14.8224497}, //
+
11400 {4.21119022, 14.8226404}, //
+
11401 {4.21115017, 14.8229504}, //
+
11402 {4.21111012, 14.8233299}, //
+
11403 {4.21097994, 14.8237}, //
+
11404 {4.21077013, 14.8240805}, //
+
11405 {4.21048021, 14.8244495}, //
+
11406 {4.21010017, 14.8248196}, //
+
11407 {4.20964003, 14.8251896}, //
+
11408 {4.20909023, 14.8255596}, //
+
11409 {4.20845985, 14.8259296}, //
+
11410 {4.20774984, 14.8262997}, //
+
11411 {4.20699978, 14.8267002}, //
+
11412 {4.2062602, 14.8271399}, //
+
11413 {4.20551014, 14.8276196}, //
+
11414 {4.20476007, 14.8281498}, //
+
11415 {4.20401001, 14.8287096}, //
+
11416 {4.20325994, 14.82932}, //
+
11417 {4.20250988, 14.8299704}, //
+
11418 {4.2017498, 14.8306704}, //
+
11419 {4.20100021, 14.8313999}, //
+
11420 {4.20020008, 14.8329496}, //
+
11421 {4.19931984, 14.83459}, //
+
11422 {4.19835997, 14.8363104}, //
+
11423 {4.19730997, 14.83811}, //
+
11424 {4.19616985, 14.8399897}, //
+
11425 {4.19496012, 14.84196}, //
+
11426 {4.19364977, 14.8439999}, //
+
11427 {4.1922698, 14.8461399}, //
+
11428 {4.19080019, 14.8483496}, //
+
11429 {4.1886301, 14.8505297}, //
+
11430 {4.18662024, 14.8525496}, //
+
11431 {4.18311024, 14.85606}, //
+
11432 {4.18161011, 14.8575697}, //
+
11433 {4.1802702, 14.8589096}, //
+
11434 {4.17909002, 14.8600702}, //
+
11435 {4.1780901, 14.8610697}, //
+
11436 {4.17724991, 14.8619003}, //
+
11437 {4.1765399, 14.8625898}, //
+
11438 {4.17591, 14.8631601}, //
+
11439 {4.1753602, 14.8635998}, //
+
11440 {4.17490005, 14.8639097}, //
+
11441 {4.17452002, 14.8641005}, //
+
11442 {4.1742301, 14.8641701}, //
+
11443 {4.17401981, 14.8641005}, //
+
11444 {4.17389011, 14.8639097}, //
+
11445 {4.17385006, 14.8635998}, //
+
11446 {4.17385006, 14.8551502}, //
+
11447 {4.17456007, 14.8536396}, //
+
11448 {4.17518997, 14.8521299}, //
+
11449 {4.17573977, 14.8506203}, //
+
11450 {4.17619991, 14.8491201}, //
+
11451 {4.17657995, 14.8476105}, //
+
11452 {4.17686987, 14.8461103}, //
+
11453 {4.17708015, 14.8445997}, //
+
11454 {4.17720985, 14.8430996}, //
+
11455 {4.17724991, 14.8416004}, //
+
11456 {4.1771698, 14.8387699}, //
+
11457 {4.17690992, 14.8363104}, //
+
11458 {4.17648983, 14.8342304}, //
+
11459 {4.17591, 14.83253}, //
+
11460 {4.17514992, 14.8312101}, //
+
11461 {4.1742301, 14.8302698}, //
+
11462 {4.17314005, 14.8297005}, //
+
11463 {4.17187977, 14.8295097}, //
+
11464 {4.17045021, 14.8297005}, //
+
11465 {4.16891003, 14.8302202}, //
+
11466 {4.1672802, 14.8310404}, //
+
11467 {4.16556978, 14.8321505}, //
+
11468 {4.1637702, 14.8335505}, //
+
11469 {4.16189003, 14.8352499}, //
+
11470 {4.15992022, 14.8372297}, //
+
11471 {4.1578598, 14.83951}, //
+
11472 {4.15572023, 14.8420897}, //
+
11473 {4.15350008, 14.8449497}, //
+
11474 {4.15201998, 14.8463402}, //
+
11475 {4.15057993, 14.8474703}, //
+
11476 {4.14917994, 14.8483496}, //
+
11477 {4.14783001, 14.8489799}, //
+
11478 {4.14651012, 14.8493605}, //
+
11479 {4.14522982, 14.8494797}, //
+
11480 {4.14400005, 14.8493605}, //
+
11481 {4.14279985, 14.8489799}, //
+
11482 {4.1416502, 14.8483496}, //
+
11483 {4.14056015, 14.8475504}, //
+
11484 {4.13955021, 14.8466702}, //
+
11485 {4.13862991, 14.8457098}, //
+
11486 {4.1377902, 14.8446598}, //
+
11487 {4.13703012, 14.8435202}, //
+
11488 {4.13636017, 14.84231}, //
+
11489 {4.13576984, 14.8409996}, //
+
11490 {4.13527012, 14.8396196}, //
+
11491 {4.13485003, 14.83815}, //
+
11492 {4.13451004, 14.8366299}, //
+
11493 {4.13426018, 14.8350601}, //
+
11494 {4.13408995, 14.8334599}, //
+
11495 {4.13400984, 14.8318005}, //
+
11496 {4.13400984, 14.8301096}, //
+
11497 {4.13408995, 14.8283701}, //
+
11498 {4.13426018, 14.8265896}, //
+
11499 {4.13451004, 14.82477}, //
+
11500 {4.13485003, 14.8228998}, //
+
11501 {4.13525009, 14.8210802}, //
+
11502 {4.13569021, 14.8193903}, //
+
11503 {4.13616991, 14.8178301}, //
+
11504 {4.13670015, 14.81639}, //
+
11505 {4.13725996, 14.8150702}, //
+
11506 {4.13786983, 14.81388}, //
+
11507 {4.13851976, 14.8128099}, //
+
11508 {4.13922024, 14.8118696}, //
+
11509 {4.1399498, 14.8110504}, //
+
11510 {4.14127016, 14.81036}, //
+
11511 {4.14222002, 14.8097897}, //
+
11512 {4.14277983, 14.80935}, //
+
11513 {4.14297009, 14.8090401}, //
+
11514 {4.14277983, 14.8088503}, //
+
11515 {4.14222002, 14.8087797}, //
+
11516 {4.14127016, 14.8088503}, //
+
11517 {4.1399498, 14.8090401}, //
+
11518 {4.13824987, 14.80935}, //
+
11519 {4.1363101, 14.8098297}, //
+
11520 {4.13424015, 14.8105297}, //
+
11521 {4.13204002, 14.81143}, //
+
11522 {4.12972021, 14.8125401}, //
+
11523 {4.12727022, 14.8138599}, //
+
11524 {4.12469006, 14.8153896}, //
+
11525 {4.1219902, 14.8171396}, //
+
11526 {4.11916018, 14.8190899}, //
+
11527 {4.11619997, 14.82125}, //
+
11528 {4.11390018, 14.8219995}, //
+
11529 {4.11151981, 14.8227596}, //
+
11530 {4.10905981, 14.8235102}, //
+
11531 {4.10651016, 14.8242598}, //
+
11532 {4.10386992, 14.8250103}, //
+
11533 {4.10116005, 14.8257599}, //
+
11534 {4.09835005, 14.8265104}, //
+
11535 {4.09546995, 14.8272495}, //
+
11536 {4.09250021, 14.8280001}, //
+
11537 {4.08533001, 14.8303299}, //
+
11538 {4.07742023, 14.8327799}, //
+
11539 {4.06873989, 14.8353596}, //
+
11540 {4.05931997, 14.8380604}, //
+
11541 {4.04913998, 14.8408899}, //
+
11542 {4.03820992, 14.8438396}, //
+
11543 {4.02652979, 14.84692}, //
+
11544 {4.01409006, 14.8501196}, //
+
11545 {4.00089979, 14.8534498}, //
+
11546 {3.98750997, 14.8566904}, //
+
11547 {3.97445989, 14.8596401}, //
+
11548 {3.96174002, 14.8622999}, //
+
11549 {3.94935012, 14.8646603}, //
+
11550 {3.93729997, 14.8667402}, //
+
11551 {3.92559004, 14.8685198}, //
+
11552 {3.91421008, 14.8699999}, //
+
11553 {3.9031601, 14.8711996}, //
+
11554 {3.89245009, 14.8720999}, //
+
11555 {3.84325004, 14.8720999}, //
+
11556 {3.83913994, 14.8720598}, //
+
11557 {3.83505988, 14.8719301}, //
+
11558 {3.83102989, 14.8717203}, //
+
11559 {3.82702994, 14.8714304}, //
+
11560 {3.82308006, 14.8710499}, //
+
11561 {3.81915998, 14.8705902}, //
+
11562 {3.81527996, 14.8700399}, //
+
11563 {3.81145, 14.8694096}, //
+
11564 {3.80765009, 14.8687}, //
+
11565 {3.80158997, 14.86866}, //
+
11566 {3.79543996, 14.8685303}, //
+
11567 {3.78921008, 14.8683205}, //
+
11568 {3.78289008, 14.8680296}, //
+
11569 {3.77648997, 14.86765}, //
+
11570 {3.77000999, 14.8671904}, //
+
11571 {3.76343989, 14.8666401}, //
+
11572 {3.75678992, 14.8660097}, //
+
11573 {3.75005007, 14.8653002}, //
+
11574 {3.73854995, 14.8652601}, //
+
11575 {3.72668004, 14.8651304}, //
+
11576 {3.71443009, 14.8649197}, //
+
11577 {3.70180011, 14.8646297}, //
+
11578 {3.6888001, 14.8642502}, //
+
11579 {3.67543006, 14.8637896}, //
+
11580 {3.66167998, 14.8632402}, //
+
11581 {3.64755011, 14.8626099}, //
+
11582 {3.63304996, 14.8619003}, //
+
11583 {3.61846995, 14.8611498}, //
+
11584 {3.60408998, 14.8604097}, //
+
11585 {3.58992004, 14.8596601}, //
+
11586 {3.57595992, 14.8589096}, //
+
11587 {3.56221008, 14.85816}, //
+
11588 {3.54867005, 14.8574104}, //
+
11589 {3.53534007, 14.8566599}, //
+
11590 {3.5222199, 14.8558998}, //
+
11591 {3.50929999, 14.8551502}, //
+
11592 {3.4516499, 14.8551502}, //
+
11593 {3.43498993, 14.8537197}, //
+
11594 {3.41815996, 14.8524599}, //
+
11595 {3.40117002, 14.8513699}, //
+
11596 {3.38401008, 14.8504496}, //
+
11597 {3.36667991, 14.8496904}, //
+
11598 {3.34917998, 14.8491096}, //
+
11599 {3.33152008, 14.84869}, //
+
11600 {3.31368995, 14.8484297}, //
+
11601 {3.29570007, 14.8483496}, //
+
11602 {3.28182006, 14.84764}, //
+
11603 {3.2673099, 14.8470097}, //
+
11604 {3.2521801, 14.8464603}, //
+
11605 {3.23641992, 14.8459997}, //
+
11606 {3.22003007, 14.8456202}, //
+
11607 {3.20301008, 14.8453302}, //
+
11608 {3.18536997, 14.8451204}, //
+
11609 {3.16709995, 14.8449898}, //
+
11610 {3.14820004, 14.8449497}, //
+
11611 {3.12926006, 14.8449898}, //
+
11612 {3.11086011, 14.8451204}, //
+
11613 {3.09300995, 14.8453302}, //
+
11614 {3.07570004, 14.8456202}, //
+
11615 {3.05892992, 14.8459997}, //
+
11616 {3.04271007, 14.8464603}, //
+
11617 {3.02702999, 14.8470097}, //
+
11618 {3.01188993, 14.84764}, //
+
11619 {2.99729991, 14.8483496}, //
+
11620 {2.98845005, 14.8484097}, //
+
11621 {2.97997999, 14.8486004}, //
+
11622 {2.97188997, 14.8489199}, //
+
11623 {2.96416998, 14.8493605}, //
+
11624 {2.95682001, 14.8499203}, //
+
11625 {2.9498601, 14.8506203}, //
+
11626 {2.94325995, 14.8514404}, //
+
11627 {2.93704009, 14.8523798}, //
+
11628 {2.93120003, 14.8534498}, //
+
11629 {2.92568994, 14.8546}, //
+
11630 {2.92048001, 14.8557997}, //
+
11631 {2.91556001, 14.8570299}, //
+
11632 {2.91092992, 14.8583097}, //
+
11633 {2.9066, 14.8596296}, //
+
11634 {2.90256, 14.86098}, //
+
11635 {2.89880991, 14.86238}, //
+
11636 {2.89535999, 14.8638201}, //
+
11637 {2.89219999, 14.8653002}, //
+
11638 {2.88918996, 14.8667698}, //
+
11639 {2.88617992, 14.8681498}, //
+
11640 {2.88316989, 14.8694601}, //
+
11641 {2.88016009, 14.8706703}, //
+
11642 {2.87714005, 14.87181}, //
+
11643 {2.87413001, 14.87286}, //
+
11644 {2.87111998, 14.8738203}, //
+
11645 {2.86810994, 14.8746996}, //
+
11646 {2.86509991, 14.8754997}, //
+
11647 {2.85781002, 14.8762999}, //
+
11648 {2.84950995, 14.8771801}, //
+
11649 {2.84021997, 14.8781404}, //
+
11650 {2.82991004, 14.87918}, //
+
11651 {2.81860995, 14.8803101}, //
+
11652 {2.80629992, 14.8815203}, //
+
11653 {2.79298997, 14.8828201}, //
+
11654 {2.77867007, 14.8841896}, //
+
11655 {2.76335001, 14.8856497}, //
+
11656 {2.74907994, 14.8873301}, //
+
11657 {2.73339009, 14.8893404}, //
+
11658 {2.71626997, 14.8916903}, //
+
11659 {2.69773006, 14.8943701}, //
+
11660 {2.67775989, 14.8973904}, //
+
11661 {2.65636992, 14.9007397}, //
+
11662 {2.63355994, 14.9044199}, //
+
11663 {2.60931993, 14.9084501}, //
+
11664 {2.58365011, 14.9127998}, //
+
11665 {2.56228995, 14.91506}, //
+
11666 {2.54187989, 14.9173098}, //
+
11667 {2.52243996, 14.91957}, //
+
11668 {2.50396991, 14.9218197}, //
+
11669 {2.48644996, 14.9240799}, //
+
11670 {2.46989012, 14.9263296}, //
+
11671 {2.45429993, 14.9285898}, //
+
11672 {2.43967009, 14.9308395}, //
+
11673 {2.42600012, 14.9330997}, //
+
11674 {2.41279006, 14.9354095}, //
+
11675 {2.39953995, 14.9378004}, //
+
11676 {2.38625002, 14.9402704}, //
+
11677 {2.37292004, 14.9428301}, //
+
11678 {2.35955, 14.9454699}, //
+
11679 {2.34612989, 14.9481897}, //
+
11680 {2.33267999, 14.9509897}, //
+
11681 {2.31919003, 14.9538803}, //
+
11682 {2.30565, 14.9568501}, //
+
11683 {2.29944992, 14.9576902}, //
+
11684 {2.2929101, 14.9586897}, //
+
11685 {2.28604007, 14.9598703}, //
+
11686 {2.27884007, 14.9612103}, //
+
11687 {2.27130008, 14.9627104}, //
+
11688 {2.26343012, 14.9643803}, //
+
11689 {2.25521994, 14.9662199}, //
+
11690 {2.24668002, 14.9682302}, //
+
11691 {2.23779988, 14.9703999}, //
+
11692 {2.22101998, 14.9733}, //
+
11693 {2.2053299, 14.9759398}, //
+
11694 {2.19072008, 14.9783297}, //
+
11695 {2.17720008, 14.9804602}, //
+
11696 {2.16476989, 14.9823503}, //
+
11697 {2.15341997, 14.9839802}, //
+
11698 {2.1431601, 14.9853497}, //
+
11699 {2.13399005, 14.9864798}, //
+
11700 {2.12590003, 14.9873505}, //
+
11701 {2.11848998, 14.98806}, //
+
11702 {2.11134005, 14.9886904}, //
+
11703 {2.10442996, 14.9892397}, //
+
11704 {2.09777999, 14.9897003}, //
+
11705 {2.09137988, 14.9900799}, //
+
11706 {2.08523011, 14.9903698}, //
+
11707 {2.07933998, 14.9905796}, //
+
11708 {2.07368994, 14.9907103}, //
+
11709 {2.06830001, 14.9907503}, //
+
11710 {2.04795003, 14.9907503}, //
+
11711 {2.03987002, 14.9909601}, //
+
11712 {2.03070998, 14.9915895}, //
+
11713 {2.02045012, 14.99263}, //
+
11714 {2.00910997, 14.9940996}, //
+
11715 {1.99667001, 14.9959803}, //
+
11716 {1.98315001, 14.9982796}, //
+
11717 {1.96853995, 15.0010004}, //
+
11718 {1.95283997, 15.0041399}, //
+
11719 {1.93605006, 15.0077}, //
+
11720 {1.91981006, 15.0107203}, //
+
11721 {1.90272999, 15.0137396}, //
+
11722 {1.88481998, 15.0167599}, //
+
11723 {1.86606002, 15.0197802}, //
+
11724 {1.84648001, 15.0228004}, //
+
11725 {1.82605004, 15.0258102}, //
+
11726 {1.80479002, 15.0288296}, //
+
11727 {1.78269005, 15.0318403}, //
+
11728 {1.75975001, 15.0348501}, //
+
11729 {1.72148001, 15.0390797}, //
+
11730 {1.68506002, 15.0427198}, //
+
11731 {1.65048003, 15.0457802}, //
+
11732 {1.61774004, 15.0482502}, //
+
11733 {1.58685005, 15.0501299}, //
+
11734 {1.55779004, 15.0514297}, //
+
11735 {1.53059006, 15.0521402}, //
+
11736 {1.50522006, 15.0522604}, //
+
11737 {1.48169994, 15.0517998}, //
+
11738 {1.44099998, 15.0517998}, //
+
11739 {1.42744994, 15.0515299}, //
+
11740 {1.41237998, 15.0507097}, //
+
11741 {1.39581001, 15.0493498}, //
+
11742 {1.37773001, 15.0474396}, //
+
11743 {1.35813999, 15.0449896}, //
+
11744 {1.33703995, 15.0419998}, //
+
11745 {1.31444001, 15.0384598}, //
+
11746 {1.29032004, 15.03438}, //
+
11747 {1.26470006, 15.0297499}, //
+
11748 {1.23891997, 15.02491}, //
+
11749 {1.21431005, 15.0201998}, //
+
11750 {1.19087005, 15.0156202}, //
+
11751 {1.16860998, 15.0111599}, //
+
11752 {1.14751005, 15.0068197}, //
+
11753 {1.12758994, 15.0026197}, //
+
11754 {1.10883999, 14.9985399}, //
+
11755 {1.09125996, 14.9945803}, //
+
11756 {1.07484996, 14.9907503}, //
+
11757 {1.06007004, 14.9866896}, //
+
11758 {1.04436004, 14.9820404}, //
+
11759 {1.02774, 14.9768105}, //
+
11760 {1.01019001, 14.9709902}, //
+
11761 {0.991726995, 14.9645901}, //
+
11762 {0.972338974, 14.9575901}, //
+
11763 {0.952030003, 14.9500198}, //
+
11764 {0.930800974, 14.9418497}, //
+
11765 {0.908649981, 14.9330997}, //
+
11766 {0.886300981, 14.9240704}, //
+
11767 {0.864454985, 14.9150295}, //
+
11768 {0.843110979, 14.9059896}, //
+
11769 {0.822269976, 14.8969603}, //
+
11770 {0.801931024, 14.8879204}, //
+
11771 {0.782094002, 14.8788795}, //
+
11772 {0.762759984, 14.8698397}, //
+
11773 {0.743929029, 14.8607903}, //
+
11774 {0.725600004, 14.8517504}, //
+
11775 {0.691362023, 14.8305702}, //
+
11776 {0.657959998, 14.8077097}, //
+
11777 {0.625393987, 14.7831802}, //
+
11778 {0.59366399, 14.7569799}, //
+
11779 {0.562770009, 14.7291002}, //
+
11780 {0.546076, 14.7126904}, //
+
11781 {0.544767976, 14.7109003}, //
+
11782 {0.537400007, 14.7008495}, //
+
11783 {0.533172011, 14.6949701}, //
+
11784 {0.528774977, 14.6886396}, //
+
11785 {0.524210989, 14.6818399}, //
+
11786 {0.519478977, 14.6745796}, //
+
11787 {0.514578998, 14.6668596}, //
+
11788 {0.509510994, 14.6586704}, //
+
11789 {0.504275024, 14.6500301}, //
+
11790 {0.498872012, 14.6409197}, //
+
11791 {0.493299991, 14.6313496}, //
+
11792 {0.487717986, 14.6213903}, //
+
11793 {0.482259989, 14.6111002}, //
+
11794 {0.476927996, 14.6004696}, //
+
11795 {0.47172001, 14.58951}, //
+
11796 {0.466636002, 14.5782099}, //
+
11797 {0.461677998, 14.5665703}, //
+
11798 {0.456844002, 14.5545998}, //
+
11799 {0.452134997, 14.5422897}, //
+
11800 {0.447549999, 14.5296497}, //
+
11801 {0.44759199, 14.5298796}, //
+
11802 {0.447928011, 14.5317202}, //
+
11803 {0.448222011, 14.53333}, //
+
11804 {0.449061006, 14.53794}, //
+
11805 {0.449607015, 14.5409298}, //
+
11806 {0.450235993, 14.5443897}, //
+
11807 {0.450949997, 14.5482998}, //
+
11808 {0.451768011, 14.5524902}, //
+
11809 {0.452710003, 14.5567503}, //
+
11810 {0.453777999, 14.5611095}, //
+
11811 {0.454970002, 14.5655403}, //
+
11812 {0.456286013, 14.5700598}, //
+
11813 {0.457727998, 14.5746603}, //
+
11814 {0.459293991, 14.57934}, //
+
11815 {0.460985005, 14.5840998}, //
+
11816 {0.462799996, 14.5889502}, //
+
11817 {0.464709014, 14.5938301}, //
+
11818 {0.466659009, 14.59867}, //
+
11819 {0.468650013, 14.6034603}, //
+
11820 {0.470681012, 14.6082096}, //
+
11821 {0.472754002, 14.6129303}, //
+
11822 {0.474866986, 14.61759}, //
+
11823 {0.477019995, 14.62222}, //
+
11824 {0.479214996, 14.6268101}, //
+
11825 {0.481449991, 14.6313496}, //
+
11826 {0.484575987, 14.6373796}, //
+
11827 {0.487908989, 14.6434097}, //
+
11828 {0.491450012, 14.6494398}, //
+
11829 {0.495198011, 14.6554699}, //
+
11830 {0.499154001, 14.6615}, //
+
11831 {0.503316998, 14.6675301}, //
+
11832 {0.505293012, 14.6702499}, //
+
11833 {0.532711029, 14.6995497}, //
+
11834 {0.546076, 14.7126904}, //
+
11835 {0.552366018, 14.7212696}, //
+
11836 {0.553978026, 14.7234697}, //
+
11837 {0.555128992, 14.7250404}, //
+
11838 {0.555819988, 14.7259903}, //
+
11839 {0.556050003, 14.7263002}, //
+
11840 {0.552219987, 14.7231197}, //
+
11841 {0.54826498, 14.7196102}, //
+
11842 {0.544183016, 14.7157602}, //
+
11843 {0.539976001, 14.7115698}, //
+
11844 {0.535642982, 14.7070503}, //
+
11845 {0.531183004, 14.7021904}, //
+
11846 {0.526597977, 14.6969995}, //
+
11847 {0.521887004, 14.6914701}, //
+
11848 {0.517050028, 14.6856003}, //
+
11849 {0.512265027, 14.6795797}, //
+
11850 {0.507686973, 14.6735497}, //
+
11851 {0.505293012, 14.6702499}, //
+
11852 {0.503488004, 14.6683197}, //
+
11853 {0.475100994, 14.6354198}, //
+
11854 {0.447549999, 14.6008501}, //
+
11855 {0.43562001, 14.5854101}, //
+
11856 {0.423940003, 14.5692101}, //
+
11857 {0.412510991, 14.5522604}, //
+
11858 {0.401333004, 14.5345497}, //
+
11859 {0.390404999, 14.5160904}, //
+
11860 {0.379727989, 14.49687}, //
+
11861 {0.369300991, 14.4769001}, //
+
11862 {0.359124988, 14.4561796}, //
+
11863 {0.34920001, 14.4347}, //
+
11864 {0.339745998, 14.4133997}, //
+
11865 {0.330960006, 14.3931904}, //
+
11866 {0.322843999, 14.3740597}, //
+
11867 {0.315398008, 14.35602}, //
+
11868 {0.308620006, 14.3390703}, //
+
11869 {0.302511007, 14.3232098}, //
+
11870 {0.297071993, 14.3084402}, //
+
11871 {0.292300999, 14.2947502}, //
+
11872 {0.288199991, 14.2821503}, //
+
11873 {0.286772996, 14.2785397}, //
+
11874 {0.285513997, 14.2752705}, //
+
11875 {0.28442201, 14.2723303}, //
+
11876 {0.283499002, 14.2697401}, //
+
11877 {0.282743007, 14.2674704}, //
+
11878 {0.282155991, 14.2655497}, //
+
11879 {0.281735986, 14.2639599}, //
+
11880 {0.281484008, 14.2627096}, //
+
11881 {0.281399995, 14.2617998}, //
+
11882 {0.280488014, 14.2609997}, //
+
11883 {0.279240012, 14.2601204}, //
+
11884 {0.277655989, 14.25916}, //
+
11885 {0.275736004, 14.25811}, //
+
11886 {0.273479998, 14.2569704}, //
+
11887 {0.270889014, 14.2557602}, //
+
11888 {0.267962009, 14.2544498}, //
+
11889 {0.264699012, 14.2530699}, //
+
11890 {0.261099994, 14.2516003}, //
+
11891 {0.257375002, 14.2501001}, //
+
11892 {0.253731996, 14.2486}, //
+
11893 {0.250171989, 14.2470903}, //
+
11894 {0.246694997, 14.2455902}, //
+
11895 {0.243301004, 14.2440796}, //
+
11896 {0.239988998, 14.2425804}, //
+
11897 {0.236760005, 14.2410698}, //
+
11898 {0.233613998, 14.2395601}, //
+
11899 {0.230550006, 14.2380505}, //
+
11900 {0.225492001, 14.2358799}, //
+
11901 {0.220851004, 14.2338696}, //
+
11902 {0.216628, 14.2320299}, //
+
11903 {0.212822005, 14.23036}, //
+
11904 {0.209433004, 14.2288599}, //
+
11905 {0.206460997, 14.22752}, //
+
11906 {0.203906998, 14.2263403}, //
+
11907 {0.201769993, 14.2253399}, //
+
11908 {0.200049996, 14.2244997}, //
+
11909 {0.199336007, 14.2237701}, //
+
11910 {0.198706999, 14.2230701}, //
+
11911 {0.198161006, 14.2224197}, //
+
11912 {0.197698995, 14.2218103}, //
+
11913 {0.197321996, 14.2212496}, //
+
11914 {0.197027996, 14.2207203}, //
+
11915 {0.196817994, 14.2202396}, //
+
11916 {0.196692005, 14.2198}, //
+
11917 {0.196649998, 14.2194004}, //
+
11918 {0.196713001, 14.2189999}, //
+
11919 {0.196902007, 14.2185602}, //
+
11920 {0.197217003, 14.2180796}, //
+
11921 {0.197657004, 14.2175503}, //
+
11922 {0.198223993, 14.2169905}, //
+
11923 {0.198917001, 14.2163801}, //
+
11924 {0.199735001, 14.2157297}, //
+
11925 {0.200680003, 14.2150297}, //
+
11926 {0.201749995, 14.2143002}, //
+
11927 {0.202861995, 14.2136297}, //
+
11928 {0.203930005, 14.2131205}, //
+
11929 {0.204955995, 14.2127895}, //
+
11930 {0.205937997, 14.2126198}, //
+
11931 {0.206876993, 14.2126198}, //
+
11932 {0.207772002, 14.2127895}, //
+
11933 {0.208625004, 14.2131205}, //
+
11934 {0.209434003, 14.2136297}, //
+
11935 {0.210199997, 14.2143002}, //
+
11936 {0.210956007, 14.2150097}, //
+
11937 {0.211711004, 14.2156401}, //
+
11938 {0.212467, 14.2161903}, //
+
11939 {0.213221997, 14.21665}, //
+
11940 {0.213978007, 14.2170296}, //
+
11941 {0.214733005, 14.2173204}, //
+
11942 {0.215489, 14.2175303}, //
+
11943 {0.216243997, 14.21766}, //
+
11944 {0.216999993, 14.2177}, //
+
11945 {0.217672005, 14.21766}, //
+
11946 {0.218174994, 14.2175303}, //
+
11947 {0.218511, 14.2173204}, //
+
11948 {0.218678996, 14.2170296}, //
+
11949 {0.218678996, 14.21665}, //
+
11950 {0.218511, 14.2161903}, //
+
11951 {0.218174994, 14.2156401}, //
+
11952 {0.217672005, 14.2150097}, //
+
11953 {0.216999993, 14.2143002}, //
+
11954 {0.216202006, 14.2135401}, //
+
11955 {0.215321004, 14.2127895}, //
+
11956 {0.214356005, 14.2120304}, //
+
11957 {0.213305995, 14.2112799}, //
+
11958 {0.212173, 14.2105198}, //
+
11959 {0.210956007, 14.2097702}, //
+
11960 {0.209654003, 14.2090101}, //
+
11961 {0.208269, 14.2082596}, //
+
11962 {0.206799999, 14.2075005}, //
+
11963 {0.205299005, 14.2067499}, //
+
11964 {0.203797996, 14.2060099}, //
+
11965 {0.200790003, 14.2045097}, //
+
11966 {0.199285001, 14.2037601}, //
+
11967 {0.197778001, 14.2030096}, //
+
11968 {0.196270004, 14.20226}, //
+
11969 {0.194759995, 14.2014999}, //
+
11970 {0.19325, 14.2007504}, //
+
11971 {0.191790998, 14.1999903}, //
+
11972 {0.190414995, 14.1992397}, //
+
11973 {0.189122006, 14.1984797}, //
+
11974 {0.187912002, 14.1977301}, //
+
11975 {0.186783999, 14.19697}, //
+
11976 {0.185738996, 14.1962204}, //
+
11977 {0.184777007, 14.1954603}, //
+
11978 {0.183897004, 14.1947098}, //
+
11979 {0.1831, 14.1939497}, //
+
11980 {0.180381, 14.1932297}, //
+
11981 {0.178248003, 14.1925402}, //
+
11982 {0.176699996, 14.1919003}, //
+
11983 {0.175736994, 14.1913004}, //
+
11984 {0.175358996, 14.1907396}, //
+
11985 {0.175567001, 14.1902199}, //
+
11986 {0.176358998, 14.1897402}, //
+
11987 {0.177736998, 14.1892996}, //
+
11988 {0.179700002, 14.1889}, //
+
11989 {0.182090998, 14.18859}, //
+
11990 {0.184732005, 14.1884003}, //
+
11991 {0.187621996, 14.1883297}, //
+
11992 {0.190761998, 14.1884003}, //
+
11993 {0.194150999, 14.18859}, //
+
11994 {0.197788998, 14.1889}, //
+
11995 {0.201676995, 14.1893396}, //
+
11996 {0.205814004, 14.1899099}, //
+
11997 {0.210199997, 14.1906004}, //
+
11998 {0.218700007, 14.1906004}, //
+
11999 {0.218321994, 14.1905804}, //
+
12000 {0.217943996, 14.1905203}, //
+
12001 {0.217566997, 14.1904097}, //
+
12002 {0.217188999, 14.1902599}, //
+
12003 {0.216811001, 14.1900797}, //
+
12004 {0.216433004, 14.1898403}, //
+
12005 {0.216056004, 14.1895704}, //
+
12006 {0.215678006, 14.1892595}, //
+
12007 {0.214921996, 14.1885405}, //
+
12008 {0.214543998, 14.1882296}, //
+
12009 {0.214166999, 14.1879597}, //
+
12010 {0.213789001, 14.1877203}, //
+
12011 {0.213411003, 14.1875401}, //
+
12012 {0.213033006, 14.1873903}, //
+
12013 {0.212656006, 14.1872797}, //
+
12014 {0.212277994, 14.1872196}, //
+
12015 {0.211899996, 14.1871996}, //
+
12016 {0.210199997, 14.1871996}, //
+
12017 {0.210179001, 14.1871595}, //
+
12018 {0.210115999, 14.1870298}, //
+
12019 {0.210011005, 14.18682}, //
+
12020 {0.209171996, 14.1851397}, //
+
12021 {0.208857, 14.1845102}, //
+
12022 {0.208499998, 14.1837997}, //
+
12023 {0.208091006, 14.1829996}, //
+
12024 {0.207596004, 14.1821203}, //
+
12025 {0.207017004, 14.18116}, //
+
12026 {0.206351995, 14.18011}, //
+
12027 {0.205602005, 14.1789703}, //
+
12028 {0.204767004, 14.1777601}, //
+
12029 {0.203845993, 14.1764498}, //
+
12030 {0.202840999, 14.1750698}, //
+
12031 {0.201749995, 14.1736002}, //
+
12032 {0.200617, 14.1721201}, //
+
12033 {0.199483007, 14.17068}, //
+
12034 {0.198349997, 14.1692801}, //
+
12035 {0.197217003, 14.1679296}, //
+
12036 {0.196082994, 14.1666098}, //
+
12037 {0.194949999, 14.1653299}, //
+
12038 {0.193817005, 14.1640997}, //
+
12039 {0.192682996, 14.1629}, //
+
12040 {0.191550002, 14.1617498}, //
+
12041 {0.190364003, 14.1606398}, //
+
12042 {0.189051002, 14.1595697}, //
+
12043 {0.187610999, 14.1585398}, //
+
12044 {0.186043993, 14.1575603}, //
+
12045 {0.184349, 14.15662}, //
+
12046 {0.182528004, 14.1557302}, //
+
12047 {0.180579007, 14.1548796}, //
+
12048 {0.178503007, 14.1540699}, //
+
12049 {0.176300004, 14.1533003}, //
+
12050 {0.174149007, 14.1525698}, //
+
12051 {0.172205999, 14.1518698}, //
+
12052 {0.170471996, 14.1512203}, //
+
12053 {0.168946996, 14.15061}, //
+
12054 {0.167630002, 14.1500502}, //
+
12055 {0.166521996, 14.1495199}, //
+
12056 {0.165622994, 14.1490402}, //
+
12057 {0.164931998, 14.1485996}, //
+
12058 {0.164450005, 14.1482}, //
+
12059 {0.164134994, 14.1478205}, //
+
12060 {0.163946003, 14.14744}, //
+
12061 {0.163883001, 14.1470699}, //
+
12062 {0.163946003, 14.1466904}, //
+
12063 {0.164134994, 14.1463099}, //
+
12064 {0.164450005, 14.1459303}, //
+
12065 {0.164891005, 14.1455603}, //
+
12066 {0.165456995, 14.1451797}, //
+
12067 {0.166150004, 14.1448002}, //
+
12068 {0.166947007, 14.1444902}, //
+
12069 {0.167826995, 14.1443005}, //
+
12070 {0.168788999, 14.1442299}, //
+
12071 {0.169834003, 14.1443005}, //
+
12072 {0.170962006, 14.1444902}, //
+
12073 {0.172171995, 14.1448002}, //
+
12074 {0.173464999, 14.1452398}, //
+
12075 {0.174841002, 14.1458101}, //
+
12076 {0.176300004, 14.1464996}, //
+
12077 {0.178461999, 14.1471701}, //
+
12078 {0.180414006, 14.1476803}, //
+
12079 {0.182155997, 14.1480103}, //
+
12080 {0.183688, 14.14818}, //
+
12081 {0.185010001, 14.14818}, //
+
12082 {0.186122, 14.1480103}, //
+
12083 {0.187024996, 14.1476803}, //
+
12084 {0.187717006, 14.1471701}, //
+
12085 {0.188199997, 14.1464996}, //
+
12086 {0.188514993, 14.1456604}, //
+
12087 {0.188703999, 14.1446505}, //
+
12088 {0.188767001, 14.1434803}, //
+
12089 {0.188703999, 14.1421299}, //
+
12090 {0.188514993, 14.1406202}, //
+
12091 {0.188199997, 14.1389399}, //
+
12092 {0.187758997, 14.1371002}, //
+
12093 {0.187193006, 14.1350803}, //
+
12094 {0.186499998, 14.1329002}, //
+
12095 {0.185618997, 14.1306896}, //
+
12096 {0.184487998, 14.1285601}, //
+
12097 {0.183106005, 14.1265097}, //
+
12098 {0.181473002, 14.1245499}, //
+
12099 {0.179590002, 14.1226702}, //
+
12100 {0.177456006, 14.1208801}, //
+
12101 {0.175071001, 14.1191702}, //
+
12102 {0.172435999, 14.1175404}, //
+
12103 {0.169550002, 14.1160002}, //
+
12104 {0.167576998, 14.1139898}, //
+
12105 {0.166189998, 14.1124697}, //
+
12106 {0.165389001, 14.1114702}, //
+
12107 {0.165175006, 14.11096}, //
+
12108 {0.165546998, 14.11096}, //
+
12109 {0.166506007, 14.1114702}, //
+
12110 {0.168051004, 14.1124697}, //
+
12111 {0.170182005, 14.1139898}, //
+
12112 {0.172900006, 14.1160002}, //
+
12113 {0.178428993, 14.1191397}, //
+
12114 {0.184459999, 14.12253}, //
+
12115 {0.190993994, 14.1261702}, //
+
12116 {0.198030993, 14.1300602}, //
+
12117 {0.205569997, 14.1342001}, //
+
12118 {0.213611007, 14.1386003}, //
+
12119 {0.222155005, 14.1432505}, //
+
12120 {0.231200993, 14.1481504}, //
+
12121 {0.24075, 14.1533003}, //
+
12122 {0.245682001, 14.1567698}, //
+
12123 {0.249945, 14.1596603}, //
+
12124 {0.253538996, 14.1619596}, //
+
12125 {0.256464005, 14.1636801}, //
+
12126 {0.258718997, 14.1647997}, //
+
12127 {0.260306001, 14.1653404}, //
+
12128 {0.261222988, 14.1653004}, //
+
12129 {0.261471003, 14.16467}, //
+
12130 {0.261049986, 14.1634502}, //
+
12131 {0.260096014, 14.1618099}, //
+
12132 {0.258722007, 14.1599302}, //
+
12133 {0.256927997, 14.1577902}, //
+
12134 {0.254714012, 14.1554003}, //
+
12135 {0.252081007, 14.1527596}, //
+
12136 {0.249027997, 14.1498699}, //
+
12137 {0.245554999, 14.1467304}, //
+
12138 {0.241661996, 14.1433401}, //
+
12139 {0.237350002, 14.1396999}, //
+
12140 {0.233540997, 14.13589}, //
+
12141 {0.229649007, 14.132}, //
+
12142 {0.225672007, 14.1280203}, //
+
12143 {0.221612006, 14.1239595}, //
+
12144 {0.217466995, 14.1198196}, //
+
12145 {0.213238999, 14.1155901}, //
+
12146 {0.208927006, 14.1112804}, //
+
12147 {0.200049996, 14.1023998}, //
+
12148 {0.197794005, 14.1001902}, //
+
12149 {0.195536003, 14.0980501}, //
+
12150 {0.193278, 14.0960102}, //
+
12151 {0.191018, 14.0940399}, //
+
12152 {0.188757002, 14.0921602}, //
+
12153 {0.186493993, 14.0903597}, //
+
12154 {0.184230998, 14.0886402}, //
+
12155 {0.181966007, 14.0869999}, //
+
12156 {0.179700002, 14.0854502}, //
+
12157 {0.177527994, 14.0840101}, //
+
12158 {0.175522, 14.0826998}, //
+
12159 {0.173683003, 14.0815096}, //
+
12160 {0.172011003, 14.0804501}, //
+
12161 {0.170506001, 14.0795097}, //
+
12162 {0.169166997, 14.0786896}, //
+
12163 {0.167993993, 14.0780001}, //
+
12164 {0.166988999, 14.0774403}, //
+
12165 {0.166150004, 14.0769997}, //
+
12166 {0.165436, 14.0766401}, //
+
12167 {0.163422003, 14.0756397}, //
+
12168 {0.163128003, 14.07549}, //
+
12169 {0.162918001, 14.0753803}, //
+
12170 {0.162750006, 14.0753002}, //
+
12171 {0.176300004, 14.0753002}, //
+
12172 {0.181914002, 14.0752602}, //
+
12173 {0.186690003, 14.0751305}, //
+
12174 {0.190628007, 14.0749197}, //
+
12175 {0.193727002, 14.0746298}, //
+
12176 {0.195987999, 14.0742502}, //
+
12177 {0.197411001, 14.0737896}, //
+
12178 {0.197996005, 14.0732403}, //
+
12179 {0.197742, 14.0726099}, //
+
12180 {0.196649998, 14.0719004}, //
+
12181 {0.196566001, 14.0711403}, //
+
12182 {0.196314007, 14.0703897}, //
+
12183 {0.195894003, 14.0696297}, //
+
12184 {0.195307001, 14.0688801}, //
+
12185 {0.194551006, 14.06812}, //
+
12186 {0.193627998, 14.0673704}, //
+
12187 {0.192535996, 14.0666103}, //
+
12188 {0.191276997, 14.0658598}, //
+
12189 {0.189850003, 14.0650997}, //
+
12190 {0.188348994, 14.0643301}, //
+
12191 {0.186848, 14.0635204}, //
+
12192 {0.185343996, 14.0626698}, //
+
12193 {0.183840007, 14.06178}, //
+
12194 {0.182335004, 14.0608397}, //
+
12195 {0.180828005, 14.0598602}, //
+
12196 {0.179319993, 14.0588303}, //
+
12197 {0.177809998, 14.0577602}, //
+
12198 {0.176300004, 14.0566502}, //
+
12199 {0.174882993, 14.0555601}, //
+
12200 {0.173632994, 14.0545502}, //
+
12201 {0.172549993, 14.0536299}, //
+
12202 {0.171633005, 14.0527897}, //
+
12203 {0.170883, 14.0520296}, //
+
12204 {0.170300007, 14.0513601}, //
+
12205 {0.169882998, 14.0507698}, //
+
12206 {0.169633001, 14.0502701}, //
+
12207 {0.169550002, 14.0498505}, //
+
12208 {0.169716999, 14.0495396}, //
+
12209 {0.170219004, 14.0493498}, //
+
12210 {0.171056002, 14.0492802}, //
+
12211 {0.172226995, 14.0493498}, //
+
12212 {0.173731998, 14.0495396}, //
+
12213 {0.175571993, 14.0498505}, //
+
12214 {0.177746996, 14.0502901}, //
+
12215 {0.180255994, 14.0508604}, //
+
12216 {0.1831, 14.0515499}, //
+
12217 {0.186090007, 14.05233}, //
+
12218 {0.189037994, 14.0531502}, //
+
12219 {0.191944003, 14.0540104}, //
+
12220 {0.194809005, 14.0549097}, //
+
12221 {0.197631001, 14.05585}, //
+
12222 {0.200411007, 14.0568399}, //
+
12223 {0.203149006, 14.0578699}, //
+
12224 {0.205845997, 14.0589399}, //
+
12225 {0.208499998, 14.06005}, //
+
12226 {0.211123005, 14.0611401}, //
+
12227 {0.213701993, 14.06215}, //
+
12228 {0.216239005, 14.0630703}, //
+
12229 {0.218731999, 14.0639}, //
+
12230 {0.221182004, 14.0646496}, //
+
12231 {0.223589003, 14.06532}, //
+
12232 {0.225951999, 14.0658998}, //
+
12233 {0.228273004, 14.06639}, //
+
12234 {0.230550006, 14.0668001}, //
+
12235 {0.234579995, 14.0674696}, //
+
12236 {0.237601995, 14.0679798}, //
+
12237 {0.240245998, 14.0684204}, //
+
12238 {0.24075, 14.0684996}, //
+
12239 {0.240623996, 14.0684204}, //
+
12240 {0.240245998, 14.0681601}, //
+
12241 {0.238735005, 14.0671597}, //
+
12242 {0.237601995, 14.0663996}, //
+
12243 {0.230550006, 14.0616999}, //
+
12244 {0.228251994, 14.0601196}, //
+
12245 {0.225869, 14.0583601}, //
+
12246 {0.223399997, 14.0564404}, //
+
12247 {0.220845997, 14.0543604}, //
+
12248 {0.218207002, 14.0521002}, //
+
12249 {0.215482995, 14.0496798}, //
+
12250 {0.212674007, 14.0470896}, //
+
12251 {0.209779993, 14.0443296}, //
+
12252 {0.206799999, 14.0414}, //
+
12253 {0.203747004, 14.0384102}, //
+
12254 {0.200609997, 14.0354605}, //
+
12255 {0.197389007, 14.0325499}, //
+
12256 {0.194084004, 14.0296803}, //
+
12257 {0.190695003, 14.0268497}, //
+
12258 {0.187222004, 14.0240698}, //
+
12259 {0.183665007, 14.0213203}, //
+
12260 {0.180024996, 14.01861}, //
+
12261 {0.176300004, 14.0159502}, //
+
12262 {0.172658995, 14.0132999}, //
+
12263 {0.169269994, 14.0106001}, //
+
12264 {0.166133001, 14.0078602}, //
+
12265 {0.163248003, 14.0050802}, //
+
12266 {0.160614997, 14.0022602}, //
+
12267 {0.158233002, 13.9993896}, //
+
12268 {0.156103998, 13.9964895}, //
+
12269 {0.154226005, 13.9935398}, //
+
12270 {0.152600005, 13.99055}, //
+
12271 {0.149578005, 13.98666}, //
+
12272 {0.146558002, 13.9825096}, //
+
12273 {0.143538997, 13.9781199}, //
+
12274 {0.140521005, 13.9734697}, //
+
12275 {0.137503996, 13.9685698}, //
+
12276 {0.134489, 13.9634199}, //
+
12277 {0.131475002, 13.9580097}, //
+
12278 {0.128462002, 13.9523602}, //
+
12279 {0.12545, 13.9464502}, //
+
12280 {0.119511001, 13.9369097}, //
+
12281 {0.113738999, 13.9278698}, //
+
12282 {0.108133003, 13.9193401}, //
+
12283 {0.102693997, 13.9112997}, //
+
12284 {0.0974221975, 13.9037704}, //
+
12285 {0.092316702, 13.89674}, //
+
12286 {0.0873778015, 13.8902102}, //
+
12287 {0.0826056004, 13.8841801}, //
+
12288 {0.0780000016, 13.8786497}, //
+
12289 {0.0752919987, 13.8751097}, //
+
12290 {0.0732123032, 13.8720398}, //
+
12291 {0.0717611015, 13.8694201}, //
+
12292 {0.0709382966, 13.8672705}, //
+
12293 {0.0707437992, 13.8655701}, //
+
12294 {0.071177803, 13.8643398}, //
+
12295 {0.0722400993, 13.8635702}, //
+
12296 {0.0739308968, 13.8632498}, //
+
12297 {0.0762500018, 13.8634005}, //
+
12298 {0.0790826976, 13.8640099}, //
+
12299 {0.082291998, 13.8650703}, //
+
12300 {0.0858777985, 13.8666}, //
+
12301 {0.0898400992, 13.8685904}, //
+
12302 {0.094178997, 13.8710299}, //
+
12303 {0.0988944024, 13.87393}, //
+
12304 {0.103986003, 13.8773003}, //
+
12305 {0.109454997, 13.8811197}, //
+
12306 {0.1153, 13.8853998}, //
+
12307 {0.116759002, 13.8861303}, //
+
12308 {0.118134998, 13.8868303}, //
+
12309 {0.119428001, 13.8874798}, //
+
12310 {0.120637998, 13.8880901}, //
+
12311 {0.121766001, 13.8886499}, //
+
12312 {0.122810997, 13.8891802}, //
+
12313 {0.123773001, 13.8896599}, //
+
12314 {0.124652997, 13.8900995}, //
+
12315 {0.12545, 13.8905001}, //
+
12316 {0.126185, 13.8908796}, //
+
12317 {0.126876995, 13.8912601}, //
+
12318 {0.127527997, 13.8916302}, //
+
12319 {0.128135994, 13.8920097}, //
+
12320 {0.128702998, 13.8923903}, //
+
12321 {0.129227996, 13.8927698}, //
+
12322 {0.12545, 13.8871002}, //
+
12323 {0.123109996, 13.8836498}, //
+
12324 {0.120603003, 13.8800697}, //
+
12325 {0.117927998, 13.8763704}, //
+
12326 {0.115084998, 13.8725405}, //
+
12327 {0.112072997, 13.8685799}, //
+
12328 {0.108893998, 13.8645}, //
+
12329 {0.105548002, 13.8602896}, //
+
12330 {0.102032997, 13.8559599}, //
+
12331 {0.0983500034, 13.8514996}, //
+
12332 {0.0946457013, 13.8470402}, //
+
12333 {0.0910660028, 13.8427095}, //
+
12334 {0.0876111016, 13.8385}, //
+
12335 {0.0842809007, 13.8344202}, //
+
12336 {0.0810753033, 13.8304596}, //
+
12337 {0.0779943988, 13.8266296}, //
+
12338 {0.075038299, 13.8229303}, //
+
12339 {0.0722068027, 13.8193502}, //
+
12340 {0.0694999993, 13.8158998}, //
+
12341 {0.0669709966, 13.8126202}, //
+
12342 {0.0646506026, 13.8095398}, //
+
12343 {0.0625388995, 13.8066797}, //
+
12344 {0.0606358014, 13.8040199}, //
+
12345 {0.0589414015, 13.8015804}, //
+
12346 {0.0574555993, 13.7993402}, //
+
12347 {0.0561783984, 13.7973204}, //
+
12348 {0.0551098995, 13.7954998}, //
+
12349 {0.0542499982, 13.7938995}, //
+
12350 {0.0543122999, 13.79321}, //
+
12351 {0.0544993989, 13.7926397}, //
+
12352 {0.0548111014, 13.7922001}, //
+
12353 {0.0552475005, 13.7918901}, //
+
12354 {0.0558086, 13.7917004}, //
+
12355 {0.0564943999, 13.7916298}, //
+
12356 {0.0573049001, 13.7917004}, //
+
12357 {0.0582401007, 13.7918901}, //
+
12358 {0.0593000017, 13.7922001}, //
+
12359 {0.0605167001, 13.7926197}, //
+
12360 {0.061900001, 13.7931204}, //
+
12361 {0.0634500012, 13.7937098}, //
+
12362 {0.0651666969, 13.7943697}, //
+
12363 {0.0670500025, 13.7951202}, //
+
12364 {0.0691, 13.7959604}, //
+
12365 {0.0713166967, 13.7968702}, //
+
12366 {0.0737000033, 13.7978697}, //
+
12367 {0.0762500018, 13.7989502}, //
+
12368 {0.0789147988, 13.8000803}, //
+
12369 {0.0816204026, 13.8012104}, //
+
12370 {0.0843667015, 13.8023396}, //
+
12371 {0.087153703, 13.8034697}, //
+
12372 {0.0899814963, 13.8045998}, //
+
12373 {0.0928499997, 13.8057299}, //
+
12374 {0.0957593024, 13.8068504}, //
+
12375 {0.0987093002, 13.8079796}, //
+
12376 {0.1017, 13.8091002}, //
+
12377 {0.104658999, 13.8102102}, //
+
12378 {0.107490003, 13.8112803}, //
+
12379 {0.110193998, 13.8123102}, //
+
12380 {0.112772003, 13.8133001}, //
+
12381 {0.115222, 13.8142405}, //
+
12382 {0.117544003, 13.8151398}, //
+
12383 {0.119740002, 13.816}, //
+
12384 {0.121808998, 13.8168201}, //
+
12385 {0.123750001, 13.8176003}, //
+
12386 {0.125533998, 13.8183603}, //
+
12387 {0.127107993, 13.8191099}, //
+
12388 {0.128472, 13.81987}, //
+
12389 {0.129627004, 13.8206196}, //
+
12390 {0.130570993, 13.8213797}, //
+
12391 {0.131305993, 13.8221302}, //
+
12392 {0.131830007, 13.8228903}, //
+
12393 {0.132145002, 13.8236399}, //
+
12394 {0.132249996, 13.8243999}, //
+
12395 {0.132943004, 13.8243198}, //
+
12396 {0.133508995, 13.8240604}, //
+
12397 {0.133949995, 13.8236399}, //
+
12398 {0.134265006, 13.82306}, //
+
12399 {0.134453997, 13.8223}, //
+
12400 {0.134516999, 13.8213797}, //
+
12401 {0.134453997, 13.8202896}, //
+
12402 {0.134265006, 13.8190298}, //
+
12403 {0.133949995, 13.8176003}, //
+
12404 {0.133530006, 13.8160601}, //
+
12405 {0.133027002, 13.8144302}, //
+
12406 {0.132439002, 13.8127203}, //
+
12407 {0.131767005, 13.8109198}, //
+
12408 {0.131011993, 13.8090401}, //
+
12409 {0.130171999, 13.8070698}, //
+
12410 {0.129249007, 13.8050098}, //
+
12411 {0.128241003, 13.8028698}, //
+
12412 {0.127149999, 13.8006496}, //
+
12413 {0.125995994, 13.7983704}, //
+
12414 {0.124798998, 13.7960501}, //
+
12415 {0.123561002, 13.7936897}, //
+
12416 {0.122281, 13.7912798}, //
+
12417 {0.120958999, 13.7888298}, //
+
12418 {0.119594, 13.7863398}, //
+
12419 {0.118188001, 13.7838001}, //
+
12420 {0.116740003, 13.7812204}, //
+
12421 {0.115249999, 13.7785997}, //
+
12422 {0.113790996, 13.7760296}, //
+
12423 {0.112415001, 13.7735796}, //
+
12424 {0.111121997, 13.7712603}, //
+
12425 {0.109912001, 13.7690601}, //
+
12426 {0.108783998, 13.7669897}, //
+
12427 {0.107739002, 13.7650404}, //
+
12428 {0.106776997, 13.7632198}, //
+
12429 {0.105897002, 13.7615204}, //
+
12430 {0.105099998, 13.7599497}, //
+
12431 {0.10362, 13.7584295}, //
+
12432 {0.102181002, 13.7568598}, //
+
12433 {0.100782998, 13.7552605}, //
+
12434 {0.099425897, 13.7536001}, //
+
12435 {0.0981092975, 13.7519102}, //
+
12436 {0.0968333036, 13.7501698}, //
+
12437 {0.0955981016, 13.7483902}, //
+
12438 {0.094403699, 13.7465696}, //
+
12439 {0.093249999, 13.7447004}, //
+
12440 {0.0921795964, 13.7428799}, //
+
12441 {0.0912351981, 13.74119}, //
+
12442 {0.0904166996, 13.7396297}, //
+
12443 {0.0897241011, 13.7381897}, //
+
12444 {0.0891574025, 13.7368698}, //
+
12445 {0.0887167007, 13.7356796}, //
+
12446 {0.0884018987, 13.7346096}, //
+
12447 {0.0882129967, 13.7336702}, //
+
12448 {0.0881500021, 13.7328501}, //
+
12449 {0.0881500021, 13.7294502}, //
+
12450 {0.0883172974, 13.7295103}, //
+
12451 {0.0888191015, 13.7297001}, //
+
12452 {0.1017, 13.7345505}, //
+
12453 {0.104764, 13.7357502}, //
+
12454 {0.10791, 13.7370701}, //
+
12455 {0.111138999, 13.7385101}, //
+
12456 {0.114450999, 13.7400799}, //
+
12457 {0.117844999, 13.7417803}, //
+
12458 {0.121321999, 13.7435904}, //
+
12459 {0.124881998, 13.7455397}, //
+
12460 {0.128525004, 13.7476101}, //
+
12461 {0.132249996, 13.7497997}, //
+
12462 {0.135975003, 13.7521}, //
+
12463 {0.139614999, 13.7544804}, //
+
12464 {0.143171996, 13.7569504}, //
+
12465 {0.146644995, 13.7594995}, //
+
12466 {0.150033996, 13.7621403}, //
+
12467 {0.153338999, 13.7648697}, //
+
12468 {0.156560004, 13.7676802}, //
+
12469 {0.159696996, 13.7705698}, //
+
12470 {0.162750006, 13.77355}, //
+
12471 {0.164219007, 13.77495}, //
+
12472 {0.165601999, 13.7761297}, //
+
12473 {0.166899994, 13.7771101}, //
+
12474 {0.168112993, 13.7778797}, //
+
12475 {0.169240996, 13.7784405}, //
+
12476 {0.170283005, 13.7787905}, //
+
12477 {0.171241, 13.7789402}, //
+
12478 {0.172113001, 13.7788696}, //
+
12479 {0.172900006, 13.7785997}, //
+
12480 {0.173593, 13.7781801}, //
+
12481 {0.174159005, 13.7776804}, //
+
12482 {0.174600005, 13.7770901}, //
+
12483 {0.174915001, 13.7764196}, //
+
12484 {0.175104007, 13.7756596}, //
+
12485 {0.175166994, 13.7748203}, //
+
12486 {0.175104007, 13.7739}, //
+
12487 {0.174915001, 13.7728901}, //
+
12488 {0.174600005, 13.7718}, //
+
12489 {0.174201995, 13.7706604}, //
+
12490 {0.173763007, 13.7694702}, //
+
12491 {0.173282996, 13.76824}, //
+
12492 {0.172763005, 13.7669697}, //
+
12493 {0.172202006, 13.7656498}, //
+
12494 {0.171599999, 13.7642899}, //
+
12495 {0.170956999, 13.7628899}, //
+
12496 {0.170274004, 13.7614403}, //
+
12497 {0.169550002, 13.7599497}, //
+
12498 {0.168835998, 13.7592001}, //
+
12499 {0.168207005, 13.75846}, //
+
12500 {0.167660996, 13.7577105}, //
+
12501 {0.167199001, 13.7569599}, //
+
12502 {0.166822001, 13.7562103}, //
+
12503 {0.166528001, 13.7554598}, //
+
12504 {0.166317999, 13.7547102}, //
+
12505 {0.166191995, 13.7539501}, //
+
12506 {0.166150004, 13.7531996}, //
+
12507 {0.166150004, 13.7463999}, //
+
12508 {0.166779995, 13.7469902}, //
+
12509 {0.167156994, 13.7472401}, //
+
12510 {0.167282999, 13.74716}, //
+
12511 {0.167156994, 13.7467403}, //
+
12512 {0.166779995, 13.7459803}, //
+
12513 {0.166150004, 13.7448902}, //
+
12514 {0.165269002, 13.7434597}, //
+
12515 {0.164134994, 13.7417002}, //
+
12516 {0.162750006, 13.7396002}, //
+
12517 {0.161176994, 13.7372398}, //
+
12518 {0.159477994, 13.7346697}, //
+
12519 {0.157655999, 13.7318897}, //
+
12520 {0.155708, 13.7289}, //
+
12521 {0.153635994, 13.7257004}, //
+
12522 {0.151438996, 13.72229}, //
+
12523 {0.149116993, 13.7186699}, //
+
12524 {0.146670997, 13.7148399}, //
+
12525 {0.144099995, 13.7108002}, //
+
12526 {0.141444996, 13.7066803}, //
+
12527 {0.138747007, 13.7025995}, //
+
12528 {0.136005998, 13.6985598}, //
+
12529 {0.133221, 13.6945601}, //
+
12530 {0.130392998, 13.6906004}, //
+
12531 {0.127522007, 13.6866903}, //
+
12532 {0.124608003, 13.6828203}, //
+
12533 {0.121651001, 13.6789904}, //
+
12534 {0.118649997, 13.6752005}, //
+
12535 {0.115639001, 13.6714802}, //
+
12536 {0.112627998, 13.6678305}, //
+
12537 {0.109617002, 13.6642799}, //
+
12538 {0.106605999, 13.6608}, //
+
12539 {0.103593998, 13.6574202}, //
+
12540 {0.100583002, 13.65411}, //
+
12541 {0.0975722, 13.6508904}, //
+
12542 {0.0945611, 13.6477499}, //
+
12543 {0.09155, 13.6447001}, //
+
12544 {0.0894400999, 13.64186}, //
+
12545 {0.0876215994, 13.6393499}, //
+
12546 {0.0860944018, 13.6371698}, //
+
12547 {0.0848585963, 13.6353302}, //
+
12548 {0.083914198, 13.6338301}, //
+
12549 {0.0832611024, 13.6326599}, //
+
12550 {0.0828993991, 13.6318197}, //
+
12551 {0.0828289986, 13.63132}, //
+
12552 {0.0830499977, 13.6311502}, //
+
12553 {0.0835530981, 13.6312504}, //
+
12554 {0.0843067989, 13.6315699}, //
+
12555 {0.0853110999, 13.6320896}, //
+
12556 {0.0865660012, 13.6328201}, //
+
12557 {0.0880715996, 13.6337605}, //
+
12558 {0.0898277983, 13.6349096}, //
+
12559 {0.0918345973, 13.63626}, //
+
12560 {0.0940919966, 13.6378298}, //
+
12561 {0.0966000035, 13.6395998}, //
+
12562 {0.0992648005, 13.64153}, //
+
12563 {0.101970002, 13.6435404}, //
+
12564 {0.104717001, 13.6456404}, //
+
12565 {0.107504003, 13.6478205}, //
+
12566 {0.110330999, 13.6500797}, //
+
12567 {0.113200001, 13.65242}, //
+
12568 {0.116108999, 13.65485}, //
+
12569 {0.119058996, 13.6573601}, //
+
12570 {0.122050002, 13.6599503}, //
+
12571 {0.125072002, 13.6625605}, //
+
12572 {0.128092006, 13.6651402}, //
+
12573 {0.131110996, 13.6676702}, //
+
12574 {0.134129003, 13.6701603}, //
+
12575 {0.137145996, 13.6726103}, //
+
12576 {0.140160993, 13.6750202}, //
+
12577 {0.143175006, 13.6773901}, //
+
12578 {0.146188006, 13.6797104}, //
+
12579 {0.149200007, 13.6820002}, //
+
12580 {0.152002007, 13.6861696}, //
+
12581 {0.154385, 13.68962}, //
+
12582 {0.156350002, 13.6923599}, //
+
12583 {0.157895997, 13.6943903}, //
+
12584 {0.159024, 13.6957102}, //
+
12585 {0.159732997, 13.69631}, //
+
12586 {0.160024002, 13.6962004}, //
+
12587 {0.159896001, 13.6953802}, //
+
12588 {0.159349993, 13.6938496}, //
+
12589 {0.158510998, 13.6918697}, //
+
12590 {0.157506004, 13.6896696}, //
+
12591 {0.156332999, 13.6872702}, //
+
12592 {0.154993996, 13.6846504}, //
+
12593 {0.153488994, 13.6818199}, //
+
12594 {0.151816994, 13.6787796}, //
+
12595 {0.149977997, 13.6755304}, //
+
12596 {0.147972003, 13.6720695}, //
+
12597 {0.145799994, 13.6683998}, //
+
12598 {0.142032996, 13.6637602}, //
+
12599 {0.138266996, 13.6588697}, //
+
12600 {0.134499997, 13.6537304}, //
+
12601 {0.130732998, 13.6483297}, //
+
12602 {0.126966998, 13.6426802}, //
+
12603 {0.123199999, 13.6367798}, //
+
12604 {0.119433001, 13.63062}, //
+
12605 {0.115667, 13.6242104}, //
+
12606 {0.111900002, 13.6175499}, //
+
12607 {0.111143999, 13.6167498}, //
+
12608 {0.110389002, 13.6158705}, //
+
12609 {0.109632999, 13.6149101}, //
+
12610 {0.108878002, 13.6138697}, //
+
12611 {0.108121999, 13.6127396}, //
+
12612 {0.107367001, 13.6115303}, //
+
12613 {0.106610999, 13.6102304}, //
+
12614 {0.105856001, 13.60886}, //
+
12615 {0.105099998, 13.6073999}, //
+
12616 {0.103683002, 13.6052399}, //
+
12617 {0.102433003, 13.6032896}, //
+
12618 {0.101350002, 13.6015396}, //
+
12619 {0.100432999, 13.6000099}, //
+
12620 {0.0996832997, 13.59869}, //
+
12621 {0.0991000012, 13.59758}, //
+
12622 {0.0986832976, 13.5966797}, //
+
12623 {0.0984333009, 13.5959797}, //
+
12624 {0.0983500034, 13.5955}, //
+
12625 {0.0983913988, 13.5952396}, //
+
12626 {0.0985153988, 13.5951796}, //
+
12627 {0.0987221971, 13.5953302}, //
+
12628 {0.0990116969, 13.5956898}, //
+
12629 {0.0993840024, 13.5962601}, //
+
12630 {0.0998388976, 13.5970297}, //
+
12631 {0.100377001, 13.5980101}, //
+
12632 {0.100997001, 13.5992002}, //
+
12633 {0.1017, 13.6006002}, //
+
12634 {0.103315003, 13.6036501}, //
+
12635 {0.105140001, 13.6067896}, //
+
12636 {0.107171997, 13.6100101}, //
+
12637 {0.109413996, 13.6133204}, //
+
12638 {0.111864001, 13.6167002}, //
+
12639 {0.114522003, 13.6201801}, //
+
12640 {0.117389999, 13.6237297}, //
+
12641 {0.120465003, 13.6273804}, //
+
12642 {0.123750001, 13.6310997}, //
+
12643 {0.127202004, 13.6349201}, //
+
12644 {0.130779997, 13.6388197}, //
+
12645 {0.134482995, 13.6428003}, //
+
12646 {0.138312995, 13.6468601}, //
+
12647 {0.142269, 13.6510096}, //
+
12648 {0.146349996, 13.6552296}, //
+
12649 {0.150556996, 13.6595402}, //
+
12650 {0.154890999, 13.6639299}, //
+
12651 {0.159349993, 13.6683998}, //
+
12652 {0.164397001, 13.6733799}, //
+
12653 {0.168981999, 13.6777802}, //
+
12654 {0.173106, 13.6815901}, //
+
12655 {0.176767007, 13.6848202}, //
+
12656 {0.179967001, 13.6874599}, //
+
12657 {0.182705998, 13.6895103}, //
+
12658 {0.184982002, 13.69098}, //
+
12659 {0.186796993, 13.6918602}, //
+
12660 {0.188150004, 13.6921501}, //
+
12661 {0.189073995, 13.6919804}, //
+
12662 {0.189579993, 13.6914797}, //
+
12663 {0.189667001, 13.6906404}, //
+
12664 {0.189335003, 13.6894703}, //
+
12665 {0.188584998, 13.6879702}, //
+
12666 {0.187417001, 13.6861296}, //
+
12667 {0.185829997, 13.6839504}, //
+
12668 {0.183824003, 13.6814404}, //
+
12669 {0.181400001, 13.6786003}, //
+
12670 {0.178703994, 13.6755505}, //
+
12671 {0.175880998, 13.67241}, //
+
12672 {0.172932997, 13.6691904}, //
+
12673 {0.169859007, 13.6658802}, //
+
12674 {0.166658998, 13.6625004}, //
+
12675 {0.163332999, 13.6590204}, //
+
12676 {0.159880996, 13.6554699}, //
+
12677 {0.156304002, 13.6518202}, //
+
12678 {0.152600005, 13.6480999}, //
+
12679 {0.149682999, 13.6443501}, //
+
12680 {0.146974996, 13.6406498}, //
+
12681 {0.144477993, 13.6369801}, //
+
12682 {0.142189994, 13.6333599}, //
+
12683 {0.140111998, 13.6297798}, //
+
12684 {0.138244003, 13.6262302}, //
+
12685 {0.136585996, 13.6227303}, //
+
12686 {0.135138005, 13.6192703}, //
+
12687 {0.133900002, 13.6158504}, //
+
12688 {0.132798001, 13.6125202}, //
+
12689 {0.131736994, 13.6093197}, //
+
12690 {0.130716994, 13.6062498}, //
+
12691 {0.129737005, 13.6033001}, //
+
12692 {0.128797993, 13.6004801}, //
+
12693 {0.127900004, 13.5977802}, //
+
12694 {0.127042994, 13.5952101}, //
+
12695 {0.126225993, 13.5927696}, //
+
12696 {0.12545, 13.5904503}, //
+
12697 {0.125407994, 13.5874796}, //
+
12698 {0.125282004, 13.58459}, //
+
12699 {0.125072002, 13.58179}, //
+
12700 {0.124778003, 13.5790701}, //
+
12701 {0.124401003, 13.5764303}, //
+
12702 {0.123939, 13.5738697}, //
+
12703 {0.123392999, 13.5713997}, //
+
12704 {0.122763999, 13.5690098}, //
+
12705 {0.122050002, 13.5667}, //
+
12706 {0.121377997, 13.5653095}, //
+
12707 {0.120875001, 13.5641804}, //
+
12708 {0.120539002, 13.5633001}, //
+
12709 {0.120370999, 13.5626698}, //
+
12710 {0.120370999, 13.5622902}, //
+
12711 {0.120539002, 13.56217}, //
+
12712 {0.120875001, 13.5622902}, //
+
12713 {0.121377997, 13.5626698}, //
+
12714 {0.122050002, 13.5633001}, //
+
12715 {0.123893999, 13.5651398}, //
+
12716 {0.125066996, 13.5663204}, //
+
12717 {0.131421998, 13.57267}, //
+
12718 {0.133428007, 13.5746803}, //
+
12719 {0.135600001, 13.5768499}, //
+
12720 {0.137844995, 13.5790997}, //
+
12721 {0.140046999, 13.5812998}, //
+
12722 {0.142205998, 13.5834599}, //
+
12723 {0.144320995, 13.5855703}, //
+
12724 {0.146393001, 13.5876398}, //
+
12725 {0.148422003, 13.5896702}, //
+
12726 {0.152351007, 13.5936003}, //
+
12727 {0.154249996, 13.5955}, //
+
12728 {0.156118006, 13.5974102}, //
+
12729 {0.157943994, 13.5993605}, //
+
12730 {0.159728006, 13.6013498}, //
+
12731 {0.161469996, 13.6033802}, //
+
12732 {0.163169995, 13.6054497}, //
+
12733 {0.164828002, 13.6075697}, //
+
12734 {0.166444004, 13.6097202}, //
+
12735 {0.168017998, 13.6119099}, //
+
12736 {0.169550002, 13.61415}, //
+
12737 {0.169550002, 13.6175499}, //
+
12738 {0.170231998, 13.6182203}, //
+
12739 {0.170790002, 13.6187296}, //
+
12740 {0.171222001, 13.6190596}, //
+
12741 {0.171529993, 13.6192303}, //
+
12742 {0.171713993, 13.6192303}, //
+
12743 {0.171772003, 13.6190596}, //
+
12744 {0.171706006, 13.6187296}, //
+
12745 {0.171515003, 13.6182203}, //
+
12746 {0.171200007, 13.6175499}, //
+
12747 {0.170811996, 13.6166897}, //
+
12748 {0.170379996, 13.6156197}, //
+
12749 {0.169906005, 13.6143398}, //
+
12750 {0.169387996, 13.6128597}, //
+
12751 {0.168826997, 13.6111603}, //
+
12752 {0.168221995, 13.6092596}, //
+
12753 {0.167575002, 13.6071501}, //
+
12754 {0.166884005, 13.6048298}, //
+
12755 {0.166150004, 13.6022997}, //
+
12756 {0.165352002, 13.5996904}, //
+
12757 {0.164471, 13.5971098}, //
+
12758 {0.163506001, 13.5945797}, //
+
12759 {0.162456006, 13.5920897}, //
+
12760 {0.161322996, 13.5896397}, //
+
12761 {0.160106003, 13.5872297}, //
+
12762 {0.158803999, 13.5848598}, //
+
12763 {0.157418996, 13.5825396}, //
+
12764 {0.155949995, 13.5802498}, //
+
12765 {0.154469997, 13.57728}, //
+
12766 {0.153031006, 13.5743904}, //
+
12767 {0.151632994, 13.5715904}, //
+
12768 {0.150276005, 13.5688696}, //
+
12769 {0.148958996, 13.5662298}, //
+
12770 {0.147682995, 13.5636702}, //
+
12771 {0.146448001, 13.5612001}, //
+
12772 {0.145254001, 13.5588102}, //
+
12773 {0.144099995, 13.5565004}, //
+
12774 {0.143030003, 13.5543299}, //
+
12775 {0.142085001, 13.5523195}, //
+
12776 {0.141267002, 13.5504799}, //
+
12777 {0.140573993, 13.54881}, //
+
12778 {0.140007004, 13.5473099}, //
+
12779 {0.139567003, 13.54597}, //
+
12780 {0.139252007, 13.5447903}, //
+
12781 {0.139063001, 13.5437899}, //
+
12782 {0.138999999, 13.5429497}, //
+
12783 {0.139083996, 13.5430098}, //
+
12784 {0.139336005, 13.5431995}, //
+
12785 {0.140342996, 13.5439596}, //
+
12786 {0.142021999, 13.5452204}, //
+
12787 {0.143114001, 13.5460396}, //
+
12788 {0.145799994, 13.5480499}, //
+
12789 {0.147351995, 13.5492897}, //
+
12790 {0.148987994, 13.5507298}, //
+
12791 {0.150705993, 13.5523901}, //
+
12792 {0.152505994, 13.5542498}, //
+
12793 {0.154390007, 13.5563202}, //
+
12794 {0.156356007, 13.55861}, //
+
12795 {0.158403993, 13.5611}, //
+
12796 {0.160536006, 13.5637903}, //
+
12797 {0.162750006, 13.5667}, //
+
12798 {0.182328001, 13.5862799}, //
+
12799 {0.189524993, 13.5934801}, //
+
12800 {0.19325, 13.5972004}, //
+
12801 {0.196933001, 13.6007996}, //
+
12802 {0.200450003, 13.6040602}, //
+
12803 {0.203799993, 13.6069899}, //
+
12804 {0.206983, 13.6095896}, //
+
12805 {0.209999993, 13.6118498}, //
+
12806 {0.212850004, 13.61378}, //
+
12807 {0.215533003, 13.6153698}, //
+
12808 {0.218050003, 13.6166296}, //
+
12809 {0.220400006, 13.6175499}, //
+
12810 {0.221711993, 13.6180496}, //
+
12811 {0.222646996, 13.6180601}, //
+
12812 {0.223205999, 13.6175604}, //
+
12813 {0.223388001, 13.6165504}, //
+
12814 {0.223193005, 13.6150503}, //
+
12815 {0.222622007, 13.61304}, //
+
12816 {0.221674994, 13.6105299}, //
+
12817 {0.220350996, 13.6075201}, //
+
12818 {0.218649998, 13.6040001}, //
+
12819 {0.216626003, 13.6001101}, //
+
12820 {0.214309007, 13.5959597}, //
+
12821 {0.211700007, 13.5915699}, //
+
12822 {0.208798006, 13.5869198}, //
+
12823 {0.205604002, 13.5820198}, //
+
12824 {0.202116996, 13.57687}, //
+
12825 {0.198337004, 13.5714598}, //
+
12826 {0.194264993, 13.5658102}, //
+
12827 {0.189899996, 13.5599003}, //
+
12828 {0.185420007, 13.5531197}, //
+
12829 {0.181023002, 13.54634}, //
+
12830 {0.176710993, 13.5395699}, //
+
12831 {0.172482997, 13.5327902}, //
+
12832 {0.168338001, 13.5260096}, //
+
12833 {0.164278001, 13.5192299}, //
+
12834 {0.160301, 13.5124598}, //
+
12835 {0.156408995, 13.5056801}, //
+
12836 {0.152600005, 13.4989004}, //
+
12837 {0.148958996, 13.4922895}, //
+
12838 {0.145567998, 13.4860096}, //
+
12839 {0.142427996, 13.4800701}, //
+
12840 {0.139538005, 13.4744596}, //
+
12841 {0.136898994, 13.4691801}, //
+
12842 {0.134510994, 13.4642296}, //
+
12843 {0.132373005, 13.4596205}, //
+
12844 {0.130485997, 13.4553404}, //
+
12845 {0.128849998, 13.4513998}, //
+
12846 {0.127423003, 13.4470797}, //
+
12847 {0.126164004, 13.4431295}, //
+
12848 {0.125072002, 13.4395599}, //
+
12849 {0.124149002, 13.4363604}, //
+
12850 {0.123392999, 13.4335403}, //
+
12851 {0.122805998, 13.4310904}, //
+
12852 {0.122386001, 13.4290199}, //
+
12853 {0.122134, 13.4273195}, //
+
12854 {0.122050002, 13.4259996}, //
+
12855 {0.122070998, 13.4249096}, //
+
12856 {0.122134, 13.4238997}, //
+
12857 {0.122239001, 13.4229803}, //
+
12858 {0.122386001, 13.4221401}, //
+
12859 {0.122575, 13.42138}, //
+
12860 {0.122805998, 13.4207096}, //
+
12861 {0.123078004, 13.4201202}, //
+
12862 {0.123392999, 13.4196196}, //
+
12863 {0.123750001, 13.4191999}, //
+
12864 {0.124149002, 13.41889}, //
+
12865 {0.124590002, 13.4187002}, //
+
12866 {0.125072002, 13.4186296}, //
+
12867 {0.125597, 13.4187002}, //
+
12868 {0.126164004, 13.41889}, //
+
12869 {0.126772001, 13.4191999}, //
+
12870 {0.127423003, 13.4196396}, //
+
12871 {0.128114998, 13.4202099}, //
+
12872 {0.128849998, 13.4209003}, //
+
12873 {0.129605994, 13.4216995}, //
+
12874 {0.130361006, 13.4225798}, //
+
12875 {0.131117001, 13.4235401}, //
+
12876 {0.131871998, 13.4245901}, //
+
12877 {0.132627994, 13.4257298}, //
+
12878 {0.133383006, 13.42694}, //
+
12879 {0.134139001, 13.4282503}, //
+
12880 {0.134893999, 13.4296303}, //
+
12881 {0.135649994, 13.4310999}, //
+
12882 {0.136395007, 13.4317999}, //
+
12883 {0.137141004, 13.4324198}, //
+
12884 {0.137888998, 13.4329596}, //
+
12885 {0.138638005, 13.4334202}, //
+
12886 {0.139387995, 13.4337902}, //
+
12887 {0.140138999, 13.4340801}, //
+
12888 {0.140891001, 13.4342804}, //
+
12889 {0.141644999, 13.4344101}, //
+
12890 {0.142399997, 13.4344501}, //
+
12891 {0.143889993, 13.4364405}, //
+
12892 {0.145336002, 13.4378901}, //
+
12893 {0.146739006, 13.4387903}, //
+
12894 {0.148099005, 13.4391499}, //
+
12895 {0.149415001, 13.4389601}, //
+
12896 {0.150689006, 13.4382296}, //
+
12897 {0.151919007, 13.4369497}, //
+
12898 {0.153106004, 13.4351196}, //
+
12899 {0.154249996, 13.4327497}, //
+
12900 {0.155340999, 13.4300299}, //
+
12901 {0.156349003, 13.4271498}, //
+
12902 {0.157271996, 13.4240904}, //
+
12903 {0.158112004, 13.4208698}, //
+
12904 {0.158867002, 13.4174805}, //
+
12905 {0.159538999, 13.4139299}, //
+
12906 {0.160126999, 13.4102001}, //
+
12907 {0.160630003, 13.4063101}, //
+
12908 {0.161050007, 13.4022503}, //
+
12909 {0.161322996, 13.3980799}, //
+
12910 {0.161385998, 13.3938799}, //
+
12911 {0.161238998, 13.3896303}, //
+
12912 {0.160881996, 13.3853397}, //
+
12913 {0.160315007, 13.3809996}, //
+
12914 {0.159538999, 13.3766298}, //
+
12915 {0.158552006, 13.3722095}, //
+
12916 {0.157355994, 13.3677502}, //
+
12917 {0.155949995, 13.3632498}, //
+
12918 {0.154596001, 13.3590002}, //
+
12919 {0.153532997, 13.3552904}, //
+
12920 {0.152760997, 13.3521299}, //
+
12921 {0.152281001, 13.3495197}, //
+
12922 {0.152091995, 13.3474398}, //
+
12923 {0.152193993, 13.3459196}, //
+
12924 {0.152587995, 13.3449297}, //
+
12925 {0.153273001, 13.3444901}, //
+
12926 {0.154249996, 13.3445997}, //
+
12927 {0.155487999, 13.3451204}, //
+
12928 {0.156933993, 13.3459396}, //
+
12929 {0.158589005, 13.3470497}, //
+
12930 {0.160451993, 13.3484497}, //
+
12931 {0.162524998, 13.3501501}, //
+
12932 {0.164805993, 13.3521299}, //
+
12933 {0.167294994, 13.3544102}, //
+
12934 {0.169992998, 13.3569899}, //
+
12935 {0.172900006, 13.3598499}, //
+
12936 {0.17588, 13.3629103}, //
+
12937 {0.178773999, 13.3660603}, //
+
12938 {0.181583002, 13.3692904}, //
+
12939 {0.184306994, 13.3725996}, //
+
12940 {0.186946005, 13.3760004}, //
+
12941 {0.189500004, 13.3794699}, //
+
12942 {0.191969007, 13.3830299}, //
+
12943 {0.194352001, 13.3866701}, //
+
12944 {0.196649998, 13.3903999}, //
+
12945 {0.198098004, 13.3925304}, //
+
12946 {0.199420005, 13.3944101}, //
+
12947 {0.200617, 13.39604}, //
+
12948 {0.201686993, 13.3974199}, //
+
12949 {0.202630997, 13.39855}, //
+
12950 {0.203449994, 13.3994198}, //
+
12951 {0.204143003, 13.4000502}, //
+
12952 {0.204708993, 13.4004202}, //
+
12953 {0.205149993, 13.4005499}, //
+
12954 {0.205486, 13.4004698}, //
+
12955 {0.205737993, 13.4002104}, //
+
12956 {0.205906004, 13.3997898}, //
+
12957 {0.205990002, 13.39921}, //
+
12958 {0.205990002, 13.3984499}, //
+
12959 {0.205906004, 13.3975296}, //
+
12960 {0.205737993, 13.3964396}, //
+
12961 {0.205486, 13.3951797}, //
+
12962 {0.205149993, 13.3937502}, //
+
12963 {0.204751, 13.39221}, //
+
12964 {0.20431, 13.3905802}, //
+
12965 {0.203828007, 13.3888702}, //
+
12966 {0.203302994, 13.3870802}, //
+
12967 {0.202736005, 13.3851995}, //
+
12968 {0.202127993, 13.3832397}, //
+
12969 {0.201477006, 13.3811903}, //
+
12970 {0.200784996, 13.3790598}, //
+
12971 {0.200049996, 13.3768501}, //
+
12972 {0.199314997, 13.3753405}, //
+
12973 {0.198623002, 13.3738298}, //
+
12974 {0.197972, 13.3723202}, //
+
12975 {0.197364002, 13.3708096}, //
+
12976 {0.196796998, 13.3692904}, //
+
12977 {0.196272001, 13.3677797}, //
+
12978 {0.195789993, 13.3662701}, //
+
12979 {0.195348993, 13.3647604}, //
+
12980 {0.194949999, 13.3632498}, //
+
12981 {0.194592997, 13.3617897}, //
+
12982 {0.194278002, 13.3604202}, //
+
12983 {0.194005996, 13.3591204}, //
+
12984 {0.193774998, 13.3579102}, //
+
12985 {0.193586007, 13.3567801}, //
+
12986 {0.193439007, 13.3557396}, //
+
12987 {0.193333998, 13.3547802}, //
+
12988 {0.193270996, 13.3539}, //
+
12989 {0.19325, 13.3530998}, //
+
12990 {0.193145007, 13.3499203}, //
+
12991 {0.192829996, 13.3464098}, //
+
12992 {0.192305997, 13.3425598}, //
+
12993 {0.191570997, 13.3383703}, //
+
12994 {0.190626994, 13.3338499}, //
+
12995 {0.189472005, 13.32899}, //
+
12996 {0.188107997, 13.3238001}, //
+
12997 {0.186534002, 13.3182697}, //
+
12998 {0.184750006, 13.3123999}, //
+
12999 {0.182808995, 13.3062096}, //
+
13000 {0.180742994, 13.2996798}, //
+
13001 {0.178550005, 13.29282}, //
+
13002 {0.176230997, 13.2856197}, //
+
13003 {0.173786998, 13.2780895}, //
+
13004 {0.171216995, 13.2702198}, //
+
13005 {0.168520004, 13.2620201}, //
+
13006 {0.165698007, 13.25348}, //
+
13007 {0.162750006, 13.2446003}, //
+
13008 {0.161993995, 13.2415895}, //
+
13009 {0.161238998, 13.2385798}, //
+
13010 {0.160483003, 13.2355604}, //
+
13011 {0.159728006, 13.2325497}, //
+
13012 {0.158971995, 13.2295303}, //
+
13013 {0.158216998, 13.22651}, //
+
13014 {0.157461002, 13.2234898}, //
+
13015 {0.156706005, 13.2204704}, //
+
13016 {0.155949995, 13.2174501}, //
+
13017 {0.154532999, 13.21387}, //
+
13018 {0.153283, 13.2106705}, //
+
13019 {0.152199998, 13.20784}, //
+
13020 {0.151282996, 13.2054005}, //
+
13021 {0.150533006, 13.2033195}, //
+
13022 {0.149949998, 13.2016296}, //
+
13023 {0.149533004, 13.2003098}, //
+
13024 {0.149283007, 13.1993704}, //
+
13025 {0.149200007, 13.1988001}, //
+
13026 {0.149283007, 13.1985798}, //
+
13027 {0.149533004, 13.1986504}, //
+
13028 {0.149949998, 13.1990099}, //
+
13029 {0.150533006, 13.1996603}, //
+
13030 {0.151282996, 13.2006102}, //
+
13031 {0.152199998, 13.2018404}, //
+
13032 {0.153283, 13.2033701}, //
+
13033 {0.154532999, 13.2051897}, //
+
13034 {0.155949995, 13.2073002}, //
+
13035 {0.157585993, 13.2105198}, //
+
13036 {0.159473002, 13.21416}, //
+
13037 {0.161611006, 13.2182198}, //
+
13038 {0.163999006, 13.2226896}, //
+
13039 {0.166638002, 13.2275896}, //
+
13040 {0.169527993, 13.2328997}, //
+
13041 {0.172667995, 13.2386303}, //
+
13042 {0.176058993, 13.2447796}, //
+
13043 {0.179700002, 13.2513504}, //
+
13044 {0.183509007, 13.2581396}, //
+
13045 {0.187400997, 13.2649298}, //
+
13046 {0.191377997, 13.2717104}, //
+
13047 {0.195437998, 13.2784996}, //
+
13048 {0.199582994, 13.2852802}, //
+
13049 {0.203811005, 13.2920599}, //
+
13050 {0.208122998, 13.2988396}, //
+
13051 {0.212520003, 13.3056202}, //
+
13052 {0.216999993, 13.3123999}, //
+
13053 {0.219907001, 13.3153296}, //
+
13054 {0.222605005, 13.3180904}, //
+
13055 {0.225094005, 13.3206797}, //
+
13056 {0.227375001, 13.3231096}, //
+
13057 {0.229448006, 13.3253698}, //
+
13058 {0.231310993, 13.3274698}, //
+
13059 {0.232966006, 13.3293896}, //
+
13060 {0.234412, 13.3311596}, //
+
13061 {0.235650003, 13.3327503}, //
+
13062 {0.237664998, 13.3354397}, //
+
13063 {0.238482997, 13.3365297}, //
+
13064 {0.240498006, 13.3392096}, //
+
13065 {0.24075, 13.33955}, //
+
13066 {0.240707994, 13.3394899}, //
+
13067 {0.240582004, 13.3393002}, //
+
13068 {0.240078002, 13.3385401}, //
+
13069 {0.239701003, 13.3379803}, //
+
13070 {0.237350002, 13.3344498}, //
+
13071 {0.236552, 13.3332996}, //
+
13072 {0.235670999, 13.3320999}, //
+
13073 {0.234705999, 13.3308697}, //
+
13074 {0.233656004, 13.3295898}, //
+
13075 {0.232522994, 13.32827}, //
+
13076 {0.231306002, 13.3269196}, //
+
13077 {0.230003998, 13.3255196}, //
+
13078 {0.228618994, 13.3240805}, //
+
13079 {0.227149993, 13.3226004}, //
+
13080 {0.226383999, 13.3210897}, //
+
13081 {0.225575, 13.3195801}, //
+
13082 {0.224721998, 13.3180704}, //
+
13083 {0.223827004, 13.3165598}, //
+
13084 {0.222887993, 13.3150396}, //
+
13085 {0.221906006, 13.31353}, //
+
13086 {0.220880002, 13.3120203}, //
+
13087 {0.219812006, 13.3105097}, //
+
13088 {0.218700007, 13.309}, //
+
13089 {0.217588007, 13.3075399}, //
+
13090 {0.216517001, 13.3061705}, //
+
13091 {0.215489, 13.3048697}, //
+
13092 {0.214502007, 13.3036604}, //
+
13093 {0.213558003, 13.3025303}, //
+
13094 {0.212656006, 13.3014898}, //
+
13095 {0.211795002, 13.3005304}, //
+
13096 {0.210977003, 13.2996502}, //
+
13097 {0.210199997, 13.2988501}, //
+
13098 {0.208740994, 13.2971096}, //
+
13099 {0.207365006, 13.2949104}, //
+
13100 {0.206072003, 13.2922401}, //
+
13101 {0.204861999, 13.2891197}, //
+
13102 {0.203733996, 13.2855396}, //
+
13103 {0.202689007, 13.2814903}, //
+
13104 {0.201727003, 13.2769899}, //
+
13105 {0.200847, 13.2720299}, //
+
13106 {0.200049996, 13.2665997}, //
+
13107 {0.199336007, 13.26089}, //
+
13108 {0.198706999, 13.2550602}, //
+
13109 {0.198161006, 13.2490997}, //
+
13110 {0.197698995, 13.2430096}, //
+
13111 {0.197321996, 13.2368002}, //
+
13112 {0.197027996, 13.2304697}, //
+
13113 {0.196817994, 13.224}, //
+
13114 {0.196692005, 13.2174101}, //
+
13115 {0.196649998, 13.2107}, //
+
13116 {0.195139006, 13.1986303}, //
+
13117 {0.194382995, 13.1926003}, //
+
13118 {0.192872003, 13.1805296}, //
+
13119 {0.192117006, 13.1745005}, //
+
13120 {0.191360995, 13.1684704}, //
+
13121 {0.190605998, 13.1624298}, //
+
13122 {0.189850003, 13.1563997}, //
+
13123 {0.189021006, 13.1505499}, //
+
13124 {0.188023001, 13.1450195}, //
+
13125 {0.186856002, 13.1398401}, //
+
13126 {0.185518995, 13.1349897}, //
+
13127 {0.184014007, 13.1304703}, //
+
13128 {0.182338998, 13.1262903}, //
+
13129 {0.180494994, 13.1224403}, //
+
13130 {0.178481996, 13.1189299}, //
+
13131 {0.176300004, 13.1157503}, //
+
13132 {0.173856005, 13.1079702}, //
+
13133 {0.171032995, 13.0996799}, //
+
13134 {0.167833, 13.0908899}, //
+
13135 {0.164256006, 13.0816002}, //
+
13136 {0.160300002, 13.0718002}, //
+
13137 {0.155966997, 13.0615101}, //
+
13138 {0.151255995, 13.0507097}, //
+
13139 {0.146166995, 13.0394001}, //
+
13140 {0.140699998, 13.0276003}, //
+
13141 {0.134950995, 13.0156298}, //
+
13142 {0.128990993, 13.0038204}, //
+
13143 {0.122822002, 12.9921904}, //
+
13144 {0.116443001, 12.9807196}, //
+
13145 {0.109853998, 12.9694204}, //
+
13146 {0.103055999, 12.9582901}, //
+
13147 {0.0960469022, 12.94732}, //
+
13148 {0.0888283998, 12.9365301}, //
+
13149 {0.0813999996, 12.9259005}, //
+
13150 {0.0785877034, 12.9202204}, //
+
13151 {0.0761950985, 12.9152603}, //
+
13152 {0.0742221996, 12.9110098}, //
+
13153 {0.0726690963, 12.9074697}, //
+
13154 {0.0715358034, 12.9046402}, //
+
13155 {0.0708222017, 12.9025202}, //
+
13156 {0.0705284029, 12.9011202}, //
+
13157 {0.0706543028, 12.9004297}, //
+
13158 {0.0711999983, 12.9004498}, //
+
13159 {0.0721018985, 12.9010201}, //
+
13160 {0.0732963011, 12.9019604}, //
+
13161 {0.0747833028, 12.9032803}, //
+
13162 {0.0765630007, 12.9049702}, //
+
13163 {0.0786352009, 12.9070501}, //
+
13164 {0.0810000002, 12.9094896}, //
+
13165 {0.0836573988, 12.9123201}, //
+
13166 {0.0866073966, 12.9155197}, //
+
13167 {0.089850001, 12.9190998}, //
+
13168 {0.0932388976, 12.9228697}, //
+
13169 {0.0966278017, 12.92663}, //
+
13170 {0.100017004, 12.9303999}, //
+
13171 {0.103405997, 12.9341698}, //
+
13172 {0.106794, 12.9379301}, //
+
13173 {0.113572001, 12.9454699}, //
+
13174 {0.120350003, 12.9530001}, //
+
13175 {0.123644002, 12.9566803}, //
+
13176 {0.126727998, 12.9602003}, //
+
13177 {0.129600003, 12.9635496}, //
+
13178 {0.132260993, 12.9667301}, //
+
13179 {0.134710997, 12.9697504}, //
+
13180 {0.136950001, 12.9726}, //
+
13181 {0.138978004, 12.9752798}, //
+
13182 {0.140793994, 12.9778004}, //
+
13183 {0.142399997, 12.9801502}, //
+
13184 {0.143071994, 12.9820499}, //
+
13185 {0.143574998, 12.9832401}, //
+
13186 {0.143911004, 12.9837198}, //
+
13187 {0.144079, 12.9834805}, //
+
13188 {0.144079, 12.9825401}, //
+
13189 {0.143911004, 12.9808798}, //
+
13190 {0.143574998, 12.9785204}, //
+
13191 {0.143071994, 12.97544}, //
+
13192 {0.142399997, 12.9716501}, //
+
13193 {0.141540006, 12.9673405}, //
+
13194 {0.140471995, 12.9626904}, //
+
13195 {0.139193997, 12.9577103}, //
+
13196 {0.137709007, 12.9524002}, //
+
13197 {0.136014, 12.9467497}, //
+
13198 {0.134111002, 12.9407597}, //
+
13199 {0.131999001, 12.9344397}, //
+
13200 {0.129678994, 12.9277897}, //
+
13201 {0.127149999, 12.9208002}, //
+
13202 {0.124453999, 12.91364}, //
+
13203 {0.121630996, 12.9064903}, //
+
13204 {0.118683003, 12.8993301}, //
+
13205 {0.115608998, 12.89217}, //
+
13206 {0.112409003, 12.8850098}, //
+
13207 {0.109082997, 12.87784}, //
+
13208 {0.108341999, 12.8763103}, //
+
13209 {0.107865997, 12.87568}, //
+
13210 {0.102278002, 12.8686104}, //
+
13211 {0.0965623036, 12.8616199}, //
+
13212 {0.0907197967, 12.8547201}, //
+
13213 {0.0847499967, 12.8479004}, //
+
13214 {0.0818011984, 12.8427696}, //
+
13215 {0.0789771974, 12.8379297}, //
+
13216 {0.0762777999, 12.8333797}, //
+
13217 {0.0737031028, 12.8291302}, //
+
13218 {0.0712530985, 12.8251696}, //
+
13219 {0.0689278021, 12.8214998}, //
+
13220 {0.0667271987, 12.81812}, //
+
13221 {0.0646511987, 12.8150396}, //
+
13222 {0.0627000034, 12.8122501}, //
+
13223 {0.0609056018, 12.80972}, //
+
13224 {0.059277799, 12.8073997}, //
+
13225 {0.0578166991, 12.8052902}, //
+
13226 {0.0565222017, 12.8033895}, //
+
13227 {0.0553943999, 12.8016901}, //
+
13228 {0.0544333011, 12.80021}, //
+
13229 {0.0536389016, 12.7989302}, //
+
13230 {0.0530111007, 12.7978601}, //
+
13231 {0.0525499992, 12.7969999}, //
+
13232 {0.0523605011, 12.7964201}, //
+
13233 {0.0525474995, 12.7961798}, //
+
13234 {0.0531110987, 12.7962704}, //
+
13235 {0.0540512018, 12.79669}, //
+
13236 {0.0553678982, 12.7974396}, //
+
13237 {0.0570610985, 12.7985296}, //
+
13238 {0.0591308996, 12.7999601}, //
+
13239 {0.0615772009, 12.8017101}, //
+
13240 {0.0644000024, 12.8037996}, //
+
13241 {0.0681772009, 12.8084698}, //
+
13242 {0.0719531029, 12.8134298}, //
+
13243 {0.075727798, 12.8186798}, //
+
13244 {0.0795011967, 12.8242302}, //
+
13245 {0.0832735002, 12.8300695}, //
+
13246 {0.087044403, 12.8361998}, //
+
13247 {0.090814203, 12.8426199}, //
+
13248 {0.0945826992, 12.8493404}, //
+
13249 {0.0983500034, 12.8563499}, //
+
13250 {0.102054, 12.8635197}, //
+
13251 {0.105631001, 12.8706799}, //
+
13252 {0.108341999, 12.8763103}, //
+
13253 {0.113326997, 12.8828402}, //
+
13254 {0.118661001, 12.8900805}, //
+
13255 {0.123868003, 12.8973999}, //
+
13256 {0.128948003, 12.90481}, //
+
13257 {0.133900002, 12.9123001}, //
+
13258 {0.138653994, 12.9196196}, //
+
13259 {0.143114999, 12.9265299}, //
+
13260 {0.147283003, 12.9330196}, //
+
13261 {0.151159003, 12.9390898}, //
+
13262 {0.154743001, 12.9447403}, //
+
13263 {0.158032998, 12.9499702}, //
+
13264 {0.161030993, 12.9547796}, //
+
13265 {0.163736999, 12.9591703}, //
+
13266 {0.166150004, 12.96315}, //
+
13267 {0.167587996, 12.96665}, //
+
13268 {0.168900996, 12.9696102}, //
+
13269 {0.170089006, 12.9720297}, //
+
13270 {0.171151996, 12.9738998}, //
+
13271 {0.172091007, 12.9752197}, //
+
13272 {0.172905996, 12.9759903}, //
+
13273 {0.173594996, 12.9762297}, //
+
13274 {0.174160004, 12.9759102}, //
+
13275 {0.174600005, 12.97505}, //
+
13276 {0.174915001, 12.9737301}, //
+
13277 {0.175104007, 12.9720297}, //
+
13278 {0.175166994, 12.9699602}, //
+
13279 {0.175104007, 12.9674997}, //
+
13280 {0.174915001, 12.9646797}, //
+
13281 {0.174600005, 12.9614697}, //
+
13282 {0.174159005, 12.9578896}, //
+
13283 {0.173593, 12.9539299}, //
+
13284 {0.172900006, 12.9496002}, //
+
13285 {0.172113001, 12.9450397}, //
+
13286 {0.171241, 12.9403896}, //
+
13287 {0.170283005, 12.9356604}, //
+
13288 {0.169240996, 12.9308395}, //
+
13289 {0.168112993, 12.9259396}, //
+
13290 {0.166899994, 12.9209604}, //
+
13291 {0.165601999, 12.9158897}, //
+
13292 {0.164219007, 12.9107399}, //
+
13293 {0.162750006, 12.9055004}, //
+
13294 {0.161239997, 12.9004002}, //
+
13295 {0.159730002, 12.8956404}, //
+
13296 {0.158222005, 12.8912096}, //
+
13297 {0.156715006, 12.8871098}, //
+
13298 {0.155210003, 12.8833504}, //
+
13299 {0.153705999, 12.87992}, //
+
13300 {0.152201995, 12.8768301}, //
+
13301 {0.150701001, 12.8740702}, //
+
13302 {0.149200007, 12.8716497}, //
+
13303 {0.148486003, 12.8695297}, //
+
13304 {0.147856995, 12.8676996}, //
+
13305 {0.147311002, 12.8661699}, //
+
13306 {0.147104993, 12.8656197}, //
+
13307 {0.14655, 12.8648396}, //
+
13308 {0.146133006, 12.86415}, //
+
13309 {0.145882994, 12.8635902}, //
+
13310 {0.145799994, 12.8631496}, //
+
13311 {0.145842001, 12.8629198}, //
+
13312 {0.145968005, 12.8629799}, //
+
13313 {0.146178007, 12.8633404}, //
+
13314 {0.146472007, 12.8639898}, //
+
13315 {0.146849006, 12.8649302}, //
+
13316 {0.147104993, 12.8656197}, //
+
13317 {0.147132993, 12.8656597}, //
+
13318 {0.147882998, 12.8666}, //
+
13319 {0.148800001, 12.8676596}, //
+
13320 {0.149883002, 12.8688498}, //
+
13321 {0.151133001, 12.8701601}, //
+
13322 {0.152549997, 12.8716002}, //
+
13323 {0.155571997, 12.8746204}, //
+
13324 {0.158593997, 12.8776398}, //
+
13325 {0.160106003, 12.8791599}, //
+
13326 {0.161616996, 12.8806696}, //
+
13327 {0.164638996, 12.8836899}, //
+
13328 {0.166150004, 12.8851995}, //
+
13329 {0.168405995, 12.8881903}, //
+
13330 {0.170661002, 12.89114}, //
+
13331 {0.172916993, 12.8940401}, //
+
13332 {0.175172001, 12.8969097}, //
+
13333 {0.177428007, 12.8997297}, //
+
13334 {0.179683, 12.9025097}, //
+
13335 {0.181939006, 12.9052496}, //
+
13336 {0.184193999, 12.9079504}, //
+
13337 {0.186450005, 12.9105997}, //
+
13338 {0.188675001, 12.9131804}, //
+
13339 {0.190815002, 12.9156303}, //
+
13340 {0.192872003, 12.9179602}, //
+
13341 {0.194845006, 12.9201603}, //
+
13342 {0.196733996, 12.9222298}, //
+
13343 {0.198539004, 12.92418}, //
+
13344 {0.200259998, 12.9259996}, //
+
13345 {0.201896995, 12.9276896}, //
+
13346 {0.203449994, 12.9292498}, //
+
13347 {0.204183996, 12.9292698}, //
+
13348 {0.204875007, 12.9293299}, //
+
13349 {0.205522001, 12.9294395}, //
+
13350 {0.206127003, 12.9295902}, //
+
13351 {0.206688002, 12.9297705}, //
+
13352 {0.207205996, 12.9300098}, //
+
13353 {0.207680002, 12.9302797}, //
+
13354 {0.208112001, 12.9305897}, //
+
13355 {0.208499998, 12.9309502}, //
+
13356 {0.208857, 12.9312897}, //
+
13357 {0.209171996, 12.9315395}, //
+
13358 {0.209444001, 12.9317102}, //
+
13359 {0.209674999, 12.9317904}, //
+
13360 {0.209864005, 12.9317904}, //
+
13361 {0.210011005, 12.9317102}, //
+
13362 {0.210115999, 12.9315395}, //
+
13363 {0.210179001, 12.9312897}, //
+
13364 {0.210199997, 12.9309502}, //
+
13365 {0.210179001, 12.9305696}, //
+
13366 {0.210115999, 12.9301901}, //
+
13367 {0.210011005, 12.9298201}, //
+
13368 {0.209864005, 12.9294395}, //
+
13369 {0.209674999, 12.92906}, //
+
13370 {0.209444001, 12.9286804}, //
+
13371 {0.209171996, 12.9283104}, //
+
13372 {0.208857, 12.9279299}, //
+
13373 {0.208499998, 12.9275503}, //
+
13374 {0.208132997, 12.9271803}, //
+
13375 {0.207394004, 12.9264402}, //
+
13376 {0.206651002, 12.9257002}, //
+
13377 {0.206277996, 12.9253302}, //
+
13378 {0.205902994, 12.9249496}, //
+
13379 {0.205526993, 12.9245796}, //
+
13380 {0.205149993, 12.9242001}, //
+
13381 {0.204793006, 12.9238005}, //
+
13382 {0.204477996, 12.9233599}, //
+
13383 {0.204206005, 12.9228802}, //
+
13384 {0.203975007, 12.9223499}, //
+
13385 {0.203786001, 12.9217901}, //
+
13386 {0.203639001, 12.9211798}, //
+
13387 {0.203534007, 12.9205303}, //
+
13388 {0.203471005, 12.9198303}, //
+
13389 {0.203449994, 12.9190998}, //
+
13390 {0.203449994, 12.9157}, //
+
13391 {0.203387007, 12.9149704}, //
+
13392 {0.203198001, 12.9127703}, //
+
13393 {0.202883005, 12.9091101}, //
+
13394 {0.202443004, 12.9039803}, //
+
13395 {0.201876, 12.8973799}, //
+
13396 {0.201183006, 12.8893204}, //
+
13397 {0.200365007, 12.8797998}, //
+
13398 {0.199420005, 12.8688097}, //
+
13399 {0.198349997, 12.8563499}, //
+
13400 {0.197280005, 12.8424797}, //
+
13401 {0.196335003, 12.8272305}, //
+
13402 {0.195517004, 12.8105898}, //
+
13403 {0.194823995, 12.7925797}, //
+
13404 {0.194257006, 12.77318}, //
+
13405 {0.193817005, 12.7523899}, //
+
13406 {0.193501994, 12.7302303}, //
+
13407 {0.193313003, 12.7066803}, //
+
13408 {0.19325, 12.6817503}, //
+
13409 {0.192651004, 12.66401}, //
+
13410 {0.192343995, 12.6469297}, //
+
13411 {0.192328006, 12.6305304}, //
+
13412 {0.192603007, 12.61479}, //
+
13413 {0.193169996, 12.5997295}, //
+
13414 {0.194028005, 12.58533}, //
+
13415 {0.195177004, 12.5716}, //
+
13416 {0.196618006, 12.5585403}, //
+
13417 {0.198349997, 12.5461502}, //
+
13418 {0.200301006, 12.53409}, //
+
13419 {0.202377006, 12.5220404}, //
+
13420 {0.204577997, 12.5099802}, //
+
13421 {0.206902996, 12.4979296}, //
+
13422 {0.209353, 12.4858704}, //
+
13423 {0.211927995, 12.4738197}, //
+
13424 {0.214626998, 12.4617596}, //
+
13425 {0.217451006, 12.4497099}, //
+
13426 {0.220400006, 12.4376497}, //
+
13427 {0.222655997, 12.4277201}, //
+
13428 {0.224913999, 12.4175501}, //
+
13429 {0.227172002, 12.4071198}, //
+
13430 {0.229432002, 12.39645}, //
+
13431 {0.231693, 12.38552}, //
+
13432 {0.233955994, 12.3743401}, //
+
13433 {0.236219004, 12.3629103}, //
+
13434 {0.238483995, 12.3512297}, //
+
13435 {0.24075, 12.3393002}, //
+
13436 {0.242880002, 12.3252802}, //
+
13437 {0.244760007, 12.3133497}, //
+
13438 {0.246389002, 12.3035202}, //
+
13439 {0.247767001, 12.2957697}, //
+
13440 {0.248895004, 12.2901201}, //
+
13441 {0.249771997, 12.2865696}, //
+
13442 {0.250398993, 12.2851}, //
+
13443 {0.250775009, 12.2857304}, //
+
13444 {0.2509, 12.2884502}, //
+
13445 {0.250858009, 12.2927599}, //
+
13446 {0.250732005, 12.2981596}, //
+
13447 {0.250521988, 12.3046398}, //
+
13448 {0.250227988, 12.3122196}, //
+
13449 {0.249851003, 12.3208799}, //
+
13450 {0.249388993, 12.3306303}, //
+
13451 {0.248842999, 12.3414602}, //
+
13452 {0.248214006, 12.3533897}, //
+
13453 {0.247500002, 12.3663998}, //
+
13454 {0.247458994, 12.3770399}, //
+
13455 {0.247335002, 12.3878403}, //
+
13456 {0.247127995, 12.3988199}, //
+
13457 {0.246838003, 12.4099598}, //
+
13458 {0.246465996, 12.4212599}, //
+
13459 {0.246011004, 12.4327297}, //
+
13460 {0.245472997, 12.4443703}, //
+
13461 {0.244853005, 12.4561796}, //
+
13462 {0.244149998, 12.4681501}, //
+
13463 {0.244169995, 12.4752903}, //
+
13464 {0.244231001, 12.4816303}, //
+
13465 {0.244332999, 12.4871702}, //
+
13466 {0.244476005, 12.4919205}, //
+
13467 {0.244659007, 12.4958801}, //
+
13468 {0.244883001, 12.4990396}, //
+
13469 {0.245148003, 12.5014}, //
+
13470 {0.245453998, 12.5029697}, //
+
13471 {0.245800003, 12.5037498}, //
+
13472 {0.246178001, 12.50383}, //
+
13473 {0.246555999, 12.5033302}, //
+
13474 {0.246932998, 12.5022402}, //
+
13475 {0.247310996, 12.5005703}, //
+
13476 {0.247688994, 12.4983101}, //
+
13477 {0.248067006, 12.4954596}, //
+
13478 {0.248444006, 12.4920301}, //
+
13479 {0.248822004, 12.4880104}, //
+
13480 {0.249200001, 12.4834003}, //
+
13481 {0.249641001, 12.4784403}, //
+
13482 {0.250207007, 12.4733496}, //
+
13483 {0.2509, 12.4681396}, //
+
13484 {0.251718998, 12.4628}, //
+
13485 {0.252662987, 12.4573402}, //
+
13486 {0.253733009, 12.4517603}, //
+
13487 {0.25492999, 12.4460497}, //
+
13488 {0.256251991, 12.4402103}, //
+
13489 {0.257699996, 12.4342499}, //
+
13490 {0.258497, 12.4259996}, //
+
13491 {0.259377003, 12.41784}, //
+
13492 {0.260338992, 12.4097605}, //
+
13493 {0.26138401, 12.4017696}, //
+
13494 {0.262511998, 12.3938503}, //
+
13495 {0.263722003, 12.3860302}, //
+
13496 {0.265015006, 12.3782797}, //
+
13497 {0.266391009, 12.3706303}, //
+
13498 {0.267850012, 12.3630505}, //
+
13499 {0.269360006, 12.3556404}, //
+
13500 {0.27087, 12.3484802}, //
+
13501 {0.272377998, 12.3415804}, //
+
13502 {0.273885012, 12.3349199}, //
+
13503 {0.275389999, 12.3285198}, //
+
13504 {0.276894003, 12.32236}, //
+
13505 {0.278398007, 12.3164597}, //
+
13506 {0.279899001, 12.3107996}, //
+
13507 {0.281399995, 12.3053999}, //
+
13508 {0.28282699, 12.3004799}, //
+
13509 {0.284085989, 12.2962704}, //
+
13510 {0.285178006, 12.2927704}, //
+
13511 {0.286101013, 12.2899904}, //
+
13512 {0.286857009, 12.28792}, //
+
13513 {0.287443995, 12.2865601}, //
+
13514 {0.287864, 12.2859097}, //
+
13515 {0.288116008, 12.2859697}, //
+
13516 {0.288199991, 12.2867498}, //
+
13517 {0.288199991, 12.3087997}, //
+
13518 {0.287485987, 12.3147802}, //
+
13519 {0.286857009, 12.3206797}, //
+
13520 {0.286311001, 12.3264904}, //
+
13521 {0.285849005, 12.3322296}, //
+
13522 {0.285472006, 12.3378801}, //
+
13523 {0.285178006, 12.3434401}, //
+
13524 {0.284967989, 12.3489304}, //
+
13525 {0.284842014, 12.3543301}, //
+
13526 {0.284799993, 12.3596497}, //
+
13527 {0.284884006, 12.3623695}, //
+
13528 {0.285136014, 12.3645}, //
+
13529 {0.285555989, 12.3660402}, //
+
13530 {0.286143005, 12.3669996}, //
+
13531 {0.286899, 12.3673801}, //
+
13532 {0.287822008, 12.3671598}, //
+
13533 {0.288913995, 12.3663597}, //
+
13534 {0.290172994, 12.3649702}, //
+
13535 {0.291599989, 12.3629999}, //
+
13536 {0.293172985, 12.3605604}, //
+
13537 {0.294871986, 12.3577299}, //
+
13538 {0.29669401, 12.3545303}, //
+
13539 {0.298642009, 12.3509598}, //
+
13540 {0.300713986, 12.3470001}, //
+
13541 {0.302911013, 12.3426704}, //
+
13542 {0.305233002, 12.3379602}, //
+
13543 {0.307678998, 12.3328695}, //
+
13544 {0.310250014, 12.3274002}, //
+
13545 {0.31288299, 12.3217497}, //
+
13546 {0.315517008, 12.3161097}, //
+
13547 {0.318150014, 12.3104601}, //
+
13548 {0.320782989, 12.3048096}, //
+
13549 {0.323417008, 12.29916}, //
+
13550 {0.328682989, 12.2878599}, //
+
13551 {0.331317008, 12.2821999}, //
+
13552 {0.333950013, 12.2765503}, //
+
13553 {0.336551994, 12.2709503}, //
+
13554 {0.339069009, 12.2654305}, //
+
13555 {0.341500014, 12.2599897}, //
+
13556 {0.343845993, 12.2546301}, //
+
13557 {0.346107006, 12.2493601}, //
+
13558 {0.348282993, 12.2441702}, //
+
13559 {0.350374013, 12.2390699}, //
+
13560 {0.352380008, 12.2340403}, //
+
13561 {0.354299992, 12.2291002}, //
+
13562 {0.35612601, 12.2244701}, //
+
13563 {0.357825994, 12.2203903}, //
+
13564 {0.359400004, 12.2168503}, //
+
13565 {0.36084801, 12.2138596}, //
+
13566 {0.362170011, 12.2114096}, //
+
13567 {0.363366991, 12.2095003}, //
+
13568 {0.364437014, 12.2081404}, //
+
13569 {0.365116, 12.20755}, //
+
13570 {0.365150988, 12.2074699}, //
+
13571 {0.365527987, 12.2067099}, //
+
13572 {0.365821987, 12.2062902}, //
+
13573 {0.366032004, 12.2062101}, //
+
13574 {0.366158009, 12.20646}, //
+
13575 {0.3662, 12.2070503}, //
+
13576 {0.365381002, 12.2073202}, //
+
13577 {0.365116, 12.20755}, //
+
13578 {0.364688993, 12.20856}, //
+
13579 {0.364143014, 12.2099895}, //
+
13580 {0.363514006, 12.21175}, //
+
13581 {0.362800002, 12.21385}, //
+
13582 {0.362715989, 12.2163095}, //
+
13583 {0.362464011, 12.2192001}, //
+
13584 {0.362044007, 12.2224998}, //
+
13585 {0.36145699, 12.2262201}, //
+
13586 {0.360700995, 12.23036}, //
+
13587 {0.359777987, 12.2349195}, //
+
13588 {0.358686, 12.2398901}, //
+
13589 {0.357427001, 12.2452898}, //
+
13590 {0.356000006, 12.2510996}, //
+
13591 {0.354582995, 12.2571802}, //
+
13592 {0.353332996, 12.2633305}, //
+
13593 {0.35225001, 12.2695799}, //
+
13594 {0.351332992, 12.2758999}, //
+
13595 {0.350582987, 12.28232}, //
+
13596 {0.349999994, 12.2888098}, //
+
13597 {0.349583, 12.2953901}, //
+
13598 {0.349332988, 12.3020496}, //
+
13599 {0.349249989, 12.3087997}, //
+
13600 {0.349249989, 12.3341999}, //
+
13601 {0.349290997, 12.3352499}, //
+
13602 {0.349415004, 12.3361301}, //
+
13603 {0.349622011, 12.3368397}, //
+
13604 {0.349911988, 12.3373899}, //
+
13605 {0.35028401, 12.3377705}, //
+
13606 {0.350739002, 12.3379803}, //
+
13607 {0.351276994, 12.3380203}, //
+
13608 {0.351897001, 12.3378897}, //
+
13609 {0.352600008, 12.3375998}, //
+
13610 {0.353314012, 12.3371801}, //
+
13611 {0.35394299, 12.3366804}, //
+
13612 {0.354488999, 12.3360901}, //
+
13613 {0.354950994, 12.3354197}, //
+
13614 {0.355327994, 12.3346596}, //
+
13615 {0.355621994, 12.3338203}, //
+
13616 {0.355832011, 12.3329}, //
+
13617 {0.355958015, 12.3318901}, //
+
13618 {0.356000006, 12.3308001}, //
+
13619 {0.356041998, 12.3297005}, //
+
13620 {0.356168002, 12.32864}, //
+
13621 {0.356377989, 12.3276196}, //
+
13622 {0.356671989, 12.3266401}, //
+
13623 {0.357048988, 12.3256998}, //
+
13624 {0.357511014, 12.3247995}, //
+
13625 {0.358056992, 12.3239403}, //
+
13626 {0.358686, 12.3231297}, //
+
13627 {0.359400004, 12.3223495}, //
+
13628 {0.359400004, 12.3087997}, //
+
13629 {0.36026001, 12.3078098}, //
+
13630 {0.361328006, 12.3063698}, //
+
13631 {0.362605989, 12.3044596}, //
+
13632 {0.364091009, 12.3020897}, //
+
13633 {0.365785986, 12.2992697}, //
+
13634 {0.367689013, 12.2959805}, //
+
13635 {0.369801015, 12.2922297}, //
+
13636 {0.372121006, 12.2880201}, //
+
13637 {0.374650002, 12.28335}, //
+
13638 {0.377335995, 12.2783203}, //
+
13639 {0.380104005, 12.2730503}, //
+
13640 {0.382955998, 12.26752}, //
+
13641 {0.385890007, 12.2617502}, //
+
13642 {0.388906002, 12.2557201}, //
+
13643 {0.39200601, 12.2494402}, //
+
13644 {0.395188004, 12.2429104}, //
+
13645 {0.398452014, 12.2361298}, //
+
13646 {0.401800007, 12.2291002}, //
+
13647 {0.405167997, 12.2220097}, //
+
13648 {0.408493996, 12.2150402}, //
+
13649 {0.411778003, 12.20819}, //
+
13650 {0.415019989, 12.2014799}, //
+
13651 {0.418220013, 12.1948795}, //
+
13652 {0.421377987, 12.1884098}, //
+
13653 {0.424493998, 12.1820698}, //
+
13654 {0.427567989, 12.1758499}, //
+
13655 {0.430599988, 12.1697502}, //
+
13656 {0.434240997, 12.1631804}, //
+
13657 {0.437631994, 12.1570301}, //
+
13658 {0.440771997, 12.1513004}, //
+
13659 {0.443661988, 12.1459904}, //
+
13660 {0.446301013, 12.1410904}, //
+
13661 {0.448689014, 12.1366196}, //
+
13662 {0.450827003, 12.1325598}, //
+
13663 {0.452713996, 12.1289196}, //
+
13664 {0.454349995, 12.1257}, //
+
13665 {0.455819011, 12.1235199}, //
+
13666 {0.457201988, 12.1215}, //
+
13667 {0.458499998, 12.1196604}, //
+
13668 {0.459713012, 12.11798}, //
+
13669 {0.460841, 12.1164703}, //
+
13670 {0.461883008, 12.1151199}, //
+
13671 {0.462841004, 12.1139498}, //
+
13672 {0.46371299, 12.1129398}, //
+
13673 {0.46450001, 12.1120996}, //
+
13674 {0.465214014, 12.1114197}, //
+
13675 {0.465842992, 12.1108599}, //
+
13676 {0.466389, 12.1104298}, //
+
13677 {0.466850996, 12.1101198}, //
+
13678 {0.467227995, 12.1099396}, //
+
13679 {0.467521995, 12.1098804}, //
+
13680 {0.467732012, 12.1099396}, //
+
13681 {0.467857987, 12.1101303}, //
+
13682 {0.467900008, 12.1104498}, //
+
13683 {0.467920989, 12.1108704}, //
+
13684 {0.467983991, 12.1113701}, //
+
13685 {0.468089014, 12.1119604}, //
+
13686 {0.468235999, 12.1126204}, //
+
13687 {0.468425006, 12.1133699}, //
+
13688 {0.468656003, 12.1142101}, //
+
13689 {0.468928009, 12.1151199}, //
+
13690 {0.46924299, 12.1161203}, //
+
13691 {0.469599992, 12.1171999}, //
+
13692 {0.469915003, 12.11835}, //
+
13693 {0.470104009, 12.1195498}, //
+
13694 {0.470167011, 12.1207895}, //
+
13695 {0.470104009, 12.1220703}, //
+
13696 {0.469915003, 12.1233902}, //
+
13697 {0.469599992, 12.1247597}, //
+
13698 {0.469159007, 12.1261597}, //
+
13699 {0.468593001, 12.1276102}, //
+
13700 {0.467900008, 12.1290998}, //
+
13701 {0.467900008, 12.13585}, //
+
13702 {0.468024999, 12.13943}, //
+
13703 {0.468401015, 12.1426296}, //
+
13704 {0.469027996, 12.1454601}, //
+
13705 {0.469904989, 12.1478996}, //
+
13706 {0.471033007, 12.1499796}, //
+
13707 {0.472411007, 12.1516705}, //
+
13708 {0.474040002, 12.1529903}, //
+
13709 {0.475919992, 12.1539297}, //
+
13710 {0.478049994, 12.1545}, //
+
13711 {0.480358005, 12.1546898}, //
+
13712 {0.482748985, 12.1545}, //
+
13713 {0.485222012, 12.1539402}, //
+
13714 {0.487778008, 12.1529999}, //
+
13715 {0.490417004, 12.15168}, //
+
13716 {0.493138999, 12.1499901}, //
+
13717 {0.49594301, 12.1479197}, //
+
13718 {0.498829991, 12.1454697}, //
+
13719 {0.501800001, 12.1426497}, //
+
13720 {0.503226995, 12.1412601}, //
+
13721 {0.504486024, 12.14013}, //
+
13722 {0.505577981, 12.1392498}, //
+
13723 {0.506501019, 12.1386204}, //
+
13724 {0.507256985, 12.1382399}, //
+
13725 {0.507843971, 12.1381197}, //
+
13726 {0.508264005, 12.1382399}, //
+
13727 {0.508516014, 12.1386204}, //
+
13728 {0.508599997, 12.1392498}, //
+
13729 {0.508536994, 12.14013}, //
+
13730 {0.508347988, 12.1412601}, //
+
13731 {0.508032978, 12.1426401}, //
+
13732 {0.507592976, 12.1442804}, //
+
13733 {0.507026017, 12.1461601}, //
+
13734 {0.506332994, 12.1482897}, //
+
13735 {0.505514979, 12.1506796}, //
+
13736 {0.504570007, 12.1533098}, //
+
13737 {0.503499985, 12.1562004}, //
+
13738 {0.502304018, 12.1591702}, //
+
13739 {0.500984013, 12.1620598}, //
+
13740 {0.499538988, 12.1648598}, //
+
13741 {0.497969002, 12.1675797}, //
+
13742 {0.496275008, 12.1702204}, //
+
13743 {0.494455993, 12.17278}, //
+
13744 {0.492511988, 12.1752501}, //
+
13745 {0.490442991, 12.17764}, //
+
13746 {0.488249987, 12.1799498}, //
+
13747 {0.486698002, 12.1833601}, //
+
13748 {0.485062003, 12.1875601}, //
+
13749 {0.483343989, 12.1925602}, //
+
13750 {0.481543988, 12.19835}, //
+
13751 {0.479660004, 12.2049398}, //
+
13752 {0.477694005, 12.2123299}, //
+
13753 {0.475645989, 12.2205095}, //
+
13754 {0.473513991, 12.2294798}, //
+
13755 {0.471300006, 12.2392502}, //
+
13756 {0.469002008, 12.2495098}, //
+
13757 {0.466619015, 12.2599401}, //
+
13758 {0.464150012, 12.2705297}, //
+
13759 {0.461596012, 12.2812901}, //
+
13760 {0.458956987, 12.2922201}, //
+
13761 {0.456232995, 12.3033199}, //
+
13762 {0.453424007, 12.31458}, //
+
13763 {0.450529993, 12.3260098}, //
+
13764 {0.447549999, 12.3375998}, //
+
13765 {0.44462201, 12.3491297}, //
+
13766 {0.441861004, 12.3603697}, //
+
13767 {0.439267009, 12.3713198}, //
+
13768 {0.436839014, 12.3819704}, //
+
13769 {0.434578001, 12.3923302}, //
+
13770 {0.432482988, 12.4024}, //
+
13771 {0.430555999, 12.4121799}, //
+
13772 {0.428793997, 12.4216604}, //
+
13773 {0.42719999, 12.43085}, //
+
13774 {0.425154001, 12.4468002}, //
+
13775 {0.423525989, 12.4630003}, //
+
13776 {0.422316998, 12.4794397}, //
+
13777 {0.421526015, 12.4961395}, //
+
13778 {0.421153992, 12.5130901}, //
+
13779 {0.421200007, 12.5302896}, //
+
13780 {0.421665013, 12.5477505}, //
+
13781 {0.422547996, 12.5654497}, //
+
13782 {0.42385, 12.5833998}, //
+
13783 {0.424594998, 12.5926504}, //
+
13784 {0.42534101, 12.6023302}, //
+
13785 {0.426088989, 12.6124201}, //
+
13786 {0.426838011, 12.6229296}, //
+
13787 {0.427587986, 12.6338501}, //
+
13788 {0.428339005, 12.6451998}, //
+
13789 {0.429091007, 12.6569595}, //
+
13790 {0.429845005, 12.6691504}, //
+
13791 {0.430599988, 12.6817503}, //
+
13792 {0.430579007, 12.6942902}, //
+
13793 {0.430516005, 12.7062798}, //
+
13794 {0.430411011, 12.7177296}, //
+
13795 {0.430263996, 12.7286396}, //
+
13796 {0.43007499, 12.7390003}, //
+
13797 {0.429843992, 12.7488203}, //
+
13798 {0.429571986, 12.75809}, //
+
13799 {0.429257005, 12.76682}, //
+
13800 {0.428900003, 12.7749996}, //
+
13801 {0.428501993, 12.7828102}, //
+
13802 {0.428063005, 12.7903996}, //
+
13803 {0.427583009, 12.7977896}, //
+
13804 {0.427062988, 12.8049698}, //
+
13805 {0.426501989, 12.8119297}, //
+
13806 {0.425900012, 12.8186903}, //
+
13807 {0.425256997, 12.8252401}, //
+
13808 {0.424573988, 12.8315697}, //
+
13809 {0.42385, 12.8376999}, //
+
13810 {0.423094004, 12.8408098}, //
+
13811 {0.422338992, 12.84408}, //
+
13812 {0.421582997, 12.8475199}, //
+
13813 {0.420828015, 12.85112}, //
+
13814 {0.420071989, 12.8548899}, //
+
13815 {0.419317007, 12.8588305}, //
+
13816 {0.418561012, 12.8629398}, //
+
13817 {0.417806, 12.8672104}, //
+
13818 {0.417050004, 12.8716497}, //
+
13819 {0.416882008, 12.8800402}, //
+
13820 {0.416377991, 12.8901501}, //
+
13821 {0.415538996, 12.9019699}, //
+
13822 {0.41436401, 12.9155102}, //
+
13823 {0.412851989, 12.9307699}, //
+
13824 {0.411006004, 12.9477396}, //
+
13825 {0.408823013, 12.9664297}, //
+
13826 {0.406304002, 12.9868298}, //
+
13827 {0.403450012, 13.0089502}, //
+
13828 {0.40022999, 13.0332003}, //
+
13829 {0.396591008, 13.06001}, //
+
13830 {0.392533004, 13.0893803}, //
+
13831 {0.388056993, 13.1212997}, //
+
13832 {0.383163005, 13.1557703}, //
+
13833 {0.377849996, 13.19279}, //
+
13834 {0.372119009, 13.2323799}, //
+
13835 {0.365969002, 13.2745104}, //
+
13836 {0.359400004, 13.3191996}, //
+
13837 {0.354373008, 13.3523302}, //
+
13838 {0.349848986, 13.3854198}, //
+
13839 {0.345827997, 13.4184704}, //
+
13840 {0.342308998, 13.4514799}, //
+
13841 {0.33929199, 13.4844398}, //
+
13842 {0.336778015, 13.5173597}, //
+
13843 {0.334766001, 13.55023}, //
+
13844 {0.33325699, 13.5830603}, //
+
13845 {0.332249999, 13.6158504}, //
+
13846 {0.331588, 13.6480799}, //
+
13847 {0.331092, 13.6792297}, //
+
13848 {0.330760986, 13.70928}, //
+
13849 {0.330596, 13.7382498}, //
+
13850 {0.330596, 13.7558899}, //
+
13851 {0.330971986, 13.7582703}, //
+
13852 {0.331577003, 13.7624702}, //
+
13853 {0.332138002, 13.7668104}, //
+
13854 {0.332655996, 13.7712698}, //
+
13855 {0.333130002, 13.7758503}, //
+
13856 {0.333561987, 13.7805595}, //
+
13857 {0.333950013, 13.7854004}, //
+
13858 {0.334264994, 13.7903605}, //
+
13859 {0.334455997, 13.7954502}, //
+
13860 {0.334522009, 13.8006601}, //
+
13861 {0.334464014, 13.8059998}, //
+
13862 {0.334280014, 13.8114595}, //
+
13863 {0.333972007, 13.8170404}, //
+
13864 {0.333539993, 13.8227501}, //
+
13865 {0.332982004, 13.8285904}, //
+
13866 {0.332300007, 13.8345499}, //
+
13867 {0.333254009, 13.8545599}, //
+
13868 {0.334627986, 13.8739004}, //
+
13869 {0.336421996, 13.8925695}, //
+
13870 {0.338636011, 13.9105701}, //
+
13871 {0.341268986, 13.9279099}, //
+
13872 {0.342891991, 13.9367704}, //
+
13873 {0.341924995, 13.9410696}, //
+
13874 {0.340750009, 13.9464502}, //
+
13875 {0.337224007, 13.9628696}, //
+
13876 {0.335649997, 13.9701996}, //
+
13877 {0.335608006, 13.9689198}, //
+
13878 {0.334978014, 13.94977}, //
+
13879 {0.333593011, 13.9076204}, //
+
13880 {0.332249999, 13.8667498}, //
+
13881 {0.331588, 13.8432302}, //
+
13882 {0.331092, 13.8186197}, //
+
13883 {0.330760986, 13.7929201}, //
+
13884 {0.330596, 13.7661304}, //
+
13885 {0.330596, 13.7558899}, //
+
13886 {0.330325007, 13.7541904}, //
+
13887 {0.329634011, 13.7502298}, //
+
13888 {0.328900009, 13.7463999}, //
+
13889 {0.328878999, 13.7425299}, //
+
13890 {0.328815997, 13.7384501}, //
+
13891 {0.328711003, 13.7341604}, //
+
13892 {0.328563988, 13.7296495}, //
+
13893 {0.328375012, 13.7249403}, //
+
13894 {0.328144014, 13.7200203}, //
+
13895 {0.327872008, 13.7148895}, //
+
13896 {0.327556998, 13.7095499}, //
+
13897 {0.327199996, 13.7040005}, //
+
13898 {0.326842993, 13.6981697}, //
+
13899 {0.326528013, 13.6919603}, //
+
13900 {0.326256007, 13.6853704}, //
+
13901 {0.326025009, 13.6784}, //
+
13902 {0.325836003, 13.6710596}, //
+
13903 {0.325688988, 13.6633301}, //
+
13904 {0.325583994, 13.6552296}, //
+
13905 {0.325520992, 13.64676}, //
+
13906 {0.325500011, 13.6379004}, //
+
13907 {0.325542003, 13.6286898}, //
+
13908 {0.325668007, 13.6191397}, //
+
13909 {0.325877994, 13.6092596}, //
+
13910 {0.326171994, 13.5990496}, //
+
13911 {0.326548994, 13.5885}, //
+
13912 {0.327010989, 13.57761}, //
+
13913 {0.327556998, 13.56639}, //
+
13914 {0.328186005, 13.5548401}, //
+
13915 {0.328900009, 13.5429497}, //
+
13916 {0.329676002, 13.5309401}, //
+
13917 {0.330493003, 13.5190096}, //
+
13918 {0.331349999, 13.5071602}, //
+
13919 {0.332248002, 13.4954004}, //
+
13920 {0.333187014, 13.4837198}, //
+
13921 {0.334167004, 13.4721298}, //
+
13922 {0.335186988, 13.4606199}, //
+
13923 {0.33624801, 13.4491901}, //
+
13924 {0.337350011, 13.43785}, //
+
13925 {0.338503987, 13.4267397}, //
+
13926 {0.339697987, 13.4160004}, //
+
13927 {0.340932995, 13.4056396}, //
+
13928 {0.342209011, 13.3956604}, //
+
13929 {0.343526006, 13.3860598}, //
+
13930 {0.344882995, 13.3768301}, //
+
13931 {0.346280992, 13.36798}, //
+
13932 {0.347719997, 13.3594999}, //
+
13933 {0.34920001, 13.3514004}, //
+
13934 {0.353900999, 13.3267899}, //
+
13935 {0.355244011, 13.3197603}, //
+
13936 {0.356000006, 13.3157997}, //
+
13937 {0.356168002, 13.3141298}, //
+
13938 {0.356377989, 13.3120298}, //
+
13939 {0.356671989, 13.3091002}, //
+
13940 {0.357048988, 13.3053398}, //
+
13941 {0.357511014, 13.3007298}, //
+
13942 {0.358056992, 13.29529}, //
+
13943 {0.358686, 13.28901}, //
+
13944 {0.359400004, 13.2819004}, //
+
13945 {0.360197008, 13.2742395}, //
+
13946 {0.361077011, 13.2663298}, //
+
13947 {0.362039, 13.2581701}, //
+
13948 {0.363083988, 13.2497501}, //
+
13949 {0.364212006, 13.2410898}, //
+
13950 {0.36542201, 13.2321701}, //
+
13951 {0.366715014, 13.2229996}, //
+
13952 {0.368090987, 13.2135696}, //
+
13953 {0.36954999, 13.2039003}, //
+
13954 {0.371039987, 13.19415}, //
+
13955 {0.372487992, 13.1844902}, //
+
13956 {0.373894006, 13.1749096}, //
+
13957 {0.375259012, 13.16541}, //
+
13958 {0.376581013, 13.1559896}, //
+
13959 {0.377860993, 13.1466599}, //
+
13960 {0.379099011, 13.1373997}, //
+
13961 {0.380295992, 13.1282396}, //
+
13962 {0.381449997, 13.1191502}, //
+
13963 {0.38251999, 13.1104403}, //
+
13964 {0.383464992, 13.1023998}, //
+
13965 {0.384283006, 13.0950298}, //
+
13966 {0.384976, 13.0883398}, //
+
13967 {0.385542989, 13.0823097}, //
+
13968 {0.38598299, 13.0769501}, //
+
13969 {0.386298001, 13.0722599}, //
+
13970 {0.386487007, 13.0682497}, //
+
13971 {0.386550009, 13.0649004}, //
+
13972 {0.387295008, 13.0617199}, //
+
13973 {0.38804099, 13.0582104}, //
+
13974 {0.388788998, 13.0543604}, //
+
13975 {0.38953799, 13.0501699}, //
+
13976 {0.390287995, 13.0456495}, //
+
13977 {0.391039014, 13.0407896}, //
+
13978 {0.391790986, 13.0355997}, //
+
13979 {0.392545015, 13.0300703}, //
+
13980 {0.393299997, 13.0242004}, //
+
13981 {0.394809991, 13.0143099}, //
+
13982 {0.396319985, 13.0042}, //
+
13983 {0.397828013, 12.9938803}, //
+
13984 {0.399334997, 12.9833603}, //
+
13985 {0.400840014, 12.97262}, //
+
13986 {0.402343988, 12.9616699}, //
+
13987 {0.403847992, 12.95051}, //
+
13988 {0.405348986, 12.9391298}, //
+
13989 {0.40685001, 12.9275503}, //
+
13990 {0.408318996, 12.9158897}, //
+
13991 {0.409704, 12.9042797}, //
+
13992 {0.411006004, 12.8927097}, //
+
13993 {0.412223011, 12.8811703}, //
+
13994 {0.413356006, 12.8696899}, //
+
13995 {0.414406002, 12.8582401}, //
+
13996 {0.415371001, 12.8468304}, //
+
13997 {0.416251987, 12.8354702}, //
+
13998 {0.417050004, 12.8241501}, //
+
13999 {0.413955003, 12.8420696}, //
+
14000 {0.410692006, 12.8611603}, //
+
14001 {0.407261014, 12.8814201}, //
+
14002 {0.403661996, 12.9028597}, //
+
14003 {0.399895996, 12.9254599}, //
+
14004 {0.395960987, 12.9492397}, //
+
14005 {0.391858995, 12.9741898}, //
+
14006 {0.387587994, 13.0003099}, //
+
14007 {0.383150011, 13.0276003}, //
+
14008 {0.378711998, 13.05268}, //
+
14009 {0.374440998, 13.0766697}, //
+
14010 {0.370339006, 13.0995703}, //
+
14011 {0.366403997, 13.1213799}, //
+
14012 {0.362637997, 13.1421003}, //
+
14013 {0.359039009, 13.1617298}, //
+
14014 {0.355607986, 13.1802797}, //
+
14015 {0.35234499, 13.1977301}, //
+
14016 {0.349249989, 13.2140999}, //
+
14017 {0.348452002, 13.2186499}, //
+
14018 {0.347570986, 13.2232904}, //
+
14019 {0.346605986, 13.2280197}, //
+
14020 {0.345555991, 13.23283}, //
+
14021 {0.344422996, 13.2377195}, //
+
14022 {0.343205988, 13.2426996}, //
+
14023 {0.341904014, 13.2477598}, //
+
14024 {0.340519011, 13.2529097}, //
+
14025 {0.339049995, 13.2581501}, //
+
14026 {0.336751997, 13.2757502}, //
+
14027 {0.334369004, 13.2938995}, //
+
14028 {0.331900001, 13.3125896}, //
+
14029 {0.329346001, 13.33183}, //
+
14030 {0.326707006, 13.3516102}, //
+
14031 {0.323983014, 13.3719301}, //
+
14032 {0.321173996, 13.3927898}, //
+
14033 {0.318280011, 13.4141998}, //
+
14034 {0.315299988, 13.4361496}, //
+
14035 {0.312415004, 13.4583197}, //
+
14036 {0.309780985, 13.48036}, //
+
14037 {0.307399988, 13.5022802}, //
+
14038 {0.305269986, 13.5240803}, //
+
14039 {0.303393006, 13.5457401}, //
+
14040 {0.301766992, 13.5672798}, //
+
14041 {0.300392985, 13.5887003}, //
+
14042 {0.299270004, 13.6099901}, //
+
14043 {0.298400015, 13.6311502}, //
+
14044 {0.298400015, 13.6683998}, //
+
14045 {0.297706991, 13.68929}, //
+
14046 {0.297646999, 13.6914701}, //
+
14047 {0.298617005, 13.6921101}, //
+
14048 {0.299744993, 13.6930504}, //
+
14049 {0.300621986, 13.6940403}, //
+
14050 {0.301248997, 13.6950703}, //
+
14051 {0.301625013, 13.6961403}, //
+
14052 {0.301750004, 13.6972504}, //
+
14053 {0.301667005, 13.6983604}, //
+
14054 {0.301416993, 13.6994305}, //
+
14055 {0.300999999, 13.7004604}, //
+
14056 {0.300417006, 13.7014399}, //
+
14057 {0.299667001, 13.7023802}, //
+
14058 {0.298750013, 13.70327}, //
+
14059 {0.297666997, 13.7041197}, //
+
14060 {0.297289997, 13.7043695}, //
+
14061 {0.297140986, 13.7097597}, //
+
14062 {0.296700001, 13.7298203}, //
+
14063 {0.29638499, 13.7494497}, //
+
14064 {0.296196014, 13.7686701}, //
+
14065 {0.296133012, 13.7874699}, //
+
14066 {0.296196014, 13.80585}, //
+
14067 {0.29638499, 13.8238096}, //
+
14068 {0.296700001, 13.8413496}, //
+
14069 {0.297307014, 13.8587704}, //
+
14070 {0.298373997, 13.8763504}, //
+
14071 {0.299899995, 13.8941002}, //
+
14072 {0.301885009, 13.9120197}, //
+
14073 {0.304329991, 13.9301004}, //
+
14074 {0.307233006, 13.94835}, //
+
14075 {0.310595989, 13.9667702}, //
+
14076 {0.314419001, 13.9853497}, //
+
14077 {0.318699986, 14.0040998}, //
+
14078 {0.329171985, 14.0367899}, //
+
14079 {0.339475006, 14.06705}, //
+
14080 {0.349611014, 14.0948801}, //
+
14081 {0.359578997, 14.1202803}, //
+
14082 {0.369379014, 14.14326}, //
+
14083 {0.379011005, 14.1638098}, //
+
14084 {0.388475001, 14.1819296}, //
+
14085 {0.397772014, 14.1976299}, //
+
14086 {0.406899989, 14.2109003}, //
+
14087 {0.409952998, 14.2162199}, //
+
14088 {0.413089991, 14.2216196}, //
+
14089 {0.416310996, 14.2271099}, //
+
14090 {0.419616014, 14.2326803}, //
+
14091 {0.423005015, 14.2383404}, //
+
14092 {0.426477998, 14.2440796}, //
+
14093 {0.430034995, 14.2498999}, //
+
14094 {0.433674991, 14.2558098}, //
+
14095 {0.437400013, 14.2617998}, //
+
14096 {0.441145986, 14.2678003}, //
+
14097 {0.444849014, 14.2737598}, //
+
14098 {0.448511004, 14.2796803}, //
+
14099 {0.452131003, 14.2855501}, //
+
14100 {0.45570901, 14.2913904}, //
+
14101 {0.459244013, 14.2971802}, //
+
14102 {0.462738007, 14.3029299}, //
+
14103 {0.46619001, 14.30863}, //
+
14104 {0.469599992, 14.3142996}, //
+
14105 {0.472927004, 14.3197699}, //
+
14106 {0.476128012, 14.3248596}, //
+
14107 {0.479205996, 14.3295698}, //
+
14108 {0.482158005, 14.33391}, //
+
14109 {0.484986007, 14.3378696}, //
+
14110 {0.487688988, 14.3414602}, //
+
14111 {0.490267009, 14.3446598}, //
+
14112 {0.492720991, 14.3474998}, //
+
14113 {0.495050013, 14.3499498}, //
+
14114 {0.496634007, 14.3523102}, //
+
14115 {0.498385996, 14.3548803}, //
+
14116 {0.50030601, 14.3576603}, //
+
14117 {0.502393007, 14.3606501}, //
+
14118 {0.504648983, 14.3638496}, //
+
14119 {0.507071972, 14.36726}, //
+
14120 {0.509663999, 14.3708801}, //
+
14121 {0.512422979, 14.3747101}, //
+
14122 {0.515349984, 14.3787498}, //
+
14123 {0.518329978, 14.3828897}, //
+
14124 {0.521224022, 14.3870401}, //
+
14125 {0.52403301, 14.39118}, //
+
14126 {0.526757002, 14.3953304}, //
+
14127 {0.529395998, 14.3994703}, //
+
14128 {0.531949997, 14.4036198}, //
+
14129 {0.534419, 14.4077597}, //
+
14130 {0.536801994, 14.4119101}, //
+
14131 {0.539099991, 14.41605}, //
+
14132 {0.541324019, 14.4201498}, //
+
14133 {0.543462992, 14.4241695}, //
+
14134 {0.545517027, 14.4281101}, //
+
14135 {0.547484994, 14.4319601}, //
+
14136 {0.549368978, 14.4357204}, //
+
14137 {0.551167011, 14.4394102}, //
+
14138 {0.552879989, 14.4429998}, //
+
14139 {0.554507017, 14.4465199}, //
+
14140 {0.556050003, 14.4499502}, //
+
14141 {0.556134999, 14.45014}, //
+
14142 {0.556010008, 14.4498301}, //
+
14143 {0.553978026, 14.4447002}, //
+
14144 {0.551735997, 14.4390297}, //
+
14145 {0.549286008, 14.4328098}, //
+
14146 {0.546627998, 14.4260502}, //
+
14147 {0.543760002, 14.4187403}, //
+
14148 {0.540684998, 14.4108896}, //
+
14149 {0.537400007, 14.4025002}, //
+
14150 {0.534052014, 14.3938799}, //
+
14151 {0.530788004, 14.3853302}, //
+
14152 {0.52760601, 14.3768797}, //
+
14153 {0.524505973, 14.3684998}, //
+
14154 {0.521489978, 14.36022}, //
+
14155 {0.518555999, 14.3520098}, //
+
14156 {0.515703976, 14.3438902}, //
+
14157 {0.512935996, 14.3358498}, //
+
14158 {0.510249972, 14.3278999}, //
+
14159 {0.50772202, 14.32026}, //
+
14160 {0.505402982, 14.3131704}, //
+
14161 {0.503293991, 14.3066196}, //
+
14162 {0.501396, 14.3006096}, //
+
14163 {0.499707013, 14.2951498}, //
+
14164 {0.498228014, 14.2902298}, //
+
14165 {0.496959001, 14.2858601}, //
+
14166 {0.495898992, 14.2820301}, //
+
14167 {0.495050013, 14.2787504}, //
+
14168 {0.490862012, 14.2557802}, //
+
14169 {0.487343997, 14.23211}, //
+
14170 {0.484494001, 14.2077198}, //
+
14171 {0.482313991, 14.18262}, //
+
14172 {0.480803013, 14.1568098}, //
+
14173 {0.479961008, 14.1302795}, //
+
14174 {0.479788005, 14.1030502}, //
+
14175 {0.480284989, 14.0751104}, //
+
14176 {0.481449991, 14.0464497}, //
+
14177 {0.48308599, 14.0178499}, //
+
14178 {0.484973013, 13.9900398}, //
+
14179 {0.487111002, 13.9630203}, //
+
14180 {0.489499003, 13.9368}, //
+
14181 {0.492137998, 13.9113703}, //
+
14182 {0.495027989, 13.8867397}, //
+
14183 {0.498167992, 13.8628998}, //
+
14184 {0.501559019, 13.8398504}, //
+
14185 {0.505200028, 13.8176003}, //
+
14186 {0.508086026, 13.7988501}, //
+
14187 {0.510721028, 13.7817698}, //
+
14188 {0.513105989, 13.7663698}, //
+
14189 {0.515240014, 13.7526398}, //
+
14190 {0.517122984, 13.7405796}, //
+
14191 {0.518755972, 13.7301998}, //
+
14192 {0.520138025, 13.7214899}, //
+
14193 {0.521269023, 13.7144604}, //
+
14194 {0.52214998, 13.7090998}, //
+
14195 {0.523576975, 13.7069302}, //
+
14196 {0.524836004, 13.7049198}, //
+
14197 {0.52592802, 13.7030802}, //
+
14198 {0.526850998, 13.7014103}, //
+
14199 {0.527607024, 13.6999102}, //
+
14200 {0.52819401, 13.6985703}, //
+
14201 {0.528613985, 13.6973896}, //
+
14202 {0.528865993, 13.6963902}, //
+
14203 {0.528949976, 13.69555}, //
+
14204 {0.528949976, 13.6921501}, //
+
14205 {0.528865993, 13.6936998}, //
+
14206 {0.528613985, 13.6953402}, //
+
14207 {0.52819401, 13.6970596}, //
+
14208 {0.527607024, 13.6988602}, //
+
14209 {0.526850998, 13.7007399}, //
+
14210 {0.52592802, 13.7027102}, //
+
14211 {0.524836004, 13.7047501}, //
+
14212 {0.523576975, 13.7068901}, //
+
14213 {0.52214998, 13.7090998}, //
+
14214 {0.519851983, 13.7146702}, //
+
14215 {0.517468989, 13.72083}, //
+
14216 {0.514999986, 13.7275696}, //
+
14217 {0.512445986, 13.73489}, //
+
14218 {0.509806991, 13.7427998}, //
+
14219 {0.507082999, 13.7512999}, //
+
14220 {0.504274011, 13.7603798}, //
+
14221 {0.501380026, 13.77005}, //
+
14222 {0.498400003, 13.7803001}, //
+
14223 {0.495409995, 13.7908497}, //
+
14224 {0.492462009, 13.8014097}, //
+
14225 {0.489556015, 13.8119602}, //
+
14226 {0.486690998, 13.8225098}, //
+
14227 {0.483868986, 13.8330603}, //
+
14228 {0.481088996, 13.8436098}, //
+
14229 {0.478350997, 13.8541603}, //
+
14230 {0.475654006, 13.8647003}, //
+
14231 {0.47299999, 13.8752499}, //
+
14232 {0.470470995, 13.8854599}, //
+
14233 {0.468151003, 13.8950005}, //
+
14234 {0.466039002, 13.9038696}, //
+
14235 {0.464136004, 13.9120703}, //
+
14236 {0.462440997, 13.91961}, //
+
14237 {0.460956007, 13.9264698}, //
+
14238 {0.459677994, 13.9326696}, //
+
14239 {0.458609998, 13.9381905}, //
+
14240 {0.457749993, 13.9430504}, //
+
14241 {0.45768699, 13.9484501}, //
+
14242 {0.457498014, 13.9541101}, //
+
14243 {0.457183003, 13.9600096}, //
+
14244 {0.456743002, 13.9661703}, //
+
14245 {0.456176013, 13.9725704}, //
+
14246 {0.45548299, 13.9792299}, //
+
14247 {0.454665005, 13.9861298}, //
+
14248 {0.453720003, 13.9932899}, //
+
14249 {0.452650011, 14.0007}, //
+
14250 {0.451474994, 14.0082998}, //
+
14251 {0.450215012, 14.0160198}, //
+
14252 {0.448872, 14.0238705}, //
+
14253 {0.447445005, 14.0318403}, //
+
14254 {0.445933998, 14.0399399}, //
+
14255 {0.444339007, 14.0481701}, //
+
14256 {0.442660004, 14.0565205}, //
+
14257 {0.440896988, 14.0649996}, //
+
14258 {0.439049989, 14.0735998}, //
+
14259 {0.437234998, 14.0820999}, //
+
14260 {0.435544014, 14.0902596}, //
+
14261 {0.433977991, 14.0980902}, //
+
14262 {0.432536006, 14.1055803}, //
+
14263 {0.431219995, 14.1127396}, //
+
14264 {0.430027992, 14.1195602}, //
+
14265 {0.428959996, 14.1260405}, //
+
14266 {0.428018004, 14.1321898}, //
+
14267 {0.42719999, 14.1379995}, //
+
14268 {0.423891008, 14.1631403}, //
+
14269 {0.42385, 14.1634502}, //
+
14270 {0.421835005, 14.1604404}, //
+
14271 {0.42070201, 14.15874}, //
+
14272 {0.419317007, 14.1566696}, //
+
14273 {0.417679995, 14.1542196}, //
+
14274 {0.415791005, 14.1513996}, //
+
14275 {0.413650006, 14.1482}, //
+
14276 {0.411394, 14.1447096}, //
+
14277 {0.409135997, 14.1409998}, //
+
14278 {0.406877995, 14.1370897}, //
+
14279 {0.404617995, 14.1329699}, //
+
14280 {0.402357012, 14.1286297}, //
+
14281 {0.400094002, 14.1240902}, //
+
14282 {0.397830993, 14.1193399}, //
+
14283 {0.395565987, 14.1143703}, //
+
14284 {0.393299997, 14.1091995}, //
+
14285 {0.391043991, 14.10392}, //
+
14286 {0.388785988, 14.0986404}, //
+
14287 {0.386527985, 14.0933704}, //
+
14288 {0.384267986, 14.0880899}, //
+
14289 {0.382007003, 14.0828104}, //
+
14290 {0.379743993, 14.0775299}, //
+
14291 {0.377481014, 14.0722599}, //
+
14292 {0.375216007, 14.0669804}, //
+
14293 {0.372949988, 14.0616999}, //
+
14294 {0.370819986, 14.0565996}, //
+
14295 {0.368939996, 14.0518398}, //
+
14296 {0.367311001, 14.04741}, //
+
14297 {0.365933001, 14.0433102}, //
+
14298 {0.364805013, 14.0395498}, //
+
14299 {0.36392799, 14.0361204}, //
+
14300 {0.363301009, 14.0330296}, //
+
14301 {0.362924993, 14.0302696}, //
+
14302 {0.362800002, 14.0278502}, //
+
14303 {0.362044007, 14.0247002}, //
+
14304 {0.361288995, 14.0213099}, //
+
14305 {0.360532999, 14.0176601}, //
+
14306 {0.359777987, 14.0137701}, //
+
14307 {0.359021991, 14.0096197}, //
+
14308 {0.358267009, 14.0052299}, //
+
14309 {0.357511014, 14.0005798}, //
+
14310 {0.356756002, 13.9956903}, //
+
14311 {0.356000006, 13.99055}, //
+
14312 {0.351687998, 13.9758902}, //
+
14313 {0.34779501, 13.9605703}, //
+
14314 {0.344321996, 13.9445696}, //
+
14315 {0.342891991, 13.9367704}, //
+
14316 {0.343181998, 13.9354801}, //
+
14317 {0.344521999, 13.9296799}, //
+
14318 {0.345945001, 13.9236698}, //
+
14319 {0.347451001, 13.91745}, //
+
14320 {0.349038988, 13.9110298}, //
+
14321 {0.350710005, 13.9043903}, //
+
14322 {0.35246399, 13.8975496}, //
+
14323 {0.354299992, 13.8905001}, //
+
14324 {0.356187999, 13.8833599}, //
+
14325 {0.358074993, 13.8762703}, //
+
14326 {0.359961003, 13.8692198}, //
+
14327 {0.361846, 13.8621998}, //
+
14328 {0.363729, 13.8552303}, //
+
14329 {0.365610987, 13.8483}, //
+
14330 {0.36749199, 13.8414097}, //
+
14331 {0.36937201, 13.8345604}, //
+
14332 {0.371250004, 13.8277502}, //
+
14333 {0.373118013, 13.8211002}, //
+
14334 {0.374944001, 13.8147001}, //
+
14335 {0.376727998, 13.8085403}, //
+
14336 {0.378470004, 13.80264}, //
+
14337 {0.380169988, 13.7969904}, //
+
14338 {0.38182801, 13.7915897}, //
+
14339 {0.383444011, 13.7864504}, //
+
14340 {0.385017991, 13.7815504}, //
+
14341 {0.386550009, 13.7769003}, //
+
14342 {0.390944004, 13.7666903}, //
+
14343 {0.396593988, 13.7541399}, //
+
14344 {0.403499991, 13.7392397}, //
+
14345 {0.411660999, 13.7220001}, //
+
14346 {0.421077996, 13.7024097}, //
+
14347 {0.43175, 13.68048}, //
+
14348 {0.443677992, 13.6562004}, //
+
14349 {0.456860989, 13.62957}, //
+
14350 {0.471300006, 13.6006002}, //
+
14351 {0.487794012, 13.5690002}, //
+
14352 {0.504119992, 13.5374804}, //
+
14353 {0.520277977, 13.5060396}, //
+
14354 {0.536267996, 13.4746904}, //
+
14355 {0.552089989, 13.4434299}, //
+
14356 {0.567744017, 13.41224}, //
+
14357 {0.583230972, 13.3811502}, //
+
14358 {0.598549008, 13.3501301}, //
+
14359 {0.613699973, 13.3191996}, //
+
14360 {0.636932015, 13.26717}, //
+
14361 {0.658406019, 13.2180595}, //
+
14362 {0.678121984, 13.1718903}, //
+
14363 {0.696080029, 13.1286497}, //
+
14364 {0.712279975, 13.0883398}, //
+
14365 {0.726722002, 13.0509596}, //
+
14366 {0.73940599, 13.01651}, //
+
14367 {0.750331998, 12.9849901}, //
+
14368 {0.759500027, 12.9563999}, //
+
14369 {0.763895988, 12.9402599}, //
+
14370 {0.768041015, 12.9235001}, //
+
14371 {0.771933019, 12.9061098}, //
+
14372 {0.775574028, 12.8880796}, //
+
14373 {0.778963029, 12.8694296}, //
+
14374 {0.782100022, 12.8501596}, //
+
14375 {0.784985006, 12.8302498}, //
+
14376 {0.787618995, 12.8097095}, //
+
14377 {0.790000021, 12.7885504}, //
+
14378 {0.792098999, 12.7675104}, //
+
14379 {0.79339999, 12.7526302}, //
+
14380 {0.79339999, 12.74615}, //
+
14381 {0.795040011, 12.7314396}, //
+
14382 {0.79528898, 12.7280798}, //
+
14383 {0.796379983, 12.7096796}, //
+
14384 {0.797136009, 12.6921597}, //
+
14385 {0.797555983, 12.6755304}, //
+
14386 {0.797640026, 12.65977}, //
+
14387 {0.797388017, 12.6449003}, //
+
14388 {0.796800017, 12.6309004}, //
+
14389 {0.79478699, 12.6211395}, //
+
14390 {0.791769981, 12.6099596}, //
+
14391 {0.787750006, 12.5973597}, //
+
14392 {0.78272599, 12.5833302}, //
+
14393 {0.776697993, 12.5678797}, //
+
14394 {0.769667029, 12.5510101}, //
+
14395 {0.761631012, 12.5327101}, //
+
14396 {0.753786981, 12.5156002}, //
+
14397 {0.752699971, 12.5156002}, //
+
14398 {0.749459982, 12.5064001}, //
+
14399 {0.742550015, 12.4918499}, //
+
14400 {0.732005, 12.4700699}, //
+
14401 {0.721458972, 12.44841}, //
+
14402 {0.710910976, 12.4268799}, //
+
14403 {0.700362027, 12.4054699}, //
+
14404 {0.689812005, 12.3841896}, //
+
14405 {0.679261029, 12.3630304}, //
+
14406 {0.66870898, 12.3419905}, //
+
14407 {0.658155024, 12.3210802}, //
+
14408 {0.647599995, 12.3002996}, //
+
14409 {0.637431979, 12.2803898}, //
+
14410 {0.628017008, 12.2621202}, //
+
14411 {0.619355977, 12.2454796}, //
+
14412 {0.611446977, 12.2304802}, //
+
14413 {0.604291022, 12.2171097}, //
+
14414 {0.597889006, 12.2053699}, //
+
14415 {0.592239976, 12.19526}, //
+
14416 {0.587342978, 12.1867905}, //
+
14417 {0.583199978, 12.1799498}, //
+
14418 {0.57930702, 12.1717501}, //
+
14419 {0.575163007, 12.1637096}, //
+
14420 {0.570766985, 12.1558399}, //
+
14421 {0.566119015, 12.14814}, //
+
14422 {0.563970029, 12.1448298}, //
+
14423 {0.564409018, 12.1423302}, //
+
14424 {0.565093994, 12.1392403}, //
+
14425 {0.565904975, 12.1362896}, //
+
14426 {0.566839993, 12.13346}, //
+
14427 {0.567900002, 12.1307497}, //
+
14428 {0.569180012, 12.1282997}, //
+
14429 {0.570752025, 12.1262398}, //
+
14430 {0.572616994, 12.1245403}, //
+
14431 {0.574774027, 12.12323}, //
+
14432 {0.577224016, 12.1222897}, //
+
14433 {0.579967022, 12.1217299}, //
+
14434 {0.583001971, 12.1215401}, //
+
14435 {0.586329997, 12.1217299}, //
+
14436 {0.589950025, 12.1223001}, //
+
14437 {0.592299998, 12.1230602}, //
+
14438 {0.594816983, 12.1238098}, //
+
14439 {0.597500026, 12.1245699}, //
+
14440 {0.600350022, 12.1253204}, //
+
14441 {0.603366971, 12.1260796}, //
+
14442 {0.606549978, 12.1268301}, //
+
14443 {0.609899998, 12.1275902}, //
+
14444 {0.613417029, 12.1283398}, //
+
14445 {0.6171, 12.1290998}, //
+
14446 {0.620132029, 12.1305399}, //
+
14447 {0.623206019, 12.1318502}, //
+
14448 {0.626321971, 12.1330404}, //
+
14449 {0.629480004, 12.1341}, //
+
14450 {0.632679999, 12.1350403}, //
+
14451 {0.635922015, 12.1358604}, //
+
14452 {0.639205992, 12.1365499}, //
+
14453 {0.642531991, 12.1371098}, //
+
14454 {0.645900011, 12.1375504}, //
+
14455 {0.649268985, 12.1378603}, //
+
14456 {0.652595997, 12.1380501}, //
+
14457 {0.655883014, 12.1381197}, //
+
14458 {0.659129977, 12.1380501}, //
+
14459 {0.662334979, 12.1378603}, //
+
14460 {0.665499985, 12.1375504}, //
+
14461 {0.668623984, 12.1371098}, //
+
14462 {0.671706975, 12.1365404}, //
+
14463 {0.67474997, 12.13585}, //
+
14464 {0.678559005, 12.1351805}, //
+
14465 {0.68245101, 12.1346703}, //
+
14466 {0.68642801, 12.1343403}, //
+
14467 {0.690487981, 12.1341696}, //
+
14468 {0.694633007, 12.1341696}, //
+
14469 {0.698861003, 12.1343403}, //
+
14470 {0.703172982, 12.1346703}, //
+
14471 {0.707570016, 12.1351805}, //
+
14472 {0.712050021, 12.13585}, //
+
14473 {0.734049976, 12.13585}, //
+
14474 {0.737554014, 12.1343298}, //
+
14475 {0.741264999, 12.13276}, //
+
14476 {0.745182991, 12.1311598}, //
+
14477 {0.749309003, 12.1295004}, //
+
14478 {0.753642976, 12.1278095}, //
+
14479 {0.758183002, 12.12607}, //
+
14480 {0.762930989, 12.1242905}, //
+
14481 {0.767886996, 12.1224699}, //
+
14482 {0.77305001, 12.1205997}, //
+
14483 {0.778264999, 12.1187601}, //
+
14484 {0.783353984, 12.1170101}, //
+
14485 {0.788317025, 12.1153402}, //
+
14486 {0.793154001, 12.1137505}, //
+
14487 {0.797864974, 12.1122503}, //
+
14488 {0.802450001, 12.1108198}, //
+
14489 {0.806909025, 12.1094799}, //
+
14490 {0.811242998, 12.1082201}, //
+
14491 {0.815450013, 12.1070499}, //
+
14492 {0.819447994, 12.10602}, //
+
14493 {0.823153973, 12.1051998}, //
+
14494 {0.826566994, 12.1045904}, //
+
14495 {0.829686999, 12.1042004}, //
+
14496 {0.832515001, 12.1040096}, //
+
14497 {0.835049987, 12.1040297}, //
+
14498 {0.837293029, 12.1042604}, //
+
14499 {0.839242995, 12.1047001}, //
+
14500 {0.840900004, 12.1053495}, //
+
14501 {0.84493798, 12.1058998}, //
+
14502 {0.849520028, 12.10602}, //
+
14503 {0.854644001, 12.1057301}, //
+
14504 {0.860311985, 12.10501}, //
+
14505 {0.866523027, 12.1038799}, //
+
14506 {0.873278022, 12.1023302}, //
+
14507 {0.880575001, 12.1003504}, //
+
14508 {0.888415992, 12.0979605}, //
+
14509 {0.896799982, 12.09515}, //
+
14510 {0.90536201, 12.0921402}, //
+
14511 {0.913716018, 12.0891304}, //
+
14512 {0.921860993, 12.0861197}, //
+
14513 {0.929798007, 12.0831099}, //
+
14514 {0.937524974, 12.0800896}, //
+
14515 {0.945043981, 12.0770798}, //
+
14516 {0.952355027, 12.07407}, //
+
14517 {0.95945698, 12.0710602}, //
+
14518 {0.966350019, 12.0680504}, //
+
14519 {0.970883012, 12.0651197}, //
+
14520 {0.97545898, 12.0623598}, //
+
14521 {0.980077982, 12.0597696}, //
+
14522 {0.984740019, 12.0573397}, //
+
14523 {0.989445984, 12.0550804}, //
+
14524 {0.994193971, 12.0529804}, //
+
14525 {0.998986006, 12.0510597}, //
+
14526 {1.00381994, 12.0492897}, //
+
14527 {1.00870001, 12.0476999}, //
+
14528 {1.01356006, 12.0462103}, //
+
14529 {1.01832998, 12.0447598}, //
+
14530 {1.02302003, 12.0433598}, //
+
14531 {1.02762997, 12.0419903}, //
+
14532 {1.03215003, 12.0406704}, //
+
14533 {1.03658998, 12.0393896}, //
+
14534 {1.04094005, 12.0381498}, //
+
14535 {1.04521, 12.0369501}, //
+
14536 {1.04939997, 12.0358}, //
+
14537 {1.05676997, 12.0338001}, //
+
14538 {1.05975997, 12.0329905}, //
+
14539 {1.06228995, 12.0323095}, //
+
14540 {1.06437004, 12.0317497}, //
+
14541 {1.06597996, 12.0313101}, //
+
14542 {1.06712997, 12.0310001}, //
+
14543 {1.06781995, 12.0308104}, //
+
14544 {1.06805003, 12.0307503}, //
+
14545 {1.05789995, 12.0002499}, //
+
14546 {1.05771005, 12.0000601}, //
+
14547 {1.05755997, 11.9999142}, //
+
14548 {1.05737996, 11.9997253}, //
+
14549 {1.05620003, 11.9985504}, //
+
14550 {1.05574, 11.9981718}, //
+
14551 {1.05510998, 11.9977942}, //
+
14552 {1.05430996, 11.9974174}, //
+
14553 {1.05334997, 11.9970388}, //
+
14554 {1.05220997, 11.9966612}, //
+
14555 {1.05091, 11.9962826}, //
+
14556 {1.04944003, 11.9959059}, //
+
14557 {1.04779994, 11.9955282}, //
+
14558 {1.046, 11.9951496}, //
+
14559 {1.04413998, 11.9947929}, //
+
14560 {1.04233003, 11.9944782}, //
+
14561 {1.04054999, 11.9942064}, //
+
14562 {1.03881001, 11.9939747}, //
+
14563 {1.03711998, 11.9937859}, //
+
14564 {1.03547001, 11.993639}, //
+
14565 {1.03384995, 11.9935341}, //
+
14566 {1.03227997, 11.9934711}, //
+
14567 {1.03075004, 11.9934502}, //
+
14568 {1.02924001, 11.9934921}, //
+
14569 {1.02772999, 11.993618}, //
+
14570 {1.02621996, 11.9938278}, //
+
14571 {1.02471995, 11.9941216}, //
+
14572 {1.02321005, 11.9944992}, //
+
14573 {1.02171004, 11.9949608}, //
+
14574 {1.02020001, 11.9955072}, //
+
14575 {1.0187, 11.9961357}, //
+
14576 {1.01719999, 11.99685}, //
+
14577 {1.01705003, 11.996912}, //
+
14578 {1.01587999, 11.9974108}, //
+
14579 {1.01353002, 11.9984093}, //
+
14580 {1.00530005, 12.0018997}, //
+
14581 {1.00259995, 12.0031004}, //
+
14582 {0.999781013, 12.0044203}, //
+
14583 {0.996833026, 12.0058603}, //
+
14584 {0.993758976, 12.0074301}, //
+
14585 {0.990558982, 12.0091295}, //
+
14586 {0.987232983, 12.0109396}, //
+
14587 {0.98378098, 12.0128899}, //
+
14588 {0.980203986, 12.0149603}, //
+
14589 {0.976499975, 12.0171499}, //
+
14590 {0.972691, 12.0193996}, //
+
14591 {0.968798995, 12.0215998}, //
+
14592 {0.964821994, 12.0237598}, //
+
14593 {0.960762024, 12.0258703}, //
+
14594 {0.956616998, 12.0279398}, //
+
14595 {0.952389002, 12.0299702}, //
+
14596 {0.948077023, 12.0319595}, //
+
14597 {0.943679988, 12.0339003}, //
+
14598 {0.939199984, 12.0358}, //
+
14599 {0.934762001, 12.0376301}, //
+
14600 {0.930490971, 12.0393295}, //
+
14601 {0.926388979, 12.0409002}, //
+
14602 {0.922454, 12.0423498}, //
+
14603 {0.918687999, 12.0436697}, //
+
14604 {0.915089011, 12.0448704}, //
+
14605 {0.911657989, 12.0459404}, //
+
14606 {0.908394992, 12.0468798}, //
+
14607 {0.905300021, 12.0476999}, //
+
14608 {0.893369973, 12.0512199}, //
+
14609 {0.881690025, 12.0542297}, //
+
14610 {0.870261014, 12.0567398}, //
+
14611 {0.859082997, 12.0587502}, //
+
14612 {0.848155022, 12.0602503}, //
+
14613 {0.837477982, 12.0612602}, //
+
14614 {0.827050984, 12.0617599}, //
+
14615 {0.816874981, 12.0617504}, //
+
14616 {0.806949973, 12.0612497}, //
+
14617 {0.800885022, 12.0597296}, //
+
14618 {0.794735014, 12.0581598}, //
+
14619 {0.788500011, 12.0565596}, //
+
14620 {0.782180011, 12.0549002}, //
+
14621 {0.775774002, 12.0532103}, //
+
14622 {0.769282997, 12.0514698}, //
+
14623 {0.762706995, 12.0496902}, //
+
14624 {0.756045997, 12.0478697}, //
+
14625 {0.749300003, 12.0459995}, //
+
14626 {0.742522001, 12.0439796}, //
+
14627 {0.735743999, 12.0416603}, //
+
14628 {0.728967011, 12.0390396}, //
+
14629 {0.722189009, 12.0361404}, //
+
14630 {0.715411007, 12.0329399}, //
+
14631 {0.708633006, 12.0294399}, //
+
14632 {0.701856017, 12.0256596}, //
+
14633 {0.695078015, 12.0215797}, //
+
14634 {0.688300014, 12.0172005}, //
+
14635 {0.682246029, 12.0127401}, //
+
14636 {0.676151991, 12.0084105}, //
+
14637 {0.670017004, 12.0042}, //
+
14638 {0.663841009, 12.0001202}, //
+
14639 {0.657624006, 11.9961634}, //
+
14640 {0.651367009, 11.9923334}, //
+
14641 {0.645069003, 11.9886303}, //
+
14642 {0.63872999, 11.9850521}, //
+
14643 {0.632350028, 11.9815998}, //
+
14644 {0.62609601, 11.9783993}, //
+
14645 {0.620135009, 11.9755754}, //
+
14646 {0.614467025, 11.9731283}, //
+
14647 {0.609090984, 11.9710569}, //
+
14648 {0.604007006, 11.9693623}, //
+
14649 {0.599216998, 11.9680443}, //
+
14650 {0.594718993, 11.967103}, //
+
14651 {0.590512991, 11.9665384}, //
+
14652 {0.586600006, 11.9663496}, //
+
14653 {0.583514988, 11.9663286}, //
+
14654 {0.580305994, 11.9662657}, //
+
14655 {0.576972008, 11.9661608}, //
+
14656 {0.573513985, 11.9660139}, //
+
14657 {0.569930017, 11.9658251}, //
+
14658 {0.566222012, 11.9655943}, //
+
14659 {0.562390029, 11.9653215}, //
+
14660 {0.558431983, 11.9650068}, //
+
14661 {0.554350019, 11.9646502}, //
+
14662 {0.550185025, 11.9642506}, //
+
14663 {0.545979977, 11.96381}, //
+
14664 {0.541733027, 11.9633284}, //
+
14665 {0.537446022, 11.9628029}, //
+
14666 {0.533119023, 11.9622364}, //
+
14667 {0.528750002, 11.961628}, //
+
14668 {0.524340987, 11.9609766}, //
+
14669 {0.519891024, 11.9602852}, //
+
14670 {0.515399992, 11.9595499}, //
+
14671 {0.478049994, 11.9595499}, //
+
14672 {0.477326006, 11.9595709}, //
+
14673 {0.476642996, 11.9596338}, //
+
14674 {0.476000011, 11.9597387}, //
+
14675 {0.475398004, 11.9598856}, //
+
14676 {0.474837005, 11.9600754}, //
+
14677 {0.474317014, 11.9603062}, //
+
14678 {0.473836988, 11.960578}, //
+
14679 {0.473398, 11.9608927}, //
+
14680 {0.47299999, 11.9612503}, //
+
14681 {0.471300006, 11.9629498}, //
+
14682 {0.474700004, 11.9900503}, //
+
14683 {0.474700004, 11.9883499}, //
+
14684 {0.474721014, 11.9879932}, //
+
14685 {0.474783987, 11.9876776}, //
+
14686 {0.47488901, 11.9874058}, //
+
14687 {0.475035995, 11.987175}, //
+
14688 {0.475225002, 11.9869862}, //
+
14689 {0.475455999, 11.9868393}, //
+
14690 {0.475728005, 11.9867344}, //
+
14691 {0.476042986, 11.9866714}, //
+
14692 {0.476399988, 11.9866505}, //
+
14693 {0.478100002, 11.9866505}, //
+
14694 {0.478119999, 11.9866285}, //
+
14695 {0.478282988, 11.9864607}, //
+
14696 {0.478426009, 11.9863138}, //
+
14697 {0.47883299, 11.9858942}, //
+
14698 {0.479404002, 11.9853067}, //
+
14699 {0.479750007, 11.9849501}, //
+
14700 {0.48012799, 11.9846039}, //
+
14701 {0.480506003, 11.9842978}, //
+
14702 {0.480883002, 11.9840326}, //
+
14703 {0.481260985, 11.9838095}, //
+
14704 {0.481638998, 11.9836264}, //
+
14705 {0.48201701, 11.9834833}, //
+
14706 {0.48239401, 11.9833813}, //
+
14707 {0.482771993, 11.9833202}, //
+
14708 {0.483150005, 11.9833002}, //
+
14709 {0.495050013, 11.9833002}, //
+
14710 {0.497263998, 11.9833412}, //
+
14711 {0.499392986, 11.9834652}, //
+
14712 {0.501438975, 11.9836721}, //
+
14713 {0.503400981, 11.9839621}, //
+
14714 {0.505277991, 11.984334}, //
+
14715 {0.507071972, 11.9847889}, //
+
14716 {0.508782029, 11.9853268}, //
+
14717 {0.510407984, 11.9859467}, //
+
14718 {0.511950016, 11.9866505}, //
+
14719 {0.513418972, 11.9874058}, //
+
14720 {0.514804006, 11.9881611}, //
+
14721 {0.516106009, 11.9889174}, //
+
14722 {0.517323017, 11.9896717}, //
+
14723 {0.518455982, 11.990428}, //
+
14724 {0.519505978, 11.9911833}, //
+
14725 {0.520470977, 11.9919386}, //
+
14726 {0.521351993, 11.9926939}, //
+
14727 {0.52214998, 11.9934502}, //
+
14728 {0.52512002, 11.9949598}, //
+
14729 {0.528006971, 11.9964705}, //
+
14730 {0.530811012, 11.9979782}, //
+
14731 {0.533532977, 11.999485}, //
+
14732 {0.536171973, 12.0009899}, //
+
14733 {0.538727999, 12.00249}, //
+
14734 {0.541200995, 12.0039997}, //
+
14735 {0.543591976, 12.0054998}, //
+
14736 {0.545899987, 12.007}, //
+
14737 {0.548030019, 12.0077105}, //
+
14738 {0.549910009, 12.0083399}, //
+
14739 {0.552917004, 12.0093498}, //
+
14740 {0.554921985, 12.0100203}, //
+
14741 {0.555549026, 12.0102301}, //
+
14742 {0.555925012, 12.0103598}, //
+
14743 {0.556050003, 12.0103998}, //
+
14744 {0.556784987, 12.0111103}, //
+
14745 {0.557476997, 12.0117397}, //
+
14746 {0.558127999, 12.01229}, //
+
14747 {0.558736026, 12.0127497}, //
+
14748 {0.559302986, 12.0131302}, //
+
14749 {0.559827983, 12.0134201}, //
+
14750 {0.560310006, 12.0136299}, //
+
14751 {0.560751021, 12.0137596}, //
+
14752 {0.561150014, 12.0137997}, //
+
14753 {0.593349993, 12.0137997}, //
+
14754 {0.597787976, 12.0131702}, //
+
14755 {0.602059007, 12.0127897}, //
+
14756 {0.606160998, 12.01266}, //
+
14757 {0.610095978, 12.0127802}, //
+
14758 {0.613861978, 12.0131502}, //
+
14759 {0.617461026, 12.0137796}, //
+
14760 {0.620891988, 12.0146503}, //
+
14761 {0.624154985, 12.0157804}, //
+
14762 {0.627250016, 12.0171499}, //
+
14763 {0.630271971, 12.0186596}, //
+
14764 {0.633292019, 12.0201702}, //
+
14765 {0.636310995, 12.0216799}, //
+
14766 {0.639329016, 12.0231895}, //
+
14767 {0.642346025, 12.0247097}, //
+
14768 {0.645361006, 12.0262203}, //
+
14769 {0.648374975, 12.02773}, //
+
14770 {0.65138799, 12.0292397}, //
+
14771 {0.654399991, 12.0307503}, //
+
14772 {0.658250988, 12.03368}, //
+
14773 {0.662268996, 12.0364399}, //
+
14774 {0.666455984, 12.0390301}, //
+
14775 {0.670809984, 12.04146}, //
+
14776 {0.67533201, 12.0437202}, //
+
14777 {0.680022001, 12.0458202}, //
+
14778 {0.684880018, 12.04774}, //
+
14779 {0.689906001, 12.04951}, //
+
14780 {0.695100009, 12.0510998}, //
+
14781 {0.700219989, 12.0518999}, //
+
14782 {0.705048025, 12.0527802}, //
+
14783 {0.709582984, 12.0537395}, //
+
14784 {0.713826001, 12.05478}, //
+
14785 {0.717776, 12.0559101}, //
+
14786 {0.721432984, 12.0571203}, //
+
14787 {0.724798024, 12.0584202}, //
+
14788 {0.727869987, 12.0597897}, //
+
14789 {0.730650008, 12.0612497}, //
+
14790 {0.733210027, 12.0627403}, //
+
14791 {0.735601008, 12.0641899}, //
+
14792 {0.737821996, 12.0655899}, //
+
14793 {0.739875019, 12.0669498}, //
+
14794 {0.741757989, 12.0682697}, //
+
14795 {0.74347198, 12.06954}, //
+
14796 {0.745016992, 12.0707703}, //
+
14797 {0.746393025, 12.0719604}, //
+
14798 {0.747600019, 12.0731001}, //
+
14799 {0.748669982, 12.0741701}, //
+
14800 {0.749615014, 12.0751104}, //
+
14801 {0.750433028, 12.0759296}, //
+
14802 {0.751125991, 12.0766296}, //
+
14803 {0.75169301, 12.0771904}, //
+
14804 {0.752133012, 12.07763}, //
+
14805 {0.752699971, 12.0782003}, //
+
14806 {0.750014007, 12.0795403}, //
+
14807 {0.749300003, 12.0798998}, //
+
14808 {0.748492002, 12.0803003}, //
+
14809 {0.747556984, 12.08074}, //
+
14810 {0.746493995, 12.0812197}, //
+
14811 {0.745305002, 12.0817499}, //
+
14812 {0.743987978, 12.0823097}, //
+
14813 {0.742543995, 12.0829201}, //
+
14814 {0.740972996, 12.0835695}, //
+
14815 {0.739274979, 12.0842695}, //
+
14816 {0.737450004, 12.085}, //
+
14817 {0.735508978, 12.0857096}, //
+
14818 {0.733439982, 12.08634}, //
+
14819 {0.731244028, 12.0868902}, //
+
14820 {0.728922009, 12.0873499}, //
+
14821 {0.72647202, 12.0877304}, //
+
14822 {0.723894, 12.0880203}, //
+
14823 {0.721189976, 12.0882301}, //
+
14824 {0.718358994, 12.0883598}, //
+
14825 {0.715399981, 12.0883999}, //
+
14826 {0.709376991, 12.0883598}, //
+
14827 {0.703352988, 12.0882301}, //
+
14828 {0.697327971, 12.0880203}, //
+
14829 {0.691300988, 12.0877304}, //
+
14830 {0.685272992, 12.0873499}, //
+
14831 {0.679243982, 12.0868902}, //
+
14832 {0.673214018, 12.08634}, //
+
14833 {0.667182982, 12.0857096}, //
+
14834 {0.661149979, 12.085}, //
+
14835 {0.539099991, 12.085}, //
+
14836 {0.536864996, 12.0850201}, //
+
14837 {0.534669995, 12.0850801}, //
+
14838 {0.532517016, 12.0851898}, //
+
14839 {0.530403972, 12.0853395}, //
+
14840 {0.528330982, 12.0855198}, //
+
14841 {0.526300013, 12.0857601}, //
+
14842 {0.52430898, 12.08603}, //
+
14843 {0.522359014, 12.08634}, //
+
14844 {0.520449996, 12.0867004}, //
+
14845 {0.518676996, 12.08706}, //
+
14846 {0.517265022, 12.0873404}, //
+
14847 {0.521405995, 12.0925398}, //
+
14848 {0.527221024, 12.0994101}, //
+
14849 {0.533119023, 12.1059504}, //
+
14850 {0.539099991, 12.1121502}, //
+
14851 {0.54500699, 12.11901}, //
+
14852 {0.550662994, 12.1260405}, //
+
14853 {0.55606699, 12.1332397}, //
+
14854 {0.561218977, 12.1406002}, //
+
14855 {0.563970029, 12.1448298}, //
+
14856 {0.563848019, 12.1455297}, //
+
14857 {0.563410997, 12.14886}, //
+
14858 {0.563099027, 12.1523199}, //
+
14859 {0.562911987, 12.1559}, //
+
14860 {0.562849998, 12.1596003}, //
+
14861 {0.512000024, 12.0883999}, //
+
14862 {0.515756011, 12.0876398}, //
+
14863 {0.517265022, 12.0873404}, //
+
14864 {0.515672982, 12.0853395}, //
+
14865 {0.510022998, 12.0777998}, //
+
14866 {0.504455984, 12.0699301}, //
+
14867 {0.498970985, 12.0617199}, //
+
14868 {0.493568987, 12.0531797}, //
+
14869 {0.488249987, 12.0443001}, //
+
14870 {0.482603997, 12.0307903}, //
+
14871 {0.477708995, 12.0173502}, //
+
14872 {0.473567009, 12.0040102}, //
+
14873 {0.470176011, 11.9907398}, //
+
14874 {0.467536986, 11.9775562}, //
+
14875 {0.465649992, 11.9644556}, //
+
14876 {0.464515001, 11.951438}, //
+
14877 {0.464130998, 11.9385023}, //
+
14878 {0.46450001, 11.9256496}, //
+
14879 {0.46450001, 11.9053001}, //
+
14880 {0.465507001, 11.8962135}, //
+
14881 {0.467016011, 11.8870459}, //
+
14882 {0.469027996, 11.8777943}, //
+
14883 {0.471542001, 11.8684597}, //
+
14884 {0.474559009, 11.8590441}, //
+
14885 {0.478078008, 11.8495436}, //
+
14886 {0.482098997, 11.839962}, //
+
14887 {0.486622989, 11.8302984}, //
+
14888 {0.491649985, 11.82055}, //
+
14889 {0.493905991, 11.814559}, //
+
14890 {0.496163994, 11.808651}, //
+
14891 {0.498421997, 11.8028278}, //
+
14892 {0.500681996, 11.7970877}, //
+
14893 {0.502942979, 11.7914333}, //
+
14894 {0.505205989, 11.785861}, //
+
14895 {0.507468998, 11.7803726}, //
+
14896 {0.509733975, 11.7749701}, //
+
14897 {0.512000024, 11.7696505}, //
+
14898 {0.514256001, 11.7633142}, //
+
14899 {0.516511023, 11.7563486}, //
+
14900 {0.518766999, 11.7487564}, //
+
14901 {0.521022022, 11.7405338}, //
+
14902 {0.521216989, 11.739768}, //
+
14903 {0.521010995, 11.7397165}, //
+
14904 {0.519755006, 11.7394018}, //
+
14905 {0.519001007, 11.739213}, //
+
14906 {0.518750012, 11.73915}, //
+
14907 {0.521995008, 11.7367163}, //
+
14908 {0.523277998, 11.7316837}, //
+
14909 {0.52553302, 11.7222061}, //
+
14910 {0.527788997, 11.7120991}, //
+
14911 {0.530044019, 11.7013636}, //
+
14912 {0.532299995, 11.6899996}, //
+
14913 {0.534524977, 11.678175}, //
+
14914 {0.535730004, 11.6713495}, //
+
14915 {0.535700023, 11.6713495}, //
+
14916 {0.535778999, 11.671073}, //
+
14917 {0.536665022, 11.6660566}, //
+
14918 {0.538721979, 11.6536436}, //
+
14919 {0.540695012, 11.6409378}, //
+
14920 {0.542584002, 11.6279383}, //
+
14921 {0.544389009, 11.6146441}, //
+
14922 {0.546109974, 11.6010571}, //
+
14923 {0.547747016, 11.5871754}, //
+
14924 {0.549300015, 11.573}, //
+
14925 {0.550800979, 11.5610275}, //
+
14926 {0.552302003, 11.5492249}, //
+
14927 {0.553806007, 11.5375891}, //
+
14928 {0.555310011, 11.5261211}, //
+
14929 {0.556815028, 11.5148211}, //
+
14930 {0.558322012, 11.5036888}, //
+
14931 {0.55983001, 11.4927254}, //
+
14932 {0.561339974, 11.4819279}, //
+
14933 {0.562849998, 11.4713001}, //
+
14934 {0.565903008, 11.4506636}, //
+
14935 {0.56904, 11.4279346}, //
+
14936 {0.572260976, 11.4031115}, //
+
14937 {0.575565994, 11.376194}, //
+
14938 {0.578954995, 11.3471832}, //
+
14939 {0.582427979, 11.3160782}, //
+
14940 {0.585985005, 11.2828789}, //
+
14941 {0.586600006, 11.2769127}, //
+
14942 {0.586600006, 11.2746496}, //
+
14943 {0.586619973, 11.2738733}, //
+
14944 {0.586681008, 11.2730551}, //
+
14945 {0.586782992, 11.2721939}, //
+
14946 {0.586925983, 11.2712917}, //
+
14947 {0.587109029, 11.2703476}, //
+
14948 {0.587333024, 11.2693605}, //
+
14949 {0.587409973, 11.2690649}, //
+
14950 {0.589625001, 11.2475863}, //
+
14951 {0.593349993, 11.2102003}, //
+
14952 {0.597829998, 11.1725311}, //
+
14953 {0.602226973, 11.1363678}, //
+
14954 {0.606539011, 11.1017113}, //
+
14955 {0.610767007, 11.0685606}, //
+
14956 {0.614392996, 11.0408745}, //
+
14957 {0.613699973, 11.0407}, //
+
14958 {0.615216017, 11.0346594}, //
+
14959 {0.618972003, 11.0067778}, //
+
14960 {0.622949004, 10.9781456}, //
+
14961 {0.626841009, 10.9510202}, //
+
14962 {0.630649984, 10.9253998}, //
+
14963 {0.632664979, 10.9050503}, //
+
14964 {0.634050012, 10.9050503}, //
+
14965 {0.635728002, 10.904295}, //
+
14966 {0.637739003, 10.9035416}, //
+
14967 {0.640083015, 10.9027891}, //
+
14968 {0.642760992, 10.9020376}, //
+
14969 {0.64577198, 10.901288}, //
+
14970 {0.649116993, 10.9005384}, //
+
14971 {0.652794003, 10.8997908}, //
+
14972 {0.656805992, 10.899045}, //
+
14973 {0.661149979, 10.8983002}, //
+
14974 {0.725600004, 10.8983002}, //
+
14975 {0.729367018, 10.8982582}, //
+
14976 {0.733133018, 10.8981323}, //
+
14977 {0.736899972, 10.8979216}, //
+
14978 {0.740666986, 10.8976278}, //
+
14979 {0.744432986, 10.8972511}, //
+
14980 {0.748199999, 10.8967886}, //
+
14981 {0.751967013, 10.8962431}, //
+
14982 {0.755733013, 10.8956137}, //
+
14983 {0.759500027, 10.8949003}, //
+
14984 {0.763454974, 10.8950052}, //
+
14985 {0.767786026, 10.8953199}, //
+
14986 {0.772494018, 10.8958445}, //
+
14987 {0.77757901, 10.8965788}, //
+
14988 {0.783039987, 10.8975229}, //
+
14989 {0.788878024, 10.8986778}, //
+
14990 {0.795091987, 10.9000416}, //
+
14991 {0.801683009, 10.9016161}, //
+
14992 {0.808650017, 10.9034004}, //
+
14993 {0.815752983, 10.9052572}, //
+
14994 {0.822728992, 10.907074}, //
+
14995 {0.829577982, 10.9088497}, //
+
14996 {0.836299002, 10.9105854}, //
+
14997 {0.842894018, 10.9122791}, //
+
14998 {0.849361002, 10.9139338}, //
+
14999 {0.855701029, 10.9155464}, //
+
15000 {0.861913979, 10.9171181}, //
+
15001 {0.867999971, 10.9186497}, //
+
15002 {0.873781025, 10.9201088}, //
+
15003 {0.879059017, 10.9214849}, //
+
15004 {0.883832991, 10.9227781}, //
+
15005 {0.888104022, 10.9239883}, //
+
15006 {0.891870022, 10.9251156}, //
+
15007 {0.895133018, 10.9261608}, //
+
15008 {0.897893012, 10.9271231}, //
+
15009 {0.900147974, 10.9280033}, //
+
15010 {0.901899993, 10.9287996}, //
+
15011 {0.902656019, 10.9302273}, //
+
15012 {0.903410971, 10.9314861}, //
+
15013 {0.904166996, 10.9325781}, //
+
15014 {0.904922009, 10.9335012}, //
+
15015 {0.905677974, 10.9342566}, //
+
15016 {0.906432986, 10.934844}, //
+
15017 {0.907189012, 10.9352646}, //
+
15018 {0.907944024, 10.9355164}, //
+
15019 {0.908699989, 10.9356003}, //
+
15020 {0.910043001, 10.9382668}, //
+
15021 {0.91058898, 10.9393501}, //
+
15022 {0.912100017, 10.9423504}, //
+
15023 {0.911974013, 10.9408083}, //
+
15024 {0.911596, 10.9391823}, //
+
15025 {0.910966992, 10.9374723}, //
+
15026 {0.910085022, 10.9356785}, //
+
15027 {0.908951998, 10.9338007}, //
+
15028 {0.907567024, 10.931839}, //
+
15029 {0.905929983, 10.9297934}, //
+
15030 {0.904040992, 10.9276638}, //
+
15031 {0.901899993, 10.9254503}, //
+
15032 {0.899581015, 10.9231634}, //
+
15033 {0.897135019, 10.9208355}, //
+
15034 {0.894560993, 10.9184666}, //
+
15035 {0.891860008, 10.9160576}, //
+
15036 {0.88903302, 10.9136076}, //
+
15037 {0.886078, 10.9111166}, //
+
15038 {0.882996023, 10.9085855}, //
+
15039 {0.879786015, 10.9060125}, //
+
15040 {0.876450002, 10.9034004}, //
+
15041 {0.873081982, 10.9009027}, //
+
15042 {0.869755983, 10.8986988}, //
+
15043 {0.866472006, 10.8967886}, //
+
15044 {0.86322999, 10.8951731}, //
+
15045 {0.860029995, 10.8938513}, //
+
15046 {0.856872022, 10.8928223}, //
+
15047 {0.853756011, 10.8920879}, //
+
15048 {0.85068202, 10.8916473}, //
+
15049 {0.847649992, 10.8915005}, //
+
15050 {0.843924999, 10.8907442}, //
+
15051 {0.840285003, 10.8899889}, //
+
15052 {0.836727977, 10.8892326}, //
+
15053 {0.833254993, 10.8884783}, //
+
15054 {0.829865992, 10.887722}, //
+
15055 {0.826560974, 10.8869667}, //
+
15056 {0.823339999, 10.8862114}, //
+
15057 {0.820203006, 10.8854561}, //
+
15058 {0.817149997, 10.8846998}, //
+
15059 {0.811788976, 10.8825703}, //
+
15060 {0.806261003, 10.8806896}, //
+
15061 {0.800566971, 10.8790607}, //
+
15062 {0.794705987, 10.8776827}, //
+
15063 {0.78867799, 10.8765554}, //
+
15064 {0.782482982, 10.8756781}, //
+
15065 {0.776121974, 10.8750505}, //
+
15066 {0.769594014, 10.8746748}, //
+
15067 {0.762899995, 10.8745499}, //
+
15068 {0.718800008, 10.8745499}, //
+
15069 {0.714950025, 10.8752642}, //
+
15070 {0.71093303, 10.8758926}, //
+
15071 {0.706749976, 10.8764391}, //
+
15072 {0.702400029, 10.8769007}, //
+
15073 {0.69788301, 10.8772783}, //
+
15074 {0.693199992, 10.8775721}, //
+
15075 {0.688350022, 10.8777819}, //
+
15076 {0.68333298, 10.8779078}, //
+
15077 {0.678149998, 10.8779497}, //
+
15078 {0.634709001, 10.8779497}, //
+
15079 {0.634259999, 10.8853779}, //
+
15080 {0.632686019, 10.9048443}, //
+
15081 {0.632664979, 10.9050503}, //
+
15082 {0.627250016, 10.9050503}, //
+
15083 {0.630649984, 10.8779497}, //
+
15084 {0.634709001, 10.8779497}, //
+
15085 {0.635371983, 10.8669996}, //
+
15086 {0.636022985, 10.8497114}, //
+
15087 {0.636211991, 10.8335114}, //
+
15088 {0.636138022, 10.8294144}, //
+
15089 {0.637049973, 10.8289614}, //
+
15090 {0.639383018, 10.8278027}, //
+
15091 {0.640799999, 10.8270998}, //
+
15092 {0.642351985, 10.8263655}, //
+
15093 {0.643988013, 10.8256731}, //
+
15094 {0.645705998, 10.8250217}, //
+
15095 {0.647505999, 10.8244143}, //
+
15096 {0.649389982, 10.8238468}, //
+
15097 {0.651355982, 10.8233223}, //
+
15098 {0.653403997, 10.8228397}, //
+
15099 {0.655535996, 10.8223991}, //
+
15100 {0.65775001, 10.8219995}, //
+
15101 {0.660036981, 10.8216009}, //
+
15102 {0.662365019, 10.8211603}, //
+
15103 {0.664732993, 10.8206778}, //
+
15104 {0.667142987, 10.8201532}, //
+
15105 {0.669592977, 10.8195858}, //
+
15106 {0.67208302, 10.8189783}, //
+
15107 {0.674615026, 10.818327}, //
+
15108 {0.677187026, 10.8176346}, //
+
15109 {0.679799974, 10.8169003}, //
+
15110 {0.682422996, 10.816186}, //
+
15111 {0.685002029, 10.8155565}, //
+
15112 {0.687538981, 10.815011}, //
+
15113 {0.690032005, 10.8145494}, //
+
15114 {0.692481995, 10.8141718}, //
+
15115 {0.694889009, 10.8138781}, //
+
15116 {0.697251976, 10.8136683}, //
+
15117 {0.69957298, 10.8135424}, //
+
15118 {0.701849997, 10.8135004}, //
+
15119 {0.712000012, 10.8135004}, //
+
15120 {0.714329004, 10.8134794}, //
+
15121 {0.716782987, 10.8134155}, //
+
15122 {0.719361007, 10.8133106}, //
+
15123 {0.722064018, 10.8131638}, //
+
15124 {0.72489202, 10.8129749}, //
+
15125 {0.727844, 10.8127441}, //
+
15126 {0.730921984, 10.8124723}, //
+
15127 {0.734122992, 10.8121567}, //
+
15128 {0.737450004, 10.8118}, //
+
15129 {0.740818024, 10.8114233}, //
+
15130 {0.744144022, 10.8110466}, //
+
15131 {0.747428, 10.8106718}, //
+
15132 {0.750670016, 10.8102989}, //
+
15133 {0.75387001, 10.809927}, //
+
15134 {0.757027984, 10.809556}, //
+
15135 {0.760143995, 10.809186}, //
+
15136 {0.763217986, 10.8088169}, //
+
15137 {0.766250014, 10.8084497}, //
+
15138 {0.769250989, 10.8080931}, //
+
15139 {0.772207975, 10.8077784}, //
+
15140 {0.775121987, 10.8075056}, //
+
15141 {0.777993023, 10.8072748}, //
+
15142 {0.780821025, 10.807086}, //
+
15143 {0.783605993, 10.8069391}, //
+
15144 {0.786346972, 10.8068342}, //
+
15145 {0.789044976, 10.8067713}, //
+
15146 {0.791700006, 10.8067503}, //
+
15147 {0.801851988, 10.8067503}, //
+
15148 {0.795666993, 10.8044672}, //
+
15149 {0.79302597, 10.8035545}, //
+
15150 {0.792958975, 10.8035393}, //
+
15151 {0.791258991, 10.8031607}, //
+
15152 {0.789433002, 10.802783}, //
+
15153 {0.78748101, 10.8024063}, //
+
15154 {0.785404027, 10.8020277}, //
+
15155 {0.783200026, 10.80165}, //
+
15156 {0.780986011, 10.8012724}, //
+
15157 {0.778854012, 10.8008938}, //
+
15158 {0.776805997, 10.8005171}, //
+
15159 {0.774839997, 10.8001394}, //
+
15160 {0.772956014, 10.7997608}, //
+
15161 {0.771156013, 10.7993832}, //
+
15162 {0.769438028, 10.7990065}, //
+
15163 {0.767802, 10.7986279}, //
+
15164 {0.766250014, 10.7982502}, //
+
15165 {0.764832973, 10.7978926}, //
+
15166 {0.763583004, 10.7975779}, //
+
15167 {0.762499988, 10.7973061}, //
+
15168 {0.761582971, 10.7970753}, //
+
15169 {0.759582996, 10.7965708}, //
+
15170 {0.759500027, 10.7965498}, //
+
15171 {0.693400025, 10.7965498}, //
+
15172 {0.690156996, 10.7965918}, //
+
15173 {0.687206984, 10.7967176}, //
+
15174 {0.684549987, 10.7969284}, //
+
15175 {0.682184994, 10.7972221}, //
+
15176 {0.680113018, 10.7975988}, //
+
15177 {0.678332984, 10.7980614}, //
+
15178 {0.676846027, 10.7986069}, //
+
15179 {0.675652027, 10.7992363}, //
+
15180 {0.67474997, 10.7999496}, //
+
15181 {0.669650018, 10.7999496}, //
+
15182 {0.668516994, 10.7999916}, //
+
15183 {0.667383015, 10.8001184}, //
+
15184 {0.66624999, 10.8003283}, //
+
15185 {0.665117025, 10.800622}, //
+
15186 {0.663982987, 10.8009987}, //
+
15187 {0.662850022, 10.8014612}, //
+
15188 {0.661716998, 10.8020067}, //
+
15189 {0.660583019, 10.8026361}, //
+
15190 {0.659449995, 10.8033504}, //
+
15191 {0.658306003, 10.8040848}, //
+
15192 {0.657118976, 10.8047771}, //
+
15193 {0.655888975, 10.8054276}, //
+
15194 {0.654614985, 10.806036}, //
+
15195 {0.653298974, 10.8066034}, //
+
15196 {0.651938975, 10.807128}, //
+
15197 {0.650536001, 10.8076096}, //
+
15198 {0.649089992, 10.8080511}, //
+
15199 {0.647599995, 10.8084497}, //
+
15200 {0.646140993, 10.8088169}, //
+
15201 {0.644765019, 10.809186}, //
+
15202 {0.643472016, 10.809556}, //
+
15203 {0.642261982, 10.809927}, //
+
15204 {0.641134024, 10.8102989}, //
+
15205 {0.640088975, 10.8106718}, //
+
15206 {0.639127016, 10.8110466}, //
+
15207 {0.638247013, 10.8114233}, //
+
15208 {0.63744998, 10.8118}, //
+
15209 {0.636735976, 10.8121567}, //
+
15210 {0.636107028, 10.8124723}, //
+
15211 {0.635640979, 10.812705}, //
+
15212 {0.635939002, 10.8184004}, //
+
15213 {0.636138022, 10.8294144}, //
+
15214 {0.636133015, 10.8294163}, //
+
15215 {0.63538301, 10.8297882}, //
+
15216 {0.634800017, 10.8300781}, //
+
15217 {0.634383023, 10.8302851}, //
+
15218 {0.634050012, 10.8304501}, //
+
15219 {0.633315027, 10.8311434}, //
+
15220 {0.632623017, 10.8317089}, //
+
15221 {0.631972015, 10.8321505}, //
+
15222 {0.631363988, 10.8324652}, //
+
15223 {0.630797029, 10.832654}, //
+
15224 {0.630271971, 10.8327169}, //
+
15225 {0.629790008, 10.832654}, //
+
15226 {0.629348993, 10.8324652}, //
+
15227 {0.62895, 10.8321505}, //
+
15228 {0.628614008, 10.8317518}, //
+
15229 {0.628362, 10.8313131}, //
+
15230 {0.628193974, 10.8308334}, //
+
15231 {0.628109992, 10.8303127}, //
+
15232 {0.628109992, 10.829752}, //
+
15233 {0.628193974, 10.8291502}, //
+
15234 {0.628362, 10.8285074}, //
+
15235 {0.628614008, 10.8278236}, //
+
15236 {0.62895, 10.8270998}, //
+
15237 {0.629306972, 10.8263435}, //
+
15238 {0.629621983, 10.8255892}, //
+
15239 {0.629894018, 10.8248329}, //
+
15240 {0.630124986, 10.8240776}, //
+
15241 {0.630313993, 10.8233223}, //
+
15242 {0.630460978, 10.822567}, //
+
15243 {0.630566001, 10.8218107}, //
+
15244 {0.630629003, 10.8210564}, //
+
15245 {0.630649984, 10.8203001}, //
+
15246 {0.630671024, 10.8195648}, //
+
15247 {0.630734026, 10.8188734}, //
+
15248 {0.63083899, 10.818222}, //
+
15249 {0.630985975, 10.8176136}, //
+
15250 {0.631174982, 10.8170471}, //
+
15251 {0.631406009, 10.8165216}, //
+
15252 {0.631677985, 10.81604}, //
+
15253 {0.631992996, 10.8155994}, //
+
15254 {0.632350028, 10.8151999}, //
+
15255 {0.63371402, 10.8138361}, //
+
15256 {0.633861005, 10.8136892}, //
+
15257 {0.633966029, 10.8135843}, //
+
15258 {0.634028971, 10.8135214}, //
+
15259 {0.634050012, 10.8135004}, //
+
15260 {0.634217978, 10.8134155}, //
+
15261 {0.634721994, 10.8131638}, //
+
15262 {0.635098994, 10.8129749}, //
+
15263 {0.635560989, 10.8127441}, //
+
15264 {0.635640979, 10.812705}, //
+
15265 {0.635204017, 10.8043776}, //
+
15266 {0.63400799, 10.7914438}, //
+
15267 {0.632350028, 10.7796001}, //
+
15268 {0.630577028, 10.7689276}, //
+
15269 {0.629011989, 10.759511}, //
+
15270 {0.624004006, 10.7293777}, //
+
15271 {0.623899996, 10.7287502}, //
+
15272 {0.624064982, 10.7285824}, //
+
15273 {0.624271989, 10.7283716}, //
+
15274 {0.624562025, 10.7280779}, //
+
15275 {0.624934018, 10.7277012}, //
+
15276 {0.62538898, 10.7272387}, //
+
15277 {0.625926971, 10.7266932}, //
+
15278 {0.627250016, 10.7253504}, //
+
15279 {0.628027022, 10.7245531}, //
+
15280 {0.628844976, 10.7236729}, //
+
15281 {0.629706025, 10.7227106}, //
+
15282 {0.630608022, 10.7216663}, //
+
15283 {0.631551981, 10.7205381}, //
+
15284 {0.632538974, 10.7193279}, //
+
15285 {0.633566976, 10.7180347}, //
+
15286 {0.634638011, 10.7166586}, //
+
15287 {0.635749996, 10.7152004}, //
+
15288 {0.63688302, 10.7137098}, //
+
15289 {0.638014019, 10.7122641}, //
+
15290 {0.639144003, 10.7108612}, //
+
15291 {0.640272975, 10.7095013}, //
+
15292 {0.641400993, 10.7081852}, //
+
15293 {0.642527997, 10.7069111}, //
+
15294 {0.643652976, 10.7056808}, //
+
15295 {0.644777, 10.7044945}, //
+
15296 {0.645900011, 10.7033501}, //
+
15297 {0.647011995, 10.7022381}, //
+
15298 {0.648082972, 10.7011671}, //
+
15299 {0.650098026, 10.699152}, //
+
15300 {0.652804971, 10.6964455}, //
+
15301 {0.654399991, 10.69485}, //
+
15302 {0.655093014, 10.6940527}, //
+
15303 {0.65565902, 10.6931734}, //
+
15304 {0.656099975, 10.6922112}, //
+
15305 {0.656414986, 10.6911659}, //
+
15306 {0.656603992, 10.6900377}, //
+
15307 {0.656666994, 10.6888285}, //
+
15308 {0.656603992, 10.6875353}, //
+
15309 {0.656414986, 10.6861591}, //
+
15310 {0.656099975, 10.6847}, //
+
15311 {0.655743003, 10.6831894}, //
+
15312 {0.655427992, 10.6816778}, //
+
15313 {0.655156016, 10.6801672}, //
+
15314 {0.654924989, 10.6786556}, //
+
15315 {0.654735982, 10.6771441}, //
+
15316 {0.654588997, 10.6756334}, //
+
15317 {0.654483974, 10.6741219}, //
+
15318 {0.654420972, 10.6726112}, //
+
15319 {0.654399991, 10.6710997}, //
+
15320 {0.653644025, 10.6695366}, //
+
15321 {0.652889013, 10.6678476}, //
+
15322 {0.652132988, 10.6660328}, //
+
15323 {0.651377976, 10.664093}, //
+
15324 {0.65062201, 10.6620264}, //
+
15325 {0.649866998, 10.659833}, //
+
15326 {0.649110973, 10.6575146}, //
+
15327 {0.64835602, 10.6550703}, //
+
15328 {0.647599995, 10.6525002}, //
+
15329 {0.646928012, 10.6497927}, //
+
15330 {0.646425009, 10.6469622}, //
+
15331 {0.646089017, 10.6440058}, //
+
15332 {0.645920992, 10.6409254}, //
+
15333 {0.645920992, 10.6377192}, //
+
15334 {0.646089017, 10.6343889}, //
+
15335 {0.646425009, 10.6309338}, //
+
15336 {0.646928012, 10.6273537}, //
+
15337 {0.647599995, 10.6236496}, //
+
15338 {0.648459971, 10.6177645}, //
+
15339 {0.649528027, 10.6121712}, //
+
15340 {0.65080601, 10.6068716}, //
+
15341 {0.652291, 10.6018667}, //
+
15342 {0.653985977, 10.5971556}, //
+
15343 {0.655888975, 10.5927391}, //
+
15344 {0.658001006, 10.5886154}, //
+
15345 {0.660320997, 10.5847864}, //
+
15346 {0.662850022, 10.5812502}, //
+
15347 {0.665808022, 10.5779238}, //
+
15348 {0.669393003, 10.5747242}, //
+
15349 {0.673605978, 10.5716496}, //
+
15350 {0.678444982, 10.5687017}, //
+
15351 {0.683911979, 10.5658798}, //
+
15352 {0.690006018, 10.5631828}, //
+
15353 {0.696726978, 10.5606127}, //
+
15354 {0.704074979, 10.5581694}, //
+
15355 {0.712050021, 10.55585}, //
+
15356 {0.718448997, 10.5544443}, //
+
15357 {0.725602984, 10.5532484}, //
+
15358 {0.733510971, 10.5522614}, //
+
15359 {0.742173016, 10.5514851}, //
+
15360 {0.751590014, 10.5509176}, //
+
15361 {0.76176101, 10.550561}, //
+
15362 {0.772686005, 10.5504141}, //
+
15363 });
+
15364 polys.push_back({
+
15365 {0.316659987, 14.3116198}, //
+
15366 {0.319101006, 14.3156996}, //
+
15367 {0.322672009, 14.3214998}, //
+
15368 {0.327374995, 14.32901}, //
+
15369 {0.333207995, 14.3382397}, //
+
15370 {0.340171993, 14.3491802}, //
+
15371 {0.348266989, 14.3618402}, //
+
15372 {0.357493013, 14.3762102}, //
+
15373 {0.367850006, 14.3922997}, //
+
15374 {0.379054993, 14.4095497}, //
+
15375 {0.390803009, 14.4273796}, //
+
15376 {0.403093994, 14.4457998}, //
+
15377 {0.41592899, 14.4647999}, //
+
15378 {0.429307014, 14.4843903}, //
+
15379 {0.443228006, 14.50457}, //
+
15380 {0.457691997, 14.5253296}, //
+
15381 {0.472698987, 14.54667}, //
+
15382 {0.488249987, 14.5685997}, //
+
15383 {0.503988981, 14.5903902}, //
+
15384 {0.519560993, 14.61131}, //
+
15385 {0.534967005, 14.63134}, //
+
15386 {0.550206006, 14.6505003}, //
+
15387 {0.565277994, 14.6687803}, //
+
15388 {0.580183029, 14.6861801}, //
+
15389 {0.594922006, 14.7026997}, //
+
15390 {0.609493971, 14.7183399}, //
+
15391 {0.623899996, 14.7330999}, //
+
15392 {0.648881018, 14.7565203}, //
+
15393 {0.674115002, 14.7785597}, //
+
15394 {0.699599981, 14.7992201}, //
+
15395 {0.725337029, 14.81849}, //
+
15396 {0.751326025, 14.8363895}, //
+
15397 {0.777567029, 14.8528996}, //
+
15398 {0.804059029, 14.8680296}, //
+
15399 {0.83080399, 14.8817797}, //
+
15400 {0.857800007, 14.8941498}, //
+
15401 {0.884513974, 14.9054699}, //
+
15402 {0.910390019, 14.9160805}, //
+
15403 {0.935428023, 14.9259796}, //
+
15404 {0.959626973, 14.9351597}, //
+
15405 {0.982988, 14.9436302}, //
+
15406 {1.00550997, 14.9513903}, //
+
15407 {1.02719998, 14.9584398}, //
+
15408 {1.04804003, 14.9647799}, //
+
15409 {1.06805003, 14.9703999}, //
+
15410 {1.0747, 14.9726696}, //
+
15411 {1.08109999, 14.9749298}, //
+
15412 {1.08726001, 14.97719}, //
+
15413 {1.09316003, 14.9794598}, //
+
15414 {1.09880996, 14.98172}, //
+
15415 {1.10421002, 14.9839802}, //
+
15416 {1.10934997, 14.9862404}, //
+
15417 {1.11424994, 14.9884901}, //
+
15418 {1.11889994, 14.9907503}, //
+
15419 {1.13566995, 14.9958601}, //
+
15420 {1.15280998, 15.0006304}, //
+
15421 {1.17033005, 15.0050697}, //
+
15422 {1.18822002, 15.0091696}, //
+
15423 {1.20650005, 15.0129404}, //
+
15424 {1.22513998, 15.0163698}, //
+
15425 {1.24416995, 15.0194702}, //
+
15426 {1.26356995, 15.0222301}, //
+
15427 {1.28334999, 15.0246496}, //
+
15428 {1.30288005, 15.0268297}, //
+
15429 {1.32152998, 15.0288496}, //
+
15430 {1.33929002, 15.0306902}, //
+
15431 {1.35617995, 15.0323696}, //
+
15432 {1.37220001, 15.0338802}, //
+
15433 {1.38733006, 15.0352297}, //
+
15434 {1.40157998, 15.0363998}, //
+
15435 {1.41495001, 15.0374098}, //
+
15436 {1.42744994, 15.03825}, //
+
15437 {1.43425, 15.03825}, //
+
15438 {1.45488, 15.0403795}, //
+
15439 {1.48886001, 15.04389}, //
+
15440 {1.50221002, 15.04527}, //
+
15441 {1.52163005, 15.0472698}, //
+
15442 {1.52769995, 15.0479002}, //
+
15443 {1.53254998, 15.0483999}, //
+
15444 {1.53225994, 15.0483599}, //
+
15445 {1.53138006, 15.0482302}, //
+
15446 {1.52786005, 15.0477304}, //
+
15447 {1.52522004, 15.0473499}, //
+
15448 {1.52198994, 15.0468903}, //
+
15449 {1.51818001, 15.04634}, //
+
15450 {1.50880003, 15.0450001}, //
+
15451 {1.50338995, 15.0442305}, //
+
15452 {1.49767995, 15.0434198}, //
+
15453 {1.49168003, 15.0425701}, //
+
15454 {1.48538005, 15.0416803}, //
+
15455 {1.47879004, 15.04074}, //
+
15456 {1.47191, 15.0397596}, //
+
15457 {1.46473002, 15.0387297}, //
+
15458 {1.45726001, 15.0376596}, //
+
15459 {1.44949996, 15.0365496}, //
+
15460 {1.44155002, 15.0354204}, //
+
15461 {1.43350995, 15.0342798}, //
+
15462 {1.42539001, 15.0331497}, //
+
15463 {1.41717994, 15.0320196}, //
+
15464 {1.40890002, 15.03088}, //
+
15465 {1.40051997, 15.0297499}, //
+
15466 {1.39207006, 15.0286198}, //
+
15467 {1.38352001, 15.0274801}, //
+
15468 {1.37489998, 15.02635}, //
+
15469 {1.36637998, 15.0252504}, //
+
15470 {1.35815001, 15.0241899}, //
+
15471 {1.35021996, 15.0231705}, //
+
15472 {1.34257996, 15.0221901}, //
+
15473 {1.33524001, 15.0212498}, //
+
15474 {1.32818997, 15.0203505}, //
+
15475 {1.32142997, 15.0194902}, //
+
15476 {1.31497002, 15.0186796}, //
+
15477 {1.30879998, 15.0179005}, //
+
15478 {1.29172003, 15.0148001}, //
+
15479 {1.27514005, 15.0115404}, //
+
15480 {1.25906003, 15.00811}, //
+
15481 {1.24348998, 15.0045099}, //
+
15482 {1.22841001, 15.0007496}, //
+
15483 {1.21384001, 14.99681}, //
+
15484 {1.19977999, 14.9927101}, //
+
15485 {1.18621004, 14.9884396}, //
+
15486 {1.17314994, 14.9840002}, //
+
15487 {1.16796005, 14.9825296}, //
+
15488 {1.16293001, 14.9811497}, //
+
15489 {1.15806997, 14.9798403}, //
+
15490 {1.15338004, 14.9786301}, //
+
15491 {1.14885998, 14.9774904}, //
+
15492 {1.14451003, 14.9764404}, //
+
15493 {1.14031994, 14.9754801}, //
+
15494 {1.13629997, 14.9745998}, //
+
15495 {1.13244998, 14.9737997}, //
+
15496 {1.12565005, 14.9720097}, //
+
15497 {1.11731005, 14.9696198}, //
+
15498 {1.10740995, 14.9666595}, //
+
15499 {1.09597003, 14.9631004}, //
+
15500 {1.08297002, 14.95895}, //
+
15501 {1.06842995, 14.9542198}, //
+
15502 {1.05233002, 14.9489002}, //
+
15503 {1.03469002, 14.9429998}, //
+
15504 {1.01549995, 14.9364996}, //
+
15505 {0.995365024, 14.92945}, //
+
15506 {0.974895, 14.9218597}, //
+
15507 {0.954088986, 14.9137201}, //
+
15508 {0.93294698, 14.9050303}, //
+
15509 {0.911468983, 14.8958101}, //
+
15510 {0.889656007, 14.8860302}, //
+
15511 {0.867506027, 14.87572}, //
+
15512 {0.845021009, 14.8648596}, //
+
15513 {0.8222, 14.8534498}, //
+
15514 {0.799619973, 14.84167}, //
+
15515 {0.777835011, 14.82967}, //
+
15516 {0.756843984, 14.8174696}, //
+
15517 {0.736648977, 14.8050604}, //
+
15518 {0.717248976, 14.7924404}, //
+
15519 {0.698643982, 14.7796097}, //
+
15520 {0.680835009, 14.7665596}, //
+
15521 {0.663820028, 14.7533102}, //
+
15522 {0.647599995, 14.73985}, //
+
15523 {0.640361011, 14.73106}, //
+
15524 {0.632200003, 14.7212601}, //
+
15525 {0.62311703, 14.7104597}, //
+
15526 {0.613111019, 14.6986504}, //
+
15527 {0.602182984, 14.6858397}, //
+
15528 {0.590332985, 14.6720304}, //
+
15529 {0.577561021, 14.6572104}, //
+
15530 {0.563866973, 14.6413803}, //
+
15531 {0.549250007, 14.6245499}, //
+
15532 {0.534393013, 14.6073103}, //
+
15533 {0.519954026, 14.5902395}, //
+
15534 {0.505932987, 14.5733299}, //
+
15535 {0.492330998, 14.5565901}, //
+
15536 {0.479148, 14.54002}, //
+
15537 {0.46638301, 14.5236197}, //
+
15538 {0.454037011, 14.5073795}, //
+
15539 {0.442108989, 14.4913101}, //
+
15540 {0.430599988, 14.4754}, //
+
15541 {0.429015011, 14.4709196}, //
+
15542 {0.427262008, 14.4665203}, //
+
15543 {0.425339013, 14.4622097}, //
+
15544 {0.42324701, 14.4579802}, //
+
15545 {0.420985997, 14.4538403}, //
+
15546 {0.418556005, 14.4497805}, //
+
15547 {0.415955991, 14.4457998}, //
+
15548 {0.41318801, 14.4419098}, //
+
15549 {0.410250008, 14.4380999}, //
+
15550 {0.406482995, 14.4320698}, //
+
15551 {0.402716994, 14.4260302}, //
+
15552 {0.395182997, 14.41397}, //
+
15553 {0.391416997, 14.4079304}, //
+
15554 {0.383882999, 14.3958702}, //
+
15555 {0.380116999, 14.3898296}, //
+
15556 {0.376349986, 14.3837996}, //
+
15557 {0.372583002, 14.3779497}, //
+
15558 {0.368817002, 14.3724203}, //
+
15559 {0.365049988, 14.36724}, //
+
15560 {0.361283004, 14.3623896}, //
+
15561 {0.357517004, 14.3578701}, //
+
15562 {0.35374999, 14.3536901}, //
+
15563 {0.349983007, 14.3498402}, //
+
15564 {0.346217006, 14.3463297}, //
+
15565 {0.342449993, 14.3431501}, //
+
15566 {0.336762011, 14.3360395}, //
+
15567 {0.327394009, 14.3243198}, //
+
15568 {0.323713988, 14.3197098}, //
+
15569 {0.320703, 14.3159504}, //
+
15570 {0.318361014, 14.3130198}, //
+
15571 {0.315685004, 14.3096704}, //
+
15572 {0.315349996, 14.3092499}, //
+
15573 });
+
15574 polys.push_back({
+
15575 {2.78421998, 12.7470503}, //
+
15576 {2.78578997, 12.7497501}, //
+
15577 {2.80252004, 12.7785501}, //
+
15578 {2.80931997, 12.7902498}, //
+
15579 {2.82605004, 12.8190498}, //
+
15580 {2.83561993, 12.8356705}, //
+
15581 {2.84547997, 12.8531199}, //
+
15582 {2.85562992, 12.8714199}, //
+
15583 {2.86608005, 12.8905497}, //
+
15584 {2.87682009, 12.9105101}, //
+
15585 {2.88785005, 12.9313202}, //
+
15586 {2.89916992, 12.95296}, //
+
15587 {2.91078997, 12.97544}, //
+
15588 {2.92269993, 12.9987497}, //
+
15589 {2.93460989, 13.0225096}, //
+
15590 {2.94622993, 13.04632}, //
+
15591 {2.95755005, 13.0701704}, //
+
15592 {2.96858001, 13.0940504}, //
+
15593 {2.97932005, 13.11798}, //
+
15594 {2.98976994, 13.1419497}, //
+
15595 {2.99991989, 13.1659603}, //
+
15596 {3.00977993, 13.1900101}, //
+
15597 {3.01935005, 13.2140999}, //
+
15598 {3.02829003, 13.2378798}, //
+
15599 {3.0362699, 13.2609797}, //
+
15600 {3.04327989, 13.2834196}, //
+
15601 {3.04934001, 13.3051796}, //
+
15602 {3.05441999, 13.3262796}, //
+
15603 {3.05854988, 13.3466997}, //
+
15604 {3.06170988, 13.3664503}, //
+
15605 {3.06391001, 13.38554}, //
+
15606 {3.06515002, 13.4039497}, //
+
15607 {3.06515002, 13.5937996}, //
+
15608 {3.06517005, 13.6110497}, //
+
15609 {3.06522989, 13.62813}, //
+
15610 {3.06533003, 13.6450396}, //
+
15611 {3.06547999, 13.6617899}, //
+
15612 {3.06566, 13.6783705}, //
+
15613 {3.06588006, 13.6947803}, //
+
15614 {3.06614995, 13.7110205}, //
+
15615 {3.06645012, 13.7270899}, //
+
15616 {3.06680012, 13.743}, //
+
15617 {3.06719995, 13.7583599}, //
+
15618 {3.06764007, 13.7728004}, //
+
15619 {3.06812, 13.7863302}, //
+
15620 {3.06865001, 13.7989302}, //
+
15621 {3.06921005, 13.8106098}, //
+
15622 {3.06981993, 13.8213797}, //
+
15623 {3.07047009, 13.8312197}, //
+
15624 {3.07117009, 13.8401499}, //
+
15625 {3.07189989, 13.8481503}, //
+
15626 {3.07193995, 13.8484602}, //
+
15627 {3.07206988, 13.8493996}, //
+
15628 {3.07257009, 13.8531704}, //
+
15629 {3.07294989, 13.8559904}, //
+
15630 {3.07341003, 13.8594398}, //
+
15631 {3.07396007, 13.8635197}, //
+
15632 {3.07458997, 13.8682203}, //
+
15633 {3.07529998, 13.8735504}, //
+
15634 {3.07600999, 13.8793497}, //
+
15635 {3.07663989, 13.8854504}, //
+
15636 {3.07718992, 13.8918304}, //
+
15637 {3.07765007, 13.89851}, //
+
15638 {3.07803011, 13.9054899}, //
+
15639 {3.07832003, 13.9127502}, //
+
15640 {3.07853007, 13.92031}, //
+
15641 {3.07866001, 13.9281597}, //
+
15642 {3.07870007, 13.9363003}, //
+
15643 {3.07866001, 13.9445896}, //
+
15644 {3.07853007, 13.9528799}, //
+
15645 {3.07832003, 13.9611597}, //
+
15646 {3.07803011, 13.96945}, //
+
15647 {3.07765007, 13.9777298}, //
+
15648 {3.07718992, 13.9860096}, //
+
15649 {3.07663989, 13.9942904}, //
+
15650 {3.07600999, 14.0025702}, //
+
15651 {3.07529998, 14.01085}, //
+
15652 {3.07441998, 14.0190601}, //
+
15653 {3.07329011, 14.0270901}, //
+
15654 {3.0719099, 14.0349703}, //
+
15655 {3.07027006, 14.0426702}, //
+
15656 {3.06838989, 14.05021}, //
+
15657 {3.0662601, 14.05758}, //
+
15658 {3.06386995, 14.0647898}, //
+
15659 {3.06123996, 14.0718298}, //
+
15660 {3.05835009, 14.0787001}, //
+
15661 {3.04089999, 14.0940704}, //
+
15662 {3.03555012, 14.0987701}, //
+
15663 {3.02950001, 14.1041002}, //
+
15664 {3.02304006, 14.1099195}, //
+
15665 {3.01644993, 14.1160803}, //
+
15666 {3.0097301, 14.12257}, //
+
15667 {3.00289011, 14.1294003}, //
+
15668 {2.99592996, 14.1365604}, //
+
15669 {2.98883009, 14.1440601}, //
+
15670 {2.98161006, 14.1518898}, //
+
15671 {2.97427011, 14.1600504}, //
+
15672 {2.96679997, 14.1685495}, //
+
15673 {2.95948005, 14.1773195}, //
+
15674 {2.95256996, 14.1863003}, //
+
15675 {2.94607997, 14.1954899}, //
+
15676 {2.94001007, 14.2048903}, //
+
15677 {2.93436003, 14.2144899}, //
+
15678 {2.92913008, 14.2243099}, //
+
15679 {2.92431998, 14.2343302}, //
+
15680 {2.91992998, 14.2445602}, //
+
15681 {2.91595006, 14.2550001}, //
+
15682 {2.90962005, 14.2728395}, //
+
15683 {2.90270996, 14.2916698}, //
+
15684 {2.89522004, 14.3115196}, //
+
15685 {2.88714004, 14.3323603}, //
+
15686 {2.87846994, 14.3542099}, //
+
15687 {2.86922002, 14.3770704}, //
+
15688 {2.85938001, 14.4009199}, //
+
15689 {2.84895992, 14.4257898}, //
+
15690 {2.83794999, 14.4516497}, //
+
15691 {2.8268199, 14.47719}, //
+
15692 {2.81602001, 14.50105}, //
+
15693 {2.80556011, 14.5232401}, //
+
15694 {2.79542994, 14.5437603}, //
+
15695 {2.78562999, 14.5626001}, //
+
15696 {2.77617002, 14.5797596}, //
+
15697 {2.76705003, 14.5952501}, //
+
15698 {2.75826001, 14.6090603}, //
+
15699 {2.74979997, 14.6211996}, //
+
15700 {2.74111009, 14.6307802}, //
+
15701 {2.73163009, 14.6399403}, //
+
15702 {2.72135997, 14.6486797}, //
+
15703 {2.71027994, 14.6570101}, //
+
15704 {2.69842005, 14.6649103}, //
+
15705 {2.68576002, 14.6724005}, //
+
15706 {2.6723001, 14.6794701}, //
+
15707 {2.65805006, 14.68612}, //
+
15708 {2.64299989, 14.6923504}, //
+
15709 {2.62794995, 14.6982203}, //
+
15710 {2.61369991, 14.7037497}, //
+
15711 {2.60023999, 14.7089396}, //
+
15712 {2.58757997, 14.71381}, //
+
15713 {2.57572007, 14.7183304}, //
+
15714 {2.56464005, 14.7225304}, //
+
15715 {2.55436993, 14.7263899}, //
+
15716 {2.54488993, 14.7299099}, //
+
15717 {2.53620005, 14.7330999}, //
+
15718 {2.52728009, 14.7362003}, //
+
15719 {2.51861, 14.73946}, //
+
15720 {2.51020002, 14.7428904}, //
+
15721 {2.50203991, 14.7464895}, //
+
15722 {2.4941299, 14.7502499}, //
+
15723 {2.48646998, 14.7541904}, //
+
15724 {2.47905993, 14.7582903}, //
+
15725 {2.47189999, 14.7625599}, //
+
15726 {2.46499991, 14.7670002}, //
+
15727 {2.46035004, 14.77005}, //
+
15728 {2.45545006, 14.7731895}, //
+
15729 {2.45030999, 14.7764101}, //
+
15730 {2.44491005, 14.7797203}, //
+
15731 {2.43926001, 14.7831001}, //
+
15732 {2.4333601, 14.7865801}, //
+
15733 {2.42720008, 14.7901297}, //
+
15734 {2.42079997, 14.7937803}, //
+
15735 {2.41415, 14.7974997}, //
+
15736 {2.40383005, 14.8029203}, //
+
15737 {2.39246011, 14.8086395}, //
+
15738 {2.38003993, 14.8146496}, //
+
15739 {2.36658001, 14.8209496}, //
+
15740 {2.35208011, 14.8275499}, //
+
15741 {2.33652997, 14.8344297}, //
+
15742 {2.31993008, 14.84161}, //
+
15743 {2.30228996, 14.8490896}, //
+
15744 {2.28360009, 14.8568497}, //
+
15745 {2.26469994, 14.8645296}, //
+
15746 {2.24642992, 14.8717499}, //
+
15747 {2.22879004, 14.8785105}, //
+
15748 {2.21177006, 14.8848104}, //
+
15749 {2.19537997, 14.8906498}, //
+
15750 {2.17962003, 14.8960304}, //
+
15751 {2.16448998, 14.9009504}, //
+
15752 {2.14998007, 14.9054003}, //
+
15753 {2.13610005, 14.9094}, //
+
15754 {2.1263001, 14.9117002}, //
+
15755 {2.1164999, 14.9140797}, //
+
15756 {2.10670996, 14.9165497}, //
+
15757 {2.09691, 14.9190998}, //
+
15758 {2.08712006, 14.9217396}, //
+
15759 {2.0773201, 14.9244699}, //
+
15760 {2.06752992, 14.9272804}, //
+
15761 {2.05773997, 14.9301701}, //
+
15762 {2.04795003, 14.9331503}, //
+
15763 {2.03652, 14.9375401}, //
+
15764 {2.02484989, 14.9416704}, //
+
15765 {2.0129199, 14.9455605}, //
+
15766 {2.00074005, 14.9491997}, //
+
15767 {1.98829997, 14.95259}, //
+
15768 {1.97562003, 14.9557304}, //
+
15769 {1.96267998, 14.9586201}, //
+
15770 {1.94948995, 14.9612598}, //
+
15771 {1.93605006, 14.9636497}, //
+
15772 {1.92335999, 14.9644499}, //
+
15773 {1.91093004, 14.9653301}, //
+
15774 {1.89874005, 14.9662905}, //
+
15775 {1.88680995, 14.96733}, //
+
15776 {1.87513006, 14.9684601}, //
+
15777 {1.86369002, 14.9696703}, //
+
15778 {1.85250998, 14.9709702}, //
+
15779 {1.84158003, 14.9723396}, //
+
15780 {1.83089995, 14.9737997}, //
+
15781 {1.82064998, 14.9752703}, //
+
15782 {1.81097996, 14.9766502}, //
+
15783 {1.80191004, 14.9779596}, //
+
15784 {1.79340994, 14.9791698}, //
+
15785 {1.78550994, 14.9803104}, //
+
15786 {1.77819002, 14.9813604}, //
+
15787 {1.77146006, 14.9823198}, //
+
15788 {1.76531005, 14.9832001}, //
+
15789 {1.75975001, 14.9840002}, //
+
15790 {1.75660002, 14.9855003}, //
+
15791 {1.75320995, 14.9870005}, //
+
15792 {1.74956, 14.9885101}, //
+
15793 {1.74566996, 14.9900103}, //
+
15794 {1.74152005, 14.9915199}, //
+
15795 {1.73713005, 14.9930201}, //
+
15796 {1.73248005, 14.9945297}, //
+
15797 {1.72758996, 14.9960403}, //
+
15798 {1.72245002, 14.99755}, //
+
15799 {1.71640003, 14.9990797}, //
+
15800 {1.71029997, 15.0006504}, //
+
15801 {1.70415998, 15.0022697}, //
+
15802 {1.69798005, 15.0039196}, //
+
15803 {1.69175994, 15.0056105}, //
+
15804 {1.68549001, 15.00735}, //
+
15805 {1.67919004, 15.0091295}, //
+
15806 {1.67284, 15.0109396}, //
+
15807 {1.66645002, 15.0128002}, //
+
15808 {1.66027999, 15.0145798}, //
+
15809 {1.65456998, 15.01616}, //
+
15810 {1.64932001, 15.01752}, //
+
15811 {1.64453006, 15.0186796}, //
+
15812 {1.64021003, 15.0196199}, //
+
15813 {1.63634002, 15.02036}, //
+
15814 {1.63293004, 15.0208797}, //
+
15815 {1.62998998, 15.0212002}, //
+
15816 {1.62750006, 15.0213003}, //
+
15817 {1.62409997, 15.0213003}, //
+
15818 {1.62375998, 15.0209599}, //
+
15819 {1.62072003, 15.0179195}, //
+
15820 {1.6207, 15.0179005}, //
+
15821 {1.6207, 15.0162001}, //
+
15822 {1.62067997, 15.0158396}, //
+
15823 {1.62062001, 15.0155296}, //
+
15824 {1.62050998, 15.0152597}, //
+
15825 {1.62036002, 15.0150204}, //
+
15826 {1.62018001, 15.0148401}, //
+
15827 {1.61994004, 15.0146904}, //
+
15828 {1.61967003, 15.0145798}, //
+
15829 {1.61935997, 15.0145197}, //
+
15830 {1.61899996, 15.0144997}, //
+
15831 {1.61863005, 15.0144796}, //
+
15832 {1.61826003, 15.0144196}, //
+
15833 {1.61789, 15.0143099}, //
+
15834 {1.61751997, 15.0141602}, //
+
15835 {1.61714995, 15.0139799}, //
+
15836 {1.61678004, 15.0137396}, //
+
15837 {1.6164, 15.0134697}, //
+
15838 {1.61602998, 15.0131598}, //
+
15839 {1.61565006, 15.0128002}, //
+
15840 {1.61522996, 15.0124197}, //
+
15841 {1.61473, 15.0120401}, //
+
15842 {1.61414003, 15.0116701}, //
+
15843 {1.61346996, 15.0112896}, //
+
15844 {1.61271, 15.01091}, //
+
15845 {1.61187005, 15.0105305}, //
+
15846 {1.61094999, 15.0101604}, //
+
15847 {1.60994005, 15.0097799}, //
+
15848 {1.60885, 15.0094004}, //
+
15849 {1.60769999, 15.0089998}, //
+
15850 {1.60650003, 15.0085602}, //
+
15851 {1.60527003, 15.0080795}, //
+
15852 {1.60398996, 15.0075598}, //
+
15853 {1.60266995, 15.007}, //
+
15854 {1.60132003, 15.0064001}, //
+
15855 {1.59992003, 15.0057602}, //
+
15856 {1.59847999, 15.0050697}, //
+
15857 {1.597, 15.0043497}, //
+
15858 {1.59240997, 15.0029202}, //
+
15859 {1.58770001, 15.0016603}, //
+
15860 {1.58287001, 15.0005703}, //
+
15861 {1.57790005, 14.99965}, //
+
15862 {1.57281005, 14.9988899}, //
+
15863 {1.56760001, 14.9983101}, //
+
15864 {1.56226003, 14.9978905}, //
+
15865 {1.55678999, 14.9976301}, //
+
15866 {1.55120003, 14.99755}, //
+
15867 {1.54558003, 14.99757}, //
+
15868 {1.53998995, 14.9976301}, //
+
15869 {1.53445005, 14.9977398}, //
+
15870 {1.52894998, 14.9978905}, //
+
15871 {1.52348995, 14.9980698}, //
+
15872 {1.51806998, 14.9983101}, //
+
15873 {1.51268995, 14.99858}, //
+
15874 {1.50734997, 14.9988899}, //
+
15875 {1.50205004, 14.9992504}, //
+
15876 {1.49684, 14.99965}, //
+
15877 {1.49175, 15.0000896}, //
+
15878 {1.48678005, 15.0005703}, //
+
15879 {1.48195004, 15.00109}, //
+
15880 {1.47723997, 15.0016499}, //
+
15881 {1.47265005, 15.0022497}, //
+
15882 {1.46818995, 15.0028896}, //
+
15883 {1.46386003, 15.0035801}, //
+
15884 {1.45965004, 15.0043001}, //
+
15885 {1.45228004, 15.00564}, //
+
15886 {1.44929004, 15.0061903}, //
+
15887 {1.44676006, 15.00665}, //
+
15888 {1.44467998, 15.0070295}, //
+
15889 {1.44307005, 15.0073204}, //
+
15890 {1.44192004, 15.0075302}, //
+
15891 {1.44123006, 15.0076599}, //
+
15892 {1.44099998, 15.0077}, //
+
15893 {1.44270003, 15.0094004}, //
+
15894 {1.44307995, 15.00982}, //
+
15895 {1.44345999, 15.0103197}, //
+
15896 {1.44383001, 15.01091}, //
+
15897 {1.44421005, 15.0115805}, //
+
15898 {1.44458997, 15.0123396}, //
+
15899 {1.44497001, 15.0131798}, //
+
15900 {1.44534004, 15.0141001}, //
+
15901 {1.44571996, 15.01511}, //
+
15902 {1.4461, 15.0162001}, //
+
15903 {1.44651997, 15.0173101}, //
+
15904 {1.44702005, 15.0183802}, //
+
15905 {1.44761002, 15.0194101}, //
+
15906 {1.44826996, 15.0203896}, //
+
15907 {1.44902003, 15.0213299}, //
+
15908 {1.44985998, 15.0222197}, //
+
15909 {1.45077002, 15.0230703}, //
+
15910 {1.45176995, 15.02388}, //
+
15911 {1.45284998, 15.0246496}, //
+
15912 {1.454, 15.0254097}, //
+
15913 {1.45519996, 15.0261602}, //
+
15914 {1.45643997, 15.0269203}, //
+
15915 {1.45772004, 15.0276699}, //
+
15916 {1.45904005, 15.02843}, //
+
15917 {1.46041, 15.0291796}, //
+
15918 {1.46180999, 15.0299397}, //
+
15919 {1.46326005, 15.0306902}, //
+
15920 {1.46475005, 15.0314503}, //
+
15921 {1.46639001, 15.0321598}, //
+
15922 {1.46826994, 15.0327902}, //
+
15923 {1.47040999, 15.0333405}, //
+
15924 {1.47280002, 15.0338001}, //
+
15925 {1.47544003, 15.0341797}, //
+
15926 {1.47833002, 15.0344696}, //
+
15927 {1.48146999, 15.0346804}, //
+
15928 {1.48485994, 15.0348101}, //
+
15929 {1.4885, 15.0348501}, //
+
15930 {1.48930001, 15.0348902}, //
+
15931 {1.49018002, 15.0350199}, //
+
15932 {1.49114001, 15.0352297}, //
+
15933 {1.49217999, 15.0355196}, //
+
15934 {1.49330997, 15.0359001}, //
+
15935 {1.49451995, 15.0363598}, //
+
15936 {1.49582005, 15.0369101}, //
+
15937 {1.49719, 15.0375404}, //
+
15938 {1.49864995, 15.03825}, //
+
15939 {1.50564003, 15.0389795}, //
+
15940 {1.51303995, 15.03967}, //
+
15941 {1.52086997, 15.0403204}, //
+
15942 {1.52910995, 15.0409298}, //
+
15943 {1.53777003, 15.0414896}, //
+
15944 {1.54684997, 15.0420103}, //
+
15945 {1.55634999, 15.0424805}, //
+
15946 {1.56625998, 15.0429096}, //
+
15947 {1.57659996, 15.0432997}, //
+
15948 {1.58723998, 15.0435305}, //
+
15949 {1.59803998, 15.0434704}, //
+
15950 {1.60901999, 15.0431204}, //
+
15951 {1.62015998, 15.04247}, //
+
15952 {1.63145995, 15.0415297}, //
+
15953 {1.64293003, 15.0403004}, //
+
15954 {1.65456998, 15.0387802}, //
+
15955 {1.66638005, 15.0369596}, //
+
15956 {1.67834997, 15.0348501}, //
+
15957 {1.68500996, 15.03405}, //
+
15958 {1.69141996, 15.0331697}, //
+
15959 {1.69757998, 15.0322104}, //
+
15960 {1.70348001, 15.0311604}, //
+
15961 {1.70913005, 15.0300198}, //
+
15962 {1.71452999, 15.0288095}, //
+
15963 {1.71967006, 15.0275002}, //
+
15964 {1.72456002, 15.0261202}, //
+
15965 {1.72920001, 15.0246496}, //
+
15966 {1.74184, 15.0218096}, //
+
15967 {1.75415003, 15.0193005}, //
+
15968 {1.76612997, 15.0171204}, //
+
15969 {1.77777004, 15.0152798}, //
+
15970 {1.78907001, 15.0137796}, //
+
15971 {1.80004001, 15.0126104}, //
+
15972 {1.81068003, 15.0117702}, //
+
15973 {1.82097995, 15.0112696}, //
+
15974 {1.83095002, 15.0110998}, //
+
15975 {1.83710003, 15.0110598}, //
+
15976 {1.84350002, 15.0109301}, //
+
15977 {1.85014999, 15.0107203}, //
+
15978 {1.85704994, 15.0104303}, //
+
15979 {1.86421001, 15.0100498}, //
+
15980 {1.87162006, 15.0095901}, //
+
15981 {1.87927997, 15.0090399}, //
+
15982 {1.88718998, 15.0084105}, //
+
15983 {1.89534998, 15.0077}, //
+
15984 {1.90342999, 15.0069103}, //
+
15985 {1.91109002, 15.0060396}, //
+
15986 {1.91832995, 15.0050802}, //
+
15987 {1.92516005, 15.0040398}, //
+
15988 {1.93156004, 15.0029097}, //
+
15989 {1.93754995, 15.0017004}, //
+
15990 {1.94312, 15.0003996}, //
+
15991 {1.94826996, 14.9990196}, //
+
15992 {1.95299995, 14.99755}, //
+
15993 {1.95854998, 14.9945602}, //
+
15994 {1.96464002, 14.9916096}, //
+
15995 {1.97127998, 14.9886999}, //
+
15996 {1.97845995, 14.9858303}, //
+
15997 {1.98617995, 14.9829998}, //
+
15998 {1.99443996, 14.9802198}, //
+
15999 {2.00324988, 14.9774704}, //
+
16000 {2.01259995, 14.9747601}, //
+
16001 {2.02250004, 14.9721003}, //
+
16002 {2.03260994, 14.9695702}, //
+
16003 {2.04259992, 14.9672499}, //
+
16004 {2.05245996, 14.9651403}, //
+
16005 {2.06219006, 14.9632397}, //
+
16006 {2.07179999, 14.9615402}, //
+
16007 {2.08127999, 14.9600601}, //
+
16008 {2.09063005, 14.9587803}, //
+
16009 {2.09984994, 14.9577103}, //
+
16010 {2.1089499, 14.9568501}, //
+
16011 {2.12754011, 14.9545097}, //
+
16012 {2.14562988, 14.9519997}, //
+
16013 {2.16321993, 14.9493303}, //
+
16014 {2.1803, 14.9464798}, //
+
16015 {2.1968801, 14.94347}, //
+
16016 {2.21294999, 14.9402905}, //
+
16017 {2.22851992, 14.9369497}, //
+
16018 {2.24359012, 14.9334297}, //
+
16019 {2.2581501, 14.9297504}, //
+
16020 {2.26042008, 14.92904}, //
+
16021 {2.26268005, 14.9284096}, //
+
16022 {2.26494002, 14.9278603}, //
+
16023 {2.26721001, 14.9273996}, //
+
16024 {2.26946998, 14.9270201}, //
+
16025 {2.27172995, 14.9267302}, //
+
16026 {2.27398992, 14.9265203}, //
+
16027 {2.27624011, 14.9263897}, //
+
16028 {2.27850008, 14.9263496}, //
+
16029 {2.29319, 14.9237099}, //
+
16030 {2.30862999, 14.92031}, //
+
16031 {2.32483006, 14.9161701}, //
+
16032 {2.34177995, 14.9112701}, //
+
16033 {2.3594799, 14.9056196}, //
+
16034 {2.37793994, 14.8992205}, //
+
16035 {2.39716005, 14.8920603}, //
+
16036 {2.41712999, 14.88416}, //
+
16037 {2.43785, 14.8754997}, //
+
16038 {2.44614005, 14.8716898}, //
+
16039 {2.4544301, 14.8677998}, //
+
16040 {2.46271992, 14.8638201}, //
+
16041 {2.47100997, 14.8597603}, //
+
16042 {2.47929001, 14.8556204}, //
+
16043 {2.48758006, 14.8513899}, //
+
16044 {2.49587011, 14.8470802}, //
+
16045 {2.50415993, 14.84268}, //
+
16046 {2.51244998, 14.8381996}, //
+
16047 {2.52067995, 14.8330498}, //
+
16048 {2.52877998, 14.8281498}, //
+
16049 {2.53675008, 14.8234997}, //
+
16050 {2.54460001, 14.8191004}, //
+
16051 {2.55232, 14.8149595}, //
+
16052 {2.55992007, 14.8110704}, //
+
16053 {2.56738997, 14.8074303}, //
+
16054 {2.57472992, 14.80404}, //
+
16055 {2.58194995, 14.8009005}, //
+
16056 {2.58895993, 14.7980604}, //
+
16057 {2.59568, 14.7955503}, //
+
16058 {2.6020999, 14.7933702}, //
+
16059 {2.60823011, 14.7915297}, //
+
16060 {2.61406994, 14.7900295}, //
+
16061 {2.61962008, 14.7888603}, //
+
16062 {2.62487006, 14.7880201}, //
+
16063 {2.62982988, 14.7875204}, //
+
16064 {2.63450003, 14.7873497}, //
+
16065 {2.64129996, 14.7873497}, //
+
16066 {2.6482501, 14.7880297}, //
+
16067 {2.65551996, 14.7885904}, //
+
16068 {2.66314006, 14.7890196}, //
+
16069 {2.67108989, 14.7893295}, //
+
16070 {2.67936993, 14.7895098}, //
+
16071 {2.68798995, 14.7895699}, //
+
16072 {2.69693995, 14.7895098}, //
+
16073 {2.70622993, 14.78932}, //
+
16074 {2.71585011, 14.7889996}, //
+
16075 {2.72544003, 14.7883196}, //
+
16076 {2.73461008, 14.7870102}, //
+
16077 {2.74337006, 14.7850704}, //
+
16078 {2.75169992, 14.7825003}, //
+
16079 {2.75961995, 14.7792997}, //
+
16080 {2.76711988, 14.7754698}, //
+
16081 {2.77419996, 14.7710104}, //
+
16082 {2.78085995, 14.7659197}, //
+
16083 {2.78710008, 14.7601995}, //
+
16084 {2.79031992, 14.7566004}, //
+
16085 {2.79396009, 14.7518301}, //
+
16086 {2.79801989, 14.7458897}, //
+
16087 {2.80249, 14.7387695}, //
+
16088 {2.80738997, 14.7304802}, //
+
16089 {2.81270003, 14.7210197}, //
+
16090 {2.81842995, 14.7103901}, //
+
16091 {2.82457995, 14.6985798}, //
+
16092 {2.83115005, 14.6856003}, //
+
16093 {2.83793998, 14.6718798}, //
+
16094 {2.8447299, 14.6578197}, //
+
16095 {2.85151005, 14.6434202}, //
+
16096 {2.85829997, 14.6286898}, //
+
16097 {2.86508012, 14.6136198}, //
+
16098 {2.87186003, 14.5982199}, //
+
16099 {2.87863994, 14.5824804}, //
+
16100 {2.88542008, 14.5664101}, //
+
16101 {2.89219999, 14.5500002}, //
+
16102 {2.90042996, 14.5335102}, //
+
16103 {2.90853, 14.5171804}, //
+
16104 {2.91650009, 14.5010204}, //
+
16105 {2.92435002, 14.4850197}, //
+
16106 {2.93207002, 14.4691896}, //
+
16107 {2.93967009, 14.4535303}, //
+
16108 {2.94713998, 14.4380398}, //
+
16109 {2.95447993, 14.4227104}, //
+
16110 {2.96169996, 14.4075499}, //
+
16111 {2.96866989, 14.3931103}, //
+
16112 {2.97526002, 14.3799295}, //
+
16113 {2.98147988, 14.368}, //
+
16114 {2.98731995, 14.3573303}, //
+
16115 {2.99278998, 14.3479099}, //
+
16116 {2.99787998, 14.3397503}, //
+
16117 {3.00258994, 14.33284}, //
+
16118 {3.00693011, 14.3271904}, //
+
16119 {3.01090002, 14.3227997}, //
+
16120 {3.0125699, 14.3204603}, //
+
16121 {3.01457, 14.3179502}, //
+
16122 {3.01691008, 14.31528}, //
+
16123 {3.0195899, 14.3124304}, //
+
16124 {3.02259994, 14.3094196}, //
+
16125 {3.02593994, 14.3062401}, //
+
16126 {3.02962995, 14.3029003}, //
+
16127 {3.03364992, 14.2993803}, //
+
16128 {3.03800011, 14.2957001}, //
+
16129 {3.04716992, 14.2863197}, //
+
16130 {3.05659008, 14.2762699}, //
+
16131 {3.0662601, 14.2655602}, //
+
16132 {3.07617998, 14.2541704}, //
+
16133 {3.08634996, 14.2421103}, //
+
16134 {3.09678006, 14.2293901}, //
+
16135 {3.10745001, 14.2159996}, //
+
16136 {3.11838007, 14.20193}, //
+
16137 {3.12954998, 14.1871996}, //
+
16138 {3.14021993, 14.1721296}, //
+
16139 {3.14964008, 14.1570597}, //
+
16140 {3.15779996, 14.1419897}, //
+
16141 {3.16471004, 14.1269197}, //
+
16142 {3.17036009, 14.1118498}, //
+
16143 {3.17475009, 14.0967798}, //
+
16144 {3.17789006, 14.0817003}, //
+
16145 {3.17976999, 14.0666304}, //
+
16146 {3.18039989, 14.0515499}, //
+
16147 {3.17968988, 14.0404997}, //
+
16148 {3.17905998, 14.0299501}, //
+
16149 {3.17850995, 14.0199099}, //
+
16150 {3.17805004, 14.0103703}, //
+
16151 {3.17767, 14.0013304}, //
+
16152 {3.17738008, 13.9927902}, //
+
16153 {3.17717004, 13.9847603}, //
+
16154 {3.1770401, 13.9772301}, //
+
16155 {3.17700005, 13.9701996}, //
+
16156 {3.17628002, 13.9620199}, //
+
16157 {3.17559004, 13.9540396}, //
+
16158 {3.17494988, 13.94627}, //
+
16159 {3.17435002, 13.9387102}, //
+
16160 {3.17378998, 13.9313602}, //
+
16161 {3.17326999, 13.9242201}, //
+
16162 {3.17279005, 13.9172897}, //
+
16163 {3.17234993, 13.9105701}, //
+
16164 {3.1719501, 13.9040499}, //
+
16165 {3.17150998, 13.89746}, //
+
16166 {3.17093992, 13.8904896}, //
+
16167 {3.17024994, 13.8831501}, //
+
16168 {3.16943002, 13.8754301}, //
+
16169 {3.16848993, 13.8673296}, //
+
16170 {3.16741991, 13.8588495}, //
+
16171 {3.16621995, 13.8499899}, //
+
16172 {3.16490006, 13.8407602}, //
+
16173 {3.16345, 13.8311501}, //
+
16174 {3.15988994, 13.8120203}, //
+
16175 {3.15674996, 13.7923098}, //
+
16176 {3.15403008, 13.7720098}, //
+
16177 {3.15173006, 13.7511301}, //
+
16178 {3.14984989, 13.7296495}, //
+
16179 {3.14838004, 13.7075901}, //
+
16180 {3.14734006, 13.6849499}, //
+
16181 {3.14670992, 13.6617203}, //
+
16182 {3.14650011, 13.6379004}, //
+
16183 {3.14574003, 13.6246405}, //
+
16184 {3.14498997, 13.6119604}, //
+
16185 {3.14422989, 13.5998697}, //
+
16186 {3.14348006, 13.5883598}, //
+
16187 {3.14271998, 13.5774403}, //
+
16188 {3.14196992, 13.5670996}, //
+
16189 {3.14121008, 13.5573502}, //
+
16190 {3.14046001, 13.5481796}, //
+
16191 {3.13969994, 13.5396004}, //
+
16192 {3.13805008, 13.5307198}, //
+
16193 {3.13611007, 13.5206804}, //
+
16194 {3.1338799, 13.5094604}, //
+
16195 {3.13135004, 13.4970598}, //
+
16196 {3.12853003, 13.4834995}, //
+
16197 {3.12541008, 13.4687595}, //
+
16198 {3.12199998, 13.4528399}, //
+
16199 {3.11829996, 13.4357595}, //
+
16200 {3.11430001, 13.4174995}, //
+
16201 {3.11011004, 13.3987303}, //
+
16202 {3.10583997, 13.3800802}, //
+
16203 {3.10149002, 13.3615599}, //
+
16204 {3.09704995, 13.3431597}, //
+
16205 {3.09253001, 13.3248901}, //
+
16206 {3.08791995, 13.3067398}, //
+
16207 {3.08323002, 13.2887201}, //
+
16208 {3.07845998, 13.2708197}, //
+
16209 {3.07360005, 13.2530499}, //
+
16210 {3.06885004, 13.2360401}, //
+
16211 {3.06438994, 13.2204103}, //
+
16212 {3.06022, 13.2061596}, //
+
16213 {3.05634999, 13.1932898}, //
+
16214 {3.0527699, 13.1817999}, //
+
16215 {3.04948997, 13.17169}, //
+
16216 {3.04649997, 13.1629696}, //
+
16217 {3.04380012, 13.1556196}, //
+
16218 {3.04139996, 13.1496496}, //
+
16219 {3.03795004, 13.1443701}, //
+
16220 {3.03362012, 13.1375904}, //
+
16221 {3.02840996, 13.1293001}, //
+
16222 {3.02231002, 13.1195002}, //
+
16223 {3.01534009, 13.1082001}, //
+
16224 {3.00748992, 13.0953798}, //
+
16225 {2.99875998, 13.0810604}, //
+
16226 {2.98914003, 13.0652399}, //
+
16227 {2.97865009, 13.0479002}, //
+
16228 {2.96773005, 13.0297604}, //
+
16229 {2.95679998, 13.0114899}, //
+
16230 {2.94587994, 12.9931002}, //
+
16231 {2.93495011, 12.9745798}, //
+
16232 {2.92402005, 12.9559402}, //
+
16233 {2.91308999, 12.93717}, //
+
16234 {2.90215993, 12.9182701}, //
+
16235 {2.89123011, 12.89925}, //
+
16236 {2.88030005, 12.8801003}, //
+
16237 {2.86968994, 12.8614502}, //
+
16238 {2.85970998, 12.8439398}, //
+
16239 {2.85035992, 12.8275499}, //
+
16240 {2.84164, 12.8122902}, //
+
16241 {2.83353996, 12.7981596}, //
+
16242 {2.82608008, 12.7851696}, //
+
16243 {2.81924009, 12.7733002}, //
+
16244 {2.81303, 12.7625599}, //
+
16245 {2.80745006, 12.7529497}, //
+
16246 {2.78369999, 12.74615}, //
+
16247 });
+
16248 polys.push_back({
+
16249 {2.65485001, 12.7631502}, //
+
16250 {2.65126991, 12.7632303}, //
+
16251 {2.6480701, 12.7634802}, //
+
16252 {2.64524007, 12.7638998}, //
+
16253 {2.64385009, 12.7642298}, //
+
16254 {2.6401999, 12.7644501}, //
+
16255 {2.63450003, 12.7648001}, //
+
16256 {2.62832999, 12.7651796}, //
+
16257 {2.62187004, 12.7655602}, //
+
16258 {2.61510992, 12.7659302}, //
+
16259 {2.60805988, 12.7663097}, //
+
16260 {2.60071993, 12.7666903}, //
+
16261 {2.59308004, 12.7670698}, //
+
16262 {2.58515, 12.7674398}, //
+
16263 {2.57692003, 12.7678204}, //
+
16264 {2.56839991, 12.7681999}, //
+
16265 {2.55975008, 12.7686005}, //
+
16266 {2.55115008, 12.7690401}, //
+
16267 {2.5425899, 12.7695198}, //
+
16268 {2.53407001, 12.77005}, //
+
16269 {2.52558994, 12.7706099}, //
+
16270 {2.51715994, 12.7712202}, //
+
16271 {2.50875998, 12.7718697}, //
+
16272 {2.50041008, 12.7725697}, //
+
16273 {2.4921, 12.7733002}, //
+
16274 {2.48307991, 12.7744102}, //
+
16275 {2.47258997, 12.7762299}, //
+
16276 {2.46063995, 12.7787704}, //
+
16277 {2.44722009, 12.7820101}, //
+
16278 {2.43233991, 12.7859697}, //
+
16279 {2.41631007, 12.7905397}, //
+
16280 {2.41488004, 12.7910004}, //
+
16281 {2.40379, 12.7946701}, //
+
16282 {2.39211011, 12.7986298}, //
+
16283 {2.37984991, 12.8028803}, //
+
16284 {2.3670001, 12.8074303}, //
+
16285 {2.35356998, 12.8122702}, //
+
16286 {2.33955002, 12.8174}, //
+
16287 {2.31668997, 12.82547}, //
+
16288 {2.29483008, 12.8331203}, //
+
16289 {2.2739799, 12.8403597}, //
+
16290 {2.25412989, 12.8471699}, //
+
16291 {2.23529005, 12.85357}, //
+
16292 {2.21745992, 12.85956}, //
+
16293 {2.20062995, 12.8651199}, //
+
16294 {2.18480992, 12.8702698}, //
+
16295 {2.17000008, 12.875}, //
+
16296 {2.15455008, 12.8794804}, //
+
16297 {2.13985991, 12.8838797}, //
+
16298 {2.13930988, 12.8840504}, //
+
16299 {2.13790989, 12.8845501}, //
+
16300 {2.11745, 12.8922701}, //
+
16301 {2.09840989, 12.8998699}, //
+
16302 {2.08079004, 12.9073496}, //
+
16303 {2.06458998, 12.9146996}, //
+
16304 {2.04981995, 12.9219198}, //
+
16305 {2.03646994, 12.9290199}, //
+
16306 {2.02454996, 12.9359999}, //
+
16307 {2.01405001, 12.9428501}, //
+
16308 {2.00349998, 12.9490604}, //
+
16309 {1.99293995, 12.9556503}, //
+
16310 {1.98239005, 12.9626102}, //
+
16311 {1.97184002, 12.9699497}, //
+
16312 {1.96129, 12.9776697}, //
+
16313 {1.95967996, 12.9789}, //
+
16314 {1.95079005, 12.9870796}, //
+
16315 {1.94094002, 12.9963303}, //
+
16316 {1.93068004, 13.0061703}, //
+
16317 {1.91999996, 13.0165901}, //
+
16318 {1.90890002, 13.0276003}, //
+
16319 {1.89846003, 13.0365801}, //
+
16320 {1.88822997, 13.0454397}, //
+
16321 {1.87820995, 13.0541697}, //
+
16322 {1.86838996, 13.0627699}, //
+
16323 {1.85879004, 13.07125}, //
+
16324 {1.84939003, 13.0796003}, //
+
16325 {1.84019995, 13.0878296}, //
+
16326 {1.83122003, 13.0959301}, //
+
16327 {1.82245004, 13.1039}, //
+
16328 {1.81421995, 13.1113701}, //
+
16329 {1.80688, 13.11796}, //
+
16330 {1.80041003, 13.1236801}, //
+
16331 {1.80026996, 13.1238003}, //
+
16332 {1.80023003, 13.1240396}, //
+
16333 {1.80001998, 13.1247902}, //
+
16334 {1.79972994, 13.1255398}, //
+
16335 {1.79935002, 13.1262903}, //
+
16336 {1.79888999, 13.1270399}, //
+
16337 {1.79833996, 13.1277905}, //
+
16338 {1.79770994, 13.1285496}, //
+
16339 {1.79700005, 13.1293001}, //
+
16340 {1.79628003, 13.1300297}, //
+
16341 {1.79559004, 13.1307297}, //
+
16342 {1.79495001, 13.1313801}, //
+
16343 {1.79435003, 13.1319904}, //
+
16344 {1.79378998, 13.1325502}, //
+
16345 {1.79326999, 13.1330795}, //
+
16346 {1.79235005, 13.1339998}, //
+
16347 {1.79194999, 13.1344004}, //
+
16348 {1.79156995, 13.1347599}, //
+
16349 {1.79119003, 13.1350698}, //
+
16350 {1.79082, 13.1353397}, //
+
16351 {1.79043996, 13.1355801}, //
+
16352 {1.79006004, 13.1357603}, //
+
16353 {1.78968, 13.13591}, //
+
16354 {1.78930998, 13.1360197}, //
+
16355 {1.78893006, 13.1360798}, //
+
16356 {1.78855002, 13.1360998}, //
+
16357 {1.78819001, 13.1361198}, //
+
16358 {1.78787994, 13.1361799}, //
+
16359 {1.78761005, 13.1362896}, //
+
16360 {1.78736997, 13.1364403}, //
+
16361 {1.78718996, 13.1366196}, //
+
16362 {1.78704, 13.1368599}, //
+
16363 {1.78692997, 13.1371298}, //
+
16364 {1.78687, 13.1374397}, //
+
16365 {1.78682995, 13.1381598}, //
+
16366 {1.78676999, 13.1384697}, //
+
16367 {1.78665996, 13.1387396}, //
+
16368 {1.78650999, 13.1389799}, //
+
16369 {1.78632998, 13.1391602}, //
+
16370 {1.78609002, 13.1393099}, //
+
16371 {1.78582001, 13.1394196}, //
+
16372 {1.78550994, 13.1394796}, //
+
16373 {1.78515005, 13.1394997}, //
+
16374 {1.78345001, 13.1394997}, //
+
16375 {1.81060004, 13.1530504}, //
+
16376 {1.81832004, 13.1462698}, //
+
16377 {1.82432997, 13.1409903}, //
+
16378 {1.88010001, 13.092}, //
+
16379 {1.89602995, 13.0782804}, //
+
16380 {1.91290998, 13.0642204}, //
+
16381 {1.93077004, 13.0498199}, //
+
16382 {1.94957995, 13.0350904}, //
+
16383 {1.96935999, 13.0200195}, //
+
16384 {1.99010003, 13.0046196}, //
+
16385 {2.01180005, 12.9888802}, //
+
16386 {2.03447008, 12.9728098}, //
+
16387 {2.05809999, 12.9563999}, //
+
16388 {2.06123996, 12.9548101}, //
+
16389 {2.06463003, 12.9530401}, //
+
16390 {2.06826997, 12.9511204}, //
+
16391 {2.07216001, 12.9490204}, //
+
16392 {2.07629991, 12.9467602}, //
+
16393 {2.08069992, 12.9443302}, //
+
16394 {2.08535004, 12.94174}, //
+
16395 {2.09025002, 12.9389801}, //
+
16396 {2.09540009, 12.9360504}, //
+
16397 {2.10150003, 12.93081}, //
+
16398 {2.1077199, 12.9256601}, //
+
16399 {2.11405993, 12.9205904}, //
+
16400 {2.12052989, 12.9156103}, //
+
16401 {2.12713003, 12.9107103}, //
+
16402 {2.13384008, 12.9058905}, //
+
16403 {2.14069009, 12.9011602}, //
+
16404 {2.14766002, 12.8965101}, //
+
16405 {2.15475011, 12.8919497}, //
+
16406 {2.16179991, 12.8876104}, //
+
16407 {2.1686399, 12.8835897}, //
+
16408 {2.17528009, 12.87992}, //
+
16409 {2.18169999, 12.8765697}, //
+
16410 {2.18792009, 12.87356}, //
+
16411 {2.19392991, 12.8708801}, //
+
16412 {2.19972992, 12.8685398}, //
+
16413 {2.20531988, 12.8665304}, //
+
16414 {2.21070004, 12.86485}, //
+
16415 {2.22013998, 12.8624401}, //
+
16416 {2.23038006, 12.8597298}, //
+
16417 {2.24141002, 12.8567305}, //
+
16418 {2.25323009, 12.8534403}, //
+
16419 {2.26585007, 12.8498602}, //
+
16420 {2.27925992, 12.8459797}, //
+
16421 {2.29345989, 12.8418102}, //
+
16422 {2.30846, 12.8373499}, //
+
16423 {2.32424998, 12.8325996}, //
+
16424 {2.34017992, 12.8277702}, //
+
16425 {2.34559011, 12.8261204}, //
+
16426 {2.34500003, 12.8249302}, //
+
16427 {2.34423995, 12.8234301}, //
+
16428 {2.34366012, 12.8222599}, //
+
16429 {2.34324002, 12.8214197}, //
+
16430 {2.34290004, 12.8207502}, //
+
16431 {2.34693003, 12.8194103}, //
+
16432 {2.34800005, 12.8190498}, //
+
16433 {2.34916997, 12.8186398}, //
+
16434 {2.35043001, 12.8181496}, //
+
16435 {2.35176992, 12.8175697}, //
+
16436 {2.35319996, 12.8169003}, //
+
16437 {2.35470009, 12.8161497}, //
+
16438 {2.3562901, 12.81532}, //
+
16439 {2.35795999, 12.8143997}, //
+
16440 {2.35970998, 12.8133898}, //
+
16441 {2.36155009, 12.8122997}, //
+
16442 {2.36344004, 12.8112097}, //
+
16443 {2.36532998, 12.8101997}, //
+
16444 {2.36720991, 12.8092804}, //
+
16445 {2.36910009, 12.8084402}, //
+
16446 {2.37098002, 12.8076801}, //
+
16447 {2.37285995, 12.8070097}, //
+
16448 {2.37473989, 12.8064203}, //
+
16449 {2.37662005, 12.8059196}, //
+
16450 {2.37849998, 12.8055}, //
+
16451 {2.3803699, 12.8051205}, //
+
16452 {2.38218999, 12.80474}, //
+
16453 {2.38397002, 12.8043699}, //
+
16454 {2.38571, 12.8039904}, //
+
16455 {2.38739991, 12.8036098}, //
+
16456 {2.38906002, 12.8032303}, //
+
16457 {2.39066005, 12.8028603}, //
+
16458 {2.39223003, 12.8024797}, //
+
16459 {2.39374995, 12.8021002}, //
+
16460 {2.39522004, 12.8017902}, //
+
16461 {2.39660001, 12.8016005}, //
+
16462 {2.39791012, 12.8015299}, //
+
16463 {2.39912009, 12.8016005}, //
+
16464 {2.40025997, 12.8017902}, //
+
16465 {2.40130997, 12.8021002}, //
+
16466 {2.40227008, 12.8025398}, //
+
16467 {2.40315008, 12.8031101}, //
+
16468 {2.40394998, 12.8037996}, //
+
16469 {2.40411997, 12.8048897}, //
+
16470 {2.40461993, 12.8066502}, //
+
16471 {2.40495992, 12.8076496}, //
+
16472 {2.39845991, 12.8097095}, //
+
16473 {2.38470006, 12.8140402}, //
+
16474 {2.37040997, 12.81849}, //
+
16475 {2.35556006, 12.8230696}, //
+
16476 {2.34559011, 12.8261204}, //
+
16477 {2.3470099, 12.8289499}, //
+
16478 {2.34826994, 12.83146}, //
+
16479 {2.34969997, 12.8343}, //
+
16480 {2.35124993, 12.8373203}, //
+
16481 {2.35289001, 12.8403397}, //
+
16482 {2.35460997, 12.8433599}, //
+
16483 {2.35641003, 12.8463802}, //
+
16484 {2.35828996, 12.8493996}, //
+
16485 {2.36026001, 12.8524103}, //
+
16486 {2.36229992, 12.8554296}, //
+
16487 {2.36443996, 12.8584404}, //
+
16488 {2.3666501, 12.8614502}, //
+
16489 {2.36890006, 12.86448}, //
+
16490 {2.37109995, 12.8675604}, //
+
16491 {2.37326002, 12.8706703}, //
+
16492 {2.37537003, 12.8738298}, //
+
16493 {2.37743998, 12.8770304}, //
+
16494 {2.37947011, 12.88027}, //
+
16495 {2.38145995, 12.8835602}, //
+
16496 {2.38339996, 12.8868799}, //
+
16497 {2.38529992, 12.8902502}, //
+
16498 {2.38717008, 12.8935404}, //
+
16499 {2.38898993, 12.8966303}, //
+
16500 {2.39076996, 12.8994999}, //
+
16501 {2.39250994, 12.9021597}, //
+
16502 {2.39420009, 12.9046097}, //
+
16503 {2.39585996, 12.9068499}, //
+
16504 {2.39745998, 12.9088802}, //
+
16505 {2.39902997, 12.9106903}, //
+
16506 {2.40054989, 12.9123001}, //
+
16507 {2.40227008, 12.9155502}, //
+
16508 {2.40440989, 12.91926}, //
+
16509 {2.40696001, 12.9234304}, //
+
16510 {2.40992999, 12.9280596}, //
+
16511 {2.41332006, 12.9331503}, //
+
16512 {2.41712999, 12.9386997}, //
+
16513 {2.42135, 12.9447098}, //
+
16514 {2.4259901, 12.95117}, //
+
16515 {2.43105006, 12.9581003}, //
+
16516 {2.43631005, 12.9653196}, //
+
16517 {2.44151998, 12.9726601}, //
+
16518 {2.44669008, 12.9801302}, //
+
16519 {2.45182991, 12.98773}, //
+
16520 {2.45690989, 12.99545}, //
+
16521 {2.46196008, 13.0032997}, //
+
16522 {2.46696997, 13.0112696}, //
+
16523 {2.47193003, 13.0193701}, //
+
16524 {2.47685003, 13.0276003}, //
+
16525 {2.48151994, 13.0356398}, //
+
16526 {2.48572993, 13.04317}, //
+
16527 {2.48948002, 13.05021}, //
+
16528 {2.49276996, 13.0567398}, //
+
16529 {2.49558997, 13.0627604}, //
+
16530 {2.49796009, 13.0682898}, //
+
16531 {2.49987006, 13.0733099}, //
+
16532 {2.50131011, 13.0778303}, //
+
16533 {2.50230002, 13.0818501}, //
+
16534 {2.50445008, 13.0869198}, //
+
16535 {2.50639009, 13.09307}, //
+
16536 {2.50813007, 13.1003103}, //
+
16537 {2.50964999, 13.1086397}, //
+
16538 {2.51097012, 13.1180601}, //
+
16539 {2.51207995, 13.1285601}, //
+
16540 {2.51297998, 13.1401501}, //
+
16541 {2.51366997, 13.1528301}, //
+
16542 {2.5141499, 13.1666002}, //
+
16543 {2.51442003, 13.1811304}, //
+
16544 {2.51448989, 13.1960802}, //
+
16545 {2.51433992, 13.2114401}, //
+
16546 {2.51397991, 13.2272301}, //
+
16547 {2.5134201, 13.2434301}, //
+
16548 {2.51264, 13.2600403}, //
+
16549 {2.51165009, 13.2770796}, //
+
16550 {2.5104599, 13.2945299}, //
+
16551 {2.50904989, 13.3123999}, //
+
16552 {2.50742006, 13.3302803}, //
+
16553 {2.50554991, 13.3477402}, //
+
16554 {2.50342011, 13.3647804}, //
+
16555 {2.50103998, 13.3814001}, //
+
16556 {2.49839997, 13.3976002}, //
+
16557 {2.49552011, 13.4133797}, //
+
16558 {2.4923799, 13.4287395}, //
+
16559 {2.48899007, 13.4436798}, //
+
16560 {2.48534989, 13.4582005}, //
+
16561 {2.48056006, 13.4708405}, //
+
16562 {2.47521996, 13.4831495}, //
+
16563 {2.46933007, 13.49512}, //
+
16564 {2.46290994, 13.5067596}, //
+
16565 {2.45592999, 13.5180597}, //
+
16566 {2.44842005, 13.5290203}, //
+
16567 {2.44036007, 13.53965}, //
+
16568 {2.43175006, 13.5499401}, //
+
16569 {2.42260003, 13.5599003}, //
+
16570 {2.41323996, 13.5694904}, //
+
16571 {2.40401006, 13.57866}, //
+
16572 {2.39490008, 13.5874205}, //
+
16573 {2.38592005, 13.5957499}, //
+
16574 {2.37705994, 13.6036701}, //
+
16575 {2.36833, 13.6111698}, //
+
16576 {2.35973001, 13.6182499}, //
+
16577 {2.35124993, 13.6249104}, //
+
16578 {2.34290004, 13.6311502}, //
+
16579 {2.33561993, 13.6363297}, //
+
16580 {2.32884002, 13.6413498}, //
+
16581 {2.32256007, 13.6462002}, //
+
16582 {2.3167901, 13.6508799}, //
+
16583 {2.31151009, 13.6554003}, //
+
16584 {2.30674005, 13.65975}, //
+
16585 {2.30247998, 13.6639299}, //
+
16586 {2.29871011, 13.6679497}, //
+
16587 {2.29544997, 13.6717997}, //
+
16588 {2.29215002, 13.6765699}, //
+
16589 {2.28824997, 13.6818504}, //
+
16590 {2.2837801, 13.6876297}, //
+
16591 {2.27870989, 13.6939096}, //
+
16592 {2.27306008, 13.7006903}, //
+
16593 {2.26682997, 13.7079802}, //
+
16594 {2.25999999, 13.7157698}, //
+
16595 {2.25259995, 13.7240601}, //
+
16596 {2.24460006, 13.7328501}, //
+
16597 {2.23859, 13.7396698}, //
+
16598 {2.23262, 13.7465696}, //
+
16599 {2.22669005, 13.7535601}, //
+
16600 {2.22079992, 13.7606297}, //
+
16601 {2.2149601, 13.7677898}, //
+
16602 {2.20916009, 13.7750301}, //
+
16603 {2.2033999, 13.7823496}, //
+
16604 {2.19768, 13.7897596}, //
+
16605 {2.19199991, 13.7972498}, //
+
16606 {2.18653989, 13.8046198}, //
+
16607 {2.1814599, 13.8116503}, //
+
16608 {2.17675996, 13.8183403}, //
+
16609 {2.17243004, 13.8247099}, //
+
16610 {2.16847992, 13.8307304}, //
+
16611 {2.16491008, 13.8364296}, //
+
16612 {2.16171002, 13.8417902}, //
+
16613 {2.15889001, 13.8468103}, //
+
16614 {2.15645003, 13.8514996}, //
+
16615 {2.1540401, 13.8599396}, //
+
16616 {2.15132999, 13.86866}, //
+
16617 {2.14832997, 13.8776798}, //
+
16618 {2.14504004, 13.8870001}, //
+
16619 {2.14145994, 13.8965998}, //
+
16620 {2.13757992, 13.9064999}, //
+
16621 {2.13340998, 13.9166899}, //
+
16622 {2.12895012, 13.9271698}, //
+
16623 {2.12420011, 13.9379501}, //
+
16624 {2.11932993, 13.9486904}, //
+
16625 {2.11450005, 13.9590597}, //
+
16626 {2.10971999, 13.9690504}, //
+
16627 {2.10496998, 13.9786596}, //
+
16628 {2.10026002, 13.9878902}, //
+
16629 {2.09559989, 13.9967499}, //
+
16630 {2.09098005, 14.0052299}, //
+
16631 {2.08639002, 14.0133305}, //
+
16632 {2.08185005, 14.0210505}, //
+
16633 {2.07862997, 14.02808}, //
+
16634 {2.07499003, 14.0356102}, //
+
16635 {2.07093, 14.0436401}, //
+
16636 {2.06645012, 14.0521803}, //
+
16637 {2.0615499, 14.0612202}, //
+
16638 {2.05623007, 14.0707598}, //
+
16639 {2.0504899, 14.0808001}, //
+
16640 {2.04432988, 14.0913496}, //
+
16641 {2.03775001, 14.1023998}, //
+
16642 {2.03091002, 14.1136503}, //
+
16643 {2.02394009, 14.1247702}, //
+
16644 {2.01684999, 14.1357603}, //
+
16645 {2.00962996, 14.1466303}, //
+
16646 {2.00229001, 14.1573696}, //
+
16647 {1.99482, 14.1679802}, //
+
16648 {1.98722005, 14.1784601}, //
+
16649 {1.97950006, 14.1888199}, //
+
16650 {1.97165, 14.1990499}, //
+
16651 {1.96393001, 14.2088299}, //
+
16652 {1.95658004, 14.2178097}, //
+
16653 {1.94960999, 14.2259998}, //
+
16654 {1.94301999, 14.2333899}, //
+
16655 {1.9368, 14.2399902}, //
+
16656 {1.93096006, 14.24578}, //
+
16657 {1.92550004, 14.2507896}, //
+
16658 {1.92041004, 14.2549896}, //
+
16659 {1.91569996, 14.2584}, //
+
16660 {1.91206002, 14.2605896}, //
+
16661 {1.90866995, 14.26266}, //
+
16662 {1.90552998, 14.2646103}, //
+
16663 {1.90263999, 14.2664204}, //
+
16664 {1.89999998, 14.2681198}, //
+
16665 {1.89760995, 14.2696896}, //
+
16666 {1.89547002, 14.2711296}, //
+
16667 {1.89358997, 14.2724504}, //
+
16668 {1.89195001, 14.2736502}, //
+
16669 {1.88894999, 14.2759104}, //
+
16670 {1.88743997, 14.2770395}, //
+
16671 {1.88593996, 14.2781696}, //
+
16672 {1.88443005, 14.2792997}, //
+
16673 {1.88293004, 14.2804298}, //
+
16674 {1.88142002, 14.2815504}, //
+
16675 {1.87990999, 14.2826796}, //
+
16676 {1.87839997, 14.2838001}, //
+
16677 {1.87689996, 14.2850399}, //
+
16678 {1.87539995, 14.2864799}, //
+
16679 {1.87389004, 14.2881403}, //
+
16680 {1.87239003, 14.29}, //
+
16681 {1.87088001, 14.2920704}, //
+
16682 {1.86938, 14.2943602}, //
+
16683 {1.86786997, 14.2968502}, //
+
16684 {1.86635995, 14.2995396}, //
+
16685 {1.86485004, 14.3024502}, //
+
16686 {1.86249995, 14.3040895}, //
+
16687 {1.85997999, 14.3059702}, //
+
16688 {1.85730004, 14.3081102}, //
+
16689 {1.85444999, 14.3105001}, //
+
16690 {1.85143006, 14.3131399}, //
+
16691 {1.84825003, 14.3160295}, //
+
16692 {1.84490001, 14.31917}, //
+
16693 {1.84138, 14.3225603}, //
+
16694 {1.83770001, 14.3261995}, //
+
16695 {1.82439995, 14.3367901}, //
+
16696 {1.81008995, 14.3474598}, //
+
16697 {1.79477, 14.3582201}, //
+
16698 {1.77845001, 14.3690596}, //
+
16699 {1.76111996, 14.3799896}, //
+
16700 {1.74278998, 14.3909998}, //
+
16701 {1.72344995, 14.4020996}, //
+
16702 {1.70309997, 14.4132795}, //
+
16703 {1.68175006, 14.4245501}, //
+
16704 {1.66986001, 14.4298601}, //
+
16705 {1.65831006, 14.4352503}, //
+
16706 {1.64708996, 14.4407301}, //
+
16707 {1.63619995, 14.4462996}, //
+
16708 {1.62565005, 14.4519501}, //
+
16709 {1.61544001, 14.4576797}, //
+
16710 {1.60555995, 14.4635}, //
+
16711 {1.59600997, 14.4694099}, //
+
16712 {1.58679998, 14.4754}, //
+
16713 {1.57135999, 14.4828901}, //
+
16714 {1.55516005, 14.4903002}, //
+
16715 {1.53821003, 14.4976196}, //
+
16716 {1.52049994, 14.5048599}, //
+
16717 {1.50204003, 14.5120201}, //
+
16718 {1.48282003, 14.5190897}, //
+
16719 {1.46284997, 14.5260801}, //
+
16720 {1.44212997, 14.53298}, //
+
16721 {1.42065001, 14.5397997}, //
+
16722 {1.40155995, 14.5465002}, //
+
16723 {1.38347995, 14.5530396}, //
+
16724 {1.36641002, 14.5594101}, //
+
16725 {1.35033, 14.5656004}, //
+
16726 {1.33527005, 14.5716295}, //
+
16727 {1.32121003, 14.5774899}, //
+
16728 {1.30815005, 14.5831804}, //
+
16729 {1.29610002, 14.5887003}, //
+
16730 {1.28505003, 14.5940504}, //
+
16731 {1.27643001, 14.5984497}, //
+
16732 {1.26713002, 14.6025896}, //
+
16733 {1.25716996, 14.6064796}, //
+
16734 {1.24653006, 14.6101198}, //
+
16735 {1.23522997, 14.6135101}, //
+
16736 {1.22325003, 14.6166496}, //
+
16737 {1.21060002, 14.6195402}, //
+
16738 {1.19728994, 14.6221704}, //
+
16739 {1.18330002, 14.6245499}, //
+
16740 {1.16924, 14.62673}, //
+
16741 {1.15567994, 14.6287498}, //
+
16742 {1.14262998, 14.6305904}, //
+
16743 {1.13007998, 14.6322699}, //
+
16744 {1.11802995, 14.6337795}, //
+
16745 {1.10648, 14.6351299}, //
+
16746 {1.09543002, 14.6363001}, //
+
16747 {1.08489001, 14.63731}, //
+
16748 {1.07484996, 14.6381502}, //
+
16749 {1.06903005, 14.6388597}, //
+
16750 {1.06361997, 14.6394901}, //
+
16751 {1.05864, 14.6400404}, //
+
16752 {1.05407, 14.6405001}, //
+
16753 {1.04992998, 14.6408796}, //
+
16754 {1.04621005, 14.6411695}, //
+
16755 {1.04289997, 14.6413803}, //
+
16756 {1.04001999, 14.64151}, //
+
16757 {1.03754997, 14.6415501}, //
+
16758 {1.03345001, 14.6430101}, //
+
16759 {1.02867997, 14.6443796}, //
+
16760 {1.02322996, 14.6456804}, //
+
16761 {1.01712, 14.6468897}, //
+
16762 {1.01033998, 14.6480198}, //
+
16763 {1.00287998, 14.6490602}, //
+
16764 {0.994759023, 14.6500196}, //
+
16765 {0.985965014, 14.6508999}, //
+
16766 {0.976499975, 14.6517}, //
+
16767 {0.962145984, 14.6525002}, //
+
16768 {0.947706997, 14.6533804}, //
+
16769 {0.933183014, 14.6543398}, //
+
16770 {0.918573976, 14.6553898}, //
+
16771 {0.90388, 14.6565304}, //
+
16772 {0.889100015, 14.6577396}, //
+
16773 {0.874234974, 14.65905}, //
+
16774 {0.859284997, 14.66043}, //
+
16775 {0.844250023, 14.6618996}, //
+
16776 {0.832215011, 14.6630697}, //
+
16777 {0.820222974, 14.6635599}, //
+
16778 {0.808272004, 14.6633902}, //
+
16779 {0.796364009, 14.66255}, //
+
16780 {0.784497023, 14.6610403}, //
+
16781 {0.772671998, 14.6588602}, //
+
16782 {0.760890007, 14.6560097}, //
+
16783 {0.749149024, 14.6524897}, //
+
16784 {0.737450004, 14.6483002}, //
+
16785 {0.726170003, 14.6437397}, //
+
16786 {0.71568501, 14.6390896}, //
+
16787 {0.70599401, 14.6343603}, //
+
16788 {0.69709897, 14.62955}, //
+
16789 {0.688998997, 14.62465}, //
+
16790 {0.681693971, 14.6196804}, //
+
16791 {0.675185025, 14.6146202}, //
+
16792 {0.669470012, 14.6094799}, //
+
16793 {0.664550006, 14.60425}, //
+
16794 {0.662231028, 14.60186}, //
+
16795 {0.659786999, 14.5992203}, //
+
16796 {0.657217026, 14.5963202}, //
+
16797 {0.654519975, 14.5931797}, //
+
16798 {0.651697993, 14.5897799}, //
+
16799 {0.648750007, 14.5861397}, //
+
16800 {0.645676017, 14.5822401}, //
+
16801 {0.642476022, 14.5781002}, //
+
16802 {0.639150023, 14.5737}, //
+
16803 {0.63578099, 14.5692301}, //
+
16804 {0.632453978, 14.5648403}, //
+
16805 {0.62916702, 14.5605297}, //
+
16806 {0.625919998, 14.5563097}, //
+
16807 {0.622714996, 14.5521603}, //
+
16808 {0.61954999, 14.5481005}, //
+
16809 {0.616425991, 14.5441198}, //
+
16810 {0.613343, 14.5402203}, //
+
16811 {0.610300004, 14.5363998}, //
+
16812 {0.607330024, 14.5326996}, //
+
16813 {0.604443014, 14.5291204}, //
+
16814 {0.601638973, 14.5256701}, //
+
16815 {0.598917007, 14.5223398}, //
+
16816 {0.596278012, 14.5191402}, //
+
16817 {0.593721986, 14.5160704}, //
+
16818 {0.591248989, 14.5131197}, //
+
16819 {0.588858008, 14.5102997}, //
+
16820 {0.586549997, 14.5075998}, //
+
16821 {0.584420025, 14.5051098}, //
+
16822 {0.58287698, 14.5033102}, //
+
16823 {0.583747983, 14.5051098}, //
+
16824 {0.584850013, 14.5075998}, //
+
16825 {0.586025, 14.5102797}, //
+
16826 {0.587282002, 14.5130301}, //
+
16827 {0.588621974, 14.5158796}, //
+
16828 {0.590044975, 14.5187998}, //
+
16829 {0.591551006, 14.5218201}, //
+
16830 {0.593138993, 14.52491}, //
+
16831 {0.594810009, 14.5280895}, //
+
16832 {0.596563995, 14.5313501}, //
+
16833 {0.598399997, 14.5347004}, //
+
16834 {0.600288987, 14.5381002}, //
+
16835 {0.602177978, 14.5415001}, //
+
16836 {0.604067028, 14.5448904}, //
+
16837 {0.605956018, 14.5482903}, //
+
16838 {0.607843995, 14.5516796}, //
+
16839 {0.609732985, 14.5550804}, //
+
16840 {0.615400016, 14.5652504}, //
+
16841 {0.617267013, 14.5685301}, //
+
16842 {0.619090974, 14.5716105}, //
+
16843 {0.620872021, 14.5744801}, //
+
16844 {0.622609973, 14.5771399}, //
+
16845 {0.624303997, 14.5795898}, //
+
16846 {0.625955999, 14.58183}, //
+
16847 {0.627564013, 14.5838604}, //
+
16848 {0.629127979, 14.58568}, //
+
16849 {0.630649984, 14.5873003}, //
+
16850 {0.631488979, 14.5888796}, //
+
16851 {0.632493973, 14.5906401}, //
+
16852 {0.633666992, 14.5925598}, //
+
16853 {0.635006011, 14.5946398}, //
+
16854 {0.636511028, 14.5969}, //
+
16855 {0.638182998, 14.5993204}, //
+
16856 {0.64002198, 14.6019096}, //
+
16857 {0.642027974, 14.6046696}, //
+
16858 {0.644200027, 14.6076002}, //
+
16859 {0.646507978, 14.6106596}, //
+
16860 {0.648899019, 14.6138096}, //
+
16861 {0.651372015, 14.6170397}, //
+
16862 {0.653927982, 14.6203499}, //
+
16863 {0.656566978, 14.6237497}, //
+
16864 {0.659289002, 14.6272202}, //
+
16865 {0.662092984, 14.6307802}, //
+
16866 {0.664979994, 14.6344204}, //
+
16867 {0.667949975, 14.6381502}, //
+
16868 {0.672492981, 14.6456003}, //
+
16869 {0.677078009, 14.6528797}, //
+
16870 {0.681706011, 14.6599903}, //
+
16871 {0.686375022, 14.6669397}, //
+
16872 {0.691085994, 14.6737204}, //
+
16873 {0.695838988, 14.6803303}, //
+
16874 {0.700634003, 14.6867704}, //
+
16875 {0.705470979, 14.6930399}, //
+
16876 {0.710349977, 14.6991501}, //
+
16877 {0.715102971, 14.70502}, //
+
16878 {0.719561994, 14.7105503}, //
+
16879 {0.723728001, 14.7157402}, //
+
16880 {0.727599025, 14.7206001}, //
+
16881 {0.731176972, 14.7251196}, //
+
16882 {0.73446101, 14.72931}, //
+
16883 {0.737451017, 14.73316}, //
+
16884 {0.740148008, 14.7366695}, //
+
16885 {0.742550015, 14.73985}, //
+
16886 {0.744185984, 14.7407303}, //
+
16887 {0.746073008, 14.7418604}, //
+
16888 {0.748211026, 14.7432404}, //
+
16889 {0.750599027, 14.7448797}, //
+
16890 {0.753238022, 14.7467604}, //
+
16891 {0.756128013, 14.7488899}, //
+
16892 {0.759267986, 14.7512798}, //
+
16893 {0.762659013, 14.7539101}, //
+
16894 {0.766300023, 14.7567997}, //
+
16895 {0.77699101, 14.76371}, //
+
16896 {0.787974, 14.7708797}, //
+
16897 {0.799250007, 14.7782898}, //
+
16898 {0.81081897, 14.7859497}, //
+
16899 {0.822679996, 14.7938604}, //
+
16900 {0.834833026, 14.8020201}, //
+
16901 {0.847280025, 14.8104296}, //
+
16902 {0.860019028, 14.8190899}, //
+
16903 {0.873049974, 14.8280001}, //
+
16904 {0.885924995, 14.83671}, //
+
16905 {0.898172975, 14.8447504}, //
+
16906 {0.909793973, 14.8521204}, //
+
16907 {0.92078799, 14.8588104}, //
+
16908 {0.931155026, 14.8648396}, //
+
16909 {0.940894008, 14.8702002}, //
+
16910 {0.950007021, 14.8748903}, //
+
16911 {0.958491981, 14.8788996}, //
+
16912 {0.966350019, 14.8822498}, //
+
16913 {0.971175015, 14.8838902}, //
+
16914 {0.976629019, 14.8857698}, //
+
16915 {0.982711017, 14.8879099}, //
+
16916 {0.989422023, 14.8902998}, //
+
16917 {0.996760011, 14.8929396}, //
+
16918 {1.00472999, 14.8958302}, //
+
16919 {1.01331997, 14.8989697}, //
+
16920 {1.02254999, 14.90236}, //
+
16921 {1.03240001, 14.9060001}, //
+
16922 {1.04260004, 14.9097204}, //
+
16923 {1.05283999, 14.9133701}, //
+
16924 {1.06312001, 14.9169197}, //
+
16925 {1.07344997, 14.9203997}, //
+
16926 {1.08380997, 14.9237804}, //
+
16927 {1.09422004, 14.9270897}, //
+
16928 {1.10467005, 14.9303102}, //
+
16929 {1.11517, 14.9334497}, //
+
16930 {1.1257, 14.9364996}, //
+
16931 {1.13461995, 14.9394598}, //
+
16932 {1.14329004, 14.9422903}, //
+
16933 {1.15170002, 14.9449902}, //
+
16934 {1.15986001, 14.9475698}, //
+
16935 {1.16777003, 14.9500198}, //
+
16936 {1.17543006, 14.9523401}, //
+
16937 {1.18283999, 14.9545403}, //
+
16938 {1.19000006, 14.9566097}, //
+
16939 {1.19690001, 14.9585505}, //
+
16940 {1.20334005, 14.9603796}, //
+
16941 {1.20912004, 14.9620705}, //
+
16942 {1.21422005, 14.9636402}, //
+
16943 {1.21866, 14.9650898}, //
+
16944 {1.22241998, 14.9664001}, //
+
16945 {1.22552001, 14.9675903}, //
+
16946 {1.22794998, 14.9686604}, //
+
16947 {1.22970998, 14.9695902}, //
+
16948 {1.23080003, 14.9703999}, //
+
16949 {1.23318005, 14.97124}, //
+
16950 {1.23581004, 14.9722404}, //
+
16951 {1.23870003, 14.9734201}, //
+
16952 {1.24184, 14.9747601}, //
+
16953 {1.24522996, 14.9762602}, //
+
16954 {1.24887002, 14.9779301}, //
+
16955 {1.25276005, 14.9797697}, //
+
16956 {1.25689995, 14.9817801}, //
+
16957 {1.26129997, 14.9839497}, //
+
16958 {1.26587999, 14.9862003}, //
+
16959 {1.27058995, 14.9884005}, //
+
16960 {1.27542996, 14.9905596}, //
+
16961 {1.28039002, 14.9926701}, //
+
16962 {1.28547001, 14.9947395}, //
+
16963 {1.29068005, 14.9967699}, //
+
16964 {1.29601002, 14.9987602}, //
+
16965 {1.30147004, 15.0007}, //
+
16966 {1.30704999, 15.0025997}, //
+
16967 {1.31263995, 15.0043802}, //
+
16968 {1.31810999, 15.0059605}, //
+
16969 {1.32344997, 15.0073204}, //
+
16970 {1.32866001, 15.0084801}, //
+
16971 {1.33375001, 15.0094204}, //
+
16972 {1.33871996, 15.0101604}, //
+
16973 {1.34354997, 15.0106802}, //
+
16974 {1.34826005, 15.0109997}, //
+
16975 {1.35284996, 15.0110998}, //
+
16976 {1.35649002, 15.0109701}, //
+
16977 {1.35987997, 15.0106001}, //
+
16978 {1.36301994, 15.0099697}, //
+
16979 {1.36591005, 15.0090904}, //
+
16980 {1.36854994, 15.0079498}, //
+
16981 {1.37093997, 15.0065699}, //
+
16982 {1.37308002, 15.0049295}, //
+
16983 {1.37495995, 15.0030403}, //
+
16984 {1.37660003, 15.0009003}, //
+
16985 {1.37811005, 14.9986}, //
+
16986 {1.37961996, 14.9962196}, //
+
16987 {1.38112998, 14.9937601}, //
+
16988 {1.38262999, 14.99121}, //
+
16989 {1.38414001, 14.9885702}, //
+
16990 {1.38564003, 14.9858599}, //
+
16991 {1.38715005, 14.9830503}, //
+
16992 {1.38864994, 14.9801702}, //
+
16993 {1.39014995, 14.9771996}, //
+
16994 {1.39019001, 14.9757099}, //
+
16995 {1.39031994, 14.9742603}, //
+
16996 {1.39052999, 14.9728603}, //
+
16997 {1.39082003, 14.9714899}, //
+
16998 {1.39119995, 14.97017}, //
+
16999 {1.39165998, 14.9688902}, //
+
17000 {1.39221001, 14.9676504}, //
+
17001 {1.39284003, 14.9664497}, //
+
17002 {1.39355004, 14.9652996}, //
+
17003 {1.39435005, 14.9642401}, //
+
17004 {1.39523005, 14.9632998}, //
+
17005 {1.39619005, 14.9624901}, //
+
17006 {1.39723003, 14.9618101}, //
+
17007 {1.39836001, 14.9612503}, //
+
17008 {1.39956999, 14.9608097}, //
+
17009 {1.40086997, 14.9604998}, //
+
17010 {1.40224004, 14.96031}, //
+
17011 {1.40369999, 14.9602499}, //
+
17012 {1.40704, 14.9595604}, //
+
17013 {1.41100001, 14.9589901}, //
+
17014 {1.41558003, 14.9585505}, //
+
17015 {1.42079997, 14.9582396}, //
+
17016 {1.42664003, 14.9580498}, //
+
17017 {1.43309999, 14.9579802}, //
+
17018 {1.44018996, 14.9580498}, //
+
17019 {1.44790995, 14.9582396}, //
+
17020 {1.45624995, 14.9585505}, //
+
17021 {1.46493995, 14.9589701}, //
+
17022 {1.47367001, 14.9594698}, //
+
17023 {1.48243999, 14.9600601}, //
+
17024 {1.49125004, 14.9607201}, //
+
17025 {1.50011003, 14.9614697}, //
+
17026 {1.50900996, 14.9623098}, //
+
17027 {1.51795006, 14.9632196}, //
+
17028 {1.52692997, 14.96422}, //
+
17029 {1.53594995, 14.9652996}, //
+
17030 {1.54462004, 14.9664097}, //
+
17031 {1.55253005, 14.9674797}, //
+
17032 {1.55969, 14.9685097}, //
+
17033 {1.56608999, 14.9694996}, //
+
17034 {1.57174003, 14.9704399}, //
+
17035 {1.57664001, 14.9713402}, //
+
17036 {1.58078003, 14.9722004}, //
+
17037 {1.58416998, 14.9730196}, //
+
17038 {1.58679998, 14.9737997}, //
+
17039 {1.59016001, 14.9744701}, //
+
17040 {1.59417999, 14.9749804}, //
+
17041 {1.59887004, 14.9753103}, //
+
17042 {1.60423005, 14.9754801}, //
+
17043 {1.61026001, 14.9754801}, //
+
17044 {1.61696005, 14.9753103}, //
+
17045 {1.62432003, 14.9749804}, //
+
17046 {1.63234997, 14.9744701}, //
+
17047 {1.64104998, 14.9737997}, //
+
17048 {1.65014005, 14.9730196}, //
+
17049 {1.65929997, 14.9722004}, //
+
17050 {1.66856003, 14.9713402}, //
+
17051 {1.67788994, 14.9704399}, //
+
17052 {1.68730998, 14.9694996}, //
+
17053 {1.69681001, 14.9685097}, //
+
17054 {1.70639002, 14.9674797}, //
+
17055 {1.71605003, 14.9664097}, //
+
17056 {1.72580004, 14.9652996}, //
+
17057 {1.73530996, 14.9642401}, //
+
17058 {1.74423003, 14.9632998}, //
+
17059 {1.75256002, 14.9624901}, //
+
17060 {1.76031005, 14.9618101}, //
+
17061 {1.76747, 14.9612503}, //
+
17062 {1.77403998, 14.9608097}, //
+
17063 {1.78003001, 14.9604998}, //
+
17064 {1.78542995, 14.96031}, //
+
17065 {1.79024994, 14.9602499}, //
+
17066 {1.79532003, 14.9584904}, //
+
17067 {1.80147004, 14.9562197}, //
+
17068 {1.80870998, 14.9534597}, //
+
17069 {1.81703997, 14.9501896}, //
+
17070 {1.82646, 14.9464102}, //
+
17071 {1.83695996, 14.9421396}, //
+
17072 {1.84854996, 14.9373598}, //
+
17073 {1.86123002, 14.9320803}, //
+
17074 {1.875, 14.9263}, //
+
17075 {1.88944995, 14.9201899}, //
+
17076 {1.90415001, 14.9139204}, //
+
17077 {1.91909003, 14.9074802}, //
+
17078 {1.93429005, 14.9008703}, //
+
17079 {1.94974005, 14.8940897}, //
+
17080 {1.96544003, 14.8871403}, //
+
17081 {1.98140001, 14.8800297}, //
+
17082 {1.99759996, 14.8727503}, //
+
17083 {2.01405001, 14.8653002}, //
+
17084 {2.03038001, 14.85781}, //
+
17085 {2.04620004, 14.8504}, //
+
17086 {2.0615201, 14.8430796}, //
+
17087 {2.07633996, 14.8358402}, //
+
17088 {2.0906601, 14.82868}, //
+
17089 {2.10447001, 14.8216105}, //
+
17090 {2.11777997, 14.81462}, //
+
17091 {2.13058996, 14.8077202}, //
+
17092 {2.14289999, 14.8009005}, //
+
17093 {2.16741991, 14.7859898}, //
+
17094 {2.19127989, 14.7699099}, //
+
17095 {2.2144599, 14.7526703}, //
+
17096 {2.23697996, 14.7342501}, //
+
17097 {2.25883007, 14.7146597}, //
+
17098 {2.28000998, 14.6939001}, //
+
17099 {2.30052996, 14.6719704}, //
+
17100 {2.32036996, 14.6488705}, //
+
17101 {2.33955002, 14.6246004}, //
+
17102 {2.34854007, 14.61413}, //
+
17103 {2.35745001, 14.6038198}, //
+
17104 {2.36628008, 14.5936899}, //
+
17105 {2.37502003, 14.5837202}, //
+
17106 {2.38368011, 14.5739202}, //
+
17107 {2.39226007, 14.56429}, //
+
17108 {2.40075994, 14.5548201}, //
+
17109 {2.40916991, 14.5455303}, //
+
17110 {2.41750002, 14.5363998}, //
+
17111 {2.42951012, 14.5269499}, //
+
17112 {2.44145012, 14.5181599}, //
+
17113 {2.45328999, 14.5100403}, //
+
17114 {2.46506, 14.5025997}, //
+
17115 {2.47673988, 14.49582}, //
+
17116 {2.4883399, 14.4897099}, //
+
17117 {2.49986005, 14.4842701}, //
+
17118 {2.51130009, 14.4794998}, //
+
17119 {2.52265, 14.4754}, //
+
17120 {2.52870989, 14.4716101}, //
+
17121 {2.5348599, 14.4677801}, //
+
17122 {2.54109001, 14.4639101}, //
+
17123 {2.54741001, 14.46}, //
+
17124 {2.55380988, 14.4560404}, //
+
17125 {2.5602901, 14.4520397}, //
+
17126 {2.56685996, 14.448}, //
+
17127 {2.57350993, 14.4439201}, //
+
17128 {2.58025002, 14.4398003}, //
+
17129 {2.58699989, 14.4354696}, //
+
17130 {2.59366012, 14.4307604}, //
+
17131 {2.60022998, 14.4256697}, //
+
17132 {2.60671997, 14.4202099}, //
+
17133 {2.61313009, 14.4143696}, //
+
17134 {2.61945009, 14.4081602}, //
+
17135 {2.62568998, 14.4015598}, //
+
17136 {2.63183999, 14.3945999}, //
+
17137 {2.63790011, 14.3872499}, //
+
17138 {2.64090991, 14.3827696}, //
+
17139 {2.64391994, 14.3783703}, //
+
17140 {2.64693999, 14.3740597}, //
+
17141 {2.64995003, 14.3698301}, //
+
17142 {2.65297008, 14.3656902}, //
+
17143 {2.65598989, 14.3616304}, //
+
17144 {2.65900993, 14.3576498}, //
+
17145 {2.66202998, 14.3537598}, //
+
17146 {2.66505003, 14.3499498}, //
+
17147 {2.69237995, 14.3162498}, //
+
17148 {2.71863008, 14.2829704}, //
+
17149 {2.7437799, 14.2501097}, //
+
17150 {2.76784992, 14.21766}, //
+
17151 {2.7908299, 14.1856403}, //
+
17152 {2.81272006, 14.1540403}, //
+
17153 {2.83351994, 14.12286}, //
+
17154 {2.85323, 14.0920897}, //
+
17155 {2.87185001, 14.0617504}, //
+
17156 {2.88147998, 14.0403996}, //
+
17157 {2.89077997, 14.0185499}, //
+
17158 {2.89973998, 13.9961901}, //
+
17159 {2.90836, 13.9733295}, //
+
17160 {2.91665006, 13.9499702}, //
+
17161 {2.9246099, 13.9261103}, //
+
17162 {2.93221998, 13.9017401}, //
+
17163 {2.93950009, 13.8768702}, //
+
17164 {2.94645, 13.8514996}, //
+
17165 {2.95096993, 13.8338003}, //
+
17166 {2.95549011, 13.8168497}, //
+
17167 {2.96002007, 13.8006601}, //
+
17168 {2.96454, 13.7852097}, //
+
17169 {2.96905994, 13.7705202}, //
+
17170 {2.97357988, 13.7565899}, //
+
17171 {2.97811007, 13.7434101}, //
+
17172 {2.98263001, 13.7309799}, //
+
17173 {2.98714995, 13.7193003}, //
+
17174 {2.99073005, 13.70889}, //
+
17175 {2.9939301, 13.6972704}, //
+
17176 {2.99675989, 13.6844397}, //
+
17177 {2.99920011, 13.6703901}, //
+
17178 {3.00128007, 13.6551304}, //
+
17179 {3.00296998, 13.6386604}, //
+
17180 {3.0042901, 13.6209698}, //
+
17181 {3.00522995, 13.6020699}, //
+
17182 {3.00580001, 13.5819502}, //
+
17183 {3.00605011, 13.5612898}, //
+
17184 {3.00605011, 13.54076}, //
+
17185 {3.00580001, 13.5203505}, //
+
17186 {3.00530005, 13.5000696}, //
+
17187 {3.00453997, 13.4799099}, //
+
17188 {3.00353003, 13.4598799}, //
+
17189 {3.00226998, 13.4399796}, //
+
17190 {3.00076008, 13.4202003}, //
+
17191 {2.99900007, 13.4005499}, //
+
17192 {2.99710011, 13.38167}, //
+
17193 {2.9951601, 13.3642197}, //
+
17194 {2.99317002, 13.3481903}, //
+
17195 {2.99113989, 13.33358}, //
+
17196 {2.98906994, 13.3204002}, //
+
17197 {2.98695993, 13.3086395}, //
+
17198 {2.9848001, 13.2982998}, //
+
17199 {2.98259997, 13.2893896}, //
+
17200 {2.98035002, 13.2819004}, //
+
17201 {2.97755003, 13.2728796}, //
+
17202 {2.97365999, 13.2623901}, //
+
17203 {2.9686799, 13.2504396}, //
+
17204 {2.96262002, 13.2370195}, //
+
17205 {2.95546007, 13.2221403}, //
+
17206 {2.94722009, 13.2057896}, //
+
17207 {2.93788004, 13.1879702}, //
+
17208 {2.92745996, 13.1687002}, //
+
17209 {2.91595006, 13.1479502}, //
+
17210 {2.90383005, 13.1264601}, //
+
17211 {2.89159012, 13.1049299}, //
+
17212 {2.87922001, 13.0833597}, //
+
17213 {2.86671996, 13.0617399}, //
+
17214 {2.85409999, 13.0400801}, //
+
17215 {2.84135008, 13.0183697}, //
+
17216 {2.82848001, 12.9966202}, //
+
17217 {2.81547999, 12.9748297}, //
+
17218 {2.80235004, 12.9530001}, //
+
17219 {2.7895999, 12.9319}, //
+
17220 {2.77772999, 12.9123096}, //
+
17221 {2.76674008, 12.8942204}, //
+
17222 {2.75663996, 12.8776503}, //
+
17223 {2.74741006, 12.8625803}, //
+
17224 {2.73905993, 12.84902}, //
+
17225 {2.73159003, 12.8369703}, //
+
17226 {2.72500992, 12.8264303}, //
+
17227 {2.71930003, 12.8174}, //
+
17228 {2.71562004, 12.8115501}, //
+
17229 {2.71210003, 12.8060904}, //
+
17230 {2.70875001, 12.8009901}, //
+
17231 {2.70556998, 12.7962799}, //
+
17232 {2.70254993, 12.7919397}, //
+
17233 {2.69970012, 12.7879801}, //
+
17234 {2.69702005, 12.7843904}, //
+
17235 {2.69449997, 12.7811804}, //
+
17236 {2.69215012, 12.7783499}, //
+
17237 {2.68993998, 12.7758398}, //
+
17238 {2.68779993, 12.7735796}, //
+
17239 {2.68576002, 12.7715797}, //
+
17240 {2.68378997, 12.7698202}, //
+
17241 {2.68191004, 12.7683201}, //
+
17242 {2.68010998, 12.7670603}, //
+
17243 {2.67839003, 12.7660599}, //
+
17244 {2.67674994, 12.7652998}, //
+
17245 {2.67519999, 12.7648001}, //
+
17246 {2.67369008, 12.7644501}, //
+
17247 {2.67217994, 12.7641497}, //
+
17248 {2.67067003, 12.7638798}, //
+
17249 {2.6691699, 12.7636604}, //
+
17250 {2.66766, 12.7634802}, //
+
17251 {2.66616011, 12.7633305}, //
+
17252 {2.66464996, 12.7632303}, //
+
17253 {2.66315007, 12.7631702}, //
+
17254 {2.66164994, 12.7631502}, //
+
17255 {2.65530992, 12.7635403}, //
+
17256 {2.65518999, 12.7636604}, //
+
17257 {2.65504003, 12.7638798}, //
+
17258 {2.65493011, 12.7641497}, //
+
17259 {2.65487003, 12.7644501}, //
+
17260 {2.65485001, 12.7648001}, //
+
17261 {2.65480995, 12.7651596}, //
+
17262 {2.65468001, 12.7654696}, //
+
17263 {2.65446997, 12.7657404}, //
+
17264 {2.65418005, 12.7659798}, //
+
17265 {2.65380001, 12.76616}, //
+
17266 {2.6533401, 12.7663097}, //
+
17267 {2.65279007, 12.7664204}, //
+
17268 {2.65215993, 12.7664804}, //
+
17269 {2.65144992, 12.7665005}, //
+
17270 {2.65072989, 12.7665195}, //
+
17271 {2.65003991, 12.7665796}, //
+
17272 {2.6494, 12.7666903}, //
+
17273 {2.6487999, 12.76684}, //
+
17274 {2.64824009, 12.7670202}, //
+
17275 {2.6477201, 12.7672596}, //
+
17276 {2.64723992, 12.7675304}, //
+
17277 {2.64680004, 12.7678404}, //
+
17278 {2.64599991, 12.7685604}, //
+
17279 {2.64556003, 12.7688704}, //
+
17280 {2.64508009, 12.7691402}, //
+
17281 {2.64455009, 12.7693796}, //
+
17282 {2.64399004, 12.7695599}, //
+
17283 {2.64337993, 12.7697096}, //
+
17284 {2.64273, 12.7698202}, //
+
17285 {2.64203, 12.7698803}, //
+
17286 {2.64129996, 12.7699003}, //
+
17287 {2.6405201, 12.7699203}, //
+
17288 {2.63969994, 12.7699804}, //
+
17289 {2.63883996, 12.7700901}, //
+
17290 {2.63793993, 12.7702398}, //
+
17291 {2.63700008, 12.7704201}, //
+
17292 {2.63607001, 12.7706404}, //
+
17293 {2.63593006, 12.7714901}, //
+
17294 {2.63585997, 12.7732601}, //
+
17295 {2.63600993, 12.7751799}, //
+
17296 {2.63636994, 12.7772799}, //
+
17297 {2.63692999, 12.7795401}, //
+
17298 {2.63771009, 12.78197}, //
+
17299 {2.63870001, 12.7845602}, //
+
17300 {2.63988996, 12.7873201}, //
+
17301 {2.64129996, 12.7902498}, //
+
17302 {2.64234996, 12.7929001}, //
+
17303 {2.64398003, 12.7963495}, //
+
17304 {2.64619994, 12.8006001}, //
+
17305 {2.64899993, 12.8056402}, //
+
17306 {2.65239, 12.8114796}, //
+
17307 {2.65636992, 12.81812}, //
+
17308 {2.66092992, 12.8255501}, //
+
17309 {2.66606998, 12.8337803}, //
+
17310 {2.6717999, 12.8428001}, //
+
17311 {2.67787004, 12.8522596}, //
+
17312 {2.68403006, 12.8618097}, //
+
17313 {2.69026995, 12.8714399}, //
+
17314 {2.69659996, 12.8811502}, //
+
17315 {2.70300007, 12.8909502}, //
+
17316 {2.70949006, 12.9008198}, //
+
17317 {2.71605992, 12.91078}, //
+
17318 {2.72270989, 12.9208202}, //
+
17319 {2.72944999, 12.9309502}, //
+
17320 {2.73614001, 12.9408503}, //
+
17321 {2.74267006, 12.9502096}, //
+
17322 {2.74903011, 12.9590302}, //
+
17323 {2.75522995, 12.9673004}, //
+
17324 {2.76126003, 12.9750204}, //
+
17325 {2.76711988, 12.9821901}, //
+
17326 {2.77280998, 12.9888296}, //
+
17327 {2.7783401, 12.9949102}, //
+
17328 {2.78369999, 13.0004501}, //
+
17329 {2.78902006, 13.0107698}, //
+
17330 {2.79442, 13.0221395}, //
+
17331 {2.79991007, 13.0345602}, //
+
17332 {2.80546999, 13.0480204}, //
+
17333 {2.81112003, 13.06252}, //
+
17334 {2.81685996, 13.0780697}, //
+
17335 {2.82266998, 13.0946703}, //
+
17336 {2.82856989, 13.1123104}, //
+
17337 {2.8345499, 13.1309996}, //
+
17338 {2.84046006, 13.1504002}, //
+
17339 {2.84611011, 13.1701803}, //
+
17340 {2.85152006, 13.1903296}, //
+
17341 {2.8566699, 13.2108698}, //
+
17342 {2.86156988, 13.2317801}, //
+
17343 {2.86622, 13.2530699}, //
+
17344 {2.87061, 13.2747297}, //
+
17345 {2.87475991, 13.2967796}, //
+
17346 {2.87864995, 13.3191996}, //
+
17347 {2.88065004, 13.3344803}, //
+
17348 {2.88215995, 13.3501701}, //
+
17349 {2.88316011, 13.3662796}, //
+
17350 {2.88365006, 13.3828096}, //
+
17351 {2.88365006, 13.3997602}, //
+
17352 {2.88314009, 13.4171305}, //
+
17353 {2.88212991, 13.4349203}, //
+
17354 {2.88062, 13.4531298}, //
+
17355 {2.87859988, 13.4717503}, //
+
17356 {2.87624002, 13.4904299}, //
+
17357 {2.8736701, 13.50877}, //
+
17358 {2.8708899, 13.5267696}, //
+
17359 {2.86789989, 13.5444403}, //
+
17360 {2.86470008, 13.5617704}, //
+
17361 {2.86128998, 13.5787697}, //
+
17362 {2.85767007, 13.5954304}, //
+
17363 {2.85384011, 13.6117601}, //
+
17364 {2.84980011, 13.6277504}, //
+
17365 {2.84568, 13.6430302}, //
+
17366 {2.84159994, 13.6572199}, //
+
17367 {2.83755994, 13.6703196}, //
+
17368 {2.83355999, 13.6823301}, //
+
17369 {2.8296001, 13.6932497}, //
+
17370 {2.82569003, 13.7030802}, //
+
17371 {2.82182002, 13.7118301}, //
+
17372 {2.81799006, 13.7194796}, //
+
17373 {2.81419992, 13.7260504}, //
+
17374 {2.80902004, 13.7356005}, //
+
17375 {2.8039999, 13.74615}, //
+
17376 {2.79914999, 13.7577105}, //
+
17377 {2.79447007, 13.7702703}, //
+
17378 {2.78994989, 13.7838297}, //
+
17379 {2.78559995, 13.7984104}, //
+
17380 {2.78141999, 13.8139801}, //
+
17381 {2.77740002, 13.8305597}, //
+
17382 {2.77355003, 13.8481503}, //
+
17383 {2.7697401, 13.8636799}, //
+
17384 {2.76585007, 13.8786201}, //
+
17385 {2.76186991, 13.8929796}, //
+
17386 {2.75781012, 13.9067497}, //
+
17387 {2.75366998, 13.9199305}, //
+
17388 {2.74943995, 13.9325304}, //
+
17389 {2.74513006, 13.94454}, //
+
17390 {2.74073005, 13.9559603}, //
+
17391 {2.73624992, 13.9667997}, //
+
17392 {2.7302599, 13.9788599}, //
+
17393 {2.72434998, 13.9909096}, //
+
17394 {2.71852994, 14.0029697}, //
+
17395 {2.71280003, 14.0150204}, //
+
17396 {2.70714998, 14.0270796}, //
+
17397 {2.70158005, 14.0391302}, //
+
17398 {2.6961, 14.0511904}, //
+
17399 {2.69071007, 14.0632401}, //
+
17400 {2.68540001, 14.0753002}, //
+
17401 {2.68165994, 14.0820398}, //
+
17402 {2.67800999, 14.0886898}, //
+
17403 {2.67444992, 14.0952597}, //
+
17404 {2.67096996, 14.1017504}, //
+
17405 {2.66757989, 14.1081495}, //
+
17406 {2.66426992, 14.11448}, //
+
17407 {2.66104007, 14.1207199}, //
+
17408 {2.65790009, 14.1268797}, //
+
17409 {2.65485001, 14.1329498}, //
+
17410 {2.65072989, 14.1408005}, //
+
17411 {2.64589, 14.1492701}, //
+
17412 {2.64034009, 14.15837}, //
+
17413 {2.63407993, 14.1681004}, //
+
17414 {2.62711, 14.1784601}, //
+
17415 {2.61943007, 14.1894398}, //
+
17416 {2.6110301, 14.2010498}, //
+
17417 {2.60191989, 14.2132902}, //
+
17418 {2.59209991, 14.2261496}, //
+
17419 {2.58211994, 14.2390203}, //
+
17420 {2.57252002, 14.2512703}, //
+
17421 {2.56329012, 14.2628899}, //
+
17422 {2.55445004, 14.27388}, //
+
17423 {2.54596996, 14.2842398}, //
+
17424 {2.53787994, 14.2939701}, //
+
17425 {2.53015995, 14.3030796}, //
+
17426 {2.52282, 14.3115501}, //
+
17427 {2.51585007, 14.3193998}, //
+
17428 {2.51036, 14.3233404}, //
+
17429 {2.5044601, 14.3276196}, //
+
17430 {2.49813008, 14.3322296}, //
+
17431 {2.49138999, 14.3371801}, //
+
17432 {2.48423004, 14.3424597}, //
+
17433 {2.47665, 14.3480701}, //
+
17434 {2.4686501, 14.3540096}, //
+
17435 {2.46023989, 14.3602896}, //
+
17436 {2.45140004, 14.3669004}, //
+
17437 {2.44011998, 14.3745403}, //
+
17438 {2.42887998, 14.3823795}, //
+
17439 {2.41769004, 14.39044}, //
+
17440 {2.40653992, 14.3986998}, //
+
17441 {2.39542007, 14.4071703}, //
+
17442 {2.38436007, 14.4158602}, //
+
17443 {2.37333012, 14.4247503}, //
+
17444 {2.36233997, 14.4338398}, //
+
17445 {2.3513999, 14.4431496}, //
+
17446 {2.34070992, 14.4525099}, //
+
17447 {2.33047009, 14.4617395}, //
+
17448 {2.32069993, 14.47085}, //
+
17449 {2.31138992, 14.4798298}, //
+
17450 {2.30253005, 14.4886904}, //
+
17451 {2.29413009, 14.4974203}, //
+
17452 {2.28620005, 14.5060196}, //
+
17453 {2.2787199, 14.5144997}, //
+
17454 {2.27169991, 14.52285}, //
+
17455 {2.25433993, 14.5465403}, //
+
17456 {2.23689008, 14.5693998}, //
+
17457 {2.2193501, 14.5914202}, //
+
17458 {2.20173001, 14.6126003}, //
+
17459 {2.18402004, 14.6329403}, //
+
17460 {2.16622996, 14.6524496}, //
+
17461 {2.14836001, 14.6711197}, //
+
17462 {2.13039994, 14.6889496}, //
+
17463 {2.11234999, 14.7059498}, //
+
17464 {2.10548997, 14.7125597}, //
+
17465 {2.09845996, 14.7188396}, //
+
17466 {2.09125996, 14.7247801}, //
+
17467 {2.08389997, 14.7303801}, //
+
17468 {2.07635999, 14.7356596}, //
+
17469 {2.06866002, 14.7405901}, //
+
17470 {2.06079006, 14.7452002}, //
+
17471 {2.05275011, 14.7494698}, //
+
17472 {2.04454994, 14.7533998}, //
+
17473 {2.03629994, 14.7570896}, //
+
17474 {2.02814007, 14.7606201}, //
+
17475 {2.02006006, 14.7639704}, //
+
17476 {2.01206994, 14.7671604}, //
+
17477 {2.00414991, 14.7701702}, //
+
17478 {1.99633002, 14.7730198}, //
+
17479 {1.98857999, 14.7756996}, //
+
17480 {1.98092997, 14.7782097}, //
+
17481 {1.97335005, 14.78055}, //
+
17482 {1.96827996, 14.7820196}, //
+
17483 {1.96362996, 14.7833996}, //
+
17484 {1.95940995, 14.7847004}, //
+
17485 {1.95560002, 14.7859097}, //
+
17486 {1.95220995, 14.7870398}, //
+
17487 {1.94923997, 14.7880802}, //
+
17488 {1.94668996, 14.7890396}, //
+
17489 {1.94456005, 14.7899103}, //
+
17490 {1.94284999, 14.7907}, //
+
17491 {1.93938994, 14.7923603}, //
+
17492 {1.93505001, 14.7943096}, //
+
17493 {1.92982996, 14.7965498}, //
+
17494 {1.92374003, 14.7990904}, //
+
17495 {1.91676998, 14.8019104}, //
+
17496 {1.90892005, 14.8050299}, //
+
17497 {1.90019, 14.8084497}, //
+
17498 {1.89058006, 14.81215}, //
+
17499 {1.88010001, 14.8161497}, //
+
17500 {1.86907005, 14.8202496}, //
+
17501 {1.85783994, 14.8242702}, //
+
17502 {1.84639001, 14.8282099}, //
+
17503 {1.83473003, 14.8320599}, //
+
17504 {1.82287002, 14.8358202}, //
+
17505 {1.81078994, 14.83951}, //
+
17506 {1.79849994, 14.8430996}, //
+
17507 {1.78601003, 14.8466196}, //
+
17508 {1.77330005, 14.85005}, //
+
17509 {1.76069999, 14.8533802}, //
+
17510 {1.74851, 14.8565798}, //
+
17511 {1.73675001, 14.8596601}, //
+
17512 {1.72539997, 14.8626099}, //
+
17513 {1.71448004, 14.8654404}, //
+
17514 {1.70396996, 14.8681402}, //
+
17515 {1.69387996, 14.8707199}, //
+
17516 {1.68420005, 14.8731699}, //
+
17517 {1.67495, 14.8754997}, //
+
17518 {1.66676998, 14.8769197}, //
+
17519 {1.65878999, 14.87817}, //
+
17520 {1.65102994, 14.8792496}, //
+
17521 {1.64347005, 14.8801699}, //
+
17522 {1.63612998, 14.8809204}, //
+
17523 {1.62899005, 14.8815002}, //
+
17524 {1.62206995, 14.8819199}, //
+
17525 {1.61535001, 14.8821697}, //
+
17526 {1.60885, 14.8822498}, //
+
17527 {1.60242999, 14.8822098}, //
+
17528 {1.59596002, 14.8820801}, //
+
17529 {1.58946002, 14.8818798}, //
+
17530 {1.58290005, 14.8815899}, //
+
17531 {1.57631004, 14.8812199}, //
+
17532 {1.56966996, 14.8807602}, //
+
17533 {1.56298995, 14.8802204}, //
+
17534 {1.55627, 14.8795996}, //
+
17535 {1.54949999, 14.8788996}, //
+
17536 {1.54334998, 14.87819}, //
+
17537 {1.53694999, 14.8775597}, //
+
17538 {1.53030002, 14.8770103}, //
+
17539 {1.52339995, 14.8765497}, //
+
17540 {1.51624, 14.8761702}, //
+
17541 {1.50882995, 14.8758802}, //
+
17542 {1.50117004, 14.8756704}, //
+
17543 {1.49326003, 14.8755398}, //
+
17544 {1.48510003, 14.8754997}, //
+
17545 {1.47317004, 14.8756304}, //
+
17546 {1.46149004, 14.8760004}, //
+
17547 {1.45006001, 14.8766298}, //
+
17548 {1.43887997, 14.8774996}, //
+
17549 {1.42795002, 14.8786297}, //
+
17550 {1.41727996, 14.8800097}, //
+
17551 {1.40684998, 14.8816404}, //
+
17552 {1.39668, 14.8835201}, //
+
17553 {1.38674998, 14.8856497}, //
+
17554 {1.37696004, 14.8879995}, //
+
17555 {1.36716998, 14.8905201}, //
+
17556 {1.35738003, 14.8931999}, //
+
17557 {1.34757996, 14.8960505}, //
+
17558 {1.33779001, 14.8990698}, //
+
17559 {1.32799006, 14.9022503}, //
+
17560 {1.31819999, 14.9055996}, //
+
17561 {1.30840003, 14.9091196}, //
+
17562 {1.29859996, 14.9127998}, //
+
17563 {1.29706001, 14.9128399}, //
+
17564 {1.29542994, 14.9129696}, //
+
17565 {1.29372001, 14.9131699}, //
+
17566 {1.29191995, 14.9134598}, //
+
17567 {1.29004002, 14.9138298}, //
+
17568 {1.28806996, 14.9142904}, //
+
17569 {1.28601003, 14.9148302}, //
+
17570 {1.28386998, 14.9154501}, //
+
17571 {1.28164995, 14.9161501}, //
+
17572 {1.27419996, 14.91821}, //
+
17573 {1.26691997, 14.9198399}, //
+
17574 {1.25979996, 14.9210596}, //
+
17575 {1.25285006, 14.9218597}, //
+
17576 {1.24607003, 14.9222403}, //
+
17577 {1.23944998, 14.9221897}, //
+
17578 {1.23300004, 14.92173}, //
+
17579 {1.22671998, 14.9208498}, //
+
17580 {1.22060001, 14.9195499}, //
+
17581 {1.21461999, 14.9179697}, //
+
17582 {1.20871997, 14.9162102}, //
+
17583 {1.20290995, 14.9142904}, //
+
17584 {1.19717002, 14.9122}, //
+
17585 {1.19151998, 14.9099398}, //
+
17586 {1.18596005, 14.9075098}, //
+
17587 {1.18046999, 14.9049101}, //
+
17588 {1.17507005, 14.9021397}, //
+
17589 {1.16974998, 14.8992004}, //
+
17590 {1.16673994, 14.8984098}, //
+
17591 {1.16373003, 14.8975401}, //
+
17592 {1.16071999, 14.8965797}, //
+
17593 {1.15770996, 14.8955402}, //
+
17594 {1.15469003, 14.8944101}, //
+
17595 {1.15167999, 14.8931999}, //
+
17596 {1.14866996, 14.8919001}, //
+
17597 {1.14566004, 14.8905201}, //
+
17598 {1.14265001, 14.8890495}, //
+
17599 {1.13420999, 14.8874598}, //
+
17600 {1.12548006, 14.8856897}, //
+
17601 {1.11645997, 14.88377}, //
+
17602 {1.10713995, 14.88167}, //
+
17603 {1.09753001, 14.8794098}, //
+
17604 {1.08763003, 14.8769798}, //
+
17605 {1.07743001, 14.8743896}, //
+
17606 {1.06693995, 14.8716297}, //
+
17607 {1.05614996, 14.8687}, //
+
17608 {1.04542005, 14.8656902}, //
+
17609 {1.03506005, 14.8626804}, //
+
17610 {1.02507997, 14.8596697}, //
+
17611 {1.01547003, 14.8566599}, //
+
17612 {1.00625002, 14.8536396}, //
+
17613 {0.997394025, 14.8506298}, //
+
17614 {0.988919973, 14.84762}, //
+
17615 {0.980822027, 14.8446102}, //
+
17616 {0.973100007, 14.8416004}, //
+
17617 {0.96548301, 14.8391705}, //
+
17618 {0.957697988, 14.8364}, //
+
17619 {0.949743986, 14.8332901}, //
+
17620 {0.941622972, 14.8298597}, //
+
17621 {0.933335006, 14.8260803}, //
+
17622 {0.924878001, 14.8219805}, //
+
17623 {0.916252971, 14.8175402}, //
+
17624 {0.907459974, 14.8127604}, //
+
17625 {0.898500025, 14.8076496}, //
+
17626 {0.88854301, 14.8023796}, //
+
17627 {0.878251016, 14.7971096}, //
+
17628 {0.867622018, 14.7918396}, //
+
17629 {0.856657982, 14.7865696}, //
+
17630 {0.845358014, 14.7812996}, //
+
17631 {0.833721995, 14.7760296}, //
+
17632 {0.821750998, 14.77075}, //
+
17633 {0.809442997, 14.76548}, //
+
17634 {0.796800017, 14.7601995}, //
+
17635 {0.789601028, 14.7571898}, //
+
17636 {0.783071995, 14.75418}, //
+
17637 {0.77721101, 14.7511597}, //
+
17638 {0.772019982, 14.7481499}, //
+
17639 {0.767498016, 14.7451296}, //
+
17640 {0.76364398, 14.7421103}, //
+
17641 {0.760460019, 14.73909}, //
+
17642 {0.757946014, 14.7360697}, //
+
17643 {0.756099999, 14.7330503}, //
+
17644 {0.754767001, 14.7300797}, //
+
17645 {0.753767014, 14.72719}, //
+
17646 {0.753099978, 14.72439}, //
+
17647 {0.752767026, 14.7216702}, //
+
17648 {0.752767026, 14.7190304}, //
+
17649 {0.753099978, 14.7164698}, //
+
17650 {0.753767014, 14.7139997}, //
+
17651 {0.754767001, 14.7116098}, //
+
17652 {0.756099999, 14.7093}, //
+
17653 {0.757694006, 14.7070904}, //
+
17654 {0.759455979, 14.7049503}, //
+
17655 {0.761382997, 14.7029104}, //
+
17656 {0.763477981, 14.7009401}, //
+
17657 {0.765739024, 14.6990604}, //
+
17658 {0.768167019, 14.6972599}, //
+
17659 {0.770761013, 14.6955404}, //
+
17660 {0.773522019, 14.6939001}, //
+
17661 {0.776449978, 14.6923504}, //
+
17662 {0.779377997, 14.6909304}, //
+
17663 {0.782139003, 14.6896801}, //
+
17664 {0.784732997, 14.6885996}, //
+
17665 {0.787160993, 14.6876802}, //
+
17666 {0.789421976, 14.6869297}, //
+
17667 {0.791517019, 14.6863499}, //
+
17668 {0.793443978, 14.6859303}, //
+
17669 {0.79520601, 14.6856804}, //
+
17670 {0.796800017, 14.6856003}, //
+
17671 {0.800062001, 14.6857901}, //
+
17672 {0.803826988, 14.6863499}, //
+
17673 {0.808094025, 14.6872902}, //
+
17674 {0.812864006, 14.6886101}, //
+
17675 {0.818135977, 14.6903095}, //
+
17676 {0.823911011, 14.69238}, //
+
17677 {0.830187976, 14.6948299}, //
+
17678 {0.836968005, 14.69765}, //
+
17679 {0.844250023, 14.7008495}, //
+
17680 {0.851783991, 14.7043104}, //
+
17681 {0.859318972, 14.7079}, //
+
17682 {0.866855979, 14.7116098}, //
+
17683 {0.874392986, 14.7154398}, //
+
17684 {0.88193202, 14.7193899}, //
+
17685 {0.889472008, 14.7234697}, //
+
17686 {0.897014022, 14.7276697}, //
+
17687 {0.904555976, 14.7320004}, //
+
17688 {0.912100017, 14.7364502}, //
+
17689 {0.917954981, 14.7393904}, //
+
17690 {0.923475027, 14.7421598}, //
+
17691 {0.928660989, 14.7447596}, //
+
17692 {0.933511972, 14.7471905}, //
+
17693 {0.938028991, 14.7494497}, //
+
17694 {0.942210972, 14.7515402}, //
+
17695 {0.946058989, 14.7534599}, //
+
17696 {0.949572027, 14.7552204}, //
+
17697 {0.952750027, 14.7567997}, //
+
17698 {0.956871986, 14.7575302}, //
+
17699 {0.961705983, 14.7582302}, //
+
17700 {0.96724999, 14.7588797}, //
+
17701 {0.973505974, 14.75949}, //
+
17702 {0.980472028, 14.7600498}, //
+
17703 {0.988150001, 14.7605801}, //
+
17704 {0.996538997, 14.7610598}, //
+
17705 {1.00564003, 14.7615004}, //
+
17706 {1.01545, 14.7618999}, //
+
17707 {1.02570999, 14.7622604}, //
+
17708 {1.03613997, 14.7625704}, //
+
17709 {1.04673004, 14.7628403}, //
+
17710 {1.05748999, 14.7630796}, //
+
17711 {1.06842005, 14.7632599}, //
+
17712 {1.07951999, 14.7634096}, //
+
17713 {1.09078002, 14.7635202}, //
+
17714 {1.10221004, 14.7635803}, //
+
17715 {1.11380005, 14.7636003}, //
+
17716 {1.22064996, 14.7636003}, //
+
17717 {1.22577, 14.7634296}, //
+
17718 {1.23210001, 14.7629299}, //
+
17719 {1.23965001, 14.7620897}, //
+
17720 {1.24840999, 14.76091}, //
+
17721 {1.25838995, 14.7594004}, //
+
17722 {1.26958001, 14.7575598}, //
+
17723 {1.28199005, 14.7553701}, //
+
17724 {1.29560995, 14.7528496}, //
+
17725 {1.31044996, 14.75}, //
+
17726 {1.32608998, 14.7468596}, //
+
17727 {1.34211004, 14.7434702}, //
+
17728 {1.35851002, 14.73983}, //
+
17729 {1.37527001, 14.73594}, //
+
17730 {1.39242005, 14.7318001}, //
+
17731 {1.40994, 14.7273998}, //
+
17732 {1.42782998, 14.7227497}, //
+
17733 {1.4461, 14.7178497}, //
+
17734 {1.46475005, 14.7126999}, //
+
17735 {1.48336995, 14.7073898}, //
+
17736 {1.50158, 14.7019997}, //
+
17737 {1.51936996, 14.6965199}, //
+
17738 {1.53674996, 14.6909599}, //
+
17739 {1.55369997, 14.6853199}, //
+
17740 {1.57024002, 14.6795902}, //
+
17741 {1.58635998, 14.6737804}, //
+
17742 {1.60205996, 14.6678801}, //
+
17743 {1.61734998, 14.6618996}, //
+
17744 {1.65900004, 14.6447802}, //
+
17745 {1.69805002, 14.6280699}, //
+
17746 {1.73450994, 14.6117802}, //
+
17747 {1.76837003, 14.5959101}, //
+
17748 {1.79963005, 14.5804596}, //
+
17749 {1.82831001, 14.5654297}, //
+
17750 {1.85438001, 14.5508204}, //
+
17751 {1.87785995, 14.5366297}, //
+
17752 {1.89874995, 14.52285}, //
+
17753 {1.91456997, 14.5095797}, //
+
17754 {1.93039, 14.4953899}, //
+
17755 {1.94622004, 14.4802799}, //
+
17756 {1.96203995, 14.4642496}, //
+
17757 {1.97785997, 14.4473}, //
+
17758 {1.99368, 14.42943}, //
+
17759 {2.00951004, 14.4106398}, //
+
17760 {2.02533007, 14.3909302}, //
+
17761 {2.04115009, 14.3703003}, //
+
17762 {2.04646993, 14.3635101}, //
+
17763 {2.05187011, 14.35672}, //
+
17764 {2.05735993, 14.3499403}, //
+
17765 {2.06292009, 14.3431501}, //
+
17766 {2.0685699, 14.3363705}, //
+
17767 {2.07431006, 14.3295898}, //
+
17768 {2.08012009, 14.3228102}, //
+
17769 {2.08601999, 14.3160295}, //
+
17770 {2.09200001, 14.3092499}, //
+
17771 {2.09816003, 14.2997904}, //
+
17772 {2.10456991, 14.2894897}, //
+
17773 {2.1112299, 14.2783499}, //
+
17774 {2.11813998, 14.2663803}, //
+
17775 {2.12529993, 14.2535601}, //
+
17776 {2.13270998, 14.2399197}, //
+
17777 {2.14036989, 14.2254295}, //
+
17778 {2.14828992, 14.2101097}, //
+
17779 {2.15645003, 14.1939497}, //
+
17780 {2.16462994, 14.1774197}, //
+
17781 {2.17261004, 14.1609802}, //
+
17782 {2.18037009, 14.1446199}, //
+
17783 {2.18793011, 14.1283398}, //
+
17784 {2.19527006, 14.1121397}, //
+
17785 {2.20240998, 14.0960197}, //
+
17786 {2.20933008, 14.0799799}, //
+
17787 {2.21604991, 14.0640202}, //
+
17788 {2.22254992, 14.0481501}, //
+
17789 {2.22868991, 14.0327501}, //
+
17790 {2.23428011, 14.0181799}, //
+
17791 {2.23933005, 14.0044498}, //
+
17792 {2.24382997, 13.99156}, //
+
17793 {2.24778008, 13.9794998}, //
+
17794 {2.25118995, 13.9682798}, //
+
17795 {2.25406003, 13.9579}, //
+
17796 {2.25638008, 13.9483604}, //
+
17797 {2.2581501, 13.9396496}, //
+
17798 {2.26006007, 13.9298}, //
+
17799 {2.26275992, 13.9198198}, //
+
17800 {2.26625991, 13.9097099}, //
+
17801 {2.27055001, 13.8994799}, //
+
17802 {2.27563, 13.8891201}, //
+
17803 {2.28151011, 13.8786297}, //
+
17804 {2.28818011, 13.8680096}, //
+
17805 {2.29563999, 13.8572702}, //
+
17806 {2.3039, 13.8464003}, //
+
17807 {2.3125, 13.8356199}, //
+
17808 {2.32098007, 13.82514}, //
+
17809 {2.32933998, 13.81495}, //
+
17810 {2.33756995, 13.8050499}, //
+
17811 {2.34566998, 13.7954502}, //
+
17812 {2.35366011, 13.78613}, //
+
17813 {2.36151004, 13.7771101}, //
+
17814 {2.36924005, 13.7683897}, //
+
17815 {2.37684989, 13.7599497}, //
+
17816 {2.38230991, 13.7545605}, //
+
17817 {2.38813996, 13.74891}, //
+
17818 {2.39435005, 13.7430096}, //
+
17819 {2.40093994, 13.7368603}, //
+
17820 {2.40791011, 13.7304497}, //
+
17821 {2.41525006, 13.7237902}, //
+
17822 {2.42297006, 13.7168798}, //
+
17823 {2.43107009, 13.7097197}, //
+
17824 {2.43954992, 13.7023001}, //
+
17825 {2.44814992, 13.69487}, //
+
17826 {2.45662999, 13.6876497}, //
+
17827 {2.46497989, 13.6806402}, //
+
17828 {2.4732101, 13.6738396}, //
+
17829 {2.48130989, 13.6672401}, //
+
17830 {2.48927999, 13.6608601}, //
+
17831 {2.49712992, 13.6546803}, //
+
17832 {2.50484991, 13.6487103}, //
+
17833 {2.51244998, 13.6429501}, //
+
17834 {2.51964998, 13.63762}, //
+
17835 {2.52618003, 13.6329203}, //
+
17836 {2.53204012, 13.6288404}, //
+
17837 {2.53723001, 13.6253901}, //
+
17838 {2.54174995, 13.62257}, //
+
17839 {2.54560995, 13.6203699}, //
+
17840 {2.54878998, 13.6188002}, //
+
17841 {2.55130005, 13.6178598}, //
+
17842 {2.55314994, 13.6175499}, //
+
17843 {2.55398989, 13.6170197}, //
+
17844 {2.55499005, 13.6169596}, //
+
17845 {2.55616999, 13.6173601}, //
+
17846 {2.5575099, 13.6182098}, //
+
17847 {2.55901003, 13.6195297}, //
+
17848 {2.56067991, 13.6213102}, //
+
17849 {2.56252003, 13.6235399}, //
+
17850 {2.5645299, 13.6262398}, //
+
17851 {2.56669998, 13.6294003}, //
+
17852 {2.5689199, 13.6328201}, //
+
17853 {2.57105994, 13.6362801}, //
+
17854 {2.57312012, 13.63978}, //
+
17855 {2.57508993, 13.6433296}, //
+
17856 {2.5769701, 13.6469097}, //
+
17857 {2.57876992, 13.6505299}, //
+
17858 {2.5804801, 13.6541996}, //
+
17859 {2.58210993, 13.6578999}, //
+
17860 {2.58365011, 13.6616497}, //
+
17861 {2.58507991, 13.6653299}, //
+
17862 {2.58633995, 13.6688499}, //
+
17863 {2.58743, 13.6721897}, //
+
17864 {2.58835006, 13.6753702}, //
+
17865 {2.5891099, 13.67838}, //
+
17866 {2.58968997, 13.6812296}, //
+
17867 {2.59011006, 13.6838999}, //
+
17868 {2.59036994, 13.68641}, //
+
17869 {2.59045005, 13.6887503}, //
+
17870 {2.59161997, 13.6926403}, //
+
17871 {2.59210992, 13.6967802}, //
+
17872 {2.59193993, 13.7011805}, //
+
17873 {2.59109998, 13.7058201}, //
+
17874 {2.58959007, 13.7107201}, //
+
17875 {2.58740997, 13.7158604}, //
+
17876 {2.58455992, 13.7212601}, //
+
17877 {2.58103991, 13.7269001}, //
+
17878 {2.57684994, 13.7327995}, //
+
17879 {2.57224989, 13.7389603}, //
+
17880 {2.5674901, 13.7453699}, //
+
17881 {2.56256008, 13.7520304}, //
+
17882 {2.55745006, 13.7589397}, //
+
17883 {2.55218005, 13.7660999}, //
+
17884 {2.54674006, 13.77351}, //
+
17885 {2.54113007, 13.7811699}, //
+
17886 {2.53535008, 13.7890902}, //
+
17887 {2.52940011, 13.7972498}, //
+
17888 {2.52865005, 13.7980099}, //
+
17889 {2.52788997, 13.7987604}, //
+
17890 {2.5271399, 13.7995195}, //
+
17891 {2.52639008, 13.8002701}, //
+
17892 {2.52564001, 13.8010302}, //
+
17893 {2.52488995, 13.8017797}, //
+
17894 {2.52413988, 13.8025398}, //
+
17895 {2.52340007, 13.8032904}, //
+
17896 {2.52265, 13.8040504}, //
+
17897 {2.51811004, 13.8096399}, //
+
17898 {2.51352, 13.8158598}, //
+
17899 {2.50888991, 13.82271}, //
+
17900 {2.50423002, 13.8301802}, //
+
17901 {2.49951005, 13.8382797}, //
+
17902 {2.49476004, 13.8470097}, //
+
17903 {2.48996997, 13.8563604}, //
+
17904 {2.48513007, 13.8663397}, //
+
17905 {2.48024988, 13.8769503}, //
+
17906 {2.47533011, 13.8879404}, //
+
17907 {2.47037005, 13.8990498}, //
+
17908 {2.46535993, 13.9102802}, //
+
17909 {2.46030998, 13.9216499}, //
+
17910 {2.45523, 13.9331398}, //
+
17911 {2.45008993, 13.9447498}, //
+
17912 {2.44492006, 13.9564896}, //
+
17913 {2.4397099, 13.9683599}, //
+
17914 {2.43444991, 13.9803495}, //
+
17915 {2.42779994, 13.99508}, //
+
17916 {2.42140007, 14.0091496}, //
+
17917 {2.41524005, 14.0225401}, //
+
17918 {2.4093399, 14.0352602}, //
+
17919 {2.4036901, 14.0473204}, //
+
17920 {2.39828992, 14.0587101}, //
+
17921 {2.39315009, 14.0694199}, //
+
17922 {2.38825011, 14.0794697}, //
+
17923 {2.3836, 14.08885}, //
+
17924 {2.37348008, 14.1046305}, //
+
17925 {2.36267996, 14.1203299}, //
+
17926 {2.35121989, 14.1359396}, //
+
17927 {2.3390801, 14.1514797}, //
+
17928 {2.32628012, 14.1669302}, //
+
17929 {2.31279993, 14.1822901}, //
+
17930 {2.29865003, 14.1975803}, //
+
17931 {2.28383994, 14.21278}, //
+
17932 {2.26834989, 14.2278996}, //
+
17933 {2.26101995, 14.2345505}, //
+
17934 {2.25410008, 14.2409496}, //
+
17935 {2.24761009, 14.2471104}, //
+
17936 {2.24152994, 14.2530098}, //
+
17937 {2.23586988, 14.2586603}, //
+
17938 {2.23063993, 14.26406}, //
+
17939 {2.22582006, 14.2692003}, //
+
17940 {2.22143006, 14.2741003}, //
+
17941 {2.2174499, 14.2787504}, //
+
17942 {2.2105, 14.2882404}, //
+
17943 {2.2032299, 14.2986603}, //
+
17944 {2.19561005, 14.3100004}, //
+
17945 {2.18765998, 14.3222599}, //
+
17946 {2.17937994, 14.3354397}, //
+
17947 {2.17075992, 14.3495502}, //
+
17948 {2.16180992, 14.3645802}, //
+
17949 {2.15251994, 14.3805304}, //
+
17950 {2.14289999, 14.3973999}, //
+
17951 {2.13314009, 14.4157696}, //
+
17952 {2.12347007, 14.4332304}, //
+
17953 {2.11387992, 14.4497604}, //
+
17954 {2.10437012, 14.4653797}, //
+
17955 {2.09494996, 14.4800701}, //
+
17956 {2.08560991, 14.4938402}, //
+
17957 {2.07635999, 14.5066996}, //
+
17958 {2.06718993, 14.51863}, //
+
17959 {2.05809999, 14.5296497}, //
+
17960 {2.05261993, 14.5370598}, //
+
17961 {2.04673004, 14.5442104}, //
+
17962 {2.04041004, 14.5511198}, //
+
17963 {2.03367996, 14.5577698}, //
+
17964 {2.02652001, 14.5641699}, //
+
17965 {2.01893997, 14.5703201}, //
+
17966 {2.01095009, 14.57621}, //
+
17967 {2.0025301, 14.5818596}, //
+
17968 {1.99370003, 14.5872498}, //
+
17969 {1.98474002, 14.5924397}, //
+
17970 {1.97595, 14.5974703}, //
+
17971 {1.96731997, 14.6023302}, //
+
17972 {1.95887005, 14.6070204}, //
+
17973 {1.95058, 14.6115398}, //
+
17974 {1.94245994, 14.6158895}, //
+
17975 {1.93449998, 14.62008}, //
+
17976 {1.92672002, 14.6240997}, //
+
17977 {1.91910005, 14.6279497}, //
+
17978 {1.91394997, 14.63097}, //
+
17979 {1.90904999, 14.6339903}, //
+
17980 {1.90439999, 14.6370096}, //
+
17981 {1.89999998, 14.6400299}, //
+
17982 {1.89585996, 14.6430502}, //
+
17983 {1.89197004, 14.64606}, //
+
17984 {1.88832998, 14.6490803}, //
+
17985 {1.88494003, 14.6520901}, //
+
17986 {1.88180006, 14.6550999}, //
+
17987 {1.87079, 14.6604605}, //
+
17988 {1.85887003, 14.6659899}, //
+
17989 {1.84601998, 14.6716805}, //
+
17990 {1.83223999, 14.6775398}, //
+
17991 {1.81754994, 14.6835699}, //
+
17992 {1.80192995, 14.6897697}, //
+
17993 {1.78539002, 14.6961298}, //
+
17994 {1.76793003, 14.7026596}, //
+
17995 {1.74954998, 14.7093496}, //
+
17996 {1.74202001, 14.7116899}, //
+
17997 {1.73448002, 14.7142}, //
+
17998 {1.72695005, 14.7168703}, //
+
17999 {1.71941996, 14.7197199}, //
+
18000 {1.71187997, 14.7227297}, //
+
18001 {1.70434999, 14.7259102}, //
+
18002 {1.69682002, 14.72925}, //
+
18003 {1.68928003, 14.73277}, //
+
18004 {1.68175006, 14.7364502}, //
+
18005 {1.66893995, 14.7409296}, //
+
18006 {1.65612996, 14.7453299}, //
+
18007 {1.64331996, 14.7496405}, //
+
18008 {1.63050997, 14.75387}, //
+
18009 {1.61768997, 14.7580099}, //
+
18010 {1.60487998, 14.7620697}, //
+
18011 {1.59206998, 14.7660503}, //
+
18012 {1.57925999, 14.7699404}, //
+
18013 {1.56645, 14.7737503}, //
+
18014 {1.55087996, 14.7775602}, //
+
18015 {1.53580999, 14.7814503}, //
+
18016 {1.52124, 14.78543}, //
+
18017 {1.50717998, 14.7894897}, //
+
18018 {1.49362004, 14.7936296}, //
+
18019 {1.48055995, 14.7978601}, //
+
18020 {1.46800005, 14.8021698}, //
+
18021 {1.45595002, 14.8065701}, //
+
18022 {1.44439995, 14.8110504}, //
+
18023 {1.43431997, 14.8160601}, //
+
18024 {1.42365003, 14.8205204}, //
+
18025 {1.41238999, 14.8244305}, //
+
18026 {1.40053999, 14.8278103}, //
+
18027 {1.38811004, 14.8306303}, //
+
18028 {1.37509, 14.8329201}, //
+
18029 {1.36148, 14.8346596}, //
+
18030 {1.34728003, 14.8358498}, //
+
18031 {1.33249998, 14.8365002}, //
+
18032 {1.31760001, 14.8368101}, //
+
18033 {1.30304003, 14.8369999}, //
+
18034 {1.28881001, 14.8370705}, //
+
18035 {1.27490997, 14.8369999}, //
+
18036 {1.26135004, 14.8368101}, //
+
18037 {1.24811995, 14.8365002}, //
+
18038 {1.23522997, 14.8360596}, //
+
18039 {1.22266996, 14.8354902}, //
+
18040 {1.21045005, 14.8347998}, //
+
18041 {1.13584995, 14.8347998}, //
+
18042 {1.12847996, 14.8347797}, //
+
18043 {1.12144995, 14.8347197}, //
+
18044 {1.11476004, 14.83461}, //
+
18045 {1.10838997, 14.8344603}, //
+
18046 {1.10237002, 14.83428}, //
+
18047 {1.09667003, 14.8340397}, //
+
18048 {1.09131002, 14.8337698}, //
+
18049 {1.08629, 14.8334599}, //
+
18050 {1.08159995, 14.8331003}, //
+
18051 {1.07732999, 14.8327398}, //
+
18052 {1.07028997, 14.83216}, //
+
18053 {1.06753004, 14.8319197}, //
+
18054 {1.06350994, 14.8315897}, //
+
18055 {1.06225002, 14.83148}, //
+
18056 {1.06124997, 14.8313999}, //
+
18057 {1.06146002, 14.8315001}, //
+
18058 {1.06877995, 14.8351603}, //
+
18059 {1.07149994, 14.8365097}, //
+
18060 {1.07464004, 14.8380804}, //
+
18061 {1.07819998, 14.8398504}, //
+
18062 {1.08229995, 14.8416796}, //
+
18063 {1.08706999, 14.84338}, //
+
18064 {1.09252, 14.8449497}, //
+
18065 {1.09862995, 14.8464003}, //
+
18066 {1.10540998, 14.8477201}, //
+
18067 {1.11286998, 14.8489199}, //
+
18068 {1.12099004, 14.8499899}, //
+
18069 {1.12978995, 14.8509302}, //
+
18070 {1.13925004, 14.8517504}, //
+
18071 {1.15705001, 14.8531799}, //
+
18072 {1.17425001, 14.8544397}, //
+
18073 {1.19087005, 14.8555298}, //
+
18074 {1.2069, 14.8564501}, //
+
18075 {1.22235, 14.8572102}, //
+
18076 {1.23721004, 14.85779}, //
+
18077 {1.25146997, 14.8582096}, //
+
18078 {1.26515996, 14.85847}, //
+
18079 {1.27824998, 14.8585501}, //
+
18080 {1.28533006, 14.8584204}, //
+
18081 {1.29299998, 14.8580503}, //
+
18082 {1.30124998, 14.85742}, //
+
18083 {1.31008995, 14.8565397}, //
+
18084 {1.31950998, 14.8554001}, //
+
18085 {1.32951999, 14.8540201}, //
+
18086 {1.34010994, 14.8523798}, //
+
18087 {1.35128999, 14.8504896}, //
+
18088 {1.36304998, 14.8483496}, //
+
18089 {1.37567997, 14.84618}, //
+
18090 {1.38797998, 14.8441696}, //
+
18091 {1.39995003, 14.84233}, //
+
18092 {1.41157997, 14.8406601}, //
+
18093 {1.42288005, 14.83916}, //
+
18094 {1.43385005, 14.8378201}, //
+
18095 {1.44447994, 14.8366404}, //
+
18096 {1.45477998, 14.83564}, //
+
18097 {1.46475005, 14.8347998}, //
+
18098 {1.47693002, 14.8339596}, //
+
18099 {1.48935997, 14.8329601}, //
+
18100 {1.50204003, 14.8317804}, //
+
18101 {1.51497996, 14.8304396}, //
+
18102 {1.52815998, 14.8289404}, //
+
18103 {1.54158998, 14.8272696}, //
+
18104 {1.55527997, 14.8254299}, //
+
18105 {1.56921005, 14.8234196}, //
+
18106 {1.58340001, 14.82125}, //
+
18107 {1.59449995, 14.8190699}, //
+
18108 {1.60518003, 14.81705}, //
+
18109 {1.61544001, 14.8152103}, //
+
18110 {1.62529004, 14.81353}, //
+
18111 {1.63470995, 14.8120203}, //
+
18112 {1.64371002, 14.8106699}, //
+
18113 {1.65228999, 14.8094997}, //
+
18114 {1.66046, 14.8084898}, //
+
18115 {1.66820002, 14.8076496}, //
+
18116 {1.67682004, 14.8066702}, //
+
18117 {1.68612003, 14.8052397}, //
+
18118 {1.69607997, 14.80334}, //
+
18119 {1.70670998, 14.8009796}, //
+
18120 {1.71800995, 14.7981596}, //
+
18121 {1.72997999, 14.7948704}, //
+
18122 {1.74261999, 14.7911301}, //
+
18123 {1.75592005, 14.7869196}, //
+
18124 {1.76989996, 14.7822504}, //
+
18125 {1.78389001, 14.7773705}, //
+
18126 {1.79719996, 14.7725296}, //
+
18127 {1.80984998, 14.7677402}, //
+
18128 {1.82183003, 14.76299}, //
+
18129 {1.83313, 14.7582703}, //
+
18130 {1.84377003, 14.7536097}, //
+
18131 {1.85372996, 14.7489796}, //
+
18132 {1.86302996, 14.7443895}, //
+
18133 {1.87164998, 14.73985}, //
+
18134 {1.87787998, 14.7354097}, //
+
18135 {1.88452995, 14.7311401}, //
+
18136 {1.89161003, 14.7270403}, //
+
18137 {1.89909995, 14.7230997}, //
+
18138 {1.90700996, 14.7193403}, //
+
18139 {1.91533995, 14.7157402}, //
+
18140 {1.92409003, 14.7123098}, //
+
18141 {1.93325996, 14.7090502}, //
+
18142 {1.94284999, 14.7059498}, //
+
18143 {1.9598, 14.7004604}, //
+
18144 {1.97599006, 14.6945601}, //
+
18145 {1.99143004, 14.6882401}, //
+
18146 {2.00611997, 14.6815004}, //
+
18147 {2.02006006, 14.6743498}, //
+
18148 {2.03325009, 14.66677}, //
+
18149 {2.04569006, 14.6587801}, //
+
18150 {2.05736995, 14.6503696}, //
+
18151 {2.06830001, 14.6415501}, //
+
18152 {2.07606006, 14.6342001}, //
+
18153 {2.08429003, 14.6257095}, //
+
18154 {2.09296989, 14.6161003}, //
+
18155 {2.10211992, 14.60536}, //
+
18156 {2.11172009, 14.5934896}, //
+
18157 {2.12178993, 14.5804796}, //
+
18158 {2.13231993, 14.56635}, //
+
18159 {2.14330006, 14.5510902}, //
+
18160 {2.15475011, 14.5347004}, //
+
18161 {2.1663599, 14.5179005}, //
+
18162 {2.17785001, 14.5013905}, //
+
18163 {2.18921995, 14.4851799}, //
+
18164 {2.20044994, 14.4692497}, //
+
18165 {2.21156001, 14.45362}, //
+
18166 {2.22254992, 14.4382801}, //
+
18167 {2.23340988, 14.4232302}, //
+
18168 {2.24413991, 14.4084702}, //
+
18169 {2.25475001, 14.3940001}, //
+
18170 {2.25919008, 14.3866796}, //
+
18171 {2.26345992, 14.3797703}, //
+
18172 {2.26756001, 14.3732796}, //
+
18173 {2.27150011, 14.3672104}, //
+
18174 {2.27525997, 14.3615599}, //
+
18175 {2.27886009, 14.3563299}, //
+
18176 {2.28228998, 14.3515196}, //
+
18177 {2.28555012, 14.3471298}, //
+
18178 {2.28865004, 14.3431501}, //
+
18179 {2.29355001, 14.3361998}, //
+
18180 {2.29920006, 14.3289204}, //
+
18181 {2.30560994, 14.32131}, //
+
18182 {2.31276989, 14.3133497}, //
+
18183 {2.32068992, 14.3050604}, //
+
18184 {2.32936001, 14.2964401}, //
+
18185 {2.33878994, 14.2874804}, //
+
18186 {2.34896994, 14.2781801}, //
+
18187 {2.3599, 14.2685499}, //
+
18188 {2.37555003, 14.2539902}, //
+
18189 {2.39087009, 14.2389202}, //
+
18190 {2.40585995, 14.2233601}, //
+
18191 {2.42050004, 14.2072897}, //
+
18192 {2.43480992, 14.1907101}, //
+
18193 {2.44879007, 14.1736403}, //
+
18194 {2.46243, 14.1560602}, //
+
18195 {2.47572994, 14.1379805}, //
+
18196 {2.48869991, 14.1194}, //
+
18197 {2.49628997, 14.1077805}, //
+
18198 {2.50395012, 14.09552}, //
+
18199 {2.51169991, 14.0826397}, //
+
18200 {2.51953006, 14.0691404}, //
+
18201 {2.52744007, 14.0550003}, //
+
18202 {2.53542995, 14.0402403}, //
+
18203 {2.54350996, 14.0248604}, //
+
18204 {2.55166006, 14.0088396}, //
+
18205 {2.55990005, 13.9921999}, //
+
18206 {2.56807995, 13.97542}, //
+
18207 {2.57606006, 13.9589796}, //
+
18208 {2.5838201, 13.9428701}, //
+
18209 {2.59137988, 13.9270897}, //
+
18210 {2.59872007, 13.9116402}, //
+
18211 {2.60585999, 13.8965302}, //
+
18212 {2.61278009, 13.8817596}, //
+
18213 {2.61949992, 13.8673096}, //
+
18214 {2.62599993, 13.8532}, //
+
18215 {2.63213992, 13.8398304}, //
+
18216 {2.63772988, 13.82759}, //
+
18217 {2.64278007, 13.8164797}, //
+
18218 {2.64728999, 13.8065004}, //
+
18219 {2.65124989, 13.7976503}, //
+
18220 {2.65467, 13.7899303}, //
+
18221 {2.65754008, 13.7833405}, //
+
18222 {2.65986991, 13.7778797}, //
+
18223 {2.66164994, 13.77355}, //
+
18224 {2.66230011, 13.7705297}, //
+
18225 {2.66273999, 13.7675104}, //
+
18226 {2.66297007, 13.7644901}, //
+
18227 {2.66299009, 13.7614698}, //
+
18228 {2.66280007, 13.7584496}, //
+
18229 {2.66241002, 13.7554398}, //
+
18230 {2.66179991, 13.7524204}, //
+
18231 {2.66097999, 13.7494097}, //
+
18232 {2.65995002, 13.7463999}, //
+
18233 {2.65875006, 13.7433901}, //
+
18234 {2.65742993, 13.7403803}, //
+
18235 {2.65598989, 13.7373695}, //
+
18236 {2.6544199, 13.7343597}, //
+
18237 {2.65271997, 13.7313404}, //
+
18238 {2.6509099, 13.7283297}, //
+
18239 {2.64896011, 13.7253199}, //
+
18240 {2.64688993, 13.7223101}, //
+
18241 {2.64470005, 13.7193003}, //
+
18242 {2.64176989, 13.7133102}, //
+
18243 {2.63900995, 13.7074003}, //
+
18244 {2.63642001, 13.70158}, //
+
18245 {2.63399005, 13.6958399}, //
+
18246 {2.63173008, 13.6901798}, //
+
18247 {2.62963009, 13.6846104}, //
+
18248 {2.6277101, 13.6791201}, //
+
18249 {2.62594008, 13.6737204}, //
+
18250 {2.62435007, 13.6683998}, //
+
18251 {2.62456012, 13.6591101}, //
+
18252 {2.62519002, 13.6493301}, //
+
18253 {2.62623, 13.6390305}, //
+
18254 {2.62770009, 13.6282396}, //
+
18255 {2.62958002, 13.6169395}, //
+
18256 {2.63188004, 13.6051302}, //
+
18257 {2.63459992, 13.5928297}, //
+
18258 {2.6377399, 13.5800104}, //
+
18259 {2.64129996, 13.5667}, //
+
18260 {2.6421001, 13.5613804}, //
+
18261 {2.6429801, 13.5559797}, //
+
18262 {2.64393997, 13.5504904}, //
+
18263 {2.64497995, 13.5449305}, //
+
18264 {2.64611006, 13.5392799}, //
+
18265 {2.64732003, 13.5335398}, //
+
18266 {2.64861989, 13.52773}, //
+
18267 {2.64999008, 13.5218296}, //
+
18268 {2.65144992, 13.5158501}, //
+
18269 {2.65270996, 13.5025797}, //
+
18270 {2.65347004, 13.48839}, //
+
18271 {2.6537199, 13.4732704}, //
+
18272 {2.65347004, 13.4572401}, //
+
18273 {2.65271997, 13.44028}, //
+
18274 {2.65146995, 13.42241}, //
+
18275 {2.64971995, 13.4036102}, //
+
18276 {2.64745998, 13.3838902}, //
+
18277 {2.64470005, 13.3632498}, //
+
18278 {2.64393997, 13.3542204}, //
+
18279 {2.64318991, 13.3451796}, //
+
18280 {2.64243007, 13.3361397}, //
+
18281 {2.64168, 13.3271103}, //
+
18282 {2.64091992, 13.3180704}, //
+
18283 {2.6401701, 13.3090296}, //
+
18284 {2.63941002, 13.2999897}, //
+
18285 {2.63865995, 13.2909403}, //
+
18286 {2.63790011, 13.2819004}, //
+
18287 {2.63698006, 13.2707901}, //
+
18288 {2.63572001, 13.2600498}, //
+
18289 {2.63413, 13.2496901}, //
+
18290 {2.6322, 13.2397099}, //
+
18291 {2.62994003, 13.2301102}, //
+
18292 {2.62734008, 13.2208796}, //
+
18293 {2.62440991, 13.2120304}, //
+
18294 {2.62115002, 13.2035503}, //
+
18295 {2.6175499, 13.1954498}, //
+
18296 {2.61369991, 13.1876898}, //
+
18297 {2.60967994, 13.1802101}, //
+
18298 {2.60549998, 13.1730299}, //
+
18299 {2.60115004, 13.1661501}, //
+
18300 {2.5966301, 13.1595497}, //
+
18301 {2.59194994, 13.1532497}, //
+
18302 {2.58710003, 13.1472397}, //
+
18303 {2.58207989, 13.1415195}, //
+
18304 {2.57690001, 13.1360998}, //
+
18305 {2.57392001, 13.1308203}, //
+
18306 {2.5710299, 13.1255503}, //
+
18307 {2.5682199, 13.1202698}, //
+
18308 {2.56549001, 13.1149998}, //
+
18309 {2.56285, 13.1097298}, //
+
18310 {2.56030011, 13.1044598}, //
+
18311 {2.5578301, 13.0991898}, //
+
18312 {2.55544996, 13.0939198}, //
+
18313 {2.55314994, 13.0886497}, //
+
18314 {2.55140996, 13.0845003}, //
+
18315 {2.54921007, 13.0795898}, //
+
18316 {2.54654002, 13.0739298}, //
+
18317 {2.54342008, 13.0675201}, //
+
18318 {2.53983998, 13.06036}, //
+
18319 {2.53578997, 13.0524502}, //
+
18320 {2.53129005, 13.0437899}, //
+
18321 {2.52632999, 13.0343704}, //
+
18322 {2.52090001, 13.0242004}, //
+
18323 {2.51522994, 13.0135899}, //
+
18324 {2.50952005, 13.0028601}, //
+
18325 {2.50377011, 12.9919996}, //
+
18326 {2.49798012, 12.9810104}, //
+
18327 {2.49214005, 12.9699001}, //
+
18328 {2.48625994, 12.9586697}, //
+
18329 {2.48032999, 12.9473}, //
+
18330 {2.47435999, 12.9358101}, //
+
18331 {2.46834993, 12.9242001}, //
+
18332 {2.46236992, 12.9127502}, //
+
18333 {2.45647001, 12.9017601}, //
+
18334 {2.45065999, 12.8912296}, //
+
18335 {2.44492006, 12.8811598}, //
+
18336 {2.43927002, 12.8715496}, //
+
18337 {2.4337101, 12.8624001}, //
+
18338 {2.42822003, 12.8537102}, //
+
18339 {2.42282009, 12.8454704}, //
+
18340 {2.41750002, 12.8376999}, //
+
18341 {2.41465998, 12.8312597}, //
+
18342 {2.41214991, 12.8254805}, //
+
18343 {2.40997005, 12.8203802}, //
+
18344 {2.40812993, 12.8159399}, //
+
18345 {2.40663004, 12.8121796}, //
+
18346 {2.40545988, 12.8090801}, //
+
18347 {2.40495992, 12.8076496}, //
+
18348 {2.41166997, 12.8055096}, //
+
18349 {2.42434001, 12.8014297}, //
+
18350 {2.43647003, 12.7974796}, //
+
18351 {2.44805002, 12.7936497}, //
+
18352 {2.45938993, 12.7908096}, //
+
18353 {2.47081995, 12.7882996}, //
+
18354 {2.48233008, 12.7861204}, //
+
18355 {2.49392009, 12.7842798}, //
+
18356 {2.50559998, 12.7827797}, //
+
18357 {2.51735997, 12.7816095}, //
+
18358 {2.52921009, 12.7807703}, //
+
18359 {2.54114008, 12.7802696}, //
+
18360 {2.55314994, 12.7800999}, //
+
18361 {2.56139994, 12.7807198}, //
+
18362 {2.56956005, 12.7810898}, //
+
18363 {2.57764006, 12.7812099}, //
+
18364 {2.58562994, 12.7810802}, //
+
18365 {2.59354997, 12.7806997}, //
+
18366 {2.6013701, 12.7800798}, //
+
18367 {2.60911989, 12.7791996}, //
+
18368 {2.61677003, 12.77808}, //
+
18369 {2.62435007, 12.7767}, //
+
18370 {2.62512994, 12.7759705}, //
+
18371 {2.62594008, 12.7752705}, //
+
18372 {2.62680006, 12.7746201}, //
+
18373 {2.62770009, 12.7740097}, //
+
18374 {2.62863994, 12.7734499}, //
+
18375 {2.62962008, 12.7729197}, //
+
18376 {2.63064003, 12.77244}, //
+
18377 {2.63170004, 12.7720003}, //
+
18378 {2.6328001, 12.7715998}, //
+
18379 {2.63390994, 12.7712402}, //
+
18380 {2.63497996, 12.7709303}, //
+
18381 {2.63600993, 12.7706604}, //
+
18382 {2.63607001, 12.7706404}, //
+
18383 {2.63619995, 12.7699003}, //
+
18384 {2.63677001, 12.7684803}, //
+
18385 {2.63771009, 12.76723}, //
+
18386 {2.63902998, 12.7661505}, //
+
18387 {2.64071989, 12.7652302}, //
+
18388 {2.64280009, 12.7644796}, //
+
18389 {2.64385009, 12.7642298}, //
+
18390 {2.65327001, 12.7636604}, //
+
18391 {2.65530992, 12.7635403}, //
+
18392 {2.65537, 12.7634802}, //
+
18393 {2.65561008, 12.7633305}, //
+
18394 {2.65587997, 12.7632303}, //
+
18395 {2.65618992, 12.7631702}, //
+
18396 {2.65654993, 12.7631502}, //
+
18397 });
+
18398 polys.push_back({
+
18399 {3.23692012, 14.1574097}, //
+
18400 {3.23604012, 14.1579905}, //
+
18401 {3.23352003, 14.1596699}, //
+
18402 {3.23187995, 14.1607599}, //
+
18403 {3.22999001, 14.1620197}, //
+
18404 {3.22784996, 14.1634502}, //
+
18405 {3.22550988, 14.1650696}, //
+
18406 {3.22300005, 14.1668901}, //
+
18407 {3.22033, 14.1689196}, //
+
18408 {3.21747994, 14.1711597}, //
+
18409 {3.21446991, 14.1736097}, //
+
18410 {3.21128988, 14.1762695}, //
+
18411 {3.20795012, 14.1791401}, //
+
18412 {3.2044301, 14.1822205}, //
+
18413 {3.20075011, 14.1855001}, //
+
18414 {3.19703007, 14.1891203}, //
+
18415 {3.19338012, 14.1932001}, //
+
18416 {3.18983006, 14.1977396}, //
+
18417 {3.18635011, 14.2027397}, //
+
18418 {3.18297005, 14.2082005}, //
+
18419 {3.17966008, 14.2141199}, //
+
18420 {3.17644, 14.2205}, //
+
18421 {3.17330003, 14.2273502}, //
+
18422 {3.17024994, 14.2346497}, //
+
18423 {3.16786003, 14.2407198}, //
+
18424 {3.16522002, 14.2468796}, //
+
18425 {3.1623199, 14.2531204}, //
+
18426 {3.15917993, 14.25945}, //
+
18427 {3.15578008, 14.2658501}, //
+
18428 {3.1521399, 14.2723398}, //
+
18429 {3.14824009, 14.2789097}, //
+
18430 {3.14409995, 14.2855597}, //
+
18431 {3.13969994, 14.2923002}, //
+
18432 {3.13444996, 14.3007402}, //
+
18433 {3.12925005, 14.3094597}, //
+
18434 {3.12407994, 14.3184795}, //
+
18435 {3.1189599, 14.3277998}, //
+
18436 {3.11387992, 14.3374004}, //
+
18437 {3.10882998, 14.3472996}, //
+
18438 {3.1038301, 14.3574896}, //
+
18439 {3.09887004, 14.3679705}, //
+
18440 {3.09395003, 14.3787498}, //
+
18441 {3.08924007, 14.3899498}, //
+
18442 {3.08490992, 14.4016895}, //
+
18443 {3.08095002, 14.41397}, //
+
18444 {3.07736993, 14.4267998}, //
+
18445 {3.07417011, 14.4401798}, //
+
18446 {3.0713501, 14.4541101}, //
+
18447 {3.06890988, 14.4685698}, //
+
18448 {3.06683993, 14.4835901}, //
+
18449 {3.06515002, 14.4991503}, //
+
18450 {3.06062007, 14.5436401}, //
+
18451 {3.05308008, 14.5852003}, //
+
18452 {3.04253006, 14.6238298}, //
+
18453 {3.02895999, 14.6595402}, //
+
18454 {3.01237988, 14.6923103}, //
+
18455 {2.99278998, 14.7221498}, //
+
18456 {2.97019005, 14.7490597}, //
+
18457 {2.94458008, 14.7730503}, //
+
18458 {2.91595006, 14.7940998}, //
+
18459 {2.90668011, 14.8000097}, //
+
18460 {2.89693999, 14.8056602}, //
+
18461 {2.88673997, 14.8110704}, //
+
18462 {2.87609005, 14.8162203}, //
+
18463 {2.86496997, 14.8211203}, //
+
18464 {2.85338998, 14.8257704}, //
+
18465 {2.84136009, 14.8301601}, //
+
18466 {2.82886004, 14.8343096}, //
+
18467 {2.81590009, 14.8381996}, //
+
18468 {2.80287004, 14.8418598}, //
+
18469 {2.7901299, 14.8453102}, //
+
18470 {2.77767992, 14.8485603}, //
+
18471 {2.7655201, 14.8515902}, //
+
18472 {2.75364995, 14.8544102}, //
+
18473 {2.74207997, 14.8570204}, //
+
18474 {2.7307899, 14.8594198}, //
+
18475 {2.7198, 14.8616199}, //
+
18476 {2.70910001, 14.8635998}, //
+
18477 {2.69901991, 14.8653803}, //
+
18478 {2.68985009, 14.8669596}, //
+
18479 {2.68161011, 14.8683205}, //
+
18480 {2.67427993, 14.8694801}, //
+
18481 {2.66787004, 14.8704205}, //
+
18482 {2.66238999, 14.8711596}, //
+
18483 {2.65781999, 14.8716803}, //
+
18484 {2.65418005, 14.8719997}, //
+
18485 {2.65144992, 14.8720999}, //
+
18486 {2.64990997, 14.8720598}, //
+
18487 {2.64827991, 14.8719301}, //
+
18488 {2.64656997, 14.8717203}, //
+
18489 {2.64476991, 14.8714304}, //
+
18490 {2.64288998, 14.8710499}, //
+
18491 {2.64091992, 14.8705902}, //
+
18492 {2.63885999, 14.8700399}, //
+
18493 {2.63671994, 14.8694096}, //
+
18494 {2.63450003, 14.8687}, //
+
18495 {2.58365011, 14.8687}, //
+
18496 {2.57686996, 14.8688297}, //
+
18497 {2.57009006, 14.8691998}, //
+
18498 {2.56331992, 14.8698301}, //
+
18499 {2.55654001, 14.8707104}, //
+
18500 {2.5497601, 14.87185}, //
+
18501 {2.54297996, 14.87323}, //
+
18502 {2.53621006, 14.8748703}, //
+
18503 {2.52942991, 14.8767595}, //
+
18504 {2.52265, 14.8788996}, //
+
18505 {2.51390004, 14.8812799}, //
+
18506 {2.50423002, 14.8839102}, //
+
18507 {2.49363995, 14.8867998}, //
+
18508 {2.48213005, 14.8899403}, //
+
18509 {2.46969008, 14.8933296}, //
+
18510 {2.45634007, 14.8969698}, //
+
18511 {2.44205999, 14.9008598}, //
+
18512 {2.42687011, 14.9049997}, //
+
18513 {2.41074991, 14.9094}, //
+
18514 {2.39791989, 14.9124298}, //
+
18515 {2.38504004, 14.9155102}, //
+
18516 {2.37212992, 14.9186201}, //
+
18517 {2.35916996, 14.9217796}, //
+
18518 {2.34616995, 14.9249802}, //
+
18519 {2.33312988, 14.9282198}, //
+
18520 {2.32003999, 14.93151}, //
+
18521 {2.30692005, 14.9348297}, //
+
18522 {2.29375005, 14.9382}, //
+
18523 {2.28096008, 14.9415703}, //
+
18524 {2.26896, 14.9448996}, //
+
18525 {2.25777006, 14.9481802}, //
+
18526 {2.24735999, 14.9514303}, //
+
18527 {2.23776007, 14.9546404}, //
+
18528 {2.22895002, 14.9577999}, //
+
18529 {2.22094011, 14.9609203}, //
+
18530 {2.21372008, 14.9640102}, //
+
18531 {2.20729995, 14.9670496}, //
+
18532 {2.21516991, 14.9661703}, //
+
18533 {2.22371006, 14.9650402}, //
+
18534 {2.23291993, 14.9636602}, //
+
18535 {2.2428, 14.9620199}, //
+
18536 {2.25335002, 14.9601402}, //
+
18537 {2.26457, 14.9580097}, //
+
18538 {2.27645993, 14.9556198}, //
+
18539 {2.28902006, 14.9529896}, //
+
18540 {2.30224991, 14.9500999}, //
+
18541 {2.32509995, 14.94629}, //
+
18542 {2.34844995, 14.9424}, //
+
18543 {2.37230992, 14.9384203}, //
+
18544 {2.3966701, 14.9343596}, //
+
18545 {2.42153001, 14.9302197}, //
+
18546 {2.44689012, 14.9259901}, //
+
18547 {2.47275996, 14.9216805}, //
+
18548 {2.49913001, 14.9172802}, //
+
18549 {2.52600002, 14.9127998}, //
+
18550 {2.53689003, 14.9112101}, //
+
18551 {2.54844999, 14.90944}, //
+
18552 {2.56067991, 14.9075203}, //
+
18553 {2.57358003, 14.9054203}, //
+
18554 {2.58714008, 14.9031601}, //
+
18555 {2.60138011, 14.9007301}, //
+
18556 {2.61628008, 14.89814}, //
+
18557 {2.63186002, 14.89538}, //
+
18558 {2.6480999, 14.8924503}, //
+
18559 {2.67141008, 14.8900995}, //
+
18560 {2.69463992, 14.8875799}, //
+
18561 {2.71778989, 14.8849001}, //
+
18562 {2.74084997, 14.8820496}, //
+
18563 {2.76382995, 14.8790302}, //
+
18564 {2.78672004, 14.8758497}, //
+
18565 {2.80953002, 14.8725004}, //
+
18566 {2.83225989, 14.8689804}, //
+
18567 {2.85489988, 14.8653002}, //
+
18568 {2.87663007, 14.8614502}, //
+
18569 {2.89660001, 14.8574305}, //
+
18570 {2.91481996, 14.8532495}, //
+
18571 {2.93126988, 14.8488998}, //
+
18572 {2.94596004, 14.8443804}, //
+
18573 {2.95889997, 14.8396997}, //
+
18574 {2.9700799, 14.8348503}, //
+
18575 {2.97949004, 14.8298302}, //
+
18576 {2.98714995, 14.8246498}, //
+
18577 {2.99702001, 14.8160496}, //
+
18578 {3.00706005, 14.8068199}, //
+
18579 {3.01727009, 14.7969599}, //
+
18580 {3.02765012, 14.7864704}, //
+
18581 {3.03818989, 14.7753496}, //
+
18582 {3.0489099, 14.7636099}, //
+
18583 {3.0597899, 14.7512302}, //
+
18584 {3.07083011, 14.7382298}, //
+
18585 {3.08205009, 14.7245998}, //
+
18586 {3.09294009, 14.7105198}, //
+
18587 {3.10299993, 14.6961498}, //
+
18588 {3.11221004, 14.6814804}, //
+
18589 {3.12058997, 14.6665201}, //
+
18590 {3.12812996, 14.6512604}, //
+
18591 {3.13483, 14.6357098}, //
+
18592 {3.14069009, 14.6198702}, //
+
18593 {3.14570999, 14.6037302}, //
+
18594 {3.14989996, 14.5873003}, //
+
18595 {3.15295005, 14.5690403}, //
+
18596 {3.15609002, 14.5504503}, //
+
18597 {3.1593101, 14.5315304}, //
+
18598 {3.16262007, 14.51227}, //
+
18599 {3.16599989, 14.4926701}, //
+
18600 {3.16948009, 14.4727402}, //
+
18601 {3.1730299, 14.4524803}, //
+
18602 {3.17668009, 14.43188}, //
+
18603 {3.18039989, 14.4109497}, //
+
18604 {3.18333006, 14.3920298}, //
+
18605 {3.18608999, 14.3744497}, //
+
18606 {3.18867993, 14.3582096}, //
+
18607 {3.1911099, 14.3433104}, //
+
18608 {3.1933701, 14.3297501}, //
+
18609 {3.19547009, 14.3175297}, //
+
18610 {3.19739008, 14.3066502}, //
+
18611 {3.1991601, 14.2971001}, //
+
18612 {3.20075011, 14.2889004}, //
+
18613 {3.20155001, 14.28578}, //
+
18614 {3.20243001, 14.2824602}, //
+
18615 {3.20338988, 14.2789202}, //
+
18616 {3.2044301, 14.2751799}, //
+
18617 {3.20555997, 14.2712202}, //
+
18618 {3.20676994, 14.2670603}, //
+
18619 {3.20807004, 14.2626801}, //
+
18620 {3.20943999, 14.2580996}, //
+
18621 {3.21090007, 14.2532997}, //
+
18622 {3.21543002, 14.2385998}, //
+
18623 {3.21692991, 14.2336998}, //
+
18624 {3.21844006, 14.2287998}, //
+
18625 {3.21993995, 14.2238998}, //
+
18626 {3.22145009, 14.2189999}, //
+
18627 {3.22445011, 14.2091999}, //
+
18628 {3.22591996, 14.2043896}, //
+
18629 {3.22729993, 14.1997499}, //
+
18630 {3.22861004, 14.1952801}, //
+
18631 {3.22982001, 14.1909704}, //
+
18632 {3.23095989, 14.18682}, //
+
18633 {3.23200989, 14.1828403}, //
+
18634 {3.23297, 14.1790304}, //
+
18635 {3.23385, 14.1753798}, //
+
18636 {3.2346499, 14.1718998}, //
+
18637 {3.23654008, 14.1634302}, //
+
18638 {3.23699999, 14.1613598}, //
+
18639 {3.23738003, 14.1596603}, //
+
18640 {3.23766994, 14.1583405}, //
+
18641 {3.23787999, 14.1574001}, //
+
18642 {3.23800993, 14.1568403}, //
+
18643 {3.23804998, 14.1566496}, //
+
18644 });
+
18645 polys.push_back({
+
18646 {3.00633001, 13.8948298}, //
+
18647 {2.99497008, 13.9264002}, //
+
18648 {2.98356009, 13.9564304}, //
+
18649 {2.97211003, 13.98491}, //
+
18650 {2.96062994, 14.0118504}, //
+
18651 {2.94909, 14.0372295}, //
+
18652 {2.93752003, 14.0610704}, //
+
18653 {2.92591, 14.0833597}, //
+
18654 {2.9142499, 14.1041002}, //
+
18655 {2.90271997, 14.1235905}, //
+
18656 {2.89147997, 14.1421099}, //
+
18657 {2.88053012, 14.1596699}, //
+
18658 {2.86987996, 14.1762695}, //
+
18659 {2.85951996, 14.1919098}, //
+
18660 {2.84945011, 14.2065897}, //
+
18661 {2.83966994, 14.2202997}, //
+
18662 {2.83018994, 14.2330599}, //
+
18663 {2.8210001, 14.2448502}, //
+
18664 {2.81803012, 14.24932}, //
+
18665 {2.81514001, 14.2537098}, //
+
18666 {2.81234002, 14.2580204}, //
+
18667 {2.8096199, 14.2622404}, //
+
18668 {2.80697989, 14.2663898}, //
+
18669 {2.80441999, 14.2704496}, //
+
18670 {2.80194998, 14.2744303}, //
+
18671 {2.79956007, 14.2783298}, //
+
18672 {2.79725003, 14.2821503}, //
+
18673 {2.7957499, 14.2837296}, //
+
18674 {2.79425001, 14.28549}, //
+
18675 {2.79274011, 14.2874098}, //
+
18676 {2.79123998, 14.2894897}, //
+
18677 {2.78973007, 14.29175}, //
+
18678 {2.78822994, 14.2941704}, //
+
18679 {2.78672004, 14.2967596}, //
+
18680 {2.78520989, 14.2995195}, //
+
18681 {2.78369999, 14.3024502}, //
+
18682 {2.77507997, 14.3168602}, //
+
18683 {2.76577997, 14.3314304}, //
+
18684 {2.75582004, 14.3461704}, //
+
18685 {2.74518991, 14.3610697}, //
+
18686 {2.73389006, 14.3761396}, //
+
18687 {2.72192001, 14.3913803}, //
+
18688 {2.70928001, 14.4067898}, //
+
18689 {2.69598007, 14.4223604}, //
+
18690 {2.68199992, 14.4380999}, //
+
18691 {2.6759901, 14.4442701}, //
+
18692 {2.6700201, 14.4507303}, //
+
18693 {2.66408992, 14.45749}, //
+
18694 {2.65820003, 14.4645395}, //
+
18695 {2.65235996, 14.47188}, //
+
18696 {2.64655995, 14.4795198}, //
+
18697 {2.6408, 14.4874496}, //
+
18698 {2.6350801, 14.4956799}, //
+
18699 {2.62940001, 14.5042}, //
+
18700 {2.62378001, 14.5128002}, //
+
18701 {2.61819005, 14.5212803}, //
+
18702 {2.61264992, 14.5296297}, //
+
18703 {2.60715008, 14.5378599}, //
+
18704 {2.60169005, 14.5459604}, //
+
18705 {2.59627008, 14.5539303}, //
+
18706 {2.59088993, 14.56178}, //
+
18707 {2.58555007, 14.5695}, //
+
18708 {2.58025002, 14.5770998}, //
+
18709 {2.57515001, 14.5850496}, //
+
18710 {2.57037997, 14.5923405}, //
+
18711 {2.56594992, 14.5989599}, //
+
18712 {2.56185007, 14.6049004}, //
+
18713 {2.55807996, 14.6101799}, //
+
18714 {2.55465007, 14.61479}, //
+
18715 {2.55154991, 14.6187296}, //
+
18716 {2.54877996, 14.6219997}, //
+
18717 {2.54635, 14.6246004}, //
+
18718 {2.54342008, 14.6265802}, //
+
18719 {2.5406599, 14.6280203}, //
+
18720 {2.53806996, 14.6289196}, //
+
18721 {2.53564, 14.6292696}, //
+
18722 {2.53338003, 14.6290703}, //
+
18723 {2.53128004, 14.6283302}, //
+
18724 {2.52936006, 14.6270504}, //
+
18725 {2.52759004, 14.6252203}, //
+
18726 {2.52600002, 14.6228504}, //
+
18727 {2.52453995, 14.6201096}, //
+
18728 {2.52316999, 14.6171598}, //
+
18729 {2.5218699, 14.6140099}, //
+
18730 {2.52065992, 14.6106396}, //
+
18731 {2.51953006, 14.6070604}, //
+
18732 {2.51849008, 14.6032696}, //
+
18733 {2.51752996, 14.5992699}, //
+
18734 {2.51664996, 14.5950699}, //
+
18735 {2.51585007, 14.5906496}, //
+
18736 {2.51578999, 14.58846}, //
+
18737 {2.51559997, 14.5863895}, //
+
18738 {2.51528001, 14.5844402}, //
+
18739 {2.51483989, 14.5826302}, //
+
18740 {2.51428008, 14.5809298}, //
+
18741 {2.51358008, 14.57936}, //
+
18742 {2.51275992, 14.57792}, //
+
18743 {2.51182008, 14.5766001}, //
+
18744 {2.51075006, 14.5754004}, //
+
18745 {2.50963998, 14.5743599}, //
+
18746 {2.50856996, 14.5734901}, //
+
18747 {2.50753999, 14.5727797}, //
+
18748 {2.50655007, 14.5722303}, //
+
18749 {2.50560999, 14.5718603}, //
+
18750 {2.50470996, 14.57164}, //
+
18751 {2.50384998, 14.5716}, //
+
18752 {2.50303006, 14.5717201}, //
+
18753 {2.50224996, 14.5719995}, //
+
18754 {2.50149989, 14.5724001}, //
+
18755 {2.50076008, 14.5728397}, //
+
18756 {2.50001001, 14.5733204}, //
+
18757 {2.49925995, 14.5738497}, //
+
18758 {2.49850988, 14.5744104}, //
+
18759 {2.49776006, 14.5750198}, //
+
18760 {2.49700999, 14.5756702}, //
+
18761 {2.49624991, 14.5763702}, //
+
18762 {2.49550009, 14.5770998}, //
+
18763 {2.4921, 14.5804996}, //
+
18764 {2.48975992, 14.5822201}, //
+
18765 {2.48725009, 14.5843601}, //
+
18766 {2.48458004, 14.5869102}, //
+
18767 {2.48172998, 14.58988}, //
+
18768 {2.47871995, 14.5932703}, //
+
18769 {2.47553992, 14.5970802}, //
+
18770 {2.47219992, 14.6013002}, //
+
18771 {2.4686799, 14.6059399}, //
+
18772 {2.46499991, 14.6110001}, //
+
18773 {2.46114993, 14.6156101}, //
+
18774 {2.45712996, 14.6203804}, //
+
18775 {2.45293999, 14.6253204}, //
+
18776 {2.44859004, 14.6304197}, //
+
18777 {2.4440701, 14.6356897}, //
+
18778 {2.43937993, 14.6411304}, //
+
18779 {2.43452001, 14.64674}, //
+
18780 {2.42949009, 14.6525097}, //
+
18781 {2.42429996, 14.6584501}, //
+
18782 {2.41901994, 14.66436}, //
+
18783 {2.41374993, 14.6700096}, //
+
18784 {2.40846992, 14.6754198}, //
+
18785 {2.40319991, 14.6805696}, //
+
18786 {2.39792991, 14.6854696}, //
+
18787 {2.3926599, 14.6901197}, //
+
18788 {2.3873899, 14.6945105}, //
+
18789 {2.38211989, 14.6986599}, //
+
18790 {2.37684989, 14.7025499}, //
+
18791 {2.36673999, 14.7102098}, //
+
18792 {2.35599995, 14.7181196}, //
+
18793 {2.34463, 14.7262802}, //
+
18794 {2.33262992, 14.7347002}, //
+
18795 {2.32000995, 14.7433596}, //
+
18796 {2.30676007, 14.7522802}, //
+
18797 {2.29288006, 14.7614498}, //
+
18798 {2.27837992, 14.7708797}, //
+
18799 {2.26325011, 14.78055}, //
+
18800 {2.24798989, 14.7901402}, //
+
18801 {2.23310995, 14.7993097}, //
+
18802 {2.21861005, 14.8080597}, //
+
18803 {2.20447993, 14.81639}, //
+
18804 {2.19073009, 14.8242998}, //
+
18805 {2.17736006, 14.83179}, //
+
18806 {2.16436005, 14.83887}, //
+
18807 {2.15174007, 14.84552}, //
+
18808 {2.1394999, 14.8517504}, //
+
18809 {2.13198996, 14.8555403}, //
+
18810 {2.12451005, 14.8593702}, //
+
18811 {2.11707997, 14.8632402}, //
+
18812 {2.10968995, 14.8671503}, //
+
18813 {2.10233998, 14.87111}, //
+
18814 {2.09503007, 14.8751097}, //
+
18815 {2.08775997, 14.8791504}, //
+
18816 {2.08053994, 14.8832302}, //
+
18817 {2.07334995, 14.8873501}, //
+
18818 {2.06633997, 14.8913898}, //
+
18819 {2.0596199, 14.8952198}, //
+
18820 {2.05320001, 14.89884}, //
+
18821 {2.04707003, 14.9022503}, //
+
18822 {2.04122996, 14.9054499}, //
+
18823 {2.03568006, 14.9084396}, //
+
18824 {2.03043008, 14.9112196}, //
+
18825 {2.02547002, 14.9137897}, //
+
18826 {2.02080011, 14.9161501}, //
+
18827 {2.01653004, 14.9182901}, //
+
18828 {2.01275992, 14.9201803}, //
+
18829 {2.00989008, 14.9216204}, //
+
18830 {2.00991988, 14.9216099}, //
+
18831 {2.01064992, 14.9212503}, //
+
18832 {2.01143003, 14.9208698}, //
+
18833 {2.01223993, 14.9204903}, //
+
18834 {2.01309991, 14.9201202}, //
+
18835 {2.01399994, 14.9197397}, //
+
18836 {2.01494002, 14.9193602}, //
+
18837 {2.01591992, 14.9189796}, //
+
18838 {2.01694012, 14.9186096}, //
+
18839 {2.01799989, 14.9182301}, //
+
18840 {2.01909995, 14.9178495}, //
+
18841 {2.02025008, 14.91747}, //
+
18842 {2.02145004, 14.9170904}, //
+
18843 {2.02268004, 14.9167204}, //
+
18844 {2.02396011, 14.9163399}, //
+
18845 {2.02528, 14.9159603}, //
+
18846 {2.02662992, 14.9155798}, //
+
18847 {2.02802992, 14.9152098}, //
+
18848 {2.02946997, 14.9148302}, //
+
18849 {2.03095007, 14.9144497}, //
+
18850 {2.03248, 14.9140596}, //
+
18851 {2.03404999, 14.9136295}, //
+
18852 {2.03567004, 14.9131603}, //
+
18853 {2.0373199, 14.9126396}, //
+
18854 {2.03901005, 14.9120798}, //
+
18855 {2.04075003, 14.9114704}, //
+
18856 {2.04253006, 14.91082}, //
+
18857 {2.0443399, 14.9101295}, //
+
18858 {2.04620004, 14.9094}, //
+
18859 {2.04813004, 14.9086199}, //
+
18860 {2.0501399, 14.9077997}, //
+
18861 {2.05223989, 14.9069405}, //
+
18862 {2.05441999, 14.9060402}, //
+
18863 {2.05667996, 14.9050999}, //
+
18864 {2.05902004, 14.90411}, //
+
18865 {2.06145, 14.90308}, //
+
18866 {2.06396008, 14.90201}, //
+
18867 {2.06655002, 14.9008999}, //
+
18868 {2.06921005, 14.8998003}, //
+
18869 {2.07191992, 14.8987398}, //
+
18870 {2.07467008, 14.8977203}, //
+
18871 {2.07745004, 14.89674}, //
+
18872 {2.08028007, 14.8957996}, //
+
18873 {2.08314991, 14.8949003}, //
+
18874 {2.08606005, 14.8940401}, //
+
18875 {2.08901, 14.8932304}, //
+
18876 {2.09200001, 14.8924503}, //
+
18877 {2.09506011, 14.8916702}, //
+
18878 {2.0982101, 14.8908501}, //
+
18879 {2.10143995, 14.8899899}, //
+
18880 {2.10474992, 14.8890896}, //
+
18881 {2.10815001, 14.8881502}, //
+
18882 {2.11161995, 14.8871603}, //
+
18883 {2.11518002, 14.8861303}, //
+
18884 {2.11881995, 14.8850603}, //
+
18885 {2.12255001, 14.8839502}, //
+
18886 {2.12631989, 14.8828096}, //
+
18887 {2.13007998, 14.8816204}, //
+
18888 {2.1338501, 14.8803902}, //
+
18889 {2.13761997, 14.8791199}, //
+
18890 {2.14138007, 14.8778}, //
+
18891 {2.14514995, 14.87644}, //
+
18892 {2.14892006, 14.8750401}, //
+
18893 {2.15267992, 14.8735905}, //
+
18894 {2.15645003, 14.8720999}, //
+
18895 {2.18620992, 14.8612204}, //
+
18896 {2.21520996, 14.8496704}, //
+
18897 {2.24345994, 14.83745}, //
+
18898 {2.27096009, 14.8245602}, //
+
18899 {2.29769993, 14.8109999}, //
+
18900 {2.32368994, 14.7967701}, //
+
18901 {2.34892988, 14.7818604}, //
+
18902 {2.37342, 14.7662897}, //
+
18903 {2.39715004, 14.7500496}, //
+
18904 {2.41498995, 14.73841}, //
+
18905 {2.43232012, 14.7276096}, //
+
18906 {2.4491601, 14.7176504}, //
+
18907 {2.4654901, 14.7085199}, //
+
18908 {2.48130989, 14.7002401}, //
+
18909 {2.49663997, 14.6927795}, //
+
18910 {2.51146007, 14.6861696}, //
+
18911 {2.52577996, 14.6803904}, //
+
18912 {2.5395999, 14.6754503}, //
+
18913 {2.55510998, 14.6697998}, //
+
18914 {2.56998992, 14.6633902}, //
+
18915 {2.58423996, 14.65623}, //
+
18916 {2.5978601, 14.6483097}, //
+
18917 {2.61086011, 14.6396503}, //
+
18918 {2.62321997, 14.6302299}, //
+
18919 {2.63495994, 14.6200504}, //
+
18920 {2.64607, 14.6091299}, //
+
18921 {2.65654993, 14.5974503}, //
+
18922 {2.6663301, 14.5854797}, //
+
18923 {2.6753099, 14.5736704}, //
+
18924 {2.68350005, 14.5620403}, //
+
18925 {2.69089007, 14.5505695}, //
+
18926 {2.69748998, 14.5392704}, //
+
18927 {2.70327997, 14.5281401}, //
+
18928 {2.7082901, 14.51717}, //
+
18929 {2.71249008, 14.5063801}, //
+
18930 {2.71589994, 14.4957504}, //
+
18931 {2.71912003, 14.4854002}, //
+
18932 {2.72275996, 14.4754801}, //
+
18933 {2.72681999, 14.46597}, //
+
18934 {2.7312901, 14.4568901}, //
+
18935 {2.73619008, 14.4482203}, //
+
18936 {2.7414999, 14.43997}, //
+
18937 {2.74723005, 14.4321499}, //
+
18938 {2.75338006, 14.4247398}, //
+
18939 {2.75994992, 14.4177504}, //
+
18940 {2.76736999, 14.4106398}, //
+
18941 {2.77452993, 14.4028502}, //
+
18942 {2.78144002, 14.3943996}, //
+
18943 {2.7881, 14.3852797}, //
+
18944 {2.79450989, 14.3754797}, //
+
18945 {2.80065989, 14.3650198}, //
+
18946 {2.80656004, 14.3538799}, //
+
18947 {2.81221008, 14.3420801}, //
+
18948 {2.81760001, 14.3296003}, //
+
18949 {2.82630992, 14.3120604}, //
+
18950 {2.83585, 14.2940998}, //
+
18951 {2.84623003, 14.2757196}, //
+
18952 {2.85745001, 14.2569199}, //
+
18953 {2.86950994, 14.2377005}, //
+
18954 {2.88240004, 14.21807}, //
+
18955 {2.89613008, 14.1980104}, //
+
18956 {2.91070008, 14.1775398}, //
+
18957 {2.92610002, 14.1566496}, //
+
18958 {2.93501997, 14.14468}, //
+
18959 {2.94369006, 14.1328697}, //
+
18960 {2.95210004, 14.1212397}, //
+
18961 {2.96025991, 14.1097698}, //
+
18962 {2.96816993, 14.0984697}, //
+
18963 {2.97583008, 14.0873404}, //
+
18964 {2.98323989, 14.0763702}, //
+
18965 {2.99040008, 14.0655804}, //
+
18966 {2.99729991, 14.0549498}, //
+
18967 {3.0016799, 14.0466995}, //
+
18968 {3.00575995, 14.0385399}, //
+
18969 {3.00954008, 14.0304604}, //
+
18970 {3.01304007, 14.0224705}, //
+
18971 {3.01623988, 14.0145502}, //
+
18972 {3.01914001, 14.0067301}, //
+
18973 {3.02175999, 13.9989796}, //
+
18974 {3.02408004, 13.9913301}, //
+
18975 {3.02609992, 13.9837503}, //
+
18976 {3.02785993, 13.9763002}, //
+
18977 {3.02937007, 13.9690199}, //
+
18978 {3.03063011, 13.9618998}, //
+
18979 {3.03164005, 13.9549503}, //
+
18980 {3.03239989, 13.9481697}, //
+
18981 {3.03290009, 13.9415503}, //
+
18982 {3.03314996, 13.9350996}, //
+
18983 {3.03314996, 13.9288197}, //
+
18984 {3.03290009, 13.9226999}, //
+
18985 {3.03245997, 13.9167995}, //
+
18986 {3.03188992, 13.9111605}, //
+
18987 {3.03119993, 13.9057598}, //
+
18988 {3.03038001, 13.9006205}, //
+
18989 {3.02943993, 13.8957195}, //
+
18990 {3.0283699, 13.8910799}, //
+
18991 {3.02716994, 13.8866796}, //
+
18992 {3.02585006, 13.8825397}, //
+
18993 {3.0244, 13.8786497}, //
+
18994 {3.02172995, 13.8719501}, //
+
18995 {3.02064991, 13.8692303}, //
+
18996 {3.01973009, 13.86693}, //
+
18997 {3.01898003, 13.8650503}, //
+
18998 {3.0179801, 13.8625402}, //
+
18999 {3.01764989, 13.8617001}, //
+
19000 });
+
19001 polys.push_back({
+
19002 {3.37389994, 12.81106}, //
+
19003 {3.37767005, 12.8179703}, //
+
19004 {3.3859601, 12.8331604}, //
+
19005 {3.38972998, 12.8400698}, //
+
19006 {3.39400005, 12.8479004}, //
+
19007 {3.39861012, 12.8564997}, //
+
19008 {3.40337992, 12.8657303}, //
+
19009 {3.40831995, 12.8755903}, //
+
19010 {3.41341996, 12.8860703}, //
+
19011 {3.41868997, 12.8971796}, //
+
19012 {3.42412996, 12.9089203}, //
+
19013 {3.42973995, 12.9212904}, //
+
19014 {3.43550992, 12.9342804}, //
+
19015 {3.44145012, 12.9478998}, //
+
19016 {3.44743991, 12.9619503}, //
+
19017 {3.45335007, 12.9762096}, //
+
19018 {3.4591701, 12.9906702}, //
+
19019 {3.46491003, 13.0053501}, //
+
19020 {3.47057009, 13.0202303}, //
+
19021 {3.47614002, 13.0353203}, //
+
19022 {3.48163009, 13.0506201}, //
+
19023 {3.48703003, 13.0661297}, //
+
19024 {3.4923501, 13.0818501}, //
+
19025 {3.49352002, 13.0849504}, //
+
19026 {3.4949801, 13.0888205}, //
+
19027 {3.5028801, 13.1097202}, //
+
19028 {3.50669003, 13.1197796}, //
+
19029 {3.5160501, 13.1445503}, //
+
19030 {3.52140999, 13.1587496}, //
+
19031 {3.52694011, 13.17344}, //
+
19032 {3.53262997, 13.1886396}, //
+
19033 {3.53849006, 13.20434}, //
+
19034 {3.5445199, 13.22054}, //
+
19035 {3.55071998, 13.2372398}, //
+
19036 {3.55708003, 13.2544403}, //
+
19037 {3.56361008, 13.27215}, //
+
19038 {3.5703001, 13.29035}, //
+
19039 {3.57702994, 13.30863}, //
+
19040 {3.58362007, 13.3265305}, //
+
19041 {3.59009004, 13.3440504}, //
+
19042 {3.59644008, 13.3611898}, //
+
19043 {3.60264993, 13.3779602}, //
+
19044 {3.60874009, 13.3943501}, //
+
19045 {3.61471009, 13.4103603}, //
+
19046 {3.6205399, 13.4259901}, //
+
19047 {3.62625003, 13.4412498}, //
+
19048 {3.63168001, 13.4558096}, //
+
19049 {3.63664007, 13.4693804}, //
+
19050 {3.64113998, 13.4819298}, //
+
19051 {3.64519, 13.4934902}, //
+
19052 {3.64877009, 13.5040398}, //
+
19053 {3.65189004, 13.5135803}, //
+
19054 {3.65456009, 13.52213}, //
+
19055 {3.65675998, 13.5296602}, //
+
19056 {3.65849996, 13.5361996}, //
+
19057 {3.66000009, 13.5413799}, //
+
19058 {3.66149998, 13.5464001}, //
+
19059 {3.66300988, 13.55126}, //
+
19060 {3.66451001, 13.5559397}, //
+
19061 {3.66601992, 13.5604696}, //
+
19062 {3.66752005, 13.5648203}, //
+
19063 {3.66902995, 13.5690098}, //
+
19064 {3.67054009, 13.57304}, //
+
19065 {3.67205, 13.5768995}, //
+
19066 {3.6742599, 13.5807505}, //
+
19067 {3.67639995, 13.5847702}, //
+
19068 {3.67844009, 13.5889502}, //
+
19069 {3.68040991, 13.5932999}, //
+
19070 {3.68229008, 13.5978203}, //
+
19071 {3.6840899, 13.6025}, //
+
19072 {3.68581009, 13.6073503}, //
+
19073 {3.68744993, 13.6123695}, //
+
19074 {3.68899989, 13.6175499}, //
+
19075 {3.69046998, 13.6230402}, //
+
19076 {3.69184995, 13.6289396}, //
+
19077 {3.69315004, 13.6352701}, //
+
19078 {3.69436002, 13.6420097}, //
+
19079 {3.69548988, 13.6491699}, //
+
19080 {3.6965301, 13.6567497}, //
+
19081 {3.69748998, 13.6647501}, //
+
19082 {3.69835997, 13.6731596}, //
+
19083 {3.69915009, 13.6820002}, //
+
19084 {3.70175004, 13.7018003}, //
+
19085 {3.70501995, 13.7220097}, //
+
19086 {3.70896006, 13.74265}, //
+
19087 {3.71357012, 13.7636995}, //
+
19088 {3.7188499, 13.7851801}, //
+
19089 {3.7247901, 13.8070698}, //
+
19090 {3.73141003, 13.82938}, //
+
19091 {3.73869991, 13.8521004}, //
+
19092 {3.74664998, 13.8752499}, //
+
19093 {3.75042009, 13.8852596}, //
+
19094 {3.75417995, 13.8956804}, //
+
19095 {3.75795007, 13.9065304}, //
+
19096 {3.76171994, 13.9177904}, //
+
19097 {3.76548004, 13.9294701}, //
+
19098 {3.76924992, 13.9415598}, //
+
19099 {3.77302003, 13.9540701}, //
+
19100 {3.77677989, 13.967}, //
+
19101 {3.78055, 13.9803495}, //
+
19102 {3.79340005, 14.0261402}, //
+
19103 {3.80483007, 14.0685902}, //
+
19104 {3.81484008, 14.1076803}, //
+
19105 {3.82342005, 14.1434298}, //
+
19106 {3.83056998, 14.1758299}, //
+
19107 {3.83630991, 14.2048798}, //
+
19108 {3.84061003, 14.2305899}, //
+
19109 {3.84348989, 14.2529402}, //
+
19110 {3.84494996, 14.2719498}, //
+
19111 {3.84573007, 14.2764702}, //
+
19112 {3.84654999, 14.2809896}, //
+
19113 {3.84740996, 14.2855196}, //
+
19114 {3.84830999, 14.29004}, //
+
19115 {3.84925008, 14.2945604}, //
+
19116 {3.85023999, 14.2990799}, //
+
19117 {3.85126996, 14.3036098}, //
+
19118 {3.85233998, 14.3081303}, //
+
19119 {3.85345006, 14.3126497}, //
+
19120 {3.85465002, 14.3173399}, //
+
19121 {3.85596991, 14.32236}, //
+
19122 {3.85740995, 14.3277197}, //
+
19123 {3.85897994, 14.3334198}, //
+
19124 {3.8606801, 14.3394403}, //
+
19125 {3.86248994, 14.3458099}, //
+
19126 {3.86443996, 14.3525}, //
+
19127 {3.86650991, 14.3595304}, //
+
19128 {3.86870003, 14.3669004}, //
+
19129 {3.87179995, 14.37397}, //
+
19130 {3.87506008, 14.3816299}, //
+
19131 {3.87848997, 14.3898697}, //
+
19132 {3.88209009, 14.3986998}, //
+
19133 {3.88584995, 14.4081202}, //
+
19134 {3.88979006, 14.4181204}, //
+
19135 {3.8938899, 14.42871}, //
+
19136 {3.89815998, 14.4398899}, //
+
19137 {3.90260005, 14.4516497}, //
+
19138 {3.90932989, 14.4712601}, //
+
19139 {3.91592002, 14.4909096}, //
+
19140 {3.92238998, 14.5106096}, //
+
19141 {3.92874002, 14.5303402}, //
+
19142 {3.93495011, 14.5501204}, //
+
19143 {3.94104004, 14.5699396}, //
+
19144 {3.94701004, 14.5897999}, //
+
19145 {3.95284009, 14.6097002}, //
+
19146 {3.95854998, 14.6296501}, //
+
19147 {3.96368003, 14.6490097}, //
+
19148 {3.9677701, 14.66716}, //
+
19149 {3.97080994, 14.6840897}, //
+
19150 {3.97280002, 14.69981}, //
+
19151 {3.9737401, 14.7143097}, //
+
19152 {3.97363997, 14.7276096}, //
+
19153 {3.97249007, 14.7396803}, //
+
19154 {3.97028995, 14.7505503}, //
+
19155 {3.96705008, 14.7601995}, //
+
19156 {3.96386003, 14.7703896}, //
+
19157 {3.96034002, 14.77987}, //
+
19158 {3.95648003, 14.7886295}, //
+
19159 {3.95228004, 14.79669}, //
+
19160 {3.94776011, 14.8040304}, //
+
19161 {3.94288993, 14.8106699}, //
+
19162 {3.93770003, 14.8165903}, //
+
19163 {3.93216991, 14.8218002}, //
+
19164 {3.92630005, 14.8262997}, //
+
19165 {3.92006993, 14.8303404}, //
+
19166 {3.91341996, 14.8341703}, //
+
19167 {3.9063499, 14.8377895}, //
+
19168 {3.89885998, 14.8412104}, //
+
19169 {3.89095998, 14.8444099}, //
+
19170 {3.88263011, 14.8474102}, //
+
19171 {3.87388992, 14.8501997}, //
+
19172 {3.86472988, 14.8527803}, //
+
19173 {3.85514998, 14.8551502}, //
+
19174 {3.85288, 14.8558998}, //
+
19175 {3.85062003, 14.8566599}, //
+
19176 {3.84836006, 14.8574104}, //
+
19177 {3.84609008, 14.85816}, //
+
19178 {3.83930993, 14.8604097}, //
+
19179 {3.83705997, 14.8611498}, //
+
19180 {3.8348, 14.8619003}, //
+
19181 {3.90429997, 14.8619003}, //
+
19182 {3.9107101, 14.8618603}, //
+
19183 {3.91711998, 14.8617296}, //
+
19184 {3.9235301, 14.8615198}, //
+
19185 {3.92992997, 14.8612299}, //
+
19186 {3.93634009, 14.8608503}, //
+
19187 {3.94273996, 14.8603897}, //
+
19188 {3.94915009, 14.8598404}, //
+
19189 {3.95554996, 14.85921}, //
+
19190 {3.96195006, 14.8584995}, //
+
19191 {3.96819997, 14.8577099}, //
+
19192 {3.97415996, 14.8568401}, //
+
19193 {3.97983003, 14.8558798}, //
+
19194 {3.98520994, 14.8548403}, //
+
19195 {3.99028993, 14.8537102}, //
+
19196 {3.99507999, 14.8525}, //
+
19197 {3.99957991, 14.8512001}, //
+
19198 {4.0037899, 14.8498201}, //
+
19199 {4.00769997, 14.8483496}, //
+
19200 {4.01170015, 14.8467703}, //
+
19201 {4.01615, 14.8450098}, //
+
19202 {4.02107, 14.8430901}, //
+
19203 {4.02645016, 14.8409996}, //
+
19204 {4.03228998, 14.8387403}, //
+
19205 {4.03858995, 14.8363104}, //
+
19206 {4.04535007, 14.8337097}, //
+
19207 {4.05256987, 14.8309402}, //
+
19208 {4.06024981, 14.8280001}, //
+
19209 {4.06794024, 14.8250303}, //
+
19210 {4.07517004, 14.8221502}, //
+
19211 {4.08194017, 14.8193398}, //
+
19212 {4.08825016, 14.8166304}, //
+
19213 {4.09408998, 14.8139896}, //
+
19214 {4.09947014, 14.8114405}, //
+
19215 {4.10439014, 14.80898}, //
+
19216 {4.10885, 14.8065996}, //
+
19217 {4.11285019, 14.8043003}, //
+
19218 {4.11604977, 14.80334}, //
+
19219 {4.11962986, 14.8019505}, //
+
19220 {4.12357998, 14.8001499}, //
+
19221 {4.12791014, 14.7979298}, //
+
19222 {4.13260984, 14.79529}, //
+
19223 {4.13769007, 14.7922297}, //
+
19224 {4.14314985, 14.7887602}, //
+
19225 {4.14899015, 14.7848597}, //
+
19226 {4.1552, 14.78055}, //
+
19227 {4.16161013, 14.7758598}, //
+
19228 {4.16801977, 14.7708397}, //
+
19229 {4.17442989, 14.76548}, //
+
19230 {4.18083, 14.7597799}, //
+
19231 {4.18724012, 14.7537603}, //
+
19232 {4.19364023, 14.7473898}, //
+
19233 {4.20004988, 14.7406998}, //
+
19234 {4.20644999, 14.7336702}, //
+
19235 {4.21285009, 14.7263002}, //
+
19236 {4.21901989, 14.7185602}, //
+
19237 {4.22473001, 14.7103996}, //
+
19238 {4.22997999, 14.7018204}, //
+
19239 {4.23477983, 14.6928196}, //
+
19240 {4.23910999, 14.6834002}, //
+
19241 {4.24298, 14.6735697}, //
+
19242 {4.24639988, 14.6633101}, //
+
19243 {4.24935007, 14.6526403}, //
+
19244 {4.25185013, 14.6415501}, //
+
19245 {4.25332022, 14.6300697}, //
+
19246 {4.25470018, 14.6167603}, //
+
19247 {4.25600004, 14.6015997}, //
+
19248 {4.25720978, 14.5846004}, //
+
19249 {4.25833988, 14.5657597}, //
+
19250 {4.25937986, 14.5450802}, //
+
19251 {4.26034021, 14.5225601}, //
+
19252 {4.26120996, 14.4982004}, //
+
19253 {4.26200008, 14.4720001}, //
+
19254 {4.26262999, 14.4448404}, //
+
19255 {4.26301003, 14.4175901}, //
+
19256 {4.26313019, 14.3902597}, //
+
19257 {4.26301003, 14.3628397}, //
+
19258 {4.26262999, 14.3353395}, //
+
19259 {4.26200008, 14.3077602}, //
+
19260 {4.26111984, 14.2800903}, //
+
19261 {4.25999022, 14.2523403}, //
+
19262 {4.25860023, 14.2244997}, //
+
19263 {4.25684977, 14.1972904}, //
+
19264 {4.25459003, 14.1714201}, //
+
19265 {4.2518301, 14.1468897}, //
+
19266 {4.24856997, 14.1237001}, //
+
19267 {4.24480009, 14.1018496}, //
+
19268 {4.24053001, 14.0813398}, //
+
19269 {4.23576021, 14.06217}, //
+
19270 {4.23048019, 14.0443401}, //
+
19271 {4.22469997, 14.0278502}, //
+
19272 {4.21464014, 14.0068302}, //
+
19273 {4.20403004, 13.9859896}, //
+
19274 {4.19288015, 13.9653101}, //
+
19275 {4.18118, 13.9447899}, //
+
19276 {4.16893005, 13.9244499}, //
+
19277 {4.15613985, 13.9042702}, //
+
19278 {4.14280987, 13.8842602}, //
+
19279 {4.12893009, 13.8644199}, //
+
19280 {4.11450005, 13.8447504}, //
+
19281 {4.10024977, 13.8258305}, //
+
19282 {4.08688021, 13.8082504}, //
+
19283 {4.07438993, 13.7920103}, //
+
19284 {4.0627799, 13.7770996}, //
+
19285 {4.0520401, 13.7635298}, //
+
19286 {4.04219007, 13.7513103}, //
+
19287 {4.0332098, 13.7404203}, //
+
19288 {4.02511978, 13.7308598}, //
+
19289 {4.01789999, 13.7226496}, //
+
19290 {4.01376009, 13.7174101}, //
+
19291 {4.00886011, 13.7106895}, //
+
19292 {4.00321007, 13.7025204}, //
+
19293 {3.99679995, 13.6928701}, //
+
19294 {3.98964, 13.6817598}, //
+
19295 {3.98171997, 13.6691799}, //
+
19296 {3.97305012, 13.6551399}, //
+
19297 {3.96362996, 13.6396303}, //
+
19298 {3.95344996, 13.6226501}, //
+
19299 {3.94295001, 13.6049604}, //
+
19300 {3.93252993, 13.5873098}, //
+
19301 {3.92218995, 13.5697098}, //
+
19302 {3.91193008, 13.5521402}, //
+
19303 {3.9017601, 13.5346203}, //
+
19304 {3.89166999, 13.5171404}, //
+
19305 {3.88167, 13.4996996}, //
+
19306 {3.8717401, 13.4822998}, //
+
19307 {3.86190009, 13.4649496}, //
+
19308 {3.85253, 13.4483404}, //
+
19309 {3.84399009, 13.4331503}, //
+
19310 {3.83628988, 13.4193802}, //
+
19311 {3.8294301, 13.4070396}, //
+
19312 {3.82340002, 13.3961201}, //
+
19313 {3.81820989, 13.3866196}, //
+
19314 {3.81384993, 13.37854}, //
+
19315 {3.81032991, 13.3718796}, //
+
19316 {3.80765009, 13.3666496}, //
+
19317 {3.80681992, 13.3640804}, //
+
19318 {3.80581999, 13.3608799}, //
+
19319 {3.80466008, 13.3570604}, //
+
19320 {3.80331993, 13.3526001}, //
+
19321 {3.80181003, 13.3475199}, //
+
19322 {3.8001399, 13.3418102}, //
+
19323 {3.79830003, 13.3354702}, //
+
19324 {3.79627991, 13.3284998}, //
+
19325 {3.79410005, 13.3209}, //
+
19326 {3.79184008, 13.3128996}, //
+
19327 {3.78958988, 13.30474}, //
+
19328 {3.78732991, 13.2964096}, //
+
19329 {3.78506994, 13.2879105}, //
+
19330 {3.78280997, 13.2792501}, //
+
19331 {3.78053999, 13.2704096}, //
+
19332 {3.77828002, 13.2614098}, //
+
19333 {3.77602005, 13.2522402}, //
+
19334 {3.77375007, 13.2428999}, //
+
19335 {3.77153993, 13.2336197}, //
+
19336 {3.76939988, 13.2246399}, //
+
19337 {3.76735997, 13.2159595}, //
+
19338 {3.76538992, 13.2075596}, //
+
19339 {3.76350999, 13.19946}, //
+
19340 {3.76170993, 13.1916599}, //
+
19341 {3.75998998, 13.1841402}, //
+
19342 {3.7583499, 13.1769199}, //
+
19343 {3.75679994, 13.1700001}, //
+
19344 {3.75038004, 13.1410103}, //
+
19345 {3.75012994, 13.1398802}, //
+
19346 {3.75005007, 13.1394997}, //
+
19347 {3.74988008, 13.14151}, //
+
19348 {3.74967003, 13.1440201}, //
+
19349 {3.74900007, 13.15205}, //
+
19350 {3.74853992, 13.1575699}, //
+
19351 {3.74664998, 13.18015}, //
+
19352 {3.74598002, 13.1893797}, //
+
19353 {3.74547005, 13.1989899}, //
+
19354 {3.74514008, 13.2089796}, //
+
19355 {3.74497008, 13.2193403}, //
+
19356 {3.74497008, 13.2300797}, //
+
19357 {3.74514008, 13.24119}, //
+
19358 {3.74547005, 13.2526903}, //
+
19359 {3.74598002, 13.2645502}, //
+
19360 {3.74664998, 13.2768002}, //
+
19361 {3.74757004, 13.2891302}, //
+
19362 {3.74883008, 13.3012505}, //
+
19363 {3.75042009, 13.3131599}, //
+
19364 {3.75235009, 13.3248501}, //
+
19365 {3.75461006, 13.33634}, //
+
19366 {3.75721002, 13.34762}, //
+
19367 {3.76013994, 13.3586903}, //
+
19368 {3.76340008, 13.3695498}, //
+
19369 {3.76699996, 13.3802004}, //
+
19370 {3.77080989, 13.3888197}, //
+
19371 {3.77469993, 13.3981199}, //
+
19372 {3.77868009, 13.4080801}, //
+
19373 {3.78274012, 13.4187202}, //
+
19374 {3.78688002, 13.4300203}, //
+
19375 {3.79111004, 13.4420004}, //
+
19376 {3.79541993, 13.4546499}, //
+
19377 {3.79981995, 13.4679604}, //
+
19378 {3.80430007, 13.4819498}, //
+
19379 {3.80969, 13.4993801}, //
+
19380 {3.81534004, 13.5170097}, //
+
19381 {3.82122993, 13.5348597}, //
+
19382 {3.82737994, 13.5529203}, //
+
19383 {3.83378005, 13.5711803}, //
+
19384 {3.84043002, 13.5896597}, //
+
19385 {3.84734011, 13.6083498}, //
+
19386 {3.85449004, 13.6272402}, //
+
19387 {3.86190009, 13.6463499}, //
+
19388 {3.86964989, 13.6654301}, //
+
19389 {3.87782001, 13.6842098}, //
+
19390 {3.88641, 13.7026901}, //
+
19391 {3.89542007, 13.72089}, //
+
19392 {3.90483999, 13.7387896}, //
+
19393 {3.91468, 13.7563896}, //
+
19394 {3.9249301, 13.7737103}, //
+
19395 {3.93561006, 13.7907305}, //
+
19396 {3.9467001, 13.8074503}, //
+
19397 {3.96371007, 13.8312502}, //
+
19398 {3.9800899, 13.8559198}, //
+
19399 {3.99584007, 13.8814697}, //
+
19400 {4.01097012, 13.9078999}, //
+
19401 {4.02546978, 13.9352198}, //
+
19402 {4.03934002, 13.9634104}, //
+
19403 {4.05258989, 13.9924698}, //
+
19404 {4.06520987, 14.0224199}, //
+
19405 {4.07719994, 14.0532503}, //
+
19406 {4.08831978, 14.0848303}, //
+
19407 {4.09830999, 14.1170397}, //
+
19408 {4.1071701, 14.1498804}, //
+
19409 {4.11490011, 14.1833401}, //
+
19410 {4.12149, 14.2174397}, //
+
19411 {4.1269598, 14.2521601}, //
+
19412 {4.13128996, 14.2875099}, //
+
19413 {4.13448, 14.3234901}, //
+
19414 {4.13654995, 14.3600998}, //
+
19415 {4.13725996, 14.3971901}, //
+
19416 {4.13788986, 14.4316101}, //
+
19417 {4.13844013, 14.4633398}, //
+
19418 {4.1388998, 14.4923897}, //
+
19419 {4.13927984, 14.5187597}, //
+
19420 {4.13957024, 14.5424604}, //
+
19421 {4.13978004, 14.5634699}, //
+
19422 {4.13991022, 14.5818005}, //
+
19423 {4.1399498, 14.5974503}, //
+
19424 {4.1399498, 14.6720505}, //
+
19425 {4.13980007, 14.6743898}, //
+
19426 {4.13935995, 14.6768999}, //
+
19427 {4.13862991, 14.6795702}, //
+
19428 {4.13759995, 14.6824198}, //
+
19429 {4.13628006, 14.6854296}, //
+
19430 {4.13465977, 14.6886101}, //
+
19431 {4.13275003, 14.6919498}, //
+
19432 {4.13054991, 14.6954699}, //
+
19433 {4.12804985, 14.6991501}, //
+
19434 {4.12537003, 14.7028904}, //
+
19435 {4.12262011, 14.7065401}, //
+
19436 {4.11977005, 14.7101002}, //
+
19437 {4.1168499, 14.7135801}, //
+
19438 {4.11383009, 14.7169704}, //
+
19439 {4.11074018, 14.7202797}, //
+
19440 {4.10756016, 14.7235098}, //
+
19441 {4.10430002, 14.7266502}, //
+
19442 {4.10094976, 14.7297001}, //
+
19443 {4.09759998, 14.73248}, //
+
19444 {4.09433985, 14.7348003}, //
+
19445 {4.09115982, 14.73666}, //
+
19446 {4.0880599, 14.73806}, //
+
19447 {4.08504009, 14.7390003}, //
+
19448 {4.08210993, 14.73948}, //
+
19449 {4.07924986, 14.7395}, //
+
19450 {4.07648993, 14.7390499}, //
+
19451 {4.07380009, 14.7381496}, //
+
19452 {4.07122993, 14.7366695}, //
+
19453 {4.06878996, 14.7344799}, //
+
19454 {4.06647015, 14.7315702}, //
+
19455 {4.06427002, 14.7279501}, //
+
19456 {4.06221008, 14.7236204}, //
+
19457 {4.06026983, 14.7185698}, //
+
19458 {4.05845022, 14.7128096}, //
+
19459 {4.05675983, 14.7063398}, //
+
19460 {4.0552001, 14.6991501}, //
+
19461 {4.05360985, 14.6831198}, //
+
19462 {4.05183983, 14.6666698}, //
+
19463 {4.04992008, 14.6498003}, //
+
19464 {4.04782009, 14.6325102}, //
+
19465 {4.04555988, 14.61481}, //
+
19466 {4.04312992, 14.5966797}, //
+
19467 {4.04054022, 14.5781403}, //
+
19468 {4.03777981, 14.5591803}, //
+
19469 {4.03485012, 14.5397997}, //
+
19470 {4.0318799, 14.52071}, //
+
19471 {4.02898979, 14.5026302}, //
+
19472 {4.0261898, 14.4855604}, //
+
19473 {4.02346992, 14.4694796}, //
+
19474 {4.02083015, 14.4544201}, //
+
19475 {4.01827002, 14.4403601}, //
+
19476 {4.0158, 14.4273005}, //
+
19477 {4.01341009, 14.4152498}, //
+
19478 {4.01109982, 14.4041996}, //
+
19479 {4.01030016, 14.3987103}, //
+
19480 {4.00941992, 14.3928099}, //
+
19481 {4.00846004, 14.3864803}, //
+
19482 {4.00742006, 14.3797398}, //
+
19483 {4.00628996, 14.3725796}, //
+
19484 {4.00508022, 14.3649998}, //
+
19485 {4.00377989, 14.3570004}, //
+
19486 {4.00240993, 14.3485899}, //
+
19487 {4.00094986, 14.3397503}, //
+
19488 {3.99931002, 14.3244495}, //
+
19489 {3.99743009, 14.3086996}, //
+
19490 {3.99529004, 14.2924805}, //
+
19491 {3.99289989, 14.2757998}, //
+
19492 {3.99025989, 14.2586603}, //
+
19493 {3.98737001, 14.2410603}, //
+
19494 {3.98423004, 14.2229996}, //
+
19495 {3.98083997, 14.2044802}, //
+
19496 {3.97720003, 14.1855001}, //
+
19497 {3.97322011, 14.1663904}, //
+
19498 {3.96883011, 14.1475}, //
+
19499 {3.96402001, 14.1288099}, //
+
19500 {3.95879006, 14.1103201}, //
+
19501 {3.95314002, 14.0920496}, //
+
19502 {3.94706988, 14.0739899}, //
+
19503 {3.94057989, 14.0561304}, //
+
19504 {3.93367004, 14.0384903}, //
+
19505 {3.92635012, 14.0210505}, //
+
19506 {3.92334008, 14.0149803}, //
+
19507 {3.92033005, 14.0088196}, //
+
19508 {3.91731, 14.0025797}, //
+
19509 {3.91429996, 13.9962502}, //
+
19510 {3.91127992, 13.98985}, //
+
19511 {3.90826011, 13.9833603}, //
+
19512 {3.90524006, 13.9767904}, //
+
19513 {3.90222001, 13.9701405}, //
+
19514 {3.89919996, 13.9633999}, //
+
19515 {3.88876009, 13.9430304}, //
+
19516 {3.87853003, 13.9226303}, //
+
19517 {3.86851001, 13.9021797}, //
+
19518 {3.85869002, 13.88169}, //
+
19519 {3.8490901, 13.8611498}, //
+
19520 {3.83968997, 13.84058}, //
+
19521 {3.83049989, 13.8199596}, //
+
19522 {3.82152009, 13.7993002}, //
+
19523 {3.8127501, 13.7785997}, //
+
19524 {3.80444002, 13.7583303}, //
+
19525 {3.79683995, 13.7389297}, //
+
19526 {3.78995991, 13.7204199}, //
+
19527 {3.7837801, 13.7027798}, //
+
19528 {3.77832007, 13.6860199}, //
+
19529 {3.77357006, 13.6701298}, //
+
19530 {3.76954007, 13.6551304}, //
+
19531 {3.76621008, 13.6409998}, //
+
19532 {3.76360011, 13.6277504}, //
+
19533 {3.75933003, 13.6058102}, //
+
19534 {3.75406003, 13.5837097}, //
+
19535 {3.74778008, 13.56143}, //
+
19536 {3.74048996, 13.53899}, //
+
19537 {3.73219991, 13.5163898}, //
+
19538 {3.72290993, 13.4936199}, //
+
19539 {3.71261001, 13.4706802}, //
+
19540 {3.70130992, 13.4475698}, //
+
19541 {3.68899989, 13.4243002}, //
+
19542 {3.68528008, 13.4160995}, //
+
19543 {3.6816299, 13.4080601}, //
+
19544 {3.67808008, 13.4001904}, //
+
19545 {3.67459989, 13.3924904}, //
+
19546 {3.67122006, 13.3849497}, //
+
19547 {3.6679101, 13.3775902}, //
+
19548 {3.66469002, 13.3703899}, //
+
19549 {3.66155005, 13.3633604}, //
+
19550 {3.65849996, 13.3564997}, //
+
19551 {3.65622997, 13.3505497}, //
+
19552 {3.65397, 13.3447704}, //
+
19553 {3.65171003, 13.33916}, //
+
19554 {3.64944005, 13.3337097}, //
+
19555 {3.64718008, 13.3284302}, //
+
19556 {3.64492011, 13.3233204}, //
+
19557 {3.6426599, 13.3183804}, //
+
19558 {3.64040995, 13.3136101}, //
+
19559 {3.63814998, 13.309}, //
+
19560 {3.63015008, 13.2927198}, //
+
19561 {3.62275004, 13.2770205}, //
+
19562 {3.61592007, 13.2619104}, //
+
19563 {3.60968995, 13.2473803}, //
+
19564 {3.60403991, 13.2334404}, //
+
19565 {3.59896994, 13.2200899}, //
+
19566 {3.59450006, 13.2073202}, //
+
19567 {3.59060001, 13.1951399}, //
+
19568 {3.58730006, 13.1835499}, //
+
19569 {3.58635998, 13.1765003}, //
+
19570 {3.58504009, 13.16891}, //
+
19571 {3.58333993, 13.1607704}, //
+
19572 {3.58126998, 13.1520796}, //
+
19573 {3.57881999, 13.1428604}, //
+
19574 {3.57598996, 13.1330795}, //
+
19575 {3.57278991, 13.1227703}, //
+
19576 {3.56921005, 13.1119099}, //
+
19577 {3.56524992, 13.1005001}, //
+
19578 {3.56103992, 13.0888395}, //
+
19579 {3.55671, 13.0772305}, //
+
19580 {3.55224991, 13.0656605}, //
+
19581 {3.54766011, 13.0541201}, //
+
19582 {3.54294991, 13.0426397}, //
+
19583 {3.53812003, 13.0311899}, //
+
19584 {3.53314996, 13.0197802}, //
+
19585 {3.52805996, 13.00842}, //
+
19586 {3.52285004, 12.9970999}, //
+
19587 {3.5206399, 12.9904203}, //
+
19588 {3.51850009, 12.9839401}, //
+
19589 {3.51645994, 12.9776802}, //
+
19590 {3.51448989, 12.9716196}, //
+
19591 {3.51260996, 12.9657803}, //
+
19592 {3.5108099, 12.9601402}, //
+
19593 {3.50908995, 12.9547195}, //
+
19594 {3.5074501, 12.9495001}, //
+
19595 {3.50589991, 12.9445}, //
+
19596 {3.50444007, 12.9398003}, //
+
19597 {3.50307012, 12.9354696}, //
+
19598 {3.50177002, 12.9315205}, //
+
19599 {3.50056005, 12.9279499}, //
+
19600 {3.49942994, 12.9247503}, //
+
19601 {3.49838996, 12.9219198}, //
+
19602 {3.49743009, 12.9194698}, //
+
19603 {3.49655008, 12.9174004}, //
+
19604 {3.49574995, 12.9157}, //
+
19605 {3.49574995, 12.8410997}, //
+
19606 {3.37365007, 12.8106003}, //
+
19607 });
+
19608 polys.push_back({
+
19609 {3.12282991, 12.7564096}, //
+
19610 {3.12309003, 12.7566004}, //
+
19611 {3.12350988, 12.7569103}, //
+
19612 {3.12408996, 12.75735}, //
+
19613 {3.12485003, 12.7579098}, //
+
19614 {3.12577009, 12.7585897}, //
+
19615 {3.1268599, 12.7594004}, //
+
19616 {3.12811995, 12.7603397}, //
+
19617 {3.12954998, 12.7614002}, //
+
19618 {3.13107991, 12.7625999}, //
+
19619 {3.1326499, 12.7639198}, //
+
19620 {3.13426995, 12.7653599}, //
+
19621 {3.13592005, 12.7669296}, //
+
19622 {3.13760996, 12.76863}, //
+
19623 {3.13934994, 12.7704401}, //
+
19624 {3.14112997, 12.7723904}, //
+
19625 {3.14294004, 12.7744598}, //
+
19626 {3.14479995, 12.7766504}, //
+
19627 {3.1466701, 12.7789602}, //
+
19628 {3.14848995, 12.7813501}, //
+
19629 {3.15026999, 12.7838202}, //
+
19630 {3.15200996, 12.7863798}, //
+
19631 {3.15370011, 12.7890196}, //
+
19632 {3.15535998, 12.7917404}, //
+
19633 {3.15696001, 12.7945404}, //
+
19634 {3.15853, 12.79743}, //
+
19635 {3.16004992, 12.8003998}, //
+
19636 {3.16173005, 12.8030005}, //
+
19637 {3.16373992, 12.8062696}, //
+
19638 {3.16609001, 12.8102102}, //
+
19639 {3.16877007, 12.8148203}, //
+
19640 {3.17178988, 12.8200998}, //
+
19641 {3.1751399, 12.8260403}, //
+
19642 {3.17881989, 12.8326597}, //
+
19643 {3.18284988, 12.8399496}, //
+
19644 {3.18720007, 12.8479004}, //
+
19645 {3.19471002, 12.85711}, //
+
19646 {3.20217991, 12.8666601}, //
+
19647 {3.20960999, 12.8765402}, //
+
19648 {3.21700001, 12.8867502}, //
+
19649 {3.22433996, 12.8972998}, //
+
19650 {3.2316401, 12.9081898}, //
+
19651 {3.23889995, 12.9194098}, //
+
19652 {3.24611998, 12.9309597}, //
+
19653 {3.25329995, 12.9428501}, //
+
19654 {3.26023006, 12.9547396}, //
+
19655 {3.26669002, 12.9662905}, //
+
19656 {3.27270007, 12.9775105}, //
+
19657 {3.27824998, 12.98839}, //
+
19658 {3.28333998, 12.99893}, //
+
19659 {3.28797007, 13.00914}, //
+
19660 {3.29214001, 13.0190096}, //
+
19661 {3.29585004, 13.0285501}, //
+
19662 {3.29909992, 13.0377502}, //
+
19663 {3.30148005, 13.0457401}, //
+
19664 {3.30411005, 13.0546598}, //
+
19665 {3.30699992, 13.0644999}, //
+
19666 {3.31013989, 13.0752602}, //
+
19667 {3.31352997, 13.0869398}, //
+
19668 {3.3171699, 13.0995502}, //
+
19669 {3.32105994, 13.11308}, //
+
19670 {3.32520008, 13.1275301}, //
+
19671 {3.3296001, 13.1429005}, //
+
19672 {3.33341002, 13.1579199}, //
+
19673 {3.33730006, 13.1728697}, //
+
19674 {3.34127998, 13.1877203}, //
+
19675 {3.34534001, 13.2025003}, //
+
19676 {3.34947991, 13.2171803}, //
+
19677 {3.35370994, 13.2317896}, //
+
19678 {3.35802007, 13.2463102}, //
+
19679 {3.36242008, 13.2607498}, //
+
19680 {3.36689997, 13.2750998}, //
+
19681 {3.37134004, 13.2890902}, //
+
19682 {3.37561011, 13.3023996}, //
+
19683 {3.37970996, 13.3150501}, //
+
19684 {3.38365006, 13.3270302}, //
+
19685 {3.38740993, 13.3383303}, //
+
19686 {3.39101005, 13.3489704}, //
+
19687 {3.39443994, 13.3589296}, //
+
19688 {3.39770007, 13.3682299}, //
+
19689 {3.40079999, 13.3768501}, //
+
19690 {3.40531993, 13.3917503}, //
+
19691 {3.40984011, 13.4078197}, //
+
19692 {3.41437006, 13.4250603}, //
+
19693 {3.41889, 13.4434795}, //
+
19694 {3.42340994, 13.4630699}, //
+
19695 {3.42793012, 13.4838305}, //
+
19696 {3.43246007, 13.5057602}, //
+
19697 {3.43698001, 13.5288696}, //
+
19698 {3.44149995, 13.5531502}, //
+
19699 {3.44676995, 13.57693}, //
+
19700 {3.45203996, 13.6000299}, //
+
19701 {3.45730996, 13.6224699}, //
+
19702 {3.46257997, 13.6442299}, //
+
19703 {3.46784997, 13.6653299}, //
+
19704 {3.47311997, 13.68575}, //
+
19705 {3.47839999, 13.7054996}, //
+
19706 {3.48367, 13.7245903}, //
+
19707 {3.48895001, 13.743}, //
+
19708 {3.49879003, 13.7767}, //
+
19709 {3.50871992, 13.8144903}, //
+
19710 {3.51871991, 13.85639}, //
+
19711 {3.52881002, 13.9024}, //
+
19712 {3.53898001, 13.9525003}, //
+
19713 {3.54924011, 14.0067101}, //
+
19714 {3.55958009, 14.0650196}, //
+
19715 {3.56999993, 14.12743}, //
+
19716 {3.58049989, 14.1939497}, //
+
19717 {3.58551002, 14.23211}, //
+
19718 {3.58997011, 14.2697296}, //
+
19719 {3.59387994, 14.3067904}, //
+
19720 {3.59726, 14.3433199}, //
+
19721 {3.60008001, 14.3793001}, //
+
19722 {3.60237002, 14.4147301}, //
+
19723 {3.60411, 14.4496098}, //
+
19724 {3.60529995, 14.4839497}, //
+
19725 {3.60595012, 14.5177498}, //
+
19726 {3.60622001, 14.54988}, //
+
19727 {3.6062901, 14.5792103}, //
+
19728 {3.6061399, 14.6057301}, //
+
19729 {3.60577989, 14.6294403}, //
+
19730 {3.60522008, 14.6503496}, //
+
19731 {3.60443997, 14.6684599}, //
+
19732 {3.60345006, 14.6837597}, //
+
19733 {3.60226011, 14.6962605}, //
+
19734 {3.60085011, 14.7059498}, //
+
19735 {3.60085011, 14.7263002}, //
+
19736 {3.60086989, 14.7277699}, //
+
19737 {3.60092998, 14.7291498}, //
+
19738 {3.60103989, 14.7304497}, //
+
19739 {3.60119009, 14.7316599}, //
+
19740 {3.6013701, 14.73279}, //
+
19741 {3.60160995, 14.7338305}, //
+
19742 {3.60188007, 14.7347898}, //
+
19743 {3.60219002, 14.7356596}, //
+
19744 {3.60255003, 14.7364502}, //
+
19745 {3.6029501, 14.7372103}, //
+
19746 {3.60338998, 14.7379599}, //
+
19747 {3.60386992, 14.7387199}, //
+
19748 {3.60439992, 14.7394695}, //
+
19749 {3.60495996, 14.7402296}, //
+
19750 {3.60557008, 14.7409801}, //
+
19751 {3.60622001, 14.7417402}, //
+
19752 {3.60692, 14.7424898}, //
+
19753 {3.60765004, 14.7432499}, //
+
19754 {3.60840011, 14.74331}, //
+
19755 {3.60913992, 14.7434998}, //
+
19756 {3.60988998, 14.7438097}, //
+
19757 {3.61064005, 14.7442503}, //
+
19758 {3.61139011, 14.7448101}, //
+
19759 {3.61213994, 14.7454901}, //
+
19760 {3.61289001, 14.7462997}, //
+
19761 {3.61365008, 14.7472401}, //
+
19762 {3.61439991, 14.7482996}, //
+
19763 {3.61510992, 14.7495003}, //
+
19764 {3.61574006, 14.7508202}, //
+
19765 {3.61629009, 14.7522697}, //
+
19766 {3.61675, 14.7538404}, //
+
19767 {3.61713004, 14.7555399}, //
+
19768 {3.61741996, 14.75737}, //
+
19769 {3.61763, 14.7593203}, //
+
19770 {3.61775994, 14.7614002}, //
+
19771 {3.6178, 14.7636003}, //
+
19772 {3.61765003, 14.7680197}, //
+
19773 {3.61720991, 14.7722197}, //
+
19774 {3.61648011, 14.7762203}, //
+
19775 {3.61544991, 14.7800102}, //
+
19776 {3.61413002, 14.7835903}, //
+
19777 {3.61250997, 14.7869596}, //
+
19778 {3.61059999, 14.7901096}, //
+
19779 {3.60840011, 14.7930603}, //
+
19780 {3.60590005, 14.7958002}, //
+
19781 {3.59781003, 14.8038902}, //
+
19782 {3.59503007, 14.8066797}, //
+
19783 {3.59221005, 14.8095102}, //
+
19784 {3.58933997, 14.8123798}, //
+
19785 {3.58644009, 14.8152905}, //
+
19786 {3.58348989, 14.8182497}, //
+
19787 {3.58049989, 14.82125}, //
+
19788 {3.57710004, 14.8246498}, //
+
19789 {3.5753901, 14.8254004}, //
+
19790 {3.57326007, 14.8261404}, //
+
19791 {3.57070994, 14.82689}, //
+
19792 {3.56773996, 14.8276396}, //
+
19793 {3.56434989, 14.8283901}, //
+
19794 {3.56053996, 14.8291397}, //
+
19795 {3.55631995, 14.8298903}, //
+
19796 {3.55167007, 14.8306503}, //
+
19797 {3.5466001, 14.8313999}, //
+
19798 {3.54128003, 14.83216}, //
+
19799 {3.53588009, 14.8329096}, //
+
19800 {3.53039002, 14.8336697}, //
+
19801 {3.52482009, 14.8344202}, //
+
19802 {3.51916003, 14.8351803}, //
+
19803 {3.5134201, 14.8359299}, //
+
19804 {3.50760007, 14.8366899}, //
+
19805 {3.50168991, 14.8374395}, //
+
19806 {3.49569988, 14.8381996}, //
+
19807 {3.48973989, 14.8389301}, //
+
19808 {3.48390007, 14.8396196}, //
+
19809 {3.47818995, 14.84027}, //
+
19810 {3.47261, 14.8408804}, //
+
19811 {3.46714997, 14.8414402}, //
+
19812 {3.46181011, 14.84196}, //
+
19813 {3.45659995, 14.8424301}, //
+
19814 {3.45150995, 14.8428602}, //
+
19815 {3.44654989, 14.8432503}, //
+
19816 {3.43786001, 14.8439198}, //
+
19817 {3.43432999, 14.8441896}, //
+
19818 {3.42564011, 14.8448696}, //
+
19819 {3.42481995, 14.8449297}, //
+
19820 {3.42455006, 14.8449497}, //
+
19821 {3.44229007, 14.8463802}, //
+
19822 {3.46087003, 14.84764}, //
+
19823 {3.48028994, 14.8487301}, //
+
19824 {3.50055003, 14.8496504}, //
+
19825 {3.52164006, 14.8504105}, //
+
19826 {3.54357004, 14.8509903}, //
+
19827 {3.56633997, 14.8514099}, //
+
19828 {3.58995008, 14.8516703}, //
+
19829 {3.61439991, 14.8517504}, //
+
19830 {3.6345799, 14.8525105}, //
+
19831 {3.6544199, 14.85326}, //
+
19832 {3.67392993, 14.8540201}, //
+
19833 {3.69309998, 14.8547697}, //
+
19834 {3.71194005, 14.8555298}, //
+
19835 {3.7304399, 14.8562803}, //
+
19836 {3.74861002, 14.8570404}, //
+
19837 {3.76644993, 14.85779}, //
+
19838 {3.78395009, 14.8585501}, //
+
19839 {3.78464007, 14.85853}, //
+
19840 {3.78520989, 14.85847}, //
+
19841 {3.78565001, 14.8583603}, //
+
19842 {3.78595996, 14.8582096}, //
+
19843 {3.78614998, 14.8580303}, //
+
19844 {3.78622007, 14.85779}, //
+
19845 {3.78614998, 14.8575201}, //
+
19846 {3.78595996, 14.8572102}, //
+
19847 {3.78565001, 14.8568497}, //
+
19848 {3.78520989, 14.8564501}, //
+
19849 {3.78464007, 14.8560104}, //
+
19850 {3.78395009, 14.8555298}, //
+
19851 {3.78312993, 14.8549995}, //
+
19852 {3.78219008, 14.8544397}, //
+
19853 {3.78112006, 14.8538303}, //
+
19854 {3.7799201, 14.8531799}, //
+
19855 {3.77859998, 14.8524799}, //
+
19856 {3.77714992, 14.8517504}, //
+
19857 {3.77565002, 14.8509903}, //
+
19858 {3.77414989, 14.8502398}, //
+
19859 {3.77263999, 14.8494797}, //
+
19860 {3.7711401, 14.8487301}, //
+
19861 {3.76962996, 14.84797}, //
+
19862 {3.76813006, 14.8472204}, //
+
19863 {3.76661992, 14.8464603}, //
+
19864 {3.76511002, 14.8457098}, //
+
19865 {3.76360011, 14.8449497}, //
+
19866 {3.76062989, 14.8434696}, //
+
19867 {3.75774002, 14.8420296}, //
+
19868 {3.75494003, 14.8406296}, //
+
19869 {3.75221992, 14.8392801}, //
+
19870 {3.74957991, 14.8379602}, //
+
19871 {3.74702001, 14.8366804}, //
+
19872 {3.74454999, 14.8354502}, //
+
19873 {3.74216008, 14.8342505}, //
+
19874 {3.73985004, 14.8331003}, //
+
19875 {3.73767996, 14.8319902}, //
+
19876 {3.73567009, 14.8309202}, //
+
19877 {3.73382998, 14.8298903}, //
+
19878 {3.73216009, 14.8289099}, //
+
19879 {3.73065996, 14.8279696}, //
+
19880 {3.72932005, 14.8270798}, //
+
19881 {3.72814012, 14.82623}, //
+
19882 {3.72713995, 14.8254204}, //
+
19883 {3.7263, 14.8246498}, //
+
19884 {3.72632003, 14.8238897}, //
+
19885 {3.72638011, 14.8231401}, //
+
19886 {3.72649002, 14.8223801}, //
+
19887 {3.72663999, 14.8216295}, //
+
19888 {3.72681999, 14.8208704}, //
+
19889 {3.72706008, 14.8201199}, //
+
19890 {3.72732997, 14.8193598}, //
+
19891 {3.72763991, 14.8186102}, //
+
19892 {3.72799993, 14.8178501}, //
+
19893 {3.72839999, 14.81709}, //
+
19894 {3.72884011, 14.8163404}, //
+
19895 {3.72932005, 14.8155804}, //
+
19896 {3.72985005, 14.8148298}, //
+
19897 {3.7304101, 14.8140697}, //
+
19898 {3.73101997, 14.8133202}, //
+
19899 {3.7316699, 14.8125601}, //
+
19900 {3.7323699, 14.8118095}, //
+
19901 {3.73309994, 14.8110504}, //
+
19902 {3.73463988, 14.8102102}, //
+
19903 {3.73626995, 14.8092098}, //
+
19904 {3.73797989, 14.8080301}, //
+
19905 {3.73976994, 14.8066902}, //
+
19906 {3.7416501, 14.8051901}, //
+
19907 {3.74360991, 14.8035202}, //
+
19908 {3.74566007, 14.8016796}, //
+
19909 {3.7477901, 14.7996702}, //
+
19910 {3.75, 14.7974997}, //
+
19911 {3.7521801, 14.7950802}, //
+
19912 {3.75419998, 14.7923203}, //
+
19913 {3.7560401, 14.7892199}, //
+
19914 {3.75771999, 14.7857904}, //
+
19915 {3.7592299, 14.7820196}, //
+
19916 {3.76058006, 14.7779198}, //
+
19917 {3.76174998, 14.7734804}, //
+
19918 {3.76275992, 14.7687101}, //
+
19919 {3.76360011, 14.7636003}, //
+
19920 {3.76623988, 14.7426701}, //
+
19921 {3.76660991, 14.7175598}, //
+
19922 {3.76472998, 14.6882601}, //
+
19923 {3.76058006, 14.6547804}, //
+
19924 {3.75417995, 14.6170998}, //
+
19925 {3.7455101, 14.5752401}, //
+
19926 {3.73458004, 14.5291996}, //
+
19927 {3.72140002, 14.4789696}, //
+
19928 {3.70595002, 14.4245501}, //
+
19929 {3.70067, 14.4010601}, //
+
19930 {3.6954, 14.3758097}, //
+
19931 {3.69011998, 14.3488102}, //
+
19932 {3.68484998, 14.3200502}, //
+
19933 {3.67957997, 14.2895298}, //
+
19934 {3.67430997, 14.2572603}, //
+
19935 {3.66903996, 14.2232304}, //
+
19936 {3.66376996, 14.1874399}, //
+
19937 {3.65849996, 14.1499004}, //
+
19938 {3.65041995, 14.0985298}, //
+
19939 {3.64125991, 14.0438995}, //
+
19940 {3.63100004, 13.9860096}, //
+
19941 {3.6196599, 13.9248505}, //
+
19942 {3.60721993, 13.8604298}, //
+
19943 {3.59369993, 13.7927399}, //
+
19944 {3.57909012, 13.7217903}, //
+
19945 {3.56339002, 13.6475801}, //
+
19946 {3.5466001, 13.5700998}, //
+
19947 {3.53427005, 13.5237398}, //
+
19948 {3.52139997, 13.4780998}, //
+
19949 {3.50798011, 13.4331703}, //
+
19950 {3.49401999, 13.3889399}, //
+
19951 {3.47952008, 13.3454304}, //
+
19952 {3.46446991, 13.3026304}, //
+
19953 {3.44886994, 13.26054}, //
+
19954 {3.43272996, 13.2191696}, //
+
19955 {3.41604996, 13.1785002}, //
+
19956 {3.39928007, 13.1390696}, //
+
19957 {3.38288999, 13.1013899}, //
+
19958 {3.36687994, 13.0654802}, //
+
19959 {3.35123992, 13.0313196}, //
+
19960 {3.33597994, 12.9989204}, //
+
19961 {3.32108998, 12.9682798}, //
+
19962 {3.30659008, 12.9393902}, //
+
19963 {3.29244995, 12.9122696}, //
+
19964 {3.27870011, 12.8868999}, //
+
19965 {3.2448101, 12.8256798}, //
+
19966 {3.22447991, 12.7889404}, //
+
19967 {3.21845007, 12.77806}, //
+
19968 {3.2177, 12.7767}, //
+
19969 {3.12275004, 12.7563496}, //
+
19970 });
+
19971 polys.push_back({
+
19972 {3.05049992, 14.3604097}, //
+
19973 {3.04703999, 14.3650198}, //
+
19974 {3.04294991, 14.3704596}, //
+
19975 {3.03290009, 14.3838501}, //
+
19976 {3.02718997, 14.3916798}, //
+
19977 {3.02135992, 14.4000902}, //
+
19978 {3.01538992, 14.40909}, //
+
19979 {3.00929999, 14.4186697}, //
+
19980 {3.0030899, 14.4288502}, //
+
19981 {2.9967401, 14.4396095}, //
+
19982 {2.9902699, 14.4509497}, //
+
19983 {2.98368001, 14.4628801}, //
+
19984 {2.97694993, 14.4754}, //
+
19985 {2.97330999, 14.4843197}, //
+
19986 {2.96991992, 14.4929895}, //
+
19987 {2.96677995, 14.5014}, //
+
19988 {2.96390009, 14.5095596}, //
+
19989 {2.96126008, 14.5174704}, //
+
19990 {2.95887995, 14.5251303}, //
+
19991 {2.95674992, 14.5325403}, //
+
19992 {2.95488, 14.5396996}, //
+
19993 {2.95324993, 14.5466003}, //
+
19994 {2.95157003, 14.5542202}, //
+
19995 {2.94955993, 14.5620003}, //
+
19996 {2.94721007, 14.5699596}, //
+
19997 {2.94453001, 14.5780802}, //
+
19998 {2.94150996, 14.5863705}, //
+
19999 {2.93815994, 14.59482}, //
+
20000 {2.93447995, 14.6034498}, //
+
20001 {2.93044996, 14.6122398}, //
+
20002 {2.92610002, 14.6211996}, //
+
20003 {2.92128992, 14.6305399}, //
+
20004 {2.91588998, 14.64046}, //
+
20005 {2.90989995, 14.6509705}, //
+
20006 {2.90333009, 14.6620598}, //
+
20007 {2.8961699, 14.6737404}, //
+
20008 {2.88843012, 14.6859999}, //
+
20009 {2.88011003, 14.6988497}, //
+
20010 {2.87120008, 14.7122803}, //
+
20011 {2.86170006, 14.7263002}, //
+
20012 {2.85119009, 14.7386503}, //
+
20013 {2.84075999, 14.7500801}, //
+
20014 {2.83041, 14.7605896}, //
+
20015 {2.8201499, 14.7701797}, //
+
20016 {2.8099699, 14.7788401}, //
+
20017 {2.79988003, 14.7865896}, //
+
20018 {2.78987002, 14.7934103}, //
+
20019 {2.77993989, 14.7993202}, //
+
20020 {2.77010012, 14.8043003}, //
+
20021 {2.76039004, 14.80861}, //
+
20022 {2.75085998, 14.8125}, //
+
20023 {2.74148011, 14.81598}, //
+
20024 {2.73228002, 14.8190298}, //
+
20025 {2.7232399, 14.82166}, //
+
20026 {2.71437001, 14.8238802}, //
+
20027 {2.7056601, 14.8256702}, //
+
20028 {2.69711995, 14.8270502}, //
+
20029 {2.68875003, 14.8280001}, //
+
20030 {2.68502998, 14.8287601}, //
+
20031 {2.68138003, 14.8295097}, //
+
20032 {2.67782998, 14.8302698}, //
+
20033 {2.67435002, 14.8310204}, //
+
20034 {2.67096996, 14.8317804}, //
+
20035 {2.66766, 14.83253}, //
+
20036 {2.66443992, 14.8332901}, //
+
20037 {2.66129994, 14.8340397}, //
+
20038 {2.65825009, 14.8347998}, //
+
20039 {2.64778996, 14.8363104}, //
+
20040 {2.63749003, 14.8378201}, //
+
20041 {2.62737012, 14.8393297}, //
+
20042 {2.61740994, 14.8408298}, //
+
20043 {2.60760999, 14.8423405}, //
+
20044 {2.59798002, 14.8438396}, //
+
20045 {2.58852005, 14.8453503}, //
+
20046 {2.57923007, 14.8468504}, //
+
20047 {2.57010007, 14.8483496}, //
+
20048 {2.56415009, 14.8491096}, //
+
20049 {2.55837011, 14.8498602}, //
+
20050 {2.55275989, 14.8506203}, //
+
20051 {2.54731989, 14.8513699}, //
+
20052 {2.54204988, 14.8521299}, //
+
20053 {2.5369401, 14.8528795}, //
+
20054 {2.53201008, 14.8536396}, //
+
20055 {2.52725005, 14.8543901}, //
+
20056 {2.52265, 14.8551502}, //
+
20057 {2.53084993, 14.8541203}, //
+
20058 {2.53620005, 14.8534498}, //
+
20059 {2.53934002, 14.8530703}, //
+
20060 {2.54272008, 14.8526897}, //
+
20061 {2.54636002, 14.8523197}, //
+
20062 {2.55025005, 14.8519402}, //
+
20063 {2.55438995, 14.8515596}, //
+
20064 {2.55877995, 14.8511801}, //
+
20065 {2.56342006, 14.8508101}, //
+
20066 {2.56831002, 14.8504295}, //
+
20067 {2.57345009, 14.85005}, //
+
20068 {2.57871008, 14.8496704}, //
+
20069 {2.58392, 14.8492899}, //
+
20070 {2.58909011, 14.8489199}, //
+
20071 {2.59422994, 14.8485403}, //
+
20072 {2.59930992, 14.8481598}, //
+
20073 {2.6043601, 14.8477802}, //
+
20074 {2.60936999, 14.8474102}, //
+
20075 {2.61433005, 14.8470297}, //
+
20076 {2.61925006, 14.8466501}, //
+
20077 {2.62408996, 14.8462896}, //
+
20078 {2.62879992, 14.8459797}, //
+
20079 {2.63337994, 14.8457098}, //
+
20080 {2.63784003, 14.8454704}, //
+
20081 {2.64217997, 14.8452902}, //
+
20082 {2.64637995, 14.8451405}, //
+
20083 {2.65046, 14.8450298}, //
+
20084 {2.6544199, 14.8449697}, //
+
20085 {2.65825009, 14.8449497}, //
+
20086 {2.66750002, 14.8440199}, //
+
20087 {2.67717004, 14.8427095}, //
+
20088 {2.68725991, 14.8410196}, //
+
20089 {2.69777012, 14.8389502}, //
+
20090 {2.70868993, 14.8365097}, //
+
20091 {2.72003007, 14.8336802}, //
+
20092 {2.73178005, 14.8304796}, //
+
20093 {2.7439599, 14.82691}, //
+
20094 {2.75655007, 14.8229504}, //
+
20095 {2.76906991, 14.8187799}, //
+
20096 {2.7809999, 14.81458}, //
+
20097 {2.79235005, 14.8103304}, //
+
20098 {2.80310988, 14.8060398}, //
+
20099 {2.81329012, 14.8016996}, //
+
20100 {2.82288003, 14.7973299}, //
+
20101 {2.83189011, 14.7929096}, //
+
20102 {2.8403101, 14.7884502}, //
+
20103 {2.84815001, 14.7839499}, //
+
20104 {2.85724998, 14.7794704}, //
+
20105 {2.8664701, 14.7735701}, //
+
20106 {2.87581992, 14.7662401}, //
+
20107 {2.88528991, 14.7574997}, //
+
20108 {2.89489007, 14.7473202}, //
+
20109 {2.90461993, 14.7357302}, //
+
20110 {2.91446996, 14.7227097}, //
+
20111 {2.92444992, 14.7082701}, //
+
20112 {2.93455005, 14.6924}, //
+
20113 {2.94449997, 14.6754503}, //
+
20114 {2.95397997, 14.6577396}, //
+
20115 {2.96301007, 14.6392803}, //
+
20116 {2.97158003, 14.62006}, //
+
20117 {2.97968006, 14.6000996}, //
+
20118 {2.98732996, 14.57938}, //
+
20119 {2.99450994, 14.5579004}, //
+
20120 {3.00124002, 14.5356798}, //
+
20121 {3.00749993, 14.5127001}, //
+
20122 {3.00902009, 14.50525}, //
+
20123 {3.01058006, 14.4979696}, //
+
20124 {3.0121901, 14.4908504}, //
+
20125 {3.01383996, 14.4839001}, //
+
20126 {3.0155201, 14.4771204}, //
+
20127 {3.01726007, 14.4705}, //
+
20128 {3.01903009, 14.4640503}, //
+
20129 {3.02083993, 14.4577703}, //
+
20130 {3.02270007, 14.4516497}, //
+
20131 {3.02454996, 14.4457502}, //
+
20132 {3.02630997, 14.4401102}, //
+
20133 {3.0279901, 14.4347095}, //
+
20134 {3.02958012, 14.4295702}, //
+
20135 {3.03110003, 14.4246702}, //
+
20136 {3.03252006, 14.4200296}, //
+
20137 {3.03386998, 14.4156303}, //
+
20138 {3.03512001, 14.4114904}, //
+
20139 {3.03629994, 14.4076004}, //
+
20140 {3.03741002, 14.4039001}, //
+
20141 {3.03848004, 14.4003201}, //
+
20142 {3.03951001, 14.3968601}, //
+
20143 {3.04048991, 14.3935299}, //
+
20144 {3.04143, 14.3903303}, //
+
20145 {3.04232001, 14.3872404}, //
+
20146 {3.04316998, 14.3842897}, //
+
20147 {3.04397988, 14.3814602}, //
+
20148 {3.04474998, 14.3787498}, //
+
20149 {3.04551005, 14.3761797}, //
+
20150 {3.04626012, 14.3737297}, //
+
20151 {3.04701996, 14.3714104}, //
+
20152 {3.04777002, 14.3692102}, //
+
20153 {3.0485301, 14.3671398}, //
+
20154 {3.04927993, 14.3651896}, //
+
20155 {3.05004001, 14.3633699}, //
+
20156 {3.05079007, 14.3616695}, //
+
20157 {3.05154991, 14.3600998}, //
+
20158 {3.05227995, 14.3586597}, //
+
20159 {3.05297995, 14.3573503}, //
+
20160 {3.0534699, 14.3564501}, //
+
20161 });
+
20162 polys.push_back({
+
20163 {2.94476008, 12.7394199}, //
+
20164 {2.94137001, 12.73948}, //
+
20165 {2.93797994, 12.7395897}, //
+
20166 {2.9345901, 12.7397404}, //
+
20167 {2.93121004, 12.7399197}, //
+
20168 {2.92781997, 12.74016}, //
+
20169 {2.92442989, 12.7404299}, //
+
20170 {2.92104006, 12.7407398}, //
+
20171 {2.91764998, 12.7411003}, //
+
20172 {2.91431999, 12.7414598}, //
+
20173 {2.91111994, 12.7417698}, //
+
20174 {2.90804005, 12.7420397}, //
+
20175 {2.90509009, 12.74228}, //
+
20176 {2.90226007, 12.7424603}, //
+
20177 {2.89955997, 12.74261}, //
+
20178 {2.89698005, 12.7427197}, //
+
20179 {2.89453006, 12.7427797}, //
+
20180 {2.89219999, 12.7427998}, //
+
20181 {2.88205004, 12.7427998}, //
+
20182 {2.92725992, 12.8083897}, //
+
20183 {2.96794009, 12.8695498}, //
+
20184 {3.0041101, 12.9262695}, //
+
20185 {3.03574991, 12.97855}, //
+
20186 {3.06287003, 13.0263901}, //
+
20187 {3.08546996, 13.0698004}, //
+
20188 {3.10354996, 13.1087704}, //
+
20189 {3.11711001, 13.1433001}, //
+
20190 {3.12614989, 13.1733999}, //
+
20191 {3.12989998, 13.1878405}, //
+
20192 {3.1336, 13.2025299}, //
+
20193 {3.13725996, 13.2174702}, //
+
20194 {3.14088011, 13.2326603}, //
+
20195 {3.14445996, 13.2481003}, //
+
20196 {3.14798999, 13.2637997}, //
+
20197 {3.15148997, 13.2797499}, //
+
20198 {3.15493989, 13.2959499}, //
+
20199 {3.15834999, 13.3123999}, //
+
20200 {3.16160011, 13.3288498}, //
+
20201 {3.16456008, 13.3450499}, //
+
20202 {3.16722012, 13.3610001}, //
+
20203 {3.16959, 13.3767004}, //
+
20204 {3.17165995, 13.3921404}, //
+
20205 {3.17343998, 13.4073296}, //
+
20206 {3.17492008, 13.4222698}, //
+
20207 {3.17611003, 13.4369602}, //
+
20208 {3.17700005, 13.4513998}, //
+
20209 {3.17855, 13.4621601}, //
+
20210 {3.18019009, 13.4733496}, //
+
20211 {3.18191004, 13.4849396}, //
+
20212 {3.1837101, 13.4969597}, //
+
20213 {3.18559003, 13.5093899}, //
+
20214 {3.18756008, 13.5222397}, //
+
20215 {3.18959999, 13.5355101}, //
+
20216 {3.19174004, 13.5492001}, //
+
20217 {3.19394994, 13.5633001}, //
+
20218 {3.19839001, 13.5818901}, //
+
20219 {3.20266008, 13.60149}, //
+
20220 {3.20676994, 13.6220798}, //
+
20221 {3.21071005, 13.6436901}, //
+
20222 {3.21447992, 13.6662903}, //
+
20223 {3.21808004, 13.6899004}, //
+
20224 {3.22151995, 13.71451}, //
+
20225 {3.2247901, 13.7401304}, //
+
20226 {3.22790003, 13.7667503}, //
+
20227 {3.22865009, 13.7763004}, //
+
20228 {3.22938991, 13.7853403}, //
+
20229 {3.23013997, 13.7938805}, //
+
20230 {3.23089004, 13.8019199}, //
+
20231 {3.2316401, 13.8094501}, //
+
20232 {3.23238993, 13.8164797}, //
+
20233 {3.23313999, 13.8230104}, //
+
20234 {3.23390007, 13.82903}, //
+
20235 {3.2346499, 13.8345499}, //
+
20236 {3.23543, 13.8396797}, //
+
20237 {3.23623991, 13.8445196}, //
+
20238 {3.23709989, 13.8490601}, //
+
20239 {3.23799992, 13.8533096}, //
+
20240 {3.23894, 13.8572702}, //
+
20241 {3.2399199, 13.8609304}, //
+
20242 {3.24094009, 13.8642998}, //
+
20243 {3.2420001, 13.8673697}, //
+
20244 {3.24309993, 13.8701496}, //
+
20245 {3.24421, 13.8727703}, //
+
20246 {3.24528003, 13.87535}, //
+
20247 {3.24631, 13.8778896}, //
+
20248 {3.24729991, 13.8803797}, //
+
20249 {3.24823999, 13.8828297}, //
+
20250 {3.24914002, 13.8852396}, //
+
20251 {3.25, 13.8875999}, //
+
20252 {3.25081992, 13.8899202}, //
+
20253 {3.25160003, 13.8922005}, //
+
20254 {3.2530899, 13.8945303}, //
+
20255 {3.25453997, 13.8969803}, //
+
20256 {3.25593996, 13.89956}, //
+
20257 {3.2572999, 13.9022598}, //
+
20258 {3.25862002, 13.9050903}, //
+
20259 {3.25989008, 13.90804}, //
+
20260 {3.26112008, 13.9111204}, //
+
20261 {3.26231003, 13.91432}, //
+
20262 {3.26344991, 13.9176502}, //
+
20263 {3.26460004, 13.9213104}, //
+
20264 {3.2658, 13.9255199}, //
+
20265 {3.26704001, 13.9302702}, //
+
20266 {3.26832008, 13.9355602}, //
+
20267 {3.26963997, 13.9413996}, //
+
20268 {3.27100992, 13.9477797}, //
+
20269 {3.27240992, 13.95471}, //
+
20270 {3.27385998, 13.9621801}, //
+
20271 {3.27535009, 13.9701996}, //
+
20272 {3.27897, 13.98491}, //
+
20273 {3.2823, 14.0004101}, //
+
20274 {3.28533006, 14.0167198}, //
+
20275 {3.28806996, 14.0338097}, //
+
20276 {3.29050994, 14.0517101}, //
+
20277 {3.29266, 14.0704002}, //
+
20278 {3.2945199, 14.0898895}, //
+
20279 {3.29608011, 14.1101704}, //
+
20280 {3.29734993, 14.1312504}, //
+
20281 {3.29841995, 14.1525803}, //
+
20282 {3.29936004, 14.1736202}, //
+
20283 {3.30017996, 14.1943598}, //
+
20284 {3.30087996, 14.2148104}, //
+
20285 {3.30144, 14.2349701}, //
+
20286 {3.30187988, 14.2548304}, //
+
20287 {3.30220008, 14.2743998}, //
+
20288 {3.3023901, 14.2936697}, //
+
20289 {3.30244994, 14.3126497}, //
+
20290 {3.30244994, 14.4041996}, //
+
20291 {3.30304003, 14.4209003}, //
+
20292 {3.30328989, 14.4378595}, //
+
20293 {3.30321002, 14.45506}, //
+
20294 {3.30278993, 14.4725199}, //
+
20295 {3.30203009, 14.4902201}, //
+
20296 {3.30094004, 14.5081797}, //
+
20297 {3.29951, 14.5263796}, //
+
20298 {3.29775, 14.5448399}, //
+
20299 {3.29565001, 14.56355}, //
+
20300 {3.29302001, 14.5822601}, //
+
20301 {3.28962994, 14.6007204}, //
+
20302 {3.28549004, 14.6189203}, //
+
20303 {3.28060007, 14.6368799}, //
+
20304 {3.27496004, 14.6545801}, //
+
20305 {3.26855993, 14.67204}, //
+
20306 {3.26141, 14.6892405}, //
+
20307 {3.25351, 14.7061996}, //
+
20308 {3.24484992, 14.7229004}, //
+
20309 {3.23861003, 14.7338696}, //
+
20310 {3.23195004, 14.7441597}, //
+
20311 {3.22486997, 14.7537899}, //
+
20312 {3.21737003, 14.7627497}, //
+
20313 {3.20945001, 14.77104}, //
+
20314 {3.2011199, 14.7786598}, //
+
20315 {3.19235992, 14.7856102}, //
+
20316 {3.18319011, 14.7918901}, //
+
20317 {3.17359996, 14.7974997}, //
+
20318 {3.16383004, 14.8025904}, //
+
20319 {3.15409994, 14.8072996}, //
+
20320 {3.14441991, 14.8116302}, //
+
20321 {3.13476992, 14.8155899}, //
+
20322 {3.12515998, 14.81917}, //
+
20323 {3.11560011, 14.8223696}, //
+
20324 {3.10608006, 14.8251896}, //
+
20325 {3.09659004, 14.82763}, //
+
20326 {3.0871501, 14.8297005}, //
+
20327 {3.07797003, 14.83148}, //
+
20328 {3.06925011, 14.8330603}, //
+
20329 {3.06098008, 14.8344202}, //
+
20330 {3.05317998, 14.8355799}, //
+
20331 {3.04584002, 14.8365202}, //
+
20332 {3.03894997, 14.8372602}, //
+
20333 {3.03252006, 14.83778}, //
+
20334 {3.02656007, 14.8381004}, //
+
20335 {3.02104998, 14.8381996}, //
+
20336 {3.0202899, 14.8389101}, //
+
20337 {3.01954007, 14.8395395}, //
+
20338 {3.01877999, 14.8400898}, //
+
20339 {3.01802993, 14.8405504}, //
+
20340 {3.01727009, 14.84093}, //
+
20341 {3.01652002, 14.8412199}, //
+
20342 {3.01575994, 14.8414297}, //
+
20343 {3.01501012, 14.8415604}, //
+
20344 {3.01425004, 14.8416004}, //
+
20345 {3.02614999, 14.8416004}, //
+
20346 {3.02952003, 14.8415604}, //
+
20347 {3.03284001, 14.8414297}, //
+
20348 {3.03612995, 14.8412199}, //
+
20349 {3.03937006, 14.84093}, //
+
20350 {3.04257011, 14.8405504}, //
+
20351 {3.04573011, 14.8400898}, //
+
20352 {3.04884005, 14.8395395}, //
+
20353 {3.05191994, 14.8389101}, //
+
20354 {3.05495, 14.8381996}, //
+
20355 {3.08544993, 14.8381996}, //
+
20356 {3.08863997, 14.8375301}, //
+
20357 {3.09215999, 14.8370199}, //
+
20358 {3.09601998, 14.8366899}, //
+
20359 {3.10020995, 14.8365202}, //
+
20360 {3.10472989, 14.8365202}, //
+
20361 {3.10958004, 14.8366899}, //
+
20362 {3.11476994, 14.8370199}, //
+
20363 {3.12029004, 14.8375301}, //
+
20364 {3.12614989, 14.8381996}, //
+
20365 {3.17700005, 14.8381996}, //
+
20366 {3.18295002, 14.8381596}, //
+
20367 {3.18873, 14.8380299}, //
+
20368 {3.19433999, 14.8378201}, //
+
20369 {3.19979, 14.8375301}, //
+
20370 {3.20507002, 14.8371496}, //
+
20371 {3.21018004, 14.8366899}, //
+
20372 {3.21512008, 14.8361397}, //
+
20373 {3.21989012, 14.8355103}, //
+
20374 {3.22449994, 14.8347998}, //
+
20375 {3.23817992, 14.8312902}, //
+
20376 {3.25211, 14.8267698}, //
+
20377 {3.26629996, 14.8212404}, //
+
20378 {3.28074002, 14.8147202}, //
+
20379 {3.29542994, 14.8071804}, //
+
20380 {3.31036997, 14.7986403}, //
+
20381 {3.32556009, 14.7890997}, //
+
20382 {3.34100008, 14.7785501}, //
+
20383 {3.35669994, 14.7670002}, //
+
20384 {3.37076998, 14.7544003}, //
+
20385 {3.3828299, 14.7361803}, //
+
20386 {3.39287996, 14.7123604}, //
+
20387 {3.40091991, 14.68293}, //
+
20388 {3.40695, 14.6478901}, //
+
20389 {3.41096997, 14.6072397}, //
+
20390 {3.41297007, 14.5609903}, //
+
20391 {3.41297007, 14.50912}, //
+
20392 {3.41094995, 14.4516497}, //
+
20393 {3.41007996, 14.4279404}, //
+
20394 {3.40895009, 14.4035101}, //
+
20395 {3.4075799, 14.3783798}, //
+
20396 {3.40595007, 14.3525295}, //
+
20397 {3.40405989, 14.3259697}, //
+
20398 {3.40193009, 14.2986898}, //
+
20399 {3.39953995, 14.27071}, //
+
20400 {3.39689994, 14.2420101}, //
+
20401 {3.39400005, 14.2125998}, //
+
20402 {3.39094996, 14.1829901}, //
+
20403 {3.38780999, 14.1536703}, //
+
20404 {3.38458991, 14.12465}, //
+
20405 {3.38127995, 14.0959196}, //
+
20406 {3.37789989, 14.0674801}, //
+
20407 {3.37441993, 14.0393295}, //
+
20408 {3.37087011, 14.0114803}, //
+
20409 {3.36721992, 13.9839201}, //
+
20410 {3.36350012, 13.9566498}, //
+
20411 {3.36128998, 13.9359303}, //
+
20412 {3.35914993, 13.9159603}, //
+
20413 {3.35711002, 13.89674}, //
+
20414 {3.35513997, 13.8782701}, //
+
20415 {3.35326004, 13.8605604}, //
+
20416 {3.35145998, 13.8436098}, //
+
20417 {3.34974003, 13.8274002}, //
+
20418 {3.34809995, 13.8119497}, //
+
20419 {3.34654999, 13.7972498}, //
+
20420 {3.34422994, 13.7712603}, //
+
20421 {3.34177995, 13.7460203}, //
+
20422 {3.33921003, 13.7215405}, //
+
20423 {3.33650994, 13.6978102}, //
+
20424 {3.33367991, 13.6748304}, //
+
20425 {3.33072996, 13.6526098}, //
+
20426 {3.32765007, 13.6311302}, //
+
20427 {3.32444, 13.6104202}, //
+
20428 {3.3211, 13.5904503}, //
+
20429 {3.31739998, 13.5701504}, //
+
20430 {3.31307006, 13.5484304}, //
+
20431 {3.30811, 13.52528}, //
+
20432 {3.30252004, 13.5007095}, //
+
20433 {3.29629993, 13.4747105}, //
+
20434 {3.28945994, 13.4472904}, //
+
20435 {3.28198004, 13.4184504}, //
+
20436 {3.27388, 13.3881903}, //
+
20437 {3.26515007, 13.3564997}, //
+
20438 {3.25960994, 13.3381596}, //
+
20439 {3.25353003, 13.3193197}, //
+
20440 {3.24689007, 13.2999697}, //
+
20441 {3.23972011, 13.2801199}, //
+
20442 {3.23200011, 13.2597704}, //
+
20443 {3.22373009, 13.2389202}, //
+
20444 {3.21491003, 13.2175703}, //
+
20445 {3.20554996, 13.1957102}, //
+
20446 {3.1956501, 13.1733503}, //
+
20447 {3.18540001, 13.1507902}, //
+
20448 {3.17497993, 13.1283197}, //
+
20449 {3.16439009, 13.1059198}, //
+
20450 {3.15364003, 13.0836096}, //
+
20451 {3.14271998, 13.0613804}, //
+
20452 {3.13162994, 13.0392399}, //
+
20453 {3.12036991, 13.0171804}, //
+
20454 {3.10893989, 12.9952002}, //
+
20455 {3.09734988, 12.9733}, //
+
20456 {3.08586001, 12.95187}, //
+
20457 {3.07474995, 12.9312801}, //
+
20458 {3.0640099, 12.9115295}, //
+
20459 {3.0536499, 12.8926096}, //
+
20460 {3.04366994, 12.8745298}, //
+
20461 {3.03406, 12.8572798}, //
+
20462 {3.0248301, 12.8408699}, //
+
20463 {3.01598001, 12.8252897}, //
+
20464 {3.00749993, 12.8105497}, //
+
20465 {2.99958992, 12.7969904}, //
+
20466 {2.99242997, 12.7849398}, //
+
20467 {2.98602009, 12.7743998}, //
+
20468 {2.98037004, 12.7653599}, //
+
20469 {2.97547007, 12.7578402}, //
+
20470 {2.97131991, 12.7518196}, //
+
20471 {2.96793008, 12.7473001}, //
+
20472 {2.96529007, 12.7442999}, //
+
20473 {2.96339989, 12.7427998}, //
+
20474 {2.96321011, 12.7420902}, //
+
20475 {2.96265006, 12.7414598}, //
+
20476 {2.96170998, 12.7409096}, //
+
20477 {2.96039009, 12.7404499}, //
+
20478 {2.95868993, 12.7400703}, //
+
20479 {2.95661998, 12.7397804}, //
+
20480 {2.95416999, 12.7395697}, //
+
20481 {2.95134997, 12.73944}, //
+
20482 {2.94814992, 12.7393999}, //
+
20483 });
+
20484 polys.push_back({
+
20485 {3.25460005, 13.0799799}, //
+
20486 {3.25367999, 13.0803299}, //
+
20487 {3.25284004, 13.0809803}, //
+
20488 {3.25207996, 13.0819197}, //
+
20489 {3.25141001, 13.0831499}, //
+
20490 {3.25081992, 13.0846701}, //
+
20491 {3.25031996, 13.0864897}, //
+
20492 {3.2499001, 13.0886002}, //
+
20493 {3.24958992, 13.09091}, //
+
20494 {3.2493999, 13.0932999}, //
+
20495 {3.24933004, 13.0957699}, //
+
20496 {3.2493999, 13.0983295}, //
+
20497 {3.24958992, 13.1009703}, //
+
20498 {3.2499001, 13.1036901}, //
+
20499 {3.25033998, 13.1064901}, //
+
20500 {3.25091004, 13.1093798}, //
+
20501 {3.25160003, 13.1123505}, //
+
20502 {3.25322008, 13.1170998}, //
+
20503 {3.25503993, 13.1223202}, //
+
20504 {3.25707006, 13.1279898}, //
+
20505 {3.25931001, 13.13412}, //
+
20506 {3.26176, 13.1407204}, //
+
20507 {3.26442003, 13.1477699}, //
+
20508 {3.26729012, 13.1552896}, //
+
20509 {3.27037001, 13.1632605}, //
+
20510 {3.27364993, 13.1716995}, //
+
20511 {3.27697992, 13.1803703}, //
+
20512 {3.28017998, 13.1890297}, //
+
20513 {3.28325009, 13.19769}, //
+
20514 {3.28620005, 13.2063599}, //
+
20515 {3.28902006, 13.2150202}, //
+
20516 {3.29171991, 13.2236795}, //
+
20517 {3.29429007, 13.2323399}, //
+
20518 {3.29673004, 13.2409897}, //
+
20519 {3.29905009, 13.24965}, //
+
20520 {3.30122995, 13.25809}, //
+
20521 {3.30325007, 13.2660599}, //
+
20522 {3.30508995, 13.2735796}, //
+
20523 {3.30677009, 13.2806301}, //
+
20524 {3.30827999, 13.2872295}, //
+
20525 {3.30962992, 13.2933598}, //
+
20526 {3.31080008, 13.2990303}, //
+
20527 {3.31181002, 13.3042498}, //
+
20528 {3.31264997, 13.309}, //
+
20529 {3.31352997, 13.3158302}, //
+
20530 {3.31466007, 13.3242502}, //
+
20531 {3.31604004, 13.33426}, //
+
20532 {3.31767988, 13.34585}, //
+
20533 {3.31956005, 13.3590403}, //
+
20534 {3.32169008, 13.3738203}, //
+
20535 {3.32407999, 13.3901901}, //
+
20536 {3.32670999, 13.4081497}, //
+
20537 {3.3296001, 13.4277}, //
+
20538 {3.33264995, 13.4481497}, //
+
20539 {3.33578992, 13.4688101}, //
+
20540 {3.33901, 13.4896698}, //
+
20541 {3.34231997, 13.5107498}, //
+
20542 {3.34570003, 13.5320301}, //
+
20543 {3.34917998, 13.5535202}, //
+
20544 {3.35273004, 13.5752201}, //
+
20545 {3.35637999, 13.5971298}, //
+
20546 {3.36010003, 13.6192503}, //
+
20547 {3.36378002, 13.64079}, //
+
20548 {3.36730003, 13.6609497}, //
+
20549 {3.37065005, 13.6797304}, //
+
20550 {3.37383008, 13.6971197}, //
+
20551 {3.37684989, 13.71313}, //
+
20552 {3.37969995, 13.7277603}, //
+
20553 {3.38238001, 13.7410097}, //
+
20554 {3.38490009, 13.7528696}, //
+
20555 {3.38724995, 13.7633495}, //
+
20556 {3.39032006, 13.7787504}, //
+
20557 {3.39352012, 13.7948198}, //
+
20558 {3.39685011, 13.8115702}, //
+
20559 {3.40030003, 13.8289804}, //
+
20560 {3.40387988, 13.8470602}, //
+
20561 {3.4075799, 13.8658199}, //
+
20562 {3.41141009, 13.8852396}, //
+
20563 {3.41536999, 13.9053402}, //
+
20564 {3.41945004, 13.9260998}, //
+
20565 {3.42336011, 13.9464903}, //
+
20566 {3.42682004, 13.9654503}, //
+
20567 {3.42981005, 13.9829903}, //
+
20568 {3.43233991, 13.9991102}, //
+
20569 {3.43442011, 14.0138102}, //
+
20570 {3.43602991, 14.0270796}, //
+
20571 {3.43718004, 14.0389299}, //
+
20572 {3.43787003, 14.0493498}, //
+
20573 {3.4381001, 14.0583496}, //
+
20574 {3.43817997, 14.0654202}, //
+
20575 {3.43843007, 14.0730801}, //
+
20576 {3.43884993, 14.0813198}, //
+
20577 {3.43943, 14.0901499}, //
+
20578 {3.44018006, 14.0995703}, //
+
20579 {3.44109988, 14.1095695}, //
+
20580 {3.44217992, 14.1201601}, //
+
20581 {3.44342995, 14.13134}, //
+
20582 {3.44484997, 14.1430998}, //
+
20583 {3.44643998, 14.1549902}, //
+
20584 {3.44821, 14.1665401}, //
+
20585 {3.45012999, 14.1777601}, //
+
20586 {3.45222998, 14.1886501}, //
+
20587 {3.45448995, 14.1991997}, //
+
20588 {3.45691991, 14.2094097}, //
+
20589 {3.45951009, 14.2192898}, //
+
20590 {3.46227002, 14.2288399}, //
+
20591 {3.46519995, 14.2380505}, //
+
20592 {3.46673012, 14.2438698}, //
+
20593 {3.4683001, 14.2507801}, //
+
20594 {3.46991992, 14.2587795}, //
+
20595 {3.47157001, 14.2678604}, //
+
20596 {3.47325993, 14.2780304}, //
+
20597 {3.4749999, 14.2892904}, //
+
20598 {3.47677994, 14.3016396}, //
+
20599 {3.47859001, 14.3150797}, //
+
20600 {3.48044991, 14.3296003}, //
+
20601 {3.48228002, 14.3446903}, //
+
20602 {3.48397994, 14.3598204}, //
+
20603 {3.48554993, 14.3749905}, //
+
20604 {3.48699999, 14.3901997}, //
+
20605 {3.48832011, 14.4054604}, //
+
20606 {3.48952007, 14.4207602}, //
+
20607 {3.4905901, 14.4361}, //
+
20608 {3.49152994, 14.4514799}, //
+
20609 {3.4923501, 14.4668999}, //
+
20610 {3.49293995, 14.4820299}, //
+
20611 {3.49319005, 14.4965296}, //
+
20612 {3.49310994, 14.5104103}, //
+
20613 {3.49269009, 14.5236597}, //
+
20614 {3.49193001, 14.5362797}, //
+
20615 {3.49083996, 14.5482798}, //
+
20616 {3.48940992, 14.5596504}, //
+
20617 {3.48764992, 14.5703897}, //
+
20618 {3.48554993, 14.5804996}, //
+
20619 {3.48253989, 14.5923004}, //
+
20620 {3.4795301, 14.60361}, //
+
20621 {3.47652006, 14.6144104}, //
+
20622 {3.47351003, 14.6246996}, //
+
20623 {3.47048998, 14.6344995}, //
+
20624 {3.46747994, 14.6437902}, //
+
20625 {3.46446991, 14.6525803}, //
+
20626 {3.46146011, 14.6608696}, //
+
20627 {3.45845008, 14.6686497}, //
+
20628 {3.45426011, 14.6779499}, //
+
20629 {3.45075011, 14.6862402}, //
+
20630 {3.44790006, 14.6935301}, //
+
20631 {3.44571996, 14.69981}, //
+
20632 {3.44422007, 14.7050896}, //
+
20633 {3.44338012, 14.7093601}, //
+
20634 {3.4432199, 14.7126303}, //
+
20635 {3.4437201, 14.7148895}, //
+
20636 {3.44490004, 14.7161503}, //
+
20637 {3.44782996, 14.7168503}, //
+
20638 {3.4505899, 14.7174702}, //
+
20639 {3.45318007, 14.7180099}, //
+
20640 {3.45560002, 14.7184696}, //
+
20641 {3.45785999, 14.7188396}, //
+
20642 {3.45993996, 14.7191296}, //
+
20643 {3.46185994, 14.7193298}, //
+
20644 {3.46361995, 14.7194595}, //
+
20645 {3.46519995, 14.7194996}, //
+
20646 {3.46667004, 14.7195196}, //
+
20647 {3.46805, 14.7195797}, //
+
20648 {3.46936011, 14.7196903}, //
+
20649 {3.47057009, 14.71984}, //
+
20650 {3.47170997, 14.7200203}, //
+
20651 {3.47275996, 14.7202597}, //
+
20652 {3.47372007, 14.7205296}, //
+
20653 {3.47460008, 14.7208405}, //
+
20654 {3.47539997, 14.7212}, //
+
20655 {3.47606993, 14.7216797}, //
+
20656 {3.4765799, 14.7223797}, //
+
20657 {3.47691011, 14.72328}, //
+
20658 {3.47708011, 14.72439}, //
+
20659 {3.47708011, 14.7257099}, //
+
20660 {3.47691011, 14.7272396}, //
+
20661 {3.4765799, 14.7289896}, //
+
20662 {3.47606993, 14.7309399}, //
+
20663 {3.47539997, 14.7330999}, //
+
20664 {3.47439003, 14.7361698}, //
+
20665 {3.47287989, 14.7393703}, //
+
20666 {3.47087002, 14.7426996}, //
+
20667 {3.46835995, 14.74615}, //
+
20668 {3.4653399, 14.7497301}, //
+
20669 {3.46181989, 14.7534304}, //
+
20670 {3.45779991, 14.7572603}, //
+
20671 {3.45327997, 14.76122}, //
+
20672 {3.44825006, 14.7652998}, //
+
20673 {3.44285989, 14.7693796}, //
+
20674 {3.43721008, 14.7733402}, //
+
20675 {3.43131995, 14.7771702}, //
+
20676 {3.42516994, 14.7808704}, //
+
20677 {3.41877007, 14.7844496}, //
+
20678 {3.4121201, 14.7879}, //
+
20679 {3.40521002, 14.7912302}, //
+
20680 {3.39806008, 14.7944298}, //
+
20681 {3.39065003, 14.7974997}, //
+
20682 {3.38774991, 14.7989302}, //
+
20683 {3.3851099, 14.80019}, //
+
20684 {3.38271999, 14.80128}, //
+
20685 {3.38057995, 14.8022003}, //
+
20686 {3.37869, 14.8029604}, //
+
20687 {3.37704992, 14.8035402}, //
+
20688 {3.37565994, 14.8039598}, //
+
20689 {3.37453008, 14.8042202}, //
+
20690 {3.37365007, 14.8043003}, //
+
20691 {3.37143993, 14.8050203}, //
+
20692 {3.36929989, 14.8057098}, //
+
20693 {3.36725998, 14.8063498}, //
+
20694 {3.36528993, 14.8069496}, //
+
20695 {3.36341, 14.8075104}, //
+
20696 {3.36160994, 14.8080301}, //
+
20697 {3.35988998, 14.8085098}, //
+
20698 {3.3582499, 14.8089504}, //
+
20699 {3.35669994, 14.80935}, //
+
20700 {3.35516, 14.8097696}, //
+
20701 {3.35352993, 14.8102703}, //
+
20702 {3.35181999, 14.8108597}, //
+
20703 {3.35001993, 14.8115301}, //
+
20704 {3.34814, 14.8122902}, //
+
20705 {3.34616995, 14.8131304}, //
+
20706 {3.34411001, 14.8140497}, //
+
20707 {3.34196997, 14.8150597}, //
+
20708 {3.33975005, 14.8161497}, //
+
20709 {3.33738995, 14.8172598}, //
+
20710 {3.33482003, 14.8183298}, //
+
20711 {3.33204007, 14.8193598}, //
+
20712 {3.32905006, 14.8203402}, //
+
20713 {3.32585001, 14.8212795}, //
+
20714 {3.32243991, 14.8221703}, //
+
20715 {3.31882, 14.82302}, //
+
20716 {3.31499004, 14.8238297}, //
+
20717 {3.31095004, 14.8246002}, //
+
20718 {3.30658007, 14.8254404}, //
+
20719 {3.30173993, 14.8264503}, //
+
20720 {3.29643989, 14.8276196}, //
+
20721 {3.29068995, 14.82897}, //
+
20722 {3.28447008, 14.8304796}, //
+
20723 {3.27779007, 14.83216}, //
+
20724 {3.27065992, 14.8339996}, //
+
20725 {3.26306009, 14.8360205}, //
+
20726 {3.25500011, 14.8381996}, //
+
20727 {3.33804989, 14.8381996}, //
+
20728 {3.34205008, 14.8381596}, //
+
20729 {3.34575009, 14.8380299}, //
+
20730 {3.34916997, 14.8378201}, //
+
20731 {3.35228992, 14.8375301}, //
+
20732 {3.35510993, 14.8371496}, //
+
20733 {3.35765004, 14.8366899}, //
+
20734 {3.35988998, 14.8361397}, //
+
20735 {3.36184001, 14.8355103}, //
+
20736 {3.36350012, 14.8347998}, //
+
20737 {3.36654997, 14.8347597}, //
+
20738 {3.36968994, 14.83463}, //
+
20739 {3.37291002, 14.8344202}, //
+
20740 {3.37621999, 14.8341303}, //
+
20741 {3.37960005, 14.8337498}, //
+
20742 {3.38308001, 14.8332901}, //
+
20743 {3.38663006, 14.8327398}, //
+
20744 {3.39028001, 14.8321104}, //
+
20745 {3.39400005, 14.8313999}, //
+
20746 {3.3970201, 14.8313599}, //
+
20747 {3.40003991, 14.8312302}, //
+
20748 {3.40305996, 14.8310204}, //
+
20749 {3.40608001, 14.8307304}, //
+
20750 {3.40910006, 14.8303499}, //
+
20751 {3.41211009, 14.8298903}, //
+
20752 {3.4151299, 14.82934}, //
+
20753 {3.41813993, 14.8287096}, //
+
20754 {3.42114997, 14.8280001}, //
+
20755 {3.4240799, 14.8272495}, //
+
20756 {3.42684007, 14.8265104}, //
+
20757 {3.42943001, 14.8257599}, //
+
20758 {3.43185997, 14.8250103}, //
+
20759 {3.43411994, 14.8242598}, //
+
20760 {3.43621993, 14.8235102}, //
+
20761 {3.43813992, 14.8227596}, //
+
20762 {3.43990993, 14.8219995}, //
+
20763 {3.44149995, 14.82125}, //
+
20764 {3.46184993, 14.82125}, //
+
20765 {3.46419001, 14.8197403}, //
+
20766 {3.46670008, 14.8182297}, //
+
20767 {3.46936989, 14.81672}, //
+
20768 {3.47221994, 14.8152103}, //
+
20769 {3.47522998, 14.8136902}, //
+
20770 {3.47841001, 14.8121796}, //
+
20771 {3.48175001, 14.8106699}, //
+
20772 {3.48527002, 14.8091602}, //
+
20773 {3.48895001, 14.8076496}, //
+
20774 {3.49292994, 14.8058996}, //
+
20775 {3.49731994, 14.8036404}, //
+
20776 {3.50213003, 14.8008804}, //
+
20777 {3.50735998, 14.7976198}, //
+
20778 {3.51301003, 14.7938499}, //
+
20779 {3.51907992, 14.7895803}, //
+
20780 {3.52556992, 14.7848101}, //
+
20781 {3.53248, 14.7795296}, //
+
20782 {3.53979993, 14.7737503}, //
+
20783 {3.54347992, 14.7714901}, //
+
20784 {3.54699993, 14.7692404}, //
+
20785 {3.55033994, 14.7669802}, //
+
20786 {3.55351996, 14.76472}, //
+
20787 {3.55653, 14.7624598}, //
+
20788 {3.55938005, 14.76019}, //
+
20789 {3.5620501, 14.7579298}, //
+
20790 {3.56455994, 14.7556696}, //
+
20791 {3.56690001, 14.7533998}, //
+
20792 {3.5690999, 14.7511396}, //
+
20793 {3.57118011, 14.7488899}, //
+
20794 {3.57312989, 14.7466297}, //
+
20795 {3.57495999, 14.7443705}, //
+
20796 {3.57665992, 14.7421103}, //
+
20797 {3.5782299, 14.7398396}, //
+
20798 {3.57967997, 14.7375803}, //
+
20799 {3.58100009, 14.7353201}, //
+
20800 {3.58220005, 14.7330503}, //
+
20801 {3.5832901, 14.7308598}, //
+
20802 {3.58430004, 14.7287903}, //
+
20803 {3.5852201, 14.72684}, //
+
20804 {3.58605003, 14.7250299}, //
+
20805 {3.5868001, 14.7233295}, //
+
20806 {3.58747005, 14.7217598}, //
+
20807 {3.58804989, 14.7203197}, //
+
20808 {3.58854008, 14.7189999}, //
+
20809 {3.58894992, 14.7178001}, //
+
20810 {3.58932996, 14.7166996}, //
+
20811 {3.58971, 14.7156401}, //
+
20812 {3.59008002, 14.7146196}, //
+
20813 {3.59046006, 14.7136402}, //
+
20814 {3.5908401, 14.7126999}, //
+
20815 {3.5912199, 14.7117996}, //
+
20816 {3.59158993, 14.7109404}, //
+
20817 {3.59196997, 14.7101297}, //
+
20818 {3.59235001, 14.7093496}, //
+
20819 {3.59268999, 14.7086201}, //
+
20820 {3.59294009, 14.7079201}, //
+
20821 {3.59311008, 14.7072697}, //
+
20822 {3.59318995, 14.7066603}, //
+
20823 {3.59318995, 14.7061005}, //
+
20824 {3.59311008, 14.7055702}, //
+
20825 {3.59294009, 14.7050896}, //
+
20826 {3.59268999, 14.7046499}, //
+
20827 {3.59235001, 14.7042503}, //
+
20828 {3.5908401, 14.7027397}, //
+
20829 {3.59072995, 14.70263}, //
+
20830 {3.59065008, 14.7025499}, //
+
20831 {3.58555007, 14.7076502}, //
+
20832 {3.58438993, 14.7087803}, //
+
20833 {3.5831399, 14.7099104}, //
+
20834 {3.58179998, 14.7110395}, //
+
20835 {3.58037996, 14.7121696}, //
+
20836 {3.57887006, 14.7132998}, //
+
20837 {3.57728004, 14.7144299}, //
+
20838 {3.57560992, 14.7155504}, //
+
20839 {3.57384992, 14.7166796}, //
+
20840 {3.57200003, 14.7178001}, //
+
20841 {3.5701201, 14.7189703}, //
+
20842 {3.56823993, 14.7202301}, //
+
20843 {3.56636, 14.72157}, //
+
20844 {3.56448007, 14.7229996}, //
+
20845 {3.5625999, 14.7244997}, //
+
20846 {3.56070995, 14.7260904}, //
+
20847 {3.55883002, 14.7277603}, //
+
20848 {3.55694008, 14.7295103}, //
+
20849 {3.5550499, 14.7313499}, //
+
20850 {3.55314994, 14.73318}, //
+
20851 {3.55120993, 14.7348804}, //
+
20852 {3.54922009, 14.7364502}, //
+
20853 {3.54718995, 14.7378998}, //
+
20854 {3.54512, 14.7392197}, //
+
20855 {3.54301, 14.7404203}, //
+
20856 {3.54084992, 14.7414904}, //
+
20857 {3.53865004, 14.7424297}, //
+
20858 {3.53640008, 14.7432499}, //
+
20859 {3.53487992, 14.7432699}, //
+
20860 {3.53330994, 14.74333}, //
+
20861 {3.53170991, 14.7434397}, //
+
20862 {3.53005004, 14.7435904}, //
+
20863 {3.52835989, 14.7437696}, //
+
20864 {3.52661991, 14.74401}, //
+
20865 {3.52484012, 14.7442799}, //
+
20866 {3.52302003, 14.7445898}, //
+
20867 {3.52115011, 14.7449503}, //
+
20868 {3.51933002, 14.7452402}, //
+
20869 {3.51764011, 14.7453699}, //
+
20870 {3.5160799, 14.7453299}, //
+
20871 {3.51464009, 14.74512}, //
+
20872 {3.51331997, 14.7447395}, //
+
20873 {3.51213002, 14.7441902}, //
+
20874 {3.51106, 14.7434797}, //
+
20875 {3.51011992, 14.7426004}, //
+
20876 {3.50929999, 14.7415504}, //
+
20877 {3.50870991, 14.7402697}, //
+
20878 {3.50846004, 14.7386999}, //
+
20879 {3.50853992, 14.7368298}, //
+
20880 {3.50896001, 14.7346802}, //
+
20881 {3.50972009, 14.7322302}, //
+
20882 {3.5108099, 14.7294798}, //
+
20883 {3.51223993, 14.72645}, //
+
20884 {3.51399994, 14.7231197}, //
+
20885 {3.51609993, 14.7194996}, //
+
20886 {3.51831007, 14.7158203}, //
+
20887 {3.5204401, 14.7108002}, //
+
20888 {3.52249002, 14.7044401}, //
+
20889 {3.52445006, 14.6967402}, //
+
20890 {3.52632999, 14.6877003}, //
+
20891 {3.52812004, 14.6773195}, //
+
20892 {3.52982998, 14.6655998}, //
+
20893 {3.53146005, 14.6525497}, //
+
20894 {3.53299999, 14.6381502}, //
+
20895 {3.53443003, 14.6228504}, //
+
20896 {3.53569007, 14.60709}, //
+
20897 {3.53678012, 14.5908699}, //
+
20898 {3.53769994, 14.5741901}, //
+
20899 {3.53846002, 14.5570498}, //
+
20900 {3.53904009, 14.5394402}, //
+
20901 {3.53945994, 14.5213699}, //
+
20902 {3.53972006, 14.50284}, //
+
20903 {3.53979993, 14.4838495}, //
+
20904 {3.53962994, 14.4648304}, //
+
20905 {3.53912997, 14.4461803}, //
+
20906 {3.53829002, 14.4279099}, //
+
20907 {3.5371201, 14.4100199}, //
+
20908 {3.53561997, 14.3924999}, //
+
20909 {3.5337801, 14.3753595}, //
+
20910 {3.5316, 14.3585997}, //
+
20911 {3.52908993, 14.3422098}, //
+
20912 {3.52624989, 14.3261995}, //
+
20913 {3.52549005, 14.3217201}, //
+
20914 {3.52473998, 14.3173199}, //
+
20915 {3.5239799, 14.3130102}, //
+
20916 {3.52323008, 14.3087797}, //
+
20917 {3.52247, 14.3046398}, //
+
20918 {3.52171993, 14.30058}, //
+
20919 {3.52096009, 14.2966003}, //
+
20920 {3.52021003, 14.2927103}, //
+
20921 {3.51944995, 14.2889004}, //
+
20922 {3.51799011, 14.2801104}, //
+
20923 {3.51661992, 14.2718201}, //
+
20924 {3.51532006, 14.2640305}, //
+
20925 {3.51411009, 14.2567396}, //
+
20926 {3.51297998, 14.2499599}, //
+
20927 {3.51194, 14.24368}, //
+
20928 {3.51097989, 14.2378998}, //
+
20929 {3.51009989, 14.2326202}, //
+
20930 {3.50929999, 14.22785}, //
+
20931 {3.50856996, 14.2234402}, //
+
20932 {3.50786996, 14.2192402}, //
+
20933 {3.50722003, 14.21525}, //
+
20934 {3.50660992, 14.2114601}, //
+
20935 {3.50605011, 14.2078896}, //
+
20936 {3.50552011, 14.2045202}, //
+
20937 {3.50503993, 14.2013502}, //
+
20938 {3.50460005, 14.1983995}, //
+
20939 {3.50419998, 14.1956501}, //
+
20940 {3.50383997, 14.1929502}, //
+
20941 {3.50353003, 14.1901302}, //
+
20942 {3.5032599, 14.1871796}, //
+
20943 {3.50302005, 14.1841097}, //
+
20944 {3.50284004, 14.1809101}, //
+
20945 {3.50269008, 14.1775799}, //
+
20946 {3.50257993, 14.1741304}, //
+
20947 {3.50252008, 14.1705503}, //
+
20948 {3.50250006, 14.1668501}, //
+
20949 {3.50246, 14.1645803}, //
+
20950 {3.50233006, 14.1623201}, //
+
20951 {3.50213003, 14.1600599}, //
+
20952 {3.50184011, 14.1577902}, //
+
20953 {3.50147009, 14.15553}, //
+
20954 {3.50100994, 14.1532698}, //
+
20955 {3.50046992, 14.1510096}, //
+
20956 {3.49985003, 14.1487598}, //
+
20957 {3.49915004, 14.1464996}, //
+
20958 {3.49815989, 14.1326399}, //
+
20959 {3.49672008, 14.1166897}, //
+
20960 {3.4948101, 14.09865}, //
+
20961 {3.49243999, 14.0785103}, //
+
20962 {3.48961997, 14.0562897}, //
+
20963 {3.48633003, 14.03197}, //
+
20964 {3.48257995, 14.0055504}, //
+
20965 {3.47836995, 13.9770498}, //
+
20966 {3.47370005, 13.9464502}, //
+
20967 {3.4686501, 13.9146404}, //
+
20968 {3.46331, 13.8824902}, //
+
20969 {3.45767999, 13.8500099}, //
+
20970 {3.45176005, 13.8171997}, //
+
20971 {3.44553995, 13.78405}, //
+
20972 {3.43902993, 13.7505598}, //
+
20973 {3.43223, 13.7167397}, //
+
20974 {3.4251399, 13.6825895}, //
+
20975 {3.41774988, 13.6480999}, //
+
20976 {3.40854001, 13.6069098}, //
+
20977 {3.39898992, 13.5662203}, //
+
20978 {3.38911009, 13.5260296}, //
+
20979 {3.37890005, 13.4863396}, //
+
20980 {3.36835003, 13.4471598}, //
+
20981 {3.35746002, 13.4084797}, //
+
20982 {3.34624004, 13.3703003}, //
+
20983 {3.33469009, 13.3326197}, //
+
20984 {3.32279992, 13.2954502}, //
+
20985 {3.31630993, 13.2722597}, //
+
20986 {3.31041002, 13.2509098}, //
+
20987 {3.30509996, 13.23141}, //
+
20988 {3.30036998, 13.2137403}, //
+
20989 {3.29623008, 13.1979198}, //
+
20990 {3.29267001, 13.1839399}, //
+
20991 {3.28969002, 13.1717997}, //
+
20992 {3.28730011, 13.1615}, //
+
20993 {3.28550005, 13.1530504}, //
+
20994 {3.28328991, 13.14501}, //
+
20995 {3.2811501, 13.1374798}, //
+
20996 {3.27910995, 13.1304398}, //
+
20997 {3.2771399, 13.12391}, //
+
20998 {3.27525997, 13.1178904}, //
+
20999 {3.27345991, 13.11236}, //
+
21000 {3.27173996, 13.1073399}, //
+
21001 {3.27010012, 13.1028204}, //
+
21002 {3.26854992, 13.0987997}, //
+
21003 {3.26707006, 13.0952196}, //
+
21004 {3.26563001, 13.09202}, //
+
21005 {3.26423001, 13.0891895}, //
+
21006 {3.26288009, 13.08675}, //
+
21007 {3.26155996, 13.0846701}, //
+
21008 {3.26027989, 13.0829802}, //
+
21009 {3.25904989, 13.0816603}, //
+
21010 {3.25784993, 13.0807199}, //
+
21011 {3.25670004, 13.0801497}, //
+
21012 {3.25560999, 13.0799198}, //
+
21013 });
+
21014 polys.push_back({
+
21015 {3.6688199, 13.81917}, //
+
21016 {3.66932011, 13.8223801}, //
+
21017 {3.67016006, 13.8272104}, //
+
21018 {3.67132998, 13.8336802}, //
+
21019 {3.6728301, 13.8417797}, //
+
21020 {3.67466998, 13.85151}, //
+
21021 {3.67685008, 13.8628798}, //
+
21022 {3.67935991, 13.8758698}, //
+
21023 {3.68219995, 13.8905001}, //
+
21024 {3.68528008, 13.9062204}, //
+
21025 {3.68848991, 13.9224796}, //
+
21026 {3.69182992, 13.9392796}, //
+
21027 {3.69529009, 13.9566298}, //
+
21028 {3.69886994, 13.9745302}, //
+
21029 {3.70257998, 13.9929705}, //
+
21030 {3.70640993, 14.0119495}, //
+
21031 {3.71037006, 14.0314798}, //
+
21032 {3.71444988, 14.0515499}, //
+
21033 {3.71859002, 14.0717897}, //
+
21034 {3.72273993, 14.0918198}, //
+
21035 {3.72688007, 14.11164}, //
+
21036 {3.73102999, 14.1312504}, //
+
21037 {3.73516989, 14.15065}, //
+
21038 {3.73932004, 14.1698399}, //
+
21039 {3.74345994, 14.1888199}, //
+
21040 {3.74761009, 14.2075901}, //
+
21041 {3.75174999, 14.2261496}, //
+
21042 {3.75579, 14.24401}, //
+
21043 {3.75961995, 14.2606497}, //
+
21044 {3.7632401, 14.2760801}, //
+
21045 {3.76664996, 14.2903004}, //
+
21046 {3.76985002, 14.3032999}, //
+
21047 {3.77284002, 14.3150797}, //
+
21048 {3.77561998, 14.3256502}, //
+
21049 {3.7781899, 14.3350096}, //
+
21050 {3.78055, 14.3431501}, //
+
21051 {3.78650999, 14.3599005}, //
+
21052 {3.79235005, 14.3769703}, //
+
21053 {3.79805994, 14.3943901}, //
+
21054 {3.80363989, 14.4121399}, //
+
21055 {3.80909991, 14.4302197}, //
+
21056 {3.81444001, 14.4486399}, //
+
21057 {3.81964993, 14.4673901}, //
+
21058 {3.82473993, 14.4864798}, //
+
21059 {3.82969999, 14.5059004}, //
+
21060 {3.83440995, 14.52528}, //
+
21061 {3.83874989, 14.54424}, //
+
21062 {3.84271002, 14.5627804}, //
+
21063 {3.84629011, 14.5809097}, //
+
21064 {3.84948993, 14.5986099}, //
+
21065 {3.85231996, 14.6159}, //
+
21066 {3.85476995, 14.6327696}, //
+
21067 {3.85684991, 14.6492205}, //
+
21068 {3.85855007, 14.6652498}, //
+
21069 {3.85840011, 14.6756601}, //
+
21070 {3.85795999, 14.68577}, //
+
21071 {3.85722995, 14.69559}, //
+
21072 {3.85619998, 14.7051201}, //
+
21073 {3.85488009, 14.7143497}, //
+
21074 {3.85326004, 14.7232904}, //
+
21075 {3.85135007, 14.7319403}, //
+
21076 {3.84914994, 14.7402897}, //
+
21077 {3.84664989, 14.7483501}, //
+
21078 {3.84397006, 14.7560902}, //
+
21079 {3.8412199, 14.7635002}, //
+
21080 {3.83837008, 14.7705698}, //
+
21081 {3.83544993, 14.7773104}, //
+
21082 {3.83242989, 14.7837095}, //
+
21083 {3.82933998, 14.7897701}, //
+
21084 {3.82615995, 14.7954998}, //
+
21085 {3.82290006, 14.80089}, //
+
21086 {3.81955004, 14.8059502}, //
+
21087 {3.81634998, 14.8105402}, //
+
21088 {3.81352997, 14.8144999}, //
+
21089 {3.81107998, 14.8178301}, //
+
21090 {3.80901003, 14.8205299}, //
+
21091 {3.8073101, 14.8226099}, //
+
21092 {3.80598998, 14.8240604}, //
+
21093 {3.80528998, 14.8246803}, //
+
21094 {3.80734992, 14.8247299}, //
+
21095 {3.81048989, 14.8249798}, //
+
21096 {3.81370997, 14.8254004}, //
+
21097 {3.81701994, 14.8259802}, //
+
21098 {3.8204, 14.8267298}, //
+
21099 {3.82387996, 14.8276501}, //
+
21100 {3.82743001, 14.8287296}, //
+
21101 {3.83107996, 14.8299799}, //
+
21102 {3.8348, 14.8313999}, //
+
21103 {3.83852005, 14.8321104}, //
+
21104 {3.84217, 14.8327398}, //
+
21105 {3.84572005, 14.8332901}, //
+
21106 {3.84920001, 14.8337498}, //
+
21107 {3.85258007, 14.8341303}, //
+
21108 {3.85589004, 14.8344202}, //
+
21109 {3.85911012, 14.83463}, //
+
21110 {3.86225009, 14.8347597}, //
+
21111 {3.86529994, 14.8347998}, //
+
21112 {3.86820006, 14.8345098}, //
+
21113 {3.87084007, 14.8336296}, //
+
21114 {3.87322998, 14.83216}, //
+
21115 {3.87536001, 14.8301096}, //
+
21116 {3.87724996, 14.8274698}, //
+
21117 {3.87888002, 14.8242397}, //
+
21118 {3.88024998, 14.8204298}, //
+
21119 {3.88138008, 14.8160295}, //
+
21120 {3.88225007, 14.8110504}, //
+
21121 {3.88516998, 14.80373}, //
+
21122 {3.88787007, 14.7953196}, //
+
21123 {3.89036989, 14.78582}, //
+
21124 {3.89264989, 14.7752304}, //
+
21125 {3.89472008, 14.7635498}, //
+
21126 {3.89657998, 14.7507801}, //
+
21127 {3.89823008, 14.7369299}, //
+
21128 {3.89966989, 14.7219801}, //
+
21129 {3.90089989, 14.7059498}, //
+
21130 {3.90155005, 14.6890402}, //
+
21131 {3.90124011, 14.6714602}, //
+
21132 {3.89997005, 14.6532097}, //
+
21133 {3.89773011, 14.6342897}, //
+
21134 {3.89453006, 14.6147003}, //
+
21135 {3.89036989, 14.5944405}, //
+
21136 {3.88524008, 14.5735102}, //
+
21137 {3.87914991, 14.5519199}, //
+
21138 {3.87210011, 14.5296497}, //
+
21139 {3.85573006, 14.4833899}, //
+
21140 {3.83978009, 14.4365501}, //
+
21141 {3.82424998, 14.3891201}, //
+
21142 {3.80913997, 14.3410997}, //
+
21143 {3.79444003, 14.2924995}, //
+
21144 {3.78016996, 14.2433205}, //
+
21145 {3.76630998, 14.1935501}, //
+
21146 {3.75287008, 14.1431904}, //
+
21147 {3.73985004, 14.0922499}, //
+
21148 {3.73181009, 14.0642004}, //
+
21149 {3.72428012, 14.0373297}, //
+
21150 {3.7172401, 14.0116301}, //
+
21151 {3.71071005, 13.9870996}, //
+
21152 {3.70468998, 13.9637403}, //
+
21153 {3.6991601, 13.9415598}, //
+
21154 {3.69413996, 13.9205503}, //
+
21155 {3.68962002, 13.9007101}, //
+
21156 {3.68560004, 13.8820496}, //
+
21157 {3.68203998, 13.8678503}, //
+
21158 {3.6789, 13.8554096}, //
+
21159 {3.67617989, 13.8447304}, //
+
21160 {3.6738801, 13.8358097}, //
+
21161 {3.67199993, 13.8286505}, //
+
21162 {3.67053008, 13.8232498}, //
+
21163 {3.6694901, 13.8196096}, //
+
21164 {3.66885996, 13.8177204}, //
+
21165 {3.66864991, 13.8176003}, //
+
21166 });
+
21167 polys.push_back({
+
21168 {3.24815989, 14.3099403}, //
+
21169 {3.2478199, 14.3154697}, //
+
21170 {3.24752998, 14.3203001}, //
+
21171 {3.24669003, 14.3341198}, //
+
21172 {3.24614, 14.3430996}, //
+
21173 {3.2455101, 14.3534603}, //
+
21174 {3.24480009, 14.3652}, //
+
21175 {3.24391007, 14.3778801}, //
+
21176 {3.24271989, 14.3910704}, //
+
21177 {3.24124002, 14.4047604}, //
+
21178 {3.23945999, 14.4189396}, //
+
21179 {3.23739004, 14.43363}, //
+
21180 {3.23501992, 14.4488201}, //
+
21181 {3.23235989, 14.46451}, //
+
21182 {3.22939992, 14.48071}, //
+
21183 {3.22615004, 14.4974003}, //
+
21184 {3.22252989, 14.5142498}, //
+
21185 {3.21845007, 14.5308905}, //
+
21186 {3.2139101, 14.5473299}, //
+
21187 {3.20890999, 14.56355}, //
+
21188 {3.20344996, 14.5795698}, //
+
21189 {3.19753003, 14.5953798}, //
+
21190 {3.19114995, 14.61098}, //
+
21191 {3.18429995, 14.6263704}, //
+
21192 {3.17700005, 14.6415501}, //
+
21193 {3.16580009, 14.6641102}, //
+
21194 {3.15481997, 14.6850796}, //
+
21195 {3.14404011, 14.7044601}, //
+
21196 {3.13347006, 14.7222404}, //
+
21197 {3.12311006, 14.7384396}, //
+
21198 {3.1129601, 14.7530403}, //
+
21199 {3.10300994, 14.7660503}, //
+
21200 {3.09328008, 14.7774696}, //
+
21201 {3.08375001, 14.7873001}, //
+
21202 {3.0748601, 14.7958403}, //
+
21203 {3.06701994, 14.80338}, //
+
21204 {3.06022, 14.8099098}, //
+
21205 {3.04139996, 14.8280001}, //
+
21206 {3.04369998, 14.8271704}, //
+
21207 {3.04608011, 14.82617}, //
+
21208 {3.04854989, 14.8250103}, //
+
21209 {3.05110002, 14.8236704}, //
+
21210 {3.05374002, 14.8221598}, //
+
21211 {3.05646992, 14.8204899}, //
+
21212 {3.05927992, 14.8186502}, //
+
21213 {3.06217003, 14.8166304}, //
+
21214 {3.06515002, 14.8144503}, //
+
21215 {3.07352996, 14.8119802}, //
+
21216 {3.08212996, 14.8091002}, //
+
21217 {3.09092999, 14.8057899}, //
+
21218 {3.09994006, 14.8020697}, //
+
21219 {3.10915995, 14.7979298}, //
+
21220 {3.11859012, 14.7933598}, //
+
21221 {3.12824011, 14.7883797}, //
+
21222 {3.1380899, 14.7829704}, //
+
21223 {3.14814997, 14.7771502}, //
+
21224 {3.15801001, 14.7705002}, //
+
21225 {3.16724992, 14.7625904}, //
+
21226 {3.17585993, 14.7534304}, //
+
21227 {3.18383002, 14.7430096}, //
+
21228 {3.19117999, 14.7313299}, //
+
21229 {3.19791007, 14.7183905}, //
+
21230 {3.204, 14.7041998}, //
+
21231 {3.20946002, 14.6887503}, //
+
21232 {3.21429992, 14.6720505}, //
+
21233 {3.2186799, 14.65026}, //
+
21234 {3.22275996, 14.6285896}, //
+
21235 {3.22654009, 14.6070499}, //
+
21236 {3.23004007, 14.58564}, //
+
21237 {3.23323989, 14.5643501}, //
+
21238 {3.23614001, 14.5431805}, //
+
21239 {3.23875999, 14.52215}, //
+
21240 {3.24108005, 14.5012398}, //
+
21241 {3.24309993, 14.4804497}, //
+
21242 {3.24487996, 14.4604702}, //
+
21243 {3.24645996, 14.4419603}, //
+
21244 {3.2478199, 14.4249096}, //
+
21245 {3.24898005, 14.4093199}, //
+
21246 {3.24991989, 14.3951998}, //
+
21247 {3.25065994, 14.3825397}, //
+
21248 {3.25117993, 14.3713503}, //
+
21249 {3.25149989, 14.3616199}, //
+
21250 {3.25160003, 14.3533497}, //
+
21251 {3.25160003, 14.3414497}, //
+
21252 {3.25158, 14.3403301}, //
+
21253 {3.25151992, 14.3392}, //
+
21254 {3.25141001, 14.3380804}, //
+
21255 {3.25126004, 14.3369503}, //
+
21256 {3.25108004, 14.3358202}, //
+
21257 {3.25083995, 14.3346901}, //
+
21258 {3.25057006, 14.33356}, //
+
21259 {3.25026011, 14.3324299}, //
+
21260 {3.2499001, 14.3312998}, //
+
21261 {3.24954009, 14.3301897}, //
+
21262 {3.24922991, 14.3291197}, //
+
21263 {3.24896002, 14.3280897}, //
+
21264 {3.24871993, 14.3270998}, //
+
21265 {3.24853992, 14.3261604}, //
+
21266 {3.24838996, 14.3252602}, //
+
21267 {3.24828005, 14.3243999}, //
+
21268 {3.24821997, 14.3235798}, //
+
21269 {3.24819994, 14.3227997}, //
+
21270 {3.24819994, 14.3092499}, //
+
21271 });
+
21272 polys.push_back({
+
21273 {4.19759989, 13.8396502}, //
+
21274 {4.19777012, 13.8404303}, //
+
21275 {4.19826984, 13.842}, //
+
21276 {4.19911003, 13.8443604}, //
+
21277 {4.20028019, 13.8475199}, //
+
21278 {4.20177984, 13.8514795}, //
+
21279 {4.20361996, 13.8562298}, //
+
21280 {4.20580006, 13.8617697}, //
+
21281 {4.20831013, 13.8681097}, //
+
21282 {4.21115017, 13.8752499}, //
+
21283 {4.21265984, 13.8782997}, //
+
21284 {4.21416998, 13.8814402}, //
+
21285 {4.21568012, 13.8846598}, //
+
21286 {4.21717978, 13.88797}, //
+
21287 {4.21868992, 13.8913498}, //
+
21288 {4.22019005, 13.8948298}, //
+
21289 {4.22170019, 13.8983803}, //
+
21290 {4.22319984, 13.90203}, //
+
21291 {4.22469997, 13.9057503}, //
+
21292 {4.23216009, 13.9180803}, //
+
21293 {4.23944998, 13.9309502}, //
+
21294 {4.24657011, 13.9443703}, //
+
21295 {4.25352001, 13.9583302}, //
+
21296 {4.26031017, 13.9728298}, //
+
21297 {4.26692009, 13.9878798}, //
+
21298 {4.27336979, 14.00348}, //
+
21299 {4.2796402, 14.0196199}, //
+
21300 {4.28574991, 14.0362997}, //
+
21301 {4.29165983, 14.0537395}, //
+
21302 {4.29730988, 14.0721397}, //
+
21303 {4.30272007, 14.0915003}, //
+
21304 {4.30786991, 14.1118298}, //
+
21305 {4.31276989, 14.13311}, //
+
21306 {4.31742001, 14.1553698}, //
+
21307 {4.32180977, 14.1785803}, //
+
21308 {4.32596016, 14.2027597}, //
+
21309 {4.3298502, 14.2278996}, //
+
21310 {4.33181, 14.2594099}, //
+
21311 {4.33318996, 14.2891598}, //
+
21312 {4.33398008, 14.3171597}, //
+
21313 {4.33418989, 14.3434}, //
+
21314 {4.33380985, 14.3678799}, //
+
21315 {4.33284998, 14.3906097}, //
+
21316 {4.33129978, 14.4115801}, //
+
21317 {4.32917023, 14.4307899}, //
+
21318 {4.32644987, 14.4482498}, //
+
21319 {4.32368994, 14.4593496}, //
+
21320 {4.32143021, 14.4700298}, //
+
21321 {4.3196702, 14.4802904}, //
+
21322 {4.31841993, 14.49014}, //
+
21323 {4.31765985, 14.4995604}, //
+
21324 {4.31740999, 14.5085602}, //
+
21325 {4.31764984, 14.5171404}, //
+
21326 {4.31839991, 14.5253096}, //
+
21327 {4.31965017, 14.5330496}, //
+
21328 {4.32106018, 14.5439701}, //
+
21329 {4.32224989, 14.5541401}, //
+
21330 {4.3232398, 14.5635595}, //
+
21331 {4.32401991, 14.5722303}, //
+
21332 {4.32458019, 14.5801401}, //
+
21333 {4.3249402, 14.5872898}, //
+
21334 {4.32508993, 14.5937004}, //
+
21335 {4.32501984, 14.59935}, //
+
21336 {4.32474995, 14.60425}, //
+
21337 {4.32426977, 14.6087303}, //
+
21338 {4.32357979, 14.6131296}, //
+
21339 {4.32268, 14.6174402}, //
+
21340 {4.32156992, 14.6216698}, //
+
21341 {4.32025003, 14.6258097}, //
+
21342 {4.31872988, 14.6298704}, //
+
21343 {4.3169899, 14.6338501}, //
+
21344 {4.31505013, 14.6377401}, //
+
21345 {4.31290007, 14.6415501}, //
+
21346 {4.31132984, 14.64534}, //
+
21347 {4.30962992, 14.6491699}, //
+
21348 {4.30779982, 14.6530399}, //
+
21349 {4.30585003, 14.65695}, //
+
21350 {4.30377007, 14.6609097}, //
+
21351 {4.30156994, 14.6649103}, //
+
21352 {4.29924011, 14.6689501}, //
+
21353 {4.29678011, 14.6730299}, //
+
21354 {4.29419994, 14.6771498}, //
+
21355 {4.29157019, 14.6812897}, //
+
21356 {4.28892994, 14.6854401}, //
+
21357 {4.28103018, 14.6978703}, //
+
21358 {4.27839994, 14.7020197}, //
+
21359 {4.27050018, 14.7144499}, //
+
21360 {4.26797009, 14.7183599}, //
+
21361 {4.2656498, 14.7218199}, //
+
21362 {4.26353979, 14.7248096}, //
+
21363 {4.26164007, 14.7273397}, //
+
21364 {4.26121998, 14.72785}, //
+
21365 {4.26126003, 14.7278204}, //
+
21366 {4.26393986, 14.7257204}, //
+
21367 {4.26695013, 14.7234602}, //
+
21368 {4.2702899, 14.7210302}, //
+
21369 {4.27398014, 14.7184401}, //
+
21370 {4.27799988, 14.7156801}, //
+
21371 {4.28235006, 14.7127504}, //
+
21372 {4.28767014, 14.7089596}, //
+
21373 {4.29306984, 14.7051296}, //
+
21374 {4.29856014, 14.7012596}, //
+
21375 {4.30412006, 14.6973495}, //
+
21376 {4.30977011, 14.6933899}, //
+
21377 {4.3155098, 14.6893902}, //
+
21378 {4.32132006, 14.6853504}, //
+
21379 {4.32721996, 14.6812696}, //
+
21380 {4.33319998, 14.6771498}, //
+
21381 {4.33890009, 14.6730299}, //
+
21382 {4.34392977, 14.6689501}, //
+
21383 {4.34827995, 14.6649103}, //
+
21384 {4.3519702, 14.6609097}, //
+
21385 {4.35499001, 14.65695}, //
+
21386 {4.35732985, 14.6530399}, //
+
21387 {4.35901022, 14.6491699}, //
+
21388 {4.36001015, 14.64534}, //
+
21389 {4.36035013, 14.6415501}, //
+
21390 {4.36042976, 14.6389503}, //
+
21391 {4.36069012, 14.6356802}, //
+
21392 {4.36111021, 14.6317396}, //
+
21393 {4.36169004, 14.6271296}, //
+
21394 {4.36245012, 14.62185}, //
+
21395 {4.36336994, 14.6159096}, //
+
21396 {4.36445999, 14.6092901}, //
+
21397 {4.3657198, 14.6020002}, //
+
21398 {4.36714983, 14.5940504}, //
+
21399 {4.36791992, 14.5864697}, //
+
21400 {4.36873007, 14.5788202}, //
+
21401 {4.36957979, 14.5710697}, //
+
21402 {4.37047005, 14.5632496}, //
+
21403 {4.37140989, 14.5553303}, //
+
21404 {4.37238979, 14.5473404}, //
+
21405 {4.37341976, 14.5392599}, //
+
21406 {4.37448978, 14.5311003}, //
+
21407 {4.37559986, 14.52285}, //
+
21408 {4.37662983, 14.5146503}, //
+
21409 {4.37744999, 14.5066099}, //
+
21410 {4.37805986, 14.4987402}, //
+
21411 {4.37844992, 14.4910402}, //
+
21412 {4.37864017, 14.4834995}, //
+
21413 {4.37862015, 14.47614}, //
+
21414 {4.37838984, 14.4689398}, //
+
21415 {4.37795019, 14.4619102}, //
+
21416 {4.37729979, 14.4550505}, //
+
21417 {4.37654018, 14.4511204}, //
+
21418 {4.37579012, 14.4468498}, //
+
21419 {4.37503004, 14.4422398}, //
+
21420 {4.37427998, 14.4373102}, //
+
21421 {4.3735199, 14.4320297}, //
+
21422 {4.37276983, 14.4264297}, //
+
21423 {4.37201023, 14.4204903}, //
+
21424 {4.37126017, 14.4142103}, //
+
21425 {4.37050009, 14.4076004}, //
+
21426 {4.36973, 14.3977203}, //
+
21427 {4.36891985, 14.3876696}, //
+
21428 {4.36807013, 14.37745}, //
+
21429 {4.36717987, 14.3670702}, //
+
21430 {4.36624002, 14.3565197}, //
+
21431 {4.36526012, 14.3458004}, //
+
21432 {4.36423016, 14.3349199}, //
+
21433 {4.36316013, 14.3238697}, //
+
21434 {4.36093998, 14.3014297}, //
+
21435 {4.35986996, 14.2903795}, //
+
21436 {4.35883999, 14.2795}, //
+
21437 {4.35785007, 14.2687798}, //
+
21438 {4.35691023, 14.2582302}, //
+
21439 {4.35600996, 14.2478504}, //
+
21440 {4.35515022, 14.2376299}, //
+
21441 {4.35433006, 14.2275801}, //
+
21442 {4.35354996, 14.2177}, //
+
21443 {4.35334015, 14.20399}, //
+
21444 {4.35270977, 14.1899796}, //
+
21445 {4.35166979, 14.1756802}, //
+
21446 {4.35020018, 14.1610899}, //
+
21447 {4.34832001, 14.1462097}, //
+
21448 {4.34602022, 14.1310301}, //
+
21449 {4.34329987, 14.1155596}, //
+
21450 {4.34015989, 14.0998001}, //
+
21451 {4.33659983, 14.0837498}, //
+
21452 {4.33254004, 14.06779}, //
+
21453 {4.32788992, 14.05229}, //
+
21454 {4.32265997, 14.0372496}, //
+
21455 {4.31684017, 14.0226698}, //
+
21456 {4.31044006, 14.0085497}, //
+
21457 {4.30344009, 13.9948797}, //
+
21458 {4.29586983, 13.9816799}, //
+
21459 {4.28770018, 13.9689398}, //
+
21460 {4.27895021, 13.9566498}, //
+
21461 {4.27517986, 13.9499502}, //
+
21462 {4.27142, 13.9434099}, //
+
21463 {4.26765013, 13.9370403}, //
+
21464 {4.26387978, 13.93085}, //
+
21465 {4.26011992, 13.9248199}, //
+
21466 {4.25635004, 13.9189596}, //
+
21467 {4.25258017, 13.91327}, //
+
21468 {4.24881983, 13.9077501}, //
+
21469 {4.24504995, 13.9024}, //
+
21470 {4.23993015, 13.8964701}, //
+
21471 {4.23509979, 13.8907499}, //
+
21472 {4.23055983, 13.8852396}, //
+
21473 {4.22630978, 13.8799496}, //
+
21474 {4.22236013, 13.8748598}, //
+
21475 {4.21868992, 13.8699799}, //
+
21476 {4.21532011, 13.8653097}, //
+
21477 {4.21224022, 13.8608503}, //
+
21478 {4.20944977, 13.8565998}, //
+
21479 {4.2069602, 13.8527098}, //
+
21480 {4.20477009, 13.8493204}, //
+
21481 {4.20286989, 13.8464298}, //
+
21482 {4.20126009, 13.8440399}, //
+
21483 {4.1999402, 13.8421602}, //
+
21484 {4.19891977, 13.8407803}, //
+
21485 {4.19819021, 13.8399}, //
+
21486 {4.19775009, 13.8395205}, //
+
21487 });
+
21488 polys.push_back({
+
21489 {1.40643001, 14.4620199}, //
+
21490 {1.40559006, 14.4622202}, //
+
21491 {1.40292001, 14.4628801}, //
+
21492 {1.40108001, 14.4633398}, //
+
21493 {1.39890003, 14.4638796}, //
+
21494 {1.39638996, 14.4645004}, //
+
21495 {1.39355004, 14.4652004}, //
+
21496 {1.39051998, 14.4659796}, //
+
21497 {1.38743997, 14.4667997}, //
+
21498 {1.38432002, 14.46766}, //
+
21499 {1.38116002, 14.4685602}, //
+
21500 {1.37794995, 14.4694996}, //
+
21501 {1.37470996, 14.4704905}, //
+
21502 {1.37141001, 14.4715204}, //
+
21503 {1.36808002, 14.4725904}, //
+
21504 {1.36469996, 14.4736996}, //
+
21505 {1.36133003, 14.4748096}, //
+
21506 {1.35801005, 14.4758797}, //
+
21507 {1.35472, 14.4769096}, //
+
21508 {1.35148001, 14.47789}, //
+
21509 {1.34827995, 14.4788303}, //
+
21510 {1.34511995, 14.4797201}, //
+
21511 {1.34201002, 14.4805698}, //
+
21512 {1.33893001, 14.4813805}, //
+
21513 {1.33589995, 14.4821501}, //
+
21514 {1.33182001, 14.4829903}, //
+
21515 {1.32711005, 14.4839897}, //
+
21516 {1.32176995, 14.4851704}, //
+
21517 {1.31580997, 14.4865103}, //
+
21518 {1.30920994, 14.4880104}, //
+
21519 {1.30199003, 14.4896803}, //
+
21520 {1.29413998, 14.4915199}, //
+
21521 {1.28566003, 14.4935303}, //
+
21522 {1.27655005, 14.4956999}, //
+
21523 {1.26714003, 14.4979696}, //
+
21524 {1.25773001, 14.5002298}, //
+
21525 {1.24830997, 14.50249}, //
+
21526 {1.23889995, 14.5047598}, //
+
21527 {1.21063995, 14.5115404}, //
+
21528 {1.20122004, 14.5137901}, //
+
21529 {1.1918, 14.5160503}, //
+
21530 {1.18272996, 14.5182304}, //
+
21531 {1.17437994, 14.5202503}, //
+
21532 {1.16673994, 14.52209}, //
+
21533 {1.15980995, 14.5237703}, //
+
21534 {1.15358996, 14.52528}, //
+
21535 {1.14809, 14.5266304}, //
+
21536 {1.14330006, 14.5277996}, //
+
21537 {1.13922, 14.5288095}, //
+
21538 {1.13584995, 14.5296497}, //
+
21539 {1.13358998, 14.5303602}, //
+
21540 {1.13134003, 14.5309896}, //
+
21541 {1.12908006, 14.5315399}, //
+
21542 {1.12681997, 14.5319996}, //
+
21543 {1.12456, 14.5323801}, //
+
21544 {1.12229002, 14.53267}, //
+
21545 {1.12003005, 14.5328798}, //
+
21546 {1.11776996, 14.5330095}, //
+
21547 {1.11549997, 14.5330496}, //
+
21548 {1.10763001, 14.5351801}, //
+
21549 {1.09909999, 14.5370598}, //
+
21550 {1.08989, 14.5386896}, //
+
21551 {1.08001006, 14.5400696}, //
+
21552 {1.06947005, 14.5411997}, //
+
21553 {1.05825996, 14.5420704}, //
+
21554 {1.04637003, 14.5426998}, //
+
21555 {1.03382003, 14.5430698}, //
+
21556 {1.02059996, 14.5431995}, //
+
21557 {1.00699997, 14.5431995}, //
+
21558 {0.998669028, 14.5431805}, //
+
21559 {0.990253985, 14.5431204}, //
+
21560 {0.981755972, 14.5430098}, //
+
21561 {0.973173022, 14.54286}, //
+
21562 {0.96450597, 14.5426798}, //
+
21563 {0.955756009, 14.5424404}, //
+
21564 {0.946920991, 14.5421696}, //
+
21565 {0.93800199, 14.5418596}, //
+
21566 {0.92900002, 14.5415001}, //
+
21567 {0.920132995, 14.5410995}, //
+
21568 {0.911599994, 14.5406599}, //
+
21569 {0.903400004, 14.5401802}, //
+
21570 {0.895533025, 14.53965}, //
+
21571 {0.888000011, 14.5390902}, //
+
21572 {0.880800009, 14.5384798}, //
+
21573 {0.873933017, 14.5378304}, //
+
21574 {0.867399991, 14.5371304}, //
+
21575 {0.861199975, 14.5363998}, //
+
21576 {0.858880997, 14.5364399}, //
+
21577 {0.856437027, 14.5365696}, //
+
21578 {0.853866994, 14.5367804}, //
+
21579 {0.851170003, 14.5370703}, //
+
21580 {0.848348022, 14.5374498}, //
+
21581 {0.845399976, 14.5379105}, //
+
21582 {0.842325985, 14.5384598}, //
+
21583 {0.839125991, 14.5390902}, //
+
21584 {0.835799992, 14.5397997}, //
+
21585 {0.83239001, 14.5405798}, //
+
21586 {0.828938007, 14.5414}, //
+
21587 {0.825443983, 14.5422602}, //
+
21588 {0.82190901, 14.5431604}, //
+
21589 {0.818331003, 14.5440998}, //
+
21590 {0.814710975, 14.5450897}, //
+
21591 {0.811048985, 14.5461197}, //
+
21592 {0.807345986, 14.5471897}, //
+
21593 {0.803600013, 14.5482998}, //
+
21594 {0.799896002, 14.5494499}, //
+
21595 {0.796316028, 14.5506496}, //
+
21596 {0.792860985, 14.5518799}, //
+
21597 {0.789530993, 14.5531597}, //
+
21598 {0.786324978, 14.5544796}, //
+
21599 {0.783244014, 14.55583}, //
+
21600 {0.780287981, 14.55723}, //
+
21601 {0.777456999, 14.55867}, //
+
21602 {0.774749994, 14.5601501}, //
+
21603 {0.77226299, 14.5615797}, //
+
21604 {0.768167019, 14.5639296}, //
+
21605 {0.765241027, 14.5656099}, //
+
21606 {0.764217019, 14.5661898}, //
+
21607 {0.763485014, 14.5666103}, //
+
21608 {0.763046026, 14.5668697}, //
+
21609 {0.762899995, 14.5669498}, //
+
21610 {0.790000021, 14.5669498}, //
+
21611 {0.793892026, 14.5677004}, //
+
21612 {0.798035026, 14.5684605}, //
+
21613 {0.802428007, 14.5692101}, //
+
21614 {0.807071984, 14.5699596}, //
+
21615 {0.811966002, 14.5707102}, //
+
21616 {0.817111015, 14.5714598}, //
+
21617 {0.822507024, 14.5722103}, //
+
21618 {0.828153014, 14.5729504}, //
+
21619 {0.83405, 14.5737}, //
+
21620 {0.840083003, 14.5744104}, //
+
21621 {0.84611702, 14.5750399}, //
+
21622 {0.852150023, 14.5755901}, //
+
21623 {0.858183026, 14.5760498}, //
+
21624 {0.864216983, 14.5764303}, //
+
21625 {0.870249987, 14.5767202}, //
+
21626 {0.87628299, 14.57693}, //
+
21627 {0.882317007, 14.5770597}, //
+
21628 {0.88835001, 14.5770998}, //
+
21629 {0.897707999, 14.5770597}, //
+
21630 {0.907693028, 14.57693}, //
+
21631 {0.918305993, 14.5767202}, //
+
21632 {0.929544985, 14.5764303}, //
+
21633 {0.941411972, 14.5760498}, //
+
21634 {0.953906, 14.5755901}, //
+
21635 {0.967027009, 14.5750399}, //
+
21636 {0.980774999, 14.5744104}, //
+
21637 {0.99515003, 14.5737}, //
+
21638 {1.00957, 14.5728703}, //
+
21639 {1.02344, 14.5718699}, //
+
21640 {1.03676999, 14.5707102}, //
+
21641 {1.04955995, 14.5693703}, //
+
21642 {1.0618, 14.5678596}, //
+
21643 {1.07351005, 14.5661898}, //
+
21644 {1.08466005, 14.5643501}, //
+
21645 {1.09528005, 14.5623302}, //
+
21646 {1.10535002, 14.5601501}, //
+
21647 {1.11309004, 14.5578699}, //
+
21648 {1.12125003, 14.5555496}, //
+
21649 {1.12983, 14.5531902}, //
+
21650 {1.13882995, 14.5507803}, //
+
21651 {1.14824998, 14.5483303}, //
+
21652 {1.15807998, 14.5458403}, //
+
21653 {1.16833997, 14.5432997}, //
+
21654 {1.17901003, 14.54072}, //
+
21655 {1.19009995, 14.5381002}, //
+
21656 {1.20132005, 14.53547}, //
+
21657 {1.21237004, 14.5328302}, //
+
21658 {1.22325003, 14.5301905}, //
+
21659 {1.23397005, 14.5275602}, //
+
21660 {1.24451995, 14.5249205}, //
+
21661 {1.25489998, 14.5222797}, //
+
21662 {1.26512003, 14.51964}, //
+
21663 {1.27516997, 14.5169897}, //
+
21664 {1.28505003, 14.5143499}, //
+
21665 {1.29443002, 14.5117798}, //
+
21666 {1.30297005, 14.5093403}, //
+
21667 {1.31068003, 14.50702}, //
+
21668 {1.31754005, 14.5048199}, //
+
21669 {1.32357001, 14.5027599}, //
+
21670 {1.32876003, 14.5008202}, //
+
21671 {1.33310997, 14.4989996}, //
+
21672 {1.33662999, 14.4973097}, //
+
21673 {1.33930004, 14.4957504}, //
+
21674 {1.34087002, 14.4949703}, //
+
21675 {1.34256995, 14.4941502}, //
+
21676 {1.34439003, 14.4932899}, //
+
21677 {1.34633994, 14.4923897}, //
+
21678 {1.34841001, 14.4914503}, //
+
21679 {1.35061002, 14.4904604}, //
+
21680 {1.35292995, 14.4894304}, //
+
21681 {1.35538006, 14.4883604}, //
+
21682 {1.35794997, 14.4872503}, //
+
21683 {1.36057997, 14.4861002}, //
+
21684 {1.36321998, 14.4849005}, //
+
21685 {1.36584997, 14.4836597}, //
+
21686 {1.36847997, 14.4823799}, //
+
21687 {1.37111998, 14.48106}, //
+
21688 {1.37374997, 14.4796896}, //
+
21689 {1.37637997, 14.4782896}, //
+
21690 {1.37901998, 14.47684}, //
+
21691 {1.38164997, 14.4753504}, //
+
21692 {1.38423002, 14.4738903}, //
+
21693 {1.38668001, 14.4725199}, //
+
21694 {1.38900995, 14.47122}, //
+
21695 {1.39120996, 14.4700098}, //
+
21696 {1.39328003, 14.4688797}, //
+
21697 {1.39523005, 14.4678402}, //
+
21698 {1.39705002, 14.4668798}, //
+
21699 {1.39874005, 14.4659996}, //
+
21700 {1.40030003, 14.4652004}, //
+
21701 {1.40172994, 14.4645004}, //
+
21702 {1.40298998, 14.4638796}, //
+
21703 {1.40408003, 14.4633398}, //
+
21704 {1.40576005, 14.4625101}, //
+
21705 {1.40634, 14.4622202}, //
+
21706 {1.40675998, 14.4620199}, //
+
21707 {1.40709996, 14.4618502}, //
+
21708 });
+
21709 polys.push_back({
+
21710 {4.02898979, 14.0788698}, //
+
21711 {4.02971983, 14.0842896}, //
+
21712 {4.03180981, 14.0997696}, //
+
21713 {4.03316021, 14.1098299}, //
+
21714 {4.03472996, 14.1214399}, //
+
21715 {4.03649998, 14.1345997}, //
+
21716 {4.03844976, 14.14884}, //
+
21717 {4.0405302, 14.16366}, //
+
21718 {4.04272985, 14.1790705}, //
+
21719 {4.04505014, 14.1950598}, //
+
21720 {4.04750013, 14.2116404}, //
+
21721 {4.05007982, 14.2287998}, //
+
21722 {4.05278015, 14.2465496}, //
+
21723 {4.05560017, 14.2648802}, //
+
21724 {4.05854988, 14.2838001}, //
+
21725 {4.06155014, 14.3029203}, //
+
21726 {4.06450987, 14.3218203}, //
+
21727 {4.06742001, 14.3405199}, //
+
21728 {4.07029009, 14.3590002}, //
+
21729 {4.07312012, 14.3772697}, //
+
21730 {4.07591009, 14.3953304}, //
+
21731 {4.07865, 14.4131804}, //
+
21732 {4.08134985, 14.4308205}, //
+
21733 {4.08400011, 14.4482498}, //
+
21734 {4.08654022, 14.4650803}, //
+
21735 {4.08887005, 14.4809103}, //
+
21736 {4.09098005, 14.4957304}, //
+
21737 {4.09288979, 14.5095396}, //
+
21738 {4.09458017, 14.5223503}, //
+
21739 {4.09606981, 14.5341597}, //
+
21740 {4.09734011, 14.54496}, //
+
21741 {4.09840012, 14.55476}, //
+
21742 {4.09924984, 14.56355}, //
+
21743 {4.09922981, 14.5620003}, //
+
21744 {4.09917021, 14.5588598}, //
+
21745 {4.09906006, 14.5541296}, //
+
21746 {4.09890985, 14.5478096}, //
+
21747 {4.09873009, 14.5398998}, //
+
21748 {4.09849024, 14.5303898}, //
+
21749 {4.09821987, 14.5193005}, //
+
21750 {4.09790993, 14.5066204}, //
+
21751 {4.09754992, 14.4923496}, //
+
21752 {4.09711981, 14.4770899}, //
+
21753 {4.09656, 14.4614601}, //
+
21754 {4.09588003, 14.4454498}, //
+
21755 {4.09506989, 14.42906}, //
+
21756 {4.09413004, 14.4122896}, //
+
21757 {4.09306002, 14.3951502}, //
+
21758 {4.09186983, 14.3776302}, //
+
21759 {4.09054995, 14.3597298}, //
+
21760 {4.08909988, 14.3414497}, //
+
21761 {4.08746004, 14.3232203}, //
+
21762 {4.08557987, 14.30546}, //
+
21763 {4.08343983, 14.2881498}, //
+
21764 {4.08104992, 14.2713003}, //
+
21765 {4.07841015, 14.2549105}, //
+
21766 {4.07552004, 14.2389803}, //
+
21767 {4.07238007, 14.2235098}, //
+
21768 {4.06899023, 14.2084999}, //
+
21769 {4.06535006, 14.1939497}, //
+
21770 {4.06317997, 14.1901999}, //
+
21771 {4.0611701, 14.1864996}, //
+
21772 {4.05932999, 14.1828403}, //
+
21773 {4.0576601, 14.1792202}, //
+
21774 {4.05615997, 14.1756401}, //
+
21775 {4.05482006, 14.1721096}, //
+
21776 {4.05363989, 14.1686096}, //
+
21777 {4.05263996, 14.1651602}, //
+
21778 {4.05179977, 14.1617498}, //
+
21779 {4.05104017, 14.1583996}, //
+
21780 {4.05029011, 14.1551399}, //
+
21781 {4.04953003, 14.1519604}, //
+
21782 {4.04877996, 14.14886}, //
+
21783 {4.04801989, 14.1458397}, //
+
21784 {4.04726982, 14.14291}, //
+
21785 {4.04651022, 14.1400499}, //
+
21786 {4.04576015, 14.13729}, //
+
21787 {4.04500008, 14.1345997}, //
+
21788 {4.04428005, 14.1320105}, //
+
21789 {4.04359007, 14.1295004}, //
+
21790 {4.04295015, 14.1270704}, //
+
21791 {4.04234982, 14.1247301}, //
+
21792 {4.04179001, 14.1224699}, //
+
21793 {4.04126978, 14.1202898}, //
+
21794 {4.04079008, 14.1181898}, //
+
21795 {4.04034996, 14.1161804}, //
+
21796 {4.03994989, 14.1142502}, //
+
21797 {4.03956985, 14.1123896}, //
+
21798 {4.03918982, 14.1105804}, //
+
21799 {4.03881979, 14.1087999}, //
+
21800 {4.03844023, 14.1070604}, //
+
21801 {4.03806019, 14.1053696}, //
+
21802 {4.03768015, 14.1037197}, //
+
21803 {4.03731012, 14.1021004}, //
+
21804 {4.03693008, 14.1005297}, //
+
21805 {4.03655005, 14.099}, //
+
21806 {4.03617001, 14.0975199}, //
+
21807 {4.03578997, 14.0960798}, //
+
21808 {4.03541994, 14.0946798}, //
+
21809 {4.0350399, 14.0933304}, //
+
21810 {4.03465986, 14.0920095}, //
+
21811 {4.03427982, 14.0907297}, //
+
21812 {4.0339098, 14.0895004}, //
+
21813 {4.03353024, 14.0882998}, //
+
21814 {4.0331502, 14.0871496}, //
+
21815 {4.03277016, 14.08605}, //
+
21816 {4.03239012, 14.0849895}, //
+
21817 {4.03202009, 14.0839701}, //
+
21818 {4.03164005, 14.0829897}, //
+
21819 {4.03126001, 14.0820503}, //
+
21820 {4.03087997, 14.0811501}, //
+
21821 {4.03050995, 14.0802898}, //
+
21822 {4.03012991, 14.0794802}, //
+
21823 {4.02974987, 14.0787001}, //
+
21824 {4.02938986, 14.0779696}, //
+
21825 {4.02907991, 14.0772696}, //
+
21826 {4.02881002, 14.0766201}, //
+
21827 {4.02861977, 14.0761299}, //
+
21828 });
+
21829 polys.push_back({
+
21830 {0.545836985, 14.4449596}, //
+
21831 {0.545647979, 14.4451504}, //
+
21832 {0.540799975, 14.4499502}, //
+
21833 {0.539646029, 14.4511003}, //
+
21834 {0.538448989, 14.4523001}, //
+
21835 {0.537211001, 14.4535303}, //
+
21836 {0.535930991, 14.4548101}, //
+
21837 {0.53460902, 14.45613}, //
+
21838 {0.533244014, 14.4574804}, //
+
21839 {0.531838, 14.4588804}, //
+
21840 {0.530390024, 14.4603205}, //
+
21841 {0.528900027, 14.4617996}, //
+
21842 {0.527419984, 14.4633503}, //
+
21843 {0.525981009, 14.4649897}, //
+
21844 {0.524582982, 14.4667101}, //
+
21845 {0.523226023, 14.4685097}, //
+
21846 {0.521908998, 14.4703903}, //
+
21847 {0.520632982, 14.4723597}, //
+
21848 {0.519397974, 14.4743996}, //
+
21849 {0.518203974, 14.4765396}, //
+
21850 {0.517050028, 14.4787502}, //
+
21851 {0.515990019, 14.4809704}, //
+
21852 {0.515055001, 14.48312}, //
+
21853 {0.51424402, 14.4851704}, //
+
21854 {0.513558984, 14.4871502}, //
+
21855 {0.512997985, 14.4890299}, //
+
21856 {0.512561023, 14.49084}, //
+
21857 {0.512248993, 14.4925604}, //
+
21858 {0.512062013, 14.4941998}, //
+
21859 {0.512000024, 14.4957504}, //
+
21860 {0.512796998, 14.4987602}, //
+
21861 {0.513677001, 14.50177}, //
+
21862 {0.51463902, 14.5047798}, //
+
21863 {0.515684009, 14.5077896}, //
+
21864 {0.516812027, 14.5108099}, //
+
21865 {0.518022001, 14.5138197}, //
+
21866 {0.519315004, 14.5168304}, //
+
21867 {0.520690978, 14.5198402}, //
+
21868 {0.52214998, 14.52285}, //
+
21869 {0.523618996, 14.5258198}, //
+
21870 {0.525004029, 14.5287104}, //
+
21871 {0.526305974, 14.5315104}, //
+
21872 {0.527522981, 14.5342302}, //
+
21873 {0.528656006, 14.53687}, //
+
21874 {0.529706001, 14.5394297}, //
+
21875 {0.530671, 14.5418997}, //
+
21876 {0.531552017, 14.5442896}, //
+
21877 {0.532350004, 14.5466003}, //
+
21878 {0.532369971, 14.5473299}, //
+
21879 {0.532431006, 14.5480299}, //
+
21880 {0.53253299, 14.5486803}, //
+
21881 {0.532675982, 14.5492897}, //
+
21882 {0.532859027, 14.5498505}, //
+
21883 {0.533083022, 14.5503798}, //
+
21884 {0.533348024, 14.5508604}, //
+
21885 {0.533653975, 14.5513}, //
+
21886 {0.533999979, 14.5516996}, //
+
21887 {0.534943998, 14.55264}, //
+
21888 {0.535363972, 14.5530596}, //
+
21889 {0.535511017, 14.5532103}, //
+
21890 {0.535700023, 14.5534}, //
+
21891 {0.535700023, 14.5601501}, //
+
21892 {0.536455989, 14.55861}, //
+
21893 {0.537211001, 14.5569801}, //
+
21894 {0.537967026, 14.5552702}, //
+
21895 {0.538721979, 14.5534697}, //
+
21896 {0.539478004, 14.55159}, //
+
21897 {0.540233016, 14.5496197}, //
+
21898 {0.540988982, 14.5475597}, //
+
21899 {0.541743994, 14.5454197}, //
+
21900 {0.542500019, 14.5431995}, //
+
21901 {0.543214023, 14.5409403}, //
+
21902 {0.543842971, 14.5386896}, //
+
21903 {0.544389009, 14.5364304}, //
+
21904 {0.544851005, 14.5341702}, //
+
21905 {0.545228004, 14.5319099}, //
+
21906 {0.545521975, 14.5296402}, //
+
21907 {0.545732021, 14.52738}, //
+
21908 {0.545858026, 14.5251198}, //
+
21909 {0.545899987, 14.52285}, //
+
21910 {0.545858026, 14.52139}, //
+
21911 {0.545732021, 14.5200195}, //
+
21912 {0.545521975, 14.5187197}, //
+
21913 {0.545228004, 14.5175104}, //
+
21914 {0.544851005, 14.5163803}, //
+
21915 {0.544389009, 14.5153399}, //
+
21916 {0.543842971, 14.5143805}, //
+
21917 {0.543214023, 14.5135002}, //
+
21918 {0.542500019, 14.5127001}, //
+
21919 {0.541786015, 14.5095997}, //
+
21920 {0.541157007, 14.50634}, //
+
21921 {0.540611029, 14.5029097}, //
+
21922 {0.540148973, 14.4993095}, //
+
21923 {0.539771974, 14.4955502}, //
+
21924 {0.539478004, 14.4916096}, //
+
21925 {0.539268017, 14.4875097}, //
+
21926 {0.539142013, 14.4832401}, //
+
21927 {0.539099991, 14.4787998}, //
+
21928 {0.539142013, 14.4751396}, //
+
21929 {0.539268017, 14.4716797}, //
+
21930 {0.539478004, 14.4684401}, //
+
21931 {0.539771974, 14.4653997}, //
+
21932 {0.540148973, 14.4625702}, //
+
21933 {0.540611029, 14.45996}, //
+
21934 {0.541157007, 14.45755}, //
+
21935 {0.541786015, 14.4553404}, //
+
21936 {0.542500019, 14.4533501}, //
+
21937 {0.544389009, 14.4486599}, //
+
21938 {0.545228004, 14.4465704}, //
+
21939 {0.545521975, 14.4458399}, //
+
21940 {0.545899987, 14.4448996}, //
+
21941 });
+
21942 polys.push_back({
+
21943 {5.04071999, 14.3495703}, //
+
21944 {5.04084015, 14.3502798}, //
+
21945 {5.04122019, 14.3514004}, //
+
21946 {5.04185009, 14.3529501}, //
+
21947 {5.04272985, 14.3549099}, //
+
21948 {5.04385996, 14.3572998}, //
+
21949 {5.04524994, 14.3600998}, //
+
21950 {5.04680014, 14.3660898}, //
+
21951 {5.04843998, 14.3719997}, //
+
21952 {5.05015993, 14.37782}, //
+
21953 {5.05195999, 14.3835497}, //
+
21954 {5.05384016, 14.3892002}, //
+
21955 {5.05580997, 14.3947697}, //
+
21956 {5.05784988, 14.4002504}, //
+
21957 {5.05998993, 14.4056396}, //
+
21958 {5.06220007, 14.4109497}, //
+
21959 {5.06442022, 14.4154501}, //
+
21960 {5.06655979, 14.4199104}, //
+
21961 {5.0686202, 14.4243298}, //
+
21962 {5.07059002, 14.4287004}, //
+
21963 {5.07247019, 14.4330397}, //
+
21964 {5.07426977, 14.4373302}, //
+
21965 {5.07598019, 14.4415798}, //
+
21966 {5.07761002, 14.4457798}, //
+
21967 {5.0791502, 14.4499502}, //
+
21968 {5.08054018, 14.4540701}, //
+
21969 {5.08166981, 14.4581499}, //
+
21970 {5.08255005, 14.4621897}, //
+
21971 {5.08317995, 14.4661903}, //
+
21972 {5.08355999, 14.47015}, //
+
21973 {5.08368015, 14.4740601}, //
+
21974 {5.08355999, 14.4779301}, //
+
21975 {5.08317995, 14.48176}, //
+
21976 {5.08255005, 14.4855499}, //
+
21977 {5.08178997, 14.4878597}, //
+
21978 {5.08103991, 14.4902496}, //
+
21979 {5.08027983, 14.4927197}, //
+
21980 {5.07952976, 14.4952803}, //
+
21981 {5.07877016, 14.49792}, //
+
21982 {5.0780201, 14.5006399}, //
+
21983 {5.07726002, 14.5034399}, //
+
21984 {5.07650995, 14.5063295}, //
+
21985 {5.07574987, 14.5093002}, //
+
21986 {5.07572985, 14.5115299}, //
+
21987 {5.07566977, 14.51373}, //
+
21988 {5.07556009, 14.5158796}, //
+
21989 {5.07540989, 14.5179901}, //
+
21990 {5.07523012, 14.52005}, //
+
21991 {5.0749898, 14.5220804}, //
+
21992 {5.07471991, 14.5240602}, //
+
21993 {5.07440996, 14.526}, //
+
21994 {5.07404995, 14.5278997}, //
+
21995 {5.07396984, 14.5282602}, //
+
21996 {5.0742898, 14.5278397}, //
+
21997 {5.07574987, 14.5262499}, //
+
21998 {5.08178997, 14.5141602}, //
+
21999 {5.08255005, 14.5126495}, //
+
22000 {5.08326006, 14.5111103}, //
+
22001 {5.08388996, 14.5094805}, //
+
22002 {5.08444023, 14.5077696}, //
+
22003 {5.0848999, 14.5059795}, //
+
22004 {5.08527994, 14.5040998}, //
+
22005 {5.08556986, 14.50214}, //
+
22006 {5.08578014, 14.5000896}, //
+
22007 {5.08590984, 14.4979601}, //
+
22008 {5.0859499, 14.4957504}, //
+
22009 {5.08590984, 14.4926004}, //
+
22010 {5.08578014, 14.4891996}, //
+
22011 {5.08556986, 14.4855604}, //
+
22012 {5.08527994, 14.4816599}, //
+
22013 {5.0848999, 14.4775105}, //
+
22014 {5.08444023, 14.4731102}, //
+
22015 {5.08388996, 14.4684496}, //
+
22016 {5.08326006, 14.4635496}, //
+
22017 {5.08255005, 14.4583998}, //
+
22018 {5.08178997, 14.4532604}, //
+
22019 {5.08103991, 14.44837}, //
+
22020 {5.08027983, 14.4437304}, //
+
22021 {5.07952976, 14.4393396}, //
+
22022 {5.07877016, 14.4351997}, //
+
22023 {5.0780201, 14.4313097}, //
+
22024 {5.07726002, 14.4276695}, //
+
22025 {5.07650995, 14.4242897}, //
+
22026 {5.07574987, 14.4211502}, //
+
22027 {5.07566977, 14.4195099}, //
+
22028 {5.07540989, 14.4176302}, //
+
22029 {5.0749898, 14.4154902}, //
+
22030 {5.07440996, 14.4131002}, //
+
22031 {5.07364988, 14.4104605}, //
+
22032 {5.07273006, 14.4075699}, //
+
22033 {5.07164001, 14.4044304}, //
+
22034 {5.07038021, 14.4010401}, //
+
22035 {5.06895018, 14.3973999}, //
+
22036 {5.06743002, 14.3936796}, //
+
22037 {5.06585979, 14.3900299}, //
+
22038 {5.06426001, 14.3864803}, //
+
22039 {5.06260014, 14.3830004}, //
+
22040 {5.06091022, 14.3796196}, //
+
22041 {5.05916977, 14.3763103}, //
+
22042 {5.05739021, 14.3730898}, //
+
22043 {5.05557013, 14.3699503}, //
+
22044 {5.05369997, 14.3669004}, //
+
22045 {5.05187988, 14.3640099}, //
+
22046 {5.05018997, 14.3613796}, //
+
22047 {5.04863024, 14.3589897}, //
+
22048 {5.04719019, 14.3568602}, //
+
22049 {5.04586983, 14.3549805}, //
+
22050 {5.04468012, 14.3533401}, //
+
22051 {5.0436101, 14.3519602}, //
+
22052 {5.04266977, 14.3508301}, //
+
22053 {5.04185009, 14.3499498}, //
+
22054 {5.04122019, 14.3493996}, //
+
22055 {5.04084015, 14.3492804}, //
+
22056 });
+
22057 polys.push_back({
+
22058 {4.93516016, 14.4574099}, //
+
22059 {4.93674994, 14.4618502}, //
+
22060 {4.93676996, 14.4619503}, //
+
22061 {4.93694019, 14.4627895}, //
+
22062 {4.93708992, 14.4635201}, //
+
22063 {4.93751001, 14.4656096}, //
+
22064 {4.93844986, 14.4702997}, //
+
22065 {4.9388299, 14.4721899}, //
+
22066 {4.93920994, 14.4740801}, //
+
22067 {4.93957996, 14.4759598}, //
+
22068 {4.93996, 14.47785}, //
+
22069 {4.94072008, 14.4816103}, //
+
22070 {4.94099998, 14.4830103}, //
+
22071 {4.9408102, 14.4813204}, //
+
22072 {4.94051981, 14.4780102}, //
+
22073 {4.94032001, 14.4747896}, //
+
22074 {4.94018984, 14.4716501}, //
+
22075 {4.94014978, 14.4686003}, //
+
22076 {4.93937016, 14.4663897}, //
+
22077 {4.93855, 14.4642496}, //
+
22078 {4.93768978, 14.4622097}, //
+
22079 {4.93678999, 14.4602404}, //
+
22080 {4.93585014, 14.4583597}, //
+
22081 {4.93486023, 14.4565601}, //
+
22082 {4.93466997, 14.4562397}, //
+
22083 });
+
22084 polys.push_back({
+
22085 {2.10575008, 12.9700499}, //
+
22086 {2.10618997, 12.9703703}, //
+
22087 {2.10692, 12.97089}, //
+
22088 {2.10926008, 12.9725599}, //
+
22089 {2.11086988, 12.9737101}, //
+
22090 {2.11277008, 12.9750605}, //
+
22091 {2.11495996, 12.9766302}, //
+
22092 {2.11745, 12.9784002}, //
+
22093 {2.12017012, 12.9803696}, //
+
22094 {2.12304997, 12.9825096}, //
+
22095 {2.12611008, 12.9848204}, //
+
22096 {2.12932992, 12.9872904}, //
+
22097 {2.13271999, 12.9899302}, //
+
22098 {2.13627005, 12.9927301}, //
+
22099 {2.1400001, 12.9957104}, //
+
22100 {2.1438899, 12.9988403}, //
+
22101 {2.14794993, 13.0021496}, //
+
22102 {2.15202999, 13.0055599}, //
+
22103 {2.15598989, 13.0090103}, //
+
22104 {2.15982008, 13.0125103}, //
+
22105 {2.1635201, 13.0160398}, //
+
22106 {2.16709995, 13.0196199}, //
+
22107 {2.17055011, 13.0232401}, //
+
22108 {2.1738801, 13.0269003}, //
+
22109 {2.17707992, 13.0305996}, //
+
22110 {2.18015003, 13.0343504}, //
+
22111 {2.18308997, 13.0381298}, //
+
22112 {2.18585992, 13.0418997}, //
+
22113 {2.18846011, 13.04568}, //
+
22114 {2.19089007, 13.0494499}, //
+
22115 {2.19315004, 13.0532198}, //
+
22116 {2.19524002, 13.0569897}, //
+
22117 {2.19716001, 13.0607595}, //
+
22118 {2.19892001, 13.0645304}, //
+
22119 {2.20050001, 13.0683002}, //
+
22120 {2.2019701, 13.0721703}, //
+
22121 {2.20335007, 13.0762501}, //
+
22122 {2.20465994, 13.0805397}, //
+
22123 {2.20586991, 13.0850401}, //
+
22124 {2.20701003, 13.0897398}, //
+
22125 {2.20806003, 13.0946598}, //
+
22126 {2.2090199, 13.0997801}, //
+
22127 {2.2098999, 13.1051102}, //
+
22128 {2.21070004, 13.1106501}, //
+
22129 {2.2114501, 13.1162796}, //
+
22130 {2.21220994, 13.1218796}, //
+
22131 {2.21296, 13.12743}, //
+
22132 {2.21371007, 13.1329403}, //
+
22133 {2.2144599, 13.1384001}, //
+
22134 {2.21520996, 13.1438303}, //
+
22135 {2.21596003, 13.14921}, //
+
22136 {2.21670008, 13.1545496}, //
+
22137 {2.2174499, 13.1598501}, //
+
22138 {2.21817994, 13.1657305}, //
+
22139 {2.21887994, 13.1713104}, //
+
22140 {2.21953011, 13.1766005}, //
+
22141 {2.22013998, 13.1815996}, //
+
22142 {2.22070003, 13.1863003}, //
+
22143 {2.22123003, 13.1907196}, //
+
22144 {2.22170997, 13.1948404}, //
+
22145 {2.22215009, 13.1986599}, //
+
22146 {2.22254992, 13.2021999}, //
+
22147 {2.22294998, 13.2054796}, //
+
22148 {2.2233901, 13.20856}, //
+
22149 {2.22387004, 13.2114296}, //
+
22150 {2.22440004, 13.2140903}, //
+
22151 {2.22496009, 13.2165403}, //
+
22152 {2.22556996, 13.2187796}, //
+
22153 {2.22621989, 13.2208099}, //
+
22154 {2.22691989, 13.2226295}, //
+
22155 {2.22764993, 13.2242498}, //
+
22156 {2.22839999, 13.2249804}, //
+
22157 {2.22916007, 13.2256804}, //
+
22158 {2.2299099, 13.2263298}, //
+
22159 {2.23065996, 13.2269402}, //
+
22160 {2.23141003, 13.2275}, //
+
22161 {2.23216009, 13.2280302}, //
+
22162 {2.23290992, 13.2285099}, //
+
22163 {2.23364997, 13.2289495}, //
+
22164 {2.23440003, 13.2293501}, //
+
22165 {2.23628998, 13.2302904}, //
+
22166 {2.23674989, 13.2305298}, //
+
22167 {2.23762989, 13.2309704}, //
+
22168 {2.23779988, 13.2310495}, //
+
22169 {2.23926997, 13.2317696}, //
+
22170 {2.24064994, 13.23246}, //
+
22171 {2.24196005, 13.2330999}, //
+
22172 {2.24317002, 13.2336998}, //
+
22173 {2.2443099, 13.2342596}, //
+
22174 {2.2453599, 13.2347803}, //
+
22175 {2.24720001, 13.2356997}, //
+
22176 {2.24799991, 13.2361002}, //
+
22177 {2.24870992, 13.2365599}, //
+
22178 {2.24934006, 13.2371902}, //
+
22179 {2.24989009, 13.2379799}, //
+
22180 {2.25035, 13.2389402}, //
+
22181 {2.25073004, 13.2400703}, //
+
22182 {2.25101995, 13.2413702}, //
+
22183 {2.25123, 13.2428303}, //
+
22184 {2.25135994, 13.2444601}, //
+
22185 {2.25139999, 13.2462502}, //
+
22186 {2.25131989, 13.2482405}, //
+
22187 {2.25106001, 13.2504501}, //
+
22188 {2.25063992, 13.2528601}, //
+
22189 {2.25006008, 13.2554703}, //
+
22190 {2.2493, 13.2582998}, //
+
22191 {2.24837995, 13.2613401}, //
+
22192 {2.2472899, 13.2645798}, //
+
22193 {2.24603009, 13.2680397}, //
+
22194 {2.24460006, 13.2716999}, //
+
22195 {2.24394989, 13.2768698}, //
+
22196 {2.24351001, 13.2818403}, //
+
22197 {2.24327993, 13.2865896}, //
+
22198 {2.24325991, 13.2911301}, //
+
22199 {2.24344993, 13.2954702}, //
+
22200 {2.24383998, 13.2995901}, //
+
22201 {2.24445009, 13.3035002}, //
+
22202 {2.24527001, 13.30721}, //
+
22203 {2.24629998, 13.3107004}, //
+
22204 {2.24745011, 13.3140297}, //
+
22205 {2.24865007, 13.3172302}, //
+
22206 {2.24988008, 13.3203096}, //
+
22207 {2.25115991, 13.3232603}, //
+
22208 {2.25248003, 13.3260899}, //
+
22209 {2.25382996, 13.3287897}, //
+
22210 {2.25522995, 13.3313704}, //
+
22211 {2.25667, 13.3338203}, //
+
22212 {2.2581501, 13.3361502}, //
+
22213 {2.25961995, 13.33992}, //
+
22214 {2.26099992, 13.3436804}, //
+
22215 {2.26231003, 13.3474503}, //
+
22216 {2.26352, 13.3512201}, //
+
22217 {2.26465988, 13.3549805}, //
+
22218 {2.26571012, 13.3587503}, //
+
22219 {2.26666999, 13.3625202}, //
+
22220 {2.26754999, 13.3662796}, //
+
22221 {2.26834989, 13.3700504}, //
+
22222 {2.26914001, 13.3730202}, //
+
22223 {2.27000999, 13.3759098}, //
+
22224 {2.27097011, 13.3787098}, //
+
22225 {2.27201009, 13.3814297}, //
+
22226 {2.27313995, 13.3840704}, //
+
22227 {2.27434993, 13.3866301}, //
+
22228 {2.27565002, 13.3891001}, //
+
22229 {2.27702999, 13.39149}, //
+
22230 {2.27850008, 13.3937998}, //
+
22231 {2.28063011, 13.3984499}, //
+
22232 {2.28251004, 13.4033499}, //
+
22233 {2.28414011, 13.4084902}, //
+
22234 {2.28552008, 13.4138899}, //
+
22235 {2.28664994, 13.4195404}, //
+
22236 {2.28751993, 13.4254398}, //
+
22237 {2.28815007, 13.4315996}, //
+
22238 {2.2885201, 13.4379997}, //
+
22239 {2.28865004, 13.4446497}, //
+
22240 {2.28811002, 13.4515495}, //
+
22241 {2.28646994, 13.4587097}, //
+
22242 {2.28376007, 13.4661198}, //
+
22243 {2.2799499, 13.4737797}, //
+
22244 {2.27504992, 13.4816904}, //
+
22245 {2.26906991, 13.48985}, //
+
22246 {2.26200008, 13.4982595}, //
+
22247 {2.25384998, 13.5069304}, //
+
22248 {2.24460006, 13.5158501}, //
+
22249 {2.23719001, 13.5225}, //
+
22250 {2.23003006, 13.5289001}, //
+
22251 {2.22312999, 13.5350599}, //
+
22252 {2.21647, 13.5409603}, //
+
22253 {2.21006989, 13.5466099}, //
+
22254 {2.20391011, 13.5520096}, //
+
22255 {2.19800997, 13.5571499}, //
+
22256 {2.19234991, 13.5620499}, //
+
22257 {2.18694997, 13.5667}, //
+
22258 {2.18032002, 13.5712404}, //
+
22259 {2.17398, 13.5758305}, //
+
22260 {2.16792989, 13.5804596}, //
+
22261 {2.16217995, 13.5851202}, //
+
22262 {2.15671992, 13.5898399}, //
+
22263 {2.15155005, 13.5945902}, //
+
22264 {2.1466701, 13.5993795}, //
+
22265 {2.14209008, 13.6042204}, //
+
22266 {2.13779998, 13.6091003}, //
+
22267 {2.13371992, 13.61415}, //
+
22268 {2.12976003, 13.6194897}, //
+
22269 {2.12593007, 13.6251202}, //
+
22270 {2.12223005, 13.6310396}, //
+
22271 {2.11864996, 13.6372604}, //
+
22272 {2.11520004, 13.6437702}, //
+
22273 {2.11187005, 13.6505699}, //
+
22274 {2.10867, 13.6576595}, //
+
22275 {2.10560012, 13.6650496}, //
+
22276 {2.09983993, 13.6767101}, //
+
22277 {2.0931201, 13.6890697}, //
+
22278 {2.08542991, 13.7021503}, //
+
22279 {2.07679009, 13.7159405}, //
+
22280 {2.0671699, 13.7304401}, //
+
22281 {2.05660009, 13.7456503}, //
+
22282 {2.04505992, 13.76157}, //
+
22283 {2.03256011, 13.7782097}, //
+
22284 {2.01909995, 13.7955503}, //
+
22285 {2.00522995, 13.8130302}, //
+
22286 {1.99147999, 13.8300505}, //
+
22287 {1.97785997, 13.8466101}, //
+
22288 {1.96436, 13.86271}, //
+
22289 {1.95098996, 13.8783503}, //
+
22290 {1.93773997, 13.8935299}, //
+
22291 {1.92462003, 13.9082499}, //
+
22292 {1.91162002, 13.9224997}, //
+
22293 {1.89874995, 13.9363003}, //
+
22294 {1.88455999, 13.9515495}, //
+
22295 {1.86910999, 13.9671898}, //
+
22296 {1.85239995, 13.9831896}, //
+
22297 {1.83443999, 13.9995804}, //
+
22298 {1.81522, 14.0163403}, //
+
22299 {1.79474998, 14.0334797}, //
+
22300 {1.77302003, 14.0509901}, //
+
22301 {1.75004005, 14.0688801}, //
+
22302 {1.72580004, 14.0871496}, //
+
22303 {1.70140004, 14.1050501}, //
+
22304 {1.67793, 14.1218204}, //
+
22305 {1.65537, 14.1374598}, //
+
22306 {1.63373995, 14.1519699}, //
+
22307 {1.61301994, 14.16535}, //
+
22308 {1.59322, 14.1775904}, //
+
22309 {1.57435, 14.1887102}, //
+
22310 {1.55639005, 14.1987}, //
+
22311 {1.53935003, 14.20755}, //
+
22312 {1.51376998, 14.2200203}, //
+
22313 {1.48827004, 14.2318096}, //
+
22314 {1.46285999, 14.2429399}, //
+
22315 {1.43753004, 14.2534103}, //
+
22316 {1.41228998, 14.2631998}, //
+
22317 {1.38713002, 14.2723303}, //
+
22318 {1.36205006, 14.2807903}, //
+
22319 {1.33705997, 14.2885799}, //
+
22320 {1.31215, 14.2957001}, //
+
22321 {1.30763996, 14.2978697}, //
+
22322 {1.30313003, 14.29988}, //
+
22323 {1.29860997, 14.3017197}, //
+
22324 {1.29410005, 14.3033895}, //
+
22325 {1.28957999, 14.3048897}, //
+
22326 {1.28506005, 14.3062296}, //
+
22327 {1.28053999, 14.3074102}, //
+
22328 {1.27602005, 14.3084097}, //
+
22329 {1.27149999, 14.3092499}, //
+
22330 {1.26045001, 14.3129301}, //
+
22331 {1.24989998, 14.3164501}, //
+
22332 {1.23986006, 14.3198004}, //
+
22333 {1.23030996, 14.3229799}, //
+
22334 {1.22126997, 14.3260002}, //
+
22335 {1.21272004, 14.3288498}, //
+
22336 {1.20467997, 14.3315296}, //
+
22337 {1.19713998, 14.3340502}, //
+
22338 {1.19009995, 14.3364}, //
+
22339 {1.18482995, 14.3386097}, //
+
22340 {1.17955995, 14.3407402}, //
+
22341 {1.17428994, 14.3427896}, //
+
22342 {1.16902006, 14.3447504}, //
+
22343 {1.16375005, 14.3466301}, //
+
22344 {1.15848005, 14.3484201}, //
+
22345 {1.15320003, 14.3501301}, //
+
22346 {1.14793003, 14.3517599}, //
+
22347 {1.14265001, 14.3533001}, //
+
22348 {1.13733006, 14.3548098}, //
+
22349 {1.13192999, 14.3563204}, //
+
22350 {1.12644005, 14.35783}, //
+
22351 {1.12088001, 14.3593397}, //
+
22352 {1.11522996, 14.3608599}, //
+
22353 {1.10949004, 14.3623695}, //
+
22354 {1.10368001, 14.3638802}, //
+
22355 {1.09777999, 14.3653898}, //
+
22356 {1.09179997, 14.3669004}, //
+
22357 {1.08500004, 14.3669004}, //
+
22358 {1.07621002, 14.3683596}, //
+
22359 {1.06791997, 14.36973}, //
+
22360 {1.06013, 14.3710299}, //
+
22361 {1.05283999, 14.3722401}, //
+
22362 {1.04605997, 14.3733702}, //
+
22363 {1.03978002, 14.3744097}, //
+
22364 {1.03400004, 14.37537}, //
+
22365 {1.02872002, 14.3762503}, //
+
22366 {1.02394998, 14.3770504}, //
+
22367 {1.01923001, 14.3777599}, //
+
22368 {1.01408994, 14.3783903}, //
+
22369 {1.00853002, 14.3789396}, //
+
22370 {1.00255001, 14.3794003}, //
+
22371 {0.99614799, 14.3797798}, //
+
22372 {0.989328027, 14.3800697}, //
+
22373 {0.982088029, 14.3802795}, //
+
22374 {0.974429011, 14.3804102}, //
+
22375 {0.966350019, 14.3804502}, //
+
22376 {0.961156011, 14.3804102}, //
+
22377 {0.956130028, 14.3802795}, //
+
22378 {0.951272011, 14.3800697}, //
+
22379 {0.946582019, 14.3797798}, //
+
22380 {0.942059994, 14.3794003}, //
+
22381 {0.937705994, 14.3789396}, //
+
22382 {0.933519006, 14.3783903}, //
+
22383 {0.929500997, 14.3777599}, //
+
22384 {0.925650001, 14.3770504}, //
+
22385 {0.920351028, 14.3763599}, //
+
22386 {0.915009975, 14.3757896}, //
+
22387 {0.909627974, 14.37535}, //
+
22388 {0.904202998, 14.3750401}, //
+
22389 {0.898736, 14.3748503}, //
+
22390 {0.893227994, 14.3747797}, //
+
22391 {0.887677014, 14.3748503}, //
+
22392 {0.882085025, 14.3750401}, //
+
22393 {0.876450002, 14.37535}, //
+
22394 {0.870742977, 14.3759604}, //
+
22395 {0.864908993, 14.3770304}, //
+
22396 {0.858950019, 14.3785601}, //
+
22397 {0.852864981, 14.3805504}, //
+
22398 {0.846653998, 14.3830004}, //
+
22399 {0.840317011, 14.38591}, //
+
22400 {0.83385402, 14.3892803}, //
+
22401 {0.827265024, 14.3931103}, //
+
22402 {0.820550025, 14.3973999}, //
+
22403 {0.799197018, 14.4073296}, //
+
22404 {0.778849006, 14.4160004}, //
+
22405 {0.759505987, 14.4234104}, //
+
22406 {0.741167009, 14.4295702}, //
+
22407 {0.723833978, 14.4344702}, //
+
22408 {0.707506001, 14.4381104}, //
+
22409 {0.692182004, 14.4405003}, //
+
22410 {0.677864015, 14.4416304}, //
+
22411 {0.664550006, 14.4414997}, //
+
22412 {0.657141984, 14.4406204}, //
+
22413 {0.649985015, 14.4394903}, //
+
22414 {0.643078029, 14.4381104}, //
+
22415 {0.636421978, 14.43647}, //
+
22416 {0.630016029, 14.4345903}, //
+
22417 {0.623861015, 14.4324598}, //
+
22418 {0.617956996, 14.4300699}, //
+
22419 {0.612303019, 14.4274397}, //
+
22420 {0.606899977, 14.4245501}, //
+
22421 {0.603888988, 14.42237}, //
+
22422 {0.600878, 14.4203501}, //
+
22423 {0.597867012, 14.4185104}, //
+
22424 {0.594856024, 14.4168301}, //
+
22425 {0.591844022, 14.4153204}, //
+
22426 {0.588832974, 14.41397}, //
+
22427 {0.585821986, 14.4127998}, //
+
22428 {0.582810998, 14.4117899}, //
+
22429 {0.57980001, 14.4109497}, //
+
22430 {0.579043984, 14.4109297}, //
+
22431 {0.578288972, 14.4108696}, //
+
22432 {0.577533007, 14.4107599}, //
+
22433 {0.576777995, 14.4106102}, //
+
22434 {0.576022029, 14.41043}, //
+
22435 {0.575267017, 14.4101896}, //
+
22436 {0.574510992, 14.4099197}, //
+
22437 {0.57375598, 14.4096098}, //
+
22438 {0.573000014, 14.4092503}, //
+
22439 {0.572255015, 14.4089003}, //
+
22440 {0.571509004, 14.4085999}, //
+
22441 {0.570761025, 14.40833}, //
+
22442 {0.570011973, 14.4081097}, //
+
22443 {0.569262028, 14.4079304}, //
+
22444 {0.568511009, 14.4077797}, //
+
22445 {0.567758977, 14.4076796}, //
+
22446 {0.567004979, 14.4076204}, //
+
22447 {0.566250026, 14.4076004}, //
+
22448 {0.556050003, 14.4076004}, //
+
22449 {0.556300998, 14.4077501}, //
+
22450 {0.557054996, 14.4081898}, //
+
22451 {0.558310986, 14.4089203}, //
+
22452 {0.560069978, 14.4099398}, //
+
22453 {0.562331021, 14.4112597}, //
+
22454 {0.565093994, 14.4128704}, //
+
22455 {0.568359971, 14.4147701}, //
+
22456 {0.572129011, 14.4169598}, //
+
22457 {0.576399982, 14.4194498}, //
+
22458 {0.581089973, 14.42208}, //
+
22459 {0.586113989, 14.4247198}, //
+
22460 {0.59147203, 14.42735}, //
+
22461 {0.597164989, 14.4299803}, //
+
22462 {0.603192985, 14.43262}, //
+
22463 {0.609556019, 14.4352503}, //
+
22464 {0.616252005, 14.4378796}, //
+
22465 {0.623283982, 14.4405203}, //
+
22466 {0.630649984, 14.4431496}, //
+
22467 {0.638203979, 14.4457903}, //
+
22468 {0.645801008, 14.4484396}, //
+
22469 {0.653438985, 14.4510803}, //
+
22470 {0.661118984, 14.4537201}, //
+
22471 {0.668841004, 14.4563599}, //
+
22472 {0.676605999, 14.4589901}, //
+
22473 {0.684412003, 14.4616299}, //
+
22474 {0.692260027, 14.4642696}, //
+
22475 {0.700150013, 14.4668999}, //
+
22476 {0.707957029, 14.4693604}, //
+
22477 {0.715555012, 14.4714298}, //
+
22478 {0.722944021, 14.4731302}, //
+
22479 {0.73012501, 14.4744596}, //
+
22480 {0.737097979, 14.4754}, //
+
22481 {0.74386102, 14.4759703}, //
+
22482 {0.750415981, 14.47616}, //
+
22483 {0.756762028, 14.4759703}, //
+
22484 {0.762899995, 14.4754}, //
+
22485 {0.771860003, 14.4738903}, //
+
22486 {0.780653, 14.4723797}, //
+
22487 {0.789277971, 14.47087}, //
+
22488 {0.797734976, 14.4693699}, //
+
22489 {0.806023002, 14.4678602}, //
+
22490 {0.814144015, 14.4663601}, //
+
22491 {0.822098017, 14.4648504}, //
+
22492 {0.829882979, 14.4633503}, //
+
22493 {0.837499976, 14.4618502}, //
+
22494 {0.852693021, 14.4583797}, //
+
22495 {0.868137002, 14.4554901}, //
+
22496 {0.883832991, 14.4531803}, //
+
22497 {0.899780989, 14.4514599}, //
+
22498 {0.915980995, 14.4503298}, //
+
22499 {0.932433009, 14.4497805}, //
+
22500 {0.949136972, 14.4498196}, //
+
22501 {0.966093004, 14.4504404}, //
+
22502 {0.983299971, 14.4516497}, //
+
22503 {0.995208979, 14.4530401}, //
+
22504 {1.00681996, 14.4541702}, //
+
22505 {1.01813996, 14.4550505}, //
+
22506 {1.02917004, 14.4556799}, //
+
22507 {1.03989995, 14.4560604}, //
+
22508 {1.05034006, 14.4561796}, //
+
22509 {1.06049001, 14.4560604}, //
+
22510 {1.07034004, 14.4556799}, //
+
22511 {1.07990003, 14.4550505}, //
+
22512 {1.08972001, 14.4540901}, //
+
22513 {1.10033, 14.4526997}, //
+
22514 {1.11173999, 14.4509001}, //
+
22515 {1.12395, 14.4486799}, //
+
22516 {1.13695002, 14.4460402}, //
+
22517 {1.15074003, 14.4429798}, //
+
22518 {1.16533005, 14.4395103}, //
+
22519 {1.18071997, 14.4356098}, //
+
22520 {1.19690001, 14.4313002}, //
+
22521 {1.20274997, 14.4298401}, //
+
22522 {1.20827997, 14.4284697}, //
+
22523 {1.21345997, 14.4271698}, //
+
22524 {1.21831, 14.4259596}, //
+
22525 {1.22283006, 14.4248304}, //
+
22526 {1.22701001, 14.42379}, //
+
22527 {1.23085999, 14.4228296}, //
+
22528 {1.23436999, 14.4219503}, //
+
22529 {1.23755002, 14.4211502}, //
+
22530 {1.24050999, 14.4204197}, //
+
22531 {1.24334002, 14.4197197}, //
+
22532 {1.24603999, 14.4190702}, //
+
22533 {1.24862003, 14.4184599}, //
+
22534 {1.25107002, 14.4179001}, //
+
22535 {1.25338995, 14.4173698}, //
+
22536 {1.25558996, 14.4168901}, //
+
22537 {1.25766003, 14.4164495}, //
+
22538 {1.25960004, 14.41605}, //
+
22539 {1.26151001, 14.4156904}, //
+
22540 {1.26346004, 14.4153795}, //
+
22541 {1.26545, 14.4151096}, //
+
22542 {1.26748002, 14.4148703}, //
+
22543 {1.26954997, 14.41469}, //
+
22544 {1.27166998, 14.4145403}, //
+
22545 {1.27382004, 14.4144297}, //
+
22546 {1.27601004, 14.4143696}, //
+
22547 {1.27824998, 14.4143496}, //
+
22548 {1.28073001, 14.4135904}, //
+
22549 {1.28362, 14.4128399}, //
+
22550 {1.28692997, 14.4120798}, //
+
22551 {1.29065001, 14.4113302}, //
+
22552 {1.29480004, 14.4105701}, //
+
22553 {1.29936004, 14.4098196}, //
+
22554 {1.30434, 14.4090595}, //
+
22555 {1.30973995, 14.4083099}, //
+
22556 {1.31554997, 14.4075499}, //
+
22557 {1.32195997, 14.4066801}, //
+
22558 {1.32912004, 14.4055595}, //
+
22559 {1.33703995, 14.4041796}, //
+
22560 {1.34571004, 14.4025602}, //
+
22561 {1.35512996, 14.4006796}, //
+
22562 {1.36530995, 14.39855}, //
+
22563 {1.37623, 14.3961697}, //
+
22564 {1.38792002, 14.3935404}, //
+
22565 {1.40034997, 14.3906498}, //
+
22566 {1.42121005, 14.3851995}, //
+
22567 {1.44160998, 14.3794298}, //
+
22568 {1.46155, 14.3733101}, //
+
22569 {1.48102999, 14.3668604}, //
+
22570 {1.50004995, 14.3600798}, //
+
22571 {1.51862001, 14.3529596}, //
+
22572 {1.53672004, 14.3455095}, //
+
22573 {1.55436003, 14.3377199}, //
+
22574 {1.57155001, 14.3296003}, //
+
22575 {1.58810997, 14.3214397}, //
+
22576 {1.60387003, 14.3135204}, //
+
22577 {1.61882997, 14.3058596}, //
+
22578 {1.63300002, 14.2984505}, //
+
22579 {1.64637005, 14.2912903}, //
+
22580 {1.65894997, 14.28438}, //
+
22581 {1.67072999, 14.2777205}, //
+
22582 {1.68171, 14.2713099}, //
+
22583 {1.69190001, 14.2651501}, //
+
22584 {1.69704998, 14.2622204}, //
+
22585 {1.70194995, 14.2594604}, //
+
22586 {1.70659995, 14.2568703}, //
+
22587 {1.71099997, 14.2544498}, //
+
22588 {1.71513999, 14.2521896}, //
+
22589 {1.71903002, 14.2501097}, //
+
22590 {1.72266996, 14.2481899}, //
+
22591 {1.72606003, 14.2464304}, //
+
22592 {1.72920001, 14.2448502}, //
+
22593 {1.73218, 14.2433796}, //
+
22594 {1.73506999, 14.2419996}, //
+
22595 {1.73787999, 14.2406902}, //
+
22596 {1.74061, 14.23948}, //
+
22597 {1.74325001, 14.2383404}, //
+
22598 {1.74580002, 14.2372904}, //
+
22599 {1.74827003, 14.23633}, //
+
22600 {1.75065005, 14.2354498}, //
+
22601 {1.75294995, 14.2346497}, //
+
22602 {1.75752997, 14.2330198}, //
+
22603 {1.76224005, 14.2311401}, //
+
22604 {1.76707995, 14.2290096}, //
+
22605 {1.77204001, 14.2266302}, //
+
22606 {1.77711999, 14.2239904}, //
+
22607 {1.78233004, 14.2210903}, //
+
22608 {1.78766, 14.2179499}, //
+
22609 {1.79312003, 14.21455}, //
+
22610 {1.79869998, 14.2109003}, //
+
22611 {1.80458999, 14.2068005}, //
+
22612 {1.81093001, 14.2020302}, //
+
22613 {1.81773996, 14.1965904}, //
+
22614 {1.82500994, 14.1904802}, //
+
22615 {1.83273005, 14.1836996}, //
+
22616 {1.84091997, 14.17626}, //
+
22617 {1.84957004, 14.1681404}, //
+
22618 {1.85868001, 14.1593504}, //
+
22619 {1.86825001, 14.1499004}, //
+
22620 {1.88079, 14.1372404}, //
+
22621 {1.89277995, 14.1248598}, //
+
22622 {1.90423, 14.1127796}, //
+
22623 {1.91514003, 14.1009998}, //
+
22624 {1.92550004, 14.0895004}, //
+
22625 {1.93532002, 14.0783005}, //
+
22626 {1.94458997, 14.0673904}, //
+
22627 {1.95332003, 14.0567703}, //
+
22628 {1.96150005, 14.0464497}, //
+
22629 {1.96939003, 14.0360899}, //
+
22630 {1.97723997, 14.0253601}, //
+
22631 {1.98503995, 14.0142498}, //
+
22632 {1.99281001, 14.0027599}, //
+
22633 {2.00053, 13.9908895}, //
+
22634 {2.00820994, 13.9786501}, //
+
22635 {2.01585007, 13.9660301}, //
+
22636 {2.0234499, 13.9530296}, //
+
22637 {2.0309999, 13.9396496}, //
+
22638 {2.03642988, 13.9289799}, //
+
22639 {2.04220009, 13.9180603}, //
+
22640 {2.04831004, 13.9068804}, //
+
22641 {2.05474997, 13.8954601}, //
+
22642 {2.06153011, 13.8837795}, //
+
22643 {2.06863999, 13.87185}, //
+
22644 {2.0760901, 13.8596697}, //
+
22645 {2.08387995, 13.8472404}, //
+
22646 {2.09200001, 13.8345499}, //
+
22647 {2.09801006, 13.8226004}, //
+
22648 {2.10398006, 13.8108597}, //
+
22649 {2.10991001, 13.7993202}, //
+
22650 {2.11578989, 13.7880001}, //
+
22651 {2.12162995, 13.7768803}, //
+
22652 {2.12741995, 13.7659702}, //
+
22653 {2.13316989, 13.75527}, //
+
22654 {2.13888001, 13.7447796}, //
+
22655 {2.14455009, 13.7344999}, //
+
22656 {2.15001988, 13.7246103}, //
+
22657 {2.15510988, 13.7152596}, //
+
22658 {2.15982008, 13.7064505}, //
+
22659 {2.16415, 13.6981897}, //
+
22660 {2.16810989, 13.6904697}, //
+
22661 {2.17167997, 13.6833}, //
+
22662 {2.17488003, 13.6766701}, //
+
22663 {2.17771006, 13.6705904}, //
+
22664 {2.18015003, 13.6650496}, //
+
22665 {2.18161988, 13.6620703}, //
+
22666 {2.18300009, 13.6591797}, //
+
22667 {2.18430996, 13.6563702}, //
+
22668 {2.18551993, 13.6536398}, //
+
22669 {2.18666005, 13.651}, //
+
22670 {2.18771005, 13.6484499}, //
+
22671 {2.18866992, 13.6459799}, //
+
22672 {2.18954992, 13.6436005}, //
+
22673 {2.19035006, 13.6413002}, //
+
22674 {2.19109988, 13.6390896}, //
+
22675 {2.19185996, 13.6369495}, //
+
22676 {2.19261003, 13.6349096}, //
+
22677 {2.19336009, 13.6329403}, //
+
22678 {2.19410992, 13.6310596}, //
+
22679 {2.19485998, 13.6292601}, //
+
22680 {2.19561005, 13.6275396}, //
+
22681 {2.1963501, 13.6259003}, //
+
22682 {2.19709992, 13.6243496}, //
+
22683 {2.19792008, 13.6228199}, //
+
22684 {2.19885993, 13.6212397}, //
+
22685 {2.19992995, 13.6196299}, //
+
22686 {2.2011199, 13.6179705}, //
+
22687 {2.20244002, 13.6162701}, //
+
22688 {2.20388007, 13.6145296}, //
+
22689 {2.20544004, 13.6127396}, //
+
22690 {2.20712996, 13.61092}, //
+
22691 {2.20895004, 13.6090498}, //
+
22692 {2.21090007, 13.60711}, //
+
22693 {2.21298003, 13.6050396}, //
+
22694 {2.21517992, 13.60285}, //
+
22695 {2.21750998, 13.6005297}, //
+
22696 {2.21996999, 13.5980902}, //
+
22697 {2.22254992, 13.59552}, //
+
22698 {2.22526002, 13.5928202}, //
+
22699 {2.22809005, 13.5900002}, //
+
22700 {2.23105001, 13.5870504}, //
+
22701 {2.23254991, 13.5862503}, //
+
22702 {2.23405004, 13.5853701}, //
+
22703 {2.23555994, 13.5844097}, //
+
22704 {2.23706007, 13.5833702}, //
+
22705 {2.23856997, 13.5822401}, //
+
22706 {2.2400701, 13.5810299}, //
+
22707 {2.24158001, 13.57973}, //
+
22708 {2.24308991, 13.5783596}, //
+
22709 {2.24460006, 13.5768995}, //
+
22710 {2.25129008, 13.5715799}, //
+
22711 {2.25781989, 13.5661802}, //
+
22712 {2.26417994, 13.5606899}, //
+
22713 {2.27038002, 13.5551205}, //
+
22714 {2.2764101, 13.5494604}, //
+
22715 {2.28226995, 13.5437202}, //
+
22716 {2.28796005, 13.5379}, //
+
22717 {2.29348993, 13.5319901}, //
+
22718 {2.29885006, 13.526}, //
+
22719 {2.30392003, 13.5199804}, //
+
22720 {2.30856991, 13.5139503}, //
+
22721 {2.31278992, 13.5079298}, //
+
22722 {2.31660008, 13.5018997}, //
+
22723 {2.31998992, 13.4958696}, //
+
22724 {2.3229599, 13.4898396}, //
+
22725 {2.32551003, 13.4838104}, //
+
22726 {2.32764006, 13.4777803}, //
+
22727 {2.32934999, 13.4717503}, //
+
22728 {2.33149004, 13.4650602}, //
+
22729 {2.33337998, 13.4585304}, //
+
22730 {2.33502007, 13.4521704}, //
+
22731 {2.33640003, 13.4459696}, //
+
22732 {2.33753991, 13.4399405}, //
+
22733 {2.33841991, 13.4340801}, //
+
22734 {2.33905005, 13.4283895}, //
+
22735 {2.33942008, 13.4228601}, //
+
22736 {2.33955002, 13.4174995}, //
+
22737 {2.33933997, 13.4120197}, //
+
22738 {2.33871007, 13.4061298}, //
+
22739 {2.33767009, 13.3998098}, //
+
22740 {2.3362, 13.3930798}, //
+
22741 {2.33432007, 13.3859196}, //
+
22742 {2.33202004, 13.3783398}, //
+
22743 {2.32929993, 13.3703499}, //
+
22744 {2.32615995, 13.3619299}, //
+
22745 {2.32259989, 13.3530998}, //
+
22746 {2.31887007, 13.3432798}, //
+
22747 {2.31522989, 13.3334198}, //
+
22748 {2.31167006, 13.3235102}, //
+
22749 {2.30819988, 13.3135595}, //
+
22750 {2.30480003, 13.3035803}, //
+
22751 {2.30149007, 13.29354}, //
+
22752 {2.29825997, 13.2834702}, //
+
22753 {2.29510999, 13.2733603}, //
+
22754 {2.29204988, 13.2631998}, //
+
22755 {2.2890799, 13.2532196}, //
+
22756 {2.28620005, 13.2436199}, //
+
22757 {2.28339005, 13.2343903}, //
+
22758 {2.28067994, 13.2255497}, //
+
22759 {2.27803993, 13.2170696}, //
+
22760 {2.27549005, 13.2089796}, //
+
22761 {2.27303004, 13.2012596}, //
+
22762 {2.27064991, 13.1939201}, //
+
22763 {2.26834989, 13.1869497}, //
+
22764 {2.26612997, 13.1803198}, //
+
22765 {2.26397991, 13.1739798}, //
+
22766 {2.26192999, 13.1679296}, //
+
22767 {2.25994992, 13.1621799}, //
+
22768 {2.25806999, 13.1567202}, //
+
22769 {2.25625992, 13.1515503}, //
+
22770 {2.25453997, 13.1466703}, //
+
22771 {2.25289989, 13.1420898}, //
+
22772 {2.25134993, 13.1378002}, //
+
22773 {2.24989009, 13.1335897}, //
+
22774 {2.2485199, 13.1292601}, //
+
22775 {2.24722004, 13.1247997}, //
+
22776 {2.24601007, 13.1202097}, //
+
22777 {2.24487996, 13.1155005}, //
+
22778 {2.24383998, 13.1106701}, //
+
22779 {2.24288011, 13.1056995}, //
+
22780 {2.2420001, 13.1006098}, //
+
22781 {2.24119997, 13.0953999}, //
+
22782 {2.24029994, 13.0893803}, //
+
22783 {2.23909998, 13.0833502}, //
+
22784 {2.23762012, 13.0773296}, //
+
22785 {2.23584008, 13.0712996}, //
+
22786 {2.23376012, 13.0652704}, //
+
22787 {2.23140001, 13.0592403}, //
+
22788 {2.22873998, 13.0532103}, //
+
22789 {2.22579002, 13.0471802}, //
+
22790 {2.22254992, 13.0411501}, //
+
22791 {2.2191, 13.0352898}, //
+
22792 {2.21551991, 13.0297699}, //
+
22793 {2.21181989, 13.02458}, //
+
22794 {2.20798993, 13.0197296}, //
+
22795 {2.20403004, 13.0152102}, //
+
22796 {2.19994998, 13.0110197}, //
+
22797 {2.19573998, 13.0071602}, //
+
22798 {2.19141006, 13.0036402}, //
+
22799 {2.18694997, 13.0004501}, //
+
22800 {2.18385005, 12.9996405}, //
+
22801 {2.18058991, 12.9987097}, //
+
22802 {2.17716002, 12.9976397}, //
+
22803 {2.1735599, 12.9964504}, //
+
22804 {2.16980004, 12.9951401}, //
+
22805 {2.16585994, 12.9936895}, //
+
22806 {2.16176009, 12.9921198}, //
+
22807 {2.15749002, 12.9904299}, //
+
22808 {2.15304995, 12.9885998}, //
+
22809 {2.14861012, 12.9867601}, //
+
22810 {2.14434004, 12.9850101}, //
+
22811 {2.14023995, 12.9833403}, //
+
22812 {2.13630009, 12.9817495}, //
+
22813 {2.13253999, 12.9802504}, //
+
22814 {2.12894011, 12.9788198}, //
+
22815 {2.12550998, 12.9774799}, //
+
22816 {2.12225008, 12.9762201}, //
+
22817 {2.11914992, 12.97505}, //
+
22818 {2.11380005, 12.9730396}, //
+
22819 {2.11161995, 12.9722204}, //
+
22820 {2.10978007, 12.9715204}, //
+
22821 {2.10827994, 12.9709597}, //
+
22822 {2.10711002, 12.97052}, //
+
22823 {2.10627007, 12.9701996}, //
+
22824 {2.10577011, 12.9700098}, //
+
22825 {2.10560012, 12.9699497}, //
+
22826 });
+
22827 polys.push_back({
+
22828 {0.481198013, 14.3467197}, //
+
22829 {0.480883002, 14.3469296}, //
+
22830 {0.480443001, 14.3472204}, //
+
22831 {0.479876012, 14.3476}, //
+
22832 {0.479182988, 14.3480597}, //
+
22833 {0.478365004, 14.3486099}, //
+
22834 {0.477420002, 14.3492403}, //
+
22835 {0.476350009, 14.3499498}, //
+
22836 {0.475205988, 14.35075}, //
+
22837 {0.474018991, 14.3516302}, //
+
22838 {0.47278899, 14.3525896}, //
+
22839 {0.471515, 14.3536301}, //
+
22840 {0.470198989, 14.3547602}, //
+
22841 {0.46883899, 14.3559704}, //
+
22842 {0.467435986, 14.3572702}, //
+
22843 {0.465990007, 14.3586397}, //
+
22844 {0.46450001, 14.3600998}, //
+
22845 {0.463019997, 14.3616695}, //
+
22846 {0.461580992, 14.3633699}, //
+
22847 {0.460182995, 14.3651896}, //
+
22848 {0.458826005, 14.3671398}, //
+
22849 {0.457509011, 14.3692102}, //
+
22850 {0.456232995, 14.3714104}, //
+
22851 {0.454997987, 14.3737297}, //
+
22852 {0.453803986, 14.3761797}, //
+
22853 {0.452650011, 14.3787498}, //
+
22854 {0.451516986, 14.3813496}, //
+
22855 {0.450383008, 14.3838701}, //
+
22856 {0.449250013, 14.3863001}, //
+
22857 {0.448116988, 14.3886499}, //
+
22858 {0.44698301, 14.3909101}, //
+
22859 {0.445850015, 14.3930798}, //
+
22860 {0.44471699, 14.3951702}, //
+
22861 {0.443583012, 14.3971796}, //
+
22862 {0.442449987, 14.3991003}, //
+
22863 {0.441390008, 14.4009304}, //
+
22864 {0.44045499, 14.4026203}, //
+
22865 {0.439644009, 14.4041901}, //
+
22866 {0.438959002, 14.4056396}, //
+
22867 {0.438398004, 14.40695}, //
+
22868 {0.437961012, 14.4081402}, //
+
22869 {0.437649012, 14.4092102}, //
+
22870 {0.437462002, 14.41014}, //
+
22871 {0.437400013, 14.4109497}, //
+
22872 {0.436791003, 14.4124203}, //
+
22873 {0.436473995, 14.4138002}, //
+
22874 {0.436450005, 14.4151096}, //
+
22875 {0.436719, 14.4163198}, //
+
22876 {0.437279999, 14.4174604}, //
+
22877 {0.438133001, 14.4185104}, //
+
22878 {0.439280003, 14.4194698}, //
+
22879 {0.440719008, 14.4203501}, //
+
22880 {0.442449987, 14.4211502}, //
+
22881 {0.444317997, 14.4218597}, //
+
22882 {0.446144015, 14.4224901}, //
+
22883 {0.447928011, 14.4230404}, //
+
22884 {0.449669987, 14.4235001}, //
+
22885 {0.451370001, 14.4238796}, //
+
22886 {0.453027993, 14.4241695}, //
+
22887 {0.454643995, 14.4243803}, //
+
22888 {0.456218004, 14.42451}, //
+
22889 {0.457749993, 14.4245501}, //
+
22890 {0.457749993, 14.4177504}, //
+
22891 {0.457791001, 14.4162197}, //
+
22892 {0.457915008, 14.4146404}, //
+
22893 {0.458121985, 14.4130297}, //
+
22894 {0.458411992, 14.4113703}, //
+
22895 {0.458784014, 14.4096699}, //
+
22896 {0.459239006, 14.4079304}, //
+
22897 {0.459776998, 14.4061403}, //
+
22898 {0.460397005, 14.4043198}, //
+
22899 {0.461100012, 14.4024496}, //
+
22900 {0.461856008, 14.4005499}, //
+
22901 {0.46261099, 14.3986101}, //
+
22902 {0.463366985, 14.3966198}, //
+
22903 {0.464121997, 14.3945904}, //
+
22904 {0.464877993, 14.39252}, //
+
22905 {0.465633005, 14.3904104}, //
+
22906 {0.466389, 14.3882504}, //
+
22907 {0.467144012, 14.3860502}, //
+
22908 {0.467900008, 14.3837996}, //
+
22909 {0.468676001, 14.3816099}, //
+
22910 {0.469493002, 14.3795404}, //
+
22911 {0.470349997, 14.3775902}, //
+
22912 {0.471248001, 14.3757801}, //
+
22913 {0.472187012, 14.3740797}, //
+
22914 {0.473167002, 14.37251}, //
+
22915 {0.474186987, 14.3710699}, //
+
22916 {0.475248009, 14.36975}, //
+
22917 {0.476350009, 14.3685503}, //
+
22918 {0.477503985, 14.3674898}, //
+
22919 {0.478700995, 14.3665504}, //
+
22920 {0.479939014, 14.3657398}, //
+
22921 {0.481218994, 14.3650599}, //
+
22922 {0.482540995, 14.3645}, //
+
22923 {0.483906001, 14.3640604}, //
+
22924 {0.485312015, 14.3637505}, //
+
22925 {0.48675999, 14.3635597}, //
+
22926 {0.488249987, 14.3634996}, //
+
22927 {0.481449991, 14.34655}, //
+
22928 });
+
22929 polys.push_back({
+
22930 {0.402702004, 14.2395201}, //
+
22931 {0.401820987, 14.2409}, //
+
22932 {0.400855988, 14.2421999}, //
+
22933 {0.399805993, 14.2434101}, //
+
22934 {0.398672998, 14.2445402}, //
+
22935 {0.39745599, 14.2455797}, //
+
22936 {0.396153986, 14.2465401}, //
+
22937 {0.394769013, 14.2474098}, //
+
22938 {0.393299997, 14.2482004}, //
+
22939 {0.391043991, 14.2489996}, //
+
22940 {0.388785988, 14.2498798}, //
+
22941 {0.386527985, 14.2508402}, //
+
22942 {0.384267986, 14.2518797}, //
+
22943 {0.382007003, 14.2530098}, //
+
22944 {0.379743993, 14.25422}, //
+
22945 {0.377481014, 14.2555199}, //
+
22946 {0.375216007, 14.2568903}, //
+
22947 {0.372949988, 14.2583504}, //
+
22948 {0.370736003, 14.2599897}, //
+
22949 {0.368604004, 14.2618799}, //
+
22950 {0.366555989, 14.26402}, //
+
22951 {0.364589989, 14.2664099}, //
+
22952 {0.362706006, 14.2690496}, //
+
22953 {0.360906005, 14.2719498}, //
+
22954 {0.35918799, 14.2750998}, //
+
22955 {0.357551992, 14.2784996}, //
+
22956 {0.356000006, 14.2821503}, //
+
22957 {0.356041998, 14.2821903}, //
+
22958 {0.356168002, 14.28232}, //
+
22959 {0.356377989, 14.2825203}, //
+
22960 {0.356671989, 14.2828102}, //
+
22961 {0.357048988, 14.2831802}, //
+
22962 {0.357511014, 14.2836399}, //
+
22963 {0.358056992, 14.2841797}, //
+
22964 {0.359400004, 14.2854996}, //
+
22965 {0.360175997, 14.2862597}, //
+
22966 {0.360992998, 14.2870102}, //
+
22967 {0.361849993, 14.2877703}, //
+
22968 {0.362747997, 14.2885199}, //
+
22969 {0.363687009, 14.2892799}, //
+
22970 {0.364666998, 14.2900295}, //
+
22971 {0.365687013, 14.2907896}, //
+
22972 {0.366748005, 14.2915401}, //
+
22973 {0.367850006, 14.2923002}, //
+
22974 {0.36896199, 14.2930498}, //
+
22975 {0.370032996, 14.2938099}, //
+
22976 {0.371060997, 14.2945604}, //
+
22977 {0.372047991, 14.29531}, //
+
22978 {0.372992009, 14.2960596}, //
+
22979 {0.373894006, 14.2968102}, //
+
22980 {0.374754995, 14.2975597}, //
+
22981 {0.375573009, 14.2982998}, //
+
22982 {0.376349986, 14.2990503}, //
+
22983 {0.377106011, 14.2996798}, //
+
22984 {0.377860993, 14.3000603}, //
+
22985 {0.378616989, 14.30019}, //
+
22986 {0.379372001, 14.3000698}, //
+
22987 {0.380127996, 14.2996998}, //
+
22988 {0.380883008, 14.2990704}, //
+
22989 {0.381639004, 14.2981997}, //
+
22990 {0.382393986, 14.2970695}, //
+
22991 {0.383150011, 14.2957001}, //
+
22992 {0.383926004, 14.29564}, //
+
22993 {0.384743005, 14.2954502}, //
+
22994 {0.385600001, 14.2951298}, //
+
22995 {0.386498004, 14.2946901}, //
+
22996 {0.387436986, 14.2941303}, //
+
22997 {0.388417006, 14.2934303}, //
+
22998 {0.38943699, 14.2926102}, //
+
22999 {0.390498012, 14.2916698}, //
+
23000 {0.391600013, 14.2905998}, //
+
23001 {0.392711997, 14.2894697}, //
+
23002 {0.393783003, 14.2883301}, //
+
23003 {0.394811004, 14.2872}, //
+
23004 {0.395797998, 14.2860699}, //
+
23005 {0.396741986, 14.2849302}, //
+
23006 {0.397644013, 14.2838001}, //
+
23007 {0.398505002, 14.28267}, //
+
23008 {0.399322987, 14.2815304}, //
+
23009 {0.400099993, 14.2804003}, //
+
23010 {0.400813997, 14.2792997}, //
+
23011 {0.401443005, 14.2782402}, //
+
23012 {0.401989013, 14.2772198}, //
+
23013 {0.402451009, 14.2762403}, //
+
23014 {0.402828008, 14.2753}, //
+
23015 {0.403122008, 14.2743998}, //
+
23016 {0.403331995, 14.2735395}, //
+
23017 {0.403457999, 14.2727299}, //
+
23018 {0.403499991, 14.2719498}, //
+
23019 {0.403521001, 14.2711897}, //
+
23020 {0.403584003, 14.2704401}, //
+
23021 {0.403688997, 14.26968}, //
+
23022 {0.403836012, 14.2689304}, //
+
23023 {0.404024988, 14.2681704}, //
+
23024 {0.404255986, 14.2674198}, //
+
23025 {0.404527992, 14.2666597}, //
+
23026 {0.404843003, 14.2659101}, //
+
23027 {0.405200005, 14.2651501}, //
+
23028 {0.405557007, 14.2643604}, //
+
23029 {0.405871987, 14.2634897}, //
+
23030 {0.406143993, 14.2625303}, //
+
23031 {0.406374991, 14.2614899}, //
+
23032 {0.406563997, 14.2603598}, //
+
23033 {0.406711012, 14.2591496}, //
+
23034 {0.406816006, 14.2578497}, //
+
23035 {0.406879008, 14.2564697}, //
+
23036 {0.406899989, 14.2550001}, //
+
23037 {0.406919986, 14.2535295}, //
+
23038 {0.406980991, 14.2521496}, //
+
23039 {0.407083005, 14.2508402}, //
+
23040 {0.407225996, 14.24963}, //
+
23041 {0.407409012, 14.2484903}, //
+
23042 {0.407633007, 14.2474403}, //
+
23043 {0.407898009, 14.24648}, //
+
23044 {0.408203989, 14.2455997}, //
+
23045 {0.408549994, 14.2447996}, //
+
23046 {0.408885986, 14.2440796}, //
+
23047 {0.409137994, 14.2433901}, //
+
23048 {0.40930599, 14.2427502}, //
+
23049 {0.409390002, 14.2421503}, //
+
23050 {0.409390002, 14.2415895}, //
+
23051 {0.40930599, 14.2410698}, //
+
23052 {0.409137994, 14.2405901}, //
+
23053 {0.408885986, 14.2401505}, //
+
23054 {0.408549994, 14.2397499}, //
+
23055 {0.408161998, 14.2393904}, //
+
23056 {0.407730013, 14.2390804}, //
+
23057 {0.407256007, 14.2388096}, //
+
23058 {0.406738013, 14.2385702}, //
+
23059 {0.406177014, 14.23839}, //
+
23060 {0.405571997, 14.2382402}, //
+
23061 {0.404924989, 14.2381296}, //
+
23062 {0.404233992, 14.2380695}, //
+
23063 {0.403499991, 14.2380505}, //
+
23064 });
+
23065 polys.push_back({
+
23066 {1.93613005, 13.3193502}, //
+
23067 {1.93638003, 13.3197899}, //
+
23068 {1.9368, 13.3205204}, //
+
23069 {1.93737996, 13.3215399}, //
+
23070 {1.93813002, 13.3228598}, //
+
23071 {1.93904996, 13.3244696}, //
+
23072 {1.94013, 13.3263702}, //
+
23073 {1.94138002, 13.3285599}, //
+
23074 {1.94280005, 13.3310499}, //
+
23075 {1.94432998, 13.3337698}, //
+
23076 {1.94589996, 13.3366499}, //
+
23077 {1.94752002, 13.3397102}, //
+
23078 {1.94916999, 13.3429298}, //
+
23079 {1.95086002, 13.3463202}, //
+
23080 {1.9526, 13.3498697}, //
+
23081 {1.95438004, 13.3535995}, //
+
23082 {1.95618999, 13.3574896}, //
+
23083 {1.95805001, 13.3615503}, //
+
23084 {1.95992005, 13.3656702}, //
+
23085 {1.96174002, 13.36975}, //
+
23086 {1.96352994, 13.3737898}, //
+
23087 {1.96527004, 13.3777905}, //
+
23088 {1.96696997, 13.3817501}, //
+
23089 {1.96862996, 13.3856602}, //
+
23090 {1.97024, 13.3895302}, //
+
23091 {1.97182, 13.3933601}, //
+
23092 {1.97335005, 13.39715}, //
+
23093 {1.97477996, 13.4008398}, //
+
23094 {1.97604001, 13.4043703}, //
+
23095 {1.97713006, 13.4077196}, //
+
23096 {1.97804999, 13.4109097}, //
+
23097 {1.97880995, 13.4139204}, //
+
23098 {1.97939003, 13.41677}, //
+
23099 {1.97981, 13.4194498}, //
+
23100 {1.98006999, 13.4219599}, //
+
23101 {1.98014998, 13.4243002}, //
+
23102 {1.97411001, 13.46733}, //
+
23103 {1.96355999, 13.5090199}, //
+
23104 {1.94848001, 13.5493698}, //
+
23105 {1.92888999, 13.5883799}, //
+
23106 {1.90478003, 13.6260595}, //
+
23107 {1.87615001, 13.6623898}, //
+
23108 {1.84300005, 13.6973801}, //
+
23109 {1.80534005, 13.73104}, //
+
23110 {1.76314998, 13.7633495}, //
+
23111 {1.75448, 13.7693796}, //
+
23112 {1.74505997, 13.7754097}, //
+
23113 {1.73488998, 13.7814398}, //
+
23114 {1.72396004, 13.7874699}, //
+
23115 {1.71228004, 13.7934999}, //
+
23116 {1.69983995, 13.79953}, //
+
23117 {1.68665004, 13.8055496}, //
+
23118 {1.67270005, 13.8115797}, //
+
23119 {1.65799999, 13.8176003}, //
+
23120 {1.64756, 13.8213902}, //
+
23121 {1.63733006, 13.8252201}, //
+
23122 {1.62731004, 13.8290901}, //
+
23123 {1.61749005, 13.8330002}, //
+
23124 {1.60789001, 13.8369598}, //
+
23125 {1.59849, 13.8409595}, //
+
23126 {1.58930004, 13.8450003}, //
+
23127 {1.58032, 13.8490801}, //
+
23128 {1.57155001, 13.8532}, //
+
23129 {1.56310999, 13.8573198}, //
+
23130 {1.55514002, 13.8613997}, //
+
23131 {1.54762006, 13.8654404}, //
+
23132 {1.54057002, 13.8694401}, //
+
23133 {1.53397, 13.8733997}, //
+
23134 {1.52784002, 13.8773098}, //
+
23135 {1.52216995, 13.8811798}, //
+
23136 {1.51695001, 13.8850098}, //
+
23137 {1.5122, 13.8887997}, //
+
23138 {1.50553, 13.8941603}, //
+
23139 {1.49756002, 13.8996897}, //
+
23140 {1.48828995, 13.9053802}, //
+
23141 {1.47772002, 13.9112396}, //
+
23142 {1.46585, 13.9172697}, //
+
23143 {1.45269001, 13.9234695}, //
+
23144 {1.43822002, 13.9298296}, //
+
23145 {1.42245996, 13.9363604}, //
+
23146 {1.40540004, 13.9430504}, //
+
23147 {1.38776004, 13.9497499}, //
+
23148 {1.37024999, 13.9562902}, //
+
23149 {1.35285997, 13.9626598}, //
+
23150 {1.33560002, 13.9688501}, //
+
23151 {1.31845999, 13.9748802}, //
+
23152 {1.30144, 13.9807396}, //
+
23153 {1.28454995, 13.9864302}, //
+
23154 {1.26778996, 13.99195}, //
+
23155 {1.25115001, 13.9973001}, //
+
23156 {1.24084997, 14.0002804}, //
+
23157 {1.23105001, 14.00317}, //
+
23158 {1.22175002, 14.0059795}, //
+
23159 {1.21296, 14.0087099}, //
+
23160 {1.20466995, 14.0113497}, //
+
23161 {1.19687998, 14.0138998}, //
+
23162 {1.18959999, 14.0163698}, //
+
23163 {1.18281996, 14.0187502}, //
+
23164 {1.17655003, 14.0210505}, //
+
23165 {1.16070998, 14.0273399}, //
+
23166 {1.14331996, 14.0341797}, //
+
23167 {1.12437999, 14.0415697}, //
+
23168 {1.10388994, 14.04949}, //
+
23169 {1.08185005, 14.05797}, //
+
23170 {1.05825996, 14.0669804}, //
+
23171 {1.03312004, 14.07654}, //
+
23172 {1.00644004, 14.0866499}, //
+
23173 {0.978200018, 14.0972996}, //
+
23174 {0.949754, 14.1079998}, //
+
23175 {0.922439992, 14.1182404}, //
+
23176 {0.89625603, 14.1280203}, //
+
23177 {0.871201992, 14.1373396}, //
+
23178 {0.847280025, 14.1462002}, //
+
23179 {0.824488997, 14.1545897}, //
+
23180 {0.802828014, 14.1625204}, //
+
23181 {0.782298982, 14.1699896}, //
+
23182 {0.762899995, 14.177}, //
+
23183 {0.750047028, 14.1836205}, //
+
23184 {0.737110019, 14.1899099}, //
+
23185 {0.724089026, 14.1958599}, //
+
23186 {0.710983992, 14.2014704}, //
+
23187 {0.697794974, 14.2067499}, //
+
23188 {0.684521973, 14.2116899}, //
+
23189 {0.671164989, 14.2163}, //
+
23190 {0.657724977, 14.2205696}, //
+
23191 {0.644200027, 14.2244997}, //
+
23192 {0.63527, 14.2261}, //
+
23193 {0.626547992, 14.2279196}, //
+
23194 {0.618032992, 14.2299404}, //
+
23195 {0.609726012, 14.2321796}, //
+
23196 {0.601625979, 14.2346201}, //
+
23197 {0.593733013, 14.2372799}, //
+
23198 {0.586048007, 14.24014}, //
+
23199 {0.578570008, 14.2432203}, //
+
23200 {0.57130003, 14.2465}, //
+
23201 {0.564248979, 14.2501297}, //
+
23202 {0.557408988, 14.25422}, //
+
23203 {0.550777972, 14.25877}, //
+
23204 {0.544357002, 14.2637701}, //
+
23205 {0.538146019, 14.2692404}, //
+
23206 {0.53214401, 14.2751703}, //
+
23207 {0.526353002, 14.2815504}, //
+
23208 {0.52077198, 14.2883997}, //
+
23209 {0.515399992, 14.2957001}, //
+
23210 {0.517656028, 14.2955103}, //
+
23211 {0.519410014, 14.2953596}, //
+
23212 {0.521664977, 14.2951803}, //
+
23213 {0.52442199, 14.29494}, //
+
23214 {0.52767998, 14.2946701}, //
+
23215 {0.53144002, 14.2943602}, //
+
23216 {0.535700023, 14.2939997}, //
+
23217 {0.540327013, 14.2936001}, //
+
23218 {0.545162022, 14.2931604}, //
+
23219 {0.550206006, 14.2926798}, //
+
23220 {0.555458009, 14.2921495}, //
+
23221 {0.560918987, 14.2915897}, //
+
23222 {0.566588998, 14.2909803}, //
+
23223 {0.572467029, 14.2903299}, //
+
23224 {0.578553975, 14.2896299}, //
+
23225 {0.584850013, 14.2889004}, //
+
23226 {0.591239989, 14.2881002}, //
+
23227 {0.597588003, 14.28722}, //
+
23228 {0.603893995, 14.2862597}, //
+
23229 {0.61015898, 14.2852201}, //
+
23230 {0.61638099, 14.28409}, //
+
23231 {0.622560978, 14.2828798}, //
+
23232 {0.628699005, 14.28158}, //
+
23233 {0.634796023, 14.2802095}, //
+
23234 {0.640850008, 14.2787504}, //
+
23235 {0.648550987, 14.2764797}, //
+
23236 {0.656585991, 14.2742205}, //
+
23237 {0.664955974, 14.2719603}, //
+
23238 {0.67365998, 14.2696896}, //
+
23239 {0.682699025, 14.2674303}, //
+
23240 {0.692071974, 14.2651701}, //
+
23241 {0.701780021, 14.2629099}, //
+
23242 {0.711822987, 14.2606602}, //
+
23243 {0.722199976, 14.2584}, //
+
23244 {0.737770975, 14.2546797}, //
+
23245 {0.752839983, 14.25103}, //
+
23246 {0.767405987, 14.2474804}, //
+
23247 {0.781468987, 14.2440004}, //
+
23248 {0.795029998, 14.2406197}, //
+
23249 {0.808089018, 14.2373104}, //
+
23250 {0.820644975, 14.2340899}, //
+
23251 {0.832699001, 14.2309504}, //
+
23252 {0.844250023, 14.2278996}, //
+
23253 {0.852222979, 14.2255297}, //
+
23254 {0.861074984, 14.22295}, //
+
23255 {0.870805979, 14.2201595}, //
+
23256 {0.881415009, 14.2171602}, //
+
23257 {0.892903984, 14.2139597}, //
+
23258 {0.905272007, 14.2105398}, //
+
23259 {0.91851902, 14.2069197}, //
+
23260 {0.932645023, 14.2030897}, //
+
23261 {0.947650015, 14.1990499}, //
+
23262 {0.963187993, 14.19491}, //
+
23263 {0.978892028, 14.1907597}, //
+
23264 {0.99476099, 14.1866198}, //
+
23265 {1.0108, 14.1824703}, //
+
23266 {1.02699995, 14.1783304}, //
+
23267 {1.04335999, 14.17418}, //
+
23268 {1.05989003, 14.1700401}, //
+
23269 {1.07658994, 14.1658897}, //
+
23270 {1.09344995, 14.1617498}, //
+
23271 {1.11009002, 14.1577501}, //
+
23272 {1.12610996, 14.1540499}, //
+
23273 {1.14148998, 14.1506395}, //
+
23274 {1.15625, 14.1475201}, //
+
23275 {1.17039001, 14.1447001}, //
+
23276 {1.18388999, 14.14217}, //
+
23277 {1.19676995, 14.1399403}, //
+
23278 {1.20903003, 14.1379995}, //
+
23279 {1.22064996, 14.1363497}, //
+
23280 {1.23748004, 14.1313496}, //
+
23281 {1.25630999, 14.1253796}, //
+
23282 {1.27716005, 14.1184502}, //
+
23283 {1.30000997, 14.1105604}, //
+
23284 {1.32486999, 14.1016998}, //
+
23285 {1.35174, 14.0918798}, //
+
23286 {1.38062, 14.0811005}, //
+
23287 {1.41149998, 14.0693598}, //
+
23288 {1.44439995, 14.0566502}, //
+
23289 {1.47767997, 14.04352}, //
+
23290 {1.50970995, 14.0305204}, //
+
23291 {1.54048002, 14.0176497}, //
+
23292 {1.56999004, 14.0049}, //
+
23293 {1.59825003, 13.99228}, //
+
23294 {1.62523997, 13.9797802}, //
+
23295 {1.65099001, 13.9674101}, //
+
23296 {1.67546999, 13.9551697}, //
+
23297 {1.69869995, 13.9430504}, //
+
23298 {1.71958995, 13.9322701}, //
+
23299 {1.74005997, 13.9210396}, //
+
23300 {1.76011002, 13.9093399}, //
+
23301 {1.77973998, 13.8971796}, //
+
23302 {1.79894996, 13.8845596}, //
+
23303 {1.81773996, 13.8714705}, //
+
23304 {1.83612001, 13.8579302}, //
+
23305 {1.85406995, 13.8439198}, //
+
23306 {1.87160003, 13.8294497}, //
+
23307 {1.88843, 13.8151197}, //
+
23308 {1.90426004, 13.8014898}, //
+
23309 {1.91908002, 13.7885799}, //
+
23310 {1.93289006, 13.7763796}, //
+
23311 {1.94570005, 13.7648897}, //
+
23312 {1.95750999, 13.7541199}, //
+
23313 {1.96831, 13.74405}, //
+
23314 {1.97810996, 13.7346897}, //
+
23315 {1.98689997, 13.7260504}, //
+
23316 {1.99274004, 13.71984}, //
+
23317 {1.99820995, 13.7132502}, //
+
23318 {2.00329995, 13.7062798}, //
+
23319 {2.00800991, 13.6989403}, //
+
23320 {2.01234007, 13.6912203}, //
+
23321 {2.01629996, 13.6831198}, //
+
23322 {2.01988006, 13.6746397}, //
+
23323 {2.02308011, 13.6657801}, //
+
23324 {2.02589989, 13.6565504}, //
+
23325 {2.02842999, 13.6471701}, //
+
23326 {2.03075004, 13.6378698}, //
+
23327 {2.03286004, 13.6286602}, //
+
23328 {2.03476, 13.6195297}, //
+
23329 {2.03645992, 13.6104898}, //
+
23330 {2.03794003, 13.6015301}, //
+
23331 {2.03922009, 13.5926504}, //
+
23332 {2.04029012, 13.5838604}, //
+
23333 {2.04115009, 13.5751495}, //
+
23334 {2.04182005, 13.56672}, //
+
23335 {2.04233003, 13.5587597}, //
+
23336 {2.04266, 13.5512505}, //
+
23337 {2.04282999, 13.5441999}, //
+
23338 {2.04282999, 13.5376101}, //
+
23339 {2.04266, 13.5314798}, //
+
23340 {2.04233003, 13.5258102}, //
+
23341 {2.04182005, 13.5206003}, //
+
23342 {2.04115009, 13.5158501}, //
+
23343 {2.03885007, 13.50982}, //
+
23344 {2.03646994, 13.5037899}, //
+
23345 {2.03399992, 13.4977598}, //
+
23346 {2.03145003, 13.4917297}, //
+
23347 {2.02881002, 13.4856997}, //
+
23348 {2.02607989, 13.4796696}, //
+
23349 {2.02326989, 13.47365}, //
+
23350 {2.02038002, 13.4676199}, //
+
23351 {2.01740003, 13.4616003}, //
+
23352 {2.01518989, 13.4570398}, //
+
23353 {2.01305008, 13.4523897}, //
+
23354 {2.01100993, 13.4476604}, //
+
23355 {2.00904012, 13.4428396}, //
+
23356 {2.00715995, 13.4379396}, //
+
23357 {2.00535989, 13.4329596}, //
+
23358 {2.00363994, 13.4278898}, //
+
23359 {2.00200009, 13.42274}, //
+
23360 {2.0004499, 13.4174995}, //
+
23361 {1.99875998, 13.4128304}, //
+
23362 {1.99669003, 13.4078703}, //
+
23363 {1.99425006, 13.4026203}, //
+
23364 {1.99143004, 13.3970699}, //
+
23365 {1.98822999, 13.3912296}, //
+
23366 {1.98465002, 13.3851004}, //
+
23367 {1.98069, 13.3786802}, //
+
23368 {1.97635996, 13.3719597}, //
+
23369 {1.97165, 13.3649502}, //
+
23370 {1.96685004, 13.3580198}, //
+
23371 {1.96227002, 13.3515596}, //
+
23372 {1.95789003, 13.3455601}, //
+
23373 {1.95372999, 13.3400097}, //
+
23374 {1.94976997, 13.3349304}, //
+
23375 {1.94603002, 13.3303099}, //
+
23376 {1.94248998, 13.3261404}, //
+
23377 {1.93917, 13.3224401}, //
+
23378 {1.93605006, 13.3191996}, //
+
23379 });
+
23380 polys.push_back({
+
23381 {5.35682011, 14.2700596}, //
+
23382 {5.35653019, 14.2704201}, //
+
23383 {5.35615015, 14.2709799}, //
+
23384 {5.35569, 14.27176}, //
+
23385 {5.35514021, 14.2727499}, //
+
23386 {5.35450983, 14.2739401}, //
+
23387 {5.35379982, 14.2753496}, //
+
23388 {5.35374022, 14.2784004}, //
+
23389 {5.35354996, 14.2815399}, //
+
23390 {5.35342979, 14.2827396}, //
+
23391 {5.35379982, 14.2821503}, //
+
23392 {5.35450983, 14.2799902}, //
+
23393 {5.35514021, 14.2780399}, //
+
23394 {5.35569, 14.2762899}, //
+
23395 {5.35615015, 14.2747602}, //
+
23396 {5.35653019, 14.2734404}, //
+
23397 {5.35682011, 14.2723303}, //
+
23398 {5.35702991, 14.27143}, //
+
23399 {5.35716009, 14.27073}, //
+
23400 {5.35720015, 14.2702503}, //
+
23401 {5.35716009, 14.2699804}, //
+
23402 {5.35702991, 14.2699099}, //
+
23403 });
+
23404 polys.push_back({
+
23405 {4.7834301, 13.1123695}, //
+
23406 {4.78274012, 13.1124296}, //
+
23407 {4.7821002, 13.1125402}, //
+
23408 {4.78149986, 13.11269}, //
+
23409 {4.78094006, 13.1128702}, //
+
23410 {4.78041983, 13.1131096}, //
+
23411 {4.77994013, 13.1133804}, //
+
23412 {4.77950001, 13.1136904}, //
+
23413 {4.77909994, 13.1140499}, //
+
23414 {4.77873993, 13.1144505}, //
+
23415 {4.77842999, 13.1148901}, //
+
23416 {4.7781601, 13.1153698}, //
+
23417 {4.77791977, 13.1159}, //
+
23418 {4.77774, 13.1164598}, //
+
23419 {4.7775898, 13.1170702}, //
+
23420 {4.77748013, 13.1177197}, //
+
23421 {4.77742004, 13.1184196}, //
+
23422 {4.77740002, 13.1191502}, //
+
23423 {4.77815008, 13.1192799}, //
+
23424 {4.77891016, 13.1196499}, //
+
23425 {4.77966022, 13.1202803}, //
+
23426 {4.78040981, 13.12115}, //
+
23427 {4.78115988, 13.1222801}, //
+
23428 {4.78190994, 13.1236601}, //
+
23429 {4.78266001, 13.1252899}, //
+
23430 {4.78340006, 13.1271696}, //
+
23431 {4.78415012, 13.1293001}, //
+
23432 {4.78805017, 13.1341801}, //
+
23433 {4.79220009, 13.1397696}, //
+
23434 {4.79660988, 13.1460695}, //
+
23435 {4.80125999, 13.15308}, //
+
23436 {4.80615997, 13.1608}, //
+
23437 {4.81130981, 13.1692305}, //
+
23438 {4.81669998, 13.17838}, //
+
23439 {4.82235003, 13.1882296}, //
+
23440 {4.82824993, 13.1988001}, //
+
23441 {4.8339901, 13.2097502}, //
+
23442 {4.83913994, 13.2207499}, //
+
23443 {4.84370995, 13.2317801}, //
+
23444 {4.84768009, 13.2428598}, //
+
23445 {4.85106993, 13.2539797}, //
+
23446 {4.85386992, 13.26513}, //
+
23447 {4.85609007, 13.27633}, //
+
23448 {4.85770988, 13.28757}, //
+
23449 {4.85874987, 13.2988501}, //
+
23450 {4.85937977, 13.3135796}, //
+
23451 {4.85975981, 13.3276501}, //
+
23452 {4.85988998, 13.3410397}, //
+
23453 {4.85976982, 13.3537598}, //
+
23454 {4.8593998, 13.3658199}, //
+
23455 {4.85876989, 13.3772097}, //
+
23456 {4.85790014, 13.3879204}, //
+
23457 {4.85677004, 13.3979702}, //
+
23458 {4.85540009, 13.4073496}, //
+
23459 {4.85469007, 13.4126701}, //
+
23460 {4.85406017, 13.4180698}, //
+
23461 {4.8535099, 13.4235601}, //
+
23462 {4.85305023, 13.4291201}, //
+
23463 {4.85267019, 13.4347696}, //
+
23464 {4.8523798, 13.4405098}, //
+
23465 {4.85216999, 13.4463196}, //
+
23466 {4.85203981, 13.45222}, //
+
23467 {4.85200024, 13.4582005}, //
+
23468 {4.85203981, 13.4618797}, //
+
23469 {4.85216999, 13.4653997}, //
+
23470 {4.8523798, 13.46875}, //
+
23471 {4.85267019, 13.4719296}, //
+
23472 {4.85305023, 13.4749498}, //
+
23473 {4.8535099, 13.4778004}, //
+
23474 {4.85406017, 13.4804802}, //
+
23475 {4.85469007, 13.4829998}, //
+
23476 {4.85540009, 13.4853497}, //
+
23477 {4.85538006, 13.4891796}, //
+
23478 {4.85531998, 13.4931297}, //
+
23479 {4.85520983, 13.4972095}, //
+
23480 {4.8550601, 13.5014095}, //
+
23481 {4.85487986, 13.5057402}, //
+
23482 {4.85464001, 13.51019}, //
+
23483 {4.85437012, 13.5147696}, //
+
23484 {4.85406017, 13.5194702}, //
+
23485 {4.85370016, 13.5242996}, //
+
23486 {4.85326004, 13.5294704}, //
+
23487 {4.85269022, 13.5351896}, //
+
23488 {4.85200024, 13.5414495}, //
+
23489 {4.85118008, 13.5482597}, //
+
23490 {4.85024023, 13.5556097}, //
+
23491 {4.84917021, 13.5635004}, //
+
23492 {4.84797001, 13.5719404}, //
+
23493 {4.84665012, 13.5809202}, //
+
23494 {4.84520006, 13.5904503}, //
+
23495 {4.8422699, 13.6021299}, //
+
23496 {4.83950996, 13.6130505}, //
+
23497 {4.83691978, 13.6232204}, //
+
23498 {4.83448982, 13.6326399}, //
+
23499 {4.83223009, 13.6413002}, //
+
23500 {4.8301301, 13.64921}, //
+
23501 {4.82820988, 13.6563597}, //
+
23502 {4.82643986, 13.6627598}, //
+
23503 {4.82485008, 13.6683998}, //
+
23504 {4.82412004, 13.6714001}, //
+
23505 {4.82342005, 13.6743603}, //
+
23506 {4.82277012, 13.6772699}, //
+
23507 {4.82215977, 13.6801395}, //
+
23508 {4.82159996, 13.68297}, //
+
23509 {4.82107019, 13.6857595}, //
+
23510 {4.82059002, 13.6885004}, //
+
23511 {4.8201499, 13.6912003}, //
+
23512 {4.81974983, 13.6938496}, //
+
23513 {4.81939983, 13.6964998}, //
+
23514 {4.8190999, 13.6991997}, //
+
23515 {4.81883001, 13.7019396}, //
+
23516 {4.81861019, 13.70473}, //
+
23517 {4.81842995, 13.7075596}, //
+
23518 {4.81828022, 13.7104301}, //
+
23519 {4.81818008, 13.7133398}, //
+
23520 {4.81812, 13.7163}, //
+
23521 {4.81809998, 13.7193003}, //
+
23522 {4.81875992, 13.7240696}, //
+
23523 {4.81926012, 13.7293501}, //
+
23524 {4.81959009, 13.7351198}, //
+
23525 {4.81974983, 13.7413998}, //
+
23526 {4.81974983, 13.7481804}, //
+
23527 {4.81959009, 13.7554598}, //
+
23528 {4.81926012, 13.7632399}, //
+
23529 {4.81875992, 13.7715197}, //
+
23530 {4.81809998, 13.7803001}, //
+
23531 {4.8173399, 13.7904301}, //
+
23532 {4.81658983, 13.80124}, //
+
23533 {4.81583023, 13.8127098}, //
+
23534 {4.81508017, 13.8248501}, //
+
23535 {4.81432009, 13.8376598}, //
+
23536 {4.81357002, 13.85114}, //
+
23537 {4.81280994, 13.8652897}, //
+
23538 {4.81205988, 13.8801098}, //
+
23539 {4.8112998, 13.8956003}, //
+
23540 {4.81126022, 13.9063101}, //
+
23541 {4.81113005, 13.9173603}, //
+
23542 {4.81091976, 13.9287395}, //
+
23543 {4.81062984, 13.9404602}, //
+
23544 {4.81024981, 13.9525204}, //
+
23545 {4.80979013, 13.9649096}, //
+
23546 {4.80923986, 13.9776402}, //
+
23547 {4.80860996, 13.9906998}, //
+
23548 {4.80789995, 14.0040998}, //
+
23549 {4.80711985, 14.01752}, //
+
23550 {4.80630016, 14.0306501}, //
+
23551 {4.80543995, 14.0434799}, //
+
23552 {4.80454016, 14.0560198}, //
+
23553 {4.80359983, 14.0682602}, //
+
23554 {4.80260992, 14.0802097}, //
+
23555 {4.80157995, 14.0918703}, //
+
23556 {4.80050993, 14.1032305}, //
+
23557 {4.79939985, 14.1142998}, //
+
23558 {4.79829979, 14.1247797}, //
+
23559 {4.79723978, 14.1343899}, //
+
23560 {4.79621983, 14.1431103}, //
+
23561 {4.79523993, 14.15096}, //
+
23562 {4.79430008, 14.1579199}, //
+
23563 {4.79339981, 14.16401}, //
+
23564 {4.79254007, 14.16922}, //
+
23565 {4.79172993, 14.1735497}, //
+
23566 {4.79094982, 14.177}, //
+
23567 {4.79017019, 14.1815596}, //
+
23568 {4.78935003, 14.1862097}, //
+
23569 {4.78848982, 14.1909399}, //
+
23570 {4.78759003, 14.1957598}, //
+
23571 {4.78665018, 14.2006598}, //
+
23572 {4.78565979, 14.2056398}, //
+
23573 {4.78462982, 14.2107096}, //
+
23574 {4.7835598, 14.2158604}, //
+
23575 {4.7824502, 14.2210999}, //
+
23576 {4.78139019, 14.2262096}, //
+
23577 {4.78044987, 14.2309799}, //
+
23578 {4.7796402, 14.2354202}, //
+
23579 {4.77896023, 14.2395201}, //
+
23580 {4.77839994, 14.2432899}, //
+
23581 {4.77795982, 14.2467203}, //
+
23582 {4.77764988, 14.2498198}, //
+
23583 {4.7774601, 14.2525797}, //
+
23584 {4.77740002, 14.2550001}, //
+
23585 {4.77742004, 14.2557802}, //
+
23586 {4.77748013, 14.2565899}, //
+
23587 {4.7775898, 14.2574501}, //
+
23588 {4.77774, 14.2583504}, //
+
23589 {4.77791977, 14.2592897}, //
+
23590 {4.7781601, 14.2602701}, //
+
23591 {4.77842999, 14.2612896}, //
+
23592 {4.77873993, 14.2623501}, //
+
23593 {4.77909994, 14.2634497}, //
+
23594 {4.77947998, 14.2645597}, //
+
23595 {4.77985001, 14.2656298}, //
+
23596 {4.78023005, 14.2666597}, //
+
23597 {4.78060007, 14.2676497}, //
+
23598 {4.7809701, 14.26859}, //
+
23599 {4.78134012, 14.2694902}, //
+
23600 {4.78171015, 14.2703505}, //
+
23601 {4.78208017, 14.2711697}, //
+
23602 {4.7824502, 14.2719498}, //
+
23603 {4.78284979, 14.2726803}, //
+
23604 {4.78328991, 14.2733803}, //
+
23605 {4.78377008, 14.2740297}, //
+
23606 {4.78429985, 14.2746401}, //
+
23607 {4.78486013, 14.2751999}, //
+
23608 {4.78547001, 14.2757301}, //
+
23609 {4.78611994, 14.2762098}, //
+
23610 {4.78681993, 14.2766504}, //
+
23611 {4.78754997, 14.27705}, //
+
23612 {4.78825998, 14.2774096}, //
+
23613 {4.78888988, 14.2777205}, //
+
23614 {4.78944016, 14.2779903}, //
+
23615 {4.78989983, 14.2782297}, //
+
23616 {4.79027987, 14.27841}, //
+
23617 {4.79056978, 14.2785597}, //
+
23618 {4.79078007, 14.2786703}, //
+
23619 {4.79094982, 14.2787504}, //
+
23620 {4.88250017, 14.2007504}, //
+
23621 {4.88250017, 14.1685495}, //
+
23622 {4.88254023, 14.1611204}, //
+
23623 {4.88266993, 14.1531496}, //
+
23624 {4.88288021, 14.1446304}, //
+
23625 {4.88317013, 14.1355696}, //
+
23626 {4.88355017, 14.1259699}, //
+
23627 {4.88400984, 14.1158199}, //
+
23628 {4.88456011, 14.1051197}, //
+
23629 {4.88519001, 14.0938797}, //
+
23630 {4.88590002, 14.0820999}, //
+
23631 {4.88665009, 14.0774498}, //
+
23632 {4.88741016, 14.0725498}, //
+
23633 {4.88816023, 14.0674}, //
+
23634 {4.88890982, 14.0620003}, //
+
23635 {4.88965988, 14.0563402}, //
+
23636 {4.89040995, 14.0504303}, //
+
23637 {4.89116001, 14.0442696}, //
+
23638 {4.89190006, 14.0378599}, //
+
23639 {4.89265013, 14.0312004}, //
+
23640 {4.8952899, 14.0054197}, //
+
23641 {4.89869022, 13.9778004}, //
+
23642 {4.90284014, 13.9483404}, //
+
23643 {4.90774012, 13.9170303}, //
+
23644 {4.91340017, 13.8838797}, //
+
23645 {4.91980982, 13.8488903}, //
+
23646 {4.92697001, 13.8120499}, //
+
23647 {4.93487978, 13.7733698}, //
+
23648 {4.94355011, 13.7328501}, //
+
23649 {4.95430994, 13.6820698}, //
+
23650 {4.96247005, 13.6337299}, //
+
23651 {4.96802998, 13.5878096}, //
+
23652 {4.97100019, 13.5443096}, //
+
23653 {4.97137022, 13.5032501}, //
+
23654 {4.96915007, 13.4646101}, //
+
23655 {4.9643302, 13.4283895}, //
+
23656 {4.95691013, 13.3946104}, //
+
23657 {4.94689989, 13.3632498}, //
+
23658 {4.93510008, 13.3348303}, //
+
23659 {4.92378998, 13.3083401}, //
+
23660 {4.91299009, 13.2837801}, //
+
23661 {4.90269995, 13.2611399}, //
+
23662 {4.89289999, 13.2404203}, //
+
23663 {4.88360977, 13.2216301}, //
+
23664 {4.87482023, 13.2047596}, //
+
23665 {4.86652994, 13.1898203}, //
+
23666 {4.85874987, 13.1767998}, //
+
23667 {4.85643005, 13.17307}, //
+
23668 {4.85399008, 13.1694298}, //
+
23669 {4.85141993, 13.1658697}, //
+
23670 {4.84872007, 13.1624002}, //
+
23671 {4.84590006, 13.1590004}, //
+
23672 {4.84294987, 13.1556902}, //
+
23673 {4.83987999, 13.1524601}, //
+
23674 {4.83667994, 13.1493101}, //
+
23675 {4.83335018, 13.1462498}, //
+
23676 {4.8299799, 13.1433001}, //
+
23677 {4.82665014, 13.14048}, //
+
23678 {4.82336998, 13.1377802}, //
+
23679 {4.82011986, 13.1351995}, //
+
23680 {4.81690979, 13.1327496}, //
+
23681 {4.81374979, 13.1304302}, //
+
23682 {4.81062984, 13.1282301}, //
+
23683 {4.80753994, 13.1261501}, //
+
23684 {4.8045001, 13.1241999}, //
+
23685 {4.80160999, 13.1224298}, //
+
23686 {4.79898024, 13.1208601}, //
+
23687 {4.79658985, 13.1195097}, //
+
23688 {4.79445982, 13.1183596}, //
+
23689 {4.79258013, 13.1174202}, //
+
23690 {4.79093981, 13.1166897}, //
+
23691 {4.78955984, 13.1161699}, //
+
23692 {4.78843021, 13.1158504}, //
+
23693 {4.78754997, 13.1157503}, //
+
23694 {4.78750992, 13.1150398}, //
+
23695 {4.78738022, 13.1144104}, //
+
23696 {4.78716993, 13.1138601}, //
+
23697 {4.78688002, 13.1134005}, //
+
23698 {4.78649998, 13.1130199}, //
+
23699 {4.78603983, 13.11273}, //
+
23700 {4.78549004, 13.1125202}, //
+
23701 {4.78486013, 13.1123896}, //
+
23702 {4.78415012, 13.1123505}, //
+
23703 });
+
23704 polys.push_back({
+
23705 {4.59429979, 12.9547005}, //
+
23706 {4.59442997, 12.9561005}, //
+
23707 {4.5948, 12.9580498}, //
+
23708 {4.5954299, 12.9605398}, //
+
23709 {4.59630013, 12.9635801}, //
+
23710 {4.59743023, 12.9671602}, //
+
23711 {4.5988102, 12.9712801}, //
+
23712 {4.60044003, 12.9759398}, //
+
23713 {4.60232019, 12.9811497}, //
+
23714 {4.60445023, 12.9869003}, //
+
23715 {4.60674, 12.9937}, //
+
23716 {4.60905981, 13.0005398}, //
+
23717 {4.61143017, 13.0074196}, //
+
23718 {4.6138401, 13.0143499}, //
+
23719 {4.61629009, 13.0213099}, //
+
23720 {4.61878014, 13.0283203}, //
+
23721 {4.62131023, 13.0353699}, //
+
23722 {4.62388992, 13.04247}, //
+
23723 {4.62650013, 13.0495996}, //
+
23724 {4.62903976, 13.0567904}, //
+
23725 {4.63137007, 13.0640097}, //
+
23726 {4.63348007, 13.0712795}, //
+
23727 {4.6353898, 13.0785904}, //
+
23728 {4.63708019, 13.0859404}, //
+
23729 {4.63856983, 13.0933304}, //
+
23730 {4.63984013, 13.1007605}, //
+
23731 {4.64090014, 13.1082401}, //
+
23732 {4.64174986, 13.1157503}, //
+
23733 {4.6431098, 13.1289797}, //
+
23734 {4.64417982, 13.1430502}, //
+
23735 {4.64495993, 13.1579504}, //
+
23736 {4.6454401, 13.1736898}, //
+
23737 {4.64562988, 13.1902704}, //
+
23738 {4.64553022, 13.2076797}, //
+
23739 {4.64513016, 13.2259398}, //
+
23740 {4.64444017, 13.2450199}, //
+
23741 {4.64344978, 13.2649498}, //
+
23742 {4.64184999, 13.2859602}, //
+
23743 {4.63927984, 13.30832}, //
+
23744 {4.6357398, 13.3320103}, //
+
23745 {4.6312499, 13.3570404}, //
+
23746 {4.62579012, 13.38342}, //
+
23747 {4.61935997, 13.41113}, //
+
23748 {4.61196995, 13.4401798}, //
+
23749 {4.60362005, 13.4705696}, //
+
23750 {4.59429979, 13.5023003}, //
+
23751 {4.58240986, 13.5383301}, //
+
23752 {4.57085991, 13.5726099}, //
+
23753 {4.55963993, 13.6051302}, //
+
23754 {4.54874992, 13.63589}, //
+
23755 {4.5381999, 13.6648998}, //
+
23756 {4.52798986, 13.6921396}, //
+
23757 {4.5181098, 13.7176399}, //
+
23758 {4.50856018, 13.7413702}, //
+
23759 {4.49935007, 13.7633495}, //
+
23760 {4.49218988, 13.7807703}, //
+
23761 {4.48578978, 13.7968502}, //
+
23762 {4.48014021, 13.8115797}, //
+
23763 {4.47524023, 13.8249798}, //
+
23764 {4.47109985, 13.8370399}, //
+
23765 {4.46771002, 13.8477497}, //
+
23766 {4.46506977, 13.8571196}, //
+
23767 {4.46318007, 13.86516}, //
+
23768 {4.46204996, 13.87185}, //
+
23769 {4.46140003, 13.8757401}, //
+
23770 {4.46095991, 13.87988}, //
+
23771 {4.46073008, 13.8842802}, //
+
23772 {4.46071005, 13.8889198}, //
+
23773 {4.46089983, 13.8938198}, //
+
23774 {4.46128988, 13.8989601}, //
+
23775 {4.46190023, 13.9043598}, //
+
23776 {4.46271992, 13.9099998}, //
+
23777 {4.46374989, 13.9159002}, //
+
23778 {4.46497011, 13.9219103}, //
+
23779 {4.46635008, 13.9278803}, //
+
23780 {4.4678998, 13.9338102}, //
+
23781 {4.46962023, 13.9396896}, //
+
23782 {4.47149992, 13.9455299}, //
+
23783 {4.47354984, 13.9513197}, //
+
23784 {4.47577, 13.9570704}, //
+
23785 {4.47814989, 13.96278}, //
+
23786 {4.48070002, 13.9684496}, //
+
23787 {4.48332024, 13.9739199}, //
+
23788 {4.48589993, 13.9790096}, //
+
23789 {4.48844004, 13.9837198}, //
+
23790 {4.49093008, 13.98806}, //
+
23791 {4.49338007, 13.9920197}, //
+
23792 {4.49579, 13.9956102}, //
+
23793 {4.49814987, 13.9988098}, //
+
23794 {4.50047016, 14.0016499}, //
+
23795 {4.50274992, 14.0040998}, //
+
23796 {4.50422001, 14.0056696}, //
+
23797 {4.50559998, 14.00737}, //
+
23798 {4.50689983, 14.0091896}, //
+
23799 {4.50811005, 14.0111399}, //
+
23800 {4.50924015, 14.0132103}, //
+
23801 {4.51028013, 14.0154104}, //
+
23802 {4.51124001, 14.0177298}, //
+
23803 {4.51211023, 14.0201797}, //
+
23804 {4.51289988, 14.0227499}, //
+
23805 {4.51360989, 14.0254898}, //
+
23806 {4.51423979, 14.0284405}, //
+
23807 {4.51479006, 14.0315905}, //
+
23808 {4.51525021, 14.0349598}, //
+
23809 {4.51562977, 14.0385399}, //
+
23810 {4.51592016, 14.0423298}, //
+
23811 {4.51612997, 14.0463305}, //
+
23812 {4.51626015, 14.0505304}, //
+
23813 {4.5163002, 14.0549498}, //
+
23814 {4.51713991, 14.0610199}, //
+
23815 {4.51814985, 14.0671797}, //
+
23816 {4.51932001, 14.0734196}, //
+
23817 {4.52066994, 14.0797501}, //
+
23818 {4.52218008, 14.0861502}, //
+
23819 {4.52385998, 14.0926399}, //
+
23820 {4.52570009, 14.0992098}, //
+
23821 {4.52771997, 14.1058598}, //
+
23822 {4.52990007, 14.1126003}, //
+
23823 {4.53215981, 14.1187096}, //
+
23824 {4.53441, 14.12498}, //
+
23825 {4.53667021, 14.1314297}, //
+
23826 {4.53891993, 14.1380396}, //
+
23827 {4.54118013, 14.1448298}, //
+
23828 {4.54342985, 14.1517801}, //
+
23829 {4.54569006, 14.1589003}, //
+
23830 {4.54793978, 14.1661901}, //
+
23831 {4.55019999, 14.1736498}, //
+
23832 {4.55404997, 14.1848202}, //
+
23833 {4.55807018, 14.1957502}, //
+
23834 {4.56226015, 14.2064199}, //
+
23835 {4.56660986, 14.2168398}, //
+
23836 {4.5711298, 14.2270002}, //
+
23837 {4.57581997, 14.2369204}, //
+
23838 {4.58067989, 14.2465801}, //
+
23839 {4.58571005, 14.25599}, //
+
23840 {4.59089994, 14.2651501}, //
+
23841 {4.59085989, 14.2643204}, //
+
23842 {4.59073019, 14.26332}, //
+
23843 {4.59051991, 14.2621603}, //
+
23844 {4.59022999, 14.2608204}, //
+
23845 {4.58984995, 14.2593098}, //
+
23846 {4.5893898, 14.2576399}, //
+
23847 {4.58884001, 14.2558002}, //
+
23848 {4.58821011, 14.2537804}, //
+
23849 {4.5875001, 14.2516003}, //
+
23850 {4.58670998, 14.2476702}, //
+
23851 {4.58584023, 14.2433996}, //
+
23852 {4.58487988, 14.2387896}, //
+
23853 {4.58383989, 14.23386}, //
+
23854 {4.58270979, 14.2285805}, //
+
23855 {4.58150005, 14.2229795}, //
+
23856 {4.5802002, 14.2170401}, //
+
23857 {4.57882023, 14.2107601}, //
+
23858 {4.57735014, 14.2041502}, //
+
23859 {4.5760498, 14.1974096}, //
+
23860 {4.57517004, 14.1907597}, //
+
23861 {4.57470989, 14.1841898}, //
+
23862 {4.57465982, 14.1777}, //
+
23863 {4.57503986, 14.1712999}, //
+
23864 {4.57584, 14.1649704}, //
+
23865 {4.57706022, 14.1587296}, //
+
23866 {4.57869005, 14.1525698}, //
+
23867 {4.58074999, 14.1464996}, //
+
23868 {4.58214998, 14.1376896}, //
+
23869 {4.58333015, 14.1293297}, //
+
23870 {4.58431005, 14.1214399}, //
+
23871 {4.58508015, 14.1140099}, //
+
23872 {4.58563995, 14.1070299}, //
+
23873 {4.58598995, 14.1005201}, //
+
23874 {4.58614016, 14.09447}, //
+
23875 {4.58607006, 14.0888796}, //
+
23876 {4.58580017, 14.0837498}, //
+
23877 {4.58523989, 14.0787601}, //
+
23878 {4.58431005, 14.0735502}, //
+
23879 {4.58299017, 14.0681295}, //
+
23880 {4.58129978, 14.0625095}, //
+
23881 {4.57922983, 14.0566702}, //
+
23882 {4.57677984, 14.0506201}, //
+
23883 {4.57394981, 14.0443602}, //
+
23884 {4.57074022, 14.0378799}, //
+
23885 {4.56715012, 14.0312004}, //
+
23886 {4.56107998, 14.0202398}, //
+
23887 {4.55643988, 14.0069304}, //
+
23888 {4.5532198, 13.9912796}, //
+
23889 {4.55143023, 13.9732904}, //
+
23890 {4.55105019, 13.9529495}, //
+
23891 {4.5521102, 13.9302702}, //
+
23892 {4.55458021, 13.9052401}, //
+
23893 {4.55847979, 13.8778696}, //
+
23894 {4.56379986, 13.8481503}, //
+
23895 {4.56621981, 13.8386002}, //
+
23896 {4.56898022, 13.8280497}, //
+
23897 {4.57208014, 13.8164902}, //
+
23898 {4.57551003, 13.8039303}, //
+
23899 {4.5792799, 13.79037}, //
+
23900 {4.58338022, 13.7757902}, //
+
23901 {4.58782005, 13.7602196}, //
+
23902 {4.59258986, 13.7436399}, //
+
23903 {4.59770012, 13.7260504}, //
+
23904 {4.60372019, 13.7018299}, //
+
23905 {4.60973978, 13.6774101}, //
+
23906 {4.61576986, 13.65277}, //
+
23907 {4.62178993, 13.6279297}, //
+
23908 {4.62781, 13.60287}, //
+
23909 {4.63383007, 13.57761}, //
+
23910 {4.63986015, 13.5521297}, //
+
23911 {4.64588022, 13.5264502}, //
+
23912 {4.65189981, 13.5005503}, //
+
23913 {4.65763998, 13.4751701}, //
+
23914 {4.66278982, 13.4510002}, //
+
23915 {4.66735983, 13.4280396}, //
+
23916 {4.67133999, 13.4062996}, //
+
23917 {4.67473984, 13.3857803}, //
+
23918 {4.67753983, 13.3664598}, //
+
23919 {4.67976999, 13.3483601}, //
+
23920 {4.68139982, 13.3314695}, //
+
23921 {4.68244982, 13.3157997}, //
+
23922 {4.68298006, 13.2954302}, //
+
23923 {4.68304014, 13.2750301}, //
+
23924 {4.68264008, 13.2545795}, //
+
23925 {4.68178988, 13.2340899}, //
+
23926 {4.68046999, 13.2135496}, //
+
23927 {4.67868996, 13.1929798}, //
+
23928 {4.67645979, 13.1723604}, //
+
23929 {4.67375994, 13.1517}, //
+
23930 {4.67059994, 13.1309996}, //
+
23931 {4.66690016, 13.1106796}, //
+
23932 {4.66257, 13.0911503}, //
+
23933 {4.65760994, 13.0724201}, //
+
23934 {4.65201998, 13.0544796}, //
+
23935 {4.64580011, 13.0373402}, //
+
23936 {4.63895988, 13.0209999}, //
+
23937 {4.63148022, 13.0054502}, //
+
23938 {4.62338018, 12.9906998}, //
+
23939 {4.61464977, 12.9767504}, //
+
23940 {4.61038017, 12.9711103}, //
+
23941 {4.60660982, 12.96628}, //
+
23942 {4.60334015, 12.9622297}, //
+
23943 {4.60058022, 12.9589901}, //
+
23944 {4.59832001, 12.9565401}, //
+
23945 {4.59656, 12.9548798}, //
+
23946 {4.5953002, 12.95403}, //
+
23947 {4.59455013, 12.9539604}, //
+
23948 });
+
23949 polys.push_back({
+
23950 {0.311654001, 14.1183901}, //
+
23951 {0.310081005, 14.1187696}, //
+
23952 {0.30855, 14.1194}, //
+
23953 {0.307038993, 14.1216097}, //
+
23954 {0.305528015, 14.1237402}, //
+
23955 {0.304017007, 14.1257896}, //
+
23956 {0.302506, 14.1277504}, //
+
23957 {0.300994009, 14.1296301}, //
+
23958 {0.299483001, 14.1314201}, //
+
23959 {0.297971994, 14.1331301}, //
+
23960 {0.296460986, 14.1347599}, //
+
23961 {0.294950008, 14.1363001}, //
+
23962 {0.293491006, 14.1378098}, //
+
23963 {0.292115003, 14.1393204}, //
+
23964 {0.290821999, 14.14083}, //
+
23965 {0.289611995, 14.1423302}, //
+
23966 {0.288484007, 14.1438398}, //
+
23967 {0.287438989, 14.14534}, //
+
23968 {0.286477, 14.1468496}, //
+
23969 {0.285596997, 14.1483498}, //
+
23970 {0.284799993, 14.1498499}, //
+
23971 {0.284085989, 14.1513205}, //
+
23972 {0.283457011, 14.1527004}, //
+
23973 {0.282911003, 14.1540098}, //
+
23974 {0.282449007, 14.15522}, //
+
23975 {0.282072008, 14.1563597}, //
+
23976 {0.281778008, 14.1574097}, //
+
23977 {0.281567991, 14.15837}, //
+
23978 {0.281441987, 14.1592503}, //
+
23979 {0.281399995, 14.1600504}, //
+
23980 {0.28213501, 14.1608105}, //
+
23981 {0.28282699, 14.1615601}, //
+
23982 {0.283477992, 14.1623201}, //
+
23983 {0.284085989, 14.1630697}, //
+
23984 {0.284653008, 14.1638298}, //
+
23985 {0.285178006, 14.1645803}, //
+
23986 {0.285659999, 14.1653404}, //
+
23987 {0.286101013, 14.16609}, //
+
23988 {0.286500007, 14.1668501}, //
+
23989 {0.286899, 14.1675997}, //
+
23990 {0.287339985, 14.1683598}, //
+
23991 {0.287822008, 14.1691103}, //
+
23992 {0.288347006, 14.1698599}, //
+
23993 {0.288913995, 14.1706104}, //
+
23994 {0.289521992, 14.17136}, //
+
23995 {0.290172994, 14.1721096}, //
+
23996 {0.290865004, 14.1728497}, //
+
23997 {0.291599989, 14.1736002}, //
+
23998 {0.292355001, 14.1743298}, //
+
23999 {0.293109, 14.1750298}, //
+
24000 {0.293861002, 14.1756802}, //
+
24001 {0.29461199, 14.1762896}, //
+
24002 {0.295361996, 14.1768503}, //
+
24003 {0.296110988, 14.1773796}, //
+
24004 {0.296858996, 14.1778603}, //
+
24005 {0.297605008, 14.1782999}, //
+
24006 {0.298350006, 14.1787004}, //
+
24007 {0.29906401, 14.17906}, //
+
24008 {0.300238997, 14.1796398}, //
+
24009 {0.300700992, 14.1798801}, //
+
24010 {0.301077992, 14.1800604}, //
+
24011 {0.301371992, 14.1802101}, //
+
24012 {0.301582009, 14.1803198}, //
+
24013 {0.301750004, 14.1803999}, //
+
24014 {0.302547008, 14.1796198}, //
+
24015 {0.303427011, 14.1787996}, //
+
24016 {0.304389, 14.1779404}, //
+
24017 {0.305433989, 14.1770401}, //
+
24018 {0.306562006, 14.1760998}, //
+
24019 {0.307772011, 14.1751099}, //
+
24020 {0.309065014, 14.1740799}, //
+
24021 {0.310440987, 14.1730099}, //
+
24022 {0.31189999, 14.1718998}, //
+
24023 {0.313410997, 14.1707802}, //
+
24024 {0.314922005, 14.1696501}, //
+
24025 {0.316433012, 14.1685305}, //
+
24026 {0.31794399, 14.1674004}, //
+
24027 {0.319456011, 14.1662703}, //
+
24028 {0.325500011, 14.1617498}, //
+
24029 {0.326990008, 14.1606398}, //
+
24030 {0.328435987, 14.1595697}, //
+
24031 {0.329838991, 14.1585398}, //
+
24032 {0.33119899, 14.1575499}, //
+
24033 {0.332515001, 14.1566095}, //
+
24034 {0.333788991, 14.1557102}, //
+
24035 {0.335018992, 14.15485}, //
+
24036 {0.336205989, 14.1540298}, //
+
24037 {0.337350011, 14.1532497}, //
+
24038 {0.340876013, 14.1509304}, //
+
24039 {0.341443002, 14.1505604}, //
+
24040 {0.341883004, 14.1502705}, //
+
24041 {0.342386991, 14.1499395}, //
+
24042 {0.342449993, 14.1499004}, //
+
24043 {0.342449993, 14.1448002}, //
+
24044 {0.342429012, 14.1444397}, //
+
24045 {0.34236601, 14.1441298}, //
+
24046 {0.342260987, 14.1438599}, //
+
24047 {0.342114002, 14.1436195}, //
+
24048 {0.341924995, 14.1434402}, //
+
24049 {0.341693997, 14.1432896}, //
+
24050 {0.341421992, 14.1431799}, //
+
24051 {0.341107011, 14.1431198}, //
+
24052 {0.340750009, 14.1430998}, //
+
24053 {0.340393007, 14.1430597}, //
+
24054 {0.340077996, 14.14293}, //
+
24055 {0.33980599, 14.1427202}, //
+
24056 {0.339574993, 14.1424303}, //
+
24057 {0.339385986, 14.1420498}, //
+
24058 {0.339239001, 14.1415901}, //
+
24059 {0.339134008, 14.1410398}, //
+
24060 {0.339071006, 14.1404104}, //
+
24061 {0.339049995, 14.1396999}, //
+
24062 {0.338335991, 14.1396599}, //
+
24063 {0.337707013, 14.1395302}, //
+
24064 {0.337161005, 14.1393299}, //
+
24065 {0.336699009, 14.13904}, //
+
24066 {0.33632201, 14.13867}, //
+
24067 {0.33602801, 14.1382103}, //
+
24068 {0.335817993, 14.1376696}, //
+
24069 {0.335691988, 14.1370497}, //
+
24070 {0.335649997, 14.1363497}, //
+
24071 {0.334841996, 14.13484}, //
+
24072 {0.333907008, 14.1333303}, //
+
24073 {0.332843989, 14.1318197}, //
+
24074 {0.331654996, 14.1303101}, //
+
24075 {0.330338001, 14.1287899}, //
+
24076 {0.328893989, 14.1272802}, //
+
24077 {0.32732299, 14.1257696}, //
+
24078 {0.325625002, 14.1242599}, //
+
24079 {0.323799998, 14.1227503}, //
+
24080 {0.321943015, 14.1213799}, //
+
24081 {0.320125997, 14.1202497}, //
+
24082 {0.318349987, 14.11938}, //
+
24083 {0.316614985, 14.1187496}, //
+
24084 {0.314920008, 14.1183796}, //
+
24085 {0.313266993, 14.1182604}, //
+
24086 });
+
24087 polys.push_back({
+
24088 {4.86724997, 13.0784502}, //
+
24089 {4.86688995, 13.0784903}, //
+
24090 {4.86658001, 13.07862}, //
+
24091 {4.86631012, 13.0788298}, //
+
24092 {4.86606979, 13.0791197}, //
+
24093 {4.86589003, 13.0795002}, //
+
24094 {4.86573982, 13.0799599}, //
+
24095 {4.86563015, 13.0805101}, //
+
24096 {4.86557007, 13.0811396}, //
+
24097 {4.86555004, 13.0818501}, //
+
24098 {4.86555004, 13.0835505}, //
+
24099 {4.86550999, 13.08391}, //
+
24100 {4.86537981, 13.0842199}, //
+
24101 {4.86517, 13.0844898}, //
+
24102 {4.86488008, 13.0847301}, //
+
24103 {4.86450005, 13.0849104}, //
+
24104 {4.8640399, 13.0850601}, //
+
24105 {4.8634901, 13.0851698}, //
+
24106 {4.8628602, 13.0852299}, //
+
24107 {4.86215019, 13.0852499}, //
+
24108 {4.85761976, 13.0874901}, //
+
24109 {4.85597992, 13.0882998}, //
+
24110 {4.85409021, 13.0892401}, //
+
24111 {4.85195017, 13.0902996}, //
+
24112 {4.84964991, 13.0914097}, //
+
24113 {4.84727001, 13.0924797}, //
+
24114 {4.84481001, 13.0935097}, //
+
24115 {4.84225988, 13.0944996}, //
+
24116 {4.83962011, 13.0954399}, //
+
24117 {4.83690977, 13.0963402}, //
+
24118 {4.83409977, 13.0972004}, //
+
24119 {4.83122015, 13.0980196}, //
+
24120 {4.82824993, 13.0987997}, //
+
24121 {4.82524014, 13.0995102}, //
+
24122 {4.82222986, 13.1001396}, //
+
24123 {4.81922007, 13.1006899}, //
+
24124 {4.81620979, 13.1011496}, //
+
24125 {4.81318998, 13.1015301}, //
+
24126 {4.81018019, 13.10182}, //
+
24127 {4.80716991, 13.1020298}, //
+
24128 {4.80416012, 13.1021605}, //
+
24129 {4.80114985, 13.1021996}, //
+
24130 {4.79973984, 13.1022196}, //
+
24131 {4.79855013, 13.1022797}, //
+
24132 {4.79756021, 13.1023903}, //
+
24133 {4.79678011, 13.10254}, //
+
24134 {4.79621983, 13.1027203}, //
+
24135 {4.79585981, 13.1029596}, //
+
24136 {4.79571009, 13.1032305}, //
+
24137 {4.79578018, 13.1035404}, //
+
24138 {4.79605007, 13.1039}, //
+
24139 {4.79651022, 13.1042805}, //
+
24140 {4.79714012, 13.1046495}, //
+
24141 {4.79792976, 13.1050301}, //
+
24142 {4.79889011, 13.1054001}, //
+
24143 {4.80002022, 13.1057701}, //
+
24144 {4.80132008, 13.1061401}, //
+
24145 {4.80278015, 13.1065102}, //
+
24146 {4.80440998, 13.1068802}, //
+
24147 {4.80620003, 13.1072502}, //
+
24148 {4.80811024, 13.1076498}, //
+
24149 {4.81006002, 13.1080904}, //
+
24150 {4.81204987, 13.1085701}, //
+
24151 {4.81408024, 13.1091003}, //
+
24152 {4.81615019, 13.1096601}, //
+
24153 {4.81827021, 13.1102695}, //
+
24154 {4.82041979, 13.11092}, //
+
24155 {4.8226099, 13.1116199}, //
+
24156 {4.82485008, 13.1123505}, //
+
24157 {4.82781982, 13.1123896}, //
+
24158 {4.83070993, 13.1125202}, //
+
24159 {4.83350992, 13.11273}, //
+
24160 {4.8362298, 13.1130199}, //
+
24161 {4.83887005, 13.1134005}, //
+
24162 {4.84143019, 13.1138601}, //
+
24163 {4.8439002, 13.1144104}, //
+
24164 {4.84629011, 13.1150398}, //
+
24165 {4.84859991, 13.1157503}, //
+
24166 {4.85298014, 13.1174097}, //
+
24167 {4.85705996, 13.11936}, //
+
24168 {4.86083984, 13.1216002}, //
+
24169 {4.86433983, 13.1241398}, //
+
24170 {4.86753988, 13.1269598}, //
+
24171 {4.87044001, 13.1300802}, //
+
24172 {4.87306023, 13.1335001}, //
+
24173 {4.87538004, 13.1372004}, //
+
24174 {4.87739992, 13.1412001}, //
+
24175 {4.87923002, 13.1454496}, //
+
24176 {4.88092995, 13.14991}, //
+
24177 {4.88250017, 13.1545696}, //
+
24178 {4.88395023, 13.1594496}, //
+
24179 {4.88527012, 13.1645298}, //
+
24180 {4.88646984, 13.1698198}, //
+
24181 {4.88753986, 13.1753197}, //
+
24182 {4.88848019, 13.1810303}, //
+
24183 {4.88929987, 13.1869497}, //
+
24184 {4.89004993, 13.1899204}, //
+
24185 {4.89078999, 13.1927996}, //
+
24186 {4.89154005, 13.19561}, //
+
24187 {4.89229012, 13.1983204}, //
+
24188 {4.89304018, 13.2009602}, //
+
24189 {4.89378977, 13.2035103}, //
+
24190 {4.89453983, 13.2059698}, //
+
24191 {4.89529991, 13.2083502}, //
+
24192 {4.89604998, 13.2106504}, //
+
24193 {4.89694977, 13.2130003}, //
+
24194 {4.89814997, 13.2155199}, //
+
24195 {4.89963007, 13.2181997}, //
+
24196 {4.9014101, 13.2210503}, //
+
24197 {4.90349007, 13.2240696}, //
+
24198 {4.90584993, 13.2272501}, //
+
24199 {4.90851021, 13.2306004}, //
+
24200 {4.91145992, 13.2341204}, //
+
24201 {4.91470003, 13.2377996}, //
+
24202 {4.91828012, 13.2418203}, //
+
24203 {4.92222977, 13.2463398}, //
+
24204 {4.92656994, 13.2513599}, //
+
24205 {4.93128014, 13.2568903}, //
+
24206 {4.9363699, 13.2629099}, //
+
24207 {4.94183016, 13.2694397}, //
+
24208 {4.94768, 13.2764797}, //
+
24209 {4.95389986, 13.2840099}, //
+
24210 {4.96049976, 13.2920504}, //
+
24211 {4.96629, 13.3006496}, //
+
24212 {4.97162008, 13.3098803}, //
+
24213 {4.97649002, 13.3197403}, //
+
24214 {4.98089981, 13.3302202}, //
+
24215 {4.98484993, 13.3413296}, //
+
24216 {4.9883399, 13.3530703}, //
+
24217 {4.9913702, 13.3654404}, //
+
24218 {4.99393988, 13.3784304}, //
+
24219 {4.99604988, 13.3920498}, //
+
24220 {4.99778986, 13.4059296}, //
+
24221 {4.99923992, 13.4196901}, //
+
24222 {5.00039005, 13.43332}, //
+
24223 {5.00124979, 13.4468203}, //
+
24224 {5.00182009, 13.4602003}, //
+
24225 {5.00208998, 13.4734497}, //
+
24226 {5.00206995, 13.4865799}, //
+
24227 {5.00176001, 13.4995804}, //
+
24228 {5.00115013, 13.5124502}, //
+
24229 {5.00036001, 13.5248404}, //
+
24230 {4.99948978, 13.5363998}, //
+
24231 {4.99852991, 13.5471201}, //
+
24232 {4.99748993, 13.5570002}, //
+
24233 {4.99635983, 13.56604}, //
+
24234 {4.99515009, 13.5742502}, //
+
24235 {4.99385023, 13.5816202}, //
+
24236 {4.99246979, 13.58815}, //
+
24237 {4.99100018, 13.5938501}, //
+
24238 {4.99031019, 13.59828}, //
+
24239 {4.98973989, 13.60254}, //
+
24240 {4.98929977, 13.6066303}, //
+
24241 {4.98898983, 13.6105604}, //
+
24242 {4.98880005, 13.6143198}, //
+
24243 {4.98872995, 13.6179199}, //
+
24244 {4.98880005, 13.6213398}, //
+
24245 {4.98898983, 13.6246099}, //
+
24246 {4.98929977, 13.6276999}, //
+
24247 {4.98969984, 13.6307602}, //
+
24248 {4.99013996, 13.6339102}, //
+
24249 {4.99062014, 13.6371403}, //
+
24250 {4.9911499, 13.6404495}, //
+
24251 {4.99171019, 13.6438503}, //
+
24252 {4.99232006, 13.6473198}, //
+
24253 {4.99296999, 13.6508799}, //
+
24254 {4.99366999, 13.65452}, //
+
24255 {4.99440002, 13.6582499}, //
+
24256 {4.99582005, 13.6638203}, //
+
24257 {4.99706984, 13.66998}, //
+
24258 {4.99814987, 13.6767197}, //
+
24259 {4.99907017, 13.6840401}, //
+
24260 {4.99982023, 13.6919498}, //
+
24261 {5.00040007, 13.7004499}, //
+
24262 {5.00082016, 13.7095299}, //
+
24263 {5.00107002, 13.7192001}, //
+
24264 {5.00115013, 13.7294502}, //
+
24265 {4.99947977, 13.7429705}, //
+
24266 {4.99747992, 13.7564201}, //
+
24267 {4.99514008, 13.7697697}, //
+
24268 {4.99245977, 13.7830496}, //
+
24269 {4.98944998, 13.7962303}, //
+
24270 {4.98611021, 13.8093395}, //
+
24271 {4.98241997, 13.82236}, //
+
24272 {4.97840023, 13.8353004}, //
+
24273 {4.97405005, 13.8481503}, //
+
24274 {4.97036982, 13.8579397}, //
+
24275 {4.9668498, 13.8677301}, //
+
24276 {4.96350002, 13.8775196}, //
+
24277 {4.96032, 13.8873196}, //
+
24278 {4.95730019, 13.89711}, //
+
24279 {4.95445013, 13.9069099}, //
+
24280 {4.95176983, 13.9167004}, //
+
24281 {4.94925022, 13.9265003}, //
+
24282 {4.94689989, 13.9363003}, //
+
24283 {4.94480991, 13.94804}, //
+
24284 {4.94305992, 13.9591503}, //
+
24285 {4.9416399, 13.9696398}, //
+
24286 {4.94054985, 13.9794998}, //
+
24287 {4.93979979, 13.9887199}, //
+
24288 {4.93939018, 13.9973202}, //
+
24289 {4.93931007, 14.00529}, //
+
24290 {4.93955994, 14.01264}, //
+
24291 {4.94014978, 14.0193501}, //
+
24292 {4.94094992, 14.0255604}, //
+
24293 {4.94183016, 14.0313997}, //
+
24294 {4.94279003, 14.0368605}, //
+
24295 {4.94383001, 14.0419502}, //
+
24296 {4.94496012, 14.0466604}, //
+
24297 {4.94616985, 14.0509901}, //
+
24298 {4.94747019, 14.0549498}, //
+
24299 {4.94884014, 14.0585403}, //
+
24300 {4.95030022, 14.0617504}, //
+
24301 {4.95033979, 14.0625496}, //
+
24302 {4.95046997, 14.0634298}, //
+
24303 {4.95067978, 14.0643902}, //
+
24304 {4.95097017, 14.0654297}, //
+
24305 {4.95135021, 14.0665598}, //
+
24306 {4.95180988, 14.06777}, //
+
24307 {4.95236015, 14.0690699}, //
+
24308 {4.95299006, 14.0704403}, //
+
24309 {4.95370007, 14.0719004}, //
+
24310 {4.95437002, 14.0741901}, //
+
24311 {4.95488024, 14.0765104}, //
+
24312 {4.95521021, 14.0788803}, //
+
24313 {4.95537996, 14.0812902}, //
+
24314 {4.95537996, 14.0837402}, //
+
24315 {4.95521021, 14.0862303}, //
+
24316 {4.95488024, 14.0887604}, //
+
24317 {4.95437002, 14.0913401}, //
+
24318 {4.95370007, 14.0939503}, //
+
24319 {4.95289993, 14.0965996}, //
+
24320 {4.95202017, 14.0993004}, //
+
24321 {4.95105982, 14.1020403}, //
+
24322 {4.95001984, 14.1048298}, //
+
24323 {4.94889021, 14.1076603}, //
+
24324 {4.94768, 14.1105299}, //
+
24325 {4.94638014, 14.1134396}, //
+
24326 {4.94501019, 14.1163998}, //
+
24327 {4.94355011, 14.1194}, //
+
24328 {4.94127989, 14.1261702}, //
+
24329 {4.93977022, 14.1306801}, //
+
24330 {4.93902016, 14.1329298}, //
+
24331 {4.93826008, 14.13519}, //
+
24332 {4.93674994, 14.1396999}, //
+
24333 {4.93607998, 14.1411505}, //
+
24334 {4.93556976, 14.1424704}, //
+
24335 {4.93523979, 14.1436701}, //
+
24336 {4.93507004, 14.1447401}, //
+
24337 {4.93507004, 14.1456804}, //
+
24338 {4.93523979, 14.1464996}, //
+
24339 {4.93556976, 14.1471901}, //
+
24340 {4.93607998, 14.1477604}, //
+
24341 {4.93674994, 14.1482}, //
+
24342 {4.93755007, 14.14851}, //
+
24343 {4.93842983, 14.1486998}, //
+
24344 {4.93939018, 14.1487703}, //
+
24345 {4.94043016, 14.1486998}, //
+
24346 {4.94155979, 14.14851}, //
+
24347 {4.94277, 14.1482}, //
+
24348 {4.94406986, 14.1477604}, //
+
24349 {4.94543982, 14.1471901}, //
+
24350 {4.94689989, 14.1464996}, //
+
24351 {4.94845009, 14.1457396}, //
+
24352 {4.95008993, 14.14499}, //
+
24353 {4.95180988, 14.1442299}, //
+
24354 {4.95361996, 14.1434803}, //
+
24355 {4.95550013, 14.1427202}, //
+
24356 {4.95747995, 14.1419697}, //
+
24357 {4.95952988, 14.1412096}, //
+
24358 {4.96167994, 14.14046}, //
+
24359 {4.96390009, 14.1396999}, //
+
24360 {4.96536016, 14.1389503}, //
+
24361 {4.96673012, 14.1382103}, //
+
24362 {4.96802998, 14.1374598}, //
+
24363 {4.96924019, 14.1367102}, //
+
24364 {4.97036982, 14.1359596}, //
+
24365 {4.9714098, 14.13521}, //
+
24366 {4.97237015, 14.1344604}, //
+
24367 {4.97324991, 14.1337004}, //
+
24368 {4.97405005, 14.1329498}, //
+
24369 {4.97574997, 14.1320496}, //
+
24370 {4.97781992, 14.1308498}, //
+
24371 {4.98026991, 14.1293697}, //
+
24372 {4.98309994, 14.1275902}, //
+
24373 {4.98629999, 14.1255102}, //
+
24374 {4.98987007, 14.1231499}, //
+
24375 {4.99382019, 14.1204901}, //
+
24376 {4.99814987, 14.1175404}, //
+
24377 {5.00285006, 14.1142998}, //
+
24378 {5.00773001, 14.1108904}, //
+
24379 {5.0125699, 14.10744}, //
+
24380 {5.01736021, 14.10394}, //
+
24381 {5.02210999, 14.1004105}, //
+
24382 {5.0268302, 14.0968304}, //
+
24383 {5.03148985, 14.0932102}, //
+
24384 {5.03611994, 14.08955}, //
+
24385 {5.04070997, 14.0858498}, //
+
24386 {5.04524994, 14.0820999}, //
+
24387 {5.04974985, 14.0783501}, //
+
24388 {5.05421019, 14.0746498}, //
+
24389 {5.05862999, 14.0709801}, //
+
24390 {5.0630002, 14.0673599}, //
+
24391 {5.0673399, 14.0637798}, //
+
24392 {5.07163, 14.0602303}, //
+
24393 {5.07588005, 14.0567303}, //
+
24394 {5.08008003, 14.0532703}, //
+
24395 {5.08424997, 14.0498505}, //
+
24396 {5.0992198, 14.0376101}, //
+
24397 {5.10198021, 14.0353498}, //
+
24398 {5.10267019, 14.03479}, //
+
24399 {5.10290003, 14.0346003}, //
+
24400 {5.10292006, 14.0345602}, //
+
24401 {5.10324001, 14.0339298}, //
+
24402 {5.10366011, 14.0330896}, //
+
24403 {5.10393, 14.0325403}, //
+
24404 {5.10459995, 14.0312004}, //
+
24405 {5.10495996, 14.0304098}, //
+
24406 {5.10526991, 14.0295401}, //
+
24407 {5.1055398, 14.0285797}, //
+
24408 {5.10578012, 14.0275402}, //
+
24409 {5.10595989, 14.0264101}, //
+
24410 {5.1061101, 14.0251999}, //
+
24411 {5.10621977, 14.0239}, //
+
24412 {5.10627985, 14.0225201}, //
+
24413 {5.10629988, 14.0210505}, //
+
24414 {5.10625982, 14.0194998}, //
+
24415 {5.10613012, 14.0178604}, //
+
24416 {5.10591984, 14.01614}, //
+
24417 {5.10562992, 14.0143404}, //
+
24418 {5.10524988, 14.0124598}, //
+
24419 {5.10479021, 14.0104904}, //
+
24420 {5.10423994, 14.0084496}, //
+
24421 {5.10361004, 14.0063105}, //
+
24422 {5.10290003, 14.0040998}, //
+
24423 {5.10151005, 14.0024796}, //
+
24424 {5.10037994, 14.0006599}, //
+
24425 {5.09950018, 13.9986296}, //
+
24426 {5.0988698, 13.9963903}, //
+
24427 {5.09849024, 13.9939404}, //
+
24428 {5.09837008, 13.9912796}, //
+
24429 {5.09849024, 13.98841}, //
+
24430 {5.0988698, 13.9853296}, //
+
24431 {5.09950018, 13.9820499}, //
+
24432 {5.10029984, 13.9784698}, //
+
24433 {5.10118008, 13.9745197}, //
+
24434 {5.10213995, 13.97019}, //
+
24435 {5.10317993, 13.9654799}, //
+
24436 {5.10431004, 13.9603996}, //
+
24437 {5.10551977, 13.9549398}, //
+
24438 {5.10682011, 13.9490995}, //
+
24439 {5.10819006, 13.9428902}, //
+
24440 {5.10965014, 13.9363003}, //
+
24441 {5.11041021, 13.9332399}, //
+
24442 {5.1111598, 13.93009}, //
+
24443 {5.11191988, 13.9268599}, //
+
24444 {5.11266994, 13.9235497}, //
+
24445 {5.11343002, 13.9201498}, //
+
24446 {5.11418009, 13.9166803}, //
+
24447 {5.11494017, 13.9131203}, //
+
24448 {5.11569023, 13.9094801}, //
+
24449 {5.11644983, 13.9057503}, //
+
24450 {5.11842012, 13.8960896}, //
+
24451 {5.1198101, 13.8866701}, //
+
24452 {5.12061024, 13.8775101}, //
+
24453 {5.12082005, 13.8685999}, //
+
24454 {5.12044001, 13.8599396}, //
+
24455 {5.11947012, 13.8515301}, //
+
24456 {5.11791992, 13.8433704}, //
+
24457 {5.11577988, 13.8354597}, //
+
24458 {5.11304998, 13.8277998}, //
+
24459 {5.11004019, 13.8204803}, //
+
24460 {5.10702991, 13.81357}, //
+
24461 {5.10402012, 13.8070803}, //
+
24462 {5.10100985, 13.8009996}, //
+
24463 {5.09799004, 13.7953501}, //
+
24464 {5.09497976, 13.7901096}, //
+
24465 {5.09196997, 13.7852898}, //
+
24466 {5.08896017, 13.7808905}, //
+
24467 {5.0859499, 13.7769003}, //
+
24468 {5.08590984, 13.7762003}, //
+
24469 {5.08578014, 13.7755804}, //
+
24470 {5.08556986, 13.7750397}, //
+
24471 {5.08255005, 13.77355}, //
+
24472 {5.08326006, 13.7735901}, //
+
24473 {5.08388996, 13.7737198}, //
+
24474 {5.08444023, 13.7739201}, //
+
24475 {5.0848999, 13.77421}, //
+
24476 {5.08527994, 13.77458}, //
+
24477 {5.08556986, 13.7750397}, //
+
24478 {5.08935022, 13.7769003}, //
+
24479 {5.0893898, 13.7766895}, //
+
24480 {5.08951998, 13.7760601}, //
+
24481 {5.09200001, 13.7635098}, //
+
24482 {5.0927, 13.7599497}, //
+
24483 {5.09346008, 13.7561197}, //
+
24484 {5.09421015, 13.7521601}, //
+
24485 {5.09497023, 13.7480803}, //
+
24486 {5.09571981, 13.7438803}, //
+
24487 {5.09647989, 13.7395401}, //
+
24488 {5.09722996, 13.7350798}, //
+
24489 {5.09799004, 13.7305002}, //
+
24490 {5.0987401, 13.72579}, //
+
24491 {5.09950018, 13.7209501}, //
+
24492 {5.10024977, 13.7160597}, //
+
24493 {5.10100985, 13.7111702}, //
+
24494 {5.10175991, 13.7062798}, //
+
24495 {5.10250998, 13.7013798}, //
+
24496 {5.10326004, 13.6964903}, //
+
24497 {5.10401011, 13.6915903}, //
+
24498 {5.10476017, 13.6866999}, //
+
24499 {5.10550022, 13.6817999}, //
+
24500 {5.10624981, 13.6768999}, //
+
24501 {5.10695982, 13.6721497}, //
+
24502 {5.1075902, 13.6676903}, //
+
24503 {5.10813999, 13.6635199}, //
+
24504 {5.10860014, 13.6596498}, //
+
24505 {5.10898018, 13.6560698}, //
+
24506 {5.1092701, 13.6527901}, //
+
24507 {5.1094799, 13.6498003}, //
+
24508 {5.10961008, 13.6471004}, //
+
24509 {5.10965014, 13.6447001}, //
+
24510 {5.10949993, 13.6400099}, //
+
24511 {5.10905981, 13.6349897}, //
+
24512 {5.10832977, 13.6296301}, //
+
24513 {5.10730982, 13.62393}, //
+
24514 {5.10598993, 13.6179104}, //
+
24515 {5.10438013, 13.6115398}, //
+
24516 {5.10247993, 13.6048498}, //
+
24517 {5.10028982, 13.5978203}, //
+
24518 {5.09779978, 13.5904503}, //
+
24519 {5.09501982, 13.5825396}, //
+
24520 {5.09194994, 13.5738697}, //
+
24521 {5.08858013, 13.5644598}, //
+
24522 {5.08491993, 13.5542803}, //
+
24523 {5.0809598, 13.5433502}, //
+
24524 {5.07671022, 13.5316696}, //
+
24525 {5.07216978, 13.5192404}, //
+
24526 {5.06732988, 13.5060501}, //
+
24527 {5.06220007, 13.4920998}, //
+
24528 {5.06011009, 13.48557}, //
+
24529 {5.0583601, 13.4795504}, //
+
24530 {5.05693007, 13.47402}, //
+
24531 {5.05584002, 13.4689999}, //
+
24532 {5.05508995, 13.4644804}, //
+
24533 {5.05466986, 13.4604597}, //
+
24534 {5.05458021, 13.4569397}, //
+
24535 {5.05482006, 13.4539204}, //
+
24536 {5.05539989, 13.4513998}, //
+
24537 {5.05624008, 13.4493303}, //
+
24538 {5.05724001, 13.4476404}, //
+
24539 {5.05842018, 13.4463196}, //
+
24540 {5.05976009, 13.4453802}, //
+
24541 {5.06126022, 13.4448099}, //
+
24542 {5.06293011, 13.4446201}, //
+
24543 {5.06477022, 13.4448099}, //
+
24544 {5.06678009, 13.4453697}, //
+
24545 {5.06895018, 13.4462996}, //
+
24546 {5.07123995, 13.4475203}, //
+
24547 {5.07356024, 13.4489002}, //
+
24548 {5.07593012, 13.4504499}, //
+
24549 {5.07834005, 13.4521704}, //
+
24550 {5.08079004, 13.4540501}, //
+
24551 {5.08328009, 13.4561005}, //
+
24552 {5.08581018, 13.4583197}, //
+
24553 {5.08838987, 13.4607}, //
+
24554 {5.09100008, 13.4632502}, //
+
24555 {5.09357977, 13.4658699}, //
+
24556 {5.09603024, 13.4684496}, //
+
24557 {5.09836006, 13.4709902}, //
+
24558 {5.10056019, 13.4734898}, //
+
24559 {5.10263014, 13.4759502}, //
+
24560 {5.10457993, 13.4783602}, //
+
24561 {5.10640001, 13.4807301}, //
+
24562 {5.10808992, 13.4830599}, //
+
24563 {5.10965014, 13.4853497}, //
+
24564 {5.11038017, 13.48773}, //
+
24565 {5.11108017, 13.4903603}, //
+
24566 {5.1117301, 13.4932499}, //
+
24567 {5.11233997, 13.4963903}, //
+
24568 {5.11289978, 13.4997797}, //
+
24569 {5.11343002, 13.5034199}, //
+
24570 {5.1139102, 13.5073099}, //
+
24571 {5.11434984, 13.5114498}, //
+
24572 {5.11474991, 13.5158501}, //
+
24573 {5.11510992, 13.5203695}, //
+
24574 {5.11541986, 13.5248899}, //
+
24575 {5.11569023, 13.5294199}, //
+
24576 {5.11593008, 13.5339403}, //
+
24577 {5.11610985, 13.5384598}, //
+
24578 {5.11626005, 13.5429802}, //
+
24579 {5.1163702, 13.5475101}, //
+
24580 {5.11642981, 13.5520296}, //
+
24581 {5.11644983, 13.55655}, //
+
24582 {5.11717987, 13.56178}, //
+
24583 {5.11787987, 13.5669203}, //
+
24584 {5.1185298, 13.5719805}, //
+
24585 {5.11914015, 13.5769501}, //
+
24586 {5.11969995, 13.5818501}, //
+
24587 {5.1202302, 13.5866604}, //
+
24588 {5.1207099, 13.5913897}, //
+
24589 {5.12115002, 13.5960398}, //
+
24590 {5.12155008, 13.6006002}, //
+
24591 {5.12195015, 13.6049995}, //
+
24592 {5.12238979, 13.6091404}, //
+
24593 {5.12286997, 13.61304}, //
+
24594 {5.12340021, 13.6166801}, //
+
24595 {5.12396002, 13.62008}, //
+
24596 {5.12456989, 13.6232204}, //
+
24597 {5.12521982, 13.6261196}, //
+
24598 {5.12591982, 13.6287603}, //
+
24599 {5.12664986, 13.6311502}, //
+
24600 {5.12741995, 13.6326303}, //
+
24601 {5.12823009, 13.6340704}, //
+
24602 {5.12907982, 13.6354704}, //
+
24603 {5.12997007, 13.6368198}, //
+
24604 {5.13090992, 13.6381397}, //
+
24605 {5.13188982, 13.6394196}, //
+
24606 {5.13291979, 13.6406498}, //
+
24607 {5.13398981, 13.6418505}, //
+
24608 {5.13509989, 13.6429996}, //
+
24609 {5.13616991, 13.6441097}, //
+
24610 {5.13711023, 13.6451797}, //
+
24611 {5.13792992, 13.6462097}, //
+
24612 {5.13862991, 13.6471901}, //
+
24613 {5.1391902, 13.6481304}, //
+
24614 {5.13962984, 13.6490202}, //
+
24615 {5.1399498, 13.6498699}, //
+
24616 {5.14014006, 13.6506796}, //
+
24617 {5.14020014, 13.6514502}, //
+
24618 {5.14093018, 13.6514902}, //
+
24619 {5.14162016, 13.6516199}, //
+
24620 {5.14227009, 13.6518297}, //
+
24621 {5.14287996, 13.6521196}, //
+
24622 {5.14343977, 13.6525002}, //
+
24623 {5.14396, 13.6529598}, //
+
24624 {5.14443016, 13.6535101}, //
+
24625 {5.14485979, 13.6541405}, //
+
24626 {5.14524984, 13.65485}, //
+
24627 {5.14560986, 13.6556101}, //
+
24628 {5.1459198, 13.6563597}, //
+
24629 {5.14619017, 13.6571198}, //
+
24630 {5.14643002, 13.6578703}, //
+
24631 {5.14660978, 13.6586304}, //
+
24632 {5.14675999, 13.65938}, //
+
24633 {5.14687014, 13.66014}, //
+
24634 {5.14693022, 13.6608896}, //
+
24635 {5.14694977, 13.6616497}, //
+
24636 {5.14698982, 13.6633396}, //
+
24637 {5.14712, 13.66541}, //
+
24638 {5.14732981, 13.6678495}, //
+
24639 {5.1476202, 13.6706696}, //
+
24640 {5.14799976, 13.6738701}, //
+
24641 {5.14845991, 13.6774502}, //
+
24642 {5.14901018, 13.6814098}, //
+
24643 {5.14964008, 13.6857405}, //
+
24644 {5.15035009, 13.6904497}, //
+
24645 {5.1511302, 13.6953497}, //
+
24646 {5.15193987, 13.7002497}, //
+
24647 {5.15280008, 13.7051497}, //
+
24648 {5.15369987, 13.7100496}, //
+
24649 {5.1546402, 13.7149496}, //
+
24650 {5.1556201, 13.7198496}, //
+
24651 {5.15664005, 13.7247496}, //
+
24652 {5.15770006, 13.7296495}, //
+
24653 {5.15880013, 13.7345505}, //
+
24654 {5.16007996, 13.7393904}, //
+
24655 {5.16165018, 13.7440996}, //
+
24656 {5.16351986, 13.7486801}, //
+
24657 {5.16567993, 13.7531404}, //
+
24658 {5.16813993, 13.7574797}, //
+
24659 {5.17088985, 13.7616796}, //
+
24660 {5.17393017, 13.7657604}, //
+
24661 {5.17726994, 13.7697201}, //
+
24662 {5.1809001, 13.77355}, //
+
24663 {5.18232012, 13.7765799}, //
+
24664 {5.18356991, 13.7796602}, //
+
24665 {5.18464994, 13.7827702}, //
+
24666 {5.18556976, 13.7859297}, //
+
24667 {5.18631983, 13.7891302}, //
+
24668 {5.18690014, 13.7923698}, //
+
24669 {5.18732023, 13.79566}, //
+
24670 {5.1875701, 13.7989798}, //
+
24671 {5.1876502, 13.80235}, //
+
24672 {5.1876502, 13.8345499}, //
+
24673 {5.18627024, 13.84058}, //
+
24674 {5.18515015, 13.8466101}, //
+
24675 {5.18426991, 13.8526402}, //
+
24676 {5.18365002, 13.8586702}, //
+
24677 {5.18326998, 13.8647003}, //
+
24678 {5.1831398, 13.8707304}, //
+
24679 {5.18325996, 13.87675}, //
+
24680 {5.18362999, 13.8827801}, //
+
24681 {5.18424988, 13.8887997}, //
+
24682 {5.18505001, 13.8917799}, //
+
24683 {5.18592978, 13.8946695}, //
+
24684 {5.18689013, 13.89748}, //
+
24685 {5.18793011, 13.9002104}, //
+
24686 {5.18906021, 13.9028502}, //
+
24687 {5.19026995, 13.9054003}, //
+
24688 {5.19156981, 13.9078703}, //
+
24689 {5.19294024, 13.9102497}, //
+
24690 {5.19439983, 13.91255}, //
+
24691 {5.19590998, 13.9147396}, //
+
24692 {5.19742012, 13.91681}, //
+
24693 {5.19892979, 13.9187603}, //
+
24694 {5.20043993, 13.9205704}, //
+
24695 {5.20196009, 13.9222698}, //
+
24696 {5.20347023, 13.9238396}, //
+
24697 {5.2049799, 13.9252796}, //
+
24698 {5.20649004, 13.9266005}, //
+
24699 {5.20800018, 13.9278002}, //
+
24700 {5.2094698, 13.9288902}, //
+
24701 {5.21084976, 13.9299002}, //
+
24702 {5.2121501, 13.9308205}, //
+
24703 {5.21335983, 13.9316597}, //
+
24704 {5.21448994, 13.9324198}, //
+
24705 {5.21552992, 13.9330902}, //
+
24706 {5.21648979, 13.9336796}, //
+
24707 {5.21736002, 13.9341803}, //
+
24708 {5.21815014, 13.9345999}, //
+
24709 {5.21886015, 13.9349604}, //
+
24710 {5.22003984, 13.9355402}, //
+
24711 {5.22049999, 13.9357796}, //
+
24712 {5.22088003, 13.9359598}, //
+
24713 {5.22116995, 13.9361095}, //
+
24714 {5.22138023, 13.9362202}, //
+
24715 {5.22150993, 13.9362803}, //
+
24716 {5.22154999, 13.9363003}, //
+
24717 {5.2218399, 13.9360304}, //
+
24718 {5.22272015, 13.9352102}, //
+
24719 {5.24032021, 13.9188805}, //
+
24720 {5.24529982, 13.9142504}, //
+
24721 {5.25065994, 13.9092197}, //
+
24722 {5.25618982, 13.9039497}, //
+
24723 {5.26187992, 13.8984203}, //
+
24724 {5.26773977, 13.8926497}, //
+
24725 {5.27376986, 13.8866196}, //
+
24726 {5.27997017, 13.8803396}, //
+
24727 {5.28633022, 13.8738098}, //
+
24728 {5.29286003, 13.8670301}, //
+
24729 {5.29955006, 13.8599997}, //
+
24730 {5.3063302, 13.8528204}, //
+
24731 {5.31310987, 13.8456001}, //
+
24732 {5.31989002, 13.8383398}, //
+
24733 {5.32667017, 13.8310404}, //
+
24734 {5.33344984, 13.8237}, //
+
24735 {5.34024, 13.8163099}, //
+
24736 {5.34702015, 13.8088799}, //
+
24737 {5.35380983, 13.8014097}, //
+
24738 {5.36059999, 13.7938995}, //
+
24739 {5.36266994, 13.7908201}, //
+
24740 {5.36435986, 13.7876101}, //
+
24741 {5.3656702, 13.7842703}, //
+
24742 {5.36661005, 13.7808104}, //
+
24743 {5.36716986, 13.7772303}, //
+
24744 {5.36736012, 13.7735205}, //
+
24745 {5.36715984, 13.7696896}, //
+
24746 {5.36660004, 13.7657299}, //
+
24747 {5.36565018, 13.7616501}, //
+
24748 {5.36451006, 13.7575302}, //
+
24749 {5.36331987, 13.7534504}, //
+
24750 {5.36209011, 13.7494097}, //
+
24751 {5.36081982, 13.74541}, //
+
24752 {5.35949993, 13.7414503}, //
+
24753 {5.35813999, 13.7375402}, //
+
24754 {5.35674, 13.7336702}, //
+
24755 {5.35528994, 13.7298403}, //
+
24756 {5.35379982, 13.7260504}, //
+
24757 {5.35166979, 13.7230797}, //
+
24758 {5.3497901, 13.7201996}, //
+
24759 {5.34815979, 13.7173901}, //
+
24760 {5.34677982, 13.7146797}, //
+
24761 {5.3456502, 13.7120399}, //
+
24762 {5.34477997, 13.7094898}, //
+
24763 {5.34415007, 13.7070303}, //
+
24764 {5.34378004, 13.7046499}, //
+
24765 {5.34364986, 13.7023497}, //
+
24766 {5.3412199, 13.6915903}, //
+
24767 {5.33844995, 13.6803999}, //
+
24768 {5.33534002, 13.6688004}, //
+
24769 {5.33191013, 13.6567802}, //
+
24770 {5.32812977, 13.6443396}, //
+
24771 {5.32402992, 13.6314802}, //
+
24772 {5.31959009, 13.6182098}, //
+
24773 {5.3148098, 13.6045103}, //
+
24774 {5.30970001, 13.5903997}, //
+
24775 {5.30440998, 13.57621}, //
+
24776 {5.2990799, 13.5622797}, //
+
24777 {5.29371023, 13.5485897}, //
+
24778 {5.28829002, 13.5351601}, //
+
24779 {5.28283024, 13.5219803}, //
+
24780 {5.27731991, 13.5090399}, //
+
24781 {5.27177, 13.4963598}, //
+
24782 {5.26618004, 13.4839296}, //
+
24783 {5.26055002, 13.4717503}, //
+
24784 {5.25509024, 13.4602404}, //
+
24785 {5.25001001, 13.4498196}, //
+
24786 {5.24530983, 13.4404802}, //
+
24787 {5.24097013, 13.4322395}, //
+
24788 {5.23702002, 13.4250803}, //
+
24789 {5.23343992, 13.4190197}, //
+
24790 {5.23022985, 13.4140396}, //
+
24791 {5.22739983, 13.4101496}, //
+
24792 {5.22494984, 13.4073496}, //
+
24793 {5.2210598, 13.40413}, //
+
24794 {5.21690989, 13.4004898}, //
+
24795 {5.21252012, 13.39643}, //
+
24796 {5.20787001, 13.3919497}, //
+
24797 {5.20297003, 13.3870497}, //
+
24798 {5.19782019, 13.3817301}, //
+
24799 {5.19240999, 13.3759899}, //
+
24800 {5.18675995, 13.3698301}, //
+
24801 {5.18085003, 13.3632498}, //
+
24802 {5.17495012, 13.3565998}, //
+
24803 {5.16931009, 13.3501997}, //
+
24804 {5.16390991, 13.3440399}, //
+
24805 {5.15877008, 13.3381395}, //
+
24806 {5.15387011, 13.33249}, //
+
24807 {5.14923, 13.3270903}, //
+
24808 {5.14483023, 13.32195}, //
+
24809 {5.14068985, 13.31705}, //
+
24810 {5.13679981, 13.3123999}, //
+
24811 {5.13435984, 13.3092604}, //
+
24812 {5.13152981, 13.3058701}, //
+
24813 {5.12833023, 13.3022299}, //
+
24814 {5.12476015, 13.2983398}, //
+
24815 {5.12080002, 13.2941999}, //
+
24816 {5.11646986, 13.2897997}, //
+
24817 {5.11176014, 13.2851496}, //
+
24818 {5.1066699, 13.2802496}, //
+
24819 {5.1012001, 13.2750998}, //
+
24820 {5.09552002, 13.2698698}, //
+
24821 {5.08979988, 13.2647305}, //
+
24822 {5.08404016, 13.2596703}, //
+
24823 {5.07823992, 13.2546997}, //
+
24824 {5.07240009, 13.2497997}, //
+
24825 {5.0665102, 13.2449903}, //
+
24826 {5.06057978, 13.2402601}, //
+
24827 {5.05460978, 13.23561}, //
+
24828 {5.0486002, 13.2310495}, //
+
24829 {5.04266024, 13.2266502}, //
+
24830 {5.03689003, 13.2225103}, //
+
24831 {5.03128004, 13.2186098}, //
+
24832 {5.02583981, 13.2149696}, //
+
24833 {5.0205698, 13.2115698}, //
+
24834 {5.01547003, 13.2084303}, //
+
24835 {5.01052999, 13.2055302}, //
+
24836 {5.00576019, 13.2028904}, //
+
24837 {5.00115013, 13.2004995}, //
+
24838 {4.98947001, 13.1936798}, //
+
24839 {4.97854996, 13.18678}, //
+
24840 {4.96837997, 13.1797895}, //
+
24841 {4.95896006, 13.17272}, //
+
24842 {4.95030022, 13.1655598}, //
+
24843 {4.94238997, 13.1583204}, //
+
24844 {4.93523979, 13.151}, //
+
24845 {4.92884016, 13.14359}, //
+
24846 {4.92320013, 13.1360998}, //
+
24847 {4.92309999, 13.1359997}, //
+
24848 {4.92278004, 13.1356802}, //
+
24849 {4.92152023, 13.1344204}, //
+
24850 {4.91941977, 13.1323204}, //
+
24851 {4.91470003, 13.1275997}, //
+
24852 {4.91281986, 13.1257}, //
+
24853 {4.91094017, 13.1237602}, //
+
24854 {4.90906, 13.1217699}, //
+
24855 {4.90717983, 13.1197395}, //
+
24856 {4.90530014, 13.1176701}, //
+
24857 {4.90340996, 13.1155596}, //
+
24858 {4.90152979, 13.1134005}, //
+
24859 {4.89964008, 13.1112003}, //
+
24860 {4.8977499, 13.1089497}, //
+
24861 {4.89587021, 13.1067104}, //
+
24862 {4.89399004, 13.1045198}, //
+
24863 {4.89210987, 13.1023703}, //
+
24864 {4.89023018, 13.1002502}, //
+
24865 {4.88835001, 13.0981798}, //
+
24866 {4.88645983, 13.0961504}, //
+
24867 {4.88458014, 13.0941601}, //
+
24868 {4.88268995, 13.0922098}, //
+
24869 {4.88079977, 13.0902996}, //
+
24870 {4.87903023, 13.08848}, //
+
24871 {4.87746, 13.0867901}, //
+
24872 {4.87611008, 13.0852299}, //
+
24873 {4.87495995, 13.0837898}, //
+
24874 {4.8740201, 13.0824699}, //
+
24875 {4.87329006, 13.0812798}, //
+
24876 {4.87276983, 13.0802097}, //
+
24877 {4.87244987, 13.0792704}, //
+
24878 {4.87235022, 13.0784502}, //
+
24879 });
+
24880 polys.push_back({
+
24881 {1.94620001, 13.3802004}, //
+
24882 {1.94617999, 13.3840303}, //
+
24883 {1.94612002, 13.38799}, //
+
24884 {1.94600999, 13.3920698}, //
+
24885 {1.94586003, 13.3962698}, //
+
24886 {1.94568002, 13.40061}, //
+
24887 {1.94544005, 13.4050703}, //
+
24888 {1.94517004, 13.4096498}, //
+
24889 {1.94485998, 13.41436}, //
+
24890 {1.94449997, 13.4191999}, //
+
24891 {1.94406998, 13.4240799}, //
+
24892 {1.94351006, 13.4289198}, //
+
24893 {1.94282997, 13.4337101}, //
+
24894 {1.94202006, 13.4384604}, //
+
24895 {1.94107997, 13.4431801}, //
+
24896 {1.94000995, 13.4478397}, //
+
24897 {1.93882, 13.4524698}, //
+
24898 {1.9375, 13.4570599}, //
+
24899 {1.93605006, 13.4616003}, //
+
24900 {1.93351996, 13.4684401}, //
+
24901 {1.93044996, 13.4754105}, //
+
24902 {1.92683005, 13.4825001}, //
+
24903 {1.92265999, 13.4897203}, //
+
24904 {1.91795003, 13.4970598}, //
+
24905 {1.91269004, 13.50453}, //
+
24906 {1.90689003, 13.5121298}, //
+
24907 {1.90053999, 13.5198498}, //
+
24908 {1.89365005, 13.5277004}, //
+
24909 {1.88626003, 13.5355101}, //
+
24910 {1.87842, 13.5431004}, //
+
24911 {1.87011003, 13.5504904}, //
+
24912 {1.86134005, 13.5576801}, //
+
24913 {1.85212004, 13.5646496}, //
+
24914 {1.84243, 13.5714102}, //
+
24915 {1.83228004, 13.5779696}, //
+
24916 {1.82167006, 13.5843096}, //
+
24917 {1.81060004, 13.5904503}, //
+
24918 {1.80983996, 13.5911598}, //
+
24919 {1.80909002, 13.5917902}, //
+
24920 {1.80833006, 13.5923405}, //
+
24921 {1.80757999, 13.5928001}, //
+
24922 {1.80682003, 13.5931797}, //
+
24923 {1.80606997, 13.5934696}, //
+
24924 {1.80531001, 13.5936804}, //
+
24925 {1.80455995, 13.5938101}, //
+
24926 {1.80379999, 13.5938501}, //
+
24927 {1.79296005, 13.6006498}, //
+
24928 {1.78154004, 13.6074896}, //
+
24929 {1.76953006, 13.6143703}, //
+
24930 {1.75692999, 13.6212997}, //
+
24931 {1.74374998, 13.6282597}, //
+
24932 {1.72997999, 13.6352701}, //
+
24933 {1.71562004, 13.6423197}, //
+
24934 {1.70068002, 13.6494198}, //
+
24935 {1.68515003, 13.6565504}, //
+
24936 {1.66937006, 13.6635199}, //
+
24937 {1.65366995, 13.6701097}, //
+
24938 {1.63805997, 13.6763201}, //
+
24939 {1.62252998, 13.6821604}, //
+
24940 {1.60709, 13.6876202}, //
+
24941 {1.59173, 13.6927099}, //
+
24942 {1.57644999, 13.6974096}, //
+
24943 {1.56125998, 13.7017498}, //
+
24944 {1.54614997, 13.7056999}, //
+
24945 {1.52890003, 13.7088699}, //
+
24946 {1.51181996, 13.7123299}, //
+
24947 {1.49491, 13.7160797}, //
+
24948 {1.47816002, 13.7201204}, //
+
24949 {1.46158004, 13.7244501}, //
+
24950 {1.44517004, 13.7290802}, //
+
24951 {1.42893004, 13.7339897}, //
+
24952 {1.41286004, 13.7391996}, //
+
24953 {1.39695001, 13.7447004}, //
+
24954 {1.38167, 13.7501698}, //
+
24955 {1.36748004, 13.7552605}, //
+
24956 {1.35438001, 13.7599697}, //
+
24957 {1.34236002, 13.7643003}, //
+
24958 {1.33142996, 13.76826}, //
+
24959 {1.32158995, 13.7718296}, //
+
24960 {1.31283998, 13.7750301}, //
+
24961 {1.30517995, 13.7778597}, //
+
24962 {1.29859996, 13.7803001}, //
+
24963 {1.29403996, 13.7832003}, //
+
24964 {1.28938997, 13.78584}, //
+
24965 {1.28465998, 13.7882299}, //
+
24966 {1.27985001, 13.7903605}, //
+
24967 {1.27495003, 13.7922497}, //
+
24968 {1.26997995, 13.7938805}, //
+
24969 {1.26492, 13.7952499}, //
+
24970 {1.25978005, 13.79638}, //
+
24971 {1.25454998, 13.7972498}, //
+
24972 {1.24835002, 13.7974596}, //
+
24973 {1.24180996, 13.79809}, //
+
24974 {1.23494005, 13.7991304}, //
+
24975 {1.22774005, 13.8006001}, //
+
24976 {1.22019994, 13.8024797}, //
+
24977 {1.21232998, 13.80478}, //
+
24978 {1.20412004, 13.8074999}, //
+
24979 {1.19558001, 13.8106403}, //
+
24980 {1.18669999, 13.8142004}, //
+
24981 {1.17595005, 13.8179703}, //
+
24982 {1.16477001, 13.8217402}, //
+
24983 {1.15318, 13.82551}, //
+
24984 {1.14117002, 13.8292799}, //
+
24985 {1.12874997, 13.8330498}, //
+
24986 {1.11590004, 13.8368196}, //
+
24987 {1.10264003, 13.8406}, //
+
24988 {1.08895004, 13.8443699}, //
+
24989 {1.07484996, 13.8481503}, //
+
24990 {1.06664002, 13.85116}, //
+
24991 {1.05860996, 13.8541698}, //
+
24992 {1.05072999, 13.8571796}, //
+
24993 {1.04303002, 13.8601904}, //
+
24994 {1.03549004, 13.8632097}, //
+
24995 {1.02812004, 13.8662205}, //
+
24996 {1.02091002, 13.8692303}, //
+
24997 {1.01387, 13.8722401}, //
+
24998 {1.00699997, 13.8752499}, //
+
24999 {1.00390005, 13.87605}, //
+
25000 {1.00064003, 13.8769302}, //
+
25001 {0.997210979, 13.8778896}, //
+
25002 {0.993611991, 13.8789301}, //
+
25003 {0.989845991, 13.8800602}, //
+
25004 {0.985911012, 13.8812704}, //
+
25005 {0.98180902, 13.8825703}, //
+
25006 {0.97753799, 13.8839397}, //
+
25007 {0.973100007, 13.8853998}, //
+
25008 {0.960205972, 13.8892603}, //
+
25009 {0.947143972, 13.8932896}, //
+
25010 {0.933916986, 13.89748}, //
+
25011 {0.920521975, 13.9018297}, //
+
25012 {0.906961024, 13.9063597}, //
+
25013 {0.893233001, 13.9110403}, //
+
25014 {0.87933898, 13.9159002}, //
+
25015 {0.865278006, 13.9209204}, //
+
25016 {0.851050019, 13.9260998}, //
+
25017 {0.837157011, 13.9312897}, //
+
25018 {0.824099004, 13.9363203}, //
+
25019 {0.811878026, 13.9411802}, //
+
25020 {0.800491989, 13.9458704}, //
+
25021 {0.789942026, 13.9503899}, //
+
25022 {0.780228019, 13.9547396}, //
+
25023 {0.771349013, 13.95893}, //
+
25024 {0.763306975, 13.9629498}, //
+
25025 {0.756099999, 13.9667997}, //
+
25026 {0.751410007, 13.9690599}, //
+
25027 {0.746385992, 13.9713097}, //
+
25028 {0.741028011, 13.9735699}, //
+
25029 {0.735334992, 13.9758196}, //
+
25030 {0.729306996, 13.9780798}, //
+
25031 {0.722944021, 13.9803305}, //
+
25032 {0.716247976, 13.9825897}, //
+
25033 {0.709215999, 13.9848404}, //
+
25034 {0.701849997, 13.9870996}, //
+
25035 {0.694338024, 13.9893198}, //
+
25036 {0.686866999, 13.9914703}, //
+
25037 {0.679439008, 13.9935198}, //
+
25038 {0.672052026, 13.9954996}, //
+
25039 {0.664708018, 13.9973803}, //
+
25040 {0.657405972, 13.9991903}, //
+
25041 {0.650144994, 14.0009098}, //
+
25042 {0.642926991, 14.0025501}, //
+
25043 {0.635749996, 14.0040998}, //
+
25044 {0.628866017, 14.0055304}, //
+
25045 {0.622524977, 14.0067902}, //
+
25046 {0.616728008, 14.0078802}, //
+
25047 {0.611473024, 14.0087996}, //
+
25048 {0.606761992, 14.0095596}, //
+
25049 {0.602594018, 14.0101404}, //
+
25050 {0.598969996, 14.01056}, //
+
25051 {0.595888019, 14.0108204}, //
+
25052 {0.593349993, 14.0108995}, //
+
25053 {0.498400003, 14.0108995}, //
+
25054 {0.500854015, 14.0124197}, //
+
25055 {0.503683984, 14.0139799}, //
+
25056 {0.506888986, 14.0155897}, //
+
25057 {0.510469019, 14.0172396}, //
+
25058 {0.51442498, 14.0189199}, //
+
25059 {0.518755972, 14.0206604}, //
+
25060 {0.523461998, 14.0224304}, //
+
25061 {0.528542995, 14.0242395}, //
+
25062 {0.533999979, 14.0261002}, //
+
25063 {0.539677024, 14.0280504}, //
+
25064 {0.545395017, 14.0301304}, //
+
25065 {0.551155984, 14.0323296}, //
+
25066 {0.55695802, 14.0346498}, //
+
25067 {0.562802017, 14.0370998}, //
+
25068 {0.568688989, 14.0396795}, //
+
25069 {0.574617028, 14.0423803}, //
+
25070 {0.580587983, 14.0452003}, //
+
25071 {0.586600006, 14.0481501}, //
+
25072 {0.588142991, 14.0488596}, //
+
25073 {0.589770019, 14.04949}, //
+
25074 {0.591482997, 14.0500402}, //
+
25075 {0.593280971, 14.0504999}, //
+
25076 {0.595165014, 14.0508804}, //
+
25077 {0.597132981, 14.0511703}, //
+
25078 {0.599187016, 14.0513802}, //
+
25079 {0.601325989, 14.0515099}, //
+
25080 {0.603550017, 14.0515499}, //
+
25081 {0.610159993, 14.0536499}, //
+
25082 {0.616436005, 14.0554104}, //
+
25083 {0.622377992, 14.0568399}, //
+
25084 {0.627985001, 14.05793}, //
+
25085 {0.633256972, 14.0586901}, //
+
25086 {0.638194025, 14.0591097}, //
+
25087 {0.642798007, 14.0591898}, //
+
25088 {0.647065997, 14.0589399}, //
+
25089 {0.651000023, 14.0583496}, //
+
25090 {0.654851019, 14.0572996}, //
+
25091 {0.658869028, 14.0556698}, //
+
25092 {0.663056016, 14.0534496}, //
+
25093 {0.667410016, 14.0506496}, //
+
25094 {0.671931982, 14.0472603}, //
+
25095 {0.676621974, 14.0432796}, //
+
25096 {0.68147999, 14.0387201}, //
+
25097 {0.686505973, 14.0335798}, //
+
25098 {0.691699982, 14.0278502}, //
+
25099 {0.696242988, 14.02491}, //
+
25100 {0.700825989, 14.0221395}, //
+
25101 {0.705449998, 14.0195398}, //
+
25102 {0.710115016, 14.0171003}, //
+
25103 {0.714820027, 14.0148401}, //
+
25104 {0.719567001, 14.0127401}, //
+
25105 {0.724354029, 14.0108099}, //
+
25106 {0.729180992, 14.0090504}, //
+
25107 {0.734049976, 14.0074501}, //
+
25108 {0.738970995, 14.00599}, //
+
25109 {0.743933976, 14.0046196}, //
+
25110 {0.748938978, 14.0033197}, //
+
25111 {0.753986001, 14.0021095}, //
+
25112 {0.759074986, 14.0009804}, //
+
25113 {0.764205992, 13.9999399}, //
+
25114 {0.769378006, 13.9989796}, //
+
25115 {0.774592996, 13.9981003}, //
+
25116 {0.779850006, 13.9973001}, //
+
25117 {0.786544025, 13.9965}, //
+
25118 {0.793071985, 13.9956198}, //
+
25119 {0.799432993, 13.9946604}, //
+
25120 {0.805628002, 13.9936199}, //
+
25121 {0.811655998, 13.9924898}, //
+
25122 {0.817516983, 13.9912796}, //
+
25123 {0.823211014, 13.9899797}, //
+
25124 {0.828738987, 13.9886103}, //
+
25125 {0.834100008, 13.9871502}, //
+
25126 {0.841884971, 13.9841404}, //
+
25127 {0.850171983, 13.9811296}, //
+
25128 {0.858960986, 13.9781103}, //
+
25129 {0.868252993, 13.9750996}, //
+
25130 {0.878048003, 13.9720802}, //
+
25131 {0.88834399, 13.9690599}, //
+
25132 {0.899143994, 13.9660397}, //
+
25133 {0.910445988, 13.9630203}, //
+
25134 {0.922249973, 13.96}, //
+
25135 {0.934138, 13.9571104}, //
+
25136 {0.945692003, 13.9544802}, //
+
25137 {0.956911027, 13.9520903}, //
+
25138 {0.967796028, 13.9499598}, //
+
25139 {0.97834599, 13.9480801}, //
+
25140 {0.988560975, 13.9464397}, //
+
25141 {0.998441994, 13.9450598}, //
+
25142 {1.00799, 13.9439297}, //
+
25143 {1.01719999, 13.9430504}, //
+
25144 {1.02552998, 13.9421301}, //
+
25145 {1.03393996, 13.9408703}, //
+
25146 {1.04244006, 13.9392796}, //
+
25147 {1.05102003, 13.9373503}, //
+
25148 {1.05967999, 13.9350901}, //
+
25149 {1.06842005, 13.9324903}, //
+
25150 {1.07725, 13.9295597}, //
+
25151 {1.08615994, 13.9263}, //
+
25152 {1.09514999, 13.9226999}, //
+
25153 {1.10650003, 13.9183598}, //
+
25154 {1.11793995, 13.91434}, //
+
25155 {1.12945998, 13.9106703}, //
+
25156 {1.14105999, 13.90732}, //
+
25157 {1.15274, 13.9043102}, //
+
25158 {1.16451001, 13.9016304}, //
+
25159 {1.17635, 13.8992901}, //
+
25160 {1.18829, 13.8972797}, //
+
25161 {1.20029998, 13.8956003}, //
+
25162 {1.21210003, 13.8947601}, //
+
25163 {1.22341001, 13.8937502}, //
+
25164 {1.23421001, 13.89258}, //
+
25165 {1.24450004, 13.8912296}, //
+
25166 {1.2543, 13.88972}, //
+
25167 {1.26358998, 13.8880396}, //
+
25168 {1.27237999, 13.8862}, //
+
25169 {1.28067005, 13.8841801}, //
+
25170 {1.28845, 13.882}, //
+
25171 {1.29589999, 13.8796597}, //
+
25172 {1.30317998, 13.8771496}, //
+
25173 {1.31028998, 13.8744802}, //
+
25174 {1.31724, 13.8716297}, //
+
25175 {1.32402003, 13.8686199}, //
+
25176 {1.33062994, 13.8654404}, //
+
25177 {1.33706999, 13.8620996}, //
+
25178 {1.34334004, 13.8585796}, //
+
25179 {1.34944999, 13.8549004}, //
+
25180 {1.35250998, 13.8534002}, //
+
25181 {1.35565996, 13.8519001}, //
+
25182 {1.35889006, 13.8503904}, //
+
25183 {1.36220002, 13.8488903}, //
+
25184 {1.36559999, 13.8473797}, //
+
25185 {1.36907005, 13.8458796}, //
+
25186 {1.37263, 13.8443699}, //
+
25187 {1.37627006, 13.8428602}, //
+
25188 {1.38, 13.8413496}, //
+
25189 {1.38761997, 13.8375597}, //
+
25190 {1.39540005, 13.8337297}, //
+
25191 {1.40335, 13.8298597}, //
+
25192 {1.41147006, 13.8259497}, //
+
25193 {1.41974998, 13.82199}, //
+
25194 {1.42820001, 13.8179903}, //
+
25195 {1.43682003, 13.8139496}, //
+
25196 {1.44560003, 13.8098698}, //
+
25197 {1.45455003, 13.8057499}, //
+
25198 {1.46359003, 13.8017502}, //
+
25199 {1.47264004, 13.7980499}, //
+
25200 {1.48168004, 13.7946301}, //
+
25201 {1.49073005, 13.7915096}, //
+
25202 {1.49977005, 13.7886896}, //
+
25203 {1.50882006, 13.78615}, //
+
25204 {1.51786005, 13.7839098}, //
+
25205 {1.52690995, 13.7819595}, //
+
25206 {1.53594995, 13.7803001}, //
+
25207 {1.56009996, 13.7762403}, //
+
25208 {1.58283997, 13.7715902}, //
+
25209 {1.60414004, 13.7663603}, //
+
25210 {1.62402999, 13.76054}, //
+
25211 {1.64249003, 13.7541399}, //
+
25212 {1.65953004, 13.7471399}, //
+
25213 {1.67514002, 13.7395697}, //
+
25214 {1.68932998, 13.7313995}, //
+
25215 {1.70210004, 13.7226496}, //
+
25216 {1.70536005, 13.7202301}, //
+
25217 {1.70913005, 13.7174702}, //
+
25218 {1.71338999, 13.7143698}, //
+
25219 {1.71816003, 13.7109404}, //
+
25220 {1.72344005, 13.7071695}, //
+
25221 {1.72921002, 13.7030697}, //
+
25222 {1.73548996, 13.6986303}, //
+
25223 {1.74226999, 13.6938601}, //
+
25224 {1.74954998, 13.6887503}, //
+
25225 {1.75864005, 13.6826897}, //
+
25226 {1.76779997, 13.6765404}, //
+
25227 {1.77706003, 13.6702995}, //
+
25228 {1.78638995, 13.6639795}, //
+
25229 {1.79580998, 13.6575699}, //
+
25230 {1.80531001, 13.6510801}, //
+
25231 {1.81489003, 13.6445103}, //
+
25232 {1.82455003, 13.6378498}, //
+
25233 {1.83430004, 13.6310997}, //
+
25234 {1.84371996, 13.6244898}, //
+
25235 {1.85239005, 13.6182098}, //
+
25236 {1.86030996, 13.6122704}, //
+
25237 {1.86747003, 13.6066704}, //
+
25238 {1.87387002, 13.6013899}, //
+
25239 {1.87952006, 13.5964603}, //
+
25240 {1.88442004, 13.5918503}, //
+
25241 {1.88856006, 13.5875797}, //
+
25242 {1.89195001, 13.5836496}, //
+
25243 {1.89426005, 13.5813904}, //
+
25244 {1.89664996, 13.5791397}, //
+
25245 {1.89911997, 13.5768805}, //
+
25246 {1.90167999, 13.5746202}, //
+
25247 {1.90432, 13.57236}, //
+
25248 {1.90704, 13.5700903}, //
+
25249 {1.90983999, 13.5678301}, //
+
25250 {1.91272998, 13.5655699}, //
+
25251 {1.91569996, 13.5633001}, //
+
25252 {1.91870999, 13.5594902}, //
+
25253 {1.92172003, 13.5556002}, //
+
25254 {1.92472994, 13.5516195}, //
+
25255 {1.92773998, 13.5475597}, //
+
25256 {1.93076003, 13.5434198}, //
+
25257 {1.93376994, 13.5391903}, //
+
25258 {1.93677998, 13.5348797}, //
+
25259 {1.93979001, 13.5304804}, //
+
25260 {1.94280005, 13.526}, //
+
25261 {1.94570005, 13.5214796}, //
+
25262 {1.94834006, 13.5169601}, //
+
25263 {1.95072997, 13.5124397}, //
+
25264 {1.95287001, 13.5079203}, //
+
25265 {1.95475996, 13.5033998}, //
+
25266 {1.95640004, 13.4988899}, //
+
25267 {1.95779002, 13.4943705}, //
+
25268 {1.95892, 13.4898596}, //
+
25269 {1.9598, 13.4853497}, //
+
25270 {1.95977998, 13.4829397}, //
+
25271 {1.95972002, 13.4802303}, //
+
25272 {1.95960999, 13.4772301}, //
+
25273 {1.95946002, 13.4739399}, //
+
25274 {1.95928001, 13.4703598}, //
+
25275 {1.95904005, 13.4664803}, //
+
25276 {1.95877004, 13.4623098}, //
+
25277 {1.95845997, 13.4578505}, //
+
25278 {1.95809996, 13.4531002}, //
+
25279 {1.95770001, 13.4482298}, //
+
25280 {1.95726001, 13.4434004}, //
+
25281 {1.95677996, 13.4386196}, //
+
25282 {1.95624995, 13.4338703}, //
+
25283 {1.95569003, 13.4291601}, //
+
25284 {1.95508003, 13.4245005}, //
+
25285 {1.95442998, 13.4198799}, //
+
25286 {1.95372999, 13.4152899}, //
+
25287 {1.95299995, 13.4107504}, //
+
25288 {1.95227003, 13.4063101}, //
+
25289 {1.95157003, 13.4020395}, //
+
25290 {1.95091999, 13.3979301}, //
+
25291 {1.95030999, 13.3939896}, //
+
25292 {1.94974995, 13.3902197}, //
+
25293 {1.94921994, 13.3866196}, //
+
25294 {1.94874001, 13.3831797}, //
+
25295 {1.9483, 13.3799105}, //
+
25296 {1.94790006, 13.3767996}, //
+
25297 {1.94754004, 13.3739595}, //
+
25298 {1.94722998, 13.3714504}, //
+
25299 {1.94695997, 13.3692703}, //
+
25300 {1.94672, 13.3674297}, //
+
25301 {1.94639003, 13.3647604}, //
+
25302 {1.94628, 13.3639202}, //
+
25303 {1.94620001, 13.3632498}, //
+
25304 });
+
25305 polys.push_back({
+
25306 {0.223800004, 13.9769497}, //
+
25307 {0.223840997, 13.9769897}, //
+
25308 {0.223965004, 13.9771204}, //
+
25309 {0.224171996, 13.9773302}, //
+
25310 {0.224462003, 13.9776201}, //
+
25311 {0.224833995, 13.9779997}, //
+
25312 {0.225289002, 13.9784603}, //
+
25313 {0.225826994, 13.9790096}, //
+
25314 {0.226447001, 13.97964}, //
+
25315 {0.227149993, 13.9803495}, //
+
25316 {0.227947995, 13.9811096}, //
+
25317 {0.228828996, 13.9818602}, //
+
25318 {0.229793996, 13.9826202}, //
+
25319 {0.230844006, 13.9833698}, //
+
25320 {0.231977001, 13.9841299}, //
+
25321 {0.233193994, 13.9848804}, //
+
25322 {0.234495997, 13.9856396}, //
+
25323 {0.235881001, 13.9863901}, //
+
25324 {0.237350002, 13.9871502}, //
+
25325 {0.238105997, 13.9871902}, //
+
25326 {0.238860995, 13.9873199}, //
+
25327 {0.239617005, 13.9875298}, //
+
25328 {0.240372002, 13.9878197}, //
+
25329 {0.241127998, 13.9882002}, //
+
25330 {0.241882995, 13.9886599}, //
+
25331 {0.242639005, 13.9892101}, //
+
25332 {0.243394002, 13.9898396}, //
+
25333 {0.244149998, 13.99055}, //
+
25334 {0.246490002, 13.9921303}, //
+
25335 {0.248997003, 13.9938898}, //
+
25336 {0.251672, 13.9958096}, //
+
25337 {0.254514992, 13.9979}, //
+
25338 {0.257526994, 14.0001602}, //
+
25339 {0.260706007, 14.0025902}, //
+
25340 {0.264052004, 14.0051899}, //
+
25341 {0.267567009, 14.0079603}, //
+
25342 {0.27125001, 14.0108995}, //
+
25343 {0.273485005, 14.0131302}, //
+
25344 {0.275680006, 14.0153303}, //
+
25345 {0.277833015, 14.0174799}, //
+
25346 {0.279945999, 14.0195904}, //
+
25347 {0.282018989, 14.0216503}, //
+
25348 {0.284049988, 14.0236797}, //
+
25349 {0.286040992, 14.0256596}, //
+
25350 {0.287990987, 14.0276003}, //
+
25351 {0.289900005, 14.0295}, //
+
25352 {0.291767001, 14.0313702}, //
+
25353 {0.293590993, 14.0331898}, //
+
25354 {0.295372009, 14.0349798}, //
+
25355 {0.297109991, 14.0367203}, //
+
25356 {0.298803985, 14.0384197}, //
+
25357 {0.300455987, 14.0400801}, //
+
25358 {0.302064002, 14.0416899}, //
+
25359 {0.303627998, 14.0432701}, //
+
25360 {0.305150002, 14.0447998}, //
+
25361 {0.305128992, 14.0447197}, //
+
25362 {0.304960996, 14.0440397}, //
+
25363 {0.304814011, 14.0434599}, //
+
25364 {0.304394007, 14.0417805}, //
+
25365 {0.304122001, 14.0406904}, //
+
25366 {0.30380699, 14.0394297}, //
+
25367 {0.303449988, 14.0380001}, //
+
25368 {0.302693993, 14.0349798}, //
+
25369 {0.302316993, 14.0334702}, //
+
25370 {0.301939011, 14.0319595}, //
+
25371 {0.300428003, 14.0259104}, //
+
25372 {0.30004999, 14.0243998}, //
+
25373 {0.299661994, 14.0228996}, //
+
25374 {0.299230009, 14.0214005}, //
+
25375 {0.298756003, 14.0199003}, //
+
25376 {0.298238009, 14.0184002}, //
+
25377 {0.29767701, 14.0169001}, //
+
25378 {0.297071993, 14.0153999}, //
+
25379 {0.296425015, 14.0138998}, //
+
25380 {0.295733988, 14.0123997}, //
+
25381 {0.294999987, 14.0108995}, //
+
25382 {0.29409799, 14.0086803}, //
+
25383 {0.29290399, 14.0065298}, //
+
25384 {0.291417003, 14.0044804}, //
+
25385 {0.289636999, 14.0024996}, //
+
25386 {0.287564993, 14.0006199}, //
+
25387 {0.2852, 13.9988098}, //
+
25388 {0.282543004, 13.9970903}, //
+
25389 {0.279592991, 13.99545}, //
+
25390 {0.276349992, 13.9939003}, //
+
25391 {0.273001999, 13.9924202}, //
+
25392 {0.269737989, 13.9909801}, //
+
25393 {0.266555995, 13.9895802}, //
+
25394 {0.263455987, 13.9882298}, //
+
25395 {0.260439992, 13.9869099}, //
+
25396 {0.257506013, 13.98563}, //
+
25397 {0.25465399, 13.9843998}, //
+
25398 {0.25188601, 13.9832001}, //
+
25399 {0.249200001, 13.9820499}, //
+
25400 {0.246629, 13.9809799}, //
+
25401 {0.244183004, 13.9800396}, //
+
25402 {0.241861001, 13.9792204}, //
+
25403 {0.239664003, 13.9785204}, //
+
25404 {0.237591997, 13.9779596}, //
+
25405 {0.235643998, 13.97752}, //
+
25406 {0.233822003, 13.9771996}, //
+
25407 {0.232123002, 13.9770098}, //
+
25408 {0.230550006, 13.9769497}, //
+
25409 });
+
25410 polys.push_back({
+
25411 {5.49771023, 13.8076601}, //
+
25412 {5.49790001, 13.8082895}, //
+
25413 {5.49845982, 13.80933}, //
+
25414 {5.49940014, 13.8107996}, //
+
25415 {5.50072002, 13.8126802}, //
+
25416 {5.50240993, 13.8149796}, //
+
25417 {5.50447989, 13.8177004}, //
+
25418 {5.50692987, 13.8208399}, //
+
25419 {5.50974989, 13.8243999}, //
+
25420 {5.52650023, 13.8411503}, //
+
25421 {5.53026009, 13.8449097}, //
+
25422 {5.53386021, 13.8485098}, //
+
25423 {5.5372901, 13.8519402}, //
+
25424 {5.54055023, 13.8551998}, //
+
25425 {5.54365015, 13.8583002}, //
+
25426 {5.54725981, 13.8619404}, //
+
25427 {5.55052996, 13.8653297}, //
+
25428 {5.55347013, 13.8684702}, //
+
25429 {5.55605984, 13.8713598}, //
+
25430 {5.55833006, 13.8739996}, //
+
25431 {5.56024981, 13.8763905}, //
+
25432 {5.56184006, 13.8785295}, //
+
25433 {5.56308985, 13.8804102}, //
+
25434 {5.56400013, 13.8820496}, //
+
25435 {5.56404018, 13.8828001}, //
+
25436 {5.56416988, 13.8835402}, //
+
25437 {5.56438017, 13.8842897}, //
+
25438 {5.56467009, 13.8850403}, //
+
25439 {5.56505013, 13.8857899}, //
+
25440 {5.5655098, 13.8865404}, //
+
25441 {5.56606007, 13.88729}, //
+
25442 {5.56668997, 13.8880501}, //
+
25443 {5.56739998, 13.8887997}, //
+
25444 {5.56813002, 13.8895798}, //
+
25445 {5.56883001, 13.8903999}, //
+
25446 {5.56947994, 13.8912601}, //
+
25447 {5.57008982, 13.8921604}, //
+
25448 {5.5706501, 13.8930998}, //
+
25449 {5.57117987, 13.8940897}, //
+
25450 {5.57166004, 13.8951197}, //
+
25451 {5.57210016, 13.8961897}, //
+
25452 {5.57250023, 13.8972998}, //
+
25453 {5.57284021, 13.8983698}, //
+
25454 {5.57309008, 13.8993101}, //
+
25455 {5.57325983, 13.9001303}, //
+
25456 {5.57333994, 13.9008303}, //
+
25457 {5.57333994, 13.9013901}, //
+
25458 {5.57325983, 13.9018297}, //
+
25459 {5.57309008, 13.9021502}, //
+
25460 {5.57284021, 13.9023399}, //
+
25461 {5.57250023, 13.9024}, //
+
25462 {5.57206011, 13.90236}, //
+
25463 {5.57148981, 13.9022303}, //
+
25464 {5.57079983, 13.9020205}, //
+
25465 {5.56998014, 13.9017296}, //
+
25466 {5.56903982, 13.90135}, //
+
25467 {5.5679698, 13.9008904}, //
+
25468 {5.56677008, 13.9003401}, //
+
25469 {5.56545019, 13.8997097}, //
+
25470 {5.56400013, 13.8990002}, //
+
25471 {5.56252003, 13.8982401}, //
+
25472 {5.56107998, 13.8974895}, //
+
25473 {5.55967999, 13.8967304}, //
+
25474 {5.55833006, 13.8959799}, //
+
25475 {5.55701017, 13.8952198}, //
+
25476 {5.55572987, 13.8944702}, //
+
25477 {5.5545001, 13.8937101}, //
+
25478 {5.5532999, 13.8929596}, //
+
25479 {5.55214977, 13.8922005}, //
+
25480 {5.55104017, 13.89149}, //
+
25481 {5.54997015, 13.8908596}, //
+
25482 {5.54894018, 13.8903103}, //
+
25483 {5.54794979, 13.8898497}, //
+
25484 {5.54700994, 13.8894701}, //
+
25485 {5.54611015, 13.8891802}, //
+
25486 {5.54524994, 13.8889704}, //
+
25487 {5.54442978, 13.8888397}, //
+
25488 {5.54365015, 13.8887997}, //
+
25489 {5.54299021, 13.8888397}, //
+
25490 {5.54249001, 13.8889704}, //
+
25491 {5.54216003, 13.8891802}, //
+
25492 {5.54199982, 13.8894701}, //
+
25493 {5.54199982, 13.8898497}, //
+
25494 {5.54216003, 13.8903103}, //
+
25495 {5.54249001, 13.8908596}, //
+
25496 {5.54299021, 13.89149}, //
+
25497 {5.54365015, 13.8922005}, //
+
25498 {5.54448986, 13.8930397}, //
+
25499 {5.5454998, 13.8940401}, //
+
25500 {5.54666996, 13.8952198}, //
+
25501 {5.54801989, 13.8965597}, //
+
25502 {5.54953003, 13.8980598}, //
+
25503 {5.55120993, 13.8997297}, //
+
25504 {5.55305004, 13.9015703}, //
+
25505 {5.55506992, 13.9035797}, //
+
25506 {5.55725002, 13.9057503}, //
+
25507 {5.56024981, 13.9087696}, //
+
25508 {5.56175995, 13.9102802}, //
+
25509 {5.56326008, 13.9117899}, //
+
25510 {5.56477022, 13.9133101}, //
+
25511 {5.56626987, 13.9148197}, //
+
25512 {5.57079983, 13.9193497}, //
+
25513 {5.57652998, 13.9258804}, //
+
25514 {5.58166981, 13.9319}, //
+
25515 {5.5862298, 13.9374199}, //
+
25516 {5.59020996, 13.94244}, //
+
25517 {5.5935998, 13.9469604}, //
+
25518 {5.59639978, 13.9509697}, //
+
25519 {5.59861994, 13.9544802}, //
+
25520 {5.60024977, 13.95749}, //
+
25521 {5.60129976, 13.96}, //
+
25522 {5.6019702, 13.9607801}, //
+
25523 {5.60247993, 13.9616003}, //
+
25524 {5.60280991, 13.9624596}, //
+
25525 {5.60298014, 13.9633598}, //
+
25526 {5.60298014, 13.9643002}, //
+
25527 {5.60280991, 13.9652901}, //
+
25528 {5.60247993, 13.96632}, //
+
25529 {5.6019702, 13.9673901}, //
+
25530 {5.60129976, 13.9685001}, //
+
25531 {5.60055017, 13.9695702}, //
+
25532 {5.5997901, 13.9705095}, //
+
25533 {5.59904003, 13.9713297}, //
+
25534 {5.59828997, 13.9720297}, //
+
25535 {5.5975399, 13.9725904}, //
+
25536 {5.59678984, 13.9730301}, //
+
25537 {5.59603977, 13.9733496}, //
+
25538 {5.5953002, 13.9735403}, //
+
25539 {5.59455013, 13.9736004}, //
+
25540 {5.59447002, 13.9736795}, //
+
25541 {5.59435987, 13.9737797}, //
+
25542 {5.59321022, 13.9749002}, //
+
25543 {5.59285021, 13.9752502}, //
+
25544 {5.58094978, 13.9871502}, //
+
25545 {5.5802002, 13.9878597}, //
+
25546 {5.57946014, 13.9884901}, //
+
25547 {5.57871008, 13.9890404}, //
+
25548 {5.57796001, 13.9895}, //
+
25549 {5.57720995, 13.9898796}, //
+
25550 {5.57645988, 13.9901695}, //
+
25551 {5.57570982, 13.9903803}, //
+
25552 {5.57495022, 13.99051}, //
+
25553 {5.57420015, 13.99055}, //
+
25554 {5.57344007, 13.9898396}, //
+
25555 {5.57269001, 13.9892101}, //
+
25556 {5.57192993, 13.9886599}, //
+
25557 {5.57117987, 13.9882002}, //
+
25558 {5.57041979, 13.9878197}, //
+
25559 {5.5696702, 13.9875298}, //
+
25560 {5.56891012, 13.9873199}, //
+
25561 {5.56816006, 13.9871902}, //
+
25562 {5.56739998, 13.9871502}, //
+
25563 {5.56589985, 13.9871302}, //
+
25564 {5.5644002, 13.9870701}, //
+
25565 {5.56289005, 13.9869604}, //
+
25566 {5.56138992, 13.9868097}, //
+
25567 {5.55987978, 13.9866304}, //
+
25568 {5.55838013, 13.9863901}, //
+
25569 {5.55686998, 13.9861202}, //
+
25570 {5.55535984, 13.9858103}, //
+
25571 {5.55385017, 13.9854498}, //
+
25572 {5.55234003, 13.9850903}, //
+
25573 {5.55082989, 13.9847803}, //
+
25574 {5.54932022, 13.9845104}, //
+
25575 {5.54782009, 13.9842701}, //
+
25576 {5.54630995, 13.9840899}, //
+
25577 {5.54480982, 13.9839401}, //
+
25578 {5.54330015, 13.9838305}, //
+
25579 {5.54180002, 13.9837704}, //
+
25580 {5.54029989, 13.9837503}, //
+
25581 {5.54182005, 13.9844999}, //
+
25582 {5.54337978, 13.98526}, //
+
25583 {5.54499006, 13.9860096}, //
+
25584 {5.54663992, 13.9867601}, //
+
25585 {5.54831982, 13.9875097}, //
+
25586 {5.5500598, 13.9882603}, //
+
25587 {5.55182981, 13.9890099}, //
+
25588 {5.55363989, 13.9897499}, //
+
25589 {5.55550003, 13.9905005}, //
+
25590 {5.55735016, 13.9912796}, //
+
25591 {5.55911016, 13.9920998}, //
+
25592 {5.56079006, 13.99296}, //
+
25593 {5.56237984, 13.9938602}, //
+
25594 {5.56389999, 13.9947996}, //
+
25595 {5.56532001, 13.9957895}, //
+
25596 {5.56666994, 13.9968204}, //
+
25597 {5.56792021, 13.9978905}, //
+
25598 {5.5690999, 13.9989996}, //
+
25599 {5.57420015, 14.0040998}, //
+
25600 {5.57420015, 14.0007}, //
+
25601 {5.57422018, 13.9999704}, //
+
25602 {5.57427979, 13.9992704}, //
+
25603 {5.57438993, 13.99862}, //
+
25604 {5.57454014, 13.9980097}, //
+
25605 {5.57471991, 13.9974499}, //
+
25606 {5.57496023, 13.9969196}, //
+
25607 {5.57523012, 13.9964399}, //
+
25608 {5.57554007, 13.9960003}, //
+
25609 {5.57590008, 13.9955997}, //
+
25610 {5.57628012, 13.9952002}, //
+
25611 {5.57665014, 13.9947596}, //
+
25612 {5.57703018, 13.9942799}, //
+
25613 {5.57740021, 13.9937496}, //
+
25614 {5.57777023, 13.9931898}, //
+
25615 {5.57813978, 13.9925804}, //
+
25616 {5.57850981, 13.99193}, //
+
25617 {5.57887983, 13.99123}, //
+
25618 {5.57924986, 13.9905005}, //
+
25619 {5.57960987, 13.9898005}, //
+
25620 {5.58019018, 13.9886398}, //
+
25621 {5.58043003, 13.9881802}, //
+
25622 {5.58076, 13.9875202}, //
+
25623 {5.58087015, 13.9873199}, //
+
25624 {5.58093023, 13.9871902}, //
+
25625 {5.58094978, 13.9871502}, //
+
25626 {5.58605003, 13.9871502}, //
+
25627 {5.58641005, 13.9871302}, //
+
25628 {5.58671999, 13.9870701}, //
+
25629 {5.58698988, 13.9869604}, //
+
25630 {5.58723021, 13.9868097}, //
+
25631 {5.58740997, 13.9866304}, //
+
25632 {5.58756018, 13.9863901}, //
+
25633 {5.58766985, 13.9861202}, //
+
25634 {5.58772993, 13.9858103}, //
+
25635 {5.58774996, 13.9854498}, //
+
25636 {5.58774996, 13.9837503}, //
+
25637 {5.59285021, 13.9786501}, //
+
25638 {5.5932498, 13.9782896}, //
+
25639 {5.59368992, 13.9779797}, //
+
25640 {5.59417009, 13.9777098}, //
+
25641 {5.59468985, 13.9774704}, //
+
25642 {5.59525013, 13.9772902}, //
+
25643 {5.59584999, 13.9771404}, //
+
25644 {5.59648991, 13.9770298}, //
+
25645 {5.59717989, 13.9769697}, //
+
25646 {5.59789991, 13.9769497}, //
+
25647 {5.60809994, 13.9769497}, //
+
25648 {5.60809994, 13.9736004}, //
+
25649 {5.60952997, 13.9720297}, //
+
25650 {5.61078978, 13.9703302}, //
+
25651 {5.61187983, 13.9685001}, //
+
25652 {5.61280012, 13.9665499}, //
+
25653 {5.6135602, 13.9644699}, //
+
25654 {5.61414003, 13.9622698}, //
+
25655 {5.61456013, 13.95994}, //
+
25656 {5.61482, 13.9574804}, //
+
25657 {5.61490011, 13.9548998}, //
+
25658 {5.61482, 13.9523697}, //
+
25659 {5.61456013, 13.9500504}, //
+
25660 {5.61414003, 13.9479399}, //
+
25661 {5.6135602, 13.9460402}, //
+
25662 {5.61280012, 13.9443398}, //
+
25663 {5.61187983, 13.9428596}, //
+
25664 {5.61078978, 13.9415798}, //
+
25665 {5.60952997, 13.9405098}, //
+
25666 {5.60809994, 13.9396496}, //
+
25667 {5.6072998, 13.9381304}, //
+
25668 {5.60642004, 13.9365597}, //
+
25669 {5.60546017, 13.9349604}, //
+
25670 {5.60441017, 13.9333}, //
+
25671 {5.60327005, 13.9316101}, //
+
25672 {5.60205984, 13.9298697}, //
+
25673 {5.60074997, 13.9280901}, //
+
25674 {5.59937, 13.9262695}, //
+
25675 {5.59789991, 13.9244003}, //
+
25676 {5.59639978, 13.9225798}, //
+
25677 {5.59490013, 13.9208899}, //
+
25678 {5.59338999, 13.9193296}, //
+
25679 {5.59188986, 13.9178896}, //
+
25680 {5.59038019, 13.9165697}, //
+
25681 {5.58888006, 13.9153795}, //
+
25682 {5.58736992, 13.9143105}, //
+
25683 {5.58585978, 13.9133701}, //
+
25684 {5.58435011, 13.91255}, //
+
25685 {5.58431005, 13.9117699}, //
+
25686 {5.58417988, 13.9109497}, //
+
25687 {5.58397007, 13.9100904}, //
+
25688 {5.58368015, 13.9091902}, //
+
25689 {5.58330011, 13.9082499}, //
+
25690 {5.58283997, 13.9072599}, //
+
25691 {5.58229017, 13.90623}, //
+
25692 {5.58165979, 13.90516}, //
+
25693 {5.58094978, 13.9040499}, //
+
25694 {5.5802002, 13.9028597}, //
+
25695 {5.57946014, 13.9015503}, //
+
25696 {5.57871008, 13.9001102}, //
+
25697 {5.57796001, 13.8985395}, //
+
25698 {5.57720995, 13.8968496}, //
+
25699 {5.57645988, 13.89503}, //
+
25700 {5.57570982, 13.8930798}, //
+
25701 {5.57495022, 13.8909998}, //
+
25702 {5.57420015, 13.8887997}, //
+
25703 {5.57344007, 13.8872805}, //
+
25704 {5.57269001, 13.8857098}, //
+
25705 {5.57192993, 13.8841105}, //
+
25706 {5.57117987, 13.8824501}, //
+
25707 {5.57041979, 13.8807602}, //
+
25708 {5.5696702, 13.8790197}, //
+
25709 {5.56891012, 13.8772402}, //
+
25710 {5.56816006, 13.8754196}, //
+
25711 {5.56739998, 13.8735504}, //
+
25712 {5.56668997, 13.8717299}, //
+
25713 {5.56606007, 13.8700399}, //
+
25714 {5.5655098, 13.8684797}, //
+
25715 {5.56505013, 13.8670397}, //
+
25716 {5.56467009, 13.8657198}, //
+
25717 {5.56438017, 13.8645296}, //
+
25718 {5.56416988, 13.8634596}, //
+
25719 {5.56404018, 13.8625202}, //
+
25720 {5.56400013, 13.8617001}, //
+
25721 {5.56321001, 13.86094}, //
+
25722 {5.56233978, 13.8601904}, //
+
25723 {5.56137991, 13.8594303}, //
+
25724 {5.56033993, 13.8586798}, //
+
25725 {5.55920982, 13.8579197}, //
+
25726 {5.55800009, 13.8571701}, //
+
25727 {5.55670023, 13.85641}, //
+
25728 {5.55531979, 13.8556604}, //
+
25729 {5.55385017, 13.8549004}, //
+
25730 {5.55000019, 13.8524799}, //
+
25731 {5.54597998, 13.84972}, //
+
25732 {5.54179001, 13.8466196}, //
+
25733 {5.53743982, 13.8431902}, //
+
25734 {5.53291988, 13.8394203}, //
+
25735 {5.52823019, 13.8353205}, //
+
25736 {5.52336979, 13.8308802}, //
+
25737 {5.51834011, 13.8261099}, //
+
25738 {5.51315022, 13.8210001}, //
+
25739 {5.51029015, 13.8181601}, //
+
25740 {5.50770998, 13.81565}, //
+
25741 {5.50543022, 13.8134699}, //
+
25742 {5.50344992, 13.8116302}, //
+
25743 {5.50174999, 13.8101301}, //
+
25744 {5.50035, 13.80896}, //
+
25745 {5.49923992, 13.8081198}, //
+
25746 {5.49841976, 13.80762}, //
+
25747 {5.49790001, 13.8074503}, //
+
25748 });
+
25749 polys.push_back({
+
25750 {5.58574009, 13.8515396}, //
+
25751 {5.58554983, 13.8516703}, //
+
25752 {5.58548021, 13.8518801}, //
+
25753 {5.58554983, 13.85217}, //
+
25754 {5.58574009, 13.8525496}, //
+
25755 {5.58605003, 13.8530102}, //
+
25756 {5.58649015, 13.8535604}, //
+
25757 {5.58705997, 13.8541899}, //
+
25758 {5.58774996, 13.8549004}, //
+
25759 {5.5892601, 13.8564301}, //
+
25760 {5.59076977, 13.8579998}, //
+
25761 {5.59227991, 13.8596201}, //
+
25762 {5.59378004, 13.86127}, //
+
25763 {5.59529018, 13.8629599}, //
+
25764 {5.59678984, 13.8647003}, //
+
25765 {5.59829998, 13.8664799}, //
+
25766 {5.59980011, 13.8682899}, //
+
25767 {5.60129976, 13.8701496}, //
+
25768 {5.60284996, 13.8719797}, //
+
25769 {5.6044898, 13.8736801}, //
+
25770 {5.60621023, 13.8752499}, //
+
25771 {5.60800982, 13.8767004}, //
+
25772 {5.60988998, 13.8780203}, //
+
25773 {5.6118598, 13.87922}, //
+
25774 {5.61390018, 13.88029}, //
+
25775 {5.61604023, 13.8812304}, //
+
25776 {5.61824989, 13.8820496}, //
+
25777 {5.62047005, 13.8842201}, //
+
25778 {5.62261009, 13.8862305}, //
+
25779 {5.62467003, 13.8880701}, //
+
25780 {5.62663984, 13.88974}, //
+
25781 {5.62852001, 13.8912401}, //
+
25782 {5.63032007, 13.89258}, //
+
25783 {5.63203001, 13.8937597}, //
+
25784 {5.63365984, 13.8947601}, //
+
25785 {5.63520002, 13.8956003}, //
+
25786 {5.63593006, 13.8963804}, //
+
25787 {5.63663006, 13.8971901}, //
+
25788 {5.63727999, 13.8980503}, //
+
25789 {5.63788986, 13.8989496}, //
+
25790 {5.63845015, 13.8998899}, //
+
25791 {5.63897991, 13.9008703}, //
+
25792 {5.63946009, 13.9018898}, //
+
25793 {5.63990021, 13.9029503}, //
+
25794 {5.6402998, 13.9040499}, //
+
25795 {5.64063978, 13.9051399}, //
+
25796 {5.64089012, 13.9061499}, //
+
25797 {5.64105988, 13.9070702}, //
+
25798 {5.64113998, 13.9079103}, //
+
25799 {5.64113998, 13.9086704}, //
+
25800 {5.64105988, 13.9093399}, //
+
25801 {5.64089012, 13.9099302}, //
+
25802 {5.64063978, 13.91043}, //
+
25803 {5.6402998, 13.9108496}, //
+
25804 {5.63986015, 13.9111605}, //
+
25805 {5.63929987, 13.9113503}, //
+
25806 {5.63860989, 13.9114199}, //
+
25807 {5.6377902, 13.9113503}, //
+
25808 {5.63684988, 13.9111605}, //
+
25809 {5.63578987, 13.9108496}, //
+
25810 {5.63460016, 13.9104099}, //
+
25811 {5.63328981, 13.9098396}, //
+
25812 {5.63184977, 13.9091501}, //
+
25813 {5.63038015, 13.9077301}, //
+
25814 {5.62900019, 13.9064798}, //
+
25815 {5.62768984, 13.9054003}, //
+
25816 {5.6264801, 13.90448}, //
+
25817 {5.62533998, 13.9037304}, //
+
25818 {5.62428999, 13.9031496}, //
+
25819 {5.62333012, 13.90273}, //
+
25820 {5.62244987, 13.9024801}, //
+
25821 {5.62165022, 13.9024}, //
+
25822 {5.62094021, 13.90242}, //
+
25823 {5.62030983, 13.9024801}, //
+
25824 {5.61976004, 13.9025803}, //
+
25825 {5.61929989, 13.90273}, //
+
25826 {5.61891985, 13.9029102}, //
+
25827 {5.61862993, 13.9031296}, //
+
25828 {5.61842012, 13.9034004}, //
+
25829 {5.61828995, 13.9036999}, //
+
25830 {5.61824989, 13.9040499}, //
+
25831 {5.61828995, 13.9044104}, //
+
25832 {5.61842012, 13.9047203}, //
+
25833 {5.61862993, 13.9049902}, //
+
25834 {5.61891985, 13.9052296}, //
+
25835 {5.61929989, 13.9054098}, //
+
25836 {5.61976004, 13.9055595}, //
+
25837 {5.62030983, 13.9056702}, //
+
25838 {5.62094021, 13.9057302}, //
+
25839 {5.62165022, 13.9057503}, //
+
25840 {5.6216898, 13.9064798}, //
+
25841 {5.62181997, 13.9071798}, //
+
25842 {5.62202978, 13.9078302}, //
+
25843 {5.62232018, 13.9084396}, //
+
25844 {5.62270021, 13.9090004}, //
+
25845 {5.62315989, 13.9095297}, //
+
25846 {5.62371016, 13.9100103}, //
+
25847 {5.62434006, 13.91045}, //
+
25848 {5.62505007, 13.9108496}, //
+
25849 {5.62576008, 13.9112101}, //
+
25850 {5.62638998, 13.91152}, //
+
25851 {5.62693977, 13.9117899}, //
+
25852 {5.62739992, 13.9120302}, //
+
25853 {5.62777996, 13.9122105}, //
+
25854 {5.62806988, 13.9123602}, //
+
25855 {5.62828016, 13.9124699}, //
+
25856 {5.62840986, 13.9125299}, //
+
25857 {5.62844992, 13.91255}, //
+
25858 {5.62844992, 13.9142504}, //
+
25859 {5.62842989, 13.9145899}, //
+
25860 {5.62836981, 13.9148397}, //
+
25861 {5.62826014, 13.9150105}, //
+
25862 {5.62810993, 13.9150896}, //
+
25863 {5.62793016, 13.9150896}, //
+
25864 {5.62768984, 13.9150105}, //
+
25865 {5.62741995, 13.9148397}, //
+
25866 {5.62711, 13.9145899}, //
+
25867 {5.62674999, 13.9142504}, //
+
25868 {5.62626982, 13.9138498}, //
+
25869 {5.62557983, 13.9134102}, //
+
25870 {5.62468004, 13.9129295}, //
+
25871 {5.62356997, 13.9124002}, //
+
25872 {5.62225008, 13.9118404}, //
+
25873 {5.62072992, 13.9112301}, //
+
25874 {5.61898994, 13.9105797}, //
+
25875 {5.61705017, 13.9098797}, //
+
25876 {5.61490011, 13.9091501}, //
+
25877 {5.60720015, 13.9064302}, //
+
25878 {5.60066986, 13.9042997}, //
+
25879 {5.59531021, 13.90275}, //
+
25880 {5.59111977, 13.9017897}, //
+
25881 {5.58809996, 13.9014101}, //
+
25882 {5.58625984, 13.9016199}, //
+
25883 {5.58557987, 13.9024096}, //
+
25884 {5.58608007, 13.9037905}, //
+
25885 {5.58774996, 13.9057503}, //
+
25886 {5.58922005, 13.9065104}, //
+
25887 {5.59060001, 13.9072599}, //
+
25888 {5.59189987, 13.90802}, //
+
25889 {5.59311008, 13.9087696}, //
+
25890 {5.59424019, 13.9095297}, //
+
25891 {5.59528017, 13.9102802}, //
+
25892 {5.59624004, 13.9110403}, //
+
25893 {5.59710979, 13.9117899}, //
+
25894 {5.59789991, 13.91255}, //
+
25895 {5.59932995, 13.9139795}, //
+
25896 {5.60115004, 13.9158001}, //
+
25897 {5.60215998, 13.91681}, //
+
25898 {5.60470009, 13.9193497}, //
+
25899 {5.60762978, 13.9208498}, //
+
25900 {5.61039019, 13.9223499}, //
+
25901 {5.61297989, 13.9238501}, //
+
25902 {5.61540985, 13.9253502}, //
+
25903 {5.61767006, 13.9268503}, //
+
25904 {5.61977005, 13.9283504}, //
+
25905 {5.6216898, 13.9298496}, //
+
25906 {5.62345982, 13.9313498}, //
+
25907 {5.62505007, 13.9328499}, //
+
25908 {5.62652016, 13.9343596}, //
+
25909 {5.62790012, 13.9358702}, //
+
25910 {5.62919998, 13.9373798}, //
+
25911 {5.63041019, 13.9388905}, //
+
25912 {5.63153982, 13.9404097}, //
+
25913 {5.6325798, 13.9419203}, //
+
25914 {5.63354015, 13.9434299}, //
+
25915 {5.6344099, 13.9449396}, //
+
25916 {5.63520002, 13.9464502}, //
+
25917 {5.63593006, 13.9485903}, //
+
25918 {5.63663006, 13.9504805}, //
+
25919 {5.63727999, 13.9521198}, //
+
25920 {5.63788986, 13.9534998}, //
+
25921 {5.63845015, 13.9546404}, //
+
25922 {5.63897991, 13.9555197}, //
+
25923 {5.63946009, 13.9561501}, //
+
25924 {5.63990021, 13.9565201}, //
+
25925 {5.6402998, 13.9566498}, //
+
25926 {5.6420002, 13.9566498}, //
+
25927 {5.64196014, 13.9544697}, //
+
25928 {5.64182997, 13.9524498}, //
+
25929 {5.64162016, 13.9506102}, //
+
25930 {5.64132977, 13.9489298}, //
+
25931 {5.6409502, 13.9474201}, //
+
25932 {5.64049006, 13.9460697}, //
+
25933 {5.63993979, 13.9448996}, //
+
25934 {5.63930988, 13.9438896}, //
+
25935 {5.63859987, 13.9430504}, //
+
25936 {5.63788986, 13.9422998}, //
+
25937 {5.63725996, 13.9415398}, //
+
25938 {5.63671017, 13.9407902}, //
+
25939 {5.63625002, 13.9400396}, //
+
25940 {5.63586998, 13.93929}, //
+
25941 {5.63558006, 13.9385405}, //
+
25942 {5.63536978, 13.9377899}, //
+
25943 {5.63524008, 13.9370499}, //
+
25944 {5.63520002, 13.9363003}, //
+
25945 {5.63448, 13.9348497}, //
+
25946 {5.63379002, 13.9335299}, //
+
25947 {5.6331501, 13.9323301}, //
+
25948 {5.63254976, 13.9312601}, //
+
25949 {5.63198996, 13.9303198}, //
+
25950 {5.6314702, 13.9294996}, //
+
25951 {5.63099003, 13.9288101}, //
+
25952 {5.63054991, 13.9282398}, //
+
25953 {5.63014984, 13.9278002}, //
+
25954 {5.62987995, 13.9274902}, //
+
25955 {5.62980986, 13.9273005}, //
+
25956 {5.62996006, 13.9272299}, //
+
25957 {5.63031006, 13.9273005}, //
+
25958 {5.63086987, 13.9274902}, //
+
25959 {5.63163996, 13.9278002}, //
+
25960 {5.63261986, 13.9282398}, //
+
25961 {5.63380003, 13.9288101}, //
+
25962 {5.63520002, 13.9294996}, //
+
25963 {5.63671017, 13.9309702}, //
+
25964 {5.63821983, 13.9323502}, //
+
25965 {5.63972998, 13.93365}, //
+
25966 {5.64124012, 13.9348602}, //
+
25967 {5.6427598, 13.9359903}, //
+
25968 {5.64426994, 13.9370298}, //
+
25969 {5.64578009, 13.9379902}, //
+
25970 {5.64729023, 13.9388599}, //
+
25971 {5.6487999, 13.9396496}, //
+
25972 {5.65025997, 13.9403801}, //
+
25973 {5.65162992, 13.9410801}, //
+
25974 {5.65292978, 13.9417295}, //
+
25975 {5.65414, 13.9423399}, //
+
25976 {5.6552701, 13.9428997}, //
+
25977 {5.65631008, 13.9434299}, //
+
25978 {5.65726995, 13.9439096}, //
+
25979 {5.6581502, 13.9443502}, //
+
25980 {5.65894985, 13.9447498}, //
+
25981 {5.65961981, 13.9450598}, //
+
25982 {5.66013002, 13.9452496}, //
+
25983 {5.66046, 13.9453201}, //
+
25984 {5.66063023, 13.9452496}, //
+
25985 {5.66063023, 13.9450598}, //
+
25986 {5.66046, 13.9447498}, //
+
25987 {5.66013002, 13.9443102}, //
+
25988 {5.65961981, 13.9437399}, //
+
25989 {5.65894985, 13.9430504}, //
+
25990 {5.65818977, 13.9415503}, //
+
25991 {5.65744019, 13.9400501}, //
+
25992 {5.65668011, 13.9385405}, //
+
25993 {5.65593004, 13.9370403}, //
+
25994 {5.65516996, 13.9355297}, //
+
25995 {5.6544199, 13.9340296}, //
+
25996 {5.65365982, 13.9325199}, //
+
25997 {5.65291023, 13.9310102}, //
+
25998 {5.65215015, 13.9294996}, //
+
25999 {5.65145016, 13.9287395}, //
+
26000 {5.65082979, 13.92799}, //
+
26001 {5.65029001, 13.9272299}, //
+
26002 {5.64982986, 13.9264803}, //
+
26003 {5.64945984, 13.9257202}, //
+
26004 {5.64916992, 13.9249697}, //
+
26005 {5.64897013, 13.9242096}, //
+
26006 {5.64883995, 13.92346}, //
+
26007 {5.6487999, 13.9226999}, //
+
26008 {5.64883995, 13.9219999}, //
+
26009 {5.64897013, 13.92138}, //
+
26010 {5.64916992, 13.9208403}, //
+
26011 {5.64945984, 13.9203796}, //
+
26012 {5.64982986, 13.9200096}, //
+
26013 {5.65029001, 13.9197197}, //
+
26014 {5.65082979, 13.9195204}, //
+
26015 {5.65145016, 13.9193897}, //
+
26016 {5.65215015, 13.9193497}, //
+
26017 {5.65292978, 13.9193697}, //
+
26018 {5.65374994, 13.9194298}, //
+
26019 {5.65461016, 13.9195299}, //
+
26020 {5.65550995, 13.9196796}, //
+
26021 {5.65644979, 13.9198599}, //
+
26022 {5.65744019, 13.9200802}, //
+
26023 {5.65847015, 13.9203501}, //
+
26024 {5.65954018, 13.9206495}, //
+
26025 {5.66064978, 13.9209995}, //
+
26026 {5.6634798, 13.9219398}, //
+
26027 {5.6641798, 13.9221802}, //
+
26028 {5.66474009, 13.9223604}, //
+
26029 {5.66518021, 13.9225101}, //
+
26030 {5.66575003, 13.9226999}, //
+
26031 {5.66648006, 13.9233904}, //
+
26032 {5.66717005, 13.9239597}, //
+
26033 {5.66781998, 13.9244003}, //
+
26034 {5.66842985, 13.9247103}, //
+
26035 {5.66899014, 13.9249001}, //
+
26036 {5.66950989, 13.9249697}, //
+
26037 {5.66998005, 13.9249001}, //
+
26038 {5.67041016, 13.9247103}, //
+
26039 {5.67080021, 13.9244003}, //
+
26040 {5.67112017, 13.9240398}, //
+
26041 {5.67130995, 13.9237299}, //
+
26042 {5.67137003, 13.92346}, //
+
26043 {5.67130995, 13.9232197}, //
+
26044 {5.67113018, 13.9230404}, //
+
26045 {5.67082024, 13.9228897}, //
+
26046 {5.67039013, 13.92278}, //
+
26047 {5.66982985, 13.92272}, //
+
26048 {5.66914988, 13.9226999}, //
+
26049 {5.6683898, 13.9211998}, //
+
26050 {5.66764021, 13.9196997}, //
+
26051 {5.66688013, 13.91819}, //
+
26052 {5.66613007, 13.9166899}, //
+
26053 {5.66536999, 13.9151802}, //
+
26054 {5.66461992, 13.9136801}, //
+
26055 {5.66385984, 13.9121704}, //
+
26056 {5.66310978, 13.9106598}, //
+
26057 {5.66235018, 13.9091501}, //
+
26058 {5.66162014, 13.90837}, //
+
26059 {5.66092014, 13.9075499}, //
+
26060 {5.66027021, 13.9066896}, //
+
26061 {5.65965986, 13.9057903}, //
+
26062 {5.65910006, 13.90485}, //
+
26063 {5.65856981, 13.9038601}, //
+
26064 {5.65809011, 13.9028301}, //
+
26065 {5.65764999, 13.9017601}, //
+
26066 {5.65724993, 13.90065}, //
+
26067 {5.65680981, 13.8995104}, //
+
26068 {5.65625, 13.8983202}, //
+
26069 {5.65556002, 13.89709}, //
+
26070 {5.65473986, 13.8958197}, //
+
26071 {5.65380001, 13.8944998}, //
+
26072 {5.65274, 13.8931398}, //
+
26073 {5.65154982, 13.8917398}, //
+
26074 {5.65023994, 13.8902903}, //
+
26075 {5.6487999, 13.8887997}, //
+
26076 {5.64658022, 13.8873396}, //
+
26077 {5.64444017, 13.8859701}, //
+
26078 {5.64238024, 13.8846703}, //
+
26079 {5.64040995, 13.88346}, //
+
26080 {5.63852978, 13.8823299}, //
+
26081 {5.63673019, 13.8812904}, //
+
26082 {5.63501978, 13.8803301}, //
+
26083 {5.63338995, 13.8794498}, //
+
26084 {5.63184977, 13.8786497}, //
+
26085 {5.63038015, 13.8778896}, //
+
26086 {5.62900019, 13.87714}, //
+
26087 {5.62768984, 13.87638}, //
+
26088 {5.6264801, 13.8756304}, //
+
26089 {5.62533998, 13.8748703}, //
+
26090 {5.62428999, 13.8741198}, //
+
26091 {5.62333012, 13.8733597}, //
+
26092 {5.62244987, 13.8726101}, //
+
26093 {5.62165022, 13.87185}, //
+
26094 {5.62157011, 13.87041}, //
+
26095 {5.62131023, 13.8690996}, //
+
26096 {5.62089014, 13.8679104}, //
+
26097 {5.62030983, 13.8668499}, //
+
26098 {5.61955023, 13.8659096}, //
+
26099 {5.61862993, 13.8650904}, //
+
26100 {5.61753988, 13.8643999}, //
+
26101 {5.61628008, 13.8638401}, //
+
26102 {5.61485004, 13.8634005}, //
+
26103 {5.61336994, 13.8629999}, //
+
26104 {5.61192989, 13.8625603}, //
+
26105 {5.6105299, 13.8620796}, //
+
26106 {5.60917997, 13.8615503}, //
+
26107 {5.60786009, 13.8609896}, //
+
26108 {5.60657978, 13.8603802}, //
+
26109 {5.60535002, 13.8597298}, //
+
26110 {5.60414982, 13.8590298}, //
+
26111 {5.60300016, 13.8583002}, //
+
26112 {5.60187006, 13.8575697}, //
+
26113 {5.60072994, 13.8568697}, //
+
26114 {5.59959984, 13.8562202}, //
+
26115 {5.59847021, 13.8556099}, //
+
26116 {5.59733009, 13.8550501}, //
+
26117 {5.59619999, 13.8545198}, //
+
26118 {5.59506989, 13.8540401}, //
+
26119 {5.59392977, 13.8535995}, //
+
26120 {5.59280014, 13.8532}, //
+
26121 {5.5917201, 13.8528404}, //
+
26122 {5.59072018, 13.8525295}, //
+
26123 {5.58980989, 13.8522596}, //
+
26124 {5.58897018, 13.8520203}, //
+
26125 {5.58822012, 13.85184}, //
+
26126 {5.58756018, 13.8516903}, //
+
26127 {5.58696985, 13.8515797}, //
+
26128 {5.58647013, 13.8515196}, //
+
26129 {5.58605003, 13.8514996}, //
+
26130 });
+
26131 polys.push_back({
+
26132 {5.83163023, 13.24827}, //
+
26133 {5.83206987, 13.2488003}, //
+
26134 {5.83210993, 13.2489901}, //
+
26135 {5.83273983, 13.2504301}, //
+
26136 {5.83377981, 13.2523298}, //
+
26137 {5.8352499, 13.2546997}, //
+
26138 {5.83713007, 13.2575197}, //
+
26139 {5.83796978, 13.2587099}, //
+
26140 {5.80296993, 13.2873497}, //
+
26141 {5.80172014, 13.2892399}, //
+
26142 {5.79994011, 13.2918797}, //
+
26143 {5.79812002, 13.2945204}, //
+
26144 {5.79624987, 13.2971497}, //
+
26145 {5.79437017, 13.2997398}, //
+
26146 {5.79249001, 13.3022499}, //
+
26147 {5.79060984, 13.3046703}, //
+
26148 {5.78873014, 13.3070097}, //
+
26149 {5.78684998, 13.3092699}, //
+
26150 {5.78495979, 13.3114405}, //
+
26151 {5.7830801, 13.31353}, //
+
26152 {5.78118992, 13.3155298}, //
+
26153 {5.77930021, 13.3174496}, //
+
26154 {5.77595997, 13.3208103}, //
+
26155 {5.77461004, 13.3221703}, //
+
26156 {5.77179003, 13.3250103}, //
+
26157 {5.77085018, 13.3259497}, //
+
26158 {5.78779984, 13.3327503}, //
+
26159 {5.78797007, 13.3329}, //
+
26160 {5.78846979, 13.3333397}, //
+
26161 {5.79048014, 13.3350897}, //
+
26162 {5.7938199, 13.3380203}, //
+
26163 {5.796, 13.33992}, //
+
26164 {5.79851007, 13.3421097}, //
+
26165 {5.80135012, 13.3445997}, //
+
26166 {5.80439997, 13.3472404}, //
+
26167 {5.80753994, 13.3498898}, //
+
26168 {5.81076002, 13.3525295}, //
+
26169 {5.81407022, 13.3551702}, //
+
26170 {5.81745005, 13.35781}, //
+
26171 {5.82093, 13.3604403}, //
+
26172 {5.82448006, 13.36308}, //
+
26173 {5.82812977, 13.3657198}, //
+
26174 {5.83185005, 13.36835}, //
+
26175 {5.83564997, 13.3709602}, //
+
26176 {5.83948994, 13.3735304}, //
+
26177 {5.84336996, 13.3760595}, //
+
26178 {5.84729004, 13.3785496}, //
+
26179 {5.85125017, 13.38099}, //
+
26180 {5.85524988, 13.3833904}, //
+
26181 {5.85929012, 13.3857498}, //
+
26182 {5.86337996, 13.3880701}, //
+
26183 {5.86749983, 13.3903503}, //
+
26184 {5.87154007, 13.3925304}, //
+
26185 {5.87537003, 13.3945503}, //
+
26186 {5.87899017, 13.39639}, //
+
26187 {5.88240004, 13.3980703}, //
+
26188 {5.88560009, 13.39958}, //
+
26189 {5.88858986, 13.4009304}, //
+
26190 {5.89136982, 13.4020996}, //
+
26191 {5.89393997, 13.4031096}, //
+
26192 {5.89629984, 13.4039497}, //
+
26193 {5.89856005, 13.4047499}, //
+
26194 {5.90080976, 13.4056301}, //
+
26195 {5.90306997, 13.4065905}, //
+
26196 {5.90532017, 13.40763}, //
+
26197 {5.9075799, 13.4087601}, //
+
26198 {5.90983009, 13.4099703}, //
+
26199 {5.91208982, 13.4112701}, //
+
26200 {5.91434002, 13.4126396}, //
+
26201 {5.91660023, 13.4140997}, //
+
26202 {5.91886997, 13.4156504}, //
+
26203 {5.92113018, 13.4172897}, //
+
26204 {5.92338991, 13.4190102}, //
+
26205 {5.92566013, 13.4208097}, //
+
26206 {5.92791986, 13.4226904}, //
+
26207 {5.93018007, 13.4246597}, //
+
26208 {5.9324398, 13.4266996}, //
+
26209 {5.93469, 13.4288397}, //
+
26210 {5.93695021, 13.4310503}, //
+
26211 {5.93919992, 13.4332504}, //
+
26212 {5.94140005, 13.4353304}, //
+
26213 {5.94356012, 13.4372797}, //
+
26214 {5.94567013, 13.4391003}, //
+
26215 {5.94774008, 13.4407902}, //
+
26216 {5.94976997, 13.4423599}, //
+
26217 {5.95175982, 13.4438}, //
+
26218 {5.95370007, 13.4451103}, //
+
26219 {5.95559978, 13.4462996}, //
+
26220 {5.95737982, 13.4473696}, //
+
26221 {5.95896006, 13.4483099}, //
+
26222 {5.96367979, 13.4511499}, //
+
26223 {5.96409988, 13.4513998}, //
+
26224 {5.96401978, 13.4515305}, //
+
26225 {5.9637599, 13.4518995}, //
+
26226 {5.96333981, 13.4525299}, //
+
26227 {5.96275997, 13.4533997}, //
+
26228 {5.96108007, 13.4559097}, //
+
26229 {5.95999002, 13.4575396}, //
+
26230 {5.95873022, 13.4594202}, //
+
26231 {5.95730019, 13.4615498}, //
+
26232 {5.95576, 13.4638596}, //
+
26233 {5.95413017, 13.4662504}, //
+
26234 {5.95242023, 13.46873}, //
+
26235 {5.95063019, 13.4712896}, //
+
26236 {5.94875002, 13.4739304}, //
+
26237 {5.94679022, 13.4766598}, //
+
26238 {5.94473982, 13.4794703}, //
+
26239 {5.94260979, 13.4823704}, //
+
26240 {5.94040012, 13.4853497}, //
+
26241 {5.9388299, 13.4881697}, //
+
26242 {5.93712997, 13.4906197}, //
+
26243 {5.93529987, 13.4926901}, //
+
26244 {5.93335009, 13.49438}, //
+
26245 {5.93127012, 13.4956999}, //
+
26246 {5.92907, 13.4966402}, //
+
26247 {5.92674017, 13.4972}, //
+
26248 {5.92428017, 13.4973898}, //
+
26249 {5.9217, 13.4972}, //
+
26250 {5.91905022, 13.4967604}, //
+
26251 {5.91634989, 13.4961901}, //
+
26252 {5.91360998, 13.4954996}, //
+
26253 {5.91083002, 13.4946804}, //
+
26254 {5.90801001, 13.4937401}, //
+
26255 {5.90513992, 13.4926701}, //
+
26256 {5.9022398, 13.4914703}, //
+
26257 {5.89929008, 13.4901505}, //
+
26258 {5.89629984, 13.4886999}, //
+
26259 {5.89484978, 13.4880199}, //
+
26260 {5.89352989, 13.4874601}, //
+
26261 {5.89233017, 13.4870195}, //
+
26262 {5.89126015, 13.4867096}, //
+
26263 {5.89031982, 13.4865198}, //
+
26264 {5.88950014, 13.4864597}, //
+
26265 {5.88881016, 13.4865103}, //
+
26266 {5.88823986, 13.4867001}, //
+
26267 {5.88780022, 13.4870005}, //
+
26268 {5.88751984, 13.4874201}, //
+
26269 {5.88740015, 13.4879198}, //
+
26270 {5.8874402, 13.4885101}, //
+
26271 {5.88766003, 13.4891796}, //
+
26272 {5.88803005, 13.4899397}, //
+
26273 {5.88857985, 13.4907799}, //
+
26274 {5.88928986, 13.4917002}, //
+
26275 {5.89016008, 13.4927101}, //
+
26276 {5.89120007, 13.4938002}, //
+
26277 {5.8923502, 13.4949303}, //
+
26278 {5.89354992, 13.4960604}, //
+
26279 {5.89478016, 13.4971905}, //
+
26280 {5.89605999, 13.4983196}, //
+
26281 {5.89737988, 13.4994497}, //
+
26282 {5.8987298, 13.5005798}, //
+
26283 {5.9001298, 13.5017004}, //
+
26284 {5.90156984, 13.5028296}, //
+
26285 {5.90304995, 13.5039501}, //
+
26286 {5.90452003, 13.5051003}, //
+
26287 {5.9059, 13.5063}, //
+
26288 {5.90720987, 13.5075397}, //
+
26289 {5.90842009, 13.5088196}, //
+
26290 {5.9095602, 13.5101404}, //
+
26291 {5.9106102, 13.5115099}, //
+
26292 {5.91157007, 13.5129099}, //
+
26293 {5.91244984, 13.5143604}, //
+
26294 {5.91324997, 13.5158501}, //
+
26295 {5.91664982, 13.5158501}, //
+
26296 {5.91801977, 13.5180197}, //
+
26297 {5.91914988, 13.52003}, //
+
26298 {5.9200201, 13.5218697}, //
+
26299 {5.92065001, 13.5235395}, //
+
26300 {5.92102003, 13.5250397}, //
+
26301 {5.92114019, 13.5263796}, //
+
26302 {5.92101002, 13.5275602}, //
+
26303 {5.92062998, 13.5285597}, //
+
26304 {5.92000008, 13.5293999}, //
+
26305 {5.91918993, 13.5301104}, //
+
26306 {5.9182601, 13.5307398}, //
+
26307 {5.91719007, 13.5312901}, //
+
26308 {5.91599989, 13.5317497}, //
+
26309 {5.91469002, 13.5321302}, //
+
26310 {5.91323996, 13.5324202}, //
+
26311 {5.91167021, 13.53263}, //
+
26312 {5.90997982, 13.5327597}, //
+
26313 {5.9081502, 13.5327997}, //
+
26314 {5.90629005, 13.5327597}, //
+
26315 {5.90447998, 13.53263}, //
+
26316 {5.90269995, 13.5324202}, //
+
26317 {5.90095997, 13.5321302}, //
+
26318 {5.89927006, 13.5317497}, //
+
26319 {5.8976202, 13.5312901}, //
+
26320 {5.89599991, 13.5307398}, //
+
26321 {5.89443016, 13.5301104}, //
+
26322 {5.89289999, 13.5293999}, //
+
26323 {5.88734007, 13.5289803}, //
+
26324 {5.88269997, 13.5292301}, //
+
26325 {5.87897015, 13.5301504}, //
+
26326 {5.87617016, 13.5317402}, //
+
26327 {5.87428999, 13.5340004}, //
+
26328 {5.8733201, 13.5369301}, //
+
26329 {5.87328005, 13.5405397}, //
+
26330 {5.8741498, 13.5448103}, //
+
26331 {5.87594986, 13.5497503}, //
+
26332 {5.87587023, 13.5511799}, //
+
26333 {5.87560987, 13.5524397}, //
+
26334 {5.87518978, 13.5535297}, //
+
26335 {5.87460995, 13.55445}, //
+
26336 {5.87384987, 13.5552101}, //
+
26337 {5.87293005, 13.5557899}, //
+
26338 {5.87184, 13.5562096}, //
+
26339 {5.8705802, 13.5564699}, //
+
26340 {5.86915016, 13.55655}, //
+
26341 {5.86763, 13.5564699}, //
+
26342 {5.86605978, 13.5562096}, //
+
26343 {5.86445999, 13.5557899}, //
+
26344 {5.86280012, 13.5552101}, //
+
26345 {5.86111021, 13.55445}, //
+
26346 {5.85937023, 13.5535297}, //
+
26347 {5.8575902, 13.5524397}, //
+
26348 {5.85577011, 13.5511799}, //
+
26349 {5.85389996, 13.5497503}, //
+
26350 {5.85200024, 13.5482397}, //
+
26351 {5.85005999, 13.54673}, //
+
26352 {5.84807014, 13.5452204}, //
+
26353 {5.84603977, 13.5437098}, //
+
26354 {5.84396982, 13.5421896}, //
+
26355 {5.84185982, 13.5406799}, //
+
26356 {5.83970022, 13.5391703}, //
+
26357 {5.8375001, 13.5376596}, //
+
26358 {5.8352499, 13.53615}, //
+
26359 {5.83307981, 13.5346098}, //
+
26360 {5.83106995, 13.53298}, //
+
26361 {5.82922983, 13.53127}, //
+
26362 {5.82755995, 13.52948}, //
+
26363 {5.82605982, 13.5276003}, //
+
26364 {5.82471991, 13.5256395}, //
+
26365 {5.82354021, 13.5235901}, //
+
26366 {5.82253981, 13.5214596}, //
+
26367 {5.8217001, 13.5192499}, //
+
26368 {5.8200798, 13.5175896}, //
+
26369 {5.81826019, 13.5156403}, //
+
26370 {5.81622982, 13.5134001}, //
+
26371 {5.81399012, 13.5108604}, //
+
26372 {5.81154013, 13.5080404}, //
+
26373 {5.80887985, 13.50492}, //
+
26374 {5.80600977, 13.5015001}, //
+
26375 {5.80292988, 13.4977999}, //
+
26376 {5.79965019, 13.4938002}, //
+
26377 {5.79623985, 13.4895897}, //
+
26378 {5.79278994, 13.48526}, //
+
26379 {5.78928995, 13.4807997}, //
+
26380 {5.78575993, 13.4762096}, //
+
26381 {5.78217983, 13.4715004}, //
+
26382 {5.77856016, 13.46667}, //
+
26383 {5.77489996, 13.4617004}, //
+
26384 {5.77120018, 13.4566097}, //
+
26385 {5.76744986, 13.4513998}, //
+
26386 {5.76375008, 13.4462404}, //
+
26387 {5.76016998, 13.4412804}, //
+
26388 {5.75671005, 13.4365301}, //
+
26389 {5.75337982, 13.4319897}, //
+
26390 {5.75017977, 13.42766}, //
+
26391 {5.74708986, 13.4235296}, //
+
26392 {5.74414015, 13.41961}, //
+
26393 {5.74131012, 13.4159002}, //
+
26394 {5.73859978, 13.4124002}, //
+
26395 {5.73611021, 13.4091997}, //
+
26396 {5.7339201, 13.4063797}, //
+
26397 {5.7320199, 13.4039297}, //
+
26398 {5.7304101, 13.4018602}, //
+
26399 {5.72806978, 13.39884}, //
+
26400 {5.72734022, 13.3978996}, //
+
26401 {5.7269001, 13.3973398}, //
+
26402 {5.7267499, 13.39715}, //
+
26403 {5.63859987, 13.4853497}, //
+
26404 {5.63937998, 13.4853897}, //
+
26405 {5.64019012, 13.4855204}, //
+
26406 {5.64104986, 13.4857197}, //
+
26407 {5.64195013, 13.4860096}, //
+
26408 {5.64288998, 13.4863796}, //
+
26409 {5.64386988, 13.4868402}, //
+
26410 {5.64488983, 13.48738}, //
+
26411 {5.64594984, 13.4879999}, //
+
26412 {5.6470499, 13.4886999}, //
+
26413 {5.64827013, 13.4895201}, //
+
26414 {5.6496501, 13.4904604}, //
+
26415 {5.65119982, 13.4915304}, //
+
26416 {5.65291977, 13.4927197}, //
+
26417 {5.65479994, 13.4940395}, //
+
26418 {5.65684986, 13.4954796}, //
+
26419 {5.65907001, 13.4970398}, //
+
26420 {5.66144991, 13.4987297}, //
+
26421 {5.66400003, 13.5005503}, //
+
26422 {5.66679001, 13.5025902}, //
+
26423 {5.6698699, 13.5049105}, //
+
26424 {5.6732502, 13.5075302}, //
+
26425 {5.67691994, 13.5104504}, //
+
26426 {5.68088007, 13.5136499}, //
+
26427 {5.68513012, 13.5171499}, //
+
26428 {5.6896801, 13.5209398}, //
+
26429 {5.69452, 13.5250196}, //
+
26430 {5.69964981, 13.5293999}, //
+
26431 {5.70257998, 13.5323095}, //
+
26432 {5.70533991, 13.5349998}, //
+
26433 {5.70793009, 13.5374899}, //
+
26434 {5.71035004, 13.5397797}, //
+
26435 {5.71260977, 13.5418501}, //
+
26436 {5.71469021, 13.5437098}, //
+
26437 {5.71660995, 13.5453701}, //
+
26438 {5.71836996, 13.5468102}, //
+
26439 {5.7199502, 13.5480499}, //
+
26440 {5.72141981, 13.54918}, //
+
26441 {5.72279978, 13.5503101}, //
+
26442 {5.72411013, 13.5514402}, //
+
26443 {5.72531986, 13.5525703}, //
+
26444 {5.72645998, 13.5537004}, //
+
26445 {5.72750998, 13.5548296}, //
+
26446 {5.72846985, 13.5559502}, //
+
26447 {5.72935009, 13.5570803}, //
+
26448 {5.73015022, 13.5581999}, //
+
26449 {5.73090982, 13.5592699}, //
+
26450 {5.73165989, 13.5602102}, //
+
26451 {5.73241997, 13.5610304}, //
+
26452 {5.73317003, 13.5617304}, //
+
26453 {5.73393011, 13.5622902}, //
+
26454 {5.73468018, 13.5627298}, //
+
26455 {5.73543978, 13.5630503}, //
+
26456 {5.73618984, 13.5632401}, //
+
26457 {5.73694992, 13.5633001}, //
+
26458 {5.73698997, 13.5640602}, //
+
26459 {5.73712015, 13.5648098}, //
+
26460 {5.73731995, 13.5655699}, //
+
26461 {5.73760986, 13.5663204}, //
+
26462 {5.73797989, 13.5670795}, //
+
26463 {5.73844004, 13.5678301}, //
+
26464 {5.73897982, 13.5685902}, //
+
26465 {5.73960018, 13.5693398}, //
+
26466 {5.74030018, 13.5700998}, //
+
26467 {5.74331999, 13.5731201}, //
+
26468 {5.74408007, 13.5738802}, //
+
26469 {5.7463398, 13.5761404}, //
+
26470 {5.74709988, 13.5768995}, //
+
26471 {5.75237989, 13.5822096}, //
+
26472 {5.75765991, 13.5875998}, //
+
26473 {5.76292992, 13.5930796}, //
+
26474 {5.76820993, 13.59865}, //
+
26475 {5.77348995, 13.6042995}, //
+
26476 {5.77876997, 13.6100302}, //
+
26477 {5.78403997, 13.6158504}, //
+
26478 {5.78931999, 13.6217604}, //
+
26479 {5.79460001, 13.6277504}, //
+
26480 {5.79606009, 13.6300697}, //
+
26481 {5.79743004, 13.6325102}, //
+
26482 {5.7987299, 13.6350803}, //
+
26483 {5.79994011, 13.6377802}, //
+
26484 {5.80107021, 13.6406002}, //
+
26485 {5.8021102, 13.6435499}, //
+
26486 {5.80307007, 13.6466198}, //
+
26487 {5.80394983, 13.6498203}, //
+
26488 {5.80474997, 13.6531496}, //
+
26489 {5.80551004, 13.6565599}, //
+
26490 {5.80626011, 13.6600103}, //
+
26491 {5.80702019, 13.6635103}, //
+
26492 {5.80776978, 13.6670504}, //
+
26493 {5.80852985, 13.6706305}, //
+
26494 {5.80927992, 13.6742601}, //
+
26495 {5.81004, 13.6779299}, //
+
26496 {5.81079006, 13.6816397}, //
+
26497 {5.81155014, 13.6854}, //
+
26498 {5.81225014, 13.6890802}, //
+
26499 {5.81287003, 13.6926003}, //
+
26500 {5.81340981, 13.69594}, //
+
26501 {5.81386995, 13.6991196}, //
+
26502 {5.81423998, 13.7021303}, //
+
26503 {5.8145299, 13.7049799}, //
+
26504 {5.81473017, 13.7076502}, //
+
26505 {5.81482983, 13.7096796}, //
+
26506 {5.81451988, 13.7103701}, //
+
26507 {5.81376982, 13.7121096}, //
+
26508 {5.81301022, 13.7138796}, //
+
26509 {5.81226015, 13.7156897}, //
+
26510 {5.81150007, 13.7175503}, //
+
26511 {5.81070995, 13.7194595}, //
+
26512 {5.8098402, 13.7214098}, //
+
26513 {5.80887985, 13.7234097}, //
+
26514 {5.80783987, 13.72544}, //
+
26515 {5.80670977, 13.72752}, //
+
26516 {5.80550003, 13.72964}, //
+
26517 {5.80420017, 13.7318001}, //
+
26518 {5.80282021, 13.7340002}, //
+
26519 {5.80135012, 13.7362499}, //
+
26520 {5.79111004, 13.7464895}, //
+
26521 {5.78930998, 13.7482901}, //
+
26522 {5.78439999, 13.7531996}, //
+
26523 {5.7822299, 13.7539797}, //
+
26524 {5.78022003, 13.7547903}, //
+
26525 {5.77837992, 13.7556496}, //
+
26526 {5.77671003, 13.7565498}, //
+
26527 {5.7752099, 13.7574902}, //
+
26528 {5.77386999, 13.7584696}, //
+
26529 {5.77268982, 13.75949}, //
+
26530 {5.77168989, 13.7605495}, //
+
26531 {5.77085018, 13.7616501}, //
+
26532 {5.77014017, 13.7628002}, //
+
26533 {5.76950979, 13.7639999}, //
+
26534 {5.76896, 13.7652397}, //
+
26535 {5.76849985, 13.7665195}, //
+
26536 {5.76811981, 13.7678404}, //
+
26537 {5.7678299, 13.7692099}, //
+
26538 {5.76762009, 13.7706099}, //
+
26539 {5.76748991, 13.7720604}, //
+
26540 {5.76744986, 13.77355}, //
+
26541 {5.76737022, 13.77635}, //
+
26542 {5.76710987, 13.7787399}, //
+
26543 {5.76668978, 13.7806997}, //
+
26544 {5.76610994, 13.7822504}, //
+
26545 {5.76534986, 13.78337}, //
+
26546 {5.76443005, 13.7840796}, //
+
26547 {5.76334, 13.7843704}, //
+
26548 {5.76208019, 13.7842503}, //
+
26549 {5.76065016, 13.7837}, //
+
26550 {5.75910997, 13.7828999}, //
+
26551 {5.75748014, 13.7820196}, //
+
26552 {5.75577021, 13.7810602}, //
+
26553 {5.75397015, 13.7800198}, //
+
26554 {5.75208998, 13.7788897}, //
+
26555 {5.75012016, 13.7776804}, //
+
26556 {5.74806023, 13.7763796}, //
+
26557 {5.74592018, 13.7750101}, //
+
26558 {5.74370003, 13.77355}, //
+
26559 {5.74300003, 13.77279}, //
+
26560 {5.74238014, 13.7720404}, //
+
26561 {5.74183989, 13.7712803}, //
+
26562 {5.74138021, 13.7705297}, //
+
26563 {5.74101019, 13.7697697}, //
+
26564 {5.7407198, 13.7690201}, //
+
26565 {5.74052, 13.76826}, //
+
26566 {5.74038982, 13.7675104}, //
+
26567 {5.74034977, 13.7667503}, //
+
26568 {5.73890018, 13.7660398}, //
+
26569 {5.73757982, 13.7654104}, //
+
26570 {5.7363801, 13.7648602}, //
+
26571 {5.73531008, 13.7643995}, //
+
26572 {5.73437023, 13.76402}, //
+
26573 {5.73355007, 13.76373}, //
+
26574 {5.73286009, 13.7635202}, //
+
26575 {5.73228979, 13.7633896}, //
+
26576 {5.73185015, 13.7633495}, //
+
26577 {5.73015022, 13.7633495}, //
+
26578 {5.73015022, 13.7870998}, //
+
26579 {5.73009014, 13.7884903}, //
+
26580 {5.72989988, 13.7896204}, //
+
26581 {5.72957993, 13.7904997}, //
+
26582 {5.7291398, 13.7911301}, //
+
26583 {5.72858, 13.7915096}, //
+
26584 {5.72788, 13.7916298}, //
+
26585 {5.72705984, 13.7915096}, //
+
26586 {5.72612, 13.7911301}, //
+
26587 {5.72504997, 13.7904997}, //
+
26588 {5.72390985, 13.7896204}, //
+
26589 {5.72272015, 13.7884903}, //
+
26590 {5.72148991, 13.7871103}, //
+
26591 {5.72022009, 13.78547}, //
+
26592 {5.7189002, 13.7835903}, //
+
26593 {5.71753979, 13.7814598}, //
+
26594 {5.71613979, 13.7790699}, //
+
26595 {5.71469021, 13.7764397}, //
+
26596 {5.71320009, 13.77355}, //
+
26597 {5.71089983, 13.7705297}, //
+
26598 {5.70851994, 13.7675104}, //
+
26599 {5.70604992, 13.7644901}, //
+
26600 {5.70349979, 13.7614698}, //
+
26601 {5.70086002, 13.7584496}, //
+
26602 {5.69813013, 13.7554398}, //
+
26603 {5.69532013, 13.7524204}, //
+
26604 {5.69243002, 13.7494097}, //
+
26605 {5.68944979, 13.7463999}, //
+
26606 {5.68493986, 13.7416697}, //
+
26607 {5.68042994, 13.7365198}, //
+
26608 {5.67591, 13.7309504}, //
+
26609 {5.67140007, 13.7249603}, //
+
26610 {5.66688013, 13.7185602}, //
+
26611 {5.66236019, 13.71173}, //
+
26612 {5.65783978, 13.7044897}, //
+
26613 {5.65331984, 13.6968298}, //
+
26614 {5.6487999, 13.6887503}, //
+
26615 {5.64276981, 13.6813002}, //
+
26616 {5.63674021, 13.6740198}, //
+
26617 {5.63071012, 13.6669102}, //
+
26618 {5.62468004, 13.6599598}, //
+
26619 {5.61864996, 13.6531801}, //
+
26620 {5.61261988, 13.6465702}, //
+
26621 {5.60659981, 13.64013}, //
+
26622 {5.6005702, 13.6338596}, //
+
26623 {5.59455013, 13.6277504}, //
+
26624 {5.59162998, 13.6233301}, //
+
26625 {5.58893013, 13.6191196}, //
+
26626 {5.58643007, 13.6151199}, //
+
26627 {5.58413982, 13.61133}, //
+
26628 {5.58205986, 13.6077499}, //
+
26629 {5.58019018, 13.6043701}, //
+
26630 {5.57853985, 13.6012096}, //
+
26631 {5.57708979, 13.5982504}, //
+
26632 {5.57585001, 13.5955}, //
+
26633 {5.57476997, 13.5929298}, //
+
26634 {5.57377005, 13.5904799}, //
+
26635 {5.57285976, 13.5881596}, //
+
26636 {5.57202005, 13.5859604}, //
+
26637 {5.57126999, 13.58389}, //
+
26638 {5.57061005, 13.5819397}, //
+
26639 {5.5700202, 13.5801201}, //
+
26640 {5.56952, 13.5784197}, //
+
26641 {5.5690999, 13.5768499}, //
+
26642 {5.56873989, 13.5754299}, //
+
26643 {5.56816006, 13.5731001}, //
+
26644 {5.56773996, 13.5714302}, //
+
26645 {5.56759024, 13.5708504}, //
+
26646 {5.56748009, 13.5704298}, //
+
26647 {5.56739998, 13.5700998}, //
+
26648 {5.45214987, 13.6786003}, //
+
26649 {5.45214987, 13.6820002}, //
+
26650 {5.4521699, 13.6820202}, //
+
26651 {5.45222998, 13.6820803}, //
+
26652 {5.45233011, 13.6821899}, //
+
26653 {5.45266008, 13.6825199}, //
+
26654 {5.45287991, 13.6827602}, //
+
26655 {5.4534502, 13.6833401}, //
+
26656 {5.4538002, 13.6836996}, //
+
26657 {5.45417976, 13.6840801}, //
+
26658 {5.4545598, 13.6844501}, //
+
26659 {5.45492983, 13.6848297}, //
+
26660 {5.45568991, 13.6855698}, //
+
26661 {5.45606995, 13.6859398}, //
+
26662 {5.45643997, 13.6863098}, //
+
26663 {5.45720005, 13.6870499}, //
+
26664 {5.45760012, 13.6874704}, //
+
26665 {5.45804024, 13.6879702}, //
+
26666 {5.45851994, 13.6885595}, //
+
26667 {5.45905018, 13.68923}, //
+
26668 {5.45960999, 13.68999}, //
+
26669 {5.46021986, 13.6908302}, //
+
26670 {5.46086979, 13.6917496}, //
+
26671 {5.46156979, 13.6927605}, //
+
26672 {5.46229982, 13.6938496}, //
+
26673 {5.46304989, 13.6949596}, //
+
26674 {5.46380997, 13.6960297}, //
+
26675 {5.46456003, 13.6970596}, //
+
26676 {5.4653101, 13.69804}, //
+
26677 {5.46606016, 13.6989803}, //
+
26678 {5.46681023, 13.6998701}, //
+
26679 {5.46755981, 13.7007198}, //
+
26680 {5.46829987, 13.7015305}, //
+
26681 {5.46904993, 13.7023001}, //
+
26682 {5.47387981, 13.7071304}, //
+
26683 {5.47777987, 13.71103}, //
+
26684 {5.47924995, 13.7124996}, //
+
26685 {5.4832902, 13.7156801}, //
+
26686 {5.48787022, 13.7191896}, //
+
26687 {5.49300003, 13.7230396}, //
+
26688 {5.4986701, 13.7272196}, //
+
26689 {5.50488997, 13.73174}, //
+
26690 {5.51165009, 13.7365904}, //
+
26691 {5.51896, 13.7417698}, //
+
26692 {5.52681017, 13.7473001}, //
+
26693 {5.53520012, 13.75315}, //
+
26694 {5.54389, 13.75916}, //
+
26695 {5.55260992, 13.76513}, //
+
26696 {5.56137991, 13.77106}, //
+
26697 {5.57018995, 13.7769403}, //
+
26698 {5.57904005, 13.7827797}, //
+
26699 {5.5879302, 13.7885704}, //
+
26700 {5.59685993, 13.7943201}, //
+
26701 {5.60584021, 13.8000298}, //
+
26702 {5.61485004, 13.8057003}, //
+
26703 {5.62360001, 13.8111696}, //
+
26704 {5.63177013, 13.8162603}, //
+
26705 {5.63933992, 13.8209696}, //
+
26706 {5.64633989, 13.8253098}, //
+
26707 {5.65274, 13.8292704}, //
+
26708 {5.6585598, 13.83286}, //
+
26709 {5.66379023, 13.8360596}, //
+
26710 {5.66843987, 13.8388996}, //
+
26711 {5.67250013, 13.8413496}, //
+
26712 {5.67464018, 13.8421001}, //
+
26713 {5.67652988, 13.8428602}, //
+
26714 {5.6781702, 13.8436098}, //
+
26715 {5.67955017, 13.8443604}, //
+
26716 {5.68068981, 13.8451099}, //
+
26717 {5.68157005, 13.8458595}, //
+
26718 {5.68219995, 13.8466101}, //
+
26719 {5.68256998, 13.8473501}, //
+
26720 {5.68270016, 13.8480997}, //
+
26721 {5.68262005, 13.8488598}, //
+
26722 {5.68236017, 13.8496103}, //
+
26723 {5.68194008, 13.8503704}, //
+
26724 {5.68135977, 13.85112}, //
+
26725 {5.68060017, 13.8518801}, //
+
26726 {5.67967987, 13.8526297}, //
+
26727 {5.67858982, 13.8533897}, //
+
26728 {5.67733002, 13.8541403}, //
+
26729 {5.67589998, 13.8549004}, //
+
26730 {5.67439985, 13.8556099}, //
+
26731 {5.6729002, 13.8562403}, //
+
26732 {5.67139006, 13.8567896}, //
+
26733 {5.66988993, 13.8572502}, //
+
26734 {5.66837978, 13.8576298}, //
+
26735 {5.66688013, 13.8579197}, //
+
26736 {5.66536999, 13.8581305}, //
+
26737 {5.66385984, 13.8582602}, //
+
26738 {5.66235018, 13.8583002}, //
+
26739 {5.6615901, 13.8590097}, //
+
26740 {5.66084003, 13.8596401}, //
+
26741 {5.66007996, 13.8601904}, //
+
26742 {5.65932989, 13.8606501}, //
+
26743 {5.65856981, 13.8610296}, //
+
26744 {5.65782022, 13.8613195}, //
+
26745 {5.65706015, 13.8615303}, //
+
26746 {5.65631008, 13.86166}, //
+
26747 {5.65555, 13.8617001}, //
+
26748 {5.6487999, 13.8617001}, //
+
26749 {5.64812994, 13.8624802}, //
+
26750 {5.6476202, 13.8632898}, //
+
26751 {5.64728022, 13.86415}, //
+
26752 {5.64710999, 13.8650503}, //
+
26753 {5.64710999, 13.8659897}, //
+
26754 {5.6472702, 13.8669701}, //
+
26755 {5.64759016, 13.8679895}, //
+
26756 {5.64808989, 13.86905}, //
+
26757 {5.64874983, 13.8701496}, //
+
26758 {5.64954996, 13.8712597}, //
+
26759 {5.6504302, 13.8723297}, //
+
26760 {5.65139008, 13.8733597}, //
+
26761 {5.65244007, 13.8743496}, //
+
26762 {5.65358019, 13.8752899}, //
+
26763 {5.65478992, 13.8761902}, //
+
26764 {5.6560998, 13.8770504}, //
+
26765 {5.65747976, 13.8778696}, //
+
26766 {5.65894985, 13.8786497}, //
+
26767 {5.66046, 13.8801498}, //
+
26768 {5.66197014, 13.88165}, //
+
26769 {5.66949987, 13.8891802}, //
+
26770 {5.67250013, 13.8922005}, //
+
26771 {5.67574978, 13.8954496}, //
+
26772 {5.67628002, 13.8959799}, //
+
26773 {5.67795992, 13.8976603}, //
+
26774 {5.67895985, 13.8986597}, //
+
26775 {5.6792202, 13.8989201}, //
+
26776 {5.6792798, 13.8989801}, //
+
26777 {5.67929983, 13.8990002}, //
+
26778 {5.67589998, 13.8990002}, //
+
26779 {5.67587996, 13.8997097}, //
+
26780 {5.67581987, 13.9003401}, //
+
26781 {5.6757102, 13.9008904}, //
+
26782 {5.67556, 13.90135}, //
+
26783 {5.67538023, 13.9017296}, //
+
26784 {5.6751399, 13.9020205}, //
+
26785 {5.67487001, 13.9022303}, //
+
26786 {5.67456007, 13.90236}, //
+
26787 {5.67384005, 13.9024401}, //
+
26788 {5.6735301, 13.9025698}, //
+
26789 {5.67326021, 13.90277}, //
+
26790 {5.67301989, 13.90306}, //
+
26791 {5.67284012, 13.90343}, //
+
26792 {5.67268991, 13.9038897}, //
+
26793 {5.67257977, 13.9044304}, //
+
26794 {5.67252016, 13.9050503}, //
+
26795 {5.67250013, 13.9057503}, //
+
26796 {5.67256021, 13.9064598}, //
+
26797 {5.67275, 13.9070902}, //
+
26798 {5.67306995, 13.9076405}, //
+
26799 {5.67351007, 13.9081001}, //
+
26800 {5.67406988, 13.9084797}, //
+
26801 {5.67476988, 13.9087696}, //
+
26802 {5.67559004, 13.9089804}, //
+
26803 {5.67652988, 13.9091101}, //
+
26804 {5.67759991, 13.9091501}, //
+
26805 {5.67870998, 13.90909}, //
+
26806 {5.67978001, 13.9089003}, //
+
26807 {5.68080997, 13.9085798}, //
+
26808 {5.68178988, 13.9081402}, //
+
26809 {5.6827302, 13.9075804}, //
+
26810 {5.68361998, 13.9068804}, //
+
26811 {5.68447018, 13.9060602}, //
+
26812 {5.68527985, 13.9051199}, //
+
26813 {5.68604994, 13.9040499}, //
+
26814 {5.68675995, 13.9029102}, //
+
26815 {5.68738985, 13.90172}, //
+
26816 {5.68794012, 13.9004898}, //
+
26817 {5.68839979, 13.8992205}, //
+
26818 {5.68877983, 13.8978996}, //
+
26819 {5.68907022, 13.8965397}, //
+
26820 {5.68928003, 13.8951397}, //
+
26821 {5.68941021, 13.8936901}, //
+
26822 {5.68944979, 13.8922005}, //
+
26823 {5.68946981, 13.89009}, //
+
26824 {5.6895299, 13.8882704}, //
+
26825 {5.68964005, 13.8867397}, //
+
26826 {5.68978977, 13.8855104}, //
+
26827 {5.68997002, 13.8845596}, //
+
26828 {5.69020987, 13.8839102}, //
+
26829 {5.69048023, 13.8835497}, //
+
26830 {5.69079018, 13.8834801}, //
+
26831 {5.69115019, 13.8837004}, //
+
26832 {5.69166994, 13.8842201}, //
+
26833 {5.6924901, 13.8850403}, //
+
26834 {5.69360018, 13.8861599}, //
+
26835 {5.6967001, 13.8892603}, //
+
26836 {5.69867992, 13.8912601}, //
+
26837 {5.70096016, 13.8935404}, //
+
26838 {5.70353985, 13.8961201}, //
+
26839 {5.70639992, 13.8990002}, //
+
26840 {5.70716, 13.9004002}, //
+
26841 {5.70791006, 13.9015799}, //
+
26842 {5.70867014, 13.9025602}, //
+
26843 {5.7094202, 13.9033298}, //
+
26844 {5.71017981, 13.9038897}, //
+
26845 {5.71092987, 13.9042397}, //
+
26846 {5.71168995, 13.9043903}, //
+
26847 {5.71244001, 13.9043198}, //
+
26848 {5.71320009, 13.9040499}, //
+
26849 {5.71389008, 13.9036198}, //
+
26850 {5.7144599, 13.90306}, //
+
26851 {5.71490002, 13.90238}, //
+
26852 {5.71520996, 13.9015703}, //
+
26853 {5.71540022, 13.90063}, //
+
26854 {5.71546984, 13.89956}, //
+
26855 {5.71540022, 13.8983698}, //
+
26856 {5.71520996, 13.8970499}, //
+
26857 {5.71490002, 13.8956003}, //
+
26858 {5.71449995, 13.8940496}, //
+
26859 {5.71405983, 13.8924103}, //
+
26860 {5.71358013, 13.8906898}, //
+
26861 {5.71304989, 13.8888903}, //
+
26862 {5.71249008, 13.8870096}, //
+
26863 {5.71188021, 13.8850403}, //
+
26864 {5.7112298, 13.8830004}, //
+
26865 {5.7105298, 13.8808603}, //
+
26866 {5.70979977, 13.8786497}, //
+
26867 {5.70912981, 13.8772402}, //
+
26868 {5.70862007, 13.87605}, //
+
26869 {5.7082901, 13.8750601}, //
+
26870 {5.70811987, 13.87428}, //
+
26871 {5.70811987, 13.8737202}, //
+
26872 {5.7082901, 13.8733597}, //
+
26873 {5.70862007, 13.87321}, //
+
26874 {5.70912981, 13.8732796}, //
+
26875 {5.70979977, 13.8735504}, //
+
26876 {5.7105999, 13.8740101}, //
+
26877 {5.71148014, 13.8746405}, //
+
26878 {5.71244001, 13.8754301}, //
+
26879 {5.71348, 13.8763905}, //
+
26880 {5.7146101, 13.8775196}, //
+
26881 {5.71581984, 13.8788204}, //
+
26882 {5.71712017, 13.8802795}, //
+
26883 {5.71849012, 13.8819103}, //
+
26884 {5.7199502, 13.8837004}, //
+
26885 {5.72147989, 13.8856297}, //
+
26886 {5.72305012, 13.88764}, //
+
26887 {5.72466993, 13.88974}, //
+
26888 {5.72631979, 13.8919201}, //
+
26889 {5.72801018, 13.8941803}, //
+
26890 {5.72975016, 13.8965197}, //
+
26891 {5.73153019, 13.8989496}, //
+
26892 {5.73333979, 13.9014597}, //
+
26893 {5.73519993, 13.9040499}, //
+
26894 {5.73703003, 13.9067097}, //
+
26895 {5.73872995, 13.90942}, //
+
26896 {5.74030018, 13.9121704}, //
+
26897 {5.74174976, 13.9149504}, //
+
26898 {5.74307013, 13.9177799}, //
+
26899 {5.74426985, 13.9206495}, //
+
26900 {5.74533987, 13.9235601}, //
+
26901 {5.74628019, 13.9265099}, //
+
26902 {5.74709988, 13.9294996}, //
+
26903 {5.74923992, 13.9336004}, //
+
26904 {5.7511301, 13.9368696}, //
+
26905 {5.75276995, 13.93929}, //
+
26906 {5.75414991, 13.9408798}, //
+
26907 {5.75529003, 13.9416304}, //
+
26908 {5.7561698, 13.9415398}, //
+
26909 {5.75680017, 13.9406204}, //
+
26910 {5.7571702, 13.9388504}, //
+
26911 {5.7572999, 13.9362497}, //
+
26912 {5.75713015, 13.9330301}, //
+
26913 {5.75662994, 13.92939}, //
+
26914 {5.75579023, 13.9253302}, //
+
26915 {5.75461006, 13.9208603}, //
+
26916 {5.75309992, 13.9159603}, //
+
26917 {5.7512598, 13.9106503}, //
+
26918 {5.74907017, 13.9049196}, //
+
26919 {5.74655008, 13.8987703}, //
+
26920 {5.74370003, 13.8922005}, //
+
26921 {5.74230003, 13.8878899}, //
+
26922 {5.74111986, 13.8839903}, //
+
26923 {5.74013996, 13.8805199}, //
+
26924 {5.73936987, 13.8774595}, //
+
26925 {5.73881006, 13.8748198}, //
+
26926 {5.73846006, 13.8725996}, //
+
26927 {5.73830986, 13.8708}, //
+
26928 {5.73837996, 13.8694096}, //
+
26929 {5.73864985, 13.8684502}, //
+
26930 {5.73908997, 13.8678703}, //
+
26931 {5.73964977, 13.86763}, //
+
26932 {5.74034023, 13.8677197}, //
+
26933 {5.74115992, 13.8681402}, //
+
26934 {5.74209976, 13.8688898}, //
+
26935 {5.74315977, 13.8699799}, //
+
26936 {5.74434996, 13.8714104}, //
+
26937 {5.74565983, 13.8731604}, //
+
26938 {5.74709988, 13.8752499}, //
+
26939 {5.74861002, 13.8775501}, //
+
26940 {5.75012016, 13.8799295}, //
+
26941 {5.75162983, 13.8823996}, //
+
26942 {5.75312996, 13.8849497}, //
+
26943 {5.7546401, 13.8875904}, //
+
26944 {5.75614023, 13.8903198}, //
+
26945 {5.7576499, 13.8931303}, //
+
26946 {5.75915003, 13.8960199}, //
+
26947 {5.76065016, 13.8990002}, //
+
26948 {5.76282978, 13.9018402}, //
+
26949 {5.76485014, 13.9043503}, //
+
26950 {5.76668978, 13.9065304}, //
+
26951 {5.76837015, 13.90837}, //
+
26952 {5.76987982, 13.9098701}, //
+
26953 {5.77123022, 13.9110403}, //
+
26954 {5.7723999, 13.9118795}, //
+
26955 {5.77340984, 13.9123802}, //
+
26956 {5.77425003, 13.91255}, //
+
26957 {5.77496004, 13.9124498}, //
+
26958 {5.77558994, 13.9121304}, //
+
26959 {5.77614021, 13.9116096}, //
+
26960 {5.77659988, 13.9108696}, //
+
26961 {5.77697992, 13.9099302}, //
+
26962 {5.77726984, 13.9087696}, //
+
26963 {5.77748013, 13.9074097}, //
+
26964 {5.77760983, 13.9058304}, //
+
26965 {5.77764988, 13.9040499}, //
+
26966 {5.77752018, 13.9021502}, //
+
26967 {5.77715015, 13.9002104}, //
+
26968 {5.77651978, 13.8982201}, //
+
26969 {5.77564001, 13.8961897}, //
+
26970 {5.77449989, 13.8941202}, //
+
26971 {5.77311993, 13.8920097}, //
+
26972 {5.77148008, 13.8898497}, //
+
26973 {5.7695899, 13.8876495}, //
+
26974 {5.76744986, 13.8853998}, //
+
26975 {5.76601982, 13.8838997}, //
+
26976 {5.76476002, 13.8823996}, //
+
26977 {5.76366997, 13.8808899}, //
+
26978 {5.76275015, 13.8793898}, //
+
26979 {5.76199007, 13.8778801}, //
+
26980 {5.76141024, 13.87638}, //
+
26981 {5.76099014, 13.8748703}, //
+
26982 {5.76072979, 13.8733597}, //
+
26983 {5.76065016, 13.87185}, //
+
26984 {5.76069021, 13.87043}, //
+
26985 {5.76081991, 13.8691797}, //
+
26986 {5.7610302, 13.8681002}, //
+
26987 {5.76132011, 13.8671799}, //
+
26988 {5.76170015, 13.8664303}, //
+
26989 {5.76215982, 13.8658504}, //
+
26990 {5.76271009, 13.8654299}, //
+
26991 {5.76334, 13.86518}, //
+
26992 {5.76405001, 13.8650999}, //
+
26993 {5.76483011, 13.86518}, //
+
26994 {5.7656498, 13.8654299}, //
+
26995 {5.76651001, 13.8658504}, //
+
26996 {5.7674098, 13.8664303}, //
+
26997 {5.76835012, 13.8671799}, //
+
26998 {5.76934004, 13.8681002}, //
+
26999 {5.77037001, 13.8691797}, //
+
27000 {5.77144003, 13.87043}, //
+
27001 {5.77255011, 13.87185}, //
+
27002 {5.77370024, 13.8733997}, //
+
27003 {5.77489996, 13.8750401}, //
+
27004 {5.7761302, 13.8767595}, //
+
27005 {5.77741003, 13.8785601}, //
+
27006 {5.77872992, 13.8804398}, //
+
27007 {5.78007984, 13.88241}, //
+
27008 {5.78147984, 13.88445}, //
+
27009 {5.78291988, 13.88659}, //
+
27010 {5.78439999, 13.8887997}, //
+
27011 {5.78446007, 13.8909597}, //
+
27012 {5.78464985, 13.89291}, //
+
27013 {5.78496981, 13.89466}, //
+
27014 {5.78540993, 13.8961897}, //
+
27015 {5.78597021, 13.8975096}, //
+
27016 {5.78667021, 13.8986197}, //
+
27017 {5.78748989, 13.8995199}, //
+
27018 {5.78843021, 13.9002199}, //
+
27019 {5.78950024, 13.9006996}, //
+
27020 {5.79060984, 13.9010401}, //
+
27021 {5.79167986, 13.9012899}, //
+
27022 {5.79270983, 13.9014597}, //
+
27023 {5.7936902, 13.9015398}, //
+
27024 {5.79463005, 13.9015398}, //
+
27025 {5.79551983, 13.9014597}, //
+
27026 {5.79637003, 13.9012899}, //
+
27027 {5.79718018, 13.9010401}, //
+
27028 {5.79794979, 13.9006996}, //
+
27029 {5.79867983, 13.9003}, //
+
27030 {5.79937983, 13.8998604}, //
+
27031 {5.80003023, 13.8993797}, //
+
27032 {5.80064011, 13.8988504}, //
+
27033 {5.80119991, 13.8982897}, //
+
27034 {5.80173016, 13.8976803}, //
+
27035 {5.80220985, 13.8970299}, //
+
27036 {5.80264997, 13.8963299}, //
+
27037 {5.80305004, 13.8956003}, //
+
27038 {5.80341005, 13.8948402}, //
+
27039 {5.80372, 13.8940897}, //
+
27040 {5.80398989, 13.8933296}, //
+
27041 {5.80423021, 13.89258}, //
+
27042 {5.80440998, 13.89182}, //
+
27043 {5.80456018, 13.8910704}, //
+
27044 {5.80466986, 13.8903103}, //
+
27045 {5.80472994, 13.8895597}, //
+
27046 {5.80474997, 13.8887997}, //
+
27047 {5.80541992, 13.8870897}, //
+
27048 {5.80593014, 13.8849602}, //
+
27049 {5.80626011, 13.88241}, //
+
27050 {5.80642986, 13.8794403}, //
+
27051 {5.80642986, 13.87605}, //
+
27052 {5.80626011, 13.8722401}, //
+
27053 {5.80593014, 13.8680201}, //
+
27054 {5.80541992, 13.8633699}, //
+
27055 {5.80474997, 13.8583002}, //
+
27056 {5.80474997, 13.8345499}, //
+
27057 {5.80333996, 13.8338404}, //
+
27058 {5.80214977, 13.83321}, //
+
27059 {5.80115986, 13.8326597}, //
+
27060 {5.80038023, 13.8322001}, //
+
27061 {5.79981995, 13.8318195}, //
+
27062 {5.79945993, 13.8315296}, //
+
27063 {5.79931021, 13.8313198}, //
+
27064 {5.79937983, 13.8311901}, //
+
27065 {5.79965019, 13.8311501}, //
+
27066 {5.80474997, 13.8311501}, //
+
27067 {5.80474997, 13.7938995}, //
+
27068 {5.80550003, 13.7947102}, //
+
27069 {5.80626011, 13.79564}, //
+
27070 {5.80701017, 13.7966995}, //
+
27071 {5.80775976, 13.7978897}, //
+
27072 {5.80850983, 13.7992001}, //
+
27073 {5.80925989, 13.8006296}, //
+
27074 {5.81000996, 13.8022003}, //
+
27075 {5.81075001, 13.8038902}, //
+
27076 {5.81150007, 13.8057003}, //
+
27077 {5.81230021, 13.8075705}, //
+
27078 {5.81317997, 13.8093901}, //
+
27079 {5.81413984, 13.8111801}, //
+
27080 {5.81518984, 13.8129196}, //
+
27081 {5.81632996, 13.81462}, //
+
27082 {5.81754017, 13.8162804}, //
+
27083 {5.81885004, 13.8178902}, //
+
27084 {5.82023001, 13.8194704}, //
+
27085 {5.8217001, 13.8210001}, //
+
27086 {5.82313013, 13.8216105}, //
+
27087 {5.82438993, 13.8219204}, //
+
27088 {5.82547998, 13.8219404}, //
+
27089 {5.8263998, 13.8216696}, //
+
27090 {5.82715988, 13.8211002}, //
+
27091 {5.82774019, 13.82024}, //
+
27092 {5.82815981, 13.8190899}, //
+
27093 {5.82842016, 13.8176403}, //
+
27094 {5.82849979, 13.8158998}, //
+
27095 {5.82846022, 13.81392}, //
+
27096 {5.82833004, 13.8117199}, //
+
27097 {5.82812023, 13.8093204}, //
+
27098 {5.82782984, 13.8067102}, //
+
27099 {5.8274498, 13.8038902}, //
+
27100 {5.82699013, 13.8008604}, //
+
27101 {5.82643986, 13.7976103}, //
+
27102 {5.82580996, 13.7941599}, //
+
27103 {5.82509995, 13.7904997}, //
+
27104 {5.82370996, 13.7821302}, //
+
27105 {5.82257986, 13.7735901}, //
+
27106 {5.8217001, 13.7648802}, //
+
27107 {5.82107019, 13.7559996}, //
+
27108 {5.82069016, 13.7469597}, //
+
27109 {5.82056999, 13.7377396}, //
+
27110 {5.82069016, 13.7283602}, //
+
27111 {5.82107019, 13.7188196}, //
+
27112 {5.82107019, 13.7187796}, //
+
27113 {5.8211298, 13.71873}, //
+
27114 {5.82150984, 13.7182903}, //
+
27115 {5.82188988, 13.7177296}, //
+
27116 {5.82226992, 13.7170296}, //
+
27117 {5.82263994, 13.7162104}, //
+
27118 {5.82301998, 13.71527}, //
+
27119 {5.82340002, 13.7142}, //
+
27120 {5.82380009, 13.7130499}, //
+
27121 {5.82424021, 13.7118502}, //
+
27122 {5.82471991, 13.7106199}, //
+
27123 {5.82525015, 13.7093401}, //
+
27124 {5.82580996, 13.7080202}, //
+
27125 {5.82641983, 13.7066698}, //
+
27126 {5.82707024, 13.7052698}, //
+
27127 {5.82777023, 13.7038298}, //
+
27128 {5.82849979, 13.7023497}, //
+
27129 {5.82929993, 13.6986704}, //
+
27130 {5.83018017, 13.6951504}, //
+
27131 {5.83114004, 13.6918001}, //
+
27132 {5.83218002, 13.6886196}, //
+
27133 {5.83331013, 13.6856003}, //
+
27134 {5.83451986, 13.6827497}, //
+
27135 {5.8358202, 13.6800699}, //
+
27136 {5.83719015, 13.6775503}, //
+
27137 {5.83865023, 13.6752005}, //
+
27138 {5.84007978, 13.67377}, //
+
27139 {5.84375, 13.6701002}, //
+
27140 {5.84413004, 13.6697397}, //
+
27141 {5.84451008, 13.6694298}, //
+
27142 {5.8448801, 13.6691599}, //
+
27143 {5.84526014, 13.6689196}, //
+
27144 {5.84564018, 13.6687403}, //
+
27145 {5.84602022, 13.6685896}, //
+
27146 {5.84638977, 13.6684799}, //
+
27147 {5.84676981, 13.6684198}, //
+
27148 {5.84714985, 13.6683998}, //
+
27149 {5.85220003, 13.6683998}, //
+
27150 {5.85311985, 13.6691103}, //
+
27151 {5.85438013, 13.6697397}, //
+
27152 {5.85596991, 13.67029}, //
+
27153 {5.85790014, 13.6707497}, //
+
27154 {5.86015987, 13.6711302}, //
+
27155 {5.86276007, 13.6714201}, //
+
27156 {5.86569023, 13.6716299}, //
+
27157 {5.86894989, 13.6717596}, //
+
27158 {5.87255001, 13.6717997}, //
+
27159 {5.87487984, 13.6709204}, //
+
27160 {5.87732983, 13.6697903}, //
+
27161 {5.87990999, 13.6684103}, //
+
27162 {5.88260984, 13.66677}, //
+
27163 {5.88543987, 13.6648903}, //
+
27164 {5.88839006, 13.6627598}, //
+
27165 {5.89146996, 13.6603699}, //
+
27166 {5.89467001, 13.6577396}, //
+
27167 {5.89799976, 13.65485}, //
+
27168 {5.90137005, 13.6517096}, //
+
27169 {5.90468979, 13.6483202}, //
+
27170 {5.90797997, 13.64468}, //
+
27171 {5.91122007, 13.64079}, //
+
27172 {5.91442013, 13.6366501}, //
+
27173 {5.91758013, 13.6322498}, //
+
27174 {5.92069006, 13.6275997}, //
+
27175 {5.92376995, 13.6226997}, //
+
27176 {5.92679977, 13.6175499}, //
+
27177 {5.92901993, 13.6152897}, //
+
27178 {5.93115997, 13.61304}, //
+
27179 {5.93321991, 13.6107798}, //
+
27180 {5.9351902, 13.6085196}, //
+
27181 {5.93706989, 13.6062603}, //
+
27182 {5.93886995, 13.6039896}, //
+
27183 {5.94057989, 13.6017303}, //
+
27184 {5.9422102, 13.5994701}, //
+
27185 {5.9437499, 13.5972004}, //
+
27186 {5.94665003, 13.5942698}, //
+
27187 {5.9492898, 13.5915098}, //
+
27188 {5.95168018, 13.5889196}, //
+
27189 {5.95381021, 13.5864897}, //
+
27190 {5.95569992, 13.5842304}, //
+
27191 {5.95733023, 13.5821304}, //
+
27192 {5.95870018, 13.5802097}, //
+
27193 {5.95982981, 13.5784397}, //
+
27194 {5.96070004, 13.5768499}, //
+
27195 {5.96141005, 13.5753899}, //
+
27196 {5.96203995, 13.5740204}, //
+
27197 {5.96259022, 13.5727196}, //
+
27198 {5.96304989, 13.5715103}, //
+
27199 {5.96342993, 13.5703802}, //
+
27200 {5.96371984, 13.5693398}, //
+
27201 {5.96393013, 13.5683804}, //
+
27202 {5.96405983, 13.5675001}, //
+
27203 {5.96409988, 13.5667}, //
+
27204 {5.96405983, 13.5659399}, //
+
27205 {5.96393013, 13.5651903}, //
+
27206 {5.96371984, 13.5644302}, //
+
27207 {5.96342993, 13.5636797}, //
+
27208 {5.96304989, 13.5629196}, //
+
27209 {5.96259022, 13.56217}, //
+
27210 {5.96203995, 13.56141}, //
+
27211 {5.96141005, 13.5606604}, //
+
27212 {5.96070004, 13.5599003}, //
+
27213 {5.95990992, 13.5591097}, //
+
27214 {5.95904016, 13.5582399}, //
+
27215 {5.95807981, 13.5572796}, //
+
27216 {5.95591021, 13.55511}, //
+
27217 {5.95202017, 13.5512199}, //
+
27218 {5.95055008, 13.5497503}, //
+
27219 {5.9484601, 13.5475597}, //
+
27220 {5.94671011, 13.5454903}, //
+
27221 {5.94528008, 13.54354}, //
+
27222 {5.94419003, 13.5417299}, //
+
27223 {5.94343996, 13.5400295}, //
+
27224 {5.94301987, 13.5384598}, //
+
27225 {5.94293022, 13.5370197}, //
+
27226 {5.94317007, 13.5356998}, //
+
27227 {5.9437499, 13.5345001}, //
+
27228 {5.94463015, 13.5334301}, //
+
27229 {5.94575977, 13.5324898}, //
+
27230 {5.94714022, 13.5316696}, //
+
27231 {5.94878006, 13.5309696}, //
+
27232 {5.95066023, 13.5304098}, //
+
27233 {5.95278978, 13.5299702}, //
+
27234 {5.95518017, 13.5296497}, //
+
27235 {5.95780993, 13.52946}, //
+
27236 {5.96070004, 13.5293999}, //
+
27237 {5.96750021, 13.5226002}, //
+
27238 {5.96825981, 13.5218096}, //
+
27239 {5.96900988, 13.5209398}, //
+
27240 {5.96976995, 13.5199804}, //
+
27241 {5.97052002, 13.51894}, //
+
27242 {5.9712801, 13.5178099}, //
+
27243 {5.97203016, 13.5165997}, //
+
27244 {5.97278976, 13.5152998}, //
+
27245 {5.97353983, 13.5139198}, //
+
27246 {5.97429991, 13.5124502}, //
+
27247 {5.97433996, 13.5116901}, //
+
27248 {5.97447014, 13.5109396}, //
+
27249 {5.97466993, 13.5101805}, //
+
27250 {5.97495985, 13.5094299}, //
+
27251 {5.97532988, 13.5086699}, //
+
27252 {5.97579002, 13.5079203}, //
+
27253 {5.9763298, 13.5071602}, //
+
27254 {5.97695017, 13.5064096}, //
+
27255 {5.97765017, 13.5056496}, //
+
27256 {5.97844982, 13.5049}, //
+
27257 {5.97933006, 13.5041599}, //
+
27258 {5.98028994, 13.5034103}, //
+
27259 {5.98133993, 13.5026598}, //
+
27260 {5.98248005, 13.5019102}, //
+
27261 {5.98368979, 13.5011597}, //
+
27262 {5.98500013, 13.5004101}, //
+
27263 {5.9863801, 13.49965}, //
+
27264 {5.98785019, 13.4989004}, //
+
27265 {5.9893198, 13.4981403}, //
+
27266 {5.99069977, 13.4973898}, //
+
27267 {5.9920001, 13.4966297}, //
+
27268 {5.99320984, 13.4958801}, //
+
27269 {5.99433994, 13.49512}, //
+
27270 {5.99537992, 13.4943705}, //
+
27271 {5.9963398, 13.4936104}, //
+
27272 {5.99721003, 13.4928598}, //
+
27273 {5.99800014, 13.4920998}, //
+
27274 {5.99876022, 13.4913502}, //
+
27275 {5.99950981, 13.4905901}, //
+
27276 {6.00026989, 13.4898396}, //
+
27277 {6.00101995, 13.48909}, //
+
27278 {6.00178003, 13.4883404}, //
+
27279 {6.0025301, 13.4875898}, //
+
27280 {6.00329018, 13.4868402}, //
+
27281 {6.00403976, 13.4861002}, //
+
27282 {6.00479984, 13.4853497}, //
+
27283 {6.00487995, 13.48384}, //
+
27284 {6.00513983, 13.4823303}, //
+
27285 {6.00555992, 13.4808197}, //
+
27286 {6.00614023, 13.47931}, //
+
27287 {6.00689983, 13.4777899}, //
+
27288 {6.00782013, 13.4762802}, //
+
27289 {6.00891018, 13.4747696}, //
+
27290 {6.01016998, 13.4732599}, //
+
27291 {6.01160002, 13.4717503}, //
+
27292 {6.01304007, 13.4709797}, //
+
27293 {6.01434994, 13.47017}, //
+
27294 {6.01554012, 13.4693203}, //
+
27295 {6.01660013, 13.4684296}, //
+
27296 {6.01753998, 13.4674902}, //
+
27297 {6.01836014, 13.4665098}, //
+
27298 {6.01905012, 13.4654799}, //
+
27299 {6.01960993, 13.4644098}, //
+
27300 {6.02005005, 13.4632998}, //
+
27301 {6.02045012, 13.4621897}, //
+
27302 {6.02089024, 13.4611197}, //
+
27303 {6.02136993, 13.4600897}, //
+
27304 {6.02190018, 13.4590998}, //
+
27305 {6.02245998, 13.4581604}, //
+
27306 {6.02306986, 13.4572601}, //
+
27307 {6.02371979, 13.4563999}, //
+
27308 {6.02441978, 13.4555798}, //
+
27309 {6.02514982, 13.4547997}, //
+
27310 {6.02518988, 13.4540501}, //
+
27311 {6.02532005, 13.45329}, //
+
27312 {6.02552986, 13.4525404}, //
+
27313 {6.02581978, 13.4517899}, //
+
27314 {6.02619982, 13.4510403}, //
+
27315 {6.02665997, 13.4502897}, //
+
27316 {6.02721024, 13.4495401}, //
+
27317 {6.02784014, 13.4488001}, //
+
27318 {6.02855015, 13.4480495}, //
+
27319 {6.02925014, 13.4472904}, //
+
27320 {6.02987003, 13.4465399}, //
+
27321 {6.03040981, 13.4457798}, //
+
27322 {6.03086996, 13.4450302}, //
+
27323 {6.03123999, 13.4442701}, //
+
27324 {6.0315299, 13.4435196}, //
+
27325 {6.03173018, 13.4427605}, //
+
27326 {6.03185987, 13.4420099}, //
+
27327 {6.03189993, 13.4412498}, //
+
27328 {6.03268003, 13.4397602}, //
+
27329 {6.03350019, 13.4383097}, //
+
27330 {6.03435993, 13.4369097}, //
+
27331 {6.0352602, 13.4355402}, //
+
27332 {6.03620005, 13.4342203}, //
+
27333 {6.03718996, 13.4329395}, //
+
27334 {6.03821993, 13.4316998}, //
+
27335 {6.03928995, 13.4305}, //
+
27336 {6.04040003, 13.4293499}, //
+
27337 {6.04151011, 13.4282503}, //
+
27338 {6.04258013, 13.4271898}, //
+
27339 {6.0436101, 13.4261703}, //
+
27340 {6.04460001, 13.42519}, //
+
27341 {6.04729986, 13.4224901}, //
+
27342 {6.04812002, 13.4216805}, //
+
27343 {6.04890013, 13.4209003}, //
+
27344 {6.04898024, 13.4194202}, //
+
27345 {6.0492301, 13.4179802}, //
+
27346 {6.04965019, 13.4165802}, //
+
27347 {6.05023003, 13.4152298}, //
+
27348 {6.05098009, 13.4139099}, //
+
27349 {6.05189991, 13.4126301}, //
+
27350 {6.05297995, 13.4113998}, //
+
27351 {6.05423021, 13.4102001}, //
+
27352 {6.05565023, 13.40905}, //
+
27353 {6.0571599, 13.4079399}, //
+
27354 {6.05867004, 13.4068699}, //
+
27355 {6.06018019, 13.4058399}, //
+
27356 {6.06167984, 13.40485}, //
+
27357 {6.06318998, 13.4039097}, //
+
27358 {6.06469011, 13.4030104}, //
+
27359 {6.06619978, 13.4021502}, //
+
27360 {6.06769991, 13.40133}, //
+
27361 {6.06920004, 13.4005499}, //
+
27362 {6.06918001, 13.3998203}, //
+
27363 {6.06911993, 13.3991203}, //
+
27364 {6.06900978, 13.3984699}, //
+
27365 {6.06886005, 13.3978596}, //
+
27366 {6.06867981, 13.3972998}, //
+
27367 {6.06843996, 13.3967695}, //
+
27368 {6.06817007, 13.3962898}, //
+
27369 {6.06786013, 13.3958502}, //
+
27370 {6.06750011, 13.3954496}, //
+
27371 {6.06667995, 13.3946304}, //
+
27372 {6.06244993, 13.3903999}, //
+
27373 {6.06166983, 13.3896399}, //
+
27374 {6.06085014, 13.3888903}, //
+
27375 {6.05998993, 13.3881302}, //
+
27376 {6.05909014, 13.3873796}, //
+
27377 {6.05814981, 13.3866196}, //
+
27378 {6.0571599, 13.38587}, //
+
27379 {6.05612993, 13.3851099}, //
+
27380 {6.05505991, 13.3843603}, //
+
27381 {6.05394983, 13.3836002}, //
+
27382 {6.0528698, 13.3828697}, //
+
27383 {6.05186987, 13.3821697}, //
+
27384 {6.05096006, 13.3815203}, //
+
27385 {6.05011988, 13.3809099}, //
+
27386 {6.04936981, 13.3803501}, //
+
27387 {6.04870987, 13.3798199}, //
+
27388 {6.04812002, 13.3793402}, //
+
27389 {6.04761982, 13.3788996}, //
+
27390 {6.0472002, 13.3785}, //
+
27391 {6.04684019, 13.37815}, //
+
27392 {6.04652977, 13.3778496}, //
+
27393 {6.04625988, 13.3775797}, //
+
27394 {6.04602003, 13.3773603}, //
+
27395 {6.04569006, 13.3770304}, //
+
27396 {6.04557991, 13.3769302}, //
+
27397 {6.04551983, 13.3768702}, //
+
27398 {6.0454998, 13.3768501}, //
+
27399 {6.0453701, 13.3769302}, //
+
27400 {6.04500008, 13.3771801}, //
+
27401 {6.04437017, 13.3775997}, //
+
27402 {6.04348993, 13.3781796}, //
+
27403 {6.04096985, 13.3798504}, //
+
27404 {6.03933001, 13.3809299}, //
+
27405 {6.03743982, 13.3821802}, //
+
27406 {6.03529978, 13.3836002}, //
+
27407 {6.03444004, 13.3843603}, //
+
27408 {6.03337002, 13.3851099}, //
+
27409 {6.03209019, 13.38587}, //
+
27410 {6.03061008, 13.3866196}, //
+
27411 {6.02891016, 13.3873796}, //
+
27412 {6.02700996, 13.3881302}, //
+
27413 {6.02489996, 13.3888903}, //
+
27414 {6.02258015, 13.3896399}, //
+
27415 {6.02005005, 13.3903999}, //
+
27416 {6.01739979, 13.3911104}, //
+
27417 {6.01469994, 13.3917398}, //
+
27418 {6.01196003, 13.3922901}, //
+
27419 {6.00918007, 13.3927498}, //
+
27420 {6.00636005, 13.3931303}, //
+
27421 {6.00348997, 13.3934202}, //
+
27422 {6.00058985, 13.39363}, //
+
27423 {5.99764013, 13.3937597}, //
+
27424 {5.99464989, 13.3937998}, //
+
27425 {5.99240017, 13.3936996}, //
+
27426 {5.99020004, 13.3933802}, //
+
27427 {5.98803997, 13.3928604}, //
+
27428 {5.98591995, 13.3921204}, //
+
27429 {5.98383999, 13.39118}, //
+
27430 {5.98181009, 13.3900204}, //
+
27431 {5.97981024, 13.3886604}, //
+
27432 {5.97785997, 13.3870802}, //
+
27433 {5.97594976, 13.3852997}, //
+
27434 {5.97396994, 13.38344}, //
+
27435 {5.97176981, 13.3816299}, //
+
27436 {5.96936989, 13.3798504}, //
+
27437 {5.96676016, 13.3781099}, //
+
27438 {5.96394014, 13.37642}, //
+
27439 {5.96090984, 13.3747702}, //
+
27440 {5.9576602, 13.3731499}, //
+
27441 {5.9542098, 13.3715801}, //
+
27442 {5.95055008, 13.3700504}, //
+
27443 {5.93821001, 13.3577099}, //
+
27444 {5.93548012, 13.3549805}, //
+
27445 {5.93267012, 13.35217}, //
+
27446 {5.92978001, 13.3492804}, //
+
27447 {5.92679977, 13.3463001}, //
+
27448 {5.9236598, 13.3439198}, //
+
27449 {5.92026997, 13.3412905}, //
+
27450 {5.91662979, 13.3383999}, //
+
27451 {5.91274023, 13.3352604}, //
+
27452 {5.90859985, 13.3318701}, //
+
27453 {5.90420008, 13.3282299}, //
+
27454 {5.89954996, 13.3243399}, //
+
27455 {5.89464998, 13.3202}, //
+
27456 {5.88950014, 13.3157997}, //
+
27457 {5.88431978, 13.3112602}, //
+
27458 {5.87930012, 13.3066702}, //
+
27459 {5.87445021, 13.3020401}, //
+
27460 {5.86977005, 13.2973804}, //
+
27461 {5.86525011, 13.2926598}, //
+
27462 {5.86089993, 13.2879105}, //
+
27463 {5.85671997, 13.2831202}, //
+
27464 {5.85270023, 13.2782803}, //
+
27465 {5.84884977, 13.2734003}, //
+
27466 {5.84529018, 13.2687397}, //
+
27467 {5.84215021, 13.2645397}, //
+
27468 {5.83942986, 13.2608004}, //
+
27469 {5.83796978, 13.2587099}, //
+
27470 {5.83865023, 13.2581501}, //
+
27471 {5.83861017, 13.25809}, //
+
27472 {5.83848, 13.2579002}, //
+
27473 {5.83827019, 13.2575798}, //
+
27474 {5.83797979, 13.2571402}, //
+
27475 {5.83714008, 13.2558804}, //
+
27476 {5.83658981, 13.2550602}, //
+
27477 {5.8352499, 13.2530499}, //
+
27478 {5.83445978, 13.2519102}, //
+
27479 {5.83359003, 13.25072}, //
+
27480 {5.83263016, 13.2494898}, //
+
27481 {5.83206987, 13.2488003}, //
+
27482 {5.83190012, 13.2480001}, //
+
27483 });
+
27484 polys.push_back({
+
27485 {5.82475996, 13.6842203}, //
+
27486 {5.82491016, 13.6846199}, //
+
27487 {5.82501984, 13.6852198}, //
+
27488 {5.82507992, 13.6860304}, //
+
27489 {5.82509995, 13.6870499}, //
+
27490 {5.82505989, 13.6883297}, //
+
27491 {5.82493019, 13.6899004}, //
+
27492 {5.82471991, 13.6917696}, //
+
27493 {5.82442999, 13.6939201}, //
+
27494 {5.82404995, 13.6963701}, //
+
27495 {5.8235898, 13.6991196}, //
+
27496 {5.82304001, 13.7021503}, //
+
27497 {5.82241011, 13.7054796}, //
+
27498 {5.8217001, 13.7090998}, //
+
27499 {5.82107019, 13.7187796}, //
+
27500 {5.82075977, 13.7190504}, //
+
27501 {5.82038021, 13.7192402}, //
+
27502 {5.82000017, 13.7193003}, //
+
27503 {5.81960011, 13.7192202}, //
+
27504 {5.81915998, 13.7189598}, //
+
27505 {5.81867981, 13.7185402}, //
+
27506 {5.81815004, 13.7179604}, //
+
27507 {5.81759024, 13.7172003}, //
+
27508 {5.81697989, 13.71628}, //
+
27509 {5.81632996, 13.7151899}, //
+
27510 {5.81562996, 13.7139301}, //
+
27511 {5.81489992, 13.7124996}, //
+
27512 {5.81485987, 13.7101603}, //
+
27513 {5.81482983, 13.7096796}, //
+
27514 {5.81603003, 13.7070398}, //
+
27515 {5.8167901, 13.70543}, //
+
27516 {5.81754017, 13.7038698}, //
+
27517 {5.81829977, 13.7023497}, //
+
27518 {5.81902981, 13.6994495}, //
+
27519 {5.8197298, 13.6968098}, //
+
27520 {5.82038021, 13.6944199}, //
+
27521 {5.82099009, 13.6922798}, //
+
27522 {5.82154989, 13.6903896}, //
+
27523 {5.82208014, 13.6887503}, //
+
27524 {5.82255983, 13.6873598}, //
+
27525 {5.82299995, 13.6862297}, //
+
27526 {5.82340002, 13.6853504}, //
+
27527 {5.82376003, 13.6847095}, //
+
27528 {5.82406998, 13.6842804}, //
+
27529 {5.82433987, 13.6840496}, //
+
27530 {5.82458019, 13.6840296}, //
+
27531 });
+
27532 polys.push_back({
+
27533 {2.6452899, 13.0190697}, //
+
27534 {2.64703989, 13.0241003}, //
+
27535 {2.64997005, 13.0324697}, //
+
27536 {2.65187001, 13.0379105}, //
+
27537 {2.65405989, 13.0441904}, //
+
27538 {2.65654993, 13.0513}, //
+
27539 {2.65941, 13.0591803}, //
+
27540 {2.66273999, 13.0677204}, //
+
27541 {2.66652989, 13.0769396}, //
+
27542 {2.67077994, 13.0868196}, //
+
27543 {2.6754899, 13.0973701}, //
+
27544 {2.68066001, 13.1085901}, //
+
27545 {2.68630004, 13.12047}, //
+
27546 {2.69238997, 13.1330299}, //
+
27547 {2.69895005, 13.1462498}, //
+
27548 {2.70333004, 13.1577702}, //
+
27549 {2.7074101, 13.1697102}, //
+
27550 {2.71118999, 13.1820602}, //
+
27551 {2.71468997, 13.1948299}, //
+
27552 {2.71789002, 13.2080202}, //
+
27553 {2.72078991, 13.2216301}, //
+
27554 {2.72340989, 13.2356501}, //
+
27555 {2.72572994, 13.2500896}, //
+
27556 {2.72775006, 13.2649498}, //
+
27557 {2.72957993, 13.27985}, //
+
27558 {2.73128009, 13.2944098}, //
+
27559 {2.73285007, 13.3086395}, //
+
27560 {2.7342999, 13.3225403}, //
+
27561 {2.73562002, 13.3360996}, //
+
27562 {2.73681998, 13.3493299}, //
+
27563 {2.73789001, 13.3622198}, //
+
27564 {2.73883009, 13.3747797}, //
+
27565 {2.73965001, 13.3870001}, //
+
27566 {2.73965001, 13.4277}, //
+
27567 {2.74300003, 13.4277}, //
+
27568 {2.74376011, 13.4338903}, //
+
27569 {2.74450994, 13.4404202}, //
+
27570 {2.74527001, 13.4472799}, //
+
27571 {2.74602008, 13.4544802}, //
+
27572 {2.74677992, 13.4620104}, //
+
27573 {2.74752998, 13.4698801}, //
+
27574 {2.74829006, 13.4780798}, //
+
27575 {2.74903989, 13.4866199}, //
+
27576 {2.74979997, 13.4954996}, //
+
27577 {2.75050998, 13.5045404}, //
+
27578 {2.75114012, 13.5135899}, //
+
27579 {2.75168991, 13.5226297}, //
+
27580 {2.75215006, 13.5316696}, //
+
27581 {2.7525301, 13.5407104}, //
+
27582 {2.75282001, 13.5497398}, //
+
27583 {2.75303006, 13.5587797}, //
+
27584 {2.75316, 13.5678196}, //
+
27585 {2.75320005, 13.5768499}, //
+
27586 {2.75311995, 13.5855999}, //
+
27587 {2.75286007, 13.59377}, //
+
27588 {2.75243998, 13.6013403}, //
+
27589 {2.7518599, 13.6083403}, //
+
27590 {2.75110006, 13.6147404}, //
+
27591 {2.75018001, 13.6205597}, //
+
27592 {2.74908996, 13.6257896}, //
+
27593 {2.74782991, 13.6304398}, //
+
27594 {2.74640012, 13.6344995}, //
+
27595 {2.74406004, 13.63902}, //
+
27596 {2.74154997, 13.6435404}, //
+
27597 {2.73887992, 13.6480703}, //
+
27598 {2.7360301, 13.6525898}, //
+
27599 {2.73302007, 13.6571102}, //
+
27600 {2.72984004, 13.6616297}, //
+
27601 {2.72650003, 13.6661596}, //
+
27602 {2.72298002, 13.67068}, //
+
27603 {2.71930003, 13.6752005}, //
+
27604 {2.71636009, 13.6789503}, //
+
27605 {2.71358991, 13.6826496}, //
+
27606 {2.71098995, 13.6863098}, //
+
27607 {2.70854998, 13.68993}, //
+
27608 {2.70629001, 13.6935101}, //
+
27609 {2.70419002, 13.6970396}, //
+
27610 {2.70226002, 13.7005396}, //
+
27611 {2.70050001, 13.70399}, //
+
27612 {2.69889998, 13.7074003}, //
+
27613 {2.69747996, 13.7107296}, //
+
27614 {2.69622993, 13.7139301}, //
+
27615 {2.6951499, 13.7170095}, //
+
27616 {2.69423008, 13.7199602}, //
+
27617 {2.69348001, 13.7227898}, //
+
27618 {2.69289994, 13.7254896}, //
+
27619 {2.69248009, 13.7280703}, //
+
27620 {2.69222999, 13.7305202}, //
+
27621 {2.69215012, 13.7328501}, //
+
27622 {2.69361997, 13.7353401}, //
+
27623 {2.69499993, 13.7382803}, //
+
27624 {2.69630003, 13.7416897}, //
+
27625 {2.69751, 13.7455597}, //
+
27626 {2.69864011, 13.7498798}, //
+
27627 {2.69968009, 13.7546701}, //
+
27628 {2.70063996, 13.7599201}, //
+
27629 {2.70150995, 13.7656298}, //
+
27630 {2.70230007, 13.7718}, //
+
27631 {2.70305991, 13.7781897}, //
+
27632 {2.70380998, 13.7845402}, //
+
27633 {2.70457006, 13.7908401}, //
+
27634 {2.70531988, 13.7971001}, //
+
27635 {2.70607996, 13.8033199}, //
+
27636 {2.70683002, 13.8094902}, //
+
27637 {2.7075901, 13.8156204}, //
+
27638 {2.70833993, 13.8217096}, //
+
27639 {2.70910001, 13.8277502}, //
+
27640 {2.70976996, 13.8336601}, //
+
27641 {2.71027994, 13.8393097}, //
+
27642 {2.71060991, 13.8447199}, //
+
27643 {2.71077991, 13.8498697}, //
+
27644 {2.71077991, 13.8547697}, //
+
27645 {2.71060991, 13.8594198}, //
+
27646 {2.71027994, 13.8638096}, //
+
27647 {2.70976996, 13.86796}, //
+
27648 {2.70910001, 13.87185}, //
+
27649 {2.70836997, 13.8734198}, //
+
27650 {2.70766997, 13.8751202}, //
+
27651 {2.70702004, 13.8769398}, //
+
27652 {2.70640993, 13.87889}, //
+
27653 {2.70584989, 13.8809605}, //
+
27654 {2.70531988, 13.8831596}, //
+
27655 {2.70483994, 13.8854799}, //
+
27656 {2.70440006, 13.8879299}, //
+
27657 {2.704, 13.8905001}, //
+
27658 {2.70360994, 13.8931398}, //
+
27659 {2.70318007, 13.8957901}, //
+
27660 {2.70270991, 13.8984299}, //
+
27661 {2.70218992, 13.9010696}, //
+
27662 {2.70163012, 13.9037104}, //
+
27663 {2.70102, 13.9063396}, //
+
27664 {2.70037007, 13.9089804}, //
+
27665 {2.69968009, 13.9116201}, //
+
27666 {2.69895005, 13.9142504}, //
+
27667 {2.69822001, 13.9168396}, //
+
27668 {2.69752002, 13.9193497}, //
+
27669 {2.69687009, 13.9217701}, //
+
27670 {2.69625998, 13.9241104}, //
+
27671 {2.69569993, 13.9263697}, //
+
27672 {2.69516993, 13.9285402}, //
+
27673 {2.69468999, 13.9306297}, //
+
27674 {2.69425011, 13.9326296}, //
+
27675 {2.69385004, 13.9345503}, //
+
27676 {2.6924901, 13.94137}, //
+
27677 {2.69290996, 13.9404097}, //
+
27678 {2.69349003, 13.9393702}, //
+
27679 {2.69425011, 13.9382401}, //
+
27680 {2.69516993, 13.9370298}, //
+
27681 {2.69625998, 13.93573}, //
+
27682 {2.69752002, 13.9343596}, //
+
27683 {2.69895005, 13.9329004}, //
+
27684 {2.70201993, 13.9281502}, //
+
27685 {2.70521998, 13.9229298}, //
+
27686 {2.70854998, 13.9172602}, //
+
27687 {2.71199989, 13.91113}, //
+
27688 {2.71557999, 13.9045296}, //
+
27689 {2.71928, 13.89748}, //
+
27690 {2.72310996, 13.8899603}, //
+
27691 {2.72707009, 13.8819904}, //
+
27692 {2.73114991, 13.8735504}, //
+
27693 {2.73511004, 13.8647003}, //
+
27694 {2.7386899, 13.8554602}, //
+
27695 {2.74188995, 13.8458595}, //
+
27696 {2.74471998, 13.8358698}, //
+
27697 {2.74716997, 13.82551}, //
+
27698 {2.74923992, 13.8147697}, //
+
27699 {2.75094008, 13.8036604}, //
+
27700 {2.75225997, 13.7921696}, //
+
27701 {2.75320005, 13.7803001}, //
+
27702 {2.75412011, 13.7681599}, //
+
27703 {2.75537992, 13.7558603}, //
+
27704 {2.75696993, 13.7433796}, //
+
27705 {2.75889993, 13.7307396}, //
+
27706 {2.7611599, 13.7179403}, //
+
27707 {2.76376009, 13.7049704}, //
+
27708 {2.76669002, 13.6918297}, //
+
27709 {2.76994991, 13.6785202}, //
+
27710 {2.77355003, 13.6650496}, //
+
27711 {2.77652001, 13.6533203}, //
+
27712 {2.77940011, 13.6407604}, //
+
27713 {2.78221011, 13.6273603}, //
+
27714 {2.78491998, 13.6131201}, //
+
27715 {2.78755999, 13.5980501}, //
+
27716 {2.79011011, 13.58214}, //
+
27717 {2.79257011, 13.5654001}, //
+
27718 {2.79495001, 13.5478201}, //
+
27719 {2.79725003, 13.5293999}, //
+
27720 {2.79930997, 13.5075798}, //
+
27721 {2.80094004, 13.4857903}, //
+
27722 {2.80216002, 13.4640503}, //
+
27723 {2.80295992, 13.4423504}, //
+
27724 {2.80333996, 13.4206896}, //
+
27725 {2.80328989, 13.3990698}, //
+
27726 {2.80282998, 13.37749}, //
+
27727 {2.80194998, 13.3559504}, //
+
27728 {2.80064988, 13.3344498}, //
+
27729 {2.79893994, 13.3136196}, //
+
27730 {2.79680991, 13.2940903}, //
+
27731 {2.79426003, 13.2758598}, //
+
27732 {2.79129004, 13.2589302}, //
+
27733 {2.78789997, 13.2433004}, //
+
27734 {2.78409004, 13.22896}, //
+
27735 {2.77987003, 13.21593}, //
+
27736 {2.77521992, 13.2041903}, //
+
27737 {2.77014995, 13.1937504}, //
+
27738 {2.76636004, 13.1884098}, //
+
27739 {2.76253009, 13.1829395}, //
+
27740 {2.75866008, 13.17735}, //
+
27741 {2.75475001, 13.1716299}, //
+
27742 {2.75079012, 13.1657896}, //
+
27743 {2.74678993, 13.1598196}, //
+
27744 {2.74274993, 13.1537199}, //
+
27745 {2.73867011, 13.1475}, //
+
27746 {2.73455, 13.1411505}, //
+
27747 {2.73036003, 13.1347504}, //
+
27748 {2.72608995, 13.1283503}, //
+
27749 {2.72174001, 13.1219397}, //
+
27750 {2.71729994, 13.1155396}, //
+
27751 {2.71278, 13.1091299}, //
+
27752 {2.70816994, 13.1027298}, //
+
27753 {2.70348001, 13.0963202}, //
+
27754 {2.69870996, 13.0899096}, //
+
27755 {2.69385004, 13.0834999}, //
+
27756 {2.68904996, 13.0772305}, //
+
27757 {2.68446994, 13.0712004}, //
+
27758 {2.68008995, 13.0654297}, //
+
27759 {2.67593002, 13.0599003}, //
+
27760 {2.67196989, 13.0546303}, //
+
27761 {2.66823006, 13.0496101}, //
+
27762 {2.66469002, 13.0448399}, //
+
27763 {2.66137004, 13.0403204}, //
+
27764 {2.65825009, 13.0360498}, //
+
27765 {2.65541005, 13.0321398}, //
+
27766 {2.65289998, 13.0286798}, //
+
27767 {2.65071988, 13.0256901}, //
+
27768 {2.64888, 13.02316}, //
+
27769 {2.64470005, 13.0173998}, //
+
27770 });
+
27771 polys.push_back({
+
27772 {0.217378005, 13.85114}, //
+
27773 {0.216286004, 13.8515396}, //
+
27774 {0.215027004, 13.8522196}, //
+
27775 {0.213599995, 13.8532}, //
+
27776 {0.212141007, 13.8543701}, //
+
27777 {0.210765004, 13.8556299}, //
+
27778 {0.209472001, 13.8569698}, //
+
27779 {0.208261997, 13.8584003}, //
+
27780 {0.207133994, 13.8599005}, //
+
27781 {0.206089005, 13.8614902}, //
+
27782 {0.205127001, 13.8631601}, //
+
27783 {0.204246998, 13.8649101}, //
+
27784 {0.203449994, 13.8667498}, //
+
27785 {0.202736005, 13.8686199}, //
+
27786 {0.202106997, 13.8704395}, //
+
27787 {0.201561004, 13.8722296}, //
+
27788 {0.201098993, 13.87397}, //
+
27789 {0.200721994, 13.8756704}, //
+
27790 {0.200427994, 13.8773298}, //
+
27791 {0.200218007, 13.8789396}, //
+
27792 {0.200092003, 13.8805199}, //
+
27793 {0.200049996, 13.8820496}, //
+
27794 {0.200195998, 13.8835497}, //
+
27795 {0.200635001, 13.8850498}, //
+
27796 {0.201367006, 13.8865604}, //
+
27797 {0.202390999, 13.8880596}, //
+
27798 {0.203706995, 13.8895702}, //
+
27799 {0.205317006, 13.8910704}, //
+
27800 {0.207219005, 13.89258}, //
+
27801 {0.209413007, 13.8940897}, //
+
27802 {0.211899996, 13.8956003}, //
+
27803 {0.214586005, 13.89709}, //
+
27804 {0.217354, 13.8985395}, //
+
27805 {0.220206007, 13.8999395}, //
+
27806 {0.223140001, 13.9013004}, //
+
27807 {0.226155996, 13.9026203}, //
+
27808 {0.229256004, 13.9038897}, //
+
27809 {0.232437998, 13.9051199}, //
+
27810 {0.235701993, 13.9063101}, //
+
27811 {0.239050001, 13.9074497}, //
+
27812 {0.242418006, 13.9085598}, //
+
27813 {0.245744005, 13.9096298}, //
+
27814 {0.249027997, 13.9106598}, //
+
27815 {0.252270013, 13.9116497}, //
+
27816 {0.255470008, 13.91259}, //
+
27817 {0.258628011, 13.9134903}, //
+
27818 {0.261743993, 13.9143496}, //
+
27819 {0.264818013, 13.9151697}, //
+
27820 {0.267850012, 13.9159498}, //
+
27821 {0.270736009, 13.9166603}, //
+
27822 {0.273371011, 13.9172897}, //
+
27823 {0.275756001, 13.91784}, //
+
27824 {0.277889997, 13.9182997}, //
+
27825 {0.279772997, 13.9186802}, //
+
27826 {0.281405985, 13.9189701}, //
+
27827 {0.282788008, 13.9191799}, //
+
27828 {0.283919007, 13.9193096}, //
+
27829 {0.284799993, 13.9193497}, //
+
27830 {0.284673989, 13.9185495}, //
+
27831 {0.284296006, 13.9176702}, //
+
27832 {0.283666998, 13.9167099}, //
+
27833 {0.282784998, 13.9156599}, //
+
27834 {0.281652004, 13.9145203}, //
+
27835 {0.280267, 13.9133101}, //
+
27836 {0.278629988, 13.9119997}, //
+
27837 {0.276740998, 13.9106197}, //
+
27838 {0.274599999, 13.9091501}, //
+
27839 {0.272323012, 13.9075899}, //
+
27840 {0.270004988, 13.9059}, //
+
27841 {0.267643988, 13.9040804}, //
+
27842 {0.26524201, 13.9021301}, //
+
27843 {0.262798011, 13.9000597}, //
+
27844 {0.260311007, 13.8978596}, //
+
27845 {0.257782996, 13.8955297}, //
+
27846 {0.255212009, 13.8930798}, //
+
27847 {0.252600014, 13.8905001}, //
+
27848 {0.250007987, 13.8878899}, //
+
27849 {0.247499004, 13.8853102}, //
+
27850 {0.245072007, 13.8827801}, //
+
27851 {0.242727995, 13.88029}, //
+
27852 {0.240466997, 13.87784}, //
+
27853 {0.238288999, 13.8754301}, //
+
27854 {0.236193001, 13.8730602}, //
+
27855 {0.234180003, 13.8707399}, //
+
27856 {0.232250005, 13.8684502}, //
+
27857 {0.230434999, 13.8662796}, //
+
27858 {0.228744, 13.8642702}, //
+
27859 {0.227178007, 13.8624296}, //
+
27860 {0.225736007, 13.8607597}, //
+
27861 {0.224419996, 13.8592596}, //
+
27862 {0.223227993, 13.8579197}, //
+
27863 {0.222159997, 13.85674}, //
+
27864 {0.221218005, 13.8557396}, //
+
27865 {0.220400006, 13.8549004}, //
+
27866 {0.220315993, 13.85355}, //
+
27867 {0.220063999, 13.8524799}, //
+
27868 {0.219643995, 13.8517103}, //
+
27869 {0.219056994, 13.8512297}, //
+
27870 {0.218300998, 13.8510399}, //
+
27871 });
+
27872 polys.push_back({
+
27873 {4.55426979, 12.9988604}, //
+
27874 {4.5618, 13.0186396}, //
+
27875 {4.56431007, 13.0252304}, //
+
27876 {4.56715012, 13.0326996}, //
+
27877 {4.56996012, 13.0409698}, //
+
27878 {4.57235003, 13.0499401}, //
+
27879 {4.57432985, 13.0596304}, //
+
27880 {4.57588005, 13.0700302}, //
+
27881 {4.57701015, 13.0811396}, //
+
27882 {4.57773018, 13.0929699}, //
+
27883 {4.5780201, 13.1055002}, //
+
27884 {4.57789993, 13.1187401}, //
+
27885 {4.57735014, 13.1327}, //
+
27886 {4.57622004, 13.1472301}, //
+
27887 {4.57432985, 13.1621799}, //
+
27888 {4.57169008, 13.1775398}, //
+
27889 {4.56829977, 13.1933298}, //
+
27890 {4.56415987, 13.2095299}, //
+
27891 {4.55925989, 13.22614}, //
+
27892 {4.55360985, 13.2431803}, //
+
27893 {4.54721022, 13.2606297}, //
+
27894 {4.54005003, 13.2784996}, //
+
27895 {4.53134012, 13.2981701}, //
+
27896 {4.52330017, 13.3165102}, //
+
27897 {4.51593018, 13.3335104}, //
+
27898 {4.50924015, 13.3491602}, //
+
27899 {4.50321007, 13.3634796}, //
+
27900 {4.49784994, 13.3764601}, //
+
27901 {4.49315977, 13.3880901}, //
+
27902 {4.48915005, 13.3983898}, //
+
27903 {4.48579979, 13.4073496}, //
+
27904 {4.48285007, 13.41465}, //
+
27905 {4.48003006, 13.4215002}, //
+
27906 {4.47733021, 13.4278803}, //
+
27907 {4.47475004, 13.4337997}, //
+
27908 {4.47230005, 13.4392595}, //
+
27909 {4.46997976, 13.4442596}, //
+
27910 {4.46778011, 13.4488001}, //
+
27911 {4.46570015, 13.4528799}, //
+
27912 {4.46374989, 13.4565001}, //
+
27913 {4.46177006, 13.4598303}, //
+
27914 {4.45956993, 13.4630299}, //
+
27915 {4.45717001, 13.4661102}, //
+
27916 {4.4545598, 13.4690599}, //
+
27917 {4.45173979, 13.4718904}, //
+
27918 {4.44870996, 13.4745903}, //
+
27919 {4.44545984, 13.47717}, //
+
27920 {4.44200993, 13.47962}, //
+
27921 {4.4383502, 13.4819498}, //
+
27922 {4.42940998, 13.4874096}, //
+
27923 {4.42068005, 13.4932404}, //
+
27924 {4.41215992, 13.4994497}, //
+
27925 {4.40384007, 13.5060396}, //
+
27926 {4.39574003, 13.51301}, //
+
27927 {4.38783979, 13.5203505}, //
+
27928 {4.38014984, 13.5280704}, //
+
27929 {4.37267017, 13.53617}, //
+
27930 {4.36539984, 13.5446501}, //
+
27931 {4.35872984, 13.5534201}, //
+
27932 {4.35301018, 13.5623999}, //
+
27933 {4.34826994, 13.5715904}, //
+
27934 {4.34448004, 13.5810003}, //
+
27935 {4.34166002, 13.5906096}, //
+
27936 {4.33979988, 13.6004295}, //
+
27937 {4.33890009, 13.6104603}, //
+
27938 {4.33897018, 13.6206999}, //
+
27939 {4.34000015, 13.6311502}, //
+
27940 {4.34004021, 13.6348696}, //
+
27941 {4.34016991, 13.6385202}, //
+
27942 {4.34038019, 13.6420698}, //
+
27943 {4.34067011, 13.6455498}, //
+
27944 {4.34105015, 13.6489296}, //
+
27945 {4.34150982, 13.6522398}, //
+
27946 {4.34206009, 13.6554604}, //
+
27947 {4.34268999, 13.6585999}, //
+
27948 {4.3434, 13.6616497}, //
+
27949 {4.34418011, 13.6669302}, //
+
27950 {4.34498978, 13.6722002}, //
+
27951 {4.34584999, 13.6774797}, //
+
27952 {4.34674978, 13.6827497}, //
+
27953 {4.34769011, 13.6880198}, //
+
27954 {4.34867001, 13.6932898}, //
+
27955 {4.34968996, 13.6985598}, //
+
27956 {4.35074997, 13.7038298}, //
+
27957 {4.35185003, 13.7090998}, //
+
27958 {4.35316992, 13.7145004}, //
+
27959 {4.35486984, 13.7201595}, //
+
27960 {4.35693979, 13.7260599}, //
+
27961 {4.3593998, 13.7322197}, //
+
27962 {4.36221981, 13.7386198}, //
+
27963 {4.36542988, 13.7452803}, //
+
27964 {4.36900997, 13.7521801}, //
+
27965 {4.3729701, 13.7593403}, //
+
27966 {4.37729979, 13.7667503}, //
+
27967 {4.38251019, 13.7777596}, //
+
27968 {4.38759995, 13.7881804}, //
+
27969 {4.39257002, 13.7980099}, //
+
27970 {4.3973999, 13.8072596}, //
+
27971 {4.4021101, 13.8159199}, //
+
27972 {4.40670013, 13.8239899}, //
+
27973 {4.41115999, 13.83148}, //
+
27974 {4.41549015, 13.8383799}, //
+
27975 {4.41970015, 13.8446999}, //
+
27976 {4.42361021, 13.8504}, //
+
27977 {4.42707014, 13.8554296}, //
+
27978 {4.43005991, 13.8597803}, //
+
27979 {4.43259001, 13.8634701}, //
+
27980 {4.43466997, 13.8664904}, //
+
27981 {4.43627977, 13.8688297}, //
+
27982 {4.4374299, 13.8705101}, //
+
27983 {4.4383502, 13.87185}, //
+
27984 {4.43831015, 13.8703899}, //
+
27985 {4.43817997, 13.8690205}, //
+
27986 {4.43797016, 13.8677197}, //
+
27987 {4.43767977, 13.8665104}, //
+
27988 {4.43730021, 13.8653803}, //
+
27989 {4.43684006, 13.8643398}, //
+
27990 {4.43628979, 13.8633804}, //
+
27991 {4.43565989, 13.8625002}, //
+
27992 {4.43494987, 13.8617001}, //
+
27993 {4.43264008, 13.8576202}, //
+
27994 {4.43025017, 13.85291}, //
+
27995 {4.42778015, 13.8475704}, //
+
27996 {4.42522001, 13.84161}, //
+
27997 {4.42257977, 13.8350096}, //
+
27998 {4.41985989, 13.8277903}, //
+
27999 {4.4170599, 13.8199396}, //
+
28000 {4.41416979, 13.8114595}, //
+
28001 {4.41120005, 13.80235}, //
+
28002 {4.40860987, 13.7926102}, //
+
28003 {4.40684986, 13.7822504}, //
+
28004 {4.40593004, 13.7712603}, //
+
28005 {4.40584993, 13.7596397}, //
+
28006 {4.40661001, 13.7474003}, //
+
28007 {4.40819979, 13.7345304}, //
+
28008 {4.41063023, 13.7210302}, //
+
28009 {4.4138999, 13.7068996}, //
+
28010 {4.41800022, 13.6921501}, //
+
28011 {4.42473984, 13.6738195}, //
+
28012 {4.43138981, 13.6564903}, //
+
28013 {4.43796015, 13.6401701}, //
+
28014 {4.4444499, 13.6248503}, //
+
28015 {4.45085001, 13.6105299}, //
+
28016 {4.45718002, 13.5972204}, //
+
28017 {4.46341991, 13.5849104}, //
+
28018 {4.46958017, 13.5735998}, //
+
28019 {4.47564983, 13.5633001}, //
+
28020 {4.48146009, 13.5528803}, //
+
28021 {4.4868598, 13.5427103}, //
+
28022 {4.49182987, 13.5327902}, //
+
28023 {4.49638987, 13.5231304}, //
+
28024 {4.50052977, 13.51371}, //
+
28025 {4.50425005, 13.5045404}, //
+
28026 {4.50754976, 13.4956303}, //
+
28027 {4.51043987, 13.4869604}, //
+
28028 {4.51289988, 13.47855}, //
+
28029 {4.51600981, 13.4675398}, //
+
28030 {4.51927996, 13.4571199}, //
+
28031 {4.52271986, 13.4472799}, //
+
28032 {4.52631998, 13.4380302}, //
+
28033 {4.53008986, 13.4293604}, //
+
28034 {4.53402996, 13.4212799}, //
+
28035 {4.53813982, 13.4137897}, //
+
28036 {4.5424099, 13.4068804}, //
+
28037 {4.5468502, 13.4005499}, //
+
28038 {4.54977989, 13.3953199}, //
+
28039 {4.55253983, 13.3901796}, //
+
28040 {4.55513, 13.3851204}, //
+
28041 {4.55754995, 13.3801498}, //
+
28042 {4.55981016, 13.3752499}, //
+
28043 {4.56189013, 13.3704395}, //
+
28044 {4.56380987, 13.3657103}, //
+
28045 {4.56556988, 13.3610601}, //
+
28046 {4.56715012, 13.3564997}, //
+
28047 {4.56867981, 13.3509302}, //
+
28048 {4.57025003, 13.3447704}, //
+
28049 {4.57186985, 13.3380299}, //
+
28050 {4.57352018, 13.3306999}, //
+
28051 {4.57521009, 13.3227797}, //
+
28052 {4.57695007, 13.3142796}, //
+
28053 {4.57873011, 13.3051901}, //
+
28054 {4.58054018, 13.2955103}, //
+
28055 {4.58239985, 13.2852497}, //
+
28056 {4.58424997, 13.2747097}, //
+
28057 {4.58600998, 13.2641602}, //
+
28058 {4.58768988, 13.2536201}, //
+
28059 {4.58928013, 13.2430696}, //
+
28060 {4.59079981, 13.2325296}, //
+
28061 {4.59221983, 13.2219801}, //
+
28062 {4.59357023, 13.2114401}, //
+
28063 {4.59482002, 13.2008896}, //
+
28064 {4.59600019, 13.1903496}, //
+
28065 {4.59707022, 13.1801796}, //
+
28066 {4.59801006, 13.1707602}, //
+
28067 {4.59883022, 13.1620998}, //
+
28068 {4.59953022, 13.1541901}, //
+
28069 {4.60009003, 13.1470299}, //
+
28070 {4.60053015, 13.1406202}, //
+
28071 {4.60085011, 13.1349602}, //
+
28072 {4.60103989, 13.1300497}, //
+
28073 {4.60109997, 13.1259003}, //
+
28074 {4.60101986, 13.1234798}, //
+
28075 {4.60075998, 13.1207199}, //
+
28076 {4.60033989, 13.1176205}, //
+
28077 {4.59976006, 13.1141901}, //
+
28078 {4.59899998, 13.1104202}, //
+
28079 {4.59808016, 13.1063204}, //
+
28080 {4.59699011, 13.1018801}, //
+
28081 {4.59572983, 13.0971098}, //
+
28082 {4.59429979, 13.092}, //
+
28083 {4.59275007, 13.0867701}, //
+
28084 {4.59111023, 13.0816298}, //
+
28085 {4.5893898, 13.0765696}, //
+
28086 {4.5875802, 13.0716}, //
+
28087 {4.58570004, 13.0667}, //
+
28088 {4.58372021, 13.0618896}, //
+
28089 {4.58166981, 13.0571604}, //
+
28090 {4.57952023, 13.0525103}, //
+
28091 {4.57730007, 13.0479498}, //
+
28092 {4.57508993, 13.0434904}, //
+
28093 {4.57294989, 13.0391598}, //
+
28094 {4.57090998, 13.0349503}, //
+
28095 {4.56894016, 13.0308704}, //
+
28096 {4.56705999, 13.0269098}, //
+
28097 {4.56525993, 13.0230799}, //
+
28098 {4.56353998, 13.0193796}, //
+
28099 {4.56190014, 13.0158005}, //
+
28100 {4.56034994, 13.0123501}, //
+
28101 {4.55359983, 12.9970999}, //
+
28102 });
+
28103 polys.push_back({
+
28104 {1.46355999, 13.6652098}, //
+
28105 {1.46149004, 13.6657801}, //
+
28106 {1.45853996, 13.6667204}, //
+
28107 {1.45471001, 13.6680403}, //
+
28108 {1.44999003, 13.6697302}, //
+
28109 {1.44439995, 13.6717997}, //
+
28110 {1.42781997, 13.6761503}, //
+
28111 {1.41123998, 13.6801796}, //
+
28112 {1.39467001, 13.6838598}, //
+
28113 {1.37809002, 13.6872101}, //
+
28114 {1.36151004, 13.6902304}, //
+
28115 {1.34493005, 13.6929102}, //
+
28116 {1.32835996, 13.69526}, //
+
28117 {1.31177998, 13.6972704}, //
+
28118 {1.29519999, 13.6989498}, //
+
28119 {1.28322995, 13.69979}, //
+
28120 {1.27142, 13.7007904}, //
+
28121 {1.25978994, 13.7019701}, //
+
28122 {1.24831998, 13.70331}, //
+
28123 {1.23702002, 13.7048101}, //
+
28124 {1.22589004, 13.70648}, //
+
28125 {1.21492004, 13.7083197}, //
+
28126 {1.20413005, 13.71033}, //
+
28127 {1.19350004, 13.7124996}, //
+
28128 {1.18177998, 13.7156}, //
+
28129 {1.16922998, 13.7188597}, //
+
28130 {1.15583003, 13.72229}, //
+
28131 {1.14160001, 13.7258902}, //
+
28132 {1.12653995, 13.7296495}, //
+
28133 {1.11063004, 13.7335901}, //
+
28134 {1.09388995, 13.73769}, //
+
28135 {1.07631004, 13.7419596}, //
+
28136 {1.05789995, 13.7463999}, //
+
28137 {1.04601002, 13.7493696}, //
+
28138 {1.03445995, 13.7522497}, //
+
28139 {1.02323997, 13.7550602}, //
+
28140 {1.01234996, 13.7577696}, //
+
28141 {1.00179994, 13.7604103}, //
+
28142 {0.99158901, 13.7629604}, //
+
28143 {0.98170799, 13.76542}, //
+
28144 {0.972162008, 13.7678003}, //
+
28145 {0.962949991, 13.7700996}, //
+
28146 {0.954282999, 13.7723198}, //
+
28147 {0.946370006, 13.7744703}, //
+
28148 {0.939211011, 13.7765198}, //
+
28149 {0.932807028, 13.7784996}, //
+
28150 {0.927156985, 13.7803802}, //
+
28151 {0.922261, 13.7821903}, //
+
28152 {0.918120027, 13.7839098}, //
+
28153 {0.914732993, 13.7855501}, //
+
28154 {0.912100017, 13.7870998}, //
+
28155 {0.907096028, 13.7885904}, //
+
28156 {0.901130021, 13.79004}, //
+
28157 {0.894200027, 13.79144}, //
+
28158 {0.886307001, 13.7927999}, //
+
28159 {0.877452016, 13.7941198}, //
+
28160 {0.867632985, 13.7953901}, //
+
28161 {0.856851995, 13.7966204}, //
+
28162 {0.845107019, 13.7978096}, //
+
28163 {0.832400024, 13.7989502}, //
+
28164 {0.81931603, 13.8000202}, //
+
28165 {0.806442022, 13.8009596}, //
+
28166 {0.793778002, 13.8017797}, //
+
28167 {0.781323016, 13.8024797}, //
+
28168 {0.76907903, 13.8030396}, //
+
28169 {0.757044017, 13.8034801}, //
+
28170 {0.745220006, 13.8037996}, //
+
28171 {0.733605027, 13.8039904}, //
+
28172 {0.722199976, 13.8040504}, //
+
28173 {0.713847995, 13.8040304}, //
+
28174 {0.705370009, 13.8039703}, //
+
28175 {0.696766973, 13.8038597}, //
+
28176 {0.688036978, 13.80371}, //
+
28177 {0.67918098, 13.8035297}, //
+
28178 {0.67019999, 13.8032904}, //
+
28179 {0.661092997, 13.8030195}, //
+
28180 {0.651858985, 13.8027096}, //
+
28181 {0.642499983, 13.80235}, //
+
28182 {0.633256018, 13.8019505}, //
+
28183 {0.624343991, 13.8015099}, //
+
28184 {0.615767002, 13.8010302}, //
+
28185 {0.607522011, 13.8004999}, //
+
28186 {0.599610984, 13.7999401}, //
+
28187 {0.592033029, 13.7993298}, //
+
28188 {0.584788978, 13.7986803}, //
+
28189 {0.577877998, 13.7979803}, //
+
28190 {0.57130003, 13.7972498}, //
+
28191 {0.565256, 13.7965498}, //
+
28192 {0.551388979, 13.7949305}, //
+
28193 {0.548188984, 13.7945604}, //
+
28194 {0.545700014, 13.7942696}, //
+
28195 {0.542500019, 13.7938995}, //
+
28196 {0.544408023, 13.7947502}, //
+
28197 {0.547110021, 13.7958097}, //
+
28198 {0.550606012, 13.79708}, //
+
28199 {0.554894984, 13.7985601}, //
+
28200 {0.559978008, 13.8002501}, //
+
28201 {0.56585598, 13.8021402}, //
+
28202 {0.572526991, 13.8042498}, //
+
28203 {0.579990983, 13.8065701}, //
+
28204 {0.588249981, 13.8091002}, //
+
28205 {0.596979022, 13.8116999}, //
+
28206 {0.605832994, 13.8142204}, //
+
28207 {0.614811003, 13.8166504}, //
+
28208 {0.623914003, 13.8190002}, //
+
28209 {0.633141994, 13.8212605}, //
+
28210 {0.642494023, 13.8234301}, //
+
28211 {0.651971996, 13.8255196}, //
+
28212 {0.661572993, 13.8275299}, //
+
28213 {0.671299994, 13.8294497}, //
+
28214 {0.680806994, 13.8312302}, //
+
28215 {0.689727008, 13.8328104}, //
+
28216 {0.698060989, 13.8341703}, //
+
28217 {0.705808997, 13.83533}, //
+
28218 {0.712970018, 13.8362703}, //
+
28219 {0.719543993, 13.8370104}, //
+
28220 {0.725533009, 13.8375301}, //
+
28221 {0.730934978, 13.8378496}, //
+
28222 {0.73575002, 13.8379498}, //
+
28223 {0.744436026, 13.8370895}, //
+
28224 {0.753917992, 13.8360205}, //
+
28225 {0.764194012, 13.8347397}, //
+
28226 {0.775265992, 13.8332596}, //
+
28227 {0.787132978, 13.8315601}, //
+
28228 {0.799794018, 13.8296604}, //
+
28229 {0.813251019, 13.8275499}, //
+
28230 {0.827503026, 13.8252296}, //
+
28231 {0.84254998, 13.8226995}, //
+
28232 {0.857774973, 13.8200502}, //
+
28233 {0.872537971, 13.8173504}, //
+
28234 {0.886838973, 13.8146095}, //
+
28235 {0.900677979, 13.81182}, //
+
28236 {0.914056003, 13.8089895}, //
+
28237 {0.926971972, 13.8061199}, //
+
28238 {0.939427018, 13.8032103}, //
+
28239 {0.951418996, 13.8002501}, //
+
28240 {0.962949991, 13.7972498}, //
+
28241 {0.971448004, 13.7957897}, //
+
28242 {0.980364978, 13.7944202}, //
+
28243 {0.989700019, 13.7931204}, //
+
28244 {0.999454021, 13.7919102}, //
+
28245 {1.00962996, 13.7907801}, //
+
28246 {1.02022004, 13.7897396}, //
+
28247 {1.03122997, 13.7887802}, //
+
28248 {1.04264998, 13.7879}, //
+
28249 {1.05449998, 13.7870998}, //
+
28250 {1.06851995, 13.7875605}, //
+
28251 {1.08194995, 13.7874403}, //
+
28252 {1.0948, 13.7867298}, //
+
28253 {1.10705996, 13.78543}, //
+
28254 {1.11873996, 13.7835503}, //
+
28255 {1.12983, 13.7810802}, //
+
28256 {1.14033997, 13.7780199}, //
+
28257 {1.15025997, 13.7743797}, //
+
28258 {1.15960002, 13.7701502}, //
+
28259 {1.16741002, 13.7656298}, //
+
28260 {1.17576003, 13.7611103}, //
+
28261 {1.18464994, 13.7565804}, //
+
28262 {1.19409001, 13.7520599}, //
+
28263 {1.20406997, 13.7475405}, //
+
28264 {1.21459997, 13.7430201}, //
+
28265 {1.22566998, 13.7384901}, //
+
28266 {1.23729002, 13.7339697}, //
+
28267 {1.24944997, 13.7294502}, //
+
28268 {1.26181996, 13.7250996}, //
+
28269 {1.27406001, 13.7210798}, //
+
28270 {1.28618002, 13.7173901}, //
+
28271 {1.29817998, 13.7140503}, //
+
28272 {1.31004, 13.7110395}, //
+
28273 {1.32177997, 13.7083597}, //
+
28274 {1.33340001, 13.7060204}, //
+
28275 {1.34489, 13.7040195}, //
+
28276 {1.35625005, 13.7023497}, //
+
28277 {1.36514997, 13.7000799}, //
+
28278 {1.37374997, 13.6978197}, //
+
28279 {1.38206005, 13.69555}, //
+
28280 {1.39007998, 13.6932802}, //
+
28281 {1.39779997, 13.69102}, //
+
28282 {1.40523005, 13.6887503}, //
+
28283 {1.41235995, 13.6864796}, //
+
28284 {1.41919994, 13.6842203}, //
+
28285 {1.42575002, 13.6819496}, //
+
28286 {1.43191004, 13.67976}, //
+
28287 {1.43755996, 13.6776896}, //
+
28288 {1.44272006, 13.6757402}, //
+
28289 {1.44736004, 13.6739302}, //
+
28290 {1.45150995, 13.6722298}, //
+
28291 {1.45515001, 13.67066}, //
+
28292 {1.45828998, 13.66922}, //
+
28293 {1.46091998, 13.6679001}, //
+
28294 {1.46305001, 13.6667004}, //
+
28295 {1.46449995, 13.6657696}, //
+
28296 {1.46507001, 13.6652098}, //
+
28297 {1.46475995, 13.66502}, //
+
28298 });
+
28299 polys.push_back({
+
28300 {0.217283994, 13.7549}, //
+
28301 {0.216239005, 13.7550602}, //
+
28302 {0.215277001, 13.7553902}, //
+
28303 {0.214396998, 13.7558899}, //
+
28304 {0.213599995, 13.7565498}, //
+
28305 {0.212886006, 13.75735}, //
+
28306 {0.212256998, 13.7582302}, //
+
28307 {0.211711004, 13.7591896}, //
+
28308 {0.211248994, 13.7602396}, //
+
28309 {0.210871994, 13.7613802}, //
+
28310 {0.210577995, 13.7625904}, //
+
28311 {0.210368007, 13.7638998}, //
+
28312 {0.210242003, 13.7652798}, //
+
28313 {0.210199997, 13.7667503}, //
+
28314 {0.210304007, 13.7675896}, //
+
28315 {0.210617006, 13.76859}, //
+
28316 {0.211138994, 13.7697697}, //
+
28317 {0.211869001, 13.7711096}, //
+
28318 {0.212807998, 13.7726097}, //
+
28319 {0.213955998, 13.7742796}, //
+
28320 {0.215312004, 13.7761202}, //
+
28321 {0.216876999, 13.7781296}, //
+
28322 {0.218649998, 13.7803001}, //
+
28323 {0.220602006, 13.7825203}, //
+
28324 {0.222680002, 13.7846603}, //
+
28325 {0.224883005, 13.7867203}, //
+
28326 {0.227212995, 13.7886896}, //
+
28327 {0.229669005, 13.7905703}, //
+
28328 {0.232250005, 13.7923698}, //
+
28329 {0.234956995, 13.7940798}, //
+
28330 {0.237791002, 13.7957096}, //
+
28331 {0.24075, 13.7972498}, //
+
28332 {0.244475007, 13.8002701}, //
+
28333 {0.248115003, 13.8032904}, //
+
28334 {0.251672, 13.8063097}, //
+
28335 {0.255145013, 13.80933}, //
+
28336 {0.258534014, 13.8123503}, //
+
28337 {0.261839002, 13.8153601}, //
+
28338 {0.265060008, 13.8183804}, //
+
28339 {0.268197, 13.8213902}, //
+
28340 {0.27125001, 13.8243999}, //
+
28341 {0.271438986, 13.8242102}, //
+
28342 {0.272278011, 13.82337}, //
+
28343 {0.272949994, 13.8226995}, //
+
28344 {0.273328006, 13.8223}, //
+
28345 {0.273705989, 13.8218603}, //
+
28346 {0.274082989, 13.8213797}, //
+
28347 {0.274461001, 13.8208504}, //
+
28348 {0.274839014, 13.8202896}, //
+
28349 {0.275216997, 13.8196802}, //
+
28350 {0.275593996, 13.8190298}, //
+
28351 {0.275972009, 13.8183298}, //
+
28352 {0.276349992, 13.8176003}, //
+
28353 {0.276748002, 13.8168898}, //
+
28354 {0.27718699, 13.8162603}, //
+
28355 {0.277666986, 13.8157101}, //
+
28356 {0.278187007, 13.8152504}, //
+
28357 {0.278748006, 13.8148699}, //
+
28358 {0.279350013, 13.81458}, //
+
28359 {0.279992998, 13.8143702}, //
+
28360 {0.280676007, 13.8142405}, //
+
28361 {0.281399995, 13.8142004}, //
+
28362 {0.281358004, 13.8134298}, //
+
28363 {0.281231999, 13.8126202}, //
+
28364 {0.281022012, 13.8117704}, //
+
28365 {0.280728012, 13.8108797}, //
+
28366 {0.280351013, 13.8099403}, //
+
28367 {0.279888988, 13.80896}, //
+
28368 {0.279343009, 13.80793}, //
+
28369 {0.278714001, 13.80686}, //
+
28370 {0.277999997, 13.8057499}, //
+
28371 {0.277170986, 13.8046398}, //
+
28372 {0.276172996, 13.8035698}, //
+
28373 {0.275005996, 13.8025398}, //
+
28374 {0.273669004, 13.8015499}, //
+
28375 {0.272163987, 13.8006096}, //
+
28376 {0.270489007, 13.7997103}, //
+
28377 {0.268644989, 13.7988501}, //
+
28378 {0.266631991, 13.7980299}, //
+
28379 {0.264450014, 13.7972498}, //
+
28380 {0.261480987, 13.7949104}, //
+
28381 {0.258596003, 13.7924004}, //
+
28382 {0.255793989, 13.7897301}, //
+
28383 {0.253077, 13.7868795}, //
+
28384 {0.250443995, 13.7838697}, //
+
28385 {0.247894004, 13.7806902}, //
+
28386 {0.245428994, 13.7773504}, //
+
28387 {0.243047997, 13.7738304}, //
+
28388 {0.24075, 13.7701502}, //
+
28389 {0.238525003, 13.7679701}, //
+
28390 {0.236385003, 13.7659502}, //
+
28391 {0.234328002, 13.7641096}, //
+
28392 {0.232354999, 13.7624302}, //
+
28393 {0.230465993, 13.7609196}, //
+
28394 {0.228661001, 13.7595701}, //
+
28395 {0.226940006, 13.7584}, //
+
28396 {0.225302994, 13.75739}, //
+
28397 {0.223749995, 13.7565498}, //
+
28398 {0.222290993, 13.7558899}, //
+
28399 {0.220915005, 13.7553902}, //
+
28400 {0.219622001, 13.7550602}, //
+
28401 {0.218411997, 13.7549}, //
+
28402 });
+
28403 polys.push_back({
+
28404 {0.214539006, 13.6399803}, //
+
28405 {0.214017004, 13.6402102}, //
+
28406 {0.213704005, 13.6406498}, //
+
28407 {0.213599995, 13.6413002}, //
+
28408 {0.214417994, 13.6421804}, //
+
28409 {0.215360001, 13.6433096}, //
+
28410 {0.216427997, 13.6446896}, //
+
28411 {0.21762, 13.6463299}, //
+
28412 {0.218935996, 13.6482096}, //
+
28413 {0.220377997, 13.6503401}, //
+
28414 {0.221944004, 13.65273}, //
+
28415 {0.223635003, 13.6553602}, //
+
28416 {0.225449994, 13.6582499}, //
+
28417 {0.227358997, 13.6612797}, //
+
28418 {0.229308993, 13.66436}, //
+
28419 {0.231299996, 13.66747}, //
+
28420 {0.233330995, 13.6706305}, //
+
28421 {0.235404, 13.67383}, //
+
28422 {0.237516999, 13.6770697}, //
+
28423 {0.239669994, 13.6803598}, //
+
28424 {0.241864994, 13.6836796}, //
+
28425 {0.244100004, 13.6870499}, //
+
28426 {0.246365994, 13.6904097}, //
+
28427 {0.248631001, 13.6936798}, //
+
28428 {0.25089401, 13.6968699}, //
+
28429 {0.25315699, 13.6999702}, //
+
28430 {0.255418003, 13.7029896}, //
+
28431 {0.257678002, 13.7059202}, //
+
28432 {0.259936005, 13.7087603}, //
+
28433 {0.262194008, 13.7115202}, //
+
28434 {0.264450014, 13.7142}, //
+
28435 {0.266591012, 13.7167301}, //
+
28436 {0.268480003, 13.7190504}, //
+
28437 {0.270117015, 13.7211599}, //
+
28438 {0.271501988, 13.7230597}, //
+
28439 {0.272635013, 13.7247601}, //
+
28440 {0.273517013, 13.7262402}, //
+
28441 {0.274145991, 13.72752}, //
+
28442 {0.274524003, 13.72859}, //
+
28443 {0.274650007, 13.7294502}, //
+
28444 {0.276906013, 13.7258101}, //
+
28445 {0.279163986, 13.7224197}, //
+
28446 {0.281421989, 13.7192802}, //
+
28447 {0.283681989, 13.7163897}, //
+
28448 {0.285943002, 13.7137499}, //
+
28449 {0.288206011, 13.71136}, //
+
28450 {0.290468991, 13.7092199}, //
+
28451 {0.292733997, 13.7073402}, //
+
28452 {0.294999987, 13.7056999}, //
+
28453 {0.296416998, 13.7049303}, //
+
28454 {0.297289997, 13.7043695}, //
+
28455 {0.297646999, 13.6914701}, //
+
28456 {0.297239006, 13.6912098}, //
+
28457 {0.295610011, 13.6903496}, //
+
28458 {0.293729991, 13.6895304}, //
+
28459 {0.291599989, 13.6887503}, //
+
28460 {0.290006012, 13.6879396}, //
+
28461 {0.288244009, 13.6870098}, //
+
28462 {0.286316991, 13.6859398}, //
+
28463 {0.284222007, 13.6847496}, //
+
28464 {0.281960994, 13.6834402}, //
+
28465 {0.279532999, 13.6819897}, //
+
28466 {0.276939005, 13.6804199}, //
+
28467 {0.274177998, 13.67873}, //
+
28468 {0.27125001, 13.6768999}, //
+
28469 {0.268238991, 13.6749897}, //
+
28470 {0.265228003, 13.6730404}, //
+
28471 {0.262216985, 13.6710501}, //
+
28472 {0.259205997, 13.6690197}, //
+
28473 {0.256193995, 13.6669502}, //
+
28474 {0.253183007, 13.6648302}, //
+
28475 {0.250171989, 13.6626797}, //
+
28476 {0.247161001, 13.66049}, //
+
28477 {0.244149998, 13.6582499}, //
+
28478 {0.241191, 13.6560602}, //
+
28479 {0.238356993, 13.6539898}, //
+
28480 {0.235650003, 13.6520395}, //
+
28481 {0.233069003, 13.6502304}, //
+
28482 {0.230612993, 13.64853}, //
+
28483 {0.228283003, 13.6469603}, //
+
28484 {0.22608, 13.6455202}, //
+
28485 {0.224002004, 13.6442003}, //
+
28486 {0.222049996, 13.6429996}, //
+
28487 {0.220276996, 13.6419697}, //
+
28488 {0.218712002, 13.6411505}, //
+
28489 {0.217355996, 13.6405401}, //
+
28490 {0.216207996, 13.6401501}, //
+
28491 {0.215268999, 13.6399603}, //
+
28492 });
+
28493 polys.push_back({
+
28494 {1.86151004, 13.2311802}, //
+
28495 {1.86170006, 13.2315502}, //
+
28496 {1.86202002, 13.2321796}, //
+
28497 {1.86301994, 13.2341805}, //
+
28498 {1.86372006, 13.2355604}, //
+
28499 {1.86453998, 13.2371902}, //
+
28500 {1.86547995, 13.2390699}, //
+
28501 {1.86654997, 13.2412004}, //
+
28502 {1.86769998, 13.2435102}, //
+
28503 {1.86889994, 13.2459002}, //
+
28504 {1.87012994, 13.2483702}, //
+
28505 {1.87141001, 13.2509298}, //
+
28506 {1.87273002, 13.2535696}, //
+
28507 {1.87407994, 13.2562904}, //
+
28508 {1.87548006, 13.2590904}, //
+
28509 {1.87691998, 13.2619801}, //
+
28510 {1.87839997, 13.2649498}, //
+
28511 {1.87988997, 13.2679596}, //
+
28512 {1.88134003, 13.2709703}, //
+
28513 {1.88274002, 13.2739801}, //
+
28514 {1.88409996, 13.2769899}, //
+
28515 {1.88541996, 13.2800102}, //
+
28516 {1.88669002, 13.28302}, //
+
28517 {1.88792002, 13.2860298}, //
+
28518 {1.88910997, 13.2890396}, //
+
28519 {1.89024997, 13.2920504}, //
+
28520 {1.89131999, 13.2950296}, //
+
28521 {1.89225996, 13.2979202}, //
+
28522 {1.89308, 13.3007298}, //
+
28523 {1.89377999, 13.3034601}, //
+
28524 {1.89434004, 13.3060999}, //
+
28525 {1.89478004, 13.30865}, //
+
28526 {1.8951, 13.31112}, //
+
28527 {1.89529002, 13.3135004}, //
+
28528 {1.89534998, 13.3157997}, //
+
28529 {1.89517999, 13.3182201}, //
+
28530 {1.89468002, 13.3209801}, //
+
28531 {1.89383996, 13.3240805}, //
+
28532 {1.89267004, 13.3275099}, //
+
28533 {1.89117002, 13.3312798}, //
+
28534 {1.88933003, 13.3353796}, //
+
28535 {1.88715005, 13.3398199}, //
+
28536 {1.88463998, 13.3445902}, //
+
28537 {1.88180006, 13.3497}, //
+
28538 {1.87874997, 13.3549404}, //
+
28539 {1.87560999, 13.3600903}, //
+
28540 {1.87239003, 13.36516}, //
+
28541 {1.86907995, 13.3701401}, //
+
28542 {1.86570001, 13.3750401}, //
+
28543 {1.86222005, 13.3798599}, //
+
28544 {1.85867, 13.3845901}, //
+
28545 {1.85502005, 13.3892403}, //
+
28546 {1.8513, 13.3937998}, //
+
28547 {1.84762001, 13.3981104}, //
+
28548 {1.8441, 13.4020004}, //
+
28549 {1.84074998, 13.4054804}, //
+
28550 {1.83756995, 13.4085302}, //
+
28551 {1.83455002, 13.4111605}, //
+
28552 {1.83169997, 13.4133797}, //
+
28553 {1.82902002, 13.4151697}, //
+
28554 {1.82650006, 13.4165497}, //
+
28555 {1.82414997, 13.4174995}, //
+
28556 {1.82090998, 13.4190702}, //
+
28557 {1.81719995, 13.4207697}, //
+
28558 {1.81304002, 13.4225903}, //
+
28559 {1.80841005, 13.4245396}, //
+
28560 {1.80332005, 13.42661}, //
+
28561 {1.79777002, 13.4288101}, //
+
28562 {1.79175997, 13.4311304}, //
+
28563 {1.78529, 13.4335804}, //
+
28564 {1.77835, 13.4361496}, //
+
28565 {1.77104998, 13.4388103}, //
+
28566 {1.76345003, 13.4415197}, //
+
28567 {1.75557005, 13.4442701}, //
+
28568 {1.74739003, 13.4470501}, //
+
28569 {1.73890996, 13.4498796}, //
+
28570 {1.73014998, 13.4527502}, //
+
28571 {1.72108996, 13.4556599}, //
+
28572 {1.71174002, 13.4586096}, //
+
28573 {1.70210004, 13.4616003}, //
+
28574 {1.69096994, 13.4652796}, //
+
28575 {1.68017006, 13.4687996}, //
+
28576 {1.66971004, 13.4721403}, //
+
28577 {1.65957999, 13.4753199}, //
+
28578 {1.64978004, 13.4783297}, //
+
28579 {1.64031994, 13.4811802}, //
+
28580 {1.63119996, 13.4838495}, //
+
28581 {1.62241006, 13.4863596}, //
+
28582 {1.61395001, 13.4886999}, //
+
28583 {1.61243999, 13.48946}, //
+
28584 {1.61092997, 13.4902096}, //
+
28585 {1.60941994, 13.4909697}, //
+
28586 {1.60792005, 13.4917202}, //
+
28587 {1.60641003, 13.4924803}, //
+
28588 {1.60491002, 13.4932299}, //
+
28589 {1.60339999, 13.4939899}, //
+
28590 {1.60189998, 13.4947395}, //
+
28591 {1.60039997, 13.4954996}, //
+
28592 {1.58147001, 13.5027399}, //
+
28593 {1.56237996, 13.5094004}, //
+
28594 {1.54312003, 13.5154696}, //
+
28595 {1.52368999, 13.5209503}, //
+
28596 {1.50408995, 13.5258503}, //
+
28597 {1.48433006, 13.5301704}, //
+
28598 {1.46440995, 13.5339003}, //
+
28599 {1.44430995, 13.5370398}, //
+
28600 {1.42404997, 13.5396004}, //
+
28601 {1.41608, 13.54039}, //
+
28602 {1.40723002, 13.5412598}, //
+
28603 {1.39749002, 13.5422201}, //
+
28604 {1.38688004, 13.5432596}, //
+
28605 {1.37539995, 13.5443897}, //
+
28606 {1.36302996, 13.5455999}, //
+
28607 {1.34977996, 13.5468998}, //
+
28608 {1.33564997, 13.5482798}, //
+
28609 {1.32064998, 13.5497503}, //
+
28610 {1.30523002, 13.5513}, //
+
28611 {1.28983998, 13.5529404}, //
+
28612 {1.27450001, 13.5546598}, //
+
28613 {1.25919998, 13.5564604}, //
+
28614 {1.24394, 13.5583401}, //
+
28615 {1.22871995, 13.5603104}, //
+
28616 {1.21353996, 13.5623503}, //
+
28617 {1.19840002, 13.5644903}, //
+
28618 {1.18330002, 13.5667}, //
+
28619 {1.16868997, 13.5689201}, //
+
28620 {1.15500998, 13.5710602}, //
+
28621 {1.14224005, 13.5731201}, //
+
28622 {1.13039994, 13.5750904}, //
+
28623 {1.11948001, 13.5769701}, //
+
28624 {1.10948002, 13.5787697}, //
+
28625 {1.10039997, 13.5804796}, //
+
28626 {1.09223998, 13.5821104}, //
+
28627 {1.08500004, 13.5836496}, //
+
28628 {1.07773995, 13.5860395}, //
+
28629 {1.06952, 13.5886803}, //
+
28630 {1.06033003, 13.5915699}, //
+
28631 {1.05017996, 13.5947104}, //
+
28632 {1.03906, 13.5980997}, //
+
28633 {1.02698004, 13.6017399}, //
+
28634 {1.01392996, 13.6056299}, //
+
28635 {0.999922991, 13.6097603}, //
+
28636 {0.984950006, 13.61415}, //
+
28637 {0.969588995, 13.6186104}, //
+
28638 {0.954393983, 13.6229401}, //
+
28639 {0.939366996, 13.6271496}, //
+
28640 {0.924506009, 13.6312304}, //
+
28641 {0.90981102, 13.63519}, //
+
28642 {0.895282984, 13.63902}, //
+
28643 {0.880922019, 13.6427202}, //
+
28644 {0.866728008, 13.6463003}, //
+
28645 {0.852699995, 13.6497498}, //
+
28646 {0.839330971, 13.6529999}, //
+
28647 {0.827093005, 13.6559601}, //
+
28648 {0.815982997, 13.6586199}, //
+
28649 {0.806003988, 13.6609898}, //
+
28650 {0.797154009, 13.6630602}, //
+
28651 {0.789433002, 13.6648397}, //
+
28652 {0.782842994, 13.6663198}, //
+
28653 {0.777381003, 13.66751}, //
+
28654 {0.77305001, 13.6683998}, //
+
28655 {0.770501018, 13.6684399}, //
+
28656 {0.767365992, 13.6685696}, //
+
28657 {0.76364398, 13.6687803}, //
+
28658 {0.759335995, 13.6690702}, //
+
28659 {0.754441977, 13.6694498}, //
+
28660 {0.748960972, 13.6699104}, //
+
28661 {0.742893994, 13.6704597}, //
+
28662 {0.736240029, 13.6710901}, //
+
28663 {0.728999972, 13.6717997}, //
+
28664 {0.721486986, 13.6725302}, //
+
28665 {0.714015007, 13.6732302}, //
+
28666 {0.706583023, 13.6738796}, //
+
28667 {0.699193001, 13.67449}, //
+
28668 {0.691842973, 13.6750498}, //
+
28669 {0.684533, 13.67558}, //
+
28670 {0.677264988, 13.6760597}, //
+
28671 {0.670036972, 13.6765003}, //
+
28672 {0.662850022, 13.6768999}, //
+
28673 {0.655924976, 13.6772099}, //
+
28674 {0.649460018, 13.6773996}, //
+
28675 {0.643455982, 13.6774702}, //
+
28676 {0.637911975, 13.6773996}, //
+
28677 {0.632827997, 13.6772099}, //
+
28678 {0.628206015, 13.6768999}, //
+
28679 {0.624042988, 13.6764603}, //
+
28680 {0.620341003, 13.67589}, //
+
28681 {0.6171, 13.6752005}, //
+
28682 {0.611235023, 13.6751604}, //
+
28683 {0.605705023, 13.6750298}, //
+
28684 {0.600511014, 13.6748199}, //
+
28685 {0.595652997, 13.67453}, //
+
28686 {0.591130972, 13.6741505}, //
+
28687 {0.586943984, 13.6736898}, //
+
28688 {0.583094001, 13.6731396}, //
+
28689 {0.579578996, 13.6725101}, //
+
28690 {0.576399982, 13.6717997}, //
+
28691 {0.571047008, 13.6704597}, //
+
28692 {0.568871975, 13.6699104}, //
+
28693 {0.56703198, 13.6694498}, //
+
28694 {0.563519001, 13.6685696}, //
+
28695 {0.562849998, 13.6683998}, //
+
28696 {0.556050003, 13.6921501}, //
+
28697 {0.556806028, 13.6935797}, //
+
28698 {0.55756098, 13.6948404}, //
+
28699 {0.558317006, 13.6959295}, //
+
28700 {0.559072018, 13.6968498}, //
+
28701 {0.559827983, 13.6976099}, //
+
28702 {0.560582995, 13.6981897}, //
+
28703 {0.561339021, 13.6986103}, //
+
28704 {0.562093973, 13.6988697}, //
+
28705 {0.562849998, 13.6989498}, //
+
28706 {0.567435026, 13.7004299}, //
+
28707 {0.572143972, 13.70187}, //
+
28708 {0.576978028, 13.70327}, //
+
28709 {0.581936002, 13.7046204}, //
+
28710 {0.58701998, 13.7059402}, //
+
28711 {0.592227995, 13.7072201}, //
+
28712 {0.597559988, 13.7084503}, //
+
28713 {0.603017986, 13.70965}, //
+
28714 {0.60860002, 13.7108002}, //
+
28715 {0.614444017, 13.7118702}, //
+
28716 {0.620664001, 13.7128096}, //
+
28717 {0.627260983, 13.7136297}, //
+
28718 {0.634235024, 13.7143297}, //
+
28719 {0.641584992, 13.7148895}, //
+
28720 {0.649311006, 13.7153301}, //
+
28721 {0.657414019, 13.7156496}, //
+
28722 {0.665893972, 13.7158403}, //
+
28723 {0.67474997, 13.7159004}, //
+
28724 {0.712050021, 13.7159004}, //
+
28725 {0.719687998, 13.7158804}, //
+
28726 {0.727533996, 13.7158203}, //
+
28727 {0.735589027, 13.7157097}, //
+
28728 {0.743852019, 13.71556}, //
+
28729 {0.752324998, 13.7153797}, //
+
28730 {0.761005998, 13.7151403}, //
+
28731 {0.769895017, 13.7148705}, //
+
28732 {0.778993011, 13.7145596}, //
+
28733 {0.788299978, 13.7142}, //
+
28734 {0.797994018, 13.7135897}, //
+
28735 {0.808233023, 13.7125196}, //
+
28736 {0.819016993, 13.71099}, //
+
28737 {0.830344021, 13.7089996}, //
+
28738 {0.842217028, 13.7065496}, //
+
28739 {0.854632974, 13.70364}, //
+
28740 {0.867594004, 13.7002697}, //
+
28741 {0.881099999, 13.6964397}, //
+
28742 {0.895150006, 13.6921501}, //
+
28743 {0.907518983, 13.6898699}, //
+
28744 {0.920515001, 13.6875496}, //
+
28745 {0.934139013, 13.6851902}, //
+
28746 {0.948390007, 13.6827803}, //
+
28747 {0.963267028, 13.6803303}, //
+
28748 {0.978771985, 13.6778402}, //
+
28749 {0.994903982, 13.6752996}, //
+
28750 {1.01165998, 13.67272}, //
+
28751 {1.02904999, 13.6701002}, //
+
28752 {1.04665995, 13.6675301}, //
+
28753 {1.06404996, 13.6650801}, //
+
28754 {1.08124006, 13.6627598}, //
+
28755 {1.09821999, 13.6605597}, //
+
28756 {1.11497998, 13.6584902}, //
+
28757 {1.13153994, 13.6565399}, //
+
28758 {1.14788997, 13.6547203}, //
+
28759 {1.16401994, 13.6530199}, //
+
28760 {1.17995, 13.6514502}, //
+
28761 {1.19597995, 13.64995}, //
+
28762 {1.21092999, 13.6484499}, //
+
28763 {1.22477996, 13.6469402}, //
+
28764 {1.23755002, 13.6454401}, //
+
28765 {1.24923003, 13.6439304}, //
+
28766 {1.25981998, 13.6424303}, //
+
28767 {1.26932001, 13.6409197}, //
+
28768 {1.27772999, 13.63941}, //
+
28769 {1.28505003, 13.6379004}, //
+
28770 {1.29228997, 13.6371498}, //
+
28771 {1.30044997, 13.6363897}, //
+
28772 {1.30953002, 13.6356401}, //
+
28773 {1.31954002, 13.6348896}, //
+
28774 {1.33046997, 13.63414}, //
+
28775 {1.34231997, 13.6333904}, //
+
28776 {1.35509002, 13.6326399}, //
+
28777 {1.36878002, 13.6318998}, //
+
28778 {1.38339996, 13.6311502}, //
+
28779 {1.39701998, 13.6303501}, //
+
28780 {1.41076005, 13.6294699}, //
+
28781 {1.42463005, 13.6285105}, //
+
28782 {1.43862998, 13.6274595}, //
+
28783 {1.45274997, 13.6263199}, //
+
28784 {1.46700001, 13.6251097}, //
+
28785 {1.48136997, 13.6238003}, //
+
28786 {1.49586999, 13.6224203}, //
+
28787 {1.51049995, 13.6209497}, //
+
28788 {1.52476001, 13.6193104}, //
+
28789 {1.53814006, 13.6174297}, //
+
28790 {1.55063999, 13.6152897}, //
+
28791 {1.56226003, 13.6128998}, //
+
28792 {1.57299995, 13.61026}, //
+
28793 {1.58285999, 13.6073704}, //
+
28794 {1.59183002, 13.6042299}, //
+
28795 {1.59993005, 13.6008396}, //
+
28796 {1.60714996, 13.5972004}, //
+
28797 {1.61770999, 13.5926905}, //
+
28798 {1.62298, 13.5904303}, //
+
28799 {1.63354003, 13.5859203}, //
+
28800 {1.63882005, 13.5836697}, //
+
28801 {1.65464997, 13.5768995}, //
+
28802 {1.66937995, 13.5703201}, //
+
28803 {1.68344998, 13.5641603}, //
+
28804 {1.69684005, 13.5584202}, //
+
28805 {1.70956004, 13.5530996}, //
+
28806 {1.72161996, 13.5481997}, //
+
28807 {1.73301005, 13.5437202}, //
+
28808 {1.74372005, 13.5396605}, //
+
28809 {1.75376999, 13.5360203}, //
+
28810 {1.76314998, 13.5327997}, //
+
28811 {1.77006996, 13.5296402}, //
+
28812 {1.77728999, 13.5261898}, //
+
28813 {1.78480005, 13.52244}, //
+
28814 {1.79260004, 13.5184002}, //
+
28815 {1.80069995, 13.5140696}, //
+
28816 {1.80908, 13.5094404}, //
+
28817 {1.81775999, 13.5045204}, //
+
28818 {1.82674003, 13.4993095}, //
+
28819 {1.83599997, 13.4938002}, //
+
28820 {1.84511006, 13.4882202}, //
+
28821 {1.85359001, 13.4827604}, //
+
28822 {1.86143994, 13.4774303}, //
+
28823 {1.86865997, 13.4722204}, //
+
28824 {1.87526, 13.4671402}, //
+
28825 {1.88121998, 13.4621801}, //
+
28826 {1.88655996, 13.4573402}, //
+
28827 {1.89127004, 13.45263}, //
+
28828 {1.89534998, 13.4480495}, //
+
28829 {1.89905, 13.4419804}, //
+
28830 {1.90262997, 13.4358196}, //
+
28831 {1.90608001, 13.4295797}, //
+
28832 {1.90941, 13.4232502}, //
+
28833 {1.91261005, 13.4168501}, //
+
28834 {1.91568005, 13.4103603}, //
+
28835 {1.91863, 13.4037905}, //
+
28836 {1.92145002, 13.3971395}, //
+
28837 {1.92414999, 13.3903999}, //
+
28838 {1.92656004, 13.38375}, //
+
28839 {1.92851996, 13.3773499}, //
+
28840 {1.93000996, 13.3711901}, //
+
28841 {1.93103004, 13.3652897}, //
+
28842 {1.93159997, 13.3596401}, //
+
28843 {1.93171, 13.3542404}, //
+
28844 {1.93134999, 13.3491001}, //
+
28845 {1.93052995, 13.3442001}, //
+
28846 {1.92925, 13.33955}, //
+
28847 {1.92840004, 13.3379097}, //
+
28848 {1.92734003, 13.33603}, //
+
28849 {1.92606997, 13.33389}, //
+
28850 {1.92457998, 13.3315001}, //
+
28851 {1.92288995, 13.3288603}, //
+
28852 {1.92097998, 13.3259697}, //
+
28853 {1.91886997, 13.3228302}, //
+
28854 {1.91654003, 13.3194399}, //
+
28855 {1.91400003, 13.3157997}, //
+
28856 {1.91137004, 13.3119898}, //
+
28857 {1.90873003, 13.3080997}, //
+
28858 {1.90609002, 13.3041201}, //
+
28859 {1.90346003, 13.3000603}, //
+
28860 {1.90082002, 13.2959204}, //
+
28861 {1.89818001, 13.2916899}, //
+
28862 {1.89554, 13.2873802}, //
+
28863 {1.89288998, 13.28298}, //
+
28864 {1.89024997, 13.2784996}, //
+
28865 {1.88766003, 13.2740602}, //
+
28866 {1.88514996, 13.2697897}, //
+
28867 {1.88271999, 13.2656898}, //
+
28868 {1.88038003, 13.2617502}, //
+
28869 {1.87811995, 13.2579899}, //
+
28870 {1.87593997, 13.2543898}, //
+
28871 {1.87383997, 13.2509604}, //
+
28872 {1.87182999, 13.2476997}, //
+
28873 {1.86989999, 13.2446003}, //
+
28874 {1.86812997, 13.2417603}, //
+
28875 {1.86655998, 13.2392502}, //
+
28876 {1.86521006, 13.2370701}, //
+
28877 {1.86406004, 13.2352304}, //
+
28878 {1.86311996, 13.2337303}, //
+
28879 {1.86239004, 13.2325602}, //
+
28880 {1.86187005, 13.23172}, //
+
28881 {1.86154997, 13.2312202}, //
+
28882 {1.86144996, 13.2310495}, //
+
28883 });
+
28884 polys.push_back({
+
28885 {5.16730022, 12.8716497}, //
+
28886 {5.16501999, 12.8738804}, //
+
28887 {5.16270018, 12.8760796}, //
+
28888 {5.16033983, 12.8782301}, //
+
28889 {5.1579299, 12.8803396}, //
+
28890 {5.15547991, 12.8823996}, //
+
28891 {5.15298986, 12.8844299}, //
+
28892 {5.15045023, 12.8864098}, //
+
28893 {5.14787006, 12.8883495}, //
+
28894 {5.14524984, 12.8902502}, //
+
28895 {5.14266014, 12.8921204}, //
+
28896 {5.14015007, 12.89394}, //
+
28897 {5.13772011, 12.8957195}, //
+
28898 {5.13537979, 12.89746}, //
+
28899 {5.13312006, 12.8991499}, //
+
28900 {5.13093996, 12.9008102}, //
+
28901 {5.12883997, 12.9024096}, //
+
28902 {5.1268301, 12.9039803}, //
+
28903 {5.12489986, 12.9055004}, //
+
28904 {5.11739016, 12.91154}, //
+
28905 {5.11654997, 12.91222}, //
+
28906 {5.11644983, 12.9123001}, //
+
28907 {5.11745977, 12.9133101}, //
+
28908 {5.11802006, 12.9138699}, //
+
28909 {5.11872005, 12.9145699}, //
+
28910 {5.11954021, 12.91539}, //
+
28911 {5.12155008, 12.9174004}, //
+
28912 {5.12270021, 12.9185305}, //
+
28913 {5.12389994, 12.9196596}, //
+
28914 {5.12513018, 12.9207897}, //
+
28915 {5.12641001, 12.9219198}, //
+
28916 {5.12772989, 12.9230499}, //
+
28917 {5.12907982, 12.92418}, //
+
28918 {5.13047981, 12.9252996}, //
+
28919 {5.13191986, 12.9264297}, //
+
28920 {5.13339996, 12.9275503}, //
+
28921 {5.13495016, 12.9286604}, //
+
28922 {5.13659, 12.9297304}, //
+
28923 {5.13830996, 12.9307604}, //
+
28924 {5.14011002, 12.9317503}, //
+
28925 {5.14199018, 12.9326897}, //
+
28926 {5.14396, 12.9335899}, //
+
28927 {5.14599991, 12.9344501}, //
+
28928 {5.14813995, 12.9352703}, //
+
28929 {5.15035009, 12.9360504}, //
+
28930 {5.15209007, 12.9377899}, //
+
28931 {5.15695, 12.9426498}, //
+
28932 {5.16006994, 12.9457703}, //
+
28933 {5.17218018, 12.95788}, //
+
28934 {5.18254995, 12.9682503}, //
+
28935 {5.18815994, 12.9739904}, //
+
28936 {5.19368982, 12.9798899}, //
+
28937 {5.19914007, 12.9859695}, //
+
28938 {5.2045002, 12.9922104}, //
+
28939 {5.20978022, 12.9986095}, //
+
28940 {5.21497011, 13.0051804}, //
+
28941 {5.2200799, 13.01192}, //
+
28942 {5.22511005, 13.0188303}, //
+
28943 {5.23005009, 13.0258999}, //
+
28944 {5.23479986, 13.0328703}, //
+
28945 {5.2392602, 13.0394602}, //
+
28946 {5.24343014, 13.0456696}, //
+
28947 {5.24730015, 13.0515099}, //
+
28948 {5.25087976, 13.0569696}, //
+
28949 {5.25415993, 13.0620604}, //
+
28950 {5.25715017, 13.0667601}, //
+
28951 {5.25985003, 13.0711002}, //
+
28952 {5.26224995, 13.0750504}, //
+
28953 {5.26522017, 13.0803099}, //
+
28954 {5.26809978, 13.0855198}, //
+
28955 {5.27090979, 13.0906897}, //
+
28956 {5.27362013, 13.09583}, //
+
28957 {5.2762599, 13.1009102}, //
+
28958 {5.27881002, 13.1059599}, //
+
28959 {5.28127003, 13.1109695}, //
+
28960 {5.28364992, 13.1159296}, //
+
28961 {5.28595018, 13.1208496}, //
+
28962 {5.28816986, 13.1256905}, //
+
28963 {5.29030991, 13.1303997}, //
+
28964 {5.29236984, 13.1349802}, //
+
28965 {5.29434013, 13.1394396}, //
+
28966 {5.29621983, 13.1437798}, //
+
28967 {5.29801989, 13.1479797}, //
+
28968 {5.29972982, 13.1520596}, //
+
28969 {5.30136013, 13.1560202}, //
+
28970 {5.30289984, 13.1598501}, //
+
28971 {5.30432987, 13.1634903}, //
+
28972 {5.30559015, 13.1668797}, //
+
28973 {5.3066802, 13.1700201}, //
+
28974 {5.30760002, 13.1729002}, //
+
28975 {5.3083601, 13.17554}, //
+
28976 {5.30893993, 13.1779203}, //
+
28977 {5.30936003, 13.1800499}, //
+
28978 {5.3096199, 13.1819201}, //
+
28979 {5.30970001, 13.1835499}, //
+
28980 {5.3096199, 13.1834898}, //
+
28981 {5.30936003, 13.1833}, //
+
28982 {5.30893993, 13.1829796}, //
+
28983 {5.3083601, 13.1825399}, //
+
28984 {5.30760002, 13.1819801}, //
+
28985 {5.30559015, 13.18046}, //
+
28986 {5.30432987, 13.1795197}, //
+
28987 {5.30289984, 13.1784496}, //
+
28988 {5.30140018, 13.17733}, //
+
28989 {5.29990005, 13.1761999}, //
+
28990 {5.29838991, 13.1750803}, //
+
28991 {5.29688978, 13.1739502}, //
+
28992 {5.29538012, 13.1728201}, //
+
28993 {5.29387999, 13.17169}, //
+
28994 {5.29086018, 13.1694298}, //
+
28995 {5.28935003, 13.1682997}, //
+
28996 {5.2878499, 13.1671495}, //
+
28997 {5.28634977, 13.1659498}, //
+
28998 {5.28484011, 13.1647196}, //
+
28999 {5.28333998, 13.1634398}, //
+
29000 {5.28182983, 13.1621199}, //
+
29001 {5.28033018, 13.1607704}, //
+
29002 {5.27882004, 13.1593704}, //
+
29003 {5.27730989, 13.1579304}, //
+
29004 {5.27580023, 13.1564503}, //
+
29005 {5.2743001, 13.15557}, //
+
29006 {5.27279997, 13.1544399}, //
+
29007 {5.27128983, 13.1530504}, //
+
29008 {5.26979017, 13.1514101}, //
+
29009 {5.26828003, 13.1495199}, //
+
29010 {5.2667799, 13.1473799}, //
+
29011 {5.26527023, 13.14499}, //
+
29012 {5.26376009, 13.1423502}, //
+
29013 {5.26224995, 13.1394501}, //
+
29014 {5.2607398, 13.1364403}, //
+
29015 {5.25923014, 13.1334295}, //
+
29016 {5.25771999, 13.1304197}, //
+
29017 {5.25621986, 13.1274099}, //
+
29018 {5.2547102, 13.1243896}, //
+
29019 {5.25321007, 13.1213799}, //
+
29020 {5.25169992, 13.1183701}, //
+
29021 {5.25019979, 13.1153603}, //
+
29022 {5.24870014, 13.1123505}, //
+
29023 {5.24647999, 13.1072502}, //
+
29024 {5.24433994, 13.1024799}, //
+
29025 {5.24228001, 13.0980501}, //
+
29026 {5.24031019, 13.0939503}, //
+
29027 {5.23843002, 13.0901804}, //
+
29028 {5.23662996, 13.08675}, //
+
29029 {5.23492002, 13.0836496}, //
+
29030 {5.2332902, 13.0808802}, //
+
29031 {5.23175001, 13.0784502}, //
+
29032 {5.23011017, 13.0760899}, //
+
29033 {5.22823, 13.0735197}, //
+
29034 {5.22608995, 13.0707397}, //
+
29035 {5.22370005, 13.06775}, //
+
29036 {5.2210598, 13.0645504}, //
+
29037 {5.21817017, 13.0611401}, //
+
29038 {5.21503019, 13.0575199}, //
+
29039 {5.21163988, 13.05369}, //
+
29040 {5.20800018, 13.0496502}, //
+
29041 {5.2041502, 13.0454798}, //
+
29042 {5.20012999, 13.0412798}, //
+
29043 {5.19594002, 13.0370302}, //
+
29044 {5.19158983, 13.0327396}, //
+
29045 {5.18706989, 13.0284004}, //
+
29046 {5.1823802, 13.0240297}, //
+
29047 {5.1775198, 13.0196104}, //
+
29048 {5.17249012, 13.0151501}, //
+
29049 {5.16730022, 13.0106497}, //
+
29050 {5.16211987, 13.0062103}, //
+
29051 {5.1571002, 13.0019398}, //
+
29052 {5.15224981, 12.9978399}, //
+
29053 {5.14757013, 12.9939003}, //
+
29054 {5.14305019, 12.99014}, //
+
29055 {5.13870001, 12.9865398}, //
+
29056 {5.13452005, 12.9831104}, //
+
29057 {5.13049984, 12.9798498}, //
+
29058 {5.12664986, 12.9767504}, //
+
29059 {5.12443018, 12.9752197}, //
+
29060 {5.12228012, 12.9736404}, //
+
29061 {5.1202302, 12.9720297}, //
+
29062 {5.11824989, 12.9703703}, //
+
29063 {5.1163702, 12.9686699}, //
+
29064 {5.11456013, 12.9669304}, //
+
29065 {5.11284018, 12.9651403}, //
+
29066 {5.11119986, 12.9633198}, //
+
29067 {5.10965014, 12.9614496}, //
+
29068 {5.10821009, 12.95959}, //
+
29069 {5.10690022, 12.9577799}, //
+
29070 {5.10571003, 12.9560003}, //
+
29071 {5.10465002, 12.9542599}, //
+
29072 {5.10371017, 12.95257}, //
+
29073 {5.10289001, 12.9509201}, //
+
29074 {5.10220003, 12.9492998}, //
+
29075 {5.10164022, 12.9477301}, //
+
29076 {5.1012001, 12.9462004}, //
+
29077 {5.10082006, 12.9447403}, //
+
29078 {5.10044003, 12.9433699}, //
+
29079 {5.10007, 12.94207}, //
+
29080 {5.09968996, 12.9408598}, //
+
29081 {5.09930992, 12.9397297}, //
+
29082 {5.09892988, 12.9386902}, //
+
29083 {5.09855986, 12.9377298}, //
+
29084 {5.09817982, 12.9368496}, //
+
29085 {5.09779978, 12.9360504}, //
+
29086 {5.09629011, 12.9330301}, //
+
29087 {5.09609985, 12.9326496}, //
+
29088 {5.03170013, 12.9767504}, //
+
29089 {5.03170013, 13.0276003}, //
+
29090 {5.03195, 13.0322304}, //
+
29091 {5.03270006, 13.0370598}, //
+
29092 {5.03395987, 13.0421104}, //
+
29093 {5.03571987, 13.0473604}, //
+
29094 {5.03798008, 13.0528202}, //
+
29095 {5.04074001, 13.0584898}, //
+
29096 {5.04401016, 13.0643702}, //
+
29097 {5.04778004, 13.0704498}, //
+
29098 {5.05205011, 13.0767498}, //
+
29099 {5.05673981, 13.0831404}, //
+
29100 {5.06175995, 13.0894899}, //
+
29101 {5.06712008, 13.0957899}, //
+
29102 {5.07282019, 13.1020498}, //
+
29103 {5.07883978, 13.1082697}, //
+
29104 {5.08520985, 13.11444}, //
+
29105 {5.09189987, 13.1205702}, //
+
29106 {5.09892988, 13.1266603}, //
+
29107 {5.10629988, 13.1327}, //
+
29108 {5.10945988, 13.1352396}, //
+
29109 {5.11290979, 13.13832}, //
+
29110 {5.1166501, 13.1419401}, //
+
29111 {5.12068987, 13.1461096}, //
+
29112 {5.12501001, 13.1508198}, //
+
29113 {5.12963009, 13.1560802}, //
+
29114 {5.13455009, 13.1618795}, //
+
29115 {5.13975, 13.1682196}, //
+
29116 {5.14524984, 13.1751003}, //
+
29117 {5.15096998, 13.1822796}, //
+
29118 {5.15680981, 13.1894999}, //
+
29119 {5.16277981, 13.1967602}, //
+
29120 {5.16886997, 13.2040596}, //
+
29121 {5.17508984, 13.2114}, //
+
29122 {5.18142986, 13.2187901}, //
+
29123 {5.18789005, 13.2262201}, //
+
29124 {5.19447994, 13.2336903}, //
+
29125 {5.20120001, 13.2412004}, //
+
29126 {5.20719004, 13.2486496}, //
+
29127 {5.21309996, 13.2559299}, //
+
29128 {5.21892023, 13.2630396}, //
+
29129 {5.22464991, 13.26999}, //
+
29130 {5.23029995, 13.2767696}, //
+
29131 {5.23586988, 13.2833796}, //
+
29132 {5.24135017, 13.2898197}, //
+
29133 {5.24673986, 13.2960901}, //
+
29134 {5.25204992, 13.3022003}, //
+
29135 {5.25719976, 13.3080702}, //
+
29136 {5.26210022, 13.3135996}, //
+
29137 {5.26675987, 13.3187904}, //
+
29138 {5.27116013, 13.3236504}, //
+
29139 {5.27531004, 13.3281698}, //
+
29140 {5.27921009, 13.3323603}, //
+
29141 {5.28284979, 13.3362103}, //
+
29142 {5.28625011, 13.3397198}, //
+
29143 {5.2894001, 13.3429003}, //
+
29144 {5.29238987, 13.3460302}, //
+
29145 {5.29534006, 13.3493605}, //
+
29146 {5.29824018, 13.3528996}, //
+
29147 {5.30110979, 13.3566504}, //
+
29148 {5.30392981, 13.3606005}, //
+
29149 {5.30670977, 13.3647699}, //
+
29150 {5.30945015, 13.3691397}, //
+
29151 {5.31215, 13.3737097}, //
+
29152 {5.31479979, 13.3785}, //
+
29153 {5.31745005, 13.38342}, //
+
29154 {5.3201499, 13.3883801}, //
+
29155 {5.3228898, 13.3933897}, //
+
29156 {5.32566977, 13.3984404}, //
+
29157 {5.32848978, 13.4035196}, //
+
29158 {5.33135986, 13.4086599}, //
+
29159 {5.33425999, 13.4138298}, //
+
29160 {5.33721018, 13.4190397}, //
+
29161 {5.34019995, 13.4243002}, //
+
29162 {5.34314013, 13.4294901}, //
+
29163 {5.34591007, 13.4345198}, //
+
29164 {5.34850979, 13.4393797}, //
+
29165 {5.35094023, 13.4440699}, //
+
29166 {5.35319996, 13.4485903}, //
+
29167 {5.35528994, 13.45294}, //
+
29168 {5.35721016, 13.4571304}, //
+
29169 {5.35897017, 13.4611502}, //
+
29170 {5.36054993, 13.4650002}, //
+
29171 {5.36197996, 13.4685602}, //
+
29172 {5.36323977, 13.4716997}, //
+
29173 {5.36525011, 13.4767199}, //
+
29174 {5.36601019, 13.4785995}, //
+
29175 {5.36659002, 13.4800701}, //
+
29176 {5.36726999, 13.48174}, //
+
29177 {5.3673501, 13.4819498}, //
+
29178 {5.36820984, 13.4866199}, //
+
29179 {5.36927986, 13.49158}, //
+
29180 {5.37056017, 13.49683}, //
+
29181 {5.37203979, 13.5023804}, //
+
29182 {5.3737402, 13.5082197}, //
+
29183 {5.37563992, 13.5143499}, //
+
29184 {5.37774992, 13.5207701}, //
+
29185 {5.38007021, 13.5274897}, //
+
29186 {5.38259983, 13.5345001}, //
+
29187 {5.38529015, 13.5416603}, //
+
29188 {5.38805008, 13.54881}, //
+
29189 {5.39091015, 13.5559702}, //
+
29190 {5.39383984, 13.5631199}, //
+
29191 {5.39686012, 13.5702801}, //
+
29192 {5.39996004, 13.5774298}, //
+
29193 {5.40314007, 13.58459}, //
+
29194 {5.4064002, 13.5917397}, //
+
29195 {5.40974998, 13.5988998}, //
+
29196 {5.41309977, 13.6059198}, //
+
29197 {5.4163599, 13.6126404}, //
+
29198 {5.41953993, 13.6190701}, //
+
29199 {5.42262983, 13.6252098}, //
+
29200 {5.42565012, 13.6310501}, //
+
29201 {5.42856979, 13.63659}, //
+
29202 {5.43141985, 13.64184}, //
+
29203 {5.43416977, 13.6467896}, //
+
29204 {5.43685007, 13.6514502}, //
+
29205 {5.43935013, 13.6557198}, //
+
29206 {5.44154978, 13.6594896}, //
+
29207 {5.44345999, 13.6627598}, //
+
29208 {5.4450798, 13.6655197}, //
+
29209 {5.44743013, 13.6695404}, //
+
29210 {5.44816017, 13.6708002}, //
+
29211 {5.44875002, 13.6717997}, //
+
29212 {5.55725002, 13.5463495}, //
+
29213 {5.55725002, 13.5429497}, //
+
29214 {5.55723, 13.5429096}, //
+
29215 {5.55716991, 13.5427799}, //
+
29216 {5.55705976, 13.5425701}, //
+
29217 {5.55672979, 13.5418997}, //
+
29218 {5.55622005, 13.5408897}, //
+
29219 {5.55591011, 13.5402603}, //
+
29220 {5.5555501, 13.5395498}, //
+
29221 {5.55519009, 13.5388298}, //
+
29222 {5.55488014, 13.5381403}, //
+
29223 {5.55460978, 13.5375004}, //
+
29224 {5.55436993, 13.5368996}, //
+
29225 {5.55419016, 13.5363398}, //
+
29226 {5.55403996, 13.53582}, //
+
29227 {5.55392981, 13.5353403}, //
+
29228 {5.5538702, 13.5348997}, //
+
29229 {5.55385017, 13.5345001}, //
+
29230 {5.55383015, 13.5340595}, //
+
29231 {5.55377007, 13.5334902}, //
+
29232 {5.55365992, 13.5327997}, //
+
29233 {5.55351019, 13.5319796}, //
+
29234 {5.55332994, 13.5310402}, //
+
29235 {5.5530901, 13.5299702}, //
+
29236 {5.55282021, 13.5287704}, //
+
29237 {5.55250978, 13.5274496}, //
+
29238 {5.55214977, 13.526}, //
+
29239 {5.55177021, 13.5245199}, //
+
29240 {5.55139017, 13.5230799}, //
+
29241 {5.55102015, 13.5216799}, //
+
29242 {5.55064011, 13.5203304}, //
+
29243 {5.55026007, 13.5190096}, //
+
29244 {5.54988003, 13.5177298}, //
+
29245 {5.54951, 13.5165005}, //
+
29246 {5.54912996, 13.5152998}, //
+
29247 {5.54874992, 13.5141497}, //
+
29248 {5.54836988, 13.5130196}, //
+
29249 {5.54798985, 13.5118799}, //
+
29250 {5.54761982, 13.5107498}, //
+
29251 {5.54723978, 13.5096197}, //
+
29252 {5.54686022, 13.5084801}, //
+
29253 {5.54648018, 13.50735}, //
+
29254 {5.54535007, 13.5039501}, //
+
29255 {5.54495001, 13.5027905}, //
+
29256 {5.54450989, 13.5015402}, //
+
29257 {5.54403019, 13.5002003}, //
+
29258 {5.54349995, 13.4987803}, //
+
29259 {5.54294014, 13.4972696}, //
+
29260 {5.54232979, 13.4956799}, //
+
29261 {5.54167986, 13.49401}, //
+
29262 {5.54097986, 13.4922504}, //
+
29263 {5.54024982, 13.4904003}, //
+
29264 {5.5395298, 13.4885197}, //
+
29265 {5.53883982, 13.48664}, //
+
29266 {5.5381999, 13.4847603}, //
+
29267 {5.53760004, 13.4828796}, //
+
29268 {5.53704023, 13.4809999}, //
+
29269 {5.53652, 13.4791098}, //
+
29270 {5.53603983, 13.4772301}, //
+
29271 {5.53560019, 13.4753399}, //
+
29272 {5.53520012, 13.4734497}, //
+
29273 {5.53476, 13.47155}, //
+
29274 {5.53419018, 13.4696102}, //
+
29275 {5.53350019, 13.4676199}, //
+
29276 {5.53268003, 13.4655895}, //
+
29277 {5.53174019, 13.4635201}, //
+
29278 {5.53067017, 13.4614096}, //
+
29279 {5.52946997, 13.4592505}, //
+
29280 {5.52815008, 13.4570503}, //
+
29281 {5.52670002, 13.4547997}, //
+
29282 {5.52523994, 13.4525003}, //
+
29283 {5.52386999, 13.45012}, //
+
29284 {5.52257013, 13.44765}, //
+
29285 {5.52135992, 13.4450998}, //
+
29286 {5.52022982, 13.4424601}, //
+
29287 {5.51918983, 13.4397297}, //
+
29288 {5.51822996, 13.4369202}, //
+
29289 {5.5173502, 13.4340296}, //
+
29290 {5.51655006, 13.4310503}, //
+
29291 {5.51576996, 13.4280396}, //
+
29292 {5.5149498, 13.4250298}, //
+
29293 {5.51409006, 13.42202}, //
+
29294 {5.51318979, 13.4190102}, //
+
29295 {5.51224995, 13.4159899}, //
+
29296 {5.51126003, 13.4129801}, //
+
29297 {5.51023006, 13.4099703}, //
+
29298 {5.50916004, 13.4069595}, //
+
29299 {5.50804996, 13.4039497}, //
+
29300 {5.50692987, 13.4008999}, //
+
29301 {5.50579977, 13.3977604}, //
+
29302 {5.50468016, 13.3945398}, //
+
29303 {5.50355005, 13.3912296}, //
+
29304 {5.50241995, 13.3878498}, //
+
29305 {5.50128984, 13.3843699}, //
+
29306 {5.50016022, 13.3808203}, //
+
29307 {5.49903011, 13.3771696}, //
+
29308 {5.49790001, 13.3734503}, //
+
29309 {5.49674988, 13.3696404}, //
+
29310 {5.49555016, 13.3657503}, //
+
29311 {5.49431992, 13.3617697}, //
+
29312 {5.49304008, 13.3577099}, //
+
29313 {5.4917202, 13.35357}, //
+
29314 {5.4903698, 13.3493404}, //
+
29315 {5.4889698, 13.3450298}, //
+
29316 {5.48753023, 13.3406296}, //
+
29317 {5.48605013, 13.3361502}, //
+
29318 {5.47309017, 13.3010702}, //
+
29319 {5.45983982, 13.2666702}, //
+
29320 {5.44630003, 13.2329302}, //
+
29321 {5.43245983, 13.1998596}, //
+
29322 {5.41834021, 13.1674604}, //
+
29323 {5.40392017, 13.1357298}, //
+
29324 {5.38920021, 13.1046696}, //
+
29325 {5.37419987, 13.0742702}, //
+
29326 {5.35890007, 13.0445499}, //
+
29327 {5.34397984, 13.0164204}, //
+
29328 {5.33010006, 12.9907999}, //
+
29329 {5.3172698, 12.9676905}, //
+
29330 {5.30549002, 12.9470901}, //
+
29331 {5.29475021, 12.9290104}, //
+
29332 {5.28505993, 12.9134398}, //
+
29333 {5.2764101, 12.9003801}, //
+
29334 {5.2688098, 12.8898296}, //
+
29335 {5.26224995, 12.8817997}, //
+
29336 {5.25926018, 12.8782196}, //
+
29337 {5.25630999, 12.87502}, //
+
29338 {5.25339985, 12.8721905}, //
+
29339 {5.25052977, 12.86975}, //
+
29340 {5.24770021, 12.8676701}, //
+
29341 {5.24491978, 12.8659801}, //
+
29342 {5.24216986, 12.8646603}, //
+
29343 {5.23945999, 12.8637199}, //
+
29344 {5.23680019, 12.8631496}, //
+
29345 {5.23423004, 12.8627901}, //
+
29346 {5.23178005, 12.8624802}, //
+
29347 {5.22945976, 12.8622103}, //
+
29348 {5.22726011, 12.8619699}, //
+
29349 {5.22519016, 12.8617897}, //
+
29350 {5.2232399, 12.86164}, //
+
29351 {5.22141981, 12.8615303}, //
+
29352 {5.21971989, 12.8614702}, //
+
29353 {5.21815014, 12.8614502}, //
+
29354 {5.21521997, 12.8614101}, //
+
29355 {5.21246004, 12.8612804}, //
+
29356 {5.20986986, 12.8610697}, //
+
29357 {5.20744991, 12.8607798}, //
+
29358 {5.20519018, 12.8604002}, //
+
29359 {5.20311022, 12.8599396}, //
+
29360 {5.20118999, 12.8593903}, //
+
29361 {5.19942999, 12.8587599}, //
+
29362 {5.19785023, 12.8580503}, //
+
29363 {5.19712019, 12.8573399}, //
+
29364 {5.19642019, 12.8567104}, //
+
29365 {5.19576979, 12.8561602}, //
+
29366 {5.19515991, 12.8556995}, //
+
29367 {5.19460011, 12.85532}, //
+
29368 {5.19406986, 12.8550301}, //
+
29369 {5.19359016, 12.8548203}, //
+
29370 {5.19315004, 12.8546896}, //
+
29371 {5.19274998, 12.8546495}, //
+
29372 {5.19236994, 12.8546305}, //
+
29373 {5.1919899, 12.8545704}, //
+
29374 {5.19161987, 12.8544598}, //
+
29375 {5.19123983, 12.85431}, //
+
29376 {5.19085979, 12.8541298}, //
+
29377 {5.19048023, 12.8538904}, //
+
29378 {5.19011021, 12.8536196}, //
+
29379 {5.18973017, 12.8533096}, //
+
29380 {5.18935013, 12.8529501}, //
+
29381 {5.18923998, 12.85285}, //
+
29382 });
+
29383 polys.push_back({
+
29384 {4.52650023, 13.0377502}, //
+
29385 {4.52642012, 13.0410204}, //
+
29386 {4.52615976, 13.0447998}, //
+
29387 {4.52574015, 13.0490704}, //
+
29388 {4.52515984, 13.0538502}, //
+
29389 {4.52440023, 13.0591297}, //
+
29390 {4.52347994, 13.0649099}, //
+
29391 {4.52238989, 13.0711899}, //
+
29392 {4.52113008, 13.0779696}, //
+
29393 {4.51970005, 13.0852499}, //
+
29394 {4.51794004, 13.0928898}, //
+
29395 {4.51566982, 13.1007299}, //
+
29396 {4.51290989, 13.1087904}, //
+
29397 {4.50964022, 13.1170502}, //
+
29398 {4.50585985, 13.1255198}, //
+
29399 {4.50158978, 13.1342096}, //
+
29400 {4.49680996, 13.1430998}, //
+
29401 {4.49152994, 13.1521902}, //
+
29402 {4.4857502, 13.1615}, //
+
29403 {4.47973013, 13.1708603}, //
+
29404 {4.47371006, 13.18009}, //
+
29405 {4.46767998, 13.1892004}, //
+
29406 {4.46165991, 13.1981802}, //
+
29407 {4.45563984, 13.2070398}, //
+
29408 {4.44961977, 13.2157698}, //
+
29409 {4.44359016, 13.22437}, //
+
29410 {4.4375701, 13.2328501}, //
+
29411 {4.43155003, 13.2412004}, //
+
29412 {4.43007994, 13.2427502}, //
+
29413 {4.42869997, 13.2443895}, //
+
29414 {4.42740011, 13.24611}, //
+
29415 {4.4261899, 13.2479095}, //
+
29416 {4.4250598, 13.2497902}, //
+
29417 {4.42401981, 13.2517595}, //
+
29418 {4.42305994, 13.2538004}, //
+
29419 {4.42219019, 13.2559404}, //
+
29420 {4.42140007, 13.2581501}, //
+
29421 {4.40813017, 13.2743502}, //
+
29422 {4.39393997, 13.2897997}, //
+
29423 {4.37881994, 13.3044901}, //
+
29424 {4.36279011, 13.3184404}, //
+
29425 {4.34582996, 13.3316298}, //
+
29426 {4.32796001, 13.3440599}, //
+
29427 {4.30916023, 13.3557396}, //
+
29428 {4.28944016, 13.3666697}, //
+
29429 {4.26879978, 13.3768501}, //
+
29430 {4.26360989, 13.3789396}, //
+
29431 {4.25858021, 13.3806896}, //
+
29432 {4.25371981, 13.3821096}, //
+
29433 {4.24903011, 13.3831997}, //
+
29434 {4.24451017, 13.3839502}, //
+
29435 {4.24015999, 13.3843603}, //
+
29436 {4.23597002, 13.3844404}, //
+
29437 {4.23194981, 13.3841896}, //
+
29438 {4.22809982, 13.3836002}, //
+
29439 {4.22438002, 13.38276}, //
+
29440 {4.22072983, 13.3817596}, //
+
29441 {4.21717978, 13.3805799}, //
+
29442 {4.21369982, 13.37924}, //
+
29443 {4.21032, 13.3777399}, //
+
29444 {4.20700979, 13.37607}, //
+
29445 {4.20379019, 13.3742304}, //
+
29446 {4.20065022, 13.37222}, //
+
29447 {4.19759989, 13.3700504}, //
+
29448 {4.19287014, 13.3663301}, //
+
29449 {4.18771982, 13.3626804}, //
+
29450 {4.18214989, 13.3591299}, //
+
29451 {4.17615986, 13.3556499}, //
+
29452 {4.16976023, 13.3522701}, //
+
29453 {4.16293001, 13.3489599}, //
+
29454 {4.15569019, 13.3457403}, //
+
29455 {4.1480298, 13.3425999}, //
+
29456 {4.1399498, 13.33955}, //
+
29457 {4.13149023, 13.3370304}, //
+
29458 {4.12270021, 13.3340101}, //
+
29459 {4.11358023, 13.3304901}, //
+
29460 {4.10411978, 13.3264704}, //
+
29461 {4.09431982, 13.32195}, //
+
29462 {4.08418989, 13.3169298}, //
+
29463 {4.07372999, 13.3114004}, //
+
29464 {4.06293011, 13.3053799}, //
+
29465 {4.05179977, 13.2988501}, //
+
29466 {4.0405798, 13.2920303}, //
+
29467 {4.02953005, 13.28512}, //
+
29468 {4.01865005, 13.2781296}, //
+
29469 {4.0079298, 13.27106}, //
+
29470 {3.99738002, 13.2638998}, //
+
29471 {3.98699999, 13.25665}, //
+
29472 {3.97677994, 13.24932}, //
+
29473 {3.96673012, 13.2419004}, //
+
29474 {3.95685005, 13.2343998}, //
+
29475 {3.95020008, 13.2292604}, //
+
29476 {3.94379997, 13.22437}, //
+
29477 {3.93763995, 13.2197304}, //
+
29478 {3.93174005, 13.2153397}, //
+
29479 {3.92609, 13.2111998}, //
+
29480 {3.92069006, 13.2073097}, //
+
29481 {3.91554999, 13.2036695}, //
+
29482 {3.91065001, 13.2002897}, //
+
29483 {3.9059999, 13.1971502}, //
+
29484 {3.90017009, 13.1940899}, //
+
29485 {3.89471006, 13.1909399}, //
+
29486 {3.88962007, 13.1877098}, //
+
29487 {3.88491011, 13.1843996}, //
+
29488 {3.88057995, 13.1809998}, //
+
29489 {3.87662005, 13.1775303}, //
+
29490 {3.87303996, 13.1739702}, //
+
29491 {3.86982989, 13.17033}, //
+
29492 {3.8670001, 13.1666002}, //
+
29493 {3.86442995, 13.1629601}, //
+
29494 {3.86197996, 13.1595697}, //
+
29495 {3.85965991, 13.1564302}, //
+
29496 {3.85746002, 13.1535501}, //
+
29497 {3.85539007, 13.1509104}, //
+
29498 {3.85344005, 13.14853}, //
+
29499 {3.85161996, 13.1464005}, //
+
29500 {3.84992003, 13.1445303}, //
+
29501 {3.84835005, 13.1429005}, //
+
29502 {3.84759998, 13.1407604}, //
+
29503 {3.8468399, 13.1388702}, //
+
29504 {3.84609008, 13.1372299}, //
+
29505 {3.84534001, 13.13585}, //
+
29506 {3.84458995, 13.1347103}, //
+
29507 {3.84383988, 13.1338301}, //
+
29508 {3.84309006, 13.1331997}, //
+
29509 {3.84235001, 13.1328297}, //
+
29510 {3.84159994, 13.1327}, //
+
29511 {3.83990002, 13.1344004}, //
+
29512 {3.83954, 13.1347799}, //
+
29513 {3.83923006, 13.1351604}, //
+
29514 {3.83895993, 13.1355305}, //
+
29515 {3.83872008, 13.13591}, //
+
29516 {3.83854008, 13.1362896}, //
+
29517 {3.83839011, 13.1366701}, //
+
29518 {3.83827996, 13.1370401}, //
+
29519 {3.83821988, 13.1374197}, //
+
29520 {3.83820009, 13.1378002}, //
+
29521 {3.83820009, 13.1428499}, //
+
29522 {3.83821988, 13.14363}, //
+
29523 {3.83827996, 13.1444502}, //
+
29524 {3.83839011, 13.1453104}, //
+
29525 {3.83854008, 13.1462097}, //
+
29526 {3.83872008, 13.14715}, //
+
29527 {3.83895993, 13.14814}, //
+
29528 {3.83923006, 13.1491699}, //
+
29529 {3.83954, 13.1502399}, //
+
29530 {3.83990002, 13.15135}, //
+
29531 {3.84028006, 13.1525002}, //
+
29532 {3.84065008, 13.1536999}, //
+
29533 {3.84102988, 13.1549301}, //
+
29534 {3.84139991, 13.1562099}, //
+
29535 {3.84176993, 13.1575298}, //
+
29536 {3.84213996, 13.1588802}, //
+
29537 {3.84250998, 13.1602802}, //
+
29538 {3.84288001, 13.1617203}, //
+
29539 {3.84325004, 13.1632004}, //
+
29540 {3.84366989, 13.1647501}, //
+
29541 {3.84417009, 13.1663904}, //
+
29542 {3.84475994, 13.1681099}, //
+
29543 {3.8454299, 13.1699104}, //
+
29544 {3.84618998, 13.1717901}, //
+
29545 {3.84702992, 13.1737604}, //
+
29546 {3.84794998, 13.1758003}, //
+
29547 {3.84895992, 13.1779404}, //
+
29548 {3.85004997, 13.18015}, //
+
29549 {3.8512001, 13.1824198}, //
+
29550 {3.85240006, 13.18468}, //
+
29551 {3.85363007, 13.1869402}, //
+
29552 {3.8549099, 13.1892099}, //
+
29553 {3.85623002, 13.1914701}, //
+
29554 {3.85757995, 13.1937304}, //
+
29555 {3.85897994, 13.1959896}, //
+
29556 {3.86041999, 13.1982403}, //
+
29557 {3.86190009, 13.2004995}, //
+
29558 {3.86345005, 13.2028103}, //
+
29559 {3.86508989, 13.2052002}, //
+
29560 {3.86681008, 13.2076702}, //
+
29561 {3.86861992, 13.2102299}, //
+
29562 {3.87050009, 13.2128696}, //
+
29563 {3.87247992, 13.2155895}, //
+
29564 {3.87453008, 13.2183905}, //
+
29565 {3.8766799, 13.2212801}, //
+
29566 {3.87890005, 13.2242498}, //
+
29567 {3.88651991, 13.23452}, //
+
29568 {3.89429998, 13.2442503}, //
+
29569 {3.90225005, 13.2534399}, //
+
29570 {3.91037011, 13.2620802}, //
+
29571 {3.91864991, 13.2701797}, //
+
29572 {3.92709994, 13.2777395}, //
+
29573 {3.93571997, 13.28475}, //
+
29574 {3.94449997, 13.2912197}, //
+
29575 {3.95344996, 13.2971497}, //
+
29576 {3.96274996, 13.3029499}, //
+
29577 {3.9725399, 13.3090496}, //
+
29578 {3.98284006, 13.3154297}, //
+
29579 {3.99364996, 13.3221102}, //
+
29580 {4.00495005, 13.3290901}, //
+
29581 {4.01675987, 13.3363504}, //
+
29582 {4.0290699, 13.3439102}, //
+
29583 {4.04188013, 13.3517599}, //
+
29584 {4.0552001, 13.3599005}, //
+
29585 {4.06195021, 13.3599005}, //
+
29586 {4.08745003, 13.3736696}, //
+
29587 {4.11118984, 13.3878498}, //
+
29588 {4.13317013, 13.4024601}, //
+
29589 {4.15338993, 13.4174805}, //
+
29590 {4.1718502, 13.4329205}, //
+
29591 {4.18855, 13.4487896}, //
+
29592 {4.20348978, 13.4650698}, //
+
29593 {4.21668005, 13.4817801}, //
+
29594 {4.22809982, 13.4989004}, //
+
29595 {4.23027992, 13.5019102}, //
+
29596 {4.2322998, 13.50492}, //
+
29597 {4.23413992, 13.5079298}, //
+
29598 {4.2358098, 13.5109396}, //
+
29599 {4.23731995, 13.5139599}, //
+
29600 {4.23865986, 13.5169697}, //
+
29601 {4.23982, 13.5199804}, //
+
29602 {4.24081993, 13.5229902}, //
+
29603 {4.2416501, 13.526}, //
+
29604 {4.24232006, 13.5289602}, //
+
29605 {4.2428298, 13.5317898}, //
+
29606 {4.24315977, 13.5344896}, //
+
29607 {4.24333, 13.5370703}, //
+
29608 {4.24333, 13.5395203}, //
+
29609 {4.24315977, 13.5418396}, //
+
29610 {4.2428298, 13.5440397}, //
+
29611 {4.24232006, 13.5461102}, //
+
29612 {4.2416501, 13.5480499}, //
+
29613 {4.24088001, 13.5499001}, //
+
29614 {4.24006987, 13.5516596}, //
+
29615 {4.23922014, 13.5533304}, //
+
29616 {4.23832989, 13.5549202}, //
+
29617 {4.23739004, 13.5564299}, //
+
29618 {4.23641014, 13.5578499}, //
+
29619 {4.23538017, 13.5591898}, //
+
29620 {4.23431015, 13.5604401}, //
+
29621 {4.23320007, 13.5615997}, //
+
29622 {4.23206997, 13.5627098}, //
+
29623 {4.23092985, 13.5637798}, //
+
29624 {4.22980022, 13.5648098}, //
+
29625 {4.22867012, 13.5657997}, //
+
29626 {4.22753, 13.56674}, //
+
29627 {4.2263999, 13.5676403}, //
+
29628 {4.22526979, 13.5684996}, //
+
29629 {4.22413015, 13.5693197}, //
+
29630 {4.22300005, 13.5700998}, //
+
29631 {4.22194004, 13.5708103}, //
+
29632 {4.21800995, 13.5734596}, //
+
29633 {4.21794987, 13.5734997}, //
+
29634 {4.2181201, 13.5736504}, //
+
29635 {4.21861982, 13.57409}, //
+
29636 {4.22063017, 13.57584}, //
+
29637 {4.22212982, 13.5771599}, //
+
29638 {4.22396994, 13.5787697}, //
+
29639 {4.22615004, 13.5806704}, //
+
29640 {4.22866011, 13.58286}, //
+
29641 {4.23150015, 13.58535}, //
+
29642 {4.23452997, 13.5880499}, //
+
29643 {4.23760986, 13.5908699}, //
+
29644 {4.2407198, 13.5938196}, //
+
29645 {4.2438798, 13.5968904}, //
+
29646 {4.24707985, 13.60009}, //
+
29647 {4.25031996, 13.6034203}, //
+
29648 {4.25361013, 13.6068697}, //
+
29649 {4.25692987, 13.6104498}, //
+
29650 {4.26030016, 13.61415}, //
+
29651 {4.26365995, 13.6178904}, //
+
29652 {4.2669301, 13.6215401}, //
+
29653 {4.27012014, 13.6251001}, //
+
29654 {4.27322006, 13.6285801}, //
+
29655 {4.27623987, 13.6319704}, //
+
29656 {4.27917004, 13.6352797}, //
+
29657 {4.28201008, 13.6385098}, //
+
29658 {4.28477001, 13.6416502}, //
+
29659 {4.28744984, 13.6447001}, //
+
29660 {4.28993988, 13.6475897}, //
+
29661 {4.29212999, 13.6502199}, //
+
29662 {4.29403019, 13.6526098}, //
+
29663 {4.29563999, 13.6547403}, //
+
29664 {4.29695988, 13.65662}, //
+
29665 {4.29797983, 13.6582603}, //
+
29666 {4.29870987, 13.6596403}, //
+
29667 {4.29914999, 13.6607704}, //
+
29668 {4.29930019, 13.6616497}, //
+
29669 {4.30315018, 13.63766}, //
+
29670 {4.30566978, 13.6154299}, //
+
29671 {4.30683994, 13.5949602}, //
+
29672 {4.30667019, 13.5762501}, //
+
29673 {4.30517006, 13.5592899}, //
+
29674 {4.30232, 13.5440903}, //
+
29675 {4.29814005, 13.5306501}, //
+
29676 {4.29261017, 13.5189695}, //
+
29677 {4.28574991, 13.5090504}, //
+
29678 {4.28353977, 13.5061197}, //
+
29679 {4.2814002, 13.5033598}, //
+
29680 {4.27935982, 13.5007696}, //
+
29681 {4.27739, 13.4983397}, //
+
29682 {4.27550983, 13.4960804}, //
+
29683 {4.27370977, 13.4939804}, //
+
29684 {4.27198982, 13.4920597}, //
+
29685 {4.27034998, 13.4902897}, //
+
29686 {4.26879978, 13.4886999}, //
+
29687 {4.26733017, 13.4871798}, //
+
29688 {4.2659502, 13.48561}, //
+
29689 {4.26463985, 13.4840097}, //
+
29690 {4.26343012, 13.4823503}, //
+
29691 {4.26229, 13.4806604}, //
+
29692 {4.26124001, 13.47892}, //
+
29693 {4.26028013, 13.4771404}, //
+
29694 {4.25939989, 13.4753199}, //
+
29695 {4.25860023, 13.4734497}, //
+
29696 {4.25793982, 13.47155}, //
+
29697 {4.25744009, 13.4696102}, //
+
29698 {4.25712013, 13.4676199}, //
+
29699 {4.25695992, 13.4655895}, //
+
29700 {4.25695992, 13.4635201}, //
+
29701 {4.25713015, 13.4614096}, //
+
29702 {4.25747013, 13.4592505}, //
+
29703 {4.25797987, 13.4570503}, //
+
29704 {4.25864983, 13.4547997}, //
+
29705 {4.25943995, 13.45261}, //
+
29706 {4.26031017, 13.4505396}, //
+
29707 {4.26127005, 13.4485903}, //
+
29708 {4.26231003, 13.4467802}, //
+
29709 {4.26344013, 13.4450798}, //
+
29710 {4.26464987, 13.4435101}, //
+
29711 {4.2659502, 13.44207}, //
+
29712 {4.26733017, 13.4407501}, //
+
29713 {4.26879978, 13.4395504}, //
+
29714 {4.27039003, 13.4384403}, //
+
29715 {4.27216005, 13.4373703}, //
+
29716 {4.2740798, 13.4363403}, //
+
29717 {4.27617979, 13.43536}, //
+
29718 {4.27844, 13.4344196}, //
+
29719 {4.28086996, 13.4335299}, //
+
29720 {4.28346014, 13.4326801}, //
+
29721 {4.28622007, 13.4318705}, //
+
29722 {4.28915024, 13.4310999}, //
+
29723 {4.29625988, 13.4298801}, //
+
29724 {4.30404997, 13.4277496}, //
+
29725 {4.3125, 13.4246902}, //
+
29726 {4.32161999, 13.4207096}, //
+
29727 {4.33141994, 13.4158096}, //
+
29728 {4.34187984, 13.4099903}, //
+
29729 {4.35302019, 13.4032497}, //
+
29730 {4.36482, 13.3955803}, //
+
29731 {4.37729979, 13.3870001}, //
+
29732 {4.38483, 13.38064}, //
+
29733 {4.39237022, 13.3736095}, //
+
29734 {4.39989996, 13.3659201}, //
+
29735 {4.40743017, 13.3575497}, //
+
29736 {4.41496992, 13.3485098}, //
+
29737 {4.42250013, 13.3388004}, //
+
29738 {4.43002987, 13.3284197}, //
+
29739 {4.4375701, 13.3173704}, //
+
29740 {4.44509983, 13.3056498}, //
+
29741 {4.45254993, 13.2936401}, //
+
29742 {4.45982981, 13.2817001}, //
+
29743 {4.46694994, 13.2698603}, //
+
29744 {4.47389984, 13.25809}, //
+
29745 {4.48067999, 13.2464104}, //
+
29746 {4.48729992, 13.2348099}, //
+
29747 {4.4937501, 13.2232904}, //
+
29748 {4.50003004, 13.2118502}, //
+
29749 {4.50614977, 13.2004995}, //
+
29750 {4.50907993, 13.1928196}, //
+
29751 {4.51183987, 13.1848497}, //
+
29752 {4.51443005, 13.1765804}, //
+
29753 {4.51684999, 13.1680202}, //
+
29754 {4.5191102, 13.1591597}, //
+
29755 {4.52119017, 13.1500101}, //
+
29756 {4.52310991, 13.1405697}, //
+
29757 {4.52486992, 13.1308298}, //
+
29758 {4.52645016, 13.1208}, //
+
29759 {4.52784014, 13.1108599}, //
+
29760 {4.52896976, 13.1013899}, //
+
29761 {4.52986002, 13.09237}, //
+
29762 {4.53048992, 13.0838203}, //
+
29763 {4.53086996, 13.0757198}, //
+
29764 {4.53101015, 13.0680904}, //
+
29765 {4.53088999, 13.0609198}, //
+
29766 {4.53051996, 13.0542002}, //
+
29767 {4.52990007, 13.0479498}, //
+
29768 {4.52990007, 13.0411501}, //
+
29769 {4.52919006, 13.0397301}, //
+
29770 {4.52800989, 13.0374002}, //
+
29771 {4.52755022, 13.0364799}, //
+
29772 {4.52717018, 13.0357304}, //
+
29773 {4.52666998, 13.03473}, //
+
29774 {4.5265398, 13.0344801}, //
+
29775 {4.52650023, 13.0344}, //
+
29776 });
+
29777 polys.push_back({
+
29778 {0.202861995, 13.5329704}, //
+
29779 {0.202608004, 13.5334702}, //
+
29780 {0.202689007, 13.5343103}, //
+
29781 {0.203104004, 13.5354795}, //
+
29782 {0.203853995, 13.5369797}, //
+
29783 {0.204938993, 13.5388203}, //
+
29784 {0.206358001, 13.5410004}, //
+
29785 {0.208112001, 13.5435104}, //
+
29786 {0.210199997, 13.5463495}, //
+
29787 {0.212507993, 13.5494003}, //
+
29788 {0.214899004, 13.5525398}, //
+
29789 {0.217372, 13.5557699}, //
+
29790 {0.219927996, 13.5590801}, //
+
29791 {0.222567007, 13.5624704}, //
+
29792 {0.225289002, 13.5659504}, //
+
29793 {0.228092998, 13.5695105}, //
+
29794 {0.230979994, 13.5731602}, //
+
29795 {0.233950004, 13.5768995}, //
+
29796 {0.236194998, 13.5791998}, //
+
29797 {0.238397002, 13.5815802}, //
+
29798 {0.240556002, 13.5840397}, //
+
29799 {0.242670998, 13.5865898}, //
+
29800 {0.244743004, 13.5892296}, //
+
29801 {0.246772006, 13.5919399}, //
+
29802 {0.248758003, 13.5947504}, //
+
29803 {0.25070101, 13.5976295}, //
+
29804 {0.252600014, 13.6006002}, //
+
29805 {0.254424989, 13.6034899}, //
+
29806 {0.256123006, 13.6061201}, //
+
29807 {0.257694006, 13.60851}, //
+
29808 {0.259137988, 13.6106396}, //
+
29809 {0.260455012, 13.6125202}, //
+
29810 {0.261644006, 13.6141596}, //
+
29811 {0.262706995, 13.6155396}, //
+
29812 {0.263642013, 13.6166697}, //
+
29813 {0.264450014, 13.6175499}, //
+
29814 {0.264450014, 13.5870504}, //
+
29815 {0.264324993, 13.5855198}, //
+
29816 {0.263949007, 13.5839396}, //
+
29817 {0.263321996, 13.5823298}, //
+
29818 {0.262445003, 13.5806704}, //
+
29819 {0.261317015, 13.57897}, //
+
29820 {0.259938985, 13.5772305}, //
+
29821 {0.25830999, 13.5754404}, //
+
29822 {0.25643, 13.5736198}, //
+
29823 {0.254299998, 13.5717497}, //
+
29824 {0.252043992, 13.56985}, //
+
29825 {0.249786004, 13.5679102}, //
+
29826 {0.247528002, 13.5659199}, //
+
29827 {0.245268002, 13.5638905}, //
+
29828 {0.243007004, 13.56182}, //
+
29829 {0.240743995, 13.5597095}, //
+
29830 {0.238481, 13.5575504}, //
+
29831 {0.236215994, 13.5553503}, //
+
29832 {0.233950004, 13.5530996}, //
+
29833 {0.231693998, 13.55091}, //
+
29834 {0.229435995, 13.5488396}, //
+
29835 {0.227178007, 13.5468903}, //
+
29836 {0.224917993, 13.5450802}, //
+
29837 {0.222656995, 13.5433798}, //
+
29838 {0.220394, 13.54181}, //
+
29839 {0.218131006, 13.54037}, //
+
29840 {0.215865999, 13.5390501}, //
+
29841 {0.213599995, 13.5378504}, //
+
29842 {0.211469993, 13.5367899}, //
+
29843 {0.207960993, 13.5350399}, //
+
29844 {0.206582993, 13.5343599}, //
+
29845 {0.205455005, 13.5338001}, //
+
29846 {0.204577997, 13.5333595}, //
+
29847 {0.203449994, 13.5327997}, //
+
29848 });
+
29849 polys.push_back({
+
29850 {0.274839014, 13.5571098}, //
+
29851 {0.274985999, 13.5575504}, //
+
29852 {0.275175005, 13.5581102}, //
+
29853 {0.275406003, 13.5587902}, //
+
29854 {0.275678009, 13.5595999}, //
+
29855 {0.276349992, 13.5615997}, //
+
29856 {0.276748002, 13.5627499}, //
+
29857 {0.27718699, 13.5639496}, //
+
29858 {0.277666986, 13.5651798}, //
+
29859 {0.278187007, 13.5664597}, //
+
29860 {0.278748006, 13.5677795}, //
+
29861 {0.279350013, 13.5691299}, //
+
29862 {0.279992998, 13.5705299}, //
+
29863 {0.280676007, 13.57197}, //
+
29864 {0.281399995, 13.5734501}, //
+
29865 {0.282155991, 13.5749598}, //
+
29866 {0.282911003, 13.5764704}, //
+
29867 {0.283666998, 13.57798}, //
+
29868 {0.28442201, 13.5794897}, //
+
29869 {0.285932988, 13.5825195}, //
+
29870 {0.286689013, 13.5840302}, //
+
29871 {0.288199991, 13.5870504}, //
+
29872 {0.288913995, 13.5885601}, //
+
29873 {0.289543003, 13.5900698}, //
+
29874 {0.290089011, 13.5915804}, //
+
29875 {0.290551007, 13.5930796}, //
+
29876 {0.290928006, 13.5945902}, //
+
29877 {0.291222006, 13.5960903}, //
+
29878 {0.291431993, 13.5976}, //
+
29879 {0.291557997, 13.5991001}, //
+
29880 {0.291599989, 13.6006002}, //
+
29881 {0.293110996, 13.5915604}, //
+
29882 {0.293657005, 13.5882902}, //
+
29883 {0.294286013, 13.5845203}, //
+
29884 {0.294999987, 13.5802498}, //
+
29885 {0.294957995, 13.5794802}, //
+
29886 {0.294831991, 13.5786695}, //
+
29887 {0.294622004, 13.5778198}, //
+
29888 {0.294328004, 13.57693}, //
+
29889 {0.293951005, 13.5759897}, //
+
29890 {0.293489009, 13.5750103}, //
+
29891 {0.292943001, 13.5739803}, //
+
29892 {0.292313993, 13.5729103}, //
+
29893 {0.291599989, 13.5718002}, //
+
29894 {0.290843993, 13.5707102}, //
+
29895 {0.290089011, 13.5697002}, //
+
29896 {0.289332986, 13.5687799}, //
+
29897 {0.288578004, 13.5679398}, //
+
29898 {0.287822008, 13.5671797}, //
+
29899 {0.287066996, 13.5665102}, //
+
29900 {0.286311001, 13.5659199}, //
+
29901 {0.285555989, 13.5654202}, //
+
29902 {0.284799993, 13.5649996}, //
+
29903 {0.284043998, 13.5646}, //
+
29904 {0.283288985, 13.5641603}, //
+
29905 {0.28253299, 13.5636797}, //
+
29906 {0.281778008, 13.5631504}, //
+
29907 {0.281022012, 13.5625896}, //
+
29908 {0.280267, 13.5619802}, //
+
29909 {0.279511005, 13.5613298}, //
+
29910 {0.278755993, 13.5606298}, //
+
29911 {0.277999997, 13.5599003}, //
+
29912 {0.27729699, 13.5592003}, //
+
29913 {0.276677012, 13.5585804}, //
+
29914 {0.276138991, 13.5580397}, //
+
29915 {0.275683999, 13.55758}, //
+
29916 {0.275312006, 13.55721}, //
+
29917 {0.275022, 13.5569201}, //
+
29918 {0.274814993, 13.5567198}, //
+
29919 {0.274690986, 13.5565901}, //
+
29920 {0.274650007, 13.55655}, //
+
29921 });
+
29922 polys.push_back({
+
29923 {1.70058, 13.1040802}, //
+
29924 {1.70586002, 13.1093502}, //
+
29925 {1.71113002, 13.1146297}, //
+
29926 {1.71641004, 13.1198997}, //
+
29927 {1.72169006, 13.1251698}, //
+
29928 {1.72696996, 13.1304398}, //
+
29929 {1.73223996, 13.1357098}, //
+
29930 {1.73751998, 13.1409798}, //
+
29931 {1.7428, 13.1462498}, //
+
29932 {1.74466002, 13.15207}, //
+
29933 {1.74572003, 13.1574802}, //
+
29934 {1.74599004, 13.1624603}, //
+
29935 {1.74546003, 13.1670303}, //
+
29936 {1.74414003, 13.1711702}, //
+
29937 {1.74202001, 13.1748896}, //
+
29938 {1.73910999, 13.1781998}, //
+
29939 {1.73539996, 13.1810799}, //
+
29940 {1.73090005, 13.1835499}, //
+
29941 {1.72595, 13.18573}, //
+
29942 {1.72087002, 13.1877499}, //
+
29943 {1.71565998, 13.1895905}, //
+
29944 {1.71033001, 13.1912699}, //
+
29945 {1.70486999, 13.1927795}, //
+
29946 {1.69928002, 13.1941299}, //
+
29947 {1.69356, 13.1953001}, //
+
29948 {1.68771994, 13.19631}, //
+
29949 {1.68175006, 13.1971502}, //
+
29950 {1.67806995, 13.1978998}, //
+
29951 {1.67455006, 13.1986399}, //
+
29952 {1.67121005, 13.1993904}, //
+
29953 {1.66803002, 13.20014}, //
+
29954 {1.66501999, 13.2008896}, //
+
29955 {1.66217005, 13.2016401}, //
+
29956 {1.6595, 13.2023897}, //
+
29957 {1.65699005, 13.2031498}, //
+
29958 {1.65464997, 13.2039003}, //
+
29959 {1.63584995, 13.2092199}, //
+
29960 {1.61713004, 13.2131205}, //
+
29961 {1.59850001, 13.2155895}, //
+
29962 {1.57994998, 13.2166405}, //
+
29963 {1.56149006, 13.21626}, //
+
29964 {1.54312003, 13.2144604}, //
+
29965 {1.52482998, 13.2112303}, //
+
29966 {1.50662005, 13.2065802}, //
+
29967 {1.4885, 13.2004995}, //
+
29968 {1.46895003, 13.1951504}, //
+
29969 {1.44948995, 13.1911297}, //
+
29970 {1.43010998, 13.1884604}, //
+
29971 {1.41080999, 13.1871204}, //
+
29972 {1.39159, 13.1871204}, //
+
29973 {1.37246001, 13.1884604}, //
+
29974 {1.35339999, 13.1911297}, //
+
29975 {1.33443999, 13.1951504}, //
+
29976 {1.31554997, 13.2004995}, //
+
29977 {1.29218996, 13.2028904}, //
+
29978 {1.26883996, 13.2055302}, //
+
29979 {1.24547994, 13.2084303}, //
+
29980 {1.22212994, 13.2115698}, //
+
29981 {1.19877005, 13.2149696}, //
+
29982 {1.17542005, 13.2186098}, //
+
29983 {1.15206003, 13.2225103}, //
+
29984 {1.12871003, 13.2266502}, //
+
29985 {1.10535002, 13.2310495}, //
+
29986 {1.08495998, 13.2346096}, //
+
29987 {1.06448996, 13.2377501}, //
+
29988 {1.04393995, 13.2404699}, //
+
29989 {1.02330005, 13.2427702}, //
+
29990 {1.00258005, 13.2446499}, //
+
29991 {0.981772006, 13.2461205}, //
+
29992 {0.960882008, 13.24716}, //
+
29993 {0.939908028, 13.2477903}, //
+
29994 {0.918850005, 13.2480001}, //
+
29995 {0.906081021, 13.2480402}, //
+
29996 {0.89339602, 13.2481699}, //
+
29997 {0.880793989, 13.2483797}, //
+
29998 {0.868277013, 13.2486696}, //
+
29999 {0.855844021, 13.2490501}, //
+
30000 {0.843493998, 13.2495098}, //
+
30001 {0.831228971, 13.2500601}, //
+
30002 {0.819047987, 13.2506905}, //
+
30003 {0.806949973, 13.2514}, //
+
30004 {0.80536598, 13.2521496}, //
+
30005 {0.80361402, 13.2528896}, //
+
30006 {0.801693976, 13.2536402}, //
+
30007 {0.799606979, 13.2543898}, //
+
30008 {0.797351003, 13.2551403}, //
+
30009 {0.794928014, 13.2558899}, //
+
30010 {0.792335987, 13.2566404}, //
+
30011 {0.789577007, 13.2573996}, //
+
30012 {0.786650002, 13.2581501}, //
+
30013 {0.782190025, 13.2582302}, //
+
30014 {0.777854979, 13.2584801}, //
+
30015 {0.77364397, 13.2588997}, //
+
30016 {0.769559026, 13.2594805}, //
+
30017 {0.765597999, 13.2602301}, //
+
30018 {0.76176101, 13.2611504}, //
+
30019 {0.758049011, 13.2622299}, //
+
30020 {0.754462004, 13.2634802}, //
+
30021 {0.750999987, 13.2649002}, //
+
30022 {0.747714996, 13.2664099}, //
+
30023 {0.744639993, 13.2679195}, //
+
30024 {0.741771996, 13.2694302}, //
+
30025 {0.739113986, 13.2709398}, //
+
30026 {0.736663997, 13.27246}, //
+
30027 {0.734422028, 13.2739697}, //
+
30028 {0.732389987, 13.2754803}, //
+
30029 {0.730565012, 13.2769899}, //
+
30030 {0.728950024, 13.2784996}, //
+
30031 {0.727658987, 13.2800503}, //
+
30032 {0.726786971, 13.2816896}, //
+
30033 {0.726333022, 13.2834101}, //
+
30034 {0.726297975, 13.2852097}, //
+
30035 {0.726680994, 13.2870903}, //
+
30036 {0.727482975, 13.2890596}, //
+
30037 {0.728703976, 13.2910995}, //
+
30038 {0.730342984, 13.2932396}, //
+
30039 {0.7324, 13.2954502}, //
+
30040 {0.733249009, 13.2968597}, //
+
30041 {0.734309018, 13.2980499}, //
+
30042 {0.735578001, 13.2990398}, //
+
30043 {0.737056971, 13.2998199}, //
+
30044 {0.738745987, 13.3003798}, //
+
30045 {0.740643978, 13.3007402}, //
+
30046 {0.742753029, 13.30089}, //
+
30047 {0.745072007, 13.3008204}, //
+
30048 {0.747600019, 13.3005505}, //
+
30049 {0.750222981, 13.3001499}, //
+
30050 {0.752802014, 13.2997103}, //
+
30051 {0.755339026, 13.2992296}, //
+
30052 {0.757831991, 13.2987003}, //
+
30053 {0.76028198, 13.2981396}, //
+
30054 {0.762688994, 13.2975302}, //
+
30055 {0.765052021, 13.2968798}, //
+
30056 {0.767373025, 13.2961798}, //
+
30057 {0.769649982, 13.2954502}, //
+
30058 {0.773364007, 13.2939997}, //
+
30059 {0.776951015, 13.2926798}, //
+
30060 {0.780411005, 13.2914801}, //
+
30061 {0.783743978, 13.29041}, //
+
30062 {0.786948979, 13.2894697}, //
+
30063 {0.790027976, 13.2886496}, //
+
30064 {0.792979002, 13.2879601}, //
+
30065 {0.79580301, 13.2873898}, //
+
30066 {0.798500001, 13.2869501}, //
+
30067 {0.801113009, 13.2866497}, //
+
30068 {0.803685009, 13.2864599}, //
+
30069 {0.806217015, 13.2864103}, //
+
30070 {0.808706999, 13.2864704}, //
+
30071 {0.811156988, 13.2866602}, //
+
30072 {0.813566983, 13.2869701}, //
+
30073 {0.815935016, 13.2874098}, //
+
30074 {0.818262994, 13.2879696}, //
+
30075 {0.820550025, 13.2886496}, //
+
30076 {0.835533023, 13.2873201}, //
+
30077 {0.850350022, 13.2863197}, //
+
30078 {0.86500001, 13.2856503}, //
+
30079 {0.879482985, 13.2853203}, //
+
30080 {0.89380002, 13.2853203}, //
+
30081 {0.907949984, 13.2856503}, //
+
30082 {0.921932995, 13.2863197}, //
+
30083 {0.935750008, 13.2873201}, //
+
30084 {0.949400008, 13.2886496}, //
+
30085 {0.96141398, 13.29004}, //
+
30086 {0.973343015, 13.2911701}, //
+
30087 {0.985189021, 13.2920504}, //
+
30088 {0.996950984, 13.2926798}, //
+
30089 {1.00863004, 13.2930603}, //
+
30090 {1.02022004, 13.2931805}, //
+
30091 {1.03173006, 13.2930603}, //
+
30092 {1.04315996, 13.2926798}, //
+
30093 {1.05449998, 13.2920504}, //
+
30094 {1.05831003, 13.2920103}, //
+
30095 {1.06219995, 13.2918797}, //
+
30096 {1.06617999, 13.2916698}, //
+
30097 {1.07024002, 13.2913799}, //
+
30098 {1.07438004, 13.2910004}, //
+
30099 {1.07860994, 13.2905397}, //
+
30100 {1.08291996, 13.2899904}, //
+
30101 {1.08731997, 13.28936}, //
+
30102 {1.09179997, 13.2886496}, //
+
30103 {1.10380995, 13.2858496}, //
+
30104 {1.11573994, 13.2834597}, //
+
30105 {1.12758994, 13.2814999}, //
+
30106 {1.13935006, 13.2799501}, //
+
30107 {1.15102994, 13.2788296}, //
+
30108 {1.16261995, 13.27812}, //
+
30109 {1.17412996, 13.2778301}, //
+
30110 {1.18555999, 13.2779503}, //
+
30111 {1.19690001, 13.2784996}, //
+
30112 {1.31554997, 13.2784996}, //
+
30113 {1.33966005, 13.2778702}, //
+
30114 {1.36377001, 13.2774897}, //
+
30115 {1.38787997, 13.2773705}, //
+
30116 {1.41199005, 13.2774897}, //
+
30117 {1.43611002, 13.2778702}, //
+
30118 {1.46021998, 13.2784996}, //
+
30119 {1.48433006, 13.2793798}, //
+
30120 {1.50844002, 13.2805099}, //
+
30121 {1.53254998, 13.2819004}, //
+
30122 {1.53544998, 13.2827997}, //
+
30123 {1.53808999, 13.2840004}, //
+
30124 {1.54048002, 13.2854795}, //
+
30125 {1.54261005, 13.2872601}, //
+
30126 {1.54449999, 13.28934}, //
+
30127 {1.54612994, 13.2917004}, //
+
30128 {1.54750001, 13.2943602}, //
+
30129 {1.54863, 13.2973099}, //
+
30130 {1.54949999, 13.3005505}, //
+
30131 {1.55013001, 13.3039799}, //
+
30132 {1.55051005, 13.3074999}, //
+
30133 {1.55062997, 13.3110905}, //
+
30134 {1.55051005, 13.3147802}, //
+
30135 {1.55013001, 13.3185396}, //
+
30136 {1.54949999, 13.3223896}, //
+
30137 {1.54861999, 13.3263302}, //
+
30138 {1.54749, 13.3303499}, //
+
30139 {1.54610002, 13.3344498}, //
+
30140 {1.54452002, 13.3384895}, //
+
30141 {1.54276001, 13.3423204}, //
+
30142 {1.54084003, 13.3459396}, //
+
30143 {1.53875005, 13.34935}, //
+
30144 {1.53648996, 13.3525496}, //
+
30145 {1.53406, 13.3555403}, //
+
30146 {1.53146005, 13.3583202}, //
+
30147 {1.52868998, 13.3608904}, //
+
30148 {1.52575004, 13.3632498}, //
+
30149 {1.52274001, 13.3653097}, //
+
30150 {1.51972997, 13.3669395}, //
+
30151 {1.51672006, 13.3681602}, //
+
30152 {1.51371002, 13.3689604}, //
+
30153 {1.51068997, 13.3693399}, //
+
30154 {1.50768006, 13.3692904}, //
+
30155 {1.50467002, 13.3688297}, //
+
30156 {1.50165999, 13.3679504}, //
+
30157 {1.49864995, 13.3666496}, //
+
30158 {1.49190998, 13.3624601}, //
+
30159 {1.48526001, 13.3589497}, //
+
30160 {1.47869003, 13.3561001}, //
+
30161 {1.47220004, 13.35392}, //
+
30162 {1.46580005, 13.3524199}, //
+
30163 {1.45947003, 13.3515797}, //
+
30164 {1.45323002, 13.3514204}, //
+
30165 {1.44707, 13.3519201}, //
+
30166 {1.44099998, 13.3530998}, //
+
30167 {1.43493998, 13.3546495}, //
+
30168 {1.42878997, 13.3562899}, //
+
30169 {1.42255998, 13.3580103}, //
+
30170 {1.41623998, 13.3598099}, //
+
30171 {1.40983999, 13.3616896}, //
+
30172 {1.40336001, 13.3636599}, //
+
30173 {1.39679003, 13.3656998}, //
+
30174 {1.39014006, 13.3678398}, //
+
30175 {1.38339996, 13.3700504}, //
+
30176 {1.38112998, 13.3708096}, //
+
30177 {1.37887001, 13.3715601}, //
+
30178 {1.37661004, 13.3723202}, //
+
30179 {1.37434006, 13.3730698}, //
+
30180 {1.37207997, 13.3738298}, //
+
30181 {1.36982, 13.3745804}, //
+
30182 {1.36756003, 13.3753405}, //
+
30183 {1.36530995, 13.37609}, //
+
30184 {1.36304998, 13.3768501}, //
+
30185 {1.35160995, 13.3810301}, //
+
30186 {1.33993006, 13.3845396}, //
+
30187 {1.32799006, 13.3873796}, //
+
30188 {1.31580997, 13.3895502}, //
+
30189 {1.30338001, 13.3910599}, //
+
30190 {1.29068995, 13.3918896}, //
+
30191 {1.27776003, 13.3920603}, //
+
30192 {1.26458001, 13.3915701}, //
+
30193 {1.25115001, 13.3903999}, //
+
30194 {1.24659002, 13.39044}, //
+
30195 {1.24194002, 13.3905697}, //
+
30196 {1.23721004, 13.3907804}, //
+
30197 {1.23239005, 13.3910704}, //
+
30198 {1.22748995, 13.3914499}, //
+
30199 {1.22250998, 13.3919096}, //
+
30200 {1.21744001, 13.3924599}, //
+
30201 {1.21229005, 13.3930902}, //
+
30202 {1.20704997, 13.3937998}, //
+
30203 {1.18761003, 13.3933201}, //
+
30204 {1.16846001, 13.3933802}, //
+
30205 {1.14960003, 13.39398}, //
+
30206 {1.13103998, 13.3951302}, //
+
30207 {1.11275995, 13.3968296}, //
+
30208 {1.09477997, 13.3990698}, //
+
30209 {1.07710004, 13.4018497}, //
+
30210 {1.05970001, 13.40518}, //
+
30211 {1.04260004, 13.40905}, //
+
30212 {1.02579999, 13.4136801}, //
+
30213 {1.00928998, 13.41926}, //
+
30214 {0.993077993, 13.4258204}, //
+
30215 {0.977153003, 13.4333296}, //
+
30216 {0.961520016, 13.4418097}, //
+
30217 {0.946178019, 13.4512501}, //
+
30218 {0.931127012, 13.4616499}, //
+
30219 {0.916368008, 13.4730196}, //
+
30220 {0.901899993, 13.4853497}, //
+
30221 {0.888135016, 13.4945498}, //
+
30222 {0.873948991, 13.5025797}, //
+
30223 {0.859344006, 13.5094404}, //
+
30224 {0.844319999, 13.51513}, //
+
30225 {0.828875005, 13.5196505}, //
+
30226 {0.813010991, 13.5229902}, //
+
30227 {0.796727002, 13.5251703}, //
+
30228 {0.780022979, 13.5261698}, //
+
30229 {0.762899995, 13.526}, //
+
30230 {0.758293986, 13.5266705}, //
+
30231 {0.753520012, 13.5271797}, //
+
30232 {0.748578012, 13.5275097}, //
+
30233 {0.743467987, 13.5276804}, //
+
30234 {0.738189995, 13.5276804}, //
+
30235 {0.732743979, 13.5275097}, //
+
30236 {0.727131009, 13.5271797}, //
+
30237 {0.721349001, 13.5266705}, //
+
30238 {0.715399981, 13.526}, //
+
30239 {0.710196018, 13.5246496}, //
+
30240 {0.705115974, 13.5235796}, //
+
30241 {0.70016098, 13.52281}, //
+
30242 {0.695330977, 13.5223303}, //
+
30243 {0.690625012, 13.5221395}, //
+
30244 {0.686043978, 13.5222397}, //
+
30245 {0.681587994, 13.5226402}, //
+
30246 {0.677257001, 13.5233202}, //
+
30247 {0.673049986, 13.5242996}, //
+
30248 {0.669009984, 13.5255804}, //
+
30249 {0.665178001, 13.5271502}, //
+
30250 {0.661556005, 13.5290203}, //
+
30251 {0.658141017, 13.5311699}, //
+
30252 {0.654936016, 13.5336199}, //
+
30253 {0.651938975, 13.5363703}, //
+
30254 {0.649151027, 13.5394001}, //
+
30255 {0.646570981, 13.5427303}, //
+
30256 {0.644200027, 13.5463495}, //
+
30257 {0.645835996, 13.54778}, //
+
30258 {0.647723019, 13.5490398}, //
+
30259 {0.649860978, 13.5501299}, //
+
30260 {0.652248979, 13.5510502}, //
+
30261 {0.654887974, 13.5518103}, //
+
30262 {0.657778025, 13.5523901}, //
+
30263 {0.660917997, 13.5528097}, //
+
30264 {0.664309025, 13.5530701}, //
+
30265 {0.667949975, 13.5531502}, //
+
30266 {0.671800971, 13.5531101}, //
+
30267 {0.67581898, 13.5529804}, //
+
30268 {0.680006027, 13.5527697}, //
+
30269 {0.684360027, 13.5524797}, //
+
30270 {0.688881993, 13.5521002}, //
+
30271 {0.693571985, 13.5516396}, //
+
30272 {0.698430002, 13.5510902}, //
+
30273 {0.703455985, 13.5504599}, //
+
30274 {0.708649993, 13.5497503}, //
+
30275 {0.749350011, 13.5497503}, //
+
30276 {0.753946006, 13.5490799}, //
+
30277 {0.758710027, 13.5485697}, //
+
30278 {0.76364398, 13.5482397}, //
+
30279 {0.768747985, 13.54807}, //
+
30280 {0.774020016, 13.54807}, //
+
30281 {0.779461026, 13.5482397}, //
+
30282 {0.785072029, 13.5485697}, //
+
30283 {0.790850997, 13.5490799}, //
+
30284 {0.796800017, 13.5497503}, //
+
30285 {0.803578019, 13.5502996}, //
+
30286 {0.810357988, 13.5504198}, //
+
30287 {0.81713903, 13.5501299}, //
+
30288 {0.823921025, 13.5494204}, //
+
30289 {0.830703974, 13.5482998}, //
+
30290 {0.837489009, 13.5467501}, //
+
30291 {0.844274998, 13.5447903}, //
+
30292 {0.851062, 13.5424004}, //
+
30293 {0.857850015, 13.5396004}, //
+
30294 {0.870525002, 13.5334797}, //
+
30295 {0.882951021, 13.5271997}, //
+
30296 {0.895128012, 13.52075}, //
+
30297 {0.90705502, 13.5141296}, //
+
30298 {0.918733001, 13.50735}, //
+
30299 {0.930160999, 13.5003996}, //
+
30300 {0.941340029, 13.4932804}, //
+
30301 {0.952269971, 13.4860001}, //
+
30302 {0.962949991, 13.47855}, //
+
30303 {0.972823024, 13.4777098}, //
+
30304 {0.982865989, 13.4767103}, //
+
30305 {0.993077993, 13.4755297}, //
+
30306 {1.00346005, 13.4741898}, //
+
30307 {1.01400995, 13.4726896}, //
+
30308 {1.02472997, 13.4710197}, //
+
30309 {1.03561997, 13.4691801}, //
+
30310 {1.04666996, 13.4671698}, //
+
30311 {1.05789995, 13.4650002}, //
+
30312 {1.06552005, 13.4628201}, //
+
30313 {1.0733, 13.4608002}, //
+
30314 {1.08124995, 13.4589596}, //
+
30315 {1.08937001, 13.4572802}, //
+
30316 {1.09765005, 13.4557695}, //
+
30317 {1.10609996, 13.4544201}, //
+
30318 {1.11471999, 13.4532499}, //
+
30319 {1.12349999, 13.45224}, //
+
30320 {1.13244998, 13.4513998}, //
+
30321 {1.14157999, 13.4521599}, //
+
30322 {1.15086997, 13.4529104}, //
+
30323 {1.16033995, 13.4536695}, //
+
30324 {1.16997004, 13.4544201}, //
+
30325 {1.17976999, 13.4551802}, //
+
30326 {1.18973994, 13.4559298}, //
+
30327 {1.19986999, 13.4566898}, //
+
30328 {1.21018004, 13.4574404}, //
+
30329 {1.22064996, 13.4582005}, //
+
30330 {1.22973001, 13.45963}, //
+
30331 {1.23889005, 13.4608898}, //
+
30332 {1.24812996, 13.4619799}, //
+
30333 {1.25746, 13.4629002}, //
+
30334 {1.26688004, 13.4636602}, //
+
30335 {1.27637994, 13.4642401}, //
+
30336 {1.28596997, 13.4646597}, //
+
30337 {1.29563999, 13.46492}, //
+
30338 {1.30540001, 13.4650002}, //
+
30339 {1.32720006, 13.46663}, //
+
30340 {1.34891999, 13.467}, //
+
30341 {1.37056005, 13.4661198}, //
+
30342 {1.39212, 13.4639797}, //
+
30343 {1.41358995, 13.4605799}, //
+
30344 {1.43498003, 13.4559298}, //
+
30345 {1.45627999, 13.4500303}, //
+
30346 {1.47750998, 13.4428701}, //
+
30347 {1.49864995, 13.4344501}, //
+
30348 {1.50627005, 13.4309797}, //
+
30349 {1.51405001, 13.4280901}, //
+
30350 {1.52200997, 13.4257898}, //
+
30351 {1.53013003, 13.4240704}, //
+
30352 {1.53841996, 13.4229498}, //
+
30353 {1.54686999, 13.42241}, //
+
30354 {1.55550003, 13.4224501}, //
+
30355 {1.56429005, 13.4230804}, //
+
30356 {1.57325006, 13.4243002}, //
+
30357 {1.57849002, 13.4249697}, //
+
30358 {1.58363998, 13.4254799}, //
+
30359 {1.58870995, 13.4258099}, //
+
30360 {1.59369004, 13.4259796}, //
+
30361 {1.59859002, 13.4259796}, //
+
30362 {1.60341001, 13.4258099}, //
+
30363 {1.60813999, 13.4254799}, //
+
30364 {1.61278999, 13.4249697}, //
+
30365 {1.61734998, 13.4243002}, //
+
30366 {1.62643003, 13.4199495}, //
+
30367 {1.63558996, 13.4159203}, //
+
30368 {1.64482999, 13.41224}, //
+
30369 {1.65416002, 13.4088898}, //
+
30370 {1.66357994, 13.4058704}, //
+
30371 {1.67307997, 13.4031897}, //
+
30372 {1.68267, 13.4008398}, //
+
30373 {1.69234002, 13.3988304}, //
+
30374 {1.70210004, 13.39715}, //
+
30375 {1.71256006, 13.3954401}, //
+
30376 {1.72285998, 13.3933096}, //
+
30377 {1.73298001, 13.3907604}, //
+
30378 {1.74293995, 13.3877897}, //
+
30379 {1.75274003, 13.3844004}, //
+
30380 {1.76236999, 13.3805904}, //
+
30381 {1.77182996, 13.3763704}, //
+
30382 {1.78111994, 13.3717203}, //
+
30383 {1.79024994, 13.3666496}, //
+
30384 {1.79693997, 13.3605404}, //
+
30385 {1.80347002, 13.35427}, //
+
30386 {1.80982995, 13.3478203}, //
+
30387 {1.81603003, 13.3412104}, //
+
30388 {1.82205999, 13.3344202}, //
+
30389 {1.82791996, 13.3274698}, //
+
30390 {1.83361006, 13.3203497}, //
+
30391 {1.83914006, 13.3130598}, //
+
30392 {1.84449995, 13.3056002}, //
+
30393 {1.84919, 13.2980204}, //
+
30394 {1.85271001, 13.29037}, //
+
30395 {1.85505998, 13.2826204}, //
+
30396 {1.85623002, 13.2748003}, //
+
30397 {1.85623002, 13.26688}, //
+
30398 {1.85505998, 13.2588902}, //
+
30399 {1.85271001, 13.2508097}, //
+
30400 {1.84919, 13.24265}, //
+
30401 {1.84449995, 13.2343998}, //
+
30402 {1.83279002, 13.2226896}, //
+
30403 {1.83095002, 13.22085}, //
+
30404 {1.83024001, 13.2201996}, //
+
30405 {1.82960999, 13.2197599}, //
+
30406 {1.82905996, 13.2195301}, //
+
30407 {1.82860005, 13.2195101}, //
+
30408 {1.82822001, 13.2196999}, //
+
30409 {1.82792997, 13.2200899}, //
+
30410 {1.82772005, 13.2207003}, //
+
30411 {1.82758999, 13.2215204}, //
+
30412 {1.82755005, 13.2225504}, //
+
30413 {1.82758999, 13.2236996}, //
+
30414 {1.82772005, 13.2249002}, //
+
30415 {1.82792997, 13.2261295}, //
+
30416 {1.82822001, 13.2274103}, //
+
30417 {1.82860005, 13.2287302}, //
+
30418 {1.82905996, 13.2300797}, //
+
30419 {1.82960999, 13.2314796}, //
+
30420 {1.83024001, 13.2329197}, //
+
30421 {1.83095002, 13.2343998}, //
+
30422 {1.83169997, 13.2366896}, //
+
30423 {1.83246005, 13.2390099}, //
+
30424 {1.83320999, 13.2413797}, //
+
30425 {1.83396006, 13.2437897}, //
+
30426 {1.83471, 13.2462397}, //
+
30427 {1.83545995, 13.2487297}, //
+
30428 {1.83621001, 13.2512598}, //
+
30429 {1.83694994, 13.2538404}, //
+
30430 {1.83770001, 13.2564497}, //
+
30431 {1.83841002, 13.2590303}, //
+
30432 {1.83904004, 13.2614803}, //
+
30433 {1.83958995, 13.2638102}, //
+
30434 {1.84004998, 13.2660103}, //
+
30435 {1.84043002, 13.2680798}, //
+
30436 {1.84072006, 13.27003}, //
+
30437 {1.84092999, 13.2718496}, //
+
30438 {1.84106004, 13.2735395}, //
+
30439 {1.84109998, 13.2750998}, //
+
30440 {1.83791995, 13.28092}, //
+
30441 {1.83440995, 13.2863302}, //
+
30442 {1.83055997, 13.2913103}, //
+
30443 {1.82637, 13.2958803}, //
+
30444 {1.82184994, 13.3000202}, //
+
30445 {1.81699002, 13.3037395}, //
+
30446 {1.8118, 13.3070498}, //
+
30447 {1.80627, 13.3099298}, //
+
30448 {1.80040002, 13.3123999}, //
+
30449 {1.79437995, 13.31458}, //
+
30450 {1.78834999, 13.3165998}, //
+
30451 {1.78233004, 13.3184404}, //
+
30452 {1.77629995, 13.3201103}, //
+
30453 {1.77026999, 13.32162}, //
+
30454 {1.76424003, 13.3229599}, //
+
30455 {1.75820994, 13.3241196}, //
+
30456 {1.75217998, 13.32512}, //
+
30457 {1.74615002, 13.3259497}, //
+
30458 {1.74384999, 13.3259897}, //
+
30459 {1.74146998, 13.3261204}, //
+
30460 {1.73900998, 13.3263302}, //
+
30461 {1.73645997, 13.3266201}, //
+
30462 {1.73381996, 13.3269997}, //
+
30463 {1.73110998, 13.3274603}, //
+
30464 {1.72829998, 13.3280096}, //
+
30465 {1.72542, 13.32864}, //
+
30466 {1.72245002, 13.3293505}, //
+
30467 {1.70884001, 13.33111}, //
+
30468 {1.69515002, 13.3333702}, //
+
30469 {1.68138003, 13.3361397}, //
+
30470 {1.66752005, 13.3394003}, //
+
30471 {1.65357995, 13.3431702}, //
+
30472 {1.63955998, 13.3474398}, //
+
30473 {1.62546003, 13.35221}, //
+
30474 {1.61126995, 13.35748}, //
+
30475 {1.597, 13.3632498}, //
+
30476 {1.59545004, 13.3632898}, //
+
30477 {1.59380996, 13.3634195}, //
+
30478 {1.59209001, 13.3636303}, //
+
30479 {1.59028995, 13.3639202}, //
+
30480 {1.58841002, 13.3642998}, //
+
30481 {1.58643997, 13.3647604}, //
+
30482 {1.58440006, 13.3653097}, //
+
30483 {1.58226001, 13.3659401}, //
+
30484 {1.58004999, 13.3666496}, //
+
30485 {1.58007002, 13.3650703}, //
+
30486 {1.58012998, 13.3633099}, //
+
30487 {1.58023, 13.3613901}, //
+
30488 {1.58037996, 13.3592997}, //
+
30489 {1.58055997, 13.3570404}, //
+
30490 {1.58078003, 13.3546104}, //
+
30491 {1.58105004, 13.3520098}, //
+
30492 {1.58134997, 13.3492403}, //
+
30493 {1.58169997, 13.3463001}, //
+
30494 {1.58210003, 13.3432903}, //
+
30495 {1.58254004, 13.3402796}, //
+
30496 {1.58301997, 13.3372698}, //
+
30497 {1.58354998, 13.33426}, //
+
30498 {1.58411002, 13.3312397}, //
+
30499 {1.58472002, 13.3282299}, //
+
30500 {1.58536994, 13.3252201}, //
+
30501 {1.58606994, 13.3222103}, //
+
30502 {1.58679998, 13.3191996}, //
+
30503 {1.58757997, 13.3162899}, //
+
30504 {1.58840001, 13.3135996}, //
+
30505 {1.58925998, 13.3111095}, //
+
30506 {1.59016001, 13.3088198}, //
+
30507 {1.59109998, 13.3067503}, //
+
30508 {1.59209001, 13.3048897}, //
+
30509 {1.59311998, 13.3032303}, //
+
30510 {1.59419, 13.3017902}, //
+
30511 {1.59529996, 13.3005505}, //
+
30512 {1.59650004, 13.2995596}, //
+
30513 {1.59782004, 13.2988701}, //
+
30514 {1.59925997, 13.2984695}, //
+
30515 {1.60082996, 13.2983704}, //
+
30516 {1.60253, 13.2985601}, //
+
30517 {1.60433996, 13.2990398}, //
+
30518 {1.60628998, 13.2998199}, //
+
30519 {1.60836005, 13.30089}, //
+
30520 {1.61055005, 13.3022499}, //
+
30521 {1.61732996, 13.3020802}, //
+
30522 {1.62410998, 13.3015804}, //
+
30523 {1.63089001, 13.3007402}, //
+
30524 {1.63767004, 13.2995596}, //
+
30525 {1.64444995, 13.2980499}, //
+
30526 {1.65123999, 13.2962103}, //
+
30527 {1.65802002, 13.2940197}, //
+
30528 {1.66480994, 13.2915001}, //
+
30529 {1.67159998, 13.2886496}, //
+
30530 {1.67846, 13.2858105}, //
+
30531 {1.68549001, 13.2833004}, //
+
30532 {1.69269001, 13.2811203}, //
+
30533 {1.70005, 13.2792797}, //
+
30534 {1.70758998, 13.2777796}, //
+
30535 {1.71528995, 13.2766104}, //
+
30536 {1.72316003, 13.2757702}, //
+
30537 {1.73119998, 13.2752705}, //
+
30538 {1.73940003, 13.2750998}, //
+
30539 {1.74737, 13.2754202}, //
+
30540 {1.75471997, 13.2748499}, //
+
30541 {1.76144004, 13.2734098}, //
+
30542 {1.76752996, 13.2710896}, //
+
30543 {1.77298999, 13.26789}, //
+
30544 {1.77781999, 13.2638102}, //
+
30545 {1.78202999, 13.2588501}, //
+
30546 {1.78559995, 13.2530203}, //
+
30547 {1.78855002, 13.2462997}, //
+
30548 {1.79100001, 13.2391596}, //
+
30549 {1.79306996, 13.23207}, //
+
30550 {1.79475999, 13.2250204}, //
+
30551 {1.79607999, 13.2180004}, //
+
30552 {1.79702997, 13.21103}, //
+
30553 {1.79759002, 13.2040997}, //
+
30554 {1.79779005, 13.1972103}, //
+
30555 {1.79761004, 13.1903601}, //
+
30556 {1.79705, 13.1835499}, //
+
30557 {1.78930998, 13.1732597}, //
+
30558 {1.78113997, 13.1634598}, //
+
30559 {1.77256, 13.15417}, //
+
30560 {1.76356006, 13.14538}, //
+
30561 {1.75414002, 13.1370897}, //
+
30562 {1.74428999, 13.1293097}, //
+
30563 {1.73403001, 13.1220198}, //
+
30564 {1.72335005, 13.1152296}, //
+
30565 {1.71224999, 13.1089497}, //
+
30566 {1.71003997, 13.10816}, //
+
30567 {1.70790005, 13.1072903}, //
+
30568 {1.70586002, 13.1063299}, //
+
30569 {1.70388997, 13.1052904}, //
+
30570 {1.70201004, 13.1041603}, //
+
30571 {1.70020998, 13.1029501}, //
+
30572 {1.69849002, 13.1016502}, //
+
30573 {1.69684994, 13.1002703}, //
+
30574 {1.69529998, 13.0987997}, //
+
30575 });
+
30576 polys.push_back({
+
30577 {0.226436004, 13.4658604}, //
+
30578 {0.225828007, 13.4659405}, //
+
30579 {0.225177005, 13.4661102}, //
+
30580 {0.224484995, 13.4663601}, //
+
30581 {0.223749995, 13.4666996}, //
+
30582 {0.223047003, 13.4671001}, //
+
30583 {0.222426996, 13.4675398}, //
+
30584 {0.221889004, 13.4680204}, //
+
30585 {0.221433997, 13.4685402}, //
+
30586 {0.221062005, 13.4691}, //
+
30587 {0.220771998, 13.4696999}, //
+
30588 {0.220565006, 13.4703398}, //
+
30589 {0.220440999, 13.4710302}, //
+
30590 {0.220400006, 13.4717503}, //
+
30591 {0.220400006, 13.4819498}, //
+
30592 {0.221218005, 13.48347}, //
+
30593 {0.222159997, 13.4850302}, //
+
30594 {0.223227993, 13.48664}, //
+
30595 {0.224419996, 13.4882898}, //
+
30596 {0.225736007, 13.4899702}, //
+
30597 {0.227178007, 13.4917097}, //
+
30598 {0.228744, 13.4934797}, //
+
30599 {0.230434999, 13.4952898}, //
+
30600 {0.232250005, 13.4971504}, //
+
30601 {0.234158993, 13.4990797}, //
+
30602 {0.236109003, 13.50109}, //
+
30603 {0.238100007, 13.50319}, //
+
30604 {0.240131006, 13.5053701}, //
+
30605 {0.242203996, 13.5076303}, //
+
30606 {0.244316995, 13.5099697}, //
+
30607 {0.246470004, 13.5123997}, //
+
30608 {0.248665005, 13.5149097}, //
+
30609 {0.2509, 13.5174999}, //
+
30610 {0.25316599, 13.5200596}, //
+
30611 {0.255430996, 13.5224504}, //
+
30612 {0.257694006, 13.5246801}, //
+
30613 {0.259956986, 13.5267296}, //
+
30614 {0.262217999, 13.5286198}, //
+
30615 {0.264477998, 13.5303402}, //
+
30616 {0.266736001, 13.5319004}, //
+
30617 {0.268994004, 13.5332804}, //
+
30618 {0.27125001, 13.5345001}, //
+
30619 {0.278266996, 13.5380297}, //
+
30620 {0.279395014, 13.5385904}, //
+
30621 {0.280272007, 13.5390301}, //
+
30622 {0.280898988, 13.5393496}, //
+
30623 {0.281275004, 13.5395403}, //
+
30624 {0.281399995, 13.5396004}, //
+
30625 {0.280613005, 13.5387602}, //
+
30626 {0.279740989, 13.5377502}, //
+
30627 {0.278782994, 13.5365801}, //
+
30628 {0.277740985, 13.5352297}, //
+
30629 {0.276612997, 13.53372}, //
+
30630 {0.275400013, 13.5320396}, //
+
30631 {0.274102002, 13.5302}, //
+
30632 {0.272718996, 13.5281801}, //
+
30633 {0.27125001, 13.526}, //
+
30634 {0.269015014, 13.5230103}, //
+
30635 {0.266820014, 13.5200596}, //
+
30636 {0.264667004, 13.5171499}, //
+
30637 {0.26255399, 13.5142803}, //
+
30638 {0.260481, 13.5114498}, //
+
30639 {0.258450001, 13.5086699}, //
+
30640 {0.256458998, 13.5059204}, //
+
30641 {0.254509002, 13.5032101}, //
+
30642 {0.252600014, 13.5005503}, //
+
30643 {0.250743002, 13.4979401}, //
+
30644 {0.248925999, 13.4953699}, //
+
30645 {0.247150004, 13.4928398}, //
+
30646 {0.245415002, 13.4903498}, //
+
30647 {0.243719995, 13.4879103}, //
+
30648 {0.242066994, 13.4855099}, //
+
30649 {0.240454003, 13.4831495}, //
+
30650 {0.238881007, 13.4808302}, //
+
30651 {0.237350002, 13.47855}, //
+
30652 {0.233572006, 13.4729099}, //
+
30653 {0.232648998, 13.47153}, //
+
30654 {0.231893003, 13.4703999}, //
+
30655 {0.230885997, 13.4688997}, //
+
30656 {0.230634004, 13.4685297}, //
+
30657 {0.230550006, 13.4684}, //
+
30658 {0.230465993, 13.4683199}, //
+
30659 {0.229522005, 13.46737}, //
+
30660 {0.229206994, 13.4670601}, //
+
30661 {0.228850007, 13.4666996}, //
+
30662 {0.228450999, 13.4663601}, //
+
30663 {0.228009999, 13.4661102}, //
+
30664 {0.227528006, 13.4659405}, //
+
30665 {0.227002993, 13.4658604}, //
+
30666 });
+
30667 polys.push_back({
+
30668 {0.239061996, 13.4126196}, //
+
30669 {0.237706006, 13.4133902}, //
+
30670 {0.236558005, 13.4146204}, //
+
30671 {0.235618994, 13.4163198}, //
+
30672 {0.234889001, 13.4184704}, //
+
30673 {0.234366998, 13.4210901}, //
+
30674 {0.234053999, 13.42416}, //
+
30675 {0.233950004, 13.4277}, //
+
30676 {0.235440001, 13.4321003}, //
+
30677 {0.236885995, 13.4362402}, //
+
30678 {0.238288999, 13.4401302}, //
+
30679 {0.239648998, 13.4437704}, //
+
30680 {0.240964994, 13.4471598}, //
+
30681 {0.242238998, 13.4503002}, //
+
30682 {0.243469, 13.4531898}, //
+
30683 {0.244655997, 13.4558201}, //
+
30684 {0.245800003, 13.4582005}, //
+
30685 {0.246953994, 13.4604197}, //
+
30686 {0.248151004, 13.4625597}, //
+
30687 {0.249388993, 13.4646196}, //
+
30688 {0.250669003, 13.4665899}, //
+
30689 {0.251991004, 13.4684696}, //
+
30690 {0.25335601, 13.4702702}, //
+
30691 {0.254761994, 13.4719801}, //
+
30692 {0.256209999, 13.4736099}, //
+
30693 {0.257699996, 13.4751501}, //
+
30694 {0.272819012, 13.4902697}, //
+
30695 {0.274702013, 13.4921503}, //
+
30696 {0.276167005, 13.4936199}, //
+
30697 {0.277213007, 13.4946604}, //
+
30698 {0.277841002, 13.4952898}, //
+
30699 {0.278050005, 13.4954996}, //
+
30700 {0.278050005, 13.4920998}, //
+
30701 {0.278795004, 13.4898005}, //
+
30702 {0.279540986, 13.4874201}, //
+
30703 {0.280288994, 13.4849501}, //
+
30704 {0.281037986, 13.4823999}, //
+
30705 {0.281787992, 13.4797602}, //
+
30706 {0.28253901, 13.4770298}, //
+
30707 {0.283291012, 13.4742203}, //
+
30708 {0.284045011, 13.4713297}, //
+
30709 {0.284799993, 13.4683504}, //
+
30710 {0.285430014, 13.4653797}, //
+
30711 {0.285807014, 13.4624996}, //
+
30712 {0.285932988, 13.4596901}, //
+
30713 {0.285807014, 13.4569798}, //
+
30714 {0.285430014, 13.45434}, //
+
30715 {0.284799993, 13.4517899}, //
+
30716 {0.283919007, 13.4493303}, //
+
30717 {0.282784998, 13.44695}, //
+
30718 {0.281399995, 13.4446497}, //
+
30719 {0.279835999, 13.4417}, //
+
30720 {0.278145999, 13.43888}, //
+
30721 {0.276327997, 13.4361801}, //
+
30722 {0.274383008, 13.4336004}, //
+
30723 {0.272309989, 13.4311504}, //
+
30724 {0.270110995, 13.4288301}, //
+
30725 {0.267785013, 13.42663}, //
+
30726 {0.265331, 13.4245501}, //
+
30727 {0.26275, 13.4225998}, //
+
30728 {0.260158002, 13.4208097}, //
+
30729 {0.257649004, 13.4191799}, //
+
30730 {0.255221993, 13.4177198}, //
+
30731 {0.25287801, 13.41642}, //
+
30732 {0.250616997, 13.4152899}, //
+
30733 {0.248438999, 13.4143295}, //
+
30734 {0.246343002, 13.4135399}, //
+
30735 {0.244330004, 13.4129105}, //
+
30736 {0.242400005, 13.4124498}, //
+
30737 {0.240627006, 13.4123001}, //
+
30738 });
+
30739 polys.push_back({
+
30740 {1.91229999, 13.2716999}, //
+
30741 {1.91232002, 13.2717199}, //
+
30742 {1.91263998, 13.2720404}, //
+
30743 {1.91305995, 13.27246}, //
+
30744 {1.91400003, 13.2734003}, //
+
30745 {1.91437995, 13.2737598}, //
+
30746 {1.91475999, 13.2740698}, //
+
30747 {1.91513002, 13.2743397}, //
+
30748 {1.91551006, 13.27458}, //
+
30749 {1.91588998, 13.2747602}, //
+
30750 {1.91627002, 13.27491}, //
+
30751 {1.91664004, 13.2750196}, //
+
30752 {1.91701996, 13.2750797}, //
+
30753 {1.9174, 13.2750998}, //
+
30754 {1.91778004, 13.2751198}, //
+
30755 {1.91815996, 13.2751799}, //
+
30756 {1.91852999, 13.2752895}, //
+
30757 {1.91891003, 13.2754402}, //
+
30758 {1.91928995, 13.2756205}, //
+
30759 {1.91966999, 13.2758598}, //
+
30760 {1.92004001, 13.2761297}, //
+
30761 {1.92042005, 13.2764397}, //
+
30762 {1.92079997, 13.2768002}, //
+
30763 {1.94501996, 13.3010197}, //
+
30764 {1.95942998, 13.3154297}, //
+
30765 {1.96562004, 13.32162}, //
+
30766 {1.96878004, 13.3247805}, //
+
30767 {1.98183, 13.3378296}, //
+
30768 {1.98520005, 13.3411999}, //
+
30769 {1.98853004, 13.34445}, //
+
30770 {1.99172997, 13.3474102}, //
+
30771 {1.99480999, 13.3500795}, //
+
30772 {1.99776006, 13.3524504}, //
+
30773 {2.00059009, 13.3545303}, //
+
30774 {2.00328994, 13.3563099}, //
+
30775 {2.0058701, 13.3577995}, //
+
30776 {2.00832009, 13.3590002}, //
+
30777 {2.01064992, 13.3599005}, //
+
30778 {2.01370001, 13.3621101}, //
+
30779 {2.01683998, 13.3642502}, //
+
30780 {2.02006006, 13.3662901}, //
+
30781 {2.02337003, 13.3682604}, //
+
30782 {2.02675009, 13.3701401}, //
+
30783 {2.03023005, 13.3719397}, //
+
30784 {2.0337801, 13.3736601}, //
+
30785 {2.03743005, 13.3753004}, //
+
30786 {2.04115009, 13.3768501}, //
+
30787 {2.0448699, 13.3776197}, //
+
30788 {2.04852009, 13.3784304}, //
+
30789 {2.0520699, 13.3792801}, //
+
30790 {2.0555501, 13.3801699}, //
+
30791 {2.05892992, 13.3811102}, //
+
30792 {2.06223989, 13.3820896}, //
+
30793 {2.06545997, 13.3831196}, //
+
30794 {2.06859994, 13.3841896}, //
+
30795 {2.07165003, 13.3852997}, //
+
30796 {2.07458997, 13.3864498}, //
+
30797 {2.07735991, 13.3876495}, //
+
30798 {2.07996011, 13.3888798}, //
+
30799 {2.08239007, 13.3901596}, //
+
30800 {2.08465004, 13.3914804}, //
+
30801 {2.08674002, 13.3928299}, //
+
30802 {2.08866, 13.3942299}, //
+
30803 {2.09042001, 13.3956699}, //
+
30804 {2.09200001, 13.39715}, //
+
30805 {2.09343004, 13.3994598}, //
+
30806 {2.09469008, 13.4018497}, //
+
30807 {2.0957799, 13.4043198}, //
+
30808 {2.09669995, 13.4068804}, //
+
30809 {2.09746003, 13.4095201}, //
+
30810 {2.0980401, 13.41224}, //
+
30811 {2.09845996, 13.41504}, //
+
30812 {2.09872007, 13.4179296}, //
+
30813 {2.09879994, 13.4209003}, //
+
30814 {2.09875989, 13.4239502}, //
+
30815 {2.09862995, 13.4270897}, //
+
30816 {2.0984199, 13.4303102}, //
+
30817 {2.09812999, 13.4336205}, //
+
30818 {2.09774995, 13.4370003}, //
+
30819 {2.09729004, 13.4404802}, //
+
30820 {2.09674001, 13.4440298}, //
+
30821 {2.09611011, 13.4476805}, //
+
30822 {2.09540009, 13.4513998}, //
+
30823 {2.09540009, 13.4650002}, //
+
30824 {2.09553003, 13.4665003}, //
+
30825 {2.09590006, 13.4680004}, //
+
30826 {2.09652996, 13.4695101}, //
+
30827 {2.09739995, 13.4710102}, //
+
30828 {2.09853005, 13.4725199}, //
+
30829 {2.09991002, 13.47402}, //
+
30830 {2.10154009, 13.4755297}, //
+
30831 {2.10342002, 13.4770403}, //
+
30832 {2.10555005, 13.47855}, //
+
30833 {2.10784006, 13.4800196}, //
+
30834 {2.11016011, 13.4813995}, //
+
30835 {2.11252999, 13.4827003}, //
+
30836 {2.11493993, 13.4839096}, //
+
30837 {2.11738992, 13.4850397}, //
+
30838 {2.11987996, 13.4860802}, //
+
30839 {2.12241006, 13.4870396}, //
+
30840 {2.12498999, 13.4879103}, //
+
30841 {2.12759995, 13.4886999}, //
+
30842 {2.13017988, 13.4894104}, //
+
30843 {2.13263011, 13.4900398}, //
+
30844 {2.13495994, 13.4905901}, //
+
30845 {2.13716006, 13.4910498}, //
+
30846 {2.13923001, 13.4914303}, //
+
30847 {2.14118004, 13.4917202}, //
+
30848 {2.14299989, 13.49193}, //
+
30849 {2.14469004, 13.4920597}, //
+
30850 {2.14625001, 13.4920998}, //
+
30851 {2.14622998, 13.4912395}, //
+
30852 {2.1461699, 13.4901695}, //
+
30853 {2.14605999, 13.4888897}, //
+
30854 {2.14591002, 13.4874096}, //
+
30855 {2.14573002, 13.4857101}, //
+
30856 {2.14548993, 13.4838104}, //
+
30857 {2.14522004, 13.4816999}, //
+
30858 {2.1449101, 13.4793797}, //
+
30859 {2.14455009, 13.4768496}, //
+
30860 {2.14422011, 13.4741297}, //
+
30861 {2.14398003, 13.4712496}, //
+
30862 {2.14382005, 13.4681902}, //
+
30863 {2.14373994, 13.4649696}, //
+
30864 {2.14373994, 13.4615803}, //
+
30865 {2.14382005, 13.4580297}, //
+
30866 {2.14398003, 13.4542999}, //
+
30867 {2.14422011, 13.4504099}, //
+
30868 {2.14455009, 13.4463501}, //
+
30869 {2.1449101, 13.4422703}, //
+
30870 {2.14522004, 13.4383097}, //
+
30871 {2.14548993, 13.4344797}, //
+
30872 {2.14573002, 13.4307804}, //
+
30873 {2.14591002, 13.4272003}, //
+
30874 {2.14605999, 13.4237499}, //
+
30875 {2.1461699, 13.4204197}, //
+
30876 {2.14622998, 13.4172201}, //
+
30877 {2.14625001, 13.4141502}, //
+
30878 {2.14689994, 13.4112301}, //
+
30879 {2.14734006, 13.4085302}, //
+
30880 {2.14756989, 13.4060297}, //
+
30881 {2.14758992, 13.4037399}, //
+
30882 {2.1473999, 13.40166}, //
+
30883 {2.14701009, 13.3997898}, //
+
30884 {2.14639997, 13.39814}, //
+
30885 {2.14558005, 13.3966904}, //
+
30886 {2.14455009, 13.3954496}, //
+
30887 {2.14332008, 13.3943501}, //
+
30888 {2.14188004, 13.3932896}, //
+
30889 {2.14022994, 13.3922701}, //
+
30890 {2.13837004, 13.3912897}, //
+
30891 {2.13630009, 13.3903503}, //
+
30892 {2.13402009, 13.3894501}, //
+
30893 {2.13152003, 13.3885899}, //
+
30894 {2.12881994, 13.3877802}, //
+
30895 {2.12590003, 13.3870001}, //
+
30896 {2.12284994, 13.3861599}, //
+
30897 {2.11970997, 13.3851604}, //
+
30898 {2.11648989, 13.3839798}, //
+
30899 {2.11317992, 13.3826399}, //
+
30900 {2.1098001, 13.3811398}, //
+
30901 {2.1063199, 13.3794699}, //
+
30902 {2.10277009, 13.3776302}, //
+
30903 {2.0991199, 13.3756199}, //
+
30904 {2.09540009, 13.3734503}, //
+
30905 {2.0924499, 13.3719597}, //
+
30906 {2.08962989, 13.3705101}, //
+
30907 {2.08693004, 13.3691101}, //
+
30908 {2.08435011, 13.3677397}, //
+
30909 {2.08189988, 13.3664198}, //
+
30910 {2.07958007, 13.36514}, //
+
30911 {2.07737994, 13.3639002}, //
+
30912 {2.07529998, 13.3627005}, //
+
30913 {2.07334995, 13.3615503}, //
+
30914 {2.07155991, 13.3604298}, //
+
30915 {2.06993008, 13.3592997}, //
+
30916 {2.06847, 13.35818}, //
+
30917 {2.0671699, 13.3570499}, //
+
30918 {2.06604004, 13.3559198}, //
+
30919 {2.06507993, 13.3547897}, //
+
30920 {2.06429005, 13.3536596}, //
+
30921 {2.06365991, 13.3525295}, //
+
30922 {2.0632, 13.3514004}, //
+
30923 {2.06279993, 13.3502502}, //
+
30924 {2.06236005, 13.3490496}, //
+
30925 {2.06188011, 13.3478203}, //
+
30926 {2.06135011, 13.3465405}, //
+
30927 {2.06079006, 13.3452196}, //
+
30928 {2.06017995, 13.3438702}, //
+
30929 {2.05953002, 13.3424702}, //
+
30930 {2.05883002, 13.3410301}, //
+
30931 {2.05809999, 13.33955}, //
+
30932 {2.05734992, 13.3380003}, //
+
30933 {2.05659008, 13.33636}, //
+
30934 {2.05584002, 13.3346395}, //
+
30935 {2.05508995, 13.33284}, //
+
30936 {2.05433989, 13.3309603}, //
+
30937 {2.05359006, 13.32899}, //
+
30938 {2.05283999, 13.3269501}, //
+
30939 {2.05209994, 13.32481}, //
+
30940 {2.05135012, 13.3226004}, //
+
30941 {2.04885006, 13.3189201}, //
+
30942 {2.04590011, 13.3154001}, //
+
30943 {2.04247999, 13.3120499}, //
+
30944 {2.03859997, 13.3088703}, //
+
30945 {2.03426003, 13.30585}, //
+
30946 {2.02945995, 13.3030005}, //
+
30947 {2.02419996, 13.3003197}, //
+
30948 {2.01848006, 13.2978001}, //
+
30949 {2.01230001, 13.2954502}, //
+
30950 {2.00588012, 13.2932396}, //
+
30951 {1.99942005, 13.2910995}, //
+
30952 {1.99291003, 13.2890596}, //
+
30953 {1.98635995, 13.2870903}, //
+
30954 {1.97977996, 13.2852097}, //
+
30955 {1.97314, 13.2834101}, //
+
30956 {1.96647, 13.2816896}, //
+
30957 {1.95975995, 13.2800503}, //
+
30958 {1.95299995, 13.2784996}, //
+
30959 {1.95007002, 13.2784595}, //
+
30960 {1.94730997, 13.2783298}, //
+
30961 {1.94472003, 13.27812}, //
+
30962 {1.94228995, 13.2778301}, //
+
30963 {1.94002998, 13.2774496}, //
+
30964 {1.93792999, 13.2769899}, //
+
30965 {1.93601, 13.2764397}, //
+
30966 {1.93423998, 13.2758102}, //
+
30967 {1.93264997, 13.2750998}, //
+
30968 {1.93045998, 13.2743902}, //
+
30969 {1.92839003, 13.2737598}, //
+
30970 {1.92644, 13.2732096}, //
+
30971 {1.92463005, 13.2727499}, //
+
30972 {1.92293, 13.2723703}, //
+
30973 {1.92136002, 13.2720804}, //
+
30974 {1.91991997, 13.2718697}, //
+
30975 {1.91859996, 13.27174}, //
+
30976 {1.9174, 13.2716999}, //
+
30977 });
+
30978 polys.push_back({
+
30979 {5.42125988, 12.5973597}, //
+
30980 {5.42025995, 12.5984201}, //
+
30981 {5.41321993, 12.6058903}, //
+
30982 {5.40953016, 12.6098003}, //
+
30983 {5.40517998, 12.6144199}, //
+
30984 {5.40014982, 12.6197596}, //
+
30985 {5.39445019, 12.6258001}, //
+
30986 {5.38821983, 12.6323996}, //
+
30987 {5.38156986, 12.63937}, //
+
30988 {5.3744998, 12.6467199}, //
+
30989 {5.36701012, 12.6544504}, //
+
30990 {5.35910988, 12.66255}, //
+
30991 {5.35078001, 12.6710196}, //
+
30992 {5.34204006, 12.6798697}, //
+
30993 {5.33288002, 12.6891003}, //
+
30994 {5.32329988, 12.6987}, //
+
30995 {5.27580023, 12.7563496}, //
+
30996 {5.27581978, 12.7563896}, //
+
30997 {5.27587986, 12.7565203}, //
+
30998 {5.27599001, 12.7567301}, //
+
30999 {5.27614021, 12.75702}, //
+
31000 {5.27631998, 12.7573996}, //
+
31001 {5.27655983, 12.7578602}, //
+
31002 {5.2768302, 12.7584105}, //
+
31003 {5.27714014, 12.7590399}, //
+
31004 {5.27750015, 12.7597504}, //
+
31005 {5.2779398, 12.7605696}, //
+
31006 {5.27850008, 12.7615099}, //
+
31007 {5.27919006, 12.7625799}, //
+
31008 {5.28001022, 12.7637701}, //
+
31009 {5.28095007, 12.76509}, //
+
31010 {5.28201008, 12.76653}, //
+
31011 {5.28319979, 12.7680902}, //
+
31012 {5.28451014, 12.7697802}, //
+
31013 {5.28595018, 12.7715998}, //
+
31014 {5.28745985, 12.7735901}, //
+
31015 {5.28896999, 12.7757998}, //
+
31016 {5.29048014, 12.7782097}, //
+
31017 {5.2919898, 12.7808199}, //
+
31018 {5.29350996, 12.7836504}, //
+
31019 {5.2950201, 12.7866898}, //
+
31020 {5.29652977, 12.7899303}, //
+
31021 {5.29803991, 12.7933903}, //
+
31022 {5.29955006, 12.7970505}, //
+
31023 {5.29968023, 12.7973404}, //
+
31024 {5.30068016, 12.7996798}, //
+
31025 {5.30154991, 12.8017302}, //
+
31026 {5.30405998, 12.80758}, //
+
31027 {5.30568981, 12.8113899}, //
+
31028 {5.30756998, 12.8157797}, //
+
31029 {5.30970001, 12.8207502}, //
+
31030 {5.31206989, 12.8260498}, //
+
31031 {5.31465006, 12.8313904}, //
+
31032 {5.31744003, 12.8367701}, //
+
31033 {5.32043982, 12.8421898}, //
+
31034 {5.32363987, 12.8476496}, //
+
31035 {5.32706022, 12.8531504}, //
+
31036 {5.33067989, 12.8586903}, //
+
31037 {5.33450985, 12.8642797}, //
+
31038 {5.33855009, 12.8698997}, //
+
31039 {5.34262991, 12.8754501}, //
+
31040 {5.34659004, 12.8807898}, //
+
31041 {5.35042, 12.8859196}, //
+
31042 {5.35411978, 12.8908396}, //
+
31043 {5.35769987, 12.8955498}, //
+
31044 {5.36114979, 12.9000597}, //
+
31045 {5.36448002, 12.9043503}, //
+
31046 {5.36768007, 12.9084301}, //
+
31047 {5.37074995, 12.9123001}, //
+
31048 {5.37593985, 12.9183302}, //
+
31049 {5.38097, 12.9243603}, //
+
31050 {5.38582993, 12.9303904}, //
+
31051 {5.3905201, 12.9364204}, //
+
31052 {5.39504004, 12.9424496}, //
+
31053 {5.39939022, 12.9484797}, //
+
31054 {5.40358019, 12.9545002}, //
+
31055 {5.40759993, 12.9605303}, //
+
31056 {5.41144991, 12.9665499}, //
+
31057 {5.41525984, 12.9728298}, //
+
31058 {5.41914988, 12.97962}, //
+
31059 {5.42313004, 12.9869099}, //
+
31060 {5.42718983, 12.9946899}, //
+
31061 {5.4313302, 13.0029802}, //
+
31062 {5.43556023, 13.0117702}, //
+
31063 {5.43986988, 13.02106}, //
+
31064 {5.44427013, 13.0308599}, //
+
31065 {5.44875002, 13.0411501}, //
+
31066 {5.45457983, 13.0536003}, //
+
31067 {5.46004009, 13.0653496}, //
+
31068 {5.46511984, 13.0763798}, //
+
31069 {5.46983004, 13.0867004}, //
+
31070 {5.47415018, 13.0963001}, //
+
31071 {5.47810984, 13.1051903}, //
+
31072 {5.48167992, 13.1133804}, //
+
31073 {5.48487997, 13.1208401}, //
+
31074 {5.48769999, 13.1275997}, //
+
31075 {5.49026012, 13.1338902}, //
+
31076 {5.49265003, 13.1399202}, //
+
31077 {5.49487019, 13.1457005}, //
+
31078 {5.49692011, 13.1512299}, //
+
31079 {5.49880981, 13.1565104}, //
+
31080 {5.50052023, 13.1615295}, //
+
31081 {5.50206995, 13.1663103}, //
+
31082 {5.5034399, 13.1708298}, //
+
31083 {5.50465012, 13.1751003}, //
+
31084 {5.50579977, 13.1793098}, //
+
31085 {5.50699997, 13.1836395}, //
+
31086 {5.50824022, 13.1880903}, //
+
31087 {5.50952005, 13.1926804}, //
+
31088 {5.51083994, 13.1973801}, //
+
31089 {5.51220989, 13.2022104}, //
+
31090 {5.51360989, 13.2071695}, //
+
31091 {5.51505995, 13.2122498}, //
+
31092 {5.51655006, 13.2174501}, //
+
31093 {5.51738977, 13.21984}, //
+
31094 {5.51839018, 13.2224798}, //
+
31095 {5.51956987, 13.2253799}, //
+
31096 {5.52090979, 13.2285204}, //
+
31097 {5.52240992, 13.2319202}, //
+
31098 {5.5240798, 13.2355604}, //
+
31099 {5.52591991, 13.23946}, //
+
31100 {5.52792978, 13.2435999}, //
+
31101 {5.53009987, 13.2480001}, //
+
31102 {5.53319979, 13.2607098}, //
+
31103 {5.53645992, 13.2732}, //
+
31104 {5.53988981, 13.28549}, //
+
31105 {5.54348993, 13.2975702}, //
+
31106 {5.54724979, 13.3094301}, //
+
31107 {5.5511899, 13.3210897}, //
+
31108 {5.55529022, 13.3325396}, //
+
31109 {5.55955982, 13.34377}, //
+
31110 {5.56400013, 13.3548002}, //
+
31111 {5.56882, 13.3660402}, //
+
31112 {5.57422018, 13.3779001}, //
+
31113 {5.58021021, 13.3903904}, //
+
31114 {5.58678007, 13.4035196}, //
+
31115 {5.59393978, 13.4172697}, //
+
31116 {5.60168982, 13.4316397}, //
+
31117 {5.61002016, 13.4466496}, //
+
31118 {5.61893988, 13.4622898}, //
+
31119 {5.62844992, 13.47855}, //
+
31120 {5.71999979, 13.3802004}, //
+
31121 {5.71697998, 13.3726702}, //
+
31122 {5.71320009, 13.3632498}, //
+
31123 {5.71148014, 13.3594799}, //
+
31124 {5.7093401, 13.3557196}, //
+
31125 {5.70678997, 13.3519497}, //
+
31126 {5.70382023, 13.3481798}, //
+
31127 {5.70042992, 13.3444204}, //
+
31128 {5.69661999, 13.3406496}, //
+
31129 {5.69239998, 13.3368797}, //
+
31130 {5.68775988, 13.3331203}, //
+
31131 {5.68270016, 13.3293505}, //
+
31132 {5.68000984, 13.32232}, //
+
31133 {5.67850018, 13.3183603}, //
+
31134 {5.67666006, 13.31353}, //
+
31135 {5.67446995, 13.3078098}, //
+
31136 {5.67194986, 13.3012199}, //
+
31137 {5.66909981, 13.2937498}, //
+
31138 {5.6658802, 13.2856503}, //
+
31139 {5.66224003, 13.2771702}, //
+
31140 {5.65818024, 13.2683201}, //
+
31141 {5.65370989, 13.2590904}, //
+
31142 {5.64880991, 13.2494898}, //
+
31143 {5.64349985, 13.2395096}, //
+
31144 {5.63777018, 13.2291498}, //
+
31145 {5.63161993, 13.2184095}, //
+
31146 {5.62505007, 13.2073002}, //
+
31147 {5.62491989, 13.2071104}, //
+
31148 {5.62454987, 13.2065496}, //
+
31149 {5.6230402, 13.2042904}, //
+
31150 {5.62190008, 13.20259}, //
+
31151 {5.62052011, 13.2005196}, //
+
31152 {5.6188798, 13.1980696}, //
+
31153 {5.61699009, 13.1952496}, //
+
31154 {5.61485004, 13.19205}, //
+
31155 {5.61260986, 13.1886396}, //
+
31156 {5.61042023, 13.1851902}, //
+
31157 {5.60827017, 13.1816902}, //
+
31158 {5.60615015, 13.1781597}, //
+
31159 {5.6040802, 13.1745796}, //
+
31160 {5.60204983, 13.1709604}, //
+
31161 {5.60005999, 13.1673002}, //
+
31162 {5.5981102, 13.1636}, //
+
31163 {5.59619999, 13.1598501}, //
+
31164 {5.59431982, 13.1560802}, //
+
31165 {5.59055996, 13.1485395}, //
+
31166 {5.58867979, 13.1447697}, //
+
31167 {5.5868001, 13.1409998}, //
+
31168 {5.58490992, 13.1372299}, //
+
31169 {5.58303022, 13.1334496}, //
+
31170 {5.58114004, 13.1296797}, //
+
31171 {5.57924986, 13.1259003}, //
+
31172 {5.57747984, 13.1222601}, //
+
31173 {5.57591009, 13.1188698}, //
+
31174 {5.57456017, 13.1157303}, //
+
31175 {5.57341003, 13.1128502}, //
+
31176 {5.57247019, 13.1102104}, //
+
31177 {5.57174015, 13.10783}, //
+
31178 {5.57121992, 13.1056995}, //
+
31179 {5.57089996, 13.1038303}, //
+
31180 {5.57079983, 13.1021996}, //
+
31181 {5.57079983, 13.0835505}, //
+
31182 {5.57083988, 13.0824404}, //
+
31183 {5.57097006, 13.0813704}, //
+
31184 {5.57117987, 13.0803404}, //
+
31185 {5.57146978, 13.0793505}, //
+
31186 {5.57184982, 13.0784101}, //
+
31187 {5.57230997, 13.0775099}, //
+
31188 {5.57285976, 13.0766497}, //
+
31189 {5.57349014, 13.0758305}, //
+
31190 {5.57420015, 13.0750504}, //
+
31191 {5.57495022, 13.07442}, //
+
31192 {5.57570982, 13.0740404}, //
+
31193 {5.57645988, 13.0739202}, //
+
31194 {5.57720995, 13.0740404}, //
+
31195 {5.57796001, 13.07442}, //
+
31196 {5.57871008, 13.0750504}, //
+
31197 {5.57946014, 13.0759296}, //
+
31198 {5.5802002, 13.0770597}, //
+
31199 {5.58094978, 13.0784502}, //
+
31200 {5.58178997, 13.0801296}, //
+
31201 {5.58279991, 13.08214}, //
+
31202 {5.58397007, 13.0844898}, //
+
31203 {5.58532, 13.0871696}, //
+
31204 {5.58683014, 13.0901899}, //
+
31205 {5.58851004, 13.0935402}, //
+
31206 {5.59035015, 13.0972204}, //
+
31207 {5.59237003, 13.1012497}, //
+
31208 {5.59455013, 13.1056004}, //
+
31209 {5.59989977, 13.1147804}, //
+
31210 {5.60542011, 13.1242504}, //
+
31211 {5.61111021, 13.1340199}, //
+
31212 {5.61696005, 13.1440802}, //
+
31213 {5.62298012, 13.1544399}, //
+
31214 {5.62916994, 13.1650896}, //
+
31215 {5.63552999, 13.1760302}, //
+
31216 {5.6420598, 13.1872702}, //
+
31217 {5.64874983, 13.1988001}, //
+
31218 {5.65540981, 13.2101297}, //
+
31219 {5.66181993, 13.2207499}, //
+
31220 {5.66798019, 13.2306604}, //
+
31221 {5.67389011, 13.23985}, //
+
31222 {5.67955017, 13.2483196}, //
+
31223 {5.68494987, 13.2560902}, //
+
31224 {5.69010019, 13.2631397}, //
+
31225 {5.69500017, 13.2694798}, //
+
31226 {5.69964981, 13.2750998}, //
+
31227 {5.70118999, 13.2773199}, //
+
31228 {5.70281982, 13.27946}, //
+
31229 {5.70452976, 13.2815199}, //
+
31230 {5.70631981, 13.2834902}, //
+
31231 {5.70819998, 13.2853699}, //
+
31232 {5.71015978, 13.2871704}, //
+
31233 {5.71221018, 13.2888803}, //
+
31234 {5.71434021, 13.2905102}, //
+
31235 {5.71654987, 13.2920504}, //
+
31236 {5.7188201, 13.29356}, //
+
31237 {5.72334003, 13.2965803}, //
+
31238 {5.72560978, 13.2980804}, //
+
31239 {5.72786999, 13.2995901}, //
+
31240 {5.7301302, 13.3010902}, //
+
31241 {5.73238993, 13.3025999}, //
+
31242 {5.73464012, 13.3041}, //
+
31243 {5.73689985, 13.3056002}, //
+
31244 {5.73915005, 13.3070698}, //
+
31245 {5.74135017, 13.3084497}, //
+
31246 {5.74350977, 13.3097601}, //
+
31247 {5.74561977, 13.3109703}, //
+
31248 {5.7476902, 13.3121099}, //
+
31249 {5.7497201, 13.3131599}, //
+
31250 {5.75170994, 13.3141203}, //
+
31251 {5.75365019, 13.3149996}, //
+
31252 {5.75554991, 13.3157997}, //
+
31253 {5.75732994, 13.3165102}, //
+
31254 {5.75891018, 13.3171396}, //
+
31255 {5.76027012, 13.3176899}, //
+
31256 {5.76142979, 13.3181496}, //
+
31257 {5.76237011, 13.3185301}, //
+
31258 {5.76311016, 13.31882}, //
+
31259 {5.76362991, 13.3190298}, //
+
31260 {5.76394987, 13.3191605}, //
+
31261 {5.76405001, 13.3191996}, //
+
31262 {5.80296993, 13.2873497}, //
+
31263 {5.80346012, 13.2866096}, //
+
31264 {5.80515003, 13.2839699}, //
+
31265 {5.8068099, 13.2813301}, //
+
31266 {5.80841017, 13.2786903}, //
+
31267 {5.80997992, 13.2760401}, //
+
31268 {5.81150007, 13.2734003}, //
+
31269 {5.81301022, 13.2708302}, //
+
31270 {5.81451988, 13.2683802}, //
+
31271 {5.81603003, 13.2660599}, //
+
31272 {5.81754017, 13.2638597}, //
+
31273 {5.81905985, 13.2617903}, //
+
31274 {5.82056999, 13.25984}, //
+
31275 {5.82208014, 13.2580204}, //
+
31276 {5.8235898, 13.25632}, //
+
31277 {5.82509995, 13.2547503}, //
+
31278 {5.82980013, 13.2500801}, //
+
31279 {5.83114004, 13.2487497}, //
+
31280 {5.83156013, 13.2483301}, //
+
31281 {5.83163023, 13.24827}, //
+
31282 {5.83159018, 13.2482204}, //
+
31283 {5.83046007, 13.2468996}, //
+
31284 {5.82924986, 13.2455397}, //
+
31285 {5.82795, 13.2441397}, //
+
31286 {5.82657003, 13.2426901}, //
+
31287 {5.82509995, 13.2412004}, //
+
31288 {5.82351017, 13.2396498}, //
+
31289 {5.82174015, 13.2380104}, //
+
31290 {5.81981993, 13.23629}, //
+
31291 {5.81771994, 13.2344904}, //
+
31292 {5.81546021, 13.2326097}, //
+
31293 {5.81302977, 13.2306404}, //
+
31294 {5.81044006, 13.2285995}, //
+
31295 {5.80768013, 13.2264605}, //
+
31296 {5.80474997, 13.2242498}, //
+
31297 {5.80361986, 13.22293}, //
+
31298 {5.8027401, 13.2219}, //
+
31299 {5.79668999, 13.2148504}, //
+
31300 {5.79454994, 13.2123499}, //
+
31301 {5.79223013, 13.20965}, //
+
31302 {5.78979015, 13.20683}, //
+
31303 {5.78722, 13.2038803}, //
+
31304 {5.78452015, 13.2008104}, //
+
31305 {5.78170013, 13.1976099}, //
+
31306 {5.77874994, 13.1942797}, //
+
31307 {5.77568007, 13.1908302}, //
+
31308 {5.77248001, 13.1872501}, //
+
31309 {5.76914978, 13.1835499}, //
+
31310 {5.7658, 13.1798296}, //
+
31311 {5.76253986, 13.1761799}, //
+
31312 {5.75935984, 13.1726303}, //
+
31313 {5.75625992, 13.1691504}, //
+
31314 {5.75324011, 13.1657696}, //
+
31315 {5.75030994, 13.1624603}, //
+
31316 {5.74744987, 13.1592398}, //
+
31317 {5.74468994, 13.1561003}, //
+
31318 {5.7420001, 13.1530504}, //
+
31319 {5.73942995, 13.1501198}, //
+
31320 {5.73698997, 13.1473598}, //
+
31321 {5.73467016, 13.1447697}, //
+
31322 {5.73247004, 13.1423397}, //
+
31323 {5.7304101, 13.1400805}, //
+
31324 {5.72846985, 13.1379805}, //
+
31325 {5.72665024, 13.1360598}, //
+
31326 {5.72495985, 13.1342897}, //
+
31327 {5.72340012, 13.1327}, //
+
31328 {5.72340012, 13.1259003}, //
+
31329 {5.72112989, 13.1228704}, //
+
31330 {5.71887016, 13.1197901}, //
+
31331 {5.71659994, 13.1166801}, //
+
31332 {5.7143302, 13.1135197}, //
+
31333 {5.71206999, 13.1103201}, //
+
31334 {5.70979977, 13.1070805}, //
+
31335 {5.70753002, 13.1037903}, //
+
31336 {5.70526981, 13.1004696}, //
+
31337 {5.70300007, 13.0971003}, //
+
31338 {5.70073986, 13.0938997}, //
+
31339 {5.69849014, 13.0910797}, //
+
31340 {5.69622993, 13.0886297}, //
+
31341 {5.69398022, 13.0865602}, //
+
31342 {5.69172001, 13.0848598}, //
+
31343 {5.68946981, 13.08354}, //
+
31344 {5.68721008, 13.0825996}, //
+
31345 {5.68495989, 13.0820398}, //
+
31346 {5.68270016, 13.0818501}, //
+
31347 {5.68179989, 13.0810699}, //
+
31348 {5.68060017, 13.0802498}, //
+
31349 {5.67912006, 13.0793896}, //
+
31350 {5.67734003, 13.0784903}, //
+
31351 {5.67526007, 13.0775499}, //
+
31352 {5.6729002, 13.07656}, //
+
31353 {5.67023993, 13.0755301}, //
+
31354 {5.66729021, 13.07446}, //
+
31355 {5.6640501, 13.07335}, //
+
31356 {5.66067982, 13.0721903}, //
+
31357 {5.65735006, 13.07094}, //
+
31358 {5.6540699, 13.0696001}, //
+
31359 {5.65081978, 13.0681801}, //
+
31360 {5.64761019, 13.0666704}, //
+
31361 {5.64445019, 13.0650797}, //
+
31362 {5.64132977, 13.0634098}, //
+
31363 {5.63823986, 13.0616503}, //
+
31364 {5.63520002, 13.0598001}, //
+
31365 {5.63235998, 13.0579395}, //
+
31366 {5.62984991, 13.0561304}, //
+
31367 {5.62766981, 13.0543499}, //
+
31368 {5.62583017, 13.0526104}, //
+
31369 {5.62433004, 13.0509195}, //
+
31370 {5.62315989, 13.0492697}, //
+
31371 {5.62232018, 13.0476503}, //
+
31372 {5.62181997, 13.0460796}, //
+
31373 {5.62165022, 13.0445499}, //
+
31374 {5.62143993, 13.0385599}, //
+
31375 {5.62081003, 13.03265}, //
+
31376 {5.61977005, 13.0268297}, //
+
31377 {5.61829996, 13.0211}, //
+
31378 {5.61641979, 13.0154495}, //
+
31379 {5.61412001, 13.0098801}, //
+
31380 {5.61140013, 13.0044003}, //
+
31381 {5.60826015, 12.9990101}, //
+
31382 {5.60470009, 12.9937}, //
+
31383 {5.60302019, 12.9910803}, //
+
31384 {5.60100985, 12.9877396}, //
+
31385 {5.59865999, 12.9836998}, //
+
31386 {5.59598017, 12.97894}, //
+
31387 {5.59295988, 12.9734802}, //
+
31388 {5.5896101, 12.9673004}, //
+
31389 {5.58592987, 12.9604101}, //
+
31390 {5.58190012, 12.9528103}, //
+
31391 {5.57754993, 12.9445}, //
+
31392 {5.57301998, 12.9357796}, //
+
31393 {5.56843996, 12.9269304}, //
+
31394 {5.56381989, 12.9179602}, //
+
31395 {5.55916023, 12.9088602}, //
+
31396 {5.55445004, 12.8996296}, //
+
31397 {5.5497098, 12.8902798}, //
+
31398 {5.54490995, 12.8808002}, //
+
31399 {5.54008007, 12.8711901}, //
+
31400 {5.53520012, 12.8614502}, //
+
31401 {5.53044987, 12.8519497}, //
+
31402 {5.52599001, 12.8430405}, //
+
31403 {5.52182007, 12.8347197}, //
+
31404 {5.51795006, 12.8269796}, //
+
31405 {5.51436996, 12.8198204}, //
+
31406 {5.5110898, 12.8132496}, //
+
31407 {5.50810003, 12.8072596}, //
+
31408 {5.50540018, 12.8018599}, //
+
31409 {5.50299978, 12.7970505}, //
+
31410 {5.49869013, 12.7851601}, //
+
31411 {5.49479008, 12.7736101}, //
+
31412 {5.49132013, 12.7623901}, //
+
31413 {5.48825979, 12.7515001}, //
+
31414 {5.48562002, 12.7409496}, //
+
31415 {5.48339987, 12.7307396}, //
+
31416 {5.48159981, 12.7208595}, //
+
31417 {5.48020983, 12.7113104}, //
+
31418 {5.47924995, 12.7020998}, //
+
31419 {5.47853994, 12.6998301}, //
+
31420 {5.47791004, 12.6975698}, //
+
31421 {5.47735977, 12.6953096}, //
+
31422 {5.4769001, 12.6930399}, //
+
31423 {5.47652006, 12.6907797}, //
+
31424 {5.47623014, 12.6885204}, //
+
31425 {5.47601986, 12.6862602}, //
+
31426 {5.47589016, 12.6840096}, //
+
31427 {5.47585011, 12.6817503}, //
+
31428 {5.47502995, 12.68011}, //
+
31429 {5.4740901, 12.6782303}, //
+
31430 {5.47302008, 12.6760902}, //
+
31431 {5.47181988, 12.6737003}, //
+
31432 {5.47049999, 12.6710596}, //
+
31433 {5.46904993, 12.66817}, //
+
31434 {5.46748018, 12.6650295}, //
+
31435 {5.46577978, 12.6616402}, //
+
31436 {5.46395016, 12.658}, //
+
31437 {5.46204996, 12.6542797}, //
+
31438 {5.46011019, 12.65063}, //
+
31439 {5.45811987, 12.6470804}, //
+
31440 {5.45608997, 12.6436005}, //
+
31441 {5.45402002, 12.6402197}, //
+
31442 {5.45191002, 12.6369104}, //
+
31443 {5.44974995, 12.6336899}, //
+
31444 {5.44754982, 12.6305504}, //
+
31445 {5.4453001, 12.6274996}, //
+
31446 {5.44308996, 12.6245499}, //
+
31447 {5.44094992, 12.6217299}, //
+
31448 {5.43891001, 12.61903}, //
+
31449 {5.43694019, 12.6164503}, //
+
31450 {5.43506002, 12.6140003}, //
+
31451 {5.43325996, 12.61168}, //
+
31452 {5.43154001, 12.6094799}, //
+
31453 {5.42990017, 12.6073999}, //
+
31454 {5.42834997, 12.6054497}, //
+
31455 {5.42692995, 12.6036797}, //
+
31456 {5.42460012, 12.6007605}, //
+
31457 {5.42367983, 12.5996103}, //
+
31458 {5.42192984, 12.5974197}, //
+
31459 {5.42167997, 12.5971003}, //
+
31460 {5.42159986, 12.5970001}, //
+
31461 });
+
31462 polys.push_back({
+
31463 {0.269360989, 12.9814997}, //
+
31464 {0.268606007, 12.9822502}, //
+
31465 {0.267850012, 12.9834995}, //
+
31466 {0.26719901, 12.9851799}, //
+
31467 {0.266759008, 12.9871902}, //
+
31468 {0.26652801, 12.9895401}, //
+
31469 {0.266507, 12.9922199}, //
+
31470 {0.266696006, 12.9952402}, //
+
31471 {0.267093986, 12.9985905}, //
+
31472 {0.267702997, 13.0022697}, //
+
31473 {0.268521994, 13.0063}, //
+
31474 {0.269549996, 13.0106497}, //
+
31475 {0.27066201, 13.0152102}, //
+
31476 {0.271730006, 13.0198603}, //
+
31477 {0.27275601, 13.0245895}, //
+
31478 {0.273737997, 13.0293999}, //
+
31479 {0.274677008, 13.0342999}, //
+
31480 {0.275572002, 13.0392704}, //
+
31481 {0.276425004, 13.0443296}, //
+
31482 {0.277233988, 13.0494699}, //
+
31483 {0.277999997, 13.0546999}, //
+
31484 {0.278755993, 13.0599804}, //
+
31485 {0.279511005, 13.0652599}, //
+
31486 {0.280267, 13.0705299}, //
+
31487 {0.281022012, 13.0758104}, //
+
31488 {0.281778008, 13.08109}, //
+
31489 {0.28253299, 13.0863705}, //
+
31490 {0.284799993, 13.1021996}, //
+
31491 {0.286247998, 13.1065998}, //
+
31492 {0.28757, 13.1107397}, //
+
31493 {0.28876701, 13.1146297}, //
+
31494 {0.289837003, 13.1182699}, //
+
31495 {0.290780991, 13.1216602}, //
+
31496 {0.291599989, 13.1247997}, //
+
31497 {0.292293012, 13.1276903}, //
+
31498 {0.292858988, 13.1303196}, //
+
31499 {0.293300003, 13.1327}, //
+
31500 {0.293635994, 13.1349001}, //
+
31501 {0.293888003, 13.1369801}, //
+
31502 {0.294055998, 13.1389303}, //
+
31503 {0.294140011, 13.1407499}, //
+
31504 {0.294140011, 13.1424398}, //
+
31505 {0.294055998, 13.1440096}, //
+
31506 {0.293888003, 13.1454496}, //
+
31507 {0.293635994, 13.14676}, //
+
31508 {0.293300003, 13.1479502}, //
+
31509 {0.292943001, 13.1490602}, //
+
31510 {0.29262799, 13.1501303}, //
+
31511 {0.292356014, 13.1511602}, //
+
31512 {0.292124987, 13.1521502}, //
+
31513 {0.29193601, 13.1530895}, //
+
31514 {0.291788995, 13.1539898}, //
+
31515 {0.291684002, 13.15485}, //
+
31516 {0.291621, 13.1556702}, //
+
31517 {0.291599989, 13.1564503}, //
+
31518 {0.291599989, 13.1700001}, //
+
31519 {0.291536987, 13.1754704}, //
+
31520 {0.29134801, 13.1813097}, //
+
31521 {0.291033, 13.18752}, //
+
31522 {0.290592998, 13.1941099}, //
+
31523 {0.290026009, 13.2010803}, //
+
31524 {0.289332986, 13.2084198}, //
+
31525 {0.288515002, 13.2161398}, //
+
31526 {0.28757, 13.2242298}, //
+
31527 {0.286500007, 13.2327003}, //
+
31528 {0.285346001, 13.2410898}, //
+
31529 {0.284152001, 13.2489405}, //
+
31530 {0.282916993, 13.2562504}, //
+
31531 {0.281641006, 13.26301}, //
+
31532 {0.280324012, 13.2692299}, //
+
31533 {0.278966993, 13.2749004}, //
+
31534 {0.277568996, 13.2800303}, //
+
31535 {0.276129991, 13.2846098}, //
+
31536 {0.274650007, 13.2886496}, //
+
31537 {0.273999006, 13.2933197}, //
+
31538 {0.273555994, 13.2982798}, //
+
31539 {0.273321986, 13.3035297}, //
+
31540 {0.273297012, 13.3090801}, //
+
31541 {0.273479998, 13.3149204}, //
+
31542 {0.273871988, 13.3210497}, //
+
31543 {0.274473011, 13.3274698}, //
+
31544 {0.275281996, 13.3341904}, //
+
31545 {0.276300013, 13.3411999}, //
+
31546 {0.277453989, 13.3482199}, //
+
31547 {0.278650999, 13.35495}, //
+
31548 {0.279888988, 13.3613796}, //
+
31549 {0.281168997, 13.3675203}, //
+
31550 {0.282490999, 13.3733597}, //
+
31551 {0.283856004, 13.3789101}, //
+
31552 {0.285261989, 13.3841696}, //
+
31553 {0.286709994, 13.3891296}, //
+
31554 {0.288199991, 13.3937998}, //
+
31555 {0.288284004, 13.3937197}, //
+
31556 {0.288724989, 13.39328}, //
+
31557 {0.288955986, 13.3930397}, //
+
31558 {0.289227992, 13.3927698}, //
+
31559 {0.289543003, 13.3924599}, //
+
31560 {0.289900005, 13.3921003}, //
+
31561 {0.290277988, 13.3916798}, //
+
31562 {0.290656, 13.39118}, //
+
31563 {0.291033, 13.3905897}, //
+
31564 {0.291411012, 13.3899202}, //
+
31565 {0.291788995, 13.3891602}, //
+
31566 {0.292167008, 13.38832}, //
+
31567 {0.292544007, 13.3873997}, //
+
31568 {0.29292199, 13.3863897}, //
+
31569 {0.293300003, 13.3852997}, //
+
31570 {0.293657005, 13.38412}, //
+
31571 {0.293971986, 13.3828697}, //
+
31572 {0.294243991, 13.3815203}, //
+
31573 {0.294474989, 13.3801003}, //
+
31574 {0.294663996, 13.3785801}, //
+
31575 {0.29481101, 13.3769903}, //
+
31576 {0.294916004, 13.3753099}, //
+
31577 {0.294979006, 13.3735504}, //
+
31578 {0.294999987, 13.3717003}, //
+
31579 {0.294957995, 13.3697205}, //
+
31580 {0.294831991, 13.3675203}, //
+
31581 {0.294622004, 13.3651199}, //
+
31582 {0.294328004, 13.3625097}, //
+
31583 {0.293951005, 13.3596897}, //
+
31584 {0.293489009, 13.3566599}, //
+
31585 {0.292943001, 13.3534098}, //
+
31586 {0.292313993, 13.3499603}, //
+
31587 {0.291599989, 13.3463001}, //
+
31588 {0.290886015, 13.3433704}, //
+
31589 {0.290257007, 13.3406096}, //
+
31590 {0.289710999, 13.3380203}, //
+
31591 {0.289249003, 13.3355904}, //
+
31592 {0.288872004, 13.3333302}, //
+
31593 {0.288578004, 13.3312302}, //
+
31594 {0.288367987, 13.3293104}, //
+
31595 {0.288242012, 13.3275404}, //
+
31596 {0.288199991, 13.3259497}, //
+
31597 {0.288242012, 13.3244495}, //
+
31598 {0.288367987, 13.3229504}, //
+
31599 {0.288578004, 13.3214397}, //
+
31600 {0.288872004, 13.3199396}, //
+
31601 {0.289249003, 13.3184299}, //
+
31602 {0.289710999, 13.3169298}, //
+
31603 {0.290257007, 13.3154202}, //
+
31604 {0.290886015, 13.3139095}, //
+
31605 {0.291599989, 13.3123999}, //
+
31606 {0.292335004, 13.3115997}, //
+
31607 {0.293027014, 13.3107204}, //
+
31608 {0.293677986, 13.3097601}, //
+
31609 {0.294286013, 13.3087101}, //
+
31610 {0.294853002, 13.3075705}, //
+
31611 {0.295378, 13.3063602}, //
+
31612 {0.295859993, 13.3050499}, //
+
31613 {0.296301007, 13.3036699}, //
+
31614 {0.296700001, 13.3022003}, //
+
31615 {0.297057003, 13.3006201}, //
+
31616 {0.297372013, 13.2988596}, //
+
31617 {0.297643989, 13.2969398}, //
+
31618 {0.297874987, 13.2948599}, //
+
31619 {0.298063993, 13.2925997}, //
+
31620 {0.298211008, 13.2901802}, //
+
31621 {0.298316002, 13.28759}, //
+
31622 {0.298379004, 13.2848301}, //
+
31623 {0.298400015, 13.2819004}, //
+
31624 {0.298440993, 13.2742796}, //
+
31625 {0.298565, 13.2665005}, //
+
31626 {0.298772007, 13.2585402}, //
+
31627 {0.299062014, 13.2504196}, //
+
31628 {0.299434006, 13.2421303}, //
+
31629 {0.299888998, 13.2336798}, //
+
31630 {0.30042699, 13.22505}, //
+
31631 {0.301046997, 13.21626}, //
+
31632 {0.301750004, 13.2073002}, //
+
31633 {0.302464008, 13.2027798}, //
+
31634 {0.303092986, 13.1982603}, //
+
31635 {0.303638995, 13.1937304}, //
+
31636 {0.30410099, 13.1892099}, //
+
31637 {0.30447799, 13.1846905}, //
+
31638 {0.30477199, 13.1801701}, //
+
31639 {0.304982007, 13.1756401}, //
+
31640 {0.305108011, 13.1711197}, //
+
31641 {0.305150002, 13.1666002}, //
+
31642 {0.305150002, 13.1360998}, //
+
31643 {0.305087, 13.1336203}, //
+
31644 {0.304897994, 13.1307297}, //
+
31645 {0.304583013, 13.1274204}, //
+
31646 {0.304143012, 13.1236897}, //
+
31647 {0.303575993, 13.1195402}, //
+
31648 {0.302882999, 13.1149702}, //
+
31649 {0.302065015, 13.1099796}, //
+
31650 {0.301120013, 13.1045704}, //
+
31651 {0.30004999, 13.0987501}, //
+
31652 {0.298905998, 13.0927095}, //
+
31653 {0.297719002, 13.0866203}, //
+
31654 {0.296489, 13.0804901}, //
+
31655 {0.295215011, 13.0743303}, //
+
31656 {0.293899, 13.0681105}, //
+
31657 {0.292539001, 13.0618601}, //
+
31658 {0.291135997, 13.0555696}, //
+
31659 {0.289689988, 13.0492296}, //
+
31660 {0.288199991, 13.0428495}, //
+
31661 {0.286689997, 13.0365105}, //
+
31662 {0.285180002, 13.0303001}, //
+
31663 {0.283672005, 13.02421}, //
+
31664 {0.282164991, 13.0182505}, //
+
31665 {0.280660003, 13.0124102}, //
+
31666 {0.279155999, 13.00669}, //
+
31667 {0.277651995, 13.0010996}, //
+
31668 {0.276151001, 12.9956398}, //
+
31669 {0.274650007, 12.9903002}, //
+
31670 {0.273894012, 12.9875402}, //
+
31671 {0.273139, 12.98528}, //
+
31672 {0.272383004, 12.9835196}, //
+
31673 {0.271627992, 12.9822702}, //
+
31674 {0.270871997, 12.9815102}, //
+
31675 {0.270117015, 12.9812603}, //
+
31676 });
+
31677 polys.push_back({
+
31678 {6.47387981, 12.6485596}, //
+
31679 {6.47173977, 12.6491899}, //
+
31680 {6.46967983, 12.6497402}, //
+
31681 {6.46771002, 12.6501999}, //
+
31682 {6.46582985, 12.6505804}, //
+
31683 {6.46402979, 12.6508703}, //
+
31684 {6.46231985, 12.6510801}, //
+
31685 {6.46069002, 12.6512098}, //
+
31686 {6.45914984, 12.6512499}, //
+
31687 {6.45616007, 12.65203}, //
+
31688 {6.45320988, 12.6528397}, //
+
31689 {6.45030022, 12.6536999}, //
+
31690 {6.44743013, 12.6546001}, //
+
31691 {6.44460011, 12.6555405}, //
+
31692 {6.44182014, 12.6565199}, //
+
31693 {6.43907022, 12.6575403}, //
+
31694 {6.43635988, 12.6585999}, //
+
31695 {6.43370008, 12.6597004}, //
+
31696 {6.43112993, 12.6608496}, //
+
31697 {6.42867994, 12.6620502}, //
+
31698 {6.42636013, 12.66329}, //
+
31699 {6.42416, 12.6645699}, //
+
31700 {6.42209005, 12.6658897}, //
+
31701 {6.42013979, 12.6672602}, //
+
31702 {6.41832018, 12.6686602}, //
+
31703 {6.41661978, 12.6701097}, //
+
31704 {6.41505003, 12.6716003}, //
+
31705 {6.4142499, 12.67239}, //
+
31706 {6.41337013, 12.6732597}, //
+
31707 {6.40902996, 12.6775999}, //
+
31708 {6.4077301, 12.6788998}, //
+
31709 {6.40636015, 12.6802797}, //
+
31710 {6.40490007, 12.6817503}, //
+
31711 {6.40256977, 12.6840496}, //
+
31712 {6.40011978, 12.68643}, //
+
31713 {6.39754009, 12.6888905}, //
+
31714 {6.39483976, 12.6914396}, //
+
31715 {6.39201021, 12.6940804}, //
+
31716 {6.38906002, 12.6967897}, //
+
31717 {6.38598013, 12.6996002}, //
+
31718 {6.38278008, 12.7024803}, //
+
31719 {6.37944984, 12.7054501}, //
+
31720 {6.37599993, 12.7083502}, //
+
31721 {6.37241983, 12.71099}, //
+
31722 {6.36872005, 12.7133799}, //
+
31723 {6.3648901, 12.7155199}, //
+
31724 {6.36092997, 12.7174101}, //
+
31725 {6.35685015, 12.7190504}, //
+
31726 {6.35264015, 12.7204399}, //
+
31727 {6.34830999, 12.72157}, //
+
31728 {6.34385014, 12.7224503}, //
+
31729 {6.34075022, 12.7231798}, //
+
31730 {6.33749008, 12.7238703}, //
+
31731 {6.33406019, 12.7245197}, //
+
31732 {6.33046007, 12.7251301}, //
+
31733 {6.32670021, 12.7256899}, //
+
31734 {6.32276011, 12.7262096}, //
+
31735 {6.31865978, 12.7266798}, //
+
31736 {6.31439018, 12.7271099}, //
+
31737 {6.30994987, 12.7275}, //
+
31738 {6.30553007, 12.7278605}, //
+
31739 {6.30133009, 12.7281704}, //
+
31740 {6.2973299, 12.7284403}, //
+
31741 {6.29354, 12.7286797}, //
+
31742 {6.28995991, 12.7288599}, //
+
31743 {6.2865901, 12.7290096}, //
+
31744 {6.28344011, 12.7291203}, //
+
31745 {6.28048992, 12.7291803}, //
+
31746 {6.27775002, 12.7292004}, //
+
31747 {6.26590014, 12.7292004}, //
+
31748 {6.26604986, 12.7292404}, //
+
31749 {6.26648998, 12.7293701}, //
+
31750 {6.26722002, 12.7295799}, //
+
31751 {6.26823997, 12.7298698}, //
+
31752 {6.26955986, 12.7302504}, //
+
31753 {6.27117014, 12.73071}, //
+
31754 {6.27306986, 12.7312603}, //
+
31755 {6.27525997, 12.7318897}, //
+
31756 {6.27775002, 12.7326002}, //
+
31757 {6.28048992, 12.7333298}, //
+
31758 {6.28344011, 12.7340298}, //
+
31759 {6.2865901, 12.7346802}, //
+
31760 {6.28995991, 12.7352896}, //
+
31761 {6.29354, 12.7358503}, //
+
31762 {6.2973299, 12.7363796}, //
+
31763 {6.30133009, 12.7368603}, //
+
31764 {6.30553007, 12.7372999}, //
+
31765 {6.30994987, 12.7377005}, //
+
31766 {6.31446981, 12.7379704}, //
+
31767 {6.31899023, 12.73804}, //
+
31768 {6.32352018, 12.7378902}, //
+
31769 {6.32804012, 12.7375298}, //
+
31770 {6.33256006, 12.7369699}, //
+
31771 {6.33708, 12.7361898}, //
+
31772 {6.34160995, 12.7351999}, //
+
31773 {6.34612989, 12.7340097}, //
+
31774 {6.35064983, 12.7326002}, //
+
31775 {6.35713005, 12.7305298}, //
+
31776 {6.36302996, 12.7288399}, //
+
31777 {6.36834002, 12.72752}, //
+
31778 {6.37306976, 12.7265797}, //
+
31779 {6.37721014, 12.7260103}, //
+
31780 {6.38076019, 12.7258196}, //
+
31781 {6.38372993, 12.7260103}, //
+
31782 {6.38610983, 12.7265701}, //
+
31783 {6.38789988, 12.7275}, //
+
31784 {6.38898993, 12.7286501}, //
+
31785 {6.3892498, 12.7298498}, //
+
31786 {6.38866997, 12.7310896}, //
+
31787 {6.38724995, 12.7323704}, //
+
31788 {6.38499022, 12.7336903}, //
+
31789 {6.38189983, 12.7350597}, //
+
31790 {6.37797022, 12.7364597}, //
+
31791 {6.37319994, 12.7379103}, //
+
31792 {6.36759996, 12.7393999}, //
+
31793 {6.36254978, 12.7409201}, //
+
31794 {6.35797024, 12.7424898}, //
+
31795 {6.35383987, 12.7440901}, //
+
31796 {6.35017014, 12.7457504}, //
+
31797 {6.34697008, 12.7474403}, //
+
31798 {6.34422016, 12.7491798}, //
+
31799 {6.34193993, 12.7509604}, //
+
31800 {6.34010983, 12.75278}, //
+
31801 {6.33874989, 12.7546501}, //
+
31802 {6.33782005, 12.7565603}, //
+
31803 {6.33725977, 12.7585096}, //
+
31804 {6.33706999, 12.7605}, //
+
31805 {6.33725977, 12.7625303}, //
+
31806 {6.33783007, 12.7645998}, //
+
31807 {6.33876991, 12.7667198}, //
+
31808 {6.3400898, 12.7688704}, //
+
31809 {6.34178019, 12.77106}, //
+
31810 {6.34385014, 12.7733002}, //
+
31811 {6.34532022, 12.7747898}, //
+
31812 {6.34670019, 12.7762403}, //
+
31813 {6.34800005, 12.7776403}, //
+
31814 {6.34920979, 12.7790003}, //
+
31815 {6.35033989, 12.7803202}, //
+
31816 {6.35137987, 12.7815905}, //
+
31817 {6.35234022, 12.7828197}, //
+
31818 {6.35320997, 12.7840099}, //
+
31819 {6.35400009, 12.7851496}, //
+
31820 {6.3547101, 12.7862396}, //
+
31821 {6.35534, 12.7872496}, //
+
31822 {6.3558898, 12.7881699}, //
+
31823 {6.35634995, 12.78901}, //
+
31824 {6.35672998, 12.7897701}, //
+
31825 {6.3570199, 12.7904396}, //
+
31826 {6.35723019, 12.7910299}, //
+
31827 {6.35735989, 12.7915297}, //
+
31828 {6.35739994, 12.7919502}, //
+
31829 {6.35733986, 12.7923098}, //
+
31830 {6.35715008, 12.7926197}, //
+
31831 {6.35683012, 12.7928896}, //
+
31832 {6.35639, 12.7931299}, //
+
31833 {6.35583019, 12.7933102}, //
+
31834 {6.3551302, 12.7934599}, //
+
31835 {6.35431004, 12.7935696}, //
+
31836 {6.35337019, 12.7936296}, //
+
31837 {6.35230017, 12.7936497}, //
+
31838 {6.35106993, 12.7935696}, //
+
31839 {6.34963989, 12.7933102}, //
+
31840 {6.34799004, 12.7928896}, //
+
31841 {6.34612989, 12.7923098}, //
+
31842 {6.34406996, 12.7915497}, //
+
31843 {6.3417902, 12.7906303}, //
+
31844 {6.33930016, 12.7895403}, //
+
31845 {6.33660984, 12.7882795}, //
+
31846 {6.33370018, 12.78685}, //
+
31847 {6.32999992, 12.7847404}, //
+
31848 {6.32641983, 12.7829199}, //
+
31849 {6.3229599, 12.7813997}, //
+
31850 {6.31963015, 12.7801704}, //
+
31851 {6.31643009, 12.7792301}, //
+
31852 {6.31334019, 12.7785797}, //
+
31853 {6.31039, 12.7782297}, //
+
31854 {6.30755997, 12.7781696}, //
+
31855 {6.3048501, 12.7784004}, //
+
31856 {6.30243015, 12.7788401}, //
+
31857 {6.30041981, 12.7793999}, //
+
31858 {6.29883003, 12.7800903}, //
+
31859 {6.29764986, 12.7809095}, //
+
31860 {6.2968998, 12.7818499}, //
+
31861 {6.29655981, 12.7829103}, //
+
31862 {6.29663992, 12.7840996}, //
+
31863 {6.29714012, 12.7854099}, //
+
31864 {6.29804993, 12.78685}, //
+
31865 {6.29936981, 12.7883596}, //
+
31866 {6.30107021, 12.7898703}, //
+
31867 {6.30314016, 12.7913799}, //
+
31868 {6.30560017, 12.7928801}, //
+
31869 {6.30842018, 12.7943897}, //
+
31870 {6.31162977, 12.7958899}, //
+
31871 {6.31520987, 12.7974005}, //
+
31872 {6.31917, 12.7988997}, //
+
31873 {6.32350016, 12.8003998}, //
+
31874 {6.32777023, 12.8019104}, //
+
31875 {6.33154011, 12.8034201}, //
+
31876 {6.33480978, 12.8049297}, //
+
31877 {6.33757019, 12.8064299}, //
+
31878 {6.33982992, 12.8079395}, //
+
31879 {6.34158993, 12.8094397}, //
+
31880 {6.34285021, 12.8109503}, //
+
31881 {6.3435998, 12.8124504}, //
+
31882 {6.34385014, 12.8139496}, //
+
31883 {6.34369993, 12.8154202}, //
+
31884 {6.34325981, 12.8168001}, //
+
31885 {6.34252977, 12.8181105}, //
+
31886 {6.34150982, 12.8193197}, //
+
31887 {6.34018993, 12.8204603}, //
+
31888 {6.33858013, 12.8215103}, //
+
31889 {6.33667994, 12.8224697}, //
+
31890 {6.33448982, 12.82335}, //
+
31891 {6.33199978, 12.8241501}, //
+
31892 {6.32934999, 12.8248196}, //
+
31893 {6.32665014, 12.8253298}, //
+
31894 {6.32391024, 12.8256598}, //
+
31895 {6.32111979, 12.8258305}, //
+
31896 {6.31829023, 12.8258305}, //
+
31897 {6.31542015, 12.8256598}, //
+
31898 {6.31251001, 12.8253298}, //
+
31899 {6.30954981, 12.8248196}, //
+
31900 {6.30655003, 12.8241501}, //
+
31901 {6.30426979, 12.82339}, //
+
31902 {6.30194998, 12.8226404}, //
+
31903 {6.29959011, 12.8218803}, //
+
31904 {6.29718018, 12.8211298}, //
+
31905 {6.29473019, 12.8203697}, //
+
31906 {6.29224014, 12.8196201}, //
+
31907 {6.28970003, 12.8188601}, //
+
31908 {6.28711987, 12.8181105}, //
+
31909 {6.28450012, 12.8173504}, //
+
31910 {6.28192997, 12.8166504}, //
+
31911 {6.27947998, 12.8160295}, //
+
31912 {6.27716017, 12.8154898}, //
+
31913 {6.27496004, 12.8150301}, //
+
31914 {6.27289009, 12.8146601}, //
+
31915 {6.27093983, 12.8143702}, //
+
31916 {6.26912022, 12.8141699}, //
+
31917 {6.26741982, 12.8140402}, //
+
31918 {6.26585007, 12.8140001}, //
+
31919 {6.25740004, 12.8140001}, //
+
31920 {6.2571702, 12.8140402}, //
+
31921 {6.2572298, 12.8141699}, //
+
31922 {6.25758982, 12.8143797}, //
+
31923 {6.25824022, 12.8146696}, //
+
31924 {6.25918007, 12.8150501}, //
+
31925 {6.26041985, 12.8155098}, //
+
31926 {6.26195002, 12.8160601}, //
+
31927 {6.26378012, 12.8166904}, //
+
31928 {6.26590014, 12.8174}, //
+
31929 {6.26971006, 12.8181496}, //
+
31930 {6.2736001, 12.8188896}, //
+
31931 {6.27756977, 12.8196402}, //
+
31932 {6.28163004, 12.8203897}, //
+
31933 {6.28576994, 12.8211403}, //
+
31934 {6.28998995, 12.8218899}, //
+
31935 {6.29429007, 12.8226404}, //
+
31936 {6.29867983, 12.8233995}, //
+
31937 {6.30315018, 12.8241501}, //
+
31938 {6.30834007, 12.8249502}, //
+
31939 {6.31337023, 12.8258305}, //
+
31940 {6.31823015, 12.8267899}, //
+
31941 {6.32291985, 12.8278303}, //
+
31942 {6.32743979, 12.8289604}, //
+
31943 {6.33178997, 12.8301697}, //
+
31944 {6.33597994, 12.8314695}, //
+
31945 {6.34000015, 12.83284}, //
+
31946 {6.34385014, 12.8343}, //
+
31947 {6.34744978, 12.8357697}, //
+
31948 {6.35070992, 12.8371496}, //
+
31949 {6.35364008, 12.83846}, //
+
31950 {6.3562398, 12.8396702}, //
+
31951 {6.3585, 12.8408098}, //
+
31952 {6.36042976, 12.8418598}, //
+
31953 {6.36202002, 12.8428202}, //
+
31954 {6.36327982, 12.8437004}, //
+
31955 {6.36420012, 12.8444996}, //
+
31956 {6.36412001, 12.8460102}, //
+
31957 {6.36386013, 12.8475199}, //
+
31958 {6.36344004, 12.8490295}, //
+
31959 {6.3628602, 12.8505297}, //
+
31960 {6.36210012, 12.8520403}, //
+
31961 {6.36117983, 12.8535404}, //
+
31962 {6.36008978, 12.8550501}, //
+
31963 {6.35882998, 12.8565502}, //
+
31964 {6.35739994, 12.8580503}, //
+
31965 {6.35589981, 12.85952}, //
+
31966 {6.35440016, 12.8608999}, //
+
31967 {6.35289001, 12.8622103}, //
+
31968 {6.35138988, 12.8634195}, //
+
31969 {6.34988022, 12.8645601}, //
+
31970 {6.34838009, 12.8656101}, //
+
31971 {6.34686995, 12.8665705}, //
+
31972 {6.3453598, 12.8674498}, //
+
31973 {6.34385014, 12.8682499}, //
+
31974 {6.3354001, 12.8682499}, //
+
31975 {6.33500004, 12.8682299}, //
+
31976 {6.33455992, 12.8681698}, //
+
31977 {6.33408022, 12.8680601}, //
+
31978 {6.33354998, 12.8679104}, //
+
31979 {6.33299017, 12.8677301}, //
+
31980 {6.33237982, 12.8674898}, //
+
31981 {6.33172989, 12.8672199}, //
+
31982 {6.33102989, 12.86691}, //
+
31983 {6.33029985, 12.8665504}, //
+
31984 {6.32861996, 12.8657103}, //
+
31985 {6.32766008, 12.8652296}, //
+
31986 {6.3266201, 12.8647003}, //
+
31987 {6.32549, 12.8641396}, //
+
31988 {6.32427979, 12.8635302}, //
+
31989 {6.32297993, 12.8628798}, //
+
31990 {6.32160997, 12.8621798}, //
+
31991 {6.3201499, 12.8614502}, //
+
31992 {6.31938982, 12.8614302}, //
+
31993 {6.31864023, 12.8613701}, //
+
31994 {6.31788015, 12.8612604}, //
+
31995 {6.31713009, 12.8611097}, //
+
31996 {6.31637001, 12.8609304}, //
+
31997 {6.31561995, 12.8606901}, //
+
31998 {6.31485987, 12.8604202}, //
+
31999 {6.3141098, 12.8601103}, //
+
32000 {6.3133502, 12.8597498}, //
+
32001 {6.31262016, 12.8593903}, //
+
32002 {6.31192017, 12.8590803}, //
+
32003 {6.31127024, 12.8588104}, //
+
32004 {6.31065989, 12.8585701}, //
+
32005 {6.31010008, 12.8583899}, //
+
32006 {6.30956984, 12.8582401}, //
+
32007 {6.30909014, 12.8581305}, //
+
32008 {6.30865002, 12.8580704}, //
+
32009 {6.30824995, 12.8580503}, //
+
32010 {6.30788994, 12.8580704}, //
+
32011 {6.30757999, 12.8581305}, //
+
32012 {6.3073101, 12.8582401}, //
+
32013 {6.30706978, 12.8583899}, //
+
32014 {6.30689001, 12.8585701}, //
+
32015 {6.30673981, 12.8588104}, //
+
32016 {6.30663013, 12.8590803}, //
+
32017 {6.30657005, 12.8593903}, //
+
32018 {6.30653, 12.8601103}, //
+
32019 {6.30646992, 12.8604202}, //
+
32020 {6.30635977, 12.8606901}, //
+
32021 {6.30621004, 12.8609304}, //
+
32022 {6.3060298, 12.8611097}, //
+
32023 {6.30578995, 12.8612604}, //
+
32024 {6.30552006, 12.8613701}, //
+
32025 {6.30521011, 12.8614302}, //
+
32026 {6.30449009, 12.8614702}, //
+
32027 {6.30418015, 12.8615303}, //
+
32028 {6.30390978, 12.86164}, //
+
32029 {6.30366993, 12.8617897}, //
+
32030 {6.30349016, 12.8619699}, //
+
32031 {6.30333996, 12.8622103}, //
+
32032 {6.30322981, 12.8624802}, //
+
32033 {6.3031702, 12.8627901}, //
+
32034 {6.30315018, 12.8631496}, //
+
32035 {6.30315018, 12.86485}, //
+
32036 {6.30333996, 12.8650398}, //
+
32037 {6.3048501, 12.8665504}, //
+
32038 {6.30521011, 12.86691}, //
+
32039 {6.30552006, 12.8672199}, //
+
32040 {6.30635977, 12.8680601}, //
+
32041 {6.30657005, 12.8682699}, //
+
32042 {6.30673981, 12.8684397}, //
+
32043 {6.30757999, 12.8692799}, //
+
32044 {6.30860996, 12.8703098}, //
+
32045 {6.3091898, 12.8708897}, //
+
32046 {6.30992985, 12.8716297}, //
+
32047 {6.30994987, 12.8716497}, //
+
32048 {6.3048501, 12.8716497}, //
+
32049 {6.30436993, 12.8716097}, //
+
32050 {6.30367994, 12.87148}, //
+
32051 {6.30278015, 12.8712702}, //
+
32052 {6.30167007, 12.8709803}, //
+
32053 {6.30035019, 12.8705997}, //
+
32054 {6.29883003, 12.8701401}, //
+
32055 {6.29709005, 12.8695898}, //
+
32056 {6.2951498, 12.8689604}, //
+
32057 {6.29300022, 12.8682499}, //
+
32058 {6.29149008, 12.8668203}, //
+
32059 {6.28997993, 12.8655596}, //
+
32060 {6.28846979, 12.8644695}, //
+
32061 {6.28696012, 12.8635502}, //
+
32062 {6.28543997, 12.8627901}, //
+
32063 {6.28392982, 12.8622103}, //
+
32064 {6.28242016, 12.8617897}, //
+
32065 {6.28091002, 12.8615303}, //
+
32066 {6.27939987, 12.8614502}, //
+
32067 {6.27264977, 12.8614502}, //
+
32068 {6.27257013, 12.8614101}, //
+
32069 {6.26585007, 12.8580503}, //
+
32070 {6.26432991, 12.8572903}, //
+
32071 {6.26276016, 12.8565397}, //
+
32072 {6.2611599, 12.8557796}, //
+
32073 {6.25950003, 12.8550301}, //
+
32074 {6.25781012, 12.85427}, //
+
32075 {6.25607014, 12.8535204}, //
+
32076 {6.2542901, 12.8527603}, //
+
32077 {6.25247002, 12.8520098}, //
+
32078 {6.25059986, 12.8512497}, //
+
32079 {6.24870014, 12.8504801}, //
+
32080 {6.24675989, 12.8496704}, //
+
32081 {6.24477005, 12.8488197}, //
+
32082 {6.24274015, 12.84793}, //
+
32083 {6.2406702, 12.8469896}, //
+
32084 {6.2385602, 12.8460102}, //
+
32085 {6.23640013, 12.8449802}, //
+
32086 {6.2342, 12.8439102}, //
+
32087 {6.23194981, 12.8428001}, //
+
32088 {6.22965002, 12.8417301}, //
+
32089 {6.22727013, 12.8407898}, //
+
32090 {6.22481012, 12.8399696}, //
+
32091 {6.22226, 12.8392696}, //
+
32092 {6.21962023, 12.8387098}, //
+
32093 {6.21690989, 12.8382702}, //
+
32094 {6.21409988, 12.8379498}, //
+
32095 {6.21121979, 12.83776}, //
+
32096 {6.20825005, 12.8376999}, //
+
32097 {6.2048502, 12.8376999}, //
+
32098 {6.2048502, 12.8309498}, //
+
32099 {6.20144987, 12.8309498}, //
+
32100 {6.20144987, 12.8275499}, //
+
32101 {6.19465017, 12.8275499}, //
+
32102 {6.19465017, 12.8241501}, //
+
32103 {6.18450022, 12.8241501}, //
+
32104 {6.18446016, 12.8234196}, //
+
32105 {6.18432999, 12.8227196}, //
+
32106 {6.18412018, 12.8220701}, //
+
32107 {6.18382978, 12.8214598}, //
+
32108 {6.18345022, 12.8209}, //
+
32109 {6.18299007, 12.8203697}, //
+
32110 {6.1824398, 12.81989}, //
+
32111 {6.1818099, 12.8194504}, //
+
32112 {6.18109989, 12.8190498}, //
+
32113 {6.18033981, 12.8186598}, //
+
32114 {6.17959023, 12.8182297}, //
+
32115 {6.17883015, 12.8177605}, //
+
32116 {6.17808008, 12.8172398}, //
+
32117 {6.17732, 12.81668}, //
+
32118 {6.17656994, 12.8160696}, //
+
32119 {6.17580986, 12.8154202}, //
+
32120 {6.1750598, 12.8147297}, //
+
32121 {6.17430019, 12.8140001}, //
+
32122 {6.17351007, 12.8132401}, //
+
32123 {6.17263985, 12.8124905}, //
+
32124 {6.17167997, 12.8117304}, //
+
32125 {6.17063999, 12.8109798}, //
+
32126 {6.16950989, 12.8102198}, //
+
32127 {6.16830015, 12.8094702}, //
+
32128 {6.16699982, 12.8087101}, //
+
32129 {6.16561985, 12.8079596}, //
+
32130 {6.16415024, 12.8072004}, //
+
32131 {6.1634202, 12.8071604}, //
+
32132 {6.1627202, 12.8070297}, //
+
32133 {6.1620698, 12.8068199}, //
+
32134 {6.16145992, 12.80653}, //
+
32135 {6.16090012, 12.8061504}, //
+
32136 {6.16036987, 12.8056898}, //
+
32137 {6.15989017, 12.8051395}, //
+
32138 {6.15945005, 12.8045101}, //
+
32139 {6.15904999, 12.8037996}, //
+
32140 {6.15869999, 12.8030901}, //
+
32141 {6.15840006, 12.8024597}, //
+
32142 {6.15813017, 12.8019104}, //
+
32143 {6.15790987, 12.8014498}, //
+
32144 {6.1575799, 12.8007803}, //
+
32145 {6.15747976, 12.8005695}, //
+
32146 {6.15742016, 12.8004398}, //
+
32147 {6.15740013, 12.8003998}, //
+
32148 {6.11329985, 12.7631502}, //
+
32149 {6.1133399, 12.7632103}, //
+
32150 {6.11367989, 12.76371}, //
+
32151 {6.11535978, 12.7662001}, //
+
32152 {6.11599016, 12.7671404}, //
+
32153 {6.11670017, 12.7681999}, //
+
32154 {6.11753988, 12.7693501}, //
+
32155 {6.11853981, 12.7705498}, //
+
32156 {6.11971998, 12.7717896}, //
+
32157 {6.12105989, 12.7730703}, //
+
32158 {6.12256002, 12.7743902}, //
+
32159 {6.12422991, 12.7757597}, //
+
32160 {6.12607002, 12.7771597}, //
+
32161 {6.12807989, 12.7786102}, //
+
32162 {6.13024998, 12.7800999}, //
+
32163 {6.13249016, 12.7823601}, //
+
32164 {6.13467979, 12.7846098}, //
+
32165 {6.13682985, 12.78687}, //
+
32166 {6.13894987, 12.7891197}, //
+
32167 {6.14101982, 12.7913799}, //
+
32168 {6.14305019, 12.7936296}, //
+
32169 {6.14504004, 12.7958899}, //
+
32170 {6.14698982, 12.7981396}, //
+
32171 {6.14890003, 12.8003998}, //
+
32172 {6.15073013, 12.8025799}, //
+
32173 {6.15242004, 12.8045998}, //
+
32174 {6.15398979, 12.8064404}, //
+
32175 {6.15543985, 12.8081198}, //
+
32176 {6.1567502, 12.8096304}, //
+
32177 {6.15793991, 12.8109798}, //
+
32178 {6.15900993, 12.81215}, //
+
32179 {6.15993977, 12.8131599}, //
+
32180 {6.16074991, 12.8140001}, //
+
32181 {6.16085005, 12.8155804}, //
+
32182 {6.16117001, 12.8173399}, //
+
32183 {6.16169024, 12.8192596}, //
+
32184 {6.1624198, 12.8213396}, //
+
32185 {6.16336012, 12.8235998}, //
+
32186 {6.16450977, 12.8260202}, //
+
32187 {6.16586018, 12.8286104}, //
+
32188 {6.16742992, 12.8313704}, //
+
32189 {6.16919994, 12.8343}, //
+
32190 {6.17109013, 12.8372602}, //
+
32191 {6.17297983, 12.8400898}, //
+
32192 {6.17486, 12.8427896}, //
+
32193 {6.17675018, 12.8453703}, //
+
32194 {6.17862988, 12.8478203}, //
+
32195 {6.18051004, 12.8501396}, //
+
32196 {6.18239021, 12.8523397}, //
+
32197 {6.18426991, 12.8544102}, //
+
32198 {6.18615007, 12.8563499}, //
+
32199 {6.18802023, 12.8581305}, //
+
32200 {6.18983984, 12.8597097}, //
+
32201 {6.19162989, 12.8610697}, //
+
32202 {6.19336987, 12.8622303}, //
+
32203 {6.19506979, 12.8631697}, //
+
32204 {6.19673014, 12.8639097}, //
+
32205 {6.19833994, 12.8644304}, //
+
32206 {6.19992018, 12.8647499}, //
+
32207 {6.20144987, 12.86485}, //
+
32208 {6.20158005, 12.8655796}, //
+
32209 {6.20195007, 12.8662796}, //
+
32210 {6.20257998, 12.86693}, //
+
32211 {6.2034502, 12.8675404}, //
+
32212 {6.20457983, 12.8681002}, //
+
32213 {6.2059598, 12.8686304}, //
+
32214 {6.2075901, 12.8691101}, //
+
32215 {6.2094698, 12.8695498}, //
+
32216 {6.21159983, 12.8699503}, //
+
32217 {6.21387005, 12.8703899}, //
+
32218 {6.21612978, 12.8709497}, //
+
32219 {6.21838999, 12.8716402}, //
+
32220 {6.22066021, 12.8724604}, //
+
32221 {6.22291994, 12.8733997}, //
+
32222 {6.22518015, 12.8744602}, //
+
32223 {6.22743988, 12.8756504}, //
+
32224 {6.22969007, 12.8769598}, //
+
32225 {6.23194981, 12.8783998}, //
+
32226 {6.23495007, 12.87918}, //
+
32227 {6.23790979, 12.8799896}, //
+
32228 {6.24081993, 12.8808498}, //
+
32229 {6.24369001, 12.8817501}, //
+
32230 {6.24652004, 12.8826904}, //
+
32231 {6.24931002, 12.8836699}, //
+
32232 {6.25204992, 12.8846903}, //
+
32233 {6.25474977, 12.8857498}, //
+
32234 {6.25740004, 12.8868504}, //
+
32235 {6.25997019, 12.8879204}, //
+
32236 {6.26242018, 12.8888597}, //
+
32237 {6.26473999, 12.8896799}, //
+
32238 {6.26694012, 12.8903799}, //
+
32239 {6.26901007, 12.8909397}, //
+
32240 {6.27095985, 12.8913803}, //
+
32241 {6.27277994, 12.8916998}, //
+
32242 {6.27447987, 12.8918896}, //
+
32243 {6.27605009, 12.8919497}, //
+
32244 {6.27827978, 12.8927298}, //
+
32245 {6.28047991, 12.8935499}, //
+
32246 {6.28262997, 12.8944101}, //
+
32247 {6.28473997, 12.8953104}, //
+
32248 {6.28679991, 12.8962498}, //
+
32249 {6.2888298, 12.8972397}, //
+
32250 {6.29081011, 12.8982697}, //
+
32251 {6.29274988, 12.8993397}, //
+
32252 {6.29465008, 12.9004498}, //
+
32253 {6.29643011, 12.9015999}, //
+
32254 {6.29800987, 12.9027996}, //
+
32255 {6.29936981, 12.9040298}, //
+
32256 {6.30052996, 12.9053097}, //
+
32257 {6.3014698, 12.9066296}, //
+
32258 {6.30220985, 12.90798}, //
+
32259 {6.30273008, 12.90938}, //
+
32260 {6.30305004, 12.91082}, //
+
32261 {6.30315018, 12.9123001}, //
+
32262 {6.30307007, 12.9130802}, //
+
32263 {6.30281019, 12.9139004}, //
+
32264 {6.3023901, 12.9147596}, //
+
32265 {6.30180979, 12.9156599}, //
+
32266 {6.30105019, 12.9166002}, //
+
32267 {6.30012989, 12.9175901}, //
+
32268 {6.29903984, 12.9186201}, //
+
32269 {6.29778004, 12.9196901}, //
+
32270 {6.29635, 12.9208002}, //
+
32271 {6.29476976, 12.9218302}, //
+
32272 {6.29301023, 12.9226503}, //
+
32273 {6.29109001, 12.9232597}, //
+
32274 {6.28901005, 12.9236498}, //
+
32275 {6.28674984, 12.9238396}, //
+
32276 {6.28432989, 12.9238195}, //
+
32277 {6.28174019, 12.9235897}, //
+
32278 {6.27897978, 12.9231501}, //
+
32279 {6.27605009, 12.9224997}, //
+
32280 {6.27295017, 12.92099}, //
+
32281 {6.26969004, 12.9194803}, //
+
32282 {6.26626015, 12.9179697}, //
+
32283 {6.26266003, 12.91646}, //
+
32284 {6.25890017, 12.9149399}, //
+
32285 {6.25496006, 12.9134302}, //
+
32286 {6.25086021, 12.9119196}, //
+
32287 {6.24659014, 12.9104099}, //
+
32288 {6.24214983, 12.9089003}, //
+
32289 {6.23771, 12.9074402}, //
+
32290 {6.23343992, 12.9060698}, //
+
32291 {6.22934008, 12.9047699}, //
+
32292 {6.22539997, 12.9035597}, //
+
32293 {6.22164011, 12.9024296}, //
+
32294 {6.21803999, 12.9013901}, //
+
32295 {6.2146101, 12.9004297}, //
+
32296 {6.21134996, 12.8995504}, //
+
32297 {6.20825005, 12.8987503}, //
+
32298 {6.20675993, 12.8980198}, //
+
32299 {6.20530987, 12.8973198}, //
+
32300 {6.20390987, 12.8966703}, //
+
32301 {6.20253992, 12.89606}, //
+
32302 {6.20122004, 12.8955002}, //
+
32303 {6.1999402, 12.8949699}, //
+
32304 {6.19869995, 12.8944902}, //
+
32305 {6.19750023, 12.8940496}, //
+
32306 {6.1963501, 12.8936501}, //
+
32307 {6.19527006, 12.8933096}, //
+
32308 {6.19427013, 12.8930597}, //
+
32309 {6.19335985, 12.89289}, //
+
32310 {6.19252014, 12.8928099}, //
+
32311 {6.19177008, 12.8928099}, //
+
32312 {6.19111013, 12.89289}, //
+
32313 {6.19051981, 12.8930597}, //
+
32314 {6.19002008, 12.8933096}, //
+
32315 {6.18959999, 12.8936501}, //
+
32316 {6.1893301, 12.8940897}, //
+
32317 {6.18926001, 12.89466}, //
+
32318 {6.18941021, 12.8953505}, //
+
32319 {6.18976021, 12.8961697}, //
+
32320 {6.19032001, 12.89711}, //
+
32321 {6.19109011, 12.89818}, //
+
32322 {6.19207001, 12.8993797}, //
+
32323 {6.19325018, 12.9006996}, //
+
32324 {6.19465017, 12.9021502}, //
+
32325 {6.19702005, 12.9037104}, //
+
32326 {6.19960022, 12.9054003}, //
+
32327 {6.20239019, 12.9072199}, //
+
32328 {6.20538998, 12.9091597}, //
+
32329 {6.20859003, 12.9112196}, //
+
32330 {6.21200991, 12.9134197}, //
+
32331 {6.21563005, 12.91574}, //
+
32332 {6.21946001, 12.9181805}, //
+
32333 {6.22349977, 12.9207497}, //
+
32334 {6.22758007, 12.9232903}, //
+
32335 {6.2315402, 12.9256201}, //
+
32336 {6.23537016, 12.9277401}, //
+
32337 {6.23906994, 12.9296503}, //
+
32338 {6.24265003, 12.9313498}, //
+
32339 {6.24609995, 12.9328403}, //
+
32340 {6.24943018, 12.9341202}, //
+
32341 {6.25263023, 12.9351902}, //
+
32342 {6.25570011, 12.9360504}, //
+
32343 {6.25720978, 12.9368095}, //
+
32344 {6.25871992, 12.9375601}, //
+
32345 {6.26023006, 12.9383202}, //
+
32346 {6.26173019, 12.9390697}, //
+
32347 {6.26323986, 12.9398298}, //
+
32348 {6.26473999, 12.9405804}, //
+
32349 {6.26625013, 12.9413404}, //
+
32350 {6.26774979, 12.94209}, //
+
32351 {6.26924992, 12.9428501}, //
+
32352 {6.27150011, 12.9443102}, //
+
32353 {6.27370024, 12.9456797}, //
+
32354 {6.27585983, 12.9469805}, //
+
32355 {6.27796984, 12.9481897}, //
+
32356 {6.28003979, 12.9493198}, //
+
32357 {6.28207016, 12.9503603}, //
+
32358 {6.28406, 12.9513197}, //
+
32359 {6.28599977, 12.9521999}, //
+
32360 {6.28789997, 12.9530001}, //
+
32361 {6.28977013, 12.9538002}, //
+
32362 {6.29159021, 12.9546804}, //
+
32363 {6.29336977, 12.9556398}, //
+
32364 {6.29511023, 12.9566803}, //
+
32365 {6.29680014, 12.9578104}, //
+
32366 {6.29846001, 12.9590197}, //
+
32367 {6.3000598, 12.9603205}, //
+
32368 {6.30163002, 12.9616899}, //
+
32369 {6.30315018, 12.96315}, //
+
32370 {6.30333996, 12.9637203}, //
+
32371 {6.30349016, 12.96416}, //
+
32372 {6.3048501, 12.9682503}, //
+
32373 {6.30514002, 12.9693403}, //
+
32374 {6.3052702, 12.9703503}, //
+
32375 {6.30523014, 12.9712696}, //
+
32376 {6.30501986, 12.9721098}, //
+
32377 {6.30463982, 12.9728699}, //
+
32378 {6.30409002, 12.9735403}, //
+
32379 {6.30338001, 12.9741297}, //
+
32380 {6.30249977, 12.9746304}, //
+
32381 {6.30144978, 12.97505}, //
+
32382 {6.30026007, 12.9753599}, //
+
32383 {6.2989502, 12.9755497}, //
+
32384 {6.29751015, 12.9756203}, //
+
32385 {6.29593992, 12.9755497}, //
+
32386 {6.29425001, 12.9753599}, //
+
32387 {6.29242992, 12.97505}, //
+
32388 {6.29048014, 12.9746103}, //
+
32389 {6.28840017, 12.97404}, //
+
32390 {6.28620005, 12.9733496}, //
+
32391 {6.28326988, 12.9727001}, //
+
32392 {6.28050995, 12.9722605}, //
+
32393 {6.27791977, 12.9720297}, //
+
32394 {6.27548981, 12.9720097}, //
+
32395 {6.27323008, 12.9722004}, //
+
32396 {6.27113008, 12.9725904}, //
+
32397 {6.26920986, 12.9731998}, //
+
32398 {6.26743984, 12.97402}, //
+
32399 {6.26585007, 12.97505}, //
+
32400 {6.26456022, 12.9762001}, //
+
32401 {6.26367998, 12.9773998}, //
+
32402 {6.26322985, 12.9786301}, //
+
32403 {6.26318979, 12.9799099}, //
+
32404 {6.26356983, 12.9812298}, //
+
32405 {6.26435995, 12.9825802}, //
+
32406 {6.26557016, 12.9839802}, //
+
32407 {6.26719999, 12.9854202}, //
+
32408 {6.26924992, 12.9869003}, //
+
32409 {6.27074003, 12.9876804}, //
+
32410 {6.27219009, 12.9884901}, //
+
32411 {6.27359009, 12.9893503}, //
+
32412 {6.27495003, 12.9902496}, //
+
32413 {6.27626991, 12.99119}, //
+
32414 {6.27754021, 12.9921703}, //
+
32415 {6.27876997, 12.9931898}, //
+
32416 {6.27996016, 12.9942503}, //
+
32417 {6.2810998, 12.9953499}, //
+
32418 {6.28218985, 12.9965}, //
+
32419 {6.28319979, 12.9976997}, //
+
32420 {6.28412008, 12.9989405}, //
+
32421 {6.28495979, 13.0002203}, //
+
32422 {6.28571987, 13.0015402}, //
+
32423 {6.28638983, 13.0029097}, //
+
32424 {6.28698015, 13.0043097}, //
+
32425 {6.28747988, 13.0057602}, //
+
32426 {6.28789997, 13.0072498}, //
+
32427 {6.28816986, 13.0086403}, //
+
32428 {6.28823996, 13.0097704}, //
+
32429 {6.28809023, 13.0106497}, //
+
32430 {6.28774023, 13.0112801}, //
+
32431 {6.28717995, 13.0116596}, //
+
32432 {6.28640985, 13.0117798}, //
+
32433 {6.28542995, 13.0116596}, //
+
32434 {6.28424978, 13.0112801}, //
+
32435 {6.28284979, 13.0106497}, //
+
32436 {6.28130007, 13.00912}, //
+
32437 {6.27966022, 13.0075397}, //
+
32438 {6.2779398, 13.0059299}, //
+
32439 {6.2761302, 13.0042696}, //
+
32440 {6.27425003, 13.0025702}, //
+
32441 {6.2722702, 13.0008297}, //
+
32442 {6.2702198, 12.9990396}, //
+
32443 {6.26807022, 12.99722}, //
+
32444 {6.26585007, 12.9953499}, //
+
32445 {6.26358986, 12.9934502}, //
+
32446 {6.26134014, 12.9915104}, //
+
32447 {6.25907993, 12.9895296}, //
+
32448 {6.25683022, 12.9875002}, //
+
32449 {6.25457001, 12.9854403}, //
+
32450 {6.25231981, 12.9833298}, //
+
32451 {6.25006008, 12.9811802}, //
+
32452 {6.24780989, 12.9789801}, //
+
32453 {6.24555016, 12.9767504}, //
+
32454 {6.24035978, 12.9723997}, //
+
32455 {6.2353301, 12.9683704}, //
+
32456 {6.23047018, 12.9646902}, //
+
32457 {6.22578001, 12.96134}, //
+
32458 {6.22126007, 12.9583197}, //
+
32459 {6.21690989, 12.9556398}, //
+
32460 {6.21271992, 12.95329}, //
+
32461 {6.20870018, 12.9512796}, //
+
32462 {6.2048502, 12.9496002}, //
+
32463 {6.20131016, 12.9475498}, //
+
32464 {6.1982398, 12.94592}, //
+
32465 {6.19562006, 12.9447098}, //
+
32466 {6.19347, 12.9439201}, //
+
32467 {6.19177008, 12.9435396}, //
+
32468 {6.19053984, 12.9435797}, //
+
32469 {6.18977022, 12.9440298}, //
+
32470 {6.18944979, 12.94491}, //
+
32471 {6.18959999, 12.9462004}, //
+
32472 {6.19016981, 12.9477901}, //
+
32473 {6.19111013, 12.9495602}, //
+
32474 {6.19243002, 12.9514799}, //
+
32475 {6.19411993, 12.9535799}, //
+
32476 {6.19619989, 12.9558401}, //
+
32477 {6.19863987, 12.9582701}, //
+
32478 {6.2014699, 12.9608603}, //
+
32479 {6.20466995, 12.9636202}, //
+
32480 {6.20825005, 12.9665499}, //
+
32481 {6.2105298, 12.9680796}, //
+
32482 {6.21285009, 12.9696503}, //
+
32483 {6.21520996, 12.9712696}, //
+
32484 {6.21760988, 12.9729204}, //
+
32485 {6.22004986, 12.9746103}, //
+
32486 {6.2225399, 12.9763498}, //
+
32487 {6.22507, 12.9781303}, //
+
32488 {6.22764015, 12.9799404}, //
+
32489 {6.23024988, 12.9818001}, //
+
32490 {6.23285007, 12.9837303}, //
+
32491 {6.23537016, 12.9857397}, //
+
32492 {6.23780012, 12.9878397}, //
+
32493 {6.24014997, 12.9900198}, //
+
32494 {6.24241018, 12.99228}, //
+
32495 {6.24457979, 12.9946203}, //
+
32496 {6.24666977, 12.9970503}, //
+
32497 {6.24868011, 12.9995604}, //
+
32498 {6.25059986, 13.0021496}, //
+
32499 {6.25244999, 13.0047302}, //
+
32500 {6.25421, 13.0071802}, //
+
32501 {6.25587988, 13.00951}, //
+
32502 {6.25747013, 13.0117102}, //
+
32503 {6.2589798, 13.0137796}, //
+
32504 {6.26039982, 13.0157299}, //
+
32505 {6.26174021, 13.0175505}, //
+
32506 {6.26299, 13.0192404}, //
+
32507 {6.26415014, 13.0207996}, //
+
32508 {6.26522017, 13.0222301}, //
+
32509 {6.26900005, 13.0272598}, //
+
32510 {6.26918983, 13.0275202}, //
+
32511 {6.26924992, 13.0276003}, //
+
32512 {6.26926994, 13.0276403}, //
+
32513 {6.26933002, 13.02777}, //
+
32514 {6.2695899, 13.0282698}, //
+
32515 {6.26977015, 13.0286503}, //
+
32516 {6.27094984, 13.0310001}, //
+
32517 {6.27130985, 13.0317802}, //
+
32518 {6.2716198, 13.0325899}, //
+
32519 {6.27189016, 13.0334501}, //
+
32520 {6.27213001, 13.0343504}, //
+
32521 {6.27230978, 13.0352898}, //
+
32522 {6.27245998, 13.0362701}, //
+
32523 {6.27257013, 13.0372896}, //
+
32524 {6.27263021, 13.0383501}, //
+
32525 {6.27264977, 13.0394497}, //
+
32526 {6.27264977, 13.0479498}, //
+
32527 {6.27263021, 13.0486603}, //
+
32528 {6.27257013, 13.0492897}, //
+
32529 {6.27245998, 13.04984}, //
+
32530 {6.27230978, 13.0502996}, //
+
32531 {6.27213001, 13.0506802}, //
+
32532 {6.27189016, 13.0509701}, //
+
32533 {6.2716198, 13.0511799}, //
+
32534 {6.27130985, 13.0513096}, //
+
32535 {6.27094984, 13.0513496}, //
+
32536 {6.27054977, 13.0513096}, //
+
32537 {6.27011013, 13.0511799}, //
+
32538 {6.26962996, 13.0509701}, //
+
32539 {6.2691102, 13.0506802}, //
+
32540 {6.26854992, 13.0502996}, //
+
32541 {6.26795006, 13.04984}, //
+
32542 {6.26731014, 13.0492897}, //
+
32543 {6.26662016, 13.0486603}, //
+
32544 {6.26590014, 13.0479498}, //
+
32545 {6.26505995, 13.0471497}, //
+
32546 {6.26405001, 13.0462704}, //
+
32547 {6.26287985, 13.04531}, //
+
32548 {6.26152992, 13.04426}, //
+
32549 {6.26001978, 13.0431204}, //
+
32550 {6.25833988, 13.0419102}, //
+
32551 {6.25649977, 13.0405998}, //
+
32552 {6.25447989, 13.0392199}, //
+
32553 {6.25229979, 13.0377502}, //
+
32554 {6.25, 13.0362501}, //
+
32555 {6.24762011, 13.03475}, //
+
32556 {6.24515009, 13.0332403}, //
+
32557 {6.24259996, 13.0317402}, //
+
32558 {6.23996019, 13.0302296}, //
+
32559 {6.23722982, 13.0287304}, //
+
32560 {6.23441982, 13.0272198}, //
+
32561 {6.23153019, 13.0257101}, //
+
32562 {6.22854996, 13.0242004}, //
+
32563 {6.22556019, 13.0226898}, //
+
32564 {6.22261, 13.0211802}, //
+
32565 {6.21970987, 13.0196695}, //
+
32566 {6.21683979, 13.0181599}, //
+
32567 {6.21401978, 13.0166397}, //
+
32568 {6.21123981, 13.01513}, //
+
32569 {6.20849991, 13.0136204}, //
+
32570 {6.20580006, 13.0121098}, //
+
32571 {6.2031498, 13.0106001}, //
+
32572 {6.20062017, 13.00916}, //
+
32573 {6.19829988, 13.0078497}, //
+
32574 {6.19618988, 13.0066605}, //
+
32575 {6.19429016, 13.0056}, //
+
32576 {6.19259024, 13.0046597}, //
+
32577 {6.19111013, 13.0038404}, //
+
32578 {6.18982983, 13.00315}, //
+
32579 {6.1887598, 13.0025902}, //
+
32580 {6.18790007, 13.0021496}, //
+
32581 {6.18723011, 13.0018396}, //
+
32582 {6.18671989, 13.0016499}, //
+
32583 {6.18638992, 13.0015802}, //
+
32584 {6.18622017, 13.0016499}, //
+
32585 {6.18622017, 13.0018396}, //
+
32586 {6.18638992, 13.0021496}, //
+
32587 {6.18671989, 13.0025902}, //
+
32588 {6.18723011, 13.0031605}, //
+
32589 {6.18790007, 13.00385}, //
+
32590 {6.19021988, 13.0061197}, //
+
32591 {6.19265985, 13.0083799}, //
+
32592 {6.19523001, 13.0106401}, //
+
32593 {6.19792986, 13.0129099}, //
+
32594 {6.20074987, 13.0151701}, //
+
32595 {6.20370007, 13.0174303}, //
+
32596 {6.20676994, 13.0196896}, //
+
32597 {6.20997, 13.0219402}, //
+
32598 {6.21330023, 13.0242004}, //
+
32599 {6.21664, 13.0264702}, //
+
32600 {6.21985006, 13.0287304}, //
+
32601 {6.22292995, 13.0309896}, //
+
32602 {6.22588015, 13.0332603}, //
+
32603 {6.22871017, 13.0355196}, //
+
32604 {6.23141003, 13.0377798}, //
+
32605 {6.23398018, 13.04004}, //
+
32606 {6.23643017, 13.0422897}, //
+
32607 {6.23874998, 13.0445499}, //
+
32608 {6.24092007, 13.0467596}, //
+
32609 {6.24292994, 13.0488997}, //
+
32610 {6.24477005, 13.0509396}, //
+
32611 {6.24643993, 13.0529099}, //
+
32612 {6.24794006, 13.0547895}, //
+
32613 {6.24927998, 13.0565901}, //
+
32614 {6.25046015, 13.0583096}, //
+
32615 {6.25146008, 13.0599499}, //
+
32616 {6.25229979, 13.0614996}, //
+
32617 {6.25231981, 13.0629902}, //
+
32618 {6.25237989, 13.0644398}, //
+
32619 {6.25249004, 13.0658398}, //
+
32620 {6.25263977, 13.0671997}, //
+
32621 {6.25282001, 13.0685196}, //
+
32622 {6.25305986, 13.0697899}, //
+
32623 {6.25333023, 13.0710201}, //
+
32624 {6.25364017, 13.0722103}, //
+
32625 {6.25400019, 13.07335}, //
+
32626 {6.25439978, 13.0745001}, //
+
32627 {6.2548399, 13.0756998}, //
+
32628 {6.25532007, 13.0769396}, //
+
32629 {6.25584984, 13.0782204}, //
+
32630 {6.25641012, 13.0795403}, //
+
32631 {6.25702, 13.0809097}, //
+
32632 {6.25766993, 13.0823097}, //
+
32633 {6.25836992, 13.0837603}, //
+
32634 {6.25909996, 13.0852499}, //
+
32635 {6.25980997, 13.08603}, //
+
32636 {6.26043987, 13.0868397}, //
+
32637 {6.26099014, 13.0876999}, //
+
32638 {6.26144981, 13.0886002}, //
+
32639 {6.26182985, 13.0895395}, //
+
32640 {6.26211977, 13.0905199}, //
+
32641 {6.26233006, 13.0915403}, //
+
32642 {6.26246023, 13.0925999}, //
+
32643 {6.26249981, 13.0937004}, //
+
32644 {6.26242018, 13.0946503}, //
+
32645 {6.26215982, 13.0952101}, //
+
32646 {6.26174021, 13.0954103}, //
+
32647 {6.2611599, 13.0952196}, //
+
32648 {6.26039982, 13.0946598}, //
+
32649 {6.25948, 13.0937204}, //
+
32650 {6.25838995, 13.0924101}, //
+
32651 {6.25713015, 13.0907202}, //
+
32652 {6.25570011, 13.0886497}, //
+
32653 {6.25405979, 13.0871}, //
+
32654 {6.2521801, 13.0854597}, //
+
32655 {6.25004005, 13.0837402}, //
+
32656 {6.24765015, 13.0819302}, //
+
32657 {6.2450099, 13.0800505}, //
+
32658 {6.24211979, 13.0780697}, //
+
32659 {6.23897982, 13.0760202}, //
+
32660 {6.23558998, 13.0738697}, //
+
32661 {6.23194981, 13.0716496}, //
+
32662 {6.22889996, 13.0686598}, //
+
32663 {6.22575998, 13.0657101}, //
+
32664 {6.2225399, 13.0628099}, //
+
32665 {6.21923018, 13.0599403}, //
+
32666 {6.21584988, 13.0571203}, //
+
32667 {6.21236992, 13.0543404}, //
+
32668 {6.20881987, 13.0516005}, //
+
32669 {6.20517015, 13.0488997}, //
+
32670 {6.20144987, 13.0462503}, //
+
32671 {6.19777012, 13.0436802}, //
+
32672 {6.19425011, 13.0412302}, //
+
32673 {6.19090986, 13.0389099}, //
+
32674 {6.18772984, 13.0367098}, //
+
32675 {6.18472004, 13.0346403}, //
+
32676 {6.18186998, 13.03269}, //
+
32677 {6.17920017, 13.0308704}, //
+
32678 {6.1766901, 13.02917}, //
+
32679 {6.17434978, 13.0276003}, //
+
32680 {6.17286015, 13.0254402}, //
+
32681 {6.17141008, 13.02349}, //
+
32682 {6.17001009, 13.02174}, //
+
32683 {6.16864014, 13.0202103}, //
+
32684 {6.16731977, 13.0188904}, //
+
32685 {6.16603994, 13.0177803}, //
+
32686 {6.16480017, 13.01688}, //
+
32687 {6.16359997, 13.01618}, //
+
32688 {6.16244984, 13.0157003}, //
+
32689 {6.16142988, 13.0153999}, //
+
32690 {6.16062021, 13.0152102}, //
+
32691 {6.16001987, 13.0151596}, //
+
32692 {6.15961981, 13.0152197}, //
+
32693 {6.15943003, 13.0154104}, //
+
32694 {6.15945005, 13.0157204}, //
+
32695 {6.15967989, 13.01616}, //
+
32696 {6.16011, 13.0167198}, //
+
32697 {6.16074991, 13.0173998}, //
+
32698 {6.16163015, 13.01824}, //
+
32699 {6.16275978, 13.0192499}, //
+
32700 {6.16414022, 13.0204201}, //
+
32701 {6.16578007, 13.0217695}, //
+
32702 {6.16766024, 13.0232801}, //
+
32703 {6.16978979, 13.0249596}, //
+
32704 {6.17218018, 13.0268002}, //
+
32705 {6.17480993, 13.02882}, //
+
32706 {6.17770004, 13.0310001}, //
+
32707 {6.18217993, 13.03477}, //
+
32708 {6.18658018, 13.0385303}, //
+
32709 {6.19088984, 13.0423002}, //
+
32710 {6.19511986, 13.0460701}, //
+
32711 {6.19926023, 13.0498304}, //
+
32712 {6.20332003, 13.0536003}, //
+
32713 {6.20730019, 13.0573702}, //
+
32714 {6.21119022, 13.0611296}, //
+
32715 {6.21500015, 13.0649004}, //
+
32716 {6.21863985, 13.0685396}, //
+
32717 {6.22203016, 13.0719299}, //
+
32718 {6.23711014, 13.0870104}, //
+
32719 {6.23874998, 13.0886497}, //
+
32720 {6.24020004, 13.0908403}, //
+
32721 {6.24151993, 13.0929098}, //
+
32722 {6.24271011, 13.0948496}, //
+
32723 {6.24378014, 13.0966597}, //
+
32724 {6.24471998, 13.0983496}, //
+
32725 {6.24553013, 13.0999203}, //
+
32726 {6.2462101, 13.1013498}, //
+
32727 {6.24676991, 13.1026602}, //
+
32728 {6.24720001, 13.1038504}, //
+
32729 {6.24754, 13.1049805}, //
+
32730 {6.24778986, 13.1061201}, //
+
32731 {6.24796009, 13.1072502}, //
+
32732 {6.2480402, 13.1083803}, //
+
32733 {6.2480402, 13.10952}, //
+
32734 {6.24796009, 13.1106501}, //
+
32735 {6.24778986, 13.1117802}, //
+
32736 {6.24754, 13.1129198}, //
+
32737 {6.24720001, 13.1140499}, //
+
32738 {6.24676991, 13.1151199}, //
+
32739 {6.2462101, 13.1160603}, //
+
32740 {6.24553013, 13.1168804}, //
+
32741 {6.24471998, 13.1175804}, //
+
32742 {6.24378014, 13.1181402}, //
+
32743 {6.24271011, 13.1185799}, //
+
32744 {6.24151993, 13.1189003}, //
+
32745 {6.24020004, 13.1190901}, //
+
32746 {6.23874998, 13.1191502}, //
+
32747 {6.22515011, 13.1191502}, //
+
32748 {6.22367001, 13.1191902}, //
+
32749 {6.22222996, 13.1193199}, //
+
32750 {6.22082996, 13.1195202}, //
+
32751 {6.21948004, 13.1198101}, //
+
32752 {6.21816015, 13.1201801}, //
+
32753 {6.21687984, 13.1206398}, //
+
32754 {6.21565008, 13.1211796}, //
+
32755 {6.21444988, 13.1218004}, //
+
32756 {6.21330023, 13.1225004}, //
+
32757 {6.21240997, 13.1232996}, //
+
32758 {6.21196985, 13.1241798}, //
+
32759 {6.21199989, 13.1251402}, //
+
32760 {6.21249008, 13.1261902}, //
+
32761 {6.21342993, 13.1273298}, //
+
32762 {6.21482992, 13.12854}, //
+
32763 {6.21670008, 13.1298504}, //
+
32764 {6.21901989, 13.1312304}, //
+
32765 {6.22179985, 13.1327}, //
+
32766 {6.22400999, 13.1341295}, //
+
32767 {6.22615004, 13.1353903}, //
+
32768 {6.22818995, 13.1364803}, //
+
32769 {6.23016024, 13.1373997}, //
+
32770 {6.23203993, 13.1381598}, //
+
32771 {6.23383999, 13.1387396}, //
+
32772 {6.23555994, 13.1391602}, //
+
32773 {6.23719978, 13.1394196}, //
+
32774 {6.23874998, 13.1394997}, //
+
32775 {6.23948002, 13.1395197}, //
+
32776 {6.24018002, 13.1395798}, //
+
32777 {6.24082994, 13.1396904}, //
+
32778 {6.24143982, 13.1398401}, //
+
32779 {6.2420001, 13.1400204}, //
+
32780 {6.24252987, 13.1402597}, //
+
32781 {6.24301004, 13.1405296}, //
+
32782 {6.24345016, 13.1408396}, //
+
32783 {6.24385023, 13.1412001}, //
+
32784 {6.24412012, 13.1415997}, //
+
32785 {6.24419022, 13.1420403}, //
+
32786 {6.24404001, 13.14252}, //
+
32787 {6.24368, 13.1430397}, //
+
32788 {6.24312019, 13.1436005}, //
+
32789 {6.24234009, 13.1442003}, //
+
32790 {6.24135017, 13.1448402}, //
+
32791 {6.24015999, 13.1455297}, //
+
32792 {6.23874998, 13.1462498}, //
+
32793 {6.23803997, 13.1469803}, //
+
32794 {6.23741007, 13.1476803}, //
+
32795 {6.2368598, 13.1483297}, //
+
32796 {6.23640013, 13.1489401}, //
+
32797 {6.23602009, 13.1494999}, //
+
32798 {6.23573017, 13.1500301}, //
+
32799 {6.23551989, 13.1505098}, //
+
32800 {6.23539019, 13.1509504}, //
+
32801 {6.23535013, 13.15135}, //
+
32802 {6.23535013, 13.1615}, //
+
32803 {6.23531008, 13.1618605}, //
+
32804 {6.2351799, 13.1621704}, //
+
32805 {6.23497009, 13.1624403}, //
+
32806 {6.23468018, 13.1626797}, //
+
32807 {6.23430014, 13.1628599}, //
+
32808 {6.23383999, 13.1630096}, //
+
32809 {6.2332902, 13.1631203}, //
+
32810 {6.23265982, 13.1631804}, //
+
32811 {6.23194981, 13.1632004}, //
+
32812 {6.23116016, 13.1631603}, //
+
32813 {6.23028994, 13.1630297}, //
+
32814 {6.22933006, 13.1628304}, //
+
32815 {6.22829008, 13.1625404}, //
+
32816 {6.22715998, 13.1621704}, //
+
32817 {6.22594976, 13.1617098}, //
+
32818 {6.22464991, 13.16117}, //
+
32819 {6.22326994, 13.1605501}, //
+
32820 {6.22179985, 13.1598501}, //
+
32821 {6.21885014, 13.1582098}, //
+
32822 {6.21603012, 13.1563301}, //
+
32823 {6.21332979, 13.1541901}, //
+
32824 {6.2107501, 13.1518002}, //
+
32825 {6.20830011, 13.1491604}, //
+
32826 {6.20597982, 13.1462698}, //
+
32827 {6.20378017, 13.1431303}, //
+
32828 {6.20170021, 13.13974}, //
+
32829 {6.19974995, 13.1360998}, //
+
32830 {6.1978898, 13.1322899}, //
+
32831 {6.19608021, 13.1283998}, //
+
32832 {6.19430017, 13.1244202}, //
+
32833 {6.1925602, 13.1203604}, //
+
32834 {6.19086981, 13.1162205}, //
+
32835 {6.18921995, 13.11199}, //
+
32836 {6.18760014, 13.1076803}, //
+
32837 {6.18602991, 13.1032801}, //
+
32838 {6.18450022, 13.0987997}, //
+
32839 {6.18370008, 13.0951595}, //
+
32840 {6.18281984, 13.0917702}, //
+
32841 {6.18185997, 13.0886297}, //
+
32842 {6.18081999, 13.0857401}, //
+
32843 {6.17968988, 13.0831003}, //
+
32844 {6.17848015, 13.0807104}, //
+
32845 {6.17717981, 13.0785704}, //
+
32846 {6.17580986, 13.0766897}, //
+
32847 {6.17434978, 13.0750504}, //
+
32848 {6.17280006, 13.0721598}, //
+
32849 {6.17116022, 13.0695295}, //
+
32850 {6.16943979, 13.0671396}, //
+
32851 {6.16764021, 13.0650101}, //
+
32852 {6.16576004, 13.0631304}, //
+
32853 {6.16379023, 13.0614901}, //
+
32854 {6.16174984, 13.0601101}, //
+
32855 {6.15960979, 13.05898}, //
+
32856 {6.15740013, 13.0580997}, //
+
32857 {6.15425014, 13.0563898}, //
+
32858 {6.15085983, 13.0542603}, //
+
32859 {6.14721012, 13.0517101}, //
+
32860 {6.14332008, 13.0487404}, //
+
32861 {6.13917017, 13.0453501}, //
+
32862 {6.13477993, 13.0415401}, //
+
32863 {6.13012981, 13.0373201}, //
+
32864 {6.12523985, 13.03267}, //
+
32865 {6.12010002, 13.0276003}, //
+
32866 {6.11795998, 13.0223198}, //
+
32867 {6.11606979, 13.0170498}, //
+
32868 {6.11442995, 13.0117702}, //
+
32869 {6.11304998, 13.0065002}, //
+
32870 {6.11190987, 13.0012302}, //
+
32871 {6.1110301, 12.9959602}, //
+
32872 {6.1104002, 12.9906902}, //
+
32873 {6.11003017, 12.9854202}, //
+
32874 {6.1099, 12.9801502}, //
+
32875 {6.10983992, 12.9771299}, //
+
32876 {6.10965014, 12.9741096}, //
+
32877 {6.10933018, 12.9710903}, //
+
32878 {6.10889006, 12.96807}, //
+
32879 {6.10832977, 12.9650497}, //
+
32880 {6.10762978, 12.9620399}, //
+
32881 {6.10681009, 12.9590197}, //
+
32882 {6.10586977, 12.9560099}, //
+
32883 {6.10480022, 12.9530001}, //
+
32884 {6.10348988, 12.9500303}, //
+
32885 {6.10179996, 12.9471397}, //
+
32886 {6.09973001, 12.9443398}, //
+
32887 {6.09729004, 12.9416199}, //
+
32888 {6.09447002, 12.9389801}, //
+
32889 {6.09126997, 12.9364204}, //
+
32890 {6.08768988, 12.9339504}, //
+
32891 {6.08373022, 12.9315596}, //
+
32892 {6.07940006, 12.9292498}, //
+
32893 {6.0704999, 12.9249001}, //
+
32894 {6.06190014, 12.9208698}, //
+
32895 {6.05357981, 12.9171896}, //
+
32896 {6.04555988, 12.9138403}, //
+
32897 {6.03783989, 12.91082}, //
+
32898 {6.0303998, 12.9081402}, //
+
32899 {6.02326012, 12.9057903}, //
+
32900 {6.01640987, 12.90378}, //
+
32901 {6.00985003, 12.9020996}, //
+
32902 {6.00380993, 12.9007301}, //
+
32903 {5.99846983, 12.8996}, //
+
32904 {5.99385023, 12.8987303}, //
+
32905 {5.98994017, 12.8980999}, //
+
32906 {5.98674011, 12.8977299}, //
+
32907 {5.98425007, 12.8976097}, //
+
32908 {5.98247004, 12.8977404}, //
+
32909 {5.98141003, 12.8981199}, //
+
32910 {5.98105001, 12.8987503}, //
+
32911 {5.96579981, 12.8987503}, //
+
32912 {5.96548986, 12.8987703}, //
+
32913 {5.96530008, 12.8988304}, //
+
32914 {5.96522999, 12.8989401}, //
+
32915 {5.96530008, 12.8990898}, //
+
32916 {5.96548986, 12.8992701}, //
+
32917 {5.96579981, 12.8995104}, //
+
32918 {5.96623993, 12.8997803}, //
+
32919 {5.96681023, 12.9000902}, //
+
32920 {5.96750021, 12.9004498}, //
+
32921 {5.96827984, 12.9008703}, //
+
32922 {5.96908998, 12.90137}, //
+
32923 {5.9699502, 12.9019604}, //
+
32924 {5.97084999, 12.9026203}, //
+
32925 {5.97178984, 12.9033699}, //
+
32926 {5.97277021, 12.9042101}, //
+
32927 {5.97379017, 12.9051199}, //
+
32928 {5.97485018, 12.9061203}, //
+
32929 {5.97594976, 12.9071999}, //
+
32930 {5.97714996, 12.9084396}, //
+
32931 {5.97846985, 12.9098902}, //
+
32932 {5.97991991, 12.91154}, //
+
32933 {5.98149014, 12.9134102}, //
+
32934 {5.98319006, 12.9154902}, //
+
32935 {5.98502016, 12.9177799}, //
+
32936 {5.98696995, 12.9202805}, //
+
32937 {5.98904991, 12.9229803}, //
+
32938 {5.99125004, 12.9259005}, //
+
32939 {6.00279999, 12.9348497}, //
+
32940 {6.01335001, 12.9436302}, //
+
32941 {6.02289009, 12.9522495}, //
+
32942 {6.03142977, 12.9607}, //
+
32943 {6.03896999, 12.9689798}, //
+
32944 {6.04548979, 12.9771004}, //
+
32945 {6.05102015, 12.9850502}, //
+
32946 {6.05554008, 12.9928303}, //
+
32947 {6.05905008, 13.0004501}, //
+
32948 {6.06056023, 13.0041304}, //
+
32949 {6.06206989, 13.0076504}, //
+
32950 {6.06358004, 13.0109997}, //
+
32951 {6.06508017, 13.0141802}, //
+
32952 {6.06658983, 13.0172005}, //
+
32953 {6.06808996, 13.02005}, //
+
32954 {6.06960011, 13.0227299}, //
+
32955 {6.07110023, 13.0252504}, //
+
32956 {6.07259989, 13.0276003}, //
+
32957 {6.07553005, 13.0312405}, //
+
32958 {6.07828999, 13.0346298}, //
+
32959 {6.08088017, 13.0377703}, //
+
32960 {6.08331013, 13.0406599}, //
+
32961 {6.08556986, 13.0432997}, //
+
32962 {6.08766985, 13.0456896}, //
+
32963 {6.08959007, 13.0478296}, //
+
32964 {6.09136009, 13.0497103}, //
+
32965 {6.09294987, 13.0513496}, //
+
32966 {6.0936799, 13.0520697}, //
+
32967 {6.0943799, 13.0527601}, //
+
32968 {6.09502983, 13.0534}, //
+
32969 {6.09564018, 13.0539999}, //
+
32970 {6.09619999, 13.0545597}, //
+
32971 {6.09673023, 13.0550804}, //
+
32972 {6.09765005, 13.0559998}, //
+
32973 {6.09937, 13.0577202}, //
+
32974 {6.09989977, 13.0582504}, //
+
32975 {6.10046005, 13.0588102}, //
+
32976 {6.10241985, 13.06077}, //
+
32977 {6.10314989, 13.0614996}, //
+
32978 {6.10394001, 13.0630503}, //
+
32979 {6.10481024, 13.0646896}, //
+
32980 {6.10577011, 13.0664101}, //
+
32981 {6.10681009, 13.0682096}, //
+
32982 {6.1079402, 13.0700903}, //
+
32983 {6.10914993, 13.0720596}, //
+
32984 {6.11044979, 13.0740995}, //
+
32985 {6.11183023, 13.0762396}, //
+
32986 {6.11329985, 13.0784502}, //
+
32987 {6.11556005, 13.0808001}, //
+
32988 {6.11780977, 13.0833197}, //
+
32989 {6.12006998, 13.0860004}, //
+
32990 {6.12233019, 13.08885}, //
+
32991 {6.12458992, 13.0918703}, //
+
32992 {6.12686014, 13.0950499}, //
+
32993 {6.12911987, 13.0984001}, //
+
32994 {6.13138008, 13.1019201}, //
+
32995 {6.13364983, 13.1056004}, //
+
32996 {6.1436801, 13.1156301}, //
+
32997 {6.14944983, 13.1213999}, //
+
32998 {6.15252018, 13.1244698}, //
+
32999 {6.15904999, 13.1309996}, //
+
33000 {6.16239023, 13.1343298}, //
+
33001 {6.16559982, 13.1375303}, //
+
33002 {6.16868019, 13.1406097}, //
+
33003 {6.17445993, 13.14639}, //
+
33004 {6.17715979, 13.1490898}, //
+
33005 {6.17972994, 13.1516705}, //
+
33006 {6.18217993, 13.1541204}, //
+
33007 {6.18450022, 13.1564503}, //
+
33008 {6.18596983, 13.1571598}, //
+
33009 {6.1873498, 13.1577902}, //
+
33010 {6.18865013, 13.1583405}, //
+
33011 {6.18985987, 13.1588001}, //
+
33012 {6.19098997, 13.1591797}, //
+
33013 {6.19202995, 13.1594696}, //
+
33014 {6.19298983, 13.1596804}, //
+
33015 {6.19386005, 13.1598101}, //
+
33016 {6.19465017, 13.1598501}, //
+
33017 {6.19611979, 13.1605997}, //
+
33018 {6.19750023, 13.1613398}, //
+
33019 {6.1988101, 13.1620903}, //
+
33020 {6.20001984, 13.1628399}, //
+
33021 {6.20115995, 13.1635904}, //
+
33022 {6.20220995, 13.16434}, //
+
33023 {6.20316982, 13.1650896}, //
+
33024 {6.20405006, 13.1658497}, //
+
33025 {6.2048502, 13.1666002}, //
+
33026 {6.20748997, 13.16924}, //
+
33027 {6.20852995, 13.17029}, //
+
33028 {6.20966005, 13.1714296}, //
+
33029 {6.21086979, 13.1726398}, //
+
33030 {6.21217012, 13.1739502}, //
+
33031 {6.21354008, 13.1753302}, //
+
33032 {6.21500015, 13.1767998}, //
+
33033 {6.21494007, 13.1783199}, //
+
33034 {6.21474981, 13.1798801}, //
+
33035 {6.21442986, 13.1814899}, //
+
33036 {6.21399021, 13.1831398}, //
+
33037 {6.21342993, 13.1848202}, //
+
33038 {6.21272993, 13.1865597}, //
+
33039 {6.21190977, 13.1883297}, //
+
33040 {6.21096992, 13.1901398}, //
+
33041 {6.2098999, 13.1920004}, //
+
33042 {6.20877981, 13.1938496}, //
+
33043 {6.20765018, 13.19561}, //
+
33044 {6.20653009, 13.1972904}, //
+
33045 {6.20539999, 13.1988802}, //
+
33046 {6.20426989, 13.2004004}, //
+
33047 {6.20313978, 13.2018204}, //
+
33048 {6.20201015, 13.2031698}, //
+
33049 {6.20088005, 13.2044201}, //
+
33050 {6.19974995, 13.2055998}, //
+
33051 {6.19859982, 13.2066698}, //
+
33052 {6.19740009, 13.2076101}, //
+
33053 {6.19616985, 13.2084303}, //
+
33054 {6.19489002, 13.2091303}, //
+
33055 {6.19357014, 13.2096901}, //
+
33056 {6.19222021, 13.2101297}, //
+
33057 {6.19082022, 13.2104502}, //
+
33058 {6.18938017, 13.21064}, //
+
33059 {6.18790007, 13.2107}, //
+
33060 {6.18622017, 13.2090197}, //
+
33061 {6.18525982, 13.2080603}, //
+
33062 {6.18185997, 13.2046604}, //
+
33063 {6.17917013, 13.2019701}, //
+
33064 {6.17770004, 13.2004995}, //
+
33065 {6.17623997, 13.1990004}, //
+
33066 {6.17487001, 13.1975002}, //
+
33067 {6.17357016, 13.1959896}, //
+
33068 {6.17235994, 13.1944904}, //
+
33069 {6.17122984, 13.1929798}, //
+
33070 {6.17018986, 13.1914797}, //
+
33071 {6.16922998, 13.18997}, //
+
33072 {6.16835022, 13.1884604}, //
+
33073 {6.16755009, 13.1869497}, //
+
33074 {6.16679001, 13.1847801}, //
+
33075 {6.16603994, 13.1827698}, //
+
33076 {6.16527987, 13.1809301}, //
+
33077 {6.1645298, 13.1792603}, //
+
33078 {6.1637702, 13.1777601}, //
+
33079 {6.16302013, 13.1764202}, //
+
33080 {6.16226006, 13.1752396}, //
+
33081 {6.16150999, 13.1742401}, //
+
33082 {6.16074991, 13.1733999}, //
+
33083 {6.1606698, 13.1732302}, //
+
33084 {6.16056013, 13.1730204}, //
+
33085 {6.16040993, 13.1727304}, //
+
33086 {6.15904999, 13.1700001}, //
+
33087 {6.15865993, 13.16924}, //
+
33088 {6.15822983, 13.1684904}, //
+
33089 {6.15776014, 13.1677303}, //
+
33090 {6.15723991, 13.1669798}, //
+
33091 {6.15668011, 13.1662197}, //
+
33092 {6.15607023, 13.1654701}, //
+
33093 {6.15541983, 13.16471}, //
+
33094 {6.15472984, 13.1639605}, //
+
33095 {6.15399981, 13.1632004}, //
+
33096 {6.15399981, 13.1666002}, //
+
33097 {6.15407991, 13.17033}, //
+
33098 {6.15432978, 13.1739702}, //
+
33099 {6.15474987, 13.1775303}, //
+
33100 {6.15533018, 13.1809998}, //
+
33101 {6.15607977, 13.1843996}, //
+
33102 {6.15700006, 13.1877098}, //
+
33103 {6.1580801, 13.1909399}, //
+
33104 {6.15932989, 13.1940899}, //
+
33105 {6.16074991, 13.1971502}, //
+
33106 {6.16145992, 13.1993599}, //
+
33107 {6.16208982, 13.2014999}, //
+
33108 {6.16264009, 13.2035398}, //
+
33109 {6.16309977, 13.2055101}, //
+
33110 {6.1634798, 13.2073898}, //
+
33111 {6.1637702, 13.2091904}, //
+
33112 {6.16398001, 13.2109098}, //
+
33113 {6.16411018, 13.2125502}, //
+
33114 {6.16415024, 13.2140999}, //
+
33115 {6.16413021, 13.2149296}, //
+
33116 {6.16407013, 13.2159204}, //
+
33117 {6.16395998, 13.2170897}, //
+
33118 {6.16380978, 13.21842}, //
+
33119 {6.16363001, 13.2199202}, //
+
33120 {6.16339016, 13.22159}, //
+
33121 {6.16311979, 13.2234201}, //
+
33122 {6.16280985, 13.2254295}, //
+
33123 {6.16244984, 13.2276001}, //
+
33124 {6.16204977, 13.2298203}, //
+
33125 {6.16161013, 13.2319698}, //
+
33126 {6.16112995, 13.2340202}, //
+
33127 {6.16060019, 13.2360001}, //
+
33128 {6.1600399, 13.2378798}, //
+
33129 {6.15943003, 13.2396898}, //
+
33130 {6.1587801, 13.2414103}, //
+
33131 {6.1580801, 13.2430496}, //
+
33132 {6.15735006, 13.2446003}, //
+
33133 {6.1566, 13.2460699}, //
+
33134 {6.15585995, 13.2474499}, //
+
33135 {6.15510988, 13.2487497}, //
+
33136 {6.15435982, 13.2499599}, //
+
33137 {6.15361023, 13.25109}, //
+
33138 {6.15286016, 13.2521296}, //
+
33139 {6.1521101, 13.2530899}, //
+
33140 {6.15135002, 13.2539597}, //
+
33141 {6.15059996, 13.2547503}, //
+
33142 {6.14724016, 13.25811}, //
+
33143 {6.14720011, 13.2581501}, //
+
33144 {6.14566994, 13.2589102}, //
+
33145 {6.14409018, 13.2596598}, //
+
33146 {6.1424799, 13.2604198}, //
+
33147 {6.14082003, 13.2611704}, //
+
33148 {6.1391201, 13.2619305}, //
+
33149 {6.13738012, 13.2626801}, //
+
33150 {6.13559008, 13.2634401}, //
+
33151 {6.13376999, 13.2641897}, //
+
33152 {6.13189983, 13.2649498}, //
+
33153 {6.13000011, 13.2655802}, //
+
33154 {6.12805986, 13.2659597}, //
+
33155 {6.12608004, 13.2660799}, //
+
33156 {6.12405014, 13.2659597}, //
+
33157 {6.1219902, 13.2655802}, //
+
33158 {6.1198802, 13.2649498}, //
+
33159 {6.11773014, 13.2640696}, //
+
33160 {6.11553001, 13.2629404}, //
+
33161 {6.11329985, 13.2615499}, //
+
33162 {6.11106014, 13.2608204}, //
+
33163 {6.10887003, 13.2601204}, //
+
33164 {6.10671997, 13.25947}, //
+
33165 {6.10459995, 13.2588596}, //
+
33166 {6.10253, 13.2582998}, //
+
33167 {6.10050011, 13.2577696}, //
+
33168 {6.09850979, 13.2572899}, //
+
33169 {6.09656, 13.2568502}, //
+
33170 {6.09464979, 13.2564497}, //
+
33171 {6.09278011, 13.2560701}, //
+
33172 {6.09096003, 13.2556896}, //
+
33173 {6.08916998, 13.2553196}, //
+
33174 {6.08743, 13.25494}, //
+
33175 {6.08573008, 13.2545605}, //
+
33176 {6.08407021, 13.25418}, //
+
33177 {6.08245993, 13.2538099}, //
+
33178 {6.08088017, 13.2534304}, //
+
33179 {6.07934999, 13.2530499}, //
+
33180 {6.07792997, 13.2527504}, //
+
33181 {6.07668018, 13.2525597}, //
+
33182 {6.07560015, 13.2525101}, //
+
33183 {6.07467985, 13.2525702}, //
+
33184 {6.07392979, 13.2527599}, //
+
33185 {6.07334995, 13.2530699}, //
+
33186 {6.07292986, 13.2535105}, //
+
33187 {6.07268, 13.2540703}, //
+
33188 {6.07259989, 13.2547503}, //
+
33189 {6.07259989, 13.2598495}, //
+
33190 {6.07255983, 13.26021}, //
+
33191 {6.07243013, 13.26052}, //
+
33192 {6.07221985, 13.2607899}, //
+
33193 {6.07192993, 13.2610302}, //
+
33194 {6.07154989, 13.2612104}, //
+
33195 {6.07109022, 13.2613602}, //
+
33196 {6.07053995, 13.2614698}, //
+
33197 {6.06991005, 13.2615299}, //
+
33198 {6.06920004, 13.2615499}, //
+
33199 {6.06844997, 13.2614698}, //
+
33200 {6.06770992, 13.2612104}, //
+
33201 {6.06695986, 13.2607899}, //
+
33202 {6.06620979, 13.26021}, //
+
33203 {6.06546021, 13.25945}, //
+
33204 {6.06471014, 13.2585297}, //
+
33205 {6.06396008, 13.2574396}, //
+
33206 {6.0632, 13.2561798}, //
+
33207 {6.06244993, 13.2547503}, //
+
33208 {6.06083012, 13.2524099}, //
+
33209 {6.05901003, 13.2498999}, //
+
33210 {6.05698013, 13.2472296}, //
+
33211 {6.05473995, 13.24438}, //
+
33212 {6.05228996, 13.2413702}, //
+
33213 {6.04963017, 13.2381897}, //
+
33214 {6.04676008, 13.2348499}, //
+
33215 {6.04368019, 13.2313299}, //
+
33216 {6.04040003, 13.2276497}, //
+
33217 {6.03699017, 13.2239304}, //
+
33218 {6.03353977, 13.2202797}, //
+
33219 {6.03003979, 13.2167301}, //
+
33220 {6.02650976, 13.2132502}, //
+
33221 {6.02293015, 13.2098703}, //
+
33222 {6.01931, 13.2065601}, //
+
33223 {6.0156498, 13.2033396}, //
+
33224 {6.01195002, 13.2002001}, //
+
33225 {6.00820017, 13.1971502}, //
+
33226 {6.00438976, 13.1939602}, //
+
33227 {6.0005002, 13.1904402}, //
+
33228 {5.99652004, 13.1865797}, //
+
33229 {5.99245977, 13.1823902}, //
+
33230 {5.98831987, 13.1778698}, //
+
33231 {5.98408985, 13.1730204}, //
+
33232 {5.9797802, 13.1678305}, //
+
33233 {5.97537994, 13.1623096}, //
+
33234 {5.97090006, 13.1564503}, //
+
33235 {5.96429014, 13.1498699}, //
+
33236 {5.9580102, 13.1437101}, //
+
33237 {5.95207024, 13.13797}, //
+
33238 {5.94645977, 13.1326504}, //
+
33239 {5.94118023, 13.1277504}, //
+
33240 {5.93623018, 13.12327}, //
+
33241 {5.93162012, 13.1192102}, //
+
33242 {5.92734003, 13.1155701}, //
+
33243 {5.92339993, 13.1123505}, //
+
33244 {5.91318989, 13.1070404}, //
+
33245 {5.90364981, 13.1016502}, //
+
33246 {5.89478016, 13.0961704}, //
+
33247 {5.88657999, 13.0906}, //
+
33248 {5.87903976, 13.0849504}, //
+
33249 {5.87217999, 13.0792198}, //
+
33250 {5.86598015, 13.0733995}, //
+
33251 {5.8604598, 13.0674896}, //
+
33252 {5.85559988, 13.0614996}, //
+
33253 {5.85129023, 13.0556002}, //
+
33254 {5.84740019, 13.0499496}, //
+
33255 {5.84392023, 13.0445604}, //
+
33256 {5.8408699, 13.0394096}, //
+
33257 {5.83824015, 13.0345097}, //
+
33258 {5.83601999, 13.0298595}, //
+
33259 {5.83422995, 13.0254498}, //
+
33260 {5.83284998, 13.0213003}, //
+
33261 {5.83190012, 13.0173998}, //
+
33262 {5.83114004, 13.0158997}, //
+
33263 {5.83038998, 13.0143995}, //
+
33264 {5.8296299, 13.0128899}, //
+
33265 {5.82887983, 13.0113897}, //
+
33266 {5.82812023, 13.0098801}, //
+
33267 {5.82737017, 13.0083799}, //
+
33268 {5.82661009, 13.0068703}, //
+
33269 {5.82586002, 13.0053596}, //
+
33270 {5.82509995, 13.00385}, //
+
33271 {5.82433987, 13.00247}, //
+
33272 {5.8235898, 13.0013504}, //
+
33273 {5.8228302, 13.0004702}, //
+
33274 {5.82208014, 12.9998503}, //
+
33275 {5.82132006, 12.9994698}, //
+
33276 {5.82056999, 12.9993401}, //
+
33277 {5.81980991, 12.9994602}, //
+
33278 {5.81905985, 12.9998302}, //
+
33279 {5.81829977, 13.0004501}, //
+
33280 {5.79460001, 13.0310001}, //
+
33281 {5.7505002, 13.0614996}, //
+
33282 {5.75335979, 13.0637102}, //
+
33283 {5.75593996, 13.0658503}, //
+
33284 {5.7582202, 13.0678902}, //
+
33285 {5.76020002, 13.0698605}, //
+
33286 {5.76189995, 13.0717402}, //
+
33287 {5.76329994, 13.0735397}, //
+
33288 {5.76441002, 13.0752602}, //
+
33289 {5.76523018, 13.0768995}, //
+
33290 {5.76574993, 13.0784502}, //
+
33291 {5.76610994, 13.0799999}, //
+
33292 {5.76641989, 13.0816402}, //
+
33293 {5.76668978, 13.0833597}, //
+
33294 {5.7669301, 13.0851603}, //
+
33295 {5.76710987, 13.0870399}, //
+
33296 {5.76726007, 13.0890102}, //
+
33297 {5.76737022, 13.0910501}, //
+
33298 {5.76742983, 13.0931902}, //
+
33299 {5.76744986, 13.0953999}, //
+
33300 {5.76675987, 13.0969105}, //
+
33301 {5.76619005, 13.0984201}, //
+
33302 {5.76574993, 13.0999298}, //
+
33303 {5.76543999, 13.1014299}, //
+
33304 {5.76525021, 13.1029396}, //
+
33305 {5.76518011, 13.1044397}, //
+
33306 {5.76525021, 13.1059504}, //
+
33307 {5.76543999, 13.1074495}, //
+
33308 {5.76574993, 13.1089497}, //
+
33309 {5.76619005, 13.1104603}, //
+
33310 {5.76675987, 13.1119699}, //
+
33311 {5.76744986, 13.1134796}, //
+
33312 {5.76827002, 13.1149902}, //
+
33313 {5.76920986, 13.1165104}, //
+
33314 {5.77027988, 13.1180201}, //
+
33315 {5.77148008, 13.1195297}, //
+
33316 {5.77279997, 13.1210403}, //
+
33317 {5.77425003, 13.12255}, //
+
33318 {5.77952003, 13.1271095}, //
+
33319 {5.78479004, 13.1317596}, //
+
33320 {5.79006004, 13.1364899}, //
+
33321 {5.79533005, 13.1413002}, //
+
33322 {5.80060005, 13.1462002}, //
+
33323 {5.80587006, 13.1511698}, //
+
33324 {5.81115007, 13.15623}, //
+
33325 {5.81642008, 13.1613703}, //
+
33326 {5.8217001, 13.1666002}, //
+
33327 {5.82694006, 13.17171}, //
+
33328 {5.8320899, 13.1764803}, //
+
33329 {5.83716011, 13.1809196}, //
+
33330 {5.8421402, 13.1850204}, //
+
33331 {5.84704018, 13.1887903}, //
+
33332 {5.85186005, 13.1922197}, //
+
33333 {5.85658979, 13.1953201}, //
+
33334 {5.86123991, 13.1980801}, //
+
33335 {5.8657999, 13.2004995}, //
+
33336 {5.87045002, 13.2028503}, //
+
33337 {5.87535, 13.2053699}, //
+
33338 {5.88048983, 13.2080498}, //
+
33339 {5.88589001, 13.2109003}, //
+
33340 {5.89154005, 13.2139196}, //
+
33341 {5.89743996, 13.2171001}, //
+
33342 {5.90360022, 13.2204504}, //
+
33343 {5.90999985, 13.2239704}, //
+
33344 {5.91664982, 13.2276497}, //
+
33345 {5.92113018, 13.2299099}, //
+
33346 {5.92552996, 13.2321596}, //
+
33347 {5.92984009, 13.2344198}, //
+
33348 {5.93407011, 13.2366695}, //
+
33349 {5.93821001, 13.2389297}, //
+
33350 {5.9422698, 13.2411804}, //
+
33351 {5.94624996, 13.2434397}, //
+
33352 {5.95014, 13.2456903}, //
+
33353 {5.95394993, 13.2479496}, //
+
33354 {5.95763016, 13.2501297}, //
+
33355 {5.96115017, 13.2521496}, //
+
33356 {5.96448994, 13.2539902}, //
+
33357 {5.96766996, 13.2556696}, //
+
33358 {5.97068024, 13.2571802}, //
+
33359 {5.97352982, 13.2585297}, //
+
33360 {5.9762001, 13.2596998}, //
+
33361 {5.97871017, 13.2607098}, //
+
33362 {5.98105001, 13.2615499}, //
+
33363 {5.98337984, 13.2630997}, //
+
33364 {5.98582983, 13.26474}, //
+
33365 {5.98841, 13.2664604}, //
+
33366 {5.99110985, 13.26826}, //
+
33367 {5.99393988, 13.2701397}, //
+
33368 {5.99689007, 13.27211}, //
+
33369 {5.99996996, 13.2741499}, //
+
33370 {6.00317001, 13.2762899}, //
+
33371 {6.00649977, 13.2784996}, //
+
33372 {6.00989008, 13.2807598}, //
+
33373 {6.01667023, 13.2852697}, //
+
33374 {6.02006006, 13.2875204}, //
+
33375 {6.02343988, 13.2897797}, //
+
33376 {6.0268302, 13.2920303}, //
+
33377 {6.03022003, 13.2942896}, //
+
33378 {6.03360987, 13.2965403}, //
+
33379 {6.03700018, 13.2988005}, //
+
33380 {6.04023981, 13.3009796}, //
+
33381 {6.04319, 13.3030005}, //
+
33382 {6.0458498, 13.3048401}, //
+
33383 {6.04821014, 13.3065205}, //
+
33384 {6.05029011, 13.3080301}, //
+
33385 {6.05207014, 13.3093796}, //
+
33386 {6.05354977, 13.3105497}, //
+
33387 {6.05474997, 13.3115597}, //
+
33388 {6.05565023, 13.3123999}, //
+
33389 {6.05568981, 13.3131599}, //
+
33390 {6.05581999, 13.3139095}, //
+
33391 {6.0560298, 13.3146696}, //
+
33392 {6.05632019, 13.3154202}, //
+
33393 {6.05670023, 13.3161802}, //
+
33394 {6.0571599, 13.3169298}, //
+
33395 {6.05771017, 13.3176899}, //
+
33396 {6.05834007, 13.3184404}, //
+
33397 {6.05905008, 13.3191996}, //
+
33398 {6.05978012, 13.3206596}, //
+
33399 {6.06048012, 13.3220301}, //
+
33400 {6.06113005, 13.3233299}, //
+
33401 {6.06173992, 13.3245401}, //
+
33402 {6.06230021, 13.3256702}, //
+
33403 {6.06282997, 13.3267097}, //
+
33404 {6.06331015, 13.3276701}, //
+
33405 {6.06374979, 13.3285503}, //
+
33406 {6.06414986, 13.3293505}, //
+
33407 {6.06438017, 13.33002}, //
+
33408 {6.06432009, 13.3305302}, //
+
33409 {6.06396008, 13.3308601}, //
+
33410 {6.06331015, 13.3310299}, //
+
33411 {6.06236982, 13.3310299}, //
+
33412 {6.06113005, 13.3308601}, //
+
33413 {6.05959988, 13.3305302}, //
+
33414 {6.05776978, 13.33002}, //
+
33415 {6.05565023, 13.3293505}, //
+
33416 {6.05341005, 13.32864}, //
+
33417 {6.05121994, 13.3280096}, //
+
33418 {6.04906988, 13.3274603}, //
+
33419 {6.04694986, 13.3269997}, //
+
33420 {6.04487991, 13.3266201}, //
+
33421 {6.04285002, 13.3263302}, //
+
33422 {6.04086018, 13.3261204}, //
+
33423 {6.03890991, 13.3259897}, //
+
33424 {6.03700018, 13.3259497}, //
+
33425 {6.03518009, 13.3259697}, //
+
33426 {6.03349018, 13.3260298}, //
+
33427 {6.03192997, 13.3261404}, //
+
33428 {6.03048992, 13.3262901}, //
+
33429 {6.02917004, 13.3264704}, //
+
33430 {6.02797985, 13.3267097}, //
+
33431 {6.02690983, 13.3269796}, //
+
33432 {6.02596998, 13.3272896}, //
+
33433 {6.02514982, 13.3276501}, //
+
33434 {6.02451992, 13.3280497}, //
+
33435 {6.02413988, 13.3284903}, //
+
33436 {6.0240202, 13.32897}, //
+
33437 {6.02413988, 13.3295002}, //
+
33438 {6.02451992, 13.33006}, //
+
33439 {6.02514982, 13.3306704}, //
+
33440 {6.02603006, 13.3313198}, //
+
33441 {6.02716017, 13.3320198}, //
+
33442 {6.02855015, 13.3327503}, //
+
33443 {6.02927017, 13.3335304}, //
+
33444 {6.02996016, 13.3343401}, //
+
33445 {6.03060007, 13.3352003}, //
+
33446 {6.03119993, 13.3360996}, //
+
33447 {6.03176022, 13.3370399}, //
+
33448 {6.03227997, 13.3380203}, //
+
33449 {6.03276014, 13.3390398}, //
+
33450 {6.03319979, 13.3401003}, //
+
33451 {6.03359985, 13.3411999}, //
+
33452 {6.03397989, 13.34237}, //
+
33453 {6.03435993, 13.3436298}, //
+
33454 {6.03472996, 13.3449697}, //
+
33455 {6.03511, 13.3464003}, //
+
33456 {6.03549004, 13.3479004}, //
+
33457 {6.03587008, 13.3494902}, //
+
33458 {6.0362401, 13.35116}, //
+
33459 {6.03662014, 13.35291}, //
+
33460 {6.03700018, 13.3547497}, //
+
33461 {6.03736019, 13.3565798}, //
+
33462 {6.03767014, 13.3582802}, //
+
33463 {6.03794003, 13.3598499}, //
+
33464 {6.03817987, 13.3613005}, //
+
33465 {6.03836012, 13.3626204}, //
+
33466 {6.03850985, 13.3638201}, //
+
33467 {6.03862, 13.3648901}, //
+
33468 {6.03868008, 13.3658304}, //
+
33469 {6.0387001, 13.3666496}, //
+
33470 {6.0387001, 13.3700504}, //
+
33471 {6.03876019, 13.3700895}, //
+
33472 {6.03894997, 13.3702202}, //
+
33473 {6.03926992, 13.37043}, //
+
33474 {6.03971004, 13.3707199}, //
+
33475 {6.04026985, 13.3711004}, //
+
33476 {6.04179001, 13.3721104}, //
+
33477 {6.04272985, 13.3727398}, //
+
33478 {6.04379988, 13.3734503}, //
+
33479 {6.04492998, 13.3741999}, //
+
33480 {6.04606009, 13.3749599}, //
+
33481 {6.04719019, 13.3757095}, //
+
33482 {6.05058002, 13.3779602}, //
+
33483 {6.05170012, 13.3787098}, //
+
33484 {6.05283022, 13.3794498}, //
+
33485 {6.05394983, 13.3802004}, //
+
33486 {6.05507994, 13.3809605}, //
+
33487 {6.05621004, 13.3817101}, //
+
33488 {6.05734015, 13.3824701}, //
+
33489 {6.05846977, 13.3832197}, //
+
33490 {6.05959988, 13.3839798}, //
+
33491 {6.06072998, 13.3847303}, //
+
33492 {6.06185007, 13.3854904}, //
+
33493 {6.06298018, 13.38624}, //
+
33494 {6.06409979, 13.3870001}, //
+
33495 {6.06520987, 13.3877296}, //
+
33496 {6.06627989, 13.3884296}, //
+
33497 {6.06730986, 13.38908}, //
+
33498 {6.06829977, 13.3896904}, //
+
33499 {6.06924009, 13.3902502}, //
+
33500 {6.07013988, 13.3907804}, //
+
33501 {6.0710001, 13.3912601}, //
+
33502 {6.07181978, 13.3916998}, //
+
33503 {6.07259989, 13.3921003}, //
+
33504 {6.0733099, 13.3924599}, //
+
33505 {6.0739398, 13.3927698}, //
+
33506 {6.07449007, 13.3930397}, //
+
33507 {6.07495022, 13.39328}, //
+
33508 {6.07532978, 13.3934603}, //
+
33509 {6.07600021, 13.3937998}, //
+
33510 {6.07603979, 13.3930702}, //
+
33511 {6.07616997, 13.3923702}, //
+
33512 {6.07637978, 13.3917198}, //
+
33513 {6.07667017, 13.3911104}, //
+
33514 {6.07705021, 13.3905497}, //
+
33515 {6.07750988, 13.3900204}, //
+
33516 {6.07806015, 13.3895397}, //
+
33517 {6.07869005, 13.3891001}, //
+
33518 {6.07940006, 13.3886995}, //
+
33519 {6.08015013, 13.3882999}, //
+
33520 {6.08091021, 13.3878603}, //
+
33521 {6.08165979, 13.3873796}, //
+
33522 {6.08240986, 13.3868504}, //
+
33523 {6.08315992, 13.3862896}, //
+
33524 {6.08390999, 13.3856802}, //
+
33525 {6.08466005, 13.3850298}, //
+
33526 {6.0854001, 13.3843298}, //
+
33527 {6.08615017, 13.3836002}, //
+
33528 {6.08836985, 13.3828001}, //
+
33529 {6.09050989, 13.3819199}, //
+
33530 {6.09256983, 13.3809605}, //
+
33531 {6.09454012, 13.3799105}, //
+
33532 {6.09641981, 13.3787699}, //
+
33533 {6.09821987, 13.3775597}, //
+
33534 {6.09992981, 13.3762503}, //
+
33535 {6.10156012, 13.3748703}, //
+
33536 {6.10309982, 13.3733997}, //
+
33537 {6.1044898, 13.3718996}, //
+
33538 {6.10561991, 13.3704004}, //
+
33539 {6.10650015, 13.3689003}, //
+
33540 {6.10713005, 13.3674002}, //
+
33541 {6.10751009, 13.3659}, //
+
33542 {6.10762978, 13.3643999}, //
+
33543 {6.10751009, 13.3628998}, //
+
33544 {6.10713005, 13.3613997}, //
+
33545 {6.10650015, 13.3599005}, //
+
33546 {6.10646009, 13.3590603}, //
+
33547 {6.10632992, 13.3580503}, //
+
33548 {6.10613012, 13.3568802}, //
+
33549 {6.10584021, 13.3555298}, //
+
33550 {6.10547018, 13.3540201}, //
+
33551 {6.10501003, 13.3523397}, //
+
33552 {6.10446978, 13.3505001}, //
+
33553 {6.10384989, 13.3484802}, //
+
33554 {6.10314989, 13.3463001}, //
+
33555 {6.10171986, 13.34554}, //
+
33556 {6.10046005, 13.3447905}, //
+
33557 {6.09937, 13.3440304}, //
+
33558 {6.09845018, 13.3432798}, //
+
33559 {6.09769011, 13.3425198}, //
+
33560 {6.09710979, 13.3417702}, //
+
33561 {6.09669018, 13.3410101}, //
+
33562 {6.09642982, 13.3402596}, //
+
33563 {6.09635019, 13.3395004}, //
+
33564 {6.09647989, 13.3387499}, //
+
33565 {6.09684992, 13.3380098}, //
+
33566 {6.09747982, 13.3372602}, //
+
33567 {6.09835005, 13.3365097}, //
+
33568 {6.09948015, 13.3357601}, //
+
33569 {6.10086012, 13.3350096}, //
+
33570 {6.10248995, 13.33426}, //
+
33571 {6.10437012, 13.3334999}, //
+
33572 {6.10650015, 13.3327503}, //
+
33573 {6.10804987, 13.3320398}, //
+
33574 {6.10969019, 13.3314104}, //
+
33575 {6.11141014, 13.3308601}, //
+
33576 {6.1132102, 13.3304005}, //
+
33577 {6.11508989, 13.33002}, //
+
33578 {6.11706018, 13.32973}, //
+
33579 {6.11910009, 13.3295202}, //
+
33580 {6.12124014, 13.3293896}, //
+
33581 {6.1234498, 13.3293505}, //
+
33582 {6.14379978, 13.3293505}, //
+
33583 {6.14604998, 13.33004}, //
+
33584 {6.1482501, 13.3306103}, //
+
33585 {6.15041018, 13.3310499}, //
+
33586 {6.15252018, 13.3313599}, //
+
33587 {6.15459013, 13.3315496}, //
+
33588 {6.15662003, 13.3316202}, //
+
33589 {6.15860987, 13.3315496}, //
+
33590 {6.16055012, 13.3313599}, //
+
33591 {6.16244984, 13.3310499}, //
+
33592 {6.16422987, 13.3306904}, //
+
33593 {6.16717005, 13.3301096}, //
+
33594 {6.17001009, 13.3295403}, //
+
33595 {6.17052984, 13.3294296}, //
+
33596 {6.1708498, 13.3293695}, //
+
33597 {6.17094994, 13.3293505}, //
+
33598 {6.1717, 13.3278503}, //
+
33599 {6.17246008, 13.3263502}, //
+
33600 {6.17321014, 13.3248396}, //
+
33601 {6.17396021, 13.3233404}, //
+
33602 {6.1747098, 13.3218298}, //
+
33603 {6.17545986, 13.3203297}, //
+
33604 {6.17620993, 13.31882}, //
+
33605 {6.17694998, 13.3173103}, //
+
33606 {6.17770004, 13.3157997}, //
+
33607 {6.18450022, 13.309}, //
+
33608 {6.18521023, 13.3082504}, //
+
33609 {6.18584013, 13.3075104}, //
+
33610 {6.18638992, 13.3067598}, //
+
33611 {6.18685007, 13.3060102}, //
+
33612 {6.18723011, 13.3052597}, //
+
33613 {6.18752003, 13.3045101}, //
+
33614 {6.18772984, 13.3037596}, //
+
33615 {6.18786001, 13.3030005}, //
+
33616 {6.18790007, 13.3022499}, //
+
33617 {6.18792009, 13.3014898}, //
+
33618 {6.18798018, 13.3007402}, //
+
33619 {6.18808985, 13.2999802}, //
+
33620 {6.18824005, 13.2992296}, //
+
33621 {6.18841982, 13.2984695}, //
+
33622 {6.18866014, 13.29772}, //
+
33623 {6.18893003, 13.2969599}, //
+
33624 {6.18923998, 13.2962103}, //
+
33625 {6.18959999, 13.2954502}, //
+
33626 {6.19000006, 13.2946901}, //
+
33627 {6.19044018, 13.2939396}, //
+
33628 {6.19091988, 13.2931805}, //
+
33629 {6.19144011, 13.2924299}, //
+
33630 {6.19199991, 13.2916698}, //
+
33631 {6.19259977, 13.2909203}, //
+
33632 {6.19324017, 13.2901602}, //
+
33633 {6.19393015, 13.2894096}, //
+
33634 {6.19465017, 13.2886496}, //
+
33635 {6.19536018, 13.2879}, //
+
33636 {6.19599009, 13.2871599}, //
+
33637 {6.19653988, 13.2864103}, //
+
33638 {6.19700003, 13.2856598}, //
+
33639 {6.19738007, 13.2849102}, //
+
33640 {6.19766998, 13.2841597}, //
+
33641 {6.19787979, 13.2834101}, //
+
33642 {6.19800997, 13.28265}, //
+
33643 {6.19805002, 13.2819004}, //
+
33644 {6.20334005, 13.2766104}, //
+
33645 {6.2048502, 13.2750998}, //
+
33646 {6.20701981, 13.2742205}, //
+
33647 {6.20903015, 13.2730904}, //
+
33648 {6.21086979, 13.2717104}, //
+
33649 {6.21254015, 13.2700701}, //
+
33650 {6.2140398, 13.2681904}, //
+
33651 {6.21538019, 13.2660599}, //
+
33652 {6.21655989, 13.26367}, //
+
33653 {6.21755981, 13.2610397}, //
+
33654 {6.2184, 13.2581501}, //
+
33655 {6.21989012, 13.25667}, //
+
33656 {6.22134018, 13.2552299}, //
+
33657 {6.22274017, 13.25383}, //
+
33658 {6.22410011, 13.2524796}, //
+
33659 {6.22542, 13.2511597}, //
+
33660 {6.22668982, 13.2498798}, //
+
33661 {6.22792006, 13.2486496}, //
+
33662 {6.22910976, 13.2474499}, //
+
33663 {6.23024988, 13.2462997}, //
+
33664 {6.23140001, 13.2451897}, //
+
33665 {6.23260021, 13.2441196}, //
+
33666 {6.23383999, 13.2430897}, //
+
33667 {6.23511982, 13.2420998}, //
+
33668 {6.23644018, 13.2411604}, //
+
33669 {6.23781013, 13.2402601}, //
+
33670 {6.23921013, 13.2393999}, //
+
33671 {6.24066019, 13.2385798}, //
+
33672 {6.24214983, 13.2377996}, //
+
33673 {6.24287987, 13.2370901}, //
+
33674 {6.24356985, 13.2364597}, //
+
33675 {6.24421978, 13.2359104}, //
+
33676 {6.24483013, 13.2354498}, //
+
33677 {6.24538994, 13.2350702}, //
+
33678 {6.24591017, 13.2347803}, //
+
33679 {6.24637985, 13.2345695}, //
+
33680 {6.24680996, 13.2344398}, //
+
33681 {6.24720001, 13.2343998}, //
+
33682 {6.25400019, 13.2343998}, //
+
33683 {6.2544198, 13.2343597}, //
+
33684 {6.25492001, 13.23423}, //
+
33685 {6.25550985, 13.2340202}, //
+
33686 {6.25617981, 13.2337303}, //
+
33687 {6.25693989, 13.2333498}, //
+
33688 {6.25778008, 13.2328901}, //
+
33689 {6.25869989, 13.2323399}, //
+
33690 {6.25970984, 13.2317104}, //
+
33691 {6.26079988, 13.2309999}, //
+
33692 {6.26190996, 13.2302103}, //
+
33693 {6.26297998, 13.2293396}, //
+
33694 {6.26400995, 13.2283802}, //
+
33695 {6.26498985, 13.2273397}, //
+
33696 {6.26593018, 13.2262096}, //
+
33697 {6.26681995, 13.2250004}, //
+
33698 {6.26767015, 13.2236996}, //
+
33699 {6.26847982, 13.2223196}, //
+
33700 {6.26924992, 13.22085}, //
+
33701 {6.27283001, 13.2171001}, //
+
33702 {6.27603006, 13.2133999}, //
+
33703 {6.27886009, 13.2097397}, //
+
33704 {6.28130007, 13.2061195}, //
+
33705 {6.28338003, 13.2025404}, //
+
33706 {6.28506994, 13.1990099}, //
+
33707 {6.28638983, 13.1955099}, //
+
33708 {6.28733015, 13.1920605}, //
+
33709 {6.28789997, 13.1886501}, //
+
33710 {6.28825998, 13.1852798}, //
+
33711 {6.28856993, 13.1819601}, //
+
33712 {6.28883982, 13.1786699}, //
+
33713 {6.28908014, 13.1754303}, //
+
33714 {6.28925991, 13.1722298}, //
+
33715 {6.28941011, 13.1690702}, //
+
33716 {6.28951979, 13.1659603}, //
+
33717 {6.28957987, 13.1628799}, //
+
33718 {6.2895999, 13.1598501}, //
+
33719 {6.2895999, 13.1462498}, //
+
33720 {6.28888988, 13.1455002}, //
+
33721 {6.28825998, 13.1447601}, //
+
33722 {6.28771019, 13.1440096}, //
+
33723 {6.28725004, 13.14326}, //
+
33724 {6.28687, 13.1425104}, //
+
33725 {6.28658009, 13.1417599}, //
+
33726 {6.2863698, 13.1410103}, //
+
33727 {6.2862401, 13.1402502}, //
+
33728 {6.28620005, 13.1394997}, //
+
33729 {6.28622007, 13.1387196}, //
+
33730 {6.28628016, 13.1379004}, //
+
33731 {6.28638983, 13.1370401}, //
+
33732 {6.28654003, 13.1361399}, //
+
33733 {6.2867198, 13.1351995}, //
+
33734 {6.28696012, 13.1342096}, //
+
33735 {6.28723001, 13.1331797}, //
+
33736 {6.28753996, 13.1321096}, //
+
33737 {6.28789997, 13.1309996}, //
+
33738 {6.28921986, 13.1270399}, //
+
33739 {6.2897501, 13.1254702}, //
+
33740 {6.29030991, 13.1237698}, //
+
33741 {6.29091978, 13.1219597}, //
+
33742 {6.29157019, 13.1200104}, //
+
33743 {6.29227018, 13.1179399}, //
+
33744 {6.29300022, 13.1157503}, //
+
33745 {6.2951498, 13.1120701}, //
+
33746 {6.29709005, 13.1085501}, //
+
33747 {6.29883003, 13.1051998}, //
+
33748 {6.30035019, 13.1020203}, //
+
33749 {6.30167007, 13.099}, //
+
33750 {6.30278015, 13.0961504}, //
+
33751 {6.30367994, 13.0934696}, //
+
33752 {6.30436993, 13.09095}, //
+
33753 {6.3048501, 13.0886002}, //
+
33754 {6.30521011, 13.0864296}, //
+
33755 {6.30552006, 13.0844202}, //
+
33756 {6.30578995, 13.0825796}, //
+
33757 {6.3060298, 13.0809097}, //
+
33758 {6.30621004, 13.0794096}, //
+
33759 {6.30635977, 13.0780697}, //
+
33760 {6.30646992, 13.07689}, //
+
33761 {6.30653, 13.0758896}, //
+
33762 {6.30655003, 13.0750504}, //
+
33763 {6.30655003, 13.0716496}, //
+
33764 {6.30659008, 13.0701303}, //
+
33765 {6.30671978, 13.0685596}, //
+
33766 {6.30693007, 13.0669603}, //
+
33767 {6.30721998, 13.0653}, //
+
33768 {6.30760002, 13.0636101}, //
+
33769 {6.30806017, 13.0618696}, //
+
33770 {6.30860996, 13.0600901}, //
+
33771 {6.30923986, 13.0582705}, //
+
33772 {6.30994987, 13.0564003}, //
+
33773 {6.31070995, 13.0545397}, //
+
33774 {6.31146002, 13.0527296}, //
+
33775 {6.3122201, 13.0509501}, //
+
33776 {6.31297016, 13.0492096}, //
+
33777 {6.31372976, 13.0475197}, //
+
33778 {6.31447983, 13.0458698}, //
+
33779 {6.31523991, 13.0442495}, //
+
33780 {6.31598997, 13.0426798}, //
+
33781 {6.31675005, 13.0411501}, //
+
33782 {6.31750011, 13.0397301}, //
+
33783 {6.31826019, 13.0384798}, //
+
33784 {6.31900978, 13.0374002}, //
+
33785 {6.31975985, 13.0364799}, //
+
33786 {6.32050991, 13.0357304}, //
+
33787 {6.32125998, 13.0351496}, //
+
33788 {6.32201004, 13.03473}, //
+
33789 {6.32275009, 13.0344801}, //
+
33790 {6.32350016, 13.0344}, //
+
33791 {6.32426023, 13.0351496}, //
+
33792 {6.32500982, 13.0358896}, //
+
33793 {6.3257699, 13.0366402}, //
+
33794 {6.32651997, 13.0373898}, //
+
33795 {6.32728004, 13.0381403}, //
+
33796 {6.32803011, 13.0388899}, //
+
33797 {6.32879019, 13.0396404}, //
+
33798 {6.32953978, 13.0403996}, //
+
33799 {6.33029985, 13.0411501}, //
+
33800 {6.33874989, 13.0495996}, //
+
33801 {6.33985996, 13.0506697}, //
+
33802 {6.34092999, 13.05161}, //
+
33803 {6.34195995, 13.0524302}, //
+
33804 {6.34294987, 13.0531301}, //
+
33805 {6.34389019, 13.05369}, //
+
33806 {6.34478998, 13.0541296}, //
+
33807 {6.3456502, 13.05445}, //
+
33808 {6.34646988, 13.0546398}, //
+
33809 {6.34724998, 13.0546999}, //
+
33810 {6.34796, 13.0546198}, //
+
33811 {6.3485899, 13.0543699}, //
+
33812 {6.34914017, 13.0539503}, //
+
33813 {6.34959984, 13.0533705}, //
+
33814 {6.34997988, 13.0526199}, //
+
33815 {6.35026979, 13.0516996}, //
+
33816 {6.35048008, 13.0506201}, //
+
33817 {6.35060978, 13.0493698}, //
+
33818 {6.35064983, 13.0479498}, //
+
33819 {6.34934998, 13.0415802}, //
+
33820 {6.34847021, 13.0360498}, //
+
33821 {6.34801006, 13.0313597}, //
+
33822 {6.34796, 13.0275002}, //
+
33823 {6.34834003, 13.0244799}, //
+
33824 {6.34914017, 13.0223103}, //
+
33825 {6.35035992, 13.0209703}, //
+
33826 {6.35199022, 13.0204601}, //
+
33827 {6.35405016, 13.0207996}, //
+
33828 {6.35405016, 13.0242004}, //
+
33829 {6.35480022, 13.0242205}, //
+
33830 {6.3555398, 13.0242796}, //
+
33831 {6.35628986, 13.0243902}, //
+
33832 {6.35703993, 13.0245399}, //
+
33833 {6.35778999, 13.0247202}, //
+
33834 {6.35854006, 13.0249596}, //
+
33835 {6.35929012, 13.0252304}, //
+
33836 {6.3600502, 13.0255404}, //
+
33837 {6.36079979, 13.0258999}, //
+
33838 {6.36152983, 13.0262604}, //
+
33839 {6.36222982, 13.0265703}, //
+
33840 {6.36288023, 13.0268402}, //
+
33841 {6.3634901, 13.0270796}, //
+
33842 {6.36404991, 13.0272598}, //
+
33843 {6.36458015, 13.0274096}, //
+
33844 {6.36505985, 13.0275202}, //
+
33845 {6.36549997, 13.0275803}, //
+
33846 {6.36590004, 13.0276003}, //
+
33847 {6.36626005, 13.0275602}, //
+
33848 {6.36657, 13.0274296}, //
+
33849 {6.36683989, 13.0272198}, //
+
33850 {6.36708021, 13.0269299}, //
+
33851 {6.36725998, 13.0265503}, //
+
33852 {6.36741018, 13.0260897}, //
+
33853 {6.36751986, 13.0255404}, //
+
33854 {6.36757994, 13.02491}, //
+
33855 {6.36759996, 13.0242004}, //
+
33856 {6.36755991, 13.0234003}, //
+
33857 {6.36743021, 13.0225201}, //
+
33858 {6.36721992, 13.0215597}, //
+
33859 {6.36693001, 13.0205202}, //
+
33860 {6.36654997, 13.0193901}, //
+
33861 {6.36608982, 13.0181799}, //
+
33862 {6.36554003, 13.01688}, //
+
33863 {6.36491013, 13.0155096}, //
+
33864 {6.36420012, 13.0140495}, //
+
33865 {6.36219978, 13.0076399}, //
+
33866 {6.36069012, 13.0019798}, //
+
33867 {6.35969019, 12.9970798}, //
+
33868 {6.35918999, 12.9929304}, //
+
33869 {6.35918999, 12.9895296}, //
+
33870 {6.35969019, 12.9868898}, //
+
33871 {6.36069012, 12.9850101}, //
+
33872 {6.36219978, 12.98388}, //
+
33873 {6.36420012, 12.9834995}, //
+
33874 {6.3656702, 12.9834604}, //
+
33875 {6.36705017, 12.9833298}, //
+
33876 {6.36835003, 12.98312}, //
+
33877 {6.36955976, 12.98283}, //
+
33878 {6.37068987, 12.9824495}, //
+
33879 {6.37172985, 12.9819899}, //
+
33880 {6.3726902, 12.9814396}, //
+
33881 {6.37355995, 12.9808102}, //
+
33882 {6.37435007, 12.9800997}, //
+
33883 {6.37506008, 12.97927}, //
+
33884 {6.37568998, 12.9782696}, //
+
33885 {6.37623978, 12.9771099}, //
+
33886 {6.37669992, 12.97577}, //
+
33887 {6.37707996, 12.9742603}, //
+
33888 {6.37736988, 12.9725904}, //
+
33889 {6.37758017, 12.9707499}, //
+
33890 {6.37770987, 12.96873}, //
+
33891 {6.37774992, 12.9665499}, //
+
33892 {6.37783003, 12.9658203}, //
+
33893 {6.3780899, 12.9651203}, //
+
33894 {6.37851, 12.9644699}, //
+
33895 {6.37908983, 12.9638596}, //
+
33896 {6.37984991, 12.9632998}, //
+
33897 {6.38077021, 12.9627705}, //
+
33898 {6.38185978, 12.9622898}, //
+
33899 {6.38312006, 12.9618502}, //
+
33900 {6.38455009, 12.9614496}, //
+
33901 {6.38602018, 12.9610996}, //
+
33902 {6.38740015, 12.9608002}, //
+
33903 {6.38870001, 12.9605303}, //
+
33904 {6.38991022, 12.96031}, //
+
33905 {6.39103985, 12.9601297}, //
+
33906 {6.39207983, 12.95998}, //
+
33907 {6.39304018, 12.9598799}, //
+
33908 {6.39390993, 12.9598198}, //
+
33909 {6.39470005, 12.9597998}, //
+
33910 {6.39546013, 12.9590902}, //
+
33911 {6.39621019, 12.9584599}, //
+
33912 {6.3969698, 12.9579096}, //
+
33913 {6.39771986, 12.9574499}, //
+
33914 {6.39847994, 12.9570704}, //
+
33915 {6.39923, 12.9567804}, //
+
33916 {6.39999008, 12.9565697}, //
+
33917 {6.40074015, 12.95644}, //
+
33918 {6.40150023, 12.9563999}, //
+
33919 {6.40221024, 12.9563599}, //
+
33920 {6.40284014, 12.9562302}, //
+
33921 {6.40338993, 12.9560204}, //
+
33922 {6.40385008, 12.9557304}, //
+
33923 {6.40423012, 12.9553499}, //
+
33924 {6.40452003, 12.9548903}, //
+
33925 {6.40472984, 12.95434}, //
+
33926 {6.40486002, 12.9537096}, //
+
33927 {6.40490007, 12.9530001}, //
+
33928 {6.4049201, 12.9522696}, //
+
33929 {6.40498018, 12.9515696}, //
+
33930 {6.40508986, 12.9509201}, //
+
33931 {6.40524006, 12.9503098}, //
+
33932 {6.40541983, 12.9497499}, //
+
33933 {6.40566015, 12.9492197}, //
+
33934 {6.40593004, 12.94874}, //
+
33935 {6.40623999, 12.9483004}, //
+
33936 {6.4066, 12.9478998}, //
+
33937 {6.40700006, 12.9475203}, //
+
33938 {6.40744019, 12.9471397}, //
+
33939 {6.40791988, 12.9467697}, //
+
33940 {6.40844011, 12.9463902}, //
+
33941 {6.40899992, 12.9460096}, //
+
33942 {6.40959978, 12.9456301}, //
+
33943 {6.41024017, 12.94526}, //
+
33944 {6.41093016, 12.9448795}, //
+
33945 {6.41165018, 12.9445}, //
+
33946 {6.41240978, 12.94415}, //
+
33947 {6.41315985, 12.9438496}, //
+
33948 {6.41391993, 12.9435797}, //
+
33949 {6.41466999, 12.9433603}, //
+
33950 {6.41543007, 12.9431801}, //
+
33951 {6.41618013, 12.9430304}, //
+
33952 {6.41694021, 12.9429302}, //
+
33953 {6.4176898, 12.9428701}, //
+
33954 {6.41844988, 12.9428501}, //
+
33955 {6.42694998, 12.9428501}, //
+
33956 {6.42730999, 12.9428301}, //
+
33957 {6.42761993, 12.94277}, //
+
33958 {6.42788982, 12.9426603}, //
+
33959 {6.42813015, 12.9425097}, //
+
33960 {6.42830992, 12.9423304}, //
+
33961 {6.42846012, 12.94209}, //
+
33962 {6.42856979, 12.9418201}, //
+
33963 {6.42862988, 12.9415102}, //
+
33964 {6.42866993, 12.9407902}, //
+
33965 {6.42873001, 12.9404802}, //
+
33966 {6.42883015, 12.9402103}, //
+
33967 {6.42897987, 12.93997}, //
+
33968 {6.42916012, 12.9397898}, //
+
33969 {6.42937994, 12.93964}, //
+
33970 {6.42964983, 12.9395304}, //
+
33971 {6.42995024, 12.9394703}, //
+
33972 {6.43030024, 12.9394503}, //
+
33973 {6.44894981, 12.9394503}, //
+
33974 {6.45206022, 12.9402905}, //
+
33975 {6.4553299, 12.9412899}, //
+
33976 {6.4587698, 12.9424696}, //
+
33977 {6.46236992, 12.9438105}, //
+
33978 {6.46613979, 12.9453096}, //
+
33979 {6.4700799, 12.9469805}, //
+
33980 {6.47419024, 12.9488201}, //
+
33981 {6.47845984, 12.9508305}, //
+
33982 {6.48290014, 12.9530001}, //
+
33983 {6.48586988, 12.9544697}, //
+
33984 {6.48874998, 12.9558496}, //
+
33985 {6.49155998, 12.9571505}, //
+
33986 {6.49426985, 12.9583597}, //
+
33987 {6.4969101, 12.9594898}, //
+
33988 {6.49946022, 12.9605303}, //
+
33989 {6.50192022, 12.9614897}, //
+
33990 {6.50430012, 12.9623604}, //
+
33991 {6.5065999, 12.96315}, //
+
33992 {6.50873995, 12.9637403}, //
+
33993 {6.51063013, 12.9639902}, //
+
33994 {6.51226997, 12.9639101}, //
+
33995 {6.51364994, 12.9635}, //
+
33996 {6.51479006, 12.9627504}, //
+
33997 {6.51566982, 12.9616604}, //
+
33998 {6.5163002, 12.9602404}, //
+
33999 {6.51667023, 12.9584904}, //
+
34000 {6.51679993, 12.9563999}, //
+
34001 {6.51655006, 12.9525499}, //
+
34002 {6.5158, 12.9485302}, //
+
34003 {6.5145402, 12.9443398}, //
+
34004 {6.51278019, 12.93999}, //
+
34005 {6.51051998, 12.9354696}, //
+
34006 {6.50776005, 12.9307804}, //
+
34007 {6.5044899, 12.9259195}, //
+
34008 {6.50072002, 12.9208899}, //
+
34009 {6.49644995, 12.9157}, //
+
34010 {6.4934001, 12.9111795}, //
+
34011 {6.49026012, 12.9066601}, //
+
34012 {6.48703003, 12.9021301}, //
+
34013 {6.48371983, 12.8976097}, //
+
34014 {6.48032999, 12.8930902}, //
+
34015 {6.47685003, 12.8885698}, //
+
34016 {6.47328997, 12.8840399}, //
+
34017 {6.46963978, 12.8795204}, //
+
34018 {6.46589994, 12.875}, //
+
34019 {6.46439981, 12.8720503}, //
+
34020 {6.46290016, 12.8692303}, //
+
34021 {6.46139002, 12.8665304}, //
+
34022 {6.45988989, 12.8639498}, //
+
34023 {6.45838022, 12.8614998}, //
+
34024 {6.45688009, 12.8591805}, //
+
34025 {6.45536995, 12.8569803}, //
+
34026 {6.45385981, 12.8549004}, //
+
34027 {6.45235014, 12.8529501}, //
+
34028 {6.45085001, 12.8511295}, //
+
34029 {6.44934988, 12.8494396}, //
+
34030 {6.44784021, 12.8478804}, //
+
34031 {6.44634008, 12.8464403}, //
+
34032 {6.44482994, 12.8451204}, //
+
34033 {6.44332981, 12.8439302}, //
+
34034 {6.44182014, 12.8428602}, //
+
34035 {6.44031, 12.8419199}, //
+
34036 {6.43879986, 12.8410997}, //
+
34037 {6.43808985, 12.8402996}, //
+
34038 {6.43745995, 12.8394203}, //
+
34039 {6.43691015, 12.83846}, //
+
34040 {6.43645, 12.8374205}, //
+
34041 {6.43606997, 12.8362904}, //
+
34042 {6.43578005, 12.8350801}, //
+
34043 {6.43556976, 12.8337803}, //
+
34044 {6.43544006, 12.8324099}, //
+
34045 {6.43540001, 12.8309498}, //
+
34046 {6.43540001, 12.8037996}, //
+
34047 {6.4353199, 12.8037205}, //
+
34048 {6.43130016, 12.7996998}, //
+
34049 {6.4286499, 12.7970505}, //
+
34050 {6.42791986, 12.7970104}, //
+
34051 {6.42721987, 12.7968798}, //
+
34052 {6.42656994, 12.79667}, //
+
34053 {6.42596006, 12.79638}, //
+
34054 {6.42539978, 12.7959995}, //
+
34055 {6.42487001, 12.7955399}, //
+
34056 {6.42438984, 12.7949896}, //
+
34057 {6.4239502, 12.7943602}, //
+
34058 {6.42355013, 12.7936497}, //
+
34059 {6.42319012, 12.7929201}, //
+
34060 {6.42288017, 12.7922201}, //
+
34061 {6.42260981, 12.7915697}, //
+
34062 {6.42236996, 12.7909603}, //
+
34063 {6.42219019, 12.7903996}, //
+
34064 {6.42203999, 12.7898703}, //
+
34065 {6.42192984, 12.7893896}, //
+
34066 {6.42187023, 12.78895}, //
+
34067 {6.4218502, 12.7885504}, //
+
34068 {6.42192984, 12.7881899}, //
+
34069 {6.42219019, 12.7878799}, //
+
34070 {6.42260981, 12.7876101}, //
+
34071 {6.42319012, 12.7873697}, //
+
34072 {6.4239502, 12.7871904}, //
+
34073 {6.42487001, 12.7870398}, //
+
34074 {6.42596006, 12.7869301}, //
+
34075 {6.42721987, 12.78687}, //
+
34076 {6.4286499, 12.78685}, //
+
34077 {6.43019009, 12.7861404}, //
+
34078 {6.43181992, 12.7855101}, //
+
34079 {6.43352985, 12.7849598}, //
+
34080 {6.43532991, 12.7845001}, //
+
34081 {6.43721008, 12.7841196}, //
+
34082 {6.4391799, 12.7838297}, //
+
34083 {6.44123983, 12.7836199}, //
+
34084 {6.44337988, 12.7834902}, //
+
34085 {6.44560003, 12.7834501}, //
+
34086 {6.44779015, 12.7827301}, //
+
34087 {6.4498601, 12.7820396}, //
+
34088 {6.45179987, 12.7813997}, //
+
34089 {6.45360994, 12.7807999}, //
+
34090 {6.45529985, 12.7802401}, //
+
34091 {6.45687008, 12.7797203}, //
+
34092 {6.45830011, 12.7792397}, //
+
34093 {6.45960999, 12.7788}, //
+
34094 {6.46080017, 12.7784004}, //
+
34095 {6.46183014, 12.7780399}, //
+
34096 {6.46264982, 12.77773}, //
+
34097 {6.46326017, 12.7774601}, //
+
34098 {6.46365976, 12.7772198}, //
+
34099 {6.46386003, 12.7770395}, //
+
34100 {6.46384001, 12.7768898}, //
+
34101 {6.46362019, 12.7767801}, //
+
34102 {6.46319008, 12.77672}, //
+
34103 {6.46255016, 12.7767}, //
+
34104 {6.4611001, 12.7759399}, //
+
34105 {6.45978022, 12.7751904}, //
+
34106 {6.45858002, 12.7744303}, //
+
34107 {6.45750999, 12.7736797}, //
+
34108 {6.45657015, 12.7729197}, //
+
34109 {6.45574999, 12.7721701}, //
+
34110 {6.45506001, 12.77141}, //
+
34111 {6.45449018, 12.7706604}, //
+
34112 {6.45405006, 12.7699003}, //
+
34113 {6.45369005, 12.7691402}, //
+
34114 {6.45338011, 12.7683897}, //
+
34115 {6.45311022, 12.7676296}, //
+
34116 {6.45286989, 12.76688}, //
+
34117 {6.45269012, 12.76612}, //
+
34118 {6.45253992, 12.7653704}, //
+
34119 {6.45242977, 12.7646103}, //
+
34120 {6.45237017, 12.7638597}, //
+
34121 {6.45235014, 12.7630997}, //
+
34122 {6.45239019, 12.7623501}, //
+
34123 {6.45251989, 12.76161}, //
+
34124 {6.45273018, 12.7608604}, //
+
34125 {6.4530201, 12.7601099}, //
+
34126 {6.45340014, 12.7593603}, //
+
34127 {6.45385981, 12.7586098}, //
+
34128 {6.45441008, 12.7578602}, //
+
34129 {6.45503998, 12.7571001}, //
+
34130 {6.45574999, 12.7563496}, //
+
34131 {6.45648003, 12.7555704}, //
+
34132 {6.45718002, 12.7547503}, //
+
34133 {6.45782995, 12.75389}, //
+
34134 {6.45843983, 12.7529898}, //
+
34135 {6.45900011, 12.7520504}, //
+
34136 {6.45952988, 12.7510595}, //
+
34137 {6.46001005, 12.7500296}, //
+
34138 {6.46045017, 12.7489595}, //
+
34139 {6.46084976, 12.7478504}, //
+
34140 {6.46119022, 12.7467699}, //
+
34141 {6.46144009, 12.7457705}, //
+
34142 {6.46160984, 12.7448597}, //
+
34143 {6.46168995, 12.7440205}, //
+
34144 {6.46168995, 12.7432699}, //
+
34145 {6.46160984, 12.74261}, //
+
34146 {6.46144009, 12.7420197}, //
+
34147 {6.46119022, 12.7415199}, //
+
34148 {6.46084976, 12.7411003}, //
+
34149 {6.46041012, 12.7407398}, //
+
34150 {6.45983982, 12.7404299}, //
+
34151 {6.45914984, 12.74016}, //
+
34152 {6.45833015, 12.7399197}, //
+
34153 {6.45738983, 12.7397404}, //
+
34154 {6.45631981, 12.7395897}, //
+
34155 {6.45512009, 12.73948}, //
+
34156 {6.4538002, 12.7394199}, //
+
34157 {6.45235014, 12.7393999}, //
+
34158 {6.44560003, 12.7393999}, //
+
34159 {6.44412994, 12.7393799}, //
+
34160 {6.44274998, 12.7393198}, //
+
34161 {6.44144011, 12.7392101}, //
+
34162 {6.44022989, 12.7390604}, //
+
34163 {6.43908978, 12.7388802}, //
+
34164 {6.43803978, 12.7386398}, //
+
34165 {6.43707991, 12.7383699}, //
+
34166 {6.43620014, 12.73806}, //
+
34167 {6.43540001, 12.7377005}, //
+
34168 {6.43466997, 12.73734}, //
+
34169 {6.43396997, 12.73703}, //
+
34170 {6.43332005, 12.7367601}, //
+
34171 {6.43271017, 12.7365198}, //
+
34172 {6.43214989, 12.7363396}, //
+
34173 {6.43162012, 12.7361898}, //
+
34174 {6.43113995, 12.7360802}, //
+
34175 {6.43069983, 12.7360201}, //
+
34176 {6.43030024, 12.7360001}, //
+
34177 {6.43003988, 12.73592}, //
+
34178 {6.4299798, 12.7356596}, //
+
34179 {6.43013, 12.73524}, //
+
34180 {6.43049002, 12.7346601}, //
+
34181 {6.43105984, 12.7339001}, //
+
34182 {6.43182993, 12.7329798}, //
+
34183 {6.43280983, 12.7318897}, //
+
34184 {6.43400002, 12.7306299}, //
+
34185 {6.43540001, 12.7292004}, //
+
34186 {6.43760014, 12.7284098}, //
+
34187 {6.4396801, 12.72754}, //
+
34188 {6.44162989, 12.7265797}, //
+
34189 {6.44344997, 12.7255402}, //
+
34190 {6.44513988, 12.7244101}, //
+
34191 {6.44671011, 12.7231998}, //
+
34192 {6.44815016, 12.7219}, //
+
34193 {6.44946003, 12.72052}, //
+
34194 {6.45065022, 12.7190504}, //
+
34195 {6.45173979, 12.7175798}, //
+
34196 {6.45275021, 12.7161999}, //
+
34197 {6.45367002, 12.7148895}, //
+
34198 {6.45451021, 12.7136803}, //
+
34199 {6.45526981, 12.7125397}, //
+
34200 {6.45593977, 12.7114897}, //
+
34201 {6.45653009, 12.7105303}, //
+
34202 {6.45702982, 12.70965}, //
+
34203 {6.45744991, 12.7088499}, //
+
34204 {6.45896006, 12.7058697}, //
+
34205 {6.45914984, 12.7054996}, //
+
34206 {6.4584198, 12.7054796}, //
+
34207 {6.4577198, 12.7054195}, //
+
34208 {6.45706987, 12.7053099}, //
+
34209 {6.45646, 12.7051601}, //
+
34210 {6.45590019, 12.7049799}, //
+
34211 {6.45536995, 12.7047396}, //
+
34212 {6.45488977, 12.7044697}, //
+
34213 {6.45445013, 12.7041597}, //
+
34214 {6.45405006, 12.7038002}, //
+
34215 {6.45365, 12.7034197}, //
+
34216 {6.45320988, 12.7030401}, //
+
34217 {6.45273018, 12.7026701}, //
+
34218 {6.45219994, 12.7022896}, //
+
34219 {6.45164013, 12.70191}, //
+
34220 {6.45102978, 12.7015305}, //
+
34221 {6.45037985, 12.7011604}, //
+
34222 {6.44967985, 12.7007799}, //
+
34223 {6.44894981, 12.7004004}, //
+
34224 {6.44824982, 12.7000399}, //
+
34225 {6.44709015, 12.69946}, //
+
34226 {6.44663, 12.6992197}, //
+
34227 {6.44625998, 12.6990404}, //
+
34228 {6.44597006, 12.6988897}, //
+
34229 {6.44576979, 12.6987801}, //
+
34230 {6.44564009, 12.69872}, //
+
34231 {6.44560003, 12.6987}, //
+
34232 {6.44564009, 12.6986599}, //
+
34233 {6.44663, 12.69765}, //
+
34234 {6.44894981, 12.6953001}, //
+
34235 {6.45065022, 12.6935997}, //
+
34236 {6.4509902, 12.6932201}, //
+
34237 {6.45124006, 12.6928396}, //
+
34238 {6.45140982, 12.6924696}, //
+
34239 {6.45148993, 12.69209}, //
+
34240 {6.45148993, 12.6917105}, //
+
34241 {6.45140982, 12.69133}, //
+
34242 {6.45124006, 12.6909599}, //
+
34243 {6.4509902, 12.6905804}, //
+
34244 {6.45065022, 12.6901999}, //
+
34245 {6.4502902, 12.6898499}, //
+
34246 {6.44997978, 12.6895504}, //
+
34247 {6.44947004, 12.6890602}, //
+
34248 {6.44894981, 12.68855}, //
+
34249 {6.44824982, 12.68853}, //
+
34250 {6.44762993, 12.6884699}, //
+
34251 {6.44709015, 12.6883602}, //
+
34252 {6.44663, 12.6882095}, //
+
34253 {6.44625998, 12.6880302}, //
+
34254 {6.44597006, 12.6877899}, //
+
34255 {6.44576979, 12.68752}, //
+
34256 {6.44564009, 12.6872101}, //
+
34257 {6.44560003, 12.6868496}, //
+
34258 {6.44560003, 12.6817503}, //
+
34259 {6.44220018, 12.6817503}, //
+
34260 {6.44218016, 12.6817303}, //
+
34261 {6.44200993, 12.6815596}, //
+
34262 {6.4418602, 12.6814098}, //
+
34263 {6.44049978, 12.6800499}, //
+
34264 {6.43955994, 12.6791096}, //
+
34265 {6.43899012, 12.6785402}, //
+
34266 {6.43881989, 12.6783705}, //
+
34267 {6.43879986, 12.6783504}, //
+
34268 {6.44049978, 12.67665}, //
+
34269 {6.4409399, 12.6762505}, //
+
34270 {6.44150019, 12.6758099}, //
+
34271 {6.44219017, 12.6753302}, //
+
34272 {6.44300985, 12.6748104}, //
+
34273 {6.44395018, 12.6742496}, //
+
34274 {6.44501019, 12.6736498}, //
+
34275 {6.44619989, 12.6730099}, //
+
34276 {6.44750977, 12.6723204}, //
+
34277 {6.44894981, 12.6716003}, //
+
34278 {6.45122004, 12.6708002}, //
+
34279 {6.45347977, 12.66992}, //
+
34280 {6.45573997, 12.6689596}, //
+
34281 {6.4580102, 12.6679096}, //
+
34282 {6.46026993, 12.66677}, //
+
34283 {6.46253014, 12.6655598}, //
+
34284 {6.46478987, 12.6642504}, //
+
34285 {6.46704006, 12.6628704}, //
+
34286 {6.46929979, 12.6613998}, //
+
34287 {6.47145987, 12.6599398}, //
+
34288 {6.47341013, 12.6585703}, //
+
34289 {6.47516012, 12.6572704}, //
+
34290 {6.47668982, 12.6560602}, //
+
34291 {6.47801018, 12.6549301}, //
+
34292 {6.47911978, 12.6538897}, //
+
34293 {6.48002005, 12.6529303}, //
+
34294 {6.48072004, 12.65205}, //
+
34295 {6.48120022, 12.6512499}, //
+
34296 {6.48147011, 12.6505404}, //
+
34297 {6.4815402, 12.64991}, //
+
34298 {6.48139, 12.6493597}, //
+
34299 {6.48102999, 12.6489}, //
+
34300 {6.48047018, 12.6485205}, //
+
34301 {6.47969007, 12.6482296}, //
+
34302 {6.47870016, 12.6480198}, //
+
34303 {6.47750998, 12.6478901}, //
+
34304 {6.47609997, 12.64785}, //
+
34305 });
+
34306 polys.push_back({
+
34307 {4.41271019, 13.2080498}, //
+
34308 {4.40821981, 13.2090101}, //
+
34309 {4.40182018, 13.2108898}, //
+
34310 {4.39348984, 13.2137003}, //
+
34311 {4.38323021, 13.2174301}, //
+
34312 {4.37104988, 13.2220802}, //
+
34313 {4.35694981, 13.2276497}, //
+
34314 {4.35544014, 13.2276897}, //
+
34315 {4.35393, 13.2278204}, //
+
34316 {4.35241985, 13.2280302}, //
+
34317 {4.3509202, 13.2283201}, //
+
34318 {4.34941006, 13.2286997}, //
+
34319 {4.34790993, 13.2291603}, //
+
34320 {4.34639978, 13.2297096}, //
+
34321 {4.34490013, 13.23034}, //
+
34322 {4.3434, 13.2310495}, //
+
34323 {4.32737017, 13.23979}, //
+
34324 {4.3094101, 13.2479496}, //
+
34325 {4.2895298, 13.2555199}, //
+
34326 {4.26773024, 13.2624998}, //
+
34327 {4.24398994, 13.2688999}, //
+
34328 {4.21832991, 13.2747202}, //
+
34329 {4.19075012, 13.2799501}, //
+
34330 {4.1612401, 13.2845898}, //
+
34331 {4.12979984, 13.2886496}, //
+
34332 {4.13067007, 13.2894096}, //
+
34333 {4.13180017, 13.2901602}, //
+
34334 {4.13317013, 13.2909203}, //
+
34335 {4.13479996, 13.2916698}, //
+
34336 {4.13669014, 13.2924299}, //
+
34337 {4.13882017, 13.2931805}, //
+
34338 {4.14121008, 13.2939396}, //
+
34339 {4.14384985, 13.2946901}, //
+
34340 {4.14674997, 13.2954502}, //
+
34341 {4.15061998, 13.2962503}, //
+
34342 {4.1546998, 13.2971296}, //
+
34343 {4.15898991, 13.29809}, //
+
34344 {4.16348982, 13.2991304}, //
+
34345 {4.16819, 13.3002596}, //
+
34346 {4.17311001, 13.3014698}, //
+
34347 {4.17822981, 13.3027697}, //
+
34348 {4.18355989, 13.3041401}, //
+
34349 {4.18909979, 13.3056002}, //
+
34350 {4.1947298, 13.3070898}, //
+
34351 {4.20031977, 13.3085403}, //
+
34352 {4.20587015, 13.3099403}, //
+
34353 {4.21138, 13.3113098}, //
+
34354 {4.21683979, 13.3126297}, //
+
34355 {4.22226, 13.3139095}, //
+
34356 {4.22763014, 13.3151503}, //
+
34357 {4.23296022, 13.31635}, //
+
34358 {4.23824978, 13.3175001}, //
+
34359 {4.24331999, 13.3185301}, //
+
34360 {4.2479701, 13.3193502}, //
+
34361 {4.25220013, 13.3199596}, //
+
34362 {4.25601006, 13.3203497}, //
+
34363 {4.2594099, 13.3205404}, //
+
34364 {4.26238012, 13.3205204}, //
+
34365 {4.26493979, 13.3202896}, //
+
34366 {4.26707983, 13.31985}, //
+
34367 {4.26879978, 13.3191996}, //
+
34368 {4.27050018, 13.3183002}, //
+
34369 {4.27257013, 13.3170996}, //
+
34370 {4.27502012, 13.3156204}, //
+
34371 {4.27785015, 13.3138399}, //
+
34372 {4.28105021, 13.3117599}, //
+
34373 {4.28461981, 13.3093996}, //
+
34374 {4.28856993, 13.3067398}, //
+
34375 {4.29290009, 13.3037901}, //
+
34376 {4.29759979, 13.3005505}, //
+
34377 {4.30253983, 13.2971001}, //
+
34378 {4.30756998, 13.29352}, //
+
34379 {4.31267023, 13.2898197}, //
+
34380 {4.31786013, 13.2859898}, //
+
34381 {4.32313013, 13.2820301}, //
+
34382 {4.32848978, 13.2779503}, //
+
34383 {4.33393002, 13.2737398}, //
+
34384 {4.33944988, 13.2694101}, //
+
34385 {4.34504986, 13.2649498}, //
+
34386 {4.35063982, 13.2604904}, //
+
34387 {4.3561101, 13.2561598}, //
+
34388 {4.3614502, 13.2519503}, //
+
34389 {4.36666012, 13.2478704}, //
+
34390 {4.37174988, 13.2439098}, //
+
34391 {4.37671995, 13.2400799}, //
+
34392 {4.38154984, 13.2363796}, //
+
34393 {4.38626003, 13.2327995}, //
+
34394 {4.39085007, 13.2293501}, //
+
34395 {4.3951602, 13.2261105}, //
+
34396 {4.39905977, 13.2231598}, //
+
34397 {4.40253019, 13.2205}, //
+
34398 {4.40559006, 13.2181396}, //
+
34399 {4.40822983, 13.2160597}, //
+
34400 {4.41044998, 13.2142801}, //
+
34401 {4.41225004, 13.2128}, //
+
34402 {4.41364002, 13.2116003}, //
+
34403 {4.4145999, 13.2107}, //
+
34404 {4.41589022, 13.20889}, //
+
34405 {4.41525984, 13.2080097}, //
+
34406 });
+
34407 polys.push_back({
+
34408 {0.347719997, 13.1124296}, //
+
34409 {0.346280992, 13.1126804}, //
+
34410 {0.344882995, 13.1131001}, //
+
34411 {0.343526006, 13.1136799}, //
+
34412 {0.342209011, 13.1144304}, //
+
34413 {0.340932995, 13.1153498}, //
+
34414 {0.339697987, 13.1164303}, //
+
34415 {0.338503987, 13.1176796}, //
+
34416 {0.337350011, 13.1190996}, //
+
34417 {0.336227, 13.1206503}, //
+
34418 {0.335103005, 13.1222897}, //
+
34419 {0.333977997, 13.1240101}, //
+
34420 {0.332850993, 13.1258097}, //
+
34421 {0.331723005, 13.1276903}, //
+
34422 {0.330594003, 13.1296597}, //
+
34423 {0.329463989, 13.1316996}, //
+
34424 {0.32833299, 13.1338396}, //
+
34425 {0.327199996, 13.1360502}, //
+
34426 {0.326088011, 13.13832}, //
+
34427 {0.325017005, 13.1405802}, //
+
34428 {0.323989004, 13.1428499}, //
+
34429 {0.323002011, 13.1451197}, //
+
34430 {0.322057992, 13.1473799}, //
+
34431 {0.321155995, 13.1496496}, //
+
34432 {0.320295006, 13.1519203}, //
+
34433 {0.319476992, 13.1541796}, //
+
34434 {0.318699986, 13.1564503}, //
+
34435 {0.317997009, 13.1623898}, //
+
34436 {0.317377001, 13.1681604}, //
+
34437 {0.31683901, 13.17377}, //
+
34438 {0.316383988, 13.1792097}, //
+
34439 {0.316011995, 13.1844797}, //
+
34440 {0.315721989, 13.18958}, //
+
34441 {0.315515012, 13.19452}, //
+
34442 {0.315391004, 13.1992903}, //
+
34443 {0.315349996, 13.2039003}, //
+
34444 {0.315308005, 13.2083397}, //
+
34445 {0.315182, 13.2126102}, //
+
34446 {0.314972013, 13.2167101}, //
+
34447 {0.314678013, 13.2206497}, //
+
34448 {0.314301014, 13.2244101}, //
+
34449 {0.313838989, 13.2280102}, //
+
34450 {0.31329301, 13.2314396}, //
+
34451 {0.312664002, 13.2347002}, //
+
34452 {0.311949998, 13.2377996}, //
+
34453 {0.312034011, 13.2378798}, //
+
34454 {0.312139004, 13.2379904}, //
+
34455 {0.31228599, 13.2381401}, //
+
34456 {0.312705994, 13.2385597}, //
+
34457 {0.312977999, 13.2388296}, //
+
34458 {0.31329301, 13.2391396}, //
+
34459 {0.313650012, 13.2395}, //
+
34460 {0.314027011, 13.2399197}, //
+
34461 {0.314402997, 13.2404203}, //
+
34462 {0.314778, 13.2410097}, //
+
34463 {0.315151006, 13.2416801}, //
+
34464 {0.315522999, 13.2424402}, //
+
34465 {0.315894008, 13.2432804}, //
+
34466 {0.316264004, 13.2441998}, //
+
34467 {0.316632986, 13.2452097}, //
+
34468 {0.317000002, 13.2462997}, //
+
34469 {0.317357004, 13.2474499}, //
+
34470 {0.317672014, 13.2486496}, //
+
34471 {0.31794399, 13.2498798}, //
+
34472 {0.318174988, 13.2511597}, //
+
34473 {0.318363994, 13.2524796}, //
+
34474 {0.318511009, 13.25383}, //
+
34475 {0.318616003, 13.2552299}, //
+
34476 {0.318679005, 13.25667}, //
+
34477 {0.318699986, 13.2581501}, //
+
34478 {0.319435, 13.2588196}, //
+
34479 {0.32012701, 13.2593298}, //
+
34480 {0.320778012, 13.2596598}, //
+
34481 {0.321386009, 13.2598305}, //
+
34482 {0.321952999, 13.2598305}, //
+
34483 {0.322477996, 13.2596598}, //
+
34484 {0.322959989, 13.2593298}, //
+
34485 {0.323401004, 13.2588196}, //
+
34486 {0.323799998, 13.2581501}, //
+
34487 {0.32417801, 13.2573299}, //
+
34488 {0.324555993, 13.2563896}, //
+
34489 {0.324932992, 13.2553196}, //
+
34490 {0.325311005, 13.2541199}, //
+
34491 {0.325688988, 13.2528}, //
+
34492 {0.326067001, 13.2513504}, //
+
34493 {0.326444, 13.2497797}, //
+
34494 {0.326822013, 13.2480803}, //
+
34495 {0.327199996, 13.2462502}, //
+
34496 {0.327598989, 13.2443104}, //
+
34497 {0.328040004, 13.24224}, //
+
34498 {0.328521997, 13.2400503}, //
+
34499 {0.329046994, 13.23773}, //
+
34500 {0.329614013, 13.2352896}, //
+
34501 {0.330222011, 13.2327204}, //
+
34502 {0.330873013, 13.2300196}, //
+
34503 {0.331564993, 13.2271996}, //
+
34504 {0.332300007, 13.2242498}, //
+
34505 {0.333045006, 13.2188902}, //
+
34506 {0.333790988, 13.2133598}, //
+
34507 {0.334538996, 13.2076702}, //
+
34508 {0.335287988, 13.2018099}, //
+
34509 {0.336037993, 13.1957798}, //
+
34510 {0.336789012, 13.18958}, //
+
34511 {0.337541014, 13.1832199}, //
+
34512 {0.338295013, 13.1766901}, //
+
34513 {0.339049995, 13.1700001}, //
+
34514 {0.340519011, 13.1654396}, //
+
34515 {0.341904014, 13.1607904}, //
+
34516 {0.343205988, 13.1560602}, //
+
34517 {0.344422996, 13.1512403}, //
+
34518 {0.345555991, 13.1463404}, //
+
34519 {0.346605986, 13.1413603}, //
+
34520 {0.347570986, 13.1362896}, //
+
34521 {0.348452002, 13.1311398}, //
+
34522 {0.349249989, 13.1259003}, //
+
34523 {0.350582987, 13.1230602}, //
+
34524 {0.351581007, 13.1205502}, //
+
34525 {0.35224399, 13.1183701}, //
+
34526 {0.352573007, 13.1165304}, //
+
34527 {0.352568001, 13.1150303}, //
+
34528 {0.352227986, 13.1138601}, //
+
34529 {0.351552993, 13.1130199}, //
+
34530 {0.350544006, 13.1125202}, //
+
34531 {0.34920001, 13.1123505}, //
+
34532 });
+
34533 polys.push_back({
+
34534 {6.53517008, 12.9859695}, //
+
34535 {6.53448009, 12.98629}, //
+
34536 {6.53375006, 12.9869003}, //
+
34537 {6.53375006, 13.0530005}, //
+
34538 {6.53366995, 13.0577497}, //
+
34539 {6.53341007, 13.0622101}, //
+
34540 {6.53298998, 13.0663795}, //
+
34541 {6.53241014, 13.07026}, //
+
34542 {6.53165007, 13.0738401}, //
+
34543 {6.53072977, 13.0771303}, //
+
34544 {6.5296402, 13.0801296}, //
+
34545 {6.52837992, 13.08284}, //
+
34546 {6.52694988, 13.0852499}, //
+
34547 {6.52547979, 13.0874596}, //
+
34548 {6.52409983, 13.0895996}, //
+
34549 {6.52279997, 13.0916405}, //
+
34550 {6.52159023, 13.0936098}, //
+
34551 {6.52046013, 13.0954905}, //
+
34552 {6.51942015, 13.09729}, //
+
34553 {6.5184598, 13.0990105}, //
+
34554 {6.51759005, 13.1006498}, //
+
34555 {6.51679993, 13.1021996}, //
+
34556 {6.51603985, 13.1029501}, //
+
34557 {6.51528978, 13.1037102}, //
+
34558 {6.51453018, 13.1044598}, //
+
34559 {6.51378012, 13.1052103}, //
+
34560 {6.51302004, 13.1059599}, //
+
34561 {6.51226997, 13.1067104}, //
+
34562 {6.5115099, 13.10746}, //
+
34563 {6.51075983, 13.1082001}, //
+
34564 {6.51000023, 13.1089497}, //
+
34565 {6.50924015, 13.1096201}, //
+
34566 {6.50849009, 13.1101303}, //
+
34567 {6.50773001, 13.1104603}, //
+
34568 {6.50697994, 13.11063}, //
+
34569 {6.50621986, 13.11063}, //
+
34570 {6.5054698, 13.1104603}, //
+
34571 {6.5047102, 13.1101303}, //
+
34572 {6.50396013, 13.1096201}, //
+
34573 {6.50320005, 13.1089497}, //
+
34574 {6.50244999, 13.1082697}, //
+
34575 {6.50170994, 13.1077099}, //
+
34576 {6.50095987, 13.1072702}, //
+
34577 {6.50020981, 13.1069603}, //
+
34578 {6.49946022, 13.1067696}, //
+
34579 {6.49871016, 13.1067104}, //
+
34580 {6.49796009, 13.10676}, //
+
34581 {6.49720001, 13.1069498}, //
+
34582 {6.49644995, 13.1072502}, //
+
34583 {6.49568987, 13.1076899}, //
+
34584 {6.4949398, 13.1082602}, //
+
34585 {6.4941802, 13.1089497}, //
+
34586 {6.49343014, 13.1097698}, //
+
34587 {6.49267006, 13.1107101}, //
+
34588 {6.49191999, 13.1117802}, //
+
34589 {6.49115992, 13.1129799}, //
+
34590 {6.49040985, 13.1142998}, //
+
34591 {6.48964977, 13.1157503}, //
+
34592 {6.48952007, 13.1192198}, //
+
34593 {6.48915005, 13.1221104}, //
+
34594 {6.48852015, 13.1244097}, //
+
34595 {6.48764992, 13.1261301}, //
+
34596 {6.48651981, 13.1272497}, //
+
34597 {6.48513985, 13.1277905}, //
+
34598 {6.48351002, 13.1277504}, //
+
34599 {6.48162985, 13.12712}, //
+
34600 {6.47949982, 13.1259003}, //
+
34601 {6.47868013, 13.1252003}, //
+
34602 {6.47773981, 13.1245804}, //
+
34603 {6.47666979, 13.1240396}, //
+
34604 {6.47547007, 13.12358}, //
+
34605 {6.47415018, 13.12321}, //
+
34606 {6.47270012, 13.12292}, //
+
34607 {6.47112989, 13.1227198}, //
+
34608 {6.46942997, 13.1225901}, //
+
34609 {6.46759987, 13.12255}, //
+
34610 {6.46577978, 13.1225901}, //
+
34611 {6.46408987, 13.1227198}, //
+
34612 {6.46253014, 13.12292}, //
+
34613 {6.46109009, 13.12321}, //
+
34614 {6.4597702, 13.12358}, //
+
34615 {6.45858002, 13.1240396}, //
+
34616 {6.45750999, 13.1245804}, //
+
34617 {6.45657015, 13.1252003}, //
+
34618 {6.45574999, 13.1259003}, //
+
34619 {6.45503998, 13.1266603}, //
+
34620 {6.45441008, 13.1274099}, //
+
34621 {6.45385981, 13.12817}, //
+
34622 {6.45340014, 13.1289196}, //
+
34623 {6.4530201, 13.1296797}, //
+
34624 {6.45273018, 13.1304302}, //
+
34625 {6.45251989, 13.1311903}, //
+
34626 {6.45239019, 13.1319399}, //
+
34627 {6.45235014, 13.1327}, //
+
34628 {6.42525005, 13.1327}, //
+
34629 {6.42454004, 13.1320295}, //
+
34630 {6.42391014, 13.1315203}, //
+
34631 {6.42335987, 13.1311903}, //
+
34632 {6.4229002, 13.1310196}, //
+
34633 {6.42252016, 13.1310196}, //
+
34634 {6.42222977, 13.1311903}, //
+
34635 {6.42201996, 13.1315203}, //
+
34636 {6.42188978, 13.1320295}, //
+
34637 {6.4218502, 13.1327}, //
+
34638 {6.4218502, 13.1598501}, //
+
34639 {6.42181015, 13.1605701}, //
+
34640 {6.42167997, 13.1612597}, //
+
34641 {6.42147017, 13.1618996}, //
+
34642 {6.42117977, 13.1625004}, //
+
34643 {6.42080021, 13.1630602}, //
+
34644 {6.42034006, 13.1635799}, //
+
34645 {6.41978979, 13.1640596}, //
+
34646 {6.41915989, 13.1645002}, //
+
34647 {6.41844988, 13.1648998}, //
+
34648 {6.41765022, 13.1652098}, //
+
34649 {6.41676998, 13.1653996}, //
+
34650 {6.41581011, 13.1654701}, //
+
34651 {6.41477013, 13.1653996}, //
+
34652 {6.41364002, 13.1652098}, //
+
34653 {6.41242981, 13.1648998}, //
+
34654 {6.41112995, 13.1644602}, //
+
34655 {6.40976, 13.1638899}, //
+
34656 {6.40829992, 13.1632004}, //
+
34657 {6.39979982, 13.1632004}, //
+
34658 {6.39869022, 13.1632404}, //
+
34659 {6.3976202, 13.1633701}, //
+
34660 {6.39659023, 13.1635799}, //
+
34661 {6.39560986, 13.1638699}, //
+
34662 {6.39467001, 13.1642504}, //
+
34663 {6.39378023, 13.16471}, //
+
34664 {6.39293003, 13.1652603}, //
+
34665 {6.39211988, 13.1658897}, //
+
34666 {6.39134979, 13.1666002}, //
+
34667 {6.38917017, 13.1672697}, //
+
34668 {6.38714981, 13.1677799}, //
+
34669 {6.38531017, 13.1681099}, //
+
34670 {6.3836298, 13.1682796}, //
+
34671 {6.38212013, 13.1682796}, //
+
34672 {6.38077021, 13.1681099}, //
+
34673 {6.37960005, 13.1677799}, //
+
34674 {6.37859011, 13.1672697}, //
+
34675 {6.37792015, 13.1667299}, //
+
34676 {6.38090992, 13.1728296}, //
+
34677 {6.38455009, 13.18015}, //
+
34678 {6.38840008, 13.1875696}, //
+
34679 {6.39241982, 13.1947298}, //
+
34680 {6.39660978, 13.2016401}, //
+
34681 {6.40095997, 13.2082996}, //
+
34682 {6.40547991, 13.2147102}, //
+
34683 {6.41017008, 13.2208595}, //
+
34684 {6.41503, 13.2267599}, //
+
34685 {6.42006016, 13.2324104}, //
+
34686 {6.42525005, 13.2377996}, //
+
34687 {6.42612982, 13.2393103}, //
+
34688 {6.42725992, 13.2408199}, //
+
34689 {6.42863989, 13.2423296}, //
+
34690 {6.43028021, 13.2438297}, //
+
34691 {6.4321599, 13.2453403}, //
+
34692 {6.43428993, 13.2468395}, //
+
34693 {6.43667984, 13.2483501}, //
+
34694 {6.43931007, 13.2498503}, //
+
34695 {6.44220018, 13.2513504}, //
+
34696 {6.44527006, 13.2527399}, //
+
34697 {6.44847012, 13.25387}, //
+
34698 {6.45179987, 13.2547503}, //
+
34699 {6.45524979, 13.2553797}, //
+
34700 {6.45882988, 13.2557602}, //
+
34701 {6.46253014, 13.2558804}, //
+
34702 {6.46636009, 13.2557602}, //
+
34703 {6.47032022, 13.2553797}, //
+
34704 {6.47440004, 13.2547503}, //
+
34705 {6.47847986, 13.2538004}, //
+
34706 {6.48243999, 13.2524204}, //
+
34707 {6.48626995, 13.2506304}, //
+
34708 {6.48997021, 13.2484102}, //
+
34709 {6.49354982, 13.24578}, //
+
34710 {6.49700022, 13.2427301}, //
+
34711 {6.50032997, 13.2392502}, //
+
34712 {6.50353003, 13.2353601}, //
+
34713 {6.5065999, 13.2310495}, //
+
34714 {6.51107979, 13.2226105}, //
+
34715 {6.51548004, 13.2138796}, //
+
34716 {6.51979017, 13.2048597}, //
+
34717 {6.5240202, 13.1955404}, //
+
34718 {6.5281601, 13.1859303}, //
+
34719 {6.53221989, 13.1760302}, //
+
34720 {6.53620005, 13.1658297}, //
+
34721 {6.54009008, 13.1553402}, //
+
34722 {6.54390001, 13.1445503}, //
+
34723 {6.54746008, 13.1338997}, //
+
34724 {6.55060005, 13.1237898}, //
+
34725 {6.55331993, 13.1142302}, //
+
34726 {6.55562019, 13.1052198}, //
+
34727 {6.55749989, 13.0967398}, //
+
34728 {6.55896997, 13.0888205}, //
+
34729 {6.56000996, 13.0814304}, //
+
34730 {6.56063986, 13.0745897}, //
+
34731 {6.56085014, 13.0683002}, //
+
34732 {6.56079006, 13.0659904}, //
+
34733 {6.5605998, 13.0635996}, //
+
34734 {6.56027985, 13.0611296}, //
+
34735 {6.5598402, 13.0585699}, //
+
34736 {6.55927992, 13.0559301}, //
+
34737 {6.55857992, 13.0532103}, //
+
34738 {6.55775976, 13.0504103}, //
+
34739 {6.55681992, 13.0475197}, //
+
34740 {6.55574989, 13.0445499}, //
+
34741 {6.5546298, 13.0415201}, //
+
34742 {6.55350018, 13.0384398}, //
+
34743 {6.55238008, 13.0353203}, //
+
34744 {6.55124998, 13.0321598}, //
+
34745 {6.55011988, 13.0289497}, //
+
34746 {6.54898977, 13.0257101}, //
+
34747 {6.54786015, 13.0224104}, //
+
34748 {6.54673004, 13.0190802}, //
+
34749 {6.54559994, 13.0157003}, //
+
34750 {6.54450989, 13.0123901}, //
+
34751 {6.54349995, 13.0092602}, //
+
34752 {6.54258013, 13.0062799}, //
+
34753 {6.54173994, 13.00348}, //
+
34754 {6.54097986, 13.0008402}, //
+
34755 {6.54030991, 12.9983702}, //
+
34756 {6.53972006, 12.9960604}, //
+
34757 {6.53921986, 12.9939203}, //
+
34758 {6.53879976, 12.99195}, //
+
34759 {6.53841019, 12.9902201}, //
+
34760 {6.53798008, 12.98878}, //
+
34761 {6.53750992, 12.9876299}, //
+
34762 {6.53699017, 12.9867802}, //
+
34763 {6.53642988, 12.9862204}, //
+
34764 {6.53582001, 12.9859505}, //
+
34765 });
+
34766 polys.push_back({
+
34767 {2.04893994, 13.1904097}, //
+
34768 {2.04623008, 13.1906004}, //
+
34769 {2.04323006, 13.1909103}, //
+
34770 {2.03994012, 13.19135}, //
+
34771 {2.03636003, 13.1919098}, //
+
34772 {2.03248, 13.1925898}, //
+
34773 {2.02831006, 13.1934004}, //
+
34774 {2.02384996, 13.1943398}, //
+
34775 {2.01909995, 13.1954002}, //
+
34776 {2.01416993, 13.1965504}, //
+
34777 {2.00915003, 13.1977501}, //
+
34778 {2.00405002, 13.1989899}, //
+
34779 {1.99886, 13.2002697}, //
+
34780 {1.99359, 13.2015896}, //
+
34781 {1.98822999, 13.20296}, //
+
34782 {1.98278999, 13.20436}, //
+
34783 {1.97725999, 13.2058096}, //
+
34784 {1.97165, 13.2073002}, //
+
34785 {1.96609998, 13.2087898}, //
+
34786 {1.96076, 13.2102404}, //
+
34787 {1.95562994, 13.2116404}, //
+
34788 {1.95071006, 13.2130003}, //
+
34789 {1.94599998, 13.2143202}, //
+
34790 {1.94149005, 13.2155895}, //
+
34791 {1.93719995, 13.2168198}, //
+
34792 {1.93312001, 13.2180099}, //
+
34793 {1.92925, 13.2191496}, //
+
34794 {1.92254996, 13.2211599}, //
+
34795 {1.91982996, 13.2219801}, //
+
34796 {1.91229999, 13.2242498}, //
+
34797 {1.91259003, 13.2242098}, //
+
34798 {1.91699004, 13.2235804}, //
+
34799 {1.93106997, 13.2215595}, //
+
34800 {1.93605006, 13.22085}, //
+
34801 {1.94161999, 13.2201796}, //
+
34802 {1.94778001, 13.2196703}, //
+
34803 {1.95451999, 13.2193403}, //
+
34804 {1.96184003, 13.2191696}, //
+
34805 {1.96975005, 13.2191696}, //
+
34806 {1.97825003, 13.2193403}, //
+
34807 {1.98732996, 13.2196703}, //
+
34808 {1.99699998, 13.2201796}, //
+
34809 {2.00725007, 13.22085}, //
+
34810 {2.01694989, 13.22087}, //
+
34811 {2.02642989, 13.2209301}, //
+
34812 {2.0357101, 13.2210398}, //
+
34813 {2.04477, 13.2211905}, //
+
34814 {2.05363011, 13.2213697}, //
+
34815 {2.06226993, 13.2216101}, //
+
34816 {2.07070994, 13.22188}, //
+
34817 {2.0789299, 13.2221899}, //
+
34818 {2.08695006, 13.2225504}, //
+
34819 {2.09450006, 13.22295}, //
+
34820 {2.10135007, 13.2233896}, //
+
34821 {2.10748005, 13.2238703}, //
+
34822 {2.11290002, 13.2243996}, //
+
34823 {2.11759996, 13.2249603}, //
+
34824 {2.1215899, 13.2255697}, //
+
34825 {2.12488008, 13.2262201}, //
+
34826 {2.12743998, 13.2269201}, //
+
34827 {2.12930012, 13.2276497}, //
+
34828 {2.12895989, 13.2273998}, //
+
34829 {2.12854004, 13.2270803}, //
+
34830 {2.12795997, 13.2266397}, //
+
34831 {2.12719989, 13.2260799}, //
+
34832 {2.12628007, 13.2253799}, //
+
34833 {2.12519002, 13.2245598}, //
+
34834 {2.12392998, 13.2236204}, //
+
34835 {2.12249994, 13.2225504}, //
+
34836 {2.12093997, 13.2214003}, //
+
34837 {2.11925006, 13.2201996}, //
+
34838 {2.11742997, 13.2189598}, //
+
34839 {2.11547995, 13.21768}, //
+
34840 {2.11341, 13.2163601}, //
+
34841 {2.11121011, 13.2149897}, //
+
34842 {2.10888004, 13.2135897}, //
+
34843 {2.10643005, 13.2121401}, //
+
34844 {2.10384989, 13.2106504}, //
+
34845 {2.10117006, 13.2091703}, //
+
34846 {2.0984199, 13.2077303}, //
+
34847 {2.09557009, 13.2063303}, //
+
34848 {2.09264994, 13.2049799}, //
+
34849 {2.08962989, 13.20366}, //
+
34850 {2.08653998, 13.2023802}, //
+
34851 {2.08335996, 13.2011499}, //
+
34852 {2.08010006, 13.1999502}, //
+
34853 {2.07675004, 13.1988001}, //
+
34854 {2.07342005, 13.1976995}, //
+
34855 {2.07021999, 13.19664}, //
+
34856 {2.06715012, 13.1956196}, //
+
34857 {2.06419992, 13.1946402}, //
+
34858 {2.05868006, 13.1927996}, //
+
34859 {2.05610991, 13.1919403}, //
+
34860 {2.05366993, 13.1911297}, //
+
34861 {2.05135012, 13.1903496}, //
+
34862 });
+
34863 polys.push_back({
+
34864 {5.90985012, 12.9428501}, //
+
34865 {5.90540981, 12.9457397}, //
+
34866 {5.90114021, 12.94837}, //
+
34867 {5.89703989, 12.9507504}, //
+
34868 {5.89309978, 12.9528799}, //
+
34869 {5.88933992, 12.9547596}, //
+
34870 {5.8857398, 12.9563799}, //
+
34871 {5.88230991, 12.9577599}, //
+
34872 {5.87904978, 12.9588804}, //
+
34873 {5.87594986, 12.9597502}, //
+
34874 {5.86307001, 12.9629803}, //
+
34875 {5.86240005, 12.96315}, //
+
34876 {5.86240005, 12.9665499}, //
+
34877 {5.86416006, 12.9683104}, //
+
34878 {5.87424994, 12.9784002}, //
+
34879 {5.87612009, 12.9803104}, //
+
34880 {5.87794018, 12.9822598}, //
+
34881 {5.87972021, 12.9842596}, //
+
34882 {5.88146019, 12.98629}, //
+
34883 {5.8831501, 12.9883699}, //
+
34884 {5.88480997, 12.99049}, //
+
34885 {5.88641024, 12.99265}, //
+
34886 {5.88797998, 12.9948502}, //
+
34887 {5.88950014, 12.9970999}, //
+
34888 {5.89035988, 12.9979696}, //
+
34889 {5.8914299, 12.9990902}, //
+
34890 {5.89271021, 13.0004702}, //
+
34891 {5.89418983, 13.0020905}, //
+
34892 {5.89589024, 13.0039701}, //
+
34893 {5.89778996, 13.0060997}, //
+
34894 {5.89989996, 13.0084801}, //
+
34895 {5.90221977, 13.0111103}, //
+
34896 {5.90474987, 13.0139999}, //
+
34897 {5.90739012, 13.0170002}, //
+
34898 {5.9100399, 13.0199604}, //
+
34899 {5.91268015, 13.0228701}, //
+
34900 {5.91531992, 13.0257397}, //
+
34901 {5.91796017, 13.0285702}, //
+
34902 {5.92058992, 13.0313597}, //
+
34903 {5.92323017, 13.0340996}, //
+
34904 {5.92586994, 13.0368004}, //
+
34905 {5.92850018, 13.0394497}, //
+
34906 {5.93107986, 13.0419903}, //
+
34907 {5.93352985, 13.0443201}, //
+
34908 {5.93586016, 13.0464296}, //
+
34909 {5.93805981, 13.0483398}, //
+
34910 {5.94013023, 13.0500298}, //
+
34911 {5.94208002, 13.0515203}, //
+
34912 {5.94390011, 13.0527897}, //
+
34913 {5.94559002, 13.0538502}, //
+
34914 {5.94715023, 13.0546999}, //
+
34915 {5.95025015, 13.0564203}, //
+
34916 {5.95350981, 13.0585604}, //
+
34917 {5.95694017, 13.06112}, //
+
34918 {5.96053982, 13.0640898}, //
+
34919 {5.96430016, 13.0674896}, //
+
34920 {5.96823978, 13.0712996}, //
+
34921 {5.97234011, 13.0755301}, //
+
34922 {5.97661018, 13.0801802}, //
+
34923 {5.98105001, 13.0852499}, //
+
34924 {5.98476982, 13.0896902}, //
+
34925 {5.98842001, 13.0939598}, //
+
34926 {5.99197006, 13.0980597}, //
+
34927 {5.99545002, 13.1020002}, //
+
34928 {5.99882984, 13.1057596}, //
+
34929 {6.00214005, 13.1093597}, //
+
34930 {6.00536013, 13.1127901}, //
+
34931 {6.0085001, 13.1160498}, //
+
34932 {6.01154995, 13.1191502}, //
+
34933 {6.01453018, 13.1220398}, //
+
34934 {6.01741982, 13.12467}, //
+
34935 {6.02022982, 13.1270599}, //
+
34936 {6.02296019, 13.1291904}, //
+
34937 {6.02559996, 13.1310701}, //
+
34938 {6.02815008, 13.1327105}, //
+
34939 {6.0306201, 13.1340904}, //
+
34940 {6.03299999, 13.1352196}, //
+
34941 {6.03529978, 13.1360998}, //
+
34942 {6.03907013, 13.1377201}, //
+
34943 {6.04282999, 13.1395397}, //
+
34944 {6.04659986, 13.1415701}, //
+
34945 {6.05037022, 13.1438103}, //
+
34946 {6.05413008, 13.1462603}, //
+
34947 {6.05789995, 13.1489201}, //
+
34948 {6.06166983, 13.1517897}, //
+
34949 {6.06543016, 13.15487}, //
+
34950 {6.06920004, 13.1581497}, //
+
34951 {6.07292986, 13.1615601}, //
+
34952 {6.07657003, 13.1650105}, //
+
34953 {6.0801301, 13.1685104}, //
+
34954 {6.08360004, 13.17204}, //
+
34955 {6.08699989, 13.1756201}, //
+
34956 {6.0903101, 13.1792402}, //
+
34957 {6.09354019, 13.1829004}, //
+
34958 {6.09669018, 13.1865997}, //
+
34959 {6.09975004, 13.1903496}, //
+
34960 {6.10243988, 13.1930399}, //
+
34961 {6.10314989, 13.1937504}, //
+
34962 {6.10469007, 13.1952496}, //
+
34963 {6.1063199, 13.1967497}, //
+
34964 {6.10802984, 13.1982603}, //
+
34965 {6.10981989, 13.1997604}, //
+
34966 {6.11170006, 13.2012701}, //
+
34967 {6.11365986, 13.2027702}, //
+
34968 {6.11570978, 13.2042799}, //
+
34969 {6.11783981, 13.2057896}, //
+
34970 {6.12004995, 13.2073002}, //
+
34971 {6.12230015, 13.2087698}, //
+
34972 {6.1244998, 13.2101498}, //
+
34973 {6.12665987, 13.2114496}, //
+
34974 {6.12876987, 13.2126598}, //
+
34975 {6.13083982, 13.2137899}, //
+
34976 {6.1328702, 13.2148304}, //
+
34977 {6.13486004, 13.2157898}, //
+
34978 {6.13679981, 13.2166595}, //
+
34979 {6.13870001, 13.2174501}, //
+
34980 {6.14048004, 13.2181597}, //
+
34981 {6.1420598, 13.2187901}, //
+
34982 {6.14342022, 13.2193403}, //
+
34983 {6.14457989, 13.2198}, //
+
34984 {6.14552021, 13.2201796}, //
+
34985 {6.14625978, 13.2204704}, //
+
34986 {6.14678001, 13.2206802}, //
+
34987 {6.14709997, 13.2208099}, //
+
34988 {6.14720011, 13.22085}, //
+
34989 {6.14718008, 13.2207699}, //
+
34990 {6.14712, 13.2205095}, //
+
34991 {6.14700985, 13.2200899}, //
+
34992 {6.14686012, 13.2195101}, //
+
34993 {6.14644003, 13.2178297}, //
+
34994 {6.14617014, 13.2167397}, //
+
34995 {6.1458602, 13.2154799}, //
+
34996 {6.14550018, 13.2140503}, //
+
34997 {6.14510012, 13.2125101}, //
+
34998 {6.14466, 13.2108803}, //
+
34999 {6.14417982, 13.2091703}, //
+
35000 {6.14365005, 13.2073698}, //
+
35001 {6.14308977, 13.2054901}, //
+
35002 {6.1424799, 13.2035198}, //
+
35003 {6.14182997, 13.2014599}, //
+
35004 {6.14112997, 13.1993198}, //
+
35005 {6.14039993, 13.1970997}, //
+
35006 {6.13960981, 13.1948204}, //
+
35007 {6.13874006, 13.1925001}, //
+
35008 {6.13778019, 13.1901398}, //
+
35009 {6.13674021, 13.1877298}, //
+
35010 {6.1356101, 13.1852798}, //
+
35011 {6.13439989, 13.1827898}, //
+
35012 {6.13310003, 13.1802502}, //
+
35013 {6.13172007, 13.1776695}, //
+
35014 {6.13024998, 13.1750498}, //
+
35015 {6.12873983, 13.1725197}, //
+
35016 {6.12723017, 13.1702003}, //
+
35017 {6.12572002, 13.1680899}, //
+
35018 {6.12421989, 13.1661997}, //
+
35019 {6.12271023, 13.1645098}, //
+
35020 {6.1212101, 13.1630297}, //
+
35021 {6.11969995, 13.1617603}, //
+
35022 {6.11819983, 13.1606998}, //
+
35023 {6.11670017, 13.1598501}, //
+
35024 {6.11452007, 13.1583595}, //
+
35025 {6.11250019, 13.1569099}, //
+
35026 {6.11066008, 13.1555099}, //
+
35027 {6.10898018, 13.1541405}, //
+
35028 {6.10747004, 13.1528196}, //
+
35029 {6.10612011, 13.1515398}, //
+
35030 {6.10494995, 13.1503}, //
+
35031 {6.10394001, 13.1491003}, //
+
35032 {6.10309982, 13.1479502}, //
+
35033 {6.10235023, 13.1468496}, //
+
35034 {6.10161018, 13.1457901}, //
+
35035 {6.10086012, 13.1447697}, //
+
35036 {6.10011005, 13.1437902}, //
+
35037 {6.09935999, 13.1428499}, //
+
35038 {6.09860992, 13.1419497}, //
+
35039 {6.09785986, 13.1410904}, //
+
35040 {6.09709978, 13.1402798}, //
+
35041 {6.09635019, 13.1394997}, //
+
35042 {6.09631014, 13.1387196}, //
+
35043 {6.09617996, 13.1379004}, //
+
35044 {6.09597015, 13.1370401}, //
+
35045 {6.09568024, 13.1361399}, //
+
35046 {6.0953002, 13.1351995}, //
+
35047 {6.09484005, 13.1342096}, //
+
35048 {6.09428978, 13.1331797}, //
+
35049 {6.09365988, 13.1321096}, //
+
35050 {6.09294987, 13.1309996}, //
+
35051 {6.09215021, 13.1298904}, //
+
35052 {6.09126997, 13.1288204}, //
+
35053 {6.0903101, 13.1277905}, //
+
35054 {6.08927011, 13.1268101}, //
+
35055 {6.08814001, 13.1258698}, //
+
35056 {6.0869298, 13.12498}, //
+
35057 {6.08562994, 13.1241302}, //
+
35058 {6.08425999, 13.1233196}, //
+
35059 {6.08279991, 13.12255}, //
+
35060 {6.07968998, 13.11938}, //
+
35061 {6.07641983, 13.1159201}, //
+
35062 {6.07297993, 13.1121702}, //
+
35063 {6.06937981, 13.10812}, //
+
35064 {6.06560993, 13.1037798}, //
+
35065 {6.06166983, 13.0991497}, //
+
35066 {6.05755997, 13.0942297}, //
+
35067 {6.05328989, 13.0890102}, //
+
35068 {6.04885006, 13.0834999}, //
+
35069 {6.04441977, 13.0778799}, //
+
35070 {6.04016018, 13.0723}, //
+
35071 {6.03605986, 13.0667601}, //
+
35072 {6.03212976, 13.0612602}, //
+
35073 {6.02835989, 13.0558004}, //
+
35074 {6.02475977, 13.0503902}, //
+
35075 {6.02132988, 13.0450201}, //
+
35076 {6.01805019, 13.03969}, //
+
35077 {6.0149498, 13.0344}, //
+
35078 {6.01420021, 13.0329304}, //
+
35079 {6.01346016, 13.0315504}, //
+
35080 {6.01271009, 13.0302401}, //
+
35081 {6.01196003, 13.0290298}, //
+
35082 {6.01120996, 13.0278902}, //
+
35083 {6.0104599, 13.0268402}, //
+
35084 {6.00970984, 13.0258799}, //
+
35085 {6.00895023, 13.0249996}, //
+
35086 {6.00820017, 13.0242004}, //
+
35087 {6.00592995, 13.0211496}, //
+
35088 {6.00367022, 13.0180101}, //
+
35089 {6.00139999, 13.0147896}, //
+
35090 {5.99912977, 13.0114803}, //
+
35091 {5.99687004, 13.0080996}, //
+
35092 {5.99459982, 13.0046196}, //
+
35093 {5.99233007, 13.00107}, //
+
35094 {5.99006987, 12.9974203}, //
+
35095 {5.98780012, 12.9937}, //
+
35096 {5.98553991, 12.9899302}, //
+
35097 {5.9832902, 12.9861698}, //
+
35098 {5.97877979, 12.9786301}, //
+
35099 {5.97652006, 12.9748697}, //
+
35100 {5.97426987, 12.9710999}, //
+
35101 {5.96975994, 12.9635696}, //
+
35102 {5.96750021, 12.9597998}, //
+
35103 {5.96526003, 12.9561195}, //
+
35104 {5.96306992, 12.9525995}, //
+
35105 {5.96091986, 12.9492502}, //
+
35106 {5.95879984, 12.9460697}, //
+
35107 {5.95672989, 12.9430504}, //
+
35108 {5.95469999, 12.9401999}, //
+
35109 {5.95271015, 12.93752}, //
+
35110 {5.95075989, 12.9350004}, //
+
35111 {5.94885015, 12.9326496}, //
+
35112 {5.94708014, 12.9305201}, //
+
35113 {5.94550991, 12.9286404}, //
+
35114 {5.94415998, 12.9270096}, //
+
35115 {5.94300985, 12.9256296}, //
+
35116 {5.94207001, 12.9245005}, //
+
35117 {5.94133997, 12.9236298}, //
+
35118 {5.94082022, 12.9230003}, //
+
35119 {5.94040012, 12.9224997}, //
+
35120 });
+
35121 polys.push_back({
+
35122 {4.53560019, 12.9513197}, //
+
35123 {4.53514004, 12.9514904}, //
+
35124 {4.53458977, 12.9518204}, //
+
35125 {4.53395987, 12.9523296}, //
+
35126 {4.53324986, 12.9530001}, //
+
35127 {4.52744007, 12.9607801}, //
+
35128 {4.52054024, 12.9690704}, //
+
35129 {4.51253986, 12.9778605}, //
+
35130 {4.50345993, 12.9871502}, //
+
35131 {4.49328995, 12.9969501}, //
+
35132 {4.48202991, 13.0072403}, //
+
35133 {4.46967983, 13.0180397}, //
+
35134 {4.45623016, 13.0293503}, //
+
35135 {4.44169998, 13.0411501}, //
+
35136 {4.43381023, 13.0479898}, //
+
35137 {4.42521, 13.0549603}, //
+
35138 {4.41589022, 13.0620499}, //
+
35139 {4.40586996, 13.0692701}, //
+
35140 {4.39513016, 13.0766096}, //
+
35141 {4.38367987, 13.0840797}, //
+
35142 {4.37151003, 13.0916796}, //
+
35143 {4.35864019, 13.0993996}, //
+
35144 {4.34504986, 13.1072502}, //
+
35145 {4.3311801, 13.1146498}, //
+
35146 {4.31743002, 13.1210003}, //
+
35147 {4.30381012, 13.1262999}, //
+
35148 {4.29030991, 13.1305504}, //
+
35149 {4.27693987, 13.1337605}, //
+
35150 {4.26368999, 13.1359196}, //
+
35151 {4.25056982, 13.1370296}, //
+
35152 {4.23756981, 13.1370897}, //
+
35153 {4.22469997, 13.1360998}, //
+
35154 {4.21415997, 13.1338301}, //
+
35155 {4.20360994, 13.1315699}, //
+
35156 {4.19306993, 13.1293097}, //
+
35157 {4.18251991, 13.1270399}, //
+
35158 {4.1719799, 13.1247797}, //
+
35159 {4.16142988, 13.1225204}, //
+
35160 {4.15088987, 13.1202602}, //
+
35161 {4.14033985, 13.1180096}, //
+
35162 {4.12979984, 13.1157503}, //
+
35163 {4.11580992, 13.1114798}, //
+
35164 {4.10249996, 13.1077099}, //
+
35165 {4.08984995, 13.1044397}, //
+
35166 {4.07786989, 13.1016798}, //
+
35167 {4.06656981, 13.0994196}, //
+
35168 {4.05593014, 13.0976601}, //
+
35169 {4.04596996, 13.0964003}, //
+
35170 {4.03667021, 13.0956497}, //
+
35171 {4.02804995, 13.0953999}, //
+
35172 {4.02124977, 13.0952997}, //
+
35173 {4.01441002, 13.0949802}, //
+
35174 {4.00753021, 13.0944595}, //
+
35175 {4.00059986, 13.0937204}, //
+
35176 {3.99363995, 13.0927801}, //
+
35177 {3.98662996, 13.0916204}, //
+
35178 {3.97957993, 13.0902596}, //
+
35179 {3.97248006, 13.0886803}, //
+
35180 {3.96534991, 13.0868998}, //
+
35181 {3.95826006, 13.0848799}, //
+
35182 {3.95128989, 13.0825596}, //
+
35183 {3.94443989, 13.0799398}, //
+
35184 {3.93773007, 13.0770397}, //
+
35185 {3.93112993, 13.0738401}, //
+
35186 {3.92465997, 13.0703402}, //
+
35187 {3.91831994, 13.0665598}, //
+
35188 {3.91210008, 13.06248}, //
+
35189 {3.9059999, 13.0580997}, //
+
35190 {3.89938998, 13.0529404}, //
+
35191 {3.89311004, 13.0479803}, //
+
35192 {3.88717008, 13.0432301}, //
+
35193 {3.8815701, 13.0386896}, //
+
35194 {3.87629008, 13.0343599}, //
+
35195 {3.87136006, 13.0302296}, //
+
35196 {3.86675, 13.02631}, //
+
35197 {3.86247993, 13.0226002}, //
+
35198 {3.85855007, 13.0191002}, //
+
35199 {3.85494995, 13.0158596}, //
+
35200 {3.85169005, 13.0129099}, //
+
35201 {3.84875989, 13.0102501}, //
+
35202 {3.84615993, 13.0078897}, //
+
35203 {3.84389997, 13.0058098}, //
+
35204 {3.84196997, 13.0040302}, //
+
35205 {3.84037995, 13.0025501}, //
+
35206 {3.83911991, 13.0013504}, //
+
35207 {3.83820009, 13.0004501}, //
+
35208 {3.83827996, 13.0035295}, //
+
35209 {3.83853006, 13.0067396}, //
+
35210 {3.83894992, 13.0100803}, //
+
35211 {3.83952999, 13.0135403}, //
+
35212 {3.84028006, 13.0171204}, //
+
35213 {3.84120011, 13.0208302}, //
+
35214 {3.84227991, 13.0246601}, //
+
35215 {3.84352994, 13.0286198}, //
+
35216 {3.84494996, 13.0326996}, //
+
35217 {3.84649992, 13.0368004}, //
+
35218 {3.84814, 13.0408201}, //
+
35219 {3.84985995, 13.0447598}, //
+
35220 {3.85166001, 13.0486097}, //
+
35221 {3.85353994, 13.0523701}, //
+
35222 {3.85551, 13.0560598}, //
+
35223 {3.85754991, 13.0596504}, //
+
35224 {3.85968995, 13.0631704}, //
+
35225 {3.86190009, 13.0665998}, //
+
35226 {3.86412001, 13.0698795}, //
+
35227 {3.86627007, 13.0729599}, //
+
35228 {3.86831999, 13.0758305}, //
+
35229 {3.87030005, 13.0784903}, //
+
35230 {3.87217999, 13.0809402}, //
+
35231 {3.87399006, 13.0831804}, //
+
35232 {3.87571001, 13.0852098}, //
+
35233 {3.87735009, 13.0870304}, //
+
35234 {3.87890005, 13.0886497}, //
+
35235 {3.88204002, 13.0908804}, //
+
35236 {3.88542008, 13.0930796}, //
+
35237 {3.88906002, 13.0952301}, //
+
35238 {3.89295006, 13.0973396}, //
+
35239 {3.89708996, 13.0993996}, //
+
35240 {3.90147996, 13.1014299}, //
+
35241 {3.90612006, 13.1034098}, //
+
35242 {3.91101003, 13.1053495}, //
+
35243 {3.91615009, 13.1072502}, //
+
35244 {3.92150998, 13.1091204}, //
+
35245 {3.9270401, 13.11094}, //
+
35246 {3.93272996, 13.11273}, //
+
35247 {3.93859005, 13.1144695}, //
+
35248 {3.94461989, 13.1161699}, //
+
35249 {3.95081997, 13.1178303}, //
+
35250 {3.95718002, 13.1194401}, //
+
35251 {3.96371007, 13.1210203}, //
+
35252 {3.97040009, 13.12255}, //
+
35253 {3.98224998, 13.1255598}, //
+
35254 {3.99366999, 13.1285696}, //
+
35255 {4.00468016, 13.1315804}, //
+
35256 {4.01527023, 13.1345901}, //
+
35257 {4.02545023, 13.1376104}, //
+
35258 {4.03520012, 13.1406202}, //
+
35259 {4.04453993, 13.14363}, //
+
35260 {4.05345011, 13.1466398}, //
+
35261 {4.06195021, 13.1496496}, //
+
35262 {4.06647015, 13.1512403}, //
+
35263 {4.07099009, 13.1530104}, //
+
35264 {4.07552004, 13.1549301}, //
+
35265 {4.08003998, 13.1570301}, //
+
35266 {4.08455992, 13.1592903}, //
+
35267 {4.08907986, 13.1617203}, //
+
35268 {4.09360981, 13.1643105}, //
+
35269 {4.09813023, 13.1670704}, //
+
35270 {4.10265017, 13.1700001}, //
+
35271 {4.10950994, 13.1744204}, //
+
35272 {4.11653996, 13.1786203}, //
+
35273 {4.1237402, 13.18262}, //
+
35274 {4.13110018, 13.18641}, //
+
35275 {4.13863993, 13.18999}, //
+
35276 {4.14633989, 13.1933603}, //
+
35277 {4.15421009, 13.1965103}, //
+
35278 {4.16225004, 13.19946}, //
+
35279 {4.17045021, 13.2021999}, //
+
35280 {4.17869997, 13.2046099}, //
+
35281 {4.18686008, 13.2065697}, //
+
35282 {4.19494009, 13.2080603}, //
+
35283 {4.20292997, 13.2090797}, //
+
35284 {4.21084976, 13.20965}, //
+
35285 {4.21866989, 13.2097597}, //
+
35286 {4.22641993, 13.2094002}, //
+
35287 {4.23406982, 13.20858}, //
+
35288 {4.2416501, 13.2073002}, //
+
35289 {4.25149012, 13.2040997}, //
+
35290 {4.26141977, 13.2005196}, //
+
35291 {4.27142, 13.1965704}, //
+
35292 {4.28150988, 13.1922302}, //
+
35293 {4.29167986, 13.18752}, //
+
35294 {4.30193996, 13.1824303}, //
+
35295 {4.31228018, 13.1769695}, //
+
35296 {4.32270002, 13.1711197}, //
+
35297 {4.33319998, 13.1648998}, //
+
35298 {4.34358978, 13.1585598}, //
+
35299 {4.35364008, 13.1523504}, //
+
35300 {4.36335993, 13.1462603}, //
+
35301 {4.37273979, 13.1402998}, //
+
35302 {4.38178015, 13.1344604}, //
+
35303 {4.39049006, 13.1287403}, //
+
35304 {4.39885998, 13.1231499}, //
+
35305 {4.40689993, 13.1176901}, //
+
35306 {4.4145999, 13.1123505}, //
+
35307 {4.41907978, 13.1086302}, //
+
35308 {4.42348003, 13.1049805}, //
+
35309 {4.42779016, 13.1014299}, //
+
35310 {4.43202019, 13.09795}, //
+
35311 {4.43616009, 13.0945702}, //
+
35312 {4.44021988, 13.09126}, //
+
35313 {4.44420004, 13.0880404}, //
+
35314 {4.44809008, 13.0848999}, //
+
35315 {4.45190001, 13.0818501}, //
+
35316 {4.45767021, 13.0781298}, //
+
35317 {4.46294022, 13.0744801}, //
+
35318 {4.46771002, 13.0709295}, //
+
35319 {4.47198009, 13.0674496}, //
+
35320 {4.47574997, 13.0640697}, //
+
35321 {4.47901011, 13.0607595}, //
+
35322 {4.48178005, 13.0575399}, //
+
35323 {4.48403978, 13.0544004}, //
+
35324 {4.48579979, 13.0513496}, //
+
35325 {4.4858799, 13.0505104}, //
+
35326 {4.48613024, 13.0495005}, //
+
35327 {4.48654985, 13.0483303}, //
+
35328 {4.48713017, 13.0469799}, //
+
35329 {4.48788023, 13.0454702}, //
+
35330 {4.48880005, 13.0437899}, //
+
35331 {4.48988008, 13.0419502}, //
+
35332 {4.49112988, 13.0399303}, //
+
35333 {4.4925499, 13.0377502}, //
+
35334 {4.49406004, 13.03545}, //
+
35335 {4.49557018, 13.0330696}, //
+
35336 {4.49707985, 13.0306101}, //
+
35337 {4.49858999, 13.02806}, //
+
35338 {4.50011015, 13.0254202}, //
+
35339 {4.50161982, 13.0227098}, //
+
35340 {4.50312996, 13.0199003}, //
+
35341 {4.5046401, 13.0170202}, //
+
35342 {4.50614977, 13.0140495}, //
+
35343 {4.5076499, 13.0110502}, //
+
35344 {4.50915003, 13.00809}, //
+
35345 {4.51066017, 13.0051804}, //
+
35346 {4.51215982, 13.0023098}, //
+
35347 {4.51366997, 12.9994802}, //
+
35348 {4.5151701, 12.9966898}, //
+
35349 {4.51667976, 12.9939499}, //
+
35350 {4.51818991, 12.99125}, //
+
35351 {4.51970005, 12.9885998}, //
+
35352 {4.52119017, 12.9859896}, //
+
35353 {4.52264023, 12.9834099}, //
+
35354 {4.52404022, 12.9808798}, //
+
35355 {4.52540016, 12.9783897}, //
+
35356 {4.52672005, 12.9759398}, //
+
35357 {4.52798986, 12.9735298}, //
+
35358 {4.5292201, 12.9711599}, //
+
35359 {4.53040981, 12.9688396}, //
+
35360 {4.53154993, 12.9665499}, //
+
35361 {4.53261995, 12.9643803}, //
+
35362 {4.5335598, 12.9623699}, //
+
35363 {4.53437996, 12.9605303}, //
+
35364 {4.53507996, 12.9588604}, //
+
35365 {4.53563976, 12.9573603}, //
+
35366 {4.53607988, 12.9560204}, //
+
35367 {4.53639984, 12.9548397}, //
+
35368 {4.5365901, 12.9538403}, //
+
35369 {4.53665018, 12.9530001}, //
+
35370 {4.53661013, 12.9523296}, //
+
35371 {4.53647995, 12.9518204}, //
+
35372 {4.53627014, 12.9514904}, //
+
35373 {4.53598022, 12.9513197}, //
+
35374 });
+
35375 polys.push_back({
+
35376 {1.57325006, 12.9462004}, //
+
35377 {1.57254004, 12.9485102}, //
+
35378 {1.57191002, 12.9509001}, //
+
35379 {1.57135999, 12.9533701}, //
+
35380 {1.57089996, 12.9559298}, //
+
35381 {1.57052004, 12.9585695}, //
+
35382 {1.57023001, 12.9612904}, //
+
35383 {1.57001996, 12.9640903}, //
+
35384 {1.56989002, 12.96698}, //
+
35385 {1.56984997, 12.9699497}, //
+
35386 {1.56982994, 12.9722204}, //
+
35387 {1.56976998, 12.9744797}, //
+
35388 {1.56965995, 12.9767399}, //
+
35389 {1.56950998, 12.9790096}, //
+
35390 {1.56932998, 12.9812698}, //
+
35391 {1.56909001, 12.98353}, //
+
35392 {1.56882, 12.9857903}, //
+
35393 {1.56851006, 12.98804}, //
+
35394 {1.56815004, 12.9903002}, //
+
35395 {1.56774998, 12.9925604}, //
+
35396 {1.56730998, 12.9948101}, //
+
35397 {1.56683004, 12.9970703}, //
+
35398 {1.56631005, 12.9993296}, //
+
35399 {1.56575, 13.0015898}, //
+
35400 {1.56515002, 13.0038605}, //
+
35401 {1.56450999, 13.0061197}, //
+
35402 {1.56382, 13.0083799}, //
+
35403 {1.56309998, 13.0106497}, //
+
35404 {1.56166995, 13.0106897}, //
+
35405 {1.56041002, 13.0108204}, //
+
35406 {1.55931997, 13.0110302}, //
+
35407 {1.55840003, 13.0113201}, //
+
35408 {1.55763996, 13.0116997}, //
+
35409 {1.55706, 13.0121603}, //
+
35410 {1.55664003, 13.0127096}, //
+
35411 {1.55638003, 13.01334}, //
+
35412 {1.55630004, 13.0140495}, //
+
35413 {1.55476999, 13.0155096}, //
+
35414 {1.55318999, 13.01688}, //
+
35415 {1.55157995, 13.0181799}, //
+
35416 {1.54991996, 13.0193901}, //
+
35417 {1.54822004, 13.0205202}, //
+
35418 {1.54647994, 13.0215597}, //
+
35419 {1.54469001, 13.0225201}, //
+
35420 {1.54287004, 13.0234003}, //
+
35421 {1.54100001, 13.0242004}, //
+
35422 {1.53898001, 13.0248299}, //
+
35423 {1.53665996, 13.0252104}, //
+
35424 {1.53403997, 13.0253296}, //
+
35425 {1.53113997, 13.0252104}, //
+
35426 {1.52794003, 13.0248299}, //
+
35427 {1.52444005, 13.0242004}, //
+
35428 {1.52066004, 13.0233202}, //
+
35429 {1.51657999, 13.0221901}, //
+
35430 {1.5122, 13.0207996}, //
+
35431 {1.50901997, 13.0200901}, //
+
35432 {1.50550997, 13.0194597}, //
+
35433 {1.50165999, 13.0189104}, //
+
35434 {1.49748003, 13.0184498}, //
+
35435 {1.49295998, 13.0180702}, //
+
35436 {1.48810995, 13.0177803}, //
+
35437 {1.48292994, 13.0175695}, //
+
35438 {1.47739995, 13.0174398}, //
+
35439 {1.47154999, 13.0173998}, //
+
35440 {1.46853006, 13.0166798}, //
+
35441 {1.46551001, 13.0159903}, //
+
35442 {1.46248996, 13.0153503}, //
+
35443 {1.45947003, 13.0147495}, //
+
35444 {1.45644999, 13.0141897}, //
+
35445 {1.45343995, 13.01367}, //
+
35446 {1.45042002, 13.0131903}, //
+
35447 {1.44740999, 13.0127497}, //
+
35448 {1.44439995, 13.0123501}, //
+
35449 {1.44145, 13.0119305}, //
+
35450 {1.43862998, 13.0114298}, //
+
35451 {1.43593001, 13.0108404}, //
+
35452 {1.43334997, 13.01017}, //
+
35453 {1.43089998, 13.0094099}, //
+
35454 {1.42858005, 13.0085697}, //
+
35455 {1.42638004, 13.0076504}, //
+
35456 {1.42429996, 13.0066404}, //
+
35457 {1.42235005, 13.0055504}, //
+
35458 {1.42061996, 13.0044403}, //
+
35459 {1.41918004, 13.0033703}, //
+
35460 {1.41803002, 13.0023403}, //
+
35461 {1.41717994, 13.0013599}, //
+
35462 {1.41662002, 13.0004196}, //
+
35463 {1.41635001, 12.9995298}, //
+
35464 {1.41637003, 12.9986801}, //
+
35465 {1.41668999, 12.9978704}, //
+
35466 {1.41729999, 12.9970999}, //
+
35467 {1.41799998, 12.9955902}, //
+
35468 {1.41861999, 12.9940796}, //
+
35469 {1.41916001, 12.9925699}, //
+
35470 {1.41962004, 12.9910603}, //
+
35471 {1.41998994, 12.9895401}, //
+
35472 {1.42027998, 12.9880304}, //
+
35473 {1.42048001, 12.9865198}, //
+
35474 {1.42060995, 12.9850101}, //
+
35475 {1.42065001, 12.9834995}, //
+
35476 {1.42138004, 12.9827499}, //
+
35477 {1.42208004, 12.9820099}, //
+
35478 {1.42272997, 12.9812603}, //
+
35479 {1.42333996, 12.9805098}, //
+
35480 {1.42390001, 12.9797602}, //
+
35481 {1.42443001, 12.9790096}, //
+
35482 {1.42490995, 12.97826}, //
+
35483 {1.42534995, 12.9775}, //
+
35484 {1.42575002, 12.9767504}, //
+
35485 {1.42621005, 12.9760399}, //
+
35486 {1.42683995, 12.9754105}, //
+
35487 {1.42762995, 12.9748602}, //
+
35488 {1.42859006, 12.9743996}, //
+
35489 {1.42972004, 12.97402}, //
+
35490 {1.43102002, 12.9737301}, //
+
35491 {1.43247998, 12.9735203}, //
+
35492 {1.43411005, 12.9733896}, //
+
35493 {1.43589997, 12.9733496}, //
+
35494 {1.43789005, 12.9733896}, //
+
35495 {1.44009995, 12.9735203}, //
+
35496 {1.44251001, 12.9737301}, //
+
35497 {1.44511998, 12.97402}, //
+
35498 {1.44795001, 12.9743996}, //
+
35499 {1.45098996, 12.9748602}, //
+
35500 {1.45422995, 12.9754105}, //
+
35501 {1.45769, 12.9760399}, //
+
35502 {1.46134996, 12.9767504}, //
+
35503 {1.47008002, 12.9788599}, //
+
35504 {1.47818005, 12.9806805}, //
+
35505 {1.48565996, 12.9821997}, //
+
35506 {1.49249995, 12.9834299}, //
+
35507 {1.49872005, 12.9843702}, //
+
35508 {1.50431001, 12.9850197}, //
+
35509 {1.50926995, 12.9853697}, //
+
35510 {1.51359999, 12.9854298}, //
+
35511 {1.51730001, 12.9851999}, //
+
35512 {1.52049994, 12.9846296}, //
+
35513 {1.52331996, 12.9836903}, //
+
35514 {1.52576995, 12.9823704}, //
+
35515 {1.52784002, 12.9806805}, //
+
35516 {1.52953994, 12.9785995}, //
+
35517 {1.53085995, 12.97616}, //
+
35518 {1.53180003, 12.9733295}, //
+
35519 {1.53235996, 12.97013}, //
+
35520 {1.53254998, 12.9665499}, //
+
35521 {1.53251004, 12.9642696}, //
+
35522 {1.53237998, 12.9619503}, //
+
35523 {1.53217006, 12.95959}, //
+
35524 {1.53188002, 12.95718}, //
+
35525 {1.53149998, 12.95473}, //
+
35526 {1.53103995, 12.95224}, //
+
35527 {1.53049004, 12.9497004}, //
+
35528 {1.52986002, 12.9471197}, //
+
35529 {1.52915001, 12.9445}, //
+
35530 {1.52836001, 12.9419699}, //
+
35531 {1.52749002, 12.9396496}, //
+
35532 {1.52653003, 12.9375401}, //
+
35533 {1.52549005, 12.9356403}, //
+
35534 {1.52435994, 12.9339399}, //
+
35535 {1.52314997, 12.9324598}, //
+
35536 {1.52184999, 12.93118}, //
+
35537 {1.52047002, 12.93011}, //
+
35538 {1.51900005, 12.9292498}, //
+
35539 {1.51744998, 12.9286299}, //
+
35540 {1.51581001, 12.9282598}, //
+
35541 {1.51408994, 12.9281397}, //
+
35542 {1.51229, 12.9282703}, //
+
35543 {1.51040995, 12.9286499}, //
+
35544 {1.50844002, 12.9292698}, //
+
35545 {1.50639999, 12.93015}, //
+
35546 {1.50425994, 12.9312696}, //
+
35547 {1.50205004, 12.9326496}, //
+
35548 {1.49816, 12.9355803}, //
+
35549 {1.49400997, 12.9383402}, //
+
35550 {1.48961997, 12.9409304}, //
+
35551 {1.48496997, 12.9433603}, //
+
35552 {1.48006999, 12.9456196}, //
+
35553 {1.47492003, 12.9477196}, //
+
35554 {1.46950996, 12.9496403}, //
+
35555 {1.46386003, 12.9514103}, //
+
35556 {1.45795, 12.9530001}, //
+
35557 {1.45422995, 12.9545097}, //
+
35558 {1.45058, 12.9560204}, //
+
35559 {1.44702995, 12.95753}, //
+
35560 {1.44354999, 12.9590302}, //
+
35561 {1.44017005, 12.9605398}, //
+
35562 {1.43685997, 12.9620399}, //
+
35563 {1.43364, 12.9635496}, //
+
35564 {1.43050003, 12.9650497}, //
+
35565 {1.42744994, 12.9665499}, //
+
35566 {1.42597997, 12.96733}, //
+
35567 {1.42460001, 12.9681501}, //
+
35568 {1.42329001, 12.9690104}, //
+
35569 {1.42208004, 12.9699097}, //
+
35570 {1.42094004, 12.97085}, //
+
35571 {1.41989005, 12.9718399}, //
+
35572 {1.41893005, 12.9728699}, //
+
35573 {1.41805005, 12.9739399}, //
+
35574 {1.41725004, 12.97505}, //
+
35575 {1.41655004, 12.97616}, //
+
35576 {1.41593003, 12.9772301}, //
+
35577 {1.41539001, 12.97826}, //
+
35578 {1.41492999, 12.9792404}, //
+
35579 {1.41455996, 12.9801798}, //
+
35580 {1.41427004, 12.9810696}, //
+
35581 {1.41407001, 12.9819202}, //
+
35582 {1.41393995, 12.9827299}, //
+
35583 {1.41390002, 12.9834995}, //
+
35584 {1.41314006, 12.9849701}, //
+
35585 {1.41238999, 12.9863501}, //
+
35586 {1.41163003, 12.9876604}, //
+
35587 {1.41087997, 12.9888697}, //
+
35588 {1.41012001, 12.9900103}, //
+
35589 {1.40936995, 12.9910603}, //
+
35590 {1.40860999, 12.9920197}, //
+
35591 {1.40786004, 12.9928999}, //
+
35592 {1.40709996, 12.9937}, //
+
35593 {1.40626001, 12.9944496}, //
+
35594 {1.40525997, 12.9952097}, //
+
35595 {1.40408003, 12.9959602}, //
+
35596 {1.40274, 12.9967098}, //
+
35597 {1.40123999, 12.9974604}, //
+
35598 {1.39956999, 12.99821}, //
+
35599 {1.39772999, 12.9989595}, //
+
35600 {1.39572001, 12.9996996}, //
+
35601 {1.39355004, 13.0004501}, //
+
35602 {1.38961995, 13.0012903}, //
+
35603 {1.38534999, 13.0022898}, //
+
35604 {1.38074005, 13.0034704}, //
+
35605 {1.37580001, 13.0048103}, //
+
35606 {1.37052, 13.0063105}, //
+
35607 {1.36491001, 13.0079803}, //
+
35608 {1.35896003, 13.00982}, //
+
35609 {1.35266995, 13.0118303}, //
+
35610 {1.34605002, 13.0139999}, //
+
35611 {1.33929002, 13.0162697}, //
+
35612 {1.33257997, 13.0185299}, //
+
35613 {1.32589996, 13.0207901}, //
+
35614 {1.31926, 13.0230598}, //
+
35615 {1.31266999, 13.0253201}, //
+
35616 {1.30612004, 13.0275803}, //
+
35617 {1.29960001, 13.0298405}, //
+
35618 {1.29313004, 13.0320902}, //
+
35619 {1.28670001, 13.0343504}, //
+
35620 {1.28057003, 13.0365696}, //
+
35621 {1.27498996, 13.0387201}, //
+
35622 {1.26995003, 13.0407696}, //
+
35623 {1.26546001, 13.0427504}, //
+
35624 {1.26151001, 13.0446301}, //
+
35625 {1.25810003, 13.0464401}, //
+
35626 {1.25523996, 13.0481596}, //
+
35627 {1.25292003, 13.0497999}, //
+
35628 {1.25115001, 13.0513496}, //
+
35629 {1.24846005, 13.0539999}, //
+
35630 {1.24775004, 13.0546999}, //
+
35631 {1.24693, 13.0561895}, //
+
35632 {1.24599004, 13.0576401}, //
+
35633 {1.24492002, 13.0590401}, //
+
35634 {1.24372005, 13.0604}, //
+
35635 {1.24240005, 13.0617199}, //
+
35636 {1.24094999, 13.0629902}, //
+
35637 {1.23938, 13.0642204}, //
+
35638 {1.23767996, 13.0654097}, //
+
35639 {1.23584998, 13.0665503}, //
+
35640 {1.23378003, 13.0676203}, //
+
35641 {1.23134005, 13.0685596}, //
+
35642 {1.22852004, 13.0693798}, //
+
35643 {1.22531998, 13.0700798}, //
+
35644 {1.22174001, 13.0706396}, //
+
35645 {1.21777999, 13.0710802}, //
+
35646 {1.21344995, 13.0713997}, //
+
35647 {1.20874, 13.0715904}, //
+
35648 {1.20365, 13.0716496}, //
+
35649 {1.19977999, 13.0717497}, //
+
35650 {1.19570005, 13.0720701}, //
+
35651 {1.19140995, 13.0725899}, //
+
35652 {1.18690002, 13.0733299}, //
+
35653 {1.18218994, 13.0742702}, //
+
35654 {1.17727005, 13.0754299}, //
+
35655 {1.17214, 13.0767899}, //
+
35656 {1.16680002, 13.0783701}, //
+
35657 {1.16125, 13.0801497}, //
+
35658 {1.15550005, 13.08214}, //
+
35659 {1.14953995, 13.0843496}, //
+
35660 {1.14337003, 13.0867596}, //
+
35661 {1.13698995, 13.0893698}, //
+
35662 {1.13039994, 13.0922003}, //
+
35663 {1.12361002, 13.0952396}, //
+
35664 {1.11660004, 13.0984802}, //
+
35665 {1.10938001, 13.1019402}, //
+
35666 {1.10195005, 13.1056004}, //
+
35667 {1.09319997, 13.10853}, //
+
35668 {1.08502996, 13.11129}, //
+
35669 {1.07746005, 13.1138802}, //
+
35670 {1.07045996, 13.1162996}, //
+
35671 {1.06405997, 13.1185598}, //
+
35672 {1.05824006, 13.1206398}, //
+
35673 {1.05300999, 13.1225595}, //
+
35674 {1.04835999, 13.12432}, //
+
35675 {1.04429996, 13.1259003}, //
+
35676 {1.03075004, 13.1259003}, //
+
35677 {1.02522004, 13.1266804}, //
+
35678 {1.01918995, 13.1274996}, //
+
35679 {1.01266003, 13.1283598}, //
+
35680 {1.00562, 13.1292601}, //
+
35681 {0.998080015, 13.1302004}, //
+
35682 {0.990038991, 13.1311903}, //
+
35683 {0.981495023, 13.1322203}, //
+
35684 {0.972449005, 13.1332903}, //
+
35685 {0.962899983, 13.1344004}, //
+
35686 {0.953194022, 13.1354704}, //
+
35687 {0.943656027, 13.1364098}, //
+
35688 {0.934283018, 13.1372299}, //
+
35689 {0.925077975, 13.1379299}, //
+
35690 {0.91603899, 13.1384897}, //
+
35691 {0.907167017, 13.1389303}, //
+
35692 {0.898460984, 13.1392498}, //
+
35693 {0.889922023, 13.1394396}, //
+
35694 {0.881550014, 13.1394997}, //
+
35695 {0.871906996, 13.1395597}, //
+
35696 {0.862555027, 13.1397495}, //
+
35697 {0.853493989, 13.1400604}, //
+
35698 {0.844725013, 13.1405001}, //
+
35699 {0.836247981, 13.1410599}, //
+
35700 {0.828060985, 13.1417398}, //
+
35701 {0.820165992, 13.1425505}, //
+
35702 {0.812561989, 13.1434898}, //
+
35703 {0.805249989, 13.1445503}, //
+
35704 {0.798492014, 13.1456203}, //
+
35705 {0.792528987, 13.1465597}, //
+
35706 {0.782988012, 13.1480799}, //
+
35707 {0.779410005, 13.1486397}, //
+
35708 {0.776628017, 13.1490803}, //
+
35709 {0.774640024, 13.1493998}, //
+
35710 {0.77344799, 13.1495895}, //
+
35711 {0.77305001, 13.1496496}, //
+
35712 {0.773280025, 13.1496696}, //
+
35713 {0.773971021, 13.1497297}, //
+
35714 {0.775121987, 13.1498404}, //
+
35715 {0.776733994, 13.1499901}, //
+
35716 {0.791700006, 13.15135}, //
+
35717 {0.795907021, 13.1517296}, //
+
35718 {0.800240993, 13.1521101}, //
+
35719 {0.804700017, 13.1524801}, //
+
35720 {0.809284985, 13.1528597}, //
+
35721 {0.813996017, 13.1532402}, //
+
35722 {0.818832994, 13.1536198}, //
+
35723 {0.823795974, 13.1539898}, //
+
35724 {0.828885019, 13.1543703}, //
+
35725 {0.834100008, 13.1547499}, //
+
35726 {0.839439988, 13.1551304}, //
+
35727 {0.844905019, 13.1555099}, //
+
35728 {0.850494027, 13.15588}, //
+
35729 {0.85620898, 13.1562595}, //
+
35730 {0.86204797, 13.1566401}, //
+
35731 {0.868010998, 13.1570196}, //
+
35732 {0.874099016, 13.1573896}, //
+
35733 {0.880312026, 13.1577702}, //
+
35734 {0.886650026, 13.1581497}, //
+
35735 {0.892903984, 13.1585102}, //
+
35736 {0.898864985, 13.1588202}, //
+
35737 {0.904533029, 13.15909}, //
+
35738 {0.90990901, 13.1593304}, //
+
35739 {0.914992988, 13.1595097}, //
+
35740 {0.919782996, 13.1596603}, //
+
35741 {0.924281001, 13.15977}, //
+
35742 {0.928487003, 13.1598301}, //
+
35743 {0.932399988, 13.1598501}, //
+
35744 {0.941569984, 13.15979}, //
+
35745 {0.950990021, 13.1596003}, //
+
35746 {0.960660994, 13.1592798}, //
+
35747 {0.970583022, 13.1588402}, //
+
35748 {0.980754972, 13.1582804}, //
+
35749 {0.991177976, 13.1575804}, //
+
35750 {1.00185001, 13.1567602}, //
+
35751 {1.01277995, 13.1558199}, //
+
35752 {1.02394998, 13.1547499}, //
+
35753 {1.03513002, 13.1536398}, //
+
35754 {1.04606998, 13.1525698}, //
+
35755 {1.05674005, 13.1515398}, //
+
35756 {1.06717002, 13.1505499}, //
+
35757 {1.07734001, 13.1496096}, //
+
35758 {1.08726001, 13.1487103}, //
+
35759 {1.09693003, 13.14785}, //
+
35760 {1.10634005, 13.1470299}, //
+
35761 {1.11549997, 13.1462498}, //
+
35762 {1.12516999, 13.1446695}, //
+
35763 {1.13460004, 13.14291}, //
+
35764 {1.14376998, 13.1409903}, //
+
35765 {1.15269005, 13.1388998}, //
+
35766 {1.16135001, 13.1366396}, //
+
35767 {1.16977, 13.1342096}, //
+
35768 {1.17793, 13.1316099}, //
+
35769 {1.18584001, 13.1288404}, //
+
35770 {1.19350004, 13.1259003}, //
+
35771 {1.19877994, 13.1236897}, //
+
35772 {1.20404994, 13.1215496}, //
+
35773 {1.20932996, 13.1195097}, //
+
35774 {1.21459997, 13.1175404}, //
+
35775 {1.21986997, 13.1156597}, //
+
35776 {1.22513998, 13.1138601}, //
+
35777 {1.23040998, 13.1121397}, //
+
35778 {1.23567998, 13.1105003}, //
+
35779 {1.24094999, 13.1089497}, //
+
35780 {1.24618995, 13.1073198}, //
+
35781 {1.25134003, 13.1054497}, //
+
35782 {1.25641, 13.1033201}, //
+
35783 {1.26138997, 13.1009398}, //
+
35784 {1.26628995, 13.0983}, //
+
35785 {1.27111006, 13.0954199}, //
+
35786 {1.27584004, 13.0922804}, //
+
35787 {1.28049004, 13.0888901}, //
+
35788 {1.28505003, 13.0852499}, //
+
35789 {1.29333997, 13.0809803}, //
+
35790 {1.30163002, 13.0772104}, //
+
35791 {1.30991995, 13.0739403}, //
+
35792 {1.31821001, 13.0711803}, //
+
35793 {1.32649004, 13.0689201}, //
+
35794 {1.33477998, 13.0671597}, //
+
35795 {1.34307003, 13.0658998}, //
+
35796 {1.35135996, 13.0651503}, //
+
35797 {1.35965002, 13.0649004}, //
+
35798 {1.36671996, 13.0648603}, //
+
35799 {1.37437999, 13.0647297}, //
+
35800 {1.38261998, 13.0645199}, //
+
35801 {1.39145005, 13.06423}, //
+
35802 {1.40086997, 13.0638504}, //
+
35803 {1.41086996, 13.0633898}, //
+
35804 {1.42146003, 13.0628405}, //
+
35805 {1.43263996, 13.0622101}, //
+
35806 {1.44439995, 13.0614996}, //
+
35807 {1.45255995, 13.06077}, //
+
35808 {1.46046996, 13.06007}, //
+
35809 {1.46812999, 13.0594196}, //
+
35810 {1.47554004, 13.0588102}, //
+
35811 {1.48269999, 13.0582504}, //
+
35812 {1.48959994, 13.0577202}, //
+
35813 {1.49625003, 13.0572395}, //
+
35814 {1.50265002, 13.0567999}, //
+
35815 {1.50880003, 13.0564003}, //
+
35816 {1.51461995, 13.0560904}, //
+
35817 {1.52003002, 13.0558996}, //
+
35818 {1.52502, 13.05583}, //
+
35819 {1.52959001, 13.0558996}, //
+
35820 {1.53374004, 13.0560904}, //
+
35821 {1.53746998, 13.0564003}, //
+
35822 {1.54077995, 13.0568399}, //
+
35823 {1.54367006, 13.0574102}, //
+
35824 {1.54614997, 13.0580997}, //
+
35825 {1.56309998, 13.0580997}, //
+
35826 {1.5668, 13.0588303}, //
+
35827 {1.57037997, 13.0595303}, //
+
35828 {1.57383001, 13.0601797}, //
+
35829 {1.57716, 13.0607901}, //
+
35830 {1.58036005, 13.0613499}, //
+
35831 {1.58343005, 13.0618801}, //
+
35832 {1.58638, 13.0623598}, //
+
35833 {1.58920002, 13.0628004}, //
+
35834 {1.59189999, 13.0632}, //
+
35835 {1.59439003, 13.0636396}, //
+
35836 {1.59658003, 13.0642004}, //
+
35837 {1.59847999, 13.0648899}, //
+
35838 {1.60009003, 13.0657101}, //
+
35839 {1.60141003, 13.0666504}, //
+
35840 {1.60242999, 13.0677099}, //
+
35841 {1.60316002, 13.0689001}, //
+
35842 {1.60360003, 13.0702105}, //
+
35843 {1.60374999, 13.0716496}, //
+
35844 {1.60374999, 13.0784502}, //
+
35845 {1.60443997, 13.0799999}, //
+
35846 {1.60501003, 13.0816402}, //
+
35847 {1.60545003, 13.0833597}, //
+
35848 {1.60575998, 13.0851603}, //
+
35849 {1.60595, 13.0870399}, //
+
35850 {1.60601997, 13.0890102}, //
+
35851 {1.60595, 13.0910501}, //
+
35852 {1.60575998, 13.0931902}, //
+
35853 {1.60545003, 13.0953999}, //
+
35854 {1.60496998, 13.0975399}, //
+
35855 {1.60427999, 13.0994301}, //
+
35856 {1.60337996, 13.1010704}, //
+
35857 {1.60227001, 13.1024504}, //
+
35858 {1.60095, 13.10359}, //
+
35859 {1.59942997, 13.1044703}, //
+
35860 {1.59768999, 13.1050997}, //
+
35861 {1.59574997, 13.1054697}, //
+
35862 {1.59360003, 13.1056004}, //
+
35863 {1.59116995, 13.1056204}, //
+
35864 {1.58840001, 13.1056805}, //
+
35865 {1.58528996, 13.1057796}, //
+
35866 {1.58185995, 13.1059303}, //
+
35867 {1.57808006, 13.1061096}, //
+
35868 {1.57397997, 13.1063299}, //
+
35869 {1.56954002, 13.1065998}, //
+
35870 {1.56475997, 13.1069002}, //
+
35871 {1.55964994, 13.1072502}, //
+
35872 {1.55441999, 13.1076298}, //
+
35873 {1.54928005, 13.1080103}, //
+
35874 {1.54421997, 13.1083803}, //
+
35875 {1.53925002, 13.1087599}, //
+
35876 {1.53435004, 13.1091404}, //
+
35877 {1.52953994, 13.10952}, //
+
35878 {1.52480996, 13.10989}, //
+
35879 {1.52015996, 13.1102695}, //
+
35880 {1.51559997, 13.1106501}, //
+
35881 {1.51125002, 13.1110497}, //
+
35882 {1.50723004, 13.1114902}, //
+
35883 {1.50354004, 13.1119699}, //
+
35884 {1.50020003, 13.1125002}, //
+
35885 {1.49719, 13.11306}, //
+
35886 {1.49451005, 13.1136703}, //
+
35887 {1.49216998, 13.1143198}, //
+
35888 {1.49017, 13.1150198}, //
+
35889 {1.4885, 13.1157503}, //
+
35890 {1.48686004, 13.1165304}, //
+
35891 {1.48497999, 13.1173401}, //
+
35892 {1.48283994, 13.1182003}, //
+
35893 {1.48045003, 13.1190996}, //
+
35894 {1.47781003, 13.1200399}, //
+
35895 {1.47492003, 13.1210203}, //
+
35896 {1.47177994, 13.1220398}, //
+
35897 {1.46838999, 13.1231003}, //
+
35898 {1.46475005, 13.1241999}, //
+
35899 {1.46101999, 13.12533}, //
+
35900 {1.45738006, 13.1264696}, //
+
35901 {1.45381999, 13.1275997}, //
+
35902 {1.45035005, 13.1287298}, //
+
35903 {1.44694996, 13.1298704}, //
+
35904 {1.44363999, 13.1309996}, //
+
35905 {1.44041002, 13.1321297}, //
+
35906 {1.43726003, 13.1332703}, //
+
35907 {1.43420005, 13.1344004}, //
+
35908 {1.43127, 13.1354704}, //
+
35909 {1.42850995, 13.1364098}, //
+
35910 {1.42592001, 13.1372299}, //
+
35911 {1.42349994, 13.1379299}, //
+
35912 {1.42123997, 13.1384897}, //
+
35913 {1.41916001, 13.1389303}, //
+
35914 {1.41724002, 13.1392498}, //
+
35915 {1.41548002, 13.1394396}, //
+
35916 {1.41390002, 13.1394997}, //
+
35917 {1.41294003, 13.1395397}, //
+
35918 {1.41155005, 13.1396704}, //
+
35919 {1.40974998, 13.1398697}, //
+
35920 {1.40752995, 13.1401596}, //
+
35921 {1.40488994, 13.1405296}, //
+
35922 {1.40182996, 13.1409903}, //
+
35923 {1.39836001, 13.14153}, //
+
35924 {1.39445996, 13.1421499}, //
+
35925 {1.39014995, 13.1428499}, //
+
35926 {1.38563001, 13.14361}, //
+
35927 {1.38110995, 13.1443596}, //
+
35928 {1.37658, 13.1451197}, //
+
35929 {1.36754, 13.1466303}, //
+
35930 {1.36301994, 13.1473799}, //
+
35931 {1.35848999, 13.14814}, //
+
35932 {1.35397005, 13.1488895}, //
+
35933 {1.34944999, 13.1496496}, //
+
35934 {1.34498, 13.1503601}, //
+
35935 {1.34059, 13.1509895}, //
+
35936 {1.33627999, 13.1515398}, //
+
35937 {1.33205998, 13.1520004}, //
+
35938 {1.32790995, 13.15238}, //
+
35939 {1.32385004, 13.1526699}, //
+
35940 {1.31987, 13.1528797}, //
+
35941 {1.31596994, 13.1530104}, //
+
35942 {1.31215, 13.1530504}, //
+
35943 {1.31061006, 13.15376}, //
+
35944 {1.30897999, 13.1543903}, //
+
35945 {1.30727005, 13.1549397}, //
+
35946 {1.30546999, 13.1554003}, //
+
35947 {1.30359006, 13.1557798}, //
+
35948 {1.30162001, 13.1560698}, //
+
35949 {1.29955995, 13.1562796}, //
+
35950 {1.29742002, 13.1564102}, //
+
35951 {1.29519999, 13.1564503}, //
+
35952 {1.29357004, 13.1565104}, //
+
35953 {1.29170001, 13.1567001}, //
+
35954 {1.28956997, 13.1570101}, //
+
35955 {1.28718996, 13.1574497}, //
+
35956 {1.28454995, 13.1580095}, //
+
35957 {1.28166997, 13.1586905}, //
+
35958 {1.27853, 13.1595001}, //
+
35959 {1.27514005, 13.1604404}, //
+
35960 {1.27149999, 13.1615}, //
+
35961 {1.26775002, 13.1626301}, //
+
35962 {1.26405001, 13.1637697}, //
+
35963 {1.26038003, 13.1648998}, //
+
35964 {1.25676, 13.1660299}, //
+
35965 {1.25318003, 13.1671696}, //
+
35966 {1.24962997, 13.1682997}, //
+
35967 {1.24612999, 13.1694298}, //
+
35968 {1.24267006, 13.1705704}, //
+
35969 {1.23924994, 13.1716995}, //
+
35970 {1.23588002, 13.1728497}, //
+
35971 {1.23256004, 13.1740503}, //
+
35972 {1.22926998, 13.1752796}, //
+
35973 {1.22602999, 13.1765604}, //
+
35974 {1.22283006, 13.1778803}, //
+
35975 {1.21967006, 13.1792297}, //
+
35976 {1.21656001, 13.1806297}, //
+
35977 {1.22063994, 13.1793003}, //
+
35978 {1.22930002, 13.1768503}, //
+
35979 {1.23872006, 13.17453}, //
+
35980 {1.24890006, 13.1723299}, //
+
35981 {1.25981998, 13.1702499}, //
+
35982 {1.27149999, 13.1682997}, //
+
35983 {1.28334999, 13.1665297}, //
+
35984 {1.29477, 13.1649599}, //
+
35985 {1.30578005, 13.1636105}, //
+
35986 {1.31637001, 13.1624603}, //
+
35987 {1.32655001, 13.16152}, //
+
35988 {1.33630002, 13.1607904}, //
+
35989 {1.34563994, 13.1602697}, //
+
35990 {1.35455, 13.1599503}, //
+
35991 {1.36304998, 13.1598501}, //
+
35992 {1.36910999, 13.1598902}, //
+
35993 {1.37526, 13.1600199}, //
+
35994 {1.38148999, 13.1602201}, //
+
35995 {1.38780999, 13.1605101}, //
+
35996 {1.39420998, 13.1608801}, //
+
35997 {1.40068996, 13.1613398}, //
+
35998 {1.40725994, 13.1618795}, //
+
35999 {1.41391003, 13.1625004}, //
+
36000 {1.42065001, 13.1632004}, //
+
36001 {1.43175006, 13.1645002}, //
+
36002 {1.44243002, 13.16539}, //
+
36003 {1.45269001, 13.1658497}, //
+
36004 {1.46254003, 13.1659002}, //
+
36005 {1.47195995, 13.1655197}, //
+
36006 {1.48096001, 13.1647301}, //
+
36007 {1.48953998, 13.1635199}, //
+
36008 {1.49770999, 13.1618996}, //
+
36009 {1.50545001, 13.1598501}, //
+
36010 {1.50932002, 13.15763}, //
+
36011 {1.51339996, 13.1554804}, //
+
36012 {1.51768994, 13.15343}, //
+
36013 {1.52218997, 13.1514502}, //
+
36014 {1.52689004, 13.1495705}, //
+
36015 {1.53181005, 13.1477604}, //
+
36016 {1.53692997, 13.14604}, //
+
36017 {1.54226005, 13.1443996}, //
+
36018 {1.54779994, 13.1428499}, //
+
36019 {1.55334997, 13.1414299}, //
+
36020 {1.55868995, 13.1401796}, //
+
36021 {1.56382, 13.1391001}, //
+
36022 {1.56874001, 13.1381798}, //
+
36023 {1.57344997, 13.1374302}, //
+
36024 {1.57796001, 13.1368504}, //
+
36025 {1.58225, 13.1364298}, //
+
36026 {1.58633006, 13.1361799}, //
+
36027 {1.59019995, 13.1360998}, //
+
36028 {1.59178996, 13.1360598}, //
+
36029 {1.59355998, 13.1359301}, //
+
36030 {1.59547997, 13.1357203}, //
+
36031 {1.59757996, 13.1354303}, //
+
36032 {1.59984004, 13.1350498}, //
+
36033 {1.60227001, 13.1345901}, //
+
36034 {1.60485995, 13.1340399}, //
+
36035 {1.60762, 13.1334105}, //
+
36036 {1.61055005, 13.1327}, //
+
36037 {1.61432004, 13.1326799}, //
+
36038 {1.61808002, 13.1326199}, //
+
36039 {1.62185001, 13.1325102}, //
+
36040 {1.62562001, 13.1323605}, //
+
36041 {1.62937999, 13.1321802}, //
+
36042 {1.63314998, 13.1319399}, //
+
36043 {1.63691998, 13.13167}, //
+
36044 {1.64067996, 13.1313601}, //
+
36045 {1.64444995, 13.1309996}, //
+
36046 {1.64801002, 13.1307697}, //
+
36047 {1.65114999, 13.1308298}, //
+
36048 {1.65386999, 13.1311903}, //
+
36049 {1.65617001, 13.1318398}, //
+
36050 {1.65804994, 13.1327801}, //
+
36051 {1.65952003, 13.1340199}, //
+
36052 {1.66056001, 13.1355495}, //
+
36053 {1.66119003, 13.1373796}, //
+
36054 {1.66139996, 13.1394997}, //
+
36055 {1.66136003, 13.1403399}, //
+
36056 {1.66122997, 13.1413403}, //
+
36057 {1.66102004, 13.14252}, //
+
36058 {1.66073, 13.1438599}, //
+
36059 {1.66034997, 13.14536}, //
+
36060 {1.65989006, 13.1470299}, //
+
36061 {1.65934002, 13.1488705}, //
+
36062 {1.65871, 13.1508799}, //
+
36063 {1.65799999, 13.1530504}, //
+
36064 {1.65725005, 13.1553097}, //
+
36065 {1.65651, 13.1575603}, //
+
36066 {1.65576005, 13.1598196}, //
+
36067 {1.65500998, 13.1620703}, //
+
36068 {1.65426004, 13.1643295}, //
+
36069 {1.65350997, 13.1665802}, //
+
36070 {1.65276003, 13.1688404}, //
+
36071 {1.65199995, 13.1710901}, //
+
36072 {1.65125, 13.1733503}, //
+
36073 {1.65047002, 13.1755695}, //
+
36074 {1.64964998, 13.1777201}, //
+
36075 {1.64879, 13.1797705}, //
+
36076 {1.64788997, 13.1817503}, //
+
36077 {1.64695001, 13.18363}, //
+
36078 {1.64595997, 13.1854401}, //
+
36079 {1.64493001, 13.1871595}, //
+
36080 {1.64385998, 13.1887999}, //
+
36081 {1.64275002, 13.1903496}, //
+
36082 {1.64074004, 13.1930399}, //
+
36083 {1.63992, 13.1941299}, //
+
36084 {1.63765001, 13.1971502}, //
+
36085 {1.64302003, 13.19312}, //
+
36086 {1.64444995, 13.19205}, //
+
36087 {1.64595997, 13.1908703}, //
+
36088 {1.64747, 13.18962}, //
+
36089 {1.64898002, 13.1882696}, //
+
36090 {1.65048003, 13.1868496}, //
+
36091 {1.65199006, 13.1853304}, //
+
36092 {1.65348995, 13.1837397}, //
+
36093 {1.65499997, 13.1820602}, //
+
36094 {1.65649998, 13.1802998}, //
+
36095 {1.65799999, 13.1784496}, //
+
36096 {1.65951002, 13.17659}, //
+
36097 {1.66102004, 13.1747799}, //
+
36098 {1.66252995, 13.1730003}, //
+
36099 {1.66402996, 13.1712599}, //
+
36100 {1.66553998, 13.16957}, //
+
36101 {1.66703999, 13.1679201}, //
+
36102 {1.66855001, 13.1662998}, //
+
36103 {1.67005002, 13.1647301}, //
+
36104 {1.67155004, 13.1632004}, //
+
36105 {1.67306006, 13.1617403}, //
+
36106 {1.67456996, 13.1603699}, //
+
36107 {1.67607999, 13.15907}, //
+
36108 {1.67759001, 13.1578598}, //
+
36109 {1.67911005, 13.1567297}, //
+
36110 {1.68061996, 13.1556902}, //
+
36111 {1.68212998, 13.1547298}, //
+
36112 {1.68364, 13.1538496}, //
+
36113 {1.68515003, 13.1530504}, //
+
36114 {1.68737996, 13.1515598}, //
+
36115 {1.68957996, 13.1501102}, //
+
36116 {1.69173002, 13.1487103}, //
+
36117 {1.69384003, 13.1473398}, //
+
36118 {1.69589996, 13.1460199}, //
+
36119 {1.69792998, 13.1447401}, //
+
36120 {1.69991004, 13.1435003}, //
+
36121 {1.70185006, 13.1422997}, //
+
36122 {1.70375001, 13.1411505}, //
+
36123 {1.70545006, 13.1400099}, //
+
36124 {1.70676994, 13.1388197}, //
+
36125 {1.70772004, 13.1375904}, //
+
36126 {1.70828998, 13.1363201}, //
+
36127 {1.70849001, 13.1350002}, //
+
36128 {1.70831001, 13.1336403}, //
+
36129 {1.70774996, 13.1322403}, //
+
36130 {1.70681, 13.1307898}, //
+
36131 {1.70550001, 13.1293001}, //
+
36132 {1.70466006, 13.1270399}, //
+
36133 {1.70365, 13.1247902}, //
+
36134 {1.70247996, 13.12253}, //
+
36135 {1.70113003, 13.1202698}, //
+
36136 {1.69962001, 13.1180096}, //
+
36137 {1.69793999, 13.1157398}, //
+
36138 {1.6961, 13.1134796}, //
+
36139 {1.69408, 13.1112204}, //
+
36140 {1.69190001, 13.1089497}, //
+
36141 {1.6904, 13.1066904}, //
+
36142 {1.68889999, 13.1044397}, //
+
36143 {1.68738997, 13.1021795}, //
+
36144 {1.68588996, 13.0999203}, //
+
36145 {1.68438005, 13.0976601}, //
+
36146 {1.68288004, 13.0953903}, //
+
36147 {1.68137002, 13.0931301}, //
+
36148 {1.67986, 13.0908699}, //
+
36149 {1.67834997, 13.0886002}, //
+
36150 {1.67689002, 13.0863895}, //
+
36151 {1.67551994, 13.0842505}, //
+
36152 {1.67421997, 13.0822096}, //
+
36153 {1.67300999, 13.0802402}, //
+
36154 {1.67188001, 13.0783596}, //
+
36155 {1.67084002, 13.07656}, //
+
36156 {1.66988003, 13.0748396}, //
+
36157 {1.66900003, 13.0732002}, //
+
36158 {1.66820002, 13.0716496}, //
+
36159 {1.66742003, 13.0701704}, //
+
36160 {1.66659999, 13.0687304}, //
+
36161 {1.66574001, 13.0673304}, //
+
36162 {1.66483998, 13.06598}, //
+
36163 {1.66390002, 13.0646601}, //
+
36164 {1.66290998, 13.0633802}, //
+
36165 {1.66188002, 13.06215}, //
+
36166 {1.66080999, 13.0609503}, //
+
36167 {1.65970004, 13.0598001}, //
+
36168 {1.65859997, 13.0587101}, //
+
36169 {1.65753996, 13.0577002}, //
+
36170 {1.65652001, 13.0567799}, //
+
36171 {1.65553999, 13.0559397}, //
+
36172 {1.65460002, 13.0551796}, //
+
36173 {1.65369999, 13.0545101}, //
+
36174 {1.65284002, 13.0539198}, //
+
36175 {1.65202999, 13.0534201}, //
+
36176 {1.65125, 13.0530005}, //
+
36177 {1.65053999, 13.0528202}, //
+
36178 {1.64990997, 13.0530195}, //
+
36179 {1.64935994, 13.0535898}, //
+
36180 {1.64890003, 13.0545397}, //
+
36181 {1.64851999, 13.0558596}, //
+
36182 {1.64822996, 13.05756}, //
+
36183 {1.64802003, 13.0596304}, //
+
36184 {1.64788997, 13.0620804}, //
+
36185 {1.64785004, 13.0649004}, //
+
36186 {1.64788997, 13.0679502}, //
+
36187 {1.64802003, 13.0710897}, //
+
36188 {1.64822996, 13.0743103}, //
+
36189 {1.64851999, 13.0776196}, //
+
36190 {1.64890003, 13.0810003}, //
+
36191 {1.64935994, 13.0844803}, //
+
36192 {1.64990997, 13.0880299}, //
+
36193 {1.65053999, 13.0916796}, //
+
36194 {1.65125, 13.0953999}, //
+
36195 {1.65196002, 13.0976}, //
+
36196 {1.65259004, 13.0996799}, //
+
36197 {1.65313995, 13.1016302}, //
+
36198 {1.65359998, 13.1034498}, //
+
36199 {1.65398002, 13.1051397}, //
+
36200 {1.65427005, 13.1067104}, //
+
36201 {1.65447998, 13.1081495}, //
+
36202 {1.65461004, 13.1094599}, //
+
36203 {1.65464997, 13.1106501}, //
+
36204 {1.65461004, 13.1117201}, //
+
36205 {1.65447998, 13.1126604}, //
+
36206 {1.65427005, 13.1134796}, //
+
36207 {1.65398002, 13.1141796}, //
+
36208 {1.65359998, 13.1147404}, //
+
36209 {1.65313995, 13.11518}, //
+
36210 {1.65259004, 13.1155005}, //
+
36211 {1.65196002, 13.1156902}, //
+
36212 {1.65125, 13.1157503}, //
+
36213 {1.65125, 13.1191502}, //
+
36214 {1.65044999, 13.1191702}, //
+
36215 {1.64956999, 13.1192303}, //
+
36216 {1.64861, 13.1193399}, //
+
36217 {1.64756, 13.1194897}, //
+
36218 {1.64642, 13.1196699}, //
+
36219 {1.64521003, 13.1199102}, //
+
36220 {1.64390004, 13.1201801}, //
+
36221 {1.64251995, 13.1204901}, //
+
36222 {1.64104998, 13.1208496}, //
+
36223 {1.63959002, 13.1211901}, //
+
36224 {1.63821995, 13.1214399}, //
+
36225 {1.63691998, 13.1216097}, //
+
36226 {1.63571, 13.1216898}, //
+
36227 {1.63458002, 13.1216898}, //
+
36228 {1.63354003, 13.1216097}, //
+
36229 {1.63258004, 13.1214399}, //
+
36230 {1.63170004, 13.1211901}, //
+
36231 {1.63090003, 13.1208496}, //
+
36232 {1.63013995, 13.1203699}, //
+
36233 {1.62939, 13.1196699}, //
+
36234 {1.62863004, 13.1187696}, //
+
36235 {1.62787998, 13.1176596}, //
+
36236 {1.62712002, 13.1163397}, //
+
36237 {1.62636995, 13.11481}, //
+
36238 {1.62560999, 13.11306}, //
+
36239 {1.62486005, 13.1111097}, //
+
36240 {1.62409997, 13.1089497}, //
+
36241 {1.62409997, 13.0852499}, //
+
36242 {1.62406003, 13.0822697}, //
+
36243 {1.62392998, 13.07938}, //
+
36244 {1.62372005, 13.0765696}, //
+
36245 {1.62343001, 13.0738401}, //
+
36246 {1.62304997, 13.0712004}, //
+
36247 {1.62258995, 13.0686502}, //
+
36248 {1.62204003, 13.0661802}, //
+
36249 {1.62141001, 13.0637999}, //
+
36250 {1.6207, 13.0614996}, //
+
36251 {1.62, 13.0614796}, //
+
36252 {1.61938, 13.0614204}, //
+
36253 {1.61883998, 13.0613098}, //
+
36254 {1.61837995, 13.0611601}, //
+
36255 {1.61801004, 13.0609798}, //
+
36256 {1.61772001, 13.0607405}, //
+
36257 {1.61751997, 13.0604696}, //
+
36258 {1.61739004, 13.0601597}, //
+
36259 {1.61734998, 13.0598001}, //
+
36260 {1.61731005, 13.0594397}, //
+
36261 {1.61717999, 13.0591297}, //
+
36262 {1.61696994, 13.0588598}, //
+
36263 {1.61668003, 13.0586205}, //
+
36264 {1.61629999, 13.0584402}, //
+
36265 {1.61583996, 13.0582895}, //
+
36266 {1.61529005, 13.0581799}, //
+
36267 {1.61466002, 13.0581198}, //
+
36268 {1.61395001, 13.0580997}, //
+
36269 {1.61224997, 13.0564003}, //
+
36270 {1.61188996, 13.0559998}, //
+
36271 {1.61158001, 13.0555601}, //
+
36272 {1.61131001, 13.0550804}, //
+
36273 {1.61107004, 13.0545502}, //
+
36274 {1.61089003, 13.0539904}, //
+
36275 {1.61073995, 13.05338}, //
+
36276 {1.61063004, 13.0527296}, //
+
36277 {1.61056995, 13.0520296}, //
+
36278 {1.61055005, 13.0513}, //
+
36279 {1.61055005, 13.0411501}, //
+
36280 {1.61058998, 13.0366697}, //
+
36281 {1.61072004, 13.0322704}, //
+
36282 {1.61092997, 13.0279598}, //
+
36283 {1.61122, 13.0237303}, //
+
36284 {1.61160004, 13.0195904}, //
+
36285 {1.61205995, 13.0155296}, //
+
36286 {1.61260998, 13.0115499}, //
+
36287 {1.61324, 13.0076599}, //
+
36288 {1.61395001, 13.00385}, //
+
36289 {1.61395001, 12.9834995}, //
+
36290 {1.61317003, 12.9833498}, //
+
36291 {1.61234999, 12.9829102}, //
+
36292 {1.61149001, 12.9821796}, //
+
36293 {1.61058998, 12.9811602}, //
+
36294 {1.60965002, 12.9798403}, //
+
36295 {1.60865998, 12.9782305}, //
+
36296 {1.60763001, 12.9763298}, //
+
36297 {1.60655999, 12.9741402}, //
+
36298 {1.60545003, 12.9716501}, //
+
36299 {1.60431004, 12.9690199}, //
+
36300 {1.60311997, 12.9663801}, //
+
36301 {1.60188997, 12.9637403}, //
+
36302 {1.60062003, 12.9611101}, //
+
36303 {1.59930003, 12.9584703}, //
+
36304 {1.59793997, 12.9558296}, //
+
36305 {1.59653997, 12.9531898}, //
+
36306 {1.59509003, 12.9505396}, //
+
36307 {1.59360003, 12.9478998}, //
+
36308 {1.59209001, 12.9452896}, //
+
36309 {1.59057999, 12.9427099}, //
+
36310 {1.58906996, 12.9401798}, //
+
36311 {1.58756006, 12.9376898}, //
+
36312 {1.58604002, 12.9352398}, //
+
36313 {1.58453, 12.9328299}, //
+
36314 {1.58301997, 12.93046}, //
+
36315 {1.58150995, 12.9281397}, //
+
36316 {1.58000004, 12.9258499}, //
+
36317 {1.57858002, 12.9237204}, //
+
36318 {1.57732999, 12.9218397}, //
+
36319 {1.57624996, 12.9202099}, //
+
36320 {1.57533002, 12.9188299}, //
+
36321 {1.57457995, 12.9176998}, //
+
36322 {1.574, 12.9168301}, //
+
36323 {1.57358003, 12.9161997}, //
+
36324 {1.57333004, 12.9158297}, //
+
36325 {1.57325006, 12.9157}, //
+
36326 });
+
36327 polys.push_back({
+
36328 {6.35743999, 13.1192799}, //
+
36329 {6.35757017, 13.1196499}, //
+
36330 {6.35777998, 13.1202803}, //
+
36331 {6.3580699, 13.12115}, //
+
36332 {6.35844994, 13.1222801}, //
+
36333 {6.35891008, 13.1236601}, //
+
36334 {6.35945988, 13.1252899}, //
+
36335 {6.36008978, 13.1271696}, //
+
36336 {6.36079979, 13.1293001}, //
+
36337 {6.36244011, 13.1332798}, //
+
36338 {6.3643198, 13.1376696}, //
+
36339 {6.36645985, 13.1424799}, //
+
36340 {6.36853981, 13.1470404}, //
+
36341 {6.36826992, 13.1458397}, //
+
36342 {6.36798, 13.1441898}, //
+
36343 {6.3677702, 13.14258}, //
+
36344 {6.36764002, 13.1410198}, //
+
36345 {6.36759996, 13.1394997}, //
+
36346 {6.3633399, 13.1267204}, //
+
36347 {6.36289978, 13.1253996}, //
+
36348 {6.36250019, 13.1241999}, //
+
36349 {6.36210012, 13.1231403}, //
+
36350 {6.36166, 13.1222}, //
+
36351 {6.36117983, 13.1213903}, //
+
36352 {6.36065006, 13.1207104}, //
+
36353 {6.36008978, 13.1201496}, //
+
36354 {6.3594799, 13.11971}, //
+
36355 {6.35882998, 13.1194}, //
+
36356 {6.35812998, 13.1192102}, //
+
36357 {6.35739994, 13.1191502}, //
+
36358 });
+
36359 polys.push_back({
+
36360 {0.349611998, 12.9067202}, //
+
36361 {0.348861992, 12.9069099}, //
+
36362 {0.348111004, 12.9072199}, //
+
36363 {0.347359002, 12.9076595}, //
+
36364 {0.346605003, 12.9082203}, //
+
36365 {0.345849991, 12.9089003}, //
+
36366 {0.345093995, 12.9097204}, //
+
36367 {0.344339013, 12.9106598}, //
+
36368 {0.343582988, 12.9117298}, //
+
36369 {0.342828006, 12.91292}, //
+
36370 {0.34207201, 12.9142399}, //
+
36371 {0.341316998, 12.9156799}, //
+
36372 {0.340561002, 12.9172401}, //
+
36373 {0.33980599, 12.9189301}, //
+
36374 {0.339049995, 12.9207497}, //
+
36375 {0.338295013, 12.9226599}, //
+
36376 {0.337541014, 12.9246101}, //
+
36377 {0.336789012, 12.92661}, //
+
36378 {0.336037993, 12.9286404}, //
+
36379 {0.335287988, 12.9307203}, //
+
36380 {0.334538996, 12.9328403}, //
+
36381 {0.333790988, 12.9350004}, //
+
36382 {0.333045006, 12.9371996}, //
+
36383 {0.332300007, 12.9394503}, //
+
36384 {0.330830991, 12.9455605}, //
+
36385 {0.329445988, 12.9518299}, //
+
36386 {0.328144014, 12.9582701}, //
+
36387 {0.326927006, 12.96488}, //
+
36388 {0.325794011, 12.9716597}, //
+
36389 {0.324743986, 12.97861}, //
+
36390 {0.323778987, 12.9857197}, //
+
36391 {0.322898, 12.993}, //
+
36392 {0.322100013, 13.0004501}, //
+
36393 {0.321386009, 13.0078697}, //
+
36394 {0.320757002, 13.0150299}, //
+
36395 {0.320210993, 13.0219402}, //
+
36396 {0.319748998, 13.0285997}, //
+
36397 {0.319371998, 13.0350103}, //
+
36398 {0.319077998, 13.0411596}, //
+
36399 {0.318868011, 13.04706}, //
+
36400 {0.318742007, 13.0527096}, //
+
36401 {0.318699986, 13.0580997}, //
+
36402 {0.318699986, 13.0818501}, //
+
36403 {0.319496989, 13.0786896}, //
+
36404 {0.320376992, 13.0752401}, //
+
36405 {0.321339011, 13.0714903}, //
+
36406 {0.322384, 13.0674496}, //
+
36407 {0.323511988, 13.0631199}, //
+
36408 {0.324721992, 13.0584898}, //
+
36409 {0.326014996, 13.0535698}, //
+
36410 {0.327390999, 13.0483599}, //
+
36411 {0.328850001, 13.0428495}, //
+
36412 {0.330339998, 13.0371704}, //
+
36413 {0.331788003, 13.0314503}, //
+
36414 {0.333193988, 13.0256901}, //
+
36415 {0.334558994, 13.0198898}, //
+
36416 {0.335880995, 13.0140495}, //
+
36417 {0.337161005, 13.0081596}, //
+
36418 {0.338398993, 13.0022297}, //
+
36419 {0.339596003, 12.9962597}, //
+
36420 {0.340750009, 12.9902496}, //
+
36421 {0.341904014, 12.9843302}, //
+
36422 {0.343098015, 12.9786196}, //
+
36423 {0.344332993, 12.9731197}, //
+
36424 {0.345609009, 12.9678297}, //
+
36425 {0.346926004, 12.9627504}, //
+
36426 {0.348282993, 12.9578695}, //
+
36427 {0.34968099, 12.9532099}, //
+
36428 {0.351119995, 12.9487495}, //
+
36429 {0.352600008, 12.9445}, //
+
36430 {0.354027003, 12.9406004}, //
+
36431 {0.355286002, 12.93715}, //
+
36432 {0.356377989, 12.9341698}, //
+
36433 {0.359400004, 12.9259005}, //
+
36434 {0.359400004, 12.9242001}, //
+
36435 {0.359378994, 12.9237804}, //
+
36436 {0.359315991, 12.9232798}, //
+
36437 {0.359210998, 12.9226904}, //
+
36438 {0.359064013, 12.92202}, //
+
36439 {0.358875006, 12.9212599}, //
+
36440 {0.358644009, 12.9204197}, //
+
36441 {0.358372003, 12.9195004}, //
+
36442 {0.358056992, 12.9184904}, //
+
36443 {0.357342988, 12.9163103}, //
+
36444 {0.357028008, 12.9153004}, //
+
36445 {0.356756002, 12.9143801}, //
+
36446 {0.356525004, 12.9135399}, //
+
36447 {0.356335998, 12.9127798}, //
+
36448 {0.356189013, 12.9121103}, //
+
36449 {0.356083989, 12.91152}, //
+
36450 {0.356020987, 12.9110203}, //
+
36451 {0.356000006, 12.9105997}, //
+
36452 {0.355958015, 12.9102201}, //
+
36453 {0.355832011, 12.9098396}, //
+
36454 {0.355621994, 12.9094696}, //
+
36455 {0.355327994, 12.90909}, //
+
36456 {0.354950994, 12.9087095}, //
+
36457 {0.354488999, 12.90833}, //
+
36458 {0.35394299, 12.9079599}, //
+
36459 {0.353314012, 12.9075804}, //
+
36460 {0.352600008, 12.9071999}, //
+
36461 {0.35185501, 12.9069004}, //
+
36462 {0.351108998, 12.9067097}, //
+
36463 {0.35036099, 12.9066601}, //
+
36464 });
+
36465 polys.push_back({
+
36466 {5.74130011, 12.7547302}, //
+
36467 {5.73859978, 12.7570601}, //
+
36468 {5.73561001, 12.7599297}, //
+
36469 {5.73232985, 12.76334}, //
+
36470 {5.72875023, 12.7672997}, //
+
36471 {5.72488022, 12.7717896}, //
+
36472 {5.7207098, 12.7768402}, //
+
36473 {5.71624994, 12.7824202}, //
+
36474 {5.71150017, 12.7885504}, //
+
36475 {5.70660019, 12.7951498}, //
+
36476 {5.70170021, 12.8021202}, //
+
36477 {5.69680023, 12.8094702}, //
+
36478 {5.69189978, 12.8171997}, //
+
36479 {5.6869998, 12.8253002}, //
+
36480 {5.68209982, 12.8337698}, //
+
36481 {5.67719984, 12.8426199}, //
+
36482 {5.67229986, 12.8518496}, //
+
36483 {5.66739988, 12.8614502}, //
+
36484 {5.66270018, 12.8712502}, //
+
36485 {5.65837002, 12.8810501}, //
+
36486 {5.6544199, 12.8908396}, //
+
36487 {5.65084982, 12.9006395}, //
+
36488 {5.64764977, 12.91043}, //
+
36489 {5.64482021, 12.9202299}, //
+
36490 {5.64237022, 12.9300203}, //
+
36491 {5.6402998, 12.9398098}, //
+
36492 {5.63859987, 12.9496002}, //
+
36493 {5.63790989, 12.9591303}, //
+
36494 {5.63734007, 12.9681101}, //
+
36495 {5.63689995, 12.9765396}, //
+
36496 {5.63659, 12.9844303}, //
+
36497 {5.63640022, 12.9917803}, //
+
36498 {5.63633013, 12.99858}, //
+
36499 {5.63640022, 13.0048304}, //
+
36500 {5.63659, 13.01054}, //
+
36501 {5.63689995, 13.0157003}, //
+
36502 {5.63732004, 13.0204296}, //
+
36503 {5.63781977, 13.0248299}, //
+
36504 {5.63841009, 13.0288897}, //
+
36505 {5.63908005, 13.0326099}, //
+
36506 {5.63984013, 13.0360003}, //
+
36507 {5.64067984, 13.0390596}, //
+
36508 {5.64160013, 13.04177}, //
+
36509 {5.64261007, 13.0441504}, //
+
36510 {5.64370012, 13.0461998}, //
+
36511 {5.64489985, 13.0479803}, //
+
36512 {5.64622021, 13.0495596}, //
+
36513 {5.64765978, 13.0509195}, //
+
36514 {5.64923, 13.0520802}, //
+
36515 {5.65092993, 13.0530195}, //
+
36516 {5.65274, 13.0537596}, //
+
36517 {5.65468979, 13.0542803}, //
+
36518 {5.65676022, 13.0545998}, //
+
36519 {5.65894985, 13.0546999}, //
+
36520 {5.66059017, 13.0539799}, //
+
36521 {5.66246986, 13.0532904}, //
+
36522 {5.66460991, 13.0526505}, //
+
36523 {5.66699982, 13.0520496}, //
+
36524 {5.66964006, 13.0514898}, //
+
36525 {5.67253017, 13.0509701}, //
+
36526 {5.67567015, 13.0504904}, //
+
36527 {5.67905998, 13.0500498}, //
+
36528 {5.68270016, 13.0496502}, //
+
36529 {5.68637991, 13.0492496}, //
+
36530 {5.68989992, 13.04881}, //
+
36531 {5.69324017, 13.0483303}, //
+
36532 {5.69642019, 13.0478001}, //
+
36533 {5.69942999, 13.0472403}, //
+
36534 {5.70228004, 13.0466299}, //
+
36535 {5.70494986, 13.0459805}, //
+
36536 {5.70745993, 13.0452805}, //
+
36537 {5.70979977, 13.0445499}, //
+
36538 {5.71659994, 13.0445499}, //
+
36539 {5.71827984, 13.0444498}, //
+
36540 {5.72029018, 13.0441303}, //
+
36541 {5.72263002, 13.0436096}, //
+
36542 {5.72530985, 13.0428696}, //
+
36543 {5.72832012, 13.0419302}, //
+
36544 {5.7316699, 13.0407696}, //
+
36545 {5.73534012, 13.0394096}, //
+
36546 {5.73935986, 13.0378304}, //
+
36547 {5.74370003, 13.0360498}, //
+
36548 {5.74831009, 13.0339804}, //
+
36549 {5.75307989, 13.0315399}, //
+
36550 {5.75801992, 13.0287199}, //
+
36551 {5.76313019, 13.0255203}, //
+
36552 {5.76841021, 13.0219402}, //
+
36553 {5.77385998, 13.0179796}, //
+
36554 {5.77946997, 13.0136499}, //
+
36555 {5.78525019, 13.0089397}, //
+
36556 {5.79120016, 13.00385}, //
+
36557 {5.79495001, 13}, //
+
36558 {5.79864979, 12.9959803}, //
+
36559 {5.80230999, 12.9917898}, //
+
36560 {5.80593014, 12.9874401}, //
+
36561 {5.80951023, 12.9829197}, //
+
36562 {5.81303978, 12.9782305}, //
+
36563 {5.81653976, 12.9733696}, //
+
36564 {5.81999016, 12.9683399}, //
+
36565 {5.82340002, 12.96315}, //
+
36566 {5.82672977, 12.9579}, //
+
36567 {5.82992983, 12.9526997}, //
+
36568 {5.83300018, 12.9475298}, //
+
36569 {5.8359499, 12.9424105}, //
+
36570 {5.83876991, 12.9373302}, //
+
36571 {5.84146976, 12.9322796}, //
+
36572 {5.84403992, 12.9272804}, //
+
36573 {5.84647989, 12.9223204}, //
+
36574 {5.84880018, 12.9174004}, //
+
36575 {5.85094023, 12.9127302}, //
+
36576 {5.85282993, 12.9085197}, //
+
36577 {5.85446978, 12.9047699}, //
+
36578 {5.85585022, 12.9014797}, //
+
36579 {5.85698986, 12.8986597}, //
+
36580 {5.8578701, 12.8962898}, //
+
36581 {5.8585, 12.8943796}, //
+
36582 {5.85887003, 12.8929396}, //
+
36583 {5.85900021, 12.8919497}, //
+
36584 {5.85896015, 12.8912497}, //
+
36585 {5.85882998, 12.8906298}, //
+
36586 {5.85862017, 12.89009}, //
+
36587 {5.85832977, 12.8896303}, //
+
36588 {5.85795021, 12.8892603}, //
+
36589 {5.85749006, 12.8889704}, //
+
36590 {5.85693979, 12.8887701}, //
+
36591 {5.85630989, 12.8886404}, //
+
36592 {5.85559988, 12.8886003}, //
+
36593 {5.85557985, 12.8871498}, //
+
36594 {5.85551977, 12.8858299}, //
+
36595 {5.8554101, 12.8846302}, //
+
36596 {5.8552599, 12.8835602}, //
+
36597 {5.85508013, 12.8826199}, //
+
36598 {5.8548398, 12.8817997}, //
+
36599 {5.85456991, 12.8811102}, //
+
36600 {5.85425997, 12.8805399}, //
+
36601 {5.85389996, 12.8801003}, //
+
36602 {5.85349989, 12.8797598}, //
+
36603 {5.85305977, 12.8795099}, //
+
36604 {5.85258007, 12.8793402}, //
+
36605 {5.85204983, 12.8792601}, //
+
36606 {5.85149002, 12.8792601}, //
+
36607 {5.85088015, 12.8793402}, //
+
36608 {5.85023022, 12.8795099}, //
+
36609 {5.84953022, 12.8797598}, //
+
36610 {5.84880018, 12.8801003}, //
+
36611 {5.84805012, 12.8805799}, //
+
36612 {5.84731007, 12.8812704}, //
+
36613 {5.84656, 12.8821697}, //
+
36614 {5.84580994, 12.8832798}, //
+
36615 {5.84505987, 12.8845997}, //
+
36616 {5.84430981, 12.8861198}, //
+
36617 {5.84356022, 12.8878603}, //
+
36618 {5.84280014, 12.8898001}, //
+
36619 {5.84205008, 12.8919497}, //
+
36620 {5.83895016, 12.8972902}, //
+
36621 {5.83569002, 12.90275}, //
+
36622 {5.83226013, 12.9083405}, //
+
36623 {5.82866001, 12.9140596}, //
+
36624 {5.82490015, 12.9198999}, //
+
36625 {5.82096004, 12.9258604}, //
+
36626 {5.8168602, 12.9319496}, //
+
36627 {5.81259012, 12.9381599}, //
+
36628 {5.80814981, 12.9445}, //
+
36629 {5.80362988, 12.9507599}, //
+
36630 {5.79910994, 12.9567299}, //
+
36631 {5.79457998, 12.96241}, //
+
36632 {5.79006004, 12.9677896}, //
+
36633 {5.7855401, 12.9728804}, //
+
36634 {5.78102016, 12.9776802}, //
+
36635 {5.77649021, 12.9821796}, //
+
36636 {5.7719698, 12.9863901}, //
+
36637 {5.76744986, 12.9903002}, //
+
36638 {5.76105022, 12.9965801}, //
+
36639 {5.75540018, 13.0018501}, //
+
36640 {5.75051022, 13.0061197}, //
+
36641 {5.74635983, 13.0093803}, //
+
36642 {5.74296999, 13.0116396}, //
+
36643 {5.74034023, 13.0129004}, //
+
36644 {5.73846006, 13.0131502}, //
+
36645 {5.73732996, 13.0123997}, //
+
36646 {5.73694992, 13.0106497}, //
+
36647 {5.73696995, 13.0084496}, //
+
36648 {5.73703003, 13.0063696}, //
+
36649 {5.73714018, 13.0044203}, //
+
36650 {5.73728991, 13.0025902}, //
+
36651 {5.73747015, 13.0008898}, //
+
36652 {5.73771, 12.99932}, //
+
36653 {5.73797989, 12.9978704}, //
+
36654 {5.73828983, 12.9965496}, //
+
36655 {5.73864985, 12.9953499}, //
+
36656 {5.73908997, 12.9942102}, //
+
36657 {5.73964977, 12.9930201}, //
+
36658 {5.74034023, 12.9917898}, //
+
36659 {5.74115992, 12.9905195}, //
+
36660 {5.74209976, 12.9891996}, //
+
36661 {5.74315977, 12.9878397}, //
+
36662 {5.74434996, 12.9864397}, //
+
36663 {5.74565983, 12.9849901}, //
+
36664 {5.74709988, 12.9834995}, //
+
36665 {5.74785995, 12.9812899}, //
+
36666 {5.74861002, 12.9791498}, //
+
36667 {5.7493701, 12.9771099}, //
+
36668 {5.75012016, 12.9751396}, //
+
36669 {5.75087976, 12.9732599}, //
+
36670 {5.75162983, 12.9714603}, //
+
36671 {5.75238991, 12.9697399}, //
+
36672 {5.75313997, 12.9680996}, //
+
36673 {5.75390005, 12.9665499}, //
+
36674 {5.75457001, 12.9651299}, //
+
36675 {5.75508022, 12.9638796}, //
+
36676 {5.75541019, 12.9628}, //
+
36677 {5.75557995, 12.9618797}, //
+
36678 {5.75557995, 12.9611301}, //
+
36679 {5.75541019, 12.9605503}, //
+
36680 {5.75508022, 12.9601297}, //
+
36681 {5.75457001, 12.9598799}, //
+
36682 {5.75390005, 12.9597998}, //
+
36683 {5.75313997, 12.9598198}, //
+
36684 {5.75238991, 12.9598799}, //
+
36685 {5.75162983, 12.95998}, //
+
36686 {5.75087976, 12.9601297}, //
+
36687 {5.75012016, 12.96031}, //
+
36688 {5.7493701, 12.9605303}, //
+
36689 {5.74861002, 12.9608002}, //
+
36690 {5.74785995, 12.9610996}, //
+
36691 {5.74709988, 12.9614496}, //
+
36692 {5.74630022, 12.9618101}, //
+
36693 {5.74541998, 12.9621201}, //
+
36694 {5.74446011, 12.9623899}, //
+
36695 {5.74342012, 12.9626303}, //
+
36696 {5.74229002, 12.9628096}, //
+
36697 {5.74107981, 12.9629602}, //
+
36698 {5.73977995, 12.9630699}, //
+
36699 {5.73841, 12.96313}, //
+
36700 {5.73694992, 12.96315}, //
+
36701 {5.7354598, 12.9638796}, //
+
36702 {5.73401022, 12.9645796}, //
+
36703 {5.73261023, 12.96523}, //
+
36704 {5.7312398, 12.9658403}, //
+
36705 {5.72991991, 12.9664001}, //
+
36706 {5.72864008, 12.9669304}, //
+
36707 {5.72739983, 12.9674101}, //
+
36708 {5.7262001, 12.9678497}, //
+
36709 {5.72504997, 12.9682503}, //
+
36710 {5.72396994, 12.9685898}, //
+
36711 {5.72297001, 12.9688396}, //
+
36712 {5.7220602, 12.9690104}, //
+
36713 {5.72122002, 12.9690905}, //
+
36714 {5.72046995, 12.9690905}, //
+
36715 {5.71981001, 12.9690104}, //
+
36716 {5.71922016, 12.9688396}, //
+
36717 {5.71871996, 12.9685898}, //
+
36718 {5.71829987, 12.9682503}, //
+
36719 {5.71798992, 12.9678097}, //
+
36720 {5.71780014, 12.9672499}, //
+
36721 {5.71773005, 12.9665604}, //
+
36722 {5.71780014, 12.9657402}, //
+
36723 {5.71798992, 12.9647999}, //
+
36724 {5.71829987, 12.9637403}, //
+
36725 {5.71873999, 12.9625502}, //
+
36726 {5.71930981, 12.9612398}, //
+
36727 {5.71999979, 12.9597998}, //
+
36728 {5.72079992, 12.95753}, //
+
36729 {5.72168016, 12.9552698}, //
+
36730 {5.72264004, 12.9530096}, //
+
36731 {5.72368002, 12.9507399}, //
+
36732 {5.72481012, 12.9484797}, //
+
36733 {5.72601986, 12.9462204}, //
+
36734 {5.72732019, 12.9439602}, //
+
36735 {5.72869015, 12.9417105}, //
+
36736 {5.73015022, 12.9394503}, //
+
36737 {5.73163986, 12.9364405}, //
+
36738 {5.73308992, 12.9334297}, //
+
36739 {5.73448992, 12.9304104}, //
+
36740 {5.73584986, 12.9273996}, //
+
36741 {5.73717022, 12.9243803}, //
+
36742 {5.73844004, 12.92136}, //
+
36743 {5.7396698, 12.9183397}, //
+
36744 {5.74085999, 12.9153204}, //
+
36745 {5.7420001, 12.9123001}, //
+
36746 {5.74315023, 12.9094105}, //
+
36747 {5.74434996, 12.9067802}, //
+
36748 {5.74559021, 12.9043903}, //
+
36749 {5.74687004, 12.9022598}, //
+
36750 {5.74818993, 12.9003801}, //
+
36751 {5.74955988, 12.8987398}, //
+
36752 {5.75095987, 12.8973598}, //
+
36753 {5.75240993, 12.8962297}, //
+
36754 {5.75390005, 12.8953505}, //
+
36755 {5.75542021, 12.8945704}, //
+
36756 {5.75698996, 12.8937502}, //
+
36757 {5.75859022, 12.89289}, //
+
36758 {5.76025009, 12.8919897}, //
+
36759 {5.76194, 12.8910503}, //
+
36760 {5.76367998, 12.8900604}, //
+
36761 {5.76546001, 12.8890305}, //
+
36762 {5.7672801, 12.8879604}, //
+
36763 {5.76914978, 12.8868504}, //
+
36764 {5.77101994, 12.8857498}, //
+
36765 {5.77284002, 12.8846903}, //
+
36766 {5.77462006, 12.8836699}, //
+
36767 {5.77636003, 12.8826904}, //
+
36768 {5.77804995, 12.8817501}, //
+
36769 {5.77970982, 12.8808498}, //
+
36770 {5.78131008, 12.8799896}, //
+
36771 {5.78287983, 12.87918}, //
+
36772 {5.78439999, 12.8783998}, //
+
36773 {5.78578997, 12.8776903}, //
+
36774 {5.78692007, 12.8770599}, //
+
36775 {5.78779984, 12.8765097}, //
+
36776 {5.78843021, 12.87605}, //
+
36777 {5.78880978, 12.8756704}, //
+
36778 {5.78892994, 12.8753796}, //
+
36779 {5.78880978, 12.8751698}, //
+
36780 {5.78843021, 12.8750401}, //
+
36781 {5.78779984, 12.875}, //
+
36782 {5.78702021, 12.8743}, //
+
36783 {5.78620005, 12.8736801}, //
+
36784 {5.78533983, 12.8731403}, //
+
36785 {5.78444004, 12.8726797}, //
+
36786 {5.78350019, 12.8723097}, //
+
36787 {5.7825098, 12.8720198}, //
+
36788 {5.78147984, 12.8718204}, //
+
36789 {5.78040981, 12.8716898}, //
+
36790 {5.77930021, 12.8716497}, //
+
36791 {5.75390005, 12.8716497}, //
+
36792 {5.75466013, 12.8701401}, //
+
36793 {5.75523996, 12.8689604}, //
+
36794 {5.75559998, 12.8682499}, //
+
36795 {5.75600004, 12.8674898}, //
+
36796 {5.75644016, 12.8667402}, //
+
36797 {5.75691986, 12.8659801}, //
+
36798 {5.75744009, 12.8652296}, //
+
36799 {5.7579999, 12.8644695}, //
+
36800 {5.75860023, 12.8637199}, //
+
36801 {5.75924015, 12.8629599}, //
+
36802 {5.75993013, 12.8622103}, //
+
36803 {5.76065016, 12.8614502}, //
+
36804 {5.76141024, 12.8606701}, //
+
36805 {5.76215982, 12.8598499}, //
+
36806 {5.7629199, 12.8589897}, //
+
36807 {5.76366997, 12.8580904}, //
+
36808 {5.76443005, 12.8571501}, //
+
36809 {5.76518011, 12.8561602}, //
+
36810 {5.76594019, 12.8551302}, //
+
36811 {5.76668978, 12.8540602}, //
+
36812 {5.76744986, 12.8529501}, //
+
36813 {5.76815987, 12.8518496}, //
+
36814 {5.76878977, 12.85079}, //
+
36815 {5.76934004, 12.8497696}, //
+
36816 {5.76980019, 12.8487902}, //
+
36817 {5.77018023, 12.8478498}, //
+
36818 {5.77047014, 12.8469496}, //
+
36819 {5.77067995, 12.8460903}, //
+
36820 {5.77081013, 12.8452797}, //
+
36821 {5.77085018, 12.8444996}, //
+
36822 {5.77085018, 12.8410997}, //
+
36823 {5.76744986, 12.8410997}, //
+
36824 {5.76671982, 12.8403902}, //
+
36825 {5.76601982, 12.8397598}, //
+
36826 {5.76536989, 12.8392096}, //
+
36827 {5.76476002, 12.8387499}, //
+
36828 {5.76420021, 12.8383703}, //
+
36829 {5.76366997, 12.8380804}, //
+
36830 {5.76318979, 12.8378696}, //
+
36831 {5.76275015, 12.8377399}, //
+
36832 {5.76235008, 12.8376999}, //
+
36833 {5.76195002, 12.8377199}, //
+
36834 {5.7615099, 12.83778}, //
+
36835 {5.7610302, 12.8378897}, //
+
36836 {5.76049995, 12.8380404}, //
+
36837 {5.75994015, 12.8382196}, //
+
36838 {5.7593298, 12.83846}, //
+
36839 {5.75867987, 12.8387299}, //
+
36840 {5.75797987, 12.8390398}, //
+
36841 {5.75724983, 12.8394003}, //
+
36842 {5.75646019, 12.8397598}, //
+
36843 {5.75558996, 12.8400698}, //
+
36844 {5.75463009, 12.8403397}, //
+
36845 {5.75359011, 12.84058}, //
+
36846 {5.75246, 12.8407602}, //
+
36847 {5.75124979, 12.84091}, //
+
36848 {5.74994993, 12.8410196}, //
+
36849 {5.74856997, 12.8410797}, //
+
36850 {5.74709988, 12.8410997}, //
+
36851 {5.74634981, 12.8418102}, //
+
36852 {5.74559021, 12.8424397}, //
+
36853 {5.74484015, 12.8429899}, //
+
36854 {5.74409008, 12.8434496}, //
+
36855 {5.74334002, 12.8438301}, //
+
36856 {5.74258995, 12.84412}, //
+
36857 {5.74183989, 12.8443298}, //
+
36858 {5.74109983, 12.8444595}, //
+
36859 {5.74034977, 12.8444996}, //
+
36860 {5.73959017, 12.8452101}, //
+
36861 {5.7388401, 12.8458405}, //
+
36862 {5.73808002, 12.8463898}, //
+
36863 {5.73732996, 12.8468504}, //
+
36864 {5.73656988, 12.84723}, //
+
36865 {5.73581982, 12.8475199}, //
+
36866 {5.73506021, 12.8477297}, //
+
36867 {5.73431015, 12.8478603}, //
+
36868 {5.73355007, 12.8479004}, //
+
36869 {5.73015022, 12.8479004}, //
+
36870 {5.7267499, 12.8444996}, //
+
36871 {5.72678995, 12.8437004}, //
+
36872 {5.72692013, 12.8428202}, //
+
36873 {5.72712994, 12.8418598}, //
+
36874 {5.72741985, 12.8408098}, //
+
36875 {5.72779989, 12.8396702}, //
+
36876 {5.72826004, 12.83846}, //
+
36877 {5.72880983, 12.8371496}, //
+
36878 {5.72944021, 12.8357697}, //
+
36879 {5.73015022, 12.8343}, //
+
36880 {5.73090982, 12.8327999}, //
+
36881 {5.73165989, 12.8312998}, //
+
36882 {5.73241997, 12.8297901}, //
+
36883 {5.73317003, 12.82829}, //
+
36884 {5.73393011, 12.8267803}, //
+
36885 {5.73468018, 12.8252802}, //
+
36886 {5.73543978, 12.8237696}, //
+
36887 {5.73618984, 12.8222599}, //
+
36888 {5.73694992, 12.8207502}, //
+
36889 {5.73694992, 12.8174}, //
+
36890 {5.73769999, 12.8166399}, //
+
36891 {5.73846006, 12.8158903}, //
+
36892 {5.73921013, 12.8151302}, //
+
36893 {5.73996019, 12.8143797}, //
+
36894 {5.74070978, 12.8136196}, //
+
36895 {5.74145985, 12.81287}, //
+
36896 {5.74220991, 12.8121099}, //
+
36897 {5.74294996, 12.8113604}, //
+
36898 {5.74370003, 12.8106003}, //
+
36899 {5.74446011, 12.8090897}, //
+
36900 {5.74596977, 12.8060703}, //
+
36901 {5.74899006, 12.8000202}, //
+
36902 {5.7505002, 12.7969999}, //
+
36903 {5.75121021, 12.7954597}, //
+
36904 {5.75184011, 12.7938299}, //
+
36905 {5.75238991, 12.79212}, //
+
36906 {5.75285006, 12.7903299}, //
+
36907 {5.75323009, 12.7884502}, //
+
36908 {5.75352001, 12.7864904}, //
+
36909 {5.75372982, 12.78444}, //
+
36910 {5.75386, 12.7823095}, //
+
36911 {5.75390005, 12.7800999}, //
+
36912 {5.75386, 12.7785902}, //
+
36913 {5.75372982, 12.7770796}, //
+
36914 {5.75352001, 12.7755699}, //
+
36915 {5.75323009, 12.7740602}, //
+
36916 {5.75285006, 12.7725401}, //
+
36917 {5.75238991, 12.7710304}, //
+
36918 {5.75184011, 12.7695198}, //
+
36919 {5.75121021, 12.7680101}, //
+
36920 {5.7505002, 12.7665005}, //
+
36921 {5.74977016, 12.7650404}, //
+
36922 {5.74907017, 12.76367}, //
+
36923 {5.74841976, 12.7623701}, //
+
36924 {5.74780989, 12.7611599}, //
+
36925 {5.74725008, 12.7600298}, //
+
36926 {5.74671984, 12.7589903}, //
+
36927 {5.74624014, 12.7580299}, //
+
36928 {5.74580002, 12.7571497}, //
+
36929 {5.74539995, 12.7563496}, //
+
36930 {5.74503994, 12.75564}, //
+
36931 {5.74473, 12.7550097}, //
+
36932 {5.74446011, 12.7544603}, //
+
36933 {5.74421978, 12.7539997}, //
+
36934 {5.74404001, 12.7536201}, //
+
36935 {5.74388981, 12.7533302}, //
+
36936 {5.74370003, 12.7529497}, //
+
36937 });
+
36938 polys.push_back({
+
36939 {3.6347301, 12.88873}, //
+
36940 {3.63467002, 12.8891001}, //
+
36941 {3.63456011, 12.8897305}, //
+
36942 {3.6344099, 12.8906002}, //
+
36943 {3.6342299, 12.8917303}, //
+
36944 {3.63399005, 12.8931103}, //
+
36945 {3.63304996, 12.8987503}, //
+
36946 {3.6326499, 12.9010897}, //
+
36947 {3.63221002, 12.9035997}, //
+
36948 {3.63173008, 12.90627}, //
+
36949 {3.63120008, 12.9091196}, //
+
36950 {3.63064003, 12.9121304}, //
+
36951 {3.63002992, 12.9153099}, //
+
36952 {3.62937999, 12.9186497}, //
+
36953 {3.62867999, 12.9221697}, //
+
36954 {3.62794995, 12.9258499}, //
+
36955 {3.62724996, 12.9296103}, //
+
36956 {3.62663007, 12.93332}, //
+
36957 {3.62609005, 12.9369898}, //
+
36958 {3.6256299, 12.9406204}, //
+
36959 {3.62526011, 12.9441996}, //
+
36960 {3.62496996, 12.9477396}, //
+
36961 {3.62476993, 12.9512396}, //
+
36962 {3.62463999, 12.95469}, //
+
36963 {3.62459993, 12.9581003}, //
+
36964 {3.62457991, 12.9614296}, //
+
36965 {3.62452006, 12.9646301}, //
+
36966 {3.62440991, 12.9677}, //
+
36967 {3.62425995, 12.9706497}, //
+
36968 {3.62407994, 12.9734697}, //
+
36969 {3.62384009, 12.9761696}, //
+
36970 {3.62356997, 12.9787397}, //
+
36971 {3.62326002, 12.9811802}, //
+
36972 {3.62290001, 12.9834995}, //
+
36973 {3.62254, 12.9856396}, //
+
36974 {3.62195992, 12.9891701}, //
+
36975 {3.62154007, 12.9916897}, //
+
36976 {3.6213901, 12.9925699}, //
+
36977 {3.62120008, 12.9937}, //
+
36978 {3.62338996, 12.9960003}, //
+
36979 {3.62545991, 12.9983797}, //
+
36980 {3.62740993, 13.0008402}, //
+
36981 {3.62922001, 13.0033903}, //
+
36982 {3.63091993, 13.0060301}, //
+
36983 {3.63248992, 13.0087404}, //
+
36984 {3.63392997, 13.0115499}, //
+
36985 {3.63525009, 13.01443}, //
+
36986 {3.63645005, 13.0173998}, //
+
36987 {3.63757992, 13.02038}, //
+
36988 {3.63871002, 13.0232697}, //
+
36989 {3.63983989, 13.0260801}, //
+
36990 {3.64096999, 13.0288095}, //
+
36991 {3.6421001, 13.0314503}, //
+
36992 {3.64322996, 13.0340004}, //
+
36993 {3.64435005, 13.0364704}, //
+
36994 {3.64547992, 13.0388498}, //
+
36995 {3.64660001, 13.0411501}, //
+
36996 {3.64861012, 13.0451803}, //
+
36997 {3.64943004, 13.0468197}, //
+
36998 {3.65069008, 13.0493402}, //
+
36999 {3.65112996, 13.0502195}, //
+
37000 {3.65144992, 13.0508499}, //
+
37001 {3.65163994, 13.0512199}, //
+
37002 {3.65170002, 13.0513496}, //
+
37003 {3.63809991, 12.9207497}, //
+
37004 {3.63559008, 12.8966398}, //
+
37005 {3.63474989, 12.8886003}, //
+
37006 });
+
37007 polys.push_back({
+
37008 {1.51126003, 12.8115396}, //
+
37009 {1.51051998, 12.8122702}, //
+
37010 {1.50958002, 12.8132095}, //
+
37011 {1.50370002, 12.8190498}, //
+
37012 {1.50176001, 12.82096}, //
+
37013 {1.49969006, 12.8229103}, //
+
37014 {1.49749994, 12.8248997}, //
+
37015 {1.49518001, 12.82693}, //
+
37016 {1.49274004, 12.8290005}, //
+
37017 {1.49017, 12.8311195}, //
+
37018 {1.48747003, 12.8332701}, //
+
37019 {1.48465002, 12.8354597}, //
+
37020 {1.48169994, 12.8376999}, //
+
37021 {1.47872996, 12.83988}, //
+
37022 {1.47583997, 12.8418999}, //
+
37023 {1.47303998, 12.8437405}, //
+
37024 {1.47031999, 12.8454199}, //
+
37025 {1.46767998, 12.8469296}, //
+
37026 {1.46511996, 12.84828}, //
+
37027 {1.46264994, 12.8494501}, //
+
37028 {1.46026003, 12.8504601}, //
+
37029 {1.45795, 12.8513002}, //
+
37030 {1.45404005, 12.8520203}, //
+
37031 {1.44983006, 12.8527098}, //
+
37032 {1.44533002, 12.8533497}, //
+
37033 {1.44053996, 12.8539495}, //
+
37034 {1.43545997, 12.8545103}, //
+
37035 {1.43008006, 12.8550301}, //
+
37036 {1.42440999, 12.8555098}, //
+
37037 {1.41845, 12.8559504}, //
+
37038 {1.41219997, 12.8563499}, //
+
37039 {1.40582001, 12.8567104}, //
+
37040 {1.39947999, 12.8570204}, //
+
37041 {1.39318001, 12.8572903}, //
+
37042 {1.38692999, 12.8575296}, //
+
37043 {1.38071001, 12.8577099}, //
+
37044 {1.37452996, 12.8578596}, //
+
37045 {1.36839998, 12.8579702}, //
+
37046 {1.36230004, 12.8580303}, //
+
37047 {1.35625005, 12.8580503}, //
+
37048 {1.32235003, 12.8580503}, //
+
37049 {1.31836998, 12.8588696}, //
+
37050 {1.31397998, 12.8598099}, //
+
37051 {1.30917001, 12.8608799}, //
+
37052 {1.30394006, 12.8620701}, //
+
37053 {1.29829001, 12.86339}, //
+
37054 {1.29222, 12.86483}, //
+
37055 {1.28573, 12.8663902}, //
+
37056 {1.27882004, 12.8680801}, //
+
37057 {1.27149999, 12.8698997}, //
+
37058 {1.26391995, 12.87181}, //
+
37059 {1.25627005, 12.8737602}, //
+
37060 {1.24852002, 12.8757496}, //
+
37061 {1.24070001, 12.87778}, //
+
37062 {1.23277998, 12.8798504}, //
+
37063 {1.22478998, 12.8819704}, //
+
37064 {1.21670997, 12.88412}, //
+
37065 {1.20854998, 12.8863096}, //
+
37066 {1.20029998, 12.8885498}, //
+
37067 {1.19221997, 12.89077}, //
+
37068 {1.18455994, 12.8929195}, //
+
37069 {1.17732, 12.8949699}, //
+
37070 {1.17049003, 12.8969498}, //
+
37071 {1.16409004, 12.8988304}, //
+
37072 {1.15810001, 12.9006395}, //
+
37073 {1.15252995, 12.90236}, //
+
37074 {1.14737999, 12.9040003}, //
+
37075 {1.14265001, 12.90555}, //
+
37076 {1.14042997, 12.9062996}, //
+
37077 {1.13829005, 12.9070396}, //
+
37078 {1.13622999, 12.9077902}, //
+
37079 {1.13426006, 12.9085398}, //
+
37080 {1.13238001, 12.9092903}, //
+
37081 {1.13057995, 12.9100399}, //
+
37082 {1.12887001, 12.9107904}, //
+
37083 {1.12723994, 12.9115496}, //
+
37084 {1.1257, 12.9123001}, //
+
37085 {1.12243998, 12.9131403}, //
+
37086 {1.11866999, 12.9141502}, //
+
37087 {1.11440003, 12.9153204}, //
+
37088 {1.10962999, 12.9166698}, //
+
37089 {1.10434997, 12.9181805}, //
+
37090 {1.09856999, 12.9198599}, //
+
37091 {1.09228003, 12.9216995}, //
+
37092 {1.08548999, 12.9237204}, //
+
37093 {1.07819998, 12.9259005}, //
+
37094 {1.07365, 12.9273996}, //
+
37095 {1.06901002, 12.9288998}, //
+
37096 {1.06428003, 12.9303999}, //
+
37097 {1.05947006, 12.9319}, //
+
37098 {1.05457997, 12.9334002}, //
+
37099 {1.04960001, 12.9349003}, //
+
37100 {1.04454005, 12.9364004}, //
+
37101 {1.03938997, 12.9378996}, //
+
37102 {1.03415, 12.9393997}, //
+
37103 {1.02895999, 12.9408903}, //
+
37104 {1.02392995, 12.9423399}, //
+
37105 {1.01907003, 12.9437399}, //
+
37106 {1.01437998, 12.9451103}, //
+
37107 {1.00986004, 12.9464302}, //
+
37108 {1.00550997, 12.94771}, //
+
37109 {1.00132, 12.9489498}, //
+
37110 {0.997300982, 12.9501495}, //
+
37111 {0.993449986, 12.9512997}, //
+
37112 {0.989850998, 12.9523697}, //
+
37113 {0.986585975, 12.95331}, //
+
37114 {0.983655989, 12.9541302}, //
+
37115 {0.981060028, 12.9548302}, //
+
37116 {0.978798985, 12.95539}, //
+
37117 {0.976872027, 12.9558296}, //
+
37118 {0.975279987, 12.9561501}, //
+
37119 {0.974022985, 12.9563398}, //
+
37120 {0.973100007, 12.9563999}, //
+
37121 {0.970677018, 12.9579201}, //
+
37122 {0.967917025, 12.9594898}, //
+
37123 {0.964821994, 12.9610901}, //
+
37124 {0.961390972, 12.9627504}, //
+
37125 {0.957624972, 12.9644403}, //
+
37126 {0.953522027, 12.9661798}, //
+
37127 {0.949083984, 12.9679604}, //
+
37128 {0.944310009, 12.96978}, //
+
37129 {0.939199984, 12.9716501}, //
+
37130 {0.933921993, 12.9735203}, //
+
37131 {0.928644001, 12.9753399}, //
+
37132 {0.923367023, 12.9771204}, //
+
37133 {0.918088973, 12.9788599}, //
+
37134 {0.912810981, 12.9805498}, //
+
37135 {0.90753299, 12.9822102}, //
+
37136 {0.902256012, 12.9838104}, //
+
37137 {0.896978021, 12.9853802}, //
+
37138 {0.891700029, 12.9869003}, //
+
37139 {0.886641979, 12.9883299}, //
+
37140 {0.882000983, 12.9895897}, //
+
37141 {0.877777994, 12.9906797}, //
+
37142 {0.873971999, 12.9916}, //
+
37143 {0.870582998, 12.9923601}, //
+
37144 {0.867610991, 12.9929399}, //
+
37145 {0.865056992, 12.9933596}, //
+
37146 {0.862919986, 12.9936199}, //
+
37147 {0.861199975, 12.9937}, //
+
37148 {0.85898602, 12.9936399}, //
+
37149 {0.856854022, 12.9934502}, //
+
37150 {0.854806006, 12.9931297}, //
+
37151 {0.852840006, 12.9926901}, //
+
37152 {0.850956023, 12.9921303}, //
+
37153 {0.849156022, 12.9914303}, //
+
37154 {0.847437978, 12.9906101}, //
+
37155 {0.845802009, 12.9896698}, //
+
37156 {0.844250023, 12.9885998}, //
+
37157 {0.842749, 12.9874897}, //
+
37158 {0.841247976, 12.9864197}, //
+
37159 {0.839743972, 12.9853897}, //
+
37160 {0.838240027, 12.9844103}, //
+
37161 {0.83673501, 12.98347}, //
+
37162 {0.835228026, 12.9825802}, //
+
37163 {0.833720028, 12.9817305}, //
+
37164 {0.832210004, 12.9809198}, //
+
37165 {0.83069998, 12.9801502}, //
+
37166 {0.829231024, 12.9793901}, //
+
37167 {0.827848017, 12.9786396}, //
+
37168 {0.826550007, 12.9778795}, //
+
37169 {0.825336993, 12.9771299}, //
+
37170 {0.824208975, 12.9763699}, //
+
37171 {0.823167026, 12.9756203}, //
+
37172 {0.822209001, 12.9748602}, //
+
37173 {0.821336985, 12.9741096}, //
+
37174 {0.820550025, 12.9733496}, //
+
37175 {0.819038987, 12.9726601}, //
+
37176 {0.817528009, 12.9720898}, //
+
37177 {0.816016972, 12.9716501}, //
+
37178 {0.814505994, 12.9713402}, //
+
37179 {0.812994003, 12.9711504}, //
+
37180 {0.811483026, 12.9710798}, //
+
37181 {0.809971988, 12.9711504}, //
+
37182 {0.80846101, 12.9713402}, //
+
37183 {0.806949973, 12.9716501}, //
+
37184 {0.805406988, 12.9720297}, //
+
37185 {0.803780019, 12.9724102}, //
+
37186 {0.802066982, 12.9727802}, //
+
37187 {0.800269008, 12.9731598}, //
+
37188 {0.798385024, 12.9735403}, //
+
37189 {0.796416998, 12.9739199}, //
+
37190 {0.794363022, 12.9742899}, //
+
37191 {0.79222399, 12.9746704}, //
+
37192 {0.790000021, 12.97505}, //
+
37193 {0.787786007, 12.9754295}, //
+
37194 {0.785654008, 12.9758101}, //
+
37195 {0.783605993, 12.9761801}, //
+
37196 {0.781639993, 12.9765596}, //
+
37197 {0.77975601, 12.9769402}, //
+
37198 {0.777956009, 12.9773197}, //
+
37199 {0.776238024, 12.9776897}, //
+
37200 {0.774601996, 12.9780703}, //
+
37201 {0.77305001, 12.9784498}, //
+
37202 {0.767050028, 12.9799604}, //
+
37203 {0.766632974, 12.9800701}, //
+
37204 {0.766300023, 12.9801502}, //
+
37205 {0.766300023, 13.0106497}, //
+
37206 {0.776449978, 13.0106497}, //
+
37207 {0.777225971, 13.0106697}, //
+
37208 {0.778042972, 13.0107298}, //
+
37209 {0.778900027, 13.0108404}, //
+
37210 {0.779797971, 13.0109901}, //
+
37211 {0.780736983, 13.0111704}, //
+
37212 {0.781717002, 13.0114098}, //
+
37213 {0.782737017, 13.0116796}, //
+
37214 {0.783797979, 13.0119896}, //
+
37215 {0.78490001, 13.0123501}, //
+
37216 {0.786054015, 13.0127096}, //
+
37217 {0.787250996, 13.0130196}, //
+
37218 {0.788488984, 13.0132904}, //
+
37219 {0.789768994, 13.0135298}, //
+
37220 {0.791091025, 13.01371}, //
+
37221 {0.792455971, 13.0138597}, //
+
37222 {0.793861985, 13.0139704}, //
+
37223 {0.79531002, 13.0140305}, //
+
37224 {0.796800017, 13.0140495}, //
+
37225 {0.800566971, 13.0148001}, //
+
37226 {0.804332972, 13.0155401}, //
+
37227 {0.811866999, 13.0170403}, //
+
37228 {0.815632999, 13.0177898}, //
+
37229 {0.823167026, 13.01929}, //
+
37230 {0.826933026, 13.02005}, //
+
37231 {0.83069998, 13.0207996}, //
+
37232 {0.83375299, 13.0215302}, //
+
37233 {0.836889982, 13.0222301}, //
+
37234 {0.840111017, 13.0228796}, //
+
37235 {0.843415976, 13.02349}, //
+
37236 {0.846804976, 13.0240498}, //
+
37237 {0.85027802, 13.02458}, //
+
37238 {0.853834987, 13.0250597}, //
+
37239 {0.857474983, 13.0255003}, //
+
37240 {0.861199975, 13.0258999}, //
+
37241 {0.865050972, 13.0262098}, //
+
37242 {0.86906898, 13.0263996}, //
+
37243 {0.873256028, 13.0264702}, //
+
37244 {0.877610028, 13.0263996}, //
+
37245 {0.882131994, 13.0262098}, //
+
37246 {0.886821985, 13.0258999}, //
+
37247 {0.891680002, 13.0254602}, //
+
37248 {0.896705985, 13.0248899}, //
+
37249 {0.901899993, 13.0242004}, //
+
37250 {0.910669982, 13.0225401}, //
+
37251 {0.920404017, 13.0205898}, //
+
37252 {0.931100011, 13.0183496}, //
+
37253 {0.942758977, 13.01581}, //
+
37254 {0.955380976, 13.01299}, //
+
37255 {0.968967021, 13.0098696}, //
+
37256 {0.983515024, 13.0064497}, //
+
37257 {0.999026, 13.0027504}, //
+
37258 {1.01549995, 12.9987497}, //
+
37259 {1.03209996, 12.9946804}, //
+
37260 {1.04798996, 12.9907303}, //
+
37261 {1.06315994, 12.9869099}, //
+
37262 {1.07762003, 12.9832001}, //
+
37263 {1.09136999, 12.9796305}, //
+
37264 {1.10441005, 12.9761696}, //
+
37265 {1.11673999, 12.9728403}, //
+
37266 {1.12835002, 12.9696302}, //
+
37267 {1.13925004, 12.9665499}, //
+
37268 {1.14858997, 12.9635401}, //
+
37269 {1.15850997, 12.9605303}, //
+
37270 {1.16902006, 12.9575195}, //
+
37271 {1.18010998, 12.9545097}, //
+
37272 {1.19178998, 12.9514904}, //
+
37273 {1.20404994, 12.9484797}, //
+
37274 {1.21689999, 12.9454699}, //
+
37275 {1.23032999, 12.9424601}, //
+
37276 {1.24434996, 12.9394503}, //
+
37277 {1.25834, 12.9364796}, //
+
37278 {1.27164996, 12.9335899}, //
+
37279 {1.28429997, 12.9307899}, //
+
37280 {1.29628003, 12.9280701}, //
+
37281 {1.30757999, 12.9254303}, //
+
37282 {1.31822002, 12.9228697}, //
+
37283 {1.32817996, 12.9203997}, //
+
37284 {1.33747995, 12.9180098}, //
+
37285 {1.34609997, 12.9157}, //
+
37286 {1.35144997, 12.9142704}, //
+
37287 {1.35696995, 12.9130096}, //
+
37288 {1.36266005, 12.9119196}, //
+
37289 {1.36852002, 12.9110003}, //
+
37290 {1.37454998, 12.9102402}, //
+
37291 {1.38074005, 12.9096603}, //
+
37292 {1.38710999, 12.9092398}, //
+
37293 {1.39365005, 12.9089804}, //
+
37294 {1.40034997, 12.9089003}, //
+
37295 {1.40926003, 12.9093599}, //
+
37296 {1.41791999, 12.9092398}, //
+
37297 {1.42632997, 12.9085302}, //
+
37298 {1.43448997, 12.9072304}, //
+
37299 {1.44239998, 12.9053497}, //
+
37300 {1.45006001, 12.9028797}, //
+
37301 {1.45747006, 12.8998203}, //
+
37302 {1.46464002, 12.8961802}, //
+
37303 {1.47154999, 12.8919497}, //
+
37304 {1.47525001, 12.8896503}, //
+
37305 {1.47882998, 12.88727}, //
+
37306 {1.48228002, 12.8848}, //
+
37307 {1.48561001, 12.8822498}, //
+
37308 {1.48880994, 12.8796101}, //
+
37309 {1.49188006, 12.8768797}, //
+
37310 {1.49483001, 12.8740702}, //
+
37311 {1.49765003, 12.8711796}, //
+
37312 {1.50035, 12.8682003}, //
+
37313 {1.50292003, 12.8652496}, //
+
37314 {1.50537002, 12.8624296}, //
+
37315 {1.50768995, 12.8597298}, //
+
37316 {1.50988996, 12.8571501}, //
+
37317 {1.51196003, 12.8547001}, //
+
37318 {1.51391006, 12.8523798}, //
+
37319 {1.51573002, 12.8501797}, //
+
37320 {1.51742995, 12.8480997}, //
+
37321 {1.51900005, 12.8461504}, //
+
37322 {1.52042997, 12.8443804}, //
+
37323 {1.52169001, 12.8428097}, //
+
37324 {1.52579999, 12.8376999}, //
+
37325 {1.5122, 12.8106003}, //
+
37326 });
+
37327 polys.push_back({
+
37328 {4.52139997, 12.8631496}, //
+
37329 {4.52099991, 12.8636303}, //
+
37330 {4.52055979, 12.8643198}, //
+
37331 {4.52008009, 12.8652201}, //
+
37332 {4.51954985, 12.8663301}, //
+
37333 {4.51899004, 12.86765}, //
+
37334 {4.51838017, 12.8691702}, //
+
37335 {4.51773024, 12.8709097}, //
+
37336 {4.51702976, 12.8728504}, //
+
37337 {4.5163002, 12.875}, //
+
37338 {4.51399994, 12.8780603}, //
+
37339 {4.51162004, 12.8812103}, //
+
37340 {4.50916004, 12.8844404}, //
+
37341 {4.50660992, 12.8877497}, //
+
37342 {4.50397015, 12.8911505}, //
+
37343 {4.5012598, 12.8946199}, //
+
37344 {4.4984498, 12.89818}, //
+
37345 {4.49557018, 12.9018202}, //
+
37346 {4.49259996, 12.90555}, //
+
37347 {4.49019003, 12.9077797}, //
+
37348 {4.48748016, 12.9099798}, //
+
37349 {4.4844799, 12.9121304}, //
+
37350 {4.4811902, 12.9142399}, //
+
37351 {4.47761011, 12.9162998}, //
+
37352 {4.47373009, 12.9183302}, //
+
37353 {4.46956015, 12.92031}, //
+
37354 {4.46509981, 12.9222498}, //
+
37355 {4.46035004, 12.9241505}, //
+
37356 {4.45544004, 12.9259796}, //
+
37357 {4.45049, 12.92768}, //
+
37358 {4.44548988, 12.9292498}, //
+
37359 {4.44045019, 12.9307003}, //
+
37360 {4.43536997, 12.9320202}, //
+
37361 {4.43024015, 12.9332199}, //
+
37362 {4.42506981, 12.9342899}, //
+
37363 {4.41985989, 12.9352303}, //
+
37364 {4.4145999, 12.9360504}, //
+
37365 {4.40798998, 12.9375601}, //
+
37366 {4.40171003, 12.9390697}, //
+
37367 {4.39577007, 12.9405804}, //
+
37368 {4.3901701, 12.9420795}, //
+
37369 {4.38489008, 12.9435902}, //
+
37370 {4.37996006, 12.9450903}, //
+
37371 {4.37535, 12.9466}, //
+
37372 {4.37107992, 12.9481001}, //
+
37373 {4.36714983, 12.9496002}, //
+
37374 {4.36170006, 12.9517603}, //
+
37375 {4.35592985, 12.9537096}, //
+
37376 {4.34981012, 12.9554501}, //
+
37377 {4.34335995, 12.9569798}, //
+
37378 {4.3365798, 12.9582901}, //
+
37379 {4.32946014, 12.9594002}, //
+
37380 {4.32201004, 12.96029}, //
+
37381 {4.31421995, 12.9609804}, //
+
37382 {4.30609989, 12.9614496}, //
+
37383 {4.29793978, 12.9618101}, //
+
37384 {4.29001999, 12.9621201}, //
+
37385 {4.28236008, 12.9623899}, //
+
37386 {4.27495003, 12.9626303}, //
+
37387 {4.26778984, 12.9628096}, //
+
37388 {4.26087999, 12.9629602}, //
+
37389 {4.25422001, 12.9630699}, //
+
37390 {4.24780989, 12.96313}, //
+
37391 {4.2416501, 12.96315}, //
+
37392 {4.05179977, 12.96315}, //
+
37393 {4.03836012, 12.9621296}, //
+
37394 {4.02516985, 12.9605703}, //
+
37395 {4.01222992, 12.9584599}, //
+
37396 {3.9995501, 12.9558096}, //
+
37397 {3.9871099, 12.95261}, //
+
37398 {3.97493005, 12.9488602}, //
+
37399 {3.96300006, 12.9445696}, //
+
37400 {3.95132995, 12.9397297}, //
+
37401 {3.93989992, 12.93435}, //
+
37402 {3.92905998, 12.9287596}, //
+
37403 {3.9191401, 12.9232903}, //
+
37404 {3.91014004, 12.9179602}, //
+
37405 {3.90207005, 12.9127502}, //
+
37406 {3.8949101, 12.9076595}, //
+
37407 {3.88867998, 12.90271}, //
+
37408 {3.88335991, 12.8978796}, //
+
37409 {3.87896991, 12.8931704}, //
+
37410 {3.87549996, 12.8886003}, //
+
37411 {3.87416005, 12.88591}, //
+
37412 {3.87361002, 12.88482}, //
+
37413 {3.87247992, 12.8825598}, //
+
37414 {3.87210011, 12.8817997}, //
+
37415 {3.87210011, 12.8851995}, //
+
37416 {3.87365007, 12.8868504}, //
+
37417 {3.87528992, 12.8887901}, //
+
37418 {3.87701011, 12.8910198}, //
+
37419 {3.87880993, 12.8935499}, //
+
37420 {3.8806901, 12.8963699}, //
+
37421 {3.88265991, 12.8994904}, //
+
37422 {3.88470006, 12.9028997}, //
+
37423 {3.88684011, 12.9066}, //
+
37424 {3.89125991, 12.9146004}, //
+
37425 {3.89339995, 12.9182997}, //
+
37426 {3.8954401, 12.9217196}, //
+
37427 {3.89740992, 12.92484}, //
+
37428 {3.89929008, 12.92766}, //
+
37429 {3.90108991, 12.9301996}, //
+
37430 {3.9028101, 12.9324398}, //
+
37431 {3.90444994, 12.9343901}, //
+
37432 {3.9059999, 12.9360504}, //
+
37433 {3.90768003, 12.9383497}, //
+
37434 {3.9096899, 12.9407301}, //
+
37435 {3.91202998, 12.9431896}, //
+
37436 {3.91471004, 12.9457397}, //
+
37437 {3.91772008, 12.9483805}, //
+
37438 {3.9210701, 12.9510899}, //
+
37439 {3.92474008, 12.9539003}, //
+
37440 {3.92876005, 12.9567804}, //
+
37441 {3.93309999, 12.9597502}, //
+
37442 {3.93765998, 12.9627504}, //
+
37443 {3.94231009, 12.9657097}, //
+
37444 {3.94704008, 12.9686203}, //
+
37445 {3.95185995, 12.9714899}, //
+
37446 {3.95675993, 12.9743204}, //
+
37447 {3.96174002, 12.9771099}, //
+
37448 {3.96680999, 12.9798498}, //
+
37449 {3.97196007, 12.9825497}, //
+
37450 {3.97720003, 12.9851999}, //
+
37451 {3.98238993, 12.9877396}, //
+
37452 {3.98742008, 12.9900703}, //
+
37453 {3.99228001, 12.9921799}, //
+
37454 {3.99696994, 12.9940901}, //
+
37455 {4.00149012, 12.99578}, //
+
37456 {4.00583982, 12.9972696}, //
+
37457 {4.01002979, 12.9985399}, //
+
37458 {4.01405001, 12.9996004}, //
+
37459 {4.01789999, 13.0004501}, //
+
37460 {4.02475977, 13.0025101}, //
+
37461 {4.03178978, 13.0041399}, //
+
37462 {4.03899002, 13.0053596}, //
+
37463 {4.04635, 13.0061598}, //
+
37464 {4.05389023, 13.0065403}, //
+
37465 {4.06159019, 13.0064898}, //
+
37466 {4.06945992, 13.0060301}, //
+
37467 {4.07749987, 13.0051498}, //
+
37468 {4.08570004, 13.00385}, //
+
37469 {4.14674997, 13.00385}, //
+
37470 {4.15487003, 13.0052795}, //
+
37471 {4.16266012, 13.0065403}, //
+
37472 {4.17011023, 13.0076303}, //
+
37473 {4.17721987, 13.0085497}, //
+
37474 {4.18400002, 13.0093098}, //
+
37475 {4.19044018, 13.0098896}, //
+
37476 {4.19654989, 13.0103102}, //
+
37477 {4.2023201, 13.0105696}, //
+
37478 {4.20774984, 13.0106497}, //
+
37479 {4.21381998, 13.0113602}, //
+
37480 {4.21997976, 13.0119896}, //
+
37481 {4.22622013, 13.0125399}, //
+
37482 {4.23255014, 13.0129995}, //
+
37483 {4.23894978, 13.0133801}, //
+
37484 {4.24544001, 13.01367}, //
+
37485 {4.25200987, 13.0138798}, //
+
37486 {4.25865984, 13.0140104}, //
+
37487 {4.26539993, 13.0140495}, //
+
37488 {4.2658, 13.0139198}, //
+
37489 {4.26699018, 13.0135498}, //
+
37490 {4.26898003, 13.0129204}, //
+
37491 {4.27175999, 13.0120401}, //
+
37492 {4.29084015, 13.00599}, //
+
37493 {4.29759979, 13.00385}, //
+
37494 {4.30481005, 13.0015898}, //
+
37495 {4.31209993, 12.9993401}, //
+
37496 {4.31946993, 12.9970798}, //
+
37497 {4.32693005, 12.9948196}, //
+
37498 {4.3344698, 12.9925604}, //
+
37499 {4.34209013, 12.9902897}, //
+
37500 {4.3497901, 12.9880304}, //
+
37501 {4.35758018, 12.9857702}, //
+
37502 {4.36544991, 12.9834995}, //
+
37503 {4.37330008, 12.9812899}, //
+
37504 {4.38102007, 12.9791498}, //
+
37505 {4.3886199, 12.9771099}, //
+
37506 {4.39609003, 12.9751396}, //
+
37507 {4.40342999, 12.9732599}, //
+
37508 {4.41064978, 12.9714603}, //
+
37509 {4.41773987, 12.9697399}, //
+
37510 {4.4247098, 12.9680996}, //
+
37511 {4.43155003, 12.9665499}, //
+
37512 {4.43961, 12.9647999}, //
+
37513 {4.44720984, 12.9625397}, //
+
37514 {4.45433998, 12.9597797}, //
+
37515 {4.46101999, 12.9565201}, //
+
37516 {4.46723986, 12.9527502}, //
+
37517 {4.47299004, 12.9484797}, //
+
37518 {4.47829008, 12.9437103}, //
+
37519 {4.48312998, 12.9384298}, //
+
37520 {4.48750019, 12.9326496}, //
+
37521 {4.49153996, 12.9266701}, //
+
37522 {4.49536991, 12.9207697}, //
+
37523 {4.49899006, 12.9149599}, //
+
37524 {4.50239992, 12.9092197}, //
+
37525 {4.50559998, 12.9035702}, //
+
37526 {4.50859022, 12.8980103}, //
+
37527 {4.51137018, 12.89252}, //
+
37528 {4.51393986, 12.8871202}, //
+
37529 {4.5163002, 12.8817997}, //
+
37530 {4.51633978, 12.8810396}, //
+
37531 {4.51646996, 12.88029}, //
+
37532 {4.51667976, 12.87953}, //
+
37533 {4.51697016, 12.8787804}, //
+
37534 {4.5173502, 12.8780203}, //
+
37535 {4.51780987, 12.8772697}, //
+
37536 {4.51836014, 12.8765097}, //
+
37537 {4.51899004, 12.8757601}, //
+
37538 {4.51970005, 12.875}, //
+
37539 {4.52039003, 12.87218}, //
+
37540 {4.52095985, 12.86973}, //
+
37541 {4.52139997, 12.8676596}, //
+
37542 {4.52170992, 12.8659697}, //
+
37543 {4.52190018, 12.8646498}, //
+
37544 {4.5219698, 12.8637104}, //
+
37545 {4.52190018, 12.8631496}, //
+
37546 {4.52170992, 12.8629599}, //
+
37547 });
+
37548 polys.push_back({
+
37549 {0.301046997, 12.9544697}, //
+
37550 {0.30042699, 12.9558496}, //
+
37551 {0.299888998, 12.9571505}, //
+
37552 {0.299434006, 12.9583597}, //
+
37553 {0.299062014, 12.9594898}, //
+
37554 {0.298772007, 12.9605303}, //
+
37555 {0.298565, 12.9614897}, //
+
37556 {0.298440993, 12.9623604}, //
+
37557 {0.298400015, 12.96315}, //
+
37558 {0.298400015, 12.9784002}, //
+
37559 {0.298357993, 12.9795504}, //
+
37560 {0.298231989, 12.9807501}, //
+
37561 {0.298022002, 12.9819899}, //
+
37562 {0.297728002, 12.9832697}, //
+
37563 {0.297351003, 12.9845896}, //
+
37564 {0.296889007, 12.98596}, //
+
37565 {0.296342999, 12.98736}, //
+
37566 {0.295713991, 12.9888096}, //
+
37567 {0.294999987, 12.9903002}, //
+
37568 {0.296700001, 12.9869003}, //
+
37569 {0.297077, 12.9860802}, //
+
37570 {0.297452986, 12.9851398}, //
+
37571 {0.297827989, 12.9840698}, //
+
37572 {0.298200995, 12.9828701}, //
+
37573 {0.298572987, 12.9815502}, //
+
37574 {0.298943996, 12.9800997}, //
+
37575 {0.299313992, 12.9785299}, //
+
37576 {0.299683005, 12.9768295}, //
+
37577 {0.30004999, 12.9750004}, //
+
37578 {0.300406992, 12.9731598}, //
+
37579 {0.300722003, 12.9714098}, //
+
37580 {0.300994009, 12.9697399}, //
+
37581 {0.301225007, 12.9681501}, //
+
37582 {0.301414013, 12.96665}, //
+
37583 {0.301560998, 12.9652205}, //
+
37584 {0.301665992, 12.9638796}, //
+
37585 {0.301728994, 12.9626198}, //
+
37586 {0.301750004, 12.9614496}, //
+
37587 {0.301750004, 12.9530001}, //
+
37588 });
+
37589 polys.push_back({
+
37590 {0.242092997, 12.7326403}, //
+
37591 {0.241778001, 12.73277}, //
+
37592 {0.241505995, 12.7329798}, //
+
37593 {0.241274998, 12.7332697}, //
+
37594 {0.241086006, 12.7336502}, //
+
37595 {0.240939006, 12.7341099}, //
+
37596 {0.240833998, 12.7346601}, //
+
37597 {0.240770996, 12.7352896}, //
+
37598 {0.24075, 12.7360001}, //
+
37599 {0.24075, 12.7597504}, //
+
37600 {0.240729004, 12.7643099}, //
+
37601 {0.240666002, 12.76896}, //
+
37602 {0.240560994, 12.7736902}, //
+
37603 {0.240413994, 12.7784996}, //
+
37604 {0.240225002, 12.7833996}, //
+
37605 {0.239994004, 12.7883701}, //
+
37606 {0.239721999, 12.7934303}, //
+
37607 {0.239407003, 12.7985697}, //
+
37608 {0.239050001, 12.8037996}, //
+
37609 {0.238735005, 12.8089504}, //
+
37610 {0.238545999, 12.8138504}, //
+
37611 {0.238482997, 12.8184996}, //
+
37612 {0.238545999, 12.8228998}, //
+
37613 {0.238735005, 12.8270397}, //
+
37614 {0.239050001, 12.8309298}, //
+
37615 {0.239491001, 12.8345699}, //
+
37616 {0.240057006, 12.8379602}, //
+
37617 {0.24075, 12.8410997}, //
+
37618 {0.24075, 12.8953505}, //
+
37619 {0.240832999, 12.89851}, //
+
37620 {0.241082996, 12.9019604}, //
+
37621 {0.241500005, 12.9057102}, //
+
37622 {0.242082998, 12.90975}, //
+
37623 {0.242833003, 12.9140797}, //
+
37624 {0.243750006, 12.9187098}, //
+
37625 {0.244832993, 12.9236298}, //
+
37626 {0.246083006, 12.9288397}, //
+
37627 {0.247500002, 12.93435}, //
+
37628 {0.248969004, 12.9398603}, //
+
37629 {0.250353992, 12.9450703}, //
+
37630 {0.251655996, 12.9499903}, //
+
37631 {0.252873003, 12.9546204}, //
+
37632 {0.254005998, 12.95895}, //
+
37633 {0.255055994, 12.9629898}, //
+
37634 {0.256020993, 12.9667397}, //
+
37635 {0.256902009, 12.97019}, //
+
37636 {0.257699996, 12.9733496}, //
+
37637 {0.264450014, 12.9699497}, //
+
37638 {0.264450014, 12.9326496}, //
+
37639 {0.265814006, 12.9281702}, //
+
37640 {0.266885012, 12.92377}, //
+
37641 {0.267661005, 12.9194603}, //
+
37642 {0.268144011, 12.9152298}, //
+
37643 {0.268332988, 12.9110899}, //
+
37644 {0.268227994, 12.9070301}, //
+
37645 {0.267829001, 12.9030504}, //
+
37646 {0.267136008, 12.8991604}, //
+
37647 {0.266149998, 12.8953505}, //
+
37648 {0.265047997, 12.8916702}, //
+
37649 {0.263987005, 12.8881502}, //
+
37650 {0.26296699, 12.8848104}, //
+
37651 {0.261987001, 12.8816299}, //
+
37652 {0.261047989, 12.8786201}, //
+
37653 {0.260149986, 12.8757696}, //
+
37654 {0.25929299, 12.8731003}, //
+
37655 {0.258475989, 12.8705902}, //
+
37656 {0.257699996, 12.8682499}, //
+
37657 {0.256251991, 12.8650198}, //
+
37658 {0.25492999, 12.8613701}, //
+
37659 {0.253733009, 12.8573103}, //
+
37660 {0.252662987, 12.8528204}, //
+
37661 {0.251718998, 12.8479204}, //
+
37662 {0.2509, 12.8426104}, //
+
37663 {0.250207007, 12.8368702}, //
+
37664 {0.249641001, 12.8307199}, //
+
37665 {0.249200001, 12.8241501}, //
+
37666 {0.248842999, 12.8174105}, //
+
37667 {0.248528004, 12.8107595}, //
+
37668 {0.248255998, 12.8041897}, //
+
37669 {0.248025, 12.7976999}, //
+
37670 {0.247835994, 12.7912998}, //
+
37671 {0.247688994, 12.7849703}, //
+
37672 {0.247584, 12.7787304}, //
+
37673 {0.247520998, 12.7725697}, //
+
37674 {0.247500002, 12.7665005}, //
+
37675 {0.247479007, 12.7621498}, //
+
37676 {0.247416005, 12.7581196}, //
+
37677 {0.247310996, 12.7544403}, //
+
37678 {0.247163996, 12.75109}, //
+
37679 {0.246975005, 12.7480698}, //
+
37680 {0.246744007, 12.7453899}, //
+
37681 {0.246472001, 12.7430401}, //
+
37682 {0.246157005, 12.7410297}, //
+
37683 {0.245800003, 12.7393503}, //
+
37684 {0.245433003, 12.7379303}, //
+
37685 {0.245064005, 12.73668}, //
+
37686 {0.244693995, 12.7356005}, //
+
37687 {0.244323, 12.7346802}, //
+
37688 {0.243950993, 12.7339296}, //
+
37689 {0.243578002, 12.7333498}, //
+
37690 {0.243202999, 12.7329302}, //
+
37691 {0.242826998, 12.7326803}, //
+
37692 {0.242449999, 12.7326002}, //
+
37693 });
+
37694 polys.push_back({
+
37695 {0.367543012, 12.7291403}, //
+
37696 {0.366914004, 12.7323999}, //
+
37697 {0.3662, 12.7360001}, //
+
37698 {0.363976002, 12.7428598}, //
+
37699 {0.361837, 12.7498903}, //
+
37700 {0.359782994, 12.7570896}, //
+
37701 {0.357814997, 12.7644501}, //
+
37702 {0.355931014, 12.7719898}, //
+
37703 {0.35413301, 12.7796898}, //
+
37704 {0.352420002, 12.7875605}, //
+
37705 {0.350793004, 12.7955999}, //
+
37706 {0.349249989, 12.8037996}, //
+
37707 {0.348369002, 12.8100405}, //
+
37708 {0.347238004, 12.8167}, //
+
37709 {0.345856011, 12.8237801}, //
+
37710 {0.344222993, 12.8312702}, //
+
37711 {0.342339993, 12.83918}, //
+
37712 {0.340205997, 12.8475103}, //
+
37713 {0.337821007, 12.8562603}, //
+
37714 {0.335186005, 12.8654203}, //
+
37715 {0.332300007, 12.875}, //
+
37716 {0.330159009, 12.8824501}, //
+
37717 {0.328269988, 12.8897305}, //
+
37718 {0.326633006, 12.8968496}, //
+
37719 {0.325248003, 12.9038}, //
+
37720 {0.324115008, 12.9105797}, //
+
37721 {0.323233008, 12.9172001}, //
+
37722 {0.322604001, 12.9236498}, //
+
37723 {0.322225988, 12.9299297}, //
+
37724 {0.322100013, 12.9360504}, //
+
37725 {0.322162986, 12.9358997}, //
+
37726 {0.322667003, 12.9347296}, //
+
37727 {0.325185001, 12.9288502}, //
+
37728 {0.326130003, 12.92665}, //
+
37729 {0.327199996, 12.9241505}, //
+
37730 {0.32833299, 12.9214697}, //
+
37731 {0.329463989, 12.9187202}, //
+
37732 {0.330594003, 12.9158697}, //
+
37733 {0.331723005, 12.9129496}, //
+
37734 {0.332850993, 12.9099302}, //
+
37735 {0.333977997, 12.9068403}, //
+
37736 {0.335103005, 12.9036598}, //
+
37737 {0.336227, 12.9004002}, //
+
37738 {0.337350011, 12.8970499}, //
+
37739 {0.338461995, 12.8936005}, //
+
37740 {0.339533001, 12.8900204}, //
+
37741 {0.340561002, 12.8863201}, //
+
37742 {0.341547996, 12.8824902}, //
+
37743 {0.342492014, 12.8785295}, //
+
37744 {0.343394011, 12.8744497}, //
+
37745 {0.344255, 12.8702402}, //
+
37746 {0.345073014, 12.8659096}, //
+
37747 {0.345849991, 12.8614502}, //
+
37748 {0.346626014, 12.8582897}, //
+
37749 {0.347443014, 12.8548403}, //
+
37750 {0.34830001, 12.8510904}, //
+
37751 {0.349198014, 12.8470497}, //
+
37752 {0.350136995, 12.84272}, //
+
37753 {0.351117015, 12.8380899}, //
+
37754 {0.352136999, 12.8331699}, //
+
37755 {0.353197992, 12.82796}, //
+
37756 {0.354299992, 12.8224497}, //
+
37757 {0.355412006, 12.8167801}, //
+
37758 {0.356483012, 12.8110704}, //
+
37759 {0.357511014, 12.8053198}, //
+
37760 {0.358498007, 12.79953}, //
+
37761 {0.359441996, 12.7936897}, //
+
37762 {0.360343993, 12.7878103}, //
+
37763 {0.361205012, 12.7818804}, //
+
37764 {0.362022996, 12.7759104}, //
+
37765 {0.362800002, 12.7699003}, //
+
37766 {0.363534987, 12.76402}, //
+
37767 {0.364226997, 12.75844}, //
+
37768 {0.364877999, 12.7531404}, //
+
37769 {0.365485996, 12.7481403}, //
+
37770 {0.366052985, 12.7434301}, //
+
37771 {0.366578013, 12.7390099}, //
+
37772 {0.367060006, 12.7348804}, //
+
37773 {0.367500991, 12.7310495}, //
+
37774 {0.367900014, 12.7275}, //
+
37775 {0.367980003, 12.7267904}, //
+
37776 });
+
37777 polys.push_back({
+
37778 {0.337538987, 12.7175198}, //
+
37779 {0.336993009, 12.7194204}, //
+
37780 {0.336364001, 12.7216101}, //
+
37781 {0.335649997, 12.7241001}, //
+
37782 {0.334883988, 12.7268105}, //
+
37783 {0.334075004, 12.72964}, //
+
37784 {0.333222002, 12.7325897}, //
+
37785 {0.332327008, 12.7356796}, //
+
37786 {0.331387997, 12.7388802}, //
+
37787 {0.33040601, 12.7422104}, //
+
37788 {0.329380006, 12.7456703}, //
+
37789 {0.32831201, 12.7492504}, //
+
37790 {0.327199996, 12.7529497}, //
+
37791 {0.32604599, 12.75667}, //
+
37792 {0.32485199, 12.7603197}, //
+
37793 {0.323617011, 12.7638702}, //
+
37794 {0.322340995, 12.7673502}, //
+
37795 {0.321024001, 12.77073}, //
+
37796 {0.319667011, 12.7740402}, //
+
37797 {0.318269014, 12.7772598}, //
+
37798 {0.316830009, 12.7804003}, //
+
37799 {0.315349996, 12.7834501}, //
+
37800 {0.313125014, 12.78829}, //
+
37801 {0.310984999, 12.7937498}, //
+
37802 {0.308928013, 12.79984}, //
+
37803 {0.30695501, 12.8065596}, //
+
37804 {0.305065989, 12.8139}, //
+
37805 {0.303261012, 12.8218699}, //
+
37806 {0.301539987, 12.8304701}, //
+
37807 {0.299903005, 12.8396997}, //
+
37808 {0.298350006, 12.8495502}, //
+
37809 {0.296974987, 12.85958}, //
+
37810 {0.295850992, 12.8693199}, //
+
37811 {0.294977993, 12.8787603}, //
+
37812 {0.294355005, 12.8879099}, //
+
37813 {0.293983012, 12.8967695}, //
+
37814 {0.293861002, 12.9053297}, //
+
37815 {0.293989986, 12.9136}, //
+
37816 {0.294369996, 12.9215698}, //
+
37817 {0.294999987, 12.9292498}, //
+
37818 {0.297004998, 12.9235601}, //
+
37819 {0.305150002, 12.9004498}, //
+
37820 {0.307332009, 12.8938198}, //
+
37821 {0.309345007, 12.8867302}, //
+
37822 {0.311188996, 12.8791704}, //
+
37823 {0.312864006, 12.8711596}, //
+
37824 {0.314368993, 12.8626804}, //
+
37825 {0.315706015, 12.8537397}, //
+
37826 {0.316873014, 12.8443403}, //
+
37827 {0.317871004, 12.8344698}, //
+
37828 {0.318699986, 12.8241501}, //
+
37829 {0.320210993, 12.8160696}, //
+
37830 {0.321722001, 12.8084097}, //
+
37831 {0.323233008, 12.8011703}, //
+
37832 {0.324743986, 12.7943401}, //
+
37833 {0.326256007, 12.78794}, //
+
37834 {0.327767015, 12.78195}, //
+
37835 {0.329277992, 12.7763796}, //
+
37836 {0.330789, 12.7712297}, //
+
37837 {0.332300007, 12.7665005}, //
+
37838 {0.333716989, 12.7604799}, //
+
37839 {0.334966987, 12.7544498}, //
+
37840 {0.336050004, 12.7484303}, //
+
37841 {0.336966991, 12.7424002}, //
+
37842 {0.337716997, 12.7363701}, //
+
37843 {0.33829999, 12.73034}, //
+
37844 {0.338717014, 12.7243099}, //
+
37845 {0.338966995, 12.7182798}, //
+
37846 {0.339049995, 12.7122498}, //
+
37847 });
+
37848 polys.push_back({
+
37849 {0.202127993, 12.7001305}, //
+
37850 {0.201749995, 12.7004004}, //
+
37851 {0.201392993, 12.7007999}, //
+
37852 {0.201077998, 12.7012396}, //
+
37853 {0.200806007, 12.7017202}, //
+
37854 {0.200574994, 12.7022495}, //
+
37855 {0.200386003, 12.7028103}, //
+
37856 {0.200239003, 12.7034197}, //
+
37857 {0.200133994, 12.7040701}, //
+
37858 {0.200071007, 12.7047701}, //
+
37859 {0.200049996, 12.7054996}, //
+
37860 {0.200029001, 12.7062998}, //
+
37861 {0.199965999, 12.70718}, //
+
37862 {0.199861005, 12.7081404}, //
+
37863 {0.199714005, 12.7091799}, //
+
37864 {0.199524999, 12.71031}, //
+
37865 {0.199294001, 12.7115202}, //
+
37866 {0.199021995, 12.7128201}, //
+
37867 {0.198706999, 12.7141895}, //
+
37868 {0.198349997, 12.7156496}, //
+
37869 {0.197992995, 12.7171602}, //
+
37870 {0.197678, 12.7186699}, //
+
37871 {0.197405994, 12.7201796}, //
+
37872 {0.197174996, 12.7216797}, //
+
37873 {0.196986005, 12.7231903}, //
+
37874 {0.196839005, 12.7246904}, //
+
37875 {0.196733996, 12.7262001}, //
+
37876 {0.196670994, 12.7277002}, //
+
37877 {0.196649998, 12.7292004}, //
+
37878 {0.197364002, 12.7316799}, //
+
37879 {0.197992995, 12.7345695}, //
+
37880 {0.198539004, 12.7378798}, //
+
37881 {0.199000999, 12.7416}, //
+
37882 {0.199377999, 12.7457504}, //
+
37883 {0.199671999, 12.7503099}, //
+
37884 {0.199882001, 12.75529}, //
+
37885 {0.200008005, 12.7606897}, //
+
37886 {0.200049996, 12.7665005}, //
+
37887 {0.200071007, 12.7748499}, //
+
37888 {0.200133994, 12.78333}, //
+
37889 {0.200239003, 12.7919302}, //
+
37890 {0.200386003, 12.8006601}, //
+
37891 {0.200574994, 12.8095198}, //
+
37892 {0.200806007, 12.8184996}, //
+
37893 {0.201077998, 12.82761}, //
+
37894 {0.201392993, 12.8368397}, //
+
37895 {0.201749995, 12.8462}, //
+
37896 {0.202149004, 12.8553495}, //
+
37897 {0.202590004, 12.8639498}, //
+
37898 {0.203071997, 12.8720102}, //
+
37899 {0.203596994, 12.8795204}, //
+
37900 {0.204163998, 12.8864899}, //
+
37901 {0.204771996, 12.89291}, //
+
37902 {0.205422997, 12.8987904}, //
+
37903 {0.206115007, 12.9041204}, //
+
37904 {0.206850007, 12.9089003}, //
+
37905 {0.208499998, 12.9105997}, //
+
37906 {0.209171996, 12.9112701}, //
+
37907 {0.209444001, 12.91154}, //
+
37908 {0.209674999, 12.9117804}, //
+
37909 {0.210011005, 12.9121103}, //
+
37910 {0.210199997, 12.9123001}, //
+
37911 {0.210283995, 12.91222}, //
+
37912 {0.210536003, 12.9119596}, //
+
37913 {0.210724995, 12.9117804}, //
+
37914 {0.211227998, 12.9112701}, //
+
37915 {0.211542994, 12.9109602}, //
+
37916 {0.212256998, 12.9102402}, //
+
37917 {0.212571993, 12.9099302}, //
+
37918 {0.212843999, 12.9096603}, //
+
37919 {0.213578999, 12.9089203}, //
+
37920 {0.213599995, 12.9089003}, //
+
37921 {0.215299994, 12.9055004}, //
+
37922 {0.215656996, 12.9047499}, //
+
37923 {0.215972006, 12.9040098}, //
+
37924 {0.216243997, 12.9032602}, //
+
37925 {0.216474995, 12.9025097}, //
+
37926 {0.216664001, 12.9017601}, //
+
37927 {0.216811001, 12.9010096}, //
+
37928 {0.216915995, 12.90026}, //
+
37929 {0.216978997, 12.8994999}, //
+
37930 {0.216999993, 12.8987503}, //
+
37931 {0.216958001, 12.8961201}, //
+
37932 {0.216831997, 12.8927298}, //
+
37933 {0.216621995, 12.8885899}, //
+
37934 {0.216327995, 12.8836899}, //
+
37935 {0.215950996, 12.8780403}, //
+
37936 {0.215489, 12.8716402}, //
+
37937 {0.214943007, 12.86448}, //
+
37938 {0.214313999, 12.8565702}, //
+
37939 {0.213599995, 12.8479004}, //
+
37940 {0.212864995, 12.8411198}, //
+
37941 {0.212173, 12.8343401}, //
+
37942 {0.211521998, 12.8275604}, //
+
37943 {0.210914001, 12.8207798}, //
+
37944 {0.210346997, 12.8140001}, //
+
37945 {0.209821999, 12.80721}, //
+
37946 {0.209340006, 12.8004303}, //
+
37947 {0.208899006, 12.7936401}, //
+
37948 {0.208499998, 12.78685}, //
+
37949 {0.208153993, 12.7801104}, //
+
37950 {0.207847998, 12.7734604}, //
+
37951 {0.207582995, 12.7668896}, //
+
37952 {0.207359001, 12.7603998}, //
+
37953 {0.207176, 12.7539997}, //
+
37954 {0.207032993, 12.7476702}, //
+
37955 {0.206930995, 12.7414303}, //
+
37956 {0.206870005, 12.7352695}, //
+
37957 {0.206850007, 12.7292004}, //
+
37958 {0.206828997, 12.7255602}, //
+
37959 {0.206765994, 12.7221699}, //
+
37960 {0.206661001, 12.7190304}, //
+
37961 {0.206514001, 12.7161398}, //
+
37962 {0.206324995, 12.7135}, //
+
37963 {0.206093997, 12.7111101}, //
+
37964 {0.205822006, 12.7089701}, //
+
37965 {0.205506995, 12.7070904}, //
+
37966 {0.205149993, 12.7054501}, //
+
37967 {0.204771996, 12.7040501}, //
+
37968 {0.204393998, 12.7028704}, //
+
37969 {0.204016998, 12.70189}, //
+
37970 {0.203639001, 12.7011204}, //
+
37971 {0.203261003, 12.7005596}, //
+
37972 {0.202883005, 12.7002096}, //
+
37973 {0.202506006, 12.7000599}, //
+
37974 });
+
37975 polys.push_back({
+
37976 {0.395399004, 12.7165298}, //
+
37977 {0.395000011, 12.71735}, //
+
37978 {0.394621998, 12.7186699}, //
+
37979 {0.394243985, 12.7203703}, //
+
37980 {0.393866986, 12.7224398}, //
+
37981 {0.393489003, 12.7249002}, //
+
37982 {0.393110991, 12.7277203}, //
+
37983 {0.392733008, 12.7309303}, //
+
37984 {0.392356008, 12.7345104}, //
+
37985 {0.391977996, 12.7384701}, //
+
37986 {0.391600013, 12.7427998}, //
+
37987 {0.391243011, 12.7473602}, //
+
37988 {0.390928, 12.7520103}, //
+
37989 {0.390655994, 12.7567396}, //
+
37990 {0.390424997, 12.7615499}, //
+
37991 {0.39023599, 12.7664499}, //
+
37992 {0.390089005, 12.7714195}, //
+
37993 {0.389984012, 12.7764797}, //
+
37994 {0.38992101, 12.78162}, //
+
37995 {0.389899999, 12.78685}, //
+
37996 {0.389113009, 12.8028803}, //
+
37997 {0.388240993, 12.8178301}, //
+
37998 {0.387282997, 12.8316803}, //
+
37999 {0.386240989, 12.84445}, //
+
38000 {0.385113001, 12.8561296}, //
+
38001 {0.383899987, 12.8667202}, //
+
38002 {0.382602006, 12.8762197}, //
+
38003 {0.381222427, 12.8846092}, //
+
38004 {0.380798995, 12.8867197}, //
+
38005 {0.380421996, 12.8886003}, //
+
38006 {0.379918009, 12.8911104}, //
+
38007 {0.379750013, 12.8919497}, //
+
38008 {0.381219, 12.8846302}, //
+
38009 {0.381222427, 12.8846092}, //
+
38010 {0.383150011, 12.875}, //
+
38011 {0.383926004, 12.87111}, //
+
38012 {0.384743005, 12.8669596}, //
+
38013 {0.385600001, 12.8625698}, //
+
38014 {0.386498004, 12.8579197}, //
+
38015 {0.387436986, 12.8530197}, //
+
38016 {0.388417006, 12.8478699}, //
+
38017 {0.38943699, 12.8424597}, //
+
38018 {0.390498012, 12.8368101}, //
+
38019 {0.391600013, 12.8309002}, //
+
38020 {0.392690986, 12.8248997}, //
+
38021 {0.39369899, 12.8189402}, //
+
38022 {0.394621998, 12.8130198}, //
+
38023 {0.395462006, 12.8071404}, //
+
38024 {0.396216989, 12.8013}, //
+
38025 {0.396889001, 12.7954998}, //
+
38026 {0.397477001, 12.7897396}, //
+
38027 {0.397980005, 12.78403}, //
+
38028 {0.398400009, 12.7783499}, //
+
38029 {0.398757011, 12.7727699}, //
+
38030 {0.399071991, 12.7673101}, //
+
38031 {0.399343997, 12.7619801}, //
+
38032 {0.399574995, 12.7567701}, //
+
38033 {0.399764001, 12.7516899}, //
+
38034 {0.399910986, 12.7467299}, //
+
38035 {0.40001601, 12.74189}, //
+
38036 {0.400079012, 12.7371798}, //
+
38037 {0.400099993, 12.7326002}, //
+
38038 {0.399365008, 12.7283897}, //
+
38039 {0.398672998, 12.7248096}, //
+
38040 {0.398021996, 12.7218599}, //
+
38041 {0.397413999, 12.7195396}, //
+
38042 {0.39684701, 12.7178402}, //
+
38043 {0.396322012, 12.7167797}, //
+
38044 {0.395839989, 12.7163401}, //
+
38045 });
+
38046 polys.push_back({
+
38047 {5.62250996, 12.2629995}, //
+
38048 {5.62202978, 12.2635698}, //
+
38049 {5.62150002, 12.2645102}, //
+
38050 {5.62094021, 12.26583}, //
+
38051 {5.62032986, 12.2675304}, //
+
38052 {5.61967993, 12.2696104}, //
+
38053 {5.61897993, 12.2720699}, //
+
38054 {5.61824989, 12.2749004}, //
+
38055 {5.61573982, 12.2891703}, //
+
38056 {5.61273003, 12.30336}, //
+
38057 {5.60922003, 12.3174601}, //
+
38058 {5.60520983, 12.33148}, //
+
38059 {5.60068989, 12.3454199}, //
+
38060 {5.59567022, 12.3592796}, //
+
38061 {5.59014988, 12.3730497}, //
+
38062 {5.58412981, 12.3867397}, //
+
38063 {5.5776, 12.4003496}, //
+
38064 {5.57465982, 12.4047804}, //
+
38065 {5.57188988, 12.4090405}, //
+
38066 {5.56929016, 12.4131403}, //
+
38067 {5.5668602, 12.4170704}, //
+
38068 {5.56459999, 12.4208403}, //
+
38069 {5.56251001, 12.4244404}, //
+
38070 {5.56058979, 12.4278698}, //
+
38071 {5.55882978, 12.4311504}, //
+
38072 {5.55725002, 12.4342499}, //
+
38073 {5.55293989, 12.4400597}, //
+
38074 {5.54903984, 12.4454603}, //
+
38075 {5.5455699, 12.4504404}, //
+
38076 {5.54251003, 12.4549999}, //
+
38077 {5.53986979, 12.4591503}, //
+
38078 {5.53765011, 12.4628696}, //
+
38079 {5.53585005, 12.4661798}, //
+
38080 {5.53446007, 12.4690704}, //
+
38081 {5.53350019, 12.47155}, //
+
38082 {5.53350019, 12.4816999}, //
+
38083 {5.53421021, 12.4839697}, //
+
38084 {5.53484011, 12.4862299}, //
+
38085 {5.5353899, 12.4884901}, //
+
38086 {5.53585005, 12.4907598}, //
+
38087 {5.53623009, 12.4930201}, //
+
38088 {5.53652, 12.4952803}, //
+
38089 {5.53672981, 12.4975405}, //
+
38090 {5.53685999, 12.4997902}, //
+
38091 {5.53690004, 12.5020504}, //
+
38092 {5.53681993, 12.5043497}, //
+
38093 {5.53656006, 12.5067301}, //
+
38094 {5.53613997, 12.5092001}, //
+
38095 {5.53556013, 12.5117502}, //
+
38096 {5.53480005, 12.51439}, //
+
38097 {5.53388023, 12.5171204}, //
+
38098 {5.53279018, 12.5199299}, //
+
38099 {5.5315299, 12.5228205}, //
+
38100 {5.53009987, 12.5257998}, //
+
38101 {5.52792978, 12.5272598}, //
+
38102 {5.52591991, 12.5286303}, //
+
38103 {5.5240798, 12.5299301}, //
+
38104 {5.52240992, 12.5311403}, //
+
38105 {5.52090979, 12.5322704}, //
+
38106 {5.51956987, 12.5333099}, //
+
38107 {5.51839018, 12.5342703}, //
+
38108 {5.51738977, 12.5351496}, //
+
38109 {5.51655006, 12.5359497}, //
+
38110 {5.51584005, 12.5367098}, //
+
38111 {5.51521015, 12.5374603}, //
+
38112 {5.51465988, 12.5382204}, //
+
38113 {5.51420021, 12.53897}, //
+
38114 {5.51382017, 12.5397301}, //
+
38115 {5.51352978, 12.5404797}, //
+
38116 {5.51331997, 12.5412397}, //
+
38117 {5.51318979, 12.5419903}, //
+
38118 {5.51315022, 12.5427504}, //
+
38119 {5.50974989, 12.5427504}, //
+
38120 {5.50974989, 12.5460997}, //
+
38121 {5.50976992, 12.5468798}, //
+
38122 {5.50983, 12.5476999}, //
+
38123 {5.50994015, 12.5485601}, //
+
38124 {5.51008987, 12.5494604}, //
+
38125 {5.51027012, 12.5503998}, //
+
38126 {5.51050997, 12.5513897}, //
+
38127 {5.51077986, 12.5524197}, //
+
38128 {5.5110898, 12.5534897}, //
+
38129 {5.51144981, 12.5545998}, //
+
38130 {5.51184988, 12.5557499}, //
+
38131 {5.51229, 12.5569496}, //
+
38132 {5.51277018, 12.5581799}, //
+
38133 {5.51329994, 12.5594597}, //
+
38134 {5.51386023, 12.5607796}, //
+
38135 {5.5144701, 12.56213}, //
+
38136 {5.51512003, 12.56353}, //
+
38137 {5.51582003, 12.56497}, //
+
38138 {5.51655006, 12.5664501}, //
+
38139 {5.51870012, 12.5708303}, //
+
38140 {5.5206399, 12.5749102}, //
+
38141 {5.52237988, 12.5786896}, //
+
38142 {5.52390003, 12.5821896}, //
+
38143 {5.52521992, 12.5853901}, //
+
38144 {5.52632999, 12.5882902}, //
+
38145 {5.52722979, 12.59091}, //
+
38146 {5.52791977, 12.5932302}, //
+
38147 {5.52839994, 12.5952501}, //
+
38148 {5.52875996, 12.5971203}, //
+
38149 {5.5290699, 12.5989399}, //
+
38150 {5.52933979, 12.6007299}, //
+
38151 {5.52958012, 12.6024704}, //
+
38152 {5.52975988, 12.6041698}, //
+
38153 {5.52991009, 12.6058302}, //
+
38154 {5.53002024, 12.60744}, //
+
38155 {5.53007984, 12.6090202}, //
+
38156 {5.53009987, 12.6105499}, //
+
38157 {5.53017998, 12.6130199}, //
+
38158 {5.53043985, 12.6159}, //
+
38159 {5.53085995, 12.6192102}, //
+
38160 {5.53143978, 12.6229296}, //
+
38161 {5.53219986, 12.6270704}, //
+
38162 {5.53312016, 12.6316404}, //
+
38163 {5.53421021, 12.6366196}, //
+
38164 {5.53547001, 12.6420298}, //
+
38165 {5.53690004, 12.64785}, //
+
38166 {5.53761005, 12.6522903}, //
+
38167 {5.53823996, 12.6565599}, //
+
38168 {5.53879023, 12.6606598}, //
+
38169 {5.5392499, 12.6646004}, //
+
38170 {5.53962994, 12.6683598}, //
+
38171 {5.53991985, 12.6719599}, //
+
38172 {5.54013014, 12.6753902}, //
+
38173 {5.54025984, 12.6786499}, //
+
38174 {5.54029989, 12.6817503}, //
+
38175 {5.54188013, 12.6899996}, //
+
38176 {5.54364014, 12.6981602}, //
+
38177 {5.54555988, 12.7062397}, //
+
38178 {5.54764986, 12.7142296}, //
+
38179 {5.54991007, 12.7221498}, //
+
38180 {5.55234003, 12.72997}, //
+
38181 {5.55494022, 12.7377195}, //
+
38182 {5.55771017, 12.7453699}, //
+
38183 {5.56064987, 12.7529497}, //
+
38184 {5.56221008, 12.7560701}, //
+
38185 {5.56389999, 12.7593899}, //
+
38186 {5.56572008, 12.7629299}, //
+
38187 {5.56765985, 12.7666702}, //
+
38188 {5.56971979, 12.7706299}, //
+
38189 {5.57191992, 12.7747898}, //
+
38190 {5.57424021, 12.77917}, //
+
38191 {5.57668018, 12.7837496}, //
+
38192 {5.57924986, 12.7885504}, //
+
38193 {5.5819602, 12.7934904}, //
+
38194 {5.58479023, 12.7985201}, //
+
38195 {5.58773994, 12.8036203}, //
+
38196 {5.59082985, 12.8088102}, //
+
38197 {5.5940299, 12.8140802}, //
+
38198 {5.59736013, 12.8194399}, //
+
38199 {5.60082006, 12.8248796}, //
+
38200 {5.60440016, 12.8304005}, //
+
38201 {5.60809994, 12.8360004}, //
+
38202 {5.61176014, 12.8415298}, //
+
38203 {5.61521006, 12.8468103}, //
+
38204 {5.61846018, 12.8518295}, //
+
38205 {5.62149, 12.8566103}, //
+
38206 {5.62431002, 12.8611298}, //
+
38207 {5.62692022, 12.8654003}, //
+
38208 {5.62932014, 12.8694201}, //
+
38209 {5.63151979, 12.8731899}, //
+
38210 {5.6335001, 12.8767004}, //
+
38211 {5.63528013, 12.8798599}, //
+
38212 {5.63685989, 12.8825598}, //
+
38213 {5.63821983, 12.8848}, //
+
38214 {5.63937998, 12.8865805}, //
+
38215 {5.64031982, 12.8879004}, //
+
38216 {5.64105988, 12.8887701}, //
+
38217 {5.6415801, 12.8891697}, //
+
38218 {5.64190006, 12.8891096}, //
+
38219 {5.6420002, 12.8886003}, //
+
38220 {5.64207983, 12.8869801}, //
+
38221 {5.64233017, 12.8851604}, //
+
38222 {5.64274979, 12.8831301}, //
+
38223 {5.6433301, 12.8808899}, //
+
38224 {5.64408016, 12.8784399}, //
+
38225 {5.64499998, 12.8757801}, //
+
38226 {5.64608002, 12.8729095}, //
+
38227 {5.64732981, 12.8698301}, //
+
38228 {5.64874983, 12.8665504}, //
+
38229 {5.65028, 12.8631001}, //
+
38230 {5.65185022, 12.85952}, //
+
38231 {5.65347004, 12.8558197}, //
+
38232 {5.6551199, 12.8519897}, //
+
38233 {5.65680981, 12.8480301}, //
+
38234 {5.65854979, 12.8439503}, //
+
38235 {5.66032982, 12.8397398}, //
+
38236 {5.66213989, 12.8354101}, //
+
38237 {5.66400003, 12.8309498}, //
+
38238 {5.66590977, 12.8265104}, //
+
38239 {5.66786003, 12.8222399}, //
+
38240 {5.66985989, 12.81814}, //
+
38241 {5.67188978, 12.8142004}, //
+
38242 {5.67397022, 12.8104401}, //
+
38243 {5.67608976, 12.8068399}, //
+
38244 {5.67824984, 12.8034096}, //
+
38245 {5.68044996, 12.8001499}, //
+
38246 {5.68270016, 12.7970505}, //
+
38247 {5.68345022, 12.7962904}, //
+
38248 {5.68420982, 12.7955399}, //
+
38249 {5.68495989, 12.7947798}, //
+
38250 {5.68570995, 12.7940302}, //
+
38251 {5.68646002, 12.7932701}, //
+
38252 {5.68721008, 12.7925196}, //
+
38253 {5.68796015, 12.7917604}, //
+
38254 {5.6887002, 12.7910099}, //
+
38255 {5.68944979, 12.7902498}, //
+
38256 {5.69020987, 12.7895203}, //
+
38257 {5.69095993, 12.7888203}, //
+
38258 {5.69172001, 12.7881699}, //
+
38259 {5.69247007, 12.7875605}, //
+
38260 {5.69323015, 12.7869997}, //
+
38261 {5.69398022, 12.7864704}, //
+
38262 {5.69473982, 12.7859898}, //
+
38263 {5.69548988, 12.7855501}, //
+
38264 {5.69624996, 12.7851496}, //
+
38265 {5.69698, 12.78477}, //
+
38266 {5.69768, 12.7843904}, //
+
38267 {5.69832993, 12.7840204}, //
+
38268 {5.6989398, 12.7836399}, //
+
38269 {5.69950008, 12.7832603}, //
+
38270 {5.70002985, 12.7828798}, //
+
38271 {5.70051003, 12.7825098}, //
+
38272 {5.70095015, 12.7821302}, //
+
38273 {5.70135021, 12.7817497}, //
+
38274 {5.70171022, 12.7813797}, //
+
38275 {5.70202017, 12.7810097}, //
+
38276 {5.70229006, 12.7806396}, //
+
38277 {5.70252991, 12.7802696}, //
+
38278 {5.70271015, 12.7798996}, //
+
38279 {5.70285988, 12.7795296}, //
+
38280 {5.70297003, 12.77915}, //
+
38281 {5.70303011, 12.77878}, //
+
38282 {5.70305014, 12.7784004}, //
+
38283 {5.70305014, 12.7733002}, //
+
38284 {5.70303011, 12.7732201}, //
+
38285 {5.70297003, 12.7729597}, //
+
38286 {5.70285988, 12.7725401}, //
+
38287 {5.70271015, 12.7719603}, //
+
38288 {5.70202017, 12.7691898}, //
+
38289 {5.70135021, 12.7665005}, //
+
38290 {5.70093012, 12.7649202}, //
+
38291 {5.70042992, 12.7631598}, //
+
38292 {5.69984007, 12.76124}, //
+
38293 {5.69917011, 12.7591496}, //
+
38294 {5.69841003, 12.7568903}, //
+
38295 {5.69756985, 12.7544603}, //
+
38296 {5.69665003, 12.7518597}, //
+
38297 {5.69564009, 12.7490902}, //
+
38298 {5.69455004, 12.74615}, //
+
38299 {5.69334984, 12.7431402}, //
+
38300 {5.69202995, 12.7401304}, //
+
38301 {5.6905899, 12.7371197}, //
+
38302 {5.68902016, 12.7341099}, //
+
38303 {5.68732023, 12.7310896}, //
+
38304 {5.68551016, 12.7280798}, //
+
38305 {5.68355989, 12.72507}, //
+
38306 {5.68148994, 12.7220602}, //
+
38307 {5.67929983, 12.7190504}, //
+
38308 {5.67779016, 12.7160797}, //
+
38309 {5.67628002, 12.7131901}, //
+
38310 {5.67476988, 12.7103901}, //
+
38311 {5.67327023, 12.7076702}, //
+
38312 {5.67176008, 12.7050304}, //
+
38313 {5.67025995, 12.7024698}, //
+
38314 {5.66874981, 12.6999998}, //
+
38315 {5.66725016, 12.6976099}, //
+
38316 {5.66575003, 12.6953001}, //
+
38317 {5.66336012, 12.69069}, //
+
38318 {5.66071987, 12.6859198}, //
+
38319 {5.65782022, 12.6809797}, //
+
38320 {5.65467978, 12.6758804}, //
+
38321 {5.65127993, 12.6706104}, //
+
38322 {5.64764023, 12.6651697}, //
+
38323 {5.64374018, 12.6595602}, //
+
38324 {5.6395998, 12.6537905}, //
+
38325 {5.63520002, 12.64785}, //
+
38326 {5.63215017, 12.6430798}, //
+
38327 {5.6290102, 12.6378002}, //
+
38328 {5.62579012, 12.63202}, //
+
38329 {5.62247992, 12.6257401}, //
+
38330 {5.61910009, 12.6189604}, //
+
38331 {5.61562014, 12.6116695}, //
+
38332 {5.61207008, 12.6038799}, //
+
38333 {5.6084199, 12.5955896}, //
+
38334 {5.60470009, 12.5867996}, //
+
38335 {5.60105991, 12.5778904}, //
+
38336 {5.59767008, 12.5692301}, //
+
38337 {5.59453011, 12.5608196}, //
+
38338 {5.59164, 12.55266}, //
+
38339 {5.58900023, 12.5447502}, //
+
38340 {5.58660984, 12.5370903}, //
+
38341 {5.5844698, 12.5296803}, //
+
38342 {5.5825901, 12.5225096}, //
+
38343 {5.58094978, 12.5156002}, //
+
38344 {5.58028984, 12.5074797}, //
+
38345 {5.57979012, 12.4996901}, //
+
38346 {5.57946014, 12.49224}, //
+
38347 {5.57929993, 12.4851198}, //
+
38348 {5.57929993, 12.4783401}, //
+
38349 {5.57946014, 12.4718904}, //
+
38350 {5.57979012, 12.4657698}, //
+
38351 {5.58028984, 12.46}, //
+
38352 {5.58094978, 12.4545498}, //
+
38353 {5.58178997, 12.4495802}, //
+
38354 {5.58279991, 12.4451904}, //
+
38355 {5.58397007, 12.4413795}, //
+
38356 {5.58532, 12.4381599}, //
+
38357 {5.58683014, 12.4355297}, //
+
38358 {5.58851004, 12.4334803}, //
+
38359 {5.59035015, 12.4320202}, //
+
38360 {5.59237003, 12.4311399}, //
+
38361 {5.59455013, 12.43085}, //
+
38362 {5.59606981, 12.4309797}, //
+
38363 {5.59763002, 12.4313498}, //
+
38364 {5.59923983, 12.4319801}, //
+
38365 {5.60089016, 12.4328499}, //
+
38366 {5.60257006, 12.43398}, //
+
38367 {5.60431004, 12.43536}, //
+
38368 {5.60608006, 12.4369898}, //
+
38369 {5.60789013, 12.4388704}, //
+
38370 {5.60974979, 12.441}, //
+
38371 {5.61161995, 12.4433098}, //
+
38372 {5.61344004, 12.4456997}, //
+
38373 {5.61523008, 12.4481697}, //
+
38374 {5.61697006, 12.4507303}, //
+
38375 {5.61866999, 12.4533701}, //
+
38376 {5.62032986, 12.45609}, //
+
38377 {5.62194014, 12.45889}, //
+
38378 {5.6235199, 12.4617796}, //
+
38379 {5.62505007, 12.4647503}, //
+
38380 {5.62668991, 12.4707804}, //
+
38381 {5.62857008, 12.4768105}, //
+
38382 {5.63071012, 12.4828396}, //
+
38383 {5.63310003, 12.4888697}, //
+
38384 {5.6357398, 12.4948997}, //
+
38385 {5.63862991, 12.5009298}, //
+
38386 {5.64176989, 12.5069504}, //
+
38387 {5.6451602, 12.5129805}, //
+
38388 {5.6487999, 12.5190001}, //
+
38389 {5.65185022, 12.5235205}, //
+
38390 {5.6549902, 12.5280399}, //
+
38391 {5.6582098, 12.5325699}, //
+
38392 {5.66152, 12.5370903}, //
+
38393 {5.66489983, 12.5416098}, //
+
38394 {5.66837978, 12.5461302}, //
+
38395 {5.67192984, 12.5506601}, //
+
38396 {5.67558002, 12.5551796}, //
+
38397 {5.67929983, 12.5597}, //
+
38398 {5.68374014, 12.5656605}, //
+
38399 {5.68801022, 12.5714998}, //
+
38400 {5.69211006, 12.5772104}, //
+
38401 {5.69605017, 12.5827904}, //
+
38402 {5.69981003, 12.5882502}, //
+
38403 {5.70341015, 12.5935898}, //
+
38404 {5.70684004, 12.5987997}, //
+
38405 {5.71010017, 12.6038904}, //
+
38406 {5.71320009, 12.6088495}, //
+
38407 {5.7160902, 12.6136904}, //
+
38408 {5.71871996, 12.6183996}, //
+
38409 {5.72110987, 12.6229801}, //
+
38410 {5.7232399, 12.6274405}, //
+
38411 {5.72512007, 12.6317797}, //
+
38412 {5.72675991, 12.6359797}, //
+
38413 {5.72813988, 12.6400604}, //
+
38414 {5.72926998, 12.6440201}, //
+
38415 {5.73015022, 12.64785}, //
+
38416 {5.7301898, 12.6501703}, //
+
38417 {5.73031998, 12.6526098}, //
+
38418 {5.73052979, 12.65518}, //
+
38419 {5.73082018, 12.6578798}, //
+
38420 {5.73120022, 12.6606998}, //
+
38421 {5.73165989, 12.6636496}, //
+
38422 {5.73221016, 12.6667204}, //
+
38423 {5.73284006, 12.66992}, //
+
38424 {5.73355007, 12.6732502}, //
+
38425 {5.73430014, 12.67663}, //
+
38426 {5.73506021, 12.6799603}, //
+
38427 {5.7358098, 12.68326}, //
+
38428 {5.73655987, 12.6864996}, //
+
38429 {5.73730993, 12.6897097}, //
+
38430 {5.73806, 12.6928701}, //
+
38431 {5.73881006, 12.6959896}, //
+
38432 {5.73955011, 12.69907}, //
+
38433 {5.74030018, 12.7020998}, //
+
38434 {5.74103022, 12.7050505}, //
+
38435 {5.74173021, 12.7078695}, //
+
38436 {5.74238014, 12.7105703}, //
+
38437 {5.74299002, 12.7131395}, //
+
38438 {5.74354982, 12.71558}, //
+
38439 {5.74408007, 12.7179003}, //
+
38440 {5.74455976, 12.7200899}, //
+
38441 {5.74499989, 12.7221603}, //
+
38442 {5.74539995, 12.7241001}, //
+
38443 {5.74658012, 12.7299805}, //
+
38444 {5.74701977, 12.7321796}, //
+
38445 {5.74709988, 12.7326002}, //
+
38446 {5.74717999, 12.7325201}, //
+
38447 {5.74742985, 12.7322598}, //
+
38448 {5.74842978, 12.7312603}, //
+
38449 {5.74917984, 12.7305002}, //
+
38450 {5.75010014, 12.7295799}, //
+
38451 {5.75118017, 12.7284899}, //
+
38452 {5.75242996, 12.7272301}, //
+
38453 {5.75384998, 12.7257996}, //
+
38454 {5.75538015, 12.7242804}, //
+
38455 {5.75695992, 12.7227097}, //
+
38456 {5.75857019, 12.7211103}, //
+
38457 {5.76023006, 12.71945}, //
+
38458 {5.76192999, 12.7177601}, //
+
38459 {5.76366997, 12.7160196}, //
+
38460 {5.76546001, 12.7142401}, //
+
38461 {5.76914978, 12.7105503}, //
+
38462 {5.77105999, 12.7086697}, //
+
38463 {5.77300978, 12.70679}, //
+
38464 {5.7750001, 12.7049103}, //
+
38465 {5.77702999, 12.7030296}, //
+
38466 {5.77909994, 12.7011499}, //
+
38467 {5.78121996, 12.6992598}, //
+
38468 {5.78337002, 12.6973801}, //
+
38469 {5.78556013, 12.6954899}, //
+
38470 {5.78779984, 12.6935997}, //
+
38471 {5.79000998, 12.6918297}, //
+
38472 {5.79215002, 12.6902599}, //
+
38473 {5.79418993, 12.6889095}, //
+
38474 {5.79616022, 12.6877604}, //
+
38475 {5.79803991, 12.68682}, //
+
38476 {5.79983997, 12.6860905}, //
+
38477 {5.80155993, 12.6855698}, //
+
38478 {5.80319977, 12.6852503}, //
+
38479 {5.80474997, 12.6851501}, //
+
38480 {5.80644989, 12.6851501}, //
+
38481 {5.80682993, 12.6851301}, //
+
38482 {5.80720997, 12.68507}, //
+
38483 {5.80757999, 12.6849604}, //
+
38484 {5.80796003, 12.6848097}, //
+
38485 {5.80834007, 12.6846304}, //
+
38486 {5.80872011, 12.6843901}, //
+
38487 {5.80909014, 12.6841202}, //
+
38488 {5.80947018, 12.6838102}, //
+
38489 {5.80985022, 12.6834497}, //
+
38490 {5.81024981, 12.6830902}, //
+
38491 {5.81068993, 12.6827803}, //
+
38492 {5.8111701, 12.6825104}, //
+
38493 {5.81168985, 12.6822701}, //
+
38494 {5.81225014, 12.6820898}, //
+
38495 {5.81285, 12.6819401}, //
+
38496 {5.81348991, 12.6818304}, //
+
38497 {5.8141799, 12.6817703}, //
+
38498 {5.81489992, 12.6817503}, //
+
38499 {5.8217001, 12.6817503}, //
+
38500 {5.81969023, 12.6780701}, //
+
38501 {5.81855011, 12.6759901}, //
+
38502 {5.81364012, 12.6670103}, //
+
38503 {5.81150007, 12.6631002}, //
+
38504 {5.80919981, 12.6588898}, //
+
38505 {5.80681992, 12.6545601}, //
+
38506 {5.80435991, 12.6500998}, //
+
38507 {5.80180979, 12.6455097}, //
+
38508 {5.79917002, 12.6408005}, //
+
38509 {5.79646015, 12.6359701}, //
+
38510 {5.79365015, 12.6309996}, //
+
38511 {5.79077005, 12.6259098}, //
+
38512 {5.78779984, 12.6206999}, //
+
38513 {5.78481007, 12.6154499}, //
+
38514 {5.78185987, 12.6102505}, //
+
38515 {5.77895021, 12.6050797}, //
+
38516 {5.77608013, 12.5999603}, //
+
38517 {5.7732501, 12.5948801}, //
+
38518 {5.77047014, 12.5898304}, //
+
38519 {5.76772022, 12.5848303}, //
+
38520 {5.76500988, 12.5798702}, //
+
38521 {5.76235008, 12.5749502}, //
+
38522 {5.75981998, 12.5702}, //
+
38523 {5.75750017, 12.5657396}, //
+
38524 {5.75539017, 12.5615702}, //
+
38525 {5.75348997, 12.5577002}, //
+
38526 {5.75179005, 12.5541201}, //
+
38527 {5.75030994, 12.5508404}, //
+
38528 {5.74903011, 12.5478497}, //
+
38529 {5.74796009, 12.5451498}, //
+
38530 {5.74709988, 12.5427504}, //
+
38531 {5.74492979, 12.5396004}, //
+
38532 {5.74291992, 12.5362101}, //
+
38533 {5.74107981, 12.5325603}, //
+
38534 {5.73940992, 12.5286703}, //
+
38535 {5.73790979, 12.5245199}, //
+
38536 {5.73656988, 12.5201302}, //
+
38537 {5.73539019, 12.51548}, //
+
38538 {5.73438978, 12.5105896}, //
+
38539 {5.73355007, 12.5054502}, //
+
38540 {5.73191023, 12.49858}, //
+
38541 {5.73003006, 12.49154}, //
+
38542 {5.72789001, 12.4843397}, //
+
38543 {5.72550011, 12.4769697}, //
+
38544 {5.72285986, 12.4694405}, //
+
38545 {5.71997023, 12.4617395}, //
+
38546 {5.71682978, 12.4538698}, //
+
38547 {5.71343994, 12.4458504}, //
+
38548 {5.70979977, 12.4376497}, //
+
38549 {5.70754004, 12.4323702}, //
+
38550 {5.70528984, 12.4270897}, //
+
38551 {5.70303011, 12.4218197}, //
+
38552 {5.7007699, 12.4165401}, //
+
38553 {5.69851017, 12.4112597}, //
+
38554 {5.69623995, 12.4059801}, //
+
38555 {5.69398022, 12.4007101}, //
+
38556 {5.69172001, 12.3954296}, //
+
38557 {5.68944979, 12.3901501}, //
+
38558 {5.68793011, 12.3850002}, //
+
38559 {5.68635988, 12.3801003}, //
+
38560 {5.68476009, 12.3754501}, //
+
38561 {5.68310022, 12.3710499}, //
+
38562 {5.68140984, 12.36691}, //
+
38563 {5.67966986, 12.3630199}, //
+
38564 {5.67788982, 12.3593798}, //
+
38565 {5.67607021, 12.3559904}, //
+
38566 {5.67420006, 12.35285}, //
+
38567 {5.67229986, 12.35005}, //
+
38568 {5.67036009, 12.3476601}, //
+
38569 {5.66836977, 12.3457003}, //
+
38570 {5.66633987, 12.3441496}, //
+
38571 {5.66426992, 12.34303}, //
+
38572 {5.66215992, 12.3423204}, //
+
38573 {5.65999985, 12.3420296}, //
+
38574 {5.6578002, 12.3421497}, //
+
38575 {5.65555, 12.3427}, //
+
38576 {5.65265989, 12.34268}, //
+
38577 {5.65003014, 12.3426199}, //
+
38578 {5.64764023, 12.3425102}, //
+
38579 {5.6455102, 12.3423595}, //
+
38580 {5.64363003, 12.3421803}, //
+
38581 {5.64199018, 12.3419399}, //
+
38582 {5.64061022, 12.34167}, //
+
38583 {5.63948011, 12.3413601}, //
+
38584 {5.63859987, 12.3409996}, //
+
38585 {5.63788986, 12.3405199}, //
+
38586 {5.63725996, 12.3398304}, //
+
38587 {5.63671017, 12.3389301}, //
+
38588 {5.63625002, 12.3378201}, //
+
38589 {5.63586998, 12.3365002}, //
+
38590 {5.63558006, 12.33498}, //
+
38591 {5.63536978, 12.3332396}, //
+
38592 {5.63524008, 12.3312998}, //
+
38593 {5.63520002, 12.3291502}, //
+
38594 {5.63515997, 12.3283501}, //
+
38595 {5.63502979, 12.3274698}, //
+
38596 {5.63483, 12.3265104}, //
+
38597 {5.63454008, 12.3254604}, //
+
38598 {5.63417006, 12.3243198}, //
+
38599 {5.63370991, 12.3231096}, //
+
38600 {5.63317013, 12.3218002}, //
+
38601 {5.63254976, 12.3204203}, //
+
38602 {5.63184977, 12.3189497}, //
+
38603 {5.63184977, 12.2986002}, //
+
38604 {5.6311202, 12.29632}, //
+
38605 {5.63042021, 12.2939997}, //
+
38606 {5.6297698, 12.2916403}, //
+
38607 {5.62915993, 12.2892303}, //
+
38608 {5.62860012, 12.2867804}, //
+
38609 {5.62806988, 12.2842903}, //
+
38610 {5.62759018, 12.2817497}, //
+
38611 {5.62715006, 12.27917}, //
+
38612 {5.62674999, 12.2765503}, //
+
38613 {5.62636995, 12.2740402}, //
+
38614 {5.62598991, 12.27178}, //
+
38615 {5.62561989, 12.2697802}, //
+
38616 {5.62523985, 12.2680197}, //
+
38617 {5.62485981, 12.2665195}, //
+
38618 {5.62447977, 12.2652597}, //
+
38619 {5.62411022, 12.2642603}, //
+
38620 {5.62373018, 12.2635002}, //
+
38621 {5.62335014, 12.2629995}, //
+
38622 {5.62295008, 12.2628098}, //
+
38623 });
+
38624 polys.push_back({
+
38625 {6.09983015, 12.8005695}, //
+
38626 {6.10026979, 12.8014498}, //
+
38627 {6.10051012, 12.8019104}, //
+
38628 {6.10078001, 12.8024597}, //
+
38629 {6.10108995, 12.8030901}, //
+
38630 {6.10144997, 12.8037996}, //
+
38631 {6.10178995, 12.8045998}, //
+
38632 {6.10203981, 12.80548}, //
+
38633 {6.10221004, 12.8064404}, //
+
38634 {6.10229015, 12.8074799}, //
+
38635 {6.10229015, 12.80861}, //
+
38636 {6.10221004, 12.8098202}, //
+
38637 {6.10203981, 12.81112}, //
+
38638 {6.10178995, 12.8124905}, //
+
38639 {6.10144997, 12.8139496}, //
+
38640 {6.10106993, 12.8154802}, //
+
38641 {6.10068989, 12.81705}, //
+
38642 {6.10031986, 12.8186703}, //
+
38643 {6.09993982, 12.8203201}, //
+
38644 {6.09955978, 12.82201}, //
+
38645 {6.09918022, 12.8237495}, //
+
38646 {6.0988102, 12.8255301}, //
+
38647 {6.09843016, 12.8273401}, //
+
38648 {6.09805012, 12.8291998}, //
+
38649 {6.09758997, 12.8310699}, //
+
38650 {6.09696007, 12.8328896}, //
+
38651 {6.09615993, 12.8346796}, //
+
38652 {6.09520006, 12.8364201}, //
+
38653 {6.09405994, 12.8381205}, //
+
38654 {6.09276009, 12.8397799}, //
+
38655 {6.09129, 12.8413897}, //
+
38656 {6.08965015, 12.8429699}, //
+
38657 {6.08785009, 12.8444996}, //
+
38658 {6.08592987, 12.8460302}, //
+
38659 {6.08392, 12.8476}, //
+
38660 {6.08183002, 12.8492203}, //
+
38661 {6.07965994, 12.8508701}, //
+
38662 {6.07740021, 12.85256}, //
+
38663 {6.07504988, 12.8542995}, //
+
38664 {6.07261992, 12.8560801}, //
+
38665 {6.07009983, 12.8578901}, //
+
38666 {6.06750011, 12.8597498}, //
+
38667 {6.0646801, 12.8615799}, //
+
38668 {6.06148005, 12.8632803}, //
+
38669 {6.05790997, 12.86485}, //
+
38670 {6.05394983, 12.8662996}, //
+
38671 {6.04963017, 12.8676205}, //
+
38672 {6.04491997, 12.8688202}, //
+
38673 {6.03984022, 12.8698902}, //
+
38674 {6.03437996, 12.8708296}, //
+
38675 {6.02855015, 12.8716497}, //
+
38676 {6.02869987, 12.8716898}, //
+
38677 {6.02914, 12.8718204}, //
+
38678 {6.02987003, 12.8720198}, //
+
38679 {6.03088999, 12.8723097}, //
+
38680 {6.03220987, 12.8726797}, //
+
38681 {6.03382015, 12.8731403}, //
+
38682 {6.03571987, 12.8736801}, //
+
38683 {6.03790998, 12.8743}, //
+
38684 {6.04040003, 12.875}, //
+
38685 {6.04302979, 12.8757296}, //
+
38686 {6.04567003, 12.8764296}, //
+
38687 {6.04829979, 12.87708}, //
+
38688 {6.05093002, 12.8776903}, //
+
38689 {6.05356979, 12.8782501}, //
+
38690 {6.05620003, 12.8787804}, //
+
38691 {6.05882978, 12.8792601}, //
+
38692 {6.06147003, 12.8796997}, //
+
38693 {6.06409979, 12.8801003}, //
+
38694 {6.06676006, 12.8804598}, //
+
38695 {6.06946993, 12.8807697}, //
+
38696 {6.07221985, 12.8810396}, //
+
38697 {6.07499981, 12.8812799}, //
+
38698 {6.07782984, 12.8814602}, //
+
38699 {6.08069992, 12.8816099}, //
+
38700 {6.08361006, 12.8817196}, //
+
38701 {6.08655977, 12.8817797}, //
+
38702 {6.08955002, 12.8817997}, //
+
38703 {6.09251022, 12.8817596}, //
+
38704 {6.09533978, 12.8816299}, //
+
38705 {6.0980401, 12.8814201}, //
+
38706 {6.10061979, 12.8811302}, //
+
38707 {6.10306978, 12.8807497}, //
+
38708 {6.10539007, 12.88029}, //
+
38709 {6.1075902, 12.8797398}, //
+
38710 {6.10966015, 12.8791103}, //
+
38711 {6.11159992, 12.8783998}, //
+
38712 {6.11337996, 12.8775597}, //
+
38713 {6.11496019, 12.8765602}, //
+
38714 {6.11632013, 12.8753796}, //
+
38715 {6.1174798, 12.8740396}, //
+
38716 {6.11842012, 12.8725405}, //
+
38717 {6.11916018, 12.8708696}, //
+
38718 {6.11967993, 12.86903}, //
+
38719 {6.11999989, 12.8670197}, //
+
38720 {6.12010002, 12.86485}, //
+
38721 {6.12003994, 12.8603897}, //
+
38722 {6.11985016, 12.85606}, //
+
38723 {6.1195302, 12.8518496}, //
+
38724 {6.11909008, 12.8477697}, //
+
38725 {6.1185298, 12.8438101}, //
+
38726 {6.1178298, 12.8399801}, //
+
38727 {6.11701012, 12.8362799}, //
+
38728 {6.11606979, 12.8326998}, //
+
38729 {6.11499977, 12.8292503}, //
+
38730 {6.11387014, 12.8259697}, //
+
38731 {6.11273003, 12.8228903}, //
+
38732 {6.11159992, 12.8200197}, //
+
38733 {6.11046982, 12.8173599}, //
+
38734 {6.10933018, 12.8149099}, //
+
38735 {6.10820007, 12.8126698}, //
+
38736 {6.10706997, 12.8106403}, //
+
38737 {6.10592985, 12.8088198}, //
+
38738 {6.10480022, 12.8072004}, //
+
38739 {6.10279989, 12.8045101}, //
+
38740 {6.10199022, 12.8034201}, //
+
38741 {6.0999999, 12.8007402}, //
+
38742 {6.09981012, 12.8004799}, //
+
38743 {6.09975004, 12.8003998}, //
+
38744 });
+
38745 polys.push_back({
+
38746 {3.90953994, 12.7775602}, //
+
38747 {3.90901995, 12.7776403}, //
+
38748 {3.90854001, 12.7778101}, //
+
38749 {3.90809989, 12.77806}, //
+
38750 {3.90770006, 12.7784004}, //
+
38751 {3.9059999, 12.7800999}, //
+
38752 {3.90770006, 12.7800999}, //
+
38753 {3.90806007, 12.7801199}, //
+
38754 {3.90837002, 12.78018}, //
+
38755 {3.90863991, 12.7802801}, //
+
38756 {3.90888, 12.7804298}, //
+
38757 {3.90906, 12.7806101}, //
+
38758 {3.90920997, 12.7808304}, //
+
38759 {3.90932012, 12.7811003}, //
+
38760 {3.90937996, 12.7813997}, //
+
38761 {3.90939999, 12.7817497}, //
+
38762 {3.90942001, 12.7821102}, //
+
38763 {3.90948009, 12.7824202}, //
+
38764 {3.90959001, 12.78269}, //
+
38765 {3.90973997, 12.7829304}, //
+
38766 {3.90991998, 12.7831097}, //
+
38767 {3.91016006, 12.7832603}, //
+
38768 {3.91042995, 12.78337}, //
+
38769 {3.9107399, 12.7834301}, //
+
38770 {3.91109991, 12.7834501}, //
+
38771 {3.91280007, 12.7834501}, //
+
38772 {3.91308999, 12.7835999}, //
+
38773 {3.91396999, 12.7840405}, //
+
38774 {3.91543007, 12.78477}, //
+
38775 {3.91747999, 12.7857904}, //
+
38776 {3.92010999, 12.7871103}, //
+
38777 {3.92333007, 12.7887201}, //
+
38778 {3.92714, 12.7906199}, //
+
38779 {3.93153, 12.7928104}, //
+
38780 {3.93650007, 12.7952995}, //
+
38781 {3.94187999, 12.7980099}, //
+
38782 {3.94746995, 12.8008404}, //
+
38783 {3.95326996, 12.8037901}, //
+
38784 {3.95928001, 12.80688}, //
+
38785 {3.96550012, 12.8100796}, //
+
38786 {3.97192001, 12.8134098}, //
+
38787 {3.97855997, 12.8168697}, //
+
38788 {3.98539996, 12.8204498}, //
+
38789 {3.99245, 12.8241501}, //
+
38790 {3.99956012, 12.8278503}, //
+
38791 {4.00658989, 12.8314304}, //
+
38792 {4.01353979, 12.8348799}, //
+
38793 {4.02040005, 12.8382101}, //
+
38794 {4.02718019, 12.8414097}, //
+
38795 {4.03387022, 12.8444796}, //
+
38796 {4.04048014, 12.8474302}, //
+
38797 {4.04700994, 12.8502502}, //
+
38798 {4.05345011, 12.8529501}, //
+
38799 {4.05966997, 12.8554897}, //
+
38800 {4.06551981, 12.8578196}, //
+
38801 {4.07099009, 12.8599396}, //
+
38802 {4.07607985, 12.8618498}, //
+
38803 {4.08080006, 12.8635502}, //
+
38804 {4.08514023, 12.8650398}, //
+
38805 {4.08909988, 12.8663197}, //
+
38806 {4.09268999, 12.8673897}, //
+
38807 {4.09590006, 12.8682499}, //
+
38808 {4.10447979, 12.8694601}, //
+
38809 {4.11514997, 12.87008}, //
+
38810 {4.12792015, 12.87012}, //
+
38811 {4.14276981, 12.8695698}, //
+
38812 {4.15971994, 12.8684397}, //
+
38813 {4.17877007, 12.8667202}, //
+
38814 {4.19990015, 12.8644104}, //
+
38815 {4.22313023, 12.8615198}, //
+
38816 {4.2484498, 12.8580503}, //
+
38817 {4.25685978, 12.8565502}, //
+
38818 {4.26553011, 12.8550501}, //
+
38819 {4.27443981, 12.8535404}, //
+
38820 {4.28360987, 12.8520403}, //
+
38821 {4.29302979, 12.8505297}, //
+
38822 {4.30269003, 12.8490295}, //
+
38823 {4.31261015, 12.8475199}, //
+
38824 {4.32278013, 12.8460102}, //
+
38825 {4.33319998, 12.8444996}, //
+
38826 {4.35000992, 12.8431101}, //
+
38827 {4.36576986, 12.84198}, //
+
38828 {4.38048983, 12.8410997}, //
+
38829 {4.39415979, 12.8404703}, //
+
38830 {4.40677977, 12.8400898}, //
+
38831 {4.41836023, 12.8399696}, //
+
38832 {4.42888021, 12.8400898}, //
+
38833 {4.43837023, 12.8404703}, //
+
38834 {4.44680023, 12.8410997}, //
+
38835 {4.45444012, 12.8418999}, //
+
38836 {4.46153021, 12.8427801}, //
+
38837 {4.46808004, 12.8437405}, //
+
38838 {4.4740901, 12.8447905}, //
+
38839 {4.47954988, 12.8459301}, //
+
38840 {4.48446989, 12.8471403}, //
+
38841 {4.4888401, 12.8484497}, //
+
38842 {4.49267006, 12.8498297}, //
+
38843 {4.49595022, 12.8513002}, //
+
38844 {4.49670982, 12.8513403}, //
+
38845 {4.49745989, 12.85147}, //
+
38846 {4.49821997, 12.8516703}, //
+
38847 {4.49897003, 12.8519602}, //
+
38848 {4.49973011, 12.8523302}, //
+
38849 {4.50048018, 12.8527899}, //
+
38850 {4.50123978, 12.8533297}, //
+
38851 {4.50198984, 12.8539495}, //
+
38852 {4.50274992, 12.8546495}, //
+
38853 {4.5054698, 12.8523903}, //
+
38854 {4.50759983, 12.8501396}, //
+
38855 {4.50914001, 12.8478804}, //
+
38856 {4.51009989, 12.8456202}, //
+
38857 {4.51047993, 12.8433599}, //
+
38858 {4.51026011, 12.8410902}, //
+
38859 {4.50945997, 12.83883}, //
+
38860 {4.50806999, 12.8365698}, //
+
38861 {4.50610018, 12.8343}, //
+
38862 {4.50375986, 12.8320398}, //
+
38863 {4.50124979, 12.8297901}, //
+
38864 {4.49857998, 12.8275299}, //
+
38865 {4.49572992, 12.8252802}, //
+
38866 {4.49272013, 12.82302}, //
+
38867 {4.4895401, 12.8207703}, //
+
38868 {4.48619986, 12.8185101}, //
+
38869 {4.48267984, 12.8162603}, //
+
38870 {4.47900009, 12.8140001}, //
+
38871 {4.47678995, 12.8125296}, //
+
38872 {4.47464991, 12.8111496}, //
+
38873 {4.47261, 12.8098402}, //
+
38874 {4.47064018, 12.80863}, //
+
38875 {4.46876001, 12.8074903}, //
+
38876 {4.46695995, 12.8064404}, //
+
38877 {4.46524, 12.80548}, //
+
38878 {4.46360016, 12.8045998}, //
+
38879 {4.46204996, 12.8037996}, //
+
38880 {4.45791006, 12.8023796}, //
+
38881 {4.45301008, 12.8011303}, //
+
38882 {4.44736004, 12.8000498}, //
+
38883 {4.44094992, 12.7991304}, //
+
38884 {4.43379021, 12.7983799}, //
+
38885 {4.42586994, 12.7978001}, //
+
38886 {4.41720009, 12.7973804}, //
+
38887 {4.40778017, 12.7971296}, //
+
38888 {4.39760017, 12.7970505}, //
+
38889 {4.38695002, 12.7971497}, //
+
38890 {4.37609005, 12.7974701}, //
+
38891 {4.3650198, 12.7979898}, //
+
38892 {4.35374022, 12.7987204}, //
+
38893 {4.34224987, 12.7996597}, //
+
38894 {4.33056021, 12.8008099}, //
+
38895 {4.31864977, 12.8021603}, //
+
38896 {4.30653, 12.80373}, //
+
38897 {4.29419994, 12.8055}, //
+
38898 {4.28201008, 12.8074503}, //
+
38899 {4.27026987, 12.8095303}, //
+
38900 {4.25899982, 12.8117304}, //
+
38901 {4.24818993, 12.8140497}, //
+
38902 {4.23783016, 12.8164997}, //
+
38903 {4.22793007, 12.8190804}, //
+
38904 {4.21850014, 12.8217802}, //
+
38905 {4.20951986, 12.8246002}, //
+
38906 {4.20100021, 12.8275499}, //
+
38907 {4.19250011, 12.8309402}, //
+
38908 {4.18358994, 12.83358}, //
+
38909 {4.17425013, 12.8354597}, //
+
38910 {4.16450024, 12.8365898}, //
+
38911 {4.15431976, 12.8369703}, //
+
38912 {4.14373016, 12.8365898}, //
+
38913 {4.13271999, 12.8354702}, //
+
38914 {4.12130022, 12.83358}, //
+
38915 {4.10944986, 12.8309498}, //
+
38916 {4.09747982, 12.8278999}, //
+
38917 {4.08566999, 12.8247604}, //
+
38918 {4.07402992, 12.8215303}, //
+
38919 {4.06256008, 12.8182201}, //
+
38920 {4.05125999, 12.8148298}, //
+
38921 {4.04012012, 12.8113499}, //
+
38922 {4.02914, 12.8077898}, //
+
38923 {4.01834011, 12.8041401}, //
+
38924 {4.00769997, 12.8003998}, //
+
38925 {3.99815989, 12.7975101}, //
+
38926 {3.98912001, 12.7948799}, //
+
38927 {3.98059011, 12.79249}, //
+
38928 {3.97254992, 12.7903605}, //
+
38929 {3.96501994, 12.7884798}, //
+
38930 {3.95798993, 12.7868404}, //
+
38931 {3.95145988, 12.7854605}, //
+
38932 {3.94543004, 12.7843304}, //
+
38933 {3.93989992, 12.7834501}, //
+
38934 {3.93769002, 12.7827501}, //
+
38935 {3.93554997, 12.7821302}, //
+
38936 {3.93351007, 12.7815905}, //
+
38937 {3.93154001, 12.7811298}, //
+
38938 {3.92966008, 12.7807598}, //
+
38939 {3.92786002, 12.7804699}, //
+
38940 {3.92614007, 12.7802696}, //
+
38941 {3.92449999, 12.7801399}, //
+
38942 {3.92295003, 12.7800999}, //
+
38943 {3.92147994, 12.7800798}, //
+
38944 {3.92009997, 12.7800198}, //
+
38945 {3.9187901, 12.7799101}, //
+
38946 {3.91757989, 12.7797604}, //
+
38947 {3.91644001, 12.7795801}, //
+
38948 {3.91539001, 12.7793398}, //
+
38949 {3.9144299, 12.7790699}, //
+
38950 {3.9135499, 12.77876}, //
+
38951 {3.91275001, 12.7784004}, //
+
38952 {3.91202998, 12.77806}, //
+
38953 {3.91134, 12.7778101}, //
+
38954 {3.91070008, 12.7776403}, //
+
38955 {3.91009998, 12.7775602}, //
+
38956 });
+
38957 polys.push_back({
+
38958 {3.74154997, 12.7699003}, //
+
38959 {3.73960996, 12.7699604}, //
+
38960 {3.73754001, 12.7701502}, //
+
38961 {3.73534012, 12.7704697}, //
+
38962 {3.73302007, 12.7709103}, //
+
38963 {3.73057008, 12.7714701}, //
+
38964 {3.72798991, 12.7721701}, //
+
38965 {3.72529006, 12.7729902}, //
+
38966 {3.72246003, 12.7739296}, //
+
38967 {3.71950006, 12.7749996}, //
+
38968 {3.71644998, 12.7762003}, //
+
38969 {3.71331, 12.7775202}, //
+
38970 {3.71008992, 12.7789602}, //
+
38971 {3.70677996, 12.78053}, //
+
38972 {3.7033999, 12.7822304}, //
+
38973 {3.69991994, 12.7840405}, //
+
38974 {3.69636989, 12.7859898}, //
+
38975 {3.69271994, 12.7880602}, //
+
38976 {3.68899989, 12.7902498}, //
+
38977 {3.67940998, 12.7945995}, //
+
38978 {3.67023993, 12.7986298}, //
+
38979 {3.66148996, 12.80231}, //
+
38980 {3.6531601, 12.8056602}, //
+
38981 {3.64525008, 12.8086796}, //
+
38982 {3.63775992, 12.8113604}, //
+
38983 {3.63068008, 12.8137102}, //
+
38984 {3.62403011, 12.8157196}, //
+
38985 {3.6178, 12.8174}, //
+
38986 {3.61629009, 12.8181496}, //
+
38987 {3.61477995, 12.8188896}, //
+
38988 {3.61327004, 12.8196402}, //
+
38989 {3.61176991, 12.8203897}, //
+
38990 {3.61026001, 12.8211403}, //
+
38991 {3.60876012, 12.8218899}, //
+
38992 {3.60724998, 12.8226404}, //
+
38993 {3.60575008, 12.8233995}, //
+
38994 {3.60424995, 12.8241501}, //
+
38995 {3.60203004, 12.8249502}, //
+
38996 {3.59987998, 12.8258305}, //
+
38997 {3.59783006, 12.8267899}, //
+
38998 {3.59584999, 12.8278303}, //
+
38999 {3.59397006, 12.8289604}, //
+
39000 {3.59215999, 12.8301697}, //
+
39001 {3.59044003, 12.8314695}, //
+
39002 {3.58879995, 12.83284}, //
+
39003 {3.58724999, 12.8343}, //
+
39004 {3.58576989, 12.8357897}, //
+
39005 {3.58433008, 12.8372402}, //
+
39006 {3.58293009, 12.8386402}, //
+
39007 {3.58157992, 12.8400097}, //
+
39008 {3.58026004, 12.8413296}, //
+
39009 {3.57897997, 12.8426104}, //
+
39010 {3.57774997, 12.8438501}, //
+
39011 {3.57540011, 12.8462}, //
+
39012 {3.57434011, 12.84727}, //
+
39013 {3.57060003, 12.8510504}, //
+
39014 {3.57034993, 12.8513002}, //
+
39015 {3.57130003, 12.8513403}, //
+
39016 {3.57268, 12.85147}, //
+
39017 {3.57447004, 12.8516703}, //
+
39018 {3.57668996, 12.8519602}, //
+
39019 {3.57931995, 12.8523302}, //
+
39020 {3.58237004, 12.8527899}, //
+
39021 {3.58585, 12.8533297}, //
+
39022 {3.58974004, 12.8539495}, //
+
39023 {3.59404993, 12.8546495}, //
+
39024 {3.59862995, 12.8553801}, //
+
39025 {3.60333991, 12.8560801}, //
+
39026 {3.60818005, 12.8567305}, //
+
39027 {3.61314011, 12.8573399}, //
+
39028 {3.61822009, 12.8578997}, //
+
39029 {3.62343001, 12.8584299}, //
+
39030 {3.6287601, 12.8589096}, //
+
39031 {3.63421988, 12.8593502}, //
+
39032 {3.63980007, 12.8597498}, //
+
39033 {3.64530993, 12.8600597}, //
+
39034 {3.6505301, 12.8602505}, //
+
39035 {3.65545011, 12.8603201}, //
+
39036 {3.66007996, 12.8602505}, //
+
39037 {3.66441989, 12.8600597}, //
+
39038 {3.66846991, 12.8597498}, //
+
39039 {3.67221999, 12.8593102}, //
+
39040 {3.67567992, 12.8587399}, //
+
39041 {3.67884994, 12.8580503}, //
+
39042 {3.68427992, 12.8572102}, //
+
39043 {3.69004989, 12.8562098}, //
+
39044 {3.69616008, 12.8550301}, //
+
39045 {3.7026, 12.8536901}, //
+
39046 {3.70937991, 12.85219}, //
+
39047 {3.71649003, 12.8505201}, //
+
39048 {3.7239399, 12.8486795}, //
+
39049 {3.73172998, 12.8466702}, //
+
39050 {3.73985004, 12.8444996}, //
+
39051 {3.74888992, 12.8414803}, //
+
39052 {3.75342011, 12.8399696}, //
+
39053 {3.75794005, 12.8384705}, //
+
39054 {3.76245999, 12.8369598}, //
+
39055 {3.76697993, 12.8354597}, //
+
39056 {3.77150989, 12.83395}, //
+
39057 {3.78055, 12.8309498}, //
+
39058 {3.78594995, 12.8301497}, //
+
39059 {3.79161, 12.8292704}, //
+
39060 {3.79750991, 12.82831}, //
+
39061 {3.80366993, 12.82726}, //
+
39062 {3.81007004, 12.8261204}, //
+
39063 {3.81673002, 12.8249102}, //
+
39064 {3.82363009, 12.8235998}, //
+
39065 {3.83079004, 12.8222198}, //
+
39066 {3.83820009, 12.8207502}, //
+
39067 {3.84265995, 12.8207302}, //
+
39068 {3.84699011, 12.8206701}, //
+
39069 {3.8512001, 12.8205605}, //
+
39070 {3.85527992, 12.8204098}, //
+
39071 {3.85924006, 12.8202295}, //
+
39072 {3.86307001, 12.8199902}, //
+
39073 {3.86677003, 12.8197203}, //
+
39074 {3.87034988, 12.8194103}, //
+
39075 {3.87380004, 12.8190498}, //
+
39076 {3.87700009, 12.8186598}, //
+
39077 {3.87982011, 12.8182297}, //
+
39078 {3.8822701, 12.8177605}, //
+
39079 {3.88434005, 12.8172398}, //
+
39080 {3.88603997, 12.81668}, //
+
39081 {3.8873601, 12.8160696}, //
+
39082 {3.88829994, 12.8154202}, //
+
39083 {3.88885999, 12.8147297}, //
+
39084 {3.88905001, 12.8140001}, //
+
39085 {3.88909006, 12.8132}, //
+
39086 {3.88922, 12.8123198}, //
+
39087 {3.88943005, 12.8113604}, //
+
39088 {3.88971996, 12.8103104}, //
+
39089 {3.8901, 12.8091698}, //
+
39090 {3.89055991, 12.8079596}, //
+
39091 {3.89110994, 12.8066502}, //
+
39092 {3.89174008, 12.8052702}, //
+
39093 {3.89245009, 12.8037996}, //
+
39094 {3.89246988, 12.8023005}, //
+
39095 {3.89252996, 12.8008003}, //
+
39096 {3.89264011, 12.7992897}, //
+
39097 {3.89279008, 12.7977896}, //
+
39098 {3.89297009, 12.7962799}, //
+
39099 {3.89320993, 12.7947798}, //
+
39100 {3.89348006, 12.7932701}, //
+
39101 {3.89379001, 12.7917604}, //
+
39102 {3.89415002, 12.7902498}, //
+
39103 {3.89451003, 12.7887802}, //
+
39104 {3.89481997, 12.7874002}, //
+
39105 {3.8950901, 12.7861004}, //
+
39106 {3.89532995, 12.7848902}, //
+
39107 {3.89550996, 12.7837601}, //
+
39108 {3.89565992, 12.7827196}, //
+
39109 {3.89577007, 12.7817602}, //
+
39110 {3.89582992, 12.7808905}, //
+
39111 {3.89584994, 12.7800999}, //
+
39112 {3.89586997, 12.7793703}, //
+
39113 {3.89593005, 12.7786703}, //
+
39114 {3.89602995, 12.7780199}, //
+
39115 {3.89617991, 12.7774096}, //
+
39116 {3.89635992, 12.7768497}, //
+
39117 {3.89657998, 12.7763205}, //
+
39118 {3.89685011, 12.7758398}, //
+
39119 {3.89715004, 12.7754002}, //
+
39120 {3.89750004, 12.7749996}, //
+
39121 {3.90260005, 12.7699003}, //
+
39122 });
+
39123 polys.push_back({
+
39124 {5.94868994, 12.7247105}, //
+
39125 {5.94526005, 12.72544}, //
+
39126 {5.94215012, 12.7267199}, //
+
39127 {5.93938017, 12.7285404}, //
+
39128 {5.93695021, 12.7308998}, //
+
39129 {5.93478012, 12.7336502}, //
+
39130 {5.93276978, 12.7365999}, //
+
39131 {5.93093014, 12.7397699}, //
+
39132 {5.92925978, 12.7431402}, //
+
39133 {5.92776012, 12.7467098}, //
+
39134 {5.92642021, 12.7504997}, //
+
39135 {5.92524004, 12.7544899}, //
+
39136 {5.92424011, 12.7586899}, //
+
39137 {5.92339993, 12.7630997}, //
+
39138 {5.92264986, 12.76754}, //
+
39139 {5.92190981, 12.7718096}, //
+
39140 {5.92116022, 12.7759199}, //
+
39141 {5.92041016, 12.7798595}, //
+
39142 {5.91966009, 12.7836304}, //
+
39143 {5.91891003, 12.7872295}, //
+
39144 {5.91815996, 12.7906704}, //
+
39145 {5.91739988, 12.7939396}, //
+
39146 {5.91664982, 12.7970505}, //
+
39147 {5.91672993, 12.8006897}, //
+
39148 {5.91697979, 12.80408}, //
+
39149 {5.91739988, 12.8072205}, //
+
39150 {5.91798019, 12.8100996}, //
+
39151 {5.91872978, 12.8127403}, //
+
39152 {5.91965008, 12.8151197}, //
+
39153 {5.92073011, 12.8172503}, //
+
39154 {5.9219799, 12.8191204}, //
+
39155 {5.92339993, 12.8207502}, //
+
39156 {5.92499018, 12.8222198}, //
+
39157 {5.9267602, 12.8235998}, //
+
39158 {5.92867994, 12.8249102}, //
+
39159 {5.93077993, 12.8261204}, //
+
39160 {5.93304014, 12.82726}, //
+
39161 {5.9354701, 12.82831}, //
+
39162 {5.93805981, 12.8292704}, //
+
39163 {5.94082022, 12.8301497}, //
+
39164 {5.9437499, 12.8309498}, //
+
39165 {5.94378996, 12.8310299}, //
+
39166 {5.94392014, 12.8312798}, //
+
39167 {5.94412994, 12.8317003}, //
+
39168 {5.94441986, 12.8322802}, //
+
39169 {5.9447999, 12.8330297}, //
+
39170 {5.94526005, 12.83395}, //
+
39171 {5.94580984, 12.8350296}, //
+
39172 {5.94644022, 12.8362799}, //
+
39173 {5.94715023, 12.8376999}, //
+
39174 {5.94941998, 12.8377399}, //
+
39175 {5.95168018, 12.8378696}, //
+
39176 {5.95393991, 12.8380804}, //
+
39177 {5.95621014, 12.8383703}, //
+
39178 {5.95846987, 12.8387499}, //
+
39179 {5.96073008, 12.8392096}, //
+
39180 {5.96298981, 12.8397598}, //
+
39181 {5.96524, 12.8403902}, //
+
39182 {5.96750021, 12.8410997}, //
+
39183 {5.97269011, 12.8426504}, //
+
39184 {5.97771978, 12.8442898}, //
+
39185 {5.98258018, 12.8460102}, //
+
39186 {5.98726988, 12.8478098}, //
+
39187 {5.99178982, 12.8496904}, //
+
39188 {5.99614, 12.8516598}, //
+
39189 {6.00032997, 12.8536997}, //
+
39190 {6.00435019, 12.8558397}, //
+
39191 {6.00820017, 12.8580503}, //
+
39192 {6.00914001, 12.8578596}, //
+
39193 {6.00987005, 12.8577099}, //
+
39194 {6.0166502, 12.8563499}, //
+
39195 {6.01857996, 12.8559504}, //
+
39196 {6.02058983, 12.8555098}, //
+
39197 {6.02268982, 12.8550301}, //
+
39198 {6.02486992, 12.8544998}, //
+
39199 {6.02713013, 12.85394}, //
+
39200 {6.02946997, 12.8533297}, //
+
39201 {6.03189993, 12.8526802}, //
+
39202 {6.03441, 12.8519802}, //
+
39203 {6.03700018, 12.8512497}, //
+
39204 {6.03961992, 12.8504801}, //
+
39205 {6.04220009, 12.8496704}, //
+
39206 {6.0447402, 12.8488197}, //
+
39207 {6.04722977, 12.84793}, //
+
39208 {6.04968023, 12.8469896}, //
+
39209 {6.05209017, 12.8460102}, //
+
39210 {6.05445004, 12.8449802}, //
+
39211 {6.05676985, 12.8439102}, //
+
39212 {6.05905008, 12.8428001}, //
+
39213 {6.06122017, 12.8416004}, //
+
39214 {6.06323004, 12.8402796}, //
+
39215 {6.06507015, 12.8388395}, //
+
39216 {6.06674004, 12.8372698}, //
+
39217 {6.06824017, 12.8355703}, //
+
39218 {6.06958008, 12.8337603}, //
+
39219 {6.07075977, 12.83181}, //
+
39220 {6.07176018, 12.8297396}, //
+
39221 {6.07259989, 12.8275499}, //
+
39222 {6.07332993, 12.8267698}, //
+
39223 {6.07402992, 12.8259497}, //
+
39224 {6.07467985, 12.8250904}, //
+
39225 {6.0752902, 12.8241901}, //
+
39226 {6.07585001, 12.8232498}, //
+
39227 {6.07637978, 12.8222599}, //
+
39228 {6.07685995, 12.8212299}, //
+
39229 {6.07730007, 12.8201599}, //
+
39230 {6.07770014, 12.8190498}, //
+
39231 {6.07806015, 12.8179302}, //
+
39232 {6.07837009, 12.8168001}, //
+
39233 {6.07863998, 12.8156796}, //
+
39234 {6.07887983, 12.8145504}, //
+
39235 {6.07906008, 12.8134203}, //
+
39236 {6.0792098, 12.8122902}, //
+
39237 {6.07931995, 12.8111601}, //
+
39238 {6.07938004, 12.81003}, //
+
39239 {6.07940006, 12.8088999}, //
+
39240 {6.07940006, 12.7970505}, //
+
39241 {6.07989979, 12.7954798}, //
+
39242 {6.0799098, 12.7937803}, //
+
39243 {6.07941008, 12.7919502}, //
+
39244 {6.07840014, 12.79}, //
+
39245 {6.07690001, 12.78792}, //
+
39246 {6.07489014, 12.7857199}, //
+
39247 {6.07238007, 12.78339}, //
+
39248 {6.06936979, 12.7809296}, //
+
39249 {6.06584978, 12.7783499}, //
+
39250 {6.06194019, 12.7756996}, //
+
39251 {6.0577302, 12.7729998}, //
+
39252 {6.05322981, 12.7702599}, //
+
39253 {6.04842997, 12.7674799}, //
+
39254 {6.04334021, 12.7646599}, //
+
39255 {6.03796005, 12.7617903}, //
+
39256 {6.03227997, 12.7588902}, //
+
39257 {6.02630997, 12.7559404}, //
+
39258 {6.02005005, 12.7529497}, //
+
39259 {6.01375008, 12.74998}, //
+
39260 {6.00766993, 12.7470903}, //
+
39261 {6.00179005, 12.7442904}, //
+
39262 {5.99611998, 12.7415705}, //
+
39263 {5.99066019, 12.7389297}, //
+
39264 {5.98541021, 12.7363701}, //
+
39265 {5.98036003, 12.7339001}, //
+
39266 {5.97553015, 12.7315102}, //
+
39267 {5.97090006, 12.7292004}, //
+
39268 {5.96578979, 12.7272196}, //
+
39269 {5.96100998, 12.7257795}, //
+
39270 {5.95657015, 12.7248802}, //
+
39271 {5.95246983, 12.7245197}, //
+
39272 });
+
39273 polys.push_back({
+
39274 {0.288578004, 12.6303301}, //
+
39275 {0.288053006, 12.6308899}, //
+
39276 {0.287485987, 12.6318302}, //
+
39277 {0.28687799, 12.6331396}, //
+
39278 {0.286226988, 12.63484}, //
+
39279 {0.285535008, 12.6368999}, //
+
39280 {0.284799993, 12.6393499}, //
+
39281 {0.284045011, 12.6421003}, //
+
39282 {0.283291012, 12.6450596}, //
+
39283 {0.28253901, 12.6482201}, //
+
39284 {0.281787992, 12.6515999}, //
+
39285 {0.281037986, 12.65518}, //
+
39286 {0.280288994, 12.6589699}, //
+
39287 {0.279540986, 12.6629696}, //
+
39288 {0.278795004, 12.6671801}, //
+
39289 {0.278050005, 12.6716003}, //
+
39290 {0.277251989, 12.6784401}, //
+
39291 {0.276371002, 12.6854095}, //
+
39292 {0.275406003, 12.6925001}, //
+
39293 {0.274356008, 12.6997204}, //
+
39294 {0.273223013, 12.7070599}, //
+
39295 {0.272006005, 12.71453}, //
+
39296 {0.270704001, 12.7221298}, //
+
39297 {0.269318998, 12.7298498}, //
+
39298 {0.267850012, 12.7377005}, //
+
39299 {0.266391009, 12.7455902}, //
+
39300 {0.265015006, 12.7534399}, //
+
39301 {0.263722003, 12.76124}, //
+
39302 {0.262511998, 12.7690096}, //
+
39303 {0.26138401, 12.7767296}, //
+
39304 {0.260338992, 12.7844105}, //
+
39305 {0.259377003, 12.7920504}, //
+
39306 {0.258497, 12.7996502}, //
+
39307 {0.257699996, 12.8072004}, //
+
39308 {0.257721007, 12.8072596}, //
+
39309 {0.257784009, 12.8074503}, //
+
39310 {0.257889003, 12.8077698}, //
+
39311 {0.25940001, 12.8122997}, //
+
39312 {0.259777009, 12.8134499}, //
+
39313 {0.260152996, 12.8146496}, //
+
39314 {0.260527998, 12.8158798}, //
+
39315 {0.260901004, 12.8171597}, //
+
39316 {0.261272997, 12.8184795}, //
+
39317 {0.261644006, 12.8198299}, //
+
39318 {0.262014002, 12.8212299}, //
+
39319 {0.262383014, 12.82267}, //
+
39320 {0.26275, 12.8241501}, //
+
39321 {0.263107002, 12.8256798}, //
+
39322 {0.263422012, 12.8272495}, //
+
39323 {0.263693988, 12.8288698}, //
+
39324 {0.263924986, 12.8305197}, //
+
39325 {0.264113992, 12.8322096}, //
+
39326 {0.264261007, 12.83395}, //
+
39327 {0.264366001, 12.8357296}, //
+
39328 {0.264429003, 12.8375397}, //
+
39329 {0.264450014, 12.8394003}, //
+
39330 {0.264533997, 12.8412704}, //
+
39331 {0.264786005, 12.8430901}, //
+
39332 {0.265206009, 12.8448696}, //
+
39333 {0.265792996, 12.8466101}, //
+
39334 {0.266548991, 12.8483}, //
+
39335 {0.267471999, 12.8499603}, //
+
39336 {0.268563986, 12.8515596}, //
+
39337 {0.269823015, 12.8531303}, //
+
39338 {0.27125001, 12.8546495}, //
+
39339 {0.271292001, 12.8558302}, //
+
39340 {0.271418005, 12.8563299}, //
+
39341 {0.271627992, 12.8561697}, //
+
39342 {0.271921992, 12.8553305}, //
+
39343 {0.272298992, 12.8538303}, //
+
39344 {0.272760987, 12.8516502}, //
+
39345 {0.273306996, 12.8487997}, //
+
39346 {0.273936003, 12.8452902}, //
+
39347 {0.274650007, 12.8410997}, //
+
39348 {0.27540499, 12.8364496}, //
+
39349 {0.276158988, 12.8315496}, //
+
39350 {0.27691099, 12.8264103}, //
+
39351 {0.277662009, 12.8210096}, //
+
39352 {0.278412014, 12.8153601}, //
+
39353 {0.279161006, 12.8094597}, //
+
39354 {0.279909015, 12.8032999}, //
+
39355 {0.280654997, 12.7968998}, //
+
39356 {0.281399995, 12.7902498}, //
+
39357 {0.281441987, 12.7864799}, //
+
39358 {0.281567991, 12.7827196}, //
+
39359 {0.281778008, 12.7789497}, //
+
39360 {0.282072008, 12.7751799}, //
+
39361 {0.282449007, 12.7714195}, //
+
39362 {0.282911003, 12.7676497}, //
+
39363 {0.283457011, 12.7638798}, //
+
39364 {0.284085989, 12.7601204}, //
+
39365 {0.284799993, 12.7563496}, //
+
39366 {0.286899, 12.7464199}, //
+
39367 {0.288661987, 12.7362499}, //
+
39368 {0.290089011, 12.7258196}, //
+
39369 {0.291180015, 12.7151499}, //
+
39370 {0.29193601, 12.7042198}, //
+
39371 {0.292356014, 12.6930399}, //
+
39372 {0.292439997, 12.6816101}, //
+
39373 {0.292187989, 12.6699305}, //
+
39374 {0.291599989, 12.658}, //
+
39375 {0.291579008, 12.6529799}, //
+
39376 {0.291516006, 12.6484699}, //
+
39377 {0.291411012, 12.6444597}, //
+
39378 {0.291263998, 12.6409397}, //
+
39379 {0.291074991, 12.6379299}, //
+
39380 {0.290843993, 12.6354198}, //
+
39381 {0.290571988, 12.6334105}, //
+
39382 {0.290257007, 12.6319103}, //
+
39383 {0.289900005, 12.6309004}, //
+
39384 {0.289501011, 12.6303301}, //
+
39385 {0.289059997, 12.6301403}, //
+
39386 });
+
39387 polys.push_back({
+
39388 {5.78531981, 11.6769695}, //
+
39389 {5.78363991, 11.6773672}, //
+
39390 {5.78179979, 11.6779699}, //
+
39391 {5.77977991, 11.6787806}, //
+
39392 {5.77759981, 11.6798}, //
+
39393 {5.77536011, 11.6809959}, //
+
39394 {5.77316999, 11.6823158}, //
+
39395 {5.77101994, 11.6837606}, //
+
39396 {5.76889992, 11.6853313}, //
+
39397 {5.76682997, 11.6870251}, //
+
39398 {5.76480007, 11.6888437}, //
+
39399 {5.76281023, 11.6907883}, //
+
39400 {5.76085997, 11.6928568}, //
+
39401 {5.75895023, 11.6950502}, //
+
39402 {5.75705004, 11.6972752}, //
+
39403 {5.75510979, 11.6994152}, //
+
39404 {5.75312996, 11.7014723}, //
+
39405 {5.75110006, 11.7034454}, //
+
39406 {5.74904013, 11.7053337}, //
+
39407 {5.74693012, 11.707139}, //
+
39408 {5.74478006, 11.7088604}, //
+
39409 {5.74257994, 11.7104969}, //
+
39410 {5.74034977, 11.7120504}, //
+
39411 {5.74031019, 11.7135086}, //
+
39412 {5.74018002, 11.7148848}, //
+
39413 {5.73997021, 11.7161779}, //
+
39414 {5.73967981, 11.7173882}, //
+
39415 {5.73929977, 11.7185163}, //
+
39416 {5.7388401, 11.7195606}, //
+
39417 {5.73828983, 11.7205229}, //
+
39418 {5.73765993, 11.7214031}, //
+
39419 {5.73694992, 11.7222004}, //
+
39420 {5.7368598, 11.7408657}, //
+
39421 {5.73812008, 11.7591982}, //
+
39422 {5.74070978, 11.777194}, //
+
39423 {5.74463987, 11.794857}, //
+
39424 {5.74991989, 11.8121853}, //
+
39425 {5.75652981, 11.8291779}, //
+
39426 {5.76448011, 11.8458357}, //
+
39427 {5.77376986, 11.8621597}, //
+
39428 {5.78439999, 11.87815}, //
+
39429 {5.79528999, 11.8967009}, //
+
39430 {5.80684996, 11.9146643}, //
+
39431 {5.81906986, 11.9320393}, //
+
39432 {5.83197021, 11.9488268}, //
+
39433 {5.84553003, 11.9650269}, //
+
39434 {5.85975981, 11.9806395}, //
+
39435 {5.87465, 11.9956636}, //
+
39436 {5.89022017, 12.0101004}, //
+
39437 {5.90644979, 12.0239496}, //
+
39438 {5.91251993, 12.0293102}, //
+
39439 {5.91868019, 12.0348396}, //
+
39440 {5.92492008, 12.0405302}, //
+
39441 {5.9312501, 12.0463896}, //
+
39442 {5.9376502, 12.0524197}, //
+
39443 {5.94413996, 12.0586205}, //
+
39444 {5.95070982, 12.0649796}, //
+
39445 {5.95735979, 12.0715103}, //
+
39446 {5.96409988, 12.0782003}, //
+
39447 {5.96923018, 12.0828695}, //
+
39448 {5.97407007, 12.0878296}, //
+
39449 {5.97861004, 12.0930796}, //
+
39450 {5.98286009, 12.09863}, //
+
39451 {5.98682022, 12.1044703}, //
+
39452 {5.99047995, 12.1106005}, //
+
39453 {5.99385023, 12.1170197}, //
+
39454 {5.99692011, 12.1237402}, //
+
39455 {5.99970007, 12.1307497}, //
+
39456 {6.0020299, 12.1379004}, //
+
39457 {6.00372982, 12.1450005}, //
+
39458 {6.00479984, 12.1520596}, //
+
39459 {6.00523996, 12.15907}, //
+
39460 {6.00505018, 12.1660404}, //
+
39461 {6.00423002, 12.1729698}, //
+
39462 {6.00278997, 12.1798601}, //
+
39463 {6.00071001, 12.1866999}, //
+
39464 {5.99800014, 12.1934996}, //
+
39465 {5.99650002, 12.1981096}, //
+
39466 {5.99499989, 12.2028799}, //
+
39467 {5.99349022, 12.2078199}, //
+
39468 {5.99199009, 12.2129202}, //
+
39469 {5.99047995, 12.2181902}, //
+
39470 {5.98897982, 12.22363}, //
+
39471 {5.98747015, 12.2292404}, //
+
39472 {5.98596001, 12.2350101}, //
+
39473 {5.98444986, 12.2409496}, //
+
39474 {5.98367023, 12.24541}, //
+
39475 {5.98285007, 12.2497396}, //
+
39476 {5.98198986, 12.2539501}, //
+
39477 {5.98109007, 12.2580299}, //
+
39478 {5.98015022, 12.2619896}, //
+
39479 {5.97915983, 12.2658195}, //
+
39480 {5.97812986, 12.2695198}, //
+
39481 {5.97705984, 12.2730999}, //
+
39482 {5.97594976, 12.2765503}, //
+
39483 {5.97481012, 12.2798405}, //
+
39484 {5.97361994, 12.2829304}, //
+
39485 {5.97239017, 12.2858}, //
+
39486 {5.97111988, 12.2884598}, //
+
39487 {5.9698, 12.2909098}, //
+
39488 {5.96844006, 12.2931499}, //
+
39489 {5.96704006, 12.2951803}, //
+
39490 {5.96559, 12.2969904}, //
+
39491 {5.96409988, 12.2986002}, //
+
39492 {5.96338987, 12.2941198}, //
+
39493 {5.96275997, 12.2897196}, //
+
39494 {5.96221018, 12.2854099}, //
+
39495 {5.96175003, 12.2811804}, //
+
39496 {5.96136999, 12.2770395}, //
+
39497 {5.96108007, 12.2729797}, //
+
39498 {5.96086979, 12.2690001}, //
+
39499 {5.96074009, 12.26511}, //
+
39500 {5.96070004, 12.2613001}, //
+
39501 {5.9580698, 12.24259}, //
+
39502 {5.95467997, 12.2241297}, //
+
39503 {5.95054007, 12.2059298}, //
+
39504 {5.94564009, 12.1879702}, //
+
39505 {5.93999004, 12.17027}, //
+
39506 {5.93358994, 12.1528101}, //
+
39507 {5.92643023, 12.1356096}, //
+
39508 {5.91851997, 12.1186504}, //
+
39509 {5.90985012, 12.1019497}, //
+
39510 {5.89512014, 12.0837002}, //
+
39511 {5.87954998, 12.0666304}, //
+
39512 {5.86314011, 12.0507202}, //
+
39513 {5.84590006, 12.0359898}, //
+
39514 {5.82781982, 12.0224304}, //
+
39515 {5.80888987, 12.0100403}, //
+
39516 {5.78913021, 11.9988213}, //
+
39517 {5.76853991, 11.9887753}, //
+
39518 {5.74709988, 11.9799004}, //
+
39519 {5.73970985, 11.9774656}, //
+
39520 {5.73261976, 11.9746981}, //
+
39521 {5.72582006, 11.9715939}, //
+
39522 {5.71930981, 11.9681568}, //
+
39523 {5.71308994, 11.964385}, //
+
39524 {5.70717001, 11.9602776}, //
+
39525 {5.70153999, 11.9558363}, //
+
39526 {5.69619989, 11.9510603}, //
+
39527 {5.69115019, 11.9459496}, //
+
39528 {5.68640995, 11.9405565}, //
+
39529 {5.68195009, 11.9349127}, //
+
39530 {5.67779016, 11.9290171}, //
+
39531 {5.67393017, 11.9228687}, //
+
39532 {5.67035007, 11.9164686}, //
+
39533 {5.6670599, 11.9098167}, //
+
39534 {5.66407013, 11.9029131}, //
+
39535 {5.66135979, 11.8957567}, //
+
39536 {5.65894985, 11.8883495}, //
+
39537 {5.65817022, 11.8885174}, //
+
39538 {5.65735006, 11.889019}, //
+
39539 {5.65648985, 11.8898563}, //
+
39540 {5.65559006, 11.8910275}, //
+
39541 {5.65465021, 11.8925323}, //
+
39542 {5.65365982, 11.894372}, //
+
39543 {5.65262985, 11.8965473}, //
+
39544 {5.65155983, 11.8990564}, //
+
39545 {5.65045023, 11.9019003}, //
+
39546 {5.64935017, 11.904953}, //
+
39547 {5.64829016, 11.9080896}, //
+
39548 {5.6472702, 11.9113111}, //
+
39549 {5.64628983, 11.9146156}, //
+
39550 {5.64534998, 11.918005}, //
+
39551 {5.64445019, 11.9214783}, //
+
39552 {5.64358997, 11.9250355}, //
+
39553 {5.64277983, 11.9286747}, //
+
39554 {5.6420002, 11.9323997}, //
+
39555 {5.64124012, 11.9361563}, //
+
39556 {5.64049006, 11.9398689}, //
+
39557 {5.63972998, 11.9435387}, //
+
39558 {5.63897991, 11.9471645}, //
+
39559 {5.63821983, 11.9507494}, //
+
39560 {5.63746977, 11.9542894}, //
+
39561 {5.63671017, 11.9577856}, //
+
39562 {5.6359601, 11.9612398}, //
+
39563 {5.63520002, 11.9646502}, //
+
39564 {5.63450003, 11.9678507}, //
+
39565 {5.63333988, 11.9731216}, //
+
39566 {5.63288021, 11.975193}, //
+
39567 {5.63251019, 11.9768877}, //
+
39568 {5.63233995, 11.9776554}, //
+
39569 {5.63208008, 11.9807491}, //
+
39570 {5.63265991, 11.9828691}, //
+
39571 {5.63359022, 11.985754}, //
+
39572 {5.63465023, 11.9885559}, //
+
39573 {5.63583994, 11.9912729}, //
+
39574 {5.63714981, 11.993906}, //
+
39575 {5.63857985, 11.9964561}, //
+
39576 {5.64015007, 11.9989214}, //
+
39577 {5.64183998, 12.0012999}, //
+
39578 {5.64365005, 12.0036001}, //
+
39579 {5.64559984, 12.0057802}, //
+
39580 {5.64767981, 12.0078001}, //
+
39581 {5.64987993, 12.0096397}, //
+
39582 {5.65220022, 12.0113201}, //
+
39583 {5.65465021, 12.0128298}, //
+
39584 {5.6572299, 12.0141802}, //
+
39585 {5.65993023, 12.0153503}, //
+
39586 {5.66274977, 12.0163603}, //
+
39587 {5.66569996, 12.0172005}, //
+
39588 {5.6687398, 12.0179501}, //
+
39589 {5.67183018, 12.0187101}, //
+
39590 {5.67495012, 12.0194597}, //
+
39591 {5.67811012, 12.0202103}, //
+
39592 {5.68132019, 12.0209599}, //
+
39593 {5.68456984, 12.0217104}, //
+
39594 {5.68785, 12.02246}, //
+
39595 {5.69118023, 12.0232}, //
+
39596 {5.69455004, 12.0239496}, //
+
39597 {5.69785023, 12.0246601}, //
+
39598 {5.7009902, 12.0252895}, //
+
39599 {5.70395994, 12.0258398}, //
+
39600 {5.70675993, 12.0263004}, //
+
39601 {5.70940018, 12.02668}, //
+
39602 {5.71186018, 12.0269699}, //
+
39603 {5.71415997, 12.0271797}, //
+
39604 {5.71629, 12.0273104}, //
+
39605 {5.7182498, 12.0273504}, //
+
39606 {5.7267499, 12.0273504}, //
+
39607 {5.7342, 12.0289402}, //
+
39608 {5.74147987, 12.0307102}, //
+
39609 {5.74858999, 12.03263}, //
+
39610 {5.75553989, 12.03473}, //
+
39611 {5.76232004, 12.0369902}, //
+
39612 {5.76892996, 12.0394201}, //
+
39613 {5.77537012, 12.0420103}, //
+
39614 {5.78164005, 12.0447702}, //
+
39615 {5.78774977, 12.0476999}, //
+
39616 {5.7937398, 12.0509195}, //
+
39617 {5.79965019, 12.0545597}, //
+
39618 {5.80546999, 12.0586205}, //
+
39619 {5.81121016, 12.0630999}, //
+
39620 {5.81687021, 12.0679998}, //
+
39621 {5.82244015, 12.0733204}, //
+
39622 {5.82792997, 12.0790596}, //
+
39623 {5.83333015, 12.0852203}, //
+
39624 {5.83865023, 12.0917997}, //
+
39625 {5.84591007, 12.0956898}, //
+
39626 {5.85263014, 12.0998297}, //
+
39627 {5.85879993, 12.1042299}, //
+
39628 {5.86442995, 12.1088696}, //
+
39629 {5.86951017, 12.1137695}, //
+
39630 {5.87405014, 12.1189098}, //
+
39631 {5.87803984, 12.1243095}, //
+
39632 {5.88149023, 12.1299496}, //
+
39633 {5.88439989, 12.13585}, //
+
39634 {5.88694, 12.1419697}, //
+
39635 {5.88926983, 12.1482496}, //
+
39636 {5.89138985, 12.1547003}, //
+
39637 {5.89330006, 12.1613197}, //
+
39638 {5.89499998, 12.1681004}, //
+
39639 {5.8964901, 12.1750498}, //
+
39640 {5.89776993, 12.1821699}, //
+
39641 {5.89883995, 12.1894503}, //
+
39642 {5.89970016, 12.1969004}, //
+
39643 {5.90045023, 12.1992397}, //
+
39644 {5.90120983, 12.2017498}, //
+
39645 {5.9019599, 12.2044201}, //
+
39646 {5.90270996, 12.2072697}, //
+
39647 {5.90346003, 12.2102804}, //
+
39648 {5.90421009, 12.21346}, //
+
39649 {5.90496016, 12.2167997}, //
+
39650 {5.90570021, 12.2203197}, //
+
39651 {5.90644979, 12.224}, //
+
39652 {5.91427994, 12.2414198}, //
+
39653 {5.92118979, 12.2589998}, //
+
39654 {5.9271698, 12.2767496}, //
+
39655 {5.93224001, 12.2946701}, //
+
39656 {5.93637991, 12.3127499}, //
+
39657 {5.93961, 12.3310003}, //
+
39658 {5.94190979, 12.3494196}, //
+
39659 {5.94329023, 12.368}, //
+
39660 {5.9437499, 12.3867502}, //
+
39661 {5.95144987, 12.4039602}, //
+
39662 {5.95948982, 12.4209099}, //
+
39663 {5.96786022, 12.4376202}, //
+
39664 {5.97657013, 12.4540701}, //
+
39665 {5.98561001, 12.4702702}, //
+
39666 {5.99498987, 12.4862204}, //
+
39667 {6.0047102, 12.5019102}, //
+
39668 {6.01476002, 12.5173597}, //
+
39669 {6.02514982, 12.5325499}, //
+
39670 {6.03094006, 12.5379295}, //
+
39671 {6.03627014, 12.54352}, //
+
39672 {6.04114008, 12.5493202}, //
+
39673 {6.04554987, 12.5553303}, //
+
39674 {6.04949999, 12.5615501}, //
+
39675 {6.05298996, 12.5679703}, //
+
39676 {6.05601978, 12.5746098}, //
+
39677 {6.05858994, 12.5814505}, //
+
39678 {6.06069994, 12.5885}, //
+
39679 {6.06227016, 12.5956402}, //
+
39680 {6.06322002, 12.6027298}, //
+
39681 {6.06353998, 12.6097803}, //
+
39682 {6.06323004, 12.6168003}, //
+
39683 {6.06229019, 12.6237698}, //
+
39684 {6.06071997, 12.6307001}, //
+
39685 {6.05852985, 12.6375904}, //
+
39686 {6.05569983, 12.6444397}, //
+
39687 {6.05224991, 12.6512499}, //
+
39688 {6.05382013, 12.6548901}, //
+
39689 {6.05552006, 12.6582804}, //
+
39690 {6.05734015, 12.6614199}, //
+
39691 {6.05928993, 12.6643}, //
+
39692 {6.06135988, 12.6669397}, //
+
39693 {6.06356001, 12.6693201}, //
+
39694 {6.06587982, 12.6714497}, //
+
39695 {6.06832981, 12.6733198}, //
+
39696 {6.07089996, 12.6749496}, //
+
39697 {6.07356024, 12.6764202}, //
+
39698 {6.0762701, 12.6778002}, //
+
39699 {6.07902002, 12.6791096}, //
+
39700 {6.08179998, 12.6803198}, //
+
39701 {6.08463001, 12.6814604}, //
+
39702 {6.0875001, 12.6825104}, //
+
39703 {6.09041023, 12.6834698}, //
+
39704 {6.09335995, 12.68435}, //
+
39705 {6.09635019, 12.6851501}, //
+
39706 {6.10010004, 12.6866703}, //
+
39707 {6.10379982, 12.6882401}, //
+
39708 {6.10746002, 12.6898403}, //
+
39709 {6.11108017, 12.6914997}, //
+
39710 {6.11465979, 12.6931896}, //
+
39711 {6.11818981, 12.6949301}, //
+
39712 {6.1216898, 12.6967096}, //
+
39713 {6.12514019, 12.6985302}, //
+
39714 {6.12855005, 12.7004004}, //
+
39715 {6.13171005, 12.7024803}, //
+
39716 {6.1344099, 12.7049303}, //
+
39717 {6.13664007, 12.7077599}, //
+
39718 {6.1384201, 12.7109604}, //
+
39719 {6.13973999, 12.7145395}, //
+
39720 {6.14059019, 12.7184896}, //
+
39721 {6.14098978, 12.7228203}, //
+
39722 {6.14093018, 12.72752}, //
+
39723 {6.14039993, 12.7326002}, //
+
39724 {6.14284992, 12.7384901}, //
+
39725 {6.14567995, 12.7440796}, //
+
39726 {6.14889002, 12.7493801}, //
+
39727 {6.15247011, 12.7543802}, //
+
39728 {6.15642023, 12.7590904}, //
+
39729 {6.16075993, 12.7635098}, //
+
39730 {6.16546011, 12.7676296}, //
+
39731 {6.17053986, 12.7714596}, //
+
39732 {6.17600012, 12.7749996}, //
+
39733 {6.1816802, 12.7783699}, //
+
39734 {6.18739986, 12.7816896}, //
+
39735 {6.19316006, 12.7849798}, //
+
39736 {6.19895983, 12.7882204}, //
+
39737 {6.20480013, 12.79142}, //
+
39738 {6.21069002, 12.7945805}, //
+
39739 {6.21661997, 12.7976904}, //
+
39740 {6.22258997, 12.8007698}, //
+
39741 {6.22860003, 12.8037996}, //
+
39742 {6.23081017, 12.8045597}, //
+
39743 {6.23295021, 12.8053102}, //
+
39744 {6.23499012, 12.8060703}, //
+
39745 {6.23695993, 12.8068199}, //
+
39746 {6.2388401, 12.80758}, //
+
39747 {6.24064016, 12.8083296}, //
+
39748 {6.24236012, 12.8090897}, //
+
39749 {6.24399996, 12.8098402}, //
+
39750 {6.24555016, 12.8106003}, //
+
39751 {6.24468994, 12.8076496}, //
+
39752 {6.24361992, 12.8048296}, //
+
39753 {6.24234009, 12.8021297}, //
+
39754 {6.24084997, 12.7995501}, //
+
39755 {6.23915005, 12.7971001}, //
+
39756 {6.23723984, 12.7947798}, //
+
39757 {6.23511982, 12.7925797}, //
+
39758 {6.23278999, 12.7904997}, //
+
39759 {6.23024988, 12.7885504}, //
+
39760 {6.22750998, 12.7866898}, //
+
39761 {6.22455978, 12.7848797}, //
+
39762 {6.2214098, 12.7831001}, //
+
39763 {6.21803999, 12.7813597}, //
+
39764 {6.2144599, 12.7796698}, //
+
39765 {6.21066999, 12.7780199}, //
+
39766 {6.20666981, 12.7763996}, //
+
39767 {6.20246983, 12.7748299}, //
+
39768 {6.19805002, 12.7733002}, //
+
39769 {6.19285011, 12.7702303}, //
+
39770 {6.18776989, 12.7670298}, //
+
39771 {6.18280983, 12.7636995}, //
+
39772 {6.17797995, 12.7602501}, //
+
39773 {6.17327976, 12.75667}, //
+
39774 {6.1686902, 12.7529697}, //
+
39775 {6.16423988, 12.7491398}, //
+
39776 {6.1599102, 12.7451801}, //
+
39777 {6.15570021, 12.7411003}, //
+
39778 {6.15186977, 12.7368097}, //
+
39779 {6.1486702, 12.7322197}, //
+
39780 {6.14609003, 12.7273397}, //
+
39781 {6.14413977, 12.7221699}, //
+
39782 {6.14281988, 12.7166996}, //
+
39783 {6.14211988, 12.7109404}, //
+
39784 {6.14204979, 12.7048903}, //
+
39785 {6.14261007, 12.6985397}, //
+
39786 {6.14379978, 12.6919003}, //
+
39787 {6.14241982, 12.6872997}, //
+
39788 {6.1413002, 12.6825399}, //
+
39789 {6.14041996, 12.6776104}, //
+
39790 {6.13980007, 12.6724997}, //
+
39791 {6.13942003, 12.6672297}, //
+
39792 {6.13928986, 12.6617899}, //
+
39793 {6.13941002, 12.6561804}, //
+
39794 {6.13978004, 12.6504002}, //
+
39795 {6.14039993, 12.6444502}, //
+
39796 {6.14035988, 12.6392403}, //
+
39797 {6.14023018, 12.6341496}, //
+
39798 {6.14001989, 12.62918}, //
+
39799 {6.13972998, 12.6243496}, //
+
39800 {6.13934994, 12.6196404}, //
+
39801 {6.13888979, 12.6150503}, //
+
39802 {6.13834, 12.61059}, //
+
39803 {6.13771009, 12.6062603}, //
+
39804 {6.13700008, 12.6020498}, //
+
39805 {6.13600016, 12.59793}, //
+
39806 {6.13450003, 12.5938501}, //
+
39807 {6.13250017, 12.5898104}, //
+
39808 {6.1299901, 12.5858097}, //
+
39809 {6.12697983, 12.5818501}, //
+
39810 {6.12346983, 12.57794}, //
+
39811 {6.11945009, 12.57407}, //
+
39812 {6.11493015, 12.57024}, //
+
39813 {6.1099, 12.5664501}, //
+
39814 {6.0994401, 12.5587101}, //
+
39815 {6.08913994, 12.5505505}, //
+
39816 {6.07902002, 12.5419703}, //
+
39817 {6.06905985, 12.5329704}, //
+
39818 {6.05925989, 12.52355}, //
+
39819 {6.04963017, 12.5137196}, //
+
39820 {6.04017019, 12.5034599}, //
+
39821 {6.03087997, 12.4927902}, //
+
39822 {6.02174997, 12.4816999}, //
+
39823 {6.01316977, 12.47019}, //
+
39824 {6.00549984, 12.4582596}, //
+
39825 {5.99876022, 12.44592}, //
+
39826 {5.99293995, 12.4331503}, //
+
39827 {5.98803997, 12.4199696}, //
+
39828 {5.98405981, 12.4063702}, //
+
39829 {5.98099995, 12.3923502}, //
+
39830 {5.97886992, 12.3779097}, //
+
39831 {5.97765017, 12.3630505}, //
+
39832 {5.97673988, 12.3481798}, //
+
39833 {5.97699022, 12.3337297}, //
+
39834 {5.97841978, 12.3197098}, //
+
39835 {5.98101997, 12.3060999}, //
+
39836 {5.98479986, 12.2929096}, //
+
39837 {5.98973989, 12.2801399}, //
+
39838 {5.99585009, 12.2677898}, //
+
39839 {6.00313997, 12.2558603}, //
+
39840 {6.01160002, 12.2443504}, //
+
39841 {6.01582003, 12.2284899}, //
+
39842 {6.01945019, 12.2125397}, //
+
39843 {6.02251005, 12.1965103}, //
+
39844 {6.02497005, 12.1803904}, //
+
39845 {6.02686024, 12.1641903}, //
+
39846 {6.0281601, 12.1479101}, //
+
39847 {6.02887011, 12.1315403}, //
+
39848 {6.02899981, 12.1150904}, //
+
39849 {6.02855015, 12.0985498}, //
+
39850 {6.0230999, 12.0859499}, //
+
39851 {6.01733017, 12.0737696}, //
+
39852 {6.01120996, 12.0620098}, //
+
39853 {6.00475979, 12.0506601}, //
+
39854 {5.99798012, 12.0397396}, //
+
39855 {5.99085999, 12.0292397}, //
+
39856 {5.98340988, 12.0191603}, //
+
39857 {5.97561979, 12.00949}, //
+
39858 {5.96750021, 12.0002499}, //
+
39859 {5.96519995, 11.9971857}, //
+
39860 {5.96282005, 11.9940395}, //
+
39861 {5.96035004, 11.9908113}, //
+
39862 {5.95779991, 11.9874992}, //
+
39863 {5.95516014, 11.9841051}, //
+
39864 {5.95242977, 11.980628}, //
+
39865 {5.94961977, 11.9770679}, //
+
39866 {5.94673014, 11.9734249}, //
+
39867 {5.9437499, 11.9696999}, //
+
39868 {5.93693018, 11.9614124}, //
+
39869 {5.93002987, 11.953125}, //
+
39870 {5.92303991, 11.9448385}, //
+
39871 {5.91596985, 11.936554}, //
+
39872 {5.90881014, 11.9282713}, //
+
39873 {5.90156984, 11.9199886}, //
+
39874 {5.89424992, 11.9117079}, //
+
39875 {5.88683987, 11.9034281}, //
+
39876 {5.87935019, 11.8951502}, //
+
39877 {5.87119007, 11.8875637}, //
+
39878 {5.86326981, 11.8798962}, //
+
39879 {5.85560989, 11.8721437}, //
+
39880 {5.84819984, 11.8643103}, //
+
39881 {5.84104013, 11.8563938}, //
+
39882 {5.83412981, 11.8483944}, //
+
39883 {5.82746983, 11.840312}, //
+
39884 {5.82106018, 11.8321476}, //
+
39885 {5.81489992, 11.8239002}, //
+
39886 {5.80591011, 11.8109732}, //
+
39887 {5.79850006, 11.7977943}, //
+
39888 {5.7926898, 11.7843609}, //
+
39889 {5.78846979, 11.7706747}, //
+
39890 {5.78583002, 11.7567358}, //
+
39891 {5.78479004, 11.7425442}, //
+
39892 {5.78533983, 11.7280989}, //
+
39893 {5.78746986, 11.7134008}, //
+
39894 {5.79120016, 11.6984501}, //
+
39895 {5.79187012, 11.6948509}, //
+
39896 {5.79237986, 11.6915855}, //
+
39897 {5.79270983, 11.6886559}, //
+
39898 {5.79288006, 11.68606}, //
+
39899 {5.79288006, 11.6837988}, //
+
39900 {5.79270983, 11.6818724}, //
+
39901 {5.79237986, 11.6802797}, //
+
39902 {5.79187012, 11.6790228}, //
+
39903 {5.79120016, 11.6780996}, //
+
39904 {5.79035997, 11.6774588}, //
+
39905 {5.78935003, 11.6770258}, //
+
39906 {5.78817987, 11.6767998}, //
+
39907 {5.78682995, 11.6767807}, //
+
39908 });
+
39909 polys.push_back({
+
39910 {6.13677979, 12.2233496}, //
+
39911 {6.13470984, 12.2239199}, //
+
39912 {6.13251019, 12.2247801}, //
+
39913 {6.13017988, 12.2259302}, //
+
39914 {6.12772989, 12.2273703}, //
+
39915 {6.1251502, 12.2291002}, //
+
39916 {6.12258005, 12.2309704}, //
+
39917 {6.12013006, 12.23279}, //
+
39918 {6.11780977, 12.2345695}, //
+
39919 {6.11561012, 12.23631}, //
+
39920 {6.11354017, 12.2379999}, //
+
39921 {6.11158991, 12.2396603}, //
+
39922 {6.10976982, 12.2412596}, //
+
39923 {6.1080699, 12.2428303}, //
+
39924 {6.10650015, 12.2443504}, //
+
39925 {6.10580015, 12.2460299}, //
+
39926 {6.10517979, 12.2480402}, //
+
39927 {6.10464001, 12.2503901}, //
+
39928 {6.10417986, 12.2530699}, //
+
39929 {6.10380983, 12.2560902}, //
+
39930 {6.10351992, 12.2594404}, //
+
39931 {6.10332012, 12.2631197}, //
+
39932 {6.10318995, 12.2671499}, //
+
39933 {6.10314989, 12.2714996}, //
+
39934 {6.10318995, 12.2760601}, //
+
39935 {6.10332012, 12.2807102}, //
+
39936 {6.10351992, 12.2854404}, //
+
39937 {6.10380983, 12.2902498}, //
+
39938 {6.10417986, 12.2951498}, //
+
39939 {6.10464001, 12.3001204}, //
+
39940 {6.10517979, 12.3051796}, //
+
39941 {6.10580015, 12.3103199}, //
+
39942 {6.10650015, 12.3155499}, //
+
39943 {6.10726023, 12.3206997}, //
+
39944 {6.10800982, 12.3255997}, //
+
39945 {6.10876989, 12.3302498}, //
+
39946 {6.10951996, 12.33465}, //
+
39947 {6.11028004, 12.3387899}, //
+
39948 {6.1110301, 12.34268}, //
+
39949 {6.11179018, 12.3463202}, //
+
39950 {6.11253977, 12.3497105}, //
+
39951 {6.11329985, 12.35285}, //
+
39952 {6.11474991, 12.3551397}, //
+
39953 {6.11606979, 12.35746}, //
+
39954 {6.11725998, 12.3598299}, //
+
39955 {6.11833, 12.3622398}, //
+
39956 {6.11926985, 12.3646898}, //
+
39957 {6.12007999, 12.3671799}, //
+
39958 {6.12075996, 12.36971}, //
+
39959 {6.12131977, 12.3722897}, //
+
39960 {6.12174988, 12.3748999}, //
+
39961 {6.12219, 12.3776398}, //
+
39962 {6.12275982, 12.3805904}, //
+
39963 {6.1234498, 12.3837404}, //
+
39964 {6.12426996, 12.3871098}, //
+
39965 {6.12520981, 12.3906898}, //
+
39966 {6.12627983, 12.3944798}, //
+
39967 {6.12748003, 12.3984804}, //
+
39968 {6.12879992, 12.4026804}, //
+
39969 {6.13024998, 12.4070997}, //
+
39970 {6.13029003, 12.4117899}, //
+
39971 {6.13042021, 12.41681}, //
+
39972 {6.13063002, 12.4221697}, //
+
39973 {6.13091993, 12.4278698}, //
+
39974 {6.13129997, 12.4338903}, //
+
39975 {6.13176012, 12.4402599}, //
+
39976 {6.13230991, 12.44695}, //
+
39977 {6.13293982, 12.4539804}, //
+
39978 {6.13364983, 12.4613504}, //
+
39979 {6.13530016, 12.4726105}, //
+
39980 {6.13723993, 12.4837799}, //
+
39981 {6.1394701, 12.4948702}, //
+
39982 {6.1420002, 12.5058804}, //
+
39983 {6.14482021, 12.5167999}, //
+
39984 {6.14794016, 12.5276403}, //
+
39985 {6.15135002, 12.5383902}, //
+
39986 {6.1550498, 12.5490599}, //
+
39987 {6.15904999, 12.5596504}, //
+
39988 {6.16305017, 12.5697899}, //
+
39989 {6.16674995, 12.5790796}, //
+
39990 {6.17016983, 12.5875397}, //
+
39991 {6.17328978, 12.59517}, //
+
39992 {6.17610979, 12.6019497}, //
+
39993 {6.1786499, 12.6078901}, //
+
39994 {6.18089008, 12.6129999}, //
+
39995 {6.18283987, 12.6172705}, //
+
39996 {6.18450022, 12.6206999}, //
+
39997 {6.18521023, 12.6221905}, //
+
39998 {6.18584013, 12.6236401}, //
+
39999 {6.18638992, 12.6250401}, //
+
40000 {6.18685007, 12.6264}, //
+
40001 {6.18723011, 12.6277199}, //
+
40002 {6.18752003, 12.6289902}, //
+
40003 {6.18772984, 12.6302204}, //
+
40004 {6.18786001, 12.6314096}, //
+
40005 {6.18790007, 12.6325502}, //
+
40006 {6.18786001, 12.6336203}, //
+
40007 {6.18772984, 12.6345596}, //
+
40008 {6.18752003, 12.6353798}, //
+
40009 {6.18723011, 12.6360798}, //
+
40010 {6.18685007, 12.6366396}, //
+
40011 {6.18638992, 12.6370802}, //
+
40012 {6.18584013, 12.6373997}, //
+
40013 {6.18521023, 12.6375904}, //
+
40014 {6.18450022, 12.6376495}, //
+
40015 {6.18374014, 12.6384497}, //
+
40016 {6.18299007, 12.6393299}, //
+
40017 {6.18223, 12.6402903}, //
+
40018 {6.18147993, 12.6413403}, //
+
40019 {6.18071985, 12.6424799}, //
+
40020 {6.17996979, 12.6436901}, //
+
40021 {6.17921019, 12.6450005}, //
+
40022 {6.17846012, 12.6463804}, //
+
40023 {6.17770004, 12.64785}, //
+
40024 {6.17700005, 12.6487503}, //
+
40025 {6.17638016, 12.64995}, //
+
40026 {6.1758399, 12.6514301}, //
+
40027 {6.17538023, 12.6532097}, //
+
40028 {6.1750102, 12.6552896}, //
+
40029 {6.17471981, 12.65765}, //
+
40030 {6.17452002, 12.6603098}, //
+
40031 {6.17438984, 12.6632605}, //
+
40032 {6.17434978, 12.6665001}, //
+
40033 {6.17438984, 12.6698904}, //
+
40034 {6.17452002, 12.6732798}, //
+
40035 {6.17471981, 12.6766701}, //
+
40036 {6.1750102, 12.6800604}, //
+
40037 {6.17538023, 12.6834402}, //
+
40038 {6.1758399, 12.6868296}, //
+
40039 {6.17638016, 12.6902199}, //
+
40040 {6.17700005, 12.6936102}, //
+
40041 {6.17770004, 12.6969995}, //
+
40042 {6.17846012, 12.7003698}, //
+
40043 {6.17921019, 12.7037001}, //
+
40044 {6.17996979, 12.7069798}, //
+
40045 {6.18071985, 12.7102299}, //
+
40046 {6.18147993, 12.7134399}, //
+
40047 {6.18223, 12.7166004}, //
+
40048 {6.18299007, 12.7197199}, //
+
40049 {6.18374014, 12.7228098}, //
+
40050 {6.18450022, 12.7258501}, //
+
40051 {6.18537998, 12.7281303}, //
+
40052 {6.18651009, 12.7304497}, //
+
40053 {6.18789005, 12.73281}, //
+
40054 {6.1895299, 12.7352104}, //
+
40055 {6.19141006, 12.7376499}, //
+
40056 {6.1935401, 12.74014}, //
+
40057 {6.19593, 12.7426701}, //
+
40058 {6.19856024, 12.7452402}, //
+
40059 {6.20144987, 12.7478504}, //
+
40060 {6.20446014, 12.7504501}, //
+
40061 {6.20746994, 12.7529697}, //
+
40062 {6.21048021, 12.7553997}, //
+
40063 {6.21349001, 12.7577496}, //
+
40064 {6.21650982, 12.7600098}, //
+
40065 {6.21952009, 12.7621803}, //
+
40066 {6.22252989, 12.7642698}, //
+
40067 {6.22554016, 12.7662802}, //
+
40068 {6.22854996, 12.7681999}, //
+
40069 {6.23149014, 12.77003}, //
+
40070 {6.23426008, 12.7717304}, //
+
40071 {6.2368598, 12.7733002}, //
+
40072 {6.23929024, 12.7747498}, //
+
40073 {6.24154997, 12.7760696}, //
+
40074 {6.24363995, 12.7772703}, //
+
40075 {6.24556017, 12.7783403}, //
+
40076 {6.24732018, 12.7792797}, //
+
40077 {6.24889994, 12.7800999}, //
+
40078 {6.25909996, 12.7800999}, //
+
40079 {6.26278019, 12.7816}, //
+
40080 {6.2663002, 12.7831001}, //
+
40081 {6.26963997, 12.7846098}, //
+
40082 {6.27282, 12.7861099}, //
+
40083 {6.27582979, 12.7876196}, //
+
40084 {6.27867985, 12.7891197}, //
+
40085 {6.28135014, 12.7906303}, //
+
40086 {6.28386021, 12.79214}, //
+
40087 {6.28620005, 12.7936497}, //
+
40088 {6.27963018, 12.7876997}, //
+
40089 {6.27347994, 12.7819204}, //
+
40090 {6.26774979, 12.77631}, //
+
40091 {6.2624402, 12.7708597}, //
+
40092 {6.25754023, 12.7655802}, //
+
40093 {6.25306988, 12.7604704}, //
+
40094 {6.24901009, 12.7555304}, //
+
40095 {6.24536991, 12.7507601}, //
+
40096 {6.24214983, 12.74615}, //
+
40097 {6.23922014, 12.7416801}, //
+
40098 {6.23646021, 12.7372904}, //
+
40099 {6.23387003, 12.7329903}, //
+
40100 {6.23144007, 12.7287703}, //
+
40101 {6.22917986, 12.7246304}, //
+
40102 {6.22707987, 12.7205696}, //
+
40103 {6.22516012, 12.7166004}, //
+
40104 {6.2233901, 12.7127104}, //
+
40105 {6.22179985, 12.7089005}, //
+
40106 {6.22038984, 12.70438}, //
+
40107 {6.21920013, 12.6998596}, //
+
40108 {6.21821022, 12.6953297}, //
+
40109 {6.21743011, 12.6908102}, //
+
40110 {6.21686983, 12.6862898}, //
+
40111 {6.21650982, 12.6817703}, //
+
40112 {6.21636009, 12.6772404}, //
+
40113 {6.21643019, 12.67272}, //
+
40114 {6.21670008, 12.6681995}, //
+
40115 {6.21710014, 12.6636801}, //
+
40116 {6.21753979, 12.6591597}, //
+
40117 {6.21801996, 12.6546297}, //
+
40118 {6.21855021, 12.6501102}, //
+
40119 {6.21911001, 12.6455898}, //
+
40120 {6.21971989, 12.6410704}, //
+
40121 {6.22036982, 12.6365404}, //
+
40122 {6.22106981, 12.63202}, //
+
40123 {6.22179985, 12.6274996}, //
+
40124 {6.22179985, 12.6240997}, //
+
40125 {6.22232008, 12.62012}, //
+
40126 {6.22239017, 12.6157303}, //
+
40127 {6.22199011, 12.61092}, //
+
40128 {6.22112989, 12.60569}, //
+
40129 {6.21981001, 12.6000404}, //
+
40130 {6.21801996, 12.5939703}, //
+
40131 {6.21577978, 12.5874796}, //
+
40132 {6.21306992, 12.5805702}, //
+
40133 {6.2098999, 12.5732498}, //
+
40134 {6.20653009, 12.5658398}, //
+
40135 {6.20320988, 12.5586796}, //
+
40136 {6.19992018, 12.5517797}, //
+
40137 {6.19668007, 12.5451202}, //
+
40138 {6.19348001, 12.5387201}, //
+
40139 {6.19032001, 12.5325603}, //
+
40140 {6.18721008, 12.52666}, //
+
40141 {6.18413019, 12.5209999}, //
+
40142 {6.18109989, 12.5156002}, //
+
40143 {6.17967987, 12.5134296}, //
+
40144 {6.17843008, 12.5114202}, //
+
40145 {6.17735004, 12.5095797}, //
+
40146 {6.17643023, 12.5079098}, //
+
40147 {6.17568016, 12.5064096}, //
+
40148 {6.17509985, 12.5050697}, //
+
40149 {6.17468023, 12.50389}, //
+
40150 {6.17442989, 12.5028896}, //
+
40151 {6.17434978, 12.5020504}, //
+
40152 {6.17228985, 12.4959803}, //
+
40153 {6.17066002, 12.4898195}, //
+
40154 {6.16943979, 12.4835796}, //
+
40155 {6.16864014, 12.4772501}, //
+
40156 {6.1682601, 12.47085}, //
+
40157 {6.16831017, 12.4643602}, //
+
40158 {6.16876984, 12.4577904}, //
+
40159 {6.16965008, 12.4511404}, //
+
40160 {6.17094994, 12.4443998}, //
+
40161 {6.17165995, 12.4398403}, //
+
40162 {6.17228985, 12.4351902}, //
+
40163 {6.17284012, 12.43046}, //
+
40164 {6.17329979, 12.4256496}, //
+
40165 {6.17367983, 12.4207497}, //
+
40166 {6.17397022, 12.4157801}, //
+
40167 {6.17418003, 12.4107199}, //
+
40168 {6.17431021, 12.4055796}, //
+
40169 {6.17434978, 12.4003496}, //
+
40170 {6.17351007, 12.3959103}, //
+
40171 {6.17250013, 12.3916397}, //
+
40172 {6.17132998, 12.3875303}, //
+
40173 {6.16998005, 12.3835897}, //
+
40174 {6.16846991, 12.3798199}, //
+
40175 {6.16679001, 12.3762197}, //
+
40176 {6.16494989, 12.3727798}, //
+
40177 {6.16293001, 12.3695097}, //
+
40178 {6.16074991, 12.3663998}, //
+
40179 {6.16002989, 12.3648996}, //
+
40180 {6.1593399, 12.3634005}, //
+
40181 {6.15869999, 12.3618898}, //
+
40182 {6.15810013, 12.3603897}, //
+
40183 {6.15753984, 12.35888}, //
+
40184 {6.15702009, 12.3573799}, //
+
40185 {6.15653992, 12.3558702}, //
+
40186 {6.1560998, 12.3543596}, //
+
40187 {6.15570021, 12.35285}, //
+
40188 {6.15534019, 12.3513098}, //
+
40189 {6.15502977, 12.3496799}, //
+
40190 {6.15475988, 12.34797}, //
+
40191 {6.15452003, 12.3461704}, //
+
40192 {6.15433979, 12.3442898}, //
+
40193 {6.15419006, 12.3423204}, //
+
40194 {6.15407991, 12.3402596}, //
+
40195 {6.15401983, 12.3381205}, //
+
40196 {6.15399981, 12.3359003}, //
+
40197 {6.15468979, 12.3327398}, //
+
40198 {6.15526009, 12.3292904}, //
+
40199 {6.15570021, 12.3255396}, //
+
40200 {6.15601015, 12.3214998}, //
+
40201 {6.15619993, 12.3171701}, //
+
40202 {6.15627003, 12.3125401}, //
+
40203 {6.15619993, 12.30762}, //
+
40204 {6.15601015, 12.3024101}, //
+
40205 {6.15570021, 12.2968998}, //
+
40206 {6.15530014, 12.2912998}, //
+
40207 {6.15486002, 12.28578}, //
+
40208 {6.15437984, 12.2803402}, //
+
40209 {6.15385008, 12.2749796}, //
+
40210 {6.15328979, 12.2697096}, //
+
40211 {6.15267992, 12.2645197}, //
+
40212 {6.15202999, 12.2594204}, //
+
40213 {6.15132999, 12.2543898}, //
+
40214 {6.15059996, 12.2494497}, //
+
40215 {6.14983988, 12.2447796}, //
+
40216 {6.14908981, 12.2405701}, //
+
40217 {6.14833021, 12.2368202}, //
+
40218 {6.14758015, 12.23353}, //
+
40219 {6.14682007, 12.23071}, //
+
40220 {6.14607, 12.2283401}, //
+
40221 {6.14530993, 12.2264299}, //
+
40222 {6.14455986, 12.2249899}, //
+
40223 {6.14379978, 12.224}, //
+
40224 {6.14224005, 12.2234001}, //
+
40225 {6.14055014, 12.2230902}, //
+
40226 {6.13873005, 12.2230797}, //
+
40227 });
+
40228 polys.push_back({
+
40229 {4.35660982, 12.6058302}, //
+
40230 {4.34871006, 12.6069603}, //
+
40231 {4.34038019, 12.6086798}, //
+
40232 {4.33163977, 12.6109896}, //
+
40233 {4.3224802, 12.6138802}, //
+
40234 {4.31290007, 12.6173496}, //
+
40235 {4.2880702, 12.6294804}, //
+
40236 {4.26484013, 12.6402702}, //
+
40237 {4.24318981, 12.6497297}, //
+
40238 {4.22313976, 12.6578398}, //
+
40239 {4.20467997, 12.6646204}, //
+
40240 {4.18780994, 12.6700602}, //
+
40241 {4.17253017, 12.67416}, //
+
40242 {4.15885019, 12.6769304}, //
+
40243 {4.14674997, 12.6783504}, //
+
40244 {4.14377022, 12.67906}, //
+
40245 {4.14088011, 12.6796904}, //
+
40246 {4.13807011, 12.6802397}, //
+
40247 {4.13534021, 12.6807003}, //
+
40248 {4.13269997, 12.6810799}, //
+
40249 {4.13014984, 12.6813698}, //
+
40250 {4.12767982, 12.6815796}, //
+
40251 {4.12529993, 12.6817102}, //
+
40252 {4.12300014, 12.6817503}, //
+
40253 {4.11327982, 12.6832199}, //
+
40254 {4.10374022, 12.6845999}, //
+
40255 {4.09435987, 12.6858997}, //
+
40256 {4.08514977, 12.6871099}, //
+
40257 {4.07610989, 12.6882401}, //
+
40258 {4.06724024, 12.6892796}, //
+
40259 {4.05853987, 12.6902399}, //
+
40260 {4.0500102, 12.6911097}, //
+
40261 {4.04164982, 12.6919003}, //
+
40262 {4.0401001, 12.6918802}, //
+
40263 {4.03845978, 12.6918201}, //
+
40264 {4.03673983, 12.6917105}, //
+
40265 {4.03493023, 12.6915598}, //
+
40266 {4.03305006, 12.6913795}, //
+
40267 {4.03107023, 12.6911402}, //
+
40268 {4.02901983, 12.6908703}, //
+
40269 {4.02686977, 12.6905603}, //
+
40270 {4.0246501, 12.6901999}, //
+
40271 {4.02238989, 12.6898098}, //
+
40272 {4.02014017, 12.6893797}, //
+
40273 {4.01787996, 12.6889095}, //
+
40274 {4.01562977, 12.6883898}, //
+
40275 {4.01337004, 12.68783}, //
+
40276 {4.01111984, 12.6872196}, //
+
40277 {4.00886011, 12.6865702}, //
+
40278 {4.00660992, 12.6858797}, //
+
40279 {4.00435019, 12.6851501}, //
+
40280 {4.00215006, 12.6851301}, //
+
40281 {4.0000701, 12.68507}, //
+
40282 {3.99812007, 12.6849604}, //
+
40283 {3.99628997, 12.6848097}, //
+
40284 {3.99459004, 12.6846304}, //
+
40285 {3.99302006, 12.6843901}, //
+
40286 {3.99157, 12.6841202}, //
+
40287 {3.99025011, 12.6838102}, //
+
40288 {3.98904991, 12.6834497}, //
+
40289 {3.98797011, 12.6831102}, //
+
40290 {3.98696995, 12.6828604}, //
+
40291 {3.9860599, 12.6826897}, //
+
40292 {3.98521996, 12.6826096}, //
+
40293 {3.98446989, 12.6826096}, //
+
40294 {3.98380995, 12.6826897}, //
+
40295 {3.9832201, 12.6828604}, //
+
40296 {3.9827199, 12.6831102}, //
+
40297 {3.98230004, 12.6834497}, //
+
40298 {3.9819901, 12.6838102}, //
+
40299 {3.98180008, 12.6841202}, //
+
40300 {3.98172998, 12.6843901}, //
+
40301 {3.98180008, 12.6846304}, //
+
40302 {3.9819901, 12.6848097}, //
+
40303 {3.98230004, 12.6849604}, //
+
40304 {3.98273993, 12.68507}, //
+
40305 {3.98330998, 12.6851301}, //
+
40306 {3.98399997, 12.6851501}, //
+
40307 {3.98559999, 12.6859703}, //
+
40308 {3.98742008, 12.6869097}, //
+
40309 {3.98943996, 12.6879797}, //
+
40310 {3.99167991, 12.6891699}, //
+
40311 {3.99411988, 12.6904898}, //
+
40312 {3.99677992, 12.6919298}, //
+
40313 {3.99963999, 12.69349}, //
+
40314 {4.00271988, 12.6951799}, //
+
40315 {4.00600004, 12.6969995}, //
+
40316 {4.00941992, 12.6988497}, //
+
40317 {4.01287985, 12.7006102}, //
+
40318 {4.01637983, 12.70228}, //
+
40319 {4.01992989, 12.7038698}, //
+
40320 {4.02350998, 12.7053804}, //
+
40321 {4.02713013, 12.7068005}, //
+
40322 {4.03079987, 12.7081404}, //
+
40323 {4.03450012, 12.7093897}, //
+
40324 {4.03824997, 12.7105503}, //
+
40325 {4.04201984, 12.7116604}, //
+
40326 {4.04578018, 12.7127304}, //
+
40327 {4.04955006, 12.7137604}, //
+
40328 {4.05331993, 12.7147503}, //
+
40329 {4.05707979, 12.7156897}, //
+
40330 {4.06085014, 12.7165899}, //
+
40331 {4.06462002, 12.7174501}, //
+
40332 {4.06837988, 12.7182703}, //
+
40333 {4.07215023, 12.7190504}, //
+
40334 {4.09250021, 12.7190504}, //
+
40335 {4.09704018, 12.7197599}, //
+
40336 {4.10163021, 12.7203903}, //
+
40337 {4.10624981, 12.7209396}, //
+
40338 {4.11090994, 12.7214003}, //
+
40339 {4.11562014, 12.7217798}, //
+
40340 {4.12036991, 12.7220697}, //
+
40341 {4.1251502, 12.7222795}, //
+
40342 {4.12998009, 12.7224102}, //
+
40343 {4.13485003, 12.7224503}, //
+
40344 {4.13968992, 12.7224102}, //
+
40345 {4.14440012, 12.7222795}, //
+
40346 {4.14898014, 12.7220697}, //
+
40347 {4.15344, 12.7217798}, //
+
40348 {4.15778017, 12.7214003}, //
+
40349 {4.16198015, 12.7209396}, //
+
40350 {4.16605997, 12.7203903}, //
+
40351 {4.1700201, 12.7197599}, //
+
40352 {4.17385006, 12.7190504}, //
+
40353 {4.17685986, 12.7182903}, //
+
40354 {4.17987013, 12.7175398}, //
+
40355 {4.18288994, 12.7167797}, //
+
40356 {4.18590021, 12.7160301}, //
+
40357 {4.18892002, 12.71527}, //
+
40358 {4.19193983, 12.7145205}, //
+
40359 {4.19496012, 12.7137604}, //
+
40360 {4.19797993, 12.7130098}, //
+
40361 {4.20100021, 12.7122498}, //
+
40362 {4.20634985, 12.7108297}, //
+
40363 {4.21187019, 12.7095804}, //
+
40364 {4.21755981, 12.7084999}, //
+
40365 {4.22342014, 12.7075796}, //
+
40366 {4.22945023, 12.70683}, //
+
40367 {4.23564005, 12.7062502}, //
+
40368 {4.24201012, 12.7058296}, //
+
40369 {4.24854994, 12.7055798}, //
+
40370 {4.25524998, 12.7054996}, //
+
40371 {4.2592001, 12.7062998}, //
+
40372 {4.26353979, 12.70718}, //
+
40373 {4.26823997, 12.7081404}, //
+
40374 {4.27333021, 12.7091799}, //
+
40375 {4.27879, 12.71031}, //
+
40376 {4.28462982, 12.7115202}, //
+
40377 {4.29084015, 12.7128201}, //
+
40378 {4.29743004, 12.7141895}, //
+
40379 {4.30439997, 12.7156496}, //
+
40380 {4.31149006, 12.7171602}, //
+
40381 {4.31845999, 12.7186699}, //
+
40382 {4.32530022, 12.7201796}, //
+
40383 {4.33200979, 12.7216797}, //
+
40384 {4.33860016, 12.7231903}, //
+
40385 {4.34506989, 12.7246904}, //
+
40386 {4.3513999, 12.7262001}, //
+
40387 {4.35761023, 12.7277002}, //
+
40388 {4.36369991, 12.7292004}, //
+
40389 {4.36960983, 12.73067}, //
+
40390 {4.37525988, 12.7320499}, //
+
40391 {4.38067007, 12.7333603}, //
+
40392 {4.38581991, 12.7345695}, //
+
40393 {4.39071989, 12.7357101}, //
+
40394 {4.39537001, 12.7367601}, //
+
40395 {4.39975977, 12.7377195}, //
+
40396 {4.40391016, 12.7385998}, //
+
40397 {4.4078002, 12.7393999}, //
+
40398 {4.40942001, 12.7402}, //
+
40399 {4.4112401, 12.7410803}, //
+
40400 {4.41327, 12.7420397}, //
+
40401 {4.41551018, 12.7430801}, //
+
40402 {4.41796017, 12.7442102}, //
+
40403 {4.42061996, 12.7454205}, //
+
40404 {4.42349005, 12.7467203}, //
+
40405 {4.42656994, 12.7480898}, //
+
40406 {4.4298501, 12.7495499}, //
+
40407 {4.43323994, 12.7510204}, //
+
40408 {4.43662977, 12.7524004}, //
+
40409 {4.44002008, 12.7537098}, //
+
40410 {4.44340992, 12.75492}, //
+
40411 {4.44679022, 12.7560596}, //
+
40412 {4.45018005, 12.7571096}, //
+
40413 {4.45356989, 12.75807}, //
+
40414 {4.4569602, 12.7589502}, //
+
40415 {4.46035004, 12.7597504}, //
+
40416 {4.46370983, 12.7605}, //
+
40417 {4.46697998, 12.76126}, //
+
40418 {4.47017002, 12.7620096}, //
+
40419 {4.47326994, 12.7627602}, //
+
40420 {4.47629023, 12.7635098}, //
+
40421 {4.47921991, 12.7642603}, //
+
40422 {4.48205996, 12.7650099}, //
+
40423 {4.48481989, 12.7657499}, //
+
40424 {4.48750019, 12.7665005}, //
+
40425 {4.48999023, 12.76721}, //
+
40426 {4.49217987, 12.7678404}, //
+
40427 {4.49408007, 12.7683897}, //
+
40428 {4.49568987, 12.7688503}, //
+
40429 {4.49701023, 12.7692299}, //
+
40430 {4.49803019, 12.7695198}, //
+
40431 {4.49876022, 12.7697296}, //
+
40432 {4.49919987, 12.7698603}, //
+
40433 {4.49935007, 12.7699003}, //
+
40434 {4.49259996, 12.7393999}, //
+
40435 {4.49193001, 12.7390604}, //
+
40436 {4.49108982, 12.7386398}, //
+
40437 {4.48991013, 12.73806}, //
+
40438 {4.48839998, 12.7372999}, //
+
40439 {4.48655987, 12.7363796}, //
+
40440 {4.48437023, 12.7352896}, //
+
40441 {4.48185015, 12.7340298}, //
+
40442 {4.47900009, 12.7326002}, //
+
40443 {4.47594976, 12.7311001}, //
+
40444 {4.47280979, 12.7296}, //
+
40445 {4.46959019, 12.7280903}, //
+
40446 {4.46627998, 12.7265902}, //
+
40447 {4.46290016, 12.7250795}, //
+
40448 {4.4594202, 12.7235804}, //
+
40449 {4.45587015, 12.7220697}, //
+
40450 {4.45221996, 12.7205601}, //
+
40451 {4.44850016, 12.7190504}, //
+
40452 {4.44470978, 12.7175398}, //
+
40453 {4.44087982, 12.7160301}, //
+
40454 {4.43700981, 12.7145205}, //
+
40455 {4.43310022, 12.7130098}, //
+
40456 {4.42914009, 12.7114897}, //
+
40457 {4.4251399, 12.70998}, //
+
40458 {4.42110014, 12.7084703}, //
+
40459 {4.41701984, 12.7069597}, //
+
40460 {4.41289997, 12.7054501}, //
+
40461 {4.40889978, 12.70403}, //
+
40462 {4.4052, 12.7027798}, //
+
40463 {4.40178013, 12.7017002}, //
+
40464 {4.39866018, 12.7007799}, //
+
40465 {4.39584017, 12.7000303}, //
+
40466 {4.39330006, 12.6994495}, //
+
40467 {4.39105988, 12.6990299}, //
+
40468 {4.38911009, 12.6987801}, //
+
40469 {4.38745022, 12.6987}, //
+
40470 {4.38581991, 12.6986799}, //
+
40471 {4.38395023, 12.6986198}, //
+
40472 {4.3818202, 12.6985102}, //
+
40473 {4.37943983, 12.6983604}, //
+
40474 {4.37680006, 12.6981802}, //
+
40475 {4.37391996, 12.6979399}, //
+
40476 {4.37077999, 12.69767}, //
+
40477 {4.36739016, 12.69736}, //
+
40478 {4.36374998, 12.6969995}, //
+
40479 {4.35994005, 12.6966}, //
+
40480 {4.35605001, 12.6961603}, //
+
40481 {4.35206985, 12.6956797}, //
+
40482 {4.34801006, 12.6951504}, //
+
40483 {4.34387016, 12.6945896}, //
+
40484 {4.33964014, 12.6939802}, //
+
40485 {4.33533001, 12.6933298}, //
+
40486 {4.33093023, 12.6926298}, //
+
40487 {4.32644987, 12.6919003}, //
+
40488 {4.32203007, 12.6911297}, //
+
40489 {4.31782007, 12.69032}, //
+
40490 {4.31381989, 12.6894703}, //
+
40491 {4.31002998, 12.6885796}, //
+
40492 {4.30644989, 12.6876402}, //
+
40493 {4.30307007, 12.6866598}, //
+
40494 {4.29991007, 12.6856298}, //
+
40495 {4.29694986, 12.6845598}, //
+
40496 {4.29419994, 12.6834497}, //
+
40497 {4.29166985, 12.6823797}, //
+
40498 {4.28935003, 12.6814404}, //
+
40499 {4.28724003, 12.6806202}, //
+
40500 {4.28533983, 12.6799202}, //
+
40501 {4.28363991, 12.6793604}, //
+
40502 {4.28215981, 12.6789198}, //
+
40503 {4.28087997, 12.6786003}, //
+
40504 {4.27980995, 12.6784096}, //
+
40505 {4.27895021, 12.6783504}, //
+
40506 {4.27896976, 12.6775904}, //
+
40507 {4.27902985, 12.6768398}, //
+
40508 {4.27914, 12.6760798}, //
+
40509 {4.2792902, 12.6753302}, //
+
40510 {4.27946997, 12.6745701}, //
+
40511 {4.27970982, 12.6738195}, //
+
40512 {4.27998018, 12.6730604}, //
+
40513 {4.28029013, 12.6723099}, //
+
40514 {4.28065014, 12.6715498}, //
+
40515 {4.28105021, 12.6707802}, //
+
40516 {4.28148985, 12.6699696}, //
+
40517 {4.28197002, 12.6691198}, //
+
40518 {4.28249979, 12.6682301}, //
+
40519 {4.28306007, 12.6672897}, //
+
40520 {4.28366995, 12.6663103}, //
+
40521 {4.28431988, 12.6652803}, //
+
40522 {4.28501987, 12.6642103}, //
+
40523 {4.28574991, 12.6631002}, //
+
40524 {4.2865901, 12.6620102}, //
+
40525 {4.28759003, 12.6610003}, //
+
40526 {4.2887702, 12.66008}, //
+
40527 {4.29011011, 12.6592398}, //
+
40528 {4.29160976, 12.6584797}, //
+
40529 {4.29328012, 12.6578102}, //
+
40530 {4.29511976, 12.6572199}, //
+
40531 {4.29713011, 12.6567202}, //
+
40532 {4.29930019, 12.6562996}, //
+
40533 {4.30173016, 12.6559496}, //
+
40534 {4.3045001, 12.6556501}, //
+
40535 {4.30760002, 12.6553802}, //
+
40536 {4.31102991, 12.65516}, //
+
40537 {4.31479979, 12.6549797}, //
+
40538 {4.31890011, 12.65483}, //
+
40539 {4.32332993, 12.6547298}, //
+
40540 {4.3281002, 12.6546698}, //
+
40541 {4.33319998, 12.6546497}, //
+
40542 {4.33934021, 12.6554604}, //
+
40543 {4.34568024, 12.6563902}, //
+
40544 {4.35224009, 12.6574497}, //
+
40545 {4.35900021, 12.6586399}, //
+
40546 {4.36597013, 12.6599503}, //
+
40547 {4.37315989, 12.6613798}, //
+
40548 {4.38054991, 12.6629496}, //
+
40549 {4.3881402, 12.6646404}, //
+
40550 {4.39594984, 12.6664495}, //
+
40551 {4.40370989, 12.6683397}, //
+
40552 {4.41118002, 12.6702299}, //
+
40553 {4.41836023, 12.6721096}, //
+
40554 {4.42524004, 12.6739998}, //
+
40555 {4.43182993, 12.6758804}, //
+
40556 {4.4381299, 12.6777601}, //
+
40557 {4.44412994, 12.6796398}, //
+
40558 {4.44984007, 12.6815205}, //
+
40559 {4.45524979, 12.6834002}, //
+
40560 {4.46022987, 12.6851797}, //
+
40561 {4.46463013, 12.6867599}, //
+
40562 {4.46844006, 12.6881199}, //
+
40563 {4.47167015, 12.6892796}, //
+
40564 {4.47430992, 12.6902199}, //
+
40565 {4.47635984, 12.6909599}, //
+
40566 {4.47782993, 12.6914797}, //
+
40567 {4.47871017, 12.6918001}, //
+
40568 {4.47900009, 12.6919003}, //
+
40569 {4.47224998, 12.6512499}, //
+
40570 {4.47055006, 12.6512499}, //
+
40571 {4.47019005, 12.6512299}, //
+
40572 {4.4698801, 12.6511698}, //
+
40573 {4.46961021, 12.6510601}, //
+
40574 {4.46936989, 12.6509104}, //
+
40575 {4.46919012, 12.6507301}, //
+
40576 {4.46903992, 12.6504898}, //
+
40577 {4.46892977, 12.6502199}, //
+
40578 {4.46887016, 12.64991}, //
+
40579 {4.46883011, 12.6491899}, //
+
40580 {4.46877003, 12.64888}, //
+
40581 {4.46865988, 12.6486101}, //
+
40582 {4.46851015, 12.6483698}, //
+
40583 {4.46832991, 12.6481895}, //
+
40584 {4.46809006, 12.6480398}, //
+
40585 {4.46782017, 12.6479301}, //
+
40586 {4.46751022, 12.6478701}, //
+
40587 {4.46715021, 12.64785}, //
+
40588 {4.46374989, 12.64785}, //
+
40589 {4.46336985, 12.64783}, //
+
40590 {4.46298981, 12.6477699}, //
+
40591 {4.46261978, 12.6476603}, //
+
40592 {4.46224022, 12.6475096}, //
+
40593 {4.46186018, 12.6473303}, //
+
40594 {4.46148014, 12.64709}, //
+
40595 {4.46111012, 12.6468201}, //
+
40596 {4.46073008, 12.6465101}, //
+
40597 {4.46035004, 12.6461496}, //
+
40598 {4.45994997, 12.6457701}, //
+
40599 {4.45950985, 12.6453896}, //
+
40600 {4.45903015, 12.6450195}, //
+
40601 {4.45849991, 12.64464}, //
+
40602 {4.4579401, 12.6442604}, //
+
40603 {4.45733023, 12.6438799}, //
+
40604 {4.45667982, 12.6435099}, //
+
40605 {4.45597982, 12.6431303}, //
+
40606 {4.45524979, 12.6427498}, //
+
40607 {4.4545002, 12.6423903}, //
+
40608 {4.45376015, 12.6420803}, //
+
40609 {4.45301008, 12.6418104}, //
+
40610 {4.45226002, 12.6415701}, //
+
40611 {4.45150995, 12.6413898}, //
+
40612 {4.45075989, 12.6412401}, //
+
40613 {4.45000982, 12.6411304}, //
+
40614 {4.44925022, 12.6410704}, //
+
40615 {4.44850016, 12.6410503}, //
+
40616 {4.44623995, 12.6402102}, //
+
40617 {4.44399023, 12.6392097}, //
+
40618 {4.44173002, 12.6380301}, //
+
40619 {4.43946981, 12.6366901}, //
+
40620 {4.43721008, 12.63519}, //
+
40621 {4.43493986, 12.6335201}, //
+
40622 {4.43268013, 12.6316795}, //
+
40623 {4.43041992, 12.6296701}, //
+
40624 {4.42815018, 12.6274996}, //
+
40625 {4.42426014, 12.6245699}, //
+
40626 {4.42011023, 12.62181}, //
+
40627 {4.41571999, 12.6192198}, //
+
40628 {4.41106987, 12.6167898}, //
+
40629 {4.40616989, 12.6145296}, //
+
40630 {4.40102005, 12.6124296}, //
+
40631 {4.39560986, 12.6105099}, //
+
40632 {4.38995981, 12.6087399}, //
+
40633 {4.38404989, 12.6071501}, //
+
40634 {4.37782001, 12.6059399}, //
+
40635 {4.37117004, 12.60532}, //
+
40636 {4.36409998, 12.6052799}, //
+
40637 });
+
40638 polys.push_back({
+
40639 {1.35854006, 12.5514698}, //
+
40640 {1.35828996, 12.5521698}, //
+
40641 {1.35794997, 12.5529003}, //
+
40642 {1.35757005, 12.5536604}, //
+
40643 {1.35719001, 12.55441}, //
+
40644 {1.35606003, 12.5566797}, //
+
40645 {1.35567999, 12.5574303}, //
+
40646 {1.35530996, 12.5581903}, //
+
40647 {1.35493004, 12.5589399}, //
+
40648 {1.35455, 12.5597}, //
+
40649 {1.35415006, 12.5605001}, //
+
40650 {1.35323, 12.5623398}, //
+
40651 {1.3527, 12.5633802}, //
+
40652 {1.35213995, 12.5645103}, //
+
40653 {1.35152996, 12.5657196}, //
+
40654 {1.35088003, 12.5670204}, //
+
40655 {1.35018003, 12.5683899}, //
+
40656 {1.34944999, 12.56985}, //
+
40657 {1.34786999, 12.5720501}, //
+
40658 {1.34610999, 12.5741301}, //
+
40659 {1.34419, 12.5760803}, //
+
40660 {1.34210002, 12.5778999}, //
+
40661 {1.33984005, 12.5795898}, //
+
40662 {1.33740997, 12.5811596}, //
+
40663 {1.33481002, 12.5825996}, //
+
40664 {1.33203995, 12.58391}, //
+
40665 {1.32910001, 12.5851002}, //
+
40666 {1.32584, 12.5862999}, //
+
40667 {1.32207, 12.5876198}, //
+
40668 {1.31781006, 12.5890703}, //
+
40669 {1.31304002, 12.5906401}, //
+
40670 {1.30776, 12.5923405}, //
+
40671 {1.30199003, 12.5941696}, //
+
40672 {1.29570997, 12.5961199}, //
+
40673 {1.28893006, 12.5981998}, //
+
40674 {1.28164995, 12.6004}, //
+
40675 {1.28127003, 12.60077}, //
+
40676 {1.28097999, 12.6010599}, //
+
40677 {1.27895999, 12.6030502}, //
+
40678 {1.27824998, 12.6037502}, //
+
40679 {1.27079999, 12.6059303}, //
+
40680 {1.26352, 12.6079502}, //
+
40681 {1.25641, 12.6097898}, //
+
40682 {1.24945998, 12.6114702}, //
+
40683 {1.24267995, 12.6129799}, //
+
40684 {1.23607004, 12.6143303}, //
+
40685 {1.22962999, 12.6155005}, //
+
40686 {1.22335994, 12.6165104}, //
+
40687 {1.21724999, 12.6173496}, //
+
40688 {1.21196997, 12.6181402}, //
+
40689 {1.20668995, 12.61901}, //
+
40690 {1.20141995, 12.6199703}, //
+
40691 {1.19614005, 12.6210098}, //
+
40692 {1.19086003, 12.6221399}, //
+
40693 {1.18558002, 12.6233501}, //
+
40694 {1.18031001, 12.62465}, //
+
40695 {1.17502999, 12.62603}, //
+
40696 {1.16974998, 12.6274996}, //
+
40697 {1.16410995, 12.6290903}, //
+
40698 {1.15770996, 12.6308603}, //
+
40699 {1.15056002, 12.6327801}, //
+
40700 {1.14265001, 12.6348801}, //
+
40701 {1.13399005, 12.6371403}, //
+
40702 {1.12457001, 12.6395702}, //
+
40703 {1.11440003, 12.6421604}, //
+
40704 {1.10347998, 12.6449203}, //
+
40705 {1.09179997, 12.64785}, //
+
40706 {1.08499002, 12.6493998}, //
+
40707 {1.07814002, 12.6510401}, //
+
40708 {1.07124996, 12.6527596}, //
+
40709 {1.06431997, 12.6545601}, //
+
40710 {1.05735004, 12.6564398}, //
+
40711 {1.05033004, 12.6584101}, //
+
40712 {1.04328001, 12.66045}, //
+
40713 {1.03619003, 12.66259}, //
+
40714 {1.02904999, 12.6647997}, //
+
40715 {1.02212, 12.6669703}, //
+
40716 {1.01566005, 12.6689796}, //
+
40717 {1.00966001, 12.6708202}, //
+
40718 {1.00410998, 12.6724901}, //
+
40719 {0.999028027, 12.6739902}, //
+
40720 {0.994405985, 12.6753302}, //
+
40721 {0.990243018, 12.6765099}, //
+
40722 {0.986540973, 12.6775103}, //
+
40723 {0.983299971, 12.6783504}, //
+
40724 {0.974340022, 12.6811895}, //
+
40725 {0.965547025, 12.6836996}, //
+
40726 {0.956921995, 12.6858797}, //
+
40727 {0.94846499, 12.6877203}, //
+
40728 {0.940177023, 12.6892204}, //
+
40729 {0.93205601, 12.6903896}, //
+
40730 {0.924102008, 12.6912298}, //
+
40731 {0.916316986, 12.6917295}, //
+
40732 {0.908699989, 12.6919003}, //
+
40733 {0.905687988, 12.6919403}, //
+
40734 {0.902674973, 12.69207}, //
+
40735 {0.899661005, 12.6922798}, //
+
40736 {0.896646023, 12.6925697}, //
+
40737 {0.893629014, 12.6929502}, //
+
40738 {0.890610993, 12.6934099}, //
+
40739 {0.887592018, 12.6939602}, //
+
40740 {0.884572029, 12.6945896}, //
+
40741 {0.881550014, 12.6953001}, //
+
40742 {0.877783, 12.6954298}, //
+
40743 {0.874017, 12.6957998}, //
+
40744 {0.870249987, 12.6964302}, //
+
40745 {0.866482973, 12.6973104}, //
+
40746 {0.862716973, 12.6984501}, //
+
40747 {0.858950019, 12.6998301}, //
+
40748 {0.855183005, 12.7014704}, //
+
40749 {0.851417005, 12.7033596}, //
+
40750 {0.847649992, 12.7054996}, //
+
40751 {0.845372975, 12.7069798}, //
+
40752 {0.84305203, 12.7084198}, //
+
40753 {0.840689003, 12.7098198}, //
+
40754 {0.838281989, 12.7111702}, //
+
40755 {0.835832, 12.7124901}, //
+
40756 {0.833338976, 12.7137699}, //
+
40757 {0.830802023, 12.7150002}, //
+
40758 {0.82822299, 12.7161999}, //
+
40759 {0.825600028, 12.71735}, //
+
40760 {0.822903991, 12.7183399}, //
+
40761 {0.820080996, 12.7190304}, //
+
40762 {0.817133009, 12.71943}, //
+
40763 {0.814059019, 12.7195301}, //
+
40764 {0.810859025, 12.7193403}, //
+
40765 {0.807533026, 12.7188597}, //
+
40766 {0.804081023, 12.7180796}, //
+
40767 {0.800504029, 12.7170095}, //
+
40768 {0.796800017, 12.7156496}, //
+
40769 {0.795040011, 12.7314396}, //
+
40770 {0.793861985, 12.7473497}, //
+
40771 {0.79339999, 12.7526302}, //
+
40772 {0.79339999, 12.7665005}, //
+
40773 {0.797083974, 12.7651596}, //
+
40774 {0.812049985, 12.7596998}, //
+
40775 {0.816340983, 12.7581596}, //
+
40776 {0.820923984, 12.7565298}, //
+
40777 {0.825800002, 12.7548199}, //
+
40778 {0.830968976, 12.7530298}, //
+
40779 {0.836430013, 12.7511501}, //
+
40780 {0.842182994, 12.7491903}, //
+
40781 {0.848230004, 12.7471399}, //
+
40782 {0.854569018, 12.7450104}, //
+
40783 {0.861199975, 12.7427998}, //
+
40784 {0.869509995, 12.7413101}, //
+
40785 {0.877861977, 12.7398596}, //
+
40786 {0.88625598, 12.7384596}, //
+
40787 {0.89469099, 12.7370901}, //
+
40788 {0.903168976, 12.7357702}, //
+
40789 {0.911688983, 12.7344904}, //
+
40790 {0.920251012, 12.7332497}, //
+
40791 {0.928853989, 12.7320499}, //
+
40792 {0.9375, 12.7308998}, //
+
40793 {0.946062028, 12.7298002}, //
+
40794 {0.95441401, 12.7287397}, //
+
40795 {0.962556005, 12.7277203}, //
+
40796 {0.970488012, 12.7267399}, //
+
40797 {0.978209972, 12.7257996}, //
+
40798 {0.985722005, 12.7249002}, //
+
40799 {0.993025005, 12.72404}, //
+
40800 {1.00012004, 12.7232304}, //
+
40801 {1.00699997, 12.7224503}, //
+
40802 {1.01092994, 12.7223701}, //
+
40803 {1.01520002, 12.7221098}, //
+
40804 {1.01980996, 12.7216902}, //
+
40805 {1.02473998, 12.7211103}, //
+
40806 {1.03002, 12.7203503}, //
+
40807 {1.03561997, 12.71943}, //
+
40808 {1.04156005, 12.7183399}, //
+
40809 {1.04784, 12.7170801}, //
+
40810 {1.05445004, 12.7156496}, //
+
40811 {1.06128001, 12.7141504}, //
+
40812 {1.06818998, 12.7126503}, //
+
40813 {1.07518995, 12.7111397}, //
+
40814 {1.08227003, 12.7096395}, //
+
40815 {1.08942997, 12.7081299}, //
+
40816 {1.09667003, 12.7066298}, //
+
40817 {1.10399997, 12.7051201}, //
+
40818 {1.11141002, 12.7036104}, //
+
40819 {1.11889994, 12.7020998}, //
+
40820 {1.12925005, 12.6998796}, //
+
40821 {1.13917005, 12.6977396}, //
+
40822 {1.14867997, 12.6956797}, //
+
40823 {1.15776002, 12.6937103}, //
+
40824 {1.16643, 12.6918297}, //
+
40825 {1.17467999, 12.6900301}, //
+
40826 {1.1825, 12.6883202}, //
+
40827 {1.18991005, 12.6866903}, //
+
40828 {1.19690001, 12.6851501}, //
+
40829 {1.20523, 12.6834898}, //
+
40830 {1.21363997, 12.6815395}, //
+
40831 {1.22213995, 12.6793003}, //
+
40832 {1.23072004, 12.6767597}, //
+
40833 {1.23938, 12.6739397}, //
+
40834 {1.24811995, 12.6708202}, //
+
40835 {1.25695002, 12.6674004}, //
+
40836 {1.26585996, 12.6637001}, //
+
40837 {1.27485001, 12.6597004}, //
+
40838 {1.28359997, 12.6556597}, //
+
40839 {1.29176998, 12.6518297}, //
+
40840 {1.29934001, 12.6482096}, //
+
40841 {1.30633998, 12.6448002}, //
+
40842 {1.31273997, 12.6415997}, //
+
40843 {1.31856, 12.6386099}, //
+
40844 {1.32378995, 12.6358299}, //
+
40845 {1.32843995, 12.6332598}, //
+
40846 {1.33249998, 12.6309004}, //
+
40847 {1.33475006, 12.6293297}, //
+
40848 {1.33694994, 12.6276302}, //
+
40849 {1.33911002, 12.6258097}, //
+
40850 {1.34122002, 12.6238604}, //
+
40851 {1.34328997, 12.6217899}, //
+
40852 {1.34531999, 12.6195898}, //
+
40853 {1.34730995, 12.6172705}, //
+
40854 {1.34924996, 12.6148195}, //
+
40855 {1.35115004, 12.6122503}, //
+
40856 {1.35301995, 12.6096601}, //
+
40857 {1.35484004, 12.6071501}, //
+
40858 {1.35661995, 12.6047201}, //
+
40859 {1.35836005, 12.6023798}, //
+
40860 {1.36004996, 12.6001196}, //
+
40861 {1.36170995, 12.5979404}, //
+
40862 {1.36330998, 12.5958405}, //
+
40863 {1.36487997, 12.5938301}, //
+
40864 {1.3664, 12.5918999}, //
+
40865 {1.36783004, 12.5901203}, //
+
40866 {1.36908996, 12.5885401}, //
+
40867 {1.37109995, 12.5860205}, //
+
40868 {1.37320006, 12.5833998}, //
+
40869 {1.35859001, 12.55128}, //
+
40870 });
+
40871 polys.push_back({
+
40872 {5.78779984, 12.7122498}, //
+
40873 {5.78702021, 12.7122698}, //
+
40874 {5.78620005, 12.7123299}, //
+
40875 {5.78533983, 12.7124395}, //
+
40876 {5.78444004, 12.7125902}, //
+
40877 {5.78350019, 12.7127705}, //
+
40878 {5.7825098, 12.7130098}, //
+
40879 {5.78147984, 12.7132797}, //
+
40880 {5.78040981, 12.7135897}, //
+
40881 {5.77930021, 12.7139502}, //
+
40882 {5.77822018, 12.7143497}, //
+
40883 {5.77721977, 12.7147903}, //
+
40884 {5.77630997, 12.71527}, //
+
40885 {5.77546978, 12.7158003}, //
+
40886 {5.77472019, 12.7163601}, //
+
40887 {5.77405977, 12.7169704}, //
+
40888 {5.77346992, 12.7176199}, //
+
40889 {5.7729702, 12.7183199}, //
+
40890 {5.77255011, 12.7190504}, //
+
40891 {5.77217007, 12.7198}, //
+
40892 {5.77179003, 12.7205601}, //
+
40893 {5.77142, 12.7213097}, //
+
40894 {5.77065992, 12.7228098}, //
+
40895 {5.77027988, 12.7235603}, //
+
40896 {5.76990986, 12.7243099}, //
+
40897 {5.76952982, 12.72505}, //
+
40898 {5.76914978, 12.7257996}, //
+
40899 {5.76883984, 12.7265596}, //
+
40900 {5.76865005, 12.7273102}, //
+
40901 {5.76857996, 12.7280703}, //
+
40902 {5.76865005, 12.7288198}, //
+
40903 {5.76883984, 12.7295799}, //
+
40904 {5.76914978, 12.7303305}, //
+
40905 {5.7695899, 12.7310896}, //
+
40906 {5.7701602, 12.7318401}, //
+
40907 {5.77085018, 12.7326002}, //
+
40908 {5.7723999, 12.7341099}, //
+
40909 {5.77404022, 12.7356195}, //
+
40910 {5.77576017, 12.7371302}, //
+
40911 {5.77756023, 12.7386303}, //
+
40912 {5.77943993, 12.74014}, //
+
40913 {5.78141022, 12.7416401}, //
+
40914 {5.78345013, 12.7431498}, //
+
40915 {5.78559017, 12.7446499}, //
+
40916 {5.78779984, 12.74615}, //
+
40917 {5.79008007, 12.7476196}, //
+
40918 {5.79239988, 12.7489996}, //
+
40919 {5.79476023, 12.7503099}, //
+
40920 {5.79716015, 12.7515202}, //
+
40921 {5.79960012, 12.7526598}, //
+
40922 {5.80209017, 12.7537098}, //
+
40923 {5.80461979, 12.7546701}, //
+
40924 {5.80718994, 12.7555504}, //
+
40925 {5.80980015, 12.7563496}, //
+
40926 {5.81237984, 12.7570801}, //
+
40927 {5.81482983, 12.7577801}, //
+
40928 {5.81716013, 12.7584295}, //
+
40929 {5.81935978, 12.7590399}, //
+
40930 {5.82143021, 12.7595997}, //
+
40931 {5.82337999, 12.7601299}, //
+
40932 {5.82520008, 12.7606096}, //
+
40933 {5.82688999, 12.7610502}, //
+
40934 {5.8284502, 12.7614498}, //
+
40935 {5.82988024, 12.7618103}, //
+
40936 {5.83114004, 12.7621202}, //
+
40937 {5.83223009, 12.7623901}, //
+
40938 {5.83390999, 12.7628098}, //
+
40939 {5.83448982, 12.7629604}, //
+
40940 {5.83490992, 12.7630701}, //
+
40941 {5.83516979, 12.7631302}, //
+
40942 {5.8352499, 12.7631502}, //
+
40943 {5.83589983, 12.7630901}, //
+
40944 {5.83633995, 12.7629004}, //
+
40945 {5.83656979, 12.7625799}, //
+
40946 {5.83658981, 12.7621403}, //
+
40947 {5.83640003, 12.7615805}, //
+
40948 {5.83600998, 12.7608805}, //
+
40949 {5.8354001, 12.7600603}, //
+
40950 {5.83457994, 12.75912}, //
+
40951 {5.83354998, 12.75805}, //
+
40952 {5.83238983, 12.7569199}, //
+
40953 {5.83114004, 12.7557802}, //
+
40954 {5.82980013, 12.7546501}, //
+
40955 {5.82838011, 12.75352}, //
+
40956 {5.82686996, 12.7523804}, //
+
40957 {5.82528019, 12.7512503}, //
+
40958 {5.82360983, 12.7501202}, //
+
40959 {5.82184982, 12.7489796}, //
+
40960 {5.82000017, 12.7478504}, //
+
40961 {5.81818008, 12.7467499}, //
+
40962 {5.81649017, 12.7456903}, //
+
40963 {5.81492996, 12.7446699}, //
+
40964 {5.81348991, 12.7436895}, //
+
40965 {5.81217003, 12.7427502}, //
+
40966 {5.81097984, 12.7418499}, //
+
40967 {5.80990982, 12.7409897}, //
+
40968 {5.80896997, 12.74018}, //
+
40969 {5.80814981, 12.7393999}, //
+
40970 {5.80670023, 12.7393398}, //
+
40971 {5.80537987, 12.73915}, //
+
40972 {5.80418015, 12.7388296}, //
+
40973 {5.80311012, 12.73839}, //
+
40974 {5.8021698, 12.7378302}, //
+
40975 {5.80135012, 12.7371302}, //
+
40976 {5.80066013, 12.73631}, //
+
40977 {5.80008984, 12.7353697}, //
+
40978 {5.79965019, 12.7342997}, //
+
40979 {5.79925013, 12.7331696}, //
+
40980 {5.79881001, 12.7320299}, //
+
40981 {5.79832983, 12.7308998}, //
+
40982 {5.79780006, 12.7297697}, //
+
40983 {5.79723978, 12.7286301}, //
+
40984 {5.79662991, 12.7275}, //
+
40985 {5.79597998, 12.7263699}, //
+
40986 {5.79527998, 12.7252302}, //
+
40987 {5.79454994, 12.7241001}, //
+
40988 {5.79384995, 12.7229996}, //
+
40989 {5.79323006, 12.72194}, //
+
40990 {5.7926898, 12.7209196}, //
+
40991 {5.79223013, 12.7199402}, //
+
40992 {5.7918601, 12.7189999}, //
+
40993 {5.79157019, 12.7180996}, //
+
40994 {5.79136992, 12.7172403}, //
+
40995 {5.79124022, 12.7164297}, //
+
40996 {5.79120016, 12.7156496}, //
+
40997 {5.79120016, 12.7122498}, //
+
40998 });
+
40999 polys.push_back({
+
41000 {0.212886006, 12.6080103}, //
+
41001 {0.212277994, 12.6080904}, //
+
41002 {0.211627007, 12.6082602}, //
+
41003 {0.210934997, 12.60851}, //
+
41004 {0.210199997, 12.6088495}, //
+
41005 {0.206891, 12.6105299}, //
+
41006 {0.206850007, 12.6105499}, //
+
41007 {0.206870005, 12.6114101}, //
+
41008 {0.206930995, 12.6124802}, //
+
41009 {0.207032993, 12.61376}, //
+
41010 {0.207176, 12.6152401}, //
+
41011 {0.207359001, 12.6169395}, //
+
41012 {0.207582995, 12.6188402}, //
+
41013 {0.207847998, 12.6209497}, //
+
41014 {0.208153993, 12.62327}, //
+
41015 {0.208499998, 12.6258001}, //
+
41016 {0.208899006, 12.6285}, //
+
41017 {0.209340006, 12.63132}, //
+
41018 {0.209821999, 12.6342697}, //
+
41019 {0.210346997, 12.6373501}, //
+
41020 {0.210914001, 12.6405602}, //
+
41021 {0.211521998, 12.6438904}, //
+
41022 {0.212173, 12.6473503}, //
+
41023 {0.212864995, 12.6509399}, //
+
41024 {0.213599995, 12.6546497}, //
+
41025 {0.214356005, 12.6606903}, //
+
41026 {0.215111002, 12.6667805}, //
+
41027 {0.215866998, 12.6729097}, //
+
41028 {0.216621995, 12.6790705}, //
+
41029 {0.217378005, 12.6852903}, //
+
41030 {0.218133003, 12.6915398}, //
+
41031 {0.218888998, 12.6978302}, //
+
41032 {0.219643995, 12.7041702}, //
+
41033 {0.220400006, 12.7105503}, //
+
41034 {0.220694005, 12.71315}, //
+
41035 {0.220588997, 12.70924}, //
+
41036 {0.220484003, 12.7036304}, //
+
41037 {0.220421001, 12.6978502}, //
+
41038 {0.220400006, 12.6919003}, //
+
41039 {0.220400006, 12.6410503}, //
+
41040 {0.221072003, 12.6374102}, //
+
41041 {0.221575007, 12.6340199}, //
+
41042 {0.221910998, 12.6308804}, //
+
41043 {0.222078994, 12.6279898}, //
+
41044 {0.222078994, 12.62535}, //
+
41045 {0.221910998, 12.6229601}, //
+
41046 {0.221575007, 12.62082}, //
+
41047 {0.221072003, 12.6189404}, //
+
41048 {0.220400006, 12.6173}, //
+
41049 {0.219665006, 12.61586}, //
+
41050 {0.218972996, 12.6145496}, //
+
41051 {0.218321994, 12.6133604}, //
+
41052 {0.217713997, 12.6122999}, //
+
41053 {0.217146993, 12.6113596}, //
+
41054 {0.216621995, 12.6105404}, //
+
41055 {0.216140002, 12.6098499}, //
+
41056 {0.215699002, 12.6092901}, //
+
41057 {0.215299994, 12.6088495}, //
+
41058 {0.214901, 12.60851}, //
+
41059 {0.21446, 12.6082602}, //
+
41060 {0.213978007, 12.6080904}, //
+
41061 {0.213452995, 12.6080103}, //
+
41062 });
+
41063 polys.push_back({
+
41064 {3.74247003, 12.6648397}, //
+
41065 {3.7416501, 12.6649704}, //
+
41066 {3.74078989, 12.6651802}, //
+
41067 {3.7398901, 12.6654701}, //
+
41068 {3.73895001, 12.6658497}, //
+
41069 {3.7379601, 12.6663103}, //
+
41070 {3.73692989, 12.6668596}, //
+
41071 {3.73586011, 12.66749}, //
+
41072 {3.73475003, 12.6681995}, //
+
41073 {3.73364997, 12.6689501}, //
+
41074 {3.73258996, 12.6697102}, //
+
41075 {3.73157001, 12.6704597}, //
+
41076 {3.73059011, 12.6712103}, //
+
41077 {3.72965002, 12.6719599}, //
+
41078 {3.72874999, 12.6727104}, //
+
41079 {3.72789001, 12.67346}, //
+
41080 {3.72708011, 12.6742001}, //
+
41081 {3.7263, 12.6749496}, //
+
41082 {3.72399998, 12.6764202}, //
+
41083 {3.72162008, 12.6778002}, //
+
41084 {3.71915007, 12.6791096}, //
+
41085 {3.71659994, 12.6803198}, //
+
41086 {3.71395993, 12.6814604}, //
+
41087 {3.71123004, 12.6825104}, //
+
41088 {3.70842004, 12.6834698}, //
+
41089 {3.70552993, 12.68435}, //
+
41090 {3.70254993, 12.6851501}, //
+
41091 {3.69869995, 12.6858196}, //
+
41092 {3.69467998, 12.6863298}, //
+
41093 {3.69050002, 12.6866598}, //
+
41094 {3.68615007, 12.6868296}, //
+
41095 {3.6816299, 12.6868296}, //
+
41096 {3.67694998, 12.6866598}, //
+
41097 {3.67210007, 12.6863298}, //
+
41098 {3.66707993, 12.6858196}, //
+
41099 {3.66190004, 12.6851501}, //
+
41100 {3.66035008, 12.6844397}, //
+
41101 {3.65871, 12.6838102}, //
+
41102 {3.65699005, 12.68326}, //
+
41103 {3.65517998, 12.6828003}, //
+
41104 {3.65330005, 12.6824198}, //
+
41105 {3.65131998, 12.6821299}, //
+
41106 {3.64927006, 12.6819201}, //
+
41107 {3.64712, 12.6817904}, //
+
41108 {3.64490008, 12.6817503}, //
+
41109 {3.59404993, 12.6817503}, //
+
41110 {3.59184003, 12.6817703}, //
+
41111 {3.58969998, 12.6818304}, //
+
41112 {3.58766007, 12.6819401}, //
+
41113 {3.58569002, 12.6820898}, //
+
41114 {3.58381009, 12.6822701}, //
+
41115 {3.58201003, 12.6825104}, //
+
41116 {3.58029008, 12.6827803}, //
+
41117 {3.57865, 12.6830902}, //
+
41118 {3.57710004, 12.6834497}, //
+
41119 {3.57572007, 12.6838102}, //
+
41120 {3.57459998, 12.6841202}, //
+
41121 {3.57371998, 12.6843901}, //
+
41122 {3.57310009, 12.6846304}, //
+
41123 {3.57272005, 12.6848097}, //
+
41124 {3.57259011, 12.6849604}, //
+
41125 {3.57271004, 12.68507}, //
+
41126 {3.57308006, 12.6851301}, //
+
41127 {3.57369995, 12.6851501}, //
+
41128 {3.59404993, 12.6851501}, //
+
41129 {3.59793997, 12.6858797}, //
+
41130 {3.60208011, 12.6865702}, //
+
41131 {3.60647988, 12.6872196}, //
+
41132 {3.61111999, 12.68783}, //
+
41133 {3.61601996, 12.6883898}, //
+
41134 {3.62116003, 12.6889095}, //
+
41135 {3.62655997, 12.6893797}, //
+
41136 {3.6322, 12.6898098}, //
+
41137 {3.63809991, 12.6901999}, //
+
41138 {3.64397001, 12.6906004}, //
+
41139 {3.64949989, 12.69104}, //
+
41140 {3.65469003, 12.6915197}, //
+
41141 {3.65955997, 12.69205}, //
+
41142 {3.6640799, 12.6926098}, //
+
41143 {3.66827989, 12.6932201}, //
+
41144 {3.67213988, 12.6938696}, //
+
41145 {3.67565989, 12.6945696}, //
+
41146 {3.67884994, 12.6953001}, //
+
41147 {3.68692994, 12.6958504}, //
+
41148 {3.69459009, 12.6959696}, //
+
41149 {3.70182991, 12.6956797}, //
+
41150 {3.70865011, 12.6949701}, //
+
41151 {3.71504998, 12.6938496}, //
+
41152 {3.72103, 12.6922998}, //
+
41153 {3.72658992, 12.69034}, //
+
41154 {3.73172998, 12.6879501}, //
+
41155 {3.73644996, 12.6851501}, //
+
41156 {3.73797989, 12.6844196}, //
+
41157 {3.73955011, 12.6837196}, //
+
41158 {3.74116993, 12.6830702}, //
+
41159 {3.74282002, 12.6824598}, //
+
41160 {3.74450994, 12.6819}, //
+
41161 {3.74624991, 12.6813698}, //
+
41162 {3.74802995, 12.6808901}, //
+
41163 {3.74984002, 12.6804504}, //
+
41164 {3.75169992, 12.6800499}, //
+
41165 {3.7536099, 12.6798201}, //
+
41166 {3.75555992, 12.6798801}, //
+
41167 {3.75756001, 12.6802397}, //
+
41168 {3.75958991, 12.6808901}, //
+
41169 {3.76167011, 12.6818304}, //
+
41170 {3.76378989, 12.6830702}, //
+
41171 {3.76594996, 12.6845999}, //
+
41172 {3.76815009, 12.68643}, //
+
41173 {3.77040005, 12.68855}, //
+
41174 {3.77115011, 12.68859}, //
+
41175 {3.77188993, 12.6887197}, //
+
41176 {3.77263999, 12.68892}, //
+
41177 {3.77339005, 12.6892099}, //
+
41178 {3.77413988, 12.68958}, //
+
41179 {3.77488995, 12.6900396}, //
+
41180 {3.77564001, 12.6905804}, //
+
41181 {3.77640009, 12.6912003}, //
+
41182 {3.77714992, 12.6919003}, //
+
41183 {3.77870011, 12.6933899}, //
+
41184 {3.78033996, 12.6948404}, //
+
41185 {3.78205991, 12.6962404}, //
+
41186 {3.78385997, 12.6976099}, //
+
41187 {3.7857399, 12.6989298}, //
+
41188 {3.78770995, 12.7002096}, //
+
41189 {3.7897501, 12.7014503}, //
+
41190 {3.79188991, 12.7026501}, //
+
41191 {3.79410005, 12.7038002}, //
+
41192 {3.79637003, 12.7048702}, //
+
41193 {3.79863, 12.7058096}, //
+
41194 {3.80088997, 12.7066298}, //
+
41195 {3.80315995, 12.7073298}, //
+
41196 {3.80541992, 12.7078896}, //
+
41197 {3.80767989, 12.7083302}, //
+
41198 {3.8099401, 12.7086496}, //
+
41199 {3.81219006, 12.7088404}, //
+
41200 {3.81445003, 12.7089005}, //
+
41201 {3.8159399, 12.7088604}, //
+
41202 {3.81738997, 12.7087297}, //
+
41203 {3.81878996, 12.7085199}, //
+
41204 {3.8201499, 12.70823}, //
+
41205 {3.82147002, 12.7078505}, //
+
41206 {3.82274008, 12.7073898}, //
+
41207 {3.82397008, 12.7068396}, //
+
41208 {3.82516003, 12.7062101}, //
+
41209 {3.82629991, 12.7054996}, //
+
41210 {3.82743001, 12.7047701}, //
+
41211 {3.82856989, 12.7040701}, //
+
41212 {3.82969999, 12.7034197}, //
+
41213 {3.8308301, 12.7028103}, //
+
41214 {3.83196998, 12.7022495}, //
+
41215 {3.83310008, 12.7017202}, //
+
41216 {3.83422995, 12.7012396}, //
+
41217 {3.83537006, 12.7007999}, //
+
41218 {3.83649993, 12.7004004}, //
+
41219 {3.83761001, 12.6999998}, //
+
41220 {3.83868003, 12.6995602}, //
+
41221 {3.83971, 12.6990805}, //
+
41222 {3.8406899, 12.6985502}, //
+
41223 {3.84162998, 12.6979904}, //
+
41224 {3.84252, 12.6973801}, //
+
41225 {3.84336996, 12.6967297}, //
+
41226 {3.84418011, 12.6960297}, //
+
41227 {3.84494996, 12.6953001}, //
+
41228 {3.84835005, 12.6919003}, //
+
41229 {3.8348, 12.6716003}, //
+
41230 {3.83441997, 12.6717796}, //
+
41231 {3.83274007, 12.6725998}, //
+
41232 {3.83210993, 12.6729002}, //
+
41233 {3.83139992, 12.6732502}, //
+
41234 {3.83062005, 12.6736498}, //
+
41235 {3.82979989, 12.6740904}, //
+
41236 {3.82893991, 12.6745701}, //
+
41237 {3.82803988, 12.6751003}, //
+
41238 {3.82710004, 12.6756601}, //
+
41239 {3.82610989, 12.6762695}, //
+
41240 {3.82507992, 12.6769199}, //
+
41241 {3.8240099, 12.6776199}, //
+
41242 {3.82290006, 12.6783504}, //
+
41243 {3.82175994, 12.67908}, //
+
41244 {3.82056999, 12.67978}, //
+
41245 {3.81933999, 12.6804304}, //
+
41246 {3.81806993, 12.6810398}, //
+
41247 {3.81675005, 12.6815996}, //
+
41248 {3.81539011, 12.6821299}, //
+
41249 {3.81399012, 12.6826096}, //
+
41250 {3.81254005, 12.6830502}, //
+
41251 {3.81104994, 12.6834497}, //
+
41252 {3.80955005, 12.6838102}, //
+
41253 {3.80804992, 12.6841202}, //
+
41254 {3.80654001, 12.6843901}, //
+
41255 {3.80503988, 12.6846304}, //
+
41256 {3.80352998, 12.6848097}, //
+
41257 {3.80203009, 12.6849604}, //
+
41258 {3.80051994, 12.68507}, //
+
41259 {3.79901004, 12.6851301}, //
+
41260 {3.7974999, 12.6851501}, //
+
41261 {3.79715991, 12.68507}, //
+
41262 {3.79674006, 12.6849604}, //
+
41263 {3.79615998, 12.6848097}, //
+
41264 {3.7953999, 12.6846304}, //
+
41265 {3.79448009, 12.6843901}, //
+
41266 {3.79339004, 12.6841202}, //
+
41267 {3.79069996, 12.6834497}, //
+
41268 {3.78918004, 12.6830301}, //
+
41269 {3.78761005, 12.6825304}, //
+
41270 {3.78601003, 12.6819401}, //
+
41271 {3.78434992, 12.6812696}, //
+
41272 {3.78266001, 12.6805096}, //
+
41273 {3.78092003, 12.6796703}, //
+
41274 {3.77914, 12.67875}, //
+
41275 {3.77731991, 12.6777401}, //
+
41276 {3.77544999, 12.67665}, //
+
41277 {3.77357006, 12.6755505}, //
+
41278 {3.77168989, 12.67449}, //
+
41279 {3.76980996, 12.6734695}, //
+
41280 {3.76793003, 12.6724901}, //
+
41281 {3.7660501, 12.6715498}, //
+
41282 {3.76415992, 12.6706495}, //
+
41283 {3.76227999, 12.6697903}, //
+
41284 {3.76039004, 12.6689796}, //
+
41285 {3.7585001, 12.6681995}, //
+
41286 {3.75663996, 12.66749}, //
+
41287 {3.75482988, 12.6668596}, //
+
41288 {3.75305009, 12.6663103}, //
+
41289 {3.75131011, 12.6658497}, //
+
41290 {3.74961996, 12.6654701}, //
+
41291 {3.7479701, 12.6651802}, //
+
41292 {3.74635005, 12.6649704}, //
+
41293 {3.74478006, 12.6648397}, //
+
41294 {3.74324989, 12.6647997}, //
+
41295 });
+
41296 polys.push_back({
+
41297 {6.19825983, 12.2118797}, //
+
41298 {6.1963501, 12.2121496}, //
+
41299 {6.19450998, 12.2126303}, //
+
41300 {6.19275999, 12.2133198}, //
+
41301 {6.19109011, 12.21422}, //
+
41302 {6.18949986, 12.2153301}, //
+
41303 {6.1880002, 12.21665}, //
+
41304 {6.18657017, 12.2181702}, //
+
41305 {6.18522978, 12.2199097}, //
+
41306 {6.18396997, 12.2218504}, //
+
41307 {6.18279982, 12.224}, //
+
41308 {6.18176985, 12.2262697}, //
+
41309 {6.18095016, 12.2285299}, //
+
41310 {6.18033981, 12.2307901}, //
+
41311 {6.17995024, 12.2330599}, //
+
41312 {6.17975998, 12.2353201}, //
+
41313 {6.17978001, 12.2375803}, //
+
41314 {6.18000984, 12.2398396}, //
+
41315 {6.18044996, 12.2420902}, //
+
41316 {6.18109989, 12.2443504}, //
+
41317 {6.17981005, 12.2504196}, //
+
41318 {6.17892981, 12.2565804}, //
+
41319 {6.17848015, 12.2628202}, //
+
41320 {6.17844009, 12.2691498}, //
+
41321 {6.17882013, 12.2755499}, //
+
41322 {6.17960978, 12.2820396}, //
+
41323 {6.18081999, 12.2886105}, //
+
41324 {6.18244982, 12.2952604}, //
+
41325 {6.18450022, 12.302}, //
+
41326 {6.18598986, 12.3057499}, //
+
41327 {6.18743992, 12.3094501}, //
+
41328 {6.18883991, 12.3131104}, //
+
41329 {6.19019985, 12.3167295}, //
+
41330 {6.19152021, 12.3203096}, //
+
41331 {6.19279003, 12.3238401}, //
+
41332 {6.19401979, 12.3273401}, //
+
41333 {6.19520998, 12.3307896}, //
+
41334 {6.1963501, 12.3341999}, //
+
41335 {6.19738007, 12.3376102}, //
+
41336 {6.19820023, 12.3410597}, //
+
41337 {6.1988101, 12.3445597}, //
+
41338 {6.19920015, 12.3480902}, //
+
41339 {6.19938993, 12.3516703}, //
+
41340 {6.19936991, 12.3552904}, //
+
41341 {6.19914007, 12.3589497}, //
+
41342 {6.19869995, 12.3626499}, //
+
41343 {6.19805002, 12.3663998}, //
+
41344 {6.19796991, 12.3686705}, //
+
41345 {6.19772005, 12.3709297}, //
+
41346 {6.19729996, 12.3731899}, //
+
41347 {6.19672012, 12.3754597}, //
+
41348 {6.19597006, 12.3777199}, //
+
41349 {6.19504976, 12.3799801}, //
+
41350 {6.1939702, 12.3822403}, //
+
41351 {6.19271994, 12.38449}, //
+
41352 {6.19129992, 12.3867502}, //
+
41353 {6.1905899, 12.3882999}, //
+
41354 {6.18996, 12.3899403}, //
+
41355 {6.18941021, 12.3916597}, //
+
41356 {6.18895006, 12.3934603}, //
+
41357 {6.18857002, 12.39534}, //
+
41358 {6.18828011, 12.3973103}, //
+
41359 {6.18806982, 12.3993502}, //
+
41360 {6.18794012, 12.4014902}, //
+
41361 {6.18790007, 12.4036999}, //
+
41362 {6.18794012, 12.40592}, //
+
41363 {6.18806982, 12.4080601}, //
+
41364 {6.18828011, 12.41012}, //
+
41365 {6.18857002, 12.4120903}, //
+
41366 {6.18895006, 12.41397}, //
+
41367 {6.18941021, 12.4157696}, //
+
41368 {6.18996, 12.4174805}, //
+
41369 {6.1905899, 12.4191103}, //
+
41370 {6.19129992, 12.4206495}, //
+
41371 {6.19347, 12.4207296}, //
+
41372 {6.19547987, 12.42099}, //
+
41373 {6.19731998, 12.4214096}, //
+
41374 {6.19898987, 12.4219904}, //
+
41375 {6.20049, 12.4227505}, //
+
41376 {6.20182991, 12.4236698}, //
+
41377 {6.20301008, 12.4247599}, //
+
41378 {6.20401001, 12.4260197}, //
+
41379 {6.2048502, 12.4274502}, //
+
41380 {6.20564985, 12.4289999}, //
+
41381 {6.20653009, 12.4306402}, //
+
41382 {6.20748997, 12.4323597}, //
+
41383 {6.20852995, 12.4341602}, //
+
41384 {6.20966005, 12.4360399}, //
+
41385 {6.21086979, 12.4380102}, //
+
41386 {6.21217012, 12.4400501}, //
+
41387 {6.21354008, 12.4421902}, //
+
41388 {6.21500015, 12.4443998}, //
+
41389 {6.21504021, 12.44662}, //
+
41390 {6.21516991, 12.44876}, //
+
41391 {6.21538019, 12.45082}, //
+
41392 {6.21567011, 12.4527903}, //
+
41393 {6.21605015, 12.45467}, //
+
41394 {6.21650982, 12.4564695}, //
+
41395 {6.21706009, 12.4581804}, //
+
41396 {6.21768999, 12.4598103}, //
+
41397 {6.2184, 12.4613504}, //
+
41398 {6.21911001, 12.4628601}, //
+
41399 {6.21973991, 12.4643698}, //
+
41400 {6.22029018, 12.4658804}, //
+
41401 {6.22074986, 12.4673796}, //
+
41402 {6.22112989, 12.4688902}, //
+
41403 {6.22141981, 12.4703903}, //
+
41404 {6.2216301, 12.4719}, //
+
41405 {6.2217598, 12.4734001}, //
+
41406 {6.22179985, 12.4749002}, //
+
41407 {6.22683001, 12.4930696}, //
+
41408 {6.23134995, 12.5114098}, //
+
41409 {6.23537016, 12.5299196}, //
+
41410 {6.23888016, 12.5485897}, //
+
41411 {6.24188995, 12.5674295}, //
+
41412 {6.24440002, 12.5864296}, //
+
41413 {6.24639988, 12.6056099}, //
+
41414 {6.24790001, 12.6249399}, //
+
41415 {6.24889994, 12.6444502}, //
+
41416 {6.24896002, 12.64748}, //
+
41417 {6.2491498, 12.6505604}, //
+
41418 {6.24947023, 12.6536703}, //
+
41419 {6.24990988, 12.6568298}, //
+
41420 {6.25047016, 12.6600304}, //
+
41421 {6.25117016, 12.66327}, //
+
41422 {6.25198984, 12.6665602}, //
+
41423 {6.25293016, 12.6698799}, //
+
41424 {6.25400019, 12.6732502}, //
+
41425 {6.25523996, 12.6765003}, //
+
41426 {6.25668001, 12.6794596}, //
+
41427 {6.25833988, 12.6821203}, //
+
41428 {6.26020002, 12.6844902}, //
+
41429 {6.26226997, 12.6865597}, //
+
41430 {6.26456022, 12.6883402}, //
+
41431 {6.26704979, 12.6898203}, //
+
41432 {6.2697401, 12.6910105}, //
+
41433 {6.27264977, 12.6919003}, //
+
41434 {6.27644014, 12.6933699}, //
+
41435 {6.2802701, 12.6947498}, //
+
41436 {6.28414011, 12.6960602}, //
+
41437 {6.28805017, 12.6972704}, //
+
41438 {6.29200983, 12.69841}, //
+
41439 {6.29601002, 12.69946}, //
+
41440 {6.30004978, 12.7004204}, //
+
41441 {6.30413008, 12.7012997}, //
+
41442 {6.30824995, 12.7020998}, //
+
41443 {6.31232977, 12.7026901}, //
+
41444 {6.3162899, 12.70294}, //
+
41445 {6.32011986, 12.7028599}, //
+
41446 {6.32382011, 12.7024403}, //
+
41447 {6.32740021, 12.7016802}, //
+
41448 {6.33085012, 12.7005901}, //
+
41449 {6.33417988, 12.6991596}, //
+
41450 {6.33737993, 12.6974001}, //
+
41451 {6.34044981, 12.6953001}, //
+
41452 {6.34792995, 12.6866598}, //
+
41453 {6.35527992, 12.6788197}, //
+
41454 {6.3625102, 12.6717701}, //
+
41455 {6.36960983, 12.6655197}, //
+
41456 {6.37658024, 12.6600599}, //
+
41457 {6.38343, 12.6553898}, //
+
41458 {6.39015007, 12.6515198}, //
+
41459 {6.39673996, 12.6484404}, //
+
41460 {6.40320015, 12.6461496}, //
+
41461 {6.40941, 12.6444101}, //
+
41462 {6.41524982, 12.6429596}, //
+
41463 {6.42071009, 12.6418104}, //
+
41464 {6.42579985, 12.6409502}, //
+
41465 {6.43051004, 12.6403799}, //
+
41466 {6.4348402, 12.64011}, //
+
41467 {6.43879986, 12.64013}, //
+
41468 {6.44238997, 12.64044}, //
+
41469 {6.44560003, 12.6410503}, //
+
41470 {6.4463501, 12.6403399}, //
+
41471 {6.44709015, 12.6397104}, //
+
41472 {6.44784021, 12.6391602}, //
+
41473 {6.4485898, 12.6386995}, //
+
41474 {6.44933987, 12.63832}, //
+
41475 {6.45008993, 12.6380301}, //
+
41476 {6.45084, 12.6378202}, //
+
41477 {6.45160007, 12.6376896}, //
+
41478 {6.45235014, 12.6376495}, //
+
41479 {6.45242977, 12.6317501}, //
+
41480 {6.45269012, 12.6261101}, //
+
41481 {6.45311022, 12.6207104}, //
+
41482 {6.45369005, 12.6155701}, //
+
41483 {6.45445013, 12.6106701}, //
+
41484 {6.45536995, 12.6060305}, //
+
41485 {6.45646, 12.6016302}, //
+
41486 {6.4577198, 12.5974903}, //
+
41487 {6.45914984, 12.5936003}, //
+
41488 {6.4598999, 12.5912504}, //
+
41489 {6.46065998, 12.5887299}, //
+
41490 {6.46141005, 12.58605}, //
+
41491 {6.46216011, 12.5832005}, //
+
41492 {6.46291018, 12.5801802}, //
+
41493 {6.46365976, 12.5769997}, //
+
41494 {6.46440983, 12.5736504}, //
+
41495 {6.46514988, 12.5701303}, //
+
41496 {6.46589994, 12.5664501}, //
+
41497 {6.46583986, 12.5657902}, //
+
41498 {6.46565008, 12.5652905}, //
+
41499 {6.46533012, 12.5649595}, //
+
41500 {6.46489, 12.5648003}, //
+
41501 {6.4643302, 12.5648003}, //
+
41502 {6.4636302, 12.5649595}, //
+
41503 {6.46281004, 12.5652905}, //
+
41504 {6.46187019, 12.5657902}, //
+
41505 {6.46080017, 12.5664501}, //
+
41506 {6.45964003, 12.5672703}, //
+
41507 {6.45839024, 12.5682096}, //
+
41508 {6.45704985, 12.5692797}, //
+
41509 {6.45562983, 12.5704699}, //
+
41510 {6.45412016, 12.5717897}, //
+
41511 {6.45252991, 12.5732298}, //
+
41512 {6.45086002, 12.57479}, //
+
41513 {6.44910002, 12.5764799}, //
+
41514 {6.44724989, 12.5783005}, //
+
41515 {6.44535017, 12.5802097}, //
+
41516 {6.44340992, 12.58216}, //
+
41517 {6.44143009, 12.5841599}, //
+
41518 {6.4394002, 12.5861902}, //
+
41519 {6.43733978, 12.5882702}, //
+
41520 {6.43522978, 12.5903902}, //
+
41521 {6.4330802, 12.5925503}, //
+
41522 {6.43088007, 12.5947504}, //
+
41523 {6.4286499, 12.5970001}, //
+
41524 {6.42565012, 12.5999899}, //
+
41525 {6.42268991, 12.6029396}, //
+
41526 {6.41977978, 12.6058397}, //
+
41527 {6.41691017, 12.6087103}, //
+
41528 {6.41408014, 12.6115303}, //
+
41529 {6.41129017, 12.6143103}, //
+
41530 {6.40584993, 12.61975}, //
+
41531 {6.40320015, 12.6224003}, //
+
41532 {6.40058994, 12.6249399}, //
+
41533 {6.39800978, 12.6272697}, //
+
41534 {6.39548016, 12.6293802}, //
+
41535 {6.39299011, 12.6312904}, //
+
41536 {6.39054012, 12.6329803}, //
+
41537 {6.38813019, 12.63447}, //
+
41538 {6.38575983, 12.6357403}, //
+
41539 {6.38344002, 12.6367998}, //
+
41540 {6.38114977, 12.6376495}, //
+
41541 {6.37969017, 12.63832}, //
+
41542 {6.37832022, 12.6388302}, //
+
41543 {6.37701988, 12.6391602}, //
+
41544 {6.37581015, 12.6393299}, //
+
41545 {6.37468004, 12.6393299}, //
+
41546 {6.37364006, 12.6391602}, //
+
41547 {6.37268019, 12.6388302}, //
+
41548 {6.37179995, 12.63832}, //
+
41549 {6.37099981, 12.6376495}, //
+
41550 {6.3702898, 12.6368599}, //
+
41551 {6.3696599, 12.6359901}, //
+
41552 {6.36911011, 12.6350298}, //
+
41553 {6.36864996, 12.6339903}, //
+
41554 {6.36826992, 12.6328602}, //
+
41555 {6.36798, 12.63165}, //
+
41556 {6.3677702, 12.6303501}, //
+
41557 {6.36764002, 12.6289701}, //
+
41558 {6.36755991, 12.62603}, //
+
41559 {6.36743021, 12.62465}, //
+
41560 {6.36721992, 12.6233501}, //
+
41561 {6.36693001, 12.6221399}, //
+
41562 {6.36654997, 12.6210098}, //
+
41563 {6.36608982, 12.6199703}, //
+
41564 {6.36554003, 12.61901}, //
+
41565 {6.36491013, 12.6181402}, //
+
41566 {6.36420012, 12.6173496}, //
+
41567 {6.36420012, 12.6105499}, //
+
41568 {6.36418009, 12.6098604}, //
+
41569 {6.36412001, 12.6092901}, //
+
41570 {6.36400986, 12.6088495}, //
+
41571 {6.36386013, 12.6085396}, //
+
41572 {6.36367989, 12.6083498}, //
+
41573 {6.36344004, 12.6082802}, //
+
41574 {6.36317015, 12.6083498}, //
+
41575 {6.3628602, 12.6085396}, //
+
41576 {6.36250019, 12.6088495}, //
+
41577 {6.36214018, 12.6092901}, //
+
41578 {6.36183023, 12.6098604}, //
+
41579 {6.36155987, 12.6105499}, //
+
41580 {6.36132002, 12.6113701}, //
+
41581 {6.36113977, 12.6123104}, //
+
41582 {6.36099005, 12.6133804}, //
+
41583 {6.3608799, 12.6145802}, //
+
41584 {6.36081982, 12.6159}, //
+
41585 {6.36079979, 12.6173496}, //
+
41586 {6.36077976, 12.6181202}, //
+
41587 {6.36072016, 12.6189299}, //
+
41588 {6.36061001, 12.6197796}, //
+
41589 {6.3604598, 12.6206703}, //
+
41590 {6.36028004, 12.6216097}, //
+
41591 {6.36004019, 12.6225901}, //
+
41592 {6.35976982, 12.62362}, //
+
41593 {6.35945988, 12.6246901}, //
+
41594 {6.35909986, 12.6258001}, //
+
41595 {6.35833979, 12.6280603}, //
+
41596 {6.35797024, 12.6291904}, //
+
41597 {6.35683012, 12.6325798}, //
+
41598 {6.35646009, 12.6337004}, //
+
41599 {6.35608006, 12.6348305}, //
+
41600 {6.35570002, 12.6359501}, //
+
41601 {6.35535002, 12.6370001}, //
+
41602 {6.35505009, 12.6378803}, //
+
41603 {6.3547802, 12.6385899}, //
+
41604 {6.3545599, 12.6391401}, //
+
41605 {6.35438013, 12.6395197}, //
+
41606 {6.35422993, 12.6397305}, //
+
41607 {6.35412979, 12.6397696}, //
+
41608 {6.35407019, 12.6396399}, //
+
41609 {6.35405016, 12.6393499}, //
+
41610 {6.35401011, 12.6389103}, //
+
41611 {6.35387993, 12.6383495}, //
+
41612 {6.35367012, 12.63766}, //
+
41613 {6.3533802, 12.6368399}, //
+
41614 {6.35300016, 12.6358995}, //
+
41615 {6.35254002, 12.63484}, //
+
41616 {6.35199022, 12.6336498}, //
+
41617 {6.35135984, 12.6323404}, //
+
41618 {6.35064983, 12.6309004}, //
+
41619 {6.3499198, 12.6294699}, //
+
41620 {6.3492198, 12.6282101}, //
+
41621 {6.34856987, 12.62712}, //
+
41622 {6.34796, 12.6261997}, //
+
41623 {6.34740019, 12.6254396}, //
+
41624 {6.34686995, 12.6248598}, //
+
41625 {6.34638977, 12.6244402}, //
+
41626 {6.34595013, 12.6241798}, //
+
41627 {6.34555006, 12.6240997}, //
+
41628 {6.34519005, 12.6241198}, //
+
41629 {6.3448801, 12.6241798}, //
+
41630 {6.34461021, 12.6242905}, //
+
41631 {6.34436989, 12.6244402}, //
+
41632 {6.34419012, 12.6246204}, //
+
41633 {6.34403992, 12.6248598}, //
+
41634 {6.34392977, 12.6251297}, //
+
41635 {6.34387016, 12.6254396}, //
+
41636 {6.34385014, 12.6258001}, //
+
41637 {6.34385014, 12.64785}, //
+
41638 {6.34381008, 12.6492796}, //
+
41639 {6.3436799, 12.6505404}, //
+
41640 {6.3434701, 12.6516304}, //
+
41641 {6.34318018, 12.6525497}, //
+
41642 {6.34280014, 12.6533098}, //
+
41643 {6.34233999, 12.6538897}, //
+
41644 {6.3417902, 12.6543102}, //
+
41645 {6.34115982, 12.6545696}, //
+
41646 {6.34044981, 12.6546497}, //
+
41647 {6.33970022, 12.6525297}, //
+
41648 {6.33896017, 12.6506996}, //
+
41649 {6.33821011, 12.6491699}, //
+
41650 {6.33746004, 12.6479301}, //
+
41651 {6.33670998, 12.6469898}, //
+
41652 {6.33595991, 12.6463404}, //
+
41653 {6.33520985, 12.6459799}, //
+
41654 {6.33444977, 12.6459198}, //
+
41655 {6.33370018, 12.6461496}, //
+
41656 {6.33290005, 12.6465902}, //
+
41657 {6.33201981, 12.6471596}, //
+
41658 {6.33105993, 12.64785}, //
+
41659 {6.33000994, 12.6486702}, //
+
41660 {6.32886982, 12.6496096}, //
+
41661 {6.32766008, 12.6506796}, //
+
41662 {6.32635021, 12.6518803}, //
+
41663 {6.32496977, 12.6532001}, //
+
41664 {6.32350016, 12.6546497}, //
+
41665 {6.32275009, 12.6568403}, //
+
41666 {6.32201004, 12.6589098}, //
+
41667 {6.32125998, 12.6608496}, //
+
41668 {6.32050991, 12.6626596}, //
+
41669 {6.31975985, 12.6643496}, //
+
41670 {6.31900978, 12.6659203}, //
+
41671 {6.31826019, 12.6673498}, //
+
41672 {6.31750011, 12.6686602}, //
+
41673 {6.31675005, 12.6698503}, //
+
41674 {6.31594992, 12.6708803}, //
+
41675 {6.31507015, 12.6716995}, //
+
41676 {6.3141098, 12.6723099}, //
+
41677 {6.31305981, 12.6727104}, //
+
41678 {6.31192017, 12.6729097}, //
+
41679 {6.31070995, 12.6728897}, //
+
41680 {6.30940008, 12.6726704}, //
+
41681 {6.30802011, 12.6722403}, //
+
41682 {6.30655003, 12.6716003}, //
+
41683 {6.30446005, 12.6700497}, //
+
41684 {6.30271006, 12.6684103}, //
+
41685 {6.30128002, 12.6666899}, //
+
41686 {6.30018997, 12.6648798}, //
+
41687 {6.29943991, 12.6630001}, //
+
41688 {6.29901981, 12.6610203}, //
+
41689 {6.29893017, 12.6589699}, //
+
41690 {6.29917002, 12.6568203}, //
+
41691 {6.29974985, 12.6546001}, //
+
41692 {6.30353022, 12.6433201}, //
+
41693 {6.3042798, 12.6410704}, //
+
41694 {6.30503988, 12.6388102}, //
+
41695 {6.30655003, 12.6343002}, //
+
41696 {6.3073101, 12.6327896}, //
+
41697 {6.30881977, 12.6297703}, //
+
41698 {6.31032991, 12.6267405}, //
+
41699 {6.31107998, 12.6252298}, //
+
41700 {6.31184006, 12.6237202}, //
+
41701 {6.31259012, 12.6222095}, //
+
41702 {6.3133502, 12.6206999}, //
+
41703 {6.31259012, 12.6192398}, //
+
41704 {6.31184006, 12.6178703}, //
+
41705 {6.31107998, 12.6165705}, //
+
41706 {6.31032991, 12.6153603}, //
+
41707 {6.30956984, 12.6142302}, //
+
41708 {6.30881977, 12.6131897}, //
+
41709 {6.30806017, 12.6122303}, //
+
41710 {6.3073101, 12.6113501}, //
+
41711 {6.30655003, 12.6105499}, //
+
41712 {6.30574989, 12.6098404}, //
+
41713 {6.30487013, 12.60921}, //
+
41714 {6.30390978, 12.6086597}, //
+
41715 {6.3028698, 12.6082001}, //
+
41716 {6.30174017, 12.6078196}, //
+
41717 {6.30052996, 12.6075296}, //
+
41718 {6.2992301, 12.6073198}, //
+
41719 {6.29786015, 12.6071901}, //
+
41720 {6.29640007, 12.6071501}, //
+
41721 {6.29561996, 12.60637}, //
+
41722 {6.2947998, 12.6055498}, //
+
41723 {6.2930398, 12.6037903}, //
+
41724 {6.29209995, 12.60285}, //
+
41725 {6.29008007, 12.6008301}, //
+
41726 {6.28901005, 12.5997601}, //
+
41727 {6.28789997, 12.59865}, //
+
41728 {6.28683996, 12.5975504}, //
+
41729 {6.28590012, 12.5964899}, //
+
41730 {6.28508997, 12.5954704}, //
+
41731 {6.28441, 12.5944901}, //
+
41732 {6.28385019, 12.5935497}, //
+
41733 {6.28341007, 12.5926504}, //
+
41734 {6.28310013, 12.5917902}, //
+
41735 {6.28290987, 12.5909796}, //
+
41736 {6.28284979, 12.5902004}, //
+
41737 {6.28150988, 12.5850096}, //
+
41738 {6.28049994, 12.5799799}, //
+
41739 {6.27982998, 12.57512}, //
+
41740 {6.27948999, 12.5704298}, //
+
41741 {6.27948999, 12.5659103}, //
+
41742 {6.27982998, 12.5615597}, //
+
41743 {6.28049994, 12.5573702}, //
+
41744 {6.28150988, 12.5533504}, //
+
41745 {6.28284979, 12.5495005}, //
+
41746 {6.28284979, 12.52915}, //
+
41747 {6.28281021, 12.5268898}, //
+
41748 {6.28268003, 12.5246401}, //
+
41749 {6.28247023, 12.5223799}, //
+
41750 {6.28217983, 12.5201302}, //
+
41751 {6.28179979, 12.5178699}, //
+
41752 {6.28134012, 12.5156202}, //
+
41753 {6.28078985, 12.51336}, //
+
41754 {6.28015995, 12.5111103}, //
+
41755 {6.27944994, 12.5088501}, //
+
41756 {6.27734995, 12.5036097}, //
+
41757 {6.27558994, 12.4984598}, //
+
41758 {6.27415991, 12.4933901}, //
+
41759 {6.27306986, 12.48841}, //
+
41760 {6.27230978, 12.48351}, //
+
41761 {6.27189016, 12.4786901}, //
+
41762 {6.27181005, 12.4739599}, //
+
41763 {6.27205992, 12.4693098}, //
+
41764 {6.27264977, 12.4647503}, //
+
41765 {6.27261019, 12.4617796}, //
+
41766 {6.27248001, 12.45889}, //
+
41767 {6.2722702, 12.45609}, //
+
41768 {6.27197981, 12.4533701}, //
+
41769 {6.27159977, 12.4507303}, //
+
41770 {6.2711401, 12.4481697}, //
+
41771 {6.27058983, 12.4456997}, //
+
41772 {6.26995993, 12.4433098}, //
+
41773 {6.26924992, 12.441}, //
+
41774 {6.26711988, 12.4356499}, //
+
41775 {6.26524019, 12.43013}, //
+
41776 {6.26360989, 12.4244404}, //
+
41777 {6.26222992, 12.4185801}, //
+
41778 {6.26109982, 12.41255}, //
+
41779 {6.26023006, 12.4063597}, //
+
41780 {6.25960016, 12.3999901}, //
+
41781 {6.25923014, 12.3934498}, //
+
41782 {6.25909996, 12.3867502}, //
+
41783 {6.25909996, 12.3630505}, //
+
41784 {6.25976992, 12.3592396}, //
+
41785 {6.26028013, 12.3553495}, //
+
41786 {6.2606101, 12.3513699}, //
+
41787 {6.26077986, 12.3473101}, //
+
41788 {6.26077986, 12.3431702}, //
+
41789 {6.2606101, 12.3389397}, //
+
41790 {6.26028013, 12.33463}, //
+
41791 {6.25976992, 12.3302298}, //
+
41792 {6.25909996, 12.3257504}, //
+
41793 {6.25751019, 12.3212299}, //
+
41794 {6.25574017, 12.3167105}, //
+
41795 {6.25381994, 12.3121796}, //
+
41796 {6.25171995, 12.3076601}, //
+
41797 {6.24946022, 12.3031397}, //
+
41798 {6.24702978, 12.2986202}, //
+
41799 {6.24444008, 12.2940903}, //
+
41800 {6.24168015, 12.2895699}, //
+
41801 {6.23874998, 12.2850504}, //
+
41802 {6.23510981, 12.2781897}, //
+
41803 {6.23171997, 12.2711601}, //
+
41804 {6.22858, 12.2639599}, //
+
41805 {6.22568989, 12.2566004}, //
+
41806 {6.22305012, 12.2490597}, //
+
41807 {6.22066021, 12.2413597}, //
+
41808 {6.21852016, 12.23349}, //
+
41809 {6.21664, 12.2254496}, //
+
41810 {6.21500015, 12.2172499}, //
+
41811 {6.21275997, 12.2158403}, //
+
41812 {6.21056986, 12.2146502}, //
+
41813 {6.2084198, 12.2136602}, //
+
41814 {6.20629978, 12.2128801}, //
+
41815 {6.20422983, 12.2123203}, //
+
41816 {6.20219994, 12.2119598}, //
+
41817 {6.20021009, 12.2118101}, //
+
41818 });
+
41819 polys.push_back({
+
41820 {0.35769999, 12.5579996}, //
+
41821 {0.355843008, 12.5614901}, //
+
41822 {0.35402599, 12.5651999}, //
+
41823 {0.35225001, 12.5691099}, //
+
41824 {0.350515008, 12.5732203}, //
+
41825 {0.348820001, 12.5775499}, //
+
41826 {0.347166985, 12.5820904}, //
+
41827 {0.345553994, 12.5868301}, //
+
41828 {0.343980998, 12.5917902}, //
+
41829 {0.342449993, 12.5969496}, //
+
41830 {0.341022998, 12.60219}, //
+
41831 {0.339763999, 12.6073399}, //
+
41832 {0.338672012, 12.6124096}, //
+
41833 {0.337749004, 12.6173897}, //
+
41834 {0.336993009, 12.6222897}, //
+
41835 {0.336405993, 12.6271095}, //
+
41836 {0.335985988, 12.6318398}, //
+
41837 {0.33573401, 12.6364899}, //
+
41838 {0.335649997, 12.6410503}, //
+
41839 {0.335691988, 12.6440496}, //
+
41840 {0.335817993, 12.6470098}, //
+
41841 {0.33602801, 12.6499205}, //
+
41842 {0.33632201, 12.6527901}, //
+
41843 {0.336699009, 12.6556196}, //
+
41844 {0.337161005, 12.6584101}, //
+
41845 {0.337707013, 12.66115}, //
+
41846 {0.338335991, 12.6638498}, //
+
41847 {0.339049995, 12.6665001}, //
+
41848 {0.339846998, 12.6690502}, //
+
41849 {0.340727001, 12.6714296}, //
+
41850 {0.341688991, 12.6736498}, //
+
41851 {0.342734009, 12.6757002}, //
+
41852 {0.343861997, 12.6775799}, //
+
41853 {0.345072001, 12.6793003}, //
+
41854 {0.346365005, 12.68085}, //
+
41855 {0.347741008, 12.68223}, //
+
41856 {0.34920001, 12.6834497}, //
+
41857 {0.350647986, 12.6845598}, //
+
41858 {0.351969987, 12.6856298}, //
+
41859 {0.353166997, 12.6866598}, //
+
41860 {0.35423699, 12.6876402}, //
+
41861 {0.355181009, 12.6885796}, //
+
41862 {0.356000006, 12.6894703}, //
+
41863 {0.356693, 12.69032}, //
+
41864 {0.357259005, 12.6911297}, //
+
41865 {0.35769999, 12.6919003}, //
+
41866 {0.358372003, 12.6932402}, //
+
41867 {0.358644009, 12.6937904}, //
+
41868 {0.358875006, 12.6942501}, //
+
41869 {0.359378994, 12.69526}, //
+
41870 {0.359400004, 12.6953001}, //
+
41871 {0.367419988, 12.6845903}, //
+
41872 {0.36954999, 12.6817503}, //
+
41873 {0.369589001, 12.6816998}, //
+
41874 {0.369515985, 12.6813297}, //
+
41875 {0.369264007, 12.6800699}, //
+
41876 {0.369075, 12.6791296}, //
+
41877 {0.368571997, 12.67661}, //
+
41878 {0.368256986, 12.6750298}, //
+
41879 {0.367900014, 12.6732502}, //
+
41880 {0.367500991, 12.6712704}, //
+
41881 {0.367060006, 12.6690702}, //
+
41882 {0.366578013, 12.6666698}, //
+
41883 {0.366052985, 12.6640596}, //
+
41884 {0.365485996, 12.6612396}, //
+
41885 {0.364877999, 12.6582098}, //
+
41886 {0.364226997, 12.6549597}, //
+
41887 {0.363534987, 12.6515102}, //
+
41888 {0.362800002, 12.64785}, //
+
41889 {0.362064987, 12.6441498}, //
+
41890 {0.361373007, 12.6405697}, //
+
41891 {0.360722005, 12.6371098}, //
+
41892 {0.360114008, 12.6337795}, //
+
41893 {0.359546989, 12.6305799}, //
+
41894 {0.359021991, 12.62749}, //
+
41895 {0.358539999, 12.6245403}, //
+
41896 {0.358099014, 12.6217098}, //
+
41897 {0.35769999, 12.6190004}, //
+
41898 {0.357342988, 12.6164703}, //
+
41899 {0.357028008, 12.61415}, //
+
41900 {0.356756002, 12.6120396}, //
+
41901 {0.356525004, 12.6101398}, //
+
41902 {0.356335998, 12.6084404}, //
+
41903 {0.356189013, 12.6069603}, //
+
41904 {0.356083989, 12.6056805}, //
+
41905 {0.356020987, 12.6046104}, //
+
41906 {0.356000006, 12.6037502}, //
+
41907 {0.35671401, 12.6022301}, //
+
41908 {0.357342988, 12.6006603}, //
+
41909 {0.357888997, 12.5990601}, //
+
41910 {0.358350992, 12.5973997}, //
+
41911 {0.358727992, 12.5957098}, //
+
41912 {0.359021991, 12.5939703}, //
+
41913 {0.359232008, 12.5921898}, //
+
41914 {0.359358013, 12.5903702}, //
+
41915 {0.359400004, 12.5885}, //
+
41916 {0.359421015, 12.5865803}, //
+
41917 {0.359483987, 12.5845699}, //
+
41918 {0.35958901, 12.5824804}, //
+
41919 {0.359735996, 12.5803099}, //
+
41920 {0.359925002, 12.5780497}, //
+
41921 {0.360156, 12.5756998}, //
+
41922 {0.360428005, 12.5732698}, //
+
41923 {0.360742986, 12.5707502}, //
+
41924 {0.361099988, 12.5681496}, //
+
41925 {0.361478001, 12.5655804}, //
+
41926 {0.361856014, 12.5631304}, //
+
41927 {0.362233013, 12.5608101}, //
+
41928 {0.362610996, 12.55861}, //
+
41929 {0.362989008, 12.5565395}, //
+
41930 {0.363366991, 12.5545902}, //
+
41931 {0.363743991, 12.5527697}, //
+
41932 {0.364122003, 12.5510702}, //
+
41933 {0.364499986, 12.5495005}, //
+
41934 {0.365864009, 12.5440798}, //
+
41935 {0.366115987, 12.5430803}, //
+
41936 {0.366178989, 12.5428305}, //
+
41937 {0.3662, 12.5427504}, //
+
41938 });
+
41939 polys.push_back({
+
41940 {0.399574995, 12.4359598}, //
+
41941 {0.399343997, 12.43612}, //
+
41942 {0.399071991, 12.4364405}, //
+
41943 {0.398757011, 12.4369402}, //
+
41944 {0.398400009, 12.4376001}, //
+
41945 {0.398043007, 12.4384403}, //
+
41946 {0.397727996, 12.4394398}, //
+
41947 {0.39745599, 12.4406204}, //
+
41948 {0.397224993, 12.4419603}, //
+
41949 {0.397035986, 12.4434605}, //
+
41950 {0.396889001, 12.4451303}, //
+
41951 {0.396784008, 12.44697}, //
+
41952 {0.396721005, 12.4489803}, //
+
41953 {0.396699995, 12.4511499}, //
+
41954 {0.396699995, 12.4731998}, //
+
41955 {0.396741986, 12.4758596}, //
+
41956 {0.39686799, 12.47857}, //
+
41957 {0.397078007, 12.4813204}, //
+
41958 {0.397372007, 12.4841003}, //
+
41959 {0.397749007, 12.4869299}, //
+
41960 {0.398211002, 12.4898005}, //
+
41961 {0.398757011, 12.4927101}, //
+
41962 {0.399385989, 12.4956598}, //
+
41963 {0.400099993, 12.4986496}, //
+
41964 {0.401317, 12.5082798}, //
+
41965 {0.401946992, 12.51758}, //
+
41966 {0.401989013, 12.5265398}, //
+
41967 {0.401443005, 12.5351601}, //
+
41968 {0.40031001, 12.5434504}, //
+
41969 {0.398588985, 12.5514097}, //
+
41970 {0.396279991, 12.55902}, //
+
41971 {0.39338401, 12.5663004}, //
+
41972 {0.389899999, 12.5732498}, //
+
41973 {0.388440996, 12.5763702}, //
+
41974 {0.387064993, 12.57969}, //
+
41975 {0.38577199, 12.58323}, //
+
41976 {0.384561986, 12.5869703}, //
+
41977 {0.383433998, 12.59093}, //
+
41978 {0.382389009, 12.5950899}, //
+
41979 {0.38142699, 12.5994701}, //
+
41980 {0.380546987, 12.6040497}, //
+
41981 {0.379750013, 12.6088495}, //
+
41982 {0.378993988, 12.6137695}, //
+
41983 {0.378239006, 12.6187296}, //
+
41984 {0.37748301, 12.6237297}, //
+
41985 {0.376727998, 12.6287804}, //
+
41986 {0.375972003, 12.6338596}, //
+
41987 {0.375216991, 12.6389799}, //
+
41988 {0.374460995, 12.6441498}, //
+
41989 {0.373706013, 12.6493502}, //
+
41990 {0.372949988, 12.6546001}, //
+
41991 {0.37224701, 12.6596298}, //
+
41992 {0.371627003, 12.6641502}, //
+
41993 {0.371089011, 12.66817}, //
+
41994 {0.37063399, 12.67169}, //
+
41995 {0.370261997, 12.6747103}, //
+
41996 {0.369971991, 12.6772203}, //
+
41997 {0.369765013, 12.6792297}, //
+
41998 {0.369641006, 12.6807404}, //
+
41999 {0.369603008, 12.6816797}, //
+
42000 {0.371816009, 12.6786499}, //
+
42001 {0.374080986, 12.6753902}, //
+
42002 {0.376343995, 12.6719599}, //
+
42003 {0.378607005, 12.6683598}, //
+
42004 {0.380867988, 12.6646004}, //
+
42005 {0.383127987, 12.6606598}, //
+
42006 {0.38538599, 12.6565599}, //
+
42007 {0.387643993, 12.6522903}, //
+
42008 {0.389899999, 12.64785}, //
+
42009 {0.392082989, 12.6433296}, //
+
42010 {0.394098014, 12.6388102}, //
+
42011 {0.395943999, 12.6342802}, //
+
42012 {0.397623003, 12.6297598}, //
+
42013 {0.399134994, 12.6252403}, //
+
42014 {0.400478005, 12.6207199}, //
+
42015 {0.401652992, 12.61619}, //
+
42016 {0.402660012, 12.6116695}, //
+
42017 {0.403499991, 12.6071501}, //
+
42018 {0.404213995, 12.6024199}, //
+
42019 {0.404843003, 12.59727}, //
+
42020 {0.405389011, 12.5916996}, //
+
42021 {0.405851007, 12.5857096}, //
+
42022 {0.406228006, 12.5793104}, //
+
42023 {0.406522006, 12.5724802}, //
+
42024 {0.406731993, 12.5652399}, //
+
42025 {0.406857997, 12.55758}, //
+
42026 {0.406899989, 12.5495005}, //
+
42027 {0.406879008, 12.5412502}, //
+
42028 {0.406816006, 12.5330896}, //
+
42029 {0.406711012, 12.5250101}, //
+
42030 {0.406563997, 12.5170202}, //
+
42031 {0.406374991, 12.5091}, //
+
42032 {0.406143993, 12.5012798}, //
+
42033 {0.405871987, 12.4935303}, //
+
42034 {0.405557007, 12.4858799}, //
+
42035 {0.405200005, 12.4783001}, //
+
42036 {0.404801011, 12.4710999}, //
+
42037 {0.404359996, 12.46457}, //
+
42038 {0.403878003, 12.4587202}, //
+
42039 {0.403353006, 12.4535303}, //
+
42040 {0.402785987, 12.4490099}, //
+
42041 {0.402177989, 12.4451704}, //
+
42042 {0.401526988, 12.4419899}, //
+
42043 {0.400835007, 12.4394903}, //
+
42044 {0.400099993, 12.4376497}, //
+
42045 {0.400079012, 12.4369802}, //
+
42046 {0.40001601, 12.43647}, //
+
42047 {0.399910986, 12.4361296}, //
+
42048 {0.399764001, 12.4359598}, //
+
42049 });
+
42050 polys.push_back({
+
42051 {5.63851976, 12.1495705}, //
+
42052 {5.63841009, 12.1497803}, //
+
42053 {5.63825989, 12.1500702}, //
+
42054 {5.63783979, 12.1509104}, //
+
42055 {5.6375699, 12.1514597}, //
+
42056 {5.63689995, 12.1527996}, //
+
42057 {5.63651991, 12.1536198}, //
+
42058 {5.63613987, 12.1545601}, //
+
42059 {5.63576984, 12.1556301}, //
+
42060 {5.6353898, 12.1568203}, //
+
42061 {5.63500977, 12.1581402}, //
+
42062 {5.6346302, 12.1595802}, //
+
42063 {5.63426018, 12.1611404}, //
+
42064 {5.63388014, 12.1628304}, //
+
42065 {5.6335001, 12.16465}, //
+
42066 {5.6331501, 12.1665401}, //
+
42067 {5.63285017, 12.1684303}, //
+
42068 {5.6325798, 12.17031}, //
+
42069 {5.63235998, 12.1722002}, //
+
42070 {5.63218021, 12.1740799}, //
+
42071 {5.63203001, 12.1759596}, //
+
42072 {5.63192987, 12.1778402}, //
+
42073 {5.63186979, 12.1797199}, //
+
42074 {5.63184977, 12.1815996}, //
+
42075 {5.63184977, 12.2003002}, //
+
42076 {5.63188982, 12.2010498}, //
+
42077 {5.63202, 12.2017899}, //
+
42078 {5.63221979, 12.2025404}, //
+
42079 {5.63251019, 12.20329}, //
+
42080 {5.63288021, 12.2040396}, //
+
42081 {5.63333988, 12.2047901}, //
+
42082 {5.63388014, 12.2055397}, //
+
42083 {5.63450003, 12.2062998}, //
+
42084 {5.63520002, 12.2070503}, //
+
42085 {5.6359601, 12.2077799}, //
+
42086 {5.63671017, 12.2084799}, //
+
42087 {5.63746977, 12.2091303}, //
+
42088 {5.63821983, 12.2097397}, //
+
42089 {5.63897991, 12.2103004}, //
+
42090 {5.63972998, 12.2108297}, //
+
42091 {5.64049006, 12.2113104}, //
+
42092 {5.64124012, 12.21175}, //
+
42093 {5.6420002, 12.2121496}, //
+
42094 {5.64274979, 12.2125101}, //
+
42095 {5.64350986, 12.2128201}, //
+
42096 {5.64425993, 12.2130899}, //
+
42097 {5.64500999, 12.2133303}, //
+
42098 {5.64576006, 12.2135096}, //
+
42099 {5.64651012, 12.2136602}, //
+
42100 {5.64726019, 12.2137699}, //
+
42101 {5.64799976, 12.21383}, //
+
42102 {5.64874983, 12.21385}, //
+
42103 {5.65894985, 12.21385}, //
+
42104 {5.65969992, 12.2144098}, //
+
42105 {5.66102982, 12.2154102}, //
+
42106 {5.66303015, 12.2168999}, //
+
42107 {5.66427994, 12.2178402}, //
+
42108 {5.66569996, 12.2188997}, //
+
42109 {5.66723013, 12.2201204}, //
+
42110 {5.66879988, 12.2215004}, //
+
42111 {5.67042017, 12.2230501}, //
+
42112 {5.67207003, 12.2247696}, //
+
42113 {5.67375994, 12.2266502}, //
+
42114 {5.67549992, 12.2286997}, //
+
42115 {5.67727995, 12.2309198}, //
+
42116 {5.67909002, 12.2333002}, //
+
42117 {5.68095016, 12.2358503}, //
+
42118 {5.68287992, 12.2384501}, //
+
42119 {5.68488979, 12.2409697}, //
+
42120 {5.68698978, 12.2433996}, //
+
42121 {5.68916988, 12.2457504}, //
+
42122 {5.69143009, 12.2480097}, //
+
42123 {5.69376993, 12.2501802}, //
+
42124 {5.69619989, 12.2522697}, //
+
42125 {5.69870996, 12.2542801}, //
+
42126 {5.70130014, 12.2561998}, //
+
42127 {5.70387983, 12.25807}, //
+
42128 {5.70633984, 12.2598896}, //
+
42129 {5.70867014, 12.2616796}, //
+
42130 {5.71086979, 12.2634201}, //
+
42131 {5.71295023, 12.2651196}, //
+
42132 {5.71490002, 12.2667799}, //
+
42133 {5.71673012, 12.2683897}, //
+
42134 {5.71843004, 12.2699699}, //
+
42135 {5.71999979, 12.2714996}, //
+
42136 {5.72216988, 12.2737598}, //
+
42137 {5.72418022, 12.2760096}, //
+
42138 {5.72601986, 12.2782698}, //
+
42139 {5.72769022, 12.2805204}, //
+
42140 {5.72918987, 12.2827797}, //
+
42141 {5.73052979, 12.2850304}, //
+
42142 {5.73170996, 12.2872896}, //
+
42143 {5.73270988, 12.2895403}, //
+
42144 {5.73355007, 12.2917995}, //
+
42145 {5.73431015, 12.2941504}, //
+
42146 {5.73506021, 12.29667}, //
+
42147 {5.73581982, 12.2993498}, //
+
42148 {5.73656988, 12.3022003}, //
+
42149 {5.73732996, 12.3052197}, //
+
42150 {5.73808002, 12.3084002}, //
+
42151 {5.7388401, 12.3117504}, //
+
42152 {5.73959017, 12.3152704}, //
+
42153 {5.74034977, 12.3189497}, //
+
42154 {5.74113989, 12.3220501}, //
+
42155 {5.74201012, 12.3253098}, //
+
42156 {5.74296999, 12.3287401}, //
+
42157 {5.74400997, 12.3323402}, //
+
42158 {5.74514008, 12.3360996}, //
+
42159 {5.74634981, 12.3400402}, //
+
42160 {5.74765015, 12.3441401}, //
+
42161 {5.74903011, 12.3484097}, //
+
42162 {5.7505002, 12.35285}, //
+
42163 {5.75282001, 12.3590698}, //
+
42164 {5.75525999, 12.3656702}, //
+
42165 {5.75783014, 12.3726397}, //
+
42166 {5.76052999, 12.3799896}, //
+
42167 {5.76335001, 12.3877096}, //
+
42168 {5.7663002, 12.3958101}, //
+
42169 {5.76937008, 12.4042797}, //
+
42170 {5.77257013, 12.4131298}, //
+
42171 {5.77589989, 12.4223499}, //
+
42172 {5.77928019, 12.4315796}, //
+
42173 {5.78260994, 12.4404402}, //
+
42174 {5.78591013, 12.4489202}, //
+
42175 {5.78915024, 12.4570303}, //
+
42176 {5.79235983, 12.4647503}, //
+
42177 {5.79551983, 12.4721098}, //
+
42178 {5.79863977, 12.4790802}, //
+
42179 {5.80172014, 12.4856796}, //
+
42180 {5.80474997, 12.4919004}, //
+
42181 {5.80618, 12.4971304}, //
+
42182 {5.8074398, 12.5022697}, //
+
42183 {5.80852985, 12.5073299}, //
+
42184 {5.80945015, 12.5122995}, //
+
42185 {5.81021023, 12.5172005}, //
+
42186 {5.81079006, 12.5220098}, //
+
42187 {5.81121016, 12.5267401}, //
+
42188 {5.81147003, 12.5313902}, //
+
42189 {5.81155014, 12.5359497}, //
+
42190 {5.81091976, 12.5405998}, //
+
42191 {5.8105402, 12.5454998}, //
+
42192 {5.81041002, 12.5506401}, //
+
42193 {5.81053019, 12.5560398}, //
+
42194 {5.81090021, 12.5616903}, //
+
42195 {5.81153011, 12.5675898}, //
+
42196 {5.81239986, 12.5737495}, //
+
42197 {5.81352997, 12.5801497}, //
+
42198 {5.81489992, 12.5867996}, //
+
42199 {5.81719017, 12.5942097}, //
+
42200 {5.81950998, 12.6013699}, //
+
42201 {5.82187986, 12.6082697}, //
+
42202 {5.8242898, 12.6149302}, //
+
42203 {5.82673979, 12.6213303}, //
+
42204 {5.82922983, 12.62749}, //
+
42205 {5.83175993, 12.6333904}, //
+
42206 {5.8343401, 12.6390495}, //
+
42207 {5.83694983, 12.6444502}, //
+
42208 {5.83944988, 12.6494303}, //
+
42209 {5.84165001, 12.6538296}, //
+
42210 {5.84356022, 12.6576405}, //
+
42211 {5.84518003, 12.6608696}, //
+
42212 {5.84649992, 12.6635103}, //
+
42213 {5.84825993, 12.6670303}, //
+
42214 {5.84870005, 12.6679096}, //
+
42215 {5.84884977, 12.6681995}, //
+
42216 {5.85220003, 12.6376495}, //
+
42217 {5.85211992, 12.6358995}, //
+
42218 {5.85187006, 12.6336403}, //
+
42219 {5.85144997, 12.6308804}, //
+
42220 {5.85087013, 12.6276197}, //
+
42221 {5.85012007, 12.6238499}, //
+
42222 {5.84919977, 12.6195803}, //
+
42223 {5.84812021, 12.61481}, //
+
42224 {5.84686995, 12.6095304}, //
+
42225 {5.84544992, 12.6037502}, //
+
42226 {5.84255981, 12.5953798}, //
+
42227 {5.83993006, 12.5868397}, //
+
42228 {5.83754015, 12.5781298}, //
+
42229 {5.83541012, 12.5692596}, //
+
42230 {5.83352995, 12.5602198}, //
+
42231 {5.83189011, 12.5510197}, //
+
42232 {5.83051014, 12.5416403}, //
+
42233 {5.82938004, 12.5321102}, //
+
42234 {5.82849979, 12.5223999}, //
+
42235 {5.82606983, 12.5089197}, //
+
42236 {5.82329988, 12.4955997}, //
+
42237 {5.82019997, 12.48246}, //
+
42238 {5.81677008, 12.4694796}, //
+
42239 {5.8130002, 12.4566698}, //
+
42240 {5.80889988, 12.4440203}, //
+
42241 {5.80447006, 12.43155}, //
+
42242 {5.79969978, 12.41924}, //
+
42243 {5.79460001, 12.4070997}, //
+
42244 {5.79312992, 12.4033804}, //
+
42245 {5.79174995, 12.3997297}, //
+
42246 {5.79044008, 12.3961802}, //
+
42247 {5.78922987, 12.3927002}, //
+
42248 {5.78809023, 12.3893204}, //
+
42249 {5.78704023, 12.3860102}, //
+
42250 {5.78607988, 12.3827896}, //
+
42251 {5.78520012, 12.3796501}, //
+
42252 {5.78439999, 12.3766003}, //
+
42253 {5.78142977, 12.3711996}, //
+
42254 {5.77854013, 12.3655396}, //
+
42255 {5.77574015, 12.3596401}, //
+
42256 {5.77301979, 12.3534803}, //
+
42257 {5.77038002, 12.3470802}, //
+
42258 {5.76781988, 12.3404198}, //
+
42259 {5.76534986, 12.3335199}, //
+
42260 {5.76295996, 12.3263597}, //
+
42261 {5.76065016, 12.3189497}, //
+
42262 {5.75680017, 12.3034201}, //
+
42263 {5.75277996, 12.2884798}, //
+
42264 {5.74860001, 12.2741203}, //
+
42265 {5.74424982, 12.2603502}, //
+
42266 {5.73972988, 12.2471704}, //
+
42267 {5.7350502, 12.2345695}, //
+
42268 {5.73019981, 12.2225599}, //
+
42269 {5.72518015, 12.2111397}, //
+
42270 {5.71999979, 12.2003002}, //
+
42271 {5.7169199, 12.19662}, //
+
42272 {5.71370983, 12.1931}, //
+
42273 {5.71037006, 12.1897497}, //
+
42274 {5.70691013, 12.1865702}, //
+
42275 {5.70333004, 12.1835499}, //
+
42276 {5.69961977, 12.1807003}, //
+
42277 {5.69578981, 12.1780195}, //
+
42278 {5.69183016, 12.1754999}, //
+
42279 {5.68774986, 12.1731501}, //
+
42280 {5.68368006, 12.1709805}, //
+
42281 {5.67972994, 12.1689701}, //
+
42282 {5.67591, 12.1671305}, //
+
42283 {5.6722002, 12.1654596}, //
+
42284 {5.66863012, 12.1639605}, //
+
42285 {5.66517019, 12.1626196}, //
+
42286 {5.66183996, 12.1614399}, //
+
42287 {5.65862989, 12.1604404}, //
+
42288 {5.65555, 12.1596003}, //
+
42289 {5.65333986, 12.1581297}, //
+
42290 {5.65119982, 12.1567497}, //
+
42291 {5.64915991, 12.1554403}, //
+
42292 {5.64719009, 12.1542301}, //
+
42293 {5.64530993, 12.1530895}, //
+
42294 {5.64350986, 12.1520395}, //
+
42295 {5.64178991, 12.1510801}, //
+
42296 {5.64015007, 12.1501999}, //
+
42297 {5.63859987, 12.1493998}, //
+
42298 });
+
42299 polys.push_back({
+
42300 {3.62836003, 12.5423698}, //
+
42301 {3.62638998, 12.5430803}, //
+
42302 {3.62451005, 12.5441999}, //
+
42303 {3.62270999, 12.5457497}, //
+
42304 {3.62099004, 12.5477104}, //
+
42305 {3.61934996, 12.5501003}, //
+
42306 {3.6178, 12.5529003}, //
+
42307 {3.61632991, 12.5560398}, //
+
42308 {3.61494994, 12.5594301}, //
+
42309 {3.61365008, 12.5630703}, //
+
42310 {3.61244011, 12.5669603}, //
+
42311 {3.61131001, 12.5711002}, //
+
42312 {3.61027002, 12.5754995}, //
+
42313 {3.60930991, 12.5801497}, //
+
42314 {3.60843992, 12.5850496}, //
+
42315 {3.60765004, 12.5902004}, //
+
42316 {3.60615993, 12.5938797}, //
+
42317 {3.6047101, 12.5973997}, //
+
42318 {3.60331011, 12.6007404}, //
+
42319 {3.60193992, 12.60392}, //
+
42320 {3.60062003, 12.6069298}, //
+
42321 {3.59933996, 12.6097803}, //
+
42322 {3.59809995, 12.6124496}, //
+
42323 {3.59689999, 12.6149597}, //
+
42324 {3.59575009, 12.6173}, //
+
42325 {3.59459996, 12.6194401}, //
+
42326 {3.5934, 12.6213303}, //
+
42327 {3.59217, 12.6229696}, //
+
42328 {3.59088993, 12.6243496}, //
+
42329 {3.58957005, 12.6254902}, //
+
42330 {3.58821988, 12.6263704}, //
+
42331 {3.58681989, 12.6269999}, //
+
42332 {3.58538008, 12.6273699}, //
+
42333 {3.58389997, 12.6274996}, //
+
42334 {3.58370996, 12.6282301}, //
+
42335 {3.58314991, 12.6289301}, //
+
42336 {3.58221006, 12.6295795}, //
+
42337 {3.58088994, 12.6301899}, //
+
42338 {3.57919002, 12.6307497}, //
+
42339 {3.57712007, 12.6312799}, //
+
42340 {3.57467008, 12.6317596}, //
+
42341 {3.57185006, 12.6322002}, //
+
42342 {3.56865001, 12.6325998}, //
+
42343 {3.56510997, 12.6330004}, //
+
42344 {3.56128001, 12.63344}, //
+
42345 {3.5571599, 12.6339197}, //
+
42346 {3.5527401, 12.6344404}, //
+
42347 {3.5480299, 12.6350002}, //
+
42348 {3.54303002, 12.6356001}, //
+
42349 {3.53772998, 12.63624}, //
+
42350 {3.53214002, 12.6369305}, //
+
42351 {3.52624989, 12.6376495}, //
+
42352 {3.51944995, 12.6384096}, //
+
42353 {3.51260996, 12.6391602}, //
+
42354 {3.5057199, 12.6399202}, //
+
42355 {3.49879003, 12.6406698}, //
+
42356 {3.4918201, 12.6414299}, //
+
42357 {3.48481011, 12.6421804}, //
+
42358 {3.47775006, 12.6429396}, //
+
42359 {3.47064996, 12.6436901}, //
+
42360 {3.46350002, 12.6444502}, //
+
42361 {3.45656991, 12.6452103}, //
+
42362 {3.45010996, 12.6459599}, //
+
42363 {3.44410992, 12.6467199}, //
+
42364 {3.43856001, 12.6474705}, //
+
42365 {3.43348002, 12.6482296}, //
+
42366 {3.42885995, 12.6489801}, //
+
42367 {3.42469001, 12.6497402}, //
+
42368 {3.42098999, 12.6504898}, //
+
42369 {3.41774988, 12.6512499}, //
+
42370 {3.41423011, 12.6526699}, //
+
42371 {3.41122007, 12.6539202}, //
+
42372 {3.40871, 12.6549997}, //
+
42373 {3.4066999, 12.65592}, //
+
42374 {3.4052, 12.6566696}, //
+
42375 {3.40419006, 12.6572504}, //
+
42376 {3.4036901, 12.65767}, //
+
42377 {3.40370011, 12.6579199}, //
+
42378 {3.40420008, 12.658}, //
+
42379 {3.40508008, 12.6579599}, //
+
42380 {3.40620995, 12.6578302}, //
+
42381 {3.40758991, 12.65763}, //
+
42382 {3.40922999, 12.65734}, //
+
42383 {3.41110992, 12.65697}, //
+
42384 {3.41323996, 12.6565104}, //
+
42385 {3.4156301, 12.6559696}, //
+
42386 {3.4182601, 12.6553497}, //
+
42387 {3.42114997, 12.6546497}, //
+
42388 {3.42420006, 12.6538897}, //
+
42389 {3.42734003, 12.6531401}, //
+
42390 {3.43056011, 12.65238}, //
+
42391 {3.43387008, 12.6516304}, //
+
42392 {3.4372499, 12.6508703}, //
+
42393 {3.44073009, 12.6501198}, //
+
42394 {3.44427991, 12.6493597}, //
+
42395 {3.4479301, 12.6486101}, //
+
42396 {3.4516499, 12.64785}, //
+
42397 {3.45922995, 12.64709}, //
+
42398 {3.46688008, 12.6463404}, //
+
42399 {3.47463012, 12.6455803}, //
+
42400 {3.48245001, 12.6448298}, //
+
42401 {3.49037004, 12.6440697}, //
+
42402 {3.49835992, 12.6433201}, //
+
42403 {3.50643992, 12.64256}, //
+
42404 {3.51460004, 12.6418104}, //
+
42405 {3.52285004, 12.6410503}, //
+
42406 {3.53022003, 12.6410103}, //
+
42407 {3.53725004, 12.6408796}, //
+
42408 {3.54394007, 12.6406698}, //
+
42409 {3.5503099, 12.6403799}, //
+
42410 {3.55632997, 12.6400003}, //
+
42411 {3.56203008, 12.6395397}, //
+
42412 {3.56738997, 12.6389904}, //
+
42413 {3.57241011, 12.63836}, //
+
42414 {3.57710004, 12.6376495}, //
+
42415 {3.58219004, 12.6367798}, //
+
42416 {3.5869, 12.6356497}, //
+
42417 {3.59122992, 12.6342802}, //
+
42418 {3.59519005, 12.6326504}, //
+
42419 {3.5987699, 12.6307602}, //
+
42420 {3.60196996, 12.6286297}, //
+
42421 {3.60478997, 12.6262398}, //
+
42422 {3.60722995, 12.6236}, //
+
42423 {3.6092999, 12.6206999}, //
+
42424 {3.61107993, 12.6176901}, //
+
42425 {3.61265993, 12.6146803}, //
+
42426 {3.61402011, 12.6116695}, //
+
42427 {3.61518002, 12.6086597}, //
+
42428 {3.6161201, 12.6056404}, //
+
42429 {3.61685991, 12.6026297}, //
+
42430 {3.6173799, 12.5996199}, //
+
42431 {3.6177001, 12.5966101}, //
+
42432 {3.6178, 12.5936003}, //
+
42433 {3.61713004, 12.5913095}, //
+
42434 {3.61662006, 12.5889902}, //
+
42435 {3.61629009, 12.5866203}, //
+
42436 {3.6161201, 12.5842104}, //
+
42437 {3.6161201, 12.5817604}, //
+
42438 {3.61629009, 12.5792704}, //
+
42439 {3.61662006, 12.5767403}, //
+
42440 {3.61713004, 12.5741596}, //
+
42441 {3.6178, 12.5715504}, //
+
42442 {3.61856008, 12.5690203}, //
+
42443 {3.6193099, 12.5667}, //
+
42444 {3.62006998, 12.5645905}, //
+
42445 {3.62082005, 12.5626898}, //
+
42446 {3.62157989, 12.5609903}, //
+
42447 {3.62232995, 12.5595102}, //
+
42448 {3.62309003, 12.5582304}, //
+
42449 {3.62384009, 12.5571604}, //
+
42450 {3.62459993, 12.5563002}, //
+
42451 {3.62965012, 12.5563002}, //
+
42452 {3.6307199, 12.5563402}, //
+
42453 {3.63165998, 12.5564699}, //
+
42454 {3.63247991, 12.5566797}, //
+
42455 {3.6331799, 12.5569696}, //
+
42456 {3.63373995, 12.5573502}, //
+
42457 {3.63418007, 12.5578098}, //
+
42458 {3.63450003, 12.5583601}, //
+
42459 {3.63469005, 12.5589895}, //
+
42460 {3.63474989, 12.5597}, //
+
42461 {3.63555002, 12.5597401}, //
+
42462 {3.63643003, 12.5598698}, //
+
42463 {3.6373899, 12.5600796}, //
+
42464 {3.63843012, 12.5603704}, //
+
42465 {3.63955998, 12.56075}, //
+
42466 {3.64076996, 12.5612097}, //
+
42467 {3.64207006, 12.5617599}, //
+
42468 {3.64344001, 12.5623903}, //
+
42469 {3.64490008, 12.5630999}, //
+
42470 {3.64657998, 12.5631399}, //
+
42471 {3.64859009, 12.5632696}, //
+
42472 {3.65093994, 12.5634699}, //
+
42473 {3.65362, 12.5637598}, //
+
42474 {3.65664005, 12.5641298}, //
+
42475 {3.65999007, 12.5645905}, //
+
42476 {3.66367006, 12.5651302}, //
+
42477 {3.66770005, 12.5657501}, //
+
42478 {3.67205, 12.5664501}, //
+
42479 {3.67660999, 12.5672302}, //
+
42480 {3.68126011, 12.5680504}, //
+
42481 {3.6859901, 12.5689096}, //
+
42482 {3.69079995, 12.5698099}, //
+
42483 {3.69569993, 12.5707502}, //
+
42484 {3.70067, 12.5717402}, //
+
42485 {3.70572996, 12.5727701}, //
+
42486 {3.71087003, 12.5738401}, //
+
42487 {3.71609998, 12.5749502}, //
+
42488 {3.72121, 12.5760202}, //
+
42489 {3.72599006, 12.5769596}, //
+
42490 {3.73042989, 12.5777798}, //
+
42491 {3.73452997, 12.5784798}, //
+
42492 {3.7383101, 12.5790396}, //
+
42493 {3.74173999, 12.5794802}, //
+
42494 {3.74484992, 12.5797997}, //
+
42495 {3.74762011, 12.5799904}, //
+
42496 {3.75005007, 12.5800505}, //
+
42497 {3.77040005, 12.5800505}, //
+
42498 {3.75005007, 12.5495005}, //
+
42499 {3.75003004, 12.55023}, //
+
42500 {3.74996996, 12.55093}, //
+
42501 {3.74986005, 12.5515804}, //
+
42502 {3.74971008, 12.5521898}, //
+
42503 {3.74953008, 12.5527496}, //
+
42504 {3.74928999, 12.5532799}, //
+
42505 {3.7490201, 12.5537596}, //
+
42506 {3.74870992, 12.5542002}, //
+
42507 {3.74834991, 12.5545998}, //
+
42508 {3.74324989, 12.5597}, //
+
42509 {3.74249005, 12.5604496}, //
+
42510 {3.74173999, 12.5612097}, //
+
42511 {3.74097991, 12.5619602}, //
+
42512 {3.74023008, 12.5627098}, //
+
42513 {3.73947001, 12.5634604}, //
+
42514 {3.73871994, 12.5642099}, //
+
42515 {3.7379601, 12.5649595}, //
+
42516 {3.73721004, 12.5656996}, //
+
42517 {3.73644996, 12.5664501}, //
+
42518 {3.70254993, 12.5664501}, //
+
42519 {3.70026994, 12.56639}, //
+
42520 {3.69794989, 12.5662003}, //
+
42521 {3.69559002, 12.5658798}, //
+
42522 {3.69318008, 12.5654402}, //
+
42523 {3.69073009, 12.5648804}, //
+
42524 {3.68824005, 12.5641804}, //
+
42525 {3.68569994, 12.5633602}, //
+
42526 {3.68312001, 12.5624199}, //
+
42527 {3.68050003, 12.5613499}, //
+
42528 {3.67789006, 12.5602102}, //
+
42529 {3.67531991, 12.55902}, //
+
42530 {3.67279005, 12.5577898}, //
+
42531 {3.67030001, 12.5565205}, //
+
42532 {3.66786003, 12.5551996}, //
+
42533 {3.66546011, 12.5538397}, //
+
42534 {3.6631, 12.5524397}, //
+
42535 {3.66077995, 12.5509901}, //
+
42536 {3.65849996, 12.5495005}, //
+
42537 {3.65551996, 12.5480804}, //
+
42538 {3.65263009, 12.5468302}, //
+
42539 {3.64982009, 12.5457497}, //
+
42540 {3.64708996, 12.5448303}, //
+
42541 {3.64444995, 12.5440798}, //
+
42542 {3.64190006, 12.5434999}, //
+
42543 {3.63943005, 12.5430803}, //
+
42544 {3.63704991, 12.5428305}, //
+
42545 {3.63474989, 12.5427504}, //
+
42546 {3.63253999, 12.5422001}, //
+
42547 {3.63039994, 12.5420799}, //
+
42548 });
+
42549 polys.push_back({
+
42550 {5.87651014, 12.2503004}, //
+
42551 {5.87400007, 12.2534304}, //
+
42552 {5.87181997, 12.2571602}, //
+
42553 {5.86997986, 12.2614603}, //
+
42554 {5.86848021, 12.2663603}, //
+
42555 {5.86731005, 12.2718401}, //
+
42556 {5.86646986, 12.2779102}, //
+
42557 {5.86597013, 12.2845602}, //
+
42558 {5.8657999, 12.2917995}, //
+
42559 {5.86590004, 12.2994699}, //
+
42560 {5.86622, 12.3073902}, //
+
42561 {5.86674023, 12.3155603}, //
+
42562 {5.86746979, 12.3239698}, //
+
42563 {5.86841011, 12.3326397}, //
+
42564 {5.86955976, 12.3415604}, //
+
42565 {5.87091017, 12.3507204}, //
+
42566 {5.87247992, 12.3601398}, //
+
42567 {5.87424994, 12.3697996}, //
+
42568 {5.87612009, 12.3793097}, //
+
42569 {5.87794018, 12.3882303}, //
+
42570 {5.87972021, 12.3965597}, //
+
42571 {5.88146019, 12.4043102}, //
+
42572 {5.8831501, 12.4114704}, //
+
42573 {5.88480997, 12.4180403}, //
+
42574 {5.88641024, 12.4240303}, //
+
42575 {5.88797998, 12.42943}, //
+
42576 {5.88950014, 12.4342499}, //
+
42577 {5.89317989, 12.4429102}, //
+
42578 {5.89669991, 12.4508104}, //
+
42579 {5.90005016, 12.4579697}, //
+
42580 {5.90323019, 12.4643698}, //
+
42581 {5.90625, 12.4700203}, //
+
42582 {5.90910006, 12.4749203}, //
+
42583 {5.91177988, 12.4790602}, //
+
42584 {5.91429996, 12.48246}, //
+
42585 {5.91664982, 12.4850998}, //
+
42586 {5.91735983, 12.4865704}, //
+
42587 {5.91799021, 12.4879503}, //
+
42588 {5.91854, 12.4892502}, //
+
42589 {5.91900015, 12.4904604}, //
+
42590 {5.91938019, 12.4915895}, //
+
42591 {5.9196701, 12.49263}, //
+
42592 {5.91987991, 12.4935904}, //
+
42593 {5.92001009, 12.4944601}, //
+
42594 {5.92005014, 12.4952497}, //
+
42595 {5.92075014, 12.4967203}, //
+
42596 {5.92137003, 12.4981003}, //
+
42597 {5.92190981, 12.4994097}, //
+
42598 {5.92236996, 12.5006199}, //
+
42599 {5.92273998, 12.5017595}, //
+
42600 {5.9230299, 12.5028095}, //
+
42601 {5.92323017, 12.5037699}, //
+
42602 {5.92335987, 12.5046501}, //
+
42603 {5.92339993, 12.5054502}, //
+
42604 {5.92343998, 12.5062304}, //
+
42605 {5.92357016, 12.50704}, //
+
42606 {5.92377996, 12.5079002}, //
+
42607 {5.92406988, 12.5087996}, //
+
42608 {5.92444992, 12.5097399}, //
+
42609 {5.92491007, 12.5107203}, //
+
42610 {5.92545986, 12.5117397}, //
+
42611 {5.92608976, 12.5128002}, //
+
42612 {5.92679977, 12.5138998}, //
+
42613 {5.92755985, 12.5150099}, //
+
42614 {5.92830992, 12.5160799}, //
+
42615 {5.92907, 12.5171099}, //
+
42616 {5.92982006, 12.5180998}, //
+
42617 {5.93058014, 12.5190401}, //
+
42618 {5.9313302, 12.5199404}, //
+
42619 {5.93208981, 12.5207996}, //
+
42620 {5.93283987, 12.5216198}, //
+
42621 {5.93359995, 12.5223999}, //
+
42622 {5.93521976, 12.5232201}, //
+
42623 {5.93703985, 12.5241604}, //
+
42624 {5.93907022, 12.5252304}, //
+
42625 {5.94130993, 12.5264196}, //
+
42626 {5.94375992, 12.5277395}, //
+
42627 {5.94642019, 12.5291796}, //
+
42628 {5.9492898, 12.5307398}, //
+
42629 {5.95237017, 12.5324297}, //
+
42630 {5.95564985, 12.5342503}, //
+
42631 {5.95898008, 12.5361795}, //
+
42632 {5.96218014, 12.5381899}, //
+
42633 {5.96525002, 12.5402899}, //
+
42634 {5.96820021, 12.54247}, //
+
42635 {5.97102022, 12.5447302}, //
+
42636 {5.97372007, 12.5470695}, //
+
42637 {5.97629023, 12.5495005}, //
+
42638 {5.9787302, 12.5520096}, //
+
42639 {5.98105001, 12.5545998}, //
+
42640 {5.98323011, 12.5571699}, //
+
42641 {5.98525, 12.5596199}, //
+
42642 {5.98709011, 12.5619402}, //
+
42643 {5.98877001, 12.5641403}, //
+
42644 {5.99028015, 12.5662098}, //
+
42645 {5.99163008, 12.5681601}, //
+
42646 {5.99280024, 12.5699797}, //
+
42647 {5.99381018, 12.5716801}, //
+
42648 {5.99464989, 12.5732498}, //
+
42649 {5.99536991, 12.5747404}, //
+
42650 {5.99605989, 12.57619}, //
+
42651 {5.99669981, 12.57759}, //
+
42652 {5.99730015, 12.5789499}, //
+
42653 {5.99785995, 12.5802698}, //
+
42654 {5.99838018, 12.5815401}, //
+
42655 {5.99885988, 12.5827703}, //
+
42656 {5.9993, 12.5839596}, //
+
42657 {5.99970007, 12.5851002}, //
+
42658 {6.00006008, 12.5862103}, //
+
42659 {6.00037003, 12.5872803}, //
+
42660 {6.00063992, 12.5883102}, //
+
42661 {6.00087976, 12.5893002}, //
+
42662 {6.00106001, 12.5902395}, //
+
42663 {6.00121021, 12.5911398}, //
+
42664 {6.00131989, 12.592}, //
+
42665 {6.00137997, 12.5928202}, //
+
42666 {6.00139999, 12.5936003}, //
+
42667 {6.00137997, 12.5943098}, //
+
42668 {6.00131989, 12.5949402}, //
+
42669 {6.00121021, 12.5954905}, //
+
42670 {6.00106001, 12.5959501}, //
+
42671 {6.00087976, 12.5963297}, //
+
42672 {6.00063992, 12.5966196}, //
+
42673 {6.00037003, 12.5968304}, //
+
42674 {6.00006008, 12.5969601}, //
+
42675 {5.99970007, 12.5970001}, //
+
42676 {5.99921989, 12.59692}, //
+
42677 {5.99852991, 12.5966597}, //
+
42678 {5.99763012, 12.59624}, //
+
42679 {5.99652004, 12.5956602}, //
+
42680 {5.99520016, 12.5949001}, //
+
42681 {5.99368, 12.5939798}, //
+
42682 {5.99194002, 12.5928898}, //
+
42683 {5.98999977, 12.59163}, //
+
42684 {5.98785019, 12.5902004}, //
+
42685 {5.98400021, 12.5879602}, //
+
42686 {5.97997999, 12.5857697}, //
+
42687 {5.97579002, 12.5836201}, //
+
42688 {5.97143984, 12.5815001}, //
+
42689 {5.9669199, 12.5794296}, //
+
42690 {5.96223021, 12.5774002}, //
+
42691 {5.9573698, 12.5754099}, //
+
42692 {5.95234013, 12.5734596}, //
+
42693 {5.94715023, 12.5715504}, //
+
42694 {5.94190979, 12.5698204}, //
+
42695 {5.93675995, 12.5683804}, //
+
42696 {5.93170023, 12.5672302}, //
+
42697 {5.92672014, 12.56637}, //
+
42698 {5.92183018, 12.5657997}, //
+
42699 {5.91701984, 12.5655298}, //
+
42700 {5.9122901, 12.5655403}, //
+
42701 {5.90764999, 12.5658503}, //
+
42702 {5.90310001, 12.5664501}, //
+
42703 {5.90010023, 12.5673304}, //
+
42704 {5.89714003, 12.5684605}, //
+
42705 {5.89422989, 12.5698404}, //
+
42706 {5.89135981, 12.5714798}, //
+
42707 {5.88852978, 12.5733604}, //
+
42708 {5.8857398, 12.57549}, //
+
42709 {5.8829999, 12.5778799}, //
+
42710 {5.88030005, 12.5805101}, //
+
42711 {5.87764978, 12.5833998}, //
+
42712 {5.87516022, 12.5864401}, //
+
42713 {5.8729701, 12.58953}, //
+
42714 {5.87106991, 12.5926504}, //
+
42715 {5.86946011, 12.5958099}, //
+
42716 {5.86814022, 12.59902}, //
+
42717 {5.86711979, 12.6022701}, //
+
42718 {5.86639023, 12.6055498}, //
+
42719 {5.86595011, 12.60888}, //
+
42720 {5.8657999, 12.6122503}, //
+
42721 {5.86601019, 12.61553}, //
+
42722 {5.86664009, 12.6186104}, //
+
42723 {5.86768007, 12.62148}, //
+
42724 {5.86915016, 12.6241398}, //
+
42725 {5.87102985, 12.6265898}, //
+
42726 {5.87333012, 12.62883}, //
+
42727 {5.87605, 12.6308603}, //
+
42728 {5.87918997, 12.6326799}, //
+
42729 {5.88275003, 12.6343002}, //
+
42730 {5.88279009, 12.63346}, //
+
42731 {5.88291979, 12.6324501}, //
+
42732 {5.88312006, 12.6312799}, //
+
42733 {5.88340998, 12.6299295}, //
+
42734 {5.88378, 12.6284199}, //
+
42735 {5.88424015, 12.6267405}, //
+
42736 {5.88477993, 12.6248999}, //
+
42737 {5.88539982, 12.62288}, //
+
42738 {5.88609982, 12.6206999}, //
+
42739 {5.88687992, 12.6184902}, //
+
42740 {5.88770008, 12.6163502}, //
+
42741 {5.88855982, 12.6143103}, //
+
42742 {5.88946009, 12.61234}, //
+
42743 {5.89039993, 12.6104603}, //
+
42744 {5.89138985, 12.6086597}, //
+
42745 {5.89241982, 12.6069403}, //
+
42746 {5.89348984, 12.6052999}, //
+
42747 {5.89459991, 12.6037502}, //
+
42748 {5.89575005, 12.6022902}, //
+
42749 {5.89694977, 12.6009197}, //
+
42750 {5.89818001, 12.5996199}, //
+
42751 {5.89945984, 12.5984097}, //
+
42752 {5.9007802, 12.5972795}, //
+
42753 {5.90213013, 12.59624}, //
+
42754 {5.90353012, 12.5952797}, //
+
42755 {5.90497017, 12.5944004}, //
+
42756 {5.90644979, 12.5936003}, //
+
42757 {5.9087801, 12.5936403}, //
+
42758 {5.91123009, 12.59377}, //
+
42759 {5.91380978, 12.5939798}, //
+
42760 {5.91651011, 12.5942698}, //
+
42761 {5.91934013, 12.5946503}, //
+
42762 {5.92228985, 12.5951099}, //
+
42763 {5.92537022, 12.5956602}, //
+
42764 {5.92856979, 12.5962896}, //
+
42765 {5.93190002, 12.5970001}, //
+
42766 {5.93522978, 12.5978003}, //
+
42767 {5.93842983, 12.5986795}, //
+
42768 {5.9415102, 12.5996399}, //
+
42769 {5.94445992, 12.6006804}, //
+
42770 {5.94728994, 12.6018105}, //
+
42771 {5.9499898, 12.6030197}, //
+
42772 {5.95256996, 12.6043196}, //
+
42773 {5.95501995, 12.60569}, //
+
42774 {5.95734978, 12.6071501}, //
+
42775 {5.9581399, 12.6079102}, //
+
42776 {5.95901012, 12.6086597}, //
+
42777 {5.95997, 12.6094198}, //
+
42778 {5.96100998, 12.6101704}, //
+
42779 {5.96214008, 12.6109304}, //
+
42780 {5.96334982, 12.61168}, //
+
42781 {5.96465015, 12.6124401}, //
+
42782 {5.96603012, 12.6131897}, //
+
42783 {5.96750021, 12.6139498}, //
+
42784 {5.96904993, 12.6154499}, //
+
42785 {5.97068977, 12.61695}, //
+
42786 {5.9724102, 12.6184597}, //
+
42787 {5.97420979, 12.6199598}, //
+
42788 {5.97608995, 12.6214705}, //
+
42789 {5.97805977, 12.6229696}, //
+
42790 {5.98010015, 12.6244802}, //
+
42791 {5.9822402, 12.6259899}, //
+
42792 {5.98444986, 12.6274996}, //
+
42793 {5.98672009, 12.6289301}, //
+
42794 {5.98897982, 12.6301899}, //
+
42795 {5.99124002, 12.6312799}, //
+
42796 {5.99350977, 12.6322002}, //
+
42797 {5.99576998, 12.6329603}, //
+
42798 {5.99803019, 12.6335402}, //
+
42799 {6.00028992, 12.6339598}, //
+
42800 {6.00254011, 12.6342201}, //
+
42801 {6.00479984, 12.6343002}, //
+
42802 {6.00773001, 12.63346}, //
+
42803 {6.01048994, 12.6324501}, //
+
42804 {6.01308012, 12.6312799}, //
+
42805 {6.01550007, 12.6299295}, //
+
42806 {6.0177598, 12.6284199}, //
+
42807 {6.01983976, 12.6267405}, //
+
42808 {6.02175999, 12.6248999}, //
+
42809 {6.02351999, 12.62288}, //
+
42810 {6.02510023, 12.6206999}, //
+
42811 {6.02649021, 12.6184902}, //
+
42812 {6.02761984, 12.6163502}, //
+
42813 {6.02851009, 12.6143103}, //
+
42814 {6.02914, 12.61234}, //
+
42815 {6.02952003, 12.6104603}, //
+
42816 {6.02966022, 12.6086597}, //
+
42817 {6.02954006, 12.6069403}, //
+
42818 {6.02917004, 12.6052999}, //
+
42819 {6.02855015, 12.6037502}, //
+
42820 {6.02855015, 12.5970001}, //
+
42821 {6.02777004, 12.5946903}, //
+
42822 {6.02694988, 12.5923004}, //
+
42823 {6.02609015, 12.5898304}, //
+
42824 {6.02518988, 12.5872698}, //
+
42825 {6.02425003, 12.58463}, //
+
42826 {6.02326012, 12.5819101}, //
+
42827 {6.02223015, 12.5791101}, //
+
42828 {6.02116013, 12.5762196}, //
+
42829 {6.02005005, 12.5732498}, //
+
42830 {6.01889992, 12.5703201}, //
+
42831 {6.0177002, 12.5675602}, //
+
42832 {6.01646996, 12.56497}, //
+
42833 {6.01519012, 12.5625401}, //
+
42834 {6.01386976, 12.5602798}, //
+
42835 {6.01251984, 12.5581799}, //
+
42836 {6.01111984, 12.5562601}, //
+
42837 {6.00967979, 12.5544901}, //
+
42838 {6.00820017, 12.5529003}, //
+
42839 {6.00598001, 12.5513401}, //
+
42840 {6.00382996, 12.5496502}, //
+
42841 {6.00178003, 12.5478296}, //
+
42842 {5.99980021, 12.5458803}, //
+
42843 {5.99792004, 12.5438099}, //
+
42844 {5.99610996, 12.5416098}, //
+
42845 {5.99439001, 12.5392799}, //
+
42846 {5.99275017, 12.5368299}, //
+
42847 {5.99119997, 12.5342503}, //
+
42848 {5.98977995, 12.5317202}, //
+
42849 {5.98853016, 12.5293999}, //
+
42850 {5.98745012, 12.5272903}, //
+
42851 {5.98652983, 12.5253897}, //
+
42852 {5.98577976, 12.5236902}, //
+
42853 {5.98519993, 12.5222101}, //
+
42854 {5.98477983, 12.5209303}, //
+
42855 {5.98452997, 12.5198603}, //
+
42856 {5.98444986, 12.5190001}, //
+
42857 {5.98440981, 12.5182695}, //
+
42858 {5.98428011, 12.5175695}, //
+
42859 {5.98406982, 12.5169201}, //
+
42860 {5.98377991, 12.5163097}, //
+
42861 {5.98339987, 12.5157499}, //
+
42862 {5.9829402, 12.5152197}, //
+
42863 {5.98238993, 12.51474}, //
+
42864 {5.98176003, 12.5143003}, //
+
42865 {5.98105001, 12.5138998}, //
+
42866 {5.98029995, 12.5135403}, //
+
42867 {5.97953987, 12.5132303}, //
+
42868 {5.97878981, 12.5129604}, //
+
42869 {5.97804022, 12.5127201}, //
+
42870 {5.97729015, 12.5125399}, //
+
42871 {5.97654009, 12.5123901}, //
+
42872 {5.97579002, 12.5122805}, //
+
42873 {5.97504997, 12.5122204}, //
+
42874 {5.97280979, 12.5121603}, //
+
42875 {5.97136021, 12.5120296}, //
+
42876 {5.96996021, 12.5118198}, //
+
42877 {5.96858978, 12.5115299}, //
+
42878 {5.9672699, 12.5111504}, //
+
42879 {5.96599007, 12.5106897}, //
+
42880 {5.96474981, 12.5101404}, //
+
42881 {5.96355009, 12.50951}, //
+
42882 {5.96239996, 12.5087996}, //
+
42883 {5.96125984, 12.50805}, //
+
42884 {5.96007013, 12.5073099}, //
+
42885 {5.95883989, 12.5065603}, //
+
42886 {5.95757008, 12.5058098}, //
+
42887 {5.95625019, 12.5050602}, //
+
42888 {5.95488977, 12.5043097}, //
+
42889 {5.95348978, 12.5035601}, //
+
42890 {5.9520402, 12.5028}, //
+
42891 {5.95055008, 12.5020504}, //
+
42892 {5.94899988, 12.4996099}, //
+
42893 {5.94736004, 12.4967804}, //
+
42894 {5.94564009, 12.4935799}, //
+
42895 {5.94383001, 12.4900103}, //
+
42896 {5.94194984, 12.4860497}, //
+
42897 {5.93997002, 12.48172}, //
+
42898 {5.93792009, 12.4770098}, //
+
42899 {5.93577003, 12.47192}, //
+
42900 {5.93354988, 12.4664497}, //
+
42901 {5.93134022, 12.4607697}, //
+
42902 {5.92921019, 12.45506}, //
+
42903 {5.92715979, 12.4492998}, //
+
42904 {5.92519999, 12.4434996}, //
+
42905 {5.92331982, 12.4376602}, //
+
42906 {5.92152977, 12.4317799}, //
+
42907 {5.91981983, 12.4258604}, //
+
42908 {5.91819, 12.4198999}, //
+
42909 {5.91664982, 12.4139004}, //
+
42910 {5.91589022, 12.4123898}, //
+
42911 {5.91514015, 12.4108801}, //
+
42912 {5.91438007, 12.4093704}, //
+
42913 {5.91363001, 12.4078703}, //
+
42914 {5.91286993, 12.4063597}, //
+
42915 {5.91211987, 12.4048595}, //
+
42916 {5.91135979, 12.4033499}, //
+
42917 {5.9106102, 12.4018497}, //
+
42918 {5.90985012, 12.4003496}, //
+
42919 {5.90912008, 12.3980999}, //
+
42920 {5.90842009, 12.3958998}, //
+
42921 {5.90777016, 12.3937397}, //
+
42922 {5.90715981, 12.3916197}, //
+
42923 {5.9066, 12.3895397}, //
+
42924 {5.90607023, 12.3875103}, //
+
42925 {5.90559006, 12.3855104}, //
+
42926 {5.90514994, 12.3835602}, //
+
42927 {5.90474987, 12.38165}, //
+
42928 {5.90435982, 12.3797503}, //
+
42929 {5.90393019, 12.3778095}, //
+
42930 {5.90346003, 12.3758202}, //
+
42931 {5.9029398, 12.3737898}, //
+
42932 {5.90237999, 12.3717203}, //
+
42933 {5.90177011, 12.3696098}, //
+
42934 {5.90112019, 12.3674498}, //
+
42935 {5.9004302, 12.3652496}, //
+
42936 {5.89970016, 12.3629999}, //
+
42937 {5.89894009, 12.3606195}, //
+
42938 {5.89819002, 12.3579903}, //
+
42939 {5.89742994, 12.3550997}, //
+
42940 {5.89667988, 12.3519602}, //
+
42941 {5.8959198, 12.3485699}, //
+
42942 {5.89517021, 12.3449297}, //
+
42943 {5.89441013, 12.3410397}, //
+
42944 {5.89366007, 12.3368998}, //
+
42945 {5.89289999, 12.3325005}, //
+
42946 {5.89218998, 12.3251305}, //
+
42947 {5.89156008, 12.3181}, //
+
42948 {5.89100981, 12.31141}, //
+
42949 {5.89055014, 12.3050404}, //
+
42950 {5.8901701, 12.2990198}, //
+
42951 {5.88988018, 12.2933197}, //
+
42952 {5.8896699, 12.2879601}, //
+
42953 {5.8895402, 12.2829399}, //
+
42954 {5.88950014, 12.2782497}, //
+
42955 {5.88948011, 12.2753}, //
+
42956 {5.88942003, 12.27248}, //
+
42957 {5.88930988, 12.2697802}, //
+
42958 {5.88916016, 12.2672005}, //
+
42959 {5.88897991, 12.2647495}, //
+
42960 {5.88874006, 12.2624302}, //
+
42961 {5.88847017, 12.2602301}, //
+
42962 {5.88816023, 12.2581501}, //
+
42963 {5.88780022, 12.2561998}, //
+
42964 {5.88737011, 12.2544298}, //
+
42965 {5.88680983, 12.2528601}, //
+
42966 {5.88612986, 12.2515097}, //
+
42967 {5.88532019, 12.2503595}, //
+
42968 {5.88437986, 12.2494202}, //
+
42969 {5.88330984, 12.2486897}, //
+
42970 {5.88212013, 12.2481699}, //
+
42971 {5.88079977, 12.2478504}, //
+
42972 {5.87935019, 12.2477503}, //
+
42973 });
+
42974 polys.push_back({
+
42975 {0.333766997, 12.4960299}, //
+
42976 {0.333427995, 12.49648}, //
+
42977 {0.332922012, 12.4973602}, //
+
42978 {0.332249999, 12.4986496}, //
+
42979 {0.331441998, 12.5003099}, //
+
42980 {0.33050701, 12.5022602}, //
+
42981 {0.329443991, 12.5045004}, //
+
42982 {0.328254998, 12.50704}, //
+
42983 {0.326938003, 12.50986}, //
+
42984 {0.325493991, 12.5129805}, //
+
42985 {0.323922992, 12.5164003}, //
+
42986 {0.322225004, 12.5200996}, //
+
42987 {0.3204, 12.5241003}, //
+
42988 {0.318542987, 12.5283098}, //
+
42989 {0.316725999, 12.5326405}, //
+
42990 {0.314949989, 12.5370903}, //
+
42991 {0.313214988, 12.5416803}, //
+
42992 {0.31152001, 12.54638}, //
+
42993 {0.309866995, 12.5512104}, //
+
42994 {0.308254004, 12.5561705}, //
+
42995 {0.306681007, 12.5612497}, //
+
42996 {0.305150002, 12.5664501}, //
+
42997 {0.303691, 12.57164}, //
+
42998 {0.302314997, 12.5766697}, //
+
42999 {0.301021993, 12.5815296}, //
+
43000 {0.299811989, 12.5862198}, //
+
43001 {0.298684001, 12.5907402}, //
+
43002 {0.297639012, 12.5950899}, //
+
43003 {0.296676993, 12.5992804}, //
+
43004 {0.29579699, 12.6033001}, //
+
43005 {0.294999987, 12.6071501}, //
+
43006 {0.295084, 12.6072302}, //
+
43007 {0.295188993, 12.6073399}, //
+
43008 {0.295336008, 12.6074896}, //
+
43009 {0.295525014, 12.6076698}, //
+
43010 {0.295756012, 12.6079102}, //
+
43011 {0.296342999, 12.60849}, //
+
43012 {0.296700001, 12.6088495}, //
+
43013 {0.297077, 12.60923}, //
+
43014 {0.297452986, 12.6096096}, //
+
43015 {0.297827989, 12.6099796}, //
+
43016 {0.298200995, 12.6103601}, //
+
43017 {0.298572987, 12.6107397}, //
+
43018 {0.298943996, 12.6111202}, //
+
43019 {0.299313992, 12.6114902}, //
+
43020 {0.299683005, 12.6118698}, //
+
43021 {0.30004999, 12.6122503}, //
+
43022 {0.300406992, 12.6126299}, //
+
43023 {0.300722003, 12.6130104}, //
+
43024 {0.300994009, 12.6133804}, //
+
43025 {0.301225007, 12.61376}, //
+
43026 {0.301414013, 12.6141396}, //
+
43027 {0.301560998, 12.6145201}, //
+
43028 {0.301665992, 12.6148901}, //
+
43029 {0.301728994, 12.6152697}, //
+
43030 {0.301750004, 12.6156502}, //
+
43031 {0.301750004, 12.6206999}, //
+
43032 {0.301770985, 12.6213303}, //
+
43033 {0.301833987, 12.6217098}, //
+
43034 {0.301939011, 12.62183}, //
+
43035 {0.302085996, 12.6217098}, //
+
43036 {0.302275002, 12.6213303}, //
+
43037 {0.302506, 12.6206999}, //
+
43038 {0.302778006, 12.6198196}, //
+
43039 {0.303092986, 12.6186895}, //
+
43040 {0.303449988, 12.6173}, //
+
43041 {0.303849012, 12.6157398}, //
+
43042 {0.304289997, 12.6140499}, //
+
43043 {0.30477199, 12.6122303}, //
+
43044 {0.305296987, 12.61028}, //
+
43045 {0.305864006, 12.6082096}, //
+
43046 {0.306472003, 12.6060104}, //
+
43047 {0.307123005, 12.6036797}, //
+
43048 {0.307814986, 12.6012297}, //
+
43049 {0.30855, 12.59865}, //
+
43050 {0.309305996, 12.5959101}, //
+
43051 {0.310061008, 12.5929604}, //
+
43052 {0.310817003, 12.5898104}, //
+
43053 {0.311571985, 12.5864401}, //
+
43054 {0.312328011, 12.58286}, //
+
43055 {0.313082993, 12.5790701}, //
+
43056 {0.313838989, 12.5750704}, //
+
43057 {0.314594001, 12.5708704}, //
+
43058 {0.315349996, 12.5664501}, //
+
43059 {0.316808999, 12.5619802}, //
+
43060 {0.318185002, 12.5575895}, //
+
43061 {0.319478005, 12.5532799}, //
+
43062 {0.320688009, 12.5490599}, //
+
43063 {0.321815997, 12.5449104}, //
+
43064 {0.322860986, 12.5408497}, //
+
43065 {0.323823005, 12.53687}, //
+
43066 {0.324703008, 12.5329704}, //
+
43067 {0.325500011, 12.52915}, //
+
43068 {0.326256007, 12.5254698}, //
+
43069 {0.327010989, 12.5219498}, //
+
43070 {0.327767015, 12.51861}, //
+
43071 {0.328521997, 12.5154305}, //
+
43072 {0.329277992, 12.5124197}, //
+
43073 {0.330033004, 12.5095701}, //
+
43074 {0.330789, 12.5068998}, //
+
43075 {0.331544012, 12.5043898}, //
+
43076 {0.332300007, 12.5020504}, //
+
43077 {0.332960993, 12.5}, //
+
43078 {0.33345601, 12.4983702}, //
+
43079 {0.333783001, 12.49716}, //
+
43080 {0.333943993, 12.4963703}, //
+
43081 {0.333938986, 12.4959898}, //
+
43082 });
+
43083 polys.push_back({
+
43084 {6.37605, 12.4765997}, //
+
43085 {6.37643003, 12.4785099}, //
+
43086 {6.37681007, 12.4804602}, //
+
43087 {6.3771801, 12.4824495}, //
+
43088 {6.37756014, 12.4844799}, //
+
43089 {6.37794018, 12.4865503}, //
+
43090 {6.37832022, 12.4886703}, //
+
43091 {6.37868977, 12.4908199}, //
+
43092 {6.37906981, 12.4930096}, //
+
43093 {6.37944984, 12.4952497}, //
+
43094 {6.37980986, 12.4974699}, //
+
43095 {6.3801198, 12.4996099}, //
+
43096 {6.38039017, 12.5016699}, //
+
43097 {6.38063002, 12.5036402}, //
+
43098 {6.38080978, 12.5055199}, //
+
43099 {6.38095999, 12.5073204}, //
+
43100 {6.38107014, 12.5090303}, //
+
43101 {6.38113022, 12.5106602}, //
+
43102 {6.38114977, 12.5122004}, //
+
43103 {6.38107014, 12.5159302}, //
+
43104 {6.3808198, 12.5195704}, //
+
43105 {6.38040018, 12.5231304}, //
+
43106 {6.37981987, 12.5265999}, //
+
43107 {6.37906981, 12.5299997}, //
+
43108 {6.37814999, 12.5333099}, //
+
43109 {6.37706995, 12.53654}, //
+
43110 {6.37582016, 12.53969}, //
+
43111 {6.37440014, 12.5427504}, //
+
43112 {6.3729701, 12.5457602}, //
+
43113 {6.37170982, 12.54877}, //
+
43114 {6.37061977, 12.5517797}, //
+
43115 {6.36969995, 12.5547895}, //
+
43116 {6.36893988, 12.5578098}, //
+
43117 {6.36836004, 12.5608196}, //
+
43118 {6.36793995, 12.5638304}, //
+
43119 {6.36768007, 12.5668402}, //
+
43120 {6.36759996, 12.56985}, //
+
43121 {6.36761999, 12.5727797}, //
+
43122 {6.36768007, 12.5755396}, //
+
43123 {6.36779022, 12.5781298}, //
+
43124 {6.36793995, 12.5805597}, //
+
43125 {6.36812019, 12.5828199}, //
+
43126 {6.36836004, 12.5849199}, //
+
43127 {6.36862993, 12.5868397}, //
+
43128 {6.36893988, 12.5886097}, //
+
43129 {6.36929989, 12.5902004}, //
+
43130 {6.36969995, 12.59167}, //
+
43131 {6.37014008, 12.59305}, //
+
43132 {6.37061977, 12.5943604}, //
+
43133 {6.37115002, 12.5955696}, //
+
43134 {6.37170982, 12.5967102}, //
+
43135 {6.37232018, 12.5977602}, //
+
43136 {6.3729701, 12.5987196}, //
+
43137 {6.3736701, 12.5995998}, //
+
43138 {6.37440014, 12.6004}, //
+
43139 {6.37444019, 12.6011496}, //
+
43140 {6.37456989, 12.6018896}, //
+
43141 {6.37477016, 12.6026402}, //
+
43142 {6.37506008, 12.6033897}, //
+
43143 {6.37543011, 12.6041403}, //
+
43144 {6.37588978, 12.6048899}, //
+
43145 {6.37643003, 12.6056404}, //
+
43146 {6.37704992, 12.6063995}, //
+
43147 {6.37774992, 12.6071501}, //
+
43148 {6.37774992, 12.5936003}, //
+
43149 {6.37770987, 12.5920897}, //
+
43150 {6.37758017, 12.59058}, //
+
43151 {6.37737989, 12.5890703}, //
+
43152 {6.37708998, 12.5875702}, //
+
43153 {6.37671995, 12.5860596}, //
+
43154 {6.3762598, 12.5845604}, //
+
43155 {6.37572002, 12.5830498}, //
+
43156 {6.37510014, 12.5815496}, //
+
43157 {6.37440014, 12.5800505}, //
+
43158 {6.37442017, 12.5778503}, //
+
43159 {6.37447977, 12.5757704}, //
+
43160 {6.37457991, 12.5738201}, //
+
43161 {6.37473011, 12.57199}, //
+
43162 {6.37490988, 12.5702896}, //
+
43163 {6.37513018, 12.5687199}, //
+
43164 {6.37540007, 12.5672703}, //
+
43165 {6.3757, 12.5659504}, //
+
43166 {6.37605, 12.5647497}, //
+
43167 {6.37645006, 12.5636501}, //
+
43168 {6.37689018, 12.5625896}, //
+
43169 {6.37736988, 12.5615702}, //
+
43170 {6.37790012, 12.5605898}, //
+
43171 {6.37845993, 12.5596504}, //
+
43172 {6.37906981, 12.5587502}, //
+
43173 {6.37972021, 12.5578899}, //
+
43174 {6.38042021, 12.5570803}, //
+
43175 {6.38114977, 12.5563002}, //
+
43176 {6.38332987, 12.5547104}, //
+
43177 {6.38535023, 12.5529404}, //
+
43178 {6.38718987, 12.5510197}, //
+
43179 {6.38886023, 12.5489197}, //
+
43180 {6.39036989, 12.5466604}, //
+
43181 {6.3917098, 12.5442305}, //
+
43182 {6.39286995, 12.5416403}, //
+
43183 {6.39386988, 12.5388803}, //
+
43184 {6.39470005, 12.5359497}, //
+
43185 {6.39461994, 12.5336304}, //
+
43186 {6.39436007, 12.5311804}, //
+
43187 {6.39393997, 12.5286102}, //
+
43188 {6.39336014, 12.5259104}, //
+
43189 {6.39260006, 12.5230799}, //
+
43190 {6.39167976, 12.5201302}, //
+
43191 {6.39059019, 12.5170498}, //
+
43192 {6.38932991, 12.5138397}, //
+
43193 {6.38789988, 12.5105}, //
+
43194 {6.3864398, 12.5070896}, //
+
43195 {6.38506985, 12.5036402}, //
+
43196 {6.38376999, 12.5001402}, //
+
43197 {6.38255978, 12.4966097}, //
+
43198 {6.38143015, 12.4930296}, //
+
43199 {6.38039017, 12.4894104}, //
+
43200 {6.37942982, 12.4857502}, //
+
43201 {6.37855005, 12.4820499}, //
+
43202 {6.37774992, 12.4783001}, //
+
43203 {6.3763299, 12.4761295}, //
+
43204 {6.37577009, 12.4752302}, //
+
43205 });
+
43206 polys.push_back({
+
43207 {4.21661997, 12.5089798}, //
+
43208 {4.20896006, 12.5093498}, //
+
43209 {4.20172024, 12.5099802}, //
+
43210 {4.19490004, 12.51085}, //
+
43211 {4.18849993, 12.5119801}, //
+
43212 {4.18251991, 12.51336}, //
+
43213 {4.17695999, 12.5149899}, //
+
43214 {4.17182016, 12.5168695}, //
+
43215 {4.16709995, 12.5190001}, //
+
43216 {4.16324997, 12.5197601}, //
+
43217 {4.15923023, 12.5205097}, //
+
43218 {4.15503979, 12.5212698}, //
+
43219 {4.15069008, 12.5220203}, //
+
43220 {4.14617014, 12.5227804}, //
+
43221 {4.14147997, 12.52353}, //
+
43222 {4.13662004, 12.5242901}, //
+
43223 {4.13158989, 12.5250397}, //
+
43224 {4.12639999, 12.5257998}, //
+
43225 {4.12335014, 12.5265503}, //
+
43226 {4.12021017, 12.5272903}, //
+
43227 {4.11698008, 12.5280399}, //
+
43228 {4.11366987, 12.5287905}, //
+
43229 {4.11028004, 12.5295401}, //
+
43230 {4.10680008, 12.5302896}, //
+
43231 {4.10324001, 12.5310402}, //
+
43232 {4.09958982, 12.5318003}, //
+
43233 {4.09584999, 12.5325499}, //
+
43234 {4.09206009, 12.53333}, //
+
43235 {4.08823013, 12.5341501}, //
+
43236 {4.08436012, 12.5350103}, //
+
43237 {4.08045006, 12.5359097}, //
+
43238 {4.07648993, 12.53685}, //
+
43239 {4.07249022, 12.5378399}, //
+
43240 {4.06844997, 12.5388699}, //
+
43241 {4.06437016, 12.5399399}, //
+
43242 {4.06024981, 12.54105}, //
+
43243 {4.05622005, 12.54216}, //
+
43244 {4.05240011, 12.5432301}, //
+
43245 {4.04877996, 12.54426}, //
+
43246 {4.04538012, 12.5452404}, //
+
43247 {4.04218006, 12.5461798}, //
+
43248 {4.0391798, 12.5470695}, //
+
43249 {4.03639984, 12.5479202}, //
+
43250 {4.03382015, 12.5487299}, //
+
43251 {4.03144979, 12.5495005}, //
+
43252 {4.02931976, 12.55021}, //
+
43253 {4.02580976, 12.5513897}, //
+
43254 {4.0244298, 12.5518503}, //
+
43255 {4.02330017, 12.5522299}, //
+
43256 {4.02242994, 12.5525198}, //
+
43257 {4.02129984, 12.5529003}, //
+
43258 {4.0246501, 12.5529003}, //
+
43259 {4.02541018, 12.5536299}, //
+
43260 {4.02615976, 12.5543299}, //
+
43261 {4.02691984, 12.5549803}, //
+
43262 {4.02766991, 12.5555897}, //
+
43263 {4.02842999, 12.5561504}, //
+
43264 {4.02918005, 12.5566797}, //
+
43265 {4.02994013, 12.5571604}, //
+
43266 {4.03069019, 12.5576}, //
+
43267 {4.03144979, 12.5579996}, //
+
43268 {4.03228998, 12.5583801}, //
+
43269 {4.03328991, 12.5587597}, //
+
43270 {4.03447008, 12.5591297}, //
+
43271 {4.03580999, 12.5595102}, //
+
43272 {4.03731012, 12.5598898}, //
+
43273 {4.03898001, 12.5602703}, //
+
43274 {4.04082012, 12.5606403}, //
+
43275 {4.04282999, 12.5610199}, //
+
43276 {4.04500008, 12.5614004}, //
+
43277 {4.04743004, 12.5617599}, //
+
43278 {4.05019999, 12.5620699}, //
+
43279 {4.0532999, 12.5623398}, //
+
43280 {4.05672979, 12.5625801}, //
+
43281 {4.06050014, 12.5627604}, //
+
43282 {4.06459999, 12.5629101}, //
+
43283 {4.06902981, 12.5630198}, //
+
43284 {4.07380009, 12.5630798}, //
+
43285 {4.07889986, 12.5630999}, //
+
43286 {4.15689993, 12.5630999}, //
+
43287 {4.16078997, 12.5630598}, //
+
43288 {4.16493988, 12.5629301}, //
+
43289 {4.16933012, 12.5627203}, //
+
43290 {4.17398024, 12.5624304}, //
+
43291 {4.17888021, 12.5620499}, //
+
43292 {4.18403006, 12.5615902}, //
+
43293 {4.18943977, 12.5610399}, //
+
43294 {4.19508982, 12.5604095}, //
+
43295 {4.20100021, 12.5597}, //
+
43296 {4.22871017, 12.5598698}, //
+
43297 {4.25458002, 12.5603704}, //
+
43298 {4.27861023, 12.5612097}, //
+
43299 {4.30079985, 12.5623798}, //
+
43300 {4.32113981, 12.56388}, //
+
43301 {4.33964014, 12.5657196}, //
+
43302 {4.35629988, 12.5678997}, //
+
43303 {4.37111998, 12.5704098}, //
+
43304 {4.38409996, 12.5732498}, //
+
43305 {4.39424992, 12.5732498}, //
+
43306 {4.39869022, 12.5747404}, //
+
43307 {4.40295982, 12.57619}, //
+
43308 {4.40706015, 12.57759}, //
+
43309 {4.41099977, 12.5789499}, //
+
43310 {4.41476011, 12.5802698}, //
+
43311 {4.41836023, 12.5815401}, //
+
43312 {4.42179012, 12.5827703}, //
+
43313 {4.42504978, 12.5839596}, //
+
43314 {4.42815018, 12.5851002}, //
+
43315 {4.43111992, 12.5862303}, //
+
43316 {4.43400002, 12.5873699}, //
+
43317 {4.43681002, 12.5885}, //
+
43318 {4.43951988, 12.5896301}, //
+
43319 {4.44216013, 12.5907698}, //
+
43320 {4.44470978, 12.5918999}, //
+
43321 {4.44716978, 12.59303}, //
+
43322 {4.44955015, 12.5941696}, //
+
43323 {4.45184994, 12.5952997}, //
+
43324 {4.45588017, 12.5973101}, //
+
43325 {4.45752001, 12.5981302}, //
+
43326 {4.45889997, 12.5988302}, //
+
43327 {4.46004009, 12.59939}, //
+
43328 {4.46155024, 12.6001501}, //
+
43329 {4.46204996, 12.6004}, //
+
43330 {4.45529985, 12.5630999}, //
+
43331 {4.4593401, 12.5630999}, //
+
43332 {4.45883989, 12.5603304}, //
+
43333 {4.45837021, 12.5602198}, //
+
43334 {4.4572401, 12.5600405}, //
+
43335 {4.45602989, 12.5598898}, //
+
43336 {4.45473003, 12.5597801}, //
+
43337 {4.45336008, 12.55972}, //
+
43338 {4.45190001, 12.5597}, //
+
43339 {4.44829988, 12.5589895}, //
+
43340 {4.44504023, 12.5583601}, //
+
43341 {4.44211006, 12.5578098}, //
+
43342 {4.43950987, 12.5573502}, //
+
43343 {4.43725014, 12.5569696}, //
+
43344 {4.4353199, 12.5566797}, //
+
43345 {4.43373013, 12.5564699}, //
+
43346 {4.43246984, 12.5563402}, //
+
43347 {4.43155003, 12.5563002}, //
+
43348 {4.42304993, 12.5563002}, //
+
43349 {4.42261982, 12.5562801}, //
+
43350 {4.42206001, 12.5562201}, //
+
43351 {4.42138004, 12.5561104}, //
+
43352 {4.4205699, 12.5559597}, //
+
43353 {4.41963005, 12.5557804}, //
+
43354 {4.41856003, 12.5555401}, //
+
43355 {4.41736984, 12.5552702}, //
+
43356 {4.41604996, 12.5549603}, //
+
43357 {4.4145999, 12.5545998}, //
+
43358 {4.41305017, 12.5542002}, //
+
43359 {4.41140985, 12.5537596}, //
+
43360 {4.4096899, 12.5532799}, //
+
43361 {4.40788984, 12.5527496}, //
+
43362 {4.40601015, 12.5521898}, //
+
43363 {4.40403986, 12.5515804}, //
+
43364 {4.40199995, 12.55093}, //
+
43365 {4.39985991, 12.55023}, //
+
43366 {4.39764977, 12.5495005}, //
+
43367 {4.39128017, 12.5471802}, //
+
43368 {4.38425016, 12.5447397}, //
+
43369 {4.37654018, 12.5421696}, //
+
43370 {4.36815977, 12.5394697}, //
+
43371 {4.35911989, 12.5366497}, //
+
43372 {4.34941006, 12.5337}, //
+
43373 {4.33901978, 12.5306301}, //
+
43374 {4.32797003, 12.5274296}, //
+
43375 {4.31624985, 12.5241003}, //
+
43376 {4.30439997, 12.5208998}, //
+
43377 {4.29298019, 12.5180798}, //
+
43378 {4.28197002, 12.5156298}, //
+
43379 {4.27137995, 12.5135603}, //
+
43380 {4.26119995, 12.5118599}, //
+
43381 {4.25145006, 12.51054}, //
+
43382 {4.24210978, 12.5095997}, //
+
43383 {4.23320007, 12.5090399}, //
+
43384 {4.22469997, 12.5088501}, //
+
43385 });
+
43386 polys.push_back({
+
43387 {6.30578995, 12.1137104}, //
+
43388 {6.30503988, 12.1154003}, //
+
43389 {6.3042798, 12.1172199}, //
+
43390 {6.30353022, 12.1191597}, //
+
43391 {6.30277014, 12.1212196}, //
+
43392 {6.30202007, 12.1234198}, //
+
43393 {6.30125999, 12.1257401}, //
+
43394 {6.30050993, 12.1281796}, //
+
43395 {6.29974985, 12.1307497}, //
+
43396 {6.29896021, 12.1334105}, //
+
43397 {6.29808998, 12.1361198}, //
+
43398 {6.29713011, 12.1388702}, //
+
43399 {6.29609013, 12.1416502}, //
+
43400 {6.29496002, 12.1444798}, //
+
43401 {6.29374981, 12.1473503}, //
+
43402 {6.29244995, 12.15026}, //
+
43403 {6.29106998, 12.1532097}, //
+
43404 {6.2895999, 12.1562004}, //
+
43405 {6.28739023, 12.1613102}, //
+
43406 {6.28525019, 12.1660805}, //
+
43407 {6.2832098, 12.1705198}, //
+
43408 {6.28123999, 12.1746197}, //
+
43409 {6.27935982, 12.1783895}, //
+
43410 {6.27756023, 12.1818199}, //
+
43411 {6.27583981, 12.1849203}, //
+
43412 {6.27419996, 12.1876802}, //
+
43413 {6.27264977, 12.1900997}, //
+
43414 {6.27123022, 12.1916103}, //
+
43415 {6.26997995, 12.19312}, //
+
43416 {6.26889992, 12.1946297}, //
+
43417 {6.2679801, 12.1961298}, //
+
43418 {6.26723003, 12.1976404}, //
+
43419 {6.2666502, 12.1991396}, //
+
43420 {6.26623011, 12.2006502}, //
+
43421 {6.26597977, 12.2021503}, //
+
43422 {6.26590014, 12.2036505}, //
+
43423 {6.2644701, 12.2051401}, //
+
43424 {6.26320982, 12.2065897}, //
+
43425 {6.26211977, 12.2079897}, //
+
43426 {6.26119995, 12.2093601}, //
+
43427 {6.26043987, 12.21068}, //
+
43428 {6.25986004, 12.2119598}, //
+
43429 {6.25943995, 12.2131996}, //
+
43430 {6.25918007, 12.2144003}, //
+
43431 {6.25909996, 12.2155504}, //
+
43432 {6.25909996, 12.224}, //
+
43433 {6.25918007, 12.2248802}, //
+
43434 {6.25943995, 12.2260103}, //
+
43435 {6.25986004, 12.2273903}, //
+
43436 {6.26043987, 12.2290297}, //
+
43437 {6.26119995, 12.2309103}, //
+
43438 {6.26211977, 12.2330399}, //
+
43439 {6.26320982, 12.2354298}, //
+
43440 {6.2644701, 12.23806}, //
+
43441 {6.26590014, 12.2409496}, //
+
43442 {6.2666502, 12.2439299}, //
+
43443 {6.26738977, 12.2468204}, //
+
43444 {6.26813984, 12.24963}, //
+
43445 {6.2688899, 12.2523603}, //
+
43446 {6.26963997, 12.2550001}, //
+
43447 {6.27039003, 12.2575502}, //
+
43448 {6.2711401, 12.2600203}, //
+
43449 {6.27190018, 12.2623997}, //
+
43450 {6.27264977, 12.2646999}, //
+
43451 {6.27340984, 12.2670097}, //
+
43452 {6.27415991, 12.2693996}, //
+
43453 {6.27491999, 12.2718697}, //
+
43454 {6.27567005, 12.2744303}, //
+
43455 {6.27643013, 12.27707}, //
+
43456 {6.27718019, 12.2797899}, //
+
43457 {6.2779398, 12.2825899}, //
+
43458 {6.27868986, 12.2854795}, //
+
43459 {6.27944994, 12.2884502}, //
+
43460 {6.27948999, 12.2922201}, //
+
43461 {6.27962017, 12.2959805}, //
+
43462 {6.27982998, 12.2997503}, //
+
43463 {6.2801199, 12.3035202}, //
+
43464 {6.28049994, 12.3072796}, //
+
43465 {6.28096008, 12.3110504}, //
+
43466 {6.28150988, 12.3148203}, //
+
43467 {6.28213978, 12.3185797}, //
+
43468 {6.28284979, 12.3223495}, //
+
43469 {6.28359985, 12.3246498}, //
+
43470 {6.2843399, 12.3270302}, //
+
43471 {6.28508997, 12.3294897}, //
+
43472 {6.28584003, 12.3320398}, //
+
43473 {6.2865901, 12.3346796}, //
+
43474 {6.28734016, 12.3373899}, //
+
43475 {6.28809023, 12.3402004}, //
+
43476 {6.28884983, 12.3430796}, //
+
43477 {6.2895999, 12.3460503}, //
+
43478 {6.29035997, 12.3492403}, //
+
43479 {6.29111004, 12.3527603}, //
+
43480 {6.29187012, 12.3566198}, //
+
43481 {6.29262018, 12.3608103}, //
+
43482 {6.29337978, 12.3653297}, //
+
43483 {6.29412985, 12.3701801}, //
+
43484 {6.29488993, 12.37537}, //
+
43485 {6.29563999, 12.3808899}, //
+
43486 {6.29640007, 12.3867502}, //
+
43487 {6.29782009, 12.3942804}, //
+
43488 {6.29906988, 12.4018202}, //
+
43489 {6.30014992, 12.4093599}, //
+
43490 {6.30107021, 12.4168901}, //
+
43491 {6.3018198, 12.4244299}, //
+
43492 {6.30240011, 12.4319696}, //
+
43493 {6.30282021, 12.4395103}, //
+
43494 {6.30307007, 12.4470596}, //
+
43495 {6.30315018, 12.4546003}, //
+
43496 {6.30315018, 12.4919004}, //
+
43497 {6.30319023, 12.4969997}, //
+
43498 {6.30331993, 12.5017595}, //
+
43499 {6.30353022, 12.5061903}, //
+
43500 {6.30382013, 12.5102901}, //
+
43501 {6.30420017, 12.5140495}, //
+
43502 {6.30465984, 12.5174799}, //
+
43503 {6.30521011, 12.5205698}, //
+
43504 {6.30584002, 12.5233297}, //
+
43505 {6.30655003, 12.5257502}, //
+
43506 {6.3073101, 12.5279703}, //
+
43507 {6.30806017, 12.5301199}, //
+
43508 {6.30881977, 12.5321703}, //
+
43509 {6.30956984, 12.5341501}, //
+
43510 {6.31032991, 12.5360298}, //
+
43511 {6.31107998, 12.5378399}, //
+
43512 {6.31184006, 12.5395603}, //
+
43513 {6.31259012, 12.5411997}, //
+
43514 {6.3133502, 12.5427504}, //
+
43515 {6.31548023, 12.5457602}, //
+
43516 {6.31735992, 12.54877}, //
+
43517 {6.31899023, 12.5517797}, //
+
43518 {6.3203702, 12.5547895}, //
+
43519 {6.32149982, 12.5578098}, //
+
43520 {6.32237005, 12.5608196}, //
+
43521 {6.32299995, 12.5638304}, //
+
43522 {6.32336998, 12.5668402}, //
+
43523 {6.32350016, 12.56985}, //
+
43524 {6.32431984, 12.5727797}, //
+
43525 {6.32526016, 12.5755396}, //
+
43526 {6.32633018, 12.5781298}, //
+
43527 {6.32751989, 12.5805597}, //
+
43528 {6.32883978, 12.5828199}, //
+
43529 {6.33027983, 12.5849199}, //
+
43530 {6.33184004, 12.5868397}, //
+
43531 {6.33352995, 12.5886097}, //
+
43532 {6.33535004, 12.5902004}, //
+
43533 {6.33722019, 12.59167}, //
+
43534 {6.3390398, 12.59305}, //
+
43535 {6.34082985, 12.5943604}, //
+
43536 {6.34256983, 12.5955696}, //
+
43537 {6.34427023, 12.5967102}, //
+
43538 {6.3459301, 12.5977602}, //
+
43539 {6.3475399, 12.5987196}, //
+
43540 {6.34912014, 12.5995998}, //
+
43541 {6.35064983, 12.6004}, //
+
43542 {6.35062981, 12.6003599}, //
+
43543 {6.35030985, 12.5997295}, //
+
43544 {6.35013008, 12.59935}, //
+
43545 {6.34989023, 12.5988903}, //
+
43546 {6.34961987, 12.59834}, //
+
43547 {6.34930992, 12.5977097}, //
+
43548 {6.34894991, 12.5970001}, //
+
43549 {6.34856987, 12.5962}, //
+
43550 {6.34818983, 12.5953197}, //
+
43551 {6.34781981, 12.5943604}, //
+
43552 {6.34743977, 12.5933104}, //
+
43553 {6.3470602, 12.5921698}, //
+
43554 {6.34668016, 12.5909595}, //
+
43555 {6.34631014, 12.5896502}, //
+
43556 {6.3459301, 12.5882702}, //
+
43557 {6.34555006, 12.5867996}, //
+
43558 {6.34514999, 12.5853004}, //
+
43559 {6.34470987, 12.5838003}, //
+
43560 {6.34423018, 12.5822897}, //
+
43561 {6.34369993, 12.5807896}, //
+
43562 {6.34314013, 12.5792799}, //
+
43563 {6.34252977, 12.5777798}, //
+
43564 {6.34187984, 12.5762701}, //
+
43565 {6.34117985, 12.5747604}, //
+
43566 {6.34044981, 12.5732498}, //
+
43567 {6.33970022, 12.5717402}, //
+
43568 {6.33896017, 12.5702295}, //
+
43569 {6.33821011, 12.5687199}, //
+
43570 {6.33746004, 12.5672197}, //
+
43571 {6.33670998, 12.5657101}, //
+
43572 {6.33595991, 12.5642099}, //
+
43573 {6.33520985, 12.5627003}, //
+
43574 {6.33444977, 12.5612001}, //
+
43575 {6.33370018, 12.5597}, //
+
43576 {6.33370018, 12.5054502}, //
+
43577 {6.33362007, 12.5023499}, //
+
43578 {6.3333602, 12.4990902}, //
+
43579 {6.3329401, 12.4956598}, //
+
43580 {6.33235979, 12.4920597}, //
+
43581 {6.33160019, 12.4883003}, //
+
43582 {6.33067989, 12.4843597}, //
+
43583 {6.32958984, 12.4802599}, //
+
43584 {6.32833004, 12.4759903}, //
+
43585 {6.32690001, 12.47155}, //
+
43586 {6.32614994, 12.4678202}, //
+
43587 {6.32538986, 12.46418}, //
+
43588 {6.3246398, 12.4606199}, //
+
43589 {6.32389021, 12.4571505}, //
+
43590 {6.32314014, 12.4537497}, //
+
43591 {6.32239008, 12.4504404}, //
+
43592 {6.32164001, 12.4472103}, //
+
43593 {6.32089996, 12.4440603}, //
+
43594 {6.3201499, 12.441}, //
+
43595 {6.32016993, 12.4372101}, //
+
43596 {6.32023001, 12.4333801}, //
+
43597 {6.32033014, 12.4295101}, //
+
43598 {6.32047987, 12.4256001}, //
+
43599 {6.32066011, 12.4216404}, //
+
43600 {6.32087994, 12.4176397}, //
+
43601 {6.32114983, 12.4136}, //
+
43602 {6.32145023, 12.4095201}, //
+
43603 {6.32180023, 12.4054003}, //
+
43604 {6.32219982, 12.4013596}, //
+
43605 {6.32263994, 12.3975296}, //
+
43606 {6.32312012, 12.3939104}, //
+
43607 {6.32364988, 12.3905001}, //
+
43608 {6.32421017, 12.3872995}, //
+
43609 {6.32482004, 12.3843098}, //
+
43610 {6.32546997, 12.3815298}, //
+
43611 {6.32616997, 12.3789597}, //
+
43612 {6.32690001, 12.3766003}, //
+
43613 {6.32763004, 12.3759298}, //
+
43614 {6.32833004, 12.3754196}, //
+
43615 {6.32897997, 12.3750896}, //
+
43616 {6.32958984, 12.3749199}, //
+
43617 {6.33015013, 12.3749199}, //
+
43618 {6.33067989, 12.3750896}, //
+
43619 {6.33116007, 12.3754196}, //
+
43620 {6.33160019, 12.3759298}, //
+
43621 {6.33199978, 12.3766003}, //
+
43622 {6.33235979, 12.3774405}, //
+
43623 {6.33267021, 12.3784399}, //
+
43624 {6.3329401, 12.3796196}, //
+
43625 {6.33317995, 12.3809605}, //
+
43626 {6.3333602, 12.3824596}, //
+
43627 {6.33350992, 12.3841295}, //
+
43628 {6.33362007, 12.3859701}, //
+
43629 {6.33368015, 12.3879805}, //
+
43630 {6.33370018, 12.3901501}, //
+
43631 {6.33441019, 12.3916998}, //
+
43632 {6.33504009, 12.3933401}, //
+
43633 {6.33558989, 12.3950596}, //
+
43634 {6.33605003, 12.3968601}, //
+
43635 {6.33643007, 12.3987398}, //
+
43636 {6.33671999, 12.4007101}, //
+
43637 {6.3369298, 12.40275}, //
+
43638 {6.33705997, 12.4048901}, //
+
43639 {6.33710003, 12.4070997}, //
+
43640 {6.33780003, 12.4117498}, //
+
43641 {6.33841991, 12.4166498}, //
+
43642 {6.33896017, 12.4217901}, //
+
43643 {6.33941984, 12.4271898}, //
+
43644 {6.33978987, 12.4328403}, //
+
43645 {6.34007978, 12.4387398}, //
+
43646 {6.34028006, 12.4448996}, //
+
43647 {6.34041023, 12.4512997}, //
+
43648 {6.34044981, 12.4579496}, //
+
43649 {6.34044981, 12.4749002}, //
+
43650 {6.34124994, 12.4801397}, //
+
43651 {6.34213018, 12.4852896}, //
+
43652 {6.34309006, 12.4903603}, //
+
43653 {6.34414005, 12.4953403}, //
+
43654 {6.34528017, 12.5002403}, //
+
43655 {6.34648991, 12.5050602}, //
+
43656 {6.34779978, 12.5097904}, //
+
43657 {6.34918022, 12.5144396}, //
+
43658 {6.35064983, 12.5190001}, //
+
43659 {6.3513999, 12.5212097}, //
+
43660 {6.35215998, 12.5233498}, //
+
43661 {6.35291004, 12.5253897}, //
+
43662 {6.35366011, 12.52736}, //
+
43663 {6.35441017, 12.5292397}, //
+
43664 {6.35516024, 12.5310402}, //
+
43665 {6.35590982, 12.5327597}, //
+
43666 {6.35664988, 12.5344}, //
+
43667 {6.35739994, 12.5359497}, //
+
43668 {6.35741997, 12.5351105}, //
+
43669 {6.35748005, 12.5340996}, //
+
43670 {6.3575902, 12.5329304}, //
+
43671 {6.35773993, 12.53158}, //
+
43672 {6.35792017, 12.5300703}, //
+
43673 {6.35816002, 12.5283899}, //
+
43674 {6.35842991, 12.5265503}, //
+
43675 {6.35873985, 12.5245304}, //
+
43676 {6.35909986, 12.5223503}, //
+
43677 {6.35945988, 12.52005}, //
+
43678 {6.35976982, 12.5176697}, //
+
43679 {6.36004019, 12.5152102}, //
+
43680 {6.36028004, 12.51266}, //
+
43681 {6.3604598, 12.5100203}, //
+
43682 {6.36061001, 12.5073099}, //
+
43683 {6.36072016, 12.5045004}, //
+
43684 {6.36077976, 12.5016203}, //
+
43685 {6.36079979, 12.4986496}, //
+
43686 {6.36076021, 12.4956799}, //
+
43687 {6.36063004, 12.4927902}, //
+
43688 {6.36042023, 12.4899902}, //
+
43689 {6.36012983, 12.4872704}, //
+
43690 {6.35974979, 12.4846296}, //
+
43691 {6.35929012, 12.48207}, //
+
43692 {6.35873985, 12.4796}, //
+
43693 {6.35810995, 12.47721}, //
+
43694 {6.35739994, 12.4749002}, //
+
43695 {6.35669994, 12.4682102}, //
+
43696 {6.35608006, 12.4616804}, //
+
43697 {6.3555398, 12.4553204}, //
+
43698 {6.35508013, 12.4491196}, //
+
43699 {6.3547101, 12.4430904}, //
+
43700 {6.35442019, 12.4372301}, //
+
43701 {6.35421991, 12.4315395}, //
+
43702 {6.35409021, 12.4260101}, //
+
43703 {6.35405016, 12.4206495}, //
+
43704 {6.35405016, 12.3935499}, //
+
43705 {6.35401011, 12.3919096}, //
+
43706 {6.35387993, 12.3900299}, //
+
43707 {6.35367012, 12.3878899}, //
+
43708 {6.3533802, 12.3855}, //
+
43709 {6.35300016, 12.3828602}, //
+
43710 {6.35254002, 12.3799696}, //
+
43711 {6.35199022, 12.3768301}, //
+
43712 {6.35135984, 12.3734398}, //
+
43713 {6.35064983, 12.3697996}, //
+
43714 {6.34989023, 12.3644505}, //
+
43715 {6.34914017, 12.3589296}, //
+
43716 {6.34838009, 12.35324}, //
+
43717 {6.34763002, 12.3473797}, //
+
43718 {6.34686995, 12.3413496}, //
+
43719 {6.34611988, 12.3351603}, //
+
43720 {6.3453598, 12.3287897}, //
+
43721 {6.34461021, 12.3222504}, //
+
43722 {6.34385014, 12.3155499}, //
+
43723 {6.34314013, 12.3088102}, //
+
43724 {6.34251022, 12.3021603}, //
+
43725 {6.34195995, 12.2955904}, //
+
43726 {6.34149981, 12.2890997}, //
+
43727 {6.34111977, 12.2826996}, //
+
43728 {6.34082985, 12.27637}, //
+
43729 {6.34062004, 12.2701302}, //
+
43730 {6.34048986, 12.2639704}, //
+
43731 {6.34044981, 12.2579002}, //
+
43732 {6.33970022, 12.2491398}, //
+
43733 {6.33896017, 12.2409201}, //
+
43734 {6.33821011, 12.2332401}, //
+
43735 {6.33746004, 12.2261105}, //
+
43736 {6.33670998, 12.2195196}, //
+
43737 {6.33595991, 12.21348}, //
+
43738 {6.33520985, 12.2079802}, //
+
43739 {6.33444977, 12.2030201}, //
+
43740 {6.33370018, 12.1985998}, //
+
43741 {6.33281994, 12.19452}, //
+
43742 {6.33168983, 12.1905603}, //
+
43743 {6.33030987, 12.1867304}, //
+
43744 {6.32867002, 12.1830301}, //
+
43745 {6.32678986, 12.17945}, //
+
43746 {6.32465982, 12.1759996}, //
+
43747 {6.32226992, 12.1726704}, //
+
43748 {6.31964016, 12.1694698}, //
+
43749 {6.31675005, 12.1664}, //
+
43750 {6.31458998, 12.1633797}, //
+
43751 {6.31264019, 12.1603603}, //
+
43752 {6.3108902, 12.15734}, //
+
43753 {6.30936003, 12.1543198}, //
+
43754 {6.30804014, 12.1513004}, //
+
43755 {6.30693007, 12.1482897}, //
+
43756 {6.3060298, 12.1452703}, //
+
43757 {6.3053298, 12.1422596}, //
+
43758 {6.3048501, 12.1392498}, //
+
43759 {6.30454016, 12.1362801}, //
+
43760 {6.3043499, 12.1333904}, //
+
43761 {6.3042798, 12.1305904}, //
+
43762 {6.3043499, 12.1278696}, //
+
43763 {6.30454016, 12.1252298}, //
+
43764 {6.3048501, 12.1226702}, //
+
43765 {6.30529022, 12.1202002}, //
+
43766 {6.30586004, 12.1178102}, //
+
43767 {6.30655003, 12.1155005}, //
+
43768 {6.30655003, 12.1121502}, //
+
43769 });
+
43770 polys.push_back({
+
43771 {3.40338993, 12.3206701}, //
+
43772 {3.40098, 12.3208399}, //
+
43773 {3.39861012, 12.3211699}, //
+
43774 {3.39629006, 12.3216801}, //
+
43775 {3.39400005, 12.3223495}, //
+
43776 {3.39110994, 12.3232698}, //
+
43777 {3.38847995, 12.3245296}, //
+
43778 {3.38609004, 12.3261204}, //
+
43779 {3.38396001, 12.3280497}, //
+
43780 {3.38208008, 12.3303099}, //
+
43781 {3.38044, 12.3329096}, //
+
43782 {3.37906003, 12.3358402}, //
+
43783 {3.37792993, 12.3390999}, //
+
43784 {3.37704992, 12.3427}, //
+
43785 {3.37633991, 12.34655}, //
+
43786 {3.37571001, 12.3505697}, //
+
43787 {3.37515998, 12.3547602}, //
+
43788 {3.37470007, 12.3591099}, //
+
43789 {3.37432003, 12.3636303}, //
+
43790 {3.37403011, 12.3683205}, //
+
43791 {3.37382007, 12.3731804}, //
+
43792 {3.37368989, 12.3782101}, //
+
43793 {3.37365007, 12.3834}, //
+
43794 {3.37368989, 12.38869}, //
+
43795 {3.37382007, 12.3940201}, //
+
43796 {3.37403011, 12.3993902}, //
+
43797 {3.37432003, 12.4048004}, //
+
43798 {3.37470007, 12.4102602}, //
+
43799 {3.37515998, 12.41576}, //
+
43800 {3.37571001, 12.4212999}, //
+
43801 {3.37633991, 12.4268799}, //
+
43802 {3.37704992, 12.4324999}, //
+
43803 {3.37785006, 12.4380102}, //
+
43804 {3.37873006, 12.4432297}, //
+
43805 {3.37968993, 12.4481497}, //
+
43806 {3.38073993, 12.4527798}, //
+
43807 {3.38188004, 12.4571199}, //
+
43808 {3.38309002, 12.4611702}, //
+
43809 {3.38439989, 12.46492}, //
+
43810 {3.3857801, 12.46838}, //
+
43811 {3.38724995, 12.47155}, //
+
43812 {3.38739991, 12.4739103}, //
+
43813 {3.38784003, 12.4764795}, //
+
43814 {3.38857007, 12.4792604}, //
+
43815 {3.38959002, 12.4822502}, //
+
43816 {3.39090991, 12.4854498}, //
+
43817 {3.39251995, 12.4888601}, //
+
43818 {3.39441991, 12.4924803}, //
+
43819 {3.39661002, 12.4963102}, //
+
43820 {3.39910007, 12.50035}, //
+
43821 {3.40179992, 12.5044899}, //
+
43822 {3.40461993, 12.5086403}, //
+
43823 {3.40756989, 12.5127802}, //
+
43824 {3.41064, 12.5169296}, //
+
43825 {3.41384006, 12.5210695}, //
+
43826 {3.41717005, 12.5252199}, //
+
43827 {3.42061996, 12.5293598}, //
+
43828 {3.42420006, 12.5335102}, //
+
43829 {3.42790008, 12.5376501}, //
+
43830 {3.43167996, 12.5416498}, //
+
43831 {3.43545008, 12.5453501}, //
+
43832 {3.43922997, 12.54877}, //
+
43833 {3.44300008, 12.5518904}, //
+
43834 {3.44676995, 12.5547104}, //
+
43835 {3.45054007, 12.55725}, //
+
43836 {3.45430994, 12.5594902}, //
+
43837 {3.45808005, 12.5614405}, //
+
43838 {3.46184993, 12.5630999}, //
+
43839 {3.46634007, 12.5652704}, //
+
43840 {3.47078991, 12.5672798}, //
+
43841 {3.47519994, 12.5691204}, //
+
43842 {3.47956991, 12.5707903}, //
+
43843 {3.48390007, 12.5722904}, //
+
43844 {3.48817992, 12.5736303}, //
+
43845 {3.49242997, 12.57481}, //
+
43846 {3.49663997, 12.5758104}, //
+
43847 {3.50079989, 12.5766497}, //
+
43848 {3.50487995, 12.5773602}, //
+
43849 {3.50884008, 12.5779896}, //
+
43850 {3.51267004, 12.5785398}, //
+
43851 {3.51638007, 12.5790005}, //
+
43852 {3.51995993, 12.57938}, //
+
43853 {3.5234201, 12.57967}, //
+
43854 {3.5267601, 12.5798798}, //
+
43855 {3.52996993, 12.5800104}, //
+
43856 {3.53305006, 12.5800505}, //
+
43857 {3.54830003, 12.5800505}, //
+
43858 {3.54868007, 12.5800104}, //
+
43859 {3.54906011, 12.5798798}, //
+
43860 {3.54942989, 12.57967}, //
+
43861 {3.54980993, 12.57938}, //
+
43862 {3.55018997, 12.5790005}, //
+
43863 {3.55057001, 12.5785398}, //
+
43864 {3.55094004, 12.5779896}, //
+
43865 {3.55132008, 12.5773602}, //
+
43866 {3.55207992, 12.5759401}, //
+
43867 {3.55244994, 12.5753098}, //
+
43868 {3.55282998, 12.5747604}, //
+
43869 {3.55320001, 12.5742998}, //
+
43870 {3.55357003, 12.5739202}, //
+
43871 {3.55394006, 12.5736303}, //
+
43872 {3.55431008, 12.5734196}, //
+
43873 {3.55468011, 12.5732899}, //
+
43874 {3.5550499, 12.5732498}, //
+
43875 {3.55540991, 12.5732098}, //
+
43876 {3.55572009, 12.5730801}, //
+
43877 {3.55598998, 12.5728703}, //
+
43878 {3.55623007, 12.5725803}, //
+
43879 {3.55641007, 12.5721998}, //
+
43880 {3.55656004, 12.5717402}, //
+
43881 {3.55666995, 12.5711899}, //
+
43882 {3.55673003, 12.5705605}, //
+
43883 {3.55675006, 12.56985}, //
+
43884 {3.55744004, 12.5697899}, //
+
43885 {3.5580101, 12.5696001}, //
+
43886 {3.55844998, 12.5692797}, //
+
43887 {3.55875993, 12.56884}, //
+
43888 {3.55894995, 12.5682802}, //
+
43889 {3.55902004, 12.5675802}, //
+
43890 {3.55894995, 12.5667601}, //
+
43891 {3.55875993, 12.5658197}, //
+
43892 {3.55844998, 12.5647497}, //
+
43893 {3.55804992, 12.5636301}, //
+
43894 {3.55761003, 12.5625}, //
+
43895 {3.5571301, 12.5613804}, //
+
43896 {3.55660009, 12.5602503}, //
+
43897 {3.55604005, 12.5591202}, //
+
43898 {3.55542994, 12.5579901}, //
+
43899 {3.55478001, 12.55686}, //
+
43900 {3.55408001, 12.5557299}, //
+
43901 {3.55334997, 12.5545998}, //
+
43902 {3.55259991, 12.5534897}, //
+
43903 {3.55186009, 12.5524197}, //
+
43904 {3.55111003, 12.5513897}, //
+
43905 {3.55035996, 12.5504103}, //
+
43906 {3.5496099, 12.5494699}, //
+
43907 {3.54886007, 12.5485802}, //
+
43908 {3.54811001, 12.5477304}, //
+
43909 {3.54734993, 12.5469198}, //
+
43910 {3.5466001, 12.5461502}, //
+
43911 {3.54626012, 12.5459805}, //
+
43912 {3.54584002, 12.5457697}, //
+
43913 {3.54525995, 12.5454798}, //
+
43914 {3.54450011, 12.5451002}, //
+
43915 {3.54358006, 12.5446396}, //
+
43916 {3.54249001, 12.5440903}, //
+
43917 {3.53979993, 12.5427504}, //
+
43918 {3.53915, 12.54111}, //
+
43919 {3.53871012, 12.5392303}, //
+
43920 {3.53848004, 12.5370903}, //
+
43921 {3.53846002, 12.5347004}, //
+
43922 {3.53865004, 12.5320597}, //
+
43923 {3.53904009, 12.52917}, //
+
43924 {3.53964996, 12.5260296}, //
+
43925 {3.54046988, 12.5226402}, //
+
43926 {3.54150009, 12.5190001}, //
+
43927 {3.54264998, 12.5151501}, //
+
43928 {3.54384995, 12.5111303}, //
+
43929 {3.54508996, 12.5069399}, //
+
43930 {3.54637003, 12.5025902}, //
+
43931 {3.54768991, 12.4980698}, //
+
43932 {3.54906011, 12.4933796}, //
+
43933 {3.5504601, 12.4885197}, //
+
43934 {3.55190992, 12.48349}, //
+
43935 {3.55340004, 12.4783001}, //
+
43936 {3.55403996, 12.4753504}, //
+
43937 {3.55447006, 12.4725304}, //
+
43938 {3.55468988, 12.4698296}, //
+
43939 {3.55470991, 12.4672499}, //
+
43940 {3.55451012, 12.4647999}, //
+
43941 {3.55411005, 12.4624796}, //
+
43942 {3.55349994, 12.4602804}, //
+
43943 {3.55268002, 12.4582005}, //
+
43944 {3.55165005, 12.4562502}, //
+
43945 {3.55042005, 12.4543505}, //
+
43946 {3.54899001, 12.4524097}, //
+
43947 {3.54733992, 12.4504299}, //
+
43948 {3.54548001, 12.4483995}, //
+
43949 {3.54342008, 12.4463396}, //
+
43950 {3.54114008, 12.4442301}, //
+
43951 {3.53865004, 12.4420795}, //
+
43952 {3.53595996, 12.4398804}, //
+
43953 {3.53305006, 12.4376497}, //
+
43954 {3.53003001, 12.4346304}, //
+
43955 {3.52852011, 12.4331198}, //
+
43956 {3.51944995, 12.4240503}, //
+
43957 {3.51724005, 12.42171}, //
+
43958 {3.5151, 12.4191999}, //
+
43959 {3.51306009, 12.4165297}, //
+
43960 {3.51109004, 12.4136801}, //
+
43961 {3.50921011, 12.4106703}, //
+
43962 {3.50741005, 12.4074898}, //
+
43963 {3.5056901, 12.40415}, //
+
43964 {3.50405002, 12.40063}, //
+
43965 {3.50250006, 12.3969498}, //
+
43966 {3.49780989, 12.3902502}, //
+
43967 {3.49278998, 12.3837099}, //
+
43968 {3.4874301, 12.3773403}, //
+
43969 {3.48172998, 12.37115}, //
+
43970 {3.47570992, 12.3651199}, //
+
43971 {3.46934009, 12.3592596}, //
+
43972 {3.46265006, 12.35357}, //
+
43973 {3.45562005, 12.3480501}, //
+
43974 {3.44825006, 12.3427}, //
+
43975 {3.44383001, 12.3390999}, //
+
43976 {3.43963003, 12.3358402}, //
+
43977 {3.43563008, 12.3329096}, //
+
43978 {3.43183994, 12.3303099}, //
+
43979 {3.42826009, 12.3280497}, //
+
43980 {3.42489004, 12.3261204}, //
+
43981 {3.42174006, 12.3245296}, //
+
43982 {3.4187901, 12.3232698}, //
+
43983 {3.41604996, 12.3223495}, //
+
43984 {3.41343999, 12.3216801}, //
+
43985 {3.41086006, 12.3211699}, //
+
43986 {3.40832996, 12.3208399}, //
+
43987 {3.40583992, 12.3206701}, //
+
43988 });
+
43989 polys.push_back({
+
43990 {0.313843995, 12.3547401}, //
+
43991 {0.312528014, 12.35532}, //
+
43992 {0.31099999, 12.3564301}, //
+
43993 {0.309260994, 12.3580904}, //
+
43994 {0.307310998, 12.3603001}, //
+
43995 {0.305150002, 12.3630505}, //
+
43996 {0.302915007, 12.3677998}, //
+
43997 {0.300720006, 12.3730097}, //
+
43998 {0.298566997, 12.3786802}, //
+
43999 {0.296454012, 12.3848104}, //
+
44000 {0.294380993, 12.3914003}, //
+
44001 {0.292349994, 12.3984499}, //
+
44002 {0.29035899, 12.4059601}, //
+
44003 {0.288408995, 12.4139204}, //
+
44004 {0.286500007, 12.4223499}, //
+
44005 {0.284684986, 12.4309702}, //
+
44006 {0.282994002, 12.4395199}, //
+
44007 {0.281428009, 12.4479704}, //
+
44008 {0.279985994, 12.4563503}, //
+
44009 {0.278670013, 12.4646301}, //
+
44010 {0.277478009, 12.4728403}, //
+
44011 {0.276410013, 12.4809599}, //
+
44012 {0.275467992, 12.4890003}, //
+
44013 {0.274650007, 12.4969501}, //
+
44014 {0.273936003, 12.50455}, //
+
44015 {0.273306996, 12.5115204}, //
+
44016 {0.272760987, 12.5178604}, //
+
44017 {0.272298992, 12.5235796}, //
+
44018 {0.271921992, 12.5286703}, //
+
44019 {0.271627992, 12.5331297}, //
+
44020 {0.271418005, 12.5369596}, //
+
44021 {0.271292001, 12.5401697}, //
+
44022 {0.27125001, 12.5427504}, //
+
44023 {0.271964014, 12.5442495}, //
+
44024 {0.272592992, 12.5457497}, //
+
44025 {0.273139, 12.5472603}, //
+
44026 {0.273600996, 12.5487604}, //
+
44027 {0.273977995, 12.5502701}, //
+
44028 {0.274271995, 12.5517702}, //
+
44029 {0.274482012, 12.5532799}, //
+
44030 {0.274607986, 12.5547895}, //
+
44031 {0.274650007, 12.5563002}, //
+
44032 {0.274650007, 12.56985}, //
+
44033 {0.27610901, 12.5659199}, //
+
44034 {0.277485013, 12.5616503}, //
+
44035 {0.278777987, 12.5570402}, //
+
44036 {0.279987991, 12.5521097}, //
+
44037 {0.281116009, 12.5468302}, //
+
44038 {0.282160997, 12.5412302}, //
+
44039 {0.283122987, 12.5352898}, //
+
44040 {0.28400299, 12.5290098}, //
+
44041 {0.284799993, 12.5223999}, //
+
44042 {0.285681009, 12.51336}, //
+
44043 {0.286812007, 12.5043097}, //
+
44044 {0.288194001, 12.4952698}, //
+
44045 {0.289826989, 12.4862204}, //
+
44046 {0.291709989, 12.4771795}, //
+
44047 {0.293844014, 12.4681301}, //
+
44048 {0.296229005, 12.4590902}, //
+
44049 {0.298864007, 12.4500399}, //
+
44050 {0.301750004, 12.441}, //
+
44051 {0.303240001, 12.4350204}, //
+
44052 {0.30468601, 12.4291201}, //
+
44053 {0.306089014, 12.4233103}, //
+
44054 {0.307449013, 12.4175701}, //
+
44055 {0.308764994, 12.4119196}, //
+
44056 {0.310039014, 12.4063597}, //
+
44057 {0.311268985, 12.4008703}, //
+
44058 {0.312456012, 12.3954697}, //
+
44059 {0.313600004, 12.3901501}, //
+
44060 {0.314648986, 12.3850603}, //
+
44061 {0.315530986, 12.3803501}, //
+
44062 {0.316244006, 12.3760099}, //
+
44063 {0.316790015, 12.3720503}, //
+
44064 {0.317167997, 12.3684702}, //
+
44065 {0.317378014, 12.3652601}, //
+
44066 {0.317420006, 12.3624296}, //
+
44067 {0.317294002, 12.3599796}, //
+
44068 {0.317000002, 12.3578997}, //
+
44069 {0.316527992, 12.3562899}, //
+
44070 {0.315843999, 12.3552303}, //
+
44071 {0.314949989, 12.3547201}, //
+
44072 });
+
44073 polys.push_back({
+
44074 {5.73149014, 12.0985699}, //
+
44075 {5.73118019, 12.09863}, //
+
44076 {5.73090982, 12.0987396}, //
+
44077 {5.73066998, 12.0988903}, //
+
44078 {5.73049021, 12.0990696}, //
+
44079 {5.73034, 12.0993099}, //
+
44080 {5.73022985, 12.0995798}, //
+
44081 {5.73016977, 12.0998898}, //
+
44082 {5.73015022, 12.1002502}, //
+
44083 {5.73016977, 12.1006098}, //
+
44084 {5.73022985, 12.1009197}, //
+
44085 {5.73034, 12.1011896}, //
+
44086 {5.73049021, 12.1014299}, //
+
44087 {5.73066998, 12.1016102}, //
+
44088 {5.73090982, 12.1017599}, //
+
44089 {5.73118019, 12.1018696}, //
+
44090 {5.73149014, 12.1019297}, //
+
44091 {5.73185015, 12.1019497}, //
+
44092 {5.73221016, 12.1019697}, //
+
44093 {5.7325201, 12.1020298}, //
+
44094 {5.73278999, 12.1021404}, //
+
44095 {5.73302984, 12.1022902}, //
+
44096 {5.73321009, 12.1024704}, //
+
44097 {5.73335981, 12.1027098}, //
+
44098 {5.73346996, 12.1029797}, //
+
44099 {5.73353004, 12.1032896}, //
+
44100 {5.73355007, 12.1036501}, //
+
44101 {5.73355007, 12.1053495}, //
+
44102 {5.73806, 12.1106195}, //
+
44103 {5.73968983, 12.1125202}, //
+
44104 {5.74157, 12.1147099}, //
+
44105 {5.74370003, 12.1171999}, //
+
44106 {5.74602985, 12.1199303}, //
+
44107 {5.74847984, 12.1228199}, //
+
44108 {5.75106001, 12.1258802}, //
+
44109 {5.75375986, 12.1291103}, //
+
44110 {5.75658989, 12.1325102}, //
+
44111 {5.75954008, 12.1360703}, //
+
44112 {5.76261997, 12.1397896}, //
+
44113 {5.76582003, 12.1436901}, //
+
44114 {5.76914978, 12.1477499}, //
+
44115 {5.77252007, 12.1519098}, //
+
44116 {5.77583981, 12.1561203}, //
+
44117 {5.77912998, 12.1603699}, //
+
44118 {5.78237009, 12.16465}, //
+
44119 {5.78557014, 12.1689796}, //
+
44120 {5.78873014, 12.1733503}, //
+
44121 {5.79184008, 12.1777601}, //
+
44122 {5.79491997, 12.18221}, //
+
44123 {5.79794979, 12.1866999}, //
+
44124 {5.80086994, 12.1937599}, //
+
44125 {5.80356979, 12.2013597}, //
+
44126 {5.80606985, 12.2095098}, //
+
44127 {5.80835009, 12.2181997}, //
+
44128 {5.81042004, 12.2274303}, //
+
44129 {5.81228018, 12.2372103}, //
+
44130 {5.81393003, 12.24753}, //
+
44131 {5.81537008, 12.2583904}, //
+
44132 {5.81659985, 12.2698002}, //
+
44133 {5.81766987, 12.2811203}, //
+
44134 {5.81861019, 12.2917299}, //
+
44135 {5.81942987, 12.30163}, //
+
44136 {5.82012987, 12.3108196}, //
+
44137 {5.82069016, 12.3192997}, //
+
44138 {5.8211298, 12.3270702}, //
+
44139 {5.82145023, 12.3341198}, //
+
44140 {5.82164001, 12.3404703}, //
+
44141 {5.8217001, 12.3460999}, //
+
44142 {5.8217802, 12.3523302}, //
+
44143 {5.82203007, 12.3589802}, //
+
44144 {5.82245016, 12.3660498}, //
+
44145 {5.82302999, 12.3735399}, //
+
44146 {5.82378006, 12.3814402}, //
+
44147 {5.82469988, 12.3897696}, //
+
44148 {5.82577991, 12.39851}, //
+
44149 {5.82703018, 12.40767}, //
+
44150 {5.8284502, 12.4172497}, //
+
44151 {5.82995987, 12.4267998}, //
+
44152 {5.83147001, 12.4358501}, //
+
44153 {5.83298016, 12.4443903}, //
+
44154 {5.83448982, 12.4524298}, //
+
44155 {5.83600998, 12.4599705}, //
+
44156 {5.83752012, 12.4670095}, //
+
44157 {5.83902979, 12.4735403}, //
+
44158 {5.84053993, 12.4795704}, //
+
44159 {5.84205008, 12.4850998}, //
+
44160 {5.84363985, 12.4888201}, //
+
44161 {5.84540987, 12.4924698}, //
+
44162 {5.84733009, 12.4960203}, //
+
44163 {5.84943008, 12.4995003}, //
+
44164 {5.85168982, 12.5028801}, //
+
44165 {5.85411978, 12.5061903}, //
+
44166 {5.85670996, 12.5094099}, //
+
44167 {5.85946989, 12.5125504}, //
+
44168 {5.86240005, 12.5156002}, //
+
44169 {5.86540985, 12.5185499}, //
+
44170 {5.86842012, 12.5213699}, //
+
44171 {5.87142992, 12.5240698}, //
+
44172 {5.87444019, 12.5266504}, //
+
44173 {5.87746, 12.5291004}, //
+
44174 {5.8804698, 12.5314198}, //
+
44175 {5.88348007, 12.5336199}, //
+
44176 {5.88648987, 12.5356998}, //
+
44177 {5.88950014, 12.5376501}, //
+
44178 {5.89243984, 12.5394297}, //
+
44179 {5.89520979, 12.5410099}, //
+
44180 {5.89780998, 12.5423698}, //
+
44181 {5.90023994, 12.5435305}, //
+
44182 {5.90250015, 12.5444698}, //
+
44183 {5.90459013, 12.5452099}, //
+
44184 {5.90650988, 12.5457296}, //
+
44185 {5.90826988, 12.5460501}, //
+
44186 {5.90985012, 12.5461502}, //
+
44187 {5.91052008, 12.5446396}, //
+
44188 {5.91102982, 12.5431299}, //
+
44189 {5.91135979, 12.5416203}, //
+
44190 {5.91153002, 12.5401096}, //
+
44191 {5.91153002, 12.5385904}, //
+
44192 {5.91135979, 12.5370798}, //
+
44193 {5.91102982, 12.5355701}, //
+
44194 {5.91052008, 12.5340595}, //
+
44195 {5.90985012, 12.5325499}, //
+
44196 {5.90904999, 12.5310898}, //
+
44197 {5.90817022, 12.5297203}, //
+
44198 {5.90720987, 12.5284204}, //
+
44199 {5.90616989, 12.5272102}, //
+
44200 {5.90503979, 12.5260801}, //
+
44201 {5.90383005, 12.5250397}, //
+
44202 {5.90253019, 12.5240803}, //
+
44203 {5.90115976, 12.5232}, //
+
44204 {5.89970016, 12.5223999}, //
+
44205 {5.89814997, 12.5207195}, //
+
44206 {5.89651012, 12.5187101}, //
+
44207 {5.89479017, 12.5163603}, //
+
44208 {5.8929801, 12.5136805}, //
+
44209 {5.89109993, 12.5106602}, //
+
44210 {5.8891201, 12.5073099}, //
+
44211 {5.88707018, 12.5036297}, //
+
44212 {5.88492012, 12.4996004}, //
+
44213 {5.88269997, 12.4952497}, //
+
44214 {5.88040018, 12.4907303}, //
+
44215 {5.87801981, 12.4862099}, //
+
44216 {5.87555981, 12.4816904}, //
+
44217 {5.87301016, 12.47717}, //
+
44218 {5.87036991, 12.4726496}, //
+
44219 {5.86766005, 12.4681396}, //
+
44220 {5.86485004, 12.4636202}, //
+
44221 {5.86196995, 12.4591103}, //
+
44222 {5.85900021, 12.4546003}, //
+
44223 {5.85753012, 12.4504604}, //
+
44224 {5.85615015, 12.4455605}, //
+
44225 {5.8548398, 12.4399099}, //
+
44226 {5.85363007, 12.4335003}, //
+
44227 {5.85248995, 12.4263401}, //
+
44228 {5.85143995, 12.4184198}, //
+
44229 {5.85048008, 12.40975}, //
+
44230 {5.84959984, 12.4003296}, //
+
44231 {5.84880018, 12.3901501}, //
+
44232 {5.84810019, 12.3795605}, //
+
44233 {5.84747982, 12.3688898}, //
+
44234 {5.84694004, 12.3581305}, //
+
44235 {5.84647989, 12.34729}, //
+
44236 {5.84610987, 12.33636}, //
+
44237 {5.84581995, 12.3253498}, //
+
44238 {5.84562016, 12.31425}, //
+
44239 {5.84548998, 12.3030701}, //
+
44240 {5.84544992, 12.2917995}, //
+
44241 {5.84544992, 12.2206497}, //
+
44242 {5.84524012, 12.2161102}, //
+
44243 {5.84461021, 12.2115202}, //
+
44244 {5.84357023, 12.2068901}, //
+
44245 {5.84210014, 12.2022305}, //
+
44246 {5.84021997, 12.1975098}, //
+
44247 {5.83792019, 12.1927605}, //
+
44248 {5.83519983, 12.1879702}, //
+
44249 {5.83205986, 12.1831303}, //
+
44250 {5.82849979, 12.1782503}, //
+
44251 {5.82464981, 12.1733704}, //
+
44252 {5.82063007, 12.1685305}, //
+
44253 {5.81644011, 12.1637402}, //
+
44254 {5.81208992, 12.1589899}, //
+
44255 {5.80756998, 12.1542702}, //
+
44256 {5.80287981, 12.1496096}, //
+
44257 {5.79801989, 12.1449804}, //
+
44258 {5.79299021, 12.1403904}, //
+
44259 {5.78779984, 12.13585}, //
+
44260 {5.78264999, 12.1314497}, //
+
44261 {5.77775002, 12.1273098}, //
+
44262 {5.7730999, 12.1234198}, //
+
44263 {5.76870012, 12.1197796}, //
+
44264 {5.76456022, 12.1163902}, //
+
44265 {5.76067019, 12.1132498}, //
+
44266 {5.75703001, 12.1103601}, //
+
44267 {5.75364017, 12.1077299}, //
+
44268 {5.7505002, 12.1053495}, //
+
44269 {5.74903011, 12.1053305}, //
+
44270 {5.74765015, 12.1052704}, //
+
44271 {5.7463398, 12.1051598}, //
+
44272 {5.74513006, 12.10501}, //
+
44273 {5.74398994, 12.1048298}, //
+
44274 {5.74293995, 12.1045904}, //
+
44275 {5.74198008, 12.1043196}, //
+
44276 {5.74109983, 12.1040096}, //
+
44277 {5.74030018, 12.1036501}, //
+
44278 {5.73958015, 12.1032696}, //
+
44279 {5.73889017, 12.10289}, //
+
44280 {5.73824978, 12.10252}, //
+
44281 {5.73764992, 12.1021404}, //
+
44282 {5.73709011, 12.1017599}, //
+
44283 {5.73656988, 12.1013803}, //
+
44284 {5.73609018, 12.1010103}, //
+
44285 {5.73565006, 12.1006298}, //
+
44286 {5.73525, 12.1002502}, //
+
44287 {5.73486996, 12.0998898}, //
+
44288 {5.73448992, 12.0995798}, //
+
44289 {5.73411989, 12.0993099}, //
+
44290 {5.73373985, 12.0990696}, //
+
44291 {5.73335981, 12.0988903}, //
+
44292 {5.73297977, 12.0987396}, //
+
44293 {5.73261023, 12.09863}, //
+
44294 {5.73223019, 12.0985699}, //
+
44295 {5.73185015, 12.0985498}, //
+
44296 });
+
44297 polys.push_back({
+
44298 {6.56713009, 11.9549961}, //
+
44299 {6.56688976, 11.9553938}, //
+
44300 {6.56661987, 11.9560032}, //
+
44301 {6.56630993, 11.9568224}, //
+
44302 {6.56594992, 11.9578505}, //
+
44303 {6.5655899, 11.9590254}, //
+
44304 {6.56527996, 11.9602823}, //
+
44305 {6.56501007, 11.9616222}, //
+
44306 {6.56477022, 11.9630451}, //
+
44307 {6.56458998, 11.964551}, //
+
44308 {6.56443977, 11.9661388}, //
+
44309 {6.5643301, 11.9678097}, //
+
44310 {6.56427002, 11.9695644}, //
+
44311 {6.56424999, 11.9714003}, //
+
44312 {6.56420994, 11.9732666}, //
+
44313 {6.56408024, 11.975091}, //
+
44314 {6.56386995, 11.9768724}, //
+
44315 {6.56358004, 11.97861}, //
+
44316 {6.5632, 11.9803038}, //
+
44317 {6.56273985, 11.9819555}, //
+
44318 {6.56219006, 11.9835644}, //
+
44319 {6.56156015, 11.9851284}, //
+
44320 {6.56110001, 11.9861078}, //
+
44321 {6.5610199, 11.9876823}, //
+
44322 {6.5608902, 11.99088}, //
+
44323 {6.56085014, 11.9934502}, //
+
44324 {6.56060982, 11.9937258}, //
+
44325 {6.56052017, 11.9951925}, //
+
44326 {6.56010008, 11.9990892}, //
+
44327 {6.55951977, 12.0027304}, //
+
44328 {6.55877018, 12.0061302}, //
+
44329 {6.55784988, 12.0092697}, //
+
44330 {6.55676985, 12.0121698}, //
+
44331 {6.55552006, 12.0148096}, //
+
44332 {6.55410004, 12.0172005}, //
+
44333 {6.55405998, 12.0187397}, //
+
44334 {6.55392981, 12.0203695}, //
+
44335 {6.55372, 12.0220804}, //
+
44336 {6.55343008, 12.02388}, //
+
44337 {6.55305004, 12.0257597}, //
+
44338 {6.55258989, 12.02773}, //
+
44339 {6.5520401, 12.0297899}, //
+
44340 {6.55184984, 12.0304604}, //
+
44341 {6.55145979, 12.0331898}, //
+
44342 {6.55064011, 12.0386801}, //
+
44343 {6.55052996, 12.0421801}, //
+
44344 {6.55032015, 12.0465803}, //
+
44345 {6.55003023, 12.0512199}, //
+
44346 {6.54965019, 12.0561199}, //
+
44347 {6.54919004, 12.0612602}, //
+
44348 {6.54863977, 12.0666599}, //
+
44349 {6.54800987, 12.0723}, //
+
44350 {6.54729986, 12.0782003}, //
+
44351 {6.54650021, 12.0841904}, //
+
44352 {6.54561996, 12.0901003}, //
+
44353 {6.54466009, 12.0959196}, //
+
44354 {6.54362011, 12.1016598}, //
+
44355 {6.54249001, 12.1073198}, //
+
44356 {6.54127979, 12.1128902}, //
+
44357 {6.53997993, 12.1183796}, //
+
44358 {6.53860998, 12.1237803}, //
+
44359 {6.53714991, 12.1290998}, //
+
44360 {6.53490019, 12.1366501}, //
+
44361 {6.53270006, 12.1442499}, //
+
44362 {6.53053999, 12.1518898}, //
+
44363 {6.52841997, 12.1595697}, //
+
44364 {6.52634001, 12.1672897}, //
+
44365 {6.52431011, 12.1750603}, //
+
44366 {6.52230978, 12.1828604}, //
+
44367 {6.52035999, 12.1907101}, //
+
44368 {6.51844978, 12.1985998}, //
+
44369 {6.51659012, 12.2063599}, //
+
44370 {6.51478004, 12.21383}, //
+
44371 {6.51300001, 12.2210102}, //
+
44372 {6.51126003, 12.22789}, //
+
44373 {6.50957012, 12.2344799}, //
+
44374 {6.50791979, 12.2407799}, //
+
44375 {6.50629997, 12.2467804}, //
+
44376 {6.50473022, 12.25249}, //
+
44377 {6.50320005, 12.2579002}, //
+
44378 {6.50244999, 12.26017}, //
+
44379 {6.50170994, 12.2624302}, //
+
44380 {6.50095987, 12.2646904}, //
+
44381 {6.50020981, 12.2669601}, //
+
44382 {6.49796009, 12.2737398}, //
+
44383 {6.49720001, 12.2759895}, //
+
44384 {6.49644995, 12.2782497}, //
+
44385 {6.49501991, 12.2828999}, //
+
44386 {6.49376011, 12.2877998}, //
+
44387 {6.49267006, 12.2929497}, //
+
44388 {6.49174976, 12.2983503}, //
+
44389 {6.49099016, 12.3040104}, //
+
44390 {6.49040985, 12.3099203}, //
+
44391 {6.48999023, 12.3160801}, //
+
44392 {6.48972988, 12.3224897}, //
+
44393 {6.48964977, 12.3291502}, //
+
44394 {6.48964977, 12.3562498}, //
+
44395 {6.49035978, 12.3577805}, //
+
44396 {6.49099016, 12.3593502}, //
+
44397 {6.49153996, 12.3609695}, //
+
44398 {6.4920001, 12.3626204}, //
+
44399 {6.49238014, 12.3643103}, //
+
44400 {6.49267006, 12.3660498}, //
+
44401 {6.49287987, 12.3678303}, //
+
44402 {6.49301004, 12.3696404}, //
+
44403 {6.4930501, 12.3715}, //
+
44404 {6.49301004, 12.3733702}, //
+
44405 {6.49287987, 12.3751898}, //
+
44406 {6.49267006, 12.3769703}, //
+
44407 {6.49238014, 12.3787098}, //
+
44408 {6.4920001, 12.3803997}, //
+
44409 {6.49153996, 12.3820601}, //
+
44410 {6.49099016, 12.3836603}, //
+
44411 {6.49035978, 12.3852301}, //
+
44412 {6.48964977, 12.3867502}, //
+
44413 {6.48889017, 12.3896904}, //
+
44414 {6.48814011, 12.3924599}, //
+
44415 {6.48738003, 12.3950596}, //
+
44416 {6.48662996, 12.3974895}, //
+
44417 {6.48586988, 12.3997498}, //
+
44418 {6.48511982, 12.4018402}, //
+
44419 {6.48436022, 12.40376}, //
+
44420 {6.48361015, 12.4055204}, //
+
44421 {6.48285007, 12.4070997}, //
+
44422 {6.4820199, 12.4085703}, //
+
44423 {6.48101997, 12.4099503}, //
+
44424 {6.47985983, 12.4112597}, //
+
44425 {6.47851992, 12.4124699}, //
+
44426 {6.47700977, 12.4136105}, //
+
44427 {6.47533989, 12.4146605}, //
+
44428 {6.47349977, 12.4156199}, //
+
44429 {6.47147989, 12.4165001}, //
+
44430 {6.46929979, 12.4173002}, //
+
44431 {6.46926022, 12.4180002}, //
+
44432 {6.46913004, 12.4186201}, //
+
44433 {6.46892023, 12.4191599}, //
+
44434 {6.46862984, 12.4196196}, //
+
44435 {6.4682498, 12.4199896}, //
+
44436 {6.46779013, 12.4202805}, //
+
44437 {6.46723986, 12.4204798}, //
+
44438 {6.46660995, 12.4206104}, //
+
44439 {6.46589994, 12.4206495}, //
+
44440 {6.46517992, 12.4221601}, //
+
44441 {6.46448994, 12.4236698}, //
+
44442 {6.46385002, 12.4251804}, //
+
44443 {6.46325016, 12.4266796}, //
+
44444 {6.46268988, 12.4281902}, //
+
44445 {6.46217012, 12.4296904}, //
+
44446 {6.46168995, 12.4312}, //
+
44447 {6.46124983, 12.4327002}, //
+
44448 {6.46084976, 12.4342003}, //
+
44449 {6.46049023, 12.43571}, //
+
44450 {6.46017981, 12.4372196}, //
+
44451 {6.45990992, 12.4387302}, //
+
44452 {6.45967007, 12.4402399}, //
+
44453 {6.45948982, 12.4417601}, //
+
44454 {6.4593401, 12.4432697}, //
+
44455 {6.45922995, 12.4447803}, //
+
44456 {6.45916986, 12.44629}, //
+
44457 {6.45914984, 12.4477997}, //
+
44458 {6.45910978, 12.4485598}, //
+
44459 {6.45898008, 12.4493103}, //
+
44460 {6.4587698, 12.4500704}, //
+
44461 {6.45847988, 12.45082}, //
+
44462 {6.45809984, 12.45158}, //
+
44463 {6.45764017, 12.4523296}, //
+
44464 {6.4570899, 12.4530897}, //
+
44465 {6.45646, 12.4538403}, //
+
44466 {6.45574999, 12.4546003}, //
+
44467 {6.45574999, 12.4342499}, //
+
44468 {6.45498991, 12.4335604}, //
+
44469 {6.45423985, 12.4329901}, //
+
44470 {6.45347977, 12.4325504}, //
+
44471 {6.45273018, 12.4322395}, //
+
44472 {6.4519701, 12.4320498}, //
+
44473 {6.45122004, 12.4319801}, //
+
44474 {6.45045996, 12.4320498}, //
+
44475 {6.44970989, 12.4322395}, //
+
44476 {6.44894981, 12.4325504}, //
+
44477 {6.4481802, 12.4330101}, //
+
44478 {6.44737005, 12.4336395}, //
+
44479 {6.44651985, 12.4344301}, //
+
44480 {6.44563007, 12.4353905}, //
+
44481 {6.44469023, 12.4365196}, //
+
44482 {6.44370985, 12.4378204}, //
+
44483 {6.44267988, 12.4392796}, //
+
44484 {6.44160986, 12.4409103}, //
+
44485 {6.44049978, 12.4427004}, //
+
44486 {6.43937016, 12.4445696}, //
+
44487 {6.43823004, 12.4463902}, //
+
44488 {6.43709993, 12.4481697}, //
+
44489 {6.43596983, 12.4499102}, //
+
44490 {6.43483019, 12.4516001}, //
+
44491 {6.43370008, 12.4532604}, //
+
44492 {6.43256998, 12.4548597}, //
+
44493 {6.43142986, 12.4564304}, //
+
44494 {6.43030024, 12.4579496}, //
+
44495 {6.42920017, 12.4594603}, //
+
44496 {6.42814016, 12.4609699}, //
+
44497 {6.42712021, 12.4624796}, //
+
44498 {6.42613983, 12.4639902}, //
+
44499 {6.42519999, 12.4655104}, //
+
44500 {6.42430019, 12.46702}, //
+
44501 {6.42343998, 12.4685297}, //
+
44502 {6.42262983, 12.4700403}, //
+
44503 {6.4218502, 12.47155}, //
+
44504 {6.42042017, 12.4745998}, //
+
44505 {6.41915989, 12.4777403}, //
+
44506 {6.41806984, 12.4809599}, //
+
44507 {6.41715002, 12.4842701}, //
+
44508 {6.41638994, 12.4876499}, //
+
44509 {6.41581011, 12.4911299}, //
+
44510 {6.41539001, 12.4946804}, //
+
44511 {6.41513014, 12.4983301}, //
+
44512 {6.41505003, 12.5020504}, //
+
44513 {6.41509008, 12.5057697}, //
+
44514 {6.41521978, 12.5094204}, //
+
44515 {6.41543007, 12.51297}, //
+
44516 {6.41571999, 12.5164499}, //
+
44517 {6.41610003, 12.5198298}, //
+
44518 {6.41656017, 12.52314}, //
+
44519 {6.41710997, 12.5263596}, //
+
44520 {6.41773987, 12.5295}, //
+
44521 {6.41844988, 12.5325499}, //
+
44522 {6.41855001, 12.5346699}, //
+
44523 {6.41886997, 12.5365}, //
+
44524 {6.4193902, 12.5380297}, //
+
44525 {6.42011976, 12.5392704}, //
+
44526 {6.42106009, 12.5402098}, //
+
44527 {6.42221022, 12.5408602}, //
+
44528 {6.42356014, 12.5412197}, //
+
44529 {6.42512989, 12.5412798}, //
+
44530 {6.42689991, 12.54105}, //
+
44531 {6.42873001, 12.5405302}, //
+
44532 {6.43042994, 12.53971}, //
+
44533 {6.43200016, 12.5386}, //
+
44534 {6.43345022, 12.5372}, //
+
44535 {6.43477011, 12.5354996}, //
+
44536 {6.43596983, 12.5335197}, //
+
44537 {6.43703985, 12.5312405}, //
+
44538 {6.43798018, 12.5286598}, //
+
44539 {6.43879986, 12.5257998}, //
+
44540 {6.4395299, 12.5236597}, //
+
44541 {6.44022989, 12.5217695}, //
+
44542 {6.44087982, 12.5201302}, //
+
44543 {6.44149017, 12.5187502}, //
+
44544 {6.44204998, 12.5176096}, //
+
44545 {6.44258022, 12.5167303}, //
+
44546 {6.44305992, 12.5160999}, //
+
44547 {6.44350004, 12.5157299}, //
+
44548 {6.44390011, 12.5156002}, //
+
44549 {6.44426012, 12.5156803}, //
+
44550 {6.44457006, 12.5159302}, //
+
44551 {6.44483995, 12.5163498}, //
+
44552 {6.4450798, 12.5169296}, //
+
44553 {6.44526005, 12.5176802}, //
+
44554 {6.44540977, 12.5186005}, //
+
44555 {6.44551992, 12.51968}, //
+
44556 {6.44558001, 12.5209303}, //
+
44557 {6.44560003, 12.5223503}, //
+
44558 {6.44560003, 12.5359497}, //
+
44559 {6.44564009, 12.5373402}, //
+
44560 {6.44576979, 12.5384703}, //
+
44561 {6.44597006, 12.5393496}, //
+
44562 {6.44625998, 12.5399799}, //
+
44563 {6.44663, 12.5403605}, //
+
44564 {6.44709015, 12.5404797}, //
+
44565 {6.44762993, 12.5403605}, //
+
44566 {6.44824982, 12.5399799}, //
+
44567 {6.44894981, 12.5393496}, //
+
44568 {6.44972992, 12.5385504}, //
+
44569 {6.45055008, 12.5376701}, //
+
44570 {6.45140982, 12.5367098}, //
+
44571 {6.45231009, 12.5356598}, //
+
44572 {6.45324993, 12.5345201}, //
+
44573 {6.45423985, 12.5333099}, //
+
44574 {6.45526981, 12.5319996}, //
+
44575 {6.45633984, 12.5306196}, //
+
44576 {6.45744991, 12.52915}, //
+
44577 {6.45855999, 12.5276499}, //
+
44578 {6.45963001, 12.5261497}, //
+
44579 {6.46065998, 12.5246401}, //
+
44580 {6.46163988, 12.52314}, //
+
44581 {6.4625802, 12.5216303}, //
+
44582 {6.46346998, 12.5201302}, //
+
44583 {6.46432018, 12.5186195}, //
+
44584 {6.46512985, 12.5171099}, //
+
44585 {6.46589994, 12.5156002}, //
+
44586 {6.46591997, 12.5134697}, //
+
44587 {6.46598005, 12.51159}, //
+
44588 {6.4660902, 12.5099602}, //
+
44589 {6.46623993, 12.5085802}, //
+
44590 {6.46642017, 12.5074501}, //
+
44591 {6.46666002, 12.5065804}, //
+
44592 {6.46692991, 12.50595}, //
+
44593 {6.46723986, 12.5055799}, //
+
44594 {6.46759987, 12.5054502}, //
+
44595 {6.46795988, 12.5055103}, //
+
44596 {6.46826982, 12.5057001}, //
+
44597 {6.46854019, 12.5060101}, //
+
44598 {6.46878004, 12.5064497}, //
+
44599 {6.46895981, 12.5070105}, //
+
44600 {6.46911001, 12.5076904}, //
+
44601 {6.46922016, 12.5085001}, //
+
44602 {6.46927977, 12.5094404}, //
+
44603 {6.46929979, 12.5105}, //
+
44604 {6.46929979, 12.5308504}, //
+
44605 {6.46933985, 12.5319595}, //
+
44606 {6.46947002, 12.5330296}, //
+
44607 {6.46967983, 12.5340595}, //
+
44608 {6.46997023, 12.5350504}, //
+
44609 {6.47034979, 12.5359898}, //
+
44610 {6.47080994, 12.53689}, //
+
44611 {6.47136021, 12.5377502}, //
+
44612 {6.47199011, 12.5385704}, //
+
44613 {6.47270012, 12.5393496}, //
+
44614 {6.47343016, 12.5400801}, //
+
44615 {6.47648001, 12.5431299}, //
+
44616 {6.47696018, 12.5436096}, //
+
44617 {6.47739983, 12.5440502}, //
+
44618 {6.47779989, 12.5444498}, //
+
44619 {6.4781599, 12.5447598}, //
+
44620 {6.47846985, 12.5449495}, //
+
44621 {6.47874022, 12.5450201}, //
+
44622 {6.47898006, 12.5449495}, //
+
44623 {6.47915983, 12.5447598}, //
+
44624 {6.47931004, 12.5444498}, //
+
44625 {6.47942019, 12.5440102}, //
+
44626 {6.47947979, 12.5434399}, //
+
44627 {6.47949982, 12.5427504}, //
+
44628 {6.48170996, 12.5353003}, //
+
44629 {6.48385, 12.5280199}, //
+
44630 {6.48588991, 12.5208998}, //
+
44631 {6.4878602, 12.5139503}, //
+
44632 {6.48973989, 12.5071697}, //
+
44633 {6.49153996, 12.5005503}, //
+
44634 {6.49325991, 12.4940996}, //
+
44635 {6.49490023, 12.4878197}, //
+
44636 {6.49644995, 12.4816999}, //
+
44637 {6.49803019, 12.4778299}, //
+
44638 {6.49979019, 12.4737501}, //
+
44639 {6.50170994, 12.4694595}, //
+
44640 {6.5037899, 12.4649496}, //
+
44641 {6.50605011, 12.4602404}, //
+
44642 {6.50847006, 12.4553204}, //
+
44643 {6.51106024, 12.4501896}, //
+
44644 {6.51382017, 12.44485}, //
+
44645 {6.51674986, 12.4392996}, //
+
44646 {6.51969004, 12.4337597}, //
+
44647 {6.52245998, 12.4284296}, //
+
44648 {6.52506018, 12.4233103}, //
+
44649 {6.52750015, 12.4183903}, //
+
44650 {6.52975988, 12.4136896}, //
+
44651 {6.53185987, 12.4091902}, //
+
44652 {6.53379011, 12.4048996}, //
+
44653 {6.53555012, 12.4008198}, //
+
44654 {6.53714991, 12.3969498}, //
+
44655 {6.54435015, 12.3860302}, //
+
44656 {6.55087996, 12.3758602}, //
+
44657 {6.55672979, 12.3664398}, //
+
44658 {6.56192017, 12.35777}, //
+
44659 {6.56644011, 12.3498602}, //
+
44660 {6.57028008, 12.3427095}, //
+
44661 {6.5734601, 12.3362999}, //
+
44662 {6.57596016, 12.3306503}, //
+
44663 {6.5777998, 12.3257504}, //
+
44664 {6.57926989, 12.3227701}, //
+
44665 {6.58064985, 12.3198795}, //
+
44666 {6.5819602, 12.31707}, //
+
44667 {6.58316994, 12.3143396}, //
+
44668 {6.58431005, 12.3116999}, //
+
44669 {6.58536005, 12.3091497}, //
+
44670 {6.58631992, 12.3066797}, //
+
44671 {6.58720016, 12.3043003}, //
+
44672 {6.58799982, 12.302}, //
+
44673 {6.59090996, 12.2975197}, //
+
44674 {6.5935998, 12.2931204}, //
+
44675 {6.59608984, 12.2888098}, //
+
44676 {6.59837008, 12.2845802}, //
+
44677 {6.60043001, 12.2804403}, //
+
44678 {6.60229015, 12.2763796}, //
+
44679 {6.60394001, 12.2723999}, //
+
44680 {6.60537004, 12.2685099}, //
+
44681 {6.60659981, 12.2646999}, //
+
44682 {6.6076498, 12.2609997}, //
+
44683 {6.60853004, 12.2574196}, //
+
44684 {6.60924006, 12.2539597}, //
+
44685 {6.60978985, 12.2506304}, //
+
44686 {6.61016989, 12.2474298}, //
+
44687 {6.61038017, 12.2443399}, //
+
44688 {6.61042023, 12.2413902}, //
+
44689 {6.61029005, 12.2385597}, //
+
44690 {6.61000013, 12.2358503}, //
+
44691 {6.60965014, 12.2333603}, //
+
44692 {6.6093502, 12.2311697}, //
+
44693 {6.60886002, 12.2276602}, //
+
44694 {6.60867977, 12.2263403}, //
+
44695 {6.60853004, 12.2253199}, //
+
44696 {6.60842991, 12.2245903}, //
+
44697 {6.6083498, 12.224}, //
+
44698 {6.60797024, 12.2251301}, //
+
44699 {6.6072998, 12.2271299}, //
+
44700 {6.60628986, 12.2301397}, //
+
44701 {6.60494995, 12.2341499}, //
+
44702 {6.60418987, 12.2364597}, //
+
44703 {6.60343981, 12.2388496}, //
+
44704 {6.60268021, 12.2413197}, //
+
44705 {6.60193014, 12.2438803}, //
+
44706 {6.60117006, 12.24652}, //
+
44707 {6.60042, 12.2492399}, //
+
44708 {6.59965992, 12.2520399}, //
+
44709 {6.59890985, 12.2549295}, //
+
44710 {6.59814978, 12.2579002}, //
+
44711 {6.59661007, 12.2609997}, //
+
44712 {6.59497976, 12.2642803}, //
+
44713 {6.59326982, 12.2677097}, //
+
44714 {6.59146976, 12.2713099}, //
+
44715 {6.58959007, 12.2750797}, //
+
44716 {6.58761978, 12.2790098}, //
+
44717 {6.58555984, 12.2831097}, //
+
44718 {6.5834198, 12.2873697}, //
+
44719 {6.58120012, 12.2917995}, //
+
44720 {6.57893991, 12.2962799}, //
+
44721 {6.5766902, 12.3006802}, //
+
44722 {6.57442999, 12.3049898}, //
+
44723 {6.57216978, 12.3092299}, //
+
44724 {6.56991005, 12.3133802}, //
+
44725 {6.56763983, 12.31744}, //
+
44726 {6.5653801, 12.3214302}, //
+
44727 {6.56311989, 12.3253298}, //
+
44728 {6.56085014, 12.3291502}, //
+
44729 {6.55777979, 12.3324099}, //
+
44730 {6.55458021, 12.3361797}, //
+
44731 {6.55124998, 12.3404398}, //
+
44732 {6.54780006, 12.3452101}, //
+
44733 {6.54421997, 12.3504896}, //
+
44734 {6.54052019, 12.3562603}, //
+
44735 {6.53669024, 12.3625402}, //
+
44736 {6.5327301, 12.3693199}, //
+
44737 {6.52864981, 12.3766003}, //
+
44738 {6.52461004, 12.3840504}, //
+
44739 {6.52078009, 12.3913298}, //
+
44740 {6.51715994, 12.3984499}, //
+
44741 {6.51375008, 12.4054003}, //
+
44742 {6.51055002, 12.4121799}, //
+
44743 {6.50755978, 12.4188004}, //
+
44744 {6.50477982, 12.4252501}, //
+
44745 {6.50221014, 12.43153}, //
+
44746 {6.4998498, 12.4376497}, //
+
44747 {6.49841976, 12.4404898}, //
+
44748 {6.49715996, 12.4429998}, //
+
44749 {6.49515009, 12.4470196}, //
+
44750 {6.4938035, 12.4496937}, //
+
44751 {6.4930501, 12.4511995}, //
+
44752 {6.49313021, 12.4510298}, //
+
44753 {6.4938035, 12.4496937}, //
+
44754 {6.49455976, 12.4481802}, //
+
44755 {6.49511003, 12.4470901}, //
+
44756 {6.49644995, 12.4443998}, //
+
44757 {6.49720001, 12.4420996}, //
+
44758 {6.49796009, 12.4397202}, //
+
44759 {6.49871016, 12.4372501}, //
+
44760 {6.49946022, 12.4347}, //
+
44761 {6.50020981, 12.4320602}, //
+
44762 {6.50095987, 12.4293299}, //
+
44763 {6.50170994, 12.4265203}, //
+
44764 {6.50244999, 12.4236298}, //
+
44765 {6.50320005, 12.4206495}, //
+
44766 {6.50391006, 12.4175997}, //
+
44767 {6.50453997, 12.4144602}, //
+
44768 {6.50509024, 12.4112396}, //
+
44769 {6.50554991, 12.4079304}, //
+
44770 {6.50592995, 12.4045496}, //
+
44771 {6.50621986, 12.4010696}, //
+
44772 {6.50643015, 12.3975201}, //
+
44773 {6.50655985, 12.3938704}, //
+
44774 {6.5065999, 12.3901501}, //
+
44775 {6.50902987, 12.3790197}, //
+
44776 {6.51179981, 12.3682203}, //
+
44777 {6.51490021, 12.3577604}, //
+
44778 {6.5183301, 12.3476295}, //
+
44779 {6.52209997, 12.3378296}, //
+
44780 {6.52619982, 12.3283701}, //
+
44781 {6.53063011, 12.3192501}, //
+
44782 {6.53539991, 12.3104601}, //
+
44783 {6.54050016, 12.302}, //
+
44784 {6.54285002, 12.2980003}, //
+
44785 {6.5453701, 12.2935495}, //
+
44786 {6.54804993, 12.2886295}, //
+
44787 {6.55089998, 12.2832499}, //
+
44788 {6.55391979, 12.2774096}, //
+
44789 {6.55709982, 12.2711096}, //
+
44790 {6.56045008, 12.2643499}, //
+
44791 {6.56397009, 12.2571297}, //
+
44792 {6.56764984, 12.2494497}, //
+
44793 {6.57129002, 12.2416401}, //
+
44794 {6.57467985, 12.2340498}, //
+
44795 {6.57781982, 12.2266598}, //
+
44796 {6.58070993, 12.21947}, //
+
44797 {6.58335018, 12.2124996}, //
+
44798 {6.58574009, 12.20574}, //
+
44799 {6.58788013, 12.1991796}, //
+
44800 {6.58975983, 12.1928396}, //
+
44801 {6.59140015, 12.1866999}, //
+
44802 {6.59275007, 12.1815395}, //
+
44803 {6.59381008, 12.1765804}, //
+
44804 {6.59458017, 12.1718302}, //
+
44805 {6.59505987, 12.1672897}, //
+
44806 {6.59524012, 12.1629601}, //
+
44807 {6.59512997, 12.1588297}, //
+
44808 {6.5947299, 12.1549101}, //
+
44809 {6.59403992, 12.1512003}, //
+
44810 {6.59305, 12.1477003}, //
+
44811 {6.59194994, 12.1443701}, //
+
44812 {6.59088993, 12.1411695}, //
+
44813 {6.58986998, 12.1380997}, //
+
44814 {6.58889008, 12.13515}, //
+
44815 {6.58795023, 12.1323299}, //
+
44816 {6.58704996, 12.1296301}, //
+
44817 {6.58619022, 12.1270599}, //
+
44818 {6.58538008, 12.1246204}, //
+
44819 {6.58459997, 12.1223001}, //
+
44820 {6.58388996, 12.1216097}, //
+
44821 {6.58326006, 12.1210403}, //
+
44822 {6.58270979, 12.1205997}, //
+
44823 {6.58225012, 12.1202898}, //
+
44824 {6.58187008, 12.1201}, //
+
44825 {6.58158016, 12.1200304}, //
+
44826 {6.58136988, 12.1201}, //
+
44827 {6.58124018, 12.1202898}, //
+
44828 {6.58120012, 12.1205997}, //
+
44829 {6.58120012, 12.1596003}, //
+
44830 {6.58033991, 12.1620197}, //
+
44831 {6.57926989, 12.1647797}, //
+
44832 {6.57799006, 12.1678801}, //
+
44833 {6.57650995, 12.1713104}, //
+
44834 {6.57481003, 12.1750803}, //
+
44835 {6.57290983, 12.1791801}, //
+
44836 {6.57079983, 12.1836205}, //
+
44837 {6.56848001, 12.1883898}, //
+
44838 {6.56594992, 12.1934996}, //
+
44839 {6.56334019, 12.19874}, //
+
44840 {6.56076002, 12.2038898}, //
+
44841 {6.55822992, 12.2089596}, //
+
44842 {6.55328989, 12.2188396}, //
+
44843 {6.55087996, 12.2236605}, //
+
44844 {6.54851007, 12.2283897}, //
+
44845 {6.54618979, 12.2330399}, //
+
44846 {6.54390001, 12.2376003}, //
+
44847 {6.54096985, 12.2421503}, //
+
44848 {6.53820992, 12.2467899}, //
+
44849 {6.53562021, 12.2515202}, //
+
44850 {6.53318977, 12.2563295}, //
+
44851 {6.53093004, 12.26122}, //
+
44852 {6.52883005, 12.2662001}, //
+
44853 {6.52690983, 12.2712603}, //
+
44854 {6.52513981, 12.2764101}, //
+
44855 {6.52355003, 12.2816496}, //
+
44856 {6.5227499, 12.2852898}, //
+
44857 {6.52187014, 12.2886801}, //
+
44858 {6.52090979, 12.2918196}, //
+
44859 {6.5198698, 12.2947102}, //
+
44860 {6.51874018, 12.2973499}, //
+
44861 {6.51752996, 12.2997398}, //
+
44862 {6.51623011, 12.3018799}, //
+
44863 {6.51486015, 12.3037596}, //
+
44864 {6.51340008, 12.3053999}, //
+
44865 {6.51338005, 12.3060904}, //
+
44866 {6.51331997, 12.3066597}, //
+
44867 {6.51320982, 12.3071003}, //
+
44868 {6.51306009, 12.3074102}, //
+
44869 {6.51287985, 12.3076}, //
+
44870 {6.51264, 12.3076696}, //
+
44871 {6.51237011, 12.3076}, //
+
44872 {6.51206017, 12.3074102}, //
+
44873 {6.51170015, 12.3071003}, //
+
44874 {6.51136017, 12.3066597}, //
+
44875 {6.51110983, 12.3060904}, //
+
44876 {6.51094007, 12.3053999}, //
+
44877 {6.51085997, 12.3045797}, //
+
44878 {6.51085997, 12.3036404}, //
+
44879 {6.51094007, 12.3025703}, //
+
44880 {6.51110983, 12.3013697}, //
+
44881 {6.51136017, 12.3000498}, //
+
44882 {6.51170015, 12.2986002}, //
+
44883 {6.51206017, 12.2971001}, //
+
44884 {6.51237011, 12.2955999}, //
+
44885 {6.51264, 12.2940903}, //
+
44886 {6.51287985, 12.2925901}, //
+
44887 {6.51306009, 12.2910805}, //
+
44888 {6.51320982, 12.2895803}, //
+
44889 {6.51331997, 12.2880697}, //
+
44890 {6.51338005, 12.2865601}, //
+
44891 {6.51340008, 12.2850504}, //
+
44892 {6.51411009, 12.2828398}, //
+
44893 {6.51473999, 12.2806997}, //
+
44894 {6.51528978, 12.2786598}, //
+
44895 {6.51574993, 12.2766895}, //
+
44896 {6.51612997, 12.2748098}, //
+
44897 {6.51641989, 12.2730103}, //
+
44898 {6.51663017, 12.2712898}, //
+
44899 {6.51675987, 12.2696505}, //
+
44900 {6.51679993, 12.2680998}, //
+
44901 {6.51686001, 12.2664404}, //
+
44902 {6.51704979, 12.2644901}, //
+
44903 {6.51736021, 12.2622499}, //
+
44904 {6.51779985, 12.2597103}, //
+
44905 {6.51836014, 12.2568903}, //
+
44906 {6.51904011, 12.2537699}, //
+
44907 {6.51984978, 12.25035}, //
+
44908 {6.5207901, 12.2466497}, //
+
44909 {6.52185011, 12.24265}, //
+
44910 {6.52299976, 12.2385502}, //
+
44911 {6.52419996, 12.2345304}, //
+
44912 {6.5254302, 12.2305899}, //
+
44913 {6.52671003, 12.2267399}, //
+
44914 {6.52802992, 12.2229795}, //
+
44915 {6.52937984, 12.2192898}, //
+
44916 {6.53077984, 12.2157001}, //
+
44917 {6.53221989, 12.2121801}, //
+
44918 {6.53369999, 12.2087498}, //
+
44919 {6.53517008, 12.2054701}, //
+
44920 {6.53655005, 12.2023897}, //
+
44921 {6.53785992, 12.1995201}, //
+
44922 {6.53907013, 12.1968603}, //
+
44923 {6.54020977, 12.1944103}, //
+
44924 {6.54125977, 12.1921701}, //
+
44925 {6.54222012, 12.1901398}, //
+
44926 {6.54309988, 12.1883202}, //
+
44927 {6.54390001, 12.1866999}, //
+
44928 {6.54472017, 12.1849499}, //
+
44929 {6.54566002, 12.1826897}, //
+
44930 {6.54673004, 12.1799297}, //
+
44931 {6.54792023, 12.1766701}, //
+
44932 {6.54924011, 12.1729002}, //
+
44933 {6.55068016, 12.1686296}, //
+
44934 {6.55223989, 12.1638603}, //
+
44935 {6.55392981, 12.1585798}, //
+
44936 {6.55574989, 12.1527996}, //
+
44937 {6.55760002, 12.14678}, //
+
44938 {6.55936003, 12.1407499}, //
+
44939 {6.56102991, 12.1347303}, //
+
44940 {6.56262016, 12.1287003}, //
+
44941 {6.56412983, 12.1226702}, //
+
44942 {6.56554985, 12.1166401}, //
+
44943 {6.56688976, 12.11061}, //
+
44944 {6.56814003, 12.1045799}, //
+
44945 {6.56930017, 12.0985498}, //
+
44946 {6.5703702, 12.0927401}, //
+
44947 {6.57131004, 12.0873404}, //
+
44948 {6.5721302, 12.0823603}, //
+
44949 {6.5728302, 12.0777998}, //
+
44950 {6.57339001, 12.0736504}, //
+
44951 {6.57383013, 12.0699301}, //
+
44952 {6.57415009, 12.0666199}, //
+
44953 {6.57433987, 12.0637302}, //
+
44954 {6.57439995, 12.0612497}, //
+
44955 {6.57437992, 12.0582199}, //
+
44956 {6.57431984, 12.0551395}, //
+
44957 {6.57421017, 12.0520296}, //
+
44958 {6.57405996, 12.0488701}, //
+
44959 {6.5738802, 12.0456696}, //
+
44960 {6.57363987, 12.0424299}, //
+
44961 {6.57336998, 12.0391397}, //
+
44962 {6.57306004, 12.03582}, //
+
44963 {6.57270002, 12.0324497}, //
+
44964 {6.57233, 12.0290403}, //
+
44965 {6.57195997, 12.0255899}, //
+
44966 {6.57158995, 12.02209}, //
+
44967 {6.57121992, 12.0185604}, //
+
44968 {6.5708499, 12.0149803}, //
+
44969 {6.57047987, 12.0113602}, //
+
44970 {6.57009983, 12.0077}, //
+
44971 {6.5697298, 12.0039997}, //
+
44972 {6.56934977, 12.0002499}, //
+
44973 {6.56899023, 11.9965248}, //
+
44974 {6.56867981, 11.9928818}, //
+
44975 {6.56840992, 11.9893217}, //
+
44976 {6.56817007, 11.9858446}, //
+
44977 {6.56798983, 11.9824514}, //
+
44978 {6.5678401, 11.9791393}, //
+
44979 {6.56772995, 11.9759102}, //
+
44980 {6.56766987, 11.972764}, //
+
44981 {6.56764984, 11.9696999}, //
+
44982 {6.56764984, 11.9561501}, //
+
44983 {6.56762981, 11.9554987}, //
+
44984 {6.56757021, 11.9550591}, //
+
44985 {6.56746006, 11.9548283}, //
+
44986 {6.56730986, 11.9548073}, //
+
44987 });
+
44988 polys.push_back({
+
44989 {6.47609997, 11.4645004}, //
+
44990 {6.47603989, 11.4647093}, //
+
44991 {6.47585011, 11.4653368}, //
+
44992 {6.47453022, 11.4697313}, //
+
44993 {6.47301006, 11.4747543}, //
+
44994 {6.47207022, 11.4778929}, //
+
44995 {6.47100019, 11.4814501}, //
+
44996 {6.46987009, 11.485301}, //
+
44997 {6.46872997, 11.4893188}, //
+
44998 {6.46759987, 11.4935064}, //
+
44999 {6.46646976, 11.49786}, //
+
45000 {6.46533012, 11.5023823}, //
+
45001 {6.46420002, 11.5070724}, //
+
45002 {6.46306992, 11.5119305}, //
+
45003 {6.4619298, 11.5169563}, //
+
45004 {6.46080017, 11.52215}, //
+
45005 {6.45970011, 11.5274057}, //
+
45006 {6.4586401, 11.5326195}, //
+
45007 {6.45762014, 11.5377893}, //
+
45008 {6.45663977, 11.5429153}, //
+
45009 {6.45569992, 11.5479994}, //
+
45010 {6.45480013, 11.5530386}, //
+
45011 {6.45393991, 11.5580359}, //
+
45012 {6.45312977, 11.5629902}, //
+
45013 {6.45235014, 11.5678997}, //
+
45014 {6.45160007, 11.5726957}, //
+
45015 {6.45084, 11.5772829}, //
+
45016 {6.45008993, 11.5816612}, //
+
45017 {6.44933987, 11.5858307}, //
+
45018 {6.4485898, 11.5897923}, //
+
45019 {6.44784021, 11.593544}, //
+
45020 {6.44709015, 11.5970879}, //
+
45021 {6.4463501, 11.6004229}, //
+
45022 {6.44560003, 11.60355}, //
+
45023 {6.44321012, 11.6105156}, //
+
45024 {6.44056988, 11.6178589}, //
+
45025 {6.43767023, 11.6255779}, //
+
45026 {6.43452978, 11.6336727}, //
+
45027 {6.43112993, 11.6421461}, //
+
45028 {6.42749023, 11.6509943}, //
+
45029 {6.42359018, 11.6602201}, //
+
45030 {6.41944981, 11.6698217}, //
+
45031 {6.41505003, 11.6798}, //
+
45032 {6.41053009, 11.6896639}, //
+
45033 {6.40601015, 11.6988993}, //
+
45034 {6.40149021, 11.7075062}, //
+
45035 {6.3969698, 11.7154837}, //
+
45036 {6.39244986, 11.7228336}, //
+
45037 {6.38793993, 11.7295561}, //
+
45038 {6.38341999, 11.7356491}, //
+
45039 {6.37891006, 11.7411137}, //
+
45040 {6.37440014, 11.7459497}, //
+
45041 {6.37046003, 11.7507439}, //
+
45042 {6.36617994, 11.7560806}, //
+
45043 {6.36156988, 11.761961}, //
+
45044 {6.35661983, 11.7683849}, //
+
45045 {6.35133982, 11.7753506}, //
+
45046 {6.34572983, 11.7828608}, //
+
45047 {6.33978987, 11.7909136}, //
+
45048 {6.33350992, 11.79951}, //
+
45049 {6.32690001, 11.80865}, //
+
45050 {6.32029009, 11.8178415}, //
+
45051 {6.31401014, 11.8265734}, //
+
45052 {6.30807018, 11.8348436}, //
+
45053 {6.30247021, 11.8426552}, //
+
45054 {6.29719019, 11.8500051}, //
+
45055 {6.29226017, 11.8568935}, //
+
45056 {6.28765011, 11.8633232}, //
+
45057 {6.28338003, 11.8692923}, //
+
45058 {6.27944994, 11.8747997}, //
+
45059 {6.27572012, 11.8799}, //
+
45060 {6.27207994, 11.8846674}, //
+
45061 {6.26851988, 11.8891001}, //
+
45062 {6.26504993, 11.8931999}, //
+
45063 {6.26165009, 11.8969669}, //
+
45064 {6.25833988, 11.9004002}, //
+
45065 {6.25510979, 11.9034996}, //
+
45066 {6.2519598, 11.9062672}, //
+
45067 {6.24889994, 11.9087}, //
+
45068 {6.24593019, 11.9110403}, //
+
45069 {6.2430501, 11.9135466}, //
+
45070 {6.2402401, 11.9162216}, //
+
45071 {6.23753023, 11.9190655}, //
+
45072 {6.23488998, 11.9220772}, //
+
45073 {6.23233986, 11.9252558}, //
+
45074 {6.22987986, 11.9286022}, //
+
45075 {6.22749996, 11.9321175}, //
+
45076 {6.22520018, 11.9357996}, //
+
45077 {6.22290993, 11.9386749}, //
+
45078 {6.22059011, 11.9412537}, //
+
45079 {6.21822023, 11.9435387}, //
+
45080 {6.21580982, 11.945528}, //
+
45081 {6.21335983, 11.9472227}, //
+
45082 {6.21086979, 11.9486217}, //
+
45083 {6.20834017, 11.9497271}, //
+
45084 {6.20576, 11.9505358}, //
+
45085 {6.2031498, 11.9510498}, //
+
45086 {6.20050001, 11.9514074}, //
+
45087 {6.19780016, 11.9517221}, //
+
45088 {6.19505978, 11.9519939}, //
+
45089 {6.1922698, 11.9522247}, //
+
45090 {6.18943977, 11.9524136}, //
+
45091 {6.18657017, 11.9525614}, //
+
45092 {6.18366003, 11.9526663}, //
+
45093 {6.18069983, 11.9527292}, //
+
45094 {6.17770004, 11.9527502}, //
+
45095 {6.17615986, 11.9520473}, //
+
45096 {6.17453003, 11.9514275}, //
+
45097 {6.17282009, 11.9508886}, //
+
45098 {6.17102003, 11.9504337}, //
+
45099 {6.16913986, 11.9500618}, //
+
45100 {6.16717005, 11.9497719}, //
+
45101 {6.16511011, 11.9495649}, //
+
45102 {6.16297007, 11.949441}, //
+
45103 {6.16074991, 11.9493999}, //
+
45104 {6.15774012, 11.9494619}, //
+
45105 {6.15472984, 11.9496489}, //
+
45106 {6.15172005, 11.9499607}, //
+
45107 {6.14870977, 11.9503984}, //
+
45108 {6.14568996, 11.9509592}, //
+
45109 {6.14268017, 11.9516439}, //
+
45110 {6.1396699, 11.9524546}, //
+
45111 {6.1366601, 11.9533901}, //
+
45112 {6.13364983, 11.9544497}, //
+
45113 {6.13068008, 11.9556036}, //
+
45114 {6.12778997, 11.9568014}, //
+
45115 {6.12498999, 11.9580393}, //
+
45116 {6.12227011, 11.9593191}, //
+
45117 {6.11962986, 11.9606409}, //
+
45118 {6.1170702, 11.9620056}, //
+
45119 {6.11460018, 11.9634123}, //
+
45120 {6.1122098, 11.96486}, //
+
45121 {6.1099, 11.9663496}, //
+
45122 {6.1068902, 11.9692774}, //
+
45123 {6.10387993, 11.9720364}, //
+
45124 {6.10087013, 11.9746284}, //
+
45125 {6.09785986, 11.9770508}, //
+
45126 {6.09484005, 11.9793072}, //
+
45127 {6.09182978, 11.9813938}, //
+
45128 {6.08881998, 11.9833136}, //
+
45129 {6.08581018, 11.9850664}, //
+
45130 {6.08279991, 11.9866505}, //
+
45131 {6.0813098, 11.9873638}, //
+
45132 {6.07986021, 11.9879932}, //
+
45133 {6.07846022, 11.9885387}, //
+
45134 {6.07708979, 11.9890013}, //
+
45135 {6.0757699, 11.989378}, //
+
45136 {6.07449007, 11.9896717}, //
+
45137 {6.07324982, 11.9898825}, //
+
45138 {6.07205009, 11.9900084}, //
+
45139 {6.07089996, 11.9900503}, //
+
45140 {6.06983995, 11.9900293}, //
+
45141 {6.06890011, 11.9899664}, //
+
45142 {6.06808996, 11.9898605}, //
+
45143 {6.06740999, 11.9897137}, //
+
45144 {6.06685019, 11.9895248}, //
+
45145 {6.06641006, 11.9892941}, //
+
45146 {6.06610012, 11.9890223}, //
+
45147 {6.06590986, 11.9887066}, //
+
45148 {6.06584978, 11.9883499}, //
+
45149 {6.06584978, 11.9748001}, //
+
45150 {6.0658102, 11.9737301}, //
+
45151 {6.06568003, 11.972785}, //
+
45152 {6.06547022, 11.9719667}, //
+
45153 {6.06517982, 11.9712744}, //
+
45154 {6.06479979, 11.9707069}, //
+
45155 {6.06434011, 11.9702673}, //
+
45156 {6.06378984, 11.9699516}, //
+
45157 {6.06315994, 11.9697628}, //
+
45158 {6.06244993, 11.9696999}, //
+
45159 {6.06161022, 11.9680738}, //
+
45160 {6.06060982, 11.9661961}, //
+
45161 {6.05943012, 11.9640675}, //
+
45162 {6.05809021, 11.9616852}, //
+
45163 {6.05659008, 11.9590521}, //
+
45164 {6.0549202, 11.9561672}, //
+
45165 {6.05308008, 11.9530296}, //
+
45166 {6.05107021, 11.9496412}, //
+
45167 {6.04890013, 11.9460001}, //
+
45168 {6.04593992, 11.9422541}, //
+
45169 {6.04310989, 11.9385481}, //
+
45170 {6.04040003, 11.9348831}, //
+
45171 {6.03781986, 11.9312592}, //
+
45172 {6.03535986, 11.9276762}, //
+
45173 {6.03303003, 11.9241333}, //
+
45174 {6.03082991, 11.9206314}, //
+
45175 {6.02874994, 11.9171696}, //
+
45176 {6.02680016, 11.9137497}, //
+
45177 {6.02494001, 11.9104662}, //
+
45178 {6.02312994, 11.9073915}, //
+
45179 {6.02135992, 11.9045277}, //
+
45180 {6.01961994, 11.9018726}, //
+
45181 {6.01794004, 11.8994293}, //
+
45182 {6.01629019, 11.8971939}, //
+
45183 {6.01467991, 11.8951702}, //
+
45184 {6.01312017, 11.8933554}, //
+
45185 {6.01160002, 11.8917503}, //
+
45186 {6.00996017, 11.8908272}, //
+
45187 {6.00808001, 11.8895702}, //
+
45188 {6.00593996, 11.8879776}, //
+
45189 {6.00355005, 11.8860512}, //
+
45190 {6.00090981, 11.88379}, //
+
45191 {5.99802017, 11.8811941}, //
+
45192 {5.9948802, 11.8782644}, //
+
45193 {5.99148989, 11.874999}, //
+
45194 {5.98785019, 11.8713999}, //
+
45195 {5.98407984, 11.8675909}, //
+
45196 {5.98031998, 11.863699}, //
+
45197 {5.9765501, 11.8597221}, //
+
45198 {5.97278023, 11.8556623}, //
+
45199 {5.96901989, 11.8515167}, //
+
45200 {5.96525002, 11.8472891}, //
+
45201 {5.96148014, 11.8429766}, //
+
45202 {5.9577198, 11.8385801}, //
+
45203 {5.95394993, 11.8340998}, //
+
45204 {5.95034981, 11.8295784}, //
+
45205 {5.94709015, 11.8250561}, //
+
45206 {5.94415998, 11.8205328}, //
+
45207 {5.94155979, 11.8160114}, //
+
45208 {5.93930006, 11.8114891}, //
+
45209 {5.93736982, 11.8069668}, //
+
45210 {5.93578005, 11.8024445}, //
+
45211 {5.93451977, 11.7979221}, //
+
45212 {5.93359995, 11.7933998}, //
+
45213 {5.93353987, 11.7911863}, //
+
45214 {5.93335009, 11.7890539}, //
+
45215 {5.93303013, 11.7870064}, //
+
45216 {5.93259001, 11.7850399}, //
+
45217 {5.9320302, 11.7831564}, //
+
45218 {5.9313302, 11.7813559}, //
+
45219 {5.93051004, 11.7796383}, //
+
45220 {5.9295702, 11.7780018}, //
+
45221 {5.92850018, 11.7764502}, //
+
45222 {5.92735004, 11.7748976}, //
+
45223 {5.92614985, 11.773262}, //
+
45224 {5.92492008, 11.7715445}, //
+
45225 {5.92363977, 11.7697439}, //
+
45226 {5.92231989, 11.7678604}, //
+
45227 {5.92096996, 11.7658939}, //
+
45228 {5.91956997, 11.7638464}, //
+
45229 {5.91812992, 11.761714}, //
+
45230 {5.91664982, 11.7594995}, //
+
45231 {5.91508007, 11.757906}, //
+
45232 {5.91338015, 11.7561436}, //
+
45233 {5.91156006, 11.7542171}, //
+
45234 {5.90960979, 11.7521219}, //
+
45235 {5.90753984, 11.7498608}, //
+
45236 {5.90534019, 11.7474327}, //
+
45237 {5.90301991, 11.7448387}, //
+
45238 {5.90056992, 11.7420778}, //
+
45239 {5.89799976, 11.73915}, //
+
45240 {5.89534998, 11.7359304}, //
+
45241 {5.89265013, 11.7322912}, //
+
45242 {5.88991022, 11.7282333}, //
+
45243 {5.88711977, 11.7237568}, //
+
45244 {5.88429022, 11.7188625}, //
+
45245 {5.88142014, 11.7135496}, //
+
45246 {5.87851, 11.707819}, //
+
45247 {5.87554979, 11.7016687}, //
+
45248 {5.87255001, 11.6950998}, //
+
45249 {5.8703599, 11.6928539}, //
+
45250 {5.86828995, 11.6906509}, //
+
45251 {5.86634016, 11.688489}, //
+
45252 {5.86453009, 11.6863689}, //
+
45253 {5.86283016, 11.6842909}, //
+
45254 {5.86125994, 11.6822557}, //
+
45255 {5.85981989, 11.6802616}, //
+
45256 {5.8585, 11.6783104}, //
+
45257 {5.8572998, 11.6764002}, //
+
45258 {5.8561902, 11.6745434}, //
+
45259 {5.85512018, 11.6727257}, //
+
45260 {5.85409021, 11.6709499}, //
+
45261 {5.85309982, 11.6692152}, //
+
45262 {5.85215998, 11.6675196}, //
+
45263 {5.85126019, 11.6658669}, //
+
45264 {5.85039997, 11.6642542}, //
+
45265 {5.84957981, 11.6626806}, //
+
45266 {5.84880018, 11.66115}, //
+
45267 {5.84808016, 11.6596909}, //
+
45268 {5.84739017, 11.6583147}, //
+
45269 {5.84674978, 11.6570225}, //
+
45270 {5.84614992, 11.6558123}, //
+
45271 {5.84559011, 11.6546841}, //
+
45272 {5.84506989, 11.6536388}, //
+
45273 {5.84459019, 11.6526766}, //
+
45274 {5.84415007, 11.6517973}, //
+
45275 {5.84375, 11.651}, //
+
45276 {5.84338999, 11.6502438}, //
+
45277 {5.84308004, 11.6494894}, //
+
45278 {5.84281015, 11.6487331}, //
+
45279 {5.84256983, 11.6479778}, //
+
45280 {5.84239006, 11.6472216}, //
+
45281 {5.84223986, 11.6464672}, //
+
45282 {5.84213018, 11.6457109}, //
+
45283 {5.8420701, 11.6449556}, //
+
45284 {5.84205008, 11.6442003}, //
+
45285 {5.84203005, 11.6434755}, //
+
45286 {5.84196997, 11.6427927}, //
+
45287 {5.84193993, 11.6426029}, //
+
45288 {5.82509995, 11.651}, //
+
45289 {5.80814981, 11.66115}, //
+
45290 {5.80851984, 11.6620941}, //
+
45291 {5.80881023, 11.6628294}, //
+
45292 {5.81018019, 11.6662922}, //
+
45293 {5.81080008, 11.6678658}, //
+
45294 {5.81150007, 11.6696501}, //
+
45295 {5.81226015, 11.6715593}, //
+
45296 {5.81301022, 11.6735086}, //
+
45297 {5.81376982, 11.6754999}, //
+
45298 {5.81451988, 11.6775312}, //
+
45299 {5.81527996, 11.6796036}, //
+
45300 {5.81603003, 11.6817169}, //
+
45301 {5.8167901, 11.6838703}, //
+
45302 {5.81754017, 11.6860647}, //
+
45303 {5.81829977, 11.6883001}, //
+
45304 {5.82056999, 11.6950674}, //
+
45305 {5.82132006, 11.6973219}, //
+
45306 {5.82208014, 11.6995783}, //
+
45307 {5.8228302, 11.7018328}, //
+
45308 {5.82509995, 11.7086}, //
+
45309 {5.82580996, 11.710783}, //
+
45310 {5.82643986, 11.7127981}, //
+
45311 {5.82699013, 11.7146444}, //
+
45312 {5.8274498, 11.7163229}, //
+
45313 {5.82782984, 11.7178354}, //
+
45314 {5.82812023, 11.7191782}, //
+
45315 {5.82833004, 11.7203531}, //
+
45316 {5.82846022, 11.7213602}, //
+
45317 {5.82849979, 11.7222004}, //
+
45318 {5.82931995, 11.7239199}, //
+
45319 {5.8302598, 11.7260571}, //
+
45320 {5.83132982, 11.728611}, //
+
45321 {5.83252001, 11.7315826}, //
+
45322 {5.83383989, 11.734972}, //
+
45323 {5.83527994, 11.7387781}, //
+
45324 {5.83684015, 11.743001}, //
+
45325 {5.83853006, 11.7476416}, //
+
45326 {5.84035015, 11.7526999}, //
+
45327 {5.84225988, 11.7579355}, //
+
45328 {5.84421015, 11.7630882}, //
+
45329 {5.84619999, 11.7681561}, //
+
45330 {5.84822989, 11.77314}, //
+
45331 {5.85029984, 11.7780399}, //
+
45332 {5.85241985, 11.782856}, //
+
45333 {5.85456991, 11.7875881}, //
+
45334 {5.85676003, 11.7922363}, //
+
45335 {5.85900021, 11.7967997}, //
+
45336 {5.86214018, 11.8006496}, //
+
45337 {5.86553001, 11.8046675}, //
+
45338 {5.86917019, 11.8088503}, //
+
45339 {5.87306023, 11.8132}, //
+
45340 {5.87720013, 11.8177166}, //
+
45341 {5.8815999, 11.8224001}, //
+
45342 {5.88625002, 11.8272495}, //
+
45343 {5.89115, 11.8322668}, //
+
45344 {5.89629984, 11.83745}, //
+
45345 {5.90163994, 11.8427687}, //
+
45346 {5.9071002, 11.8481712}, //
+
45347 {5.91269016, 11.8536558}, //
+
45348 {5.91840982, 11.8592234}, //
+
45349 {5.92425013, 11.8648729}, //
+
45350 {5.93021011, 11.8706064}, //
+
45351 {5.9362998, 11.876421}, //
+
45352 {5.94251013, 11.8823195}, //
+
45353 {5.94885015, 11.8882999}, //
+
45354 {5.95506001, 11.894166}, //
+
45355 {5.96089983, 11.8996983}, //
+
45356 {5.96636009, 11.9048939}, //
+
45357 {5.97144985, 11.9097567}, //
+
45358 {5.97616005, 11.9142847}, //
+
45359 {5.98049021, 11.918478}, //
+
45360 {5.98444986, 11.9223356}, //
+
45361 {5.98803997, 11.9258604}, //
+
45362 {5.99125004, 11.9290504}, //
+
45363 {5.99568987, 11.9328594}, //
+
45364 {5.99995995, 11.9367514}, //
+
45365 {6.00405979, 11.9407282}, //
+
45366 {6.0079999, 11.944788}, //
+
45367 {6.01176023, 11.9489326}, //
+
45368 {6.01535988, 11.9531612}, //
+
45369 {6.01878977, 11.9574728}, //
+
45370 {6.0220499, 11.9618702}, //
+
45371 {6.02514982, 11.9663496}, //
+
45372 {6.02814007, 11.9707355}, //
+
45373 {6.03108978, 11.9748707}, //
+
45374 {6.03398991, 11.978756}, //
+
45375 {6.03685999, 11.9823904}, //
+
45376 {6.03968, 11.9857731}, //
+
45377 {6.04245996, 11.9889059}, //
+
45378 {6.04519987, 11.9917879}, //
+
45379 {6.0479002, 11.9944191}, //
+
45380 {6.05054998, 11.9968004}, //
+
45381 {6.0531702, 11.9989834}, //
+
45382 {6.05574989, 12.0010004}, //
+
45383 {6.05829, 12.00284}, //
+
45384 {6.06078005, 12.0045204}, //
+
45385 {6.06323004, 12.0060301}, //
+
45386 {6.06563997, 12.0073795}, //
+
45387 {6.06799984, 12.0085497}, //
+
45388 {6.07032013, 12.0095596}, //
+
45389 {6.07259989, 12.0103998}, //
+
45390 {6.07259989, 12.0121002}, //
+
45391 {6.07257986, 12.0124798}, //
+
45392 {6.07251978, 12.0128603}, //
+
45393 {6.07241011, 12.0132303}, //
+
45394 {6.0722599, 12.0136099}, //
+
45395 {6.07208014, 12.0139904}, //
+
45396 {6.07183981, 12.01437}, //
+
45397 {6.07156992, 12.01474}, //
+
45398 {6.07125998, 12.0151196}, //
+
45399 {6.07089996, 12.0155001}, //
+
45400 {6.07053995, 12.0159197}, //
+
45401 {6.07023001, 12.0164204}, //
+
45402 {6.06996012, 12.0170097}, //
+
45403 {6.06971979, 12.0176697}, //
+
45404 {6.06954002, 12.0184202}, //
+
45405 {6.06938982, 12.0192604}, //
+
45406 {6.06928015, 12.0201702}, //
+
45407 {6.06922007, 12.0211697}, //
+
45408 {6.06920004, 12.0222502}, //
+
45409 {6.06918001, 12.0233803}, //
+
45410 {6.06911993, 12.0245199}, //
+
45411 {6.06900978, 12.02565}, //
+
45412 {6.06886005, 12.0267801}, //
+
45413 {6.06867981, 12.0279198}, //
+
45414 {6.06843996, 12.0290499}, //
+
45415 {6.06817007, 12.03018}, //
+
45416 {6.06786013, 12.0313196}, //
+
45417 {6.06750011, 12.0324497}, //
+
45418 {6.06713009, 12.0335999}, //
+
45419 {6.06676006, 12.0347996}, //
+
45420 {6.06639004, 12.0360298}, //
+
45421 {6.06602001, 12.0373096}, //
+
45422 {6.06564999, 12.0386295}, //
+
45423 {6.06527996, 12.0399799}, //
+
45424 {6.06489992, 12.0413799}, //
+
45425 {6.0645299, 12.04282}, //
+
45426 {6.06414986, 12.0443001}, //
+
45427 {6.06374979, 12.0458899}, //
+
45428 {6.06331015, 12.0476599}, //
+
45429 {6.06282997, 12.0495796}, //
+
45430 {6.06230021, 12.0516796}, //
+
45431 {6.06173992, 12.0539398}, //
+
45432 {6.06113005, 12.0563698}, //
+
45433 {6.06048012, 12.05896}, //
+
45434 {6.05978012, 12.0617199}, //
+
45435 {6.05905008, 12.0646496}, //
+
45436 {6.05834007, 12.0691099}, //
+
45437 {6.05771017, 12.0734396}, //
+
45438 {6.0571599, 12.0776501}, //
+
45439 {6.05670023, 12.0817299}, //
+
45440 {6.05632019, 12.0856895}, //
+
45441 {6.0560298, 12.0895205}, //
+
45442 {6.05581999, 12.0932198}, //
+
45443 {6.05568981, 12.0967999}, //
+
45444 {6.05565023, 12.1002502}, //
+
45445 {6.05565023, 12.1290998}, //
+
45446 {6.05632019, 12.13449}, //
+
45447 {6.05682993, 12.1401396}, //
+
45448 {6.0571599, 12.1460304}, //
+
45449 {6.05733013, 12.1521797}, //
+
45450 {6.05733013, 12.1585798}, //
+
45451 {6.0571599, 12.1652298}, //
+
45452 {6.05682993, 12.1721401}, //
+
45453 {6.05632019, 12.1792898}, //
+
45454 {6.05565023, 12.1866999}, //
+
45455 {6.0548501, 12.1918497}, //
+
45456 {6.05396986, 12.1967497}, //
+
45457 {6.05300999, 12.2013998}, //
+
45458 {6.05195999, 12.2058001}, //
+
45459 {6.05081987, 12.20994}, //
+
45460 {6.04961014, 12.21383}, //
+
45461 {6.04829979, 12.2174702}, //
+
45462 {6.04691982, 12.2208595}, //
+
45463 {6.04545021, 12.224}, //
+
45464 {6.04399014, 12.2269402}, //
+
45465 {6.04262018, 12.2297096}, //
+
45466 {6.04131985, 12.2323103}, //
+
45467 {6.04011011, 12.2347403}, //
+
45468 {6.03898001, 12.2370005}, //
+
45469 {6.03794003, 12.23909}, //
+
45470 {6.03698015, 12.2410097}, //
+
45471 {6.03609991, 12.2427702}, //
+
45472 {6.03529978, 12.2443504}, //
+
45473 {6.03455019, 12.2451897}, //
+
45474 {6.03379011, 12.2461901}, //
+
45475 {6.03304005, 12.2473698}, //
+
45476 {6.03228998, 12.2487097}, //
+
45477 {6.03153992, 12.2502098}, //
+
45478 {6.03078985, 12.2518797}, //
+
45479 {6.03003979, 12.2537203}, //
+
45480 {6.02930021, 12.2557297}, //
+
45481 {6.02855015, 12.2579002}, //
+
45482 {6.02857018, 12.25949}, //
+
45483 {6.02862978, 12.26126}, //
+
45484 {6.02872992, 12.2631798}, //
+
45485 {6.02888012, 12.2652798}, //
+
45486 {6.02905989, 12.26754}, //
+
45487 {6.02928019, 12.2699699}, //
+
45488 {6.02955008, 12.2725601}, //
+
45489 {6.02985001, 12.2753201}, //
+
45490 {6.0302, 12.2782497}, //
+
45491 {6.03060007, 12.28127}, //
+
45492 {6.03104019, 12.2842903}, //
+
45493 {6.03151989, 12.2873096}, //
+
45494 {6.03205013, 12.2903299}, //
+
45495 {6.03260994, 12.2933502}, //
+
45496 {6.03321981, 12.29636}, //
+
45497 {6.03387022, 12.2993803}, //
+
45498 {6.03457022, 12.3023901}, //
+
45499 {6.03529978, 12.3053999}, //
+
45500 {6.03814983, 12.3113403}, //
+
45501 {6.04066992, 12.3171101}, //
+
45502 {6.04286003, 12.3227196}, //
+
45503 {6.04470015, 12.3281603}, //
+
45504 {6.04620981, 12.3334303}, //
+
45505 {6.04738998, 12.3385296}, //
+
45506 {6.04823017, 12.3434696}, //
+
45507 {6.0487299, 12.3482399}, //
+
45508 {6.04890013, 12.35285}, //
+
45509 {6.04892015, 12.3575401}, //
+
45510 {6.04898024, 12.3625603}, //
+
45511 {6.0490799, 12.3679199}, //
+
45512 {6.0492301, 12.37362}, //
+
45513 {6.04940987, 12.3796396}, //
+
45514 {6.04963017, 12.3860102}, //
+
45515 {6.04990005, 12.3927002}, //
+
45516 {6.05019999, 12.3997297}, //
+
45517 {6.05054998, 12.4070997}, //
+
45518 {6.05095005, 12.4145498}, //
+
45519 {6.05139017, 12.4218302}, //
+
45520 {6.05186987, 12.4289503}, //
+
45521 {6.05240011, 12.4358997}, //
+
45522 {6.05295992, 12.4426804}, //
+
45523 {6.05356979, 12.4492998}, //
+
45524 {6.0542202, 12.4557505}, //
+
45525 {6.0549202, 12.4620304}, //
+
45526 {6.05565023, 12.4681501}, //
+
45527 {6.05653, 12.4719}, //
+
45528 {6.0576601, 12.4756002}, //
+
45529 {6.05904007, 12.4792604}, //
+
45530 {6.06067991, 12.4828796}, //
+
45531 {6.06256008, 12.4864597}, //
+
45532 {6.06469011, 12.4899902}, //
+
45533 {6.06708002, 12.4934902}, //
+
45534 {6.06970978, 12.4969397}, //
+
45535 {6.07259989, 12.50035}, //
+
45536 {6.07563019, 12.5036802}, //
+
45537 {6.07871008, 12.5068798}, //
+
45538 {6.08182001, 12.5099497}, //
+
45539 {6.08498001, 12.5129004}, //
+
45540 {6.08818007, 12.5157204}, //
+
45541 {6.09142017, 12.5184202}, //
+
45542 {6.09470987, 12.5209904}, //
+
45543 {6.09803009, 12.5234299}, //
+
45544 {6.1013999, 12.5257502}, //
+
45545 {6.10469007, 12.5279303}, //
+
45546 {6.10777998, 12.5299501}, //
+
45547 {6.11065006, 12.5317898}, //
+
45548 {6.11330986, 12.5334702}, //
+
45549 {6.11575985, 12.5349798}, //
+
45550 {6.11800003, 12.5363302}, //
+
45551 {6.12002993, 12.5375004}, //
+
45552 {6.12184, 12.5385103}, //
+
45553 {6.1234498, 12.5393496}, //
+
45554 {6.12352991, 12.54006}, //
+
45555 {6.12378979, 12.5406904}, //
+
45556 {6.12420988, 12.5412397}, //
+
45557 {6.12479019, 12.5417004}, //
+
45558 {6.12554979, 12.5420799}, //
+
45559 {6.12647009, 12.5423698}, //
+
45560 {6.12756014, 12.5425797}, //
+
45561 {6.12881994, 12.5427103}, //
+
45562 {6.13024998, 12.5427504}, //
+
45563 {6.13705015, 12.5393496}, //
+
45564 {6.13671017, 12.53901}, //
+
45565 {6.13629007, 12.5385904}, //
+
45566 {6.13024998, 12.5325499}, //
+
45567 {6.12873983, 12.5310097}, //
+
45568 {6.12723017, 12.5293798}, //
+
45569 {6.12572002, 12.5276699}, //
+
45570 {6.12420988, 12.5258703}, //
+
45571 {6.1226902, 12.5239897}, //
+
45572 {6.12118006, 12.5220203}, //
+
45573 {6.11966991, 12.5199604}, //
+
45574 {6.11815977, 12.5178204}, //
+
45575 {6.1166501, 12.5156002}, //
+
45576 {6.11519003, 12.5132999}, //
+
45577 {6.11382008, 12.5109196}, //
+
45578 {6.11252022, 12.50846}, //
+
45579 {6.11131001, 12.5059099}, //
+
45580 {6.1101799, 12.5032701}, //
+
45581 {6.10913992, 12.5005598}, //
+
45582 {6.10818005, 12.4977503}, //
+
45583 {6.1072998, 12.4948702}, //
+
45584 {6.10650015, 12.4919004}, //
+
45585 {6.10571003, 12.4887896}, //
+
45586 {6.1048398, 12.4855204}, //
+
45587 {6.10387993, 12.4820805}, //
+
45588 {6.10283995, 12.4784803}, //
+
45589 {6.10170984, 12.4747105}, //
+
45590 {6.10050011, 12.4707699}, //
+
45591 {6.09919977, 12.4666595}, //
+
45592 {6.09781981, 12.4623899}, //
+
45593 {6.09635019, 12.4579496}, //
+
45594 {6.09484005, 12.4526196}, //
+
45595 {6.09332991, 12.4471598}, //
+
45596 {6.09181976, 12.4415798}, //
+
45597 {6.0903101, 12.4358702}, //
+
45598 {6.08878994, 12.4300299}, //
+
45599 {6.0872798, 12.4240599}, //
+
45600 {6.08577013, 12.4179697}, //
+
45601 {6.08425999, 12.4117498}, //
+
45602 {6.08274984, 12.4054003}, //
+
45603 {6.08132982, 12.3991899}, //
+
45604 {6.08008003, 12.3933496}, //
+
45605 {6.079, 12.3878899}, //
+
45606 {6.07808018, 12.3828096}, //
+
45607 {6.07733011, 12.3781099}, //
+
45608 {6.0767498, 12.3737803}, //
+
45609 {6.07633018, 12.3698301}, //
+
45610 {6.07607985, 12.36625}, //
+
45611 {6.07600021, 12.3630505}, //
+
45612 {6.07598019, 12.3599195}, //
+
45613 {6.0759201, 12.3565903}, //
+
45614 {6.07580996, 12.3530397}, //
+
45615 {6.07566023, 12.3492899}, //
+
45616 {6.07547998, 12.3453302}, //
+
45617 {6.07524014, 12.3411598}, //
+
45618 {6.07496977, 12.3367796}, //
+
45619 {6.07465982, 12.3322001}, //
+
45620 {6.07429981, 12.3274002}, //
+
45621 {6.0739398, 12.3225698}, //
+
45622 {6.07362986, 12.3178701}, //
+
45623 {6.07335997, 12.3132896}, //
+
45624 {6.07312012, 12.3088398}, //
+
45625 {6.07293987, 12.3045101}, //
+
45626 {6.07279015, 12.3003101}, //
+
45627 {6.07268, 12.2962303}, //
+
45628 {6.07261992, 12.2922802}, //
+
45629 {6.07259989, 12.2884502}, //
+
45630 {6.07188988, 12.2819099}, //
+
45631 {6.07125998, 12.2758799}, //
+
45632 {6.07071018, 12.2703505}, //
+
45633 {6.07025003, 12.2653198}, //
+
45634 {6.06987, 12.2608004}, //
+
45635 {6.06958008, 12.2567797}, //
+
45636 {6.06936979, 12.2532701}, //
+
45637 {6.06924009, 12.2502604}, //
+
45638 {6.06920004, 12.2477503}, //
+
45639 {6.06920004, 12.2409496}, //
+
45640 {6.06922007, 12.2347403}, //
+
45641 {6.06928015, 12.2281504}, //
+
45642 {6.06938982, 12.22118}, //
+
45643 {6.06954002, 12.2138395}, //
+
45644 {6.06971979, 12.2061195}, //
+
45645 {6.06996012, 12.19802}, //
+
45646 {6.07023001, 12.1895399}, //
+
45647 {6.07053995, 12.1806803}, //
+
45648 {6.07089996, 12.1714497}, //
+
45649 {6.07138014, 12.1623096}, //
+
45650 {6.07208014, 12.1537104}, //
+
45651 {6.07297993, 12.1456604}, //
+
45652 {6.07409, 12.1381502}, //
+
45653 {6.07540989, 12.1311798}, //
+
45654 {6.07694006, 12.1247597}, //
+
45655 {6.07869005, 12.1188803}, //
+
45656 {6.08063984, 12.1135397}, //
+
45657 {6.08279991, 12.1087503}, //
+
45658 {6.08421993, 12.1049404}, //
+
45659 {6.0854702, 12.1010504}, //
+
45660 {6.08655024, 12.0970697}, //
+
45661 {6.08747005, 12.0930099}, //
+
45662 {6.08822012, 12.08887}, //
+
45663 {6.08879995, 12.0846395}, //
+
45664 {6.08922005, 12.0803299}, //
+
45665 {6.08946991, 12.0759296}, //
+
45666 {6.08955002, 12.0714502}, //
+
45667 {6.08965015, 12.0662403}, //
+
45668 {6.08997011, 12.0611496}, //
+
45669 {6.09048986, 12.05618}, //
+
45670 {6.0912199, 12.0513496}, //
+
45671 {6.09216022, 12.0466404}, //
+
45672 {6.09330988, 12.0420504}, //
+
45673 {6.09465981, 12.03759}, //
+
45674 {6.09623003, 12.0332603}, //
+
45675 {6.09800005, 12.0290499}, //
+
45676 {6.10028982, 12.0250101}, //
+
45677 {6.10337019, 12.0211802}, //
+
45678 {6.1072402, 12.01756}, //
+
45679 {6.11191988, 12.0141497}, //
+
45680 {6.11738014, 12.0109501}, //
+
45681 {6.12364006, 12.0079603}, //
+
45682 {6.13070011, 12.0051804}, //
+
45683 {6.1385498, 12.0026102}, //
+
45684 {6.14720011, 12.0002499}, //
+
45685 {6.15311003, 11.9981089}, //
+
45686 {6.15876007, 11.9962196}, //
+
45687 {6.16416979, 11.9945831}, //
+
45688 {6.16932011, 11.9931984}, //
+
45689 {6.17422009, 11.9920654}, //
+
45690 {6.1788702, 11.9911833}, //
+
45691 {6.18325996, 11.9905539}, //
+
45692 {6.18740988, 11.9901762}, //
+
45693 {6.19129992, 11.9900503}, //
+
45694 {6.19506979, 11.9900923}, //
+
45695 {6.19883013, 11.9902182}, //
+
45696 {6.2026, 11.990428}, //
+
45697 {6.20636988, 11.9907217}, //
+
45698 {6.21013021, 11.9910994}, //
+
45699 {6.21390009, 11.9915609}, //
+
45700 {6.21766996, 11.9921074}, //
+
45701 {6.22142982, 11.9927359}, //
+
45702 {6.22520018, 11.9934502}, //
+
45703 {6.22740984, 11.9941645}, //
+
45704 {6.22954988, 11.9947929}, //
+
45705 {6.23158979, 11.9953394}, //
+
45706 {6.23356009, 11.995801}, //
+
45707 {6.23543978, 11.9961777}, //
+
45708 {6.23723984, 11.9964724}, //
+
45709 {6.23895979, 11.9966822}, //
+
45710 {6.24060011, 11.9968081}, //
+
45711 {6.24214983, 11.99685}, //
+
45712 {6.24514008, 11.9959059}, //
+
45713 {6.24808979, 11.994586}, //
+
45714 {6.25098991, 11.9928894}, //
+
45715 {6.25386, 11.9908152}, //
+
45716 {6.25668001, 11.9883652}, //
+
45717 {6.25945997, 11.9855394}, //
+
45718 {6.26219988, 11.982336}, //
+
45719 {6.26490021, 11.978756}, //
+
45720 {6.26754999, 11.9748001}, //
+
45721 {6.27013016, 11.9707193}, //
+
45722 {6.27258015, 11.9667625}, //
+
45723 {6.27490997, 11.9629326}, //
+
45724 {6.2771101, 11.9592304}, //
+
45725 {6.27918005, 11.9556522}, //
+
45726 {6.28112984, 11.9521999}, //
+
45727 {6.28294992, 11.9488745}, //
+
45728 {6.28463984, 11.9456739}, //
+
45729 {6.28620005, 11.9426003}, //
+
45730 {6.28620005, 11.9392004}, //
+
45731 {6.28691006, 11.93857}, //
+
45732 {6.28753996, 11.9381933}, //
+
45733 {6.28809023, 11.9380674}, //
+
45734 {6.2885499, 11.9381933}, //
+
45735 {6.28892994, 11.93857}, //
+
45736 {6.28921986, 11.9392004}, //
+
45737 {6.28943014, 11.9400806}, //
+
45738 {6.28955984, 11.9412146}, //
+
45739 {6.2895999, 11.9426003}, //
+
45740 {6.2895999, 11.9629498}, //
+
45741 {6.28955984, 11.9659615}, //
+
45742 {6.28943014, 11.9689722}, //
+
45743 {6.28921986, 11.971983}, //
+
45744 {6.28892994, 11.9749937}, //
+
45745 {6.2885499, 11.9780064}, //
+
45746 {6.28809023, 11.9810171}, //
+
45747 {6.28753996, 11.9840279}, //
+
45748 {6.28691006, 11.9870386}, //
+
45749 {6.28620005, 11.9900503}, //
+
45750 {6.28620005, 12.007}, //
+
45751 {6.28613997, 12.0092201}, //
+
45752 {6.28595018, 12.0113602}, //
+
45753 {6.28563023, 12.0134201}, //
+
45754 {6.28519011, 12.0153904}, //
+
45755 {6.28462982, 12.0172701}, //
+
45756 {6.28392982, 12.0190697}, //
+
45757 {6.28311014, 12.0207796}, //
+
45758 {6.28216982, 12.0224104}, //
+
45759 {6.2810998, 12.0239496}, //
+
45760 {6.28000021, 12.0254202}, //
+
45761 {6.2789402, 12.0268002}, //
+
45762 {6.27791977, 12.0281096}, //
+
45763 {6.27693987, 12.0293198}, //
+
45764 {6.27600002, 12.0304604}, //
+
45765 {6.27510023, 12.0315104}, //
+
45766 {6.27424002, 12.0324697}, //
+
45767 {6.27342987, 12.03335}, //
+
45768 {6.27264977, 12.0341501}, //
+
45769 {6.26924992, 12.03755}, //
+
45770 {6.26849985, 12.0382299}, //
+
45771 {6.2677598, 12.0387897}, //
+
45772 {6.26701021, 12.0392199}, //
+
45773 {6.26626015, 12.0395298}, //
+
45774 {6.26551008, 12.03971}, //
+
45775 {6.26476002, 12.0397701}, //
+
45776 {6.26400995, 12.03971}, //
+
45777 {6.26324987, 12.0395203}, //
+
45778 {6.26249981, 12.0391998}, //
+
45779 {6.26174021, 12.0388098}, //
+
45780 {6.26099014, 12.0383797}, //
+
45781 {6.26023006, 12.0379105}, //
+
45782 {6.25948, 12.0373898}, //
+
45783 {6.25871992, 12.0368299}, //
+
45784 {6.25796986, 12.0362196}, //
+
45785 {6.25720978, 12.0355701}, //
+
45786 {6.25646019, 12.0348797}, //
+
45787 {6.25570011, 12.0341501}, //
+
45788 {6.25489998, 12.03339}, //
+
45789 {6.25402021, 12.0326405}, //
+
45790 {6.25305986, 12.0318804}, //
+
45791 {6.25201988, 12.0311298}, //
+
45792 {6.25088978, 12.0303698}, //
+
45793 {6.24968004, 12.0296202}, //
+
45794 {6.24838018, 12.0288601}, //
+
45795 {6.24701023, 12.0281096}, //
+
45796 {6.24555016, 12.0273504}, //
+
45797 {6.24462986, 12.02666}, //
+
45798 {6.24337006, 12.0260897}, //
+
45799 {6.2417798, 12.02565}, //
+
45800 {6.23985004, 12.0253401}, //
+
45801 {6.23758984, 12.0251503}, //
+
45802 {6.23499012, 12.0250797}, //
+
45803 {6.23205996, 12.0251503}, //
+
45804 {6.22879982, 12.0253401}, //
+
45805 {6.22520018, 12.02565}, //
+
45806 {6.21766996, 12.0264101}, //
+
45807 {6.21013021, 12.0271597}, //
+
45808 {6.20636988, 12.0275402}, //
+
45809 {6.19129992, 12.0290499}, //
+
45810 {6.18762016, 12.0294104}, //
+
45811 {6.18410015, 12.0297203}, //
+
45812 {6.18074989, 12.0299902}, //
+
45813 {6.17756987, 12.0302296}, //
+
45814 {6.17455006, 12.0304098}, //
+
45815 {6.1717, 12.0305595}, //
+
45816 {6.16902018, 12.0306702}, //
+
45817 {6.16650009, 12.0307302}, //
+
45818 {6.16415024, 12.0307503}, //
+
45819 {6.1595602, 12.0317802}, //
+
45820 {6.15485001, 12.03335}, //
+
45821 {6.15002012, 12.0354605}, //
+
45822 {6.14505005, 12.0381203}, //
+
45823 {6.13995981, 12.0413198}, //
+
45824 {6.13474989, 12.0450602}, //
+
45825 {6.12940979, 12.0493498}, //
+
45826 {6.12393999, 12.0541801}, //
+
45827 {6.11835003, 12.0595503}, //
+
45828 {6.11306, 12.0653095}, //
+
45829 {6.10847998, 12.0712795}, //
+
45830 {6.10461998, 12.0774603}, //
+
45831 {6.10145998, 12.0838404}, //
+
45832 {6.09902, 12.0904398}, //
+
45833 {6.09728003, 12.0972404}, //
+
45834 {6.09626007, 12.10425}, //
+
45835 {6.09595013, 12.1114702}, //
+
45836 {6.09635019, 12.1189003}, //
+
45837 {6.09673023, 12.11796}, //
+
45838 {6.09702015, 12.1172199}, //
+
45839 {6.09740019, 12.1162796}, //
+
45840 {6.09841013, 12.11376}, //
+
45841 {6.09904003, 12.1121798}, //
+
45842 {6.09975004, 12.1104002}, //
+
45843 {6.10059023, 12.1084604}, //
+
45844 {6.10159016, 12.10639}, //
+
45845 {6.10276985, 12.1042004}, //
+
45846 {6.10410976, 12.1018801}, //
+
45847 {6.10560989, 12.0994396}, //
+
45848 {6.10727978, 12.0968704}, //
+
45849 {6.10911989, 12.0941696}, //
+
45850 {6.11113024, 12.0913496}, //
+
45851 {6.11329985, 12.0883999}, //
+
45852 {6.11568022, 12.0854101}, //
+
45853 {6.11830997, 12.0824604}, //
+
45854 {6.12120008, 12.0795498}, //
+
45855 {6.12434006, 12.0766802}, //
+
45856 {6.12772989, 12.0738497}, //
+
45857 {6.13137007, 12.0710697}, //
+
45858 {6.13526011, 12.0683203}, //
+
45859 {6.13940001, 12.0656099}, //
+
45860 {6.14379978, 12.0629501}, //
+
45861 {6.14840984, 12.0604601}, //
+
45862 {6.15318012, 12.0582705}, //
+
45863 {6.15812016, 12.0563698}, //
+
45864 {6.16322994, 12.05476}, //
+
45865 {6.16850996, 12.0534401}, //
+
45866 {6.17396021, 12.0524197}, //
+
45867 {6.1795702, 12.0516901}, //
+
45868 {6.18534994, 12.0512505}, //
+
45869 {6.19129992, 12.0510998}, //
+
45870 {6.20144987, 12.0510998}, //
+
45871 {6.20222998, 12.0511198}, //
+
45872 {6.20304012, 12.0511799}, //
+
45873 {6.20389986, 12.0512896}, //
+
45874 {6.20480013, 12.0514402}, //
+
45875 {6.20573997, 12.0516195}, //
+
45876 {6.20671988, 12.0518599}, //
+
45877 {6.20773983, 12.0521297}, //
+
45878 {6.20879984, 12.0524397}, //
+
45879 {6.2098999, 12.0528002}, //
+
45880 {6.21098995, 12.0531998}, //
+
45881 {6.21199989, 12.0536404}, //
+
45882 {6.21292019, 12.0541201}, //
+
45883 {6.2137599, 12.0546398}, //
+
45884 {6.21451998, 12.0551996}, //
+
45885 {6.21518993, 12.0558004}, //
+
45886 {6.21577978, 12.0564404}, //
+
45887 {6.21627998, 12.0571299}, //
+
45888 {6.21670008, 12.0578499}, //
+
45889 {6.21706009, 12.0585604}, //
+
45890 {6.21763992, 12.0597401}, //
+
45891 {6.21787977, 12.0601997}, //
+
45892 {6.21806002, 12.0605803}, //
+
45893 {6.21821022, 12.0608702}, //
+
45894 {6.21831989, 12.06108}, //
+
45895 {6.21837997, 12.0612097}, //
+
45896 {6.2184, 12.0612497}, //
+
45897 {6.21542978, 12.0619602}, //
+
45898 {6.21254015, 12.0625896}, //
+
45899 {6.20974016, 12.0631399}, //
+
45900 {6.20701981, 12.0635996}, //
+
45901 {6.20438004, 12.0639801}, //
+
45902 {6.2018199, 12.06427}, //
+
45903 {6.19934988, 12.0644798}, //
+
45904 {6.19695997, 12.0646095}, //
+
45905 {6.19465017, 12.0646496}, //
+
45906 {6.18948984, 12.0654497}, //
+
45907 {6.18452978, 12.06633}, //
+
45908 {6.17978001, 12.0672903}, //
+
45909 {6.17524004, 12.0683298}, //
+
45910 {6.17090988, 12.0694599}, //
+
45911 {6.16677999, 12.0706701}, //
+
45912 {6.16285992, 12.07197}, //
+
45913 {6.15915012, 12.0733404}, //
+
45914 {6.15565014, 12.0747995}, //
+
45915 {6.15225983, 12.0764599}, //
+
45916 {6.14886999, 12.0784101}, //
+
45917 {6.14548016, 12.0806503}, //
+
45918 {6.14208984, 12.08319}, //
+
45919 {6.13871002, 12.08601}, //
+
45920 {6.13532019, 12.0891304}, //
+
45921 {6.13192987, 12.0925503}, //
+
45922 {6.12854004, 12.0962496}, //
+
45923 {6.1251502, 12.1002502}, //
+
45924 {6.12166023, 12.1047497}, //
+
45925 {6.11794996, 12.1099596}, //
+
45926 {6.1140399, 12.1158895}, //
+
45927 {6.10992002, 12.12253}, //
+
45928 {6.10557985, 12.12988}, //
+
45929 {6.10103989, 12.1379404}, //
+
45930 {6.09629011, 12.1467104}, //
+
45931 {6.09132004, 12.1562004}, //
+
45932 {6.08615017, 12.1664}, //
+
45933 {6.0847702, 12.1694498}, //
+
45934 {6.08365011, 12.1725903}, //
+
45935 {6.08276987, 12.1758099}, //
+
45936 {6.08214998, 12.1791201}, //
+
45937 {6.08176994, 12.1824999}, //
+
45938 {6.08163977, 12.1859798}, //
+
45939 {6.08175993, 12.1895304}, //
+
45940 {6.08212996, 12.1931801}, //
+
45941 {6.08274984, 12.1969004}, //
+
45942 {6.08354998, 12.2005796}, //
+
45943 {6.08443022, 12.2040997}, //
+
45944 {6.08539009, 12.2074404}, //
+
45945 {6.08644009, 12.2106199}, //
+
45946 {6.0875802, 12.2136297}, //
+
45947 {6.08878994, 12.2164803}, //
+
45948 {6.09009981, 12.2191496}, //
+
45949 {6.09147978, 12.2216597}, //
+
45950 {6.09294987, 12.224}, //
+
45951 {6.09294987, 12.21385}, //
+
45952 {6.09223986, 12.2123404}, //
+
45953 {6.09160995, 12.2108297}, //
+
45954 {6.09106016, 12.2093201}, //
+
45955 {6.09060001, 12.2078104}, //
+
45956 {6.09021997, 12.2062902}, //
+
45957 {6.08993006, 12.2047796}, //
+
45958 {6.08971977, 12.20327}, //
+
45959 {6.08959007, 12.2017603}, //
+
45960 {6.08955002, 12.2002497}, //
+
45961 {6.08955002, 12.1900997}, //
+
45962 {6.0896101, 12.1893902}, //
+
45963 {6.08979988, 12.1887598}, //
+
45964 {6.09011984, 12.1882095}, //
+
45965 {6.09055996, 12.1877499}, //
+
45966 {6.09111977, 12.1873703}, //
+
45967 {6.09181976, 12.1870804}, //
+
45968 {6.09263992, 12.1868696}, //
+
45969 {6.09357977, 12.1867399}, //
+
45970 {6.09464979, 12.1866999}, //
+
45971 {6.10820007, 12.1866999}, //
+
45972 {6.11014986, 12.1867399}, //
+
45973 {6.11222982, 12.1868696}, //
+
45974 {6.11442995, 12.1870804}, //
+
45975 {6.11674976, 12.1873703}, //
+
45976 {6.11920023, 12.1877499}, //
+
45977 {6.12177992, 12.1882095}, //
+
45978 {6.12447977, 12.1887598}, //
+
45979 {6.12729979, 12.1893902}, //
+
45980 {6.13024998, 12.1900997}, //
+
45981 {6.13364983, 12.1900997}, //
+
45982 {6.13680983, 12.1908102}, //
+
45983 {6.14026022, 12.1914396}, //
+
45984 {6.14400005, 12.1919899}, //
+
45985 {6.14803982, 12.1924496}, //
+
45986 {6.15235996, 12.1928301}, //
+
45987 {6.15698004, 12.19312}, //
+
45988 {6.16190004, 12.1933298}, //
+
45989 {6.16709995, 12.1934605}, //
+
45990 {6.17259979, 12.1934996}, //
+
45991 {6.17840004, 12.1933298}, //
+
45992 {6.18450022, 12.1928301}, //
+
45993 {6.19087982, 12.1919899}, //
+
45994 {6.19755983, 12.1908197}, //
+
45995 {6.20453978, 12.1893196}, //
+
45996 {6.2118001, 12.18748}, //
+
45997 {6.21935987, 12.1852999}, //
+
45998 {6.22721004, 12.1827898}, //
+
45999 {6.23535013, 12.1799498}, //
+
46000 {6.24263, 12.17591}, //
+
46001 {6.24941015, 12.1713305}, //
+
46002 {6.2556901, 12.1661997}, //
+
46003 {6.26145983, 12.1605301}, //
+
46004 {6.26673985, 12.1543102}, //
+
46005 {6.27151012, 12.1475496}, //
+
46006 {6.27577019, 12.1402397}, //
+
46007 {6.27954006, 12.13239}, //
+
46008 {6.2828002, 12.1239996}, //
+
46009 {6.2856102, 12.1153097}, //
+
46010 {6.28800011, 12.1065798}, //
+
46011 {6.28997993, 12.0978098}, //
+
46012 {6.29153013, 12.0889997}, //
+
46013 {6.29266024, 12.0801401}, //
+
46014 {6.29337978, 12.0712404}, //
+
46015 {6.29367018, 12.0622997}, //
+
46016 {6.29355001, 12.0533199}, //
+
46017 {6.29300022, 12.0443001}, //
+
46018 {6.29312992, 12.0346403}, //
+
46019 {6.29349995, 12.0252199}, //
+
46020 {6.29412985, 12.0160599}, //
+
46021 {6.29500008, 12.0071497}, //
+
46022 {6.29613018, 11.9984884}, //
+
46023 {6.29751015, 11.990078}, //
+
46024 {6.29913998, 11.9819183}, //
+
46025 {6.30102015, 11.9740086}, //
+
46026 {6.30315018, 11.9663496}, //
+
46027 {6.30458021, 11.9626675}, //
+
46028 {6.30584002, 11.9591503}, //
+
46029 {6.30693007, 11.9558001}, //
+
46030 {6.30784988, 11.9526167}, //
+
46031 {6.30860996, 11.9496002}, //
+
46032 {6.3091898, 11.9467497}, //
+
46033 {6.30960989, 11.944067}, //
+
46034 {6.30986977, 11.9415503}, //
+
46035 {6.30994987, 11.9392004}, //
+
46036 {6.30994987, 11.9357996}, //
+
46037 {6.31052017, 11.9346666}, //
+
46038 {6.31095982, 11.9337854}, //
+
46039 {6.31505013, 11.9256001}, //
+
46040 {6.31619978, 11.9232597}, //
+
46041 {6.31739998, 11.9207525}, //
+
46042 {6.31863022, 11.9180784}, //
+
46043 {6.31991005, 11.9152346}, //
+
46044 {6.32122993, 11.9122229}, //
+
46045 {6.32257986, 11.9090443}, //
+
46046 {6.32397985, 11.9056978}, //
+
46047 {6.3254199, 11.9021826}, //
+
46048 {6.32690001, 11.8985004}, //
+
46049 {6.32841015, 11.8947754}, //
+
46050 {6.32991982, 11.8911352}, //
+
46051 {6.33142996, 11.887578}, //
+
46052 {6.33293009, 11.8841047}, //
+
46053 {6.33444023, 11.8807163}, //
+
46054 {6.33593988, 11.8774109}, //
+
46055 {6.33745003, 11.8741903}, //
+
46056 {6.33895016, 11.8710527}, //
+
46057 {6.34044981, 11.868}, //
+
46058 {6.34195995, 11.8657017}, //
+
46059 {6.3434701, 11.8633194}, //
+
46060 {6.34497976, 11.8608503}, //
+
46061 {6.34648991, 11.8582964}, //
+
46062 {6.34801006, 11.8556566}, //
+
46063 {6.34952021, 11.8529329}, //
+
46064 {6.35102987, 11.8501244}, //
+
46065 {6.35254002, 11.84723}, //
+
46066 {6.35405016, 11.8442497}, //
+
46067 {6.36007023, 11.8329496}, //
+
46068 {6.36609983, 11.8216496}, //
+
46069 {6.3721199, 11.8103504}, //
+
46070 {6.38418007, 11.7877502}, //
+
46071 {6.40829992, 11.7425499}, //
+
46072 {6.40899992, 11.7417936}, //
+
46073 {6.40961981, 11.7410393}, //
+
46074 {6.41016006, 11.740283}, //
+
46075 {6.41062021, 11.7395277}, //
+
46076 {6.41099024, 11.7387724}, //
+
46077 {6.41128016, 11.7380171}, //
+
46078 {6.41147995, 11.7372608}, //
+
46079 {6.41161013, 11.7365065}, //
+
46080 {6.41165018, 11.7357502}, //
+
46081 {6.41827011, 11.7228231}, //
+
46082 {6.42456007, 11.7096443}, //
+
46083 {6.43051004, 11.6962109}, //
+
46084 {6.43612003, 11.6825247}, //
+
46085 {6.44140005, 11.6685858}, //
+
46086 {6.44634008, 11.6543941}, //
+
46087 {6.45095015, 11.6399488}, //
+
46088 {6.45522022, 11.6252508}, //
+
46089 {6.45914984, 11.6103001}, //
+
46090 {6.45994997, 11.60497}, //
+
46091 {6.46083021, 11.5995121}, //
+
46092 {6.46179008, 11.5939283}, //
+
46093 {6.46283007, 11.5882158}, //
+
46094 {6.46396017, 11.5823774}, //
+
46095 {6.46516991, 11.5764112}, //
+
46096 {6.46646976, 11.5703182}, //
+
46097 {6.46784019, 11.5640984}, //
+
46098 {6.46929979, 11.5577497}, //
+
46099 {6.47074986, 11.5514956}, //
+
46100 {6.47207022, 11.5455351}, //
+
46101 {6.47326994, 11.5398674}, //
+
46102 {6.47433996, 11.5344906}, //
+
46103 {6.47527981, 11.5294065}, //
+
46104 {6.47609997, 11.5246172}, //
+
46105 {6.47678995, 11.5201187}, //
+
46106 {6.47735977, 11.515913}, //
+
46107 {6.47779989, 11.5120001}, //
+
46108 {6.47846985, 11.5053043}, //
+
46109 {6.47874022, 11.5025826}, //
+
46110 {6.47915983, 11.4983978}, //
+
46111 {6.47942019, 11.4958868}, //
+
46112 {6.47947979, 11.4952593}, //
+
46113 {6.47949982, 11.4950504}, //
+
46114 {6.47949982, 11.4645004}, //
+
46115 });
+
46116 polys.push_back({
+
46117 {4.27137995, 12.4218102}, //
+
46118 {4.26540995, 12.4229403}, //
+
46119 {4.25931978, 12.4248199}, //
+
46120 {4.25309992, 12.4274597}, //
+
46121 {4.24674988, 12.43085}, //
+
46122 {4.24044991, 12.43466}, //
+
46123 {4.23437023, 12.43855}, //
+
46124 {4.22848988, 12.4425297}, //
+
46125 {4.22281981, 12.4465904}, //
+
46126 {4.21736002, 12.4507303}, //
+
46127 {4.21211004, 12.4549599}, //
+
46128 {4.20705986, 12.4592695}, //
+
46129 {4.20222998, 12.4636698}, //
+
46130 {4.19759989, 12.4681501}, //
+
46131 {4.19543982, 12.4695902}, //
+
46132 {4.19349003, 12.4708996}, //
+
46133 {4.19174004, 12.4720898}, //
+
46134 {4.19020987, 12.4731503}, //
+
46135 {4.18888998, 12.4740896}, //
+
46136 {4.1877799, 12.4749098}, //
+
46137 {4.18688011, 12.4756002}, //
+
46138 {4.18618011, 12.47616}, //
+
46139 {4.18569994, 12.4765997}, //
+
46140 {4.18610001, 12.4762402}, //
+
46141 {4.18654013, 12.4759302}, //
+
46142 {4.18701982, 12.4756603}, //
+
46143 {4.18755007, 12.47542}, //
+
46144 {4.18810987, 12.4752398}, //
+
46145 {4.18872023, 12.47509}, //
+
46146 {4.18937016, 12.4749804}, //
+
46147 {4.19007015, 12.4749203}, //
+
46148 {4.19080019, 12.4749002}, //
+
46149 {4.19228983, 12.4741497}, //
+
46150 {4.19373989, 12.4734097}, //
+
46151 {4.19513988, 12.4726601}, //
+
46152 {4.19649982, 12.4719105}, //
+
46153 {4.19782019, 12.4711599}, //
+
46154 {4.19909, 12.4704103}, //
+
46155 {4.20031977, 12.4696598}, //
+
46156 {4.20150995, 12.4688997}, //
+
46157 {4.20265007, 12.4681501}, //
+
46158 {4.2038002, 12.4674397}, //
+
46159 {4.20499992, 12.4668102}, //
+
46160 {4.20624018, 12.46626}, //
+
46161 {4.20752001, 12.4658003}, //
+
46162 {4.20883989, 12.4654198}, //
+
46163 {4.21020985, 12.4651299}, //
+
46164 {4.21160984, 12.46492}, //
+
46165 {4.2130599, 12.4647903}, //
+
46166 {4.21455002, 12.4647503}, //
+
46167 {4.23995018, 12.4647503}, //
+
46168 {4.24485016, 12.4647903}, //
+
46169 {4.24975014, 12.46492}, //
+
46170 {4.25465012, 12.4651299}, //
+
46171 {4.25955009, 12.4654198}, //
+
46172 {4.26445007, 12.4658003}, //
+
46173 {4.26935005, 12.46626}, //
+
46174 {4.27425003, 12.4668102}, //
+
46175 {4.27915001, 12.4674397}, //
+
46176 {4.28404999, 12.4681501}, //
+
46177 {4.28892994, 12.4688597}, //
+
46178 {4.29376984, 12.4694901}, //
+
46179 {4.29856014, 12.4700403}, //
+
46180 {4.30330992, 12.4705}, //
+
46181 {4.30803013, 12.4708796}, //
+
46182 {4.31268978, 12.4711704}, //
+
46183 {4.31731987, 12.4713802}, //
+
46184 {4.3219099, 12.4715099}, //
+
46185 {4.32644987, 12.47155}, //
+
46186 {4.3316102, 12.4731503}, //
+
46187 {4.33656979, 12.4749699}, //
+
46188 {4.34131002, 12.4769897}, //
+
46189 {4.34584999, 12.4792299}, //
+
46190 {4.35018015, 12.4816704}, //
+
46191 {4.35429001, 12.4843302}, //
+
46192 {4.35820007, 12.4871902}, //
+
46193 {4.36190987, 12.4902697}, //
+
46194 {4.36539984, 12.4935503}, //
+
46195 {4.36869001, 12.4968901}, //
+
46196 {4.37177992, 12.5001001}, //
+
46197 {4.37465, 12.5031796}, //
+
46198 {4.3773098, 12.5061302}, //
+
46199 {4.37975979, 12.5089598}, //
+
46200 {4.38199997, 12.5116596}, //
+
46201 {4.38402987, 12.5142298}, //
+
46202 {4.38583994, 12.5166798}, //
+
46203 {4.38745022, 12.5190001}, //
+
46204 {4.38901997, 12.5204496}, //
+
46205 {4.39071989, 12.5217695}, //
+
46206 {4.39253998, 12.5229597}, //
+
46207 {4.39448977, 12.5240297}, //
+
46208 {4.39656019, 12.5249701}, //
+
46209 {4.39875984, 12.5257797}, //
+
46210 {4.40108013, 12.5264597}, //
+
46211 {4.40353012, 12.5270205}, //
+
46212 {4.4060998, 12.5274496}, //
+
46213 {4.40872002, 12.5277596}, //
+
46214 {4.41130018, 12.5279503}, //
+
46215 {4.41383982, 12.5280199}, //
+
46216 {4.41632986, 12.5279503}, //
+
46217 {4.41877985, 12.5277596}, //
+
46218 {4.42118979, 12.5274496}, //
+
46219 {4.42355013, 12.52701}, //
+
46220 {4.42586994, 12.5264397}, //
+
46221 {4.42815018, 12.5257502}, //
+
46222 {4.43036985, 12.5249996}, //
+
46223 {4.4325099, 12.5242596}, //
+
46224 {4.43456984, 12.52351}, //
+
46225 {4.43654013, 12.5227604}, //
+
46226 {4.43841982, 12.5220098}, //
+
46227 {4.44021988, 12.5212603}, //
+
46228 {4.44192982, 12.5205097}, //
+
46229 {4.44356012, 12.5197496}, //
+
46230 {4.44509983, 12.5190001}, //
+
46231 {4.44169998, 12.4919004}, //
+
46232 {4.4298501, 12.4919004}, //
+
46233 {4.4271102, 12.4918203}, //
+
46234 {4.42416, 12.49156}, //
+
46235 {4.42101002, 12.4911404}, //
+
46236 {4.41764021, 12.4905596}, //
+
46237 {4.41406012, 12.4898005}, //
+
46238 {4.41027021, 12.4888802}, //
+
46239 {4.40627003, 12.4877901}, //
+
46240 {4.40207005, 12.4865303}, //
+
46241 {4.39764977, 12.4850998}, //
+
46242 {4.39461994, 12.4849701}, //
+
46243 {4.39154005, 12.4846001}, //
+
46244 {4.3884201, 12.4839697}, //
+
46245 {4.38526011, 12.4830904}, //
+
46246 {4.38205004, 12.4819498}, //
+
46247 {4.37880993, 12.4805698}, //
+
46248 {4.37551022, 12.4789305}, //
+
46249 {4.37217999, 12.4770403}, //
+
46250 {4.36880016, 12.4749002}, //
+
46251 {4.36538982, 12.4726}, //
+
46252 {4.36193991, 12.4702196}, //
+
46253 {4.35843992, 12.4677601}, //
+
46254 {4.3549099, 12.46521}, //
+
46255 {4.3513298, 12.4625702}, //
+
46256 {4.34771013, 12.4598598}, //
+
46257 {4.34404993, 12.4570503}, //
+
46258 {4.34035015, 12.4541702}, //
+
46259 {4.33659983, 12.4511995}, //
+
46260 {4.33146, 12.4482298}, //
+
46261 {4.32657003, 12.4453402}, //
+
46262 {4.32191992, 12.4425402}, //
+
46263 {4.31753016, 12.4398203}, //
+
46264 {4.31337976, 12.4371796}, //
+
46265 {4.3094902, 12.4346199}, //
+
46266 {4.30584002, 12.4321499}, //
+
46267 {4.30245018, 12.42976}, //
+
46268 {4.29930019, 12.4274502}, //
+
46269 {4.29397011, 12.4248199}, //
+
46270 {4.28850985, 12.4229298}, //
+
46271 {4.2829299, 12.4218102}, //
+
46272 {4.27721977, 12.4214296}, //
+
46273 });
+
46274 polys.push_back({
+
46275 {1.17559004, 12.3453398}, //
+
46276 {1.17096996, 12.3457499}, //
+
46277 {1.16588998, 12.3465004}, //
+
46278 {1.16033995, 12.3475904}, //
+
46279 {1.15434003, 12.3490105}, //
+
46280 {1.14787996, 12.3507605}, //
+
46281 {1.14094996, 12.35285}, //
+
46282 {1.13379002, 12.3551397}, //
+
46283 {1.12663996, 12.35746}, //
+
46284 {1.11948001, 12.3598299}, //
+
46285 {1.11231995, 12.3622398}, //
+
46286 {1.10516, 12.3646898}, //
+
46287 {1.09799004, 12.3671799}, //
+
46288 {1.09082997, 12.36971}, //
+
46289 {1.08367002, 12.3722897}, //
+
46290 {1.07650006, 12.3748999}, //
+
46291 {1.06948996, 12.3775101}, //
+
46292 {1.06277001, 12.3800898}, //
+
46293 {1.05634999, 12.3826199}, //
+
46294 {1.05022001, 12.3851099}, //
+
46295 {1.04437995, 12.3875599}, //
+
46296 {1.03883004, 12.3899698}, //
+
46297 {1.03357995, 12.3923397}, //
+
46298 {1.02862, 12.39466}, //
+
46299 {1.02394998, 12.3969498}, //
+
46300 {1.01920998, 12.3991604}, //
+
46301 {1.01400006, 12.4012899}, //
+
46302 {1.00834, 12.4033403}, //
+
46303 {1.00221002, 12.4053001}, //
+
46304 {0.995622993, 12.4071798}, //
+
46305 {0.988572001, 12.4089699}, //
+
46306 {0.981060028, 12.4106798}, //
+
46307 {0.973085999, 12.4123096}, //
+
46308 {0.964649975, 12.4138498}, //
+
46309 {0.956045985, 12.4153204}, //
+
46310 {0.947569013, 12.4167004}, //
+
46311 {0.939216971, 12.4180098}, //
+
46312 {0.930990994, 12.41922}, //
+
46313 {0.922891021, 12.4203596}, //
+
46314 {0.914916992, 12.4214096}, //
+
46315 {0.907069027, 12.42237}, //
+
46316 {0.899345994, 12.4232502}, //
+
46317 {0.891749978, 12.4240503}, //
+
46318 {0.888024986, 12.4248104}, //
+
46319 {0.88438201, 12.42556}, //
+
46320 {0.880822003, 12.4263201}, //
+
46321 {0.877345026, 12.4270697}, //
+
46322 {0.873951018, 12.4278297}, //
+
46323 {0.870639026, 12.4285803}, //
+
46324 {0.867410004, 12.4293404}, //
+
46325 {0.864264011, 12.43009}, //
+
46326 {0.861199975, 12.43085}, //
+
46327 {0.853793025, 12.4315596}, //
+
46328 {0.846637011, 12.4321899}, //
+
46329 {0.839733005, 12.4327402}, //
+
46330 {0.833081007, 12.4331999}, //
+
46331 {0.826681018, 12.4335804}, //
+
46332 {0.820532978, 12.4338703}, //
+
46333 {0.814637005, 12.4340801}, //
+
46334 {0.808992982, 12.4342098}, //
+
46335 {0.803600013, 12.4342499}, //
+
46336 {0.801292002, 12.4342899}, //
+
46337 {0.798901021, 12.4344196}, //
+
46338 {0.796428025, 12.4346304}, //
+
46339 {0.793871999, 12.4349203}, //
+
46340 {0.791233003, 12.4352999}, //
+
46341 {0.788510978, 12.4357595}, //
+
46342 {0.785706997, 12.4363098}, //
+
46343 {0.782819986, 12.4369402}, //
+
46344 {0.779850006, 12.4376497}, //
+
46345 {0.777562976, 12.4377098}, //
+
46346 {0.775234997, 12.4378996}, //
+
46347 {0.772867024, 12.4382095}, //
+
46348 {0.770457029, 12.4386501}, //
+
46349 {0.76800698, 12.4392099}, //
+
46350 {0.765516996, 12.4398899}, //
+
46351 {0.762984991, 12.4406996}, //
+
46352 {0.760412991, 12.4416399}, //
+
46353 {0.757799983, 12.4427004}, //
+
46354 {0.755228996, 12.4438295}, //
+
46355 {0.752783, 12.4449596}, //
+
46356 {0.750460982, 12.4460897}, //
+
46357 {0.748264015, 12.4472198}, //
+
46358 {0.746191978, 12.44835}, //
+
46359 {0.744243979, 12.4494801}, //
+
46360 {0.742421985, 12.4505997}, //
+
46361 {0.740723014, 12.4517298}, //
+
46362 {0.739149988, 12.4528503}, //
+
46363 {0.737733006, 12.4539204}, //
+
46364 {0.734483004, 12.4563799}, //
+
46365 {0.733150005, 12.4573803}, //
+
46366 {0.732733011, 12.4576998}, //
+
46367 {0.732483029, 12.4578896}, //
+
46368 {0.7324, 12.4579496}, //
+
46369 {0.749459982, 12.5064001}, //
+
46370 {0.752592981, 12.51299}, //
+
46371 {0.753786981, 12.5156002}, //
+
46372 {0.762849987, 12.5156002}, //
+
46373 {0.764443994, 12.5156202}, //
+
46374 {0.766206026, 12.5156803}, //
+
46375 {0.768132985, 12.51579}, //
+
46376 {0.770228028, 12.5159397}, //
+
46377 {0.772489011, 12.51612}, //
+
46378 {0.774917006, 12.5163603}, //
+
46379 {0.777511001, 12.5166302}, //
+
46380 {0.780272007, 12.5169401}, //
+
46381 {0.783200026, 12.5172997}, //
+
46382 {0.786221981, 12.5176601}, //
+
46383 {0.789242029, 12.5179701}, //
+
46384 {0.792261004, 12.51824}, //
+
46385 {0.795279026, 12.5184803}, //
+
46386 {0.798295975, 12.5186596}, //
+
46387 {0.801311016, 12.5188103}, //
+
46388 {0.804324985, 12.5189199}, //
+
46389 {0.807337999, 12.51898}, //
+
46390 {0.810350001, 12.5190001}, //
+
46391 {0.812552989, 12.51898}, //
+
46392 {0.814629018, 12.5189199}, //
+
46393 {0.816577971, 12.5188103}, //
+
46394 {0.818399012, 12.5186596}, //
+
46395 {0.820093989, 12.5184803}, //
+
46396 {0.821660995, 12.51824}, //
+
46397 {0.823100984, 12.5179701}, //
+
46398 {0.824414015, 12.5176601}, //
+
46399 {0.825600028, 12.5172997}, //
+
46400 {0.826795995, 12.5169001}, //
+
46401 {0.82811898, 12.5164604}, //
+
46402 {0.829567015, 12.5159798}, //
+
46403 {0.832840979, 12.5148897}, //
+
46404 {0.834667027, 12.5142803}, //
+
46405 {0.83661902, 12.5136299}, //
+
46406 {0.838696003, 12.5129299}, //
+
46407 {0.840900004, 12.5122004}, //
+
46408 {0.843365014, 12.5114098}, //
+
46409 {0.846247971, 12.51054}, //
+
46410 {0.849550009, 12.5095797}, //
+
46411 {0.853269994, 12.5085402}, //
+
46412 {0.857409, 12.50741}, //
+
46413 {0.861967027, 12.5061998}, //
+
46414 {0.866943002, 12.5049}, //
+
46415 {0.872336984, 12.50352}, //
+
46416 {0.878149986, 12.5020504}, //
+
46417 {0.885609984, 12.4998398}, //
+
46418 {0.892901003, 12.4976997}, //
+
46419 {0.90002197, 12.4956598}, //
+
46420 {0.906974971, 12.4936895}, //
+
46421 {0.91375798, 12.4918098}, //
+
46422 {0.920372009, 12.4900103}, //
+
46423 {0.926817, 12.4882898}, //
+
46424 {0.933093011, 12.4866505}, //
+
46425 {0.939199984, 12.4850998}, //
+
46426 {0.946020007, 12.4842997}, //
+
46427 {0.95292598, 12.4834204}, //
+
46428 {0.959917009, 12.48246}, //
+
46429 {0.966992974, 12.48141}, //
+
46430 {0.974153996, 12.4802704}, //
+
46431 {0.981400013, 12.4790602}, //
+
46432 {0.988731027, 12.4777498}, //
+
46433 {0.99614799, 12.4763699}, //
+
46434 {1.00364995, 12.4749002}, //
+
46435 {1.00729001, 12.4734802}, //
+
46436 {1.01067996, 12.47223}, //
+
46437 {1.01382005, 12.4711504}, //
+
46438 {1.01670003, 12.4702301}, //
+
46439 {1.01934004, 12.4694796}, //
+
46440 {1.02172005, 12.4688997}, //
+
46441 {1.02384996, 12.4684801}, //
+
46442 {1.02572, 12.4682302}, //
+
46443 {1.02734995, 12.4681501}, //
+
46444 {1.04429996, 12.4681501}, //
+
46445 {1.04506004, 12.4681301}, //
+
46446 {1.04580998, 12.46807}, //
+
46447 {1.04656994, 12.4679604}, //
+
46448 {1.04732001, 12.4678097}, //
+
46449 {1.04807997, 12.4676304}, //
+
46450 {1.04883003, 12.4673901}, //
+
46451 {1.04958999, 12.4671202}, //
+
46452 {1.05034006, 12.4668102}, //
+
46453 {1.05110002, 12.4664497}, //
+
46454 {1.05374002, 12.4651299}, //
+
46455 {1.05478001, 12.4645996}, //
+
46456 {1.05590999, 12.4640398}, //
+
46457 {1.05711997, 12.4634304}, //
+
46458 {1.05841994, 12.46278}, //
+
46459 {1.05979002, 12.46208}, //
+
46460 {1.06124997, 12.4613504}, //
+
46461 {1.06289005, 12.4605703}, //
+
46462 {1.06476998, 12.4597502}, //
+
46463 {1.06691003, 12.45889}, //
+
46464 {1.06930006, 12.4579897}, //
+
46465 {1.07193995, 12.4570503}, //
+
46466 {1.07483006, 12.4560604}, //
+
46467 {1.07797003, 12.4550304}, //
+
46468 {1.08135998, 12.4539604}, //
+
46469 {1.08500004, 12.4528503}, //
+
46470 {1.08882999, 12.4517498}, //
+
46471 {1.09279001, 12.4506903}, //
+
46472 {1.09686995, 12.4496698}, //
+
46473 {1.10107005, 12.4486904}, //
+
46474 {1.10540998, 12.4477501}, //
+
46475 {1.10986996, 12.4468498}, //
+
46476 {1.11444998, 12.4459896}, //
+
46477 {1.11916006, 12.4451799}, //
+
46478 {1.12399995, 12.4443998}, //
+
46479 {1.12880003, 12.4436703}, //
+
46480 {1.13338006, 12.4429703}, //
+
46481 {1.13776004, 12.4423199}, //
+
46482 {1.14191997, 12.4417105}, //
+
46483 {1.14587998, 12.4411497}, //
+
46484 {1.14962006, 12.4406204}, //
+
46485 {1.15315998, 12.4401398}, //
+
46486 {1.15647995, 12.4397001}, //
+
46487 {1.15960002, 12.4392996}, //
+
46488 {1.16243994, 12.4389496}, //
+
46489 {1.16712999, 12.4383802}, //
+
46490 {1.16896999, 12.4381599}, //
+
46491 {1.17164004, 12.43783}, //
+
46492 {1.17247999, 12.4377298}, //
+
46493 {1.17297995, 12.4376698}, //
+
46494 {1.17314994, 12.4376497}, //
+
46495 {1.17686999, 12.4369402}, //
+
46496 {1.18052006, 12.4363098}, //
+
46497 {1.18406999, 12.4357595}, //
+
46498 {1.18754995, 12.4352999}, //
+
46499 {1.19093001, 12.4349203}, //
+
46500 {1.19423997, 12.4346304}, //
+
46501 {1.19746006, 12.4344196}, //
+
46502 {1.20060003, 12.4342899}, //
+
46503 {1.20365, 12.4342499}, //
+
46504 {1.20659006, 12.4342299}, //
+
46505 {1.20936, 12.4341698}, //
+
46506 {1.21195996, 12.4340601}, //
+
46507 {1.21439004, 12.4339104}, //
+
46508 {1.21665001, 12.4337301}, //
+
46509 {1.21873999, 12.4334898}, //
+
46510 {1.22065997, 12.4332199}, //
+
46511 {1.22241998, 12.43291}, //
+
46512 {1.22399998, 12.4325504}, //
+
46513 {1.22545004, 12.4321699}, //
+
46514 {1.22677004, 12.4317904}, //
+
46515 {1.22797, 12.4314203}, //
+
46516 {1.22904003, 12.4310398}, //
+
46517 {1.22997999, 12.4306602}, //
+
46518 {1.23080003, 12.4302797}, //
+
46519 {1.23149002, 12.4299097}, //
+
46520 {1.23205996, 12.4295301}, //
+
46521 {1.23249996, 12.4291496}, //
+
46522 {1.23412001, 12.4275303}, //
+
46523 {1.23417997, 12.4274702}, //
+
46524 {1.2342, 12.4274502}, //
+
46525 {1.23650002, 12.42665}, //
+
46526 {1.23888004, 12.4257698}, //
+
46527 {1.24134004, 12.4248104}, //
+
46528 {1.24389005, 12.4237604}, //
+
46529 {1.24653006, 12.4226198}, //
+
46530 {1.24924004, 12.4214096}, //
+
46531 {1.25205004, 12.4201002}, //
+
46532 {1.25493002, 12.4187202}, //
+
46533 {1.2579, 12.4172497}, //
+
46534 {1.26087999, 12.4157696}, //
+
46535 {1.26376998, 12.4143295}, //
+
46536 {1.26657999, 12.4129295}, //
+
46537 {1.26931, 12.4115801}, //
+
46538 {1.27195001, 12.4102602}, //
+
46539 {1.27450001, 12.4089804}, //
+
46540 {1.27697003, 12.4077501}, //
+
46541 {1.27935004, 12.4065504}, //
+
46542 {1.28164995, 12.4054003}, //
+
46543 {1.28732002, 12.4025898}, //
+
46544 {1.28745997, 12.4025202}, //
+
46545 {1.28731, 12.4020901}, //
+
46546 {1.28599, 12.3975697}, //
+
46547 {1.28505003, 12.3935499}, //
+
46548 {1.28425002, 12.3910799}, //
+
46549 {1.28337002, 12.3881998}, //
+
46550 {1.28248, 12.3851299}, //
+
46551 {1.26470006, 12.3562498}, //
+
46552 {1.26454997, 12.3562298}, //
+
46553 {1.26410997, 12.3561697}, //
+
46554 {1.26338005, 12.35606}, //
+
46555 {1.26234996, 12.3559103}, //
+
46556 {1.25750005, 12.3552198}, //
+
46557 {1.25530005, 12.3549099}, //
+
46558 {1.25279999, 12.3545504}, //
+
46559 {1.25007999, 12.3541498}, //
+
46560 {1.24720001, 12.3537102}, //
+
46561 {1.24414003, 12.3532305}, //
+
46562 {1.24091995, 12.3527002}, //
+
46563 {1.23752999, 12.3521404}, //
+
46564 {1.23397994, 12.3515301}, //
+
46565 {1.23025, 12.3508797}, //
+
46566 {1.22635996, 12.3501797}, //
+
46567 {1.22230005, 12.3494501}, //
+
46568 {1.21817994, 12.3487501}, //
+
46569 {1.2141, 12.3481302}, //
+
46570 {1.21006, 12.3475904}, //
+
46571 {1.20606005, 12.3471298}, //
+
46572 {1.20210004, 12.3467598}, //
+
46573 {1.19818997, 12.3464699}, //
+
46574 {1.19431996, 12.3462696}, //
+
46575 {1.19049001, 12.3461399}, //
+
46576 {1.18669999, 12.3460999}, //
+
46577 {1.18346, 12.3455095}, //
+
46578 {1.17975998, 12.3452597}, //
+
46579 });
+
46580 polys.push_back({
+
46581 {3.6940999, 12.4562502}, //
+
46582 {3.69373989, 12.4566298}, //
+
46583 {3.69342995, 12.4570103}, //
+
46584 {3.69316006, 12.4573803}, //
+
46585 {3.69291997, 12.4577599}, //
+
46586 {3.69273996, 12.4581404}, //
+
46587 {3.69259, 12.4585199}, //
+
46588 {3.69248009, 12.45889}, //
+
46589 {3.69242001, 12.4592695}, //
+
46590 {3.69239998, 12.45965}, //
+
46591 {3.69235992, 12.4600096}, //
+
46592 {3.69222999, 12.4603205}, //
+
46593 {3.69201994, 12.4605904}, //
+
46594 {3.69173002, 12.4608297}, //
+
46595 {3.69134998, 12.46101}, //
+
46596 {3.69089007, 12.4611597}, //
+
46597 {3.69034004, 12.4612703}, //
+
46598 {3.6897099, 12.4613304}, //
+
46599 {3.68899989, 12.4613504}, //
+
46600 {3.6882, 12.4635296}, //
+
46601 {3.68731999, 12.4655504}, //
+
46602 {3.68635988, 12.4673901}, //
+
46603 {3.68530989, 12.4690599}, //
+
46604 {3.68417001, 12.4705696}, //
+
46605 {3.68296003, 12.4719105}, //
+
46606 {3.68164992, 12.4730701}, //
+
46607 {3.68026996, 12.4740696}, //
+
46608 {3.67880011, 12.4749002}, //
+
46609 {3.67734003, 12.4756098}, //
+
46610 {3.67597008, 12.4762402}, //
+
46611 {3.67466998, 12.4767904}, //
+
46612 {3.67346001, 12.4772501}, //
+
46613 {3.6723299, 12.4776297}, //
+
46614 {3.67128992, 12.4779196}, //
+
46615 {3.67033005, 12.4781303}, //
+
46616 {3.66945004, 12.47826}, //
+
46617 {3.66864991, 12.4783001}, //
+
46618 {3.66761994, 12.4793301}, //
+
46619 {3.66694999, 12.4799995}, //
+
46620 {3.66656995, 12.48036}, //
+
46621 {3.66618991, 12.48067}, //
+
46622 {3.66581988, 12.4809399}, //
+
46623 {3.66544008, 12.4811802}, //
+
46624 {3.66506004, 12.4813604}, //
+
46625 {3.66468, 12.4815102}, //
+
46626 {3.66430998, 12.4816198}, //
+
46627 {3.66392994, 12.4816799}, //
+
46628 {3.6635499, 12.4816999}, //
+
46629 {3.66020012, 12.4816999}, //
+
46630 {3.65987992, 12.48172}, //
+
46631 {3.6596899, 12.4817801}, //
+
46632 {3.65963006, 12.4818897}, //
+
46633 {3.6596899, 12.4820404}, //
+
46634 {3.65986991, 12.4822197}, //
+
46635 {3.66018009, 12.48246}, //
+
46636 {3.66060996, 12.4827299}, //
+
46637 {3.66117001, 12.4830399}, //
+
46638 {3.66184998, 12.4834003}, //
+
46639 {3.66261005, 12.4837599}, //
+
46640 {3.66336012, 12.4840698}, //
+
46641 {3.66411996, 12.4843397}, //
+
46642 {3.66487002, 12.48458}, //
+
46643 {3.6656301, 12.4847603}, //
+
46644 {3.66637993, 12.48491}, //
+
46645 {3.66714001, 12.4850197}, //
+
46646 {3.66789007, 12.4850798}, //
+
46647 {3.66864991, 12.4850998}, //
+
46648 {3.71950006, 12.4850998}, //
+
46649 {3.71793008, 12.48353}, //
+
46650 {3.71640992, 12.4820099}, //
+
46651 {3.71440005, 12.4799995}, //
+
46652 {3.71329999, 12.4788704}, //
+
46653 {3.71223998, 12.4777298}, //
+
46654 {3.71122003, 12.4765997}, //
+
46655 {3.71023989, 12.4754696}, //
+
46656 {3.70930004, 12.4743299}, //
+
46657 {3.70840001, 12.4731998}, //
+
46658 {3.70754004, 12.4720697}, //
+
46659 {3.70672989, 12.4709301}, //
+
46660 {3.70595002, 12.4698}, //
+
46661 {3.70518994, 12.4686804}, //
+
46662 {3.70444012, 12.4675503}, //
+
46663 {3.70368004, 12.4664297}, //
+
46664 {3.70292997, 12.4652996}, //
+
46665 {3.7021699, 12.4641705}, //
+
46666 {3.70142007, 12.4630404}, //
+
46667 {3.70065999, 12.4619102}, //
+
46668 {3.69990993, 12.4607801}, //
+
46669 {3.69915009, 12.45965}, //
+
46670 {3.69782996, 12.4576502}, //
+
46671 {3.69728994, 12.4568396}, //
+
46672 {3.69646001, 12.4555998}, //
+
46673 {3.69583988, 12.4546604}, //
+
46674 {3.69580007, 12.4546003}, //
+
46675 });
+
46676 polys.push_back({
+
46677 {6.66628981, 11.4246845}, //
+
46678 {6.66614008, 11.4247665}, //
+
46679 {6.66602993, 11.4249296}, //
+
46680 {6.66596985, 11.4251738}, //
+
46681 {6.66594982, 11.4254999}, //
+
46682 {6.66592979, 11.4258776}, //
+
46683 {6.66587019, 11.4262562}, //
+
46684 {6.66576004, 11.4266329}, //
+
46685 {6.66560984, 11.4270105}, //
+
46686 {6.66543007, 11.4273891}, //
+
46687 {6.66519022, 11.4277668}, //
+
46688 {6.66491985, 11.4281445}, //
+
46689 {6.66460991, 11.4285221}, //
+
46690 {6.6642499, 11.4288998}, //
+
46691 {6.6638999, 11.4292994}, //
+
46692 {6.66359997, 11.42974}, //
+
46693 {6.66333008, 11.4302216}, //
+
46694 {6.66310978, 11.430747}, //
+
46695 {6.66293001, 11.4313145}, //
+
46696 {6.66277981, 11.431922}, //
+
46697 {6.66268015, 11.4325733}, //
+
46698 {6.66262007, 11.4332647}, //
+
46699 {6.66260004, 11.434}, //
+
46700 {6.66189003, 11.4341669}, //
+
46701 {6.66126013, 11.4346685}, //
+
46702 {6.66070986, 11.4355059}, //
+
46703 {6.66025019, 11.436677}, //
+
46704 {6.65987015, 11.4381819}, //
+
46705 {6.65958023, 11.4400225}, //
+
46706 {6.65936995, 11.4421968}, //
+
46707 {6.65923977, 11.444706}, //
+
46708 {6.65920019, 11.4475498}, //
+
46709 {6.65844011, 11.450593}, //
+
46710 {6.65769005, 11.4536762}, //
+
46711 {6.65692997, 11.4568005}, //
+
46712 {6.6561799, 11.4599648}, //
+
46713 {6.65541983, 11.4631701}, //
+
46714 {6.65466976, 11.4664173}, //
+
46715 {6.65391016, 11.4697037}, //
+
46716 {6.6531601, 11.473031}, //
+
46717 {6.65240002, 11.4764004}, //
+
46718 {6.65159988, 11.4796839}, //
+
46719 {6.65072012, 11.4827576}, //
+
46720 {6.64975977, 11.4856224}, //
+
46721 {6.64871979, 11.4882774}, //
+
46722 {6.64759016, 11.4907207}, //
+
46723 {6.64637995, 11.4929562}, //
+
46724 {6.64508009, 11.4949799}, //
+
46725 {6.64371014, 11.4967947}, //
+
46726 {6.64225006, 11.4983997}, //
+
46727 {6.63654995, 11.5154963}, //
+
46728 {6.63169003, 11.5300674}, //
+
46729 {6.6255002, 11.5486517}, //
+
46730 {6.62190008, 11.5594501}, //
+
46731 {6.61885023, 11.5685358}, //
+
46732 {6.61570978, 11.5777044}, //
+
46733 {6.61248016, 11.586956}, //
+
46734 {6.60916996, 11.5962896}, //
+
46735 {6.60578012, 11.6057062}, //
+
46736 {6.60230017, 11.6152058}, //
+
46737 {6.5987401, 11.6247883}, //
+
46738 {6.59508991, 11.6344519}, //
+
46739 {6.59135008, 11.6442003}, //
+
46740 {6.58766985, 11.6538324}, //
+
46741 {6.58414984, 11.6631279}, //
+
46742 {6.58081007, 11.6720886}, //
+
46743 {6.57763004, 11.6807137}, //
+
46744 {6.57461977, 11.689002}, //
+
46745 {6.57177019, 11.6969557}, //
+
46746 {6.5690999, 11.7045727}, //
+
46747 {6.56658983, 11.711854}, //
+
46748 {6.56424999, 11.7187996}, //
+
46749 {6.55892992, 11.7295637}, //
+
46750 {6.55353022, 11.7407455}, //
+
46751 {6.54803991, 11.7523441}, //
+
46752 {6.54247999, 11.7643604}, //
+
46753 {6.53682995, 11.7767944}, //
+
46754 {6.53108978, 11.7896442}, //
+
46755 {6.52528, 11.8029118}, //
+
46756 {6.51938009, 11.8165979}, //
+
46757 {6.51340008, 11.8306999}, //
+
46758 {6.51042986, 11.8374147}, //
+
46759 {6.50754023, 11.8440056}, //
+
46760 {6.50474024, 11.8504725}, //
+
46761 {6.50201988, 11.8568144}, //
+
46762 {6.49938011, 11.8630304}, //
+
46763 {6.49681997, 11.8691216}, //
+
46764 {6.49434996, 11.8750896}, //
+
46765 {6.49196005, 11.8809319}, //
+
46766 {6.48964977, 11.8866501}, //
+
46767 {6.48748016, 11.8920746}, //
+
46768 {6.48546982, 11.8970385}, //
+
46769 {6.48363018, 11.9015388}, //
+
46770 {6.48195982, 11.9055777}, //
+
46771 {6.48046017, 11.9091558}, //
+
46772 {6.47911978, 11.9122725}, //
+
46773 {6.47794008, 11.9149265}, //
+
46774 {6.47694016, 11.917119}, //
+
46775 {6.47609997, 11.9188499}, //
+
46776 {6.47596979, 11.9213247}, //
+
46777 {6.47559977, 11.9242182}, //
+
46778 {6.47496986, 11.9275284}, //
+
46779 {6.4740901, 11.9312553}, //
+
46780 {6.47294998, 11.9353991}, //
+
46781 {6.47157001, 11.9399614}, //
+
46782 {6.46993017, 11.9449396}, //
+
46783 {6.46803999, 11.9503365}, //
+
46784 {6.46589994, 11.9561501}, //
+
46785 {6.46362019, 11.966012}, //
+
46786 {6.4612999, 11.9759989}, //
+
46787 {6.45894003, 11.9861107}, //
+
46788 {6.45653009, 11.9963484}, //
+
46789 {6.4540801, 12.0067101}, //
+
46790 {6.45159006, 12.01719}, //
+
46791 {6.44904995, 12.0277996}, //
+
46792 {6.44646978, 12.0385399}, //
+
46793 {6.44385004, 12.0494003}, //
+
46794 {6.44127989, 12.0599699}, //
+
46795 {6.43883991, 12.0698204}, //
+
46796 {6.4365201, 12.07897}, //
+
46797 {6.43431997, 12.0874004}, //
+
46798 {6.43226004, 12.0951204}, //
+
46799 {6.43031979, 12.1021299}, //
+
46800 {6.42850018, 12.1084299}, //
+
46801 {6.42680979, 12.1140203}, //
+
46802 {6.42525005, 12.1189003}, //
+
46803 {6.42311001, 12.1255903}, //
+
46804 {6.42121983, 12.1321201}, //
+
46805 {6.41957998, 12.1384802}, //
+
46806 {6.41820002, 12.14468}, //
+
46807 {6.4170599, 12.1507101}, //
+
46808 {6.41618013, 12.1565704}, //
+
46809 {6.41555023, 12.1622601}, //
+
46810 {6.41518021, 12.1677904}, //
+
46811 {6.41505003, 12.1731501}, //
+
46812 {6.4142499, 12.1777601}, //
+
46813 {6.41337013, 12.1825304}, //
+
46814 {6.41240978, 12.1874704}, //
+
46815 {6.4113698, 12.1925802}, //
+
46816 {6.41024017, 12.1978598}, //
+
46817 {6.40902996, 12.20331}, //
+
46818 {6.4077301, 12.2089195}, //
+
46819 {6.40636015, 12.2146997}, //
+
46820 {6.40490007, 12.2206497}, //
+
46821 {6.40347004, 12.2259398}, //
+
46822 {6.40221024, 12.2312698}, //
+
46823 {6.40112019, 12.23664}, //
+
46824 {6.40019989, 12.2420502}, //
+
46825 {6.39943981, 12.24751}, //
+
46826 {6.39885998, 12.2530098}, //
+
46827 {6.39843988, 12.2585497}, //
+
46828 {6.39818001, 12.2641296}, //
+
46829 {6.3980999, 12.2697496}, //
+
46830 {6.3980999, 12.3393002}, //
+
46831 {6.39807987, 12.3407097}, //
+
46832 {6.39801979, 12.3418999}, //
+
46833 {6.39791012, 12.3428898}, //
+
46834 {6.39775991, 12.3436699}, //
+
46835 {6.39758015, 12.3442297}, //
+
46836 {6.39733982, 12.3445902}, //
+
46837 {6.39706993, 12.3447399}, //
+
46838 {6.39675999, 12.3446703}, //
+
46839 {6.39639997, 12.3444004}, //
+
46840 {6.39603996, 12.3439198}, //
+
46841 {6.39573002, 12.3432198}, //
+
46842 {6.39546013, 12.3423204}, //
+
46843 {6.3952198, 12.3412104}, //
+
46844 {6.39504004, 12.3398895}, //
+
46845 {6.39488983, 12.3383598}, //
+
46846 {6.39478016, 12.3366098}, //
+
46847 {6.39472008, 12.3346596}, //
+
46848 {6.39470005, 12.3325005}, //
+
46849 {6.39470005, 12.2952003}, //
+
46850 {6.39404011, 12.2869501}, //
+
46851 {6.39353991, 12.2787905}, //
+
46852 {6.39320993, 12.27071}, //
+
46853 {6.39305019, 12.2627201}, //
+
46854 {6.39305019, 12.2547998}, //
+
46855 {6.39320993, 12.2469797}, //
+
46856 {6.39353991, 12.2392302}, //
+
46857 {6.39404011, 12.2315798}, //
+
46858 {6.39470005, 12.224}, //
+
46859 {6.39470005, 12.1596003}, //
+
46860 {6.39466, 12.1529903}, //
+
46861 {6.39452982, 12.1467104}, //
+
46862 {6.39433002, 12.14077}, //
+
46863 {6.39404011, 12.13517}, //
+
46864 {6.39367008, 12.1298904}, //
+
46865 {6.39320993, 12.1249599}, //
+
46866 {6.39267015, 12.1203499}, //
+
46867 {6.39204979, 12.1160803}, //
+
46868 {6.39134979, 12.1121502}, //
+
46869 {6.38958979, 12.1051102}, //
+
46870 {6.38883018, 12.0975704}, //
+
46871 {6.38907003, 12.08953}, //
+
46872 {6.39031982, 12.0809803}, //
+
46873 {6.39258003, 12.0719404}, //
+
46874 {6.39584017, 12.0623903}, //
+
46875 {6.40010023, 12.05235}, //
+
46876 {6.40537024, 12.0417995}, //
+
46877 {6.41165018, 12.0307503}, //
+
46878 {6.41317987, 12.0275698}, //
+
46879 {6.4147501, 12.0240602}, //
+
46880 {6.41636992, 12.0202103}, //
+
46881 {6.41801977, 12.0160198}, //
+
46882 {6.41971016, 12.0115004}, //
+
46883 {6.42145014, 12.0066404}, //
+
46884 {6.42323017, 12.0014496}, //
+
46885 {6.42503977, 11.9959154}, //
+
46886 {6.42689991, 11.9900503}, //
+
46887 {6.42881012, 11.9839849}, //
+
46888 {6.43075991, 11.9778347}, //
+
46889 {6.43275976, 11.9715996}, //
+
46890 {6.43479013, 11.9652796}, //
+
46891 {6.4368701, 11.9588737}, //
+
46892 {6.43899012, 11.952383}, //
+
46893 {6.44115019, 11.9458075}, //
+
46894 {6.44334984, 11.939146}, //
+
46895 {6.44560003, 11.9323997}, //
+
46896 {6.44945002, 11.9183807}, //
+
46897 {6.45347023, 11.9049482}, //
+
46898 {6.45765018, 11.8921003}, //
+
46899 {6.46199989, 11.879837}, //
+
46900 {6.46651983, 11.8681593}, //
+
46901 {6.47119999, 11.8570671}, //
+
46902 {6.4760499, 11.8465586}, //
+
46903 {6.48107004, 11.8366365}, //
+
46904 {6.48624992, 11.8273001}, //
+
46905 {6.48784018, 11.8226938}, //
+
46906 {6.4896102, 11.8179216}, //
+
46907 {6.49152994, 11.8129826}, //
+
46908 {6.49362993, 11.8078775}, //
+
46909 {6.49589014, 11.8026056}, //
+
46910 {6.4983201, 11.7971668}, //
+
46911 {6.50090981, 11.7915611}, //
+
46912 {6.50367022, 11.7857885}, //
+
46913 {6.5065999, 11.77985}, //
+
46914 {6.51109982, 11.7715187}, //
+
46915 {6.51556015, 11.7631044}, //
+
46916 {6.51997995, 11.7546062}, //
+
46917 {6.52435017, 11.7460232}, //
+
46918 {6.52868986, 11.7373562}, //
+
46919 {6.53297997, 11.7286062}, //
+
46920 {6.53723001, 11.7197714}, //
+
46921 {6.54143, 11.7108517}, //
+
46922 {6.54559994, 11.7018499}, //
+
46923 {6.54956007, 11.6929731}, //
+
46924 {6.55314016, 11.684433}, //
+
46925 {6.55634022, 11.6762276}, //
+
46926 {6.55916977, 11.6683588}, //
+
46927 {6.56162024, 11.6608248}, //
+
46928 {6.56369019, 11.6536283}, //
+
46929 {6.56539011, 11.6467657}, //
+
46930 {6.56671, 11.6402397}, //
+
46931 {6.56764984, 11.6340504}, //
+
46932 {6.56921005, 11.6279325}, //
+
46933 {6.57089996, 11.6216497}, //
+
46934 {6.57272005, 11.6152}, //
+
46935 {6.57465982, 11.6085835}, //
+
46936 {6.57672024, 11.6018}, //
+
46937 {6.57891989, 11.5948496}, //
+
46938 {6.58124018, 11.5877333}, //
+
46939 {6.58368015, 11.5804501}, //
+
46940 {6.58624983, 11.573}, //
+
46941 {6.58889008, 11.5655708}, //
+
46942 {6.59153986, 11.5583506}, //
+
46943 {6.59418011, 11.5513391}, //
+
46944 {6.59681988, 11.5445356}, //
+
46945 {6.59946012, 11.537941}, //
+
46946 {6.60208988, 11.5315561}, //
+
46947 {6.60473013, 11.5253782}, //
+
46948 {6.6073699, 11.5194101}, //
+
46949 {6.61000013, 11.5136499}, //
+
46950 {6.61253977, 11.508235}, //
+
46951 {6.61487007, 11.5032797}, //
+
46952 {6.61699009, 11.4987831}, //
+
46953 {6.61889982, 11.4947462}, //
+
46954 {6.62060022, 11.491169}, //
+
46955 {6.62134981, 11.4895945}, //
+
46956 {6.62076998, 11.4904938}, //
+
46957 {6.61913013, 11.4928789}, //
+
46958 {6.61723995, 11.4955139}, //
+
46959 {6.61509991, 11.4983997}, //
+
46960 {6.61280012, 11.5015678}, //
+
46961 {6.61042023, 11.5050268}, //
+
46962 {6.60795021, 11.5087776}, //
+
46963 {6.60540009, 11.5128202}, //
+
46964 {6.60275984, 11.5171528}, //
+
46965 {6.60002995, 11.5217781}, //
+
46966 {6.59721994, 11.5266943}, //
+
46967 {6.59432983, 11.5319014}, //
+
46968 {6.59135008, 11.5374002}, //
+
46969 {6.58833981, 11.5430756}, //
+
46970 {6.58533001, 11.5487928}, //
+
46971 {6.58232021, 11.5545502}, //
+
46972 {6.57930994, 11.5603476}, //
+
46973 {6.57629013, 11.5661869}, //
+
46974 {6.57327986, 11.5720673}, //
+
46975 {6.57027006, 11.5779867}, //
+
46976 {6.56725979, 11.5839481}, //
+
46977 {6.56424999, 11.5899496}, //
+
46978 {6.55839014, 11.6046515}, //
+
46979 {6.5528698, 11.618597}, //
+
46980 {6.5476799, 11.6317892}, //
+
46981 {6.54282999, 11.644227}, //
+
46982 {6.53831005, 11.6559095}, //
+
46983 {6.53412008, 11.6668386}, //
+
46984 {6.53026009, 11.6770144}, //
+
46985 {6.52674007, 11.6864338}, //
+
46986 {6.52355003, 11.6950998}, //
+
46987 {6.52279997, 11.6980686}, //
+
46988 {6.52203989, 11.7009544}, //
+
46989 {6.52128983, 11.7037563}, //
+
46990 {6.52054024, 11.7064734}, //
+
46991 {6.51979017, 11.7091064}, //
+
46992 {6.51904011, 11.7116556}, //
+
46993 {6.51829004, 11.7141209}, //
+
46994 {6.51754999, 11.7165022}, //
+
46995 {6.51679993, 11.7187996}, //
+
46996 {6.51596022, 11.7212334}, //
+
46997 {6.5149498, 11.724}, //
+
46998 {6.51378012, 11.7271004}, //
+
46999 {6.51243019, 11.7305326}, //
+
47000 {6.51092005, 11.7342997}, //
+
47001 {6.50924015, 11.7384005}, //
+
47002 {6.50740004, 11.7428331}, //
+
47003 {6.50538015, 11.7475996}, //
+
47004 {6.50320005, 11.7526999}, //
+
47005 {6.49865007, 11.7619543}, //
+
47006 {6.49400997, 11.7716265}, //
+
47007 {6.48928022, 11.7817173}, //
+
47008 {6.48446989, 11.7922258}, //
+
47009 {6.47957993, 11.803154}, //
+
47010 {6.47459984, 11.8144999}, //
+
47011 {6.46954012, 11.8262653}, //
+
47012 {6.4643898, 11.8384476}, //
+
47013 {6.45914984, 11.8510504}, //
+
47014 {6.4567399, 11.8572817}, //
+
47015 {6.45403004, 11.8639336}, //
+
47016 {6.45102978, 11.871006}, //
+
47017 {6.44774008, 11.8784971}, //
+
47018 {6.44415998, 11.8864079}, //
+
47019 {6.44027996, 11.8947392}, //
+
47020 {6.43611002, 11.9034901}, //
+
47021 {6.43165016, 11.9126596}, //
+
47022 {6.42689991, 11.9222498}, //
+
47023 {6.42200994, 11.9320068}, //
+
47024 {6.41711998, 11.94168}, //
+
47025 {6.41223001, 11.9512672}, //
+
47026 {6.40733004, 11.9607687}, //
+
47027 {6.40244007, 11.9701853}, //
+
47028 {6.39754009, 11.979517}, //
+
47029 {6.39265013, 11.9887629}, //
+
47030 {6.38775015, 11.9979239}, //
+
47031 {6.38285017, 12.007}, //
+
47032 {6.37809992, 12.01579}, //
+
47033 {6.37364006, 12.0240803}, //
+
47034 {6.36947012, 12.0318699}, //
+
47035 {6.36560011, 12.0391598}, //
+
47036 {6.36202002, 12.0459404}, //
+
47037 {6.35873985, 12.0522203}, //
+
47038 {6.35575008, 12.0579996}, //
+
47039 {6.35305023, 12.0632801}, //
+
47040 {6.35064983, 12.0680504}, //
+
47041 {6.34786987, 12.0733099}, //
+
47042 {6.34555006, 12.0785198}, //
+
47043 {6.3436799, 12.0836897}, //
+
47044 {6.34227991, 12.0888205}, //
+
47045 {6.34134007, 12.0938997}, //
+
47046 {6.34084988, 12.0989399}, //
+
47047 {6.34081984, 12.10394}, //
+
47048 {6.34125996, 12.1088896}, //
+
47049 {6.34215021, 12.1138}, //
+
47050 {6.34334993, 12.1187601}, //
+
47051 {6.34466982, 12.1238499}, //
+
47052 {6.34610987, 12.1290703}, //
+
47053 {6.34768009, 12.1344099}, //
+
47054 {6.34938002, 12.1398697}, //
+
47055 {6.35119009, 12.1454697}, //
+
47056 {6.35313988, 12.1511898}, //
+
47057 {6.35520983, 12.1570301}, //
+
47058 {6.35739994, 12.1630001}, //
+
47059 {6.35816002, 12.1644602}, //
+
47060 {6.35891008, 12.1658297}, //
+
47061 {6.35967016, 12.1671305}, //
+
47062 {6.36042023, 12.1683397}, //
+
47063 {6.36117983, 12.1694698}, //
+
47064 {6.36192989, 12.1705103}, //
+
47065 {6.36268997, 12.1714697}, //
+
47066 {6.36344004, 12.1723499}, //
+
47067 {6.36420012, 12.1731501}, //
+
47068 {6.36561012, 12.1769199}, //
+
47069 {6.36679983, 12.1806803}, //
+
47070 {6.36779022, 12.1844501}, //
+
47071 {6.36856985, 12.18822}, //
+
47072 {6.36913013, 12.1919804}, //
+
47073 {6.36949015, 12.1957502}, //
+
47074 {6.36963987, 12.1995201}, //
+
47075 {6.36956978, 12.2032804}, //
+
47076 {6.36929989, 12.2070503}, //
+
47077 {6.36889982, 12.2108202}, //
+
47078 {6.36846018, 12.2145796}, //
+
47079 {6.36798, 12.2183504}, //
+
47080 {6.36745024, 12.2221203}, //
+
47081 {6.36688995, 12.2258797}, //
+
47082 {6.36628008, 12.2296495}, //
+
47083 {6.36563015, 12.2334204}, //
+
47084 {6.36493015, 12.2371798}, //
+
47085 {6.36420012, 12.2409496}, //
+
47086 {6.3634901, 12.2447205}, //
+
47087 {6.3628602, 12.2484903}, //
+
47088 {6.36230993, 12.2522602}, //
+
47089 {6.36184978, 12.2560301}, //
+
47090 {6.36147022, 12.2598}, //
+
47091 {6.36117983, 12.2635698}, //
+
47092 {6.36097002, 12.2673502}, //
+
47093 {6.36083984, 12.2711201}, //
+
47094 {6.36079979, 12.2749004}, //
+
47095 {6.3608799, 12.2810497}, //
+
47096 {6.36113977, 12.2874498}, //
+
47097 {6.36155987, 12.2940998}, //
+
47098 {6.36214018, 12.3009996}, //
+
47099 {6.36289978, 12.3081598}, //
+
47100 {6.36382008, 12.3155699}, //
+
47101 {6.36491013, 12.3232298}, //
+
47102 {6.36616993, 12.3311396}, //
+
47103 {6.36759996, 12.3393002}, //
+
47104 {6.36903, 12.34445}, //
+
47105 {6.3702898, 12.34935}, //
+
47106 {6.37137985, 12.3540001}, //
+
47107 {6.37230015, 12.3584003}, //
+
47108 {6.37306023, 12.3625402}, //
+
47109 {6.37364006, 12.3664303}, //
+
47110 {6.37406015, 12.3700705}, //
+
47111 {6.37432003, 12.3734598}, //
+
47112 {6.37440014, 12.3766003}, //
+
47113 {6.37438011, 12.3804903}, //
+
47114 {6.37432003, 12.3846302}, //
+
47115 {6.37420988, 12.3890305}, //
+
47116 {6.37406015, 12.3936701}, //
+
47117 {6.37387991, 12.3985701}, //
+
47118 {6.37364006, 12.4037104}, //
+
47119 {6.37337017, 12.4091101}, //
+
47120 {6.37306023, 12.4147501}, //
+
47121 {6.37270021, 12.4206495}, //
+
47122 {6.3723402, 12.4266005}, //
+
47123 {6.37202978, 12.4323797}, //
+
47124 {6.37175989, 12.4379902}, //
+
47125 {6.37152004, 12.4434404}, //
+
47126 {6.3713398, 12.44872}, //
+
47127 {6.37119007, 12.4538298}, //
+
47128 {6.37107992, 12.4587698}, //
+
47129 {6.37101984, 12.4635401}, //
+
47130 {6.37101984, 12.4640799}, //
+
47131 {6.37107992, 12.4635696}, //
+
47132 {6.37119007, 12.4632397}, //
+
47133 {6.3713398, 12.4630699}, //
+
47134 {6.37152004, 12.4630699}, //
+
47135 {6.37175989, 12.4632397}, //
+
47136 {6.37202978, 12.4635696}, //
+
47137 {6.3723402, 12.4640799}, //
+
47138 {6.37270021, 12.4647503}, //
+
47139 {6.37307978, 12.4655704}, //
+
47140 {6.3734498, 12.4665098}, //
+
47141 {6.37382984, 12.4675798}, //
+
47142 {6.37419987, 12.46877}, //
+
47143 {6.37456989, 12.4700899}, //
+
47144 {6.37493992, 12.47153}, //
+
47145 {6.37530994, 12.4730902}, //
+
47146 {6.37537003, 12.4733601}, //
+
47147 {6.37551022, 12.4733896}, //
+
47148 {6.37714005, 12.4735403}, //
+
47149 {6.37902021, 12.4734697}, //
+
47150 {6.38114977, 12.4731998}, //
+
47151 {6.38341999, 12.4727297}, //
+
47152 {6.3856802, 12.4720402}, //
+
47153 {6.38793993, 12.4711504}, //
+
47154 {6.39021015, 12.4700403}, //
+
47155 {6.39246988, 12.46873}, //
+
47156 {6.39473009, 12.4672003}, //
+
47157 {6.39698982, 12.4654598}, //
+
47158 {6.39924002, 12.4635096}, //
+
47159 {6.40150023, 12.4613504}, //
+
47160 {6.40380001, 12.4590502}, //
+
47161 {6.4061799, 12.4566698}, //
+
47162 {6.40864992, 12.4542103}, //
+
47163 {6.41383982, 12.4490204}, //
+
47164 {6.41657019, 12.44631}, //
+
47165 {6.41938019, 12.4434996}, //
+
47166 {6.42226982, 12.4406204}, //
+
47167 {6.42525005, 12.4376497}, //
+
47168 {6.42675018, 12.4361801}, //
+
47169 {6.42824984, 12.4348001}, //
+
47170 {6.42975998, 12.4334898}, //
+
47171 {6.43126011, 12.4322796}, //
+
47172 {6.43276978, 12.4311399}, //
+
47173 {6.43426991, 12.43009}, //
+
47174 {6.43578005, 12.4291296}, //
+
47175 {6.43729019, 12.4282503}, //
+
47176 {6.43879986, 12.4274502}, //
+
47177 {6.43879986, 12.4240503}, //
+
47178 {6.44026995, 12.4232903}, //
+
47179 {6.44164991, 12.4225397}, //
+
47180 {6.44294977, 12.4217796}, //
+
47181 {6.44415998, 12.42103}, //
+
47182 {6.44529009, 12.42027}, //
+
47183 {6.44633007, 12.4195204}, //
+
47184 {6.44728994, 12.4187603}, //
+
47185 {6.44816017, 12.4180098}, //
+
47186 {6.44894981, 12.4172497}, //
+
47187 {6.44967985, 12.4165297}, //
+
47188 {6.45037985, 12.4158401}, //
+
47189 {6.45102978, 12.4152002}, //
+
47190 {6.45164013, 12.4146004}, //
+
47191 {6.45219994, 12.4140396}, //
+
47192 {6.45273018, 12.4135199}, //
+
47193 {6.45405006, 12.4122}, //
+
47194 {6.45439005, 12.4118204}, //
+
47195 {6.45463991, 12.4114399}, //
+
47196 {6.45481014, 12.4110699}, //
+
47197 {6.45488977, 12.4106903}, //
+
47198 {6.45488977, 12.4103098}, //
+
47199 {6.45481014, 12.4099302}, //
+
47200 {6.45463991, 12.4095602}, //
+
47201 {6.45439005, 12.4091797}, //
+
47202 {6.45405006, 12.4088001}, //
+
47203 {6.45269012, 12.4074402}, //
+
47204 {6.45242977, 12.4071798}, //
+
47205 {6.45237017, 12.4071198}, //
+
47206 {6.45235014, 12.4070997}, //
+
47207 {6.45227003, 12.40693}, //
+
47208 {6.45215988, 12.4067202}, //
+
47209 {6.45159006, 12.4055901}, //
+
47210 {6.45132017, 12.4050398}, //
+
47211 {6.45065022, 12.4036999}, //
+
47212 {6.45025015, 12.4029503}, //
+
47213 {6.44981003, 12.4022102}, //
+
47214 {6.44932985, 12.4014597}, //
+
47215 {6.4488101, 12.4007101}, //
+
47216 {6.44824982, 12.3999596}, //
+
47217 {6.44764996, 12.39921}, //
+
47218 {6.44701004, 12.3984604}, //
+
47219 {6.44632006, 12.3977003}, //
+
47220 {6.44560003, 12.3969498}, //
+
47221 {6.44417, 12.3955202}, //
+
47222 {6.44352007, 12.3948698}, //
+
47223 {6.44234991, 12.3936996}, //
+
47224 {6.44049978, 12.3918505}, //
+
47225 {6.44010019, 12.39149}, //
+
47226 {6.43966007, 12.39118}, //
+
47227 {6.4391799, 12.3909101}, //
+
47228 {6.43865013, 12.3906698}, //
+
47229 {6.43808985, 12.3904896}, //
+
47230 {6.43747997, 12.3903399}, //
+
47231 {6.43683004, 12.3902302}, //
+
47232 {6.43613005, 12.3901701}, //
+
47233 {6.43540001, 12.3901501}, //
+
47234 {6.43537998, 12.39013}, //
+
47235 {6.43521023, 12.3899603}, //
+
47236 {6.43506002, 12.3898096}, //
+
47237 {6.43370008, 12.3884497}, //
+
47238 {6.43334007, 12.3880501}, //
+
47239 {6.43303013, 12.3876104}, //
+
47240 {6.43275976, 12.3871298}, //
+
47241 {6.43251991, 12.38661}, //
+
47242 {6.43234015, 12.3860502}, //
+
47243 {6.43218994, 12.3854504}, //
+
47244 {6.43207979, 12.3848104}, //
+
47245 {6.43202019, 12.38412}, //
+
47246 {6.43200016, 12.3834}, //
+
47247 {6.43135977, 12.3819304}, //
+
47248 {6.43093014, 12.3805504}, //
+
47249 {6.43069983, 12.37924}, //
+
47250 {6.4306798, 12.3780298}, //
+
47251 {6.43087006, 12.3768902}, //
+
47252 {6.43127012, 12.3758402}, //
+
47253 {6.43186998, 12.3748798}, //
+
47254 {6.43268013, 12.3739996}, //
+
47255 {6.43370008, 12.3732004}, //
+
47256 {6.43489981, 12.3724899}, //
+
47257 {6.43622017, 12.3718596}, //
+
47258 {6.43766022, 12.3713102}, //
+
47259 {6.43922997, 12.3708496}, //
+
47260 {6.44092989, 12.37047}, //
+
47261 {6.44273996, 12.3701801}, //
+
47262 {6.44469023, 12.3699703}, //
+
47263 {6.44676018, 12.3698397}, //
+
47264 {6.44894981, 12.3697996}, //
+
47265 {6.45110989, 12.3697395}, //
+
47266 {6.45306015, 12.3695498}, //
+
47267 {6.45481014, 12.3692303}, //
+
47268 {6.45633984, 12.3687897}, //
+
47269 {6.4576602, 12.3682299}, //
+
47270 {6.4587698, 12.3675299}, //
+
47271 {6.45967007, 12.3667097}, //
+
47272 {6.46037006, 12.3657703}, //
+
47273 {6.46084976, 12.3647003}, //
+
47274 {6.46124983, 12.3635597}, //
+
47275 {6.46168995, 12.3623695}, //
+
47276 {6.46217012, 12.3611403}, //
+
47277 {6.46268988, 12.35987}, //
+
47278 {6.46325016, 12.3585501}, //
+
47279 {6.46385002, 12.3571901}, //
+
47280 {6.46448994, 12.3557901}, //
+
47281 {6.46517992, 12.3543396}, //
+
47282 {6.46589994, 12.35285}, //
+
47283 {6.46594, 12.3513498}, //
+
47284 {6.46607018, 12.3498497}, //
+
47285 {6.46627998, 12.34834}, //
+
47286 {6.4665699, 12.3468399}, //
+
47287 {6.46694994, 12.3453302}, //
+
47288 {6.46741009, 12.3438301}, //
+
47289 {6.46795988, 12.3423204}, //
+
47290 {6.46858978, 12.3408098}, //
+
47291 {6.46929979, 12.3393002}, //
+
47292 {6.47219992, 12.3321505}, //
+
47293 {6.47484016, 12.3242397}, //
+
47294 {6.47723007, 12.3155699}, //
+
47295 {6.4793601, 12.3061504}, //
+
47296 {6.48124981, 12.2959805}, //
+
47297 {6.48288012, 12.2850599}, //
+
47298 {6.48425007, 12.2733698}, //
+
47299 {6.48538017, 12.2609396}, //
+
47300 {6.48624992, 12.2477503}, //
+
47301 {6.4863801, 12.2417898}, //
+
47302 {6.48675013, 12.2359505}, //
+
47303 {6.48738003, 12.2302399}, //
+
47304 {6.48824978, 12.2246599}, //
+
47305 {6.48937988, 12.2192001}, //
+
47306 {6.49075985, 12.2138596}, //
+
47307 {6.49239016, 12.2086496}, //
+
47308 {6.49426985, 12.2035599}, //
+
47309 {6.49639988, 12.1985998}, //
+
47310 {6.49871016, 12.1937199}, //
+
47311 {6.50110006, 12.18888}, //
+
47312 {6.50357008, 12.1840897}, //
+
47313 {6.50613022, 12.1793404}, //
+
47314 {6.50876999, 12.1746197}, //
+
47315 {6.51148987, 12.16996}, //
+
47316 {6.51428986, 12.1653299}, //
+
47317 {6.51717997, 12.1607399}, //
+
47318 {6.52015018, 12.1562004}, //
+
47319 {6.52090979, 12.1532698}, //
+
47320 {6.52165985, 12.1505098}, //
+
47321 {6.52241993, 12.1479197}, //
+
47322 {6.52316999, 12.1454897}, //
+
47323 {6.52393007, 12.1432304}, //
+
47324 {6.52468014, 12.1411304}, //
+
47325 {6.52544022, 12.1392097}, //
+
47326 {6.5261898, 12.1374397}, //
+
47327 {6.52694988, 12.13585}, //
+
47328 {6.52917004, 12.1318102}, //
+
47329 {6.53131008, 12.1272297}, //
+
47330 {6.53337002, 12.1220999}, //
+
47331 {6.53533983, 12.1164303}, //
+
47332 {6.53722, 12.1102104}, //
+
47333 {6.53902006, 12.1034498}, //
+
47334 {6.54073, 12.0961399}, //
+
47335 {6.54235983, 12.0882902}, //
+
47336 {6.54390001, 12.0798998}, //
+
47337 {6.5453701, 12.0713797}, //
+
47338 {6.54675007, 12.0631504}, //
+
47339 {6.54805994, 12.0552197}, //
+
47340 {6.54927015, 12.0475798}, //
+
47341 {6.55040979, 12.0402403}, //
+
47342 {6.55064011, 12.0386801}, //
+
47343 {6.55066013, 12.0380402}, //
+
47344 {6.55070019, 12.0341501}, //
+
47345 {6.5514102, 12.03193}, //
+
47346 {6.55184984, 12.0304604}, //
+
47347 {6.55242014, 12.0264301}, //
+
47348 {6.5532999, 12.0199699}, //
+
47349 {6.55410004, 12.0137997}, //
+
47350 {6.55418015, 12.01087}, //
+
47351 {6.55443001, 12.00811}, //
+
47352 {6.5548501, 12.0055199}, //
+
47353 {6.55542994, 12.0030899}, //
+
47354 {6.55618, 12.0008297}, //
+
47355 {6.55709982, 11.9987326}, //
+
47356 {6.55817986, 11.9968061}, //
+
47357 {6.55943012, 11.9950438}, //
+
47358 {6.56060982, 11.9937258}, //
+
47359 {6.56077003, 11.9910469}, //
+
47360 {6.56085014, 11.9866505}, //
+
47361 {6.56110001, 11.9861078}, //
+
47362 {6.56123018, 11.9838562}, //
+
47363 {6.5615201, 11.9794006}, //
+
47364 {6.56190014, 11.9743166}, //
+
47365 {6.56235981, 11.968606}, //
+
47366 {6.56291008, 11.962265}, //
+
47367 {6.56353998, 11.9552975}, //
+
47368 {6.56424999, 11.9476995}, //
+
47369 {6.56501007, 11.9398088}, //
+
47370 {6.56576014, 11.9319592}, //
+
47371 {6.56652021, 11.9241505}, //
+
47372 {6.5672698, 11.9163809}, //
+
47373 {6.56799984, 11.9089117}, //
+
47374 {6.56782007, 11.9051733}, //
+
47375 {6.5676899, 11.9009647}, //
+
47376 {6.56764984, 11.8968}, //
+
47377 {6.56778002, 11.8925514}, //
+
47378 {6.56815004, 11.8880939}, //
+
47379 {6.56877995, 11.8834276}, //
+
47380 {6.56965017, 11.8785534}, //
+
47381 {6.5707798, 11.8734703}, //
+
47382 {6.57215977, 11.8681784}, //
+
47383 {6.57320976, 11.8646288}, //
+
47384 {6.57369995, 11.8614292}, //
+
47385 {6.57426023, 11.8576622}, //
+
47386 {6.57477999, 11.8540611}, //
+
47387 {6.57526016, 11.850625}, //
+
47388 {6.57569981, 11.8473549}, //
+
47389 {6.57609987, 11.8442497}, //
+
47390 {6.57676983, 11.8388968}, //
+
47391 {6.5770402, 11.8367224}, //
+
47392 {6.57728004, 11.8348818}, //
+
47393 {6.57761002, 11.8322058}, //
+
47394 {6.57772017, 11.8313694}, //
+
47395 {6.57777977, 11.8308668}, //
+
47396 {6.5777998, 11.8306999}, //
+
47397 {6.57776022, 11.8301125}, //
+
47398 {6.57763004, 11.8298578}, //
+
47399 {6.57742023, 11.8299389}, //
+
47400 {6.57712984, 11.8303537}, //
+
47401 {6.5767498, 11.8311043}, //
+
47402 {6.57629013, 11.8321886}, //
+
47403 {6.57573986, 11.8336077}, //
+
47404 {6.57510996, 11.8353624}, //
+
47405 {6.57439995, 11.83745}, //
+
47406 {6.57362986, 11.8397789}, //
+
47407 {6.57282019, 11.8422327}, //
+
47408 {6.57196999, 11.8448114}, //
+
47409 {6.57108021, 11.8475142}, //
+
47410 {6.57013988, 11.8503418}, //
+
47411 {6.56915998, 11.8532944}, //
+
47412 {6.56813002, 11.8563719}, //
+
47413 {6.56705999, 11.8595734}, //
+
47414 {6.56594992, 11.8628998}, //
+
47415 {6.56479979, 11.8663101}, //
+
47416 {6.56360006, 11.8697624}, //
+
47417 {6.56235981, 11.8732557}, //
+
47418 {6.56107998, 11.876791}, //
+
47419 {6.55976009, 11.8803692}, //
+
47420 {6.55839014, 11.8839893}, //
+
47421 {6.55699015, 11.8876514}, //
+
47422 {6.55554008, 11.8913536}, //
+
47423 {6.55404997, 11.8950996}, //
+
47424 {6.55262995, 11.8987513}, //
+
47425 {6.55138016, 11.9021492}, //
+
47426 {6.55030012, 11.9052944}, //
+
47427 {6.54937983, 11.908186}, //
+
47428 {6.54863024, 11.9108248}, //
+
47429 {6.54804993, 11.9132109}, //
+
47430 {6.54762983, 11.9153442}, //
+
47431 {6.54737997, 11.917223}, //
+
47432 {6.54729986, 11.9188499}, //
+
47433 {6.54725981, 11.9205284}, //
+
47434 {6.54713011, 11.9225407}, //
+
47435 {6.54691982, 11.9248886}, //
+
47436 {6.54662991, 11.9275713}, //
+
47437 {6.54624987, 11.9305878}, //
+
47438 {6.5457902, 11.933939}, //
+
47439 {6.54523993, 11.9376249}, //
+
47440 {6.54461002, 11.9416447}, //
+
47441 {6.54390001, 11.9460001}, //
+
47442 {6.54309988, 11.9506483}, //
+
47443 {6.54222012, 11.9555464}, //
+
47444 {6.54125977, 11.9606943}, //
+
47445 {6.54021978, 11.966094}, //
+
47446 {6.53909016, 11.9717436}, //
+
47447 {6.53787994, 11.977644}, //
+
47448 {6.53658009, 11.9837961}, //
+
47449 {6.53521013, 11.9901981}, //
+
47450 {6.53375006, 11.99685}, //
+
47451 {6.53296995, 12.0035896}, //
+
47452 {6.53214979, 12.0102396}, //
+
47453 {6.53129005, 12.0168104}, //
+
47454 {6.53038979, 12.0232897}, //
+
47455 {6.52944994, 12.0296898}, //
+
47456 {6.52846003, 12.0360098}, //
+
47457 {6.52743006, 12.0422401}, //
+
47458 {6.52636003, 12.0483904}, //
+
47459 {6.52524996, 12.05445}, //
+
47460 {6.52417994, 12.0602703}, //
+
47461 {6.52324009, 12.0656796}, //
+
47462 {6.52241993, 12.0706701}, //
+
47463 {6.52171993, 12.0752401}, //
+
47464 {6.52116013, 12.0793896}, //
+
47465 {6.52072001, 12.0831203}, //
+
47466 {6.52040005, 12.0864296}, //
+
47467 {6.52020979, 12.0893202}, //
+
47468 {6.52015018, 12.0917997}, //
+
47469 {6.52005005, 12.0956497}, //
+
47470 {6.51973009, 12.0996704}, //
+
47471 {6.51920986, 12.1038504}, //
+
47472 {6.51846981, 12.1082001}, //
+
47473 {6.51752996, 12.1127195}, //
+
47474 {6.51636982, 12.1174002}, //
+
47475 {6.51500988, 12.1222496}, //
+
47476 {6.51343012, 12.1272697}, //
+
47477 {6.51165009, 12.1324501}, //
+
47478 {6.50984001, 12.1375599}, //
+
47479 {6.5081501, 12.1423397}, //
+
47480 {6.50657988, 12.14678}, //
+
47481 {6.50514984, 12.1508799}, //
+
47482 {6.50383997, 12.1546602}, //
+
47483 {6.50264978, 12.1580896}, //
+
47484 {6.50158978, 12.1611996}, //
+
47485 {6.50065994, 12.16397}, //
+
47486 {6.4998498, 12.1664}, //
+
47487 {6.4983201, 12.1695404}, //
+
47488 {6.49673986, 12.1729202}, //
+
47489 {6.49513006, 12.1765604}, //
+
47490 {6.49347019, 12.1804504}, //
+
47491 {6.49176979, 12.1845903}, //
+
47492 {6.49002981, 12.1889801}, //
+
47493 {6.48823977, 12.1936197}, //
+
47494 {6.48642015, 12.1985102}, //
+
47495 {6.48455, 12.2036505}, //
+
47496 {6.48268986, 12.2090101}, //
+
47497 {6.48087978, 12.2145395}, //
+
47498 {6.47910023, 12.2202301}, //
+
47499 {6.47735977, 12.2260904}, //
+
47500 {6.47566986, 12.2321196}, //
+
47501 {6.47402, 12.2383204}, //
+
47502 {6.47240019, 12.2446804}, //
+
47503 {6.47082996, 12.2512102}, //
+
47504 {6.46929979, 12.2579002}, //
+
47505 {6.46852016, 12.2630701}, //
+
47506 {6.4677, 12.2680397}, //
+
47507 {6.46683979, 12.27279}, //
+
47508 {6.46594, 12.2773304}, //
+
47509 {6.46500015, 12.2816696}, //
+
47510 {6.46400976, 12.2857904}, //
+
47511 {6.46297979, 12.2896996}, //
+
47512 {6.46190977, 12.2934103}, //
+
47513 {6.46080017, 12.2968998}, //
+
47514 {6.45966005, 12.3003101}, //
+
47515 {6.45846987, 12.3037596}, //
+
47516 {6.4572401, 12.3072596}, //
+
47517 {6.45596981, 12.3107996}, //
+
47518 {6.45464993, 12.3143797}, //
+
47519 {6.45328999, 12.3180103}, //
+
47520 {6.45188999, 12.3216801}, //
+
47521 {6.45043993, 12.3253899}, //
+
47522 {6.44894981, 12.3291502}, //
+
47523 {6.44894981, 12.3274002}, //
+
47524 {6.44898987, 12.3254204}, //
+
47525 {6.44912004, 12.3232203}, //
+
47526 {6.44932985, 12.3208199}, //
+
47527 {6.44961977, 12.3182096}, //
+
47528 {6.44999981, 12.3153896}, //
+
47529 {6.45045996, 12.3123598}, //
+
47530 {6.45101023, 12.3091097}, //
+
47531 {6.45164013, 12.3056602}, //
+
47532 {6.45235014, 12.302}, //
+
47533 {6.45239019, 12.2982101}, //
+
47534 {6.45251989, 12.2943802}, //
+
47535 {6.45273018, 12.2905102}, //
+
47536 {6.4530201, 12.2866001}, //
+
47537 {6.45340014, 12.2826405}, //
+
47538 {6.45385981, 12.2786398}, //
+
47539 {6.45441008, 12.2746}, //
+
47540 {6.45503998, 12.2705202}, //
+
47541 {6.45574999, 12.2664003}, //
+
47542 {6.45646, 12.2623196}, //
+
47543 {6.4570899, 12.2583599}, //
+
47544 {6.45764017, 12.25453}, //
+
47545 {6.45809984, 12.2508297}, //
+
47546 {6.45847988, 12.2472496}, //
+
47547 {6.4587698, 12.2438002}, //
+
47548 {6.45898008, 12.2404699}, //
+
47549 {6.45910978, 12.2372704}, //
+
47550 {6.45914984, 12.2341995}, //
+
47551 {6.45930004, 12.2273903}, //
+
47552 {6.45974016, 12.22054}, //
+
47553 {6.4604702, 12.2136497}, //
+
47554 {6.46149015, 12.2067204}, //
+
47555 {6.46281004, 12.1997499}, //
+
47556 {6.46441984, 12.1927299}, //
+
47557 {6.46632004, 12.1856804}, //
+
47558 {6.46851015, 12.1785898}, //
+
47559 {6.47100019, 12.1714497}, //
+
47560 {6.47361994, 12.1644402}, //
+
47561 {6.4762001, 12.1577196}, //
+
47562 {6.47874022, 12.1513004}, //
+
47563 {6.48122978, 12.1451702}, //
+
47564 {6.48367977, 12.1393299}, //
+
47565 {6.48609018, 12.1337795}, //
+
47566 {6.48845005, 12.1285295}, //
+
47567 {6.49076986, 12.1235704}, //
+
47568 {6.4930501, 12.1189003}, //
+
47569 {6.49309015, 12.1174402}, //
+
47570 {6.49321985, 12.1160698}, //
+
47571 {6.49343014, 12.1147699}, //
+
47572 {6.49372005, 12.1135597}, //
+
47573 {6.49410009, 12.1124296}, //
+
47574 {6.49455976, 12.1113901}, //
+
47575 {6.49511003, 12.1104298}, //
+
47576 {6.49573994, 12.1095505}, //
+
47577 {6.49644995, 12.1087503}, //
+
47578 {6.49725008, 12.1069298}, //
+
47579 {6.49812984, 12.1044703}, //
+
47580 {6.49909019, 12.1013899}, //
+
47581 {6.50013018, 12.0976896}, //
+
47582 {6.5012598, 12.0933504}, //
+
47583 {6.50247002, 12.0883904}, //
+
47584 {6.50376987, 12.0828104}, //
+
47585 {6.50513983, 12.0765896}, //
+
47586 {6.5065999, 12.0697498}, //
+
47587 {6.50813007, 12.0625095}, //
+
47588 {6.50969982, 12.0551004}, //
+
47589 {6.51132011, 12.0475302}, //
+
47590 {6.51296997, 12.0397797}, //
+
47591 {6.51465988, 12.0318699}, //
+
47592 {6.51639986, 12.0237904}, //
+
47593 {6.51817989, 12.0155497}, //
+
47594 {6.51998997, 12.0071297}, //
+
47595 {6.52185011, 11.9985504}, //
+
47596 {6.52368021, 11.9900303}, //
+
47597 {6.52538013, 11.981802}, //
+
47598 {6.52694988, 11.9738674}, //
+
47599 {6.52839994, 11.9662237}, //
+
47600 {6.52971983, 11.9588737}, //
+
47601 {6.53092003, 11.9518166}, //
+
47602 {6.53199005, 11.9450521}, //
+
47603 {6.5329299, 11.9385796}, //
+
47604 {6.53375006, 11.9323997}, //
+
47605 {6.53450012, 11.9280138}, //
+
47606 {6.5352602, 11.9238768}, //
+
47607 {6.53600979, 11.9199886}, //
+
47608 {6.53675985, 11.9163513}, //
+
47609 {6.53750992, 11.912962}, //
+
47610 {6.53825998, 11.9098225}, //
+
47611 {6.53901005, 11.9069319}, //
+
47612 {6.5397501, 11.9042912}, //
+
47613 {6.54050016, 11.9019003}, //
+
47614 {6.54220009, 11.8954592}, //
+
47615 {6.54428005, 11.8881788}, //
+
47616 {6.54673004, 11.8800611}, //
+
47617 {6.54956007, 11.8711052}, //
+
47618 {6.55276012, 11.86131}, //
+
47619 {6.55634022, 11.8506784}, //
+
47620 {6.56029987, 11.8392067}, //
+
47621 {6.56464005, 11.8268976}, //
+
47622 {6.56934977, 11.8137503}, //
+
47623 {6.57423019, 11.8002262}, //
+
47624 {6.57906008, 11.786787}, //
+
47625 {6.58385992, 11.7734327}, //
+
47626 {6.58860016, 11.7601652}, //
+
47627 {6.59330988, 11.7469807}, //
+
47628 {6.59797001, 11.7338829}, //
+
47629 {6.60259008, 11.72087}, //
+
47630 {6.6071701, 11.707943}, //
+
47631 {6.61170006, 11.6950998}, //
+
47632 {6.61464024, 11.6863909}, //
+
47633 {6.61741018, 11.6783524}, //
+
47634 {6.6200099, 11.6709833}, //
+
47635 {6.62243986, 11.6642847}, //
+
47636 {6.62470007, 11.6582565}, //
+
47637 {6.62679005, 11.6528997}, //
+
47638 {6.62870979, 11.6482134}, //
+
47639 {6.6304698, 11.6441956}, //
+
47640 {6.63205004, 11.6408501}, //
+
47641 {6.63285017, 11.6370411}, //
+
47642 {6.63372993, 11.6331491}, //
+
47643 {6.63468981, 11.6291723}, //
+
47644 {6.63572979, 11.6251116}, //
+
47645 {6.63685989, 11.6209669}, //
+
47646 {6.63807011, 11.6167393}, //
+
47647 {6.63936996, 11.6124268}, //
+
47648 {6.64073992, 11.6080303}, //
+
47649 {6.64219999, 11.60355}, //
+
47650 {6.64369011, 11.5990067}, //
+
47651 {6.64514017, 11.5944223}, //
+
47652 {6.64654016, 11.5897942}, //
+
47653 {6.64791012, 11.585125}, //
+
47654 {6.64923, 11.5804138}, //
+
47655 {6.65050983, 11.5756607}, //
+
47656 {6.65175009, 11.5708656}, //
+
47657 {6.65294981, 11.5660286}, //
+
47658 {6.65409994, 11.5611496}, //
+
47659 {6.65523005, 11.5563335}, //
+
47660 {6.65636015, 11.5516863}, //
+
47661 {6.65748978, 11.5472059}, //
+
47662 {6.65861988, 11.5428934}, //
+
47663 {6.65974998, 11.5387487}, //
+
47664 {6.66088009, 11.5347719}, //
+
47665 {6.66200018, 11.5309639}, //
+
47666 {6.66312981, 11.5273228}, //
+
47667 {6.6642499, 11.5238504}, //
+
47668 {6.66777992, 11.5133066}, //
+
47669 {6.66877985, 11.510294}, //
+
47670 {6.66935015, 11.5086002}, //
+
47671 {6.66927004, 11.5087881}, //
+
47672 {6.66901016, 11.5093527}, //
+
47673 {6.66725016, 11.5133066}, //
+
47674 {6.66632986, 11.515378}, //
+
47675 {6.66523981, 11.5178251}, //
+
47676 {6.66254997, 11.5238504}, //
+
47677 {6.66100979, 11.5273228}, //
+
47678 {6.65937996, 11.5309639}, //
+
47679 {6.65767002, 11.5347719}, //
+
47680 {6.65586996, 11.5387487}, //
+
47681 {6.65398979, 11.5428934}, //
+
47682 {6.65201998, 11.5472059}, //
+
47683 {6.64996004, 11.5516863}, //
+
47684 {6.64782, 11.5563335}, //
+
47685 {6.64559984, 11.5611496}, //
+
47686 {6.64339018, 11.5659866}, //
+
47687 {6.64125013, 11.5706978}, //
+
47688 {6.63921022, 11.5752831}, //
+
47689 {6.63723993, 11.5797434}, //
+
47690 {6.63535976, 11.5840759}, //
+
47691 {6.63356018, 11.5882826}, //
+
47692 {6.63184023, 11.5923653}, //
+
47693 {6.63019991, 11.5963202}, //
+
47694 {6.62865019, 11.6001501}, //
+
47695 {6.62704992, 11.6042299}, //
+
47696 {6.62522984, 11.6089382}, //
+
47697 {6.62320995, 11.6142721}, //
+
47698 {6.62096977, 11.6202335}, //
+
47699 {6.6185298, 11.6268234}, //
+
47700 {6.61587, 11.6340389}, //
+
47701 {6.61300993, 11.6418819}, //
+
47702 {6.60993004, 11.6503515}, //
+
47703 {6.60664988, 11.6594496}, //
+
47704 {6.60328007, 11.6688929}, //
+
47705 {6.59994984, 11.6783762}, //
+
47706 {6.59667015, 11.6878996}, //
+
47707 {6.59342003, 11.6974649}, //
+
47708 {6.59020996, 11.7070704}, //
+
47709 {6.58704996, 11.7167168}, //
+
47710 {6.58393002, 11.7264042}, //
+
47711 {6.58084011, 11.7361307}, //
+
47712 {6.5777998, 11.7459002}, //
+
47713 {6.57483006, 11.7554073}, //
+
47714 {6.57194996, 11.764327}, //
+
47715 {6.56913996, 11.7726612}, //
+
47716 {6.56643009, 11.7804089}, //
+
47717 {6.56378984, 11.78757}, //
+
47718 {6.5612402, 11.7941437}, //
+
47719 {6.55878019, 11.8001328}, //
+
47720 {6.55639982, 11.8055353}, //
+
47721 {6.55410004, 11.8103504}, //
+
47722 {6.55410004, 11.8137503}, //
+
47723 {6.55323982, 11.8164454}, //
+
47724 {6.5521698, 11.8200188}, //
+
47725 {6.55088997, 11.8244724}, //
+
47726 {6.54939985, 11.8298044}, //
+
47727 {6.54769993, 11.8360147}, //
+
47728 {6.5457902, 11.8431063}, //
+
47729 {6.54367018, 11.8510752}, //
+
47730 {6.54133987, 11.8599234}, //
+
47731 {6.53879976, 11.8696499}, //
+
47732 {6.53617001, 11.8798475}, //
+
47733 {6.53353024, 11.8900871}, //
+
47734 {6.53088999, 11.9003668}, //
+
47735 {6.52826023, 11.9106874}, //
+
47736 {6.52561998, 11.9210482}, //
+
47737 {6.52298021, 11.9314499}, //
+
47738 {6.52033997, 11.9418926}, //
+
47739 {6.51769018, 11.9523764}, //
+
47740 {6.51504993, 11.9629002}, //
+
47741 {6.51251984, 11.9730358}, //
+
47742 {6.51020002, 11.9823351}, //
+
47743 {6.50809002, 11.9907942}, //
+
47744 {6.50619984, 11.9984159}, //
+
47745 {6.50450993, 12.0052004}, //
+
47746 {6.50302982, 12.0111399}, //
+
47747 {6.50176001, 12.0162497}, //
+
47748 {6.5007, 12.0205202}, //
+
47749 {6.4998498, 12.0239496}, //
+
47750 {6.49897003, 12.0280895}, //
+
47751 {6.49783993, 12.0329905}, //
+
47752 {6.49645996, 12.03864}, //
+
47753 {6.49482012, 12.0450497}, //
+
47754 {6.49293995, 12.0522099}, //
+
47755 {6.49080992, 12.0601301}, //
+
47756 {6.48842001, 12.0688}, //
+
47757 {6.48578978, 12.0782204}, //
+
47758 {6.48290014, 12.0883999}, //
+
47759 {6.47993994, 12.0959301}, //
+
47760 {6.47710991, 12.1034698}, //
+
47761 {6.47440004, 12.1110001}, //
+
47762 {6.47181988, 12.1185303}, //
+
47763 {6.46935987, 12.12607}, //
+
47764 {6.46703005, 12.1336002}, //
+
47765 {6.46482992, 12.1411304}, //
+
47766 {6.46274996, 12.1486702}, //
+
47767 {6.46080017, 12.1562004}, //
+
47768 {6.45898008, 12.1634798}, //
+
47769 {6.45729017, 12.1702604}, //
+
47770 {6.45572996, 12.1765404}, //
+
47771 {6.45428991, 12.1823101}, //
+
47772 {6.45297003, 12.1875896}, //
+
47773 {6.45177984, 12.1923599}, //
+
47774 {6.45070982, 12.19662}, //
+
47775 {6.44976997, 12.2003899}, //
+
47776 {6.44894981, 12.2036505}, //
+
47777 {6.44820023, 12.2067804}, //
+
47778 {6.44746017, 12.2101097}, //
+
47779 {6.44671011, 12.2136497}, //
+
47780 {6.44596004, 12.2173996}, //
+
47781 {6.44520998, 12.2213497}, //
+
47782 {6.44445992, 12.2255201}, //
+
47783 {6.44370985, 12.2298899}, //
+
47784 {6.44294977, 12.2344599}, //
+
47785 {6.44220018, 12.2392502}, //
+
47786 {6.44140005, 12.2440901}, //
+
47787 {6.44051981, 12.2488003}, //
+
47788 {6.43955994, 12.2533798}, //
+
47789 {6.43850994, 12.2578402}, //
+
47790 {6.43736982, 12.2621803}, //
+
47791 {6.43616009, 12.2663803}, //
+
47792 {6.43485022, 12.2704601}, //
+
47793 {6.43346977, 12.2744198}, //
+
47794 {6.43200016, 12.2782497}, //
+
47795 {6.43128014, 12.28123}, //
+
47796 {6.43059015, 12.2841196}, //
+
47797 {6.42995024, 12.2869301}, //
+
47798 {6.4293499, 12.2896605}, //
+
47799 {6.42879009, 12.2923002}, //
+
47800 {6.42826986, 12.2948503}, //
+
47801 {6.42779016, 12.2973204}, //
+
47802 {6.42735004, 12.2996998}, //
+
47803 {6.42694998, 12.302}, //
+
47804 {6.42525005, 12.31215}, //
+
47805 {6.42523003, 12.31429}, //
+
47806 {6.42516994, 12.3161802}, //
+
47807 {6.4250598, 12.3178196}, //
+
47808 {6.42491007, 12.3191996}, //
+
47809 {6.42472982, 12.3203402}, //
+
47810 {6.42448997, 12.3212204}, //
+
47811 {6.42422009, 12.3218498}, //
+
47812 {6.42391014, 12.3222198}, //
+
47813 {6.42355013, 12.3223495}, //
+
47814 {6.42311001, 12.3222198}, //
+
47815 {6.42254019, 12.3218498}, //
+
47816 {6.4218502, 12.3212204}, //
+
47817 {6.42103004, 12.3203402}, //
+
47818 {6.4200902, 12.3191996}, //
+
47819 {6.41902018, 12.3178196}, //
+
47820 {6.41781998, 12.3161802}, //
+
47821 {6.41650009, 12.31429}, //
+
47822 {6.41505003, 12.31215}, //
+
47823 {6.41507006, 12.3112001}, //
+
47824 {6.41513014, 12.3098202}, //
+
47825 {6.41523981, 12.3080301}, //
+
47826 {6.41539001, 12.30581}, //
+
47827 {6.41556978, 12.3031797}, //
+
47828 {6.41581011, 12.3001299}, //
+
47829 {6.41608, 12.2966499}, //
+
47830 {6.41638994, 12.2927599}, //
+
47831 {6.41674995, 12.2884502}, //
+
47832 {6.41715002, 12.2838402}, //
+
47833 {6.41759014, 12.2790699}, //
+
47834 {6.41806984, 12.2741299}, //
+
47835 {6.41860008, 12.2690201}, //
+
47836 {6.41915989, 12.2637396}, //
+
47837 {6.41976976, 12.2582903}, //
+
47838 {6.42042017, 12.2526798}, //
+
47839 {6.42112017, 12.2468996}, //
+
47840 {6.4218502, 12.2409496}, //
+
47841 {6.42260981, 12.2350101}, //
+
47842 {6.42335987, 12.2292404}, //
+
47843 {6.42411995, 12.22363}, //
+
47844 {6.42487001, 12.2181902}, //
+
47845 {6.42563009, 12.2129202}, //
+
47846 {6.42638016, 12.2078199}, //
+
47847 {6.42714024, 12.2028799}, //
+
47848 {6.42788982, 12.1981096}, //
+
47849 {6.4286499, 12.1934996}, //
+
47850 {6.43019009, 12.1873302}, //
+
47851 {6.43181992, 12.1808701}, //
+
47852 {6.43352985, 12.1741104}, //
+
47853 {6.4353199, 12.1670599}, //
+
47854 {6.43720007, 12.1597204}, //
+
47855 {6.43915987, 12.1520796}, //
+
47856 {6.44120979, 12.1441498}, //
+
47857 {6.44333982, 12.1359196}, //
+
47858 {6.44554996, 12.1274004}, //
+
47859 {6.44782019, 12.1189604}, //
+
47860 {6.45007992, 12.1109896}, //
+
47861 {6.45234013, 12.1034698}, //
+
47862 {6.45460987, 12.0964203}, //
+
47863 {6.45687008, 12.0898199}, //
+
47864 {6.45912981, 12.0836897}, //
+
47865 {6.46139002, 12.0780201}, //
+
47866 {6.46364021, 12.0727997}, //
+
47867 {6.46589994, 12.0680504}, //
+
47868 {6.46817017, 12.0640297}, //
+
47869 {6.4704299, 12.0595102}, //
+
47870 {6.47269011, 12.0544901}, //
+
47871 {6.47495985, 12.0489597}, //
+
47872 {6.47722006, 12.0429401}, //
+
47873 {6.47947979, 12.0364103}, //
+
47874 {6.48174, 12.0293703}, //
+
47875 {6.48399019, 12.0218401}, //
+
47876 {6.48624992, 12.0137997}, //
+
47877 {6.4885602, 12.0053902}, //
+
47878 {6.49095011, 11.9967213}, //
+
47879 {6.49342012, 11.9878063}, //
+
47880 {6.49597979, 11.9786396}, //
+
47881 {6.49862003, 11.969223}, //
+
47882 {6.50133991, 11.9595556}, //
+
47883 {6.5041399, 11.9496384}, //
+
47884 {6.50703001, 11.9394693}, //
+
47885 {6.51000023, 11.9290504}, //
+
47886 {6.51296997, 11.9172039}, //
+
47887 {6.51586008, 11.905776}, //
+
47888 {6.51866007, 11.8947668}, //
+
47889 {6.52137995, 11.8841763}, //
+
47890 {6.5240202, 11.8740044}, //
+
47891 {6.52657986, 11.8642502}, //
+
47892 {6.52904987, 11.8549147}, //
+
47893 {6.53143978, 11.8459978}, //
+
47894 {6.53375006, 11.8374996}, //
+
47895 {6.53588009, 11.8302174}, //
+
47896 {6.53775978, 11.8234358}, //
+
47897 {6.53939009, 11.8171558}, //
+
47898 {6.54077005, 11.8113766}, //
+
47899 {6.54190016, 11.8060989}, //
+
47900 {6.54276991, 11.801322}, //
+
47901 {6.54339981, 11.7970467}, //
+
47902 {6.54376984, 11.793273}, //
+
47903 {6.54390001, 11.79}, //
+
47904 {6.54463005, 11.7885199}, //
+
47905 {6.54533005, 11.7870808}, //
+
47906 {6.54597998, 11.7856827}, //
+
47907 {6.54658985, 11.7843256}, //
+
47908 {6.54715014, 11.7830086}, //
+
47909 {6.5476799, 11.7817326}, //
+
47910 {6.54816008, 11.7804976}, //
+
47911 {6.5486002, 11.7793036}, //
+
47912 {6.54899979, 11.7781496}, //
+
47913 {6.54941988, 11.7769957}, //
+
47914 {6.54992008, 11.7757988}, //
+
47915 {6.55050993, 11.7745609}, //
+
47916 {6.55116987, 11.7732811}, //
+
47917 {6.55191994, 11.7719593}, //
+
47918 {6.55276012, 11.7705936}, //
+
47919 {6.55366993, 11.7691879}, //
+
47920 {6.55466986, 11.7677402}, //
+
47921 {6.55574989, 11.7662497}, //
+
47922 {6.55685997, 11.7646236}, //
+
47923 {6.55792999, 11.7627459}, //
+
47924 {6.55895996, 11.7606173}, //
+
47925 {6.55994987, 11.758235}, //
+
47926 {6.5608902, 11.7556019}, //
+
47927 {6.56178999, 11.752717}, //
+
47928 {6.5626502, 11.7495804}, //
+
47929 {6.56346989, 11.746191}, //
+
47930 {6.56424999, 11.7425499}, //
+
47931 {6.56764984, 11.7425499}, //
+
47932 {6.57496977, 11.7232962}, //
+
47933 {6.58188009, 11.70471}, //
+
47934 {6.58836985, 11.6867943}, //
+
47935 {6.59443998, 11.669548}, //
+
47936 {6.60009003, 11.6529703}, //
+
47937 {6.60531998, 11.6370611}, //
+
47938 {6.61012983, 11.6218224}, //
+
47939 {6.61452007, 11.6072512}, //
+
47940 {6.61850023, 11.5933504}, //
+
47941 {6.61925983, 11.5910521}, //
+
47942 {6.6200099, 11.5886707}, //
+
47943 {6.62076998, 11.5862064}, //
+
47944 {6.62152004, 11.5836563}, //
+
47945 {6.62228012, 11.5810232}, //
+
47946 {6.62303019, 11.5783062}, //
+
47947 {6.62378979, 11.5755043}, //
+
47948 {6.62453985, 11.5726194}, //
+
47949 {6.62529993, 11.5696497}, //
+
47950 {6.62756014, 11.5643091}, //
+
47951 {6.62980986, 11.5588427}, //
+
47952 {6.63207006, 11.5532503}, //
+
47953 {6.63431978, 11.5475311}, //
+
47954 {6.63657999, 11.541687}, //
+
47955 {6.63883018, 11.535717}, //
+
47956 {6.64108992, 11.5296202}, //
+
47957 {6.64334011, 11.5233984}, //
+
47958 {6.64559984, 11.5170498}, //
+
47959 {6.64782, 11.5106907}, //
+
47960 {6.64996004, 11.5044146}, //
+
47961 {6.65201998, 11.4982224}, //
+
47962 {6.65398979, 11.4921122}, //
+
47963 {6.65586996, 11.486084}, //
+
47964 {6.65767002, 11.4801388}, //
+
47965 {6.65937996, 11.4742765}, //
+
47966 {6.66100979, 11.4684973}, //
+
47967 {6.66254997, 11.4628}, //
+
47968 {6.66398001, 11.4573851}, //
+
47969 {6.66523981, 11.4524298}, //
+
47970 {6.66632986, 11.4479332}, //
+
47971 {6.66725016, 11.4438963}, //
+
47972 {6.66801023, 11.4403191}, //
+
47973 {6.66859007, 11.4371996}, //
+
47974 {6.66901016, 11.4345407}, //
+
47975 {6.66927004, 11.4323406}, //
+
47976 {6.66935015, 11.4306002}, //
+
47977 {6.66933012, 11.4298649}, //
+
47978 {6.66927004, 11.4291735}, //
+
47979 {6.66915989, 11.4285221}, //
+
47980 {6.66901016, 11.4279137}, //
+
47981 {6.66882992, 11.4273472}, //
+
47982 {6.66859007, 11.4268217}, //
+
47983 {6.66832018, 11.4263401}, //
+
47984 {6.66801023, 11.4258986}, //
+
47985 {6.66765022, 11.4254999}, //
+
47986 {6.66729021, 11.4251738}, //
+
47987 {6.66697979, 11.4249296}, //
+
47988 {6.6667099, 11.4247665}, //
+
47989 {6.66647005, 11.4246845}, //
+
47990 });
+
47991 polys.push_back({
+
47992 {6.37099981, 12.4681501}, //
+
47993 {6.37112999, 12.4695501}, //
+
47994 {6.37150002, 12.4707298}, //
+
47995 {6.37212992, 12.4717102}, //
+
47996 {6.37300014, 12.4724798}, //
+
47997 {6.37412977, 12.4730396}, //
+
47998 {6.3744998, 12.4731398}, //
+
47999 {6.37400007, 12.4722795}, //
+
48000 {6.37307978, 12.4706097}, //
+
48001 {6.37233019, 12.4691095}, //
+
48002 {6.37174988, 12.4677696}, //
+
48003 {6.37132978, 12.4665899}, //
+
48004 {6.37107992, 12.4655895}, //
+
48005 {6.37100983, 12.4649}, //
+
48006 });
+
48007 polys.push_back({
+
48008 {0.437022001, 12.2253199}, //
+
48009 {0.436728001, 12.2255297}, //
+
48010 {0.436351001, 12.2259102}, //
+
48011 {0.435889006, 12.2264605}, //
+
48012 {0.435342997, 12.22717}, //
+
48013 {0.434713989, 12.2280502}, //
+
48014 {0.433999985, 12.2291002}, //
+
48015 {0.433223009, 12.2302999}, //
+
48016 {0.432404995, 12.2316198}, //
+
48017 {0.431544006, 12.2330599}, //
+
48018 {0.430642009, 12.2346296}, //
+
48019 {0.42969799, 12.23633}, //
+
48020 {0.428710997, 12.2381401}, //
+
48021 {0.427682996, 12.2400904}, //
+
48022 {0.42661199, 12.2421598}, //
+
48023 {0.425500005, 12.2443504}, //
+
48024 {0.424313992, 12.2467403}, //
+
48025 {0.423000991, 12.2493801}, //
+
48026 {0.421561003, 12.2522802}, //
+
48027 {0.419993997, 12.2554197}, //
+
48028 {0.41829899, 12.2588196}, //
+
48029 {0.416478008, 12.2624598}, //
+
48030 {0.414528996, 12.2663603}, //
+
48031 {0.412452996, 12.2705002}, //
+
48032 {0.410250008, 12.2749004}, //
+
48033 {0.405833006, 12.2832003}, //
+
48034 {0.401625007, 12.2915401}, //
+
48035 {0.397628009, 12.2999296}, //
+
48036 {0.393839985, 12.3083601}, //
+
48037 {0.390262008, 12.3168297}, //
+
48038 {0.386893988, 12.3253403}, //
+
48039 {0.383736014, 12.3339005}, //
+
48040 {0.380787998, 12.3424997}, //
+
48041 {0.378049999, 12.3511496}, //
+
48042 {0.375458002, 12.3596697}, //
+
48043 {0.372949004, 12.3678999}, //
+
48044 {0.370521992, 12.3758297}, //
+
48045 {0.36817801, 12.3834696}, //
+
48046 {0.365916997, 12.39081}, //
+
48047 {0.363739014, 12.3978596}, //
+
48048 {0.361642987, 12.4046202}, //
+
48049 {0.359629989, 12.4110804}, //
+
48050 {0.35769999, 12.4172497}, //
+
48051 {0.355926991, 12.4229498}, //
+
48052 {0.354362011, 12.4279804}, //
+
48053 {0.353006005, 12.4323301}, //
+
48054 {0.35185799, 12.4360199}, //
+
48055 {0.349667013, 12.4430599}, //
+
48056 {0.349249989, 12.4443998}, //
+
48057 {0.353729993, 12.43748}, //
+
48058 {0.358126998, 12.4302597}, //
+
48059 {0.362439007, 12.42274}, //
+
48060 {0.366667002, 12.4149399}, //
+
48061 {0.370811999, 12.4068403}, //
+
48062 {0.374871999, 12.3984404}, //
+
48063 {0.378849, 12.38976}, //
+
48064 {0.382741004, 12.3807802}, //
+
48065 {0.386550009, 12.3715}, //
+
48066 {0.390296012, 12.3621702}, //
+
48067 {0.39399901, 12.3530102}, //
+
48068 {0.397661, 12.3440104}, //
+
48069 {0.401280999, 12.3351803}, //
+
48070 {0.404859006, 12.3265104}, //
+
48071 {0.408394009, 12.3180103}, //
+
48072 {0.411888003, 12.30968}, //
+
48073 {0.415340006, 12.3015003}, //
+
48074 {0.418749988, 12.2934999}, //
+
48075 {0.421950996, 12.2859497}, //
+
48076 {0.424775004, 12.2791004}, //
+
48077 {0.427222013, 12.2729702}, //
+
48078 {0.429293007, 12.2675505}, //
+
48079 {0.430988014, 12.2628498}, //
+
48080 {0.432305992, 12.2588596}, //
+
48081 {0.433247, 12.2555704}, //
+
48082 {0.433811992, 12.2530098}, //
+
48083 {0.433999985, 12.2511501}, //
+
48084 {0.433999985, 12.2443504}, //
+
48085 {0.434713989, 12.2435503}, //
+
48086 {0.435342997, 12.2426701}, //
+
48087 {0.435889006, 12.2417097}, //
+
48088 {0.436351001, 12.2406597}, //
+
48089 {0.436728001, 12.2395201}, //
+
48090 {0.437022001, 12.2383099}, //
+
48091 {0.437231988, 12.2370005}, //
+
48092 {0.437357992, 12.2356195}, //
+
48093 {0.437400013, 12.2341499}, //
+
48094 {0.437400013, 12.2257004}, //
+
48095 {0.437357992, 12.2254105}, //
+
48096 {0.437231988, 12.2252798}, //
+
48097 });
+
48098 polys.push_back({
+
48099 {4.2263999, 12.3884497}, //
+
48100 {4.2207799, 12.3888502}, //
+
48101 {4.21518993, 12.3892899}, //
+
48102 {4.20965004, 12.3897696}, //
+
48103 {4.2041502, 12.3902998}, //
+
48104 {4.19868994, 12.3908596}, //
+
48105 {4.19327021, 12.39147}, //
+
48106 {4.18789005, 12.3921204}, //
+
48107 {4.18254995, 12.3928204}, //
+
48108 {4.17724991, 12.3935499}, //
+
48109 {4.17122984, 12.39431}, //
+
48110 {4.16520023, 12.3950596}, //
+
48111 {4.15918016, 12.3958197}, //
+
48112 {4.15315008, 12.3965702}, //
+
48113 {4.14712, 12.3973303}, //
+
48114 {4.14108992, 12.3980799}, //
+
48115 {4.13505983, 12.39884}, //
+
48116 {4.12903023, 12.3995895}, //
+
48117 {4.12300014, 12.4003496}, //
+
48118 {4.10726023, 12.4019804}, //
+
48119 {4.09320021, 12.4038496}, //
+
48120 {4.08081007, 12.4059801}, //
+
48121 {4.07008982, 12.4083595}, //
+
48122 {4.06104994, 12.4110003}, //
+
48123 {4.05368996, 12.4138803}, //
+
48124 {4.04799986, 12.4170198}, //
+
48125 {4.04399014, 12.4204102}, //
+
48126 {4.04164982, 12.4240503}, //
+
48127 {4.04093981, 12.4255199}, //
+
48128 {4.04030991, 12.4268999}, //
+
48129 {4.03976011, 12.4282103}, //
+
48130 {4.03929996, 12.4294205}, //
+
48131 {4.03891993, 12.4305601}, //
+
48132 {4.03863001, 12.4316101}, //
+
48133 {4.0384202, 12.4325705}, //
+
48134 {4.03829002, 12.4334497}, //
+
48135 {4.03824997, 12.4342499}, //
+
48136 {4.03824997, 12.4443998}, //
+
48137 {4.04151011, 12.4435797}, //
+
48138 {4.04527998, 12.4426403}, //
+
48139 {4.04954004, 12.4415703}, //
+
48140 {4.05430984, 12.4403696}, //
+
48141 {4.05958986, 12.4390497}, //
+
48142 {4.06536007, 12.4376001}, //
+
48143 {4.07164001, 12.4360304}, //
+
48144 {4.07842016, 12.43433}, //
+
48145 {4.08570004, 12.4324999}, //
+
48146 {4.09322977, 12.4306803}, //
+
48147 {4.10077, 12.4289904}, //
+
48148 {4.10830021, 12.4274302}, //
+
48149 {4.11582994, 12.4259901}, //
+
48150 {4.12337017, 12.4246702}, //
+
48151 {4.13089991, 12.42348}, //
+
48152 {4.13843012, 12.42241}, //
+
48153 {4.14596987, 12.4214697}, //
+
48154 {4.15350008, 12.4206495}, //
+
48155 {4.15953016, 12.4191904}, //
+
48156 {4.16555977, 12.41782}, //
+
48157 {4.17158985, 12.4165201}, //
+
48158 {4.17761993, 12.4153099}, //
+
48159 {4.18365002, 12.4141798}, //
+
48160 {4.1896801, 12.4131403}, //
+
48161 {4.19570017, 12.4121799}, //
+
48162 {4.20172977, 12.4112997}, //
+
48163 {4.20774984, 12.4104996}, //
+
48164 {4.21499014, 12.40837}, //
+
48165 {4.22165012, 12.4064903}, //
+
48166 {4.22771978, 12.4048595}, //
+
48167 {4.23320007, 12.4034796}, //
+
48168 {4.23810005, 12.4023504}, //
+
48169 {4.2424202, 12.4014797}, //
+
48170 {4.24615002, 12.4008503}, //
+
48171 {4.24928999, 12.4004803}, //
+
48172 {4.25185013, 12.4003496}, //
+
48173 {4.25260019, 12.4003897}, //
+
48174 {4.25335979, 12.4005203}, //
+
48175 {4.25410986, 12.4007196}, //
+
48176 {4.25485992, 12.4010096}, //
+
48177 {4.25560999, 12.4013796}, //
+
48178 {4.25636005, 12.4018402}, //
+
48179 {4.25711012, 12.40238}, //
+
48180 {4.25785017, 12.4029999}, //
+
48181 {4.25860023, 12.4036999}, //
+
48182 {4.25935984, 12.4044104}, //
+
48183 {4.2601099, 12.4050398}, //
+
48184 {4.26086998, 12.4055901}, //
+
48185 {4.26162004, 12.4060497}, //
+
48186 {4.26238012, 12.4064302}, //
+
48187 {4.26313019, 12.4067202}, //
+
48188 {4.26388979, 12.40693}, //
+
48189 {4.26463985, 12.4070597}, //
+
48190 {4.26539993, 12.4070997}, //
+
48191 {4.26612997, 12.4078102}, //
+
48192 {4.26682997, 12.4084396}, //
+
48193 {4.2674799, 12.4089899}, //
+
48194 {4.26808977, 12.4094496}, //
+
48195 {4.26865005, 12.4098301}, //
+
48196 {4.26917982, 12.41012}, //
+
48197 {4.26966, 12.4103298}, //
+
48198 {4.27010012, 12.4104605}, //
+
48199 {4.27050018, 12.4104996}, //
+
48200 {4.27084017, 12.4104795}, //
+
48201 {4.27109003, 12.4104204}, //
+
48202 {4.27125978, 12.4103098}, //
+
48203 {4.27133989, 12.4101601}, //
+
48204 {4.27133989, 12.4099798}, //
+
48205 {4.27125978, 12.4097404}, //
+
48206 {4.27109003, 12.4094696}, //
+
48207 {4.27084017, 12.4091597}, //
+
48208 {4.27050018, 12.4088001}, //
+
48209 {4.27006006, 12.4083204}, //
+
48210 {4.26948977, 12.40763}, //
+
48211 {4.26879978, 12.4067297}, //
+
48212 {4.2679801, 12.4056196}, //
+
48213 {4.26703978, 12.4042997}, //
+
48214 {4.26597023, 12.4027796}, //
+
48215 {4.26477003, 12.4010401}, //
+
48216 {4.26345015, 12.3991003}, //
+
48217 {4.26200008, 12.3969498}, //
+
48218 {4.25956011, 12.3948298}, //
+
48219 {4.25673008, 12.3929996}, //
+
48220 {4.25353003, 12.39147}, //
+
48221 {4.24995995, 12.3902302}, //
+
48222 {4.24599981, 12.3892899}, //
+
48223 {4.24167013, 12.3886404}, //
+
48224 {4.23695993, 12.3882799}, //
+
48225 {4.23187017, 12.3882198}, //
+
48226 });
+
48227 polys.push_back({
+
48228 {3.58389997, 12.2664003}, //
+
48229 {3.58387995, 12.2667799}, //
+
48230 {3.5838201, 12.2671604}, //
+
48231 {3.58370996, 12.2675304}, //
+
48232 {3.58355999, 12.26791}, //
+
48233 {3.58337998, 12.2682896}, //
+
48234 {3.5831399, 12.2686701}, //
+
48235 {3.58287001, 12.2690401}, //
+
48236 {3.58256006, 12.2694197}, //
+
48237 {3.58220005, 12.2698002}, //
+
48238 {3.58184004, 12.2701998}, //
+
48239 {3.58153009, 12.2706404}, //
+
48240 {3.58125997, 12.2711201}, //
+
48241 {3.58102012, 12.2716503}, //
+
48242 {3.58084011, 12.2722101}, //
+
48243 {3.58068991, 12.2728205}, //
+
48244 {3.58058, 12.2734699}, //
+
48245 {3.58051991, 12.2741699}, //
+
48246 {3.58049989, 12.2749004}, //
+
48247 {3.58049989, 12.2782497}, //
+
48248 {3.5804801, 12.2797203}, //
+
48249 {3.58042002, 12.2811003}, //
+
48250 {3.58031011, 12.2824097}, //
+
48251 {3.5801599, 12.2836199}, //
+
48252 {3.5799799, 12.2847605}, //
+
48253 {3.57974005, 12.2858105}, //
+
48254 {3.57946992, 12.2867699}, //
+
48255 {3.57915998, 12.2876501}, //
+
48256 {3.57879996, 12.2884502}, //
+
48257 {3.57836008, 12.2891197}, //
+
48258 {3.57780004, 12.2896299}, //
+
48259 {3.57711005, 12.2899599}, //
+
48260 {3.57628989, 12.2901297}, //
+
48261 {3.57535005, 12.2901297}, //
+
48262 {3.57429004, 12.2899599}, //
+
48263 {3.57310009, 12.2896299}, //
+
48264 {3.57178998, 12.2891197}, //
+
48265 {3.57034993, 12.2884502}, //
+
48266 {3.56886005, 12.2877398}, //
+
48267 {3.56740999, 12.2871103}, //
+
48268 {3.56601, 12.2865601}, //
+
48269 {3.56464005, 12.2861004}, //
+
48270 {3.56331992, 12.2857199}, //
+
48271 {3.56204009, 12.28543}, //
+
48272 {3.56080008, 12.2852201}, //
+
48273 {3.55960011, 12.2850904}, //
+
48274 {3.55844998, 12.2850504}, //
+
48275 {3.55736995, 12.2850704}, //
+
48276 {3.55637002, 12.2851295}, //
+
48277 {3.55545998, 12.2852402}, //
+
48278 {3.55462003, 12.2853899}, //
+
48279 {3.55386996, 12.2855701}, //
+
48280 {3.55321002, 12.2858105}, //
+
48281 {3.55261993, 12.2860804}, //
+
48282 {3.55211997, 12.2863903}, //
+
48283 {3.55170012, 12.2867498}, //
+
48284 {3.55142999, 12.2871504}, //
+
48285 {3.55135989, 12.28759}, //
+
48286 {3.5515101, 12.2880697}, //
+
48287 {3.55186009, 12.2886}, //
+
48288 {3.5524199, 12.2891598}, //
+
48289 {3.55318999, 12.2897701}, //
+
48290 {3.55416989, 12.2904196}, //
+
48291 {3.55535007, 12.2911196}, //
+
48292 {3.55675006, 12.2918501}, //
+
48293 {3.55973005, 12.2940197}, //
+
48294 {3.56261992, 12.29603}, //
+
48295 {3.56542993, 12.2978697}, //
+
48296 {3.56816006, 12.2995396}, //
+
48297 {3.57080007, 12.3010397}, //
+
48298 {3.57334995, 12.3023796}, //
+
48299 {3.57581997, 12.3035603}, //
+
48300 {3.5782001, 12.3045597}, //
+
48301 {3.58049989, 12.3053999}, //
+
48302 {3.58389997, 12.3053999}, //
+
48303 {3.58460999, 12.3054399}, //
+
48304 {3.58523989, 12.3055696}, //
+
48305 {3.58578992, 12.3057804}, //
+
48306 {3.58625007, 12.3060703}, //
+
48307 {3.58663011, 12.3064499}, //
+
48308 {3.58692002, 12.3069096}, //
+
48309 {3.58713007, 12.3074598}, //
+
48310 {3.58726001, 12.3080902}, //
+
48311 {3.58730006, 12.3087997}, //
+
48312 {3.59065008, 12.3087997}, //
+
48313 {3.59065008, 12.3053999}, //
+
48314 {3.59067011, 12.3046904}, //
+
48315 {3.59072995, 12.30406}, //
+
48316 {3.5908401, 12.3035097}, //
+
48317 {3.59099007, 12.30305}, //
+
48318 {3.59117007, 12.3026695}, //
+
48319 {3.59140992, 12.3023796}, //
+
48320 {3.59168005, 12.3021698}, //
+
48321 {3.59198999, 12.3020401}, //
+
48322 {3.59235001, 12.302}, //
+
48323 {3.59275007, 12.3020401}, //
+
48324 {3.59318995, 12.3021698}, //
+
48325 {3.59366989, 12.3023796}, //
+
48326 {3.5941999, 12.3026695}, //
+
48327 {3.59475994, 12.30305}, //
+
48328 {3.59537005, 12.3035097}, //
+
48329 {3.59601998, 12.30406}, //
+
48330 {3.59671998, 12.3046904}, //
+
48331 {3.59745002, 12.3053999}, //
+
48332 {3.5982101, 12.3062401}, //
+
48333 {3.59895992, 12.3072395}, //
+
48334 {3.59972, 12.3084202}, //
+
48335 {3.60047007, 12.3097601}, //
+
48336 {3.60122991, 12.3112602}, //
+
48337 {3.60197997, 12.3129301}, //
+
48338 {3.60274005, 12.3147697}, //
+
48339 {3.60349011, 12.3167801}, //
+
48340 {3.60424995, 12.3189497}, //
+
48341 {3.60497999, 12.3205004}, //
+
48342 {3.60566998, 12.3221397}, //
+
48343 {3.6063199, 12.3238602}, //
+
48344 {3.60693002, 12.3256598}, //
+
48345 {3.60749006, 12.3275404}, //
+
48346 {3.60801005, 12.3295097}, //
+
48347 {3.60847998, 12.3315496}, //
+
48348 {3.60891008, 12.3336897}, //
+
48349 {3.6092999, 12.3359003}, //
+
48350 {3.60962009, 12.3382502}, //
+
48351 {3.60981011, 12.3407698}, //
+
48352 {3.60986996, 12.3434496}, //
+
48353 {3.60981011, 12.3463001}, //
+
48354 {3.60963011, 12.3493204}, //
+
48355 {3.60931993, 12.3525}, //
+
48356 {3.60889006, 12.3558502}, //
+
48357 {3.60833001, 12.3593702}, //
+
48358 {3.60765004, 12.3630505}, //
+
48359 {3.60765004, 12.4139004}, //
+
48360 {3.6076901, 12.4130402}, //
+
48361 {3.60782003, 12.4119701}, //
+
48362 {3.60802007, 12.4106903}, //
+
48363 {3.60830998, 12.4091997}, //
+
48364 {3.60868001, 12.4075003}, //
+
48365 {3.60913992, 12.4055901}, //
+
48366 {3.60967994, 12.40347}, //
+
48367 {3.61030006, 12.4011402}, //
+
48368 {3.61100006, 12.3985996}, //
+
48369 {3.6117599, 12.3960304}, //
+
48370 {3.61250997, 12.39359}, //
+
48371 {3.61327004, 12.3912697}, //
+
48372 {3.61402011, 12.3890696}, //
+
48373 {3.61477995, 12.3870096}, //
+
48374 {3.61553001, 12.3850698}, //
+
48375 {3.61629009, 12.3832502}, //
+
48376 {3.61703992, 12.3815603}, //
+
48377 {3.6178, 12.3800001}, //
+
48378 {3.61784005, 12.37782}, //
+
48379 {3.61796999, 12.3758001}, //
+
48380 {3.61818004, 12.3739595}, //
+
48381 {3.61846995, 12.3722801}, //
+
48382 {3.61884999, 12.3707705}, //
+
48383 {3.6193099, 12.3694201}, //
+
48384 {3.61985993, 12.3682499}, //
+
48385 {3.62049007, 12.36724}, //
+
48386 {3.62120008, 12.3663998}, //
+
48387 {3.6212399, 12.3656101}, //
+
48388 {3.62137008, 12.3647404}, //
+
48389 {3.62157989, 12.36378}, //
+
48390 {3.62187004, 12.3627396}, //
+
48391 {3.62225008, 12.3616104}, //
+
48392 {3.62270999, 12.3604002}, //
+
48393 {3.62326002, 12.3591003}, //
+
48394 {3.62388992, 12.3577204}, //
+
48395 {3.62459993, 12.3562498}, //
+
48396 {3.62463999, 12.3554697}, //
+
48397 {3.62476993, 12.3546495}, //
+
48398 {3.62496996, 12.3537903}, //
+
48399 {3.62526011, 12.35289}, //
+
48400 {3.6256299, 12.3519497}, //
+
48401 {3.62609005, 12.3509598}, //
+
48402 {3.62663007, 12.3499298}, //
+
48403 {3.62724996, 12.3488598}, //
+
48404 {3.62794995, 12.3477497}, //
+
48405 {3.62858009, 12.3466501}, //
+
48406 {3.62895989, 12.3455896}, //
+
48407 {3.62909007, 12.3445702}, //
+
48408 {3.62896991, 12.3435898}, //
+
48409 {3.62859988, 12.3426504}, //
+
48410 {3.62796998, 12.3417501}, //
+
48411 {3.62709999, 12.3408899}, //
+
48412 {3.62596989, 12.3400803}, //
+
48413 {3.62459993, 12.3393002}, //
+
48414 {3.62456012, 12.3385}, //
+
48415 {3.62442994, 12.3376198}, //
+
48416 {3.62421989, 12.3366604}, //
+
48417 {3.62392998, 12.3356199}, //
+
48418 {3.62354994, 12.3344898}, //
+
48419 {3.62309003, 12.3332796}, //
+
48420 {3.62254, 12.3319798}, //
+
48421 {3.6219101, 12.3306103}, //
+
48422 {3.62120008, 12.3291502}, //
+
48423 {3.61970997, 12.3275995}, //
+
48424 {3.61825991, 12.3259602}, //
+
48425 {3.61685991, 12.3242397}, //
+
48426 {3.61548996, 12.3224297}, //
+
48427 {3.61417007, 12.32055}, //
+
48428 {3.61289001, 12.3185701}, //
+
48429 {3.61164999, 12.3165197}, //
+
48430 {3.61045003, 12.3143702}, //
+
48431 {3.6092999, 12.31215}, //
+
48432 {3.60820007, 12.3099804}, //
+
48433 {3.60714006, 12.30797}, //
+
48434 {3.60612011, 12.3061304}, //
+
48435 {3.60513997, 12.3044596}, //
+
48436 {3.60419989, 12.3029604}, //
+
48437 {3.60330009, 12.3016195}, //
+
48438 {3.60244012, 12.3004398}, //
+
48439 {3.60162997, 12.2994404}, //
+
48440 {3.60085011, 12.2986002}, //
+
48441 {3.60012007, 12.2978001}, //
+
48442 {3.59942007, 12.2969198}, //
+
48443 {3.5987699, 12.2959604}, //
+
48444 {3.59816003, 12.2949104}, //
+
48445 {3.59759998, 12.2937698}, //
+
48446 {3.59706998, 12.2925596}, //
+
48447 {3.59659004, 12.2912502}, //
+
48448 {3.59614992, 12.2898703}, //
+
48449 {3.59575009, 12.2883997}, //
+
48450 {3.59535003, 12.2869196}, //
+
48451 {3.59490991, 12.2854795}, //
+
48452 {3.59442997, 12.2840796}, //
+
48453 {3.59389997, 12.2827301}, //
+
48454 {3.59333992, 12.2814102}, //
+
48455 {3.59273005, 12.2801304}, //
+
48456 {3.59208012, 12.2789001}, //
+
48457 {3.59137988, 12.2777004}, //
+
48458 {3.59065008, 12.2765503}, //
+
48459 {3.58993006, 12.2754498}, //
+
48460 {3.58924007, 12.2743902}, //
+
48461 {3.58859992, 12.2733698}, //
+
48462 {3.58800006, 12.2723904}, //
+
48463 {3.58744001, 12.27145}, //
+
48464 {3.58692002, 12.2705498}, //
+
48465 {3.58644009, 12.2696896}, //
+
48466 {3.58599997, 12.2688799}, //
+
48467 {3.5855999, 12.2680998}, //
+
48468 {3.58492994, 12.2667599}, //
+
48469 {3.58466005, 12.2662096}, //
+
48470 {3.58441997, 12.2657499}, //
+
48471 {3.58408999, 12.2650805}, //
+
48472 {3.58398008, 12.2648697}, //
+
48473 {3.58389997, 12.2646999}, //
+
48474 });
+
48475 polys.push_back({
+
48476 {3.47880006, 12.25455}, //
+
48477 {3.47635007, 12.2553396}, //
+
48478 {3.47351003, 12.2562103}, //
+
48479 {3.47030997, 12.2571697}, //
+
48480 {3.4667201, 12.2582102}, //
+
48481 {3.46275997, 12.2593403}, //
+
48482 {3.45842004, 12.2605495}, //
+
48483 {3.45371008, 12.2618504}, //
+
48484 {3.44862008, 12.2632303}, //
+
48485 {3.44315004, 12.2646999}, //
+
48486 {3.43755007, 12.2662296}, //
+
48487 {3.43202996, 12.2678003}, //
+
48488 {3.42658997, 12.2694197}, //
+
48489 {3.42123008, 12.2710695}, //
+
48490 {3.41596007, 12.2727604}, //
+
48491 {3.41076994, 12.2744999}, //
+
48492 {3.40566993, 12.2762804}, //
+
48493 {3.40064001, 12.2780895}, //
+
48494 {3.39569998, 12.2799501}, //
+
48495 {3.39094996, 12.2818203}, //
+
48496 {3.38649011, 12.2836399}, //
+
48497 {3.38231993, 12.2854204}, //
+
48498 {3.37844992, 12.2871599}, //
+
48499 {3.37487006, 12.2888498}, //
+
48500 {3.3715899, 12.2905102}, //
+
48501 {3.36859989, 12.2921104}, //
+
48502 {3.36590004, 12.2936802}, //
+
48503 {3.36350012, 12.2952003}, //
+
48504 {3.36128998, 12.2975502}, //
+
48505 {3.35914993, 12.3000698}, //
+
48506 {3.35711002, 12.3027496}, //
+
48507 {3.35513997, 12.3056002}, //
+
48508 {3.35326004, 12.3086205}, //
+
48509 {3.35145998, 12.3118}, //
+
48510 {3.34974003, 12.3151503}, //
+
48511 {3.34809995, 12.3186703}, //
+
48512 {3.34654999, 12.3223495}, //
+
48513 {3.34578991, 12.3245602}, //
+
48514 {3.34504008, 12.3267002}, //
+
48515 {3.34428, 12.3287401}, //
+
48516 {3.34352994, 12.3307104}, //
+
48517 {3.3427701, 12.3325901}, //
+
48518 {3.34202003, 12.3343897}, //
+
48519 {3.34125996, 12.3361101}, //
+
48520 {3.34050989, 12.3377504}, //
+
48521 {3.33975005, 12.3393002}, //
+
48522 {3.33899999, 12.3406401}, //
+
48523 {3.33825994, 12.34165}, //
+
48524 {3.33751011, 12.3423204}, //
+
48525 {3.33676004, 12.34266}, //
+
48526 {3.33600998, 12.34266}, //
+
48527 {3.33525991, 12.3423204}, //
+
48528 {3.33451009, 12.34165}, //
+
48529 {3.33375001, 12.3406401}, //
+
48530 {3.33299994, 12.3393002}, //
+
48531 {3.33151007, 12.3385201}, //
+
48532 {3.33006001, 12.3376999}, //
+
48533 {3.32866001, 12.3368397}, //
+
48534 {3.32729006, 12.3359404}, //
+
48535 {3.32596993, 12.335}, //
+
48536 {3.3246901, 12.3340101}, //
+
48537 {3.32345009, 12.3329802}, //
+
48538 {3.32224989, 12.3319101}, //
+
48539 {3.3211, 12.3308001}, //
+
48540 {3.31997991, 12.3297195}, //
+
48541 {3.31885004, 12.3287201}, //
+
48542 {3.31772995, 12.3278103}, //
+
48543 {3.31660008, 12.3269701}, //
+
48544 {3.31546998, 12.3262196}, //
+
48545 {3.31434011, 12.3255596}, //
+
48546 {3.31321001, 12.3249702}, //
+
48547 {3.31207991, 12.3244696}, //
+
48548 {3.31095004, 12.3240499}, //
+
48549 {3.30985999, 12.3236904}, //
+
48550 {3.30885005, 12.3233805}, //
+
48551 {3.30792999, 12.3231096}, //
+
48552 {3.30709004, 12.3228703}, //
+
48553 {3.30632997, 12.32269}, //
+
48554 {3.30566001, 12.3225403}, //
+
48555 {3.30506992, 12.3224297}, //
+
48556 {3.30456996, 12.3223696}, //
+
48557 {3.3041501, 12.3223495}, //
+
48558 {3.30383992, 12.3223896}, //
+
48559 {3.3036499, 12.3225203}, //
+
48560 {3.30358005, 12.3227301}, //
+
48561 {3.3036499, 12.32302}, //
+
48562 {3.30383992, 12.3233995}, //
+
48563 {3.3041501, 12.3238602}, //
+
48564 {3.30458999, 12.3244104}, //
+
48565 {3.30516005, 12.3250399}, //
+
48566 {3.30585003, 12.3257504}, //
+
48567 {3.30661011, 12.3264999}, //
+
48568 {3.30735993, 12.32726}, //
+
48569 {3.30812001, 12.3280096}, //
+
48570 {3.30887008, 12.3287601}, //
+
48571 {3.30962992, 12.3295097}, //
+
48572 {3.31037998, 12.3302603}, //
+
48573 {3.31114006, 12.3310099}, //
+
48574 {3.31188989, 12.3317499}, //
+
48575 {3.31264997, 12.3325005}, //
+
48576 {3.31480002, 12.3332796}, //
+
48577 {3.31674004, 12.3340998}, //
+
48578 {3.31848001, 12.33496}, //
+
48579 {3.31999993, 12.3358603}, //
+
48580 {3.32132006, 12.3367996}, //
+
48581 {3.3224299, 12.3377895}, //
+
48582 {3.32332993, 12.3388205}, //
+
48583 {3.32401991, 12.3398895}, //
+
48584 {3.32450008, 12.3409996}, //
+
48585 {3.32481003, 12.3422003}, //
+
48586 {3.32500005, 12.3435202}, //
+
48587 {3.3250699, 12.3449602}, //
+
48588 {3.32500005, 12.34653}, //
+
48589 {3.32481003, 12.3482304}, //
+
48590 {3.32450008, 12.3500404}, //
+
48591 {3.32405996, 12.3519897}, //
+
48592 {3.3234899, 12.3540602}, //
+
48593 {3.32279992, 12.3562498}, //
+
48594 {3.3213799, 12.3570499}, //
+
48595 {3.32013011, 12.3579302}, //
+
48596 {3.31905007, 12.3588896}, //
+
48597 {3.31813002, 12.35993}, //
+
48598 {3.31737995, 12.3610601}, //
+
48599 {3.31680012, 12.3622704}, //
+
48600 {3.31638002, 12.3635702}, //
+
48601 {3.31612992, 12.3649397}, //
+
48602 {3.31605005, 12.3663998}, //
+
48603 {3.31605005, 12.3901501}, //
+
48604 {3.31754994, 12.3878698}, //
+
48605 {3.31905007, 12.3855495}, //
+
48606 {3.32055998, 12.3831902}, //
+
48607 {3.32206011, 12.3807802}, //
+
48608 {3.32357001, 12.3783302}, //
+
48609 {3.3250699, 12.3758402}, //
+
48610 {3.32658005, 12.3732996}, //
+
48611 {3.32808995, 12.3707199}, //
+
48612 {3.3296001, 12.3681002}, //
+
48613 {3.33123994, 12.3653603}, //
+
48614 {3.33312011, 12.3624096}, //
+
48615 {3.33525991, 12.3592596}, //
+
48616 {3.33765006, 12.3558903}, //
+
48617 {3.34029007, 12.3523102}, //
+
48618 {3.34317994, 12.3485203}, //
+
48619 {3.34631991, 12.3445196}, //
+
48620 {3.34970999, 12.3403196}, //
+
48621 {3.35334992, 12.3359003}, //
+
48622 {3.35552001, 12.3336897}, //
+
48623 {3.35753012, 12.3315496}, //
+
48624 {3.35936999, 12.3295097}, //
+
48625 {3.36104012, 12.3275404}, //
+
48626 {3.36254001, 12.3256598}, //
+
48627 {3.36387992, 12.3238602}, //
+
48628 {3.36506009, 12.3221397}, //
+
48629 {3.36606002, 12.3205004}, //
+
48630 {3.36689997, 12.3189497}, //
+
48631 {3.37329006, 12.3125601}, //
+
48632 {3.38066006, 12.3051901}, //
+
48633 {3.3838501, 12.302}, //
+
48634 {3.38544011, 12.3004503}, //
+
48635 {3.38720989, 12.29881}, //
+
48636 {3.38913012, 12.2970896}, //
+
48637 {3.39123011, 12.29529}, //
+
48638 {3.39349008, 12.2934103}, //
+
48639 {3.39592004, 12.29144}, //
+
48640 {3.39850998, 12.2894001}, //
+
48641 {3.40126991, 12.2872601}, //
+
48642 {3.40420008, 12.2850504}, //
+
48643 {3.40803003, 12.2828398}, //
+
48644 {3.41197991, 12.2806997}, //
+
48645 {3.41605997, 12.2786598}, //
+
48646 {3.42025995, 12.2766895}, //
+
48647 {3.42459011, 12.2748098}, //
+
48648 {3.42903996, 12.2730103}, //
+
48649 {3.43361998, 12.2712898}, //
+
48650 {3.43831992, 12.2696505}, //
+
48651 {3.44315004, 12.2680998}, //
+
48652 {3.44790006, 12.2666302}, //
+
48653 {3.45235991, 12.2652502}, //
+
48654 {3.45653009, 12.2639399}, //
+
48655 {3.46041012, 12.2627296}, //
+
48656 {3.46398997, 12.26159}, //
+
48657 {3.46727991, 12.26054}, //
+
48658 {3.47027993, 12.2595797}, //
+
48659 {3.47299004, 12.2587004}, //
+
48660 {3.47539997, 12.2579002}, //
+
48661 {3.48215008, 12.25455}, //
+
48662 });
+
48663 polys.push_back({
+
48664 {1.09031999, 12.1264601}, //
+
48665 {1.08500004, 12.1273499}, //
+
48666 {1.07972002, 12.1286297}, //
+
48667 {1.07445002, 12.1302004}, //
+
48668 {1.06917, 12.1320696}, //
+
48669 {1.06389999, 12.1342201}, //
+
48670 {1.05862999, 12.1366701}, //
+
48671 {1.05335999, 12.1394196}, //
+
48672 {1.04808998, 12.1424503}, //
+
48673 {1.04281998, 12.1457796}, //
+
48674 {1.03754997, 12.1493998}, //
+
48675 {1.03524005, 12.1508703}, //
+
48676 {1.03285003, 12.1522503}, //
+
48677 {1.03038001, 12.1535597}, //
+
48678 {1.02781999, 12.1547699}, //
+
48679 {1.02517998, 12.1559095}, //
+
48680 {1.02245998, 12.1569595}, //
+
48681 {1.01966, 12.1579199}, //
+
48682 {1.01677001, 12.1588001}, //
+
48683 {1.01380002, 12.1596003}, //
+
48684 {1.00858998, 12.1618099}, //
+
48685 {1.00349998, 12.16395}, //
+
48686 {0.99853301, 12.1659899}, //
+
48687 {0.993695974, 12.1679602}, //
+
48688 {0.988985002, 12.1698399}, //
+
48689 {0.984399974, 12.1716404}, //
+
48690 {0.97994101, 12.1733599}, //
+
48691 {0.975606978, 12.1750002}, //
+
48692 {0.971400023, 12.1765499}, //
+
48693 {0.96727699, 12.1780195}, //
+
48694 {0.963195026, 12.1794004}, //
+
48695 {0.959155977, 12.1807003}, //
+
48696 {0.955157995, 12.1819096}, //
+
48697 {0.951201975, 12.1830397}, //
+
48698 {0.94728899, 12.1840801}, //
+
48699 {0.943417013, 12.1850405}, //
+
48700 {0.93958801, 12.1859102}, //
+
48701 {0.935800016, 12.1866999}, //
+
48702 {0.932399988, 12.1866999}, //
+
48703 {0.929724991, 12.1875401}, //
+
48704 {0.926212013, 12.1885405}, //
+
48705 {0.921860993, 12.1897202}, //
+
48706 {0.916671991, 12.1910601}, //
+
48707 {0.910643995, 12.1925602}, //
+
48708 {0.903778017, 12.1942301}, //
+
48709 {0.896072984, 12.1960697}, //
+
48710 {0.887530982, 12.1980801}, //
+
48711 {0.878149986, 12.2002497}, //
+
48712 {0.868277013, 12.2025003}, //
+
48713 {0.858236015, 12.2047005}, //
+
48714 {0.848028004, 12.2068596}, //
+
48715 {0.837651014, 12.2089701}, //
+
48716 {0.827107012, 12.2110395}, //
+
48717 {0.816393971, 12.2130699}, //
+
48718 {0.805513978, 12.2150602}, //
+
48719 {0.794466019, 12.217}, //
+
48720 {0.783249974, 12.2188997}, //
+
48721 {0.772201002, 12.2206202}, //
+
48722 {0.761651993, 12.2220097}, //
+
48723 {0.751605988, 12.2230597}, //
+
48724 {0.742060006, 12.2237701}, //
+
48725 {0.733015001, 12.2241497}, //
+
48726 {0.724471986, 12.2241898}, //
+
48727 {0.716430008, 12.2238998}, //
+
48728 {0.708890021, 12.2232704}, //
+
48729 {0.701849997, 12.2222996}, //
+
48730 {0.695616007, 12.2208996}, //
+
48731 {0.69046998, 12.2189598}, //
+
48732 {0.686411023, 12.2164803}, //
+
48733 {0.685676992, 12.2157297}, //
+
48734 {0.683782995, 12.2164898}, //
+
48735 {0.680772007, 12.2178001}, //
+
48736 {0.677761018, 12.2191801}, //
+
48737 {0.67474997, 12.2206497}, //
+
48738 {0.620500028, 12.2409496}, //
+
48739 {0.664550006, 12.2952003}, //
+
48740 {0.66624397, 12.2953901}, //
+
48741 {0.669256985, 12.2957201}, //
+
48742 {0.671328008, 12.2959604}, //
+
48743 {0.673775017, 12.2962303}, //
+
48744 {0.676599026, 12.2965403}, //
+
48745 {0.679799974, 12.2968998}, //
+
48746 {0.683282971, 12.2972803}, //
+
48747 {0.686931014, 12.2976599}, //
+
48748 {0.690743983, 12.2980299}, //
+
48749 {0.69472301, 12.2984104}, //
+
48750 {0.698867977, 12.29879}, //
+
48751 {0.703177989, 12.2991695}, //
+
48752 {0.707652986, 12.2995396}, //
+
48753 {0.712293983, 12.2999201}, //
+
48754 {0.717100024, 12.3002996}, //
+
48755 {0.721937001, 12.3006802}, //
+
48756 {0.726647973, 12.3010597}, //
+
48757 {0.731233001, 12.3014297}, //
+
48758 {0.735692978, 12.3018103}, //
+
48759 {0.740025997, 12.3021898}, //
+
48760 {0.744233012, 12.3025703}, //
+
48761 {0.748314977, 12.3029404}, //
+
48762 {0.752269983, 12.3033199}, //
+
48763 {0.756099999, 12.3037004}, //
+
48764 {0.759698987, 12.30406}, //
+
48765 {0.76296401, 12.3043699}, //
+
48766 {0.765893996, 12.3046398}, //
+
48767 {0.768490016, 12.3048801}, //
+
48768 {0.770750999, 12.3050604}, //
+
48769 {0.772678018, 12.3052101}, //
+
48770 {0.774269998, 12.3053198}, //
+
48771 {0.775527, 12.3053799}, //
+
48772 {0.776449978, 12.3053999}, //
+
48773 {0.77747798, 12.3043699}, //
+
48774 {0.77779299, 12.30406}, //
+
48775 {0.778150022, 12.3037004}, //
+
48776 {0.778506994, 12.3032999}, //
+
48777 {0.778822005, 12.3028603}, //
+
48778 {0.779093981, 12.3023796}, //
+
48779 {0.779325008, 12.3018503}, //
+
48780 {0.779514015, 12.3012896}, //
+
48781 {0.779661, 12.3006802}, //
+
48782 {0.779766023, 12.3000298}, //
+
48783 {0.779829025, 12.2993298}, //
+
48784 {0.779850006, 12.2986002}, //
+
48785 {0.781319022, 12.2978401}, //
+
48786 {0.782702029, 12.2970896}, //
+
48787 {0.783999979, 12.2963305}, //
+
48788 {0.785212994, 12.2955799}, //
+
48789 {0.786341012, 12.2948198}, //
+
48790 {0.78738302, 12.2940702}, //
+
48791 {0.788340986, 12.2933102}, //
+
48792 {0.789213002, 12.2925596}, //
+
48793 {0.790000021, 12.2917995}, //
+
48794 {0.790839016, 12.2910299}, //
+
48795 {0.79184401, 12.2902203}, //
+
48796 {0.79301703, 12.2893696}, //
+
48797 {0.794355989, 12.2884798}, //
+
48798 {0.795861006, 12.2875404}, //
+
48799 {0.797532976, 12.2865601}, //
+
48800 {0.799372017, 12.2855301}, //
+
48801 {0.801378012, 12.2844601}, //
+
48802 {0.803550005, 12.28335}, //
+
48803 {0.805941999, 12.2822399}, //
+
48804 {0.808584988, 12.2811699}, //
+
48805 {0.811478019, 12.2801399}, //
+
48806 {0.814621985, 12.2791595}, //
+
48807 {0.818015993, 12.2782202}, //
+
48808 {0.821660995, 12.2773304}, //
+
48809 {0.825556993, 12.2764797}, //
+
48810 {0.829702973, 12.2756701}, //
+
48811 {0.834100008, 12.2749004}, //
+
48812 {0.852430999, 12.2724705}, //
+
48813 {0.869759023, 12.2697001}, //
+
48814 {0.886083007, 12.2665901}, //
+
48815 {0.901404023, 12.2631598}, //
+
48816 {0.915719986, 12.2593803}, //
+
48817 {0.929032981, 12.2552795}, //
+
48818 {0.941343009, 12.2508402}, //
+
48819 {0.952647984, 12.2460604}, //
+
48820 {0.962949991, 12.2409496}, //
+
48821 {0.966148973, 12.2393398}, //
+
48822 {0.969725013, 12.2375298}, //
+
48823 {0.973677993, 12.2355003}, //
+
48824 {0.978007019, 12.2332602}, //
+
48825 {0.982711971, 12.2308102}, //
+
48826 {0.987793982, 12.2281504}, //
+
48827 {0.993252993, 12.2252798}, //
+
48828 {0.999087989, 12.2221899}, //
+
48829 {1.00530005, 12.2188997}, //
+
48830 {1.01174998, 12.2155704}, //
+
48831 {1.01829004, 12.2123699}, //
+
48832 {1.02490997, 12.2093}, //
+
48833 {1.03161001, 12.2063503}, //
+
48834 {1.03839004, 12.2035303}, //
+
48835 {1.04525995, 12.2008305}, //
+
48836 {1.05219996, 12.1982603}, //
+
48837 {1.05923998, 12.1958199}, //
+
48838 {1.06634998, 12.1934996}, //
+
48839 {1.07332003, 12.19137}, //
+
48840 {1.07991004, 12.1894903}, //
+
48841 {1.08612001, 12.1878595}, //
+
48842 {1.09195995, 12.1864796}, //
+
48843 {1.09741998, 12.1853504}, //
+
48844 {1.10250998, 12.1844797}, //
+
48845 {1.10721004, 12.1838503}, //
+
48846 {1.11154997, 12.1834803}, //
+
48847 {1.11549997, 12.1833496}, //
+
48848 {1.11919999, 12.1833696}, //
+
48849 {1.12277997, 12.1834297}, //
+
48850 {1.12623, 12.1835299}, //
+
48851 {1.12955999, 12.1836796}, //
+
48852 {1.13276005, 12.1838598}, //
+
48853 {1.13583004, 12.1840801}, //
+
48854 {1.13878, 12.18435}, //
+
48855 {1.14160001, 12.1846504}, //
+
48856 {1.14429998, 12.1850004}, //
+
48857 {1.14688003, 12.1854}, //
+
48858 {1.14933002, 12.1858397}, //
+
48859 {1.15165997, 12.1863203}, //
+
48860 {1.15385997, 12.1868496}, //
+
48861 {1.15593004, 12.1874104}, //
+
48862 {1.15787995, 12.1880198}, //
+
48863 {1.15970004, 12.1886702}, //
+
48864 {1.16138995, 12.1893702}, //
+
48865 {1.16295004, 12.1900997}, //
+
48866 {1.16437995, 12.1908102}, //
+
48867 {1.16564, 12.1914396}, //
+
48868 {1.16899002, 12.19312}, //
+
48869 {1.16940999, 12.1933298}, //
+
48870 {1.16974998, 12.1934996}, //
+
48871 {1.13584995, 12.13585}, //
+
48872 {1.12987006, 12.13307}, //
+
48873 {1.12397003, 12.1307497}, //
+
48874 {1.11816001, 12.1288795}, //
+
48875 {1.11241996, 12.1274796}, //
+
48876 {1.10677004, 12.1265402}, //
+
48877 {1.10121, 12.12605}, //
+
48878 {1.09572005, 12.1260204}, //
+
48879 });
+
48880 polys.push_back({
+
48881 {4.42474985, 12.2477503}, //
+
48882 {4.42340994, 12.2490902}, //
+
48883 {4.42304993, 12.2494497}, //
+
48884 {4.42263985, 12.2498302}, //
+
48885 {4.42215014, 12.2502098}, //
+
48886 {4.42156982, 12.2505798}, //
+
48887 {4.42089987, 12.2509604}, //
+
48888 {4.4201498, 12.2513399}, //
+
48889 {4.41932011, 12.2517204}, //
+
48890 {4.41839981, 12.2520905}, //
+
48891 {4.41738987, 12.25247}, //
+
48892 {4.41629982, 12.2528496}, //
+
48893 {4.41517019, 12.2532101}, //
+
48894 {4.41403008, 12.25352}, //
+
48895 {4.41289997, 12.2537899}, //
+
48896 {4.41176987, 12.2540302}, //
+
48897 {4.41063023, 12.2542105}, //
+
48898 {4.40950012, 12.2543602}, //
+
48899 {4.40837002, 12.2544699}, //
+
48900 {4.4072299, 12.25453}, //
+
48901 {4.4060998, 12.25455}, //
+
48902 {4.39764977, 12.25455}, //
+
48903 {4.39689016, 12.25457}, //
+
48904 {4.3961401, 12.2546301}, //
+
48905 {4.39538002, 12.2547302}, //
+
48906 {4.39462996, 12.25488}, //
+
48907 {4.39386988, 12.2550602}, //
+
48908 {4.39311981, 12.2552795}, //
+
48909 {4.39236021, 12.2555504}, //
+
48910 {4.39161015, 12.2558498}, //
+
48911 {4.39085007, 12.2561998}, //
+
48912 {4.39014006, 12.2566004}, //
+
48913 {4.38951015, 12.25704}, //
+
48914 {4.38895988, 12.2575197}, //
+
48915 {4.38850021, 12.25805}, //
+
48916 {4.38812017, 12.2586098}, //
+
48917 {4.38782978, 12.2592201}, //
+
48918 {4.38761997, 12.2598696}, //
+
48919 {4.3874898, 12.2605696}, //
+
48920 {4.38745022, 12.2613001}, //
+
48921 {4.3874898, 12.2621002}, //
+
48922 {4.38761997, 12.2629805}, //
+
48923 {4.38782978, 12.2639399}, //
+
48924 {4.38812017, 12.2649899}, //
+
48925 {4.38850021, 12.2661304}, //
+
48926 {4.38895988, 12.2673397}, //
+
48927 {4.38951015, 12.2686501}, //
+
48928 {4.39014006, 12.27003}, //
+
48929 {4.39085007, 12.2714996}, //
+
48930 {4.39161015, 12.2729597}, //
+
48931 {4.39236021, 12.2743301}, //
+
48932 {4.39311981, 12.27563}, //
+
48933 {4.39386988, 12.2768402}, //
+
48934 {4.39462996, 12.2779703}, //
+
48935 {4.39538002, 12.2790098}, //
+
48936 {4.3961401, 12.2799702}, //
+
48937 {4.39689016, 12.2808504}, //
+
48938 {4.39764977, 12.2816496}, //
+
48939 {4.39842987, 12.2831402}, //
+
48940 {4.39924002, 12.2845898}, //
+
48941 {4.40010023, 12.2859898}, //
+
48942 {4.40100002, 12.2873497}, //
+
48943 {4.40193987, 12.2886696}, //
+
48944 {4.40291977, 12.2899399}, //
+
48945 {4.4039402, 12.2911701}, //
+
48946 {4.40500021, 12.2923603}, //
+
48947 {4.4060998, 12.2934999}, //
+
48948 {4.40720987, 12.2945299}, //
+
48949 {4.4082799, 12.2953501}, //
+
48950 {4.40930986, 12.2959604}, //
+
48951 {4.41029978, 12.2963495}, //
+
48952 {4.4112401, 12.2965403}, //
+
48953 {4.41213989, 12.2965202}, //
+
48954 {4.41300011, 12.2962904}, //
+
48955 {4.41381979, 12.2958498}, //
+
48956 {4.4145999, 12.2952003}, //
+
48957 {4.41463995, 12.2944803}, //
+
48958 {4.41477013, 12.2937899}, //
+
48959 {4.41497993, 12.2931499}, //
+
48960 {4.41526985, 12.2925501}, //
+
48961 {4.41564989, 12.2919903}, //
+
48962 {4.41611004, 12.2914696}, //
+
48963 {4.41665983, 12.2909899}, //
+
48964 {4.41729021, 12.2905502}, //
+
48965 {4.41800022, 12.2901497}, //
+
48966 {4.41872978, 12.2897701}, //
+
48967 {4.41941977, 12.2893896}, //
+
48968 {4.42007017, 12.2890196}, //
+
48969 {4.42068005, 12.28864}, //
+
48970 {4.42123985, 12.2882605}, //
+
48971 {4.42176008, 12.2878799}, //
+
48972 {4.42222977, 12.2875099}, //
+
48973 {4.42265987, 12.2871304}, //
+
48974 {4.42304993, 12.2867498}, //
+
48975 {4.42342997, 12.2863903}, //
+
48976 {4.42381001, 12.2860804}, //
+
48977 {4.42418003, 12.2858105}, //
+
48978 {4.42456007, 12.2855701}, //
+
48979 {4.42494011, 12.2853899}, //
+
48980 {4.42532015, 12.2852402}, //
+
48981 {4.42569017, 12.2851295}, //
+
48982 {4.42607021, 12.2850704}, //
+
48983 {4.42644978, 12.2850504}, //
+
48984 {4.42815018, 12.2850504}, //
+
48985 });
+
48986 polys.push_back({
+
48987 {3.36689997, 12.1104002}, //
+
48988 {3.36685991, 12.1115503}, //
+
48989 {3.36672997, 12.1127501}, //
+
48990 {3.36651993, 12.1139898}, //
+
48991 {3.36623001, 12.1152697}, //
+
48992 {3.36584997, 12.1165895}, //
+
48993 {3.36539006, 12.11796}, //
+
48994 {3.36484003, 12.11936}, //
+
48995 {3.36420989, 12.1208096}, //
+
48996 {3.36350012, 12.1223001}, //
+
48997 {3.36274004, 12.1238499}, //
+
48998 {3.36198997, 12.1254902}, //
+
48999 {3.3612299, 12.1272097}, //
+
49000 {3.36048007, 12.1290102}, //
+
49001 {3.35971999, 12.1308899}, //
+
49002 {3.35896993, 12.1328602}, //
+
49003 {3.35821009, 12.1349001}, //
+
49004 {3.35746002, 12.1370401}, //
+
49005 {3.35669994, 12.1392498}, //
+
49006 {3.35591006, 12.1414604}, //
+
49007 {3.35504007, 12.1436005}, //
+
49008 {3.35407996, 12.1456404}, //
+
49009 {3.35303998, 12.1476097}, //
+
49010 {3.35191011, 12.1494904}, //
+
49011 {3.3506999, 12.1512899}, //
+
49012 {3.34940004, 12.1530104}, //
+
49013 {3.34802008, 12.1546497}, //
+
49014 {3.34654999, 12.1562004}, //
+
49015 {3.34650993, 12.1569099}, //
+
49016 {3.34638, 12.1575403}, //
+
49017 {3.34616995, 12.1580896}, //
+
49018 {3.34588003, 12.1585503}, //
+
49019 {3.34549999, 12.1589298}, //
+
49020 {3.34504008, 12.1592197}, //
+
49021 {3.34449005, 12.1594296}, //
+
49022 {3.34385991, 12.1595602}, //
+
49023 {3.3431499, 12.1596003}, //
+
49024 {3.34098005, 12.1617899}, //
+
49025 {3.33896995, 12.1638603}, //
+
49026 {3.33713007, 12.1658096}, //
+
49027 {3.33545995, 12.1676197}, //
+
49028 {3.33396006, 12.1693201}, //
+
49029 {3.33261991, 12.1708899}, //
+
49030 {3.33143997, 12.1723299}, //
+
49031 {3.33044004, 12.1736498}, //
+
49032 {3.3296001, 12.1748505}, //
+
49033 {3.32884002, 12.1761303}, //
+
49034 {3.32808995, 12.1777}, //
+
49035 {3.32733011, 12.1795702}, //
+
49036 {3.32658005, 12.1817198}, //
+
49037 {3.32581997, 12.1841698}, //
+
49038 {3.3250699, 12.1869202}, //
+
49039 {3.32431006, 12.18995}, //
+
49040 {3.32356, 12.1932802}, //
+
49041 {3.32279992, 12.1969004}, //
+
49042 {3.32206988, 12.1983805}, //
+
49043 {3.32136989, 12.1998196}, //
+
49044 {3.32071996, 12.2012196}, //
+
49045 {3.32011008, 12.20257}, //
+
49046 {3.31955004, 12.2038898}, //
+
49047 {3.31902003, 12.2051697}, //
+
49048 {3.3185401, 12.2063999}, //
+
49049 {3.31809998, 12.2075996}, //
+
49050 {3.31769991, 12.2087498}, //
+
49051 {3.31732988, 12.2098398}, //
+
49052 {3.3169601, 12.2108498}, //
+
49053 {3.31659007, 12.2117701}, //
+
49054 {3.31622005, 12.2126102}, //
+
49055 {3.31585002, 12.2133703}, //
+
49056 {3.31547999, 12.2140398}, //
+
49057 {3.31509995, 12.2146301}, //
+
49058 {3.31472993, 12.2151299}, //
+
49059 {3.31434989, 12.2155504}, //
+
49060 {3.31395006, 12.21591}, //
+
49061 {3.31350994, 12.2162199}, //
+
49062 {3.31303, 12.2164898}, //
+
49063 {3.3125, 12.2167301}, //
+
49064 {3.31193995, 12.2169104}, //
+
49065 {3.31133008, 12.2170601}, //
+
49066 {3.31067991, 12.2171698}, //
+
49067 {3.30997992, 12.2172298}, //
+
49068 {3.30925012, 12.2172499}, //
+
49069 {3.30849004, 12.2179604}, //
+
49070 {3.30773997, 12.2185898}, //
+
49071 {3.30697989, 12.2191401}, //
+
49072 {3.30623007, 12.2195997}, //
+
49073 {3.30546999, 12.2199802}, //
+
49074 {3.30471992, 12.2202702}, //
+
49075 {3.30396008, 12.22048}, //
+
49076 {3.30321002, 12.2206097}, //
+
49077 {3.30244994, 12.2206497}, //
+
49078 {3.30093002, 12.2221498}, //
+
49079 {3.29936004, 12.22365}, //
+
49080 {3.29776001, 12.2251501}, //
+
49081 {3.2960999, 12.2266502}, //
+
49082 {3.29440999, 12.2281504}, //
+
49083 {3.29267001, 12.2296495}, //
+
49084 {3.29088998, 12.2311497}, //
+
49085 {3.28906989, 12.2326498}, //
+
49086 {3.28719997, 12.2341499}, //
+
49087 {3.28530002, 12.2357502}, //
+
49088 {3.28336, 12.2375097}, //
+
49089 {3.28136992, 12.23944}, //
+
49090 {3.27934003, 12.24154}, //
+
49091 {3.27727008, 12.2438002}, //
+
49092 {3.27516007, 12.2462397}, //
+
49093 {3.273, 12.2488403}, //
+
49094 {3.27080011, 12.2516098}, //
+
49095 {3.26854992, 12.25455}, //
+
49096 {3.26711011, 12.2552099}, //
+
49097 {3.2658, 12.2557096}, //
+
49098 {3.26461005, 12.2560301}, //
+
49099 {3.26355004, 12.2561903}, //
+
49100 {3.26260996, 12.2561903}, //
+
49101 {3.26179004, 12.2560196}, //
+
49102 {3.26110005, 12.2556801}, //
+
49103 {3.26054001, 12.2551699}, //
+
49104 {3.26009989, 12.2545004}, //
+
49105 {3.2597599, 12.2537098}, //
+
49106 {3.25951004, 12.25284}, //
+
49107 {3.25934005, 12.2518797}, //
+
49108 {3.25925994, 12.2508402}, //
+
49109 {3.25925994, 12.2497101}, //
+
49110 {3.25934005, 12.2484999}, //
+
49111 {3.25951004, 12.2472}, //
+
49112 {3.2597599, 12.24582}, //
+
49113 {3.26009989, 12.2443504}, //
+
49114 {3.26049995, 12.2428102}, //
+
49115 {3.26094007, 12.2411804}, //
+
49116 {3.26142001, 12.2394695}, //
+
49117 {3.26194, 12.2376699}, //
+
49118 {3.26250005, 12.2357903}, //
+
49119 {3.26309991, 12.23382}, //
+
49120 {3.26374006, 12.23176}, //
+
49121 {3.26443005, 12.22962}, //
+
49122 {3.26515007, 12.2273998}, //
+
49123 {3.26515007, 12.2206497}, //
+
49124 {3.26601005, 12.21908}, //
+
49125 {3.26708007, 12.2173796}, //
+
49126 {3.2683599, 12.2155504}, //
+
49127 {3.26984, 12.2136002}, //
+
49128 {3.27153993, 12.2115202}, //
+
49129 {3.27343988, 12.2093201}, //
+
49130 {3.27554989, 12.2069902}, //
+
49131 {3.27786994, 12.2045298}, //
+
49132 {3.28040004, 12.2019501}, //
+
49133 {3.28297997, 12.19942}, //
+
49134 {3.28543997, 12.1970997}, //
+
49135 {3.28777003, 12.1949902}, //
+
49136 {3.28996992, 12.1930904}, //
+
49137 {3.29204988, 12.19139}, //
+
49138 {3.29399991, 12.1899099}, //
+
49139 {3.29583001, 12.1886301}, //
+
49140 {3.29752994, 12.1875601}, //
+
49141 {3.29909992, 12.1866999}, //
+
49142 {3.29979992, 12.1859798}, //
+
49143 {3.30042005, 12.1852903}, //
+
49144 {3.30096006, 12.1846504}, //
+
49145 {3.30141997, 12.1840496}, //
+
49146 {3.30179, 12.1834898}, //
+
49147 {3.30207992, 12.18297}, //
+
49148 {3.30227995, 12.1824903}, //
+
49149 {3.30240989, 12.1820498}, //
+
49150 {3.30244994, 12.1816502}, //
+
49151 {3.30240989, 12.1812897}, //
+
49152 {3.30227995, 12.1809797}, //
+
49153 {3.3020699, 12.1807098}, //
+
49154 {3.30177999, 12.1804705}, //
+
49155 {3.30139995, 12.1802902}, //
+
49156 {3.30094004, 12.1801395}, //
+
49157 {3.30039001, 12.1800299}, //
+
49158 {3.2997601, 12.1799698}, //
+
49159 {3.29905009, 12.1799498}, //
+
49160 {3.29833007, 12.1799297}, //
+
49161 {3.29764009, 12.1798697}, //
+
49162 {3.29699993, 12.17976}, //
+
49163 {3.29640007, 12.1796103}, //
+
49164 {3.29584002, 12.17943}, //
+
49165 {3.29532003, 12.1791897}, //
+
49166 {3.2948401, 12.1789198}, //
+
49167 {3.29439998, 12.1786098}, //
+
49168 {3.29399991, 12.1782503}, //
+
49169 {3.29362011, 12.1778898}, //
+
49170 {3.29324007, 12.1775799}, //
+
49171 {3.29287004, 12.17731}, //
+
49172 {3.29249001, 12.1770697}, //
+
49173 {3.29210997, 12.1768904}, //
+
49174 {3.29172993, 12.1767397}, //
+
49175 {3.2913599, 12.17663}, //
+
49176 {3.2909801, 12.1765699}, //
+
49177 {3.29060006, 12.1765499}, //
+
49178 {3.2888999, 12.1765499}, //
+
49179 {3.28805995, 12.1765699}, //
+
49180 {3.28705001, 12.17663}, //
+
49181 {3.28588009, 12.1767397}, //
+
49182 {3.28452992, 12.1768904}, //
+
49183 {3.28302002, 12.1770697}, //
+
49184 {3.28133988, 12.17731}, //
+
49185 {3.27950001, 12.1775799}, //
+
49186 {3.27747989, 12.1778898}, //
+
49187 {3.27530003, 12.1782503}, //
+
49188 {3.27304006, 12.1786098}, //
+
49189 {3.2707901, 12.1789198}, //
+
49190 {3.26852989, 12.1791897}, //
+
49191 {3.26627994, 12.17943}, //
+
49192 {3.26401997, 12.1796103}, //
+
49193 {3.26177001, 12.17976}, //
+
49194 {3.25951004, 12.1798697}, //
+
49195 {3.25726008, 12.1799297}, //
+
49196 {3.25500011, 12.1799498}, //
+
49197 {3.25278997, 12.1799698}, //
+
49198 {3.25064993, 12.1800299}, //
+
49199 {3.24861002, 12.1801395}, //
+
49200 {3.24663997, 12.1802902}, //
+
49201 {3.24476004, 12.1804705}, //
+
49202 {3.24295998, 12.1807098}, //
+
49203 {3.24124002, 12.1809797}, //
+
49204 {3.23959994, 12.1812897}, //
+
49205 {3.23804998, 12.1816502}, //
+
49206 {3.23661995, 12.1820097}, //
+
49207 {3.2342701, 12.1825895}, //
+
49208 {3.23258996, 12.1830101}, //
+
49209 {3.23159003, 12.1832705}, //
+
49210 {3.23132992, 12.1833296}, //
+
49211 {3.23125005, 12.1833496}, //
+
49212 {3.22899008, 12.1833096}, //
+
49213 {3.22673988, 12.1831799}, //
+
49214 {3.22447991, 12.18297}, //
+
49215 {3.22221994, 12.1826801}, //
+
49216 {3.21995997, 12.1822996}, //
+
49217 {3.21768999, 12.1818399}, //
+
49218 {3.21543002, 12.1812897}, //
+
49219 {3.21317005, 12.1806602}, //
+
49220 {3.21090007, 12.1799498}, //
+
49221 {3.20865989, 12.1791897}, //
+
49222 {3.20647001, 12.1784401}, //
+
49223 {3.20431995, 12.17768}, //
+
49224 {3.20219994, 12.1769304}, //
+
49225 {3.20012999, 12.1761703}, //
+
49226 {3.19810009, 12.1754198}, //
+
49227 {3.19611001, 12.1746597}, //
+
49228 {3.19415998, 12.1739101}, //
+
49229 {3.19225001, 12.1731501}, //
+
49230 {3.19047999, 12.1724396}, //
+
49231 {3.18891001, 12.1718102}, //
+
49232 {3.18756008, 12.1712599}, //
+
49233 {3.18640995, 12.1708002}, //
+
49234 {3.1854701, 12.1704197}, //
+
49235 {3.18474007, 12.1701298}, //
+
49236 {3.18422008, 12.16992}, //
+
49237 {3.18390012, 12.1697903}, //
+
49238 {3.18379998, 12.1697502}, //
+
49239 {3.18210006, 12.1697502}, //
+
49240 {3.18172002, 12.1697302}, //
+
49241 {3.18133998, 12.1696701}, //
+
49242 {3.18096995, 12.1695604}, //
+
49243 {3.18058991, 12.1694098}, //
+
49244 {3.18021011, 12.1692305}, //
+
49245 {3.17983007, 12.1689901}, //
+
49246 {3.17946005, 12.1687202}, //
+
49247 {3.17908001, 12.1684103}, //
+
49248 {3.17869997, 12.1680498}, //
+
49249 {3.17833996, 12.1676998}, //
+
49250 {3.17803001, 12.1674004}, //
+
49251 {3.17700005, 12.1664}, //
+
49252 {3.18720007, 12.1969004}, //
+
49253 {3.20749998, 12.1969004}, //
+
49254 {3.20897007, 12.1968603}, //
+
49255 {3.21035004, 12.1967297}, //
+
49256 {3.21165991, 12.1965199}, //
+
49257 {3.21286988, 12.1962299}, //
+
49258 {3.21401, 12.1958504}, //
+
49259 {3.21506, 12.1953897}, //
+
49260 {3.21602011, 12.1948404}, //
+
49261 {3.21690011, 12.1942101}, //
+
49262 {3.2177, 12.1934996}, //
+
49263 {3.21924996, 12.19277}, //
+
49264 {3.22089005, 12.19207}, //
+
49265 {3.22261, 12.1914196}, //
+
49266 {3.22441006, 12.1908102}, //
+
49267 {3.22628999, 12.1902504}, //
+
49268 {3.22826004, 12.1897202}, //
+
49269 {3.23029995, 12.1892405}, //
+
49270 {3.23243999, 12.1887999}, //
+
49271 {3.2346499, 12.1884003}, //
+
49272 {3.23695993, 12.1880398}, //
+
49273 {3.23935008, 12.1877298}, //
+
49274 {3.2418201, 12.1874599}, //
+
49275 {3.24438, 12.1872196}, //
+
49276 {3.24702001, 12.1870403}, //
+
49277 {3.24973989, 12.1868896}, //
+
49278 {3.25254011, 12.18678}, //
+
49279 {3.25542998, 12.1867199}, //
+
49280 {3.25839996, 12.1866999}, //
+
49281 {3.26065993, 12.1859999}, //
+
49282 {3.26290989, 12.18538}, //
+
49283 {3.2651701, 12.1848402}, //
+
49284 {3.26743007, 12.1843796}, //
+
49285 {3.26969004, 12.1840096}, //
+
49286 {3.27196002, 12.1837196}, //
+
49287 {3.27421999, 12.1835203}, //
+
49288 {3.27647996, 12.1833897}, //
+
49289 {3.27874994, 12.1833496}, //
+
49290 {3.28085995, 12.1826801}, //
+
49291 {3.28268003, 12.1821699}, //
+
49292 {3.28419995, 12.1818304}, //
+
49293 {3.28542995, 12.1816597}, //
+
49294 {3.28637004, 12.1816597}, //
+
49295 {3.28701997, 12.1818199}, //
+
49296 {3.28736997, 12.1821404}, //
+
49297 {3.28743005, 12.1826401}, //
+
49298 {3.28719997, 12.1833}, //
+
49299 {3.28672004, 12.1841002}, //
+
49300 {3.28603005, 12.1849804}, //
+
49301 {3.28513002, 12.1859398}, //
+
49302 {3.28401995, 12.1869898}, //
+
49303 {3.28270006, 12.1881304}, //
+
49304 {3.2811799, 12.1893396}, //
+
49305 {3.27943993, 12.19065}, //
+
49306 {3.27749991, 12.19203}, //
+
49307 {3.27535009, 12.1934996}, //
+
49308 {3.27454996, 12.1942797}, //
+
49309 {3.27366996, 12.1950903}, //
+
49310 {3.27271008, 12.1959496}, //
+
49311 {3.27166009, 12.1968498}, //
+
49312 {3.27051997, 12.1977901}, //
+
49313 {3.26931, 12.1987696}, //
+
49314 {3.26799989, 12.19979}, //
+
49315 {3.26661992, 12.2008495}, //
+
49316 {3.26515007, 12.2019501}, //
+
49317 {3.26368999, 12.2031002}, //
+
49318 {3.26232004, 12.2042999}, //
+
49319 {3.26101995, 12.2055397}, //
+
49320 {3.25980997, 12.2068195}, //
+
49321 {3.25868011, 12.2081404}, //
+
49322 {3.25763988, 12.2095098}, //
+
49323 {3.25668001, 12.2109098}, //
+
49324 {3.25580001, 12.2123604}, //
+
49325 {3.25500011, 12.21385}, //
+
49326 {3.25357008, 12.2169704}, //
+
49327 {3.25231004, 12.2202902}, //
+
49328 {3.25121999, 12.2238302}, //
+
49329 {3.25029993, 12.2275696}, //
+
49330 {3.24954009, 12.2315302}, //
+
49331 {3.24896002, 12.2356901}, //
+
49332 {3.24853992, 12.2400703}, //
+
49333 {3.24828005, 12.2446499}, //
+
49334 {3.24819994, 12.2494497}, //
+
49335 {3.24833012, 12.2542}, //
+
49336 {3.2486999, 12.2586603}, //
+
49337 {3.24933004, 12.2628298}, //
+
49338 {3.25021005, 12.2666998}, //
+
49339 {3.25134993, 12.2702799}, //
+
49340 {3.25272989, 12.2735596}, //
+
49341 {3.25436997, 12.2765503}, //
+
49342 {3.25625992, 12.2792501}, //
+
49343 {3.25839996, 12.2816496}, //
+
49344 {3.25925994, 12.28228}, //
+
49345 {3.26032996, 12.2826595}, //
+
49346 {3.26161003, 12.2827797}, //
+
49347 {3.2630899, 12.2826595}, //
+
49348 {3.26479006, 12.28228}, //
+
49349 {3.26669002, 12.2816496}, //
+
49350 {3.26880002, 12.2807703}, //
+
49351 {3.27112007, 12.2796402}, //
+
49352 {3.27364993, 12.2782497}, //
+
49353 {3.2762599, 12.2766705}, //
+
49354 {3.27884007, 12.27491}, //
+
49355 {3.28136992, 12.2729902}, //
+
49356 {3.28385997, 12.2708998}, //
+
49357 {3.28630996, 12.2686396}, //
+
49358 {3.28871989, 12.2662096}, //
+
49359 {3.29109001, 12.2636099}, //
+
49360 {3.29341006, 12.2608404}, //
+
49361 {3.29570007, 12.2579002}, //
+
49362 {3.29867005, 12.2549696}, //
+
49363 {3.30154991, 12.2522097}, //
+
49364 {3.30435991, 12.2496204}, //
+
49365 {3.30707002, 12.2472}, //
+
49366 {3.30971003, 12.2449398}, //
+
49367 {3.31225991, 12.2428598}, //
+
49368 {3.31471992, 12.2409401}, //
+
49369 {3.31710005, 12.2391796}, //
+
49370 {3.31940007, 12.2376003}, //
+
49371 {3.32300997, 12.2346401}, //
+
49372 {3.32628012, 12.2318096}, //
+
49373 {3.32922006, 12.2291002}, //
+
49374 {3.33181, 12.2265196}, //
+
49375 {3.33407998, 12.2240601}, //
+
49376 {3.33599997, 12.2217302}, //
+
49377 {3.33758998, 12.2195301}, //
+
49378 {3.33884001, 12.2174501}, //
+
49379 {3.33975005, 12.2154999}, //
+
49380 {3.34042001, 12.2135201}, //
+
49381 {3.34092999, 12.2113199}, //
+
49382 {3.34125996, 12.2089195}, //
+
49383 {3.34142995, 12.2063103}, //
+
49384 {3.34142995, 12.2034903}, //
+
49385 {3.34125996, 12.2004604}, //
+
49386 {3.34092999, 12.1972103}, //
+
49387 {3.34042001, 12.1937599}, //
+
49388 {3.33975005, 12.1900997}, //
+
49389 {3.33914995, 12.1879101}, //
+
49390 {3.33884001, 12.1858397}, //
+
49391 {3.33882999, 12.1838903}, //
+
49392 {3.33909988, 12.1820803}, //
+
49393 {3.33966994, 12.1803799}, //
+
49394 {3.34052992, 12.1788101}, //
+
49395 {3.34168005, 12.1773701}, //
+
49396 {3.3431201, 12.1760502}, //
+
49397 {3.34485006, 12.1748505}, //
+
49398 {3.34676003, 12.1737804}, //
+
49399 {3.34871006, 12.1728401}, //
+
49400 {3.3506999, 12.17202}, //
+
49401 {3.35273004, 12.17132}, //
+
49402 {3.35479999, 12.1707602}, //
+
49403 {3.35692, 12.1703196}, //
+
49404 {3.35907006, 12.1700001}, //
+
49405 {3.36125994, 12.1698103}, //
+
49406 {3.36350012, 12.1697502}, //
+
49407 {3.3664701, 12.1689997}, //
+
49408 {3.36935997, 12.1682596}, //
+
49409 {3.37215996, 12.16751}, //
+
49410 {3.37488008, 12.1667604}, //
+
49411 {3.37752008, 12.1660099}, //
+
49412 {3.38007998, 12.1652603}, //
+
49413 {3.38255, 12.1645098}, //
+
49414 {3.38493991, 12.1637497}, //
+
49415 {3.38724995, 12.1630001}, //
+
49416 {3.38940001, 12.16222}, //
+
49417 {3.39134002, 12.1613998}, //
+
49418 {3.39308, 12.1605396}, //
+
49419 {3.39459991, 12.1596403}, //
+
49420 {3.39592004, 12.1587}, //
+
49421 {3.39703012, 12.1577101}, //
+
49422 {3.39792991, 12.1566801}, //
+
49423 {3.39861989, 12.1556101}, //
+
49424 {3.39910007, 12.1545}, //
+
49425 {3.39941001, 12.1533699}, //
+
49426 {3.39960003, 12.1522303}, //
+
49427 {3.39966989, 12.1511002}, //
+
49428 {3.39960003, 12.1499701}, //
+
49429 {3.39941001, 12.1488304}, //
+
49430 {3.39910007, 12.1477003}, //
+
49431 {3.39865994, 12.1465702}, //
+
49432 {3.39808989, 12.1454296}, //
+
49433 {3.3973999, 12.1443005}, //
+
49434 {3.39665008, 12.1431999}, //
+
49435 {3.39589, 12.1421404}, //
+
49436 {3.39513993, 12.14112}, //
+
49437 {3.39439011, 12.1401396}, //
+
49438 {3.39364004, 12.1392002}, //
+
49439 {3.39288998, 12.1382999}, //
+
49440 {3.39213991, 12.1374397}, //
+
49441 {3.3914001, 12.1366301}, //
+
49442 {3.39065003, 12.13585}, //
+
49443 {3.38994002, 12.1351004}, //
+
49444 {3.38930988, 12.1343403}, //
+
49445 {3.38876009, 12.1335897}, //
+
49446 {3.38829994, 12.1328402}, //
+
49447 {3.3879199, 12.1320896}, //
+
49448 {3.38762999, 12.13134}, //
+
49449 {3.38741994, 12.1305904}, //
+
49450 {3.38729, 12.1298504}, //
+
49451 {3.38724995, 12.1290998}, //
+
49452 {3.38651991, 12.1283398}, //
+
49453 {3.38581991, 12.1275902}, //
+
49454 {3.38516998, 12.1268301}, //
+
49455 {3.38456011, 12.1260796}, //
+
49456 {3.38400006, 12.1253204}, //
+
49457 {3.38347006, 12.1245699}, //
+
49458 {3.38298988, 12.1238098}, //
+
49459 {3.38255, 12.1230602}, //
+
49460 {3.38214993, 12.1223001}, //
+
49461 {3.38175011, 12.12152}, //
+
49462 {3.38130999, 12.1206999}, //
+
49463 {3.38083005, 12.1198397}, //
+
49464 {3.38030005, 12.1189404}, //
+
49465 {3.37974, 12.118}, //
+
49466 {3.37912989, 12.1170101}, //
+
49467 {3.37847996, 12.1159801}, //
+
49468 {3.37777996, 12.1149101}, //
+
49469 {3.37704992, 12.1138}, //
+
49470 {3.37629008, 12.1127195}, //
+
49471 {3.37554002, 12.1117201}, //
+
49472 {3.37477994, 12.1108103}, //
+
49473 {3.37403011, 12.1099701}, //
+
49474 {3.37327003, 12.1092196}, //
+
49475 {3.37251997, 12.1085596}, //
+
49476 {3.37175989, 12.1079702}, //
+
49477 {3.37101007, 12.1074696}, //
+
49478 {3.37024999, 12.1070499}, //
+
49479 {3.36954999, 12.1066904}, //
+
49480 {3.3689301, 12.1063805}, //
+
49481 {3.36839008, 12.1061096}, //
+
49482 {3.36755991, 12.10569}, //
+
49483 {3.36706996, 12.1054296}, //
+
49484 {3.36694002, 12.1053696}, //
+
49485 {3.36689997, 12.1053495}, //
+
49486 });
+
49487 polys.push_back({
+
49488 {3.53979993, 12.2409496}, //
+
49489 {3.52285004, 12.1799498}, //
+
49490 {3.52285004, 12.1918001}, //
+
49491 {3.52287006, 12.19452}, //
+
49492 {3.52292991, 12.1974001}, //
+
49493 {3.52304006, 12.2004604}, //
+
49494 {3.52319002, 12.20368}, //
+
49495 {3.52337003, 12.2070704}, //
+
49496 {3.52361012, 12.2106199}, //
+
49497 {3.52388, 12.2143497}, //
+
49498 {3.52418995, 12.2182398}, //
+
49499 {3.52454996, 12.2222996}, //
+
49500 {3.52493, 12.2264004}, //
+
49501 {3.52531004, 12.2304201}, //
+
49502 {3.52568007, 12.2343597}, //
+
49503 {3.5260601, 12.2382097}, //
+
49504 {3.52643991, 12.2419701}, //
+
49505 {3.52681994, 12.2456598}, //
+
49506 {3.52718997, 12.2492504}, //
+
49507 {3.52757001, 12.2527704}, //
+
49508 {3.52795005, 12.2561998}, //
+
49509 {3.52825999, 12.25949}, //
+
49510 {3.52845001, 12.2625799}, //
+
49511 {3.52852011, 12.2654495}, //
+
49512 {3.52845001, 12.2681103}, //
+
49513 {3.52825999, 12.2705603}, //
+
49514 {3.52795005, 12.2728004}, //
+
49515 {3.52750993, 12.2748299}, //
+
49516 {3.52694011, 12.2766399}, //
+
49517 {3.52624989, 12.2782497}, //
+
49518 {3.52795005, 12.2765503}, //
+
49519 {3.52870989, 12.2758102}, //
+
49520 {3.52907991, 12.2754402}, //
+
49521 {3.53022003, 12.2743301}, //
+
49522 {3.53059006, 12.2739496}, //
+
49523 {3.5309701, 12.2735796}, //
+
49524 {3.53253007, 12.2720203}, //
+
49525 {3.53286004, 12.2716904}, //
+
49526 {3.53296995, 12.2715797}, //
+
49527 {3.53303003, 12.2715197}, //
+
49528 {3.53305006, 12.2714996}, //
+
49529 {3.53307009, 12.2707701}, //
+
49530 {3.53312993, 12.2700701}, //
+
49531 {3.53323007, 12.2694197}, //
+
49532 {3.53338003, 12.2688103}, //
+
49533 {3.53356004, 12.2682505}, //
+
49534 {3.5337801, 12.2677202}, //
+
49535 {3.53404999, 12.2672396}, //
+
49536 {3.53434992, 12.2667999}, //
+
49537 {3.53469992, 12.2664003}, //
+
49538 {3.53518009, 12.2660398}, //
+
49539 {3.53588009, 12.2657299}, //
+
49540 {3.53678012, 12.26546}, //
+
49541 {3.53788996, 12.2652197}, //
+
49542 {3.53921008, 12.2650404}, //
+
49543 {3.54074001, 12.2648897}, //
+
49544 {3.54249001, 12.26478}, //
+
49545 {3.54444003, 12.26472}, //
+
49546 {3.5466001, 12.2646999}, //
+
49547 {3.54731011, 12.2653303}, //
+
49548 {3.54794002, 12.2657099}, //
+
49549 {3.54849005, 12.26583}, //
+
49550 {3.54894996, 12.2657099}, //
+
49551 {3.54933, 12.2653303}, //
+
49552 {3.54961991, 12.2646999}, //
+
49553 {3.54982996, 12.2638197}, //
+
49554 {3.5499599, 12.2626896}, //
+
49555 {3.54999995, 12.2613001}, //
+
49556 {3.54999995, 12.224}, //
+
49557 {3.55001998, 12.2232504}, //
+
49558 {3.55008006, 12.2225103}, //
+
49559 {3.55018997, 12.2217598}, //
+
49560 {3.55033994, 12.2210102}, //
+
49561 {3.55051994, 12.2202597}, //
+
49562 {3.55076003, 12.2195101}, //
+
49563 {3.55102992, 12.2187595}, //
+
49564 {3.5513401, 12.2180004}, //
+
49565 {3.55170012, 12.2172499}, //
+
49566 {3.55205989, 12.2165604}, //
+
49567 {3.55237007, 12.2159901}, //
+
49568 {3.55263996, 12.2155504}, //
+
49569 {3.55288005, 12.2152395}, //
+
49570 {3.55306005, 12.2150497}, //
+
49571 {3.55321002, 12.2149801}, //
+
49572 {3.55331993, 12.2150497}, //
+
49573 {3.55338001, 12.2152395}, //
+
49574 {3.55340004, 12.2155504}, //
+
49575 {3.55344009, 12.21595}, //
+
49576 {3.55357003, 12.2163897}, //
+
49577 {3.55377007, 12.2168703}, //
+
49578 {3.55405998, 12.2173996}, //
+
49579 {3.55443001, 12.2179604}, //
+
49580 {3.55488992, 12.2185698}, //
+
49581 {3.55542994, 12.2192202}, //
+
49582 {3.55605006, 12.2199202}, //
+
49583 {3.55675006, 12.2206497}, //
+
49584 {3.55679011, 12.2214203}, //
+
49585 {3.55692005, 12.22223}, //
+
49586 {3.5571301, 12.2230797}, //
+
49587 {3.55742002, 12.2239704}, //
+
49588 {3.55780005, 12.2249098}, //
+
49589 {3.55825996, 12.2258902}, //
+
49590 {3.55881, 12.2269201}, //
+
49591 {3.5594399, 12.2279902}, //
+
49592 {3.56014991, 12.2291002}, //
+
49593 {3.56090999, 12.2302103}, //
+
49594 {3.56166005, 12.2312803}, //
+
49595 {3.56241989, 12.2323103}, //
+
49596 {3.56316996, 12.2333002}, //
+
49597 {3.56393003, 12.2342396}, //
+
49598 {3.5646801, 12.2351398}, //
+
49599 {3.56543994, 12.2360001}, //
+
49600 {3.56619, 12.2368202}, //
+
49601 {3.56695008, 12.2376003}, //
+
49602 {3.56619, 12.2346601}, //
+
49603 {3.56543994, 12.2318897}, //
+
49604 {3.5646801, 12.22929}, //
+
49605 {3.56393003, 12.22686}, //
+
49606 {3.56316996, 12.2245998}, //
+
49607 {3.56241989, 12.2225103}, //
+
49608 {3.56166005, 12.2205896}, //
+
49609 {3.56090999, 12.2188301}, //
+
49610 {3.56014991, 12.2172499}, //
+
49611 {3.55717993, 12.2104197}, //
+
49612 {3.55429006, 12.2035103}, //
+
49613 {3.55149007, 12.1965103}, //
+
49614 {3.54876995, 12.1894302}, //
+
49615 {3.54612994, 12.1822701}, //
+
49616 {3.54357004, 12.1750298}, //
+
49617 {3.54110003, 12.1676998}, //
+
49618 {3.53871012, 12.1602898}, //
+
49619 {3.53640008, 12.1527996}, //
+
49620 });
+
49621 polys.push_back({
+
49622 {4.41289997, 12.1697502}, //
+
49623 {4.41166019, 12.1697903}, //
+
49624 {4.41022015, 12.16992}, //
+
49625 {4.4085598, 12.1701298}, //
+
49626 {4.40670013, 12.1704197}, //
+
49627 {4.40463018, 12.1708002}, //
+
49628 {4.40233994, 12.1712599}, //
+
49629 {4.39984989, 12.1718102}, //
+
49630 {4.39716005, 12.1724396}, //
+
49631 {4.39424992, 12.1731501}, //
+
49632 {4.39203978, 12.1731901}, //
+
49633 {4.38990021, 12.1733198}, //
+
49634 {4.38785982, 12.1735296}, //
+
49635 {4.38589001, 12.1738195}, //
+
49636 {4.38400984, 12.1742001}, //
+
49637 {4.38220978, 12.1746597}, //
+
49638 {4.38048983, 12.17521}, //
+
49639 {4.37884998, 12.1758404}, //
+
49640 {4.37729979, 12.1765499}, //
+
49641 {4.37571001, 12.17735}, //
+
49642 {4.37393999, 12.1782303}, //
+
49643 {4.37201977, 12.1791897}, //
+
49644 {4.36991978, 12.1802301}, //
+
49645 {4.36766005, 12.1813602}, //
+
49646 {4.36523008, 12.1825705}, //
+
49647 {4.3626399, 12.1838703}, //
+
49648 {4.35987997, 12.1852398}, //
+
49649 {4.35694981, 12.1866999}, //
+
49650 {4.35354996, 12.1866999}, //
+
49651 {4.3495698, 12.1887999}, //
+
49652 {4.34518003, 12.1905603}, //
+
49653 {4.34037018, 12.1919899}, //
+
49654 {4.33514023, 12.1930799}, //
+
49655 {4.32949018, 12.19384}, //
+
49656 {4.32342005, 12.1942596}, //
+
49657 {4.31692982, 12.1943398}, //
+
49658 {4.31001997, 12.1940899}, //
+
49659 {4.30270004, 12.1934996}, //
+
49660 {4.29721022, 12.1935797}, //
+
49661 {4.29130983, 12.19384}, //
+
49662 {4.28498983, 12.1942596}, //
+
49663 {4.27825022, 12.1948404}, //
+
49664 {4.27110004, 12.1955996}, //
+
49665 {4.26351976, 12.1965199}, //
+
49666 {4.25552988, 12.1976099}, //
+
49667 {4.2471199, 12.1988697}, //
+
49668 {4.23829985, 12.2003002}, //
+
49669 {4.2280798, 12.2018404}, //
+
49670 {4.21853018, 12.2034702}, //
+
49671 {4.20965004, 12.2051802}, //
+
49672 {4.20143986, 12.2069702}, //
+
49673 {4.19390011, 12.2088499}, //
+
49674 {4.18702984, 12.2108097}, //
+
49675 {4.18084002, 12.2128601}, //
+
49676 {4.17531013, 12.2149897}, //
+
49677 {4.17045021, 12.2172003}, //
+
49678 {4.16597986, 12.2196302}, //
+
49679 {4.1615901, 12.2223997}, //
+
49680 {4.15727997, 12.2255096}, //
+
49681 {4.15305996, 12.22894}, //
+
49682 {4.14891005, 12.2327204}, //
+
49683 {4.14484978, 12.2368202}, //
+
49684 {4.14087009, 12.2412596}, //
+
49685 {4.13697004, 12.2460403}, //
+
49686 {4.1331501, 12.2511501}, //
+
49687 {4.1311698, 12.2539701}, //
+
49688 {4.12973022, 12.2564201}, //
+
49689 {4.12882996, 12.2584896}, //
+
49690 {4.12846994, 12.2601805}, //
+
49691 {4.1286602, 12.2615004}, //
+
49692 {4.12938976, 12.2624397}, //
+
49693 {4.13067007, 12.2629995}, //
+
49694 {4.13249016, 12.2631903}, //
+
49695 {4.13485003, 12.2629995}, //
+
49696 {4.13759995, 12.2624798}, //
+
49697 {4.14056015, 12.2616596}, //
+
49698 {4.14372015, 12.2605495}, //
+
49699 {4.14709997, 12.2591496}, //
+
49700 {4.15068007, 12.2574501}, //
+
49701 {4.15446997, 12.2554703}, //
+
49702 {4.15847015, 12.25319}, //
+
49703 {4.16268015, 12.2506104}, //
+
49704 {4.16709995, 12.2477503}, //
+
49705 {4.17645979, 12.2430696}, //
+
49706 {4.18138981, 12.2405996}, //
+
49707 {4.18650007, 12.2380505}, //
+
49708 {4.19177008, 12.2354097}, //
+
49709 {4.19720984, 12.2326803}, //
+
49710 {4.20281982, 12.2298698}, //
+
49711 {4.20860004, 12.2269802}, //
+
49712 {4.21455002, 12.224}, //
+
49713 {4.22037983, 12.2225599}, //
+
49714 {4.22584009, 12.2212496}, //
+
49715 {4.23091984, 12.2200603}, //
+
49716 {4.23563004, 12.2189999}, //
+
49717 {4.23995018, 12.2180595}, //
+
49718 {4.24390984, 12.2172403}, //
+
49719 {4.24747992, 12.2165499}, //
+
49720 {4.25067997, 12.2159901}, //
+
49721 {4.25349998, 12.2155504}, //
+
49722 {4.2561202, 12.2152395}, //
+
49723 {4.25869989, 12.2150497}, //
+
49724 {4.26124001, 12.2149801}, //
+
49725 {4.26374006, 12.2150497}, //
+
49726 {4.26620007, 12.2152395}, //
+
49727 {4.26861, 12.2155504}, //
+
49728 {4.27097988, 12.2159901}, //
+
49729 {4.27331018, 12.2165604}, //
+
49730 {4.27559996, 12.2172499}, //
+
49731 {4.27790022, 12.2172899}, //
+
49732 {4.28028011, 12.2174196}, //
+
49733 {4.28274012, 12.2176304}, //
+
49734 {4.28528976, 12.2179203}, //
+
49735 {4.28793001, 12.2182999}, //
+
49736 {4.29063988, 12.2187595}, //
+
49737 {4.29344988, 12.2193098}, //
+
49738 {4.29632998, 12.2199402}, //
+
49739 {4.29930019, 12.2206497}, //
+
49740 {4.30440998, 12.2206297}, //
+
49741 {4.30917978, 12.2205696}, //
+
49742 {4.31362009, 12.2204599}, //
+
49743 {4.31771994, 12.2203102}, //
+
49744 {4.32148981, 12.22013}, //
+
49745 {4.32492018, 12.2198896}, //
+
49746 {4.3280201, 12.2196198}, //
+
49747 {4.33078003, 12.2193098}, //
+
49748 {4.33319998, 12.2189503}, //
+
49749 {4.33542013, 12.2185497}, //
+
49750 {4.33756018, 12.2181101}, //
+
49751 {4.33962011, 12.2176304}, //
+
49752 {4.34158993, 12.2171001}, //
+
49753 {4.3434701, 12.2165403}, //
+
49754 {4.34527016, 12.21593}, //
+
49755 {4.34698009, 12.2152796}, //
+
49756 {4.34860992, 12.2145796}, //
+
49757 {4.35015011, 12.21385}, //
+
49758 {4.35091019, 12.2131395}, //
+
49759 {4.35165977, 12.2125101}, //
+
49760 {4.35241985, 12.2119598}, //
+
49761 {4.35316992, 12.2115002}, //
+
49762 {4.35393, 12.2111197}, //
+
49763 {4.35468006, 12.2108297}, //
+
49764 {4.35544014, 12.2106199}, //
+
49765 {4.3561902, 12.2104902}, //
+
49766 {4.35694981, 12.2104502}, //
+
49767 {4.35985994, 12.2097397}, //
+
49768 {4.36254978, 12.2091103}, //
+
49769 {4.36503983, 12.20856}, //
+
49770 {4.36733007, 12.2081003}, //
+
49771 {4.36940002, 12.2077198}, //
+
49772 {4.37126017, 12.2074299}, //
+
49773 {4.37292004, 12.2072201}, //
+
49774 {4.37436008, 12.2070904}, //
+
49775 {4.37559986, 12.2070503}, //
+
49776 {4.37680006, 12.2070904}, //
+
49777 {4.37811995, 12.2072201}, //
+
49778 {4.37955999, 12.2074299}, //
+
49779 {4.38113022, 12.2077198}, //
+
49780 {4.38283014, 12.2081003}, //
+
49781 {4.38464022, 12.20856}, //
+
49782 {4.38659, 12.2091103}, //
+
49783 {4.38865995, 12.2097397}, //
+
49784 {4.39085007, 12.2104502}, //
+
49785 {4.39161015, 12.2104902}, //
+
49786 {4.39236021, 12.2106199}, //
+
49787 {4.39311981, 12.2108297}, //
+
49788 {4.39386988, 12.2111197}, //
+
49789 {4.39462996, 12.2115002}, //
+
49790 {4.39538002, 12.2119598}, //
+
49791 {4.3961401, 12.2125101}, //
+
49792 {4.39689016, 12.2131395}, //
+
49793 {4.39764977, 12.21385}, //
+
49794 {4.41629982, 12.21385}, //
+
49795 {4.41665983, 12.21383}, //
+
49796 {4.41696978, 12.2137699}, //
+
49797 {4.41724014, 12.2136602}, //
+
49798 {4.41747999, 12.2135096}, //
+
49799 {4.41766024, 12.2133303}, //
+
49800 {4.41780996, 12.2130899}, //
+
49801 {4.41792011, 12.2128201}, //
+
49802 {4.41798019, 12.2125101}, //
+
49803 {4.41800022, 12.2121496}, //
+
49804 {4.41800022, 12.1697502}, //
+
49805 });
+
49806 polys.push_back({
+
49807 {3.5683701, 12.2389202}, //
+
49808 {3.56902003, 12.23946}, //
+
49809 {3.56962991, 12.2399197}, //
+
49810 {3.57018995, 12.2402897}, //
+
49811 {3.57070994, 12.2405796}, //
+
49812 {3.57118011, 12.2407799}, //
+
49813 {3.57160997, 12.2409096}, //
+
49814 {3.57200003, 12.2409496}, //
+
49815 {3.57369995, 12.2409496}, //
+
49816 {3.57350993, 12.2407598}, //
+
49817 {3.57236004, 12.2396097}, //
+
49818 {3.57200003, 12.2392502}, //
+
49819 {3.57163, 12.2389002}, //
+
49820 {3.57125998, 12.2385998}, //
+
49821 {3.57088995, 12.2383299}, //
+
49822 {3.57051992, 12.2381096}, //
+
49823 {3.5701499, 12.2379303}, //
+
49824 {3.56978011, 12.2377796}, //
+
49825 {3.56940007, 12.2376804}, //
+
49826 {3.56903005, 12.2376204}, //
+
49827 {3.56865001, 12.2376003}, //
+
49828 {3.56695008, 12.2376003}, //
+
49829 {3.56767988, 12.2383003}, //
+
49830 });
+
49831 polys.push_back({
+
49832 {4.41790009, 12.0907602}, //
+
49833 {4.41476011, 12.0911303}, //
+
49834 {4.41120005, 12.0917501}, //
+
49835 {4.40739012, 12.0925102}, //
+
49836 {4.40350008, 12.0932598}, //
+
49837 {4.39951992, 12.0940199}, //
+
49838 {4.39546013, 12.0947704}, //
+
49839 {4.39132023, 12.0955296}, //
+
49840 {4.38709021, 12.0962801}, //
+
49841 {4.38278008, 12.0970402}, //
+
49842 {4.37837982, 12.0977898}, //
+
49843 {4.37389994, 12.0985498}, //
+
49844 {4.36942005, 12.1000204}, //
+
49845 {4.3650198, 12.1014004}, //
+
49846 {4.36071014, 12.1027098}, //
+
49847 {4.35648012, 12.10392}, //
+
49848 {4.35234022, 12.1050596}, //
+
49849 {4.34827995, 12.1061096}, //
+
49850 {4.34429979, 12.10707}, //
+
49851 {4.34041023, 12.1079502}, //
+
49852 {4.33659983, 12.1087503}, //
+
49853 {4.26539993, 12.1087503}, //
+
49854 {4.25214005, 12.1095896}, //
+
49855 {4.23945999, 12.11059}, //
+
49856 {4.22736979, 12.1117697}, //
+
49857 {4.21585989, 12.1131096}, //
+
49858 {4.20493984, 12.1146097}, //
+
49859 {4.19460011, 12.1162796}, //
+
49860 {4.18485022, 12.1181202}, //
+
49861 {4.17568016, 12.1201296}, //
+
49862 {4.16709995, 12.1223001}, //
+
49863 {4.16266012, 12.1237297}, //
+
49864 {4.15839005, 12.1249905}, //
+
49865 {4.15428019, 12.1260796}, //
+
49866 {4.15034008, 12.1269999}, //
+
49867 {4.14657021, 12.1277599}, //
+
49868 {4.14297009, 12.1283398}, //
+
49869 {4.13953018, 12.1287603}, //
+
49870 {4.13626003, 12.1290197}, //
+
49871 {4.1331501, 12.1290998}, //
+
49872 {4.13158989, 12.1291599}, //
+
49873 {4.12989998, 12.1293497}, //
+
49874 {4.12807989, 12.1296597}, //
+
49875 {4.1261301, 12.1301003}, //
+
49876 {4.12406015, 12.1306601}, //
+
49877 {4.12186003, 12.13134}, //
+
49878 {4.1195302, 12.1321497}, //
+
49879 {4.11708021, 12.13309}, //
+
49880 {4.11450005, 12.1341496}, //
+
49881 {4.11186981, 12.1353197}, //
+
49882 {4.10923004, 12.1365805}, //
+
49883 {4.10658979, 12.1379204}, //
+
49884 {4.10396004, 12.1393499}, //
+
49885 {4.10131979, 12.1408501}, //
+
49886 {4.09868002, 12.1424398}, //
+
49887 {4.09603977, 12.1441097}, //
+
49888 {4.09338999, 12.1458597}, //
+
49889 {4.09075022, 12.1477003}, //
+
49890 {4.08816004, 12.1495304}, //
+
49891 {4.08564997, 12.1512299}, //
+
49892 {4.08322001, 12.1527996}, //
+
49893 {4.08088017, 12.1542501}, //
+
49894 {4.07861996, 12.15557}, //
+
49895 {4.07805014, 12.15588}, //
+
49896 {4.07647991, 12.1649904}, //
+
49897 {4.07677984, 12.16506}, //
+
49898 {4.07941008, 12.1656904}, //
+
49899 {4.08230019, 12.1664}, //
+
49900 {4.08536005, 12.1671495}, //
+
49901 {4.08851004, 12.1678896}, //
+
49902 {4.09174013, 12.1686401}, //
+
49903 {4.09504986, 12.1693897}, //
+
49904 {4.09845018, 12.1701403}, //
+
49905 {4.10192013, 12.1708899}, //
+
49906 {4.10548019, 12.1716404}, //
+
49907 {4.10911989, 12.1724005}, //
+
49908 {4.11285019, 12.1731501}, //
+
49909 {4.11429024, 12.1731701}, //
+
49910 {4.11560011, 12.1732302}, //
+
49911 {4.11678982, 12.1733398}, //
+
49912 {4.11784983, 12.1734896}, //
+
49913 {4.11879015, 12.1736698}, //
+
49914 {4.11960983, 12.1739101}, //
+
49915 {4.12029982, 12.17418}, //
+
49916 {4.1208601, 12.17449}, //
+
49917 {4.12130022, 12.1748505}, //
+
49918 {4.12166023, 12.1752501}, //
+
49919 {4.12197018, 12.1756897}, //
+
49920 {4.12224007, 12.1761703}, //
+
49921 {4.12247992, 12.1766996}, //
+
49922 {4.12266016, 12.1772604}, //
+
49923 {4.12280989, 12.1778698}, //
+
49924 {4.12292004, 12.1785202}, //
+
49925 {4.12298012, 12.1792202}, //
+
49926 {4.12302017, 12.1806803}, //
+
49927 {4.12307978, 12.1813698}, //
+
49928 {4.12318993, 12.1820202}, //
+
49929 {4.12334013, 12.1826296}, //
+
49930 {4.1235199, 12.1831903}, //
+
49931 {4.12376022, 12.1837101}, //
+
49932 {4.12403011, 12.1841803}, //
+
49933 {4.12434006, 12.1846104}, //
+
49934 {4.12470007, 12.1850004}, //
+
49935 {4.12510014, 12.18536}, //
+
49936 {4.12553978, 12.1856699}, //
+
49937 {4.12601995, 12.1859398}, //
+
49938 {4.12654018, 12.1861801}, //
+
49939 {4.12709999, 12.1863604}, //
+
49940 {4.12769985, 12.1865101}, //
+
49941 {4.12833977, 12.1866198}, //
+
49942 {4.12903023, 12.1866798}, //
+
49943 {4.12974977, 12.1866999}, //
+
49944 {4.13060999, 12.1866598}, //
+
49945 {4.13168001, 12.1865301}, //
+
49946 {4.13295984, 12.1863203}, //
+
49947 {4.13443995, 12.1860304}, //
+
49948 {4.13613987, 12.1856499}, //
+
49949 {4.13804007, 12.1851902}, //
+
49950 {4.14015007, 12.1846399}, //
+
49951 {4.14246988, 12.1840096}, //
+
49952 {4.14499998, 12.1833}, //
+
49953 {4.14765978, 12.1825504}, //
+
49954 {4.15037012, 12.1818104}, //
+
49955 {4.15312004, 12.1810598}, //
+
49956 {4.1559, 12.1803102}, //
+
49957 {4.15873003, 12.1795597}, //
+
49958 {4.16160011, 12.1788101}, //
+
49959 {4.16450977, 12.1780596}, //
+
49960 {4.16745996, 12.1773005}, //
+
49961 {4.17045021, 12.1765499}, //
+
49962 {4.1816802, 12.1722002}, //
+
49963 {4.19272995, 12.16817}, //
+
49964 {4.20361996, 12.1644897}, //
+
49965 {4.21434021, 12.1611404}, //
+
49966 {4.22489023, 12.1581202}, //
+
49967 {4.23527002, 12.1554403}, //
+
49968 {4.24548006, 12.1530895}, //
+
49969 {4.25552988, 12.1510801}, //
+
49970 {4.26539993, 12.1493998}, //
+
49971 {4.27495003, 12.1479397}, //
+
49972 {4.28398991, 12.1465702}, //
+
49973 {4.29253006, 12.1452703}, //
+
49974 {4.30057001, 12.1440601}, //
+
49975 {4.30810022, 12.14293}, //
+
49976 {4.31513023, 12.1418896}, //
+
49977 {4.32166004, 12.1409302}, //
+
49978 {4.32768011, 12.1400499}, //
+
49979 {4.33319998, 12.1392498}, //
+
49980 {4.37729979, 12.1392498}, //
+
49981 {4.37809992, 12.1392298}, //
+
49982 {4.37898016, 12.1391697}, //
+
49983 {4.37994003, 12.13906}, //
+
49984 {4.38098001, 12.1389103}, //
+
49985 {4.38211012, 12.13873}, //
+
49986 {4.38331985, 12.1384897}, //
+
49987 {4.38462019, 12.1382198}, //
+
49988 {4.38599014, 12.1379099}, //
+
49989 {4.38745022, 12.1375504}, //
+
49990 {4.38899994, 12.1371698}, //
+
49991 {4.39063978, 12.1367903}, //
+
49992 {4.39236021, 12.1364202}, //
+
49993 {4.39415979, 12.1360397}, //
+
49994 {4.39603996, 12.1356602}, //
+
49995 {4.39800978, 12.1352797}, //
+
49996 {4.40005016, 12.1349096}, //
+
49997 {4.40219021, 12.1345301}, //
+
49998 {4.40439987, 12.1341496}, //
+
49999 {4.4066, 12.13377}, //
+
50000 {4.40867996, 12.1333904}, //
+
50001 {4.41063023, 12.1330204}, //
+
50002 {4.41244984, 12.1326399}, //
+
50003 {4.41414022, 12.1322603}, //
+
50004 {4.41570997, 12.1318798}, //
+
50005 {4.41715002, 12.1315098}, //
+
50006 {4.41845989, 12.1311302}, //
+
50007 {4.41965008, 12.1307497}, //
+
50008 {4.42248011, 12.1298304}, //
+
50009 {4.4231801, 12.1296101}, //
+
50010 {4.42373991, 12.1294298}, //
+
50011 {4.42418003, 12.1292801}, //
+
50012 {4.42449999, 12.12918}, //
+
50013 {4.42474985, 12.1290998}, //
+
50014 {4.42815018, 12.09515}, //
+
50015 {4.42793989, 12.09377}, //
+
50016 {4.42730999, 12.0926504}, //
+
50017 {4.42627001, 12.0917702}, //
+
50018 {4.42479992, 12.0911503}, //
+
50019 {4.42292023, 12.0907698}, //
+
50020 {4.42061996, 12.0906401}, //
+
50021 });
+
50022 polys.push_back({
+
50023 {1.12230003, 12.1019497}, //
+
50024 {1.12249005, 12.1023302}, //
+
50025 {1.12264001, 12.1026201}, //
+
50026 {1.12282002, 12.1029997}, //
+
50027 {1.12305999, 12.1034603}, //
+
50028 {1.12333, 12.1040096}, //
+
50029 {1.12363994, 12.10464}, //
+
50030 {1.12399995, 12.1053495}, //
+
50031 {1.12442005, 12.1060801}, //
+
50032 {1.12492001, 12.1067801}, //
+
50033 {1.12550998, 12.1074305}, //
+
50034 {1.12617004, 12.1080399}, //
+
50035 {1.12691998, 12.1085997}, //
+
50036 {1.12776005, 12.1091299}, //
+
50037 {1.12866998, 12.1096096}, //
+
50038 {1.12967002, 12.1100502}, //
+
50039 {1.13074994, 12.1104498}, //
+
50040 {1.13186002, 12.1108103}, //
+
50041 {1.13293004, 12.1111202}, //
+
50042 {1.13396001, 12.1113901}, //
+
50043 {1.13495004, 12.1116304}, //
+
50044 {1.13589001, 12.1118097}, //
+
50045 {1.13679004, 12.1119604}, //
+
50046 {1.13765001, 12.1120701}, //
+
50047 {1.13847005, 12.1121302}, //
+
50048 {1.13925004, 12.1121502}, //
+
50049 {1.1408, 12.1129398}, //
+
50050 {1.14243996, 12.1138096}, //
+
50051 {1.14416003, 12.1147699}, //
+
50052 {1.14595997, 12.1158104}, //
+
50053 {1.14784002, 12.1169395}, //
+
50054 {1.14980996, 12.1181498}, //
+
50055 {1.15184999, 12.1194496}, //
+
50056 {1.15399003, 12.1208296}, //
+
50057 {1.15620005, 12.1223001}, //
+
50058 {1.15701997, 12.1230803}, //
+
50059 {1.15796006, 12.1238899}, //
+
50060 {1.15902996, 12.1247501}, //
+
50061 {1.16022003, 12.1256504}, //
+
50062 {1.16154003, 12.1265898}, //
+
50063 {1.16297996, 12.1275702}, //
+
50064 {1.16454005, 12.1285896}, //
+
50065 {1.16622996, 12.1296501}, //
+
50066 {1.16805005, 12.1307497}, //
+
50067 {1.16991997, 12.1318197}, //
+
50068 {1.17174006, 12.13276}, //
+
50069 {1.17352998, 12.1335802}, //
+
50070 {1.17526996, 12.1342802}, //
+
50071 {1.17697001, 12.13484}, //
+
50072 {1.17862999, 12.1352797}, //
+
50073 {1.18024004, 12.1356001}, //
+
50074 {1.18182003, 12.1357899}, //
+
50075 {1.18334997, 12.13585}, //
+
50076 {1.20365, 12.13585}, //
+
50077 {1.20660996, 12.13587}, //
+
50078 {1.20943999, 12.1359301}, //
+
50079 {1.21213996, 12.1360397}, //
+
50080 {1.21472001, 12.1361904}, //
+
50081 {1.21717, 12.1363697}, //
+
50082 {1.21949005, 12.13661}, //
+
50083 {1.22169006, 12.1368799}, //
+
50084 {1.22376001, 12.1371899}, //
+
50085 {1.22570002, 12.1375504}, //
+
50086 {1.22748005, 12.1379099}, //
+
50087 {1.22906005, 12.1382198}, //
+
50088 {1.23326004, 12.13906}, //
+
50089 {1.23378003, 12.1391697}, //
+
50090 {1.23409998, 12.1392298}, //
+
50091 {1.2342, 12.1392498}, //
+
50092 {1.23491001, 12.1384697}, //
+
50093 {1.23554003, 12.1376495}, //
+
50094 {1.23608994, 12.1367903}, //
+
50095 {1.23654997, 12.13589}, //
+
50096 {1.23693001, 12.1349497}, //
+
50097 {1.23722005, 12.1339598}, //
+
50098 {1.23729002, 12.1336298}, //
+
50099 {1.23759997, 12.1264496}, //
+
50100 {1.23759997, 12.1019497}, //
+
50101 {1.22064996, 12.0985498}, //
+
50102 {1.21976995, 12.0985899}, //
+
50103 {1.21863997, 12.0987196}, //
+
50104 {1.21724999, 12.0989304}, //
+
50105 {1.21561003, 12.0992203}, //
+
50106 {1.21371996, 12.0995998}, //
+
50107 {1.21158004, 12.1000605}, //
+
50108 {1.20919001, 12.1006098}, //
+
50109 {1.20655, 12.1012402}, //
+
50110 {1.20365, 12.1019497}, //
+
50111 {1.20209002, 12.1026602}, //
+
50112 {1.20039999, 12.1032896}, //
+
50113 {1.19858003, 12.1038399}, //
+
50114 {1.19663, 12.1042995}, //
+
50115 {1.19456005, 12.1046801}, //
+
50116 {1.19236004, 12.10497}, //
+
50117 {1.19002998, 12.1051798}, //
+
50118 {1.18757999, 12.1053104}, //
+
50119 {1.18499994, 12.1053495}, //
+
50120 {1.18243003, 12.1052704}, //
+
50121 {1.17999005, 12.10501}, //
+
50122 {1.17767, 12.1045904}, //
+
50123 {1.17546999, 12.1040096}, //
+
50124 {1.17341006, 12.1032495}, //
+
50125 {1.17147005, 12.1023302}, //
+
50126 {1.16964996, 12.1012402}, //
+
50127 {1.16796005, 12.0999804}, //
+
50128 {1.16639996, 12.0985498}, //
+
50129 {1.16564, 12.0978003}, //
+
50130 {1.16489005, 12.0970402}, //
+
50131 {1.16412997, 12.0962896}, //
+
50132 {1.16338003, 12.09554}, //
+
50133 {1.16261995, 12.0947905}, //
+
50134 {1.16187, 12.0940399}, //
+
50135 {1.16111004, 12.0932903}, //
+
50136 {1.16035998, 12.0925503}, //
+
50137 {1.15960002, 12.0917997}, //
+
50138 {1.15737998, 12.0903101}, //
+
50139 {1.15523005, 12.0888596}, //
+
50140 {1.15318, 12.0874596}, //
+
50141 {1.15120006, 12.0860901}, //
+
50142 {1.14932001, 12.0847702}, //
+
50143 {1.14751005, 12.0834904}, //
+
50144 {1.14578998, 12.0822496}, //
+
50145 {1.14415002, 12.0810499}, //
+
50146 {1.14260006, 12.0798998}, //
+
50147 {1.14102006, 12.0788403}, //
+
50148 {1.13926005, 12.0778999}, //
+
50149 {1.13733995, 12.0770903}, //
+
50150 {1.13525999, 12.0764103}, //
+
50151 {1.13300002, 12.0758495}, //
+
50152 {1.13057995, 12.0754099}, //
+
50153 {1.12799001, 12.0750999}, //
+
50154 {1.12522995, 12.0749102}, //
+
50155 {1.12230003, 12.0748501}, //
+
50156 {1.10364997, 12.0748501}, //
+
50157 {1.10327005, 12.0748301}, //
+
50158 {1.10289001, 12.07477}, //
+
50159 {1.10251999, 12.0746603}, //
+
50160 {1.10213995, 12.0745096}, //
+
50161 {1.10176003, 12.0743303}, //
+
50162 {1.10137999, 12.07409}, //
+
50163 {1.10100996, 12.0738201}, //
+
50164 {1.10063004, 12.0735102}, //
+
50165 {1.10025001, 12.0731497}, //
+
50166 {1.09854996, 12.0714502}, //
+
50167 });
+
50168 polys.push_back({
+
50169 {3.44299006, 11.9373112}, //
+
50170 {3.44252992, 11.9376678}, //
+
50171 {3.44215989, 11.9382353}, //
+
50172 {3.44186997, 11.9390106}, //
+
50173 {3.44166994, 11.9399977}, //
+
50174 {3.44154, 11.9411936}, //
+
50175 {3.44149995, 11.9426003}, //
+
50176 {3.44149995, 11.9493504}, //
+
50177 {3.44145989, 11.950923}, //
+
50178 {3.44132996, 11.9526224}, //
+
50179 {3.44111991, 11.9544439}, //
+
50180 {3.44082999, 11.9563923}, //
+
50181 {3.44044995, 11.9584637}, //
+
50182 {3.43999004, 11.9606609}, //
+
50183 {3.43944001, 11.9629831}, //
+
50184 {3.43881011, 11.9654293}, //
+
50185 {3.4381001, 11.9680004}, //
+
50186 {3.43734002, 11.9705811}, //
+
50187 {3.43658996, 11.9730349}, //
+
50188 {3.43583012, 11.9753609}, //
+
50189 {3.43508005, 11.97756}, //
+
50190 {3.43431997, 11.9796333}, //
+
50191 {3.43356991, 11.9815779}, //
+
50192 {3.43281007, 11.9833956}, //
+
50193 {3.43206, 11.9850864}, //
+
50194 {3.43129992, 11.9866505}, //
+
50195 {3.4305501, 11.9880772}, //
+
50196 {3.42979002, 11.989336}, //
+
50197 {3.42903996, 11.990428}, //
+
50198 {3.42828989, 11.9913511}, //
+
50199 {3.42754006, 11.9921074}, //
+
50200 {3.42679, 11.9926939}, //
+
50201 {3.42603993, 11.9931145}, //
+
50202 {3.42529988, 11.9933662}, //
+
50203 {3.42455006, 11.9934502}, //
+
50204 {3.42298007, 11.9939747}, //
+
50205 {3.42228007, 11.9942064}, //
+
50206 {3.42145991, 11.9944782}, //
+
50207 {3.41945004, 11.9951496}, //
+
50208 {3.41829991, 11.9955492}, //
+
50209 {3.41709995, 11.9959898}, //
+
50210 {3.41585994, 11.9964724}, //
+
50211 {3.41458011, 11.9969969}, //
+
50212 {3.41325998, 11.9975643}, //
+
50213 {3.41189003, 11.9981718}, //
+
50214 {3.41049004, 11.9988232}, //
+
50215 {3.40903997, 11.9995146}, //
+
50216 {3.4075501, 12.0002499}, //
+
50217 {3.40602994, 12.0010004}, //
+
50218 {3.40445995, 12.0017595}, //
+
50219 {3.40285993, 12.0025101}, //
+
50220 {3.40120006, 12.0032597}, //
+
50221 {3.39950991, 12.0040102}, //
+
50222 {3.39776993, 12.0047598}, //
+
50223 {3.39598989, 12.0055103}, //
+
50224 {3.39417005, 12.0062504}, //
+
50225 {3.39229989, 12.007}, //
+
50226 {3.39043999, 12.0077105}, //
+
50227 {3.38862991, 12.0083399}, //
+
50228 {3.38685012, 12.0088902}, //
+
50229 {3.3851099, 12.0093498}, //
+
50230 {3.38341999, 12.0097303}, //
+
50231 {3.3817699, 12.0100203}, //
+
50232 {3.38015008, 12.0102301}, //
+
50233 {3.37858009, 12.0103598}, //
+
50234 {3.37704992, 12.0103998}, //
+
50235 {3.37646008, 12.0103197}, //
+
50236 {3.37573004, 12.01021}, //
+
50237 {3.37471008, 12.0100603}, //
+
50238 {3.37177992, 12.0096397}, //
+
50239 {3.36987996, 12.0093699}, //
+
50240 {3.36769009, 12.0090599}, //
+
50241 {3.36520004, 12.0087004}, //
+
50242 {3.36255002, 12.0083399}, //
+
50243 {3.35984993, 12.0080299}, //
+
50244 {3.35711002, 12.00776}, //
+
50245 {3.35432005, 12.0075197}, //
+
50246 {3.35149002, 12.0073404}, //
+
50247 {3.34861994, 12.0071898}, //
+
50248 {3.34571004, 12.0070801}, //
+
50249 {3.34275007, 12.00702}, //
+
50250 {3.33975005, 12.007}, //
+
50251 {3.30754995, 12.007}, //
+
50252 {3.30560994, 12.00702}, //
+
50253 {3.30353999, 12.0070801}, //
+
50254 {3.3013401, 12.0071898}, //
+
50255 {3.29902005, 12.0073404}, //
+
50256 {3.29657006, 12.0075197}, //
+
50257 {3.2939899, 12.00776}, //
+
50258 {3.29129004, 12.0080299}, //
+
50259 {3.28846002, 12.0083399}, //
+
50260 {3.28550005, 12.0087004}, //
+
50261 {3.2825501, 12.0090799}, //
+
50262 {3.27973008, 12.0094604}, //
+
50263 {3.27702999, 12.0098305}, //
+
50264 {3.27445006, 12.01021}, //
+
50265 {3.27200007, 12.0105896}, //
+
50266 {3.26968002, 12.0109701}, //
+
50267 {3.2674799, 12.0113401}, //
+
50268 {3.26539993, 12.0117197}, //
+
50269 {3.26344991, 12.0121002}, //
+
50270 {3.26163006, 12.0124998}, //
+
50271 {3.25993991, 12.0129404}, //
+
50272 {3.25837994, 12.0134201}, //
+
50273 {3.25693989, 12.0139503}, //
+
50274 {3.25562, 12.0145102}, //
+
50275 {3.25443006, 12.0151196}, //
+
50276 {3.25336003, 12.01577}, //
+
50277 {3.25241995, 12.01647}, //
+
50278 {3.25160003, 12.0172005}, //
+
50279 {3.25083995, 12.0179501}, //
+
50280 {3.25008988, 12.0187101}, //
+
50281 {3.24933004, 12.0194597}, //
+
50282 {3.24857998, 12.0202103}, //
+
50283 {3.2478199, 12.0209599}, //
+
50284 {3.24707007, 12.0217104}, //
+
50285 {3.24631, 12.02246}, //
+
50286 {3.24555993, 12.0232}, //
+
50287 {3.24480009, 12.0239496}, //
+
50288 {3.24403, 12.0246801}, //
+
50289 {3.24322009, 12.0253801}, //
+
50290 {3.24236989, 12.0260296}, //
+
50291 {3.24148011, 12.0266399}, //
+
50292 {3.24054003, 12.0271997}, //
+
50293 {3.23955989, 12.02773}, //
+
50294 {3.23852992, 12.0282097}, //
+
50295 {3.2374599, 12.0286503}, //
+
50296 {3.23635006, 12.0290499}, //
+
50297 {3.2351501, 12.0294104}, //
+
50298 {3.23382998, 12.0297203}, //
+
50299 {3.23238993, 12.0299902}, //
+
50300 {3.23081994, 12.0302296}, //
+
50301 {3.22912002, 12.0304098}, //
+
50302 {3.22730994, 12.0305595}, //
+
50303 {3.22535992, 12.0306702}, //
+
50304 {3.22328997, 12.0307302}, //
+
50305 {3.22110009, 12.0307503}, //
+
50306 {3.21877003, 12.0307703}, //
+
50307 {3.21632004, 12.0308304}, //
+
50308 {3.21374011, 12.0309401}, //
+
50309 {3.21104002, 12.0310898}, //
+
50310 {3.20820999, 12.03127}, //
+
50311 {3.20526004, 12.0315104}, //
+
50312 {3.20217991, 12.0317802}, //
+
50313 {3.19898009, 12.0320902}, //
+
50314 {3.1956501, 12.0324497}, //
+
50315 {3.19230008, 12.0328503}, //
+
50316 {3.18903995, 12.0332899}, //
+
50317 {3.18585992, 12.0337696}, //
+
50318 {3.18276, 12.0342903}, //
+
50319 {3.17973995, 12.0348501}, //
+
50320 {3.17681003, 12.03545}, //
+
50321 {3.17394996, 12.0360899}, //
+
50322 {3.17119002, 12.0367804}, //
+
50323 {3.16849995, 12.0375004}, //
+
50324 {3.16591001, 12.0382299}, //
+
50325 {3.16339993, 12.0389299}, //
+
50326 {3.16096997, 12.0395803}, //
+
50327 {3.15862989, 12.0401897}, //
+
50328 {3.15636992, 12.0407495}, //
+
50329 {3.15419006, 12.0412798}, //
+
50330 {3.15209007, 12.0417604}, //
+
50331 {3.15007997, 12.0422001}, //
+
50332 {3.14814997, 12.0425997}, //
+
50333 {3.14637995, 12.0429602}, //
+
50334 {3.14480996, 12.0432701}, //
+
50335 {3.13969994, 12.0443001}, //
+
50336 {3.13969994, 12.0476999}, //
+
50337 {3.13971996, 12.0485001}, //
+
50338 {3.13978004, 12.0493803}, //
+
50339 {3.13988996, 12.0503397}, //
+
50340 {3.14003992, 12.0513802}, //
+
50341 {3.14021993, 12.0525103}, //
+
50342 {3.14046001, 12.0537205}, //
+
50343 {3.1407299, 12.0550203}, //
+
50344 {3.14104009, 12.0563898}, //
+
50345 {3.1414001, 12.0578499}, //
+
50346 {3.1417799, 12.0593204}, //
+
50347 {3.14215994, 12.0607004}, //
+
50348 {3.14252996, 12.0620098}, //
+
50349 {3.14291, 12.06322}, //
+
50350 {3.14329004, 12.0643597}, //
+
50351 {3.14367008, 12.0654097}, //
+
50352 {3.14404011, 12.06637}, //
+
50353 {3.14441991, 12.0672503}, //
+
50354 {3.14479995, 12.0680504}, //
+
50355 {3.14520001, 12.0687599}, //
+
50356 {3.1456399, 12.0693903}, //
+
50357 {3.14612007, 12.0699396}, //
+
50358 {3.14665008, 12.0704002}, //
+
50359 {3.14720988, 12.0707798}, //
+
50360 {3.14782, 12.0710697}, //
+
50361 {3.14846992, 12.0712795}, //
+
50362 {3.14916992, 12.0714102}, //
+
50363 {3.14989996, 12.0714502}, //
+
50364 {3.15330005, 12.0714502}, //
+
50365 {3.15400004, 12.0706902}, //
+
50366 {3.15461993, 12.0699396}, //
+
50367 {3.15515995, 12.0691795}, //
+
50368 {3.1556201, 12.0684299}, //
+
50369 {3.15598989, 12.0676699}, //
+
50370 {3.15628004, 12.0669203}, //
+
50371 {3.15648007, 12.0661602}, //
+
50372 {3.15661001, 12.0654097}, //
+
50373 {3.15665007, 12.0646496}, //
+
50374 {3.15746999, 12.0624599}, //
+
50375 {3.15841007, 12.0603905}, //
+
50376 {3.15948009, 12.0584402}, //
+
50377 {3.16067004, 12.0566301}, //
+
50378 {3.16198993, 12.0549297}, //
+
50379 {3.16342998, 12.05336}, //
+
50380 {3.16498995, 12.0519199}, //
+
50381 {3.1666801, 12.0506001}, //
+
50382 {3.16849995, 12.0494003}, //
+
50383 {3.17049003, 12.0483704}, //
+
50384 {3.17269993, 12.0475502}, //
+
50385 {3.1751101, 12.0469398}, //
+
50386 {3.17772007, 12.0465498}, //
+
50387 {3.1805501, 12.04636}, //
+
50388 {3.18358994, 12.04638}, //
+
50389 {3.18683004, 12.0466099}, //
+
50390 {3.19028997, 12.0470505}, //
+
50391 {3.19394994, 12.0476999}, //
+
50392 {3.27195001, 12.0476999}, //
+
50393 {3.27857995, 12.0476799}, //
+
50394 {3.28491998, 12.0476198}, //
+
50395 {3.29097009, 12.0475101}, //
+
50396 {3.29672003, 12.0473604}, //
+
50397 {3.30218005, 12.0471802}, //
+
50398 {3.30734992, 12.0469398}, //
+
50399 {3.31223011, 12.04667}, //
+
50400 {3.31680989, 12.04636}, //
+
50401 {3.3211, 12.0459995}, //
+
50402 {3.32522011, 12.0455999}, //
+
50403 {3.32929993, 12.0451603}, //
+
50404 {3.33333993, 12.0446796}, //
+
50405 {3.33734012, 12.0441504}, //
+
50406 {3.34130001, 12.0435896}, //
+
50407 {3.34521008, 12.0429802}, //
+
50408 {3.34908009, 12.0423298}, //
+
50409 {3.35291004, 12.0416298}, //
+
50410 {3.35669994, 12.0409002}, //
+
50411 {3.35746002, 12.0402002}, //
+
50412 {3.35821009, 12.0395803}, //
+
50413 {3.35896993, 12.0390396}, //
+
50414 {3.35971999, 12.0385799}, //
+
50415 {3.36048007, 12.0382099}, //
+
50416 {3.3612299, 12.03792}, //
+
50417 {3.36198997, 12.0377197}, //
+
50418 {3.36274004, 12.03759}, //
+
50419 {3.36350012, 12.03755}, //
+
50420 {3.36643004, 12.0375099}, //
+
50421 {3.36918998, 12.0373802}, //
+
50422 {3.37177992, 12.0371704}, //
+
50423 {3.37420988, 12.0368795}, //
+
50424 {3.37647009, 12.0365}, //
+
50425 {3.37857008, 12.0360403}, //
+
50426 {3.38049006, 12.03549}, //
+
50427 {3.38226008, 12.0348597}, //
+
50428 {3.3838501, 12.0341501}, //
+
50429 {3.3875699, 12.03339}, //
+
50430 {3.39122009, 12.0326405}, //
+
50431 {3.39476991, 12.0318804}, //
+
50432 {3.3982501, 12.0311298}, //
+
50433 {3.40162992, 12.0303698}, //
+
50434 {3.40493989, 12.0296202}, //
+
50435 {3.40815997, 12.0288601}, //
+
50436 {3.41129994, 12.0281096}, //
+
50437 {3.41435003, 12.0273504}, //
+
50438 {3.4172399, 12.0265102}, //
+
50439 {3.4198699, 12.0255098}, //
+
50440 {3.42226005, 12.0243301}, //
+
50441 {3.42439008, 12.0229902}, //
+
50442 {3.42627001, 12.0214901}, //
+
50443 {3.42791009, 12.0198202}, //
+
50444 {3.42929006, 12.0179796}, //
+
50445 {3.43041992, 12.0159702}, //
+
50446 {3.43129992, 12.0137997}, //
+
50447 {3.43277001, 12.01227}, //
+
50448 {3.43414998, 12.0106897}, //
+
50449 {3.43546009, 12.0090799}, //
+
50450 {3.43667006, 12.0074196}, //
+
50451 {3.43780994, 12.0057201}, //
+
50452 {3.43885994, 12.0039797}, //
+
50453 {3.43982005, 12.0021896}, //
+
50454 {3.44070005, 12.00037}, //
+
50455 {3.44149995, 11.9984999}, //
+
50456 {3.44225001, 11.9966431}, //
+
50457 {3.44301009, 11.9948263}, //
+
50458 {3.44375992, 11.9930496}, //
+
50459 {3.44450998, 11.9913149}, //
+
50460 {3.44526005, 11.9896202}, //
+
50461 {3.44601011, 11.9879665}, //
+
50462 {3.44675994, 11.9863539}, //
+
50463 {3.44749999, 11.9847813}, //
+
50464 {3.44825006, 11.9832497}, //
+
50465 {3.44958997, 11.9805832}, //
+
50466 {3.45014, 11.9794998}, //
+
50467 {3.45097995, 11.9778328}, //
+
50468 {3.4512701, 11.9772501}, //
+
50469 {3.45147991, 11.9768333}, //
+
50470 {3.45161009, 11.9765825}, //
+
50471 {3.4516499, 11.9764996}, //
+
50472 {3.45190001, 11.9767494}, //
+
50473 {3.45221996, 11.9770613}, //
+
50474 {3.45321989, 11.9780588}, //
+
50475 {3.45391989, 11.9787436}, //
+
50476 {3.45567989, 11.9804897}, //
+
50477 {3.45674992, 11.9815502}, //
+
50478 {3.45788002, 11.9827251}, //
+
50479 {3.45900989, 11.9839849}, //
+
50480 {3.46013999, 11.9853277}, //
+
50481 {3.46127009, 11.9867554}, //
+
50482 {3.46239996, 11.988266}, //
+
50483 {3.46353006, 11.9898605}, //
+
50484 {3.46464992, 11.99154}, //
+
50485 {3.46578002, 11.9933033}, //
+
50486 {3.46690011, 11.9951496}, //
+
50487 {3.46800995, 11.9970169}, //
+
50488 {3.46907997, 11.9988413}, //
+
50489 {3.47010994, 12.0006199}, //
+
50490 {3.47110009, 12.0023603}, //
+
50491 {3.47203994, 12.0040503}, //
+
50492 {3.47293997, 12.0057096}, //
+
50493 {3.47379994, 12.0073099}, //
+
50494 {3.4746201, 12.0088797}, //
+
50495 {3.47539997, 12.0103998}, //
+
50496 {3.47610998, 12.0118704}, //
+
50497 {3.47673988, 12.0132504}, //
+
50498 {3.47728992, 12.0145597}, //
+
50499 {3.47775006, 12.01577}, //
+
50500 {3.4781301, 12.0169096}, //
+
50501 {3.47842002, 12.0179596}, //
+
50502 {3.47863007, 12.0189199}, //
+
50503 {3.47876, 12.0198002}, //
+
50504 {3.47880006, 12.0206003}, //
+
50505 {3.47871995, 12.0221205}, //
+
50506 {3.47846007, 12.0236797}, //
+
50507 {3.47803998, 12.0252895}, //
+
50508 {3.47745991, 12.0269403}, //
+
50509 {3.47670007, 12.0286198}, //
+
50510 {3.47578001, 12.0303602}, //
+
50511 {3.47468996, 12.0321302}, //
+
50512 {3.47342992, 12.0339403}, //
+
50513 {3.47199988, 12.0358}, //
+
50514 {3.47048998, 12.0376701}, //
+
50515 {3.46898007, 12.0394897}, //
+
50516 {3.46746993, 12.0412798}, //
+
50517 {3.46597004, 12.0430202}, //
+
50518 {3.4644599, 12.0447197}, //
+
50519 {3.46296, 12.04638}, //
+
50520 {3.4614501, 12.0479898}, //
+
50521 {3.45994997, 12.0495701}, //
+
50522 {3.45845008, 12.0510998}, //
+
50523 {3.45631003, 12.05194}, //
+
50524 {3.45442009, 12.0529404}, //
+
50525 {3.45278001, 12.0541201}, //
+
50526 {3.45140004, 12.05546}, //
+
50527 {3.45025992, 12.0569601}, //
+
50528 {3.44937992, 12.05863}, //
+
50529 {3.44875002, 12.0604696}, //
+
50530 {3.44837999, 12.06248}, //
+
50531 {3.44825006, 12.0646496}, //
+
50532 {3.44749999, 12.0653801}, //
+
50533 {3.44675994, 12.0660801}, //
+
50534 {3.44601011, 12.0667295}, //
+
50535 {3.44526005, 12.0673399}, //
+
50536 {3.44450998, 12.0678997}, //
+
50537 {3.44375992, 12.0684299}, //
+
50538 {3.44301009, 12.0689096}, //
+
50539 {3.44225001, 12.0693502}, //
+
50540 {3.44149995, 12.0697498}, //
+
50541 {3.44070005, 12.0700598}, //
+
50542 {3.43982005, 12.0702496}, //
+
50543 {3.43885994, 12.0703201}, //
+
50544 {3.43780994, 12.0702496}, //
+
50545 {3.43667006, 12.0700598}, //
+
50546 {3.43546009, 12.0697498}, //
+
50547 {3.43414998, 12.0693102}, //
+
50548 {3.43277001, 12.0687399}, //
+
50549 {3.43129992, 12.0680504}, //
+
50550 {3.42528009, 12.0646601}, //
+
50551 {3.41925001, 12.0620203}, //
+
50552 {3.41322994, 12.0601397}, //
+
50553 {3.4072001, 12.0590096}, //
+
50554 {3.40117002, 12.05863}, //
+
50555 {3.39513993, 12.0590096}, //
+
50556 {3.38911009, 12.0601301}, //
+
50557 {3.38308001, 12.0620203}, //
+
50558 {3.37704992, 12.0646496}, //
+
50559 {3.37365007, 12.0646496}, //
+
50560 {3.36908007, 12.0661402}, //
+
50561 {3.36437011, 12.0675898}, //
+
50562 {3.35953999, 12.0689898}, //
+
50563 {3.35458994, 12.0703497}, //
+
50564 {3.34949994, 12.0716696}, //
+
50565 {3.34429002, 12.0729399}, //
+
50566 {3.33895993, 12.0741701}, //
+
50567 {3.33348989, 12.0753603}, //
+
50568 {3.32789993, 12.0764999}, //
+
50569 {3.32226992, 12.0775299}, //
+
50570 {3.31667995, 12.0783501}, //
+
50571 {3.31113005, 12.0789604}, //
+
50572 {3.30561996, 12.0793505}, //
+
50573 {3.30015993, 12.0795403}, //
+
50574 {3.29473996, 12.0795202}, //
+
50575 {3.28937006, 12.0792904}, //
+
50576 {3.28403997, 12.0788498}, //
+
50577 {3.27874994, 12.0782003}, //
+
50578 {3.26832008, 12.0754004}, //
+
50579 {3.25814009, 12.0730104}, //
+
50580 {3.24821997, 12.0710497}, //
+
50581 {3.23853993, 12.0695}, //
+
50582 {3.22912002, 12.0683804}, //
+
50583 {3.21994996, 12.0676699}, //
+
50584 {3.21103001, 12.06738}, //
+
50585 {3.20235991, 12.0675001}, //
+
50586 {3.19394994, 12.0680504}, //
+
50587 {3.19168997, 12.0688}, //
+
50588 {3.18944001, 12.0695601}, //
+
50589 {3.1826601, 12.0718098}, //
+
50590 {3.18038988, 12.0725603}, //
+
50591 {3.17812991, 12.0733099}, //
+
50592 {3.17586994, 12.0740499}, //
+
50593 {3.17359996, 12.0747995}, //
+
50594 {3.17141008, 12.0755796}, //
+
50595 {3.1693399, 12.0763998}, //
+
50596 {3.16739011, 12.07726}, //
+
50597 {3.16558003, 12.0781603}, //
+
50598 {3.16388011, 12.0790997}, //
+
50599 {3.16230989, 12.0800896}, //
+
50600 {3.16087008, 12.0811195}, //
+
50601 {3.15954995, 12.0821896}, //
+
50602 {3.15834999, 12.0832996}, //
+
50603 {3.1563499, 12.08531}, //
+
50604 {3.15553999, 12.0861301}, //
+
50605 {3.15429997, 12.0873899}, //
+
50606 {3.15386009, 12.0878296}, //
+
50607 {3.15354991, 12.08815}, //
+
50608 {3.15335989, 12.0883398}, //
+
50609 {3.15330005, 12.0883999}, //
+
50610 {3.16004992, 12.1053495}, //
+
50611 {3.17190003, 12.1053495}, //
+
50612 {3.17462993, 12.1053305}, //
+
50613 {3.17752004, 12.1052704}, //
+
50614 {3.1805799, 12.1051598}, //
+
50615 {3.18381, 12.10501}, //
+
50616 {3.18721008, 12.1048298}, //
+
50617 {3.19076991, 12.1045904}, //
+
50618 {3.19448996, 12.1043196}, //
+
50619 {3.19839001, 12.1040096}, //
+
50620 {3.20245004, 12.1036501}, //
+
50621 {3.20653009, 12.1032495}, //
+
50622 {3.21048999, 12.1028099}, //
+
50623 {3.21431994, 12.1023302}, //
+
50624 {3.21801996, 12.1018}, //
+
50625 {3.22160006, 12.1012402}, //
+
50626 {3.22504997, 12.1006298}, //
+
50627 {3.22837996, 12.0999804}, //
+
50628 {3.23158002, 12.0992804}, //
+
50629 {3.2346499, 12.0985498}, //
+
50630 {3.23906994, 12.0971098}, //
+
50631 {3.24326992, 12.0958004}, //
+
50632 {3.24727011, 12.0946102}, //
+
50633 {3.25106001, 12.0935497}, //
+
50634 {3.2546401, 12.0926104}, //
+
50635 {3.25800991, 12.0917902}, //
+
50636 {3.2611599, 12.0910997}, //
+
50637 {3.26411009, 12.0905399}, //
+
50638 {3.26684999, 12.0901003}, //
+
50639 {3.27874994, 12.0883999}, //
+
50640 {3.27865005, 12.0891504}, //
+
50641 {3.27833009, 12.0899096}, //
+
50642 {3.2778101, 12.0906601}, //
+
50643 {3.27707005, 12.0914097}, //
+
50644 {3.27612996, 12.0921602}, //
+
50645 {3.27497005, 12.0929098}, //
+
50646 {3.27361012, 12.0936604}, //
+
50647 {3.27203012, 12.0944004}, //
+
50648 {3.27025008, 12.09515}, //
+
50649 {3.26834989, 12.0959101}, //
+
50650 {3.26641011, 12.0966597}, //
+
50651 {3.26442003, 12.0974197}, //
+
50652 {3.2623899, 12.0981703}, //
+
50653 {3.26031995, 12.0989304}, //
+
50654 {3.25820994, 12.0996799}, //
+
50655 {3.25605011, 12.10044}, //
+
50656 {3.25384998, 12.1011896}, //
+
50657 {3.25160003, 12.1019497}, //
+
50658 {3.24932003, 12.1026802}, //
+
50659 {3.24699998, 12.1033802}, //
+
50660 {3.24464011, 12.1040297}, //
+
50661 {3.24222994, 12.10464}, //
+
50662 {3.23977995, 12.1051998}, //
+
50663 {3.23728991, 12.1057301}, //
+
50664 {3.23475003, 12.1062098}, //
+
50665 {3.2321701, 12.1066504}, //
+
50666 {3.22954988, 12.1070499}, //
+
50667 {3.22702003, 12.1074104}, //
+
50668 {3.22469997, 12.1077204}, //
+
50669 {3.22258997, 12.1079903}, //
+
50670 {3.22069001, 12.1082296}, //
+
50671 {3.21899009, 12.1084099}, //
+
50672 {3.21750998, 12.1085596}, //
+
50673 {3.21622992, 12.1086702}, //
+
50674 {3.21515989, 12.1087303}, //
+
50675 {3.21429992, 12.1087503}, //
+
50676 {3.21275997, 12.1094799}, //
+
50677 {3.2111299, 12.1101704}, //
+
50678 {3.20941997, 12.1108198}, //
+
50679 {3.20761991, 12.1114302}, //
+
50680 {3.20573997, 12.11199}, //
+
50681 {3.20376992, 12.1125097}, //
+
50682 {3.20170999, 12.1129799}, //
+
50683 {3.19956994, 12.11341}, //
+
50684 {3.19735003, 12.1138}, //
+
50685 {3.19513988, 12.1142197}, //
+
50686 {3.19300008, 12.1147203}, //
+
50687 {3.19095993, 12.1153097}, //
+
50688 {3.18899012, 12.1159801}, //
+
50689 {3.18710995, 12.1167402}, //
+
50690 {3.18530989, 12.1175804}, //
+
50691 {3.18358994, 12.1184998}, //
+
50692 {3.18195009, 12.1195097}, //
+
50693 {3.18039989, 12.1205997}, //
+
50694 {3.17892003, 12.1216898}, //
+
50695 {3.17747998, 12.1226997}, //
+
50696 {3.17607999, 12.12362}, //
+
50697 {3.17473006, 12.1244602}, //
+
50698 {3.17340994, 12.1252203}, //
+
50699 {3.17213011, 12.1258898}, //
+
50700 {3.17090011, 12.1264801}, //
+
50701 {3.16969991, 12.1269798}, //
+
50702 {3.16855001, 12.1274004}, //
+
50703 {3.16571999, 12.1283398}, //
+
50704 {3.1637001, 12.1290197}, //
+
50705 {3.16351008, 12.1290798}, //
+
50706 {3.16345, 12.1290998}, //
+
50707 {3.21429992, 12.1290998}, //
+
50708 {3.2137301, 12.1290598}, //
+
50709 {3.21354008, 12.1289301}, //
+
50710 {3.2137301, 12.1287203}, //
+
50711 {3.2142899, 12.1284304}, //
+
50712 {3.21522999, 12.1280499}, //
+
50713 {3.2165401, 12.1275902}, //
+
50714 {3.21824002, 12.1270399}, //
+
50715 {3.22029996, 12.1264095}, //
+
50716 {3.22274995, 12.1257}, //
+
50717 {3.22546005, 12.1248999}, //
+
50718 {3.22829008, 12.1240196}, //
+
50719 {3.23124003, 12.1230602}, //
+
50720 {3.23432994, 12.1220102}, //
+
50721 {3.23752999, 12.1208696}, //
+
50722 {3.24085999, 12.1196604}, //
+
50723 {3.24431992, 12.11835}, //
+
50724 {3.24790001, 12.1169701}, //
+
50725 {3.25160003, 12.1155005}, //
+
50726 {3.25686002, 12.1140003}, //
+
50727 {3.26206994, 12.1125002}, //
+
50728 {3.26724005, 12.1109896}, //
+
50729 {3.2723701, 12.1094904}, //
+
50730 {3.27745008, 12.1079798}, //
+
50731 {3.28249002, 12.1064796}, //
+
50732 {3.28748989, 12.10497}, //
+
50733 {3.29243994, 12.1034603}, //
+
50734 {3.29734993, 12.1019497}, //
+
50735 {3.30209994, 12.1004801}, //
+
50736 {3.30656004, 12.0991001}, //
+
50737 {3.31072998, 12.0978003}, //
+
50738 {3.31461, 12.09659}, //
+
50739 {3.3181901, 12.0954599}, //
+
50740 {3.32148004, 12.0944204}, //
+
50741 {3.32448006, 12.0934601}, //
+
50742 {3.32718992, 12.0925903}, //
+
50743 {3.3296001, 12.0917997}, //
+
50744 {3.33299994, 12.0917997}, //
+
50745 {3.33890009, 12.0882397}, //
+
50746 {3.34454012, 12.0851002}, //
+
50747 {3.34994006, 12.0823803}, //
+
50748 {3.35507989, 12.08008}, //
+
50749 {3.35998011, 12.0782003}, //
+
50750 {3.36461997, 12.0767298}, //
+
50751 {3.36901999, 12.0756903}, //
+
50752 {3.37315989, 12.0750599}, //
+
50753 {3.37704992, 12.0748501}, //
+
50754 {3.39065003, 12.0748501}, //
+
50755 {3.39209008, 12.0748301}, //
+
50756 {3.39339995, 12.07477}, //
+
50757 {3.3945899, 12.0746603}, //
+
50758 {3.39564991, 12.0745096}, //
+
50759 {3.39658999, 12.0743303}, //
+
50760 {3.39740992, 12.07409}, //
+
50761 {3.3980999, 12.0738201}, //
+
50762 {3.39865994, 12.0735102}, //
+
50763 {3.39910007, 12.0731497}, //
+
50764 {3.39946008, 12.0728397}, //
+
50765 {3.39977002, 12.07265}, //
+
50766 {3.40003991, 12.0725803}, //
+
50767 {3.40028, 12.07265}, //
+
50768 {3.40046, 12.0728397}, //
+
50769 {3.40060997, 12.0731497}, //
+
50770 {3.40071988, 12.0735903}, //
+
50771 {3.40077996, 12.0741596}, //
+
50772 {3.40079999, 12.0748501}, //
+
50773 {3.40089989, 12.0748701}, //
+
50774 {3.40174007, 12.0750303}, //
+
50775 {3.40247011, 12.0751801}, //
+
50776 {3.40340996, 12.0753603}, //
+
50777 {3.40456009, 12.0755796}, //
+
50778 {3.40591002, 12.0758495}, //
+
50779 {3.40748, 12.0761499}, //
+
50780 {3.40925002, 12.0764999}, //
+
50781 {3.41115999, 12.0768805}, //
+
50782 {3.41311002, 12.07726}, //
+
50783 {3.4151001, 12.07763}, //
+
50784 {3.41712999, 12.0780096}, //
+
50785 {3.41919994, 12.0783901}, //
+
50786 {3.42131996, 12.0787697}, //
+
50787 {3.42347002, 12.0791397}, //
+
50788 {3.42565989, 12.0795202}, //
+
50789 {3.42790008, 12.0798998}, //
+
50790 {3.43011999, 12.0802603}, //
+
50791 {3.43226004, 12.0805702}, //
+
50792 {3.43431997, 12.0808401}, //
+
50793 {3.43629003, 12.0810804}, //
+
50794 {3.43816996, 12.0812597}, //
+
50795 {3.43997002, 12.0814104}, //
+
50796 {3.44167995, 12.0815201}, //
+
50797 {3.44331002, 12.0815802}, //
+
50798 {3.44484997, 12.0816002}, //
+
50799 {3.45845008, 12.0816002}, //
+
50800 {3.45919991, 12.0815401}, //
+
50801 {3.45995998, 12.0813503}, //
+
50802 {3.46071005, 12.0810299}, //
+
50803 {3.46146011, 12.0805902}, //
+
50804 {3.46220994, 12.0800304}, //
+
50805 {3.46296, 12.0793304}, //
+
50806 {3.46371007, 12.0785103}, //
+
50807 {3.46444988, 12.07757}, //
+
50808 {3.46519995, 12.0764999}, //
+
50809 {3.46596003, 12.0753098}, //
+
50810 {3.46671009, 12.0740004}, //
+
50811 {3.46746993, 12.0725603}, //
+
50812 {3.46822, 12.0709896}, //
+
50813 {3.46898007, 12.0692997}, //
+
50814 {3.4697299, 12.0674801}, //
+
50815 {3.47048998, 12.0655298}, //
+
50816 {3.47124004, 12.0634499}, //
+
50817 {3.47199988, 12.0612497}, //
+
50818 {3.47274995, 12.0590601}, //
+
50819 {3.47351003, 12.0569897}, //
+
50820 {3.47426009, 12.0550404}, //
+
50821 {3.47500992, 12.0532303}, //
+
50822 {3.47575998, 12.0515299}, //
+
50823 {3.47651005, 12.0499601}, //
+
50824 {3.47726011, 12.0485201}, //
+
50825 {3.47799993, 12.0472002}, //
+
50826 {3.47874999, 12.0459995}, //
+
50827 {3.4800899, 12.0439901}, //
+
50828 {3.48063993, 12.04317}, //
+
50829 {3.48147988, 12.0419102}, //
+
50830 {3.48211002, 12.0409603}, //
+
50831 {3.48215008, 12.0409002}, //
+
50832 {3.48887992, 12.0274897}, //
+
50833 {3.48867989, 12.0269899}, //
+
50834 {3.48837996, 12.0265903}, //
+
50835 {3.48794007, 12.0260096}, //
+
50836 {3.48738003, 12.0252504}, //
+
50837 {3.48586011, 12.0232401}, //
+
50838 {3.48492002, 12.0219803}, //
+
50839 {3.48385, 12.0205498}, //
+
50840 {3.48272991, 12.0190096}, //
+
50841 {3.48160005, 12.0173798}, //
+
50842 {3.48047996, 12.0156698}, //
+
50843 {3.47935009, 12.0138702}, //
+
50844 {3.47821999, 12.0119896}, //
+
50845 {3.47708988, 12.0100203}, //
+
50846 {3.47596002, 12.0079603}, //
+
50847 {3.47482991, 12.0058203}, //
+
50848 {3.47370005, 12.0036001}, //
+
50849 {3.47258997, 12.0013399}, //
+
50850 {3.47151995, 11.9990892}, //
+
50851 {3.47048998, 11.9968328}, //
+
50852 {3.46950006, 11.9945784}, //
+
50853 {3.46855998, 11.992322}, //
+
50854 {3.46765995, 11.9900665}, //
+
50855 {3.46679997, 11.9878111}, //
+
50856 {3.46598005, 11.9855556}, //
+
50857 {3.46519995, 11.9833002}, //
+
50858 {3.46512008, 11.9829636}, //
+
50859 {3.46500993, 11.9825439}, //
+
50860 {3.46485996, 11.9819574}, //
+
50861 {3.46467996, 11.9812012}, //
+
50862 {3.46444011, 11.980278}, //
+
50863 {3.46350002, 11.9764996}, //
+
50864 {3.46308994, 11.974968}, //
+
50865 {3.46259999, 11.9733944}, //
+
50866 {3.46201992, 11.9717779}, //
+
50867 {3.46134996, 11.9701204}, //
+
50868 {3.4605999, 11.96842}, //
+
50869 {3.45976996, 11.9666777}, //
+
50870 {3.45884991, 11.9648943}, //
+
50871 {3.45783997, 11.963068}, //
+
50872 {3.45674992, 11.9611998}, //
+
50873 {3.4556601, 11.959343}, //
+
50874 {3.45464993, 11.9575262}, //
+
50875 {3.45373011, 11.9557505}, //
+
50876 {3.45288992, 11.9540148}, //
+
50877 {3.45213008, 11.9523201}, //
+
50878 {3.45145988, 11.9506674}, //
+
50879 {3.45087004, 11.9490538}, //
+
50880 {3.45037007, 11.9474812}, //
+
50881 {3.44994998, 11.9459496}, //
+
50882 {3.44954991, 11.9445124}, //
+
50883 {3.44911003, 11.9431992}, //
+
50884 {3.44863009, 11.9420109}, //
+
50885 {3.44810009, 11.9409475}, //
+
50886 {3.44754004, 11.9400091}, //
+
50887 {3.44692993, 11.9391937}, //
+
50888 {3.44628, 11.9385052}, //
+
50889 {3.44558001, 11.9379396}, //
+
50890 {3.44484997, 11.9375}, //
+
50891 {3.44414997, 11.9372272}, //
+
50892 {3.44353008, 11.9371643}, //
+
50893 });
+
50894 polys.push_back({
+
50895 {4.43666983, 11.9574833}, //
+
50896 {4.43572998, 11.9582329}, //
+
50897 {4.43456984, 11.9591503}, //
+
50898 {4.4332099, 11.9602327}, //
+
50899 {4.43163013, 11.961483}, //
+
50900 {4.4298501, 11.9629002}, //
+
50901 {4.42788982, 11.9644518}, //
+
50902 {4.42575979, 11.9660883}, //
+
50903 {4.42346001, 11.9678059}, //
+
50904 {4.42098999, 11.9696064}, //
+
50905 {4.41835022, 11.9714899}, //
+
50906 {4.41554022, 11.9734564}, //
+
50907 {4.41255999, 11.9755039}, //
+
50908 {4.40942001, 11.9776363}, //
+
50909 {4.4060998, 11.9798498}, //
+
50910 {4.40272999, 11.9820747}, //
+
50911 {4.39940977, 11.9842148}, //
+
50912 {4.39612007, 11.9862719}, //
+
50913 {4.39287996, 11.988245}, //
+
50914 {4.38967991, 11.9901342}, //
+
50915 {4.38651991, 11.9919386}, //
+
50916 {4.38340998, 11.99366}, //
+
50917 {4.38033009, 11.9952974}, //
+
50918 {4.37729979, 11.99685}, //
+
50919 {4.36834002, 12.0025797}, //
+
50920 {4.35955, 12.00772}, //
+
50921 {4.3509202, 12.0122805}, //
+
50922 {4.34247017, 12.0162601}, //
+
50923 {4.33417988, 12.0196505}, //
+
50924 {4.32605982, 12.0224504}, //
+
50925 {4.31809998, 12.0246696}, //
+
50926 {4.3103199, 12.0263004}, //
+
50927 {4.30270004, 12.0273504}, //
+
50928 {4.30043983, 12.0279799}, //
+
50929 {4.29819012, 12.0283604}, //
+
50930 {4.29592991, 12.0284796}, //
+
50931 {4.29367018, 12.0283604}, //
+
50932 {4.29140997, 12.0279799}, //
+
50933 {4.28914022, 12.0273504}, //
+
50934 {4.28688002, 12.0264702}, //
+
50935 {4.28461981, 12.0253401}, //
+
50936 {4.28235006, 12.0239496}, //
+
50937 {4.28008986, 12.0224504}, //
+
50938 {4.27784014, 12.0209503}, //
+
50939 {4.27557993, 12.0194397}, //
+
50940 {4.2733202, 12.0179396}, //
+
50941 {4.27105999, 12.0164299}, //
+
50942 {4.26878977, 12.0149298}, //
+
50943 {4.26426983, 12.0119104}, //
+
50944 {4.26200008, 12.0103998}, //
+
50945 {4.26058006, 12.0089798}, //
+
50946 {4.2593298, 12.0077295}, //
+
50947 {4.25557995, 12.0039797}, //
+
50948 {4.25533009, 12.0037298}, //
+
50949 {4.25524998, 12.0036497}, //
+
50950 {4.25353003, 12.0029402}, //
+
50951 {4.25138998, 12.0023098}, //
+
50952 {4.24882984, 12.0017595}, //
+
50953 {4.2458601, 12.0012999}, //
+
50954 {4.24245977, 12.0009203}, //
+
50955 {4.23864985, 12.0006304}, //
+
50956 {4.23441982, 12.0004196}, //
+
50957 {4.22977018, 12.0002899}, //
+
50958 {4.22469997, 12.0002499}, //
+
50959 {4.21795988, 12.0009203}, //
+
50960 {4.21130991, 12.0014296}, //
+
50961 {4.20474005, 12.0017595}, //
+
50962 {4.19825983, 12.0019302}, //
+
50963 {4.1918602, 12.0019302}, //
+
50964 {4.1855402, 12.0017595}, //
+
50965 {4.17930984, 12.0014296}, //
+
50966 {4.17316008, 12.0009203}, //
+
50967 {4.16709995, 12.0002499}, //
+
50968 {4.16331005, 12.0002699}, //
+
50969 {4.15948009, 12.00033}, //
+
50970 {4.15561008, 12.0004396}, //
+
50971 {4.15170002, 12.0005903}, //
+
50972 {4.14773989, 12.0007696}, //
+
50973 {4.14374018, 12.0010099}, //
+
50974 {4.13969994, 12.0012798}, //
+
50975 {4.13562012, 12.0015898}, //
+
50976 {4.13149977, 12.0019503}, //
+
50977 {4.12743998, 12.0023699}, //
+
50978 {4.12353992, 12.0028696}, //
+
50979 {4.11982012, 12.0034599}, //
+
50980 {4.11626005, 12.0041199}, //
+
50981 {4.1128602, 12.0048704}, //
+
50982 {4.10963011, 12.0057096}, //
+
50983 {4.10656977, 12.0066204}, //
+
50984 {4.10368013, 12.0076199}, //
+
50985 {4.10094976, 12.0087004}, //
+
50986 {4.0984602, 12.0097704}, //
+
50987 {4.09669018, 12.0105305}, //
+
50988 {4.09625006, 12.0146198}, //
+
50989 {4.09473991, 12.0281096}, //
+
50990 {4.09464979, 12.0288897}, //
+
50991 {4.0957098, 12.0294304}, //
+
50992 {4.0971899, 12.0300398}, //
+
50993 {4.09888983, 12.0305996}, //
+
50994 {4.10079002, 12.0311298}, //
+
50995 {4.10290003, 12.0316095}, //
+
50996 {4.10521984, 12.0320501}, //
+
50997 {4.10774994, 12.0324497}, //
+
50998 {4.11048985, 12.0328503}, //
+
50999 {4.11344004, 12.0332899}, //
+
51000 {4.11659002, 12.0337696}, //
+
51001 {4.11995983, 12.0342999}, //
+
51002 {4.12353992, 12.0348597}, //
+
51003 {4.12732983, 12.03547}, //
+
51004 {4.13133001, 12.0361204}, //
+
51005 {4.13552999, 12.0368204}, //
+
51006 {4.1399498, 12.03755}, //
+
51007 {4.14668989, 12.0390701}, //
+
51008 {4.15333986, 12.0406303}, //
+
51009 {4.1599102, 12.0422401}, //
+
51010 {4.16638994, 12.04389}, //
+
51011 {4.17279005, 12.0455704}, //
+
51012 {4.17911005, 12.0473099}, //
+
51013 {4.18533993, 12.0490799}, //
+
51014 {4.19149017, 12.05089}, //
+
51015 {4.19754982, 12.0527496}, //
+
51016 {4.20349979, 12.0545797}, //
+
51017 {4.20928001, 12.0562801}, //
+
51018 {4.21489, 12.0578499}, //
+
51019 {4.22033978, 12.0593004}, //
+
51020 {4.22561979, 12.0606203}, //
+
51021 {4.23073006, 12.06182}, //
+
51022 {4.23567009, 12.0628901}, //
+
51023 {4.24043989, 12.0638304}, //
+
51024 {4.24504995, 12.0646496}, //
+
51025 {4.24950981, 12.0653601}, //
+
51026 {4.25383997, 12.0659904}, //
+
51027 {4.25804996, 12.0665398}, //
+
51028 {4.26212978, 12.0670004}, //
+
51029 {4.26608992, 12.06738}, //
+
51030 {4.26991987, 12.0676699}, //
+
51031 {4.27362013, 12.0678797}, //
+
51032 {4.27720022, 12.0680103}, //
+
51033 {4.28065014, 12.0680504}, //
+
51034 {4.28401995, 12.0680103}, //
+
51035 {4.28735018, 12.0678797}, //
+
51036 {4.29062986, 12.0676699}, //
+
51037 {4.29387999, 12.06738}, //
+
51038 {4.29709005, 12.0670004}, //
+
51039 {4.30025005, 12.0665398}, //
+
51040 {4.30337, 12.0659904}, //
+
51041 {4.3064599, 12.0653601}, //
+
51042 {4.30950022, 12.0646496}, //
+
51043 {4.31406021, 12.06252}, //
+
51044 {4.31870985, 12.0606403}, //
+
51045 {4.32344007, 12.0590096}, //
+
51046 {4.32824993, 12.0576296}, //
+
51047 {4.33314991, 12.0565004}, //
+
51048 {4.33811998, 12.0556297}, //
+
51049 {4.34318018, 12.0550003}, //
+
51050 {4.34832001, 12.0546303}, //
+
51051 {4.35354996, 12.0544996}, //
+
51052 {4.35721016, 12.0545597}, //
+
51053 {4.36066008, 12.0547504}, //
+
51054 {4.3639102, 12.0550604}, //
+
51055 {4.36694002, 12.0555}, //
+
51056 {4.36976004, 12.0560598}, //
+
51057 {4.37236977, 12.0567398}, //
+
51058 {4.37477016, 12.0575504}, //
+
51059 {4.37696981, 12.0584898}, //
+
51060 {4.37895012, 12.0595503}, //
+
51061 {4.38078022, 12.0606604}, //
+
51062 {4.38248014, 12.0617304}, //
+
51063 {4.38404989, 12.0627604}, //
+
51064 {4.38549995, 12.0637503}, //
+
51065 {4.38681984, 12.0646896}, //
+
51066 {4.38802004, 12.0655899}, //
+
51067 {4.38909006, 12.0664501}, //
+
51068 {4.39002991, 12.0672703}, //
+
51069 {4.39085007, 12.0680504}, //
+
51070 {4.39293003, 12.0701303}, //
+
51071 {4.39410019, 12.0712996}, //
+
51072 {4.39462996, 12.0718298}, //
+
51073 {4.39594984, 12.0731497}, //
+
51074 {4.39634991, 12.0735102}, //
+
51075 {4.39679003, 12.0738201}, //
+
51076 {4.3972702, 12.07409}, //
+
51077 {4.39779997, 12.0743303}, //
+
51078 {4.39835978, 12.0745096}, //
+
51079 {4.39897013, 12.0746603}, //
+
51080 {4.39962006, 12.07477}, //
+
51081 {4.40032005, 12.0748301}, //
+
51082 {4.40105009, 12.0748501}, //
+
51083 {4.4032402, 12.0748301}, //
+
51084 {4.40531015, 12.07477}, //
+
51085 {4.40725994, 12.0746603}, //
+
51086 {4.40907001, 12.0745096}, //
+
51087 {4.41076994, 12.0743303}, //
+
51088 {4.41234016, 12.07409}, //
+
51089 {4.41378021, 12.0738201}, //
+
51090 {4.4151001, 12.0735102}, //
+
51091 {4.41629982, 12.0731497}, //
+
51092 {4.41742992, 12.0727501}, //
+
51093 {4.41856003, 12.0723104}, //
+
51094 {4.41969013, 12.0718298}, //
+
51095 {4.42082024, 12.0712996}, //
+
51096 {4.42194986, 12.0707397}, //
+
51097 {4.42307997, 12.0701303}, //
+
51098 {4.42420006, 12.0694799}, //
+
51099 {4.42533016, 12.0687799}, //
+
51100 {4.42644978, 12.0680504}, //
+
51101 {4.42755985, 12.0673199}, //
+
51102 {4.42862988, 12.0666199}, //
+
51103 {4.42965984, 12.0659704}, //
+
51104 {4.43065023, 12.0653601}, //
+
51105 {4.43159008, 12.0648003}, //
+
51106 {4.43248987, 12.06427}, //
+
51107 {4.43335009, 12.0637903}, //
+
51108 {4.43416977, 12.0633497}, //
+
51109 {4.43494987, 12.0629501}, //
+
51110 {4.43565989, 12.0625896}, //
+
51111 {4.43628979, 12.0622797}, //
+
51112 {4.43684006, 12.0620098}, //
+
51113 {4.43730021, 12.0617704}, //
+
51114 {4.43831015, 12.0612698}, //
+
51115 {4.4383502, 12.0612497}, //
+
51116 {4.44169998, 12.0273504}, //
+
51117 {4.43868017, 12.0288601}, //
+
51118 {4.43759012, 12.0294104}, //
+
51119 {4.43489981, 12.0307503}, //
+
51120 {4.43338013, 12.0314999}, //
+
51121 {4.4318099, 12.0322599}, //
+
51122 {4.43021011, 12.0330095}, //
+
51123 {4.42854977, 12.0337601}, //
+
51124 {4.42685986, 12.0345097}, //
+
51125 {4.42511988, 12.0352602}, //
+
51126 {4.42333984, 12.0360098}, //
+
51127 {4.42152023, 12.0367498}, //
+
51128 {4.41965008, 12.0375004}, //
+
51129 {4.41772985, 12.0382299}, //
+
51130 {4.41571999, 12.0389299}, //
+
51131 {4.41363001, 12.0395803}, //
+
51132 {4.41145992, 12.0401897}, //
+
51133 {4.40920019, 12.0407495}, //
+
51134 {4.40684986, 12.0412798}, //
+
51135 {4.4044199, 12.0417604}, //
+
51136 {4.40189981, 12.0422001}, //
+
51137 {4.3993001, 12.0425997}, //
+
51138 {4.39672995, 12.0429602}, //
+
51139 {4.39428997, 12.0432701}, //
+
51140 {4.39197016, 12.04354}, //
+
51141 {4.38977003, 12.0437803}, //
+
51142 {4.38771009, 12.0439596}, //
+
51143 {4.38576984, 12.0441103}, //
+
51144 {4.38395023, 12.04422}, //
+
51145 {4.38225985, 12.0442801}, //
+
51146 {4.38070011, 12.0443001}, //
+
51147 {4.37842989, 12.04426}, //
+
51148 {4.37617016, 12.0441303}, //
+
51149 {4.37389994, 12.0439196}, //
+
51150 {4.37163019, 12.0436296}, //
+
51151 {4.36936998, 12.0432501}, //
+
51152 {4.36709976, 12.0427904}, //
+
51153 {4.36483002, 12.0422401}, //
+
51154 {4.36256981, 12.0416098}, //
+
51155 {4.36030006, 12.0409002}, //
+
51156 {4.35817003, 12.0401497}, //
+
51157 {4.35628986, 12.0394096}, //
+
51158 {4.35466003, 12.03866}, //
+
51159 {4.35328007, 12.0379105}, //
+
51160 {4.35214996, 12.0371599}, //
+
51161 {4.35128021, 12.0364103}, //
+
51162 {4.35064983, 12.0356598}, //
+
51163 {4.35027981, 12.0348997}, //
+
51164 {4.35015011, 12.0341501}, //
+
51165 {4.35096979, 12.03339}, //
+
51166 {4.35191011, 12.0326405}, //
+
51167 {4.35298014, 12.0318804}, //
+
51168 {4.35416985, 12.0311298}, //
+
51169 {4.35549021, 12.0303698}, //
+
51170 {4.35692978, 12.0296202}, //
+
51171 {4.35848999, 12.0288601}, //
+
51172 {4.3601799, 12.0281096}, //
+
51173 {4.36199999, 12.0273504}, //
+
51174 {4.3639102, 12.0265903}, //
+
51175 {4.36585999, 12.0258398}, //
+
51176 {4.36784983, 12.0250797}, //
+
51177 {4.3698802, 12.0243301}, //
+
51178 {4.37195015, 12.0235701}, //
+
51179 {4.37407017, 12.0228205}, //
+
51180 {4.37622023, 12.0220604}, //
+
51181 {4.37840986, 12.0213099}, //
+
51182 {4.38065004, 12.0205498}, //
+
51183 {4.3828702, 12.0198498}, //
+
51184 {4.38501978, 12.0192299}, //
+
51185 {4.38707018, 12.0186901}, //
+
51186 {4.38905001, 12.0182304}, //
+
51187 {4.39093018, 12.0178604}, //
+
51188 {4.39273977, 12.0175695}, //
+
51189 {4.3944602, 12.0173702}, //
+
51190 {4.39610004, 12.0172396}, //
+
51191 {4.39764977, 12.0172005}, //
+
51192 {4.39983988, 12.0171604}, //
+
51193 {4.40190983, 12.0170298}, //
+
51194 {4.40386009, 12.01682}, //
+
51195 {4.40567017, 12.01653}, //
+
51196 {4.40737009, 12.0161505}, //
+
51197 {4.40893984, 12.0156898}, //
+
51198 {4.41037989, 12.0151396}, //
+
51199 {4.41169977, 12.0145102}, //
+
51200 {4.41289997, 12.0137997}, //
+
51201 {4.4140501, 12.0130396}, //
+
51202 {4.41524982, 12.01229}, //
+
51203 {4.41648006, 12.0115299}, //
+
51204 {4.4177599, 12.0107803}, //
+
51205 {4.41907978, 12.0100203}, //
+
51206 {4.42043018, 12.0092697}, //
+
51207 {4.42183018, 12.0085096}, //
+
51208 {4.42327023, 12.00776}, //
+
51209 {4.42474985, 12.007}, //
+
51210 {4.42621994, 12.0062504}, //
+
51211 {4.42759991, 12.0055103}, //
+
51212 {4.42890978, 12.0047598}, //
+
51213 {4.43011999, 12.0040102}, //
+
51214 {4.43126011, 12.0032597}, //
+
51215 {4.4323101, 12.0025101}, //
+
51216 {4.43326998, 12.0017595}, //
+
51217 {4.43415022, 12.0010004}, //
+
51218 {4.43494987, 12.0002499}, //
+
51219 {4.43565989, 11.9995356}, //
+
51220 {4.43628979, 11.9989071}, //
+
51221 {4.43684006, 11.9983606}, //
+
51222 {4.43817997, 11.9970179}, //
+
51223 {4.43831015, 11.996892}, //
+
51224 {4.4383502, 11.99685}, //
+
51225 {4.4383502, 11.9561501}, //
+
51226 });
+
51227 polys.push_back({
+
51228 {6.53035021, 11.4848499}, //
+
51229 {6.53033018, 11.4849958}, //
+
51230 {6.5302701, 11.4854345}, //
+
51231 {6.53015995, 11.486167}, //
+
51232 {6.53001022, 11.4871912}, //
+
51233 {6.52864981, 11.4967003}, //
+
51234 {6.52823019, 11.4993858}, //
+
51235 {6.52772999, 11.5021544}, //
+
51236 {6.52714014, 11.5050058}, //
+
51237 {6.52647018, 11.5079403}, //
+
51238 {6.52571011, 11.5109558}, //
+
51239 {6.52486992, 11.5140562}, //
+
51240 {6.5239501, 11.5172377}, //
+
51241 {6.52294016, 11.5205021}, //
+
51242 {6.52185011, 11.5238504}, //
+
51243 {6.52075005, 11.5272598}, //
+
51244 {6.51969004, 11.5307121}, //
+
51245 {6.51867008, 11.5342064}, //
+
51246 {6.51769018, 11.5377407}, //
+
51247 {6.51674986, 11.5413189}, //
+
51248 {6.51585007, 11.544939}, //
+
51249 {6.51498985, 11.5486012}, //
+
51250 {6.51418018, 11.5523043}, //
+
51251 {6.51340008, 11.5560503}, //
+
51252 {6.51259995, 11.5597334}, //
+
51253 {6.51172018, 11.5632496}, //
+
51254 {6.51075983, 11.5665998}, //
+
51255 {6.50970984, 11.5697832}, //
+
51256 {6.50857019, 11.5727997}, //
+
51257 {6.50735998, 11.5756502}, //
+
51258 {6.50605011, 11.5783329}, //
+
51259 {6.50467014, 11.5808496}, //
+
51260 {6.50320005, 11.5832005}, //
+
51261 {6.50236988, 11.5863571}, //
+
51262 {6.50136995, 11.5898066}, //
+
51263 {6.50020981, 11.5935497}, //
+
51264 {6.4988699, 11.5975847}, //
+
51265 {6.49736023, 11.6019135}, //
+
51266 {6.49568987, 11.6065331}, //
+
51267 {6.49385023, 11.6114464}, //
+
51268 {6.49182987, 11.6166515}, //
+
51269 {6.48964977, 11.6221504}, //
+
51270 {6.48739004, 11.6278048}, //
+
51271 {6.48513985, 11.6334591}, //
+
51272 {6.48288012, 11.6391106}, //
+
51273 {6.48061991, 11.644762}, //
+
51274 {6.47836018, 11.6504116}, //
+
51275 {6.47608995, 11.6560612}, //
+
51276 {6.47383022, 11.6617088}, //
+
51277 {6.47157001, 11.6673546}, //
+
51278 {6.46929979, 11.6730003}, //
+
51279 {6.46713018, 11.6785088}, //
+
51280 {6.46511984, 11.6837263}, //
+
51281 {6.4632802, 11.6886501}, //
+
51282 {6.46160984, 11.6932812}, //
+
51283 {6.46011019, 11.6976204}, //
+
51284 {6.4587698, 11.7016668}, //
+
51285 {6.4575901, 11.7054195}, //
+
51286 {6.45659018, 11.7088814}, //
+
51287 {6.45574999, 11.7120504}, //
+
51288 {6.45503998, 11.7143059}, //
+
51289 {6.45441008, 11.7165642}, //
+
51290 {6.45385981, 11.7188215}, //
+
51291 {6.45340014, 11.7210817}, //
+
51292 {6.4530201, 11.7233429}, //
+
51293 {6.45273018, 11.725606}, //
+
51294 {6.45251989, 11.727869}, //
+
51295 {6.45239019, 11.730134}, //
+
51296 {6.45235014, 11.7323999}, //
+
51297 {6.45034981, 11.7425661}, //
+
51298 {6.44734001, 11.7534857}, //
+
51299 {6.4433198, 11.7651606}, //
+
51300 {6.43830013, 11.7775898}, //
+
51301 {6.43227005, 11.7907734}, //
+
51302 {6.42524004, 11.8047113}, //
+
51303 {6.41720009, 11.8194027}, //
+
51304 {6.4081502, 11.8348494}, //
+
51305 {6.3980999, 11.8510504}, //
+
51306 {6.38450003, 11.8698864}, //
+
51307 {6.37232018, 11.8872147}, //
+
51308 {6.36156988, 11.903039}, //
+
51309 {6.35223007, 11.9173555}, //
+
51310 {6.34431982, 11.9301672}, //
+
51311 {6.33783007, 11.9414721}, //
+
51312 {6.33276987, 11.9512711}, //
+
51313 {6.32912016, 11.9595642}, //
+
51314 {6.32690001, 11.9663496}, //
+
51315 {6.32687998, 11.968648}, //
+
51316 {6.3268199, 11.9710293}, //
+
51317 {6.32671022, 11.9734936}, //
+
51318 {6.32656002, 11.9760437}, //
+
51319 {6.32637978, 11.9786768}, //
+
51320 {6.32613993, 11.9813938}, //
+
51321 {6.32587004, 11.9841957}, //
+
51322 {6.32556009, 11.9870806}, //
+
51323 {6.32520008, 11.9900503}, //
+
51324 {6.32484007, 11.9930506}, //
+
51325 {6.32453012, 11.9960079}, //
+
51326 {6.32426023, 11.9989223}, //
+
51327 {6.32401991, 12.00179}, //
+
51328 {6.32384014, 12.0046196}, //
+
51329 {6.32368994, 12.00741}, //
+
51330 {6.32357979, 12.01015}, //
+
51331 {6.32352018, 12.0128498}, //
+
51332 {6.32350016, 12.0155001}, //
+
51333 {6.32350016, 12.0443001}, //
+
51334 {6.32348013, 12.0458097}, //
+
51335 {6.32342005, 12.0473204}, //
+
51336 {6.3233099, 12.04883}, //
+
51337 {6.32316017, 12.0503302}, //
+
51338 {6.32297993, 12.0518398}, //
+
51339 {6.32274008, 12.05334}, //
+
51340 {6.32247019, 12.0548496}, //
+
51341 {6.32215977, 12.0563498}, //
+
51342 {6.32180023, 12.0578499}, //
+
51343 {6.32066011, 12.0625496}, //
+
51344 {6.32047987, 12.0633097}, //
+
51345 {6.32033014, 12.0638905}, //
+
51346 {6.3201499, 12.0646496}, //
+
51347 {6.32160997, 12.0623102}, //
+
51348 {6.32297993, 12.0598001}, //
+
51349 {6.32427979, 12.0571299}, //
+
51350 {6.32549, 12.0542803}, //
+
51351 {6.3266201, 12.0512695}, //
+
51352 {6.32766008, 12.04809}, //
+
51353 {6.32861996, 12.0447502}, //
+
51354 {6.3295002, 12.0412302}, //
+
51355 {6.33029985, 12.03755}, //
+
51356 {6.33109999, 12.0337801}, //
+
51357 {6.33198023, 12.0300198}, //
+
51358 {6.3329401, 12.0262499}, //
+
51359 {6.33398008, 12.02248}, //
+
51360 {6.33511019, 12.0187197}, //
+
51361 {6.33631992, 12.0149498}, //
+
51362 {6.33761978, 12.0111799}, //
+
51363 {6.33899021, 12.0074196}, //
+
51364 {6.34044981, 12.0036497}, //
+
51365 {6.34280014, 11.9982891}, //
+
51366 {6.34532022, 11.9927607}, //
+
51367 {6.34800005, 11.9870672}, //
+
51368 {6.35085011, 11.9812059}, //
+
51369 {6.35386992, 11.9751778}, //
+
51370 {6.35704994, 11.9689827}, //
+
51371 {6.3604002, 11.9626217}, //
+
51372 {6.36392021, 11.9560938}, //
+
51373 {6.36759996, 11.9493999}, //
+
51374 {6.36836004, 11.9486437}, //
+
51375 {6.36911011, 11.9478893}, //
+
51376 {6.36987019, 11.9471331}, //
+
51377 {6.37061977, 11.9463778}, //
+
51378 {6.37212992, 11.9448671}, //
+
51379 {6.37289, 11.9441109}, //
+
51380 {6.37364006, 11.9433556}, //
+
51381 {6.37440014, 11.9426003}, //
+
51382 {6.37440014, 11.9392004}, //
+
51383 {6.3803401, 11.932003}, //
+
51384 {6.38610983, 11.9239683}, //
+
51385 {6.39171982, 11.9150944}, //
+
51386 {6.39716005, 11.9053831}, //
+
51387 {6.40243006, 11.8948326}, //
+
51388 {6.40752983, 11.8834438}, //
+
51389 {6.41246986, 11.8712177}, //
+
51390 {6.41724014, 11.8581533}, //
+
51391 {6.4218502, 11.8442497}, //
+
51392 {6.42570019, 11.8331594}, //
+
51393 {6.42971992, 11.8224869}, //
+
51394 {6.43390989, 11.812233}, //
+
51395 {6.43826008, 11.8023977}, //
+
51396 {6.44278002, 11.7929811}, //
+
51397 {6.44747019, 11.7839832}, //
+
51398 {6.45233011, 11.775404}, //
+
51399 {6.45735979, 11.7672434}, //
+
51400 {6.46255016, 11.7594995}, //
+
51401 {6.4654398, 11.7558174}, //
+
51402 {6.46807003, 11.7523022}, //
+
51403 {6.47045994, 11.7489557}, //
+
51404 {6.47258997, 11.7457771}, //
+
51405 {6.47447014, 11.7427654}, //
+
51406 {6.47610998, 11.7399216}, //
+
51407 {6.47748995, 11.7372475}, //
+
51408 {6.47862005, 11.7347403}, //
+
51409 {6.47949982, 11.7323999}, //
+
51410 {6.48097992, 11.7300081}, //
+
51411 {6.48241997, 11.7273645}, //
+
51412 {6.48381996, 11.724472}, //
+
51413 {6.48516989, 11.7213278}, //
+
51414 {6.48648977, 11.7179337}, //
+
51415 {6.48777008, 11.7142887}, //
+
51416 {6.48899984, 11.710393}, //
+
51417 {6.49020004, 11.7062473}, //
+
51418 {6.49135017, 11.7018499}, //
+
51419 {6.49245977, 11.6973696}, //
+
51420 {6.4935298, 11.6929731}, //
+
51421 {6.49455976, 11.6886606}, //
+
51422 {6.49555016, 11.684433}, //
+
51423 {6.49649, 11.6802883}, //
+
51424 {6.49738979, 11.6762276}, //
+
51425 {6.49825001, 11.6722507}, //
+
51426 {6.49907017, 11.6683588}, //
+
51427 {6.4998498, 11.6645498}, //
+
51428 {6.50130987, 11.6579809}, //
+
51429 {6.50267982, 11.6518307}, //
+
51430 {6.50398016, 11.6461}, //
+
51431 {6.5051899, 11.6407871}, //
+
51432 {6.50632, 11.6358929}, //
+
51433 {6.50735998, 11.6314173}, //
+
51434 {6.50831985, 11.6273594}, //
+
51435 {6.5092001, 11.6237202}, //
+
51436 {6.51000023, 11.6204996}, //
+
51437 {6.51077986, 11.6187801}, //
+
51438 {6.51159, 11.616641}, //
+
51439 {6.51245022, 11.6140833}, //
+
51440 {6.51335001, 11.6111069}, //
+
51441 {6.51428986, 11.6077127}, //
+
51442 {6.51527023, 11.6039}, //
+
51443 {6.51629019, 11.5996695}, //
+
51444 {6.5173502, 11.5950193}, //
+
51445 {6.51844978, 11.5899496}, //
+
51446 {6.51959991, 11.5845985}, //
+
51447 {6.52080011, 11.5790777}, //
+
51448 {6.52203989, 11.5733891}, //
+
51449 {6.5233202, 11.5675297}, //
+
51450 {6.52464008, 11.5615025}, //
+
51451 {6.52601004, 11.5553064}, //
+
51452 {6.52741003, 11.5489397}, //
+
51453 {6.52886009, 11.5424042}, //
+
51454 {6.53035021, 11.5356998}, //
+
51455 {6.5310998, 11.5319748}, //
+
51456 {6.53185987, 11.5283346}, //
+
51457 {6.53260994, 11.5247784}, //
+
51458 {6.53336, 11.5213051}, //
+
51459 {6.53411007, 11.5179157}, //
+
51460 {6.53486013, 11.5146112}, //
+
51461 {6.5356102, 11.5113897}, //
+
51462 {6.53634977, 11.5082531}, //
+
51463 {6.53709984, 11.5052004}, //
+
51464 {6.53780985, 11.5023556}, //
+
51465 {6.54046011, 11.4918175}, //
+
51466 {6.54050016, 11.4916496}, //
+
51467 {6.54119015, 11.4909363}, //
+
51468 {6.54175997, 11.4903069}, //
+
51469 {6.54220009, 11.4897614}, //
+
51470 {6.54251003, 11.4892988}, //
+
51471 {6.54269981, 11.4889221}, //
+
51472 {6.54276991, 11.4886284}, //
+
51473 {6.54269981, 11.4884176}, //
+
51474 {6.54251003, 11.4882917}, //
+
51475 {6.54220009, 11.4882498}, //
+
51476 {6.54182005, 11.4882288}, //
+
51477 {6.54144001, 11.4881659}, //
+
51478 {6.54106998, 11.488061}, //
+
51479 {6.54068995, 11.4879141}, //
+
51480 {6.54030991, 11.4877253}, //
+
51481 {6.53992987, 11.4874945}, //
+
51482 {6.53955984, 11.4872217}, //
+
51483 {6.5391798, 11.486907}, //
+
51484 {6.53879976, 11.4865503}, //
+
51485 {6.53843021, 11.4861927}, //
+
51486 {6.53806019, 11.485878}, //
+
51487 {6.53769016, 11.4856062}, //
+
51488 {6.53732014, 11.4853754}, //
+
51489 {6.53695011, 11.4851856}, //
+
51490 {6.53658009, 11.4850388}, //
+
51491 {6.53620005, 11.4849339}, //
+
51492 {6.53583002, 11.4848709}, //
+
51493 {6.53544998, 11.4848499}, //
+
51494 });
+
51495 polys.push_back({
+
51496 {1.04770005, 11.9629498}, //
+
51497 {1.04778004, 11.9629908}, //
+
51498 {1.04803002, 11.9631147}, //
+
51499 {1.04844999, 11.9633217}, //
+
51500 {1.04902995, 11.9636116}, //
+
51501 {1.05445004, 11.9663}, //
+
51502 {1.05602002, 11.9670982}, //
+
51503 {1.05771995, 11.9679794}, //
+
51504 {1.05954003, 11.9689436}, //
+
51505 {1.06149006, 11.9699936}, //
+
51506 {1.06356001, 11.9711266}, //
+
51507 {1.06576002, 11.9723444}, //
+
51508 {1.06807995, 11.9736462}, //
+
51509 {1.07053006, 11.9750309}, //
+
51510 {1.07309997, 11.9764996}, //
+
51511 {1.07573998, 11.9779902}, //
+
51512 {1.07839, 11.9794359}, //
+
51513 {1.08103001, 11.9808388}, //
+
51514 {1.08367002, 11.9821987}, //
+
51515 {1.08631003, 11.9835148}, //
+
51516 {1.08894002, 11.9847889}, //
+
51517 {1.09158003, 11.9860191}, //
+
51518 {1.09422004, 11.9872065}, //
+
51519 {1.09685004, 11.9883499}, //
+
51520 {1.09947002, 11.9894619}, //
+
51521 {1.10204995, 11.9905329}, //
+
51522 {1.10459006, 11.9915609}, //
+
51523 {1.10707998, 11.992548}, //
+
51524 {1.10952997, 11.9934921}, //
+
51525 {1.11194003, 11.9943943}, //
+
51526 {1.11430001, 11.9952555}, //
+
51527 {1.11661994, 11.9960728}, //
+
51528 {1.11889994, 11.99685}, //
+
51529 {1.12422001, 11.9982347}, //
+
51530 {1.12961996, 11.9993687}, //
+
51531 {1.13511002, 12.0002499}, //
+
51532 {1.14066994, 12.0008802}, //
+
51533 {1.14631999, 12.0012598}, //
+
51534 {1.15206003, 12.00138}, //
+
51535 {1.15787005, 12.0012598}, //
+
51536 {1.16376996, 12.0008802}, //
+
51537 {1.16974998, 12.0002499}, //
+
51538 {1.17280996, 11.9995785}, //
+
51539 {1.17595994, 11.9990749}, //
+
51540 {1.17919004, 11.9987392}, //
+
51541 {1.1825, 11.9985714}, //
+
51542 {1.18589997, 11.9985714}, //
+
51543 {1.18937004, 11.9987392}, //
+
51544 {1.19292998, 11.9990749}, //
+
51545 {1.19657004, 11.9995785}, //
+
51546 {1.20029998, 12.0002499}, //
+
51547 {1.20542002, 12.0002098}, //
+
51548 {1.21025002, 12.0000801}, //
+
51549 {1.21477997, 11.9998722}, //
+
51550 {1.21903002, 11.9995785}, //
+
51551 {1.22298002, 11.9992008}, //
+
51552 {1.22662997, 11.9987392}, //
+
51553 {1.23000002, 11.9981928}, //
+
51554 {1.23307002, 11.9975643}, //
+
51555 {1.23584998, 11.99685}, //
+
51556 {1.24775004, 11.9934502}, //
+
51557 {1.25454998, 11.9595499}, //
+
51558 {1.24775004, 11.9595499}, //
+
51559 {1.24618006, 11.9595709}, //
+
51560 {1.24448001, 11.9596338}, //
+
51561 {1.24266005, 11.9597387}, //
+
51562 {1.24071002, 11.9598856}, //
+
51563 {1.23863995, 11.9600754}, //
+
51564 {1.23643994, 11.9603062}, //
+
51565 {1.23412001, 11.960578}, //
+
51566 {1.23167002, 11.9608927}, //
+
51567 {1.22909999, 11.9612503}, //
+
51568 {1.22644997, 11.961607}, //
+
51569 {1.22375, 11.9619217}, //
+
51570 {1.22100997, 11.9621944}, //
+
51571 {1.21822, 11.9624252}, //
+
51572 {1.21538997, 11.9626141}, //
+
51573 {1.21252, 11.9627609}, //
+
51574 {1.20960999, 11.9628658}, //
+
51575 {1.20665002, 11.9629288}, //
+
51576 {1.20365, 11.9629498}, //
+
51577 {1.20071995, 11.9629917}, //
+
51578 {1.19796002, 11.9631176}, //
+
51579 {1.19536996, 11.9633284}, //
+
51580 {1.19295001, 11.9636221}, //
+
51581 {1.19069004, 11.9639988}, //
+
51582 {1.18860996, 11.9644613}, //
+
51583 {1.18668997, 11.9650068}, //
+
51584 {1.18492997, 11.9656363}, //
+
51585 {1.18334997, 11.9663496}, //
+
51586 {1.1257, 11.9663496}, //
+
51587 {1.12268996, 11.9662867}, //
+
51588 {1.11968005, 11.9660978}, //
+
51589 {1.11666, 11.9657831}, //
+
51590 {1.11364996, 11.9653435}, //
+
51591 {1.11063004, 11.964776}, //
+
51592 {1.10760999, 11.9640827}, //
+
51593 {1.10459006, 11.9632654}, //
+
51594 {1.10157001, 11.9623203}, //
+
51595 {1.09854996, 11.9612503}, //
+
51596 {1.09557998, 11.9601383}, //
+
51597 {1.09268999, 11.9590673}, //
+
51598 {1.08989, 11.9580393}, //
+
51599 {1.08717, 11.9570522}, //
+
51600 {1.08453, 11.9561081}, //
+
51601 {1.08196998, 11.9552059}, //
+
51602 {1.07949996, 11.9543447}, //
+
51603 {1.07711005, 11.9535275}, //
+
51604 {1.07480001, 11.9527502}, //
+
51605 {1.06915998, 11.9508886}, //
+
51606 {1.06778002, 11.9504337}, //
+
51607 {1.06665003, 11.9500618}, //
+
51608 {1.06478, 11.949441}, //
+
51609 {1.06465006, 11.9493999}, //
+
51610 {1.06241, 11.9479103}, //
+
51611 {1.06022, 11.9464617}, //
+
51612 {1.05806994, 11.945056}, //
+
51613 {1.05595005, 11.9436913}, //
+
51614 {1.05387998, 11.9423695}, //
+
51615 {1.05184996, 11.9410887}, //
+
51616 {1.04986, 11.9398508}, //
+
51617 {1.04790998, 11.9386539}, //
+
51618 {1.046, 11.9375}, //
+
51619 {1.04418004, 11.936388}, //
+
51620 {1.04249001, 11.935317}, //
+
51621 {1.04093003, 11.934289}, //
+
51622 {1.03948998, 11.9333019}, //
+
51623 {1.03816998, 11.9323578}, //
+
51624 {1.03698003, 11.9314556}, //
+
51625 {1.03591001, 11.9305954}, //
+
51626 {1.03497005, 11.9297771}, //
+
51627 {1.03415, 11.9289999}, //
+
51628 {1.03343999, 11.928297}, //
+
51629 {1.03280997, 11.9276772}, //
+
51630 {1.03225994, 11.9271393}, //
+
51631 {1.03180003, 11.9266844}, //
+
51632 {1.03141999, 11.9263124}, //
+
51633 {1.03112996, 11.9260216}, //
+
51634 {1.03092003, 11.9258146}, //
+
51635 {1.03078997, 11.9256907}, //
+
51636 {1.03075004, 11.9256496}, //
+
51637 });
+
51638 polys.push_back({
+
51639 {0.508599997, 11.8069496}, //
+
51640 {0.512000024, 11.8103504}, //
+
51641 {0.512817979, 11.8111258}, //
+
51642 {0.513759971, 11.8119431}, //
+
51643 {0.514828026, 11.8128004}, //
+
51644 {0.51602, 11.8136978}, //
+
51645 {0.517336011, 11.8146372}, //
+
51646 {0.518778026, 11.8156166}, //
+
51647 {0.520344019, 11.816637}, //
+
51648 {0.522035003, 11.8176975}, //
+
51649 {0.523850024, 11.8188}, //
+
51650 {0.525674999, 11.819912}, //
+
51651 {0.527373016, 11.8209829}, //
+
51652 {0.528944016, 11.822011}, //
+
51653 {0.530387998, 11.822998}, //
+
51654 {0.531705022, 11.8239422}, //
+
51655 {0.532894015, 11.8248444}, //
+
51656 {0.533957005, 11.8257046}, //
+
51657 {0.534892023, 11.8265228}, //
+
51658 {0.535700023, 11.8273001}, //
+
51659 {0.53658098, 11.8280563}, //
+
51660 {0.537711978, 11.8288107}, //
+
51661 {0.539093971, 11.829567}, //
+
51662 {0.540727019, 11.8303223}, //
+
51663 {0.54260999, 11.8310776}, //
+
51664 {0.544744015, 11.8318329}, //
+
51665 {0.547128975, 11.8325891}, //
+
51666 {0.549763978, 11.8333445}, //
+
51667 {0.552649975, 11.8340998}, //
+
51668 {0.555714011, 11.834856}, //
+
51669 {0.558860004, 11.8356113}, //
+
51670 {0.562089026, 11.8363667}, //
+
51671 {0.565401018, 11.837122}, //
+
51672 {0.568795025, 11.8378782}, //
+
51673 {0.572272003, 11.8386326}, //
+
51674 {0.575832009, 11.8393888}, //
+
51675 {0.579474986, 11.8401442}, //
+
51676 {0.583199978, 11.8409004}, //
+
51677 {0.588509023, 11.8416452}, //
+
51678 {0.593904018, 11.842391}, //
+
51679 {0.599382997, 11.8431387}, //
+
51680 {0.604947984, 11.8438883}, //
+
51681 {0.610598028, 11.8446379}, //
+
51682 {0.616333008, 11.8453894}, //
+
51683 {0.622153997, 11.8461409}, //
+
51684 {0.62805903, 11.8468952}, //
+
51685 {0.634050012, 11.8476496}, //
+
51686 {0.640073001, 11.8500414}, //
+
51687 {0.646097004, 11.8526821}, //
+
51688 {0.652122021, 11.8555717}, //
+
51689 {0.658149004, 11.8587122}, //
+
51690 {0.664177001, 11.8621006}, //
+
51691 {0.67020601, 11.8657389}, //
+
51692 {0.676235974, 11.869627}, //
+
51693 {0.68226701, 11.873764}, //
+
51694 {0.688300014, 11.87815}, //
+
51695 {0.692906022, 11.8811722}, //
+
51696 {0.69767803, 11.8841925}, //
+
51697 {0.70261699, 11.8872108}, //
+
51698 {0.707722008, 11.8902292}, //
+
51699 {0.712993979, 11.8932457}, //
+
51700 {0.718433022, 11.8962612}, //
+
51701 {0.724039018, 11.8992748}, //
+
51702 {0.729811013, 11.9022884}, //
+
51703 {0.73575002, 11.9053001}, //
+
51704 {0.739369988, 11.9074926}, //
+
51705 {0.742698014, 11.9095621}, //
+
51706 {0.745733023, 11.9115057}, //
+
51707 {0.748476028, 11.9133253}, //
+
51708 {0.750926018, 11.915019}, //
+
51709 {0.753082991, 11.9165888}, //
+
51710 {0.75494802, 11.9180336}, //
+
51711 {0.756519973, 11.9193544}, //
+
51712 {0.757799983, 11.9205503}, //
+
51713 {0.758849025, 11.9216623}, //
+
51714 {0.759730995, 11.9227304}, //
+
51715 {0.760443985, 11.9237556}, //
+
51716 {0.760990024, 11.9247379}, //
+
51717 {0.761367977, 11.9256773}, //
+
51718 {0.761578023, 11.9265718}, //
+
51719 {0.761619985, 11.9274254}, //
+
51720 {0.761493981, 11.9282341}, //
+
51721 {0.761200011, 11.9289999}, //
+
51722 {0.760801017, 11.9297562}, //
+
51723 {0.760360003, 11.9305115}, //
+
51724 {0.75987798, 11.9312668}, //
+
51725 {0.759352982, 11.9320221}, //
+
51726 {0.758786023, 11.9327784}, //
+
51727 {0.758177996, 11.9335327}, //
+
51728 {0.757526994, 11.934289}, //
+
51729 {0.756834984, 11.9350443}, //
+
51730 {0.756099999, 11.9357996}, //
+
51731 {0.754640996, 11.9365559}, //
+
51732 {0.753265023, 11.9373112}, //
+
51733 {0.75197202, 11.9380674}, //
+
51734 {0.750761986, 11.9388218}, //
+
51735 {0.749634027, 11.9395781}, //
+
51736 {0.748588979, 11.9403334}, //
+
51737 {0.74762702, 11.9410887}, //
+
51738 {0.746747017, 11.941844}, //
+
51739 {0.745949984, 11.9426003}, //
+
51740 {0.745109975, 11.943964}, //
+
51741 {0.744103014, 11.945035}, //
+
51742 {0.742928028, 11.9458113}, //
+
51743 {0.741585016, 11.9462938}, //
+
51744 {0.740073025, 11.9464827}, //
+
51745 {0.738394022, 11.9463778}, //
+
51746 {0.736548007, 11.9459791}, //
+
51747 {0.734533012, 11.9452858}, //
+
51748 {0.732349992, 11.9442997}, //
+
51749 {0.730051994, 11.9431038}, //
+
51750 {0.727671027, 11.9417839}, //
+
51751 {0.725206017, 11.9403391}, //
+
51752 {0.722656012, 11.9387693}, //
+
51753 {0.720022976, 11.9370747}, //
+
51754 {0.717306018, 11.935256}, //
+
51755 {0.714504004, 11.9333124}, //
+
51756 {0.71161902, 11.9312429}, //
+
51757 {0.708649993, 11.9290504}, //
+
51758 {0.702575028, 11.9254093}, //
+
51759 {0.696417987, 11.9220181}, //
+
51760 {0.690177977, 11.9188776}, //
+
51761 {0.683854997, 11.915988}, //
+
51762 {0.677448988, 11.9133492}, //
+
51763 {0.670961022, 11.9109612}, //
+
51764 {0.664390028, 11.908823}, //
+
51765 {0.657736003, 11.9069357}, //
+
51766 {0.651000023, 11.9053001}, //
+
51767 {0.647316992, 11.9038095}, //
+
51768 {0.64380002, 11.9023619}, //
+
51769 {0.640450001, 11.9009562}, //
+
51770 {0.637266994, 11.8995914}, //
+
51771 {0.634249985, 11.8982687}, //
+
51772 {0.631399989, 11.8969889}, //
+
51773 {0.628717005, 11.895751}, //
+
51774 {0.62620002, 11.8945541}, //
+
51775 {0.623849988, 11.8934002}, //
+
51776 {0.621594012, 11.8922138}, //
+
51777 {0.619338989, 11.8909006}, //
+
51778 {0.617083013, 11.8894606}, //
+
51779 {0.614827991, 11.8878937}, //
+
51780 {0.612572014, 11.886199}, //
+
51781 {0.610316992, 11.8843784}, //
+
51782 {0.608061016, 11.8824291}, //
+
51783 {0.605805993, 11.880353}, //
+
51784 {0.603550017, 11.87815}, //
+
51785 {0.601242006, 11.8766909}, //
+
51786 {0.598851025, 11.8753147}, //
+
51787 {0.596378028, 11.8740215}, //
+
51788 {0.593822002, 11.8728123}, //
+
51789 {0.591183007, 11.8716841}, //
+
51790 {0.588460982, 11.8706388}, //
+
51791 {0.585657001, 11.8696766}, //
+
51792 {0.58276999, 11.8687973}, //
+
51793 {0.57980001, 11.868}, //
+
51794 {0.577502012, 11.8672857}, //
+
51795 {0.575119019, 11.8666573}, //
+
51796 {0.572650015, 11.8661108}, //
+
51797 {0.570096016, 11.8656492}, //
+
51798 {0.56745702, 11.8652716}, //
+
51799 {0.564733028, 11.8649778}, //
+
51800 {0.561923981, 11.864768}, //
+
51801 {0.559029996, 11.8646421}, //
+
51802 {0.556050003, 11.8646002}, //
+
51803 {0.552872002, 11.8646421}, //
+
51804 {0.549359024, 11.864768}, //
+
51805 {0.545511007, 11.8649778}, //
+
51806 {0.541329026, 11.8652716}, //
+
51807 {0.536812007, 11.8656492}, //
+
51808 {0.531961024, 11.8661108}, //
+
51809 {0.526775002, 11.8666573}, //
+
51810 {0.521255016, 11.8672857}, //
+
51811 {0.515399992, 11.868}, //
+
51812 {0.513889015, 11.868042}, //
+
51813 {0.512377977, 11.8681679}, //
+
51814 {0.510867, 11.8683777}, //
+
51815 {0.509356022, 11.8686724}, //
+
51816 {0.507843971, 11.8690491}, //
+
51817 {0.506332994, 11.8695107}, //
+
51818 {0.504822016, 11.8700571}, //
+
51819 {0.503310978, 11.8706856}, //
+
51820 {0.501800001, 11.8713999}, //
+
51821 {0.484849989, 11.8713999}, //
+
51822 {0.484093994, 11.8714209}, //
+
51823 {0.483339012, 11.8714838}, //
+
51824 {0.482582986, 11.8715887}, //
+
51825 {0.481828004, 11.8717356}, //
+
51826 {0.481072009, 11.8719254}, //
+
51827 {0.480316997, 11.8721561}, //
+
51828 {0.479561001, 11.8724279}, //
+
51829 {0.478805989, 11.8727427}, //
+
51830 {0.478049994, 11.8731003}, //
+
51831 {0.477326006, 11.873457}, //
+
51832 {0.476642996, 11.8737717}, //
+
51833 {0.476000011, 11.8740444}, //
+
51834 {0.475398004, 11.8742752}, //
+
51835 {0.474837005, 11.874464}, //
+
51836 {0.474317014, 11.8746109}, //
+
51837 {0.473836988, 11.8747158}, //
+
51838 {0.473398, 11.8747787}, //
+
51839 {0.47299999, 11.8747997}, //
+
51840 {0.471300006, 11.8747997}, //
+
51841 {0.471717, 11.8748808}, //
+
51842 {0.472968996, 11.8751259}, //
+
51843 {0.473908007, 11.875309}, //
+
51844 {0.475055993, 11.8755331}, //
+
51845 {0.476411998, 11.8757982}, //
+
51846 {0.479750007, 11.8764496}, //
+
51847 {0.481700987, 11.8768702}, //
+
51848 {0.483776987, 11.8773727}, //
+
51849 {0.485978007, 11.8779612}, //
+
51850 {0.488303006, 11.8786325}, //
+
51851 {0.490752995, 11.8793879}, //
+
51852 {0.493328005, 11.880228}, //
+
51853 {0.496026993, 11.8811512}, //
+
51854 {0.498851001, 11.8821592}, //
+
51855 {0.501800001, 11.8832502}, //
+
51856 {0.504842997, 11.8843622}, //
+
51857 {0.507925987, 11.8854332}, //
+
51858 {0.511049986, 11.8864613}, //
+
51859 {0.514214993, 11.8874483}, //
+
51860 {0.517419994, 11.8883924}, //
+
51861 {0.520667017, 11.8892937}, //
+
51862 {0.523953974, 11.8901548}, //
+
51863 {0.527280986, 11.8909731}, //
+
51864 {0.53065002, 11.8917503}, //
+
51865 {0.533933997, 11.8925047}, //
+
51866 {0.537007987, 11.893259}, //
+
51867 {0.539871991, 11.8940105}, //
+
51868 {0.54252702, 11.894762}, //
+
51869 {0.544970989, 11.8955116}, //
+
51870 {0.547205985, 11.8962612}, //
+
51871 {0.54922998, 11.8970089}, //
+
51872 {0.551045001, 11.8977547}, //
+
51873 {0.552649975, 11.8985004}, //
+
51874 {0.555104017, 11.8993177}, //
+
51875 {0.557933986, 11.90026}, //
+
51876 {0.561138988, 11.9013281}, //
+
51877 {0.564719021, 11.9025202}, //
+
51878 {0.568674982, 11.9038363}, //
+
51879 {0.573005974, 11.9052782}, //
+
51880 {0.577711999, 11.9068441}, //
+
51881 {0.582792997, 11.908535}, //
+
51882 {0.588249981, 11.9103498}, //
+
51883 {0.593926013, 11.9122801}, //
+
51884 {0.599642992, 11.9142933}, //
+
51885 {0.605400026, 11.9163895}, //
+
51886 {0.611198008, 11.9185667}, //
+
51887 {0.617036998, 11.9208279}, //
+
51888 {0.622916996, 11.923172}, //
+
51889 {0.628836989, 11.9255991}, //
+
51890 {0.63479799, 11.9281082}, //
+
51891 {0.640799999, 11.9307003}, //
+
51892 {0.64677, 11.9333019}, //
+
51893 {0.652615011, 11.9358187}, //
+
51894 {0.658333004, 11.9382496}, //
+
51895 {0.663926005, 11.9405956}, //
+
51896 {0.669393003, 11.9428568}, //
+
51897 {0.674732983, 11.9450331}, //
+
51898 {0.679947972, 11.9471235}, //
+
51899 {0.685037017, 11.9491301}, //
+
51900 {0.689999998, 11.9510498}, //
+
51901 {0.698710978, 11.9544077}, //
+
51902 {0.702250004, 11.9557724}, //
+
51903 {0.705244005, 11.9569273}, //
+
51904 {0.707693994, 11.9578714}, //
+
51905 {0.710960984, 11.9591303}, //
+
51906 {0.712050021, 11.9595499}, //
+
51907 {0.715102971, 11.9603052}, //
+
51908 {0.718240023, 11.9610586}, //
+
51909 {0.721460998, 11.9618111}, //
+
51910 {0.724766016, 11.9625616}, //
+
51911 {0.728155017, 11.9633121}, //
+
51912 {0.731628001, 11.9640608}, //
+
51913 {0.735185027, 11.9648094}, //
+
51914 {0.738825023, 11.9655552}, //
+
51915 {0.742550015, 11.9663}, //
+
51916 {0.746379972, 11.9670773}, //
+
51917 {0.750334978, 11.9678946}, //
+
51918 {0.754417002, 11.9687557}, //
+
51919 {0.758624017, 11.9696579}, //
+
51920 {0.762956977, 11.970602}, //
+
51921 {0.767417014, 11.9715891}, //
+
51922 {0.772001982, 11.9726171}, //
+
51923 {0.776713014, 11.9736881}, //
+
51924 {0.78154999, 11.9748001}, //
+
51925 {0.786345005, 11.9758911}, //
+
51926 {0.790929973, 11.9768991}, //
+
51927 {0.795306027, 11.9778223}, //
+
51928 {0.799471021, 11.9786615}, //
+
51929 {0.803426981, 11.9794168}, //
+
51930 {0.807172, 11.9800892}, //
+
51931 {0.810707986, 11.9806767}, //
+
51932 {0.814033985, 11.9811802}, //
+
51933 {0.817149997, 11.9815998}, //
+
51934 {0.819993973, 11.9819574}, //
+
51935 {0.822502971, 11.9822721}, //
+
51936 {0.828023016, 11.9829636}, //
+
51937 {0.830533028, 11.9832792}, //
+
51938 {0.83069998, 11.9833002}, //
+
51939 {0.833091021, 11.9839401}, //
+
51940 {0.835731983, 11.9843721}, //
+
51941 {0.838621974, 11.9845943}, //
+
51942 {0.841762006, 11.9846087}, //
+
51943 {0.845151007, 11.9844141}, //
+
51944 {0.848788977, 11.9840107}, //
+
51945 {0.852676988, 11.9833994}, //
+
51946 {0.856814027, 11.9825792}, //
+
51947 {0.861199975, 11.9815502}, //
+
51948 {0.865742981, 11.9804058}, //
+
51949 {0.870328009, 11.9792194}, //
+
51950 {0.874956012, 11.9779892}, //
+
51951 {0.879625022, 11.9767151}, //
+
51952 {0.884335995, 11.975399}, //
+
51953 {0.889088988, 11.9740391}, //
+
51954 {0.893884003, 11.9726362}, //
+
51955 {0.89872098, 11.9711905}, //
+
51956 {0.903599977, 11.9696999}, //
+
51957 {0.908437014, 11.9682198}, //
+
51958 {0.913147986, 11.9667807}, //
+
51959 {0.917733014, 11.9653826}, //
+
51960 {0.922192991, 11.9640265}, //
+
51961 {0.92652601, 11.9627094}, //
+
51962 {0.930733025, 11.9614334}, //
+
51963 {0.93481499, 11.9601984}, //
+
51964 {0.938769996, 11.9590044}, //
+
51965 {0.942600012, 11.9578505}, //
+
51966 {0.952017009, 11.9550171}, //
+
51967 {0.959550023, 11.9527502}, //
+
51968 {0.961785018, 11.9504728}, //
+
51969 {0.963976979, 11.9481516}, //
+
51970 {0.966127992, 11.9457893}, //
+
51971 {0.968236029, 11.9433823}, //
+
51972 {0.970302999, 11.9409323}, //
+
51973 {0.972328007, 11.9384394}, //
+
51974 {0.974309981, 11.9359016}, //
+
51975 {0.976251006, 11.9333229}, //
+
51976 {0.97815001, 11.9307003}, //
+
51977 {0.980039001, 11.9280462}, //
+
51978 {0.981927991, 11.9253492}, //
+
51979 {0.983816981, 11.9226112}, //
+
51980 {0.985705972, 11.9198313}, //
+
51981 {0.987594008, 11.9170094}, //
+
51982 {0.989482999, 11.9141436}, //
+
51983 {0.991371989, 11.9112377}, //
+
51984 {0.99326098, 11.9082899}, //
+
51985 {0.99515003, 11.9053001}, //
+
51986 {0.996975005, 11.9023304}, //
+
51987 {0.998673022, 11.8994427}, //
+
51988 {1.00023997, 11.8966389}, //
+
51989 {1.00169003, 11.8939171}, //
+
51990 {1.00300002, 11.8912783}, //
+
51991 {1.00418997, 11.8887224}, //
+
51992 {1.00525999, 11.8862486}, //
+
51993 {1.00618994, 11.8838577}, //
+
51994 {1.00699997, 11.8815498}, //
+
51995 {1.00889003, 11.8759108}, //
+
51996 {1.00972998, 11.8734055}, //
+
51997 {1.01002002, 11.8725281}, //
+
51998 {1.01022995, 11.8719006}, //
+
51999 {1.01036, 11.8715248}, //
+
52000 {1.01040006, 11.8713999}, //
+
52001 {1.00024998, 11.8510504}, //
+
52002 {1.00022995, 11.8510923}, //
+
52003 {1.00005996, 11.851428}, //
+
52004 {0.99991399, 11.8517218}, //
+
52005 {0.999724984, 11.8520994}, //
+
52006 {0.999494016, 11.852561}, //
+
52007 {0.99890703, 11.8537359}, //
+
52008 {0.998549998, 11.8544502}, //
+
52009 {0.998171985, 11.8552256}, //
+
52010 {0.997793972, 11.8560429}, //
+
52011 {0.997416973, 11.8569002}, //
+
52012 {0.99703902, 11.8577976}, //
+
52013 {0.996661007, 11.858737}, //
+
52014 {0.996282995, 11.8597174}, //
+
52015 {0.995905995, 11.8607368}, //
+
52016 {0.995527983, 11.8617983}, //
+
52017 {0.99515003, 11.8628998}, //
+
52018 {0.994750977, 11.8640327}, //
+
52019 {0.994310021, 11.8651638}, //
+
52020 {0.993827999, 11.8662939}, //
+
52021 {0.993303001, 11.8674231}, //
+
52022 {0.992735982, 11.8685513}, //
+
52023 {0.992128015, 11.8696775}, //
+
52024 {0.991477013, 11.8708029}, //
+
52025 {0.990785003, 11.8719273}, //
+
52026 {0.990050018, 11.8730497}, //
+
52027 {0.989295006, 11.8741617}, //
+
52028 {0.988541007, 11.8752327}, //
+
52029 {0.987788975, 11.8762608}, //
+
52030 {0.987038016, 11.8772478}, //
+
52031 {0.986288011, 11.8781919}, //
+
52032 {0.985539019, 11.8790941}, //
+
52033 {0.984790981, 11.8799553}, //
+
52034 {0.984045029, 11.8807726}, //
+
52035 {0.983299971, 11.8815498}, //
+
52036 {0.982334971, 11.8837948}, //
+
52037 {0.980952024, 11.8859968}, //
+
52038 {0.979149997, 11.8881559}, //
+
52039 {0.976930022, 11.8902712}, //
+
52040 {0.974291027, 11.8923426}, //
+
52041 {0.97123301, 11.894372}, //
+
52042 {0.967756987, 11.8963575}, //
+
52043 {0.963863015, 11.8983011}, //
+
52044 {0.959550023, 11.9001999}, //
+
52045 {0.955007017, 11.9020882}, //
+
52046 {0.950421989, 11.9039745}, //
+
52047 {0.945793986, 11.9058609}, //
+
52048 {0.941124976, 11.9077463}, //
+
52049 {0.936414003, 11.9096289}, //
+
52050 {0.93166101, 11.9115114}, //
+
52051 {0.926865995, 11.9133921}, //
+
52052 {0.922029018, 11.9152718}, //
+
52053 {0.917150021, 11.9171495}, //
+
52054 {0.912322998, 11.9189339}, //
+
52055 {0.907618999, 11.9205084}, //
+
52056 {0.903038979, 11.9218721}, //
+
52057 {0.898581982, 11.923027}, //
+
52058 {0.894249022, 11.9239712}, //
+
52059 {0.890039027, 11.9247065}, //
+
52060 {0.885951996, 11.92523}, //
+
52061 {0.881990016, 11.9255447}, //
+
52062 {0.878149986, 11.9256496}, //
+
52063 {0.871204019, 11.9254408}, //
+
52064 {0.863923013, 11.9248133}, //
+
52065 {0.856306016, 11.9237671}, //
+
52066 {0.848352015, 11.9223022}, //
+
52067 {0.840063989, 11.9204187}, //
+
52068 {0.831439018, 11.9181166}, //
+
52069 {0.822477996, 11.9153957}, //
+
52070 {0.813181996, 11.9122572}, //
+
52071 {0.803550005, 11.9087}, //
+
52072 {0.793843985, 11.9046822}, //
+
52073 {0.78430599, 11.9001617}, //
+
52074 {0.774932981, 11.8951387}, //
+
52075 {0.765727997, 11.8896141}, //
+
52076 {0.756689012, 11.8835859}, //
+
52077 {0.74781698, 11.8770561}, //
+
52078 {0.739111006, 11.8700228}, //
+
52079 {0.730571985, 11.8624878}, //
+
52080 {0.722199976, 11.8544502}, //
+
52081 {0.717572987, 11.8514795}, //
+
52082 {0.712736011, 11.8485928}, //
+
52083 {0.707688987, 11.845789}, //
+
52084 {0.702431977, 11.8430672}, //
+
52085 {0.696964979, 11.8404284}, //
+
52086 {0.691289008, 11.8378716}, //
+
52087 {0.685401976, 11.8353987}, //
+
52088 {0.679305971, 11.8330078}, //
+
52089 {0.672999978, 11.8306999}, //
+
52090 {0.666620016, 11.8285074}, //
+
52091 {0.660281003, 11.826438}, //
+
52092 {0.653982997, 11.8244944}, //
+
52093 {0.647725999, 11.8226748}, //
+
52094 {0.641508996, 11.820981}, //
+
52095 {0.635333002, 11.8194113}, //
+
52096 {0.629198015, 11.8179665}, //
+
52097 {0.623103976, 11.8166456}, //
+
52098 {0.617049992, 11.8154497}, //
+
52099 {0.611132026, 11.8143377}, //
+
52100 {0.605422974, 11.8132668}, //
+
52101 {0.599922001, 11.8122387}, //
+
52102 {0.594630003, 11.8112516}, //
+
52103 {0.589546978, 11.8103085}, //
+
52104 {0.584671974, 11.8094063}, //
+
52105 {0.580006003, 11.8085451}, //
+
52106 {0.575549006, 11.8077269}, //
+
52107 {0.57130003, 11.8069496}, //
+
52108 {0.560939014, 11.805089}, //
+
52109 {0.556334019, 11.8042622}, //
+
52110 {0.552649975, 11.8036003}, //
+
52111 {0.537400007, 11.8036003}, //
+
52112 {0.536256015, 11.8035583}, //
+
52113 {0.535068989, 11.8034325}, //
+
52114 {0.533838987, 11.8032217}, //
+
52115 {0.532564998, 11.802928}, //
+
52116 {0.531248987, 11.8025513}, //
+
52117 {0.529888988, 11.8020887}, //
+
52118 {0.528486013, 11.8015432}, //
+
52119 {0.527040005, 11.8009138}, //
+
52120 {0.525550008, 11.8002005}, //
+
52121 {0.524101973, 11.7994652}, //
+
52122 {0.522780001, 11.7987728}, //
+
52123 {0.521583021, 11.7981224}, //
+
52124 {0.520512998, 11.797514}, //
+
52125 {0.51956898, 11.7969465}, //
+
52126 {0.518750012, 11.796422}, //
+
52127 {0.518056989, 11.7959404}, //
+
52128 {0.517490983, 11.7954988}, //
+
52129 {0.517050028, 11.7951002}, //
+
52130 {0.516682982, 11.7947216}, //
+
52131 {0.51631403, 11.7943439}, //
+
52132 {0.515944004, 11.7939672}, //
+
52133 {0.515573025, 11.7935886}, //
+
52134 {0.515200973, 11.793211}, //
+
52135 {0.514828026, 11.7928333}, //
+
52136 {0.514452994, 11.7924557}, //
+
52137 {0.514077008, 11.792078}, //
+
52138 {0.513700008, 11.7917004}, //
+
52139 {0.513342977, 11.7913218}, //
+
52140 {0.513149977, 11.791091}, //
+
52141 });
+
52142 polys.push_back({
+
52143 {4.4383502, 11.8747997}, //
+
52144 {4.43822002, 11.8756704}, //
+
52145 {4.43785, 11.8767929}, //
+
52146 {4.4372201, 11.8781672}, //
+
52147 {4.43633986, 11.8797932}, //
+
52148 {4.43520021, 11.88167}, //
+
52149 {4.43381977, 11.8837996}, //
+
52150 {4.43217993, 11.8861809}, //
+
52151 {4.43029022, 11.8888149}, //
+
52152 {4.42815018, 11.8916998}, //
+
52153 {4.42582989, 11.894701}, //
+
52154 {4.4233799, 11.8976583}, //
+
52155 {4.42081022, 11.9005718}, //
+
52156 {4.41810989, 11.9034433}, //
+
52157 {4.41527987, 11.906271}, //
+
52158 {4.41233015, 11.9090557}, //
+
52159 {4.40924978, 11.9117966}, //
+
52160 {4.40604019, 11.9144955}, //
+
52161 {4.40269995, 11.9171495}, //
+
52162 {4.39937019, 11.9196892}, //
+
52163 {4.39617014, 11.9220171}, //
+
52164 {4.39309978, 11.9241333}, //
+
52165 {4.39015007, 11.9260387}, //
+
52166 {4.38733006, 11.9277334}, //
+
52167 {4.3846302, 11.9292173}, //
+
52168 {4.38206005, 11.9304886}, //
+
52169 {4.37962008, 11.93155}, //
+
52170 {4.37729979, 11.9323997}, //
+
52171 {4.37495995, 11.9338274}, //
+
52172 {4.37244987, 11.9350863}, //
+
52173 {4.36977005, 11.9361782}, //
+
52174 {4.36691999, 11.9371014}, //
+
52175 {4.3639102, 11.9378567}, //
+
52176 {4.36072016, 11.9384441}, //
+
52177 {4.3573699, 11.9388638}, //
+
52178 {4.35383987, 11.9391155}, //
+
52179 {4.35015011, 11.9392004}, //
+
52180 {4.34634018, 11.9392843}, //
+
52181 {4.34245014, 11.9395361}, //
+
52182 {4.33848, 11.9399557}, //
+
52183 {4.3344202, 11.9405432}, //
+
52184 {4.33027983, 11.9412994}, //
+
52185 {4.32605982, 11.9422216}, //
+
52186 {4.32176018, 11.9433136}, //
+
52187 {4.31736994, 11.9445734}, //
+
52188 {4.31290007, 11.9460001}, //
+
52189 {4.31064987, 11.9467974}, //
+
52190 {4.30845022, 11.9476767}, //
+
52191 {4.30629015, 11.9486389}, //
+
52192 {4.30417013, 11.9496841}, //
+
52193 {4.30209017, 11.9508123}, //
+
52194 {4.3000598, 11.9520216}, //
+
52195 {4.29805994, 11.9533148}, //
+
52196 {4.29611015, 11.9546909}, //
+
52197 {4.29419994, 11.9561501}, //
+
52198 {4.29237986, 11.9576807}, //
+
52199 {4.29068995, 11.9592543}, //
+
52200 {4.28913021, 11.9608669}, //
+
52201 {4.28769016, 11.9625196}, //
+
52202 {4.2863698, 11.9642153}, //
+
52203 {4.28518009, 11.96595}, //
+
52204 {4.28411007, 11.9677258}, //
+
52205 {4.28317022, 11.9695435}, //
+
52206 {4.28235006, 11.9714003}, //
+
52207 {4.28101015, 11.9747581}, //
+
52208 {4.28045988, 11.9761219}, //
+
52209 {4.27898979, 11.9797955}, //
+
52210 {4.27895021, 11.9799004}, //
+
52211 {4.28059006, 11.9791861}, //
+
52212 {4.28247023, 11.9785566}, //
+
52213 {4.28460979, 11.9780111}, //
+
52214 {4.28700018, 11.9775486}, //
+
52215 {4.28963995, 11.9771719}, //
+
52216 {4.29253006, 11.9768782}, //
+
52217 {4.29567003, 11.9766684}, //
+
52218 {4.29905987, 11.9765425}, //
+
52219 {4.30270004, 11.9764996}, //
+
52220 {4.30646992, 11.9764156}, //
+
52221 {4.31022978, 11.9761639}, //
+
52222 {4.31400013, 11.9757442}, //
+
52223 {4.31777, 11.9751568}, //
+
52224 {4.32152987, 11.9744015}, //
+
52225 {4.32530022, 11.9734783}, //
+
52226 {4.32907009, 11.9723864}, //
+
52227 {4.33282995, 11.9711266}, //
+
52228 {4.33659983, 11.9696999}, //
+
52229 {4.36714983, 11.9696999}, //
+
52230 {4.36786985, 11.9710846}, //
+
52231 {4.36855984, 11.9722195}, //
+
52232 {4.36920023, 11.9730997}, //
+
52233 {4.36980009, 11.9737301}, //
+
52234 {4.3703599, 11.9741068}, //
+
52235 {4.37088013, 11.9742327}, //
+
52236 {4.37135983, 11.9741068}, //
+
52237 {4.37179995, 11.9737301}, //
+
52238 {4.37220001, 11.9730997}, //
+
52239 {4.37258005, 11.9723864}, //
+
52240 {4.37296009, 11.9717569}, //
+
52241 {4.37333012, 11.9712114}, //
+
52242 {4.37371016, 11.9707489}, //
+
52243 {4.37409019, 11.9703722}, //
+
52244 {4.37447023, 11.9700785}, //
+
52245 {4.37483978, 11.9698677}, //
+
52246 {4.37521982, 11.9697418}, //
+
52247 {4.37559986, 11.9696999}, //
+
52248 {4.37599993, 11.9696579}, //
+
52249 {4.37644005, 11.969532}, //
+
52250 {4.37692022, 11.9693222}, //
+
52251 {4.37744999, 11.9690285}, //
+
52252 {4.3780098, 11.9686508}, //
+
52253 {4.37862015, 11.9681892}, //
+
52254 {4.37927008, 11.9676428}, //
+
52255 {4.37997007, 11.9670143}, //
+
52256 {4.38070011, 11.9663}, //
+
52257 {4.38145018, 11.9655552}, //
+
52258 {4.38220978, 11.9648094}, //
+
52259 {4.38295984, 11.9640608}, //
+
52260 {4.38370991, 11.9633121}, //
+
52261 {4.38445997, 11.9625616}, //
+
52262 {4.38521004, 11.9618111}, //
+
52263 {4.3859601, 11.9610586}, //
+
52264 {4.38670015, 11.9603052}, //
+
52265 {4.38745022, 11.9595499}, //
+
52266 {4.38820982, 11.9587936}, //
+
52267 {4.39123011, 11.9557724}, //
+
52268 {4.39198017, 11.9550171}, //
+
52269 {4.39273977, 11.9542608}, //
+
52270 {4.39424992, 11.9527502}, //
+
52271 {4.39938021, 11.9490252}, //
+
52272 {4.4042201, 11.945385}, //
+
52273 {4.40876007, 11.9418278}, //
+
52274 {4.41301012, 11.9383554}, //
+
52275 {4.41696978, 11.9349661}, //
+
52276 {4.42062998, 11.9316607}, //
+
52277 {4.42399979, 11.9284401}, //
+
52278 {4.42707014, 11.9253035}, //
+
52279 {4.4298501, 11.9222498}, //
+
52280 {4.43234015, 11.9194059}, //
+
52281 {4.43452978, 11.9168968}, //
+
52282 {4.43803978, 11.9128819}, //
+
52283 {4.43936014, 11.911377}, //
+
52284 {4.4403801, 11.9102058}, //
+
52285 {4.44111013, 11.9093695}, //
+
52286 {4.44154978, 11.9088669}, //
+
52287 {4.44169998, 11.9087}, //
+
52288 {4.44169998, 11.8968}, //
+
52289 {4.44167995, 11.8956556}, //
+
52290 {4.44161987, 11.8944693}, //
+
52291 {4.4415102, 11.893239}, //
+
52292 {4.44136, 11.8919649}, //
+
52293 {4.44118023, 11.8906488}, //
+
52294 {4.4409399, 11.8892889}, //
+
52295 {4.44067001, 11.887886}, //
+
52296 {4.44036007, 11.8864403}, //
+
52297 {4.44000006, 11.8849497}, //
+
52298 {4.43965006, 11.883481}, //
+
52299 {4.43935013, 11.8820963}, //
+
52300 {4.43908024, 11.8807936}, //
+
52301 {4.43885994, 11.8795767}, //
+
52302 {4.43868017, 11.8784437}, //
+
52303 {4.43852997, 11.8773937}, //
+
52304 {4.43842983, 11.8764286}, //
+
52305 {4.43837023, 11.8755484}, //
+
52306 {4.4383502, 11.8747501}, //
+
52307 });
+
52308 polys.push_back({
+
52309 {3.39812994, 11.8487301}, //
+
52310 {3.39882994, 11.8531265}, //
+
52311 {3.3994801, 11.857439}, //
+
52312 {3.40008998, 11.8616667}, //
+
52313 {3.40065002, 11.8658123}, //
+
52314 {3.40118003, 11.8698721}, //
+
52315 {3.40165997, 11.8738489}, //
+
52316 {3.40210009, 11.8777409}, //
+
52317 {3.40249991, 11.8815498}, //
+
52318 {3.4028101, 11.885191}, //
+
52319 {3.40300012, 11.8885822}, //
+
52320 {3.40306997, 11.8917217}, //
+
52321 {3.40300012, 11.8946123}, //
+
52322 {3.4028101, 11.8972511}, //
+
52323 {3.40249991, 11.8996391}, //
+
52324 {3.40206003, 11.9017773}, //
+
52325 {3.40148997, 11.9036636}, //
+
52326 {3.40079999, 11.9053001}, //
+
52327 {3.39996004, 11.9060144}, //
+
52328 {3.3989501, 11.9066429}, //
+
52329 {3.39777994, 11.9071894}, //
+
52330 {3.39643002, 11.9076509}, //
+
52331 {3.39492011, 11.9080276}, //
+
52332 {3.39323997, 11.9083223}, //
+
52333 {3.3914001, 11.9085321}, //
+
52334 {3.38937998, 11.908658}, //
+
52335 {3.38720012, 11.9087}, //
+
52336 {3.38493991, 11.908658}, //
+
52337 {3.38268995, 11.9085321}, //
+
52338 {3.38042998, 11.9083223}, //
+
52339 {3.37817001, 11.9080276}, //
+
52340 {3.37591004, 11.9076509}, //
+
52341 {3.37364006, 11.9071894}, //
+
52342 {3.37138009, 11.9066429}, //
+
52343 {3.36911988, 11.9060144}, //
+
52344 {3.3668499, 11.9053001}, //
+
52345 {3.36468005, 11.9045858}, //
+
52346 {3.36266994, 11.9039574}, //
+
52347 {3.36084008, 11.9034109}, //
+
52348 {3.35916996, 11.9029493}, //
+
52349 {3.35767007, 11.9025717}, //
+
52350 {3.35633993, 11.9022779}, //
+
52351 {3.35517001, 11.9020681}, //
+
52352 {3.3541801, 11.9019423}, //
+
52353 {3.35334992, 11.9019003}, //
+
52354 {3.35248995, 11.901165}, //
+
52355 {3.35141993, 11.9004726}, //
+
52356 {3.35014009, 11.8998222}, //
+
52357 {3.34864998, 11.8992138}, //
+
52358 {3.34695005, 11.8986473}, //
+
52359 {3.34504008, 11.8981218}, //
+
52360 {3.34292006, 11.8976402}, //
+
52361 {3.34059, 11.8971987}, //
+
52362 {3.33804989, 11.8968}, //
+
52363 {3.33547997, 11.8964539}, //
+
52364 {3.33302999, 11.8961477}, //
+
52365 {3.33070993, 11.8958826}, //
+
52366 {3.32851005, 11.8956594}, //
+
52367 {3.3264401, 11.8954763}, //
+
52368 {3.32449007, 11.8953333}, //
+
52369 {3.32266998, 11.8952312}, //
+
52370 {3.32097006, 11.8951702}, //
+
52371 {3.31940007, 11.8951502}, //
+
52372 {3.31264997, 11.8951502}, //
+
52373 {3.3109901, 11.8951702}, //
+
52374 {3.30904007, 11.8952312}, //
+
52375 {3.30679989, 11.8953333}, //
+
52376 {3.30426002, 11.8954763}, //
+
52377 {3.30144, 11.8956594}, //
+
52378 {3.29832006, 11.8958826}, //
+
52379 {3.29489994, 11.8961477}, //
+
52380 {3.29119992, 11.8964539}, //
+
52381 {3.28719997, 11.8968}, //
+
52382 {3.28301001, 11.8971777}, //
+
52383 {3.27873993, 11.8975563}, //
+
52384 {3.27438998, 11.897933}, //
+
52385 {3.26994991, 11.8983107}, //
+
52386 {3.26542997, 11.8986893}, //
+
52387 {3.26081991, 11.8990669}, //
+
52388 {3.25612998, 11.8994436}, //
+
52389 {3.25135994, 11.8998222}, //
+
52390 {3.24650002, 11.9001999}, //
+
52391 {3.24170995, 11.9006414}, //
+
52392 {3.23713994, 11.901207}, //
+
52393 {3.23276997, 11.9019003}, //
+
52394 {3.22860003, 11.9027185}, //
+
52395 {3.22464991, 11.9036627}, //
+
52396 {3.22090006, 11.9047327}, //
+
52397 {3.21736002, 11.9059296}, //
+
52398 {3.21403003, 11.9072523}, //
+
52399 {3.21090007, 11.9087}, //
+
52400 {3.20868993, 11.908721}, //
+
52401 {3.20654988, 11.9087839}, //
+
52402 {3.20450997, 11.9088888}, //
+
52403 {3.20253992, 11.9090357}, //
+
52404 {3.20065999, 11.9092255}, //
+
52405 {3.19885993, 11.9094563}, //
+
52406 {3.19713998, 11.9097281}, //
+
52407 {3.1954999, 11.9100428}, //
+
52408 {3.19394994, 11.9104004}, //
+
52409 {3.1924901, 11.9107771}, //
+
52410 {3.19111991, 11.9111528}, //
+
52411 {3.18982005, 11.9115276}, //
+
52412 {3.18861008, 11.9119015}, //
+
52413 {3.18747997, 11.9122734}, //
+
52414 {3.18643999, 11.9126444}, //
+
52415 {3.18548012, 11.9130144}, //
+
52416 {3.18460011, 11.9133825}, //
+
52417 {3.18379998, 11.9137497}, //
+
52418 {3.18308997, 11.9141493}, //
+
52419 {3.18246007, 11.9145899}, //
+
52420 {3.18191004, 11.9150724}, //
+
52421 {3.18144989, 11.915597}, //
+
52422 {3.18107009, 11.9161644}, //
+
52423 {3.18077993, 11.9167719}, //
+
52424 {3.18056989, 11.9174232}, //
+
52425 {3.18043995, 11.9181147}, //
+
52426 {3.18039989, 11.9188499}, //
+
52427 {3.17700005, 11.9188499}, //
+
52428 {3.17622995, 11.9195642}, //
+
52429 {3.17542005, 11.9201927}, //
+
52430 {3.17457008, 11.9207392}, //
+
52431 {3.17368007, 11.9212008}, //
+
52432 {3.17273998, 11.9215784}, //
+
52433 {3.17176008, 11.9218721}, //
+
52434 {3.17073011, 11.9220819}, //
+
52435 {3.16966009, 11.9222078}, //
+
52436 {3.16855001, 11.9222498}, //
+
52437 {3.16739988, 11.9222918}, //
+
52438 {3.16619992, 11.9224176}, //
+
52439 {3.16495991, 11.9226284}, //
+
52440 {3.16368008, 11.9229221}, //
+
52441 {3.16235995, 11.9232988}, //
+
52442 {3.16099, 11.9237614}, //
+
52443 {3.15959001, 11.9243069}, //
+
52444 {3.15813994, 11.9249363}, //
+
52445 {3.15665007, 11.9256496}, //
+
52446 {3.15443993, 11.9256916}, //
+
52447 {3.15229988, 11.9258184}, //
+
52448 {3.15025997, 11.9260283}, //
+
52449 {3.14828992, 11.926322}, //
+
52450 {3.14640999, 11.9266987}, //
+
52451 {3.14460993, 11.9271612}, //
+
52452 {3.14288998, 11.9277067}, //
+
52453 {3.1412499, 11.9283361}, //
+
52454 {3.13969994, 11.9290504}, //
+
52455 {3.13893008, 11.9290705}, //
+
52456 {3.13811994, 11.9291306}, //
+
52457 {3.13726997, 11.9292326}, //
+
52458 {3.13637996, 11.9293756}, //
+
52459 {3.13544011, 11.9295588}, //
+
52460 {3.13445997, 11.9297829}, //
+
52461 {3.13343, 11.930048}, //
+
52462 {3.13235998, 11.9303541}, //
+
52463 {3.1312499, 11.9307003}, //
+
52464 {3.12897992, 11.9314556}, //
+
52465 {3.12785006, 11.9318333}, //
+
52466 {3.1233201, 11.9333439}, //
+
52467 {3.12217999, 11.9337215}, //
+
52468 {3.12104988, 11.9341002}, //
+
52469 {3.11993003, 11.9344778}, //
+
52470 {3.11879992, 11.9348564}, //
+
52471 {3.11768007, 11.9352331}, //
+
52472 {3.11429, 11.936367}, //
+
52473 {3.11315989, 11.9367437}, //
+
52474 {3.11203003, 11.9371223}, //
+
52475 {3.11089993, 11.9375}, //
+
52476 {3.1098299, 11.9378567}, //
+
52477 {3.10889006, 11.9381723}, //
+
52478 {3.10641003, 11.9389963}, //
+
52479 {3.10642004, 11.9390249}, //
+
52480 {3.10737991, 11.9439287}, //
+
52481 {3.11599994, 11.9696999}, //
+
52482 {3.11603999, 11.9696579}, //
+
52483 {3.11803007, 11.9676428}, //
+
52484 {3.11864996, 11.9670143}, //
+
52485 {3.11934996, 11.9663}, //
+
52486 {3.12015009, 11.9655342}, //
+
52487 {3.12103009, 11.9647245}, //
+
52488 {3.12198997, 11.963872}, //
+
52489 {3.12303996, 11.9629774}, //
+
52490 {3.12418008, 11.962038}, //
+
52491 {3.12539005, 11.9610558}, //
+
52492 {3.12669992, 11.9600296}, //
+
52493 {3.12807989, 11.9589624}, //
+
52494 {3.12954998, 11.9578505}, //
+
52495 {3.1310401, 11.9567165}, //
+
52496 {3.13248992, 11.9555826}, //
+
52497 {3.13388991, 11.9544497}, //
+
52498 {3.13525009, 11.9533167}, //
+
52499 {3.13656998, 11.9521828}, //
+
52500 {3.13784003, 11.9510498}, //
+
52501 {3.13907003, 11.9499168}, //
+
52502 {3.14025998, 11.9487829}, //
+
52503 {3.1414001, 11.94765}, //
+
52504 {3.14254999, 11.9465904}, //
+
52505 {3.14374995, 11.9456549}, //
+
52506 {3.14498997, 11.9448442}, //
+
52507 {3.14627004, 11.9441586}, //
+
52508 {3.14758992, 11.9435978}, //
+
52509 {3.14896011, 11.943161}, //
+
52510 {3.15036011, 11.9428492}, //
+
52511 {3.15180993, 11.9426622}, //
+
52512 {3.15330005, 11.9426003}, //
+
52513 {3.15475988, 11.9418859}, //
+
52514 {3.15613008, 11.9412575}, //
+
52515 {3.15742993, 11.940711}, //
+
52516 {3.15863991, 11.9402494}, //
+
52517 {3.15977001, 11.9398718}, //
+
52518 {3.16080999, 11.9395781}, //
+
52519 {3.16177011, 11.9393682}, //
+
52520 {3.16265011, 11.9392424}, //
+
52521 {3.16345, 11.9392004}, //
+
52522 {3.16416001, 11.9391794}, //
+
52523 {3.16478992, 11.9391155}, //
+
52524 {3.16533995, 11.9390106}, //
+
52525 {3.16580009, 11.9388638}, //
+
52526 {3.1661799, 11.9386749}, //
+
52527 {3.16647005, 11.9384441}, //
+
52528 {3.1666801, 11.9381723}, //
+
52529 {3.16681004, 11.9378567}, //
+
52530 {3.16685009, 11.9375}, //
+
52531 {3.16685009, 11.9323997}, //
+
52532 {3.16688991, 11.9316549}, //
+
52533 {3.16702008, 11.9309092}, //
+
52534 {3.16722989, 11.9301615}, //
+
52535 {3.16752005, 11.9294119}, //
+
52536 {3.16790009, 11.9286623}, //
+
52537 {3.16835999, 11.9279108}, //
+
52538 {3.16891003, 11.9271593}, //
+
52539 {3.16953993, 11.926405}, //
+
52540 {3.17024994, 11.9256496}, //
+
52541 {3.171, 11.9249363}, //
+
52542 {3.17176008, 11.9243069}, //
+
52543 {3.17250991, 11.9237614}, //
+
52544 {3.17325997, 11.9232988}, //
+
52545 {3.17401004, 11.9229221}, //
+
52546 {3.1747601, 11.9226284}, //
+
52547 {3.17550993, 11.9224176}, //
+
52548 {3.17624998, 11.9222918}, //
+
52549 {3.17700005, 11.9222498}, //
+
52550 {3.17775989, 11.9222918}, //
+
52551 {3.17850995, 11.9224176}, //
+
52552 {3.17927003, 11.9226284}, //
+
52553 {3.18002009, 11.9229221}, //
+
52554 {3.18077993, 11.9232988}, //
+
52555 {3.18153, 11.9237614}, //
+
52556 {3.18229008, 11.9243069}, //
+
52557 {3.1830399, 11.9249363}, //
+
52558 {3.18379998, 11.9256496}, //
+
52559 {3.18456006, 11.9256916}, //
+
52560 {3.18530989, 11.9258184}, //
+
52561 {3.18606997, 11.9260283}, //
+
52562 {3.18682003, 11.926322}, //
+
52563 {3.18758011, 11.9266987}, //
+
52564 {3.18832994, 11.9271612}, //
+
52565 {3.18909001, 11.9277067}, //
+
52566 {3.18984008, 11.9283361}, //
+
52567 {3.19059992, 11.9290504}, //
+
52568 {3.19904995, 11.9290504}, //
+
52569 {3.20020008, 11.9290075}, //
+
52570 {3.20140004, 11.9288816}, //
+
52571 {3.20263004, 11.9286718}, //
+
52572 {3.20391011, 11.9283781}, //
+
52573 {3.20523, 11.9280014}, //
+
52574 {3.20657992, 11.9275389}, //
+
52575 {3.20797992, 11.9269934}, //
+
52576 {3.20941997, 11.9263639}, //
+
52577 {3.21090007, 11.9256496}, //
+
52578 {3.21245003, 11.9249363}, //
+
52579 {3.21409011, 11.9243069}, //
+
52580 {3.21581006, 11.9237614}, //
+
52581 {3.2176199, 11.9232988}, //
+
52582 {3.21950006, 11.9229221}, //
+
52583 {3.22147989, 11.9226284}, //
+
52584 {3.22353005, 11.9224176}, //
+
52585 {3.22568011, 11.9222918}, //
+
52586 {3.22790003, 11.9222498}, //
+
52587 {3.23467994, 11.9209909}, //
+
52588 {3.24295998, 11.9202347}, //
+
52589 {3.25274992, 11.9199829}, //
+
52590 {3.26405001, 11.9202347}, //
+
52591 {3.27684999, 11.9209909}, //
+
52592 {3.29116988, 11.9222498}, //
+
52593 {3.30698991, 11.9240131}, //
+
52594 {3.32431006, 11.92628}, //
+
52595 {3.3431499, 11.9290504}, //
+
52596 {3.34654999, 11.9290504}, //
+
52597 {3.34951997, 11.9297533}, //
+
52598 {3.35240006, 11.9303732}, //
+
52599 {3.35521007, 11.9309111}, //
+
52600 {3.35791993, 11.931366}, //
+
52601 {3.36055994, 11.9317379}, //
+
52602 {3.36311007, 11.9320278}, //
+
52603 {3.36557007, 11.9322348}, //
+
52604 {3.36794996, 11.9323587}, //
+
52605 {3.37024999, 11.9323997}, //
+
52606 {3.38555002, 11.9323997}, //
+
52607 {3.38664007, 11.9323788}, //
+
52608 {3.38765001, 11.9323158}, //
+
52609 {3.38857007, 11.9322109}, //
+
52610 {3.38940001, 11.9320641}, //
+
52611 {3.39015007, 11.9318752}, //
+
52612 {3.39082003, 11.9316444}, //
+
52613 {3.3914001, 11.9313717}, //
+
52614 {3.39189005, 11.931057}, //
+
52615 {3.39229989, 11.9307003}, //
+
52616 {3.39269996, 11.9303541}, //
+
52617 {3.39314008, 11.930048}, //
+
52618 {3.39362001, 11.9297829}, //
+
52619 {3.39415002, 11.9295588}, //
+
52620 {3.39471006, 11.9293756}, //
+
52621 {3.39531994, 11.9292326}, //
+
52622 {3.39597011, 11.9291306}, //
+
52623 {3.3966701, 11.9290705}, //
+
52624 {3.3973999, 11.9290504}, //
+
52625 {3.39743996, 11.9283152}, //
+
52626 {3.39756989, 11.9276228}, //
+
52627 {3.39777994, 11.9269724}, //
+
52628 {3.3980701, 11.9263639}, //
+
52629 {3.3984499, 11.9257975}, //
+
52630 {3.39891005, 11.925272}, //
+
52631 {3.39946008, 11.9247904}, //
+
52632 {3.40008998, 11.9243488}, //
+
52633 {3.40079999, 11.9239502}, //
+
52634 {3.40156007, 11.9235506}, //
+
52635 {3.40230989, 11.92311}, //
+
52636 {3.40306997, 11.9226284}, //
+
52637 {3.40382004, 11.9221029}, //
+
52638 {3.40458012, 11.9215364}, //
+
52639 {3.40532994, 11.920928}, //
+
52640 {3.40609002, 11.9202766}, //
+
52641 {3.40684009, 11.9195852}, //
+
52642 {3.40759993, 11.9188499}, //
+
52643 {3.40977001, 11.9180937}, //
+
52644 {3.41178012, 11.9173393}, //
+
52645 {3.41362, 11.9165831}, //
+
52646 {3.41529012, 11.9158278}, //
+
52647 {3.41679001, 11.9150724}, //
+
52648 {3.41812992, 11.9143171}, //
+
52649 {3.41931009, 11.9135609}, //
+
52650 {3.42031002, 11.9128056}, //
+
52651 {3.42114997, 11.9120502}, //
+
52652 {3.42183995, 11.9112844}, //
+
52653 {3.42241001, 11.9104748}, //
+
52654 {3.42284989, 11.9096222}, //
+
52655 {3.42316008, 11.9087267}, //
+
52656 {3.4233501, 11.9077883}, //
+
52657 {3.42341995, 11.906806}, //
+
52658 {3.4233501, 11.9057798}, //
+
52659 {3.42316008, 11.9047117}, //
+
52660 {3.42284989, 11.9035997}, //
+
52661 {3.42245007, 11.9025297}, //
+
52662 {3.42200994, 11.9015846}, //
+
52663 {3.42153001, 11.9007673}, //
+
52664 {3.421, 11.900074}, //
+
52665 {3.42043996, 11.8995066}, //
+
52666 {3.41983008, 11.8990669}, //
+
52667 {3.41917992, 11.8987522}, //
+
52668 {3.41847992, 11.8985634}, //
+
52669 {3.41774988, 11.8985004}, //
+
52670 {3.41774988, 11.8951502}, //
+
52671 {3.41773009, 11.8950663}, //
+
52672 {3.41767001, 11.8948135}, //
+
52673 {3.4174099, 11.8938074}, //
+
52674 {3.41722989, 11.8930511}, //
+
52675 {3.41699004, 11.892128}, //
+
52676 {3.41671991, 11.891036}, //
+
52677 {3.41640997, 11.8897772}, //
+
52678 {3.41604996, 11.8883495}, //
+
52679 {3.41564989, 11.8868399}, //
+
52680 {3.41521001, 11.8853302}, //
+
52681 {3.41473007, 11.8838224}, //
+
52682 {3.41420007, 11.8823147}, //
+
52683 {3.41364002, 11.8808098}, //
+
52684 {3.41302991, 11.8793058}, //
+
52685 {3.41237998, 11.8778019}, //
+
52686 {3.41167998, 11.8763008}, //
+
52687 {3.41094995, 11.8747997}, //
+
52688 {3.40949011, 11.8725538}, //
+
52689 {3.40811992, 11.8703508}, //
+
52690 {3.40682006, 11.8681889}, //
+
52691 {3.40561008, 11.8660688}, //
+
52692 {3.40447998, 11.8639908}, //
+
52693 {3.40344, 11.8619556}, //
+
52694 {3.40247989, 11.8599625}, //
+
52695 {3.40159988, 11.8580103}, //
+
52696 {3.40079999, 11.8561001}, //
+
52697 {3.40008998, 11.8542852}, //
+
52698 {3.39946008, 11.8525944}, //
+
52699 {3.39891005, 11.8510284}, //
+
52700 {3.3984499, 11.8495855}, //
+
52701 {3.3980701, 11.8482704}, //
+
52702 {3.39803004, 11.8481178}, //
+
52703 });
+
52704 polys.push_back({
+
52705 {0.984297991, 11.7815714}, //
+
52706 {0.983861029, 11.7817392}, //
+
52707 {0.983548999, 11.7820749}, //
+
52708 {0.983362019, 11.7825785}, //
+
52709 {0.983299971, 11.7832499}, //
+
52710 {0.984023988, 11.7840681}, //
+
52711 {0.984706998, 11.7850103}, //
+
52712 {0.985350013, 11.7860785}, //
+
52713 {0.98595202, 11.7872696}, //
+
52714 {0.986513019, 11.7885857}, //
+
52715 {0.98703301, 11.7900276}, //
+
52716 {0.987513006, 11.7915936}, //
+
52717 {0.987951994, 11.7932854}, //
+
52718 {0.988349974, 11.7951002}, //
+
52719 {0.988749027, 11.7970095}, //
+
52720 {0.989189982, 11.7989588}, //
+
52721 {0.989672005, 11.8009501}, //
+
52722 {0.990197003, 11.8029814}, //
+
52723 {0.990764022, 11.8050537}, //
+
52724 {0.991371989, 11.8071671}, //
+
52725 {0.992022991, 11.8093204}, //
+
52726 {0.992715001, 11.8115149}, //
+
52727 {0.993449986, 11.8137503}, //
+
52728 {0.994206011, 11.8159637}, //
+
52729 {0.994961023, 11.8180962}, //
+
52730 {0.995716989, 11.8201437}, //
+
52731 {0.996472001, 11.8221102}, //
+
52732 {0.997228026, 11.8239937}, //
+
52733 {0.997982979, 11.8257942}, //
+
52734 {0.998739004, 11.8275118}, //
+
52735 {0.999494016, 11.8291483}, //
+
52736 {1.00024998, 11.8306999}, //
+
52737 {1.00095999, 11.8321266}, //
+
52738 {1.00159001, 11.8333864}, //
+
52739 {1.00214005, 11.8344784}, //
+
52740 {1.00259995, 11.8354006}, //
+
52741 {1.00327003, 11.8367443}, //
+
52742 {1.00347996, 11.8371639}, //
+
52743 {1.00364995, 11.8374996}, //
+
52744 {1.00450003, 11.8375406}, //
+
52745 {1.00556004, 11.8376646}, //
+
52746 {1.00682998, 11.8378716}, //
+
52747 {1.00830996, 11.8381624}, //
+
52748 {1.00999999, 11.8385344}, //
+
52749 {1.01189005, 11.8389893}, //
+
52750 {1.01400006, 11.8395271}, //
+
52751 {1.01631999, 11.840147}, //
+
52752 {1.01884997, 11.8408499}, //
+
52753 {1.02155995, 11.8416481}, //
+
52754 {1.02438998, 11.8425293}, //
+
52755 {1.02734005, 11.8434944}, //
+
52756 {1.03042996, 11.8445444}, //
+
52757 {1.03363001, 11.8456774}, //
+
52758 {1.03696001, 11.8468943}, //
+
52759 {1.04042006, 11.848196}, //
+
52760 {1.04400003, 11.8495808}, //
+
52761 {1.04770005, 11.8510504}, //
+
52762 {1.05133998, 11.8518057}, //
+
52763 {1.05473006, 11.852561}, //
+
52764 {1.05787003, 11.8533173}, //
+
52765 {1.06076002, 11.8540716}, //
+
52766 {1.06340003, 11.8548279}, //
+
52767 {1.06579006, 11.8555832}, //
+
52768 {1.06792998, 11.8563395}, //
+
52769 {1.06981003, 11.8570938}, //
+
52770 {1.07145, 11.8578501}, //
+
52771 {1.07225001, 11.8578911}, //
+
52772 {1.07313001, 11.8580151}, //
+
52773 {1.07409, 11.858222}, //
+
52774 {1.07512999, 11.8585119}, //
+
52775 {1.07625997, 11.8588839}, //
+
52776 {1.07746994, 11.8593388}, //
+
52777 {1.07877004, 11.8598766}, //
+
52778 {1.08013999, 11.8604975}, //
+
52779 {1.08159995, 11.8612003}, //
+
52780 {1.08709002, 11.862711}, //
+
52781 {1.09299004, 11.8642216}, //
+
52782 {1.09932005, 11.8657331}, //
+
52783 {1.10606003, 11.8672438}, //
+
52784 {1.11321998, 11.8687563}, //
+
52785 {1.12080002, 11.8702669}, //
+
52786 {1.12880003, 11.8717775}, //
+
52787 {1.13721001, 11.8732891}, //
+
52788 {1.14604998, 11.8747997}, //
+
52789 {1.15341997, 11.8755445}, //
+
52790 {1.16044998, 11.8762913}, //
+
52791 {1.16714001, 11.877039}, //
+
52792 {1.17350996, 11.8777876}, //
+
52793 {1.17953002, 11.8785381}, //
+
52794 {1.18523002, 11.8792887}, //
+
52795 {1.19059002, 11.8800411}, //
+
52796 {1.19561005, 11.8807945}, //
+
52797 {1.20029998, 11.8815498}, //
+
52798 {1.22064996, 11.8815498}, //
+
52799 {1.22217, 11.8829985}, //
+
52800 {1.22372997, 11.8843203}, //
+
52801 {1.22534001, 11.8855171}, //
+
52802 {1.22698998, 11.8865871}, //
+
52803 {1.22867, 11.8875313}, //
+
52804 {1.23040998, 11.8883495}, //
+
52805 {1.23218, 11.8890429}, //
+
52806 {1.23398995, 11.8896093}, //
+
52807 {1.23584998, 11.8900499}, //
+
52808 {1.23772001, 11.8904476}, //
+
52809 {1.23953998, 11.8908873}, //
+
52810 {1.24132001, 11.891367}, //
+
52811 {1.24305999, 11.8918867}, //
+
52812 {1.24475002, 11.8924484}, //
+
52813 {1.24641001, 11.8930502}, //
+
52814 {1.24801004, 11.893693}, //
+
52815 {1.24958003, 11.8943758}, //
+
52816 {1.25109994, 11.8950996}, //
+
52817 {1.25257003, 11.8958559}, //
+
52818 {1.25395, 11.8966112}, //
+
52819 {1.25525999, 11.8973665}, //
+
52820 {1.25646996, 11.8981218}, //
+
52821 {1.25760996, 11.8988781}, //
+
52822 {1.25865996, 11.8996334}, //
+
52823 {1.25961995, 11.9003887}, //
+
52824 {1.26049995, 11.901144}, //
+
52825 {1.26129997, 11.9019003}, //
+
52826 {1.26200998, 11.9026136}, //
+
52827 {1.26264, 11.9032431}, //
+
52828 {1.26319003, 11.9037886}, //
+
52829 {1.26364994, 11.9042511}, //
+
52830 {1.26402998, 11.9046278}, //
+
52831 {1.26432002, 11.9049215}, //
+
52832 {1.26452994, 11.9051323}, //
+
52833 {1.26466, 11.9052582}, //
+
52834 {1.26470006, 11.9053001}, //
+
52835 {1.26810002, 11.8747997}, //
+
52836 {1.26810002, 11.8612003}, //
+
52837 {1.26730001, 11.8633204}, //
+
52838 {1.26642001, 11.8651457}, //
+
52839 {1.26546001, 11.8666782}, //
+
52840 {1.26441002, 11.8679161}, //
+
52841 {1.26327002, 11.8688602}, //
+
52842 {1.26206005, 11.8695107}, //
+
52843 {1.26075006, 11.8698683}, //
+
52844 {1.25936997, 11.8699312}, //
+
52845 {1.2579, 11.8697004}, //
+
52846 {1.25636005, 11.8693008}, //
+
52847 {1.25472999, 11.8688602}, //
+
52848 {1.25302005, 11.8683777}, //
+
52849 {1.25121999, 11.8678532}, //
+
52850 {1.24934006, 11.8672857}, //
+
52851 {1.24737, 11.8666782}, //
+
52852 {1.24530995, 11.8660269}, //
+
52853 {1.24317002, 11.8653355}, //
+
52854 {1.24094999, 11.8646002}, //
+
52855 {1.23941004, 11.8638449}, //
+
52856 {1.23777997, 11.8630915}, //
+
52857 {1.23607004, 11.862339}, //
+
52858 {1.23426998, 11.8615875}, //
+
52859 {1.23239005, 11.8608379}, //
+
52860 {1.23041999, 11.8600893}, //
+
52861 {1.22836006, 11.8593407}, //
+
52862 {1.22622001, 11.8585949}, //
+
52863 {1.22399998, 11.8578501}, //
+
52864 {1.20029998, 11.8578501}, //
+
52865 {1.19878995, 11.8585529}, //
+
52866 {1.19728005, 11.8591728}, //
+
52867 {1.19577003, 11.8597107}, //
+
52868 {1.19426, 11.8601656}, //
+
52869 {1.19273996, 11.8605375}, //
+
52870 {1.19123006, 11.8608284}, //
+
52871 {1.18972003, 11.8610353}, //
+
52872 {1.18821001, 11.8611593}, //
+
52873 {1.18669999, 11.8612003}, //
+
52874 {1.16974998, 11.8612003}, //
+
52875 {1.16658998, 11.8596992}, //
+
52876 {1.16314006, 11.8581982}, //
+
52877 {1.15938997, 11.8566942}, //
+
52878 {1.15534997, 11.8551903}, //
+
52879 {1.15102005, 11.8536854}, //
+
52880 {1.14638996, 11.8521776}, //
+
52881 {1.14146996, 11.8506699}, //
+
52882 {1.13626003, 11.8491602}, //
+
52883 {1.13074994, 11.8476496}, //
+
52884 {1.12514997, 11.8461285}, //
+
52885 {1.11962998, 11.8445644}, //
+
52886 {1.11418998, 11.8429556}, //
+
52887 {1.10882998, 11.8413038}, //
+
52888 {1.10355997, 11.8396101}, //
+
52889 {1.09836996, 11.8378716}, //
+
52890 {1.09326994, 11.836091}, //
+
52891 {1.08824003, 11.8342667}, //
+
52892 {1.08329999, 11.8324003}, //
+
52893 {1.07859004, 11.830575}, //
+
52894 {1.07426, 11.8288774}, //
+
52895 {1.07029998, 11.8273058}, //
+
52896 {1.06672001, 11.8258619}, //
+
52897 {1.06351995, 11.8245449}, //
+
52898 {1.06070006, 11.8233557}, //
+
52899 {1.05825996, 11.8222933}, //
+
52900 {1.05619001, 11.8213577}, //
+
52901 {1.05449998, 11.82055}, //
+
52902 {1.05369997, 11.820466}, //
+
52903 {1.05281997, 11.8202143}, //
+
52904 {1.05185997, 11.8197937}, //
+
52905 {1.05080998, 11.8192072}, //
+
52906 {1.04966998, 11.8184509}, //
+
52907 {1.04846001, 11.8175278}, //
+
52908 {1.04715002, 11.8164358}, //
+
52909 {1.04577005, 11.815177}, //
+
52910 {1.04429996, 11.8137503}, //
+
52911 {1.04203999, 11.812952}, //
+
52912 {1.03979003, 11.8120708}, //
+
52913 {1.03752995, 11.8111057}, //
+
52914 {1.03526998, 11.8100557}, //
+
52915 {1.03301001, 11.8089228}, //
+
52916 {1.03074002, 11.8077059}, //
+
52917 {1.02848005, 11.8064041}, //
+
52918 {1.02621996, 11.8050194}, //
+
52919 {1.02394998, 11.8035498}, //
+
52920 {1.02169001, 11.8020697}, //
+
52921 {1.01944005, 11.8006306}, //
+
52922 {1.01717997, 11.7992334}, //
+
52923 {1.01492, 11.7978764}, //
+
52924 {1.01266003, 11.7965593}, //
+
52925 {1.01039004, 11.7952833}, //
+
52926 {1.00812995, 11.7940483}, //
+
52927 {1.00586998, 11.7928543}, //
+
52928 {1.0036, 11.7917004}, //
+
52929 {1.00141001, 11.7905979}, //
+
52930 {0.999337971, 11.7895374}, //
+
52931 {0.997394025, 11.788517}, //
+
52932 {0.995575011, 11.7875366}, //
+
52933 {0.993880987, 11.7865982}, //
+
52934 {0.992311001, 11.7856998}, //
+
52935 {0.990866005, 11.7848434}, //
+
52936 {0.989546001, 11.7840261}, //
+
52937 {0.988349974, 11.7832499}, //
+
52938 {0.987290025, 11.7825785}, //
+
52939 {0.986355007, 11.7820749}, //
+
52940 {0.985544026, 11.7817392}, //
+
52941 {0.98485899, 11.7815714}, //
+
52942 });
+
52943 polys.push_back({
+
52944 {6.46120977, 11.428627}, //
+
52945 {6.46084976, 11.4288998}, //
+
52946 {6.46045017, 11.4293613}, //
+
52947 {6.46001005, 11.4299889}, //
+
52948 {6.45952988, 11.4307833}, //
+
52949 {6.45900011, 11.4317436}, //
+
52950 {6.45843983, 11.4328718}, //
+
52951 {6.45782995, 11.4341669}, //
+
52952 {6.45718002, 11.4356279}, //
+
52953 {6.45648003, 11.4372559}, //
+
52954 {6.45574999, 11.4390497}, //
+
52955 {6.45501995, 11.440959}, //
+
52956 {6.45431995, 11.4429092}, //
+
52957 {6.45367002, 11.4448996}, //
+
52958 {6.45306015, 11.4469309}, //
+
52959 {6.45249987, 11.4490042}, //
+
52960 {6.4519701, 11.4511166}, //
+
52961 {6.45148993, 11.45327}, //
+
52962 {6.4510498, 11.4554653}, //
+
52963 {6.45065022, 11.4576998}, //
+
52964 {6.45027018, 11.4599447}, //
+
52965 {6.44989014, 11.4621468}, //
+
52966 {6.44952011, 11.4643059}, //
+
52967 {6.44914007, 11.4664211}, //
+
52968 {6.44876003, 11.4684935}, //
+
52969 {6.44837999, 11.4705219}, //
+
52970 {6.44800997, 11.4725084}, //
+
52971 {6.44762993, 11.4744511}, //
+
52972 {6.44724989, 11.4763498}, //
+
52973 {6.44685984, 11.4781761}, //
+
52974 {6.44643021, 11.4798756}, //
+
52975 {6.44596004, 11.4814501}, //
+
52976 {6.44543982, 11.4828978}, //
+
52977 {6.44488001, 11.4842196}, //
+
52978 {6.44427013, 11.4854174}, //
+
52979 {6.4436202, 11.4864874}, //
+
52980 {6.44293022, 11.4874306}, //
+
52981 {6.44220018, 11.4882498}, //
+
52982 {6.44212008, 11.4899492}, //
+
52983 {6.4418602, 11.4920235}, //
+
52984 {6.44144011, 11.4944715}, //
+
52985 {6.44085979, 11.4972973}, //
+
52986 {6.44010019, 11.5004969}, //
+
52987 {6.4391799, 11.5040722}, //
+
52988 {6.43808985, 11.5080233}, //
+
52989 {6.43683004, 11.5123491}, //
+
52990 {6.43540001, 11.5170498}, //
+
52991 {6.43385983, 11.5220118}, //
+
52992 {6.43223, 11.5270987}, //
+
52993 {6.43052006, 11.5323114}, //
+
52994 {6.42872, 11.5376482}, //
+
52995 {6.42683983, 11.5431089}, //
+
52996 {6.42487001, 11.5486937}, //
+
52997 {6.42281008, 11.5544052}, //
+
52998 {6.42067003, 11.5602398}, //
+
52999 {6.41844988, 11.5662003}, //
+
53000 {6.41624022, 11.5720243}, //
+
53001 {6.41410017, 11.5774298}, //
+
53002 {6.41205978, 11.5824165}, //
+
53003 {6.41008997, 11.5869846}, //
+
53004 {6.4082098, 11.591135}, //
+
53005 {6.40641022, 11.5948668}, //
+
53006 {6.40468979, 11.5981798}, //
+
53007 {6.40304995, 11.6010742}, //
+
53008 {6.40150023, 11.60355}, //
+
53009 {6.39839983, 11.607233}, //
+
53010 {6.39514017, 11.6107483}, //
+
53011 {6.3917098, 11.6140938}, //
+
53012 {6.38811016, 11.6172733}, //
+
53013 {6.38434982, 11.620285}, //
+
53014 {6.38041019, 11.6231279}, //
+
53015 {6.37630987, 11.625803}, //
+
53016 {6.37203979, 11.6283102}, //
+
53017 {6.36759996, 11.6306496}, //
+
53018 {6.36312008, 11.6327906}, //
+
53019 {6.35871983, 11.6346798}, //
+
53020 {6.35441017, 11.6363173}, //
+
53021 {6.35018015, 11.637702}, //
+
53022 {6.34603977, 11.638835}, //
+
53023 {6.34197998, 11.6397171}, //
+
53024 {6.33799982, 11.6403456}, //
+
53025 {6.33410978, 11.6407242}, //
+
53026 {6.33029985, 11.6408501}, //
+
53027 {6.32733011, 11.6408081}, //
+
53028 {6.32444, 11.6406822}, //
+
53029 {6.32164001, 11.6404724}, //
+
53030 {6.31892014, 11.6401777}, //
+
53031 {6.31627989, 11.639801}, //
+
53032 {6.31372023, 11.6393394}, //
+
53033 {6.31125021, 11.638793}, //
+
53034 {6.30885983, 11.6381636}, //
+
53035 {6.30655003, 11.6374502}, //
+
53036 {6.30428982, 11.6367569}, //
+
53037 {6.3020401, 11.6361914}, //
+
53038 {6.29977989, 11.6357498}, //
+
53039 {6.29752016, 11.6354351}, //
+
53040 {6.29525995, 11.6352463}, //
+
53041 {6.29299021, 11.6351833}, //
+
53042 {6.29073, 11.6352463}, //
+
53043 {6.28846979, 11.6354351}, //
+
53044 {6.28620005, 11.6357498}, //
+
53045 {6.28389978, 11.6361904}, //
+
53046 {6.28151989, 11.636755}, //
+
53047 {6.27905989, 11.6374435}, //
+
53048 {6.27650976, 11.6382589}, //
+
53049 {6.27386999, 11.6391983}, //
+
53050 {6.27116013, 11.6402607}, //
+
53051 {6.26835012, 11.641449}, //
+
53052 {6.26547003, 11.6427622}, //
+
53053 {6.26249981, 11.6442003}, //
+
53054 {6.25789022, 11.6462574}, //
+
53055 {6.25311995, 11.6478939}, //
+
53056 {6.24817991, 11.6491108}, //
+
53057 {6.24307013, 11.649909}, //
+
53058 {6.23779011, 11.6502857}, //
+
53059 {6.23233986, 11.6502438}, //
+
53060 {6.22672987, 11.6497831}, //
+
53061 {6.22095013, 11.648901}, //
+
53062 {6.21500015, 11.6476002}, //
+
53063 {6.20902014, 11.6460571}, //
+
53064 {6.20312023, 11.6444302}, //
+
53065 {6.19730997, 11.6427174}, //
+
53066 {6.19156981, 11.6409187}, //
+
53067 {6.18591976, 11.6390352}, //
+
53068 {6.18035984, 11.6370668}, //
+
53069 {6.17487001, 11.6350126}, //
+
53070 {6.16946983, 11.6328735}, //
+
53071 {6.16415024, 11.6306496}, //
+
53072 {6.15954018, 11.6284781}, //
+
53073 {6.1547699, 11.6264725}, //
+
53074 {6.14982986, 11.6246328}, //
+
53075 {6.14473009, 11.622961}, //
+
53076 {6.13946009, 11.6214561}, //
+
53077 {6.13401985, 11.6201172}, //
+
53078 {6.12840986, 11.6189442}, //
+
53079 {6.12264013, 11.617939}, //
+
53080 {6.11670017, 11.6170998}, //
+
53081 {6.11057997, 11.6162186}, //
+
53082 {6.10430002, 11.6150885}, //
+
53083 {6.09784985, 11.6137056}, //
+
53084 {6.09122992, 11.6120729}, //
+
53085 {6.08444977, 11.6101904}, //
+
53086 {6.07749987, 11.6080561}, //
+
53087 {6.07038021, 11.6056709}, //
+
53088 {6.06309986, 11.6030359}, //
+
53089 {6.05565023, 11.6001501}, //
+
53090 {6.05058002, 11.5976543}, //
+
53091 {6.04592991, 11.594698}, //
+
53092 {6.04169989, 11.5912828}, //
+
53093 {6.03788996, 11.587409}, //
+
53094 {6.03449011, 11.5830755}, //
+
53095 {6.03151989, 11.5782833}, //
+
53096 {6.02896023, 11.5730314}, //
+
53097 {6.02682018, 11.5673199}, //
+
53098 {6.02510023, 11.5611496}, //
+
53099 {6.02370024, 11.5547705}, //
+
53100 {6.02252007, 11.5484314}, //
+
53101 {6.02154016, 11.5421333}, //
+
53102 {6.02077007, 11.5358763}, //
+
53103 {6.02020979, 11.5296593}, //
+
53104 {6.01985979, 11.5234833}, //
+
53105 {6.01971006, 11.5173483}, //
+
53106 {6.01978016, 11.5112543}, //
+
53107 {6.02005005, 11.5052004}, //
+
53108 {6.02045012, 11.4993029}, //
+
53109 {6.02089024, 11.4936571}, //
+
53110 {6.02136993, 11.4882612}, //
+
53111 {6.02190018, 11.4831161}, //
+
53112 {6.02245998, 11.4782219}, //
+
53113 {6.02306986, 11.4735785}, //
+
53114 {6.02371979, 11.4691849}, //
+
53115 {6.02441978, 11.4650421}, //
+
53116 {6.02514982, 11.4611502}, //
+
53117 {6.0251298, 11.4590511}, //
+
53118 {6.02507019, 11.4572878}, //
+
53119 {6.02496004, 11.4558611}, //
+
53120 {6.02480984, 11.4547701}, //
+
53121 {6.02463007, 11.4540138}, //
+
53122 {6.02439022, 11.4535942}, //
+
53123 {6.02411985, 11.4535103}, //
+
53124 {6.02380991, 11.4537621}, //
+
53125 {6.0234499, 11.4543505}, //
+
53126 {6.0230298, 11.4551258}, //
+
53127 {6.02253008, 11.4559431}, //
+
53128 {6.02194023, 11.4568005}, //
+
53129 {6.0212698, 11.4576979}, //
+
53130 {6.0205102, 11.4586372}, //
+
53131 {6.01967001, 11.4596167}, //
+
53132 {6.01875019, 11.4606371}, //
+
53133 {6.01773977, 11.4616976}, //
+
53134 {6.0166502, 11.4628}, //
+
53135 {6.01553011, 11.463954}, //
+
53136 {6.01440001, 11.465148}, //
+
53137 {6.01327991, 11.466383}, //
+
53138 {6.01214981, 11.467659}, //
+
53139 {6.01102018, 11.468976}, //
+
53140 {6.00989008, 11.4703331}, //
+
53141 {6.00875998, 11.4717312}, //
+
53142 {6.00762987, 11.4731703}, //
+
53143 {6.00649977, 11.4746504}, //
+
53144 {6.00539017, 11.47614}, //
+
53145 {6.00432014, 11.4775877}, //
+
53146 {6.00329018, 11.4789944}, //
+
53147 {6.00229979, 11.4803591}, //
+
53148 {6.00135994, 11.4816809}, //
+
53149 {6.00046015, 11.4829607}, //
+
53150 {5.99959993, 11.4841986}, //
+
53151 {5.99877977, 11.4853964}, //
+
53152 {5.99800014, 11.4865503}, //
+
53153 {5.99730015, 11.4876204}, //
+
53154 {5.99614, 11.4893827}, //
+
53155 {5.99482012, 11.4913979}, //
+
53156 {5.99468994, 11.4915867}, //
+
53157 {5.99464989, 11.4916496}, //
+
53158 {5.99483013, 11.492589}, //
+
53159 {5.99630022, 11.5001001}, //
+
53160 {5.99667978, 11.5019884}, //
+
53161 {5.99705982, 11.5038748}, //
+
53162 {5.99742985, 11.5057611}, //
+
53163 {5.99780989, 11.5076456}, //
+
53164 {5.99818993, 11.5095291}, //
+
53165 {5.99856997, 11.5114107}, //
+
53166 {5.99893999, 11.5132923}, //
+
53167 {5.99932003, 11.515172}, //
+
53168 {5.99970007, 11.5170498}, //
+
53169 {6.00010014, 11.518959}, //
+
53170 {6.00053978, 11.5209093}, //
+
53171 {6.00101995, 11.5228996}, //
+
53172 {6.0015502, 11.524931}, //
+
53173 {6.00211, 11.5270042}, //
+
53174 {6.00271988, 11.5291166}, //
+
53175 {6.00336981, 11.53127}, //
+
53176 {6.00406981, 11.5334654}, //
+
53177 {6.00479984, 11.5356998}, //
+
53178 {6.00559998, 11.538847}, //
+
53179 {6.00648022, 11.542243}, //
+
53180 {6.00744009, 11.5458889}, //
+
53181 {6.00848007, 11.5497837}, //
+
53182 {6.00961018, 11.5539284}, //
+
53183 {6.01081991, 11.558322}, //
+
53184 {6.01211977, 11.5629654}, //
+
53185 {6.0134902, 11.5678577}, //
+
53186 {6.0149498, 11.573}, //
+
53187 {6.01643991, 11.5775013}, //
+
53188 {6.01788998, 11.5819597}, //
+
53189 {6.01928997, 11.5863781}, //
+
53190 {6.02064991, 11.5907526}, //
+
53191 {6.0219698, 11.5950861}, //
+
53192 {6.02324009, 11.5993776}, //
+
53193 {6.02446985, 11.6036272}, //
+
53194 {6.02566004, 11.6078348}, //
+
53195 {6.02680016, 11.6120005}, //
+
53196 {6.02794981, 11.6160812}, //
+
53197 {6.02915001, 11.6200371}, //
+
53198 {6.03038979, 11.623867}, //
+
53199 {6.03167009, 11.6275702}, //
+
53200 {6.03298998, 11.6311483}, //
+
53201 {6.03435993, 11.6345997}, //
+
53202 {6.03575993, 11.6379261}, //
+
53203 {6.03720999, 11.6411257}, //
+
53204 {6.0387001, 11.6442003}, //
+
53205 {6.04195976, 11.6487217}, //
+
53206 {6.04573011, 11.653244}, //
+
53207 {6.04999018, 11.6577673}, //
+
53208 {6.05475998, 11.6622887}, //
+
53209 {6.06004, 11.666811}, //
+
53210 {6.0658102, 11.6713333}, //
+
53211 {6.07209015, 11.6758556}, //
+
53212 {6.07886982, 11.680378}, //
+
53213 {6.08615017, 11.6849003}, //
+
53214 {6.09360981, 11.6892548}, //
+
53215 {6.10090017, 11.6932755}, //
+
53216 {6.10801983, 11.6969614}, //
+
53217 {6.11497021, 11.7003117}, //
+
53218 {6.12175989, 11.7033291}, //
+
53219 {6.12836981, 11.7060108}, //
+
53220 {6.13481998, 11.7083588}, //
+
53221 {6.14108992, 11.710372}, //
+
53222 {6.14720011, 11.7120504}, //
+
53223 {6.15101004, 11.7134666}, //
+
53224 {6.15490007, 11.7147169}, //
+
53225 {6.15888023, 11.7158003}, //
+
53226 {6.16294003, 11.7167168}, //
+
53227 {6.16707993, 11.7174673}, //
+
53228 {6.17130995, 11.71805}, //
+
53229 {6.17562008, 11.7184668}, //
+
53230 {6.18001986, 11.7187166}, //
+
53231 {6.18450022, 11.7187996}, //
+
53232 {6.18902016, 11.7187166}, //
+
53233 {6.1935401, 11.7184668}, //
+
53234 {6.19807005, 11.71805}, //
+
53235 {6.20258999, 11.7174673}, //
+
53236 {6.20710993, 11.7167168}, //
+
53237 {6.21162987, 11.7158003}, //
+
53238 {6.21615982, 11.7147169}, //
+
53239 {6.22068024, 11.7134666}, //
+
53240 {6.22520018, 11.7120504}, //
+
53241 {6.23535013, 11.7120504}, //
+
53242 {6.23774004, 11.7112312}, //
+
53243 {6.24037981, 11.7102871}, //
+
53244 {6.24326992, 11.7092171}, //
+
53245 {6.24640989, 11.7080202}, //
+
53246 {6.24980021, 11.7066984}, //
+
53247 {6.2534399, 11.7052498}, //
+
53248 {6.25732994, 11.7036762}, //
+
53249 {6.26145983, 11.7019758}, //
+
53250 {6.26585007, 11.7001495}, //
+
53251 {6.27041006, 11.6982508}, //
+
53252 {6.27506018, 11.6963081}, //
+
53253 {6.27978992, 11.6943216}, //
+
53254 {6.28460979, 11.6922932}, //
+
53255 {6.28950977, 11.6902208}, //
+
53256 {6.29448986, 11.6881056}, //
+
53257 {6.29956007, 11.6859474}, //
+
53258 {6.30470991, 11.6837454}, //
+
53259 {6.30994987, 11.6815004}, //
+
53260 {6.31292009, 11.6800203}, //
+
53261 {6.31580019, 11.6785812}, //
+
53262 {6.31861019, 11.6771832}, //
+
53263 {6.32132006, 11.6758261}, //
+
53264 {6.32395983, 11.674509}, //
+
53265 {6.32650995, 11.673233}, //
+
53266 {6.32896996, 11.671998}, //
+
53267 {6.33134985, 11.670804}, //
+
53268 {6.33365011, 11.6696501}, //
+
53269 {6.33583021, 11.6685801}, //
+
53270 {6.33785009, 11.667635}, //
+
53271 {6.33969021, 11.6668167}, //
+
53272 {6.34137011, 11.6661243}, //
+
53273 {6.34287977, 11.6655569}, //
+
53274 {6.34423018, 11.6651173}, //
+
53275 {6.34539986, 11.6648016}, //
+
53276 {6.3464098, 11.6646128}, //
+
53277 {6.34724998, 11.6645498}, //
+
53278 {6.34868002, 11.6645708}, //
+
53279 {6.34993982, 11.6646338}, //
+
53280 {6.35102987, 11.6647387}, //
+
53281 {6.35195017, 11.6648865}, //
+
53282 {6.35270977, 11.6650753}, //
+
53283 {6.35329008, 11.6653061}, //
+
53284 {6.35371017, 11.6655779}, //
+
53285 {6.35397005, 11.6658926}, //
+
53286 {6.35405016, 11.6662502}, //
+
53287 {6.35403013, 11.6666698}, //
+
53288 {6.35397005, 11.6671734}, //
+
53289 {6.3538599, 11.6677608}, //
+
53290 {6.35371017, 11.6684332}, //
+
53291 {6.35352993, 11.6691875}, //
+
53292 {6.35329008, 11.6700277}, //
+
53293 {6.35302019, 11.6709509}, //
+
53294 {6.35270977, 11.6719589}, //
+
53295 {6.35235023, 11.6730499}, //
+
53296 {6.35195017, 11.6741619}, //
+
53297 {6.35151005, 11.67523}, //
+
53298 {6.35102987, 11.6762562}, //
+
53299 {6.35050011, 11.6772385}, //
+
53300 {6.34993982, 11.6781769}, //
+
53301 {6.34932995, 11.6790724}, //
+
53302 {6.34868002, 11.679925}, //
+
53303 {6.34798002, 11.6807337}, //
+
53304 {6.34724998, 11.6815004}, //
+
53305 {6.34642982, 11.6822968}, //
+
53306 {6.34548998, 11.683177}, //
+
53307 {6.34441996, 11.6841393}, //
+
53308 {6.34322023, 11.6851835}, //
+
53309 {6.34189987, 11.6863117}, //
+
53310 {6.34044981, 11.6875219}, //
+
53311 {6.33888006, 11.6888151}, //
+
53312 {6.33718014, 11.6901913}, //
+
53313 {6.33535004, 11.6916504}, //
+
53314 {6.33340979, 11.693203}, //
+
53315 {6.33133984, 11.6948404}, //
+
53316 {6.3291502, 11.6965609}, //
+
53317 {6.32682991, 11.6983662}, //
+
53318 {6.32438993, 11.7002554}, //
+
53319 {6.32181978, 11.7022276}, //
+
53320 {6.31911993, 11.7042847}, //
+
53321 {6.31629992, 11.7064247}, //
+
53322 {6.3133502, 11.7086496}, //
+
53323 {6.30959988, 11.7123747}, //
+
53324 {6.3059001, 11.7160149}, //
+
53325 {6.30223989, 11.7195721}, //
+
53326 {6.29862022, 11.7230453}, //
+
53327 {6.29504013, 11.7264338}, //
+
53328 {6.29151011, 11.7297392}, //
+
53329 {6.28801012, 11.7329597}, //
+
53330 {6.2845602, 11.7360973}, //
+
53331 {6.28114986, 11.73915}, //
+
53332 {6.27782011, 11.7421198}, //
+
53333 {6.27462006, 11.7450066}, //
+
53334 {6.27154016, 11.7478113}, //
+
53335 {6.26858997, 11.7505331}, //
+
53336 {6.26575994, 11.7531719}, //
+
53337 {6.26306009, 11.7557278}, //
+
53338 {6.26047993, 11.7582006}, //
+
53339 {6.25802994, 11.7605925}, //
+
53340 {6.25570011, 11.7629004}, //
+
53341 {6.25330019, 11.7651768}, //
+
53342 {6.25059986, 11.7674952}, //
+
53343 {6.24761009, 11.7698565}, //
+
53344 {6.24432993, 11.7722578}, //
+
53345 {6.24074984, 11.7747021}, //
+
53346 {6.23687983, 11.7771893}, //
+
53347 {6.23270988, 11.7797174}, //
+
53348 {6.22825003, 11.7822876}, //
+
53349 {6.22349977, 11.7848997}, //
+
53350 {6.21861982, 11.7875233}, //
+
53351 {6.21377993, 11.790102}, //
+
53352 {6.2089901, 11.7926388}, //
+
53353 {6.20423985, 11.7951317}, //
+
53354 {6.19952011, 11.7975817}, //
+
53355 {6.19485998, 11.7999887}, //
+
53356 {6.19022989, 11.802352}, //
+
53357 {6.18563986, 11.8046732}, //
+
53358 {6.18109989, 11.8069496}, //
+
53359 {6.17670012, 11.8090906}, //
+
53360 {6.17256021, 11.8109798}, //
+
53361 {6.16867018, 11.8126173}, //
+
53362 {6.16503, 11.814002}, //
+
53363 {6.16164017, 11.815135}, //
+
53364 {6.15850019, 11.8160172}, //
+
53365 {6.15561008, 11.8166456}, //
+
53366 {6.15297985, 11.8170242}, //
+
53367 {6.15059996, 11.8171501}, //
+
53368 {6.14753008, 11.8176956}, //
+
53369 {6.14433002, 11.8178225}, //
+
53370 {6.14099979, 11.8175278}, //
+
53371 {6.13754988, 11.8168144}, //
+
53372 {6.13396978, 11.8156815}, //
+
53373 {6.13027, 11.8141279}, //
+
53374 {6.12644005, 11.8121548}, //
+
53375 {6.12247992, 11.809762}, //
+
53376 {6.1184001, 11.8069496}, //
+
53377 {6.1143198, 11.8039808}, //
+
53378 {6.11036015, 11.801096}, //
+
53379 {6.10653019, 11.7982941}, //
+
53380 {6.10281992, 11.795577}, //
+
53381 {6.09923983, 11.792944}, //
+
53382 {6.0957799, 11.7903938}, //
+
53383 {6.09244013, 11.7879286}, //
+
53384 {6.08923006, 11.7855482}, //
+
53385 {6.08615017, 11.7832499}, //
+
53386 {6.08611012, 11.7825356}, //
+
53387 {6.08597994, 11.7819071}, //
+
53388 {6.08578014, 11.7813606}, //
+
53389 {6.08549023, 11.780899}, //
+
53390 {6.0851202, 11.7805223}, //
+
53391 {6.08466005, 11.7802277}, //
+
53392 {6.0841198, 11.7800179}, //
+
53393 {6.08349991, 11.779892}, //
+
53394 {6.08279991, 11.77985}, //
+
53395 {6.0811801, 11.7783394}, //
+
53396 {6.07936001, 11.7768278}, //
+
53397 {6.07733011, 11.7753172}, //
+
53398 {6.07508993, 11.7738056}, //
+
53399 {6.07263994, 11.772294}, //
+
53400 {6.06998014, 11.7707834}, //
+
53401 {6.06711006, 11.7692719}, //
+
53402 {6.06403017, 11.7677612}, //
+
53403 {6.06075001, 11.7662497}, //
+
53404 {6.0573802, 11.7647905}, //
+
53405 {6.05404997, 11.7634153}, //
+
53406 {6.05076981, 11.7621222}, //
+
53407 {6.04752016, 11.7609119}, //
+
53408 {6.04431009, 11.7597837}, //
+
53409 {6.04115009, 11.7587395}, //
+
53410 {6.03803015, 11.7577772}, //
+
53411 {6.03493977, 11.756897}, //
+
53412 {6.03189993, 11.7560997}, //
+
53413 {6.03114986, 11.7560577}, //
+
53414 {6.03040981, 11.7559319}, //
+
53415 {6.02966022, 11.755722}, //
+
53416 {6.02891016, 11.7554283}, //
+
53417 {6.0281601, 11.7550507}, //
+
53418 {6.02741003, 11.7545891}, //
+
53419 {6.02665997, 11.7540426}, //
+
53420 {6.02589989, 11.7534142}, //
+
53421 {6.02514982, 11.7526999}, //
+
53422 {6.02364016, 11.7517462}, //
+
53423 {6.02213001, 11.7503719}, //
+
53424 {6.02061987, 11.7485781}, //
+
53425 {6.0191102, 11.7463636}, //
+
53426 {6.01759005, 11.7437305}, //
+
53427 {6.0160799, 11.7406778}, //
+
53428 {6.01457024, 11.7372046}, //
+
53429 {6.01306009, 11.7333117}, //
+
53430 {6.01154995, 11.7290001}, //
+
53431 {6.01006985, 11.7244568}, //
+
53432 {6.0086298, 11.7198725}, //
+
53433 {6.0072298, 11.7152443}, //
+
53434 {6.00587988, 11.7105751}, //
+
53435 {6.00455999, 11.705864}, //
+
53436 {6.00328016, 11.7011108}, //
+
53437 {6.00204992, 11.6963158}, //
+
53438 {6.0008502, 11.6914787}, //
+
53439 {5.99970007, 11.6865997}, //
+
53440 {5.99860001, 11.6818466}, //
+
53441 {5.99754, 11.6773882}, //
+
53442 {5.99652004, 11.6732216}, //
+
53443 {5.99554014, 11.6693506}, //
+
53444 {5.99459982, 11.6657734}, //
+
53445 {5.99370003, 11.6624889}, //
+
53446 {5.99283981, 11.6594992}, //
+
53447 {5.99203014, 11.6568022}, //
+
53448 {5.99125004, 11.6543999}, //
+
53449 {5.99118996, 11.6520081}, //
+
53450 {5.99100018, 11.6493654}, //
+
53451 {5.99068022, 11.646472}, //
+
53452 {5.9902401, 11.6433277}, //
+
53453 {5.98967981, 11.6399336}, //
+
53454 {5.98897982, 11.6362886}, //
+
53455 {5.98816013, 11.6323929}, //
+
53456 {5.98721981, 11.6282473}, //
+
53457 {5.98614979, 11.6238499}, //
+
53458 {5.98500013, 11.619338}, //
+
53459 {5.98379993, 11.6148252}, //
+
53460 {5.98257017, 11.6103106}, //
+
53461 {5.98128986, 11.6057959}, //
+
53462 {5.97996998, 11.6012793}, //
+
53463 {5.97862005, 11.5967607}, //
+
53464 {5.97722006, 11.5922422}, //
+
53465 {5.97578001, 11.5877218}, //
+
53466 {5.97429991, 11.5832005}, //
+
53467 {5.97353983, 11.5794544}, //
+
53468 {5.97278976, 11.5757484}, //
+
53469 {5.97203016, 11.5720835}, //
+
53470 {5.9712801, 11.5684586}, //
+
53471 {5.97052002, 11.5648756}, //
+
53472 {5.96976995, 11.5613327}, //
+
53473 {5.96900988, 11.5578308}, //
+
53474 {5.96825981, 11.5543699}, //
+
53475 {5.96750021, 11.5509501}, //
+
53476 {5.9667902, 11.5477076}, //
+
53477 {5.96615982, 11.5447598}, //
+
53478 {5.96561003, 11.5421057}, //
+
53479 {5.96514988, 11.5397453}, //
+
53480 {5.96476984, 11.5376778}, //
+
53481 {5.96447992, 11.5359058}, //
+
53482 {5.96427011, 11.5344267}, //
+
53483 {5.96413994, 11.5332413}, //
+
53484 {5.96409988, 11.5323496}, //
+
53485 {5.96407986, 11.5316782}, //
+
53486 {5.96401978, 11.5311718}, //
+
53487 {5.9639101, 11.5308332}, //
+
53488 {5.9637599, 11.5306606}, //
+
53489 {5.96358013, 11.5306559}, //
+
53490 {5.96333981, 11.530817}, //
+
53491 {5.96306992, 11.5311441}, //
+
53492 {5.96275997, 11.5316391}, //
+
53493 {5.96239996, 11.5323}, //
+
53494 {5.96199989, 11.5331402}, //
+
53495 {5.96155977, 11.5341473}, //
+
53496 {5.96108007, 11.5353222}, //
+
53497 {5.96055984, 11.536665}, //
+
53498 {5.96000004, 11.5381765}, //
+
53499 {5.95940018, 11.539856}, //
+
53500 {5.95875978, 11.5417023}, //
+
53501 {5.9580698, 11.5437174}, //
+
53502 {5.95734978, 11.5459003}, //
+
53503 {5.95580006, 11.5474854}, //
+
53504 {5.95416021, 11.5492382}, //
+
53505 {5.95243979, 11.5511608}, //
+
53506 {5.9506402, 11.5532532}, //
+
53507 {5.94876003, 11.5555143}, //
+
53508 {5.94679022, 11.5579443}, //
+
53509 {5.94474983, 11.560544}, //
+
53510 {5.94260979, 11.5633116}, //
+
53511 {5.94040012, 11.5662498}, //
+
53512 {5.93822002, 11.5700169}, //
+
53513 {5.93620014, 11.5737829}, //
+
53514 {5.93436003, 11.5775499}, //
+
53515 {5.93268013, 11.5813169}, //
+
53516 {5.93116999, 11.585083}, //
+
53517 {5.92982006, 11.58885}, //
+
53518 {5.9286499, 11.592617}, //
+
53519 {5.92763996, 11.5963831}, //
+
53520 {5.92679977, 11.6001501}, //
+
53521 {5.92600012, 11.6023636}, //
+
53522 {5.92511988, 11.604496}, //
+
53523 {5.92416, 11.6065435}, //
+
53524 {5.92312002, 11.60851}, //
+
53525 {5.92198992, 11.6103935}, //
+
53526 {5.92078018, 11.6121941}, //
+
53527 {5.91947985, 11.6139116}, //
+
53528 {5.91810989, 11.6155481}, //
+
53529 {5.91664982, 11.6170998}, //
+
53530 {5.92133999, 11.6251402}, //
+
53531 {5.92398024, 11.6296616}, //
+
53532 {5.92720985, 11.6351891}, //
+
53533 {5.93101978, 11.6417208}, //
+
53534 {5.93542004, 11.6492577}, //
+
53535 {5.94040012, 11.6577997}, //
+
53536 {5.94265985, 11.6616497}, //
+
53537 {5.94491005, 11.6656666}, //
+
53538 {5.94716978, 11.6698503}, //
+
53539 {5.94941998, 11.6742001}, //
+
53540 {5.95168018, 11.6787167}, //
+
53541 {5.9539299, 11.6834002}, //
+
53542 {5.95619011, 11.6882496}, //
+
53543 {5.95843983, 11.6932669}, //
+
53544 {5.96070004, 11.6984501}, //
+
53545 {5.96233988, 11.7059937}, //
+
53546 {5.96422005, 11.7135363}, //
+
53547 {5.96636009, 11.7210779}, //
+
53548 {5.96875, 11.7286177}, //
+
53549 {5.97138977, 11.7361574}, //
+
53550 {5.97427988, 11.7436943}, //
+
53551 {5.97741985, 11.7512312}, //
+
53552 {5.98081017, 11.7587662}, //
+
53553 {5.98444986, 11.7663002}, //
+
53554 {5.98835993, 11.7724266}, //
+
53555 {5.99256992, 11.7787638}, //
+
53556 {5.99706984, 11.7853107}, //
+
53557 {6.00186014, 11.7920675}, //
+
53558 {6.00693989, 11.7990351}, //
+
53559 {6.01232004, 11.8062115}, //
+
53560 {6.01799011, 11.8135977}, //
+
53561 {6.0239501, 11.8211937}, //
+
53562 {6.0302, 11.8290005}, //
+
53563 {6.03663015, 11.8367653}, //
+
53564 {6.04309988, 11.8442373}, //
+
53565 {6.04962015, 11.8514166}, //
+
53566 {6.05616999, 11.858304}, //
+
53567 {6.06275988, 11.8648977}, //
+
53568 {6.06939983, 11.8711996}, //
+
53569 {6.07607985, 11.8772087}, //
+
53570 {6.0827899, 11.882926}, //
+
53571 {6.08955002, 11.8883495}, //
+
53572 {6.09712982, 11.8918018}, //
+
53573 {6.1047802, 11.8946266}, //
+
53574 {6.11253023, 11.896822}, //
+
53575 {6.12034988, 11.8983898}, //
+
53576 {6.12827015, 11.8993282}, //
+
53577 {6.13626003, 11.8996391}, //
+
53578 {6.14434004, 11.8993206}, //
+
53579 {6.15250015, 11.8983746}, //
+
53580 {6.16074991, 11.8968}, //
+
53581 {6.16886997, 11.8946075}, //
+
53582 {6.17666006, 11.8917875}, //
+
53583 {6.18411016, 11.888339}, //
+
53584 {6.19122982, 11.8842621}, //
+
53585 {6.19800997, 11.8795557}, //
+
53586 {6.20446014, 11.8742218}, //
+
53587 {6.21057987, 11.8682604}, //
+
53588 {6.21635008, 11.8616686}, //
+
53589 {6.22179985, 11.8544502}, //
+
53590 {6.22644997, 11.8477039}, //
+
53591 {6.23134995, 11.8410435}, //
+
53592 {6.23648977, 11.8344669}, //
+
53593 {6.24188995, 11.8279762}, //
+
53594 {6.24754, 11.8215704}, //
+
53595 {6.2534399, 11.8152504}, //
+
53596 {6.25960016, 11.8090153}, //
+
53597 {6.26599979, 11.802865}, //
+
53598 {6.27264977, 11.7967997}, //
+
53599 {6.27951002, 11.7912722}, //
+
53600 {6.28654003, 11.7852421}, //
+
53601 {6.2937398, 11.7787113}, //
+
53602 {6.30109978, 11.7716789}, //
+
53603 {6.30864, 11.7641459}, //
+
53604 {6.31633997, 11.7561111}, //
+
53605 {6.32421017, 11.7475748}, //
+
53606 {6.33225012, 11.7385378}, //
+
53607 {6.34044981, 11.7290001}, //
+
53608 {6.35769987, 11.7063141}, //
+
53609 {6.37328005, 11.6849651}, //
+
53610 {6.38717985, 11.6649561}, //
+
53611 {6.39940023, 11.6462841}, //
+
53612 {6.40994978, 11.6289511}, //
+
53613 {6.41882992, 11.612956}, //
+
53614 {6.42603016, 11.598299}, //
+
53615 {6.43155003, 11.58498}, //
+
53616 {6.43540001, 11.573}, //
+
53617 {6.43689013, 11.5690861}, //
+
53618 {6.43834019, 11.5648794}, //
+
53619 {6.43974018, 11.5603781}, //
+
53620 {6.44110012, 11.555583}, //
+
53621 {6.44242001, 11.5504942}, //
+
53622 {6.44368982, 11.5451107}, //
+
53623 {6.44492006, 11.5394354}, //
+
53624 {6.44610977, 11.5334644}, //
+
53625 {6.44724989, 11.5271997}, //
+
53626 {6.45518017, 11.4823999}, //
+
53627 {6.45744991, 11.4695997}, //
+
53628 {6.45851994, 11.4634724}, //
+
53629 {6.45945978, 11.4578857}, //
+
53630 {6.46027994, 11.4528437}, //
+
53631 {6.46097994, 11.4483461}, //
+
53632 {6.46154022, 11.4443903}, //
+
53633 {6.46197987, 11.4409781}, //
+
53634 {6.46229982, 11.4381094}, //
+
53635 {6.46249008, 11.4357834}, //
+
53636 {6.46255016, 11.434}, //
+
53637 {6.46253014, 11.4325943}, //
+
53638 {6.46247005, 11.4313984}, //
+
53639 {6.46235991, 11.4304113}, //
+
53640 {6.46221018, 11.429635}, //
+
53641 {6.46202993, 11.4290676}, //
+
53642 {6.46179008, 11.4287109}, //
+
53643 {6.4615202, 11.4285641}, //
+
53644 });
+
53645 polys.push_back({
+
53646 {0.566200018, 11.71035}, //
+
53647 {0.563230991, 11.7108107}, //
+
53648 {0.560346007, 11.7114391}, //
+
53649 {0.557543993, 11.7122326}, //
+
53650 {0.554826975, 11.7131939}, //
+
53651 {0.552193999, 11.7143221}, //
+
53652 {0.549643993, 11.7156172}, //
+
53653 {0.547178984, 11.7170782}, //
+
53654 {0.544798017, 11.7187061}, //
+
53655 {0.542500019, 11.7205}, //
+
53656 {0.540286005, 11.7223463}, //
+
53657 {0.538154006, 11.7241068}, //
+
53658 {0.53610599, 11.7257833}, //
+
53659 {0.534139991, 11.7273741}, //
+
53660 {0.532256007, 11.7288799}, //
+
53661 {0.530456007, 11.7302999}, //
+
53662 {0.528738022, 11.7316351}, //
+
53663 {0.527101994, 11.7328854}, //
+
53664 {0.525550008, 11.7340498}, //
+
53665 {0.524123013, 11.7351198}, //
+
53666 {0.521995008, 11.7367163}, //
+
53667 {0.521216989, 11.739768}, //
+
53668 {0.525030971, 11.7407236}, //
+
53669 {0.534829021, 11.7431803}, //
+
53670 {0.539099991, 11.7442503}, //
+
53671 {0.543748021, 11.7453833}, //
+
53672 {0.548645973, 11.7465143}, //
+
53673 {0.553794026, 11.7476444}, //
+
53674 {0.559194028, 11.7487726}, //
+
53675 {0.564844012, 11.7499008}, //
+
53676 {0.570743978, 11.7510281}, //
+
53677 {0.576896012, 11.7521534}, //
+
53678 {0.583298028, 11.7532768}, //
+
53679 {0.589950025, 11.7544003}, //
+
53680 {0.596737981, 11.7555122}, //
+
53681 {0.603524983, 11.7565832}, //
+
53682 {0.610310972, 11.7576113}, //
+
53683 {0.617096007, 11.7585983}, //
+
53684 {0.623879015, 11.7595425}, //
+
53685 {0.630661011, 11.7604437}, //
+
53686 {0.637441993, 11.7613049}, //
+
53687 {0.644222021, 11.7621231}, //
+
53688 {0.651000023, 11.7629004}, //
+
53689 {0.658491015, 11.7645264}, //
+
53690 {0.665898979, 11.7664042}, //
+
53691 {0.673222005, 11.7685328}, //
+
53692 {0.680462003, 11.770915}, //
+
53693 {0.687617004, 11.7735481}, //
+
53694 {0.694688976, 11.776433}, //
+
53695 {0.701677024, 11.7795696}, //
+
53696 {0.708580017, 11.782959}, //
+
53697 {0.715399981, 11.7866001}, //
+
53698 {0.722063005, 11.7903767}, //
+
53699 {0.728474021, 11.7941532}, //
+
53700 {0.734633029, 11.7979279}, //
+
53701 {0.740540981, 11.8017006}, //
+
53702 {0.746195972, 11.8054733}, //
+
53703 {0.751600027, 11.8092442}, //
+
53704 {0.756752014, 11.813014}, //
+
53705 {0.761651993, 11.816783}, //
+
53706 {0.766300023, 11.82055}, //
+
53707 {0.769311011, 11.8227644}, //
+
53708 {0.772321999, 11.8248959}, //
+
53709 {0.775332987, 11.8269444}, //
+
53710 {0.778343976, 11.8289099}, //
+
53711 {0.781355977, 11.8307943}, //
+
53712 {0.784367025, 11.8325939}, //
+
53713 {0.787378013, 11.8343124}, //
+
53714 {0.790389001, 11.835948}, //
+
53715 {0.79339999, 11.8374996}, //
+
53716 {0.798906982, 11.8404694}, //
+
53717 {0.804874003, 11.8433542}, //
+
53718 {0.81129998, 11.8461561}, //
+
53719 {0.818184972, 11.8488731}, //
+
53720 {0.825529993, 11.8515062}, //
+
53721 {0.833333015, 11.8540564}, //
+
53722 {0.841596007, 11.8565207}, //
+
53723 {0.850319028, 11.858902}, //
+
53724 {0.859499991, 11.8612003}, //
+
53725 {0.868691981, 11.8632994}, //
+
53726 {0.877422988, 11.8650618}, //
+
53727 {0.885694027, 11.8664894}, //
+
53728 {0.893504977, 11.8675804}, //
+
53729 {0.900855005, 11.8683357}, //
+
53730 {0.90774399, 11.8687563}, //
+
53731 {0.914173007, 11.8688402}, //
+
53732 {0.920141995, 11.8685884}, //
+
53733 {0.925650001, 11.868}, //
+
53734 {0.927927017, 11.8678741}, //
+
53735 {0.930244982, 11.8674955}, //
+
53736 {0.932605982, 11.8668671}, //
+
53737 {0.935007989, 11.8659849}, //
+
53738 {0.937452018, 11.864852}, //
+
53739 {0.939939022, 11.8634672}, //
+
53740 {0.942466974, 11.8618298}, //
+
53741 {0.945038021, 11.8599405}, //
+
53742 {0.947650015, 11.8577995}, //
+
53743 {0.950231016, 11.8555441}, //
+
53744 {0.952684999, 11.8532858}, //
+
53745 {0.95501101, 11.8510284}, //
+
53746 {0.957210004, 11.8487682}, //
+
53747 {0.959282994, 11.8465071}, //
+
53748 {0.961228013, 11.844244}, //
+
53749 {0.963046014, 11.8419809}, //
+
53750 {0.964735985, 11.839716}, //
+
53751 {0.966300011, 11.83745}, //
+
53752 {0.967769027, 11.8351936}, //
+
53753 {0.969154, 11.8329363}, //
+
53754 {0.970456004, 11.830678}, //
+
53755 {0.971673012, 11.8284178}, //
+
53756 {0.972805977, 11.8261566}, //
+
53757 {0.973855972, 11.8238935}, //
+
53758 {0.974820971, 11.8216314}, //
+
53759 {0.975701988, 11.8193665}, //
+
53760 {0.976499975, 11.8170996}, //
+
53761 {0.977213979, 11.81497}, //
+
53762 {0.979900002, 11.8069496}, //
+
53763 {0.966350019, 11.7560997}, //
+
53764 {0.966350019, 11.7629004}, //
+
53765 {0.96479702, 11.7666674}, //
+
53766 {0.963159978, 11.7704334}, //
+
53767 {0.961439013, 11.7742004}, //
+
53768 {0.959634006, 11.7779675}, //
+
53769 {0.957745016, 11.7817326}, //
+
53770 {0.955771983, 11.7854996}, //
+
53771 {0.953715026, 11.7892666}, //
+
53772 {0.951574981, 11.7930326}, //
+
53773 {0.949349999, 11.7967997}, //
+
53774 {0.946968973, 11.8004827}, //
+
53775 {0.944334984, 11.803998}, //
+
53776 {0.94145, 11.8073444}, //
+
53777 {0.938313007, 11.810523}, //
+
53778 {0.934924006, 11.8135347}, //
+
53779 {0.931282997, 11.8163776}, //
+
53780 {0.927390993, 11.8190527}, //
+
53781 {0.923246026, 11.8215599}, //
+
53782 {0.918850005, 11.8239002}, //
+
53783 {0.91129601, 11.8265448}, //
+
53784 {0.903698981, 11.8284359}, //
+
53785 {0.896061003, 11.8295717}, //
+
53786 {0.888381004, 11.8299541}, //
+
53787 {0.880658984, 11.8295822}, //
+
53788 {0.872893989, 11.8284559}, //
+
53789 {0.865087986, 11.8265753}, //
+
53790 {0.857240021, 11.8239403}, //
+
53791 {0.849349976, 11.82055}, //
+
53792 {0.84158498, 11.816741}, //
+
53793 {0.834113002, 11.812849}, //
+
53794 {0.826933026, 11.8088722}, //
+
53795 {0.820046008, 11.8048124}, //
+
53796 {0.813452005, 11.8006668}, //
+
53797 {0.807150006, 11.7964392}, //
+
53798 {0.801141024, 11.7921267}, //
+
53799 {0.795423985, 11.7877302}, //
+
53800 {0.790000021, 11.7832499}, //
+
53801 {0.789959013, 11.7832079}, //
+
53802 {0.789834976, 11.783082}, //
+
53803 {0.789628029, 11.7828722}, //
+
53804 {0.789337993, 11.7825785}, //
+
53805 {0.788966, 11.7822008}, //
+
53806 {0.788510978, 11.7817392}, //
+
53807 {0.787972987, 11.7811928}, //
+
53808 {0.787352979, 11.7805643}, //
+
53809 {0.786650002, 11.77985}, //
+
53810 {0.780996025, 11.7775002}, //
+
53811 {0.774587989, 11.7749834}, //
+
53812 {0.767427981, 11.7722998}, //
+
53813 {0.759513974, 11.7694502}, //
+
53814 {0.750847995, 11.7664328}, //
+
53815 {0.741428018, 11.7632504}, //
+
53816 {0.731254995, 11.7599001}, //
+
53817 {0.720328987, 11.7563829}, //
+
53818 {0.708649993, 11.7526999}, //
+
53819 {0.695209026, 11.7496052}, //
+
53820 {0.682020009, 11.7463417}, //
+
53821 {0.669082999, 11.7429113}, //
+
53822 {0.656397998, 11.7393122}, //
+
53823 {0.643965006, 11.7355461}, //
+
53824 {0.631783009, 11.7316113}, //
+
53825 {0.619853973, 11.7275085}, //
+
53826 {0.608175993, 11.723238}, //
+
53827 {0.596750021, 11.7187996}, //
+
53828 {0.593025029, 11.716691}, //
+
53829 {0.589381993, 11.7148743}, //
+
53830 {0.585821986, 11.7133503}, //
+
53831 {0.582345009, 11.7121191}, //
+
53832 {0.578951001, 11.7111797}, //
+
53833 {0.575639009, 11.7105331}, //
+
53834 {0.572409987, 11.7101803}, //
+
53835 {0.569263995, 11.7101192}, //
+
53836 });
+
53837 polys.push_back({
+
53838 {4.43490982, 11.7013884}, //
+
53839 {4.43478012, 11.7028341}, //
+
53840 {4.43456984, 11.7044888}, //
+
53841 {4.43427992, 11.7063522}, //
+
53842 {4.43389988, 11.7084246}, //
+
53843 {4.43344021, 11.7107058}, //
+
53844 {4.43288994, 11.7131948}, //
+
53845 {4.43226004, 11.7158928}, //
+
53846 {4.43155003, 11.7187996}, //
+
53847 {4.43072987, 11.7211504}, //
+
53848 {4.42979002, 11.7236671}, //
+
53849 {4.42872, 11.7263498}, //
+
53850 {4.4275198, 11.7292004}, //
+
53851 {4.42619991, 11.7322168}, //
+
53852 {4.42474985, 11.7354002}, //
+
53853 {4.4231801, 11.7387505}, //
+
53854 {4.42148018, 11.7422667}, //
+
53855 {4.41965008, 11.7459497}, //
+
53856 {4.4176302, 11.7495909}, //
+
53857 {4.41530991, 11.7529802}, //
+
53858 {4.41269016, 11.7561169}, //
+
53859 {4.40979004, 11.7590017}, //
+
53860 {4.40658998, 11.7616348}, //
+
53861 {4.40309, 11.7640171}, //
+
53862 {4.39931011, 11.7661457}, //
+
53863 {4.39522982, 11.7680244}, //
+
53864 {4.39085007, 11.7696505}, //
+
53865 {4.39085007, 11.7730503}, //
+
53866 {4.38852978, 11.7738466}, //
+
53867 {4.38607979, 11.7747269}, //
+
53868 {4.38351011, 11.7756891}, //
+
53869 {4.38080978, 11.7767344}, //
+
53870 {4.37798023, 11.7778616}, //
+
53871 {4.37503004, 11.7790718}, //
+
53872 {4.37195015, 11.780365}, //
+
53873 {4.36874008, 11.7817411}, //
+
53874 {4.36539984, 11.7832003}, //
+
53875 {4.36201, 11.7846689}, //
+
53876 {4.35862017, 11.7860537}, //
+
53877 {4.35522985, 11.7873564}, //
+
53878 {4.35184002, 11.7885733}, //
+
53879 {4.3484602, 11.7897062}, //
+
53880 {4.34506989, 11.7907562}, //
+
53881 {4.34168005, 11.7917213}, //
+
53882 {4.33829021, 11.7926016}, //
+
53883 {4.3348999, 11.7933998}, //
+
53884 {4.33157015, 11.7940722}, //
+
53885 {4.32837009, 11.7945747}, //
+
53886 {4.32530022, 11.7949114}, //
+
53887 {4.32235003, 11.7950792}, //
+
53888 {4.31953001, 11.7950792}, //
+
53889 {4.31683016, 11.7949114}, //
+
53890 {4.31426001, 11.7945747}, //
+
53891 {4.31182003, 11.7940722}, //
+
53892 {4.30950022, 11.7933998}, //
+
53893 {4.30779982, 11.7926016}, //
+
53894 {4.30571985, 11.7917213}, //
+
53895 {4.30326986, 11.7907562}, //
+
53896 {4.30043983, 11.7897062}, //
+
53897 {4.29723978, 11.7885733}, //
+
53898 {4.29366016, 11.7873564}, //
+
53899 {4.28970003, 11.7860537}, //
+
53900 {4.28535986, 11.7846689}, //
+
53901 {4.28065014, 11.7832003}, //
+
53902 {4.27570009, 11.7816992}, //
+
53903 {4.27061987, 11.7801981}, //
+
53904 {4.26540995, 11.7786942}, //
+
53905 {4.26007986, 11.7771902}, //
+
53906 {4.25462008, 11.7756853}, //
+
53907 {4.24903011, 11.7741776}, //
+
53908 {4.24330997, 11.7726698}, //
+
53909 {4.23747015, 11.7711601}, //
+
53910 {4.23150015, 11.7696505}, //
+
53911 {4.22563982, 11.7682753}, //
+
53912 {4.22011995, 11.7671509}, //
+
53913 {4.21493006, 11.7662783}, //
+
53914 {4.21008015, 11.7656546}, //
+
53915 {4.20556021, 11.7652826}, //
+
53916 {4.20136976, 11.7651606}, //
+
53917 {4.19750977, 11.7652903}, //
+
53918 {4.19399023, 11.7656698}, //
+
53919 {4.19080019, 11.7663002}, //
+
53920 {4.18776989, 11.767087}, //
+
53921 {4.18469, 11.7679586}, //
+
53922 {4.18158007, 11.7689171}, //
+
53923 {4.17842007, 11.7699594}, //
+
53924 {4.17522001, 11.7710867}, //
+
53925 {4.1719799, 11.7722998}, //
+
53926 {4.1686902, 11.7735977}, //
+
53927 {4.16536999, 11.7749805}, //
+
53928 {4.16200018, 11.7764502}, //
+
53929 {4.15864992, 11.7779598}, //
+
53930 {4.15538979, 11.7794704}, //
+
53931 {4.15221024, 11.7809782}, //
+
53932 {4.14910984, 11.782485}, //
+
53933 {4.14609003, 11.7839899}, //
+
53934 {4.14315987, 11.7854939}, //
+
53935 {4.1402998, 11.7869978}, //
+
53936 {4.13753986, 11.7884989}, //
+
53937 {4.13485003, 11.79}, //
+
53938 {4.13235998, 11.7914267}, //
+
53939 {4.12827015, 11.7937784}, //
+
53940 {4.12708998, 11.7944546}, //
+
53941 {4.12706995, 11.7945433}, //
+
53942 {4.12678003, 11.7968063}, //
+
53943 {4.12677002, 11.7968388}, //
+
53944 {4.12899017, 11.7968616}, //
+
53945 {4.13490009, 11.7970486}, //
+
53946 {4.14071989, 11.7973614}, //
+
53947 {4.14645004, 11.7977982}, //
+
53948 {4.15210009, 11.7983589}, //
+
53949 {4.15767002, 11.7990437}, //
+
53950 {4.16314983, 11.7998552}, //
+
53951 {4.16854, 11.8007898}, //
+
53952 {4.17385006, 11.8018503}, //
+
53953 {4.17905998, 11.8029833}, //
+
53954 {4.18415022, 11.8041172}, //
+
53955 {4.18911982, 11.8052502}, //
+
53956 {4.19395018, 11.8063831}, //
+
53957 {4.1986599, 11.8075171}, //
+
53958 {4.20324993, 11.80865}, //
+
53959 {4.20770979, 11.809783}, //
+
53960 {4.21203995, 11.8109169}, //
+
53961 {4.21624994, 11.8120499}, //
+
53962 {4.22016001, 11.8131199}, //
+
53963 {4.22361994, 11.814065}, //
+
53964 {4.22661018, 11.8148832}, //
+
53965 {4.2291398, 11.8155756}, //
+
53966 {4.23121977, 11.816143}, //
+
53967 {4.23398018, 11.8168983}, //
+
53968 {4.2349, 11.8171501}, //
+
53969 {4.23565006, 11.8169613}, //
+
53970 {4.23697996, 11.8166246}, //
+
53971 {4.23789978, 11.8163939}, //
+
53972 {4.23897982, 11.8161221}, //
+
53973 {4.2416501, 11.8154497}, //
+
53974 {4.2431798, 11.815093}, //
+
53975 {4.24475002, 11.8147783}, //
+
53976 {4.24636984, 11.8145056}, //
+
53977 {4.24802017, 11.8142748}, //
+
53978 {4.24971008, 11.814086}, //
+
53979 {4.25145006, 11.8139391}, //
+
53980 {4.25323009, 11.8138342}, //
+
53981 {4.25504017, 11.8137712}, //
+
53982 {4.25689983, 11.8137503}, //
+
53983 {4.25872993, 11.8137922}, //
+
53984 {4.26042986, 11.8139181}, //
+
53985 {4.26200008, 11.8141279}, //
+
53986 {4.26345015, 11.8144217}, //
+
53987 {4.26477003, 11.8147993}, //
+
53988 {4.26597023, 11.8152609}, //
+
53989 {4.26703978, 11.8158073}, //
+
53990 {4.2679801, 11.8164358}, //
+
53991 {4.26879978, 11.8171501}, //
+
53992 {4.27559996, 11.8171501}, //
+
53993 {4.27720022, 11.8179264}, //
+
53994 {4.27901983, 11.8187428}, //
+
53995 {4.28104019, 11.8196001}, //
+
53996 {4.2832799, 11.8204985}, //
+
53997 {4.28571987, 11.8214369}, //
+
53998 {4.28838015, 11.8224173}, //
+
53999 {4.29124022, 11.8234367}, //
+
54000 {4.29432011, 11.8244982}, //
+
54001 {4.29759979, 11.8255997}, //
+
54002 {4.30102015, 11.8266907}, //
+
54003 {4.30448008, 11.8276987}, //
+
54004 {4.30798006, 11.8286219}, //
+
54005 {4.31153011, 11.8294621}, //
+
54006 {4.31511021, 11.8302174}, //
+
54007 {4.31872988, 11.8308887}, //
+
54008 {4.32240009, 11.8314772}, //
+
54009 {4.32609987, 11.8319798}, //
+
54010 {4.3298502, 11.8324003}, //
+
54011 {4.33352995, 11.832715}, //
+
54012 {4.33704996, 11.8329039}, //
+
54013 {4.34039021, 11.8329668}, //
+
54014 {4.34357023, 11.8329039}, //
+
54015 {4.34658003, 11.832715}, //
+
54016 {4.34943008, 11.8324003}, //
+
54017 {4.3520999, 11.8319588}, //
+
54018 {4.35460997, 11.8313932}, //
+
54019 {4.35694981, 11.8306999}, //
+
54020 {4.35928011, 11.8298597}, //
+
54021 {4.3617301, 11.8288527}, //
+
54022 {4.36430979, 11.8276777}, //
+
54023 {4.36701012, 11.826335}, //
+
54024 {4.36984015, 11.8248234}, //
+
54025 {4.37278986, 11.823144}, //
+
54026 {4.37587023, 11.8212976}, //
+
54027 {4.37906981, 11.8192825}, //
+
54028 {4.38240004, 11.8170996}, //
+
54029 {4.3858099, 11.8148022}, //
+
54030 {4.38925982, 11.8124208}, //
+
54031 {4.3927598, 11.8099556}, //
+
54032 {4.39628983, 11.8074064}, //
+
54033 {4.39986992, 11.8047733}, //
+
54034 {4.40349007, 11.8020563}, //
+
54035 {4.40714979, 11.7992544}, //
+
54036 {4.41085005, 11.7963686}, //
+
54037 {4.4145999, 11.7933998}, //
+
54038 {4.41815996, 11.790472}, //
+
54039 {4.42129993, 11.7877111}, //
+
54040 {4.42401981, 11.7851171}, //
+
54041 {4.42632008, 11.7826891}, //
+
54042 {4.42819977, 11.7804279}, //
+
54043 {4.42966986, 11.7783327}, //
+
54044 {4.43070984, 11.7764063}, //
+
54045 {4.43134022, 11.7746439}, //
+
54046 {4.43155003, 11.7730503}, //
+
54047 {4.43157005, 11.7714863}, //
+
54048 {4.43163013, 11.7697964}, //
+
54049 {4.43173981, 11.7679777}, //
+
54050 {4.43189001, 11.7660332}, //
+
54051 {4.43206978, 11.7639599}, //
+
54052 {4.4323101, 11.7617607}, //
+
54053 {4.43257999, 11.7594347}, //
+
54054 {4.43288994, 11.7569809}, //
+
54055 {4.43324995, 11.7544003}, //
+
54056 {4.43360996, 11.7517662}, //
+
54057 {4.43391991, 11.7491312}, //
+
54058 {4.4341898, 11.7464943}, //
+
54059 {4.43443012, 11.7438574}, //
+
54060 {4.43460989, 11.7412176}, //
+
54061 {4.43476009, 11.7385778}, //
+
54062 {4.43486977, 11.7359362}, //
+
54063 {4.43492985, 11.7332935}, //
+
54064 {4.43494987, 11.7306499}, //
+
54065 {4.43494987, 11.7001495}, //
+
54066 });
+
54067 polys.push_back({
+
54068 {0.997350991, 11.7098455}, //
+
54069 {0.996975005, 11.7100353}, //
+
54070 {0.996850014, 11.71035}, //
+
54071 {0.996932983, 11.7107687}, //
+
54072 {0.997183025, 11.7112713}, //
+
54073 {0.997600019, 11.7118559}, //
+
54074 {0.998183012, 11.7125235}, //
+
54075 {0.998933017, 11.713273}, //
+
54076 {0.999849975, 11.7141056}, //
+
54077 {1.00092995, 11.7150211}, //
+
54078 {1.00217998, 11.7160187}, //
+
54079 {1.0036, 11.7171001}, //
+
54080 {1.00516999, 11.7182331}, //
+
54081 {1.00687003, 11.719367}, //
+
54082 {1.00869, 11.7205}, //
+
54083 {1.01064003, 11.721633}, //
+
54084 {1.01270998, 11.7227669}, //
+
54085 {1.01490998, 11.7238998}, //
+
54086 {1.01723003, 11.7250328}, //
+
54087 {1.01968002, 11.7261667}, //
+
54088 {1.02225006, 11.7272997}, //
+
54089 {1.02487004, 11.7284117}, //
+
54090 {1.02744997, 11.7294798}, //
+
54091 {1.02998996, 11.7305059}, //
+
54092 {1.03248, 11.7314882}, //
+
54093 {1.03492999, 11.7324266}, //
+
54094 {1.03734004, 11.7333221}, //
+
54095 {1.03970003, 11.7341747}, //
+
54096 {1.04201996, 11.7349844}, //
+
54097 {1.04429996, 11.7357502}, //
+
54098 {1.04729998, 11.7365685}, //
+
54099 {1.05025995, 11.7375097}, //
+
54100 {1.05316997, 11.7385778}, //
+
54101 {1.05604005, 11.7397699}, //
+
54102 {1.05886996, 11.741086}, //
+
54103 {1.06166005, 11.742528}, //
+
54104 {1.06439996, 11.7440939}, //
+
54105 {1.06710005, 11.7457848}, //
+
54106 {1.06974995, 11.7475996}, //
+
54107 {1.07236004, 11.7495098}, //
+
54108 {1.07493997, 11.751462}, //
+
54109 {1.07746994, 11.7534561}, //
+
54110 {1.07995999, 11.7554913}, //
+
54111 {1.08240998, 11.7575693}, //
+
54112 {1.08482003, 11.7596893}, //
+
54113 {1.08719003, 11.7618513}, //
+
54114 {1.08950996, 11.7640543}, //
+
54115 {1.09179997, 11.7663002}, //
+
54116 {1.09473002, 11.7685137}, //
+
54117 {1.09748995, 11.7706461}, //
+
54118 {1.10008001, 11.7726936}, //
+
54119 {1.10250998, 11.7746601}, //
+
54120 {1.10476995, 11.7765436}, //
+
54121 {1.10687006, 11.7783442}, //
+
54122 {1.10879004, 11.7800617}, //
+
54123 {1.11056006, 11.7816982}, //
+
54124 {1.11214995, 11.7832499}, //
+
54125 {1.11214995, 11.77985}, //
+
54126 {1.11213005, 11.7790728}, //
+
54127 {1.11206996, 11.7782555}, //
+
54128 {1.11196005, 11.7773943}, //
+
54129 {1.11180997, 11.7764921}, //
+
54130 {1.11162996, 11.775548}, //
+
54131 {1.11138999, 11.7745609}, //
+
54132 {1.11111999, 11.7735329}, //
+
54133 {1.11081004, 11.7724619}, //
+
54134 {1.11045003, 11.7713499}, //
+
54135 {1.11006999, 11.7702274}, //
+
54136 {1.10968995, 11.7691031}, //
+
54137 {1.10932004, 11.7679777}, //
+
54138 {1.10894001, 11.7668514}, //
+
54139 {1.10855997, 11.7657232}, //
+
54140 {1.10818005, 11.7645941}, //
+
54141 {1.10781002, 11.763464}, //
+
54142 {1.10742998, 11.7623329}, //
+
54143 {1.10704994, 11.7612}, //
+
54144 {1.10664999, 11.760088}, //
+
54145 {1.10620999, 11.759017}, //
+
54146 {1.10573006, 11.7579889}, //
+
54147 {1.10520005, 11.7570019}, //
+
54148 {1.10464001, 11.7560577}, //
+
54149 {1.10403001, 11.7551556}, //
+
54150 {1.10337996, 11.7542953}, //
+
54151 {1.10267997, 11.7534771}, //
+
54152 {1.10195005, 11.7526999}, //
+
54153 {1.10176003, 11.7519131}, //
+
54154 {1.10119998, 11.7510414}, //
+
54155 {1.10026002, 11.750083}, //
+
54156 {1.09894001, 11.7490406}, //
+
54157 {1.09723997, 11.7479134}, //
+
54158 {1.09517002, 11.7467003}, //
+
54159 {1.09272003, 11.7454023}, //
+
54160 {1.08990002, 11.7440186}, //
+
54161 {1.08669996, 11.7425499}, //
+
54162 {1.08323002, 11.7410393}, //
+
54163 {1.07958996, 11.7395277}, //
+
54164 {1.07578003, 11.7380171}, //
+
54165 {1.07179999, 11.7365065}, //
+
54166 {1.06765997, 11.7349939}, //
+
54167 {1.06333995, 11.7334833}, //
+
54168 {1.05885994, 11.7319717}, //
+
54169 {1.05421996, 11.7304611}, //
+
54170 {1.04939997, 11.7289495}, //
+
54171 {1.04452002, 11.7274084}, //
+
54172 {1.03968, 11.7257824}, //
+
54173 {1.03489006, 11.7240725}, //
+
54174 {1.03014004, 11.7222776}, //
+
54175 {1.02541995, 11.7204008}, //
+
54176 {1.02076006, 11.7184391}, //
+
54177 {1.01612997, 11.7163935}, //
+
54178 {1.01154006, 11.7142639}, //
+
54179 {1.00699997, 11.7120504}, //
+
54180 {1.00487006, 11.7113571}, //
+
54181 {1.00299001, 11.7107906}, //
+
54182 {1.00136006, 11.71035}, //
+
54183 {0.999983013, 11.7100353}, //
+
54184 {0.998854995, 11.7098455}, //
+
54185 {0.997977972, 11.7097826}, //
+
54186 });
+
54187 polys.push_back({
+
54188 {1.17166996, 11.7426119}, //
+
54189 {1.17023003, 11.7427988}, //
+
54190 {1.16883004, 11.7431107}, //
+
54191 {1.16747999, 11.7435484}, //
+
54192 {1.16615999, 11.7441092}, //
+
54193 {1.16488004, 11.7447939}, //
+
54194 {1.16365004, 11.7456055}, //
+
54195 {1.16244996, 11.7465401}, //
+
54196 {1.16129994, 11.7475996}, //
+
54197 {1.16018999, 11.7487116}, //
+
54198 {1.15911996, 11.7497826}, //
+
54199 {1.15616, 11.7527418}, //
+
54200 {1.15525997, 11.753644}, //
+
54201 {1.15439999, 11.7545052}, //
+
54202 {1.15279996, 11.7560997}, //
+
54203 {1.15205002, 11.7575274}, //
+
54204 {1.15129006, 11.7587862}, //
+
54205 {1.15053999, 11.7598782}, //
+
54206 {1.14979005, 11.7608013}, //
+
54207 {1.14903998, 11.7615566}, //
+
54208 {1.14829004, 11.7621441}, //
+
54209 {1.14753997, 11.7625637}, //
+
54210 {1.14680004, 11.7628164}, //
+
54211 {1.14604998, 11.7629004}, //
+
54212 {1.15110004, 11.7629004}, //
+
54213 {1.15225005, 11.7629213}, //
+
54214 {1.15345001, 11.7629843}, //
+
54215 {1.15468001, 11.7630892}, //
+
54216 {1.15595996, 11.763236}, //
+
54217 {1.15727997, 11.7634249}, //
+
54218 {1.15863001, 11.7636557}, //
+
54219 {1.16003001, 11.7639284}, //
+
54220 {1.16147006, 11.7642431}, //
+
54221 {1.16295004, 11.7645998}, //
+
54222 {1.16445994, 11.7649574}, //
+
54223 {1.16596997, 11.7652721}, //
+
54224 {1.16747999, 11.7655439}, //
+
54225 {1.16899002, 11.7657747}, //
+
54226 {1.17051005, 11.7659636}, //
+
54227 {1.17201996, 11.7661114}, //
+
54228 {1.17352998, 11.7662163}, //
+
54229 {1.17504001, 11.7662792}, //
+
54230 {1.17655003, 11.7663002}, //
+
54231 {1.19009995, 11.7663002}, //
+
54232 {1.19319999, 11.767045}, //
+
54233 {1.19646001, 11.7677908}, //
+
54234 {1.19989002, 11.7685394}, //
+
54235 {1.20349002, 11.7692881}, //
+
54236 {1.20725, 11.7700377}, //
+
54237 {1.21118999, 11.7707891}, //
+
54238 {1.21528995, 11.7715406}, //
+
54239 {1.21956003, 11.772295}, //
+
54240 {1.22399998, 11.7730503}, //
+
54241 {1.25279999, 11.7730503}, //
+
54242 {1.25170004, 11.7686958}, //
+
54243 {1.25064003, 11.764677}, //
+
54244 {1.24961996, 11.760994}, //
+
54245 {1.24863994, 11.7576485}, //
+
54246 {1.24769998, 11.7546358}, //
+
54247 {1.24679995, 11.7519608}, //
+
54248 {1.24593997, 11.7496223}, //
+
54249 {1.24583006, 11.7493496}, //
+
54250 {1.22064996, 11.7493496}, //
+
54251 {1.21766996, 11.7493076}, //
+
54252 {1.21477997, 11.7491817}, //
+
54253 {1.21196997, 11.7489719}, //
+
54254 {1.20923996, 11.7486782}, //
+
54255 {1.20659995, 11.7483006}, //
+
54256 {1.20404994, 11.747839}, //
+
54257 {1.20158005, 11.7472935}, //
+
54258 {1.19920003, 11.746664}, //
+
54259 {1.19690001, 11.7459497}, //
+
54260 {1.19458997, 11.7459078}, //
+
54261 {1.19219995, 11.7457819}, //
+
54262 {1.18973005, 11.7455721}, //
+
54263 {1.18717003, 11.7452784}, //
+
54264 {1.18453002, 11.7449007}, //
+
54265 {1.18181002, 11.7444391}, //
+
54266 {1.17901003, 11.7438927}, //
+
54267 {1.17612004, 11.7432642}, //
+
54268 {1.17314994, 11.7425499}, //
+
54269 });
+
54270 polys.push_back({
+
54271 {4.1637001, 11.7222004}, //
+
54272 {4.16445017, 11.7229557}, //
+
54273 {4.16520977, 11.723711}, //
+
54274 {4.16595984, 11.7244673}, //
+
54275 {4.1667099, 11.7252216}, //
+
54276 {4.16745996, 11.7259779}, //
+
54277 {4.16821003, 11.7267332}, //
+
54278 {4.16896009, 11.7274895}, //
+
54279 {4.16970015, 11.7282438}, //
+
54280 {4.17045021, 11.7290001}, //
+
54281 {4.17120981, 11.7297764}, //
+
54282 {4.17195988, 11.7305927}, //
+
54283 {4.17271996, 11.7314501}, //
+
54284 {4.17347002, 11.7323484}, //
+
54285 {4.1742301, 11.7332869}, //
+
54286 {4.17498016, 11.7342672}, //
+
54287 {4.17573977, 11.7352867}, //
+
54288 {4.17648983, 11.7363482}, //
+
54289 {4.17724991, 11.7374496}, //
+
54290 {4.17797995, 11.7385616}, //
+
54291 {4.17867994, 11.7396326}, //
+
54292 {4.17932987, 11.7406607}, //
+
54293 {4.17994022, 11.7416477}, //
+
54294 {4.18050003, 11.7425919}, //
+
54295 {4.1810298, 11.743494}, //
+
54296 {4.18150997, 11.7443552}, //
+
54297 {4.18195009, 11.7451735}, //
+
54298 {4.18235016, 11.7459497}, //
+
54299 {4.18302011, 11.7472935}, //
+
54300 {4.18329, 11.747839}, //
+
54301 {4.18352985, 11.7483006}, //
+
54302 {4.18385983, 11.7489719}, //
+
54303 {4.18396997, 11.7491817}, //
+
54304 {4.18405008, 11.7493496}, //
+
54305 {4.18739986, 11.7222004}, //
+
54306 {4.17045021, 11.6917}, //
+
54307 });
+
54308 polys.push_back({
+
54309 {3.18379998, 11.7323999}, //
+
54310 {3.18003011, 11.7324409}, //
+
54311 {3.17627001, 11.7325649}, //
+
54312 {3.1724999, 11.7327719}, //
+
54313 {3.16873002, 11.7330618}, //
+
54314 {3.16496992, 11.7334337}, //
+
54315 {3.16120005, 11.7338886}, //
+
54316 {3.15742993, 11.7344275}, //
+
54317 {3.15367007, 11.7350473}, //
+
54318 {3.14989996, 11.7357502}, //
+
54319 {3.14762998, 11.7357712}, //
+
54320 {3.14537001, 11.7358341}, //
+
54321 {3.14311004, 11.735939}, //
+
54322 {3.14084005, 11.7360859}, //
+
54323 {3.13858008, 11.7362747}, //
+
54324 {3.13632011, 11.7365065}, //
+
54325 {3.13405991, 11.7367783}, //
+
54326 {3.13180995, 11.737093}, //
+
54327 {3.12954998, 11.7374496}, //
+
54328 {3.12734008, 11.7378492}, //
+
54329 {3.12520003, 11.7382898}, //
+
54330 {3.12315989, 11.7387724}, //
+
54331 {3.12119007, 11.7392969}, //
+
54332 {3.1193099, 11.7398643}, //
+
54333 {3.11751008, 11.7404718}, //
+
54334 {3.11578989, 11.7411232}, //
+
54335 {3.11415005, 11.7418146}, //
+
54336 {3.11260009, 11.7425499}, //
+
54337 {3.11117005, 11.7432642}, //
+
54338 {3.10881996, 11.7444391}, //
+
54339 {3.10588002, 11.7459078}, //
+
54340 {3.10579991, 11.7459497}, //
+
54341 {3.11599994, 11.7459497}, //
+
54342 {3.11898994, 11.7459288}, //
+
54343 {3.1219399, 11.7458658}, //
+
54344 {3.12484002, 11.7457609}, //
+
54345 {3.1277101, 11.7456141}, //
+
54346 {3.13053012, 11.7454252}, //
+
54347 {3.13331008, 11.7451944}, //
+
54348 {3.13604999, 11.7449217}, //
+
54349 {3.13875008, 11.744607}, //
+
54350 {3.1414001, 11.7442503}, //
+
54351 {3.14402008, 11.7438927}, //
+
54352 {3.14660001, 11.743578}, //
+
54353 {3.14913988, 11.7433062}, //
+
54354 {3.15162992, 11.7430754}, //
+
54355 {3.15407991, 11.7428856}, //
+
54356 {3.15649009, 11.7427387}, //
+
54357 {3.15884995, 11.7426338}, //
+
54358 {3.16117001, 11.7425709}, //
+
54359 {3.16345, 11.7425499}, //
+
54360 {3.1642499, 11.7432432}, //
+
54361 {3.1651299, 11.7438087}, //
+
54362 {3.16609001, 11.7442503}, //
+
54363 {3.16712999, 11.744565}, //
+
54364 {3.1682601, 11.7447538}, //
+
54365 {3.16947007, 11.7448168}, //
+
54366 {3.17076993, 11.7447538}, //
+
54367 {3.17213988, 11.744565}, //
+
54368 {3.17359996, 11.7442503}, //
+
54369 {3.17514992, 11.7438717}, //
+
54370 {3.17679, 11.743494}, //
+
54371 {3.17850995, 11.7431173}, //
+
54372 {3.18031001, 11.7427387}, //
+
54373 {3.18218994, 11.7423611}, //
+
54374 {3.18415999, 11.7419834}, //
+
54375 {3.1861999, 11.7416058}, //
+
54376 {3.18833995, 11.7412281}, //
+
54377 {3.19055009, 11.7408504}, //
+
54378 {3.19277, 11.7404718}, //
+
54379 {3.19491005, 11.7400942}, //
+
54380 {3.19696999, 11.7397165}, //
+
54381 {3.19894004, 11.7393389}, //
+
54382 {3.20081997, 11.7389612}, //
+
54383 {3.20262003, 11.7385826}, //
+
54384 {3.20432997, 11.7382059}, //
+
54385 {3.20596004, 11.7378283}, //
+
54386 {3.20749998, 11.7374496}, //
+
54387 {3.20897007, 11.737072}, //
+
54388 {3.21035004, 11.7366943}, //
+
54389 {3.21165991, 11.7363167}, //
+
54390 {3.21286988, 11.735939}, //
+
54391 {3.21401, 11.7355614}, //
+
54392 {3.21506, 11.7351828}, //
+
54393 {3.21602011, 11.7348061}, //
+
54394 {3.21690011, 11.7344284}, //
+
54395 {3.2177, 11.7340498}, //
+
54396 {3.21836996, 11.7337036}, //
+
54397 {3.21887994, 11.7333984}, //
+
54398 {3.21920991, 11.7331333}, //
+
54399 {3.2193799, 11.7329092}, //
+
54400 {3.2193799, 11.7327261}, //
+
54401 {3.21920991, 11.732583}, //
+
54402 {3.21887994, 11.732481}, //
+
54403 {3.21836996, 11.73242}, //
+
54404 {3.2177, 11.7323999}, //
+
54405 });
+
54406 polys.push_back({
+
54407 {0.559491992, 11.5358038}, //
+
54408 {0.559617996, 11.5361166}, //
+
54409 {0.559827983, 11.5366392}, //
+
54410 {0.560961008, 11.5394564}, //
+
54411 {0.561506987, 11.5408115}, //
+
54412 {0.562135994, 11.5423775}, //
+
54413 {0.562849998, 11.5441504}, //
+
54414 {0.563605011, 11.5460176}, //
+
54415 {0.564359009, 11.5478439}, //
+
54416 {0.565110981, 11.5496283}, //
+
54417 {0.565862, 11.5513697}, //
+
54418 {0.566612005, 11.5530701}, //
+
54419 {0.567360997, 11.5547276}, //
+
54420 {0.568108976, 11.556344}, //
+
54421 {0.568854988, 11.5579176}, //
+
54422 {0.569599986, 11.5594501}, //
+
54423 {0.570376992, 11.5609598}, //
+
54424 {0.571195006, 11.5624704}, //
+
54425 {0.572055995, 11.5639782}, //
+
54426 {0.572957993, 11.565485}, //
+
54427 {0.573902011, 11.5669899}, //
+
54428 {0.574889004, 11.5684938}, //
+
54429 {0.575917006, 11.5699978}, //
+
54430 {0.576987982, 11.5714989}, //
+
54431 {0.578100026, 11.573}, //
+
54432 {0.579253972, 11.5744267}, //
+
54433 {0.580447972, 11.5756865}, //
+
54434 {0.58168298, 11.5767784}, //
+
54435 {0.582958996, 11.5777006}, //
+
54436 {0.584276021, 11.5784569}, //
+
54437 {0.58563298, 11.5790443}, //
+
54438 {0.587031007, 11.579464}, //
+
54439 {0.588469982, 11.5797157}, //
+
54440 {0.589950025, 11.5797997}, //
+
54441 {0.590830982, 11.5797577}, //
+
54442 {0.59196198, 11.5796318}, //
+
54443 {0.593343973, 11.579422}, //
+
54444 {0.594977021, 11.5791283}, //
+
54445 {0.596859992, 11.5787506}, //
+
54446 {0.598994017, 11.578289}, //
+
54447 {0.601378977, 11.5777426}, //
+
54448 {0.604013979, 11.5771141}, //
+
54449 {0.606899977, 11.5763998}, //
+
54450 {0.611442983, 11.5763788}, //
+
54451 {0.616028011, 11.5763159}, //
+
54452 {0.620656013, 11.576211}, //
+
54453 {0.625325024, 11.5760641}, //
+
54454 {0.630035996, 11.5758753}, //
+
54455 {0.63478899, 11.5756435}, //
+
54456 {0.639584005, 11.5753717}, //
+
54457 {0.644420981, 11.575057}, //
+
54458 {0.649299979, 11.5747004}, //
+
54459 {0.654178977, 11.5743637}, //
+
54460 {0.659016013, 11.5741119}, //
+
54461 {0.663811028, 11.5739441}, //
+
54462 {0.668564022, 11.5738602}, //
+
54463 {0.673274994, 11.5738602}, //
+
54464 {0.677944005, 11.5739441}, //
+
54465 {0.682572007, 11.5741119}, //
+
54466 {0.687156975, 11.5743637}, //
+
54467 {0.691699982, 11.5747004}, //
+
54468 {0.69601202, 11.5751829}, //
+
54469 {0.699904978, 11.5758753}, //
+
54470 {0.703378022, 11.5767784}, //
+
54471 {0.706430972, 11.5778904}, //
+
54472 {0.709064007, 11.5792122}, //
+
54473 {0.711278021, 11.5807438}, //
+
54474 {0.713072002, 11.5824862}, //
+
54475 {0.714446008, 11.5844383}, //
+
54476 {0.715399981, 11.5866003}, //
+
54477 {0.715442002, 11.5873451}, //
+
54478 {0.715568006, 11.5880909}, //
+
54479 {0.715777993, 11.5888386}, //
+
54480 {0.716072023, 11.5895882}, //
+
54481 {0.716449022, 11.5903378}, //
+
54482 {0.716911018, 11.5910892}, //
+
54483 {0.717456996, 11.5918407}, //
+
54484 {0.718086004, 11.5925951}, //
+
54485 {0.718800008, 11.5933504}, //
+
54486 {0.71884203, 11.5955744}, //
+
54487 {0.718967974, 11.5977135}, //
+
54488 {0.719178021, 11.5997667}, //
+
54489 {0.719471991, 11.6017351}, //
+
54490 {0.71984899, 11.6036186}, //
+
54491 {0.720310986, 11.6054173}, //
+
54492 {0.720857024, 11.6071301}, //
+
54493 {0.721485972, 11.608757}, //
+
54494 {0.722199976, 11.6103001}, //
+
54495 {0.723038971, 11.6118517}, //
+
54496 {0.724044025, 11.6134882}, //
+
54497 {0.725216985, 11.6152058}, //
+
54498 {0.726556003, 11.6170063}, //
+
54499 {0.72806102, 11.6188898}, //
+
54500 {0.72973299, 11.6208563}, //
+
54501 {0.731571972, 11.6229038}, //
+
54502 {0.733578026, 11.6250362}, //
+
54503 {0.73575002, 11.6272497}, //
+
54504 {0.738183022, 11.6295576}, //
+
54505 {0.740949988, 11.6319494}, //
+
54506 {0.744050026, 11.6344223}, //
+
54507 {0.747483015, 11.6369781}, //
+
54508 {0.751250029, 11.639617}, //
+
54509 {0.755349994, 11.6423388}, //
+
54510 {0.75978303, 11.6451426}, //
+
54511 {0.764549971, 11.6480303}, //
+
54512 {0.769649982, 11.651}, //
+
54513 {0.778778017, 11.6556482}, //
+
54514 {0.78807497, 11.6605463}, //
+
54515 {0.797538996, 11.6656942}, //
+
54516 {0.807170987, 11.6710939}, //
+
54517 {0.816971004, 11.6767445}, //
+
54518 {0.826938987, 11.6826439}, //
+
54519 {0.837074995, 11.688796}, //
+
54520 {0.847378016, 11.6951981}, //
+
54521 {0.857850015, 11.7018499}, //
+
54522 {0.863032997, 11.7062464}, //
+
54523 {0.868049979, 11.710391}, //
+
54524 {0.872900009, 11.714283}, //
+
54525 {0.877583027, 11.7179241}, //
+
54526 {0.882099986, 11.7213135}, //
+
54527 {0.886449993, 11.7244501}, //
+
54528 {0.890632987, 11.727335}, //
+
54529 {0.894649982, 11.729969}, //
+
54530 {0.898500025, 11.7323503}, //
+
54531 {0.902056992, 11.7344913}, //
+
54532 {0.905196011, 11.7363796}, //
+
54533 {0.907917023, 11.7380171}, //
+
54534 {0.910219014, 11.7394018}, //
+
54535 {0.912101984, 11.7405348}, //
+
54536 {0.913567007, 11.7414169}, //
+
54537 {0.914613008, 11.7420464}, //
+
54538 {0.915241003, 11.742424}, //
+
54539 {0.915449977, 11.7425499}, //
+
54540 {0.916226983, 11.7425079}, //
+
54541 {0.917044997, 11.742382}, //
+
54542 {0.917905986, 11.7421722}, //
+
54543 {0.918807983, 11.7418776}, //
+
54544 {0.919752002, 11.7415009}, //
+
54545 {0.920738995, 11.7410393}, //
+
54546 {0.921766996, 11.7404928}, //
+
54547 {0.922837973, 11.7398643}, //
+
54548 {0.923950016, 11.73915}, //
+
54549 {0.925104022, 11.7383938}, //
+
54550 {0.926298022, 11.7376394}, //
+
54551 {0.927532971, 11.7368832}, //
+
54552 {0.928808987, 11.7361279}, //
+
54553 {0.930126011, 11.7353716}, //
+
54554 {0.931482971, 11.7346172}, //
+
54555 {0.932880998, 11.733861}, //
+
54556 {0.934319973, 11.7331057}, //
+
54557 {0.935800016, 11.7323503}, //
+
54558 {0.937268972, 11.7316046}, //
+
54559 {0.938654006, 11.7308588}, //
+
54560 {0.939956009, 11.7301111}, //
+
54561 {0.941173017, 11.7293615}, //
+
54562 {0.942305982, 11.7286119}, //
+
54563 {0.943355978, 11.7278614}, //
+
54564 {0.944320977, 11.727109}, //
+
54565 {0.945201993, 11.7263546}, //
+
54566 {0.94599998, 11.7256002}, //
+
54567 {0.949400008, 11.7222004}, //
+
54568 {0.929050028, 11.66115}, //
+
54569 {0.929050028, 11.6934004}, //
+
54570 {0.929028988, 11.6937771}, //
+
54571 {0.928965986, 11.6941528}, //
+
54572 {0.928861022, 11.6945276}, //
+
54573 {0.928713977, 11.6949015}, //
+
54574 {0.928524971, 11.6952734}, //
+
54575 {0.928294003, 11.6956444}, //
+
54576 {0.928022027, 11.6960144}, //
+
54577 {0.927707016, 11.6963835}, //
+
54578 {0.927349985, 11.6967497}, //
+
54579 {0.926950991, 11.6971283}, //
+
54580 {0.926509976, 11.697506}, //
+
54581 {0.926028013, 11.6978827}, //
+
54582 {0.925503016, 11.6982613}, //
+
54583 {0.924935997, 11.6986389}, //
+
54584 {0.924328029, 11.6990166}, //
+
54585 {0.923677027, 11.6993942}, //
+
54586 {0.922985017, 11.6997719}, //
+
54587 {0.922249973, 11.7001495}, //
+
54588 {0.921494007, 11.7004862}, //
+
54589 {0.920738995, 11.700738}, //
+
54590 {0.919983029, 11.7009058}, //
+
54591 {0.919228017, 11.7009897}, //
+
54592 {0.918471992, 11.7009897}, //
+
54593 {0.91771698, 11.7009058}, //
+
54594 {0.916961014, 11.700738}, //
+
54595 {0.916206002, 11.7004862}, //
+
54596 {0.915449977, 11.7001495}, //
+
54597 {0.914663017, 11.6997519}, //
+
54598 {0.913791001, 11.6993132}, //
+
54599 {0.912832975, 11.6988335}, //
+
54600 {0.911791027, 11.6983128}, //
+
54601 {0.910663009, 11.697752}, //
+
54602 {0.909449995, 11.6971502}, //
+
54603 {0.908151984, 11.6965075}, //
+
54604 {0.906768978, 11.6958237}, //
+
54605 {0.905300021, 11.6950998}, //
+
54606 {0.902100027, 11.69275}, //
+
54607 {0.898522019, 11.6902332}, //
+
54608 {0.894567013, 11.6875496}, //
+
54609 {0.89023298, 11.6847}, //
+
54610 {0.885522008, 11.6816826}, //
+
54611 {0.880433023, 11.6785002}, //
+
54612 {0.874966979, 11.6751499}, //
+
54613 {0.869122028, 11.6716328}, //
+
54614 {0.862900019, 11.6679497}, //
+
54615 {0.856519997, 11.6641407}, //
+
54616 {0.850180984, 11.6602488}, //
+
54617 {0.843882978, 11.6562719}, //
+
54618 {0.83762598, 11.6522121}, //
+
54619 {0.831408978, 11.6480675}, //
+
54620 {0.825232983, 11.6438389}, //
+
54621 {0.819097996, 11.6395273}, //
+
54622 {0.813004017, 11.6351299}, //
+
54623 {0.806949973, 11.6306496}, //
+
54624 {0.801136017, 11.6262541}, //
+
54625 {0.795740008, 11.6221094}, //
+
54626 {0.790760994, 11.6182175}, //
+
54627 {0.786198974, 11.6145763}, //
+
54628 {0.78205502, 11.611187}, //
+
54629 {0.778328001, 11.6080503}, //
+
54630 {0.775017977, 11.6051645}, //
+
54631 {0.772125006, 11.6025314}, //
+
54632 {0.769649982, 11.6001501}, //
+
54633 {0.765012026, 11.5963831}, //
+
54634 {0.760122001, 11.592617}, //
+
54635 {0.754978001, 11.58885}, //
+
54636 {0.749580979, 11.585083}, //
+
54637 {0.743930995, 11.5813169}, //
+
54638 {0.73802799, 11.5775499}, //
+
54639 {0.731872022, 11.5737829}, //
+
54640 {0.725462019, 11.5700169}, //
+
54641 {0.718800008, 11.5662498}, //
+
54642 {0.712105989, 11.5626507}, //
+
54643 {0.705578029, 11.5593863}, //
+
54644 {0.699217021, 11.5564556}, //
+
54645 {0.693022013, 11.5538597}, //
+
54646 {0.686994016, 11.5515985}, //
+
54647 {0.681132972, 11.5496721}, //
+
54648 {0.675439, 11.5480804}, //
+
54649 {0.669911027, 11.5468225}, //
+
54650 {0.664550006, 11.5459003}, //
+
54651 {0.661517978, 11.5458584}, //
+
54652 {0.658443987, 11.5457315}, //
+
54653 {0.655327976, 11.5455217}, //
+
54654 {0.652170002, 11.545228}, //
+
54655 {0.648970008, 11.5448513}, //
+
54656 {0.645727992, 11.5443888}, //
+
54657 {0.642444015, 11.5438433}, //
+
54658 {0.639118016, 11.5432138}, //
+
54659 {0.635749996, 11.5424995}, //
+
54660 {0.632318974, 11.5417862}, //
+
54661 {0.628804028, 11.5411568}, //
+
54662 {0.625205994, 11.5406113}, //
+
54663 {0.621523023, 11.5401487}, //
+
54664 {0.617756009, 11.539772}, //
+
54665 {0.613906026, 11.5394783}, //
+
54666 {0.609970987, 11.5392675}, //
+
54667 {0.605952024, 11.5391417}, //
+
54668 {0.601849973, 11.5390997}, //
+
54669 {0.59778899, 11.5390787}, //
+
54670 {0.593894005, 11.5390158}, //
+
54671 {0.590166986, 11.5389109}, //
+
54672 {0.586606026, 11.538764}, //
+
54673 {0.583211005, 11.5385752}, //
+
54674 {0.579982996, 11.5383444}, //
+
54675 {0.576921999, 11.5380716}, //
+
54676 {0.574028015, 11.5377569}, //
+
54677 {0.57130003, 11.5374002}, //
+
54678 {0.564716995, 11.5364561}, //
+
54679 {0.563107014, 11.5362253}, //
+
54680 {0.561791003, 11.5360355}, //
+
54681 {0.560766995, 11.5358887}, //
+
54682 {0.56003499, 11.5357838}, //
+
54683 {0.559596002, 11.5357208}, //
+
54684 {0.559449971, 11.5356998}, //
+
54685 });
+
54686 polys.push_back({
+
54687 {4.18219995, 11.6006804}, //
+
54688 {4.18157005, 11.6074381}, //
+
54689 {4.18150997, 11.6082773}, //
+
54690 {4.18214989, 11.609292}, //
+
54691 {4.18365002, 11.6119347}, //
+
54692 {4.18516016, 11.6148281}, //
+
54693 {4.18665981, 11.6179724}, //
+
54694 {4.18816996, 11.6213655}, //
+
54695 {4.18967009, 11.6250114}, //
+
54696 {4.19118023, 11.6289072}, //
+
54697 {4.1926899, 11.6330528}, //
+
54698 {4.19420004, 11.6374502}, //
+
54699 {4.19576979, 11.6412172}, //
+
54700 {4.19747019, 11.6449833}, //
+
54701 {4.1992898, 11.6487503}, //
+
54702 {4.20124006, 11.6525173}, //
+
54703 {4.20331001, 11.6562834}, //
+
54704 {4.20551014, 11.6600504}, //
+
54705 {4.20782995, 11.6638174}, //
+
54706 {4.21027994, 11.6675835}, //
+
54707 {4.21285009, 11.6713495}, //
+
54708 {4.21554995, 11.6749487}, //
+
54709 {4.21836996, 11.6782141}, //
+
54710 {4.22132015, 11.6811438}, //
+
54711 {4.22439003, 11.6837397}, //
+
54712 {4.22759008, 11.6860008}, //
+
54713 {4.23091984, 11.6879282}, //
+
54714 {4.23437023, 11.6895199}, //
+
54715 {4.23794985, 11.6907768}, //
+
54716 {4.2416501, 11.6917}, //
+
54717 {4.24480009, 11.691783}, //
+
54718 {4.24818993, 11.6920328}, //
+
54719 {4.25184011, 11.6924496}, //
+
54720 {4.25573015, 11.6930332}, //
+
54721 {4.25988007, 11.6937828}, //
+
54722 {4.26426983, 11.6947002}, //
+
54723 {4.26891994, 11.6957827}, //
+
54724 {4.27380991, 11.6970329}, //
+
54725 {4.27895021, 11.6984501}, //
+
54726 {4.28950977, 11.7014723}, //
+
54727 {4.29477978, 11.7029829}, //
+
54728 {4.3000598, 11.7044945}, //
+
54729 {4.32644987, 11.7120504}, //
+
54730 {4.32933998, 11.71418}, //
+
54731 {4.33197021, 11.7160597}, //
+
54732 {4.33436012, 11.7176886}, //
+
54733 {4.33649015, 11.7190666}, //
+
54734 {4.33836985, 11.7201948}, //
+
54735 {4.34001017, 11.7210722}, //
+
54736 {4.34139013, 11.7216988}, //
+
54737 {4.34252024, 11.7220755}, //
+
54738 {4.3434, 11.7222004}, //
+
54739 {4.34490013, 11.7229557}, //
+
54740 {4.34639978, 11.723711}, //
+
54741 {4.34790993, 11.7244673}, //
+
54742 {4.34941006, 11.7252216}, //
+
54743 {4.3509202, 11.7259779}, //
+
54744 {4.35241985, 11.7267332}, //
+
54745 {4.35393, 11.7274895}, //
+
54746 {4.35544014, 11.7282438}, //
+
54747 {4.35694981, 11.7290001}, //
+
54748 {4.3592, 11.7304382}, //
+
54749 {4.36140013, 11.7317514}, //
+
54750 {4.3635602, 11.7329388}, //
+
54751 {4.3656702, 11.7340021}, //
+
54752 {4.36774015, 11.7349405}, //
+
54753 {4.36977005, 11.7357559}, //
+
54754 {4.37175989, 11.7364454}, //
+
54755 {4.37370014, 11.73701}, //
+
54756 {4.37559986, 11.7374496}, //
+
54757 {4.37747002, 11.7376814}, //
+
54758 {4.3792901, 11.7376204}, //
+
54759 {4.38107014, 11.7372665}, //
+
54760 {4.38281012, 11.7366199}, //
+
54761 {4.38450003, 11.7356806}, //
+
54762 {4.3861599, 11.7344503}, //
+
54763 {4.38776016, 11.7329264}, //
+
54764 {4.38932991, 11.7311087}, //
+
54765 {4.39085007, 11.7290001}, //
+
54766 {4.39305019, 11.7266712}, //
+
54767 {4.39513016, 11.7242174}, //
+
54768 {4.39707994, 11.7216387}, //
+
54769 {4.39890003, 11.718936}, //
+
54770 {4.40058994, 11.7161083}, //
+
54771 {4.40216017, 11.7131557}, //
+
54772 {4.40360022, 11.7100782}, //
+
54773 {4.40491009, 11.7068768}, //
+
54774 {4.4060998, 11.7035503}, //
+
54775 {4.40720987, 11.7002239}, //
+
54776 {4.4082799, 11.6970243}, //
+
54777 {4.40930986, 11.6939497}, //
+
54778 {4.41029978, 11.6910019}, //
+
54779 {4.4112401, 11.68818}, //
+
54780 {4.41213989, 11.685483}, //
+
54781 {4.41300011, 11.6829128}, //
+
54782 {4.41381979, 11.6804686}, //
+
54783 {4.4145999, 11.6781502}, //
+
54784 {4.41535997, 11.6751699}, //
+
54785 {4.41611004, 11.6722755}, //
+
54786 {4.41687012, 11.669467}, //
+
54787 {4.41762018, 11.6667433}, //
+
54788 {4.41837978, 11.6641045}, //
+
54789 {4.41912985, 11.6615496}, //
+
54790 {4.41988993, 11.6590815}, //
+
54791 {4.42063999, 11.6566982}, //
+
54792 {4.42140007, 11.6543999}, //
+
54793 {4.42144012, 11.6536016}, //
+
54794 {4.42156982, 11.6527214}, //
+
54795 {4.4217701, 11.6517563}, //
+
54796 {4.42206001, 11.6507063}, //
+
54797 {4.42243004, 11.6495733}, //
+
54798 {4.42289019, 11.6483564}, //
+
54799 {4.42342997, 11.6470537}, //
+
54800 {4.42404985, 11.645669}, //
+
54801 {4.42474985, 11.6442003}, //
+
54802 {4.42547989, 11.6426783}, //
+
54803 {4.42617989, 11.6411142}, //
+
54804 {4.42682981, 11.6395063}, //
+
54805 {4.42744017, 11.6378536}, //
+
54806 {4.42799997, 11.6361599}, //
+
54807 {4.42853022, 11.6344223}, //
+
54808 {4.42900991, 11.6326408}, //
+
54809 {4.42945004, 11.6308174}, //
+
54810 {4.4298501, 11.6289501}, //
+
54811 {4.43021011, 11.6271143}, //
+
54812 {4.43052006, 11.6253595}, //
+
54813 {4.43078995, 11.6236887}, //
+
54814 {4.4310298, 11.6221008}, //
+
54815 {4.43121004, 11.620595}, //
+
54816 {4.43135977, 11.6191721}, //
+
54817 {4.43146992, 11.6178322}, //
+
54818 {4.43153, 11.6165752}, //
+
54819 {4.43155003, 11.6154003}, //
+
54820 {4.43155003, 11.6103001}, //
+
54821 {4.43003988, 11.6133223}, //
+
54822 {4.42949009, 11.6144142}, //
+
54823 {4.42886019, 11.6156731}, //
+
54824 {4.42815018, 11.6170998}, //
+
54825 {4.4273901, 11.6186733}, //
+
54826 {4.42664003, 11.6203718}, //
+
54827 {4.42587996, 11.6221943}, //
+
54828 {4.42512989, 11.6241417}, //
+
54829 {4.42436981, 11.626214}, //
+
54830 {4.42362022, 11.6284113}, //
+
54831 {4.42286015, 11.6307325}, //
+
54832 {4.42211008, 11.6331787}, //
+
54833 {4.42135, 11.6357498}, //
+
54834 {4.42057991, 11.6383619}, //
+
54835 {4.41976976, 11.640933}, //
+
54836 {4.41892004, 11.6434612}, //
+
54837 {4.41802979, 11.6459484}, //
+
54838 {4.41708994, 11.6483917}, //
+
54839 {4.41611004, 11.650794}, //
+
54840 {4.41508007, 11.6531553}, //
+
54841 {4.41401005, 11.6554728}, //
+
54842 {4.41289997, 11.6577501}, //
+
54843 {4.41174984, 11.6599331}, //
+
54844 {4.41055012, 11.6619482}, //
+
54845 {4.40931988, 11.6637936}, //
+
54846 {4.40804005, 11.665473}, //
+
54847 {4.40672016, 11.6669846}, //
+
54848 {4.40537024, 11.6683283}, //
+
54849 {4.40396976, 11.6695032}, //
+
54850 {4.40253019, 11.6705103}, //
+
54851 {4.40105009, 11.6713495}, //
+
54852 {4.40034008, 11.6728601}, //
+
54853 {4.39971018, 11.6743698}, //
+
54854 {4.39915991, 11.6758776}, //
+
54855 {4.39870024, 11.6773853}, //
+
54856 {4.3983202, 11.6788902}, //
+
54857 {4.3980298, 11.6803942}, //
+
54858 {4.39782, 11.6818981}, //
+
54859 {4.39768982, 11.6833992}, //
+
54860 {4.39764977, 11.6849003}, //
+
54861 {4.39761019, 11.6863689}, //
+
54862 {4.39748001, 11.6877518}, //
+
54863 {4.3972702, 11.6890497}, //
+
54864 {4.39697981, 11.6902628}, //
+
54865 {4.39659977, 11.691391}, //
+
54866 {4.3961401, 11.6924334}, //
+
54867 {4.39558983, 11.6933908}, //
+
54868 {4.39495993, 11.6942635}, //
+
54869 {4.39424992, 11.6950502}, //
+
54870 {4.39337015, 11.6956797}, //
+
54871 {4.39224005, 11.6960602}, //
+
54872 {4.39086008, 11.6961889}, //
+
54873 {4.38922024, 11.6960669}, //
+
54874 {4.38734007, 11.6956949}, //
+
54875 {4.38521004, 11.6950722}, //
+
54876 {4.38282013, 11.6941986}, //
+
54877 {4.3801899, 11.6930752}, //
+
54878 {4.37729979, 11.6917}, //
+
54879 {4.37583017, 11.6909227}, //
+
54880 {4.37445021, 11.6901054}, //
+
54881 {4.37313986, 11.6892443}, //
+
54882 {4.37193012, 11.6883421}, //
+
54883 {4.37079, 11.687398}, //
+
54884 {4.36974001, 11.6864109}, //
+
54885 {4.36878014, 11.6853828}, //
+
54886 {4.36789989, 11.6843119}, //
+
54887 {4.36709976, 11.6831999}, //
+
54888 {4.36639977, 11.6820984}, //
+
54889 {4.36577988, 11.6810369}, //
+
54890 {4.3652401, 11.6800175}, //
+
54891 {4.36477995, 11.6790371}, //
+
54892 {4.36440992, 11.6780977}, //
+
54893 {4.36412001, 11.6772003}, //
+
54894 {4.36392021, 11.676343}, //
+
54895 {4.36379004, 11.6755257}, //
+
54896 {4.36374998, 11.6747503}, //
+
54897 {4.36148024, 11.6724834}, //
+
54898 {4.35997009, 11.6709719}, //
+
54899 {4.35694981, 11.6679497}, //
+
54900 {4.3561101, 11.6672363}, //
+
54901 {4.35511017, 11.6666069}, //
+
54902 {4.35393, 11.6660614}, //
+
54903 {4.35259008, 11.6655989}, //
+
54904 {4.35108995, 11.6652222}, //
+
54905 {4.34942007, 11.6649284}, //
+
54906 {4.34757996, 11.6647177}, //
+
54907 {4.34557009, 11.6645918}, //
+
54908 {4.3434, 11.6645498}, //
+
54909 {4.3389802, 11.6645079}, //
+
54910 {4.3347702, 11.664382}, //
+
54911 {4.33077002, 11.6641722}, //
+
54912 {4.32698011, 11.6638784}, //
+
54913 {4.32340002, 11.6635008}, //
+
54914 {4.3200202, 11.6630392}, //
+
54915 {4.3168602, 11.6624928}, //
+
54916 {4.31389999, 11.6618643}, //
+
54917 {4.31115007, 11.66115}, //
+
54918 {4.30845022, 11.6603632}, //
+
54919 {4.30563021, 11.6594906}, //
+
54920 {4.30268002, 11.6585331}, //
+
54921 {4.29961014, 11.6574907}, //
+
54922 {4.29641008, 11.6563625}, //
+
54923 {4.29307985, 11.6551504}, //
+
54924 {4.28962994, 11.6538525}, //
+
54925 {4.28604984, 11.6524687}, //
+
54926 {4.28235006, 11.651}, //
+
54927 {4.28086996, 11.6502857}, //
+
54928 {4.27942991, 11.6496572}, //
+
54929 {4.27802992, 11.6491108}, //
+
54930 {4.27667999, 11.6486492}, //
+
54931 {4.27536011, 11.6482716}, //
+
54932 {4.2740798, 11.6479778}, //
+
54933 {4.27285004, 11.647768}, //
+
54934 {4.27164984, 11.6476421}, //
+
54935 {4.27050018, 11.6476002}, //
+
54936 {4.26200008, 11.6476002}, //
+
54937 {4.26122999, 11.6482925}, //
+
54938 {4.26041985, 11.648859}, //
+
54939 {4.25957012, 11.6492996}, //
+
54940 {4.25867987, 11.6496153}, //
+
54941 {4.25774002, 11.6498041}, //
+
54942 {4.25676012, 11.6498671}, //
+
54943 {4.25573015, 11.6498041}, //
+
54944 {4.25466013, 11.6496153}, //
+
54945 {4.25355005, 11.6492996}, //
+
54946 {4.25239992, 11.64886}, //
+
54947 {4.2512002, 11.6482954}, //
+
54948 {4.24995995, 11.6476059}, //
+
54949 {4.24868011, 11.6467915}, //
+
54950 {4.24736023, 11.6458521}, //
+
54951 {4.2459898, 11.6447887}, //
+
54952 {4.24458981, 11.6436014}, //
+
54953 {4.24314022, 11.6422882}, //
+
54954 {4.2416501, 11.6408501}, //
+
54955 {4.24010992, 11.6385832}, //
+
54956 {4.23848009, 11.6363173}, //
+
54957 {4.23677015, 11.6340504}, //
+
54958 {4.23497009, 11.6317825}, //
+
54959 {4.23308992, 11.6295166}, //
+
54960 {4.23112011, 11.6272497}, //
+
54961 {4.22906017, 11.6249828}, //
+
54962 {4.22692013, 11.6227169}, //
+
54963 {4.22469997, 11.62045}, //
+
54964 {4.2181201, 11.6138668}, //
+
54965 {4.21600008, 11.6117544}, //
+
54966 {4.20604992, 11.6018}, //
+
54967 {4.2042098, 11.5999432}, //
+
54968 {4.20245981, 11.5981264}, //
+
54969 {4.20078993, 11.5963497}, //
+
54970 {4.19920015, 11.594615}, //
+
54971 {4.19770002, 11.5929203}, //
+
54972 {4.19626999, 11.5912666}, //
+
54973 {4.19493008, 11.589654}, //
+
54974 {4.1936698, 11.5880814}, //
+
54975 {4.19250011, 11.5865498}, //
+
54976 {4.19048977, 11.5838833}, //
+
54977 {4.18967009, 11.5827999}, //
+
54978 {4.18745995, 11.5798826}, //
+
54979 {4.18739986, 11.5797997}, //
+
54980 });
+
54981 polys.push_back({
+
54982 {3.2247901, 11.6714344}, //
+
54983 {3.22151995, 11.6716862}, //
+
54984 {3.21808004, 11.6721058}, //
+
54985 {3.21447992, 11.6726933}, //
+
54986 {3.21071005, 11.6734486}, //
+
54987 {3.20676994, 11.6743717}, //
+
54988 {3.20266008, 11.6754637}, //
+
54989 {3.19839001, 11.6767225}, //
+
54990 {3.19394994, 11.6781502}, //
+
54991 {3.19168997, 11.6796093}, //
+
54992 {3.18944001, 11.6809855}, //
+
54993 {3.18718004, 11.6822777}, //
+
54994 {3.18493009, 11.6834879}, //
+
54995 {3.18267012, 11.6846161}, //
+
54996 {3.18041992, 11.6856613}, //
+
54997 {3.17815995, 11.6866226}, //
+
54998 {3.17591, 11.6875029}, //
+
54999 {3.17365003, 11.6883001}, //
+
55000 {3.1707499, 11.6890564}, //
+
55001 {3.16810989, 11.6898108}, //
+
55002 {3.16571999, 11.690567}, //
+
55003 {3.16357994, 11.6913223}, //
+
55004 {3.16169, 11.6920776}, //
+
55005 {3.16004992, 11.6928329}, //
+
55006 {3.15865993, 11.6935892}, //
+
55007 {3.15753007, 11.6943436}, //
+
55008 {3.15665007, 11.6950998}, //
+
55009 {3.15516996, 11.6951199}, //
+
55010 {3.15372992, 11.6951809}, //
+
55011 {3.15232992, 11.6952829}, //
+
55012 {3.15098, 11.695426}, //
+
55013 {3.14966011, 11.6956091}, //
+
55014 {3.14838004, 11.6958332}, //
+
55015 {3.14715004, 11.6960983}, //
+
55016 {3.14595008, 11.6964045}, //
+
55017 {3.14479995, 11.6967497}, //
+
55018 {3.14359999, 11.6971912}, //
+
55019 {3.1422801, 11.6977568}, //
+
55020 {3.14084005, 11.6984501}, //
+
55021 {3.13927007, 11.6992693}, //
+
55022 {3.1375699, 11.7002134}, //
+
55023 {3.13576007, 11.7012835}, //
+
55024 {3.13381004, 11.7024803}, //
+
55025 {3.13174009, 11.7038021}, //
+
55026 {3.12954998, 11.7052498}, //
+
55027 {3.12726998, 11.7068233}, //
+
55028 {3.12494993, 11.7085218}, //
+
55029 {3.12259007, 11.7103443}, //
+
55030 {3.12048006, 11.7120504}, //
+
55031 {3.12275004, 11.7120504}, //
+
55032 {3.12579012, 11.7120914}, //
+
55033 {3.12888002, 11.7122154}, //
+
55034 {3.13199997, 11.7124224}, //
+
55035 {3.13515997, 11.7127123}, //
+
55036 {3.13837004, 11.7130842}, //
+
55037 {3.14161992, 11.7135391}, //
+
55038 {3.14490008, 11.714077}, //
+
55039 {3.14823008, 11.7146969}, //
+
55040 {3.15159988, 11.7153997}, //
+
55041 {3.15493011, 11.7160301}, //
+
55042 {3.15812993, 11.7164097}, //
+
55043 {3.16120005, 11.7165394}, //
+
55044 {3.16415, 11.7164173}, //
+
55045 {3.16697001, 11.7160454}, //
+
55046 {3.1696701, 11.7154217}, //
+
55047 {3.17224002, 11.7145491}, //
+
55048 {3.17467999, 11.7134247}, //
+
55049 {3.17700005, 11.7120504}, //
+
55050 {3.1770401, 11.7113361}, //
+
55051 {3.17717004, 11.7107067}, //
+
55052 {3.17738008, 11.7101612}, //
+
55053 {3.17767, 11.7096987}, //
+
55054 {3.17805004, 11.709322}, //
+
55055 {3.17850995, 11.7090282}, //
+
55056 {3.17905998, 11.7088184}, //
+
55057 {3.17968988, 11.7086916}, //
+
55058 {3.18039989, 11.7086496}, //
+
55059 {3.18571997, 11.7063417}, //
+
55060 {3.19111991, 11.7039509}, //
+
55061 {3.19660997, 11.701478}, //
+
55062 {3.2021699, 11.6989222}, //
+
55063 {3.20781994, 11.6962833}, //
+
55064 {3.2135601, 11.6935606}, //
+
55065 {3.21936989, 11.6907568}, //
+
55066 {3.22527003, 11.68787}, //
+
55067 {3.23125005, 11.6849003}, //
+
55068 {3.23425007, 11.684186}, //
+
55069 {3.23721004, 11.6835566}, //
+
55070 {3.24011993, 11.6830111}, //
+
55071 {3.24299002, 11.6825495}, //
+
55072 {3.24582005, 11.6821718}, //
+
55073 {3.24861002, 11.6818781}, //
+
55074 {3.25134993, 11.6816683}, //
+
55075 {3.25405002, 11.6815424}, //
+
55076 {3.25670004, 11.6815004}, //
+
55077 {3.25928998, 11.6815214}, //
+
55078 {3.26180005, 11.6815844}, //
+
55079 {3.26422, 11.6816893}, //
+
55080 {3.26656008, 11.6818361}, //
+
55081 {3.26882005, 11.682025}, //
+
55082 {3.27098989, 11.6822557}, //
+
55083 {3.27308011, 11.6825275}, //
+
55084 {3.27507997, 11.6828432}, //
+
55085 {3.27699995, 11.6831999}, //
+
55086 {3.27877998, 11.6835566}, //
+
55087 {3.28171992, 11.684144}, //
+
55088 {3.28288007, 11.6843748}, //
+
55089 {3.28381991, 11.6845636}, //
+
55090 {3.28455997, 11.6847115}, //
+
55091 {3.28507996, 11.6848164}, //
+
55092 {3.28539991, 11.6848793}, //
+
55093 {3.28550005, 11.6849003}, //
+
55094 {3.28315997, 11.6834412}, //
+
55095 {3.2806499, 11.682065}, //
+
55096 {3.27798009, 11.6807718}, //
+
55097 {3.27513003, 11.6795616}, //
+
55098 {3.27212, 11.6784344}, //
+
55099 {3.26893997, 11.6773891}, //
+
55100 {3.26559997, 11.6764269}, //
+
55101 {3.26207995, 11.6755466}, //
+
55102 {3.25839996, 11.6747503}, //
+
55103 {3.25467992, 11.674036}, //
+
55104 {3.25102997, 11.6734066}, //
+
55105 {3.24747992, 11.6728611}, //
+
55106 {3.24399996, 11.6723986}, //
+
55107 {3.2406199, 11.6720219}, //
+
55108 {3.23730993, 11.6717281}, //
+
55109 {3.23409009, 11.6715183}, //
+
55110 {3.23095012, 11.6713924}, //
+
55111 {3.22790003, 11.6713495}, //
+
55112 });
+
55113 polys.push_back({
+
55114 {0.598646998, 11.6432104}, //
+
55115 {0.592622995, 11.6435804}, //
+
55116 {0.586600006, 11.6442003}, //
+
55117 {0.585047007, 11.6449137}, //
+
55118 {0.583410025, 11.6455431}, //
+
55119 {0.581689, 11.6460886}, //
+
55120 {0.579883993, 11.6465511}, //
+
55121 {0.577995002, 11.6469278}, //
+
55122 {0.576022029, 11.6472216}, //
+
55123 {0.573965013, 11.6474323}, //
+
55124 {0.571825027, 11.6475582}, //
+
55125 {0.569599986, 11.6476002}, //
+
55126 {0.542500019, 11.6476002}, //
+
55127 {0.535778999, 11.671073}, //
+
55128 {0.535730004, 11.6713495}, //
+
55129 {0.539099991, 11.6713495}, //
+
55130 {0.539875984, 11.6713715}, //
+
55131 {0.540692985, 11.6714344}, //
+
55132 {0.541549981, 11.6715393}, //
+
55133 {0.542447984, 11.6716862}, //
+
55134 {0.543386996, 11.671875}, //
+
55135 {0.544367015, 11.6721058}, //
+
55136 {0.54538703, 11.6723776}, //
+
55137 {0.546447992, 11.6726933}, //
+
55138 {0.547550023, 11.6730499}, //
+
55139 {0.548682988, 11.6734066}, //
+
55140 {0.549817026, 11.6737223}, //
+
55141 {0.550949991, 11.6739941}, //
+
55142 {0.552083015, 11.6742249}, //
+
55143 {0.553216994, 11.6744137}, //
+
55144 {0.554350019, 11.6745605}, //
+
55145 {0.555482984, 11.6746664}, //
+
55146 {0.556617022, 11.6747293}, //
+
55147 {0.557749987, 11.6747503}, //
+
55148 {0.558903992, 11.6747084}, //
+
55149 {0.560100973, 11.6745815}, //
+
55150 {0.561339021, 11.6743717}, //
+
55151 {0.562618971, 11.674078}, //
+
55152 {0.563941002, 11.6737013}, //
+
55153 {0.565306008, 11.6732388}, //
+
55154 {0.566712022, 11.6726933}, //
+
55155 {0.568159997, 11.6720638}, //
+
55156 {0.569649994, 11.6713495}, //
+
55157 {0.570394993, 11.6713076}, //
+
55158 {0.571141005, 11.6711817}, //
+
55159 {0.571888983, 11.6709719}, //
+
55160 {0.572637975, 11.6706781}, //
+
55161 {0.57338798, 11.6703014}, //
+
55162 {0.574138999, 11.6698389}, //
+
55163 {0.574890971, 11.6692934}, //
+
55164 {0.57564503, 11.668664}, //
+
55165 {0.576399982, 11.6679497}, //
+
55166 {0.577930987, 11.6672153}, //
+
55167 {0.579504013, 11.666523}, //
+
55168 {0.581116974, 11.6658716}, //
+
55169 {0.58276999, 11.6652641}, //
+
55170 {0.584465027, 11.6646967}, //
+
55171 {0.586199999, 11.6641722}, //
+
55172 {0.587975979, 11.6636896}, //
+
55173 {0.589793026, 11.663249}, //
+
55174 {0.591650009, 11.6628504}, //
+
55175 {0.59364301, 11.6624517}, //
+
55176 {0.595844984, 11.6620131}, //
+
55177 {0.598255992, 11.6615334}, //
+
55178 {0.60087502, 11.6610126}, //
+
55179 {0.603702009, 11.6604519}, //
+
55180 {0.606738985, 11.6598501}, //
+
55181 {0.609983981, 11.6592073}, //
+
55182 {0.61343801, 11.6585236}, //
+
55183 {0.6171, 11.6577997}, //
+
55184 {0.620132029, 11.6578407}, //
+
55185 {0.623206019, 11.6579647}, //
+
55186 {0.626321971, 11.6581717}, //
+
55187 {0.629480004, 11.6584616}, //
+
55188 {0.632679999, 11.6588345}, //
+
55189 {0.635922015, 11.6592894}, //
+
55190 {0.639205992, 11.6598272}, //
+
55191 {0.642531991, 11.6604471}, //
+
55192 {0.645900011, 11.66115}, //
+
55193 {0.64922601, 11.6618853}, //
+
55194 {0.652426004, 11.6625767}, //
+
55195 {0.655499995, 11.663228}, //
+
55196 {0.658447981, 11.6638355}, //
+
55197 {0.661270022, 11.664403}, //
+
55198 {0.663967013, 11.6649284}, //
+
55199 {0.666536987, 11.66541}, //
+
55200 {0.668981016, 11.6658506}, //
+
55201 {0.671299994, 11.6662502}, //
+
55202 {0.681500018, 11.6679497}, //
+
55203 {0.679925978, 11.6674252}, //
+
55204 {0.679233015, 11.6671944}, //
+
55205 {0.678415, 11.6669216}, //
+
55206 {0.676400006, 11.6662502}, //
+
55207 {0.675276995, 11.6658297}, //
+
55208 {0.67415297, 11.6653271}, //
+
55209 {0.673027992, 11.6647387}, //
+
55210 {0.671900988, 11.6640673}, //
+
55211 {0.670773029, 11.663312}, //
+
55212 {0.669643998, 11.6624718}, //
+
55213 {0.668514013, 11.6615486}, //
+
55214 {0.667383015, 11.6605406}, //
+
55215 {0.66624999, 11.6594496}, //
+
55216 {0.665075004, 11.6583481}, //
+
55217 {0.663815022, 11.6572866}, //
+
55218 {0.66247201, 11.6562672}, //
+
55219 {0.661045015, 11.6552868}, //
+
55220 {0.659533978, 11.6543484}, //
+
55221 {0.657939017, 11.65345}, //
+
55222 {0.656260014, 11.6525927}, //
+
55223 {0.654497027, 11.6517763}, //
+
55224 {0.652649999, 11.651}, //
+
55225 {0.650834978, 11.6502857}, //
+
55226 {0.64914602, 11.6496572}, //
+
55227 {0.647583008, 11.6491108}, //
+
55228 {0.646145999, 11.6486492}, //
+
55229 {0.644834995, 11.6482716}, //
+
55230 {0.643649995, 11.6479778}, //
+
55231 {0.642591, 11.647768}, //
+
55232 {0.641656995, 11.6476421}, //
+
55233 {0.640850008, 11.6476002}, //
+
55234 {0.634817004, 11.646225}, //
+
55235 {0.628786027, 11.6450987}, //
+
55236 {0.622756004, 11.6442223}, //
+
55237 {0.616726995, 11.6435947}, //
+
55238 {0.610698998, 11.6432171}, //
+
55239 {0.604672015, 11.6430893}, //
+
55240 });
+
55241 polys.push_back({
+
55242 {1.22049999, 11.6239834}, //
+
55243 {1.21932995, 11.62465}, //
+
55244 {1.21829998, 11.6252327}, //
+
55245 {1.20875001, 11.6306496}, //
+
55246 {1.20605004, 11.6320772}, //
+
55247 {1.20323002, 11.6333361}, //
+
55248 {1.20027995, 11.634428}, //
+
55249 {1.19720995, 11.6353512}, //
+
55250 {1.19401002, 11.6361074}, //
+
55251 {1.19068003, 11.636694}, //
+
55252 {1.18722999, 11.6371136}, //
+
55253 {1.18365002, 11.6373663}, //
+
55254 {1.17995, 11.6374502}, //
+
55255 {1.17768002, 11.6381636}, //
+
55256 {1.17542005, 11.638793}, //
+
55257 {1.17315996, 11.6393394}, //
+
55258 {1.17088997, 11.639801}, //
+
55259 {1.16863, 11.6401777}, //
+
55260 {1.16637003, 11.6404724}, //
+
55261 {1.16410995, 11.6406822}, //
+
55262 {1.16185999, 11.6408081}, //
+
55263 {1.15960002, 11.6408501}, //
+
55264 {1.15427995, 11.6421833}, //
+
55265 {1.14888, 11.6431828}, //
+
55266 {1.14339006, 11.6438503}, //
+
55267 {1.13783002, 11.6441832}, //
+
55268 {1.13217998, 11.6441832}, //
+
55269 {1.12644005, 11.6438503}, //
+
55270 {1.12063003, 11.6431828}, //
+
55271 {1.11473, 11.6421833}, //
+
55272 {1.10874999, 11.6408501}, //
+
55273 {1.10576999, 11.6401358}, //
+
55274 {1.10288, 11.6395073}, //
+
55275 {1.10007, 11.6389608}, //
+
55276 {1.09733999, 11.6384993}, //
+
55277 {1.09469998, 11.6381216}, //
+
55278 {1.09214997, 11.6378279}, //
+
55279 {1.08967996, 11.6376181}, //
+
55280 {1.08729994, 11.6374922}, //
+
55281 {1.08500004, 11.6374502}, //
+
55282 {1.08282995, 11.6374912}, //
+
55283 {1.08081996, 11.6376152}, //
+
55284 {1.07897997, 11.6378222}, //
+
55285 {1.07730997, 11.6381121}, //
+
55286 {1.07580996, 11.638484}, //
+
55287 {1.07447004, 11.6389389}, //
+
55288 {1.07328999, 11.6394768}, //
+
55289 {1.07228994, 11.6400967}, //
+
55290 {1.07145, 11.6408005}, //
+
55291 {1.07086003, 11.6415558}, //
+
55292 {1.07061005, 11.6423111}, //
+
55293 {1.07069004, 11.6430674}, //
+
55294 {1.0711, 11.6438217}, //
+
55295 {1.07184994, 11.644578}, //
+
55296 {1.07293999, 11.6453333}, //
+
55297 {1.07436001, 11.6460886}, //
+
55298 {1.07611001, 11.6468439}, //
+
55299 {1.07819998, 11.6476002}, //
+
55300 {1.07966995, 11.6483564}, //
+
55301 {1.08105004, 11.6491108}, //
+
55302 {1.08236003, 11.6498671}, //
+
55303 {1.08357, 11.6506224}, //
+
55304 {1.08471, 11.6513777}, //
+
55305 {1.08576, 11.652133}, //
+
55306 {1.08671999, 11.6528893}, //
+
55307 {1.08759999, 11.6536436}, //
+
55308 {1.08840001, 11.6543999}, //
+
55309 {1.09065998, 11.6551552}, //
+
55310 {1.09291005, 11.6559086}, //
+
55311 {1.09517002, 11.656661}, //
+
55312 {1.09741998, 11.6574116}, //
+
55313 {1.09967995, 11.6581621}, //
+
55314 {1.10193002, 11.6589108}, //
+
55315 {1.10418999, 11.6596594}, //
+
55316 {1.10643995, 11.6604052}, //
+
55317 {1.10870004, 11.66115}, //
+
55318 {1.11113, 11.6618643}, //
+
55319 {1.11389995, 11.6624928}, //
+
55320 {1.11701, 11.6630392}, //
+
55321 {1.12044001, 11.6635008}, //
+
55322 {1.12422001, 11.6638784}, //
+
55323 {1.12831998, 11.6641722}, //
+
55324 {1.13276005, 11.664382}, //
+
55325 {1.13753998, 11.6645079}, //
+
55326 {1.14265001, 11.6645498}, //
+
55327 {1.14642, 11.6645708}, //
+
55328 {1.15017998, 11.6646338}, //
+
55329 {1.15394998, 11.6647387}, //
+
55330 {1.15771997, 11.6648865}, //
+
55331 {1.16147995, 11.6650753}, //
+
55332 {1.16524994, 11.6653061}, //
+
55333 {1.16902006, 11.6655779}, //
+
55334 {1.17278004, 11.6658926}, //
+
55335 {1.17655003, 11.6662502}, //
+
55336 {1.1803, 11.6666279}, //
+
55337 {1.18400002, 11.6670055}, //
+
55338 {1.18765998, 11.6673832}, //
+
55339 {1.19128001, 11.6677608}, //
+
55340 {1.19485998, 11.6681395}, //
+
55341 {1.19839001, 11.6685171}, //
+
55342 {1.20188999, 11.6688938}, //
+
55343 {1.20534003, 11.6692724}, //
+
55344 {1.20875001, 11.6696501}, //
+
55345 {1.21476996, 11.6703224}, //
+
55346 {1.21721995, 11.6705942}, //
+
55347 {1.21929002, 11.670825}, //
+
55348 {1.22399998, 11.6713495}, //
+
55349 {1.22399998, 11.66115}, //
+
55350 {1.22397995, 11.6596489}, //
+
55351 {1.22391999, 11.6581478}, //
+
55352 {1.22380996, 11.6566439}, //
+
55353 {1.22365999, 11.6551399}, //
+
55354 {1.22347999, 11.653635}, //
+
55355 {1.22324002, 11.6521282}, //
+
55356 {1.22297001, 11.6506205}, //
+
55357 {1.22265995, 11.6491098}, //
+
55358 {1.22230005, 11.6476002}, //
+
55359 {1.22195005, 11.6460781}, //
+
55360 {1.22165, 11.6445141}, //
+
55361 {1.22138, 11.6429062}, //
+
55362 {1.22116005, 11.6412544}, //
+
55363 {1.22098005, 11.6395597}, //
+
55364 {1.22082996, 11.6378222}, //
+
55365 {1.22072995, 11.6360407}, //
+
55366 {1.22066998, 11.6342173}, //
+
55367 {1.22064996, 11.63235}, //
+
55368 {1.22064996, 11.6239004}, //
+
55369 });
+
55370 polys.push_back({
+
55371 {0.966127992, 11.5717001}, //
+
55372 {0.963976979, 11.5719261}, //
+
55373 {0.961785018, 11.5723591}, //
+
55374 {0.959814012, 11.5729237}, //
+
55375 {0.958028972, 11.5784979}, //
+
55376 {0.95501101, 11.587328}, //
+
55377 {0.951991975, 11.5955725}, //
+
55378 {0.948971987, 11.6032286}, //
+
55379 {0.947318971, 11.6070957}, //
+
55380 {0.951077998, 11.6076555}, //
+
55381 {0.955780029, 11.6084108}, //
+
55382 {0.960106015, 11.6091671}, //
+
55383 {0.964053988, 11.6099224}, //
+
55384 {0.967626989, 11.6106777}, //
+
55385 {0.970821977, 11.611433}, //
+
55386 {0.973640978, 11.6121893}, //
+
55387 {0.976083994, 11.6129436}, //
+
55388 {0.97815001, 11.6136999}, //
+
55389 {0.980059981, 11.6144562}, //
+
55390 {0.982011974, 11.6152105}, //
+
55391 {0.984005988, 11.6159668}, //
+
55392 {0.986041009, 11.6167221}, //
+
55393 {0.988119006, 11.6174784}, //
+
55394 {0.990239024, 11.6182327}, //
+
55395 {0.992401004, 11.618989}, //
+
55396 {0.994603992, 11.6197443}, //
+
55397 {0.996850014, 11.6204996}, //
+
55398 {0.998485982, 11.6212969}, //
+
55399 {1.00037003, 11.6221771}, //
+
55400 {1.00250995, 11.6231394}, //
+
55401 {1.00489998, 11.6241837}, //
+
55402 {1.00753999, 11.6253119}, //
+
55403 {1.01042998, 11.6265221}, //
+
55404 {1.01356995, 11.6278152}, //
+
55405 {1.01696002, 11.6291914}, //
+
55406 {1.02059996, 11.6306496}, //
+
55407 {1.02207994, 11.6313848}, //
+
55408 {1.02351999, 11.6320772}, //
+
55409 {1.02491999, 11.6327276}, //
+
55410 {1.02627003, 11.6333361}, //
+
55411 {1.02759004, 11.6339025}, //
+
55412 {1.02886999, 11.634428}, //
+
55413 {1.03009999, 11.6349096}, //
+
55414 {1.03129995, 11.6353512}, //
+
55415 {1.03244996, 11.6357498}, //
+
55416 {1.03357995, 11.6360865}, //
+
55417 {1.03471005, 11.6363382}, //
+
55418 {1.03584003, 11.6365061}, //
+
55419 {1.03697002, 11.63659}, //
+
55420 {1.0381, 11.63659}, //
+
55421 {1.03922999, 11.6365061}, //
+
55422 {1.04034996, 11.6363382}, //
+
55423 {1.04147995, 11.6360865}, //
+
55424 {1.04260004, 11.6357498}, //
+
55425 {1.04368997, 11.6353722}, //
+
55426 {1.04470003, 11.6349936}, //
+
55427 {1.04561996, 11.6346169}, //
+
55428 {1.04646003, 11.6342392}, //
+
55429 {1.04721999, 11.6338606}, //
+
55430 {1.04788995, 11.6334829}, //
+
55431 {1.04848003, 11.6331062}, //
+
55432 {1.04898, 11.6327276}, //
+
55433 {1.04939997, 11.63235}, //
+
55434 {1.04978001, 11.6319933}, //
+
55435 {1.05016005, 11.6316776}, //
+
55436 {1.05052996, 11.6314058}, //
+
55437 {1.05091, 11.631175}, //
+
55438 {1.05129004, 11.6309862}, //
+
55439 {1.05166996, 11.6308393}, //
+
55440 {1.05203998, 11.6307344}, //
+
55441 {1.05242002, 11.6306705}, //
+
55442 {1.05280006, 11.6306496}, //
+
55443 {1.05449998, 11.6306496}, //
+
55444 {1.05444002, 11.6305866}, //
+
55445 {1.05425, 11.6303978}, //
+
55446 {1.05393004, 11.6300831}, //
+
55447 {1.05223, 11.6283827}, //
+
55448 {1.05140996, 11.6275654}, //
+
55449 {1.05046999, 11.6266203}, //
+
55450 {1.04939997, 11.6255503}, //
+
55451 {1.04820001, 11.6244478}, //
+
55452 {1.04688001, 11.6233873}, //
+
55453 {1.04542994, 11.6223669}, //
+
55454 {1.04385996, 11.6213865}, //
+
55455 {1.04216003, 11.6204481}, //
+
55456 {1.04033005, 11.6195498}, //
+
55457 {1.03838003, 11.6186934}, //
+
55458 {1.03629994, 11.6178761}, //
+
55459 {1.03410006, 11.6170998}, //
+
55460 {1.03185999, 11.6163235}, //
+
55461 {1.02967, 11.6155052}, //
+
55462 {1.02751994, 11.6146441}, //
+
55463 {1.02540004, 11.6137419}, //
+
55464 {1.02332997, 11.6127977}, //
+
55465 {1.02129996, 11.6118107}, //
+
55466 {1.01931, 11.6107826}, //
+
55467 {1.01735997, 11.6097116}, //
+
55468 {1.01545, 11.6085997}, //
+
55469 {1.01364005, 11.6074982}, //
+
55470 {1.01195002, 11.6064367}, //
+
55471 {1.01038003, 11.6054173}, //
+
55472 {1.00895, 11.6044369}, //
+
55473 {1.00764, 11.6034985}, //
+
55474 {1.00645006, 11.6026001}, //
+
55475 {1.00539005, 11.6017427}, //
+
55476 {1.00445998, 11.6009264}, //
+
55477 {1.00364995, 11.6001501}, //
+
55478 {1.00214005, 11.5993519}, //
+
55479 {1.00063002, 11.5984707}, //
+
55480 {0.999117017, 11.5975056}, //
+
55481 {0.997605979, 11.5964556}, //
+
55482 {0.996093988, 11.5953226}, //
+
55483 {0.994583011, 11.5941057}, //
+
55484 {0.993071973, 11.592804}, //
+
55485 {0.991560996, 11.5914192}, //
+
55486 {0.990050018, 11.5899496}, //
+
55487 {0.98923099, 11.5877571}, //
+
55488 {0.988286972, 11.5856876}, //
+
55489 {0.987217009, 11.583744}, //
+
55490 {0.986020029, 11.5819254}, //
+
55491 {0.984697998, 11.5802307}, //
+
55492 {0.983250022, 11.578661}, //
+
55493 {0.981675982, 11.5772161}, //
+
55494 {0.979975998, 11.5758963}, //
+
55495 {0.97815001, 11.5747004}, //
+
55496 {0.976251006, 11.5736809}, //
+
55497 {0.974309981, 11.5728703}, //
+
55498 {0.972328007, 11.5722666}, //
+
55499 {0.970302999, 11.5718699}, //
+
55500 {0.968236029, 11.571681}, //
+
55501 });
+
55502 polys.push_back({
+
55503 {4.27600002, 11.5323906}, //
+
55504 {4.27318001, 11.5325146}, //
+
55505 {4.27048016, 11.5327225}, //
+
55506 {4.26789999, 11.5330124}, //
+
55507 {4.26545, 11.5333843}, //
+
55508 {4.26313019, 11.5338392}, //
+
55509 {4.26093006, 11.5343771}, //
+
55510 {4.2588501, 11.534997}, //
+
55511 {4.25689983, 11.5356998}, //
+
55512 {4.25510979, 11.5364771}, //
+
55513 {4.25347996, 11.5372953}, //
+
55514 {4.25201988, 11.5381556}, //
+
55515 {4.25072002, 11.5390577}, //
+
55516 {4.24958992, 11.5400019}, //
+
55517 {4.24863005, 11.5409889}, //
+
55518 {4.24783993, 11.542017}, //
+
55519 {4.24721003, 11.543088}, //
+
55520 {4.24674988, 11.5441999}, //
+
55521 {4.24647999, 11.5453119}, //
+
55522 {4.24640989, 11.54638}, //
+
55523 {4.2465601, 11.5474062}, //
+
55524 {4.24692011, 11.5483875}, //
+
55525 {4.24747992, 11.5493269}, //
+
55526 {4.24826002, 11.5502224}, //
+
55527 {4.24924994, 11.551075}, //
+
55528 {4.25044012, 11.5518837}, //
+
55529 {4.25185013, 11.5526505}, //
+
55530 {4.25427008, 11.5541811}, //
+
55531 {4.25703001, 11.5557537}, //
+
55532 {4.26012993, 11.5573673}, //
+
55533 {4.26355982, 11.55902}, //
+
55534 {4.26733017, 11.5607147}, //
+
55535 {4.27143002, 11.5624504}, //
+
55536 {4.27586985, 11.5642262}, //
+
55537 {4.28064013, 11.5660429}, //
+
55538 {4.28574991, 11.5678997}, //
+
55539 {4.29106998, 11.569726}, //
+
55540 {4.29647017, 11.5714264}, //
+
55541 {4.30195999, 11.573}, //
+
55542 {4.30751991, 11.5744476}, //
+
55543 {4.31316996, 11.5757704}, //
+
55544 {4.31891012, 11.5769672}, //
+
55545 {4.32471991, 11.5780373}, //
+
55546 {4.33061981, 11.5789814}, //
+
55547 {4.33659983, 11.5797997}, //
+
55548 {4.34183979, 11.5813313}, //
+
55549 {4.34699011, 11.5829039}, //
+
55550 {4.35205984, 11.5845165}, //
+
55551 {4.35703993, 11.5861702}, //
+
55552 {4.36193991, 11.5878649}, //
+
55553 {4.36675978, 11.5895996}, //
+
55554 {4.37149, 11.5913763}, //
+
55555 {4.37614012, 11.5931931}, //
+
55556 {4.38070011, 11.5950499}, //
+
55557 {4.38504982, 11.5968752}, //
+
55558 {4.38907003, 11.5985727}, //
+
55559 {4.3927598, 11.6001444}, //
+
55560 {4.39610004, 11.6015882}, //
+
55561 {4.39910984, 11.6029053}, //
+
55562 {4.40179014, 11.6040936}, //
+
55563 {4.40412998, 11.6051569}, //
+
55564 {4.40612984, 11.6060925}, //
+
55565 {4.4078002, 11.6069002}, //
+
55566 {4.4078002, 11.6188002}, //
+
55567 {4.40783978, 11.6184425}, //
+
55568 {4.40796995, 11.6181278}, //
+
55569 {4.40818024, 11.617856}, //
+
55570 {4.40847015, 11.6176252}, //
+
55571 {4.40885019, 11.6174364}, //
+
55572 {4.40930986, 11.6172886}, //
+
55573 {4.40986013, 11.6171837}, //
+
55574 {4.41049004, 11.6171207}, //
+
55575 {4.41120005, 11.6170998}, //
+
55576 {4.41198015, 11.6162806}, //
+
55577 {4.41278982, 11.6153374}, //
+
55578 {4.41365004, 11.6142673}, //
+
55579 {4.41454983, 11.6130695}, //
+
55580 {4.41549015, 11.6117477}, //
+
55581 {4.41647005, 11.6103001}, //
+
55582 {4.41749001, 11.6087255}, //
+
55583 {4.41855001, 11.6070261}, //
+
55584 {4.41965008, 11.6051998}, //
+
55585 {4.42074013, 11.603301}, //
+
55586 {4.42175007, 11.6013584}, //
+
55587 {4.42266989, 11.5993719}, //
+
55588 {4.42351007, 11.5973434}, //
+
55589 {4.42427015, 11.5952711}, //
+
55590 {4.42494011, 11.5931559}, //
+
55591 {4.42552996, 11.5909967}, //
+
55592 {4.42603016, 11.5887947}, //
+
55593 {4.42644978, 11.5865498}, //
+
55594 {4.42682981, 11.5843363}, //
+
55595 {4.42720985, 11.5822039}, //
+
55596 {4.42757988, 11.5801563}, //
+
55597 {4.42795992, 11.5781898}, //
+
55598 {4.42833996, 11.5763063}, //
+
55599 {4.42844009, 11.5758171}, //
+
55600 {4.42644978, 11.5797997}, //
+
55601 {4.42603016, 11.580555}, //
+
55602 {4.42552996, 11.5813093}, //
+
55603 {4.42494011, 11.5820608}, //
+
55604 {4.42427015, 11.5828123}, //
+
55605 {4.42351007, 11.5835619}, //
+
55606 {4.42266989, 11.5843105}, //
+
55607 {4.42175007, 11.5850592}, //
+
55608 {4.42074013, 11.5858049}, //
+
55609 {4.41965008, 11.5865498}, //
+
55610 {4.41850996, 11.5872221}, //
+
55611 {4.41731977, 11.5877275}, //
+
55612 {4.41609001, 11.5880671}, //
+
55613 {4.41482019, 11.5882387}, //
+
55614 {4.41349983, 11.5882444}, //
+
55615 {4.41213989, 11.5880833}, //
+
55616 {4.4107399, 11.5877562}, //
+
55617 {4.40928984, 11.5872612}, //
+
55618 {4.4078002, 11.5866003}, //
+
55619 {4.40563011, 11.5865583}, //
+
55620 {4.40361977, 11.5864325}, //
+
55621 {4.40178013, 11.5862217}, //
+
55622 {4.40010977, 11.585928}, //
+
55623 {4.39861012, 11.5855513}, //
+
55624 {4.3972702, 11.5850887}, //
+
55625 {4.39609003, 11.5845432}, //
+
55626 {4.3950901, 11.5839138}, //
+
55627 {4.39424992, 11.5832005}, //
+
55628 {4.39201021, 11.5831575}, //
+
55629 {4.3898201, 11.5830317}, //
+
55630 {4.38767004, 11.5828218}, //
+
55631 {4.38555002, 11.5825281}, //
+
55632 {4.38348007, 11.5821514}, //
+
55633 {4.38145018, 11.5816889}, //
+
55634 {4.37945986, 11.5811434}, //
+
55635 {4.37751007, 11.580514}, //
+
55636 {4.37559986, 11.5797997}, //
+
55637 {4.37377977, 11.5790033}, //
+
55638 {4.37208986, 11.5781231}, //
+
55639 {4.37053013, 11.5771608}, //
+
55640 {4.36909008, 11.5761156}, //
+
55641 {4.3677702, 11.5749884}, //
+
55642 {4.36658001, 11.5737782}, //
+
55643 {4.36550999, 11.572485}, //
+
55644 {4.36457014, 11.5711088}, //
+
55645 {4.36374998, 11.5696497}, //
+
55646 {4.36370993, 11.5688944}, //
+
55647 {4.36358023, 11.5681391}, //
+
55648 {4.36336994, 11.5673828}, //
+
55649 {4.36308002, 11.5666285}, //
+
55650 {4.36269999, 11.5658722}, //
+
55651 {4.36223984, 11.5651169}, //
+
55652 {4.36169004, 11.5643606}, //
+
55653 {4.36106014, 11.5636063}, //
+
55654 {4.36035013, 11.56285}, //
+
55655 {4.35959005, 11.5621147}, //
+
55656 {4.35883999, 11.5614233}, //
+
55657 {4.35807991, 11.5607719}, //
+
55658 {4.35732985, 11.5601645}, //
+
55659 {4.35656977, 11.559597}, //
+
55660 {4.35582018, 11.5590715}, //
+
55661 {4.3550601, 11.5585899}, //
+
55662 {4.35431004, 11.5581493}, //
+
55663 {4.35354996, 11.5577497}, //
+
55664 {4.35278988, 11.5573931}, //
+
55665 {4.35203981, 11.5570784}, //
+
55666 {4.35128021, 11.5568056}, //
+
55667 {4.35053015, 11.5565748}, //
+
55668 {4.34977007, 11.556386}, //
+
55669 {4.34902, 11.5562391}, //
+
55670 {4.34825993, 11.5561342}, //
+
55671 {4.34750986, 11.5560713}, //
+
55672 {4.34674978, 11.5560503}, //
+
55673 {4.3434, 11.5560503}, //
+
55674 {4.34176016, 11.555253}, //
+
55675 {4.33987999, 11.5543728}, //
+
55676 {4.33773994, 11.5534105}, //
+
55677 {4.33535004, 11.5523663}, //
+
55678 {4.33270979, 11.5512381}, //
+
55679 {4.32982016, 11.5500278}, //
+
55680 {4.32668018, 11.5487347}, //
+
55681 {4.32328987, 11.5473595}, //
+
55682 {4.31965017, 11.5459003}, //
+
55683 {4.3144598, 11.5430555}, //
+
55684 {4.30943012, 11.5405474}, //
+
55685 {4.3045702, 11.538372}, //
+
55686 {4.29988003, 11.5365324}, //
+
55687 {4.29536009, 11.5350266}, //
+
55688 {4.2910099, 11.5338564}, //
+
55689 {4.28681993, 11.5330191}, //
+
55690 {4.2828002, 11.5325174}, //
+
55691 {4.27895021, 11.5323496}, //
+
55692 });
+
55693 polys.push_back({
+
55694 {3.22790003, 11.5797997}, //
+
55695 {3.22792006, 11.5805759}, //
+
55696 {3.2279799, 11.5813932}, //
+
55697 {3.22808003, 11.5822496}, //
+
55698 {3.22823, 11.583148}, //
+
55699 {3.22841001, 11.5840874}, //
+
55700 {3.22863007, 11.5850668}, //
+
55701 {3.22889996, 11.5860872}, //
+
55702 {3.22919989, 11.5871477}, //
+
55703 {3.22954988, 11.5882502}, //
+
55704 {3.2299099, 11.5893621}, //
+
55705 {3.23022008, 11.5904331}, //
+
55706 {3.23048997, 11.5914612}, //
+
55707 {3.23073006, 11.5924482}, //
+
55708 {3.23091006, 11.5933924}, //
+
55709 {3.23106003, 11.5942936}, //
+
55710 {3.23116994, 11.5951548}, //
+
55711 {3.23123002, 11.595973}, //
+
55712 {3.23125005, 11.5967503}, //
+
55713 {3.23125005, 11.60355}, //
+
55714 {3.16685009, 11.60355}, //
+
55715 {3.16303992, 11.603591}, //
+
55716 {3.15914989, 11.6037149}, //
+
55717 {3.15516996, 11.6039219}, //
+
55718 {3.15110993, 11.6042118}, //
+
55719 {3.14697003, 11.6045837}, //
+
55720 {3.14274001, 11.6050386}, //
+
55721 {3.13843012, 11.6055775}, //
+
55722 {3.1340301, 11.6061974}, //
+
55723 {3.13260007, 11.6064215}, //
+
55724 {3.13474989, 11.6065636}, //
+
55725 {3.13727999, 11.6067114}, //
+
55726 {3.13950992, 11.6068163}, //
+
55727 {3.14144993, 11.6068792}, //
+
55728 {3.14310002, 11.6069002}, //
+
55729 {3.14314008, 11.6076136}, //
+
55730 {3.14327002, 11.608243}, //
+
55731 {3.14348006, 11.6087894}, //
+
55732 {3.14376998, 11.609251}, //
+
55733 {3.14415002, 11.6096277}, //
+
55734 {3.14460993, 11.6099224}, //
+
55735 {3.14515996, 11.6101322}, //
+
55736 {3.1457901, 11.6102581}, //
+
55737 {3.14650011, 11.6103001}, //
+
55738 {3.14724994, 11.6110144}, //
+
55739 {3.14801002, 11.6116428}, //
+
55740 {3.14876008, 11.6121893}, //
+
55741 {3.14950991, 11.6126509}, //
+
55742 {3.15025997, 11.6130276}, //
+
55743 {3.15101004, 11.6133223}, //
+
55744 {3.1517601, 11.6135321}, //
+
55745 {3.15249991, 11.613658}, //
+
55746 {3.15324998, 11.6136999}, //
+
55747 {3.15405011, 11.6137419}, //
+
55748 {3.15493011, 11.6138678}, //
+
55749 {3.15588999, 11.6140776}, //
+
55750 {3.15693998, 11.6143723}, //
+
55751 {3.1580801, 11.614749}, //
+
55752 {3.15929008, 11.6152105}, //
+
55753 {3.16059995, 11.615757}, //
+
55754 {3.16197991, 11.6163864}, //
+
55755 {3.16345, 11.6170998}, //
+
55756 {3.16514993, 11.6170788}, //
+
55757 {3.16722012, 11.6170158}, //
+
55758 {3.1696701, 11.6169109}, //
+
55759 {3.1724999, 11.6167641}, //
+
55760 {3.17569995, 11.6165752}, //
+
55761 {3.17927003, 11.6163445}, //
+
55762 {3.18321991, 11.6160717}, //
+
55763 {3.18755007, 11.615757}, //
+
55764 {3.19225001, 11.6154003}, //
+
55765 {3.19708991, 11.6150007}, //
+
55766 {3.20180011, 11.6145601}, //
+
55767 {3.20637989, 11.6140776}, //
+
55768 {3.21083999, 11.613553}, //
+
55769 {3.21517992, 11.6129856}, //
+
55770 {3.2193799, 11.6123781}, //
+
55771 {3.22345996, 11.6117268}, //
+
55772 {3.22742009, 11.6110353}, //
+
55773 {3.23125005, 11.6103001}, //
+
55774 {3.23270011, 11.6095858}, //
+
55775 {3.23401999, 11.6089573}, //
+
55776 {3.23521996, 11.6084108}, //
+
55777 {3.23628998, 11.6079493}, //
+
55778 {3.23723006, 11.6075716}, //
+
55779 {3.23804998, 11.6072779}, //
+
55780 {3.23873997, 11.6070681}, //
+
55781 {3.23931003, 11.6069422}, //
+
55782 {3.23974991, 11.6069002}, //
+
55783 {3.24012995, 11.6068792}, //
+
55784 {3.24050999, 11.6068163}, //
+
55785 {3.24088001, 11.6067114}, //
+
55786 {3.24126005, 11.6065636}, //
+
55787 {3.24164009, 11.6063747}, //
+
55788 {3.24201989, 11.606144}, //
+
55789 {3.24238992, 11.6058722}, //
+
55790 {3.24276996, 11.6055574}, //
+
55791 {3.24315, 11.6051998}, //
+
55792 {3.24351001, 11.6048536}, //
+
55793 {3.24475002, 11.6036463}, //
+
55794 {3.24458003, 11.603281}, //
+
55795 {3.24450994, 11.6032143}, //
+
55796 {3.24409008, 11.6027937}, //
+
55797 {3.24381995, 11.6025219}, //
+
55798 {3.24351001, 11.6022072}, //
+
55799 {3.24315, 11.6018496}, //
+
55800 {3.24278998, 11.6014929}, //
+
55801 {3.24248004, 11.6011782}, //
+
55802 {3.24220991, 11.6009064}, //
+
55803 {3.24179006, 11.6004858}, //
+
55804 {3.24145007, 11.6001501}, //
+
55805 {3.23804998, 11.6001501}, //
+
55806 {3.22790003, 11.5763998}, //
+
55807 });
+
55808 polys.push_back({
+
55809 {0.888287008, 11.3730335}, //
+
55810 {0.887782991, 11.3737059}, //
+
55811 {0.885264993, 11.3770638}, //
+
55812 {0.884320021, 11.3783226}, //
+
55813 {0.883249998, 11.3797503}, //
+
55814 {0.882095993, 11.3813229}, //
+
55815 {0.880899012, 11.3830223}, //
+
55816 {0.879661024, 11.3848438}, //
+
55817 {0.878381014, 11.3867922}, //
+
55818 {0.877058983, 11.3888636}, //
+
55819 {0.875693977, 11.3910608}, //
+
55820 {0.874288023, 11.393383}, //
+
55821 {0.872839987, 11.3958292}, //
+
55822 {0.87134999, 11.3984003}, //
+
55823 {0.869933009, 11.4010553}, //
+
55824 {0.868682981, 11.4037533}, //
+
55825 {0.867600024, 11.4064941}, //
+
55826 {0.866683006, 11.4092789}, //
+
55827 {0.865933001, 11.4121075}, //
+
55828 {0.865350008, 11.414978}, //
+
55829 {0.864933014, 11.4178925}, //
+
55830 {0.864682972, 11.4208488}, //
+
55831 {0.864600003, 11.4238501}, //
+
55832 {0.864600003, 11.4509497}, //
+
55833 {0.865293026, 11.45543}, //
+
55834 {0.865858972, 11.4598274}, //
+
55835 {0.866299987, 11.464139}, //
+
55836 {0.866614997, 11.4683666}, //
+
55837 {0.866804004, 11.4725122}, //
+
55838 {0.866867006, 11.476572}, //
+
55839 {0.866804004, 11.4805489}, //
+
55840 {0.866614997, 11.4844408}, //
+
55841 {0.866299987, 11.4882498}, //
+
55842 {0.865900993, 11.4920168}, //
+
55843 {0.865459979, 11.4957829}, //
+
55844 {0.864978015, 11.4995499}, //
+
55845 {0.864453018, 11.5033169}, //
+
55846 {0.863885999, 11.5070829}, //
+
55847 {0.863277972, 11.51085}, //
+
55848 {0.862627029, 11.514617}, //
+
55849 {0.861935019, 11.518383}, //
+
55850 {0.861199975, 11.52215}, //
+
55851 {0.859740973, 11.524395}, //
+
55852 {0.858364999, 11.526597}, //
+
55853 {0.857071996, 11.5287561}, //
+
55854 {0.855862021, 11.5308714}, //
+
55855 {0.854734004, 11.5329428}, //
+
55856 {0.853689015, 11.5349722}, //
+
55857 {0.852726996, 11.5369577}, //
+
55858 {0.851846993, 11.5389013}, //
+
55859 {0.851050019, 11.5408001}, //
+
55860 {0.850314975, 11.5426254}, //
+
55861 {0.849623024, 11.544323}, //
+
55862 {0.848972023, 11.5458937}, //
+
55863 {0.848363996, 11.5473375}, //
+
55864 {0.847796977, 11.5486546}, //
+
55865 {0.847271979, 11.5498438}, //
+
55866 {0.846790016, 11.5509071}, //
+
55867 {0.846349001, 11.5518417}, //
+
55868 {0.845950007, 11.5526505}, //
+
55869 {0.845552027, 11.5534058}, //
+
55870 {0.845112979, 11.5541611}, //
+
55871 {0.844632983, 11.5549173}, //
+
55872 {0.844112992, 11.5556717}, //
+
55873 {0.843551993, 11.556428}, //
+
55874 {0.842949986, 11.5571833}, //
+
55875 {0.842306972, 11.5579386}, //
+
55876 {0.841624022, 11.5586939}, //
+
55877 {0.840900004, 11.5594501}, //
+
55878 {0.840857983, 11.5602064}, //
+
55879 {0.840731978, 11.5609608}, //
+
55880 {0.840521991, 11.561717}, //
+
55881 {0.840228021, 11.5624723}, //
+
55882 {0.839851022, 11.5632277}, //
+
55883 {0.839389026, 11.563983}, //
+
55884 {0.838842988, 11.5647392}, //
+
55885 {0.83821398, 11.5654936}, //
+
55886 {0.837499976, 11.5662498}, //
+
55887 {0.83674401, 11.5670052}, //
+
55888 {0.835988998, 11.5677586}, //
+
55889 {0.835232973, 11.568511}, //
+
55890 {0.834478021, 11.5692616}, //
+
55891 {0.833721995, 11.5700121}, //
+
55892 {0.832966983, 11.5707607}, //
+
55893 {0.832211018, 11.5715094}, //
+
55894 {0.831456006, 11.5722551}, //
+
55895 {0.83069998, 11.573}, //
+
55896 {0.829964995, 11.5744267}, //
+
55897 {0.829272985, 11.5756865}, //
+
55898 {0.828621984, 11.5767784}, //
+
55899 {0.828014016, 11.5777006}, //
+
55900 {0.827446997, 11.5784569}, //
+
55901 {0.826921999, 11.5790443}, //
+
55902 {0.826439977, 11.579464}, //
+
55903 {0.825999022, 11.5797157}, //
+
55904 {0.825600028, 11.5797997}, //
+
55905 {0.825242996, 11.5797157}, //
+
55906 {0.824927986, 11.579464}, //
+
55907 {0.82465601, 11.5790443}, //
+
55908 {0.824424982, 11.5784569}, //
+
55909 {0.824235976, 11.5777006}, //
+
55910 {0.824088991, 11.5767784}, //
+
55911 {0.823984027, 11.5756865}, //
+
55912 {0.823921025, 11.5744267}, //
+
55913 {0.823899984, 11.573}, //
+
55914 {0.823238015, 11.5714989}, //
+
55915 {0.822741985, 11.5699978}, //
+
55916 {0.822411001, 11.5684938}, //
+
55917 {0.822246015, 11.5669899}, //
+
55918 {0.822246015, 11.565485}, //
+
55919 {0.822411001, 11.5639782}, //
+
55920 {0.822741985, 11.5624704}, //
+
55921 {0.823238015, 11.5609598}, //
+
55922 {0.823899984, 11.5594501}, //
+
55923 {0.823899984, 11.5458498}, //
+
55924 {0.823816001, 11.5443907}, //
+
55925 {0.823563993, 11.5430145}, //
+
55926 {0.823144019, 11.5417223}, //
+
55927 {0.822556973, 11.5405121}, //
+
55928 {0.821801007, 11.5393839}, //
+
55929 {0.820878029, 11.5383387}, //
+
55930 {0.819786012, 11.5373774}, //
+
55931 {0.818526983, 11.5364971}, //
+
55932 {0.817099988, 11.5356998}, //
+
55933 {0.815473974, 11.534955}, //
+
55934 {0.81359601, 11.5342093}, //
+
55935 {0.811466992, 11.5334606}, //
+
55936 {0.809085011, 11.532712}, //
+
55937 {0.806451976, 11.5319624}, //
+
55938 {0.803566992, 11.5312109}, //
+
55939 {0.80043, 11.5304594}, //
+
55940 {0.797040999, 11.529705}, //
+
55941 {0.79339999, 11.5289497}, //
+
55942 {0.789717019, 11.5281944}, //
+
55943 {0.786202013, 11.5274391}, //
+
55944 {0.782855988, 11.5266829}, //
+
55945 {0.779676974, 11.5259275}, //
+
55946 {0.776664972, 11.5251722}, //
+
55947 {0.77382201, 11.5244169}, //
+
55948 {0.771147013, 11.5236607}, //
+
55949 {0.768639982, 11.5229063}, //
+
55950 {0.766300023, 11.52215}, //
+
55951 {0.761820018, 11.5206909}, //
+
55952 {0.757422984, 11.5193148}, //
+
55953 {0.753111005, 11.5180216}, //
+
55954 {0.748883009, 11.5168123}, //
+
55955 {0.744737983, 11.5156841}, //
+
55956 {0.740678012, 11.5146389}, //
+
55957 {0.736701012, 11.5136766}, //
+
55958 {0.732809007, 11.5127974}, //
+
55959 {0.728999972, 11.5120001}, //
+
55960 {0.725317001, 11.5112858}, //
+
55961 {0.721800029, 11.5106573}, //
+
55962 {0.71845001, 11.5101109}, //
+
55963 {0.715267003, 11.5096493}, //
+
55964 {0.712249994, 11.5092716}, //
+
55965 {0.709399998, 11.5089779}, //
+
55966 {0.706717014, 11.5087681}, //
+
55967 {0.704200029, 11.5086422}, //
+
55968 {0.701849997, 11.5086002}, //
+
55969 {0.699845016, 11.5086842}, //
+
55970 {0.698341012, 11.5089359}, //
+
55971 {0.697338998, 11.5093555}, //
+
55972 {0.696838021, 11.509943}, //
+
55973 {0.696838021, 11.5106993}, //
+
55974 {0.697338998, 11.5116224}, //
+
55975 {0.698341012, 11.5127144}, //
+
55976 {0.699845016, 11.5139732}, //
+
55977 {0.701849997, 11.5153999}, //
+
55978 {0.704241991, 11.5176144}, //
+
55979 {0.70688498, 11.5197458}, //
+
55980 {0.709778011, 11.5217943}, //
+
55981 {0.712921977, 11.5237598}, //
+
55982 {0.716315985, 11.5256443}, //
+
55983 {0.719960988, 11.5274439}, //
+
55984 {0.723856986, 11.5291624}, //
+
55985 {0.728003025, 11.530798}, //
+
55986 {0.7324, 11.5323496}, //
+
55987 {0.736249983, 11.5340176}, //
+
55988 {0.740266979, 11.5360222}, //
+
55989 {0.744449973, 11.5383606}, //
+
55990 {0.74879998, 11.5410357}, //
+
55991 {0.753316998, 11.5440483}, //
+
55992 {0.758000016, 11.5473938}, //
+
55993 {0.762849987, 11.5510769}, //
+
55994 {0.767867029, 11.5550957}, //
+
55995 {0.77305001, 11.5594501}, //
+
55996 {0.780373991, 11.5632172}, //
+
55997 {0.787280023, 11.5669832}, //
+
55998 {0.793766975, 11.5707502}, //
+
55999 {0.799835026, 11.5745173}, //
+
56000 {0.80548501, 11.5782833}, //
+
56001 {0.810716987, 11.5820503}, //
+
56002 {0.815530002, 11.5858173}, //
+
56003 {0.819923997, 11.5895834}, //
+
56004 {0.823899984, 11.5933504}, //
+
56005 {0.826838017, 11.5955324}, //
+
56006 {0.829605997, 11.5975447}, //
+
56007 {0.832206011, 11.5993891}, //
+
56008 {0.834635973, 11.6010637}, //
+
56009 {0.836897016, 11.6025686}, //
+
56010 {0.838989019, 11.6039057}, //
+
56011 {0.840911984, 11.605073}, //
+
56012 {0.842665017, 11.6060715}, //
+
56013 {0.844250023, 11.6069002}, //
+
56014 {0.846536994, 11.6075926}, //
+
56015 {0.848864973, 11.6081591}, //
+
56016 {0.851233006, 11.6085997}, //
+
56017 {0.853643, 11.6089153}, //
+
56018 {0.856092989, 11.6091042}, //
+
56019 {0.858582973, 11.6091671}, //
+
56020 {0.861114979, 11.6091042}, //
+
56021 {0.863686979, 11.6089153}, //
+
56022 {0.866299987, 11.6085997}, //
+
56023 {0.868829012, 11.60816}, //
+
56024 {0.871149004, 11.6075954}, //
+
56025 {0.873260975, 11.6069059}, //
+
56026 {0.875163972, 11.6060905}, //
+
56027 {0.876859009, 11.6051521}, //
+
56028 {0.878343999, 11.6040888}, //
+
56029 {0.879621983, 11.6029015}, //
+
56030 {0.880689979, 11.6015882}, //
+
56031 {0.881550014, 11.6001501}, //
+
56032 {0.883817017, 11.5956173}, //
+
56033 {0.884572029, 11.5941057}, //
+
56034 {0.886083007, 11.5910826}, //
+
56035 {0.886838973, 11.589572}, //
+
56036 {0.88835001, 11.5865498}, //
+
56037 {0.889105022, 11.5850487}, //
+
56038 {0.889859021, 11.5835476}, //
+
56039 {0.890610993, 11.5820436}, //
+
56040 {0.891362011, 11.5805397}, //
+
56041 {0.892112017, 11.5790348}, //
+
56042 {0.892861009, 11.577528}, //
+
56043 {0.893608987, 11.5760202}, //
+
56044 {0.894354999, 11.5745096}, //
+
56045 {0.895099998, 11.573}, //
+
56046 {0.895834982, 11.5715199}, //
+
56047 {0.896526992, 11.5700808}, //
+
56048 {0.897177994, 11.5686827}, //
+
56049 {0.897786021, 11.5673256}, //
+
56050 {0.898352981, 11.5660086}, //
+
56051 {0.898877978, 11.5647326}, //
+
56052 {0.899360001, 11.5634975}, //
+
56053 {0.899801016, 11.5623035}, //
+
56054 {0.900200009, 11.5611496}, //
+
56055 {0.900556982, 11.5600796}, //
+
56056 {0.900871992, 11.5591354}, //
+
56057 {0.901879013, 11.5561132}, //
+
56058 {0.901899993, 11.5560503}, //
+
56059 {0.891749978, 11.52215}, //
+
56060 {0.891014993, 11.5212269}, //
+
56061 {0.890322983, 11.5199699}, //
+
56062 {0.889671981, 11.5183783}, //
+
56063 {0.889064014, 11.5164509}, //
+
56064 {0.888496995, 11.5141897}, //
+
56065 {0.887971997, 11.5115938}, //
+
56066 {0.887489974, 11.5086641}, //
+
56067 {0.887049019, 11.5053988}, //
+
56068 {0.886650026, 11.5017996}, //
+
56069 {0.886292994, 11.4979906}, //
+
56070 {0.885977983, 11.4940987}, //
+
56071 {0.885706007, 11.4901218}, //
+
56072 {0.88547498, 11.486062}, //
+
56073 {0.885285974, 11.4819174}, //
+
56074 {0.885138988, 11.4776888}, //
+
56075 {0.885034025, 11.4733772}, //
+
56076 {0.884971023, 11.4689798}, //
+
56077 {0.884949982, 11.4645004}, //
+
56078 {0.884949982, 11.4373999}, //
+
56079 {0.884971023, 11.4358473}, //
+
56080 {0.885034025, 11.4342098}, //
+
56081 {0.885138988, 11.4324894}, //
+
56082 {0.885285974, 11.4306841}, //
+
56083 {0.88547498, 11.4287949}, //
+
56084 {0.885706007, 11.4268217}, //
+
56085 {0.885977983, 11.4247646}, //
+
56086 {0.886292994, 11.4226246}, //
+
56087 {0.886650026, 11.4203997}, //
+
56088 {0.887006998, 11.4181232}, //
+
56089 {0.887322009, 11.4158049}, //
+
56090 {0.887593985, 11.4134436}, //
+
56091 {0.887825012, 11.4110422}, //
+
56092 {0.888014019, 11.4085979}, //
+
56093 {0.888161004, 11.4061108}, //
+
56094 {0.888266027, 11.4035826}, //
+
56095 {0.888329029, 11.4010124}, //
+
56096 {0.88835001, 11.3984003}, //
+
56097 {0.88835001, 11.3729496}, //
+
56098 });
+
56099 polys.push_back({
+
56100 {6.07906008, 11.3969517}, //
+
56101 {6.07863998, 11.3972673}, //
+
56102 {6.0752902, 11.399785}, //
+
56103 {6.07402992, 11.4007301}, //
+
56104 {6.07259989, 11.4018002}, //
+
56105 {6.07110023, 11.4029331}, //
+
56106 {6.06960011, 11.4040642}, //
+
56107 {6.06808996, 11.4051943}, //
+
56108 {6.06658983, 11.4063234}, //
+
56109 {6.06508017, 11.4074507}, //
+
56110 {6.06358004, 11.4085779}, //
+
56111 {6.06206989, 11.4097033}, //
+
56112 {6.06056023, 11.4108267}, //
+
56113 {6.05905008, 11.4119501}, //
+
56114 {6.05757999, 11.413125}, //
+
56115 {6.05620003, 11.414382}, //
+
56116 {6.05489016, 11.4157219}, //
+
56117 {6.05367994, 11.4171448}, //
+
56118 {6.05253983, 11.4186506}, //
+
56119 {6.05148983, 11.4202394}, //
+
56120 {6.05052996, 11.4219103}, //
+
56121 {6.04965019, 11.4236641}, //
+
56122 {6.04885006, 11.4254999}, //
+
56123 {6.04815006, 11.4273682}, //
+
56124 {6.04753017, 11.4291945}, //
+
56125 {6.04698992, 11.4309778}, //
+
56126 {6.04652977, 11.4327202}, //
+
56127 {6.04616022, 11.4344196}, //
+
56128 {6.04586983, 11.4360781}, //
+
56129 {6.04567003, 11.4376936}, //
+
56130 {6.04553986, 11.4392681}, //
+
56131 {6.0454998, 11.4407997}, //
+
56132 {6.0454998, 11.44415}, //
+
56133 {6.04551983, 11.4479055}, //
+
56134 {6.04557991, 11.4516191}, //
+
56135 {6.04569006, 11.4552889}, //
+
56136 {6.04583979, 11.4589148}, //
+
56137 {6.04602003, 11.4624987}, //
+
56138 {6.04625988, 11.4660387}, //
+
56139 {6.04652977, 11.4695358}, //
+
56140 {6.04684019, 11.47299}, //
+
56141 {6.0472002, 11.4764004}, //
+
56142 {6.0476799, 11.4797258}, //
+
56143 {6.04836988, 11.4829264}, //
+
56144 {6.04927015, 11.4860001}, //
+
56145 {6.05038023, 11.4889479}, //
+
56146 {6.05170012, 11.4917698}, //
+
56147 {6.0532198, 11.4944668}, //
+
56148 {6.05495977, 11.4970369}, //
+
56149 {6.05690002, 11.4994812}, //
+
56150 {6.05905008, 11.5017996}, //
+
56151 {6.06052017, 11.5033112}, //
+
56152 {6.06190014, 11.5048218}, //
+
56153 {6.0632, 11.5063334}, //
+
56154 {6.06441021, 11.507844}, //
+
56155 {6.06553984, 11.5093555}, //
+
56156 {6.06657982, 11.5108671}, //
+
56157 {6.06754017, 11.5123777}, //
+
56158 {6.06840992, 11.5138893}, //
+
56159 {6.06920004, 11.5153999}, //
+
56160 {6.07148981, 11.5184107}, //
+
56161 {6.0738101, 11.5214224}, //
+
56162 {6.07617998, 11.5244331}, //
+
56163 {6.07858992, 11.5274439}, //
+
56164 {6.08103991, 11.5304556}, //
+
56165 {6.08352995, 11.5334673}, //
+
56166 {6.08606005, 11.536478}, //
+
56167 {6.08864021, 11.5394888}, //
+
56168 {6.09124994, 11.5424995}, //
+
56169 {6.09391022, 11.5453444}, //
+
56170 {6.09662008, 11.5478535}, //
+
56171 {6.09937, 11.5500278}, //
+
56172 {6.10214996, 11.5518684}, //
+
56173 {6.10497999, 11.5533733}, //
+
56174 {6.10785007, 11.5545444}, //
+
56175 {6.11076021, 11.5553808}, //
+
56176 {6.11370993, 11.5558834}, //
+
56177 {6.11670017, 11.5560503}, //
+
56178 {6.14720011, 11.5560503}, //
+
56179 {6.15720987, 11.555378}, //
+
56180 {6.1676302, 11.5548754}, //
+
56181 {6.17848015, 11.5545387}, //
+
56182 {6.18974018, 11.5543709}, //
+
56183 {6.20141983, 11.5543709}, //
+
56184 {6.21351004, 11.5545387}, //
+
56185 {6.22601986, 11.5548754}, //
+
56186 {6.23894978, 11.555378}, //
+
56187 {6.25229979, 11.5560503}, //
+
56188 {6.25828981, 11.5561342}, //
+
56189 {6.26420021, 11.556386}, //
+
56190 {6.27002001, 11.5568056}, //
+
56191 {6.27575016, 11.5573931}, //
+
56192 {6.2814002, 11.5581493}, //
+
56193 {6.28697014, 11.5590715}, //
+
56194 {6.29244995, 11.5601645}, //
+
56195 {6.29784012, 11.5614233}, //
+
56196 {6.30315018, 11.56285}, //
+
56197 {6.30693007, 11.5642977}, //
+
56198 {6.31069994, 11.5656176}, //
+
56199 {6.31447983, 11.5668106}, //
+
56200 {6.31825018, 11.5678768}, //
+
56201 {6.32202005, 11.5688162}, //
+
56202 {6.32578993, 11.5696278}, //
+
56203 {6.3295598, 11.5703115}, //
+
56204 {6.33333015, 11.5708704}, //
+
56205 {6.33710003, 11.5712996}, //
+
56206 {6.3408699, 11.5714903}, //
+
56207 {6.34462976, 11.5713024}, //
+
56208 {6.34840012, 11.5707388}, //
+
56209 {6.35216999, 11.5697994}, //
+
56210 {6.35592985, 11.5684824}, //
+
56211 {6.3597002, 11.5667887}, //
+
56212 {6.36347008, 11.5647192}, //
+
56213 {6.36722994, 11.562273}, //
+
56214 {6.37099981, 11.5594501}, //
+
56215 {6.37759018, 11.5541716}, //
+
56216 {6.38380003, 11.5488939}, //
+
56217 {6.38963985, 11.5436172}, //
+
56218 {6.39510012, 11.5383387}, //
+
56219 {6.40017986, 11.533061}, //
+
56220 {6.40489006, 11.5277834}, //
+
56221 {6.40922022, 11.5225058}, //
+
56222 {6.41316986, 11.5172281}, //
+
56223 {6.41674995, 11.5119495}, //
+
56224 {6.41995001, 11.5067253}, //
+
56225 {6.42277002, 11.5015821}, //
+
56226 {6.42522001, 11.4965219}, //
+
56227 {6.42728996, 11.4915447}, //
+
56228 {6.42898989, 11.4866514}, //
+
56229 {6.43030977, 11.4818392}, //
+
56230 {6.4312501, 11.4771099}, //
+
56231 {6.4318099, 11.4724636}, //
+
56232 {6.43200016, 11.4679003}, //
+
56233 {6.43204021, 11.4656019}, //
+
56234 {6.43216991, 11.4632187}, //
+
56235 {6.4323802, 11.4607496}, //
+
56236 {6.43267012, 11.4581957}, //
+
56237 {6.43305016, 11.4555569}, //
+
56238 {6.43350983, 11.4528332}, //
+
56239 {6.4340601, 11.4500237}, //
+
56240 {6.43469, 11.4471302}, //
+
56241 {6.43482018, 11.4465866}, //
+
56242 {6.43408012, 11.4481649}, //
+
56243 {6.43201017, 11.4517221}, //
+
56244 {6.42955017, 11.4551954}, //
+
56245 {6.42673016, 11.4585838}, //
+
56246 {6.42352009, 11.4618893}, //
+
56247 {6.41993999, 11.4651098}, //
+
56248 {6.41597986, 11.4682474}, //
+
56249 {6.41165018, 11.4713001}, //
+
56250 {6.3990202, 11.4777012}, //
+
56251 {6.38672018, 11.4833488}, //
+
56252 {6.37475014, 11.4882441}, //
+
56253 {6.36312008, 11.4923859}, //
+
56254 {6.35181999, 11.4957752}, //
+
56255 {6.34084988, 11.4984112}, //
+
56256 {6.33022022, 11.5002937}, //
+
56257 {6.31992006, 11.5014229}, //
+
56258 {6.30994987, 11.5017996}, //
+
56259 {6.2184, 11.5017996}, //
+
56260 {6.21392012, 11.5025558}, //
+
56261 {6.20951986, 11.5033112}, //
+
56262 {6.20521021, 11.5040674}, //
+
56263 {6.20098019, 11.5048218}, //
+
56264 {6.19683981, 11.505578}, //
+
56265 {6.19278002, 11.5063334}, //
+
56266 {6.18879986, 11.5070887}, //
+
56267 {6.18490982, 11.507844}, //
+
56268 {6.18109989, 11.5086002}, //
+
56269 {6.17666006, 11.5093136}, //
+
56270 {6.17238998, 11.509943}, //
+
56271 {6.16829014, 11.5104895}, //
+
56272 {6.16435003, 11.510951}, //
+
56273 {6.16059017, 11.5113277}, //
+
56274 {6.15699005, 11.5116224}, //
+
56275 {6.15356016, 11.5118322}, //
+
56276 {6.15030003, 11.5119581}, //
+
56277 {6.14720011, 11.5120001}, //
+
56278 {6.14418983, 11.5119162}, //
+
56279 {6.14118004, 11.5116644}, //
+
56280 {6.13816977, 11.5112438}, //
+
56281 {6.13515997, 11.5106573}, //
+
56282 {6.13214016, 11.509901}, //
+
56283 {6.12912989, 11.5089779}, //
+
56284 {6.12612009, 11.5078859}, //
+
56285 {6.12310982, 11.5066271}, //
+
56286 {6.12010002, 11.5052004}, //
+
56287 {6.11787987, 11.5028811}, //
+
56288 {6.11572981, 11.5004349}, //
+
56289 {6.11367989, 11.4978609}, //
+
56290 {6.11170006, 11.4951601}, //
+
56291 {6.10981989, 11.4923334}, //
+
56292 {6.10800982, 11.489378}, //
+
56293 {6.10628986, 11.4862957}, //
+
56294 {6.10465002, 11.4830856}, //
+
56295 {6.10309982, 11.4797497}, //
+
56296 {6.1016202, 11.4763823}, //
+
56297 {6.10018015, 11.4730558}, //
+
56298 {6.09878016, 11.4697723}, //
+
56299 {6.09743023, 11.4665298}, //
+
56300 {6.09610987, 11.4633303}, //
+
56301 {6.09483004, 11.4601717}, //
+
56302 {6.0935998, 11.457056}, //
+
56303 {6.09240007, 11.4539824}, //
+
56304 {6.09124994, 11.4509497}, //
+
56305 {6.09017992, 11.4480639}, //
+
56306 {6.08924007, 11.4454288}, //
+
56307 {6.08841991, 11.4430437}, //
+
56308 {6.08771992, 11.4409103}, //
+
56309 {6.08716011, 11.4390268}, //
+
56310 {6.08671999, 11.4373941}, //
+
56311 {6.08640003, 11.4360123}, //
+
56312 {6.08620977, 11.4348812}, //
+
56313 {6.08615017, 11.434}, //
+
56314 {6.08615017, 11.4272003}, //
+
56315 {6.08686018, 11.4256992}, //
+
56316 {6.08749008, 11.4241982}, //
+
56317 {6.08803988, 11.4226942}, //
+
56318 {6.08850002, 11.4211903}, //
+
56319 {6.08888006, 11.4196854}, //
+
56320 {6.08916998, 11.4181776}, //
+
56321 {6.08937979, 11.4166698}, //
+
56322 {6.08950996, 11.4151602}, //
+
56323 {6.08955002, 11.4136496}, //
+
56324 {6.08941984, 11.4121075}, //
+
56325 {6.08904982, 11.4104795}, //
+
56326 {6.08841991, 11.4087667}, //
+
56327 {6.08755016, 11.4069691}, //
+
56328 {6.08642006, 11.4050846}, //
+
56329 {6.08504009, 11.4031172}, //
+
56330 {6.08340979, 11.401063}, //
+
56331 {6.08153009, 11.3989239}, //
+
56332 {6.07940006, 11.3966999}, //
+
56333 });
+
56334 polys.push_back({
+
56335 {3.18379998, 11.5052004}, //
+
56336 {3.18308997, 11.5059137}, //
+
56337 {3.18246007, 11.5065432}, //
+
56338 {3.18191004, 11.5070887}, //
+
56339 {3.18107009, 11.5079279}, //
+
56340 {3.18077993, 11.5082216}, //
+
56341 {3.18039989, 11.5086002}, //
+
56342 {3.17962003, 11.5093346}, //
+
56343 {3.17880011, 11.5100269}, //
+
56344 {3.17793989, 11.5106783}, //
+
56345 {3.1770401, 11.5112858}, //
+
56346 {3.17610002, 11.5118532}, //
+
56347 {3.1751101, 11.5123777}, //
+
56348 {3.1740799, 11.5128603}, //
+
56349 {3.17301011, 11.5133009}, //
+
56350 {3.17190003, 11.5136995}, //
+
56351 {3.17079997, 11.5140572}, //
+
56352 {3.16973996, 11.5143719}, //
+
56353 {3.16872001, 11.5146437}, //
+
56354 {3.16774011, 11.5148754}, //
+
56355 {3.16680002, 11.5150642}, //
+
56356 {3.16589999, 11.5152111}, //
+
56357 {3.16504002, 11.515316}, //
+
56358 {3.16423011, 11.515379}, //
+
56359 {3.16345, 11.5153999}, //
+
56360 {3.16004992, 11.5153999}, //
+
56361 {3.15929008, 11.5146856}, //
+
56362 {3.15854001, 11.5140572}, //
+
56363 {3.15777993, 11.5135107}, //
+
56364 {3.15703011, 11.5130491}, //
+
56365 {3.15627003, 11.5126724}, //
+
56366 {3.15551996, 11.5123777}, //
+
56367 {3.15475988, 11.5121679}, //
+
56368 {3.15401006, 11.512042}, //
+
56369 {3.15324998, 11.5120001}, //
+
56370 {3.15249991, 11.5120831}, //
+
56371 {3.1517601, 11.5123329}, //
+
56372 {3.15101004, 11.5127497}, //
+
56373 {3.15025997, 11.5133333}, //
+
56374 {3.14950991, 11.5140829}, //
+
56375 {3.14876008, 11.5150003}, //
+
56376 {3.14801002, 11.5160828}, //
+
56377 {3.14724994, 11.517333}, //
+
56378 {3.14650011, 11.5187502}, //
+
56379 {3.14112997, 11.5214357}, //
+
56380 {3.13999009, 11.5220032}, //
+
56381 {3.1389401, 11.5225277}, //
+
56382 {3.13630009, 11.5238504}, //
+
56383 {3.13546991, 11.5242071}, //
+
56384 {3.13446999, 11.5245218}, //
+
56385 {3.13331008, 11.5247936}, //
+
56386 {3.13196993, 11.5250254}, //
+
56387 {3.13046002, 11.5252142}, //
+
56388 {3.1287899, 11.5253611}, //
+
56389 {3.12695003, 11.525466}, //
+
56390 {3.1249299, 11.5255289}, //
+
56391 {3.12275004, 11.5255499}, //
+
56392 {3.1205101, 11.5262642}, //
+
56393 {3.11831999, 11.5268927}, //
+
56394 {3.11616993, 11.5274391}, //
+
56395 {3.11404991, 11.5279007}, //
+
56396 {3.11197996, 11.5282784}, //
+
56397 {3.10995007, 11.5285721}, //
+
56398 {3.10795999, 11.5287819}, //
+
56399 {3.10600996, 11.5289078}, //
+
56400 {3.10409999, 11.5289497}, //
+
56401 {3.08209991, 11.5289497}, //
+
56402 {3.08063006, 11.5289707}, //
+
56403 {3.0792501, 11.5290337}, //
+
56404 {3.07793999, 11.5291386}, //
+
56405 {3.07673001, 11.5292864}, //
+
56406 {3.0755899, 11.5294752}, //
+
56407 {3.0745399, 11.529706}, //
+
56408 {3.07358003, 11.5299778}, //
+
56409 {3.07270002, 11.5302935}, //
+
56410 {3.07189989, 11.5306501}, //
+
56411 {3.07117009, 11.5310068}, //
+
56412 {3.07047009, 11.5313215}, //
+
56413 {3.06981993, 11.5315943}, //
+
56414 {3.06921005, 11.5318251}, //
+
56415 {3.06865001, 11.5320139}, //
+
56416 {3.06812, 11.5321608}, //
+
56417 {3.06764007, 11.5322657}, //
+
56418 {3.06719995, 11.5323286}, //
+
56419 {3.06680012, 11.5323496}, //
+
56420 {3.06850004, 11.5323496}, //
+
56421 {3.07079005, 11.5331163}, //
+
56422 {3.0731101, 11.5339251}, //
+
56423 {3.07547998, 11.5347776}, //
+
56424 {3.07788992, 11.5356731}, //
+
56425 {3.08033991, 11.5366116}, //
+
56426 {3.08282995, 11.5375938}, //
+
56427 {3.08536005, 11.53862}, //
+
56428 {3.08793998, 11.5396881}, //
+
56429 {3.09054995, 11.5408001}, //
+
56430 {3.09315991, 11.5418701}, //
+
56431 {3.09574008, 11.5428152}, //
+
56432 {3.09826994, 11.5436335}, //
+
56433 {3.10075998, 11.5443258}, //
+
56434 {3.10320997, 11.5448933}, //
+
56435 {3.10561991, 11.5453329}, //
+
56436 {3.10799003, 11.5456476}, //
+
56437 {3.11031008, 11.5458374}, //
+
56438 {3.11260009, 11.5459003}, //
+
56439 {3.12614989, 11.5459003}, //
+
56440 {3.12766004, 11.5466137}, //
+
56441 {3.12916994, 11.5472431}, //
+
56442 {3.13068008, 11.5477886}, //
+
56443 {3.13217998, 11.5482512}, //
+
56444 {3.13369012, 11.5486279}, //
+
56445 {3.13519001, 11.5489216}, //
+
56446 {3.13669991, 11.5491323}, //
+
56447 {3.13820004, 11.5492582}, //
+
56448 {3.13969994, 11.5493002}, //
+
56449 {3.14117002, 11.5492582}, //
+
56450 {3.14254999, 11.5491323}, //
+
56451 {3.1438601, 11.5489216}, //
+
56452 {3.14507008, 11.5486279}, //
+
56453 {3.14620996, 11.5482512}, //
+
56454 {3.14725995, 11.5477886}, //
+
56455 {3.14822006, 11.5472431}, //
+
56456 {3.14910007, 11.5466137}, //
+
56457 {3.14989996, 11.5459003}, //
+
56458 {3.15136003, 11.5437174}, //
+
56459 {3.15272999, 11.5417023}, //
+
56460 {3.15403008, 11.539856}, //
+
56461 {3.15524006, 11.5381765}, //
+
56462 {3.15636992, 11.536665}, //
+
56463 {3.15740991, 11.5353222}, //
+
56464 {3.15837002, 11.5341473}, //
+
56465 {3.15925002, 11.5331402}, //
+
56466 {3.16004992, 11.5323}, //
+
56467 {3.16080999, 11.5315971}, //
+
56468 {3.16156006, 11.5309772}, //
+
56469 {3.1623199, 11.5304394}, //
+
56470 {3.16306996, 11.5299845}, //
+
56471 {3.16383004, 11.5296116}, //
+
56472 {3.16458011, 11.5293217}, //
+
56473 {3.16533995, 11.5291147}, //
+
56474 {3.16609001, 11.5289907}, //
+
56475 {3.16685009, 11.5289497}, //
+
56476 {3.18379998, 11.5289497}, //
+
56477 {3.18455005, 11.5289288}, //
+
56478 {3.18530989, 11.5288658}, //
+
56479 {3.18605995, 11.5287609}, //
+
56480 {3.18681002, 11.528614}, //
+
56481 {3.18756008, 11.5284252}, //
+
56482 {3.18830991, 11.5281944}, //
+
56483 {3.18905997, 11.5279217}, //
+
56484 {3.18980002, 11.527607}, //
+
56485 {3.19055009, 11.5272503}, //
+
56486 {3.1912601, 11.5268927}, //
+
56487 {3.19189, 11.5265779}, //
+
56488 {3.19289994, 11.5260754}, //
+
56489 {3.19327998, 11.5258856}, //
+
56490 {3.1935699, 11.5257387}, //
+
56491 {3.19377995, 11.5256338}, //
+
56492 {3.19390988, 11.5255709}, //
+
56493 {3.19394994, 11.5255499}, //
+
56494 {3.20075011, 11.5255499}, //
+
56495 {3.18720007, 11.5086002}, //
+
56496 {3.18889999, 11.5086002}, //
+
56497 {3.18926001, 11.5085793}, //
+
56498 {3.18956995, 11.5085163}, //
+
56499 {3.18984008, 11.5084114}, //
+
56500 {3.19007993, 11.5082636}, //
+
56501 {3.19025993, 11.5080748}, //
+
56502 {3.1904099, 11.507844}, //
+
56503 {3.19052005, 11.5075722}, //
+
56504 {3.19057989, 11.5072575}, //
+
56505 {3.19059992, 11.5068998}, //
+
56506 {3.19057989, 11.5065432}, //
+
56507 {3.19052005, 11.5062284}, //
+
56508 {3.1904099, 11.5059557}, //
+
56509 {3.19025993, 11.5057249}, //
+
56510 {3.19007993, 11.5055361}, //
+
56511 {3.18984008, 11.5053892}, //
+
56512 {3.18956995, 11.5052843}, //
+
56513 {3.18926001, 11.5052214}, //
+
56514 {3.18889999, 11.5052004}, //
+
56515 });
+
56516 polys.push_back({
+
56517 {1.21686995, 11.4765673}, //
+
56518 {1.21551001, 11.4768944}, //
+
56519 {1.21393001, 11.4773893}, //
+
56520 {1.21214998, 11.4780502}, //
+
56521 {1.21019995, 11.4788485}, //
+
56522 {1.20811999, 11.4797287}, //
+
56523 {1.20591998, 11.4806938}, //
+
56524 {1.20360005, 11.4817438}, //
+
56525 {1.20114994, 11.4828768}, //
+
56526 {1.19857001, 11.4840937}, //
+
56527 {1.19587004, 11.4853964}, //
+
56528 {1.19305003, 11.4867811}, //
+
56529 {1.19009995, 11.4882498}, //
+
56530 {1.18780005, 11.4897404}, //
+
56531 {1.18542004, 11.4911861}, //
+
56532 {1.18295002, 11.492589}, //
+
56533 {1.18040001, 11.4939489}, //
+
56534 {1.17776, 11.495265}, //
+
56535 {1.17502999, 11.4965391}, //
+
56536 {1.17221999, 11.4977694}, //
+
56537 {1.16933, 11.4989557}, //
+
56538 {1.16635001, 11.5001001}, //
+
56539 {1.16341996, 11.5011702}, //
+
56540 {1.16066003, 11.5021152}, //
+
56541 {1.15806997, 11.5029325}, //
+
56542 {1.15565002, 11.5036259}, //
+
56543 {1.15339005, 11.5041933}, //
+
56544 {1.15130997, 11.5046329}, //
+
56545 {1.14938998, 11.5049477}, //
+
56546 {1.14762998, 11.5051374}, //
+
56547 {1.14604998, 11.5052004}, //
+
56548 {1.12230003, 11.5052004}, //
+
56549 {1.11851001, 11.5059137}, //
+
56550 {1.11468005, 11.5065432}, //
+
56551 {1.11081004, 11.5070887}, //
+
56552 {1.10689998, 11.5075512}, //
+
56553 {1.10293996, 11.5079279}, //
+
56554 {1.09894001, 11.5082216}, //
+
56555 {1.09490001, 11.5084324}, //
+
56556 {1.09081995, 11.5085583}, //
+
56557 {1.08669996, 11.5086002}, //
+
56558 {1.08265996, 11.5085583}, //
+
56559 {1.07883, 11.5084324}, //
+
56560 {1.07520998, 11.5082216}, //
+
56561 {1.07179999, 11.5079279}, //
+
56562 {1.06860006, 11.5075512}, //
+
56563 {1.06561005, 11.5070887}, //
+
56564 {1.06282997, 11.5065432}, //
+
56565 {1.06026006, 11.5059137}, //
+
56566 {1.05789995, 11.5052004}, //
+
56567 {1.05630004, 11.5044861}, //
+
56568 {1.05454004, 11.5038567}, //
+
56569 {1.05261004, 11.5033112}, //
+
56570 {1.05051005, 11.5028486}, //
+
56571 {1.04824996, 11.5024719}, //
+
56572 {1.04580998, 11.5021782}, //
+
56573 {1.04321003, 11.5019684}, //
+
56574 {1.04043996, 11.5018415}, //
+
56575 {1.03750002, 11.5017996}, //
+
56576 {1.03454995, 11.5017786}, //
+
56577 {1.03173006, 11.5017157}, //
+
56578 {1.02902997, 11.5016108}, //
+
56579 {1.02645004, 11.5014639}, //
+
56580 {1.02400005, 11.5012751}, //
+
56581 {1.02168, 11.5010443}, //
+
56582 {1.01947999, 11.5007725}, //
+
56583 {1.01740003, 11.5004568}, //
+
56584 {1.01545, 11.5001001}, //
+
56585 {1.01367998, 11.4997435}, //
+
56586 {1.00866997, 11.4987364}, //
+
56587 {1.00794005, 11.4985886}, //
+
56588 {1.00741994, 11.4984837}, //
+
56589 {1.00709999, 11.4984207}, //
+
56590 {1.00699997, 11.4983997}, //
+
56591 {1.00699997, 11.5001001}, //
+
56592 {1.00702, 11.5004568}, //
+
56593 {1.00707996, 11.5007725}, //
+
56594 {1.00718999, 11.5010443}, //
+
56595 {1.00733995, 11.5012751}, //
+
56596 {1.00751996, 11.5014639}, //
+
56597 {1.00776005, 11.5016108}, //
+
56598 {1.00803006, 11.5017157}, //
+
56599 {1.00834, 11.5017786}, //
+
56600 {1.00906003, 11.5018206}, //
+
56601 {1.00936997, 11.5018845}, //
+
56602 {1.00963998, 11.5019894}, //
+
56603 {1.00987995, 11.5021362}, //
+
56604 {1.01005995, 11.5023251}, //
+
56605 {1.01021004, 11.5025558}, //
+
56606 {1.01031995, 11.5028276}, //
+
56607 {1.01038003, 11.5031433}, //
+
56608 {1.01040006, 11.5035}, //
+
56609 {1.01041996, 11.5038776}, //
+
56610 {1.01048005, 11.5042562}, //
+
56611 {1.01058996, 11.5046329}, //
+
56612 {1.01074004, 11.5050106}, //
+
56613 {1.01092005, 11.5053892}, //
+
56614 {1.01116002, 11.5057669}, //
+
56615 {1.01143003, 11.5061436}, //
+
56616 {1.01173997, 11.5065222}, //
+
56617 {1.01209998, 11.5068998}, //
+
56618 {1.01248002, 11.5072575}, //
+
56619 {1.01285994, 11.5075722}, //
+
56620 {1.01322997, 11.507844}, //
+
56621 {1.01361001, 11.5080748}, //
+
56622 {1.01399004, 11.5082636}, //
+
56623 {1.01436996, 11.5084114}, //
+
56624 {1.01473999, 11.5085163}, //
+
56625 {1.01512003, 11.5085793}, //
+
56626 {1.01549995, 11.5086002}, //
+
56627 {1.01592004, 11.5086212}, //
+
56628 {1.01642001, 11.5086842}, //
+
56629 {1.01700997, 11.5087891}, //
+
56630 {1.01767004, 11.5089359}, //
+
56631 {1.01841998, 11.5091248}, //
+
56632 {1.01926005, 11.5093555}, //
+
56633 {1.02016997, 11.5096283}, //
+
56634 {1.02117002, 11.509943}, //
+
56635 {1.02225006, 11.5102997}, //
+
56636 {1.02336001, 11.5106993}, //
+
56637 {1.02443004, 11.5111399}, //
+
56638 {1.02546, 11.5116224}, //
+
56639 {1.02645004, 11.5121469}, //
+
56640 {1.02739, 11.5127144}, //
+
56641 {1.02829003, 11.5133219}, //
+
56642 {1.02915001, 11.5139732}, //
+
56643 {1.02997005, 11.5146646}, //
+
56644 {1.03075004, 11.5153999}, //
+
56645 {1.03754997, 11.5153999}, //
+
56646 {1.04289997, 11.5161657}, //
+
56647 {1.04841995, 11.5169754}, //
+
56648 {1.05411005, 11.517828}, //
+
56649 {1.05996001, 11.5187225}, //
+
56650 {1.06597996, 11.5196619}, //
+
56651 {1.07217002, 11.5206442}, //
+
56652 {1.07852995, 11.5216703}, //
+
56653 {1.08506, 11.5227385}, //
+
56654 {1.09175003, 11.5238504}, //
+
56655 {1.09858, 11.5248356}, //
+
56656 {1.10548997, 11.5255289}, //
+
56657 {1.11249006, 11.5259275}, //
+
56658 {1.11957002, 11.5260334}, //
+
56659 {1.12672997, 11.5258436}, //
+
56660 {1.13397002, 11.5253611}, //
+
56661 {1.14129996, 11.5245848}, //
+
56662 {1.14871001, 11.5235138}, //
+
56663 {1.15620005, 11.52215}, //
+
56664 {1.16278994, 11.5207329}, //
+
56665 {1.16900003, 11.5194826}, //
+
56666 {1.17483997, 11.5184002}, //
+
56667 {1.1803, 11.5174828}, //
+
56668 {1.18537998, 11.5167332}, //
+
56669 {1.19008994, 11.5161505}, //
+
56670 {1.19441998, 11.5157328}, //
+
56671 {1.19836998, 11.5154829}, //
+
56672 {1.20194995, 11.5153999}, //
+
56673 {1.21724999, 11.5153999}, //
+
56674 {1.22064996, 11.4780998}, //
+
56675 {1.22054994, 11.4774284}, //
+
56676 {1.22022998, 11.476922}, //
+
56677 {1.21970999, 11.4765825}, //
+
56678 {1.21896994, 11.4764109}, //
+
56679 {1.21802998, 11.4764061}, //
+
56680 });
+
56681 polys.push_back({
+
56682 {4.21115017, 11.4407997}, //
+
56683 {4.21153021, 11.4411716}, //
+
56684 {4.21182013, 11.4414616}, //
+
56685 {4.21220016, 11.4418344}, //
+
56686 {4.21265984, 11.4422894}, //
+
56687 {4.21384001, 11.4434471}, //
+
56688 {4.21455002, 11.44415}, //
+
56689 {4.21533012, 11.4449682}, //
+
56690 {4.21613979, 11.4459105}, //
+
56691 {4.21700001, 11.4469776}, //
+
56692 {4.2178998, 11.4481697}, //
+
56693 {4.21884012, 11.4494858}, //
+
56694 {4.21982002, 11.4509277}, //
+
56695 {4.22083998, 11.4524937}, //
+
56696 {4.22189999, 11.4541845}, //
+
56697 {4.22300005, 11.4560003}, //
+
56698 {4.22417021, 11.4578257}, //
+
56699 {4.22543001, 11.4595261}, //
+
56700 {4.22676992, 11.4610996}, //
+
56701 {4.22819996, 11.4625483}, //
+
56702 {4.22970009, 11.46387}, //
+
56703 {4.23128986, 11.4650669}, //
+
56704 {4.23296022, 11.4661369}, //
+
56705 {4.23471022, 11.4670811}, //
+
56706 {4.23654985, 11.4679003}, //
+
56707 {4.23842001, 11.4686136}, //
+
56708 {4.2402401, 11.469243}, //
+
56709 {4.24203014, 11.4697886}, //
+
56710 {4.24377012, 11.4702511}, //
+
56711 {4.24547005, 11.4706278}, //
+
56712 {4.24712992, 11.4709225}, //
+
56713 {4.2487402, 11.4711323}, //
+
56714 {4.25031996, 11.4712582}, //
+
56715 {4.25185013, 11.4713001}, //
+
56716 {4.26370001, 11.4713001}, //
+
56717 {4.26638985, 11.4713211}, //
+
56718 {4.26914978, 11.471384}, //
+
56719 {4.27200985, 11.471489}, //
+
56720 {4.27494001, 11.4716358}, //
+
56721 {4.27795982, 11.4718246}, //
+
56722 {4.28106022, 11.4720564}, //
+
56723 {4.28423977, 11.4723282}, //
+
56724 {4.2874999, 11.4726429}, //
+
56725 {4.29085016, 11.4729996}, //
+
56726 {4.29762983, 11.4737558}, //
+
56727 {4.30102015, 11.4741325}, //
+
56728 {4.31118011, 11.4752674}, //
+
56729 {4.31456995, 11.4756441}, //
+
56730 {4.31795979, 11.4760218}, //
+
56731 {4.3213501, 11.4764004}, //
+
56732 {4.32467985, 11.476757}, //
+
56733 {4.32787991, 11.4770718}, //
+
56734 {4.3309598, 11.4773436}, //
+
56735 {4.33390999, 11.4775753}, //
+
56736 {4.33674002, 11.4777641}, //
+
56737 {4.33943987, 11.477911}, //
+
56738 {4.34202003, 11.4780159}, //
+
56739 {4.34447002, 11.4780788}, //
+
56740 {4.34679985, 11.4780998}, //
+
56741 {4.34834003, 11.4788866}, //
+
56742 {4.34996986, 11.4797592}, //
+
56743 {4.3516798, 11.4807167}, //
+
56744 {4.35346985, 11.4817591}, //
+
56745 {4.35535002, 11.4828873}, //
+
56746 {4.35730982, 11.4841003}, //
+
56747 {4.35936022, 11.4853983}, //
+
56748 {4.36148977, 11.4867811}, //
+
56749 {4.36369991, 11.4882498}, //
+
56750 {4.36597013, 11.4897604}, //
+
56751 {4.36822987, 11.4912701}, //
+
56752 {4.37050009, 11.4927778}, //
+
56753 {4.37276983, 11.4942846}, //
+
56754 {4.37503004, 11.4957895}, //
+
56755 {4.37957001, 11.4987984}, //
+
56756 {4.38183022, 11.5002995}, //
+
56757 {4.38409996, 11.5017996}, //
+
56758 {4.38778019, 11.5039825}, //
+
56759 {4.3913002, 11.5059977}, //
+
56760 {4.39463997, 11.507844}, //
+
56761 {4.39782, 11.5095234}, //
+
56762 {4.40082979, 11.511035}, //
+
56763 {4.40367985, 11.5123777}, //
+
56764 {4.40635014, 11.5135527}, //
+
56765 {4.40886021, 11.5145597}, //
+
56766 {4.41120005, 11.5153999}, //
+
56767 {4.4134202, 11.5161028}, //
+
56768 {4.41555977, 11.5167227}, //
+
56769 {4.41762018, 11.5172606}, //
+
56770 {4.41959, 11.5177164}, //
+
56771 {4.42147017, 11.5180883}, //
+
56772 {4.42327023, 11.5183783}, //
+
56773 {4.42498016, 11.5185852}, //
+
56774 {4.42660999, 11.5187092}, //
+
56775 {4.42815018, 11.5187502}, //
+
56776 {4.42961979, 11.5186672}, //
+
56777 {4.43100023, 11.5184174}, //
+
56778 {4.4323101, 11.5179996}, //
+
56779 {4.43351984, 11.517417}, //
+
56780 {4.43465996, 11.5166674}, //
+
56781 {4.43570995, 11.5157499}, //
+
56782 {4.43666983, 11.5146666}, //
+
56783 {4.43755007, 11.5134172}, //
+
56784 {4.4383502, 11.5120001}, //
+
56785 {4.4383502, 11.5017996}, //
+
56786 {4.43837023, 11.5002565}, //
+
56787 {4.43842983, 11.4986296}, //
+
56788 {4.43852997, 11.4969168}, //
+
56789 {4.43868017, 11.4951191}, //
+
56790 {4.43885994, 11.4932346}, //
+
56791 {4.43908024, 11.4912672}, //
+
56792 {4.43935013, 11.489213}, //
+
56793 {4.43965006, 11.4870739}, //
+
56794 {4.44000006, 11.4848499}, //
+
56795 {4.4403801, 11.4826365}, //
+
56796 {4.44076014, 11.480504}, //
+
56797 {4.44113016, 11.4784555}, //
+
56798 {4.4415102, 11.47649}, //
+
56799 {4.44188976, 11.4746056}, //
+
56800 {4.4422698, 11.472806}, //
+
56801 {4.44263983, 11.4710884}, //
+
56802 {4.44301987, 11.4694519}, //
+
56803 {4.44339991, 11.4679003}, //
+
56804 {4.44375992, 11.4664831}, //
+
56805 {4.44434023, 11.4641504}, //
+
56806 {4.44458008, 11.463233}, //
+
56807 {4.44491005, 11.4618998}, //
+
56808 {4.4450798, 11.4612331}, //
+
56809 {4.44509983, 11.4611502}, //
+
56810 {4.4450202, 11.4610662}, //
+
56811 {4.44491005, 11.4609613}, //
+
56812 {4.44458008, 11.4606247}, //
+
56813 {4.44375992, 11.4598074}, //
+
56814 {4.44339991, 11.4594498}, //
+
56815 {4.44303989, 11.4590302}, //
+
56816 {4.44272995, 11.4585266}, //
+
56817 {4.44246006, 11.4579391}, //
+
56818 {4.44222021, 11.4572668}, //
+
56819 {4.44203997, 11.4565125}, //
+
56820 {4.44188976, 11.4556723}, //
+
56821 {4.44178009, 11.4547491}, //
+
56822 {4.44172001, 11.4537411}, //
+
56823 {4.44167995, 11.4515591}, //
+
56824 {4.44161987, 11.450551}, //
+
56825 {4.4415102, 11.4496279}, //
+
56826 {4.44136, 11.4487877}, //
+
56827 {4.44118023, 11.4480333}, //
+
56828 {4.4409399, 11.447361}, //
+
56829 {4.44067001, 11.4467726}, //
+
56830 {4.44036007, 11.44627}, //
+
56831 {4.44000006, 11.4458504}, //
+
56832 {4.43963003, 11.4454927}, //
+
56833 {4.43926001, 11.445178}, //
+
56834 {4.43888998, 11.4449062}, //
+
56835 {4.43851995, 11.4446754}, //
+
56836 {4.43814993, 11.4444857}, //
+
56837 {4.4377799, 11.4443388}, //
+
56838 {4.43739986, 11.4442339}, //
+
56839 {4.43702984, 11.444171}, //
+
56840 {4.4366498, 11.44415}, //
+
56841 {4.43633986, 11.4441919}, //
+
56842 {4.43615007, 11.4443178}, //
+
56843 {4.43607998, 11.4445276}, //
+
56844 {4.43615007, 11.4448223}, //
+
56845 {4.43633986, 11.445199}, //
+
56846 {4.4366498, 11.4456606}, //
+
56847 {4.43708992, 11.446207}, //
+
56848 {4.43766022, 11.4468365}, //
+
56849 {4.4383502, 11.4475498}, //
+
56850 {4.4383502, 11.4695997}, //
+
56851 {4.43831015, 11.4722118}, //
+
56852 {4.43817997, 11.4747829}, //
+
56853 {4.43797016, 11.4773111}, //
+
56854 {4.43767977, 11.4797983}, //
+
56855 {4.43730021, 11.4822416}, //
+
56856 {4.43684006, 11.4846439}, //
+
56857 {4.43628979, 11.4870052}, //
+
56858 {4.43565989, 11.4893227}, //
+
56859 {4.43494987, 11.4916}, //
+
56860 {4.43415022, 11.493741}, //
+
56861 {4.43326998, 11.4956303}, //
+
56862 {4.4323101, 11.4972668}, //
+
56863 {4.43126011, 11.4986525}, //
+
56864 {4.43011999, 11.4997854}, //
+
56865 {4.42890978, 11.5006666}, //
+
56866 {4.42759991, 11.501296}, //
+
56867 {4.42621994, 11.5016737}, //
+
56868 {4.42474985, 11.5017996}, //
+
56869 {4.42399979, 11.5017576}, //
+
56870 {4.42326021, 11.5016317}, //
+
56871 {4.42251015, 11.5014219}, //
+
56872 {4.42176008, 11.5011282}, //
+
56873 {4.42101002, 11.5007505}, //
+
56874 {4.42025995, 11.500289}, //
+
56875 {4.41950989, 11.4997435}, //
+
56876 {4.41874981, 11.499114}, //
+
56877 {4.41800022, 11.4983997}, //
+
56878 {4.41724014, 11.4976969}, //
+
56879 {4.41649008, 11.497077}, //
+
56880 {4.41573, 11.4965391}, //
+
56881 {4.41497993, 11.4960842}, //
+
56882 {4.41421986, 11.4957123}, //
+
56883 {4.41346979, 11.4954224}, //
+
56884 {4.41271019, 11.4952154}, //
+
56885 {4.41196012, 11.4950914}, //
+
56886 {4.41120005, 11.4950504}, //
+
56887 {4.41031981, 11.4935389}, //
+
56888 {4.40919018, 11.4920282}, //
+
56889 {4.40781021, 11.4905167}, //
+
56890 {4.40616989, 11.489006}, //
+
56891 {4.4042902, 11.4874945}, //
+
56892 {4.40216017, 11.4859829}, //
+
56893 {4.39976978, 11.4844723}, //
+
56894 {4.39714003, 11.4829607}, //
+
56895 {4.39424992, 11.4814501}, //
+
56896 {4.39273977, 11.4806633}, //
+
56897 {4.39123011, 11.4797907}, //
+
56898 {4.38971996, 11.4788332}, //
+
56899 {4.38821983, 11.4777908}, //
+
56900 {4.38671017, 11.4766626}, //
+
56901 {4.38521004, 11.4754496}, //
+
56902 {4.38369989, 11.4741516}, //
+
56903 {4.38219976, 11.4727688}, //
+
56904 {4.38070011, 11.4713001}, //
+
56905 {4.37838984, 11.4697676}, //
+
56906 {4.37599993, 11.468194}, //
+
56907 {4.37352991, 11.4665775}, //
+
56908 {4.37096977, 11.46492}, //
+
56909 {4.36833, 11.4632196}, //
+
56910 {4.36561012, 11.4614782}, //
+
56911 {4.36281013, 11.4596939}, //
+
56912 {4.35992002, 11.4578676}, //
+
56913 {4.35694981, 11.4560003}, //
+
56914 {4.35384989, 11.4542274}, //
+
56915 {4.35059023, 11.4526625}, //
+
56916 {4.34715986, 11.4513063}, //
+
56917 {4.34356022, 11.4501581}, //
+
56918 {4.33979988, 11.4492188}, //
+
56919 {4.33585978, 11.4484892}, //
+
56920 {4.33175993, 11.4479666}, //
+
56921 {4.32748985, 11.4476538}, //
+
56922 {4.32305002, 11.4475498}, //
+
56923 {4.28235006, 11.4475498}, //
+
56924 {4.27724981, 11.4495649}, //
+
56925 {4.27248001, 11.4510756}, //
+
56926 {4.26805019, 11.4520826}, //
+
56927 {4.26394987, 11.4525871}, //
+
56928 {4.26018, 11.4525871}, //
+
56929 {4.25675011, 11.4520826}, //
+
56930 {4.25365019, 11.4510756}, //
+
56931 {4.25087976, 11.4495649}, //
+
56932 {4.2484498, 11.4475498}, //
+
56933 {4.24763012, 11.4467726}, //
+
56934 {4.2466898, 11.4459553}, //
+
56935 {4.24561977, 11.4450941}, //
+
56936 {4.24442005, 11.4441919}, //
+
56937 {4.24310017, 11.4432478}, //
+
56938 {4.2416501, 11.4422607}, //
+
56939 {4.24007988, 11.4412327}, //
+
56940 {4.23837996, 11.4401617}, //
+
56941 {4.23654985, 11.4390497}, //
+
56942 {4.23472977, 11.4379272}, //
+
56943 {4.23303986, 11.4368029}, //
+
56944 {4.23148012, 11.4356775}, //
+
56945 {4.23004007, 11.4345512}, //
+
56946 {4.22872019, 11.433423}, //
+
56947 {4.22753, 11.4322939}, //
+
56948 {4.22645998, 11.4311638}, //
+
56949 {4.22552013, 11.4300327}, //
+
56950 {4.22469997, 11.4288998}, //
+
56951 {4.22394991, 11.4277983}, //
+
56952 {4.22320986, 11.4267368}, //
+
56953 {4.22245979, 11.4257174}, //
+
56954 {4.22171021, 11.424737}, //
+
56955 {4.22096014, 11.4237976}, //
+
56956 {4.22021008, 11.4229002}, //
+
56957 {4.21946001, 11.4220428}, //
+
56958 {4.21869993, 11.4212255}, //
+
56959 {4.21794987, 11.4204502}, //
+
56960 {4.21560001, 11.4180994}, //
+
56961 {4.21521997, 11.4177217}, //
+
56962 {4.21493006, 11.417428}, //
+
56963 {4.21459007, 11.4170923}, //
+
56964 {4.21455002, 11.4170504}, //
+
56965 });
+
56966 polys.push_back({
+
56967 {0.692071974, 11.2258501}, //
+
56968 {0.689598978, 11.2260761}, //
+
56969 {0.687207997, 11.2265091}, //
+
56970 {0.684899986, 11.22715}, //
+
56971 {0.682581007, 11.2279272}, //
+
56972 {0.680135012, 11.2287455}, //
+
56973 {0.677560985, 11.2296057}, //
+
56974 {0.674860001, 11.2305079}, //
+
56975 {0.672033012, 11.231452}, //
+
56976 {0.669077992, 11.232439}, //
+
56977 {0.665996015, 11.2334671}, //
+
56978 {0.662786007, 11.2345381}, //
+
56979 {0.659449995, 11.2356501}, //
+
56980 {0.656060994, 11.236762}, //
+
56981 {0.652671993, 11.2378302}, //
+
56982 {0.649282992, 11.2388563}, //
+
56983 {0.645893991, 11.2398376}, //
+
56984 {0.642506003, 11.240777}, //
+
56985 {0.639117002, 11.2416716}, //
+
56986 {0.635728002, 11.2425251}, //
+
56987 {0.632339001, 11.2433338}, //
+
56988 {0.62895, 11.2440996}, //
+
56989 {0.625602007, 11.2448559}, //
+
56990 {0.622337997, 11.2456112}, //
+
56991 {0.619156003, 11.2463675}, //
+
56992 {0.616056025, 11.2471218}, //
+
56993 {0.61303997, 11.2478781}, //
+
56994 {0.610105991, 11.2486334}, //
+
56995 {0.607254028, 11.2493887}, //
+
56996 {0.604485989, 11.250144}, //
+
56997 {0.601800025, 11.2509003}, //
+
56998 {0.589950025, 11.2543001}, //
+
56999 {0.589950025, 11.2577}, //
+
57000 {0.589928985, 11.2584763}, //
+
57001 {0.589865983, 11.2592926}, //
+
57002 {0.589761019, 11.26015}, //
+
57003 {0.589613974, 11.2610483}, //
+
57004 {0.589425027, 11.2619867}, //
+
57005 {0.589194, 11.2629671}, //
+
57006 {0.588922024, 11.2639866}, //
+
57007 {0.588607013, 11.265048}, //
+
57008 {0.588249981, 11.2661505}, //
+
57009 {0.587903976, 11.2672625}, //
+
57010 {0.587598026, 11.2683334}, //
+
57011 {0.587409973, 11.2690649}, //
+
57012 {0.586600006, 11.2769127}, //
+
57013 {0.586600006, 11.2882004}, //
+
57014 {0.587406993, 11.2874022}, //
+
57015 {0.588340998, 11.286521}, //
+
57016 {0.589399993, 11.2855558}, //
+
57017 {0.590584993, 11.2845058}, //
+
57018 {0.591895998, 11.2833729}, //
+
57019 {0.593333006, 11.282156}, //
+
57020 {0.594896019, 11.2808542}, //
+
57021 {0.596584976, 11.2794685}, //
+
57022 {0.598399997, 11.2779999}, //
+
57023 {0.600309014, 11.2765198}, //
+
57024 {0.60225898, 11.2750807}, //
+
57025 {0.604250014, 11.2736826}, //
+
57026 {0.606280982, 11.2723265}, //
+
57027 {0.608353972, 11.2710094}, //
+
57028 {0.610467017, 11.2697334}, //
+
57029 {0.612619996, 11.2684984}, //
+
57030 {0.614814997, 11.2673044}, //
+
57031 {0.617049992, 11.2661505}, //
+
57032 {0.619274974, 11.26509}, //
+
57033 {0.621415019, 11.2641554}, //
+
57034 {0.623471975, 11.2633438}, //
+
57035 {0.625445008, 11.2626591}, //
+
57036 {0.627333999, 11.2620983}, //
+
57037 {0.629139006, 11.2616606}, //
+
57038 {0.630859971, 11.2613487}, //
+
57039 {0.632497013, 11.2611618}, //
+
57040 {0.634050012, 11.2610998}, //
+
57041 {0.635477006, 11.2618446}, //
+
57042 {0.636735976, 11.2625914}, //
+
57043 {0.637827992, 11.263339}, //
+
57044 {0.63875097, 11.2640877}, //
+
57045 {0.639506996, 11.2648382}, //
+
57046 {0.640093982, 11.2655888}, //
+
57047 {0.640514016, 11.2663412}, //
+
57048 {0.640766025, 11.2670946}, //
+
57049 {0.640850008, 11.2678499}, //
+
57050 {0.640850008, 11.2746496}, //
+
57051 {0.640869975, 11.2768221}, //
+
57052 {0.64093101, 11.2788277}, //
+
57053 {0.641032994, 11.2806673}, //
+
57054 {0.641175985, 11.2823391}, //
+
57055 {0.641358972, 11.283844}, //
+
57056 {0.641583025, 11.285183}, //
+
57057 {0.641848028, 11.286356}, //
+
57058 {0.642153978, 11.2873611}, //
+
57059 {0.642499983, 11.2882004}, //
+
57060 {0.642983019, 11.2888718}, //
+
57061 {0.643675029, 11.2893753}, //
+
57062 {0.64457798, 11.289711}, //
+
57063 {0.645690024, 11.2898788}, //
+
57064 {0.647011995, 11.2898788}, //
+
57065 {0.648544014, 11.289711}, //
+
57066 {0.650286019, 11.2893753}, //
+
57067 {0.652238011, 11.2888718}, //
+
57068 {0.654399991, 11.2882004}, //
+
57069 {0.656614006, 11.2881584}, //
+
57070 {0.658746004, 11.2880316}, //
+
57071 {0.66079402, 11.2878218}, //
+
57072 {0.662760019, 11.287528}, //
+
57073 {0.664644003, 11.2871513}, //
+
57074 {0.666444004, 11.2866888}, //
+
57075 {0.668161988, 11.2861433}, //
+
57076 {0.669798017, 11.2855139}, //
+
57077 {0.671350002, 11.2847996}, //
+
57078 {0.673668981, 11.2833414}, //
+
57079 {0.676113009, 11.2819653}, //
+
57080 {0.678682983, 11.2806721}, //
+
57081 {0.681379974, 11.2794619}, //
+
57082 {0.684202015, 11.2783337}, //
+
57083 {0.687150002, 11.2772894}, //
+
57084 {0.690223992, 11.2763271}, //
+
57085 {0.693423986, 11.2754469}, //
+
57086 {0.696749985, 11.2746496}, //
+
57087 {0.700212002, 11.2740202}, //
+
57088 {0.703799009, 11.2736425}, //
+
57089 {0.707511008, 11.2735167}, //
+
57090 {0.711347997, 11.2736425}, //
+
57091 {0.715309024, 11.2740202}, //
+
57092 {0.719394028, 11.2746496}, //
+
57093 {0.723604977, 11.2755308}, //
+
57094 {0.727940023, 11.2766647}, //
+
57095 {0.7324, 11.2780504}, //
+
57096 {0.736271024, 11.2803059}, //
+
57097 {0.740351021, 11.2825613}, //
+
57098 {0.744638979, 11.2848167}, //
+
57099 {0.749135971, 11.2870722}, //
+
57100 {0.753840983, 11.2893276}, //
+
57101 {0.758755982, 11.2915831}, //
+
57102 {0.763877988, 11.2938395}, //
+
57103 {0.769209981, 11.2960939}, //
+
57104 {0.774749994, 11.2983503}, //
+
57105 {0.780300975, 11.3006792}, //
+
57106 {0.785641015, 11.303133}, //
+
57107 {0.790772021, 11.3057108}, //
+
57108 {0.79569298, 11.3084145}, //
+
57109 {0.800404012, 11.3112421}, //
+
57110 {0.804906011, 11.3141937}, //
+
57111 {0.809197009, 11.3172722}, //
+
57112 {0.813278019, 11.3204727}, //
+
57113 {0.817149997, 11.3238001}, //
+
57114 {0.820665002, 11.3271275}, //
+
57115 {0.823678017, 11.330328}, //
+
57116 {0.826188982, 11.3334064}, //
+
57117 {0.828197002, 11.3363581}, //
+
57118 {0.82970202, 11.3391857}, //
+
57119 {0.830706, 11.3418894}, //
+
57120 {0.831206024, 11.3444672}, //
+
57121 {0.831203997, 11.346921}, //
+
57122 {0.83069998, 11.3492498}, //
+
57123 {0.829881012, 11.3523455}, //
+
57124 {0.828936994, 11.355608}, //
+
57125 {0.827866971, 11.3590393}, //
+
57126 {0.826669991, 11.3626385}, //
+
57127 {0.82534802, 11.3664036}, //
+
57128 {0.823899984, 11.3703394}, //
+
57129 {0.822326005, 11.3744411}, //
+
57130 {0.82062602, 11.3787117}, //
+
57131 {0.818799973, 11.3831501}, //
+
57132 {0.816879988, 11.3875666}, //
+
57133 {0.814876974, 11.3917751}, //
+
57134 {0.812789023, 11.395772}, //
+
57135 {0.81061703, 11.39956}, //
+
57136 {0.808362007, 11.4031382}, //
+
57137 {0.806021988, 11.4065056}, //
+
57138 {0.803599, 11.4096642}, //
+
57139 {0.801091015, 11.412612}, //
+
57140 {0.798500001, 11.41535}, //
+
57141 {0.79580301, 11.4178371}, //
+
57142 {0.792979002, 11.4200306}, //
+
57143 {0.790027976, 11.4219332}, //
+
57144 {0.786948979, 11.423543}, //
+
57145 {0.783743978, 11.424859}, //
+
57146 {0.780411005, 11.4258833}, //
+
57147 {0.776951015, 11.4266148}, //
+
57148 {0.773364007, 11.4270544}, //
+
57149 {0.769649982, 11.4272003}, //
+
57150 {0.764549971, 11.4264126}, //
+
57151 {0.75978303, 11.4255409}, //
+
57152 {0.755349994, 11.4245834}, //
+
57153 {0.751250029, 11.4235411}, //
+
57154 {0.747483015, 11.4224129}, //
+
57155 {0.744050026, 11.4211998}, //
+
57156 {0.740949988, 11.4199018}, //
+
57157 {0.738183022, 11.418519}, //
+
57158 {0.73575002, 11.4170504}, //
+
57159 {0.734248996, 11.4156227}, //
+
57160 {0.732747972, 11.4143639}, //
+
57161 {0.731244028, 11.4132719}, //
+
57162 {0.729740024, 11.4123487}, //
+
57163 {0.728235006, 11.4115934}, //
+
57164 {0.726728022, 11.411006}, //
+
57165 {0.725220025, 11.4105864}, //
+
57166 {0.723710001, 11.4103336}, //
+
57167 {0.722199976, 11.4102497}, //
+
57168 {0.719062984, 11.4109221}, //
+
57169 {0.715673983, 11.4114246}, //
+
57170 {0.712032974, 11.4117613}, //
+
57171 {0.708141029, 11.4119291}, //
+
57172 {0.703996003, 11.4119291}, //
+
57173 {0.699599981, 11.4117613}, //
+
57174 {0.694952011, 11.4114246}, //
+
57175 {0.690051973, 11.4109221}, //
+
57176 {0.684899986, 11.4102497}, //
+
57177 {0.682623029, 11.4095259}, //
+
57178 {0.680302024, 11.408843}, //
+
57179 {0.677938998, 11.4082003}, //
+
57180 {0.675531983, 11.4075975}, //
+
57181 {0.673081994, 11.4070368}, //
+
57182 {0.67058903, 11.406517}, //
+
57183 {0.668052018, 11.4060373}, //
+
57184 {0.665472984, 11.4055977}, //
+
57185 {0.662850022, 11.4052}, //
+
57186 {0.660238028, 11.4048853}, //
+
57187 {0.657666981, 11.4046965}, //
+
57188 {0.655139029, 11.4046326}, //
+
57189 {0.652652025, 11.4046965}, //
+
57190 {0.650207996, 11.4048853}, //
+
57191 {0.647805989, 11.4052}, //
+
57192 {0.645444989, 11.4056406}, //
+
57193 {0.643127024, 11.4062071}, //
+
57194 {0.640850008, 11.4069004}, //
+
57195 {0.627250016, 11.4069004}, //
+
57196 {0.624972999, 11.4068794}, //
+
57197 {0.622651994, 11.4068155}, //
+
57198 {0.620289028, 11.4067106}, //
+
57199 {0.617882013, 11.4065638}, //
+
57200 {0.615432024, 11.4063749}, //
+
57201 {0.612939, 11.4061441}, //
+
57202 {0.610401988, 11.4058723}, //
+
57203 {0.607823014, 11.4055567}, //
+
57204 {0.605199993, 11.4052}, //
+
57205 {0.602608025, 11.4048223}, //
+
57206 {0.600099027, 11.4044437}, //
+
57207 {0.597671986, 11.404067}, //
+
57208 {0.595327973, 11.4036894}, //
+
57209 {0.59306699, 11.4033108}, //
+
57210 {0.590888977, 11.4029331}, //
+
57211 {0.58879298, 11.4025564}, //
+
57212 {0.586780012, 11.4021778}, //
+
57213 {0.584850013, 11.4018002}, //
+
57214 {0.583077013, 11.4014425}, //
+
57215 {0.580156028, 11.400856}, //
+
57216 {0.579007983, 11.4006252}, //
+
57217 {0.578068972, 11.4004364}, //
+
57218 {0.577338994, 11.4002886}, //
+
57219 {0.576816976, 11.4001837}, //
+
57220 {0.576503992, 11.4001207}, //
+
57221 {0.576399982, 11.4000998}, //
+
57222 {0.573000014, 11.4272003}, //
+
57223 {0.573671997, 11.4268637}, //
+
57224 {0.57505703, 11.4261723}, //
+
57225 {0.576399982, 11.4254999}, //
+
57226 {0.577217996, 11.4251537}, //
+
57227 {0.578159988, 11.4248476}, //
+
57228 {0.579227984, 11.4245834}, //
+
57229 {0.580420017, 11.4243593}, //
+
57230 {0.581736028, 11.4241762}, //
+
57231 {0.583177984, 11.4240332}, //
+
57232 {0.584743977, 11.4239311}, //
+
57233 {0.58643502, 11.4238701}, //
+
57234 {0.588249981, 11.4238501}, //
+
57235 {0.590242982, 11.4238911}, //
+
57236 {0.592445016, 11.424015}, //
+
57237 {0.594856024, 11.424222}, //
+
57238 {0.597474992, 11.4245119}, //
+
57239 {0.600301981, 11.4248838}, //
+
57240 {0.603339016, 11.4253387}, //
+
57241 {0.606584013, 11.4258766}, //
+
57242 {0.610037982, 11.4264975}, //
+
57243 {0.613699973, 11.4272003}, //
+
57244 {0.617340982, 11.4279556}, //
+
57245 {0.620732009, 11.4287109}, //
+
57246 {0.623871982, 11.4294672}, //
+
57247 {0.626761973, 11.4302216}, //
+
57248 {0.629401028, 11.4309778}, //
+
57249 {0.631789029, 11.4317331}, //
+
57250 {0.633926988, 11.4324894}, //
+
57251 {0.635814011, 11.4332438}, //
+
57252 {0.63744998, 11.434}, //
+
57253 {0.638930023, 11.434021}, //
+
57254 {0.640368998, 11.4340839}, //
+
57255 {0.641767025, 11.4341888}, //
+
57256 {0.643123984, 11.4343357}, //
+
57257 {0.644441009, 11.4345245}, //
+
57258 {0.645717025, 11.4347563}, //
+
57259 {0.646951973, 11.4350281}, //
+
57260 {0.648145974, 11.4353428}, //
+
57261 {0.649299979, 11.4357004}, //
+
57262 {0.650496006, 11.4360991}, //
+
57263 {0.65181601, 11.4365396}, //
+
57264 {0.653261006, 11.4370222}, //
+
57265 {0.654830992, 11.4375467}, //
+
57266 {0.656525016, 11.4381142}, //
+
57267 {0.658343971, 11.4387217}, //
+
57268 {0.660287976, 11.439373}, //
+
57269 {0.662356973, 11.4400654}, //
+
57270 {0.664550006, 11.4407997}, //
+
57271 {0.678149998, 11.4407997}, //
+
57272 {0.684801996, 11.4416714}, //
+
57273 {0.691204011, 11.4427948}, //
+
57274 {0.697355986, 11.4441719}, //
+
57275 {0.703256011, 11.4458017}, //
+
57276 {0.708905995, 11.4476862}, //
+
57277 {0.714305997, 11.4498224}, //
+
57278 {0.71945399, 11.4522123}, //
+
57279 {0.724352002, 11.454854}, //
+
57280 {0.728999972, 11.4577503}, //
+
57281 {0.731339991, 11.4592514}, //
+
57282 {0.733847022, 11.4607515}, //
+
57283 {0.736522019, 11.4622564}, //
+
57284 {0.739364982, 11.4637604}, //
+
57285 {0.742376983, 11.4652653}, //
+
57286 {0.745555997, 11.4667721}, //
+
57287 {0.748902023, 11.4682798}, //
+
57288 {0.752417028, 11.4697905}, //
+
57289 {0.756099999, 11.4713001}, //
+
57290 {0.759867013, 11.4727898}, //
+
57291 {0.763633013, 11.4742355}, //
+
57292 {0.767400026, 11.4756393}, //
+
57293 {0.77116698, 11.4769993}, //
+
57294 {0.774932981, 11.4783154}, //
+
57295 {0.778699994, 11.4795895}, //
+
57296 {0.782467008, 11.4808187}, //
+
57297 {0.786233008, 11.4820061}, //
+
57298 {0.790000021, 11.4831495}, //
+
57299 {0.79359901, 11.4841776}, //
+
57300 {0.796863973, 11.4849968}, //
+
57301 {0.799794018, 11.4856062}, //
+
57302 {0.802389979, 11.4860039}, //
+
57303 {0.804651022, 11.4861927}, //
+
57304 {0.806577981, 11.4861717}, //
+
57305 {0.808170021, 11.4859409}, //
+
57306 {0.809427023, 11.4855013}, //
+
57307 {0.810350001, 11.4848499}, //
+
57308 {0.810392022, 11.4839687}, //
+
57309 {0.810518026, 11.4828377}, //
+
57310 {0.810728014, 11.4814558}, //
+
57311 {0.811021984, 11.4798231}, //
+
57312 {0.811398983, 11.4779396}, //
+
57313 {0.811860979, 11.4758062}, //
+
57314 {0.812407017, 11.4734211}, //
+
57315 {0.813036025, 11.4707861}, //
+
57316 {0.813750029, 11.4679003}, //
+
57317 {0.814504981, 11.4633989}, //
+
57318 {0.81525898, 11.4589396}, //
+
57319 {0.816011012, 11.4545221}, //
+
57320 {0.816761971, 11.4501467}, //
+
57321 {0.817511976, 11.4458141}, //
+
57322 {0.818261027, 11.4415216}, //
+
57323 {0.819009006, 11.437273}, //
+
57324 {0.819755018, 11.4330654}, //
+
57325 {0.820500016, 11.4288998}, //
+
57326 {0.821298003, 11.424819}, //
+
57327 {0.822179019, 11.4208632}, //
+
57328 {0.823144019, 11.4170332}, //
+
57329 {0.824194014, 11.4133301}, //
+
57330 {0.825326979, 11.4097519}, //
+
57331 {0.826543987, 11.4062996}, //
+
57332 {0.827845991, 11.4029741}, //
+
57333 {0.829231024, 11.3997736}, //
+
57334 {0.83069998, 11.3966999}, //
+
57335 {0.832273006, 11.3928909}, //
+
57336 {0.833971977, 11.388999}, //
+
57337 {0.835793972, 11.3850222}, //
+
57338 {0.837741971, 11.3809624}, //
+
57339 {0.839814007, 11.3768167}, //
+
57340 {0.842010975, 11.3725891}, //
+
57341 {0.844332993, 11.3682766}, //
+
57342 {0.846778989, 11.3638802}, //
+
57343 {0.849349976, 11.3593998}, //
+
57344 {0.852005005, 11.3550463}, //
+
57345 {0.854703009, 11.3510265}, //
+
57346 {0.857443988, 11.3473444}, //
+
57347 {0.860229015, 11.343998}, //
+
57348 {0.863057017, 11.3409863}, //
+
57349 {0.865927994, 11.3383112}, //
+
57350 {0.868842006, 11.3359718}, //
+
57351 {0.871798992, 11.3339682}, //
+
57352 {0.874800026, 11.3323002}, //
+
57353 {0.875545025, 11.3315859}, //
+
57354 {0.876290977, 11.3309574}, //
+
57355 {0.877039015, 11.330411}, //
+
57356 {0.877788007, 11.3299494}, //
+
57357 {0.878538013, 11.3295717}, //
+
57358 {0.879288971, 11.329278}, //
+
57359 {0.880041003, 11.3290682}, //
+
57360 {0.880795002, 11.3289423}, //
+
57361 {0.881550014, 11.3289003}, //
+
57362 {0.898500025, 11.3289003}, //
+
57363 {0.901899993, 11.2847996}, //
+
57364 {0.881550014, 11.2780504}, //
+
57365 {0.881507993, 11.2781334}, //
+
57366 {0.881381989, 11.2783833}, //
+
57367 {0.881172001, 11.2788}, //
+
57368 {0.880877972, 11.2793827}, //
+
57369 {0.880500972, 11.2801332}, //
+
57370 {0.878149986, 11.2847996}, //
+
57371 {0.877363026, 11.2863102}, //
+
57372 {0.87649101, 11.2878199}, //
+
57373 {0.875532985, 11.2893276}, //
+
57374 {0.874490976, 11.2908354}, //
+
57375 {0.873363018, 11.2923403}, //
+
57376 {0.872150004, 11.2938442}, //
+
57377 {0.870851994, 11.2953482}, //
+
57378 {0.869468987, 11.2968493}, //
+
57379 {0.867999971, 11.2983503}, //
+
57380 {0.866488993, 11.29984}, //
+
57381 {0.864978015, 11.3012877}, //
+
57382 {0.863466978, 11.3026943}, //
+
57383 {0.861956, 11.304059}, //
+
57384 {0.860444009, 11.3053808}, //
+
57385 {0.858932972, 11.3066607}, //
+
57386 {0.857421994, 11.3078995}, //
+
57387 {0.855911016, 11.3090963}, //
+
57388 {0.854399979, 11.3102503}, //
+
57389 {0.852899015, 11.3113413}, //
+
57390 {0.851397991, 11.3123465}, //
+
57391 {0.849893987, 11.3132668}, //
+
57392 {0.848389983, 11.3141022}, //
+
57393 {0.846885026, 11.3148518}, //
+
57394 {0.845377982, 11.3155174}, //
+
57395 {0.843869984, 11.3160963}, //
+
57396 {0.84236002, 11.3165913}, //
+
57397 {0.840849996, 11.3170004}, //
+
57398 {0.839390993, 11.3173151}, //
+
57399 {0.83801502, 11.3175058}, //
+
57400 {0.836722016, 11.3175716}, //
+
57401 {0.835511982, 11.3175144}, //
+
57402 {0.834384024, 11.3173304}, //
+
57403 {0.833338976, 11.3170223}, //
+
57404 {0.832377017, 11.3165903}, //
+
57405 {0.831497014, 11.3160324}, //
+
57406 {0.83069998, 11.3153496}, //
+
57407 {0.830595016, 11.3152657}, //
+
57408 {0.830280006, 11.3150139}, //
+
57409 {0.829756021, 11.3145943}, //
+
57410 {0.828077018, 11.3132505}, //
+
57411 {0.825558007, 11.3112364}, //
+
57412 {0.823984027, 11.3099766}, //
+
57413 {0.8222, 11.3085499}, //
+
57414 {0.820280015, 11.3069773}, //
+
57415 {0.818274021, 11.3052778}, //
+
57416 {0.816182971, 11.3034563}, //
+
57417 {0.814006984, 11.3015079}, //
+
57418 {0.811746001, 11.2994356}, //
+
57419 {0.809400022, 11.2972393}, //
+
57420 {0.806968987, 11.2949171}, //
+
57421 {0.804452002, 11.2924709}, //
+
57422 {0.801850021, 11.2898998}, //
+
57423 {0.799216986, 11.2873287}, //
+
57424 {0.796582997, 11.2848825}, //
+
57425 {0.793950021, 11.2825613}, //
+
57426 {0.791316986, 11.280364}, //
+
57427 {0.788682997, 11.2782917}, //
+
57428 {0.786050022, 11.2763443}, //
+
57429 {0.783416986, 11.2745218}, //
+
57430 {0.780782998, 11.2728233}, //
+
57431 {0.778150022, 11.2712498}, //
+
57432 {0.775620997, 11.2697811}, //
+
57433 {0.773301005, 11.2683983}, //
+
57434 {0.771188974, 11.2671003}, //
+
57435 {0.769285977, 11.2658873}, //
+
57436 {0.767591, 11.2647591}, //
+
57437 {0.766106009, 11.2637167}, //
+
57438 {0.764828026, 11.2627592}, //
+
57439 {0.763759971, 11.2618866}, //
+
57440 {0.762899995, 11.2610998}, //
+
57441 {0.762480021, 11.2607641}, //
+
57442 {0.761955976, 11.2603436}, //
+
57443 {0.761220992, 11.259757}, //
+
57444 {0.760276973, 11.2590008}, //
+
57445 {0.759122014, 11.2580776}, //
+
57446 {0.754400015, 11.2543001}, //
+
57447 {0.75247997, 11.2527885}, //
+
57448 {0.750473976, 11.2512779}, //
+
57449 {0.748382986, 11.2497673}, //
+
57450 {0.746206999, 11.2482557}, //
+
57451 {0.743946016, 11.2467442}, //
+
57452 {0.741599977, 11.2452326}, //
+
57453 {0.739169002, 11.243722}, //
+
57454 {0.736652017, 11.2422113}, //
+
57455 {0.734049976, 11.2406998}, //
+
57456 {0.731396019, 11.2392197}, //
+
57457 {0.728699028, 11.2377806}, //
+
57458 {0.72596103, 11.2363834}, //
+
57459 {0.723181009, 11.2350264}, //
+
57460 {0.720359027, 11.2337093}, //
+
57461 {0.717494011, 11.2324333}, //
+
57462 {0.714587986, 11.2311983}, //
+
57463 {0.71164, 11.2300043}, //
+
57464 {0.708649993, 11.2288504}, //
+
57465 {0.705680013, 11.2278309}, //
+
57466 {0.702793002, 11.2270203}, //
+
57467 {0.699989021, 11.2264166}, //
+
57468 {0.697266996, 11.2260199}, //
+
57469 {0.694628, 11.225831}, //
+
57470 });
+
57471 polys.push_back({
+
57472 {3.16671991, 11.4408197}, //
+
57473 {3.16571999, 11.4409828}, //
+
57474 {3.15665007, 11.4424496}, //
+
57475 {3.15435004, 11.4428492}, //
+
57476 {3.15196991, 11.4432898}, //
+
57477 {3.14950991, 11.4437723}, //
+
57478 {3.14696002, 11.4442968}, //
+
57479 {3.14432001, 11.4448643}, //
+
57480 {3.14160991, 11.4454718}, //
+
57481 {3.13879991, 11.4461231}, //
+
57482 {3.13592005, 11.4468145}, //
+
57483 {3.13295007, 11.4475498}, //
+
57484 {3.12994003, 11.4483061}, //
+
57485 {3.12693, 11.4490614}, //
+
57486 {3.12390995, 11.4498167}, //
+
57487 {3.12089992, 11.450572}, //
+
57488 {3.11788011, 11.4513283}, //
+
57489 {3.11486006, 11.4520826}, //
+
57490 {3.11184001, 11.4528389}, //
+
57491 {3.10881996, 11.4535942}, //
+
57492 {3.10579991, 11.4543505}, //
+
57493 {3.10286999, 11.4550638}, //
+
57494 {3.10011005, 11.4556932}, //
+
57495 {3.09752011, 11.4562387}, //
+
57496 {3.09508991, 11.4567013}, //
+
57497 {3.09282994, 11.457078}, //
+
57498 {3.09072995, 11.4573717}, //
+
57499 {3.08880997, 11.4575825}, //
+
57500 {3.08703995, 11.4577084}, //
+
57501 {3.08544993, 11.4577503}, //
+
57502 {3.07189989, 11.4577503}, //
+
57503 {3.06883001, 11.4577713}, //
+
57504 {3.06562996, 11.4578342}, //
+
57505 {3.06229997, 11.4579391}, //
+
57506 {3.05885005, 11.458086}, //
+
57507 {3.05526996, 11.4582748}, //
+
57508 {3.05156994, 11.4585056}, //
+
57509 {3.04773998, 11.4587784}, //
+
57510 {3.04378009, 11.4590931}, //
+
57511 {3.03970003, 11.4594498}, //
+
57512 {3.03559995, 11.4598074}, //
+
57513 {3.03157997, 11.4601221}, //
+
57514 {3.0276401, 11.4603939}, //
+
57515 {3.02378988, 11.4606247}, //
+
57516 {3.02003002, 11.4608145}, //
+
57517 {3.01634002, 11.4609613}, //
+
57518 {3.01274991, 11.4610662}, //
+
57519 {3.0092299, 11.4611292}, //
+
57520 {3.00580001, 11.4611502}, //
+
57521 {2.9837501, 11.4611502}, //
+
57522 {2.97952008, 11.4605198}, //
+
57523 {2.97587991, 11.4601402}, //
+
57524 {2.97282004, 11.4600105}, //
+
57525 {2.97035003, 11.4601326}, //
+
57526 {2.9684701, 11.4605045}, //
+
57527 {2.96748996, 11.4609747}, //
+
57528 {2.96920991, 11.4647694}, //
+
57529 {2.96949005, 11.4648361}, //
+
57530 {2.9700501, 11.4650249}, //
+
57531 {2.9705801, 11.4652557}, //
+
57532 {2.97106004, 11.4655275}, //
+
57533 {2.97149992, 11.4658432}, //
+
57534 {2.97189999, 11.4661999}, //
+
57535 {2.97228003, 11.4665565}, //
+
57536 {2.97265005, 11.4668722}, //
+
57537 {2.97303009, 11.467144}, //
+
57538 {2.97340012, 11.4673748}, //
+
57539 {2.9737699, 11.4675636}, //
+
57540 {2.97413993, 11.4677114}, //
+
57541 {2.97450995, 11.4678164}, //
+
57542 {2.97487998, 11.4678793}, //
+
57543 {2.97525001, 11.4679003}, //
+
57544 {2.97694993, 11.4679003}, //
+
57545 {2.97786999, 11.4679422}, //
+
57546 {2.97913003, 11.4680681}, //
+
57547 {2.98072004, 11.4682779}, //
+
57548 {2.98265004, 11.4685717}, //
+
57549 {2.98491001, 11.4689493}, //
+
57550 {2.98750997, 11.4694109}, //
+
57551 {2.99043989, 11.4699574}, //
+
57552 {2.99370003, 11.4705858}, //
+
57553 {2.99729991, 11.4713001}, //
+
57554 {3.00114989, 11.4720144}, //
+
57555 {3.00517011, 11.4726429}, //
+
57556 {3.00936007, 11.4731894}, //
+
57557 {3.01371002, 11.4736509}, //
+
57558 {3.01822996, 11.4740276}, //
+
57559 {3.02291989, 11.4743223}, //
+
57560 {3.02778006, 11.4745321}, //
+
57561 {3.03280997, 11.474658}, //
+
57562 {3.03800011, 11.4747}, //
+
57563 {3.08209991, 11.4747}, //
+
57564 {3.08298993, 11.474658}, //
+
57565 {3.08418012, 11.4745321}, //
+
57566 {3.08565998, 11.4743223}, //
+
57567 {3.08743, 11.4740276}, //
+
57568 {3.08949995, 11.4736509}, //
+
57569 {3.09186006, 11.4731894}, //
+
57570 {3.09451008, 11.4726429}, //
+
57571 {3.09746003, 11.4720144}, //
+
57572 {3.1006999, 11.4713001}, //
+
57573 {3.10409999, 11.4705439}, //
+
57574 {3.10750008, 11.4697886}, //
+
57575 {3.11088991, 11.4690332}, //
+
57576 {3.11429, 11.4682779}, //
+
57577 {3.11768007, 11.4675217}, //
+
57578 {3.12107992, 11.4667673}, //
+
57579 {3.12447, 11.466011}, //
+
57580 {3.12786007, 11.4652557}, //
+
57581 {3.1312499, 11.4645004}, //
+
57582 {3.13459992, 11.4637337}, //
+
57583 {3.13786006, 11.462925}, //
+
57584 {3.14104009, 11.4620724}, //
+
57585 {3.14412999, 11.4611769}, //
+
57586 {3.14715004, 11.4602385}, //
+
57587 {3.15006995, 11.4592562}, //
+
57588 {3.15292001, 11.45823}, //
+
57589 {3.15566993, 11.4571619}, //
+
57590 {3.15834999, 11.4560499}, //
+
57591 {3.16304994, 11.4540348}, //
+
57592 {3.16495991, 11.4532166}, //
+
57593 {3.16790009, 11.4519567}, //
+
57594 {3.16893005, 11.4515171}, //
+
57595 {3.16966009, 11.4512024}, //
+
57596 {3.17009997, 11.4510126}, //
+
57597 {3.17024994, 11.4509497}, //
+
57598 {3.16685009, 11.4407997}, //
+
57599 });
+
57600 polys.push_back({
+
57601 {6.54815006, 10.9888401}, //
+
57602 {6.54112005, 10.9892197}, //
+
57603 {6.53375006, 10.98985}, //
+
57604 {6.52856016, 10.9906368}, //
+
57605 {6.52353001, 10.9915094}, //
+
57606 {6.51867008, 10.9924669}, //
+
57607 {6.51397991, 10.9935093}, //
+
57608 {6.50945997, 10.9946375}, //
+
57609 {6.50510979, 10.9958496}, //
+
57610 {6.50091982, 10.9971485}, //
+
57611 {6.49690008, 10.9985313}, //
+
57612 {6.4930501, 11}, //
+
57613 {6.48932981, 11.0016785}, //
+
57614 {6.4856801, 11.0036917}, //
+
57615 {6.48213005, 11.0060387}, //
+
57616 {6.47865009, 11.0087214}, //
+
57617 {6.47526979, 11.0117378}, //
+
57618 {6.47196007, 11.015089}, //
+
57619 {6.46873999, 11.018775}, //
+
57620 {6.46560001, 11.0227947}, //
+
57621 {6.46255016, 11.0271502}, //
+
57622 {6.46179008, 11.027895}, //
+
57623 {6.46104002, 11.0286417}, //
+
57624 {6.46027994, 11.0293884}, //
+
57625 {6.45952988, 11.030138}, //
+
57626 {6.4587698, 11.0308876}, //
+
57627 {6.45802021, 11.0316391}, //
+
57628 {6.45726013, 11.0323915}, //
+
57629 {6.45651007, 11.033145}, //
+
57630 {6.45574999, 11.0339003}, //
+
57631 {6.45498991, 11.0361242}, //
+
57632 {6.45423985, 11.0382633}, //
+
57633 {6.45347977, 11.0403166}, //
+
57634 {6.45273018, 11.042285}, //
+
57635 {6.4519701, 11.0441685}, //
+
57636 {6.45122004, 11.0459671}, //
+
57637 {6.45045996, 11.0476799}, //
+
57638 {6.44970989, 11.0493078}, //
+
57639 {6.44894981, 11.0508499}, //
+
57640 {6.44822979, 11.0522776}, //
+
57641 {6.44753981, 11.0535364}, //
+
57642 {6.44689989, 11.0546274}, //
+
57643 {6.44630003, 11.0555515}, //
+
57644 {6.44574022, 11.0563068}, //
+
57645 {6.44521999, 11.0568943}, //
+
57646 {6.44473982, 11.0573139}, //
+
57647 {6.44430017, 11.0575657}, //
+
57648 {6.44390011, 11.0576496}, //
+
57649 {6.44359016, 11.0575237}, //
+
57650 {6.44339991, 11.0571461}, //
+
57651 {6.44332981, 11.0565166}, //
+
57652 {6.44339991, 11.0556355}, //
+
57653 {6.44359016, 11.0545015}, //
+
57654 {6.44390011, 11.0531168}, //
+
57655 {6.44434023, 11.0514793}, //
+
57656 {6.44491005, 11.0495911}, //
+
57657 {6.44560003, 11.0474501}, //
+
57658 {6.44639015, 11.0451946}, //
+
57659 {6.4472599, 11.0429392}, //
+
57660 {6.44821978, 11.0406837}, //
+
57661 {6.44926023, 11.0384274}, //
+
57662 {6.45038986, 11.0361719}, //
+
57663 {6.45160007, 11.0339165}, //
+
57664 {6.45289993, 11.031661}, //
+
57665 {6.4542799, 11.0294056}, //
+
57666 {6.45574999, 11.0271502}, //
+
57667 {6.45648003, 11.0249252}, //
+
57668 {6.45718002, 11.0227842}, //
+
57669 {6.45782995, 11.0207281}, //
+
57670 {6.45843983, 11.018755}, //
+
57671 {6.45900011, 11.0168657}, //
+
57672 {6.45952988, 11.0150614}, //
+
57673 {6.46001005, 11.01334}, //
+
57674 {6.46045017, 11.0117035}, //
+
57675 {6.46084976, 11.01015}, //
+
57676 {6.45914984, 11.01015}, //
+
57677 {6.46101999, 11.0094013}, //
+
57678 {6.46116018, 11.0087337}, //
+
57679 {6.46134996, 11.0074835}, //
+
57680 {6.46142006, 11.0064001}, //
+
57681 {6.46134996, 11.0054836}, //
+
57682 {6.46116018, 11.0047331}, //
+
57683 {6.46084976, 11.0041504}, //
+
57684 {6.46041012, 11.0037336}, //
+
57685 {6.45983982, 11.0034838}, //
+
57686 {6.45914984, 11.0033998}, //
+
57687 {6.45831013, 11.0034838}, //
+
57688 {6.4573102, 11.0037336}, //
+
57689 {6.45613003, 11.0041504}, //
+
57690 {6.45479012, 11.0047331}, //
+
57691 {6.45328999, 11.0054836}, //
+
57692 {6.4516201, 11.0064001}, //
+
57693 {6.44977999, 11.0074835}, //
+
57694 {6.44777012, 11.0087337}, //
+
57695 {6.44560003, 11.01015}, //
+
57696 {6.44047022, 11.0138435}, //
+
57697 {6.43562984, 11.0173674}, //
+
57698 {6.43107986, 11.0207224}, //
+
57699 {6.42682981, 11.0239077}, //
+
57700 {6.42287016, 11.0269251}, //
+
57701 {6.41919994, 11.0297718}, //
+
57702 {6.41582012, 11.0324507}, //
+
57703 {6.41274023, 11.0349598}, //
+
57704 {6.40994978, 11.0373001}, //
+
57705 {6.40736008, 11.0395346}, //
+
57706 {6.40485001, 11.0417271}, //
+
57707 {6.40242004, 11.0438776}, //
+
57708 {6.4000802, 11.0459862}, //
+
57709 {6.39782, 11.0480528}, //
+
57710 {6.3956399, 11.0500774}, //
+
57711 {6.39353991, 11.0520601}, //
+
57712 {6.39153004, 11.0540009}, //
+
57713 {6.3895998, 11.0558996}, //
+
57714 {6.38774014, 11.0577679}, //
+
57715 {6.38593006, 11.0595942}, //
+
57716 {6.38416004, 11.0613775}, //
+
57717 {6.38242006, 11.0631199}, //
+
57718 {6.38074017, 11.0648193}, //
+
57719 {6.37908983, 11.0664778}, //
+
57720 {6.37748003, 11.0680943}, //
+
57721 {6.37591982, 11.0696678}, //
+
57722 {6.37440014, 11.0712004}, //
+
57723 {6.37364006, 11.07271}, //
+
57724 {6.37289, 11.0742197}, //
+
57725 {6.37212992, 11.0757275}, //
+
57726 {6.37137985, 11.0772343}, //
+
57727 {6.37061977, 11.0787401}, //
+
57728 {6.36987019, 11.0802441}, //
+
57729 {6.36911011, 11.0817471}, //
+
57730 {6.36836004, 11.0832491}, //
+
57731 {6.36759996, 11.0847502}, //
+
57732 {6.36537981, 11.0877295}, //
+
57733 {6.36323977, 11.0906239}, //
+
57734 {6.36117983, 11.0934334}, //
+
57735 {6.35921001, 11.0961571}, //
+
57736 {6.35732985, 11.0987959}, //
+
57737 {6.35552979, 11.1013498}, //
+
57738 {6.35381985, 11.1038189}, //
+
57739 {6.35219002, 11.1062021}, //
+
57740 {6.35064983, 11.1084995}, //
+
57741 {6.34759998, 11.1151104}, //
+
57742 {6.34446001, 11.1213856}, //
+
57743 {6.34123993, 11.1273279}, //
+
57744 {6.3379302, 11.1329346}, //
+
57745 {6.3345499, 11.1382074}, //
+
57746 {6.33106995, 11.1431437}, //
+
57747 {6.32751989, 11.147748}, //
+
57748 {6.32387018, 11.1520157}, //
+
57749 {6.3201499, 11.1559496}, //
+
57750 {6.31286001, 11.1617317}, //
+
57751 {6.30606985, 11.1670122}, //
+
57752 {6.29977989, 11.1717892}, //
+
57753 {6.29400015, 11.1760635}, //
+
57754 {6.28872013, 11.1798363}, //
+
57755 {6.28394985, 11.1831064}, //
+
57756 {6.27967978, 11.185873}, //
+
57757 {6.2759099, 11.188138}, //
+
57758 {6.27264977, 11.1899004}, //
+
57759 {6.26972008, 11.1921558}, //
+
57760 {6.26696014, 11.1944113}, //
+
57761 {6.26436996, 11.1966667}, //
+
57762 {6.26194, 11.1989222}, //
+
57763 {6.25967979, 11.2011776}, //
+
57764 {6.2575798, 11.203433}, //
+
57765 {6.25566006, 11.2056894}, //
+
57766 {6.25389004, 11.2079439}, //
+
57767 {6.25229979, 11.2102003}, //
+
57768 {6.24686003, 11.2144709}, //
+
57769 {6.24259996, 11.2182398}, //
+
57770 {6.23951006, 11.2215061}, //
+
57771 {6.23757982, 11.2242689}, //
+
57772 {6.23683023, 11.2265301}, //
+
57773 {6.23725986, 11.2282887}, //
+
57774 {6.23885012, 11.2295446}, //
+
57775 {6.24161005, 11.230299}, //
+
57776 {6.24555016, 11.2305498}, //
+
57777 {6.24789, 11.2304239}, //
+
57778 {6.25040007, 11.2300463}, //
+
57779 {6.25306988, 11.2294168}, //
+
57780 {6.25591993, 11.2285347}, //
+
57781 {6.25893021, 11.2274017}, //
+
57782 {6.26211023, 11.226017}, //
+
57783 {6.26545, 11.2243795}, //
+
57784 {6.26897001, 11.2224913}, //
+
57785 {6.27264977, 11.2203503}, //
+
57786 {6.27642012, 11.2179689}, //
+
57787 {6.28017998, 11.2153378}, //
+
57788 {6.28394985, 11.2124557}, //
+
57789 {6.2877202, 11.2093229}, //
+
57790 {6.29148006, 11.2059402}, //
+
57791 {6.29524994, 11.2023058}, //
+
57792 {6.29901981, 11.1984205}, //
+
57793 {6.30278015, 11.1942863}, //
+
57794 {6.30655003, 11.1899004}, //
+
57795 {6.30740976, 11.1885347}, //
+
57796 {6.30847979, 11.1874628}, //
+
57797 {6.30976009, 11.1866827}, //
+
57798 {6.3112402, 11.1861963}, //
+
57799 {6.31294012, 11.1860018}, //
+
57800 {6.31483984, 11.1861}, //
+
57801 {6.31694984, 11.186491}, //
+
57802 {6.31927013, 11.1871738}, //
+
57803 {6.32180023, 11.1881504}, //
+
57804 {6.32446003, 11.1893463}, //
+
57805 {6.3271699, 11.1906691}, //
+
57806 {6.32991982, 11.1921167}, //
+
57807 {6.33269978, 11.1936913}, //
+
57808 {6.3355298, 11.1953907}, //
+
57809 {6.33839989, 11.197217}, //
+
57810 {6.33929014, 11.1978159}, //
+
57811 {6.33874989, 11.19835}, //
+
57812 {6.33764982, 11.1994619}, //
+
57813 {6.33658981, 11.2005301}, //
+
57814 {6.33556986, 11.2015562}, //
+
57815 {6.33458996, 11.2025375}, //
+
57816 {6.33365011, 11.2034769}, //
+
57817 {6.33274984, 11.2043724}, //
+
57818 {6.33189011, 11.205225}, //
+
57819 {6.33107996, 11.2060337}, //
+
57820 {6.33029985, 11.2068005}, //
+
57821 {6.32953978, 11.2075558}, //
+
57822 {6.32879019, 11.2083111}, //
+
57823 {6.32500982, 11.2120886}, //
+
57824 {6.32426023, 11.2128439}, //
+
57825 {6.32350016, 11.2136002}, //
+
57826 {6.32217979, 11.2149429}, //
+
57827 {6.32164001, 11.2154894}, //
+
57828 {6.32080984, 11.2163277}, //
+
57829 {6.3201499, 11.217}, //
+
57830 {6.31778002, 11.2186356}, //
+
57831 {6.31519985, 11.2205229}, //
+
57832 {6.31240988, 11.222661}, //
+
57833 {6.3094101, 11.225049}, //
+
57834 {6.30621004, 11.2276878}, //
+
57835 {6.30279016, 11.2305784}, //
+
57836 {6.29917002, 11.2337179}, //
+
57837 {6.29534006, 11.2371092}, //
+
57838 {6.29129982, 11.2407503}, //
+
57839 {6.28715992, 11.2445793}, //
+
57840 {6.28301001, 11.2485332}, //
+
57841 {6.27887011, 11.2526112}, //
+
57842 {6.27472019, 11.256814}, //
+
57843 {6.27057981, 11.2611418}, //
+
57844 {6.2664299, 11.2655935}, //
+
57845 {6.26229, 11.2701721}, //
+
57846 {6.25814009, 11.2748728}, //
+
57847 {6.25400019, 11.2797003}, //
+
57848 {6.24991989, 11.2844954}, //
+
57849 {6.24596024, 11.2890797}, //
+
57850 {6.2421298, 11.2934561}, //
+
57851 {6.23843002, 11.2976208}, //
+
57852 {6.23484993, 11.3015766}, //
+
57853 {6.23140001, 11.3053217}, //
+
57854 {6.22806978, 11.3088579}, //
+
57855 {6.2248702, 11.3121843}, //
+
57856 {6.22179985, 11.3153}, //
+
57857 {6.21895981, 11.3181543}, //
+
57858 {6.21645021, 11.320673}, //
+
57859 {6.21427011, 11.3228559}, //
+
57860 {6.21243, 11.3247023}, //
+
57861 {6.20892, 11.328228}, //
+
57862 {6.2084198, 11.3287315}, //
+
57863 {6.20825005, 11.3289003}, //
+
57864 {6.20677996, 11.3302536}, //
+
57865 {6.20539999, 11.331315}, //
+
57866 {6.20409012, 11.3320827}, //
+
57867 {6.20287991, 11.3325586}, //
+
57868 {6.20173979, 11.3327427}, //
+
57869 {6.20068979, 11.332633}, //
+
57870 {6.19972992, 11.3322306}, //
+
57871 {6.19885015, 11.3315372}, //
+
57872 {6.19805002, 11.3305502}, //
+
57873 {6.19734001, 11.3293848}, //
+
57874 {6.19671011, 11.3281345}, //
+
57875 {6.19615984, 11.3268003}, //
+
57876 {6.19570017, 11.3253803}, //
+
57877 {6.19532013, 11.3238745}, //
+
57878 {6.19503021, 11.3222828}, //
+
57879 {6.19481993, 11.3206072}, //
+
57880 {6.19469023, 11.3188457}, //
+
57881 {6.19465017, 11.3170004}, //
+
57882 {6.1946702, 11.3150797}, //
+
57883 {6.1947298, 11.3130741}, //
+
57884 {6.19483995, 11.3109827}, //
+
57885 {6.19499016, 11.3088074}, //
+
57886 {6.19516993, 11.3065462}, //
+
57887 {6.19540977, 11.3042002}, //
+
57888 {6.19568014, 11.3017693}, //
+
57889 {6.19599009, 11.2992516}, //
+
57890 {6.1963501, 11.2966499}, //
+
57891 {6.19671011, 11.2940578}, //
+
57892 {6.19702005, 11.2915487}, //
+
57893 {6.19728994, 11.2891216}, //
+
57894 {6.19752979, 11.2867785}, //
+
57895 {6.19771004, 11.2845173}, //
+
57896 {6.19785976, 11.2823391}, //
+
57897 {6.19796991, 11.2802429}, //
+
57898 {6.19802999, 11.2782297}, //
+
57899 {6.19805002, 11.2763004}, //
+
57900 {6.19805002, 11.2678499}, //
+
57901 {6.19802999, 11.2671776}, //
+
57902 {6.19796991, 11.266675}, //
+
57903 {6.19785976, 11.2663393}, //
+
57904 {6.19771004, 11.2661715}, //
+
57905 {6.19752979, 11.2661715}, //
+
57906 {6.19728994, 11.2663393}, //
+
57907 {6.19702005, 11.266675}, //
+
57908 {6.19671011, 11.2671776}, //
+
57909 {6.1963501, 11.2678499}, //
+
57910 {6.19595003, 11.2686472}, //
+
57911 {6.19550991, 11.2695274}, //
+
57912 {6.19503021, 11.2704887}, //
+
57913 {6.19449997, 11.271534}, //
+
57914 {6.19394016, 11.2726622}, //
+
57915 {6.19332981, 11.2738724}, //
+
57916 {6.19267988, 11.2751646}, //
+
57917 {6.19197989, 11.2765408}, //
+
57918 {6.19124985, 11.2779999}, //
+
57919 {6.19049978, 11.2795115}, //
+
57920 {6.18976021, 11.2810221}, //
+
57921 {6.18826008, 11.2840443}, //
+
57922 {6.18751001, 11.2855558}, //
+
57923 {6.18600988, 11.288578}, //
+
57924 {6.18524981, 11.2900887}, //
+
57925 {6.18450022, 11.2916002}, //
+
57926 {6.18374014, 11.2930899}, //
+
57927 {6.18299007, 11.2945356}, //
+
57928 {6.18223, 11.2959394}, //
+
57929 {6.18147993, 11.2972994}, //
+
57930 {6.18071985, 11.2986155}, //
+
57931 {6.17996979, 11.2998886}, //
+
57932 {6.17921019, 11.3011189}, //
+
57933 {6.17846012, 11.3023062}, //
+
57934 {6.17770004, 11.3034496}, //
+
57935 {6.17700005, 11.3045197}, //
+
57936 {6.17638016, 11.3054647}, //
+
57937 {6.17538023, 11.3069763}, //
+
57938 {6.17471981, 11.3079834}, //
+
57939 {6.17452002, 11.3082981}, //
+
57940 {6.17438984, 11.3084869}, //
+
57941 {6.17434978, 11.3085499}, //
+
57942 {6.17434978, 11.3323002}, //
+
57943 {6.17436981, 11.3338213}, //
+
57944 {6.17442989, 11.3353844}, //
+
57945 {6.17453003, 11.3369894}, //
+
57946 {6.17468023, 11.3386364}, //
+
57947 {6.17486, 11.3403254}, //
+
57948 {6.17507982, 11.3420563}, //
+
57949 {6.17535019, 11.3438282}, //
+
57950 {6.17565012, 11.345643}, //
+
57951 {6.17600012, 11.3474998}, //
+
57952 {6.17638016, 11.3493881}, //
+
57953 {6.1767602, 11.3512754}, //
+
57954 {6.17713022, 11.3531609}, //
+
57955 {6.17750978, 11.3550463}, //
+
57956 {6.17788982, 11.3569288}, //
+
57957 {6.17826986, 11.3588114}, //
+
57958 {6.17863989, 11.360692}, //
+
57959 {6.17901993, 11.3625717}, //
+
57960 {6.17939997, 11.3644505}, //
+
57961 {6.17980003, 11.3662338}, //
+
57962 {6.18024015, 11.3678083}, //
+
57963 {6.18071985, 11.3691721}, //
+
57964 {6.1812501, 11.370327}, //
+
57965 {6.1818099, 11.3712711}, //
+
57966 {6.18241978, 11.3720064}, //
+
57967 {6.18307018, 11.37253}, //
+
57968 {6.18377018, 11.3728447}, //
+
57969 {6.18450022, 11.3729496}, //
+
57970 {6.18533993, 11.3728037}, //
+
57971 {6.18633986, 11.372365}, //
+
57972 {6.18752003, 11.3716326}, //
+
57973 {6.18885994, 11.3706093}, //
+
57974 {6.19036007, 11.3692932}, //
+
57975 {6.19202995, 11.3676834}, //
+
57976 {6.19387007, 11.3657808}, //
+
57977 {6.19587994, 11.3635874}, //
+
57978 {6.19805002, 11.3611002}, //
+
57979 {6.20037985, 11.3584042}, //
+
57980 {6.20282984, 11.3555813}, //
+
57981 {6.20541, 11.3526335}, //
+
57982 {6.20810986, 11.3495588}, //
+
57983 {6.21093988, 11.3463593}, //
+
57984 {6.21389008, 11.3430328}, //
+
57985 {6.21696997, 11.3395805}, //
+
57986 {6.22017002, 11.3360043}, //
+
57987 {6.22349977, 11.3323002}, //
+
57988 {6.22683001, 11.3284912}, //
+
57989 {6.23003006, 11.3245993}, //
+
57990 {6.23309994, 11.3206224}, //
+
57991 {6.23605013, 11.3165617}, //
+
57992 {6.23887014, 11.312417}, //
+
57993 {6.24157, 11.3081894}, //
+
57994 {6.24414015, 11.3038769}, //
+
57995 {6.24658012, 11.2994804}, //
+
57996 {6.24889994, 11.2950001}, //
+
57997 {6.25124979, 11.2905607}, //
+
57998 {6.25376987, 11.2862892}, //
+
57999 {6.25645018, 11.2821827}, //
+
58000 {6.25930023, 11.278244}, //
+
58001 {6.26232004, 11.2744722}, //
+
58002 {6.26550007, 11.2708673}, //
+
58003 {6.26884985, 11.2674284}, //
+
58004 {6.27236986, 11.2641563}, //
+
58005 {6.27605009, 11.2610502}, //
+
58006 {6.27988005, 11.2580605}, //
+
58007 {6.28384018, 11.2551117}, //
+
58008 {6.28792, 11.2522058}, //
+
58009 {6.29211998, 11.249341}, //
+
58010 {6.29646015, 11.2465191}, //
+
58011 {6.30092001, 11.2437391}, //
+
58012 {6.30550003, 11.2410011}, //
+
58013 {6.31021023, 11.2383041}, //
+
58014 {6.31505013, 11.2356501}, //
+
58015 {6.31984997, 11.2330999}, //
+
58016 {6.32442999, 11.2307167}, //
+
58017 {6.32881021, 11.2285004}, //
+
58018 {6.33297014, 11.22645}, //
+
58019 {6.3369298, 11.2245674}, //
+
58020 {6.34067011, 11.2228498}, //
+
58021 {6.34421015, 11.2213001}, //
+
58022 {6.34752989, 11.2199173}, //
+
58023 {6.35064983, 11.2187004}, //
+
58024 {6.36355019, 11.2138472}, //
+
58025 {6.36125994, 11.2126436}, //
+
58026 {6.35862017, 11.2111387}, //
+
58027 {6.35590982, 11.2094669}, //
+
58028 {6.35309982, 11.2076283}, //
+
58029 {6.3502202, 11.2056217}, //
+
58030 {6.34724998, 11.2034502}, //
+
58031 {6.34426022, 11.2012463}, //
+
58032 {6.34131002, 11.1991692}, //
+
58033 {6.33929014, 11.1978159}, //
+
58034 {6.33985996, 11.1972589}, //
+
58035 {6.34092999, 11.1962509}, //
+
58036 {6.34195995, 11.1953278}, //
+
58037 {6.34294987, 11.1944876}, //
+
58038 {6.34389019, 11.1937332}, //
+
58039 {6.34478998, 11.1930609}, //
+
58040 {6.3456502, 11.1924734}, //
+
58041 {6.34646988, 11.1919699}, //
+
58042 {6.34724998, 11.1915503}, //
+
58043 {6.35064983, 11.1899004}, //
+
58044 {6.35072994, 11.1899815}, //
+
58045 {6.35084009, 11.1900826}, //
+
58046 {6.35117006, 11.1904087}, //
+
58047 {6.35140991, 11.1906328}, //
+
58048 {6.3516798, 11.1908979}, //
+
58049 {6.35235023, 11.1915503}, //
+
58050 {6.35274982, 11.1919489}, //
+
58051 {6.35318995, 11.1923904}, //
+
58052 {6.35367012, 11.192872}, //
+
58053 {6.35418987, 11.1933966}, //
+
58054 {6.35475016, 11.193964}, //
+
58055 {6.35535002, 11.1945724}, //
+
58056 {6.35598993, 11.1952229}, //
+
58057 {6.35667992, 11.1959152}, //
+
58058 {6.35739994, 11.1966496}, //
+
58059 {6.35816002, 11.1973848}, //
+
58060 {6.35891008, 11.1980772}, //
+
58061 {6.35967016, 11.1987276}, //
+
58062 {6.36042023, 11.1993361}, //
+
58063 {6.36117983, 11.1999025}, //
+
58064 {6.36192989, 11.200428}, //
+
58065 {6.36268997, 11.2009096}, //
+
58066 {6.36344004, 11.2013512}, //
+
58067 {6.36420012, 11.2017498}, //
+
58068 {6.36491013, 11.2021484}, //
+
58069 {6.36554003, 11.2025871}, //
+
58070 {6.36608982, 11.2030668}, //
+
58071 {6.36654997, 11.2035866}, //
+
58072 {6.36693001, 11.2041483}, //
+
58073 {6.36721992, 11.2047501}, //
+
58074 {6.36743021, 11.2053928}, //
+
58075 {6.36755991, 11.2060757}, //
+
58076 {6.36759996, 11.2068005}, //
+
58077 {6.36755991, 11.2075558}, //
+
58078 {6.36743021, 11.2083111}, //
+
58079 {6.36721992, 11.2090673}, //
+
58080 {6.36693001, 11.2098217}, //
+
58081 {6.36654997, 11.210578}, //
+
58082 {6.36608982, 11.2113333}, //
+
58083 {6.36554003, 11.2120886}, //
+
58084 {6.36491013, 11.2128439}, //
+
58085 {6.36420012, 11.2136002}, //
+
58086 {6.36402988, 11.2136631}, //
+
58087 {6.36355019, 11.2138472}, //
+
58088 {6.36381006, 11.2139826}, //
+
58089 {6.36627007, 11.2151556}, //
+
58090 {6.36864996, 11.2161608}, //
+
58091 {6.37095022, 11.217}, //
+
58092 {6.37321997, 11.2176304}, //
+
58093 {6.37548018, 11.2180071}, //
+
58094 {6.37774992, 11.218133}, //
+
58095 {6.38002014, 11.2180071}, //
+
58096 {6.38227987, 11.2176304}, //
+
58097 {6.38455009, 11.217}, //
+
58098 {6.38681984, 11.2161188}, //
+
58099 {6.38908005, 11.2149849}, //
+
58100 {6.39134979, 11.2136002}, //
+
58101 {6.39442015, 11.2076607}, //
+
58102 {6.3976202, 11.201889}, //
+
58103 {6.40094995, 11.1962833}, //
+
58104 {6.40439987, 11.1908436}, //
+
58105 {6.40797997, 11.1855717}, //
+
58106 {6.41168022, 11.1804667}, //
+
58107 {6.41551018, 11.1755276}, //
+
58108 {6.41946983, 11.1707563}, //
+
58109 {6.42355013, 11.1661501}, //
+
58110 {6.42769003, 11.1617737}, //
+
58111 {6.43183994, 11.157691}, //
+
58112 {6.43597984, 11.1539001}, //
+
58113 {6.44013023, 11.1504021}, //
+
58114 {6.44427013, 11.1471958}, //
+
58115 {6.44842005, 11.1442833}, //
+
58116 {6.45255995, 11.1416626}, //
+
58117 {6.45670986, 11.1393347}, //
+
58118 {6.46084976, 11.1372995}, //
+
58119 {6.46484995, 11.1356096}, //
+
58120 {6.46855021, 11.1342983}, //
+
58121 {6.47196007, 11.1333609}, //
+
58122 {6.47508001, 11.1328011}, //
+
58123 {6.47790003, 11.132618}, //
+
58124 {6.48043013, 11.1328106}, //
+
58125 {6.48265982, 11.1333809}, //
+
58126 {6.48460007, 11.1343269}, //
+
58127 {6.48624992, 11.1356497}, //
+
58128 {6.48618984, 11.1357117}, //
+
58129 {6.48600006, 11.1358986}, //
+
58130 {6.4856801, 11.1362114}, //
+
58131 {6.48523998, 11.1366482}, //
+
58132 {6.48398018, 11.1378937}, //
+
58133 {6.48316002, 11.1387053}, //
+
58134 {6.48222017, 11.1396399}, //
+
58135 {6.48115015, 11.1407003}, //
+
58136 {6.47995996, 11.1418962}, //
+
58137 {6.47865009, 11.1432161}, //
+
58138 {6.47721004, 11.1446609}, //
+
58139 {6.47563982, 11.1462307}, //
+
58140 {6.47394991, 11.1479254}, //
+
58141 {6.47212982, 11.149744}, //
+
58142 {6.47018003, 11.1516876}, //
+
58143 {6.46810007, 11.1537571}, //
+
58144 {6.46589994, 11.1559496}, //
+
58145 {6.4636898, 11.1583004}, //
+
58146 {6.46155024, 11.1608171}, //
+
58147 {6.45950985, 11.1634998}, //
+
58148 {6.45754004, 11.1663504}, //
+
58149 {6.45565987, 11.1693668}, //
+
58150 {6.45385981, 11.1725502}, //
+
58151 {6.45213985, 11.1759005}, //
+
58152 {6.45050001, 11.1794167}, //
+
58153 {6.44894981, 11.1830997}, //
+
58154 {6.44173002, 11.1889343}, //
+
58155 {6.43514013, 11.1943913}, //
+
58156 {6.42917013, 11.1994724}, //
+
58157 {6.42383003, 11.2041769}, //
+
58158 {6.41911983, 11.2085037}, //
+
58159 {6.41504002, 11.2124557}, //
+
58160 {6.41158009, 11.2160301}, //
+
58161 {6.40875006, 11.2192278}, //
+
58162 {6.40654993, 11.2220497}, //
+
58163 {6.40486002, 11.2246103}, //
+
58164 {6.40355015, 11.2270031}, //
+
58165 {6.40260983, 11.229228}, //
+
58166 {6.40204, 11.2312851}, //
+
58167 {6.40185022, 11.2331734}, //
+
58168 {6.40204, 11.2348938}, //
+
58169 {6.40259981, 11.2364483}, //
+
58170 {6.40354013, 11.237833}, //
+
58171 {6.40485001, 11.2390499}, //
+
58172 {6.40644979, 11.2401199}, //
+
58173 {6.4082098, 11.241065}, //
+
58174 {6.41014004, 11.2418833}, //
+
58175 {6.41224003, 11.2425756}, //
+
58176 {6.41450024, 11.2431431}, //
+
58177 {6.41694021, 11.2435827}, //
+
58178 {6.41953993, 11.2438984}, //
+
58179 {6.42230988, 11.2440872}, //
+
58180 {6.42525005, 11.2441502}, //
+
58181 {6.4282198, 11.244895}, //
+
58182 {6.43109989, 11.2456408}, //
+
58183 {6.43390989, 11.2463894}, //
+
58184 {6.43662024, 11.247138}, //
+
58185 {6.43926001, 11.2478876}, //
+
58186 {6.44181013, 11.2486391}, //
+
58187 {6.44427013, 11.2493906}, //
+
58188 {6.44665003, 11.250145}, //
+
58189 {6.44894981, 11.2509003}, //
+
58190 {6.45108986, 11.2517385}, //
+
58191 {6.45298004, 11.2527437}, //
+
58192 {6.45461988, 11.2539167}, //
+
58193 {6.45599985, 11.2552557}, //
+
58194 {6.45713997, 11.2567606}, //
+
58195 {6.45802021, 11.2584333}, //
+
58196 {6.45865011, 11.260272}, //
+
58197 {6.45902014, 11.2622776}, //
+
58198 {6.45914984, 11.2644501}, //
+
58199 {6.45910978, 11.2668839}, //
+
58200 {6.45898008, 11.2696524}, //
+
58201 {6.4587698, 11.2727556}, //
+
58202 {6.45847988, 11.2761927}, //
+
58203 {6.45809984, 11.2799654}, //
+
58204 {6.45764017, 11.2840719}, //
+
58205 {6.45755005, 11.2847996}, //
+
58206 {6.45574999, 11.2847996}, //
+
58207 {6.45419979, 11.2848206}, //
+
58208 {6.45255995, 11.2848845}, //
+
58209 {6.45084, 11.2849894}, //
+
58210 {6.44903994, 11.2851362}, //
+
58211 {6.44715977, 11.2853251}, //
+
58212 {6.44518995, 11.2855558}, //
+
58213 {6.44315004, 11.2858276}, //
+
58214 {6.44101, 11.2861433}, //
+
58215 {6.43879986, 11.2865}, //
+
58216 {6.43654013, 11.2868776}, //
+
58217 {6.43428993, 11.2872562}, //
+
58218 {6.4320302, 11.2876329}, //
+
58219 {6.42750978, 11.2883892}, //
+
58220 {6.42524004, 11.2887669}, //
+
58221 {6.42297983, 11.2891436}, //
+
58222 {6.4207201, 11.2895222}, //
+
58223 {6.41844988, 11.2898998}, //
+
58224 {6.41627979, 11.2902994}, //
+
58225 {6.41426992, 11.29074}, //
+
58226 {6.41242981, 11.2912216}, //
+
58227 {6.41075993, 11.2917471}, //
+
58228 {6.4092598, 11.2923136}, //
+
58229 {6.40791988, 11.292922}, //
+
58230 {6.40674019, 11.2935734}, //
+
58231 {6.40573978, 11.2942648}, //
+
58232 {6.40490007, 11.2950001}, //
+
58233 {6.40167999, 11.2973194}, //
+
58234 {6.39803982, 11.2997627}, //
+
58235 {6.39398003, 11.3023329}, //
+
58236 {6.38950014, 11.3050299}, //
+
58237 {6.38460016, 11.3078518}, //
+
58238 {6.37928009, 11.3107996}, //
+
58239 {6.37353992, 11.3138742}, //
+
58240 {6.36738014, 11.3170738}, //
+
58241 {6.36079979, 11.3204002}, //
+
58242 {6.35394001, 11.3237267}, //
+
58243 {6.34691, 11.3269281}, //
+
58244 {6.33971024, 11.3300056}, //
+
58245 {6.33234978, 11.3329582}, //
+
58246 {6.32481003, 11.3357859}, //
+
58247 {6.31711006, 11.3384886}, //
+
58248 {6.30923986, 11.3410673}, //
+
58249 {6.30119991, 11.3435211}, //
+
58250 {6.29300022, 11.34585}, //
+
58251 {6.29149008, 11.3466063}, //
+
58252 {6.28997993, 11.3473606}, //
+
58253 {6.28846979, 11.3481169}, //
+
58254 {6.28697014, 11.3488722}, //
+
58255 {6.28546, 11.3496284}, //
+
58256 {6.28395987, 11.3503828}, //
+
58257 {6.2824502, 11.3511391}, //
+
58258 {6.28095007, 11.3518944}, //
+
58259 {6.27944994, 11.3526497}, //
+
58260 {6.26751995, 11.3558702}, //
+
58261 {6.25583982, 11.3595095}, //
+
58262 {6.24441004, 11.3635674}, //
+
58263 {6.23323011, 11.3680429}, //
+
58264 {6.22230005, 11.3729372}, //
+
58265 {6.21162987, 11.3782501}, //
+
58266 {6.20120001, 11.3839808}, //
+
58267 {6.19103003, 11.390131}, //
+
58268 {6.18109989, 11.3966999}, //
+
58269 {6.17819023, 11.3988609}, //
+
58270 {6.17549992, 11.4008112}, //
+
58271 {6.17300987, 11.4025497}, //
+
58272 {6.1707201, 11.4040775}, //
+
58273 {6.16865015, 11.4053936}, //
+
58274 {6.16679001, 11.4064999}, //
+
58275 {6.16513014, 11.4073944}, //
+
58276 {6.16369009, 11.4080782}, //
+
58277 {6.16244984, 11.4085503}, //
+
58278 {6.16134977, 11.408844}, //
+
58279 {6.16028976, 11.4089699}, //
+
58280 {6.15926981, 11.4089279}, //
+
58281 {6.15828991, 11.4087181}, //
+
58282 {6.15735006, 11.4083405}, //
+
58283 {6.15644979, 11.407794}, //
+
58284 {6.15559006, 11.4070807}, //
+
58285 {6.15477991, 11.4061995}, //
+
58286 {6.15399981, 11.4051504}, //
+
58287 {6.15328979, 11.404048}, //
+
58288 {6.15265989, 11.4029865}, //
+
58289 {6.1521101, 11.401967}, //
+
58290 {6.15164995, 11.4009867}, //
+
58291 {6.15126991, 11.4000483}, //
+
58292 {6.15098, 11.3991499}, //
+
58293 {6.15077019, 11.3982925}, //
+
58294 {6.15064001, 11.3974762}, //
+
58295 {6.15059996, 11.3966999}, //
+
58296 {6.14988995, 11.3959436}, //
+
58297 {6.14926004, 11.3951893}, //
+
58298 {6.14870977, 11.394433}, //
+
58299 {6.1482501, 11.3936777}, //
+
58300 {6.14787006, 11.3929224}, //
+
58301 {6.14758015, 11.3921671}, //
+
58302 {6.14736986, 11.3914108}, //
+
58303 {6.14724016, 11.3906565}, //
+
58304 {6.14720011, 11.3899002}, //
+
58305 {6.14647007, 11.3891134}, //
+
58306 {6.14577007, 11.3882408}, //
+
58307 {6.14512014, 11.3872833}, //
+
58308 {6.14450979, 11.386241}, //
+
58309 {6.14394999, 11.3851128}, //
+
58310 {6.14342022, 11.3838997}, //
+
58311 {6.14294004, 11.3826017}, //
+
58312 {6.14249992, 11.3812189}, //
+
58313 {6.14209986, 11.3797503}, //
+
58314 {6.14133978, 11.3767281}, //
+
58315 {6.14097023, 11.3752174}, //
+
58316 {6.14059019, 11.3737059}, //
+
58317 {6.14021015, 11.3721943}, //
+
58318 {6.13946009, 11.3691721}, //
+
58319 {6.13870001, 11.3661499}, //
+
58320 {6.13835001, 11.3646908}, //
+
58321 {6.13805008, 11.3633146}, //
+
58322 {6.13778019, 11.3620224}, //
+
58323 {6.13755989, 11.3608122}, //
+
58324 {6.13738012, 11.359684}, //
+
58325 {6.13722992, 11.3586388}, //
+
58326 {6.13712978, 11.3576775}, //
+
58327 {6.13707018, 11.3567972}, //
+
58328 {6.13705015, 11.3559999}, //
+
58329 {6.13705015, 11.3526497}, //
+
58330 {6.09975004, 11.3763504}, //
+
58331 {6.0997901, 11.3764544}, //
+
58332 {6.0999198, 11.3767672}, //
+
58333 {6.10124016, 11.380106}, //
+
58334 {6.10177994, 11.3814621}, //
+
58335 {6.10239983, 11.3830271}, //
+
58336 {6.10309982, 11.3848}, //
+
58337 {6.10389996, 11.3867092}, //
+
58338 {6.1047802, 11.3886585}, //
+
58339 {6.10574007, 11.3906498}, //
+
58340 {6.10679007, 11.3926811}, //
+
58341 {6.10793018, 11.3947544}, //
+
58342 {6.10913992, 11.3968668}, //
+
58343 {6.11044979, 11.3990202}, //
+
58344 {6.11183023, 11.4012146}, //
+
58345 {6.11329985, 11.40345}, //
+
58346 {6.11480999, 11.4057159}, //
+
58347 {6.11632013, 11.4079809}, //
+
58348 {6.1178298, 11.410244}, //
+
58349 {6.11932993, 11.4125071}, //
+
58350 {6.12084007, 11.4147682}, //
+
58351 {6.1223402, 11.4170284}, //
+
58352 {6.12384987, 11.4192858}, //
+
58353 {6.12535, 11.4215441}, //
+
58354 {6.12685013, 11.4238005}, //
+
58355 {6.12832022, 11.4259834}, //
+
58356 {6.12970018, 11.4279976}, //
+
58357 {6.13101006, 11.4298439}, //
+
58358 {6.13221979, 11.4315233}, //
+
58359 {6.13335991, 11.4330349}, //
+
58360 {6.1344099, 11.4343777}, //
+
58361 {6.13536978, 11.4355526}, //
+
58362 {6.13625002, 11.4365597}, //
+
58363 {6.13705015, 11.4373999}, //
+
58364 {6.13862991, 11.4380932}, //
+
58365 {6.14038992, 11.4386587}, //
+
58366 {6.14231014, 11.4391003}, //
+
58367 {6.14439011, 11.439415}, //
+
58368 {6.14664984, 11.4396038}, //
+
58369 {6.14906979, 11.4396667}, //
+
58370 {6.15165997, 11.4396038}, //
+
58371 {6.1544199, 11.439415}, //
+
58372 {6.15735006, 11.4391003}, //
+
58373 {6.16032982, 11.4387007}, //
+
58374 {6.16321993, 11.4382601}, //
+
58375 {6.16602993, 11.4377785}, //
+
58376 {6.16875982, 11.437253}, //
+
58377 {6.17140007, 11.4366856}, //
+
58378 {6.1739502, 11.4360781}, //
+
58379 {6.17642021, 11.4354267}, //
+
58380 {6.17880011, 11.4347353}, //
+
58381 {6.18109989, 11.434}, //
+
58382 {6.18450022, 11.434}, //
+
58383 {6.18608999, 11.4332438}, //
+
58384 {6.18786001, 11.4324894}, //
+
58385 {6.18978024, 11.4317331}, //
+
58386 {6.19188023, 11.4309778}, //
+
58387 {6.19413996, 11.4302216}, //
+
58388 {6.19656992, 11.4294672}, //
+
58389 {6.1991601, 11.4287109}, //
+
58390 {6.20192003, 11.4279556}, //
+
58391 {6.2048502, 11.4272003}, //
+
58392 {6.20799017, 11.4264545}, //
+
58393 {6.21138, 11.4257088}, //
+
58394 {6.21502018, 11.4249611}, //
+
58395 {6.21891022, 11.4242125}, //
+
58396 {6.22305012, 11.4234619}, //
+
58397 {6.22744989, 11.4227114}, //
+
58398 {6.23210001, 11.4219589}, //
+
58399 {6.23699999, 11.4212046}, //
+
58400 {6.24214983, 11.4204502}, //
+
58401 {6.24771976, 11.4196939}, //
+
58402 {6.25388002, 11.4189386}, //
+
58403 {6.26062012, 11.4181833}, //
+
58404 {6.26794004, 11.417428}, //
+
58405 {6.27584982, 11.4166718}, //
+
58406 {6.28434992, 11.4159174}, //
+
58407 {6.29342985, 11.4151611}, //
+
58408 {6.30310011, 11.4144058}, //
+
58409 {6.3133502, 11.4136496}, //
+
58410 {6.3250699, 11.4119606}, //
+
58411 {6.33612013, 11.409894}, //
+
58412 {6.34649992, 11.4074497}, //
+
58413 {6.35621023, 11.4046278}, //
+
58414 {6.36525011, 11.4014282}, //
+
58415 {6.37362003, 11.39785}, //
+
58416 {6.38130999, 11.3938942}, //
+
58417 {6.38834, 11.3895607}, //
+
58418 {6.39470005, 11.3848495}, //
+
58419 {6.40047979, 11.3800135}, //
+
58420 {6.40575981, 11.3753023}, //
+
58421 {6.4105401, 11.370717}, //
+
58422 {6.41481018, 11.3662567}, //
+
58423 {6.41859007, 11.3619242}, //
+
58424 {6.42186022, 11.3577166}, //
+
58425 {6.42462015, 11.3536348}, //
+
58426 {6.4268899, 11.3496799}, //
+
58427 {6.4286499, 11.34585}, //
+
58428 {6.43010998, 11.343668}, //
+
58429 {6.43147993, 11.3416548}, //
+
58430 {6.43277979, 11.3398113}, //
+
58431 {6.43399, 11.3381357}, //
+
58432 {6.43512011, 11.3366308}, //
+
58433 {6.43616009, 11.3352938}, //
+
58434 {6.43711996, 11.3341274}, //
+
58435 {6.4380002, 11.3331289}, //
+
58436 {6.43879986, 11.3323002}, //
+
58437 {6.44098997, 11.3300333}, //
+
58438 {6.44305992, 11.3277674}, //
+
58439 {6.44501019, 11.3254995}, //
+
58440 {6.44681978, 11.3232327}, //
+
58441 {6.44852018, 11.3209667}, //
+
58442 {6.45008993, 11.3186998}, //
+
58443 {6.45152998, 11.316433}, //
+
58444 {6.45284986, 11.314167}, //
+
58445 {6.45405006, 11.3119001}, //
+
58446 {6.45514011, 11.3096647}, //
+
58447 {6.45574999, 11.3083391}, //
+
58448 {6.45574999, 11.2983999}, //
+
58449 {6.45646, 11.2932901}, //
+
58450 {6.4570899, 11.2885141}, //
+
58451 {6.45755005, 11.2847996}, //
+
58452 {6.46255016, 11.2847996}, //
+
58453 {6.46247005, 11.2852173}, //
+
58454 {6.46235991, 11.2857389}, //
+
58455 {6.46221018, 11.2864695}, //
+
58456 {6.46120977, 11.2914772}, //
+
58457 {6.46084976, 11.2932501}, //
+
58458 {6.46043015, 11.2951593}, //
+
58459 {6.45992994, 11.2971087}, //
+
58460 {6.4593401, 11.2990999}, //
+
58461 {6.45867014, 11.3011312}, //
+
58462 {6.45791006, 11.3032036}, //
+
58463 {6.45706987, 11.3053169}, //
+
58464 {6.45615005, 11.3074703}, //
+
58465 {6.45574999, 11.3083391}, //
+
58466 {6.45574999, 11.3220997}, //
+
58467 {6.45650005, 11.3214073}, //
+
58468 {6.45726013, 11.3208408}, //
+
58469 {6.4580102, 11.3204002}, //
+
58470 {6.45875978, 11.3200846}, //
+
58471 {6.45950985, 11.3198957}, //
+
58472 {6.46025991, 11.3198328}, //
+
58473 {6.46100998, 11.3198957}, //
+
58474 {6.46175003, 11.3200846}, //
+
58475 {6.4625001, 11.3204002}, //
+
58476 {6.46323013, 11.3207989}, //
+
58477 {6.46393013, 11.3212404}, //
+
58478 {6.46458006, 11.321722}, //
+
58479 {6.46518993, 11.3222466}, //
+
58480 {6.46575022, 11.322814}, //
+
58481 {6.46627998, 11.3234224}, //
+
58482 {6.46676016, 11.3240728}, //
+
58483 {6.4671998, 11.3247652}, //
+
58484 {6.46759987, 11.3254995}, //
+
58485 {6.46787024, 11.3262968}, //
+
58486 {6.46793985, 11.327177}, //
+
58487 {6.46779013, 11.3281393}, //
+
58488 {6.46744013, 11.3291836}, //
+
58489 {6.46687984, 11.3303118}, //
+
58490 {6.46611023, 11.331522}, //
+
58491 {6.46512985, 11.3328152}, //
+
58492 {6.46395016, 11.3341913}, //
+
58493 {6.46255016, 11.3356504}, //
+
58494 {6.46182013, 11.3372231}, //
+
58495 {6.46112013, 11.3389215}, //
+
58496 {6.4604702, 11.340744}, //
+
58497 {6.45985985, 11.3426924}, //
+
58498 {6.45930004, 11.3447638}, //
+
58499 {6.4587698, 11.346961}, //
+
58500 {6.4582901, 11.3492832}, //
+
58501 {6.45784998, 11.3517294}, //
+
58502 {6.45744991, 11.3542995}, //
+
58503 {6.4570899, 11.3569231}, //
+
58504 {6.45677996, 11.3595018}, //
+
58505 {6.45651007, 11.3620386}, //
+
58506 {6.45627022, 11.3645325}, //
+
58507 {6.45608997, 11.3669825}, //
+
58508 {6.45593977, 11.3693886}, //
+
58509 {6.4558301, 11.3717518}, //
+
58510 {6.45577002, 11.374073}, //
+
58511 {6.45574999, 11.3763504}, //
+
58512 {6.45579004, 11.3784914}, //
+
58513 {6.45592022, 11.3803797}, //
+
58514 {6.45613003, 11.3820171}, //
+
58515 {6.45641994, 11.3834019}, //
+
58516 {6.45679998, 11.3845348}, //
+
58517 {6.45726013, 11.385417}, //
+
58518 {6.45780993, 11.3860464}, //
+
58519 {6.45843983, 11.3864241}, //
+
58520 {6.45914984, 11.3865499}, //
+
58521 {6.46062994, 11.38657}, //
+
58522 {6.46206999, 11.386631}, //
+
58523 {6.46346998, 11.3867331}, //
+
58524 {6.46481991, 11.3868761}, //
+
58525 {6.46613979, 11.3870592}, //
+
58526 {6.4674201, 11.3872833}, //
+
58527 {6.46864986, 11.3875484}, //
+
58528 {6.46985006, 11.3878536}, //
+
58529 {6.47100019, 11.3881998}, //
+
58530 {6.47207022, 11.3886414}, //
+
58531 {6.47301006, 11.3892069}, //
+
58532 {6.47383022, 11.3899002}, //
+
58533 {6.47453022, 11.3907194}, //
+
58534 {6.47509003, 11.3916626}, //
+
58535 {6.47553015, 11.3927326}, //
+
58536 {6.47585011, 11.3939304}, //
+
58537 {6.47603989, 11.3952522}, //
+
58538 {6.47609997, 11.3966999}, //
+
58539 {6.47680998, 11.3967419}, //
+
58540 {6.47743988, 11.3968678}, //
+
58541 {6.47799015, 11.3970776}, //
+
58542 {6.47844982, 11.3973722}, //
+
58543 {6.47882986, 11.3977489}, //
+
58544 {6.47911978, 11.3982105}, //
+
58545 {6.47933006, 11.398757}, //
+
58546 {6.47945976, 11.3993864}, //
+
58547 {6.47949982, 11.4000998}, //
+
58548 {6.47951984, 11.4008551}, //
+
58549 {6.47957993, 11.4016094}, //
+
58550 {6.47969007, 11.4023609}, //
+
58551 {6.4798398, 11.4031124}, //
+
58552 {6.48002005, 11.403862}, //
+
58553 {6.4802599, 11.4046106}, //
+
58554 {6.48052979, 11.4053593}, //
+
58555 {6.48084021, 11.406105}, //
+
58556 {6.48120022, 11.4068499}, //
+
58557 {6.48156023, 11.4076061}, //
+
58558 {6.48187017, 11.4083614}, //
+
58559 {6.48214006, 11.4091167}, //
+
58560 {6.48237991, 11.4098721}, //
+
58561 {6.48256016, 11.4106283}, //
+
58562 {6.48270988, 11.4113827}, //
+
58563 {6.48282003, 11.4121389}, //
+
58564 {6.48288012, 11.4128942}, //
+
58565 {6.48290014, 11.4136496}, //
+
58566 {6.48221016, 11.4144058}, //
+
58567 {6.48163986, 11.4151611}, //
+
58568 {6.48120022, 11.4159174}, //
+
58569 {6.4808898, 11.4166718}, //
+
58570 {6.48070002, 11.417428}, //
+
58571 {6.48062992, 11.4181833}, //
+
58572 {6.48070002, 11.4189386}, //
+
58573 {6.4808898, 11.4196939}, //
+
58574 {6.48120022, 11.4204502}, //
+
58575 {6.48156023, 11.4211836}, //
+
58576 {6.48187017, 11.421875}, //
+
58577 {6.48214006, 11.4225216}, //
+
58578 {6.48237991, 11.4231272}, //
+
58579 {6.48256016, 11.4236879}, //
+
58580 {6.48270988, 11.4242058}, //
+
58581 {6.48282003, 11.4246798}, //
+
58582 {6.48288012, 11.4251118}, //
+
58583 {6.48290014, 11.4254999}, //
+
58584 {6.4829402, 11.4258146}, //
+
58585 {6.4830699, 11.4260063}, //
+
58586 {6.48327017, 11.4260721}, //
+
58587 {6.48356009, 11.4260139}, //
+
58588 {6.48393011, 11.4258299}, //
+
58589 {6.48438978, 11.4255219}, //
+
58590 {6.48493004, 11.4250898}, //
+
58591 {6.48554993, 11.4245319}, //
+
58592 {6.48624992, 11.4238501}, //
+
58593 {6.48697996, 11.4230938}, //
+
58594 {6.48767996, 11.4223394}, //
+
58595 {6.48832989, 11.4215832}, //
+
58596 {6.48893976, 11.4208279}, //
+
58597 {6.48950005, 11.4200716}, //
+
58598 {6.49002981, 11.4193172}, //
+
58599 {6.49050999, 11.418561}, //
+
58600 {6.49095011, 11.4178057}, //
+
58601 {6.49135017, 11.4170504}, //
+
58602 {6.49171019, 11.4162941}, //
+
58603 {6.49202013, 11.4155388}, //
+
58604 {6.49229002, 11.4147825}, //
+
58605 {6.49252987, 11.4140282}, //
+
58606 {6.49271011, 11.4132719}, //
+
58607 {6.49285984, 11.4125166}, //
+
58608 {6.49296999, 11.4117613}, //
+
58609 {6.49303007, 11.411006}, //
+
58610 {6.4930501, 11.4102497}, //
+
58611 {6.4930501, 11.4069004}, //
+
58612 {6.49313021, 11.4069815}, //
+
58613 {6.49323988, 11.4070826}, //
+
58614 {6.49356985, 11.4074087}, //
+
58615 {6.49408007, 11.4078979}, //
+
58616 {6.49439001, 11.4082041}, //
+
58617 {6.49475002, 11.4085503}, //
+
58618 {6.49912024, 11.4129152}, //
+
58619 {6.4998498, 11.4136496}, //
+
58620 {6.50059986, 11.4151192}, //
+
58621 {6.50133991, 11.4165039}, //
+
58622 {6.50208998, 11.4178057}, //
+
58623 {6.50284004, 11.4190226}, //
+
58624 {6.50359011, 11.4201555}, //
+
58625 {6.50434017, 11.4212065}, //
+
58626 {6.50509024, 11.4221706}, //
+
58627 {6.50584984, 11.4230518}, //
+
58628 {6.5065999, 11.4238501}, //
+
58629 {6.5065999, 11.4272003}, //
+
58630 {6.50829983, 11.4272003}, //
+
58631 {6.50869989, 11.4271593}, //
+
58632 {6.50914001, 11.4270353}, //
+
58633 {6.50962019, 11.4268284}, //
+
58634 {6.51014996, 11.4265385}, //
+
58635 {6.51070976, 11.4261656}, //
+
58636 {6.51132011, 11.4257107}, //
+
58637 {6.51197004, 11.4251728}, //
+
58638 {6.51267004, 11.4245529}, //
+
58639 {6.51340008, 11.4238501}, //
+
58640 {6.51679993, 11.4238501}, //
+
58641 {6.51826, 11.4231777}, //
+
58642 {6.51962996, 11.4226723}, //
+
58643 {6.52092981, 11.4223328}, //
+
58644 {6.52214003, 11.4221611}, //
+
58645 {6.52327013, 11.4221563}, //
+
58646 {6.52431011, 11.4223166}, //
+
58647 {6.52526999, 11.4226437}, //
+
58648 {6.52615023, 11.4231386}, //
+
58649 {6.52694988, 11.4238005}, //
+
58650 {6.52765989, 11.4245558}, //
+
58651 {6.52828979, 11.4253111}, //
+
58652 {6.52884007, 11.4260674}, //
+
58653 {6.52930021, 11.4268217}, //
+
58654 {6.52967978, 11.427578}, //
+
58655 {6.52997017, 11.4283333}, //
+
58656 {6.53017998, 11.4290886}, //
+
58657 {6.53031015, 11.4298439}, //
+
58658 {6.53035021, 11.4306002}, //
+
58659 {6.53177977, 11.4320269}, //
+
58660 {6.53243017, 11.4326782}, //
+
58661 {6.53304005, 11.4332857}, //
+
58662 {6.5341301, 11.4343777}, //
+
58663 {6.53460979, 11.4348602}, //
+
58664 {6.53544998, 11.4357004}, //
+
58665 {6.53583002, 11.4360571}, //
+
58666 {6.53620005, 11.4363718}, //
+
58667 {6.53658009, 11.4366436}, //
+
58668 {6.53695011, 11.4368753}, //
+
58669 {6.53732014, 11.4370642}, //
+
58670 {6.53769016, 11.437211}, //
+
58671 {6.53806019, 11.4373159}, //
+
58672 {6.53843021, 11.4373789}, //
+
58673 {6.53879976, 11.4373999}, //
+
58674 {6.53919983, 11.4373579}, //
+
58675 {6.53963995, 11.437232}, //
+
58676 {6.54012012, 11.4370222}, //
+
58677 {6.54064989, 11.4367275}, //
+
58678 {6.54121017, 11.4363508}, //
+
58679 {6.54182005, 11.4358892}, //
+
58680 {6.54246998, 11.4353428}, //
+
58681 {6.54316998, 11.4347143}, //
+
58682 {6.54390001, 11.434}, //
+
58683 {6.54466009, 11.4325314}, //
+
58684 {6.54541016, 11.4311476}, //
+
58685 {6.54617023, 11.4298496}, //
+
58686 {6.54691982, 11.4286366}, //
+
58687 {6.5476799, 11.4275093}, //
+
58688 {6.54842997, 11.4264669}, //
+
58689 {6.54919004, 11.4255095}, //
+
58690 {6.54994011, 11.4246368}, //
+
58691 {6.55070019, 11.4238501}, //
+
58692 {6.55362988, 11.4216251}, //
+
58693 {6.55638981, 11.4194851}, //
+
58694 {6.55897999, 11.417428}, //
+
58695 {6.56139994, 11.4154549}, //
+
58696 {6.56366014, 11.4135656}, //
+
58697 {6.56574011, 11.4117613}, //
+
58698 {6.56765985, 11.4100399}, //
+
58699 {6.56941986, 11.4084034}, //
+
58700 {6.5710001, 11.4068499}, //
+
58701 {6.57250977, 11.4055586}, //
+
58702 {6.57401991, 11.404685}, //
+
58703 {6.57553005, 11.4042282}, //
+
58704 {6.5770402, 11.4041882}, //
+
58705 {6.57855988, 11.4045658}, //
+
58706 {6.58007002, 11.4053612}, //
+
58707 {6.58158016, 11.4065733}, //
+
58708 {6.58308983, 11.4082031}, //
+
58709 {6.58459997, 11.4102497}, //
+
58710 {6.58528996, 11.411068}, //
+
58711 {6.58585978, 11.4120102}, //
+
58712 {6.5862999, 11.4130783}, //
+
58713 {6.58660984, 11.4142704}, //
+
58714 {6.5868001, 11.4155865}, //
+
58715 {6.58687019, 11.4170284}, //
+
58716 {6.5868001, 11.4185944}, //
+
58717 {6.58660984, 11.4202852}, //
+
58718 {6.5862999, 11.4221001}, //
+
58719 {6.58593988, 11.4240103}, //
+
58720 {6.58562994, 11.4259624}, //
+
58721 {6.58536005, 11.4279556}, //
+
58722 {6.5851202, 11.4299908}, //
+
58723 {6.58493996, 11.4320688}, //
+
58724 {6.58479023, 11.4341888}, //
+
58725 {6.58468008, 11.4363508}, //
+
58726 {6.58462, 11.4385538}, //
+
58727 {6.58459997, 11.4407997}, //
+
58728 {6.58388996, 11.4423008}, //
+
58729 {6.58326006, 11.4438019}, //
+
58730 {6.58270979, 11.4453058}, //
+
58731 {6.58225012, 11.4468098}, //
+
58732 {6.58187008, 11.4483147}, //
+
58733 {6.58158016, 11.4498224}, //
+
58734 {6.58136988, 11.4513302}, //
+
58735 {6.58124018, 11.4528399}, //
+
58736 {6.58120012, 11.4543505}, //
+
58737 {6.58122015, 11.4557772}, //
+
58738 {6.58128023, 11.457036}, //
+
58739 {6.5813899, 11.458128}, //
+
58740 {6.58154011, 11.4590511}, //
+
58741 {6.58171988, 11.4598074}, //
+
58742 {6.5819602, 11.4603939}, //
+
58743 {6.58223009, 11.4608145}, //
+
58744 {6.58254004, 11.4610662}, //
+
58745 {6.58290005, 11.4611502}, //
+
58746 {6.58334017, 11.4611082}, //
+
58747 {6.58390999, 11.4609823}, //
+
58748 {6.58459997, 11.4607716}, //
+
58749 {6.58542013, 11.4604778}, //
+
58750 {6.58635998, 11.4601011}, //
+
58751 {6.58743, 11.4596386}, //
+
58752 {6.5886302, 11.4590931}, //
+
58753 {6.58995008, 11.4584637}, //
+
58754 {6.59140015, 11.4577503}, //
+
58755 {6.59872007, 11.4488726}, //
+
58756 {6.60562992, 11.4403296}, //
+
58757 {6.61212015, 11.4321222}, //
+
58758 {6.61818981, 11.4242487}, //
+
58759 {6.62383986, 11.4167099}, //
+
58760 {6.62906981, 11.4095058}, //
+
58761 {6.63388014, 11.4026356}, //
+
58762 {6.6382699, 11.396101}, //
+
58763 {6.64225006, 11.3899002}, //
+
58764 {6.64371014, 11.3877277}, //
+
58765 {6.64508009, 11.3857222}, //
+
58766 {6.64637995, 11.3838835}, //
+
58767 {6.64759016, 11.3822107}, //
+
58768 {6.64871979, 11.3807058}, //
+
58769 {6.64975977, 11.3793669}, //
+
58770 {6.65072012, 11.3781939}, //
+
58771 {6.65159988, 11.3771887}, //
+
58772 {6.65240002, 11.3763504}, //
+
58773 {6.65242004, 11.3755941}, //
+
58774 {6.65248013, 11.3748388}, //
+
58775 {6.6525898, 11.3740826}, //
+
58776 {6.65274, 11.3733282}, //
+
58777 {6.65291977, 11.3725719}, //
+
58778 {6.6531601, 11.3718166}, //
+
58779 {6.65342999, 11.3710613}, //
+
58780 {6.65373993, 11.370306}, //
+
58781 {6.65409994, 11.3695498}, //
+
58782 {6.65447998, 11.3688469}, //
+
58783 {6.65486002, 11.368227}, //
+
58784 {6.65523005, 11.3676891}, //
+
58785 {6.65561008, 11.3672342}, //
+
58786 {6.65599012, 11.3668623}, //
+
58787 {6.65637016, 11.3665724}, //
+
58788 {6.65674019, 11.3663654}, //
+
58789 {6.65712023, 11.3662415}, //
+
58790 {6.65749979, 11.3662004}, //
+
58791 {6.66260004, 11.3662004}, //
+
58792 {6.66335011, 11.3662624}, //
+
58793 {6.66409016, 11.3664494}, //
+
58794 {6.66484022, 11.3667612}, //
+
58795 {6.66558981, 11.367198}, //
+
58796 {6.66633987, 11.3677588}, //
+
58797 {6.66708994, 11.3684444}, //
+
58798 {6.66784, 11.3692551}, //
+
58799 {6.66860008, 11.3701897}, //
+
58800 {6.66935015, 11.3712502}, //
+
58801 {6.67011023, 11.3723621}, //
+
58802 {6.67085981, 11.3734331}, //
+
58803 {6.67161989, 11.3744612}, //
+
58804 {6.67236996, 11.3754482}, //
+
58805 {6.67313004, 11.3763924}, //
+
58806 {6.6738801, 11.3772936}, //
+
58807 {6.67464018, 11.3781548}, //
+
58808 {6.67538977, 11.378973}, //
+
58809 {6.67614985, 11.3797503}, //
+
58810 {6.67694998, 11.3819218}, //
+
58811 {6.67783022, 11.3839283}, //
+
58812 {6.67879009, 11.385767}, //
+
58813 {6.67983007, 11.3874388}, //
+
58814 {6.68096018, 11.3889437}, //
+
58815 {6.68216991, 11.3902826}, //
+
58816 {6.68346977, 11.3914557}, //
+
58817 {6.6848402, 11.3924608}, //
+
58818 {6.6862998, 11.3933001}, //
+
58819 {6.68776989, 11.3939304}, //
+
58820 {6.68914986, 11.3943071}, //
+
58821 {6.69046021, 11.394433}, //
+
58822 {6.69166994, 11.3943071}, //
+
58823 {6.69281006, 11.3939304}, //
+
58824 {6.69386005, 11.3933001}, //
+
58825 {6.69481993, 11.3924189}, //
+
58826 {6.69570017, 11.3912849}, //
+
58827 {6.69649982, 11.3899002}, //
+
58828 {6.69793987, 11.386302}, //
+
58829 {6.69925022, 11.3815317}, //
+
58830 {6.70043993, 11.3755894}, //
+
58831 {6.70149994, 11.3684731}, //
+
58832 {6.70243979, 11.3601837}, //
+
58833 {6.70325994, 11.3507223}, //
+
58834 {6.70394993, 11.3400879}, //
+
58835 {6.70451021, 11.3282804}, //
+
58836 {6.70494986, 11.3153}, //
+
58837 {6.70510006, 11.3014927}, //
+
58838 {6.7047801, 11.2871809}, //
+
58839 {6.70401001, 11.2723665}, //
+
58840 {6.70277977, 11.2570477}, //
+
58841 {6.70107985, 11.2412262}, //
+
58842 {6.69892979, 11.2249002}, //
+
58843 {6.69631004, 11.2080698}, //
+
58844 {6.69324017, 11.1907368}, //
+
58845 {6.68970013, 11.1729002}, //
+
58846 {6.68818998, 11.1647682}, //
+
58847 {6.68667984, 11.1569271}, //
+
58848 {6.68517017, 11.1493778}, //
+
58849 {6.68366003, 11.1421204}, //
+
58850 {6.68213987, 11.1351528}, //
+
58851 {6.68063021, 11.1284781}, //
+
58852 {6.67912006, 11.1220942}, //
+
58853 {6.67760992, 11.1160011}, //
+
58854 {6.67609978, 11.1101999}, //
+
58855 {6.67462015, 11.1047335}, //
+
58856 {6.6731801, 11.0996418}, //
+
58857 {6.67178011, 11.0949278}, //
+
58858 {6.67043018, 11.0905905}, //
+
58859 {6.66910982, 11.0866289}, //
+
58860 {6.66782999, 11.0830441}, //
+
58861 {6.66660023, 11.0798368}, //
+
58862 {6.66540003, 11.0770044}, //
+
58863 {6.6642499, 11.0745497}, //
+
58864 {6.66314983, 11.0723362}, //
+
58865 {6.66208982, 11.0702066}, //
+
58866 {6.66106987, 11.068161}, //
+
58867 {6.66008997, 11.0661993}, //
+
58868 {6.65915012, 11.0643215}, //
+
58869 {6.65824986, 11.0625277}, //
+
58870 {6.65739012, 11.0608177}, //
+
58871 {6.65657997, 11.0591917}, //
+
58872 {6.65579987, 11.0576496}, //
+
58873 {6.65508986, 11.056181}, //
+
58874 {6.65445995, 11.0547953}, //
+
58875 {6.65391016, 11.0534945}, //
+
58876 {6.65345001, 11.0522776}, //
+
58877 {6.65306997, 11.0511436}, //
+
58878 {6.65278006, 11.0500946}, //
+
58879 {6.65256977, 11.0491285}, //
+
58880 {6.65244007, 11.0482473}, //
+
58881 {6.65240002, 11.0474501}, //
+
58882 {6.6515398, 11.0451517}, //
+
58883 {6.65046978, 11.0427685}, //
+
58884 {6.64918995, 11.0403004}, //
+
58885 {6.64770985, 11.0377464}, //
+
58886 {6.64600992, 11.0351076}, //
+
58887 {6.6441102, 11.032383}, //
+
58888 {6.6420002, 11.0295744}, //
+
58889 {6.63967991, 11.02668}, //
+
58890 {6.63714981, 11.0236998}, //
+
58891 {6.63456011, 11.020751}, //
+
58892 {6.63205004, 11.0179272}, //
+
58893 {6.62962008, 11.0152283}, //
+
58894 {6.62728024, 11.0126534}, //
+
58895 {6.62502003, 11.0102034}, //
+
58896 {6.62283993, 11.0078773}, //
+
58897 {6.62073994, 11.0056772}, //
+
58898 {6.61873007, 11.0036011}, //
+
58899 {6.61679983, 11.0016499}, //
+
58900 {6.61494017, 10.999877}, //
+
58901 {6.61313009, 10.998312}, //
+
58902 {6.61135006, 10.9969559}, //
+
58903 {6.60961008, 10.9958076}, //
+
58904 {6.60792017, 10.9948692}, //
+
58905 {6.60626984, 10.9941387}, //
+
58906 {6.60465002, 10.9936171}, //
+
58907 {6.6030798, 10.9933043}, //
+
58908 {6.6015501, 10.9932003}, //
+
58909 {6.58799982, 10.9932003}, //
+
58910 {6.58331013, 10.9918251}, //
+
58911 {6.57828999, 10.9907017}, //
+
58912 {6.57292986, 10.9898281}, //
+
58913 {6.56723022, 10.9892054}, //
+
58914 {6.56121016, 10.9888325}, //
+
58915 {6.55484009, 10.9887114}, //
+
58916 });
+
58917 polys.push_back({
+
58918 {6.45182991, 11.3738098}, //
+
58919 {6.45159006, 11.3738937}, //
+
58920 {6.45132017, 11.3740616}, //
+
58921 {6.45101023, 11.3743143}, //
+
58922 {6.45065022, 11.37465}, //
+
58923 {6.45025015, 11.3750906}, //
+
58924 {6.44981003, 11.3756571}, //
+
58925 {6.44932985, 11.3763504}, //
+
58926 {6.4488101, 11.3771687}, //
+
58927 {6.44824982, 11.3781128}, //
+
58928 {6.44764996, 11.3791828}, //
+
58929 {6.44701004, 11.3803797}, //
+
58930 {6.44632006, 11.3817024}, //
+
58931 {6.44560003, 11.3831501}, //
+
58932 {6.44489002, 11.3861609}, //
+
58933 {6.44426012, 11.3891716}, //
+
58934 {6.44370985, 11.3921833}, //
+
58935 {6.44325018, 11.3951941}, //
+
58936 {6.44287014, 11.3982058}, //
+
58937 {6.44258022, 11.4012175}, //
+
58938 {6.44236994, 11.4042282}, //
+
58939 {6.44224024, 11.407239}, //
+
58940 {6.44220018, 11.4102497}, //
+
58941 {6.4421401, 11.4133139}, //
+
58942 {6.44194984, 11.41646}, //
+
58943 {6.44162989, 11.4196892}, //
+
58944 {6.44137001, 11.4216719}, //
+
58945 {6.44144011, 11.4214039}, //
+
58946 {6.44220018, 11.4187498}, //
+
58947 {6.44294977, 11.4161577}, //
+
58948 {6.44370985, 11.4136486}, //
+
58949 {6.44445992, 11.4112225}, //
+
58950 {6.44520998, 11.4088783}, //
+
58951 {6.44596004, 11.4066172}, //
+
58952 {6.44671011, 11.404439}, //
+
58953 {6.44746017, 11.4023428}, //
+
58954 {6.44820023, 11.4003296}, //
+
58955 {6.44894981, 11.3984003}, //
+
58956 {6.4502902, 11.3950424}, //
+
58957 {6.45084, 11.3936777}, //
+
58958 {6.45130014, 11.3925228}, //
+
58959 {6.45168018, 11.3915787}, //
+
58960 {6.45231009, 11.3900051}, //
+
58961 {6.45235014, 11.3899002}, //
+
58962 {6.45235014, 11.37465}, //
+
58963 {6.45233011, 11.3743143}, //
+
58964 {6.45227003, 11.3740616}, //
+
58965 {6.45215988, 11.3738937}, //
+
58966 {6.45201015, 11.3738098}, //
+
58967 });
+
58968 polys.push_back({
+
58969 {3.13800001, 11.3729496}, //
+
58970 {3.13762999, 11.3729706}, //
+
58971 {3.13725996, 11.3730335}, //
+
58972 {3.13688993, 11.3731394}, //
+
58973 {3.13651991, 11.3732862}, //
+
58974 {3.13614988, 11.3734751}, //
+
58975 {3.1357801, 11.3737059}, //
+
58976 {3.13540006, 11.3739777}, //
+
58977 {3.13503003, 11.3742933}, //
+
58978 {3.13464999, 11.37465}, //
+
58979 {3.13351989, 11.375783}, //
+
58980 {3.13200998, 11.3772936}, //
+
58981 {3.13162994, 11.3776722}, //
+
58982 {3.12897992, 11.3803167}, //
+
58983 {3.1286099, 11.3806944}, //
+
58984 {3.12785006, 11.3814497}, //
+
58985 {3.12744999, 11.3818073}, //
+
58986 {3.12701011, 11.382122}, //
+
58987 {3.12652993, 11.3823938}, //
+
58988 {3.12599993, 11.3826246}, //
+
58989 {3.12543988, 11.3828144}, //
+
58990 {3.12483001, 11.3829613}, //
+
58991 {3.12418008, 11.3830662}, //
+
58992 {3.12348008, 11.3831291}, //
+
58993 {3.12275004, 11.3831501}, //
+
58994 {3.12268996, 11.3823938}, //
+
58995 {3.12249994, 11.3816385}, //
+
58996 {3.12217999, 11.3808832}, //
+
58997 {3.1217401, 11.3801279}, //
+
58998 {3.12118006, 11.3793716}, //
+
58999 {3.12048006, 11.3786173}, //
+
59000 {3.1196599, 11.377861}, //
+
59001 {3.11872005, 11.3771057}, //
+
59002 {3.11765003, 11.3763504}, //
+
59003 {3.11648989, 11.3756361}, //
+
59004 {3.1152401, 11.3750067}, //
+
59005 {3.11389995, 11.3744612}, //
+
59006 {3.11247993, 11.3739986}, //
+
59007 {3.11097002, 11.3736219}, //
+
59008 {3.10938001, 11.3733282}, //
+
59009 {3.10770988, 11.3731184}, //
+
59010 {3.10595012, 11.3729916}, //
+
59011 {3.10409999, 11.3729496}, //
+
59012 {3.10224009, 11.3729916}, //
+
59013 {3.10043001, 11.3731184}, //
+
59014 {3.09864998, 11.3733282}, //
+
59015 {3.09691, 11.3736219}, //
+
59016 {3.09522009, 11.3739986}, //
+
59017 {3.09356999, 11.3744612}, //
+
59018 {3.09194994, 11.3750067}, //
+
59019 {3.09037995, 11.3756361}, //
+
59020 {3.08885002, 11.3763504}, //
+
59021 {3.0880301, 11.3771057}, //
+
59022 {3.08709002, 11.377861}, //
+
59023 {3.08601999, 11.3786173}, //
+
59024 {3.08482003, 11.3793716}, //
+
59025 {3.08349991, 11.3801279}, //
+
59026 {3.08205009, 11.3808832}, //
+
59027 {3.0804801, 11.3816385}, //
+
59028 {3.07877994, 11.3823938}, //
+
59029 {3.07695007, 11.3831501}, //
+
59030 {3.07510996, 11.3838844}, //
+
59031 {3.07335997, 11.3845749}, //
+
59032 {3.07169008, 11.3852224}, //
+
59033 {3.07010007, 11.3858271}, //
+
59034 {3.06859994, 11.3863878}, //
+
59035 {3.0671699, 11.3869057}, //
+
59036 {3.06582999, 11.3873796}, //
+
59037 {3.06456995, 11.3878117}, //
+
59038 {3.06340003, 11.3881998}, //
+
59039 {3.06234002, 11.3885574}, //
+
59040 {3.06059003, 11.3891439}, //
+
59041 {3.05991006, 11.3893747}, //
+
59042 {3.05859995, 11.3898163}, //
+
59043 {3.05840993, 11.3898792}, //
+
59044 {3.05835009, 11.3899002}, //
+
59045 {3.05835009, 11.3933001}, //
+
59046 {3.06055999, 11.3932581}, //
+
59047 {3.06270003, 11.3931322}, //
+
59048 {3.06473994, 11.3929224}, //
+
59049 {3.06671, 11.3926277}, //
+
59050 {3.06858993, 11.392251}, //
+
59051 {3.07038999, 11.3917894}, //
+
59052 {3.07210994, 11.391243}, //
+
59053 {3.07375002, 11.3906136}, //
+
59054 {3.07529998, 11.3899002}, //
+
59055 {3.07751012, 11.3898792}, //
+
59056 {3.07964993, 11.3898163}, //
+
59057 {3.08169007, 11.3897114}, //
+
59058 {3.08365989, 11.3895636}, //
+
59059 {3.08554006, 11.3893747}, //
+
59060 {3.08734012, 11.3891439}, //
+
59061 {3.08906007, 11.3888721}, //
+
59062 {3.09069991, 11.3885574}, //
+
59063 {3.09225011, 11.3881998}, //
+
59064 {3.09388995, 11.3878536}, //
+
59065 {3.09576988, 11.3875484}, //
+
59066 {3.09790993, 11.3872833}, //
+
59067 {3.10030007, 11.3870592}, //
+
59068 {3.10294008, 11.3868761}, //
+
59069 {3.10582995, 11.3867331}, //
+
59070 {3.10896993, 11.386631}, //
+
59071 {3.11236, 11.38657}, //
+
59072 {3.11599994, 11.3865499}, //
+
59073 {3.11964011, 11.3872528}, //
+
59074 {3.12302995, 11.3878727}, //
+
59075 {3.12616992, 11.3884106}, //
+
59076 {3.12905002, 11.3888664}, //
+
59077 {3.13169003, 11.3892384}, //
+
59078 {3.13406992, 11.3895283}, //
+
59079 {3.13619995, 11.3897352}, //
+
59080 {3.13807011, 11.3898592}, //
+
59081 {3.13969994, 11.3899002}, //
+
59082 {3.14650011, 11.3899002}, //
+
59083 {3.14597988, 11.3888512}, //
+
59084 {3.14574003, 11.3883886}, //
+
59085 {3.1454699, 11.3878431}, //
+
59086 {3.14479995, 11.3865004}, //
+
59087 {3.14441991, 11.3857546}, //
+
59088 {3.14404011, 11.3850088}, //
+
59089 {3.14367008, 11.3842611}, //
+
59090 {3.14329004, 11.3835115}, //
+
59091 {3.14291, 11.382762}, //
+
59092 {3.14252996, 11.3820114}, //
+
59093 {3.14215994, 11.381259}, //
+
59094 {3.1417799, 11.3805046}, //
+
59095 {3.1414001, 11.3797503}, //
+
59096 {3.14104009, 11.379015}, //
+
59097 {3.1407299, 11.3783226}, //
+
59098 {3.14046001, 11.3776722}, //
+
59099 {3.14021993, 11.3770638}, //
+
59100 {3.14003992, 11.3764973}, //
+
59101 {3.13988996, 11.3759718}, //
+
59102 {3.13978004, 11.3754902}, //
+
59103 {3.13971996, 11.3750486}, //
+
59104 {3.13969994, 11.37465}, //
+
59105 {3.13969994, 11.3729496}, //
+
59106 });
+
59107 polys.push_back({
+
59108 {1.24265003, 11.3034496}, //
+
59109 {1.24068999, 11.3046036}, //
+
59110 {1.23855996, 11.3057976}, //
+
59111 {1.23626006, 11.3070326}, //
+
59112 {1.23379004, 11.3083086}, //
+
59113 {1.23115003, 11.3096256}, //
+
59114 {1.22834003, 11.3109827}, //
+
59115 {1.22536004, 11.3123808}, //
+
59116 {1.22221994, 11.3138199}, //
+
59117 {1.21889997, 11.3153}, //
+
59118 {1.21554995, 11.3168097}, //
+
59119 {1.21229005, 11.3183203}, //
+
59120 {1.20911002, 11.319828}, //
+
59121 {1.20602, 11.3213348}, //
+
59122 {1.20299995, 11.3228397}, //
+
59123 {1.20008004, 11.3243437}, //
+
59124 {1.19722998, 11.3258476}, //
+
59125 {1.19447994, 11.3273487}, //
+
59126 {1.1918, 11.3288498}, //
+
59127 {1.18919003, 11.3303194}, //
+
59128 {1.18660998, 11.3317041}, //
+
59129 {1.18408, 11.3330059}, //
+
59130 {1.18158996, 11.3342228}, //
+
59131 {1.17913997, 11.3353558}, //
+
59132 {1.17673004, 11.3364058}, //
+
59133 {1.17436004, 11.3373709}, //
+
59134 {1.17203999, 11.3382521}, //
+
59135 {1.16974998, 11.3390503}, //
+
59136 {1.16816998, 11.3398056}, //
+
59137 {1.16640997, 11.3405609}, //
+
59138 {1.16448998, 11.3413172}, //
+
59139 {1.16240001, 11.3420715}, //
+
59140 {1.16014004, 11.3428278}, //
+
59141 {1.15770996, 11.3435831}, //
+
59142 {1.15511, 11.3443394}, //
+
59143 {1.15234005, 11.3450937}, //
+
59144 {1.1494, 11.34585}, //
+
59145 {1.14638996, 11.3466053}, //
+
59146 {1.14338005, 11.3473587}, //
+
59147 {1.14037001, 11.3481112}, //
+
59148 {1.13735998, 11.3488617}, //
+
59149 {1.13434005, 11.3496122}, //
+
59150 {1.13133001, 11.3503609}, //
+
59151 {1.12831998, 11.3511086}, //
+
59152 {1.12530994, 11.3518553}, //
+
59153 {1.12230003, 11.3526001}, //
+
59154 {1.11934996, 11.3533354}, //
+
59155 {1.11652994, 11.3540268}, //
+
59156 {1.11382997, 11.3546782}, //
+
59157 {1.11125004, 11.3552856}, //
+
59158 {1.10880005, 11.3558531}, //
+
59159 {1.10648, 11.3563776}, //
+
59160 {1.10427999, 11.3568602}, //
+
59161 {1.10220003, 11.3573008}, //
+
59162 {1.10025001, 11.3577003}, //
+
59163 {1.09847999, 11.358057}, //
+
59164 {1.09691, 11.3583717}, //
+
59165 {1.09440994, 11.3588753}, //
+
59166 {1.09179997, 11.3593998}, //
+
59167 {1.09189999, 11.3594418}, //
+
59168 {1.09221995, 11.3595676}, //
+
59169 {1.09274006, 11.3597784}, //
+
59170 {1.09346998, 11.3600721}, //
+
59171 {1.09440994, 11.3604488}, //
+
59172 {1.09555995, 11.3609114}, //
+
59173 {1.09691, 11.3614569}, //
+
59174 {1.09847999, 11.3620863}, //
+
59175 {1.10025001, 11.3627996}, //
+
59176 {1.10223997, 11.363555}, //
+
59177 {1.10444999, 11.3643093}, //
+
59178 {1.10686004, 11.3650608}, //
+
59179 {1.10947001, 11.3658123}, //
+
59180 {1.11230004, 11.3665619}, //
+
59181 {1.11533999, 11.3673105}, //
+
59182 {1.11857998, 11.3680592}, //
+
59183 {1.12204003, 11.3688049}, //
+
59184 {1.1257, 11.3695498}, //
+
59185 {1.12942004, 11.3702641}, //
+
59186 {1.13306999, 11.3708925}, //
+
59187 {1.13662004, 11.371439}, //
+
59188 {1.1401, 11.3719006}, //
+
59189 {1.14347994, 11.3722782}, //
+
59190 {1.14679003, 11.3725719}, //
+
59191 {1.15000999, 11.3727818}, //
+
59192 {1.15314996, 11.3729076}, //
+
59193 {1.15620005, 11.3729496}, //
+
59194 {1.16096997, 11.3734121}, //
+
59195 {1.16624999, 11.3732882}, //
+
59196 {1.17202997, 11.3725777}, //
+
59197 {1.17831004, 11.3712807}, //
+
59198 {1.18508995, 11.3693981}, //
+
59199 {1.19237995, 11.3669281}, //
+
59200 {1.20017004, 11.3638716}, //
+
59201 {1.20845997, 11.3602285}, //
+
59202 {1.21724999, 11.3559999}, //
+
59203 {1.22029996, 11.3544989}, //
+
59204 {1.22344005, 11.3529978}, //
+
59205 {1.22666001, 11.3514938}, //
+
59206 {1.22996998, 11.3499899}, //
+
59207 {1.23335004, 11.348485}, //
+
59208 {1.23683, 11.3469782}, //
+
59209 {1.24038005, 11.3454704}, //
+
59210 {1.24403, 11.3439598}, //
+
59211 {1.24775004, 11.3424501}, //
+
59212 {1.25115001, 11.2983999}, //
+
59213 });
+
59214 polys.push_back({
+
59215 {1.02734995, 11.2882004}, //
+
59216 {1.02394998, 11.3119497}, //
+
59217 {1.04939997, 11.3119497}, //
+
59218 {1.05201006, 11.3119917}, //
+
59219 {1.05458999, 11.3121176}, //
+
59220 {1.05711997, 11.3123283}, //
+
59221 {1.05961001, 11.3126221}, //
+
59222 {1.06206, 11.3129988}, //
+
59223 {1.06447005, 11.3134613}, //
+
59224 {1.06684005, 11.3140068}, //
+
59225 {1.06915998, 11.3146362}, //
+
59226 {1.07145, 11.3153496}, //
+
59227 {1.07366002, 11.3160744}, //
+
59228 {1.07579005, 11.3167572}, //
+
59229 {1.07783997, 11.3174}, //
+
59230 {1.07980001, 11.3180017}, //
+
59231 {1.08168006, 11.3185635}, //
+
59232 {1.08346999, 11.3190832}, //
+
59233 {1.08518004, 11.3195629}, //
+
59234 {1.08680999, 11.3200016}, //
+
59235 {1.08835006, 11.3204002}, //
+
59236 {1.08985996, 11.3207779}, //
+
59237 {1.09136999, 11.3211555}, //
+
59238 {1.09288001, 11.3215332}, //
+
59239 {1.09439003, 11.3219109}, //
+
59240 {1.09590995, 11.3222895}, //
+
59241 {1.09741998, 11.3226671}, //
+
59242 {1.09893, 11.3230438}, //
+
59243 {1.10195005, 11.3238001}, //
+
59244 {1.10337996, 11.3241568}, //
+
59245 {1.10464001, 11.3244724}, //
+
59246 {1.10573006, 11.3247442}, //
+
59247 {1.10664999, 11.324975}, //
+
59248 {1.10740995, 11.3251638}, //
+
59249 {1.10799003, 11.3253107}, //
+
59250 {1.10841, 11.3254156}, //
+
59251 {1.10867, 11.3254786}, //
+
59252 {1.10874999, 11.3254995}, //
+
59253 {1.10871005, 11.3254366}, //
+
59254 {1.10857999, 11.3252478}, //
+
59255 {1.10769999, 11.323926}, //
+
59256 {1.10669005, 11.3224154}, //
+
59257 {1.10606003, 11.3214703}, //
+
59258 {1.10535002, 11.3204002}, //
+
59259 {1.10452998, 11.3192558}, //
+
59260 {1.10359001, 11.3180695}, //
+
59261 {1.10251999, 11.3168392}, //
+
59262 {1.10132003, 11.3155651}, //
+
59263 {1.10000002, 11.314249}, //
+
59264 {1.09854996, 11.3128891}, //
+
59265 {1.09697998, 11.3114862}, //
+
59266 {1.09528005, 11.3100405}, //
+
59267 {1.09344995, 11.3085499}, //
+
59268 {1.09154999, 11.3070402}, //
+
59269 {1.08960998, 11.3055296}, //
+
59270 {1.08763003, 11.3040218}, //
+
59271 {1.08560002, 11.302515}, //
+
59272 {1.08353996, 11.3010101}, //
+
59273 {1.08142996, 11.2995062}, //
+
59274 {1.07928002, 11.2980022}, //
+
59275 {1.07708001, 11.2965012}, //
+
59276 {1.07484996, 11.2950001}, //
+
59277 {1.07041001, 11.2935734}, //
+
59278 {1.06614006, 11.2923136}, //
+
59279 {1.06202996, 11.2912216}, //
+
59280 {1.05808997, 11.2902994}, //
+
59281 {1.05431998, 11.2895432}, //
+
59282 {1.05071998, 11.2889557}, //
+
59283 {1.04727995, 11.2885361}, //
+
59284 {1.04401004, 11.2882843}, //
+
59285 {1.04089999, 11.2882004}, //
+
59286 });
+
59287 polys.push_back({
+
59288 {3.03657007, 11.295042}, //
+
59289 {3.03531003, 11.2951679}, //
+
59290 {3.03421998, 11.2953777}, //
+
59291 {3.03329992, 11.2956724}, //
+
59292 {3.03254008, 11.2960491}, //
+
59293 {3.03196001, 11.2965107}, //
+
59294 {3.03153992, 11.2970572}, //
+
59295 {3.03128004, 11.2976856}, //
+
59296 {3.03119993, 11.2983999}, //
+
59297 {3.03049994, 11.2991447}, //
+
59298 {3.02988005, 11.2998915}, //
+
59299 {3.02934003, 11.3006392}, //
+
59300 {3.02887988, 11.3013878}, //
+
59301 {3.02851009, 11.3021383}, //
+
59302 {3.02821994, 11.3028889}, //
+
59303 {3.02801991, 11.3036413}, //
+
59304 {3.02788997, 11.3043947}, //
+
59305 {3.02784991, 11.30515}, //
+
59306 {3.02784991, 11.3186998}, //
+
59307 {3.02788997, 11.317997}, //
+
59308 {3.02801991, 11.3173771}, //
+
59309 {3.02821994, 11.3168392}, //
+
59310 {3.02851009, 11.3163843}, //
+
59311 {3.02887988, 11.3160124}, //
+
59312 {3.02934003, 11.3157225}, //
+
59313 {3.02988005, 11.3155146}, //
+
59314 {3.03049994, 11.3153906}, //
+
59315 {3.03119993, 11.3153496}, //
+
59316 {3.03119993, 11.3119497}, //
+
59317 {3.03123999, 11.3119287}, //
+
59318 {3.03157997, 11.3117609}, //
+
59319 {3.03460002, 11.3102503}, //
+
59320 {3.03539991, 11.3098927}, //
+
59321 {3.03627992, 11.3095779}, //
+
59322 {3.03724003, 11.3093061}, //
+
59323 {3.03829002, 11.3090754}, //
+
59324 {3.0394299, 11.3088856}, //
+
59325 {3.04064012, 11.3087387}, //
+
59326 {3.04194999, 11.3086338}, //
+
59327 {3.04332995, 11.3085709}, //
+
59328 {3.04480004, 11.3085499}, //
+
59329 {3.05495, 11.3085499}, //
+
59330 {3.05779004, 11.3085079}, //
+
59331 {3.06030011, 11.308382}, //
+
59332 {3.06247997, 11.3081722}, //
+
59333 {3.06432009, 11.3078775}, //
+
59334 {3.06581998, 11.3075008}, //
+
59335 {3.0669899, 11.3070393}, //
+
59336 {3.06783009, 11.3064928}, //
+
59337 {3.06833005, 11.3058643}, //
+
59338 {3.06850004, 11.30515}, //
+
59339 {3.06824994, 11.3050661}, //
+
59340 {3.06792998, 11.3049612}, //
+
59341 {3.0674901, 11.3048143}, //
+
59342 {3.06623006, 11.3043938}, //
+
59343 {3.0654099, 11.304122}, //
+
59344 {3.06447005, 11.3038073}, //
+
59345 {3.06340003, 11.3034496}, //
+
59346 {3.06225991, 11.303051}, //
+
59347 {3.06106997, 11.3026104}, //
+
59348 {3.05983996, 11.3021278}, //
+
59349 {3.05856991, 11.3016033}, //
+
59350 {3.05725002, 11.3010359}, //
+
59351 {3.05589008, 11.3004284}, //
+
59352 {3.05449009, 11.299777}, //
+
59353 {3.05304003, 11.2990847}, //
+
59354 {3.05154991, 11.2983503}, //
+
59355 {3.05005002, 11.2976475}, //
+
59356 {3.04854989, 11.2970266}, //
+
59357 {3.04703999, 11.2964888}, //
+
59358 {3.04554009, 11.2960339}, //
+
59359 {3.04402995, 11.2956619}, //
+
59360 {3.04253006, 11.295372}, //
+
59361 {3.04101992, 11.2951651}, //
+
59362 {3.03951001, 11.2950411}, //
+
59363 {3.03800011, 11.2950001}, //
+
59364 });
+
59365 polys.push_back({
+
59366 {3.09734988, 11.2712498}, //
+
59367 {3.09699011, 11.2712917}, //
+
59368 {3.09667993, 11.2714176}, //
+
59369 {3.09641004, 11.2716284}, //
+
59370 {3.09616995, 11.2719221}, //
+
59371 {3.09598994, 11.2722988}, //
+
59372 {3.09583998, 11.2727613}, //
+
59373 {3.09573007, 11.2733068}, //
+
59374 {3.09566998, 11.2739363}, //
+
59375 {3.09564996, 11.2746496}, //
+
59376 {3.09418011, 11.2754469}, //
+
59377 {3.0927999, 11.2763271}, //
+
59378 {3.09149003, 11.2772894}, //
+
59379 {3.09028006, 11.2783337}, //
+
59380 {3.08913994, 11.2794619}, //
+
59381 {3.08808994, 11.2806721}, //
+
59382 {3.08713007, 11.2819653}, //
+
59383 {3.08625007, 11.2833414}, //
+
59384 {3.08544993, 11.2847996}, //
+
59385 {3.08474994, 11.2848415}, //
+
59386 {3.08413005, 11.2849684}, //
+
59387 {3.08359003, 11.2851782}, //
+
59388 {3.08312988, 11.2854719}, //
+
59389 {3.0827601, 11.2858486}, //
+
59390 {3.08246994, 11.2863111}, //
+
59391 {3.08226991, 11.2868567}, //
+
59392 {3.08213997, 11.2874861}, //
+
59393 {3.08209991, 11.2882004}, //
+
59394 {3.08209991, 11.30515}, //
+
59395 {3.08544993, 11.30515}, //
+
59396 {3.08767009, 11.3043528}, //
+
59397 {3.08980989, 11.3034735}, //
+
59398 {3.09187007, 11.3025112}, //
+
59399 {3.09383988, 11.301466}, //
+
59400 {3.09572005, 11.3003378}, //
+
59401 {3.09752011, 11.2991276}, //
+
59402 {3.09923005, 11.2978354}, //
+
59403 {3.10086012, 11.2964592}, //
+
59404 {3.10240006, 11.2950001}, //
+
59405 {3.10454011, 11.2935734}, //
+
59406 {3.11246991, 11.2882843}, //
+
59407 {3.11260009, 11.2882004}, //
+
59408 {3.10240006, 11.2712498}, //
+
59409 });
+
59410 polys.push_back({
+
59411 {4.22809982, 11.2407503}, //
+
59412 {4.22744989, 11.2407713}, //
+
59413 {4.22700977, 11.2408342}, //
+
59414 {4.22677994, 11.2409391}, //
+
59415 {4.22675991, 11.241086}, //
+
59416 {4.22695017, 11.2412748}, //
+
59417 {4.22734022, 11.2415056}, //
+
59418 {4.2279501, 11.2417784}, //
+
59419 {4.22876978, 11.2420931}, //
+
59420 {4.22980022, 11.2424498}, //
+
59421 {4.23096991, 11.2428484}, //
+
59422 {4.23223019, 11.2432871}, //
+
59423 {4.2335701, 11.2437668}, //
+
59424 {4.23500013, 11.2442865}, //
+
59425 {4.23649979, 11.2448483}, //
+
59426 {4.23809004, 11.24545}, //
+
59427 {4.23975992, 11.2460928}, //
+
59428 {4.24150991, 11.2467756}, //
+
59429 {4.24335003, 11.2475004}, //
+
59430 {4.24522018, 11.2482347}, //
+
59431 {4.24703979, 11.2489271}, //
+
59432 {4.24881983, 11.2495785}, //
+
59433 {4.25055981, 11.250186}, //
+
59434 {4.25225019, 11.2507534}, //
+
59435 {4.25391006, 11.2512779}, //
+
59436 {4.25550985, 11.2517595}, //
+
59437 {4.25708008, 11.2522011}, //
+
59438 {4.25860023, 11.2525997}, //
+
59439 {4.2601099, 11.2529993}, //
+
59440 {4.26162004, 11.2534399}, //
+
59441 {4.26313019, 11.2539225}, //
+
59442 {4.26463985, 11.254447}, //
+
59443 {4.26616001, 11.2550144}, //
+
59444 {4.26767015, 11.2556219}, //
+
59445 {4.26917982, 11.2562733}, //
+
59446 {4.27068996, 11.2569647}, //
+
59447 {4.27220011, 11.2577}, //
+
59448 {4.27370024, 11.2584972}, //
+
59449 {4.27519989, 11.2593765}, //
+
59450 {4.27671003, 11.2603388}, //
+
59451 {4.27821016, 11.261384}, //
+
59452 {4.27971983, 11.2625122}, //
+
59453 {4.28121996, 11.2637224}, //
+
59454 {4.2827301, 11.2650146}, //
+
59455 {4.28423977, 11.2663908}, //
+
59456 {4.28574991, 11.2678499}, //
+
59457 {4.28578997, 11.2678709}, //
+
59458 {4.28612995, 11.2680387}, //
+
59459 {4.28915024, 11.2695503}, //
+
59460 {4.28989983, 11.269907}, //
+
59461 {4.2906599, 11.2702217}, //
+
59462 {4.29140997, 11.2704945}, //
+
59463 {4.29216003, 11.2707253}, //
+
59464 {4.2929101, 11.2709141}, //
+
59465 {4.29366016, 11.2710609}, //
+
59466 {4.29441023, 11.2711658}, //
+
59467 {4.2951498, 11.2712288}, //
+
59468 {4.29589987, 11.2712498}, //
+
59469 {4.2990098, 11.2714586}, //
+
59470 {4.30227995, 11.2720871}, //
+
59471 {4.30571985, 11.2731333}, //
+
59472 {4.30931997, 11.2745981}, //
+
59473 {4.31308985, 11.2764807}, //
+
59474 {4.31702995, 11.2787828}, //
+
59475 {4.32113981, 11.2815037}, //
+
59476 {4.32540989, 11.2846432}, //
+
59477 {4.3298502, 11.2882004}, //
+
59478 {4.33059978, 11.2889137}, //
+
59479 {4.33133984, 11.2895432}, //
+
59480 {4.3320899, 11.2900887}, //
+
59481 {4.33283997, 11.2905512}, //
+
59482 {4.33359003, 11.2909279}, //
+
59483 {4.3343401, 11.2912216}, //
+
59484 {4.33509016, 11.2914324}, //
+
59485 {4.33584976, 11.2915583}, //
+
59486 {4.33659983, 11.2916002}, //
+
59487 {4.33659983, 11.2865}, //
+
59488 {4.33655977, 11.2861433}, //
+
59489 {4.33643007, 11.2858276}, //
+
59490 {4.33621979, 11.2855558}, //
+
59491 {4.33592987, 11.2853251}, //
+
59492 {4.33554983, 11.2851362}, //
+
59493 {4.33509016, 11.2849894}, //
+
59494 {4.33453989, 11.2848845}, //
+
59495 {4.33390999, 11.2848206}, //
+
59496 {4.33319998, 11.2847996}, //
+
59497 {4.33240986, 11.2832565}, //
+
59498 {4.33154011, 11.2816296}, //
+
59499 {4.33058023, 11.2799168}, //
+
59500 {4.32953978, 11.2781191}, //
+
59501 {4.32841015, 11.2762346}, //
+
59502 {4.32719994, 11.2742672}, //
+
59503 {4.32590008, 11.272213}, //
+
59504 {4.32452011, 11.2700739}, //
+
59505 {4.32305002, 11.2678499}, //
+
59506 {4.32080984, 11.2663279}, //
+
59507 {4.3186202, 11.2647638}, //
+
59508 {4.31647015, 11.2631559}, //
+
59509 {4.31435013, 11.2615042}, //
+
59510 {4.31228018, 11.2598104}, //
+
59511 {4.31024981, 11.2580719}, //
+
59512 {4.30825996, 11.2562914}, //
+
59513 {4.30631018, 11.254467}, //
+
59514 {4.30439997, 11.2525997}, //
+
59515 {4.30256987, 11.2508268}, //
+
59516 {4.30087996, 11.2492619}, //
+
59517 {4.29931021, 11.2479057}, //
+
59518 {4.29786015, 11.2467585}, //
+
59519 {4.2965498, 11.2458191}, //
+
59520 {4.29536009, 11.2450886}, //
+
59521 {4.29429007, 11.2445669}, //
+
59522 {4.29336023, 11.2442541}, //
+
59523 {4.29255009, 11.2441502}, //
+
59524 {4.29099989, 11.2434359}, //
+
59525 {4.28936005, 11.2428074}, //
+
59526 {4.28764009, 11.2422609}, //
+
59527 {4.28583002, 11.2417994}, //
+
59528 {4.28394985, 11.2414217}, //
+
59529 {4.28197002, 11.241128}, //
+
59530 {4.2799201, 11.2409182}, //
+
59531 {4.27777004, 11.2407923}, //
+
59532 {4.27554989, 11.2407503}, //
+
59533 });
+
59534 polys.push_back({
+
59535 {1.27824998, 11.1729002}, //
+
59536 {1.27672994, 11.1729212}, //
+
59537 {1.27515996, 11.1729841}, //
+
59538 {1.27356005, 11.173089}, //
+
59539 {1.27190006, 11.1732359}, //
+
59540 {1.27021003, 11.1734247}, //
+
59541 {1.26847005, 11.1736565}, //
+
59542 {1.26669002, 11.1739283}, //
+
59543 {1.26487005, 11.174243}, //
+
59544 {1.26300001, 11.1745996}, //
+
59545 {1.26111996, 11.1749992}, //
+
59546 {1.25924003, 11.1754398}, //
+
59547 {1.25735998, 11.1759224}, //
+
59548 {1.25548005, 11.1764469}, //
+
59549 {1.2536, 11.1770144}, //
+
59550 {1.25171006, 11.1776218}, //
+
59551 {1.24983001, 11.1782732}, //
+
59552 {1.24793994, 11.1789646}, //
+
59553 {1.24605, 11.1796999}, //
+
59554 {1.24423003, 11.1804562}, //
+
59555 {1.24254, 11.1812115}, //
+
59556 {1.24098003, 11.1819668}, //
+
59557 {1.23953998, 11.1827221}, //
+
59558 {1.23821998, 11.1834784}, //
+
59559 {1.23703003, 11.1842327}, //
+
59560 {1.23596001, 11.184989}, //
+
59561 {1.23502004, 11.1857443}, //
+
59562 {1.2342, 11.1864996}, //
+
59563 {1.23256004, 11.1874638}, //
+
59564 {1.23067999, 11.1888456}, //
+
59565 {1.22853994, 11.1906443}, //
+
59566 {1.22615004, 11.1928596}, //
+
59567 {1.22351003, 11.1954937}, //
+
59568 {1.22062004, 11.1985435}, //
+
59569 {1.21747994, 11.2020121}, //
+
59570 {1.21408999, 11.2058983}, //
+
59571 {1.21045005, 11.2102003}, //
+
59572 {1.20741999, 11.2132215}, //
+
59573 {1.20433998, 11.2162418}, //
+
59574 {1.20123005, 11.2192612}, //
+
59575 {1.19807005, 11.2222786}, //
+
59576 {1.19487, 11.225296}, //
+
59577 {1.19163001, 11.2283106}, //
+
59578 {1.18833995, 11.2313251}, //
+
59579 {1.18501997, 11.2343378}, //
+
59580 {1.18165004, 11.2373505}, //
+
59581 {1.17837, 11.2402782}, //
+
59582 {1.17528999, 11.2430391}, //
+
59583 {1.17242002, 11.2456331}, //
+
59584 {1.16975999, 11.2480612}, //
+
59585 {1.16731, 11.2503223}, //
+
59586 {1.16507006, 11.2524166}, //
+
59587 {1.16304004, 11.254344}, //
+
59588 {1.16121995, 11.2561064}, //
+
59589 {1.15960002, 11.2577}, //
+
59590 {1.15726995, 11.2584763}, //
+
59591 {1.15481997, 11.2592926}, //
+
59592 {1.15224004, 11.26015}, //
+
59593 {1.14953995, 11.2610483}, //
+
59594 {1.14671004, 11.2619867}, //
+
59595 {1.14375997, 11.2629671}, //
+
59596 {1.14067996, 11.2639866}, //
+
59597 {1.13748002, 11.265048}, //
+
59598 {1.13415003, 11.2661505}, //
+
59599 {1.13082004, 11.2672625}, //
+
59600 {1.12761998, 11.2683334}, //
+
59601 {1.12453997, 11.2693605}, //
+
59602 {1.12159002, 11.2703476}, //
+
59603 {1.11875999, 11.2712917}, //
+
59604 {1.11606002, 11.2721939}, //
+
59605 {1.11347997, 11.2730551}, //
+
59606 {1.11102998, 11.2738733}, //
+
59607 {1.10870004, 11.2746496}, //
+
59608 {1.10657001, 11.2753639}, //
+
59609 {1.10468996, 11.2759933}, //
+
59610 {1.10306001, 11.2765388}, //
+
59611 {1.10168004, 11.2770014}, //
+
59612 {1.09967995, 11.2776718}, //
+
59613 {1.09905005, 11.2778816}, //
+
59614 {1.09868002, 11.2780085}, //
+
59615 {1.09854996, 11.2780504}, //
+
59616 {1.09870005, 11.2780294}, //
+
59617 {1.09986997, 11.2778606}, //
+
59618 {1.10089004, 11.2777138}, //
+
59619 {1.11039996, 11.27635}, //
+
59620 {1.11310995, 11.2759724}, //
+
59621 {1.11593997, 11.2755938}, //
+
59622 {1.11889005, 11.2752171}, //
+
59623 {1.12197995, 11.2748394}, //
+
59624 {1.12518001, 11.2744608}, //
+
59625 {1.12851, 11.2740831}, //
+
59626 {1.13197005, 11.2737064}, //
+
59627 {1.13555002, 11.2733278}, //
+
59628 {1.13925004, 11.2729502}, //
+
59629 {1.14288998, 11.2725086}, //
+
59630 {1.14628005, 11.2719431}, //
+
59631 {1.14942002, 11.2712498}, //
+
59632 {1.15231001, 11.2704306}, //
+
59633 {1.15495002, 11.2694874}, //
+
59634 {1.15734005, 11.2684174}, //
+
59635 {1.15947998, 11.2672195}, //
+
59636 {1.16136003, 11.2658978}, //
+
59637 {1.16299999, 11.2644501}, //
+
59638 {1.16454005, 11.262949}, //
+
59639 {1.16617, 11.2614479}, //
+
59640 {1.16788006, 11.259944}, //
+
59641 {1.16968, 11.25844}, //
+
59642 {1.17156005, 11.2569351}, //
+
59643 {1.17352998, 11.2554283}, //
+
59644 {1.17559004, 11.2539196}, //
+
59645 {1.17772996, 11.2524099}, //
+
59646 {1.17995, 11.2509003}, //
+
59647 {1.18367004, 11.2479296}, //
+
59648 {1.18731999, 11.2450428}, //
+
59649 {1.19087005, 11.242239}, //
+
59650 {1.19435, 11.2395172}, //
+
59651 {1.19772995, 11.2368784}, //
+
59652 {1.20104003, 11.2343216}, //
+
59653 {1.20425999, 11.2318487}, //
+
59654 {1.20739996, 11.2294579}, //
+
59655 {1.21045005, 11.22715}, //
+
59656 {1.21272004, 11.2257118}, //
+
59657 {1.21498001, 11.2243986}, //
+
59658 {1.21723998, 11.2232113}, //
+
59659 {1.21950996, 11.2221479}, //
+
59660 {1.22177005, 11.2212086}, //
+
59661 {1.22403002, 11.2203941}, //
+
59662 {1.22628999, 11.2197046}, //
+
59663 {1.22853994, 11.2191401}, //
+
59664 {1.23080003, 11.2187004}, //
+
59665 {1.23306, 11.2183008}, //
+
59666 {1.23530996, 11.2178602}, //
+
59667 {1.23757005, 11.2173777}, //
+
59668 {1.23982, 11.2168531}, //
+
59669 {1.24207997, 11.2162857}, //
+
59670 {1.24433005, 11.2156782}, //
+
59671 {1.24659002, 11.2150269}, //
+
59672 {1.24883997, 11.2143354}, //
+
59673 {1.25109994, 11.2136002}, //
+
59674 {1.25335002, 11.2128859}, //
+
59675 {1.25555003, 11.2122574}, //
+
59676 {1.25770998, 11.2117109}, //
+
59677 {1.25981998, 11.2112494}, //
+
59678 {1.26189005, 11.2108717}, //
+
59679 {1.26391995, 11.210578}, //
+
59680 {1.26591003, 11.2103682}, //
+
59681 {1.26785004, 11.2102423}, //
+
59682 {1.26975, 11.2102003}, //
+
59683 {1.27824998, 11.2102003}, //
+
59684 {1.28505003, 11.1729002}, //
+
59685 });
+
59686 polys.push_back({
+
59687 {3.07189989, 11.2305498}, //
+
59688 {3.07044005, 11.2305708}, //
+
59689 {3.0690701, 11.2306337}, //
+
59690 {3.06777, 11.2307386}, //
+
59691 {3.06656003, 11.2308865}, //
+
59692 {3.06542993, 11.2310753}, //
+
59693 {3.06438994, 11.2313061}, //
+
59694 {3.06343007, 11.2315779}, //
+
59695 {3.06255007, 11.2318926}, //
+
59696 {3.06174994, 11.2322502}, //
+
59697 {3.0609901, 11.2326069}, //
+
59698 {3.06024003, 11.2329216}, //
+
59699 {3.05947995, 11.2331944}, //
+
59700 {3.05872989, 11.2334251}, //
+
59701 {3.05797005, 11.233614}, //
+
59702 {3.05721998, 11.2337608}, //
+
59703 {3.0564599, 11.2338657}, //
+
59704 {3.05571008, 11.2339287}, //
+
59705 {3.05495, 11.2339497}, //
+
59706 {3.05411005, 11.234664}, //
+
59707 {3.05310988, 11.2352934}, //
+
59708 {3.05192995, 11.2358389}, //
+
59709 {3.05059004, 11.2363014}, //
+
59710 {3.04908991, 11.2366781}, //
+
59711 {3.04742002, 11.2369719}, //
+
59712 {3.04557991, 11.2371817}, //
+
59713 {3.04357004, 11.2373075}, //
+
59714 {3.04139996, 11.2373505}, //
+
59715 {3.03908992, 11.2366781}, //
+
59716 {3.03670001, 11.2361746}, //
+
59717 {3.03422999, 11.2358389}, //
+
59718 {3.03167009, 11.235671}, //
+
59719 {3.02903008, 11.235671}, //
+
59720 {3.02630997, 11.2358389}, //
+
59721 {3.02350998, 11.2361746}, //
+
59722 {3.02062011, 11.2366781}, //
+
59723 {3.01764989, 11.2373505}, //
+
59724 {3.01617002, 11.2380428}, //
+
59725 {3.01472998, 11.2386093}, //
+
59726 {3.01332998, 11.2390499}, //
+
59727 {3.01198006, 11.2393646}, //
+
59728 {3.01065993, 11.2395544}, //
+
59729 {3.0093801, 11.2396173}, //
+
59730 {3.0081501, 11.2395544}, //
+
59731 {3.0069499, 11.2393646}, //
+
59732 {3.00580001, 11.2390499}, //
+
59733 {3.0037899, 11.2383776}, //
+
59734 {3.00296998, 11.2381058}, //
+
59735 {3.00226998, 11.237875}, //
+
59736 {3.00170994, 11.2376862}, //
+
59737 {3.00076008, 11.2373714}, //
+
59738 {3.0007, 11.2373505}, //
+
59739 {2.99993992, 11.2373075}, //
+
59740 {2.99919009, 11.2371817}, //
+
59741 {2.99843001, 11.2369719}, //
+
59742 {2.99767995, 11.2366781}, //
+
59743 {2.99692011, 11.2363014}, //
+
59744 {2.99617004, 11.2358389}, //
+
59745 {2.99540997, 11.2352934}, //
+
59746 {2.9946599, 11.234664}, //
+
59747 {2.99390006, 11.2339497}, //
+
59748 {2.9923799, 11.2339916}, //
+
59749 {2.99080992, 11.2341185}, //
+
59750 {2.98920989, 11.2343283}, //
+
59751 {2.98755002, 11.234622}, //
+
59752 {2.98586011, 11.2349987}, //
+
59753 {2.98411989, 11.2354612}, //
+
59754 {2.9823401, 11.2360067}, //
+
59755 {2.98052001, 11.2366362}, //
+
59756 {2.97865009, 11.2373505}, //
+
59757 {2.9767499, 11.2381468}, //
+
59758 {2.97480989, 11.239027}, //
+
59759 {2.97282004, 11.2399893}, //
+
59760 {2.97078991, 11.2410336}, //
+
59761 {2.96871996, 11.2421618}, //
+
59762 {2.96660995, 11.243372}, //
+
59763 {2.96444988, 11.2446651}, //
+
59764 {2.96224999, 11.2460413}, //
+
59765 {2.96000004, 11.2475004}, //
+
59766 {2.95853996, 11.2489271}, //
+
59767 {2.95717001, 11.250186}, //
+
59768 {2.95586991, 11.2512779}, //
+
59769 {2.95465994, 11.2522011}, //
+
59770 {2.95353007, 11.2529573}, //
+
59771 {2.95249009, 11.2535439}, //
+
59772 {2.95152998, 11.2539644}, //
+
59773 {2.95064998, 11.2542162}, //
+
59774 {2.94985008, 11.2543001}, //
+
59775 {2.93289995, 11.2543001}, //
+
59776 {2.93134999, 11.2542582}, //
+
59777 {2.92970991, 11.2541323}, //
+
59778 {2.92798996, 11.2539225}, //
+
59779 {2.9261899, 11.2536278}, //
+
59780 {2.92430997, 11.2532511}, //
+
59781 {2.92233992, 11.2527885}, //
+
59782 {2.92030001, 11.252243}, //
+
59783 {2.91815996, 11.2516136}, //
+
59784 {2.91595006, 11.2509003}, //
+
59785 {2.88879991, 11.2509003}, //
+
59786 {2.8880899, 11.2509212}, //
+
59787 {2.88745999, 11.2509842}, //
+
59788 {2.88690996, 11.2510891}, //
+
59789 {2.88645005, 11.251236}, //
+
59790 {2.88607001, 11.2514248}, //
+
59791 {2.8857801, 11.2516556}, //
+
59792 {2.88557005, 11.2519283}, //
+
59793 {2.88544011, 11.252243}, //
+
59794 {2.88540006, 11.2525997}, //
+
59795 {2.88544011, 11.2529573}, //
+
59796 {2.88557005, 11.2532721}, //
+
59797 {2.8857801, 11.2535439}, //
+
59798 {2.88607001, 11.2537746}, //
+
59799 {2.88645005, 11.2539644}, //
+
59800 {2.88690996, 11.2541113}, //
+
59801 {2.88745999, 11.2542162}, //
+
59802 {2.8880899, 11.2542791}, //
+
59803 {2.88879991, 11.2543001}, //
+
59804 {2.89560008, 11.2543001}, //
+
59805 {2.89717007, 11.2543421}, //
+
59806 {2.89886999, 11.254468}, //
+
59807 {2.90069008, 11.2546778}, //
+
59808 {2.9026401, 11.2549725}, //
+
59809 {2.90471005, 11.2553492}, //
+
59810 {2.90690994, 11.2558107}, //
+
59811 {2.90922999, 11.2563572}, //
+
59812 {2.91167998, 11.2569857}, //
+
59813 {2.9142499, 11.2577}, //
+
59814 {2.91682005, 11.2584553}, //
+
59815 {2.91927004, 11.2592087}, //
+
59816 {2.92159009, 11.2599611}, //
+
59817 {2.92378998, 11.2607117}, //
+
59818 {2.92585993, 11.2614622}, //
+
59819 {2.92780995, 11.2622108}, //
+
59820 {2.92963004, 11.2629585}, //
+
59821 {2.93132997, 11.2637053}, //
+
59822 {2.93289995, 11.2644501}, //
+
59823 {2.93511009, 11.2644291}, //
+
59824 {2.9372499, 11.2643661}, //
+
59825 {2.93929005, 11.2642612}, //
+
59826 {2.9412601, 11.2641144}, //
+
59827 {2.94314003, 11.2639246}, //
+
59828 {2.94494009, 11.2636938}, //
+
59829 {2.94666004, 11.263422}, //
+
59830 {2.94829988, 11.2631073}, //
+
59831 {2.94985008, 11.2627497}, //
+
59832 {2.95135999, 11.2623615}, //
+
59833 {2.95286989, 11.2619305}, //
+
59834 {2.95438004, 11.2614555}, //
+
59835 {2.95587993, 11.2609377}, //
+
59836 {2.95739007, 11.2603769}, //
+
59837 {2.95888996, 11.2597723}, //
+
59838 {2.9604001, 11.2591248}, //
+
59839 {2.9619, 11.2584343}, //
+
59840 {2.96339989, 11.2577}, //
+
59841 {2.96415997, 11.2569857}, //
+
59842 {2.96491003, 11.2563572}, //
+
59843 {2.96567011, 11.2558107}, //
+
59844 {2.96641994, 11.2553492}, //
+
59845 {2.96718001, 11.2549725}, //
+
59846 {2.96793008, 11.2546778}, //
+
59847 {2.96868992, 11.254468}, //
+
59848 {2.96943998, 11.2543421}, //
+
59849 {2.97020006, 11.2543001}, //
+
59850 {2.9732101, 11.2535858}, //
+
59851 {2.97621989, 11.2529573}, //
+
59852 {2.97922993, 11.2524109}, //
+
59853 {2.98223996, 11.2519493}, //
+
59854 {2.98526001, 11.2515717}, //
+
59855 {2.98827004, 11.2512779}, //
+
59856 {2.99128008, 11.2510681}, //
+
59857 {2.99429011, 11.2509422}, //
+
59858 {2.99729991, 11.2509003}, //
+
59859 {3.00749993, 11.2509003}, //
+
59860 {3.00979996, 11.2508583}, //
+
59861 {3.01218009, 11.2507324}, //
+
59862 {3.01464009, 11.2505217}, //
+
59863 {3.01718998, 11.2502279}, //
+
59864 {3.01982999, 11.2498512}, //
+
59865 {3.02254009, 11.2493887}, //
+
59866 {3.02535009, 11.2488432}, //
+
59867 {3.02822995, 11.2482138}, //
+
59868 {3.03119993, 11.2475004}, //
+
59869 {3.03196001, 11.2467966}, //
+
59870 {3.03271008, 11.2461767}, //
+
59871 {3.03346992, 11.2456388}, //
+
59872 {3.03421998, 11.2451839}, //
+
59873 {3.03498006, 11.244812}, //
+
59874 {3.03572989, 11.2445221}, //
+
59875 {3.03648996, 11.2443151}, //
+
59876 {3.03724003, 11.2441912}, //
+
59877 {3.03800011, 11.2441502}, //
+
59878 {3.0410099, 11.2440662}, //
+
59879 {3.04401994, 11.2438145}, //
+
59880 {3.04703999, 11.2433939}, //
+
59881 {3.05005002, 11.2428074}, //
+
59882 {3.05307007, 11.2420511}, //
+
59883 {3.05609012, 11.241128}, //
+
59884 {3.05910993, 11.240036}, //
+
59885 {3.06212997, 11.2387772}, //
+
59886 {3.06515002, 11.2373505}, //
+
59887 {3.06595993, 11.2366362}, //
+
59888 {3.06689, 11.2360067}, //
+
59889 {3.06795001, 11.2354612}, //
+
59890 {3.06913996, 11.2349987}, //
+
59891 {3.07045007, 11.234622}, //
+
59892 {3.0718801, 11.2343283}, //
+
59893 {3.07345009, 11.2341185}, //
+
59894 {3.07514, 11.2339916}, //
+
59895 {3.07695007, 11.2339497}, //
+
59896 {3.09225011, 11.2339497}, //
+
59897 {3.09217, 11.2338657}, //
+
59898 {3.09190989, 11.233614}, //
+
59899 {3.09173012, 11.2334251}, //
+
59900 {3.09149003, 11.2331944}, //
+
59901 {3.09054995, 11.2322502}, //
+
59902 {3.09013009, 11.2318926}, //
+
59903 {3.08962989, 11.2315779}, //
+
59904 {3.08904004, 11.2313061}, //
+
59905 {3.08837008, 11.2310753}, //
+
59906 {3.08761001, 11.2308865}, //
+
59907 {3.08677006, 11.2307386}, //
+
59908 {3.08585, 11.2306337}, //
+
59909 {3.08484006, 11.2305708}, //
+
59910 {3.08375001, 11.2305498}, //
+
59911 });
+
59912 polys.push_back({
+
59913 {0.912100017, 11.1627502}, //
+
59914 {0.910399973, 11.1661501}, //
+
59915 {0.91000098, 11.1669054}, //
+
59916 {0.909560025, 11.1676588}, //
+
59917 {0.909078002, 11.1684113}, //
+
59918 {0.908553004, 11.1691618}, //
+
59919 {0.907985985, 11.1699123}, //
+
59920 {0.907378018, 11.170661}, //
+
59921 {0.906727016, 11.1714087}, //
+
59922 {0.906035006, 11.1721554}, //
+
59923 {0.905300021, 11.1729002}, //
+
59924 {0.904523015, 11.1736565}, //
+
59925 {0.903705001, 11.1744108}, //
+
59926 {0.902844012, 11.1751671}, //
+
59927 {0.901942015, 11.1759224}, //
+
59928 {0.900997996, 11.1766777}, //
+
59929 {0.900011003, 11.177433}, //
+
59930 {0.898983002, 11.1781893}, //
+
59931 {0.897912025, 11.1789436}, //
+
59932 {0.896799982, 11.1796999}, //
+
59933 {0.895698011, 11.1804562}, //
+
59934 {0.894636989, 11.1812115}, //
+
59935 {0.893616974, 11.1819668}, //
+
59936 {0.892637014, 11.1827221}, //
+
59937 {0.891698003, 11.1834784}, //
+
59938 {0.890799999, 11.1842327}, //
+
59939 {0.889943004, 11.184989}, //
+
59940 {0.889126003, 11.1857443}, //
+
59941 {0.88835001, 11.1864996}, //
+
59942 {0.881550014, 11.1864996}, //
+
59943 {0.88004899, 11.1872139}, //
+
59944 {0.878548026, 11.1878433}, //
+
59945 {0.877044022, 11.1883888}, //
+
59946 {0.875540018, 11.1888514}, //
+
59947 {0.874035001, 11.1892281}, //
+
59948 {0.872528017, 11.1895218}, //
+
59949 {0.871020019, 11.1897316}, //
+
59950 {0.869509995, 11.1898584}, //
+
59951 {0.867999971, 11.1899004}, //
+
59952 {0.854449987, 11.1899004}, //
+
59953 {0.852918029, 11.1899204}, //
+
59954 {0.851343989, 11.1899815}, //
+
59955 {0.849727988, 11.1900826}, //
+
59956 {0.848070025, 11.1902256}, //
+
59957 {0.846369982, 11.1904087}, //
+
59958 {0.844627976, 11.1906328}, //
+
59959 {0.842844009, 11.1908979}, //
+
59960 {0.841018021, 11.1912041}, //
+
59961 {0.839150012, 11.1915503}, //
+
59962 {0.837334991, 11.1919909}, //
+
59963 {0.835644007, 11.1925573}, //
+
59964 {0.834078014, 11.1932497}, //
+
59965 {0.832635999, 11.1940689}, //
+
59966 {0.831319988, 11.195013}, //
+
59967 {0.830128014, 11.1960831}, //
+
59968 {0.829060018, 11.1972799}, //
+
59969 {0.828118026, 11.1986017}, //
+
59970 {0.827300012, 11.2000504}, //
+
59971 {0.827300012, 11.2034502}, //
+
59972 {0.826565027, 11.2034712}, //
+
59973 {0.825873017, 11.2035341}, //
+
59974 {0.825222015, 11.203639}, //
+
59975 {0.824613988, 11.2037859}, //
+
59976 {0.824047029, 11.2039747}, //
+
59977 {0.823521972, 11.2042065}, //
+
59978 {0.823040009, 11.2044783}, //
+
59979 {0.822598994, 11.204793}, //
+
59980 {0.8222, 11.2051497}, //
+
59981 {0.821811974, 11.2055073}, //
+
59982 {0.821380019, 11.205822}, //
+
59983 {0.820905983, 11.2060938}, //
+
59984 {0.820388019, 11.2063246}, //
+
59985 {0.81982702, 11.2065144}, //
+
59986 {0.819221973, 11.2066612}, //
+
59987 {0.818575025, 11.2067661}, //
+
59988 {0.817884028, 11.2068291}, //
+
59989 {0.817149997, 11.2068501}, //
+
59990 {0.786599994, 11.2068501}, //
+
59991 {0.784385979, 11.2068701}, //
+
59992 {0.782253981, 11.2069311}, //
+
59993 {0.780206025, 11.2070332}, //
+
59994 {0.778240025, 11.2071762}, //
+
59995 {0.776355982, 11.2073593}, //
+
59996 {0.774555981, 11.2075834}, //
+
59997 {0.772837996, 11.2078476}, //
+
59998 {0.771202028, 11.2081537}, //
+
59999 {0.769649982, 11.2084999}, //
+
60000 {0.76821202, 11.2088985}, //
+
60001 {0.76689899, 11.2093401}, //
+
60002 {0.76571101, 11.2098217}, //
+
60003 {0.76464802, 11.2103472}, //
+
60004 {0.763709009, 11.2109137}, //
+
60005 {0.762893975, 11.2115221}, //
+
60006 {0.762205005, 11.2121735}, //
+
60007 {0.761640012, 11.2128649}, //
+
60008 {0.761200011, 11.2136002}, //
+
60009 {0.760968983, 11.2143564}, //
+
60010 {0.761030018, 11.2151108}, //
+
60011 {0.761382997, 11.215867}, //
+
60012 {0.762030005, 11.2166224}, //
+
60013 {0.762969017, 11.2173777}, //
+
60014 {0.764199972, 11.218133}, //
+
60015 {0.765724003, 11.2188892}, //
+
60016 {0.767540991, 11.2196436}, //
+
60017 {0.769649982, 11.2203999}, //
+
60018 {0.774214029, 11.2219009}, //
+
60019 {0.778862, 11.223402}, //
+
60020 {0.783594012, 11.224906}, //
+
60021 {0.788410008, 11.2264099}, //
+
60022 {0.793309987, 11.2279148}, //
+
60023 {0.798294008, 11.2294216}, //
+
60024 {0.803362012, 11.2309303}, //
+
60025 {0.808513999, 11.23244}, //
+
60026 {0.813750029, 11.2339497}, //
+
60027 {0.818902016, 11.2352934}, //
+
60028 {0.823801994, 11.2363014}, //
+
60029 {0.828450024, 11.2369719}, //
+
60030 {0.832845986, 11.2373075}, //
+
60031 {0.836991012, 11.2373075}, //
+
60032 {0.840883017, 11.2369719}, //
+
60033 {0.844524026, 11.2363014}, //
+
60034 {0.847913027, 11.2352934}, //
+
60035 {0.851050019, 11.2339497}, //
+
60036 {0.854018986, 11.2332993}, //
+
60037 {0.85690397, 11.2328587}, //
+
60038 {0.859705985, 11.2326279}, //
+
60039 {0.862423003, 11.2326069}, //
+
60040 {0.865055978, 11.2327957}, //
+
60041 {0.867605984, 11.2331944}, //
+
60042 {0.870070994, 11.2338028}, //
+
60043 {0.872452021, 11.234622}, //
+
60044 {0.874750018, 11.2356501}, //
+
60045 {0.876932979, 11.236762}, //
+
60046 {0.878947973, 11.237833}, //
+
60047 {0.880793989, 11.2388611}, //
+
60048 {0.882472992, 11.2398481}, //
+
60049 {0.883984983, 11.2407923}, //
+
60050 {0.885327995, 11.2416945}, //
+
60051 {0.886502981, 11.2425547}, //
+
60052 {0.887510002, 11.2433729}, //
+
60053 {0.88835001, 11.2441502}, //
+
60054 {0.889105022, 11.244874}, //
+
60055 {0.889859021, 11.2455568}, //
+
60056 {0.890610993, 11.2461996}, //
+
60057 {0.891362011, 11.2468023}, //
+
60058 {0.892112017, 11.2473631}, //
+
60059 {0.892861009, 11.2478828}, //
+
60060 {0.893608987, 11.2483625}, //
+
60061 {0.894354999, 11.2488022}, //
+
60062 {0.895099998, 11.2491999}, //
+
60063 {0.895856023, 11.2495785}, //
+
60064 {0.896610975, 11.2499561}, //
+
60065 {0.897367001, 11.2503328}, //
+
60066 {0.898122013, 11.2507114}, //
+
60067 {0.898877978, 11.2510891}, //
+
60068 {0.900389016, 11.2518444}, //
+
60069 {0.901144028, 11.2522221}, //
+
60070 {0.901899993, 11.2525997}, //
+
60071 {0.905131996, 11.2542162}, //
+
60072 {0.905300021, 11.2543001}, //
+
60073 {0.905300021, 11.2305498}, //
+
60074 {0.898500025, 11.2305498}, //
+
60075 {0.897776008, 11.2305288}, //
+
60076 {0.897092998, 11.2304659}, //
+
60077 {0.896449983, 11.230361}, //
+
60078 {0.895847976, 11.2302141}, //
+
60079 {0.895286977, 11.2300253}, //
+
60080 {0.894766986, 11.2297935}, //
+
60081 {0.89428699, 11.2295218}, //
+
60082 {0.893848002, 11.229207}, //
+
60083 {0.893450022, 11.2288504}, //
+
60084 {0.89309299, 11.2284718}, //
+
60085 {0.892777979, 11.2280941}, //
+
60086 {0.892506003, 11.2277174}, //
+
60087 {0.892274976, 11.2273388}, //
+
60088 {0.892086029, 11.2269611}, //
+
60089 {0.891938984, 11.2265825}, //
+
60090 {0.891834021, 11.2262058}, //
+
60091 {0.891771019, 11.2258282}, //
+
60092 {0.891749978, 11.2254496}, //
+
60093 {0.891749978, 11.2203999}, //
+
60094 {0.892525971, 11.2189102}, //
+
60095 {0.893342972, 11.2174616}, //
+
60096 {0.894200027, 11.2160559}, //
+
60097 {0.895097971, 11.2146912}, //
+
60098 {0.896036983, 11.2133694}, //
+
60099 {0.897017002, 11.2120886}, //
+
60100 {0.898037016, 11.2108507}, //
+
60101 {0.899097979, 11.2096539}, //
+
60102 {0.900200009, 11.2084999}, //
+
60103 {0.901311994, 11.2073774}, //
+
60104 {0.902383029, 11.2062531}, //
+
60105 {0.903410971, 11.2051277}, //
+
60106 {0.904398024, 11.2040014}, //
+
60107 {0.905341983, 11.2028732}, //
+
60108 {0.90624398, 11.2017441}, //
+
60109 {0.907105029, 11.200614}, //
+
60110 {0.907922983, 11.1994829}, //
+
60111 {0.908699989, 11.19835}, //
+
60112 {0.910043001, 11.1963348}, //
+
60113 {0.91058898, 11.1955166}, //
+
60114 {0.912100017, 11.1932497}, //
+
60115 });
+
60116 polys.push_back({
+
60117 {4.36293983, 11.2322712}, //
+
60118 {4.3605299, 11.232439}, //
+
60119 {4.35816002, 11.2327747}, //
+
60120 {4.35584021, 11.2332783}, //
+
60121 {4.35354996, 11.2339497}, //
+
60122 {4.35208988, 11.2339706}, //
+
60123 {4.35071993, 11.2340336}, //
+
60124 {4.34942007, 11.2341394}, //
+
60125 {4.34820986, 11.2342863}, //
+
60126 {4.34708023, 11.2344751}, //
+
60127 {4.34603977, 11.2347059}, //
+
60128 {4.3450799, 11.2349777}, //
+
60129 {4.34420013, 11.2352934}, //
+
60130 {4.3434, 11.2356501}, //
+
60131 {4.34263992, 11.2360067}, //
+
60132 {4.34188986, 11.2363224}, //
+
60133 {4.34112978, 11.2365942}, //
+
60134 {4.34038019, 11.236825}, //
+
60135 {4.33962011, 11.2370138}, //
+
60136 {4.33887005, 11.2371607}, //
+
60137 {4.33810997, 11.2372656}, //
+
60138 {4.33735991, 11.2373285}, //
+
60139 {4.33659983, 11.2373505}, //
+
60140 {4.33588982, 11.2373714}, //
+
60141 {4.33525991, 11.2374344}, //
+
60142 {4.33471012, 11.2375393}, //
+
60143 {4.33424997, 11.2376862}, //
+
60144 {4.33386993, 11.237875}, //
+
60145 {4.33358002, 11.2381058}, //
+
60146 {4.33337021, 11.2383776}, //
+
60147 {4.33324003, 11.2386932}, //
+
60148 {4.33319998, 11.2390499}, //
+
60149 {4.33319998, 11.2407503}, //
+
60150 {4.34484005, 11.2407923}, //
+
60151 {4.35563993, 11.2409182}, //
+
60152 {4.36560011, 11.241128}, //
+
60153 {4.37473011, 11.2414217}, //
+
60154 {4.38300991, 11.2417994}, //
+
60155 {4.39047003, 11.2422609}, //
+
60156 {4.39707994, 11.2428074}, //
+
60157 {4.40286016, 11.2434359}, //
+
60158 {4.4078002, 11.2441502}, //
+
60159 {4.40634012, 11.2434359}, //
+
60160 {4.40497017, 11.2428074}, //
+
60161 {4.40366983, 11.2422609}, //
+
60162 {4.4024601, 11.2417994}, //
+
60163 {4.40132999, 11.2414217}, //
+
60164 {4.40029001, 11.241128}, //
+
60165 {4.39933014, 11.2409182}, //
+
60166 {4.3984499, 11.2407923}, //
+
60167 {4.39764977, 11.2407503}, //
+
60168 {4.39535999, 11.239994}, //
+
60169 {4.39304018, 11.2392387}, //
+
60170 {4.39066982, 11.2384834}, //
+
60171 {4.38825989, 11.2377281}, //
+
60172 {4.3858099, 11.2369719}, //
+
60173 {4.38331985, 11.2362165}, //
+
60174 {4.38079023, 11.2354612}, //
+
60175 {4.37821007, 11.2347059}, //
+
60176 {4.37559986, 11.2339497}, //
+
60177 {4.37299013, 11.2332783}, //
+
60178 {4.37040997, 11.2327747}, //
+
60179 {4.36787987, 11.232439}, //
+
60180 {4.36538982, 11.2322712}, //
+
60181 });
+
60182 polys.push_back({
+
60183 {4.33619022, 11.1661921}, //
+
60184 {4.33230019, 11.1663179}, //
+
60185 {4.32832003, 11.1665277}, //
+
60186 {4.32426023, 11.1668224}, //
+
60187 {4.32011986, 11.1671991}, //
+
60188 {4.31588984, 11.1676607}, //
+
60189 {4.31158018, 11.1682072}, //
+
60190 {4.30717993, 11.1688356}, //
+
60191 {4.30270004, 11.1695499}, //
+
60192 {4.29976988, 11.1702528}, //
+
60193 {4.29700994, 11.1708727}, //
+
60194 {4.29441977, 11.1714106}, //
+
60195 {4.2919898, 11.1718664}, //
+
60196 {4.28973007, 11.1722383}, //
+
60197 {4.28763008, 11.1725283}, //
+
60198 {4.28570986, 11.1727352}, //
+
60199 {4.28393984, 11.1728592}, //
+
60200 {4.28235006, 11.1729002}, //
+
60201 {4.25524998, 11.1729002}, //
+
60202 {4.26089001, 11.1750412}, //
+
60203 {4.26729012, 11.1769304}, //
+
60204 {4.27443981, 11.1785669}, //
+
60205 {4.28235006, 11.1799517}, //
+
60206 {4.2910099, 11.1810846}, //
+
60207 {4.30042982, 11.1819668}, //
+
60208 {4.3105998, 11.1825962}, //
+
60209 {4.32151985, 11.1829739}, //
+
60210 {4.33319998, 11.1830997}, //
+
60211 {4.33836985, 11.1824493}, //
+
60212 {4.34333992, 11.1820087}, //
+
60213 {4.34809017, 11.181778}, //
+
60214 {4.35263014, 11.181757}, //
+
60215 {4.35696983, 11.1819458}, //
+
60216 {4.36109018, 11.1823444}, //
+
60217 {4.36499977, 11.1829529}, //
+
60218 {4.36871004, 11.1837721}, //
+
60219 {4.37220001, 11.1848001}, //
+
60220 {4.37552977, 11.186038}, //
+
60221 {4.37872982, 11.1874838}, //
+
60222 {4.38181019, 11.1891394}, //
+
60223 {4.3847599, 11.1910019}, //
+
60224 {4.38758993, 11.1930752}, //
+
60225 {4.39028978, 11.1953564}, //
+
60226 {4.39286995, 11.1978455}, //
+
60227 {4.39531994, 11.2005434}, //
+
60228 {4.39764977, 11.2034502}, //
+
60229 {4.39846992, 11.2041836}, //
+
60230 {4.39940977, 11.204875}, //
+
60231 {4.40047979, 11.2055216}, //
+
60232 {4.40166998, 11.2061272}, //
+
60233 {4.40298986, 11.2066879}, //
+
60234 {4.40442991, 11.2072058}, //
+
60235 {4.40599012, 11.2076797}, //
+
60236 {4.40768003, 11.2081118}, //
+
60237 {4.40950012, 11.2084999}, //
+
60238 {4.41134977, 11.2088776}, //
+
60239 {4.41310978, 11.2092562}, //
+
60240 {4.41478014, 11.2096329}, //
+
60241 {4.41636992, 11.2100105}, //
+
60242 {4.41788006, 11.2103891}, //
+
60243 {4.41930008, 11.2107668}, //
+
60244 {4.42063999, 11.2111444}, //
+
60245 {4.42188978, 11.2115221}, //
+
60246 {4.42304993, 11.2118998}, //
+
60247 {4.42418003, 11.2122364}, //
+
60248 {4.42532015, 11.2124882}, //
+
60249 {4.42644978, 11.212656}, //
+
60250 {4.42757988, 11.2127399}, //
+
60251 {4.42872, 11.2127399}, //
+
60252 {4.4298501, 11.212656}, //
+
60253 {4.43098021, 11.2124882}, //
+
60254 {4.43211985, 11.2122364}, //
+
60255 {4.43324995, 11.2118998}, //
+
60256 {4.43431997, 11.2115431}, //
+
60257 {4.43607998, 11.2109556}, //
+
60258 {4.4377799, 11.2103891}, //
+
60259 {4.43809986, 11.2102842}, //
+
60260 {4.43829012, 11.2102213}, //
+
60261 {4.4383502, 11.2102003}, //
+
60262 {4.4366498, 11.2102003}, //
+
60263 {4.43628979, 11.2101793}, //
+
60264 {4.43597984, 11.2101164}, //
+
60265 {4.43570995, 11.2100105}, //
+
60266 {4.4354701, 11.2098637}, //
+
60267 {4.43528986, 11.2096748}, //
+
60268 {4.43514013, 11.209444}, //
+
60269 {4.43502998, 11.2091722}, //
+
60270 {4.4349699, 11.2088566}, //
+
60271 {4.43494987, 11.2084999}, //
+
60272 {4.43492985, 11.2081537}, //
+
60273 {4.43486977, 11.2078476}, //
+
60274 {4.43476009, 11.2075834}, //
+
60275 {4.43460989, 11.2073593}, //
+
60276 {4.43443012, 11.2071762}, //
+
60277 {4.4341898, 11.2070332}, //
+
60278 {4.43391991, 11.2069311}, //
+
60279 {4.43360996, 11.2068701}, //
+
60280 {4.43324995, 11.2068501}, //
+
60281 {4.43286991, 11.2068291}, //
+
60282 {4.43248987, 11.2067661}, //
+
60283 {4.43211985, 11.2066612}, //
+
60284 {4.43173981, 11.2065144}, //
+
60285 {4.43135977, 11.2063246}, //
+
60286 {4.43098021, 11.2060938}, //
+
60287 {4.43061018, 11.205822}, //
+
60288 {4.43023014, 11.2055073}, //
+
60289 {4.4298501, 11.2051497}, //
+
60290 {4.42900991, 11.2043104}, //
+
60291 {4.42853022, 11.2038279}, //
+
60292 {4.42744017, 11.2027359}, //
+
60293 {4.42682981, 11.2021284}, //
+
60294 {4.42617989, 11.2014771}, //
+
60295 {4.42547989, 11.2007847}, //
+
60296 {4.42474985, 11.2000504}, //
+
60297 {4.42156982, 11.197773}, //
+
60298 {4.41805983, 11.1954517}, //
+
60299 {4.41420984, 11.1930885}, //
+
60300 {4.41001987, 11.1906824}, //
+
60301 {4.40549994, 11.1882324}, //
+
60302 {4.40064001, 11.1857386}, //
+
60303 {4.39545012, 11.1832018}, //
+
60304 {4.38992023, 11.1806231}, //
+
60305 {4.38404989, 11.1780005}, //
+
60306 {4.37814999, 11.1755133}, //
+
60307 {4.37250996, 11.1733189}, //
+
60308 {4.36710978, 11.1714172}, //
+
60309 {4.36196995, 11.1698074}, //
+
60310 {4.35706997, 11.1684914}, //
+
60311 {4.35242987, 11.1674671}, //
+
60312 {4.34803009, 11.1667347}, //
+
60313 {4.34389019, 11.166296}, //
+
60314 {4.34000015, 11.1661501}, //
+
60315 });
+
60316 polys.push_back({
+
60317 {4.25497007, 11.0930815}, //
+
60318 {4.25828981, 11.0946541}, //
+
60319 {4.26182985, 11.0962667}, //
+
60320 {4.26557016, 11.0979204}, //
+
60321 {4.26952982, 11.0996151}, //
+
60322 {4.27369022, 11.1013498}, //
+
60323 {4.27806997, 11.1031256}, //
+
60324 {4.28264999, 11.1049433}, //
+
60325 {4.28744984, 11.1068001}, //
+
60326 {4.29231024, 11.1086254}, //
+
60327 {4.29708004, 11.110323}, //
+
60328 {4.30177021, 11.1118937}, //
+
60329 {4.3063798, 11.1133385}, //
+
60330 {4.31090021, 11.1146545}, //
+
60331 {4.31534004, 11.1158438}, //
+
60332 {4.31969023, 11.1169071}, //
+
60333 {4.32395983, 11.1178417}, //
+
60334 {4.3281498, 11.1186504}, //
+
60335 {4.33219004, 11.1193638}, //
+
60336 {4.33601999, 11.1199932}, //
+
60337 {4.33964014, 11.1205387}, //
+
60338 {4.34305, 11.1210012}, //
+
60339 {4.34625006, 11.1213779}, //
+
60340 {4.34923983, 11.1216717}, //
+
60341 {4.35201979, 11.1218824}, //
+
60342 {4.35458994, 11.1220083}, //
+
60343 {4.35694981, 11.1220503}, //
+
60344 {4.35859013, 11.1221752}, //
+
60345 {4.36046982, 11.122551}, //
+
60346 {4.36260986, 11.1231775}, //
+
60347 {4.36499977, 11.1240549}, //
+
60348 {4.36764002, 11.1251831}, //
+
60349 {4.37053013, 11.1265612}, //
+
60350 {4.3736701, 11.12819}, //
+
60351 {4.37705994, 11.1300697}, //
+
60352 {4.38070011, 11.1322002}, //
+
60353 {4.38446999, 11.1344872}, //
+
60354 {4.38822985, 11.1368151}, //
+
60355 {4.3920002, 11.139183}, //
+
60356 {4.39577007, 11.141593}, //
+
60357 {4.39952993, 11.144043}, //
+
60358 {4.40329981, 11.146533}, //
+
60359 {4.40707016, 11.149065}, //
+
60360 {4.41083002, 11.1516371}, //
+
60361 {4.4145999, 11.1542501}, //
+
60362 {4.41820002, 11.1567898}, //
+
60363 {4.42146015, 11.1591187}, //
+
60364 {4.42438984, 11.1612387}, //
+
60365 {4.42699003, 11.1631489}, //
+
60366 {4.42924976, 11.1648493}, //
+
60367 {4.43118, 11.1663389}, //
+
60368 {4.43276978, 11.1676188}, //
+
60369 {4.43403006, 11.1686897}, //
+
60370 {4.43494987, 11.1695499}, //
+
60371 {4.43572998, 11.169591}, //
+
60372 {4.43654013, 11.1697149}, //
+
60373 {4.43739986, 11.1699219}, //
+
60374 {4.43830013, 11.1702118}, //
+
60375 {4.43923998, 11.1705837}, //
+
60376 {4.44021988, 11.1710386}, //
+
60377 {4.44123983, 11.1715775}, //
+
60378 {4.44229984, 11.1721973}, //
+
60379 {4.44339991, 11.1729002}, //
+
60380 {4.44453001, 11.1736345}, //
+
60381 {4.44566011, 11.1743269}, //
+
60382 {4.44679022, 11.1749783}, //
+
60383 {4.44791985, 11.1755857}, //
+
60384 {4.44904995, 11.1761532}, //
+
60385 {4.45018005, 11.1766777}, //
+
60386 {4.45130014, 11.1771603}, //
+
60387 {4.45242977, 11.1776009}, //
+
60388 {4.45354986, 11.1780005}, //
+
60389 {4.45465994, 11.1783571}, //
+
60390 {4.45572996, 11.1786718}, //
+
60391 {4.45675993, 11.1789436}, //
+
60392 {4.45774984, 11.1791754}, //
+
60393 {4.45869017, 11.1793642}, //
+
60394 {4.45958996, 11.1795111}, //
+
60395 {4.46045017, 11.179616}, //
+
60396 {4.46126986, 11.1796789}, //
+
60397 {4.46204996, 11.1796999}, //
+
60398 {4.46275997, 11.1796579}, //
+
60399 {4.46338987, 11.1795321}, //
+
60400 {4.46394014, 11.1793222}, //
+
60401 {4.46439981, 11.1790276}, //
+
60402 {4.46477985, 11.1786509}, //
+
60403 {4.46506977, 11.1781893}, //
+
60404 {4.46528006, 11.1776428}, //
+
60405 {4.46541023, 11.1770144}, //
+
60406 {4.46544981, 11.1763}, //
+
60407 {4.46532011, 11.1755028}, //
+
60408 {4.46495008, 11.1746225}, //
+
60409 {4.46432018, 11.1736612}, //
+
60410 {4.46344995, 11.172616}, //
+
60411 {4.46231985, 11.1714878}, //
+
60412 {4.46093988, 11.1702776}, //
+
60413 {4.45931005, 11.1689854}, //
+
60414 {4.45742989, 11.1676092}, //
+
60415 {4.45529985, 11.1661501}, //
+
60416 {4.44926023, 11.1601057}, //
+
60417 {4.44794989, 11.1588039}, //
+
60418 {4.44656992, 11.1574192}, //
+
60419 {4.44509983, 11.1559496}, //
+
60420 {4.44130993, 11.1529589}, //
+
60421 {4.43747997, 11.1500092}, //
+
60422 {4.43360996, 11.1471004}, //
+
60423 {4.4296999, 11.1442308}, //
+
60424 {4.42573977, 11.1414042}, //
+
60425 {4.42174006, 11.1386166}, //
+
60426 {4.41769981, 11.13587}, //
+
60427 {4.41362, 11.1331654}, //
+
60428 {4.40950012, 11.1304998}, //
+
60429 {4.40525007, 11.1278877}, //
+
60430 {4.40079021, 11.1253166}, //
+
60431 {4.39613008, 11.1227894}, //
+
60432 {4.39125013, 11.1203022}, //
+
60433 {4.38616991, 11.1178579}, //
+
60434 {4.38087988, 11.1154556}, //
+
60435 {4.37538004, 11.1130953}, //
+
60436 {4.36966991, 11.1107769}, //
+
60437 {4.36374998, 11.1084995}, //
+
60438 {4.35915995, 11.1077442}, //
+
60439 {4.35445023, 11.1069889}, //
+
60440 {4.34961987, 11.1062326}, //
+
60441 {4.34464979, 11.1054783}, //
+
60442 {4.33956003, 11.104722}, //
+
60443 {4.33435011, 11.1039667}, //
+
60444 {4.32901001, 11.1032114}, //
+
60445 {4.32354021, 11.1024561}, //
+
60446 {4.31794977, 11.1016998}, //
+
60447 {4.31238985, 11.100955}, //
+
60448 {4.30699015, 11.1002092}, //
+
60449 {4.30177021, 11.0994616}, //
+
60450 {4.29671001, 11.098712}, //
+
60451 {4.29181004, 11.0979624}, //
+
60452 {4.28707981, 11.0972109}, //
+
60453 {4.28251982, 11.0964584}, //
+
60454 {4.27813005, 11.095705}, //
+
60455 {4.27390003, 11.0949497}, //
+
60456 {4.2699399, 11.0942364}, //
+
60457 {4.26635981, 11.0936069}, //
+
60458 {4.26316023, 11.0930614}, //
+
60459 {4.2603302, 11.0925999}, //
+
60460 {4.25788021, 11.0922213}, //
+
60461 {4.25580978, 11.0919275}, //
+
60462 {4.25410986, 11.0917177}, //
+
60463 {4.25278997, 11.0915918}, //
+
60464 {4.25185013, 11.0915499}, //
+
60465 });
+
60466 polys.push_back({
+
60467 {4.41420984, 11.0781775}, //
+
60468 {4.42069006, 11.0815897}, //
+
60469 {4.42709017, 11.0855455}, //
+
60470 {4.43341017, 11.090044}, //
+
60471 {4.43964005, 11.0950861}, //
+
60472 {4.44578981, 11.1006718}, //
+
60473 {4.45184994, 11.1068001}, //
+
60474 {4.4577198, 11.1131058}, //
+
60475 {4.46325016, 11.1191998}, //
+
60476 {4.46844006, 11.125083}, //
+
60477 {4.47330999, 11.1307564}, //
+
60478 {4.47782993, 11.1362171}, //
+
60479 {4.48202991, 11.1414671}, //
+
60480 {4.48588991, 11.1465063}, //
+
60481 {4.48940992, 11.1513329}, //
+
60482 {4.49259996, 11.1559496}, //
+
60483 {4.49323988, 11.1550999}, //
+
60484 {4.49366999, 11.1540394}, //
+
60485 {4.49388981, 11.1527672}, //
+
60486 {4.49390984, 11.1512833}, //
+
60487 {4.49371004, 11.1495886}, //
+
60488 {4.49330997, 11.1476831}, //
+
60489 {4.4927001, 11.1455669}, //
+
60490 {4.49187994, 11.143239}, //
+
60491 {4.49084997, 11.1407003}, //
+
60492 {4.48965979, 11.1380463}, //
+
60493 {4.48834991, 11.1353493}, //
+
60494 {4.48691988, 11.1326113}, //
+
60495 {4.48535013, 11.1298313}, //
+
60496 {4.48366022, 11.1270094}, //
+
60497 {4.48185015, 11.1241436}, //
+
60498 {4.4799099, 11.1212378}, //
+
60499 {4.47783995, 11.1182899}, //
+
60500 {4.47564983, 11.1153002}, //
+
60501 {4.47390985, 11.112299}, //
+
60502 {4.47171021, 11.1093416}, //
+
60503 {4.46903992, 11.1064281}, //
+
60504 {4.46591997, 11.1035566}, //
+
60505 {4.46233988, 11.100729}, //
+
60506 {4.4582901, 11.0979443}, //
+
60507 {4.45379019, 11.0952034}, //
+
60508 {4.44883013, 11.0925045}, //
+
60509 {4.44339991, 11.0898504}, //
+
60510 {4.43770981, 11.0872583}, //
+
60511 {4.43194008, 11.0847492}, //
+
60512 {4.42608023, 11.0823221}, //
+
60513 {4.42013979, 11.079978}, //
+
60514 {4.41411018, 11.0777168}, //
+
60515 {4.40888977, 11.0758572}, //
+
60516 });
+
60517 polys.push_back({
+
60518 {1.06465006, 11.1322498}, //
+
60519 {1.0654, 11.1324387}, //
+
60520 {1.06597996, 11.1325855}, //
+
60521 {1.06673002, 11.1327753}, //
+
60522 {1.06764996, 11.1330061}, //
+
60523 {1.06998003, 11.1335926}, //
+
60524 {1.07140005, 11.1339502}, //
+
60525 {1.07290995, 11.1343269}, //
+
60526 {1.07441998, 11.1347027}, //
+
60527 {1.07593, 11.1350784}, //
+
60528 {1.07744002, 11.1354513}, //
+
60529 {1.07895994, 11.1358232}, //
+
60530 {1.08046997, 11.1361942}, //
+
60531 {1.08197999, 11.1365643}, //
+
60532 {1.08349001, 11.1369333}, //
+
60533 {1.08500004, 11.1372995}, //
+
60534 {1.08650994, 11.1376572}, //
+
60535 {1.08801997, 11.1379719}, //
+
60536 {1.08952999, 11.1382437}, //
+
60537 {1.09103, 11.1384754}, //
+
60538 {1.09254003, 11.1386642}, //
+
60539 {1.09404004, 11.1388111}, //
+
60540 {1.09554994, 11.138916}, //
+
60541 {1.09704995, 11.138979}, //
+
60542 {1.09854996, 11.1389999}, //
+
60543 {1.10005999, 11.1396933}, //
+
60544 {1.10157001, 11.1402588}, //
+
60545 {1.10308003, 11.1407003}, //
+
60546 {1.10458004, 11.1410151}, //
+
60547 {1.10608995, 11.1412039}, //
+
60548 {1.10758996, 11.1412668}, //
+
60549 {1.10909998, 11.1412039}, //
+
60550 {1.11059999, 11.1410151}, //
+
60551 {1.11210001, 11.1407003}, //
+
60552 {1.11356997, 11.1403427}, //
+
60553 {1.11494994, 11.140028}, //
+
60554 {1.11626005, 11.1397562}, //
+
60555 {1.11747003, 11.1395254}, //
+
60556 {1.11861002, 11.1393356}, //
+
60557 {1.11966002, 11.1391888}, //
+
60558 {1.12062001, 11.1390839}, //
+
60559 {1.12150002, 11.1390209}, //
+
60560 {1.12230003, 11.1389999}, //
+
60561 {1.12527001, 11.1389589}, //
+
60562 {1.12816, 11.138835}, //
+
60563 {1.13095999, 11.138628}, //
+
60564 {1.13367999, 11.1383381}, //
+
60565 {1.13631999, 11.1379662}, //
+
60566 {1.13888001, 11.1375113}, //
+
60567 {1.14135003, 11.1369734}, //
+
60568 {1.14374006, 11.1363525}, //
+
60569 {1.14604998, 11.1356497}, //
+
60570 {1.16129994, 11.1356497}, //
+
60571 {1.16241002, 11.1356907}, //
+
60572 {1.16348004, 11.1358147}, //
+
60573 {1.16451001, 11.1360216}, //
+
60574 {1.16549003, 11.1363115}, //
+
60575 {1.16643, 11.1366844}, //
+
60576 {1.16732001, 11.1371393}, //
+
60577 {1.16816998, 11.1376772}, //
+
60578 {1.16898, 11.1382971}, //
+
60579 {1.16974998, 11.1389999}, //
+
60580 {1.17995, 11.1389999}, //
+
60581 {1.17989004, 11.138958}, //
+
60582 {1.17838001, 11.1379509}, //
+
60583 {1.17685997, 11.1369429}, //
+
60584 {1.17592001, 11.1363144}, //
+
60585 {1.17484999, 11.1356001}, //
+
60586 {1.17367005, 11.1348343}, //
+
60587 {1.17242002, 11.1340246}, //
+
60588 {1.17106998, 11.133172}, //
+
60589 {1.16964996, 11.1322765}, //
+
60590 {1.16813004, 11.1313381}, //
+
60591 {1.16654003, 11.1303558}, //
+
60592 {1.16486001, 11.1293297}, //
+
60593 {1.1631, 11.1282616}, //
+
60594 {1.16125, 11.1271496}, //
+
60595 {1.15930998, 11.1260796}, //
+
60596 {1.15724003, 11.1251354}, //
+
60597 {1.15505004, 11.1243172}, //
+
60598 {1.15272999, 11.1236238}, //
+
60599 {1.15029001, 11.1230574}, //
+
60600 {1.14771998, 11.1226168}, //
+
60601 {1.14502001, 11.1223021}, //
+
60602 {1.14219999, 11.1221132}, //
+
60603 {1.13925004, 11.1220503}, //
+
60604 {1.11889994, 11.1220503}, //
+
60605 {1.11741996, 11.1220293}, //
+
60606 {1.11598003, 11.1219664}, //
+
60607 {1.11458004, 11.1218615}, //
+
60608 {1.11322999, 11.1217136}, //
+
60609 {1.11190999, 11.1215248}, //
+
60610 {1.11063004, 11.121294}, //
+
60611 {1.10940003, 11.1210222}, //
+
60612 {1.10819995, 11.1207066}, //
+
60613 {1.10704994, 11.1203499}, //
+
60614 {1.10590005, 11.1199522}, //
+
60615 {1.10469997, 11.1195126}, //
+
60616 {1.10345995, 11.1190329}, //
+
60617 {1.10218, 11.1185131}, //
+
60618 {1.10086, 11.1179523}, //
+
60619 {1.09949005, 11.1173496}, //
+
60620 {1.09809005, 11.1167068}, //
+
60621 {1.09663999, 11.116024}, //
+
60622 {1.09514999, 11.1153002}, //
+
60623 {1.09223998, 11.1138096}, //
+
60624 {1.08955002, 11.1123619}, //
+
60625 {1.08705997, 11.1109562}, //
+
60626 {1.08476996, 11.1095905}, //
+
60627 {1.08270001, 11.1082687}, //
+
60628 {1.08083999, 11.1069889}, //
+
60629 {1.07918, 11.105751}, //
+
60630 {1.07773995, 11.1045542}, //
+
60631 {1.07650006, 11.1034002}, //
+
60632 {1.07300997, 11.0999088}, //
+
60633 {1.07245004, 11.0993471}, //
+
60634 {1.07201004, 11.0989113}, //
+
60635 {1.07169998, 11.0985994}, //
+
60636 {1.07145, 11.0983496}, //
+
60637 });
+
60638 polys.push_back({
+
60639 {0.912050009, 11.0610504}, //
+
60640 {0.911284029, 11.0610914}, //
+
60641 {0.910475016, 11.0612154}, //
+
60642 {0.909622014, 11.0614223}, //
+
60643 {0.90872699, 11.0617113}, //
+
60644 {0.907787979, 11.0620842}, //
+
60645 {0.906805992, 11.0625391}, //
+
60646 {0.905780017, 11.063077}, //
+
60647 {0.904712021, 11.0636969}, //
+
60648 {0.903599977, 11.0643997}, //
+
60649 {0.902487993, 11.065156}, //
+
60650 {0.901417017, 11.0659113}, //
+
60651 {0.900389016, 11.0666666}, //
+
60652 {0.899402022, 11.0674219}, //
+
60653 {0.898458004, 11.0681782}, //
+
60654 {0.897556007, 11.0689335}, //
+
60655 {0.896695018, 11.0696888}, //
+
60656 {0.895877004, 11.0704441}, //
+
60657 {0.895099998, 11.0712004}, //
+
60658 {0.894354999, 11.0719557}, //
+
60659 {0.893608987, 11.072711}, //
+
60660 {0.892861009, 11.0734663}, //
+
60661 {0.892112017, 11.0742226}, //
+
60662 {0.891362011, 11.0749779}, //
+
60663 {0.890610993, 11.0757332}, //
+
60664 {0.889859021, 11.0764885}, //
+
60665 {0.889105022, 11.0772448}, //
+
60666 {0.88835001, 11.0780001}, //
+
60667 {0.88835001, 11.0915499}, //
+
60668 {0.878149986, 11.0915499}, //
+
60669 {0.871371984, 11.0909204}, //
+
60670 {0.864593983, 11.0905428}, //
+
60671 {0.857816994, 11.0904169}, //
+
60672 {0.851038992, 11.0905428}, //
+
60673 {0.844260991, 11.0909204}, //
+
60674 {0.837482989, 11.0915499}, //
+
60675 {0.830706, 11.0924311}, //
+
60676 {0.823927999, 11.093565}, //
+
60677 {0.817149997, 11.0949497}, //
+
60678 {0.808902979, 11.0969973}, //
+
60679 {0.800740004, 11.0986261}, //
+
60680 {0.792661011, 11.0998392}, //
+
60681 {0.784666002, 11.1006336}, //
+
60682 {0.776754975, 11.1010122}, //
+
60683 {0.768927991, 11.1009722}, //
+
60684 {0.76118499, 11.1005154}, //
+
60685 {0.753525019, 11.0996418}, //
+
60686 {0.745949984, 11.0983496}, //
+
60687 {0.743683994, 11.0975523}, //
+
60688 {0.741419017, 11.0966711}, //
+
60689 {0.739156008, 11.095706}, //
+
60690 {0.736892998, 11.094656}, //
+
60691 {0.734632015, 11.093523}, //
+
60692 {0.732371986, 11.0923052}, //
+
60693 {0.730113983, 11.0910044}, //
+
60694 {0.72785598, 11.0896187}, //
+
60695 {0.725600004, 11.08815}, //
+
60696 {0.723291993, 11.0873947}, //
+
60697 {0.720901012, 11.0866385}, //
+
60698 {0.718428016, 11.0858831}, //
+
60699 {0.71587199, 11.0851278}, //
+
60700 {0.713232994, 11.0843725}, //
+
60701 {0.710511029, 11.0836163}, //
+
60702 {0.707706988, 11.0828609}, //
+
60703 {0.704819977, 11.0821056}, //
+
60704 {0.701849997, 11.0813503}, //
+
60705 {0.69888097, 11.0806885}, //
+
60706 {0.695995986, 11.0801945}, //
+
60707 {0.693193972, 11.0798664}, //
+
60708 {0.690477014, 11.0797052}, //
+
60709 {0.687843978, 11.079711}, //
+
60710 {0.685293972, 11.0798836}, //
+
60711 {0.682829022, 11.0802221}, //
+
60712 {0.680447996, 11.0807276}, //
+
60713 {0.678149998, 11.0813999}, //
+
60714 {0.679651022, 11.0814409}, //
+
60715 {0.681151986, 11.0815659}, //
+
60716 {0.68265599, 11.0817719}, //
+
60717 {0.684159994, 11.0820618}, //
+
60718 {0.685665011, 11.0824337}, //
+
60719 {0.687171996, 11.0828886}, //
+
60720 {0.688679993, 11.0834265}, //
+
60721 {0.690190017, 11.0840473}, //
+
60722 {0.691699982, 11.0847502}, //
+
60723 {0.69471103, 11.0855265}, //
+
60724 {0.697722018, 11.0863447}, //
+
60725 {0.700733006, 11.0872059}, //
+
60726 {0.703743994, 11.0881081}, //
+
60727 {0.706755996, 11.0890522}, //
+
60728 {0.709766984, 11.0900393}, //
+
60729 {0.712777972, 11.0910673}, //
+
60730 {0.71578902, 11.0921373}, //
+
60731 {0.718800008, 11.0932503}, //
+
60732 {0.721737981, 11.0944033}, //
+
60733 {0.724506021, 11.0955982}, //
+
60734 {0.727105975, 11.0968332}, //
+
60735 {0.729535997, 11.0981092}, //
+
60736 {0.73179698, 11.0994263}, //
+
60737 {0.733888984, 11.1007833}, //
+
60738 {0.735812008, 11.1021814}, //
+
60739 {0.737564981, 11.1036196}, //
+
60740 {0.739149988, 11.1050997}, //
+
60741 {0.740010023, 11.1059389}, //
+
60742 {0.741078019, 11.1069441}, //
+
60743 {0.742356002, 11.1081171}, //
+
60744 {0.743840992, 11.1094561}, //
+
60745 {0.745536029, 11.110961}, //
+
60746 {0.747439027, 11.1126328}, //
+
60747 {0.749550998, 11.1144724}, //
+
60748 {0.75187099, 11.116478}, //
+
60749 {0.754400015, 11.1186504}, //
+
60750 {0.757085979, 11.1208534}, //
+
60751 {0.759854019, 11.1229286}, //
+
60752 {0.762705982, 11.1248779}, //
+
60753 {0.76564002, 11.1266994}, //
+
60754 {0.768656015, 11.1283941}, //
+
60755 {0.771755993, 11.129961}, //
+
60756 {0.774937987, 11.1314011}, //
+
60757 {0.778201997, 11.1327143}, //
+
60758 {0.78154999, 11.1338997}, //
+
60759 {0.784793019, 11.1349287}, //
+
60760 {0.787742972, 11.1357489}, //
+
60761 {0.790400028, 11.1363611}, //
+
60762 {0.792765021, 11.1367636}, //
+
60763 {0.794836998, 11.1369591}, //
+
60764 {0.796616971, 11.1369438}, //
+
60765 {0.798103988, 11.1367216}, //
+
60766 {0.799297988, 11.1362896}, //
+
60767 {0.800199986, 11.1356497}, //
+
60768 {0.806769013, 11.134223}, //
+
60769 {0.812919021, 11.1329641}, //
+
60770 {0.818650007, 11.1318722}, //
+
60771 {0.823962986, 11.130949}, //
+
60772 {0.828857005, 11.1301928}, //
+
60773 {0.833333015, 11.1296062}, //
+
60774 {0.837391019, 11.1291857}, //
+
60775 {0.841030002, 11.1289339}, //
+
60776 {0.844250023, 11.12885}, //
+
60777 {0.859499991, 11.12885}, //
+
60778 {0.860611975, 11.1287661}, //
+
60779 {0.861683011, 11.1285143}, //
+
60780 {0.862711012, 11.1280937}, //
+
60781 {0.863698006, 11.1275072}, //
+
60782 {0.864642024, 11.1267509}, //
+
60783 {0.865544021, 11.1258278}, //
+
60784 {0.86640501, 11.1247358}, //
+
60785 {0.867223024, 11.123477}, //
+
60786 {0.867999971, 11.1220503}, //
+
60787 {0.869468987, 11.121336}, //
+
60788 {0.870851994, 11.1207066}, //
+
60789 {0.872150004, 11.1201611}, //
+
60790 {0.873363018, 11.1196985}, //
+
60791 {0.874490976, 11.1193218}, //
+
60792 {0.875532985, 11.1190281}, //
+
60793 {0.87649101, 11.1188183}, //
+
60794 {0.877363026, 11.1186924}, //
+
60795 {0.878149986, 11.1186504}, //
+
60796 {0.878149986, 11.1153002}, //
+
60797 {0.878485978, 11.1146278}, //
+
60798 {0.87984997, 11.1119003}, //
+
60799 {0.880290985, 11.1111441}, //
+
60800 {0.880856991, 11.1103888}, //
+
60801 {0.881550014, 11.1096334}, //
+
60802 {0.882368982, 11.1088781}, //
+
60803 {0.883313, 11.1081219}, //
+
60804 {0.884383023, 11.1073666}, //
+
60805 {0.885580003, 11.1066113}, //
+
60806 {0.886901975, 11.1058559}, //
+
60807 {0.88835001, 11.1050997}, //
+
60808 {0.891277015, 11.1036615}, //
+
60809 {0.894035995, 11.1023493}, //
+
60810 {0.896628022, 11.101161}, //
+
60811 {0.899051011, 11.1000977}, //
+
60812 {0.901306987, 11.0991583}, //
+
60813 {0.903393984, 11.0983448}, //
+
60814 {0.905314028, 11.0976553}, //
+
60815 {0.907065988, 11.0970898}, //
+
60816 {0.908649981, 11.0966501}, //
+
60817 {0.914107025, 11.0952854}, //
+
60818 {0.915113986, 11.0950336}, //
+
60819 {0.915365994, 11.0949707}, //
+
60820 {0.915449977, 11.0949497}, //
+
60821 {0.915449977, 11.0610504}, //
+
60822 });
+
60823 polys.push_back({
+
60824 {1.25904, 11.0441837}, //
+
60825 {1.25679004, 11.0444336}, //
+
60826 {1.25452995, 11.0448503}, //
+
60827 {1.25226998, 11.045433}, //
+
60828 {1.25001001, 11.0461836}, //
+
60829 {1.24774003, 11.0471001}, //
+
60830 {1.24547994, 11.0481834}, //
+
60831 {1.24321997, 11.0494337}, //
+
60832 {1.24094999, 11.0508499}, //
+
60833 {1.23714006, 11.0515633}, //
+
60834 {1.23325002, 11.0521936}, //
+
60835 {1.22926998, 11.0527391}, //
+
60836 {1.22520995, 11.0532007}, //
+
60837 {1.22107005, 11.0535784}, //
+
60838 {1.21684003, 11.0538721}, //
+
60839 {1.21253002, 11.0540819}, //
+
60840 {1.20813, 11.0542078}, //
+
60841 {1.20365, 11.0542498}, //
+
60842 {1.19915998, 11.0549641}, //
+
60843 {1.19471002, 11.0555935}, //
+
60844 {1.19029999, 11.056139}, //
+
60845 {1.18593001, 11.0566006}, //
+
60846 {1.18159997, 11.0569782}, //
+
60847 {1.17732, 11.057272}, //
+
60848 {1.17306995, 11.0574818}, //
+
60849 {1.16885996, 11.0576077}, //
+
60850 {1.16470003, 11.0576496}, //
+
60851 {1.11549997, 11.0576496}, //
+
60852 {1.11404002, 11.0576286}, //
+
60853 {1.11266994, 11.0575657}, //
+
60854 {1.11136997, 11.0574608}, //
+
60855 {1.11015999, 11.0573139}, //
+
60856 {1.10903001, 11.0571251}, //
+
60857 {1.10799003, 11.0568943}, //
+
60858 {1.10703003, 11.0566216}, //
+
60859 {1.10615003, 11.0563068}, //
+
60860 {1.10535002, 11.0559502}, //
+
60861 {1.10466003, 11.0556145}, //
+
60862 {1.10408998, 11.0553627}, //
+
60863 {1.10364997, 11.0551949}, //
+
60864 {1.10334003, 11.0551109}, //
+
60865 {1.10315001, 11.0551109}, //
+
60866 {1.10308003, 11.0551949}, //
+
60867 {1.10315001, 11.0553627}, //
+
60868 {1.10334003, 11.0556145}, //
+
60869 {1.10364997, 11.0559502}, //
+
60870 {1.10413003, 11.0563488}, //
+
60871 {1.10482001, 11.0567894}, //
+
60872 {1.10572004, 11.057272}, //
+
60873 {1.10683, 11.0577965}, //
+
60874 {1.10815001, 11.0583639}, //
+
60875 {1.10967004, 11.0589724}, //
+
60876 {1.11141002, 11.0596228}, //
+
60877 {1.11335003, 11.0603151}, //
+
60878 {1.11549997, 11.0610504}, //
+
60879 {1.12082005, 11.0617952}, //
+
60880 {1.12621999, 11.062541}, //
+
60881 {1.13171005, 11.0632887}, //
+
60882 {1.13726997, 11.0640373}, //
+
60883 {1.14292002, 11.0647879}, //
+
60884 {1.14865994, 11.0655394}, //
+
60885 {1.15446997, 11.0662918}, //
+
60886 {1.16036999, 11.0670452}, //
+
60887 {1.16635001, 11.0677996}, //
+
60888 {1.17242002, 11.0684719}, //
+
60889 {1.17858005, 11.0689754}, //
+
60890 {1.18482006, 11.0693111}, //
+
60891 {1.19114995, 11.069479}, //
+
60892 {1.19755006, 11.069479}, //
+
60893 {1.20404005, 11.0693111}, //
+
60894 {1.21061003, 11.0689754}, //
+
60895 {1.21726, 11.0684719}, //
+
60896 {1.22399998, 11.0677996}, //
+
60897 {1.22631001, 11.0678635}, //
+
60898 {1.22870004, 11.0680523}, //
+
60899 {1.23117006, 11.068367}, //
+
60900 {1.23372996, 11.0688076}, //
+
60901 {1.23636997, 11.0693741}, //
+
60902 {1.23908997, 11.0700665}, //
+
60903 {1.24188995, 11.0708857}, //
+
60904 {1.24477994, 11.0718298}, //
+
60905 {1.24775004, 11.0728998}, //
+
60906 {1.25074005, 11.0740328}, //
+
60907 {1.25369, 11.0751638}, //
+
60908 {1.25659001, 11.0762939}, //
+
60909 {1.25945997, 11.0774231}, //
+
60910 {1.26227999, 11.0785513}, //
+
60911 {1.26505995, 11.0796776}, //
+
60912 {1.26779997, 11.0808029}, //
+
60913 {1.27049994, 11.0819273}, //
+
60914 {1.27314997, 11.0830498}, //
+
60915 {1.27573001, 11.0841837}, //
+
60916 {1.27818, 11.0853167}, //
+
60917 {1.28050995, 11.0864496}, //
+
60918 {1.28270996, 11.0875835}, //
+
60919 {1.28478003, 11.0887165}, //
+
60920 {1.28673005, 11.0898504}, //
+
60921 {1.28855002, 11.0909834}, //
+
60922 {1.29024005, 11.0921164}, //
+
60923 {1.29180002, 11.0932503}, //
+
60924 {1.29448998, 11.0952644}, //
+
60925 {1.29558003, 11.0960836}, //
+
60926 {1.29649997, 11.096776}, //
+
60927 {1.29726005, 11.0973425}, //
+
60928 {1.29784, 11.0977831}, //
+
60929 {1.29825997, 11.0980978}, //
+
60930 {1.29859996, 11.0983496}, //
+
60931 {1.31215, 11.0643997}, //
+
60932 {1.30847001, 11.0636129}, //
+
60933 {1.30495, 11.0627403}, //
+
60934 {1.30160999, 11.0617828}, //
+
60935 {1.29842997, 11.0607405}, //
+
60936 {1.29542005, 11.0596132}, //
+
60937 {1.29256999, 11.0584002}, //
+
60938 {1.28989995, 11.0571022}, //
+
60939 {1.28738999, 11.0557184}, //
+
60940 {1.28505003, 11.0542498}, //
+
60941 {1.28425002, 11.0535154}, //
+
60942 {1.28337002, 11.0528231}, //
+
60943 {1.28241003, 11.0521727}, //
+
60944 {1.28136003, 11.0515633}, //
+
60945 {1.28022003, 11.0509968}, //
+
60946 {1.27901006, 11.0504723}, //
+
60947 {1.27769995, 11.0499897}, //
+
60948 {1.27631998, 11.0495491}, //
+
60949 {1.27485001, 11.0491505}, //
+
60950 {1.27335, 11.0487518}, //
+
60951 {1.27184999, 11.0483131}, //
+
60952 {1.27033997, 11.0478334}, //
+
60953 {1.26883996, 11.0473127}, //
+
60954 {1.26733005, 11.046752}, //
+
60955 {1.26583004, 11.0461502}, //
+
60956 {1.26432002, 11.0455074}, //
+
60957 {1.26280999, 11.0448236}, //
+
60958 {1.26129997, 11.0440998}, //
+
60959 });
+
60960 polys.push_back({
+
60961 {4.34000015, 11.0610504}, //
+
60962 {4.34087992, 11.0610914}, //
+
60963 {4.34201002, 11.0612154}, //
+
60964 {4.34338999, 11.0614223}, //
+
60965 {4.34502983, 11.0617113}, //
+
60966 {4.34691, 11.0620842}, //
+
60967 {4.34904003, 11.0625391}, //
+
60968 {4.35142994, 11.063077}, //
+
60969 {4.35406017, 11.0636969}, //
+
60970 {4.35694981, 11.0643997}, //
+
60971 {4.36076021, 11.0644836}, //
+
60972 {4.36464977, 11.0647354}, //
+
60973 {4.36862993, 11.065156}, //
+
60974 {4.3726902, 11.0657434}, //
+
60975 {4.3768301, 11.0664988}, //
+
60976 {4.38106012, 11.0674219}, //
+
60977 {4.38536978, 11.0685139}, //
+
60978 {4.38977003, 11.0697727}, //
+
60979 {4.39424992, 11.0712004}, //
+
60980 {4.39740992, 11.0720367}, //
+
60981 {4.39552021, 11.0714302}, //
+
60982 {4.38915014, 11.0695}, //
+
60983 {4.38293982, 11.0677261}, //
+
60984 {4.37709999, 11.0661621}, //
+
60985 {4.37164021, 11.064806}, //
+
60986 {4.36655998, 11.0636578}, //
+
60987 {4.3618598, 11.0627193}, //
+
60988 {4.35753012, 11.0619888}, //
+
60989 {4.35358, 11.0614672}, //
+
60990 {4.3499999, 11.0611544}, //
+
60991 {4.34679985, 11.0610504}, //
+
60992 });
+
60993 polys.push_back({
+
60994 {0.758194029, 10.9713669}, //
+
60995 {0.755288005, 10.971694}, //
+
60996 {0.752340019, 10.9721889}, //
+
60997 {0.749350011, 10.9728498}, //
+
60998 {0.746348977, 10.9736891}, //
+
60999 {0.743391991, 10.9746971}, //
+
61000 {0.740477979, 10.975872}, //
+
61001 {0.737607002, 10.9772158}, //
+
61002 {0.734779, 10.9787264}, //
+
61003 {0.731993973, 10.9804058}, //
+
61004 {0.729252994, 10.9822521}, //
+
61005 {0.72655499, 10.9842672}, //
+
61006 {0.72390002, 10.9864502}, //
+
61007 {0.721287012, 10.9887476}, //
+
61008 {0.718715012, 10.9911289}, //
+
61009 {0.716183007, 10.9935942}, //
+
61010 {0.713693023, 10.9961443}, //
+
61011 {0.711242974, 10.9987774}, //
+
61012 {0.708832979, 11.0014944}, //
+
61013 {0.706465006, 11.0042953}, //
+
61014 {0.704137027, 11.0071812}, //
+
61015 {0.701849997, 11.01015}, //
+
61016 {0.699635983, 11.0116816}, //
+
61017 {0.697503984, 11.0132542}, //
+
61018 {0.695456028, 11.0148668}, //
+
61019 {0.693490028, 11.0165205}, //
+
61020 {0.691605985, 11.0182152}, //
+
61021 {0.689805984, 11.0199499}, //
+
61022 {0.688088, 11.0217257}, //
+
61023 {0.686451972, 11.0235424}, //
+
61024 {0.684899986, 11.0254002}, //
+
61025 {0.683440983, 11.0271835}, //
+
61026 {0.68206501, 11.028758}, //
+
61027 {0.680772007, 11.0301218}, //
+
61028 {0.679561973, 11.0312767}, //
+
61029 {0.678434014, 11.0322208}, //
+
61030 {0.677389026, 11.0329552}, //
+
61031 {0.676427007, 11.0334806}, //
+
61032 {0.675547004, 11.0337954}, //
+
61033 {0.67474997, 11.0339003}, //
+
61034 {0.673910022, 11.0338793}, //
+
61035 {0.672903001, 11.0338163}, //
+
61036 {0.671728015, 11.0337114}, //
+
61037 {0.670385003, 11.0335646}, //
+
61038 {0.668873012, 11.0333757}, //
+
61039 {0.667194009, 11.033144}, //
+
61040 {0.665347993, 11.0328712}, //
+
61041 {0.663332999, 11.0325565}, //
+
61042 {0.661149979, 11.0321999}, //
+
61043 {0.658894002, 11.0318222}, //
+
61044 {0.656636, 11.0314445}, //
+
61045 {0.654377997, 11.0310669}, //
+
61046 {0.652118027, 11.0306892}, //
+
61047 {0.649856985, 11.0303106}, //
+
61048 {0.647593975, 11.029933}, //
+
61049 {0.645331025, 11.0295553}, //
+
61050 {0.643065989, 11.0291777}, //
+
61051 {0.640799999, 11.0288}, //
+
61052 {0.638585985, 11.0284538}, //
+
61053 {0.636453986, 11.0281477}, //
+
61054 {0.634405971, 11.0278835}, //
+
61055 {0.632439971, 11.0276594}, //
+
61056 {0.630555987, 11.0274763}, //
+
61057 {0.628755987, 11.0273333}, //
+
61058 {0.627038002, 11.0272312}, //
+
61059 {0.625401974, 11.0271702}, //
+
61060 {0.623849988, 11.0271502}, //
+
61061 {0.6171, 11.0271502}, //
+
61062 {0.615216017, 11.0346594}, //
+
61063 {0.614911973, 11.0369158}, //
+
61064 {0.614392996, 11.0408745}, //
+
61065 {0.62045002, 11.0424004}, //
+
61066 {0.621981025, 11.042798}, //
+
61067 {0.623553991, 11.0432367}, //
+
61068 {0.625167012, 11.0437164}, //
+
61069 {0.626820028, 11.0442371}, //
+
61070 {0.628515005, 11.0447979}, //
+
61071 {0.630249977, 11.0453997}, //
+
61072 {0.632026017, 11.0460424}, //
+
61073 {0.633843005, 11.0467262}, //
+
61074 {0.635699987, 11.0474501}, //
+
61075 {0.637588024, 11.0481844}, //
+
61076 {0.639474988, 11.0488768}, //
+
61077 {0.641360998, 11.0495281}, //
+
61078 {0.643245995, 11.0501366}, //
+
61079 {0.645129025, 11.050703}, //
+
61080 {0.647010982, 11.0512276}, //
+
61081 {0.648891985, 11.0517101}, //
+
61082 {0.650771976, 11.0521507}, //
+
61083 {0.652649999, 11.0525503}, //
+
61084 {0.654475987, 11.052907}, //
+
61085 {0.656175971, 11.0532217}, //
+
61086 {0.65775001, 11.0534945}, //
+
61087 {0.659197986, 11.0537252}, //
+
61088 {0.660520017, 11.0539141}, //
+
61089 {0.661716998, 11.0540609}, //
+
61090 {0.66278702, 11.0541658}, //
+
61091 {0.663730979, 11.0542288}, //
+
61092 {0.664550006, 11.0542498}, //
+
61093 {0.666164994, 11.0534525}, //
+
61094 {0.667990029, 11.0525713}, //
+
61095 {0.670022011, 11.0516052}, //
+
61096 {0.67226398, 11.0505562}, //
+
61097 {0.674714029, 11.0494232}, //
+
61098 {0.677371979, 11.0482054}, //
+
61099 {0.680239975, 11.0469046}, //
+
61100 {0.683314979, 11.0455189}, //
+
61101 {0.686600029, 11.0440502}, //
+
61102 {0.689926982, 11.0425081}, //
+
61103 {0.69312799, 11.0408821}, //
+
61104 {0.696205974, 11.0391722}, //
+
61105 {0.699158013, 11.0373783}, //
+
61106 {0.701986015, 11.0355005}, //
+
61107 {0.704689026, 11.0335388}, //
+
61108 {0.707266986, 11.0314932}, //
+
61109 {0.709721029, 11.0293636}, //
+
61110 {0.712050021, 11.0271502}, //
+
61111 {0.713550985, 11.0256805}, //
+
61112 {0.715052009, 11.0242958}, //
+
61113 {0.716556013, 11.022994}, //
+
61114 {0.718060017, 11.0217772}, //
+
61115 {0.719564974, 11.0206442}, //
+
61116 {0.721072018, 11.0195942}, //
+
61117 {0.722580016, 11.0186291}, //
+
61118 {0.72408998, 11.0177479}, //
+
61119 {0.725600004, 11.0169497}, //
+
61120 {0.731747985, 11.0133924}, //
+
61121 {0.738147974, 11.0102539}, //
+
61122 {0.744799972, 11.0075331}, //
+
61123 {0.751703978, 11.0052319}, //
+
61124 {0.758858979, 11.0033484}, //
+
61125 {0.766267002, 11.0018835}, //
+
61126 {0.77392602, 11.0008373}, //
+
61127 {0.781836987, 11.0002089}, //
+
61128 {0.790000021, 11}, //
+
61129 {0.793871999, 11.0007343}, //
+
61130 {0.79795301, 11.0014267}, //
+
61131 {0.802244008, 11.0020781}, //
+
61132 {0.806746006, 11.0026865}, //
+
61133 {0.811456978, 11.003253}, //
+
61134 {0.816377997, 11.0037775}, //
+
61135 {0.821509004, 11.0042601}, //
+
61136 {0.826848984, 11.0047016}, //
+
61137 {0.832400024, 11.0051003}, //
+
61138 {0.837951005, 11.0054569}, //
+
61139 {0.843290985, 11.0057716}, //
+
61140 {0.848421991, 11.0060444}, //
+
61141 {0.85334301, 11.0062752}, //
+
61142 {0.858053982, 11.006464}, //
+
61143 {0.862555981, 11.0066109}, //
+
61144 {0.866846979, 11.0067158}, //
+
61145 {0.870927989, 11.0067787}, //
+
61146 {0.874800026, 11.0067997}, //
+
61147 {0.876341999, 11.0068207}, //
+
61148 {0.877968013, 11.0068817}, //
+
61149 {0.879678011, 11.0069838}, //
+
61150 {0.881471992, 11.0071259}, //
+
61151 {0.883349001, 11.007309}, //
+
61152 {0.885311007, 11.0075331}, //
+
61153 {0.887356997, 11.0077982}, //
+
61154 {0.889486015, 11.0081034}, //
+
61155 {0.891700029, 11.0084496}, //
+
61156 {0.893944979, 11.0088282}, //
+
61157 {0.896147013, 11.0092058}, //
+
61158 {0.898306012, 11.0095835}, //
+
61159 {0.900421023, 11.0099611}, //
+
61160 {0.902493, 11.0103388}, //
+
61161 {0.904522002, 11.0107164}, //
+
61162 {0.906508029, 11.0110941}, //
+
61163 {0.908451021, 11.0114717}, //
+
61164 {0.910350025, 11.0118504}, //
+
61165 {0.917171001, 11.0132141}, //
+
61166 {0.917905986, 11.013361}, //
+
61167 {0.918429971, 11.0134659}, //
+
61168 {0.918850005, 11.0135498}, //
+
61169 {0.918850005, 10.98985}, //
+
61170 {0.881550014, 10.98985}, //
+
61171 {0.878517985, 10.9898291}, //
+
61172 {0.875443995, 10.9897661}, //
+
61173 {0.872327983, 10.9896612}, //
+
61174 {0.86917001, 10.9895144}, //
+
61175 {0.865970016, 10.9893255}, //
+
61176 {0.862728, 10.9890947}, //
+
61177 {0.859444022, 10.988822}, //
+
61178 {0.856118023, 10.9885073}, //
+
61179 {0.852750003, 10.9881496}, //
+
61180 {0.84938103, 10.987772}, //
+
61181 {0.846054018, 10.9873943}, //
+
61182 {0.842767, 10.9870167}, //
+
61183 {0.839519978, 10.986639}, //
+
61184 {0.836314976, 10.9862614}, //
+
61185 {0.833150029, 10.9858837}, //
+
61186 {0.830025971, 10.9855061}, //
+
61187 {0.82694298, 10.9851274}, //
+
61188 {0.823899984, 10.9847498}, //
+
61189 {0.820972979, 10.9843931}, //
+
61190 {0.818213999, 10.9840784}, //
+
61191 {0.815621972, 10.9838057}, //
+
61192 {0.813198984, 10.9835749}, //
+
61193 {0.810943007, 10.983386}, //
+
61194 {0.80885601, 10.9832392}, //
+
61195 {0.806936026, 10.9831343}, //
+
61196 {0.805184007, 10.9830713}, //
+
61197 {0.803600013, 10.9830503}, //
+
61198 {0.802802026, 10.9830084}, //
+
61199 {0.80192101, 10.9828825}, //
+
61200 {0.800956011, 10.9826717}, //
+
61201 {0.799906015, 10.982378}, //
+
61202 {0.798772991, 10.9820004}, //
+
61203 {0.797555983, 10.9815388}, //
+
61204 {0.796253979, 10.9809933}, //
+
61205 {0.794869006, 10.9803638}, //
+
61206 {0.79339999, 10.9796495}, //
+
61207 {0.791836023, 10.9788952}, //
+
61208 {0.790145993, 10.9781418}, //
+
61209 {0.788327992, 10.9773893}, //
+
61210 {0.786382973, 10.9766378}, //
+
61211 {0.784309983, 10.9758873}, //
+
61212 {0.782110989, 10.9751387}, //
+
61213 {0.779784977, 10.974391}, //
+
61214 {0.777330995, 10.9736452}, //
+
61215 {0.774749994, 10.9729004}, //
+
61216 {0.772095978, 10.9722281}, //
+
61217 {0.769398987, 10.9717226}, //
+
61218 {0.766660988, 10.9713831}, //
+
61219 {0.763881028, 10.9712114}, //
+
61220 {0.761058986, 10.9712057}, //
+
61221 });
+
61222 polys.push_back({
+
61223 {4.2349, 11}, //
+
61224 {4.23563004, 11.0015106}, //
+
61225 {4.23632002, 11.0030193}, //
+
61226 {4.23696995, 11.004528}, //
+
61227 {4.23757982, 11.0060349}, //
+
61228 {4.23814011, 11.0075397}, //
+
61229 {4.23865986, 11.0090446}, //
+
61230 {4.23913002, 11.0105476}, //
+
61231 {4.23956013, 11.0120497}, //
+
61232 {4.23995018, 11.0135498}, //
+
61233 {4.24031019, 11.0151443}, //
+
61234 {4.24062014, 11.0169058}, //
+
61235 {4.24089003, 11.0188332}, //
+
61236 {4.24112988, 11.0209274}, //
+
61237 {4.24131012, 11.0231886}, //
+
61238 {4.24145985, 11.0256166}, //
+
61239 {4.24157, 11.0282106}, //
+
61240 {4.24163008, 11.0309725}, //
+
61241 {4.2416501, 11.0339003}, //
+
61242 {4.24185991, 11.0367651}, //
+
61243 {4.24248981, 11.0393372}, //
+
61244 {4.2435298, 11.0416164}, //
+
61245 {4.24499989, 11.0436039}, //
+
61246 {4.24688005, 11.0452986}, //
+
61247 {4.24917984, 11.0466995}, //
+
61248 {4.2519002, 11.0478096}, //
+
61249 {4.25504017, 11.0486259}, //
+
61250 {4.25860023, 11.0491505}, //
+
61251 {4.26242018, 11.0495071}, //
+
61252 {4.26632023, 11.0498219}, //
+
61253 {4.27029991, 11.0500946}, //
+
61254 {4.27436018, 11.0503254}, //
+
61255 {4.27851009, 11.0505142}, //
+
61256 {4.2827301, 11.0506611}, //
+
61257 {4.28704023, 11.050766}, //
+
61258 {4.29143, 11.0508289}, //
+
61259 {4.29589987, 11.0508499}, //
+
61260 {4.32305002, 11.0508499}, //
+
61261 {4.3214798, 11.0498009}, //
+
61262 {4.31996012, 11.0487928}, //
+
61263 {4.31901979, 11.0481634}, //
+
61264 {4.31794977, 11.0474501}, //
+
61265 {4.31685019, 11.0467052}, //
+
61266 {4.31579018, 11.0459585}, //
+
61267 {4.31477022, 11.0452108}, //
+
61268 {4.31378984, 11.0444622}, //
+
61269 {4.31285, 11.0437126}, //
+
61270 {4.31195021, 11.0429611}, //
+
61271 {4.31108999, 11.0422087}, //
+
61272 {4.31027985, 11.0414553}, //
+
61273 {4.30950022, 11.0407}, //
+
61274 {4.30872011, 11.0399446}, //
+
61275 {4.30789995, 11.0391893}, //
+
61276 {4.30704021, 11.0384331}, //
+
61277 {4.30613995, 11.0376778}, //
+
61278 {4.3052001, 11.0369225}, //
+
61279 {4.30421019, 11.0361671}, //
+
61280 {4.30318022, 11.0354109}, //
+
61281 {4.3021102, 11.0346556}, //
+
61282 {4.30100012, 11.0339003}, //
+
61283 {4.29989004, 11.033186}, //
+
61284 {4.29882002, 11.0325565}, //
+
61285 {4.29779005, 11.032011}, //
+
61286 {4.29681015, 11.0315495}, //
+
61287 {4.29586983, 11.0311718}, //
+
61288 {4.29498005, 11.0308781}, //
+
61289 {4.29412985, 11.0306683}, //
+
61290 {4.29332018, 11.0305424}, //
+
61291 {4.29255009, 11.0305004}, //
+
61292 {4.29023981, 11.0296917}, //
+
61293 {4.2878499, 11.0287571}, //
+
61294 {4.28537989, 11.0276947}, //
+
61295 {4.28282022, 11.0265045}, //
+
61296 {4.28017998, 11.0251884}, //
+
61297 {4.2774601, 11.0237446}, //
+
61298 {4.27466011, 11.0221739}, //
+
61299 {4.27177, 11.0204754}, //
+
61300 {4.26879978, 11.0186501}, //
+
61301 {4.26578999, 11.0167408}, //
+
61302 {4.26278019, 11.0147905}, //
+
61303 {4.2597599, 11.0128002}, //
+
61304 {4.25675011, 11.0107689}, //
+
61305 {4.25372982, 11.0086966}, //
+
61306 {4.25071001, 11.0065832}, //
+
61307 {4.2476902, 11.0044298}, //
+
61308 {4.24555016, 11.0028725}, //
+
61309 {4.2349, 11}, //
+
61310 {4.23565006, 10.9983053}, //
+
61311 {4.23613024, 10.99722}, //
+
61312 {4.2349, 10.9966002}, //
+
61313 });
+
61314 polys.push_back({
+
61315 {1.23559999, 10.9469461}, //
+
61316 {1.23202002, 10.947135}, //
+
61317 {1.22873998, 10.9474497}, //
+
61318 {1.22574997, 10.9478903}, //
+
61319 {1.22305, 10.9484577}, //
+
61320 {1.22064996, 10.9491501}, //
+
61321 {1.21763003, 10.9491711}, //
+
61322 {1.21460998, 10.949234}, //
+
61323 {1.21159005, 10.9493389}, //
+
61324 {1.20857, 10.9494858}, //
+
61325 {1.20554996, 10.9496746}, //
+
61326 {1.20254004, 10.9499054}, //
+
61327 {1.19951999, 10.9501781}, //
+
61328 {1.19650996, 10.9504929}, //
+
61329 {1.19350004, 10.9508495}, //
+
61330 {1.19051003, 10.9512072}, //
+
61331 {1.18755996, 10.9515219}, //
+
61332 {1.18464994, 10.9517946}, //
+
61333 {1.18177998, 10.9520254}, //
+
61334 {1.17894995, 10.9522142}, //
+
61335 {1.17616999, 10.9523611}, //
+
61336 {1.17341995, 10.952466}, //
+
61337 {1.17070997, 10.952529}, //
+
61338 {1.16805005, 10.9525499}, //
+
61339 {1.14604998, 10.9525499}, //
+
61340 {1.14532006, 10.9518366}, //
+
61341 {1.14461994, 10.9512072}, //
+
61342 {1.14397001, 10.9506607}, //
+
61343 {1.14336002, 10.9501991}, //
+
61344 {1.14279997, 10.9498215}, //
+
61345 {1.14226997, 10.9495277}, //
+
61346 {1.14179003, 10.9493179}, //
+
61347 {1.14135003, 10.949192}, //
+
61348 {1.14094996, 10.9491501}, //
+
61349 {1.14060998, 10.9491711}, //
+
61350 {1.14036, 10.949234}, //
+
61351 {1.14019001, 10.9493389}, //
+
61352 {1.14011002, 10.9494858}, //
+
61353 {1.14011002, 10.9496746}, //
+
61354 {1.14019001, 10.9499054}, //
+
61355 {1.14036, 10.9501781}, //
+
61356 {1.14060998, 10.9504929}, //
+
61357 {1.14094996, 10.9508495}, //
+
61358 {1.14135003, 10.9512072}, //
+
61359 {1.14179003, 10.9515219}, //
+
61360 {1.14226997, 10.9517946}, //
+
61361 {1.14279997, 10.9520254}, //
+
61362 {1.14336002, 10.9522142}, //
+
61363 {1.14397001, 10.9523611}, //
+
61364 {1.14461994, 10.952466}, //
+
61365 {1.14532006, 10.952529}, //
+
61366 {1.14604998, 10.9525499}, //
+
61367 {1.14680004, 10.9532528}, //
+
61368 {1.14753997, 10.9538736}, //
+
61369 {1.14829004, 10.9544115}, //
+
61370 {1.14903998, 10.9548664}, //
+
61371 {1.14979005, 10.9552383}, //
+
61372 {1.15053999, 10.9555283}, //
+
61373 {1.15129006, 10.9557343}, //
+
61374 {1.15205002, 10.9558582}, //
+
61375 {1.15279996, 10.9559002}, //
+
61376 {1.15587997, 10.9574108}, //
+
61377 {1.15909004, 10.9589224}, //
+
61378 {1.16242003, 10.960433}, //
+
61379 {1.16587996, 10.9619446}, //
+
61380 {1.16945004, 10.9634552}, //
+
61381 {1.17315996, 10.9649668}, //
+
61382 {1.17698002, 10.9664774}, //
+
61383 {1.18093002, 10.967989}, //
+
61384 {1.18499994, 10.9694996}, //
+
61385 {1.18908, 10.9709167}, //
+
61386 {1.19304001, 10.972167}, //
+
61387 {1.19686997, 10.9732504}, //
+
61388 {1.20058, 10.9741669}, //
+
61389 {1.20415998, 10.9749165}, //
+
61390 {1.20762002, 10.9755001}, //
+
61391 {1.21096003, 10.9759169}, //
+
61392 {1.21416998, 10.9761667}, //
+
61393 {1.21724999, 10.9762497}, //
+
61394 {1.22264004, 10.9742031}, //
+
61395 {1.22828996, 10.9725733}, //
+
61396 {1.23418999, 10.9713612}, //
+
61397 {1.24033999, 10.9705658}, //
+
61398 {1.24675, 10.9701881}, //
+
61399 {1.25340998, 10.9702282}, //
+
61400 {1.26031995, 10.970685}, //
+
61401 {1.26748002, 10.9715586}, //
+
61402 {1.27489996, 10.9728498}, //
+
61403 {1.27719998, 10.9743614}, //
+
61404 {1.27958, 10.975872}, //
+
61405 {1.28204, 10.9773836}, //
+
61406 {1.28459001, 10.9788942}, //
+
61407 {1.28723001, 10.9804058}, //
+
61408 {1.28994, 10.9819164}, //
+
61409 {1.29275, 10.983428}, //
+
61410 {1.29562998, 10.9849386}, //
+
61411 {1.29859996, 10.9864502}, //
+
61412 {1.30155003, 10.9879503}, //
+
61413 {1.30437005, 10.9894524}, //
+
61414 {1.30707002, 10.9909554}, //
+
61415 {1.30964994, 10.9924603}, //
+
61416 {1.31210005, 10.9939651}, //
+
61417 {1.31441998, 10.995472}, //
+
61418 {1.31661999, 10.9969807}, //
+
61419 {1.31869996, 10.9984894}, //
+
61420 {1.32064998, 11}, //
+
61421 {1.32652998, 11.0047016}, //
+
61422 {1.32746994, 11.0054569}, //
+
61423 {1.32821, 11.0060444}, //
+
61424 {1.32872999, 11.006464}, //
+
61425 {1.32904994, 11.0067158}, //
+
61426 {1.32914996, 11.0067997}, //
+
61427 {1.33589995, 10.9830503}, //
+
61428 {1.33589995, 10.9813499}, //
+
61429 {1.33588004, 10.9809933}, //
+
61430 {1.33581996, 10.9806786}, //
+
61431 {1.33571005, 10.9804058}, //
+
61432 {1.33555996, 10.980175}, //
+
61433 {1.33537996, 10.9799862}, //
+
61434 {1.33513999, 10.9798393}, //
+
61435 {1.33486998, 10.9797344}, //
+
61436 {1.33456004, 10.9796705}, //
+
61437 {1.33384001, 10.9796286}, //
+
61438 {1.33352995, 10.9795656}, //
+
61439 {1.33326006, 10.9794607}, //
+
61440 {1.33301997, 10.9793139}, //
+
61441 {1.33283997, 10.979125}, //
+
61442 {1.33269, 10.9788942}, //
+
61443 {1.33257997, 10.9786215}, //
+
61444 {1.33252001, 10.9783068}, //
+
61445 {1.33249998, 10.9779501}, //
+
61446 {1.33246005, 10.9775724}, //
+
61447 {1.33232999, 10.9771948}, //
+
61448 {1.33211994, 10.9768171}, //
+
61449 {1.33183002, 10.9764385}, //
+
61450 {1.33144999, 10.9760609}, //
+
61451 {1.33098996, 10.9756832}, //
+
61452 {1.33044004, 10.9753056}, //
+
61453 {1.32981002, 10.9749279}, //
+
61454 {1.32910001, 10.9745502}, //
+
61455 {1.32834995, 10.9741516}, //
+
61456 {1.32761002, 10.9737129}, //
+
61457 {1.32685995, 10.9732332}, //
+
61458 {1.32611001, 10.9727135}, //
+
61459 {1.32535994, 10.9721518}, //
+
61460 {1.32460999, 10.97155}, //
+
61461 {1.32386005, 10.9709072}, //
+
61462 {1.32309997, 10.9702244}, //
+
61463 {1.32235003, 10.9694996}, //
+
61464 {1.32158995, 10.9687653}, //
+
61465 {1.32084, 10.9680729}, //
+
61466 {1.32008004, 10.9674225}, //
+
61467 {1.31932998, 10.966814}, //
+
61468 {1.31857002, 10.9662466}, //
+
61469 {1.31781995, 10.9657221}, //
+
61470 {1.31705999, 10.9652395}, //
+
61471 {1.31631005, 10.9647989}, //
+
61472 {1.31554997, 10.9644003}, //
+
61473 {1.31215, 10.9626999}, //
+
61474 {1.31207001, 10.962616}, //
+
61475 {1.31181002, 10.9623642}, //
+
61476 {1.31139004, 10.9619446}, //
+
61477 {1.31112003, 10.9616718}, //
+
61478 {1.31080997, 10.9613571}, //
+
61479 {1.31044996, 10.9610004}, //
+
61480 {1.31004, 10.9606218}, //
+
61481 {1.30955005, 10.9602442}, //
+
61482 {1.30896997, 10.9598665}, //
+
61483 {1.30830002, 10.9594889}, //
+
61484 {1.30754995, 10.9591112}, //
+
61485 {1.30672002, 10.9587336}, //
+
61486 {1.30579996, 10.9583559}, //
+
61487 {1.30479002, 10.9579782}, //
+
61488 {1.30369997, 10.9575996}, //
+
61489 {1.30254996, 10.957243}, //
+
61490 {1.30135, 10.9569283}, //
+
61491 {1.30012, 10.9566555}, //
+
61492 {1.29884005, 10.9564247}, //
+
61493 {1.29752004, 10.9562359}, //
+
61494 {1.29617, 10.956089}, //
+
61495 {1.29477, 10.9559841}, //
+
61496 {1.29332995, 10.9559212}, //
+
61497 {1.29184997, 10.9559002}, //
+
61498 {1.28802001, 10.9544621}, //
+
61499 {1.28406, 10.9531498}, //
+
61500 {1.27997994, 10.9519615}, //
+
61501 {1.27577996, 10.9508972}, //
+
61502 {1.27144003, 10.9499588}, //
+
61503 {1.26698005, 10.9491444}, //
+
61504 {1.26240003, 10.9484549}, //
+
61505 {1.25768995, 10.9478903}, //
+
61506 {1.25285006, 10.9474497}, //
+
61507 {1.24810004, 10.947135}, //
+
61508 {1.24363995, 10.9469461}, //
+
61509 {1.23947001, 10.9468832}, //
+
61510 });
+
61511 polys.push_back({
+
61512 {1.13293004, 10.8892956}, //
+
61513 {1.13186002, 10.8894854}, //
+
61514 {1.13074994, 10.8898001}, //
+
61515 {1.12965, 10.8902407}, //
+
61516 {1.12858999, 10.8908072}, //
+
61517 {1.12757003, 10.8915005}, //
+
61518 {1.12659001, 10.8923187}, //
+
61519 {1.12565005, 10.8932629}, //
+
61520 {1.12475002, 10.8943329}, //
+
61521 {1.12389004, 10.8955297}, //
+
61522 {1.12308002, 10.8968515}, //
+
61523 {1.12230003, 10.8983002}, //
+
61524 {1.12216997, 10.8991289}, //
+
61525 {1.12179995, 10.9001274}, //
+
61526 {1.12117004, 10.9012947}, //
+
61527 {1.12030005, 10.9026308}, //
+
61528 {1.11916995, 10.9041367}, //
+
61529 {1.11778998, 10.9058113}, //
+
61530 {1.11616004, 10.9076548}, //
+
61531 {1.11427999, 10.909668}, //
+
61532 {1.11214995, 10.91185}, //
+
61533 {1.11142004, 10.9125843}, //
+
61534 {1.10946, 10.9145365}, //
+
61535 {1.10889995, 10.915103}, //
+
61536 {1.10836995, 10.9156275}, //
+
61537 {1.10789001, 10.91611}, //
+
61538 {1.10745001, 10.9165516}, //
+
61539 {1.10704994, 10.9169502}, //
+
61540 {1.10667002, 10.9173174}, //
+
61541 {1.10628998, 10.9176855}, //
+
61542 {1.10591996, 10.9180555}, //
+
61543 {1.10554004, 10.9184265}, //
+
61544 {1.10516, 10.9187984}, //
+
61545 {1.10477996, 10.9191723}, //
+
61546 {1.10441005, 10.9195471}, //
+
61547 {1.10403001, 10.9199228}, //
+
61548 {1.10364997, 10.9202995}, //
+
61549 {1.10328996, 10.9206362}, //
+
61550 {1.10298002, 10.9208879}, //
+
61551 {1.10271001, 10.9210558}, //
+
61552 {1.10247004, 10.9211397}, //
+
61553 {1.10229003, 10.9211397}, //
+
61554 {1.10213995, 10.9210558}, //
+
61555 {1.10203004, 10.9208879}, //
+
61556 {1.10196996, 10.9206362}, //
+
61557 {1.10195005, 10.9202995}, //
+
61558 {1.10193002, 10.9199429}, //
+
61559 {1.10186994, 10.9196281}, //
+
61560 {1.10176003, 10.9193554}, //
+
61561 {1.10160995, 10.9191246}, //
+
61562 {1.10143006, 10.9189358}, //
+
61563 {1.10118997, 10.9187889}, //
+
61564 {1.10091996, 10.918684}, //
+
61565 {1.10061002, 10.9186211}, //
+
61566 {1.10025001, 10.9186001}, //
+
61567 {1.09988999, 10.9185801}, //
+
61568 {1.09958005, 10.9185181}, //
+
61569 {1.09931004, 10.918417}, //
+
61570 {1.09906995, 10.9182739}, //
+
61571 {1.09888995, 10.9180908}, //
+
61572 {1.09873998, 10.9178667}, //
+
61573 {1.09862995, 10.9176016}, //
+
61574 {1.09856999, 10.9172964}, //
+
61575 {1.09854996, 10.9169502}, //
+
61576 {1.09854996, 10.9491501}, //
+
61577 {1.09912002, 10.9483995}, //
+
61578 {1.09956002, 10.9478168}, //
+
61579 {1.10011995, 10.9470663}, //
+
61580 {1.10081995, 10.9461498}, //
+
61581 {1.10163999, 10.9450665}, //
+
61582 {1.10257995, 10.9438171}, //
+
61583 {1.10364997, 10.9424}, //
+
61584 {1.10479999, 10.9409103}, //
+
61585 {1.10599995, 10.9394617}, //
+
61586 {1.10722995, 10.938056}, //
+
61587 {1.10851002, 10.9366913}, //
+
61588 {1.10983002, 10.9353695}, //
+
61589 {1.11117995, 10.9340887}, //
+
61590 {1.11257994, 10.9328508}, //
+
61591 {1.11401999, 10.931654}, //
+
61592 {1.11549997, 10.9305}, //
+
61593 {1.11703002, 10.929388}, //
+
61594 {1.11860001, 10.9283171}, //
+
61595 {1.12021995, 10.927289}, //
+
61596 {1.12187004, 10.9263029}, //
+
61597 {1.12355995, 10.9253578}, //
+
61598 {1.12530005, 10.9244556}, //
+
61599 {1.12707996, 10.9235954}, //
+
61600 {1.12889004, 10.9227762}, //
+
61601 {1.13074994, 10.9219999}, //
+
61602 {1.13258004, 10.9212866}, //
+
61603 {1.13427997, 10.9206572}, //
+
61604 {1.13584995, 10.9201107}, //
+
61605 {1.13730001, 10.9196491}, //
+
61606 {1.13862002, 10.9192715}, //
+
61607 {1.13981998, 10.9189777}, //
+
61608 {1.14089, 10.9187679}, //
+
61609 {1.14182997, 10.918642}, //
+
61610 {1.14265001, 10.9186001}, //
+
61611 {1.14708996, 10.918726}, //
+
61612 {1.15136003, 10.9191036}, //
+
61613 {1.15546, 10.919733}, //
+
61614 {1.15939999, 10.9206152}, //
+
61615 {1.16315997, 10.9217482}, //
+
61616 {1.16675997, 10.9231329}, //
+
61617 {1.17018998, 10.9247704}, //
+
61618 {1.17344999, 10.9266596}, //
+
61619 {1.17655003, 10.9287996}, //
+
61620 {1.17995, 10.9287996}, //
+
61621 {1.18069994, 10.9288206}, //
+
61622 {1.18146002, 10.9288836}, //
+
61623 {1.18220997, 10.9289885}, //
+
61624 {1.18296003, 10.9291363}, //
+
61625 {1.18370998, 10.9293251}, //
+
61626 {1.18446004, 10.9295559}, //
+
61627 {1.18520999, 10.9298286}, //
+
61628 {1.18595004, 10.9301434}, //
+
61629 {1.18669999, 10.9305}, //
+
61630 {1.18747997, 10.9308777}, //
+
61631 {1.18830001, 10.9312553}, //
+
61632 {1.18915999, 10.931633}, //
+
61633 {1.19006002, 10.9320107}, //
+
61634 {1.19099998, 10.9323893}, //
+
61635 {1.19199002, 10.9327669}, //
+
61636 {1.19301999, 10.9331446}, //
+
61637 {1.19409001, 10.9335222}, //
+
61638 {1.19519997, 10.9338999}, //
+
61639 {1.19626999, 10.9342566}, //
+
61640 {1.19720995, 10.9345713}, //
+
61641 {1.19802999, 10.934844}, //
+
61642 {1.19872999, 10.9350758}, //
+
61643 {1.19929004, 10.9352646}, //
+
61644 {1.20005, 10.9355164}, //
+
61645 {1.20024002, 10.9355793}, //
+
61646 {1.20029998, 10.9356003}, //
+
61647 {1.20194995, 10.9355164}, //
+
61648 {1.20388997, 10.9352646}, //
+
61649 {1.20612001, 10.934844}, //
+
61650 {1.20704997, 10.9346285}, //
+
61651 {1.20704997, 10.9322004}, //
+
61652 {1.20365, 10.9322004}, //
+
61653 {1.20134997, 10.9314022}, //
+
61654 {1.19896996, 10.930521}, //
+
61655 {1.19650996, 10.9295559}, //
+
61656 {1.19395995, 10.9285059}, //
+
61657 {1.19131994, 10.9273729}, //
+
61658 {1.18860996, 10.926156}, //
+
61659 {1.18579996, 10.9248543}, //
+
61660 {1.18291998, 10.9234695}, //
+
61661 {1.17995, 10.9219999}, //
+
61662 {1.17843997, 10.9211607}, //
+
61663 {1.17692995, 10.9201555}, //
+
61664 {1.17542005, 10.9189835}, //
+
61665 {1.17392004, 10.9176445}, //
+
61666 {1.17241001, 10.9161386}, //
+
61667 {1.17091, 10.9144669}, //
+
61668 {1.16939998, 10.9126282}, //
+
61669 {1.16789997, 10.9106226}, //
+
61670 {1.16639996, 10.9084501}, //
+
61671 {1.16338003, 10.9062357}, //
+
61672 {1.16035998, 10.9041042}, //
+
61673 {1.15734005, 10.9020557}, //
+
61674 {1.15432, 10.9000893}, //
+
61675 {1.15129995, 10.8982058}, //
+
61676 {1.14829004, 10.8964062}, //
+
61677 {1.14526999, 10.8946877}, //
+
61678 {1.14225996, 10.8930521}, //
+
61679 {1.13925004, 10.8915005}, //
+
61680 {1.13847005, 10.8908072}, //
+
61681 {1.13765001, 10.8902407}, //
+
61682 {1.13679004, 10.8898001}, //
+
61683 {1.13589001, 10.8894854}, //
+
61684 {1.13495004, 10.8892956}, //
+
61685 {1.13396001, 10.8892326}, //
+
61686 });
+
61687 polys.push_back({
+
61688 {1.16974998, 10.7745504}, //
+
61689 {1.16972995, 10.7749166}, //
+
61690 {1.16966999, 10.7752857}, //
+
61691 {1.16955996, 10.7756557}, //
+
61692 {1.16940999, 10.7760267}, //
+
61693 {1.16922998, 10.7763987}, //
+
61694 {1.16899002, 10.7767715}, //
+
61695 {1.16872001, 10.7771473}, //
+
61696 {1.16840994, 10.777523}, //
+
61697 {1.16805005, 10.7778997}, //
+
61698 {1.16768003, 10.7782574}, //
+
61699 {1.16731, 10.7785721}, //
+
61700 {1.16693997, 10.7788439}, //
+
61701 {1.16656995, 10.7790747}, //
+
61702 {1.16620004, 10.7792645}, //
+
61703 {1.16583002, 10.7794113}, //
+
61704 {1.16544998, 10.7795162}, //
+
61705 {1.16507995, 10.7795792}, //
+
61706 {1.16470003, 10.7796001}, //
+
61707 {1.15620005, 10.7796001}, //
+
61708 {1.15471005, 10.7789068}, //
+
61709 {1.15325999, 10.7783413}, //
+
61710 {1.15186, 10.7778997}, //
+
61711 {1.15049005, 10.777585}, //
+
61712 {1.14917004, 10.7773962}, //
+
61713 {1.14788997, 10.7773333}, //
+
61714 {1.14664996, 10.7773962}, //
+
61715 {1.14545, 10.777585}, //
+
61716 {1.14429998, 10.7778997}, //
+
61717 {1.14315999, 10.7783413}, //
+
61718 {1.14197004, 10.7789068}, //
+
61719 {1.14074004, 10.7796001}, //
+
61720 {1.13946998, 10.7804193}, //
+
61721 {1.13814998, 10.7813625}, //
+
61722 {1.13679004, 10.7824326}, //
+
61723 {1.13539004, 10.7836304}, //
+
61724 {1.13393998, 10.7849522}, //
+
61725 {1.13244998, 10.7863998}, //
+
61726 {1.13099003, 10.7871552}, //
+
61727 {1.12961996, 10.7879086}, //
+
61728 {1.12831998, 10.788661}, //
+
61729 {1.12711, 10.7894115}, //
+
61730 {1.12598002, 10.7901621}, //
+
61731 {1.12494004, 10.7909107}, //
+
61732 {1.12398005, 10.7916594}, //
+
61733 {1.12310004, 10.7924051}, //
+
61734 {1.12230003, 10.7931499}, //
+
61735 {1.12081003, 10.7939272}, //
+
61736 {1.11935997, 10.7947454}, //
+
61737 {1.11795998, 10.7956057}, //
+
61738 {1.11659002, 10.7965078}, //
+
61739 {1.11527002, 10.797452}, //
+
61740 {1.11398995, 10.798439}, //
+
61741 {1.11275005, 10.7994671}, //
+
61742 {1.11154997, 10.8005381}, //
+
61743 {1.11039996, 10.80165}, //
+
61744 {1.10933995, 10.8027411}, //
+
61745 {1.10839999, 10.8037491}, //
+
61746 {1.10758996, 10.8046722}, //
+
61747 {1.10690999, 10.8055124}, //
+
61748 {1.10634995, 10.8062668}, //
+
61749 {1.10590994, 10.8069391}, //
+
61750 {1.1056, 10.8075266}, //
+
61751 {1.10540998, 10.8080301}, //
+
61752 {1.10535002, 10.8084497}, //
+
61753 {1.10538995, 10.8087959}, //
+
61754 {1.10552001, 10.8091021}, //
+
61755 {1.10573006, 10.8093672}, //
+
61756 {1.10601997, 10.8095913}, //
+
61757 {1.10640001, 10.8097744}, //
+
61758 {1.10686004, 10.8099174}, //
+
61759 {1.10740995, 10.8100185}, //
+
61760 {1.10803998, 10.8100796}, //
+
61761 {1.10874999, 10.8100996}, //
+
61762 {1.10948002, 10.8100796}, //
+
61763 {1.11017001, 10.8100185}, //
+
61764 {1.11082006, 10.8099174}, //
+
61765 {1.11143005, 10.8097744}, //
+
61766 {1.11198997, 10.8095913}, //
+
61767 {1.11250997, 10.8093672}, //
+
61768 {1.11298001, 10.8091021}, //
+
61769 {1.11341, 10.8087959}, //
+
61770 {1.11380005, 10.8084497}, //
+
61771 {1.1142, 10.8080931}, //
+
61772 {1.11464, 10.8077784}, //
+
61773 {1.11512005, 10.8075056}, //
+
61774 {1.11565006, 10.8072748}, //
+
61775 {1.11620998, 10.807086}, //
+
61776 {1.11681998, 10.8069391}, //
+
61777 {1.11747003, 10.8068342}, //
+
61778 {1.11817002, 10.8067713}, //
+
61779 {1.11889994, 10.8067503}, //
+
61780 {1.11894, 10.806015}, //
+
61781 {1.11907005, 10.8053226}, //
+
61782 {1.11927998, 10.8046722}, //
+
61783 {1.11957002, 10.8040638}, //
+
61784 {1.11995006, 10.8034973}, //
+
61785 {1.12040997, 10.8029718}, //
+
61786 {1.12096, 10.8024902}, //
+
61787 {1.12159002, 10.8020487}, //
+
61788 {1.12230003, 10.80165}, //
+
61789 {1.12318003, 10.8012934}, //
+
61790 {1.12431002, 10.8009777}, //
+
61791 {1.12568998, 10.8007059}, //
+
61792 {1.12732995, 10.8004751}, //
+
61793 {1.12921, 10.8002863}, //
+
61794 {1.13134003, 10.8001394}, //
+
61795 {1.13373005, 10.8000336}, //
+
61796 {1.13636005, 10.7999706}, //
+
61797 {1.13925004, 10.7999496}, //
+
61798 {1.14532006, 10.7993622}, //
+
61799 {1.15147996, 10.7991104}, //
+
61800 {1.15771997, 10.7991943}, //
+
61801 {1.16404998, 10.799614}, //
+
61802 {1.17044997, 10.8003702}, //
+
61803 {1.17693996, 10.8014612}, //
+
61804 {1.18350995, 10.8028879}, //
+
61805 {1.19016004, 10.8046513}, //
+
61806 {1.19690001, 10.8067503}, //
+
61807 {1.19984996, 10.8082933}, //
+
61808 {1.20266998, 10.8099203}, //
+
61809 {1.20536995, 10.8116331}, //
+
61810 {1.20793998, 10.8134308}, //
+
61811 {1.21037996, 10.8153152}, //
+
61812 {1.21270001, 10.8172827}, //
+
61813 {1.21489, 10.8193369}, //
+
61814 {1.21695995, 10.821476}, //
+
61815 {1.21889997, 10.8237}, //
+
61816 {1.22077, 10.8259563}, //
+
61817 {1.22258997, 10.8282137}, //
+
61818 {1.22438002, 10.830472}, //
+
61819 {1.22612, 10.8327322}, //
+
61820 {1.22782004, 10.8349934}, //
+
61821 {1.22948003, 10.8372564}, //
+
61822 {1.23108995, 10.8395185}, //
+
61823 {1.23266995, 10.8417835}, //
+
61824 {1.2342, 10.8440504}, //
+
61825 {1.2342, 10.8473997}, //
+
61826 {1.23494995, 10.8488483}, //
+
61827 {1.23571002, 10.8501701}, //
+
61828 {1.23645997, 10.851367}, //
+
61829 {1.23721004, 10.852437}, //
+
61830 {1.23795998, 10.8533812}, //
+
61831 {1.23871005, 10.8542004}, //
+
61832 {1.23945999, 10.8548927}, //
+
61833 {1.24020004, 10.8554592}, //
+
61834 {1.24094999, 10.8558998}, //
+
61835 {1.24170995, 10.8562994}, //
+
61836 {1.24246001, 10.85674}, //
+
61837 {1.24321997, 10.8572216}, //
+
61838 {1.24397004, 10.8577471}, //
+
61839 {1.24473, 10.8583136}, //
+
61840 {1.24547994, 10.858922}, //
+
61841 {1.24624002, 10.8595734}, //
+
61842 {1.24698997, 10.8602648}, //
+
61843 {1.24775004, 10.8610001}, //
+
61844 {1.24775004, 10.8627005}, //
+
61845 {1.24770999, 10.8630457}, //
+
61846 {1.24758005, 10.8633518}, //
+
61847 {1.24737, 10.8636169}, //
+
61848 {1.24707997, 10.8638411}, //
+
61849 {1.24670005, 10.8640242}, //
+
61850 {1.24624002, 10.8641672}, //
+
61851 {1.24568999, 10.8642693}, //
+
61852 {1.24505997, 10.8643303}, //
+
61853 {1.24434996, 10.8643503}, //
+
61854 {1.23343003, 10.8628912}, //
+
61855 {1.22326005, 10.861515}, //
+
61856 {1.21384001, 10.8602219}, //
+
61857 {1.20517004, 10.8590117}, //
+
61858 {1.19726002, 10.8578844}, //
+
61859 {1.19010997, 10.8568392}, //
+
61860 {1.18369997, 10.8558769}, //
+
61861 {1.17805004, 10.8549967}, //
+
61862 {1.17314994, 10.8542004}, //
+
61863 {1.15620005, 10.8542004}, //
+
61864 {1.16013002, 10.8550186}, //
+
61865 {1.16439998, 10.8559628}, //
+
61866 {1.16901004, 10.8570328}, //
+
61867 {1.17393994, 10.8582296}, //
+
61868 {1.17921996, 10.8595524}, //
+
61869 {1.18482006, 10.8610001}, //
+
61870 {1.19076002, 10.8625736}, //
+
61871 {1.19703996, 10.864274}, //
+
61872 {1.20365, 10.8661003}, //
+
61873 {1.21027005, 10.8679991}, //
+
61874 {1.21656001, 10.8699398}, //
+
61875 {1.22250998, 10.8719215}, //
+
61876 {1.22811997, 10.8739471}, //
+
61877 {1.23339999, 10.8760138}, //
+
61878 {1.23834002, 10.8781223}, //
+
61879 {1.24294996, 10.8802729}, //
+
61880 {1.24722004, 10.8824654}, //
+
61881 {1.25115001, 10.8846998}, //
+
61882 {1.25123, 10.8861485}, //
+
61883 {1.25147998, 10.8874702}, //
+
61884 {1.25189996, 10.8886671}, //
+
61885 {1.25248003, 10.8897371}, //
+
61886 {1.25322998, 10.8906813}, //
+
61887 {1.25415003, 10.8915005}, //
+
61888 {1.25522995, 10.8921928}, //
+
61889 {1.25647998, 10.8927593}, //
+
61890 {1.2579, 10.8931999}, //
+
61891 {1.25944996, 10.8935566}, //
+
61892 {1.26109004, 10.8938723}, //
+
61893 {1.26280999, 10.8941441}, //
+
61894 {1.26461995, 10.8943748}, //
+
61895 {1.2665, 10.8945637}, //
+
61896 {1.26847994, 10.8947105}, //
+
61897 {1.27052999, 10.8948164}, //
+
61898 {1.27268004, 10.8948793}, //
+
61899 {1.27489996, 10.8949003}, //
+
61900 {1.27716005, 10.8949423}, //
+
61901 {1.27941, 10.8950682}, //
+
61902 {1.28166997, 10.895278}, //
+
61903 {1.28392005, 10.8955717}, //
+
61904 {1.28618002, 10.8959494}, //
+
61905 {1.28842998, 10.8964109}, //
+
61906 {1.29068995, 10.8969574}, //
+
61907 {1.29294002, 10.8975859}, //
+
61908 {1.29519999, 10.8983002}, //
+
61909 {1.29746997, 10.8983841}, //
+
61910 {1.29972994, 10.8986359}, //
+
61911 {1.30199003, 10.8990564}, //
+
61912 {1.30426002, 10.8996429}, //
+
61913 {1.30651999, 10.9003992}, //
+
61914 {1.30877995, 10.9013224}, //
+
61915 {1.31104004, 10.9024134}, //
+
61916 {1.31329, 10.9036732}, //
+
61917 {1.31554997, 10.9050999}, //
+
61918 {1.31780005, 10.9066219}, //
+
61919 {1.32000005, 10.908186}, //
+
61920 {1.32216001, 10.9097948}, //
+
61921 {1.32427001, 10.9114456}, //
+
61922 {1.32633996, 10.9131403}, //
+
61923 {1.32836998, 10.9148779}, //
+
61924 {1.33036005, 10.9166584}, //
+
61925 {1.33229995, 10.9184828}, //
+
61926 {1.33420002, 10.9203501}, //
+
61927 {1.33606994, 10.9222288}, //
+
61928 {1.33789003, 10.9241076}, //
+
61929 {1.33966994, 10.9259892}, //
+
61930 {1.34141004, 10.9278708}, //
+
61931 {1.34309995, 10.9297543}, //
+
61932 {1.34475994, 10.9316387}, //
+
61933 {1.34635997, 10.9335251}, //
+
61934 {1.34792995, 10.9354115}, //
+
61935 {1.34944999, 10.9372997}, //
+
61936 {1.35625005, 10.9457502}, //
+
61937 {1.3664, 10.9219999}, //
+
61938 {1.36582994, 10.9212503}, //
+
61939 {1.36413002, 10.9189997}, //
+
61940 {1.36237001, 10.916667}, //
+
61941 {1.36129999, 10.9152498}, //
+
61942 {1.36015999, 10.9136972}, //
+
61943 {1.35897005, 10.9120626}, //
+
61944 {1.35774004, 10.9103441}, //
+
61945 {1.35646999, 10.9085436}, //
+
61946 {1.35514998, 10.9066601}, //
+
61947 {1.35379004, 10.9046946}, //
+
61948 {1.35239005, 10.9026461}, //
+
61949 {1.35093999, 10.9005146}, //
+
61950 {1.34944999, 10.8983002}, //
+
61951 {1.34792995, 10.8960762}, //
+
61952 {1.34635997, 10.8939371}, //
+
61953 {1.34475994, 10.8918829}, //
+
61954 {1.34309995, 10.8899155}, //
+
61955 {1.34141004, 10.888031}, //
+
61956 {1.33966994, 10.8862333}, //
+
61957 {1.33789003, 10.8845196}, //
+
61958 {1.33606994, 10.8828926}, //
+
61959 {1.33420002, 10.8813496}, //
+
61960 {1.33234, 10.8799229}, //
+
61961 {1.33053005, 10.878664}, //
+
61962 {1.32875001, 10.8775721}, //
+
61963 {1.32701004, 10.8766489}, //
+
61964 {1.32532001, 10.8758926}, //
+
61965 {1.32367003, 10.8753061}, //
+
61966 {1.32204998, 10.8748856}, //
+
61967 {1.32047999, 10.8746338}, //
+
61968 {1.31895006, 10.8745499}, //
+
61969 {1.31891, 10.8745708}, //
+
61970 {1.31877995, 10.8746338}, //
+
61971 {1.31857002, 10.8747387}, //
+
61972 {1.31827998, 10.8748856}, //
+
61973 {1.31789994, 10.8750753}, //
+
61974 {1.31689, 10.8755779}, //
+
61975 {1.31554997, 10.8762503}, //
+
61976 {1.31473005, 10.8766279}, //
+
61977 {1.31378996, 10.8770056}, //
+
61978 {1.31271994, 10.8773832}, //
+
61979 {1.31151998, 10.8777609}, //
+
61980 {1.31019998, 10.8781385}, //
+
61981 {1.30875003, 10.8785172}, //
+
61982 {1.30718005, 10.8788939}, //
+
61983 {1.30548, 10.8792725}, //
+
61984 {1.30365002, 10.8796501}, //
+
61985 {1.30181003, 10.8800068}, //
+
61986 {1.30006003, 10.8803225}, //
+
61987 {1.29839003, 10.8805943}, //
+
61988 {1.29680002, 10.880825}, //
+
61989 {1.29530001, 10.8810139}, //
+
61990 {1.29386997, 10.8811607}, //
+
61991 {1.29252994, 10.8812656}, //
+
61992 {1.29127002, 10.8813286}, //
+
61993 {1.29009998, 10.8813496}, //
+
61994 {1.27824998, 10.8813496}, //
+
61995 {1.27824998, 10.88305}, //
+
61996 {1.27822995, 10.8833961}, //
+
61997 {1.27816999, 10.8837023}, //
+
61998 {1.27805996, 10.8839674}, //
+
61999 {1.27790999, 10.8841906}, //
+
62000 {1.27772999, 10.8843737}, //
+
62001 {1.27749002, 10.8845167}, //
+
62002 {1.27722001, 10.8846188}, //
+
62003 {1.27690995, 10.8846798}, //
+
62004 {1.27655005, 10.8846998}, //
+
62005 {1.27618003, 10.8846798}, //
+
62006 {1.27581, 10.8846188}, //
+
62007 {1.27543998, 10.8845167}, //
+
62008 {1.27506995, 10.8843737}, //
+
62009 {1.27470005, 10.8841906}, //
+
62010 {1.27433002, 10.8839674}, //
+
62011 {1.27394998, 10.8837023}, //
+
62012 {1.27357996, 10.8833961}, //
+
62013 {1.27320004, 10.88305}, //
+
62014 {1.27279997, 10.8826723}, //
+
62015 {1.27235997, 10.8822937}, //
+
62016 {1.27188003, 10.881917}, //
+
62017 {1.27135003, 10.8815393}, //
+
62018 {1.27078998, 10.8811607}, //
+
62019 {1.27017999, 10.8807831}, //
+
62020 {1.26953006, 10.8804064}, //
+
62021 {1.26882994, 10.8800278}, //
+
62022 {1.26810002, 10.8796501}, //
+
62023 {1.26739001, 10.8792505}, //
+
62024 {1.26675999, 10.8788099}, //
+
62025 {1.26620996, 10.8783283}, //
+
62026 {1.26575005, 10.8778028}, //
+
62027 {1.26537001, 10.8772364}, //
+
62028 {1.26507998, 10.8766279}, //
+
62029 {1.26487005, 10.8759766}, //
+
62030 {1.26473999, 10.8752851}, //
+
62031 {1.26470006, 10.8745499}, //
+
62032 {1.26319003, 10.8723259}, //
+
62033 {1.26168001, 10.8701868}, //
+
62034 {1.26016998, 10.8681326}, //
+
62035 {1.25866997, 10.8661652}, //
+
62036 {1.25715995, 10.8642807}, //
+
62037 {1.25566006, 10.862483}, //
+
62038 {1.25415003, 10.8607702}, //
+
62039 {1.25265002, 10.8591433}, //
+
62040 {1.25115001, 10.8576002}, //
+
62041 {1.24900997, 10.8546724}, //
+
62042 {1.24712002, 10.8519106}, //
+
62043 {1.24547994, 10.8493166}, //
+
62044 {1.24409997, 10.8468885}, //
+
62045 {1.24295998, 10.8446283}, //
+
62046 {1.24207997, 10.8425331}, //
+
62047 {1.24144995, 10.8406057}, //
+
62048 {1.24108005, 10.8388443}, //
+
62049 {1.24094999, 10.8372498}, //
+
62050 {1.24089003, 10.8356981}, //
+
62051 {1.24070001, 10.8340616}, //
+
62052 {1.24038005, 10.8323441}, //
+
62053 {1.23994005, 10.8305445}, //
+
62054 {1.23938, 10.82866}, //
+
62055 {1.23868001, 10.8266935}, //
+
62056 {1.23785996, 10.824646}, //
+
62057 {1.23692, 10.8225136}, //
+
62058 {1.23584998, 10.8203001}, //
+
62059 {1.23470998, 10.8180761}, //
+
62060 {1.23352003, 10.815937}, //
+
62061 {1.23229003, 10.8138828}, //
+
62062 {1.23101997, 10.8119154}, //
+
62063 {1.22969997, 10.8100309}, //
+
62064 {1.22834003, 10.8082333}, //
+
62065 {1.22694004, 10.8065205}, //
+
62066 {1.22548997, 10.8048925}, //
+
62067 {1.22399998, 10.8033504}, //
+
62068 {1.22246003, 10.8025742}, //
+
62069 {1.22082996, 10.8017569}, //
+
62070 {1.21912003, 10.8009005}, //
+
62071 {1.21731997, 10.8000021}, //
+
62072 {1.21544003, 10.7990627}, //
+
62073 {1.21346998, 10.7980833}, //
+
62074 {1.21141005, 10.7970629}, //
+
62075 {1.20927, 10.7960024}, //
+
62076 {1.20704997, 10.7948999}, //
+
62077 {1.20483994, 10.793746}, //
+
62078 {1.20270002, 10.7925491}, //
+
62079 {1.20065999, 10.7913113}, //
+
62080 {1.19869006, 10.7900314}, //
+
62081 {1.19681001, 10.7887087}, //
+
62082 {1.19500995, 10.787344}, //
+
62083 {1.19329, 10.7859383}, //
+
62084 {1.19165003, 10.7844896}, //
+
62085 {1.19009995, 10.783}, //
+
62086 {1.19003999, 10.782958}, //
+
62087 {1.18909001, 10.7823277}, //
+
62088 {1.18499994, 10.7796001}, //
+
62089 {1.1839, 10.7788658}, //
+
62090 {1.18283999, 10.7781754}, //
+
62091 {1.18182003, 10.7775278}, //
+
62092 {1.18084002, 10.7769232}, //
+
62093 {1.17990005, 10.7763624}, //
+
62094 {1.17900002, 10.7758436}, //
+
62095 {1.17814004, 10.7753696}, //
+
62096 {1.17733002, 10.7749376}, //
+
62097 {1.17655003, 10.7745504}, //
+
62098 {1.17581999, 10.7741718}, //
+
62099 {1.17512, 10.7737942}, //
+
62100 {1.17446995, 10.7734175}, //
+
62101 {1.17385995, 10.7730389}, //
+
62102 {1.17330003, 10.7726612}, //
+
62103 {1.17277002, 10.7722826}, //
+
62104 {1.17228997, 10.7719059}, //
+
62105 {1.17184997, 10.7715282}, //
+
62106 {1.17145002, 10.7711496}, //
+
62107 {1.17077994, 10.7704782}, //
+
62108 {1.17051005, 10.7702065}, //
+
62109 {1.17026997, 10.7699747}, //
+
62110 {1.16982996, 10.7695341}, //
+
62111 {1.16977, 10.7694712}, //
+
62112 {1.16974998, 10.7694502}, //
+
62113 });
+
62114 polys.push_back({
+
62115 {1.2579, 10.8983002}, //
+
62116 {1.25645995, 10.8983212}, //
+
62117 {1.25514996, 10.8983841}, //
+
62118 {1.25396001, 10.898489}, //
+
62119 {1.2529, 10.8986359}, //
+
62120 {1.25196004, 10.8988247}, //
+
62121 {1.25114, 10.8990564}, //
+
62122 {1.25045002, 10.8993282}, //
+
62123 {1.24988997, 10.8996429}, //
+
62124 {1.24944997, 10.8999996}, //
+
62125 {1.24905002, 10.9003887}, //
+
62126 {1.24861002, 10.9008198}, //
+
62127 {1.24812996, 10.9012947}, //
+
62128 {1.24759996, 10.9018126}, //
+
62129 {1.24704003, 10.9023733}, //
+
62130 {1.24643004, 10.9029779}, //
+
62131 {1.24577999, 10.9036255}, //
+
62132 {1.24507999, 10.9043159}, //
+
62133 {1.24434996, 10.9050503}, //
+
62134 {1.24428999, 10.9058266}, //
+
62135 {1.24409997, 10.9066448}, //
+
62136 {1.24378002, 10.907506}, //
+
62137 {1.24334002, 10.9084082}, //
+
62138 {1.24277997, 10.9093523}, //
+
62139 {1.24207997, 10.9103394}, //
+
62140 {1.24126005, 10.9113674}, //
+
62141 {1.24031997, 10.9124374}, //
+
62142 {1.23924994, 10.9135504}, //
+
62143 {1.23810995, 10.9146729}, //
+
62144 {1.23692, 10.9157972}, //
+
62145 {1.23569, 10.9169226}, //
+
62146 {1.23441994, 10.9180489}, //
+
62147 {1.23310006, 10.9191761}, //
+
62148 {1.23174, 10.9203053}, //
+
62149 {1.23034, 10.9214354}, //
+
62150 {1.22888994, 10.9225674}, //
+
62151 {1.22739995, 10.9237003}, //
+
62152 {1.22586, 10.9248123}, //
+
62153 {1.22423005, 10.9258823}, //
+
62154 {1.22251999, 10.9269114}, //
+
62155 {1.22072005, 10.9278975}, //
+
62156 {1.21884, 10.9288416}, //
+
62157 {1.21686995, 10.9297447}, //
+
62158 {1.21481001, 10.9306049}, //
+
62159 {1.21266997, 10.9314232}, //
+
62160 {1.21045005, 10.9322004}, //
+
62161 {1.21036994, 10.9322844}, //
+
62162 {1.21026003, 10.9323893}, //
+
62163 {1.21010995, 10.9325361}, //
+
62164 {1.20968997, 10.9329557}, //
+
62165 {1.20911002, 10.9335432}, //
+
62166 {1.20832002, 10.9343348}, //
+
62167 {1.20864999, 10.9342566}, //
+
62168 {1.21147001, 10.9335012}, //
+
62169 {1.21458995, 10.9325781}, //
+
62170 {1.21800005, 10.9314861}, //
+
62171 {1.22169995, 10.9302273}, //
+
62172 {1.22570002, 10.9287996}, //
+
62173 {1.22982001, 10.927206}, //
+
62174 {1.23389995, 10.9254446}, //
+
62175 {1.23793995, 10.9235163}, //
+
62176 {1.24194002, 10.921422}, //
+
62177 {1.24590003, 10.9191608}, //
+
62178 {1.24980998, 10.9167337}, //
+
62179 {1.25367999, 10.9141388}, //
+
62180 {1.25750995, 10.9113779}, //
+
62181 {1.26129997, 10.9084501}, //
+
62182 {1.26203001, 10.9076948}, //
+
62183 {1.26273, 10.9069414}, //
+
62184 {1.26338005, 10.906189}, //
+
62185 {1.26399004, 10.9054375}, //
+
62186 {1.26454997, 10.9046879}, //
+
62187 {1.26507998, 10.9039392}, //
+
62188 {1.26556003, 10.9031916}, //
+
62189 {1.26600003, 10.9024448}, //
+
62190 {1.26639998, 10.9017}, //
+
62191 {1.26673996, 10.9009867}, //
+
62192 {1.26698995, 10.9003572}, //
+
62193 {1.26716006, 10.8998108}, //
+
62194 {1.26724005, 10.8993492}, //
+
62195 {1.26724005, 10.8989716}, //
+
62196 {1.26716006, 10.8986778}, //
+
62197 {1.26698995, 10.898468}, //
+
62198 {1.26673996, 10.8983421}, //
+
62199 {1.26639998, 10.8983002}, //
+
62200 });
+
62201 polys.push_back({
+
62202 {1.13906002, 10.8138781}, //
+
62203 {1.13891006, 10.8141718}, //
+
62204 {1.13873005, 10.8145494}, //
+
62205 {1.13821995, 10.8155565}, //
+
62206 {1.13791001, 10.816186}, //
+
62207 {1.13755, 10.8169003}, //
+
62208 {1.13716996, 10.8176975}, //
+
62209 {1.13679004, 10.8185787}, //
+
62210 {1.13642001, 10.8195438}, //
+
62211 {1.13603997, 10.8205938}, //
+
62212 {1.13566005, 10.8217268}, //
+
62213 {1.13528001, 10.8229437}, //
+
62214 {1.13490999, 10.8242464}, //
+
62215 {1.13452995, 10.8256311}, //
+
62216 {1.13415003, 10.8270998}, //
+
62217 {1.13374996, 10.8285589}, //
+
62218 {1.13330996, 10.8299351}, //
+
62219 {1.13283002, 10.8312283}, //
+
62220 {1.13230002, 10.8324385}, //
+
62221 {1.13173997, 10.8335657}, //
+
62222 {1.13112998, 10.8346109}, //
+
62223 {1.13048005, 10.8355732}, //
+
62224 {1.12978005, 10.8364534}, //
+
62225 {1.12905002, 10.8372498}, //
+
62226 {1.12826002, 10.8379641}, //
+
62227 {1.12739003, 10.8385925}, //
+
62228 {1.12643003, 10.839139}, //
+
62229 {1.12539005, 10.8396006}, //
+
62230 {1.12425995, 10.8399782}, //
+
62231 {1.12304997, 10.8402719}, //
+
62232 {1.12175, 10.8404818}, //
+
62233 {1.12037003, 10.8406076}, //
+
62234 {1.11889994, 10.8406496}, //
+
62235 {1.10195005, 10.8406496}, //
+
62236 {1.10195005, 10.8542004}, //
+
62237 {1.10196996, 10.855669}, //
+
62238 {1.10203004, 10.8570538}, //
+
62239 {1.10213995, 10.8583565}, //
+
62240 {1.10229003, 10.8595734}, //
+
62241 {1.10247004, 10.8607063}, //
+
62242 {1.10271001, 10.8617563}, //
+
62243 {1.10298002, 10.8627214}, //
+
62244 {1.10328996, 10.8636017}, //
+
62245 {1.10364997, 10.8643999}, //
+
62246 {1.10527003, 10.8675852}, //
+
62247 {1.10532999, 10.8677092}, //
+
62248 {1.10535002, 10.8677502}, //
+
62249 {1.10689998, 10.8669949}, //
+
62250 {1.10854006, 10.8662415}, //
+
62251 {1.11026001, 10.865489}, //
+
62252 {1.11205995, 10.8647385}, //
+
62253 {1.11394, 10.8639879}, //
+
62254 {1.11591005, 10.8632393}, //
+
62255 {1.11794996, 10.8624907}, //
+
62256 {1.12009001, 10.8617449}, //
+
62257 {1.12230003, 10.8610001}, //
+
62258 {1.12451005, 10.8602648}, //
+
62259 {1.12664998, 10.8595734}, //
+
62260 {1.12869, 10.858922}, //
+
62261 {1.13066006, 10.8583136}, //
+
62262 {1.13253999, 10.8577471}, //
+
62263 {1.13434005, 10.8572216}, //
+
62264 {1.13606, 10.85674}, //
+
62265 {1.13769996, 10.8562994}, //
+
62266 {1.13925004, 10.8558998}, //
+
62267 {1.14072001, 10.8555431}, //
+
62268 {1.14209998, 10.8552284}, //
+
62269 {1.14339995, 10.8549557}, //
+
62270 {1.14461005, 10.8547249}, //
+
62271 {1.14574003, 10.8545361}, //
+
62272 {1.14678001, 10.8543892}, //
+
62273 {1.14774001, 10.8542843}, //
+
62274 {1.14861, 10.8542213}, //
+
62275 {1.1494, 10.8542004}, //
+
62276 {1.15279996, 10.8542004}, //
+
62277 {1.15287995, 10.8540316}, //
+
62278 {1.15313995, 10.853528}, //
+
62279 {1.15331995, 10.8531513}, //
+
62280 {1.15356004, 10.8526888}, //
+
62281 {1.15414, 10.8515139}, //
+
62282 {1.15450001, 10.8507996}, //
+
62283 {1.15480995, 10.8500452}, //
+
62284 {1.15499997, 10.8492908}, //
+
62285 {1.15506995, 10.8485394}, //
+
62286 {1.15499997, 10.8477879}, //
+
62287 {1.15480995, 10.8470383}, //
+
62288 {1.15450001, 10.8462887}, //
+
62289 {1.15406001, 10.845541}, //
+
62290 {1.15348995, 10.8447952}, //
+
62291 {1.15279996, 10.8440504}, //
+
62292 {1.15278006, 10.8432732}, //
+
62293 {1.15271997, 10.8424549}, //
+
62294 {1.15260994, 10.8415937}, //
+
62295 {1.15245998, 10.8406916}, //
+
62296 {1.15227997, 10.8397484}, //
+
62297 {1.15204, 10.8387613}, //
+
62298 {1.15177, 10.8377333}, //
+
62299 {1.15146005, 10.8366623}, //
+
62300 {1.15110004, 10.8355503}, //
+
62301 {1.15069997, 10.8344173}, //
+
62302 {1.15025997, 10.8332863}, //
+
62303 {1.14978004, 10.8321562}, //
+
62304 {1.14925003, 10.831027}, //
+
62305 {1.14868999, 10.8298988}, //
+
62306 {1.14807999, 10.8287716}, //
+
62307 {1.14742994, 10.8276472}, //
+
62308 {1.14672995, 10.8265228}, //
+
62309 {1.14600003, 10.8254004}, //
+
62310 {1.14528, 10.8242884}, //
+
62311 {1.14459002, 10.8232174}, //
+
62312 {1.14394999, 10.8221893}, //
+
62313 {1.14335001, 10.8212023}, //
+
62314 {1.14278996, 10.8202581}, //
+
62315 {1.14226997, 10.819356}, //
+
62316 {1.14179003, 10.8184948}, //
+
62317 {1.14135003, 10.8176765}, //
+
62318 {1.14094996, 10.8169003}, //
+
62319 {1.13933003, 10.8136683}, //
+
62320 {1.13926995, 10.8135424}, //
+
62321 {1.13925004, 10.8135004}, //
+
62322 });
+
62323 polys.push_back({
+
62324 {4.46035004, 14.6230602}, //
+
62325 {4.46079016, 14.6233902}, //
+
62326 {4.46135998, 14.6238899}, //
+
62327 {4.46204996, 14.6245499}, //
+
62328 {4.46943998, 14.6319399}, //
+
62329 {4.47055006, 14.63305}, //
+
62330 {4.47168016, 14.6342497}, //
+
62331 {4.47280979, 14.6355696}, //
+
62332 {4.4739399, 14.6370096}, //
+
62333 {4.47507, 14.6385803}, //
+
62334 {4.4762001, 14.6402798}, //
+
62335 {4.47733021, 14.6420898}, //
+
62336 {4.47844982, 14.6440401}, //
+
62337 {4.47957993, 14.6461096}, //
+
62338 {4.48070002, 14.6483002}, //
+
62339 {4.48185015, 14.6505203}, //
+
62340 {4.48304987, 14.6526604}, //
+
62341 {4.48429012, 14.6547203}, //
+
62342 {4.48556995, 14.6566896}, //
+
62343 {4.48688984, 14.6585703}, //
+
62344 {4.48825979, 14.6603699}, //
+
62345 {4.48965979, 14.6620798}, //
+
62346 {4.49110985, 14.6637096}, //
+
62347 {4.49259996, 14.6652498}, //
+
62348 {4.49739981, 14.6698999}, //
+
62349 {4.50279999, 14.6747999}, //
+
62350 {4.50878, 14.6799498}, //
+
62351 {4.51534986, 14.6853504}, //
+
62352 {4.52250004, 14.6910105}, //
+
62353 {4.53024006, 14.6969204}, //
+
62354 {4.53857994, 14.7030802}, //
+
62355 {4.54749012, 14.7094898}, //
+
62356 {4.55700016, 14.7161503}, //
+
62357 {4.56085014, 14.7184896}, //
+
62358 {4.56486988, 14.7209997}, //
+
62359 {4.56905985, 14.72367}, //
+
62360 {4.57341003, 14.7265196}, //
+
62361 {4.57792997, 14.7295303}, //
+
62362 {4.58262014, 14.7327099}, //
+
62363 {4.58748007, 14.7360497}, //
+
62364 {4.59251022, 14.7395697}, //
+
62365 {4.59770012, 14.7432499}, //
+
62366 {4.59826994, 14.7436895}, //
+
62367 {4.60165024, 14.7453098}, //
+
62368 {4.60497999, 14.7469101}, //
+
62369 {4.60818005, 14.7484798}, //
+
62370 {4.61124992, 14.75}, //
+
62371 {4.61352015, 14.7511396}, //
+
62372 {4.61277008, 14.7515202}, //
+
62373 {4.61129999, 14.7515001}, //
+
62374 {4.60941982, 14.7509403}, //
+
62375 {4.60712004, 14.7498302}, //
+
62376 {4.60440016, 14.7481804}, //
+
62377 {4.60126019, 14.7459898}, //
+
62378 {4.59826994, 14.7436895}, //
+
62379 {4.59819984, 14.7436504}, //
+
62380 {4.59462023, 14.7419596}, //
+
62381 {4.59091997, 14.7402201}, //
+
62382 {4.58709002, 14.7384396}, //
+
62383 {4.58312988, 14.7366199}, //
+
62384 {4.57905006, 14.7347498}, //
+
62385 {4.57495022, 14.7329102}, //
+
62386 {4.57093, 14.7311602}, //
+
62387 {4.5669899, 14.7294903}, //
+
62388 {4.56313992, 14.7278996}, //
+
62389 {4.55938005, 14.7264004}, //
+
62390 {4.55568981, 14.7249699}, //
+
62391 {4.55210018, 14.72363}, //
+
62392 {4.54858017, 14.7223701}, //
+
62393 {4.5451498, 14.7212}, //
+
62394 {4.54187012, 14.7201004}, //
+
62395 {4.53879023, 14.7190399}, //
+
62396 {4.53592014, 14.7180204}, //
+
62397 {4.53325987, 14.7170401}, //
+
62398 {4.53080988, 14.7160997}, //
+
62399 {4.52857018, 14.7152004}, //
+
62400 {4.5265398, 14.7143402}, //
+
62401 {4.52472019, 14.7135296}, //
+
62402 {4.5230999, 14.7127504}, //
+
62403 {4.52144003, 14.7125998}, //
+
62404 {4.51948977, 14.7121601}, //
+
62405 {4.51725006, 14.7114296}, //
+
62406 {4.51470995, 14.7103996}, //
+
62407 {4.51188993, 14.7090797}, //
+
62408 {4.50876999, 14.7074604}, //
+
62409 {4.50535011, 14.7055502}, //
+
62410 {4.50164986, 14.7033501}, //
+
62411 {4.49765015, 14.7008495}, //
+
62412 {4.49499989, 14.6991301}, //
+
62413 {4.49614, 14.6989603}, //
+
62414 {4.49707985, 14.6983995}, //
+
62415 {4.49765015, 14.6974497}, //
+
62416 {4.49792004, 14.6962004}, //
+
62417 {4.49799013, 14.6947002}, //
+
62418 {4.49783993, 14.6929502}, //
+
62419 {4.49747992, 14.6909504}, //
+
62420 {4.49692011, 14.6886902}, //
+
62421 {4.49614, 14.6861801}, //
+
62422 {4.49515009, 14.6834202}, //
+
62423 {4.4939599, 14.6804104}, //
+
62424 {4.4925499, 14.6771498}, //
+
62425 {4.49097013, 14.6736603}, //
+
62426 {4.48921013, 14.6699495}, //
+
62427 {4.48728991, 14.6660404}, //
+
62428 {4.48520994, 14.6619196}, //
+
62429 {4.48295021, 14.6575804}, //
+
62430 {4.48052979, 14.6530399}, //
+
62431 {4.47794008, 14.6482897}, //
+
62432 {4.47518015, 14.6433201}, //
+
62433 {4.47224998, 14.6381502}, //
+
62434 {4.47008991, 14.6359701}, //
+
62435 {4.46814013, 14.6339502}, //
+
62436 {4.46639013, 14.6321096}, //
+
62437 {4.46485996, 14.6304302}, //
+
62438 {4.46354008, 14.6289196}, //
+
62439 {4.46243, 14.6275702}, //
+
62440 {4.46153021, 14.6264}, //
+
62441 {4.46083021, 14.6253901}, //
+
62442 {4.46035004, 14.6245499}, //
+
62443 {4.46004009, 14.6238899}, //
+
62444 {4.45984983, 14.6233902}, //
+
62445 {4.45978022, 14.6230602}, //
+
62446 {4.45984983, 14.6229}, //
+
62447 {4.46004009, 14.6229}, //
+
62448 });
+
62449 polys.push_back({
+
62450 {4.84653997, 14.6681499}, //
+
62451 {4.84689999, 14.6686497}, //
+
62452 {4.84726, 14.66957}, //
+
62453 {4.84756994, 14.6708298}, //
+
62454 {4.84783983, 14.6724195}, //
+
62455 {4.84808016, 14.6743498}, //
+
62456 {4.84825993, 14.67661}, //
+
62457 {4.84841013, 14.6792097}, //
+
62458 {4.8485198, 14.6821404}, //
+
62459 {4.84857988, 14.6854}, //
+
62460 {4.84859991, 14.6890001}, //
+
62461 {4.84859991, 14.7194996}, //
+
62462 {4.84938002, 14.72299}, //
+
62463 {4.85019016, 14.7259398}, //
+
62464 {4.8510499, 14.7283497}, //
+
62465 {4.85195017, 14.7302103}, //
+
62466 {4.85289001, 14.7315302}, //
+
62467 {4.85386992, 14.7322998}, //
+
62468 {4.85469007, 14.73248}, //
+
62469 {4.85349989, 14.73421}, //
+
62470 {4.85200024, 14.7364502}, //
+
62471 {4.85053015, 14.7378798}, //
+
62472 {4.84915018, 14.7391396}, //
+
62473 {4.84783983, 14.7402296}, //
+
62474 {4.8466301, 14.7411499}, //
+
62475 {4.84548998, 14.74191}, //
+
62476 {4.84443998, 14.7424898}, //
+
62477 {4.84348011, 14.7429104}, //
+
62478 {4.84259987, 14.7431698}, //
+
62479 {4.84180021, 14.7432499}, //
+
62480 {4.84096003, 14.7432098}, //
+
62481 {4.8399601, 14.7430801}, //
+
62482 {4.83877993, 14.7428703}, //
+
62483 {4.83744001, 14.7425804}, //
+
62484 {4.83593988, 14.7421999}, //
+
62485 {4.83427, 14.7417402}, //
+
62486 {4.83242989, 14.74119}, //
+
62487 {4.83042002, 14.7405596}, //
+
62488 {4.83029985, 14.7405195}, //
+
62489 {4.83257008, 14.7402296}, //
+
62490 {4.8345499, 14.7395201}, //
+
62491 {4.83624983, 14.7384005}, //
+
62492 {4.83764982, 14.7368498}, //
+
62493 {4.8387599, 14.73489}, //
+
62494 {4.83958006, 14.7325001}, //
+
62495 {4.84009981, 14.7297001}, //
+
62496 {4.84049988, 14.7265997}, //
+
62497 {4.84094, 14.72334}, //
+
62498 {4.84142017, 14.7199097}, //
+
62499 {4.84194994, 14.7163095}, //
+
62500 {4.84251022, 14.7125502}, //
+
62501 {4.8431201, 14.7086096}, //
+
62502 {4.84377003, 14.7045097}, //
+
62503 {4.84447002, 14.7002401}, //
+
62504 {4.84520006, 14.6957998}, //
+
62505 {4.84520006, 14.6822004}, //
+
62506 {4.84522009, 14.6786804}, //
+
62507 {4.84528017, 14.6756697}, //
+
62508 {4.84538984, 14.6731596}, //
+
62509 {4.84554005, 14.6711502}, //
+
62510 {4.84571981, 14.6696501}, //
+
62511 {4.84596014, 14.6686401}, //
+
62512 {4.84623003, 14.6681404}, //
+
62513 });
+
62514 polys.push_back({
+
62515 {4.42619991, 14.6395502}, //
+
62516 {4.42644978, 14.6398001}, //
+
62517 {4.42914009, 14.6424599}, //
+
62518 {4.43190002, 14.6451702}, //
+
62519 {4.43476009, 14.6479197}, //
+
62520 {4.43768978, 14.6506996}, //
+
62521 {4.44071007, 14.6535301}, //
+
62522 {4.44380999, 14.6563997}, //
+
62523 {4.44699001, 14.6593103}, //
+
62524 {4.45025015, 14.6622601}, //
+
62525 {4.45359993, 14.6652498}, //
+
62526 {4.45693016, 14.6682701}, //
+
62527 {4.46013021, 14.6712904}, //
+
62528 {4.46320009, 14.6743097}, //
+
62529 {4.46614981, 14.67733}, //
+
62530 {4.46630001, 14.6774902}, //
+
62531 {4.46966982, 14.6803598}, //
+
62532 {4.47353983, 14.6835403}, //
+
62533 {4.47744989, 14.6866302}, //
+
62534 {4.48141003, 14.6896496}, //
+
62535 {4.48541021, 14.6925697}, //
+
62536 {4.48944998, 14.6954203}, //
+
62537 {4.4935298, 14.6981697}, //
+
62538 {4.49499989, 14.6991301}, //
+
62539 {4.49482012, 14.6991596}, //
+
62540 {4.49313021, 14.6989698}, //
+
62541 {4.49104977, 14.69841}, //
+
62542 {4.48860979, 14.6974697}, //
+
62543 {4.48577976, 14.6961603}, //
+
62544 {4.48258018, 14.6944704}, //
+
62545 {4.47900009, 14.6924}, //
+
62546 {4.4766798, 14.6893902}, //
+
62547 {4.47423983, 14.6863804}, //
+
62548 {4.47167015, 14.6833601}, //
+
62549 {4.46896982, 14.6803503}, //
+
62550 {4.46630001, 14.6774902}, //
+
62551 {4.46583986, 14.6771002}, //
+
62552 {4.46204996, 14.6737499}, //
+
62553 {4.45833015, 14.6703796}, //
+
62554 {4.45467997, 14.6670504}, //
+
62555 {4.45112991, 14.6637697}, //
+
62556 {4.44764996, 14.6605196}, //
+
62557 {4.44427013, 14.6573095}, //
+
62558 {4.44095993, 14.65415}, //
+
62559 {4.43773985, 14.6510296}, //
+
62560 {4.43459988, 14.6479397}, //
+
62561 {4.43155003, 14.6449003}, //
+
62562 });
+
62563 polys.push_back({
+
62564 {4.41819, 14.6315403}, //
+
62565 {4.42115021, 14.6344995}, //
+
62566 {4.41950989, 14.6328602}, //
+
62567 });
+
62568 polys.push_back({
+
62569 {5.5910902, 14.0046902}, //
+
62570 {5.59114981, 14.0074997}, //
+
62571 {5.59112978, 14.0098801}, //
+
62572 {5.59107018, 14.0125103}, //
+
62573 {5.59096003, 14.0153999}, //
+
62574 {5.59080982, 14.0185404}, //
+
62575 {5.59063005, 14.0219297}, //
+
62576 {5.59039021, 14.0255699}, //
+
62577 {5.59011984, 14.02946}, //
+
62578 {5.58980989, 14.0335999}, //
+
62579 {5.58944988, 14.0380001}, //
+
62580 {5.58906984, 14.0424995}, //
+
62581 {5.58888006, 14.0447197}, //
+
62582 {5.58893013, 14.0451603}, //
+
62583 {5.5892601, 14.0504303}, //
+
62584 {5.58942986, 14.0557098}, //
+
62585 {5.58942986, 14.0609903}, //
+
62586 {5.5892601, 14.0662699}, //
+
62587 {5.58893013, 14.0715399}, //
+
62588 {5.58841991, 14.0768204}, //
+
62589 {5.58774996, 14.0820999}, //
+
62590 {5.58768988, 14.0864201}, //
+
62591 {5.5875001, 14.0903702}, //
+
62592 {5.58718014, 14.0939398}, //
+
62593 {5.58674002, 14.0971403}, //
+
62594 {5.58618021, 14.0999603}, //
+
62595 {5.58548021, 14.1024103}, //
+
62596 {5.58466005, 14.1044798}, //
+
62597 {5.58372021, 14.1061802}, //
+
62598 {5.58265018, 14.1075001}, //
+
62599 {5.58225012, 14.1078701}, //
+
62600 {5.58181, 14.1094904}, //
+
62601 {5.58132982, 14.1107101}, //
+
62602 {5.58081007, 14.1115103}, //
+
62603 {5.58024979, 14.1118898}, //
+
62604 {5.57964993, 14.1118402}, //
+
62605 {5.57901001, 14.1113796}, //
+
62606 {5.57832003, 14.1105003}, //
+
62607 {5.5782299, 14.1103296}, //
+
62608 {5.5792799, 14.1099596}, //
+
62609 {5.58039999, 14.1093502}, //
+
62610 {5.58153009, 14.10853}, //
+
62611 {5.58225012, 14.1078701}, //
+
62612 {5.58225012, 14.1078596}, //
+
62613 {5.58265018, 14.1057997}, //
+
62614 {5.58303022, 14.1034403}, //
+
62615 {5.58340979, 14.1008701}, //
+
62616 {5.58377981, 14.0980902}, //
+
62617 {5.58415985, 14.0951004}, //
+
62618 {5.58453989, 14.0918999}, //
+
62619 {5.58491993, 14.0884895}, //
+
62620 {5.58528996, 14.0848703}, //
+
62621 {5.58566999, 14.0810404}, //
+
62622 {5.58605003, 14.0769997}, //
+
62623 {5.58643007, 14.0728302}, //
+
62624 {5.58681011, 14.0686302}, //
+
62625 {5.58718014, 14.0643797}, //
+
62626 {5.58756018, 14.0600901}, //
+
62627 {5.58794022, 14.0557499}, //
+
62628 {5.58831978, 14.0513802}, //
+
62629 {5.5886898, 14.0469599}, //
+
62630 {5.58888006, 14.0447197}, //
+
62631 {5.58841991, 14.0398798}, //
+
62632 {5.58774996, 14.0346003}, //
+
62633 {5.58774996, 14.0091496}, //
+
62634 {5.58783007, 14.0074196}, //
+
62635 {5.58808994, 14.0059795}, //
+
62636 {5.58851004, 14.0048304}, //
+
62637 {5.58908987, 14.0039797}, //
+
62638 {5.58984995, 14.0034199}, //
+
62639 {5.59076977, 14.00315}, //
+
62640 {5.59097004, 14.00315}, //
+
62641 });
+
62642 TestPoly(polys, 62597);
+
62643}
+
62644
+
62645TEST(Polygon, Zebra1) {
+
62646 Polygons polys;
+
62647 polys.push_back({
+
62648 {3.09963012, 11.8871593}, //
+
62649 {3.09938002, 11.8866711}, //
+
62650 {3.09951997, 11.8859205}, //
+
62651 {3.09950995, 11.8857927}, //
+
62652 {3.08537006, 11.1878433}, //
+
62653 {3.08542991, 11.1872139}, //
+
62654 {3.08544993, 11.1864996}, //
+
62655 {3.08544993, 11.1830997}, //
+
62656 {3.08542991, 11.1823864}, //
+
62657 {3.08537006, 11.181757}, //
+
62658 {3.08525991, 11.1812115}, //
+
62659 {3.08510995, 11.1807489}, //
+
62660 {3.08492994, 11.1803722}, //
+
62661 {3.08469009, 11.1800776}, //
+
62662 {3.08441997, 11.1798677}, //
+
62663 {3.06850004, 11.1661501}, //
+
62664 {3.06774998, 11.1654148}, //
+
62665 {3.06700993, 11.1647234}, //
+
62666 {3.0662601, 11.164072}, //
+
62667 {3.06551003, 11.1634636}, //
+
62668 {3.06475997, 11.1628971}, //
+
62669 {2.80042005, 10.942915}, //
+
62670 {3.08769989, 11.1816254}, //
+
62671 {3.08808994, 11.1857281}, //
+
62672 {3.08870006, 11.1901665}, //
+
62673 {3.08951998, 11.1949396}, //
+
62674 {3.09054995, 11.2000504}, //
+
62675 {3.0990901, 11.2414637}, //
+
62676 {3.09922004, 11.2420931}, //
+
62677 {3.09942007, 11.2426386}, //
+
62678 {3.11793995, 11.2951069}, //
+
62679 {3.12184, 11.3064022}, //
+
62680 {3.12614989, 11.3186998}, //
+
62681 {3.13067007, 11.3314896}, //
+
62682 {3.13519001, 11.3442383}, //
+
62683 {3.13971996, 11.3569441}, //
+
62684 {3.1442399, 11.3696089}, //
+
62685 {3.14876008, 11.3822308}, //
+
62686 {3.15328002, 11.3948107}, //
+
62687 {3.15780997, 11.4073486}, //
+
62688 {3.16232991, 11.4198456}, //
+
62689 {3.16685009, 11.4322996}, //
+
62690 {3.17120004, 11.444252}, //
+
62691 {3.17522001, 11.4552412}, //
+
62692 {3.17891002, 11.4652672}, //
+
62693 {3.18225002, 11.4743299}, //
+
62694 {3.18526006, 11.4824305}, //
+
62695 {3.18793988, 11.4895668}, //
+
62696 {3.19027996, 11.4957409}, //
+
62697 {3.19228005, 11.5009518}, //
+
62698 {3.19394994, 11.5052004}, //
+
62699 {3.25611997, 11.6272669}, //
+
62700 {3.26069999, 11.6363106}, //
+
62701 {3.26540995, 11.6453562}, //
+
62702 {3.27025008, 11.6543999}, //
+
62703 {3.2750001, 11.6631088}, //
+
62704 {3.27945995, 11.6711483}, //
+
62705 {3.28362989, 11.6785173}, //
+
62706 {3.51034999, 12.0824699}, //
+
62707 {3.51939011, 12.1050701}, //
+
62708 {3.52373004, 12.1156197}, //
+
62709 {3.52793002, 12.1256704}, //
+
62710 {3.53201008, 12.1352196}, //
+
62711 {3.53596997, 12.1442604}, //
+
62712 {3.53979993, 12.1527996}, //
+
62713 {3.56103992, 12.2002897}, //
+
62714 {3.56443, 12.2080097}, //
+
62715 {3.56806993, 12.2161102}, //
+
62716 {3.57195997, 12.2245798}, //
+
62717 {3.57610011, 12.2334299}, //
+
62718 {3.58049989, 12.24265}, //
+
62719 {3.58504009, 12.2520304}, //
+
62720 {3.58962989, 12.2613297}, //
+
62721 {3.59424996, 12.2705402}, //
+
62722 {3.59891009, 12.2796698}, //
+
62723 {3.60362005, 12.2887096}, //
+
62724 {3.60837007, 12.2976704}, //
+
62725 {3.61314988, 12.30655}, //
+
62726 {3.61798, 12.31534}, //
+
62727 {3.62284994, 12.3240499}, //
+
62728 {3.62759995, 12.3324404}, //
+
62729 {3.63206005, 12.3402901}, //
+
62730 {3.63622999, 12.3476}, //
+
62731 {3.64011002, 12.3543596}, //
+
62732 {3.64369011, 12.3605804}, //
+
62733 {3.64698005, 12.36625}, //
+
62734 {3.64998007, 12.3713799}, //
+
62735 {3.65268993, 12.3759604}, //
+
62736 {3.65510011, 12.3800001}, //
+
62737 {3.72835994, 12.4935398}, //
+
62738 {3.73737001, 12.5076103}, //
+
62739 {3.74659991, 12.5219297}, //
+
62740 {3.7560401, 12.5364904}, //
+
62741 {3.76568007, 12.5513096}, //
+
62742 {3.77554011, 12.5663795}, //
+
62743 {3.8670001, 12.7072001}, //
+
62744 {3.87456012, 12.7189798}, //
+
62745 {3.88140011, 12.7294703}, //
+
62746 {3.88753009, 12.7386599}, //
+
62747 {3.89296007, 12.7465401}, //
+
62748 {3.89767003, 12.75313}, //
+
62749 {3.90166998, 12.75842}, //
+
62750 {3.90495992, 12.7624102}, //
+
62751 {3.90753007, 12.76511}, //
+
62752 {3.90939999, 12.7665005}, //
+
62753 {3.91020012, 12.7671499}, //
+
62754 {3.91107988, 12.7675896}, //
+
62755 {3.91204, 12.7678204}, //
+
62756 {4.59692001, 12.9188204}, //
+
62757 {4.70861006, 13.0205603}, //
+
62758 {5.10965014, 14.0481501}, //
+
62759 {4.98085022, 14.1566496}, //
+
62760 {5.14129019, 14.4008904}, //
+
62761 {5.14320993, 14.4038296}, //
+
62762 {5.14479017, 14.40592}, //
+
62763 {5.14603996, 14.4071798}, //
+
62764 {5.14694977, 14.4076004}, //
+
62765 {5.14758015, 14.4073496}, //
+
62766 {5.14796019, 14.4066}, //
+
62767 {5.16055012, 14.3787498}, //
+
62768 {5.15834999, 14.3901396}, //
+
62769 {5.1582799, 14.3902397}, //
+
62770 {5.15834999, 14.3906403}, //
+
62771 {5.15853977, 14.3913202}, //
+
62772 {5.15885019, 14.3922997}, //
+
62773 {5.16034985, 14.39884}, //
+
62774 {5.10160017, 14.4442701}, //
+
62775 {5.1012001, 14.44485}, //
+
62776 {5.10082006, 14.4456701}, //
+
62777 {5.10044003, 14.4466105}, //
+
62778 {5.10007, 14.4476805}, //
+
62779 {5.09968996, 14.4488697}, //
+
62780 {5.06922007, 14.5360403}, //
+
62781 {4.79901981, 13.3876495}, //
+
62782 {4.79997015, 13.37041}, //
+
62783 {4.80053997, 13.35501}, //
+
62784 {4.80073977, 13.3414497}, //
+
62785 {4.80056, 13.3297396}, //
+
62786 {4.80000019, 13.31987}, //
+
62787 {4.79905987, 13.3118401}, //
+
62788 {4.79775, 13.3056498}, //
+
62789 {4.79616022, 13.2987099}, //
+
62790 {4.7943902, 13.2914896}, //
+
62791 {4.79246998, 13.2839699}, //
+
62792 {4.79036999, 13.2761497}, //
+
62793 {4.78810978, 13.2680502}, //
+
62794 {4.78567982, 13.2596502}, //
+
62795 {4.78309011, 13.2509604}, //
+
62796 {4.78033018, 13.2419796}, //
+
62797 {4.77740002, 13.2327003}, //
+
62798 {4.7744298, 13.2233896}, //
+
62799 {4.77154016, 13.2143002}, //
+
62800 {4.76874018, 13.20541}, //
+
62801 {4.76601982, 13.1967201}, //
+
62802 {4.76338005, 13.1882496}, //
+
62803 {4.76081991, 13.1799898}, //
+
62804 {4.7583499, 13.1719303}, //
+
62805 {4.75595999, 13.1640902}, //
+
62806 {4.75365019, 13.1564503}, //
+
62807 {4.75285006, 13.1541796}, //
+
62808 {4.7192502, 13.0580597}, //
+
62809 {4.71861982, 13.0560303}, //
+
62810 {4.71774006, 13.0537901}, //
+
62811 {4.71659994, 13.0513401}, //
+
62812 {4.71521997, 13.0486803}, //
+
62813 {4.71358013, 13.0458097}, //
+
62814 {4.71168995, 13.0427303}, //
+
62815 {4.7095499, 13.0394497}, //
+
62816 {4.70725012, 13.0360403}, //
+
62817 {4.70487022, 13.0325899}, //
+
62818 {4.70241022, 13.0290899}, //
+
62819 {4.6998601, 13.0255604}, //
+
62820 {4.69721985, 13.0219803}, //
+
62821 {4.69450998, 13.0183601}, //
+
62822 {4.69169998, 13.0146999}, //
+
62823 {4.68881989, 13.0109997}, //
+
62824 {4.68585014, 13.0072498}, //
+
62825 {4.6828599, 13.0035496}, //
+
62826 {4.67991018, 12.9999704}, //
+
62827 {4.67700005, 12.9965096}, //
+
62828 {4.67412996, 12.9931803}, //
+
62829 {4.67129993, 12.9899797}, //
+
62830 {4.66851997, 12.9868898}, //
+
62831 {4.66577005, 12.9839401}, //
+
62832 {4.66306019, 12.9811096}, //
+
62833 {4.66039991, 12.9784002}, //
+
62834 {4.65790987, 12.9759102}, //
+
62835 {4.64855003, 12.9665499}, //
+
62836 {4.62959003, 14.0104599}, //
+
62837 {4.62939978, 14.0188103}, //
+
62838 {4.62933016, 14.0274496}, //
+
62839 {4.62939978, 14.0363903}, //
+
62840 {4.62959003, 14.0456104}, //
+
62841 {4.63840008, 14.4109497}, //
+
62842 {4.65202999, 14.5457201}, //
+
62843 {4.65227985, 14.5487404}, //
+
62844 {4.65269995, 14.5522604}, //
+
62845 {4.66976023, 14.7122297}, //
+
62846 {4.66976023, 14.71241}, //
+
62847 {4.66983986, 14.7125597}, //
+
62848 {4.67828989, 14.7321301}, //
+
62849 {4.66874981, 14.7388201}, //
+
62850 {4.67247009, 14.7359304}, //
+
62851 {4.67284012, 14.7356901}, //
+
62852 {4.67321014, 14.7354202}, //
+
62853 {4.67358017, 14.7351103}, //
+
62854 {4.6739502, 14.7347498}, //
+
62855 {4.67431021, 14.7343998}, //
+
62856 {4.67489004, 14.7338305}, //
+
62857 {4.67512989, 14.7336102}, //
+
62858 {4.67531013, 14.7334299}, //
+
62859 {4.67557001, 14.73318}, //
+
62860 {4.67565012, 14.7330999}, //
+
62861 {4.67565012, 14.7263002}, //
+
62862 {4.67514992, 14.7255497}, //
+
62863 {4.67364979, 14.7232904}, //
+
62864 {4.67114019, 14.7195196}, //
+
62865 {4.57885981, 14.3508797}, //
+
62866 {4.57764006, 14.3458405}, //
+
62867 {4.57601023, 14.3410196}, //
+
62868 {4.56860018, 14.3198099}, //
+
62869 {4.56528997, 14.31038}, //
+
62870 {4.56157017, 14.30021}, //
+
62871 {4.55742979, 14.2892799}, //
+
62872 {4.41668987, 13.9207497}, //
+
62873 {4.41083002, 13.9061403}, //
+
62874 {4.40513992, 13.8931198}, //
+
62875 {4.39961004, 13.88169}, //
+
62876 {4.39424992, 13.87185}, //
+
62877 {4.39189005, 13.8680201}, //
+
62878 {4.3893199, 13.8640604}, //
+
62879 {4.38653994, 13.8599796}, //
+
62880 {4.38355017, 13.8557796}, //
+
62881 {4.38035011, 13.8514404}, //
+
62882 {4.37693977, 13.8469801}, //
+
62883 {4.32644987, 13.7803001}, //
+
62884 {4.23677015, 13.6651497}, //
+
62885 {4.2269702, 13.6525898}, //
+
62886 {4.21567011, 13.6395302}, //
+
62887 {3.8348, 13.1954498}, //
+
62888 {3.49574995, 12.8410997}, //
+
62889 {3.37365007, 12.8106003}, //
+
62890 {2.84164, 12.8122902}, //
+
62891 {2.83353996, 12.7981596}, //
+
62892 {2.82608008, 12.7851696}, //
+
62893 {2.81924009, 12.7733002}, //
+
62894 {2.81303, 12.7625599}, //
+
62895 {2.80745006, 12.7529497}, //
+
62896 {2.78369999, 12.74615}, //
+
62897 {2.50041008, 12.7725697}, //
+
62898 {2.4921, 12.7733002}, //
+
62899 {2.48307991, 12.7744102}, //
+
62900 {2.47258997, 12.7762299}, //
+
62901 {2.46063995, 12.7787704}, //
+
62902 {2.44722009, 12.7820101}, //
+
62903 {2.43233991, 12.7859697}, //
+
62904 {2.41631007, 12.7905397}, //
+
62905 {2.41488004, 12.7910004}, //
+
62906 {2.40379, 12.7946701}, //
+
62907 {2.39211011, 12.7986298}, //
+
62908 {2.13985991, 12.8838797}, //
+
62909 {2.13930988, 12.8840504}, //
+
62910 {2.13790989, 12.8845501}, //
+
62911 {2.11745, 12.8922701}, //
+
62912 {2.09840989, 12.8998699}, //
+
62913 {2.08079004, 12.9073496}, //
+
62914 {2.06458998, 12.9146996}, //
+
62915 {2.04981995, 12.9219198}, //
+
62916 {2.03646994, 12.9290199}, //
+
62917 {2.02454996, 12.9359999}, //
+
62918 {2.00349998, 12.9490604}, //
+
62919 {1.99293995, 12.9556503}, //
+
62920 {1.98239005, 12.9626102}, //
+
62921 {1.97184002, 12.9699497}, //
+
62922 {1.96129, 12.9776697}, //
+
62923 {1.95967996, 12.9789}, //
+
62924 {1.95079005, 12.9870796}, //
+
62925 {1.80041003, 13.1236801}, //
+
62926 {1.80026996, 13.1238003}, //
+
62927 {1.78345001, 13.1394997}, //
+
62928 {0.58287698, 14.5033102}, //
+
62929 {0.583747983, 14.5051098}, //
+
62930 {0.584850013, 14.5075998}, //
+
62931 {0.586025, 14.5102797}, //
+
62932 {0.587282002, 14.5130301}, //
+
62933 {0.588621974, 14.5158796}, //
+
62934 {0.590044975, 14.5187998}, //
+
62935 {0.591551006, 14.5218201}, //
+
62936 {0.593138993, 14.52491}, //
+
62937 {0.594810009, 14.5280895}, //
+
62938 {0.596563995, 14.5313501}, //
+
62939 {0.598399997, 14.5347004}, //
+
62940 {0.600288987, 14.5381002}, //
+
62941 {0.602177978, 14.5415001}, //
+
62942 {0.604067028, 14.5448904}, //
+
62943 {0.605956018, 14.5482903}, //
+
62944 {0.607843995, 14.5516796}, //
+
62945 {0.609732985, 14.5550804}, //
+
62946 {0.615400016, 14.5652504}, //
+
62947 {0.617267013, 14.5685301}, //
+
62948 {0.619090974, 14.5716105}, //
+
62949 {0.620872021, 14.5744801}, //
+
62950 {0.622609973, 14.5771399}, //
+
62951 {0.624303997, 14.5795898}, //
+
62952 {0.625955999, 14.58183}, //
+
62953 {0.635006011, 14.5946398}, //
+
62954 {0.636511028, 14.5969}, //
+
62955 {0.638182998, 14.5993204}, //
+
62956 {0.64002198, 14.6019096}, //
+
62957 {0.642027974, 14.6046696}, //
+
62958 {0.644200027, 14.6076002}, //
+
62959 {0.691085994, 14.6737204}, //
+
62960 {0.695838988, 14.6803303}, //
+
62961 {0.700634003, 14.6867704}, //
+
62962 {0.705470979, 14.6930399}, //
+
62963 {0.742550015, 14.73985}, //
+
62964 {0.766300023, 14.7567997}, //
+
62965 {0.885924995, 14.83671}, //
+
62966 {0.898172975, 14.8447504}, //
+
62967 {0.909793973, 14.8521204}, //
+
62968 {0.92078799, 14.8588104}, //
+
62969 {0.931155026, 14.8648396}, //
+
62970 {0.940894008, 14.8702002}, //
+
62971 {0.950007021, 14.8748903}, //
+
62972 {0.958491981, 14.8788996}, //
+
62973 {0.966350019, 14.8822498}, //
+
62974 {1.05283999, 14.9133701}, //
+
62975 {1.06312001, 14.9169197}, //
+
62976 {1.29601002, 14.9987602}, //
+
62977 {1.30147004, 15.0007}, //
+
62978 {1.30704999, 15.0025997}, //
+
62979 {1.31263995, 15.0043802}, //
+
62980 {1.31810999, 15.0059605}, //
+
62981 {1.32344997, 15.0073204}, //
+
62982 {1.32866001, 15.0084801}, //
+
62983 {1.33375001, 15.0094204}, //
+
62984 {1.47040999, 15.0333405}, //
+
62985 {1.47280002, 15.0338001}, //
+
62986 {1.47544003, 15.0341797}, //
+
62987 {1.49864995, 15.03825}, //
+
62988 {1.50564003, 15.0389795}, //
+
62989 {1.51303995, 15.03967}, //
+
62990 {1.52086997, 15.0403204}, //
+
62991 {1.52910995, 15.0409298}, //
+
62992 {1.53777003, 15.0414896}, //
+
62993 {1.54684997, 15.0420103}, //
+
62994 {1.55634999, 15.0424805}, //
+
62995 {1.56625998, 15.0429096}, //
+
62996 {1.57659996, 15.0432997}, //
+
62997 {1.58723998, 15.0435305}, //
+
62998 {1.59803998, 15.0434704}, //
+
62999 {1.60901999, 15.0431204}, //
+
63000 {1.62015998, 15.04247}, //
+
63001 {1.63145995, 15.0415297}, //
+
63002 {1.64293003, 15.0403004}, //
+
63003 {1.65456998, 15.0387802}, //
+
63004 {1.91109002, 15.0060396}, //
+
63005 {1.91832995, 15.0050802}, //
+
63006 {2.21516991, 14.9661703}, //
+
63007 {2.22371006, 14.9650402}, //
+
63008 {2.23291993, 14.9636602}, //
+
63009 {2.2428, 14.9620199}, //
+
63010 {2.78672004, 14.8758497}, //
+
63011 {2.80953002, 14.8725004}, //
+
63012 {2.83225989, 14.8689804}, //
+
63013 {2.85489988, 14.8653002}, //
+
63014 {2.87663007, 14.8614502}, //
+
63015 {2.89660001, 14.8574305}, //
+
63016 {2.91481996, 14.8532495}, //
+
63017 {3.96705008, 14.7601995}, //
+
63018 {3.8348, 14.8619003}, //
+
63019 {3.90429997, 14.8619003}, //
+
63020 {3.9107101, 14.8618603}, //
+
63021 {3.91711998, 14.8617296}, //
+
63022 {3.9235301, 14.8615198}, //
+
63023 {3.92992997, 14.8612299}, //
+
63024 {3.97445989, 14.8596401}, //
+
63025 {3.77648997, 14.86765}, //
+
63026 {3.75005007, 14.8653002}, //
+
63027 {3.50929999, 14.8551502}, //
+
63028 {3.36667991, 14.8496904}, //
+
63029 {3.34917998, 14.8491096}, //
+
63030 {3.33152008, 14.84869}, //
+
63031 {3.2521801, 14.8464603}, //
+
63032 {3.23641992, 14.8459997}, //
+
63033 {3.22003007, 14.8456202}, //
+
63034 {3.20301008, 14.8453302}, //
+
63035 {3.18536997, 14.8451204}, //
+
63036 {3.16709995, 14.8449898}, //
+
63037 {3.14820004, 14.8449497}, //
+
63038 {3.12926006, 14.8449898}, //
+
63039 {3.11086011, 14.8451204}, //
+
63040 {3.09300995, 14.8453302}, //
+
63041 {3.07570004, 14.8456202}, //
+
63042 {3.05892992, 14.8459997}, //
+
63043 {3.04271007, 14.8464603}, //
+
63044 {3.02702999, 14.8470097}, //
+
63045 {2.97997999, 14.8486004}, //
+
63046 {2.97188997, 14.8489199}, //
+
63047 {2.96416998, 14.8493605}, //
+
63048 {2.95682001, 14.8499203}, //
+
63049 {2.9498601, 14.8506203}, //
+
63050 {2.94325995, 14.8514404}, //
+
63051 {2.93704009, 14.8523798}, //
+
63052 {2.93120003, 14.8534498}, //
+
63053 {2.45429993, 14.9285898}, //
+
63054 {2.43967009, 14.9308395}, //
+
63055 {2.42600012, 14.9330997}, //
+
63056 {2.41279006, 14.9354095}, //
+
63057 {2.39953995, 14.9378004}, //
+
63058 {2.38625002, 14.9402704}, //
+
63059 {2.37292004, 14.9428301}, //
+
63060 {2.35955, 14.9454699}, //
+
63061 {2.34612989, 14.9481897}, //
+
63062 {2.33267999, 14.9509897}, //
+
63063 {2.02045012, 14.99263}, //
+
63064 {2.00910997, 14.9940996}, //
+
63065 {1.99667001, 14.9959803}, //
+
63066 {1.72148001, 15.0390797}, //
+
63067 {1.52198994, 15.0468903}, //
+
63068 {1.44949996, 15.0365496}, //
+
63069 {1.01549995, 14.9364996}, //
+
63070 {0.889656007, 14.8860302}, //
+
63071 {0.357517004, 14.3578701}, //
+
63072 {0.556134999, 14.45014}, //
+
63073 {1.06805003, 12.0307503}, //
+
63074 {1.358096, 12.550211}, //
+
63075 {1.35815001, 12.5503302}, //
+
63076 {1.358096, 12.550211}, //
+
63077 {1.35879004, 12.5496502}, //
+
63078 {1.13322997, 12.7907104}, //
+
63079 {1.12946999, 12.79216}, //
+
63080 {1.1257, 12.7936497}, //
+
63081 {0.971400023, 12.8512497}, //
+
63082 {0.967319012, 12.8527603}, //
+
63083 {0.963362992, 12.85427}, //
+
63084 {0.959532976, 12.8557796}, //
+
63085 {0.955829978, 12.8572903}, //
+
63086 {0.952251971, 12.8588104}, //
+
63087 {0.948800027, 12.8603201}, //
+
63088 {0.945474029, 12.8618298}, //
+
63089 {0.942273974, 12.8633404}, //
+
63090 {0.939199984, 12.86485}, //
+
63091 {0.936356008, 12.8662796}, //
+
63092 {0.931671977, 12.8686304}, //
+
63093 {0.928327024, 12.8703098}, //
+
63094 {0.925650001, 12.8716497}, //
+
63095 {1.77607, 13.1384897}, //
+
63096 {1.77726996, 13.1389303}, //
+
63097 {1.77833998, 13.1392498}, //
+
63098 {1.77927995, 13.1394396}, //
+
63099 {1.78009999, 13.1394997}, //
+
63100 {1.78128004, 13.13906}, //
+
63101 {1.78334999, 13.1377401}, //
+
63102 {1.78629005, 13.13554}, //
+
63103 {1.79012001, 13.1324701}, //
+
63104 {1.79482996, 13.1285105}, //
+
63105 {1.80026996, 13.1238003}, //
+
63106 {1.96020997, 12.9784098}, //
+
63107 {1.96921003, 12.9703302}, //
+
63108 {2.0675199, 12.9084902}, //
+
63109 {2.39816999, 12.79601}, //
+
63110 {2.41599011, 12.7906303}, //
+
63111 {2.41631007, 12.7905397}, //
+
63112 {2.42539001, 12.7876196}, //
+
63113 {2.4619, 12.7767296}, //
+
63114 {2.7713201, 12.7412901}, //
+
63115 {3.36661005, 12.8105202}, //
+
63116 {3.36689997, 12.8106003}, //
+
63117 {3.72970009, 12.7292004}, //
+
63118 {3.73042989, 12.7284803}, //
+
63119 {3.73112011, 12.7277899}, //
+
63120 {3.73177004, 12.72715}, //
+
63121 {3.73237991, 12.7265501}, //
+
63122 {3.73345995, 12.7254696}, //
+
63123 {3.73393011, 12.7249899}, //
+
63124 {3.73435998, 12.7245502}, //
+
63125 {3.73475003, 12.7241497}, //
+
63126 {3.73985004, 12.7190504}, //
+
63127 {3.51609993, 12.0969105}, //
+
63128 {3.51493001, 12.0940199}, //
+
63129 {3.51448011, 12.0928898}, //
+
63130 {3.49915004, 12.0714502}, //
+
63131 {3.32121992, 11.825202}, //
+
63132 {3.32279992, 11.8255997}, //
+
63133 {3.32435012, 11.8259573}, //
+
63134 {3.32598996, 11.826272}, //
+
63135 {3.32770991, 11.8265438}, //
+
63136 {3.32950997, 11.8267746}, //
+
63137 {3.3313899, 11.8269644}, //
+
63138 {3.33335996, 11.8271112}, //
+
63139 {3.3354001, 11.8272161}, //
+
63140 {3.33753991, 11.8272791}, //
+
63141 {3.33975005, 11.8273001}, //
+
63142 {3.34050989, 11.8272791}, //
+
63143 {3.34125996, 11.8272161}, //
+
63144 {3.34202003, 11.8271112}, //
+
63145 {3.3427701, 11.8269644}, //
+
63146 {3.34352994, 11.8267746}, //
+
63147 {3.34428, 11.8265438}, //
+
63148 {3.34504008, 11.826272}, //
+
63149 {3.34578991, 11.8259573}, //
+
63150 {3.34654999, 11.8255997}, //
+
63151 {3.34730005, 11.825201}, //
+
63152 {3.34805989, 11.8247604}, //
+
63153 {3.34880996, 11.8242779}, //
+
63154 {3.34956002, 11.8237534}, //
+
63155 {3.35031009, 11.8231859}, //
+
63156 {3.35105991, 11.8225784}, //
+
63157 {3.35180998, 11.8219271}, //
+
63158 {3.35255003, 11.8212347}, //
+
63159 {3.35330009, 11.8205004}, //
+
63160 {3.35401011, 11.8197756}, //
+
63161 {3.35464001, 11.8190928}, //
+
63162 {3.35519004, 11.81845}, //
+
63163 {3.35564995, 11.8178482}, //
+
63164 {3.35602999, 11.8172874}, //
+
63165 {3.3563199, 11.8167667}, //
+
63166 {3.35652995, 11.816287}, //
+
63167 {3.35665989, 11.8158484}, //
+
63168 {3.35669994, 11.8154497}, //
+
63169 {3.3566401, 11.8137293}, //
+
63170 {3.35645008, 11.8136663}, //
+
63171 {3.35612988, 11.8135614}, //
+
63172 {3.35569, 11.8134136}, //
+
63173 {3.35512996, 11.8132248}, //
+
63174 {3.35442996, 11.812994}, //
+
63175 {3.35361004, 11.8127222}, //
+
63176 {3.35266995, 11.8124065}, //
+
63177 {3.31815004, 11.7982273}, //
+
63178 {3.31551003, 11.7970943}, //
+
63179 {3.31261992, 11.7960443}, //
+
63180 {3.30947995, 11.7950792}, //
+
63181 {3.30609012, 11.794198}, //
+
63182 {3.30244994, 11.7933998}, //
+
63183 {3.29868007, 11.7926865}, //
+
63184 {3.29491997, 11.792057}, //
+
63185 {3.29115009, 11.7915106}, //
+
63186 {3.28737998, 11.791049}, //
+
63187 {3.28362012, 11.7906723}, //
+
63188 {3.27985001, 11.7903776}, //
+
63189 {3.27607989, 11.7901678}, //
+
63190 {3.27232003, 11.7900419}, //
+
63191 {3.26854992, 11.79}, //
+
63192 {3.19052005, 11.7991934}, //
+
63193 {3.18807006, 11.7995701}, //
+
63194 {3.18548989, 11.8002005}, //
+
63195 {3.17053008, 11.8041086}, //
+
63196 {3.1694901, 11.8043327}, //
+
63197 {3.16852999, 11.8045979}, //
+
63198 {3.16764998, 11.804904}, //
+
63199 {3.16685009, 11.8052502}, //
+
63200 {3.13506007, 11.8158073}, //
+
63201 {3.13311005, 11.8164358}, //
+
63202 {3.13120008, 11.8171501}, //
+
63203 {3.12922001, 11.8179893}, //
+
63204 {3.12701988, 11.8189936}, //
+
63205 {3.12461996, 11.8201666}, //
+
63206 {3.12200999, 11.8215055}, //
+
63207 {3.11918998, 11.8230114}, //
+
63208 {3.11615992, 11.8246832}, //
+
63209 {3.11291003, 11.8265219}, //
+
63210 {3.10946012, 11.8285284}, //
+
63211 {3.10579991, 11.8306999}, //
+
63212 {3.10562992, 11.8308678}, //
+
63213 {3.10474992, 11.831749}, //
+
63214 {3.10373998, 11.832757}, //
+
63215 {3.10240006, 11.8340998}, //
+
63216 {3.09905005, 11.8374996}, //
+
63217 {3.09905005, 11.8409004}, //
+
63218 {3.09951997, 11.8859205}, //
+
63219 });
+
63220 TestPoly(polys, 569);
+
63221}
+
+
+ + + + diff --git a/editor.d.ts b/editor.d.ts new file mode 100644 index 000000000..bfc464b22 --- /dev/null +++ b/editor.d.ts @@ -0,0 +1,3290 @@ +// Copyright 2023 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Manifold, Mat4, Vec2, Vec3} from './manifold'; + +declare class GLTFNode { + manifold?: Manifold; + translation?: Vec3|((t: number) => Vec3); + rotation?: Vec3|((t: number) => Vec3); + scale?: Vec3|((t: number) => Vec3); + material?: GLTFMaterial; + name?: string; + constructor(parent?: GLTFNode); + clone(parent?: GLTFNode): GLTFNode; +} + +type Attribute = 'POSITION'|'NORMAL'|'TANGENT'|'TEXCOORD_0'|'TEXCOORD_1'| + 'COLOR_0'|'JOINTS_0'|'WEIGHTS_0'|'SKIP_1'|'SKIP_2'|'SKIP_3'|'SKIP_4'; + +declare class GLTFMaterial { + attributes?: Attribute[]; + roughness?: number; + metallic?: number; + baseColorFactor?: [number, number, number]; + alpha?: number; + unlit?: boolean; + name?: string; +} + +declare const globalDefaults: { + roughness: number, + metallic: number, + baseColorFactor: [number, number, number], + alpha: number, + unlit: boolean, + animationLength: number, + animationMode: 'loop'|'ping-pong'; +} + +/** + * Returns a shallow copy of the input manifold with the given material + * properties applied. They will be carried along through operations. + * + * @param manifold The input object. + * @param material A set of material properties to apply to this manifold. + */ +declare function setMaterial(manifold: Manifold, material: GLTFMaterial): + Manifold; + +/** + * Apply a morphing animation to the input manifold. Specify the start + * function which will be applied to the vertex positions of the first frame and + * linearly interpolated across the length of the overall animation. This + * animation will only be shown if this manifold is used directly on a GLTFNode. + * + * @param manifold The object to add morphing animation to. + * @param func A warping function to apply to the first animation frame. + */ +declare function setMorphStart( + manifold: Manifold, func: (v: Vec3) => void): void; + +/** + * Apply a morphing animation to the input manifold. Specify the end + * function which will be applied to the vertex positions of the last frame and + * linearly interpolated across the length of the overall animation. This + * animation will only be shown if this manifold is used directly on a GLTFNode. + * + * @param manifold The object to add morphing animation to. + * @param func A warping function to apply to the last animation frame. + */ +declare function setMorphEnd(manifold: Manifold, func: (v: Vec3) => void): void; + +/** + * Wrap any shape object with this method to display it and any copies in + * transparent red. This is particularly useful for debugging subtract() as it + * will allow you find the object even if it doesn't currently intersect the + * result. + * + * @param shape The object to show - returned for chaining. + */ +declare function show(shape: CrossSection|Manifold): Manifold; + +/** + * Wrap any shape object with this method to display it and any copies as the + * result, while ghosting out the final result in transparent gray. Helpful for + * debugging as it allows you to see objects that may be hidden in the interior + * of the result. Multiple objects marked only() will all be shown. + * + * @param shape The object to show - returned for chaining. + */ +declare function only(shape: CrossSection|Manifold): Manifold; + +// Type definitions for gl-matrix 3.4.3 Project: +// https://github.com/toji/gl-matrix +// +// Definitions by: Mattijs Kneppers , +// +// based on definitions by Tat +// +// Definitions by: Nikolay Babanov + +declare const glMatrix: GLMatrix; + +interface GLMatrix { + glMatrix: TopAPI; + vec2: Vec2API; + vec3: Vec3API; + vec4: Vec4API; + mat2: Mat2API; + mat2d: Mat2dAPI; + mat3: Mat3API; + mat4: Mat4API; + quat: QuatAPI; +} + +interface TopAPI { + // Configuration constants + EPSILON: number; + ARRAY_TYPE: any; + RANDOM(): number; + ENABLE_SIMD: boolean; + + // Compatibility detection + SIMD_AVAILABLE: boolean; + USE_SIMD: boolean; + + /** + * Sets the type of array used when creating new vectors and matrices + * + * @param {any} type - Array type, such as Float32Array or Array + */ + setMatrixArrayType(type: any): void; + + /** + * Convert Degree To Radian + * + * @param {number} a - Angle in Degrees + */ + toRadian(a: number): number; + + /** + * Tests whether or not the arguments have approximately the same value, + * within an absolute or relative tolerance of glMatrix.EPSILON (an absolute + * tolerance is used for values less than or equal to 1.0, and a relative + * tolerance is used for larger values) + * + * @param {number} a - The first number to test. + * @param {number} b - The second number to test. + * @returns {boolean} True if the numbers are approximately equal, false + * otherwise. + */ + equals(a: number, b: number): boolean; +} + +type Vec4 = [number, number, number, number]; +type Mat2 = [ + number, + number, + number, + number, +]; +type Mat2d = [ + number, + number, + number, + number, + number, + number, +]; +type Mat3 = [ + number, + number, + number, + number, + number, + number, + number, + number, + number, +]; +type Quat = [number, number, number, number]; + +interface Vec2API { + /** + * Creates a new, empty Vec2 + * + * @returns a new 2D vector + */ + create(): Vec2; + + /** + * Creates a new Vec2 initialized with values from an existing vector + * + * @param a a vector to clone + * @returns a new 2D vector + */ + clone(a: Vec2): Vec2; + + /** + * Creates a new Vec2 initialized with the given values + * + * @param x X component + * @param y Y component + * @returns a new 2D vector + */ + fromValues(x: number, y: number): Vec2; + + /** + * Copy the values from one Vec2 to another + * + * @param out the receiving vector + * @param a the source vector + * @returns out + */ + copy(out: Vec2, a: Vec2): Vec2; + + /** + * Set the components of a Vec2 to the given values + * + * @param out the receiving vector + * @param x X component + * @param y Y component + * @returns out + */ + set(out: Vec2, x: number, y: number): Vec2; + + /** + * Adds two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + add(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Subtracts vector b from vector a + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + subtract(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Subtracts vector b from vector a + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + sub(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Multiplies two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Multiplies two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Divides two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + divide(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Divides two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + div(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Math.ceil the components of a Vec2 + * + * @param {Vec2} out the receiving vector + * @param {Vec2} a vector to ceil + * @returns {Vec2} out + */ + ceil(out: Vec2, a: Vec2): Vec2; + + /** + * Math.floor the components of a Vec2 + * + * @param {Vec2} out the receiving vector + * @param {Vec2} a vector to floor + * @returns {Vec2} out + */ + floor(out: Vec2, a: Vec2): Vec2; + + /** + * Returns the minimum of two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + min(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Returns the maximum of two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + max(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Rotates the 2D vector. + * + * @param {Vec2} out the receiving vector + * @param {Vec2} a vector to rotate + * @param {Vec2} b origin of the rotation + * @param {number} rad angle of rotation in radians + * @returns {Vec2} out + */ + rotate(out: Vec2, a: Vec2, b: Vec2, rad: number): Vec2; + + /** + * Math.round the components of a Vec2 + * + * @param {Vec2} out the receiving vector + * @param {Vec2} a vector to round + * @returns {Vec2} out + */ + round(out: Vec2, a: Vec2): Vec2; + + /** + * Scales a Vec2 by a scalar number + * + * @param out the receiving vector + * @param a the vector to scale + * @param b amount to scale the vector by + * @returns out + */ + scale(out: Vec2, a: Vec2, b: number): Vec2; + + /** + * Adds two Vec2's after scaling the second operand by a scalar value + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @param scale the amount to scale b by before adding + * @returns out + */ + scaleAndAdd(out: Vec2, a: Vec2, b: Vec2, scale: number): Vec2; + + /** + * Calculates the euclidian distance between two Vec2's + * + * @param a the first operand + * @param b the second operand + * @returns distance between a and b + */ + distance(a: Vec2, b: Vec2): number; + + /** + * Calculates the euclidian distance between two Vec2's + * + * @param a the first operand + * @param b the second operand + * @returns distance between a and b + */ + dist(a: Vec2, b: Vec2): number; + + /** + * Calculates the squared euclidian distance between two Vec2's + * + * @param a the first operand + * @param b the second operand + * @returns squared distance between a and b + */ + squaredDistance(a: Vec2, b: Vec2): number; + + /** + * Calculates the squared euclidian distance between two Vec2's + * + * @param a the first operand + * @param b the second operand + * @returns squared distance between a and b + */ + sqrDist(a: Vec2, b: Vec2): number; + + /** + * Calculates the length of a Vec2 + * + * @param a vector to calculate length of + * @returns length of a + */ + length(a: Vec2): number; + + /** + * Calculates the length of a Vec2 + * + * @param a vector to calculate length of + * @returns length of a + */ + len(a: Vec2): number; + + /** + * Calculates the squared length of a Vec2 + * + * @param a vector to calculate squared length of + * @returns squared length of a + */ + squaredLength(a: Vec2): number; + + /** + * Calculates the squared length of a Vec2 + * + * @param a vector to calculate squared length of + * @returns squared length of a + */ + sqrLen(a: Vec2): number; + + /** + * Negates the components of a Vec2 + * + * @param out the receiving vector + * @param a vector to negate + * @returns out + */ + negate(out: Vec2, a: Vec2): Vec2; + + /** + * Returns the inverse of the components of a Vec2 + * + * @param out the receiving vector + * @param a vector to invert + * @returns out + */ + inverse(out: Vec2, a: Vec2): Vec2; + + /** + * Normalize a Vec2 + * + * @param out the receiving vector + * @param a vector to normalize + * @returns out + */ + normalize(out: Vec2, a: Vec2): Vec2; + + /** + * Calculates the dot product of two Vec2's + * + * @param a the first operand + * @param b the second operand + * @returns dot product of a and b + */ + dot(a: Vec2, b: Vec2): number; + + /** + * Computes the cross product of two Vec2's + * Note that the cross product must by definition produce a 3D vector + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + cross(out: Vec2, a: Vec2, b: Vec2): Vec2; + + /** + * Performs a linear interpolation between two Vec2's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @param t interpolation amount between the two inputs + * @returns out + */ + lerp(out: Vec2, a: Vec2, b: Vec2, t: number): Vec2; + + /** + * Generates a random unit vector + * + * @param out the receiving vector + * @returns out + */ + random(out: Vec2): Vec2; + + /** + * Generates a random vector with the given scale + * + * @param out the receiving vector + * @param scale Length of the resulting vector. If ommitted, a unit vector + * will be returned + * @returns out + */ + random(out: Vec2, scale: number): Vec2; + + /** + * Transforms the Vec2 with a Mat2 + * + * @param out the receiving vector + * @param a the vector to transform + * @param m matrix to transform with + * @returns out + */ + transformMat2(out: Vec2, a: Vec2, m: Mat2): Vec2; + + /** + * Transforms the Vec2 with a Mat2d + * + * @param out the receiving vector + * @param a the vector to transform + * @param m matrix to transform with + * @returns out + */ + transformMat2d(out: Vec2, a: Vec2, m: Mat2d): Vec2; + + /** + * Transforms the Vec2 with a Mat3 + * 3rd vector component is implicitly '1' + * + * @param out the receiving vector + * @param a the vector to transform + * @param m matrix to transform with + * @returns out + */ + transformMat3(out: Vec2, a: Vec2, m: Mat3): Vec2; + + /** + * Transforms the Vec2 with a Mat4 + * 3rd vector component is implicitly '0' + * 4th vector component is implicitly '1' + * + * @param out the receiving vector + * @param a the vector to transform + * @param m matrix to transform with + * @returns out + */ + transformMat4(out: Vec2, a: Vec2, m: Mat4): Vec2; + + /** + * Perform some operation over an array of vec2Types. + * + * @param a the array of vectors to iterate over + * @param stride Number of elements between the start of each Vec2. If 0 + * assumes tightly packed + * @param offset Number of elements to skip at the beginning of the array + * @param count Number of vec2Types to iterate over. If 0 iterates over entire + * array + * @param fn Function to call for each vector in the array + * @param arg additional argument to pass to fn + * @returns a + */ + forEach( + a: Float32Array, stride: number, offset: number, count: number, + fn: (a: Vec2, b: Vec2, arg: any) => void, arg: any): Float32Array; + + /** + * Perform some operation over an array of vec2Types. + * + * @param a the array of vectors to iterate over + * @param stride Number of elements between the start of each Vec2. If 0 + * assumes tightly packed + * @param offset Number of elements to skip at the beginning of the array + * @param count Number of vec2Types to iterate over. If 0 iterates over entire + * array + * @param fn Function to call for each vector in the array + * @returns a + */ + forEach( + a: Float32Array, stride: number, offset: number, count: number, + fn: (a: Vec2, b: Vec2) => void): Float32Array; + + /** + * Returns a string representation of a vector + * + * @param a vector to represent as a string + * @returns string representation of the vector + */ + str(a: Vec2): string; + + /** + * Returns whether or not the vectors exactly have the same elements in the + * same position (when compared with ===) + * + * @param {Vec2} a The first vector. + * @param {Vec2} b The second vector. + * @returns {boolean} True if the vectors are equal, false otherwise. + */ + exactEquals(a: Vec2, b: Vec2): boolean; + + /** + * Returns whether or not the vectors have approximately the same elements + * in the same position. + * + * @param {Vec2} a The first vector. + * @param {Vec2} b The second vector. + * @returns {boolean} True if the vectors are equal, false otherwise. + */ + equals(a: Vec2, b: Vec2): boolean; +} + +// Vec3 +interface Vec3API { + /** + * Creates a new, empty Vec3 + * + * @returns a new 3D vector + */ + create(): Vec3; + + /** + * Creates a new Vec3 initialized with values from an existing vector + * + * @param a vector to clone + * @returns a new 3D vector + */ + clone(a: Vec3): Vec3; + + /** + * Creates a new Vec3 initialized with the given values + * + * @param x X component + * @param y Y component + * @param z Z component + * @returns a new 3D vector + */ + fromValues(x: number, y: number, z: number): Vec3; + + /** + * Copy the values from one Vec3 to another + * + * @param out the receiving vector + * @param a the source vector + * @returns out + */ + copy(out: Vec3, a: Vec3): Vec3; + + /** + * Set the components of a Vec3 to the given values + * + * @param out the receiving vector + * @param x X component + * @param y Y component + * @param z Z component + * @returns out + */ + set(out: Vec3, x: number, y: number, z: number): Vec3; + + /** + * Adds two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + add(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Subtracts vector b from vector a + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + subtract(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Subtracts vector b from vector a + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + sub(out: Vec3, a: Vec3, b: Vec3): Vec3 + + /** + * Multiplies two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Multiplies two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Divides two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + divide(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Divides two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + div(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Math.ceil the components of a Vec3 + * + * @param {Vec3} out the receiving vector + * @param {Vec3} a vector to ceil + * @returns {Vec3} out + */ + ceil(out: Vec3, a: Vec3): Vec3; + + /** + * Math.floor the components of a Vec3 + * + * @param {Vec3} out the receiving vector + * @param {Vec3} a vector to floor + * @returns {Vec3} out + */ + floor(out: Vec3, a: Vec3): Vec3; + + /** + * Returns the minimum of two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + min(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Returns the maximum of two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + max(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Math.round the components of a Vec3 + * + * @param {Vec3} out the receiving vector + * @param {Vec3} a vector to round + * @returns {Vec3} out + */ + round(out: Vec3, a: Vec3): Vec3 + + /** + * Scales a Vec3 by a scalar number + * + * @param out the receiving vector + * @param a the vector to scale + * @param b amount to scale the vector by + * @returns out + */ + scale(out: Vec3, a: Vec3, b: number): Vec3; + + /** + * Adds two Vec3's after scaling the second operand by a scalar value + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @param scale the amount to scale b by before adding + * @returns out + */ + scaleAndAdd(out: Vec3, a: Vec3, b: Vec3, scale: number): Vec3; + + /** + * Calculates the euclidian distance between two Vec3's + * + * @param a the first operand + * @param b the second operand + * @returns distance between a and b + */ + distance(a: Vec3, b: Vec3): number; + + /** + * Calculates the euclidian distance between two Vec3's + * + * @param a the first operand + * @param b the second operand + * @returns distance between a and b + */ + dist(a: Vec3, b: Vec3): number; + + /** + * Calculates the squared euclidian distance between two Vec3's + * + * @param a the first operand + * @param b the second operand + * @returns squared distance between a and b + */ + squaredDistance(a: Vec3, b: Vec3): number; + + /** + * Calculates the squared euclidian distance between two Vec3's + * + * @param a the first operand + * @param b the second operand + * @returns squared distance between a and b + */ + sqrDist(a: Vec3, b: Vec3): number; + + /** + * Calculates the length of a Vec3 + * + * @param a vector to calculate length of + * @returns length of a + */ + length(a: Vec3): number; + + /** + * Calculates the length of a Vec3 + * + * @param a vector to calculate length of + * @returns length of a + */ + len(a: Vec3): number; + + /** + * Calculates the squared length of a Vec3 + * + * @param a vector to calculate squared length of + * @returns squared length of a + */ + squaredLength(a: Vec3): number; + + /** + * Calculates the squared length of a Vec3 + * + * @param a vector to calculate squared length of + * @returns squared length of a + */ + sqrLen(a: Vec3): number; + + /** + * Negates the components of a Vec3 + * + * @param out the receiving vector + * @param a vector to negate + * @returns out + */ + negate(out: Vec3, a: Vec3): Vec3; + + /** + * Returns the inverse of the components of a Vec3 + * + * @param out the receiving vector + * @param a vector to invert + * @returns out + */ + inverse(out: Vec3, a: Vec3): Vec3; + + /** + * Normalize a Vec3 + * + * @param out the receiving vector + * @param a vector to normalize + * @returns out + */ + normalize(out: Vec3, a: Vec3): Vec3; + + /** + * Calculates the dot product of two Vec3's + * + * @param a the first operand + * @param b the second operand + * @returns dot product of a and b + */ + dot(a: Vec3, b: Vec3): number; + + /** + * Computes the cross product of two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + cross(out: Vec3, a: Vec3, b: Vec3): Vec3; + + /** + * Performs a linear interpolation between two Vec3's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @param t interpolation amount between the two inputs + * @returns out + */ + lerp(out: Vec3, a: Vec3, b: Vec3, t: number): Vec3; + + /** + * Performs a hermite interpolation with two control points + * + * @param {Vec3} out the receiving vector + * @param {Vec3} a the first operand + * @param {Vec3} b the second operand + * @param {Vec3} c the third operand + * @param {Vec3} d the fourth operand + * @param {number} t interpolation amount between the two inputs + * @returns {Vec3} out + */ + hermite(out: Vec3, a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: number): Vec3; + + /** + * Performs a bezier interpolation with two control points + * + * @param {Vec3} out the receiving vector + * @param {Vec3} a the first operand + * @param {Vec3} b the second operand + * @param {Vec3} c the third operand + * @param {Vec3} d the fourth operand + * @param {number} t interpolation amount between the two inputs + * @returns {Vec3} out + */ + bezier(out: Vec3, a: Vec3, b: Vec3, c: Vec3, d: Vec3, t: number): Vec3; + + /** + * Generates a random unit vector + * + * @param out the receiving vector + * @returns out + */ + random(out: Vec3): Vec3; + + /** + * Generates a random vector with the given scale + * + * @param out the receiving vector + * @param [scale] Length of the resulting vector. If omitted, a unit vector + * will be returned + * @returns out + */ + random(out: Vec3, scale: number): Vec3; + + /** + * Transforms the Vec3 with a Mat3. + * + * @param out the receiving vector + * @param a the vector to transform + * @param m the 3x3 matrix to transform with + * @returns out + */ + transformMat3(out: Vec3, a: Vec3, m: Mat3): Vec3; + + /** + * Transforms the Vec3 with a Mat4. + * 4th vector component is implicitly '1' + * + * @param out the receiving vector + * @param a the vector to transform + * @param m matrix to transform with + * @returns out + */ + transformMat4(out: Vec3, a: Vec3, m: Mat4): Vec3; + + /** + * Transforms the Vec3 with a Quat + * + * @param out the receiving vector + * @param a the vector to transform + * @param q Quaternion to transform with + * @returns out + */ + transformQuat(out: Vec3, a: Vec3, q: Quat): Vec3; + + + /** + * Rotate a 3D vector around the x-axis + * @param out The receiving Vec3 + * @param a The Vec3 point to rotate + * @param b The origin of the rotation + * @param c The angle of rotation + * @returns out + */ + rotateX(out: Vec3, a: Vec3, b: Vec3, c: number): Vec3; + + /** + * Rotate a 3D vector around the y-axis + * @param out The receiving Vec3 + * @param a The Vec3 point to rotate + * @param b The origin of the rotation + * @param c The angle of rotation + * @returns out + */ + rotateY(out: Vec3, a: Vec3, b: Vec3, c: number): Vec3; + + /** + * Rotate a 3D vector around the z-axis + * @param out The receiving Vec3 + * @param a The Vec3 point to rotate + * @param b The origin of the rotation + * @param c The angle of rotation + * @returns out + */ + rotateZ(out: Vec3, a: Vec3, b: Vec3, c: number): Vec3; + + /** + * Perform some operation over an array of vec3s. + * + * @param a the array of vectors to iterate over + * @param stride Number of elements between the start of each Vec3. If 0 + * assumes tightly packed + * @param offset Number of elements to skip at the beginning of the array + * @param count Number of vec3s to iterate over. If 0 iterates over entire + * array + * @param fn Function to call for each vector in the array + * @param arg additional argument to pass to fn + * @returns a + * @function + */ + forEach( + a: Float32Array, stride: number, offset: number, count: number, + fn: (a: Vec3, b: Vec3, arg: any) => void, arg: any): Float32Array; + + /** + * Perform some operation over an array of vec3s. + * + * @param a the array of vectors to iterate over + * @param stride Number of elements between the start of each Vec3. If 0 + * assumes tightly packed + * @param offset Number of elements to skip at the beginning of the array + * @param count Number of vec3s to iterate over. If 0 iterates over entire + * array + * @param fn Function to call for each vector in the array + * @returns a + * @function + */ + forEach( + a: Float32Array, stride: number, offset: number, count: number, + fn: (a: Vec3, b: Vec3) => void): Float32Array; + + /** + * Get the angle between two 3D vectors + * @param a The first operand + * @param b The second operand + * @returns The angle in radians + */ + angle(a: Vec3, b: Vec3): number; + + /** + * Returns a string representation of a vector + * + * @param a vector to represent as a string + * @returns string representation of the vector + */ + str(a: Vec3): string; + + /** + * Returns whether or not the vectors have exactly the same elements in the + * same position (when compared with ===) + * + * @param {Vec3} a The first vector. + * @param {Vec3} b The second vector. + * @returns {boolean} True if the vectors are equal, false otherwise. + */ + exactEquals(a: Vec3, b: Vec3): boolean + + /** + * Returns whether or not the vectors have approximately the same + * elements in the same position. + * + * @param {Vec3} a The first vector. + * @param {Vec3} b The second vector. + * @returns {boolean} True if the vectors are equal, false otherwise. + */ + equals(a: Vec3, b: Vec3): boolean +} + +// Vec4 +interface Vec4API { + /** + * Creates a new, empty Vec4 + * + * @returns a new 4D vector + */ + create(): Vec4; + + /** + * Creates a new Vec4 initialized with values from an existing vector + * + * @param a vector to clone + * @returns a new 4D vector + */ + clone(a: Vec4): Vec4; + + /** + * Creates a new Vec4 initialized with the given values + * + * @param x X component + * @param y Y component + * @param z Z component + * @param w W component + * @returns a new 4D vector + */ + fromValues(x: number, y: number, z: number, w: number): Vec4; + + /** + * Copy the values from one Vec4 to another + * + * @param out the receiving vector + * @param a the source vector + * @returns out + */ + copy(out: Vec4, a: Vec4): Vec4; + + /** + * Set the components of a Vec4 to the given values + * + * @param out the receiving vector + * @param x X component + * @param y Y component + * @param z Z component + * @param w W component + * @returns out + */ + set(out: Vec4, x: number, y: number, z: number, w: number): Vec4; + + /** + * Adds two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + add(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Subtracts vector b from vector a + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + subtract(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Subtracts vector b from vector a + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + sub(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Multiplies two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Multiplies two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Divides two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + divide(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Divides two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + div(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Math.ceil the components of a Vec4 + * + * @param {Vec4} out the receiving vector + * @param {Vec4} a vector to ceil + * @returns {Vec4} out + */ + ceil(out: Vec4, a: Vec4): Vec4; + + /** + * Math.floor the components of a Vec4 + * + * @param {Vec4} out the receiving vector + * @param {Vec4} a vector to floor + * @returns {Vec4} out + */ + floor(out: Vec4, a: Vec4): Vec4; + + /** + * Returns the minimum of two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + min(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Returns the maximum of two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @returns out + */ + max(out: Vec4, a: Vec4, b: Vec4): Vec4; + + /** + * Math.round the components of a Vec4 + * + * @param {Vec4} out the receiving vector + * @param {Vec4} a vector to round + * @returns {Vec4} out + */ + round(out: Vec4, a: Vec4): Vec4; + + /** + * Scales a Vec4 by a scalar number + * + * @param out the receiving vector + * @param a the vector to scale + * @param b amount to scale the vector by + * @returns out + */ + scale(out: Vec4, a: Vec4, b: number): Vec4; + + /** + * Adds two Vec4's after scaling the second operand by a scalar value + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @param scale the amount to scale b by before adding + * @returns out + */ + scaleAndAdd(out: Vec4, a: Vec4, b: Vec4, scale: number): Vec4; + + /** + * Calculates the euclidian distance between two Vec4's + * + * @param a the first operand + * @param b the second operand + * @returns distance between a and b + */ + distance(a: Vec4, b: Vec4): number; + + /** + * Calculates the euclidian distance between two Vec4's + * + * @param a the first operand + * @param b the second operand + * @returns distance between a and b + */ + dist(a: Vec4, b: Vec4): number; + + /** + * Calculates the squared euclidian distance between two Vec4's + * + * @param a the first operand + * @param b the second operand + * @returns squared distance between a and b + */ + squaredDistance(a: Vec4, b: Vec4): number; + + /** + * Calculates the squared euclidian distance between two Vec4's + * + * @param a the first operand + * @param b the second operand + * @returns squared distance between a and b + */ + sqrDist(a: Vec4, b: Vec4): number; + + /** + * Calculates the length of a Vec4 + * + * @param a vector to calculate length of + * @returns length of a + */ + length(a: Vec4): number; + + /** + * Calculates the length of a Vec4 + * + * @param a vector to calculate length of + * @returns length of a + */ + len(a: Vec4): number; + + /** + * Calculates the squared length of a Vec4 + * + * @param a vector to calculate squared length of + * @returns squared length of a + */ + squaredLength(a: Vec4): number; + + /** + * Calculates the squared length of a Vec4 + * + * @param a vector to calculate squared length of + * @returns squared length of a + */ + sqrLen(a: Vec4): number; + + /** + * Negates the components of a Vec4 + * + * @param out the receiving vector + * @param a vector to negate + * @returns out + */ + negate(out: Vec4, a: Vec4): Vec4; + + /** + * Returns the inverse of the components of a Vec4 + * + * @param out the receiving vector + * @param a vector to invert + * @returns out + */ + inverse(out: Vec4, a: Vec4): Vec4; + + /** + * Normalize a Vec4 + * + * @param out the receiving vector + * @param a vector to normalize + * @returns out + */ + normalize(out: Vec4, a: Vec4): Vec4; + + /** + * Calculates the dot product of two Vec4's + * + * @param a the first operand + * @param b the second operand + * @returns dot product of a and b + */ + dot(a: Vec4, b: Vec4): number; + + /** + * Performs a linear interpolation between two Vec4's + * + * @param out the receiving vector + * @param a the first operand + * @param b the second operand + * @param t interpolation amount between the two inputs + * @returns out + */ + lerp(out: Vec4, a: Vec4, b: Vec4, t: number): Vec4; + + /** + * Generates a random unit vector + * + * @param out the receiving vector + * @returns out + */ + random(out: Vec4): Vec4; + + /** + * Generates a random vector with the given scale + * + * @param out the receiving vector + * @param scale length of the resulting vector. If ommitted, a unit vector + * will be returned + * @returns out + */ + random(out: Vec4, scale: number): Vec4; + + /** + * Transforms the Vec4 with a Mat4. + * + * @param out the receiving vector + * @param a the vector to transform + * @param m matrix to transform with + * @returns out + */ + transformMat4(out: Vec4, a: Vec4, m: Mat4): Vec4; + + /** + * Transforms the Vec4 with a Quat + * + * @param out the receiving vector + * @param a the vector to transform + * @param q Quaternion to transform with + * @returns out + */ + + transformQuat(out: Vec4, a: Vec4, q: Quat): Vec4; + + /** + * Perform some operation over an array of Vec4s. + * + * @param a the array of vectors to iterate over + * @param stride Number of elements between the start of each Vec4. If 0 + * assumes tightly packed + * @param offset Number of elements to skip at the beginning of the array + * @param count Number of Vec4s to iterate over. If 0 iterates over entire + * array + * @param fn Function to call for each vector in the array + * @param arg additional argument to pass to fn + * @returns a + * @function + */ + forEach( + a: Float32Array, stride: number, offset: number, count: number, + fn: (a: Vec4, b: Vec4, arg: any) => void, arg: any): Float32Array; + + /** + * Perform some operation over an array of Vec4s. + * + * @param a the array of vectors to iterate over + * @param stride Number of elements between the start of each Vec4. If 0 + * assumes tightly packed + * @param offset Number of elements to skip at the beginning of the array + * @param count Number of Vec4s to iterate over. If 0 iterates over entire + * array + * @param fn Function to call for each vector in the array + * @returns a + * @function + */ + forEach( + a: Float32Array, stride: number, offset: number, count: number, + fn: (a: Vec4, b: Vec4) => void): Float32Array; + + /** + * Returns a string representation of a vector + * + * @param a vector to represent as a string + * @returns string representation of the vector + */ + str(a: Vec4): string; + + /** + * Returns whether or not the vectors have exactly the same elements in the + * same position (when compared with ===) + * + * @param {Vec4} a The first vector. + * @param {Vec4} b The second vector. + * @returns {boolean} True if the vectors are equal, false otherwise. + */ + exactEquals(a: Vec4, b: Vec4): boolean; + + /** + * Returns whether or not the vectors have approximately the same elements + * in the same position. + * + * @param {Vec4} a The first vector. + * @param {Vec4} b The second vector. + * @returns {boolean} True if the vectors are equal, false otherwise. + */ + equals(a: Vec4, b: Vec4): boolean; +} + +// Mat2 +interface Mat2API { + /** + * Creates a new identity Mat2 + * + * @returns a new 2x2 matrix + */ + create(): Mat2; + + /** + * Creates a new Mat2 initialized with values from an existing matrix + * + * @param a matrix to clone + * @returns a new 2x2 matrix + */ + clone(a: Mat2): Mat2; + + /** + * Copy the values from one Mat2 to another + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + copy(out: Mat2, a: Mat2): Mat2; + + /** + * Set a Mat2 to the identity matrix + * + * @param out the receiving matrix + * @returns out + */ + identity(out: Mat2): Mat2; + + /** + * Create a new Mat2 with the given values + * + * @param {number} m00 Component in column 0, row 0 position (index 0) + * @param {number} m01 Component in column 0, row 1 position (index 1) + * @param {number} m10 Component in column 1, row 0 position (index 2) + * @param {number} m11 Component in column 1, row 1 position (index 3) + * @returns {Mat2} out A new 2x2 matrix + */ + fromValues(m00: number, m01: number, m10: number, m11: number): Mat2; + + /** + * Set the components of a Mat2 to the given values + * + * @param {Mat2} out the receiving matrix + * @param {number} m00 Component in column 0, row 0 position (index 0) + * @param {number} m01 Component in column 0, row 1 position (index 1) + * @param {number} m10 Component in column 1, row 0 position (index 2) + * @param {number} m11 Component in column 1, row 1 position (index 3) + * @returns {Mat2} out + */ + set(out: Mat2, m00: number, m01: number, m10: number, m11: number): Mat2; + + /** + * Transpose the values of a Mat2 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + transpose(out: Mat2, a: Mat2): Mat2; + + /** + * Inverts a Mat2 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + invert(out: Mat2, a: Mat2): Mat2|null; + + /** + * Calculates the adjugate of a Mat2 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + adjoint(out: Mat2, a: Mat2): Mat2; + + /** + * Calculates the determinant of a Mat2 + * + * @param a the source matrix + * @returns determinant of a + */ + determinant(a: Mat2): number; + + /** + * Multiplies two Mat2's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Mat2, a: Mat2, b: Mat2): Mat2; + + /** + * Multiplies two Mat2's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Mat2, a: Mat2, b: Mat2): Mat2; + + /** + * Rotates a Mat2 by the given angle + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @returns out + */ + rotate(out: Mat2, a: Mat2, rad: number): Mat2; + + /** + * Scales the Mat2 by the dimensions in the given Vec2 + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param v the Vec2 to scale the matrix by + * @returns out + **/ + scale(out: Mat2, a: Mat2, v: Vec2): Mat2; + + /** + * Creates a matrix from a given angle + * This is equivalent to (but much faster than): + * + * Mat2.identity(dest); + * Mat2.rotate(dest, dest, rad); + * + * @param {Mat2} out Mat2 receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @returns {Mat2} out + */ + fromRotation(out: Mat2, rad: number): Mat2; + + /** + * Creates a matrix from a vector scaling + * This is equivalent to (but much faster than): + * + * Mat2.identity(dest); + * Mat2.scale(dest, dest, vec); + * + * @param {Mat2} out Mat2 receiving operation result + * @param {Vec2} v Scaling vector + * @returns {Mat2} out + */ + fromScaling(out: Mat2, v: Vec2): Mat2; + + /** + * Returns a string representation of a Mat2 + * + * @param a matrix to represent as a string + * @returns string representation of the matrix + */ + str(a: Mat2): string; + + /** + * Returns Frobenius norm of a Mat2 + * + * @param a the matrix to calculate Frobenius norm of + * @returns Frobenius norm + */ + frob(a: Mat2): number; + + /** + * Returns L, D and U matrices (Lower triangular, Diagonal and Upper + * triangular) by factorizing the input matrix + * @param L the lower triangular matrix + * @param D the diagonal matrix + * @param U the upper triangular matrix + * @param a the input matrix to factorize + */ + LDU(L: Mat2, D: Mat2, U: Mat2, a: Mat2): Mat2; + + /** + * Adds two Mat2's + * + * @param {Mat2} out the receiving matrix + * @param {Mat2} a the first operand + * @param {Mat2} b the second operand + * @returns {Mat2} out + */ + add(out: Mat2, a: Mat2, b: Mat2): Mat2; + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat2} out the receiving matrix + * @param {Mat2} a the first operand + * @param {Mat2} b the second operand + * @returns {Mat2} out + */ + subtract(out: Mat2, a: Mat2, b: Mat2): Mat2; + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat2} out the receiving matrix + * @param {Mat2} a the first operand + * @param {Mat2} b the second operand + * @returns {Mat2} out + */ + sub(out: Mat2, a: Mat2, b: Mat2): Mat2; + + /** + * Returns whether or not the matrices have exactly the same elements in the + * same position (when compared with ===) + * + * @param {Mat2} a The first matrix. + * @param {Mat2} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + exactEquals(a: Mat2, b: Mat2): boolean; + + /** + * Returns whether or not the matrices have approximately the same elements + * in the same position. + * + * @param {Mat2} a The first matrix. + * @param {Mat2} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + equals(a: Mat2, b: Mat2): boolean; + + /** + * Multiply each element of the matrix by a scalar. + * + * @param {Mat2} out the receiving matrix + * @param {Mat2} a the matrix to scale + * @param {number} b amount to scale the matrix's elements by + * @returns {Mat2} out + */ + multiplyScalar(out: Mat2, a: Mat2, b: number): Mat2 + + /** + * Adds two Mat2's after multiplying each element of the second operand + * by a scalar value. + * + * @param {Mat2} out the receiving vector + * @param {Mat2} a the first operand + * @param {Mat2} b the second operand + * @param {number} scale the amount to scale b's elements by before + * adding + * @returns {Mat2} out + */ + multiplyScalarAndAdd(out: Mat2, a: Mat2, b: Mat2, scale: number): Mat2 +} + +// Mat2d +interface Mat2dAPI { + /** + * Creates a new identity Mat2d + * + * @returns a new 2x3 matrix + */ + create(): Mat2d; + + /** + * Creates a new Mat2d initialized with values from an existing matrix + * + * @param a matrix to clone + * @returns a new 2x3 matrix + */ + clone(a: Mat2d): Mat2d; + + /** + * Copy the values from one Mat2d to another + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + copy(out: Mat2d, a: Mat2d): Mat2d; + + /** + * Set a Mat2d to the identity matrix + * + * @param out the receiving matrix + * @returns out + */ + identity(out: Mat2d): Mat2d; + + /** + * Create a new Mat2d with the given values + * + * @param {number} a Component A (index 0) + * @param {number} b Component B (index 1) + * @param {number} c Component C (index 2) + * @param {number} d Component D (index 3) + * @param {number} tx Component TX (index 4) + * @param {number} ty Component TY (index 5) + * @returns {Mat2d} A new Mat2d + */ + fromValues( + a: number, b: number, c: number, d: number, tx: number, ty: number): Mat2d + + + /** + * Set the components of a Mat2d to the given values + * + * @param {Mat2d} out the receiving matrix + * @param {number} a Component A (index 0) + * @param {number} b Component B (index 1) + * @param {number} c Component C (index 2) + * @param {number} d Component D (index 3) + * @param {number} tx Component TX (index 4) + * @param {number} ty Component TY (index 5) + * @returns {Mat2d} out + */ + set(out: Mat2d, a: number, b: number, c: number, d: number, tx: number, + ty: number): Mat2d + + /** + * Inverts a Mat2d + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + invert(out: Mat2d, a: Mat2d): Mat2d|null; + + /** + * Calculates the determinant of a Mat2d + * + * @param a the source matrix + * @returns determinant of a + */ + determinant(a: Mat2d): number; + + /** + * Multiplies two Mat2d's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Mat2d, a: Mat2d, b: Mat2d): Mat2d; + + /** + * Multiplies two Mat2d's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Mat2d, a: Mat2d, b: Mat2d): Mat2d; + + /** + * Rotates a Mat2d by the given angle + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @returns out + */ + rotate(out: Mat2d, a: Mat2d, rad: number): Mat2d; + + /** + * Scales the Mat2d by the dimensions in the given Vec2 + * + * @param out the receiving matrix + * @param a the matrix to translate + * @param v the Vec2 to scale the matrix by + * @returns out + **/ + scale(out: Mat2d, a: Mat2d, v: Vec2): Mat2d; + + /** + * Translates the Mat2d by the dimensions in the given Vec2 + * + * @param out the receiving matrix + * @param a the matrix to translate + * @param v the Vec2 to translate the matrix by + * @returns out + **/ + translate(out: Mat2d, a: Mat2d, v: Vec2): Mat2d; + + /** + * Creates a matrix from a given angle + * This is equivalent to (but much faster than): + * + * Mat2d.identity(dest); + * Mat2d.rotate(dest, dest, rad); + * + * @param {Mat2d} out Mat2d receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @returns {Mat2d} out + */ + fromRotation(out: Mat2d, rad: number): Mat2d; + + /** + * Creates a matrix from a vector scaling + * This is equivalent to (but much faster than): + * + * Mat2d.identity(dest); + * Mat2d.scale(dest, dest, vec); + * + * @param {Mat2d} out Mat2d receiving operation result + * @param {Vec2} v Scaling vector + * @returns {Mat2d} out + */ + fromScaling(out: Mat2d, v: Vec2): Mat2d; + + /** + * Creates a matrix from a vector translation + * This is equivalent to (but much faster than): + * + * Mat2d.identity(dest); + * Mat2d.translate(dest, dest, vec); + * + * @param {Mat2d} out Mat2d receiving operation result + * @param {Vec2} v Translation vector + * @returns {Mat2d} out + */ + fromTranslation(out: Mat2d, v: Vec2): Mat2d + + /** + * Returns a string representation of a Mat2d + * + * @param a matrix to represent as a string + * @returns string representation of the matrix + */ + str(a: Mat2d): string; + + /** + * Returns Frobenius norm of a Mat2d + * + * @param a the matrix to calculate Frobenius norm of + * @returns Frobenius norm + */ + frob(a: Mat2d): number; + + /** + * Adds two Mat2d's + * + * @param {Mat2d} out the receiving matrix + * @param {Mat2d} a the first operand + * @param {Mat2d} b the second operand + * @returns {Mat2d} out + */ + add(out: Mat2d, a: Mat2d, b: Mat2d): Mat2d + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat2d} out the receiving matrix + * @param {Mat2d} a the first operand + * @param {Mat2d} b the second operand + * @returns {Mat2d} out + */ + subtract(out: Mat2d, a: Mat2d, b: Mat2d): Mat2d + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat2d} out the receiving matrix + * @param {Mat2d} a the first operand + * @param {Mat2d} b the second operand + * @returns {Mat2d} out + */ + sub(out: Mat2d, a: Mat2d, b: Mat2d): Mat2d + + /** + * Multiply each element of the matrix by a scalar. + * + * @param {Mat2d} out the receiving matrix + * @param {Mat2d} a the matrix to scale + * @param {number} b amount to scale the matrix's elements by + * @returns {Mat2d} out + */ + multiplyScalar(out: Mat2d, a: Mat2d, b: number): Mat2d; + + /** + * Adds two Mat2d's after multiplying each element of the second operand + * by a scalar value. + * + * @param {Mat2d} out the receiving vector + * @param {Mat2d} a the first operand + * @param {Mat2d} b the second operand + * @param {number} scale the amount to scale b's elements by before adding + * @returns {Mat2d} out + */ + multiplyScalarAndAdd(out: Mat2d, a: Mat2d, b: Mat2d, scale: number): Mat2d + + /** + * Returns whether or not the matrices have exactly the same elements in + * the same position (when compared with ===) + * + * @param {Mat2d} a The first matrix. + * @param {Mat2d} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + exactEquals(a: Mat2d, b: Mat2d): boolean; + + /** + * Returns whether or not the matrices have approximately the same elements + * in the same position. + * + * @param {Mat2d} a The first matrix. + * @param {Mat2d} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + equals(a: Mat2d, b: Mat2d): boolean +} + +// Mat3 +interface Mat3API { + /** + * Creates a new identity Mat3 + * + * @returns a new 3x3 matrix + */ + create(): Mat3; + + /** + * Copies the upper-left 3x3 values into the given Mat3. + * + * @param {Mat3} out the receiving 3x3 matrix + * @param {Mat4} a the source 4x4 matrix + * @returns {Mat3} out + */ + fromMat4(out: Mat3, a: Mat4): Mat3 + + /** + * Creates a new Mat3 initialized with values from an existing matrix + * + * @param a matrix to clone + * @returns a new 3x3 matrix + */ + clone(a: Mat3): Mat3; + + /** + * Copy the values from one Mat3 to another + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + copy(out: Mat3, a: Mat3): Mat3; + + /** + * Create a new Mat3 with the given values + * + * @param {number} m00 Component in column 0, row 0 position (index 0) + * @param {number} m01 Component in column 0, row 1 position (index 1) + * @param {number} m02 Component in column 0, row 2 position (index 2) + * @param {number} m10 Component in column 1, row 0 position (index 3) + * @param {number} m11 Component in column 1, row 1 position (index 4) + * @param {number} m12 Component in column 1, row 2 position (index 5) + * @param {number} m20 Component in column 2, row 0 position (index 6) + * @param {number} m21 Component in column 2, row 1 position (index 7) + * @param {number} m22 Component in column 2, row 2 position (index 8) + * @returns {Mat3} A new Mat3 + */ + fromValues( + m00: number, m01: number, m02: number, m10: number, m11: number, + m12: number, m20: number, m21: number, m22: number): Mat3; + + + /** + * Set the components of a Mat3 to the given values + * + * @param {Mat3} out the receiving matrix + * @param {number} m00 Component in column 0, row 0 position (index 0) + * @param {number} m01 Component in column 0, row 1 position (index 1) + * @param {number} m02 Component in column 0, row 2 position (index 2) + * @param {number} m10 Component in column 1, row 0 position (index 3) + * @param {number} m11 Component in column 1, row 1 position (index 4) + * @param {number} m12 Component in column 1, row 2 position (index 5) + * @param {number} m20 Component in column 2, row 0 position (index 6) + * @param {number} m21 Component in column 2, row 1 position (index 7) + * @param {number} m22 Component in column 2, row 2 position (index 8) + * @returns {Mat3} out + */ + set(out: Mat3, m00: number, m01: number, m02: number, m10: number, + m11: number, m12: number, m20: number, m21: number, m22: number): Mat3 + + /** + * Set a Mat3 to the identity matrix + * + * @param out the receiving matrix + * @returns out + */ + identity(out: Mat3): Mat3; + + /** + * Transpose the values of a Mat3 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + transpose(out: Mat3, a: Mat3): Mat3; + + /** + * Inverts a Mat3 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + invert(out: Mat3, a: Mat3): Mat3|null; + + /** + * Calculates the adjugate of a Mat3 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + adjoint(out: Mat3, a: Mat3): Mat3; + + /** + * Calculates the determinant of a Mat3 + * + * @param a the source matrix + * @returns determinant of a + */ + determinant(a: Mat3): number; + + /** + * Multiplies two Mat3's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Mat3, a: Mat3, b: Mat3): Mat3; + + /** + * Multiplies two Mat3's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Mat3, a: Mat3, b: Mat3): Mat3; + + + /** + * Translate a Mat3 by the given vector + * + * @param out the receiving matrix + * @param a the matrix to translate + * @param v vector to translate by + * @returns out + */ + translate(out: Mat3, a: Mat3, v: Vec3): Mat3; + + /** + * Rotates a Mat3 by the given angle + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @returns out + */ + rotate(out: Mat3, a: Mat3, rad: number): Mat3; + + /** + * Scales the Mat3 by the dimensions in the given Vec2 + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param v the Vec2 to scale the matrix by + * @returns out + **/ + scale(out: Mat3, a: Mat3, v: Vec2): Mat3; + + /** + * Creates a matrix from a vector translation + * This is equivalent to (but much faster than): + * + * Mat3.identity(dest); + * Mat3.translate(dest, dest, vec); + * + * @param {Mat3} out Mat3 receiving operation result + * @param {Vec2} v Translation vector + * @returns {Mat3} out + */ + fromTranslation(out: Mat3, v: Vec2): Mat3 + + /** + * Creates a matrix from a given angle + * This is equivalent to (but much faster than): + * + * Mat3.identity(dest); + * Mat3.rotate(dest, dest, rad); + * + * @param {Mat3} out Mat3 receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @returns {Mat3} out + */ + fromRotation(out: Mat3, rad: number): Mat3 + + /** + * Creates a matrix from a vector scaling + * This is equivalent to (but much faster than): + * + * Mat3.identity(dest); + * Mat3.scale(dest, dest, vec); + * + * @param {Mat3} out Mat3 receiving operation result + * @param {Vec2} v Scaling vector + * @returns {Mat3} out + */ + fromScaling(out: Mat3, v: Vec2): Mat3 + + /** + * Copies the values from a Mat2d into a Mat3 + * + * @param out the receiving matrix + * @param {Mat2d} a the matrix to copy + * @returns out + **/ + fromMat2d(out: Mat3, a: Mat2d): Mat3; + + /** + * Calculates a 3x3 matrix from the given Quaternion + * + * @param out Mat3 receiving operation result + * @param q Quaternion to create matrix from + * + * @returns out + */ + fromQuat(out: Mat3, q: Quat): Mat3; + + /** + * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix + * + * @param out Mat3 receiving operation result + * @param a Mat4 to derive the normal matrix from + * + * @returns out + */ + normalFromMat4(out: Mat3, a: Mat4): Mat3|null; + + /** + * Returns a string representation of a Mat3 + * + * @param mat matrix to represent as a string + * @returns string representation of the matrix + */ + str(mat: Mat3): string; + + /** + * Returns Frobenius norm of a Mat3 + * + * @param a the matrix to calculate Frobenius norm of + * @returns Frobenius norm + */ + frob(a: Mat3): number; + + /** + * Adds two Mat3's + * + * @param {Mat3} out the receiving matrix + * @param {Mat3} a the first operand + * @param {Mat3} b the second operand + * @returns {Mat3} out + */ + add(out: Mat3, a: Mat3, b: Mat3): Mat3 + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat3} out the receiving matrix + * @param {Mat3} a the first operand + * @param {Mat3} b the second operand + * @returns {Mat3} out + */ + subtract(out: Mat3, a: Mat3, b: Mat3): Mat3 + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat3} out the receiving matrix + * @param {Mat3} a the first operand + * @param {Mat3} b the second operand + * @returns {Mat3} out + */ + sub(out: Mat3, a: Mat3, b: Mat3): Mat3 + + /** + * Multiply each element of the matrix by a scalar. + * + * @param {Mat3} out the receiving matrix + * @param {Mat3} a the matrix to scale + * @param {number} b amount to scale the matrix's elements by + * @returns {Mat3} out + */ + multiplyScalar(out: Mat3, a: Mat3, b: number): Mat3 + + /** + * Adds two Mat3's after multiplying each element of the second operand + * by a scalar value. + * + * @param {Mat3} out the receiving vector + * @param {Mat3} a the first operand + * @param {Mat3} b the second operand + * @param {number} scale the amount to scale b's elements by before + * adding + * @returns {Mat3} out + */ + multiplyScalarAndAdd(out: Mat3, a: Mat3, b: Mat3, scale: number): Mat3 + + /** + * Returns whether or not the matrices have exactly the same elements in + * the same position (when compared with ===) + * + * @param {Mat3} a The first matrix. + * @param {Mat3} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + exactEquals(a: Mat3, b: Mat3): boolean; + + /** + * Returns whether or not the matrices have approximately the same elements + * in the same position. + * + * @param {Mat3} a The first matrix. + * @param {Mat3} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + equals(a: Mat3, b: Mat3): boolean +} + +// Mat4 +interface Mat4API { + /** + * Creates a new identity Mat4 + * + * @returns a new 4x4 matrix + */ + create(): Mat4; + + /** + * Creates a new Mat4 initialized with values from an existing matrix + * + * @param a matrix to clone + * @returns a new 4x4 matrix + */ + clone(a: Mat4): Mat4; + + /** + * Copy the values from one Mat4 to another + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + copy(out: Mat4, a: Mat4): Mat4; + + + /** + * Create a new Mat4 with the given values + * + * @param {number} m00 Component in column 0, row 0 position (index 0) + * @param {number} m01 Component in column 0, row 1 position (index 1) + * @param {number} m02 Component in column 0, row 2 position (index 2) + * @param {number} m03 Component in column 0, row 3 position (index 3) + * @param {number} m10 Component in column 1, row 0 position (index 4) + * @param {number} m11 Component in column 1, row 1 position (index 5) + * @param {number} m12 Component in column 1, row 2 position (index 6) + * @param {number} m13 Component in column 1, row 3 position (index 7) + * @param {number} m20 Component in column 2, row 0 position (index 8) + * @param {number} m21 Component in column 2, row 1 position (index 9) + * @param {number} m22 Component in column 2, row 2 position (index 10) + * @param {number} m23 Component in column 2, row 3 position (index 11) + * @param {number} m30 Component in column 3, row 0 position (index 12) + * @param {number} m31 Component in column 3, row 1 position (index 13) + * @param {number} m32 Component in column 3, row 2 position (index 14) + * @param {number} m33 Component in column 3, row 3 position (index 15) + * @returns {Mat4} A new Mat4 + */ + fromValues( + m00: number, m01: number, m02: number, m03: number, m10: number, + m11: number, m12: number, m13: number, m20: number, m21: number, + m22: number, m23: number, m30: number, m31: number, m32: number, + m33: number): Mat4; + + /** + * Set the components of a Mat4 to the given values + * + * @param {Mat4} out the receiving matrix + * @param {number} m00 Component in column 0, row 0 position (index 0) + * @param {number} m01 Component in column 0, row 1 position (index 1) + * @param {number} m02 Component in column 0, row 2 position (index 2) + * @param {number} m03 Component in column 0, row 3 position (index 3) + * @param {number} m10 Component in column 1, row 0 position (index 4) + * @param {number} m11 Component in column 1, row 1 position (index 5) + * @param {number} m12 Component in column 1, row 2 position (index 6) + * @param {number} m13 Component in column 1, row 3 position (index 7) + * @param {number} m20 Component in column 2, row 0 position (index 8) + * @param {number} m21 Component in column 2, row 1 position (index 9) + * @param {number} m22 Component in column 2, row 2 position (index 10) + * @param {number} m23 Component in column 2, row 3 position (index 11) + * @param {number} m30 Component in column 3, row 0 position (index 12) + * @param {number} m31 Component in column 3, row 1 position (index 13) + * @param {number} m32 Component in column 3, row 2 position (index 14) + * @param {number} m33 Component in column 3, row 3 position (index 15) + * @returns {Mat4} out + */ + set(out: Mat4, m00: number, m01: number, m02: number, m03: number, + m10: number, m11: number, m12: number, m13: number, m20: number, + m21: number, m22: number, m23: number, m30: number, m31: number, + m32: number, m33: number): Mat4; + + /** + * Set a Mat4 to the identity matrix + * + * @param out the receiving matrix + * @returns out + */ + identity(out: Mat4): Mat4; + + /** + * Transpose the values of a Mat4 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + transpose(out: Mat4, a: Mat4): Mat4; + + /** + * Inverts a Mat4 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + invert(out: Mat4, a: Mat4): Mat4|null; + + /** + * Calculates the adjugate of a Mat4 + * + * @param out the receiving matrix + * @param a the source matrix + * @returns out + */ + adjoint(out: Mat4, a: Mat4): Mat4; + + /** + * Calculates the determinant of a Mat4 + * + * @param a the source matrix + * @returns determinant of a + */ + determinant(a: Mat4): number; + + /** + * Multiplies two Mat4's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Mat4, a: Mat4, b: Mat4): Mat4; + + /** + * Multiplies two Mat4's + * + * @param out the receiving matrix + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Mat4, a: Mat4, b: Mat4): Mat4; + + /** + * Translate a Mat4 by the given vector + * + * @param out the receiving matrix + * @param a the matrix to translate + * @param v vector to translate by + * @returns out + */ + translate(out: Mat4, a: Mat4, v: Vec3): Mat4; + + /** + * Scales the Mat4 by the dimensions in the given Vec3 + * + * @param out the receiving matrix + * @param a the matrix to scale + * @param v the Vec3 to scale the matrix by + * @returns out + **/ + scale(out: Mat4, a: Mat4, v: Vec3): Mat4; + + /** + * Rotates a Mat4 by the given angle + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @param axis the axis to rotate around + * @returns out + */ + rotate(out: Mat4, a: Mat4, rad: number, axis: Vec3): Mat4; + + /** + * Rotates a matrix by the given angle around the X axis + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @returns out + */ + rotateX(out: Mat4, a: Mat4, rad: number): Mat4; + + /** + * Rotates a matrix by the given angle around the Y axis + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @returns out + */ + rotateY(out: Mat4, a: Mat4, rad: number): Mat4; + + /** + * Rotates a matrix by the given angle around the Z axis + * + * @param out the receiving matrix + * @param a the matrix to rotate + * @param rad the angle to rotate the matrix by + * @returns out + */ + rotateZ(out: Mat4, a: Mat4, rad: number): Mat4; + + /** + * Creates a matrix from a vector translation + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.translate(dest, dest, vec); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {Vec3} v Translation vector + * @returns {Mat4} out + */ + fromTranslation(out: Mat4, v: Vec3): Mat4 + + /** + * Creates a matrix from a vector scaling + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.scale(dest, dest, vec); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {Vec3} v Scaling vector + * @returns {Mat4} out + */ + fromScaling(out: Mat4, v: Vec3): Mat4 + + /** + * Creates a matrix from a given angle around a given axis + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.rotate(dest, dest, rad, axis); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @param {Vec3} axis the axis to rotate around + * @returns {Mat4} out + */ + fromRotation(out: Mat4, rad: number, axis: Vec3): Mat4 + + /** + * Creates a matrix from the given angle around the X axis + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.rotateX(dest, dest, rad); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @returns {Mat4} out + */ + fromXRotation(out: Mat4, rad: number): Mat4 + + /** + * Creates a matrix from the given angle around the Y axis + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.rotateY(dest, dest, rad); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @returns {Mat4} out + */ + fromYRotation(out: Mat4, rad: number): Mat4 + + + /** + * Creates a matrix from the given angle around the Z axis + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.rotateZ(dest, dest, rad); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {number} rad the angle to rotate the matrix by + * @returns {Mat4} out + */ + fromZRotation(out: Mat4, rad: number): Mat4 + + /** + * Creates a matrix from a Quaternion rotation and vector translation + * This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.translate(dest, vec); + * var QuatMat = Mat4.create(); + * Quat4.toMat4(Quat, QuatMat); + * Mat4.multiply(dest, QuatMat); + * + * @param out Mat4 receiving operation result + * @param q Rotation Quaternion + * @param v Translation vector + * @returns out + */ + fromRotationTranslation(out: Mat4, q: Quat, v: Vec3): Mat4; + + /** + * Returns the translation vector component of a transformation + * matrix. If a matrix is built with fromRotationTranslation, + * the returned vector will be the same as the translation vector + * originally supplied. + * @param {Vec3} out Vector to receive translation component + * @param {Mat4} mat Matrix to be decomposed (input) + * @return {Vec3} out + */ + getTranslation(out: Vec3, mat: Mat4): Vec3; + + /** + * Returns a Quaternion representing the rotational component + * of a transformation matrix. If a matrix is built with + * fromRotationTranslation, the returned Quaternion will be the + * same as the Quaternion originally supplied. + * @param {Quat} out Quaternion to receive the rotation component + * @param {Mat4} mat Matrix to be decomposed (input) + * @return {Quat} out + */ + getRotation(out: Quat, mat: Mat4): Quat; + + /** + * Creates a matrix from a Quaternion rotation, vector translation and + * vector scale This is equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.translate(dest, vec); + * var QuatMat = Mat4.create(); + * Quat4.toMat4(Quat, QuatMat); + * Mat4.multiply(dest, QuatMat); + * Mat4.scale(dest, scale) + * + * @param out Mat4 receiving operation result + * @param q Rotation Quaternion + * @param v Translation vector + * @param s Scaling vector + * @returns out + */ + fromRotationTranslationScale(out: Mat4, q: Quat, v: Vec3, s: Vec3): Mat4; + + /** + * Creates a matrix from a Quaternion rotation, vector translation and + * vector scale, rotating and scaling around the given origin This is + * equivalent to (but much faster than): + * + * Mat4.identity(dest); + * Mat4.translate(dest, vec); + * Mat4.translate(dest, origin); + * var QuatMat = Mat4.create(); + * Quat4.toMat4(Quat, QuatMat); + * Mat4.multiply(dest, QuatMat); + * Mat4.scale(dest, scale) + * Mat4.translate(dest, negativeOrigin); + * + * @param {Mat4} out Mat4 receiving operation result + * @param {Quat} q Rotation Quaternion + * @param {Vec3} v Translation vector + * @param {Vec3} s Scaling vector + * @param {Vec3} o The origin vector around which to scale and rotate + * @returns {Mat4} out + */ + fromRotationTranslationScaleOrigin( + out: Mat4, q: Quat, v: Vec3, s: Vec3, o: Vec3): Mat4 + + /** + * Calculates a 4x4 matrix from the given Quaternion + * + * @param {Mat4} out Mat4 receiving operation result + * @param {Quat} q Quaternion to create matrix from + * + * @returns {Mat4} out + */ + fromQuat(out: Mat4, q: Quat): Mat4 + + /** + * Generates a frustum matrix with the given bounds + * + * @param out Mat4 frustum matrix will be written into + * @param left Left bound of the frustum + * @param right Right bound of the frustum + * @param bottom Bottom bound of the frustum + * @param top Top bound of the frustum + * @param near Near bound of the frustum + * @param far Far bound of the frustum + * @returns out + */ + frustum( + out: Mat4, left: number, right: number, bottom: number, top: number, + near: number, far: number): Mat4; + + /** + * Generates a perspective projection matrix with the given bounds + * + * @param out Mat4 frustum matrix will be written into + * @param fovy Vertical field of view in radians + * @param aspect Aspect ratio. typically viewport width/height + * @param near Near bound of the frustum + * @param far Far bound of the frustum + * @returns out + */ + perspective( + out: Mat4, fovy: number, aspect: number, near: number, far: number): Mat4; + + /** + * Generates a perspective projection matrix with the given field of view. + * This is primarily useful for generating projection matrices to be used + * with the still experimental WebVR API. + * + * @param {Mat4} out Mat4 frustum matrix will be written into + * @param {Object} fov Object containing the following values: upDegrees, + * downDegrees, leftDegrees, rightDegrees + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @returns {Mat4} out + */ + perspectiveFromFieldOfView( + out: Mat4, fov: { + upDegrees: number, + downDegrees: number, + leftDegrees: number, + rightDegrees: number + }, + near: number, far: number): Mat4 + + /** + * Generates a orthogonal projection matrix with the given bounds + * + * @param out Mat4 frustum matrix will be written into + * @param left Left bound of the frustum + * @param right Right bound of the frustum + * @param bottom Bottom bound of the frustum + * @param top Top bound of the frustum + * @param near Near bound of the frustum + * @param far Far bound of the frustum + * @returns out + */ + ortho( + out: Mat4, left: number, right: number, bottom: number, top: number, + near: number, far: number): Mat4; + + /** + * Generates a look-at matrix with the given eye position, focal point, and + * up axis + * + * @param out Mat4 frustum matrix will be written into + * @param eye Position of the viewer + * @param center Point the viewer is looking at + * @param up Vec3 pointing up + * @returns out + */ + lookAt(out: Mat4, eye: Vec3, center: Vec3, up: Vec3): Mat4; + + /** + * Returns a string representation of a Mat4 + * + * @param mat matrix to represent as a string + * @returns string representation of the matrix + */ + str(mat: Mat4): string; + + /** + * Returns Frobenius norm of a Mat4 + * + * @param a the matrix to calculate Frobenius norm of + * @returns Frobenius norm + */ + frob(a: Mat4): number; + + /** + * Adds two Mat4's + * + * @param {Mat4} out the receiving matrix + * @param {Mat4} a the first operand + * @param {Mat4} b the second operand + * @returns {Mat4} out + */ + add(out: Mat4, a: Mat4, b: Mat4): Mat4 + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat4} out the receiving matrix + * @param {Mat4} a the first operand + * @param {Mat4} b the second operand + * @returns {Mat4} out + */ + subtract(out: Mat4, a: Mat4, b: Mat4): Mat4 + + /** + * Subtracts matrix b from matrix a + * + * @param {Mat4} out the receiving matrix + * @param {Mat4} a the first operand + * @param {Mat4} b the second operand + * @returns {Mat4} out + */ + sub(out: Mat4, a: Mat4, b: Mat4): Mat4 + + /** + * Multiply each element of the matrix by a scalar. + * + * @param {Mat4} out the receiving matrix + * @param {Mat4} a the matrix to scale + * @param {number} b amount to scale the matrix's elements by + * @returns {Mat4} out + */ + multiplyScalar(out: Mat4, a: Mat4, b: number): Mat4 + + /** + * Adds two Mat4's after multiplying each element of the second operand + * by a scalar value. + * + * @param {Mat4} out the receiving vector + * @param {Mat4} a the first operand + * @param {Mat4} b the second operand + * @param {number} scale the amount to scale b's elements by before + * adding + * @returns {Mat4} out + */ + multiplyScalarAndAdd(out: Mat4, a: Mat4, b: Mat4, scale: number): Mat4 + + /** + * Returns whether or not the matrices have exactly the same elements in + * the same position (when compared with ===) + * + * @param {Mat4} a The first matrix. + * @param {Mat4} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + exactEquals(a: Mat4, b: Mat4): boolean + + /** + * Returns whether or not the matrices have approximately the same + * elements in the same position. + * + * @param {Mat4} a The first matrix. + * @param {Mat4} b The second matrix. + * @returns {boolean} True if the matrices are equal, false otherwise. + */ + equals(a: Mat4, b: Mat4): boolean +} + +// Quat +interface QuatAPI { + /** + * Creates a new identity Quat + * + * @returns a new Quaternion + */ + create(): Quat; + + /** + * Creates a new Quat initialized with values from an existing Quaternion + * + * @param a Quaternion to clone + * @returns a new Quaternion + * @function + */ + clone(a: Quat): Quat; + + /** + * Creates a new Quat initialized with the given values + * + * @param x X component + * @param y Y component + * @param z Z component + * @param w W component + * @returns a new Quaternion + * @function + */ + fromValues(x: number, y: number, z: number, w: number): Quat; + + /** + * Copy the values from one Quat to another + * + * @param out the receiving Quaternion + * @param a the source Quaternion + * @returns out + * @function + */ + copy(out: Quat, a: Quat): Quat; + + /** + * Set the components of a Quat to the given values + * + * @param out the receiving Quaternion + * @param x X component + * @param y Y component + * @param z Z component + * @param w W component + * @returns out + * @function + */ + set(out: Quat, x: number, y: number, z: number, w: number): Quat; + + /** + * Set a Quat to the identity Quaternion + * + * @param out the receiving Quaternion + * @returns out + */ + identity(out: Quat): Quat; + + /** + * Sets a Quaternion to represent the shortest rotation from one + * vector to another. + * + * Both vectors are assumed to be unit length. + * + * @param {Quat} out the receiving Quaternion. + * @param {Vec3} a the initial vector + * @param {Vec3} b the destination vector + * @returns {Quat} out + */ + rotationTo(out: Quat, a: Vec3, b: Vec3): Quat; + + /** + * Sets the specified Quaternion with values corresponding to the given + * axes. Each axis is a Vec3 and is expected to be unit length and + * perpendicular to all other specified axes. + * + * @param {Vec3} view the vector representing the viewing direction + * @param {Vec3} right the vector representing the local "right" direction + * @param {Vec3} up the vector representing the local "up" direction + * @returns {Quat} out + */ + setAxes(out: Quat, view: Vec3, right: Vec3, up: Vec3): Quat + + + + /** + * Sets a Quat from the given angle and rotation axis, + * then returns it. + * + * @param out the receiving Quaternion + * @param axis the axis around which to rotate + * @param rad the angle in radians + * @returns out + **/ + setAxisAngle(out: Quat, axis: Vec3, rad: number): Quat; + + /** + * Gets the rotation axis and angle for a given + * Quaternion. If a Quaternion is created with + * setAxisAngle, this method will return the same + * values as providied in the original parameter list + * OR functionally equivalent values. + * Example: The Quaternion formed by axis [0, 0, 1] and + * angle -90 is the same as the Quaternion formed by + * [0, 0, 1] and 270. This method favors the latter. + * @param {Vec3} out_axis Vector receiving the axis of rotation + * @param {Quat} q Quaternion to be decomposed + * @return {number} Angle, in radians, of the rotation + */ + getAxisAngle(out_axis: Vec3, q: Quat): number + + /** + * Adds two Quat's + * + * @param out the receiving Quaternion + * @param a the first operand + * @param b the second operand + * @returns out + * @function + */ + add(out: Quat, a: Quat, b: Quat): Quat; + + /** + * Multiplies two Quat's + * + * @param out the receiving Quaternion + * @param a the first operand + * @param b the second operand + * @returns out + */ + multiply(out: Quat, a: Quat, b: Quat): Quat; + + /** + * Multiplies two Quat's + * + * @param out the receiving Quaternion + * @param a the first operand + * @param b the second operand + * @returns out + */ + mul(out: Quat, a: Quat, b: Quat): Quat; + + /** + * Scales a Quat by a scalar number + * + * @param out the receiving vector + * @param a the vector to scale + * @param b amount to scale the vector by + * @returns out + * @function + */ + scale(out: Quat, a: Quat, b: number): Quat; + + /** + * Calculates the length of a Quat + * + * @param a vector to calculate length of + * @returns length of a + * @function + */ + length(a: Quat): number; + + /** + * Calculates the length of a Quat + * + * @param a vector to calculate length of + * @returns length of a + * @function + */ + len(a: Quat): number; + + /** + * Calculates the squared length of a Quat + * + * @param a vector to calculate squared length of + * @returns squared length of a + * @function + */ + squaredLength(a: Quat): number; + + /** + * Calculates the squared length of a Quat + * + * @param a vector to calculate squared length of + * @returns squared length of a + * @function + */ + sqrLen(a: Quat): number; + + /** + * Normalize a Quat + * + * @param out the receiving Quaternion + * @param a Quaternion to normalize + * @returns out + * @function + */ + normalize(out: Quat, a: Quat): Quat; + + /** + * Calculates the dot product of two Quat's + * + * @param a the first operand + * @param b the second operand + * @returns dot product of a and b + * @function + */ + dot(a: Quat, b: Quat): number; + + /** + * Performs a linear interpolation between two Quat's + * + * @param out the receiving Quaternion + * @param a the first operand + * @param b the second operand + * @param t interpolation amount between the two inputs + * @returns out + * @function + */ + lerp(out: Quat, a: Quat, b: Quat, t: number): Quat; + + /** + * Performs a spherical linear interpolation between two Quat + * + * @param out the receiving Quaternion + * @param a the first operand + * @param b the second operand + * @param t interpolation amount between the two inputs + * @returns out + */ + slerp(out: Quat, a: Quat, b: Quat, t: number): Quat; + + /** + * Performs a spherical linear interpolation with two control points + * + * @param {Quat} out the receiving Quaternion + * @param {Quat} a the first operand + * @param {Quat} b the second operand + * @param {Quat} c the third operand + * @param {Quat} d the fourth operand + * @param {number} t interpolation amount + * @returns {Quat} out + */ + sqlerp(out: Quat, a: Quat, b: Quat, c: Quat, d: Quat, t: number): Quat; + + /** + * Calculates the inverse of a Quat + * + * @param out the receiving Quaternion + * @param a Quat to calculate inverse of + * @returns out + */ + invert(out: Quat, a: Quat): Quat; + + /** + * Calculates the conjugate of a Quat + * If the Quaternion is normalized, this function is faster than + * Quat.inverse and produces the same result. + * + * @param out the receiving Quaternion + * @param a Quat to calculate conjugate of + * @returns out + */ + conjugate(out: Quat, a: Quat): Quat; + + /** + * Returns a string representation of a Quaternion + * + * @param a Quat to represent as a string + * @returns string representation of the Quat + */ + str(a: Quat): string; + + /** + * Rotates a Quaternion by the given angle about the X axis + * + * @param out Quat receiving operation result + * @param a Quat to rotate + * @param rad angle (in radians) to rotate + * @returns out + */ + rotateX(out: Quat, a: Quat, rad: number): Quat; + + /** + * Rotates a Quaternion by the given angle about the Y axis + * + * @param out Quat receiving operation result + * @param a Quat to rotate + * @param rad angle (in radians) to rotate + * @returns out + */ + rotateY(out: Quat, a: Quat, rad: number): Quat; + + /** + * Rotates a Quaternion by the given angle about the Z axis + * + * @param out Quat receiving operation result + * @param a Quat to rotate + * @param rad angle (in radians) to rotate + * @returns out + */ + rotateZ(out: Quat, a: Quat, rad: number): Quat; + + /** + * Creates a Quaternion from the given 3x3 rotation matrix. + * + * NOTE: The resultant Quaternion is not normalized, so you should be sure + * to renormalize the Quaternion yourself where necessary. + * + * @param out the receiving Quaternion + * @param m rotation matrix + * @returns out + * @function + */ + fromMat3(out: Quat, m: Mat3): Quat; + + /** + * Sets the specified Quaternion with values corresponding to the given + * axes. Each axis is a Vec3 and is expected to be unit length and + * perpendicular to all other specified axes. + * + * @param out the receiving Quat + * @param view the vector representing the viewing direction + * @param right the vector representing the local "right" direction + * @param up the vector representing the local "up" direction + * @returns out + */ + setAxes(out: Quat, view: Vec3, right: Vec3, up: Vec3): Quat; + + /** + * Sets a Quaternion to represent the shortest rotation from one + * vector to another. + * + * Both vectors are assumed to be unit length. + * + * @param out the receiving Quaternion. + * @param a the initial vector + * @param b the destination vector + * @returns out + */ + rotationTo(out: Quat, a: Vec3, b: Vec3): Quat; + + /** + * Calculates the W component of a Quat from the X, Y, and Z components. + * Assumes that Quaternion is 1 unit in length. + * Any existing W component will be ignored. + * + * @param out the receiving Quaternion + * @param a Quat to calculate W component of + * @returns out + */ + calculateW(out: Quat, a: Quat): Quat; + + /** + * Returns whether or not the Quaternions have exactly the same elements in + * the same position (when compared with ===) + * + * @param {Quat} a The first vector. + * @param {Quat} b The second vector. + * @returns {boolean} True if the Quaternions are equal, false otherwise. + */ + exactEquals(a: Quat, b: Quat): boolean; + + /** + * Returns whether or not the Quaternions have approximately the same + * elements in the same position. + * + * @param {Quat} a The first vector. + * @param {Quat} b The second vector. + * @returns {boolean} True if the Quaternions are equal, false otherwise. + */ + equals(a: Quat, b: Quat): boolean; +} diff --git a/examples.js b/examples.js new file mode 100644 index 000000000..dbe1c4bfc --- /dev/null +++ b/examples.js @@ -0,0 +1,574 @@ +// Copyright 2022 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** @type {import("../../manifold-encapsulated-types")["Manifold"]} */ +const Manifold = globalThis.Manifold; + +export const examples = { + functions: { + Intro: function() { + // Write code in JavaScript or TypeScript and this editor will show the + // API docs. Type e.g. "box." to see the Manifold API. Type + // "CrossSection." or "Manifold." to list the 2D and 3D constructors, + // respectively. Type "module." to see the static API - these functions + // can also be used bare. Use console.log() to print output (lower-right). + // This editor defines Z as up and units of mm. + const {cube, sphere} = Manifold; + const box = cube([100, 100, 100], true); + const ball = sphere(60, 100); + // You must name your final output "result", or create at least one + // GLTFNode - see Menger Sponge and Gyroid Module examples. + const result = box.subtract(ball); + + // For visual debug, wrap any shape with show() and it and all of its + // copies will be shown in transparent red, akin to # in OpenSCAD. Or try + // only() to ghost out everything else, akin to * in OpenSCAD. + + // All changes are automatically saved and restored between sessions. + // This PWA is purely local - there is no server communication. + // This means it will work equally well offline once loaded. + // Consider installing it (icon in the search bar) for easy access. + + // See the script drop-down above ("Intro") for usage examples. The + // gl-matrix package from npm is automatically imported for convenience - + // its API is available in the top-level glMatrix object. + + // Use GLTFNode for disjoint manifolds rather than compose(), as this will + // keep them better organized in the GLB. This will also allow you to + // specify material properties, and even vertex colors via + // setProperties(). See Tetrahedron Puzzle example. + return result; + }, + + TetrahedronPuzzle: function() { + // A tetrahedron cut into two identical halves that can screw together as + // a puzzle. This demonstrates how redundant points along a polygon can be + // used to make twisted extrusions smoother. It also showcases animated + // assemblies. Based on the screw puzzle by George Hart: + // https://www.thingiverse.com/thing:186372 + + const edgeLength = 50; // Length of each edge of the overall tetrahedron. + const gap = 0.2; // Spacing between the two halves to allow sliding. + const nDivisions = 50; // Divisions (both ways) in the screw surface. + + const scale = edgeLength / (2 * Math.sqrt(2)); + + const tet = Manifold.tetrahedron().intersect( + Manifold.tetrahedron().rotate([0, 0, 90]).scale(2.5)); + + const box = []; + box.push([2, -2], [2, 2]); + for (let i = 0; i <= nDivisions; ++i) { + box.push([gap / (2 * scale), 2 - i * 4 / nDivisions]); + } + + const cyan = [0, 1, 1]; + const magenta = [1, 0, 1]; + const fade = (color, pos) => { + for (let i = 0; i < 3; ++i) { + const x = pos[2] / 2; + color[i] = cyan[i] * x + magenta[i] * (1 - x); + } + }; + + // setProperties(3, fade) creates three channels of vertex properties + // according to the above fade function. setMaterial assigns these + // channels as colors, and sets the factor to white, since our default is + // yellow. + const screw = setMaterial( + Manifold.extrude(box, 2, nDivisions, 270).setProperties(3, fade), + {baseColorFactor: [1, 1, 1], attributes: ['COLOR_0']}); + + const result = + tet.intersect(screw.rotate([0, 0, -45]).translate([0, 0, -1])) + .scale(scale); + + // Assigned materials are only applied to a GLTFNode. Note that material + // definitions cascade, applying recursively to all child surfaces, but + // overridden by any materials defined lower down. The default material + // properties, as well as animation parameters can be set via + // globalDefaults. + + const layFlat = new GLTFNode(); + layFlat.rotation = + [45, -Math.atan(1 / Math.sqrt(2)) * 180 / Math.PI, 120]; + layFlat.translation = [0, 0, scale * Math.sqrt(3) / 3]; + + const fixed = new GLTFNode(layFlat); + fixed.manifold = result; + fixed.rotation = [0, 0, 180]; + + // For 3MF export, only top-level objects are independently arrangeable. + const layFlat2 = layFlat.clone(); + + const moving = new GLTFNode(layFlat2); + moving.manifold = result; + // Use functions to create animation, which runs from t=0 to t=1. + moving.translation = (t) => { + const a = 1 - t; + const x = a > 0.5 ? scale * 2 * (0.5 - a) : 0; + return [x, x, -2 * x + scale * 4 * (0.5 - Math.abs(0.5 - a))]; + }; + moving.rotation = (t) => [0, 0, 270 * 2 * (1 - t)]; + + globalDefaults.animationLength = 10; // seconds + globalDefaults.animationMode = 'ping-pong'; + return result; + }, + + RoundedFrame: function() { + // Demonstrates how at 90-degree intersections, the sphere and cylinder + // facets match up perfectly, for any choice of global resolution + // parameters. + const {sphere, cylinder, union, cube} = Manifold; + + function roundedFrame(edgeLength, radius, circularSegments = 0) { + const edge = cylinder(edgeLength, radius, -1, circularSegments); + const corner = sphere(radius, circularSegments); + + const edge1 = union(corner, edge).rotate([-90, 0, 0]).translate([ + -edgeLength / 2, -edgeLength / 2, 0 + ]); + + const edge2 = union( + union(edge1, edge1.rotate([0, 0, 180])), + edge.translate([-edgeLength / 2, -edgeLength / 2, 0])); + + const edge4 = union(edge2, edge2.rotate([0, 0, 90])).translate([ + 0, 0, -edgeLength / 2 + ]); + + return union(edge4, edge4.rotate([180, 0, 0])); + } + + setMinCircularAngle(3); + setMinCircularEdgeLength(0.5); + const result = roundedFrame(100, 10); + // Demonstrate how you can use the .split method to perform + // a subtraction and an intersection at once + const [inside, outside] = result.split(cube(100, true)); + + const outsideNode = new GLTFNode(); + outsideNode.manifold = outside; + + const insideNode = new GLTFNode(); + insideNode.manifold = inside; + insideNode.material = {baseColorFactor: [0, 1, 1]}; + + return result; + }, + + Heart: function() { + // Smooth, complex manifolds can be created using the warp() function. + // This example recreates the Exploitable Heart by Emmett Lalish: + // https://www.thingiverse.com/thing:6190 + // It also demonstrates the use of setMorph to animate a warping function. + + const func = (v) => { + const x2 = v[0] * v[0]; + const y2 = v[1] * v[1]; + const z = v[2]; + const z2 = z * z; + const a = x2 + 9 / 4 * y2 + z2; + const b = z * z2 * (x2 + 9 / 80 * y2); + const a2 = a * a; + const a3 = a * a2; + + const step = (r) => { + const r2 = r * r; + const r4 = r2 * r2; + // Taubin's function: https://mathworld.wolfram.com/HeartSurface.html + const f = a3 * r4 * r2 - b * r4 * r - 3 * a2 * r4 + 3 * a * r2 - 1; + // Derivative + const df = + 6 * a3 * r4 * r - 5 * b * r4 - 12 * a2 * r2 * r + 6 * a * r; + return f / df; + }; + // Newton's method for root finding + let r = 1.5; + let dr = 1; + while (Math.abs(dr) > 0.0001) { + dr = step(r); + r -= dr; + } + // Update radius + v[0] *= r; + v[1] *= r; + v[2] *= r; + }; + + const ball = Manifold.sphere(1, 200); + + const heart = ball.warp(func); + const box = heart.boundingBox(); + const scale = 100 / (box.max[0] - box.min[0]); + + setMorphStart(ball, func); + const node = new GLTFNode(); + node.manifold = ball; + node.scale = [scale, scale, scale]; + + globalDefaults.animationLength = 5; // seconds + globalDefaults.animationMode = 'ping-pong'; + + const result = heart.scale(scale); + return result; + }, + + Scallop: function() { + // A smoothed manifold demonstrating selective edge sharpening with + // smooth() and refine(), see more details at: + // https://elalish.blogspot.com/2022/03/smoothing-triangle-meshes.html + + const height = 10; + const radius = 30; + const offset = 20; + const wiggles = 12; + const sharpness = 0.8; + const n = 50; + + const positions = []; + const triangles = []; + positions.push(-offset, 0, height, -offset, 0, -height); + const sharpenedEdges = []; + + const delta = 3.14159 / wiggles; + for (let i = 0; i < 2 * wiggles; ++i) { + const theta = (i - wiggles) * delta; + const amp = 0.5 * height * Math.max(Math.cos(0.8 * theta), 0); + + positions.push( + radius * Math.cos(theta), radius * Math.sin(theta), + amp * (i % 2 == 0 ? 1 : -1)); + let j = i + 1; + if (j == 2 * wiggles) j = 0; + + const smoothness = 1 - sharpness * Math.cos((theta + delta / 2) / 2); + let halfedge = triangles.length + 1; + sharpenedEdges.push({halfedge, smoothness}); + triangles.push(0, 2 + i, 2 + j); + + halfedge = triangles.length + 1; + sharpenedEdges.push({halfedge, smoothness}); + triangles.push(1, 2 + j, 2 + i); + } + + const triVerts = Uint32Array.from(triangles); + const vertProperties = Float32Array.from(positions); + const scallop = new Mesh({numProp: 3, triVerts, vertProperties}); + + const colorCurvature = (color, pos, oldProp) => { + const a = Math.max(0, Math.min(1, oldProp[0] / 3 + 0.5)); + const b = a * a * (3 - 2 * a); + const red = [1, 0, 0]; + const blue = [0, 0, 1]; + for (let i = 0; i < 3; ++i) { + color[i] = (1 - b) * blue[i] + b * red[i]; + } + }; + const result = Manifold.smooth(scallop, sharpenedEdges) + .refine(n) + .calculateCurvature(-1, 0) + .setProperties(3, colorCurvature); + + const node = new GLTFNode(); + node.manifold = result; + node.material = { + baseColorFactor: [1, 1, 1], + metallic: 0, + attributes: ['COLOR_0'] + }; + return result; + }, + + TorusKnot: function() { + // Creates a classic torus knot, defined as a string wrapping periodically + // around the surface of an imaginary donut. If p and q have a common + // factor then you will get multiple separate, interwoven knots. This is + // an example of using the warp() method, thus avoiding any direct + // handling of triangles. + + // The number of times the thread passes through the donut hole. + const p = 1; + // The number of times the thread circles the donut. + const q = 3; + // Radius of the interior of the imaginary donut. + const majorRadius = 25; + // Radius of the small cross-section of the imaginary donut. + const minorRadius = 10; + // Radius of the small cross-section of the actual object. + const threadRadius = 3.75; + // Number of linear segments making up the threadRadius circle. Default is + // getCircularSegments(threadRadius). + const circularSegments = -1; + // Number of segments along the length of the knot. Default makes roughly + // square facets. + const linearSegments = -1; + + // These default values recreate Matlab Knot by Emmett Lalish: + // https://www.thingiverse.com/thing:7080 + + const {vec3} = glMatrix; + + function gcd(a, b) { + return b == 0 ? a : gcd(b, a % b); + } + + const kLoops = gcd(p, q); + const pk = p / kLoops; + const qk = q / kLoops; + const n = circularSegments > 2 ? circularSegments : + getCircularSegments(threadRadius); + const m = linearSegments > 2 ? linearSegments : + n * qk * majorRadius / threadRadius; + + const offset = 2 + const circle = CrossSection.circle(1, n).translate([offset, 0]); + + const func = (v) => { + const psi = qk * Math.atan2(v[0], v[1]); + const theta = psi * pk / qk; + const x1 = Math.sqrt(v[0] * v[0] + v[1] * v[1]); + const phi = Math.atan2(x1 - offset, v[2]); + vec3.set( + v, threadRadius * Math.cos(phi), 0, threadRadius * Math.sin(phi)); + const center = vec3.fromValues(0, 0, 0); + const r = majorRadius + minorRadius * Math.cos(theta); + vec3.rotateX(v, v, center, -Math.atan2(pk * minorRadius, qk * r)); + v[0] += minorRadius; + vec3.rotateY(v, v, center, theta); + v[0] += majorRadius; + vec3.rotateZ(v, v, center, psi); + }; + + const result = Manifold.revolve(circle, m).warp(func); + + for (let k = 0; k < kLoops; ++k) { + const node = new GLTFNode(); + node.manifold = result; + node.rotation = [0, 0, 360 * (k / kLoops) * (qk / pk)]; + node.translation = [0, 0, result.boundingBox().min[2]]; + } + + return result; + }, + + MengerSponge: function() { + // This example demonstrates how symbolic perturbation correctly creates + // holes even though the subtracted objects are exactly coplanar. + const {vec2} = glMatrix; + + function fractal(holes, hole, w, position, depth, maxDepth) { + w /= 3; + holes.push( + hole.scale([w, w, 1.0]).translate([position[0], position[1], 0.0])); + if (depth == maxDepth) return; + const offsets = [ + vec2.fromValues(-w, -w), vec2.fromValues(-w, 0.0), + vec2.fromValues(-w, w), vec2.fromValues(0.0, w), + vec2.fromValues(w, w), vec2.fromValues(w, 0.0), + vec2.fromValues(w, -w), vec2.fromValues(0.0, -w) + ]; + for (let offset of offsets) + fractal( + holes, hole, w, vec2.add(offset, position, offset), depth + 1, + maxDepth); + } + + function mengerSponge(n) { + let result = Manifold.cube([1, 1, 1], true); + const holes = []; + fractal(holes, result, 1.0, [0.0, 0.0], 1, n); + + const hole = Manifold.compose(holes); + + result = Manifold.difference([ + result, + hole, + hole.rotate([90, 0, 0]), + hole.rotate([0, 90, 0]), + ]); + return result; + } + + const posColors = (newProp, pos) => { + for (let i = 0; i < 3; ++i) { + newProp[i] = (1 - pos[i]) / 2; + } + }; + + const result = mengerSponge(3) + .trimByPlane([1, 1, 1], 0) + .setProperties(3, posColors) + .scale(100); + + const node = new GLTFNode(); + node.manifold = result; + node.material = {baseColorFactor: [1, 1, 1], attributes: ['COLOR_0']}; + return result; + }, + + StretchyBracelet: function() { + // Recreates Stretchy Bracelet by Emmett Lalish: + // https://www.thingiverse.com/thing:13505 + const {vec2} = glMatrix; + + function base( + width, radius, decorRadius, twistRadius, nDecor, innerRadius, + outerRadius, cut, nCut, nDivision) { + let b = Manifold.cylinder(width, radius + twistRadius / 2); + const circle = []; + const dPhiDeg = 180 / nDivision; + for (let i = 0; i < 2 * nDivision; ++i) { + circle.push([ + decorRadius * Math.cos(dPhiDeg * i * Math.PI / 180) + twistRadius, + decorRadius * Math.sin(dPhiDeg * i * Math.PI / 180) + ]); + } + let decor = Manifold.extrude(circle, width, nDivision, 180) + .scale([1, 0.5, 1]) + .translate([0, radius, 0]); + for (let i = 0; i < nDecor; i++) + b = b.add(decor.rotate([0, 0, (360.0 / nDecor) * i])); + const stretch = []; + const dPhiRad = 2 * Math.PI / nCut; + + const o = vec2.fromValues(0, 0); + const p0 = vec2.fromValues(outerRadius, 0); + const p1 = vec2.fromValues(innerRadius, -cut); + const p2 = vec2.fromValues(innerRadius, cut); + for (let i = 0; i < nCut; ++i) { + stretch.push(vec2.rotate([0, 0], p0, o, dPhiRad * i)); + stretch.push(vec2.rotate([0, 0], p1, o, dPhiRad * i)); + stretch.push(vec2.rotate([0, 0], p2, o, dPhiRad * i)); + stretch.push(vec2.rotate([0, 0], p0, o, dPhiRad * i)); + } + const result = + Manifold.intersection(Manifold.extrude(stretch, width), b); + return result; + } + + function stretchyBracelet( + radius = 30, height = 8, width = 15, thickness = 0.4, nDecor = 20, + nCut = 27, nDivision = 30) { + const twistRadius = Math.PI * radius / nDecor; + const decorRadius = twistRadius * 1.5; + const outerRadius = radius + (decorRadius + twistRadius) * 0.5; + const innerRadius = outerRadius - height; + const cut = 0.5 * (Math.PI * 2 * innerRadius / nCut - thickness); + const adjThickness = 0.5 * thickness * height / cut; + + return Manifold.difference( + base( + width, radius, decorRadius, twistRadius, nDecor, + innerRadius + thickness, outerRadius + adjThickness, + cut - adjThickness, nCut, nDivision), + base( + width, radius - thickness, decorRadius, twistRadius, nDecor, + innerRadius, outerRadius + 3 * adjThickness, cut, nCut, + nDivision)); + } + + const result = stretchyBracelet(); + return result; + }, + + GyroidModule: function() { + // Recreates Modular Gyroid Puzzle by Emmett Lalish: + // https://www.thingiverse.com/thing:25477. This sample demonstrates the + // use of a Signed Distance Function (SDF) to create smooth, complex + // manifolds. + const {vec3} = glMatrix; + + // number of modules along pyramid edge (use 1 for print orientation) + const m = 4; + // module size + const size = 20; + // SDF resolution + const n = 20; + + const pi = 3.14159; + + function gyroid(p) { + const x = p[0] - pi / 4; + const y = p[1] - pi / 4; + const z = p[2] - pi / 4; + return Math.cos(x) * Math.sin(y) + Math.cos(y) * Math.sin(z) + + Math.cos(z) * Math.sin(x); + } + + function gyroidOffset(level) { + const period = 2 * pi; + const box = { + min: vec3.fromValues(-period, -period, -period), + max: vec3.fromValues(period, period, period) + }; + return Manifold.levelSet(gyroid, box, period / n, level) + .scale(size / period); + }; + + function rhombicDodecahedron() { + const box = Manifold.cube([1, 1, 2], true).scale(size * Math.sqrt(2)); + const result = + box.rotate([90, 45, 0]).intersect(box.rotate([90, 45, 90])); + return result.intersect(box.rotate([0, 0, 45])); + } + + const gyroidModule = rhombicDodecahedron() + .intersect(gyroidOffset(-0.4)) + .subtract(gyroidOffset(0.4)); + + if (m > 1) { + for (let i = 0; i < m; ++i) { + for (let j = i; j < m; ++j) { + for (let k = j; k < m; ++k) { + const node = new GLTFNode(); + node.manifold = gyroidModule; + node.translation = + [(k + i - j) * size, (k - i) * size, (-j) * size]; + node.material = { + baseColorFactor: + [(k + i - j + 1) / m, (k - i + 1) / m, (j + 1) / m] + }; + } + } + } + } + + const result = gyroidModule.rotate([-45, 0, 90]).translate([ + 0, 0, size / Math.sqrt(2) + ]); + return result; + } + }, + + functionBodies: new Map() +}; + +for (const [func, code] of Object.entries(examples.functions)) { + const whole = code.toString(); + const lines = whole.split('\n'); + lines.splice(0, 1); // remove first line + lines.splice(-2, 2); // remove last two lines + // remove first six leading spaces + const body = '\n' + lines.map(l => l.slice(6)).join('\n'); + + const name = + func.replace(/([a-z])([A-Z])/g, '$1 $2'); // Add spaces between words + examples.functionBodies.set(name, body); +}; + +if (typeof self !== 'undefined') { + self.examples = examples; +} diff --git a/icons/close.png b/icons/close.png new file mode 100644 index 000000000..461cc3c94 Binary files /dev/null and b/icons/close.png differ diff --git a/icons/manifoldCAD.png b/icons/manifoldCAD.png new file mode 100644 index 000000000..4f7e5854d Binary files /dev/null and b/icons/manifoldCAD.png differ diff --git a/icons/manifoldCADonly.png b/icons/manifoldCADonly.png new file mode 100644 index 000000000..01d542cd6 Binary files /dev/null and b/icons/manifoldCADonly.png differ diff --git a/icons/mengerSponge192.png b/icons/mengerSponge192.png new file mode 100644 index 000000000..c53801c1f Binary files /dev/null and b/icons/mengerSponge192.png differ diff --git a/icons/mengerSponge512.png b/icons/mengerSponge512.png new file mode 100644 index 000000000..c1cc43349 Binary files /dev/null and b/icons/mengerSponge512.png differ diff --git a/icons/pause.png b/icons/pause.png new file mode 100644 index 000000000..c7cc4ca50 Binary files /dev/null and b/icons/pause.png differ diff --git a/icons/pencil.png b/icons/pencil.png new file mode 100644 index 000000000..faaa762ff Binary files /dev/null and b/icons/pencil.png differ diff --git a/icons/play.png b/icons/play.png new file mode 100644 index 000000000..06ff4a02d Binary files /dev/null and b/icons/play.png differ diff --git a/icons/redo.png b/icons/redo.png new file mode 100644 index 000000000..00b24a953 Binary files /dev/null and b/icons/redo.png differ diff --git a/icons/share.png b/icons/share.png new file mode 100644 index 000000000..e24c06044 Binary files /dev/null and b/icons/share.png differ diff --git a/icons/star.png b/icons/star.png new file mode 100644 index 000000000..320d8b8b0 Binary files /dev/null and b/icons/star.png differ diff --git a/icons/trash.png b/icons/trash.png new file mode 100644 index 000000000..2b5c0d7bf Binary files /dev/null and b/icons/trash.png differ diff --git a/icons/undo.png b/icons/undo.png new file mode 100644 index 000000000..6f6a4ed6e Binary files /dev/null and b/icons/undo.png differ diff --git a/index.html b/index.html new file mode 100644 index 000000000..55649168b --- /dev/null +++ b/index.html @@ -0,0 +1,103 @@ + + + + + ManifoldCAD + + + + + + + + + + + + + + + + + + + + + + +
+
+

ManifoldCAD +    + + + + + +

+
+ + +
+
+ +
+
+ + +
+ +
+
+
+
+
+
+ +
+

Loading...

+
+
+ + +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/make-manifold.html b/make-manifold.html new file mode 100644 index 000000000..2ccbe4c11 --- /dev/null +++ b/make-manifold.html @@ -0,0 +1,69 @@ + + + + + Make manifold glTF + + + + + + + + + + + +

Load a glTF/GLB model and our Manifold library will attempt to + merge it into a set of manifold objects. If the model is water-tight, you can download the new GLB which will have + our EXT_mesh_manifold extension, thus preserving the + manifold data without losing any mesh properties.

+

If the View Manifold GLB checkbox is enabled, then some meshes in the model have open edges and don't represent a + solid object. Check this box to see only the manifold parts, which will also enable them to be downloaded. If the + download button is still disabled, it means there were no manifold meshes found.

+ + + + + + Drop a GLB here + + + + + + \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 000000000..c49420c67 --- /dev/null +++ b/manifest.json @@ -0,0 +1,42 @@ +{ + "name": "ManifoldCAD", + "icons": [ + { + "src": "/icons/mengerSponge192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "/icons/mengerSponge512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "id": "/", + "start_url": "/", + "background_color": "#FFFFFF", + "display": "standalone", + "orientation": "landscape", + "scope": "/", + "theme_color": "#A288B3", + "description": "Fast, reliable, parametric solid modeling web app. Programmatic 3D design with JavaScript, inspired by and improving upon OpenSCAD & JSCAD. Demonstrates a new GPU-parallel, open-source geometry kernel: Manifold.", + "categories": [ + "design", + "developer", + "education", + "graphics", + "productivity" + ], + "screenshots": [ + { + "src": "/icons/manifoldCAD.png", + "type": "image/png", + "sizes": "2906x1980" + }, + { + "src": "/icons/manifoldCADonly.png", + "type": "image/png", + "sizes": "2906x1980" + } + ] +} \ No newline at end of file diff --git a/manifold-encapsulated-types.d.ts b/manifold-encapsulated-types.d.ts new file mode 100644 index 000000000..c44837fd9 --- /dev/null +++ b/manifold-encapsulated-types.d.ts @@ -0,0 +1,964 @@ +// Copyright 2023 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import {Box, FillRule, JoinType, Mat3, Mat4, Polygons, Properties, Rect, SealedFloat32Array, SealedUint32Array, SimplePolygon, Smoothness, Vec2, Vec3} from './manifold-global-types'; + +/** + * Triangulates a set of /epsilon-valid polygons. + * + * @param polygons The set of polygons, wound CCW and representing multiple + * polygons and/or holes. + * @param precision The value of epsilon, bounding the uncertainty of the input + * @return The triangles, referencing the original polygon points in order. + */ +export function triangulate(polygons: Polygons, precision?: number): Vec3[]; + +/** + * @name Defaults + * These static properties control how circular shapes are quantized by + * default on construction. If circularSegments is specified, it takes + * precedence. If it is zero, then instead the minimum is used of the segments + * calculated based on edge length and angle, rounded up to the nearest + * multiple of four. To get numbers not divisible by four, circularSegments + * must be specified. + */ +///@{ +export function setMinCircularAngle(angle: number): void; +export function setMinCircularEdgeLength(length: number): void; +export function setCircularSegments(segments: number): void; +export function getCircularSegments(radius: number): number; +export function resetToCircularDefaults(): void; +///@} + +export class CrossSection { + /** + * Create a 2d cross-section from a set of contours (complex polygons). A + * boolean union operation (with Positive filling rule by default) is + * performed to combine overlapping polygons and ensure the resulting + * CrossSection is free of intersections. + * + * @param contours A set of closed paths describing zero or more complex + * polygons. + * @param fillRule The filling rule used to interpret polygon sub-regions in + * contours. + */ + constructor(polygons: Polygons, fillRule?: FillRule); + + // Shapes + + static square(size?: Vec2|number, center?: boolean): CrossSection; + + static circle(radius: number, circularSegments?: number): CrossSection; + + // Extrusions (2d to 3d manifold) + + /** + * Constructs a manifold by extruding the cross-section along Z-axis. + * + * @param height Z-extent of extrusion. + * @param nDivisions Number of extra copies of the crossSection to insert into + * the shape vertically; especially useful in combination with twistDegrees to + * avoid interpolation artifacts. Default is none. + * @param twistDegrees Amount to twist the top crossSection relative to the + * bottom, interpolated linearly for the divisions in between. + * @param scaleTop Amount to scale the top (independently in X and Y). If the + * scale is {0, 0}, a pure cone is formed with only a single vertex at the + * top. Default {1, 1}. + * @param center If true, the extrusion is centered on the z-axis through the + * origin + * as opposed to resting on the XY plane as is default. + */ + extrude( + height: number, nDivisions?: number, twistDegrees?: number, + scaleTop?: Vec2|number, center?: boolean): Manifold; + + /** + * Constructs a manifold by revolving this cross-section around its Y-axis and + * then setting this as the Z-axis of the resulting manifold. If the contours + * cross the Y-axis, only the part on the positive X side is used. + * Geometrically valid input will result in geometrically valid output. + * + * @param circularSegments Number of segments along its diameter. Default is + * calculated by the static Defaults. + */ + revolve(circularSegments?: number, revolveDegrees?: number): Manifold; + + // Transformations + + /** + * Transform this CrossSection in space. Stored in column-major order. This + * operation can be chained. Transforms are combined and applied lazily. + * + * @param m The affine transformation matrix to apply to all the vertices. The + * last row is ignored. + */ + transform(m: Mat3): CrossSection; + + /** + * Move this CrossSection in space. This operation can be chained. Transforms + * are combined and applied lazily. + * + * @param v The vector to add to every vertex. + */ + translate(v: Vec2): CrossSection; + translate(x: number, y?: number): CrossSection; + + /** + * Applies a (Z-axis) rotation to the CrossSection, in degrees. This operation + * can be chained. Transforms are combined and applied lazily. + * + * @param degrees degrees about the Z-axis to rotate. + */ + rotate(v: number): CrossSection; + + /** + * Scale this CrossSection in space. This operation can be chained. Transforms + * are combined and applied lazily. + * + * @param v The vector to multiply every vertex by per component. + */ + scale(v: Vec2|number): CrossSection; + + + /** + * Mirror this CrossSection over the arbitrary axis described by the unit form + * of the given vector. If the length of the vector is zero, an empty + * CrossSection is returned. This operation can be chained. Transforms are + * combined and applied lazily. + * + * @param ax the axis to be mirrored over + */ + mirror(v: Vec2): CrossSection; + + /** + * Move the vertices of this CrossSection (creating a new one) according to + * any arbitrary input function, followed by a union operation (with a + * Positive fill rule) that ensures any introduced intersections are not + * included in the result. + * + * @param warpFunc A function that modifies a given vertex position. + */ + warp(warpFunc: (vert: Vec2) => void): CrossSection; + + /** + * Inflate the contours in CrossSection by the specified delta, handling + * corners according to the given JoinType. + * + * @param delta Positive deltas will cause the expansion of outlining contours + * to expand, and retraction of inner (hole) contours. Negative deltas will + * have the opposite effect. + * @param joinType The join type specifying the treatment of contour joins + * (corners). + * @param miterLimit The maximum distance in multiples of delta that vertices + * can be offset from their original positions with before squaring is + * applied, **when the join type is Miter** (default is 2, which is the + * minimum allowed). See the [Clipper2 + * MiterLimit](http://www.angusj.com/clipper2/Docs/Units/Clipper.Offset/Classes/ClipperOffset/Properties/MiterLimit.htm) + * page for a visual example. + * @param circularSegments Number of segments per 360 degrees of + * JoinType::Round corners (roughly, the number of vertices that + * will be added to each contour). Default is calculated by the static Quality + * defaults according to the radius. + */ + offset( + delta: number, joinType?: JoinType, miterLimit?: number, + circularSegments?: number): CrossSection; + + /** + * Remove vertices from the contours in this CrossSection that are less than + * the specified distance epsilon from an imaginary line that passes through + * its two adjacent vertices. Near duplicate vertices and collinear points + * will be removed at lower epsilons, with elimination of line segments + * becoming increasingly aggressive with larger epsilons. + * + * It is recommended to apply this function following Offset, in order to + * clean up any spurious tiny line segments introduced that do not improve + * quality in any meaningful way. This is particularly important if further + * offseting operations are to be performed, which would compound the issue. + * + * @param epsilon minimum distance vertices must diverge from the hypothetical + * outline without them in order to be included in the output (default + * 1e-6) + */ + simplify(epsilon?: number): CrossSection; + + // Clipping Operations + + /** + * Boolean union + */ + add(other: CrossSection|Polygons): CrossSection; + + /** + * Boolean difference + */ + subtract(other: CrossSection|Polygons): CrossSection; + + /** + * Boolean intersection + */ + intersect(other: CrossSection|Polygons): CrossSection; + + /** + * Boolean union of the cross-sections a and b + */ + static union(a: CrossSection|Polygons, b: CrossSection|Polygons): + CrossSection; + + /** + * Boolean difference of the cross-section b from the cross-section a + */ + static difference(a: CrossSection|Polygons, b: CrossSection|Polygons): + CrossSection; + + /** + * Boolean intersection of the cross-sections a and b + */ + static intersection(a: CrossSection|Polygons, b: CrossSection|Polygons): + CrossSection; + + /** + * Boolean union of a list of cross-sections + */ + static union(polygons: (CrossSection|Polygons)[]): CrossSection; + + /** + * Boolean difference of the tail of a list of cross-sections from its head + */ + static difference(polygons: (CrossSection|Polygons)[]): CrossSection; + + /** + * Boolean intersection of a list of cross-sections + */ + static intersection(polygons: (CrossSection|Polygons)[]): CrossSection; + + // Convex Hulls + + /** + * Compute the convex hull of the contours in this CrossSection. + */ + hull(): CrossSection; + + /** + * Compute the convex hull of all points in a list of polygons/cross-sections. + */ + static hull(polygons: (CrossSection|Polygons)[]): CrossSection; + + // Topological Operations + + /** + * Construct a CrossSection from a vector of other Polygons (batch + * boolean union). + */ + static compose(polygons: (CrossSection|Polygons)[]): CrossSection; + + /** + * This operation returns a vector of CrossSections that are topologically + * disconnected, each containing one outline contour with zero or more + * holes. + */ + decompose(): CrossSection[]; + + // Polygon Conversion + + /** + * Create a 2d cross-section from a set of contours (complex polygons). A + * boolean union operation (with Positive filling rule by default) is + * performed to combine overlapping polygons and ensure the resulting + * CrossSection is free of intersections. + * + * @param contours A set of closed paths describing zero or more complex + * polygons. + * @param fillRule The filling rule used to interpret polygon sub-regions in + * contours. + */ + static ofPolygons(polygons: Polygons, fillRule?: FillRule): CrossSection; + + /** + * Return the contours of this CrossSection as a list of simple polygons. + */ + toPolygons(): SimplePolygon[]; + + // Properties + + /** + * Return the total area covered by complex polygons making up the + * CrossSection. + */ + area(): number; + + /** + * Does the CrossSection (not) have any contours? + */ + isEmpty(): boolean; + + /** + * The number of vertices in the CrossSection. + */ + numVert(): number; + + /** + * The number of contours in the CrossSection. + */ + numContour(): number; + + /** + * Returns the axis-aligned bounding rectangle of all the CrossSection's + * vertices. + */ + bounds(): Rect; + + // Memory + + /** + * Frees the WASM memory of this CrossSection, since these cannot be + * garbage-collected automatically. + */ + delete(): void; +} + +export class Manifold { + /** + * Convert a Mesh into a Manifold, retaining its properties and merging only + * the positions according to the merge vectors. Will throw an error if the + * result is not an oriented 2-manifold. Will collapse degenerate triangles + * and unnecessary vertices. + * + * All fields are read, making this structure suitable for a lossless + * round-trip of data from getMesh(). For multi-material input, use + * reserveIDs() to set a unique originalID for each material, and sort the + * materials into triangle runs. + */ + constructor(mesh: Mesh); + + // Shapes + + /** + * Constructs a tetrahedron centered at the origin with one vertex at (1,1,1) + * and the rest at similarly symmetric points. + */ + static tetrahedron(): Manifold; + + /** + * Constructs a unit cube (edge lengths all one), by default in the first + * octant, touching the origin. + * + * @param size The X, Y, and Z dimensions of the box. + * @param center Set to true to shift the center to the origin. + */ + static cube(size?: Vec3|number, center?: boolean): Manifold; + + /** + * A convenience constructor for the common case of extruding a circle. Can + * also form cones if both radii are specified. + * + * @param height Z-extent + * @param radiusLow Radius of bottom circle. Must be positive. + * @param radiusHigh Radius of top circle. Can equal zero. Default is equal to + * radiusLow. + * @param circularSegments How many line segments to use around the circle. + * Default is calculated by the static Defaults. + * @param center Set to true to shift the center to the origin. Default is + * origin at the bottom. + */ + static cylinder( + height: number, radiusLow: number, radiusHigh?: number, + circularSegments?: number, center?: boolean): Manifold; + + /** + * Constructs a geodesic sphere of a given radius. + * + * @param radius Radius of the sphere. Must be positive. + * @param circularSegments Number of segments along its + * diameter. This number will always be rounded up to the nearest factor of + * four, as this sphere is constructed by refining an octahedron. This means + * there are a circle of vertices on all three of the axis planes. Default is + * calculated by the static Defaults. + */ + static sphere(radius: number, circularSegments?: number): Manifold; + + // Extrusions from 2d shapes + + /** + * Constructs a manifold from a set of polygons/cross-section by extruding + * them along the Z-axis. + * + * @param polygons A set of non-overlapping polygons to extrude. + * @param height Z-extent of extrusion. + * @param nDivisions Number of extra copies of the crossSection to insert into + * the shape vertically; especially useful in combination with twistDegrees to + * avoid interpolation artifacts. Default is none. + * @param twistDegrees Amount to twist the top crossSection relative to the + * bottom, interpolated linearly for the divisions in between. + * @param scaleTop Amount to scale the top (independently in X and Y). If the + * scale is {0, 0}, a pure cone is formed with only a single vertex at the + * top. Default {1, 1}. + * @param center If true, the extrusion is centered on the z-axis through the + * origin + * as opposed to resting on the XY plane as is default. + */ + static extrude( + polygons: CrossSection|Polygons, height: number, nDivisions?: number, + twistDegrees?: number, scaleTop?: Vec2|number, + center?: boolean): Manifold; + + /** + * Constructs a manifold from a set of polygons/cross-section by revolving + * them around the Y-axis and then setting this as the Z-axis of the resulting + * manifold. If the polygons cross the Y-axis, only the part on the positive X + * side is used. Geometrically valid input will result in geometrically valid + * output. + * + * @param polygons A set of non-overlapping polygons to revolve. + * @param circularSegments Number of segments along its diameter. Default is + * calculated by the static Defaults. + * @param revolveDegrees Number of degrees to revolve. Default is 360 degrees. + */ + static revolve( + polygons: CrossSection|Polygons, circularSegments?: number, + revolveDegrees?: number): Manifold; + + // Mesh Conversion + + /** + * Convert a Mesh into a Manifold, retaining its properties and merging only + * the positions according to the merge vectors. Will throw an error if the + * result is not an oriented 2-manifold. Will collapse degenerate triangles + * and unnecessary vertices. + * + * All fields are read, making this structure suitable for a lossless + * round-trip of data from getMesh(). For multi-material input, use + * reserveIDs() to set a unique originalID for each material, and sort the + * materials into triangle runs. + */ + static ofMesh(mesh: Mesh): Manifold; + + /** + * Constructs a smooth version of the input mesh by creating tangents; this + * method will throw if you have supplied tangents with your mesh already. The + * actual triangle resolution is unchanged; use the Refine() method to + * interpolate to a higher-resolution curve. + * + * By default, every edge is calculated for maximum smoothness (very much + * approximately), attempting to minimize the maximum mean Curvature + * magnitude. No higher-order derivatives are considered, as the interpolation + * is independent per triangle, only sharing constraints on their boundaries. + * + * @param mesh input Mesh. + * @param sharpenedEdges If desired, you can supply a vector of sharpened + * halfedges, which should in general be a small subset of all halfedges. + * Order of entries doesn't matter, as each one specifies the desired + * smoothness (between zero and one, with one the default for all unspecified + * halfedges) and the halfedge index (3 * triangle index + [0,1,2] where 0 is + * the edge between triVert 0 and 1, etc). + * + * At a smoothness value of zero, a sharp crease is made. The smoothness is + * interpolated along each edge, so the specified value should be thought of + * as an average. Where exactly two sharpened edges meet at a vertex, their + * tangents are rotated to be colinear so that the sharpened edge can be + * continuous. Vertices with only one sharpened edge are completely smooth, + * allowing sharpened edges to smoothly vanish at termination. A single vertex + * can be sharpened by sharping all edges that are incident on it, allowing + * cones to be formed. + */ + static smooth(mesh: Mesh, sharpenedEdges?: Smoothness[]): Manifold; + + // Signed Distance Functions + + /** + * Constructs a level-set Mesh from the input Signed-Distance Function (SDF). + * This uses a form of Marching Tetrahedra (akin to Marching Cubes, but better + * for manifoldness). Instead of using a cubic grid, it uses a body-centered + * cubic grid (two shifted cubic grids). This means if your function's + * interior exceeds the given bounds, you will see a kind of egg-crate shape + * closing off the manifold, which is due to the underlying grid. + * + * @param sdf The signed-distance function which returns the signed distance + * of + * a given point in R^3. Positive values are inside, negative outside. + * @param bounds An axis-aligned box that defines the extent of the grid. + * @param edgeLength Approximate maximum edge length of the triangles in the + * final result. This affects grid spacing, and hence has a strong effect on + * performance. + * @param level You can inset your Mesh by using a positive value, or outset + * it with a negative value. + * @param precision Ensure each vertex is within this distance of the true + * surface. Defaults to -1, which will return the interpolated + * crossing-point based on the two nearest grid points. Small positive values + * will require more sdf evaluations per output vertex. + */ + static levelSet( + sdf: (point: Vec3) => number, bounds: Box, edgeLength: number, + level?: number, precision?: number): Manifold; + + // Transformations + + /** + * Transform this Manifold in space. Stored in column-major order. This + * operation can be chained. Transforms are combined and applied lazily. + * + * @param m The affine transformation matrix to apply to all the vertices. The + * last row is ignored. + */ + transform(m: Mat4): Manifold; + + /** + * Move this Manifold in space. This operation can be chained. Transforms are + * combined and applied lazily. + * + * @param v The vector to add to every vertex. + */ + translate(v: Vec3): Manifold; + translate(x: number, y?: number, z?: number): Manifold; + + /** + * Applies an Euler angle rotation to the manifold, first about the X axis, + * then Y, then Z, in degrees. We use degrees so that we can minimize rounding + * error, and eliminate it completely for any multiples of 90 degrees. + * Additionally, more efficient code paths are used to update the manifold + * when the transforms only rotate by multiples of 90 degrees. This operation + * can be chained. Transforms are combined and applied lazily. + * + * @param v [X, Y, Z] rotation in degrees. + */ + rotate(v: Vec3): Manifold; + rotate(x: number, y?: number, z?: number): Manifold; + + /** + * Scale this Manifold in space. This operation can be chained. Transforms are + * combined and applied lazily. + * + * @param v The vector to multiply every vertex by per component. + */ + scale(v: Vec3|number): Manifold; + + /** + * Mirror this Manifold over the plane described by the unit form of the given + * normal vector. If the length of the normal is zero, an empty Manifold is + * returned. This operation can be chained. Transforms are combined and + * applied lazily. + * + * @param normal The normal vector of the plane to be mirrored over + */ + mirror(v: Vec3): Manifold; + + /** + * This function does not change the topology, but allows the vertices to be + * moved according to any arbitrary input function. It is easy to create a + * function that warps a geometrically valid object into one which overlaps, + * but that is not checked here, so it is up to the user to choose their + * function with discretion. + * + * @param warpFunc A function that modifies a given vertex position. + */ + warp(warpFunc: (vert: Vec3) => void): Manifold; + + /** + * Smooths out the Manifold by filling in the halfedgeTangent vectors. The + * geometry will remain unchanged until Refine or RefineToLength is called to + * interpolate the surface. This version uses the supplied vertex normal + * properties to define the tangent vectors. + * + * @param normalIdx The first property channel of the normals. NumProp must be + * at least normalIdx + 3. Any vertex where multiple normals exist and don't + * agree will result in a sharp edge. + */ + smoothByNormals(normalIdx: number): Manifold; + + /** + * Smooths out the Manifold by filling in the halfedgeTangent vectors. The + * geometry will remain unchanged until Refine or RefineToLength is called to + * interpolate the surface. This version uses the geometry of the triangles + * and pseudo-normals to define the tangent vectors. + * + * @param minSharpAngle degrees, default 60. Any edges with angles greater + * than this value will remain sharp. The rest will be smoothed to G1 + * continuity, with the caveat that flat faces of three or more triangles will + * always remain flat. With a value of zero, the model is faceted, but in this + * case there is no point in smoothing. + * + * @param minSmoothness range: 0 - 1, default 0. The smoothness applied to + * sharp angles. The default gives a hard edge, while values > 0 will give a + * small fillet on these sharp edges. A value of 1 is equivalent to a + * minSharpAngle of 180 - all edges will be smooth. + */ + smoothOut(minSharpAngle?: number, minSmoothness?: number): Manifold; + + /** + * Increase the density of the mesh by splitting every edge into n pieces. For + * instance, with n = 2, each triangle will be split into 4 triangles. These + * will all be coplanar (and will not be immediately collapsed) unless the + * Mesh/Manifold has halfedgeTangents specified (e.g. from the Smooth() + * constructor), in which case the new vertices will be moved to the + * interpolated surface according to their barycentric coordinates. + * + * @param n The number of pieces to split every edge into. Must be > 1. + */ + refine(n: number): Manifold; + + /** + * Increase the density of the mesh by splitting each edge into pieces of + * roughly the input length. Interior verts are added to keep the rest of the + * triangulation edges also of roughly the same length. If halfedgeTangents + * are present (e.g. from the Smooth() constructor), the new vertices will be + * moved to the interpolated surface according to their barycentric + * coordinates. + * + * @param length The length that edges will be broken down to. + */ + refineToLength(length: number): Manifold; + + /** + * Create a new copy of this manifold with updated vertex properties by + * supplying a function that takes the existing position and properties as + * input. You may specify any number of output properties, allowing creation + * and removal of channels. Note: undefined behavior will result if you read + * past the number of input properties or write past the number of output + * properties. + * + * @param numProp The new number of properties per vertex. + * @param propFunc A function that modifies the properties of a given vertex. + */ + setProperties( + numProp: number, + propFunc: (newProp: number[], position: Vec3, oldProp: number[]) => void): + Manifold; + + /** + * Curvature is the inverse of the radius of curvature, and signed such that + * positive is convex and negative is concave. There are two orthogonal + * principal curvatures at any point on a manifold, with one maximum and the + * other minimum. Gaussian curvature is their product, while mean + * curvature is their sum. This approximates them for every vertex and assigns + * them as vertex properties on the given channels. + * + * @param gaussianIdx The property channel index in which to store the + * Gaussian curvature. An index < 0 will be ignored (stores nothing). The + * property set will be automatically expanded to include the channel + * index specified. + * @param meanIdx The property channel index in which to store the mean + * curvature. An index < 0 will be ignored (stores nothing). The property + * set will be automatically expanded to include the channel index + * specified. + */ + calculateCurvature(gaussianIdx: number, meanIdx: number): Manifold; + + /** + * Fills in vertex properties for normal vectors, calculated from the mesh + * geometry. Flat faces composed of three or more triangles will remain flat. + * + * @param normalIdx The property channel in which to store the X + * values of the normals. The X, Y, and Z channels will be sequential. The + * property set will be automatically expanded to include up through normalIdx + * + 2. + * + * @param minSharpAngle Any edges with angles greater than this value will + * remain sharp, getting different normal vector properties on each side of + * the edge. By default, no edges are sharp and all normals are shared. With a + * value of zero, the model is faceted and all normals match their triangle + * normals, but in this case it would be better not to calculate normals at + * all. + */ + calculateNormals(normalIdx: number, minSharpAngle: number): Manifold; + + // Boolean Operations + + /** + * Boolean union + */ + add(other: Manifold): Manifold; + + /** + * Boolean difference + */ + subtract(other: Manifold): Manifold; + + /** + * Boolean intersection + */ + intersect(other: Manifold): Manifold; + + /** + * Boolean union of the manifolds a and b + */ + static union(a: Manifold, b: Manifold): Manifold; + + /** + * Boolean difference of the manifold b from the manifold a + */ + static difference(a: Manifold, b: Manifold): Manifold; + + /** + * Boolean intersection of the manifolds a and b + */ + static intersection(a: Manifold, b: Manifold): Manifold; + + /** + * Boolean union of a list of manifolds + */ + static union(manifolds: Manifold[]): Manifold; + + /** + * Boolean difference of the tail of a list of manifolds from its head + */ + static difference(manifolds: Manifold[]): Manifold; + + /** + * Boolean intersection of a list of manifolds + */ + static intersection(manifolds: Manifold[]): Manifold; + + /** + * Split cuts this manifold in two using the cutter manifold. The first result + * is the intersection, second is the difference. This is more efficient than + * doing them separately. + * + * @param cutter + */ + split(cutter: Manifold): Manifold[]; + + /** + * Convenient version of Split() for a half-space. + * + * @param normal This vector is normal to the cutting plane and its length + * does + * not matter. The first result is in the direction of this vector, the second + * result is on the opposite side. + * @param originOffset The distance of the plane from the origin in the + * direction of the normal vector. + */ + splitByPlane(normal: Vec3, originOffset: number): Manifold[]; + + /** + * Removes everything behind the given half-space plane. + * + * @param normal This vector is normal to the cutting plane and its length + * does not matter. The result is in the direction of this vector from the + * plane. + * @param originOffset The distance of the plane from the origin in the + * direction of the normal vector. + */ + trimByPlane(normal: Vec3, originOffset: number): Manifold; + + /** + * Returns the cross section of this object parallel to the X-Y plane at the + * specified height. Using a height equal to the bottom + * of the bounding box will return the bottom faces, while using a height + * equal to the top of the bounding box will return empty. + * + * @param height Z-level of slice. + */ + slice(height: number): CrossSection; + + /** + * Returns a cross section representing the projected outline of this object + * onto the X-Y plane. + */ + project(): CrossSection; + + // Convex Hulls + + /** + * Compute the convex hull of all points in this Manifold. + */ + hull(): Manifold; + + /** + * Compute the convex hull of all points contained within a set of Manifolds + * and point vectors. + */ + static hull(points: (Manifold|Vec3)[]): Manifold; + + // Topological Operations + + /** + * Constructs a new manifold from a list of other manifolds. This is a purely + * topological operation, so care should be taken to avoid creating + * overlapping results. It is the inverse operation of Decompose(). + * + * @param manifolds A list of Manifolds to lazy-union together. + */ + static compose(manifolds: Manifold[]): Manifold; + + /** + * This operation returns a vector of Manifolds that are topologically + * disconnected. If everything is connected, the vector is length one, + * containing a copy of the original. It is the inverse operation of + * Compose(). + */ + decompose(): Manifold[]; + + // Property Access + + /** + * Does the Manifold have any triangles? + */ + isEmpty(): boolean; + + /** + * The number of vertices in the Manifold. + */ + numVert(): number; + + /** + * The number of triangles in the Manifold. + */ + numTri(): number; + + /** + * The number of edges in the Manifold. + */ + numEdge(): number; + + /** + * The number of properties per vertex in the Manifold. + */ + numProp(): number; + + /** + * The number of property vertices in the Manifold. This will always be >= + * numVert, as some physical vertices may be duplicated to account for + * different properties on different neighboring triangles. + */ + numPropVert(): number + + /** + * Returns the axis-aligned bounding box of all the Manifold's vertices. + */ + boundingBox(): Box; + + /** + * Returns the precision of this Manifold's vertices, which tracks the + * approximate rounding error over all the transforms and operations that have + * led to this state. Any triangles that are colinear within this precision + * are considered degenerate and removed. This is the value of ε + * defining + * [ε-valid](https://github.com/elalish/manifold/wiki/Manifold-Library#definition-of-%CE%B5-valid). + */ + precision(): number; + + /** + * The genus is a topological property of the manifold, representing the + * number of "handles". A sphere is 0, torus 1, etc. It is only meaningful for + * a single mesh, so it is best to call Decompose() first. + */ + genus(): number; + + /** + * Returns the surface area and volume of the manifold. These properties are + * clamped to zero for a given face if they are within the Precision(). This + * means degenerate manifolds can by identified by testing these properties as + * == 0. + */ + getProperties(): Properties; + + + /* + * Returns the minimum gap between two manifolds. Returns a float between + * 0 and searchLength. + */ + minGap(other: Manifold, searchLength: number): number; + + // Export + + /** + * Returns a Mesh that is designed to easily push into a renderer, including + * all interleaved vertex properties that may have been input. It also + * includes relations to all the input meshes that form a part of this result + * and the transforms applied to each. + * + * @param normalIdx If the original Mesh inputs that formed this manifold had + * properties corresponding to normal vectors, you can specify which property + * channels these are (x, y, z), which will cause this output Mesh to + * automatically update these normals according to the applied transforms and + * front/back side. Each channel must be >= 3 and < numProp, and all original + * Meshes must use the same channels for their normals. + */ + getMesh(normalIdx?: Vec3): Mesh; + + // ID Management + + /** + * If you copy a manifold, but you want this new copy to have new properties + * (e.g. a different UV mapping), you can reset its IDs to a new original, + * meaning it will now be referenced by its descendants instead of the meshes + * it was built from, allowing you to differentiate the copies when applying + * your properties to the final result. + * + * This function also condenses all coplanar faces in the relation, and + * collapses those edges. If you want to have inconsistent properties across + * these faces, meaning you want to preserve some of these edges, you should + * instead call GetMesh(), calculate your properties and use these to + * construct a new manifold. + */ + asOriginal(): Manifold; + + /** + * If this mesh is an original, this returns its ID that can be referenced + * by product manifolds. If this manifold is a product, this + * returns -1. + */ + originalID(): number; + + /** + * Returns the first of n sequential new unique mesh IDs for marking sets of + * triangles that can be looked up after further operations. Assign to + * Mesh.runOriginalID vector. + */ + static reserveIDs(count: number): number; + + // Memory + + /** + * Frees the WASM memory of this Manifold, since these cannot be + * garbage-collected automatically. + */ + delete(): void; +} + +export interface MeshOptions { + numProp: number; + vertProperties: Float32Array; + triVerts: Uint32Array; + mergeFromVert?: Uint32Array; + mergeToVert?: Uint32Array; + runIndex?: Uint32Array; + runOriginalID?: Uint32Array; + runTransform?: Float32Array; + faceID?: Uint32Array; + halfedgeTangent?: Float32Array; +} + +export class Mesh { + constructor(options: MeshOptions); + numProp: number; + vertProperties: Float32Array; + triVerts: Uint32Array; + mergeFromVert: Uint32Array; + mergeToVert: Uint32Array; + runIndex: Uint32Array; + runOriginalID: Uint32Array; + runTransform: Float32Array; + faceID: Uint32Array; + halfedgeTangent: Float32Array; + get numTri(): number; + get numVert(): number; + get numRun(): number; + merge(): boolean; + verts(tri: number): SealedUint32Array<3>; + position(vert: number): SealedFloat32Array<3>; + extras(vert: number): Float32Array; + tangent(halfedge: number): SealedFloat32Array<4>; + transform(run: number): Mat4; +} diff --git a/manifold-global-types.d.ts b/manifold-global-types.d.ts new file mode 100644 index 000000000..bca938746 --- /dev/null +++ b/manifold-global-types.d.ts @@ -0,0 +1,75 @@ +// Copyright 2023 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +export interface SealedUint32Array extends Uint32Array { + length: N; +} + +export interface SealedFloat32Array extends Float32Array { + length: N; +} + +export type Vec2 = [number, number]; +export type Vec3 = [number, number, number]; +// 3x3 matrix stored in column-major order +export type Mat3 = [ + number, + number, + number, + number, + number, + number, + number, + number, + number, +]; +// 4x4 matrix stored in column-major order +export type Mat4 = [ + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, + number, +]; +export type SimplePolygon = Vec2[]; +export type Polygons = SimplePolygon|SimplePolygon[]; +export type Rect = { + min: Vec2, + max: Vec2 +}; +export type Box = { + min: Vec3, + max: Vec3 +}; +export type Smoothness = { + halfedge: number, + smoothness: number +}; +export type Properties = { + surfaceArea: number, + volume: number +}; +export type FillRule = 'EvenOdd'|'NonZero'|'Positive'|'Negative' +export type JoinType = 'Square'|'Round'|'Miter' diff --git a/manifold.d.ts b/manifold.d.ts new file mode 100644 index 000000000..22ddc7314 --- /dev/null +++ b/manifold.d.ts @@ -0,0 +1,36 @@ +// Copyright 2022 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import * as T from './manifold-encapsulated-types'; +export * from './manifold-global-types'; + +export type CrossSection = T.CrossSection; +export type Manifold = T.Manifold; +export type Mesh = T.Mesh; + +export interface ManifoldToplevel { + CrossSection: typeof T.CrossSection; + Manifold: typeof T.Manifold; + Mesh: typeof T.Mesh; + triangulate: typeof T.triangulate; + setMinCircularAngle: typeof T.setMinCircularAngle; + setMinCircularEdgeLength: typeof T.setMinCircularEdgeLength; + setCircularSegments: typeof T.setCircularSegments; + getCircularSegments: typeof T.getCircularSegments; + resetToCircularDefaults: typeof T.resetToCircularDefaults; + setup: () => void; +} + +export default function Module(config?: {locateFile: () => string}): + Promise; diff --git a/manifold.js b/manifold.js new file mode 100644 index 000000000..1a4ee0a5d --- /dev/null +++ b/manifold.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptName = import.meta.url; + + return ( +async function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url)}var _ManifoldInitialized=false;Module.setup=function(){if(_ManifoldInitialized)return;_ManifoldInitialized=true;function toVec(vec,list,f=(x=>x)){if(list){for(let x of list){vec.push_back(f(x))}}return vec}function fromVec(vec,f=(x=>x)){const result=[];const size=vec.size();for(let i=0;ix)){const result=[];const nPoly=vec.size();for(let i=0;itoVec(new Module.Vector_vec2,poly,p=>{if(p instanceof Array)return{x:p[0],y:p[1]};return p}))}function disposePolygons(polygonsVec){for(let i=0;iresult.min[f]),max:["x","y"].map(f=>result.max[f])}};Module.CrossSection.prototype.offset=function(delta,joinType="Square",miterLimit=2,circularSegments=0){return this._Offset(delta,joinTypeToInt(joinType),miterLimit,circularSegments)};Module.CrossSection.prototype.extrude=function(height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){scaleTop=vararg2vec2([scaleTop]);const man=Module._Extrude(this._ToPolygons(),height,nDivisions,twistDegrees,scaleTop);return center?man.translate([0,0,-height/2]):man};Module.CrossSection.prototype.revolve=function(circularSegments=0,revolveDegrees=360){return Module._Revolve(this._ToPolygons(),circularSegments,revolveDegrees)};Module.CrossSection.prototype.add=function(other){return this._add(cross(other))};Module.CrossSection.prototype.subtract=function(other){return this._subtract(cross(other))};Module.CrossSection.prototype.intersect=function(other){return this._intersect(cross(other))};Module.CrossSection.prototype.toPolygons=function(){const vec=this._ToPolygons();const result=vec2polygons(vec);vec.delete();return result};Module.Manifold.prototype.smoothOut=function(minSharpAngle=60,minSmoothness=0){return this._SmoothOut(minSharpAngle,minSmoothness)};Module.Manifold.prototype.warp=function(func){const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,"float");const y=getValue(vec3Ptr+4,"float");const z=getValue(vec3Ptr+8,"float");const vert=[x,y,z];func(vert);setValue(vec3Ptr,vert[0],"float");setValue(vec3Ptr+4,vert[1],"float");setValue(vec3Ptr+8,vert[2],"float")},"vi");const out=this._Warp(wasmFuncPtr);removeFunction(wasmFuncPtr);const status=out.status();if(status.value!==0){throw new Module.ManifoldError(status.value)}return out};Module.Manifold.prototype.calculateNormals=function(normalIdx,minSharpAngle=60){return this._CalculateNormals(normalIdx,minSharpAngle)};Module.Manifold.prototype.setProperties=function(numProp,func){const oldNumProp=this.numProp();const wasmFuncPtr=addFunction(function(newPtr,vec3Ptr,oldPtr){const newProp=[];for(let i=0;iresult.min[f]),max:["x","y","z"].map(f=>result.max[f])}};class Mesh{constructor({numProp:numProp=3,triVerts:triVerts=new Uint32Array,vertProperties:vertProperties=new Float32Array,mergeFromVert:mergeFromVert,mergeToVert:mergeToVert,runIndex:runIndex,runOriginalID:runOriginalID,faceID:faceID,halfedgeTangent:halfedgeTangent,runTransform:runTransform}={}){this.numProp=numProp;this.triVerts=triVerts;this.vertProperties=vertProperties;this.mergeFromVert=mergeFromVert;this.mergeToVert=mergeToVert;this.runIndex=runIndex;this.runOriginalID=runOriginalID;this.faceID=faceID;this.halfedgeTangent=halfedgeTangent;this.runTransform=runTransform}get numTri(){return this.triVerts.length/3}get numVert(){return this.vertProperties.length/this.numProp}get numRun(){return this.runOriginalID.length}merge(){const{changed:changed,mesh:mesh}=Module._Merge(this);Object.assign(this,{...mesh});return changed}verts(tri){return this.triVerts.subarray(3*tri,3*(tri+1))}position(vert){return this.vertProperties.subarray(numProp*vert,numProp*vert+3)}extras(vert){return this.vertProperties.subarray(numProp*vert+3,numProp*(vert+1))}tangent(halfedge){return this.halfedgeTangent.subarray(4*halfedge,4*(halfedge+1))}transform(run){const mat4=new Array(16);for(const col of[0,1,2,3]){for(const row of[0,1,2]){mat4[4*col+row]=this.runTransform[12*run+3*col+row]}}mat4[15]=1;return mat4}}Module.Mesh=Mesh;Module.Manifold.prototype.getMesh=function(normalIdx=[0,0,0]){if(normalIdx instanceof Array)normalIdx={0:normalIdx[0],1:normalIdx[1],2:normalIdx[2]};return new Mesh(this._GetMeshJS(normalIdx))};Module.ManifoldError=function ManifoldError(code,...args){let message="Unknown error";switch(code){case Module.status.NonFiniteVertex.value:message="Non-finite vertex";break;case Module.status.NotManifold.value:message="Not manifold";break;case Module.status.VertexOutOfBounds.value:message="Vertex index out of bounds";break;case Module.status.PropertiesWrongLength.value:message="Properties have wrong length";break;case Module.status.MissingPositionProperties.value:message="Less than three properties";break;case Module.status.MergeVectorsDifferentLengths.value:message="Merge vectors have different lengths";break;case Module.status.MergeIndexOutOfBounds.value:message="Merge index out of bounds";break;case Module.status.TransformWrongLength.value:message="Transform vector has wrong length";break;case Module.status.RunIndexWrongLength.value:message="Run index vector has wrong length";break;case Module.status.FaceIDWrongLength.value:message="Face ID vector has wrong length";case Module.status.InvalidConstruction.value:message="Manifold constructed with invalid parameters"}const base=Error.apply(this,[message,...args]);base.name=this.name="ManifoldError";this.message=base.message;this.stack=base.stack;this.code=code};Module.ManifoldError.prototype=Object.create(Error.prototype,{constructor:{value:Module.ManifoldError,writable:true,configurable:true}});Module.CrossSection=function(polygons,fillRule="Positive"){const polygonsVec=polygons2vec(polygons);const cs=new CrossSectionCtor(polygonsVec,fillRuleToInt(fillRule));disposePolygons(polygonsVec);return cs};Module.CrossSection.ofPolygons=function(polygons,fillRule="Positive"){return new Module.CrossSection(polygons,fillRule)};Module.CrossSection.square=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1};else if(typeof args[0]=="number")size={x:args[0],y:args[0]};else size=vararg2vec2(args);const center=args[1]||false;return Module._Square(size,center)};Module.CrossSection.circle=function(radius,circularSegments=0){return Module._Circle(radius,circularSegments)};function crossSectionBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_crossSection;for(const cs of args)v.push_back(cross(cs));const result=Module["_crossSection"+name](v);v.delete();return result}}Module.CrossSection.compose=crossSectionBatchbool("Compose");Module.CrossSection.union=crossSectionBatchbool("UnionN");Module.CrossSection.difference=crossSectionBatchbool("DifferenceN");Module.CrossSection.intersection=crossSectionBatchbool("IntersectionN");function pushVec2(vec,ps){toVec(vec,ps,p=>{if(p instanceof Array)return{x:p[0],y:p[1]};return p})}Module.CrossSection.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec2;for(const cs of args){if(cs instanceof CrossSectionCtor){Module._crossSectionCollectVertices(pts,cs)}else if(cs instanceof Array&&cs.length==2&&typeof cs[0]=="number"){pts.push_back({x:cs[0],y:cs[1]})}else if(cs.x){pts.push_back(cs)}else{const wrap=cs[0].length==2&&typeof cs[0][0]=="number"||cs[0].x;const polys=wrap?[cs]:cs;for(const poly of polys)pushVec2(pts,poly)}}const result=Module._crossSectionHullPoints(pts);pts.delete();return result};Module.CrossSection.prototype=Object.create(CrossSectionCtor.prototype);Object.defineProperty(Module.CrossSection,Symbol.hasInstance,{get:()=>t=>t instanceof CrossSectionCtor});const ManifoldCtor=Module.Manifold;Module.Manifold=function(mesh){const manifold=new ManifoldCtor(mesh);const status=manifold.status();if(status.value!==0){throw new Module.ManifoldError(status.value)}return manifold};Module.Manifold.ofMesh=function(mesh){return new Module.Manifold(mesh)};Module.Manifold.tetrahedron=function(){return Module._Tetrahedron()};Module.Manifold.cube=function(...args){let size=undefined;if(args.length==0)size={x:1,y:1,z:1};else if(typeof args[0]=="number")size={x:args[0],y:args[0],z:args[0]};else size=vararg2vec3(args);const center=args[1]||false;return Module._Cube(size,center)};Module.Manifold.cylinder=function(height,radiusLow,radiusHigh=-1,circularSegments=0,center=false){return Module._Cylinder(height,radiusLow,radiusHigh,circularSegments,center)};Module.Manifold.sphere=function(radius,circularSegments=0){return Module._Sphere(radius,circularSegments)};Module.Manifold.smooth=function(mesh,sharpenedEdges=[]){const sharp=new Module.Vector_smoothness;toVec(sharp,sharpenedEdges);const result=Module._Smooth(mesh,sharp);sharp.delete();return result};Module.Manifold.extrude=function(polygons,height,nDivisions=0,twistDegrees=0,scaleTop=[1,1],center=false){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,"Positive");return cs.extrude(height,nDivisions,twistDegrees,scaleTop,center)};Module.Manifold.revolve=function(polygons,circularSegments=0,revolveDegrees=360){const cs=polygons instanceof CrossSectionCtor?polygons:Module.CrossSection(polygons,"Positive");return cs.revolve(circularSegments,revolveDegrees)};Module.Manifold.reserveIDs=function(n){return Module._ReserveIDs(n)};Module.Manifold.compose=function(manifolds){const vec=new Module.Vector_manifold;toVec(vec,manifolds);const result=Module._manifoldCompose(vec);vec.delete();return result};function manifoldBatchbool(name){return function(...args){if(args.length==1)args=args[0];const v=new Module.Vector_manifold;for(const m of args)v.push_back(m);const result=Module["_manifold"+name+"N"](v);v.delete();return result}}Module.Manifold.union=manifoldBatchbool("Union");Module.Manifold.difference=manifoldBatchbool("Difference");Module.Manifold.intersection=manifoldBatchbool("Intersection");Module.Manifold.levelSet=function(sdf,bounds,edgeLength,level=0,precision=-1){const bounds2={min:{x:bounds.min[0],y:bounds.min[1],z:bounds.min[2]},max:{x:bounds.max[0],y:bounds.max[1],z:bounds.max[2]}};const wasmFuncPtr=addFunction(function(vec3Ptr){const x=getValue(vec3Ptr,"float");const y=getValue(vec3Ptr+4,"float");const z=getValue(vec3Ptr+8,"float");const vert=[x,y,z];return sdf(vert)},"fi");const out=Module._LevelSet(wasmFuncPtr,bounds2,edgeLength,level,precision);removeFunction(wasmFuncPtr);return out};function pushVec3(vec,ps){toVec(vec,ps,p=>{if(p instanceof Array)return{x:p[0],y:p[1],z:p[2]};return p})}Module.Manifold.hull=function(...args){if(args.length==1)args=args[0];let pts=new Module.Vector_vec3;for(const m of args){if(m instanceof ManifoldCtor){Module._manifoldCollectVertices(pts,m)}else if(m instanceof Array&&m.length==3&&typeof m[0]=="number"){pts.push_back({x:m[0],y:m[1],z:m[2]})}else if(m.x){pts.push_back(m)}else{pushVec3(pts,m)}}const result=Module._manifoldHullPoints(pts);pts.delete();return result};Module.Manifold.prototype=Object.create(ManifoldCtor.prototype);Object.defineProperty(Module.Manifold,Symbol.hasInstance,{get:()=>t=>t instanceof ManifoldCtor});Module.triangulate=function(polygons,precision=-1){const polygonsVec=polygons2vec(polygons);const result=fromVec(Module._Triangulate(polygonsVec,precision),x=>[x[0],x[1],x[2]]);disposePolygons(polygonsVec);return result}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url));read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{if(isFileURI(url)){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null);return}fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))}).then(onload,onerror)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){if(Module["locateFile"]){var f="manifold.wasm";if(!isDataURI(f)){return locateFile(f)}return f}return new URL("manifold.wasm",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["Ma"];updateMemoryViews();wasmTable=wasmExports["Pa"];addOnInit(wasmExports["Na"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var __abort_js=()=>{abort("")};var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};var __embind_finalize_value_object=structType=>{var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};fieldRecords.forEach((field,i)=>{var fieldName=field.fieldName;var getterReturnType=fieldTypes[i];var getter=field.getter;var getterContext=field.getterContext;var setterArgumentType=fieldTypes[i+fieldRecords.length];var setter=field.setter;var setterContext=field.setterContext;fields[fieldName]={read:ptr=>getterReturnType["fromWireType"](getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,o));runDestructors(destructors)}}});return[{name:reg.name,fromWireType:ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)){throw new TypeError(`Missing field: "${fieldName}"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,"i");var f=Module["dynCall_"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};function usesDestructorStack(argTypes){for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](HEAP8[pointer])}:function(pointer){return this["fromWireType"](HEAPU8[pointer])};case 2:return signed?function(pointer){return this["fromWireType"](HEAP16[pointer>>1])}:function(pointer){return this["fromWireType"](HEAPU16[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](HEAP32[pointer>>2])}:function(pointer){return this["fromWireType"](HEAPU32[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var __embind_register_optional=(rawOptionalType,rawType)=>{__embind_register_emval(rawOptionalType)};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_value_object=(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor)=>{structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}};var __embind_register_value_object_field=(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");return emval_returnValue(returnType,destructorsRef,handle)};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var __emval_equals=(first,second)=>{first=Emval.toValue(first);second=Emval.toValue(second);return first==second};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var sigToWasmTypes=sig=>{var typeNames={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i{if(typeof WebAssembly.Function=="function"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var removeFunction=index=>{functionsInTableMap.delete(getWasmTableEntry(index));setWasmTableEntry(index,null);freeTableIndexes.push(index)};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={F:___cxa_begin_catch,J:___cxa_end_catch,a:___cxa_find_matching_catch_2,k:___cxa_find_matching_catch_3,na:___cxa_rethrow,h:___cxa_throw,ma:___cxa_uncaught_exceptions,e:___resumeException,fa:__abort_js,Da:__embind_finalize_value_object,ea:__embind_register_bigint,Aa:__embind_register_bool,z:__embind_register_class,y:__embind_register_class_constructor,j:__embind_register_class_function,za:__embind_register_emval,S:__embind_register_enum,u:__embind_register_enum_value,$:__embind_register_float,o:__embind_register_function,C:__embind_register_integer,t:__embind_register_memory_view,D:__embind_register_optional,_:__embind_register_std_string,R:__embind_register_std_wstring,G:__embind_register_value_object,Ea:__embind_register_value_object_field,Ca:__embind_register_void,pa:__emscripten_memcpy_js,Ia:__emval_as,va:__emval_call_method,Ka:__emval_decref,Ha:__emval_equals,Ba:__emval_get_method_caller,Ja:__emval_get_property,Ga:__emval_incref,M:__emval_new_cstring,aa:__emval_new_object,ja:__emval_run_destructors,La:__emval_set_property,I:__emval_take_value,oa:_emscripten_resize_heap,ha:_environ_get,ia:_environ_sizes_get,ka:_fd_close,la:_fd_read,ca:_fd_seek,V:_fd_write,sa:invoke_d,L:invoke_diii,w:invoke_diiiii,A:invoke_ff,P:invoke_fii,qa:invoke_fiif,T:invoke_fiii,q:invoke_i,c:invoke_ii,b:invoke_iii,m:invoke_iiii,l:invoke_iiiii,E:invoke_iiiiii,B:invoke_iiiiiii,U:invoke_iiiiiiii,O:invoke_iiiiiiiiiiii,da:invoke_iiij,ba:invoke_jiiii,i:invoke_v,g:invoke_vi,xa:invoke_vidi,f:invoke_vii,K:invoke_viiddi,Z:invoke_viidi,ya:invoke_viidiidid,s:invoke_viif,ua:invoke_viiff,ta:invoke_viifff,wa:invoke_viififi,d:invoke_viii,Q:invoke_viiif,Fa:invoke_viiifffi,n:invoke_viiii,x:invoke_viiiii,ra:invoke_viiiiid,Y:invoke_viiiiif,r:invoke_viiiiii,v:invoke_viiiiiii,W:invoke_viiiiiiiii,H:invoke_viiiiiiiiifiii,p:invoke_viiiiiiiiii,N:invoke_viiiiiiiiiiiiiii,X:invoke_viiiiiiiiiiiiiiiiii,ga:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Na"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["Oa"])(a0);var _free=a0=>(_free=wasmExports["Qa"])(a0);var _malloc=a0=>(_malloc=wasmExports["Ra"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["Sa"])(a0,a1);var __emscripten_tempret_set=a0=>(__emscripten_tempret_set=wasmExports["Ta"])(a0);var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports["Ua"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports["Va"])();var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["Wa"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["Xa"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["Ya"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["Za"])(a0);var dynCall_iiij=Module["dynCall_iiij"]=(a0,a1,a2,a3,a4)=>(dynCall_iiij=Module["dynCall_iiij"]=wasmExports["_a"])(a0,a1,a2,a3,a4);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["$a"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["ab"])(a0,a1,a2,a3,a4);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["bb"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["cb"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["db"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["eb"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiifffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ff(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidi(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viidiidid(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiddi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vidi(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viififi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viif(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiif(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiif(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiff(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viifff(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_d(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiid(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiif(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiij(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiij(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addFunction"]=addFunction;Module["removeFunction"]=removeFunction;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; + + + return moduleRtn; +} +); +})(); +export default Module; diff --git a/manifold.wasm b/manifold.wasm new file mode 100644 index 000000000..eaebbe6ca Binary files /dev/null and b/manifold.wasm differ diff --git a/model-viewer.html b/model-viewer.html new file mode 100644 index 000000000..44c646951 --- /dev/null +++ b/model-viewer.html @@ -0,0 +1,62 @@ + + + + + Manifold - <code></code><model-viewer></code> Example + + + + + + + + + + + +

This example demonstrates reading and writing glTF models using gltf-transform and using this to feed Manifold's + output into <model-viewer>. It also shows how to pass mesh properties + like UV coordinates through Manifold and how to re-associate textures and materials after operations, made simple + using our `gltf-io.ts` library. The resulting glTF includes the EXT_mesh_manifold extension, using our + `manifold-gltf.ts` extension to gltf-transform, which ensures lossless data transfer.

+

Please open dev tools to inspect our source code - everything is source mapped back to our TS files and commented + thoroughly. A more basic three.js example is here.

+ + + + + + + + \ No newline at end of file diff --git a/models/moon.glb b/models/moon.glb new file mode 100644 index 000000000..d8b4ab05f Binary files /dev/null and b/models/moon.glb differ diff --git a/models/space.glb b/models/space.glb new file mode 100644 index 000000000..a0af95f43 Binary files /dev/null and b/models/space.glb differ diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt new file mode 100644 index 000000000..ca455831e --- /dev/null +++ b/samples/CMakeLists.txt @@ -0,0 +1,34 @@ +# Copyright 2020 The Manifold Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +project(samples) + +add_library(samples src/menger_sponge.cpp + src/rounded_frame.cpp src/scallop.cpp src/tet_puzzle.cpp + src/gyroid_module.cpp src/condensed_matter.cpp) +if(MANIFOLD_CROSS_SECTION) + target_sources(samples PUBLIC src/bracelet.cpp src/knot.cpp) +endif() + +target_include_directories(samples + PUBLIC ${PROJECT_SOURCE_DIR}/include +) + +target_link_libraries(samples PUBLIC manifold) +if(MANIFOLD_CROSS_SECTION) + target_link_libraries(${PROJECT_NAME} PUBLIC cross_section) +endif() + +target_compile_options(samples PRIVATE ${MANIFOLD_FLAGS}) +target_compile_features(samples PUBLIC cxx_std_17) diff --git a/samples/include/samples.h b/samples/include/samples.h new file mode 100644 index 000000000..3b3620943 --- /dev/null +++ b/samples/include/samples.h @@ -0,0 +1,57 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once +#include "manifold.h" + +namespace manifold { + +/** @defgroup Samples + * @brief Examples of usage and interesting designs + * + * These are mostly 3D-printable designs I've invented over the years, + * translated from their original OpenSCAD to C++ to demonstrate the usage of + * this library. You can find the originals here: + * http://www.thingiverse.com/emmett These also each have tests you can find in + * test/samples_test.cpp, which have nice parameter choices for making some of + * the specific designs I print. While the source code is under the Apache + * License above, I license all of my designs (the output of those tests if you + * uncomment the export lines) under CC-BY-SA: + * https://creativecommons.org/licenses/by-sa/2.0/, which means you're welcome + * to print and sell them, so long as you attribute the design to Emmett Lalish + * and share any derivative works under the same license. + * @{ + */ + +Manifold TorusKnot(int p, int q, float majorRadius, float minorRadius, + float threadRadius, int circularSegments = 0, + int linearSegments = 0); + +Manifold StretchyBracelet(float radius = 30.0f, float height = 8.0f, + float width = 15.0f, float thickness = 0.4f, + int nDecor = 20, int nCut = 27, int nDivision = 30); + +Manifold MengerSponge(int n = 3); + +Manifold RoundedFrame(float edgeLength, float radius, int circularSegments = 0); + +Manifold TetPuzzle(float edgeLength, float gap, int nDivisions); + +Manifold Scallop(); + +Manifold GyroidModule(float size = 20, int n = 20); + +Manifold CondensedMatter(int fn = 16); +/** @} */ // end of Samples +} // namespace manifold diff --git a/samples/models/apollo.png b/samples/models/apollo.png new file mode 100644 index 000000000..f0161697f Binary files /dev/null and b/samples/models/apollo.png differ diff --git a/samples/models/apollo.webp b/samples/models/apollo.webp new file mode 100644 index 000000000..7c2feba2c Binary files /dev/null and b/samples/models/apollo.webp differ diff --git a/samples/models/apolloPan.webp b/samples/models/apolloPan.webp new file mode 100644 index 000000000..fec5faf37 Binary files /dev/null and b/samples/models/apolloPan.webp differ diff --git a/samples/models/apollo_exterior-150k-4096.glb b/samples/models/apollo_exterior-150k-4096.glb new file mode 100644 index 000000000..f5239ee82 Binary files /dev/null and b/samples/models/apollo_exterior-150k-4096.glb differ diff --git a/samples/models/favicon.png b/samples/models/favicon.png new file mode 100644 index 000000000..ad3b1d4b4 Binary files /dev/null and b/samples/models/favicon.png differ diff --git a/samples/models/mengerSponge3.glb b/samples/models/mengerSponge3.glb new file mode 100644 index 000000000..07dac3d6f Binary files /dev/null and b/samples/models/mengerSponge3.glb differ diff --git a/samples/models/mengerSponge3.png b/samples/models/mengerSponge3.png new file mode 100644 index 000000000..d79c6bb28 Binary files /dev/null and b/samples/models/mengerSponge3.png differ diff --git a/samples/models/mengerSponge3.webp b/samples/models/mengerSponge3.webp new file mode 100644 index 000000000..1c40becf4 Binary files /dev/null and b/samples/models/mengerSponge3.webp differ diff --git a/samples/models/mengerSponge4.glb b/samples/models/mengerSponge4.glb new file mode 100644 index 000000000..25e385b31 Binary files /dev/null and b/samples/models/mengerSponge4.glb differ diff --git a/samples/models/mengerSpongeSquare.png b/samples/models/mengerSpongeSquare.png new file mode 100644 index 000000000..ca8fe7396 Binary files /dev/null and b/samples/models/mengerSpongeSquare.png differ diff --git a/samples/models/perf.glb b/samples/models/perf.glb new file mode 100644 index 000000000..ce999f5f2 Binary files /dev/null and b/samples/models/perf.glb differ diff --git a/samples/models/perf.png b/samples/models/perf.png new file mode 100644 index 000000000..0fb3ff379 Binary files /dev/null and b/samples/models/perf.png differ diff --git a/samples/models/perf.webp b/samples/models/perf.webp new file mode 100644 index 000000000..54dbd1a30 Binary files /dev/null and b/samples/models/perf.webp differ diff --git a/samples/models/rounding.glb b/samples/models/rounding.glb new file mode 100644 index 000000000..01bb9ead9 Binary files /dev/null and b/samples/models/rounding.glb differ diff --git a/samples/models/rounding.webp b/samples/models/rounding.webp new file mode 100644 index 000000000..27329bb7b Binary files /dev/null and b/samples/models/rounding.webp differ diff --git a/samples/models/scallop.glb b/samples/models/scallop.glb new file mode 100644 index 000000000..32f926134 Binary files /dev/null and b/samples/models/scallop.glb differ diff --git a/samples/models/scallop.png b/samples/models/scallop.png new file mode 100644 index 000000000..2d14936ee Binary files /dev/null and b/samples/models/scallop.png differ diff --git a/samples/models/scallop.webp b/samples/models/scallop.webp new file mode 100644 index 000000000..0c65e937e Binary files /dev/null and b/samples/models/scallop.webp differ diff --git a/samples/models/scallopFacets.glb b/samples/models/scallopFacets.glb new file mode 100644 index 000000000..608d0272a Binary files /dev/null and b/samples/models/scallopFacets.glb differ diff --git a/samples/models/scallopFacets.webp b/samples/models/scallopFacets.webp new file mode 100644 index 000000000..832363860 Binary files /dev/null and b/samples/models/scallopFacets.webp differ diff --git a/samples/src/bracelet.cpp b/samples/src/bracelet.cpp new file mode 100644 index 000000000..2d792bccf --- /dev/null +++ b/samples/src/bracelet.cpp @@ -0,0 +1,92 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "cross_section.h" +#include "samples.h" + +namespace { + +using namespace manifold; + +Manifold Base(float width, float radius, float decorRadius, float twistRadius, + int nDecor, float innerRadius, float outerRadius, float cut, + int nCut, int nDivision) { + Manifold base = Manifold::Cylinder(width, radius + twistRadius / 2); + + CrossSection circle = + CrossSection::Circle(decorRadius, nDivision).Translate({twistRadius, 0}); + Manifold decor = Manifold::Extrude(circle.ToPolygons(), width, nDivision, 180) + .Scale({1.0f, 0.5f, 1.0f}) + .Translate({0.0f, radius, 0.0f}); + + for (int i = 0; i < nDecor; ++i) { + base += decor.Rotate(0, 0, (360.0f / nDecor) * i); + } + + Polygons stretch(1); + float dPhiRad = 2 * glm::pi() / nCut; + glm::vec2 p0(outerRadius, 0.0f); + glm::vec2 p1(innerRadius, -cut); + glm::vec2 p2(innerRadius, cut); + for (int i = 0; i < nCut; ++i) { + stretch[0].push_back(glm::rotate(p0, dPhiRad * i)); + stretch[0].push_back(glm::rotate(p1, dPhiRad * i)); + stretch[0].push_back(glm::rotate(p2, dPhiRad * i)); + stretch[0].push_back(glm::rotate(p0, dPhiRad * i)); + } + + base = Manifold::Extrude(stretch, width) ^ base; + // Remove extra edges in coplanar faces + base = base.AsOriginal(); + + return base; +} +} // namespace + +namespace manifold { + +/** + * My Stretchy Bracelet: this is one of my most popular designs, largely because + * it's quick and easy to 3D print. The defaults are picked to work well; change + * the radius to fit your wrist. Changing the other values too much may break + * the design. + * + * @param radius The overall size; the radius left for your wrist is roughly + * radius - height. + * @param height Thickness of the bracelet around your wrist. + * @param width The length along your arm (the height of the print). + * @param thickness The width of the material, which should be equal to your + * printer's nozzle diameter. + * @param nDecor The number of twisty shapes around the outside. + * @param nCut The number of cuts that enable stretching. + * @param nDivision the number of divisions along the width. + */ +Manifold StretchyBracelet(float radius, float height, float width, + float thickness, int nDecor, int nCut, + int nDivision) { + float twistRadius = glm::pi() * radius / nDecor; + float decorRadius = twistRadius * 1.5; + float outerRadius = radius + (decorRadius + twistRadius) * 0.5; + float innerRadius = outerRadius - height; + float cut = 0.5 * (glm::pi() * 2 * innerRadius / nCut - thickness); + float adjThickness = 0.5 * thickness * height / cut; + + return Base(width, radius, decorRadius, twistRadius, nDecor, + innerRadius + thickness, outerRadius + adjThickness, + cut - adjThickness, nCut, nDivision) - + Base(width, radius - thickness, decorRadius, twistRadius, nDecor, + innerRadius, outerRadius + 3 * adjThickness, cut, nCut, + nDivision); +} +} // namespace manifold diff --git a/samples/src/condensed_matter.cpp b/samples/src/condensed_matter.cpp new file mode 100644 index 000000000..0d083816e --- /dev/null +++ b/samples/src/condensed_matter.cpp @@ -0,0 +1,149 @@ +// Copyright 2023 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// From +// https://gist.github.com/ochafik/70a6b15e982b7ccd5a79ff9afd99dbcf#file-condensed-matter-scad + +#include "samples.h" + +namespace { +using namespace manifold; +using namespace glm; + +constexpr float AtomicRadiusN2 = 0.65; +constexpr float BondPairN2 = 1.197; +constexpr float AtomicRadiusSi = 1.1; +constexpr float LatticeCellSizeSi = 5.4309; +constexpr float fccOffset = 0.25; +constexpr float AtomicRadiusC = 0.7; +constexpr float LatticeCellSizeC = 3.65; +constexpr float cellLenA = 2.464; +constexpr float cellLenB = cellLenA; +constexpr float cellLenC = 6.711; +constexpr float cellAngleA = 90; +constexpr float cellAngleB = cellAngleA; +constexpr float cellAngleC = 120; +constexpr float LayerSeperationC = 3.364; + +Manifold bond(int fn, vec3 p1 = {0, 0, 0}, vec3 p2 = {1, 1, 1}, float ar1 = 1.0, + float ar2 = 2.0) { + float cyR = std::min(ar1, ar2) / 5.0; + float dist = length(p1 - p2); + vec3 cyC = (p1 + p2) / 2.0f; + float beta = degrees(acos((p1.z - p2.z) / dist)); + float gamma = degrees(atan2(p1.y - p2.y, p1.x - p2.x)); + vec3 rot = {0.0, beta, gamma}; + return Manifold::Cylinder(dist, cyR, -1, fn, true) + .Rotate(rot.x, rot.y, rot.z) + .Translate(cyC); +} + +Manifold bondPair(int fn, float d = 0.0, float ar = 1.0) { + float axD = pow(d, 1.0 / 3.0); + vec3 p1 = {+axD, -axD, -axD}; + vec3 p2 = {-axD, +axD, +axD}; + Manifold sphere = Manifold::Sphere(ar, fn); + return sphere.Translate(p1) + sphere.Translate(p2) + bond(fn, p1, p2, ar, ar); +} + +Manifold hexagonalClosePacked(int fn, vec3 dst = {1.0, 1.0, 1.0}, + float ar = 1.0) { + std::vector parts; + vec3 p1 = {0, 0, 0}; + parts.push_back(Manifold::Sphere(ar, fn)); + float baseAg = 30; + vec3 ag = {baseAg, baseAg + 120, baseAg + 240}; + vec3 points[] = {{cosd(ag.x) * dst.x, sind(ag.x) * dst.x, 0}, + {cosd(ag.y) * dst.y, sind(ag.y) * dst.y, 0}, + {cosd(ag.z) * dst.z, sind(ag.z) * dst.z, 0}}; + for (vec3 p2 : points) { + parts.push_back(Manifold::Sphere(ar, fn).Translate(p2)); + parts.push_back(bond(fn, p1, p2, ar, ar)); + } + return Manifold::BatchBoolean(parts, OpType::Add); +} + +Manifold fccDiamond(int fn, float ar = 1.0, float unitCell = 2.0, + float fccOffset = 0.25) { + std::vector parts; + float huc = unitCell / 2.0; + float od = fccOffset * unitCell; + vec3 interstitial[] = { + {+od, +od, +od}, {+od, -od, -od}, {-od, +od, -od}, {-od, -od, +od}}; + vec3 corners[] = {{+huc, +huc, +huc}, + {+huc, -huc, -huc}, + {-huc, +huc, -huc}, + {-huc, -huc, +huc}}; + vec3 fcc[] = {{+huc, 0, 0}, {-huc, 0, 0}, {0, +huc, 0}, + {0, -huc, 0}, {0, 0, +huc}, {0, 0, -huc}}; + for (auto p : corners) parts.push_back(Manifold::Sphere(ar, fn).Translate(p)); + + for (auto p : fcc) parts.push_back(Manifold::Sphere(ar, fn).Translate(p)); + for (auto p : interstitial) + parts.push_back(Manifold::Sphere(ar, fn).Translate(p)); + + vec3 bonds[][2] = {{interstitial[0], corners[0]}, {interstitial[0], fcc[0]}, + {interstitial[0], fcc[2]}, {interstitial[0], fcc[4]}, + {interstitial[1], corners[1]}, {interstitial[1], fcc[0]}, + {interstitial[1], fcc[3]}, {interstitial[1], fcc[5]}, + {interstitial[2], corners[2]}, {interstitial[2], fcc[1]}, + {interstitial[2], fcc[2]}, {interstitial[2], fcc[5]}, + {interstitial[3], corners[3]}, {interstitial[3], fcc[1]}, + {interstitial[3], fcc[3]}, {interstitial[3], fcc[4]}}; + for (auto b : bonds) parts.push_back(bond(fn, b[0], b[1], ar, ar)); + + return Manifold::BatchBoolean(parts, OpType::Add); +} + +Manifold SiCell(int fn, float x = 1.0, float y = 1.0, float z = 1.0) { + return fccDiamond(fn, AtomicRadiusSi, LatticeCellSizeSi, fccOffset) + .Translate({LatticeCellSizeSi * x, LatticeCellSizeSi * y, + LatticeCellSizeSi * z}); +} + +Manifold SiN2Cell(int fn, float x = 1.0, float y = 1.0, float z = 1.0) { + float n2Offset = LatticeCellSizeSi / 8; + return bondPair(fn, BondPairN2, AtomicRadiusN2) + .Translate({LatticeCellSizeSi * x - n2Offset, + LatticeCellSizeSi * y + n2Offset, + LatticeCellSizeSi * z + n2Offset}) + + SiCell(fn, x, y, z); +} + +Manifold GraphiteCell(int fn, vec3 xyz = {1.0, 1.0, 1.0}) { + vec3 loc = {(cellLenA * xyz.x * cosd(30) * 2), + ((cellLenB * sind(30)) + cellLenC) * xyz.y, xyz.z}; + return hexagonalClosePacked(fn, {cellLenA, cellLenB, cellLenC}, AtomicRadiusC) + .Translate(loc); +} + +} // namespace + +namespace manifold { +Manifold CondensedMatter(int fn) { + std::vector parts; + float siOffset = 3.0 * LatticeCellSizeSi / 8.0; + for (int x = -3; x <= 3; x++) + for (int y = -1; y <= 2; y++) + parts.push_back( + GraphiteCell(fn, {x + (y % 2 == 0 ? 0.0 : 0.5), y, + LayerSeperationC * 0.5 + LatticeCellSizeSi * 1.5}) + .Translate({0, -siOffset, 0}) + .Rotate(0, 0, 45)); + + float xyPlane[] = {-2, -1, 0, +1, +2}; + for (float x : xyPlane) + for (float y : xyPlane) parts.push_back(SiN2Cell(fn, x, y, 1)); + return Manifold::BatchBoolean(parts, OpType::Add); +} +} // namespace manifold diff --git a/samples/src/gyroid_module.cpp b/samples/src/gyroid_module.cpp new file mode 100644 index 000000000..d8954f229 --- /dev/null +++ b/samples/src/gyroid_module.cpp @@ -0,0 +1,59 @@ +// Copyright 2022 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "manifold.h" +#include "samples.h" + +namespace { +using namespace manifold; + +struct Gyroid { + float operator()(glm::vec3 p) const { + p -= glm::pi() / 4; + return cos(p.x) * sin(p.y) + cos(p.y) * sin(p.z) + cos(p.z) * sin(p.x); + } +}; + +Manifold RhombicDodecahedron(float size) { + Manifold box = + Manifold::Cube(size * glm::sqrt(2.0f) * glm::vec3(1, 1, 2), true); + Manifold result = box.Rotate(90, 45) ^ box.Rotate(90, 45, 90); + return result ^ box.Rotate(0, 0, 45); +} + +} // namespace + +namespace manifold { + +/** + * Creates a rhombic dodecahedral module of a gyroid manifold, which can be + * assembled together to tile space continuously. This one is designed to be + * 3D-printable, as it is oriented with minimal overhangs. This sample + * demonstrates the use of a Signed Distance Function (SDF) to create smooth, + * complex manifolds. + */ +Manifold GyroidModule(float size, int n) { + auto gyroid = [&](float level) { + const float period = glm::two_pi(); + return Manifold(MeshGL::LevelSet(Gyroid(), + {glm::vec3(-period), glm::vec3(period)}, + period / n, level)) + .Scale(glm::vec3(size / period)); + }; + + Manifold result = (RhombicDodecahedron(size) ^ gyroid(-0.4)) - gyroid(0.4); + + return result.Rotate(-45, 0, 90).Translate({0, 0, size / glm::sqrt(2.0f)}); +} +} // namespace manifold diff --git a/samples/src/knot.cpp b/samples/src/knot.cpp new file mode 100644 index 000000000..e48c2c759 --- /dev/null +++ b/samples/src/knot.cpp @@ -0,0 +1,83 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "cross_section.h" +#include "samples.h" + +namespace { + +int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } +} // namespace + +namespace manifold { + +/** + * Creates a classic torus knot, defined as a string wrapping periodically + * around the surface of an imaginary donut. If p and q have a common factor + * then you will get multiple separate, interwoven knots. This is an example of + * using the Manifold.Warp() method, thus avoiding any handling of triangles. + * + * @param p The number of times the thread passes through the donut hole. + * @param q The number of times the thread circles the donut. + * @param majorRadius Radius of the interior of the imaginary donut. + * @param minorRadius Radius of the small cross-section of the imaginary donut. + * @param threadRadius Radius of the small cross-section of the actual object. + * @param circularSegments Number of linear segments making up the threadRadius + * circle. Default is Quality.GetCircularSegments(). + * @param linearSegments Number of segments along the length of the knot. + * Default makes roughly square facets. + */ +Manifold TorusKnot(int p, int q, float majorRadius, float minorRadius, + float threadRadius, int circularSegments, + int linearSegments) { + int kLoops = gcd(p, q); + p /= kLoops; + q /= kLoops; + int n = circularSegments > 2 ? circularSegments + : Quality::GetCircularSegments(threadRadius); + int m = + linearSegments > 2 ? linearSegments : n * q * majorRadius / threadRadius; + + CrossSection circle = CrossSection::Circle(1., n).Translate({2, 0}); + Manifold knot = Manifold::Revolve(circle.ToPolygons(), m); + + knot = + knot.Warp([p, q, majorRadius, minorRadius, threadRadius](glm::vec3& v) { + float psi = q * atan2(v.x, v.y); + float theta = psi * p / q; + glm::vec2 xy = glm::vec2(v); + float x1 = sqrt(glm::dot(xy, xy)); + float phi = atan2(x1 - 2, v.z); + v = glm::vec3(cos(phi), 0.0f, sin(phi)); + v *= threadRadius; + float r = majorRadius + minorRadius * cos(theta); + v = glm::rotateX(v, -float(atan2(p * minorRadius, q * r))); + v.x += minorRadius; + v = glm::rotateY(v, theta); + v.x += majorRadius; + v = glm::rotateZ(v, psi); + }); + + if (kLoops > 1) { + std::vector knots; + for (float k = 0; k < kLoops; ++k) { + knots.push_back( + knot.Rotate(0, 0, 360.0f * (k / kLoops) * (q / float(p)))); + } + knot = Manifold::Compose(knots); + } + + return knot; +} +} // namespace manifold diff --git a/samples/src/menger_sponge.cpp b/samples/src/menger_sponge.cpp new file mode 100644 index 000000000..39ef721d4 --- /dev/null +++ b/samples/src/menger_sponge.cpp @@ -0,0 +1,65 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "samples.h" + +namespace { + +using namespace manifold; + +void Fractal(std::vector& holes, Manifold& hole, float w, + glm::vec2 position, int depth, int maxDepth) { + w /= 3; + holes.push_back( + hole.Scale({w, w, 1.0f}).Translate(glm::vec3(position, 0.0f))); + if (depth == maxDepth) return; + + glm::vec2 offsets[8] = {{-w, -w}, {-w, 0.0f}, {-w, w}, {0.0f, w}, + {w, w}, {w, 0.0f}, {w, -w}, {0.0f, -w}}; + for (int i = 0; i < 8; ++i) { + Fractal(holes, hole, w, position + offsets[i], depth + 1, maxDepth); + } +} +} // namespace + +namespace manifold { + +/** + * The classic cubic fractal. + * + * @param n Fractal depth. Warning: scales exponentially, n = 4 has almost + * 400,000 triangles! + */ +Manifold MengerSponge(int n) { + Manifold result = Manifold::Cube(glm::vec3(1.0f), true); + + std::vector holes; + Fractal(holes, result, 1.0, {0.0f, 0.0f}, 1, n); + + Manifold hole = Manifold::Compose(holes); + + result -= hole; + hole = hole.Rotate(90); + result -= hole; + hole = hole.Rotate(0, 0, 90); + result -= hole; + + // Alternative order causes degenerate triangles + // Manifold tmp1 = hole.Rotate(90) + hole.Rotate(90).Rotate(0, 0, 90); + // Manifold tmp2 = hole + tmp1; + // result = result - tmp2; + + return result; +} +} // namespace manifold diff --git a/samples/src/rounded_frame.cpp b/samples/src/rounded_frame.cpp new file mode 100644 index 000000000..9f05b2191 --- /dev/null +++ b/samples/src/rounded_frame.cpp @@ -0,0 +1,48 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "samples.h" + +namespace manifold { + +/** + * A cubic frame with cylinders for edges and spheres at the corners. + * Demonstrates how at 90-degree intersections, the sphere and cylinder facets + * match up perfectly. + * + * @param edgeLength Distance between the corners. + * @param radius Radius of the frame members. + * @param circularSegments Number of segments in the cylinders and spheres. + * Defaults to Quality.GetCircularSegments(). + */ +Manifold RoundedFrame(float edgeLength, float radius, int circularSegments) { + Manifold edge = Manifold::Cylinder(edgeLength, radius, -1, circularSegments); + Manifold corner = Manifold::Sphere(radius, circularSegments); + + Manifold edge1 = corner + edge; + edge1 = edge1.Rotate(-90).Translate({-edgeLength / 2, -edgeLength / 2, 0}); + + Manifold edge2 = edge1.Rotate(0, 0, 180); + edge2 += edge1; + edge2 += edge.Translate({-edgeLength / 2, -edgeLength / 2, 0}); + + Manifold edge4 = edge2.Rotate(0, 0, 90); + edge4 += edge2; + + Manifold frame = edge4.Translate({0, 0, -edgeLength / 2}); + frame += frame.Rotate(180); + + return frame; +} +} // namespace manifold diff --git a/samples/src/scallop.cpp b/samples/src/scallop.cpp new file mode 100644 index 000000000..2b24637f3 --- /dev/null +++ b/samples/src/scallop.cpp @@ -0,0 +1,57 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "samples.h" + +namespace manifold { + +/** + * A smoothed manifold demonstrating selective edge sharpening with + * Manifold.Smooth(). Use Manifold.Refine() before export to see the curvature. + */ +Manifold Scallop() { + constexpr float height = 1; + constexpr float radius = 3; + constexpr float offset = 2; + constexpr int wiggles = 12; + constexpr float sharpness = 0.8; + + Mesh scallop; + std::vector sharpenedEdges; + scallop.vertPos = {{-offset, 0, height}, {-offset, 0, -height}}; + + const float delta = glm::pi() / wiggles; + for (int i = 0; i < 2 * wiggles; ++i) { + float theta = (i - wiggles) * delta; + float amp = 0.5 * height * glm::max(glm::cos(0.8f * theta), 0.0f); + + scallop.vertPos.push_back({radius * glm::cos(theta), + radius * glm::sin(theta), + amp * (i % 2 == 0 ? 1 : -1)}); + int j = i + 1; + if (j == 2 * wiggles) j = 0; + + float smoothness = 1 - sharpness * glm::cos((theta + delta / 2) / 2); + size_t halfedge = 3 * scallop.triVerts.size() + 1; + sharpenedEdges.push_back({halfedge, smoothness}); + scallop.triVerts.push_back({0, 2 + i, 2 + j}); + + halfedge = 3 * scallop.triVerts.size() + 1; + sharpenedEdges.push_back({halfedge, smoothness}); + scallop.triVerts.push_back({1, 2 + j, 2 + i}); + } + + return Manifold::Smooth(scallop, sharpenedEdges); +} +} // namespace manifold diff --git a/samples/src/tet_puzzle.cpp b/samples/src/tet_puzzle.cpp new file mode 100644 index 000000000..89a8cb8df --- /dev/null +++ b/samples/src/tet_puzzle.cpp @@ -0,0 +1,47 @@ +// Copyright 2021 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "samples.h" + +namespace manifold { + +/** + * A tetrahedron cut into two identical halves that can screw together as a + * puzzle. This only outputs one of the halves. This demonstrates how redundant + * points along a polygon can be used to make twisted extrusions smoother. + * + * @param edgeLength Length of each edge of the overall tetrahedron. + * @param gap Spacing between the two halves to allow sliding. + * @param nDivisions Number of divisions (both ways) in the screw surface. + */ +Manifold TetPuzzle(float edgeLength, float gap, int nDivisions) { + const glm::vec3 scale(edgeLength / (2 * sqrt(2))); + + Manifold tet = Manifold::Tetrahedron().Scale(scale); + + Polygons box; + box.push_back({{2, -2}, {2, 2}}); + + for (int i = 0; i <= nDivisions; ++i) { + box[0].push_back({gap / 2, 2 - i * 4.0f / nDivisions}); + } + + Manifold screw = Manifold::Extrude(box, 2, nDivisions, 270) + .Rotate(0, 0, -45) + .Translate({0, 0, -1}) + .Scale(scale); + + return tet ^ screw; +} +} // namespace manifold \ No newline at end of file diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 000000000..5f4def620 --- /dev/null +++ b/service-worker.js @@ -0,0 +1,41 @@ +// Copyright 2023 The Manifold Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Increment version when updating CDN URLs to clean up cache. +const cacheName = 'manifoldCAD-cache-v1'; + +self.addEventListener('activate', e => { + e.waitUntil(caches.keys().then((keyList) => { + return Promise.all(keyList.map((key) => { + if (key !== cacheName) { + return caches.delete(key); + } + })); + })); +}); + +// Serves from cache, then updates the cache in the background from the network, +// if available. Update available on refresh. +self.addEventListener( + 'fetch', + e => {e.respondWith(caches.match(e.request).then(cachedResponse => { + const networkFetch = fetch(e.request).then(response => { + const clone = response.clone(); + caches.open(cacheName).then(cache => { + cache.put(e.request, clone); + }); + return response; + }); + return cachedResponse || networkFetch; + }))}); diff --git a/three.html b/three.html new file mode 100644 index 000000000..02aad12b5 --- /dev/null +++ b/three.html @@ -0,0 +1,58 @@ + + + + + Manifold - three.js Example + + + + + + + + + + +

This example demonstrates interop between Manifold and Three.js with minimal code - please open dev tools to + inspect the source. Here we generate two multi-material Three.js meshes and convert them to Manifolds while building + a mapping from material to Manifold ID. Then Boolean operations are performed on the Manifolds and the result is + converted back to a Three.js mesh using the material mapping. The input cube has half red faces and half + normal-shaded, while the icosahedron has half blue faces and half normal-shaded. The resulting mesh has three + materials, since one (normal-shaded) was common between the input models.

+

A slightly more complex example involving our library for GLTF import/export and <model-viewer> can be found + here.

+
+ + + + + \ No newline at end of file